1 |
- {"version":3,"sources":["webpack:///js/global.js","webpack:///webpack/bootstrap ccea1eaea2f00d9e3f16","webpack:///./mobile/src/router/global.js","webpack:///./mobile/src/js/zepto.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/style-loader/addStyles.js","webpack:///./mobile/src/js/flexible.js"],"names":["modules","__webpack_require__","moduleId","installedModules","exports","module","i","l","call","parentJsonpFunction","window","chunkIds","moreModules","executeModules","chunkId","result","resolves","length","installedChunks","push","Object","prototype","hasOwnProperty","shift","s","7","e","onScriptComplete","script","onerror","onload","clearTimeout","timeout","chunk","Error","undefined","installedChunkData","Promise","resolve","promise","reject","head","document","getElementsByTagName","createElement","type","charset","async","nc","setAttribute","src","p","setTimeout","appendChild","m","c","value","d","name","getter","o","defineProperty","configurable","enumerable","get","n","__esModule","object","property","oe","err","console","error","0","10","_typeof","Symbol","iterator","obj","constructor","Zepto","String","class2type","toString","isFunction","isWindow","isDocument","nodeType","DOCUMENT_NODE","isObject","isPlainObject","getPrototypeOf","likeArray","$","compact","array","filter","item","flatten","fn","concat","apply","dasherize","str","replace","toLowerCase","classRE","classCache","RegExp","maybeAddPx","cssNumber","defaultDisplay","nodeName","element","display","elementDisplay","body","getComputedStyle","getPropertyValue","parentNode","removeChild","children","slice","map","childNodes","node","Z","dom","selector","len","this","extend","target","source","deep","key","isArray","filtered","nodes","funcArg","context","arg","idx","payload","removeAttribute","className","klass","svg","baseVal","deserializeValue","test","parseJSON","traverseNode","fun","classList","camelize","uniq","emptyArray","column-count","columns","font-weight","line-height","opacity","z-index","zoom","fragmentRE","singleTagRE","tagExpanderRE","rootNodeRE","capitalRE","methodAttributes","adjacencyOperators","table","tableRow","containers","tr","tbody","thead","tfoot","td","th","*","readyRE","simpleSelectorRE","zepto","tempParent","propMap","tabindex","readonly","for","class","maxlength","cellspacing","cellpadding","rowspan","colspan","usemap","frameborder","contenteditable","Array","matches","matchesSelector","webkitMatchesSelector","mozMatchesSelector","oMatchesSelector","match","parent","temp","qsa","indexOf","chr","toUpperCase","fragment","html","properties","container","$1","innerHTML","each","attr","isZ","init","trim","find","ready","args","arguments","forEach","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","querySelectorAll","contains","documentElement","isEmptyObject","isNumeric","val","num","Number","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","grep","JSON","parse","split","reduce","sort","splice","toArray","el","readyState","addEventListener","size","remove","every","not","add","is","excludes","has","eq","first","last","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","show","style","replaceWith","newContent","before","wrap","structure","func","clone","index","wrapAll","cloneNode","append","wrapInner","self","unwrap","hide","css","toggle","setting","prev","next","originHtml","text","newText","textContent","join","getAttribute","removeAttr","attribute","prop","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","top","left","getBoundingClientRect","pageXOffset","pageYOffset","width","Math","round","height","computedStyle","removeProperty","cssText","hasClass","addClass","cls","removeClass","toggleClass","when","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","parseFloat","detach","dimension","dimensionProperty","operator","operatorIndex","inside","argType","arr","copyByClone","nextSibling","firstChild","parentInDocument","insertBefore","ownerDocument","defaultView","zid","_zid","findHandlers","event","ns","matcher","matcherFor","handlers","handler","sel","parts","eventCapture","captureSetting","del","focusinSupported","focus","realEvent","hover","events","delegator","capture","id","set","related","relatedTarget","proxy","compatible","isImmediatePropagationStopped","_args","preventDefault","stopPropagation","removeEventListener","isDefaultPrevented","eventMethods","predicate","sourceMethod","returnTrue","returnFalse","timeStamp","Date","now","defaultPrevented","returnValue","getPreventDefault","createProxy","originalEvent","ignoreProperties","isString","specialEvents","blur","mouseenter","mouseleave","click","mousedown","mouseup","mousemove","proxyFn","unshift","TypeError","bind","on","unbind","off","one","stopImmediatePropagation","delegate","undelegate","live","die","autoRemove","evt","currentTarget","liveFired","trigger","Event","dispatchEvent","triggerHandler","createEvent","bubbles","initEvent","triggerAndReturn","eventName","triggerGlobal","settings","global","ajaxStart","active","ajaxStop","ajaxBeforeSend","xhr","beforeSend","ajaxSuccess","deferred","success","resolveWith","ajaxComplete","ajaxError","rejectWith","status","complete","ajaxDataFilter","dataFilter","mimeToDataType","mime","htmlType","jsonType","scriptTypeRE","xmlTypeRE","appendQuery","url","query","serializeData","options","processData","param","traditional","dataType","parseArguments","serialize","params","scope","hash","jsonpID","rscript","blankRE","originAnchor","href","location","ajaxJSONP","ajax","responseData","abortTimeout","_callbackName","jsonpCallback","callbackName","originalCallback","abort","errorType","ajaxSettings","XMLHttpRequest","accepts","json","xml","crossDomain","cache","urlAnchor","hashIndex","Deferred","protocol","host","hasPlaceholder","jsonp","headers","setHeader","nativeSetHeader","setRequestHeader","mimeType","overrideMimeType","contentType","onreadystatechange","getResponseHeader","responseType","response","responseText","eval","responseXML","statusText","open","username","password","xhrFields","send","post","getJSON","load","escape","encodeURIComponent","serializeArray","field","disabled","checked","elm","submit","nativeGetComputedStyle","pseudoElement","11","21","26","list","mediaQuery","alreadyImportedModules","27","addStylesToDom","styles","domStyle","stylesInDom","refs","j","addStyle","listToStyles","newStyles","media","sourceMap","part","insertStyleElement","styleElement","getHeadElement","lastStyleElementInsertedAtTop","styleElementsInsertedAtTop","insertAt","removeStyleElement","createStyleElement","createLinkElement","linkElement","rel","update","singleton","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","URL","createObjectURL","revokeObjectURL","Blob","btoa","updateLink","applyToTag","newObj","styleSheet","replaceText","cssNode","createTextNode","unescape","stringify","blob","oldSrc","memoize","memo","isOldIE","navigator","userAgent","DEBUG","newList","mayRemove","textStore","replacement","Boolean","9","a","b","innerText","f","fontSize","k","rem","g","querySelector","h","flexible","warn","parseInt","toFixed","appVersion","q","devicePixelRatio","firstElementChild","r","write","persisted","dpr","refreshRem","rem2px","px2rem","lib"],"mappings":"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","file":"js/global.js?v=ccea1eae","sourcesContent":["/******/ (function(modules) { // webpackBootstrap\n/******/ \t// install a JSONP callback for chunk loading\n/******/ \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n/******/ \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n/******/ \t\t// add \"moreModules\" to the modules object,\n/******/ \t\t// then flag all \"chunkIds\" as loaded and fire callback\n/******/ \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n/******/ \t\tfor(;i < chunkIds.length; i++) {\n/******/ \t\t\tchunkId = chunkIds[i];\n/******/ \t\t\tif(installedChunks[chunkId]) {\n/******/ \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n/******/ \t\t\t}\n/******/ \t\t\tinstalledChunks[chunkId] = 0;\n/******/ \t\t}\n/******/ \t\tfor(moduleId in moreModules) {\n/******/ \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n/******/ \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n/******/ \t\twhile(resolves.length) {\n/******/ \t\t\tresolves.shift()();\n/******/ \t\t}\n/******/ \t\tif(executeModules) {\n/******/ \t\t\tfor(i=0; i < executeModules.length; i++) {\n/******/ \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n/******/ \t\t\t}\n/******/ \t\t}\n/******/ \t\treturn result;\n/******/ \t};\n/******/\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// objects to store loaded and loading chunks\n/******/ \tvar installedChunks = {\n/******/ \t\t7: 0\n/******/ \t};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/ \t// This file contains only the entry chunk.\n/******/ \t// The chunk loading function for additional chunks\n/******/ \t__webpack_require__.e = function requireEnsure(chunkId) {\n/******/ \t\tvar installedChunkData = installedChunks[chunkId];\n/******/ \t\tif(installedChunkData === 0) {\n/******/ \t\t\treturn new Promise(function(resolve) { resolve(); });\n/******/ \t\t}\n/******/\n/******/ \t\t// a Promise means \"currently loading\".\n/******/ \t\tif(installedChunkData) {\n/******/ \t\t\treturn installedChunkData[2];\n/******/ \t\t}\n/******/\n/******/ \t\t// setup Promise in chunk cache\n/******/ \t\tvar promise = new Promise(function(resolve, reject) {\n/******/ \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n/******/ \t\t});\n/******/ \t\tinstalledChunkData[2] = promise;\n/******/\n/******/ \t\t// start chunk loading\n/******/ \t\tvar head = document.getElementsByTagName('head')[0];\n/******/ \t\tvar script = document.createElement('script');\n/******/ \t\tscript.type = 'text/javascript';\n/******/ \t\tscript.charset = 'utf-8';\n/******/ \t\tscript.async = true;\n/******/ \t\tscript.timeout = 120000;\n/******/\n/******/ \t\tif (__webpack_require__.nc) {\n/******/ \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n/******/ \t\t}\n/******/ \t\tscript.src = __webpack_require__.p + \"js/\" + chunkId + \".js?v=\" + \"ccea1eae\" + \"\";\n/******/ \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n/******/ \t\tscript.onerror = script.onload = onScriptComplete;\n/******/ \t\tfunction onScriptComplete() {\n/******/ \t\t\t// avoid mem leaks in IE.\n/******/ \t\t\tscript.onerror = script.onload = null;\n/******/ \t\t\tclearTimeout(timeout);\n/******/ \t\t\tvar chunk = installedChunks[chunkId];\n/******/ \t\t\tif(chunk !== 0) {\n/******/ \t\t\t\tif(chunk) {\n/******/ \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n/******/ \t\t\t\t}\n/******/ \t\t\t\tinstalledChunks[chunkId] = undefined;\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t\thead.appendChild(script);\n/******/\n/******/ \t\treturn promise;\n/******/ \t};\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// on error function for async loading\n/******/ \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 21);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(11);\n\n__webpack_require__(9);\n\n__webpack_require__(10);\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _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; };\n\n/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\nvar Zepto = function () {\n var undefined,\n key,\n $,\n classList,\n emptyArray = [],\n _concat = emptyArray.concat,\n _filter = emptyArray.filter,\n _slice = emptyArray.slice,\n document = window.document,\n elementDisplay = {},\n classCache = {},\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1, 'opacity': 1, 'z-index': 1, 'zoom': 1 },\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\n rootNodeRE = /^(?:body|html)$/i,\n capitalRE = /([A-Z])/g,\n\n\n // special attributes that should be get/set via method calls\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\n adjacencyOperators = ['after', 'prepend', 'before', 'append'],\n table = document.createElement('table'),\n tableRow = document.createElement('tr'),\n containers = {\n 'tr': document.createElement('tbody'),\n 'tbody': table, 'thead': table, 'tfoot': table,\n 'td': tableRow, 'th': tableRow,\n '*': document.createElement('div')\n },\n readyRE = /complete|loaded|interactive/,\n simpleSelectorRE = /^[\\w-]*$/,\n class2type = {},\n toString = class2type.toString,\n zepto = {},\n camelize,\n uniq,\n tempParent = document.createElement('div'),\n propMap = {\n 'tabindex': 'tabIndex',\n 'readonly': 'readOnly',\n 'for': 'htmlFor',\n 'class': 'className',\n 'maxlength': 'maxLength',\n 'cellspacing': 'cellSpacing',\n 'cellpadding': 'cellPadding',\n 'rowspan': 'rowSpan',\n 'colspan': 'colSpan',\n 'usemap': 'useMap',\n 'frameborder': 'frameBorder',\n 'contenteditable': 'contentEditable'\n },\n isArray = Array.isArray || function (object) {\n return object instanceof Array;\n };\n\n zepto.matches = function (element, selector) {\n if (!selector || !element || element.nodeType !== 1) return false;\n var matchesSelector = element.matches || element.webkitMatchesSelector || element.mozMatchesSelector || element.oMatchesSelector || element.matchesSelector;\n if (matchesSelector) return matchesSelector.call(element, selector);\n // fall back to performing a selector:\n var match,\n parent = element.parentNode,\n temp = !parent;\n if (temp) (parent = tempParent).appendChild(element);\n match = ~zepto.qsa(parent, selector).indexOf(element);\n temp && tempParent.removeChild(element);\n return match;\n };\n\n function type(obj) {\n return obj == null ? String(obj) : class2type[toString.call(obj)] || \"object\";\n }\n\n function isFunction(value) {\n return type(value) == \"function\";\n }\n function isWindow(obj) {\n return obj != null && obj == obj.window;\n }\n function isDocument(obj) {\n return obj != null && obj.nodeType == obj.DOCUMENT_NODE;\n }\n function isObject(obj) {\n return type(obj) == \"object\";\n }\n function isPlainObject(obj) {\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype;\n }\n\n function likeArray(obj) {\n var length = !!obj && 'length' in obj && obj.length,\n type = $.type(obj);\n\n return 'function' != type && !isWindow(obj) && ('array' == type || length === 0 || typeof length == 'number' && length > 0 && length - 1 in obj);\n }\n\n function compact(array) {\n return _filter.call(array, function (item) {\n return item != null;\n });\n }\n function flatten(array) {\n return array.length > 0 ? $.fn.concat.apply([], array) : array;\n }\n camelize = function camelize(str) {\n return str.replace(/-+(.)?/g, function (match, chr) {\n return chr ? chr.toUpperCase() : '';\n });\n };\n function dasherize(str) {\n return str.replace(/::/g, '/').replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2').replace(/([a-z\\d])([A-Z])/g, '$1_$2').replace(/_/g, '-').toLowerCase();\n }\n uniq = function uniq(array) {\n return _filter.call(array, function (item, idx) {\n return array.indexOf(item) == idx;\n });\n };\n\n function classRE(name) {\n return name in classCache ? classCache[name] : classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)');\n }\n\n function maybeAddPx(name, value) {\n return typeof value == \"number\" && !cssNumber[dasherize(name)] ? value + \"px\" : value;\n }\n\n function defaultDisplay(nodeName) {\n var element, display;\n if (!elementDisplay[nodeName]) {\n element = document.createElement(nodeName);\n document.body.appendChild(element);\n display = getComputedStyle(element, '').getPropertyValue(\"display\");\n element.parentNode.removeChild(element);\n display == \"none\" && (display = \"block\");\n elementDisplay[nodeName] = display;\n }\n return elementDisplay[nodeName];\n }\n\n function _children(element) {\n return 'children' in element ? _slice.call(element.children) : $.map(element.childNodes, function (node) {\n if (node.nodeType == 1) return node;\n });\n }\n\n function Z(dom, selector) {\n var i,\n len = dom ? dom.length : 0;\n for (i = 0; i < len; i++) {\n this[i] = dom[i];\n }this.length = len;\n this.selector = selector || '';\n }\n\n // `$.zepto.fragment` takes a html string and an optional tag name\n // to generate DOM nodes from the given html string.\n // The generated DOM nodes are returned as an array.\n // This function can be overridden in plugins for example to make\n // it compatible with browsers that don't support the DOM fully.\n zepto.fragment = function (html, name, properties) {\n var dom, nodes, container;\n\n // A special case optimization for a single tag\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1));\n\n if (!dom) {\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\");\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1;\n if (!(name in containers)) name = '*';\n\n container = containers[name];\n container.innerHTML = '' + html;\n dom = $.each(_slice.call(container.childNodes), function () {\n container.removeChild(this);\n });\n }\n\n if (isPlainObject(properties)) {\n nodes = $(dom);\n $.each(properties, function (key, value) {\n if (methodAttributes.indexOf(key) > -1) nodes[key](value);else nodes.attr(key, value);\n });\n }\n\n return dom;\n };\n\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\n // of nodes with `$.fn` and thus supplying all the Zepto functions\n // to the array. This method can be overridden in plugins.\n zepto.Z = function (dom, selector) {\n return new Z(dom, selector);\n };\n\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\n // collection. This method can be overridden in plugins.\n zepto.isZ = function (object) {\n return object instanceof zepto.Z;\n };\n\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\n // takes a CSS selector and an optional context (and handles various\n // special cases).\n // This method can be overridden in plugins.\n zepto.init = function (selector, context) {\n var dom;\n // If nothing given, return an empty Zepto collection\n if (!selector) return zepto.Z();\n // Optimize for string selectors\n else if (typeof selector == 'string') {\n selector = selector.trim();\n // If it's a html fragment, create nodes from it\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\n // is thrown if the fragment doesn't begin with <\n if (selector[0] == '<' && fragmentRE.test(selector)) dom = zepto.fragment(selector, RegExp.$1, context), selector = null;\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector);\n // If it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector);\n }\n // If a function is given, call it when the DOM is ready\n else if (isFunction(selector)) return $(document).ready(selector);\n // If a Zepto collection is given, just return it\n else if (zepto.isZ(selector)) return selector;else {\n // normalize array if an array of nodes is given\n if (isArray(selector)) dom = compact(selector);\n // Wrap DOM nodes.\n else if (isObject(selector)) dom = [selector], selector = null;\n // If it's a html fragment, create nodes from it\n else if (fragmentRE.test(selector)) dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null;\n // If there's a context, create a collection on that context first, and select\n // nodes from there\n else if (context !== undefined) return $(context).find(selector);\n // And last but no least, if it's a CSS selector, use it to select nodes.\n else dom = zepto.qsa(document, selector);\n }\n // create a new Zepto collection from the nodes found\n return zepto.Z(dom, selector);\n };\n\n // `$` will be the base `Zepto` object. When calling this\n // function just call `$.zepto.init, which makes the implementation\n // details of selecting nodes and creating Zepto collections\n // patchable in plugins.\n $ = function $(selector, context) {\n return zepto.init(selector, context);\n };\n\n function extend(target, source, deep) {\n for (key in source) {\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\n if (isPlainObject(source[key]) && !isPlainObject(target[key])) target[key] = {};\n if (isArray(source[key]) && !isArray(target[key])) target[key] = [];\n extend(target[key], source[key], deep);\n } else if (source[key] !== undefined) target[key] = source[key];\n }\n }\n\n // Copy all but undefined properties from one or more\n // objects to the `target` object.\n $.extend = function (target) {\n var deep,\n args = _slice.call(arguments, 1);\n if (typeof target == 'boolean') {\n deep = target;\n target = args.shift();\n }\n args.forEach(function (arg) {\n extend(target, arg, deep);\n });\n return target;\n };\n\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\n // This method can be overridden in plugins.\n zepto.qsa = function (element, selector) {\n var found,\n maybeID = selector[0] == '#',\n maybeClass = !maybeID && selector[0] == '.',\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector,\n // Ensure that a 1 char tag name still gets checked\n isSimple = simpleSelectorRE.test(nameOnly);\n return element.getElementById && isSimple && maybeID ? // Safari DocumentFragment doesn't have getElementById\n (found = element.getElementById(nameOnly)) ? [found] : [] : element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11 ? [] : _slice.call(isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\n element.getElementsByTagName(selector) : // Or a tag\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\n );\n };\n\n function filtered(nodes, selector) {\n return selector == null ? $(nodes) : $(nodes).filter(selector);\n }\n\n $.contains = document.documentElement.contains ? function (parent, node) {\n return parent !== node && parent.contains(node);\n } : function (parent, node) {\n while (node && (node = node.parentNode)) {\n if (node === parent) return true;\n }return false;\n };\n\n function funcArg(context, arg, idx, payload) {\n return isFunction(arg) ? arg.call(context, idx, payload) : arg;\n }\n\n function setAttribute(node, name, value) {\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value);\n }\n\n // access className property while respecting SVGAnimatedString\n function className(node, value) {\n var klass = node.className || '',\n svg = klass && klass.baseVal !== undefined;\n\n if (value === undefined) return svg ? klass.baseVal : klass;\n svg ? klass.baseVal = value : node.className = value;\n }\n\n // \"true\" => true\n // \"false\" => false\n // \"null\" => null\n // \"42\" => 42\n // \"42.5\" => 42.5\n // \"08\" => \"08\"\n // JSON => parse if valid\n // String => self\n function deserializeValue(value) {\n try {\n return value ? value == \"true\" || (value == \"false\" ? false : value == \"null\" ? null : +value + \"\" == value ? +value : /^[\\[\\{]/.test(value) ? $.parseJSON(value) : value) : value;\n } catch (e) {\n return value;\n }\n }\n\n $.type = type;\n $.isFunction = isFunction;\n $.isWindow = isWindow;\n $.isArray = isArray;\n $.isPlainObject = isPlainObject;\n\n $.isEmptyObject = function (obj) {\n var name;\n for (name in obj) {\n return false;\n }return true;\n };\n\n $.isNumeric = function (val) {\n var num = Number(val),\n type = typeof val === 'undefined' ? 'undefined' : _typeof(val);\n return val != null && type != 'boolean' && (type != 'string' || val.length) && !isNaN(num) && isFinite(num) || false;\n };\n\n $.inArray = function (elem, array, i) {\n return emptyArray.indexOf.call(array, elem, i);\n };\n\n $.camelCase = camelize;\n $.trim = function (str) {\n return str == null ? \"\" : String.prototype.trim.call(str);\n };\n\n // plugin compatibility\n $.uuid = 0;\n $.support = {};\n $.expr = {};\n $.noop = function () {};\n\n $.map = function (elements, callback) {\n var value,\n values = [],\n i,\n key;\n if (likeArray(elements)) for (i = 0; i < elements.length; i++) {\n value = callback(elements[i], i);\n if (value != null) values.push(value);\n } else for (key in elements) {\n value = callback(elements[key], key);\n if (value != null) values.push(value);\n }\n return flatten(values);\n };\n\n $.each = function (elements, callback) {\n var i, key;\n if (likeArray(elements)) {\n for (i = 0; i < elements.length; i++) {\n if (callback.call(elements[i], i, elements[i]) === false) return elements;\n }\n } else {\n for (key in elements) {\n if (callback.call(elements[key], key, elements[key]) === false) return elements;\n }\n }\n\n return elements;\n };\n\n $.grep = function (elements, callback) {\n return _filter.call(elements, callback);\n };\n\n if (window.JSON) $.parseJSON = JSON.parse;\n\n // Populate the class2type map\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function (i, name) {\n class2type[\"[object \" + name + \"]\"] = name.toLowerCase();\n });\n\n // Define methods that will be available on all\n // Zepto collections\n $.fn = {\n constructor: zepto.Z,\n length: 0,\n\n // Because a collection acts like an array\n // copy over these useful array functions.\n forEach: emptyArray.forEach,\n reduce: emptyArray.reduce,\n push: emptyArray.push,\n sort: emptyArray.sort,\n splice: emptyArray.splice,\n indexOf: emptyArray.indexOf,\n concat: function concat() {\n var i,\n value,\n args = [];\n for (i = 0; i < arguments.length; i++) {\n value = arguments[i];\n args[i] = zepto.isZ(value) ? value.toArray() : value;\n }\n return _concat.apply(zepto.isZ(this) ? this.toArray() : this, args);\n },\n\n // `map` and `slice` in the jQuery API work differently\n // from their array counterparts\n map: function map(fn) {\n return $($.map(this, function (el, i) {\n return fn.call(el, i, el);\n }));\n },\n slice: function slice() {\n return $(_slice.apply(this, arguments));\n },\n\n ready: function ready(callback) {\n // need to check if document.body exists for IE as that browser reports\n // document ready when it hasn't yet created the body element\n if (readyRE.test(document.readyState) && document.body) callback($);else document.addEventListener('DOMContentLoaded', function () {\n callback($);\n }, false);\n return this;\n },\n get: function get(idx) {\n return idx === undefined ? _slice.call(this) : this[idx >= 0 ? idx : idx + this.length];\n },\n toArray: function toArray() {\n return this.get();\n },\n size: function size() {\n return this.length;\n },\n remove: function remove() {\n return this.each(function () {\n if (this.parentNode != null) this.parentNode.removeChild(this);\n });\n },\n each: function each(callback) {\n emptyArray.every.call(this, function (el, idx) {\n return callback.call(el, idx, el) !== false;\n });\n return this;\n },\n filter: function filter(selector) {\n if (isFunction(selector)) return this.not(this.not(selector));\n return $(_filter.call(this, function (element) {\n return zepto.matches(element, selector);\n }));\n },\n add: function add(selector, context) {\n return $(uniq(this.concat($(selector, context))));\n },\n is: function is(selector) {\n return this.length > 0 && zepto.matches(this[0], selector);\n },\n not: function not(selector) {\n var nodes = [];\n if (isFunction(selector) && selector.call !== undefined) this.each(function (idx) {\n if (!selector.call(this, idx)) nodes.push(this);\n });else {\n var excludes = typeof selector == 'string' ? this.filter(selector) : likeArray(selector) && isFunction(selector.item) ? _slice.call(selector) : $(selector);\n this.forEach(function (el) {\n if (excludes.indexOf(el) < 0) nodes.push(el);\n });\n }\n return $(nodes);\n },\n has: function has(selector) {\n return this.filter(function () {\n return isObject(selector) ? $.contains(this, selector) : $(this).find(selector).size();\n });\n },\n eq: function eq(idx) {\n return idx === -1 ? this.slice(idx) : this.slice(idx, +idx + 1);\n },\n first: function first() {\n var el = this[0];\n return el && !isObject(el) ? el : $(el);\n },\n last: function last() {\n var el = this[this.length - 1];\n return el && !isObject(el) ? el : $(el);\n },\n find: function find(selector) {\n var result,\n $this = this;\n if (!selector) result = $();else if ((typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) == 'object') result = $(selector).filter(function () {\n var node = this;\n return emptyArray.some.call($this, function (parent) {\n return $.contains(parent, node);\n });\n });else if (this.length == 1) result = $(zepto.qsa(this[0], selector));else result = this.map(function () {\n return zepto.qsa(this, selector);\n });\n return result;\n },\n closest: function closest(selector, context) {\n var nodes = [],\n collection = (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) == 'object' && $(selector);\n this.each(function (_, node) {\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector))) {\n node = node !== context && !isDocument(node) && node.parentNode;\n }if (node && nodes.indexOf(node) < 0) nodes.push(node);\n });\n return $(nodes);\n },\n parents: function parents(selector) {\n var ancestors = [],\n nodes = this;\n while (nodes.length > 0) {\n nodes = $.map(nodes, function (node) {\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\n ancestors.push(node);\n return node;\n }\n });\n }return filtered(ancestors, selector);\n },\n parent: function parent(selector) {\n return filtered(uniq(this.pluck('parentNode')), selector);\n },\n children: function children(selector) {\n return filtered(this.map(function () {\n return _children(this);\n }), selector);\n },\n contents: function contents() {\n return this.map(function () {\n return this.contentDocument || _slice.call(this.childNodes);\n });\n },\n siblings: function siblings(selector) {\n return filtered(this.map(function (i, el) {\n return _filter.call(_children(el.parentNode), function (child) {\n return child !== el;\n });\n }), selector);\n },\n empty: function empty() {\n return this.each(function () {\n this.innerHTML = '';\n });\n },\n // `pluck` is borrowed from Prototype.js\n pluck: function pluck(property) {\n return $.map(this, function (el) {\n return el[property];\n });\n },\n show: function show() {\n return this.each(function () {\n this.style.display == \"none\" && (this.style.display = '');\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\") this.style.display = defaultDisplay(this.nodeName);\n });\n },\n replaceWith: function replaceWith(newContent) {\n return this.before(newContent).remove();\n },\n wrap: function wrap(structure) {\n var func = isFunction(structure);\n if (this[0] && !func) var dom = $(structure).get(0),\n clone = dom.parentNode || this.length > 1;\n\n return this.each(function (index) {\n $(this).wrapAll(func ? structure.call(this, index) : clone ? dom.cloneNode(true) : dom);\n });\n },\n wrapAll: function wrapAll(structure) {\n if (this[0]) {\n $(this[0]).before(structure = $(structure));\n var children;\n // drill down to the inmost element\n while ((children = structure.children()).length) {\n structure = children.first();\n }$(structure).append(this);\n }\n return this;\n },\n wrapInner: function wrapInner(structure) {\n var func = isFunction(structure);\n return this.each(function (index) {\n var self = $(this),\n contents = self.contents(),\n dom = func ? structure.call(this, index) : structure;\n contents.length ? contents.wrapAll(dom) : self.append(dom);\n });\n },\n unwrap: function unwrap() {\n this.parent().each(function () {\n $(this).replaceWith($(this).children());\n });\n return this;\n },\n clone: function clone() {\n return this.map(function () {\n return this.cloneNode(true);\n });\n },\n hide: function hide() {\n return this.css(\"display\", \"none\");\n },\n toggle: function toggle(setting) {\n return this.each(function () {\n var el = $(this);(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide();\n });\n },\n prev: function prev(selector) {\n return $(this.pluck('previousElementSibling')).filter(selector || '*');\n },\n next: function next(selector) {\n return $(this.pluck('nextElementSibling')).filter(selector || '*');\n },\n html: function html(_html) {\n return 0 in arguments ? this.each(function (idx) {\n var originHtml = this.innerHTML;\n $(this).empty().append(funcArg(this, _html, idx, originHtml));\n }) : 0 in this ? this[0].innerHTML : null;\n },\n text: function text(_text) {\n return 0 in arguments ? this.each(function (idx) {\n var newText = funcArg(this, _text, idx, this.textContent);\n this.textContent = newText == null ? '' : '' + newText;\n }) : 0 in this ? this.pluck('textContent').join(\"\") : null;\n },\n attr: function attr(name, value) {\n var result;\n return typeof name == 'string' && !(1 in arguments) ? 0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined : this.each(function (idx) {\n if (this.nodeType !== 1) return;\n if (isObject(name)) for (key in name) {\n setAttribute(this, key, name[key]);\n } else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)));\n });\n },\n removeAttr: function removeAttr(name) {\n return this.each(function () {\n this.nodeType === 1 && name.split(' ').forEach(function (attribute) {\n setAttribute(this, attribute);\n }, this);\n });\n },\n prop: function prop(name, value) {\n name = propMap[name] || name;\n return 1 in arguments ? this.each(function (idx) {\n this[name] = funcArg(this, value, idx, this[name]);\n }) : this[0] && this[0][name];\n },\n removeProp: function removeProp(name) {\n name = propMap[name] || name;\n return this.each(function () {\n delete this[name];\n });\n },\n data: function data(name, value) {\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase();\n\n var data = 1 in arguments ? this.attr(attrName, value) : this.attr(attrName);\n\n return data !== null ? deserializeValue(data) : undefined;\n },\n val: function val(value) {\n if (0 in arguments) {\n if (value == null) value = \"\";\n return this.each(function (idx) {\n this.value = funcArg(this, value, idx, this.value);\n });\n } else {\n return this[0] && (this[0].multiple ? $(this[0]).find('option').filter(function () {\n return this.selected;\n }).pluck('value') : this[0].value);\n }\n },\n offset: function offset(coordinates) {\n if (coordinates) return this.each(function (index) {\n var $this = $(this),\n coords = funcArg(this, coordinates, index, $this.offset()),\n parentOffset = $this.offsetParent().offset(),\n props = {\n top: coords.top - parentOffset.top,\n left: coords.left - parentOffset.left\n };\n\n if ($this.css('position') == 'static') props['position'] = 'relative';\n $this.css(props);\n });\n if (!this.length) return null;\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0])) return { top: 0, left: 0 };\n var obj = this[0].getBoundingClientRect();\n return {\n left: obj.left + window.pageXOffset,\n top: obj.top + window.pageYOffset,\n width: Math.round(obj.width),\n height: Math.round(obj.height)\n };\n },\n css: function css(property, value) {\n if (arguments.length < 2) {\n var element = this[0];\n if (typeof property == 'string') {\n if (!element) return;\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property);\n } else if (isArray(property)) {\n if (!element) return;\n var props = {};\n var computedStyle = getComputedStyle(element, '');\n $.each(property, function (_, prop) {\n props[prop] = element.style[camelize(prop)] || computedStyle.getPropertyValue(prop);\n });\n return props;\n }\n }\n\n var css = '';\n if (type(property) == 'string') {\n if (!value && value !== 0) this.each(function () {\n this.style.removeProperty(dasherize(property));\n });else css = dasherize(property) + \":\" + maybeAddPx(property, value);\n } else {\n for (key in property) {\n if (!property[key] && property[key] !== 0) this.each(function () {\n this.style.removeProperty(dasherize(key));\n });else css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';';\n }\n }\n\n return this.each(function () {\n this.style.cssText += ';' + css;\n });\n },\n index: function index(element) {\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0]);\n },\n hasClass: function hasClass(name) {\n if (!name) return false;\n return emptyArray.some.call(this, function (el) {\n return this.test(className(el));\n }, classRE(name));\n },\n addClass: function addClass(name) {\n if (!name) return this;\n return this.each(function (idx) {\n if (!('className' in this)) return;\n classList = [];\n var cls = className(this),\n newName = funcArg(this, name, idx, cls);\n newName.split(/\\s+/g).forEach(function (klass) {\n if (!$(this).hasClass(klass)) classList.push(klass);\n }, this);\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"));\n });\n },\n removeClass: function removeClass(name) {\n return this.each(function (idx) {\n if (!('className' in this)) return;\n if (name === undefined) return className(this, '');\n classList = className(this);\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function (klass) {\n classList = classList.replace(classRE(klass), \" \");\n });\n className(this, classList.trim());\n });\n },\n toggleClass: function toggleClass(name, when) {\n if (!name) return this;\n return this.each(function (idx) {\n var $this = $(this),\n names = funcArg(this, name, idx, className(this));\n names.split(/\\s+/g).forEach(function (klass) {\n (when === undefined ? !$this.hasClass(klass) : when) ? $this.addClass(klass) : $this.removeClass(klass);\n });\n });\n },\n scrollTop: function scrollTop(value) {\n if (!this.length) return;\n var hasScrollTop = 'scrollTop' in this[0];\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset;\n return this.each(hasScrollTop ? function () {\n this.scrollTop = value;\n } : function () {\n this.scrollTo(this.scrollX, value);\n });\n },\n scrollLeft: function scrollLeft(value) {\n if (!this.length) return;\n var hasScrollLeft = 'scrollLeft' in this[0];\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset;\n return this.each(hasScrollLeft ? function () {\n this.scrollLeft = value;\n } : function () {\n this.scrollTo(value, this.scrollY);\n });\n },\n position: function position() {\n if (!this.length) return;\n\n var elem = this[0],\n\n // Get *real* offsetParent\n offsetParent = this.offsetParent(),\n\n // Get correct offsets\n offset = this.offset(),\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();\n\n // Subtract element margins\n // note: when an element has margin: auto the offsetLeft and marginLeft\n // are the same in Safari causing offset.left to incorrectly be 0\n offset.top -= parseFloat($(elem).css('margin-top')) || 0;\n offset.left -= parseFloat($(elem).css('margin-left')) || 0;\n\n // Add offsetParent borders\n parentOffset.top += parseFloat($(offsetParent[0]).css('border-top-width')) || 0;\n parentOffset.left += parseFloat($(offsetParent[0]).css('border-left-width')) || 0;\n\n // Subtract the two offsets\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left\n };\n },\n offsetParent: function offsetParent() {\n return this.map(function () {\n var parent = this.offsetParent || document.body;\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\") {\n parent = parent.offsetParent;\n }return parent;\n });\n }\n\n // for now\n };$.fn.detach = $.fn.remove\n\n // Generate the `width` and `height` functions\n ;['width', 'height'].forEach(function (dimension) {\n var dimensionProperty = dimension.replace(/./, function (m) {\n return m[0].toUpperCase();\n });\n\n $.fn[dimension] = function (value) {\n var offset,\n el = this[0];\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] : isDocument(el) ? el.documentElement['scroll' + dimensionProperty] : (offset = this.offset()) && offset[dimension];else return this.each(function (idx) {\n el = $(this);\n el.css(dimension, funcArg(this, value, idx, el[dimension]()));\n });\n };\n });\n\n function traverseNode(node, fun) {\n fun(node);\n for (var i = 0, len = node.childNodes.length; i < len; i++) {\n traverseNode(node.childNodes[i], fun);\n }\n }\n\n // Generate the `after`, `prepend`, `before`, `append`,\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\n adjacencyOperators.forEach(function (operator, operatorIndex) {\n var inside = operatorIndex % 2; //=> prepend, append\n\n $.fn[operator] = function () {\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\n var argType,\n nodes = $.map(arguments, function (arg) {\n var arr = [];\n argType = type(arg);\n if (argType == \"array\") {\n arg.forEach(function (el) {\n if (el.nodeType !== undefined) return arr.push(el);else if ($.zepto.isZ(el)) return arr = arr.concat(el.get());\n arr = arr.concat(zepto.fragment(el));\n });\n return arr;\n }\n return argType == \"object\" || arg == null ? arg : zepto.fragment(arg);\n }),\n parent,\n copyByClone = this.length > 1;\n if (nodes.length < 1) return this;\n\n return this.each(function (_, target) {\n parent = inside ? target : target.parentNode;\n\n // convert all methods to a \"before\" operation\n target = operatorIndex == 0 ? target.nextSibling : operatorIndex == 1 ? target.firstChild : operatorIndex == 2 ? target : null;\n\n var parentInDocument = $.contains(document.documentElement, parent);\n\n nodes.forEach(function (node) {\n if (copyByClone) node = node.cloneNode(true);else if (!parent) return $(node).remove();\n\n parent.insertBefore(node, target);\n if (parentInDocument) traverseNode(node, function (el) {\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' && (!el.type || el.type === 'text/javascript') && !el.src) {\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window;\n target['eval'].call(target, el.innerHTML);\n }\n });\n });\n });\n };\n\n // after => insertAfter\n // prepend => prependTo\n // before => insertBefore\n // append => appendTo\n $.fn[inside ? operator + 'To' : 'insert' + (operatorIndex ? 'Before' : 'After')] = function (html) {\n $(html)[operator](this);\n return this;\n };\n });\n\n zepto.Z.prototype = Z.prototype = $.fn;\n\n // Export internal API functions in the `$.zepto` namespace\n zepto.uniq = uniq;\n zepto.deserializeValue = deserializeValue;\n $.zepto = zepto;\n\n return $;\n}();\n\nwindow.Zepto = Zepto;\nwindow.$ === undefined && (window.$ = Zepto);(function ($) {\n var _zid = 1,\n undefined,\n slice = Array.prototype.slice,\n isFunction = $.isFunction,\n isString = function isString(obj) {\n return typeof obj == 'string';\n },\n handlers = {},\n specialEvents = {},\n focusinSupported = 'onfocusin' in window,\n focus = { focus: 'focusin', blur: 'focusout' },\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' };\n\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents';\n\n function zid(element) {\n return element._zid || (element._zid = _zid++);\n }\n function findHandlers(element, event, fn, selector) {\n event = parse(event);\n if (event.ns) var matcher = matcherFor(event.ns);\n return (handlers[zid(element)] || []).filter(function (handler) {\n return handler && (!event.e || handler.e == event.e) && (!event.ns || matcher.test(handler.ns)) && (!fn || zid(handler.fn) === zid(fn)) && (!selector || handler.sel == selector);\n });\n }\n function parse(event) {\n var parts = ('' + event).split('.');\n return { e: parts[0], ns: parts.slice(1).sort().join(' ') };\n }\n function matcherFor(ns) {\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)');\n }\n\n function eventCapture(handler, captureSetting) {\n return handler.del && !focusinSupported && handler.e in focus || !!captureSetting;\n }\n\n function realEvent(type) {\n return hover[type] || focusinSupported && focus[type] || type;\n }\n\n function add(element, events, fn, data, selector, delegator, capture) {\n var id = zid(element),\n set = handlers[id] || (handlers[id] = []);\n events.split(/\\s/).forEach(function (event) {\n if (event == 'ready') return $(document).ready(fn);\n var handler = parse(event);\n handler.fn = fn;\n handler.sel = selector;\n // emulate mouseenter, mouseleave\n if (handler.e in hover) fn = function fn(e) {\n var related = e.relatedTarget;\n if (!related || related !== this && !$.contains(this, related)) return handler.fn.apply(this, arguments);\n };\n handler.del = delegator;\n var callback = delegator || fn;\n handler.proxy = function (e) {\n e = compatible(e);\n if (e.isImmediatePropagationStopped()) return;\n e.data = data;\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args));\n if (result === false) e.preventDefault(), e.stopPropagation();\n return result;\n };\n handler.i = set.length;\n set.push(handler);\n if ('addEventListener' in element) element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture));\n });\n }\n function remove(element, events, fn, selector, capture) {\n var id = zid(element);(events || '').split(/\\s/).forEach(function (event) {\n findHandlers(element, event, fn, selector).forEach(function (handler) {\n delete handlers[id][handler.i];\n if ('removeEventListener' in element) element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture));\n });\n });\n }\n\n $.event = { add: add, remove: remove };\n\n $.proxy = function (fn, context) {\n var args = 2 in arguments && slice.call(arguments, 2);\n if (isFunction(fn)) {\n var proxyFn = function proxyFn() {\n return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments);\n };\n proxyFn._zid = zid(fn);\n return proxyFn;\n } else if (isString(context)) {\n if (args) {\n args.unshift(fn[context], fn);\n return $.proxy.apply(null, args);\n } else {\n return $.proxy(fn[context], fn);\n }\n } else {\n throw new TypeError(\"expected function\");\n }\n };\n\n $.fn.bind = function (event, data, callback) {\n return this.on(event, data, callback);\n };\n $.fn.unbind = function (event, callback) {\n return this.off(event, callback);\n };\n $.fn.one = function (event, selector, data, callback) {\n return this.on(event, selector, data, callback, 1);\n };\n\n var returnTrue = function returnTrue() {\n return true;\n },\n returnFalse = function returnFalse() {\n return false;\n },\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\n eventMethods = {\n preventDefault: 'isDefaultPrevented',\n stopImmediatePropagation: 'isImmediatePropagationStopped',\n stopPropagation: 'isPropagationStopped'\n };\n\n function compatible(event, source) {\n if (source || !event.isDefaultPrevented) {\n source || (source = event);\n\n $.each(eventMethods, function (name, predicate) {\n var sourceMethod = source[name];\n event[name] = function () {\n this[predicate] = returnTrue;\n return sourceMethod && sourceMethod.apply(source, arguments);\n };\n event[predicate] = returnFalse;\n });\n\n event.timeStamp || (event.timeStamp = Date.now());\n\n if (source.defaultPrevented !== undefined ? source.defaultPrevented : 'returnValue' in source ? source.returnValue === false : source.getPreventDefault && source.getPreventDefault()) event.isDefaultPrevented = returnTrue;\n }\n return event;\n }\n\n function createProxy(event) {\n var key,\n proxy = { originalEvent: event };\n for (key in event) {\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key];\n }return compatible(proxy, event);\n }\n\n $.fn.delegate = function (selector, event, callback) {\n return this.on(event, selector, callback);\n };\n $.fn.undelegate = function (selector, event, callback) {\n return this.off(event, selector, callback);\n };\n\n $.fn.live = function (event, callback) {\n $(document.body).delegate(this.selector, event, callback);\n return this;\n };\n $.fn.die = function (event, callback) {\n $(document.body).undelegate(this.selector, event, callback);\n return this;\n };\n\n $.fn.on = function (event, selector, data, callback, one) {\n var autoRemove,\n delegator,\n $this = this;\n if (event && !isString(event)) {\n $.each(event, function (type, fn) {\n $this.on(type, selector, data, fn, one);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) callback = data, data = selector, selector = undefined;\n if (callback === undefined || data === false) callback = data, data = undefined;\n\n if (callback === false) callback = returnFalse;\n\n return $this.each(function (_, element) {\n if (one) autoRemove = function autoRemove(e) {\n remove(element, e.type, callback);\n return callback.apply(this, arguments);\n };\n\n if (selector) delegator = function delegator(e) {\n var evt,\n match = $(e.target).closest(selector, element).get(0);\n if (match && match !== element) {\n evt = $.extend(createProxy(e), { currentTarget: match, liveFired: element });\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)));\n }\n };\n\n add(element, event, callback, data, selector, delegator || autoRemove);\n });\n };\n $.fn.off = function (event, selector, callback) {\n var $this = this;\n if (event && !isString(event)) {\n $.each(event, function (type, fn) {\n $this.off(type, selector, fn);\n });\n return $this;\n }\n\n if (!isString(selector) && !isFunction(callback) && callback !== false) callback = selector, selector = undefined;\n\n if (callback === false) callback = returnFalse;\n\n return $this.each(function () {\n remove(this, event, callback, selector);\n });\n };\n\n $.fn.trigger = function (event, args) {\n event = isString(event) || $.isPlainObject(event) ? $.Event(event) : compatible(event);\n event._args = args;\n return this.each(function () {\n // handle focus(), blur() by calling them directly\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]();\n // items in the collection might not be DOM elements\n else if ('dispatchEvent' in this) this.dispatchEvent(event);else $(this).triggerHandler(event, args);\n });\n };\n\n // triggers event handlers on current element just as if an event occurred,\n // doesn't trigger an actual event, doesn't bubble\n $.fn.triggerHandler = function (event, args) {\n var e, result;\n this.each(function (i, element) {\n e = createProxy(isString(event) ? $.Event(event) : event);\n e._args = args;\n e.target = element;\n $.each(findHandlers(element, event.type || event), function (i, handler) {\n result = handler.proxy(e);\n if (e.isImmediatePropagationStopped()) return false;\n });\n });\n return result;\n }\n\n // shortcut methods for `.bind(event, fn)` for each event type\n ;('focusin focusout focus blur load resize scroll unload click dblclick ' + 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave ' + 'change select keydown keypress keyup error').split(' ').forEach(function (event) {\n $.fn[event] = function (callback) {\n return 0 in arguments ? this.bind(event, callback) : this.trigger(event);\n };\n });\n\n $.Event = function (type, props) {\n if (!isString(type)) props = type, type = props.type;\n var event = document.createEvent(specialEvents[type] || 'Events'),\n bubbles = true;\n if (props) for (var name in props) {\n name == 'bubbles' ? bubbles = !!props[name] : event[name] = props[name];\n }event.initEvent(type, bubbles, true);\n return compatible(event);\n };\n})(Zepto);(function ($) {\n var jsonpID = +new Date(),\n document = window.document,\n key,\n name,\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\n xmlTypeRE = /^(?:text|application)\\/xml/i,\n jsonType = 'application/json',\n htmlType = 'text/html',\n blankRE = /^\\s*$/,\n originAnchor = document.createElement('a');\n\n originAnchor.href = window.location.href;\n\n // trigger a custom event and return false if it was cancelled\n function triggerAndReturn(context, eventName, data) {\n var event = $.Event(eventName);\n $(context).trigger(event, data);\n return !event.isDefaultPrevented();\n }\n\n // trigger an Ajax \"global\" event\n function triggerGlobal(settings, context, eventName, data) {\n if (settings.global) return triggerAndReturn(context || document, eventName, data);\n }\n\n // Number of active Ajax requests\n $.active = 0;\n\n function ajaxStart(settings) {\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart');\n }\n function ajaxStop(settings) {\n if (settings.global && ! --$.active) triggerGlobal(settings, null, 'ajaxStop');\n }\n\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\n function ajaxBeforeSend(xhr, settings) {\n var context = settings.context;\n if (settings.beforeSend.call(context, xhr, settings) === false || triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false) return false;\n\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings]);\n }\n function ajaxSuccess(data, xhr, settings, deferred) {\n var context = settings.context,\n status = 'success';\n settings.success.call(context, data, status, xhr);\n if (deferred) deferred.resolveWith(context, [data, status, xhr]);\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data]);\n ajaxComplete(status, xhr, settings);\n }\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\n function ajaxError(error, type, xhr, settings, deferred) {\n var context = settings.context;\n settings.error.call(context, xhr, type, error);\n if (deferred) deferred.rejectWith(context, [xhr, type, error]);\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type]);\n ajaxComplete(type, xhr, settings);\n }\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\n function ajaxComplete(status, xhr, settings) {\n var context = settings.context;\n settings.complete.call(context, xhr, status);\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings]);\n ajaxStop(settings);\n }\n\n function ajaxDataFilter(data, type, settings) {\n if (settings.dataFilter == empty) return data;\n var context = settings.context;\n return settings.dataFilter.call(context, data, type);\n }\n\n // Empty function, used as default callback\n function empty() {}\n\n $.ajaxJSONP = function (options, deferred) {\n if (!('type' in options)) return $.ajax(options);\n\n var _callbackName = options.jsonpCallback,\n callbackName = ($.isFunction(_callbackName) ? _callbackName() : _callbackName) || 'Zepto' + jsonpID++,\n script = document.createElement('script'),\n originalCallback = window[callbackName],\n responseData,\n abort = function abort(errorType) {\n $(script).triggerHandler('error', errorType || 'abort');\n },\n xhr = { abort: abort },\n abortTimeout;\n\n if (deferred) deferred.promise(xhr);\n\n $(script).on('load error', function (e, errorType) {\n clearTimeout(abortTimeout);\n $(script).off().remove();\n\n if (e.type == 'error' || !responseData) {\n ajaxError(null, errorType || 'error', xhr, options, deferred);\n } else {\n ajaxSuccess(responseData[0], xhr, options, deferred);\n }\n\n window[callbackName] = originalCallback;\n if (responseData && $.isFunction(originalCallback)) originalCallback(responseData[0]);\n\n originalCallback = responseData = undefined;\n });\n\n if (ajaxBeforeSend(xhr, options) === false) {\n abort('abort');\n return xhr;\n }\n\n window[callbackName] = function () {\n responseData = arguments;\n };\n\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName);\n document.head.appendChild(script);\n\n if (options.timeout > 0) abortTimeout = setTimeout(function () {\n abort('timeout');\n }, options.timeout);\n\n return xhr;\n };\n\n $.ajaxSettings = {\n // Default type of request\n type: 'GET',\n // Callback that is executed before request\n beforeSend: empty,\n // Callback that is executed if the request succeeds\n success: empty,\n // Callback that is executed the the server drops error\n error: empty,\n // Callback that is executed on request complete (both: error and success)\n complete: empty,\n // The context for the callbacks\n context: null,\n // Whether to trigger \"global\" Ajax events\n global: true,\n // Transport\n xhr: function xhr() {\n return new window.XMLHttpRequest();\n },\n // MIME types mapping\n // IIS returns Javascript as \"application/x-javascript\"\n accepts: {\n script: 'text/javascript, application/javascript, application/x-javascript',\n json: jsonType,\n xml: 'application/xml, text/xml',\n html: htmlType,\n text: 'text/plain'\n },\n // Whether the request is to another domain\n crossDomain: false,\n // Default timeout\n timeout: 0,\n // Whether data should be serialized to string\n processData: true,\n // Whether the browser should be allowed to cache GET responses\n cache: true,\n //Used to handle the raw response data of XMLHttpRequest.\n //This is a pre-filtering function to sanitize the response.\n //The sanitized response should be returned\n dataFilter: empty\n };\n\n function mimeToDataType(mime) {\n if (mime) mime = mime.split(';', 2)[0];\n return mime && (mime == htmlType ? 'html' : mime == jsonType ? 'json' : scriptTypeRE.test(mime) ? 'script' : xmlTypeRE.test(mime) && 'xml') || 'text';\n }\n\n function appendQuery(url, query) {\n if (query == '') return url;\n return (url + '&' + query).replace(/[&?]{1,2}/, '?');\n }\n\n // serialize payload and append it to the URL for GET requests\n function serializeData(options) {\n if (options.processData && options.data && $.type(options.data) != \"string\") options.data = $.param(options.data, options.traditional);\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType)) options.url = appendQuery(options.url, options.data), options.data = undefined;\n }\n\n $.ajax = function (options) {\n var settings = $.extend({}, options || {}),\n deferred = $.Deferred && $.Deferred(),\n urlAnchor,\n hashIndex;\n for (key in $.ajaxSettings) {\n if (settings[key] === undefined) settings[key] = $.ajaxSettings[key];\n }ajaxStart(settings);\n\n if (!settings.crossDomain) {\n urlAnchor = document.createElement('a');\n urlAnchor.href = settings.url;\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\n urlAnchor.href = urlAnchor.href;\n settings.crossDomain = originAnchor.protocol + '//' + originAnchor.host !== urlAnchor.protocol + '//' + urlAnchor.host;\n }\n\n if (!settings.url) settings.url = window.location.toString();\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex);\n serializeData(settings);\n\n var dataType = settings.dataType,\n hasPlaceholder = /\\?.+=\\?/.test(settings.url);\n if (hasPlaceholder) dataType = 'jsonp';\n\n if (settings.cache === false || (!options || options.cache !== true) && ('script' == dataType || 'jsonp' == dataType)) settings.url = appendQuery(settings.url, '_=' + Date.now());\n\n if ('jsonp' == dataType) {\n if (!hasPlaceholder) settings.url = appendQuery(settings.url, settings.jsonp ? settings.jsonp + '=?' : settings.jsonp === false ? '' : 'callback=?');\n return $.ajaxJSONP(settings, deferred);\n }\n\n var mime = settings.accepts[dataType],\n headers = {},\n setHeader = function setHeader(name, value) {\n headers[name.toLowerCase()] = [name, value];\n },\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\n xhr = settings.xhr(),\n nativeSetHeader = xhr.setRequestHeader,\n abortTimeout;\n\n if (deferred) deferred.promise(xhr);\n\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest');\n setHeader('Accept', mime || '*/*');\n if (mime = settings.mimeType || mime) {\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0];\n xhr.overrideMimeType && xhr.overrideMimeType(mime);\n }\n if (settings.contentType || settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET') setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded');\n\n if (settings.headers) for (name in settings.headers) {\n setHeader(name, settings.headers[name]);\n }xhr.setRequestHeader = setHeader;\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState == 4) {\n xhr.onreadystatechange = empty;\n clearTimeout(abortTimeout);\n var result,\n error = false;\n if (xhr.status >= 200 && xhr.status < 300 || xhr.status == 304 || xhr.status == 0 && protocol == 'file:') {\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'));\n\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob') result = xhr.response;else {\n result = xhr.responseText;\n\n try {\n // http://perfectionkills.com/global-eval-what-are-the-options/\n // sanitize response accordingly if data filter callback provided\n result = ajaxDataFilter(result, dataType, settings);\n if (dataType == 'script') (1, eval)(result);else if (dataType == 'xml') result = xhr.responseXML;else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result);\n } catch (e) {\n error = e;\n }\n\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred);\n }\n\n ajaxSuccess(result, xhr, settings, deferred);\n } else {\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred);\n }\n }\n };\n\n if (ajaxBeforeSend(xhr, settings) === false) {\n xhr.abort();\n ajaxError(null, 'abort', xhr, settings, deferred);\n return xhr;\n }\n\n var async = 'async' in settings ? settings.async : true;\n xhr.open(settings.type, settings.url, async, settings.username, settings.password);\n\n if (settings.xhrFields) for (name in settings.xhrFields) {\n xhr[name] = settings.xhrFields[name];\n }for (name in headers) {\n nativeSetHeader.apply(xhr, headers[name]);\n }if (settings.timeout > 0) abortTimeout = setTimeout(function () {\n xhr.onreadystatechange = empty;\n xhr.abort();\n ajaxError(null, 'timeout', xhr, settings, deferred);\n }, settings.timeout);\n\n // avoid sending empty string (#319)\n xhr.send(settings.data ? settings.data : null);\n return xhr;\n };\n\n // handle optional data/success arguments\n function parseArguments(url, data, success, dataType) {\n if ($.isFunction(data)) dataType = success, success = data, data = undefined;\n if (!$.isFunction(success)) dataType = success, success = undefined;\n return {\n url: url,\n data: data,\n success: success,\n dataType: dataType\n };\n }\n\n $.get = function () /* url, data, success, dataType */{\n return $.ajax(parseArguments.apply(null, arguments));\n };\n\n $.post = function () /* url, data, success, dataType */{\n var options = parseArguments.apply(null, arguments);\n options.type = 'POST';\n return $.ajax(options);\n };\n\n $.getJSON = function () /* url, data, success */{\n var options = parseArguments.apply(null, arguments);\n options.dataType = 'json';\n return $.ajax(options);\n };\n\n $.fn.load = function (url, data, success) {\n if (!this.length) return this;\n var self = this,\n parts = url.split(/\\s/),\n selector,\n options = parseArguments(url, data, success),\n callback = options.success;\n if (parts.length > 1) options.url = parts[0], selector = parts[1];\n options.success = function (response) {\n self.html(selector ? $('<div>').html(response.replace(rscript, \"\")).find(selector) : response);\n callback && callback.apply(self, arguments);\n };\n $.ajax(options);\n return this;\n };\n\n var escape = encodeURIComponent;\n\n function serialize(params, obj, traditional, scope) {\n var type,\n array = $.isArray(obj),\n hash = $.isPlainObject(obj);\n $.each(obj, function (key, value) {\n type = $.type(value);\n if (scope) key = traditional ? scope : scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']';\n // handle data in serializeArray() format\n if (!scope && array) params.add(value.name, value.value);\n // recurse into nested objects\n else if (type == \"array\" || !traditional && type == \"object\") serialize(params, value, traditional, key);else params.add(key, value);\n });\n }\n\n $.param = function (obj, traditional) {\n var params = [];\n params.add = function (key, value) {\n if ($.isFunction(value)) value = value();\n if (value == null) value = \"\";\n this.push(escape(key) + '=' + escape(value));\n };\n serialize(params, obj, traditional);\n return params.join('&').replace(/%20/g, '+');\n };\n})(Zepto);(function ($) {\n $.fn.serializeArray = function () {\n var name,\n type,\n result = [],\n add = function add(value) {\n if (value.forEach) return value.forEach(add);\n result.push({ name: name, value: value });\n };\n if (this[0]) $.each(this[0].elements, function (_, field) {\n type = field.type, name = field.name;\n if (name && field.nodeName.toLowerCase() != 'fieldset' && !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' && (type != 'radio' && type != 'checkbox' || field.checked)) add($(field).val());\n });\n return result;\n };\n\n $.fn.serialize = function () {\n var result = [];\n this.serializeArray().forEach(function (elm) {\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value));\n });\n return result.join('&');\n };\n\n $.fn.submit = function (callback) {\n if (0 in arguments) this.bind('submit', callback);else if (this.length) {\n var event = $.Event('submit');\n this.eq(0).trigger(event);\n if (!event.isDefaultPrevented()) this.get(0).submit();\n }\n return this;\n };\n})(Zepto);(function () {\n // getComputedStyle shouldn't freak out when called\n // without a valid element as argument\n try {\n getComputedStyle(undefined);\n } catch (e) {\n var nativeGetComputedStyle = getComputedStyle;\n window.getComputedStyle = function (element, pseudoElement) {\n try {\n return nativeGetComputedStyle(element, pseudoElement);\n } catch (e) {\n return null;\n }\n };\n }\n})();\n\nmodule.exports = Zepto;\n\n/***/ }),\n\n/***/ 11:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 21:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ }),\n\n/***/ 26:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function () {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif (item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function (modules, mediaQuery) {\n\t\tif (typeof modules === \"string\") modules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor (var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif (typeof id === \"number\") alreadyImportedModules[id] = true;\n\t\t}\n\t\tfor (i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif (typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif (mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if (mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n/***/ }),\n\n/***/ 27:\n/***/ (function(module, exports) {\n\n/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n\n\n/***/ }),\n\n/***/ 9:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n!function () {\n var a = \"@charset \\\"utf-8\\\";html{overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html *{outline:0;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{font-family:sans-serif}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}abbr,acronym{border:0;font-variant:normal}del{text-decoration:line-through}address,caption,cite,code,dfn,th,var{font-style:normal;font-weight:500}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:500}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}ins,a{text-decoration:none}\",\n b = document.createElement(\"style\");if (document.getElementsByTagName(\"head\")[0].appendChild(b), b.styleSheet) b.styleSheet.disabled || (b.styleSheet.cssText = a);else try {\n b.innerHTML = a;\n } catch (c) {\n b.innerText = a;\n }\n}();!function (a, b) {\n function c() {\n var b = f.getBoundingClientRect().width;b / i > 540 && (b = 540 * i);var c = b / 10;f.style.fontSize = c + \"px\", k.rem = a.rem = c;\n }var d,\n e = a.document,\n f = e.documentElement,\n g = e.querySelector('meta[name=\"viewport\"]'),\n h = e.querySelector('meta[name=\"flexible\"]'),\n i = 0,\n j = 0,\n k = b.flexible || (b.flexible = {});if (g) {\n console.warn(\"将根据已有的meta标签来设置缩放比例\");var l = g.getAttribute(\"content\").match(/initial\\-scale=([\\d\\.]+)/);l && (j = parseFloat(l[1]), i = parseInt(1 / j));\n } else if (h) {\n var m = h.getAttribute(\"content\");if (m) {\n var n = m.match(/initial\\-dpr=([\\d\\.]+)/),\n o = m.match(/maximum\\-dpr=([\\d\\.]+)/);n && (i = parseFloat(n[1]), j = parseFloat((1 / i).toFixed(2))), o && (i = parseFloat(o[1]), j = parseFloat((1 / i).toFixed(2)));\n }\n }if (!i && !j) {\n var p = (a.navigator.appVersion.match(/android/gi), a.navigator.appVersion.match(/iphone/gi)),\n q = a.devicePixelRatio;i = p ? q >= 3 && (!i || i >= 3) ? 3 : q >= 2 && (!i || i >= 2) ? 2 : 1 : 1, j = 1 / i;\n }if (f.setAttribute(\"data-dpr\", i), !g) if (g = e.createElement(\"meta\"), g.setAttribute(\"name\", \"viewport\"), g.setAttribute(\"content\", \"initial-scale=\" + j + \", maximum-scale=\" + j + \", minimum-scale=\" + j + \", user-scalable=no\"), f.firstElementChild) f.firstElementChild.appendChild(g);else {\n var r = e.createElement(\"div\");r.appendChild(g), e.write(r.innerHTML);\n }a.addEventListener(\"resize\", function () {\n clearTimeout(d), d = setTimeout(c, 300);\n }, !1), a.addEventListener(\"pageshow\", function (a) {\n a.persisted && (clearTimeout(d), d = setTimeout(c, 300));\n }, !1), \"complete\" === e.readyState ? e.body.style.fontSize = 12 * i + \"px\" : e.addEventListener(\"DOMContentLoaded\", function () {\n e.body.style.fontSize = 12 * i + \"px\";\n }, !1), c(), k.dpr = a.dpr = i, k.refreshRem = c, k.rem2px = function (a) {\n var b = parseFloat(a) * this.rem;return \"string\" == typeof a && a.match(/rem$/) && (b += \"px\"), b;\n }, k.px2rem = function (a) {\n var b = parseFloat(a) / this.rem;return \"string\" == typeof a && a.match(/px$/) && (b += \"rem\"), b;\n };\n}(window, window.lib || (window.lib = {}));\n\n/***/ })\n\n/******/ });\n\n\n// WEBPACK FOOTER //\n// js/global.js?v=ccea1eae"," \t// install a JSONP callback for chunk loading\n \tvar parentJsonpFunction = window[\"webpackJsonp\"];\n \twindow[\"webpackJsonp\"] = function webpackJsonpCallback(chunkIds, moreModules, executeModules) {\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [], result;\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules, executeModules);\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n \t\tif(executeModules) {\n \t\t\tfor(i=0; i < executeModules.length; i++) {\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = executeModules[i]);\n \t\t\t}\n \t\t}\n \t\treturn result;\n \t};\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// objects to store loaded and loading chunks\n \tvar installedChunks = {\n \t\t7: 0\n \t};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData === 0) {\n \t\t\treturn new Promise(function(resolve) { resolve(); });\n \t\t}\n\n \t\t// a Promise means \"currently loading\".\n \t\tif(installedChunkData) {\n \t\t\treturn installedChunkData[2];\n \t\t}\n\n \t\t// setup Promise in chunk cache\n \t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t});\n \t\tinstalledChunkData[2] = promise;\n\n \t\t// start chunk loading\n \t\tvar head = document.getElementsByTagName('head')[0];\n \t\tvar script = document.createElement('script');\n \t\tscript.type = 'text/javascript';\n \t\tscript.charset = 'utf-8';\n \t\tscript.async = true;\n \t\tscript.timeout = 120000;\n\n \t\tif (__webpack_require__.nc) {\n \t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t}\n \t\tscript.src = __webpack_require__.p + \"js/\" + chunkId + \".js?v=\" + \"ccea1eae\" + \"\";\n \t\tvar timeout = setTimeout(onScriptComplete, 120000);\n \t\tscript.onerror = script.onload = onScriptComplete;\n \t\tfunction onScriptComplete() {\n \t\t\t// avoid mem leaks in IE.\n \t\t\tscript.onerror = script.onload = null;\n \t\t\tclearTimeout(timeout);\n \t\t\tvar chunk = installedChunks[chunkId];\n \t\t\tif(chunk !== 0) {\n \t\t\t\tif(chunk) {\n \t\t\t\t\tchunk[1](new Error('Loading chunk ' + chunkId + ' failed.'));\n \t\t\t\t}\n \t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t}\n \t\t};\n \t\thead.appendChild(script);\n\n \t\treturn promise;\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// identity function for calling harmony imports with the correct context\n \t__webpack_require__.i = function(value) { return value; };\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, {\n \t\t\t\tconfigurable: false,\n \t\t\t\tenumerable: true,\n \t\t\t\tget: getter\n \t\t\t});\n \t\t}\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 21);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap ccea1eaea2f00d9e3f16","import '../css/base.css';\r\nimport '../js/flexible.js';\r\nimport '../js/zepto.js';\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/global.js","/* Zepto v1.2.0 - zepto event ajax form ie - zeptojs.com/license */\r\n var Zepto = (function() {\r\n var undefined, key, $, classList, emptyArray = [], concat = emptyArray.concat, filter = emptyArray.filter, slice = emptyArray.slice,\r\n document = window.document,\r\n elementDisplay = {}, classCache = {},\r\n cssNumber = { 'column-count': 1, 'columns': 1, 'font-weight': 1, 'line-height': 1,'opacity': 1, 'z-index': 1, 'zoom': 1 },\r\n fragmentRE = /^\\s*<(\\w+|!)[^>]*>/,\r\n singleTagRE = /^<(\\w+)\\s*\\/?>(?:<\\/\\1>|)$/,\r\n tagExpanderRE = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\\w:]+)[^>]*)\\/>/ig,\r\n rootNodeRE = /^(?:body|html)$/i,\r\n capitalRE = /([A-Z])/g,\r\n\r\n // special attributes that should be get/set via method calls\r\n methodAttributes = ['val', 'css', 'html', 'text', 'data', 'width', 'height', 'offset'],\r\n\r\n adjacencyOperators = [ 'after', 'prepend', 'before', 'append' ],\r\n table = document.createElement('table'),\r\n tableRow = document.createElement('tr'),\r\n containers = {\r\n 'tr': document.createElement('tbody'),\r\n 'tbody': table, 'thead': table, 'tfoot': table,\r\n 'td': tableRow, 'th': tableRow,\r\n '*': document.createElement('div')\r\n },\r\n readyRE = /complete|loaded|interactive/,\r\n simpleSelectorRE = /^[\\w-]*$/,\r\n class2type = {},\r\n toString = class2type.toString,\r\n zepto = {},\r\n camelize, uniq,\r\n tempParent = document.createElement('div'),\r\n propMap = {\r\n 'tabindex': 'tabIndex',\r\n 'readonly': 'readOnly',\r\n 'for': 'htmlFor',\r\n 'class': 'className',\r\n 'maxlength': 'maxLength',\r\n 'cellspacing': 'cellSpacing',\r\n 'cellpadding': 'cellPadding',\r\n 'rowspan': 'rowSpan',\r\n 'colspan': 'colSpan',\r\n 'usemap': 'useMap',\r\n 'frameborder': 'frameBorder',\r\n 'contenteditable': 'contentEditable'\r\n },\r\n isArray = Array.isArray ||\r\n function(object){ return object instanceof Array }\r\n\r\n zepto.matches = function(element, selector) {\r\n if (!selector || !element || element.nodeType !== 1) return false\r\n var matchesSelector = element.matches || element.webkitMatchesSelector ||\r\n element.mozMatchesSelector || element.oMatchesSelector ||\r\n element.matchesSelector\r\n if (matchesSelector) return matchesSelector.call(element, selector)\r\n // fall back to performing a selector:\r\n var match, parent = element.parentNode, temp = !parent\r\n if (temp) (parent = tempParent).appendChild(element)\r\n match = ~zepto.qsa(parent, selector).indexOf(element)\r\n temp && tempParent.removeChild(element)\r\n return match\r\n }\r\n\r\n function type(obj) {\r\n return obj == null ? String(obj) :\r\n class2type[toString.call(obj)] || \"object\"\r\n }\r\n\r\n function isFunction(value) { return type(value) == \"function\" }\r\n function isWindow(obj) { return obj != null && obj == obj.window }\r\n function isDocument(obj) { return obj != null && obj.nodeType == obj.DOCUMENT_NODE }\r\n function isObject(obj) { return type(obj) == \"object\" }\r\n function isPlainObject(obj) {\r\n return isObject(obj) && !isWindow(obj) && Object.getPrototypeOf(obj) == Object.prototype\r\n }\r\n\r\n function likeArray(obj) {\r\n var length = !!obj && 'length' in obj && obj.length,\r\n type = $.type(obj)\r\n\r\n return 'function' != type && !isWindow(obj) && (\r\n 'array' == type || length === 0 ||\r\n (typeof length == 'number' && length > 0 && (length - 1) in obj)\r\n )\r\n }\r\n\r\n function compact(array) { return filter.call(array, function(item){ return item != null }) }\r\n function flatten(array) { return array.length > 0 ? $.fn.concat.apply([], array) : array }\r\n camelize = function(str){ return str.replace(/-+(.)?/g, function(match, chr){ return chr ? chr.toUpperCase() : '' }) }\r\n function dasherize(str) {\r\n return str.replace(/::/g, '/')\r\n .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')\r\n .replace(/([a-z\\d])([A-Z])/g, '$1_$2')\r\n .replace(/_/g, '-')\r\n .toLowerCase()\r\n }\r\n uniq = function(array){ return filter.call(array, function(item, idx){ return array.indexOf(item) == idx }) }\r\n\r\n function classRE(name) {\r\n return name in classCache ?\r\n classCache[name] : (classCache[name] = new RegExp('(^|\\\\s)' + name + '(\\\\s|$)'))\r\n }\r\n\r\n function maybeAddPx(name, value) {\r\n return (typeof value == \"number\" && !cssNumber[dasherize(name)]) ? value + \"px\" : value\r\n }\r\n\r\n function defaultDisplay(nodeName) {\r\n var element, display\r\n if (!elementDisplay[nodeName]) {\r\n element = document.createElement(nodeName)\r\n document.body.appendChild(element)\r\n display = getComputedStyle(element, '').getPropertyValue(\"display\")\r\n element.parentNode.removeChild(element)\r\n display == \"none\" && (display = \"block\")\r\n elementDisplay[nodeName] = display\r\n }\r\n return elementDisplay[nodeName]\r\n }\r\n\r\n function children(element) {\r\n return 'children' in element ?\r\n slice.call(element.children) :\r\n $.map(element.childNodes, function(node){ if (node.nodeType == 1) return node })\r\n }\r\n\r\n function Z(dom, selector) {\r\n var i, len = dom ? dom.length : 0\r\n for (i = 0; i < len; i++) this[i] = dom[i]\r\n this.length = len\r\n this.selector = selector || ''\r\n }\r\n\r\n // `$.zepto.fragment` takes a html string and an optional tag name\r\n // to generate DOM nodes from the given html string.\r\n // The generated DOM nodes are returned as an array.\r\n // This function can be overridden in plugins for example to make\r\n // it compatible with browsers that don't support the DOM fully.\r\n zepto.fragment = function(html, name, properties) {\r\n var dom, nodes, container\r\n\r\n // A special case optimization for a single tag\r\n if (singleTagRE.test(html)) dom = $(document.createElement(RegExp.$1))\r\n\r\n if (!dom) {\r\n if (html.replace) html = html.replace(tagExpanderRE, \"<$1></$2>\")\r\n if (name === undefined) name = fragmentRE.test(html) && RegExp.$1\r\n if (!(name in containers)) name = '*'\r\n\r\n container = containers[name]\r\n container.innerHTML = '' + html\r\n dom = $.each(slice.call(container.childNodes), function(){\r\n container.removeChild(this)\r\n })\r\n }\r\n\r\n if (isPlainObject(properties)) {\r\n nodes = $(dom)\r\n $.each(properties, function(key, value) {\r\n if (methodAttributes.indexOf(key) > -1) nodes[key](value)\r\n else nodes.attr(key, value)\r\n })\r\n }\r\n\r\n return dom\r\n }\r\n\r\n // `$.zepto.Z` swaps out the prototype of the given `dom` array\r\n // of nodes with `$.fn` and thus supplying all the Zepto functions\r\n // to the array. This method can be overridden in plugins.\r\n zepto.Z = function(dom, selector) {\r\n return new Z(dom, selector)\r\n }\r\n\r\n // `$.zepto.isZ` should return `true` if the given object is a Zepto\r\n // collection. This method can be overridden in plugins.\r\n zepto.isZ = function(object) {\r\n return object instanceof zepto.Z\r\n }\r\n\r\n // `$.zepto.init` is Zepto's counterpart to jQuery's `$.fn.init` and\r\n // takes a CSS selector and an optional context (and handles various\r\n // special cases).\r\n // This method can be overridden in plugins.\r\n zepto.init = function(selector, context) {\r\n var dom\r\n // If nothing given, return an empty Zepto collection\r\n if (!selector) return zepto.Z()\r\n // Optimize for string selectors\r\n else if (typeof selector == 'string') {\r\n selector = selector.trim()\r\n // If it's a html fragment, create nodes from it\r\n // Note: In both Chrome 21 and Firefox 15, DOM error 12\r\n // is thrown if the fragment doesn't begin with <\r\n if (selector[0] == '<' && fragmentRE.test(selector))\r\n dom = zepto.fragment(selector, RegExp.$1, context), selector = null\r\n // If there's a context, create a collection on that context first, and select\r\n // nodes from there\r\n else if (context !== undefined) return $(context).find(selector)\r\n // If it's a CSS selector, use it to select nodes.\r\n else dom = zepto.qsa(document, selector)\r\n }\r\n // If a function is given, call it when the DOM is ready\r\n else if (isFunction(selector)) return $(document).ready(selector)\r\n // If a Zepto collection is given, just return it\r\n else if (zepto.isZ(selector)) return selector\r\n else {\r\n // normalize array if an array of nodes is given\r\n if (isArray(selector)) dom = compact(selector)\r\n // Wrap DOM nodes.\r\n else if (isObject(selector))\r\n dom = [selector], selector = null\r\n // If it's a html fragment, create nodes from it\r\n else if (fragmentRE.test(selector))\r\n dom = zepto.fragment(selector.trim(), RegExp.$1, context), selector = null\r\n // If there's a context, create a collection on that context first, and select\r\n // nodes from there\r\n else if (context !== undefined) return $(context).find(selector)\r\n // And last but no least, if it's a CSS selector, use it to select nodes.\r\n else dom = zepto.qsa(document, selector)\r\n }\r\n // create a new Zepto collection from the nodes found\r\n return zepto.Z(dom, selector)\r\n }\r\n\r\n // `$` will be the base `Zepto` object. When calling this\r\n // function just call `$.zepto.init, which makes the implementation\r\n // details of selecting nodes and creating Zepto collections\r\n // patchable in plugins.\r\n $ = function(selector, context){\r\n return zepto.init(selector, context)\r\n }\r\n\r\n function extend(target, source, deep) {\r\n for (key in source)\r\n if (deep && (isPlainObject(source[key]) || isArray(source[key]))) {\r\n if (isPlainObject(source[key]) && !isPlainObject(target[key]))\r\n target[key] = {}\r\n if (isArray(source[key]) && !isArray(target[key]))\r\n target[key] = []\r\n extend(target[key], source[key], deep)\r\n }\r\n else if (source[key] !== undefined) target[key] = source[key]\r\n }\r\n\r\n // Copy all but undefined properties from one or more\r\n // objects to the `target` object.\r\n $.extend = function(target){\r\n var deep, args = slice.call(arguments, 1)\r\n if (typeof target == 'boolean') {\r\n deep = target\r\n target = args.shift()\r\n }\r\n args.forEach(function(arg){ extend(target, arg, deep) })\r\n return target\r\n }\r\n\r\n // `$.zepto.qsa` is Zepto's CSS selector implementation which\r\n // uses `document.querySelectorAll` and optimizes for some special cases, like `#id`.\r\n // This method can be overridden in plugins.\r\n zepto.qsa = function(element, selector){\r\n var found,\r\n maybeID = selector[0] == '#',\r\n maybeClass = !maybeID && selector[0] == '.',\r\n nameOnly = maybeID || maybeClass ? selector.slice(1) : selector, // Ensure that a 1 char tag name still gets checked\r\n isSimple = simpleSelectorRE.test(nameOnly)\r\n return (element.getElementById && isSimple && maybeID) ? // Safari DocumentFragment doesn't have getElementById\r\n ( (found = element.getElementById(nameOnly)) ? [found] : [] ) :\r\n (element.nodeType !== 1 && element.nodeType !== 9 && element.nodeType !== 11) ? [] :\r\n slice.call(\r\n isSimple && !maybeID && element.getElementsByClassName ? // DocumentFragment doesn't have getElementsByClassName/TagName\r\n maybeClass ? element.getElementsByClassName(nameOnly) : // If it's simple, it could be a class\r\n element.getElementsByTagName(selector) : // Or a tag\r\n element.querySelectorAll(selector) // Or it's not simple, and we need to query all\r\n )\r\n }\r\n\r\n function filtered(nodes, selector) {\r\n return selector == null ? $(nodes) : $(nodes).filter(selector)\r\n }\r\n\r\n $.contains = document.documentElement.contains ?\r\n function(parent, node) {\r\n return parent !== node && parent.contains(node)\r\n } :\r\n function(parent, node) {\r\n while (node && (node = node.parentNode))\r\n if (node === parent) return true\r\n return false\r\n }\r\n\r\n function funcArg(context, arg, idx, payload) {\r\n return isFunction(arg) ? arg.call(context, idx, payload) : arg\r\n }\r\n\r\n function setAttribute(node, name, value) {\r\n value == null ? node.removeAttribute(name) : node.setAttribute(name, value)\r\n }\r\n\r\n // access className property while respecting SVGAnimatedString\r\n function className(node, value){\r\n var klass = node.className || '',\r\n svg = klass && klass.baseVal !== undefined\r\n\r\n if (value === undefined) return svg ? klass.baseVal : klass\r\n svg ? (klass.baseVal = value) : (node.className = value)\r\n }\r\n\r\n // \"true\" => true\r\n // \"false\" => false\r\n // \"null\" => null\r\n // \"42\" => 42\r\n // \"42.5\" => 42.5\r\n // \"08\" => \"08\"\r\n // JSON => parse if valid\r\n // String => self\r\n function deserializeValue(value) {\r\n try {\r\n return value ?\r\n value == \"true\" ||\r\n ( value == \"false\" ? false :\r\n value == \"null\" ? null :\r\n +value + \"\" == value ? +value :\r\n /^[\\[\\{]/.test(value) ? $.parseJSON(value) :\r\n value )\r\n : value\r\n } catch(e) {\r\n return value\r\n }\r\n }\r\n\r\n $.type = type\r\n $.isFunction = isFunction\r\n $.isWindow = isWindow\r\n $.isArray = isArray\r\n $.isPlainObject = isPlainObject\r\n\r\n $.isEmptyObject = function(obj) {\r\n var name\r\n for (name in obj) return false\r\n return true\r\n }\r\n\r\n $.isNumeric = function(val) {\r\n var num = Number(val), type = typeof val\r\n return val != null && type != 'boolean' &&\r\n (type != 'string' || val.length) &&\r\n !isNaN(num) && isFinite(num) || false\r\n }\r\n\r\n $.inArray = function(elem, array, i){\r\n return emptyArray.indexOf.call(array, elem, i)\r\n }\r\n\r\n $.camelCase = camelize\r\n $.trim = function(str) {\r\n return str == null ? \"\" : String.prototype.trim.call(str)\r\n }\r\n\r\n // plugin compatibility\r\n $.uuid = 0\r\n $.support = { }\r\n $.expr = { }\r\n $.noop = function() {}\r\n\r\n $.map = function(elements, callback){\r\n var value, values = [], i, key\r\n if (likeArray(elements))\r\n for (i = 0; i < elements.length; i++) {\r\n value = callback(elements[i], i)\r\n if (value != null) values.push(value)\r\n }\r\n else\r\n for (key in elements) {\r\n value = callback(elements[key], key)\r\n if (value != null) values.push(value)\r\n }\r\n return flatten(values)\r\n }\r\n\r\n $.each = function(elements, callback){\r\n var i, key\r\n if (likeArray(elements)) {\r\n for (i = 0; i < elements.length; i++)\r\n if (callback.call(elements[i], i, elements[i]) === false) return elements\r\n } else {\r\n for (key in elements)\r\n if (callback.call(elements[key], key, elements[key]) === false) return elements\r\n }\r\n\r\n return elements\r\n }\r\n\r\n $.grep = function(elements, callback){\r\n return filter.call(elements, callback)\r\n }\r\n\r\n if (window.JSON) $.parseJSON = JSON.parse\r\n\r\n // Populate the class2type map\r\n $.each(\"Boolean Number String Function Array Date RegExp Object Error\".split(\" \"), function(i, name) {\r\n class2type[ \"[object \" + name + \"]\" ] = name.toLowerCase()\r\n })\r\n\r\n // Define methods that will be available on all\r\n // Zepto collections\r\n $.fn = {\r\n constructor: zepto.Z,\r\n length: 0,\r\n\r\n // Because a collection acts like an array\r\n // copy over these useful array functions.\r\n forEach: emptyArray.forEach,\r\n reduce: emptyArray.reduce,\r\n push: emptyArray.push,\r\n sort: emptyArray.sort,\r\n splice: emptyArray.splice,\r\n indexOf: emptyArray.indexOf,\r\n concat: function(){\r\n var i, value, args = []\r\n for (i = 0; i < arguments.length; i++) {\r\n value = arguments[i]\r\n args[i] = zepto.isZ(value) ? value.toArray() : value\r\n }\r\n return concat.apply(zepto.isZ(this) ? this.toArray() : this, args)\r\n },\r\n\r\n // `map` and `slice` in the jQuery API work differently\r\n // from their array counterparts\r\n map: function(fn){\r\n return $($.map(this, function(el, i){ return fn.call(el, i, el) }))\r\n },\r\n slice: function(){\r\n return $(slice.apply(this, arguments))\r\n },\r\n\r\n ready: function(callback){\r\n // need to check if document.body exists for IE as that browser reports\r\n // document ready when it hasn't yet created the body element\r\n if (readyRE.test(document.readyState) && document.body) callback($)\r\n else document.addEventListener('DOMContentLoaded', function(){ callback($) }, false)\r\n return this\r\n },\r\n get: function(idx){\r\n return idx === undefined ? slice.call(this) : this[idx >= 0 ? idx : idx + this.length]\r\n },\r\n toArray: function(){ return this.get() },\r\n size: function(){\r\n return this.length\r\n },\r\n remove: function(){\r\n return this.each(function(){\r\n if (this.parentNode != null)\r\n this.parentNode.removeChild(this)\r\n })\r\n },\r\n each: function(callback){\r\n emptyArray.every.call(this, function(el, idx){\r\n return callback.call(el, idx, el) !== false\r\n })\r\n return this\r\n },\r\n filter: function(selector){\r\n if (isFunction(selector)) return this.not(this.not(selector))\r\n return $(filter.call(this, function(element){\r\n return zepto.matches(element, selector)\r\n }))\r\n },\r\n add: function(selector,context){\r\n return $(uniq(this.concat($(selector,context))))\r\n },\r\n is: function(selector){\r\n return this.length > 0 && zepto.matches(this[0], selector)\r\n },\r\n not: function(selector){\r\n var nodes=[]\r\n if (isFunction(selector) && selector.call !== undefined)\r\n this.each(function(idx){\r\n if (!selector.call(this,idx)) nodes.push(this)\r\n })\r\n else {\r\n var excludes = typeof selector == 'string' ? this.filter(selector) :\r\n (likeArray(selector) && isFunction(selector.item)) ? slice.call(selector) : $(selector)\r\n this.forEach(function(el){\r\n if (excludes.indexOf(el) < 0) nodes.push(el)\r\n })\r\n }\r\n return $(nodes)\r\n },\r\n has: function(selector){\r\n return this.filter(function(){\r\n return isObject(selector) ?\r\n $.contains(this, selector) :\r\n $(this).find(selector).size()\r\n })\r\n },\r\n eq: function(idx){\r\n return idx === -1 ? this.slice(idx) : this.slice(idx, + idx + 1)\r\n },\r\n first: function(){\r\n var el = this[0]\r\n return el && !isObject(el) ? el : $(el)\r\n },\r\n last: function(){\r\n var el = this[this.length - 1]\r\n return el && !isObject(el) ? el : $(el)\r\n },\r\n find: function(selector){\r\n var result, $this = this\r\n if (!selector) result = $()\r\n else if (typeof selector == 'object')\r\n result = $(selector).filter(function(){\r\n var node = this\r\n return emptyArray.some.call($this, function(parent){\r\n return $.contains(parent, node)\r\n })\r\n })\r\n else if (this.length == 1) result = $(zepto.qsa(this[0], selector))\r\n else result = this.map(function(){ return zepto.qsa(this, selector) })\r\n return result\r\n },\r\n closest: function(selector, context){\r\n var nodes = [], collection = typeof selector == 'object' && $(selector)\r\n this.each(function(_, node){\r\n while (node && !(collection ? collection.indexOf(node) >= 0 : zepto.matches(node, selector)))\r\n node = node !== context && !isDocument(node) && node.parentNode\r\n if (node && nodes.indexOf(node) < 0) nodes.push(node)\r\n })\r\n return $(nodes)\r\n },\r\n parents: function(selector){\r\n var ancestors = [], nodes = this\r\n while (nodes.length > 0)\r\n nodes = $.map(nodes, function(node){\r\n if ((node = node.parentNode) && !isDocument(node) && ancestors.indexOf(node) < 0) {\r\n ancestors.push(node)\r\n return node\r\n }\r\n })\r\n return filtered(ancestors, selector)\r\n },\r\n parent: function(selector){\r\n return filtered(uniq(this.pluck('parentNode')), selector)\r\n },\r\n children: function(selector){\r\n return filtered(this.map(function(){ return children(this) }), selector)\r\n },\r\n contents: function() {\r\n return this.map(function() { return this.contentDocument || slice.call(this.childNodes) })\r\n },\r\n siblings: function(selector){\r\n return filtered(this.map(function(i, el){\r\n return filter.call(children(el.parentNode), function(child){ return child!==el })\r\n }), selector)\r\n },\r\n empty: function(){\r\n return this.each(function(){ this.innerHTML = '' })\r\n },\r\n // `pluck` is borrowed from Prototype.js\r\n pluck: function(property){\r\n return $.map(this, function(el){ return el[property] })\r\n },\r\n show: function(){\r\n return this.each(function(){\r\n this.style.display == \"none\" && (this.style.display = '')\r\n if (getComputedStyle(this, '').getPropertyValue(\"display\") == \"none\")\r\n this.style.display = defaultDisplay(this.nodeName)\r\n })\r\n },\r\n replaceWith: function(newContent){\r\n return this.before(newContent).remove()\r\n },\r\n wrap: function(structure){\r\n var func = isFunction(structure)\r\n if (this[0] && !func)\r\n var dom = $(structure).get(0),\r\n clone = dom.parentNode || this.length > 1\r\n\r\n return this.each(function(index){\r\n $(this).wrapAll(\r\n func ? structure.call(this, index) :\r\n clone ? dom.cloneNode(true) : dom\r\n )\r\n })\r\n },\r\n wrapAll: function(structure){\r\n if (this[0]) {\r\n $(this[0]).before(structure = $(structure))\r\n var children\r\n // drill down to the inmost element\r\n while ((children = structure.children()).length) structure = children.first()\r\n $(structure).append(this)\r\n }\r\n return this\r\n },\r\n wrapInner: function(structure){\r\n var func = isFunction(structure)\r\n return this.each(function(index){\r\n var self = $(this), contents = self.contents(),\r\n dom = func ? structure.call(this, index) : structure\r\n contents.length ? contents.wrapAll(dom) : self.append(dom)\r\n })\r\n },\r\n unwrap: function(){\r\n this.parent().each(function(){\r\n $(this).replaceWith($(this).children())\r\n })\r\n return this\r\n },\r\n clone: function(){\r\n return this.map(function(){ return this.cloneNode(true) })\r\n },\r\n hide: function(){\r\n return this.css(\"display\", \"none\")\r\n },\r\n toggle: function(setting){\r\n return this.each(function(){\r\n var el = $(this)\r\n ;(setting === undefined ? el.css(\"display\") == \"none\" : setting) ? el.show() : el.hide()\r\n })\r\n },\r\n prev: function(selector){ return $(this.pluck('previousElementSibling')).filter(selector || '*') },\r\n next: function(selector){ return $(this.pluck('nextElementSibling')).filter(selector || '*') },\r\n html: function(html){\r\n return 0 in arguments ?\r\n this.each(function(idx){\r\n var originHtml = this.innerHTML\r\n $(this).empty().append( funcArg(this, html, idx, originHtml) )\r\n }) :\r\n (0 in this ? this[0].innerHTML : null)\r\n },\r\n text: function(text){\r\n return 0 in arguments ?\r\n this.each(function(idx){\r\n var newText = funcArg(this, text, idx, this.textContent)\r\n this.textContent = newText == null ? '' : ''+newText\r\n }) :\r\n (0 in this ? this.pluck('textContent').join(\"\") : null)\r\n },\r\n attr: function(name, value){\r\n var result\r\n return (typeof name == 'string' && !(1 in arguments)) ?\r\n (0 in this && this[0].nodeType == 1 && (result = this[0].getAttribute(name)) != null ? result : undefined) :\r\n this.each(function(idx){\r\n if (this.nodeType !== 1) return\r\n if (isObject(name)) for (key in name) setAttribute(this, key, name[key])\r\n else setAttribute(this, name, funcArg(this, value, idx, this.getAttribute(name)))\r\n })\r\n },\r\n removeAttr: function(name){\r\n return this.each(function(){ this.nodeType === 1 && name.split(' ').forEach(function(attribute){\r\n setAttribute(this, attribute)\r\n }, this)})\r\n },\r\n prop: function(name, value){\r\n name = propMap[name] || name\r\n return (1 in arguments) ?\r\n this.each(function(idx){\r\n this[name] = funcArg(this, value, idx, this[name])\r\n }) :\r\n (this[0] && this[0][name])\r\n },\r\n removeProp: function(name){\r\n name = propMap[name] || name\r\n return this.each(function(){ delete this[name] })\r\n },\r\n data: function(name, value){\r\n var attrName = 'data-' + name.replace(capitalRE, '-$1').toLowerCase()\r\n\r\n var data = (1 in arguments) ?\r\n this.attr(attrName, value) :\r\n this.attr(attrName)\r\n\r\n return data !== null ? deserializeValue(data) : undefined\r\n },\r\n val: function(value){\r\n if (0 in arguments) {\r\n if (value == null) value = \"\"\r\n return this.each(function(idx){\r\n this.value = funcArg(this, value, idx, this.value)\r\n })\r\n } else {\r\n return this[0] && (this[0].multiple ?\r\n $(this[0]).find('option').filter(function(){ return this.selected }).pluck('value') :\r\n this[0].value)\r\n }\r\n },\r\n offset: function(coordinates){\r\n if (coordinates) return this.each(function(index){\r\n var $this = $(this),\r\n coords = funcArg(this, coordinates, index, $this.offset()),\r\n parentOffset = $this.offsetParent().offset(),\r\n props = {\r\n top: coords.top - parentOffset.top,\r\n left: coords.left - parentOffset.left\r\n }\r\n\r\n if ($this.css('position') == 'static') props['position'] = 'relative'\r\n $this.css(props)\r\n })\r\n if (!this.length) return null\r\n if (document.documentElement !== this[0] && !$.contains(document.documentElement, this[0]))\r\n return {top: 0, left: 0}\r\n var obj = this[0].getBoundingClientRect()\r\n return {\r\n left: obj.left + window.pageXOffset,\r\n top: obj.top + window.pageYOffset,\r\n width: Math.round(obj.width),\r\n height: Math.round(obj.height)\r\n }\r\n },\r\n css: function(property, value){\r\n if (arguments.length < 2) {\r\n var element = this[0]\r\n if (typeof property == 'string') {\r\n if (!element) return\r\n return element.style[camelize(property)] || getComputedStyle(element, '').getPropertyValue(property)\r\n } else if (isArray(property)) {\r\n if (!element) return\r\n var props = {}\r\n var computedStyle = getComputedStyle(element, '')\r\n $.each(property, function(_, prop){\r\n props[prop] = (element.style[camelize(prop)] || computedStyle.getPropertyValue(prop))\r\n })\r\n return props\r\n }\r\n }\r\n\r\n var css = ''\r\n if (type(property) == 'string') {\r\n if (!value && value !== 0)\r\n this.each(function(){ this.style.removeProperty(dasherize(property)) })\r\n else\r\n css = dasherize(property) + \":\" + maybeAddPx(property, value)\r\n } else {\r\n for (key in property)\r\n if (!property[key] && property[key] !== 0)\r\n this.each(function(){ this.style.removeProperty(dasherize(key)) })\r\n else\r\n css += dasherize(key) + ':' + maybeAddPx(key, property[key]) + ';'\r\n }\r\n\r\n return this.each(function(){ this.style.cssText += ';' + css })\r\n },\r\n index: function(element){\r\n return element ? this.indexOf($(element)[0]) : this.parent().children().indexOf(this[0])\r\n },\r\n hasClass: function(name){\r\n if (!name) return false\r\n return emptyArray.some.call(this, function(el){\r\n return this.test(className(el))\r\n }, classRE(name))\r\n },\r\n addClass: function(name){\r\n if (!name) return this\r\n return this.each(function(idx){\r\n if (!('className' in this)) return\r\n classList = []\r\n var cls = className(this), newName = funcArg(this, name, idx, cls)\r\n newName.split(/\\s+/g).forEach(function(klass){\r\n if (!$(this).hasClass(klass)) classList.push(klass)\r\n }, this)\r\n classList.length && className(this, cls + (cls ? \" \" : \"\") + classList.join(\" \"))\r\n })\r\n },\r\n removeClass: function(name){\r\n return this.each(function(idx){\r\n if (!('className' in this)) return\r\n if (name === undefined) return className(this, '')\r\n classList = className(this)\r\n funcArg(this, name, idx, classList).split(/\\s+/g).forEach(function(klass){\r\n classList = classList.replace(classRE(klass), \" \")\r\n })\r\n className(this, classList.trim())\r\n })\r\n },\r\n toggleClass: function(name, when){\r\n if (!name) return this\r\n return this.each(function(idx){\r\n var $this = $(this), names = funcArg(this, name, idx, className(this))\r\n names.split(/\\s+/g).forEach(function(klass){\r\n (when === undefined ? !$this.hasClass(klass) : when) ?\r\n $this.addClass(klass) : $this.removeClass(klass)\r\n })\r\n })\r\n },\r\n scrollTop: function(value){\r\n if (!this.length) return\r\n var hasScrollTop = 'scrollTop' in this[0]\r\n if (value === undefined) return hasScrollTop ? this[0].scrollTop : this[0].pageYOffset\r\n return this.each(hasScrollTop ?\r\n function(){ this.scrollTop = value } :\r\n function(){ this.scrollTo(this.scrollX, value) })\r\n },\r\n scrollLeft: function(value){\r\n if (!this.length) return\r\n var hasScrollLeft = 'scrollLeft' in this[0]\r\n if (value === undefined) return hasScrollLeft ? this[0].scrollLeft : this[0].pageXOffset\r\n return this.each(hasScrollLeft ?\r\n function(){ this.scrollLeft = value } :\r\n function(){ this.scrollTo(value, this.scrollY) })\r\n },\r\n position: function() {\r\n if (!this.length) return\r\n\r\n var elem = this[0],\r\n // Get *real* offsetParent\r\n offsetParent = this.offsetParent(),\r\n // Get correct offsets\r\n offset = this.offset(),\r\n parentOffset = rootNodeRE.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset()\r\n\r\n // Subtract element margins\r\n // note: when an element has margin: auto the offsetLeft and marginLeft\r\n // are the same in Safari causing offset.left to incorrectly be 0\r\n offset.top -= parseFloat( $(elem).css('margin-top') ) || 0\r\n offset.left -= parseFloat( $(elem).css('margin-left') ) || 0\r\n\r\n // Add offsetParent borders\r\n parentOffset.top += parseFloat( $(offsetParent[0]).css('border-top-width') ) || 0\r\n parentOffset.left += parseFloat( $(offsetParent[0]).css('border-left-width') ) || 0\r\n\r\n // Subtract the two offsets\r\n return {\r\n top: offset.top - parentOffset.top,\r\n left: offset.left - parentOffset.left\r\n }\r\n },\r\n offsetParent: function() {\r\n return this.map(function(){\r\n var parent = this.offsetParent || document.body\r\n while (parent && !rootNodeRE.test(parent.nodeName) && $(parent).css(\"position\") == \"static\")\r\n parent = parent.offsetParent\r\n return parent\r\n })\r\n }\r\n }\r\n\r\n // for now\r\n $.fn.detach = $.fn.remove\r\n\r\n // Generate the `width` and `height` functions\r\n ;['width', 'height'].forEach(function(dimension){\r\n var dimensionProperty =\r\n dimension.replace(/./, function(m){ return m[0].toUpperCase() })\r\n\r\n $.fn[dimension] = function(value){\r\n var offset, el = this[0]\r\n if (value === undefined) return isWindow(el) ? el['inner' + dimensionProperty] :\r\n isDocument(el) ? el.documentElement['scroll' + dimensionProperty] :\r\n (offset = this.offset()) && offset[dimension]\r\n else return this.each(function(idx){\r\n el = $(this)\r\n el.css(dimension, funcArg(this, value, idx, el[dimension]()))\r\n })\r\n }\r\n })\r\n\r\n function traverseNode(node, fun) {\r\n fun(node)\r\n for (var i = 0, len = node.childNodes.length; i < len; i++)\r\n traverseNode(node.childNodes[i], fun)\r\n }\r\n\r\n // Generate the `after`, `prepend`, `before`, `append`,\r\n // `insertAfter`, `insertBefore`, `appendTo`, and `prependTo` methods.\r\n adjacencyOperators.forEach(function(operator, operatorIndex) {\r\n var inside = operatorIndex % 2 //=> prepend, append\r\n\r\n $.fn[operator] = function(){\r\n // arguments can be nodes, arrays of nodes, Zepto objects and HTML strings\r\n var argType, nodes = $.map(arguments, function(arg) {\r\n var arr = []\r\n argType = type(arg)\r\n if (argType == \"array\") {\r\n arg.forEach(function(el) {\r\n if (el.nodeType !== undefined) return arr.push(el)\r\n else if ($.zepto.isZ(el)) return arr = arr.concat(el.get())\r\n arr = arr.concat(zepto.fragment(el))\r\n })\r\n return arr\r\n }\r\n return argType == \"object\" || arg == null ?\r\n arg : zepto.fragment(arg)\r\n }),\r\n parent, copyByClone = this.length > 1\r\n if (nodes.length < 1) return this\r\n\r\n return this.each(function(_, target){\r\n parent = inside ? target : target.parentNode\r\n\r\n // convert all methods to a \"before\" operation\r\n target = operatorIndex == 0 ? target.nextSibling :\r\n operatorIndex == 1 ? target.firstChild :\r\n operatorIndex == 2 ? target :\r\n null\r\n\r\n var parentInDocument = $.contains(document.documentElement, parent)\r\n\r\n nodes.forEach(function(node){\r\n if (copyByClone) node = node.cloneNode(true)\r\n else if (!parent) return $(node).remove()\r\n\r\n parent.insertBefore(node, target)\r\n if (parentInDocument) traverseNode(node, function(el){\r\n if (el.nodeName != null && el.nodeName.toUpperCase() === 'SCRIPT' &&\r\n (!el.type || el.type === 'text/javascript') && !el.src){\r\n var target = el.ownerDocument ? el.ownerDocument.defaultView : window\r\n target['eval'].call(target, el.innerHTML)\r\n }\r\n })\r\n })\r\n })\r\n }\r\n\r\n // after => insertAfter\r\n // prepend => prependTo\r\n // before => insertBefore\r\n // append => appendTo\r\n $.fn[inside ? operator+'To' : 'insert'+(operatorIndex ? 'Before' : 'After')] = function(html){\r\n $(html)[operator](this)\r\n return this\r\n }\r\n })\r\n\r\n zepto.Z.prototype = Z.prototype = $.fn\r\n\r\n // Export internal API functions in the `$.zepto` namespace\r\n zepto.uniq = uniq\r\n zepto.deserializeValue = deserializeValue\r\n $.zepto = zepto\r\n\r\n return $\r\n})()\r\n\r\nwindow.Zepto = Zepto\r\nwindow.$ === undefined && (window.$ = Zepto)\r\n\r\n;(function($){\r\n var _zid = 1, undefined,\r\n slice = Array.prototype.slice,\r\n isFunction = $.isFunction,\r\n isString = function(obj){ return typeof obj == 'string' },\r\n handlers = {},\r\n specialEvents={},\r\n focusinSupported = 'onfocusin' in window,\r\n focus = { focus: 'focusin', blur: 'focusout' },\r\n hover = { mouseenter: 'mouseover', mouseleave: 'mouseout' }\r\n\r\n specialEvents.click = specialEvents.mousedown = specialEvents.mouseup = specialEvents.mousemove = 'MouseEvents'\r\n\r\n function zid(element) {\r\n return element._zid || (element._zid = _zid++)\r\n }\r\n function findHandlers(element, event, fn, selector) {\r\n event = parse(event)\r\n if (event.ns) var matcher = matcherFor(event.ns)\r\n return (handlers[zid(element)] || []).filter(function(handler) {\r\n return handler\r\n && (!event.e || handler.e == event.e)\r\n && (!event.ns || matcher.test(handler.ns))\r\n && (!fn || zid(handler.fn) === zid(fn))\r\n && (!selector || handler.sel == selector)\r\n })\r\n }\r\n function parse(event) {\r\n var parts = ('' + event).split('.')\r\n return {e: parts[0], ns: parts.slice(1).sort().join(' ')}\r\n }\r\n function matcherFor(ns) {\r\n return new RegExp('(?:^| )' + ns.replace(' ', ' .* ?') + '(?: |$)')\r\n }\r\n\r\n function eventCapture(handler, captureSetting) {\r\n return handler.del &&\r\n (!focusinSupported && (handler.e in focus)) ||\r\n !!captureSetting\r\n }\r\n\r\n function realEvent(type) {\r\n return hover[type] || (focusinSupported && focus[type]) || type\r\n }\r\n\r\n function add(element, events, fn, data, selector, delegator, capture){\r\n var id = zid(element), set = (handlers[id] || (handlers[id] = []))\r\n events.split(/\\s/).forEach(function(event){\r\n if (event == 'ready') return $(document).ready(fn)\r\n var handler = parse(event)\r\n handler.fn = fn\r\n handler.sel = selector\r\n // emulate mouseenter, mouseleave\r\n if (handler.e in hover) fn = function(e){\r\n var related = e.relatedTarget\r\n if (!related || (related !== this && !$.contains(this, related)))\r\n return handler.fn.apply(this, arguments)\r\n }\r\n handler.del = delegator\r\n var callback = delegator || fn\r\n handler.proxy = function(e){\r\n e = compatible(e)\r\n if (e.isImmediatePropagationStopped()) return\r\n e.data = data\r\n var result = callback.apply(element, e._args == undefined ? [e] : [e].concat(e._args))\r\n if (result === false) e.preventDefault(), e.stopPropagation()\r\n return result\r\n }\r\n handler.i = set.length\r\n set.push(handler)\r\n if ('addEventListener' in element)\r\n element.addEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\r\n })\r\n }\r\n function remove(element, events, fn, selector, capture){\r\n var id = zid(element)\r\n ;(events || '').split(/\\s/).forEach(function(event){\r\n findHandlers(element, event, fn, selector).forEach(function(handler){\r\n delete handlers[id][handler.i]\r\n if ('removeEventListener' in element)\r\n element.removeEventListener(realEvent(handler.e), handler.proxy, eventCapture(handler, capture))\r\n })\r\n })\r\n }\r\n\r\n $.event = { add: add, remove: remove }\r\n\r\n $.proxy = function(fn, context) {\r\n var args = (2 in arguments) && slice.call(arguments, 2)\r\n if (isFunction(fn)) {\r\n var proxyFn = function(){ return fn.apply(context, args ? args.concat(slice.call(arguments)) : arguments) }\r\n proxyFn._zid = zid(fn)\r\n return proxyFn\r\n } else if (isString(context)) {\r\n if (args) {\r\n args.unshift(fn[context], fn)\r\n return $.proxy.apply(null, args)\r\n } else {\r\n return $.proxy(fn[context], fn)\r\n }\r\n } else {\r\n throw new TypeError(\"expected function\")\r\n }\r\n }\r\n\r\n $.fn.bind = function(event, data, callback){\r\n return this.on(event, data, callback)\r\n }\r\n $.fn.unbind = function(event, callback){\r\n return this.off(event, callback)\r\n }\r\n $.fn.one = function(event, selector, data, callback){\r\n return this.on(event, selector, data, callback, 1)\r\n }\r\n\r\n var returnTrue = function(){return true},\r\n returnFalse = function(){return false},\r\n ignoreProperties = /^([A-Z]|returnValue$|layer[XY]$|webkitMovement[XY]$)/,\r\n eventMethods = {\r\n preventDefault: 'isDefaultPrevented',\r\n stopImmediatePropagation: 'isImmediatePropagationStopped',\r\n stopPropagation: 'isPropagationStopped'\r\n }\r\n\r\n function compatible(event, source) {\r\n if (source || !event.isDefaultPrevented) {\r\n source || (source = event)\r\n\r\n $.each(eventMethods, function(name, predicate) {\r\n var sourceMethod = source[name]\r\n event[name] = function(){\r\n this[predicate] = returnTrue\r\n return sourceMethod && sourceMethod.apply(source, arguments)\r\n }\r\n event[predicate] = returnFalse\r\n })\r\n\r\n event.timeStamp || (event.timeStamp = Date.now())\r\n\r\n if (source.defaultPrevented !== undefined ? source.defaultPrevented :\r\n 'returnValue' in source ? source.returnValue === false :\r\n source.getPreventDefault && source.getPreventDefault())\r\n event.isDefaultPrevented = returnTrue\r\n }\r\n return event\r\n }\r\n\r\n function createProxy(event) {\r\n var key, proxy = { originalEvent: event }\r\n for (key in event)\r\n if (!ignoreProperties.test(key) && event[key] !== undefined) proxy[key] = event[key]\r\n\r\n return compatible(proxy, event)\r\n }\r\n\r\n $.fn.delegate = function(selector, event, callback){\r\n return this.on(event, selector, callback)\r\n }\r\n $.fn.undelegate = function(selector, event, callback){\r\n return this.off(event, selector, callback)\r\n }\r\n\r\n $.fn.live = function(event, callback){\r\n $(document.body).delegate(this.selector, event, callback)\r\n return this\r\n }\r\n $.fn.die = function(event, callback){\r\n $(document.body).undelegate(this.selector, event, callback)\r\n return this\r\n }\r\n\r\n $.fn.on = function(event, selector, data, callback, one){\r\n var autoRemove, delegator, $this = this\r\n if (event && !isString(event)) {\r\n $.each(event, function(type, fn){\r\n $this.on(type, selector, data, fn, one)\r\n })\r\n return $this\r\n }\r\n\r\n if (!isString(selector) && !isFunction(callback) && callback !== false)\r\n callback = data, data = selector, selector = undefined\r\n if (callback === undefined || data === false)\r\n callback = data, data = undefined\r\n\r\n if (callback === false) callback = returnFalse\r\n\r\n return $this.each(function(_, element){\r\n if (one) autoRemove = function(e){\r\n remove(element, e.type, callback)\r\n return callback.apply(this, arguments)\r\n }\r\n\r\n if (selector) delegator = function(e){\r\n var evt, match = $(e.target).closest(selector, element).get(0)\r\n if (match && match !== element) {\r\n evt = $.extend(createProxy(e), {currentTarget: match, liveFired: element})\r\n return (autoRemove || callback).apply(match, [evt].concat(slice.call(arguments, 1)))\r\n }\r\n }\r\n\r\n add(element, event, callback, data, selector, delegator || autoRemove)\r\n })\r\n }\r\n $.fn.off = function(event, selector, callback){\r\n var $this = this\r\n if (event && !isString(event)) {\r\n $.each(event, function(type, fn){\r\n $this.off(type, selector, fn)\r\n })\r\n return $this\r\n }\r\n\r\n if (!isString(selector) && !isFunction(callback) && callback !== false)\r\n callback = selector, selector = undefined\r\n\r\n if (callback === false) callback = returnFalse\r\n\r\n return $this.each(function(){\r\n remove(this, event, callback, selector)\r\n })\r\n }\r\n\r\n $.fn.trigger = function(event, args){\r\n event = (isString(event) || $.isPlainObject(event)) ? $.Event(event) : compatible(event)\r\n event._args = args\r\n return this.each(function(){\r\n // handle focus(), blur() by calling them directly\r\n if (event.type in focus && typeof this[event.type] == \"function\") this[event.type]()\r\n // items in the collection might not be DOM elements\r\n else if ('dispatchEvent' in this) this.dispatchEvent(event)\r\n else $(this).triggerHandler(event, args)\r\n })\r\n }\r\n\r\n // triggers event handlers on current element just as if an event occurred,\r\n // doesn't trigger an actual event, doesn't bubble\r\n $.fn.triggerHandler = function(event, args){\r\n var e, result\r\n this.each(function(i, element){\r\n e = createProxy(isString(event) ? $.Event(event) : event)\r\n e._args = args\r\n e.target = element\r\n $.each(findHandlers(element, event.type || event), function(i, handler){\r\n result = handler.proxy(e)\r\n if (e.isImmediatePropagationStopped()) return false\r\n })\r\n })\r\n return result\r\n }\r\n\r\n // shortcut methods for `.bind(event, fn)` for each event type\r\n ;('focusin focusout focus blur load resize scroll unload click dblclick '+\r\n 'mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave '+\r\n 'change select keydown keypress keyup error').split(' ').forEach(function(event) {\r\n $.fn[event] = function(callback) {\r\n return (0 in arguments) ?\r\n this.bind(event, callback) :\r\n this.trigger(event)\r\n }\r\n })\r\n\r\n $.Event = function(type, props) {\r\n if (!isString(type)) props = type, type = props.type\r\n var event = document.createEvent(specialEvents[type] || 'Events'), bubbles = true\r\n if (props) for (var name in props) (name == 'bubbles') ? (bubbles = !!props[name]) : (event[name] = props[name])\r\n event.initEvent(type, bubbles, true)\r\n return compatible(event)\r\n }\r\n\r\n})(Zepto)\r\n\r\n;(function($){\r\n var jsonpID = +new Date(),\r\n document = window.document,\r\n key,\r\n name,\r\n rscript = /<script\\b[^<]*(?:(?!<\\/script>)<[^<]*)*<\\/script>/gi,\r\n scriptTypeRE = /^(?:text|application)\\/javascript/i,\r\n xmlTypeRE = /^(?:text|application)\\/xml/i,\r\n jsonType = 'application/json',\r\n htmlType = 'text/html',\r\n blankRE = /^\\s*$/,\r\n originAnchor = document.createElement('a')\r\n\r\n originAnchor.href = window.location.href\r\n\r\n // trigger a custom event and return false if it was cancelled\r\n function triggerAndReturn(context, eventName, data) {\r\n var event = $.Event(eventName)\r\n $(context).trigger(event, data)\r\n return !event.isDefaultPrevented()\r\n }\r\n\r\n // trigger an Ajax \"global\" event\r\n function triggerGlobal(settings, context, eventName, data) {\r\n if (settings.global) return triggerAndReturn(context || document, eventName, data)\r\n }\r\n\r\n // Number of active Ajax requests\r\n $.active = 0\r\n\r\n function ajaxStart(settings) {\r\n if (settings.global && $.active++ === 0) triggerGlobal(settings, null, 'ajaxStart')\r\n }\r\n function ajaxStop(settings) {\r\n if (settings.global && !(--$.active)) triggerGlobal(settings, null, 'ajaxStop')\r\n }\r\n\r\n // triggers an extra global event \"ajaxBeforeSend\" that's like \"ajaxSend\" but cancelable\r\n function ajaxBeforeSend(xhr, settings) {\r\n var context = settings.context\r\n if (settings.beforeSend.call(context, xhr, settings) === false ||\r\n triggerGlobal(settings, context, 'ajaxBeforeSend', [xhr, settings]) === false)\r\n return false\r\n\r\n triggerGlobal(settings, context, 'ajaxSend', [xhr, settings])\r\n }\r\n function ajaxSuccess(data, xhr, settings, deferred) {\r\n var context = settings.context, status = 'success'\r\n settings.success.call(context, data, status, xhr)\r\n if (deferred) deferred.resolveWith(context, [data, status, xhr])\r\n triggerGlobal(settings, context, 'ajaxSuccess', [xhr, settings, data])\r\n ajaxComplete(status, xhr, settings)\r\n }\r\n // type: \"timeout\", \"error\", \"abort\", \"parsererror\"\r\n function ajaxError(error, type, xhr, settings, deferred) {\r\n var context = settings.context\r\n settings.error.call(context, xhr, type, error)\r\n if (deferred) deferred.rejectWith(context, [xhr, type, error])\r\n triggerGlobal(settings, context, 'ajaxError', [xhr, settings, error || type])\r\n ajaxComplete(type, xhr, settings)\r\n }\r\n // status: \"success\", \"notmodified\", \"error\", \"timeout\", \"abort\", \"parsererror\"\r\n function ajaxComplete(status, xhr, settings) {\r\n var context = settings.context\r\n settings.complete.call(context, xhr, status)\r\n triggerGlobal(settings, context, 'ajaxComplete', [xhr, settings])\r\n ajaxStop(settings)\r\n }\r\n\r\n function ajaxDataFilter(data, type, settings) {\r\n if (settings.dataFilter == empty) return data\r\n var context = settings.context\r\n return settings.dataFilter.call(context, data, type)\r\n }\r\n\r\n // Empty function, used as default callback\r\n function empty() {}\r\n\r\n $.ajaxJSONP = function(options, deferred){\r\n if (!('type' in options)) return $.ajax(options)\r\n\r\n var _callbackName = options.jsonpCallback,\r\n callbackName = ($.isFunction(_callbackName) ?\r\n _callbackName() : _callbackName) || ('Zepto' + (jsonpID++)),\r\n script = document.createElement('script'),\r\n originalCallback = window[callbackName],\r\n responseData,\r\n abort = function(errorType) {\r\n $(script).triggerHandler('error', errorType || 'abort')\r\n },\r\n xhr = { abort: abort }, abortTimeout\r\n\r\n if (deferred) deferred.promise(xhr)\r\n\r\n $(script).on('load error', function(e, errorType){\r\n clearTimeout(abortTimeout)\r\n $(script).off().remove()\r\n\r\n if (e.type == 'error' || !responseData) {\r\n ajaxError(null, errorType || 'error', xhr, options, deferred)\r\n } else {\r\n ajaxSuccess(responseData[0], xhr, options, deferred)\r\n }\r\n\r\n window[callbackName] = originalCallback\r\n if (responseData && $.isFunction(originalCallback))\r\n originalCallback(responseData[0])\r\n\r\n originalCallback = responseData = undefined\r\n })\r\n\r\n if (ajaxBeforeSend(xhr, options) === false) {\r\n abort('abort')\r\n return xhr\r\n }\r\n\r\n window[callbackName] = function(){\r\n responseData = arguments\r\n }\r\n\r\n script.src = options.url.replace(/\\?(.+)=\\?/, '?$1=' + callbackName)\r\n document.head.appendChild(script)\r\n\r\n if (options.timeout > 0) abortTimeout = setTimeout(function(){\r\n abort('timeout')\r\n }, options.timeout)\r\n\r\n return xhr\r\n }\r\n\r\n $.ajaxSettings = {\r\n // Default type of request\r\n type: 'GET',\r\n // Callback that is executed before request\r\n beforeSend: empty,\r\n // Callback that is executed if the request succeeds\r\n success: empty,\r\n // Callback that is executed the the server drops error\r\n error: empty,\r\n // Callback that is executed on request complete (both: error and success)\r\n complete: empty,\r\n // The context for the callbacks\r\n context: null,\r\n // Whether to trigger \"global\" Ajax events\r\n global: true,\r\n // Transport\r\n xhr: function () {\r\n return new window.XMLHttpRequest()\r\n },\r\n // MIME types mapping\r\n // IIS returns Javascript as \"application/x-javascript\"\r\n accepts: {\r\n script: 'text/javascript, application/javascript, application/x-javascript',\r\n json: jsonType,\r\n xml: 'application/xml, text/xml',\r\n html: htmlType,\r\n text: 'text/plain'\r\n },\r\n // Whether the request is to another domain\r\n crossDomain: false,\r\n // Default timeout\r\n timeout: 0,\r\n // Whether data should be serialized to string\r\n processData: true,\r\n // Whether the browser should be allowed to cache GET responses\r\n cache: true,\r\n //Used to handle the raw response data of XMLHttpRequest.\r\n //This is a pre-filtering function to sanitize the response.\r\n //The sanitized response should be returned\r\n dataFilter: empty\r\n }\r\n\r\n function mimeToDataType(mime) {\r\n if (mime) mime = mime.split(';', 2)[0]\r\n return mime && ( mime == htmlType ? 'html' :\r\n mime == jsonType ? 'json' :\r\n scriptTypeRE.test(mime) ? 'script' :\r\n xmlTypeRE.test(mime) && 'xml' ) || 'text'\r\n }\r\n\r\n function appendQuery(url, query) {\r\n if (query == '') return url\r\n return (url + '&' + query).replace(/[&?]{1,2}/, '?')\r\n }\r\n\r\n // serialize payload and append it to the URL for GET requests\r\n function serializeData(options) {\r\n if (options.processData && options.data && $.type(options.data) != \"string\")\r\n options.data = $.param(options.data, options.traditional)\r\n if (options.data && (!options.type || options.type.toUpperCase() == 'GET' || 'jsonp' == options.dataType))\r\n options.url = appendQuery(options.url, options.data), options.data = undefined\r\n }\r\n\r\n $.ajax = function(options){\r\n var settings = $.extend({}, options || {}),\r\n deferred = $.Deferred && $.Deferred(),\r\n urlAnchor, hashIndex\r\n for (key in $.ajaxSettings) if (settings[key] === undefined) settings[key] = $.ajaxSettings[key]\r\n\r\n ajaxStart(settings)\r\n\r\n if (!settings.crossDomain) {\r\n urlAnchor = document.createElement('a')\r\n urlAnchor.href = settings.url\r\n // cleans up URL for .href (IE only), see https://github.com/madrobby/zepto/pull/1049\r\n urlAnchor.href = urlAnchor.href\r\n settings.crossDomain = (originAnchor.protocol + '//' + originAnchor.host) !== (urlAnchor.protocol + '//' + urlAnchor.host)\r\n }\r\n\r\n if (!settings.url) settings.url = window.location.toString()\r\n if ((hashIndex = settings.url.indexOf('#')) > -1) settings.url = settings.url.slice(0, hashIndex)\r\n serializeData(settings)\r\n\r\n var dataType = settings.dataType, hasPlaceholder = /\\?.+=\\?/.test(settings.url)\r\n if (hasPlaceholder) dataType = 'jsonp'\r\n\r\n if (settings.cache === false || (\r\n (!options || options.cache !== true) &&\r\n ('script' == dataType || 'jsonp' == dataType)\r\n ))\r\n settings.url = appendQuery(settings.url, '_=' + Date.now())\r\n\r\n if ('jsonp' == dataType) {\r\n if (!hasPlaceholder)\r\n settings.url = appendQuery(settings.url,\r\n settings.jsonp ? (settings.jsonp + '=?') : settings.jsonp === false ? '' : 'callback=?')\r\n return $.ajaxJSONP(settings, deferred)\r\n }\r\n\r\n var mime = settings.accepts[dataType],\r\n headers = { },\r\n setHeader = function(name, value) { headers[name.toLowerCase()] = [name, value] },\r\n protocol = /^([\\w-]+:)\\/\\//.test(settings.url) ? RegExp.$1 : window.location.protocol,\r\n xhr = settings.xhr(),\r\n nativeSetHeader = xhr.setRequestHeader,\r\n abortTimeout\r\n\r\n if (deferred) deferred.promise(xhr)\r\n\r\n if (!settings.crossDomain) setHeader('X-Requested-With', 'XMLHttpRequest')\r\n setHeader('Accept', mime || '*/*')\r\n if (mime = settings.mimeType || mime) {\r\n if (mime.indexOf(',') > -1) mime = mime.split(',', 2)[0]\r\n xhr.overrideMimeType && xhr.overrideMimeType(mime)\r\n }\r\n if (settings.contentType || (settings.contentType !== false && settings.data && settings.type.toUpperCase() != 'GET'))\r\n setHeader('Content-Type', settings.contentType || 'application/x-www-form-urlencoded')\r\n\r\n if (settings.headers) for (name in settings.headers) setHeader(name, settings.headers[name])\r\n xhr.setRequestHeader = setHeader\r\n\r\n xhr.onreadystatechange = function(){\r\n if (xhr.readyState == 4) {\r\n xhr.onreadystatechange = empty\r\n clearTimeout(abortTimeout)\r\n var result, error = false\r\n if ((xhr.status >= 200 && xhr.status < 300) || xhr.status == 304 || (xhr.status == 0 && protocol == 'file:')) {\r\n dataType = dataType || mimeToDataType(settings.mimeType || xhr.getResponseHeader('content-type'))\r\n\r\n if (xhr.responseType == 'arraybuffer' || xhr.responseType == 'blob')\r\n result = xhr.response\r\n else {\r\n result = xhr.responseText\r\n\r\n try {\r\n // http://perfectionkills.com/global-eval-what-are-the-options/\r\n // sanitize response accordingly if data filter callback provided\r\n result = ajaxDataFilter(result, dataType, settings)\r\n if (dataType == 'script') (1,eval)(result)\r\n else if (dataType == 'xml') result = xhr.responseXML\r\n else if (dataType == 'json') result = blankRE.test(result) ? null : $.parseJSON(result)\r\n } catch (e) { error = e }\r\n\r\n if (error) return ajaxError(error, 'parsererror', xhr, settings, deferred)\r\n }\r\n\r\n ajaxSuccess(result, xhr, settings, deferred)\r\n } else {\r\n ajaxError(xhr.statusText || null, xhr.status ? 'error' : 'abort', xhr, settings, deferred)\r\n }\r\n }\r\n }\r\n\r\n if (ajaxBeforeSend(xhr, settings) === false) {\r\n xhr.abort()\r\n ajaxError(null, 'abort', xhr, settings, deferred)\r\n return xhr\r\n }\r\n\r\n var async = 'async' in settings ? settings.async : true\r\n xhr.open(settings.type, settings.url, async, settings.username, settings.password)\r\n\r\n if (settings.xhrFields) for (name in settings.xhrFields) xhr[name] = settings.xhrFields[name]\r\n\r\n for (name in headers) nativeSetHeader.apply(xhr, headers[name])\r\n\r\n if (settings.timeout > 0) abortTimeout = setTimeout(function(){\r\n xhr.onreadystatechange = empty\r\n xhr.abort()\r\n ajaxError(null, 'timeout', xhr, settings, deferred)\r\n }, settings.timeout)\r\n\r\n // avoid sending empty string (#319)\r\n xhr.send(settings.data ? settings.data : null)\r\n return xhr\r\n }\r\n\r\n // handle optional data/success arguments\r\n function parseArguments(url, data, success, dataType) {\r\n if ($.isFunction(data)) dataType = success, success = data, data = undefined\r\n if (!$.isFunction(success)) dataType = success, success = undefined\r\n return {\r\n url: url\r\n , data: data\r\n , success: success\r\n , dataType: dataType\r\n }\r\n }\r\n\r\n $.get = function(/* url, data, success, dataType */){\r\n return $.ajax(parseArguments.apply(null, arguments))\r\n }\r\n\r\n $.post = function(/* url, data, success, dataType */){\r\n var options = parseArguments.apply(null, arguments)\r\n options.type = 'POST'\r\n return $.ajax(options)\r\n }\r\n\r\n $.getJSON = function(/* url, data, success */){\r\n var options = parseArguments.apply(null, arguments)\r\n options.dataType = 'json'\r\n return $.ajax(options)\r\n }\r\n\r\n $.fn.load = function(url, data, success){\r\n if (!this.length) return this\r\n var self = this, parts = url.split(/\\s/), selector,\r\n options = parseArguments(url, data, success),\r\n callback = options.success\r\n if (parts.length > 1) options.url = parts[0], selector = parts[1]\r\n options.success = function(response){\r\n self.html(selector ?\r\n $('<div>').html(response.replace(rscript, \"\")).find(selector)\r\n : response)\r\n callback && callback.apply(self, arguments)\r\n }\r\n $.ajax(options)\r\n return this\r\n }\r\n\r\n var escape = encodeURIComponent\r\n\r\n function serialize(params, obj, traditional, scope){\r\n var type, array = $.isArray(obj), hash = $.isPlainObject(obj)\r\n $.each(obj, function(key, value) {\r\n type = $.type(value)\r\n if (scope) key = traditional ? scope :\r\n scope + '[' + (hash || type == 'object' || type == 'array' ? key : '') + ']'\r\n // handle data in serializeArray() format\r\n if (!scope && array) params.add(value.name, value.value)\r\n // recurse into nested objects\r\n else if (type == \"array\" || (!traditional && type == \"object\"))\r\n serialize(params, value, traditional, key)\r\n else params.add(key, value)\r\n })\r\n }\r\n\r\n $.param = function(obj, traditional){\r\n var params = []\r\n params.add = function(key, value) {\r\n if ($.isFunction(value)) value = value()\r\n if (value == null) value = \"\"\r\n this.push(escape(key) + '=' + escape(value))\r\n }\r\n serialize(params, obj, traditional)\r\n return params.join('&').replace(/%20/g, '+')\r\n }\r\n})(Zepto)\r\n\r\n;(function($){\r\n $.fn.serializeArray = function() {\r\n var name, type, result = [],\r\n add = function(value) {\r\n if (value.forEach) return value.forEach(add)\r\n result.push({ name: name, value: value })\r\n }\r\n if (this[0]) $.each(this[0].elements, function(_, field){\r\n type = field.type, name = field.name\r\n if (name && field.nodeName.toLowerCase() != 'fieldset' &&\r\n !field.disabled && type != 'submit' && type != 'reset' && type != 'button' && type != 'file' &&\r\n ((type != 'radio' && type != 'checkbox') || field.checked))\r\n add($(field).val())\r\n })\r\n return result\r\n }\r\n\r\n $.fn.serialize = function(){\r\n var result = []\r\n this.serializeArray().forEach(function(elm){\r\n result.push(encodeURIComponent(elm.name) + '=' + encodeURIComponent(elm.value))\r\n })\r\n return result.join('&')\r\n }\r\n\r\n $.fn.submit = function(callback) {\r\n if (0 in arguments) this.bind('submit', callback)\r\n else if (this.length) {\r\n var event = $.Event('submit')\r\n this.eq(0).trigger(event)\r\n if (!event.isDefaultPrevented()) this.get(0).submit()\r\n }\r\n return this\r\n }\r\n\r\n})(Zepto)\r\n\r\n;(function(){\r\n // getComputedStyle shouldn't freak out when called\r\n // without a valid element as argument\r\n try {\r\n getComputedStyle(undefined)\r\n } catch(e) {\r\n var nativeGetComputedStyle = getComputedStyle\r\n window.getComputedStyle = function(element, pseudoElement){\r\n try {\r\n return nativeGetComputedStyle(element, pseudoElement)\r\n } catch(e) {\r\n return null\r\n }\r\n }\r\n }\r\n})()\r\n\r\nmodule.exports = Zepto\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/js/zepto.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\n// css base code, injected by the css-loader\nmodule.exports = function() {\n\tvar list = [];\n\n\t// return the list of modules as css string\n\tlist.toString = function toString() {\n\t\tvar result = [];\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar item = this[i];\n\t\t\tif(item[2]) {\n\t\t\t\tresult.push(\"@media \" + item[2] + \"{\" + item[1] + \"}\");\n\t\t\t} else {\n\t\t\t\tresult.push(item[1]);\n\t\t\t}\n\t\t}\n\t\treturn result.join(\"\");\n\t};\n\n\t// import a list of modules into the list\n\tlist.i = function(modules, mediaQuery) {\n\t\tif(typeof modules === \"string\")\n\t\t\tmodules = [[null, modules, \"\"]];\n\t\tvar alreadyImportedModules = {};\n\t\tfor(var i = 0; i < this.length; i++) {\n\t\t\tvar id = this[i][0];\n\t\t\tif(typeof id === \"number\")\n\t\t\t\talreadyImportedModules[id] = true;\n\t\t}\n\t\tfor(i = 0; i < modules.length; i++) {\n\t\t\tvar item = modules[i];\n\t\t\t// skip already imported module\n\t\t\t// this implementation is not 100% perfect for weird media query combinations\n\t\t\t// when a module is imported multiple times with different media queries.\n\t\t\t// I hope this will never occur (Hey this way we have smaller bundles)\n\t\t\tif(typeof item[0] !== \"number\" || !alreadyImportedModules[item[0]]) {\n\t\t\t\tif(mediaQuery && !item[2]) {\n\t\t\t\t\titem[2] = mediaQuery;\n\t\t\t\t} else if(mediaQuery) {\n\t\t\t\t\titem[2] = \"(\" + item[2] + \") and (\" + mediaQuery + \")\";\n\t\t\t\t}\n\t\t\t\tlist.push(item);\n\t\t\t}\n\t\t}\n\t};\n\treturn list;\n};\n\n\n\n// WEBPACK FOOTER //\n// ./~/css-loader/lib/css-base.js","/*\n\tMIT License http://www.opensource.org/licenses/mit-license.php\n\tAuthor Tobias Koppers @sokra\n*/\nvar stylesInDom = {},\n\tmemoize = function(fn) {\n\t\tvar memo;\n\t\treturn function () {\n\t\t\tif (typeof memo === \"undefined\") memo = fn.apply(this, arguments);\n\t\t\treturn memo;\n\t\t};\n\t},\n\tisOldIE = memoize(function() {\n\t\treturn /msie [6-9]\\b/.test(self.navigator.userAgent.toLowerCase());\n\t}),\n\tgetHeadElement = memoize(function () {\n\t\treturn document.head || document.getElementsByTagName(\"head\")[0];\n\t}),\n\tsingletonElement = null,\n\tsingletonCounter = 0,\n\tstyleElementsInsertedAtTop = [];\n\nmodule.exports = function(list, options) {\n\tif(typeof DEBUG !== \"undefined\" && DEBUG) {\n\t\tif(typeof document !== \"object\") throw new Error(\"The style-loader cannot be used in a non-browser environment\");\n\t}\n\n\toptions = options || {};\n\t// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>\n\t// tags it will allow on a page\n\tif (typeof options.singleton === \"undefined\") options.singleton = isOldIE();\n\n\t// By default, add <style> tags to the bottom of <head>.\n\tif (typeof options.insertAt === \"undefined\") options.insertAt = \"bottom\";\n\n\tvar styles = listToStyles(list);\n\taddStylesToDom(styles, options);\n\n\treturn function update(newList) {\n\t\tvar mayRemove = [];\n\t\tfor(var i = 0; i < styles.length; i++) {\n\t\t\tvar item = styles[i];\n\t\t\tvar domStyle = stylesInDom[item.id];\n\t\t\tdomStyle.refs--;\n\t\t\tmayRemove.push(domStyle);\n\t\t}\n\t\tif(newList) {\n\t\t\tvar newStyles = listToStyles(newList);\n\t\t\taddStylesToDom(newStyles, options);\n\t\t}\n\t\tfor(var i = 0; i < mayRemove.length; i++) {\n\t\t\tvar domStyle = mayRemove[i];\n\t\t\tif(domStyle.refs === 0) {\n\t\t\t\tfor(var j = 0; j < domStyle.parts.length; j++)\n\t\t\t\t\tdomStyle.parts[j]();\n\t\t\t\tdelete stylesInDom[domStyle.id];\n\t\t\t}\n\t\t}\n\t};\n}\n\nfunction addStylesToDom(styles, options) {\n\tfor(var i = 0; i < styles.length; i++) {\n\t\tvar item = styles[i];\n\t\tvar domStyle = stylesInDom[item.id];\n\t\tif(domStyle) {\n\t\t\tdomStyle.refs++;\n\t\t\tfor(var j = 0; j < domStyle.parts.length; j++) {\n\t\t\t\tdomStyle.parts[j](item.parts[j]);\n\t\t\t}\n\t\t\tfor(; j < item.parts.length; j++) {\n\t\t\t\tdomStyle.parts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t} else {\n\t\t\tvar parts = [];\n\t\t\tfor(var j = 0; j < item.parts.length; j++) {\n\t\t\t\tparts.push(addStyle(item.parts[j], options));\n\t\t\t}\n\t\t\tstylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};\n\t\t}\n\t}\n}\n\nfunction listToStyles(list) {\n\tvar styles = [];\n\tvar newStyles = {};\n\tfor(var i = 0; i < list.length; i++) {\n\t\tvar item = list[i];\n\t\tvar id = item[0];\n\t\tvar css = item[1];\n\t\tvar media = item[2];\n\t\tvar sourceMap = item[3];\n\t\tvar part = {css: css, media: media, sourceMap: sourceMap};\n\t\tif(!newStyles[id])\n\t\t\tstyles.push(newStyles[id] = {id: id, parts: [part]});\n\t\telse\n\t\t\tnewStyles[id].parts.push(part);\n\t}\n\treturn styles;\n}\n\nfunction insertStyleElement(options, styleElement) {\n\tvar head = getHeadElement();\n\tvar lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];\n\tif (options.insertAt === \"top\") {\n\t\tif(!lastStyleElementInsertedAtTop) {\n\t\t\thead.insertBefore(styleElement, head.firstChild);\n\t\t} else if(lastStyleElementInsertedAtTop.nextSibling) {\n\t\t\thead.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);\n\t\t} else {\n\t\t\thead.appendChild(styleElement);\n\t\t}\n\t\tstyleElementsInsertedAtTop.push(styleElement);\n\t} else if (options.insertAt === \"bottom\") {\n\t\thead.appendChild(styleElement);\n\t} else {\n\t\tthrow new Error(\"Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.\");\n\t}\n}\n\nfunction removeStyleElement(styleElement) {\n\tstyleElement.parentNode.removeChild(styleElement);\n\tvar idx = styleElementsInsertedAtTop.indexOf(styleElement);\n\tif(idx >= 0) {\n\t\tstyleElementsInsertedAtTop.splice(idx, 1);\n\t}\n}\n\nfunction createStyleElement(options) {\n\tvar styleElement = document.createElement(\"style\");\n\tstyleElement.type = \"text/css\";\n\tinsertStyleElement(options, styleElement);\n\treturn styleElement;\n}\n\nfunction createLinkElement(options) {\n\tvar linkElement = document.createElement(\"link\");\n\tlinkElement.rel = \"stylesheet\";\n\tinsertStyleElement(options, linkElement);\n\treturn linkElement;\n}\n\nfunction addStyle(obj, options) {\n\tvar styleElement, update, remove;\n\n\tif (options.singleton) {\n\t\tvar styleIndex = singletonCounter++;\n\t\tstyleElement = singletonElement || (singletonElement = createStyleElement(options));\n\t\tupdate = applyToSingletonTag.bind(null, styleElement, styleIndex, false);\n\t\tremove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);\n\t} else if(obj.sourceMap &&\n\t\ttypeof URL === \"function\" &&\n\t\ttypeof URL.createObjectURL === \"function\" &&\n\t\ttypeof URL.revokeObjectURL === \"function\" &&\n\t\ttypeof Blob === \"function\" &&\n\t\ttypeof btoa === \"function\") {\n\t\tstyleElement = createLinkElement(options);\n\t\tupdate = updateLink.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t\tif(styleElement.href)\n\t\t\t\tURL.revokeObjectURL(styleElement.href);\n\t\t};\n\t} else {\n\t\tstyleElement = createStyleElement(options);\n\t\tupdate = applyToTag.bind(null, styleElement);\n\t\tremove = function() {\n\t\t\tremoveStyleElement(styleElement);\n\t\t};\n\t}\n\n\tupdate(obj);\n\n\treturn function updateStyle(newObj) {\n\t\tif(newObj) {\n\t\t\tif(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)\n\t\t\t\treturn;\n\t\t\tupdate(obj = newObj);\n\t\t} else {\n\t\t\tremove();\n\t\t}\n\t};\n}\n\nvar replaceText = (function () {\n\tvar textStore = [];\n\n\treturn function (index, replacement) {\n\t\ttextStore[index] = replacement;\n\t\treturn textStore.filter(Boolean).join('\\n');\n\t};\n})();\n\nfunction applyToSingletonTag(styleElement, index, remove, obj) {\n\tvar css = remove ? \"\" : obj.css;\n\n\tif (styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = replaceText(index, css);\n\t} else {\n\t\tvar cssNode = document.createTextNode(css);\n\t\tvar childNodes = styleElement.childNodes;\n\t\tif (childNodes[index]) styleElement.removeChild(childNodes[index]);\n\t\tif (childNodes.length) {\n\t\t\tstyleElement.insertBefore(cssNode, childNodes[index]);\n\t\t} else {\n\t\t\tstyleElement.appendChild(cssNode);\n\t\t}\n\t}\n}\n\nfunction applyToTag(styleElement, obj) {\n\tvar css = obj.css;\n\tvar media = obj.media;\n\n\tif(media) {\n\t\tstyleElement.setAttribute(\"media\", media)\n\t}\n\n\tif(styleElement.styleSheet) {\n\t\tstyleElement.styleSheet.cssText = css;\n\t} else {\n\t\twhile(styleElement.firstChild) {\n\t\t\tstyleElement.removeChild(styleElement.firstChild);\n\t\t}\n\t\tstyleElement.appendChild(document.createTextNode(css));\n\t}\n}\n\nfunction updateLink(linkElement, obj) {\n\tvar css = obj.css;\n\tvar sourceMap = obj.sourceMap;\n\n\tif(sourceMap) {\n\t\t// http://stackoverflow.com/a/26603875\n\t\tcss += \"\\n/*# sourceMappingURL=data:application/json;base64,\" + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + \" */\";\n\t}\n\n\tvar blob = new Blob([css], { type: \"text/css\" });\n\n\tvar oldSrc = linkElement.href;\n\n\tlinkElement.href = URL.createObjectURL(blob);\n\n\tif(oldSrc)\n\t\tURL.revokeObjectURL(oldSrc);\n}\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/style-loader/addStyles.js\n// module id = 27\n// module chunks = 7","!function(){var a=\"@charset \\\"utf-8\\\";html{overflow-y:scroll;-webkit-text-size-adjust:100%;-ms-text-size-adjust:100%}html *{outline:0;-webkit-text-size-adjust:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}html,body{font-family:sans-serif}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td,hr,button,article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section{margin:0;padding:0}input,select,textarea{font-size:100%}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}abbr,acronym{border:0;font-variant:normal}del{text-decoration:line-through}address,caption,cite,code,dfn,th,var{font-style:normal;font-weight:500}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:500}q:before,q:after{content:''}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}ins,a{text-decoration:none}\",b=document.createElement(\"style\");if(document.getElementsByTagName(\"head\")[0].appendChild(b),b.styleSheet)b.styleSheet.disabled||(b.styleSheet.cssText=a);else try{b.innerHTML=a}catch(c){b.innerText=a}}();!function(a,b){function c(){var b=f.getBoundingClientRect().width;b/i>540&&(b=540*i);var c=b/10;f.style.fontSize=c+\"px\",k.rem=a.rem=c}var d,e=a.document,f=e.documentElement,g=e.querySelector('meta[name=\"viewport\"]'),h=e.querySelector('meta[name=\"flexible\"]'),i=0,j=0,k=b.flexible||(b.flexible={});if(g){console.warn(\"将根据已有的meta标签来设置缩放比例\");var l=g.getAttribute(\"content\").match(/initial\\-scale=([\\d\\.]+)/);l&&(j=parseFloat(l[1]),i=parseInt(1/j))}else if(h){var m=h.getAttribute(\"content\");if(m){var n=m.match(/initial\\-dpr=([\\d\\.]+)/),o=m.match(/maximum\\-dpr=([\\d\\.]+)/);n&&(i=parseFloat(n[1]),j=parseFloat((1/i).toFixed(2))),o&&(i=parseFloat(o[1]),j=parseFloat((1/i).toFixed(2)))}}if(!i&&!j){var p=(a.navigator.appVersion.match(/android/gi),a.navigator.appVersion.match(/iphone/gi)),q=a.devicePixelRatio;i=p?q>=3&&(!i||i>=3)?3:q>=2&&(!i||i>=2)?2:1:1,j=1/i}if(f.setAttribute(\"data-dpr\",i),!g)if(g=e.createElement(\"meta\"),g.setAttribute(\"name\",\"viewport\"),g.setAttribute(\"content\",\"initial-scale=\"+j+\", maximum-scale=\"+j+\", minimum-scale=\"+j+\", user-scalable=no\"),f.firstElementChild)f.firstElementChild.appendChild(g);else{var r=e.createElement(\"div\");r.appendChild(g),e.write(r.innerHTML)}a.addEventListener(\"resize\",function(){clearTimeout(d),d=setTimeout(c,300)},!1),a.addEventListener(\"pageshow\",function(a){a.persisted&&(clearTimeout(d),d=setTimeout(c,300))},!1),\"complete\"===e.readyState?e.body.style.fontSize=12*i+\"px\":e.addEventListener(\"DOMContentLoaded\",function(){e.body.style.fontSize=12*i+\"px\"},!1),c(),k.dpr=a.dpr=i,k.refreshRem=c,k.rem2px=function(a){var b=parseFloat(a)*this.rem;return\"string\"==typeof a&&a.match(/rem$/)&&(b+=\"px\"),b},k.px2rem=function(a){var b=parseFloat(a)/this.rem;return\"string\"==typeof a&&a.match(/px$/)&&(b+=\"rem\"),b}}(window,window.lib||(window.lib={}));\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/js/flexible.js"],"sourceRoot":""}
|