1 |
- {"version":3,"sources":["webpack:///js/global.js","webpack:///webpack/bootstrap dcfa53572542d12c2fb8","webpack:///./mobile/src/router/global.js","webpack:///./~/css-loader/lib/css-base.js","webpack:///./~/style-loader/addStyles.js","webpack:///./mobile/src/js/flexible.js","webpack:///./mobile/src/js/zepto.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","6","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","18","23","list","toString","this","item","join","mediaQuery","alreadyImportedModules","id","24","addStylesToDom","styles","options","domStyle","stylesInDom","refs","j","parts","addStyle","listToStyles","newStyles","css","media","sourceMap","part","insertStyleElement","styleElement","getHeadElement","lastStyleElementInsertedAtTop","styleElementsInsertedAtTop","insertAt","nextSibling","insertBefore","firstChild","removeStyleElement","parentNode","removeChild","idx","indexOf","splice","createStyleElement","createLinkElement","linkElement","rel","obj","update","remove","singleton","styleIndex","singletonCounter","singletonElement","applyToSingletonTag","bind","URL","createObjectURL","revokeObjectURL","Blob","btoa","updateLink","href","applyToTag","newObj","index","styleSheet","cssText","replaceText","cssNode","createTextNode","childNodes","unescape","encodeURIComponent","JSON","stringify","blob","oldSrc","memoize","fn","memo","apply","arguments","isOldIE","test","self","navigator","userAgent","toLowerCase","DEBUG","newList","mayRemove","textStore","replacement","filter","Boolean","7","a","b","disabled","innerHTML","innerText","f","getBoundingClientRect","width","style","fontSize","k","rem","documentElement","g","querySelector","h","flexible","warn","getAttribute","match","parseFloat","parseInt","toFixed","appVersion","q","devicePixelRatio","firstElementChild","r","write","addEventListener","persisted","readyState","body","dpr","refreshRem","rem2px","px2rem","lib","8","_typeof","Symbol","iterator","constructor","Zepto","String","class2type","isFunction","isWindow","isDocument","nodeType","DOCUMENT_NODE","isObject","isPlainObject","getPrototypeOf","likeArray","$","compact","array","flatten","concat","dasherize","str","replace","classRE","classCache","RegExp","maybeAddPx","cssNumber","defaultDisplay","nodeName","element","display","elementDisplay","getComputedStyle","getPropertyValue","children","slice","map","node","Z","dom","selector","len","extend","target","source","deep","key","isArray","filtered","nodes","funcArg","context","arg","payload","removeAttribute","className","klass","svg","baseVal","deserializeValue","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","parent","temp","qsa","chr","toUpperCase","fragment","html","properties","container","$1","each","attr","isZ","init","trim","find","ready","args","forEach","found","maybeID","maybeClass","nameOnly","isSimple","getElementById","getElementsByClassName","querySelectorAll","contains","isEmptyObject","isNumeric","val","num","Number","isNaN","isFinite","inArray","elem","camelCase","uuid","support","expr","noop","elements","callback","values","grep","parse","split","reduce","sort","toArray","el","size","every","not","add","is","excludes","has","eq","first","last","$this","some","closest","collection","_","parents","ancestors","pluck","contents","contentDocument","siblings","child","empty","show","replaceWith","newContent","before","wrap","structure","func","clone","wrapAll","cloneNode","append","wrapInner","unwrap","hide","toggle","setting","prev","next","originHtml","text","newText","textContent","removeAttr","attribute","prop","removeProp","data","attrName","multiple","selected","offset","coordinates","coords","parentOffset","offsetParent","props","top","left","pageXOffset","pageYOffset","Math","round","height","computedStyle","removeProperty","hasClass","addClass","cls","removeClass","toggleClass","when","scrollTop","hasScrollTop","scrollTo","scrollX","scrollLeft","hasScrollLeft","scrollY","position","detach","dimension","dimensionProperty","operator","operatorIndex","inside","argType","arr","copyByClone","parentInDocument","ownerDocument","defaultView","zid","_zid","findHandlers","event","ns","matcher","matcherFor","handlers","handler","sel","eventCapture","captureSetting","del","focusinSupported","focus","realEvent","hover","events","delegator","capture","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","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","processData","param","traditional","dataType","parseArguments","serialize","params","scope","hash","jsonpID","rscript","blankRE","originAnchor","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","serializeArray","field","checked","elm","submit","nativeGetComputedStyle","pseudoElement"],"mappings":"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","file":"js/global.js?v=dcfa5357","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\t6: 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=\" + \"dcfa5357\" + \"\";\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 = 18);\n/******/ })\n/************************************************************************/\n/******/ ({\n\n/***/ 0:\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\n__webpack_require__(10);\n\n__webpack_require__(7);\n\n__webpack_require__(8);\n\n/***/ }),\n\n/***/ 10:\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n\n/***/ 18:\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(0);\n\n\n/***/ }),\n\n/***/ 23:\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/***/ 24:\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/***/ 7:\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/***/ 8:\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/******/ });\n\n\n// WEBPACK FOOTER //\n// js/global.js?v=dcfa5357"," \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\t6: 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=\" + \"dcfa5357\" + \"\";\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 = 18);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap dcfa53572542d12c2fb8","import '../css/base.css';\r\nimport '../js/flexible.js';\r\nimport '../js/zepto.js';\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./mobile/src/router/global.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 = 24\n// module chunks = 6","!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","/* 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"],"sourceRoot":""}
|