/**
* tagaltawza1.1
* Copyright 2022 All Rights Reserved
* http://tagalta.com
**/
(function (global, factory) {
  typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
  typeof define === 'function' && define.amd ? define(factory) :
  (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.AssistEntry = factory());
}(this, (function () { 'use strict';

  function ownKeys$1(object, enumerableOnly) {
    var keys = Object.keys(object);

    if (Object.getOwnPropertySymbols) {
      var symbols = Object.getOwnPropertySymbols(object);

      if (enumerableOnly) {
        symbols = symbols.filter(function (sym) {
          return Object.getOwnPropertyDescriptor(object, sym).enumerable;
        });
      }

      keys.push.apply(keys, symbols);
    }

    return keys;
  }

  function _objectSpread2(target) {
    for (var i = 1; i < arguments.length; i++) {
      var source = arguments[i] != null ? arguments[i] : {};

      if (i % 2) {
        ownKeys$1(Object(source), true).forEach(function (key) {
          _defineProperty(target, key, source[key]);
        });
      } else if (Object.getOwnPropertyDescriptors) {
        Object.defineProperties(target, Object.getOwnPropertyDescriptors(source));
      } else {
        ownKeys$1(Object(source)).forEach(function (key) {
          Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));
        });
      }
    }

    return target;
  }

  function _classCallCheck(instance, Constructor) {
    if (!(instance instanceof Constructor)) {
      throw new TypeError("Cannot call a class as a function");
    }
  }

  function _defineProperties(target, props) {
    for (var i = 0; i < props.length; i++) {
      var descriptor = props[i];
      descriptor.enumerable = descriptor.enumerable || false;
      descriptor.configurable = true;
      if ("value" in descriptor) descriptor.writable = true;
      Object.defineProperty(target, descriptor.key, descriptor);
    }
  }

  function _createClass(Constructor, protoProps, staticProps) {
    if (protoProps) _defineProperties(Constructor.prototype, protoProps);
    if (staticProps) _defineProperties(Constructor, staticProps);
    return Constructor;
  }

  function _defineProperty(obj, key, value) {
    if (key in obj) {
      Object.defineProperty(obj, key, {
        value: value,
        enumerable: true,
        configurable: true,
        writable: true
      });
    } else {
      obj[key] = value;
    }

    return obj;
  }

  function _inherits(subClass, superClass) {
    if (typeof superClass !== "function" && superClass !== null) {
      throw new TypeError("Super expression must either be null or a function");
    }

    subClass.prototype = Object.create(superClass && superClass.prototype, {
      constructor: {
        value: subClass,
        writable: true,
        configurable: true
      }
    });
    if (superClass) _setPrototypeOf(subClass, superClass);
  }

  function _getPrototypeOf(o) {
    _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
      return o.__proto__ || Object.getPrototypeOf(o);
    };
    return _getPrototypeOf(o);
  }

  function _setPrototypeOf(o, p) {
    _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
      o.__proto__ = p;
      return o;
    };

    return _setPrototypeOf(o, p);
  }

  function _isNativeReflectConstruct() {
    if (typeof Reflect === "undefined" || !Reflect.construct) return false;
    if (Reflect.construct.sham) return false;
    if (typeof Proxy === "function") return true;

    try {
      Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));
      return true;
    } catch (e) {
      return false;
    }
  }

  function _assertThisInitialized(self) {
    if (self === void 0) {
      throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
    }

    return self;
  }

  function _possibleConstructorReturn(self, call) {
    if (call && (typeof call === "object" || typeof call === "function")) {
      return call;
    }

    return _assertThisInitialized(self);
  }

  function _createSuper(Derived) {
    var hasNativeReflectConstruct = _isNativeReflectConstruct();

    return function _createSuperInternal() {
      var Super = _getPrototypeOf(Derived),
          result;

      if (hasNativeReflectConstruct) {
        var NewTarget = _getPrototypeOf(this).constructor;

        result = Reflect.construct(Super, arguments, NewTarget);
      } else {
        result = Super.apply(this, arguments);
      }

      return _possibleConstructorReturn(this, result);
    };
  }

  function _unsupportedIterableToArray(o, minLen) {
    if (!o) return;
    if (typeof o === "string") return _arrayLikeToArray(o, minLen);
    var n = Object.prototype.toString.call(o).slice(8, -1);
    if (n === "Object" && o.constructor) n = o.constructor.name;
    if (n === "Map" || n === "Set") return Array.from(o);
    if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);
  }

  function _arrayLikeToArray(arr, len) {
    if (len == null || len > arr.length) len = arr.length;

    for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];

    return arr2;
  }

  function _createForOfIteratorHelper(o, allowArrayLike) {
    var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"];

    if (!it) {
      if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") {
        if (it) o = it;
        var i = 0;

        var F = function () {};

        return {
          s: F,
          n: function () {
            if (i >= o.length) return {
              done: true
            };
            return {
              done: false,
              value: o[i++]
            };
          },
          e: function (e) {
            throw e;
          },
          f: F
        };
      }

      throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.");
    }

    var normalCompletion = true,
        didErr = false,
        err;
    return {
      s: function () {
        it = it.call(o);
      },
      n: function () {
        var step = it.next();
        normalCompletion = step.done;
        return step;
      },
      e: function (e) {
        didErr = true;
        err = e;
      },
      f: function () {
        try {
          if (!normalCompletion && it.return != null) it.return();
        } finally {
          if (didErr) throw err;
        }
      }
    };
  }

  var commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};

  function createCommonjsModule(fn, basedir, module) {
  	return module = {
  	  path: basedir,
  	  exports: {},
  	  require: function (path, base) {
        return commonjsRequire(path, (base === undefined || base === null) ? module.path : base);
      }
  	}, fn(module, module.exports), module.exports;
  }

  function commonjsRequire () {
  	throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs');
  }

  var check = function (it) {
    return it && it.Math == Math && it;
  };

  // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028
  var global_1 =
    // eslint-disable-next-line es/no-global-this -- safe
    check(typeof globalThis == 'object' && globalThis) ||
    check(typeof window == 'object' && window) ||
    // eslint-disable-next-line no-restricted-globals -- safe
    check(typeof self == 'object' && self) ||
    check(typeof commonjsGlobal == 'object' && commonjsGlobal) ||
    // eslint-disable-next-line no-new-func -- fallback
    (function () { return this; })() || Function('return this')();

  var fails = function (exec) {
    try {
      return !!exec();
    } catch (error) {
      return true;
    }
  };

  // Detect IE8's incomplete defineProperty implementation
  var descriptors = !fails(function () {
    // eslint-disable-next-line es/no-object-defineproperty -- required for testing
    return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;
  });

  var $propertyIsEnumerable = {}.propertyIsEnumerable;
  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
  var getOwnPropertyDescriptor$1 = Object.getOwnPropertyDescriptor;

  // Nashorn ~ JDK8 bug
  var NASHORN_BUG = getOwnPropertyDescriptor$1 && !$propertyIsEnumerable.call({ 1: 2 }, 1);

  // `Object.prototype.propertyIsEnumerable` method implementation
  // https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable
  var f$4 = NASHORN_BUG ? function propertyIsEnumerable(V) {
    var descriptor = getOwnPropertyDescriptor$1(this, V);
    return !!descriptor && descriptor.enumerable;
  } : $propertyIsEnumerable;

  var objectPropertyIsEnumerable = {
  	f: f$4
  };

  var createPropertyDescriptor = function (bitmap, value) {
    return {
      enumerable: !(bitmap & 1),
      configurable: !(bitmap & 2),
      writable: !(bitmap & 4),
      value: value
    };
  };

  var toString = {}.toString;

  var classofRaw = function (it) {
    return toString.call(it).slice(8, -1);
  };

  var split = ''.split;

  // fallback for non-array-like ES3 and non-enumerable old V8 strings
  var indexedObject = fails(function () {
    // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346
    // eslint-disable-next-line no-prototype-builtins -- safe
    return !Object('z').propertyIsEnumerable(0);
  }) ? function (it) {
    return classofRaw(it) == 'String' ? split.call(it, '') : Object(it);
  } : Object;

  // `RequireObjectCoercible` abstract operation
  // https://tc39.es/ecma262/#sec-requireobjectcoercible
  var requireObjectCoercible = function (it) {
    if (it == undefined) throw TypeError("Can't call method on " + it);
    return it;
  };

  // toObject with fallback for non-array-like ES3 strings



  var toIndexedObject = function (it) {
    return indexedObject(requireObjectCoercible(it));
  };

  var isObject = function (it) {
    return typeof it === 'object' ? it !== null : typeof it === 'function';
  };

  // `ToPrimitive` abstract operation
  // https://tc39.es/ecma262/#sec-toprimitive
  // instead of the ES6 spec version, we didn't implement @@toPrimitive case
  // and the second argument - flag - preferred type is a string
  var toPrimitive = function (input, PREFERRED_STRING) {
    if (!isObject(input)) return input;
    var fn, val;
    if (PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
    if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;
    if (!PREFERRED_STRING && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;
    throw TypeError("Can't convert object to primitive value");
  };

  // `ToObject` abstract operation
  // https://tc39.es/ecma262/#sec-toobject
  var toObject = function (argument) {
    return Object(requireObjectCoercible(argument));
  };

  var hasOwnProperty = {}.hasOwnProperty;

  var has$1 = function hasOwn(it, key) {
    return hasOwnProperty.call(toObject(it), key);
  };

  var document$1 = global_1.document;
  // typeof document.createElement is 'object' in old IE
  var EXISTS = isObject(document$1) && isObject(document$1.createElement);

  var documentCreateElement = function (it) {
    return EXISTS ? document$1.createElement(it) : {};
  };

  // Thank's IE8 for his funny defineProperty
  var ie8DomDefine = !descriptors && !fails(function () {
    // eslint-disable-next-line es/no-object-defineproperty -- requied for testing
    return Object.defineProperty(documentCreateElement('div'), 'a', {
      get: function () { return 7; }
    }).a != 7;
  });

  // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
  var $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;

  // `Object.getOwnPropertyDescriptor` method
  // https://tc39.es/ecma262/#sec-object.getownpropertydescriptor
  var f$3 = descriptors ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {
    O = toIndexedObject(O);
    P = toPrimitive(P, true);
    if (ie8DomDefine) try {
      return $getOwnPropertyDescriptor(O, P);
    } catch (error) { /* empty */ }
    if (has$1(O, P)) return createPropertyDescriptor(!objectPropertyIsEnumerable.f.call(O, P), O[P]);
  };

  var objectGetOwnPropertyDescriptor = {
  	f: f$3
  };

  var anObject = function (it) {
    if (!isObject(it)) {
      throw TypeError(String(it) + ' is not an object');
    } return it;
  };

  // eslint-disable-next-line es/no-object-defineproperty -- safe
  var $defineProperty = Object.defineProperty;

  // `Object.defineProperty` method
  // https://tc39.es/ecma262/#sec-object.defineproperty
  var f$2 = descriptors ? $defineProperty : function defineProperty(O, P, Attributes) {
    anObject(O);
    P = toPrimitive(P, true);
    anObject(Attributes);
    if (ie8DomDefine) try {
      return $defineProperty(O, P, Attributes);
    } catch (error) { /* empty */ }
    if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');
    if ('value' in Attributes) O[P] = Attributes.value;
    return O;
  };

  var objectDefineProperty = {
  	f: f$2
  };

  var createNonEnumerableProperty = descriptors ? function (object, key, value) {
    return objectDefineProperty.f(object, key, createPropertyDescriptor(1, value));
  } : function (object, key, value) {
    object[key] = value;
    return object;
  };

  var setGlobal = function (key, value) {
    try {
      createNonEnumerableProperty(global_1, key, value);
    } catch (error) {
      global_1[key] = value;
    } return value;
  };

  var SHARED = '__core-js_shared__';
  var store$1 = global_1[SHARED] || setGlobal(SHARED, {});

  var sharedStore = store$1;

  var functionToString = Function.toString;

  // this helper broken in `3.4.1-3.4.4`, so we can't use `shared` helper
  if (typeof sharedStore.inspectSource != 'function') {
    sharedStore.inspectSource = function (it) {
      return functionToString.call(it);
    };
  }

  var inspectSource = sharedStore.inspectSource;

  var WeakMap$1 = global_1.WeakMap;

  var nativeWeakMap = typeof WeakMap$1 === 'function' && /native code/.test(inspectSource(WeakMap$1));

  var shared = createCommonjsModule(function (module) {
  (module.exports = function (key, value) {
    return sharedStore[key] || (sharedStore[key] = value !== undefined ? value : {});
  })('versions', []).push({
    version: '3.12.1',
    mode: 'global',
    copyright: '© 2021 Denis Pushkarev (zloirock.ru)'
  });
  });

  var id = 0;
  var postfix = Math.random();

  var uid = function (key) {
    return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);
  };

  var keys$1 = shared('keys');

  var sharedKey = function (key) {
    return keys$1[key] || (keys$1[key] = uid(key));
  };

  var hiddenKeys$1 = {};

  var OBJECT_ALREADY_INITIALIZED = 'Object already initialized';
  var WeakMap = global_1.WeakMap;
  var set, get, has;

  var enforce = function (it) {
    return has(it) ? get(it) : set(it, {});
  };

  var getterFor = function (TYPE) {
    return function (it) {
      var state;
      if (!isObject(it) || (state = get(it)).type !== TYPE) {
        throw TypeError('Incompatible receiver, ' + TYPE + ' required');
      } return state;
    };
  };

  if (nativeWeakMap || sharedStore.state) {
    var store = sharedStore.state || (sharedStore.state = new WeakMap());
    var wmget = store.get;
    var wmhas = store.has;
    var wmset = store.set;
    set = function (it, metadata) {
      if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
      metadata.facade = it;
      wmset.call(store, it, metadata);
      return metadata;
    };
    get = function (it) {
      return wmget.call(store, it) || {};
    };
    has = function (it) {
      return wmhas.call(store, it);
    };
  } else {
    var STATE = sharedKey('state');
    hiddenKeys$1[STATE] = true;
    set = function (it, metadata) {
      if (has$1(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);
      metadata.facade = it;
      createNonEnumerableProperty(it, STATE, metadata);
      return metadata;
    };
    get = function (it) {
      return has$1(it, STATE) ? it[STATE] : {};
    };
    has = function (it) {
      return has$1(it, STATE);
    };
  }

  var internalState = {
    set: set,
    get: get,
    has: has,
    enforce: enforce,
    getterFor: getterFor
  };

  var redefine = createCommonjsModule(function (module) {
  var getInternalState = internalState.get;
  var enforceInternalState = internalState.enforce;
  var TEMPLATE = String(String).split('String');

  (module.exports = function (O, key, value, options) {
    var unsafe = options ? !!options.unsafe : false;
    var simple = options ? !!options.enumerable : false;
    var noTargetGet = options ? !!options.noTargetGet : false;
    var state;
    if (typeof value == 'function') {
      if (typeof key == 'string' && !has$1(value, 'name')) {
        createNonEnumerableProperty(value, 'name', key);
      }
      state = enforceInternalState(value);
      if (!state.source) {
        state.source = TEMPLATE.join(typeof key == 'string' ? key : '');
      }
    }
    if (O === global_1) {
      if (simple) O[key] = value;
      else setGlobal(key, value);
      return;
    } else if (!unsafe) {
      delete O[key];
    } else if (!noTargetGet && O[key]) {
      simple = true;
    }
    if (simple) O[key] = value;
    else createNonEnumerableProperty(O, key, value);
  // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative
  })(Function.prototype, 'toString', function toString() {
    return typeof this == 'function' && getInternalState(this).source || inspectSource(this);
  });
  });

  var path = global_1;

  var aFunction$1 = function (variable) {
    return typeof variable == 'function' ? variable : undefined;
  };

  var getBuiltIn = function (namespace, method) {
    return arguments.length < 2 ? aFunction$1(path[namespace]) || aFunction$1(global_1[namespace])
      : path[namespace] && path[namespace][method] || global_1[namespace] && global_1[namespace][method];
  };

  var ceil = Math.ceil;
  var floor$2 = Math.floor;

  // `ToInteger` abstract operation
  // https://tc39.es/ecma262/#sec-tointeger
  var toInteger = function (argument) {
    return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor$2 : ceil)(argument);
  };

  var min$4 = Math.min;

  // `ToLength` abstract operation
  // https://tc39.es/ecma262/#sec-tolength
  var toLength = function (argument) {
    return argument > 0 ? min$4(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991
  };

  var max$2 = Math.max;
  var min$3 = Math.min;

  // Helper for a popular repeating case of the spec:
  // Let integer be ? ToInteger(index).
  // If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).
  var toAbsoluteIndex = function (index, length) {
    var integer = toInteger(index);
    return integer < 0 ? max$2(integer + length, 0) : min$3(integer, length);
  };

  // `Array.prototype.{ indexOf, includes }` methods implementation
  var createMethod$2 = function (IS_INCLUDES) {
    return function ($this, el, fromIndex) {
      var O = toIndexedObject($this);
      var length = toLength(O.length);
      var index = toAbsoluteIndex(fromIndex, length);
      var value;
      // Array#includes uses SameValueZero equality algorithm
      // eslint-disable-next-line no-self-compare -- NaN check
      if (IS_INCLUDES && el != el) while (length > index) {
        value = O[index++];
        // eslint-disable-next-line no-self-compare -- NaN check
        if (value != value) return true;
      // Array#indexOf ignores holes, Array#includes - not
      } else for (;length > index; index++) {
        if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;
      } return !IS_INCLUDES && -1;
    };
  };

  var arrayIncludes = {
    // `Array.prototype.includes` method
    // https://tc39.es/ecma262/#sec-array.prototype.includes
    includes: createMethod$2(true),
    // `Array.prototype.indexOf` method
    // https://tc39.es/ecma262/#sec-array.prototype.indexof
    indexOf: createMethod$2(false)
  };

  var indexOf = arrayIncludes.indexOf;


  var objectKeysInternal = function (object, names) {
    var O = toIndexedObject(object);
    var i = 0;
    var result = [];
    var key;
    for (key in O) !has$1(hiddenKeys$1, key) && has$1(O, key) && result.push(key);
    // Don't enum bug & hidden keys
    while (names.length > i) if (has$1(O, key = names[i++])) {
      ~indexOf(result, key) || result.push(key);
    }
    return result;
  };

  // IE8- don't enum bug keys
  var enumBugKeys = [
    'constructor',
    'hasOwnProperty',
    'isPrototypeOf',
    'propertyIsEnumerable',
    'toLocaleString',
    'toString',
    'valueOf'
  ];

  var hiddenKeys = enumBugKeys.concat('length', 'prototype');

  // `Object.getOwnPropertyNames` method
  // https://tc39.es/ecma262/#sec-object.getownpropertynames
  // eslint-disable-next-line es/no-object-getownpropertynames -- safe
  var f$1 = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {
    return objectKeysInternal(O, hiddenKeys);
  };

  var objectGetOwnPropertyNames = {
  	f: f$1
  };

  // eslint-disable-next-line es/no-object-getownpropertysymbols -- safe
  var f = Object.getOwnPropertySymbols;

  var objectGetOwnPropertySymbols = {
  	f: f
  };

  // all object keys, includes non-enumerable and symbols
  var ownKeys = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {
    var keys = objectGetOwnPropertyNames.f(anObject(it));
    var getOwnPropertySymbols = objectGetOwnPropertySymbols.f;
    return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;
  };

  var copyConstructorProperties = function (target, source) {
    var keys = ownKeys(source);
    var defineProperty = objectDefineProperty.f;
    var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;
    for (var i = 0; i < keys.length; i++) {
      var key = keys[i];
      if (!has$1(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));
    }
  };

  var replacement = /#|\.prototype\./;

  var isForced = function (feature, detection) {
    var value = data[normalize(feature)];
    return value == POLYFILL ? true
      : value == NATIVE ? false
      : typeof detection == 'function' ? fails(detection)
      : !!detection;
  };

  var normalize = isForced.normalize = function (string) {
    return String(string).replace(replacement, '.').toLowerCase();
  };

  var data = isForced.data = {};
  var NATIVE = isForced.NATIVE = 'N';
  var POLYFILL = isForced.POLYFILL = 'P';

  var isForced_1 = isForced;

  var getOwnPropertyDescriptor = objectGetOwnPropertyDescriptor.f;






  /*
    options.target      - name of the target object
    options.global      - target is the global object
    options.stat        - export as static methods of target
    options.proto       - export as prototype methods of target
    options.real        - real prototype method for the `pure` version
    options.forced      - export even if the native feature is available
    options.bind        - bind methods to the target, required for the `pure` version
    options.wrap        - wrap constructors to preventing global pollution, required for the `pure` version
    options.unsafe      - use the simple assignment of property instead of delete + defineProperty
    options.sham        - add a flag to not completely full polyfills
    options.enumerable  - export as enumerable property
    options.noTargetGet - prevent calling a getter on target
  */
  var _export = function (options, source) {
    var TARGET = options.target;
    var GLOBAL = options.global;
    var STATIC = options.stat;
    var FORCED, target, key, targetProperty, sourceProperty, descriptor;
    if (GLOBAL) {
      target = global_1;
    } else if (STATIC) {
      target = global_1[TARGET] || setGlobal(TARGET, {});
    } else {
      target = (global_1[TARGET] || {}).prototype;
    }
    if (target) for (key in source) {
      sourceProperty = source[key];
      if (options.noTargetGet) {
        descriptor = getOwnPropertyDescriptor(target, key);
        targetProperty = descriptor && descriptor.value;
      } else targetProperty = target[key];
      FORCED = isForced_1(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);
      // contained in target
      if (!FORCED && targetProperty !== undefined) {
        if (typeof sourceProperty === typeof targetProperty) continue;
        copyConstructorProperties(sourceProperty, targetProperty);
      }
      // add a flag to not completely full polyfills
      if (options.sham || (targetProperty && targetProperty.sham)) {
        createNonEnumerableProperty(sourceProperty, 'sham', true);
      }
      // extend global
      redefine(target, key, sourceProperty, options);
    }
  };

  var aFunction = function (it) {
    if (typeof it != 'function') {
      throw TypeError(String(it) + ' is not a function');
    } return it;
  };

  // optional / simple context binding
  var functionBindContext = function (fn, that, length) {
    aFunction(fn);
    if (that === undefined) return fn;
    switch (length) {
      case 0: return function () {
        return fn.call(that);
      };
      case 1: return function (a) {
        return fn.call(that, a);
      };
      case 2: return function (a, b) {
        return fn.call(that, a, b);
      };
      case 3: return function (a, b, c) {
        return fn.call(that, a, b, c);
      };
    }
    return function (/* ...args */) {
      return fn.apply(that, arguments);
    };
  };

  // `IsArray` abstract operation
  // https://tc39.es/ecma262/#sec-isarray
  // eslint-disable-next-line es/no-array-isarray -- safe
  var isArray = Array.isArray || function isArray(arg) {
    return classofRaw(arg) == 'Array';
  };

  var engineUserAgent = getBuiltIn('navigator', 'userAgent') || '';

  var process = global_1.process;
  var versions = process && process.versions;
  var v8 = versions && versions.v8;
  var match, version;

  if (v8) {
    match = v8.split('.');
    version = match[0] < 4 ? 1 : match[0] + match[1];
  } else if (engineUserAgent) {
    match = engineUserAgent.match(/Edge\/(\d+)/);
    if (!match || match[1] >= 74) {
      match = engineUserAgent.match(/Chrome\/(\d+)/);
      if (match) version = match[1];
    }
  }

  var engineV8Version = version && +version;

  /* eslint-disable es/no-symbol -- required for testing */



  // eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing
  var nativeSymbol = !!Object.getOwnPropertySymbols && !fails(function () {
    return !String(Symbol()) ||
      // Chrome 38 Symbol has incorrect toString conversion
      // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances
      !Symbol.sham && engineV8Version && engineV8Version < 41;
  });

  /* eslint-disable es/no-symbol -- required for testing */


  var useSymbolAsUid = nativeSymbol
    && !Symbol.sham
    && typeof Symbol.iterator == 'symbol';

  var WellKnownSymbolsStore = shared('wks');
  var Symbol$1 = global_1.Symbol;
  var createWellKnownSymbol = useSymbolAsUid ? Symbol$1 : Symbol$1 && Symbol$1.withoutSetter || uid;

  var wellKnownSymbol = function (name) {
    if (!has$1(WellKnownSymbolsStore, name) || !(nativeSymbol || typeof WellKnownSymbolsStore[name] == 'string')) {
      if (nativeSymbol && has$1(Symbol$1, name)) {
        WellKnownSymbolsStore[name] = Symbol$1[name];
      } else {
        WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);
      }
    } return WellKnownSymbolsStore[name];
  };

  var SPECIES$4 = wellKnownSymbol('species');

  // `ArraySpeciesCreate` abstract operation
  // https://tc39.es/ecma262/#sec-arrayspeciescreate
  var arraySpeciesCreate = function (originalArray, length) {
    var C;
    if (isArray(originalArray)) {
      C = originalArray.constructor;
      // cross-realm fallback
      if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;
      else if (isObject(C)) {
        C = C[SPECIES$4];
        if (C === null) C = undefined;
      }
    } return new (C === undefined ? Array : C)(length === 0 ? 0 : length);
  };

  var push = [].push;

  // `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterOut }` methods implementation
  var createMethod$1 = function (TYPE) {
    var IS_MAP = TYPE == 1;
    var IS_FILTER = TYPE == 2;
    var IS_SOME = TYPE == 3;
    var IS_EVERY = TYPE == 4;
    var IS_FIND_INDEX = TYPE == 6;
    var IS_FILTER_OUT = TYPE == 7;
    var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;
    return function ($this, callbackfn, that, specificCreate) {
      var O = toObject($this);
      var self = indexedObject(O);
      var boundFunction = functionBindContext(callbackfn, that, 3);
      var length = toLength(self.length);
      var index = 0;
      var create = specificCreate || arraySpeciesCreate;
      var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_OUT ? create($this, 0) : undefined;
      var value, result;
      for (;length > index; index++) if (NO_HOLES || index in self) {
        value = self[index];
        result = boundFunction(value, index, O);
        if (TYPE) {
          if (IS_MAP) target[index] = result; // map
          else if (result) switch (TYPE) {
            case 3: return true;              // some
            case 5: return value;             // find
            case 6: return index;             // findIndex
            case 2: push.call(target, value); // filter
          } else switch (TYPE) {
            case 4: return false;             // every
            case 7: push.call(target, value); // filterOut
          }
        }
      }
      return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;
    };
  };

  var arrayIteration = {
    // `Array.prototype.forEach` method
    // https://tc39.es/ecma262/#sec-array.prototype.foreach
    forEach: createMethod$1(0),
    // `Array.prototype.map` method
    // https://tc39.es/ecma262/#sec-array.prototype.map
    map: createMethod$1(1),
    // `Array.prototype.filter` method
    // https://tc39.es/ecma262/#sec-array.prototype.filter
    filter: createMethod$1(2),
    // `Array.prototype.some` method
    // https://tc39.es/ecma262/#sec-array.prototype.some
    some: createMethod$1(3),
    // `Array.prototype.every` method
    // https://tc39.es/ecma262/#sec-array.prototype.every
    every: createMethod$1(4),
    // `Array.prototype.find` method
    // https://tc39.es/ecma262/#sec-array.prototype.find
    find: createMethod$1(5),
    // `Array.prototype.findIndex` method
    // https://tc39.es/ecma262/#sec-array.prototype.findIndex
    findIndex: createMethod$1(6),
    // `Array.prototype.filterOut` method
    // https://github.com/tc39/proposal-array-filtering
    filterOut: createMethod$1(7)
  };

  var SPECIES$3 = wellKnownSymbol('species');

  var arrayMethodHasSpeciesSupport = function (METHOD_NAME) {
    // We can't use this feature detection in V8 since it causes
    // deoptimization and serious performance degradation
    // https://github.com/zloirock/core-js/issues/677
    return engineV8Version >= 51 || !fails(function () {
      var array = [];
      var constructor = array.constructor = {};
      constructor[SPECIES$3] = function () {
        return { foo: 1 };
      };
      return array[METHOD_NAME](Boolean).foo !== 1;
    });
  };

  var $map = arrayIteration.map;


  var HAS_SPECIES_SUPPORT$1 = arrayMethodHasSpeciesSupport('map');

  // `Array.prototype.map` method
  // https://tc39.es/ecma262/#sec-array.prototype.map
  // with adding support of @@species
  _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT$1 }, {
    map: function map(callbackfn /* , thisArg */) {
      return $map(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
    }
  });

  /*
  ie10 不支持 location.origin，以下是hack方法
  */
  if (!window.location.origin) {
    window.location.origin = window.location.protocol + "//" + window.location.hostname + (window.location.port ? ':' + window.location.port : '');
  }

  var createProperty = function (object, key, value) {
    var propertyKey = toPrimitive(key);
    if (propertyKey in object) objectDefineProperty.f(object, propertyKey, createPropertyDescriptor(0, value));
    else object[propertyKey] = value;
  };

  var IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');
  var MAX_SAFE_INTEGER$1 = 0x1FFFFFFFFFFFFF;
  var MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';

  // We can't use this feature detection in V8 since it causes
  // deoptimization and serious performance degradation
  // https://github.com/zloirock/core-js/issues/679
  var IS_CONCAT_SPREADABLE_SUPPORT = engineV8Version >= 51 || !fails(function () {
    var array = [];
    array[IS_CONCAT_SPREADABLE] = false;
    return array.concat()[0] !== array;
  });

  var SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');

  var isConcatSpreadable = function (O) {
    if (!isObject(O)) return false;
    var spreadable = O[IS_CONCAT_SPREADABLE];
    return spreadable !== undefined ? !!spreadable : isArray(O);
  };

  var FORCED$2 = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;

  // `Array.prototype.concat` method
  // https://tc39.es/ecma262/#sec-array.prototype.concat
  // with adding support of @@isConcatSpreadable and @@species
  _export({ target: 'Array', proto: true, forced: FORCED$2 }, {
    // eslint-disable-next-line no-unused-vars -- required for `.length`
    concat: function concat(arg) {
      var O = toObject(this);
      var A = arraySpeciesCreate(O, 0);
      var n = 0;
      var i, k, length, len, E;
      for (i = -1, length = arguments.length; i < length; i++) {
        E = i === -1 ? O : arguments[i];
        if (isConcatSpreadable(E)) {
          len = toLength(E.length);
          if (n + len > MAX_SAFE_INTEGER$1) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
          for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);
        } else {
          if (n >= MAX_SAFE_INTEGER$1) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);
          createProperty(A, n++, E);
        }
      }
      A.length = n;
      return A;
    }
  });

  // `Object.keys` method
  // https://tc39.es/ecma262/#sec-object.keys
  // eslint-disable-next-line es/no-object-keys -- safe
  var objectKeys = Object.keys || function keys(O) {
    return objectKeysInternal(O, enumBugKeys);
  };

  // `Object.defineProperties` method
  // https://tc39.es/ecma262/#sec-object.defineproperties
  // eslint-disable-next-line es/no-object-defineproperties -- safe
  var objectDefineProperties = descriptors ? Object.defineProperties : function defineProperties(O, Properties) {
    anObject(O);
    var keys = objectKeys(Properties);
    var length = keys.length;
    var index = 0;
    var key;
    while (length > index) objectDefineProperty.f(O, key = keys[index++], Properties[key]);
    return O;
  };

  var html = getBuiltIn('document', 'documentElement');

  var GT = '>';
  var LT = '<';
  var PROTOTYPE = 'prototype';
  var SCRIPT = 'script';
  var IE_PROTO = sharedKey('IE_PROTO');

  var EmptyConstructor = function () { /* empty */ };

  var scriptTag = function (content) {
    return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;
  };

  // Create object with fake `null` prototype: use ActiveX Object with cleared prototype
  var NullProtoObjectViaActiveX = function (activeXDocument) {
    activeXDocument.write(scriptTag(''));
    activeXDocument.close();
    var temp = activeXDocument.parentWindow.Object;
    activeXDocument = null; // avoid memory leak
    return temp;
  };

  // Create object with fake `null` prototype: use iframe Object with cleared prototype
  var NullProtoObjectViaIFrame = function () {
    // Thrash, waste and sodomy: IE GC bug
    var iframe = documentCreateElement('iframe');
    var JS = 'java' + SCRIPT + ':';
    var iframeDocument;
    iframe.style.display = 'none';
    html.appendChild(iframe);
    // https://github.com/zloirock/core-js/issues/475
    iframe.src = String(JS);
    iframeDocument = iframe.contentWindow.document;
    iframeDocument.open();
    iframeDocument.write(scriptTag('document.F=Object'));
    iframeDocument.close();
    return iframeDocument.F;
  };

  // Check for document.domain and active x support
  // No need to use active x approach when document.domain is not set
  // see https://github.com/es-shims/es5-shim/issues/150
  // variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346
  // avoid IE GC bug
  var activeXDocument;
  var NullProtoObject = function () {
    try {
      /* global ActiveXObject -- old IE */
      activeXDocument = document.domain && new ActiveXObject('htmlfile');
    } catch (error) { /* ignore */ }
    NullProtoObject = activeXDocument ? NullProtoObjectViaActiveX(activeXDocument) : NullProtoObjectViaIFrame();
    var length = enumBugKeys.length;
    while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];
    return NullProtoObject();
  };

  hiddenKeys$1[IE_PROTO] = true;

  // `Object.create` method
  // https://tc39.es/ecma262/#sec-object.create
  var objectCreate = Object.create || function create(O, Properties) {
    var result;
    if (O !== null) {
      EmptyConstructor[PROTOTYPE] = anObject(O);
      result = new EmptyConstructor();
      EmptyConstructor[PROTOTYPE] = null;
      // add "__proto__" for Object.getPrototypeOf polyfill
      result[IE_PROTO] = O;
    } else result = NullProtoObject();
    return Properties === undefined ? result : objectDefineProperties(result, Properties);
  };

  var UNSCOPABLES = wellKnownSymbol('unscopables');
  var ArrayPrototype = Array.prototype;

  // Array.prototype[@@unscopables]
  // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
  if (ArrayPrototype[UNSCOPABLES] == undefined) {
    objectDefineProperty.f(ArrayPrototype, UNSCOPABLES, {
      configurable: true,
      value: objectCreate(null)
    });
  }

  // add a key to Array.prototype[@@unscopables]
  var addToUnscopables = function (key) {
    ArrayPrototype[UNSCOPABLES][key] = true;
  };

  var $includes = arrayIncludes.includes;


  // `Array.prototype.includes` method
  // https://tc39.es/ecma262/#sec-array.prototype.includes
  _export({ target: 'Array', proto: true }, {
    includes: function includes(el /* , fromIndex = 0 */) {
      return $includes(this, el, arguments.length > 1 ? arguments[1] : undefined);
    }
  });

  // https://tc39.es/ecma262/#sec-array.prototype-@@unscopables
  addToUnscopables('includes');

  var MATCH$2 = wellKnownSymbol('match');

  // `IsRegExp` abstract operation
  // https://tc39.es/ecma262/#sec-isregexp
  var isRegexp = function (it) {
    var isRegExp;
    return isObject(it) && ((isRegExp = it[MATCH$2]) !== undefined ? !!isRegExp : classofRaw(it) == 'RegExp');
  };

  var notARegexp = function (it) {
    if (isRegexp(it)) {
      throw TypeError("The method doesn't accept regular expressions");
    } return it;
  };

  var MATCH$1 = wellKnownSymbol('match');

  var correctIsRegexpLogic = function (METHOD_NAME) {
    var regexp = /./;
    try {
      '/./'[METHOD_NAME](regexp);
    } catch (error1) {
      try {
        regexp[MATCH$1] = false;
        return '/./'[METHOD_NAME](regexp);
      } catch (error2) { /* empty */ }
    } return false;
  };

  // `String.prototype.includes` method
  // https://tc39.es/ecma262/#sec-string.prototype.includes
  _export({ target: 'String', proto: true, forced: !correctIsRegexpLogic('includes') }, {
    includes: function includes(searchString /* , position = 0 */) {
      return !!~String(requireObjectCoercible(this))
        .indexOf(notARegexp(searchString), arguments.length > 1 ? arguments[1] : undefined);
    }
  });

  var arrayMethodIsStrict = function (METHOD_NAME, argument) {
    var method = [][METHOD_NAME];
    return !!method && fails(function () {
      // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing
      method.call(null, argument || function () { throw 1; }, 1);
    });
  };

  var nativeJoin = [].join;

  var ES3_STRINGS = indexedObject != Object;
  var STRICT_METHOD$1 = arrayMethodIsStrict('join', ',');

  // `Array.prototype.join` method
  // https://tc39.es/ecma262/#sec-array.prototype.join
  _export({ target: 'Array', proto: true, forced: ES3_STRINGS || !STRICT_METHOD$1 }, {
    join: function join(separator) {
      return nativeJoin.call(toIndexedObject(this), separator === undefined ? ',' : separator);
    }
  });

  // `RegExp.prototype.flags` getter implementation
  // https://tc39.es/ecma262/#sec-get-regexp.prototype.flags
  var regexpFlags = function () {
    var that = anObject(this);
    var result = '';
    if (that.global) result += 'g';
    if (that.ignoreCase) result += 'i';
    if (that.multiline) result += 'm';
    if (that.dotAll) result += 's';
    if (that.unicode) result += 'u';
    if (that.sticky) result += 'y';
    return result;
  };

  // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError,
  // so we use an intermediate function.
  function RE(s, f) {
    return RegExp(s, f);
  }

  var UNSUPPORTED_Y$3 = fails(function () {
    // babel-minify transpiles RegExp('a', 'y') -> /a/y and it causes SyntaxError
    var re = RE('a', 'y');
    re.lastIndex = 2;
    return re.exec('abcd') != null;
  });

  var BROKEN_CARET = fails(function () {
    // https://bugzilla.mozilla.org/show_bug.cgi?id=773687
    var re = RE('^r', 'gy');
    re.lastIndex = 2;
    return re.exec('str') != null;
  });

  var regexpStickyHelpers = {
  	UNSUPPORTED_Y: UNSUPPORTED_Y$3,
  	BROKEN_CARET: BROKEN_CARET
  };

  /* eslint-disable regexp/no-assertion-capturing-group, regexp/no-empty-group, regexp/no-lazy-ends -- testing */
  /* eslint-disable regexp/no-useless-quantifier -- testing */




  var nativeExec = RegExp.prototype.exec;
  var nativeReplace = shared('native-string-replace', String.prototype.replace);

  var patchedExec = nativeExec;

  var UPDATES_LAST_INDEX_WRONG = (function () {
    var re1 = /a/;
    var re2 = /b*/g;
    nativeExec.call(re1, 'a');
    nativeExec.call(re2, 'a');
    return re1.lastIndex !== 0 || re2.lastIndex !== 0;
  })();

  var UNSUPPORTED_Y$2 = regexpStickyHelpers.UNSUPPORTED_Y || regexpStickyHelpers.BROKEN_CARET;

  // nonparticipating capturing group, copied from es5-shim's String#split patch.
  var NPCG_INCLUDED = /()??/.exec('')[1] !== undefined;

  var PATCH = UPDATES_LAST_INDEX_WRONG || NPCG_INCLUDED || UNSUPPORTED_Y$2;

  if (PATCH) {
    patchedExec = function exec(str) {
      var re = this;
      var lastIndex, reCopy, match, i;
      var sticky = UNSUPPORTED_Y$2 && re.sticky;
      var flags = regexpFlags.call(re);
      var source = re.source;
      var charsAdded = 0;
      var strCopy = str;

      if (sticky) {
        flags = flags.replace('y', '');
        if (flags.indexOf('g') === -1) {
          flags += 'g';
        }

        strCopy = String(str).slice(re.lastIndex);
        // Support anchored sticky behavior.
        if (re.lastIndex > 0 && (!re.multiline || re.multiline && str[re.lastIndex - 1] !== '\n')) {
          source = '(?: ' + source + ')';
          strCopy = ' ' + strCopy;
          charsAdded++;
        }
        // ^(? + rx + ) is needed, in combination with some str slicing, to
        // simulate the 'y' flag.
        reCopy = new RegExp('^(?:' + source + ')', flags);
      }

      if (NPCG_INCLUDED) {
        reCopy = new RegExp('^' + source + '$(?!\\s)', flags);
      }
      if (UPDATES_LAST_INDEX_WRONG) lastIndex = re.lastIndex;

      match = nativeExec.call(sticky ? reCopy : re, strCopy);

      if (sticky) {
        if (match) {
          match.input = match.input.slice(charsAdded);
          match[0] = match[0].slice(charsAdded);
          match.index = re.lastIndex;
          re.lastIndex += match[0].length;
        } else re.lastIndex = 0;
      } else if (UPDATES_LAST_INDEX_WRONG && match) {
        re.lastIndex = re.global ? match.index + match[0].length : lastIndex;
      }
      if (NPCG_INCLUDED && match && match.length > 1) {
        // Fix browsers whose `exec` methods don't consistently return `undefined`
        // for NPCG, like IE8. NOTE: This doesn' work for /(.?)?/
        nativeReplace.call(match[0], reCopy, function () {
          for (i = 1; i < arguments.length - 2; i++) {
            if (arguments[i] === undefined) match[i] = undefined;
          }
        });
      }

      return match;
    };
  }

  var regexpExec = patchedExec;

  // `RegExp.prototype.exec` method
  // https://tc39.es/ecma262/#sec-regexp.prototype.exec
  _export({ target: 'RegExp', proto: true, forced: /./.exec !== regexpExec }, {
    exec: regexpExec
  });

  // TODO: Remove from `core-js@4` since it's moved to entry points







  var SPECIES$2 = wellKnownSymbol('species');
  var RegExpPrototype$2 = RegExp.prototype;

  var REPLACE_SUPPORTS_NAMED_GROUPS = !fails(function () {
    // #replace needs built-in support for named groups.
    // #match works fine because it just return the exec results, even if it has
    // a "grops" property.
    var re = /./;
    re.exec = function () {
      var result = [];
      result.groups = { a: '7' };
      return result;
    };
    return ''.replace(re, '$<a>') !== '7';
  });

  // IE <= 11 replaces $0 with the whole match, as if it was $&
  // https://stackoverflow.com/questions/6024666/getting-ie-to-replace-a-regex-with-the-literal-string-0
  var REPLACE_KEEPS_$0 = (function () {
    // eslint-disable-next-line regexp/prefer-escape-replacement-dollar-char -- required for testing
    return 'a'.replace(/./, '$0') === '$0';
  })();

  var REPLACE = wellKnownSymbol('replace');
  // Safari <= 13.0.3(?) substitutes nth capture where n>m with an empty string
  var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = (function () {
    if (/./[REPLACE]) {
      return /./[REPLACE]('a', '$0') === '';
    }
    return false;
  })();

  // Chrome 51 has a buggy "split" implementation when RegExp#exec !== nativeExec
  // Weex JS has frozen built-in prototypes, so use try / catch wrapper
  var SPLIT_WORKS_WITH_OVERWRITTEN_EXEC = !fails(function () {
    // eslint-disable-next-line regexp/no-empty-group -- required for testing
    var re = /(?:)/;
    var originalExec = re.exec;
    re.exec = function () { return originalExec.apply(this, arguments); };
    var result = 'ab'.split(re);
    return result.length !== 2 || result[0] !== 'a' || result[1] !== 'b';
  });

  var fixRegexpWellKnownSymbolLogic = function (KEY, length, exec, sham) {
    var SYMBOL = wellKnownSymbol(KEY);

    var DELEGATES_TO_SYMBOL = !fails(function () {
      // String methods call symbol-named RegEp methods
      var O = {};
      O[SYMBOL] = function () { return 7; };
      return ''[KEY](O) != 7;
    });

    var DELEGATES_TO_EXEC = DELEGATES_TO_SYMBOL && !fails(function () {
      // Symbol-named RegExp methods call .exec
      var execCalled = false;
      var re = /a/;

      if (KEY === 'split') {
        // We can't use real regex here since it causes deoptimization
        // and serious performance degradation in V8
        // https://github.com/zloirock/core-js/issues/306
        re = {};
        // RegExp[@@split] doesn't call the regex's exec method, but first creates
        // a new one. We need to return the patched regex when creating the new one.
        re.constructor = {};
        re.constructor[SPECIES$2] = function () { return re; };
        re.flags = '';
        re[SYMBOL] = /./[SYMBOL];
      }

      re.exec = function () { execCalled = true; return null; };

      re[SYMBOL]('');
      return !execCalled;
    });

    if (
      !DELEGATES_TO_SYMBOL ||
      !DELEGATES_TO_EXEC ||
      (KEY === 'replace' && !(
        REPLACE_SUPPORTS_NAMED_GROUPS &&
        REPLACE_KEEPS_$0 &&
        !REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
      )) ||
      (KEY === 'split' && !SPLIT_WORKS_WITH_OVERWRITTEN_EXEC)
    ) {
      var nativeRegExpMethod = /./[SYMBOL];
      var methods = exec(SYMBOL, ''[KEY], function (nativeMethod, regexp, str, arg2, forceStringMethod) {
        var $exec = regexp.exec;
        if ($exec === regexpExec || $exec === RegExpPrototype$2.exec) {
          if (DELEGATES_TO_SYMBOL && !forceStringMethod) {
            // The native String method already delegates to @@method (this
            // polyfilled function), leasing to infinite recursion.
            // We avoid it by directly calling the native @@method method.
            return { done: true, value: nativeRegExpMethod.call(regexp, str, arg2) };
          }
          return { done: true, value: nativeMethod.call(str, regexp, arg2) };
        }
        return { done: false };
      }, {
        REPLACE_KEEPS_$0: REPLACE_KEEPS_$0,
        REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE: REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE
      });
      var stringMethod = methods[0];
      var regexMethod = methods[1];

      redefine(String.prototype, KEY, stringMethod);
      redefine(RegExpPrototype$2, SYMBOL, length == 2
        // 21.2.5.8 RegExp.prototype[@@replace](string, replaceValue)
        // 21.2.5.11 RegExp.prototype[@@split](string, limit)
        ? function (string, arg) { return regexMethod.call(string, this, arg); }
        // 21.2.5.6 RegExp.prototype[@@match](string)
        // 21.2.5.9 RegExp.prototype[@@search](string)
        : function (string) { return regexMethod.call(string, this); }
      );
    }

    if (sham) createNonEnumerableProperty(RegExpPrototype$2[SYMBOL], 'sham', true);
  };

  var SPECIES$1 = wellKnownSymbol('species');

  // `SpeciesConstructor` abstract operation
  // https://tc39.es/ecma262/#sec-speciesconstructor
  var speciesConstructor = function (O, defaultConstructor) {
    var C = anObject(O).constructor;
    var S;
    return C === undefined || (S = anObject(C)[SPECIES$1]) == undefined ? defaultConstructor : aFunction(S);
  };

  // `String.prototype.{ codePointAt, at }` methods implementation
  var createMethod = function (CONVERT_TO_STRING) {
    return function ($this, pos) {
      var S = String(requireObjectCoercible($this));
      var position = toInteger(pos);
      var size = S.length;
      var first, second;
      if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;
      first = S.charCodeAt(position);
      return first < 0xD800 || first > 0xDBFF || position + 1 === size
        || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF
          ? CONVERT_TO_STRING ? S.charAt(position) : first
          : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;
    };
  };

  var stringMultibyte = {
    // `String.prototype.codePointAt` method
    // https://tc39.es/ecma262/#sec-string.prototype.codepointat
    codeAt: createMethod(false),
    // `String.prototype.at` method
    // https://github.com/mathiasbynens/String.prototype.at
    charAt: createMethod(true)
  };

  var charAt = stringMultibyte.charAt;

  // `AdvanceStringIndex` abstract operation
  // https://tc39.es/ecma262/#sec-advancestringindex
  var advanceStringIndex = function (S, index, unicode) {
    return index + (unicode ? charAt(S, index).length : 1);
  };

  // `RegExpExec` abstract operation
  // https://tc39.es/ecma262/#sec-regexpexec
  var regexpExecAbstract = function (R, S) {
    var exec = R.exec;
    if (typeof exec === 'function') {
      var result = exec.call(R, S);
      if (typeof result !== 'object') {
        throw TypeError('RegExp exec method returned something other than an Object or null');
      }
      return result;
    }

    if (classofRaw(R) !== 'RegExp') {
      throw TypeError('RegExp#exec called on incompatible receiver');
    }

    return regexpExec.call(R, S);
  };

  var UNSUPPORTED_Y$1 = regexpStickyHelpers.UNSUPPORTED_Y;
  var arrayPush = [].push;
  var min$2 = Math.min;
  var MAX_UINT32 = 0xFFFFFFFF;

  // @@split logic
  fixRegexpWellKnownSymbolLogic('split', 2, function (SPLIT, nativeSplit, maybeCallNative) {
    var internalSplit;
    if (
      'abbc'.split(/(b)*/)[1] == 'c' ||
      // eslint-disable-next-line regexp/no-empty-group -- required for testing
      'test'.split(/(?:)/, -1).length != 4 ||
      'ab'.split(/(?:ab)*/).length != 2 ||
      '.'.split(/(.?)(.?)/).length != 4 ||
      // eslint-disable-next-line regexp/no-assertion-capturing-group, regexp/no-empty-group -- required for testing
      '.'.split(/()()/).length > 1 ||
      ''.split(/.?/).length
    ) {
      // based on es5-shim implementation, need to rework it
      internalSplit = function (separator, limit) {
        var string = String(requireObjectCoercible(this));
        var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
        if (lim === 0) return [];
        if (separator === undefined) return [string];
        // If `separator` is not a regex, use native split
        if (!isRegexp(separator)) {
          return nativeSplit.call(string, separator, lim);
        }
        var output = [];
        var flags = (separator.ignoreCase ? 'i' : '') +
                    (separator.multiline ? 'm' : '') +
                    (separator.unicode ? 'u' : '') +
                    (separator.sticky ? 'y' : '');
        var lastLastIndex = 0;
        // Make `global` and avoid `lastIndex` issues by working with a copy
        var separatorCopy = new RegExp(separator.source, flags + 'g');
        var match, lastIndex, lastLength;
        while (match = regexpExec.call(separatorCopy, string)) {
          lastIndex = separatorCopy.lastIndex;
          if (lastIndex > lastLastIndex) {
            output.push(string.slice(lastLastIndex, match.index));
            if (match.length > 1 && match.index < string.length) arrayPush.apply(output, match.slice(1));
            lastLength = match[0].length;
            lastLastIndex = lastIndex;
            if (output.length >= lim) break;
          }
          if (separatorCopy.lastIndex === match.index) separatorCopy.lastIndex++; // Avoid an infinite loop
        }
        if (lastLastIndex === string.length) {
          if (lastLength || !separatorCopy.test('')) output.push('');
        } else output.push(string.slice(lastLastIndex));
        return output.length > lim ? output.slice(0, lim) : output;
      };
    // Chakra, V8
    } else if ('0'.split(undefined, 0).length) {
      internalSplit = function (separator, limit) {
        return separator === undefined && limit === 0 ? [] : nativeSplit.call(this, separator, limit);
      };
    } else internalSplit = nativeSplit;

    return [
      // `String.prototype.split` method
      // https://tc39.es/ecma262/#sec-string.prototype.split
      function split(separator, limit) {
        var O = requireObjectCoercible(this);
        var splitter = separator == undefined ? undefined : separator[SPLIT];
        return splitter !== undefined
          ? splitter.call(separator, O, limit)
          : internalSplit.call(String(O), separator, limit);
      },
      // `RegExp.prototype[@@split]` method
      // https://tc39.es/ecma262/#sec-regexp.prototype-@@split
      //
      // NOTE: This cannot be properly polyfilled in engines that don't support
      // the 'y' flag.
      function (regexp, limit) {
        var res = maybeCallNative(internalSplit, regexp, this, limit, internalSplit !== nativeSplit);
        if (res.done) return res.value;

        var rx = anObject(regexp);
        var S = String(this);
        var C = speciesConstructor(rx, RegExp);

        var unicodeMatching = rx.unicode;
        var flags = (rx.ignoreCase ? 'i' : '') +
                    (rx.multiline ? 'm' : '') +
                    (rx.unicode ? 'u' : '') +
                    (UNSUPPORTED_Y$1 ? 'g' : 'y');

        // ^(? + rx + ) is needed, in combination with some S slicing, to
        // simulate the 'y' flag.
        var splitter = new C(UNSUPPORTED_Y$1 ? '^(?:' + rx.source + ')' : rx, flags);
        var lim = limit === undefined ? MAX_UINT32 : limit >>> 0;
        if (lim === 0) return [];
        if (S.length === 0) return regexpExecAbstract(splitter, S) === null ? [S] : [];
        var p = 0;
        var q = 0;
        var A = [];
        while (q < S.length) {
          splitter.lastIndex = UNSUPPORTED_Y$1 ? 0 : q;
          var z = regexpExecAbstract(splitter, UNSUPPORTED_Y$1 ? S.slice(q) : S);
          var e;
          if (
            z === null ||
            (e = min$2(toLength(splitter.lastIndex + (UNSUPPORTED_Y$1 ? q : 0)), S.length)) === p
          ) {
            q = advanceStringIndex(S, q, unicodeMatching);
          } else {
            A.push(S.slice(p, q));
            if (A.length === lim) return A;
            for (var i = 1; i <= z.length - 1; i++) {
              A.push(z[i]);
              if (A.length === lim) return A;
            }
            q = p = e;
          }
        }
        A.push(S.slice(p));
        return A;
      }
    ];
  }, UNSUPPORTED_Y$1);

  var floor$1 = Math.floor;
  var replace = ''.replace;
  var SUBSTITUTION_SYMBOLS = /\$([$&'`]|\d{1,2}|<[^>]*>)/g;
  var SUBSTITUTION_SYMBOLS_NO_NAMED = /\$([$&'`]|\d{1,2})/g;

  // https://tc39.es/ecma262/#sec-getsubstitution
  var getSubstitution = function (matched, str, position, captures, namedCaptures, replacement) {
    var tailPos = position + matched.length;
    var m = captures.length;
    var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;
    if (namedCaptures !== undefined) {
      namedCaptures = toObject(namedCaptures);
      symbols = SUBSTITUTION_SYMBOLS;
    }
    return replace.call(replacement, symbols, function (match, ch) {
      var capture;
      switch (ch.charAt(0)) {
        case '$': return '$';
        case '&': return matched;
        case '`': return str.slice(0, position);
        case "'": return str.slice(tailPos);
        case '<':
          capture = namedCaptures[ch.slice(1, -1)];
          break;
        default: // \d\d?
          var n = +ch;
          if (n === 0) return match;
          if (n > m) {
            var f = floor$1(n / 10);
            if (f === 0) return match;
            if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);
            return match;
          }
          capture = captures[n - 1];
      }
      return capture === undefined ? '' : capture;
    });
  };

  var max$1 = Math.max;
  var min$1 = Math.min;

  var maybeToString = function (it) {
    return it === undefined ? it : String(it);
  };

  // @@replace logic
  fixRegexpWellKnownSymbolLogic('replace', 2, function (REPLACE, nativeReplace, maybeCallNative, reason) {
    var REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE = reason.REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE;
    var REPLACE_KEEPS_$0 = reason.REPLACE_KEEPS_$0;
    var UNSAFE_SUBSTITUTE = REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE ? '$' : '$0';

    return [
      // `String.prototype.replace` method
      // https://tc39.es/ecma262/#sec-string.prototype.replace
      function replace(searchValue, replaceValue) {
        var O = requireObjectCoercible(this);
        var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];
        return replacer !== undefined
          ? replacer.call(searchValue, O, replaceValue)
          : nativeReplace.call(String(O), searchValue, replaceValue);
      },
      // `RegExp.prototype[@@replace]` method
      // https://tc39.es/ecma262/#sec-regexp.prototype-@@replace
      function (regexp, replaceValue) {
        if (
          (!REGEXP_REPLACE_SUBSTITUTES_UNDEFINED_CAPTURE && REPLACE_KEEPS_$0) ||
          (typeof replaceValue === 'string' && replaceValue.indexOf(UNSAFE_SUBSTITUTE) === -1)
        ) {
          var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);
          if (res.done) return res.value;
        }

        var rx = anObject(regexp);
        var S = String(this);

        var functionalReplace = typeof replaceValue === 'function';
        if (!functionalReplace) replaceValue = String(replaceValue);

        var global = rx.global;
        if (global) {
          var fullUnicode = rx.unicode;
          rx.lastIndex = 0;
        }
        var results = [];
        while (true) {
          var result = regexpExecAbstract(rx, S);
          if (result === null) break;

          results.push(result);
          if (!global) break;

          var matchStr = String(result[0]);
          if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);
        }

        var accumulatedResult = '';
        var nextSourcePosition = 0;
        for (var i = 0; i < results.length; i++) {
          result = results[i];

          var matched = String(result[0]);
          var position = max$1(min$1(toInteger(result.index), S.length), 0);
          var captures = [];
          // NOTE: This is equivalent to
          //   captures = result.slice(1).map(maybeToString)
          // but for some reason `nativeSlice.call(result, 1, result.length)` (called in
          // the slice polyfill when slicing native arrays) "doesn't work" in safari 9 and
          // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.
          for (var j = 1; j < result.length; j++) captures.push(maybeToString(result[j]));
          var namedCaptures = result.groups;
          if (functionalReplace) {
            var replacerArgs = [matched].concat(captures, position, S);
            if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);
            var replacement = String(replaceValue.apply(undefined, replacerArgs));
          } else {
            replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);
          }
          if (position >= nextSourcePosition) {
            accumulatedResult += S.slice(nextSourcePosition, position) + replacement;
            nextSourcePosition = position + matched.length;
          }
        }
        return accumulatedResult + S.slice(nextSourcePosition);
      }
    ];
  });

  var js_cookie = createCommonjsModule(function (module, exports) {
  (function (factory) {
  	var registeredInModuleLoader;
  	{
  		module.exports = factory();
  		registeredInModuleLoader = true;
  	}
  	if (!registeredInModuleLoader) {
  		var OldCookies = window.Cookies;
  		var api = window.Cookies = factory();
  		api.noConflict = function () {
  			window.Cookies = OldCookies;
  			return api;
  		};
  	}
  }(function () {
  	function extend () {
  		var i = 0;
  		var result = {};
  		for (; i < arguments.length; i++) {
  			var attributes = arguments[ i ];
  			for (var key in attributes) {
  				result[key] = attributes[key];
  			}
  		}
  		return result;
  	}

  	function decode (s) {
  		return s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);
  	}

  	function init (converter) {
  		function api() {}

  		function set (key, value, attributes) {
  			if (typeof document === 'undefined') {
  				return;
  			}

  			attributes = extend({
  				path: '/'
  			}, api.defaults, attributes);

  			if (typeof attributes.expires === 'number') {
  				attributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);
  			}

  			// We're using "expires" because "max-age" is not supported by IE
  			attributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';

  			try {
  				var result = JSON.stringify(value);
  				if (/^[\{\[]/.test(result)) {
  					value = result;
  				}
  			} catch (e) {}

  			value = converter.write ?
  				converter.write(value, key) :
  				encodeURIComponent(String(value))
  					.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);

  			key = encodeURIComponent(String(key))
  				.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)
  				.replace(/[\(\)]/g, escape);

  			var stringifiedAttributes = '';
  			for (var attributeName in attributes) {
  				if (!attributes[attributeName]) {
  					continue;
  				}
  				stringifiedAttributes += '; ' + attributeName;
  				if (attributes[attributeName] === true) {
  					continue;
  				}

  				// Considers RFC 6265 section 5.2:
  				// ...
  				// 3.  If the remaining unparsed-attributes contains a %x3B (";")
  				//     character:
  				// Consume the characters of the unparsed-attributes up to,
  				// not including, the first %x3B (";") character.
  				// ...
  				stringifiedAttributes += '=' + attributes[attributeName].split(';')[0];
  			}

  			return (document.cookie = key + '=' + value + stringifiedAttributes);
  		}

  		function get (key, json) {
  			if (typeof document === 'undefined') {
  				return;
  			}

  			var jar = {};
  			// To prevent the for loop in the first place assign an empty array
  			// in case there are no cookies at all.
  			var cookies = document.cookie ? document.cookie.split('; ') : [];
  			var i = 0;

  			for (; i < cookies.length; i++) {
  				var parts = cookies[i].split('=');
  				var cookie = parts.slice(1).join('=');

  				if (!json && cookie.charAt(0) === '"') {
  					cookie = cookie.slice(1, -1);
  				}

  				try {
  					var name = decode(parts[0]);
  					cookie = (converter.read || converter)(cookie, name) ||
  						decode(cookie);

  					if (json) {
  						try {
  							cookie = JSON.parse(cookie);
  						} catch (e) {}
  					}

  					jar[name] = cookie;

  					if (key === name) {
  						break;
  					}
  				} catch (e) {}
  			}

  			return key ? jar[key] : jar;
  		}

  		api.set = set;
  		api.get = function (key) {
  			return get(key, false /* read as raw */);
  		};
  		api.getJSON = function (key) {
  			return get(key, true /* read as json */);
  		};
  		api.remove = function (key, attributes) {
  			set(key, '', extend(attributes, {
  				expires: -1
  			}));
  		};

  		api.defaults = {};

  		api.withConverter = init;

  		return api;
  	}

  	return init(function () {});
  }));
  });

  var namespace = "mozi-assist";
  var domain = "";
  var url = "//tts.youdao.com/fanyivoice";
  var config = {
  	namespace: namespace,
  	domain: domain,
  	url: url
  };

  var __domain = config.domain;
  var cookie = {
    set: function set(key, value, namespace) {
      var memory = {
        show: false,
        // 是否展示无障碍
        audio: false,
        // 是否开启声音
        speed: 'middle',
        // 语速
        zomm: 0.1,
        // 缩放倍数
        cursor: false,
        // 是否替换鼠标样式
        pointer: false,
        // 是否开启十字线
        bigtext: false,
        // 是否开启大字幕
        overead: false // 是否开启指读

      };

      if (js_cookie.get(namespace)) {
        memory = JSON.parse(js_cookie.get(namespace));
      }

      memory[key] = value;
      js_cookie.set(namespace, JSON.stringify(memory), {
        domain: __domain
      });
    },
    get: function get(key, namespace) {
      var __key = '';

      if (js_cookie.get(namespace)) {
        __key = JSON.parse(js_cookie.get(namespace))[key];
      }

      return __key;
    },
    remove: function remove(namespace) {
      js_cookie.remove(namespace, {
        domain: __domain
      });
    },
    setTag: function setTag(namespace) {
      var __key = "".concat(namespace, "-ignore");

      var __data = [];

      if (js_cookie.get(__key)) {
        __data = JSON.parse(js_cookie.get(__key));
      }

      var _location = location,
          origin = _location.origin,
          pathname = _location.pathname;

      var __ignoreUrl = "".concat(origin).concat(pathname);

      !__data.includes(__ignoreUrl) && __data.push("".concat(origin).concat(pathname));
      js_cookie.set(__key, JSON.stringify(__data), {
        domain: __domain
      });
    },
    getTag: function getTag(namespace) {
      var __key = "".concat(namespace, "-ignore");

      var __data = [];

      if (js_cookie.get(__key)) {
        __data = JSON.parse(js_cookie.get(__key));
      }

      return __data;
    }
  };

  var addEvent = function addEvent(element, type, callback) {
    var ignore = ['DOMContentLoaded'];

    var __type = ignore.includes(type) ? type : 'on' + type;

    if (element.addEventListener) {
      element.addEventListener(type, callback, false);
    } else if (element.attachEvent) {
      element.attachEvent(__type, callback);
    } else {
      element[__type] = callback;
    }
  };

  var removeEvent = function removeEvent(element, type, callback) {
    var ignore = ['DOMContentLoaded'];

    var __type = ignore.includes(type) ? type : 'on' + type;

    if (element.removeEventListener) {
      element.removeEventListener(type, callback);
    } else if (element.detachEvent) {
      element.detachEvent(__type, callback);
    } else {
      element[__type] = null;
    }
  };

  var ruleType = function ruleType(target) {
    var __role = !!target.getAttribute('role') && target.getAttribute('role').toUpperCase() || target.tagName.toUpperCase();

    var __roleName = {
      IMG: '图片',
      BUTTON: '按钮',
      INPUT: '输入框',
      CHECKBOX: '复选框',
      RADIO: '单选框',
      OPTION: '下拉框',
      A: '链接'
    };

    if (__role == 'INPUT') {
      if (target.type == 'radio') {
        return '单选框';
      } else if (target.type == 'checkbox') {
        // button reset file
        return '复选框';
      } else if (target.type == 'text') {
        // button reset file
        return '文本框';
      } else if (target.type == 'submit') {
        return '提交按钮';
      } else if (target.type == 'reset') {
        return '重置按钮';
      } else if (target.type == 'password') {
        return '密码输入框';
      } else {
        return '输入框';
      }
    }

    return __roleName[__role] || '文本';
  };

  var parseTagText = function parseTagText(target) {
    var __name = ruleType(target);

    var __role = !!target.getAttribute('role') && target.getAttribute('role').toUpperCase();

    if (__role === 'A' || target.tagName === 'A') {
      console.log('这是一个链接:' + target.alt || target.title || target.innerText);
      return "\u94FE\u63A5 ".concat(target.alt || target.title || target.innerText);
    }

    if (target.children.length === 0) {
      if (__role === 'IMG' || target.tagName === 'IMG') {
        console.log('这是一张图片:' + target.alt || target.title);
        return "\u56FE\u7247 ".concat(target.alt || target.title);
      }

      if (__role === 'BUTTON' || target.tagName === 'BUTTON') {
        console.log('这是一个按钮:' + target.innerText);
        return "\u6309\u94AE ".concat(target.alt || target.title || target.innerText);
      }

      if (__role === 'INPUT' || target.tagName === 'INPUT') {
        console.log("\u8FD9\u662F\u4E00\u4E2A".concat(__name, ":") + target.alt || target.title || target.value);
        return "".concat(__name, " ").concat(target.alt || target.title || target.value);
      }

      if (__role === 'LABEL' || target.tagName === 'LABEL') {
        var __linkId = target.getAttribute('for');

        var __linkDom = document.getElementById(__linkId);

        if (!!__linkDom && !!__linkDom.type && __linkDom.type == 'radio') {
          console.log("\u8FD9\u662F\u4E00\u4E2A\u5355\u9009:" + target.alt || target.title || target.innerText);
          return "\u5355\u9009 ".concat(target.alt || target.title || target.innerText);
        }
      }

      if (target.alt || target.title || target.innerText) {
        console.log("".concat(__name, " ").concat(target.alt || target.title || target.innerText));
        return "".concat(__name, " ").concat(target.alt || target.title || target.innerText);
      }

      return '';
    }

    if (target.children.length < 5 && (target.alt || target.title || target.innerText)) {
      console.log("".concat(__name, " ").concat(target.alt || target.title || target.innerText));
      return "".concat(__name, " ").concat(target.alt || target.title || target.innerText);
    }

    return '';
  };

  var trim = function trim(s) {
    return s.replace(/(^\s*)|(\s*$)/g, "");
  };
  /**
   * 判断是否是IE
   */

  var isIE = function isIE() {
    if (!!window.ActiveXobject || "ActiveXObject" in window) {
      return true;
    } else {
      return false;
    }
  };
  /**
   * 判断是否是IE11
   */


  var isIE11 = function isIE11() {
    if (/Trident\/7\./.test(navigator.userAgent)) {
      return true;
    } else {
      return false;
    }
  };

  var isFirefox = function isFirefox() {
    var ua = navigator.userAgent;

    if (ua.indexOf('Firefox') > -1) {
      return true;
    }

    return false;
  };

  var removeNode = function removeNode(item) {
    if (isIE() || isIE11()) {
      item.removeNode(true);
    } else {
      item.remove();
    }
  };

  // iterable DOM collections
  // flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods
  var domIterables = {
    CSSRuleList: 0,
    CSSStyleDeclaration: 0,
    CSSValueList: 0,
    ClientRectList: 0,
    DOMRectList: 0,
    DOMStringList: 0,
    DOMTokenList: 1,
    DataTransferItemList: 0,
    FileList: 0,
    HTMLAllCollection: 0,
    HTMLCollection: 0,
    HTMLFormElement: 0,
    HTMLSelectElement: 0,
    MediaList: 0,
    MimeTypeArray: 0,
    NamedNodeMap: 0,
    NodeList: 1,
    PaintRequestList: 0,
    Plugin: 0,
    PluginArray: 0,
    SVGLengthList: 0,
    SVGNumberList: 0,
    SVGPathSegList: 0,
    SVGPointList: 0,
    SVGStringList: 0,
    SVGTransformList: 0,
    SourceBufferList: 0,
    StyleSheetList: 0,
    TextTrackCueList: 0,
    TextTrackList: 0,
    TouchList: 0
  };

  var $forEach = arrayIteration.forEach;


  var STRICT_METHOD = arrayMethodIsStrict('forEach');

  // `Array.prototype.forEach` method implementation
  // https://tc39.es/ecma262/#sec-array.prototype.foreach
  var arrayForEach = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {
    return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);
  // eslint-disable-next-line es/no-array-prototype-foreach -- safe
  } : [].forEach;

  for (var COLLECTION_NAME in domIterables) {
    var Collection = global_1[COLLECTION_NAME];
    var CollectionPrototype = Collection && Collection.prototype;
    // some Chrome versions have non-configurable methods on DOMTokenList
    if (CollectionPrototype && CollectionPrototype.forEach !== arrayForEach) try {
      createNonEnumerableProperty(CollectionPrototype, 'forEach', arrayForEach);
    } catch (error) {
      CollectionPrototype.forEach = arrayForEach;
    }
  }

  var HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('splice');

  var max = Math.max;
  var min = Math.min;
  var MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;
  var MAXIMUM_ALLOWED_LENGTH_EXCEEDED = 'Maximum allowed length exceeded';

  // `Array.prototype.splice` method
  // https://tc39.es/ecma262/#sec-array.prototype.splice
  // with adding support of @@species
  _export({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {
    splice: function splice(start, deleteCount /* , ...items */) {
      var O = toObject(this);
      var len = toLength(O.length);
      var actualStart = toAbsoluteIndex(start, len);
      var argumentsLength = arguments.length;
      var insertCount, actualDeleteCount, A, k, from, to;
      if (argumentsLength === 0) {
        insertCount = actualDeleteCount = 0;
      } else if (argumentsLength === 1) {
        insertCount = 0;
        actualDeleteCount = len - actualStart;
      } else {
        insertCount = argumentsLength - 2;
        actualDeleteCount = min(max(toInteger(deleteCount), 0), len - actualStart);
      }
      if (len + insertCount - actualDeleteCount > MAX_SAFE_INTEGER) {
        throw TypeError(MAXIMUM_ALLOWED_LENGTH_EXCEEDED);
      }
      A = arraySpeciesCreate(O, actualDeleteCount);
      for (k = 0; k < actualDeleteCount; k++) {
        from = actualStart + k;
        if (from in O) createProperty(A, k, O[from]);
      }
      A.length = actualDeleteCount;
      if (insertCount < actualDeleteCount) {
        for (k = actualStart; k < len - actualDeleteCount; k++) {
          from = k + actualDeleteCount;
          to = k + insertCount;
          if (from in O) O[to] = O[from];
          else delete O[to];
        }
        for (k = len; k > len - actualDeleteCount + insertCount; k--) delete O[k - 1];
      } else if (insertCount > actualDeleteCount) {
        for (k = len - actualDeleteCount; k > actualStart; k--) {
          from = k + actualDeleteCount - 1;
          to = k + insertCount - 1;
          if (from in O) O[to] = O[from];
          else delete O[to];
        }
      }
      for (k = 0; k < insertCount; k++) {
        O[k + actualStart] = arguments[k + 2];
      }
      O.length = len - actualDeleteCount + insertCount;
      return A;
    }
  });

  var pubSub = {
    list: {},
    subscribe: function subscribe(key, fn) {
      if (!this.list[key]) this.list[key] = [];
      this.list[key].push(fn);
    },
    unsubscribe: function unsubscribe(key, fn) {
      var fnList = this.list[key];
      if (!fnList) return false;

      if (!fn) {
        // 不传入指定的方法，清空所用 key 下的订阅
        fnList && (fnList.length = 0);
      } else {
        fnList.forEach(function (item, index) {
          item === fn && fnList.splice(index, 1);
        });
      }
    },
    publish: function publish(key) {
      var fnList = this.list[key];
      if (!fnList) return false;

      for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
        args[_key - 1] = arguments[_key];
      }

      var _iterator = _createForOfIteratorHelper(this.list[key]),
          _step;

      try {
        for (_iterator.s(); !(_step = _iterator.n()).done;) {
          var fn = _step.value;
          !!fn && fn.call.apply(fn, [this].concat(args));
        }
      } catch (err) {
        _iterator.e(err);
      } finally {
        _iterator.f();
      }
    }
  };

  var Base = /*#__PURE__*/function () {
    function Base() {
      _classCallCheck(this, Base);

      this.config = {
        namespace: 'mozi-assist',
        domain: '.mozi.com',
        url: ''
      };
      this.message = pubSub;
      this.tmplStyle = [];
      this.tmplHtml = [];
      this.registeOpen();
    }

    _createClass(Base, [{
      key: "mergeConfig",
      value: function mergeConfig(opts) {
        this.config = _objectSpread2(_objectSpread2({}, this.config), opts);
        this.creatContainer();
      }
    }, {
      key: "use",
      value: function use(plugin) {
        for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
          args[_key - 1] = arguments[_key];
        }

        plugin.init.apply(plugin, [this].concat(args));
      }
    }, {
      key: "useEvent",
      value: function useEvent(plugin) {
        for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
          args[_key2 - 1] = arguments[_key2];
        }

        plugin.setEvents.apply(plugin, [this].concat(args));
      }
    }, {
      key: "creatContainer",
      value: function creatContainer() {
        var namespace = this.config.namespace;

        if (document.getElementById(namespace)) {
          return;
        }

        var Container = document.createElement("div");
        Container.id = namespace;
        document.body.appendChild(Container);
      }
    }, {
      key: "registeOpen",
      value: function registeOpen() {
        var _this = this;

        addEvent(document, 'click', function (event) {
          var event = window.event || event;
          var target = event.target || event.srcElement;

          if (target.getAttribute('id') == 'assist-open') {
            if (!_this.existIgnore()) {
              _this.show();

              _this.message.publish('openState', true);
            } else {
              var namespace = _this.config.namespace;
              cookie.set('show', true, namespace);

              var __href = document.getElementById('assist-open').getAttribute('assist-href');

              window.location.href = __href;
            }
          }
        });
      }
    }, {
      key: "isShow",
      value: function isShow() {
        var _this2 = this;

        var namespace = this.config.namespace;
        addEvent(window, 'DOMContentLoaded', function () {
          if (cookie.get('show', namespace) && !_this2.existIgnore()) {
            _this2.isShowTopBar(true);

            _this2.message.publish('openState', true);
          } else {
            _this2.message.publish('openState', false);
          }
        });
      }
    }, {
      key: "existIgnore",
      value: function existIgnore() {
        var namespace = this.config.namespace;
        var _location = location,
            origin = _location.origin,
            pathname = _location.pathname;

        var __key = "".concat(origin).concat(pathname);

        return cookie.getTag(namespace).includes(__key);
      }
    }, {
      key: "show",
      value: function show() {
        this.isShowTopBar(true);
      }
    }, {
      key: "close",
      value: function close() {
        this.isShowTopBar(false);
      }
    }, {
      key: "showTag",
      value: function showTag() {
        var namespace = this.config.namespace;
        cookie.setTag(namespace); // 设置忽略

        this.resetAction(); // 重置插件状态
      }
    }, {
      key: "isShowTopBar",
      value: function isShowTopBar(isShow) {
        var namespace = this.config.namespace;
        var activeBtn = document.getElementById("".concat(namespace, "-topbar-html"));

        if (isShow) {
          document.body.style.marginTop = '100px';
          activeBtn.style.display = 'block';
          cookie.set('show', true, namespace);
          this.hideModules();
        } else {
          document.body.style.cssText = ''; //activeBtn.style.display = 'none'

          cookie.remove("".concat(namespace));
          location.reload();
        }
      }
    }, {
      key: "hideModules",
      value: function hideModules() {
        var namespace = this.config.namespace;
        var classList = document.getElementsByClassName("".concat(namespace, "-hide"));

        for (var i = 0; i < classList.length; i++) {
          classList[i].style.display = 'none';
        }
      }
    }, {
      key: "creatStyle",
      value: function creatStyle(id, css) {
        var flag = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;

        if (!flag) {
          this.tmplStyle.push(css);
        } else {
          var namespace = this.config.namespace;
          var styleNode = document.createElement('style');
          styleNode.type = 'text/css';
          styleNode.id = "".concat(namespace, "-").concat(id);
          styleNode.className = id;

          if (styleNode.styleSheet) {
            styleNode.styleSheet.cssText = css;
          } else {
            styleNode.innerHTML = css;
          }

          document.getElementsByTagName('head')[0].appendChild(styleNode);
        }
      }
    }, {
      key: "creatHtml",
      value: function creatHtml(id, htmlFn) {
        var namespace = this.config.namespace;
        var DomContainer = document.createElement("div");
        DomContainer.id = "".concat(namespace, "-").concat(id);
        DomContainer.className = id;
        DomContainer.style.display = 'none';

        if (typeof htmlFn !== 'function') {
          console.error('htmlFn不是一个函数');
          return;
        }

        var __html = htmlFn(namespace);

        DomContainer.innerHTML = __html;
        this.tmplHtml.push(DomContainer.outerHTML);
      }
    }, {
      key: "registeHtml",
      value: function registeHtml() {
        var namespace = this.config.namespace;
        document.getElementById(namespace).innerHTML = this.tmplHtml.join('');
      }
    }, {
      key: "registeStyle",
      value: function registeStyle() {
        var namespace = this.config.namespace;
        var styleNode = document.createElement('style');
        styleNode.type = 'text/css';
        styleNode.id = "".concat(namespace, "-style");

        var __css = this.tmplStyle.join('\n');

        if (styleNode.styleSheet) {
          styleNode.styleSheet.cssText = __css;
        } else {
          styleNode.innerHTML = __css;
        }

        document.getElementsByTagName('head')[0].appendChild(styleNode);
      }
    }, {
      key: "formatLongText",
      value: function formatLongText() {
        var namespace = this.config.namespace;
        var longText = document.getElementsByClassName("".concat(namespace, "-long-text")) || [];
        [].forEach.call(longText, function (el) {
          var __el = el.innerText.split('。');

          var __elItem = [];

          __el.map(function (item) {
            __elItem.push("<label>".concat(item, "</label>"));
          });

          el.innerHTML = __elItem.join('。');
        });
      }
    }]);

    return Base;
  }();

  var styles$4 = ".topbar-html {\n  width: 100%;\n  background: #505050;\n  overflow: hidden;\n  z-index: 2147483645;\n  position: fixed;\n  top: 0;\n  box-shadow: 0 0 10px 2px #999;\n  left: 0;\n  right: 0;\n}\n.topbar-html-mright {\n  margin-right: 50px !important;\n}\n.topbar-html-margin0 {\n  margin: 0 !important;\n}\n.topbar-html-content {\n  width: 1080px;\n  height: 100px;\n  margin: 0 auto;\n  display: flex;\n  justify-content: center;\n}\n.topbar-html-content-item {\n  cursor: pointer;\n  margin: 0 6px;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n.topbar-html-content-item span {\n  height: 30px;\n  line-height: 30px;\n  color: #FFFFFF;\n  font-size: 16px;\n  font-weight: 500;\n  font-family: PingFangSC-Medium;\n}\n.topbar-html-content-item img {\n  height: 52px;\n  width: 52px;\n  border-radius: 5px;\n  display: block;\n}";

  var img$n = "data:image/png;base64, ";

  var img$m = "data:image/png;base64, ";

  var img$l = "data:image/png;base64, ";

  var img$k = "data:image/png;base64, ";

  var img$j = "data:image/png;base64, ";

  var img$i = "data:image/png;base64,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";

  var img$h = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAABBlJREFUeF7tnTtLM1EQht94I4gI4oV0VhIsxEqwVqysbfIXIoK1WGjQJlaCgmilNpailYUoWGllYSEoadNYaBPES2S2Cko+Z7+smTnhPfXsmdnn2VlXPYeTenx8rILDLYEUBbl1ExVGQb79UJBzPxREQd4JOK+PP4MoyDkB5+WxgyjIOQHn5bGDKMg5AeflsYMoyDkB5+WxgyjIOQHn5bVUB7W1teHz89M58njlBS8olUrh9vYWz8/P6O7uhkgaHR1FOp2OR8JpdPCCREihUMD9/T1eX1+RzWYxPz+PoaEhp8jjlRW0oMHBQeTzeTw8PODt7Q3VahWdnZ2YmJjA9PR0JKurqyseEWfRQQu6vLzE1tbWD6Tt7e3o6OjA/v4+5BUY8gha0Pb2Ni4uLuryX1tbw8jISMh+wv6P6sbGBq6vr+sKWFpawvj4OAVZEaAgK/LKvBSkBGUVRkFW5JV5KUgJyiqMgqzIK/NSkBKUVRgFWZFX5qUgJSirMAqyIq/MS0FKUFZhFGRFXpmXgpSgrMIoyIq8Mi8FKUFZhVGQFXllXgpSgrIKoyAr8sq8FKQEZRVGQVbklXkpSAnKKoyCrMgr81KQEpRVGAVZkVfmpSAlqNowWcze19f3H1fGv2R1dRU3Nzd1L1xYWMDMzEz8iWNcIUuLZV247K74i5HI0l8p8v39HYeHhzg/P0elUvmLWn/Mubm5iUwmUzfXwcEBTk5O/ryWnp4eyEL+2dlZTE5OJrpgv2FBsmFK1kcfHR1FT1EzN1B5EVT7BORyOczNzUVdlcRoWJB0y+7uLq6urpKoJ9YcHgUNDw9jZ2cHLy8vse6lXnDDgqRr1tfXUSqVEikoziQeBQ0MDEA+XmS3XxKDgpKgWDOHO0Hyrj0+Psbp6Wn0cSC73Jo1PHbQ1NQUFhcXE/tQariDZDfb3d1d9N4tl8v4+Pholh94FLS8vIyxsbHEGDQsSCrhZ7bjz+zvjwp/UU2seaKJEumgZEvSz8Y/9ehZmURSkAl2fVIK0rMyiaQgE+z6pBSkZ2USSUEm2PVJKUjPyiSSgkyw65NSkJ6VSSQFmWDXJ6UgPSuTSAoywa5PSkF6ViaRFGSCXZ+UgvSsTCIpyAS7PikF6VmZRFKQCXZ9UgrSszKJpCAT7PqkFKRnZRJJQSbY9UkpSM/KJJKCTLDrk8rS339te1lZWYnOEgp5BL1wcW9vD2dnZ3X5F4tFyH6dkEfQgng8jfNHjwc8ORck5clifdmfJFtfZCuM7DCX07d6e3sDqP73EoN+xX2/vf7+fjw9Pf1+1wFFtJQgHtMZ0JPXKqW2VAe1ipTa+6Ag51YpiIKcE3BeHjuIgpwTcF4eO4iCnBNwXh47iIKcE3BeHjuIgpwTcF4eO4iCnBNwXh47yLmgL5DinYZeUF2+AAAAAElFTkSuQmCC";

  var img$g = "data:image/png;base64,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";

  var img$f = "data:image/png;base64,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";

  var img$e = "data:image/png;base64, ";

  var img$d = "data:image/png;base64,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";

  var img$c = "data:image/png;base64,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";

  var img$b = "data:image/png;base64,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";

  var img$a = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAACCBJREFUeF7tXUloFE0U7rhFoogmikRwRZQsiggqQfSgHlwQchDXg2gWDSa4EAhGEtwXFBVFRHA5iOCCHgTFDcTlYIgYD5qDMYkLuOKC4r7Sj/8ra2Z6Zqq7q3vqT14uVVP16tWr99XXXf2qupNWWFj4x+I/Yz2QxgAZiw0ZxgCZjQ8DZDg+DBADZLoHDLeP70EMkOEeMNw8ZhADZLgHDDePGcQAGe4Bw81jBjFAhnvAcPOYQQyQ4R4w3DxmEANkuAcMN89IBvXv35/cVlBQINyXm5tL+QEDBlDavXt3UdehQwfKf/z4kdJnz55R2tjYKGTq6uoo//DhQ8MhiTSPATIcrpQDNHz4cOGiBQsWUH7EiBGBua25uZl0Hzt2TPTR0NAQWH9+FTNAlmUxQAmmETMoMcdCZ1Dnzp3JooULF1I6ffp0YWFaWlqEtX/+/DsR9vTpU6p78uQJpe/evROyP378oHyPHj0oHTJkCKWDBg0SMlhIOLnj5s2bVLx//35KP3/+7PfKpK09A2RZFgNkWVZGRgbNqurqakrz8vJiZtnPnz+p7PLly5SePXtWyLx48cL1rMzMzBRtpk2bRvmZM2dSmp6eHqMP7Fy3bp2oe/v2ret+dTYIjUEMkDfYAgWoU6dOwqra2lrKRy+hW1pahMyOHTso//z5c2+jUWjVq1cvklq5cqWQjrbp8ePHog6MT9V9iQFymDTtBqCSkhIxE+XVml1YX19PdTt37hQyX79+VeCAHpGOHTsKRWVlZZSfPHlyjPJbt25R2bZt2/R07FJLoAxigFyi4SDOAFmW1e4YhOjAli1bxJzAQ+iDBw+obM2aNZRiae1/rnnXANuqqqpIybhx42KUbdiwgcru3LnjvSMPLQNhEAPkAYk4TQIBaP369dSdvHz99u0blS1fvpzSly9f6huFJk3YY9q3b5/QiPDRo0ePqGzVqlWUymEoTd07qmGAJLe0eYCwE7pnz56Y2YCwzZEjR7RMuBkzZgg9Y8aMofyVK1coRWzNa0cIB9ntFy9eHKEGV4ewtii0MogB8jol4rdjgBx802YZNHv2bBruvHnzYm6keNbQtThYsmSJcO3UqVMpf/ToUUrPnDnjayojsGsrOXz4MOlC9PvSpUv0G3tHvjpSaKyVQQyQgsddimgFCPsoI0eOJDPkoOOKFStcmpZYPEgGyT3X1NTQz9GjR1OKI13Lli3TOp54yhigJG5uUwAdPHiQhpuVlUXp1atXxfCdlt5+pmBYDMJRsFmzZpG5v379onTOnDnCfJT5GU8oDGKA9EOk9RLHABkO0MmTJ8lCHK2Sl7tYAqsMobCwkMSys7Pjiufk5Ig6PCA3NTVRWWtra9x29+/fp7rr16+rmGLhsElpaWmEPI6N2YUfPnxQ0uVFSCuDGCAvECRuoxWgU6dOUW84LOKVQZs3byY9Mkt0Df3ChQuk6sCBA0oq8RAsL0rshosWLRLt379/r6TLixADlMRrbQogRKp79uxJw0Z02c7LeyzJZtLEiRNJpHfv3nFF5V3PYcOGkRwizPfu3YvbDse87t69m8wMqkfYClES7APJy2wcPVZS6FJIK4MYIJfeVxDXCtDGjRupSxzrxbs4dlllZaWCOeoiYT2orl69mowaO3YspQj2Ll26VN1YH5IMUBLnMUAeZxczyIPjouNWv3//FlqKi4spL7/X46EL0SRIgLp06SL6wX0Ve0TXrl2jut27d/sxX7mt1kscA6Tsd2VBrQANHTqUOt6+fXuMAcePH6eyEydOKBuXSDBIBslntMvLyyPM2Lp1K/3Ga/1aBpNACQPk4Jw2CxDGCgaBUXb5p0+fqBoz0m94BA+ztk4s6/EmgtcjUTh3sHfvXgFbnz59KI83/CoqKuh3WEeWtTKIAdJ/wWOAJJ+2GwbhgAX28+V5hbcDNm3aRMXyUlz//HOnEQdBpkyZEtMQL5rduHHDnVKf0oEwiAHyiYrUPBCAoB9vAti/J0yYEGE1It3yAcAw2SR/NGPu3LlkGyLWsqGvXr2in4i9hfVWA2xggCzLarcAyUdosUs6cODACCbJ+zK7du2iuiD3+Lt27Up94CiynZeX7PZv+RgVXjY+d+4ctTt06BClYTEpUAYxQP7vRQxQe2aQPH/w3Zy1a9dSMY5KyTKINpw+fZqKL168KKq9fOlDjkpPmjQpYiGAL47I/ePSJn9DIZoD0Ze6oC93gTKIATL8EudkXrdu3agYMS2nV97R7vv370IFDoLg0MebN29EHW7YYMXgwYOpLj8/X8jI98Nou16/fk1FiLupuBVMCnrhEBqDMGgGSAX+fzKhAxRt3vjx40XR/PnzKd+vXz93o3AhDebhFKzdFA/NRUVFpCn6u0LJ1Ae5BGeAGKBk80+i83/fLB01ahQVyh82x55P3759qc5ppYV7Ee4pTh82v337NrV32s9B+AfnJ9yyKYgVXsoZJMMHBzFABt2DGKDEVxijGKRyMcSbE07L5i9fvpAKv2el5Ug3LnduFg46l+AMkMOsYIBUqGKITPTCwQ2T7CGcP3+eRoLXQ91Gwf93DAobNwYobI977M8vULgvgUmqZjCDFD3FACk6KlViDFCqPO+yX7fRBiwKsFUuL8FVuuZLnIqXJBkGyKXDUiUuPyshCo7PdMpLaa/MwbiYQR4RZoA8Oi4VzQAWmCT/9xa395xo+5lBGhBlgDQ4MUgVDFCQ3jVcN1/iGCDDPWC4ecwgBshwDxhuHjOIATLcA4abxwxigAz3gOHmMYMYIMM9YLh5zCDDAfoL+y3czBQ8/z0AAAAASUVORK5CYII=";

  var img$9 = "data:image/png;base64,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";

  var img$8 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAABV1JREFUeF7tXMsrtG8Y/sb5FBsSC0pZWWDFQjbY2JCIvwGJyI4kEVKkLFBYSNlRsrAiKcqG5JAI5VQOiZLjr67vu2UYZuY9jPs3Lpt7zDzP/Vzvdd3XvM/7vM+8juLi4tc//FPLgIMCqdUGwCiQbn0okHJ9KBAF0s6Acnw8B1Eg5Qwoh0cHUSDlDCiHRwdRIOUMKIdHB1Eg5Qwoh0cHUSDlDCiHRwdRIOUMKIdHB1Eg5Qwoh0cHUSDlDCiHRwdRIOUMKIdHB1EgzxmIj49H48vLS8THx0fPO/tpS1UOokCfq0yFQJmZmUBWW1uLuLm5ibi8vIx4fHyMuLu7i/jy8oL4+ur/u5YpkPKvRhUC5eXlgabq6mqXdIlT1tbWXDprY2MD7z89PSmn23t4FMh7znzaQ4VA+fn5OOiqqiqPDv75+RntAgICEPf39xFnZ2ff+l9dXeH19vY24u3trUe5tTWiQNoU+YBHhUC5ubmAJbM4h8NhiLb3s7r7+3vkOD8/R1xcXETc2dlBPDo6Qry+vkbUOiOkQBTIvRnkOqi5udl9Y5MtxCmnp6fItLCwgHh4eIi4tLRkcgRru6twEAX6WlQVAqWnpwNhS0uLteXnRba2tja0Xl1d9aKX/U0p0D+OKdA3xZaamopPOzs7EY3O4ryp57OzMzTv7+9HlNUIb3L4oq0KB1Eg5eegpKQkIOzp6UEMCgqyrTi3trac3CrXQbYNaDKxCgdRIOUOSklJcXKQyaJz2V1WusvKyuxIb1tOFQ6iQModFB0dDYTDw8OIwcHBtlXkwMAAcs/Nzdk2hpWJVTiIAil3UEhICBCOjY0hhoWFWVmETrnu7u7wf2trK6Ksbts2oMnEKhxEgZQ7KCYmBgiHhoZsPwcJFQcHB3gpK+g3Nzcma92e7iocRIHooE8M0EFeOD48PBytBwcHEaOiorzobayp3Libn59HAlk0lU2RxrJa30vFVxwFUv4VJxemo6OjQBoREeES8cPDA96XWZ+V9ToyMoJ009PTVqY1nUuFgyjQ/8RBUsWRkZFOiGdmZvD/+Pg4Ynl5OWJhYSGiFUtDsk2rvb0dOdfX101XvxUJVDmIAn2WVIVAcou7r68PCGNjYxFlYVM2HQp8OUc1NDTgrYyMDEQrbpWfnJwgV1NTE+LFxYUVRjCcgwJ9oI4CuailwMBAvFtZWYk4NTWFKJsJvyo/uRPb2NiIJomJiW9NzbpJfjzW3d2NnLJh37AVDHZU4SAK9LV6KgQSeCKUt9WanZ2NFO9/APZxJmiwgP9MTk6i68TEhNEUpvpRIDf0USBT9fW3s5xvKioq3rIVFRXhdWhoqKkRZPWiq6sLeXy9NViVg4wySYGMMufjfu/X6Orq6jB6VlaWk8uMQpLrIbk+kum40Xye9vMLB8nBUiBPZVfQLiEhASjkGik5OdkSJ62srCBPR0eHT47Srxz0njEK5JP6MT/Ix8fMyB48o5nlekim30bzeNrPbx0kBFAgT0vhh9rJFLykpAQISktLEb3dHNnb24t+sofBV4fj9w6iQL4qJZPjyDpfTU0NMuXk5CDK42S+Si8/V/mpBzX5vYOEeApkssJ91T0uLs7p+kh+myRO2tvbw+f19fW+gvTtOL/GQcICBVJRd+5BpKWloVFBQQGiPLbs/SPN3Gexv8Wvc5BQSoHsLy5TI8j0WyYPPzVLc3cQv9ZBFMhdafBzjxj4tQ7yiB0FjSiQAhG+g0CBKJByBpTDo4MokHIGlMOjgyiQcgaUw6ODKJByBpTDo4MokHIGlMOjgyiQcgaUw6ODKJByBpTDo4MokHIGlMOjgyiQcgaUw6ODlAv0H2/FDK7uA5LWAAAAAElFTkSuQmCC";

  var img$7 = "data:image/png;base64,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";

  var img$6 = "data:image/png;base64, ";

  var img$5 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAAA7hJREFUeF7tnLFOKlEURa+lFEZ+gQJDsEF/BOwtpKYwoRISQiThC0zoDAk1mvAfakMCmFhYWBKUgtC9lzm+IUqegQPcw5bZ08yEnDtnz153z4Rhhj3nnMtms3+CNRc8B/YICA/KV0UEhM3HERABgTsALo8JIiBwB8DlMUEEBO4AuDwmiIDAHQCXxwQRELgD4PKYIAICdwBcHhNEQOAOgMtjgggI3AFweUwQAYE7AC6PCYoqoJOTEzn0QqHg4vE4uA16eaPRyN3c3MjAx8dH/Q6WHOEtQbe3tyJhF+GE3gaQgiWfzy9pt76MgPSezUb8akD39/ezA3l+fpbtbre7hh0YQ4+OjkRIOp2eCcrlct7EeUsQAW2GmQmgu7s7UdtqtTajeot7OTs7k+7n5+e7kyACWn1GMUFK75ggpWHW5QRk7biyHwEpDbMuJyBrx5X9CEhpmHU5AVk7ruxHQErDrMsJyNpxZT8CUhpmXU5A1o4r+xGQ0jDrcgKydlzZj4CUhlmXE5C148p+BKQ0zLqcgKwdV/YjIKVh1uUEZO24sh8BOeeOj49d+HhTu91WWui3PBKAwkey5p8nSyaT4m61WnX7+/uyjfbACQER0LdTwFae6plPUCKREFG1Wk3WsVhsJnI4HMp2sViU9cfHh99z2IK9RzJBBPTzrNhqgi4vL0XZ9fW1rA8ODmZKw6SUy2X57O3tbavJCZtHKkEEtHjObTVB7+/vovDw8PCb0vF47CqVinz2+vq6+CgMKyKVIAJaPLNME9TpdERRs9n8r7LJZCKfB+l5eXlZrH4LFTudIALSzyjTBIXvB319uSuQPJ1ORXlwByFYBoOB/kiMRux0gghIP4sgErSMbJ/vgS7TP5LfgzTGEJDGrSVqv15n0O5ILyH/x5KdvAaFr98/PT2t4w3E2OC3qmDJZDIzPT7TbXINIqDV55Y3QFH4K5jwTsjFxcXqBBaMJKA1rP3VgE5PT+XQg3+7mr8ZuoYnMEODHxIbjYboeXh48KbLW4IIaDPMvAHajDzuhYDA5wABERC4A+DymCACAncAXB5sgur1uliXSqW8W9jr9VypVPLeZ5UGsIDmf3Vd5eA0Y3ze8NTomK8loH+OEJByGlme4vr9vru6ulIqtCmHTRABfU4AWEA28xO/CwGBMyIgAgJ3AFweE0RA4A6Ay2OCCAjcAXB5TBABgTsALo8JIiBwB8DlMUEEBO4AuDwmiIDAHQCXxwQRELgD4PKYIAICdwBcHhNEQOAOgMuTBHHBdeAvKHwKv/PMC7QAAAAASUVORK5CYII=";

  var img$4 = "data:image/png;base64, ";

  var img$3 = "data:image/png;base64, ";

  var img$2 = "data:image/png;base64, ";

  var img$1 = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAAA9hJREFUeF7tnL+yIUEYxf2pEookQgmvQCwgoIqIlIBAQkp5DFXXGxCJqfIucq+gytZ+td/dNWt0t+l2j3I26drdnv6O8+szPdNmpDudzjXFP7AOpAkIlo0IIyBsPgQEzoeACAjdAXB9XIMICNwBcHlMEAGBOwAujwkiIHAHwOUxQQQE7gC4PCaIgMAdAJfHBBEQuAPg8pggAgJ3AFweE0RA4A6Ay2OCCAjcAXB5TBABgTsALo8JIiBwB8DlMUEEBO4AuDwmiIDCOZBOp2XwwWAgbbvdvinW7XbDFX/RyG+dIAJ60SxxLZPL5eSQ6XQqba1WuzsEE+TqrKf+BOTJSN/D5PN5GXI+n0tbqVQelmCCfBMwjEdALzbctlyxWJSuy+VSWv276XgmyOSQp/8nIE9G+h6mXC7LkIvFQlo9xdnWYYJsnXqyHwGBvoZfrVYF6Ww2k1Yvq1052yao3+/L0IVCQdrVaiXt9fr4Nz70Rnk0Gkn/0+kk7X6/d5Ua2x9yJ4GA/vKCAtRqtUSZ7q1lMplEM9GUIE1Or9e7qXM8Hh8mSZMzHo+lX6PRuEncer32liQCSqVSHwtot9slSkDSg+MSpAmYTCZSol6v3y0VTZJ2iiYnerCuQV9fX0k/QthfGiEgAno4Q01rkGuSLpfLzZoTLX44HOSfNDmmq0CbeAVdg1ATpMYQEOgaFJ25tqDiZnyI5HxPopA/6IeeINckEZDNSdmhj2kNSpqkkMlhgu6Adj3VEZBDWu51fTZBpvscrWXacUgoXw7/6Ku4uFMcAfmYWhZj2CYobm/NooR0CZkkJuj3aeTPA5C2yYmCIyDbqRzpZ0qQLRi9GMhms1LBdu+OOwkGcARkMAj9RlVPac1m8+4niV5GayfXXfAkSfroNejjAbkuHfp2gn6jqmuE6zja33SK029CFZTW0+9z9JvRaAJMN7SbzUYkbLfbZ6V/Hxc0Qa7qCOh/x6AAqbxXPzSiSSqVSiIhLjlxN7a6Jp3PZ2/J0VoE9M9DHwTkeM7Ttxf0bQY+WepoYOjuBBR4s9QXQD4878vJQOMQUCBjfQ+ra5C+7aAP18fVMd0H+dYXYjzIq7i4D0pAIaZAgDH1bQd9+0Hvm6KlmKAA5tsMSUA2LgH00T2x4XAoavTtCJXGBP0wJAL6YQAs/yY3qp8M6q0usz8RFAGBUycgAgJ3AFweE0RA4A6Ay2OCCAjcAXB5TBABgTsALo8JIiBwB8DlMUEEBO4AuDwmiIDAHQCXxwQRELgD4PKYIAICdwBcHhNEQOAOgMtjgggI3AFweUwQAYE7AC6PCQIH9AsL73Ofmn78mQAAAABJRU5ErkJggg==";

  var img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAABoCAYAAAAdHLWhAAAAAXNSR0IArs4c6QAAB+5JREFUeF7tXFmoTV8YX9c8lG4yExmekCGZUpTxQbjkCXUlyZSIDJGEzFNkeOBBQiRckTFlKjwgQ0lIZKakzNO/7/f3O51zruPstc/Z93zn+NbLt/bea/it77e+tdZeU5FzzpWUlPwSaU6fBoqMIH2kxCMygnTz44wgI0i5BpTDMwsygpRrQDk8syAjSLkGlMMzCzKClGtAOTyzICNIuQaUwzMLMoKUa0A5PLMgI0i5BpTDMwsygpRrQDk8syAjSLkGlMPLGwtq2rQpVNm5c2fXtm1b+Pmubt26eK5du7b7+vUr/J8+fYJ8+vQp5KNHjyBv377trl27Bj/DaubICNLMjnP69iRUrlwZKuvVqxfkkCFDINu0aZM1VX78+BFpXbhwAfLw4cOQL168yFoe2UpInQUZQYnUqiKoXbt2bsKECUDYvHnzlJXwzZs3+Pbw4UPIly9fQn779i0Wp7i4GP4mTZpAtm7dGrJq1arl0v3x4wfeHTt2DHLfvn2OVpYtSwibTk4JqlSpEnCPGjUKcsSIEa6oCJBi7t27d/CfPHkSUpoldvw+ha5WrRqCd+rUyQ0YMAD+Ll26QCbn+fz5c7dmzRp8YyXwySubYY0gI6h8fWJtnjFjBj726NEjFujz58/wHzhwAPLIkSOQ8c1Xtmpoq1atkNS4ceMgpYmlI46VK1fi1Y0bN7KVrVc6ObEgIyg4RxVOkPQ7c+bMAcJu3bolIH38+LFbtWoV3oXpZ4IXOzEk+6Dhw4fjw+jRox37R1rukiVL8O3WrVthswkVzwiK64OMIOdcaWmpnEdKqE137tzB87JlyzIa3h46dCiWLpUdptpKnzhz5kxErVKlCuSHDx8g5T2H9WHS9o1TYRYkw1txCxcujA1rOT82f/58fMv03yNbBAmW3r17A9P06dMh2Qzeu3fPzZ07F+9+/Yr+3JsRlKJK/zMEsYnYtGkTVNGoUaPYTDOH2dlqMrJpQeRt/Pjx8A4ePDhG5datW+E/deqUb4vlHT5yCzKCvDlJiBA5QQMHDkSGkyZNimW8Y8cO+I8ePeqN/m9WEvbb30BUr14dnzdu3AjZoEED9/btW/gnTpwI+f37d+9yBI1gBKXRVMETxL6nWbNmUMWrV6/c5MmT4ecsctDaJOHCWkmm/VO/fv0Ac+rUqTG469evh//8+fM+RfAKG7kFGUFefJQLHBlBXAFdvXp1QqY7d+6MrWCGgZ4rC+JgR/rPOnXqAPr169chFy9eHKYogeJERtDIkSMBQOa14p0MW9nJBkKYFChXBBGGDAwGDRqER87TjRkzBs9RbEIxgjxrScEQtGDBAhSdq5acnY7vZP+km3gLke/Jc2pRWFC6PONx9uzZ082ePTsB+rx58/B89+5dT7rTB4/Mgoyg9MoPEiIygrZt24b8GzZsCHnp0iVIrvWnApeuNufagmQTyubNmxPgc6R69uzZIDr3CmMEJf1b/alZjddowRC0Z88elKtmzZqQ3NK0ffv2v9Yg7RYky/WyLSve7dq1C48HDx70so4ggSOzoGRFX7x4EXjWrl2b1wQJ+OSy7d+/H2Xau3dvEJ17hTGCPJu4giGIM9Zs4o4fP46aw+YgXwcJBdPEGUFeLVnKwJE1cRyKcm/05cuXAYIbAfPVgho3buy2bNmSAD8vh9lGkHIL4s6X7t27Ayn3HXAVMl8tqGCmeowg5RY0bNgwIBw7dmwC0mnTprknT56ERh/FVI8PmIKZzZbOVBz7Im78k+OGsmgX1uWKoIJbsDOCwlbBxHiRDbOZzdKlS+Hl2RvZ3sstWO/fv/cuRa4sqH79+sDasmXLGOYHDx7An8kKcToFGEHpNPT7e8ESxBVVLuBJeblllltoA+oobbBMt1alzSAHASK3ICMoM1YjJ4jwFi1aBG/Hjh1jxzY47XPlypXMSvE7dkVYUIsWLVzfvn2RI0emz549w/OJEyeyUo74RIwgT5UWLEHcm7Bu3TpXq1YtqIUXHsmhLnH379/3VFdi8CgtiBdhSEvAJRQeOJs1axaAyLbmbLsKsyAC79q1q+M2JTYRLOjy5ctxG5Um1759e8AhZqlcPFm3YsUKfLt69WpkkI2gNKr95wgSffAqFv6w0pLktMPu3buhsrKyMsifP39GVjtTJSxH8IcOHYrP3NbLS57Eevh7cPr06cixVbgFGUF+nOaEIELs06cPvFOmTIGMv4mKlxhxYvXmzZt+JQsRukOHDoglVwXwmhgmw43yMvl77ty5EKmHi2IExenNCEpRiXiWSO4k4D2kyUFpUbK9lj+2vDfOt27Wq1cPUbjayx/PZKuRMNz0v2HDBsTJ9FfAF2tOLSgZrJwH5S0klDVq1EhZptevX+MbL8SQ/5AvX74khOcZUzn8K05+NOlPlbDcdMVrMimT0/VVdNjwRtAfNGcEBahOPGbI02z9+/dHrHS1P0DS5YJwBuDMmTP4Jrc7hlmrCpN3ujiqLCgerBH0vzbUEpRcs/gzK3NivJiJnTqX16Xz5zwZ43O+jwMKuY9ULkQSx2klroxWxOVI6SymXLnlRUlJSfTXNvkiSwpvBGWoQIsejQbypomLpvj6UzWClHNkBBlByjWgHJ5ZkBGkXAPK4ZkFGUHKNaAcnlmQEaRcA8rhmQUZQco1oByeWZARpFwDyuGZBRlByjWgHJ5ZkBGkXAPK4ZkFGUHKNaAcnlmQEaRcA8rhwYLM6dXAf6tptt2kNHe9AAAAAElFTkSuQmCC";

  var topBarHtml = function topBarHtml(namespace) {
    return "<div class='topbar-html-content' id='".concat(namespace, "-topbar-html-content'>\n        <div id='").concat(namespace, "-reset' class='topbar-html-content-item'>\n          <span>\u91CD\u7F6E</span>\n          <img src='").concat(img$n, "' source-src='").concat(img$n, "'  hover-src='").concat(img$d, "'></img>\n        </div>\n        <div id='").concat(namespace, "-audio' class='topbar-html-content-item topbar-html-margin0'>\n          <span>\u58F0\u97F3\u5F00\u5173</span>\n          <img src='").concat(img$m, "' name='audio' source-src='").concat(img$m, "'  hover-src='").concat(img$c, "'    selected-src='").concat(img$3, "'   selected-hover-src='").concat(img$1, "'></img>\n        </div>\n        <div id='").concat(namespace, "-audio-speed' class='topbar-html-content-item topbar-html-mright'>\n          <span>\u8BED\u901F</span>\n          <img src='").concat(img$l, "' name='speed' source-src='").concat(img$l, "'  hover-src='").concat(img$b, "'  selected-src='").concat(img$2, "'   selected-hover-src='").concat(img, "'></img>\n        </div>\n        <div id='").concat(namespace, "-zoom-out' class='topbar-html-content-item'>\n          <span>\u653E\u5927</span>\n          <img src='").concat(img$k, "' source-src='").concat(img$k, "'  hover-src='").concat(img$a, "'></img>\n        </div>\n        <div id='").concat(namespace, "-zoom-min' class='topbar-html-content-item topbar-html-mright'>\n          <span>\u7F29\u5C0F</span>\n          <img src='").concat(img$j, "' source-src='").concat(img$j, "'  hover-src='").concat(img$9, "'></img>\n        </div>\n        <div id='").concat(namespace, "-cursor-auto' class='topbar-html-content-item topbar-html-margin0'>\n          <span>\u9F20\u6807\u6837\u5F0F</span>\n          <img src='").concat(img$i, "' source-src='").concat(img$i, "'  hover-src='").concat(img$8, "'></img>\n        </div>\n        <div id='").concat(namespace, "-pointer-follow' class='topbar-html-content-item'>\n          <span>\u5341\u5B57\u7EBF</span>\n          <img src='").concat(img$h, "' source-src='").concat(img$h, "'  hover-src='").concat(img$7, "'></img>\n        </div>\n        <div id='").concat(namespace, "-bigtext' class='topbar-html-content-item topbar-html-mright'>\n          <span>\u5927\u5B57\u5E55</span>\n          <img src='").concat(img$g, "' source-src='").concat(img$g, "'  hover-src='").concat(img$6, "'></img>\n        </div>\n        <div id='").concat(namespace, "-pointeread' class='topbar-html-content-item topbar-html-mright'>\n          <span>\u6307\u8BFB</span>\n          <img src='").concat(img$f, "' source-src='").concat(img$f, "'  hover-src='").concat(img$5, "'></img>\n        </div>\n        <div id='").concat(namespace, "-close' class='topbar-html-content-item'>\n          <span>\u9000\u51FA\u670D\u52A1</span>\n          <img src='").concat(img$e, "' source-src='").concat(img$e, "'  hover-src='").concat(img$4, "'></img>\n        </div>\n      </div>");
  };

  var TopBar = {
    init: function init(core) {
      var namespace = core.config.namespace;
      this.namespace = namespace;
      core.creatStyle('topbar-style', styles$4);
      core.creatHtml('topbar-html', topBarHtml);
    },
    setEvents: function setEvents(core) {
      var _this = this;

      var namespace = core.config.namespace;
      var BtnClose = document.getElementById("".concat(namespace, "-close"));
      var BtnReset = document.getElementById("".concat(namespace, "-reset"));
      var HoverItem = document.getElementById("".concat(namespace, "-topbar-html-content"));

      BtnClose.onclick = function () {
        core.close();
      };

      BtnReset.onclick = function () {
        core.resetAction();
      };

      if (isFirefox()) {
        document.getElementById("".concat(namespace, "-zoom-out")).style.display = 'none';
        document.getElementById("".concat(namespace, "-zoom-min")).style.display = 'none';
      }

      [].forEach.call(HoverItem.children, function (el) {
        addEvent(el, 'mouseover', _this.mouseOver);
        addEvent(el, 'mouseout', _this.mouseOut);
      });
    },
    mouseOver: function mouseOver(event) {
      var event = window.event || event;
      var target = event.target || event.srcElement;

      if (target.tagName !== 'IMG') {
        return;
      }

      var __name = target.getAttribute('name');

      var __hover = target.getAttribute('hover-src');

      if (__name == 'audio') {
        if (cookie.get('audio', TopBar.namespace)) {
          target.src = __hover;
        } else {
          target.src = target.getAttribute('selected-hover-src');
        }
      } else if (__name == 'speed') {
        if (cookie.get('speed', TopBar.namespace) == 'fast') {
          target.src = target.getAttribute('selected-hover-src');
        } else {
          target.src = __hover;
        }
      } else {
        target.src = __hover;
      }
    },
    mouseOut: function mouseOut(event) {
      var event = window.event || event;
      var target = event.target || event.srcElement;

      if (target.tagName !== 'IMG') {
        return;
      }

      var __name = target.getAttribute('name');

      var __source = target.getAttribute('source-src');

      if (__name == 'audio') {
        if (cookie.get('audio', TopBar.namespace)) {
          target.src = __source;
        } else {
          target.src = target.getAttribute('selected-src');
        }
      } else if (__name == 'speed') {
        if (cookie.get('speed', TopBar.namespace) == 'fast') {
          target.src = target.getAttribute('selected-src');
        } else {
          target.src = __source;
        }
      } else {
        target.src = __source;
      }
    }
  };

  var aPossiblePrototype = function (it) {
    if (!isObject(it) && it !== null) {
      throw TypeError("Can't set " + String(it) + ' as a prototype');
    } return it;
  };

  /* eslint-disable no-proto -- safe */



  // `Object.setPrototypeOf` method
  // https://tc39.es/ecma262/#sec-object.setprototypeof
  // Works with __proto__ only. Old v8 can't work with null proto objects.
  // eslint-disable-next-line es/no-object-setprototypeof -- safe
  var objectSetPrototypeOf = Object.setPrototypeOf || ('__proto__' in {} ? function () {
    var CORRECT_SETTER = false;
    var test = {};
    var setter;
    try {
      // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe
      setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;
      setter.call(test, []);
      CORRECT_SETTER = test instanceof Array;
    } catch (error) { /* empty */ }
    return function setPrototypeOf(O, proto) {
      anObject(O);
      aPossiblePrototype(proto);
      if (CORRECT_SETTER) setter.call(O, proto);
      else O.__proto__ = proto;
      return O;
    };
  }() : undefined);

  // makes subclassing work correct for wrapped built-ins
  var inheritIfRequired = function ($this, dummy, Wrapper) {
    var NewTarget, NewTargetPrototype;
    if (
      // it can work only with native `setPrototypeOf`
      objectSetPrototypeOf &&
      // we haven't completely correct pre-ES6 way for getting `new.target`, so use this
      typeof (NewTarget = dummy.constructor) == 'function' &&
      NewTarget !== Wrapper &&
      isObject(NewTargetPrototype = NewTarget.prototype) &&
      NewTargetPrototype !== Wrapper.prototype
    ) objectSetPrototypeOf($this, NewTargetPrototype);
    return $this;
  };

  var SPECIES = wellKnownSymbol('species');

  var setSpecies = function (CONSTRUCTOR_NAME) {
    var Constructor = getBuiltIn(CONSTRUCTOR_NAME);
    var defineProperty = objectDefineProperty.f;

    if (descriptors && Constructor && !Constructor[SPECIES]) {
      defineProperty(Constructor, SPECIES, {
        configurable: true,
        get: function () { return this; }
      });
    }
  };

  var defineProperty = objectDefineProperty.f;
  var getOwnPropertyNames = objectGetOwnPropertyNames.f;





  var enforceInternalState = internalState.enforce;



  var MATCH = wellKnownSymbol('match');
  var NativeRegExp = global_1.RegExp;
  var RegExpPrototype$1 = NativeRegExp.prototype;
  var re1 = /a/g;
  var re2 = /a/g;

  // "new" should create a new object, old webkit bug
  var CORRECT_NEW = new NativeRegExp(re1) !== re1;

  var UNSUPPORTED_Y = regexpStickyHelpers.UNSUPPORTED_Y;

  var FORCED$1 = descriptors && isForced_1('RegExp', (!CORRECT_NEW || UNSUPPORTED_Y || fails(function () {
    re2[MATCH] = false;
    // RegExp constructor can alter flags and IsRegExp works correct with @@match
    return NativeRegExp(re1) != re1 || NativeRegExp(re2) == re2 || NativeRegExp(re1, 'i') != '/a/i';
  })));

  // `RegExp` constructor
  // https://tc39.es/ecma262/#sec-regexp-constructor
  if (FORCED$1) {
    var RegExpWrapper = function RegExp(pattern, flags) {
      var thisIsRegExp = this instanceof RegExpWrapper;
      var patternIsRegExp = isRegexp(pattern);
      var flagsAreUndefined = flags === undefined;
      var sticky;

      if (!thisIsRegExp && patternIsRegExp && pattern.constructor === RegExpWrapper && flagsAreUndefined) {
        return pattern;
      }

      if (CORRECT_NEW) {
        if (patternIsRegExp && !flagsAreUndefined) pattern = pattern.source;
      } else if (pattern instanceof RegExpWrapper) {
        if (flagsAreUndefined) flags = regexpFlags.call(pattern);
        pattern = pattern.source;
      }

      if (UNSUPPORTED_Y) {
        sticky = !!flags && flags.indexOf('y') > -1;
        if (sticky) flags = flags.replace(/y/g, '');
      }

      var result = inheritIfRequired(
        CORRECT_NEW ? new NativeRegExp(pattern, flags) : NativeRegExp(pattern, flags),
        thisIsRegExp ? this : RegExpPrototype$1,
        RegExpWrapper
      );

      if (UNSUPPORTED_Y && sticky) {
        var state = enforceInternalState(result);
        state.sticky = true;
      }

      return result;
    };
    var proxy = function (key) {
      key in RegExpWrapper || defineProperty(RegExpWrapper, key, {
        configurable: true,
        get: function () { return NativeRegExp[key]; },
        set: function (it) { NativeRegExp[key] = it; }
      });
    };
    var keys = getOwnPropertyNames(NativeRegExp);
    var index = 0;
    while (keys.length > index) proxy(keys[index++]);
    RegExpPrototype$1.constructor = RegExpWrapper;
    RegExpWrapper.prototype = RegExpPrototype$1;
    redefine(global_1, 'RegExp', RegExpWrapper);
  }

  // https://tc39.es/ecma262/#sec-get-regexp-@@species
  setSpecies('RegExp');

  var TO_STRING = 'toString';
  var RegExpPrototype = RegExp.prototype;
  var nativeToString = RegExpPrototype[TO_STRING];

  var NOT_GENERIC = fails(function () { return nativeToString.call({ source: 'a', flags: 'b' }) != '/a/b'; });
  // FF44- RegExp#toString has a wrong name
  var INCORRECT_NAME = nativeToString.name != TO_STRING;

  // `RegExp.prototype.toString` method
  // https://tc39.es/ecma262/#sec-regexp.prototype.tostring
  if (NOT_GENERIC || INCORRECT_NAME) {
    redefine(RegExp.prototype, TO_STRING, function toString() {
      var R = anObject(this);
      var p = String(R.source);
      var rf = R.flags;
      var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? regexpFlags.call(R) : rf);
      return '/' + p + '/' + f;
    }, { unsafe: true });
  }

  var audioTabText = {
    pointeread: '已开启指读模式',
    bigtextOpen: '大字幕已开启',
    bigtextClose: '大字幕已关闭',
    pointerFollowOpen: '十字线已开启',
    pointerFollowClose: '十字线已关闭',
    cursorAutoOpen: '大鼠标已开启',
    cursorAutoClose: '大鼠标已关闭',
    zoomOut: '页面已放大',
    zoomOutEnd: '页面已放到最大',
    zoomMin: '页面已缩小',
    zoomMinEnd: '页面已缩至最小',
    speedQuick: '语速已加快',
    speedMiddle: '语速已正常',
    audioOpen: '声音已开启',
    audioClose: '声音关闭',
    reset: '已重置'
  };
  var symbolsReg = new RegExp("[]");

  var styles$3 = ".bigtext-html {\n  z-index: 99999999999;\n  height: 150px;\n  text-align: center;\n  position: fixed;\n  bottom: 0;\n  right: 0;\n  left: 0;\n  border-top: 1px solid #505050;\n}\n.bigtext-html-content {\n  height: 100%;\n  background-color: #FFFFFF;\n  font-size: 53px;\n  color: #333 !important;\n  text-align: center;\n  font-weight: bold;\n}";

  var BigTextHtml$1 = function BigTextHtml(namespace) {
    return "<audio autoplay id='".concat(namespace, "-audio-media'>\n               <source src='' id='").concat(namespace, "-audio-source'>\n               <embed height=\"0\" width=\"0\"  src='' id='").concat(namespace, "-audio-embed'>\n        </audio>\n        ");
  };

  var Audio = {
    init: function init(core) {
      var _core$config = core.config,
          namespace = _core$config.namespace,
          url = _core$config.url;
      this.body = document.body;
      this.namespace = namespace;
      this.AudioApi = url;
      core.creatStyle('audio-style', styles$3);
      core.creatHtml('audio-html', BigTextHtml$1);
      this.isAudio = cookie.get('audio', namespace);
    },
    setEvents: function setEvents(core) {
      var namespace = core.config.namespace;
      this.registeDom(namespace);
      this.toggleAudio();

      if (this.isAudio) {
        this.addEventMove();
        addEvent(document, 'click', this.forceSafariPlayAudio); // 苹果浏览器需要用户跟浏览器有个交互才可以播放语音
      } else {
        this.audioTabImg.src = this.audioTabImg.getAttribute('selected-src');
      }

      if (this.speed == 'fast') {
        this.speedTabImg.src = this.speedTabImg.getAttribute('selected-src');
      } else {
        this.speedTabImg.src = this.speedTabImg.getAttribute('source-src');
      }
    },
    registeDom: function registeDom(namespace) {
      this.audio = document.getElementById("".concat(namespace, "-audio-media")) || '';
      this.audioTab = document.getElementById("".concat(namespace, "-audio")) || '';
      this.audioTabImg = this.audioTab.getElementsByTagName('img')[0];
      this.speed = cookie.get('speed', namespace);
      this.speedTab = document.getElementById("".concat(namespace, "-audio-speed")) || '';
      this.speedTabImg = this.speedTab.getElementsByTagName('img')[0];
      this.pointeReadTab = document.getElementById("".concat(namespace, "-pointeread")) || '';
    },
    toggleAudio: function toggleAudio() {
      var _this = this;

      var namespace = Audio.namespace;

      this.audioTab.onclick = function () {
        if (_this.isAudio) {
          _this.closeAudio();
        } else {
          _this.showAudio();

          Audio.playAudio(audioTabText.audioOpen);
        }
      };

      this.speedTab.onclick = function () {
        if (_this.speed == 'middle') {
          _this.speed = 'fast';
          _this.speedTabImg.src = _this.speedTabImg.getAttribute('selected-src');
          Audio.playAudio(audioTabText.speedQuick);
        } else {
          _this.speed = 'middle';
          _this.speedTabImg.src = _this.speedTabImg.getAttribute('source-src');
          Audio.playAudio(audioTabText.speedMiddle);
        }

        cookie.set('speed', _this.speed, namespace);
      };

      this.pointeReadTab.onclick = function () {
        _this.showAudio();

        Audio.playAudio(audioTabText.pointeread);
      };
    },
    showAudio: function showAudio() {
      var namespace = Audio.namespace;
      this.isAudio = true;
      this.addEventMove();
      cookie.set('audio', true, namespace);
      this.audioTabImg.src = this.audioTabImg.getAttribute('source-src');
    },
    closeAudio: function closeAudio() {
      var namespace = Audio.namespace;
      this.isAudio = false;
      this.audio.pause();
      this.removeEventMove();
      cookie.set('audio', false, namespace);
      this.audioTabImg.src = this.audioTabImg.getAttribute('selected-src');
    },
    addEventMove: function addEventMove() {
      addEvent(this.body, 'mouseover', this.mouseOver);
    },
    removeEventMove: function removeEventMove() {
      removeEvent(this.body, 'mouseover', this.mouseOver);
    },
    forceSafariPlayAudio: function forceSafariPlayAudio() {
      var audio = Audio.audio;
      audio.load();
      audio.play();
    },
    mouseOver: function mouseOver(event) {
      var event = window.event || event;
      var target = event.target || event.srcElement;

      var __text = parseTagText(target).replace(symbolsReg, '');

      var __parentNodeId = target.parentNode.id;

      var __isAssist = __parentNodeId.indexOf(Audio.namespace) > -1;

      if (__text == '' || trim(__text) == '文本' || __isAssist) {
        return;
      }

      Audio.playAudio(__text);
    },
    playAudio: function playAudio(text) {
      var namespace = Audio.namespace,
          AudioApi = Audio.AudioApi,
          isAudio = Audio.isAudio,
          audio = Audio.audio,
          speed = Audio.speed,
          forceSafariPlayAudio = Audio.forceSafariPlayAudio;

      if (!isAudio) {
        return;
      }

      var __speed = speed == 'middle' ? 5 : 7;

      var AudioParam = "le=zh&&ie=UTF-8keyfrom=speaker-target&spd=".concat(__speed, "&word=").concat(encodeURI(text));
      var AudioUrl = "".concat(AudioApi, "?").concat(AudioParam);
      audio.src = AudioUrl;
      document.getElementById("".concat(namespace, "-audio-source")).src = AudioUrl;
      document.getElementById("".concat(namespace, "-audio-embed")).src = AudioUrl;
      var playPromise = audio.play();

      if (playPromise) {
        playPromise.then(function (_) {
          // audio.pause();
          removeEvent(document, 'click', forceSafariPlayAudio);
        }).catch(function (error) {
          console.log(error);
        });
      }
    },
    reset: function reset() {
      var namespace = Audio.namespace;
      this.closeAudio();
      this.speedTabImg.src = this.speedTabImg.getAttribute('source-src');
      this.speed = 'middle';
      cookie.set('speed', 'middle', namespace);
    }
  };

  // `thisNumberValue` abstract operation
  // https://tc39.es/ecma262/#sec-thisnumbervalue
  var thisNumberValue = function (value) {
    if (typeof value != 'number' && classofRaw(value) != 'Number') {
      throw TypeError('Incorrect invocation');
    }
    return +value;
  };

  // `String.prototype.repeat` method implementation
  // https://tc39.es/ecma262/#sec-string.prototype.repeat
  var stringRepeat = function repeat(count) {
    var str = String(requireObjectCoercible(this));
    var result = '';
    var n = toInteger(count);
    if (n < 0 || n == Infinity) throw RangeError('Wrong number of repetitions');
    for (;n > 0; (n >>>= 1) && (str += str)) if (n & 1) result += str;
    return result;
  };

  var nativeToFixed = 1.0.toFixed;
  var floor = Math.floor;

  var pow = function (x, n, acc) {
    return n === 0 ? acc : n % 2 === 1 ? pow(x, n - 1, acc * x) : pow(x * x, n / 2, acc);
  };

  var log = function (x) {
    var n = 0;
    var x2 = x;
    while (x2 >= 4096) {
      n += 12;
      x2 /= 4096;
    }
    while (x2 >= 2) {
      n += 1;
      x2 /= 2;
    } return n;
  };

  var multiply = function (data, n, c) {
    var index = -1;
    var c2 = c;
    while (++index < 6) {
      c2 += n * data[index];
      data[index] = c2 % 1e7;
      c2 = floor(c2 / 1e7);
    }
  };

  var divide = function (data, n) {
    var index = 6;
    var c = 0;
    while (--index >= 0) {
      c += data[index];
      data[index] = floor(c / n);
      c = (c % n) * 1e7;
    }
  };

  var dataToString = function (data) {
    var index = 6;
    var s = '';
    while (--index >= 0) {
      if (s !== '' || index === 0 || data[index] !== 0) {
        var t = String(data[index]);
        s = s === '' ? t : s + stringRepeat.call('0', 7 - t.length) + t;
      }
    } return s;
  };

  var FORCED = nativeToFixed && (
    0.00008.toFixed(3) !== '0.000' ||
    0.9.toFixed(0) !== '1' ||
    1.255.toFixed(2) !== '1.25' ||
    1000000000000000128.0.toFixed(0) !== '1000000000000000128'
  ) || !fails(function () {
    // V8 ~ Android 4.3-
    nativeToFixed.call({});
  });

  // `Number.prototype.toFixed` method
  // https://tc39.es/ecma262/#sec-number.prototype.tofixed
  _export({ target: 'Number', proto: true, forced: FORCED }, {
    toFixed: function toFixed(fractionDigits) {
      var number = thisNumberValue(this);
      var fractDigits = toInteger(fractionDigits);
      var data = [0, 0, 0, 0, 0, 0];
      var sign = '';
      var result = '0';
      var e, z, j, k;

      if (fractDigits < 0 || fractDigits > 20) throw RangeError('Incorrect fraction digits');
      // eslint-disable-next-line no-self-compare -- NaN check
      if (number != number) return 'NaN';
      if (number <= -1e21 || number >= 1e21) return String(number);
      if (number < 0) {
        sign = '-';
        number = -number;
      }
      if (number > 1e-21) {
        e = log(number * pow(2, 69, 1)) - 69;
        z = e < 0 ? number * pow(2, -e, 1) : number / pow(2, e, 1);
        z *= 0x10000000000000;
        e = 52 - e;
        if (e > 0) {
          multiply(data, 0, z);
          j = fractDigits;
          while (j >= 7) {
            multiply(data, 1e7, 0);
            j -= 7;
          }
          multiply(data, pow(10, j, 1), 0);
          j = e - 1;
          while (j >= 23) {
            divide(data, 1 << 23);
            j -= 23;
          }
          divide(data, 1 << j);
          multiply(data, 1, 1);
          divide(data, 2);
          result = dataToString(data);
        } else {
          multiply(data, 0, z);
          multiply(data, 1 << -e, 0);
          result = dataToString(data) + stringRepeat.call('0', fractDigits);
        }
      }
      if (fractDigits > 0) {
        k = result.length;
        result = sign + (k <= fractDigits
          ? '0.' + stringRepeat.call('0', fractDigits - k) + result
          : result.slice(0, k - fractDigits) + '.' + result.slice(k - fractDigits));
      } else {
        result = sign + result;
      } return result;
    }
  });

  var ZoomPage = {
    init: function init(core) {
      var namespace = core.config.namespace;
      this.size = cookie.get('zomm', namespace) || 1.0;
      this.ignore = ['LINK', 'SCRIPT'];
      this.namespace = namespace;
      this.set();
    },
    setEvents: function setEvents(core) {
      var _this = this;

      var namespace = core.config.namespace;

      document.getElementById("".concat(namespace, "-zoom-out")).onclick = function () {
        _this.zoomOut(core);
      };

      document.getElementById("".concat(namespace, "-zoom-min")).onclick = function () {
        _this.zoomMin(core);
      };

      addEvent(window, 'DOMContentLoaded', function () {
        _this.updateZoomState(core);
      });
    },
    updateZoomState: function updateZoomState(core) {
      var message = core.message;
      message.publish('zoomState', this.size);
    },
    zoomOut: function zoomOut(core) {
      if (this.size >= 1.3) {
        console.log('已最大');
        Audio.playAudio(audioTabText.zoomOutEnd);
        this.updateZoomState(core);
        return;
      }

      this.size = parseFloat((this.size + 0.1).toFixed(10));
      this.updateZoomState(core);
      this.set();
      Audio.playAudio(audioTabText.zoomOut);
    },
    zoomMin: function zoomMin(core) {
      if (this.size <= 1.0) {
        console.log('已最小');
        Audio.playAudio(audioTabText.zoomMinEnd);
        this.updateZoomState(core);
        return;
      }

      this.size = parseFloat((this.size - 0.1).toFixed(10));
      this.updateZoomState(core);
      this.set();
      Audio.playAudio(audioTabText.zoomMin);
    },
    set: function set() {
      var _this2 = this;

      [].forEach.call(document.body.children, function (el) {
        var __el = el.tagName.toUpperCase();

        if (_this2.ignore.indexOf(__el) > -1 || el.id == _this2.namespace) {
          return;
        }

        el.style.zoom = _this2.size; //  el.style.transform = `scale(${this.size})`
        //el.style.transformOrigin = '0px 0px'
      });
      cookie.set('zomm', this.size, this.namespace);
    },
    reset: function reset() {
      this.size = 1.0;
      this.set();
    }
  };

  var styles$2 = ".pointer-follow-html-x, .pointer-follow-html-y {\n  z-index: 99999999999;\n  transform: none;\n  transform-origin: 0px 0px;\n  position: fixed;\n  top: 0;\n  left: 0;\n  background-color: #ff0000 !important;\n  width: 100%;\n  height: 4px;\n}\n.pointer-follow-html-y {\n  height: 100%;\n  width: 4px;\n}";

  var PointerFllowHtml = function PointerFllowHtml() {
    return "<div class='pointer-follow-html'>\n        <div  class=\"pointer-follow-html-x\" id=\"pointer-follow-html-x\"></div>\n        <div class=\"pointer-follow-html-y\" id=\"pointer-follow-html-y\"></div>\n      </div>";
  };

  var PointerFllow = {
    init: function init(core) {
      core.config.namespace;
      this.body = document.body;
      core.creatStyle('pointer-follow-style', styles$2);
      core.creatHtml('pointer-follow-html', PointerFllowHtml);
    },
    setEvents: function setEvents(core) {
      var namespace = core.config.namespace;

      if (cookie.get('pointer', namespace)) {
        this.show(core);
      }

      this.togglePointer(core, namespace);
    },
    addEventMove: function addEventMove() {
      addEvent(this.body, 'mousemove', this.mouseMove);
    },
    removeEventMove: function removeEventMove() {
      removeEvent(this.body, 'mousemove', this.mouseMove);
    },
    togglePointer: function togglePointer(core, namespace) {
      var _this = this;

      var tabBarBtn = document.getElementById("".concat(namespace, "-pointer-follow"));
      var activeBtn = document.getElementById("".concat(namespace, "-pointer-follow-html"));

      tabBarBtn.onclick = function () {
        if (activeBtn.style.display == 'block') {
          _this.reset(core);

          Audio.playAudio(audioTabText.pointerFollowClose);
        } else {
          _this.show(core);

          Audio.playAudio(audioTabText.pointerFollowOpen);
        }
      };
    },
    mouseMove: function mouseMove(event) {
      var event = window.event || event;
      var pointerX = document.getElementById("pointer-follow-html-x"),
          pointerY = document.getElementById("pointer-follow-html-y");
      pointerX.style.top = event.clientY - 10 + "px";
      pointerY.style.left = event.clientX - 10 + "px";
    },
    show: function show(core) {
      var namespace = core.config.namespace;
      var activeBtn = document.getElementById("".concat(namespace, "-pointer-follow-html"));
      activeBtn.style.display = 'block';
      this.addEventMove();
      cookie.set('pointer', true, namespace);
    },
    reset: function reset(core) {
      var namespace = core.config.namespace;
      var activeBtn = document.getElementById("".concat(namespace, "-pointer-follow-html"));
      activeBtn.style.display = 'none';
      this.removeEventMove();
      cookie.set('pointer', false, namespace);
    }
  };

  var styles$1 = "* {\n  cursor: url(\"./allaw.cur\"), auto !important;\n}\n\na {\n  cursor: url(\"./linkaw.cur\"), auto !important;\n}";

  var CursorAuto = {
    init: function init(core) {
      core.config.namespace;
    },
    setEvents: function setEvents(core) {
      var namespace = core.config.namespace;

      if (cookie.get('cursor', namespace)) {
        core.creatStyle('cursor-auto-style', styles$1, true);
      }

      var tabBarBtn = document.getElementById("".concat(namespace, "-cursor-auto"));

      tabBarBtn.onclick = function () {
        var activeBtn = document.getElementById("".concat(namespace, "-cursor-auto-style"));

        if (activeBtn) {
          removeNode(activeBtn);
          cookie.set('cursor', false, namespace);
          Audio.playAudio(audioTabText.cursorAutoClose);
        } else {
          cookie.set('cursor', true, namespace);
          core.creatStyle('cursor-auto-style', styles$1, true);
          Audio.playAudio(audioTabText.cursorAutoOpen);
        }
      };
    },
    reset: function reset(core) {
      var namespace = core.config.namespace;
      var activeBtn = document.getElementById("".concat(namespace, "-cursor-auto-style"));
      activeBtn && removeNode(activeBtn);
    }
  };

  var styles = ".bigtext-html {\n  z-index: 99999999999;\n  height: 150px;\n  text-align: center;\n  position: fixed;\n  bottom: 0;\n  right: 0;\n  left: 0;\n  border-top: 1px solid #797F8D;\n  background-color: #FFFFFF;\n}\n.bigtext-html-content {\n  height: 100%;\n  background-color: #FFFFFF;\n  font-size: 53px;\n  color: #333 !important;\n  text-align: center;\n  font-weight: bold;\n  width: 93%;\n  margin: 0 auto;\n}\n.bigtext-html-btn {\n  width: 20px;\n  height: 20px;\n  background-color: red;\n  position: absolute;\n  right: 20px;\n  top: 20px;\n  border-radius: 10px;\n  color: #FFFFFF;\n  cursor: pointer;\n}\n.bigtext-html-bone {\n  width: 100%;\n  height: 151px;\n}";

  var BigTextHtml = function BigTextHtml(namespace) {
    return "<div id='".concat(namespace, "-bigtext-html' class='bigtext-html'>\n           <div id='").concat(namespace, "-bigtext-content' class='bigtext-html-content'></div>\n           <div class='bigtext-html-btn' id='").concat(namespace, "-bigtext-close'>\n              <i class='bigtext-html-close' role='button' title='\u5173\u95ED\u5927\u5B57\u5E55\u6A21\u5F0F'>X</i>\n           </div>\n        </div>");
  };

  var BigTextBone = function BigTextBone() {
    return "<div class='bigtext-html-bone'></div>";
  };

  var BigText = {
    init: function init(core) {
      var namespace = core.config.namespace;
      this.body = document.body;
      this.namespace = namespace;
      core.creatStyle('bigtext-style', styles);
      core.creatHtml('bigtext-html', BigTextHtml);
      core.creatHtml('bigtext-bone', BigTextBone);
    },
    setEvents: function setEvents(core) {
      var _this = this;

      var namespace = core.config.namespace;
      addEvent(window, 'DOMContentLoaded', function () {
        if (cookie.get('bigtext', namespace)) {
          _this.show(core);
        }
      });
      this.toggleBigText(core, namespace);
    },
    addEventMove: function addEventMove() {
      addEvent(this.body, 'mouseover', this.mouseOver);
    },
    removeEventMove: function removeEventMove() {
      removeEvent(this.body, 'mouseover', this.mouseOver);
    },
    toggleBigText: function toggleBigText(core, namespace) {
      var _this2 = this;

      var tabBarBtn = document.getElementById("".concat(namespace, "-bigtext"));
      var tabBarBtnClose = document.getElementById("".concat(namespace, "-bigtext-close"));

      tabBarBtn.onclick = function () {
        var activeBtn = document.getElementById("".concat(namespace, "-bigtext-html"));

        if (activeBtn.style.display == 'block') {
          _this2.reset(core);

          Audio.playAudio(audioTabText.bigtextClose);
        } else {
          _this2.show(core);

          Audio.playAudio(audioTabText.bigtextOpen);
        }
      };

      tabBarBtnClose.onclick = function () {
        _this2.reset(core);

        Audio.playAudio(audioTabText.bigtextClose);
      };
    },
    mouseOver: function mouseOver(event) {
      var event = window.event || event;
      var target = event.target || event.srcElement;
      var namespace = BigText.namespace;
      var __parentNodeId = target.parentNode.id;

      var __isAssist = __parentNodeId.indexOf(namespace) > -1;

      var activeBtn = document.getElementById("".concat(namespace, "-bigtext-content"));
      activeBtn.innerText = parseTagText(target).replace(symbolsReg, '');

      if (__isAssist || activeBtn.innerText == '文本') {
        activeBtn.innerText = '';
        return;
      }
    },
    show: function show(core) {
      var namespace = core.config.namespace;
      var activeBtn = document.getElementById("".concat(namespace, "-bigtext-html"));
      var tabBar = document.getElementById("".concat(namespace, "-bigtext-bone"));
      activeBtn.style.display = 'block';
      tabBar.style.display = 'block';
      this.addEventMove();
      cookie.set('bigtext', true, namespace);
      core.message.publish('bigTextState', true);
    },
    reset: function reset(core) {
      var namespace = core.config.namespace;
      var activeBtn = document.getElementById("".concat(namespace, "-bigtext-html"));
      var tabBar = document.getElementById("".concat(namespace, "-bigtext-bone"));
      activeBtn.style.display = 'none';
      tabBar.style.display = 'none';
      this.removeEventMove();
      cookie.set('bigtext', false, namespace);
      core.message.publish('bigTextState', false);
    }
  };

  var InitModules = [TopBar, Audio, ZoomPage, PointerFllow, CursorAuto, BigText];

  var Assist = /*#__PURE__*/function (_Base) {
    _inherits(Assist, _Base);

    var _super = _createSuper(Assist);

    function Assist() {
      var _this;

      var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};

      _classCallCheck(this, Assist);

      _this = _super.call(this, opts); // 合并参数

      _this.mergeConfig(opts); // 初始化插件


      _this.init();

      _this.isShow();

      _this.resetAction = _this.reset;
      return _this;
    }

    _createClass(Assist, [{
      key: "init",
      value: function init() {
        var _this2 = this;

        // 初始化dom
        InitModules.map(function (item) {
          return _this2.use(item);
        });
        this.registeStyle();
        this.registeHtml(); // 初始化事件

        InitModules.map(function (item) {
          return _this2.useEvent(item);
        }); // 格式化大段文本

        this.formatLongText();
      }
    }, {
      key: "reset",
      value: function reset() {
        Audio.reset();
        ZoomPage.reset();
        CursorAuto.reset(this);
        PointerFllow.reset(this);
        BigText.reset(this);
      }
    }]);

    return Assist;
  }(Base);

  var AssistEntry = new Assist(config);

  return AssistEntry;

})));
