UNPKG

@moquyun/proxy

Version:

Multi-user & multi-env web debugging proxy based on whistle

1,266 lines (1,032 loc) 342 kB
/******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = "./src/button/index.js"); /******/ }) /************************************************************************/ /******/ ({ /***/ "./node_modules/_clipboard@2.0.8@clipboard/dist/clipboard.js": /*!*******************************************************************!*\ !*** ./node_modules/_clipboard@2.0.8@clipboard/dist/clipboard.js ***! \*******************************************************************/ /*! no static exports found */ /***/ (function(module, exports) { throw new Error("Module build failed (from ./node_modules/_babel-loader@7.1.5@babel-loader/lib/index.js):\nError: Couldn't find preset \"@babel/env\" relative to directory \"/Users/daibaoguang/code/github/nohost-master/node_modules/_clipboard@2.0.8@clipboard\"\n at /Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/options/option-manager.js:293:19\n at Array.map (<anonymous>)\n at OptionManager.resolvePresets (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/options/option-manager.js:275:20)\n at OptionManager.mergePresets (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/options/option-manager.js:264:10)\n at OptionManager.mergeOptions (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/options/option-manager.js:249:14)\n at OptionManager.init (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/options/option-manager.js:368:12)\n at File.initOptions (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/index.js:212:65)\n at new File (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/file/index.js:135:24)\n at Pipeline.transform (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-core@6.26.3@babel-core/lib/transformation/pipeline.js:46:16)\n at transpile (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-loader@7.1.5@babel-loader/lib/index.js:50:20)\n at Object.module.exports (/Users/daibaoguang/code/github/nohost-master/node_modules/_babel-loader@7.1.5@babel-loader/lib/index.js:173:20)"); /***/ }), /***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/button/index.css": /*!**************************************************************************************!*\ !*** ./node_modules/_css-loader@3.6.0@css-loader/dist/cjs.js!./src/button/index.css ***! \**************************************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(/*! ../../node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js */ "./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js"); exports = ___CSS_LOADER_API_IMPORT___(false); // Module exports.push([module.i, ".w-nohost-modal {\n display: none;\n position: fixed !important;\n z-index: 999997 !important;\n left: 0 !important;\n top: 0 !important;\n box-sizing: border-box !important;\n width: 100% !important;\n height: 100% !important;\n overflow: hidden !important;\n background-color: rgba(0, 0, 0, 0.6) !important;\n font-family: \"Helvetica Neue\", Helvetica, Arial, \"Hiragino Sans GB\",\n \"Hiragino Sans GB W3\", \"WenQuanYi Micro Hei\", sans-serif;\n}\n\n.w-nohost-modal * {\n box-sizing: border-box !important;\n}\n\n#w-nohost-operations,\n#w-nohost-custom-menu {\n max-height: 80%;\n overflow-y: scroll;\n width: 250px !important;\n margin-left: auto !important;\n margin-right: auto !important;\n background: rgba(255, 255, 255, 0.9) !important;\n padding: 10px !important;\n transition: 0.3s !important;\n font-size: 12px !important;\n line-height: 14px !important;\n border-radius: 5px !important;\n user-select: none !important;\n}\n\n#w-nohost-operation-modal h4,\n#w-nohost-custom-context-modal h4 {\n font-weight: bold !important;\n text-align: center !important;\n margin: 5px !important;\n font-size: 14px !important;\n position: relative !important;\n}\n\n#w-nohost-close-modal,\n#w-nohost-close-custom-modal {\n cursor: pointer !important;\n color: #aaa !important;\n position: absolute !important;\n right: -12px !important;\n top: -12px !important;\n padding: 6px !important;\n}\n\n.w-nohost-operation {\n display: block !important;\n border: none !important;\n color: white !important;\n cursor: pointer !important;\n background: #6cafe7 !important;\n text-align: center !important;\n border-radius: 3px !important;\n padding: 10px 8px !important;\n margin: 15px 0 !important;\n width: 100% !important;\n font-size: 16px;\n box-sizing: border-box !important;\n}\n\n#w-nohost-list {\n box-sizing: border-box !important;\n max-width: 420px !important;\n width: 88% !important;\n margin-left: auto !important;\n margin-right: auto !important;\n}\n\n#w-nohost-toolbar {\n position: relative !important;\n font-size: 16px !important;\n transition: background-color 0.6s !important;\n}\n\n#w-nohost-toolbar input {\n width: 100% !important;\n box-sizing: border-box !important;\n height: 40px !important;\n padding: 10px !important;\n border: 1px solid white !important;\n background: black !important;\n color: white !important;\n font-weight: bold !important;\n font-size: 14px !important;\n}\n\n#w-nohost-toolbar .tool-item {\n cursor: pointer !important;\n}\n#w-nohost-user-ul,\n#w-nohost-env-ul,\n#w-nohost-env-filter {\n display: none;\n list-style-type: none !important;\n padding: 0 !important;\n margin: 0 !important;\n overflow-x: hidden !important;\n overflow-y: auto !important;\n position: relative !important;\n}\n\n#w-nohost-list li {\n float: none !important;\n border: 1px solid #ccc !important;\n border-left: none !important;\n border-right: none !important;\n margin: -1px 0 0 0 !important;\n text-decoration: none !important;\n font-size: 16px !important;\n color: black !important;\n padding: 10px 16px !important;\n display: block !important;\n background: white !important;\n cursor: pointer !important;\n transition: background-color 0.3s;\n position: relative !important;\n}\n\n#w-nohost-user-ul li:first-child {\n position: sticky !important;\n top: 0 !important;\n z-index: 1000 !important;\n}\n\n#w-nohost-list .liWithSub:after {\n content: \" \" !important;\n position: absolute !important;\n top: 16px !important;\n right: 24px !important;\n width: 12px !important;\n height: 12px !important;\n border: 1px solid #aaaaaa !important;\n transform: rotate(45deg) !important;\n border-left: none !important;\n border-bottom: none !important;\n}\n#w-nohost-list .envSelected.liWithSub:after {\n border-color: #000 !important;\n}\n\n#w-nohost-list li:hover:not(.envSelected) {\n background-color: #e5eaf0 !important;\n}\n#w-nohost-list li.w-nohost-choosed:not(.envSelected) {\n background-color: #e5eaf0 !important;\n}\n#w-nohost-list .envSelected {\n background-color: #bdbdbd !important;\n}\n\n#w-nohost-list #w-nohost-user-ul #w-nohost-error-hint,\n#w-nohost-list #w-nohost-env-ul #w-nohost-error-hint {\n border: 1px solid #f6f6f6 !important;\n text-decoration: none !important;\n color: black !important;\n padding: 8px 12px 8px 36px !important;\n display: block !important;\n background: white !important;\n cursor: pointer;\n}\n\n#w-nohost-btn--top {\n position: relative !important;\n width: 100% !important;\n line-height: 38px !important;\n background-color: #6cafe7 !important;\n outline: none !important;\n border: none !important;\n font-size: 16px !important;\n cursor: pointer !important;\n transition: background-color 0.6s !important;\n color: white !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n white-space: nowrap !important;\n padding: 5px 20px !important;\n}\n\n#w-nohost-btn--top.w-nohost-disabled {\n cursor: not-allowed !important;\n}\n\n#w-nohost-btn--top.back::after {\n content: \" \" !important;\n position: absolute !important;\n top: 16px !important;\n left: 24px !important;\n width: 12px !important;\n height: 12px !important;\n border: 2px solid #fff !important;\n transform: rotate(45deg) !important;\n border-top: none !important;\n border-right: none !important;\n}\n\n#w-nohost-list #w-nohost-btn--back:hover,\n#w-nohost-list #w-nohost-btn--back:focus {\n background-color: #4097e0 !important;\n}\n\n#w-nohost-list #w-nohost-btn--back:before {\n content: \" \" !important;\n position: absolute !important;\n top: 17px !important;\n left: 12px !important;\n width: 12px !important;\n height: 12px !important;\n border: 2px solid #fff !important;\n transform: rotate(45deg) !important;\n border-right: none !important;\n border-top: none !important;\n}\n\n#w-nohost-circle {\n user-select: none !important;\n position: fixed !important;\n z-index: 999999999 !important;\n padding-right: 5px !important;\n padding-top: 20px !important;\n}\n\n#w-nohost-circle-context {\n position: absolute !important;\n top: 61px !important;\n left: 41px !important;\n transform: translate(0, -100%) !important;\n font-size: 14px !important;\n white-space: nowrap !important;\n background: #fff !important;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.5) !important;\n line-height: 30px !important;\n border-radius: 5px !important;\n display: none;\n user-select: none !important;\n}\n.w-nohost-circle-envs {\n border-bottom-left-radius: 5px !important;\n border-bottom-right-radius: 5px !important;\n}\n\n#w-nohost-circle-env {\n padding: 0 8px !important;\n color: #5bc0de !important;\n border-bottom: 1px solid #ddd !important;\n max-width: 250px !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n white-space: nowrap !important;\n cursor: pointer !important;\n}\n\n.w-nohost-circle-item {\n padding: 0 8px !important;\n white-space: nowrap !important;\n cursor: pointer !important;\n color: #000 !important;\n}\n\n.w-nohost-circle-item:hover {\n background: #f5f5f5 !important;\n color: #000 !important;\n}\n\n.w-nohost-circle-item:last-child {\n border-radius: 0 0 5px 5px;\n}\n\n#w-nohost-circle-icon {\n cursor: pointer !important;\n user-select: none !important;\n box-sizing: border-box !important;\n width: 40px !important;\n height: 40px !important;\n border-radius: 50% !important;\n background-color: #5bc0de !important;\n background-color: rgba(91, 192, 222, 0.3) !important;\n color: #008cba !important;\n white-space: nowrap;\n overflow: hidden;\n font-size: 12px !important;\n display: flex !important;\n align-items: center !important;\n white-space: nowrap;\n overflow: hidden;\n}\n\n.w-nohost-loading-circle {\n border-top: 5px solid rgba(84, 189, 221, 0.3) !important;\n animation: spin 1.6s linear infinite;\n}\n\n.w-nohost-loaded-circle {\n border: 4px solid rgba(84, 189, 221, 0.3) !important;\n}\n\n#w-nohost-circle-icon.w-nohost-active {\n background-color: #008cba !important;\n color: white !important;\n}\n\n#w-nohost-loader {\n box-sizing: border-box !important;\n display: none;\n position: fixed !important;\n z-index: 9999998 !important;\n top: 25% !important;\n left: 0 !important;\n right: 0 !important;\n width: 50px !important;\n height: 50px !important;\n margin: auto !important;\n border: 8px solid #eee !important;\n border-top: 8px solid #008cba !important;\n border-radius: 50% !important;\n animation: spin 1.6s linear infinite;\n}\n\n@keyframes spin {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n}\n\n.w-nohost-toast {\n display: none;\n z-index: 999999999 !important;\n position: fixed !important;\n top: 15px !important;\n left: 0 !important;\n right: 0 !important;\n margin: auto !important;\n width: 400px !important;\n max-width: 90% !important;\n background-color: #13ce66;\n color: white !important;\n text-align: center !important;\n padding: 10px !important;\n transition: 0.3s !important;\n font-size: 16px !important;\n border-radius: 3px !important;\n line-height: 20px !important;\n}\n\n.w-nohost-toast.w-nohost-toast-error {\n background-color: #e80808 !important;\n}\n\n.w-nohost-toast.w-nohost-toast-countdown {\n width: 40px !important;\n border-radius: 20px !important;\n}\n\n.w-nohost-toast-close:hover {\n color: #fff;\n}\n\n.w-nohost-has-second {\n display: none;\n position: relative;\n}\n\n.w-nohost-has-second::after {\n content: \" \" !important;\n position: absolute !important;\n top: 12px !important;\n right: 12px !important;\n width: 6px !important;\n height: 6px !important;\n border: 1px solid #aaaaaa !important;\n transform: rotate(45deg) !important;\n border-left: none !important;\n border-bottom: none !important;\n}\n\n.w-nohost-second-content-wrap {\n position: absolute !important;\n left: 100% !important;\n display: none;\n transform: translate(0, -100%) !important;\n}\n\n#w-nohost-circle-history .w-nohost-second-content-wrap {\n transform: translate(0, -30px) !important;\n}\n\n.w-nohost-second-content-content {\n margin-left: 3px;\n min-width: 130px !important;\n font-size: 14px !important;\n white-space: nowrap !important;\n background: #fff !important;\n box-shadow: 0 0 5px rgba(0, 0, 0, 0.5) !important;\n line-height: 30px !important;\n border-radius: 5px !important;\n user-select: none !important;\n}\n\n.w-nohost-second-item {\n max-width: 250px !important;\n overflow: hidden !important;\n text-overflow: ellipsis !important;\n white-space: nowrap !important;\n padding: 0 8px !important;\n cursor: pointer !important;\n}\n\n.w-nohost-second-item:hover {\n background: #f5f5f5 !important;\n}\n\n.w-nohost-second-item:nth-child(1) {\n border-top-left-radius: 5px !important;\n border-top-right-radius: 5px !important;\n}\n\n.w-nohost-second-item:last-child {\n border-bottom-right-radius: 5px !important;\n border-bottom-left-radius: 5px !important;\n}\n\n.w-nohost-has-second:hover .w-nohost-second-content-wrap {\n display: block !important;\n}\n\n.w-nohost-custom-btn-hide {\n display: none !important;\n}\n", ""]); // Exports module.exports = exports; /***/ }), /***/ "./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js": /*!***********************************************************************!*\ !*** ./node_modules/_css-loader@3.6.0@css-loader/dist/runtime/api.js ***! \***********************************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "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 (useSourceMap) { var list = []; // return the list of modules as css string list.toString = function toString() { return this.map(function (item) { var content = cssWithMappingToString(item, useSourceMap); 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; }; function cssWithMappingToString(item, useSourceMap) { var content = item[1] || ''; // eslint-disable-next-line prefer-destructuring var cssMapping = item[3]; if (!cssMapping) { return content; } if (useSourceMap && typeof btoa === 'function') { var sourceMapping = toComment(cssMapping); var sourceURLs = cssMapping.sources.map(function (source) { return "/*# sourceURL=".concat(cssMapping.sourceRoot || '').concat(source, " */"); }); return [content].concat(sourceURLs).concat([sourceMapping]).join('\n'); } return [content].join('\n'); } // Adapted from convert-source-map (MIT) function toComment(sourceMap) { // eslint-disable-next-line no-undef var base64 = btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))); var data = "sourceMappingURL=data:application/json;charset=utf-8;base64,".concat(base64); return "/*# ".concat(data, " */"); } /***/ }), /***/ "./node_modules/_jquery@3.3.1@jquery/dist/jquery.js": /*!**********************************************************!*\ !*** ./node_modules/_jquery@3.3.1@jquery/dist/jquery.js ***! \**********************************************************/ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { "use strict"; /* WEBPACK VAR INJECTION */(function(module) {var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__; var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; /*! * jQuery JavaScript Library v3.3.1 * https://jquery.com/ * * Includes Sizzle.js * https://sizzlejs.com/ * * Copyright JS Foundation and other contributors * Released under the MIT license * https://jquery.org/license * * Date: 2018-01-20T17:24Z */ (function (global, factory) { "use strict"; if (( false ? undefined : _typeof(module)) === "object" && _typeof(module.exports) === "object") { // For CommonJS and CommonJS-like environments where a proper `window` // is present, execute the factory and get jQuery. // For environments that do not have a `window` with a `document` // (such as Node.js), expose a factory as module.exports. // This accentuates the need for the creation of a real `window`. // e.g. var jQuery = require("jquery")(window); // See ticket #14549 for more info. module.exports = global.document ? factory(global, true) : function (w) { if (!w.document) { throw new Error("jQuery requires a window with a document"); } return factory(w); }; } else { factory(global); } // Pass this if window is not defined yet })(typeof window !== "undefined" ? window : undefined, function (window, noGlobal) { // Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1 // throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode // arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common // enough that all such attempts are guarded in a try block. "use strict"; var arr = []; var document = window.document; var getProto = Object.getPrototypeOf; var _slice = arr.slice; var concat = arr.concat; var push = arr.push; var indexOf = arr.indexOf; var class2type = {}; var toString = class2type.toString; var hasOwn = class2type.hasOwnProperty; var fnToString = hasOwn.toString; var ObjectFunctionString = fnToString.call(Object); var support = {}; var isFunction = function isFunction(obj) { // Support: Chrome <=57, Firefox <=52 // In some browsers, typeof returns "function" for HTML <object> elements // (i.e., `typeof document.createElement( "object" ) === "function"`). // We don't want to classify *any* DOM node as a function. return typeof obj === "function" && typeof obj.nodeType !== "number"; }; var isWindow = function isWindow(obj) { return obj != null && obj === obj.window; }; var preservedScriptAttributes = { type: true, src: true, noModule: true }; function DOMEval(code, doc, node) { doc = doc || document; var i, script = doc.createElement("script"); script.text = code; if (node) { for (i in preservedScriptAttributes) { if (node[i]) { script[i] = node[i]; } } } doc.head.appendChild(script).parentNode.removeChild(script); } function toType(obj) { if (obj == null) { return obj + ""; } // Support: Android <=2.3 only (functionish RegExp) return (typeof obj === "undefined" ? "undefined" : _typeof(obj)) === "object" || typeof obj === "function" ? class2type[toString.call(obj)] || "object" : typeof obj === "undefined" ? "undefined" : _typeof(obj); } /* global Symbol */ // Defining this global in .eslintrc.json would create a danger of using the global // unguarded in another place, it seems safer to define global only for this module var version = "3.3.1", // Define a local copy of jQuery jQuery = function jQuery(selector, context) { // The jQuery object is actually just the init constructor 'enhanced' // Need init if jQuery is called (just allow error to be thrown if not included) return new jQuery.fn.init(selector, context); }, // Support: Android <=4.0 only // Make sure we trim BOM and NBSP rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g; jQuery.fn = jQuery.prototype = { // The current version of jQuery being used jquery: version, constructor: jQuery, // The default length of a jQuery object is 0 length: 0, toArray: function toArray() { return _slice.call(this); }, // Get the Nth element in the matched element set OR // Get the whole matched element set as a clean array get: function get(num) { // Return all the elements in a clean array if (num == null) { return _slice.call(this); } // Return just the one element from the set return num < 0 ? this[num + this.length] : this[num]; }, // Take an array of elements and push it onto the stack // (returning the new matched element set) pushStack: function pushStack(elems) { // Build a new jQuery matched element set var ret = jQuery.merge(this.constructor(), elems); // Add the old object onto the stack (as a reference) ret.prevObject = this; // Return the newly-formed element set return ret; }, // Execute a callback for every element in the matched set. each: function each(callback) { return jQuery.each(this, callback); }, map: function map(callback) { return this.pushStack(jQuery.map(this, function (elem, i) { return callback.call(elem, i, elem); })); }, slice: function slice() { return this.pushStack(_slice.apply(this, arguments)); }, first: function first() { return this.eq(0); }, last: function last() { return this.eq(-1); }, eq: function eq(i) { var len = this.length, j = +i + (i < 0 ? len : 0); return this.pushStack(j >= 0 && j < len ? [this[j]] : []); }, end: function end() { return this.prevObject || this.constructor(); }, // For internal use only. // Behaves like an Array's method, not like a jQuery method. push: push, sort: arr.sort, splice: arr.splice }; jQuery.extend = jQuery.fn.extend = function () { var options, name, src, copy, copyIsArray, clone, target = arguments[0] || {}, i = 1, length = arguments.length, deep = false; // Handle a deep copy situation if (typeof target === "boolean") { deep = target; // Skip the boolean and the target target = arguments[i] || {}; i++; } // Handle case when target is a string or something (possible in deep copy) if ((typeof target === "undefined" ? "undefined" : _typeof(target)) !== "object" && !isFunction(target)) { target = {}; } // Extend jQuery itself if only one argument is passed if (i === length) { target = this; i--; } for (; i < length; i++) { // Only deal with non-null/undefined values if ((options = arguments[i]) != null) { // Extend the base object for (name in options) { src = target[name]; copy = options[name]; // Prevent never-ending loop if (target === copy) { continue; } // Recurse if we're merging plain objects or arrays if (deep && copy && (jQuery.isPlainObject(copy) || (copyIsArray = Array.isArray(copy)))) { if (copyIsArray) { copyIsArray = false; clone = src && Array.isArray(src) ? src : []; } else { clone = src && jQuery.isPlainObject(src) ? src : {}; } // Never move original objects, clone them target[name] = jQuery.extend(deep, clone, copy); // Don't bring in undefined values } else if (copy !== undefined) { target[name] = copy; } } } } // Return the modified object return target; }; jQuery.extend({ // Unique for each copy of jQuery on the page expando: "jQuery" + (version + Math.random()).replace(/\D/g, ""), // Assume jQuery is ready without the ready module isReady: true, error: function error(msg) { throw new Error(msg); }, noop: function noop() {}, isPlainObject: function isPlainObject(obj) { var proto, Ctor; // Detect obvious negatives // Use toString instead of jQuery.type to catch host objects if (!obj || toString.call(obj) !== "[object Object]") { return false; } proto = getProto(obj); // Objects with no prototype (e.g., `Object.create( null )`) are plain if (!proto) { return true; } // Objects with prototype are plain iff they were constructed by a global Object function Ctor = hasOwn.call(proto, "constructor") && proto.constructor; return typeof Ctor === "function" && fnToString.call(Ctor) === ObjectFunctionString; }, isEmptyObject: function isEmptyObject(obj) { /* eslint-disable no-unused-vars */ // See https://github.com/eslint/eslint/issues/6125 var name; for (name in obj) { return false; } return true; }, // Evaluates a script in a global context globalEval: function globalEval(code) { DOMEval(code); }, each: function each(obj, callback) { var length, i = 0; if (isArrayLike(obj)) { length = obj.length; for (; i < length; i++) { if (callback.call(obj[i], i, obj[i]) === false) { break; } } } else { for (i in obj) { if (callback.call(obj[i], i, obj[i]) === false) { break; } } } return obj; }, // Support: Android <=4.0 only trim: function trim(text) { return text == null ? "" : (text + "").replace(rtrim, ""); }, // results is for internal usage only makeArray: function makeArray(arr, results) { var ret = results || []; if (arr != null) { if (isArrayLike(Object(arr))) { jQuery.merge(ret, typeof arr === "string" ? [arr] : arr); } else { push.call(ret, arr); } } return ret; }, inArray: function inArray(elem, arr, i) { return arr == null ? -1 : indexOf.call(arr, elem, i); }, // Support: Android <=4.0 only, PhantomJS 1 only // push.apply(_, arraylike) throws on ancient WebKit merge: function merge(first, second) { var len = +second.length, j = 0, i = first.length; for (; j < len; j++) { first[i++] = second[j]; } first.length = i; return first; }, grep: function grep(elems, callback, invert) { var callbackInverse, matches = [], i = 0, length = elems.length, callbackExpect = !invert; // Go through the array, only saving the items // that pass the validator function for (; i < length; i++) { callbackInverse = !callback(elems[i], i); if (callbackInverse !== callbackExpect) { matches.push(elems[i]); } } return matches; }, // arg is for internal usage only map: function map(elems, callback, arg) { var length, value, i = 0, ret = []; // Go through the array, translating each of the items to their new values if (isArrayLike(elems)) { length = elems.length; for (; i < length; i++) { value = callback(elems[i], i, arg); if (value != null) { ret.push(value); } } // Go through every key on the object, } else { for (i in elems) { value = callback(elems[i], i, arg); if (value != null) { ret.push(value); } } } // Flatten any nested arrays return concat.apply([], ret); }, // A global GUID counter for objects guid: 1, // jQuery.support is not used in Core but other projects attach their // properties to it so it needs to exist. support: support }); if (typeof Symbol === "function") { jQuery.fn[Symbol.iterator] = arr[Symbol.iterator]; } // Populate the class2type map jQuery.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "), function (i, name) { class2type["[object " + name + "]"] = name.toLowerCase(); }); function isArrayLike(obj) { // Support: real iOS 8.2 only (not reproducible in simulator) // `in` check used to prevent JIT error (gh-2145) // hasOwn isn't used here due to false negatives // regarding Nodelist length in IE var length = !!obj && "length" in obj && obj.length, type = toType(obj); if (isFunction(obj) || isWindow(obj)) { return false; } return type === "array" || length === 0 || typeof length === "number" && length > 0 && length - 1 in obj; } var Sizzle = /*! * Sizzle CSS Selector Engine v2.3.3 * https://sizzlejs.com/ * * Copyright jQuery Foundation and other contributors * Released under the MIT license * http://jquery.org/license * * Date: 2016-08-08 */ function (window) { var i, support, Expr, getText, isXML, tokenize, compile, select, outermostContext, sortInput, hasDuplicate, // Local document vars setDocument, document, docElem, documentIsHTML, rbuggyQSA, rbuggyMatches, matches, contains, // Instance-specific data expando = "sizzle" + 1 * new Date(), preferredDoc = window.document, dirruns = 0, done = 0, classCache = createCache(), tokenCache = createCache(), compilerCache = createCache(), sortOrder = function sortOrder(a, b) { if (a === b) { hasDuplicate = true; } return 0; }, // Instance methods hasOwn = {}.hasOwnProperty, arr = [], pop = arr.pop, push_native = arr.push, push = arr.push, slice = arr.slice, // Use a stripped-down indexOf as it's faster than native // https://jsperf.com/thor-indexof-vs-for/5 indexOf = function indexOf(list, elem) { var i = 0, len = list.length; for (; i < len; i++) { if (list[i] === elem) { return i; } } return -1; }, booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped", // Regular expressions // http://www.w3.org/TR/css3-selectors/#whitespace whitespace = "[\\x20\\t\\r\\n\\f]", // http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier identifier = "(?:\\\\.|[\\w-]|[^\0-\\xa0])+", // Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors attributes = "\\[" + whitespace + "*(" + identifier + ")(?:" + whitespace + // Operator (capture 2) "*([*^$|!~]?=)" + whitespace + // "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]" "*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace + "*\\]", pseudos = ":(" + identifier + ")(?:\\((" + // To reduce the number of selectors needing tokenize in the preFilter, prefer arguments: // 1. quoted (capture 3; capture 4 or capture 5) "('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" + // 2. simple (capture 6) "((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" + // 3. anything else (capture 2) ".*" + ")\\)|)", // Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter rwhitespace = new RegExp(whitespace + "+", "g"), rtrim = new RegExp("^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g"), rcomma = new RegExp("^" + whitespace + "*," + whitespace + "*"), rcombinators = new RegExp("^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*"), rattributeQuotes = new RegExp("=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g"), rpseudo = new RegExp(pseudos), ridentifier = new RegExp("^" + identifier + "$"), matchExpr = { "ID": new RegExp("^#(" + identifier + ")"), "CLASS": new RegExp("^\\.(" + identifier + ")"), "TAG": new RegExp("^(" + identifier + "|[*])"), "ATTR": new RegExp("^" + attributes), "PSEUDO": new RegExp("^" + pseudos), "CHILD": new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace + "*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace + "*(\\d+)|))" + whitespace + "*\\)|)", "i"), "bool": new RegExp("^(?:" + booleans + ")$", "i"), // For use in libraries implementing .is() // We use this for POS matching in `select` "needsContext": new RegExp("^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" + whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i") }, rinputs = /^(?:input|select|textarea|button)$/i, rheader = /^h\d$/i, rnative = /^[^{]+\{\s*\[native \w/, // Easily-parseable/retrievable ID or TAG or CLASS selectors rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/, rsibling = /[+~]/, // CSS escapes // http://www.w3.org/TR/CSS21/syndata.html#escaped-characters runescape = new RegExp("\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig"), funescape = function funescape(_, escaped, escapedWhitespace) { var high = "0x" + escaped - 0x10000; // NaN means non-codepoint // Support: Firefox<24 // Workaround erroneous numeric interpretation of +"0x" return high !== high || escapedWhitespace ? escaped : high < 0 ? // BMP codepoint String.fromCharCode(high + 0x10000) : // Supplemental Plane codepoint (surrogate pair) String.fromCharCode(high >> 10 | 0xD800, high & 0x3FF | 0xDC00); }, // CSS string/identifier serialization // https://drafts.csswg.org/cssom/#common-serializing-idioms rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g, fcssescape = function fcssescape(ch, asCodePoint) { if (asCodePoint) { // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER if (ch === "\0") { return "\uFFFD"; } // Control characters and (dependent upon position) numbers get escaped as code points return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " "; } // Other potentially-special ASCII characters get backslash-escaped return "\\" + ch; }, // Used for iframes // See setDocument() // Removing the function wrapper causes a "Permission Denied" // error in IE unloadHandler = function unloadHandler() { setDocument(); }, disabledAncestor = addCombinator(function (elem) { return elem.disabled === true && ("form" in elem || "label" in elem); }, { dir: "parentNode", next: "legend" }); // Optimize for push.apply( _, NodeList ) try { push.apply(arr = slice.call(preferredDoc.childNodes), preferredDoc.childNodes); // Support: Android<4.0 // Detect silently failing push.apply arr[preferredDoc.childNodes.length].nodeType; } catch (e) { push = { apply: arr.length ? // Leverage slice if possible function (target, els) { push_native.apply(target, slice.call(els)); } : // Support: IE<9 // Otherwise append directly function (target, els) { var j = target.length, i = 0; // Can't trust NodeList.length while (target[j++] = els[i++]) {} target.length = j - 1; } }; } function Sizzle(selector, context, results, seed) { var m, i, elem, nid, match, groups, newSelector, newContext = context && context.ownerDocument, // nodeType defaults to 9, since context defaults to document nodeType = context ? context.nodeType : 9; results = results || []; // Return early from calls with invalid selector or context if (typeof selector !== "string" || !selector || nodeType !== 1 && nodeType !== 9 && nodeType !== 11) { return results; } // Try to shortcut find operations (as opposed to filters) in HTML documents if (!seed) { if ((context ? context.ownerDocument || context : preferredDoc) !== document) { setDocument(context); } context = context || document; if (documentIsHTML) { // If the selector is sufficiently simple, try using a "get*By*" DOM method // (excepting DocumentFragment context, where the methods don't exist) if (nodeType !== 11 && (match = rquickExpr.exec(selector))) { // ID selector if (m = match[1]) { // Document context if (nodeType === 9) { if (elem = context.getElementById(m)) { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if (elem.id === m) { results.push(elem); return results; } } else { return results; } // Element context } else { // Support: IE, Opera, Webkit // TODO: identify versions // getElementById can match elements by name instead of ID if (newContext && (elem = newContext.getElementById(m)) && contains(context, elem) && elem.id === m) { results.push(elem); return results; } } // Type selector } else if (match[2]) { push.apply(results, context.getElementsByTagName(selector)); return results; // Class selector } else if ((m = match[3]) && support.getElementsByClassName && context.getElementsByClassName) { push.apply(results, context.getElementsByClassName(m)); return results; } } // Take advantage of querySelectorAll if (support.qsa && !compilerCache[selector + " "] && (!rbuggyQSA || !rbuggyQSA.test(selector))) { if (nodeType !== 1) { newContext = context; newSelector = selector; // qSA looks outside Element context, which is not what we want // Thanks to Andrew Dupont for this workaround technique // Support: IE <=8 // Exclude object elements } else if (context.nodeName.toLowerCase() !== "object") { // Capture the context ID, setting it first if necessary if (nid = context.getAttribute("id")) { nid = nid.replace(rcssescape, fcssescape); } else { context.setAttribute("id", nid = expando); } // Prefix every selector in the list groups = tokenize(selector); i = groups.length; while (i--) { groups[i] = "#" + nid + " " + toSelector(groups[i]); } newSelector = groups.join(","); // Expand context for sibling selectors newContext = rsibling.test(selector) && testContext(context.parentNode) || context; } if (newSelector) { try { push.apply(results, newContext.querySelectorAll(newSelector)); return results; } catch (qsaError) {} finally { if (nid === expando) { context.removeAttribute("id"); } } } } } } // All others return select(selector.replace(rtrim, "$1"), context, results, seed); } /** * Create key-value caches of limited size * @returns {function(string, object)} Returns the Object data after storing it on itself with * property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength) * deleting the oldest entry */ function createCache() { var keys = []; function cache(key, value) { // Use (key + " ") to avoid collision with native prototype properties (see Issue #157) if (keys.push(key + " ") > Expr.cacheLength) { // Only keep the most recent entries delete cache[keys.shift()]; } return cache[key + " "] = value; } return cache; } /** * Mark a function for special use by Sizzle * @param {Function} fn The function to mark */ function markFunction(fn) { fn[expando] = true; return fn; } /** * Support testing using an element * @param {Function} fn Passed the created element and returns a boolean result */ function assert(fn) { var el = document.createElement("fieldset"); try { return !!fn(el); } catch (e) { return false; } finally { // Remove from its parent by default if (el.parentNode) { el.parentNode.removeChild(el); } // release memory in IE el = null; } } /** * Adds the same handler for all of the specified attrs * @param {String} attrs Pipe-separated list of attributes * @param {Function} handler The method that will be applied */ function addHandle(attrs, handler) { var arr = attrs.split("|"), i = arr.length; while (i--) { Expr.attrHandle[arr[i]] = handler; } } /** * Checks document order of two siblings * @param {Element} a * @param {Element} b * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b */ function siblingCheck(a, b) { var cur = b && a, diff = cur && a.nodeType === 1 && b.nodeType === 1 && a.sourceIndex - b.sourceIndex; // Use IE sourceIndex if available on both nodes if (diff) { return diff; } // Check if b follows a if (cur) { while (cur = cur.nextSibling) { if (cur === b) { return -1; } } } return a ? 1 : -1; } /** * Returns a function to use in pseudos for input types * @param {String} type */ function createInputPseudo(type) { return function (elem) { var name = elem.nodeName.toLowerCase(); return name === "input" && elem.type === type; }; } /** * Returns a function to use in pseudos for buttons * @param {String} type */ function createButtonPseudo(type) { return function (elem) { var name = elem.nodeName.toLowerCase(); return (name === "input" || name === "button") && elem.type === type; }; } /** * Returns a function to use in pseudos for :enabled/:disabled * @param {Boolean} disabled true for :disabled; false for :enabled */ function createDisabledPseudo(disabled) { // Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable return function (elem) { // Only certain elements can match :enabled or :disabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled // https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled if ("form" in elem) { // Check for inherited disabledness on relevant non-disabled elements: // * listed form-associated elements in a disabled fieldset // https://html.spec.whatwg.org/multipage/forms.html#category-listed // https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled // * option elements in a disabled optgroup // https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled // All such elements have a "form" property. if (elem.parentNode && elem.disabled === false) { // Option elements defer to a parent optgroup if present if ("label" in elem) { if ("label" in elem.parentNode) { return elem.parentNode.disabled === disabled; } else { return elem.disabled === disabled; } } // Support: IE 6 - 11 // Use the isDisabled shortcut property to check for disabled fieldset ancestors return elem.isDisabled === disabled || // Where there is no isDisabled, check manually /* jshint -W018 */ elem.isDisabled !== !disabled && disabledAncestor(elem) === disabled; } return elem.disabled === disabled; // Try to winnow out elements that can't be disabled before trusting the disabled property. // Some victims get caught in our net (label, legend, menu, track), but it shouldn't // even exist on them, let alone have a boolean value. } else if ("label" in elem) { return elem.disabled === disabled; } // Remaining elements are neither :enabled nor :disabled return false; }; } /** * Returns a function to use in pseudos for positionals * @param {Function} fn */ function createPositionalPseudo(fn) { return markFunction(function (argument) { argument = +argument; return markFunction(function (seed, matches) { var j, matchIndexes = fn([], seed.length, argument), i = matchIndexes.length; // Match elements found at the specified indexes while (i--) { if (seed[j = matchIndexes[i]]) { seed[j] = !(matches[j] = seed[j]); } } }); }); } /** * Checks a node for validity as a Sizzle context * @param {Element|Object=} context * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value */ function testContext(context) { return context && typeof context.getElementsByTagName !== "undefined" && context; } // Expose support vars for convenience support = Sizzle.support = {}; /** * Detects XML nodes * @param {Element|Object} elem An element or a document * @returns {Boolean} True iff elem is a non-HTML XML node */ isXML = Sizzle.isXML = function (elem) { // documentElement is verified for cases where it