Commit d8b45c36 by 王东红

Merge branch 'master' of http://47.99.244.21:9999/root/joshine

parents 2c484922 2dd3a390
......@@ -28,17 +28,17 @@
require([
'jquery'
], function ($) {
$.fn.banner = function(options){ //fn是dom对象
$.fn.banner = function(options){
var that = this;
options = options || {};
this._obj = {
btn:options.btn===false ? false : true, //没传是undefined也是false
btn:options.btn===false ? false : true,
list:options.list===false ? false : true,
autoPlay:options.autoPlay===false ? false : true,
delayTime:options.delayTime || 2000,
moveTime:options.moveTime || 200,
index:options.index || 0,
iPrev:options.img.length-1,//可有可不有
iPrev:options.img.length-1,
img:options.img || [],
href:options.href || [],
};
......@@ -69,7 +69,7 @@
});
}
this._obj.init();
this._obj.leftClick=function () {//this是left
this._obj.leftClick=function () {
if (that._obj.index ==0){
that._obj.index = that._obj.img.length-1;
that._obj.iPrev=0;
......@@ -79,8 +79,7 @@
}
that._obj.btnMove(1);
}
//点击右边的按钮
this._obj.rightClick=function(){//this是right
this._obj.rightClick=function(){
if (that._obj.index ==that._obj.img.length-1){
that._obj.index = 0;
that._obj.iPrev=that._obj.img.length-1;
......@@ -197,7 +196,7 @@
}
$(".banner1").banner({
img: img_arr,
href: ["/hotsale.html", "/newarrivals.html"],
href: ["/shapewear", "/shapewear"],
btn: true,
list: true,
autoPlay: true,
......
......@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically"
],
"content-hash": "3e6bf64bfbd2224fc8f617fcd165743f",
"content-hash": "a754f5ae570068b0f437aebb03700209",
"packages": [
{
"name": "airwallex/payments-plugin-magento",
......@@ -4504,6 +4504,105 @@
"time": "2020-12-02T21:12:59+00:00"
},
{
"name": "mageplaza/module-core",
"version": "1.4.12",
"source": {
"type": "git",
"url": "https://github.com/mageplaza/module-core.git",
"reference": "85d1074fdee1259d438618c977ba6e21b76c4f39"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mageplaza/module-core/zipball/85d1074fdee1259d438618c977ba6e21b76c4f39",
"reference": "85d1074fdee1259d438618c977ba6e21b76c4f39",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"type": "magento2-module",
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\Core\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"description": "Mageplaza Core for Magento 2",
"support": {
"issues": "https://github.com/mageplaza/module-core/issues",
"source": "https://github.com/mageplaza/module-core/tree/v1.4.12"
},
"time": "2022-05-30T03:41:05+00:00"
},
{
"name": "mageplaza/module-delete-orders",
"version": "4.0.1",
"source": {
"type": "git",
"url": "https://github.com/mageplaza/magento-2-delete-orders.git",
"reference": "44bc6c2d219a24b66dd4c01d20f32b1f61733360"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mageplaza/magento-2-delete-orders/zipball/44bc6c2d219a24b66dd4c01d20f32b1f61733360",
"reference": "44bc6c2d219a24b66dd4c01d20f32b1f61733360",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"mageplaza/module-core": "^1.4.5"
},
"type": "magento2-module",
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\DeleteOrders\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"description": "Magento 2 Delete Orders extension",
"support": {
"issues": "https://github.com/mageplaza/magento-2-delete-orders/issues",
"source": "https://github.com/mageplaza/magento-2-delete-orders/tree/v4.0.1"
},
"time": "2021-08-16T10:06:54+00:00"
},
{
"name": "mageside/module-subscribe-at-checkout",
"version": "1.1.7",
"dist": {
......
......@@ -669,7 +669,7 @@ class Uploader
private function _setUploadFileId($fileId)
{
if (is_array($fileId)) {
$this->validateFileId($fileId);
//$this->validateFileId($fileId);
$this->_uploadType = self::MULTIPLE_STYLE;
$this->_file = $fileId;
} else {
......
......@@ -124,6 +124,7 @@ return array(
'8a9dc1de0ca7e01f3e08231539562f61' => $vendorDir . '/aws/aws-sdk-php/src/functions.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => $vendorDir . '/beberlei/assert/lib/Assert/functions.php',
'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php',
'6b5b87bda6fedcf6ef8605219c8b67f2' => $vendorDir . '/mageplaza/module-core/registration.php',
'decc78cc4436b1292c6c0d151b19445c' => $vendorDir . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'103e25fab6e1520b3d5716d51befc8a8' => $vendorDir . '/swissup/module-breeze-integrations/registration.php',
'cbb1b03512ba520311d1592006f0c299' => $vendorDir . '/swissup/theme-frontend-breeze-blank/registration.php',
......@@ -132,6 +133,7 @@ return array(
'8592c7b0947d8a0965a9e8c3d16f9c24' => $vendorDir . '/elasticsearch/elasticsearch/src/autoload.php',
'0b2ea8cc52669e97f3bdd7d78dcd8eb5' => $vendorDir . '/jajuma/module-webpimages/registration.php',
'eda65932675b68b5aee4503e0762d64d' => $vendorDir . '/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php',
'e4b1ce1168e0e22411ca45a875763ad0' => $vendorDir . '/mageplaza/module-delete-orders/registration.php',
'88ede69c0babb90b8d3e9e7a95ad0eb5' => $vendorDir . '/mageside/module-subscribe-at-checkout/registration.php',
'3109cb1a231dcd04bee1f9f620d46975' => $vendorDir . '/paragonie/sodium_compat/autoload.php',
'aa75ea0761a2f40c1f3b32ad314f86c4' => $vendorDir . '/phpseclib/mcrypt_compat/lib/mcrypt.php',
......
......@@ -68,6 +68,8 @@ return array(
'Monolog\\' => array($vendorDir . '/monolog/monolog/src/Monolog'),
'Metadata\\' => array($vendorDir . '/jms/metadata/src'),
'Mageside\\SubscribeAtCheckout\\' => array($vendorDir . '/mageside/module-subscribe-at-checkout'),
'Mageplaza\\DeleteOrders\\' => array($vendorDir . '/mageplaza/module-delete-orders'),
'Mageplaza\\Core\\' => array($vendorDir . '/mageplaza/module-core'),
'Magento\\Tools\\Sanity\\' => array($baseDir . '/dev/build/publication/sanity/Magento/Tools/Sanity'),
'Magento\\Tools\\' => array($baseDir . '/dev/tools/Magento/Tools'),
'Magento\\TestFramework\\Utility\\' => array($baseDir . '/dev/tests/static/framework/Magento/TestFramework/Utility'),
......
......@@ -125,6 +125,7 @@ class ComposerStaticInitb71ce7c407b65980cf51508f463c8dcf
'8a9dc1de0ca7e01f3e08231539562f61' => __DIR__ . '/..' . '/aws/aws-sdk-php/src/functions.php',
'a4ecaeafb8cfb009ad0e052c90355e98' => __DIR__ . '/..' . '/beberlei/assert/lib/Assert/functions.php',
'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php',
'6b5b87bda6fedcf6ef8605219c8b67f2' => __DIR__ . '/..' . '/mageplaza/module-core/registration.php',
'decc78cc4436b1292c6c0d151b19445c' => __DIR__ . '/..' . '/phpseclib/phpseclib/phpseclib/bootstrap.php',
'103e25fab6e1520b3d5716d51befc8a8' => __DIR__ . '/..' . '/swissup/module-breeze-integrations/registration.php',
'cbb1b03512ba520311d1592006f0c299' => __DIR__ . '/..' . '/swissup/theme-frontend-breeze-blank/registration.php',
......@@ -133,6 +134,7 @@ class ComposerStaticInitb71ce7c407b65980cf51508f463c8dcf
'8592c7b0947d8a0965a9e8c3d16f9c24' => __DIR__ . '/..' . '/elasticsearch/elasticsearch/src/autoload.php',
'0b2ea8cc52669e97f3bdd7d78dcd8eb5' => __DIR__ . '/..' . '/jajuma/module-webpimages/registration.php',
'eda65932675b68b5aee4503e0762d64d' => __DIR__ . '/..' . '/magento/magento2-functional-testing-framework/src/Magento/FunctionalTestingFramework/_bootstrap.php',
'e4b1ce1168e0e22411ca45a875763ad0' => __DIR__ . '/..' . '/mageplaza/module-delete-orders/registration.php',
'88ede69c0babb90b8d3e9e7a95ad0eb5' => __DIR__ . '/..' . '/mageside/module-subscribe-at-checkout/registration.php',
'3109cb1a231dcd04bee1f9f620d46975' => __DIR__ . '/..' . '/paragonie/sodium_compat/autoload.php',
'aa75ea0761a2f40c1f3b32ad314f86c4' => __DIR__ . '/..' . '/phpseclib/mcrypt_compat/lib/mcrypt.php',
......@@ -229,6 +231,8 @@ class ComposerStaticInitb71ce7c407b65980cf51508f463c8dcf
'Monolog\\' => 8,
'Metadata\\' => 9,
'Mageside\\SubscribeAtCheckout\\' => 29,
'Mageplaza\\DeleteOrders\\' => 23,
'Mageplaza\\Core\\' => 15,
'Magento\\Tools\\Sanity\\' => 21,
'Magento\\Tools\\' => 14,
'Magento\\TestFramework\\Utility\\' => 30,
......@@ -613,6 +617,14 @@ class ComposerStaticInitb71ce7c407b65980cf51508f463c8dcf
array (
0 => __DIR__ . '/..' . '/mageside/module-subscribe-at-checkout',
),
'Mageplaza\\DeleteOrders\\' =>
array (
0 => __DIR__ . '/..' . '/mageplaza/module-delete-orders',
),
'Mageplaza\\Core\\' =>
array (
0 => __DIR__ . '/..' . '/mageplaza/module-core',
),
'Magento\\Tools\\Sanity\\' =>
array (
0 => __DIR__ . '/../..' . '/dev/build/publication/sanity/Magento/Tools/Sanity',
......
......@@ -6668,6 +6668,111 @@
"install-path": "../magento/zendframework1"
},
{
"name": "mageplaza/module-core",
"version": "1.4.12",
"version_normalized": "1.4.12.0",
"source": {
"type": "git",
"url": "https://github.com/mageplaza/module-core.git",
"reference": "85d1074fdee1259d438618c977ba6e21b76c4f39"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mageplaza/module-core/zipball/85d1074fdee1259d438618c977ba6e21b76c4f39",
"reference": "85d1074fdee1259d438618c977ba6e21b76c4f39",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"time": "2022-05-30T03:41:05+00:00",
"type": "magento2-module",
"installation-source": "dist",
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\Core\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"description": "Mageplaza Core for Magento 2",
"support": {
"issues": "https://github.com/mageplaza/module-core/issues",
"source": "https://github.com/mageplaza/module-core/tree/v1.4.12"
},
"install-path": "../mageplaza/module-core"
},
{
"name": "mageplaza/module-delete-orders",
"version": "4.0.1",
"version_normalized": "4.0.1.0",
"source": {
"type": "git",
"url": "https://github.com/mageplaza/magento-2-delete-orders.git",
"reference": "44bc6c2d219a24b66dd4c01d20f32b1f61733360"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mageplaza/magento-2-delete-orders/zipball/44bc6c2d219a24b66dd4c01d20f32b1f61733360",
"reference": "44bc6c2d219a24b66dd4c01d20f32b1f61733360",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"mageplaza/module-core": "^1.4.5"
},
"time": "2021-08-16T10:06:54+00:00",
"type": "magento2-module",
"installation-source": "dist",
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\DeleteOrders\\": ""
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"proprietary"
],
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"description": "Magento 2 Delete Orders extension",
"support": {
"issues": "https://github.com/mageplaza/magento-2-delete-orders/issues",
"source": "https://github.com/mageplaza/magento-2-delete-orders/tree/v4.0.1"
},
"install-path": "../mageplaza/module-delete-orders"
},
{
"name": "mageside/module-subscribe-at-checkout",
"version": "1.1.7",
"version_normalized": "1.1.7.0",
......
......@@ -3,7 +3,7 @@
'name' => 'magento/magento2ce',
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '932207d218c95c847882fd23a97bf06d6f69ff1d',
'reference' => '5bb7eaa6d86e419c43ec37826b278d378f5628da',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
......@@ -958,7 +958,7 @@
'magento/magento2ce' => array(
'pretty_version' => 'dev-master',
'version' => 'dev-master',
'reference' => '932207d218c95c847882fd23a97bf06d6f69ff1d',
'reference' => '5bb7eaa6d86e419c43ec37826b278d378f5628da',
'type' => 'project',
'install_path' => __DIR__ . '/../../',
'aliases' => array(),
......@@ -2233,6 +2233,24 @@
'aliases' => array(),
'dev_requirement' => false,
),
'mageplaza/module-core' => array(
'pretty_version' => '1.4.12',
'version' => '1.4.12.0',
'reference' => '85d1074fdee1259d438618c977ba6e21b76c4f39',
'type' => 'magento2-module',
'install_path' => __DIR__ . '/../mageplaza/module-core',
'aliases' => array(),
'dev_requirement' => false,
),
'mageplaza/module-delete-orders' => array(
'pretty_version' => '4.0.1',
'version' => '4.0.1.0',
'reference' => '44bc6c2d219a24b66dd4c01d20f32b1f61733360',
'type' => 'magento2-module',
'install_path' => __DIR__ . '/../mageplaza/module-delete-orders',
'aliases' => array(),
'dev_requirement' => false,
),
'mageside/module-subscribe-at-checkout' => array(
'pretty_version' => '1.1.7',
'version' => '1.1.7.0',
......
language: php
php:
- 7.0
- 7.1
sudo: required
dist: trusty
env:
global:
- COMPOSER_BIN_DIR=~/bin
- INTEGRATION_SETS=3
- NODE_JS_VERSION=6
- MAGENTO_HOST_NAME="magento2.travis"
- COMPOSER_MODULE=mageplaza/module-core
matrix:
- MAGENTO_VERSION=2.1.1 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.1.1 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.1.1 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.1.10 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.1.10 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.1.10 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.2.2 TEST_SUITE=static
- MAGENTO_VERSION=2.2.2 TEST_SUITE=js GRUNT_COMMAND=static
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=3
matrix:
exclude:
- php: 7.0
env: MAGENTO_VERSION=2.2.2 TEST_SUITE=js GRUNT_COMMAND=static
- php: 7.0
env: MAGENTO_VERSION=2.2.2 TEST_SUITE=static
cache:
apt: true
directories:
- "$HOME/.composer/cache"
- "$HOME/.nvm"
addons:
apt:
packages:
- mysql-server-5.6
- mysql-client-core-5.6
- mysql-client-5.6
- postfix
firefox: '46.0'
hosts:
- magento2.travis
before_install:
- git clone https://github.com/magento/magento2 --branch $MAGENTO_VERSION
- cd magento2
- bash ./dev/travis/before_install.sh
install:
- composer install --no-interaction --prefer-dist
- composer config repositories.test_target git https://github.com/${TRAVIS_REPO_SLUG}.git
- composer require $COMPOSER_MODULE dev-$TRAVIS_BRANCH
before_script:
#- cp -f ${TRAVIS_BUILD_DIR}/dev/tests/integration/phpunit.xml.dist dev/tests/integration/
- echo "vendor/$COMPOSER_MODULE" > dev/tests/static/testsuite/Magento/Test/Less/_files/whitelist/common.txt
- echo "vendor/$COMPOSER_MODULE" > dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt
- echo "vendor/$COMPOSER_MODULE/**/*.js" > dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/magento.txt
- cp -f ${TRAVIS_BUILD_DIR}/dev/tests/static/js/blacklist/3rd-party.txt dev/tests/static/testsuite/Magento/Test/Js/_files/blacklist/
- bash ./dev/travis/before_script.sh
script:
- test $TEST_SUITE = "static" && TEST_FILTER='--filter "Magento\\Test\\Php\\LiveCodeTest"' || true
- test $TEST_SUITE = "functional" && TEST_FILTER='dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests.php' || true
- if [ $TEST_SUITE == "functional" ]; then dev/tests/functional/vendor/phpunit/phpunit/phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi
- if [ $TEST_SUITE != "functional" ] && [ $TEST_SUITE != "js" ]; then phpunit -c dev/tests/$TEST_SUITE $TEST_FILTER; fi
- if [ $TEST_SUITE == "js" ]; then grunt $GRUNT_COMMAND; fi
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\Renderer;
/**
* Renderer image for admin form
* Add media path to url
*
* Class Image
* @package Mageplaza\Core\Block\Adminhtml\Renderer
*/
class Image extends \Magento\Framework\Data\Form\Element\Image
{
/**
* Get image preview url
*
* @return string
*/
protected function _getUrl()
{
$url = parent::_getUrl();
if ($this->getPath()) {
$url = $this->getPath() . '/' . trim($url, '/');
}
return $url;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config;
use Magento\Backend\Block\Template\Context;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Framework\Exception\LocalizedException;
use Mageplaza\Core\Helper\AbstractData;
use Mageplaza\Core\Helper\Validate;
/**
* Class Button
* @package Mageplaza\Core\Block\Adminhtml\System\Config
*/
class Button extends Field
{
/**
* @var string
*/
protected $_template = 'system/config/button.phtml';
/**
* @var AbstractData
*/
protected $_helper;
/**
* Button constructor.
*
* @param Context $context
* @param Validate $helper
* @param array $data
*/
public function __construct(
Context $context,
Validate $helper,
array $data = []
) {
$this->_helper = $helper;
parent::__construct($context, $data);
}
/**
* @return string
* @throws LocalizedException
*/
public function getButtonHtml()
{
$activeButton = $this->getLayout()
->createBlock(\Magento\Backend\Block\Widget\Button::class)
->setData([
'id' => 'mageplaza_module_active',
'label' => __('Activate Now'),
'onclick' => 'javascript:mageplazaModuleActive(); return false;',
]);
$cancelButton = $this->getLayout()
->createBlock(\Magento\Backend\Block\Widget\Button::class)
->setData([
'id' => 'mageplaza_module_update',
'label' => __('Update this license'),
'onclick' => 'javascript:mageplazaModuleUpdate(); return false;',
]);
return $activeButton->toHtml() . $cancelButton->toHtml();
}
/**
* Render button
*
* @param AbstractElement $element
*
* @return string
*/
public function render(AbstractElement $element)
{
// Remove scope label
$element->unsScope()->unsCanUseWebsiteValue()->unsCanUseDefaultValue();
return parent::render($element);
}
/**
* @return string
*/
public function getButtonUrl()
{
return '';
}
/**
* Return element html
*
* @param AbstractElement $element
*
* @return string
*/
protected function _getElementHtml(AbstractElement $element)
{
$originalData = $element->getOriginalData();
$path = explode('/', $originalData['path']);
$this->addData(
[
'mp_is_active' => $this->_helper->isModuleActive($originalData['module_name']),
'mp_module_name' => $originalData['module_name'],
'mp_module_type' => $originalData['module_type'],
'mp_active_url' => $this->getUrl('mpcore/index/activate'),
'mp_free_config' => Validate::jsonEncode($this->_helper->getConfigValue('free/module') ?: []),
'mp_module_html_id' => implode('_', $path),
'mp_module_checkbox' => $this->_helper->getModuleCheckbox($originalData['module_name'])
]
);
return $this->_toHtml();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Framework\Exception\LocalizedException;
/**
* Class Head
* @package Mageplaza\Core\Block\Adminhtml\System\Config
*/
class Compatibility extends Field
{
/**
* Render text
*
* @param AbstractElement $element
*
* @return string
* @throws LocalizedException
*/
public function render(AbstractElement $element)
{
$html = '';
if ($element->getComment()) {
$html .= '<div id="mp_compatibility" style="margin-left: 2em; width: 100%;padding: 10px; ">'
. $element->getComment()
. '</div>';
}
return $html;
}
/**
* Return element html
*
* @param AbstractElement $element
*
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getElementHtml(AbstractElement $element)
{
return $this->_toHtml();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config;
use Magento\Backend\Block\Template\Context;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Framework\Module\PackageInfoFactory;
use Mageplaza\Core\Helper\Validate;
/**
* Class Docs
* @package Mageplaza\Core\Block\Adminhtml\System\Config
*/
class Docs extends Field
{
/**
* @var Validate
*/
protected $helper;
/**
* @var PackageInfoFactory
*/
protected $_packageInfoFactory;
/**
* Docs constructor.
*
* @param Context $context
* @param Validate $helper
* @param PackageInfoFactory $packageInfoFactory
* @param array $data
*/
public function __construct(
Context $context,
Validate $helper,
PackageInfoFactory $packageInfoFactory,
array $data = []
) {
$this->helper = $helper;
$this->_packageInfoFactory = $packageInfoFactory;
parent::__construct($context, $data);
}
/**
* Render text
*
* @param AbstractElement $element
*
* @return string
*/
public function render(AbstractElement $element)
{
$html = '<td colspan="3" id="mageplaza-module-docs-id">
<div id="mageplaza-module-docs" class="mageplaza-module-messages">
<div class="messages">
<div class="message message-info">
<div data-ui-id="messages-message-info">
<ul style="margin: 0 0 0 2em;">
<li><a href="' . $this->getUrlByType($element) . '" target="_blank">' . __('User Guide') . '</a></li>
<li><a href="https://www.mageplaza.com/faqs/" target="_blank">' . __('FAQs') . '</a></li>
<li><a href="' . $this->getUrlByType($element, 'change_log') . '" target="_blank">' . __('Changelog') . '</a></li>
<li><a href="https://dashboard.mageplaza.com/license/" target="_blank">' . __('Check Latest Version') . '</a></li>
</ul>
</div>
</div>
</div>
</div>
</td>';
return $this->_decorateRowHtml($element, $html);
}
/**
* Return element html
*
* @param AbstractElement $element
*
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getElementHtml(AbstractElement $element)
{
return $this->_toHtml();
}
/**
* @param $element
* @param string $type
*
* @return mixed
*/
public function getUrlByType($element, $type = 'user_guide')
{
$moduleName = $element->getOriginalData()['module_name'];
$packageName = $this->_packageInfoFactory->create()->getPackageName($moduleName);
$lowerCaseName = str_replace(['mageplaza/magento-2-', '-extension', 'mageplaza/module-'], '', $packageName);
$path = $this->helper->getModuleData($moduleName, $type) ?: str_replace('-m2', '', $lowerCaseName);
if(strpos($path, 'http') === false){
switch ($type) {
case 'user_guide':
$domain = 'http://docs.mageplaza.com/';
break;
case 'change_log':
$domain = 'https://www.mageplaza.com/releases/';
break;
default:
$domain = 'https://www.mageplaza.com/';
}
$path = $domain . $path . '/';
}
return $path;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config\Form\Field;
use Magento\Backend\Block\Template\Context;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
use Magento\Framework\Module\PackageInfoFactory;
/**
* Backend system config datetime field renderer
*/
class Version extends Field
{
/**
* @var PackageInfoFactory
*/
protected $_packageInfoFactory;
/**
* Version constructor.
*
* @param Context $context
* @param PackageInfoFactory $packageInfoFactory
* @param array $data
*/
public function __construct(
Context $context,
PackageInfoFactory $packageInfoFactory,
array $data = []
) {
$this->_packageInfoFactory = $packageInfoFactory;
parent::__construct($context, $data);
}
/**
* @param AbstractElement $element
*
* @return string
*/
protected function _getElementHtml(AbstractElement $element)
{
$originalData = $element->getOriginalData();
$packageInfo = $this->_packageInfoFactory->create();
$version = $packageInfo->getVersion($originalData['module_name']);
return '<div class="control-value special">' . $version . '</div>';
}
/**
* @param AbstractElement $element
* @param string $html
*
* @return string
*/
protected function _decorateRowHtml(AbstractElement $element, $html)
{
return '<tr id="row_' . $element->getHtmlId() . '" class="row_mageplaza_module_version">' . $html . '</tr>';
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
/**
* Class Head
* @package Mageplaza\Core\Block\Adminhtml\System\Config
*/
class Head extends Field
{
/**
* Render text
*
* @param AbstractElement $element
*
* @return string
*/
public function render(AbstractElement $element)
{
$html = '';
if ($element->getComment()) {
$html .= '<div style="margin: auto; width: 40%;padding: 10px;">'
. $element->getComment()
. '</div>';
}
return $html;
}
/**
* Return element html
*
* @param AbstractElement $element
*
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getElementHtml(AbstractElement $element)
{
return $this->_toHtml();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Block\Adminhtml\System\Config;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
/**
* Class Message
* @package Mageplaza\Core\Block\Adminhtml\System\Config
*/
class Message extends Field
{
/**
* Render text
*
* @param AbstractElement $element
*
* @return string
*/
public function render(AbstractElement $element)
{
$html = '<td colspan="3" id="mageplaza-module-message-id">
<div id="mageplaza-module-messages" class="mageplaza-module-messages" style="display: none">
<div class="messages">
<div class="message message-error">
<div data-ui-id="messages-message-error"></div>
</div>
</div>
</div>
</td>';
return $this->_decorateRowHtml($element, $html);
}
/**
* Return element html
*
* @param AbstractElement $element
*
* @return string
* @SuppressWarnings(PHPMD.UnusedFormalParameter)
*/
protected function _getElementHtml(AbstractElement $element)
{
return $this->_toHtml();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Controller\Adminhtml\Index;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Config\Model\ResourceModel\Config;
use Magento\Framework\App\Config\ReinitableConfigInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\Controller\ResultInterface;
use Mageplaza\Core\Helper\AbstractData;
use Mageplaza\Core\Helper\Validate;
use Mageplaza\Core\Model\ActivateFactory;
/**
* Class Activate
* @package Mageplaza\Core\Controller\Adminhtml\Index
*/
class Activate extends Action
{
/**
* Authorization level of a basic admin session
*
* @see _isAllowed()
*/
const ADMIN_RESOURCE = 'Mageplaza_Core::activate';
/**
* @var ActivateFactory
*/
protected $activateFactory;
/**
* @var Config
*/
protected $resourceConfig;
/**
* @var AbstractData
*/
protected $_coreHelper;
/**
* @var string
*/
protected $_moduleConfigPath;
/**
* Application config
*
* @var ScopeConfigInterface
*/
protected $_appConfig;
/**
* Activate constructor.
*
* @param Context $context
* @param Config $resourceConfig
* @param ReinitableConfigInterface $config
* @param Validate $helper
* @param ActivateFactory $activateFactory
*/
public function __construct(
Context $context,
Config $resourceConfig,
ReinitableConfigInterface $config,
Validate $helper,
ActivateFactory $activateFactory
) {
$this->activateFactory = $activateFactory;
$this->resourceConfig = $resourceConfig;
$this->_appConfig = $config;
$this->_coreHelper = $helper;
parent::__construct($context);
}
/**
* Execute view action
*
* @return ResultInterface
*/
public function execute()
{
$params = $this->getRequest()->getPost()->toArray();
if (!isset($params['extension'])) {
return $this->jsonResponse([
'success' => false,
'message' => __('Invalid data.')
]);
}
if ($path = $this->_coreHelper->getConfigModulePath($params['extension'])) {
$this->_moduleConfigPath = $path;
}
$activateModel = $this->activateFactory->create();
$result = $activateModel->activate($params);
if ($result['success']) {
$result['active'] = true;
$configSave = ['active' => 1];
if (isset($result['key']) && $result['key']) {
$configSave['product_key'] = $result['key'];
}
if ($this->_coreHelper->getModuleType($params['extension']) == '1') {
$freeInfo = [
'email' => $params['email'],
'name' => $params['name'],
'create' => $params['create'],
'subscribe' => $params['subscribe']
];
foreach ($freeInfo as $code => $value) {
$this->saveConfig('free/module/' . $code, $value, true);
}
$configSave += $freeInfo;
}
$this->saveConfig($configSave);
$this->_appConfig->reinit();
}
return $this->jsonResponse($result);
}
/**
* @param $result
*
* @return mixed
*/
protected function jsonResponse($result)
{
return $this->getResponse()->representJson(
Validate::jsonEncode($result)
);
}
/**
* @param $pathId
* @param null $value
* @param bool $isFullPath
* @param string $scope
* @param int $scopeId
*
* @return $this
*/
protected function saveConfig($pathId, $value = null, $isFullPath = false, $scope = 'default', $scopeId = 0)
{
if (is_array($pathId)) {
foreach ($pathId as $path => $pathValue) {
$this->saveConfig($path, $pathValue, $isFullPath, $scope, $scopeId);
}
return $this;
}
$this->resourceConfig->saveConfig(
$isFullPath ? $pathId : $this->buildConfigPath($pathId),
$value,
$scope,
$scopeId
);
return $this;
}
/**
* @param $pathId
*
* @return string
*/
protected function buildConfigPath($pathId)
{
return $this->_moduleConfigPath . '/module/' . $pathId;
}
/**
* @param $pathId
* @param bool $isFullPath
* @param string $scope
* @param int $scopeId
*
* @return $this
*/
protected function deleteConfig($pathId, $isFullPath = false, $scope = 'default', $scopeId = 0)
{
if (is_array($pathId)) {
foreach ($pathId as $path) {
$this->deleteConfig($path, $isFullPath, $scope, $scopeId);
}
return $this;
}
$this->resourceConfig->deleteConfig(
$isFullPath ? $pathId : $this->buildConfigPath($pathId),
$scope,
$scopeId
);
return $this;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Controller\Adminhtml\Index;
use Magento\Backend\App\Action;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\ResultInterface;
/**
* Class Userguide
* @package Mageplaza\Core\Controller\Adminhtml\Index
*/
class Userguide extends Action
{
/**
* Authorization level of a basic admin session
*/
const ADMIN_RESOURCE = 'Mageplaza_Core::userguide';
/**
* @return ResponseInterface|ResultInterface|void
*/
public function execute()
{
$this->_response->setRedirect(
'https://docs.mageplaza.com/?utm_source=configuration&utm_medium=link&utm_content=user-guide'
);
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Helper;
use Exception;
use Magento\Backend\App\Config;
use Magento\Framework\App\Area;
use Magento\Framework\App\Helper\AbstractHelper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\App\ProductMetadataInterface;
use Magento\Framework\App\State;
use Magento\Framework\Json\Helper\Data as JsonHelper;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\UrlInterface;
use Magento\Store\Model\ScopeInterface;
use Magento\Store\Model\StoreManagerInterface;
/**
* Class AbstractData
* @package Mageplaza\Core\Helper
*/
class AbstractData extends AbstractHelper
{
const CONFIG_MODULE_PATH = 'mageplaza';
/**
* @type array
*/
protected $_data = [];
/**
* @type StoreManagerInterface
*/
protected $storeManager;
/**
* @type ObjectManagerInterface
*/
protected $objectManager;
/**
* @var Config
*/
protected $backendConfig;
/**
* @var array
*/
protected $isArea = [];
/**
* AbstractData constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager
) {
$this->objectManager = $objectManager;
$this->storeManager = $storeManager;
parent::__construct($context);
}
/**
* @param null $storeId
*
* @return bool
*/
public function isEnabled($storeId = null)
{
return $this->getConfigGeneral('enabled', $storeId);
}
/**
* @param string $code
* @param null $storeId
*
* @return mixed
*/
public function getConfigGeneral($code = '', $storeId = null)
{
$code = ($code !== '') ? '/' . $code : '';
return $this->getConfigValue(static::CONFIG_MODULE_PATH . '/general' . $code, $storeId);
}
/**
* @param string $field
* @param null $storeId
*
* @return mixed
*/
public function getModuleConfig($field = '', $storeId = null)
{
$field = ($field !== '') ? '/' . $field : '';
return $this->getConfigValue(static::CONFIG_MODULE_PATH . $field, $storeId);
}
/**
* @param $field
* @param null $scopeValue
* @param string $scopeType
*
* @return array|mixed
*/
public function getConfigValue($field, $scopeValue = null, $scopeType = ScopeInterface::SCOPE_STORE)
{
if ($scopeValue === null && !$this->isArea()) {
/** @var Config $backendConfig */
if (!$this->backendConfig) {
$this->backendConfig = $this->objectManager->get(\Magento\Backend\App\ConfigInterface::class);
}
return $this->backendConfig->getValue($field);
}
return $this->scopeConfig->getValue($field, $scopeType, $scopeValue);
}
/**
* @param $name
*
* @return null
*/
public function getData($name)
{
if (array_key_exists($name, $this->_data)) {
return $this->_data[$name];
}
return null;
}
/**
* @param $name
* @param $value
*
* @return $this
*/
public function setData($name, $value)
{
$this->_data[$name] = $value;
return $this;
}
/**
* @return mixed
*/
public function getCurrentUrl()
{
$model = $this->objectManager->get(UrlInterface::class);
return $model->getCurrentUrl();
}
/**
* @param $ver
* @param string $operator
*
* @return mixed
*/
public function versionCompare($ver, $operator = '>=')
{
$productMetadata = $this->objectManager->get(ProductMetadataInterface::class);
$version = $productMetadata->getVersion(); //will return the magento version
return version_compare($version, $ver, $operator);
}
/**
* @param $data
*
* @return string
*/
public function serialize($data)
{
if ($this->versionCompare('2.2.0')) {
return self::jsonEncode($data);
}
return $this->getSerializeClass()->serialize($data);
}
/**
* @param $string
*
* @return mixed
*/
public function unserialize($string)
{
if ($this->versionCompare('2.2.0')) {
return self::jsonDecode($string);
}
return $this->getSerializeClass()->unserialize($string);
}
/**
* Encode the mixed $valueToEncode into the JSON format
*
* @param mixed $valueToEncode
*
* @return string
*/
public static function jsonEncode($valueToEncode)
{
try {
$encodeValue = self::getJsonHelper()->jsonEncode($valueToEncode);
} catch (Exception $e) {
$encodeValue = '{}';
}
return $encodeValue;
}
/**
* Decodes the given $encodedValue string which is
* encoded in the JSON format
*
* @param string $encodedValue
*
* @return mixed
*/
public static function jsonDecode($encodedValue)
{
try {
$decodeValue = self::getJsonHelper()->jsonDecode($encodedValue);
} catch (Exception $e) {
$decodeValue = [];
}
return $decodeValue;
}
/**
* Is Admin Store
*
* @return bool
*/
public function isAdmin()
{
return $this->isArea(Area::AREA_ADMINHTML);
}
/**
* @param string $area
*
* @return mixed
*/
public function isArea($area = Area::AREA_FRONTEND)
{
if (!isset($this->isArea[$area])) {
/** @var State $state */
$state = $this->objectManager->get(\Magento\Framework\App\State::class);
try {
$this->isArea[$area] = ($state->getAreaCode() == $area);
} catch (Exception $e) {
$this->isArea[$area] = false;
}
}
return $this->isArea[$area];
}
/**
* @param $path
* @param array $arguments
*
* @return mixed
*/
public function createObject($path, $arguments = [])
{
return $this->objectManager->create($path, $arguments);
}
/**
* @param $path
*
* @return mixed
*/
public function getObject($path)
{
return $this->objectManager->get($path);
}
/**
* @return JsonHelper|mixed
*/
public static function getJsonHelper()
{
return ObjectManager::getInstance()->get(JsonHelper::class);
}
/**
* @return mixed
*/
protected function getSerializeClass()
{
return $this->objectManager->get('Zend_Serializer_Adapter_PhpSerialize');
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Helper;
use Exception;
use Magento\Framework\App\Filesystem\DirectoryList;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\Exception\FileSystemException;
use Magento\Framework\Exception\NoSuchEntityException;
use Magento\Framework\Filesystem;
use Magento\Framework\Filesystem\Directory\ReadInterface;
use Magento\Framework\Filesystem\Directory\WriteInterface;
use Magento\Framework\Image\AdapterFactory;
use Magento\Framework\ObjectManagerInterface;
use Magento\Framework\UrlInterface;
use Magento\MediaStorage\Model\File\UploaderFactory;
use Magento\Store\Model\StoreManagerInterface;
/**
* Class Media
* @package Mageplaza\Core\Helper
*/
class Media extends AbstractData
{
const TEMPLATE_MEDIA_PATH = 'mageplaza';
/**
* @var ReadInterface
*/
protected $mediaDirectory;
/**
* @var UploaderFactory
*/
protected $uploaderFactory;
/**
* @var AdapterFactory
*/
protected $imageFactory;
/**
* Media constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
* @param Filesystem $filesystem
* @param UploaderFactory $uploaderFactory
* @param AdapterFactory $imageFactory
*
* @throws FileSystemException
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager,
Filesystem $filesystem,
UploaderFactory $uploaderFactory,
AdapterFactory $imageFactory
) {
$this->mediaDirectory = $filesystem->getDirectoryWrite(DirectoryList::MEDIA);
$this->uploaderFactory = $uploaderFactory;
$this->imageFactory = $imageFactory;
parent::__construct($context, $objectManager, $storeManager);
}
/**
* @param $data
* @param string $fileName
* @param string $type
* @param null $oldImage
*
* @return $this
*/
public function uploadImage(&$data, $fileName = 'image', $type = '', $oldImage = null)
{
if (isset($data[$fileName]['delete']) && $data[$fileName]['delete']) {
if ($oldImage) {
try {
$this->removeImage($oldImage, $type);
} catch (Exception $e) {
$this->_logger->critical($e->getMessage());
}
}
$data['image'] = '';
} else {
try {
$uploader = $this->uploaderFactory->create(['fileId' => $fileName]);
$uploader->setAllowedExtensions(['jpg', 'jpeg', 'gif', 'png']);
$uploader->setAllowRenameFiles(true);
$uploader->setFilesDispersion(true);
$uploader->setAllowCreateFolders(true);
$path = $this->getBaseMediaPath($type);
$image = $uploader->save(
$this->mediaDirectory->getAbsolutePath($path)
);
if ($oldImage) {
$this->removeImage($oldImage, $type);
}
$data['image'] = $this->_prepareFile($image['file']);
} catch (Exception $e) {
$data['image'] = isset($data['image']['value']) ? $data['image']['value'] : '';
}
}
return $this;
}
/**
* @param $file
* @param $type
*
* @return $this
* @throws FileSystemException
*/
public function removeImage($file, $type)
{
$image = $this->getMediaPath($file, $type);
if ($this->mediaDirectory->isFile($image)) {
$this->mediaDirectory->delete($image);
}
return $this;
}
/**
* @param $file
* @param string $type
*
* @return string
*/
public function getMediaPath($file, $type = '')
{
return $this->getBaseMediaPath($type) . '/' . $this->_prepareFile($file);
}
/**
* @param string $type
*
* @return string
*/
public function getBaseMediaPath($type = '')
{
return trim(static::TEMPLATE_MEDIA_PATH . '/' . $type, '/');
}
/**
* @param string $file
*
* @return string
*/
protected function _prepareFile($file)
{
return ltrim(str_replace('\\', '/', $file), '/');
}
/**
* @param $file
* @param $size
* @param string $type
* @param bool $keepRatio
*
* @return string
* @throws NoSuchEntityException
*/
public function resizeImage($file, $size, $type = '', $keepRatio = true)
{
$image = $this->getMediaPath($file, $type);
if (!($imageSize = $this->correctImageSize($size))) {
return $this->getMediaUrl($image);
}
list($width, $height) = $imageSize;
$resizeImage = $this->getMediaPath($file, ($type ? $type . '/' : '') . 'resize/' . $width . 'x' . $height);
/** @var WriteInterface $mediaDirectory */
$mediaDirectory = $this->getMediaDirectory();
if ($mediaDirectory->isFile($resizeImage)) {
$image = $resizeImage;
} else {
$imageResize = $this->imageFactory->create();
$imageResize->open($mediaDirectory->getAbsolutePath($image));
$imageResize->constrainOnly(true);
$imageResize->keepTransparency(true);
$imageResize->keepFrame(false);
$imageResize->keepAspectRatio($keepRatio);
$imageResize->resize($width, $height);
try {
$imageResize->save($mediaDirectory->getAbsolutePath($resizeImage));
$image = $resizeImage;
} catch (Exception $e) {
$this->_logger->critical($e->getMessage());
}
}
return $this->getMediaUrl($image);
}
/**
* @param $size
*
* @return array|bool
*/
protected function correctImageSize($size)
{
if (!$size) {
return false;
}
if (strpos($size, 'x') === false) {
$width = $height = (int) $size;
} else {
list($width, $height) = explode('x', $size);
}
if (!$width && !$height) {
return false;
}
return [(int) $width ?: null, (int) $height ?: null];
}
/**
* @param $file
*
* @return string
* @throws NoSuchEntityException
*/
public function getMediaUrl($file)
{
return $this->getBaseMediaUrl() . '/' . $this->_prepareFile($file);
}
/**
* @return string
* @throws NoSuchEntityException
*/
public function getBaseMediaUrl()
{
return rtrim($this->storeManager->getStore()->getBaseUrl(UrlInterface::URL_TYPE_MEDIA), '/');
}
/**
* @return WriteInterface
*/
public function getMediaDirectory()
{
return $this->mediaDirectory;
}
/**
* @param $path
*
* @return $this
* @throws FileSystemException
*/
public function removePath($path)
{
$pathMedia = $this->mediaDirectory->getRelativePath($path);
if ($this->mediaDirectory->isDirectory($pathMedia)) {
$this->mediaDirectory->delete($path);
}
return $this;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Helper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\Module\ModuleListInterface;
use Magento\Framework\ObjectManagerInterface;
use Magento\Store\Model\StoreManagerInterface;
/**
* Class AbstractData
* @package Mageplaza\Core\Helper
*/
class Validate extends AbstractData
{
const MODULE_TYPE_FREE = 1;
const MODULE_TYPE_PAID = 2;
// const DEV_ENV = ['localhost', 'dev', '127.0.0.1', '192.168.', 'demo.'];
const DEV_ENV = [];
/**
* @var array
*/
protected $configModulePath = [];
/**
* @var array
*/
protected $_mageplazaModules;
/**
* @var ModuleListInterface
*/
protected $_moduleList;
/**
* Validate constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
* @param ModuleListInterface $moduleList
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager,
ModuleListInterface $moduleList
) {
$this->_moduleList = $moduleList;
parent::__construct($context, $objectManager, $storeManager);
}
/**
* @param $moduleName
*
* @return bool
*/
public function needActive($moduleName)
{
$type = $this->getModuleType($moduleName);
return $type && $type === self::MODULE_TYPE_FREE;
}
/**
* @param $moduleName
*
* @return mixed
*/
public function getModuleType($moduleName)
{
return (int) $this->getModuleData($moduleName, 'type') ?: self::MODULE_TYPE_PAID;
}
/**
* @param $moduleName
* @param string $field
*
* @return array|mixed
*/
public function getModuleData($moduleName, $field = '')
{
$configModulePath = $this->getConfigModulePath($moduleName);
return $this->getConfigValue($configModulePath . '/module/' . $field);
}
/**
* @param $moduleName
*
* @return bool
*/
public function getConfigModulePath($moduleName)
{
if (!isset($this->configModulePath[$moduleName])) {
$this->configModulePath[$moduleName] = false;
$helperClassName = str_replace('_', '\\', $moduleName) . '\Helper\Data';
if (class_exists($helperClassName)) {
$helper = $this->objectManager->get($helperClassName);
if ($helper instanceof AbstractData) {
$this->configModulePath[$moduleName] = $helper::CONFIG_MODULE_PATH;
}
}
}
return $this->configModulePath[$moduleName];
}
/**
* @param $moduleName
*
* @return bool
*/
public function isModuleActive($moduleName)
{
return $this->getModuleData($moduleName, 'active') && $this->getModuleData($moduleName, 'product_key');
}
/**
* @param $moduleName
*
* @return string
*/
public function getModuleCheckbox($moduleName)
{
$create = $this->getModuleData($moduleName, 'create');
if ($create === null) {
$create = 1;
}
$subscribe = $this->getModuleData($moduleName, 'subscribe');
if ($subscribe === null) {
$subscribe = 1;
}
return self::jsonEncode([
'create' => (int) $create,
'subscribe' => (int) $subscribe
]);
}
/**
* @return array
*/
public function getModuleList()
{
if ($this->_mageplazaModules === null) {
$this->_mageplazaModules = [];
$allowList = true;
$hostName = $this->_urlBuilder->getBaseUrl();
foreach (self::DEV_ENV as $env) {
if (strpos($hostName, $env) !== false) {
$allowList = false;
break;
}
}
if ($allowList) {
$moduleList = $this->_moduleList->getNames();
foreach ($moduleList as $name) {
if (strpos($name, 'Mageplaza_') === false) {
continue;
}
$this->_mageplazaModules[] = $name;
}
}
}
return $this->_mageplazaModules;
}
}
Copyright © 2016-present Mageplaza Co. Ltd.
This License is entered by Mageplaza to govern the usage or redistribution of Mageplaza software. This is a legal agreement between you (either an individual or a single entity) and Mageplaza for Mageplaza software product(s) which may include extensions, templates and services.
By purchasing, installing, or otherwise using Mageplaza products, you acknowledge that you have read this License and agree to be bound by the terms of this Agreement. If you do not agree to the terms of this License, do not install or use Mageplaza products.
The Agreement becomes effective at the moment when you acquire software from our site or receive it through email or on data medium or by any other means. Mageplaza reserves the right to make reasonable changes to the terms of this license agreement and impose its clauses at any given time.
1. GRANT OF LICENSE: By purchasing a product of Mageplaza:
1. Customer will receive source code open 100%.
2. Customer will obtain a License Certificate which will remain valid until the Customer stops using the Product or until Mageplaza terminates this License because of Customer’s failure to comply with any of its Terms and Conditions. Each License Certificate includes a license serial which is valid for one live Magento installation only and unlimited test Magento installations.
3. You are allowed to customize our products to fit with your using purpose.
4. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS
5. Installation and Use
6. For each new Software installation, you are obliged to purchase a separate License. You are not permitted to use any part of the code in whole or part in any other software or product or website. You are legally bound to preserve the copyright information intact including the text/link at bottom.
2. Distribution: You are not allowed to distribute Mageplaza software to third parties. Any distribution without our permission, including non commercial distribution is considered as violation of this Agreement and entails liability, according to the current law. You may not place the Software onto a server that allows access to the Software via a public network or the Internet for distribution purposes.
3. Rental: You may not give, sell, sub-license, rent, lease or lend any portion of the Software to anyone.
4. Compliance with Applicable Laws: You must comply with all applicable laws regarding use of software products. Mageplaza software and a portion of it are protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. Accordingly, customer is required to treat the software like any other copyrighted material. Any activity violating copyright law will be prosecuted according to the current law. We retain the right to revoke the license of any user holding an invalid license.
5. TERMINATION: Without prejudice to any other rights, Mageplaza may terminate this License at any time if you fail to comply with the terms and conditions of this License. In such event, it constitutes a breach of the agreement, and your license to use the program is revoked and you must destroy all copies of Mageplaza products in your possession. After being notified of termination of your license, if you continue to use Mageplaza software, you hereby agree to accept an injunction to prevent you from its further use and to pay all costs (including but not limited to reasonable attorney fees) to enforce our revocation of your license and any damages suffered by us because of your misuse of the Software. We are not bound to return you the amount spent for purchase of the Software for the termination of this License.
6. LIMITATION OF LIABILITY: In no event shall Mageplaza be liable for any damages (including, without limitation, lost profits, business interruption, or lost information) rising out of ‘Authorized Users’ use of or inability to use the Mageplaza products, even if Mageplaza has been advised of the possibility of such damages. In no event will Mageplaza be liable for prosecution arising from use of the Software against law or for any illegal use.
The latest License: https://www.mageplaza.com/LICENSE.txt
\ No newline at end of file
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model;
use Exception;
use Magento\Framework\DataObject;
use Magento\Framework\HTTP\Adapter\CurlFactory;
use Mageplaza\Core\Helper\AbstractData;
use Zend_Http_Client;
use Zend_Http_Response;
/**
* Class Activate
* @package Mageplaza\Core\Model
*/
class Activate extends DataObject
{
/**
* Localhost maybe not active via https
* @inheritdoc
*/
const MAGEPLAZA_ACTIVE_URL = 'https://dashboard.mageplaza.com/license/index/activate/?isAjax=true';
/**
* @var CurlFactory
*/
protected $curlFactory;
/**
* Activate constructor.
*
* @param CurlFactory $curlFactory
* @param array $data
*/
public function __construct(
CurlFactory $curlFactory,
array $data = []
) {
$this->curlFactory = $curlFactory;
parent::__construct($data);
}
/**
* @param array $params
*
* @return array
*/
public function activate($params = [])
{
$result = ['success' => false];
$curl = $this->curlFactory->create();
$curl->write(
Zend_Http_Client::POST,
self::MAGEPLAZA_ACTIVE_URL,
'1.1',
[],
http_build_query($params)
);
try {
$resultCurl = $curl->read();
if (empty($resultCurl)) {
$result['message'] = __('Cannot connect to server. Please try again later.');
} else {
$responseBody = Zend_Http_Response::extractBody($resultCurl);
$result += AbstractData::jsonDecode($responseBody);
if (isset($result['status']) && in_array($result['status'], [200, 201])) {
$result['success'] = true;
}
}
} catch (Exception $e) {
$result['message'] = $e->getMessage();
}
$curl->close();
return $result;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model\Config\Backend;
use Magento\Config\Model\ResourceModel\Config\Data;
use Magento\Framework\App\Cache\Type\Block;
use Magento\Framework\App\Cache\Type\Config;
use Magento\Framework\App\Config\Value;
/**
* Class Menu
* @package Mageplaza\Core\Model\Config\Backend
*/
class Menu extends Value
{
/**
* @var string
*/
protected $_resourceName = Data::class;
/**
* {@inheritdoc}
*/
public function afterSave()
{
if ($this->isValueChanged()) {
$this->cacheTypeList->cleanType(Block::TYPE_IDENTIFIER);
$this->cacheTypeList->cleanType(Config::TYPE_IDENTIFIER);
}
return parent::afterSave();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model\Config\Source;
use Magento\Framework\Option\ArrayInterface;
/**
* Class AbstractSource
* @package Mageplaza\Core\Model\Config\Source
*/
abstract class AbstractSource implements ArrayInterface
{
/**
* Options getter
*
* @return array
*/
public function toOptionArray()
{
$options = [];
foreach ($this->toArray() as $value => $label) {
$options[] = compact('value', 'label');
}
return $options;
}
/**
* Get options in "key-value" format
*
* @return array
*/
abstract public function toArray();
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model\Config\Source;
/**
* Class NoticeType
* @package Mageplaza\Core\Model\Config\Source
*/
class NoticeType extends AbstractSource
{
const TYPE_ANNOUNCEMENT = 'announcement';
const TYPE_NEWUPDATE = 'new_update';
const TYPE_MARKETING = 'marketing';
/**
* Get options in "key-value" format
*
* @return array
*/
public function toArray()
{
return [
self::TYPE_ANNOUNCEMENT => __('Announcement'),
self::TYPE_NEWUPDATE => __('New & Update extensions'),
self::TYPE_MARKETING => __('Promotions ')
];
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model\Config\Structure;
use Magento\Config\Model\Config\Structure\Data as StructureData;
use Mageplaza\Core\Block\Adminhtml\System\Config\Button;
use Mageplaza\Core\Block\Adminhtml\System\Config\Docs;
use Mageplaza\Core\Block\Adminhtml\System\Config\Form\Field\Version;
use Mageplaza\Core\Block\Adminhtml\System\Config\Message;
use Mageplaza\Core\Helper\Validate as Helper;
/**
* Plugin to add 'Module Information' group to each modules (before general group)
*
* Class Data
* @package Mageplaza\Core\Model\Config\Structure
*/
class Data
{
/**
* @var Helper
*/
protected $_helper;
/**
* Data constructor.
*
* @param Helper $helper
*/
public function __construct(Helper $helper)
{
$this->_helper = $helper;
}
/**
* @param StructureData $object
* @param array $config
*
* @return array
*/
public function beforeMerge(StructureData $object, array $config)
{
if (!isset($config['config']['system'])) {
return [$config];
}
/** @var array $sections */
$sections = $config['config']['system']['sections'];
foreach ($sections as $sectionId => $section) {
if (isset($section['tab']) && ($section['tab'] === 'mageplaza') && ($section['id'] !== 'mageplaza')) {
foreach ($this->_helper->getModuleList() as $moduleName) {
if ($section['id'] !== $this->_helper->getConfigModulePath($moduleName)) {
continue;
}
$dynamicGroups = $this->getDynamicConfigGroups($moduleName, $section['id']);
if (!empty($dynamicGroups)) {
$config['config']['system']['sections'][$sectionId]['children'] = $dynamicGroups + $section['children'];
}
break;
}
}
}
return [$config];
}
/**
* @param $moduleName
* @param $sectionName
*
* @return mixed
*/
protected function getDynamicConfigGroups($moduleName, $sectionName)
{
$defaultFieldOptions = [
'type' => 'text',
'showInDefault' => '1',
'showInWebsite' => '0',
'showInStore' => '0',
'sortOrder' => 1,
'module_name' => $moduleName,
'module_type' => $this->_helper->getModuleType($moduleName),
'validate' => 'required-entry',
'_elementType' => 'field',
'path' => $sectionName . '/module'
];
$type = $this->_helper->getModuleType($moduleName);
$fields = [];
foreach ($this->getFieldList() as $id => $option) {
if (isset($option['show']) && $option['show'] !== $type) {
continue;
}
$fields[$id] = array_merge($defaultFieldOptions, ['id' => $id], $option);
}
return [
'module' => [
'id' => 'module',
'label' => __('Module Information'),
'showInDefault' => '1',
'showInWebsite' => '0',
'showInStore' => '0',
'_elementType' => 'group',
'path' => $sectionName,
'children' => $fields
]
];
}
/**
* @return array
*/
protected function getFieldList()
{
return [
'docs' => [
'frontend_model' => Docs::class,
],
'notice' => [
'frontend_model' => Message::class,
],
'version' => [
'type' => 'label',
'label' => __('Version'),
'frontend_model' => Version::class,
],
'name' => [
'label' => __('Register Name'),
'frontend_class' => 'mageplaza-module-active-field-free mageplaza-module-active-name',
'show' => Helper::MODULE_TYPE_FREE
],
'email' => [
'label' => __('Register Email'),
'validate' => 'required-entry validate-email',
'frontend_class' => 'mageplaza-module-active-field-free mageplaza-module-active-email',
'comment' => __('This email will be used to create a new account at Mageplaza.com, Mageplaza help desk (to get priority support).'),
'show' => Helper::MODULE_TYPE_FREE
],
'product_key' => [
'label' => __('Product Key'),
'frontend_class' => 'mageplaza-module-active-field-key',
'show' => Helper::MODULE_TYPE_FREE
],
'button' => [
'frontend_model' => Button::class,
'show' => Helper::MODULE_TYPE_FREE
]
];
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model;
/**
* Class Feed
* @package Mageplaza\Core\Model
*/
class Feed extends \Magento\AdminNotification\Model\Feed
{
/**
* @inheritdoc
*/
const MAGEPLAZA_FEED_URL = 'www.mageplaza.com/notifications.xml';
/**
* @inheritdoc
*/
public function getFeedUrl()
{
$httpPath = $this->_backendConfig->isSetFlag(self::XML_USE_HTTPS_PATH) ? 'https://' : 'http://';
if ($this->_feedUrl === null) {
$this->_feedUrl = $httpPath . self::MAGEPLAZA_FEED_URL;
}
return $this->_feedUrl;
}
/**
* @inheritdoc
*/
public function checkUpdate()
{
if (!(boolean) $this->_backendConfig->getValue('mageplaza/general/notice_enable')) {
return $this;
}
return parent::checkUpdate();
}
/**
* @inheritdoc
*/
public function getFeedData()
{
$type = $this->_backendConfig->getValue('mageplaza/general/notice_type');
if (!$type) {
return false;
}
$feedXml = parent::getFeedData();
if ($feedXml && $feedXml->channel && $feedXml->channel->item) {
$typeArray = explode(',', $type);
$noteToRemove = [];
foreach ($feedXml->channel->item as $item) {
if (!in_array((string) $item->type, $typeArray)) {
$noteToRemove[] = $item;
}
}
foreach ($noteToRemove as $item) {
unset($item[0]);
}
}
return $feedXml;
}
/**
* @inheritdoc
*/
public function getLastUpdate()
{
return $this->_cacheManager->load('mageplaza_notifications_lastcheck');
}
/**
* @inheritdoc
*/
public function setLastUpdate()
{
$this->_cacheManager->save(time(), 'mageplaza_notifications_lastcheck');
return $this;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Model\Message;
use Magento\Framework\Notification\MessageInterface;
use Magento\Framework\Phrase;
use Magento\Framework\UrlInterface;
use Mageplaza\Core\Helper\Validate as ValidateHelper;
/**
* Class Validate
* @package Mageplaza\Core\Model\Message
*/
class Validate implements MessageInterface
{
/**
* @var ValidateHelper
*/
protected $_helper;
/**
* @var UrlInterface
*/
protected $urlBuilder;
/**
* @var array
*/
protected $_needActiveModules = [];
/**
* Validate constructor.
*
* @param ValidateHelper $helper
* @param UrlInterface $urlBuilder
*/
public function __construct(
ValidateHelper $helper,
UrlInterface $urlBuilder
) {
$this->_helper = $helper;
$this->urlBuilder = $urlBuilder;
}
/**
* Check whether all extensions are valid or not
*
* @return bool
*/
public function isDisplayed()
{
$notActiveModules = $this->getModules();
return (bool) count($notActiveModules);
}
/**
* @return array
*/
public function getModules()
{
if (empty($this->_needActiveModules)) {
$moduleLists = $this->_helper->getModuleList();
foreach ($moduleLists as $module) {
if ($this->_helper->needActive($module) && !$this->_helper->isModuleActive($module)) {
$this->_needActiveModules[] = $module;
}
}
}
return $this->_needActiveModules;
}
/**
* Retrieve unique message identity
*
* @return string
*/
public function getIdentity()
{
return hash('md5', 'MAGEPLAZA_VALIDATE_MESSAGE');
}
/**
* Retrieve message text
*
* @return Phrase|string
*/
public function getText()
{
$modules = $this->getModules();
if (empty($modules)) {
return '';
}
$sectionName = $this->_helper->getConfigModulePath($modules[0]);
$url = $this->urlBuilder->getUrl('adminhtml/system_config/edit', ['section' => $sectionName]);
return __(
'One or more Mageplaza extensions are not validated. Click <a href="%1">here</a> to validate them.',
$url
);
}
/**
* Retrieve message severity
*
* @return int
*/
public function getSeverity()
{
return self::SEVERITY_MAJOR;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Observer;
use Magento\Backend\Model\Auth\Session;
use Magento\Framework\Event\Observer;
use Magento\Framework\Event\ObserverInterface;
use Mageplaza\Core\Helper\AbstractData;
use Mageplaza\Core\Model\Feed;
/**
* Class PredispatchAdminActionControllerObserver
* @package Mageplaza\Core\Observer
*/
class PredispatchAdminActionControllerObserver implements ObserverInterface
{
/**
* @type Session
*/
protected $_backendAuthSession;
/**
* @var AbstractData
*/
protected $helper;
/**
* PredispatchAdminActionControllerObserver constructor.
*
* @param Session $backendAuthSession
* @param AbstractData $helper
*/
public function __construct(
Session $backendAuthSession,
AbstractData $helper
) {
$this->_backendAuthSession = $backendAuthSession;
$this->helper = $helper;
}
/**
* @param Observer $observer
*/
public function execute(Observer $observer)
{
if ($this->_backendAuthSession->isLoggedIn()
&& $this->helper->isModuleOutputEnabled('Magento_AdminNotification')) {
/* @var $feedModel Feed */
$feedModel = $this->helper->createObject(Feed::class);
$feedModel->checkUpdate();
}
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\Core\Plugin;
use Magento\Backend\Model\Menu\Builder\AbstractCommand;
use Mageplaza\Core\Helper\AbstractData;
/**
* Class MoveMenu
* @package Mageplaza\Core\Plugin
*/
class MoveMenu
{
const MAGEPLAZA_CORE = 'Mageplaza_Core::menu';
/**
* @var AbstractData
*/
protected $helper;
/**
* MoveMenu constructor.
*
* @param AbstractData $helper
*/
public function __construct(AbstractData $helper)
{
$this->helper = $helper;
}
/**
* @param AbstractCommand $subject
* @param $itemParams
*
* @return mixed
*/
public function afterExecute(AbstractCommand $subject, $itemParams)
{
if ($this->helper->getConfigGeneral('menu')) {
if (strpos($itemParams['id'], 'Mageplaza_') !== false
&& isset($itemParams['parent'])
&& strpos($itemParams['parent'], 'Mageplaza_') === false) {
$itemParams['parent'] = self::MAGEPLAZA_CORE;
}
} elseif ((isset($itemParams['id']) && $itemParams['id'] === self::MAGEPLAZA_CORE)
|| (isset($itemParams['parent']) && $itemParams['parent'] === self::MAGEPLAZA_CORE)) {
$itemParams['removed'] = true;
}
return $itemParams;
}
}
# Mageplaza Core for Magento 2
[![Latest Stable Version](https://poser.pugx.org/mageplaza/module-core/v/stable)](https://packagist.org/packages/mageplaza/module-core)
[![Total Downloads](https://poser.pugx.org/mageplaza/module-core/downloads)](https://packagist.org/packages/mageplaza/module-core)
## How to install & upgrade Mageplaza_Core
### 1. Install via composer (recommend)
We recommend you to install Mageplaza_Core module via composer. It is easy to install, update and maintaince.
Run the following command in Magento 2 root folder.
#### 1.1 Install
```
composer require mageplaza/module-core
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
#### 1.2 Upgrade
```
composer update mageplaza/module-core
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
Run compile if your store in Product mode:
```
php bin/magento setup:di:compile
```
### 2. Copy and paste
If you don't want to install via composer, you can use this way.
- Download [the latest version here](https://github.com/mageplaza/module-core/archive/master.zip)
- Extract `master.zip` file to `app/code/Mageplaza/Core` ; You should create a folder path `app/code/Mageplaza/Core` if not exist.
- Go to Magento root folder and run upgrade command line to install `Mageplaza_Core`:
```
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
{
"name": "mageplaza/module-core",
"description": "Mageplaza Core for Magento 2",
"type": "magento2-module",
"version": "1.4.12",
"license": "proprietary",
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\Core\\": ""
}
}
}
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Mageplaza_Core::menu" title="Mageplaza Extensions" sortOrder="50">
<resource id="Mageplaza_Core::documentation" title="Documentations" sortOrder="50">
<resource id="Mageplaza_Core::userguide" title="User Guides" sortOrder="50"/>
</resource>
<resource id="Mageplaza_Core::activate" title="Active Module" sortOrder="70"/>
</resource>
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Mageplaza_Core::configuration" title="Mageplaza Information" sortOrder="10"/>
<resource id="Mageplaza_Core::marketplace" title="Mageplaza Marketplace" sortOrder="10"/>
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
<?xml version="1.0" ?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Notification\MessageList">
<arguments>
<argument name="messages" xsi:type="array">
<item name="mageplaza_validate_message" xsi:type="string">Mageplaza\Core\Model\Message\Validate</item>
</argument>
</arguments>
</type>
<type name="Magento\Config\Model\Config\Structure\Data">
<plugin name="mageplaza_module_activate" type="Mageplaza\Core\Model\Config\Structure\Data"/>
</type>
<type name="Magento\Backend\Model\Menu\Builder\AbstractCommand">
<plugin name="mageplaza_move_menu" type="Mageplaza\Core\Plugin\MoveMenu"/>
</type>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Event/etc/events.xsd">
<event name="controller_action_predispatch">
<observer name="mageplaza_core" instance="Mageplaza\Core\Observer\PredispatchAdminActionControllerObserver"/>
</event>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Backend:etc/menu.xsd">
<menu>
<add id="Mageplaza_Core::menu" title="Mageplaza" module="Mageplaza_Core" sortOrder="50" resource="Mageplaza_Core::menu"/>
<add id="Mageplaza_Core::documentation" title="Documentations" module="Mageplaza_Core" sortOrder="5" resource="Mageplaza_Core::documentation" parent="Mageplaza_Core::menu"/>
<!-- <add id="Mageplaza_Core::marketplace" title="Mageplaza Marketplace" module="Mageplaza_Core" sortOrder="10" action="adminhtml/system_config/edit/section/mpmarketplace" resource="Mageplaza_Core::marketplace" parent="Mageplaza_Core::documentation"/>-->
<add id="Mageplaza_Core::userguide" title="User Guides" module="Mageplaza_Core" sortOrder="20" action="mpcore/index/userguide" resource="Mageplaza_Core::userguide" parent="Mageplaza_Core::documentation"/>
</menu>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="mpcore" frontName="mpcore">
<module name="Mageplaza_Core"/>
</route>
</router>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<tab id="mageplaza" translate="label" sortOrder="402" class="mageplaza-extensions">
<label>Mageplaza Extensions</label>
</tab>
<section id="mageplaza" translate="label" type="text" sortOrder="8888" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Information</label>
<tab>mageplaza</tab>
<resource>Mageplaza_Core::configuration</resource>
<group id="general" translate="label" type="text" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>General Configuration</label>
<field id="notice_enable" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Enable Notifications</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<comment>Select Yes to get latest updates from Mageplaza.</comment>
</field>
<field id="notice_type" translate="label comment" type="multiselect" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Category</label>
<source_model>Mageplaza\Core\Model\Config\Source\NoticeType</source_model>
<comment>Select categories that you want to receive notifications</comment>
<depends>
<field id="notice_enable">1</field>
</depends>
</field>
<field id="menu" translate="label comment" type="select" sortOrder="30" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Enable Mageplaza Menu</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<backend_model>Mageplaza\Core\Model\Config\Backend\Menu</backend_model>
<comment>If yes, the Mageplaza menu will be displayed on the admin navigation. All of the Mageplaza module menu will be displayed there.</comment>
</field>
</group>
</section>
</system>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<mageplaza>
<general>
<notice_enable>1</notice_enable>
<notice_type>announcement,new_update,marketing</notice_type>
<menu>0</menu>
</general>
</mageplaza>
</default>
</config>
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<csp_whitelist xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Csp:etc/csp_whitelist.xsd">
<policies>
<policy id="font-src">
<values>
<value id="fontawesome" type="host">*.fontawesome.com</value>
</values>
</policy>
<policy id="style-src">
<values>
<value id="fontawesome" type="host">*.fontawesome.com</value>
</values>
</policy>
</policies>
</csp_whitelist>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Mageplaza_Core" setup_version="1.0.0">
<sequence>
<module name="Magento_Backend"/>
</sequence>
</module>
</config>
"Mageplaza Extensions","Mageplaza Uitbreidings"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Vennote"
"Mageplaza Extensions","ملحقات ماجيبلازا"
"Mageplaza Marketplace","سوق ماجيبلازا"
"Partners","شركاء"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","партнёры"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partners"
"Mageplaza Extensions","Extensions de Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Socis"
"Mageplaza Extensions","Rozšíření Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partneři"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partnere"
"Mageplaza Extensions","Mageplaza Erweiterungen"
"Mageplaza Marketplace","Mageplaza Marktplatz"
"Partners","Partner"
"Mageplaza Extensions","Επεκτάσεις Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Συνεργάτες"
"Activate Now","Activate Now"
"Update this license","Update this license"
"User Guide","User Guide"
FAQs,FAQs
"Change Log","Change Log"
"Check Latest Version","Check Latest Version"
"Invalid data.","Invalid data."
"Cannot connect to server. Please try again later.","Cannot connect to server. Please try again later."
Announcement,Announcement
"New & Update extensions","New & Update extensions"
"Promotions ","Promotions "
"Module Information","Module Information"
Version,Version
"Register Name","Register Name"
"Register Email","Register Email"
"This email will be used to create a new account at Mageplaza.com, Mageplaza help desk (to get priority support).","This email will be used to create a new account at Mageplaza.com, Mageplaza help desk (to get priority support)."
"Product Key","Product Key"
"One or more Mageplaza extensions are not validated. Click <a href=""%1"">here</a> to validate them.","One or more Mageplaza extensions are not validated. Click <a href=""%1"">here</a> to validate them."
"Receive extension updates and promotion offers from Mageplaza","Receive extension updates and promotion offers from Mageplaza"
"Mageplaza Extensions","Mageplaza Extensions"
Information,Information
"General Configuration","General Configuration"
"Enable Notifications","Enable Notifications"
"Select Yes to get latest updates from Mageplaza.","Select Yes to get latest updates from Mageplaza."
Category,Category
"Select categories that you want to receive notifications","Select categories that you want to receive notifications"
"Enable Mageplaza Menu","Enable Mageplaza Menu"
"If yes, the Mageplaza menu will be displayed on the admin navigation. All of the Mageplaza module menu will be displayed there.","If yes, the Mageplaza menu will be displayed on the admin navigation. All of the Mageplaza module menu will be displayed there."
"Mageplaza Extensions","Extensiones Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Fogonadura"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","kumppanit"
"Mageplaza Extensions","Extensions Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Les partenaires"
"Mageplaza Extensions","הרחבות Mageplaza"
"Mageplaza Marketplace","Mageplaza שוק"
"Partners","שותפים"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partners"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza piactér"
"Partners","partnerek"
"Mageplaza Extensions","Mageplaza ekstensi"
"Mageplaza Marketplace","Mageplaza pasar"
"Partners","Mitra"
"Mageplaza Extensions","Estensioni di Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partner"
"Mageplaza Extensions","Mageplaza拡張機能"
"Mageplaza Marketplace","マジプラザマーケットプレイス"
"Partners","パートナー"
"Mageplaza Extensions","Mageplaza 확장"
"Mageplaza Marketplace","마게 플라자 마켓 플레이스"
"Partners","파트너"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","partners"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","partnere"
"Mageplaza Extensions","Rozszerzenia Mageplaza"
"Mageplaza Marketplace","Rynek Mageplaza"
"Partners","Wzmacniacz"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partners"
"Mageplaza Extensions","Extensões Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Parceiros"
"Mageplaza Extensions","Extensiile Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Parteneri"
"Mageplaza Extensions","Расширения Mageplaza"
"Mageplaza Marketplace","Торговая площадка Mageplaza"
"Partners","партнеры"
"Mageplaza Extensions","Магеплаза Ектенсионс"
"Mageplaza Marketplace","Магеплаза Маркетплаце"
"Partners","Партнери"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","partners"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partners"
"Mageplaza Extensions","Mageplaza Uzantıları"
"Mageplaza Marketplace","Mageplaza Pazarı"
"Partners","Ortaklar"
"Mageplaza Extensions","Розширення Mageplaza"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Партнери"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Partners"
"Mageplaza Extensions","Mageplaza Extensions"
"Mageplaza Marketplace","Mageplaza Marketplace"
"Partners","Đối tác"
"Mageplaza Extensions","Mageplaza扩展"
"Mageplaza Marketplace","Mageplaza市场"
"Partners","伙伴"
"Mageplaza Extensions","Mageplaza擴展"
"Mageplaza Marketplace","Mageplaza市場"
"Partners","夥伴"
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Mageplaza_Core',
__DIR__
);
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<script src="Mageplaza_Core::js/jscolor.min.js"/>
</head>
</page>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<script src="Mageplaza_Core::js/help.js"/>
</head>
<!-- <body>
<referenceBlock name="head.components">
<block name="mpcore_store_helper" template="Mageplaza_Core::helper.phtml" ifconfig="mageplaza/general/store_helper" />
</referenceBlock>
</body> -->
</page>
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
use Mageplaza\Core\Block\Adminhtml\System\Config\Button;
/** @var Button $block */
?>
<div class="nested" style="font-size: 12px; margin-bottom: 20px">
<div class="field choice admin__field admin__field-option">
<input type="checkbox" id="mageplaza_module_subscribe" class="admin__control-checkbox"/>
<label for="mageplaza_module_subscribe" class="admin__field-label">
<span><?= /** @noEscape */ __('Receive extension updates and promotion offers from Mageplaza') ?></span>
</label>
</div>
</div>
<?= /** @noEscape */ $block->getButtonHtml() ?>
<script>
require([
'jquery',
'prototype'
], function ($j) {
var ajaxUrl = '<?= /** @noEscape */ $block->getData('mp_active_url') ?>',
moduleType = '<?= /** @noEscape */ $block->getData('mp_module_type') ?>',
defaultConfig = <?= /** @noEscape */ $block->getData('mp_free_config') ?>,
checkboxConfig = <?= /** @noEscape */ $block->getData('mp_module_checkbox') ?>,
activeButton = $j('#mageplaza_module_active'),
updateButton = $j('#mageplaza_module_update'),
fieldKey = $j('.mageplaza-module-active-field-key'),
freeFields = $j('.mageplaza-module-active-field-free'),
emailField = $j('.mageplaza-module-active-email'),
nameField = $j('.mageplaza-module-active-name'),
subscribeField = $j('#mageplaza_module_subscribe'),
messageContainer = $j('#mageplaza-module-messages'),
saveButton = $j('#save');
var submitData = {
extension: '<?= /** @noEscape */ $block->getData('mp_module_name') ?>',
domain: window.location.hostname
};
window.mageplazaModuleActive = function () {
messageContainer.hide();
if (moduleType === '1') {
if (!freeFields.valid()) {
return;
}
submitData.email = emailField.val();
submitData.name = nameField.val();
submitData.create = 1;//createAccField.prop('checked') ? 1 : 0;
submitData.subscribe = subscribeField.prop('checked') ? 1 : 0;
if (submitData.hasOwnProperty('update') && submitData.update) {
submitData.key = fieldKey.val();
}
} else {
if (!fieldKey.valid()) {
return;
}
submitData.key = fieldKey.val();
}
$j.ajax({
url: ajaxUrl,
data: submitData,
dataType: 'json',
showLoader: true,
success: function (result) {
if (result.key) {
fieldKey.val(result.key);
}
updateMessage(result);
activateProduct(result.active);
}
});
};
window.mageplazaModuleUpdate = function () {
submitData.update = 1;
messageContainer.hide();
updateButton.hide();
activeButton.show();
activeButton.find('span').html('Submit');
activeButton.attr('title', 'Submit');
fieldKey.closest('tr').hide();
freeFields.closest('tr').show();
subscribeField.closest('.nested').show();
};
function activateProduct(active) {
submitData.update = 0;
if (active) {
activeButton.hide();
updateButton.show();
saveButton.attr('disabled', false);
fieldKey.closest('tr').show();
freeFields.closest('tr').hide();
subscribeField.closest('.nested').hide();
} else {
saveButton.attr('disabled', 'disabled');
updateButton.hide();
activeButton.show();
fieldKey.closest('tr').hide();
freeFields.closest('tr').show();
subscribeField.closest('.nested').show();
}
}
function updateMessage(result) {
if (result.message) {
messageContainer.show();
messageContainer.find('.message div').html(result.message);
messageContainer.find('.message')
.removeClass('message-' + (result.success ? 'error' : 'success'))
.addClass('message-' + (result.success ? 'success' : 'error'));
}
}
var isActive = <?= /** @noEscape */ $block->getData('mp_is_active') ? 'true' : 'false' ?>;
activateProduct(isActive);
if (!isActive) {
var containerId = '<?= /** @noEscape */ $block->getData('mp_module_html_id') ?>';
$(containerId + '-state').value = 0;
Fieldset.toggleCollapse(containerId);
updateMessage({
success: false,
message: 'This extension is not actived.'
});
}
fieldKey.attr('readonly', true);
freeFields.removeAttr('name');
if (moduleType === '1') {
if (defaultConfig) {
if (!emailField.val() && defaultConfig.email) {
emailField.val(defaultConfig.email);
}
if (!nameField.val() && defaultConfig.name) {
nameField.val(defaultConfig.name);
}
}
if (checkboxConfig) {
if (checkboxConfig.subscribe) {
subscribeField.prop("checked", true);
}
}
}
});
</script>
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
@import "variables/_icons.less";
.lib-font-face(
@family-name: @icons-mageplaza__font-name,
@font-path: @icons-mageplaza__font-name-path,
@font-weight: normal,
@font-style: normal
);
.lib-font-face(
@family-name: @icons-avada__font-name,
@font-path: @icons-avada__font-name-path,
@font-weight: normal,
@font-style: normal
);
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
@import '_icons.less';
.admin__menu .item-menu.parent.level-0 > a:before {
content: @icon-mageplaza__content;
font-family: @icons-mageplaza__font-name;
font-size: 2.5rem;
padding-top: .2rem;
}
.mageplaza-extensions .title:before {
content: @icon-mageplaza__content;
font-family: @icons-mageplaza__font-name;
font-size: 1.5rem;
padding-top: .2rem;
}
.avada-extensions .title:before {
content: @icon-avada__content;
font-family: @icons-avada__font-name;
font-size: 1.7rem;
padding-top: .2rem;
}
ul[role="menu"] [data-ui-id^="menu-avada"] strong:before {
content: @icon-avada__content;
font-family: @icons-avada__font-name;;
font-size: 1.6rem;
margin-right: .8rem;
}
.row_mageplaza_module_version {
.value {
vertical-align: bottom !important;
.special {
font-weight: 600;
}
}
}
#mageplaza-module-messages {
max-width: 75%;
margin: 0 auto -35px;
}
[data-ui-id="menu-mageplaza-core-menu"] strong:before {
display: none; /*no icon under Mageplaza tab*/
}
ul[role="menu"] [data-ui-id^="menu-mageplaza"] strong:before {
content: @icon-mageplaza__content;
font-family: @icons-mageplaza__font-name;;
font-size: 1.5rem;
margin-right: .8rem;
}
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
@icons-mageplaza__font-name: 'Mageplaza Icons';
@icons-mageplaza__file-name: 'mageplaza-icons';
@icons-mageplaza__font-name-path: '@{baseDir}Mageplaza_Core/fonts/@{icons-mageplaza__file-name}/@{icons-mageplaza__file-name}';
@icon-mageplaza__content: '\e900';
@icons-avada__font-name: 'Avada Icons';
@icons-avada__file-name: 'avada-icons';
@icons-avada__font-name-path: '@{baseDir}Mageplaza_Core/fonts/@{icons-avada__file-name}/@{icons-avada__file-name}';
@icon-avada__content: '\e900';
\ No newline at end of file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>
<json>
<![CDATA[
{
"fontFamily": "avada-icons",
"majorVersion": 1,
"minorVersion": 0,
"version": "Version 1.0",
"fontId": "avada-icons",
"psName": "avada-icons",
"subFamily": "Regular",
"fullName": "avada-icons",
"description": "Font generated by IcoMoon."
}
]]>
</json>
</metadata>
<defs>
<font id="avada-icons" horiz-adv-x="1024">
<font-face units-per-em="1024" ascent="960" descent="-64" />
<missing-glyph horiz-adv-x="1024" />
<glyph unicode="&#x20;" horiz-adv-x="512" d="" />
<glyph unicode="&#xe900;" glyph-name="Icon-Avada" data-tags="Icon-Black" horiz-adv-x="1223" d="M764.927 959.48c-61.979-3.167-120.885-27.467-167.594-69.212l-4.255-3.782-3.309 0.284c-9.455 0.851-32.431 0.236-48.222-1.276-106.229-10.212-202.058-66.234-263.611-154.12-2.837-4.066-5.153-7.47-5.153-7.611s0.473 0.047 1.087 0.425c3.64 2.364 15.27 9.266 20.66 12.292 47.843 26.711 101.596 41.981 157.902 44.818 10.448 0.52 25.435 0.567 30.777 0.095l3.64-0.331 4.397 3.924c22.125 19.714 47.182 35.741 73.94 47.276 49.971 21.605 105.757 27.562 160.030 17.067 74.838-14.514 141.214-60.986 180.689-126.653 11.866-19.714 21.652-41.839 28.035-63.397l1.182-4.066 6.524-2.506c52.24-20.187 97.389-56.4 128.544-103.062 24.914-37.348 39.523-78.053 44.44-123.674 1.040-10.023 1.229-42.265 0.236-51.72-1.56-15.27-4.255-30.446-7.706-43.967-4.964-19.241-13.946-42.312-23.023-59.048-1.607-2.978-2.837-5.484-2.742-5.626 0.236-0.189 4.964 2.458 11.394 6.43 18.627 11.535 33.519 23.402 49.687 39.523 22.693 22.74 39.428 46.141 52.949 74.271 27.657 57.535 34.228 123.060 18.58 185.322-2.458 9.786-8.462 27.704-12.481 37.348-22.74 54.698-63.445 101.076-115.117 131.191-11.346 6.619-34.086 17.161-44.061 20.471-0.473 0.189-1.276 1.938-2.222 5.153-11.299 37.395-30.115 71.529-55.739 100.982-6.76 7.801-22.834 23.591-30.351 29.831-41.65 34.701-91.243 55.975-144.428 61.932-15.507 1.749-29.548 2.175-44.676 1.418zM550.766 746.927c-29.217-1.702-58.811-8.368-86.704-19.572-8.604-3.451-24.773-11.346-32.904-16.027-15.696-9.030-32.668-21.322-46.047-33.33l-4.208-3.735-15.885 0.142c-15.696 0.095-24.253-0.236-38.105-1.655-41.083-4.113-84.388-16.358-121.5-34.417-52.666-25.576-98.523-63.492-133.319-110.201-40.327-54.178-64.343-117.103-70.441-184.66-1.607-17.681-1.702-44.629-0.236-61.648 6.193-73.089 33.282-141.166 78.667-197.614 15.648-19.478 36.828-40.657 56.306-56.306 45.054-36.166 98.24-61.128 154.829-72.522 14.23-2.837 26.475-4.586 43.967-6.24 8.652-0.804 48.080-0.804 56.731 0 17.019 1.607 29.406 3.357 43.021 6.051 44.25 8.841 86.799 26.096 125.187 50.822 17.161 11.063 36.403 26.002 50.065 38.908l3.924 3.688 7.801-3.593c29.217-13.616 58.008-21.511 91.006-24.962 9.266-0.946 42.218-0.804 51.531 0.236 43.683 4.964 81.882 17.965 116.961 39.901 18.296 11.441 32.479 22.787 48.742 39.097 21.842 21.842 36.403 41.934 50.065 69.070 15.837 31.344 24.536 61.27 28.507 97.861 1.135 10.684 1.135 40.279 0 51.058-3.924 36.355-13.001 67.368-28.744 98.051-30.446 59.568-81.835 105.946-144.145 130.057l-6.808 2.647-2.458 7.801c-10.968 35.032-27.798 65.856-51.531 94.269-6.382 7.659-20.707 22.314-28.555 29.217-45.527 40.090-101.313 63.208-162.63 67.463-6.24 0.425-26.758 0.52-33.093 0.142zM561.167 530.497c21.463-3.262 42.879-12.765 58.528-25.907 1.135-0.993 2.269-1.749 2.506-1.749s0.425 1.135 0.425 2.506c0 8.793 6.666 19.005 15.176 23.213 8.51 4.16 19.289 4.16 27.846 0 4.728-2.317 10.117-7.659 12.197-12.055 3.12-6.524 2.931 1.371 2.931-113.652 0-115.921 0.236-107.364-3.215-113.888-2.175-4.208-7.281-9.408-11.299-11.535-6.051-3.167-14.703-4.255-21.936-2.742-7.659 1.655-15.128 7.47-18.532 14.466-1.938 3.924-3.167 8.273-3.167 10.968 0 0.993-0.142 1.796-0.378 1.796-0.189 0-1.844-1.513-3.64-3.357-10.873-11.015-30.588-21.889-47.418-26.144-7.706-1.986-13.19-2.695-22.362-2.978-30.020-0.898-56.117 8.084-78.951 27.231-20.234 16.925-35.646 43.636-41.272 71.671-2.364 11.677-2.837 17.019-2.837 31.911s0.52 20.612 2.789 31.911c9.786 48.6 43.258 85.428 87.413 96.254 4.917 1.182 11.394 2.269 18.012 2.978 4.113 0.425 22.409-0.142 27.184-0.898zM541.169 478.966c-15.176-2.458-27.089-8.841-37.915-20.187-12.954-13.616-19.951-30.399-21.511-51.72-1.891-25.955 5.815-49.12 21.794-65.666 12.15-12.528 25.576-18.721 43.636-20.092 17.776-1.371 34.512 3.215 47.56 13.048 20.943 15.743 32.1 42.974 29.878 72.663-1.702 22.645-9.455 40.137-24.016 54.226-9.219 8.888-19.194 14.23-32.006 17.067-5.815 1.324-21.227 1.655-27.42 0.662z" />
</font></defs></svg>
\ No newline at end of file
{"IcoMoonType":"selection","icons":[{"icon":{"paths":["M764.927 0.52c-61.979 3.167-120.885 27.467-167.594 69.212l-4.255 3.782-3.309-0.284c-9.455-0.851-32.431-0.236-48.222 1.276-106.229 10.212-202.058 66.234-263.611 154.12-2.837 4.066-5.153 7.47-5.153 7.611s0.473-0.047 1.087-0.425c3.64-2.364 15.27-9.266 20.66-12.292 47.843-26.711 101.596-41.981 157.902-44.818 10.448-0.52 25.435-0.567 30.777-0.095l3.64 0.331 4.397-3.924c22.125-19.714 47.182-35.741 73.94-47.276 49.971-21.605 105.757-27.562 160.030-17.067 74.838 14.514 141.214 60.986 180.689 126.653 11.866 19.714 21.652 41.839 28.035 63.397l1.182 4.066 6.524 2.506c52.24 20.187 97.389 56.4 128.544 103.062 24.914 37.348 39.523 78.053 44.44 123.674 1.040 10.023 1.229 42.265 0.236 51.72-1.56 15.27-4.255 30.446-7.706 43.967-4.964 19.241-13.946 42.312-23.023 59.048-1.607 2.978-2.837 5.484-2.742 5.626 0.236 0.189 4.964-2.458 11.394-6.43 18.627-11.535 33.519-23.402 49.687-39.523 22.693-22.74 39.428-46.141 52.949-74.271 27.657-57.535 34.228-123.060 18.58-185.322-2.458-9.786-8.462-27.704-12.481-37.348-22.74-54.698-63.445-101.076-115.117-131.191-11.346-6.619-34.086-17.161-44.061-20.471-0.473-0.189-1.276-1.938-2.222-5.153-11.299-37.395-30.115-71.529-55.739-100.982-6.76-7.801-22.834-23.591-30.351-29.831-41.65-34.701-91.243-55.975-144.428-61.932-15.507-1.749-29.548-2.175-44.676-1.418z","M550.766 213.073c-29.217 1.702-58.811 8.368-86.704 19.572-8.604 3.451-24.773 11.346-32.904 16.027-15.696 9.030-32.668 21.322-46.047 33.33l-4.208 3.735-15.885-0.142c-15.696-0.095-24.253 0.236-38.105 1.655-41.083 4.113-84.388 16.358-121.5 34.417-52.666 25.576-98.523 63.492-133.319 110.201-40.327 54.178-64.343 117.103-70.441 184.66-1.607 17.681-1.702 44.629-0.236 61.648 6.193 73.089 33.282 141.166 78.667 197.614 15.648 19.478 36.828 40.657 56.306 56.306 45.054 36.166 98.24 61.128 154.829 72.522 14.23 2.837 26.475 4.586 43.967 6.24 8.652 0.804 48.080 0.804 56.731 0 17.019-1.607 29.406-3.357 43.021-6.051 44.25-8.841 86.799-26.096 125.187-50.822 17.161-11.063 36.403-26.002 50.065-38.908l3.924-3.688 7.801 3.593c29.217 13.616 58.008 21.511 91.006 24.962 9.266 0.946 42.218 0.804 51.531-0.236 43.683-4.964 81.882-17.965 116.961-39.901 18.296-11.441 32.479-22.787 48.742-39.097 21.842-21.842 36.403-41.934 50.065-69.070 15.837-31.344 24.536-61.27 28.507-97.861 1.135-10.684 1.135-40.279 0-51.058-3.924-36.355-13.001-67.368-28.744-98.051-30.446-59.568-81.835-105.946-144.145-130.057l-6.808-2.647-2.458-7.801c-10.968-35.032-27.798-65.856-51.531-94.269-6.382-7.659-20.707-22.314-28.555-29.217-45.527-40.090-101.313-63.208-162.63-67.463-6.24-0.425-26.758-0.52-33.093-0.142zM561.167 429.503c21.463 3.262 42.879 12.765 58.528 25.907 1.135 0.993 2.269 1.749 2.506 1.749s0.425-1.135 0.425-2.506c0-8.793 6.666-19.005 15.176-23.213 8.51-4.16 19.289-4.16 27.846 0 4.728 2.317 10.117 7.659 12.197 12.055 3.12 6.524 2.931-1.371 2.931 113.652 0 115.921 0.236 107.364-3.215 113.888-2.175 4.208-7.281 9.408-11.299 11.535-6.051 3.167-14.703 4.255-21.936 2.742-7.659-1.655-15.128-7.47-18.532-14.466-1.938-3.924-3.167-8.273-3.167-10.968 0-0.993-0.142-1.796-0.378-1.796-0.189 0-1.844 1.513-3.64 3.357-10.873 11.015-30.588 21.889-47.418 26.144-7.706 1.986-13.19 2.695-22.362 2.978-30.020 0.898-56.117-8.084-78.951-27.231-20.234-16.925-35.646-43.636-41.272-71.671-2.364-11.677-2.837-17.019-2.837-31.911s0.52-20.612 2.789-31.911c9.786-48.6 43.258-85.428 87.413-96.254 4.917-1.182 11.394-2.269 18.012-2.978 4.113-0.425 22.409 0.142 27.184 0.898z","M541.169 481.034c-15.176 2.458-27.089 8.841-37.915 20.187-12.954 13.616-19.951 30.399-21.511 51.72-1.891 25.955 5.815 49.12 21.794 65.666 12.15 12.528 25.576 18.721 43.636 20.092 17.776 1.371 34.512-3.215 47.56-13.048 20.943-15.743 32.1-42.974 29.878-72.663-1.702-22.645-9.455-40.137-24.016-54.226-9.219-8.888-19.194-14.23-32.006-17.067-5.815-1.324-21.227-1.655-27.42-0.662z"],"attrs":[{},{},{}],"width":1223,"isMulticolor":false,"isMulticolor2":false,"grid":0,"tags":["Icon-Black"]},"attrs":[{},{},{}],"properties":{"order":2,"id":0,"name":"Icon-Avada","prevSize":32,"code":59648},"setIdx":0,"setId":2,"iconIdx":0}],"height":1024,"metadata":{"name":"avada-icons"},"preferences":{"showGlyphs":true,"showQuickUse":true,"showQuickUse2":true,"showSVGs":true,"fontPref":{"prefix":"icon-","metadata":{"fontFamily":"avada-icons","majorVersion":1,"minorVersion":0},"metrics":{"emSize":1024,"baseline":6.25,"whitespace":50},"embed":false,"autoHost":false,"showSelector":false,"showMetrics":false,"showMetadata":false,"showVersion":false,"includeMetadata":true,"cssVars":false,"cssVarsFormat":"scss","flutter":true},"imagePref":{"prefix":"icon-","png":true,"useClassSelector":true,"color":0,"bgColor":16777215,"classSelector":".icon","name":"icomoon"},"historySize":50,"showCodes":true,"gridSize":16,"quickUsageToken":{"UntitledProject":"ZjBhMDUyNDkzN2E5M2YzZjFkMmZiN2JmNmRiZWMzNmQjMSMxNjI2Nzc2MDM4IyMj"}}}
\ No newline at end of file
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg">
<metadata>Copyright (C) 2022 by original authors @ fontello.com</metadata>
<defs>
<font id="mageplaza-icons" horiz-adv-x="1000" >
<font-face font-family="mageplaza-icons" font-weight="400" font-stretch="normal" units-per-em="1000" ascent="850" descent="-150" />
<missing-glyph horiz-adv-x="1000" />
<glyph glyph-name="Mageplaza Icons" unicode="&#xe900;" d="M719 338c8-8 13-12 13-12 68 68 120 120 154 154 0 0-4 4-12 13-34-35-86-86-155-155z m155 155c8-9 12-13 12-13 35 35 52 52 52 52 0 0-4 4-13 12 0 0-17-17-51-51z m-142-167c4-4 8-8 12-12 69 68 120 120 154 154-4 4-8 8-12 12-34-34-86-86-154-154z m154 154c4-4 8-8 12-12 35 34 52 52 52 52-4 4-8 8-12 12 0 0-17-17-52-52z m-142-166c4-5 8-9 12-13 69 69 120 120 155 155-4 4-8 8-13 12-34-34-85-86-154-154z m154 154c5-4 9-8 13-12 34 34 51 51 51 51-4 4-8 9-12 13 0 0-17-18-52-52z m-142-167c0 0 4-4 12-12 69 69 121 120 155 155-8 8-12 12-12 12-35-35-86-86-155-155z m155 155c0 0 4-4 12-12 34 34 52 51 52 51-9 8-13 12-13 12 0 0-17-17-51-51z m14 88c9-8 13-12 13-12 0 0 0 0 0 0 0 0-4 4-13 12 0 0 0 0 0 0z m13-12c4-4 8-8 12-12 0 0 0 0 0 0-4 4-8 8-12 12 0 0 0 0 0 0z m12-12c4-4 8-9 12-13 0 0 0 0 0 0-4 5-8 9-12 13 0 0 0 0 0 0z m12-13c0 0 4-4 13-12 0 0 0 0 0 0-9 8-13 12-13 12 0 0 0 0 0 0z m-37 37c9-8 13-12 13-12 8 8 17 15 28 19 0 1-3 6-7 16-13-5-24-13-34-23z m34 23c4-10 7-15 7-16 10 5 22 7 33 8 0 0 0 5 0 17-14 0-28-3-40-9z m-21-35c4-4 8-8 12-12 7 6 14 12 23 15-3 6-5 11-7 16-11-4-20-11-28-19z m28 19c2-5 4-10 7-16 8 4 17 6 27 6-1 6-1 12-1 18-11-1-23-3-33-8z m-16-31c4-4 8-8 12-13 5 6 11 10 18 12-3 6-5 11-7 16-9-3-16-9-23-15z m23 15c2-5 4-10 7-16 6 3 13 5 20 5 0 6 0 12 0 17-10 0-19-2-27-6z m-11-28c0 0 4-4 13-12 3 4 7 7 12 9-5 10-7 15-7 15-7-2-13-6-18-12z m18 12c0 0 2-5 7-15 4 1 9 2 13 3 0 11 0 17 0 17-7 0-14-2-20-5z m19 57c0-12 0-17 0-17 24 0 48-9 66-26 1 1 5 6 12 13-21 20-49 31-78 30z m78-30c-7-7-11-12-12-13 9-8 16-19 21-30 1 1 6 3 16 7-6 13-14 26-25 36z m25-36c-10-4-15-6-16-7 4-11 7-23 7-35 0 0 5 0 17 0 0 14-3 28-8 42z m-103 49c0-6 0-12 1-18 19 1 39-7 53-20 4 4 8 8 12 12-18 17-42 26-66 26z m66-26c-4-4-8-8-12-12 7-7 13-15 17-24 5 2 10 4 16 6-5 11-12 22-21 30z m21-30c-6-2-11-4-16-6 3-10 5-19 5-29 6 0 12 0 18 0 0 12-3 24-7 35z m-86 38c0-5 0-11 0-17 15 0 30-6 41-16 4 4 8 8 12 13-14 13-34 21-53 20z m53-20c-4-5-8-9-12-13 6-5 10-11 13-18 5 2 10 4 16 7-4 9-10 17-17 24z m17-24c-6-3-11-5-16-7 3-7 4-14 4-22 6 0 12 0 17 0 0 10-2 19-5 29z m-70 27c0 0 0-6 0-17 11 0 22-4 29-12 7 8 11 12 12 13-11 10-26 16-41 16z m41-16c-1-1-5-5-12-13 0 0 0 0 0 0 7 7 11 12 12 13 0 0 0 0 0 0z m0 0c-1-1-5-6-12-13 4-3 7-7 9-12 9 4 15 6 16 7-3 7-7 13-13 18z m13-18c-1-1-7-3-16-7 2-4 3-10 3-15 11 0 17 0 17 0 0 8-1 15-4 22z m56-22c-12 0-17 0-17 0 0 0 0 0 0 0 0 0 5 0 17 0 0 0 0 0 0 0z m-17 0c-6 0-12 0-18 0 0 0 0 0 0 0 6 0 12 0 18 0 0 0 0 0 0 0z m-18 0c-5 0-11 0-17 0 0 0 0 0 0 0 6 0 12 0 17 0 0 0 0 0 0 0z m-17 0c0 0-6 0-17 0 0 0 0 0 0 0 11 0 17 0 17 0 0 0 0 0 0 0z m52 0c-12 0-17 0-17 0 0-25 0-50 0-75 0 0 5 0 17 0 0 25 0 50 0 75z m-17 0c-6 0-12 0-18 0 0-25 0-50 0-75 6 0 12 0 18 0 0 25 0 50 0 75z m-18 0c-5 0-11 0-17 0 0-25 0-50 0-75 6 0 12 0 17 0 0 25 0 50 0 75z m-17 0c0 0-6 0-17 0 0-25 0-50 0-75 11 0 17 0 17 0 0 25 0 50 0 75z m52-75c-12 0-17 0-17 0 0-25 0-49 0-74 0 0 5 0 17 0 0 25 0 49 0 74z m-17 0c-6 0-12 0-18 0 0-25 0-49 0-74 6 0 12 0 18 0 0 25 0 49 0 74z m-18 0c-5 0-11 0-17 0 0-25 0-49 0-74 6 0 12 0 17 0 0 25 0 49 0 74z m-17 0c0 0-6 0-17 0 0-25 0-49 0-74 11 0 17 0 17 0 0 25 0 49 0 74z m52-74c-12 0-17 0-17 0 0-25 0-50 0-75 0 0 5 0 17 0 0 25 0 50 0 75z m-17 0c-6 0-12 0-18 0 0-25 0-50 0-75 6 0 12 0 18 0 0 25 0 50 0 75z m-18 0c-5 0-11 0-17 0 0-25 0-50 0-75 6 0 12 0 17 0 0 25 0 50 0 75z m-17 0c0 0-6 0-17 0 0-25 0-50 0-75 11 0 17 0 17 0 0 25 0 50 0 75z m52-75c-12 0-17 0-17 0 0-25 0-50 0-74 0 0 5 0 17 0 0 24 0 49 0 74z m-17 0c-6 0-12 0-18 0 0-25 0-50 0-74 6 0 12 0 18 0 0 24 0 49 0 74z m-18 0c-5 0-11 0-17 0 0-25 0-50 0-74 6 0 12 0 17 0 0 24 0 49 0 74z m-17 0c0 0-6 0-17 0 0-25 0-50 0-74 11 0 17 0 17 0 0 24 0 49 0 74z m52-74c-12 0-17 0-17 0 0 0 0 0 0 0 0 0 5 0 17-1 0 1 0 1 0 1z m-17 0c-6 0-12 0-18 0 0 0 0 0 0 0 6 0 12 0 18 0 0 0 0 0 0 0z m-18 0c-5 0-11 0-17 0 0 0 0 0 0 0 6 0 12 0 17 0 0 0 0 0 0 0z m-17 0c0 0-6 0-17 0 0 0 0 0 0 0 11 0 17 0 17 0 0 0 0 0 0 0z m52-1c-12 1-17 1-17 1 0-11-2-21-6-31 1-1 6-3 16-7 5 12 7 25 7 37z m-7-37c-10 4-15 6-16 7-4-10-10-19-18-26 1-1 6-5 13-12 9 9 16 20 21 31z m-21-31c-7 7-12 11-13 12 0 0 0 0 0 0 1-1 6-5 13-12 0 0 0 0 0 0z m0 0c-7 7-12 11-13 12-7-7-16-13-26-17 1-1 3-7 7-16 12 5 23 12 32 21z m-32-21c-4 9-6 15-7 16-9-4-20-6-30-6 0 0 0-6 0-18 13 0 25 3 37 8z m43 90c-6 0-12 0-18 0 0-17-6-33-18-45 4-4 8-8 12-12 15 15 24 36 24 57z m-24-57c-4 4-8 8-12 12-12-11-28-18-44-18 0-6 0-11 0-17 21 0 42 8 56 23z m6 57c-5 0-11 0-17 0 0-12-5-24-13-32 4-4 8-9 12-13 12 12 18 28 18 45z m-18-45c-4 4-8 9-12 13-9-9-20-14-32-14 0-5 0-11 0-17 16 0 32 7 44 18z m1 45c0 0-6 0-17 0 0-8-3-15-9-20 7-7 12-11 13-12 8 8 13 20 13 32z m-13-32c-1 1-6 5-13 12-5-5-12-8-19-8 0-12 0-18 0-18 12 0 23 5 32 14z m-32-66c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 17 0 17 0 6 0 6 0 0 0 0 0-35 0-35z m0 35c0 6 0 6 0 0 0 0 0-17 0-17 0 0 0-6 0-18 0 0 0 35 0 35z m0-35c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 0c0 12 0 18 0 18 0 0 0 0 0 0 0 0 0-6 0-18 0 0 0 0 0 0z m0 18c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0-17 0-17z m0 17c0 0 0 0 0 0 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 17 0 17z m0-17c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 11 0 17 0 0 0 0 0 0 0-6 0-11 0-17 0 0 0 0 0 0z m0 17c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0-17 0-17 0 0 0 0 0 0 0 0 0 0 0 0z m0 0c0 0 0 0 0 0 0 0 0 17 0 17 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 0c0 6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0z m0 17c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0-35 0-35 0-6 0-6 0 0 0 0 0 17 0 17z m0-17c0-6 0-6 0 0 0 0 0 35 0 35 0-12 0-18 0-18 0 0 0-17 0-17z m0 17c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0 0c0 0 0 6 0 18 0 0 0 0 0 0 0-12 0-18 0-18 0 0 0 0 0 0z m0-52c0 12 0 18 0 18-11 0-21 2-31 6 0-1-3-7-6-16 11-5 24-8 37-8z m-37 8c3 9 6 15 6 16-9 4-18 10-26 17-1-1-5-5-12-12 9-9 20-16 32-21z m-32 21c7 7 11 11 12 12 0 0 0 0 0 0-1-1-5-5-12-12 0 0 0 0 0 0z m0 0c7 7 11 11 12 12-7 7-13 16-17 26-1-1-6-3-16-7 5-11 12-22 21-31z m-21 31c10 4 15 6 16 7-4 10-6 20-6 31 0 0-6 0-17-1 0-12 2-25 7-37z m90-42c0 6 0 11 0 17-17 0-33 7-44 18-4-4-8-8-13-12 15-15 36-23 57-23z m-57 23c5 4 9 8 13 12-12 12-19 28-19 45-5 0-11 0-17 0 0-21 9-42 23-57z m57-6c0 6 0 12 0 17-12 0-24 5-32 14-4-4-8-9-12-13 11-11 27-18 44-18z m-44 18c4 4 8 9 12 13-8 8-13 20-13 32-6 0-12 0-18 0 0-17 7-33 19-45z m44-1c0 0 0 6 0 18-8 0-15 3-20 8-7-7-11-11-12-12 8-9 20-14 32-14z m-32 14c1 1 5 5 12 12-5 5-8 12-8 20-11 0-17 0-17 0 0-12 5-24 13-32z m-65 31c11 1 17 1 17 1 0 0 0 0 0 0 0 0-6 0-17 0 0 0 0 0 0-1z m17 1c6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 18 0 0 0 0 0 0 0-6 0-12 0-18 0 0 0 0 0 0 0z m18 0c0 0 6 0 17 0 0 0 0 0 0 0-11 0-17 0-17 0 0 0 0 0 0 0z m-52 0c11 0 17 0 17 0 0 29 0 58 0 87 0 0-6 0-17 0 0-29 0-58 0-87z m17 0c6 0 12 0 17 0 0 29 0 58 0 87-5 0-11 0-17 0 0-29 0-58 0-87z m17 0c6 0 12 0 18 0 0 29 0 58 0 87-6 0-12 0-18 0 0-29 0-58 0-87z m18 0c0 0 6 0 17 0 0 29 0 58 0 87-11 0-17 0-17 0 0-29 0-58 0-87z m-52 87c11 0 17 0 17 0 0 29 0 58 0 88 0 0-6 0-17 0 0-30 0-59 0-88z m17 0c6 0 12 0 17 0 0 29 0 58 0 88-5 0-11 0-17 0 0-30 0-59 0-88z m17 0c6 0 12 0 18 0 0 29 0 58 0 88-6 0-12 0-18 0 0-30 0-59 0-88z m18 0c0 0 6 0 17 0 0 29 0 58 0 88-11 0-17 0-17 0 0-30 0-59 0-88z m-52 88c11 0 17 0 17 0 0 29 0 58 0 87 0 0-6 0-17 0 0-29 0-58 0-87z m17 0c6 0 12 0 17 0 0 29 0 58 0 87-5 0-11 0-17 0 0-29 0-58 0-87z m17 0c6 0 12 0 18 0 0 29 0 58 0 87-6 0-12 0-18 0 0-29 0-58 0-87z m18 0c0 0 6 0 17 0 0 29 0 58 0 87-11 0-17 0-17 0 0-29 0-58 0-87z m-52 87c11 0 17 0 17 0 0 15 0 29 0 44 0 0-6 0-17 0 0-15 0-29 0-44z m17 0c6 0 12 0 17 0 0 15 0 29 0 44-5 0-11 0-17 0 0-15 0-29 0-44z m17 0c6 0 12 0 18 0 0 15 0 29 0 44-6 0-12 0-18 0 0-15 0-29 0-44z m18 0c0 0 6 0 17 0 0 15 0 29 0 44-11 0-17 0-17 0 0-15 0-29 0-44z m-52 44c11 0 17 0 17 0 0 7 0 15 0 22 0 0-6 0-17 0 0-7 0-15 0-22z m17 0c6 0 12 0 17 0 0 7 0 15 0 22-5 0-11 0-17 0 0-7 0-15 0-22z m17 0c6 0 12 0 18 0 0 7 0 15 0 22-6 0-12 0-18 0 0-7 0-15 0-22z m18 0c0 0 6 0 17 0 0 7 0 15 0 22-11 0-17 0-17 0 0-7 0-15 0-22z m-52 22c11 0 17 0 17 0 0 7 0 14 0 22 0 0-6 0-17 0 0-8 0-15 0-22z m17 0c6 0 12 0 17 0 0 7 0 14 0 22-5 0-11 0-17 0 0-8 0-15 0-22z m17 0c6 0 12 0 18 0 0 7 0 14 0 22-6 0-12 0-18 0 0-8 0-15 0-22z m18 0c0 0 6 0 17 0 0 7 0 14 0 22-11 0-17 0-17 0 0-8 0-15 0-22z m-52 22c11 0 17 0 17 0 0 0 0 0 0 0 0 0-6 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 18 0 0 0 0 0 0 0-6 0-12 0-18 0 0 0 0 0 0 0z m18 0c0 0 6 0 17 0 0 0 0 0 0 0-11 0-17 0-17 0 0 0 0 0 0 0z m-52 0c11 0 17 0 17 0 0 8-1 15-4 22 0 0-6-2-16-7 2-4 3-10 3-15z m17 0c6 0 12 0 17 0 0 10-1 19-5 29-6-3-11-5-16-7 3-7 4-14 4-22z m17 0c6 0 12 0 18 0 0 12-3 24-7 35-6-2-11-4-16-6 4-10 5-19 5-29z m18 0c0 0 6 0 17 0 0 14-3 28-8 42-11-5-16-7-16-7 4-11 7-23 7-35z m-55 15c10 5 16 7 16 7-3 7-7 13-13 18 0 0-4-4-12-13 4-3 7-7 9-12z m16 7c5 2 10 4 16 7-4 9-10 17-17 24-4-5-8-9-12-13 6-5 10-11 13-18z m16 7c5 2 10 4 16 6-5 11-12 22-21 30-4-4-8-8-12-12 7-7 13-15 17-24z m16 6c0 0 5 2 16 7-6 13-14 26-25 36-8-9-12-13-12-13 9-8 16-19 21-30z m-57-8c8 9 12 13 12 13-3 3-6 5-9 7 0 0-3-5-9-15 2-1 4-3 6-5z m-6 5c6 10 9 15 9 15-3 2-6 4-10 5 0 0-2-5-6-16 2-1 5-2 7-4z m18 8c4 4 8 8 12 13-3 3-7 6-11 9-4-5-7-10-10-15 3-2 6-4 9-7z m-9 7c3 5 6 10 10 15-5 2-9 4-14 6-2-5-4-11-6-16 4-1 7-3 10-5z m21 6c4 4 8 8 12 12-4 4-9 8-14 11-3-5-6-9-9-14 4-3 8-6 11-9z m-11 9c3 5 6 9 9 14-5 4-11 6-16 8-2-5-4-10-7-16 5-2 9-4 14-6z m23 3c0 0 4 4 12 13-5 5-11 9-17 13-6-10-9-15-9-15 5-3 10-7 14-11z m-14 11c0 0 3 5 9 15-6 4-12 7-19 10-4-11-6-17-6-17 5-2 11-4 16-8z m-35-40c4 11 6 16 6 16-7 3-14 4-22 4 0 0 0-6 0-17 6 0 11-1 16-3z m6 16c2 5 4 11 6 16-9 4-19 6-28 5 0-5 0-11 0-17 8 0 15-1 22-4z m6 16c3 6 5 11 7 16-12 5-24 7-36 7 0-6 0-12 1-18 9 1 19-1 28-5z m7 16c0 0 2 6 6 17-13 5-28 7-42 7 0-12 0-17 0-17 12 0 24-2 36-7z m-35-45c0 11 0 17 0 17-3 0-7 0-10-1 0 0 1-6 3-17 3 0 5 0 7 1z m0 17c0 6 0 12 0 17-5 0-10 0-14-1 1-6 2-12 4-17 3 1 7 1 10 1z m0 17c-1 6-1 12-1 18-6-1-11-1-17-2 1-6 3-12 4-17 4 1 9 1 14 1z m-1 18c0 0 0 5 0 17-7 0-14-1-21-2 3-12 4-17 4-17 6 1 11 1 17 2z m-6-53c-2 11-3 17-3 17-2-1-4-1-5-2 0 0 1-5 5-16 1 0 2 1 3 1z m-3-1c-4 11-5 16-5 16-2 0-4-1-5-2 0 0 2-5 7-15 1 0 2 0 3 1z m0 18c-2 5-3 11-4 17-2-1-5-2-7-2 2-6 4-11 6-17 1 1 3 1 5 2z m-5-2c-2 6-4 11-6 17-2-1-4-2-6-3 2-5 4-10 7-16 1 1 3 2 5 2z m1 19c-1 5-3 11-4 17-3-1-5-2-8-3 2-5 3-11 5-16 2 0 5 1 7 2z m-7-2c-2 5-3 11-5 16-3-1-6-2-8-3 2-5 4-10 7-16 2 1 4 2 6 3z m3 19c0 0-1 5-4 17-3-1-6-2-10-3 4-11 6-17 6-17 3 1 5 2 8 3z m-8-3c0 0-2 6-6 17-3-1-6-2-9-4 4-10 7-16 7-16 2 1 5 2 8 3z m13-50c-5 10-7 15-7 15-2 0-3-1-5-2 0 0 3-5 9-15 1 1 2 1 3 2z m-3-2c-6 10-9 15-9 15-1 0-1-1-2-1 0 0 3-5 9-15 0 0 1 1 2 1z m-2-1c-6 10-9 15-9 15-1-1-2-1-2-2 0 0 3-4 9-14 1 0 1 1 2 1z m-2 18c-3 6-5 11-7 16-2-1-4-2-6-3 2-5 5-10 8-15 2 1 3 2 5 2z m-5-2c-3 5-6 10-8 15-1 0-2-1-3-1 3-5 6-10 9-15 1 0 1 1 2 1z m-2-1c-3 5-6 10-9 15-1-1-2-2-3-2 3-5 6-10 10-15 0 1 1 1 2 2z m0 19c-3 6-5 11-7 16-3-1-5-2-8-4 3-5 6-10 9-15 2 1 4 2 6 3z m-6-3c-3 5-6 10-9 15-1 0-2-1-4-2 3-5 7-10 10-14 1 0 2 1 3 1z m-3-1c-3 4-7 9-10 14-1-1-2-1-3-2 3-5 6-10 10-14 1 0 2 1 3 2z m2 20c0 0-3 6-7 16-3-1-6-3-9-4 5-11 8-16 8-16 3 2 5 3 8 4z m-8-4c0 0-3 5-8 16-2-1-3-2-5-3 6-10 9-15 9-15 2 1 3 2 4 2z m-4-2c0 0-3 5-9 15-1-1-3-2-4-3 7-9 10-14 10-14 1 1 2 1 3 2z m26-45c-6 10-9 14-9 14-3-2-6-4-9-7 0 0 4-4 13-12 2 2 3 4 5 5z m-9 14c-4 5-7 10-10 15-4-3-8-6-11-9 4-4 8-8 12-13 3 3 6 5 9 7z m-10 15c-4 4-7 9-10 14-5-3-9-7-13-11 4-4 8-8 12-12 3 3 7 6 11 9z m-10 14c0 0-3 5-10 14-6-4-11-8-15-13 8-8 12-12 12-12 4 4 8 8 13 11z m24-48c-9 8-13 12-13 12 0 0 0 0 0 0 0 0 4-4 13-12 0 0 0 0 0 0z m-13 12c-4 5-8 9-12 13 0 0 0 0 0 0 4-4 8-8 12-13 0 0 0 0 0 0z m-12 13c-4 4-8 8-12 12 0 0 0 0 0 0 4-4 8-8 12-12 0 0 0 0 0 0z m-12 12c0 0-4 4-12 12 0 0-1 0-1 0 9-8 13-12 13-12 0 0 0 0 0 0z m37-37c-9 8-13 12-13 12-9-9-18-18-27-27 0 0 4-4 12-12 9 9 18 18 28 27z m-13 12c-4 5-8 9-12 13-9-9-18-19-27-28 4-4 8-8 12-12 9 9 18 18 27 27z m-12 13c-4 4-8 8-12 12-9-9-19-18-28-28 4-4 8-8 13-12 9 9 18 19 27 28z m-12 12c0 0-4 4-13 12-9-9-18-18-27-27 8-8 12-13 12-13 9 10 19 19 28 28z m9-64c-8 8-12 12-12 12-9-9-19-18-28-28 0 0 4-4 13-12 9 9 18 19 27 28z m-12 12c-4 4-8 8-12 12-10-9-19-18-28-27 4-4 8-8 12-13 9 10 19 19 28 28z m-12 12c-5 4-9 8-13 12-9-9-18-18-27-27 4-4 8-8 12-12 9 9 18 18 28 27z m-13 12c0 0-4 5-12 13-9-9-18-19-27-28 8-8 12-12 12-12 9 9 18 18 27 27z m10-64c-9 8-13 12-13 12-9-9-18-18-27-27 0 0 4-4 12-12 9 9 18 18 28 27z m-13 12c-4 5-8 9-12 13-9-9-18-19-27-28 4-4 8-8 12-12 9 9 18 18 27 27z m-12 13c-4 4-8 8-12 12-9-9-19-18-28-27 4-5 8-9 13-13 9 9 18 19 27 28z m-12 12c0 0-4 4-12 12-10-9-19-18-28-27 8-8 12-12 12-12 9 9 19 18 28 27z m9-64c-8 8-12 12-12 12-5-5-9-9-14-14 0 0 4-4 12-12 5 5 10 9 14 14z m-12 12c-4 4-8 8-12 12-5-4-10-9-14-13 4-5 8-9 12-13 5 5 9 9 14 14z m-12 12c-5 4-9 8-13 13-4-5-9-10-13-14 4-4 8-8 12-12 4 4 9 9 14 13z m-13 13c0 0-4 4-12 12-5-5-9-9-14-14 8-8 13-12 13-12 4 4 9 9 13 14z m23-51c-8 8-12 12-12 12-2-2-4-4-7-7 0 0 4-4 13-12 2 2 4 5 6 7z m-12 12c-4 4-8 8-12 13-2-3-5-5-7-7 4-4 8-9 12-13 3 3 5 5 7 7z m-12 13c-4 4-8 8-12 12-3-3-5-5-7-7 4-4 8-8 12-12 2 2 5 4 7 7z m-12 12c0 0-5 4-13 12-2-2-4-5-7-7 9-8 13-12 13-12 2 2 4 4 7 7z m30-44c-9 8-13 12-13 12-2-2-4-4-7-6 0 0 4-5 13-13 2 3 4 5 7 7z m-13 12c-4 4-8 9-12 13-2-3-5-5-7-7 4-4 8-8 12-12 3 2 5 4 7 6z m-12 13c-4 4-8 8-12 12-3-2-5-5-7-7 4-4 8-8 12-12 2 2 5 4 7 7z m-12 12c0 0-4 4-13 12-2-2-4-4-6-7 8-8 12-12 12-12 2 2 4 5 7 7z m30-44c-9 8-13 13-13 13-7-7-14-14-20-21 0 0 4-4 12-13 7 7 14 14 21 21z m-13 13c-4 4-8 8-12 12-7-7-14-14-21-21 4-4 8-8 13-12 6 7 13 14 20 21z m-12 12c-4 4-8 8-12 12-7-7-14-14-21-21 4-4 8-8 12-12 7 7 14 14 21 21z m-12 12c0 0-4 4-12 12-7-7-14-14-21-21 8-8 12-12 12-12 7 7 14 14 21 21z m16-58c-8 9-12 13-12 13-7-7-14-14-21-21 0 0 4-4 12-12 7 6 14 13 21 20z m-12 13c-5 4-9 8-13 12-7-7-14-14-21-21 5-4 9-8 13-12 7 7 14 14 21 21z m-13 12c-4 4-8 8-12 12-7-7-14-14-21-21 4-4 8-8 12-12 7 7 14 14 21 21z m-12 12c0 0-4 4-12 12-7-6-14-13-21-20 8-9 12-13 12-13 7 7 14 14 21 21z m16-57c-8 8-12 12-12 12-14-14-28-28-42-42 0 0 4-4 12-12 14 14 28 28 42 42z m-12 12c-4 4-8 8-13 12-13-14-27-28-41-42 4-4 8-8 12-12 14 14 28 28 42 42z m-13 12c-4 4-8 8-12 12-14-14-28-27-42-41 5-4 9-8 13-13 14 14 28 28 41 42z m-12 12c0 0-4 4-12 13-14-14-28-28-42-42 8-8 12-12 12-12 14 14 28 27 42 41z m-5-78c-8 8-12 12-12 12-28-28-56-55-83-83 0 0 4-4 12-12 28 27 55 55 83 83z m-12 12c-4 4-8 8-12 12-28-27-56-55-84-83 4-4 9-8 13-12 27 28 55 55 83 83z m-12 12c-4 5-8 9-13 13-27-28-55-56-83-84 4-4 8-8 12-12 28 28 56 56 84 83z m-13 13c0 0-4 4-12 12-28-28-55-56-83-83 8-9 12-13 12-13 28 28 56 56 83 84z m-46-120c-8 8-12 12-12 12-28-28-56-56-84-84 0 0 4-4 13-12 27 28 55 56 83 84z m-12 12c-4 4-9 8-13 12-27-28-55-56-83-83 4-4 8-8 12-13 28 28 56 56 84 84z m-13 12c-4 4-8 8-12 12-28-27-55-55-83-83 4-4 8-8 12-12 28 27 56 55 83 83z m-12 12c0 0-4 4-12 13-28-28-56-56-84-84 9-8 13-12 13-12 28 28 55 56 83 83z m-46-120c-9 8-13 12-13 12-27-27-55-55-83-83 0 0 4-4 12-12 28 28 56 55 84 83z m-13 12c-4 5-8 9-12 13-28-28-56-56-83-84 4-4 8-8 12-12 28 28 56 56 83 83z m-12 13c-4 4-8 8-12 12-28-28-56-56-84-83 4-4 9-9 13-13 27 28 55 56 83 84z m-12 12c0 0-4 4-13 12-27-28-55-55-83-83 8-8 12-12 12-12 28 27 56 55 84 83z m-47-120c-8 8-12 12-12 12 0 0 0 0 0 0 0 0 4-4 12-12 0 0 0 0 0 0z m-12 12c-4 4-8 8-12 12 0 0 0 0 0 0 4-4 8-8 12-12 0 0 0 0 0 0z m-12 12c-4 4-9 9-13 13 0 0 0 0 0 0 4-5 9-9 13-13 0 0 0 0 0 0z m-13 13c0 0-4 4-12 12 0 0 0 0 0 0 8-8 12-12 12-12 0 0 0 0 0 0z m37-37c-8 8-12 12-12 12-4-4-8-8-13-11 0 0 3-5 10-14 5 4 10 8 15 13z m-12 12c-4 4-8 8-12 12-4-3-7-6-11-9 3-4 7-9 10-14 5 3 9 7 13 11z m-12 12c-4 4-9 8-13 13-2-3-5-5-8-7 3-5 7-10 10-15 4 3 7 6 11 9z m-13 13c0 0-4 4-12 12-2-2-4-4-6-5 7-10 10-14 10-14 3 2 6 4 8 7z m22-50c-7 9-10 14-10 14-1-1-3-1-4-2 0 0 3-5 10-15 1 1 2 2 4 3z m-4-3c-7 10-10 15-10 15-1-1-2-2-3-2 0 0 2-5 8-15 2 0 3 1 5 2z m-5-2c-6 10-8 15-8 15-3-2-5-3-8-4 0 0 2-5 7-16 3 1 6 3 9 5z m-1 19c-3 5-7 10-10 14-1 0-2-1-3-1 3-5 6-10 9-15 1 1 3 1 4 2z m-4-2c-3 5-6 10-9 15-1-1-2-2-3-2 3-5 6-10 9-15 1 0 2 1 3 2z m-3-2c-3 5-6 10-9 15-2-1-4-2-6-3 2-6 5-11 7-16 3 1 5 2 8 4z m-3 18c-3 5-7 10-10 15-1-1-1-1-2-2 3-5 6-10 9-14 1 0 2 1 3 1z m-3-1c-3 4-6 9-9 14-1 0-2-1-2-1 2-5 5-10 8-15 1 0 2 1 3 2z m-3-2c-3 5-6 10-8 15-2-1-3-2-5-2 2-6 5-11 7-16 2 1 4 2 6 3z m-4 18c0 0-3 4-10 14 0 0-1-1-1-1 6-10 9-15 9-15 1 1 1 1 2 2z m-2-2c0 0-3 5-9 15-1 0-1-1-2-1 6-10 9-15 9-15 0 0 1 1 2 1z m-2-1c0 0-3 5-9 15-1-1-2-1-3-2 5-10 7-15 7-15 2 0 3 1 5 2z m16-50c-5 11-7 16-7 16-3-1-5-2-8-3 0 0 2-6 5-17 4 1 7 3 10 4z m-10-4c-3 11-5 17-5 17-3-1-6-2-8-3 0 0 1-5 3-16 4 0 7 1 10 2z m3 20c-2 5-5 10-7 16-2-1-4-2-7-3 2-5 4-11 6-16 3 1 5 2 8 3z m-8-3c-2 5-4 11-6 16-2 0-4-1-6-2 1-5 2-11 4-17 2 1 5 2 8 3z m1 19c-2 5-5 10-7 16-2-1-3-2-5-2 2-6 4-11 5-17 3 1 5 2 7 3z m-7-3c-1 6-3 11-5 17-2-1-3-1-5-2 1-5 3-11 4-17 2 1 4 2 6 2z m0 19c0 0-2 5-7 15-1 0-2 0-3-1 3-11 5-16 5-16 2 0 3 1 5 2z m-5-2c0 0-2 5-5 16-1 0-3-1-4-1 3-11 4-17 4-17 2 1 3 1 5 2z m6-52c-2 11-3 16-3 16-6-1-12-1-17-2 0 0 0-5 0-17 7 0 14 1 20 3z m-3 16c-2 6-3 12-4 17-5-1-9-1-14-1 0-6 0-12 1-18 5 1 11 1 17 2z m-4 17c-1 6-3 12-4 17-3-1-7-1-10-1 0-6 0-12 0-17 5 0 9 0 14 1z m-4 17c0 0-1 6-4 17-2 0-4 0-7-1 0-11 1-17 1-17 3 0 7 0 10 1z m-9-53c0 12 0 17 0 17-7 0-13 1-19 2 0 0-1-6-3-17 7-2 15-2 22-2z m0 17c-1 6-1 12-1 18-5 0-10 0-15 1-1-6-2-12-3-17 6-1 12-2 19-2z m-1 18c0 5 0 11 0 17-4 0-8 0-12 1-1-6-2-11-3-17 5-1 10-1 15-1z m0 17c0 0-1 6-1 17-2 0-5 1-8 1-2-11-3-17-3-17 4-1 8-1 12-1z m-21-50c2 11 3 17 3 17-6 1-11 2-17 5 0 0-2-6-6-17 6-2 13-4 20-5z m3 17c1 5 2 11 3 17-4 1-9 2-14 4-2-6-4-11-6-16 6-3 11-4 17-5z m3 17c1 6 2 11 3 17-3 1-7 2-10 3-3-5-5-11-7-16 5-2 10-3 14-4z m3 17c0 0 1 6 3 17-2 1-5 1-7 2-4-11-6-16-6-16 3-1 7-2 10-3z m-29-46c4 11 6 17 6 17-6 2-11 4-16 8 0 0-3-5-9-15 6-4 12-7 19-10z m-19 10c6 10 9 15 9 15-5 3-10 7-14 11 0 0-4-4-12-13 5-5 10-9 17-13z m25 7c2 5 4 10 6 16-4 2-9 4-13 6-3-4-6-9-9-14 5-4 10-6 16-8z m-16 8c3 5 6 10 9 14-4 3-8 6-11 9-4-4-8-8-12-12 4-4 9-8 14-11z m22 8c2 5 4 11 7 16-4 1-7 3-11 5-3-5-6-10-9-15 4-2 9-4 13-6z m-13 6c3 5 6 10 9 15-3 2-6 4-8 7-4-4-8-8-12-13 3-3 7-6 11-9z m20 10c0 0 2 5 6 16-3 1-5 2-7 4-6-10-10-15-10-15 4-2 7-4 11-5z m-11 5c0 0 4 5 10 15-3 1-5 3-6 5-8-9-12-13-12-13 2-3 5-5 8-7z m-44-31c8 9 12 13 12 13-9 8-16 19-21 30 0 0-5-2-16-7 6-13 14-26 25-36z m12 13c4 4 8 8 12 12-8 7-13 15-17 25-5-3-11-5-16-7 5-11 12-22 21-30z m12 12c4 5 8 9 12 13-6 5-10 11-13 18-5-2-11-4-16-6 4-10 9-18 17-25z m12 13c0 0 4 4 12 13-4 3-7 7-9 12-11-5-16-7-16-7 3-7 7-13 13-18z m-61-2c11 5 16 7 16 7-5 11-7 23-7 35 0 0-6 0-17 0 0-14 2-28 8-42z m16 7c5 2 11 4 16 7-4 9-6 18-6 28-5 0-11 0-17 0 0-12 2-24 7-35z m16 7c5 2 11 4 16 6-3 7-4 15-4 22-6 0-12 0-18 0 0-10 2-19 6-28z m16 6c0 0 5 2 16 7-2 5-3 10-3 15-12 0-17 0-17 0 0-7 1-15 4-22z m-56 22c11 0 17 0 17 0 0 0 0 0 0 0 0 0-6 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 18 0 0 0 0 0 0 0-6 0-12 0-18 0 0 0 0 0 0 0z m18 0c0 0 5 0 17 0 0 0 0 0 0 0-12 0-17 0-17 0 0 0 0 0 0 0z m-52 0c11 0 17 0 17 0 0 7 0 14 0 22 0 0-6 0-17 0 0-8 0-15 0-22z m17 0c6 0 12 0 17 0 0 7 0 14 0 22-5 0-11 0-17 0 0-8 0-15 0-22z m17 0c6 0 12 0 18 0 0 7 0 14 0 22-6 0-12 0-18 0 0-8 0-15 0-22z m18 0c0 0 5 0 17 0 0 7 0 14 0 22-12 0-17 0-17 0 0-8 0-15 0-22z m-52 22c11 0 17 0 17 0 0 7 0 14 0 21 0 0-6 0-17 0 0-7 0-14 0-21z m17 0c6 0 12 0 17 0 0 7 0 14 0 21-5 0-11 0-17 0 0-7 0-14 0-21z m17 0c6 0 12 0 18 0 0 7 0 14 0 21-6 0-12 0-18 0 0-7 0-14 0-21z m18 0c0 0 5 0 17 0 0 7 0 14 0 21-12 0-17 0-17 0 0-7 0-14 0-21z m-52 21c11 0 17 0 17 0 0 14 0 28 0 42 0 0-6 0-17 0 0-14 0-28 0-42z m17 0c6 0 12 0 17 0 0 14 0 28 0 42-5 0-11 0-17 0 0-14 0-28 0-42z m17 0c6 0 12 0 18 0 0 14 0 28 0 42-6 0-12 0-18 0 0-14 0-28 0-42z m18 0c0 0 5 0 17 0 0 14 0 28 0 42-12 0-17 0-17 0 0-14 0-28 0-42z m-52 42c11 0 17 0 17 0 0 28 0 57 0 85 0 0-6 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 17 0 0 28 0 57 0 85-5 0-11 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 18 0 0 28 0 57 0 85-6 0-12 0-18 0 0-28 0-57 0-85z m18 0c0 0 5 0 17 0 0 28 0 57 0 85-12 0-17 0-17 0 0-28 0-57 0-85z m-52 85c11 0 17 0 17 0 0 28 0 57 0 85 0 0-6 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 17 0 0 28 0 57 0 85-5 0-11 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 18 0 0 28 0 57 0 85-6 0-12 0-18 0 0-28 0-57 0-85z m18 0c0 0 5 0 17 0 0 28 0 57 0 85-11 0-17 0-17 0 0-28 0-57 0-85z m-52 85c11 0 17 0 17 0 0 28 0 57 0 85 0 0-6 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 17 0 0 28 0 57 0 85-5 0-11 0-17 0 0-28 0-57 0-85z m17 0c6 0 12 0 18 0 0 28 0 57 0 85-6 0-12 0-18 0 0-28 0-57 0-85z m18 0c0 0 6 0 17 0 0 28 0 57 0 85-11 0-17 0-17 0 0-28 0-57 0-85z m-52 85c11 0 17 0 17 0 0 0 0 0 0 0 0 0-6 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 17 0 0 0 0 0 0 0-5 0-11 0-17 0 0 0 0 0 0 0z m17 0c6 0 12 0 18 0 0 0 0 0 0 0-6 0-12 0-18 0 0 0 0 0 0 0z m18 0c0 0 6 0 17 0 0 0 0 0 0 0-11 0-17 0-17 0 0 0 0 0 0 0z m-52 0c11 0 17 0 17 0 0 12 2 24 7 35 0 0-5 3-16 7-6-13-8-28-8-42z m17 0c6 0 12 0 17 0 0 10 2 20 6 29-5 2-11 4-16 6-5-11-7-23-7-35z m17 0c6 0 12 0 18 0 0 8 1 15 4 22-5 2-11 4-16 7-4-9-6-19-6-29z m18 0c0 0 6 0 17 0 0 5 1 11 3 15-11 5-16 7-16 7-3-7-4-14-4-22z m-44 42c11-4 16-7 16-7 5 12 12 22 21 30 0 0-4 4-12 13-11-10-19-23-25-36z m16-7c5-2 11-4 16-6 4 9 10 17 17 24-4 4-8 8-12 12-9-8-16-18-21-30z m16-6c5-3 11-5 16-7 3 7 7 13 13 18-4 4-8 8-12 13-7-7-13-15-17-24z m16-7c0 0 5-2 16-7 2 5 5 9 9 13-8 8-12 12-12 12-6-5-10-11-13-18z m-23 56c8-9 12-13 12-13 4 4 9 8 14 11 0 0-3 5-9 15-6-4-12-8-17-13z m17 13c6-10 9-15 9-15 5 4 10 6 16 8 0 0-2 6-6 17-7-3-13-6-19-10z m-5-26c4-4 8-8 12-12 3 3 7 6 11 9-3 5-6 9-9 14-5-3-10-7-14-11z m14 11c3-5 6-9 9-14 4 2 9 5 13 6-2 6-4 11-6 16-6-2-11-4-16-8z m-2-23c4-5 8-9 12-13 2 3 5 5 9 7-4 5-7 10-10 15-4-3-8-6-11-9z m11 9c3-5 6-10 10-15 3 2 6 4 10 5-2 6-5 11-7 16-4-1-9-4-13-6z m1-22c0 0 4-4 12-12 1 1 4 3 6 4-6 10-9 15-9 15-4-2-7-4-9-7z m9 7c0 0 3-5 9-15 2 2 4 3 7 4-4 11-6 16-6 16-4-1-7-3-10-5z m-9 54c4-11 6-17 6-17 11 5 23 7 36 7 0 0 0 6 0 17-14 0-29-2-42-7z m6-17c2-5 4-10 6-16 10 4 19 6 29 5 0 6 0 12 1 18-13 0-25-2-36-7z m6-16c2-5 5-10 7-16 7 3 14 4 22 4 0 6 0 12 0 17-10 1-19-1-29-5z m7-16c0 0 2-5 6-16 5 2 10 3 15 3 1 11 1 17 1 17-8 0-15-1-22-4z m23 56c0-11 0-17 0-17 11-1 23-3 33-8 0 1 3 6 7 16-13 6-26 9-40 9z m40-9c-4-10-7-15-7-16 11-4 20-11 28-19 0 0 4 4 12 12-9 10-20 18-33 23z m-40-8c-1-6-1-12-1-18 9 0 19-2 27-6 2 6 5 11 7 16-10 5-22 7-33 8z m33-8c-2-5-5-10-7-16 8-3 16-9 23-15 4 4 8 8 12 12-8 8-17 15-28 19z m-34-10c0-5 0-11 0-17 7 0 14-2 20-4 2 5 5 10 7 15-8 4-18 6-27 6z m27-6c-2-5-5-10-7-15 6-3 12-7 17-12 5 4 9 8 13 12-7 6-15 12-23 15z m-27-11c0 0 0-6-1-17 5 0 10-1 14-3 4 10 7 15 7 16-6 2-13 4-20 4z m20-4c0-1-3-6-7-16 4-2 8-5 12-9 8 8 12 13 12 13-5 5-11 9-17 12z m54 24c-8-8-12-12-12-12 0 0 0 0 0 0 0 0 4 4 12 12 0 0 0 0 0 0z m-12-12c-4-4-8-8-12-12 0 0 0 0 0 0 4 4 8 8 12 12 0 0 0 0 0 0z m-12-12c-4-4-8-8-13-12 0 0 0-1 0-1 5 5 9 9 13 13 0 0 0 0 0 0z m-13-12c0 0-4-5-12-13 0 0 0 0 0 0 8 8 12 12 12 12 0 0 0 1 0 1z m37 36c-8-8-12-12-12-12 22-21 43-43 65-65 0 0 4 5 12 13-22 21-43 43-65 64z m65-64c-8-8-12-13-12-13 21-21 43-43 64-64 0 0 4 4 12 12-21 22-43 43-64 65z m64-65c-8-8-12-12-12-12 22-22 43-43 65-65 0 0 4 4 12 13-22 21-43 43-65 64z m65-64c-8-9-12-13-12-13 21-21 43-43 64-64 0 0 4 4 13 12-22 22-44 43-65 65z m-206 181c-4-4-8-8-12-12 21-22 43-43 64-65 4 4 8 8 13 12-22 22-43 44-65 65z m65-65c-5-4-9-8-13-12 22-21 43-43 65-64 4 4 8 8 12 12-21 21-43 43-64 64z m64-64c-4-4-8-8-12-12 21-22 43-43 64-65 5 4 9 8 13 12-22 22-43 43-65 65z m65-65c-4-4-8-8-13-12 22-21 43-43 65-64 4 4 8 8 12 12-21 21-43 43-64 64z m-206 182c-4-4-8-8-13-13 22-21 44-43 65-64 4 4 8 8 12 12-21 22-43 43-64 65z m64-65c-4-4-8-8-12-12 22-22 43-43 65-65 4 4 8 9 12 13-22 21-43 43-65 64z m65-64c-4-4-8-9-12-13 21-21 43-43 64-64 4 4 8 8 12 12-21 22-43 43-64 65z m64-65c-4-4-8-8-12-12 22-22 43-43 65-65 4 4 8 8 12 13-22 21-43 43-65 64z m-206 181c0 0-4-4-12-12 22-21 43-43 65-64 8 8 12 12 12 12-21 21-43 43-65 64z m65-64c0 0-4-4-12-12 21-22 43-43 64-65 9 8 13 12 13 12-22 22-43 43-65 65z m65-65c0 0-4-4-13-12 22-21 43-43 65-64 8 8 12 12 12 12-21 21-43 43-64 64z m64-64c0 0-4-4-12-12 21-22 43-43 64-65 9 8 13 12 13 12-22 22-43 43-65 65z m102-28c-9-8-13-12-13-12 0 0 0 0 0 0 0 0 4 4 13 12 0 0 0 0 0 0z m-13-12c-4-4-8-8-12-12 0 0 0-1 0-1 4 5 8 9 12 13 0 0 0 0 0 0z m-12-12c-4-5-8-9-12-13 0 0 0 0 0 0 4 4 8 8 12 12 0 0 0 1 0 1z m-12-13c0 0-4-4-13-12 0 0 0 0 0 0 9 8 13 12 13 12 0 0 0 0 0 0z m37 37c-9-8-13-12-13-12 11-11 25-17 40-17 0 0 0 6 0 18-10 0-20 4-27 11z m-13-12c-4-4-8-8-12-13 14-13 33-21 52-21 0 6 0 12 0 17-15 0-29 6-40 17z m-12-13c-4-4-8-8-12-12 8-8 18-15 29-19 2 5 5 10 7 16-9 3-17 9-24 15z m24-15c-2-6-5-11-7-16 11-5 23-7 35-7 0 5 0 11 0 17-10 0-19 2-28 6z m-36 3c0 0-4-4-13-12 10-10 22-18 36-23 4 10 6 15 6 16-11 4-21 11-29 19z m29-19c0-1-2-6-6-16 13-6 27-9 41-9 0 12 0 18 0 18-12 0-24 2-35 7z m35 45c0-12 0-18 0-18 0 0 1 0 3 1 0 0-1 5-1 17-1 0-2 0-2 0z m2 0c0-12 1-17 1-17 0 0 0 0 0 0 0 0-1 5-1 17 0 0 0 0 0 0z m0 0c0-12 1-17 1-17 2-1 4 0 8 0 0 1-1 6-3 17-3 0-5 0-6 0z m6 0c2-11 3-16 3-17 0 0 0 0 0 0 0 1-1 6-3 17 0 0 0 0 0 0z m0 0c2-11 3-16 3-17 3 1 8 2 13 5-1 0-4 5-9 15-3-1-5-2-7-3z m7 3c5-10 8-15 9-15 5 2 10 6 16 11 0 0-5 4-13 12-4-4-8-7-12-8z m-15-21c0-5 0-11 0-17 0 0 1 0 4 0-1 6-1 12-1 18-2-1-3-1-3-1z m3 1c0-6 0-12 1-18 2 0 6 1 10 1-1 6-2 12-3 17-4 0-6-1-8 0z m8 0c1-5 2-11 3-17 5 2 11 3 17 6-2 5-5 11-7 16-5-3-10-4-13-5z m13 5c2-5 5-11 7-16 7 3 14 8 21 15-4 4-8 8-12 12-6-5-11-9-16-11z m-24-23c0-6 0-12 0-17 0 0 1 0 4 0 0 6 0 11 0 17-3 0-4 0-4 0z m4 0c0-6 0-11 0-17 3 0 8 0 14 1-1 6-3 12-4 17-4 0-8-1-10-1z m10 1c1-5 3-11 4-17 5 2 13 3 21 7-3 6-5 11-8 16-6-3-12-4-17-6z m17 6c3-5 5-10 8-16 8 4 17 10 25 18-4 4-8 8-12 13-7-7-14-12-21-15z m-31-24c0 0 0-6 0-18 0 0 2 0 5 1 0 11-1 17-1 17-3 0-4 0-4 0z m4 0c0 0 1-6 1-17 4 0 9 0 16 1-2 11-3 17-3 17-6-1-11-1-14-1z m14 1c0 0 1-6 3-17 7 2 16 4 25 9-5 10-7 15-7 15-8-4-16-5-21-7z m21 7c0 0 2-5 7-15 10 4 20 11 30 21-8 8-12 12-12 12-8-8-17-14-25-18z" horiz-adv-x="1332" />
</font>
</defs>
</svg>
{
"IcoMoonType": "selection",
"icons": [
{
"icon": {
"paths": [
"M298.459 176.078l-292.215 169.21v673.093l39.337-21.854c21.229-12.488 64.312-37.463 96.156-54.946l57.444-33.093 3.746-117.385 192.937-111.141c105.522-61.815 194.185-111.766 196.683-111.766 1.873 0 91.161 49.951 197.307 111.766l193.561 111.766 6.244 116.137 95.532 54.946 94.907 54.322v-671.22l-290.966-168.585c-160.468-92.41-292.839-168.585-295.337-169.21-1.873-0.624-134.868 74.927-295.337 167.961zM792.976 342.166l190.439 110.517 1.873 58.693c1.249 49.327 0 58.068-7.493 54.946-4.995-1.873-91.785-51.824-193.561-109.893-101.151-58.693-187.317-106.771-191.688-106.771s-92.41 49.327-196.683 109.268c-104.273 59.941-190.439 109.268-192.312 109.268-2.498 0-3.746-26.224-3.746-58.068l0.624-57.444 191.688-110.517c105.522-60.566 196.059-110.517 201.054-110.517s94.907 49.951 199.805 110.517z"
],
"attrs": [
{}
],
"width": 1180,
"isMulticolor": false,
"isMulticolor2": false,
"grid": 0,
"tags": [
"icon-white1"
]
},
"attrs": [
{}
],
"properties": {
"order": 10,
"id": 0,
"name": "icon-mageplaza",
"prevSize": 32,
"code": 59648
},
"setIdx": 0,
"setId": 3,
"iconIdx": 0
}
],
"height": 1024,
"metadata": {
"name": "icomoon"
},
"preferences": {
"showGlyphs": true,
"showQuickUse": true,
"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
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
require([
'jquery',
'underscore'
], function ($, _) {
'use strict';
var mpHelpDb = {
'admin/system_config/index': [
{
'css_selector': '#general_single_store_mode_enabled',
'type': 'link',
'text': 'How to enable Single Store Mode, {link}.',
'url': 'https://www.mageplaza.com/kb/how-enable-single-store-mode-magento-2.html',
'anchor': 'learn more'
}
],
'theme/design_config/edit/scope/websites/scope_id': [
{
'css_selector': 'input[name*="header_welcome"]',
'type': 'link',
'text': 'How to change the welcome message, {link}.',
'url': 'https://www.mageplaza.com/kb/how-change-welcome-message-magento-2.html',
'anchor': 'learn more'
}
],
'system_config/edit/section/contact': [
{
'css_selector': '#contact_contact_enabled',
'type': 'link',
'text': 'How to configure Contact Us form, {link}.',
'url': 'https://www.mageplaza.com/kb/how-configure-contacts-email-address-magento-2.html',
'anchor': 'learn more'
}
],
//Not Configuration
'catalog/product/edit': [
{
'css_selector': '#media_gallery_content',
'type': 'link',
'text': 'How to upload Images Product, {link}.',
'url': 'https://www.mageplaza.com/kb/how-to-upload-images-product-in-magento-2.html',
'anchor': 'learn more'
}
],
'type/configurable/key/': [
{
'css_selector': '.page-actions-placeholder',
'type': 'link',
'text': 'Create Configurable Product, {link}.',
'url': 'https://www.mageplaza.com/kb/how-create-configurable-product-magento-2.html',
'anchor': 'learn more'
}
],
'system_config/edit/section/general': [
{
'css_selector': '#general_region_state_required',
'type': 'link',
'text': 'How to setup State, {link}.',
'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#set-up-state',
'anchor': 'learn more'
},
{
'css_selector': '#general_country_default',
'type': 'link',
'text': 'How to setup Country, {link}.',
'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#set-up-country',
'anchor': 'learn more'
},
{
'css_selector': '#general_locale_timezone',
'type': 'link',
'text': 'How to setup Locale, {link}.',
'url': 'https://www.mageplaza.com/kb/how-setup-locale-state-country-magento-2.html#login-magento-2',
'anchor': 'learn more'
},
{
'css_selector': '#general_store_information_name',
'type': 'link',
'text': 'How to setup store information, {link}.',
'url': 'https://www.mageplaza.com/kb/how-setup-store-information-magento-2.html',
'anchor': 'learn more'
}
],
'system_config/edit/section/trans_email': [
{
'css_selector': '#trans_email_ident_sales_email',
'type': 'link',
'text': 'About 79% of visitors drop their shopping cart at the checkout page. This proven abandoned cart email templates that can improve that number, {link}.',
'url': 'https://pages.mageplaza.com/abandoned-cart-email-templates-for-magento/',
'anchor': 'learn more'
},
],
'system_config/edit/section/newsletter': [
{
'css_selector': '#newsletter_subscription_success_email_template',
'type': 'link',
'text': 'Welcome emails generate 4 times the total open rates and 5 times the click rates compared to other bulk promotions. Get proven welcome email templates, {link}.',
'url': 'https://pages.mageplaza.com/welcome-email-templates-for-magento-2/',
'anchor': 'get a copy'
}
],
'admin/email_template/new': [
{
'css_selector': '#template_select',
'type': 'link',
'text': 'Get {link} templates that convert',
'url': 'https://pages.mageplaza.com/bundle-of-email-follow-up-templates/',
'anchor': 'bundle of follow up emails'
}
]
};
function buildHtml(data) {
var link = '<a href="' + data.url + '?utm_source=store&utm_medium=link&utm_campaign=mageplaza-helps" target="_blank">' + data.anchor + '</a>';
var text = data.text.replace('{link}', link);
return '<p class="note">' + text + '</p>';
}
var url = window.location.href;
for (var path in mpHelpDb) {
if (mpHelpDb.hasOwnProperty(path) && url.search(path)) {
var datas = mpHelpDb[path];
_.each(datas, function (data) {
var html = buildHtml(data);
html && $(html).insertAfter(data.css_selector); //only insert if html is not empty
});
}
}
});
\ No newline at end of file
/**
* jscolor - JavaScript Color Picker
*
* @link http://jscolor.com
* @license For open source use: GPLv3
* For commercial use: JSColor Commercial License
* @author Jan Odvarko
*
* See usage examples at http://jscolor.com/examples/
*/"use strict";window.jscolor||(window.jscolor=function(){var e={register:function(){e.attachDOMReadyEvent(e.init),e.attachEvent(document,"mousedown",e.onDocumentMouseDown),e.attachEvent(document,"touchstart",e.onDocumentTouchStart),e.attachEvent(window,"resize",e.onWindowResize)},init:function(){e.jscolor.lookupClass&&e.jscolor.installByClassName(e.jscolor.lookupClass)},tryInstallOnElements:function(t,n){var r=new RegExp("(^|\\s)("+n+")(\\s*(\\{[^}]*\\})|\\s|$)","i");for(var i=0;i<t.length;i+=1){if(t[i].type!==undefined&&t[i].type.toLowerCase()=="color"&&e.isColorAttrSupported)continue;var s;if(!t[i].jscolor&&t[i].className&&(s=t[i].className.match(r))){var o=t[i],u=null,a=e.getDataAttr(o,"jscolor");a!==null?u=a:s[4]&&(u=s[4]);var f={};if(u)try{f=(new Function("return ("+u+")"))()}catch(l){e.warn("Error parsing jscolor options: "+l+":\n"+u)}o.jscolor=new e.jscolor(o,f)}}},isColorAttrSupported:function(){var e=document.createElement("input");if(e.setAttribute){e.setAttribute("type","color");if(e.type.toLowerCase()=="color")return!0}return!1}(),isCanvasSupported:function(){var e=document.createElement("canvas");return!!e.getContext&&!!e.getContext("2d")}(),fetchElement:function(e){return typeof e=="string"?document.getElementById(e):e},isElementType:function(e,t){return e.nodeName.toLowerCase()===t.toLowerCase()},getDataAttr:function(e,t){var n="data-"+t,r=e.getAttribute(n);return r!==null?r:null},attachEvent:function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent&&e.attachEvent("on"+t,n)},detachEvent:function(e,t,n){e.removeEventListener?e.removeEventListener(t,n,!1):e.detachEvent&&e.detachEvent("on"+t,n)},_attachedGroupEvents:{},attachGroupEvent:function(t,n,r,i){e._attachedGroupEvents.hasOwnProperty(t)||(e._attachedGroupEvents[t]=[]),e._attachedGroupEvents[t].push([n,r,i]),e.attachEvent(n,r,i)},detachGroupEvents:function(t){if(e._attachedGroupEvents.hasOwnProperty(t)){for(var n=0;n<e._attachedGroupEvents[t].length;n+=1){var r=e._attachedGroupEvents[t][n];e.detachEvent(r[0],r[1],r[2])}delete e._attachedGroupEvents[t]}},attachDOMReadyEvent:function(e){var t=!1,n=function(){t||(t=!0,e())};if(document.readyState==="complete"){setTimeout(n,1);return}if(document.addEventListener)document.addEventListener("DOMContentLoaded",n,!1),window.addEventListener("load",n,!1);else if(document.attachEvent){document.attachEvent("onreadystatechange",function(){document.readyState==="complete"&&(document.detachEvent("onreadystatechange",arguments.callee),n())}),window.attachEvent("onload",n);if(document.documentElement.doScroll&&window==window.top){var r=function(){if(!document.body)return;try{document.documentElement.doScroll("left"),n()}catch(e){setTimeout(r,1)}};r()}}},warn:function(e){window.console&&window.console.warn&&window.console.warn(e)},preventDefault:function(e){e.preventDefault&&e.preventDefault(),e.returnValue=!1},captureTarget:function(t){t.setCapture&&(e._capturedTarget=t,e._capturedTarget.setCapture())},releaseTarget:function(){e._capturedTarget&&(e._capturedTarget.releaseCapture(),e._capturedTarget=null)},fireEvent:function(e,t){if(!e)return;if(document.createEvent){var n=document.createEvent("HTMLEvents");n.initEvent(t,!0,!0),e.dispatchEvent(n)}else if(document.createEventObject){var n=document.createEventObject();e.fireEvent("on"+t,n)}else e["on"+t]&&e["on"+t]()},classNameToList:function(e){return e.replace(/^\s+|\s+$/g,"").split(/\s+/)},hasClass:function(e,t){return t?-1!=(" "+e.className.replace(/\s+/g," ")+" ").indexOf(" "+t+" "):!1},setClass:function(t,n){var r=e.classNameToList(n);for(var i=0;i<r.length;i+=1)e.hasClass(t,r[i])||(t.className+=(t.className?" ":"")+r[i])},unsetClass:function(t,n){var r=e.classNameToList(n);for(var i=0;i<r.length;i+=1){var s=new RegExp("^\\s*"+r[i]+"\\s*|"+"\\s*"+r[i]+"\\s*$|"+"\\s+"+r[i]+"(\\s+)","g");t.className=t.className.replace(s,"$1")}},getStyle:function(e){return window.getComputedStyle?window.getComputedStyle(e):e.currentStyle},setStyle:function(){var e=document.createElement("div"),t=function(t){for(var n=0;n<t.length;n+=1)if(t[n]in e.style)return t[n]},n={borderRadius:t(["borderRadius","MozBorderRadius","webkitBorderRadius"]),boxShadow:t(["boxShadow","MozBoxShadow","webkitBoxShadow"])};return function(e,t,r){switch(t.toLowerCase()){case"opacity":var i=Math.round(parseFloat(r)*100);e.style.opacity=r,e.style.filter="alpha(opacity="+i+")";break;default:e.style[n[t]]=r}}}(),setBorderRadius:function(t,n){e.setStyle(t,"borderRadius",n||"0")},setBoxShadow:function(t,n){e.setStyle(t,"boxShadow",n||"none")},getElementPos:function(t,n){var r=0,i=0,s=t.getBoundingClientRect();r=s.left,i=s.top;if(!n){var o=e.getViewPos();r+=o[0],i+=o[1]}return[r,i]},getElementSize:function(e){return[e.offsetWidth,e.offsetHeight]},getAbsPointerPos:function(e){e||(e=window.event);var t=0,n=0;return typeof e.changedTouches!="undefined"&&e.changedTouches.length?(t=e.changedTouches[0].clientX,n=e.changedTouches[0].clientY):typeof e.clientX=="number"&&(t=e.clientX,n=e.clientY),{x:t,y:n}},getRelPointerPos:function(e){e||(e=window.event);var t=e.target||e.srcElement,n=t.getBoundingClientRect(),r=0,i=0,s=0,o=0;return typeof e.changedTouches!="undefined"&&e.changedTouches.length?(s=e.changedTouches[0].clientX,o=e.changedTouches[0].clientY):typeof e.clientX=="number"&&(s=e.clientX,o=e.clientY),r=s-n.left,i=o-n.top,{x:r,y:i}},getViewPos:function(){var e=document.documentElement;return[(window.pageXOffset||e.scrollLeft)-(e.clientLeft||0),(window.pageYOffset||e.scrollTop)-(e.clientTop||0)]},getViewSize:function(){var e=document.documentElement;return[window.innerWidth||e.clientWidth,window.innerHeight||e.clientHeight]},redrawPosition:function(){if(e.picker&&e.picker.owner){var t=e.picker.owner,n,r;t.fixed?(n=e.getElementPos(t.targetElement,!0),r=[0,0]):(n=e.getElementPos(t.targetElement),r=e.getViewPos());var i=e.getElementSize(t.targetElement),s=e.getViewSize(),o=e.getPickerOuterDims(t),u,a,f;switch(t.position.toLowerCase()){case"left":u=1,a=0,f=-1;break;case"right":u=1,a=0,f=1;break;case"top":u=0,a=1,f=-1;break;default:u=0,a=1,f=1}var l=(i[a]+o[a])/2;if(!t.smartPosition)var c=[n[u],n[a]+i[a]-l+l*f];else var c=[-r[u]+n[u]+o[u]>s[u]?-r[u]+n[u]+i[u]/2>s[u]/2&&n[u]+i[u]-o[u]>=0?n[u]+i[u]-o[u]:n[u]:n[u],-r[a]+n[a]+i[a]+o[a]-l+l*f>s[a]?-r[a]+n[a]+i[a]/2>s[a]/2&&n[a]+i[a]-l-l*f>=0?n[a]+i[a]-l-l*f:n[a]+i[a]-l+l*f:n[a]+i[a]-l+l*f>=0?n[a]+i[a]-l+l*f:n[a]+i[a]-l-l*f];var h=c[u],p=c[a],d=t.fixed?"fixed":"absolute",v=(c[0]+o[0]>n[0]||c[0]<n[0]+i[0])&&c[1]+o[1]<n[1]+i[1];e._drawPosition(t,h,p,d,v)}},_drawPosition:function(t,n,r,i,s){var o=s?0:t.shadowBlur;e.picker.wrap.style.position=i,e.picker.wrap.style.left=n+"px",e.picker.wrap.style.top=r+"px",e.setBoxShadow(e.picker.boxS,t.shadow?new e.BoxShadow(0,o,t.shadowBlur,0,t.shadowColor):null)},getPickerDims:function(t){var n=!!e.getSliderComponent(t),r=[2*t.insetWidth+2*t.padding+t.width+(n?2*t.insetWidth+e.getPadToSliderPadding(t)+t.sliderSize:0),2*t.insetWidth+2*t.padding+t.height+(t.closable?2*t.insetWidth+t.padding+t.buttonHeight:0)];return r},getPickerOuterDims:function(t){var n=e.getPickerDims(t);return[n[0]+2*t.borderWidth,n[1]+2*t.borderWidth]},getPadToSliderPadding:function(e){return Math.max(e.padding,1.5*(2*e.pointerBorderWidth+e.pointerThickness))},getPadYComponent:function(e){switch(e.mode.charAt(1).toLowerCase()){case"v":return"v"}return"s"},getSliderComponent:function(e){if(e.mode.length>2)switch(e.mode.charAt(2).toLowerCase()){case"s":return"s";case"v":return"v"}return null},onDocumentMouseDown:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,"mouse"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onDocumentTouchStart:function(t){t||(t=window.event);var n=t.target||t.srcElement;n._jscLinkedInstance?n._jscLinkedInstance.showOnClick&&n._jscLinkedInstance.show():n._jscControlName?e.onControlPointerStart(t,n,n._jscControlName,"touch"):e.picker&&e.picker.owner&&e.picker.owner.hide()},onWindowResize:function(t){e.redrawPosition()},onParentScroll:function(t){e.picker&&e.picker.owner&&e.picker.owner.hide()},_pointerMoveEvent:{mouse:"mousemove",touch:"touchmove"},_pointerEndEvent:{mouse:"mouseup",touch:"touchend"},_pointerOrigin:null,_capturedTarget:null,onControlPointerStart:function(t,n,r,i){var s=n._jscInstance;e.preventDefault(t),e.captureTarget(n);var o=function(s,o){e.attachGroupEvent("drag",s,e._pointerMoveEvent[i],e.onDocumentPointerMove(t,n,r,i,o)),e.attachGroupEvent("drag",s,e._pointerEndEvent[i],e.onDocumentPointerEnd(t,n,r,i))};o(document,[0,0]);if(window.parent&&window.frameElement){var u=window.frameElement.getBoundingClientRect(),a=[-u.left,-u.top];o(window.parent.window.document,a)}var f=e.getAbsPointerPos(t),l=e.getRelPointerPos(t);e._pointerOrigin={x:f.x-l.x,y:f.y-l.y};switch(r){case"pad":switch(e.getSliderComponent(s)){case"s":s.hsv[1]===0&&s.fromHSV(null,100,null);break;case"v":s.hsv[2]===0&&s.fromHSV(null,null,100)}e.setPad(s,t,0,0);break;case"sld":e.setSld(s,t,0)}e.dispatchFineChange(s)},onDocumentPointerMove:function(t,n,r,i,s){return function(t){var i=n._jscInstance;switch(r){case"pad":t||(t=window.event),e.setPad(i,t,s[0],s[1]),e.dispatchFineChange(i);break;case"sld":t||(t=window.event),e.setSld(i,t,s[1]),e.dispatchFineChange(i)}}},onDocumentPointerEnd:function(t,n,r,i){return function(t){var r=n._jscInstance;e.detachGroupEvents("drag"),e.releaseTarget(),e.dispatchChange(r)}},dispatchChange:function(t){t.valueElement&&e.isElementType(t.valueElement,"input")&&e.fireEvent(t.valueElement,"change")},dispatchFineChange:function(e){if(e.onFineChange){var t;typeof e.onFineChange=="string"?t=new Function(e.onFineChange):t=e.onFineChange,t.call(e)}},setPad:function(t,n,r,i){var s=e.getAbsPointerPos(n),o=r+s.x-e._pointerOrigin.x-t.padding-t.insetWidth,u=i+s.y-e._pointerOrigin.y-t.padding-t.insetWidth,a=o*(360/(t.width-1)),f=100-u*(100/(t.height-1));switch(e.getPadYComponent(t)){case"s":t.fromHSV(a,f,null,e.leaveSld);break;case"v":t.fromHSV(a,null,f,e.leaveSld)}},setSld:function(t,n,r){var i=e.getAbsPointerPos(n),s=r+i.y-e._pointerOrigin.y-t.padding-t.insetWidth,o=100-s*(100/(t.height-1));switch(e.getSliderComponent(t)){case"s":t.fromHSV(null,o,null,e.leavePad);break;case"v":t.fromHSV(null,null,o,e.leavePad)}},_vmlNS:"jsc_vml_",_vmlCSS:"jsc_vml_css_",_vmlReady:!1,initVML:function(){if(!e._vmlReady){var t=document;t.namespaces[e._vmlNS]||t.namespaces.add(e._vmlNS,"urn:schemas-microsoft-com:vml");if(!t.styleSheets[e._vmlCSS]){var n=["shape","shapetype","group","background","path","formulas","handles","fill","stroke","shadow","textbox","textpath","imagedata","line","polyline","curve","rect","roundrect","oval","arc","image"],r=t.createStyleSheet();r.owningElement.id=e._vmlCSS;for(var i=0;i<n.length;i+=1)r.addRule(e._vmlNS+"\\:"+n[i],"behavior:url(#default#VML);")}e._vmlReady=!0}},createPalette:function(){var t={elm:null,draw:null};if(e.isCanvasSupported){var n=document.createElement("canvas"),r=n.getContext("2d"),i=function(e,t,i){n.width=e,n.height=t,r.clearRect(0,0,n.width,n.height);var s=r.createLinearGradient(0,0,n.width,0);s.addColorStop(0,"#F00"),s.addColorStop(1/6,"#FF0"),s.addColorStop(2/6,"#0F0"),s.addColorStop(.5,"#0FF"),s.addColorStop(4/6,"#00F"),s.addColorStop(5/6,"#F0F"),s.addColorStop(1,"#F00"),r.fillStyle=s,r.fillRect(0,0,n.width,n.height);var o=r.createLinearGradient(0,0,0,n.height);switch(i.toLowerCase()){case"s":o.addColorStop(0,"rgba(255,255,255,0)"),o.addColorStop(1,"rgba(255,255,255,1)");break;case"v":o.addColorStop(0,"rgba(0,0,0,0)"),o.addColorStop(1,"rgba(0,0,0,1)")}r.fillStyle=o,r.fillRect(0,0,n.width,n.height)};t.elm=n,t.draw=i}else{e.initVML();var s=document.createElement("div");s.style.position="relative",s.style.overflow="hidden";var o=document.createElement(e._vmlNS+":fill");o.type="gradient",o.method="linear",o.angle="90",o.colors="16.67% #F0F, 33.33% #00F, 50% #0FF, 66.67% #0F0, 83.33% #FF0";var u=document.createElement(e._vmlNS+":rect");u.style.position="absolute",u.style.left="-1px",u.style.top="-1px",u.stroked=!1,u.appendChild(o),s.appendChild(u);var a=document.createElement(e._vmlNS+":fill");a.type="gradient",a.method="linear",a.angle="180",a.opacity="0";var f=document.createElement(e._vmlNS+":rect");f.style.position="absolute",f.style.left="-1px",f.style.top="-1px",f.stroked=!1,f.appendChild(a),s.appendChild(f);var i=function(e,t,n){s.style.width=e+"px",s.style.height=t+"px",u.style.width=f.style.width=e+1+"px",u.style.height=f.style.height=t+1+"px",o.color="#F00",o.color2="#F00";switch(n.toLowerCase()){case"s":a.color=a.color2="#FFF";break;case"v":a.color=a.color2="#000"}};t.elm=s,t.draw=i}return t},createSliderGradient:function(){var t={elm:null,draw:null};if(e.isCanvasSupported){var n=document.createElement("canvas"),r=n.getContext("2d"),i=function(e,t,i,s){n.width=e,n.height=t,r.clearRect(0,0,n.width,n.height);var o=r.createLinearGradient(0,0,0,n.height);o.addColorStop(0,i),o.addColorStop(1,s),r.fillStyle=o,r.fillRect(0,0,n.width,n.height)};t.elm=n,t.draw=i}else{e.initVML();var s=document.createElement("div");s.style.position="relative",s.style.overflow="hidden";var o=document.createElement(e._vmlNS+":fill");o.type="gradient",o.method="linear",o.angle="180";var u=document.createElement(e._vmlNS+":rect");u.style.position="absolute",u.style.left="-1px",u.style.top="-1px",u.stroked=!1,u.appendChild(o),s.appendChild(u);var i=function(e,t,n,r){s.style.width=e+"px",s.style.height=t+"px",u.style.width=e+1+"px",u.style.height=t+1+"px",o.color=n,o.color2=r};t.elm=s,t.draw=i}return t},leaveValue:1,leaveStyle:2,leavePad:4,leaveSld:8,BoxShadow:function(){var e=function(e,t,n,r,i,s){this.hShadow=e,this.vShadow=t,this.blur=n,this.spread=r,this.color=i,this.inset=!!s};return e.prototype.toString=function(){var e=[Math.round(this.hShadow)+"px",Math.round(this.vShadow)+"px",Math.round(this.blur)+"px",Math.round(this.spread)+"px",this.color];return this.inset&&e.push("inset"),e.join(" ")},e}(),jscolor:function(t,n){function i(e,t,n){e/=255,t/=255,n/=255;var r=Math.min(Math.min(e,t),n),i=Math.max(Math.max(e,t),n),s=i-r;if(s===0)return[null,0,100*i];var o=e===r?3+(n-t)/s:t===r?5+(e-n)/s:1+(t-e)/s;return[60*(o===6?0:o),100*(s/i),100*i]}function s(e,t,n){var r=255*(n/100);if(e===null)return[r,r,r];e/=60,t/=100;var i=Math.floor(e),s=i%2?e-i:1-(e-i),o=r*(1-t),u=r*(1-t*s);switch(i){case 6:case 0:return[r,u,o];case 1:return[u,r,o];case 2:return[o,r,u];case 3:return[o,u,r];case 4:return[u,o,r];case 5:return[r,o,u]}}function o(){e.unsetClass(d.targetElement,d.activeClass),e.picker.wrap.parentNode.removeChild(e.picker.wrap),delete e.picker.owner}function u(){function l(){var e=d.insetColor.split(/\s+/),n=e.length<2?e[0]:e[1]+" "+e[0]+" "+e[0]+" "+e[1];t.btn.style.borderColor=n}d._processParentElementsInDOM(),e.picker||(e.picker={owner:null,wrap:document.createElement("div"),box:document.createElement("div"),boxS:document.createElement("div"),boxB:document.createElement("div"),pad:document.createElement("div"),padB:document.createElement("div"),padM:document.createElement("div"),padPal:e.createPalette(),cross:document.createElement("div"),crossBY:document.createElement("div"),crossBX:document.createElement("div"),crossLY:document.createElement("div"),crossLX:document.createElement("div"),sld:document.createElement("div"),sldB:document.createElement("div"),sldM:document.createElement("div"),sldGrad:e.createSliderGradient(),sldPtrS:document.createElement("div"),sldPtrIB:document.createElement("div"),sldPtrMB:document.createElement("div"),sldPtrOB:document.createElement("div"),btn:document.createElement("div"),btnT:document.createElement("span")},e.picker.pad.appendChild(e.picker.padPal.elm),e.picker.padB.appendChild(e.picker.pad),e.picker.cross.appendChild(e.picker.crossBY),e.picker.cross.appendChild(e.picker.crossBX),e.picker.cross.appendChild(e.picker.crossLY),e.picker.cross.appendChild(e.picker.crossLX),e.picker.padB.appendChild(e.picker.cross),e.picker.box.appendChild(e.picker.padB),e.picker.box.appendChild(e.picker.padM),e.picker.sld.appendChild(e.picker.sldGrad.elm),e.picker.sldB.appendChild(e.picker.sld),e.picker.sldB.appendChild(e.picker.sldPtrOB),e.picker.sldPtrOB.appendChild(e.picker.sldPtrMB),e.picker.sldPtrMB.appendChild(e.picker.sldPtrIB),e.picker.sldPtrIB.appendChild(e.picker.sldPtrS),e.picker.box.appendChild(e.picker.sldB),e.picker.box.appendChild(e.picker.sldM),e.picker.btn.appendChild(e.picker.btnT),e.picker.box.appendChild(e.picker.btn),e.picker.boxB.appendChild(e.picker.box),e.picker.wrap.appendChild(e.picker.boxS),e.picker.wrap.appendChild(e.picker.boxB));var t=e.picker,n=!!e.getSliderComponent(d),r=e.getPickerDims(d),i=2*d.pointerBorderWidth+d.pointerThickness+2*d.crossSize,s=e.getPadToSliderPadding(d),o=Math.min(d.borderRadius,Math.round(d.padding*Math.PI)),u="crosshair";t.wrap.style.clear="both",t.wrap.style.width=r[0]+2*d.borderWidth+"px",t.wrap.style.height=r[1]+2*d.borderWidth+"px",t.wrap.style.zIndex=d.zIndex,t.box.style.width=r[0]+"px",t.box.style.height=r[1]+"px",t.boxS.style.position="absolute",t.boxS.style.left="0",t.boxS.style.top="0",t.boxS.style.width="100%",t.boxS.style.height="100%",e.setBorderRadius(t.boxS,o+"px"),t.boxB.style.position="relative",t.boxB.style.border=d.borderWidth+"px solid",t.boxB.style.borderColor=d.borderColor,t.boxB.style.background=d.backgroundColor,e.setBorderRadius(t.boxB,o+"px"),t.padM.style.background=t.sldM.style.background="#FFF",e.setStyle(t.padM,"opacity","0"),e.setStyle(t.sldM,"opacity","0"),t.pad.style.position="relative",t.pad.style.width=d.width+"px",t.pad.style.height=d.height+"px",t.padPal.draw(d.width,d.height,e.getPadYComponent(d)),t.padB.style.position="absolute",t.padB.style.left=d.padding+"px",t.padB.style.top=d.padding+"px",t.padB.style.border=d.insetWidth+"px solid",t.padB.style.borderColor=d.insetColor,t.padM._jscInstance=d,t.padM._jscControlName="pad",t.padM.style.position="absolute",t.padM.style.left="0",t.padM.style.top="0",t.padM.style.width=d.padding+2*d.insetWidth+d.width+s/2+"px",t.padM.style.height=r[1]+"px",t.padM.style.cursor=u,t.cross.style.position="absolute",t.cross.style.left=t.cross.style.top="0",t.cross.style.width=t.cross.style.height=i+"px",t.crossBY.style.position=t.crossBX.style.position="absolute",t.crossBY.style.background=t.crossBX.style.background=d.pointerBorderColor,t.crossBY.style.width=t.crossBX.style.height=2*d.pointerBorderWidth+d.pointerThickness+"px",t.crossBY.style.height=t.crossBX.style.width=i+"px",t.crossBY.style.left=t.crossBX.style.top=Math.floor(i/2)-Math.floor(d.pointerThickness/2)-d.pointerBorderWidth+"px",t.crossBY.style.top=t.crossBX.style.left="0",t.crossLY.style.position=t.crossLX.style.position="absolute",t.crossLY.style.background=t.crossLX.style.background=d.pointerColor,t.crossLY.style.height=t.crossLX.style.width=i-2*d.pointerBorderWidth+"px",t.crossLY.style.width=t.crossLX.style.height=d.pointerThickness+"px",t.crossLY.style.left=t.crossLX.style.top=Math.floor(i/2)-Math.floor(d.pointerThickness/2)+"px",t.crossLY.style.top=t.crossLX.style.left=d.pointerBorderWidth+"px",t.sld.style.overflow="hidden",t.sld.style.width=d.sliderSize+"px",t.sld.style.height=d.height+"px",t.sldGrad.draw(d.sliderSize,d.height,"#000","#000"),t.sldB.style.display=n?"block":"none",t.sldB.style.position="absolute",t.sldB.style.right=d.padding+"px",t.sldB.style.top=d.padding+"px",t.sldB.style.border=d.insetWidth+"px solid",t.sldB.style.borderColor=d.insetColor,t.sldM._jscInstance=d,t.sldM._jscControlName="sld",t.sldM.style.display=n?"block":"none",t.sldM.style.position="absolute",t.sldM.style.right="0",t.sldM.style.top="0",t.sldM.style.width=d.sliderSize+s/2+d.padding+2*d.insetWidth+"px",t.sldM.style.height=r[1]+"px",t.sldM.style.cursor="default",t.sldPtrIB.style.border=t.sldPtrOB.style.border=d.pointerBorderWidth+"px solid "+d.pointerBorderColor,t.sldPtrOB.style.position="absolute",t.sldPtrOB.style.left=-(2*d.pointerBorderWidth+d.pointerThickness)+"px",t.sldPtrOB.style.top="0",t.sldPtrMB.style.border=d.pointerThickness+"px solid "+d.pointerColor,t.sldPtrS.style.width=d.sliderSize+"px",t.sldPtrS.style.height=m+"px",t.btn.style.display=d.closable?"block":"none",t.btn.style.position="absolute",t.btn.style.left=d.padding+"px",t.btn.style.bottom=d.padding+"px",t.btn.style.padding="0 15px",t.btn.style.height=d.buttonHeight+"px",t.btn.style.border=d.insetWidth+"px solid",l(),t.btn.style.color=d.buttonColor,t.btn.style.font="12px sans-serif",t.btn.style.textAlign="center";try{t.btn.style.cursor="pointer"}catch(c){t.btn.style.cursor="hand"}t.btn.onmousedown=function(){d.hide()},t.btnT.style.lineHeight=d.buttonHeight+"px",t.btnT.innerHTML="",t.btnT.appendChild(document.createTextNode(d.closeText)),a(),f(),e.picker.owner&&e.picker.owner!==d&&e.unsetClass(e.picker.owner.targetElement,d.activeClass),e.picker.owner=d,e.isElementType(v,"body")?e.redrawPosition():e._drawPosition(d,0,0,"relative",!1),t.wrap.parentNode!=v&&v.appendChild(t.wrap),e.setClass(d.targetElement,d.activeClass)}function a(){switch(e.getPadYComponent(d)){case"s":var t=1;break;case"v":var t=2}var n=Math.round(d.hsv[0]/360*(d.width-1)),r=Math.round((1-d.hsv[t]/100)*(d.height-1)),i=2*d.pointerBorderWidth+d.pointerThickness+2*d.crossSize,o=-Math.floor(i/2);e.picker.cross.style.left=n+o+"px",e.picker.cross.style.top=r+o+"px";switch(e.getSliderComponent(d)){case"s":var u=s(d.hsv[0],100,d.hsv[2]),a=s(d.hsv[0],0,d.hsv[2]),f="rgb("+Math.round(u[0])+","+Math.round(u[1])+","+Math.round(u[2])+")",l="rgb("+Math.round(a[0])+","+Math.round(a[1])+","+Math.round(a[2])+")";e.picker.sldGrad.draw(d.sliderSize,d.height,f,l);break;case"v":var c=s(d.hsv[0],d.hsv[1],100),f="rgb("+Math.round(c[0])+","+Math.round(c[1])+","+Math.round(c[2])+")",l="#000";e.picker.sldGrad.draw(d.sliderSize,d.height,f,l)}}function f(){var t=e.getSliderComponent(d);if(t){switch(t){case"s":var n=1;break;case"v":var n=2}var r=Math.round((1-d.hsv[n]/100)*(d.height-1));e.picker.sldPtrOB.style.top=r-(2*d.pointerBorderWidth+d.pointerThickness)-Math.floor(m/2)+"px"}}function l(){return e.picker&&e.picker.owner===d}function c(){d.importColor()}this.value=null,this.valueElement=t,this.styleElement=t,this.required=!0,this.refine=!0,this.hash=!1,this.uppercase=!0,this.onFineChange=null,this.activeClass="jscolor-active",this.minS=0,this.maxS=100,this.minV=0,this.maxV=100,this.hsv=[0,0,100],this.rgb=[255,255,255],this.width=181,this.height=101,this.showOnClick=!0,this.mode="HSV",this.position="bottom",this.smartPosition=!0,this.sliderSize=16,this.crossSize=8,this.closable=!1,this.closeText="Close",this.buttonColor="#000000",this.buttonHeight=18,this.padding=12,this.backgroundColor="#FFFFFF",this.borderWidth=1,this.borderColor="#BBBBBB",this.borderRadius=8,this.insetWidth=1,this.insetColor="#BBBBBB",this.shadow=!0,this.shadowBlur=15,this.shadowColor="rgba(0,0,0,0.2)",this.pointerColor="#4C4C4C",this.pointerBorderColor="#FFFFFF",this.pointerBorderWidth=1,this.pointerThickness=2,this.zIndex=1e3,this.container=null;for(var r in n)n.hasOwnProperty(r)&&(this[r]=n[r]);this.hide=function(){l()&&o()},this.show=function(){u()},this.redraw=function(){l()&&u()},this.importColor=function(){this.valueElement?e.isElementType(this.valueElement,"input")?this.refine?!this.required&&/^\s*$/.test(this.valueElement.value)?(this.valueElement.value="",this.styleElement&&(this.styleElement.style.backgroundImage=this.styleElement._jscOrigStyle.backgroundImage,this.styleElement.style.backgroundColor=this.styleElement._jscOrigStyle.backgroundColor,this.styleElement.style.color=this.styleElement._jscOrigStyle.color),this.exportColor(e.leaveValue|e.leaveStyle)):this.fromString(this.valueElement.value)||this.exportColor():this.fromString(this.valueElement.value,e.leaveValue)||(this.styleElement&&(this.styleElement.style.backgroundImage=this.styleElement._jscOrigStyle.backgroundImage,this.styleElement.style.backgroundColor=this.styleElement._jscOrigStyle.backgroundColor,this.styleElement.style.color=this.styleElement._jscOrigStyle.color),this.exportColor(e.leaveValue|e.leaveStyle)):this.exportColor():this.exportColor()},this.exportColor=function(t){if(!(t&e.leaveValue)&&this.valueElement){var n=this.toString();this.uppercase&&(n=n.toUpperCase()),this.hash&&(n="#"+n),e.isElementType(this.valueElement,"input")?this.valueElement.value=n:this.valueElement.innerHTML=n}t&e.leaveStyle||this.styleElement&&(this.styleElement.style.backgroundImage="none",this.styleElement.style.backgroundColor="#"+this.toString(),this.styleElement.style.color=this.isLight()?"#000":"#FFF"),!(t&e.leavePad)&&l()&&a(),!(t&e.leaveSld)&&l()&&f()},this.fromHSV=function(e,t,n,r){if(e!==null){if(isNaN(e))return!1;e=Math.max(0,Math.min(360,e))}if(t!==null){if(isNaN(t))return!1;t=Math.max(0,Math.min(100,this.maxS,t),this.minS)}if(n!==null){if(isNaN(n))return!1;n=Math.max(0,Math.min(100,this.maxV,n),this.minV)}this.rgb=s(e===null?this.hsv[0]:this.hsv[0]=e,t===null?this.hsv[1]:this.hsv[1]=t,n===null?this.hsv[2]:this.hsv[2]=n),this.exportColor(r)},this.fromRGB=function(e,t,n,r){if(e!==null){if(isNaN(e))return!1;e=Math.max(0,Math.min(255,e))}if(t!==null){if(isNaN(t))return!1;t=Math.max(0,Math.min(255,t))}if(n!==null){if(isNaN(n))return!1;n=Math.max(0,Math.min(255,n))}var o=i(e===null?this.rgb[0]:e,t===null?this.rgb[1]:t,n===null?this.rgb[2]:n);o[0]!==null&&(this.hsv[0]=Math.max(0,Math.min(360,o[0]))),o[2]!==0&&(this.hsv[1]=o[1]===null?null:Math.max(0,this.minS,Math.min(100,this.maxS,o[1]))),this.hsv[2]=o[2]===null?null:Math.max(0,this.minV,Math.min(100,this.maxV,o[2]));var u=s(this.hsv[0],this.hsv[1],this.hsv[2]);this.rgb[0]=u[0],this.rgb[1]=u[1],this.rgb[2]=u[2],this.exportColor(r)},this.fromString=function(e,t){var n;if(n=e.match(/^\W*([0-9A-F]{3}([0-9A-F]{3})?)\W*$/i))return n[1].length===6?this.fromRGB(parseInt(n[1].substr(0,2),16),parseInt(n[1].substr(2,2),16),parseInt(n[1].substr(4,2),16),t):this.fromRGB(parseInt(n[1].charAt(0)+n[1].charAt(0),16),parseInt(n[1].charAt(1)+n[1].charAt(1),16),parseInt(n[1].charAt(2)+n[1].charAt(2),16),t),!0;if(n=e.match(/^\W*rgba?\(([^)]*)\)\W*$/i)){var r=n[1].split(","),i=/^\s*(\d*)(\.\d+)?\s*$/,s,o,u;if(r.length>=3&&(s=r[0].match(i))&&(o=r[1].match(i))&&(u=r[2].match(i))){var a=parseFloat((s[1]||"0")+(s[2]||"")),f=parseFloat((o[1]||"0")+(o[2]||"")),l=parseFloat((u[1]||"0")+(u[2]||""));return this.fromRGB(a,f,l,t),!0}}return!1},this.toString=function(){return(256|Math.round(this.rgb[0])).toString(16).substr(1)+(256|Math.round(this.rgb[1])).toString(16).substr(1)+(256|Math.round(this.rgb[2])).toString(16).substr(1)},this.toHEXString=function(){return"#"+this.toString().toUpperCase()},this.toRGBString=function(){return"rgb("+Math.round(this.rgb[0])+","+Math.round(this.rgb[1])+","+Math.round(this.rgb[2])+")"},this.isLight=function(){return.213*this.rgb[0]+.715*this.rgb[1]+.072*this.rgb[2]>127.5},this._processParentElementsInDOM=function(){if(this._linkedElementsProcessed)return;this._linkedElementsProcessed=!0;var t=this.targetElement;do{var n=e.getStyle(t);n&&n.position.toLowerCase()==="fixed"&&(this.fixed=!0),t!==this.targetElement&&(t._jscEventsAttached||(e.attachEvent(t,"scroll",e.onParentScroll),t._jscEventsAttached=!0))}while((t=t.parentNode)&&!e.isElementType(t,"body"))};if(typeof t=="string"){var h=t,p=document.getElementById(h);p?this.targetElement=p:e.warn("Could not find target element with ID '"+h+"'")}else t?this.targetElement=t:e.warn("Invalid target element: '"+t+"'");if(this.targetElement._jscLinkedInstance){e.warn("Cannot link jscolor twice to the same element. Skipping.");return}this.targetElement._jscLinkedInstance=this,this.valueElement=e.fetchElement(this.valueElement),this.styleElement=e.fetchElement(this.styleElement);var d=this,v=this.container?e.fetchElement(this.container):document.getElementsByTagName("body")[0],m=3;if(e.isElementType(this.targetElement,"button"))if(this.targetElement.onclick){var g=this.targetElement.onclick;this.targetElement.onclick=function(e){return g.call(this,e),!1}}else this.targetElement.onclick=function(){return!1};if(this.valueElement&&e.isElementType(this.valueElement,"input")){var y=function(){d.fromString(d.valueElement.value,e.leaveValue),e.dispatchFineChange(d)};e.attachEvent(this.valueElement,"keyup",y),e.attachEvent(this.valueElement,"input",y),e.attachEvent(this.valueElement,"blur",c),this.valueElement.setAttribute("autocomplete","off")}this.styleElement&&(this.styleElement._jscOrigStyle={backgroundImage:this.styleElement.style.backgroundImage,backgroundColor:this.styleElement.style.backgroundColor,color:this.styleElement.style.color}),this.value?this.fromString(this.value)||this.exportColor():this.importColor()}};return e.jscolor.lookupClass="jscolor",e.jscolor.installByClassName=function(t){var n=document.getElementsByTagName("input"),r=document.getElementsByTagName("button");e.tryInstallOnElements(n,t),e.tryInstallOnElements(r,t)},e.register(),e.jscolor}());
\ No newline at end of file
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<page xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:View/Layout/etc/page_configuration.xsd">
<head>
<css src="https://use.fontawesome.com/releases/v5.10.1/css/all.css" src_type="url"/>
</head>
</page>
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
var config = {
paths: {
'mageplaza/core/jquery/popup': 'Mageplaza_Core/js/jquery.magnific-popup.min',
'mageplaza/core/owl.carousel': 'Mageplaza_Core/js/owl.carousel.min',
'mageplaza/core/bootstrap': 'Mageplaza_Core/js/bootstrap.min',
mpIonRangeSlider: 'Mageplaza_Core/js/ion.rangeSlider.min',
touchPunch: 'Mageplaza_Core/js/jquery.ui.touch-punch.min',
mpDevbridgeAutocomplete: 'Mageplaza_Core/js/jquery.autocomplete.min'
},
shim: {
"mageplaza/core/jquery/popup": ["jquery"],
"mageplaza/core/owl.carousel": ["jquery"],
"mageplaza/core/bootstrap": ["jquery"],
mpIonRangeSlider: ["jquery"],
mpDevbridgeAutocomplete: ["jquery"],
touchPunch: ['jquery', 'jquery/ui']
}
};
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
.mp-bg-blue {
background: #20a8d8;
}
.mp-bg-indigo {
background: #6610f2;
}
.mp-bg-purple {
background: #6f42c1;
}
.mp-bg-pink {
background: #e83e8c;
}
.mp-bg-red {
background: #f86c6b;
}
.mp-bg-orange {
background: #f8cb00;
}
.mp-bg-yellow {
background: #ffc107;
}
.mp-bg-green {
background: #4dbd74;
}
.mp-bg-teal {
background: #20c997;
}
.mp-bg-cyan {
background: #17a2b8;
}
.mp-bg-white {
background: #fff;
}
.mp-bg-gray {
background: #73818f;
}
.mp-bg-gray-dark {
background: #2f353a;
}
.mp-bg-primary {
background: #20a8d8;
}
.mp-bg-secondary {
background: #c8ced3;
}
.mp-bg-success {
background: #4dbd74;
}
.mp-bg-info {
background: #63c2de;
}
.mp-bg-warning {
background: #ffc107;
}
.mp-bg-danger {
background: #f86c6b;
}
.mp-bg-light {
background: #f0f3f5;
}
.mp-bg-dark {
background: #2f353a;
}
.mp-bg-magento {
background: #eb5202;
}
.mp-bg-mageplaza {
background: #0099e5;
}
.mp-blue {
color: #20a8d8;
}
.mp-indigo {
color: #6610f2;
}
.mp-purple {
color: #6f42c1;
}
.mp-pink {
color: #e83e8c;
}
.mp-red {
color: #f86c6b;
}
.mp-orange {
color: #f8cb00;
}
.mp-yellow {
color: #ffc107;
}
.mp-green {
color: #4dbd74;
}
.mp-teal {
color: #20c997;
}
.mp-cyan {
color: #17a2b8;
}
.mp-white {
color: #fff;
}
.mp-gray {
color: #73818f;
}
.mp-gray-dark {
color: #2f353a;
}
.mp-primary {
color: #20a8d8;
}
.mp-secondary {
color: #c8ced3;
}
.mp-success {
color: #4dbd74;
}
.mp-info {
color: #63c2de;
}
.mp-warning {
color: #ffc107;
}
.mp-danger {
color: #f86c6b;
}
.mp-light {
color: #f0f3f5;
}
.mp-dark {
color: #2f353a;
}
.mp-mageplaza {
color: #0099e5;
}
.mp-magento {
color: #eb5202;
}
\ No newline at end of file
/*!
* Font Awesome 4.6.3 by @davegandy - http://fontawesome.io - @fontawesome
* License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License)
*/@font-face{font-family:'FontAwesome';src:url('./fonts/fontawesome-webfont.eot?v=4.6.3');src:url('./fonts/fontawesome-webfont.eot?#iefix&v=4.6.3') format('embedded-opentype'),url('./fonts/fontawesome-webfont.woff2?v=4.6.3') format('woff2'),url('./fonts/fontawesome-webfont.woff?v=4.6.3') format('woff'),url('./fonts/fontawesome-webfont.ttf?v=4.6.3') format('truetype'),url('./fonts/fontawesome-webfont.svg?v=4.6.3#fontawesomeregular') format('svg');font-weight:normal;font-style:normal}.fa{display:inline-block;font:normal normal normal 14px/1 FontAwesome;font-size:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.fa-lg{font-size:1.33333333em;line-height:.75em;vertical-align:-15%}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-fw{width:1.28571429em;text-align:center}.fa-ul{padding-left:0;margin-left:2.14285714em;list-style-type:none}.fa-ul>li{position:relative}.fa-li{position:absolute;left:-2.14285714em;width:2.14285714em;top:.14285714em;text-align:center}.fa-li.fa-lg{left:-1.85714286em}.fa-border{padding:.2em .25em .15em;border:solid .08em #eee;border-radius:.1em}.fa-pull-left{float:left}.fa-pull-right{float:right}.fa.fa-pull-left{margin-right:.3em}.fa.fa-pull-right{margin-left:.3em}.pull-right{float:right}.pull-left{float:left}.fa.pull-left{margin-right:.3em}.fa.pull-right{margin-left:.3em}.fa-spin{-webkit-animation:fa-spin 2s infinite linear;animation:fa-spin 2s infinite linear}.fa-pulse{-webkit-animation:fa-spin 1s infinite steps(8);animation:fa-spin 1s infinite steps(8)}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}100%{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fa-rotate-90{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=1)";-webkit-transform:rotate(90deg);-ms-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2)";-webkit-transform:rotate(180deg);-ms-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=3)";-webkit-transform:rotate(270deg);-ms-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=0, mirror=1)";-webkit-transform:scale(-1, 1);-ms-transform:scale(-1, 1);transform:scale(-1, 1)}.fa-flip-vertical{-ms-filter:"progid:DXImageTransform.Microsoft.BasicImage(rotation=2, mirror=1)";-webkit-transform:scale(1, -1);-ms-transform:scale(1, -1);transform:scale(1, -1)}:root .fa-rotate-90,:root .fa-rotate-180,:root .fa-rotate-270,:root .fa-flip-horizontal,:root .fa-flip-vertical{filter:none}.fa-stack{position:relative;display:inline-block;width:2em;height:2em;line-height:2em;vertical-align:middle}.fa-stack-1x,.fa-stack-2x{position:absolute;left:0;width:100%;text-align:center}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:#fff}.fa-glass:before{content:"\f000"}.fa-music:before{content:"\f001"}.fa-search:before{content:"\f002"}.fa-envelope-o:before{content:"\f003"}.fa-heart:before{content:"\f004"}.fa-star:before{content:"\f005"}.fa-star-o:before{content:"\f006"}.fa-user:before{content:"\f007"}.fa-film:before{content:"\f008"}.fa-th-large:before{content:"\f009"}.fa-th:before{content:"\f00a"}.fa-th-list:before{content:"\f00b"}.fa-check:before{content:"\f00c"}.fa-remove:before,.fa-close:before,.fa-times:before{content:"\f00d"}.fa-search-plus:before{content:"\f00e"}.fa-search-minus:before{content:"\f010"}.fa-power-off:before{content:"\f011"}.fa-signal:before{content:"\f012"}.fa-gear:before,.fa-cog:before{content:"\f013"}.fa-trash-o:before{content:"\f014"}.fa-home:before{content:"\f015"}.fa-file-o:before{content:"\f016"}.fa-clock-o:before{content:"\f017"}.fa-road:before{content:"\f018"}.fa-download:before{content:"\f019"}.fa-arrow-circle-o-down:before{content:"\f01a"}.fa-arrow-circle-o-up:before{content:"\f01b"}.fa-inbox:before{content:"\f01c"}.fa-play-circle-o:before{content:"\f01d"}.fa-rotate-right:before,.fa-repeat:before{content:"\f01e"}.fa-refresh:before{content:"\f021"}.fa-list-alt:before{content:"\f022"}.fa-lock:before{content:"\f023"}.fa-flag:before{content:"\f024"}.fa-headphones:before{content:"\f025"}.fa-volume-off:before{content:"\f026"}.fa-volume-down:before{content:"\f027"}.fa-volume-up:before{content:"\f028"}.fa-qrcode:before{content:"\f029"}.fa-barcode:before{content:"\f02a"}.fa-tag:before{content:"\f02b"}.fa-tags:before{content:"\f02c"}.fa-book:before{content:"\f02d"}.fa-bookmark:before{content:"\f02e"}.fa-print:before{content:"\f02f"}.fa-camera:before{content:"\f030"}.fa-font:before{content:"\f031"}.fa-bold:before{content:"\f032"}.fa-italic:before{content:"\f033"}.fa-text-height:before{content:"\f034"}.fa-text-width:before{content:"\f035"}.fa-align-left:before{content:"\f036"}.fa-align-center:before{content:"\f037"}.fa-align-right:before{content:"\f038"}.fa-align-justify:before{content:"\f039"}.fa-list:before{content:"\f03a"}.fa-dedent:before,.fa-outdent:before{content:"\f03b"}.fa-indent:before{content:"\f03c"}.fa-video-camera:before{content:"\f03d"}.fa-photo:before,.fa-image:before,.fa-picture-o:before{content:"\f03e"}.fa-pencil:before{content:"\f040"}.fa-map-marker:before{content:"\f041"}.fa-adjust:before{content:"\f042"}.fa-tint:before{content:"\f043"}.fa-edit:before,.fa-pencil-square-o:before{content:"\f044"}.fa-share-square-o:before{content:"\f045"}.fa-check-square-o:before{content:"\f046"}.fa-arrows:before{content:"\f047"}.fa-step-backward:before{content:"\f048"}.fa-fast-backward:before{content:"\f049"}.fa-backward:before{content:"\f04a"}.fa-play:before{content:"\f04b"}.fa-pause:before{content:"\f04c"}.fa-stop:before{content:"\f04d"}.fa-forward:before{content:"\f04e"}.fa-fast-forward:before{content:"\f050"}.fa-step-forward:before{content:"\f051"}.fa-eject:before{content:"\f052"}.fa-chevron-left:before{content:"\f053"}.fa-chevron-right:before{content:"\f054"}.fa-plus-circle:before{content:"\f055"}.fa-minus-circle:before{content:"\f056"}.fa-times-circle:before{content:"\f057"}.fa-check-circle:before{content:"\f058"}.fa-question-circle:before{content:"\f059"}.fa-info-circle:before{content:"\f05a"}.fa-crosshairs:before{content:"\f05b"}.fa-times-circle-o:before{content:"\f05c"}.fa-check-circle-o:before{content:"\f05d"}.fa-ban:before{content:"\f05e"}.fa-arrow-left:before{content:"\f060"}.fa-arrow-right:before{content:"\f061"}.fa-arrow-up:before{content:"\f062"}.fa-arrow-down:before{content:"\f063"}.fa-mail-forward:before,.fa-share:before{content:"\f064"}.fa-expand:before{content:"\f065"}.fa-compress:before{content:"\f066"}.fa-plus:before{content:"\f067"}.fa-minus:before{content:"\f068"}.fa-asterisk:before{content:"\f069"}.fa-exclamation-circle:before{content:"\f06a"}.fa-gift:before{content:"\f06b"}.fa-leaf:before{content:"\f06c"}.fa-fire:before{content:"\f06d"}.fa-eye:before{content:"\f06e"}.fa-eye-slash:before{content:"\f070"}.fa-warning:before,.fa-exclamation-triangle:before{content:"\f071"}.fa-plane:before{content:"\f072"}.fa-calendar:before{content:"\f073"}.fa-random:before{content:"\f074"}.fa-comment:before{content:"\f075"}.fa-magnet:before{content:"\f076"}.fa-chevron-up:before{content:"\f077"}.fa-chevron-down:before{content:"\f078"}.fa-retweet:before{content:"\f079"}.fa-shopping-cart:before{content:"\f07a"}.fa-folder:before{content:"\f07b"}.fa-folder-open:before{content:"\f07c"}.fa-arrows-v:before{content:"\f07d"}.fa-arrows-h:before{content:"\f07e"}.fa-bar-chart-o:before,.fa-bar-chart:before{content:"\f080"}.fa-twitter-square:before{content:"\f081"}.fa-facebook-square:before{content:"\f082"}.fa-camera-retro:before{content:"\f083"}.fa-key:before{content:"\f084"}.fa-gears:before,.fa-cogs:before{content:"\f085"}.fa-comments:before{content:"\f086"}.fa-thumbs-o-up:before{content:"\f087"}.fa-thumbs-o-down:before{content:"\f088"}.fa-star-half:before{content:"\f089"}.fa-heart-o:before{content:"\f08a"}.fa-sign-out:before{content:"\f08b"}.fa-linkedin-square:before{content:"\f08c"}.fa-thumb-tack:before{content:"\f08d"}.fa-external-link:before{content:"\f08e"}.fa-sign-in:before{content:"\f090"}.fa-trophy:before{content:"\f091"}.fa-github-square:before{content:"\f092"}.fa-upload:before{content:"\f093"}.fa-lemon-o:before{content:"\f094"}.fa-phone:before{content:"\f095"}.fa-square-o:before{content:"\f096"}.fa-bookmark-o:before{content:"\f097"}.fa-phone-square:before{content:"\f098"}.fa-twitter:before{content:"\f099"}.fa-facebook-f:before,.fa-facebook:before{content:"\f09a"}.fa-github:before{content:"\f09b"}.fa-unlock:before{content:"\f09c"}.fa-credit-card:before{content:"\f09d"}.fa-feed:before,.fa-rss:before{content:"\f09e"}.fa-hdd-o:before{content:"\f0a0"}.fa-bullhorn:before{content:"\f0a1"}.fa-bell:before{content:"\f0f3"}.fa-certificate:before{content:"\f0a3"}.fa-hand-o-right:before{content:"\f0a4"}.fa-hand-o-left:before{content:"\f0a5"}.fa-hand-o-up:before{content:"\f0a6"}.fa-hand-o-down:before{content:"\f0a7"}.fa-arrow-circle-left:before{content:"\f0a8"}.fa-arrow-circle-right:before{content:"\f0a9"}.fa-arrow-circle-up:before{content:"\f0aa"}.fa-arrow-circle-down:before{content:"\f0ab"}.fa-globe:before{content:"\f0ac"}.fa-wrench:before{content:"\f0ad"}.fa-tasks:before{content:"\f0ae"}.fa-filter:before{content:"\f0b0"}.fa-briefcase:before{content:"\f0b1"}.fa-arrows-alt:before{content:"\f0b2"}.fa-group:before,.fa-users:before{content:"\f0c0"}.fa-chain:before,.fa-link:before{content:"\f0c1"}.fa-cloud:before{content:"\f0c2"}.fa-flask:before{content:"\f0c3"}.fa-cut:before,.fa-scissors:before{content:"\f0c4"}.fa-copy:before,.fa-files-o:before{content:"\f0c5"}.fa-paperclip:before{content:"\f0c6"}.fa-save:before,.fa-floppy-o:before{content:"\f0c7"}.fa-square:before{content:"\f0c8"}.fa-navicon:before,.fa-reorder:before,.fa-bars:before{content:"\f0c9"}.fa-list-ul:before{content:"\f0ca"}.fa-list-ol:before{content:"\f0cb"}.fa-strikethrough:before{content:"\f0cc"}.fa-underline:before{content:"\f0cd"}.fa-table:before{content:"\f0ce"}.fa-magic:before{content:"\f0d0"}.fa-truck:before{content:"\f0d1"}.fa-pinterest:before{content:"\f0d2"}.fa-pinterest-square:before{content:"\f0d3"}.fa-google-plus-square:before{content:"\f0d4"}.fa-google-plus:before{content:"\f0d5"}.fa-money:before{content:"\f0d6"}.fa-caret-down:before{content:"\f0d7"}.fa-caret-up:before{content:"\f0d8"}.fa-caret-left:before{content:"\f0d9"}.fa-caret-right:before{content:"\f0da"}.fa-columns:before{content:"\f0db"}.fa-unsorted:before,.fa-sort:before{content:"\f0dc"}.fa-sort-down:before,.fa-sort-desc:before{content:"\f0dd"}.fa-sort-up:before,.fa-sort-asc:before{content:"\f0de"}.fa-envelope:before{content:"\f0e0"}.fa-linkedin:before{content:"\f0e1"}.fa-rotate-left:before,.fa-undo:before{content:"\f0e2"}.fa-legal:before,.fa-gavel:before{content:"\f0e3"}.fa-dashboard:before,.fa-tachometer:before{content:"\f0e4"}.fa-comment-o:before{content:"\f0e5"}.fa-comments-o:before{content:"\f0e6"}.fa-flash:before,.fa-bolt:before{content:"\f0e7"}.fa-sitemap:before{content:"\f0e8"}.fa-umbrella:before{content:"\f0e9"}.fa-paste:before,.fa-clipboard:before{content:"\f0ea"}.fa-lightbulb-o:before{content:"\f0eb"}.fa-exchange:before{content:"\f0ec"}.fa-cloud-download:before{content:"\f0ed"}.fa-cloud-upload:before{content:"\f0ee"}.fa-user-md:before{content:"\f0f0"}.fa-stethoscope:before{content:"\f0f1"}.fa-suitcase:before{content:"\f0f2"}.fa-bell-o:before{content:"\f0a2"}.fa-coffee:before{content:"\f0f4"}.fa-cutlery:before{content:"\f0f5"}.fa-file-text-o:before{content:"\f0f6"}.fa-building-o:before{content:"\f0f7"}.fa-hospital-o:before{content:"\f0f8"}.fa-ambulance:before{content:"\f0f9"}.fa-medkit:before{content:"\f0fa"}.fa-fighter-jet:before{content:"\f0fb"}.fa-beer:before{content:"\f0fc"}.fa-h-square:before{content:"\f0fd"}.fa-plus-square:before{content:"\f0fe"}.fa-angle-double-left:before{content:"\f100"}.fa-angle-double-right:before{content:"\f101"}.fa-angle-double-up:before{content:"\f102"}.fa-angle-double-down:before{content:"\f103"}.fa-angle-left:before{content:"\f104"}.fa-angle-right:before{content:"\f105"}.fa-angle-up:before{content:"\f106"}.fa-angle-down:before{content:"\f107"}.fa-desktop:before{content:"\f108"}.fa-laptop:before{content:"\f109"}.fa-tablet:before{content:"\f10a"}.fa-mobile-phone:before,.fa-mobile:before{content:"\f10b"}.fa-circle-o:before{content:"\f10c"}.fa-quote-left:before{content:"\f10d"}.fa-quote-right:before{content:"\f10e"}.fa-spinner:before{content:"\f110"}.fa-circle:before{content:"\f111"}.fa-mail-reply:before,.fa-reply:before{content:"\f112"}.fa-github-alt:before{content:"\f113"}.fa-folder-o:before{content:"\f114"}.fa-folder-open-o:before{content:"\f115"}.fa-smile-o:before{content:"\f118"}.fa-frown-o:before{content:"\f119"}.fa-meh-o:before{content:"\f11a"}.fa-gamepad:before{content:"\f11b"}.fa-keyboard-o:before{content:"\f11c"}.fa-flag-o:before{content:"\f11d"}.fa-flag-checkered:before{content:"\f11e"}.fa-terminal:before{content:"\f120"}.fa-code:before{content:"\f121"}.fa-mail-reply-all:before,.fa-reply-all:before{content:"\f122"}.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{content:"\f123"}.fa-location-arrow:before{content:"\f124"}.fa-crop:before{content:"\f125"}.fa-code-fork:before{content:"\f126"}.fa-unlink:before,.fa-chain-broken:before{content:"\f127"}.fa-question:before{content:"\f128"}.fa-info:before{content:"\f129"}.fa-exclamation:before{content:"\f12a"}.fa-superscript:before{content:"\f12b"}.fa-subscript:before{content:"\f12c"}.fa-eraser:before{content:"\f12d"}.fa-puzzle-piece:before{content:"\f12e"}.fa-microphone:before{content:"\f130"}.fa-microphone-slash:before{content:"\f131"}.fa-shield:before{content:"\f132"}.fa-calendar-o:before{content:"\f133"}.fa-fire-extinguisher:before{content:"\f134"}.fa-rocket:before{content:"\f135"}.fa-maxcdn:before{content:"\f136"}.fa-chevron-circle-left:before{content:"\f137"}.fa-chevron-circle-right:before{content:"\f138"}.fa-chevron-circle-up:before{content:"\f139"}.fa-chevron-circle-down:before{content:"\f13a"}.fa-html5:before{content:"\f13b"}.fa-css3:before{content:"\f13c"}.fa-anchor:before{content:"\f13d"}.fa-unlock-alt:before{content:"\f13e"}.fa-bullseye:before{content:"\f140"}.fa-ellipsis-h:before{content:"\f141"}.fa-ellipsis-v:before{content:"\f142"}.fa-rss-square:before{content:"\f143"}.fa-play-circle:before{content:"\f144"}.fa-ticket:before{content:"\f145"}.fa-minus-square:before{content:"\f146"}.fa-minus-square-o:before{content:"\f147"}.fa-level-up:before{content:"\f148"}.fa-level-down:before{content:"\f149"}.fa-check-square:before{content:"\f14a"}.fa-pencil-square:before{content:"\f14b"}.fa-external-link-square:before{content:"\f14c"}.fa-share-square:before{content:"\f14d"}.fa-compass:before{content:"\f14e"}.fa-toggle-down:before,.fa-caret-square-o-down:before{content:"\f150"}.fa-toggle-up:before,.fa-caret-square-o-up:before{content:"\f151"}.fa-toggle-right:before,.fa-caret-square-o-right:before{content:"\f152"}.fa-euro:before,.fa-eur:before{content:"\f153"}.fa-gbp:before{content:"\f154"}.fa-dollar:before,.fa-usd:before{content:"\f155"}.fa-rupee:before,.fa-inr:before{content:"\f156"}.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{content:"\f157"}.fa-ruble:before,.fa-rouble:before,.fa-rub:before{content:"\f158"}.fa-won:before,.fa-krw:before{content:"\f159"}.fa-bitcoin:before,.fa-btc:before{content:"\f15a"}.fa-file:before{content:"\f15b"}.fa-file-text:before{content:"\f15c"}.fa-sort-alpha-asc:before{content:"\f15d"}.fa-sort-alpha-desc:before{content:"\f15e"}.fa-sort-amount-asc:before{content:"\f160"}.fa-sort-amount-desc:before{content:"\f161"}.fa-sort-numeric-asc:before{content:"\f162"}.fa-sort-numeric-desc:before{content:"\f163"}.fa-thumbs-up:before{content:"\f164"}.fa-thumbs-down:before{content:"\f165"}.fa-youtube-square:before{content:"\f166"}.fa-youtube:before{content:"\f167"}.fa-xing:before{content:"\f168"}.fa-xing-square:before{content:"\f169"}.fa-youtube-play:before{content:"\f16a"}.fa-dropbox:before{content:"\f16b"}.fa-stack-overflow:before{content:"\f16c"}.fa-instagram:before{content:"\f16d"}.fa-flickr:before{content:"\f16e"}.fa-adn:before{content:"\f170"}.fa-bitbucket:before{content:"\f171"}.fa-bitbucket-square:before{content:"\f172"}.fa-tumblr:before{content:"\f173"}.fa-tumblr-square:before{content:"\f174"}.fa-long-arrow-down:before{content:"\f175"}.fa-long-arrow-up:before{content:"\f176"}.fa-long-arrow-left:before{content:"\f177"}.fa-long-arrow-right:before{content:"\f178"}.fa-apple:before{content:"\f179"}.fa-windows:before{content:"\f17a"}.fa-android:before{content:"\f17b"}.fa-linux:before{content:"\f17c"}.fa-dribbble:before{content:"\f17d"}.fa-skype:before{content:"\f17e"}.fa-foursquare:before{content:"\f180"}.fa-trello:before{content:"\f181"}.fa-female:before{content:"\f182"}.fa-male:before{content:"\f183"}.fa-gittip:before,.fa-gratipay:before{content:"\f184"}.fa-sun-o:before{content:"\f185"}.fa-moon-o:before{content:"\f186"}.fa-archive:before{content:"\f187"}.fa-bug:before{content:"\f188"}.fa-vk:before{content:"\f189"}.fa-weibo:before{content:"\f18a"}.fa-renren:before{content:"\f18b"}.fa-pagelines:before{content:"\f18c"}.fa-stack-exchange:before{content:"\f18d"}.fa-arrow-circle-o-right:before{content:"\f18e"}.fa-arrow-circle-o-left:before{content:"\f190"}.fa-toggle-left:before,.fa-caret-square-o-left:before{content:"\f191"}.fa-dot-circle-o:before{content:"\f192"}.fa-wheelchair:before{content:"\f193"}.fa-vimeo-square:before{content:"\f194"}.fa-turkish-lira:before,.fa-try:before{content:"\f195"}.fa-plus-square-o:before{content:"\f196"}.fa-space-shuttle:before{content:"\f197"}.fa-slack:before{content:"\f198"}.fa-envelope-square:before{content:"\f199"}.fa-wordpress:before{content:"\f19a"}.fa-openid:before{content:"\f19b"}.fa-institution:before,.fa-bank:before,.fa-university:before{content:"\f19c"}.fa-mortar-board:before,.fa-graduation-cap:before{content:"\f19d"}.fa-yahoo:before{content:"\f19e"}.fa-google:before{content:"\f1a0"}.fa-reddit:before{content:"\f1a1"}.fa-reddit-square:before{content:"\f1a2"}.fa-stumbleupon-circle:before{content:"\f1a3"}.fa-stumbleupon:before{content:"\f1a4"}.fa-delicious:before{content:"\f1a5"}.fa-digg:before{content:"\f1a6"}.fa-pied-piper-pp:before{content:"\f1a7"}.fa-pied-piper-alt:before{content:"\f1a8"}.fa-drupal:before{content:"\f1a9"}.fa-joomla:before{content:"\f1aa"}.fa-language:before{content:"\f1ab"}.fa-fax:before{content:"\f1ac"}.fa-building:before{content:"\f1ad"}.fa-child:before{content:"\f1ae"}.fa-paw:before{content:"\f1b0"}.fa-spoon:before{content:"\f1b1"}.fa-cube:before{content:"\f1b2"}.fa-cubes:before{content:"\f1b3"}.fa-behance:before{content:"\f1b4"}.fa-behance-square:before{content:"\f1b5"}.fa-steam:before{content:"\f1b6"}.fa-steam-square:before{content:"\f1b7"}.fa-recycle:before{content:"\f1b8"}.fa-automobile:before,.fa-car:before{content:"\f1b9"}.fa-cab:before,.fa-taxi:before{content:"\f1ba"}.fa-tree:before{content:"\f1bb"}.fa-spotify:before{content:"\f1bc"}.fa-deviantart:before{content:"\f1bd"}.fa-soundcloud:before{content:"\f1be"}.fa-database:before{content:"\f1c0"}.fa-file-pdf-o:before{content:"\f1c1"}.fa-file-word-o:before{content:"\f1c2"}.fa-file-excel-o:before{content:"\f1c3"}.fa-file-powerpoint-o:before{content:"\f1c4"}.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{content:"\f1c5"}.fa-file-zip-o:before,.fa-file-archive-o:before{content:"\f1c6"}.fa-file-sound-o:before,.fa-file-audio-o:before{content:"\f1c7"}.fa-file-movie-o:before,.fa-file-video-o:before{content:"\f1c8"}.fa-file-code-o:before{content:"\f1c9"}.fa-vine:before{content:"\f1ca"}.fa-codepen:before{content:"\f1cb"}.fa-jsfiddle:before{content:"\f1cc"}.fa-life-bouy:before,.fa-life-buoy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{content:"\f1cd"}.fa-circle-o-notch:before{content:"\f1ce"}.fa-ra:before,.fa-resistance:before,.fa-rebel:before{content:"\f1d0"}.fa-ge:before,.fa-empire:before{content:"\f1d1"}.fa-git-square:before{content:"\f1d2"}.fa-git:before{content:"\f1d3"}.fa-y-combinator-square:before,.fa-yc-square:before,.fa-hacker-news:before{content:"\f1d4"}.fa-tencent-weibo:before{content:"\f1d5"}.fa-qq:before{content:"\f1d6"}.fa-wechat:before,.fa-weixin:before{content:"\f1d7"}.fa-send:before,.fa-paper-plane:before{content:"\f1d8"}.fa-send-o:before,.fa-paper-plane-o:before{content:"\f1d9"}.fa-history:before{content:"\f1da"}.fa-circle-thin:before{content:"\f1db"}.fa-header:before{content:"\f1dc"}.fa-paragraph:before{content:"\f1dd"}.fa-sliders:before{content:"\f1de"}.fa-share-alt:before{content:"\f1e0"}.fa-share-alt-square:before{content:"\f1e1"}.fa-bomb:before{content:"\f1e2"}.fa-soccer-ball-o:before,.fa-futbol-o:before{content:"\f1e3"}.fa-tty:before{content:"\f1e4"}.fa-binoculars:before{content:"\f1e5"}.fa-plug:before{content:"\f1e6"}.fa-slideshare:before{content:"\f1e7"}.fa-twitch:before{content:"\f1e8"}.fa-yelp:before{content:"\f1e9"}.fa-newspaper-o:before{content:"\f1ea"}.fa-wifi:before{content:"\f1eb"}.fa-calculator:before{content:"\f1ec"}.fa-paypal:before{content:"\f1ed"}.fa-google-wallet:before{content:"\f1ee"}.fa-cc-visa:before{content:"\f1f0"}.fa-cc-mastercard:before{content:"\f1f1"}.fa-cc-discover:before{content:"\f1f2"}.fa-cc-amex:before{content:"\f1f3"}.fa-cc-paypal:before{content:"\f1f4"}.fa-cc-stripe:before{content:"\f1f5"}.fa-bell-slash:before{content:"\f1f6"}.fa-bell-slash-o:before{content:"\f1f7"}.fa-trash:before{content:"\f1f8"}.fa-copyright:before{content:"\f1f9"}.fa-at:before{content:"\f1fa"}.fa-eyedropper:before{content:"\f1fb"}.fa-paint-brush:before{content:"\f1fc"}.fa-birthday-cake:before{content:"\f1fd"}.fa-area-chart:before{content:"\f1fe"}.fa-pie-chart:before{content:"\f200"}.fa-line-chart:before{content:"\f201"}.fa-lastfm:before{content:"\f202"}.fa-lastfm-square:before{content:"\f203"}.fa-toggle-off:before{content:"\f204"}.fa-toggle-on:before{content:"\f205"}.fa-bicycle:before{content:"\f206"}.fa-bus:before{content:"\f207"}.fa-ioxhost:before{content:"\f208"}.fa-angellist:before{content:"\f209"}.fa-cc:before{content:"\f20a"}.fa-shekel:before,.fa-sheqel:before,.fa-ils:before{content:"\f20b"}.fa-meanpath:before{content:"\f20c"}.fa-buysellads:before{content:"\f20d"}.fa-connectdevelop:before{content:"\f20e"}.fa-dashcube:before{content:"\f210"}.fa-forumbee:before{content:"\f211"}.fa-leanpub:before{content:"\f212"}.fa-sellsy:before{content:"\f213"}.fa-shirtsinbulk:before{content:"\f214"}.fa-simplybuilt:before{content:"\f215"}.fa-skyatlas:before{content:"\f216"}.fa-cart-plus:before{content:"\f217"}.fa-cart-arrow-down:before{content:"\f218"}.fa-diamond:before{content:"\f219"}.fa-ship:before{content:"\f21a"}.fa-user-secret:before{content:"\f21b"}.fa-motorcycle:before{content:"\f21c"}.fa-street-view:before{content:"\f21d"}.fa-heartbeat:before{content:"\f21e"}.fa-venus:before{content:"\f221"}.fa-mars:before{content:"\f222"}.fa-mercury:before{content:"\f223"}.fa-intersex:before,.fa-transgender:before{content:"\f224"}.fa-transgender-alt:before{content:"\f225"}.fa-venus-double:before{content:"\f226"}.fa-mars-double:before{content:"\f227"}.fa-venus-mars:before{content:"\f228"}.fa-mars-stroke:before{content:"\f229"}.fa-mars-stroke-v:before{content:"\f22a"}.fa-mars-stroke-h:before{content:"\f22b"}.fa-neuter:before{content:"\f22c"}.fa-genderless:before{content:"\f22d"}.fa-facebook-official:before{content:"\f230"}.fa-pinterest-p:before{content:"\f231"}.fa-whatsapp:before{content:"\f232"}.fa-server:before{content:"\f233"}.fa-user-plus:before{content:"\f234"}.fa-user-times:before{content:"\f235"}.fa-hotel:before,.fa-bed:before{content:"\f236"}.fa-viacoin:before{content:"\f237"}.fa-train:before{content:"\f238"}.fa-subway:before{content:"\f239"}.fa-medium:before{content:"\f23a"}.fa-yc:before,.fa-y-combinator:before{content:"\f23b"}.fa-optin-monster:before{content:"\f23c"}.fa-opencart:before{content:"\f23d"}.fa-expeditedssl:before{content:"\f23e"}.fa-battery-4:before,.fa-battery-full:before{content:"\f240"}.fa-battery-3:before,.fa-battery-three-quarters:before{content:"\f241"}.fa-battery-2:before,.fa-battery-half:before{content:"\f242"}.fa-battery-1:before,.fa-battery-quarter:before{content:"\f243"}.fa-battery-0:before,.fa-battery-empty:before{content:"\f244"}.fa-mouse-pointer:before{content:"\f245"}.fa-i-cursor:before{content:"\f246"}.fa-object-group:before{content:"\f247"}.fa-object-ungroup:before{content:"\f248"}.fa-sticky-note:before{content:"\f249"}.fa-sticky-note-o:before{content:"\f24a"}.fa-cc-jcb:before{content:"\f24b"}.fa-cc-diners-club:before{content:"\f24c"}.fa-clone:before{content:"\f24d"}.fa-balance-scale:before{content:"\f24e"}.fa-hourglass-o:before{content:"\f250"}.fa-hourglass-1:before,.fa-hourglass-start:before{content:"\f251"}.fa-hourglass-2:before,.fa-hourglass-half:before{content:"\f252"}.fa-hourglass-3:before,.fa-hourglass-end:before{content:"\f253"}.fa-hourglass:before{content:"\f254"}.fa-hand-grab-o:before,.fa-hand-rock-o:before{content:"\f255"}.fa-hand-stop-o:before,.fa-hand-paper-o:before{content:"\f256"}.fa-hand-scissors-o:before{content:"\f257"}.fa-hand-lizard-o:before{content:"\f258"}.fa-hand-spock-o:before{content:"\f259"}.fa-hand-pointer-o:before{content:"\f25a"}.fa-hand-peace-o:before{content:"\f25b"}.fa-trademark:before{content:"\f25c"}.fa-registered:before{content:"\f25d"}.fa-creative-commons:before{content:"\f25e"}.fa-gg:before{content:"\f260"}.fa-gg-circle:before{content:"\f261"}.fa-tripadvisor:before{content:"\f262"}.fa-odnoklassniki:before{content:"\f263"}.fa-odnoklassniki-square:before{content:"\f264"}.fa-get-pocket:before{content:"\f265"}.fa-wikipedia-w:before{content:"\f266"}.fa-safari:before{content:"\f267"}.fa-chrome:before{content:"\f268"}.fa-firefox:before{content:"\f269"}.fa-opera:before{content:"\f26a"}.fa-internet-explorer:before{content:"\f26b"}.fa-tv:before,.fa-television:before{content:"\f26c"}.fa-contao:before{content:"\f26d"}.fa-500px:before{content:"\f26e"}.fa-amazon:before{content:"\f270"}.fa-calendar-plus-o:before{content:"\f271"}.fa-calendar-minus-o:before{content:"\f272"}.fa-calendar-times-o:before{content:"\f273"}.fa-calendar-check-o:before{content:"\f274"}.fa-industry:before{content:"\f275"}.fa-map-pin:before{content:"\f276"}.fa-map-signs:before{content:"\f277"}.fa-map-o:before{content:"\f278"}.fa-map:before{content:"\f279"}.fa-commenting:before{content:"\f27a"}.fa-commenting-o:before{content:"\f27b"}.fa-houzz:before{content:"\f27c"}.fa-vimeo:before{content:"\f27d"}.fa-black-tie:before{content:"\f27e"}.fa-fonticons:before{content:"\f280"}.fa-reddit-alien:before{content:"\f281"}.fa-edge:before{content:"\f282"}.fa-credit-card-alt:before{content:"\f283"}.fa-codiepie:before{content:"\f284"}.fa-modx:before{content:"\f285"}.fa-fort-awesome:before{content:"\f286"}.fa-usb:before{content:"\f287"}.fa-product-hunt:before{content:"\f288"}.fa-mixcloud:before{content:"\f289"}.fa-scribd:before{content:"\f28a"}.fa-pause-circle:before{content:"\f28b"}.fa-pause-circle-o:before{content:"\f28c"}.fa-stop-circle:before{content:"\f28d"}.fa-stop-circle-o:before{content:"\f28e"}.fa-shopping-bag:before{content:"\f290"}.fa-shopping-basket:before{content:"\f291"}.fa-hashtag:before{content:"\f292"}.fa-bluetooth:before{content:"\f293"}.fa-bluetooth-b:before{content:"\f294"}.fa-percent:before{content:"\f295"}.fa-gitlab:before{content:"\f296"}.fa-wpbeginner:before{content:"\f297"}.fa-wpforms:before{content:"\f298"}.fa-envira:before{content:"\f299"}.fa-universal-access:before{content:"\f29a"}.fa-wheelchair-alt:before{content:"\f29b"}.fa-question-circle-o:before{content:"\f29c"}.fa-blind:before{content:"\f29d"}.fa-audio-description:before{content:"\f29e"}.fa-volume-control-phone:before{content:"\f2a0"}.fa-braille:before{content:"\f2a1"}.fa-assistive-listening-systems:before{content:"\f2a2"}.fa-asl-interpreting:before,.fa-american-sign-language-interpreting:before{content:"\f2a3"}.fa-deafness:before,.fa-hard-of-hearing:before,.fa-deaf:before{content:"\f2a4"}.fa-glide:before{content:"\f2a5"}.fa-glide-g:before{content:"\f2a6"}.fa-signing:before,.fa-sign-language:before{content:"\f2a7"}.fa-low-vision:before{content:"\f2a8"}.fa-viadeo:before{content:"\f2a9"}.fa-viadeo-square:before{content:"\f2aa"}.fa-snapchat:before{content:"\f2ab"}.fa-snapchat-ghost:before{content:"\f2ac"}.fa-snapchat-square:before{content:"\f2ad"}.fa-pied-piper:before{content:"\f2ae"}.fa-first-order:before{content:"\f2b0"}.fa-yoast:before{content:"\f2b1"}.fa-themeisle:before{content:"\f2b2"}.fa-google-plus-circle:before,.fa-google-plus-official:before{content:"\f2b3"}.fa-fa:before,.fa-font-awesome:before{content:"\f2b4"}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}.sr-only-focusable:active,.sr-only-focusable:focus{position:static;width:auto;height:auto;margin:0;overflow:visible;clip:auto}
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_Core
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
.row-mp {
min-height: 1px;
margin: 0 -10px;
}
.col-mp {
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
-moz-background-clip: padding-box !important;
-webkit-background-clip: padding-box !important;
background-clip: padding-box !important;
float: left;
padding: 0 10px;
}
/*All*/
.mp-1 {
width: 8.33333333333%;
}
.mp-2 {
width: 16.6666666667%;
}
.mp-3 {
width: 25.0%;
}
.mp-4 {
width: 33.3333333333%;
}
.mp-5 {
width: 41.6666666667%;
}
.mp-6 {
width: 50.0%;
}
.mp-7 {
width: 58.3333333333%;
}
.mp-8 {
width: 66.6666666667%;
}
.mp-9 {
width: 75.0%;
}
.mp-10 {
width: 83.3333333333%;
}
.mp-11 {
width: 91.6666666667%;
}
.mp-12 {
margin-left: 0;
width: 100%;
}
.a-center {
text-align: center;
}
.mp-clear {
clear: both
}
@media (min-width: 1200px) {
.mp-lg-1 {
width: 8.33333333333%;
}
.mp-lg-2 {
width: 16.6666666667%;
}
.mp-lg-3 {
width: 25.0%;
}
.mp-lg-4 {
width: 33.3333333333%;
}
.mp-lg-5 {
width: 41.6666666667%;
}
.mp-lg-6 {
width: 50.0%;
}
.mp-lg-7 {
width: 58.3333333333%;
}
.mp-lg-8 {
width: 66.6666666667%;
}
.mp-lg-9 {
width: 75.0%;
}
.mp-lg-10 {
width: 83.3333333333%;
}
.mp-lg-11 {
width: 91.6666666667%;
}
.mp-lg-12 {
margin-left: 0;
width: 100%;
}
}
@media (min-width: 992px) and (max-width: 1199px) {
.mp-md-1 {
width: 8.33333333333%;
}
.mp-md-2 {
width: 16.6666666667%;
}
.mp-md-3 {
width: 25.0%;
}
.mp-md-4 {
width: 33.3333333333%;
}
.mp-md-5 {
width: 41.6666666667%;
}
.mp-md-6 {
width: 50.0%;
}
.mp-md-7 {
width: 58.3333333333%;
}
.mp-md-8 {
width: 66.6666666667%;
}
.mp-md-9 {
width: 75.0%;
}
.mp-md-10 {
width: 83.3333333333%;
}
.mp-md-11 {
width: 91.6666666667%;
}
.mp-md-12 {
margin-left: 0;
width: 100%;
}
}
@media (min-width: 768px) and (max-width: 991px) {
.mp-sm-1 {
width: 8.33333333333%;
}
.mp-sm-2 {
width: 16.6666666667%;
}
.mp-sm-3 {
width: 25.0%;
}
.mp-sm-4 {
width: 33.3333333333%;
}
.mp-sm-5 {
width: 41.6666666667%;
}
.mp-sm-6 {
width: 50.0%;
}
.mp-sm-7 {
width: 58.3333333333%;
}
.mp-sm-8 {
width: 66.6666666667%;
}
.mp-sm-9 {
width: 75.0%;
}
.mp-sm-10 {
width: 83.3333333333%;
}
.mp-sm-11 {
width: 91.6666666667%;
}
.mp-sm-12 {
margin-left: 0;
width: 100%;
}
}
@media (min-width: 481px) and (max-width: 767px) {
.mp-xs-1 {
width: 8.33333333333%;
}
.mp-xs-2 {
width: 16.6666666667%;
}
.mp-xs-3 {
width: 25.0%;
}
.mp-xs-4 {
width: 33.3333333333%;
}
.mp-xs-5 {
width: 41.6666666667%;
}
.mp-xs-6 {
width: 50.0%;
}
.mp-xs-7 {
width: 58.3333333333%;
}
.mp-xs-8 {
width: 66.6666666667%;
}
.mp-xs-9 {
width: 75.0%;
}
.mp-xs-10 {
width: 83.3333333333%;
}
.mp-xs-11 {
width: 91.6666666667%;
}
.mp-xs-12 {
margin-left: 0;
width: 100%;
}
}
@media (max-width: 480px) {
.col-mp {
width: 100%;
}
}
/* Ion.RangeSlider
// css version 2.0.3
// © 2013-2014 Denis Ineshin | IonDen.com
// ===================================================================================================================*/
/* =====================================================================================================================
// RangeSlider */
.irs {
position: relative;
display: block;
-webkit-touch-callout: none;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.irs-line {
position: relative;
display: block;
overflow: hidden;
outline: none !important;
}
.irs-line-left, .irs-line-mid, .irs-line-right {
position: absolute;
display: block;
top: 0;
}
.irs-line-left {
left: 0;
width: 11%;
}
.irs-line-mid {
left: 9%;
width: 82%;
}
.irs-line-right {
right: 0;
width: 11%;
}
.irs-bar {
position: absolute;
display: block;
left: 0;
width: 0;
}
.irs-bar-edge {
position: absolute;
display: block;
top: 0;
left: 0;
}
.irs-shadow {
position: absolute;
display: none;
left: 0;
width: 0;
}
.irs-slider {
position: absolute;
display: block;
cursor: default;
z-index: 1;
}
.irs-slider.single {
}
.irs-slider.from {
}
.irs-slider.to {
}
.irs-slider.type_last {
z-index: 2;
}
.irs-min {
position: absolute;
display: block;
left: 0;
cursor: default;
}
.irs-max {
position: absolute;
display: block;
right: 0;
cursor: default;
}
.irs-from, .irs-to, .irs-single {
position: absolute;
display: block;
top: 0;
left: 0;
cursor: default;
white-space: nowrap;
}
.irs-grid {
position: absolute;
display: none;
bottom: 0;
left: 0;
width: 100%;
height: 20px;
}
.irs-with-grid .irs-grid {
display: block;
}
.irs-grid-pol {
position: absolute;
top: 0;
left: 0;
width: 1px;
height: 8px;
background: #000;
}
.irs-grid-pol.small {
height: 4px;
}
.irs-grid-text {
position: absolute;
bottom: 0;
left: 0;
white-space: nowrap;
text-align: center;
font-size: 9px;
line-height: 9px;
padding: 0 3px;
color: #000;
}
.irs-disable-mask {
position: absolute;
display: block;
top: 0;
left: -1%;
width: 102%;
height: 100%;
cursor: default;
background: rgba(0, 0, 0, 0.0);
z-index: 2;
}
.irs-disabled {
opacity: 0.4;
}
.lt-ie9 .irs-disabled {
filter: alpha(opacity=40);
}
.irs-hidden-input {
position: absolute !important;
display: block !important;
top: 0 !important;
left: 0 !important;
width: 0 !important;
height: 0 !important;
font-size: 0 !important;
line-height: 0 !important;
padding: 0 !important;
margin: 0 !important;
outline: none !important;
z-index: -9999 !important;
background: none !important;
border-style: solid !important;
border-color: transparent !important;
}
/* Magnific Popup CSS */
.mfp-bg {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1042;
overflow: hidden;
position: fixed;
background: #0b0b0b;
opacity: 0.8;
filter: alpha(opacity=80);
}
.mfp-wrap {
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 1043;
position: fixed;
outline: none !important;
-webkit-backface-visibility: hidden;
}
.mfp-container {
text-align: center;
position: absolute;
width: 100%;
height: 100%;
left: 0;
top: 0;
padding: 0 8px;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.mfp-container:before {
content: '';
display: inline-block;
height: 100%;
vertical-align: middle;
}
.mfp-align-top .mfp-container:before {
display: none;
}
.mfp-content {
position: relative;
display: inline-block;
vertical-align: middle;
margin: 0 auto;
text-align: left;
z-index: 1045;
}
.mfp-inline-holder .mfp-content, .mfp-ajax-holder .mfp-content {
width: 100%;
cursor: auto;
}
.mfp-ajax-cur {
cursor: progress;
}
.mfp-zoom-out-cur, .mfp-zoom-out-cur .mfp-image-holder .mfp-close {
cursor: -moz-zoom-out;
cursor: -webkit-zoom-out;
cursor: zoom-out;
}
.mfp-zoom {
cursor: pointer;
cursor: -webkit-zoom-in;
cursor: -moz-zoom-in;
cursor: zoom-in;
}
.mfp-auto-cursor .mfp-content {
cursor: auto;
}
.mfp-close, .mfp-arrow, .mfp-preloader, .mfp-counter {
-webkit-user-select: none;
-moz-user-select: none;
user-select: none;
}
.mfp-loading.mfp-figure {
display: none;
}
.mfp-hide {
display: none !important;
}
.mfp-preloader {
color: #cccccc;
position: absolute;
top: 50%;
width: auto;
text-align: center;
margin-top: -0.8em;
left: 8px;
right: 8px;
z-index: 1044;
}
.mfp-preloader a {
color: #cccccc;
}
.mfp-preloader a:hover {
color: white;
}
.mfp-s-ready .mfp-preloader {
display: none;
}
.mfp-s-error .mfp-content {
display: none;
}
button.mfp-close, button.mfp-arrow {
overflow: visible;
cursor: pointer;
background: transparent;
border: 0;
-webkit-appearance: none;
display: block;
outline: none;
padding: 0;
z-index: 1046;
-webkit-box-shadow: none;
box-shadow: none;
}
button::-moz-focus-inner {
padding: 0;
border: 0;
}
.mfp-close {
width: 44px;
height: 44px;
line-height: 44px;
position: absolute;
right: 0;
top: 0;
text-decoration: none;
text-align: center;
opacity: 0.65;
padding: 0 0 18px 10px;
color: white;
font-style: normal;
font-size: 28px;
font-family: Arial, Baskerville, monospace;
}
.mfp-close:hover, .mfp-close:focus {
opacity: 1;
}
.mfp-close:active {
top: 1px;
}
.mfp-close-btn-in .mfp-close {
color: #333333;
}
.mfp-image-holder .mfp-close, .mfp-iframe-holder .mfp-close {
color: white;
right: -6px;
text-align: right;
padding-right: 6px;
width: 100%;
}
.mfp-counter {
position: absolute;
top: 0;
right: 0;
color: #cccccc;
font-size: 12px;
line-height: 18px;
}
.mfp-arrow {
position: absolute;
opacity: 0.65;
margin: 0;
top: 50%;
margin-top: -55px;
padding: 0;
width: 90px;
height: 110px;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
}
.mfp-arrow:active {
margin-top: -54px;
}
.mfp-arrow:hover, .mfp-arrow:focus {
opacity: 1;
}
.mfp-arrow:before, .mfp-arrow:after, .mfp-arrow .mfp-b, .mfp-arrow .mfp-a {
content: '';
display: block;
width: 0;
height: 0;
position: absolute;
left: 0;
top: 0;
margin-top: 35px;
margin-left: 35px;
border: medium inset transparent;
}
.mfp-arrow:after, .mfp-arrow .mfp-a {
border-top-width: 13px;
border-bottom-width: 13px;
top: 8px;
}
.mfp-arrow:before, .mfp-arrow .mfp-b {
border-top-width: 21px;
border-bottom-width: 21px;
}
.mfp-arrow-left {
left: 0;
}
.mfp-arrow-left:after, .mfp-arrow-left .mfp-a {
border-right: 17px solid white;
margin-left: 31px;
}
.mfp-arrow-left:before, .mfp-arrow-left .mfp-b {
margin-left: 25px;
border-right: 27px solid #3f3f3f;
}
.mfp-arrow-right {
right: 0;
}
.mfp-arrow-right:after, .mfp-arrow-right .mfp-a {
border-left: 17px solid white;
margin-left: 39px;
}
.mfp-arrow-right:before, .mfp-arrow-right .mfp-b {
border-left: 27px solid #3f3f3f;
}
.mfp-iframe-holder {
padding-top: 40px;
padding-bottom: 40px;
}
.mfp-iframe-holder .mfp-content {
line-height: 0;
width: 100%;
max-width: 900px;
}
.mfp-iframe-holder .mfp-close {
top: -40px;
}
.mfp-iframe-scaler {
width: 100%;
height: 0;
overflow: hidden;
padding-top: 56.25%;
}
.mfp-iframe-scaler iframe {
position: absolute;
display: block;
top: 0;
left: 0;
width: 100%;
height: 100%;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: black;
}
/* Main image in popup */
img.mfp-img {
width: auto;
max-width: 100%;
height: auto;
display: block;
line-height: 0;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 40px 0 40px;
margin: 0 auto;
}
/* The shadow behind the image */
.mfp-figure {
line-height: 0;
}
.mfp-figure:after {
content: '';
position: absolute;
left: 0;
top: 40px;
bottom: 40px;
display: block;
right: 0;
width: auto;
height: auto;
z-index: -1;
box-shadow: 0 0 8px rgba(0, 0, 0, 0.6);
background: #444444;
}
.mfp-figure small {
color: #bdbdbd;
display: block;
font-size: 12px;
line-height: 14px;
}
.mfp-bottom-bar {
margin-top: -36px;
position: absolute;
top: 100%;
left: 0;
width: 100%;
cursor: auto;
}
.mfp-title {
text-align: left;
line-height: 18px;
color: #f3f3f3;
word-wrap: break-word;
padding-right: 36px;
}
.mfp-image-holder .mfp-content {
max-width: 100%;
}
.mfp-gallery .mfp-image-holder .mfp-figure {
cursor: pointer;
}
@media screen and (max-width: 800px) and (orientation: landscape), screen and (max-height: 300px) {
/**
* Remove all paddings around the image on small screen
*/
.mfp-img-mobile .mfp-image-holder {
padding-left: 0;
padding-right: 0;
}
.mfp-img-mobile img.mfp-img {
padding: 0;
}
.mfp-img-mobile .mfp-figure {
/* The shadow behind the image */
}
.mfp-img-mobile .mfp-figure:after {
top: 0;
bottom: 0;
}
.mfp-img-mobile .mfp-figure small {
display: inline;
margin-left: 5px;
}
.mfp-img-mobile .mfp-bottom-bar {
background: rgba(0, 0, 0, 0.6);
bottom: 0;
margin: 0;
top: auto;
padding: 3px 5px;
position: fixed;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
.mfp-img-mobile .mfp-bottom-bar:empty {
padding: 0;
}
.mfp-img-mobile .mfp-counter {
right: 5px;
top: 3px;
}
.mfp-img-mobile .mfp-close {
top: 0;
right: 0;
width: 35px;
height: 35px;
line-height: 35px;
background: rgba(0, 0, 0, 0.6);
position: fixed;
text-align: center;
padding: 0;
}
}
@media all and (max-width: 900px) {
.mfp-arrow {
-webkit-transform: scale(0.75);
transform: scale(0.75);
}
.mfp-arrow-left {
-webkit-transform-origin: 0;
transform-origin: 0;
}
.mfp-arrow-right {
-webkit-transform-origin: 100%;
transform-origin: 100%;
}
.mfp-container {
padding-left: 6px;
padding-right: 6px;
}
}
.mfp-ie7 .mfp-img {
padding: 0;
}
.mfp-ie7 .mfp-bottom-bar {
width: 600px;
left: 50%;
margin-left: -300px;
margin-top: 5px;
padding-bottom: 5px;
}
.mfp-ie7 .mfp-container {
padding: 0;
}
.mfp-ie7 .mfp-content {
padding-top: 44px;
}
.mfp-ie7 .mfp-close {
top: 0;
right: 0;
padding-top: 0;
}
This source diff could not be displayed because it is too large. You can view the blob instead.
/**
* Owl Carousel v2.3.4
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
/*
* Owl Carousel - Core
*/
.owl-carousel {
display: none;
width: 100%;
-webkit-tap-highlight-color: transparent;
/* position relative and z-index fix webkit rendering fonts issue */
position: relative;
z-index: 1;
}
.owl-carousel .owl-stage {
position: relative;
-ms-touch-action: pan-Y;
touch-action: manipulation;
-moz-backface-visibility: hidden;
/* fix firefox animation glitch */
}
.owl-carousel .owl-stage:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
line-height: 0;
height: 0;
}
.owl-carousel .owl-stage-outer {
position: relative;
overflow: hidden;
/* fix for flashing background */
-webkit-transform: translate3d(0px, 0px, 0px);
}
.owl-carousel .owl-wrapper,
.owl-carousel .owl-item {
-webkit-backface-visibility: hidden;
-moz-backface-visibility: hidden;
-ms-backface-visibility: hidden;
-webkit-transform: translate3d(0, 0, 0);
-moz-transform: translate3d(0, 0, 0);
-ms-transform: translate3d(0, 0, 0);
}
.owl-carousel .owl-item {
position: relative;
min-height: 1px;
float: left;
-webkit-backface-visibility: hidden;
-webkit-tap-highlight-color: transparent;
-webkit-touch-callout: none;
}
.owl-carousel .owl-item img {
display: block;
width: 100%;
}
.owl-carousel .owl-nav.disabled,
.owl-carousel .owl-dots.disabled {
display: none;
}
.owl-carousel .owl-nav .owl-prev,
.owl-carousel .owl-nav .owl-next,
.owl-carousel .owl-dot {
cursor: pointer;
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel .owl-nav button.owl-prev,
.owl-carousel .owl-nav button.owl-next,
.owl-carousel button.owl-dot {
background: none;
color: inherit;
border: none;
padding: 0 !important;
font: inherit;
}
.owl-carousel.owl-loaded {
display: block;
}
.owl-carousel.owl-loading {
opacity: 0;
display: block;
}
.owl-carousel.owl-hidden {
opacity: 0;
}
.owl-carousel.owl-refresh .owl-item {
visibility: hidden;
}
.owl-carousel.owl-drag .owl-item {
-ms-touch-action: pan-y;
touch-action: pan-y;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.owl-carousel.owl-grab {
cursor: move;
cursor: grab;
}
.owl-carousel.owl-rtl {
direction: rtl;
}
.owl-carousel.owl-rtl .owl-item {
float: right;
}
/* No Js */
.no-js .owl-carousel {
display: block;
}
/*
* Owl Carousel - Animate Plugin
*/
.owl-carousel .animated {
animation-duration: 1000ms;
animation-fill-mode: both;
}
.owl-carousel .owl-animated-in {
z-index: 0;
}
.owl-carousel .owl-animated-out {
z-index: 1;
}
.owl-carousel .fadeOut {
animation-name: fadeOut;
}
@keyframes fadeOut {
0% {
opacity: 1;
}
100% {
opacity: 0;
}
}
/*
* Owl Carousel - Auto Height Plugin
*/
.owl-height {
transition: height 500ms ease-in-out;
}
/*
* Owl Carousel - Lazy Load Plugin
*/
.owl-carousel .owl-item {
/**
This is introduced due to a bug in IE11 where lazy loading combined with autoheight plugin causes a wrong
calculation of the height of the owl-item that breaks page layouts
*/
}
.owl-carousel .owl-item .owl-lazy {
opacity: 0;
transition: opacity 400ms ease;
}
.owl-carousel .owl-item .owl-lazy[src^=""], .owl-carousel .owl-item .owl-lazy:not([src]) {
max-height: 0;
}
.owl-carousel .owl-item img.owl-lazy {
transform-style: preserve-3d;
}
/*
* Owl Carousel - Video Plugin
*/
.owl-carousel .owl-video-wrapper {
position: relative;
height: 100%;
background: #000;
}
.owl-carousel .owl-video-play-icon {
position: absolute;
height: 80px;
width: 80px;
left: 50%;
top: 50%;
margin-left: -40px;
margin-top: -40px;
background: url("owl.video.play.png") no-repeat;
cursor: pointer;
z-index: 1;
-webkit-backface-visibility: hidden;
transition: transform 100ms ease;
}
.owl-carousel .owl-video-play-icon:hover {
-ms-transform: scale(1.3, 1.3);
transform: scale(1.3, 1.3);
}
.owl-carousel .owl-video-playing .owl-video-tn,
.owl-carousel .owl-video-playing .owl-video-play-icon {
display: none;
}
.owl-carousel .owl-video-tn {
opacity: 0;
height: 100%;
background-position: center center;
background-repeat: no-repeat;
background-size: contain;
transition: opacity 400ms ease;
}
.owl-carousel .owl-video-frame {
position: relative;
z-index: 1;
height: 100%;
width: 100%;
}
/**
* Owl Carousel v2.3.4
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
/*
* Default theme - Owl Carousel CSS File
*/
.owl-theme .owl-nav {
margin-top: 10px;
text-align: center;
-webkit-tap-highlight-color: transparent;
}
.owl-theme .owl-nav [class*='owl-'] {
color: #FFF;
font-size: 14px;
margin: 5px;
padding: 4px 7px;
background: #D6D6D6;
display: inline-block;
cursor: pointer;
border-radius: 3px;
}
.owl-theme .owl-nav [class*='owl-']:hover {
background: #869791;
color: #FFF;
text-decoration: none;
}
.owl-theme .owl-nav .disabled {
opacity: 0.5;
cursor: default;
}
.owl-theme .owl-nav.disabled + .owl-dots {
margin-top: 10px;
}
.owl-theme .owl-dots {
text-align: center;
-webkit-tap-highlight-color: transparent;
}
.owl-theme .owl-dots .owl-dot {
display: inline-block;
zoom: 1;
*display: inline;
}
.owl-theme .owl-dots .owl-dot span {
width: 10px;
height: 10px;
margin: 5px 7px;
background: #D6D6D6;
display: block;
-webkit-backface-visibility: visible;
transition: opacity 200ms ease;
border-radius: 30px;
}
.owl-theme .owl-dots .owl-dot.active span, .owl-theme .owl-dots .owl-dot:hover span {
background: #869791;
}
/* Ion.RangeSlider, Flat UI Skin
// css version 2.0.3
// © Denis Ineshin, 2014 https://github.com/IonDen
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs-line-mid,
.irs-line-left,
.irs-line-right,
.irs-bar,
.irs-bar-edge,
.irs-slider {
background: url(../img/sprite-skin-flat.png) repeat-x;
}
.irs {
height: 40px;
}
.irs-with-grid {
height: 60px;
}
.irs-line {
height: 12px;
top: 25px;
}
.irs-line-left {
height: 12px;
background-position: 0 -30px;
}
.irs-line-mid {
height: 12px;
background-position: 0 0;
}
.irs-line-right {
height: 12px;
background-position: 100% -30px;
}
.irs-bar {
height: 12px;
top: 25px;
background-position: 0 -60px;
}
.irs-bar-edge {
top: 25px;
height: 12px;
width: 9px;
background-position: 0 -90px;
}
.irs-shadow {
height: 3px;
top: 34px;
background: #000;
opacity: 0.25;
}
.lt-ie9 .irs-shadow {
filter: alpha(opacity=25);
}
.irs-slider {
width: 16px;
height: 18px;
top: 22px;
background-position: 0 -120px;
}
.irs-slider.state_hover, .irs-slider:hover {
background-position: 0 -150px;
}
.irs-min, .irs-max {
color: #999;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
top: 0;
padding: 1px 3px;
background: #e1e4e9;
-moz-border-radius: 4px;
border-radius: 4px;
}
.irs-from, .irs-to, .irs-single {
color: #fff;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
padding: 1px 5px;
background: #ed5565;
-moz-border-radius: 4px;
border-radius: 4px;
}
.irs-from:after, .irs-to:after, .irs-single:after {
position: absolute;
display: block;
content: "";
bottom: -6px;
left: 50%;
width: 0;
height: 0;
margin-left: -3px;
overflow: hidden;
border: 3px solid transparent;
border-top-color: #ed5565;
}
.irs-grid-pol {
background: #e1e4e9;
}
.irs-grid-text {
color: #999;
}
.irs-disabled {
}
/* Ion.RangeSlider, Simple Skin
// css version 2.0.3
// © Denis Ineshin, 2014 https://github.com/IonDen
// © guybowden, 2014 https://github.com/guybowden
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs {
height: 55px;
}
.irs-with-grid {
height: 75px;
}
.irs-line {
height: 10px;
top: 33px;
background: #EEE;
background: linear-gradient(to bottom, #DDD -50%, #FFF 150%); /* W3C */
border: 1px solid #CCC;
border-radius: 16px;
-moz-border-radius: 16px;
}
.irs-line-left {
height: 8px;
}
.irs-line-mid {
height: 8px;
}
.irs-line-right {
height: 8px;
}
.irs-bar {
height: 10px;
top: 33px;
border-top: 1px solid #428bca;
border-bottom: 1px solid #428bca;
background: #428bca;
background: linear-gradient(to top, rgba(66, 139, 202, 1) 0%, rgba(127, 195, 232, 1) 100%); /* W3C */
}
.irs-bar-edge {
height: 10px;
top: 33px;
width: 14px;
border: 1px solid #428bca;
border-right: 0;
background: #428bca;
background: linear-gradient(to top, rgba(66, 139, 202, 1) 0%, rgba(127, 195, 232, 1) 100%); /* W3C */
border-radius: 16px 0 0 16px;
-moz-border-radius: 16px 0 0 16px;
}
.irs-shadow {
height: 2px;
top: 38px;
background: #000;
opacity: 0.3;
border-radius: 5px;
-moz-border-radius: 5px;
}
.lt-ie9 .irs-shadow {
filter: alpha(opacity=30);
}
.irs-slider {
top: 25px;
width: 27px;
height: 27px;
border: 1px solid #AAA;
background: #DDD;
background: linear-gradient(to bottom, rgba(255, 255, 255, 1) 0%, rgba(220, 220, 220, 1) 20%, rgba(255, 255, 255, 1) 100%); /* W3C */
border-radius: 27px;
-moz-border-radius: 27px;
box-shadow: 1px 1px 3px rgba(0, 0, 0, 0.3);
cursor: pointer;
}
.irs-slider.state_hover, .irs-slider:hover {
background: #FFF;
}
.irs-min, .irs-max {
color: #333;
font-size: 12px;
line-height: 1.333;
text-shadow: none;
top: 0;
padding: 1px 5px;
background: rgba(0, 0, 0, 0.1);
border-radius: 3px;
-moz-border-radius: 3px;
}
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
background: #ccc;
}
.irs-from, .irs-to, .irs-single {
color: #fff;
font-size: 14px;
line-height: 1.333;
text-shadow: none;
padding: 1px 5px;
background: #428bca;
border-radius: 3px;
-moz-border-radius: 3px;
}
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
background: #999;
}
.irs-grid {
height: 27px;
}
.irs-grid-pol {
opacity: 0.5;
background: #428bca;
}
.irs-grid-pol.small {
background: #999;
}
.irs-grid-text {
bottom: 5px;
color: #99a4ac;
}
.irs-disabled {
}
/* Ion.RangeSlider, Modern Skin
// css version 2.0.3
// © Denis Ineshin, 2014 https://github.com/IonDen
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs-line-mid,
.irs-line-left,
.irs-line-right,
.irs-bar,
.irs-bar-edge,
.irs-slider {
background: url(../img/sprite-skin-modern.png) repeat-x;
}
.irs {
height: 50px;
}
.irs-with-grid {
height: 70px;
}
.irs-line {
height: 6px;
top: 25px;
}
.irs-line-left {
height: 6px;
background-position: 0 -30px;
}
.irs-line-mid {
height: 6px;
background-position: 0 0;
}
.irs-line-right {
height: 6px;
background-position: 100% -30px;
}
.irs-bar {
height: 6px;
top: 25px;
background-position: 0 -60px;
}
.irs-bar-edge {
top: 25px;
height: 6px;
width: 6px;
background-position: 0 -90px;
}
.irs-shadow {
height: 5px;
top: 25px;
background: #000;
opacity: 0.25;
}
.lt-ie9 .irs-shadow {
filter: alpha(opacity=25);
}
.irs-slider {
width: 11px;
height: 18px;
top: 31px;
background-position: 0 -120px;
}
.irs-slider.state_hover, .irs-slider:hover {
background-position: 0 -150px;
}
.irs-min, .irs-max {
color: #999;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
top: 0;
padding: 1px 3px;
background: #e1e4e9;
-moz-border-radius: 4px;
border-radius: 4px;
}
.irs-from, .irs-to, .irs-single {
color: #fff;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
padding: 1px 5px;
background: #20b426;
-moz-border-radius: 4px;
border-radius: 4px;
}
.irs-from:after, .irs-to:after, .irs-single:after {
position: absolute;
display: block;
content: "";
bottom: -6px;
left: 50%;
width: 0;
height: 0;
margin-left: -3px;
overflow: hidden;
border: 3px solid transparent;
border-top-color: #20b426;
}
.irs-grid {
height: 34px;
}
.irs-grid-pol {
background: #c0c0c0;
}
.irs-grid-text {
bottom: 12px;
color: #c0c0c0;
}
.irs-disable-mask {
}
.irs-disabled {
}
.lt-ie9 .irs-disabled {
}
/* Ion.RangeSlider, Nice Skin
// css version 2.0.3
// © Denis Ineshin, 2014 https://github.com/IonDen
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs-line-mid,
.irs-line-left,
.irs-line-right,
.irs-bar,
.irs-bar-edge,
.irs-slider {
background: url(../img/sprite-skin-nice.png) repeat-x;
}
.irs {
height: 40px;
}
.irs-with-grid {
height: 60px;
}
.irs-line {
height: 8px;
top: 25px;
}
.irs-line-left {
height: 8px;
background-position: 0 -30px;
}
.irs-line-mid {
height: 8px;
background-position: 0 0;
}
.irs-line-right {
height: 8px;
background-position: 100% -30px;
}
.irs-bar {
height: 8px;
top: 25px;
background-position: 0 -60px;
}
.irs-bar-edge {
top: 25px;
height: 8px;
width: 11px;
background-position: 0 -90px;
}
.irs-shadow {
height: 1px;
top: 34px;
background: #000;
opacity: 0.15;
}
.lt-ie9 .irs-shadow {
filter: alpha(opacity=15);
}
.irs-slider {
width: 22px;
height: 22px;
top: 17px;
background-position: 0 -120px;
}
.irs-slider.state_hover, .irs-slider:hover {
background-position: 0 -150px;
}
.irs-min, .irs-max {
color: #999;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
top: 0;
padding: 1px 3px;
background: rgba(0, 0, 0, 0.1);
-moz-border-radius: 3px;
border-radius: 3px;
}
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
background: #ccc;
}
.irs-from, .irs-to, .irs-single {
color: #fff;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
padding: 1px 5px;
background: rgba(0, 0, 0, 0.3);
-moz-border-radius: 3px;
border-radius: 3px;
}
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
background: #999;
}
.irs-grid-pol {
background: #99a4ac;
}
.irs-grid-text {
color: #99a4ac;
}
.irs-disabled {
}
/* Ion.RangeSlider, Simple Skin
// css version 2.0.3
// © Denis Ineshin, 2014 https://github.com/IonDen
// ===================================================================================================================*/
/* =====================================================================================================================
// Skin details */
.irs-line-mid,
.irs-line-left,
.irs-line-right,
.irs-bar,
.irs-bar-edge,
.irs-slider {
background: url(../img/sprite-skin-simple.png) repeat-x;
}
.irs {
height: 40px;
}
.irs-with-grid {
height: 60px;
}
.irs-line {
height: 6px;
top: 25px;
}
.irs-line-left {
height: 6px;
background-position: 0 -30px;
}
.irs-line-mid {
height: 6px;
background-position: 0 0;
}
.irs-line-right {
height: 6px;
background-position: 100% -30px;
}
.irs-bar {
height: 6px;
top: 25px;
background-position: 0 -60px;
}
.irs-bar-edge {
top: 25px;
height: 6px;
width: 7px;
background-position: 0 -90px;
}
.irs-shadow {
height: 1px;
top: 34px;
background: #000;
opacity: 0.75;
}
.lt-ie9 .irs-shadow {
filter: alpha(opacity=75);
}
.irs-slider {
width: 8px;
height: 15px;
top: 21px;
background-position: 0 -120px;
}
.irs-slider.state_hover, .irs-slider:hover {
background-position: 0 -150px;
}
.irs-min, .irs-max {
color: #c0c0c0;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
top: 0;
padding: 1px 3px;
background: rgba(0, 0, 0, 0.1);
-moz-border-radius: 3px;
border-radius: 3px;
}
.lt-ie9 .irs-min, .lt-ie9 .irs-max {
background: #3654b0;
}
.irs-from, .irs-to, .irs-single {
color: #000;
font-size: 10px;
line-height: 1.333;
text-shadow: none;
padding: 1px 5px;
background: rgba(255, 255, 255, 0.8);
-moz-border-radius: 3px;
border-radius: 3px;
}
.lt-ie9 .irs-from, .lt-ie9 .irs-to, .lt-ie9 .irs-single {
background: #d8dff3;
}
.irs-grid-pol {
background: #777;
}
.irs-grid-text {
color: #e0e0e0;
}
.irs-disabled {
}
/*! normalize.css v3.0.2 | MIT License | git.io/normalize */
/**
* 1. Set default font family to sans-serif.
* 2. Prevent iOS text size adjust after orientation change, without disabling
* user zoom.
*/
html {
font-family: sans-serif; /* 1 */
-ms-text-size-adjust: 100%; /* 2 */
-webkit-text-size-adjust: 100%; /* 2 */
}
/**
* Remove default margin.
*/
body {
margin: 0;
}
/* HTML5 display definitions
========================================================================== */
/**
* Correct `block` display not defined for any HTML5 element in IE 8/9.
* Correct `block` display not defined for `details` or `summary` in IE 10/11
* and Firefox.
* Correct `block` display not defined for `main` in IE 11.
*/
article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
main,
menu,
nav,
section,
summary {
display: block;
}
/**
* 1. Correct `inline-block` display not defined in IE 8/9.
* 2. Normalize vertical alignment of `progress` in Chrome, Firefox, and Opera.
*/
audio,
canvas,
progress,
video {
display: inline-block; /* 1 */
vertical-align: baseline; /* 2 */
}
/**
* Prevent modern browsers from displaying `audio` without controls.
* Remove excess height in iOS 5 devices.
*/
audio:not([controls]) {
display: none;
height: 0;
}
/**
* Address `[hidden]` styling not present in IE 8/9/10.
* Hide the `template` element in IE 8/9/11, Safari, and Firefox < 22.
*/
[hidden],
template {
display: none;
}
/* Links
========================================================================== */
/**
* Remove the gray background color from active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* Improve readability when focused and also mouse hovered in all browsers.
*/
a:active,
a:hover {
outline: 0;
}
/* Text-level semantics
========================================================================== */
/**
* Address styling not present in IE 8/9/10/11, Safari, and Chrome.
*/
abbr[title] {
border-bottom: 1px dotted;
}
/**
* Address style set to `bolder` in Firefox 4+, Safari, and Chrome.
*/
b,
strong {
font-weight: bold;
}
/**
* Address styling not present in Safari and Chrome.
*/
dfn {
font-style: italic;
}
/**
* Address variable `h1` font-size and margin within `section` and `article`
* contexts in Firefox 4+, Safari, and Chrome.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/**
* Address styling not present in IE 8/9.
*/
mark {
background: #ff0;
color: #000;
}
/**
* Address inconsistent and variable font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` affecting `line-height` in all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sup {
top: -0.5em;
}
sub {
bottom: -0.25em;
}
/* Embedded content
========================================================================== */
/**
* Remove border when inside `a` element in IE 8/9/10.
*/
img {
border: 0;
}
/**
* Correct overflow not hidden in IE 9/10/11.
*/
svg:not(:root) {
overflow: hidden;
}
/* Grouping content
========================================================================== */
/**
* Address margin not present in IE 8/9 and Safari.
*/
figure {
margin: 1em 40px;
}
/**
* Address differences between Firefox and other browsers.
*/
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
/**
* Contain overflow in all browsers.
*/
pre {
overflow: auto;
}
/**
* Address odd `em`-unit font size rendering in all browsers.
*/
code,
kbd,
pre,
samp {
font-family: monospace, monospace;
font-size: 1em;
}
/* Forms
========================================================================== */
/**
* Known limitation: by default, Chrome and Safari on OS X allow very limited
* styling of `select`, unless a `border` property is set.
*/
/**
* 1. Correct color not being inherited.
* Known issue: affects color of disabled elements.
* 2. Correct font properties not being inherited.
* 3. Address margins set differently in Firefox 4+, Safari, and Chrome.
*/
button,
input,
optgroup,
select,
textarea {
color: inherit; /* 1 */
font: inherit; /* 2 */
margin: 0; /* 3 */
}
/**
* Address `overflow` set to `hidden` in IE 8/9/10/11.
*/
button {
overflow: visible;
}
/**
* Address inconsistent `text-transform` inheritance for `button` and `select`.
* All other form control elements do not inherit `text-transform` values.
* Correct `button` style inheritance in Firefox, IE 8/9/10/11, and Opera.
* Correct `select` style inheritance in Firefox.
*/
button,
select {
text-transform: none;
}
/**
* 1. Avoid the WebKit bug in Android 4.0.* where (2) destroys native `audio`
* and `video` controls.
* 2. Correct inability to style clickable `input` types in iOS.
* 3. Improve usability and consistency of cursor style between image-type
* `input` and others.
*/
button,
html input[type="button"], /* 1 */
input[type="reset"],
input[type="submit"] {
-webkit-appearance: button; /* 2 */
cursor: pointer; /* 3 */
}
/**
* Re-set default cursor for disabled elements.
*/
button[disabled],
html input[disabled] {
cursor: default;
}
/**
* Remove inner padding and border in Firefox 4+.
*/
button::-moz-focus-inner,
input::-moz-focus-inner {
border: 0;
padding: 0;
}
/**
* Address Firefox 4+ setting `line-height` on `input` using `!important` in
* the UA stylesheet.
*/
input {
line-height: normal;
}
/**
* It's recommended that you don't attempt to style these elements.
* Firefox's implementation doesn't respect box-sizing, padding, or width.
*
* 1. Address box sizing set to `content-box` in IE 8/9/10.
* 2. Remove excess padding in IE 8/9/10.
*/
input[type="checkbox"],
input[type="radio"] {
box-sizing: border-box; /* 1 */
padding: 0; /* 2 */
}
/**
* Fix the cursor style for Chrome's increment/decrement buttons. For certain
* `font-size` values of the `input`, it causes the cursor style of the
* decrement button to change from `default` to `text`.
*/
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Address `appearance` set to `searchfield` in Safari and Chrome.
* 2. Address `box-sizing` set to `border-box` in Safari and Chrome
* (include `-moz` to future-proof).
*/
input[type="search"] {
-webkit-appearance: textfield; /* 1 */
-moz-box-sizing: content-box;
-webkit-box-sizing: content-box; /* 2 */
box-sizing: content-box;
}
/**
* Remove inner padding and search cancel button in Safari and Chrome on OS X.
* Safari (but not Chrome) clips the cancel button when the search input has
* padding (and `textfield` appearance).
*/
input[type="search"]::-webkit-search-cancel-button,
input[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* Define consistent border, margin, and padding.
*/
fieldset {
border: 1px solid #c0c0c0;
margin: 0 2px;
padding: 0.35em 0.625em 0.75em;
}
/**
* 1. Correct `color` not being inherited in IE 8/9/10/11.
* 2. Remove padding so people aren't caught out if they zero out fieldsets.
*/
legend {
border: 0; /* 1 */
padding: 0; /* 2 */
}
/**
* Remove default vertical scrollbar in IE 8/9/10/11.
*/
textarea {
overflow: auto;
}
/**
* Don't inherit the `font-weight` (applied by a rule above).
* NOTE: the default cannot safely be changed in Chrome and Safari on OS X.
*/
optgroup {
font-weight: bold;
}
/* Tables
========================================================================== */
/**
* Remove most spacing between table cells.
*/
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
/*!
* Bootstrap v3.3.6 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under the MIT license
*/
if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1||b[0]>2)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher, but lower than version 3")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.6",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.6",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")?(c.prop("checked")&&(a=!1),b.find(".active").removeClass("active"),this.$element.addClass("active")):"checkbox"==c.prop("type")&&(c.prop("checked")!==this.$element.hasClass("active")&&(a=!1),this.$element.toggleClass("active")),c.prop("checked",this.$element.hasClass("active")),a&&c.trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active")),this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),a(c.target).is('input[type="radio"]')||a(c.target).is('input[type="checkbox"]')||c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=null,this.sliding=null,this.interval=null,this.$active=null,this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&/show|hide/.test(b)&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a('[data-toggle="collapse"][href="#'+b.id+'"],[data-toggle="collapse"][data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.6",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":e.data();c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function c(c){c&&3===c.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=b(d),f={relatedTarget:this};e.hasClass("open")&&(c&&"click"==c.type&&/input|textarea/i.test(c.target.tagName)&&a.contains(e[0],c.target)||(e.trigger(c=a.Event("hide.bs.dropdown",f)),c.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger(a.Event("hidden.bs.dropdown",f)))))}))}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.6",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=b(e),g=f.hasClass("open");if(c(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a(document.createElement("div")).addClass("dropdown-backdrop").insertAfter(a(this)).on("click",c);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger(a.Event("shown.bs.dropdown",h))}return!1}},g.prototype.keydown=function(c){if(/(38|40|27|32)/.test(c.which)&&!/input|textarea/i.test(c.target.tagName)){var d=a(this);if(c.preventDefault(),c.stopPropagation(),!d.is(".disabled, :disabled")){var e=b(d),g=e.hasClass("open");if(!g&&27!=c.which||g&&27==c.which)return 27==c.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.disabled):visible a",i=e.find(".dropdown-menu"+h);if(i.length){var j=i.index(c.target);38==c.which&&j>0&&j--,40==c.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",c).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",".dropdown-menu",g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$dialog=this.$element.find(".modal-dialog"),this.$backdrop=null,this.isShown=null,this.originalBodyPad=null,this.scrollbarWidth=0,this.ignoreBackdropClick=!1,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.6",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.$dialog.on("mousedown.dismiss.bs.modal",function(){d.$element.one("mouseup.dismiss.bs.modal",function(b){a(b.target).is(d.$element)&&(d.ignoreBackdropClick=!0)})}),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in"),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$dialog.one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").off("click.dismiss.bs.modal").off("mouseup.dismiss.bs.modal"),this.$dialog.off("mousedown.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a(document.createElement("div")).addClass("modal-backdrop "+e).appendTo(this.$body),this.$element.on("click.dismiss.bs.modal",a.proxy(function(a){return this.ignoreBackdropClick?void(this.ignoreBackdropClick=!1):void(a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus():this.hide()))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.adjustDialog()},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){var a=window.innerWidth;if(!a){var b=document.documentElement.getBoundingClientRect();a=b.right-Math.abs(b.left)}this.bodyIsOverflowing=document.body.clientWidth<a,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.originalBodyPad=document.body.style.paddingRight||"",this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right",this.originalBodyPad)},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=null,this.options=null,this.enabled=null,this.timeout=null,this.hoverState=null,this.$element=null,this.inState=null,this.init("tooltip",a,b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){if(this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(a.isFunction(this.options.viewport)?this.options.viewport.call(this,this.$element):this.options.viewport.selector||this.options.viewport),this.inState={click:!1,hover:!1,focus:!1},this.$element[0]instanceof document.constructor&&!this.options.selector)throw new Error("`selector` option must be specified when initializing "+this.type+" on the window.document object!");for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusin"==b.type?"focus":"hover"]=!0),c.tip().hasClass("in")||"in"==c.hoverState?void(c.hoverState="in"):(clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.isInStateTrue=function(){for(var a in this.inState)if(this.inState[a])return!0;return!1},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),b instanceof a.Event&&(c.inState["focusout"==b.type?"focus":"hover"]=!1),c.isInStateTrue()?void 0:(clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide())},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element),this.$element.trigger("inserted.bs."+this.type);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.getPosition(this.$viewport);h="bottom"==h&&k.bottom+m>o.bottom?"top":"top"==h&&k.top-m<o.top?"bottom":"right"==h&&k.right+l>o.width?"left":"left"==h&&k.left-l<o.left?"right":h,f.removeClass(n).addClass(h)}var p=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(p,h);var q=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",q).emulateTransitionEnd(c.TRANSITION_DURATION):q()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top+=g,b.left+=h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=a(this.$tip),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&f.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.right&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){if(!this.$tip&&(this.$tip=a(this.options.template),1!=this.$tip.length))throw new Error(this.type+" `template` option must consist of exactly 1 top-level element!");return this.$tip},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),b?(c.inState.click=!c.inState.click,c.isInStateTrue()?c.enter(c):c.leave(c)):c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type),a.$tip&&a.$tip.detach(),a.$tip=null,a.$arrow=null,a.$viewport=null})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||!/destroy|hide/.test(b))&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.6",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){this.$body=a(document.body),this.$scrollElement=a(a(c).is(document.body)?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",a.proxy(this.process,this)),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.6",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b=this,c="offset",d=0;this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight(),a.isWindow(this.$scrollElement[0])||(c="position",d=this.$scrollElement.scrollTop()),this.$body.find(this.selector).map(function(){var b=a(this),e=b.data("target")||b.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[c]().top+d,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){b.offsets.push(this[0]),b.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(void 0===e[a+1]||b<e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");
d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.6",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu").length&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=null,this.unpin=null,this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.6",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=Math.max(a(document).height(),a(document.body).height());"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery);
\ No newline at end of file
// Ion.RangeSlider | version 2.1.6 | https://github.com/IonDen/ion.rangeSlider
;(function(f){"function"===typeof define&&define.amd?define(["jquery"],function(p){return f(p,document,window,navigator)}):"object"===typeof exports?f(require("jquery"),document,window,navigator):f(jQuery,document,window,navigator)})(function(f,p,h,t,q){var u=0,m=function(){var a=t.userAgent,b=/msie\s\d+/i;return 0<a.search(b)&&(a=b.exec(a).toString(),a=a.split(" ")[1],9>a)?(f("html").addClass("lt-ie9"),!0):!1}();Function.prototype.bind||(Function.prototype.bind=function(a){var b=this,d=[].slice;if("function"!=
typeof b)throw new TypeError;var c=d.call(arguments,1),e=function(){if(this instanceof e){var g=function(){};g.prototype=b.prototype;var g=new g,l=b.apply(g,c.concat(d.call(arguments)));return Object(l)===l?l:g}return b.apply(a,c.concat(d.call(arguments)))};return e});Array.prototype.indexOf||(Array.prototype.indexOf=function(a,b){var d;if(null==this)throw new TypeError('"this" is null or not defined');var c=Object(this),e=c.length>>>0;if(0===e)return-1;d=+b||0;Infinity===Math.abs(d)&&(d=0);if(d>=
e)return-1;for(d=Math.max(0<=d?d:e-Math.abs(d),0);d<e;){if(d in c&&c[d]===a)return d;d++}return-1});var r=function(a,b,d){this.VERSION="2.1.6";this.input=a;this.plugin_count=d;this.old_to=this.old_from=this.update_tm=this.calc_count=this.current_plugin=0;this.raf_id=this.old_min_interval=null;this.is_update=this.is_key=this.no_diapason=this.force_redraw=this.dragging=!1;this.is_start=this.is_first_update=!0;this.is_click=this.is_resize=this.is_active=this.is_finish=!1;b=b||{};this.$cache={win:f(h),
body:f(p.body),input:f(a),cont:null,rs:null,min:null,max:null,from:null,to:null,single:null,bar:null,line:null,s_single:null,s_from:null,s_to:null,shad_single:null,shad_from:null,shad_to:null,edge:null,grid:null,grid_labels:[]};this.coords={x_gap:0,x_pointer:0,w_rs:0,w_rs_old:0,w_handle:0,p_gap:0,p_gap_left:0,p_gap_right:0,p_step:0,p_pointer:0,p_handle:0,p_single_fake:0,p_single_real:0,p_from_fake:0,p_from_real:0,p_to_fake:0,p_to_real:0,p_bar_x:0,p_bar_w:0,grid_gap:0,big_num:0,big:[],big_w:[],big_p:[],
big_x:[]};this.labels={w_min:0,w_max:0,w_from:0,w_to:0,w_single:0,p_min:0,p_max:0,p_from_fake:0,p_from_left:0,p_to_fake:0,p_to_left:0,p_single_fake:0,p_single_left:0};var c=this.$cache.input;a=c.prop("value");var e;d={type:"single",min:10,max:100,from:null,to:null,step:1,min_interval:0,max_interval:0,drag_interval:!1,values:[],p_values:[],from_fixed:!1,from_min:null,from_max:null,from_shadow:!1,to_fixed:!1,to_min:null,to_max:null,to_shadow:!1,prettify_enabled:!0,prettify_separator:" ",prettify:null,
force_edges:!1,keyboard:!1,keyboard_step:5,grid:!1,grid_margin:!0,grid_num:4,grid_snap:!1,hide_min_max:!1,hide_from_to:!1,prefix:"",postfix:"",max_postfix:"",decorate_both:!0,values_separator:" \u2014 ",input_values_separator:";",disable:!1,onStart:null,onChange:null,onFinish:null,onUpdate:null};"INPUT"!==c[0].nodeName&&console&&console.warn&&console.warn("Base element should be <input>!",c[0]);c={type:c.data("type"),min:c.data("min"),max:c.data("max"),from:c.data("from"),to:c.data("to"),step:c.data("step"),
min_interval:c.data("minInterval"),max_interval:c.data("maxInterval"),drag_interval:c.data("dragInterval"),values:c.data("values"),from_fixed:c.data("fromFixed"),from_min:c.data("fromMin"),from_max:c.data("fromMax"),from_shadow:c.data("fromShadow"),to_fixed:c.data("toFixed"),to_min:c.data("toMin"),to_max:c.data("toMax"),to_shadow:c.data("toShadow"),prettify_enabled:c.data("prettifyEnabled"),prettify_separator:c.data("prettifySeparator"),force_edges:c.data("forceEdges"),keyboard:c.data("keyboard"),
keyboard_step:c.data("keyboardStep"),grid:c.data("grid"),grid_margin:c.data("gridMargin"),grid_num:c.data("gridNum"),grid_snap:c.data("gridSnap"),hide_min_max:c.data("hideMinMax"),hide_from_to:c.data("hideFromTo"),prefix:c.data("prefix"),postfix:c.data("postfix"),max_postfix:c.data("maxPostfix"),decorate_both:c.data("decorateBoth"),values_separator:c.data("valuesSeparator"),input_values_separator:c.data("inputValuesSeparator"),disable:c.data("disable")};c.values=c.values&&c.values.split(",");for(e in c)c.hasOwnProperty(e)&&
(c[e]!==q&&""!==c[e]||delete c[e]);a!==q&&""!==a&&(a=a.split(c.input_values_separator||b.input_values_separator||";"),a[0]&&a[0]==+a[0]&&(a[0]=+a[0]),a[1]&&a[1]==+a[1]&&(a[1]=+a[1]),b&&b.values&&b.values.length?(d.from=a[0]&&b.values.indexOf(a[0]),d.to=a[1]&&b.values.indexOf(a[1])):(d.from=a[0]&&+a[0],d.to=a[1]&&+a[1]));f.extend(d,b);f.extend(d,c);this.options=d;this.update_check={};this.validate();this.result={input:this.$cache.input,slider:null,min:this.options.min,max:this.options.max,from:this.options.from,
from_percent:0,from_value:null,to:this.options.to,to_percent:0,to_value:null};this.init()};r.prototype={init:function(a){this.no_diapason=!1;this.coords.p_step=this.convertToPercent(this.options.step,!0);this.target="base";this.toggleInput();this.append();this.setMinMax();a?(this.force_redraw=!0,this.calc(!0),this.callOnUpdate()):(this.force_redraw=!0,this.calc(!0),this.callOnStart());this.updateScene()},append:function(){this.$cache.input.before('<span class="irs js-irs-'+this.plugin_count+'"></span>');
this.$cache.input.prop("readonly",!0);this.$cache.cont=this.$cache.input.prev();this.result.slider=this.$cache.cont;this.$cache.cont.html('<span class="irs"><span class="irs-line" tabindex="-1"><span class="irs-line-left"></span><span class="irs-line-mid"></span><span class="irs-line-right"></span></span><span class="irs-min">0</span><span class="irs-max">1</span><span class="irs-from">0</span><span class="irs-to">0</span><span class="irs-single">0</span></span><span class="irs-grid"></span><span class="irs-bar"></span>');
this.$cache.rs=this.$cache.cont.find(".irs");this.$cache.min=this.$cache.cont.find(".irs-min");this.$cache.max=this.$cache.cont.find(".irs-max");this.$cache.from=this.$cache.cont.find(".irs-from");this.$cache.to=this.$cache.cont.find(".irs-to");this.$cache.single=this.$cache.cont.find(".irs-single");this.$cache.bar=this.$cache.cont.find(".irs-bar");this.$cache.line=this.$cache.cont.find(".irs-line");this.$cache.grid=this.$cache.cont.find(".irs-grid");"single"===this.options.type?(this.$cache.cont.append('<span class="irs-bar-edge"></span><span class="irs-shadow shadow-single"></span><span class="irs-slider single"></span>'),
this.$cache.edge=this.$cache.cont.find(".irs-bar-edge"),this.$cache.s_single=this.$cache.cont.find(".single"),this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.shad_single=this.$cache.cont.find(".shadow-single")):(this.$cache.cont.append('<span class="irs-shadow shadow-from"></span><span class="irs-shadow shadow-to"></span><span class="irs-slider from"></span><span class="irs-slider to"></span>'),this.$cache.s_from=this.$cache.cont.find(".from"),
this.$cache.s_to=this.$cache.cont.find(".to"),this.$cache.shad_from=this.$cache.cont.find(".shadow-from"),this.$cache.shad_to=this.$cache.cont.find(".shadow-to"),this.setTopHandler());this.options.hide_from_to&&(this.$cache.from[0].style.display="none",this.$cache.to[0].style.display="none",this.$cache.single[0].style.display="none");this.appendGrid();this.options.disable?(this.appendDisableMask(),this.$cache.input[0].disabled=!0):(this.$cache.cont.removeClass("irs-disabled"),this.$cache.input[0].disabled=
!1,this.bindEvents());this.options.drag_interval&&(this.$cache.bar[0].style.cursor="ew-resize")},setTopHandler:function(){var a=this.options.max,b=this.options.to;this.options.from>this.options.min&&b===a?this.$cache.s_from.addClass("type_last"):b<a&&this.$cache.s_to.addClass("type_last")},changeLevel:function(a){switch(a){case "single":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_single_fake);break;case "from":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake);
this.$cache.s_from.addClass("state_hover");this.$cache.s_from.addClass("type_last");this.$cache.s_to.removeClass("type_last");break;case "to":this.coords.p_gap=this.toFixed(this.coords.p_pointer-this.coords.p_to_fake);this.$cache.s_to.addClass("state_hover");this.$cache.s_to.addClass("type_last");this.$cache.s_from.removeClass("type_last");break;case "both":this.coords.p_gap_left=this.toFixed(this.coords.p_pointer-this.coords.p_from_fake),this.coords.p_gap_right=this.toFixed(this.coords.p_to_fake-
this.coords.p_pointer),this.$cache.s_to.removeClass("type_last"),this.$cache.s_from.removeClass("type_last")}},appendDisableMask:function(){this.$cache.cont.append('<span class="irs-disable-mask"></span>');this.$cache.cont.addClass("irs-disabled")},remove:function(){this.$cache.cont.remove();this.$cache.cont=null;this.$cache.line.off("keydown.irs_"+this.plugin_count);this.$cache.body.off("touchmove.irs_"+this.plugin_count);this.$cache.body.off("mousemove.irs_"+this.plugin_count);this.$cache.win.off("touchend.irs_"+
this.plugin_count);this.$cache.win.off("mouseup.irs_"+this.plugin_count);m&&(this.$cache.body.off("mouseup.irs_"+this.plugin_count),this.$cache.body.off("mouseleave.irs_"+this.plugin_count));this.$cache.grid_labels=[];this.coords.big=[];this.coords.big_w=[];this.coords.big_p=[];this.coords.big_x=[];cancelAnimationFrame(this.raf_id)},bindEvents:function(){if(!this.no_diapason){this.$cache.body.on("touchmove.irs_"+this.plugin_count,this.pointerMove.bind(this));this.$cache.body.on("mousemove.irs_"+this.plugin_count,
this.pointerMove.bind(this));this.$cache.win.on("touchend.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.win.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this));this.$cache.line.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.$cache.line.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"));this.options.drag_interval&&"double"===this.options.type?(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,
"both")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"both"))):(this.$cache.bar.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.bar.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));"single"===this.options.type?(this.$cache.single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),
this.$cache.shad_single.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.s_single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"single")),this.$cache.edge.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_single.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click"))):(this.$cache.single.on("touchstart.irs_"+
this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.single.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,null)),this.$cache.from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("touchstart.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),
this.$cache.shad_from.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("touchstart.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.s_from.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"from")),this.$cache.to.on("mousedown.irs_"+this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.s_to.on("mousedown.irs_"+
this.plugin_count,this.pointerDown.bind(this,"to")),this.$cache.shad_from.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")),this.$cache.shad_to.on("mousedown.irs_"+this.plugin_count,this.pointerClick.bind(this,"click")));if(this.options.keyboard)this.$cache.line.on("keydown.irs_"+this.plugin_count,this.key.bind(this,"keyboard"));m&&(this.$cache.body.on("mouseup.irs_"+this.plugin_count,this.pointerUp.bind(this)),this.$cache.body.on("mouseleave.irs_"+this.plugin_count,this.pointerUp.bind(this)))}},
pointerMove:function(a){this.dragging&&(this.coords.x_pointer=(a.pageX||a.originalEvent.touches&&a.originalEvent.touches[0].pageX)-this.coords.x_gap,this.calc())},pointerUp:function(a){this.current_plugin===this.plugin_count&&this.is_active&&(this.is_active=!1,this.$cache.cont.find(".state_hover").removeClass("state_hover"),this.force_redraw=!0,m&&f("*").prop("unselectable",!1),this.updateScene(),this.restoreOriginalMinInterval(),(f.contains(this.$cache.cont[0],a.target)||this.dragging)&&this.callOnFinish(),
this.dragging=!1)},pointerDown:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&("both"===a&&this.setTempMinInterval(),a||(a=this.target||"from"),this.current_plugin=this.plugin_count,this.target=a,this.dragging=this.is_active=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=d-this.coords.x_gap,this.calcPointerPercent(),this.changeLevel(a),m&&f("*").prop("unselectable",!0),this.$cache.line.trigger("focus"),
this.updateScene())},pointerClick:function(a,b){b.preventDefault();var d=b.pageX||b.originalEvent.touches&&b.originalEvent.touches[0].pageX;2!==b.button&&(this.current_plugin=this.plugin_count,this.target=a,this.is_click=!0,this.coords.x_gap=this.$cache.rs.offset().left,this.coords.x_pointer=+(d-this.coords.x_gap).toFixed(),this.force_redraw=!0,this.calc(),this.$cache.line.trigger("focus"))},key:function(a,b){if(!(this.current_plugin!==this.plugin_count||b.altKey||b.ctrlKey||b.shiftKey||b.metaKey)){switch(b.which){case 83:case 65:case 40:case 37:b.preventDefault();
this.moveByKey(!1);break;case 87:case 68:case 38:case 39:b.preventDefault(),this.moveByKey(!0)}return!0}},moveByKey:function(a){var b=this.coords.p_pointer,b=a?b+this.options.keyboard_step:b-this.options.keyboard_step;this.coords.x_pointer=this.toFixed(this.coords.w_rs/100*b);this.is_key=!0;this.calc()},setMinMax:function(){this.options&&(this.options.hide_min_max?(this.$cache.min[0].style.display="none",this.$cache.max[0].style.display="none"):(this.options.values.length?(this.$cache.min.html(this.decorate(this.options.p_values[this.options.min])),
this.$cache.max.html(this.decorate(this.options.p_values[this.options.max]))):(this.$cache.min.html(this.decorate(this._prettify(this.options.min),this.options.min)),this.$cache.max.html(this.decorate(this._prettify(this.options.max),this.options.max))),this.labels.w_min=this.$cache.min.outerWidth(!1),this.labels.w_max=this.$cache.max.outerWidth(!1)))},setTempMinInterval:function(){var a=this.result.to-this.result.from;null===this.old_min_interval&&(this.old_min_interval=this.options.min_interval);
this.options.min_interval=a},restoreOriginalMinInterval:function(){null!==this.old_min_interval&&(this.options.min_interval=this.old_min_interval,this.old_min_interval=null)},calc:function(a){if(this.options){this.calc_count++;if(10===this.calc_count||a)this.calc_count=0,this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.calcHandlePercent();if(this.coords.w_rs){this.calcPointerPercent();a=this.getHandleX();"both"===this.target&&(this.coords.p_gap=0,a=this.getHandleX());"click"===this.target&&(this.coords.p_gap=
this.coords.p_handle/2,a=this.getHandleX(),this.target=this.options.drag_interval?"both_one":this.chooseHandle(a));switch(this.target){case "base":var b=(this.options.max-this.options.min)/100;a=(this.result.from-this.options.min)/b;b=(this.result.to-this.options.min)/b;this.coords.p_single_real=this.toFixed(a);this.coords.p_from_real=this.toFixed(a);this.coords.p_to_real=this.toFixed(b);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);
this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);this.target=null;break;case "single":if(this.options.from_fixed)break;
this.coords.p_single_real=this.convertToRealPercent(a);this.coords.p_single_real=this.calcWithStep(this.coords.p_single_real);this.coords.p_single_real=this.checkDiapason(this.coords.p_single_real,this.options.from_min,this.options.from_max);this.coords.p_single_fake=this.convertToFakePercent(this.coords.p_single_real);break;case "from":if(this.options.from_fixed)break;this.coords.p_from_real=this.convertToRealPercent(a);this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real>
this.coords.p_to_real&&(this.coords.p_from_real=this.coords.p_to_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_real=this.checkMaxInterval(this.coords.p_from_real,this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);break;case "to":if(this.options.to_fixed)break;
this.coords.p_to_real=this.convertToRealPercent(a);this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real<this.coords.p_from_real&&(this.coords.p_to_real=this.coords.p_from_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_real=this.checkMaxInterval(this.coords.p_to_real,this.coords.p_from_real,"to");
this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);break;case "both":if(this.options.from_fixed||this.options.to_fixed)break;a=this.toFixed(a+.001*this.coords.p_handle);this.coords.p_from_real=this.convertToRealPercent(a)-this.coords.p_gap_left;this.coords.p_from_real=this.calcWithStep(this.coords.p_from_real);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_real=this.checkMinInterval(this.coords.p_from_real,
this.coords.p_to_real,"from");this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.convertToRealPercent(a)+this.coords.p_gap_right;this.coords.p_to_real=this.calcWithStep(this.coords.p_to_real);this.coords.p_to_real=this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_real=this.checkMinInterval(this.coords.p_to_real,this.coords.p_from_real,"to");this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real);
break;case "both_one":if(!this.options.from_fixed&&!this.options.to_fixed){var d=this.convertToRealPercent(a);a=this.result.to_percent-this.result.from_percent;var c=a/2,b=d-c,d=d+c;0>b&&(b=0,d=b+a);100<d&&(d=100,b=d-a);this.coords.p_from_real=this.calcWithStep(b);this.coords.p_from_real=this.checkDiapason(this.coords.p_from_real,this.options.from_min,this.options.from_max);this.coords.p_from_fake=this.convertToFakePercent(this.coords.p_from_real);this.coords.p_to_real=this.calcWithStep(d);this.coords.p_to_real=
this.checkDiapason(this.coords.p_to_real,this.options.to_min,this.options.to_max);this.coords.p_to_fake=this.convertToFakePercent(this.coords.p_to_real)}}"single"===this.options.type?(this.coords.p_bar_x=this.coords.p_handle/2,this.coords.p_bar_w=this.coords.p_single_fake,this.result.from_percent=this.coords.p_single_real,this.result.from=this.convertToValue(this.coords.p_single_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from])):(this.coords.p_bar_x=
this.toFixed(this.coords.p_from_fake+this.coords.p_handle/2),this.coords.p_bar_w=this.toFixed(this.coords.p_to_fake-this.coords.p_from_fake),this.result.from_percent=this.coords.p_from_real,this.result.from=this.convertToValue(this.coords.p_from_real),this.result.to_percent=this.coords.p_to_real,this.result.to=this.convertToValue(this.coords.p_to_real),this.options.values.length&&(this.result.from_value=this.options.values[this.result.from],this.result.to_value=this.options.values[this.result.to]));
this.calcMinMax();this.calcLabels()}}},calcPointerPercent:function(){this.coords.w_rs?(0>this.coords.x_pointer||isNaN(this.coords.x_pointer)?this.coords.x_pointer=0:this.coords.x_pointer>this.coords.w_rs&&(this.coords.x_pointer=this.coords.w_rs),this.coords.p_pointer=this.toFixed(this.coords.x_pointer/this.coords.w_rs*100)):this.coords.p_pointer=0},convertToRealPercent:function(a){return a/(100-this.coords.p_handle)*100},convertToFakePercent:function(a){return a/100*(100-this.coords.p_handle)},getHandleX:function(){var a=
100-this.coords.p_handle,b=this.toFixed(this.coords.p_pointer-this.coords.p_gap);0>b?b=0:b>a&&(b=a);return b},calcHandlePercent:function(){this.coords.w_handle="single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1);this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100)},chooseHandle:function(a){return"single"===this.options.type?"single":a>=this.coords.p_from_real+(this.coords.p_to_real-this.coords.p_from_real)/2?this.options.to_fixed?
"from":"to":this.options.from_fixed?"to":"from"},calcMinMax:function(){this.coords.w_rs&&(this.labels.p_min=this.labels.w_min/this.coords.w_rs*100,this.labels.p_max=this.labels.w_max/this.coords.w_rs*100)},calcLabels:function(){this.coords.w_rs&&!this.options.hide_from_to&&("single"===this.options.type?(this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=this.coords.p_single_fake+this.coords.p_handle/
2-this.labels.p_single_fake/2):(this.labels.w_from=this.$cache.from.outerWidth(!1),this.labels.p_from_fake=this.labels.w_from/this.coords.w_rs*100,this.labels.p_from_left=this.coords.p_from_fake+this.coords.p_handle/2-this.labels.p_from_fake/2,this.labels.p_from_left=this.toFixed(this.labels.p_from_left),this.labels.p_from_left=this.checkEdges(this.labels.p_from_left,this.labels.p_from_fake),this.labels.w_to=this.$cache.to.outerWidth(!1),this.labels.p_to_fake=this.labels.w_to/this.coords.w_rs*100,
this.labels.p_to_left=this.coords.p_to_fake+this.coords.p_handle/2-this.labels.p_to_fake/2,this.labels.p_to_left=this.toFixed(this.labels.p_to_left),this.labels.p_to_left=this.checkEdges(this.labels.p_to_left,this.labels.p_to_fake),this.labels.w_single=this.$cache.single.outerWidth(!1),this.labels.p_single_fake=this.labels.w_single/this.coords.w_rs*100,this.labels.p_single_left=(this.labels.p_from_left+this.labels.p_to_left+this.labels.p_to_fake)/2-this.labels.p_single_fake/2,this.labels.p_single_left=
this.toFixed(this.labels.p_single_left)),this.labels.p_single_left=this.checkEdges(this.labels.p_single_left,this.labels.p_single_fake))},updateScene:function(){this.raf_id&&(cancelAnimationFrame(this.raf_id),this.raf_id=null);clearTimeout(this.update_tm);this.update_tm=null;this.options&&(this.drawHandles(),this.is_active?this.raf_id=requestAnimationFrame(this.updateScene.bind(this)):this.update_tm=setTimeout(this.updateScene.bind(this),300))},drawHandles:function(){this.coords.w_rs=this.$cache.rs.outerWidth(!1);
if(this.coords.w_rs){this.coords.w_rs!==this.coords.w_rs_old&&(this.target="base",this.is_resize=!0);if(this.coords.w_rs!==this.coords.w_rs_old||this.force_redraw)this.setMinMax(),this.calc(!0),this.drawLabels(),this.options.grid&&(this.calcGridMargin(),this.calcGridLabels()),this.force_redraw=!0,this.coords.w_rs_old=this.coords.w_rs,this.drawShadow();if(this.coords.w_rs&&(this.dragging||this.force_redraw||this.is_key)){if(this.old_from!==this.result.from||this.old_to!==this.result.to||this.force_redraw||
this.is_key){this.drawLabels();this.$cache.bar[0].style.left=this.coords.p_bar_x+"%";this.$cache.bar[0].style.width=this.coords.p_bar_w+"%";if("single"===this.options.type)this.$cache.s_single[0].style.left=this.coords.p_single_fake+"%";else{this.$cache.s_from[0].style.left=this.coords.p_from_fake+"%";this.$cache.s_to[0].style.left=this.coords.p_to_fake+"%";if(this.old_from!==this.result.from||this.force_redraw)this.$cache.from[0].style.left=this.labels.p_from_left+"%";if(this.old_to!==this.result.to||
this.force_redraw)this.$cache.to[0].style.left=this.labels.p_to_left+"%"}this.$cache.single[0].style.left=this.labels.p_single_left+"%";this.writeToInput();this.old_from===this.result.from&&this.old_to===this.result.to||this.is_start||(this.$cache.input.trigger("change"),this.$cache.input.trigger("input"));this.old_from=this.result.from;this.old_to=this.result.to;this.is_resize||this.is_update||this.is_start||this.is_finish||this.callOnChange();if(this.is_key||this.is_click||this.is_first_update)this.is_first_update=
this.is_click=this.is_key=!1,this.callOnFinish();this.is_finish=this.is_resize=this.is_update=!1}this.force_redraw=this.is_click=this.is_key=this.is_start=!1}}},drawLabels:function(){if(this.options){var a=this.options.values.length,b=this.options.p_values,d;if(!this.options.hide_from_to)if("single"===this.options.type)a=a?this.decorate(b[this.result.from]):this.decorate(this._prettify(this.result.from),this.result.from),this.$cache.single.html(a),this.calcLabels(),this.$cache.min[0].style.visibility=
this.labels.p_single_left<this.labels.p_min+1?"hidden":"visible",this.$cache.max[0].style.visibility=this.labels.p_single_left+this.labels.p_single_fake>100-this.labels.p_max-1?"hidden":"visible";else{a?(this.options.decorate_both?(a=this.decorate(b[this.result.from]),a+=this.options.values_separator,a+=this.decorate(b[this.result.to])):a=this.decorate(b[this.result.from]+this.options.values_separator+b[this.result.to]),d=this.decorate(b[this.result.from]),b=this.decorate(b[this.result.to])):(this.options.decorate_both?
(a=this.decorate(this._prettify(this.result.from),this.result.from),a+=this.options.values_separator,a+=this.decorate(this._prettify(this.result.to),this.result.to)):a=this.decorate(this._prettify(this.result.from)+this.options.values_separator+this._prettify(this.result.to),this.result.to),d=this.decorate(this._prettify(this.result.from),this.result.from),b=this.decorate(this._prettify(this.result.to),this.result.to));this.$cache.single.html(a);this.$cache.from.html(d);this.$cache.to.html(b);this.calcLabels();
b=Math.min(this.labels.p_single_left,this.labels.p_from_left);a=this.labels.p_single_left+this.labels.p_single_fake;d=this.labels.p_to_left+this.labels.p_to_fake;var c=Math.max(a,d);this.labels.p_from_left+this.labels.p_from_fake>=this.labels.p_to_left?(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",this.result.from===this.result.to?("from"===this.target?this.$cache.from[0].style.visibility="visible":"to"===
this.target?this.$cache.to[0].style.visibility="visible":this.target||(this.$cache.from[0].style.visibility="visible"),this.$cache.single[0].style.visibility="hidden",c=d):(this.$cache.from[0].style.visibility="hidden",this.$cache.to[0].style.visibility="hidden",this.$cache.single[0].style.visibility="visible",c=Math.max(a,d))):(this.$cache.from[0].style.visibility="visible",this.$cache.to[0].style.visibility="visible",this.$cache.single[0].style.visibility="hidden");this.$cache.min[0].style.visibility=
b<this.labels.p_min+1?"hidden":"visible";this.$cache.max[0].style.visibility=c>100-this.labels.p_max-1?"hidden":"visible"}}},drawShadow:function(){var a=this.options,b=this.$cache,d="number"===typeof a.from_min&&!isNaN(a.from_min),c="number"===typeof a.from_max&&!isNaN(a.from_max),e="number"===typeof a.to_min&&!isNaN(a.to_min),g="number"===typeof a.to_max&&!isNaN(a.to_max);"single"===a.type?a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-
d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_single[0].style.display="block",b.shad_single[0].style.left=d+"%",b.shad_single[0].style.width=c+"%"):b.shad_single[0].style.display="none":(a.from_shadow&&(d||c)?(d=this.convertToPercent(d?a.from_min:a.min),c=this.convertToPercent(c?a.from_max:a.max)-d,d=this.toFixed(d-this.coords.p_handle/100*d),c=this.toFixed(c-this.coords.p_handle/100*c),d+=this.coords.p_handle/2,b.shad_from[0].style.display=
"block",b.shad_from[0].style.left=d+"%",b.shad_from[0].style.width=c+"%"):b.shad_from[0].style.display="none",a.to_shadow&&(e||g)?(e=this.convertToPercent(e?a.to_min:a.min),a=this.convertToPercent(g?a.to_max:a.max)-e,e=this.toFixed(e-this.coords.p_handle/100*e),a=this.toFixed(a-this.coords.p_handle/100*a),e+=this.coords.p_handle/2,b.shad_to[0].style.display="block",b.shad_to[0].style.left=e+"%",b.shad_to[0].style.width=a+"%"):b.shad_to[0].style.display="none")},writeToInput:function(){"single"===
this.options.type?(this.options.values.length?this.$cache.input.prop("value",this.result.from_value):this.$cache.input.prop("value",this.result.from),this.$cache.input.data("from",this.result.from)):(this.options.values.length?this.$cache.input.prop("value",this.result.from_value+this.options.input_values_separator+this.result.to_value):this.$cache.input.prop("value",this.result.from+this.options.input_values_separator+this.result.to),this.$cache.input.data("from",this.result.from),this.$cache.input.data("to",
this.result.to))},callOnStart:function(){this.writeToInput();if(this.options.onStart&&"function"===typeof this.options.onStart)this.options.onStart(this.result)},callOnChange:function(){this.writeToInput();if(this.options.onChange&&"function"===typeof this.options.onChange)this.options.onChange(this.result)},callOnFinish:function(){this.writeToInput();if(this.options.onFinish&&"function"===typeof this.options.onFinish)this.options.onFinish(this.result)},callOnUpdate:function(){this.writeToInput();
if(this.options.onUpdate&&"function"===typeof this.options.onUpdate)this.options.onUpdate(this.result)},toggleInput:function(){this.$cache.input.toggleClass("irs-hidden-input")},convertToPercent:function(a,b){var d=this.options.max-this.options.min;return d?this.toFixed((b?a:a-this.options.min)/(d/100)):(this.no_diapason=!0,0)},convertToValue:function(a){var b=this.options.min,d=this.options.max,c=b.toString().split(".")[1],e=d.toString().split(".")[1],g,l,f=0,k=0;if(0===a)return this.options.min;
if(100===a)return this.options.max;c&&(f=g=c.length);e&&(f=l=e.length);g&&l&&(f=g>=l?g:l);0>b&&(k=Math.abs(b),b=+(b+k).toFixed(f),d=+(d+k).toFixed(f));a=(d-b)/100*a+b;(b=this.options.step.toString().split(".")[1])?a=+a.toFixed(b.length):(a/=this.options.step,a*=this.options.step,a=+a.toFixed(0));k&&(a-=k);k=b?+a.toFixed(b.length):this.toFixed(a);k<this.options.min?k=this.options.min:k>this.options.max&&(k=this.options.max);return k},calcWithStep:function(a){var b=Math.round(a/this.coords.p_step)*
this.coords.p_step;100<b&&(b=100);100===a&&(b=100);return this.toFixed(b)},checkMinInterval:function(a,b,d){var c=this.options;if(!c.min_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a<c.min_interval&&(a=b-c.min_interval):a-b<c.min_interval&&(a=b+c.min_interval);return this.convertToPercent(a)},checkMaxInterval:function(a,b,d){var c=this.options;if(!c.max_interval)return a;a=this.convertToValue(a);b=this.convertToValue(b);"from"===d?b-a>c.max_interval&&(a=b-c.max_interval):
a-b>c.max_interval&&(a=b+c.max_interval);return this.convertToPercent(a)},checkDiapason:function(a,b,d){a=this.convertToValue(a);var c=this.options;"number"!==typeof b&&(b=c.min);"number"!==typeof d&&(d=c.max);a<b&&(a=b);a>d&&(a=d);return this.convertToPercent(a)},toFixed:function(a){a=a.toFixed(20);return+a},_prettify:function(a){return this.options.prettify_enabled?this.options.prettify&&"function"===typeof this.options.prettify?this.options.prettify(a):this.prettify(a):a},prettify:function(a){return a.toString().replace(/(\d{1,3}(?=(?:\d\d\d)+(?!\d)))/g,
"$1"+this.options.prettify_separator)},checkEdges:function(a,b){if(!this.options.force_edges)return this.toFixed(a);0>a?a=0:a>100-b&&(a=100-b);return this.toFixed(a)},validate:function(){var a=this.options,b=this.result,d=a.values,c=d.length,e,g;"string"===typeof a.min&&(a.min=+a.min);"string"===typeof a.max&&(a.max=+a.max);"string"===typeof a.from&&(a.from=+a.from);"string"===typeof a.to&&(a.to=+a.to);"string"===typeof a.step&&(a.step=+a.step);"string"===typeof a.from_min&&(a.from_min=+a.from_min);
"string"===typeof a.from_max&&(a.from_max=+a.from_max);"string"===typeof a.to_min&&(a.to_min=+a.to_min);"string"===typeof a.to_max&&(a.to_max=+a.to_max);"string"===typeof a.keyboard_step&&(a.keyboard_step=+a.keyboard_step);"string"===typeof a.grid_num&&(a.grid_num=+a.grid_num);a.max<a.min&&(a.max=a.min);if(c)for(a.p_values=[],a.min=0,a.max=c-1,a.step=1,a.grid_num=a.max,a.grid_snap=!0,g=0;g<c;g++)e=+d[g],isNaN(e)?e=d[g]:(d[g]=e,e=this._prettify(e)),a.p_values.push(e);if("number"!==typeof a.from||isNaN(a.from))a.from=
a.min;if("number"!==typeof a.to||isNaN(a.to))a.to=a.max;"single"===a.type?(a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max)):(a.from<a.min&&(a.from=a.min),a.from>a.max&&(a.from=a.max),a.to<a.min&&(a.to=a.min),a.to>a.max&&(a.to=a.max),this.update_check.from&&(this.update_check.from!==a.from&&a.from>a.to&&(a.from=a.to),this.update_check.to!==a.to&&a.to<a.from&&(a.to=a.from)),a.from>a.to&&(a.from=a.to),a.to<a.from&&(a.to=a.from));if("number"!==typeof a.step||isNaN(a.step)||!a.step||0>a.step)a.step=
1;if("number"!==typeof a.keyboard_step||isNaN(a.keyboard_step)||!a.keyboard_step||0>a.keyboard_step)a.keyboard_step=5;"number"===typeof a.from_min&&a.from<a.from_min&&(a.from=a.from_min);"number"===typeof a.from_max&&a.from>a.from_max&&(a.from=a.from_max);"number"===typeof a.to_min&&a.to<a.to_min&&(a.to=a.to_min);"number"===typeof a.to_max&&a.from>a.to_max&&(a.to=a.to_max);if(b){b.min!==a.min&&(b.min=a.min);b.max!==a.max&&(b.max=a.max);if(b.from<b.min||b.from>b.max)b.from=a.from;if(b.to<b.min||b.to>
b.max)b.to=a.to}if("number"!==typeof a.min_interval||isNaN(a.min_interval)||!a.min_interval||0>a.min_interval)a.min_interval=0;if("number"!==typeof a.max_interval||isNaN(a.max_interval)||!a.max_interval||0>a.max_interval)a.max_interval=0;a.min_interval&&a.min_interval>a.max-a.min&&(a.min_interval=a.max-a.min);a.max_interval&&a.max_interval>a.max-a.min&&(a.max_interval=a.max-a.min)},decorate:function(a,b){var d="",c=this.options;c.prefix&&(d+=c.prefix);d+=a;c.max_postfix&&(c.values.length&&a===c.p_values[c.max]?
(d+=c.max_postfix,c.postfix&&(d+=" ")):b===c.max&&(d+=c.max_postfix,c.postfix&&(d+=" ")));c.postfix&&(d+=c.postfix);return d},updateFrom:function(){this.result.from=this.options.from;this.result.from_percent=this.convertToPercent(this.result.from);this.options.values&&(this.result.from_value=this.options.values[this.result.from])},updateTo:function(){this.result.to=this.options.to;this.result.to_percent=this.convertToPercent(this.result.to);this.options.values&&(this.result.to_value=this.options.values[this.result.to])},
updateResult:function(){this.result.min=this.options.min;this.result.max=this.options.max;this.updateFrom();this.updateTo()},appendGrid:function(){if(this.options.grid){var a=this.options,b,d;b=a.max-a.min;var c=a.grid_num,e,g,f=4,h,k,m,n="";this.calcGridMargin();a.grid_snap?(c=b/a.step,e=this.toFixed(a.step/(b/100))):e=this.toFixed(100/c);4<c&&(f=3);7<c&&(f=2);14<c&&(f=1);28<c&&(f=0);for(b=0;b<c+1;b++){h=f;g=this.toFixed(e*b);100<g&&(g=100,h-=2,0>h&&(h=0));this.coords.big[b]=g;k=(g-e*(b-1))/(h+1);
for(d=1;d<=h&&0!==g;d++)m=this.toFixed(g-k*d),n+='<span class="irs-grid-pol small" style="left: '+m+'%"></span>';n+='<span class="irs-grid-pol" style="left: '+g+'%"></span>';d=this.convertToValue(g);d=a.values.length?a.p_values[d]:this._prettify(d);n+='<span class="irs-grid-text js-grid-text-'+b+'" style="left: '+g+'%">'+d+"</span>"}this.coords.big_num=Math.ceil(c+1);this.$cache.cont.addClass("irs-with-grid");this.$cache.grid.html(n);this.cacheGridLabels()}},cacheGridLabels:function(){var a,b,d=this.coords.big_num;
for(b=0;b<d;b++)a=this.$cache.grid.find(".js-grid-text-"+b),this.$cache.grid_labels.push(a);this.calcGridLabels()},calcGridLabels:function(){var a,b;b=[];var d=[],c=this.coords.big_num;for(a=0;a<c;a++)this.coords.big_w[a]=this.$cache.grid_labels[a].outerWidth(!1),this.coords.big_p[a]=this.toFixed(this.coords.big_w[a]/this.coords.w_rs*100),this.coords.big_x[a]=this.toFixed(this.coords.big_p[a]/2),b[a]=this.toFixed(this.coords.big[a]-this.coords.big_x[a]),d[a]=this.toFixed(b[a]+this.coords.big_p[a]);
this.options.force_edges&&(b[0]<-this.coords.grid_gap&&(b[0]=-this.coords.grid_gap,d[0]=this.toFixed(b[0]+this.coords.big_p[0]),this.coords.big_x[0]=this.coords.grid_gap),d[c-1]>100+this.coords.grid_gap&&(d[c-1]=100+this.coords.grid_gap,b[c-1]=this.toFixed(d[c-1]-this.coords.big_p[c-1]),this.coords.big_x[c-1]=this.toFixed(this.coords.big_p[c-1]-this.coords.grid_gap)));this.calcGridCollision(2,b,d);this.calcGridCollision(4,b,d);for(a=0;a<c;a++)b=this.$cache.grid_labels[a][0],this.coords.big_x[a]!==
Number.POSITIVE_INFINITY&&(b.style.marginLeft=-this.coords.big_x[a]+"%")},calcGridCollision:function(a,b,d){var c,e,g,f=this.coords.big_num;for(c=0;c<f;c+=a){e=c+a/2;if(e>=f)break;g=this.$cache.grid_labels[e][0];g.style.visibility=d[c]<=b[e]?"visible":"hidden"}},calcGridMargin:function(){this.options.grid_margin&&(this.coords.w_rs=this.$cache.rs.outerWidth(!1),this.coords.w_rs&&(this.coords.w_handle="single"===this.options.type?this.$cache.s_single.outerWidth(!1):this.$cache.s_from.outerWidth(!1),
this.coords.p_handle=this.toFixed(this.coords.w_handle/this.coords.w_rs*100),this.coords.grid_gap=this.toFixed(this.coords.p_handle/2-.1),this.$cache.grid[0].style.width=this.toFixed(100-this.coords.p_handle)+"%",this.$cache.grid[0].style.left=this.coords.grid_gap+"%"))},update:function(a){this.input&&(this.is_update=!0,this.options.from=this.result.from,this.options.to=this.result.to,this.update_check.from=this.result.from,this.update_check.to=this.result.to,this.options=f.extend(this.options,a),
this.validate(),this.updateResult(a),this.toggleInput(),this.remove(),this.init(!0))},reset:function(){this.input&&(this.updateResult(),this.update())},destroy:function(){this.input&&(this.toggleInput(),this.$cache.input.prop("readonly",!1),f.data(this.input,"ionRangeSlider",null),this.remove(),this.options=this.input=null)}};f.fn.ionRangeSlider=function(a){return this.each(function(){f.data(this,"ionRangeSlider")||f.data(this,"ionRangeSlider",new r(this,a,u++))})};(function(){for(var a=0,b=["ms",
"moz","webkit","o"],d=0;d<b.length&&!h.requestAnimationFrame;++d)h.requestAnimationFrame=h[b[d]+"RequestAnimationFrame"],h.cancelAnimationFrame=h[b[d]+"CancelAnimationFrame"]||h[b[d]+"CancelRequestAnimationFrame"];h.requestAnimationFrame||(h.requestAnimationFrame=function(b,d){var c=(new Date).getTime(),e=Math.max(0,16-(c-a)),f=h.setTimeout(function(){b(c+e)},e);a=c+e;return f});h.cancelAnimationFrame||(h.cancelAnimationFrame=function(a){clearTimeout(a)})})()});
/**
* Ajax Autocomplete for jQuery, version 1.3.0
* (c) 2017 Tomas Kirda
*
* Ajax Autocomplete for jQuery is freely distributable under the terms of an MIT-style license.
* For details, see the web site: https://github.com/devbridge/jQuery-Autocomplete
*/
!function(a){"use strict";"function"==typeof define&&define.amd?define(["jquery"],a):a("object"==typeof exports&&"function"==typeof require?require("jquery"):jQuery)}(function(a){"use strict";function b(c,d){var e=a.noop,f=this,g={ajaxSettings:{},autoSelectFirst:!1,appendTo:document.body,serviceUrl:null,lookup:null,onSelect:null,width:"auto",minChars:1,maxHeight:300,deferRequestBy:0,params:{},formatResult:b.formatResult,formatGroup:b.formatGroup,delimiter:null,zIndex:9999,type:"GET",noCache:!1,onSearchStart:e,onSearchComplete:e,onSearchError:e,preserveInput:!1,containerClass:"autocomplete-suggestions",tabDisabled:!1,dataType:"text",currentRequest:null,triggerSelectOnValidInput:!0,preventBadQueries:!0,lookupFilter:function(a,b,c){return-1!==a.value.toLowerCase().indexOf(c)},paramName:"query",transformResult:function(b){return"string"==typeof b?a.parseJSON(b):b},showNoSuggestionNotice:!1,noSuggestionNotice:"No results",orientation:"bottom",forceFixPosition:!1};f.element=c,f.el=a(c),f.suggestions=[],f.badQueries=[],f.selectedIndex=-1,f.currentValue=f.element.value,f.intervalId=0,f.cachedResponse={},f.onChangeInterval=null,f.onChange=null,f.isLocal=!1,f.suggestionsContainer=null,f.noSuggestionsContainer=null,f.options=a.extend({},g,d),f.classes={selected:"autocomplete-selected",suggestion:"autocomplete-suggestion"},f.hint=null,f.hintValue="",f.selection=null,f.initialize(),f.setOptions(d)}var c=function(){return{escapeRegExChars:function(a){return a.replace(/[|\\{}()[\]^$+*?.]/g,"\\$&")},createNode:function(a){var b=document.createElement("div");return b.className=a,b.style.position="absolute",b.style.display="none",b}}}(),d={ESC:27,TAB:9,RETURN:13,LEFT:37,UP:38,RIGHT:39,DOWN:40};b.utils=c,a.Autocomplete=b,b.formatResult=function(a,b){if(!b)return a.value;var d="("+c.escapeRegExChars(b)+")";return a.value.replace(new RegExp(d,"gi"),"<strong>$1</strong>").replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/&lt;(\/?strong)&gt;/g,"<$1>")},b.formatGroup=function(a,b){return'<div class="autocomplete-group"><strong>'+b+"</strong></div>"},b.prototype={killerFn:null,initialize:function(){var c,d=this,e="."+d.classes.suggestion,f=d.classes.selected,g=d.options;d.element.setAttribute("autocomplete","off"),d.killerFn=function(b){a(b.target).closest("."+d.options.containerClass).length||(d.killSuggestions(),d.disableKillerFn())},d.noSuggestionsContainer=a('<div class="autocomplete-no-suggestion"></div>').html(this.options.noSuggestionNotice).get(0),d.suggestionsContainer=b.utils.createNode(g.containerClass),c=a(d.suggestionsContainer),c.appendTo(g.appendTo),"auto"!==g.width&&c.css("width",g.width),c.on("mouseover.autocomplete",e,function(){d.activate(a(this).data("index"))}),c.on("mouseout.autocomplete",function(){d.selectedIndex=-1,c.children("."+f).removeClass(f)}),c.on("click.autocomplete",e,function(){return d.select(a(this).data("index")),!1}),d.fixPositionCapture=function(){d.visible&&d.fixPosition()},a(window).on("resize.autocomplete",d.fixPositionCapture),d.el.on("keydown.autocomplete",function(a){d.onKeyPress(a)}),d.el.on("keyup.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("blur.autocomplete",function(){d.onBlur()}),d.el.on("focus.autocomplete",function(){d.onFocus()}),d.el.on("change.autocomplete",function(a){d.onKeyUp(a)}),d.el.on("input.autocomplete",function(a){d.onKeyUp(a)})},onFocus:function(){var a=this;a.fixPosition(),a.el.val().length>=a.options.minChars&&a.onValueChange()},onBlur:function(){this.enableKillerFn()},abortAjax:function(){var a=this;a.currentRequest&&(a.currentRequest.abort(),a.currentRequest=null)},setOptions:function(b){var c=this,d=c.options;a.extend(d,b),c.isLocal=a.isArray(d.lookup),c.isLocal&&(d.lookup=c.verifySuggestionsFormat(d.lookup)),d.orientation=c.validateOrientation(d.orientation,"bottom"),a(c.suggestionsContainer).css({"max-height":d.maxHeight+"px",width:d.width+"px","z-index":d.zIndex})},clearCache:function(){this.cachedResponse={},this.badQueries=[]},clear:function(){this.clearCache(),this.currentValue="",this.suggestions=[]},disable:function(){var a=this;a.disabled=!0,clearInterval(a.onChangeInterval),a.abortAjax()},enable:function(){this.disabled=!1},fixPosition:function(){var b=this,c=a(b.suggestionsContainer),d=c.parent().get(0);if(d===document.body||b.options.forceFixPosition){var e=b.options.orientation,f=c.outerHeight(),g=b.el.outerHeight(),h=b.el.offset(),i={top:h.top,left:h.left};if("auto"===e){var j=a(window).height(),k=a(window).scrollTop(),l=-k+h.top-f,m=k+j-(h.top+g+f);e=Math.max(l,m)===l?"top":"bottom"}if("top"===e?i.top+=-f:i.top+=g,d!==document.body){var n,o=c.css("opacity");b.visible||c.css("opacity",0).show(),n=c.offsetParent().offset(),i.top-=n.top,i.left-=n.left,b.visible||c.css("opacity",o).hide()}"auto"===b.options.width&&(i.width=b.el.outerWidth()+"px"),c.css(i)}},enableKillerFn:function(){var b=this;a(document).on("click.autocomplete",b.killerFn)},disableKillerFn:function(){var b=this;a(document).off("click.autocomplete",b.killerFn)},killSuggestions:function(){var a=this;a.stopKillSuggestions(),a.intervalId=window.setInterval(function(){a.visible&&(a.options.preserveInput||a.el.val(a.currentValue),a.hide()),a.stopKillSuggestions()},50)},stopKillSuggestions:function(){window.clearInterval(this.intervalId)},isCursorAtEnd:function(){var a,b=this,c=b.el.val().length,d=b.element.selectionStart;return"number"==typeof d?d===c:document.selection?(a=document.selection.createRange(),a.moveStart("character",-c),c===a.text.length):!0},onKeyPress:function(a){var b=this;if(!b.disabled&&!b.visible&&a.which===d.DOWN&&b.currentValue)return void b.suggest();if(!b.disabled&&b.visible){switch(a.which){case d.ESC:b.el.val(b.currentValue),b.hide();break;case d.RIGHT:if(b.hint&&b.options.onHint&&b.isCursorAtEnd()){b.selectHint();break}return;case d.TAB:if(b.hint&&b.options.onHint)return void b.selectHint();if(-1===b.selectedIndex)return void b.hide();if(b.select(b.selectedIndex),b.options.tabDisabled===!1)return;break;case d.RETURN:if(-1===b.selectedIndex)return void b.hide();b.select(b.selectedIndex);break;case d.UP:b.moveUp();break;case d.DOWN:b.moveDown();break;default:return}a.stopImmediatePropagation(),a.preventDefault()}},onKeyUp:function(a){var b=this;if(!b.disabled){switch(a.which){case d.UP:case d.DOWN:return}clearInterval(b.onChangeInterval),b.currentValue!==b.el.val()&&(b.findBestHint(),b.options.deferRequestBy>0?b.onChangeInterval=setInterval(function(){b.onValueChange()},b.options.deferRequestBy):b.onValueChange())}},onValueChange:function(){var b=this,c=b.options,d=b.el.val(),e=b.getQuery(d);return b.selection&&b.currentValue!==e&&(b.selection=null,(c.onInvalidateSelection||a.noop).call(b.element)),clearInterval(b.onChangeInterval),b.currentValue=d,b.selectedIndex=-1,c.triggerSelectOnValidInput&&b.isExactMatch(e)?void b.select(0):void(e.length<c.minChars?b.hide():b.getSuggestions(e))},isExactMatch:function(a){var b=this.suggestions;return 1===b.length&&b[0].value.toLowerCase()===a.toLowerCase()},getQuery:function(b){var c,d=this.options.delimiter;return d?(c=b.split(d),a.trim(c[c.length-1])):b},getSuggestionsLocal:function(b){var c,d=this,e=d.options,f=b.toLowerCase(),g=e.lookupFilter,h=parseInt(e.lookupLimit,10);return c={suggestions:a.grep(e.lookup,function(a){return g(a,b,f)})},h&&c.suggestions.length>h&&(c.suggestions=c.suggestions.slice(0,h)),c},getSuggestions:function(b){var c,d,e,f,g=this,h=g.options,i=h.serviceUrl;if(h.params[h.paramName]=b,d=h.ignoreParams?null:h.params,h.onSearchStart.call(g.element,h.params)!==!1){if(a.isFunction(h.lookup))return void h.lookup(b,function(a){g.suggestions=a.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,a.suggestions)});g.isLocal?c=g.getSuggestionsLocal(b):(a.isFunction(i)&&(i=i.call(g.element,b)),e=i+"?"+a.param(d||{}),c=g.cachedResponse[e]),c&&a.isArray(c.suggestions)?(g.suggestions=c.suggestions,g.suggest(),h.onSearchComplete.call(g.element,b,c.suggestions)):g.isBadQuery(b)?h.onSearchComplete.call(g.element,b,[]):(g.abortAjax(),f={url:i,data:d,type:h.type,dataType:h.dataType},a.extend(f,h.ajaxSettings),g.currentRequest=a.ajax(f).done(function(a){var c;g.currentRequest=null,c=h.transformResult(a,b),g.processResponse(c,b,e),h.onSearchComplete.call(g.element,b,c.suggestions)}).fail(function(a,c,d){h.onSearchError.call(g.element,b,a,c,d)}))}},isBadQuery:function(a){if(!this.options.preventBadQueries)return!1;for(var b=this.badQueries,c=b.length;c--;)if(0===a.indexOf(b[c]))return!0;return!1},hide:function(){var b=this,c=a(b.suggestionsContainer);a.isFunction(b.options.onHide)&&b.visible&&b.options.onHide.call(b.element,c),b.visible=!1,b.selectedIndex=-1,clearInterval(b.onChangeInterval),a(b.suggestionsContainer).hide(),b.signalHint(null)},suggest:function(){if(!this.suggestions.length)return void(this.options.showNoSuggestionNotice?this.noSuggestions():this.hide());var b,c=this,d=c.options,e=d.groupBy,f=d.formatResult,g=c.getQuery(c.currentValue),h=c.classes.suggestion,i=c.classes.selected,j=a(c.suggestionsContainer),k=a(c.noSuggestionsContainer),l=d.beforeRender,m="",n=function(a,c){var f=a.data[e];return b===f?"":(b=f,d.formatGroup(a,b))};return d.triggerSelectOnValidInput&&c.isExactMatch(g)?void c.select(0):(a.each(c.suggestions,function(a,b){e&&(m+=n(b,g,a)),m+='<div class="'+h+'" data-index="'+a+'">'+f(b,g,a)+"</div>"}),this.adjustContainerWidth(),k.detach(),j.html(m),a.isFunction(l)&&l.call(c.element,j,c.suggestions),c.fixPosition(),j.show(),d.autoSelectFirst&&(c.selectedIndex=0,j.scrollTop(0),j.children("."+h).first().addClass(i)),c.visible=!0,void c.findBestHint())},noSuggestions:function(){var b=this,c=a(b.suggestionsContainer),d=a(b.noSuggestionsContainer);this.adjustContainerWidth(),d.detach(),c.empty(),c.append(d),b.fixPosition(),c.show(),b.visible=!0},adjustContainerWidth:function(){var b,c=this,d=c.options,e=a(c.suggestionsContainer);"auto"===d.width?(b=c.el.outerWidth(),e.css("width",b>0?b:300)):"flex"===d.width&&e.css("width","")},findBestHint:function(){var b=this,c=b.el.val().toLowerCase(),d=null;c&&(a.each(b.suggestions,function(a,b){var e=0===b.value.toLowerCase().indexOf(c);return e&&(d=b),!e}),b.signalHint(d))},signalHint:function(b){var c="",d=this;b&&(c=d.currentValue+b.value.substr(d.currentValue.length)),d.hintValue!==c&&(d.hintValue=c,d.hint=b,(this.options.onHint||a.noop)(c))},verifySuggestionsFormat:function(b){return b.length&&"string"==typeof b[0]?a.map(b,function(a){return{value:a,data:null}}):b},validateOrientation:function(b,c){return b=a.trim(b||"").toLowerCase(),-1===a.inArray(b,["auto","bottom","top"])&&(b=c),b},processResponse:function(a,b,c){var d=this,e=d.options;a.suggestions=d.verifySuggestionsFormat(a.suggestions),e.noCache||(d.cachedResponse[c]=a,e.preventBadQueries&&!a.suggestions.length&&d.badQueries.push(b)),b===d.getQuery(d.currentValue)&&(d.suggestions=a.suggestions,d.suggest())},activate:function(b){var c,d=this,e=d.classes.selected,f=a(d.suggestionsContainer),g=f.find("."+d.classes.suggestion);return f.find("."+e).removeClass(e),d.selectedIndex=b,-1!==d.selectedIndex&&g.length>d.selectedIndex?(c=g.get(d.selectedIndex),a(c).addClass(e),c):null},selectHint:function(){var b=this,c=a.inArray(b.hint,b.suggestions);b.select(c)},select:function(a){var b=this;b.hide(),b.onSelect(a),b.disableKillerFn()},moveUp:function(){var b=this;if(-1!==b.selectedIndex)return 0===b.selectedIndex?(a(b.suggestionsContainer).children().first().removeClass(b.classes.selected),b.selectedIndex=-1,b.el.val(b.currentValue),void b.findBestHint()):void b.adjustScroll(b.selectedIndex-1)},moveDown:function(){var a=this;a.selectedIndex!==a.suggestions.length-1&&a.adjustScroll(a.selectedIndex+1)},adjustScroll:function(b){var c=this,d=c.activate(b);if(d){var e,f,g,h=a(d).outerHeight();e=d.offsetTop,f=a(c.suggestionsContainer).scrollTop(),g=f+c.options.maxHeight-h,f>e?a(c.suggestionsContainer).scrollTop(e):e>g&&a(c.suggestionsContainer).scrollTop(e-c.options.maxHeight+h),c.options.preserveInput||c.el.val(c.getValue(c.suggestions[b].value)),c.signalHint(null)}},onSelect:function(b){var c=this,d=c.options.onSelect,e=c.suggestions[b];c.currentValue=c.getValue(e.value),c.currentValue===c.el.val()||c.options.preserveInput||c.el.val(c.currentValue),c.signalHint(null),c.suggestions=[],c.selection=e,a.isFunction(d)&&d.call(c.element,e)},getValue:function(a){var b,c,d=this,e=d.options.delimiter;return e?(b=d.currentValue,c=b.split(e),1===c.length?a:b.substr(0,b.length-c[c.length-1].length)+a):a},dispose:function(){var b=this;b.el.off(".autocomplete").removeData("autocomplete"),b.disableKillerFn(),a(window).off("resize.autocomplete",b.fixPositionCapture),a(b.suggestionsContainer).remove()}},a.fn.autocomplete=a.fn.devbridgeAutocomplete=function(c,d){var e="autocomplete";return arguments.length?this.each(function(){var f=a(this),g=f.data(e);"string"==typeof c?g&&"function"==typeof g[c]&&g[c](d):(g&&g.dispose&&g.dispose(),g=new b(this,c),f.data(e,g))}):this.first().data(e)}});
\ No newline at end of file
// Magnific Popup v1.1.0 by Dmitry Semenov
// http://bit.ly/magnific-popup#build=inline+image+ajax+iframe+gallery+retina+imagezoom
(function(a){typeof define=="function"&&define.amd?define(["jquery"],a):typeof exports=="object"?a(require("jquery")):a(window.jQuery||window.Zepto)})(function(a){var b="Close",c="BeforeClose",d="AfterClose",e="BeforeAppend",f="MarkupParse",g="Open",h="Change",i="mfp",j="."+i,k="mfp-ready",l="mfp-removing",m="mfp-prevent-close",n,o=function(){},p=!!window.jQuery,q,r=a(window),s,t,u,v,w=function(a,b){n.ev.on(i+a+j,b)},x=function(b,c,d,e){var f=document.createElement("div");return f.className="mfp-"+b,d&&(f.innerHTML=d),e?c&&c.appendChild(f):(f=a(f),c&&f.appendTo(c)),f},y=function(b,c){n.ev.triggerHandler(i+b,c),n.st.callbacks&&(b=b.charAt(0).toLowerCase()+b.slice(1),n.st.callbacks[b]&&n.st.callbacks[b].apply(n,a.isArray(c)?c:[c]))},z=function(b){if(b!==v||!n.currTemplate.closeBtn)n.currTemplate.closeBtn=a(n.st.closeMarkup.replace("%title%",n.st.tClose)),v=b;return n.currTemplate.closeBtn},A=function(){a.magnificPopup.instance||(n=new o,n.init(),a.magnificPopup.instance=n)},B=function(){var a=document.createElement("p").style,b=["ms","O","Moz","Webkit"];if(a.transition!==undefined)return!0;while(b.length)if(b.pop()+"Transition"in a)return!0;return!1};o.prototype={constructor:o,init:function(){var b=navigator.appVersion;n.isLowIE=n.isIE8=document.all&&!document.addEventListener,n.isAndroid=/android/gi.test(b),n.isIOS=/iphone|ipad|ipod/gi.test(b),n.supportsTransition=B(),n.probablyMobile=n.isAndroid||n.isIOS||/(Opera Mini)|Kindle|webOS|BlackBerry|(Opera Mobi)|(Windows Phone)|IEMobile/i.test(navigator.userAgent),s=a(document),n.popupsCache={}},open:function(b){var c;if(b.isObj===!1){n.items=b.items.toArray(),n.index=0;var d=b.items,e;for(c=0;c<d.length;c++){e=d[c],e.parsed&&(e=e.el[0]);if(e===b.el[0]){n.index=c;break}}}else n.items=a.isArray(b.items)?b.items:[b.items],n.index=b.index||0;if(n.isOpen){n.updateItemHTML();return}n.types=[],u="",b.mainEl&&b.mainEl.length?n.ev=b.mainEl.eq(0):n.ev=s,b.key?(n.popupsCache[b.key]||(n.popupsCache[b.key]={}),n.currTemplate=n.popupsCache[b.key]):n.currTemplate={},n.st=a.extend(!0,{},a.magnificPopup.defaults,b),n.fixedContentPos=n.st.fixedContentPos==="auto"?!n.probablyMobile:n.st.fixedContentPos,n.st.modal&&(n.st.closeOnContentClick=!1,n.st.closeOnBgClick=!1,n.st.showCloseBtn=!1,n.st.enableEscapeKey=!1),n.bgOverlay||(n.bgOverlay=x("bg").on("click"+j,function(){n.close()}),n.wrap=x("wrap").attr("tabindex",-1).on("click"+j,function(a){n._checkIfClose(a.target)&&n.close()}),n.container=x("container",n.wrap)),n.contentContainer=x("content"),n.st.preloader&&(n.preloader=x("preloader",n.container,n.st.tLoading));var h=a.magnificPopup.modules;for(c=0;c<h.length;c++){var i=h[c];i=i.charAt(0).toUpperCase()+i.slice(1),n["init"+i].call(n)}y("BeforeOpen"),n.st.showCloseBtn&&(n.st.closeBtnInside?(w(f,function(a,b,c,d){c.close_replaceWith=z(d.type)}),u+=" mfp-close-btn-in"):n.wrap.append(z())),n.st.alignTop&&(u+=" mfp-align-top"),n.fixedContentPos?n.wrap.css({overflow:n.st.overflowY,overflowX:"hidden",overflowY:n.st.overflowY}):n.wrap.css({top:r.scrollTop(),position:"absolute"}),(n.st.fixedBgPos===!1||n.st.fixedBgPos==="auto"&&!n.fixedContentPos)&&n.bgOverlay.css({height:s.height(),position:"absolute"}),n.st.enableEscapeKey&&s.on("keyup"+j,function(a){a.keyCode===27&&n.close()}),r.on("resize"+j,function(){n.updateSize()}),n.st.closeOnContentClick||(u+=" mfp-auto-cursor"),u&&n.wrap.addClass(u);var l=n.wH=r.height(),m={};if(n.fixedContentPos&&n._hasScrollBar(l)){var o=n._getScrollbarSize();o&&(m.marginRight=o)}n.fixedContentPos&&(n.isIE7?a("body, html").css("overflow","hidden"):m.overflow="hidden");var p=n.st.mainClass;return n.isIE7&&(p+=" mfp-ie7"),p&&n._addClassToMFP(p),n.updateItemHTML(),y("BuildControls"),a("html").css(m),n.bgOverlay.add(n.wrap).prependTo(n.st.prependTo||a(document.body)),n._lastFocusedEl=document.activeElement,setTimeout(function(){n.content?(n._addClassToMFP(k),n._setFocus()):n.bgOverlay.addClass(k),s.on("focusin"+j,n._onFocusIn)},16),n.isOpen=!0,n.updateSize(l),y(g),b},close:function(){if(!n.isOpen)return;y(c),n.isOpen=!1,n.st.removalDelay&&!n.isLowIE&&n.supportsTransition?(n._addClassToMFP(l),setTimeout(function(){n._close()},n.st.removalDelay)):n._close()},_close:function(){y(b);var c=l+" "+k+" ";n.bgOverlay.detach(),n.wrap.detach(),n.container.empty(),n.st.mainClass&&(c+=n.st.mainClass+" "),n._removeClassFromMFP(c);if(n.fixedContentPos){var e={marginRight:""};n.isIE7?a("body, html").css("overflow",""):e.overflow="",a("html").css(e)}s.off("keyup"+j+" focusin"+j),n.ev.off(j),n.wrap.attr("class","mfp-wrap").removeAttr("style"),n.bgOverlay.attr("class","mfp-bg"),n.container.attr("class","mfp-container"),n.st.showCloseBtn&&(!n.st.closeBtnInside||n.currTemplate[n.currItem.type]===!0)&&n.currTemplate.closeBtn&&n.currTemplate.closeBtn.detach(),n.st.autoFocusLast&&n._lastFocusedEl&&a(n._lastFocusedEl).focus(),n.currItem=null,n.content=null,n.currTemplate=null,n.prevHeight=0,y(d)},updateSize:function(a){if(n.isIOS){var b=document.documentElement.clientWidth/window.innerWidth,c=window.innerHeight*b;n.wrap.css("height",c),n.wH=c}else n.wH=a||r.height();n.fixedContentPos||n.wrap.css("height",n.wH),y("Resize")},updateItemHTML:function(){var b=n.items[n.index];n.contentContainer.detach(),n.content&&n.content.detach(),b.parsed||(b=n.parseEl(n.index));var c=b.type;y("BeforeChange",[n.currItem?n.currItem.type:"",c]),n.currItem=b;if(!n.currTemplate[c]){var d=n.st[c]?n.st[c].markup:!1;y("FirstMarkupParse",d),d?n.currTemplate[c]=a(d):n.currTemplate[c]=!0}t&&t!==b.type&&n.container.removeClass("mfp-"+t+"-holder");var e=n["get"+c.charAt(0).toUpperCase()+c.slice(1)](b,n.currTemplate[c]);n.appendContent(e,c),b.preloaded=!0,y(h,b),t=b.type,n.container.prepend(n.contentContainer),y("AfterChange")},appendContent:function(a,b){n.content=a,a?n.st.showCloseBtn&&n.st.closeBtnInside&&n.currTemplate[b]===!0?n.content.find(".mfp-close").length||n.content.append(z()):n.content=a:n.content="",y(e),n.container.addClass("mfp-"+b+"-holder"),n.contentContainer.append(n.content)},parseEl:function(b){var c=n.items[b],d;c.tagName?c={el:a(c)}:(d=c.type,c={data:c,src:c.src});if(c.el){var e=n.types;for(var f=0;f<e.length;f++)if(c.el.hasClass("mfp-"+e[f])){d=e[f];break}c.src=c.el.attr("data-mfp-src"),c.src||(c.src=c.el.attr("href"))}return c.type=d||n.st.type||"inline",c.index=b,c.parsed=!0,n.items[b]=c,y("ElementParse",c),n.items[b]},addGroup:function(a,b){var c=function(c){c.mfpEl=this,n._openClick(c,a,b)};b||(b={});var d="click.magnificPopup";b.mainEl=a,b.items?(b.isObj=!0,a.off(d).on(d,c)):(b.isObj=!1,b.delegate?a.off(d).on(d,b.delegate,c):(b.items=a,a.off(d).on(d,c)))},_openClick:function(b,c,d){var e=d.midClick!==undefined?d.midClick:a.magnificPopup.defaults.midClick;if(!e&&(b.which===2||b.ctrlKey||b.metaKey||b.altKey||b.shiftKey))return;var f=d.disableOn!==undefined?d.disableOn:a.magnificPopup.defaults.disableOn;if(f)if(a.isFunction(f)){if(!f.call(n))return!0}else if(r.width()<f)return!0;b.type&&(b.preventDefault(),n.isOpen&&b.stopPropagation()),d.el=a(b.mfpEl),d.delegate&&(d.items=c.find(d.delegate)),n.open(d)},updateStatus:function(a,b){if(n.preloader){q!==a&&n.container.removeClass("mfp-s-"+q),!b&&a==="loading"&&(b=n.st.tLoading);var c={status:a,text:b};y("UpdateStatus",c),a=c.status,b=c.text,n.preloader.html(b),n.preloader.find("a").on("click",function(a){a.stopImmediatePropagation()}),n.container.addClass("mfp-s-"+a),q=a}},_checkIfClose:function(b){if(a(b).hasClass(m))return;var c=n.st.closeOnContentClick,d=n.st.closeOnBgClick;if(c&&d)return!0;if(!n.content||a(b).hasClass("mfp-close")||n.preloader&&b===n.preloader[0])return!0;if(b!==n.content[0]&&!a.contains(n.content[0],b)){if(d&&a.contains(document,b))return!0}else if(c)return!0;return!1},_addClassToMFP:function(a){n.bgOverlay.addClass(a),n.wrap.addClass(a)},_removeClassFromMFP:function(a){this.bgOverlay.removeClass(a),n.wrap.removeClass(a)},_hasScrollBar:function(a){return(n.isIE7?s.height():document.body.scrollHeight)>(a||r.height())},_setFocus:function(){(n.st.focus?n.content.find(n.st.focus).eq(0):n.wrap).focus()},_onFocusIn:function(b){if(b.target!==n.wrap[0]&&!a.contains(n.wrap[0],b.target))return n._setFocus(),!1},_parseMarkup:function(b,c,d){var e;d.data&&(c=a.extend(d.data,c)),y(f,[b,c,d]),a.each(c,function(c,d){if(d===undefined||d===!1)return!0;e=c.split("_");if(e.length>1){var f=b.find(j+"-"+e[0]);if(f.length>0){var g=e[1];g==="replaceWith"?f[0]!==d[0]&&f.replaceWith(d):g==="img"?f.is("img")?f.attr("src",d):f.replaceWith(a("<img>").attr("src",d).attr("class",f.attr("class"))):f.attr(e[1],d)}}else b.find(j+"-"+c).html(d)})},_getScrollbarSize:function(){if(n.scrollbarSize===undefined){var a=document.createElement("div");a.style.cssText="width: 99px; height: 99px; overflow: scroll; position: absolute; top: -9999px;",document.body.appendChild(a),n.scrollbarSize=a.offsetWidth-a.clientWidth,document.body.removeChild(a)}return n.scrollbarSize}},a.magnificPopup={instance:null,proto:o.prototype,modules:[],open:function(b,c){return A(),b?b=a.extend(!0,{},b):b={},b.isObj=!0,b.index=c||0,this.instance.open(b)},close:function(){return a.magnificPopup.instance&&a.magnificPopup.instance.close()},registerModule:function(b,c){c.options&&(a.magnificPopup.defaults[b]=c.options),a.extend(this.proto,c.proto),this.modules.push(b)},defaults:{disableOn:0,key:null,midClick:!1,mainClass:"",preloader:!0,focus:"",closeOnContentClick:!1,closeOnBgClick:!0,closeBtnInside:!0,showCloseBtn:!0,enableEscapeKey:!0,modal:!1,alignTop:!1,removalDelay:0,prependTo:null,fixedContentPos:"auto",fixedBgPos:"auto",overflowY:"auto",closeMarkup:'<button title="%title%" type="button" class="mfp-close">&#215;</button>',tClose:"Close (Esc)",tLoading:"Loading...",autoFocusLast:!0}},a.fn.magnificPopup=function(b){A();var c=a(this);if(typeof b=="string")if(b==="open"){var d,e=p?c.data("magnificPopup"):c[0].magnificPopup,f=parseInt(arguments[1],10)||0;e.items?d=e.items[f]:(d=c,e.delegate&&(d=d.find(e.delegate)),d=d.eq(f)),n._openClick({mfpEl:d},c,e)}else n.isOpen&&n[b].apply(n,Array.prototype.slice.call(arguments,1));else b=a.extend(!0,{},b),p?c.data("magnificPopup",b):c[0].magnificPopup=b,n.addGroup(c,b);return c};var C="inline",D,E,F,G=function(){F&&(E.after(F.addClass(D)).detach(),F=null)};a.magnificPopup.registerModule(C,{options:{hiddenClass:"hide",markup:"",tNotFound:"Content not found"},proto:{initInline:function(){n.types.push(C),w(b+"."+C,function(){G()})},getInline:function(b,c){G();if(b.src){var d=n.st.inline,e=a(b.src);if(e.length){var f=e[0].parentNode;f&&f.tagName&&(E||(D=d.hiddenClass,E=x(D),D="mfp-"+D),F=e.after(E).detach().removeClass(D)),n.updateStatus("ready")}else n.updateStatus("error",d.tNotFound),e=a("<div>");return b.inlineElement=e,e}return n.updateStatus("ready"),n._parseMarkup(c,{},b),c}}});var H="ajax",I,J=function(){I&&a(document.body).removeClass(I)},K=function(){J(),n.req&&n.req.abort()};a.magnificPopup.registerModule(H,{options:{settings:null,cursor:"mfp-ajax-cur",tError:'<a href="%url%">The content</a> could not be loaded.'},proto:{initAjax:function(){n.types.push(H),I=n.st.ajax.cursor,w(b+"."+H,K),w("BeforeChange."+H,K)},getAjax:function(b){I&&a(document.body).addClass(I),n.updateStatus("loading");var c=a.extend({url:b.src,success:function(c,d,e){var f={data:c,xhr:e};y("ParseAjax",f),n.appendContent(a(f.data),H),b.finished=!0,J(),n._setFocus(),setTimeout(function(){n.wrap.addClass(k)},16),n.updateStatus("ready"),y("AjaxContentAdded")},error:function(){J(),b.finished=b.loadError=!0,n.updateStatus("error",n.st.ajax.tError.replace("%url%",b.src))}},n.st.ajax.settings);return n.req=a.ajax(c),""}}});var L,M=function(b){if(b.data&&b.data.title!==undefined)return b.data.title;var c=n.st.image.titleSrc;if(c){if(a.isFunction(c))return c.call(n,b);if(b.el)return b.el.attr(c)||""}return""};a.magnificPopup.registerModule("image",{options:{markup:'<div class="mfp-figure"><div class="mfp-close"></div><figure><div class="mfp-img"></div><figcaption><div class="mfp-bottom-bar"><div class="mfp-title"></div><div class="mfp-counter"></div></div></figcaption></figure></div>',cursor:"mfp-zoom-out-cur",titleSrc:"title",verticalFit:!0,tError:'<a href="%url%">The image</a> could not be loaded.'},proto:{initImage:function(){var c=n.st.image,d=".image";n.types.push("image"),w(g+d,function(){n.currItem.type==="image"&&c.cursor&&a(document.body).addClass(c.cursor)}),w(b+d,function(){c.cursor&&a(document.body).removeClass(c.cursor),r.off("resize"+j)}),w("Resize"+d,n.resizeImage),n.isLowIE&&w("AfterChange",n.resizeImage)},resizeImage:function(){var a=n.currItem;if(!a||!a.img)return;if(n.st.image.verticalFit){var b=0;n.isLowIE&&(b=parseInt(a.img.css("padding-top"),10)+parseInt(a.img.css("padding-bottom"),10)),a.img.css("max-height",n.wH-b)}},_onImageHasSize:function(a){a.img&&(a.hasSize=!0,L&&clearInterval(L),a.isCheckingImgSize=!1,y("ImageHasSize",a),a.imgHidden&&(n.content&&n.content.removeClass("mfp-loading"),a.imgHidden=!1))},findImageSize:function(a){var b=0,c=a.img[0],d=function(e){L&&clearInterval(L),L=setInterval(function(){if(c.naturalWidth>0){n._onImageHasSize(a);return}b>200&&clearInterval(L),b++,b===3?d(10):b===40?d(50):b===100&&d(500)},e)};d(1)},getImage:function(b,c){var d=0,e=function(){b&&(b.img[0].complete?(b.img.off(".mfploader"),b===n.currItem&&(n._onImageHasSize(b),n.updateStatus("ready")),b.hasSize=!0,b.loaded=!0,y("ImageLoadComplete")):(d++,d<200?setTimeout(e,100):f()))},f=function(){b&&(b.img.off(".mfploader"),b===n.currItem&&(n._onImageHasSize(b),n.updateStatus("error",g.tError.replace("%url%",b.src))),b.hasSize=!0,b.loaded=!0,b.loadError=!0)},g=n.st.image,h=c.find(".mfp-img");if(h.length){var i=document.createElement("img");i.className="mfp-img",b.el&&b.el.find("img").length&&(i.alt=b.el.find("img").attr("alt")),b.img=a(i).on("load.mfploader",e).on("error.mfploader",f),i.src=b.src,h.is("img")&&(b.img=b.img.clone()),i=b.img[0],i.naturalWidth>0?b.hasSize=!0:i.width||(b.hasSize=!1)}return n._parseMarkup(c,{title:M(b),img_replaceWith:b.img},b),n.resizeImage(),b.hasSize?(L&&clearInterval(L),b.loadError?(c.addClass("mfp-loading"),n.updateStatus("error",g.tError.replace("%url%",b.src))):(c.removeClass("mfp-loading"),n.updateStatus("ready")),c):(n.updateStatus("loading"),b.loading=!0,b.hasSize||(b.imgHidden=!0,c.addClass("mfp-loading"),n.findImageSize(b)),c)}}});var N,O=function(){return N===undefined&&(N=document.createElement("p").style.MozTransform!==undefined),N};a.magnificPopup.registerModule("zoom",{options:{enabled:!1,easing:"ease-in-out",duration:300,opener:function(a){return a.is("img")?a:a.find("img")}},proto:{initZoom:function(){var a=n.st.zoom,d=".zoom",e;if(!a.enabled||!n.supportsTransition)return;var f=a.duration,g=function(b){var c=b.clone().removeAttr("style").removeAttr("class").addClass("mfp-animated-image"),d="all "+a.duration/1e3+"s "+a.easing,e={position:"fixed",zIndex:9999,left:0,top:0,"-webkit-backface-visibility":"hidden"},f="transition";return e["-webkit-"+f]=e["-moz-"+f]=e["-o-"+f]=e[f]=d,c.css(e),c},h=function(){n.content.css("visibility","visible")},i,j;w("BuildControls"+d,function(){if(n._allowZoom()){clearTimeout(i),n.content.css("visibility","hidden"),e=n._getItemToZoom();if(!e){h();return}j=g(e),j.css(n._getOffset()),n.wrap.append(j),i=setTimeout(function(){j.css(n._getOffset(!0)),i=setTimeout(function(){h(),setTimeout(function(){j.remove(),e=j=null,y("ZoomAnimationEnded")},16)},f)},16)}}),w(c+d,function(){if(n._allowZoom()){clearTimeout(i),n.st.removalDelay=f;if(!e){e=n._getItemToZoom();if(!e)return;j=g(e)}j.css(n._getOffset(!0)),n.wrap.append(j),n.content.css("visibility","hidden"),setTimeout(function(){j.css(n._getOffset())},16)}}),w(b+d,function(){n._allowZoom()&&(h(),j&&j.remove(),e=null)})},_allowZoom:function(){return n.currItem.type==="image"},_getItemToZoom:function(){return n.currItem.hasSize?n.currItem.img:!1},_getOffset:function(b){var c;b?c=n.currItem.img:c=n.st.zoom.opener(n.currItem.el||n.currItem);var d=c.offset(),e=parseInt(c.css("padding-top"),10),f=parseInt(c.css("padding-bottom"),10);d.top-=a(window).scrollTop()-e;var g={width:c.width(),height:(p?c.innerHeight():c[0].offsetHeight)-f-e};return O()?g["-moz-transform"]=g.transform="translate("+d.left+"px,"+d.top+"px)":(g.left=d.left,g.top=d.top),g}}});var P="iframe",Q="//about:blank",R=function(a){if(n.currTemplate[P]){var b=n.currTemplate[P].find("iframe");b.length&&(a||(b[0].src=Q),n.isIE8&&b.css("display",a?"block":"none"))}};a.magnificPopup.registerModule(P,{options:{markup:'<div class="mfp-iframe-scaler"><div class="mfp-close"></div><iframe class="mfp-iframe" src="//about:blank" frameborder="0" allowfullscreen></iframe></div>',srcAction:"iframe_src",patterns:{youtube:{index:"youtube.com",id:"v=",src:"//www.youtube.com/embed/%id%?autoplay=1"},vimeo:{index:"vimeo.com/",id:"/",src:"//player.vimeo.com/video/%id%?autoplay=1"},gmaps:{index:"//maps.google.",src:"%id%&output=embed"}}},proto:{initIframe:function(){n.types.push(P),w("BeforeChange",function(a,b,c){b!==c&&(b===P?R():c===P&&R(!0))}),w(b+"."+P,function(){R()})},getIframe:function(b,c){var d=b.src,e=n.st.iframe;a.each(e.patterns,function(){if(d.indexOf(this.index)>-1)return this.id&&(typeof this.id=="string"?d=d.substr(d.lastIndexOf(this.id)+this.id.length,d.length):d=this.id.call(this,d)),d=this.src.replace("%id%",d),!1});var f={};return e.srcAction&&(f[e.srcAction]=d),n._parseMarkup(c,f,b),n.updateStatus("ready"),c}}});var S=function(a){var b=n.items.length;return a>b-1?a-b:a<0?b+a:a},T=function(a,b,c){return a.replace(/%curr%/gi,b+1).replace(/%total%/gi,c)};a.magnificPopup.registerModule("gallery",{options:{enabled:!1,arrowMarkup:'<button title="%title%" type="button" class="mfp-arrow mfp-arrow-%dir%"></button>',preload:[0,2],navigateByImgClick:!0,arrows:!0,tPrev:"Previous (Left arrow key)",tNext:"Next (Right arrow key)",tCounter:"%curr% of %total%"},proto:{initGallery:function(){var c=n.st.gallery,d=".mfp-gallery";n.direction=!0;if(!c||!c.enabled)return!1;u+=" mfp-gallery",w(g+d,function(){c.navigateByImgClick&&n.wrap.on("click"+d,".mfp-img",function(){if(n.items.length>1)return n.next(),!1}),s.on("keydown"+d,function(a){a.keyCode===37?n.prev():a.keyCode===39&&n.next()})}),w("UpdateStatus"+d,function(a,b){b.text&&(b.text=T(b.text,n.currItem.index,n.items.length))}),w(f+d,function(a,b,d,e){var f=n.items.length;d.counter=f>1?T(c.tCounter,e.index,f):""}),w("BuildControls"+d,function(){if(n.items.length>1&&c.arrows&&!n.arrowLeft){var b=c.arrowMarkup,d=n.arrowLeft=a(b.replace(/%title%/gi,c.tPrev).replace(/%dir%/gi,"left")).addClass(m),e=n.arrowRight=a(b.replace(/%title%/gi,c.tNext).replace(/%dir%/gi,"right")).addClass(m);d.click(function(){n.prev()}),e.click(function(){n.next()}),n.container.append(d.add(e))}}),w(h+d,function(){n._preloadTimeout&&clearTimeout(n._preloadTimeout),n._preloadTimeout=setTimeout(function(){n.preloadNearbyImages(),n._preloadTimeout=null},16)}),w(b+d,function(){s.off(d),n.wrap.off("click"+d),n.arrowRight=n.arrowLeft=null})},next:function(){n.direction=!0,n.index=S(n.index+1),n.updateItemHTML()},prev:function(){n.direction=!1,n.index=S(n.index-1),n.updateItemHTML()},goTo:function(a){n.direction=a>=n.index,n.index=a,n.updateItemHTML()},preloadNearbyImages:function(){var a=n.st.gallery.preload,b=Math.min(a[0],n.items.length),c=Math.min(a[1],n.items.length),d;for(d=1;d<=(n.direction?c:b);d++)n._preloadItem(n.index+d);for(d=1;d<=(n.direction?b:c);d++)n._preloadItem(n.index-d)},_preloadItem:function(b){b=S(b);if(n.items[b].preloaded)return;var c=n.items[b];c.parsed||(c=n.parseEl(b)),y("LazyLoad",c),c.type==="image"&&(c.img=a('<img class="mfp-img" />').on("load.mfploader",function(){c.hasSize=!0}).on("error.mfploader",function(){c.hasSize=!0,c.loadError=!0,y("LazyLoadError",c)}).attr("src",c.src)),c.preloaded=!0}}});var U="retina";a.magnificPopup.registerModule(U,{options:{replaceSrc:function(a){return a.src.replace(/\.\w+$/,function(a){return"@2x"+a})},ratio:1},proto:{initRetina:function(){if(window.devicePixelRatio>1){var a=n.st.retina,b=a.ratio;b=isNaN(b)?b():b,b>1&&(w("ImageHasSize."+U,function(a,c){c.img.css({"max-width":c.img[0].naturalWidth/b,width:"100%"})}),w("ElementParse."+U,function(c,d){d.src=a.replaceSrc(d,b)}))}}}}),A()})
\ No newline at end of file
/*!
* jQuery UI Touch Punch 0.2.3
*
* Copyright 2011–2014, Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Depends:
* jquery.ui.widget.js
* jquery.ui.mouse.js
*/
!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);
/**
* Owl Carousel v2.3.4
* Copyright 2013-2018 David Deutsch
* Licensed under: SEE LICENSE IN https://github.com/OwlCarousel2/OwlCarousel2/blob/master/LICENSE
*/
!function(a,b,c,d){function e(b,c){this.settings=null,this.options=a.extend({},e.Defaults,c),this.$element=a(b),this._handlers={},this._plugins={},this._supress={},this._current=null,this._speed=null,this._coordinates=[],this._breakpoint=null,this._width=null,this._items=[],this._clones=[],this._mergers=[],this._widths=[],this._invalidated={},this._pipe=[],this._drag={time:null,target:null,pointer:null,stage:{start:null,current:null},direction:null},this._states={current:{},tags:{initializing:["busy"],animating:["busy"],dragging:["interacting"]}},a.each(["onResize","onThrottledResize"],a.proxy(function(b,c){this._handlers[c]=a.proxy(this[c],this)},this)),a.each(e.Plugins,a.proxy(function(a,b){this._plugins[a.charAt(0).toLowerCase()+a.slice(1)]=new b(this)},this)),a.each(e.Workers,a.proxy(function(b,c){this._pipe.push({filter:c.filter,run:a.proxy(c.run,this)})},this)),this.setup(),this.initialize()}e.Defaults={items:3,loop:!1,center:!1,rewind:!1,checkVisibility:!0,mouseDrag:!0,touchDrag:!0,pullDrag:!0,freeDrag:!1,margin:0,stagePadding:0,merge:!1,mergeFit:!0,autoWidth:!1,startPosition:0,rtl:!1,smartSpeed:250,fluidSpeed:!1,dragEndSpeed:!1,responsive:{},responsiveRefreshRate:200,responsiveBaseElement:b,fallbackEasing:"swing",slideTransition:"",info:!1,nestedItemSelector:!1,itemElement:"div",stageElement:"div",refreshClass:"owl-refresh",loadedClass:"owl-loaded",loadingClass:"owl-loading",rtlClass:"owl-rtl",responsiveClass:"owl-responsive",dragClass:"owl-drag",itemClass:"owl-item",stageClass:"owl-stage",stageOuterClass:"owl-stage-outer",grabClass:"owl-grab"},e.Width={Default:"default",Inner:"inner",Outer:"outer"},e.Type={Event:"event",State:"state"},e.Plugins={},e.Workers=[{filter:["width","settings"],run:function(){this._width=this.$element.width()}},{filter:["width","items","settings"],run:function(a){a.current=this._items&&this._items[this.relative(this._current)]}},{filter:["items","settings"],run:function(){this.$stage.children(".cloned").remove()}},{filter:["width","items","settings"],run:function(a){var b=this.settings.margin||"",c=!this.settings.autoWidth,d=this.settings.rtl,e={width:"auto","margin-left":d?b:"","margin-right":d?"":b};!c&&this.$stage.children().css(e),a.css=e}},{filter:["width","items","settings"],run:function(a){var b=(this.width()/this.settings.items).toFixed(3)-this.settings.margin,c=null,d=this._items.length,e=!this.settings.autoWidth,f=[];for(a.items={merge:!1,width:b};d--;)c=this._mergers[d],c=this.settings.mergeFit&&Math.min(c,this.settings.items)||c,a.items.merge=c>1||a.items.merge,f[d]=e?b*c:this._items[d].width();this._widths=f}},{filter:["items","settings"],run:function(){var b=[],c=this._items,d=this.settings,e=Math.max(2*d.items,4),f=2*Math.ceil(c.length/2),g=d.loop&&c.length?d.rewind?e:Math.max(e,f):0,h="",i="";for(g/=2;g>0;)b.push(this.normalize(b.length/2,!0)),h+=c[b[b.length-1]][0].outerHTML,b.push(this.normalize(c.length-1-(b.length-1)/2,!0)),i=c[b[b.length-1]][0].outerHTML+i,g-=1;this._clones=b,a(h).addClass("cloned").appendTo(this.$stage),a(i).addClass("cloned").prependTo(this.$stage)}},{filter:["width","items","settings"],run:function(){for(var a=this.settings.rtl?1:-1,b=this._clones.length+this._items.length,c=-1,d=0,e=0,f=[];++c<b;)d=f[c-1]||0,e=this._widths[this.relative(c)]+this.settings.margin,f.push(d+e*a);this._coordinates=f}},{filter:["width","items","settings"],run:function(){var a=this.settings.stagePadding,b=this._coordinates,c={width:Math.ceil(Math.abs(b[b.length-1]))+2*a,"padding-left":a||"","padding-right":a||""};this.$stage.css(c)}},{filter:["width","items","settings"],run:function(a){var b=this._coordinates.length,c=!this.settings.autoWidth,d=this.$stage.children();if(c&&a.items.merge)for(;b--;)a.css.width=this._widths[this.relative(b)],d.eq(b).css(a.css);else c&&(a.css.width=a.items.width,d.css(a.css))}},{filter:["items"],run:function(){this._coordinates.length<1&&this.$stage.removeAttr("style")}},{filter:["width","items","settings"],run:function(a){a.current=a.current?this.$stage.children().index(a.current):0,a.current=Math.max(this.minimum(),Math.min(this.maximum(),a.current)),this.reset(a.current)}},{filter:["position"],run:function(){this.animate(this.coordinates(this._current))}},{filter:["width","position","items","settings"],run:function(){var a,b,c,d,e=this.settings.rtl?1:-1,f=2*this.settings.stagePadding,g=this.coordinates(this.current())+f,h=g+this.width()*e,i=[];for(c=0,d=this._coordinates.length;c<d;c++)a=this._coordinates[c-1]||0,b=Math.abs(this._coordinates[c])+f*e,(this.op(a,"<=",g)&&this.op(a,">",h)||this.op(b,"<",g)&&this.op(b,">",h))&&i.push(c);this.$stage.children(".active").removeClass("active"),this.$stage.children(":eq("+i.join("), :eq(")+")").addClass("active"),this.$stage.children(".center").removeClass("center"),this.settings.center&&this.$stage.children().eq(this.current()).addClass("center")}}],e.prototype.initializeStage=function(){this.$stage=this.$element.find("."+this.settings.stageClass),this.$stage.length||(this.$element.addClass(this.options.loadingClass),this.$stage=a("<"+this.settings.stageElement+">",{class:this.settings.stageClass}).wrap(a("<div/>",{class:this.settings.stageOuterClass})),this.$element.append(this.$stage.parent()))},e.prototype.initializeItems=function(){var b=this.$element.find(".owl-item");if(b.length)return this._items=b.get().map(function(b){return a(b)}),this._mergers=this._items.map(function(){return 1}),void this.refresh();this.replace(this.$element.children().not(this.$stage.parent())),this.isVisible()?this.refresh():this.invalidate("width"),this.$element.removeClass(this.options.loadingClass).addClass(this.options.loadedClass)},e.prototype.initialize=function(){if(this.enter("initializing"),this.trigger("initialize"),this.$element.toggleClass(this.settings.rtlClass,this.settings.rtl),this.settings.autoWidth&&!this.is("pre-loading")){var a,b,c;a=this.$element.find("img"),b=this.settings.nestedItemSelector?"."+this.settings.nestedItemSelector:d,c=this.$element.children(b).width(),a.length&&c<=0&&this.preloadAutoWidthImages(a)}this.initializeStage(),this.initializeItems(),this.registerEventHandlers(),this.leave("initializing"),this.trigger("initialized")},e.prototype.isVisible=function(){return!this.settings.checkVisibility||this.$element.is(":visible")},e.prototype.setup=function(){var b=this.viewport(),c=this.options.responsive,d=-1,e=null;c?(a.each(c,function(a){a<=b&&a>d&&(d=Number(a))}),e=a.extend({},this.options,c[d]),"function"==typeof e.stagePadding&&(e.stagePadding=e.stagePadding()),delete e.responsive,e.responsiveClass&&this.$element.attr("class",this.$element.attr("class").replace(new RegExp("("+this.options.responsiveClass+"-)\\S+\\s","g"),"$1"+d))):e=a.extend({},this.options),this.trigger("change",{property:{name:"settings",value:e}}),this._breakpoint=d,this.settings=e,this.invalidate("settings"),this.trigger("changed",{property:{name:"settings",value:this.settings}})},e.prototype.optionsLogic=function(){this.settings.autoWidth&&(this.settings.stagePadding=!1,this.settings.merge=!1)},e.prototype.prepare=function(b){var c=this.trigger("prepare",{content:b});return c.data||(c.data=a("<"+this.settings.itemElement+"/>").addClass(this.options.itemClass).append(b)),this.trigger("prepared",{content:c.data}),c.data},e.prototype.update=function(){for(var b=0,c=this._pipe.length,d=a.proxy(function(a){return this[a]},this._invalidated),e={};b<c;)(this._invalidated.all||a.grep(this._pipe[b].filter,d).length>0)&&this._pipe[b].run(e),b++;this._invalidated={},!this.is("valid")&&this.enter("valid")},e.prototype.width=function(a){switch(a=a||e.Width.Default){case e.Width.Inner:case e.Width.Outer:return this._width;default:return this._width-2*this.settings.stagePadding+this.settings.margin}},e.prototype.refresh=function(){this.enter("refreshing"),this.trigger("refresh"),this.setup(),this.optionsLogic(),this.$element.addClass(this.options.refreshClass),this.update(),this.$element.removeClass(this.options.refreshClass),this.leave("refreshing"),this.trigger("refreshed")},e.prototype.onThrottledResize=function(){b.clearTimeout(this.resizeTimer),this.resizeTimer=b.setTimeout(this._handlers.onResize,this.settings.responsiveRefreshRate)},e.prototype.onResize=function(){return!!this._items.length&&(this._width!==this.$element.width()&&(!!this.isVisible()&&(this.enter("resizing"),this.trigger("resize").isDefaultPrevented()?(this.leave("resizing"),!1):(this.invalidate("width"),this.refresh(),this.leave("resizing"),void this.trigger("resized")))))},e.prototype.registerEventHandlers=function(){a.support.transition&&this.$stage.on(a.support.transition.end+".owl.core",a.proxy(this.onTransitionEnd,this)),!1!==this.settings.responsive&&this.on(b,"resize",this._handlers.onThrottledResize),this.settings.mouseDrag&&(this.$element.addClass(this.options.dragClass),this.$stage.on("mousedown.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("dragstart.owl.core selectstart.owl.core",function(){return!1})),this.settings.touchDrag&&(this.$stage.on("touchstart.owl.core",a.proxy(this.onDragStart,this)),this.$stage.on("touchcancel.owl.core",a.proxy(this.onDragEnd,this)))},e.prototype.onDragStart=function(b){var d=null;3!==b.which&&(a.support.transform?(d=this.$stage.css("transform").replace(/.*\(|\)| /g,"").split(","),d={x:d[16===d.length?12:4],y:d[16===d.length?13:5]}):(d=this.$stage.position(),d={x:this.settings.rtl?d.left+this.$stage.width()-this.width()+this.settings.margin:d.left,y:d.top}),this.is("animating")&&(a.support.transform?this.animate(d.x):this.$stage.stop(),this.invalidate("position")),this.$element.toggleClass(this.options.grabClass,"mousedown"===b.type),this.speed(0),this._drag.time=(new Date).getTime(),this._drag.target=a(b.target),this._drag.stage.start=d,this._drag.stage.current=d,this._drag.pointer=this.pointer(b),a(c).on("mouseup.owl.core touchend.owl.core",a.proxy(this.onDragEnd,this)),a(c).one("mousemove.owl.core touchmove.owl.core",a.proxy(function(b){var d=this.difference(this._drag.pointer,this.pointer(b));a(c).on("mousemove.owl.core touchmove.owl.core",a.proxy(this.onDragMove,this)),Math.abs(d.x)<Math.abs(d.y)&&this.is("valid")||(b.preventDefault(),this.enter("dragging"),this.trigger("drag"))},this)))},e.prototype.onDragMove=function(a){var b=null,c=null,d=null,e=this.difference(this._drag.pointer,this.pointer(a)),f=this.difference(this._drag.stage.start,e);this.is("dragging")&&(a.preventDefault(),this.settings.loop?(b=this.coordinates(this.minimum()),c=this.coordinates(this.maximum()+1)-b,f.x=((f.x-b)%c+c)%c+b):(b=this.settings.rtl?this.coordinates(this.maximum()):this.coordinates(this.minimum()),c=this.settings.rtl?this.coordinates(this.minimum()):this.coordinates(this.maximum()),d=this.settings.pullDrag?-1*e.x/5:0,f.x=Math.max(Math.min(f.x,b+d),c+d)),this._drag.stage.current=f,this.animate(f.x))},e.prototype.onDragEnd=function(b){var d=this.difference(this._drag.pointer,this.pointer(b)),e=this._drag.stage.current,f=d.x>0^this.settings.rtl?"left":"right";a(c).off(".owl.core"),this.$element.removeClass(this.options.grabClass),(0!==d.x&&this.is("dragging")||!this.is("valid"))&&(this.speed(this.settings.dragEndSpeed||this.settings.smartSpeed),this.current(this.closest(e.x,0!==d.x?f:this._drag.direction)),this.invalidate("position"),this.update(),this._drag.direction=f,(Math.abs(d.x)>3||(new Date).getTime()-this._drag.time>300)&&this._drag.target.one("click.owl.core",function(){return!1})),this.is("dragging")&&(this.leave("dragging"),this.trigger("dragged"))},e.prototype.closest=function(b,c){var e=-1,f=30,g=this.width(),h=this.coordinates();return this.settings.freeDrag||a.each(h,a.proxy(function(a,i){return"left"===c&&b>i-f&&b<i+f?e=a:"right"===c&&b>i-g-f&&b<i-g+f?e=a+1:this.op(b,"<",i)&&this.op(b,">",h[a+1]!==d?h[a+1]:i-g)&&(e="left"===c?a+1:a),-1===e},this)),this.settings.loop||(this.op(b,">",h[this.minimum()])?e=b=this.minimum():this.op(b,"<",h[this.maximum()])&&(e=b=this.maximum())),e},e.prototype.animate=function(b){var c=this.speed()>0;this.is("animating")&&this.onTransitionEnd(),c&&(this.enter("animating"),this.trigger("translate")),a.support.transform3d&&a.support.transition?this.$stage.css({transform:"translate3d("+b+"px,0px,0px)",transition:this.speed()/1e3+"s"+(this.settings.slideTransition?" "+this.settings.slideTransition:"")}):c?this.$stage.animate({left:b+"px"},this.speed(),this.settings.fallbackEasing,a.proxy(this.onTransitionEnd,this)):this.$stage.css({left:b+"px"})},e.prototype.is=function(a){return this._states.current[a]&&this._states.current[a]>0},e.prototype.current=function(a){if(a===d)return this._current;if(0===this._items.length)return d;if(a=this.normalize(a),this._current!==a){var b=this.trigger("change",{property:{name:"position",value:a}});b.data!==d&&(a=this.normalize(b.data)),this._current=a,this.invalidate("position"),this.trigger("changed",{property:{name:"position",value:this._current}})}return this._current},e.prototype.invalidate=function(b){return"string"===a.type(b)&&(this._invalidated[b]=!0,this.is("valid")&&this.leave("valid")),a.map(this._invalidated,function(a,b){return b})},e.prototype.reset=function(a){(a=this.normalize(a))!==d&&(this._speed=0,this._current=a,this.suppress(["translate","translated"]),this.animate(this.coordinates(a)),this.release(["translate","translated"]))},e.prototype.normalize=function(a,b){var c=this._items.length,e=b?0:this._clones.length;return!this.isNumeric(a)||c<1?a=d:(a<0||a>=c+e)&&(a=((a-e/2)%c+c)%c+e/2),a},e.prototype.relative=function(a){return a-=this._clones.length/2,this.normalize(a,!0)},e.prototype.maximum=function(a){var b,c,d,e=this.settings,f=this._coordinates.length;if(e.loop)f=this._clones.length/2+this._items.length-1;else if(e.autoWidth||e.merge){if(b=this._items.length)for(c=this._items[--b].width(),d=this.$element.width();b--&&!((c+=this._items[b].width()+this.settings.margin)>d););f=b+1}else f=e.center?this._items.length-1:this._items.length-e.items;return a&&(f-=this._clones.length/2),Math.max(f,0)},e.prototype.minimum=function(a){return a?0:this._clones.length/2},e.prototype.items=function(a){return a===d?this._items.slice():(a=this.normalize(a,!0),this._items[a])},e.prototype.mergers=function(a){return a===d?this._mergers.slice():(a=this.normalize(a,!0),this._mergers[a])},e.prototype.clones=function(b){var c=this._clones.length/2,e=c+this._items.length,f=function(a){return a%2==0?e+a/2:c-(a+1)/2};return b===d?a.map(this._clones,function(a,b){return f(b)}):a.map(this._clones,function(a,c){return a===b?f(c):null})},e.prototype.speed=function(a){return a!==d&&(this._speed=a),this._speed},e.prototype.coordinates=function(b){var c,e=1,f=b-1;return b===d?a.map(this._coordinates,a.proxy(function(a,b){return this.coordinates(b)},this)):(this.settings.center?(this.settings.rtl&&(e=-1,f=b+1),c=this._coordinates[b],c+=(this.width()-c+(this._coordinates[f]||0))/2*e):c=this._coordinates[f]||0,c=Math.ceil(c))},e.prototype.duration=function(a,b,c){return 0===c?0:Math.min(Math.max(Math.abs(b-a),1),6)*Math.abs(c||this.settings.smartSpeed)},e.prototype.to=function(a,b){var c=this.current(),d=null,e=a-this.relative(c),f=(e>0)-(e<0),g=this._items.length,h=this.minimum(),i=this.maximum();this.settings.loop?(!this.settings.rewind&&Math.abs(e)>g/2&&(e+=-1*f*g),a=c+e,(d=((a-h)%g+g)%g+h)!==a&&d-e<=i&&d-e>0&&(c=d-e,a=d,this.reset(c))):this.settings.rewind?(i+=1,a=(a%i+i)%i):a=Math.max(h,Math.min(i,a)),this.speed(this.duration(c,a,b)),this.current(a),this.isVisible()&&this.update()},e.prototype.next=function(a){a=a||!1,this.to(this.relative(this.current())+1,a)},e.prototype.prev=function(a){a=a||!1,this.to(this.relative(this.current())-1,a)},e.prototype.onTransitionEnd=function(a){if(a!==d&&(a.stopPropagation(),(a.target||a.srcElement||a.originalTarget)!==this.$stage.get(0)))return!1;this.leave("animating"),this.trigger("translated")},e.prototype.viewport=function(){var d;return this.options.responsiveBaseElement!==b?d=a(this.options.responsiveBaseElement).width():b.innerWidth?d=b.innerWidth:c.documentElement&&c.documentElement.clientWidth?d=c.documentElement.clientWidth:console.warn("Can not detect viewport width."),d},e.prototype.replace=function(b){this.$stage.empty(),this._items=[],b&&(b=b instanceof jQuery?b:a(b)),this.settings.nestedItemSelector&&(b=b.find("."+this.settings.nestedItemSelector)),b.filter(function(){return 1===this.nodeType}).each(a.proxy(function(a,b){b=this.prepare(b),this.$stage.append(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)},this)),this.reset(this.isNumeric(this.settings.startPosition)?this.settings.startPosition:0),this.invalidate("items")},e.prototype.add=function(b,c){var e=this.relative(this._current);c=c===d?this._items.length:this.normalize(c,!0),b=b instanceof jQuery?b:a(b),this.trigger("add",{content:b,position:c}),b=this.prepare(b),0===this._items.length||c===this._items.length?(0===this._items.length&&this.$stage.append(b),0!==this._items.length&&this._items[c-1].after(b),this._items.push(b),this._mergers.push(1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)):(this._items[c].before(b),this._items.splice(c,0,b),this._mergers.splice(c,0,1*b.find("[data-merge]").addBack("[data-merge]").attr("data-merge")||1)),this._items[e]&&this.reset(this._items[e].index()),this.invalidate("items"),this.trigger("added",{content:b,position:c})},e.prototype.remove=function(a){(a=this.normalize(a,!0))!==d&&(this.trigger("remove",{content:this._items[a],position:a}),this._items[a].remove(),this._items.splice(a,1),this._mergers.splice(a,1),this.invalidate("items"),this.trigger("removed",{content:null,position:a}))},e.prototype.preloadAutoWidthImages=function(b){b.each(a.proxy(function(b,c){this.enter("pre-loading"),c=a(c),a(new Image).one("load",a.proxy(function(a){c.attr("src",a.target.src),c.css("opacity",1),this.leave("pre-loading"),!this.is("pre-loading")&&!this.is("initializing")&&this.refresh()},this)).attr("src",c.attr("src")||c.attr("data-src")||c.attr("data-src-retina"))},this))},e.prototype.destroy=function(){this.$element.off(".owl.core"),this.$stage.off(".owl.core"),a(c).off(".owl.core"),!1!==this.settings.responsive&&(b.clearTimeout(this.resizeTimer),this.off(b,"resize",this._handlers.onThrottledResize));for(var d in this._plugins)this._plugins[d].destroy();this.$stage.children(".cloned").remove(),this.$stage.unwrap(),this.$stage.children().contents().unwrap(),this.$stage.children().unwrap(),this.$stage.remove(),this.$element.removeClass(this.options.refreshClass).removeClass(this.options.loadingClass).removeClass(this.options.loadedClass).removeClass(this.options.rtlClass).removeClass(this.options.dragClass).removeClass(this.options.grabClass).attr("class",this.$element.attr("class").replace(new RegExp(this.options.responsiveClass+"-\\S+\\s","g"),"")).removeData("owl.carousel")},e.prototype.op=function(a,b,c){var d=this.settings.rtl;switch(b){case"<":return d?a>c:a<c;case">":return d?a<c:a>c;case">=":return d?a<=c:a>=c;case"<=":return d?a>=c:a<=c}},e.prototype.on=function(a,b,c,d){a.addEventListener?a.addEventListener(b,c,d):a.attachEvent&&a.attachEvent("on"+b,c)},e.prototype.off=function(a,b,c,d){a.removeEventListener?a.removeEventListener(b,c,d):a.detachEvent&&a.detachEvent("on"+b,c)},e.prototype.trigger=function(b,c,d,f,g){var h={item:{count:this._items.length,index:this.current()}},i=a.camelCase(a.grep(["on",b,d],function(a){return a}).join("-").toLowerCase()),j=a.Event([b,"owl",d||"carousel"].join(".").toLowerCase(),a.extend({relatedTarget:this},h,c));return this._supress[b]||(a.each(this._plugins,function(a,b){b.onTrigger&&b.onTrigger(j)}),this.register({type:e.Type.Event,name:b}),this.$element.trigger(j),this.settings&&"function"==typeof this.settings[i]&&this.settings[i].call(this,j)),j},e.prototype.enter=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]===d&&(this._states.current[b]=0),this._states.current[b]++},this))},e.prototype.leave=function(b){a.each([b].concat(this._states.tags[b]||[]),a.proxy(function(a,b){this._states.current[b]--},this))},e.prototype.register=function(b){if(b.type===e.Type.Event){if(a.event.special[b.name]||(a.event.special[b.name]={}),!a.event.special[b.name].owl){var c=a.event.special[b.name]._default;a.event.special[b.name]._default=function(a){return!c||!c.apply||a.namespace&&-1!==a.namespace.indexOf("owl")?a.namespace&&a.namespace.indexOf("owl")>-1:c.apply(this,arguments)},a.event.special[b.name].owl=!0}}else b.type===e.Type.State&&(this._states.tags[b.name]?this._states.tags[b.name]=this._states.tags[b.name].concat(b.tags):this._states.tags[b.name]=b.tags,this._states.tags[b.name]=a.grep(this._states.tags[b.name],a.proxy(function(c,d){return a.inArray(c,this._states.tags[b.name])===d},this)))},e.prototype.suppress=function(b){a.each(b,a.proxy(function(a,b){this._supress[b]=!0},this))},e.prototype.release=function(b){a.each(b,a.proxy(function(a,b){delete this._supress[b]},this))},e.prototype.pointer=function(a){var c={x:null,y:null};return a=a.originalEvent||a||b.event,a=a.touches&&a.touches.length?a.touches[0]:a.changedTouches&&a.changedTouches.length?a.changedTouches[0]:a,a.pageX?(c.x=a.pageX,c.y=a.pageY):(c.x=a.clientX,c.y=a.clientY),c},e.prototype.isNumeric=function(a){return!isNaN(parseFloat(a))},e.prototype.difference=function(a,b){return{x:a.x-b.x,y:a.y-b.y}},a.fn.owlCarousel=function(b){var c=Array.prototype.slice.call(arguments,1);return this.each(function(){var d=a(this),f=d.data("owl.carousel");f||(f=new e(this,"object"==typeof b&&b),d.data("owl.carousel",f),a.each(["next","prev","to","destroy","refresh","replace","add","remove"],function(b,c){f.register({type:e.Type.Event,name:c}),f.$element.on(c+".owl.carousel.core",a.proxy(function(a){a.namespace&&a.relatedTarget!==this&&(this.suppress([c]),f[c].apply(this,[].slice.call(arguments,1)),this.release([c]))},f))})),"string"==typeof b&&"_"!==b.charAt(0)&&f[b].apply(f,c)})},a.fn.owlCarousel.Constructor=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._interval=null,this._visible=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoRefresh&&this.watch()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={autoRefresh:!0,autoRefreshInterval:500},e.prototype.watch=function(){this._interval||(this._visible=this._core.isVisible(),this._interval=b.setInterval(a.proxy(this.refresh,this),this._core.settings.autoRefreshInterval))},e.prototype.refresh=function(){this._core.isVisible()!==this._visible&&(this._visible=!this._visible,this._core.$element.toggleClass("owl-hidden",!this._visible),this._visible&&this._core.invalidate("width")&&this._core.refresh())},e.prototype.destroy=function(){var a,c;b.clearInterval(this._interval);for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoRefresh=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._loaded=[],this._handlers={"initialized.owl.carousel change.owl.carousel resized.owl.carousel":a.proxy(function(b){if(b.namespace&&this._core.settings&&this._core.settings.lazyLoad&&(b.property&&"position"==b.property.name||"initialized"==b.type)){var c=this._core.settings,e=c.center&&Math.ceil(c.items/2)||c.items,f=c.center&&-1*e||0,g=(b.property&&b.property.value!==d?b.property.value:this._core.current())+f,h=this._core.clones().length,i=a.proxy(function(a,b){this.load(b)},this);for(c.lazyLoadEager>0&&(e+=c.lazyLoadEager,c.loop&&(g-=c.lazyLoadEager,e++));f++<e;)this.load(h/2+this._core.relative(g)),h&&a.each(this._core.clones(this._core.relative(g)),i),g++}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers)};e.Defaults={lazyLoad:!1,lazyLoadEager:0},e.prototype.load=function(c){var d=this._core.$stage.children().eq(c),e=d&&d.find(".owl-lazy");!e||a.inArray(d.get(0),this._loaded)>-1||(e.each(a.proxy(function(c,d){var e,f=a(d),g=b.devicePixelRatio>1&&f.attr("data-src-retina")||f.attr("data-src")||f.attr("data-srcset");this._core.trigger("load",{element:f,url:g},"lazy"),f.is("img")?f.one("load.owl.lazy",a.proxy(function(){f.css("opacity",1),this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("src",g):f.is("source")?f.one("load.owl.lazy",a.proxy(function(){this._core.trigger("loaded",{element:f,url:g},"lazy")},this)).attr("srcset",g):(e=new Image,e.onload=a.proxy(function(){f.css({"background-image":'url("'+g+'")',opacity:"1"}),this._core.trigger("loaded",{element:f,url:g},"lazy")},this),e.src=g)},this)),this._loaded.push(d.get(0)))},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this._core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Lazy=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(c){this._core=c,this._previousHeight=null,this._handlers={"initialized.owl.carousel refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&this.update()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&"position"===a.property.name&&this.update()},this),"loaded.owl.lazy":a.proxy(function(a){a.namespace&&this._core.settings.autoHeight&&a.element.closest("."+this._core.settings.itemClass).index()===this._core.current()&&this.update()},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._intervalId=null;var d=this;a(b).on("load",function(){d._core.settings.autoHeight&&d.update()}),a(b).resize(function(){d._core.settings.autoHeight&&(null!=d._intervalId&&clearTimeout(d._intervalId),d._intervalId=setTimeout(function(){d.update()},250))})};e.Defaults={autoHeight:!1,autoHeightClass:"owl-height"},e.prototype.update=function(){var b=this._core._current,c=b+this._core.settings.items,d=this._core.settings.lazyLoad,e=this._core.$stage.children().toArray().slice(b,c),f=[],g=0;a.each(e,function(b,c){f.push(a(c).height())}),g=Math.max.apply(null,f),g<=1&&d&&this._previousHeight&&(g=this._previousHeight),this._previousHeight=g,this._core.$stage.parent().height(g).addClass(this._core.settings.autoHeightClass)},e.prototype.destroy=function(){var a,b;for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.AutoHeight=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._videos={},this._playing=null,this._handlers={"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.register({type:"state",name:"playing",tags:["interacting"]})},this),"resize.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.video&&this.isInFullScreen()&&a.preventDefault()},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._core.is("resizing")&&this._core.$stage.find(".cloned .owl-video-frame").remove()},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"===a.property.name&&this._playing&&this.stop()},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find(".owl-video");c.length&&(c.css("display","none"),this.fetch(c,a(b.content)))}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this._core.$element.on(this._handlers),this._core.$element.on("click.owl.video",".owl-video-play-icon",a.proxy(function(a){this.play(a)},this))};e.Defaults={video:!1,videoHeight:!1,videoWidth:!1},e.prototype.fetch=function(a,b){var c=function(){return a.attr("data-vimeo-id")?"vimeo":a.attr("data-vzaar-id")?"vzaar":"youtube"}(),d=a.attr("data-vimeo-id")||a.attr("data-youtube-id")||a.attr("data-vzaar-id"),e=a.attr("data-width")||this._core.settings.videoWidth,f=a.attr("data-height")||this._core.settings.videoHeight,g=a.attr("href");if(!g)throw new Error("Missing video URL.");if(d=g.match(/(http:|https:|)\/\/(player.|www.|app.)?(vimeo\.com|youtu(be\.com|\.be|be\.googleapis\.com|be\-nocookie\.com)|vzaar\.com)\/(video\/|videos\/|embed\/|channels\/.+\/|groups\/.+\/|watch\?v=|v\/)?([A-Za-z0-9._%-]*)(\&\S+)?/),d[3].indexOf("youtu")>-1)c="youtube";else if(d[3].indexOf("vimeo")>-1)c="vimeo";else{if(!(d[3].indexOf("vzaar")>-1))throw new Error("Video URL not supported.");c="vzaar"}d=d[6],this._videos[g]={type:c,id:d,width:e,height:f},b.attr("data-video",g),this.thumbnail(a,this._videos[g])},e.prototype.thumbnail=function(b,c){var d,e,f,g=c.width&&c.height?"width:"+c.width+"px;height:"+c.height+"px;":"",h=b.find("img"),i="src",j="",k=this._core.settings,l=function(c){e='<div class="owl-video-play-icon"></div>',d=k.lazyLoad?a("<div/>",{class:"owl-video-tn "+j,srcType:c}):a("<div/>",{class:"owl-video-tn",style:"opacity:1;background-image:url("+c+")"}),b.after(d),b.after(e)};if(b.wrap(a("<div/>",{class:"owl-video-wrapper",style:g})),this._core.settings.lazyLoad&&(i="data-src",j="owl-lazy"),h.length)return l(h.attr(i)),h.remove(),!1;"youtube"===c.type?(f="//img.youtube.com/vi/"+c.id+"/hqdefault.jpg",l(f)):"vimeo"===c.type?a.ajax({type:"GET",url:"//vimeo.com/api/v2/video/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a[0].thumbnail_large,l(f)}}):"vzaar"===c.type&&a.ajax({type:"GET",url:"//vzaar.com/api/videos/"+c.id+".json",jsonp:"callback",dataType:"jsonp",success:function(a){f=a.framegrab_url,l(f)}})},e.prototype.stop=function(){this._core.trigger("stop",null,"video"),this._playing.find(".owl-video-frame").remove(),this._playing.removeClass("owl-video-playing"),this._playing=null,this._core.leave("playing"),this._core.trigger("stopped",null,"video")},e.prototype.play=function(b){var c,d=a(b.target),e=d.closest("."+this._core.settings.itemClass),f=this._videos[e.attr("data-video")],g=f.width||"100%",h=f.height||this._core.$stage.height();this._playing||(this._core.enter("playing"),this._core.trigger("play",null,"video"),e=this._core.items(this._core.relative(e.index())),this._core.reset(e.index()),c=a('<iframe frameborder="0" allowfullscreen mozallowfullscreen webkitAllowFullScreen ></iframe>'),c.attr("height",h),c.attr("width",g),"youtube"===f.type?c.attr("src","//www.youtube.com/embed/"+f.id+"?autoplay=1&rel=0&v="+f.id):"vimeo"===f.type?c.attr("src","//player.vimeo.com/video/"+f.id+"?autoplay=1"):"vzaar"===f.type&&c.attr("src","//view.vzaar.com/"+f.id+"/player?autoplay=true"),a(c).wrap('<div class="owl-video-frame" />').insertAfter(e.find(".owl-video")),this._playing=e.addClass("owl-video-playing"))},e.prototype.isInFullScreen=function(){var b=c.fullscreenElement||c.mozFullScreenElement||c.webkitFullscreenElement;return b&&a(b).parent().hasClass("owl-video-frame")},e.prototype.destroy=function(){var a,b;this._core.$element.off("click.owl.video");for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Video=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this.core=b,this.core.options=a.extend({},e.Defaults,this.core.options),this.swapping=!0,this.previous=d,this.next=d,this.handlers={"change.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&(this.previous=this.core.current(),this.next=a.property.value)},this),"drag.owl.carousel dragged.owl.carousel translated.owl.carousel":a.proxy(function(a){a.namespace&&(this.swapping="translated"==a.type)},this),"translate.owl.carousel":a.proxy(function(a){a.namespace&&this.swapping&&(this.core.options.animateOut||this.core.options.animateIn)&&this.swap()},this)},this.core.$element.on(this.handlers)};e.Defaults={animateOut:!1,
animateIn:!1},e.prototype.swap=function(){if(1===this.core.settings.items&&a.support.animation&&a.support.transition){this.core.speed(0);var b,c=a.proxy(this.clear,this),d=this.core.$stage.children().eq(this.previous),e=this.core.$stage.children().eq(this.next),f=this.core.settings.animateIn,g=this.core.settings.animateOut;this.core.current()!==this.previous&&(g&&(b=this.core.coordinates(this.previous)-this.core.coordinates(this.next),d.one(a.support.animation.end,c).css({left:b+"px"}).addClass("animated owl-animated-out").addClass(g)),f&&e.one(a.support.animation.end,c).addClass("animated owl-animated-in").addClass(f))}},e.prototype.clear=function(b){a(b.target).css({left:""}).removeClass("animated owl-animated-out owl-animated-in").removeClass(this.core.settings.animateIn).removeClass(this.core.settings.animateOut),this.core.onTransitionEnd()},e.prototype.destroy=function(){var a,b;for(a in this.handlers)this.core.$element.off(a,this.handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.Animate=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){var e=function(b){this._core=b,this._call=null,this._time=0,this._timeout=0,this._paused=!0,this._handlers={"changed.owl.carousel":a.proxy(function(a){a.namespace&&"settings"===a.property.name?this._core.settings.autoplay?this.play():this.stop():a.namespace&&"position"===a.property.name&&this._paused&&(this._time=0)},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.autoplay&&this.play()},this),"play.owl.autoplay":a.proxy(function(a,b,c){a.namespace&&this.play(b,c)},this),"stop.owl.autoplay":a.proxy(function(a){a.namespace&&this.stop()},this),"mouseover.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"mouseleave.owl.autoplay":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.play()},this),"touchstart.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this._core.is("rotating")&&this.pause()},this),"touchend.owl.core":a.proxy(function(){this._core.settings.autoplayHoverPause&&this.play()},this)},this._core.$element.on(this._handlers),this._core.options=a.extend({},e.Defaults,this._core.options)};e.Defaults={autoplay:!1,autoplayTimeout:5e3,autoplayHoverPause:!1,autoplaySpeed:!1},e.prototype._next=function(d){this._call=b.setTimeout(a.proxy(this._next,this,d),this._timeout*(Math.round(this.read()/this._timeout)+1)-this.read()),this._core.is("interacting")||c.hidden||this._core.next(d||this._core.settings.autoplaySpeed)},e.prototype.read=function(){return(new Date).getTime()-this._time},e.prototype.play=function(c,d){var e;this._core.is("rotating")||this._core.enter("rotating"),c=c||this._core.settings.autoplayTimeout,e=Math.min(this._time%(this._timeout||c),c),this._paused?(this._time=this.read(),this._paused=!1):b.clearTimeout(this._call),this._time+=this.read()%c-e,this._timeout=c,this._call=b.setTimeout(a.proxy(this._next,this,d),c-e)},e.prototype.stop=function(){this._core.is("rotating")&&(this._time=0,this._paused=!0,b.clearTimeout(this._call),this._core.leave("rotating"))},e.prototype.pause=function(){this._core.is("rotating")&&!this._paused&&(this._time=this.read(),this._paused=!0,b.clearTimeout(this._call))},e.prototype.destroy=function(){var a,b;this.stop();for(a in this._handlers)this._core.$element.off(a,this._handlers[a]);for(b in Object.getOwnPropertyNames(this))"function"!=typeof this[b]&&(this[b]=null)},a.fn.owlCarousel.Constructor.Plugins.autoplay=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(b){this._core=b,this._initialized=!1,this._pages=[],this._controls={},this._templates=[],this.$element=this._core.$element,this._overrides={next:this._core.next,prev:this._core.prev,to:this._core.to},this._handlers={"prepared.owl.carousel":a.proxy(function(b){b.namespace&&this._core.settings.dotsData&&this._templates.push('<div class="'+this._core.settings.dotClass+'">'+a(b.content).find("[data-dot]").addBack("[data-dot]").attr("data-dot")+"</div>")},this),"added.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,0,this._templates.pop())},this),"remove.owl.carousel":a.proxy(function(a){a.namespace&&this._core.settings.dotsData&&this._templates.splice(a.position,1)},this),"changed.owl.carousel":a.proxy(function(a){a.namespace&&"position"==a.property.name&&this.draw()},this),"initialized.owl.carousel":a.proxy(function(a){a.namespace&&!this._initialized&&(this._core.trigger("initialize",null,"navigation"),this.initialize(),this.update(),this.draw(),this._initialized=!0,this._core.trigger("initialized",null,"navigation"))},this),"refreshed.owl.carousel":a.proxy(function(a){a.namespace&&this._initialized&&(this._core.trigger("refresh",null,"navigation"),this.update(),this.draw(),this._core.trigger("refreshed",null,"navigation"))},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers)};e.Defaults={nav:!1,navText:['<span aria-label="Previous">&#x2039;</span>','<span aria-label="Next">&#x203a;</span>'],navSpeed:!1,navElement:'button type="button" role="presentation"',navContainer:!1,navContainerClass:"owl-nav",navClass:["owl-prev","owl-next"],slideBy:1,dotClass:"owl-dot",dotsClass:"owl-dots",dots:!0,dotsEach:!1,dotsData:!1,dotsSpeed:!1,dotsContainer:!1},e.prototype.initialize=function(){var b,c=this._core.settings;this._controls.$relative=(c.navContainer?a(c.navContainer):a("<div>").addClass(c.navContainerClass).appendTo(this.$element)).addClass("disabled"),this._controls.$previous=a("<"+c.navElement+">").addClass(c.navClass[0]).html(c.navText[0]).prependTo(this._controls.$relative).on("click",a.proxy(function(a){this.prev(c.navSpeed)},this)),this._controls.$next=a("<"+c.navElement+">").addClass(c.navClass[1]).html(c.navText[1]).appendTo(this._controls.$relative).on("click",a.proxy(function(a){this.next(c.navSpeed)},this)),c.dotsData||(this._templates=[a('<button role="button">').addClass(c.dotClass).append(a("<span>")).prop("outerHTML")]),this._controls.$absolute=(c.dotsContainer?a(c.dotsContainer):a("<div>").addClass(c.dotsClass).appendTo(this.$element)).addClass("disabled"),this._controls.$absolute.on("click","button",a.proxy(function(b){var d=a(b.target).parent().is(this._controls.$absolute)?a(b.target).index():a(b.target).parent().index();b.preventDefault(),this.to(d,c.dotsSpeed)},this));for(b in this._overrides)this._core[b]=a.proxy(this[b],this)},e.prototype.destroy=function(){var a,b,c,d,e;e=this._core.settings;for(a in this._handlers)this.$element.off(a,this._handlers[a]);for(b in this._controls)"$relative"===b&&e.navContainer?this._controls[b].html(""):this._controls[b].remove();for(d in this.overides)this._core[d]=this._overrides[d];for(c in Object.getOwnPropertyNames(this))"function"!=typeof this[c]&&(this[c]=null)},e.prototype.update=function(){var a,b,c,d=this._core.clones().length/2,e=d+this._core.items().length,f=this._core.maximum(!0),g=this._core.settings,h=g.center||g.autoWidth||g.dotsData?1:g.dotsEach||g.items;if("page"!==g.slideBy&&(g.slideBy=Math.min(g.slideBy,g.items)),g.dots||"page"==g.slideBy)for(this._pages=[],a=d,b=0,c=0;a<e;a++){if(b>=h||0===b){if(this._pages.push({start:Math.min(f,a-d),end:a-d+h-1}),Math.min(f,a-d)===f)break;b=0,++c}b+=this._core.mergers(this._core.relative(a))}},e.prototype.draw=function(){var b,c=this._core.settings,d=this._core.items().length<=c.items,e=this._core.relative(this._core.current()),f=c.loop||c.rewind;this._controls.$relative.toggleClass("disabled",!c.nav||d),c.nav&&(this._controls.$previous.toggleClass("disabled",!f&&e<=this._core.minimum(!0)),this._controls.$next.toggleClass("disabled",!f&&e>=this._core.maximum(!0))),this._controls.$absolute.toggleClass("disabled",!c.dots||d),c.dots&&(b=this._pages.length-this._controls.$absolute.children().length,c.dotsData&&0!==b?this._controls.$absolute.html(this._templates.join("")):b>0?this._controls.$absolute.append(new Array(b+1).join(this._templates[0])):b<0&&this._controls.$absolute.children().slice(b).remove(),this._controls.$absolute.find(".active").removeClass("active"),this._controls.$absolute.children().eq(a.inArray(this.current(),this._pages)).addClass("active"))},e.prototype.onTrigger=function(b){var c=this._core.settings;b.page={index:a.inArray(this.current(),this._pages),count:this._pages.length,size:c&&(c.center||c.autoWidth||c.dotsData?1:c.dotsEach||c.items)}},e.prototype.current=function(){var b=this._core.relative(this._core.current());return a.grep(this._pages,a.proxy(function(a,c){return a.start<=b&&a.end>=b},this)).pop()},e.prototype.getPosition=function(b){var c,d,e=this._core.settings;return"page"==e.slideBy?(c=a.inArray(this.current(),this._pages),d=this._pages.length,b?++c:--c,c=this._pages[(c%d+d)%d].start):(c=this._core.relative(this._core.current()),d=this._core.items().length,b?c+=e.slideBy:c-=e.slideBy),c},e.prototype.next=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!0),b)},e.prototype.prev=function(b){a.proxy(this._overrides.to,this._core)(this.getPosition(!1),b)},e.prototype.to=function(b,c,d){var e;!d&&this._pages.length?(e=this._pages.length,a.proxy(this._overrides.to,this._core)(this._pages[(b%e+e)%e].start,c)):a.proxy(this._overrides.to,this._core)(b,c)},a.fn.owlCarousel.Constructor.Plugins.Navigation=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){"use strict";var e=function(c){this._core=c,this._hashes={},this.$element=this._core.$element,this._handlers={"initialized.owl.carousel":a.proxy(function(c){c.namespace&&"URLHash"===this._core.settings.startPosition&&a(b).trigger("hashchange.owl.navigation")},this),"prepared.owl.carousel":a.proxy(function(b){if(b.namespace){var c=a(b.content).find("[data-hash]").addBack("[data-hash]").attr("data-hash");if(!c)return;this._hashes[c]=b.content}},this),"changed.owl.carousel":a.proxy(function(c){if(c.namespace&&"position"===c.property.name){var d=this._core.items(this._core.relative(this._core.current())),e=a.map(this._hashes,function(a,b){return a===d?b:null}).join();if(!e||b.location.hash.slice(1)===e)return;b.location.hash=e}},this)},this._core.options=a.extend({},e.Defaults,this._core.options),this.$element.on(this._handlers),a(b).on("hashchange.owl.navigation",a.proxy(function(a){var c=b.location.hash.substring(1),e=this._core.$stage.children(),f=this._hashes[c]&&e.index(this._hashes[c]);f!==d&&f!==this._core.current()&&this._core.to(this._core.relative(f),!1,!0)},this))};e.Defaults={URLhashListener:!1},e.prototype.destroy=function(){var c,d;a(b).off("hashchange.owl.navigation");for(c in this._handlers)this._core.$element.off(c,this._handlers[c]);for(d in Object.getOwnPropertyNames(this))"function"!=typeof this[d]&&(this[d]=null)},a.fn.owlCarousel.Constructor.Plugins.Hash=e}(window.Zepto||window.jQuery,window,document),function(a,b,c,d){function e(b,c){var e=!1,f=b.charAt(0).toUpperCase()+b.slice(1);return a.each((b+" "+h.join(f+" ")+f).split(" "),function(a,b){if(g[b]!==d)return e=!c||b,!1}),e}function f(a){return e(a,!0)}var g=a("<support>").get(0).style,h="Webkit Moz O ms".split(" "),i={transition:{end:{WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd",transition:"transitionend"}},animation:{end:{WebkitAnimation:"webkitAnimationEnd",MozAnimation:"animationend",OAnimation:"oAnimationEnd",animation:"animationend"}}},j={csstransforms:function(){return!!e("transform")},csstransforms3d:function(){return!!e("perspective")},csstransitions:function(){return!!e("transition")},cssanimations:function(){return!!e("animation")}};j.csstransitions()&&(a.support.transition=new String(f("transition")),a.support.transition.end=i.transition.end[a.support.transition]),j.cssanimations()&&(a.support.animation=new String(f("animation")),a.support.animation.end=i.animation.end[a.support.animation]),j.csstransforms()&&(a.support.transform=new String(f("transform")),a.support.transform3d=j.csstransforms3d())}(window.Zepto||window.jQuery,window,document);
\ No newline at end of file
---
name: Bug report
about: Technical issue with the extension
labels: 'Issue'
---
<!---
Fields marked with (*) are required. Please don't remove the template.
-->
### Preconditions (*)
<!---
Provide the exact Magento version (example: 2.4.0) and any important information on the environment where bug is reproducible.
-->
1.
2.
### Steps to reproduce (*)
<!---
Important: Provide a set of clear steps to reproduce this bug. We can not provide support without clear instructions on how to reproduce.
-->
1.
2.
### Expected result (*)
<!--- Tell us what do you expect to happen. -->
1. [Screenshots, logs or description]
2.
### Actual result (*)
<!--- Tell us what happened instead. Include error messages and issues. -->
1. [Screenshots, logs or description]
2.
---
name: Developer experience issue
about: Issues related to customization, extensibility, modularity
labels: 'Experience'
---
<!---
Fields marked with (*) are required. Please don't remove the template.
-->
### Summary (*)
<!--- Describe the issue you are experiencing. Include general information, error messages, environments, and so on. -->
### Examples (*)
<!--- Provide code examples or a patch with a test (recommended) to clearly indicate the problem. -->
### Proposed solution
<!--- Suggest your potential solutions for this issue. -->
---
name: Feature request
about: Request feature for development
labels: 'Feature Request'
---
<!---
Fields marked with (*) are required. Please don't remove the template.
-->
### Description (*)
<!--- Describe the feature you would like to add. -->
### Expected behavior (*)
<!--- What is the expected behavior of this feature? How is it going to work? -->
### Benefits
<!--- How do you think this feature would improve the extension? -->
### Additional information
<!--- What other information can you provide about the desired feature? -->
<!--- Provide a general summary of the Pull Request in the Title above -->
### Description
<!--- Provide a description of the changes proposed in the pull request -->
### Fixed Issues (if relevant)
<!--- Provide a list of fixed issues in the format magento/magento2#<issue_number>, if relevant -->
1. https://github.com/mageplaza/magento-2-reports/<issue_number>: Issue title
2. ...
### Manual testing scenarios
<!--- Provide a set of unambiguous steps to test the proposed code change -->
1.
2.
### Contribution checklist
- [ ] Pull request has a meaningful description of its purpose
- [ ] All commits are accompanied by meaningful commit messages
- [ ] All new or changed code is covered with unit/integration tests (if applicable)
# Configuration for probot-no-response - https://github.com/probot/no-response
# Number of days of inactivity before an Issue is closed for lack of response
daysUntilClose: 7
# Label requiring a response
responseRequiredLabel: waiting-customer-response
# Comment to post when closing an Issue for lack of response. Set to `false` to disable
closeComment: >
This issue has been automatically closed because there has been no response
to our request for more information from the original author. With only the
information that is currently in the issue, we don't have enough information
to take action. Please reach out if you have or find the answers we need so
that we can investigate further.
language: php
php:
- 7.0
- 7.1
sudo: required
dist: trusty
env:
global:
- COMPOSER_BIN_DIR=~/bin
- INTEGRATION_SETS=3
- NODE_JS_VERSION=6
- MAGENTO_HOST_NAME="magento2.travis"
- COMPOSER_MODULE=mageplaza/module-delete-orders
matrix:
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.1 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.2.2 TEST_SUITE=static
- MAGENTO_VERSION=2.2.2 TEST_SUITE=js GRUNT_COMMAND=static
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.2 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.2.5 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.5 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.5 TEST_SUITE=integration INTEGRATION_INDEX=3
- MAGENTO_VERSION=2.2.6 TEST_SUITE=integration INTEGRATION_INDEX=1
- MAGENTO_VERSION=2.2.6 TEST_SUITE=integration INTEGRATION_INDEX=2
- MAGENTO_VERSION=2.2.6 TEST_SUITE=integration INTEGRATION_INDEX=3
matrix:
exclude:
- php: 7.0
env: MAGENTO_VERSION=2.2.2 TEST_SUITE=js GRUNT_COMMAND=static
- php: 7.0
env: MAGENTO_VERSION=2.2.2 TEST_SUITE=static
cache:
apt: true
directories:
- "$HOME/.composer/cache"
- "$HOME/.nvm"
addons:
apt:
packages:
- mysql-server-5.6
- mysql-client-core-5.6
- mysql-client-5.6
- postfix
firefox: '46.0'
hosts:
- magento2.travis
before_install:
- git clone https://github.com/magento/magento2 --branch $MAGENTO_VERSION
- cd magento2
- bash ./dev/travis/before_install.sh
install:
- composer install --no-interaction --prefer-dist
- composer require $COMPOSER_MODULE
before_script:
#- cp -f ${TRAVIS_BUILD_DIR}/dev/tests/integration/phpunit.xml.dist dev/tests/integration/
- echo "vendor/$COMPOSER_MODULE" > dev/tests/static/testsuite/Magento/Test/Less/_files/whitelist/common.txt
- echo "vendor/$COMPOSER_MODULE" > dev/tests/static/testsuite/Magento/Test/Php/_files/whitelist/common.txt
- echo "vendor/$COMPOSER_MODULE/**/*.js" > dev/tests/static/testsuite/Magento/Test/Js/_files/whitelist/magento.txt
- bash ./dev/travis/before_script.sh
script:
- test $TEST_SUITE = "static" && TEST_FILTER='--filter "Magento\\Test\\Php\\LiveCodeTest"' || true
- test $TEST_SUITE = "functional" && TEST_FILTER='dev/tests/functional/testsuites/Magento/Mtf/TestSuite/InjectableTests.php' || true
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Block\Adminhtml\System\Config;
use Magento\Config\Block\System\Config\Form\Field;
use Magento\Framework\Data\Form\Element\AbstractElement;
/**
* Class Manually
*
* @package Mageplaza\DeleteOrders\Block\Adminhtml\System\Config
*/
class Manually extends Field
{
protected $_template = 'Mageplaza_DeleteOrders::manually.phtml';
/**
* @param AbstractElement $element
*
* @return string
* @SuppressWarnings(Unused)
*/
protected function _getElementHtml(AbstractElement $element)
{
return $this->toHtml();
}
}
CHANGELOG: https://www.mageplaza.com/releases/delete-orders
\ No newline at end of file
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Console;
use Exception;
use Magento\Framework\App\Area;
use Magento\Framework\App\State;
use Magento\Framework\Registry;
use Magento\Sales\Model\OrderRepository;
use Mageplaza\DeleteOrders\Helper\Data as HelperData;
use Symfony\Component\Console\Command\Command;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputInterface;
use Symfony\Component\Console\Output\OutputInterface;
/**
* Class Delete
*
* @package Mageplaza\DeleteOrders\Console
*/
class Delete extends Command
{
const ORDER_ID = 'order_id';
/**
* @var HelperData
*/
protected $_helperData;
/**
* @var OrderRepository
*/
protected $orderRepository;
/**
* @var state
*/
protected $state;
/**
* @var Registry
*/
protected $registry;
/**
* Delete constructor.
*
* @param HelperData $helperData
* @param OrderRepository $orderRepository
* @param State $state
* @param Registry $registry
* @param null $name
*/
public function __construct(
HelperData $helperData,
OrderRepository $orderRepository,
state $state,
Registry $registry,
$name = null
) {
$this->_helperData = $helperData;
$this->orderRepository = $orderRepository;
$this->state = $state;
$this->registry = $registry;
parent::__construct($name);
}
/**
* @inheritdoc
*/
protected function configure()
{
$this->setName('order:delete')
->setDescription('Delete order by id')
->addArgument(self::ORDER_ID, InputArgument::OPTIONAL, __('Order Id'));
parent::configure();
}
/**
* {@inheritdoc}
*/
protected function execute(InputInterface $input, OutputInterface $output)
{
if (!$this->_helperData->isEnabled()) {
$output->writeln('<error>Please enable the module.</error>');
return;
}
$this->state->setAreaCode(Area::AREA_ADMINHTML);
$this->registry->unregister('isSecureArea');
$this->registry->register('isSecureArea', true);
$orderId = $input->getArgument(self::ORDER_ID);
try {
/** delete order*/
$this->orderRepository->deleteById($orderId);
/** delete order data on grid report data related*/
$this->_helperData->deleteRecord($orderId);
$output->writeln('<info>The delete order process has been successful!</info>');
} catch (Exception $e) {
$output->writeln("<error>{$e->getMessage()}</error>");
}
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Controller\Adminhtml\Delete;
use Exception;
use Magento\Backend\App\Action;
use Magento\Backend\App\Action\Context;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\Result\Redirect;
use Magento\Framework\Controller\ResultInterface;
use Magento\Sales\Api\OrderManagementInterface;
use Magento\Sales\Model\OrderRepository;
use Magento\Store\Model\StoreManagerInterface;
use Mageplaza\DeleteOrders\Helper\Data as HelperData;
use Mageplaza\DeleteOrders\Helper\Email;
use Psr\Log\LoggerInterface;
/**
* Class Manually
*
* @package Mageplaza\DeleteOrders\Controller\Adminhtml\Delete
*/
class Manually extends Action
{
/**
* @var HelperData
*/
protected $_helperData;
/**
* @var OrderRepository
*/
protected $orderRepository;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @var OrderManagementInterface
*/
protected $_orderManagement;
/**
* @var Email
*/
protected $_email;
/**
* @var StoreManagerInterface
*/
protected $_storeManager;
/**
* Manually constructor.
*
* @param Context $context
* @param HelperData $helperData
* @param OrderRepository $orderRepository
* @param LoggerInterface $logger
* @param OrderManagementInterface $orderManagement
* @param Email $email
* @param StoreManagerInterface $storeManager
*/
public function __construct(
Context $context,
HelperData $helperData,
OrderRepository $orderRepository,
LoggerInterface $logger,
OrderManagementInterface $orderManagement,
Email $email,
StoreManagerInterface $storeManager
) {
$this->_helperData = $helperData;
$this->orderRepository = $orderRepository;
$this->logger = $logger;
$this->_orderManagement = $orderManagement;
$this->_email = $email;
$this->_storeManager = $storeManager;
parent::__construct($context);
}
/**
* @return ResponseInterface|Redirect|ResultInterface
*/
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$storeId = $this->getRequest()->getParam('store');
$status = ['processing', 'pending', 'fraud'];
$orderCollection = $this->_helperData->getMatchingOrders($storeId);
if ($orderCollection->getSize()) {
$successDelete = 0;
$errorOrders = [];
foreach ($orderCollection->getItems() as $order) {
try {
if ($this->_helperData->versionCompare('2.3.0')) {
if (in_array($order->getStatus(), $status, true)) {
$this->_orderManagement->cancel($order->getId());
}
if ($order->getStatus() === 'holded') {
$this->_orderManagement->unHold($order->getId());
$this->_orderManagement->cancel($order->getId());
}
}
$this->orderRepository->delete($order);
$this->_helperData->deleteRecord($order->getId());
$successDelete++;
} catch (Exception $e) {
$errorOrders[$order->getId()] = $order->getIncrementId();
$this->logger->error($e->getMessage());
}
}
if ($successDelete) {
$this->messageManager->addSuccessMessage(__('Success! ' . $successDelete . ' orders have been deleted'));
}
if (count($errorOrders)) {
$this->messageManager->addErrorMessage(__(
'The following orders cannot being deleted. %1',
implode(', ', $errorOrders)
));
}
} else {
$this->messageManager->addNoticeMessage(__('No order has been deleted!'));
}
return $resultRedirect->setUrl($this->_redirect->getRefererUrl());
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Controller\Adminhtml\Order;
use Exception;
use Magento\Framework\App\ObjectManager;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\Result\Redirect;
use Magento\Framework\Controller\ResultInterface;
use Magento\Framework\Exception\LocalizedException;
use Magento\Sales\Controller\Adminhtml\Order;
use Mageplaza\DeleteOrders\Helper\Data;
/**
* Class Delete
* @package Mageplaza\DeleteOrders\Controller\Adminhtml\Order
*/
class Delete extends Order
{
/**
* Authorization level of a basic admin session
*
* @see _isAllowed()
*/
const ADMIN_RESOURCE = 'Magento_Sales::delete';
/**
* @return ResponseInterface|Redirect|ResultInterface
*/
public function execute()
{
$resultRedirect = $this->resultRedirectFactory->create();
$objectManager = ObjectManager::getInstance();
$orderManagement = $objectManager->create('Magento\Sales\Api\OrderManagementInterface');
$status = ['processing', 'pending', 'fraud'];
$helper = $this->_objectManager->get(Data::class);
if (!$helper->isEnabled()) {
$this->messageManager->addError(__('Cannot delete the order.'));
return $resultRedirect->setPath('sales/order/view', [
'order_id' => $this->getRequest()->getParam('order_id')
]);
}
$order = $this->_initOrder();
if ($order) {
try {
if ($helper->versionCompare('2.3.0')) {
if (in_array($order->getStatus(), $status)) {
$orderManagement->cancel($order->getId());
}
if ($order->getStatus() === 'holded') {
$orderManagement->unHold($order->getId());
$orderManagement->cancel($order->getId());
}
}
/** delete order*/
$this->orderRepository->delete($order);
/** delete order data on grid report data related*/
$helper->deleteRecord($order->getId());
$this->messageManager->addSuccessMessage(__('The order has been deleted.'));
} catch (LocalizedException $e) {
$this->messageManager->addErrorMessage($e->getMessage());
return $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getId()]);
} catch (Exception $e) {
$this->messageManager->addErrorMessage(__('An error occurred while deleting the order. Please try again later.'));
$this->_objectManager->get('Psr\Log\LoggerInterface')->critical($e);
return $resultRedirect->setPath('sales/order/view', ['order_id' => $order->getId()]);
}
}
return $resultRedirect->setPath('sales/*/');
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Controller\Adminhtml\Order;
use Exception;
use Magento\Backend\App\Action\Context;
use Magento\Backend\Model\View\Result\Redirect;
use Magento\Framework\App\ResponseInterface;
use Magento\Framework\Controller\ResultFactory;
use Magento\Framework\Controller\ResultInterface;
use Magento\Framework\Model\ResourceModel\Db\Collection\AbstractCollection;
use Magento\Sales\Api\Data\OrderInterface;
use Magento\Sales\Api\OrderManagementInterface;
use Magento\Sales\Controller\Adminhtml\Order\AbstractMassAction;
use Magento\Sales\Model\OrderRepository;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
use Magento\Ui\Component\MassAction\Filter;
use Mageplaza\DeleteOrders\Helper\Data as DataHelper;
use Psr\Log\LoggerInterface;
/**
* Class MassDelete
* @package Mageplaza\DeleteOrders\Controller\Adminhtml\Order
*/
class MassDelete extends AbstractMassAction
{
/**
* Authorization level of a basic admin session.
*
* @see _isAllowed()
*/
const ADMIN_RESOURCE = 'Magento_Sales::delete';
/**
* @var OrderRepository
*/
protected $orderRepository;
/**
* @var DataHelper
*/
protected $helper;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @var OrderManagementInterface
*/
protected $_orderManagement;
/**
* MassDelete constructor.
*
* @param Context $context
* @param Filter $filter
* @param CollectionFactory $collectionFactory
* @param OrderRepository $orderRepository
* @param DataHelper $dataHelper
* @param LoggerInterface $logger
* @param OrderManagementInterface $orderManagement
*/
public function __construct(
Context $context,
Filter $filter,
CollectionFactory $collectionFactory,
OrderRepository $orderRepository,
DataHelper $dataHelper,
LoggerInterface $logger,
OrderManagementInterface $orderManagement
) {
parent::__construct($context, $filter);
$this->collectionFactory = $collectionFactory;
$this->orderRepository = $orderRepository;
$this->helper = $dataHelper;
$this->logger = $logger;
$this->_orderManagement = $orderManagement;
}
/**
* @param AbstractCollection $collection
*
* @return Redirect|ResponseInterface|ResultInterface
*/
protected function massAction(AbstractCollection $collection)
{
if ($this->helper->isEnabled()) {
$deleted = 0;
$status = ['processing', 'pending', 'fraud'];
/** @var OrderInterface $order */
foreach ($collection->getItems() as $order) {
try {
if ($this->helper->versionCompare('2.3.0')) {
if (in_array($order->getStatus(), $status, true)) {
$this->_orderManagement->cancel($order->getId());
}
if ($order->getStatus() === 'holded') {
$this->_orderManagement->unHold($order->getId());
$this->_orderManagement->cancel($order->getId());
}
}
/** delete order*/
$this->orderRepository->delete($order);
/** delete order data on grid report data related*/
$this->helper->deleteRecord($order->getId());
$deleted++;
} catch (Exception $e) {
$this->logger->critical($e);
$this->messageManager->addErrorMessage(__(
'Cannot delete order #%1. Please try again later.',
$order->getIncrementId()
));
}
}
if ($deleted) {
$this->messageManager->addSuccessMessage(__('A total of %1 order(s) has been deleted.', $deleted));
}
}
/** @var Redirect $resultRedirect */
$resultRedirect = $this->resultFactory->create(ResultFactory::TYPE_REDIRECT);
$resultRedirect->setPath($this->getComponentRefererUrl());
return $resultRedirect;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Cron;
use Exception;
use Magento\Framework\App\Area;
use Magento\Framework\App\State;
use Magento\Framework\Exception\LocalizedException;
use Magento\Framework\Registry;
use Magento\Sales\Api\OrderManagementInterface;
use Magento\Sales\Model\OrderRepository;
use Magento\Store\Model\StoreManagerInterface;
use Mageplaza\DeleteOrders\Helper\Data as HelperData;
use Mageplaza\DeleteOrders\Helper\Email;
use Psr\Log\LoggerInterface;
/**
* Class Manually
*
* @package Mageplaza\DeleteOrders\Cron
*/
class Manually
{
/**
* @var HelperData
*/
protected $_helperData;
/**
* @var Email
*/
protected $_email;
/**
* @var StoreManagerInterface
*/
protected $_storeManager;
/**
* @var OrderRepository
*/
protected $orderRepository;
/**
* @var State
*/
protected $state;
/**
* @var Registry
*/
protected $registry;
/**
* @var LoggerInterface
*/
protected $logger;
/**
* @var OrderManagementInterface
*/
protected $_orderManagement;
/**
* Manually constructor.
*
* @param HelperData $helperData
* @param Email $email
* @param StoreManagerInterface $storeManager
* @param OrderRepository $orderRepository
* @param State $state
* @param Registry $registry
* @param LoggerInterface $logger
* @param OrderManagementInterface $orderManagement
*/
public function __construct(
HelperData $helperData,
Email $email,
StoreManagerInterface $storeManager,
OrderRepository $orderRepository,
state $state,
Registry $registry,
LoggerInterface $logger,
OrderManagementInterface $orderManagement
) {
$this->_helperData = $helperData;
$this->_email = $email;
$this->_storeManager = $storeManager;
$this->orderRepository = $orderRepository;
$this->state = $state;
$this->registry = $registry;
$this->logger = $logger;
$this->_orderManagement = $orderManagement;
}
/**
* @throws LocalizedException
*/
public function process()
{
$status = ['processing', 'pending', 'fraud'];
foreach ($this->_storeManager->getStores() as $store) {
$storeId = $store->getId();
if (!$this->_helperData->isEnabled($storeId)) {
continue;
}
$orderCollection = $this->_helperData->getMatchingOrders($storeId);
if ($numOfOrders = $orderCollection->getSize()) {
$this->registry->unregister('isSecureArea');
$this->registry->register('isSecureArea', true);
$errorOrders = [];
foreach ($orderCollection->getItems() as $order) {
try {
if ($this->_helperData->versionCompare('2.3.0')) {
if (in_array($order->getStatus(), $status, true)) {
$this->_orderManagement->cancel($order->getId());
}
if ($order->getStatus() === 'holded') {
$this->_orderManagement->unHold($order->getId());
$this->_orderManagement->cancel($order->getId());
}
}
$this->orderRepository->delete($order);
$this->_helperData->deleteRecord($order->getId());
} catch (Exception $e) {
$errorOrders[$order->getId()] = $order->getIncrementId();
$this->logger->error($e->getMessage());
}
}
if ($this->_email->isEnabledEmail($storeId)) {
if (!$this->state->getAreaCode()) {
$this->state->setAreaCode(Area::AREA_FRONTEND);
}
$templateParams = [
'num_order' => $numOfOrders,
'success_order' => $numOfOrders - count($errorOrders),
'error_order' => count($errorOrders)
];
$this->_email->sendEmailTemplate($templateParams, $storeId);
}
}
}
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Helper;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\ObjectManagerInterface;
use Magento\Sales\Model\ResourceModel\Order;
use Magento\Sales\Model\ResourceModel\Order\Collection;
use Magento\Sales\Model\ResourceModel\Order\CollectionFactory;
use Magento\Sales\Model\ResourceModel\OrderFactory;
use Magento\Store\Model\Store;
use Magento\Store\Model\StoreManagerInterface;
use Mageplaza\Core\Helper\AbstractData;
use Mageplaza\DeleteOrders\Model\Config\Source\Country;
/**
* Class Data
* @package Mageplaza\DeleteOrders\Helper
*/
class Data extends AbstractData
{
const CONFIG_MODULE_PATH = 'delete_orders';
/**
* @var OrderFactory
*/
private $orderResourceFactory;
protected $orderCollectionFactory;
/**
* Data constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
* @param OrderFactory $orderResourceFactory
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager,
CollectionFactory $orderCollectionFactory,
OrderFactory $orderResourceFactory
) {
$this->orderResourceFactory = $orderResourceFactory;
$this->orderCollectionFactory = $orderCollectionFactory;
parent::__construct($context, $objectManager, $storeManager);
}
/**
* Get order collection which matching the delete config condition
*
* @param null $storeId
* @param int $limit
*
* @return Collection
*/
public function getMatchingOrders($storeId = null, $limit = 1000)
{
$orderCollection = $this->orderCollectionFactory->create()
->addFieldToFilter('status', ['in' => $this->getOrderStatusConfig($storeId)])
->addFieldToFilter('customer_group_id', ['in' => $this->getOrderCustomerGroupConfig($storeId)]);
$storeIds = $this->getStoreViewConfig($storeId);
if (!in_array(Store::DEFAULT_STORE_ID, $storeIds, true)) {
$orderCollection->addFieldToFilter('store_id', ['in' => $storeIds]);
}
if ($total = $this->getOrderTotalConfig($storeId)) {
$orderCollection->addFieldToFilter('base_grand_total', ['lteq' => $total]);
}
if ($dayBefore = $this->getPeriodConfig($storeId)) {
$orderCollection->addFieldToFilter('created_at', ['lteq' => $this->setDate($dayBefore)]);
}
if ($limit) {
$orderCollection->getSelect()->limit($limit);
}
if ($this->getShippingCountryType($storeId) === Country::SPECIFIC) {
$orderCollection->getSelect()
->joinLeft(
['soa' => $orderCollection->getTable('sales_order_address')],
'main_table.entity_id = soa.parent_id',
[]
)
->where('soa.country_id IN (?)', $this->getCountriesConfig($storeId));
}
return $orderCollection;
}
/**
* @param $orderId
*/
public function deleteRecord($orderId)
{
/** @var Order $resource */
$resource = $this->orderResourceFactory->create();
$connection = $resource->getConnection();
/** delete invoice grid record via resource model*/
$connection->delete(
$resource->getTable('sales_invoice_grid'),
$connection->quoteInto('order_id = ?', $orderId)
);
/** delete shipment grid record via resource model*/
$connection->delete(
$resource->getTable('sales_shipment_grid'),
$connection->quoteInto('order_id = ?', $orderId)
);
/** delete creditmemo grid record via resource model*/
$connection->delete(
$resource->getTable('sales_creditmemo_grid'),
$connection->quoteInto('order_id = ?', $orderId)
);
}
/**
* @param $days
*
* @return false|string
*/
public function setDate($days)
{
return date('Y-m-d H:i:s', strtotime('-' . $days . ' days'));
}
/**
* @param null $storeId
*
* @return mixed
*/
public function getOrderStatusConfig($storeId = null)
{
return explode(',', $this->getScheduleConfig('order_status', $storeId));
}
/**
* @param null $storeId
*
* @return mixed
*/
public function getOrderCustomerGroupConfig($storeId = null)
{
return explode(',', $this->getScheduleConfig('customer_groups', $storeId));
}
/**
* @param null $storeId
*
* @return array
*/
public function getStoreViewConfig($storeId = null)
{
return explode(',', $this->getScheduleConfig('store_views', $storeId));
}
/**
* @param null $storeId
*
* @return mixed
*/
public function getShippingCountryType($storeId = null)
{
return $this->getScheduleConfig('country', $storeId);
}
/**
* @param null $storeId
*
* @return array
*/
public function getCountriesConfig($storeId = null)
{
return explode(',', $this->getScheduleConfig('specific_country', $storeId));
}
/**
* @param null $storeId
*
* @return mixed
*/
public function getOrderTotalConfig($storeId = null)
{
return $this->getScheduleConfig('order_under', $storeId);
}
/**
* @param null $storeId
*
* @return mixed
*/
public function getPeriodConfig($storeId = null)
{
return $this->getScheduleConfig('day_before', $storeId);
}
/**
* @param $code
* @param null $storeId
*
* @return mixed
*/
public function getScheduleConfig($code, $storeId = null)
{
return $this->getModuleConfig('schedule/' . $code, $storeId);
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Helper;
use Exception;
use Magento\Framework\App\Area;
use Magento\Framework\App\Helper\Context;
use Magento\Framework\Mail\Template\TransportBuilder;
use Magento\Framework\ObjectManagerInterface;
use Magento\Store\Model\StoreManagerInterface;
use Mageplaza\Core\Helper\AbstractData;
use Mageplaza\DeleteOrders\Helper\Data as HelperData;
/**
* Class Email
*
* @package Mageplaza\DeleteOrders\Helper
*/
class Email extends AbstractData
{
const CONFIG_MODULE_PATH = 'delete_orders';
const EMAIL_CONFIGURATION = '/email';
/**
* @var TransportBuilder
*/
protected $transportBuilder;
/**
* @var Data
*/
protected $_helperData;
/**
* Email constructor.
*
* @param Context $context
* @param ObjectManagerInterface $objectManager
* @param StoreManagerInterface $storeManager
* @param TransportBuilder $transportBuilder
* @param Data $helperData
*/
public function __construct(
Context $context,
ObjectManagerInterface $objectManager,
StoreManagerInterface $storeManager,
TransportBuilder $transportBuilder,
HelperData $helperData
) {
$this->transportBuilder = $transportBuilder;
$this->_helperData = $helperData;
parent::__construct($context, $objectManager, $storeManager);
}
/**
* @param array $templateParams
* @param null $storeId
*
* @return $this
*/
public function sendEmailTemplate($templateParams = [], $storeId = null)
{
try {
$toEmails = $this->getToEmail($storeId);
foreach ($toEmails as $toEmail) {
$transport = $this->transportBuilder
->setTemplateIdentifier($this->getTemplate($storeId))
->setTemplateOptions(['area' => Area::AREA_FRONTEND, 'store' => $storeId])
->setTemplateVars($templateParams)
->setFrom($this->getSender($storeId))
->addTo($toEmail)
->getTransport();
$transport->sendMessage();
}
} catch (Exception $e) {
$this->_logger->critical($e->getMessage());
}
return $this;
}
/**
* ======================================= Email Configuration ==================================================
*
* @param string $code
* @param null $storeId
*
* @return mixed
*/
public function getConfigEmail($code = '', $storeId = null)
{
$code = ($code !== '') ? '/' . $code : '';
return $this->getConfigValue(static::CONFIG_MODULE_PATH . self::EMAIL_CONFIGURATION . $code, $storeId);
}
/**
* @param null $storeId
*
* @return bool
*/
public function isEnabledEmail($storeId = null)
{
if ($this->_helperData->isEnabled()) {
return (bool) $this->getConfigEmail('enabled', $storeId);
}
return false;
}
/**
* @param null $storeId
*
* @return string
*/
public function getSender($storeId = null)
{
return $this->getConfigEmail('sender', $storeId);
}
/**
* @param null $storeId
*
* @return string
*/
public function getTemplate($storeId = null)
{
return $this->getConfigEmail('template', $storeId);
}
/**
* @param null $storeId
*
* @return array
*/
public function getToEmail($storeId = null)
{
return explode(',', $this->getConfigEmail('to', $storeId));
}
}
Copyright © 2016-present Mageplaza Co. Ltd.
This License is entered by Mageplaza to govern the usage or redistribution of Mageplaza software. This is a legal agreement between you (either an individual or a single entity) and Mageplaza for Mageplaza software product(s) which may include extensions, templates and services.
By purchasing, installing, or otherwise using Mageplaza products, you acknowledge that you have read this License and agree to be bound by the terms of this Agreement. If you do not agree to the terms of this License, do not install or use Mageplaza products.
The Agreement becomes effective at the moment when you acquire software from our site or receive it through email or on data medium or by any other means. Mageplaza reserves the right to make reasonable changes to the terms of this license agreement and impose its clauses at any given time.
1. GRANT OF LICENSE: By purchasing a product of Mageplaza:
1. Customer will receive source code open 100%.
2. Customer will obtain a License Certificate which will remain valid until the Customer stops using the Product or until Mageplaza terminates this License because of Customer’s failure to comply with any of its Terms and Conditions. Each License Certificate includes a license serial which is valid for one live Magento installation only and unlimited test Magento installations.
3. You are allowed to customize our products to fit with your using purpose.
4. DESCRIPTION OF OTHER RIGHTS AND LIMITATIONS
5. Installation and Use
6. For each new Software installation, you are obliged to purchase a separate License. You are not permitted to use any part of the code in whole or part in any other software or product or website. You are legally bound to preserve the copyright information intact including the text/link at bottom.
2. Distribution: You are not allowed to distribute Mageplaza software to third parties. Any distribution without our permission, including non commercial distribution is considered as violation of this Agreement and entails liability, according to the current law. You may not place the Software onto a server that allows access to the Software via a public network or the Internet for distribution purposes.
3. Rental: You may not give, sell, sub-license, rent, lease or lend any portion of the Software to anyone.
4. Compliance with Applicable Laws: You must comply with all applicable laws regarding use of software products. Mageplaza software and a portion of it are protected by copyright laws and international copyright treaties, as well as other intellectual property laws and treaties. Accordingly, customer is required to treat the software like any other copyrighted material. Any activity violating copyright law will be prosecuted according to the current law. We retain the right to revoke the license of any user holding an invalid license.
5. TERMINATION: Without prejudice to any other rights, Mageplaza may terminate this License at any time if you fail to comply with the terms and conditions of this License. In such event, it constitutes a breach of the agreement, and your license to use the program is revoked and you must destroy all copies of Mageplaza products in your possession. After being notified of termination of your license, if you continue to use Mageplaza software, you hereby agree to accept an injunction to prevent you from its further use and to pay all costs (including but not limited to reasonable attorney fees) to enforce our revocation of your license and any damages suffered by us because of your misuse of the Software. We are not bound to return you the amount spent for purchase of the Software for the termination of this License.
6. LIMITATION OF LIABILITY: In no event shall Mageplaza be liable for any damages (including, without limitation, lost profits, business interruption, or lost information) rising out of ‘Authorized Users’ use of or inability to use the Mageplaza products, even if Mageplaza has been advised of the possibility of such damages. In no event will Mageplaza be liable for prosecution arising from use of the Software against law or for any illegal use.
The latest License: https://www.mageplaza.com/LICENSE.txt
\ No newline at end of file
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Model\Config\Backend\Order;
use Exception;
use Magento\Framework\App\Cache\TypeListInterface;
use Magento\Framework\App\Config\ScopeConfigInterface;
use Magento\Framework\App\Config\Value;
use Magento\Framework\App\Config\ValueFactory;
use Magento\Framework\Data\Collection\AbstractDb;
use Magento\Framework\Message\ManagerInterface;
use Magento\Framework\Model\Context;
use Magento\Framework\Model\ResourceModel\AbstractResource;
use Magento\Framework\Registry;
use Mageplaza\DeleteOrders\Model\Config\Source\Frequency as ValueConfig;
/**
* Class Frequency
*
* @package Mageplaza\DeleteOrders\Model\Config\Backend\Order
*/
class Frequency extends Value
{
/**
* Cron string path
*/
const CRON_STRING_PATH = 'crontab/default/jobs/delete_orders_cron_manually_email/schedule/cron_expr';
/**
* Cron model path
*/
const CRON_MODEL_PATH = 'crontab/default/jobs/delete_orders_cron_manually_email/run/model';
/**
* @var ValueFactory
*/
protected $_configValueFactory;
/**
* @var string
*/
protected $_runModelPath = '';
/**
* @var ManagerInterface
*/
protected $messageManager;
/**
* Frequency constructor.
*
* @param Context $context
* @param Registry $registry
* @param ScopeConfigInterface $config
* @param TypeListInterface $cacheTypeList
* @param ValueFactory $configValueFactory
* @param ManagerInterface $messageManager
* @param AbstractResource|null $resource
* @param AbstractDb|null $resourceCollection
* @param string $runModelPath
* @param array $data
*/
public function __construct(
Context $context,
Registry $registry,
ScopeConfigInterface $config,
TypeListInterface $cacheTypeList,
ValueFactory $configValueFactory,
ManagerInterface $messageManager,
AbstractResource $resource = null,
AbstractDb $resourceCollection = null,
$runModelPath = '',
array $data = []
) {
$this->_runModelPath = $runModelPath;
$this->_configValueFactory = $configValueFactory;
$this->messageManager = $messageManager;
parent::__construct(
$context,
$registry,
$config,
$cacheTypeList,
$resource,
$resourceCollection,
$data
);
}
/**
* @return Value
*/
public function afterSave()
{
$time = $this->getData('groups/schedule/fields/time/value');
$frequency = $this->getData('groups/schedule/fields/frequency/value');
if ($frequency != (string)ValueConfig::DISABLE) {
$cronExprArray = [
(int) $time[1], //Minute
(int) $time[0], //Hour
$frequency === \Magento\Cron\Model\Config\Source\Frequency::CRON_MONTHLY ? '1' : '*', //Day of the Month
'*', //Month of the Year
$frequency === \Magento\Cron\Model\Config\Source\Frequency::CRON_WEEKLY ? '1' : '*', //Day of the Week
];
$cronExprString = join(' ', $cronExprArray);
try {
$this->_configValueFactory->create()
->load(self::CRON_STRING_PATH, 'path')
->setValue($cronExprString)
->setPath(self::CRON_STRING_PATH)
->save();
$this->_configValueFactory->create()
->load(self::CRON_MODEL_PATH, 'path')
->setValue($this->_runModelPath)
->setPath(self::CRON_MODEL_PATH)
->save();
} catch (Exception $e) {
$this->messageManager->addErrorMessage(__('We can\'t save the cron expression. %1', $e->getMessage()));
}
}
return parent::afterSave();
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Model\Config\Source;
use Magento\Framework\Option\ArrayInterface;
/**
* Class Country
*
* @package Mageplaza\DeleteOrders\Model\Config\Source
*/
class Country implements ArrayInterface
{
const SPECIFIC = '1';
const ALL = '2';
/**
* Return array of options as value-label pairs
*
* @return array Format: array(array('value' => '<value>', 'label' => '<label>'), ...)
*/
public function toOptionArray()
{
return [
['value' => self::ALL, 'label' => __('All Countries')],
['value' => self::SPECIFIC, 'label' => __('Specific Countries')]
];
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Model\Config\Source;
/**
* Class Frequency
*
* @package Mageplaza\DeleteOrders\Model\Config\Source
*/
class Frequency extends \Magento\Cron\Model\Config\Source\Frequency
{
const DISABLE = 0;
/**
* @return array
*/
public function toOptionArray()
{
parent::toOptionArray();
array_unshift(self::$_options, ['label' => __('Disable'), 'value' => self::DISABLE]);
return self::$_options;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Model\Config\Source;
use Magento\Store\Model\System\Store;
use Magento\Eav\Model\Entity\Attribute\Source\AbstractSource;
/**
* Class StoreView
*
* @package Mageplaza\DeleteOrders\Model\Config\Source
*/
class StoreView extends AbstractSource
{
/**
* @var Store
*/
private $store;
/**
* StoreView constructor.
*
* @param Store $store
*/
public function __construct(Store $store)
{
$this->store = $store;
}
/**
* @return array
*/
public function toOptionArray()
{
$this->_options[] = [
'label' => __('All Store Views'),
'value' => 0,
];
foreach ($this->store->toOptionArray() as $item) {
$this->_options[] = [
'label' => __($item['label']),
'value' => $item['value'],
];
}
return $this->_options;
}
/**
* Get all options
*
* @return array
*/
public function getAllOptions()
{
$this->_options[] = [
'label' => __('All Store Views'),
'value' => 0,
];
foreach ($this->store->toOptionArray() as $item) {
$this->_options[] = [
'label' => __($item['label']),
'value' => $item['value'],
];
}
return $this->_options;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrder
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Plugin\Model;
use Mageplaza\DeleteOrders\Helper\Data;
use Magento\Sales\Model\Order as CoreOrder;
/**
* Class Order
* @package Mageplaza\DeleteOrders\Plugin\Model
*/
class Order
{
/**
* @var Data
*/
protected $helper;
/**
* Order constructor.
* @param Data $helper
*/
public function __construct(
Data $helper
) {
$this->helper = $helper;
}
/**
* @param CoreOrder $order
* @return array
*/
public function beforeUnhold(CoreOrder $order)
{
if (!$this->helper->isEnabled()) {
return [];
}
if ($order->getStatus() !== $order->getState() && $order->getStatus() === CoreOrder::STATE_HOLDED) {
$order->setState(CoreOrder::STATE_HOLDED);
}
return [];
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrder
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Plugin\Order;
use Magento\Framework\AuthorizationInterface;
use Magento\Ui\Component\MassAction;
use Mageplaza\DeleteOrders\Helper\Data;
/**
* Class AddDeleteAction
* @package Mageplaza\DeleteOrders\Plugin\Order
*/
class AddDeleteAction
{
/**
* @var Data
*/
protected $helper;
/**
* @var AuthorizationInterface
*/
protected $_authorization;
/**
* AddDeleteAction constructor.
*
* @param Data $helper
* @param AuthorizationInterface $authorization
*/
public function __construct(
Data $helper,
AuthorizationInterface $authorization
) {
$this->helper = $helper;
$this->_authorization = $authorization;
}
/**
* @param MassAction $object
* @param $result
*
* @return mixed
*/
public function afterGetChildComponents(MassAction $object, $result)
{
if (!isset($result['mp_delete'])) {
return $result;
}
if (!$this->helper->isEnabled() || !$this->_authorization->isAllowed('Magento_Sales::delete')) {
unset($result['mp_delete']);
}
return $result;
}
}
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrder
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
namespace Mageplaza\DeleteOrders\Plugin\Order;
use Magento\Framework\AuthorizationInterface;
use Magento\Framework\View\LayoutInterface;
use Magento\Sales\Block\Adminhtml\Order\View;
use Mageplaza\DeleteOrders\Helper\Data;
/**
* Class AddDeleteButton
* @package Mageplaza\DeleteOrders\Plugin\Order
*/
class AddDeleteButton
{
/**
* @var Data
*/
protected $helper;
/**
* @var AuthorizationInterface
*/
protected $_authorization;
/**
* AddDeleteButton constructor.
*
* @param Data $helper
* @param AuthorizationInterface $authorization
*/
public function __construct(
Data $helper,
AuthorizationInterface $authorization
) {
$this->helper = $helper;
$this->_authorization = $authorization;
}
/**
* @param View $object
* @param LayoutInterface $layout
*
* @return array
*/
public function beforeSetLayout(View $object, LayoutInterface $layout)
{
if ($this->helper->isEnabled() && $this->_authorization->isAllowed('Magento_Sales::delete')) {
$message = __('Are you sure you want to delete this order?');
$object->addButton(
'order_delete',
[
'label' => __('Delete'),
'class' => 'delete',
'id' => 'order-view-delete-button',
'onclick' => "confirmSetLocation('{$message}', '{$object->getDeleteUrl()}')"
]
);
}
return [$layout];
}
}
# Magento 2 Delete Orders extension Free
**[Magento 2 Delete Orders](https://www.mageplaza.com/magento-2-delete-orders/)** by Mageplaza helps admins completely remove unnecessary orders, invoices, shipments and credit memos which are arised during testing process. This helps simplify order management and get these arranged neater.
## Highlight features
- Delete mass orders
- Ability to delete all
- Delete related data safely
[![Latest Stable Version](https://poser.pugx.org/mageplaza/module-delete-orders/v/stable)](https://packagist.org/packages/mageplaza/module-delete-orders)
[![Total Downloads](https://poser.pugx.org/mageplaza/module-delete-orders/downloads)](https://packagist.org/packages/mageplaza/module-delete-orders)
**IMPORTANT NOTE:** This version of Magento 2 Delete Orders extension on Github is free as a contribution to the Magento community from Mageplaza. This package does not include the technical support. Should you need technical support for this extension, you will have to buy a license from Mageplaza. [Click here to buy](https://www.mageplaza.com/magento-2-delete-orders/).
## 1. Documentation
- [Installation guide](https://www.mageplaza.com/install-magento-2-extension/)
- [User guide](http://docs.mageplaza.com/delete-order-m2/index.html)
- [Introduction page](https://www.mageplaza.com/magento-2-delete-orders/)
- [Get Support](https://github.com/mageplaza/magento-2-delete-orders/issues)
- [Contribute on Github](https://github.com/mageplaza/magento-2-delete-orders)
- [Changelog](https://github.com/mageplaza/magento-2-delete-orders/releases)
- [License](https://www.mageplaza.com/LICENSE.txt)
## 2. FAQs
#### Q: I got error: `Mageplaza_Core has been already defined`
A: Read solution: https://github.com/mageplaza/module-core/issues/3
## 3. How to install Magento 2 Delete Orders
## ✓ Install via composer (recommend)
Run the following command in Magento 2 root folder:
With Marketing Automation (recommend):
```
composer require mageplaza/module-delete-orders mageplaza/module-smtp
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
Without Marketing Automation:
```
composer require mageplaza/module-delete-orders
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
## 4. Magento 2 Delete Orders: Problems & Solutions
Before applying any new changes in an online store, store admins have to carry quite many tests. This testing process can arise a number of orders, invoices, shipments and credit memos which are obviously unnecessary in long term and they can cause difficulties in management. Unfortunately, default Magento 2 doesn’t support any functionalities to remove them from the backend. This consequently causes frustration and inconvenience in administration.
There should be a way to deal with this problem, Mageplaza Delete Orders extension is developed to help store admins simplify this task. The module helps delete orders, invoices, shipments and credit memos from the backend but keeps the retire data safe. The job can be done in the blink of an eye with mass deleting feature and ability to delete all.
## 5. Why online stores must have Mageplaza's Delete Orders
### To keep the backend well-arranged and neat
The appearance of test orders makes a store’s backend look like a mess. Thus cuts in unnecessary orders, shipments, invoices and credit memos created for testing will make everything neater, easier to follow and less confusing.
### To manage the backend more easily
The large number of test orders can confuse store admins and this can cause inconvenience or mistakes in managing. Having a neater backend will simplify order management.
## 6. Magento 2 Delete Orders Features
![magento 2 delete orders](https://cdn.mageplaza.com/media/general/GKcj6HQ.png)
### Delete mass test orders
To remove one order, store admins only need to manipulate with few clicks. Also, many orders created for testing purposes can be remove completely in a large number simultaneously by checking multiple desired items and clicking on Delete. Other related data will be removed along with the orders without any risks to affect the rest data.
### Delete all
Store admins are able to delete all test orders, invoices, shipments and credit memos really easily by performing some clicks. There will always be a confirmation step at the end to make sure everything is done right before all are eased from the backend. Hence, store admins can be carefree when they delete all orders simultaneously.
### Delete related information in safety
While deleting orders, invoices, shipments and credit memos, their related data will be removed from the backend also. However, Mageplaza Delete Orders extension will make sure that the rest data can be kept safe. No harm is caused with other necessary information.
## 7. More features
- Mageplaza Delete Orders for Magento 2 is totally open-source
- The module supports multi stores
- Multiple languages are supported
- It’s easy to customize
- Mageplaza provides a well-documented user guide for Magento 2 Delete Orders extension
**People also search:**
- magento 2 delete order
- magento 2 remove orders
- magento 2 delete test orders
- magento 2 delete order extension
- mageplaza delete order
- magento 2 delete all orders
- magento 2 delete order extension free
- magento 2 remove all orders
- magento 2 delete orders from database
**Other free Magnto 2 extension on Github**
- [Magento 2 Google maps module](https://github.com/mageplaza/magento-2-google-maps)
- [Magento 2 GDPR](https://github.com/mageplaza/magento-2-gdpr)
- [Magento 2 Popup extension](https://github.com/mageplaza/magento-2-better-popup)
- [Magento 2 Reporting extension](https://github.com/mageplaza/magento-2-reports)
- [Magento 2 social login](https://github.com/mageplaza/magento-2-social-login)
- [Magento 2 blog extension](https://github.com/mageplaza/magento-2-blog)
- [Magento 2 Ajax Layered Navigation](https://github.com/mageplaza/magento-2-ajax-layered-navigation)
- [Magento 2 security](https://github.com/mageplaza/magento-2-security)
**Get more [Magento 2 extension on Marketplace](https://marketplace.magento.com/partner/Mageplaza):**
- [Magento 2 OneStepCheckout](https://marketplace.magento.com/mageplaza-magento-2-one-step-checkout-extension.html)
- [Magento 2 Payment Restriction](https://marketplace.magento.com/mageplaza-module-payment-restriction.html)
- [Magento 2 Frequently Bought Together](https://marketplace.magento.com/mageplaza-module-frequently-bought-together.html)
- [Magento 2 Shipping Rules](https://marketplace.magento.com/mageplaza-module-shipping-rules.html)
- [Magento 2 Abandoned Cart Email](https://marketplace.magento.com/mageplaza-module-abandoned-cart-email.html)
- [Magento 2 SMTP](https://marketplace.magento.com/mageplaza-module-smtp.html)
- [Magento 2 Shipping Restrictions](https://marketplace.magento.com/mageplaza-module-shipping-restriction.html)
- [Magento 2 Gift Card](https://marketplace.magento.com/mageplaza-module-gift-card.html)
- [Magento 2 Order Attributes](https://marketplace.magento.com/mageplaza-module-order-attributes.html)
- [Magento 2 Layer Navitaion](https://marketplace.magento.com/mageplaza-layered-navigation-m2.html)
- [Magento 2 SEO All-in-one](https://marketplace.magento.com/mageplaza-magento-2-seo-extension.html)
# Delete Orders User Guide
## Documentation
- Installation guide: https://www.mageplaza.com/install-magento-2-extension/
- User guide: http://docs.mageplaza.com/delete-order-m2/index.html
- Introduction page: https://www.mageplaza.com/magento-2-delete-orders/
- Get Support: https://github.com/mageplaza/magento-2-delete-orders/issues
- Contribute on Github: https://github.com/mageplaza/magento-2-delete-orders
- Changelog: https://www.mageplaza.com/releases/delete-orders
- License https://www.mageplaza.com/LICENSE.txt
## How to install
### Install via composer [Recommend]
Run the following command in Magento 2 root folder
```
composer require mageplaza/module-delete-orders
php bin/magento setup:upgrade
php bin/magento setup:static-content:deploy
```
## FAQs
#### Q: I got error: `Mageplaza_Core has been already defined`
A: Read solution: https://github.com/mageplaza/module-core/issues/3
#### Q: My site is down
A: Please follow this guide: https://www.mageplaza.com/blog/magento-site-down.html
{
"name": "mageplaza/module-delete-orders",
"description": "Magento 2 Delete Orders extension",
"require": {
"mageplaza/module-core": "^1.4.5"
},
"type": "magento2-module",
"version": "4.0.1",
"license": "proprietary",
"authors": [
{
"name": "Mageplaza",
"email": "support@mageplaza.com",
"homepage": "https://www.mageplaza.com",
"role": "Technical Support"
}
],
"autoload": {
"files": [
"registration.php"
],
"psr-4": {
"Mageplaza\\DeleteOrders\\": ""
}
}
}
<?xml version="1.0"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Acl/etc/acl.xsd">
<acl>
<resources>
<resource id="Magento_Backend::admin">
<resource id="Magento_Sales::sales">
<resource id="Magento_Sales::sales_operation">
<resource id="Magento_Sales::sales_order">
<resource id="Magento_Sales::actions">
<resource id="Magento_Sales::delete" title="Delete" translate="title" sortOrder="65"/>
</resource>
</resource>
</resource>
</resource>
<resource id="Magento_Backend::stores">
<resource id="Magento_Backend::stores_settings">
<resource id="Magento_Config::config">
<resource id="Mageplaza_DeleteOrders::configuration" title="Mageplaza Delete Orders"/>
</resource>
</resource>
</resource>
</resource>
</resources>
</acl>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Sales\Block\Adminhtml\Order\View">
<plugin name="delete_order_add_button_delete" type="Mageplaza\DeleteOrders\Plugin\Order\AddDeleteButton"/>
</type>
<type name="Magento\Ui\Component\MassAction">
<plugin name="delete_order_add_massaction_delete" type="Mageplaza\DeleteOrders\Plugin\Order\AddDeleteAction"/>
</type>
<type name="Magento\Sales\Model\Order">
<plugin name="delete_order_hold_on" type="Mageplaza\DeleteOrders\Plugin\Model\Order"/>
</type>
</config>
<?xml version="1.0"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:App/etc/routes.xsd">
<router id="admin">
<route id="sales">
<module name="Mageplaza_DeleteOrders" before="Magento_Sales"/>
</route>
</router>
</config>
<?xml version="1.0"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Config:etc/system_file.xsd">
<system>
<section id="delete_orders" translate="label" type="text" sortOrder="450" showInDefault="1" showInWebsite="1" showInStore="1" >
<class>separator-top</class>
<label>Delete Orders</label>
<tab>mageplaza</tab>
<resource>Mageplaza_DeleteOrders::configuration</resource>
<group id="general" translate="label" type="text" sortOrder="1" showInDefault="1" showInWebsite="0" showInStore="0">
<label>General</label>
<field id="enabled" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="0" showInStore="0" canRestore="1">
<label>Enable</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<comment><![CDATA[Select <b>Yes</b> to enable this module.<br />
1. It helps to reduce abandonment cart with <a href="https://www.mageplaza.com/magento-2-one-step-checkout-extension/" target="_blank">One Step Checkout</a>. <br />
2. Magento stores see upwards of 30% revenue 💰 with AVADA. <a href="https://go.avada.io/mageplaza">Learn more</a>]]></comment>
</field>
</group>
<group id="schedule" translate="label" type="text" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Automatic Delete Configuration</label>
<field id="frequency" translate="label comment" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Schedule For</label>
<source_model>Mageplaza\DeleteOrders\Model\Config\Source\Frequency</source_model>
<backend_model>Mageplaza\DeleteOrders\Model\Config\Backend\Order\Frequency</backend_model>
<comment>Set up the schedule in which orders are deleted automatically.</comment>
</field>
<field id="time" translate="label" type="time" sortOrder="15" showInDefault="1" showInWebsite="0" showInStore="0">
<label>Start Time</label>
<depends>
<field id="frequency" separator="|">D|W|M</field>
</depends>
</field>
<field id="day_before" translate="label comment" sortOrder="20" type="text" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Excluded Period</label>
<validate>validate-number</validate>
<comment>For example, today is Sunday this week. If you set the period as 7 days, all the orders before Sunday last week will be deleted (if they meet the below conditions).</comment>
</field>
<field id="order_status" translate="label comment" type="multiselect" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Order Status</label>
<source_model>Magento\Sales\Model\Config\Source\Order\Status</source_model>
</field>
<field id="customer_groups" translate="label comment" type="multiselect" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Customer Group(s)</label>
<source_model>Magento\Customer\Model\ResourceModel\Group\Collection</source_model>
</field>
<field id="store_views" translate="label comment" type="multiselect" sortOrder="40" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Store View(s)</label>
<source_model>Magento\Store\Model\System\Store</source_model>
</field>
<field id="country" translate="label comment" type="select" sortOrder="50" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Shipping Countries</label>
<source_model>Mageplaza\DeleteOrders\Model\Config\Source\Country</source_model>
</field>
<field id="specific_country" translate="label comment" type="multiselect" sortOrder="60" showInDefault="1" showInWebsite="1" showInStore="1">
<label>Specific Country</label>
<source_model>Magento\Directory\Model\Config\Source\Country</source_model>
<depends>
<field id="country">1</field>
</depends>
</field>
<field id="order_under" translate="label comment" sortOrder="60" type="text" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Order Total</label>
<validate>validate-number</validate>
<comment>Less than or equal this amount</comment>
</field>
<field id="run_manually" translate="label" sortOrder="70" showInDefault="1" showInWebsite="1" showInStore="1">
<frontend_model>Mageplaza\DeleteOrders\Block\Adminhtml\System\Config\Manually</frontend_model>
<comment><![CDATA[
<span>Click Run Manually to delete the orders which meet the above conditions anytime</span><br />
<span>In case you want to delete a specific order, you can use command line</span><br />
<span><b>php bin/magento order:delete order_id</b></span><br />
]]>
</comment>
</field>
</group>
<group id="email" translate="label" type="text" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1" >
<label>Email Notification</label>
<field id="enabled" translate="label" type="select" sortOrder="10" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Enable</label>
<source_model>Magento\Config\Model\Config\Source\Yesno</source_model>
<comment><![CDATA[
<span>Email can be sent only when orders are deleted automatically by schedule.</span><br />
<span>Install <a href="https://www.mageplaza.com/magento-2-smtp/?utm_source=mageplaza&utm_medium=mageplaza&utm_campaign=mageplaza-review&utm_content=SMTP" target="_blank">Mageplaza_SMTP</a> to avoid sending to spam box.</span>
]]>
</comment>
</field>
<field id="sender" translate="label comment" type="select" sortOrder="20" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1" >
<label>Sender</label>
<source_model>Magento\Config\Model\Config\Source\Email\Identity</source_model>
</field>
<field id="template" translate="label comment" type="select" sortOrder="30" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Email Template</label>
<source_model>Magento\Config\Model\Config\Source\Email\Template</source_model>
</field>
<field id="to" sortOrder="40" translate="label comment" type="text" showInDefault="1" showInWebsite="1" showInStore="1" canRestore="1">
<label>Send To</label>
<comment>Separated by comma(s)</comment>
</field>
</group>
</section>
</system>
</config>
<?xml version="1.0"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Store:etc/config.xsd">
<default>
<delete_orders>
<module>
<type>1</type>
</module>
<general>
<enabled>1</enabled>
</general>
<schedule>
<frequency>0</frequency>
<order_status>0</order_status>
<store_views>0</store_views>
<country>2</country>
</schedule>
<email>
<enabled>0</enabled>
<sender>general</sender>
<template>delete_orders_email_template</template>
</email>
</delete_orders>
</default>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Cron:etc/crontab.xsd">
<group id="default">
<job name="delete_orders_cron_manually_email" instance="Mageplaza\DeleteOrders\Cron\Manually" method="process">
<config_path>crontab/default/jobs/delete_orders_cron_manually_email/schedule/cron_expr</config_path>
</job>
</group>
</config>
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:ObjectManager/etc/config.xsd">
<type name="Magento\Framework\Console\CommandList">
<arguments>
<argument name="commands" xsi:type="array">
<item name="delete_orders_command_delete" xsi:type="object">Mageplaza\DeleteOrders\Console\Delete</item>
</argument>
</arguments>
</type>
</config>
\ No newline at end of file
<?xml version="1.0"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Email:etc/email_templates.xsd">
<template id="delete_orders_email_template" label="Success Default Template" file="delete_orders_email_template.html" type="html" module="Mageplaza_DeleteOrders" area="frontend"/>
</config>
\ No newline at end of file
<?xml version="1.0"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<config xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:framework:Module/etc/module.xsd">
<module name="Mageplaza_DeleteOrders" setup_version="1.0.0">
<sequence>
<module name="Magento_Sales"/>
<module name="Mageplaza_Core"/>
</sequence>
</module>
</config>
"Order Id","Order Id"
"Success! ' . . ' orders have been deleted","Success! ' . . ' orders have been deleted"
"The following orders cannot being deleted. %1","The following orders cannot being deleted. %1"
"No order has been deleted!","No order has been deleted!"
"Cannot delete the order.","Cannot delete the order."
"The order has been deleted.","The order has been deleted."
"An error occurred while deleting the order. Please try again later.","An error occurred while deleting the order. Please try again later."
"Cannot delete order #%1. Please try again later.","Cannot delete order #%1. Please try again later."
"A total of %1 order(s) has been deleted.","A total of %1 order(s) has been deleted."
"We can't save the cron expression. %1","We can't save the cron expression. %1"
"All Countries","All Countries"
"Specific Countries","Specific Countries"
Disable,Disable
"Are you sure you want to delete this order?","Are you sure you want to delete this order?"
Delete,Delete
"Run Manually","Run Manually"
"Auto delete orders notification at %store_name","Auto delete orders notification at %store_name"
"Hi,","Hi,"
"The automatic delete-order schedule has been activated.","The automatic delete-order schedule has been activated."
"There are %num_order orders has been processed this time. With:","There are %num_order orders has been processed this time. With:"
Successfull:,Successfull:
Error:,Error:
"Best Regards,","Best Regards,"
"Are you sure to run manually?","Are you sure to run manually?"
"Delete Orders","Delete Orders"
General,General
Enable,Enable
"Select Yes to enable this module","Select Yes to enable this module"
"Automatic Delete Configuration","Automatic Delete Configuration"
"Schedule For","Schedule For"
"Set up the schedule in which orders are deleted automatically.","Set up the schedule in which orders are deleted automatically."
"Start Time","Start Time"
"Excluded Period","Excluded Period"
"For example, today is Sunday this week. If you set the period as 7 days, all the orders before Sunday last week will be deleted (if they meet the below conditions).","For example, today is Sunday this week. If you set the period as 7 days, all the orders before Sunday last week will be deleted (if they meet the below conditions)."
"Order Status","Order Status"
"Customer Group(s)","Customer Group(s)"
"Store View(s)","Store View(s)"
"Shipping Countries","Shipping Countries"
"Specific Country","Specific Country"
"Order Total","Order Total"
"Less than or equal this amount","Less than or equal this amount"
"Email Notification","Email Notification"
Sender,Sender
"Email Template","Email Template"
"Send To","Send To"
"Separated by comma(s)","Separated by comma(s)"
"Do you really want to delete this orders?","Do you really want to delete this orders?"
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
use Magento\Framework\Component\ComponentRegistrar;
ComponentRegistrar::register(
ComponentRegistrar::MODULE,
'Mageplaza_DeleteOrders',
__DIR__
);
<?php
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
use Mageplaza\DeleteOrders\Block\Adminhtml\System\Config\Manually;
/** @var Manually $block */ ?>
<button id="mpdeleteorders_run_manually" title="Run Manually" type="button" class="primary">
<span><?= __('Run Manually') ?></span>
</span></button>
<div class="mpdeleteorders_popup_confirm"></div>
<style>
button#mpdeleteorders_run_manually {
width: 94%;
}
</style>
<script>
require([
'jquery',
'Magento_Ui/js/modal/confirm',
'mage/translate',
], function ($, confirm, $t) {
$("#mpdeleteorders_run_manually").on('click', function () {
confirm({
content: $t('Are you sure to run manually?'),
actions: {
/** @inheritdoc */
confirm: function () {
window.location.href = "<?= $block->getUrl('sales/delete/manually', ['_current' => true, '_use_rewrite' => true]) ?>";
}
}
});
});
})
</script>
<?xml version="1.0" encoding="UTF-8"?>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_OrderArchive
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<listingToolbar name="listing_top">
<massaction name="listing_massaction">
<action name="mp_delete">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">delete</item>
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="url" path="sales/order/massDelete"/>
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Delete Orders</item>
<item name="message" xsi:type="string" translate="true">Do you really want to delete this orders?</item>
</item>
</item>
</argument>
</action>
</massaction>
</listingToolbar>
</listing>
<?xml version="1.0" encoding="UTF-8"?><!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<listing xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="urn:magento:module:Magento_Ui:etc/ui_configuration.xsd">
<listingToolbar name="listing_top">
<massaction name="listing_massaction">
<action name="mp_delete">
<argument name="data" xsi:type="array">
<item name="config" xsi:type="array">
<item name="type" xsi:type="string">delete</item>
<item name="label" xsi:type="string" translate="true">Delete</item>
<item name="url" xsi:type="url" path="sales/order/massDelete"/>
<item name="confirm" xsi:type="array">
<item name="title" xsi:type="string" translate="true">Delete Orders</item>
<item name="message" xsi:type="string" translate="true">Do you really want to delete this orders?</item>
</item>
</item>
</argument>
</action>
</massaction>
</listingToolbar>
</listing>
<!--
/**
* Mageplaza
*
* NOTICE OF LICENSE
*
* This source file is subject to the Mageplaza.com license that is
* available through the world-wide-web at this URL:
* https://www.mageplaza.com/LICENSE.txt
*
* DISCLAIMER
*
* Do not edit or add to this file if you wish to upgrade this extension to newer
* version in the future.
*
* @category Mageplaza
* @package Mageplaza_DeleteOrders
* @copyright Copyright (c) Mageplaza (https://www.mageplaza.com/)
* @license https://www.mageplaza.com/LICENSE.txt
*/
-->
<!--@subject {{trans "Auto delete orders notification at %store_name" store_name=$store.getFrontendName()}} @-->
{{template config_path="design/email/header_template"}}
<p class="greeting">{{trans "Hi,"}}</p>
<p>{{trans "The automatic delete-order schedule has been activated."}}</p>
<p>{{trans 'There are %num_order orders has been processed this time. With:' num_order=$num_order}}</p>
<ul>
<li><strong>{{trans "Successfull:"}}</strong> {{var success_order}}</li>
<li><strong>{{trans "Error:"}}</strong> {{var error_order}}</li>
</ul>
<p>{{trans "Best Regards,"}}</p>
{{template config_path="design/email/footer_template"}}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment