Response Proxy

一款代理请求(包括 XMLHttpRequest 和 fetch)响应结果的油猴脚本,即 mock 请求的响应。

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==UserScript==
// @name                    Response Proxy
// @namespace               daief
// @version                 0.0.1
// @description             一款代理请求(包括 XMLHttpRequest 和 fetch)响应结果的油猴脚本,即 mock 请求的响应。
// @author                  daief
// @email                   [email protected]
// @match                   *://*/*
// @homepage                https://github.com/daief/gm-response-proxy
// @homepageURL             https://github.com/daief/gm-response-proxy
// @supportURL              https://github.com/daief/gm-response-proxy/issues
// @run-at                  document-start
// @connect                 cdn.jsdelivr.net
// @require                 https://cdn.jsdelivr.net/npm/[email protected]/dist/vue.global.js
// @grant                   unsafeWindow
// @grant                   GM_setValue
// @grant                   GM_getValue
// @grant                   GM_log
// ==/UserScript==
/******/ (() => { // webpackBootstrap
/******/ 	var __webpack_modules__ = ({

/***/ 261:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var root = __webpack_require__(898);

/** Built-in value references. */
var Symbol = root.Symbol;

module.exports = Symbol;


/***/ }),

/***/ 798:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseTimes = __webpack_require__(799),
    isArguments = __webpack_require__(206),
    isArray = __webpack_require__(515),
    isBuffer = __webpack_require__(391),
    isIndex = __webpack_require__(640),
    isTypedArray = __webpack_require__(781);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Creates an array of the enumerable property names of the array-like `value`.
 *
 * @private
 * @param {*} value The value to query.
 * @param {boolean} inherited Specify returning inherited property names.
 * @returns {Array} Returns the array of property names.
 */
function arrayLikeKeys(value, inherited) {
  var isArr = isArray(value),
      isArg = !isArr && isArguments(value),
      isBuff = !isArr && !isArg && isBuffer(value),
      isType = !isArr && !isArg && !isBuff && isTypedArray(value),
      skipIndexes = isArr || isArg || isBuff || isType,
      result = skipIndexes ? baseTimes(value.length, String) : [],
      length = result.length;

  for (var key in value) {
    if ((inherited || hasOwnProperty.call(value, key)) &&
        !(skipIndexes && (
           // Safari 9 has enumerable `arguments.length` in strict mode.
           key == 'length' ||
           // Node.js 0.10 has enumerable non-index properties on buffers.
           (isBuff && (key == 'offset' || key == 'parent')) ||
           // PhantomJS 2 has enumerable non-index properties on typed arrays.
           (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||
           // Skip index properties.
           isIndex(key, length)
        ))) {
      result.push(key);
    }
  }
  return result;
}

module.exports = arrayLikeKeys;


/***/ }),

/***/ 511:
/***/ ((module) => {

/**
 * A specialized version of `_.map` for arrays without support for iteratee
 * shorthands.
 *
 * @private
 * @param {Array} [array] The array to iterate over.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the new mapped array.
 */
function arrayMap(array, iteratee) {
  var index = -1,
      length = array == null ? 0 : array.length,
      result = Array(length);

  while (++index < length) {
    result[index] = iteratee(array[index], index, array);
  }
  return result;
}

module.exports = arrayMap;


/***/ }),

/***/ 322:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var Symbol = __webpack_require__(261),
    getRawTag = __webpack_require__(49),
    objectToString = __webpack_require__(70);

/** `Object#toString` result references. */
var nullTag = '[object Null]',
    undefinedTag = '[object Undefined]';

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
 * The base implementation of `getTag` without fallbacks for buggy environments.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the `toStringTag`.
 */
function baseGetTag(value) {
  if (value == null) {
    return value === undefined ? undefinedTag : nullTag;
  }
  return (symToStringTag && symToStringTag in Object(value))
    ? getRawTag(value)
    : objectToString(value);
}

module.exports = baseGetTag;


/***/ }),

/***/ 807:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseGetTag = __webpack_require__(322),
    isObjectLike = __webpack_require__(446);

/** `Object#toString` result references. */
var argsTag = '[object Arguments]';

/**
 * The base implementation of `_.isArguments`.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 */
function baseIsArguments(value) {
  return isObjectLike(value) && baseGetTag(value) == argsTag;
}

module.exports = baseIsArguments;


/***/ }),

/***/ 180:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseGetTag = __webpack_require__(322),
    isLength = __webpack_require__(235),
    isObjectLike = __webpack_require__(446);

/** `Object#toString` result references. */
var argsTag = '[object Arguments]',
    arrayTag = '[object Array]',
    boolTag = '[object Boolean]',
    dateTag = '[object Date]',
    errorTag = '[object Error]',
    funcTag = '[object Function]',
    mapTag = '[object Map]',
    numberTag = '[object Number]',
    objectTag = '[object Object]',
    regexpTag = '[object RegExp]',
    setTag = '[object Set]',
    stringTag = '[object String]',
    weakMapTag = '[object WeakMap]';

var arrayBufferTag = '[object ArrayBuffer]',
    dataViewTag = '[object DataView]',
    float32Tag = '[object Float32Array]',
    float64Tag = '[object Float64Array]',
    int8Tag = '[object Int8Array]',
    int16Tag = '[object Int16Array]',
    int32Tag = '[object Int32Array]',
    uint8Tag = '[object Uint8Array]',
    uint8ClampedTag = '[object Uint8ClampedArray]',
    uint16Tag = '[object Uint16Array]',
    uint32Tag = '[object Uint32Array]';

/** Used to identify `toStringTag` values of typed arrays. */
var typedArrayTags = {};
typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =
typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =
typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =
typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =
typedArrayTags[uint32Tag] = true;
typedArrayTags[argsTag] = typedArrayTags[arrayTag] =
typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =
typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =
typedArrayTags[errorTag] = typedArrayTags[funcTag] =
typedArrayTags[mapTag] = typedArrayTags[numberTag] =
typedArrayTags[objectTag] = typedArrayTags[regexpTag] =
typedArrayTags[setTag] = typedArrayTags[stringTag] =
typedArrayTags[weakMapTag] = false;

/**
 * The base implementation of `_.isTypedArray` without Node.js optimizations.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 */
function baseIsTypedArray(value) {
  return isObjectLike(value) &&
    isLength(value.length) && !!typedArrayTags[baseGetTag(value)];
}

module.exports = baseIsTypedArray;


/***/ }),

/***/ 503:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isPrototype = __webpack_require__(157),
    nativeKeys = __webpack_require__(83);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.
 *
 * @private
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 */
function baseKeys(object) {
  if (!isPrototype(object)) {
    return nativeKeys(object);
  }
  var result = [];
  for (var key in Object(object)) {
    if (hasOwnProperty.call(object, key) && key != 'constructor') {
      result.push(key);
    }
  }
  return result;
}

module.exports = baseKeys;


/***/ }),

/***/ 799:
/***/ ((module) => {

/**
 * The base implementation of `_.times` without support for iteratee shorthands
 * or max array length checks.
 *
 * @private
 * @param {number} n The number of times to invoke `iteratee`.
 * @param {Function} iteratee The function invoked per iteration.
 * @returns {Array} Returns the array of results.
 */
function baseTimes(n, iteratee) {
  var index = -1,
      result = Array(n);

  while (++index < n) {
    result[index] = iteratee(index);
  }
  return result;
}

module.exports = baseTimes;


/***/ }),

/***/ 498:
/***/ ((module) => {

/**
 * The base implementation of `_.unary` without support for storing metadata.
 *
 * @private
 * @param {Function} func The function to cap arguments for.
 * @returns {Function} Returns the new capped function.
 */
function baseUnary(func) {
  return function(value) {
    return func(value);
  };
}

module.exports = baseUnary;


/***/ }),

/***/ 761:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayMap = __webpack_require__(511);

/**
 * The base implementation of `_.values` and `_.valuesIn` which creates an
 * array of `object` property values corresponding to the property names
 * of `props`.
 *
 * @private
 * @param {Object} object The object to query.
 * @param {Array} props The property names to get values for.
 * @returns {Object} Returns the array of property values.
 */
function baseValues(object, props) {
  return arrayMap(props, function(key) {
    return object[key];
  });
}

module.exports = baseValues;


/***/ }),

/***/ 476:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

/** Detect free variable `global` from Node.js. */
var freeGlobal = typeof __webpack_require__.g == 'object' && __webpack_require__.g && __webpack_require__.g.Object === Object && __webpack_require__.g;

module.exports = freeGlobal;


/***/ }),

/***/ 49:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var Symbol = __webpack_require__(261);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */
var nativeObjectToString = objectProto.toString;

/** Built-in value references. */
var symToStringTag = Symbol ? Symbol.toStringTag : undefined;

/**
 * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
 *
 * @private
 * @param {*} value The value to query.
 * @returns {string} Returns the raw `toStringTag`.
 */
function getRawTag(value) {
  var isOwn = hasOwnProperty.call(value, symToStringTag),
      tag = value[symToStringTag];

  try {
    value[symToStringTag] = undefined;
    var unmasked = true;
  } catch (e) {}

  var result = nativeObjectToString.call(value);
  if (unmasked) {
    if (isOwn) {
      value[symToStringTag] = tag;
    } else {
      delete value[symToStringTag];
    }
  }
  return result;
}

module.exports = getRawTag;


/***/ }),

/***/ 640:
/***/ ((module) => {

/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/** Used to detect unsigned integer values. */
var reIsUint = /^(?:0|[1-9]\d*)$/;

/**
 * Checks if `value` is a valid array-like index.
 *
 * @private
 * @param {*} value The value to check.
 * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.
 * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.
 */
function isIndex(value, length) {
  var type = typeof value;
  length = length == null ? MAX_SAFE_INTEGER : length;

  return !!length &&
    (type == 'number' ||
      (type != 'symbol' && reIsUint.test(value))) &&
        (value > -1 && value % 1 == 0 && value < length);
}

module.exports = isIndex;


/***/ }),

/***/ 157:
/***/ ((module) => {

/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
 * Checks if `value` is likely a prototype object.
 *
 * @private
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.
 */
function isPrototype(value) {
  var Ctor = value && value.constructor,
      proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;

  return value === proto;
}

module.exports = isPrototype;


/***/ }),

/***/ 83:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var overArg = __webpack_require__(703);

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeKeys = overArg(Object.keys, Object);

module.exports = nativeKeys;


/***/ }),

/***/ 700:
/***/ ((module, exports, __webpack_require__) => {

/* module decorator */ module = __webpack_require__.nmd(module);
var freeGlobal = __webpack_require__(476);

/** Detect free variable `exports`. */
var freeExports =  true && exports && !exports.nodeType && exports;

/** Detect free variable `module`. */
var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Detect free variable `process` from Node.js. */
var freeProcess = moduleExports && freeGlobal.process;

/** Used to access faster Node.js helpers. */
var nodeUtil = (function() {
  try {
    // Use `util.types` for Node.js 10+.
    var types = freeModule && freeModule.require && freeModule.require('util').types;

    if (types) {
      return types;
    }

    // Legacy `process.binding('util')` for Node.js < 10.
    return freeProcess && freeProcess.binding && freeProcess.binding('util');
  } catch (e) {}
}());

module.exports = nodeUtil;


/***/ }),

/***/ 70:
/***/ ((module) => {

/** Used for built-in method references. */
var objectProto = Object.prototype;

/**
 * Used to resolve the
 * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
 * of values.
 */
var nativeObjectToString = objectProto.toString;

/**
 * Converts `value` to a string using `Object.prototype.toString`.
 *
 * @private
 * @param {*} value The value to convert.
 * @returns {string} Returns the converted string.
 */
function objectToString(value) {
  return nativeObjectToString.call(value);
}

module.exports = objectToString;


/***/ }),

/***/ 703:
/***/ ((module) => {

/**
 * Creates a unary function that invokes `func` with its argument transformed.
 *
 * @private
 * @param {Function} func The function to wrap.
 * @param {Function} transform The argument transform.
 * @returns {Function} Returns the new function.
 */
function overArg(func, transform) {
  return function(arg) {
    return func(transform(arg));
  };
}

module.exports = overArg;


/***/ }),

/***/ 898:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var freeGlobal = __webpack_require__(476);

/** Detect free variable `self`. */
var freeSelf = typeof self == 'object' && self && self.Object === Object && self;

/** Used as a reference to the global object. */
var root = freeGlobal || freeSelf || Function('return this')();

module.exports = root;


/***/ }),

/***/ 213:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(336),
    now = __webpack_require__(205),
    toNumber = __webpack_require__(598);

/** Error message constants. */
var FUNC_ERROR_TEXT = 'Expected a function';

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeMax = Math.max,
    nativeMin = Math.min;

/**
 * Creates a debounced function that delays invoking `func` until after `wait`
 * milliseconds have elapsed since the last time the debounced function was
 * invoked. The debounced function comes with a `cancel` method to cancel
 * delayed `func` invocations and a `flush` method to immediately invoke them.
 * Provide `options` to indicate whether `func` should be invoked on the
 * leading and/or trailing edge of the `wait` timeout. The `func` is invoked
 * with the last arguments provided to the debounced function. Subsequent
 * calls to the debounced function return the result of the last `func`
 * invocation.
 *
 * **Note:** If `leading` and `trailing` options are `true`, `func` is
 * invoked on the trailing edge of the timeout only if the debounced function
 * is invoked more than once during the `wait` timeout.
 *
 * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred
 * until to the next tick, similar to `setTimeout` with a timeout of `0`.
 *
 * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)
 * for details over the differences between `_.debounce` and `_.throttle`.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Function
 * @param {Function} func The function to debounce.
 * @param {number} [wait=0] The number of milliseconds to delay.
 * @param {Object} [options={}] The options object.
 * @param {boolean} [options.leading=false]
 *  Specify invoking on the leading edge of the timeout.
 * @param {number} [options.maxWait]
 *  The maximum time `func` is allowed to be delayed before it's invoked.
 * @param {boolean} [options.trailing=true]
 *  Specify invoking on the trailing edge of the timeout.
 * @returns {Function} Returns the new debounced function.
 * @example
 *
 * // Avoid costly calculations while the window size is in flux.
 * jQuery(window).on('resize', _.debounce(calculateLayout, 150));
 *
 * // Invoke `sendMail` when clicked, debouncing subsequent calls.
 * jQuery(element).on('click', _.debounce(sendMail, 300, {
 *   'leading': true,
 *   'trailing': false
 * }));
 *
 * // Ensure `batchLog` is invoked once after 1 second of debounced calls.
 * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });
 * var source = new EventSource('/stream');
 * jQuery(source).on('message', debounced);
 *
 * // Cancel the trailing debounced invocation.
 * jQuery(window).on('popstate', debounced.cancel);
 */
function debounce(func, wait, options) {
  var lastArgs,
      lastThis,
      maxWait,
      result,
      timerId,
      lastCallTime,
      lastInvokeTime = 0,
      leading = false,
      maxing = false,
      trailing = true;

  if (typeof func != 'function') {
    throw new TypeError(FUNC_ERROR_TEXT);
  }
  wait = toNumber(wait) || 0;
  if (isObject(options)) {
    leading = !!options.leading;
    maxing = 'maxWait' in options;
    maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
    trailing = 'trailing' in options ? !!options.trailing : trailing;
  }

  function invokeFunc(time) {
    var args = lastArgs,
        thisArg = lastThis;

    lastArgs = lastThis = undefined;
    lastInvokeTime = time;
    result = func.apply(thisArg, args);
    return result;
  }

  function leadingEdge(time) {
    // Reset any `maxWait` timer.
    lastInvokeTime = time;
    // Start the timer for the trailing edge.
    timerId = setTimeout(timerExpired, wait);
    // Invoke the leading edge.
    return leading ? invokeFunc(time) : result;
  }

  function remainingWait(time) {
    var timeSinceLastCall = time - lastCallTime,
        timeSinceLastInvoke = time - lastInvokeTime,
        timeWaiting = wait - timeSinceLastCall;

    return maxing
      ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)
      : timeWaiting;
  }

  function shouldInvoke(time) {
    var timeSinceLastCall = time - lastCallTime,
        timeSinceLastInvoke = time - lastInvokeTime;

    // Either this is the first call, activity has stopped and we're at the
    // trailing edge, the system time has gone backwards and we're treating
    // it as the trailing edge, or we've hit the `maxWait` limit.
    return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||
      (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));
  }

  function timerExpired() {
    var time = now();
    if (shouldInvoke(time)) {
      return trailingEdge(time);
    }
    // Restart the timer.
    timerId = setTimeout(timerExpired, remainingWait(time));
  }

  function trailingEdge(time) {
    timerId = undefined;

    // Only invoke if we have `lastArgs` which means `func` has been
    // debounced at least once.
    if (trailing && lastArgs) {
      return invokeFunc(time);
    }
    lastArgs = lastThis = undefined;
    return result;
  }

  function cancel() {
    if (timerId !== undefined) {
      clearTimeout(timerId);
    }
    lastInvokeTime = 0;
    lastArgs = lastCallTime = lastThis = timerId = undefined;
  }

  function flush() {
    return timerId === undefined ? result : trailingEdge(now());
  }

  function debounced() {
    var time = now(),
        isInvoking = shouldInvoke(time);

    lastArgs = arguments;
    lastThis = this;
    lastCallTime = time;

    if (isInvoking) {
      if (timerId === undefined) {
        return leadingEdge(lastCallTime);
      }
      if (maxing) {
        // Handle invocations in a tight loop.
        clearTimeout(timerId);
        timerId = setTimeout(timerExpired, wait);
        return invokeFunc(lastCallTime);
      }
    }
    if (timerId === undefined) {
      timerId = setTimeout(timerExpired, wait);
    }
    return result;
  }
  debounced.cancel = cancel;
  debounced.flush = flush;
  return debounced;
}

module.exports = debounce;


/***/ }),

/***/ 206:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseIsArguments = __webpack_require__(807),
    isObjectLike = __webpack_require__(446);

/** Used for built-in method references. */
var objectProto = Object.prototype;

/** Used to check objects for own properties. */
var hasOwnProperty = objectProto.hasOwnProperty;

/** Built-in value references. */
var propertyIsEnumerable = objectProto.propertyIsEnumerable;

/**
 * Checks if `value` is likely an `arguments` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an `arguments` object,
 *  else `false`.
 * @example
 *
 * _.isArguments(function() { return arguments; }());
 * // => true
 *
 * _.isArguments([1, 2, 3]);
 * // => false
 */
var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {
  return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&
    !propertyIsEnumerable.call(value, 'callee');
};

module.exports = isArguments;


/***/ }),

/***/ 515:
/***/ ((module) => {

/**
 * Checks if `value` is classified as an `Array` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an array, else `false`.
 * @example
 *
 * _.isArray([1, 2, 3]);
 * // => true
 *
 * _.isArray(document.body.children);
 * // => false
 *
 * _.isArray('abc');
 * // => false
 *
 * _.isArray(_.noop);
 * // => false
 */
var isArray = Array.isArray;

module.exports = isArray;


/***/ }),

/***/ 750:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isFunction = __webpack_require__(183),
    isLength = __webpack_require__(235);

/**
 * Checks if `value` is array-like. A value is considered array-like if it's
 * not a function and has a `value.length` that's an integer greater than or
 * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is array-like, else `false`.
 * @example
 *
 * _.isArrayLike([1, 2, 3]);
 * // => true
 *
 * _.isArrayLike(document.body.children);
 * // => true
 *
 * _.isArrayLike('abc');
 * // => true
 *
 * _.isArrayLike(_.noop);
 * // => false
 */
function isArrayLike(value) {
  return value != null && isLength(value.length) && !isFunction(value);
}

module.exports = isArrayLike;


/***/ }),

/***/ 391:
/***/ ((module, exports, __webpack_require__) => {

/* module decorator */ module = __webpack_require__.nmd(module);
var root = __webpack_require__(898),
    stubFalse = __webpack_require__(372);

/** Detect free variable `exports`. */
var freeExports =  true && exports && !exports.nodeType && exports;

/** Detect free variable `module`. */
var freeModule = freeExports && "object" == 'object' && module && !module.nodeType && module;

/** Detect the popular CommonJS extension `module.exports`. */
var moduleExports = freeModule && freeModule.exports === freeExports;

/** Built-in value references. */
var Buffer = moduleExports ? root.Buffer : undefined;

/* Built-in method references for those with the same name as other `lodash` methods. */
var nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;

/**
 * Checks if `value` is a buffer.
 *
 * @static
 * @memberOf _
 * @since 4.3.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.
 * @example
 *
 * _.isBuffer(new Buffer(2));
 * // => true
 *
 * _.isBuffer(new Uint8Array(2));
 * // => false
 */
var isBuffer = nativeIsBuffer || stubFalse;

module.exports = isBuffer;


/***/ }),

/***/ 183:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseGetTag = __webpack_require__(322),
    isObject = __webpack_require__(336);

/** `Object#toString` result references. */
var asyncTag = '[object AsyncFunction]',
    funcTag = '[object Function]',
    genTag = '[object GeneratorFunction]',
    proxyTag = '[object Proxy]';

/**
 * Checks if `value` is classified as a `Function` object.
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a function, else `false`.
 * @example
 *
 * _.isFunction(_);
 * // => true
 *
 * _.isFunction(/abc/);
 * // => false
 */
function isFunction(value) {
  if (!isObject(value)) {
    return false;
  }
  // The use of `Object#toString` avoids issues with the `typeof` operator
  // in Safari 9 which returns 'object' for typed arrays and other constructors.
  var tag = baseGetTag(value);
  return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;
}

module.exports = isFunction;


/***/ }),

/***/ 235:
/***/ ((module) => {

/** Used as references for various `Number` constants. */
var MAX_SAFE_INTEGER = 9007199254740991;

/**
 * Checks if `value` is a valid array-like length.
 *
 * **Note:** This method is loosely based on
 * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.
 * @example
 *
 * _.isLength(3);
 * // => true
 *
 * _.isLength(Number.MIN_VALUE);
 * // => false
 *
 * _.isLength(Infinity);
 * // => false
 *
 * _.isLength('3');
 * // => false
 */
function isLength(value) {
  return typeof value == 'number' &&
    value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;
}

module.exports = isLength;


/***/ }),

/***/ 336:
/***/ ((module) => {

/**
 * Checks if `value` is the
 * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)
 * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)
 *
 * @static
 * @memberOf _
 * @since 0.1.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is an object, else `false`.
 * @example
 *
 * _.isObject({});
 * // => true
 *
 * _.isObject([1, 2, 3]);
 * // => true
 *
 * _.isObject(_.noop);
 * // => true
 *
 * _.isObject(null);
 * // => false
 */
function isObject(value) {
  var type = typeof value;
  return value != null && (type == 'object' || type == 'function');
}

module.exports = isObject;


/***/ }),

/***/ 446:
/***/ ((module) => {

/**
 * Checks if `value` is object-like. A value is object-like if it's not `null`
 * and has a `typeof` result of "object".
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
 * @example
 *
 * _.isObjectLike({});
 * // => true
 *
 * _.isObjectLike([1, 2, 3]);
 * // => true
 *
 * _.isObjectLike(_.noop);
 * // => false
 *
 * _.isObjectLike(null);
 * // => false
 */
function isObjectLike(value) {
  return value != null && typeof value == 'object';
}

module.exports = isObjectLike;


/***/ }),

/***/ 735:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseGetTag = __webpack_require__(322),
    isObjectLike = __webpack_require__(446);

/** `Object#toString` result references. */
var symbolTag = '[object Symbol]';

/**
 * Checks if `value` is classified as a `Symbol` primitive or object.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.
 * @example
 *
 * _.isSymbol(Symbol.iterator);
 * // => true
 *
 * _.isSymbol('abc');
 * // => false
 */
function isSymbol(value) {
  return typeof value == 'symbol' ||
    (isObjectLike(value) && baseGetTag(value) == symbolTag);
}

module.exports = isSymbol;


/***/ }),

/***/ 781:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseIsTypedArray = __webpack_require__(180),
    baseUnary = __webpack_require__(498),
    nodeUtil = __webpack_require__(700);

/* Node.js helper references. */
var nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;

/**
 * Checks if `value` is classified as a typed array.
 *
 * @static
 * @memberOf _
 * @since 3.0.0
 * @category Lang
 * @param {*} value The value to check.
 * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.
 * @example
 *
 * _.isTypedArray(new Uint8Array);
 * // => true
 *
 * _.isTypedArray([]);
 * // => false
 */
var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;

module.exports = isTypedArray;


/***/ }),

/***/ 615:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var arrayLikeKeys = __webpack_require__(798),
    baseKeys = __webpack_require__(503),
    isArrayLike = __webpack_require__(750);

/**
 * Creates an array of the own enumerable property names of `object`.
 *
 * **Note:** Non-object values are coerced to objects. See the
 * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)
 * for more details.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property names.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.keys(new Foo);
 * // => ['a', 'b'] (iteration order is not guaranteed)
 *
 * _.keys('hi');
 * // => ['0', '1']
 */
function keys(object) {
  return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);
}

module.exports = keys;


/***/ }),

/***/ 205:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var root = __webpack_require__(898);

/**
 * Gets the timestamp of the number of milliseconds that have elapsed since
 * the Unix epoch (1 January 1970 00:00:00 UTC).
 *
 * @static
 * @memberOf _
 * @since 2.4.0
 * @category Date
 * @returns {number} Returns the timestamp.
 * @example
 *
 * _.defer(function(stamp) {
 *   console.log(_.now() - stamp);
 * }, _.now());
 * // => Logs the number of milliseconds it took for the deferred invocation.
 */
var now = function() {
  return root.Date.now();
};

module.exports = now;


/***/ }),

/***/ 372:
/***/ ((module) => {

/**
 * This method returns `false`.
 *
 * @static
 * @memberOf _
 * @since 4.13.0
 * @category Util
 * @returns {boolean} Returns `false`.
 * @example
 *
 * _.times(2, _.stubFalse);
 * // => [false, false]
 */
function stubFalse() {
  return false;
}

module.exports = stubFalse;


/***/ }),

/***/ 598:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var isObject = __webpack_require__(336),
    isSymbol = __webpack_require__(735);

/** Used as references for various `Number` constants. */
var NAN = 0 / 0;

/** Used to match leading and trailing whitespace. */
var reTrim = /^\s+|\s+$/g;

/** Used to detect bad signed hexadecimal string values. */
var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;

/** Used to detect binary string values. */
var reIsBinary = /^0b[01]+$/i;

/** Used to detect octal string values. */
var reIsOctal = /^0o[0-7]+$/i;

/** Built-in method references without a dependency on `root`. */
var freeParseInt = parseInt;

/**
 * Converts `value` to a number.
 *
 * @static
 * @memberOf _
 * @since 4.0.0
 * @category Lang
 * @param {*} value The value to process.
 * @returns {number} Returns the number.
 * @example
 *
 * _.toNumber(3.2);
 * // => 3.2
 *
 * _.toNumber(Number.MIN_VALUE);
 * // => 5e-324
 *
 * _.toNumber(Infinity);
 * // => Infinity
 *
 * _.toNumber('3.2');
 * // => 3.2
 */
function toNumber(value) {
  if (typeof value == 'number') {
    return value;
  }
  if (isSymbol(value)) {
    return NAN;
  }
  if (isObject(value)) {
    var other = typeof value.valueOf == 'function' ? value.valueOf() : value;
    value = isObject(other) ? (other + '') : other;
  }
  if (typeof value != 'string') {
    return value === 0 ? value : +value;
  }
  value = value.replace(reTrim, '');
  var isBinary = reIsBinary.test(value);
  return (isBinary || reIsOctal.test(value))
    ? freeParseInt(value.slice(2), isBinary ? 2 : 8)
    : (reIsBadHex.test(value) ? NAN : +value);
}

module.exports = toNumber;


/***/ }),

/***/ 319:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

var baseValues = __webpack_require__(761),
    keys = __webpack_require__(615);

/**
 * Creates an array of the own enumerable string keyed property values of `object`.
 *
 * **Note:** Non-object values are coerced to objects.
 *
 * @static
 * @since 0.1.0
 * @memberOf _
 * @category Object
 * @param {Object} object The object to query.
 * @returns {Array} Returns the array of property values.
 * @example
 *
 * function Foo() {
 *   this.a = 1;
 *   this.b = 2;
 * }
 *
 * Foo.prototype.c = 3;
 *
 * _.values(new Foo);
 * // => [1, 2] (iteration order is not guaranteed)
 *
 * _.values('hi');
 * // => ['h', 'i']
 */
function values(object) {
  return object == null ? [] : baseValues(object, keys(object));
}

module.exports = values;


/***/ }),

/***/ 424:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => __WEBPACK_DEFAULT_EXPORT__
/* harmony export */ });
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(173);
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".gm-rp__root[data-v-3204fa8a] {\n  overflow: hidden auto;\n  right: 0;\n  bottom: 0;\n  top: 0;\n  left: 0;\n  outline: none;\n  position: fixed;\n  z-index: 1000;\n  background-color: rgba(0, 0, 0, 0.65);\n}\n.gm-rp__root--ctrl-type-wrap[data-v-3204fa8a] {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  height: 40px;\n}\n.gm-rp__root--container[data-v-3204fa8a] {\n  position: absolute;\n  left: 50%;\n  box-sizing: border-box;\n  pointer-events: auto;\n  top: 40%;\n  transform: translate(-50%, -40%);\n  background: #fff;\n  border-radius: 4px;\n  box-shadow: 0 0 24px 0 rgba(102, 102, 102, 0.08);\n  height: 640px;\n  max-height: 100%;\n  max-width: 100%;\n  width: 720px;\n  overflow-y: auto;\n}\n.gm-rp__root--set-wrap[data-v-3204fa8a] {\n  border: #36cfc9 1px solid;\n  border-radius: 4px;\n  margin: 15px 30px;\n  padding: 16px;\n  position: relative;\n}\n.gm-rp__root--set-del[data-v-3204fa8a] {\n  position: absolute;\n  top: -12px;\n  right: -12px;\n}\n.gm-rp__root--set-domain-input[data-v-3204fa8a] {\n  width: 300px;\n  margin-right: 10px;\n}\n.gm-rp__root--set-domain-head[data-v-3204fa8a] {\n  height: 40px;\n  display: flex;\n  align-items: center;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 551:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => __WEBPACK_DEFAULT_EXPORT__
/* harmony export */ });
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(173);
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".gm-rp__button[data-v-535fafc8] {\n  appearance: none;\n  text-transform: none;\n  position: relative;\n  display: inline-flex;\n  justify-content: center;\n  align-items: center;\n  white-space: nowrap;\n  cursor: pointer;\n  transition: all 0.3s cubic-bezier(0.645, 0.045, 0.355, 1);\n  user-select: none;\n  touch-action: manipulation;\n  height: 32px;\n  padding: 0 15px;\n  font-size: 14px;\n  border-radius: 2px;\n  border: 1px solid #d9d9d9;\n  outline: 0;\n  color: #fff;\n  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.12);\n  box-shadow: 0 2px 0 rgba(0, 0, 0, 0.045);\n}\n.gm-rp__button--primary[data-v-535fafc8] {\n  background-color: #13c2c2;\n  border-color: #13c2c2;\n}\n.gm-rp__button--primary[data-v-535fafc8]:hover {\n  background-color: #36cfc9;\n  border-color: #36cfc9;\n}\n.gm-rp__button--primary[data-v-535fafc8]:active {\n  background-color: #00474f;\n  border-color: #00474f;\n}\n.gm-rp__button--secondary[data-v-535fafc8] {\n  color: rgba(0, 0, 0, 0.65);\n  background-color: #fff;\n  border-color: #bfbfbf;\n}\n.gm-rp__button--secondary[data-v-535fafc8]:hover {\n  border-color: #36cfc9;\n  color: #36cfc9;\n}\n.gm-rp__button--secondary[data-v-535fafc8]:active {\n  border-color: #006d75;\n  color: #006d75;\n}\n.gm-rp__button--size-default[data-v-535fafc8] {\n  min-width: 32px;\n}\n.gm-rp__button--size-small[data-v-535fafc8] {\n  height: 24px;\n  min-width: 24px;\n  padding: 0 12px;\n}\n.gm-rp__button--shape-circle[data-v-535fafc8] {\n  border-radius: 50%;\n  padding: 0;\n}\n.gm-rp__button--shape-round[data-v-535fafc8] {\n  border-radius: 32px;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 935:
/***/ ((module, __webpack_exports__, __webpack_require__) => {

"use strict";
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */   "Z": () => __WEBPACK_DEFAULT_EXPORT__
/* harmony export */ });
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(173);
/* harmony import */ var _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
// Imports

var ___CSS_LOADER_EXPORT___ = _yarn_$$virtual_css_loader_virtual_cfb3398efa_5_yarn_berry_cache_css_loader_npm_5_0_1_d2034d30e0_7_zip_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, "[class*='gm-rp__'] {\n  font-size: 14px;\n  font-family: Penrose, 'PingFang SC', 'Hiragino Sans GB', Tahoma, Arial, 'Lantinghei SC', 'Microsoft YaHei', '\\5FAE软雅黑', sans-serif;\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n  font-feature-settings: 'tnum';\n  font-weight: 400;\n}\n.gm-rp__page-root-fixed-button {\n  position: fixed;\n  top: 148px;\n  left: 0;\n  width: 40px;\n  height: 40px;\n  z-index: 4000;\n  cursor: pointer;\n  opacity: 0.5;\n  transition: opacity 0.3s;\n  box-shadow: 0 0 10px 0px rgb(0 0 0 / 35%);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  background-color: #b5f5ec;\n  color: rgba(0, 0, 0, 0.65);\n}\n.gm-rp__page-root-fixed-button:hover {\n  opacity: 1;\n}\n.gm-rp__page-root-fixed-button.hidden {\n  opacity: 0;\n  pointer-events: none;\n}\n", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);


/***/ }),

/***/ 173:
/***/ ((module) => {

"use strict";


/*
  MIT License http://www.opensource.org/licenses/mit-license.php
  Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
// eslint-disable-next-line func-names
module.exports = function (cssWithMappingToString) {
  var list = []; // return the list of modules as css string

  list.toString = function toString() {
    return this.map(function (item) {
      var content = cssWithMappingToString(item);

      if (item[2]) {
        return "@media ".concat(item[2], " {").concat(content, "}");
      }

      return content;
    }).join('');
  }; // import a list of modules into the list
  // eslint-disable-next-line func-names


  list.i = function (modules, mediaQuery, dedupe) {
    if (typeof modules === 'string') {
      // eslint-disable-next-line no-param-reassign
      modules = [[null, modules, '']];
    }

    var alreadyImportedModules = {};

    if (dedupe) {
      for (var i = 0; i < this.length; i++) {
        // eslint-disable-next-line prefer-destructuring
        var id = this[i][0];

        if (id != null) {
          alreadyImportedModules[id] = true;
        }
      }
    }

    for (var _i = 0; _i < modules.length; _i++) {
      var item = [].concat(modules[_i]);

      if (dedupe && alreadyImportedModules[item[0]]) {
        // eslint-disable-next-line no-continue
        continue;
      }

      if (mediaQuery) {
        if (!item[2]) {
          item[2] = mediaQuery;
        } else {
          item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
        }
      }

      list.push(item);
    }
  };

  return list;
};

/***/ }),

/***/ 123:
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {

"use strict";


var isOldIE = function isOldIE() {
  var memo;
  return function memorize() {
    if (typeof memo === 'undefined') {
      // Test for IE <= 9 as proposed by Browserhacks
      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
      // Tests for existence of standard globals is to allow style-loader
      // to operate correctly into non-standard environments
      // @see https://github.com/webpack-contrib/style-loader/issues/177
      memo = Boolean(window && document && document.all && !window.atob);
    }

    return memo;
  };
}();

var getTarget = function getTarget() {
  var memo = {};
  return function memorize(target) {
    if (typeof memo[target] === 'undefined') {
      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself

      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
        try {
          // This will throw an exception if access to iframe is blocked
          // due to cross-origin restrictions
          styleTarget = styleTarget.contentDocument.head;
        } catch (e) {
          // istanbul ignore next
          styleTarget = null;
        }
      }

      memo[target] = styleTarget;
    }

    return memo[target];
  };
}();

var stylesInDom = [];

function getIndexByIdentifier(identifier) {
  var result = -1;

  for (var i = 0; i < stylesInDom.length; i++) {
    if (stylesInDom[i].identifier === identifier) {
      result = i;
      break;
    }
  }

  return result;
}

function modulesToDom(list, options) {
  var idCountMap = {};
  var identifiers = [];

  for (var i = 0; i < list.length; i++) {
    var item = list[i];
    var id = options.base ? item[0] + options.base : item[0];
    var count = idCountMap[id] || 0;
    var identifier = "".concat(id, " ").concat(count);
    idCountMap[id] = count + 1;
    var index = getIndexByIdentifier(identifier);
    var obj = {
      css: item[1],
      media: item[2],
      sourceMap: item[3]
    };

    if (index !== -1) {
      stylesInDom[index].references++;
      stylesInDom[index].updater(obj);
    } else {
      stylesInDom.push({
        identifier: identifier,
        updater: addStyle(obj, options),
        references: 1
      });
    }

    identifiers.push(identifier);
  }

  return identifiers;
}

function insertStyleElement(options) {
  var style = document.createElement('style');
  var attributes = options.attributes || {};

  if (typeof attributes.nonce === 'undefined') {
    var nonce =  true ? __webpack_require__.nc : 0;

    if (nonce) {
      attributes.nonce = nonce;
    }
  }

  Object.keys(attributes).forEach(function (key) {
    style.setAttribute(key, attributes[key]);
  });

  if (typeof options.insert === 'function') {
    options.insert(style);
  } else {
    var target = getTarget(options.insert || 'head');

    if (!target) {
      throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
    }

    target.appendChild(style);
  }

  return style;
}

function removeStyleElement(style) {
  // istanbul ignore if
  if (style.parentNode === null) {
    return false;
  }

  style.parentNode.removeChild(style);
}
/* istanbul ignore next  */


var replaceText = function replaceText() {
  var textStore = [];
  return function replace(index, replacement) {
    textStore[index] = replacement;
    return textStore.filter(Boolean).join('\n');
  };
}();

function applyToSingletonTag(style, index, remove, obj) {
  var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE

  /* istanbul ignore if  */

  if (style.styleSheet) {
    style.styleSheet.cssText = replaceText(index, css);
  } else {
    var cssNode = document.createTextNode(css);
    var childNodes = style.childNodes;

    if (childNodes[index]) {
      style.removeChild(childNodes[index]);
    }

    if (childNodes.length) {
      style.insertBefore(cssNode, childNodes[index]);
    } else {
      style.appendChild(cssNode);
    }
  }
}

function applyToTag(style, options, obj) {
  var css = obj.css;
  var media = obj.media;
  var sourceMap = obj.sourceMap;

  if (media) {
    style.setAttribute('media', media);
  } else {
    style.removeAttribute('media');
  }

  if (sourceMap && typeof btoa !== 'undefined') {
    css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
  } // For old IE

  /* istanbul ignore if  */


  if (style.styleSheet) {
    style.styleSheet.cssText = css;
  } else {
    while (style.firstChild) {
      style.removeChild(style.firstChild);
    }

    style.appendChild(document.createTextNode(css));
  }
}

var singleton = null;
var singletonCounter = 0;

function addStyle(obj, options) {
  var style;
  var update;
  var remove;

  if (options.singleton) {
    var styleIndex = singletonCounter++;
    style = singleton || (singleton = insertStyleElement(options));
    update = applyToSingletonTag.bind(null, style, styleIndex, false);
    remove = applyToSingletonTag.bind(null, style, styleIndex, true);
  } else {
    style = insertStyleElement(options);
    update = applyToTag.bind(null, style, options);

    remove = function remove() {
      removeStyleElement(style);
    };
  }

  update(obj);
  return function updateStyle(newObj) {
    if (newObj) {
      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
        return;
      }

      update(obj = newObj);
    } else {
      remove();
    }
  };
}

module.exports = function (list, options) {
  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
  // tags it will allow on a page

  if (!options.singleton && typeof options.singleton !== 'boolean') {
    options.singleton = isOldIE();
  }

  list = list || [];
  var lastIdentifiers = modulesToDom(list, options);
  return function update(newList) {
    newList = newList || [];

    if (Object.prototype.toString.call(newList) !== '[object Array]') {
      return;
    }

    for (var i = 0; i < lastIdentifiers.length; i++) {
      var identifier = lastIdentifiers[i];
      var index = getIndexByIdentifier(identifier);
      stylesInDom[index].references--;
    }

    var newLastIdentifiers = modulesToDom(newList, options);

    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
      var _identifier = lastIdentifiers[_i];

      var _index = getIndexByIdentifier(_identifier);

      if (stylesInDom[_index].references === 0) {
        stylesInDom[_index].updater();

        stylesInDom.splice(_index, 1);
      }
    }

    lastIdentifiers = newLastIdentifiers;
  };
};

/***/ })

/******/ 	});
/************************************************************************/
/******/ 	// The module cache
/******/ 	var __webpack_module_cache__ = {};
/******/ 	
/******/ 	// The require function
/******/ 	function __webpack_require__(moduleId) {
/******/ 		// Check if module is in cache
/******/ 		if(__webpack_module_cache__[moduleId]) {
/******/ 			return __webpack_module_cache__[moduleId].exports;
/******/ 		}
/******/ 		// Create a new module (and put it into the cache)
/******/ 		var module = __webpack_module_cache__[moduleId] = {
/******/ 			id: moduleId,
/******/ 			loaded: false,
/******/ 			exports: {}
/******/ 		};
/******/ 	
/******/ 		// Execute the module function
/******/ 		__webpack_modules__[moduleId](module, module.exports, __webpack_require__);
/******/ 	
/******/ 		// Flag the module as loaded
/******/ 		module.loaded = true;
/******/ 	
/******/ 		// Return the exports of the module
/******/ 		return module.exports;
/******/ 	}
/******/ 	
/************************************************************************/
/******/ 	/* webpack/runtime/compat get default export */
/******/ 	(() => {
/******/ 		// getDefaultExport function for compatibility with non-harmony modules
/******/ 		__webpack_require__.n = (module) => {
/******/ 			var getter = module && module.__esModule ?
/******/ 				() => module['default'] :
/******/ 				() => module;
/******/ 			__webpack_require__.d(getter, { a: getter });
/******/ 			return getter;
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/define property getters */
/******/ 	(() => {
/******/ 		// define getter functions for harmony exports
/******/ 		__webpack_require__.d = (exports, definition) => {
/******/ 			for(var key in definition) {
/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
/******/ 				}
/******/ 			}
/******/ 		};
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/global */
/******/ 	(() => {
/******/ 		__webpack_require__.g = (function() {
/******/ 			if (typeof globalThis === 'object') return globalThis;
/******/ 			try {
/******/ 				return this || new Function('return this')();
/******/ 			} catch (e) {
/******/ 				if (typeof window === 'object') return window;
/******/ 			}
/******/ 		})();
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
/******/ 	(() => {
/******/ 		__webpack_require__.o = (obj, prop) => Object.prototype.hasOwnProperty.call(obj, prop)
/******/ 	})();
/******/ 	
/******/ 	/* webpack/runtime/node module decorator */
/******/ 	(() => {
/******/ 		__webpack_require__.nmd = (module) => {
/******/ 			module.paths = [];
/******/ 			if (!module.children) module.children = [];
/******/ 			return module;
/******/ 		};
/******/ 	})();
/******/ 	
/************************************************************************/
(() => {
"use strict";

;// CONCATENATED MODULE: ./src/common/ctx.ts
const vmCtx = typeof unsafeWindow !== 'undefined' ? unsafeWindow : window;

;// CONCATENATED MODULE: ./src/common/utils.ts

function safeParse(str) {
    try {
        return JSON.parse(str);
    }
    catch (error) {
        return str;
    }
}
function isPromise(obj) {
    return (!!obj &&
        (typeof obj === 'object' || typeof obj === 'function') &&
        typeof obj.then === 'function');
}
function uuid4() {
    return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {
        var r = (Math.random() * 16) | 0, v = c == 'x' ? r : (r & 0x3) | 0x8;
        return v.toString(16);
    });
}
function isMatchUrl(matchRule, url) {
    if (/^\/.*\/$/.test(matchRule)) {
        return new RegExp(matchRule, 'ig').test(url);
    }
    return url.includes(matchRule);
}
function findPageOriginList(deep = 3) {
    const result = [];
    result.push(vmCtx.location.origin);
    function walkIn(doc, lvl = 1) {
        if (lvl >= deep || !doc) {
            return;
        }
        doc.querySelectorAll('iframe').forEach(ife => {
            if ((ife === null || ife === void 0 ? void 0 : ife.src) && /^http/i.test(ife.src)) {
                result.push(ife.src);
            }
            walkIn(ife.contentDocument, lvl + 1);
        });
    }
    walkIn(document, 1);
    return [...new Set(result)];
}

;// CONCATENATED MODULE: ./src/common/index.ts



const cache = new WeakMap();
const NAMESPACE = vmCtx.location.origin;
const PREFIX = 'gm-rp';
function ns(c = '') {
    return `${PREFIX}__${c}`;
}

// EXTERNAL MODULE: ../../../../.yarn/berry/cache/lodash-npm-4.17.20-c0db62021c-7.zip/node_modules/lodash/values.js
var values = __webpack_require__(319);
var values_default = /*#__PURE__*/__webpack_require__.n(values);
// EXTERNAL MODULE: ../../../../.yarn/berry/cache/lodash-npm-4.17.20-c0db62021c-7.zip/node_modules/lodash/debounce.js
var debounce = __webpack_require__(213);
var debounce_default = /*#__PURE__*/__webpack_require__.n(debounce);
;// CONCATENATED MODULE: ./src/data/index.ts



// const _key = (k: string) => `${NAMESPACE}_${k}`;
const KEY_SET = 'all_set';
const Store = {
    NAMESPACE: NAMESPACE,
    getStoreObject() {
        return GM_getValue(KEY_SET) || {};
    },
    getSetList() {
        let res = values_default()(Store.getStoreObject());
        res = Array.isArray(res) ? res : [];
        return res;
    },
    getMatchedSetList() {
        const origins = findPageOriginList();
        return Store.getSetList().filter(it => origins.some(origin => isMatchUrl(it.domainTest, origin)));
    },
    findCurrentSet() {
        const ruleSet = Store.getSetList().find(it => new RegExp(it.domainTest, 'ig').test(NAMESPACE)) || {
            id: uuid4(),
            domainTest: NAMESPACE,
            rules: [],
        };
        return ruleSet;
    },
    updateSetList: debounce_default()((input) => {
        const store = Store.getStoreObject();
        input.forEach(it => {
            const target = store[it.id];
            store[it.id] = target ? Object.assign(target, it) : it;
        });
        GM_setValue(KEY_SET, store);
    }, 2000),
    deleteSetList(ids) {
        const store = Store.getStoreObject();
        ids.forEach(id => {
            delete store[id];
        });
        GM_setValue(KEY_SET, store);
    },
};

;// CONCATENATED MODULE: ./src/proxy/fetch.ts
var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};


function proxyRes(response) {
    const ruleSet = Store.findCurrentSet();
    const matchedRule = ruleSet.rules.find(it => isMatchUrl(it.apiTest, response.url));
    return matchedRule === null || matchedRule === void 0 ? void 0 : matchedRule.response;
}
function log({ method, url, status, response }) {
    GM_log(`❗️ [fetch] Response is proxyed:\n`);
    (console.table || GM_log)({
        method,
        url,
        status,
        'proxyed response': response,
    });
}
if (typeof Response !== 'undefined') {
    const nativeFetch = vmCtx.fetch;
    const nativeJson = Response.prototype.json;
    const nativeText = Response.prototype.text;
    Response.prototype.json = function (...args) {
        return __awaiter(this, void 0, void 0, function* () {
            const nativeRes = yield nativeJson.apply(this, args);
            const payload = cache.get(this);
            if (payload === null || payload === void 0 ? void 0 : payload.proxyedResponse) {
                log({
                    method: payload.method,
                    url: this.url,
                    status: this.status,
                    response: payload.proxyedResponse,
                });
                return JSON.parse(payload.proxyedResponse);
            }
            return nativeRes;
        });
    };
    Response.prototype.text = function (...args) {
        return __awaiter(this, void 0, void 0, function* () {
            const nativeRes = yield nativeText.apply(this, args);
            const payload = cache.get(this);
            if (payload === null || payload === void 0 ? void 0 : payload.proxyedResponse) {
                log({
                    method: payload.method,
                    url: this.url,
                    status: this.status,
                    response: payload.proxyedResponse,
                });
                return payload.proxyedResponse;
            }
            return nativeRes;
        });
    };
    vmCtx.fetch = function (input, init, ...rest) {
        return __awaiter(this, void 0, void 0, function* () {
            let method = 'GET';
            if (input instanceof Request) {
                method = input.method;
            }
            else {
                method = (init === null || init === void 0 ? void 0 : init.method) || method;
            }
            const res = yield nativeFetch.apply(this, [input, init, ...rest]);
            const proxyedResponse = proxyRes(res);
            cache.set(res, {
                method,
                url: res.url,
                proxyedResponse,
            });
            return res;
        });
    };
}

;// CONCATENATED MODULE: ./src/proxy/xhr.ts
var __classPrivateFieldGet = (undefined && undefined.__classPrivateFieldGet) || function (receiver, privateMap) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to get private field on non-instance");
    }
    return privateMap.get(receiver);
};
var __classPrivateFieldSet = (undefined && undefined.__classPrivateFieldSet) || function (receiver, privateMap, value) {
    if (!privateMap.has(receiver)) {
        throw new TypeError("attempted to set private field on non-instance");
    }
    privateMap.set(receiver, value);
    return value;
};
var _mockResponse, _url, _method, _a;


const NativeXMLHttpRequest = vmCtx.XMLHttpRequest;
vmCtx.XMLHttpRequest = (_a = class extends (NativeXMLHttpRequest) {
        constructor() {
            super();
            _mockResponse.set(this, void 0);
            _url.set(this, void 0);
            _method.set(this, void 0);
            this.addEventListener('readystatechange', () => {
                if (this.readyState !== 4)
                    return;
                const ruleSet = Store.findCurrentSet();
                const matchedRule = ruleSet.rules.find(it => isMatchUrl(it.apiTest, __classPrivateFieldGet(this, _url)));
                if (!(matchedRule === null || matchedRule === void 0 ? void 0 : matchedRule.response)) {
                    return;
                }
                __classPrivateFieldSet(this, _mockResponse, matchedRule.response);
                GM_log(`❗️ [XHR] Response is proxyed:\n`);
                (console.table || GM_log)({
                    method: __classPrivateFieldGet(this, _method),
                    url: __classPrivateFieldGet(this, _url),
                    status: this.status,
                    'proxyed response': __classPrivateFieldGet(this, _mockResponse),
                });
            });
        }
        get response() {
            return __classPrivateFieldGet(this, _mockResponse) || super.response;
        }
        get responseText() {
            return __classPrivateFieldGet(this, _mockResponse) || super.responseText;
        }
        open(method, url, ...rest) {
            __classPrivateFieldSet(this, _method, method);
            __classPrivateFieldSet(this, _url, url);
            if (/^(https?:\/\/)|(\/\/)/.test(url)) {
                __classPrivateFieldSet(this, _url, url);
            }
            else {
                __classPrivateFieldSet(this, _url, `${location.origin}/${url.replace(/^\//, '')}`);
            }
            // @ts-ignore
            return super.open(method, url, ...rest);
        }
    },
    _mockResponse = new WeakMap(),
    _url = new WeakMap(),
    _method = new WeakMap(),
    _a);

// EXTERNAL MODULE: ./.yarn/$$virtual/style-loader-virtual-9cffe23b25/5/.yarn/berry/cache/style-loader-npm-2.0.0-b9a5c4a2aa-7.zip/node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js
var injectStylesIntoStyleTag = __webpack_require__(123);
var injectStylesIntoStyleTag_default = /*#__PURE__*/__webpack_require__.n(injectStylesIntoStyleTag);
// EXTERNAL MODULE: ./.yarn/$$virtual/css-loader-virtual-cfb3398efa/5/.yarn/berry/cache/css-loader-npm-5.0.1-d2034d30e0-7.zip/node_modules/css-loader/dist/cjs.js!./.yarn/$$virtual/less-loader-virtual-ecae940d78/5/.yarn/berry/cache/less-loader-npm-7.1.0-515a1e35fe-7.zip/node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!./src/global.less
var global = __webpack_require__(935);
;// CONCATENATED MODULE: ./src/global.less

            

var options = {};

options.insert = "head";
options.singleton = false;

var update = injectStylesIntoStyleTag_default()(global/* default */.Z, options);



/* harmony default export */ const src_global = (global/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: external "Vue"
const external_Vue_namespaceObject = Vue;
;// CONCATENATED MODULE: ../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/Setting/Root.vue?vue&type=template&id=3204fa8a&scoped=true

const _withId = /*#__PURE__*/(0,external_Vue_namespaceObject.withScopeId)("data-v-3204fa8a")

;(0,external_Vue_namespaceObject.pushScopeId)("data-v-3204fa8a")
const _hoisted_1 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" + 新增规则集合 ")
const _hoisted_2 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" X ")
const _hoisted_3 = /*#__PURE__*/(0,external_Vue_namespaceObject.createVNode)("label", null, "域名匹配规则:", -1)
const _hoisted_4 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" 添加 Api 规则 ")
const _hoisted_5 = /*#__PURE__*/(0,external_Vue_namespaceObject.createVNode)("hr", null, null, -1)
const _hoisted_6 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" X ")
const _hoisted_7 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" Api 匹配规则: ")
const _hoisted_8 = /*#__PURE__*/(0,external_Vue_namespaceObject.createVNode)("br", null, null, -1)
const _hoisted_9 = /*#__PURE__*/(0,external_Vue_namespaceObject.createTextVNode)(" Mock Response(仅 JSON): ")
const _hoisted_10 = /*#__PURE__*/(0,external_Vue_namespaceObject.createVNode)("br", null, null, -1)
;(0,external_Vue_namespaceObject.popScopeId)()

const render = /*#__PURE__*/_withId((_ctx, _cache, $props, $setup, $data, $options) => {
  const _component_Button = (0,external_Vue_namespaceObject.resolveComponent)("Button")

  return (0,external_Vue_namespaceObject.withDirectives)(((0,external_Vue_namespaceObject.openBlock)(), (0,external_Vue_namespaceObject.createBlock)("div", {
    class: _ctx.cls,
    onClick: _cache[1] || (_cache[1] = (0,external_Vue_namespaceObject.withModifiers)((...args) => (_ctx.close && _ctx.close(...args)), ["self"]))
  }, [
    (0,external_Vue_namespaceObject.createVNode)("div", {
      class: `${_ctx.cls}--container`
    }, [
      (0,external_Vue_namespaceObject.createVNode)("div", {
        class: `${_ctx.cls}--ctrl-type-wrap`
      }, [
        ((0,external_Vue_namespaceObject.openBlock)(true), (0,external_Vue_namespaceObject.createBlock)(external_Vue_namespaceObject.Fragment, null, (0,external_Vue_namespaceObject.renderList)(_ctx.ctrlList, (item, index) => {
          return ((0,external_Vue_namespaceObject.openBlock)(), (0,external_Vue_namespaceObject.createBlock)(_component_Button, {
            key: index,
            onClick: $event => (_ctx.showType = item[0]),
            type: _ctx.showType === item[0] ? 'primary' : 'secondary',
            style: {"width":"120px"}
          }, {
            default: _withId(() => [
              (0,external_Vue_namespaceObject.createTextVNode)((0,external_Vue_namespaceObject.toDisplayString)(item[1]) + " " + (0,external_Vue_namespaceObject.toDisplayString)(_ctx.showType === item[0] ? _ctx.state.matchedSetList.length : ''), 1)
            ]),
            _: 2
          }, 1032, ["onClick", "type"]))
        }), 128))
      ], 2),
      (0,external_Vue_namespaceObject.createVNode)(_component_Button, {
        type: "primary",
        onClick: _ctx.handleAddSet,
        style: {
          position: 'absolute',
          top: 0,
          left: 0,
        }
      }, {
        default: _withId(() => [
          _hoisted_1
        ]),
        _: 1
      }, 8, ["onClick"]),
      ((0,external_Vue_namespaceObject.openBlock)(true), (0,external_Vue_namespaceObject.createBlock)(external_Vue_namespaceObject.Fragment, null, (0,external_Vue_namespaceObject.renderList)(_ctx.state.matchedSetList, (it, idx) => {
        return ((0,external_Vue_namespaceObject.openBlock)(), (0,external_Vue_namespaceObject.createBlock)("div", {
          key: it.id,
          class: `${_ctx.cls}--set-wrap`
        }, [
          (0,external_Vue_namespaceObject.createVNode)(_component_Button, {
            class: `${_ctx.cls}--set-del`,
            size: "small",
            shape: "circle",
            onClick: $event => (_ctx.handleDelSet(it, _ctx.i))
          }, {
            default: _withId(() => [
              _hoisted_2
            ]),
            _: 2
          }, 1032, ["class", "onClick"]),
          (0,external_Vue_namespaceObject.createVNode)("div", {
            class: `${_ctx.cls}--set-domain-head`
          }, [
            _hoisted_3,
            (0,external_Vue_namespaceObject.withDirectives)((0,external_Vue_namespaceObject.createVNode)("input", {
              "onUpdate:modelValue": $event => (it.domainTest = $event),
              class: `${_ctx.cls}--set-domain-input`,
              placeholder: "请输入"
            }, null, 10, ["onUpdate:modelValue"]), [
              [external_Vue_namespaceObject.vModelText, it.domainTest]
            ]),
            (0,external_Vue_namespaceObject.createVNode)(_component_Button, {
              type: "primary",
              onClick: () => _ctx.handleAddRule(idx),
              size: "small"
            }, {
              default: _withId(() => [
                _hoisted_4
              ]),
              _: 2
            }, 1032, ["onClick"])
          ], 2),
          _hoisted_5,
          ((0,external_Vue_namespaceObject.openBlock)(true), (0,external_Vue_namespaceObject.createBlock)(external_Vue_namespaceObject.Fragment, null, (0,external_Vue_namespaceObject.renderList)(it.rules, (rule, idx2) => {
            return ((0,external_Vue_namespaceObject.openBlock)(), (0,external_Vue_namespaceObject.createBlock)("div", {
              key: rule.id,
              style: {"padding":"0 10px","margin":"10px 0"}
            }, [
              (0,external_Vue_namespaceObject.createVNode)("div", null, [
                (0,external_Vue_namespaceObject.createVNode)("label", null, [
                  (0,external_Vue_namespaceObject.createTextVNode)(" Rule " + (0,external_Vue_namespaceObject.toDisplayString)(idx2 + 1) + " ---- ", 1),
                  (0,external_Vue_namespaceObject.createVNode)(_component_Button, {
                    class: `${_ctx.cls}--set-del-rule`,
                    size: "small",
                    shape: "circle",
                    onClick: $event => (_ctx.handleDelRule(rule, idx, idx2))
                  }, {
                    default: _withId(() => [
                      _hoisted_6
                    ]),
                    _: 2
                  }, 1032, ["class", "onClick"])
                ]),
                (0,external_Vue_namespaceObject.createVNode)("div", null, [
                  _hoisted_7,
                  _hoisted_8,
                  (0,external_Vue_namespaceObject.withDirectives)((0,external_Vue_namespaceObject.createVNode)("input", {
                    "onUpdate:modelValue": $event => (rule.apiTest = $event),
                    style: {"width":"100%","padding":"8px"},
                    placeholder: "请输入"
                  }, null, 8, ["onUpdate:modelValue"]), [
                    [external_Vue_namespaceObject.vModelText, rule.apiTest]
                  ])
                ]),
                (0,external_Vue_namespaceObject.createVNode)("div", null, [
                  _hoisted_9,
                  _hoisted_10,
                  (0,external_Vue_namespaceObject.withDirectives)((0,external_Vue_namespaceObject.createVNode)("textarea", {
                    "onUpdate:modelValue": $event => (rule.response = $event),
                    placeholder: "请输入",
                    rows: "6",
                    style: {"width":"100%","max-width":"100%","padding":"8px","resize":"vertical"}
                  }, null, 8, ["onUpdate:modelValue"]), [
                    [external_Vue_namespaceObject.vModelText, rule.response]
                  ])
                ])
              ])
            ]))
          }), 128))
        ], 2))
      }), 128))
    ], 2)
  ], 2)), [
    [external_Vue_namespaceObject.vShow, _ctx.show]
  ])
})
;// CONCATENATED MODULE: ./src/Setting/Root.vue?vue&type=template&id=3204fa8a&scoped=true

;// CONCATENATED MODULE: ../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/templateLoader.js??ruleSet[1].rules[1]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/compts/Button.vue?vue&type=template&id=535fafc8&scoped=true

const Buttonvue_type_template_id_535fafc8_scoped_true_withId = /*#__PURE__*/(0,external_Vue_namespaceObject.withScopeId)("data-v-535fafc8")

const Buttonvue_type_template_id_535fafc8_scoped_true_render = /*#__PURE__*/Buttonvue_type_template_id_535fafc8_scoped_true_withId((_ctx, _cache, $props, $setup, $data, $options) => {
  return ((0,external_Vue_namespaceObject.openBlock)(), (0,external_Vue_namespaceObject.createBlock)("button", {
    class: [
      _ctx.cls,
      `${_ctx.cls}--${_ctx.type}`,
      `${_ctx.cls}--size-${_ctx.size}`,
      `${_ctx.cls}--shape-${_ctx.shape}`,
    ],
    onClick: _cache[1] || (_cache[1] = (...args) => (_ctx.handleClick && _ctx.handleClick(...args)))
  }, [
    (0,external_Vue_namespaceObject.renderSlot)(_ctx.$slots, "default")
  ], 2))
})
;// CONCATENATED MODULE: ./src/compts/Button.vue?vue&type=template&id=535fafc8&scoped=true

;// CONCATENATED MODULE: ./.yarn/$$virtual/ts-loader-virtual-bae4e07acc/5/.yarn/berry/cache/ts-loader-npm-8.0.11-a6f1286fbd-7.zip/node_modules/ts-loader/index.js??clonedRuleSet-1.use!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/compts/Button.vue?vue&type=script&lang=ts
var Buttonvue_type_script_lang_ts_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};


/* harmony default export */ const Buttonvue_type_script_lang_ts = ((0,external_Vue_namespaceObject.defineComponent)({
    name: 'RPButton',
    props: {
        type: {
            type: String,
            default: 'secondary',
        },
        size: {
            type: String,
            default: 'default',
        },
        shape: {
            type: String,
            default: 'default',
        },
        onClick: {
            type: Function,
            default: () => null,
        },
    },
    setup(props, _ctx) {
        const innerLoading = (0,external_Vue_namespaceObject.ref)(false);
        const handleClick = (e) => Buttonvue_type_script_lang_ts_awaiter(this, void 0, void 0, function* () {
            // ctx.emit('click', e);
            if (innerLoading.value)
                return;
            try {
                innerLoading.value = true;
                yield props.onClick(e); // ? 能触发 @click
            }
            catch (_) {
            }
            finally {
                innerLoading.value = false;
            }
        });
        return {
            cls: ns('button'),
            handleClick,
        };
    },
}));

;// CONCATENATED MODULE: ./src/compts/Button.vue?vue&type=script&lang=ts
 
// EXTERNAL MODULE: ./.yarn/$$virtual/css-loader-virtual-cfb3398efa/5/.yarn/berry/cache/css-loader-npm-5.0.1-d2034d30e0-7.zip/node_modules/css-loader/dist/cjs.js!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/stylePostLoader.js!./.yarn/$$virtual/less-loader-virtual-ecae940d78/5/.yarn/berry/cache/less-loader-npm-7.1.0-515a1e35fe-7.zip/node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/compts/Button.vue?vue&type=style&index=0&id=535fafc8&scoped=true&lang=less
var Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less = __webpack_require__(551);
;// CONCATENATED MODULE: ./.yarn/$$virtual/style-loader-virtual-9cffe23b25/5/.yarn/berry/cache/style-loader-npm-2.0.0-b9a5c4a2aa-7.zip/node_modules/style-loader/dist/cjs.js!./.yarn/$$virtual/css-loader-virtual-cfb3398efa/5/.yarn/berry/cache/css-loader-npm-5.0.1-d2034d30e0-7.zip/node_modules/css-loader/dist/cjs.js!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/stylePostLoader.js!./.yarn/$$virtual/less-loader-virtual-ecae940d78/5/.yarn/berry/cache/less-loader-npm-7.1.0-515a1e35fe-7.zip/node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/compts/Button.vue?vue&type=style&index=0&id=535fafc8&scoped=true&lang=less

            

var Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less_options = {};

Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less_options.insert = "head";
Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less_options.singleton = false;

var Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less_update = injectStylesIntoStyleTag_default()(Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less/* default */.Z, Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less_options);



/* harmony default export */ const compts_Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less = (Buttonvue_type_style_index_0_id_535fafc8_scoped_true_lang_less/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/compts/Button.vue?vue&type=style&index=0&id=535fafc8&scoped=true&lang=less

;// CONCATENATED MODULE: ./src/compts/Button.vue




;
Buttonvue_type_script_lang_ts.render = Buttonvue_type_template_id_535fafc8_scoped_true_render
Buttonvue_type_script_lang_ts.__scopeId = "data-v-535fafc8"

/* harmony default export */ const Button = (Buttonvue_type_script_lang_ts);
;// CONCATENATED MODULE: ./.yarn/$$virtual/ts-loader-virtual-bae4e07acc/5/.yarn/berry/cache/ts-loader-npm-8.0.11-a6f1286fbd-7.zip/node_modules/ts-loader/index.js??clonedRuleSet-1.use!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/Setting/Root.vue?vue&type=script&lang=ts




/* harmony default export */ const Rootvue_type_script_lang_ts = ((0,external_Vue_namespaceObject.defineComponent)({
    components: { Button: Button },
    setup() {
        const state = (0,external_Vue_namespaceObject.reactive)({
            matchedSetList: [],
        });
        const show = (0,external_Vue_namespaceObject.ref)(false);
        const showType = (0,external_Vue_namespaceObject.ref)('CURRENT');
        const isAll = (0,external_Vue_namespaceObject.computed)(() => showType.value === 'ALL');
        (0,external_Vue_namespaceObject.watch)(() => state.matchedSetList, () => {
            Store.updateSetList(state.matchedSetList);
        }, { deep: true });
        (0,external_Vue_namespaceObject.watch)(isAll, () => {
            state.matchedSetList = isAll.value
                ? Store.getSetList()
                : Store.getMatchedSetList();
        }, { immediate: true });
        return {
            cls: ns('root'),
            state,
            show,
            showType,
            isAll,
            ctrlList: [
                ['CURRENT', '当前匹配'],
                ['ALL', '所有规则'],
            ],
            open: () => {
                show.value = true;
            },
            close: () => {
                show.value = false;
            },
            handleAddSet: () => {
                state.matchedSetList.unshift({
                    domainTest: location.hostname,
                    rules: [],
                    id: uuid4(),
                });
            },
            handleAddRule: (i) => {
                state.matchedSetList[i].rules.push({
                    id: uuid4(),
                    apiTest: '',
                    response: '',
                    disabled: false,
                });
            },
            handleDelSet: (item) => {
                if (confirm('是否删除该集合,包括其下所有 Api 配置?')) {
                    Store.deleteSetList([item.id]);
                    state.matchedSetList = state.matchedSetList.filter(it => it !== item);
                }
            },
            handleDelRule: (item, setIdx, _ruleIdx) => {
                state.matchedSetList[setIdx].rules = state.matchedSetList[setIdx].rules.filter(it => it !== item);
            },
        };
    },
}));

;// CONCATENATED MODULE: ./src/Setting/Root.vue?vue&type=script&lang=ts
 
// EXTERNAL MODULE: ./.yarn/$$virtual/css-loader-virtual-cfb3398efa/5/.yarn/berry/cache/css-loader-npm-5.0.1-d2034d30e0-7.zip/node_modules/css-loader/dist/cjs.js!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/stylePostLoader.js!./.yarn/$$virtual/less-loader-virtual-ecae940d78/5/.yarn/berry/cache/less-loader-npm-7.1.0-515a1e35fe-7.zip/node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/Setting/Root.vue?vue&type=style&index=0&id=3204fa8a&scoped=true&lang=less
var Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less = __webpack_require__(424);
;// CONCATENATED MODULE: ./.yarn/$$virtual/style-loader-virtual-9cffe23b25/5/.yarn/berry/cache/style-loader-npm-2.0.0-b9a5c4a2aa-7.zip/node_modules/style-loader/dist/cjs.js!./.yarn/$$virtual/css-loader-virtual-cfb3398efa/5/.yarn/berry/cache/css-loader-npm-5.0.1-d2034d30e0-7.zip/node_modules/css-loader/dist/cjs.js!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/stylePostLoader.js!./.yarn/$$virtual/less-loader-virtual-ecae940d78/5/.yarn/berry/cache/less-loader-npm-7.1.0-515a1e35fe-7.zip/node_modules/less-loader/dist/cjs.js??clonedRuleSet-2.use[2]!../../../../.yarn/berry/cache/vue-loader-npm-16.0.0-8cfe737dff-7.zip/node_modules/vue-loader/dist/index.js??ruleSet[1].rules[5].use[0]!./src/Setting/Root.vue?vue&type=style&index=0&id=3204fa8a&scoped=true&lang=less

            

var Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less_options = {};

Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less_options.insert = "head";
Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less_options.singleton = false;

var Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less_update = injectStylesIntoStyleTag_default()(Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less/* default */.Z, Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less_options);



/* harmony default export */ const Setting_Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less = (Rootvue_type_style_index_0_id_3204fa8a_scoped_true_lang_less/* default.locals */.Z.locals || {});
;// CONCATENATED MODULE: ./src/Setting/Root.vue?vue&type=style&index=0&id=3204fa8a&scoped=true&lang=less

;// CONCATENATED MODULE: ./src/Setting/Root.vue




;
Rootvue_type_script_lang_ts.render = render
Rootvue_type_script_lang_ts.__scopeId = "data-v-3204fa8a"

/* harmony default export */ const Root = (Rootvue_type_script_lang_ts);
;// CONCATENATED MODULE: ./src/Setting/index.ts


function Setting_render(el) {
    const vm = (0,external_Vue_namespaceObject.createApp)(Root);
    const $root = vm.mount(el);
    return {
        $root,
        open: () => {
            return $root.open();
        },
        close: () => {
            return $root.close();
        },
    };
}

;// CONCATENATED MODULE: ./src/index.ts
var src_awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};





// const lazeloadModules = (): Promise<{ Vue: typeof import('vue') }> => {
//   return new Promise((resolve, reject) => {
//     GM_xmlhttpRequest({
//       url: '',
//       onload: e => {
//         if (e.status !== 200) {
//           reject(e);
//           return;
//         }
//         try {
//           const Vue = new Function(`${e.responseText}; return Vue;`)();
//           resolve({ Vue });
//         } catch (error) {
//           reject(error);
//         }
//       },
//       onerror: reject,
//     });
//   });
// };
function bootstrap() {
    if (vmCtx.top !== vmCtx) {
        // 只在顶层页面展示操作
        return;
    }
    let handler;
    let isDrag = false;
    let isMove = false;
    let tX = 0;
    let tY = 0;
    let elRect = null;
    const el = document.createElement('div');
    el.innerText = 'o_O||';
    el.className = 'gm-rp__page-root-fixed-button';
    function onClickEl(_e) {
        if (isMove) {
            return;
        }
        if (!handler) {
            handler = Setting_render(elForMount);
            handler.$root.$watch('show', (newVal) => {
                el.classList[newVal ? 'add' : 'remove']('hidden');
            });
        }
        handler.open();
    }
    el.addEventListener('mousedown', e => {
        isDrag = true;
        isMove = false;
        elRect = el.getBoundingClientRect();
        tX = e.clientX - elRect.left;
        tY = e.clientY - elRect.top;
    });
    vmCtx.addEventListener('mouseup', (e) => src_awaiter(this, void 0, void 0, function* () {
        isDrag = false;
        if (isMove) {
            isMove = false;
            return;
        }
        // mock click event
        if (e.target === el) {
            yield onClickEl(e);
        }
    }));
    vmCtx.addEventListener('mousemove', e => {
        isMove = true;
        if (!isDrag) {
            return;
        }
        e.preventDefault();
        let left = e.clientX - tX;
        left = Math.min(left, vmCtx.innerWidth - elRect.width);
        left = Math.max(left, 0);
        let top = e.clientY - tY;
        top = Math.min(top, vmCtx.innerHeight - elRect.height);
        top = Math.max(top, 0);
        el.style.left = left + 'px';
        el.style.top = top + 'px';
    });
    const elForMount = document.createElement('div');
    document.body.appendChild(el);
    document.body.appendChild(elForMount);
}
if (document.readyState === 'loading') {
    vmCtx.addEventListener('DOMContentLoaded', () => {
        bootstrap();
    });
}
else {
    bootstrap();
}

})();

/******/ })()
;