vant/docs/build/build-docs.js
2017-01-16 02:48:57 +08:00

9975 lines
440 KiB
JavaScript

/******/ (function(modules) { // webpackBootstrap
/******/ // install a JSONP callback for chunk loading
/******/ var parentJsonpFunction = window["webpackJsonp"];
/******/ window["webpackJsonp"] = function webpackJsonpCallback(chunkIds, moreModules) {
/******/ // add "moreModules" to the modules object,
/******/ // then flag all "chunkIds" as loaded and fire callback
/******/ var moduleId, chunkId, i = 0, callbacks = [];
/******/ for(;i < chunkIds.length; i++) {
/******/ chunkId = chunkIds[i];
/******/ if(installedChunks[chunkId])
/******/ callbacks.push.apply(callbacks, installedChunks[chunkId]);
/******/ installedChunks[chunkId] = 0;
/******/ }
/******/ for(moduleId in moreModules) {
/******/ modules[moduleId] = moreModules[moduleId];
/******/ }
/******/ if(parentJsonpFunction) parentJsonpFunction(chunkIds, moreModules);
/******/ while(callbacks.length)
/******/ callbacks.shift().call(null, __webpack_require__);
/******/
/******/ };
/******/
/******/ // The module cache
/******/ var installedModules = {};
/******/
/******/ // object to store loaded and loading chunks
/******/ // "0" means "already loaded"
/******/ // Array means "loading", array contains callbacks
/******/ var installedChunks = {
/******/ 0:0
/******/ };
/******/
/******/ // The require function
/******/ function __webpack_require__(moduleId) {
/******/
/******/ // Check if module is in cache
/******/ if(installedModules[moduleId])
/******/ return installedModules[moduleId].exports;
/******/
/******/ // Create a new module (and put it into the cache)
/******/ var module = installedModules[moduleId] = {
/******/ exports: {},
/******/ id: moduleId,
/******/ loaded: false
/******/ };
/******/
/******/ // Execute the module function
/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
/******/
/******/ // Flag the module as loaded
/******/ module.loaded = true;
/******/
/******/ // Return the exports of the module
/******/ return module.exports;
/******/ }
/******/
/******/ // This file contains only the entry chunk.
/******/ // The chunk loading function for additional chunks
/******/ __webpack_require__.e = function requireEnsure(chunkId, callback) {
/******/ // "0" is the signal for "already loaded"
/******/ if(installedChunks[chunkId] === 0)
/******/ return callback.call(null, __webpack_require__);
/******/
/******/ // an array means "currently loading".
/******/ if(installedChunks[chunkId] !== undefined) {
/******/ installedChunks[chunkId].push(callback);
/******/ } else {
/******/ // start chunk loading
/******/ installedChunks[chunkId] = [callback];
/******/ var head = document.getElementsByTagName('head')[0];
/******/ var script = document.createElement('script');
/******/ script.type = 'text/javascript';
/******/ script.charset = 'utf-8';
/******/ script.async = true;
/******/
/******/ script.src = __webpack_require__.p + "" + chunkId + "." + ({}[chunkId]||chunkId) + ".js";
/******/ head.appendChild(script);
/******/ }
/******/ };
/******/
/******/ // expose the modules object (__webpack_modules__)
/******/ __webpack_require__.m = modules;
/******/
/******/ // expose the module cache
/******/ __webpack_require__.c = installedModules;
/******/
/******/ // __webpack_public_path__
/******/ __webpack_require__.p = "docs/build";
/******/
/******/ // Load entry module and return exports
/******/ return __webpack_require__(0);
/******/ })
/************************************************************************/
/******/ ([
/* 0 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
__webpack_require__(1);
var _vue = __webpack_require__(9);
var _vue2 = _interopRequireDefault(_vue);
var _vueRouter = __webpack_require__(11);
var _vueRouter2 = _interopRequireDefault(_vueRouter);
var _App = __webpack_require__(12);
var _App2 = _interopRequireDefault(_App);
var _router = __webpack_require__(21);
var _router2 = _interopRequireDefault(_router);
var _demoBlock = __webpack_require__(27);
var _demoBlock2 = _interopRequireDefault(_demoBlock);
var _sideNav = __webpack_require__(32);
var _sideNav2 = _interopRequireDefault(_sideNav);
var _index = __webpack_require__(37);
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
_vue2.default.use(_index2.default);
_vue2.default.use(_vueRouter2.default);
_vue2.default.component('demo-block', _demoBlock2.default);
_vue2.default.component('side-nav', _sideNav2.default);
// init components
// for (let i in Oxygen) {
// let module = Oxygen[i];
// if (!module.ignoreInit) {
// Vue.component(module.name, module);
// }
// }
var AppContainer = _vue2.default.extend(_App2.default);
var router = new _vueRouter2.default();
router.map(_router2.default);
router.redirect({
'*': '/component/sample'
});
router.beforeEach(function (transition) {
window.scrollTo(0, 0);
transition.next();
});
router.start(AppContainer, '#app-container');
/***/ },
/* 1 */
/***/ function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(2);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(8)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!./../../node_modules/css-loader/index.js!./../../node_modules/less-loader/index.js!./docs.less", function() {
var newContent = require("!!./../../node_modules/css-loader/index.js!./../../node_modules/less-loader/index.js!./docs.less");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ },
/* 2 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(3)();
// imports
// module
exports.push([module.id, "html,\nbody,\ndiv,\nspan,\napplet,\nobject,\niframe,\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\np,\nblockquote,\npre,\na,\nabbr,\nacronym,\naddress,\nbig,\ncite,\ncode,\ndel,\ndfn,\nem,\nimg,\nins,\nkbd,\nq,\ns,\nsamp,\nsmall,\nstrike,\nstrong,\nsub,\nsup,\ntt,\nvar,\nb,\nu,\ni,\ncenter,\ndl,\ndt,\ndd,\nol,\nul,\nli,\nfieldset,\nform,\nlabel,\nlegend,\ntable,\ncaption,\ntbody,\ntfoot,\nthead,\ntr,\nth,\ntd,\narticle,\naside,\ncanvas,\ndetails,\nembed,\nfigure,\nfigcaption,\nfooter,\nheader,\nhgroup,\nmenu,\nnav,\noutput,\nruby,\nsection,\nsummary,\ntime,\nmark,\naudio,\nvideo {\n margin: 0;\n padding: 0;\n border: 0;\n font-size: 100%;\n vertical-align: baseline;\n}\nbody {\n font-family: 'Helvetica Neue', Helvetica, 'PingFang SC', 'Hiragino Sans GB', 'Microsoft YaHei', SimSun, sans-serif;\n overflow: auto;\n font-weight: 400;\n -webkit-font-smoothing: antialiased;\n}\na {\n color: #4078c0;\n text-decoration: none;\n}\nbutton,\ninput,\nselect,\ntextarea {\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n color: inherit;\n}\nul {\n list-style: none;\n}\n.hljs {\n line-height: 1.8;\n font-family: Menlo, Monaco, Consolas, Courier, monospace;\n font-size: 12px;\n padding: 18px 24px;\n background-color: #f9fafc;\n border: solid 1px #eaeefb;\n margin-bottom: 25px;\n border-radius: 4px;\n -webkit-font-smoothing: auto;\n}\n@font-face {\n font-family: \"handle\";\n src: url(" + __webpack_require__(4) + ");\n /* IE9*/\n src: url(" + __webpack_require__(4) + "?#iefix) format(\"embedded-opentype\"), url(" + __webpack_require__(5) + ") format(\"woff\"), url(" + __webpack_require__(6) + ") format(\"truetype\"), url(" + __webpack_require__(7) + "#iconfont) format(\"svg\");\n /* iOS 4.1- */\n}\n.iconhandle {\n font-family: \"handle\";\n font-size: 16px;\n font-style: normal;\n}\n", ""]);
// exports
/***/ },
/* 3 */
/***/ function(module, exports) {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
// css base code, injected by the css-loader
module.exports = function() {
var list = [];
// return the list of modules as css string
list.toString = function toString() {
var result = [];
for(var i = 0; i < this.length; i++) {
var item = this[i];
if(item[2]) {
result.push("@media " + item[2] + "{" + item[1] + "}");
} else {
result.push(item[1]);
}
}
return result.join("");
};
// import a list of modules into the list
list.i = function(modules, mediaQuery) {
if(typeof modules === "string")
modules = [[null, modules, ""]];
var alreadyImportedModules = {};
for(var i = 0; i < this.length; i++) {
var id = this[i][0];
if(typeof id === "number")
alreadyImportedModules[id] = true;
}
for(i = 0; i < modules.length; i++) {
var item = modules[i];
// skip already imported module
// this implementation is not 100% perfect for weird media query combinations
// when a module is imported multiple times with different media queries.
// I hope this will never occur (Hey this way we have smaller bundles)
if(typeof item[0] !== "number" || !alreadyImportedModules[item[0]]) {
if(mediaQuery && !item[2]) {
item[2] = mediaQuery;
} else if(mediaQuery) {
item[2] = "(" + item[2] + ") and (" + mediaQuery + ")";
}
list.push(item);
}
}
};
return list;
};
/***/ },
/* 4 */
/***/ function(module, exports) {
module.exports = "data:application/vnd.ms-fontobject;base64,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AAEAAgBbAQIBAwEEAQUBBgEHAQgBCQEKAQsBDAENAQ4BDwEQAREBEgETARQBFQEWARcBGAEZARoBGwEcAR0BHgEfASABIQEiASMBJAElASYBJwEoASkBKgErASwBLQEuAS8BMAExATIBMwE0ATUBNgE3ATgBOQE6ATsBPAE9AT4BPwFAAUEBQgFDAUQBRQFGAUcBSAFJAUoBSwFMAU0BTgFPAVABUQFSAVMBVAFVAVYBVwFYB3VuaUU2MDAHdW5pRTYwMQd1bmlFNjAyB3VuaUU2MDMHdW5pRTYwNAd1bmlFNjA1B3VuaUU2MDYHdW5pRTYwNwd1bmlFNjA4B3VuaUU2MDkHdW5pRTYwQQd1bmlFNjBCB3VuaUU2MEMHdW5pRTYwRAd1bmlFNjBFB3VuaUU2MEYHdW5pRTYxMAd1bmlFNjExB3VuaUU2MTIHdW5pRTYxMwd1bmlFNjE0B3VuaUU2MTUHdW5pRTYxNgd1bmlFNjE3B3VuaUU2MTgHdW5pRTYxOQd1bmlFNjFBB3VuaUU2MUIHdW5pRTYxQwd1bmlFNjFEB3VuaUU2MUUHdW5pRTYxRgd1bmlFNjIwB3VuaUU2MjEHdW5pRTYyMgd1bmlFNjIzB3VuaUU2MjQHdW5pRTYyNQd1bmlFNjI2B3VuaUU2MjcHdW5pRTYyOAd1bmlFNjI5B3VuaUU2MkEHdW5pRTYyQgd1bmlFNjJDB3VuaUU2MkQHdW5pRTYyRQd1bmlFNjJGB3VuaUU2MzAHdW5pRTYzMQd1bmlFNjMyB3VuaUU2MzMHdW5pRTYzNAd1bmlFNjM1B3VuaUU2MzYHdW5pRTYzNwd1bmlFNjM4B3VuaUU2MzkHdW5pRTYzQQd1bmlFNjNCB3VuaUU2M0MHdW5pRTYzRAd1bmlFNjNFB3VuaUU2M0YHdW5pRTY0MAd1bmlFNjQxB3VuaUU2NDIHdW5pRTY0Mwd1bmlFNjQ0B3VuaUU2NDUHdW5pRTY0Ngd1bmlFNjQ3B3VuaUU2NDgHdW5pRTY0OQd1bmlFNjRBB3VuaUU2NEIHdW5pRTY0Qwd1bmlFNjREB3VuaUU2NEUHdW5pRTY0Rgd1bmlFNjUwB3VuaUU2NTEHdW5pRTY1Mgd1bmlFNjUzB3VuaUU2NTQHdW5pRTY1NQd1bmlFNjU2AAEAAf//AA8AAAAAAAAAAAAAAAAAAAAA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"
/***/ },
/* 5 */
/***/ function(module, exports) {
module.exports = "data:application/font-woff;base64,d09GRgABAAAAAEZYABAAAAAAdmQAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAABGRlRNAAABbAAAABsAAAAcdFJSr0dERUYAAAGIAAAAHQAAACAAiAAET1MvMgAAAagAAABNAAAAYFfAXSljbWFwAAAB+AAAAE4AAAFKy/Ihr2N2dCAAAAJIAAAAGAAAACQNr/5SZnBnbQAAAmAAAAT8AAAJljD3npVnYXNwAAAHXAAAAAgAAAAIAAAAEGdseWYAAAdkAAA6CQAAYKRXVuwTaGVhZAAAQXAAAAAvAAAANgua87NoaGVhAABBoAAAAB4AAAAkCFcD3WhtdHgAAEHAAAAAmwAAAWxjqw4mbG9jYQAAQlwAAAC4AAAAuPR+CrhtYXhwAABDFAAAACAAAAAgAlEEAG5hbWUAAEM0AAABRQAAAkA1g+4ecG9zdAAARHwAAAFDAAADkEEe4C5wcmVwAABFwAAAAJUAAACVpbm+ZnicY2BgYGQAgjO2i86D6Ctc4e+h9AcASQYGxQB4nGNgZGBg4ANiCQYQYGJgBMIoIGYB8xgACCgAjQAAAHicY2BhYWL8wsDKwMA0k+kMAwNDP4RmfM1gzMgJFGVgY2aAAUYBBgQISHNNYTjAUPEsjLnhfwNDDPNShosgNSA5ZgmwEgUGRgCbXw2SAAAAeJxjYGBgZoBgGQZGBhBwAfIYwXwWBg0gzQakGRmYGCqehf3/D+RXPGP4//9/txQLVD0QMLIxwDmMTECCiQEVMDLQDDDTzmiSAAB7VwmJAAB4nGNgQANGDEbMEv8fMi/9rw+jAURCCAd4nJ1VaXfTRhSVvGRP2pLEUETbMROnNBqZsAUDLgQpsgvp4kBoJegiJzFd+AN87Gf9mqfQntOP/LTeO14SWnpO2xxL776ZO2/TexNxjKjseSCuUUdKXveksv5UKvGzpK7rXp4o6fWSumynnpIWUStNlczF/SO5RHUuVrJJsEnG616inqs874PSSzKsKEsi2iLayrwsTVNPHD9NtTi9ZJCmgZSMgp1Ko48QqlEvkaoOZUqHXr2eipsFUjYa8aijonoQKu4czzmljTpgpHKVw1yxWW3ke0nW8/qP0kSn2Nt+nGDDY/QjV4FUjMzA9jQeh08k09FeIjORf+y4TpSFUhtcAK9qsMegSvGhuPFBthPI1HjN8XVRqTQyFee6z7LZLB2PlRDlwd/YoZQbur+Ds9OmqFZjcfvAMwY5KZQoekgWgA5Tmaf2CNo8tEBmjfqj4hzwdQgvshBlKs+ULOhQBzJndveTYtrdSddkcaBfBjJvdveS3cfDRa+O9WW7vmAKZzF6khSLixHchzLrp0y71AhHGRdzwMU8XuLWtELIyAKMSiPMUVv4ntmoa5wdY290Ho/VU2TSRfzdTH49OKlY4TjLekfcSJy7x67rwlUgiwinGu8njizqUGWw+vvSkussOGGYZ8VCxZcXvncR+S8xbj+Qd0zhUr5rihLle6YoU54xRYVyGYWlXDHFFOWqKaYpa6aYoTxrilnKc0am/X/p+334Pocz5+Gb0oNvygvwTfkBfFN+CN+UH8E3pYJvyjp8U16Eb0pt4G0pUxGqmLF0+O0lWrWhajkzuMA+D2TNiPZFbwTSMEp11Ukpdb+lVf4k+euix2Prk5K6NWlsiLu6abP4+HTGb25dMuqGnatPjCPloT109dg0oVP7zeHfzl3dKi65q4hqw6g2IpgEgDbotwLxTfNsOxDzll18/EMwAtTPqTVUU3Xt1JUaD/K8q7sYnuTA44hjoI3rrq7ASxNTVkPz4WcpMhX7g7yplWrnsHX5ZFs1hzakwtsi9pVknKbtveRVSZWV96q0Xj6fhiF6ehbXhLZs3cmkEqFRM87x8K4qRdmRlnLUP0Lnl6K+B5xxdkHrwzHuRN1BtTXsdPj5ZiNrCyaGprS9E6BkLF0VY1HlWZxjdA1rHW/cEp6upycW8Sk2mY/CSnV9lI9uI80rdllm0ahKdXSX9lnsqzb9MjtoWB1nP2mqNu7qYVuNKlI9Vb4GtAd2Vt34UA8rPuqgUVU12+jayGM0LmvGfwzIYlz560arJtPv4JZqp81izV1Bc9+YLPdOL2+9yX4r56aRpv9Woy0jl/0cjvltEeDfOSh2U9ZAvTVpiHEB2QsYLtVE5w7N3cYg4jr7H53T/W/NwiA5q22N2Tz14erpKJI7THmcZZtZ1vUozVG0k8Q+RWKrw4nBTY3hWG7KBgbk7j+s38M94K4siw+8bSSAuM/axKie6uDuHlcjNOwruQ8YmWPHuQ2wA+ASxObYtSsdALvSJecOwGfkEDwgh+AhOQS75NwE+Jwcgi/IIfiSHIKvyLkF0COHYI8cgkfkEDwmpw2wTw7BE3IIviaH4BtyWgAJOQQpOQRPySF4ZmRzUuZvqch1oO8sugH0ve0aKFtQfjByZcLOqFh23yKyDywi9dDI1Qn1iIqlDiwi9blFpP5o5NqE+hMVS/3ZIlJ/sYjUF8aXmYGU13oveUcHfwIrvqx+AAEAAf//AA94nO18CXRcV5nmXd5e21uq6tVeqipVlaSyVFKVSiVZ25NtyYusSLItyWU7jp0o8pKEOGSns4gkhjidhg4hTiDMAN0hAacJgYQlK+5AszVLA+kOMIQDExoYJtDDNJnT0Nbz/PdVyZKdhA7LmTNzzkhV99333n237rv3X77/v/+9iKA0QrhETiCKRNRq5RBClCA6hwjGZBwRgic5yOH1CIkCz0ExqvG+QllLafmylklj9Zdf/So5sTSbJgvwLI/WnP4RfZqGUBB1orVoG9qLrx1/1JjaaW0hGHm8HuRdQNSLvXQvwpKE96hYlhRB3qtht8AJ7r3IxbkO+bCEBLck7ESKyBPOpXA1HXu9nmnk8SjeddHxR02ocfx31CjJysLvWWUIqtz6xqrkFt5QndZ551SHF6A+L5bm/7AKa7Wa1bJ9e39/qcs0t+/dvnf3zv5t/dvG11crXWtLa81Os3Na6wppLQHLCBawUMBpL4njVKU7V+nuIAUcSPEBf9DvJRkhV8D5lAgl8ukOMojNtOAPlks93TlTEL00gfuFUk++A+dzeVzpHiL9uBSMYxyORrbr2ZhO/xIroXziqL2F/BUOJDNeb9Lb1G5vXhNP+8PhJkO61q3rbo+u3ykJvIsjnM+bXT89ZTWbQZmXeV6wH+B9kcDTyVaSxO5wPrK1VY1xnqaovv/2bnPt2qwpY7y4iI1ok/ehYS2iweeGSNBo9qoeKRTxZDTDj6/9sStkuOO5l4BmETq9CNS5iHyohEbQVmsz4gglHIWe5wnl5xGSMOEQqSFexoLIC7uQiLE4gUQRb0NYxGPdZU3t7yuPdI/kspFQwK+WtFKlpKgFrbunnCoFA5pfyKTSuQpOi0Kg3F3tKZfMYMDvg+qEOC5X4Ar7r3TncxSK+E3o0PrpeIWiyvh4ZQlS4rpi3bqrIrENlXg85r7YCFyjeqMbtezgwHUp0zRDTSkzZJor5ccr5L9Z1pvXpdviia582rurNT/o9TYn48FhvbT1/J6epU8EAxsC0JJMKhgEHuSgL26nn4W+iKBmlEcFNGT1tzQTTAqtGcrhtnwuyyGOWojDCHNoARE4EFyDbqRonEmAbYzPxwKVckrjjQIGZk8x0oC3F6AXgtAbPRWtO5cW6BBO4gT24Tyu5rGJ8xQtLWIrms1G7ZNO2xcr49merF+rBPb7ea318/ZVP/g83vx5+4efx5vsk+RktgK9s2SxstiK5HJEDHDaNq3i73pg6ULrQ/j2B+wPfwhauDK+edRn9QT9hCAVmk0sAVJgFh7kD3WGeA7xGPMTiOfZyPJ4LKNngoFKSQy8eihz+Uwll4fhywgBfz8O+MvBQVwurR4w2i+2fUds6/1mL3y6vtm1emjwTQXxBwVRLL0gFtZ+Y63Y9wKjxbWnF+mT0NYmVEb9aMlSDUzRmhQRZV0jRKTW+KMuEDYjMAgC5YQFxAuKwCsLSIJBkvCCC0MtHJPCAlJkQakhGYlEFmsI7pIJJpWnEQjlUZBaQaio5/eogD03gzhO4UA+/fEtAIkUI6ivt9Jd7Ci05rLRiBkAlvAoImoiTW5vAa+iGUZBnUWsmSkQRf5gqWcQd+cocEiuLn2qZhD4pzvfnM5195SCfjq4tNgzcV4F3wKEEbFvwsDRi5gAyWy6uPP488ePH+7rfr9eMQzD/sbh8fHD43RxU/cS7pkEioOip7lnGSE+V9m4VFy/7fBxeCL8fgPrRkX/m3FWno0Vf/oo/Xf6Z8gAuiozueFSCI9kTHjTDX3hxxwOBgjleAuUG0E8qDkOU8wEC8EUugIxHgLmIYROg+6kowHTjER1wQ8CNpcG4eBP4qopmsHSMO7pxmK+euZy/VK+uX50rtKfv6J1aq9oWusrD/yvVidrd7zywCst9auNm/Zv00U4Ogm5unG9BYq1Oln7g2eyyw9paTgUWeLw0tvob4E+VdSBNltja7KJAMdz2AL2gdcloIw4HnP8vIB54B80DyON8ATCGE2LIDLQKEYt+Uw6Eg6Zhi5LwIeq5C3woEhAU5QSBBSMzt4GXlTMsBcFYcjeEfqgp7uIqz146eDTt09P3/70N55hh2fubS7p9x7XyhrWtOP36uzsXr3UzNK3wO1vrBQm34Wr9+g6lD2+XKReHN7LcvjuZhRAw+hz448qwBpFaC4+SBQYOR7tQVQQRbpXxrwEXe3oAI5zdAC3zYU5kRuL1lmz81WPCVRc+F3Prf4ldPANPAGckzCDGPX1lLvWtDank7HgsDmk+9zAiCiAA4x3Sj1F7JBFsB8DD4ESBrmLQW6BHKtr5EwaZFeduxgzFUBZO3ccCUe+XQllv6Z3G89ng5U7EoFSIGHP5KvV/HwkO5arVnOEy/f05DfmIvPsKhnsyT5vGM/nKvbuYDIZxB9aWt/Xgm9r7ctFU72tz7X09bU819qbiub6Wu0bWvqA9BktvdWRywE0ii61DrVgRcJWK1bwMMgW7iBSJCQpaIF4gIQkhOfdWHRhSRGlGg9CEcsUWEcWBHkCybKwzYsFWRhj3TI80Fctl4prnI4ZNTfomqaqZzrHxzonCB2Thg6CF2ZyPcPe+pzO8ZKAeEZhpXsYBjqrg56LerRHgD0+oXmjt2WjNJKz5bZksu3aaHZEj7hFnEqSxVgOE9EV9w/lIrfl/f48vjke+Lbf/7w/jv/WEUzDNom1kE+2xHORIcA8gmD3mvlsGH/JbWieoUguUlgaL4QRExXQXy/Sk8QGzRyzwgy3QC/UgLXINEgQF1mXXb+hidNBbEITmZLKMNHYj9kLdHfgDMNyDeHRU8EZfP7UkSOT9q2UCTqKb7ztqZl3z9l/HQ98PwCfOH7xismpI7lK9qmjs++eXYx41Ue1Iny9kUZb6jo1jrJW2vSJAJkQtoDNQbdOwAGRaRAJiIz6I34/NEp2pJQoA00yeAM4CjBOqSpjxtd5cgeuxfum4/ZD9kPx6Vg8jmuQicemIQN3pvvieLF+tB+CI7txdlF4lvURWCKn305/Q68Hi8SHYkj5dDTgdQEgyRWyeAgHzSDhc3oVe3GOCkQPcs09Osk1c7TZDk5+6uHBPXSptofuwT+Hk32H9xQfwxh7noejfdr+16NkrOjZuOlN9j8feBOOHl56Es7IF2vs1vMrRVfhjRCqoqQV6/D7FA4Nsk5rSELWgaOphE58dUFPvJgJuiATcz1MyAFyHsRnAAdwqZfz4Q6JHNrsyXk23xdx6YcMGg/deWcoTo1Duity6nR/K+1t7e/dfdllu2MxMTi2Yc/kdF8zydximrfE+JT/srujAZdluYKRuy8z0rx9/8N34YlMqZSxH7vr4a6ZvmJUB4BH3N5IoqM81uDPv+M2wHskAQfutuSQKjmwrwFBEiDpgUl5sNz2UMzea4KyV9wG5h/CINXiywX4g69xv/bpcnfEH1lWdmJD1psNYV+tS/tudqu53hEO7iKluxIziUTirrsgmWGHHUl2Fo8ndySWBgcK9Nq2gYG2U8cK+Hj94l2v9cAXZwcGZgeQ4owVgXdkNqwLaMZAJsqgIlqPNuJ7xx91w4tOMzvsIHL7VBUMQhSkQQS2HQHwvxd5kc/t9YGlpYLVqgZ3gmCCTgTlPueSiahIRDBFMMlM5Df920MBg2qaojGLkZm1215dMUCDP7ZmZotuf72aCRYX/tCqrR1navW51YU/UbXMMG3v7Nw4Nrqhc33n+nUj1vBAf2+1u9y+Jp9LNQEoBGFmgAiv/6lhs2CUA5l+XMmY5UoGbCfnyL6GX0jnQJUB/gukGDBk6g2EXzZQv5FqHDNglPBgl3z/7rt/AJ93vcvesJz7cjQbhc/Sf6ofyXv7t6+159duX3sZR05dSNee+gJ+9B74s+9i6T1EMqJR4yqWnMl0dbb197d1FhkZFk9dQd/5ytLfowY/1eVCArDToLUWEQqdA3a9CNhPpCDJgbt4DCKdFwTHBhGmAQHwwmgq2ZpLdqQ6ujOZTCol+wvNgIaX7SqQ6hmGk1nSUFdmqq7Klu0VerkRsR/FybAeCNkvgaEY+FbYHwiRG0OBsVPHk2vWJOlhSG8IYp+5xnwmouuRpe8FQ4BGAz9u3Euycs47HHXwn4HaUdFa42dvYLGWHwQNANwO2PkgU010glmE25hIHgObtKWZGYPMewBIjzkFyoD1+JzD+CCVHYavDmFgdwA/AH9+C5jtwMFnjk1tu+PZQwtPvn1q6fi8FB40AzTStbNlfctH265tD/gHQ5JZwm898MztU9PHnjl48JnbJ7cde/rnh8WwaVbD5Z35lr9pu7a4NuDHQdEs1/UWM3KhfRraXRdjBmhRaDygb2g8gsYjdEHDNgozoxBe0LFyCWBZhA6AHFMw8MJrPVarfVLXAxpouyy8T13h4TLOebHfxOfHJsHaifVOxmz0dvuzsalqLJFIkmJydjC59E28K4kH5xLLdHLSoZMW1I3WWtUWFWwI6GRe4KGTBSowA0KAlxBojdQFK3EEK0ORY+WhFqO5uwkM1uwqimDwTjMT2BGr0O0Z6HeGDUHfDGO0Sr7ij34r39fbQkbyvb35r63VLOC5z1JODYU0jn5W5TTd0qr29t4WarX09racOtmy2NvCci292LdW41S1X3uKhwPHP6VVNFXUSvjgdG/vdG8dw5wEnF2Gd9OQ8JhPwLmCATIfJ0A553EA93RgQfynYBB/IDw1KEXsffgTEXFwMoI/Zq417dmwWFgXwScO4Mcj6wsCABGMY2gdeYK8DLJbeEzAUB/ucUg+n+3AVXJVvKUtYX85TuLk+2E9v/TpvD9shzaGz+ZHETTcjKXI0JMRGFUCCi4Cwx9iKPQQKweDz3AWM9Koi65zVNtZtyh1NDsrgOlo7VNGPmToQPG62tMUVIUmPs8gGAFM6U8Qx1gF3v3zz2DuM5+xT5EPPTK16foPf+bD12+Cw56/uPqR0PpO3Fu/+ZmrP3bVnefXbz0Bh+lHQp0bVuGcENqHLmNU0tOcihOeol2bxyhHieVQJbwRZRYFB1RaV8b8BTM7tm9bN9LVWexoXyN4C1mh6sUMCQ9j5pDpBHMyyPwyYrUzn8sDQzJPHsuyb7qSAQY1BTEviJ2iF5udwLslxsAJbAaX/8tgiud7qmZPtRN4Gui1OUf0nmYuqBOwdLE7LH1V5t1+T0K6m3xWSnj8bl4+hD0BahBOJVw4RhNNGG97cpJUWolo4B4jhz1+YEWwqFWoIhwj+NwSQ4ftf7VPP1bc8zz2YAzHL1MqEfGkHHMbLl66g/wPiXcb7piUx01JTGOU9xEaNkjAgzOuImnqJGIcTz1Xg7sUQ0f6gBDCBgaRddZ9e6C28hPPs59cRUetYMf0W71ZjQDEAYsYO3JjgUEkMIXBzOc4x//BbWN+J26s0NbX0zZa2NCSy2S6RK2AHC+Zv26wlZnZ4fQs6WGAcPm/AuyM0x0U5PsQBbZNUCB3L83Qw3p46c+Z6P6tafrDnR3FZl9AU+UAn4jEE01NyaY4bgrrS6mmctwvEm8UmPznRqgjFqzn/9o028yln0Q1LYp3pTOZJreXSlIgEwkwz2IwqG83l8RAsiXlXf3YUtDJ13n7Xeh5+iZyJfCiafnPhbv+ElGB2R1xlMcdWHwgqufIjTkjbP8ivDmCQ7GW1jjuj5NYo65LoC6lUZcj5Nj1aSbjGnXlHKklApjPn1PXF2P51rj9d3EcO0fmqJbH7SKAxUFaayr2glkS9LMaQFiA+MmBiYAP40+YQXtfZHJQCuMP2hNhEED0Ins8eI4EWlfgoVkbQf78+Cz5k3N8VtUsk2h3MvmDq68jf+TTx+j/oJcD6iygEWuIk4A7eEr4BRHzzPCfh7aDegVkICAkTCBBYApVQGOaCiSTTsYdV3NBK5iqrBa4VT4UTDOVOgBq2IANl5njpScX/v0Tb5ucfNsTf//E0ampo9mnsuXsU5FsNlLPNDdfW783OXkUDm/DL7FrcLO7uV6quTtbt7UQsjhETrIxAsxcsFqQIw+ZQwtEDoF2czzPTSCO46cRz/GjZfZXAsSvrtI4wuvkwShdZKbpKSd9zTy5uCeb7cn+l1Upm0daOH07fdTxyyVQG+pB69DBOpLPOkS5B/EMjIq8UGPAFHEiN8PAyjTTogoT782OP+Y/KFazNGt4bV93ORAwjG4jU067AZqyF6gsOxFSTsIve4y1FM8GhZEHMLfxOvmFZBCLyeAhkMJiMHHqUzSYDC4dCybJj5b+Z3JNEj7fShaS8PlWgp0lyA+CiW7mc+lOBioHl25gWfKZ9wWSyYC9NZhIBPHjr51v2MuvAEj/KrPjAdE98SlTIhy/bOI1IR5UB78XoB3h9rDyPKLMXcmwBnZhZm6wfk2tlINxn3/tgkylpusFmZfwdUta+dcthBv+423MfzwGlsOnjYCRSKhAUSjNTOSEUBriqx08aXiBcwzwQ46c9+5jF81WW2SZutu7d1547N3HLtxZWeOm1L2msvPC6x9fXHx88TJrl2XtIl9tsc6bsPx+KbJ1w47B1tbB7aNbI5IY2Tq6Y2DppcVPLi5+8vbdlrXbcqAkOX0rPUVvQDrQWg7lmfzPAxoeFoBIeA7xNVYG3qIGyAA7oJjJMIpHMWrONCVj0WDApSAd66LjlgI96hdAsdZ5eTVZEMa6wMwmQYeeGB2dmhodfeLbTx6bnj725EOZ7ixw5wXrOjrWdU7TG6ZGNzz5bafMHZ95/sljU/bmWDYbs2+LptJRIhVHivBhbX8fyMV5kIsSoIgW0F6AIlqh7Q7UxCCKWKOXnUwc5whzbhpxmBt1yblMImqocsgV8uuiWmh2jC7obbp6igRMELoy5VOfAsJfS7QlEm3P4Af0aFS390C6WEyTXLpYTC99L11UgKiDwSRti/qXfu2PRv3E7Y+eOsk8FXSWpadOrPY/JdGA1cfMTCZ5FqDXRfjMA8EArVBck7EoSeIEHERpEkmitD4W7fJraU3TU6piFrJsIloQM0bKyHRgwMhlBzIHCqTCUDM+gY9vvlSem6U7ZufkSzcfx3h+4z/O/uPG+UWybd8mPGuf2LRv6RFB3LQwOrqwSWzIxdNvpYuOjdSE1rD2SZgHK4mRBJsgZ+KR5wgjDehQJh4ZSXCMJNa0ZVJNiaBfV5GBDYckEgS6VUyABPdiMI1SmgH4cQiDeM8zTN84YW3HD99844Xrpkb3H9pw9Wz16/a7T953e9PAhv616QeO/vDWTM+G7ose/Bxd9I9csm7TdYnorbWxWydlAdPT9iInjvSULZFbsgRpoFwYjDbe42Rj3sxEZbTBGmkFYyiNHXRJCWPOBZ55+igiNQE7LyMwQtnG3mYsHCIoVA6XAn5NVUTkIz7x7CkdRhMcE/bAojQNMLNqMASKh2jQjFMtTlP04VMPpTs703Rfqr28tPng5s0Ht9R8Lg91Pe1q8jyIW0UtlUi7T32XLnakT72U7urM0Hi645oth7dsObx0seJKe3DSQ+Ub8aykBwV/1Bie2G9/wc08UI7+2gPMyXBBBnWhn4w/6gMR1c+m/cCmEySJ7FUwlUWZ7mXccgg0i0B4YQ74RaaSvMuFmV9+HA4iYwuRY3NqKlQx8BpViAtvtA5r8MzjApEWft/nazUrqusIdba35vSMnkmnkjHTD++o6ZWSWytkE5jNBdQ9/jAYqUDKC8RTd5w43u1UoNpwHdTZmLThDZ0vd45u6IIED9qX49Hiy10bRjshsb/4vqCKB9RgULU/rwZ/PVzbY/33kT17Rv5luLZ7pJ673meaPtWZXyboGvRO+lX6IbC5FFSyihKbPQZbhSMHAfkAEx9ic9DcODAFmmJvvAF0rQylRbBDBWh9PiVmcBn4uUzVzfbjm5/GsyeADWfnv/DOEydo8NTPSeEnDCMtywcPioJk60J9aASdZ42zmg4ihVcOncEqAvSkIDuYRXIwi4thFgmB1eCqrWCX4aH+tdUew9C72V8JdD0+q5e033GGGrJbP+eIZ8oZghwnLGouvV7efnFjqXT2hxbYzeZSyb4+U+pqhq99PZxBpkTzXaNdXaN2qn5odg5MLuln+oT5OaPO7H4R+LqK+tEw83eicTSJtqM5tBtdgN8+/mgUSHkeMCmSMXWz+VxA417FNQe4WcM+zuub0zGHDD9nzCF/APNBP18L4WAYm5GgORfDkTiOCpHoXBo3ZVJEbBK3g9mE3ZPI7VZGElgQkpMomXQlGThog9+6cPVvuaGs4obh+aN/9Kxfsg79KX8EqkbJJiHJfk0Um8bh0CRO1n93PTDiyAV7z9+ze1dt59wss7qnpybPm9g6vmXzJubtdFydQ4MD/Wv7elmoR7lUt8kLbRqDyRqI9mazsNo3ky8HMvpqX/hqvw3cM+Fbga8I3yp8u0CP4frROV913fmy+jAqZYijV5dOZF6cnX141WlpVd7++szMzCz8zaw6stzyuZOjokOeD8/YXRtL8LHf7pxzaGZ25uHZE06h5TrgC3r8xtOv0G0wGhXgTld7c1SXkVCfY2B40QV0q4ycgZBtzqW6SYkcN5x6rmlYqz2eSpTZxIq2PFlXZQ6NoODDJos2Yc4OwCcFZ7ZPFHJ11wdoH+b/MPHDPmWj4v2p7OczPC//9KcyDxm//FMvXPb9VDb4Zl6QfvYzSYCMX8I/wy7F51PsV47yvDQEt992FEoPwlNvs19xeX0Kdr0N6hmE+o6+DR4Ykni+4Xv6f9mPShu49yZHkhQYxmnOOIYDWoG9LIQKcIGD2uGwHPahqa25VMIMqFEtaqqAHVHdLVYaIgBjMIsb63HcSYLRGCbaGElyoDHn/42nj01NHbO/F81h3BZ30rZ0yB9KhdOh9aEUvYmVaRR95valIM5F4224nhJmO+J+ZsmyccCA1U7Tm+E9mpgFm2Co0Trjmcf4gBPZxAiMOfcQHQ2FTJXTz240cTxo1frUQxyaTg7+wzMMmj9TP/Q29/g/bAKh5e7205vPXGaHpeMtVL/XnyT/NZrLRb9yK4tFcOJnyGno2W42T+DMCvAIL4AFQXgMBpEIMECEPiaC4BhEwjYJC0QYi8cKrbHuOBijGSPTJPsLr2X+s2lsZlbQdAcPlipQS9mxOwJ+oBj83CE2LX0ILOmLWeZiyHyS9/eWhtckb9pffujCY/8Qrgy9ORrAf5nryc6zvpzPVXIHnblsF/WZHYMX9B38YHhq78ePpt808q5xXUCNuLJlX2t9lm3UWgf6lh5ESOIkBLYeZmEk/AIiIjkE2leUxgFLIl7k+DkGKsVJ0PmcuH7VTBDAdwzoRQMIjx3Jxo5ahlj2Il48eRIjy7IWF09BlqCTtsUhGy0u2tCWU2h5Pv3/XhuCgm12GuxKHwozy9xqa0TX1qCdYJ4x60HA2HEKMb4S8GjAgD8nUs04N1KtATeCZXOVQUmPTJEbJ48cmVy6dfIK/O8pMB6LxdRgpru5ubuZPD115MjU0m0sJUZxBG523Mko1H4bsyLrY3rn6TvoVfRKGM0RdBGaZ704j1kwELSfAxu+xsKewPSBAWR+FxjQM95AhHbt3Dg2NNDaAk8braKvkIU+C4CJ4wWazeU76CDGCeylIvuwq0CcGccXzT58dYgyyUdZnGmaGcxmgjTczwlG5kDVUKRKbsLYiLrSmUTe5dVkgv8hIvlzrc2ionrcgsfL824Y2/8iQQ28EjfV1nxzkHNp2w++qb148d7JrYX3RjZs2hjd0ElwIO5T3WHdcLmK/khR4ZNJNR7WBcnFuQWjXeF8XkKNUFhJkDsGL9m9sScjyLIgyUZG8+oiSH1JDGrxtOZu6Vk3tas0delIPNIzY//2kd2qrhsdbxpI96xRNXfUMBJxjxnytjTrsVgqdBbv+Ni8IdqOW63k+nWD/R1r0k3JuK66PXIVi561vUQSqZXHHjxcd99sYjOwIITJAlhfCvEpC4CliSLPI6S64Dri5rxYRh5R9jA5DTxHxJrmJhLG0gQ7SsyUk/BYw82z7kx9PqwQVtPC713Tn65RgK+Sw0N1SLV5bGj78LY6hEq3MOkQrJR089Uxm4JYKVcylUwgEygHBNHsqQb8mXQ+UC4NYoABzj3Nz67nBZFnyhSOTAtVtMa98ur4Tnx9u7lly+yOHW2VQCEZC2VqO8z2Kw8cmM0G/2yn2lrBzZ1mWJnkXIqeCj/++OyOswJA79fl987cddfM4255h0t5MCHMzn1X1t888/LS7XnXdDwz7VcvjcTujhwM+GN4cvZnS/t2nyW3+hnHMaUAXIYW2FSxyAsiCy4UyQRoDRnzAuLnQEGI00gk4mh3udmfimuQBJjwBJAQx4AYV4eKBTKrooQGmVxNC41oQ6Y5ysClLOCQ/vzBYPJ7fRHVe4WvzXeFT4v0fT4ZfDAIn+Tn+yKaz7nsVSN932OX8QNOkW8sF/nGmSKveRm0xPI7aigF8q8V7LfNqIaO1yPzKg2VuBeBxgKLmK8pEqUAEoHD5TnV66bE4yETToZ4pjUf8RAPWNY9Z1Tp7/VgzYrP7ZjcunHD8EC1u7imtSWfyzYbFRD7mmY06abj1YiDLipXnNn4VCVDzyU86MgsfPll13AD2mT/g3N80j4ZybFw9kVQsCcXF7MRTBh2se1I9jToM8p0mpWL3sSEMyT24kqeopU8XsxGQRta0ewiHlmuANK/XVxcHGmUee2kMVfamDf3oRx6ri5eekDIM7C34Exv4XmERR6L8xKIal4U5lmALEeZngKAwvQU2QaAhYw1Jtc7/4OnBVZ4FvG8M+uq8AD2/8AfBEHhU1U1p8LIGJkimxNzgINZJ+Uim7GhjtpRnbB8M5PLNIKK6aA9gk9il/hhUXxYVI6UP37o/T/60ftntr5p8EOb9h2+557D+zfhk4tvUXjpY2JAPCHyLvsdc4d+hId+lCkfto4/f5yF/jaBLv+hI79ZJFUVbO1jdTqGF2Lh53uRDFQo7wXWJqDemdp0ph2ADSRZlGrn2gFRqxctx63Dk5LMgnDe2KM1y7PeYuZlBf5KIASq5/hny+cQrv4GZmqarp8hzTPXXz+z9P2Z6xfb4qQUb2uLL3093mYB1D7pRPQ7cf2vmbcmr7hikiyylKHIpUWW4n92ZnPuX5U2SBDsjiV6IwqhEtoKuPwa60oWH+TzetyyhJGb4BiYPQSARwLgY8+aQksekMjY6LqRXiAl3pqoO+cbWE/EjKjrKz0QW+nB8wdWRSw7UKW7HAlvWF/e2r21rTVcipQKfkktGAG+ArZWIFvp6c5XsgEWUFHhA4KfT4OhyWfBIgMQaDYKOe5a8XXvZJrx4/58AD+eStlbNdPvt7em6Mc9fo7aV9lXKvFMLgUFWvz4ca9RSLzedVLBL2C3GxJjxIBUceN/hOwdIqXPnBQ4Lh9PGd/BLhf+lpxUo/l/Fij3zEmRcrlEE1yHB78lsevAeBtO/4K+CGAzidrQh9HL+Hr8FuIf6cJZMJ/d0Ds/Q99FH4U7D6D3AT0nYVw8iFnqnwTaJkDlLnw5voT505APb8Tr0RzkNKTiKXweOom2wCgKcM4jC2wuJpDfAqkLyg/Xw+K2IupTfVRd8BtEUwVdAzGvw5HFkuNDCkYmDDbngt+pBbEvgFXNp9ZAnPPctASWgjKCdJ1sk7ETE9tY7zVxdp2qJiz8cZUyV8T4764UnmNKhgMl89rVn1WlNfVH10aIPrFcp87kXm2kAwbvWnwlPoIP4gV8Ed6HL8B78E48gyfwFjyC+3EvruB2vAbsljbcinPol+gX6J/Q8+jb6JvoKLoV3YIWQfWOASm0ohYQ/kEYNOYwDyEdDI0qC6Au5QXHe1wtraxiAlw+iKuDjukeyLBlTkD0dYDO7MzGGbM5GbjKOc/VIxyq3SuVwP/y0qjl290rJ6BoUyXA+6JQ/3fAP6sdrIXGjwXYDQbhzlwILhdtNITZDsFGJU5QnXPDsTeElQb7cBpa1uM4V1basvzD7H8lQiMnCqseDsL7iel8ml1g8Yig3uFQ4HP1MmzlEFsKFhSdRUSlQdINaZXlcHcBC4PY6YH6OSCwrg0uV+4yfFk6Knt4WQIbQ/Cpmtd9c87c95/IKYWDP0URGMgWw2GwqcHEWQ9ijuOoAO/q4jgsiQqQNQepwPMukWcrnjiXhwUdKgFCIO/S7Dnig6o5UEsSKwCVeryi6Pa6AVO6PXCJF1wf8AEYFySwpESsKEmMQyzHc26vDGhT9MlsKQyv2Gn8z6xFPA8vSYAUvE4xwf1x5qFyYZebaryLCB4qiqICDZY5qssuBRMwqSSXIvoUaJ4E/eWWgj5dclMq+UTFIyug4rHEb/QR0R0O+UTK4m6wtkVgq06x2qK4XIrsV3X3Jg+Gaje7ZaGNZNM+79IxjMPNn/R6KcdJkserxzWVErf36HU+gn3hwsX2L6kkKbIC3elyedxuF+8z/Dp0rOICewSDNOV1MLt4l+J26Rx1yW7FpVBeUTwel0eEcXHBswJ0VMjtFlx+v+p2KRcJgg5NFhVW2MWL0QhUyxsut+IWRY8bnlSIwcEtt8sNvaa43H7eFwx4eMi5FZkNq+lySXzApUgSuRbaB38S/JRLgZGE/oKX5WagcSpRVc7kNSp7Keg8SqjsFviIR/UCZmAj7VV0jxAQ2fBL3qjfdKnM1QEnvOITsRASIA+QiudVAFKi6ideUW71YE/MRSWFE3hK5ASvnO3XCYOA6EP70PnWrraIqYB919dJnJlCzLxpzlQyJ1Ou5sGy161InOCSAaa4EEAmseZEkbOIV6ZzeTS674LdO2e2T0+dt3XzWDrt765U1q4t+cwCf2ZiuepInLITYeEXg4F8Hb+sLGgJOB7zM1ONYqbuWIBvpdssM+RSwAlc6qlmWISA41+Eyjk0Wjn168qoooxWqJsdu4qRU7+OdnREqTtSbEue+nVTaz2/v8v91DXXPOXu8rhCd3uATLrcgPfYqctzt6S6PEJldLRCFsJmKLCZZTcHTTP8IKtqc6RYjGx+OBRaej/Lkf0nrv+bv7ne5YlgV9R10V13XQQHoAjXqrWpKthBc2jBumhilPBie5645LGUxsIRLSRwIsfsPpHnRMAwLpnKLrrAwlQ4AUGPS4R3g73u4uVVUQjbWBTC2NwsdPPk0ODA2ubmbDOYd5Umr/mqWVoWWZ05K6aYZhiaoQz2uDCkIC9pw9doloa4YWz4WWxpNcrWXIBdXerO0Jml2Y3z8xvJCZZesqFz6WDnhg2d5L7ODRds9qhCi8VlU8JFk0KWug2yY6NqGOokSC2gcZH2z6geX5geXsNlY+7JrqYmuji/caW+U485Vb2HpUsHAMxo2/BPmlK2Bx+LU7fL/pWW0EA0QGXiV+wZj59SzYdfsvcmCA7eN4yQfKafO9FOdD86gZ5AX0IvoB+j/0narblf4URTEVPUhoP0xPtKrZwp92ZIyHziYaKEhmMkrFhRGJUvPQmQvDYWoFFuo5/E1Be+TPSYF8f18zyEaC6QSj6rE6MuTPvSJEQB7iQBRdyQSpJEE2pKgF0TpDIN7gVz1KSyOY+UUDikhBeQHovH9PgCimskvgeloWy6qcYcgkEWTWCikGKGaigs8uEJt0TEiEegjBR2BXwg4QBOqDEO8EEUxfRorLGOcxZpmstZL5CCNtz4+7QhFtfm/7SNsG469/flhf+TDQALcexffvnyf//ZT3/80g9efP5bX/v7v/vcs09/6vGPffShD33gP9//3nuP3/Puu9/1znfccfvR22695a033/CWq688cvmlhy+ev+jC+hTfztnpyWxTRl3FOrl8d7UCwqZnGP+ugxhg3uIkfvUhgSsB0eG6IVxO4UqmUu5yQv67MgweOTHcYibf5YT/+5NnfP2ZQD1TX/0wiMvLzzG/cN23kGHT/YHf5xRXWWxGOZsDti87ocKkfmLSX546Xp2YqNJLFRyNegXxrC9PSE/UI4orX6986mvBNpxU6VZ78sABUJnKzv2C5g6IOzi8R/S7VW7/Lnb1kkucVA2p2Cn1Gd3jNgy2M8DrHO1gRMip//KYfVv5Qj2+6VtFV4v3Kxe32i+2HkpV1pOhjSW7Ut4Y9nrjhZhXDEhiIe4VgqJUiPnYoS1evwhnLkyq5bOvrhQNqLg9VGrCX/E122/Fwx7D85gkuzXjAdfHDM0lS4/DlWHs0b27BReQl7Dbq3vwMJsmzDvJX7h8PleOZXN3OqlzfudKAbJ+1OMTdt9l5Ivnva+qENcjud80c7khtuZveb6KRVwOox3WNEg1WYeERXxjwsIaHKEvugivYEnmpZUIh3Mi0LLNA2urPeWujjWtLc3D2eGAYeRNt1HIvlawenO6A3cP4RKLT/tdwaX0pY9s3Hjdg5968Dp22P3WIx+JTfXa4Ufunp29myWHrVwl6zgArGwlx1btZz9y+S2768Wdpz4S6526pl4YEtx2VuEIe3z1ng3MP1hGY9b61jRglXrUNYcwt7AcnA92ExJBQ0I38LzjFmIBHQI/6teLHblsLKyn/CkD0J2sF+pLh/xiGd6vie3LkOPP0YS4sYSog60FdSADto584Ij7zqfs//XUnW7SsdQ8MDs7QL4PqX03NDqeGT88niYWm0hJpqyjTz111Eqlxiv2ouMChtR+1zb2Ytu0tRl2KbO2Mf9TpEu0FazpELzhTkuORQ2dY5OT44/GQWL72TwQvOMMj+sDip3I1SiLHXJihuv3J+BAGKgiaLRmqZGwpoZTkZQa0kIm2JhnBw1nS1XsyB0jLWJnzSg58I3Vi63t71+2x5YG9j900WV78L/B8Zsr67Ch4MgA/rc9l1300H7yTwO25OQQi8XhTt9GX6Y3OGZjO6qiKWjQjLVtmq309QD8J26XswMM2zWgJgmEA/OBB0Og5sUKAuTsXhX6WZ9Dnpoc3zS63hpkkROGZhgArEwd8CGMS2NeFmw0neTpciSlM8MpiJQRrCML+ZU5sTSYIcwsa8yEOkulwXzNdNGDm5786hN/OTHxl0989clN+0dH9xeHP/jxv7px/fob/+rjHxyeGRiY+YtwJlNKp8P251gmkwm/a+hQStF0osrh89rbzwtLKtE1JXVokPx0k1MRq2/TfixgYf/S/uF6VVDj0MyPX5rBL4Jsh8+19cNt/WVfypMtFLKelK/cj87eq6QJbcKDdU9sbCSXBeujfU0rFfl6JIkgiX29RJY4qzF5E66Xqd+FkmDXOQWoFf3dz9dq9R/pA7NAAaORAU22CHseSTJgs3mgMBdGClsHoyAZK/Kr1sM0WlAG649XJIWXFt74o3/Ez7L9JTAaGx0cqPYUOwptLfmmZMTUVVlAPux11sifFapazp4Le9k0CC0HzHIAVF8gyZeTBC/vQ+As7qKL8UwmvoRYSlF9WqcxxfNtD4t2etWf6M3Evb/9rTee8do/odbKw/GMtTwxxGqwmzy5V1dA7N+wJ+F5qMX+yf+nhz8pPRjnDH/2nFjmMg76fTQTEDMBH4Yvn/GBuQ3m4zDOsyhzEy8ujyUb17P24Wl/TXKA4TxDDjjyR5PDWfTA4gY6rAILyBFYQI6AKBEcvcBkKbcSkLMSOHDudOmKkFwdiX5kmtw0dcWR6aVbpq7ASyxuoLOTxQ2wGHTy2eU7R6YL9Uhz8rjj6L9tOW4Ao12nv08/SHMoiTaMP9pcV2bLodGgx0ZQwyN61uXlTQ5qlpcgZ9hElCRJHtg47wSvMjzMdhXAbOmU4xyo1seRTt+vhYqpaMC+JJHA9wSiqWJIuz9VLJI9OKROp4qq/Yn4jrj9CbWYmtJMXEzhUKrjT99Oo9poFxAKW3VUB9bQ7nydvE7cr5nFdCSI70kk7EuCkXTRfAPNhHYunl504s1VFLQMRZZEJ5RWRkNsmVMc+wpZsZofZlsMmHmN4ZcKPvlR/r5fvfOdv7qP/2i2J/tfB/79S5u//vXNX/r3AfsHbLTqc36bTi/Qp8kPUAuy2LqGEka4FROeWEGAj8P1NTLOjiU84Zcj1pyVhtwFHe2ZdDwWDvlTADJwB83nRC/1YcE02FLPIh4iAC0TXD10He47DoQeFsTBApGEDkKbXeMTF6RO3O/Phg2OU+UfSl3lsNyvrcm0h3KYr67bMTGS795oP0YielO0Ke6+cuaR1JsvFZvHrf3nT5MoR2k4/G4P9hkGmCHJpa5oRC/HPuvxEEn0kEisycMVWvd84Wb7ZSxyAnXJ+Cr5aj3sJsoDMylvPNuYbxo+/Qv6LA2gPBpD29EOdKulISwriUiAYplYO7DMoi3YbEAbQy6YbX7DbFfmi+RkFlqq1KMVRxDPs2l40SWyNS6vXZiFdYkzZ55R2CKj7dsmt27eGKhkK2Y63V5lgcedFVBBbEcP5oRxnOlBs4/RfTVo9lSDjTUBeer4wxxWrvPHWfu9ZPIp5vlqzOJ10U/irUp3aukXqZIMRoVUWtNc3F7p3j5dqWzvzLaV5F1e3SUtfVBSDK/H6EqTfelOwzO+9ANPMOgBYyEY9JIU0MDHYumm+Ccwjca7dpjG8BDGQ0N+c3tXLHIaGZ7nRJdLfNZjGJ5nWWD/cx7jxUgiAp/VvkQX8qMYSC+2Rh46hDisJQucxDmiq55bll6JuMedTsWziWwkDJJLdfs9/oCqqAXU5MVqAjcNYTWHG+uBhFIjYy5fIH9u//zlY8dexkFIl+7N9/ZOVqu/Oq+397zeu1uq1cneXrp47OUzZey2Xufe6g9i/iPGg++AtkdRJ+pGvWgAeGYD2gQUs2BdxOw2jeKagTUdGEgjNRfm3c5WcnMeFtzE5mrnfFhWAfDKyhxi4e8s5pDF9CNudMvm6cnNO7bsODdu2Ilz6evNlvxmIbvaRZegjamGBAkUSZ1SVqs2noW/NL5sKnz5H9dJpB8DwVCro8kupNrbUzjmcnPYVK8x/FF3PB5fOxi3v8RC+/E/Wns6bc95zh9+u/1F3Hfmu001TfXrrgTohxT5fKqDeCOafp1qEkHzPh2PD3TuWbc0sG7PnnUkHx/65uTk5HmT+A7nQK4x1RbVNPyTjTi4JfpnINviwIGbrTHEi6zfFpjXU+DmJcxIBInLAae7zjUVMFo/AnZupTUfCfkbO07J3gJeFb9JqOC4hZnDI+DXWbgZFeuXWBgZqe+wcOZKGYzgAEEHVseiPr1FM810KhRK3R5p7vD4JI4Tc/6IkYqGA7725ta819MciHfs7K/uaKd/dlZ46vSp36iJmJlKmVF8oDPT5tZ8Pj0fDjcVM6FAIOpLtLW1tiW05s1draOtiO1FaJ0+SU5SC3mhT9agfrQFMM9BdC26z7rn2muuvurKgwcWLp5XdCfs3Ak2V9xOkPmaQltriyLQ4XgsGgl7PWBaKWgwiA0z4Ke6x9BrKvZoPi91ix53TcGiC+CggEUBQIOzmpdzAvhAu1A2Mf7mK9502eFDzAO2e9eO7VOTW8dHN4xYgwM9lVJXR7thBJ2PGjILKziij0utyuM/0XXCFoT2gN46jRoZjP6QK1bWiTSofzB6o2dMV24//Xn6UToAo7EedVrtpgJ9VGkhgLIsdGbZ19mUyfqqs32Y8xXYTm5VFoTlwzkm2NnCHCbY8ywSK8lAjciCsIaxszKf2afDuKfKHOs9eW55w7stlO71yjVFuzzTohK39AnJTdTW9OW6XJO9e1/npqbUZJ/9nrfu2vXW3Xgm3Bze4tLeq4protrVksslXa1F14jqe1X3lte/ldu9uHv3InL2UDtJGV2KIP0+8OnymiyVZOavcEK2XEzIATZZYP4JjmNrqhQM7CjX3EBhHkKoSFatiKuvIYtaPWc/x9acvZEHa1ZClvr7wFTraGMbpMVjETOga163NCAPGKqXqQeQKfDl61NBy1vD1CeDKsvHfG4Il5Jg7pXY2oFAY94oQJ6w32H/Bov4zVi0/5aps/1GxLiAZS6op9coWI/Kl16sRAysXLPfKUIt+zfLz/3mTHnIWPD1XwNF5UsvUfSIcoOPXVzZowJoSAcUtsZqXQmeBOVAEfeqRbHN/ky1mmabKnUw9xzolpUtQPh6UNkgA8xAOiW2KqKA6YD56NV77s1fdOvxw6RQu+Eq+3HghGh2X8RtPGh0w9cd2Yd733x835TnnoXL7l/cM7P4q2g2F7mRROEmfCL1OHpHdwdRO1pnDSPCsSWOC4hBHDwPlrKzmLe2alcAwdkOMGRilM+lkmZ7qF31KRIK4iDbEBAEc9VZ5dCIVgdZbYDIFp0VD3WPI3NSghh+6tg2So88e/kVn728b7KXrV9YeOrYdkKPPHPkyMnLe6fYpZsnjz6xcO2Xrrru69ezvUoOPnNsmp6Gaweu/TJcewvb6+QQXAMdIp2+nf4bvc6J1SqiYeZZhMa7BJk51UiNrwtC3hGECic5grDUmW7SVYLWVjuHS8Nt+aZiuhgx1aSerK97BNOSP3dHnnPO8X9wnz5q/xAUAcCZeKEQX5Vf+mv7h+wSbmKXVuWvW32NWKsfXTr5+vfO0Bx+F/RBs7OvM9DVWfAeSG9iZYFegK2I4A14RbZVsONLBGZCLKC0M8+W13iZ2HIiSOnpUyD8jj37D88em8b25wIJ10dCbHYnEcTKW1wJ13OuReLmDj7LFkc8e5Bz462G8p/NYNBUsBFTLleUxxVm4z58+hG6QHuQB/RfO6pYJWbeH6zvoci8v6yJzOW7a8Xlu425fMdY0Juh66oULOCMQ1aZuk/bPGeD2uwypzRmhmnP1C3P3jI9/c6/fud0ZzG99BMwy1IELDT7pUxYDmechOD9t922/7x31Grv+FYKTGL7FrameTu7+wBLnD2uy4BnvgZ8YgJSTKIM2BUz1jboc44n3Fwjeo/FSykSBRxYj+KbAxMBMOY4HGQ0jd0E8OYoY5tscyadakomHH0e0lWPwhNkYtPDCK7z7BnbM4S2gvaygP7o/fbT2Jb0cFjH/6aFcTQQj9tT9mN4YvmLJx57bDGs0xOsjP1w0Lf0FV+QlicWty5OvOc9jF7WwTs94WDfDGqz8mx1EOOVVbzOObzOoVRTPOZzoygXBnuYB+7mBtmsAgOqbLrKKywv3CeHvjMwcEGxO7Drvbu/u/v+mjuerLRvrFReuO++F+5bBGNJjeqBXe/ZufM9uwLegM8lsrUaiO3r+nxjDTZma2gGnb0poihsBZ2FYmyHYjzJKGU96zECRnmPM8fFtG41m3PQL5vdymehfw6mOorpDSmSotel2ospljv1AnnX0ptIazLY8YViKDGQmE2Orsrjd6N67DK1oT9KgMxm0YXocnQduhsvWspfYJeew2KA7TDEPGA7ZSxpAVHai0JRX4R6vCEPQDAvMnSvUQOR79J0Vy2GNRQQtQADZEKYIL+IdrGIHOyEVUCDken2mzXkRkF3cKaxQ9H4ozGov+bUr0mBhT/5D1jzK3VTYhJq/ml+Ixh0TyC3OzjNfoy57DZdcWT+otrcxDhGf377rW+96carrzxy3RXXXXro4IGLLp+//II9cxfWLtw+NT47MbthfW+12N7a0pxhW6OAvlc9blnkCCoBfXkLjNx/l7J3fHiOrg/6fdgpWu1w9ib0OjsTJpx9CVn8Vzd29ump70u8vM2mM/uVYiFijW18zHJ31cnw7Pl0PpdfYciA5lTnp+edf77XMLznG1GjnnHStm7ZiCqzc0rUULqLcKVmjLUXFzraxwy/H7IdC0XIGvbz9pKz2yqF1O7eaCaTJkv24Jm2anefGrL5YFNT8JRh/wqOdLe5o9p3Q28iYrclCm0JUnuPUt1hhh7r8EcN9iPeohH1s5Nu+F15bo61oRsu7Vv+2SL87KjfMPyjkMU/S7Ynz3zsZ9pMExtN7cnv9HYn25uu7ZkxQyGP3pagfYm2Y/YLnPPjDqYhp49x2+ntf+gacH55DThN0X0X2Nsv+Ff85Iv4yaXvLGJ07YsvgpLB5Bv2C/BT/xu2RJvQAAAAeJxjYGRgYABi5oWJ9+L5bb4yyLMwgMAVrvCPCPq/Pksw81Igl4OBCSQKACByCisAeJxjYGRgYF76X58hhiWYgeH/fyAJFEEB0QB7yAU8AAB4nGMsY1BiAALGUAYG5pcMOixANhK2AmJWKNuBhRFIM0LlGBnYwbQrEDPBxZD1HmBhYJRBUcvAMAmKQXLuQJoTKp4GxCA1TEA8B80NDCzBDGVI/FqoPSC1jGhqmYG4B0UMolYBKueCpp4RSR8LmlwUFDcAsQcQ20PFGyDqGR2AdDA4XCD2gMzigNq3GoiNgdgJHibBDEwAHcYPNgAAAAAoACgAKAFkAeoCVAKqA4AD+gRmBSAFuAX+BkoGjAbwB2IImAj6CVoJrAoaCkIKYAq+C4QMCAwuDFQMggygDQANTA3iDoIO4A8+D4wP8BBgERoRThHYEyITnhP+FGIUrBUWFWAVrhYAFrQXvBguGPYZlBo6GuweAh6yH2YhuiI+Iq4jFCO6JMIlyiYcJnAmxCbwJ3IoKCiGKTIpvCqGKwgrsiwGLGos7C08LZouBC5OLowwHDBSAAEAAABbAXsAEgAAAAAAAgBIAFYAbAAAAS8CLQAAAAB4nH2Qu07DQBBFr/NSkCgiWpqRRZEUa603DsqjT9LQ0keJnVgKtmQ7D/ENSHS0iE+g5eu43iwNRWztzJnd65m7BnCLD3ioHw9d3DluoIOB4yYe8Oq4Rc234zbm3tJxB13vi0qvdcOdnv2q5gb73ztuYgntuEXNp+M23vDjuIOe944Ua+TIkNhYAek6z5I8Iz0hxoaCA15YxJv0wDx3ujoX2FIiMAg4TTDl+t/vsmswhMKEy1AZ4pGNOGOeF9tYTKBlKn9ziWaoJsrokKor9p45u0BJSX0k7HpxMeOq+CZY0XrF0x01Fy99HKkJ6CTiPxf62TOOLRWMI9tBYWE9a1edbffI8onR57lvq8TGkmbiokzzTELeZSZVlawOVb5LeZ3+UQeTaCBqL2NRhYy0qIUYzXSWMBJ1En/hi0pEldfu+wsJj1l8AAAAeJxtzUdulFEQReH/NMEmg8k52mToqlevbZOMQ5uco+QVMGHGClg4IDhDrnR1ht8wGv7u188hh/9t688ZRsMWI7axnR3sZIZZdrGbPexlH/s5wEEOMcdhjnCUYxznBCc5xWnOcJZznOcCF7nEZa4wzwJXucZ1bnCTW9zmDncZEySNojNhkSWWucd9HvCQR6zwmFXWWGeDKZs84SnPeM4LXvKK17zhLe94zwc+8onPfOHrzI/v36aT8diGTdts2W4ndtEu2WW7atfsut2wU7v5r6Ef+qEf+qEf+qEf+qEf+qEf+qEf+qEf+qmf+qmf+qmf+qmf+qmf+qmf+qmf+qmf+k2/6Tf9pt/0m37Tb/pNv+k3/abf9Jt+02/6pV/6pV/6pV/6pV/6pV/6pV/6pV/6pV/6Xb/rd/2u3/W7fp/8BvSP07YAS7gAyFJYsQEBjlm5CAAIAGMgsAEjRCCwAyNwsA5FICBLuAAOUUuwBlNaWLA0G7AoWWBmIIpVWLACJWGwAUVjI2KwAiNEswoJBQQrswoLBQQrsw4PBQQrWbIEKAlFUkSzCg0GBCuxBgFEsSQBiFFYsECIWLEGA0SxJgGIUVi4BACIWLEGAURZWVlZuAH/hbAEjbEFAEQAAAA="
/***/ },
/* 6 */
/***/ function(module, exports) {
module.exports = "data:application/x-font-ttf;base64,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B3VuaUU2MEQHdW5pRTYwRQd1bmlFNjBGB3VuaUU2MTAHdW5pRTYxMQd1bmlFNjEyB3VuaUU2MTMHdW5pRTYxNAd1bmlFNjE1B3VuaUU2MTYHdW5pRTYxNwd1bmlFNjE4B3VuaUU2MTkHdW5pRTYxQQd1bmlFNjFCB3VuaUU2MUMHdW5pRTYxRAd1bmlFNjFFB3VuaUU2MUYHdW5pRTYyMAd1bmlFNjIxB3VuaUU2MjIHdW5pRTYyMwd1bmlFNjI0B3VuaUU2MjUHdW5pRTYyNgd1bmlFNjI3B3VuaUU2MjgHdW5pRTYyOQd1bmlFNjJBB3VuaUU2MkIHdW5pRTYyQwd1bmlFNjJEB3VuaUU2MkUHdW5pRTYyRgd1bmlFNjMwB3VuaUU2MzEHdW5pRTYzMgd1bmlFNjMzB3VuaUU2MzQHdW5pRTYzNQd1bmlFNjM2B3VuaUU2MzcHdW5pRTYzOAd1bmlFNjM5B3VuaUU2M0EHdW5pRTYzQgd1bmlFNjNDB3VuaUU2M0QHdW5pRTYzRQd1bmlFNjNGB3VuaUU2NDAHdW5pRTY0MQd1bmlFNjQyB3VuaUU2NDMHdW5pRTY0NAd1bmlFNjQ1B3VuaUU2NDYHdW5pRTY0Nwd1bmlFNjQ4B3VuaUU2NDkHdW5pRTY0QQd1bmlFNjRCB3VuaUU2NEMHdW5pRTY0RAd1bmlFNjRFB3VuaUU2NEYHdW5pRTY1MAd1bmlFNjUxB3VuaUU2NTIHdW5pRTY1Mwd1bmlFNjU0B3VuaUU2NTUHdW5pRTY1NgABAAH//wAPAAAAAAAAAAAAAAAAAAAAAAAyADIDGP/hA6X/LwMY/+EDpf8vsAAssCBgZi2wASwgZCCwwFCwBCZasARFW1ghIyEbilggsFBQWCGwQFkbILA4UFghsDhZWSCwCkVhZLAoUFghsApFILAwUFghsDBZGyCwwFBYIGYgiophILAKUFhgGyCwIFBYIbAKYBsgsDZQWCGwNmAbYFlZWRuwACtZWSOwAFBYZVlZLbACLCBFILAEJWFkILAFQ1BYsAUjQrAGI0IbISFZsAFgLbADLCMhIyEgZLEFYkIgsAYjQrIKAAIqISCwBkMgiiCKsAArsTAFJYpRWGBQG2FSWVgjWSEgsEBTWLAAKxshsEBZI7AAUFhlWS2wBCywCCNCsAcjQrAAI0KwAEOwB0NRWLAI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sEUssgEAOistsEYssgEBOistsEcssgAAOystsEgssgABOystsEkssgEAOystsEossgEBOystsEsssgAANystsEwssgABNystsE0ssgEANystsE4ssgEBNystsE8ssgAAOSstsFAssgABOSstsFEssgEAOSstsFIssgEBOSstsFMssgAAPCstsFQssgABPCstsFUssgEAPCstsFYssgEBPCstsFcssgAAOCstsFgssgABOCstsFkssgEAOCstsFossgEBOCstsFsssDArLrEkARQrLbBcLLAwK7A0Ky2wXSywMCuwNSstsF4ssAAWsDArsDYrLbBfLLAxKy6xJAEUKy2wYCywMSuwNCstsGEssDErsDUrLbBiLLAxK7A2Ky2wYyywMisusSQBFCstsGQssDIrsDQrLbBlLLAyK7A1Ky2wZiywMiuwNistsGcssDMrLrEkARQrLbBoLLAzK7A0Ky2waSywMyuwNSstsGossDMrsDYrLbBrLCuwCGWwAyRQeLABFTAtAABLuADIUlixAQGOWbkIAAgAYyCwASNEILADI3CwDkUgIEu4AA5RS7AGU1pYsDQbsChZYGYgilVYsAIlYbABRWMjYrACI0SzCgkFBCuzCgsFBCuzDg8FBCtZsgQoCUVSRLMKDQYEK7EGAUSxJAGIUViwQIhYsQYDRLEmAYhRWLgEAIhYsQYBRFlZWVm4Af+FsASNsQUARAAAAA=="
/***/ },
/* 7 */
/***/ function(module, exports) {
module.exports = "data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBzdGFuZGFsb25lPSJubyI/Pgo8IURPQ1RZUEUgc3ZnIFBVQkxJQyAiLS8vVzNDLy9EVEQgU1ZHIDEuMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9HcmFwaGljcy9TVkcvMS4xL0RURC9zdmcxMS5kdGQiID4KPHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciPgo8bWV0YWRhdGE+CkNyZWF0ZWQgYnkgRm9udEZvcmdlIDIwMTIwNzMxIGF0IEZyaSBTZXAgMjMgMTE6NTQ6MjUgMjAxNgogQnkgYWRtaW4KPC9tZXRhZGF0YT4KPGRlZnM+Cjxmb250IGlkPSJpY29uZm9udCIgaG9yaXotYWR2LXg9IjEwMjQiID4KICA8Zm9udC1mYWNlIAogICAgZm9udC1mYW1pbHk9Imljb25mb250IgogICAgZm9udC13ZWlnaHQ9IjUwMCIKICAgIGZvbnQtc3RyZXRjaD0ibm9ybWFsIgogICAgdW5pdHMtcGVyLWVtPSIxMDI0IgogICAgcGFub3NlLTE9IjIgMCA2IDMgMCAwIDAgMCAwIDAiCiAgICBhc2NlbnQ9Ijg5NiIKICAgIGRlc2NlbnQ9Ii0xMjgiCiAgICB4LWhlaWdodD0iNzkyIgogICAgYmJveD0iLTAuNDQ2MDQzIC0yMDkgMTEwNyA5MzMiCiAgICB1bmRlcmxpbmUtdGhpY2tuZXNzPSI1MCIKICAgIHVuZGVybGluZS1wb3NpdGlvbj0iLTEwMCIKICAgIHVuaWNvZGUtcmFuZ2U9IlUrMDA3OC1FNjU2IgogIC8+CjxtaXNzaW5nLWdseXBoIGhvcml6LWFkdi14PSIzNzQiIApkPSJNMzQgMHY2ODJoMjcydi02ODJoLTI3MnpNNjggMzRoMjA0djYxNGgtMjA0di02MTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5ub3RkZWYiIGhvcml6LWFkdi14PSIzNzQiIApkPSJNMzQgMHY2ODJoMjcydi02ODJoLTI3MnpNNjggMzRoMjA0djYxNGgtMjA0di02MTR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Ii5udWxsIiBob3Jpei1hZHYteD0iMCIgCiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9Im5vbm1hcmtpbmdyZXR1cm4iIGhvcml6LWFkdi14PSIzNDEiIAogLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ4IiB1bmljb2RlPSJ4IiBob3Jpei1hZHYteD0iMTAwMSIgCmQ9Ik0yODEgNTQzcS0yNyAtMSAtNTMgLTFoLTgzcS0xOCAwIC0zNi41IC02dC0zMi41IC0xOC41dC0yMyAtMzJ0LTkgLTQ1LjV2LTc2aDkxMnY0MXEwIDE2IC0wLjUgMzB0LTAuNSAxOHEwIDEzIC01IDI5dC0xNyAyOS41dC0zMS41IDIyLjV0LTQ5LjUgOWgtMTMzdi05N2gtNDM4djk3ek05NTUgMzEwdi01MnEwIC0yMyAwLjUgLTUydDAuNSAtNTh0LTEwLjUgLTQ3LjV0LTI2IC0zMHQtMzMgLTE2dC0zMS41IC00LjVxLTE0IC0xIC0yOS41IC0wLjUKdC0yOS41IDAuNWgtMzJsLTQ1IDEyOGgtNDM5bC00NCAtMTI4aC0yOWgtMzRxLTIwIDAgLTQ1IDFxLTI1IDAgLTQxIDkuNXQtMjUuNSAyM3QtMTMuNSAyOS41dC00IDMwdjE2N2g5MTF6TTE2MyAyNDdxLTEyIDAgLTIxIC04LjV0LTkgLTIxLjV0OSAtMjEuNXQyMSAtOC41cTEzIDAgMjIgOC41dDkgMjEuNXQtOSAyMS41dC0yMiA4LjV6TTMxNiAxMjNxLTggLTI2IC0xNCAtNDhxLTUgLTE5IC0xMC41IC0zN3QtNy41IC0yNXQtMyAtMTV0MSAtMTQuNQp0OS41IC0xMC41dDIxLjUgLTRoMzdoNjdoODFoODBoNjRoMzZxMjMgMCAzNCAxMnQyIDM4cS01IDEzIC05LjUgMzAuNXQtOS41IDM0LjVxLTUgMTkgLTExIDM5aC0zNjh6TTMzNiA0OTh2MjI4cTAgMTEgMi41IDIzdDEwIDIxLjV0MjAuNSAxNS41dDM0IDZoMTg4cTMxIDAgNTEuNSAtMTQuNXQyMC41IC01Mi41di0yMjdoLTMyN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwMCIgdW5pY29kZT0iJiN4ZTYwMDsiIApkPSJNMCA3NjhxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDc2OHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtNzY4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC03NjhxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djc2OHpNNTIzIDc0NXEtMTEzIDAgLTE3OSAtNjR0LTY2IC0xNzhoMTE2cTAgNjYgMjYgMTAwcTI4IDQyIDk2IDQycTUzIDAgODIgLTI5cTI5IC0zMCAyOSAtNzlxMCAtMzkgLTI4IC03M2wtMTIgLTE0CnEtMTAxIC05MCAtMTIwIC0xMzFxLTIxIC0zOSAtMjEgLTEwMHYtMTRoMTE4djE0cTAgMzYgMTYgNjdxMTQgMjkgNDEgNTFxNzEgNjMgODggODFxMzcgNTAgMzcgMTI2cTAgOTMgLTYxIDE0N3EtNjAgNTQgLTE2MiA1NHpNNTA1IDE1NXEtMzMgMCAtNTYgLTIycS0yMyAtMjEgLTIzIC01NXQyMyAtNTVxMjQgLTIzIDU2IC0yM3EzMyAwIDU2IDIycTI0IDIxIDI0IDU2cTAgMzMgLTIzIDU1dC01NyAyMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwMSIgdW5pY29kZT0iJiN4ZTYwMTsiIApkPSJNNzY4IDMyOHYtMzIwaC02NDB2NzA0aDMyMHEyNyAwIDQ1LjUgMTguNXQxOC41IDQ1dC0xOC41IDQ1LjV0LTQ1LjUgMTloLTMyMHEtNTMgMCAtOTAuNSAtMzcuNXQtMzcuNSAtOTAuNXYtNzA0cTAgLTUzIDM3LjUgLTkwLjV0OTAuNSAtMzcuNWg2NDBxNTMgMCA5MC41IDM3LjV0MzcuNSA5MC41djMyMHEwIDI2IC0xOC41IDQ1dC00NS41IDE5dC00NS41IC0xOXQtMTguNSAtNDV6TTc0OCA4NzNxMTcgMjEgNDMuNSAyM3Q0Ny41IC0xNQpsOTcgLTgycTIwIC0xNyAyMi41IC00My41dC0xNC41IC00Ni41bC00MSAtNDlsLTE5NiAxNjR6TTMxMSAxNTRsMjIyIDY0bC0xOTYgMTY1ek02NjYgNzc1bDE5NiAtMTY0bC0yODggLTM0NGwtMTk2IDE2NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwMiIgdW5pY29kZT0iJiN4ZTYwMjsiIApkPSJNMCA3NjhxMCA1MyAzNy41IDkwLjV0OTAuNSAzNy41aDc2OHE1MyAwIDkwLjUgLTM3LjV0MzcuNSAtOTAuNXYtNzY4cTAgLTUzIC0zNy41IC05MC41dC05MC41IC0zNy41aC03NjhxLTUzIDAgLTkwLjUgMzcuNXQtMzcuNSA5MC41djc2OHpNODI3IDM4MnEtNyA0MyAtNDkgNTBoLTIxNnYyMjJxLTcgNDMgLTQ5IDUwcS01NiAtNyAtNTYgLTU3di0yMTVoLTIwOXEtNTYgLTcgLTU2IC01MHEwIC01OCA1NiAtNThoMjA5di0yMDcKcTAgLTU4IDU2IC01OHE0OSAtNyA0OSA1MHYyMTVoMjA5cTQ5IDAgNTYgNTh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MDMiIHVuaWNvZGU9IiYjeGU2MDM7IiAKZD0iTTgyOSA4OTZoLTY0MHEtNTQgMCAtOTIuNSAtMzZ0LTM4LjUgLTg4di03NjdxMCAtNTQgMzkgLTkzLjV0OTIgLTM5LjVoMzg2cTI2IDAgNDUgMTguNXQxOSA0NS41dC0xOSA0NS41dC00NSAxOC41aC0zODZsLTEgMmwtMiAzdjc2N2wzIC00aDY0MGgtMWgtMnYtMTkwcTAgLTI3IDE4LjUgLTQ1LjV0NDUgLTE4LjV0NDUuNSAxOC41dDE5IDQ1LjV2MTk0cTAgNTMgLTM2IDg4LjV0LTg5IDM1LjV6TTc4MSAxNzVxNDggNjcgNDggMTQ5CnEwIDEwNiAtNzUgMTgxdC0xODEgNzV0LTE4MSAtNzV0LTc1IC0xODF0NzUgLTE4MXQxODEgLTc1cTU3IDAgMTA5IDI1bDE1OSAtMTU5cTE4IC0xOSA0NC41IC0xOC41dDQ1LjUgMTguNXExOSAxOSAxOSA0NS41dC0xOSA0NC41ek01NzMgMTk2cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXQzNy41IDkwLjV0OTAuNSAzNy41dDkwLjUgLTM3LjV0MzcuNSAtOTAuNXQtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwNCIgdW5pY29kZT0iJiN4ZTYwNDsiIApkPSJNMTAwMiA2MjlsLTI0NSAyNDVxLTE3IDE3IC00MSAxN3QtNDEgLTE3bC0yNDUgLTI0NXEtMTcgLTE3IC0xNyAtNDF0MTcgLTQxbDQxIC00MGwyNDUgMjQ1bDE2NCAtMTY0bC0yNDYgLTI0NWw0MSAtNDFxMTcgLTE3IDQxIC0xN3Q0MSAxN2wyNDUgMjQ1cTE3IDE3IDE3IDQxdC0xNyA0MXpNNTUzIDI2MWwtMjQ1IC0yNDVsLTE2NCAxNjRsMjQ1IDI0NWwtNDAgNDFxLTE3IDE3IC00MSAxN3QtNDEgLTE3bC0yNDUgLTI0NQpxLTE3IC0xNyAtMTcgLTQxdDE3IC00MWwyNDUgLTI0NXExNyAtMTcgNDEgLTE3dDQxIDE3bDI0NSAyNDVxMTcgMTcgMTcgNDF0LTE3IDQxek0zNDkgMjIxcTE3IC0xNyA0MC41IC0xN3Q0MC41IDE3bDI0NSAyNDVxMTcgMTcgMTcgNDAuNXQtMTcgNDAuNXQtNDAuNSAxN3QtNDAuNSAtMTdsLTI0NSAtMjQ1cS0xNyAtMTcgLTE3IC00MC41dDE3IC00MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjA1IiB1bmljb2RlPSImI3hlNjA1OyIgCmQ9Ik01MDkgLTEyMnEtMTA0IDAgLTE5OCA0MC41dC0xNjIgMTA4LjV0LTEwOC41IDE2Mi41dC00MC41IDE5OHQ0MC41IDE5Ny41dDEwOC41IDE2MnQxNjIgMTA4LjV0MTk3LjUgNDAuNXQxOTggLTQwLjV0MTYyLjUgLTEwOC41dDEwOC41IC0xNjJ0NDAuNSAtMTk3LjV0LTQwLjUgLTE5OHQtMTA4LjUgLTE2Mi41dC0xNjIuNSAtMTA4LjV0LTE5Ny41IC00MC41ek03NDUgNjI1cS0xOCAxOCAtNDMgMTh0LTQzIC0xOGwtMTUxIC0xNTFsLTE1MCAxNDkKcS0xNyAxOCAtNDIuNSAxOHQtNDIuNSAtMThoLTFxLTE3IC0xNyAtMTcgLTQyLjV0MTcgLTQyLjVsMTUwIC0xNTBsLTE1MSAtMTUxcS0xOCAtMTggLTE4IC00M3QxOCAtNDN0NDMgLTE4dDQzIDE4bDE1MSAxNTFsMTUxIC0xNTFxMTggLTE4IDQzIC0xOHQ0MyAxOHQxOCA0M3QtMTggNDNsLTE1MSAxNTFsMTUxIDE1MXExOCAxOCAxOCA0M3QtMTggNDN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MDYiIHVuaWNvZGU9IiYjeGU2MDY7IiAKZD0iTTcyMyA1NzNxNTMgMCA2NSAyN3QtMjUgNjRsLTIwNSAyMTJxLTE4IDE5IC00NCAxOXQtNDUgLTE5bC0yMTIgLTIxMnEtMzcgLTM4IC0yNiAtNjQuNXQ2NCAtMjYuNWgxMzh2LTQyMXEwIC0yMiAxNSAtMzcuNXQzNiAtMTUuNWg1MHEyMSAwIDM2IDE1LjV0MTUgMzcuNXY0MjFoMTM4ek0xNTggLTEyOHEtMzkgMCAtNjYuNSAyOC41dC0yNy41IDY4LjV2Mzg4cTAgNDEgMjcuNSA2OS41dDY2LjUgMjguNWgxMDBxMjYgMCA0NC41IC0xOQp0MTguNSAtNDZ2LTMzaC03MHEtMzggMCAtNjUuNSAtMjh0LTI3LjUgLTY5di0xOTRxMCAtNDAgMjcuNSAtNjguNXQ2NS41IC0yOC41aDUxNnEzOSAwIDY2IDI4LjV0MjcgNjguNXYxOTRxMCA0MSAtMjcgNjl0LTY2IDI4aC03MXYzM3EwIDI3IDE5IDQ2dDQ1IDE5aDEwMHEzOSAwIDY2LjUgLTI4LjV0MjcuNSAtNjkuNXYtMzg4cTAgLTQwIC0yNy41IC02OC41dC02Ni41IC0yOC41aC03MDJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MDciIHVuaWNvZGU9IiYjeGU2MDc7IiBob3Jpei1hZHYteD0iMTAyNSIgCmQ9Ik03MDYgMzgzcTI3IDAgMzMuNSAtMTQuNXQtMTAuNSAtMzUuNWwtMTc0IC0yMTFxLTE3IC0yMCAtNDEgLTIwdC00MSAyMGwtMTc4IDIxMnEtMTcgMjAgLTEwIDM0LjV0MzQgMTQuNWgxMzJ2NDQ5cTAgMjYgMTguNSA0NXQ0NS41IDE5aC0zcTI2IDAgNDUgLTE5dDE5IC00NXYtNDQ5aDEzMHpNNzMgLTEyN3EtNDIgMCAtNTcuNSAxNHQtMTUuNSA1NHY2OTNxMCA0MCAxNS41IDU0LjV0NTcuNSAxNC41aDExOXEyNyAwIDQ1LjUgLTE5dDE4LjUgLTQ1CnYtNjJoLTY1cS0xOCAwIC0zMSAtNi41dC0xOSAtMTUuNXQtOS41IC0xOHQtMy41IC0xNWwtMSAtNnYtNDU2cTAgLTIzIDE2LjUgLTQyLjV0NDcuNSAtMTkuNWg2NDBxMjggMCA0NyAxOC41dDE5IDQzLjV2NDU2cS0xIDAgMCA2dC0yLjUgMTUuNXQtOSAxOHQtMjAgMTV0LTM0LjUgNi41aC02MnY2MnEwIDI2IDE5IDQ1dDQ1IDE5aDEzMnEzOSAwIDQ5IC0xM3QxMCAtNTZ2LTY5M3EwIC00MyAtMTAgLTU1LjV0LTQ5IC0xMi41aC04OTJ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MDgiIHVuaWNvZGU9IiYjeGU2MDg7IiBob3Jpei1hZHYteD0iMTAyNSIgCmQ9Ik0yOTEgNDc3aDM0OXE4MCAwIDEzNiAtNTYuNXQ1NiAtMTM1LjVxMCAtODAgLTU2IC0xMzZ0LTEzNSAtNTZoLTM4MWgtM3EtMjcgMCAtNDUuNSAtMTl0LTE4LjUgLTQ1LjV0MTguNSAtNDV0NDUuNSAtMTguNWgzaDM4MXExMzIgMCAyMjUuNSA5My41dDkzLjUgMjI2LjVxMCA4NiAtNDIuNSAxNjB0LTExNi41IDExN3QtMTYxIDQzaC0zNDl2MTI4cTAgMjYgLTE0LjUgMzN0LTM1LjUgLTlsLTIyMCAtMTc2cS0yMSAtMTcgLTIxIC00MC41CnQyMSAtMzkuNWwyMjAgLTE3NnEyMSAtMTcgMzUuNSAtMTB0MTQuNSAzM3YxMjl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MDkiIHVuaWNvZGU9IiYjeGU2MDk7IiAKZD0iTTY1MCAzODRsMzQ1IDM0NXEyOSAyOSAyOSA2OS41dC0yOC41IDY5dC02OSAyOC41dC02OS41IC0yOWwtMzQ1IC0zNDVsLTM0NSAzNDVxLTI5IDI5IC02OS41IDI5dC02OC41IC0yOXEtMjkgLTI4IC0yOSAtNjguNXQyOSAtNjkuNWwzNDUgLTM0NWwtMzQ1IC0zNDVxLTI5IC0yOSAtMjkgLTY5LjV0MjkgLTY4LjVxMjggLTI5IDY4LjUgLTI5dDY5LjUgMjlsMzQ1IDM0NWwzNDUgLTM0NXEyOSAtMjkgNjkuNSAtMjl0NjkgMjguNXQyOC41IDY5CnQtMjkgNjkuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwQSIgdW5pY29kZT0iJiN4ZTYwYTsiIGhvcml6LWFkdi14PSIxMDI1IiAKZD0iTTgwNCAxMzNsLTQ5MCA1ODJxNzkgNDcgMTcwIDUzLjV0MTc2LjUgLTI5dDE0Ni41IC0xMDcuNXE5MiAtMTEwIDkwLjUgLTI1MS41dC05My41IC0yNDcuNXpNMjE3IDEzNnEtOTIgMTEwIC05MC41IDI1MS41dDkzLjUgMjQ3LjVsNDkwIC01ODJxLTc5IC00NyAtMTcwIC01My41dC0xNzYuNSAyOXQtMTQ2LjUgMTA3LjV6TTE4MiA3NzVxLTEwNiAtODkgLTE1MiAtMjE3LjV0LTIyLjUgLTI2M3QxMTMgLTI0MC41dDIxOCAtMTUydDI2MyAtMjIuNQp0MjQwLjUgMTEzdDE1MiAyMTh0MjIuNSAyNjN0LTExMyAyNDAuNXQtMjE4IDE1MnQtMjYzIDIyLjV0LTI0MC41IC0xMTMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYwQiIgdW5pY29kZT0iJiN4ZTYwYjsiIApkPSJNNjE3IDU0N2wtNzMgMTMwcS0xMyAyMyAtMzIgMjN0LTMyIC0yM2wtNzMgLTEzMGwtMTUyIC0yOHEtMjYgLTUgLTMxLjUgLTIxLjV0MTIuNSAtMzYuNWwxMDUgLTEwOWwtMTkgLTE0N3EtMyAtMjcgMTEuNSAtMzcuNXQzOC41IDAuNWwxNDAgNjRsMTQwIC02NHEyNCAtMTEgMzguNSAwdDExLjUgMzdsLTE5IDE0N2wxMDUgMTA5cTE4IDE5IDEyLjUgMzZ0LTMxLjUgMjJ6TTAgMTYydjE3MXYxNDV2MzMzcTAgMzUgMjkuNSA2MHQ3MC41IDI1aDgyNApxNDEgMCA3MC41IC0yNXQyOS41IC02MHYtMzMzdi0xNDV2LTE3MXEwIC00OSAtMjggLTkxLjV0LTczLjUgLTcxdC0xMDAgLTUydC0xMDkgLTM3dC0xMDAgLTIyLjV0LTczLjUgLTEybC0yOCAtNHEtNyAxIC0xOCAydC00NiA3dC02OSAxM3QtODAgMjB0LTg1LjUgMjh0LTgwIDM4dC02OSA0OC41dC00Ni41IDYwLjV0LTE4IDczeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjBDIiB1bmljb2RlPSImI3hlNjBjOyIgaG9yaXotYWR2LXg9IjEwOTMiIApkPSJNNTYyIDQwNmwtMTQ1IDE0NXEtMzAgMjkgLTcyLjUgMjl0LTcyLjUgLTI5cS0zMCAtMzEgLTMwIC03M3QzMCAtNzJsMTQ1IC0xNDVsLTE0NSAtMTQ1cS0zMCAtMzAgLTMwIC03Mi41dDMwIC03Mi41dDcyLjUgLTMwdDcyLjUgMzBsMTQ1IDE0NWwxNDUgLTE0NXEzMCAtMzAgNzIgLTMwdDczIDMwcTMwIDMwIDMwIDcyLjV0LTMwIDcyLjVsLTE0NSAxNDVsMTQ1IDE0NXEyOSAzMCAyOSA3MnQtMjkgNzNxLTMxIDMwIC03MyAzMHQtNzIgLTMwegpNMCA3OTNxMCA0MyAzMCA3M3Q3MyAzMGg4ODdxNDIgMCA3MiAtMzB0MzAgLTczdC0zMCAtNzN0LTcyIC0zMGgtODg3cS00MyAwIC03MyAzMHQtMzAgNzN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MEQiIHVuaWNvZGU9IiYjeGU2MGQ7IiBob3Jpei1hZHYteD0iMTAyNiIgCmQ9Ik0yMjAgNDMyaDE0N3YtMTQ5aC0xNDd2MTQ5ek00NDIgMjgzaDE0N3YxNDloLTE0N3YtMTQ5ek02NjQgMjgzaDE0NnYxNDloLTE0NnYtMTQ5ek0yMjAgNjVoMTQ3djE0OWgtMTQ3di0xNDl6TTQ0MiA2NWgxNDd2MTQ5aC0xNDd2LTE0OXpNNjY0IDY1aDE0NnYxNDloLTE0NnYtMTQ5ek04NjUgNzM0cTAgLTE5IC0xMy41IC0zMi41dC0zMiAtMTMuNXQtMzIgMTMuNXQtMTMuNSAzMi41djExNnEwIDE5IDEzLjUgMzIuNXQzMiAxMy41dDMyIC0xMy41CnQxMy41IC0zMi41di0xMTZ6TTI1NCA4NTBxMCAxOSAtMTMuNSAzMi41dC0zMiAxMy41dC0zMiAtMTMuNXQtMTMuNSAtMzIuNXYtMTE2cTAgLTE5IDEzLjUgLTMyLjV0MzIgLTEzLjV0MzIgMTMuNXQxMy41IDMyLjV2MTE2ek05MjAgNzgzdi00OHEwIC00MiAtMjkuNSAtNzEuNXQtNzEgLTI5LjV0LTcwLjUgMjkuNXQtMjkgNzEuNXY0OGgtNDEydi00N3EwIC00MiAtMjkgLTcydC03MC41IC0zMHQtNzAuNSAzMHQtMjkgNzJ2NDdoLTEwOXYtOTExCmgxMDI2djkxMWgtMTA2ek0xMDAgNTM4aDgyNnYtNTY1aC04MjZ2NTY1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjBFIiB1bmljb2RlPSImI3hlNjBlOyIgCmQ9Ik04NjkuNSAxMzVxLTkuNSAxMSAtMzUuNSAxMWgtMzM2djI3MWgyODdxMjUgMCAzNCAxMS41dDkgMzMuNXQtMTAuNSAzMy41dC0zNC41IDExLjVoLTI4NXYxODlxMCAyNiAtMTEuNSAzNXQtMzQuNSA5cS0yNCAwIC0zNC41IC05dC0xMC41IC0zNXYtNTUwaC0yMTBxLTI1IDAgLTM1IC0xMXQtMTAgLTM1cTAgLTIxIDEwLjUgLTMyLjV0MzQuNSAtMTEuNWg2MzdxMjQgMCAzNC41IDExLjV0MTAuNSAzMi41cTAgMjQgLTkuNSAzNXpNOTQ5IC0xMjgKaC04NzRxLTMxIDAgLTUzIDIydC0yMiA1M3Y4NzRxMCAzMSAyMiA1M3Q1MyAyMmg4NzRxMzEgMCA1MyAtMjJ0MjIgLTUzdi04NzRxMCAtMzEgLTIyIC01M3QtNTMgLTIyeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjBGIiB1bmljb2RlPSImI3hlNjBmOyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNMTAxOCAzODVxMCAtMTAzIC00MC41IC0xOTcuNXQtMTA4LjUgLTE2Mi41dC0xNjIgLTEwOHQtMTk3IC00MHEtMTA0IDAgLTE5OC41IDQwLjV0LTE2MyAxMDl0LTEwOC41IDE2M3QtNDAgMTk4LjV0NDEgMTk4LjV0MTEwIDE2Mi41dDE2NCAxMDcuNXQyMDAgMzkuNXExMDIgMCAxOTUgLTQxdDE2MC41IC0xMDkuNXQxMDcuNSAtMTYyLjV0NDAgLTE5OHpNNDAwIDI1NXEtMTAwIDEwNiAtMTA4IDExM3EtMjUgMjUgLTU1LjUgMjV0LTUzLjUgLTIzCnEtMjEgLTIzIC0xOS41IC01MC41dDI3LjUgLTUyLjVxNDkgLTUxIDEzNyAtMTM5cTQwIC0zOSA3My41IC0zOXQ3My41IDQwcTE3MyAxNzIgMjE1IDIxNHExMTkgMTE5IDE0MS41IDE0Mi41dDIyLjUgNTIuNXQtMjEgNTBxLTIwIDIwIC01MC41IDE5LjV0LTU0LjUgLTIyLjVxLTggLTcgLTMxIC0zMHEtNTAgLTUxIC0yOTcgLTMwMHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYxMCIgdW5pY29kZT0iJiN4ZTYxMDsiIApkPSJNMzQ5IDMwcTI4IC0zMCA2Ny41IC0zMHQ2Ny41IDMxbDUxMiA1NTlxMjggMzEgMjggNzR0LTI4IDczLjV0LTY3LjUgMzAuNXQtNjcuNSAtMzFsLTUxMiAtNTU5aDEzNWwtMzIxIDM0NnEtMjggMzEgLTY4IDMwLjV0LTY3LjUgLTMxdC0yNy41IC03NHQyOCAtNzMuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYxMSIgdW5pY29kZT0iJiN4ZTYxMTsiIApkPSJNNDI5IDEyOGgtMjEwcS0zOSAwIC02Ny41IC0yOHQtMjguNSAtNjh0MjggLTY4dDY4IC0yOGg1NzdxMzkgMCA2NyAyOHQyOCA2OHQtMjggNjh0LTY3IDI4aC0yMDV2MjcxbDU4IC01OHExNyAtMTcgNDkgLTE5dDQ5IDE0dDE3IDQ1LjV0LTE3IDQ2LjVsLTE5MSAxODdxLTMgNSAtNyA5cS0xNiAxNiAtNDAgMTZ0LTQxIC0xNnEtNCAtNCAtNyAtOWwtMTkxIC0xODdxLTE2IC0xNyAtMTQgLTQzLjV0MTkgLTQzLjVxMTggLTE2IDUwIC0xMi41CnQ0OSAyMC41bDU1IDUwdi0yNzF6TTAgNzk5LjVxMCA0MC41IDI4IDY4LjV0NjggMjhoODMycTQwIDAgNjggLTI4dDI4IC02OC41dC0yOCAtNjguNXQtNjggLTI4aC04MzJxLTQwIDAgLTY4IDI4dC0yOCA2OC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjEyIiB1bmljb2RlPSImI3hlNjEyOyIgCmQ9Ik0yMTQgNDMxcS0yMiAtMjMgLTIyIC01MnQyMiAtNTJsNDE2IC00MjZxMjUgLTI1IDY1IC0yOC41dDcwLjUgMTh0MzQuNSA1NC41dC0yMiA1OWwtNDE2IDQyNnYtMTAzbDQzNCA0MzZxMjYgMjYgMjIuNSA1OS41dC0zNCA1NXQtNzAgMTguNXQtNjUuNSAtMjl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MTMiIHVuaWNvZGU9IiYjeGU2MTM7IiAKZD0iTTYyOCA3MzJxMjkgMjUgNDkgMTZ0MjAgLTQ4di01ODVxMCAtMzkgLTIxIC00OXQtNTEgMTVsLTMxMSAyNTRxLTI5IDI0IC0zMCA1OS41dDI4IDYwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MTQiIHVuaWNvZGU9IiYjeGU2MTQ7IiAKZD0iTTEzOSA0NDJxMCAxMzAgOTIgMjIydDIyMiA5MnQyMjIgLTkydDkyIC0yMjJ0LTkyIC0yMjJ0LTIyMiAtOTJ0LTIyMiA5MnQtOTIgMjIyek0xMDAwIDExbC0xNzQgMTc1cTgwIDExNiA4MCAyNTZxMCA5MyAtMzYgMTc3dC05Ni41IDE0NC41dC0xNDQuNSA5Ni41dC0xNzYgMzZ0LTE3NiAtMzZ0LTE0NC41IC05Ni41dC05Ni41IC0xNDQuNXQtMzYgLTE3Ni41dDM2IC0xNzYuNXQ5Ni41IC0xNDQuNXQxNDQuNSAtOTYuNXQxNzYgLTM2CnExNDEgMCAyNTggODFsMTc0IC0xNzRxMjQgLTI0IDU3LjUgLTI0dDU3LjUgMjR0MjQgNTh0LTI0IDU3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjE1IiB1bmljb2RlPSImI3hlNjE1OyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNNTE0IDIwMXEtMyAtMyAtMiAwcS0xMiAtOCAtMjQuNSAtOXQtMjAuNSA2bC0yMDQgMTkycS05IDkgLTYuNSAyM3QxNC41IDI2bDIwIDE5cTEzIDExIDI4IDEzLjV0MjMgLTUuNWwxNDcgLTEzOGwyIDJsMTkxIDI0MHE4IDggMjMgNS41dDI4IC0xNC41bDIwIC0xOXExMiAtMTIgMTQuNSAtMjZ0LTYuNSAtMjJ6TTg2NiA1MzNsLTEgMXEtMTMgMzIgLTM0IDYzcTAgMSAtMyA0cS0xOSAyOCAtMjEgMzFxLTQgNSAtMTIgMTIuNXQtMTAgOS41CmwtNCAzcS0yNSAyNSAtNTMgNDRsLTMgMnEtMzAgMjEgLTYyIDM0cS0xIDAgLTEgMWgtMXEtODIgMzUgLTE3NSAyOS41dC0xNzIgLTUyLjVsMiAtMnEtNTMgLTMyIC05NCAtODBsLTIgMnEtNyAtNyAtMjYgLTM2bC0xIC0xcS01NCAtODAgLTYzLjUgLTE3N3QyOC41IC0xODZsMSAtMXExMyAtMzIgMzMgLTYzcTEgMCAyIC0xLjV0MiAtMi41cTIwIC0yOSAyMSAtMzFxNCAtNSAxMiAtMTIuNXQxMCAtOC41cTIgLTMgNCAtNHEyNSAtMjUgNTMgLTQ0CnEyIC0xIDMgLTJxMzAgLTIwIDYyIC0zNHExIC0xIDIgLTFxODIgLTM1IDE3NSAtMjkuNXQxNzIgNTIuNWwtMiAycTUzIDMyIDk0IDgwbDIgLTJxNyA3IDI2IDM2bDEgMXE1NCA4MCA2My41IDE3N3QtMjguNSAxODZ6TTg0MiAtOHEtMTA2IC04OSAtMjQwLjUgLTExMi41dC0yNjMgMjIuNXQtMjE4IDE1MnQtMTEzIDI0MC41dDIyLjUgMjYzdDE1MiAyMTh0MjQwLjUgMTEzdDI2MyAtMjIuNXQyMTggLTE1MnQxMTMgLTI0MC41dC0yMi41IC0yNjMKdC0xNTIgLTIxOC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjE2IiB1bmljb2RlPSImI3hlNjE2OyIgCmQ9Ik04NjUgNjg2LjVxLTkgMTEuNSAtMzQgMTEuNWgtNjI5cS0yNiAwIC0zNSAtMTEuNXQtOSAtMzIuNXQ5IC0zMi41dDM1IC0xMS41aDI1MHYtNTM4cTAgLTI3IDExLjUgLTM1LjV0MzQuNSAtOC41cTIwIDAgMzIuNSA4LjV0MTIuNSAzNS41djM0NnE0OCAtMzQgOTQgLTY5cTQ3IC0zNSA4MyAtNjdxMTUgLTEyIDI1LjUgLTE5dDE5IC04LjV0MTYuNSAyLjV0MTcgMTJxMjEgMjEgMTguNSAzOC41dC0zMi41IDQzLjVxLTI2IDIxIC01NSA0NApxLTMwIDIzIC02MiA0NnEtMzIgMjQgLTYzIDQ2cS0zMiAyMiAtNjEgNDB2ODNoMjg4cTI1IDAgMzQgMTEuNXQ5IDMyLjV0LTkgMzIuNXpNMTM5IC0xMjhxLTMyIDAgLTU3LjUgMTAuNXQtNDAgMjZ0LTI0LjUgMzUuNXQtMTMuNSAzNi41dC0zLjUgMzAuNXY3NDZxMCAxOSAxIDMxdDggMzV0MjAuNSAzN3Q0MS41IDI1dDY4IDExaDc0NnExOSAwIDMxIC0xdDM1IC04dDM3IC0yMC41dDI1IC00MS41dDExIC02OHYtNzQ2cTAgLTE5IC0xIC0zMQp0LTggLTM1dC0yMC41IC0zN3QtNDEuNSAtMjV0LTY4IC0xMWgtNzQ2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjE3IiB1bmljb2RlPSImI3hlNjE3OyIgCmQ9Ik0xNjQgMjgwcS0yNyAtMjggLTE4IC00OHQ0NyAtMjBoNjM3cTM4IDAgNDcuNSAyMC41dC0xNS41IDQ5LjVsLTI3NSAzMTVxLTI1IDI5IC02MS41IDMwdC02Mi41IC0yN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYxOCIgdW5pY29kZT0iJiN4ZTYxODsiIApkPSJNMTY0IDQ1NXEtMjcgMjggLTE4IDQ3LjV0NDcgMTkuNWg2MzdxMzggMCA0Ny41IC0yMC41dC0xNS41IC00OS41bC0yNzUgLTMxNXEtMjUgLTI5IC02MS41IC0yOS41dC02Mi41IDI3LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MTkiIHVuaWNvZGU9IiYjeGU2MTk7IiAKZD0iTTM2MiA4NjdsNDM0IC00MzdxMjMgLTIyIDIzIC01MXQtMjIgLTUybC00MTYgLTQyNnEtMjYgLTI1IC02NS41IC0yOC41dC03MCAxOHQtMzQuNSA1NC41dDIxIDU5bDQxNyA0MjZ2LTEwM2wtNDM1IDQzNnEtMjUgMjYgLTIxLjUgNTl0MzQgNTQuNXQ3MCAxOXQ2NS41IC0yOC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjFBIiB1bmljb2RlPSImI3hlNjFhOyIgCmQ9Ik0zOTYgNzMycS0yOSAyNSAtNDkgMTZ0LTIwIC00OHYtNTg1cTAgLTM5IDIxIC00OXQ1MSAxNWwzMTEgMjU0cTI5IDI0IDMwIDU5LjV0LTI4IDYwLjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MUIiIHVuaWNvZGU9IiYjeGU2MWI7IiAKZD0iTTUwOC41IC0xMTlxLTEwMS41IDAgLTE5NCAzOS41dC0xNTkuNSAxMDYuNXQtMTA2LjUgMTU5LjV0LTM5LjUgMTk0dDM5LjUgMTk0dDEwNi41IDE1OXQxNTkuNSAxMDZ0MTk0IDM5LjV0MTk0IC0zOS41dDE1OSAtMTA2dDEwNi41IC0xNTl0NDAgLTE5NHQtNDAgLTE5NHQtMTA2LjUgLTE1OS41dC0xNTkgLTEwNi41dC0xOTQgLTM5LjV6TTc1OCA0NDNoLTE4N3YxODdxMCAyNiAtMTguNSA0NHQtNDQgMTh0LTQ0IC0xOHQtMTguNSAtNDR2LTE4NwpoLTE4N3EtMjYgMCAtNDQuNSAtMTguNXQtMTguNSAtNDQuNXQxOC41IC00NHQ0NC41IC0xOGgxODd2LTE4N3EwIC0yNiAxOC41IC00NC41dDQ0IC0xOC41dDQ0IDE4LjV0MTguNSA0NC41djE4N2gxODdxMjYgMCA0NCAxOHQxOCA0NHQtMTggNDQuNXQtNDQgMTguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYxQyIgdW5pY29kZT0iJiN4ZTYxYzsiIApkPSJNMCA2NDBxMCAyNyAxOC41IDQ1LjV0NDUuNSAxOC41aDg5NnEyNyAwIDQ1LjUgLTE4LjV0MTguNSAtNDUuNXQtMTguNSAtNDUuNXQtNDUuNSAtMTguNWgtODk2cS0yNyAwIC00NS41IDE4LjV0LTE4LjUgNDUuNXpNMCAzODRxMCAyNyAxOC41IDQ1LjV0NDUuNSAxOC41aDg5NnEyNyAwIDQ1LjUgLTE4LjV0MTguNSAtNDUuNXQtMTguNSAtNDUuNXQtNDUuNSAtMTguNWgtODk2cS0yNyAwIC00NS41IDE4LjV0LTE4LjUgNDUuNXpNMCAxMjgKcTAgMjcgMTguNSA0NS41dDQ1LjUgMTguNWg4OTZxMjcgMCA0NS41IC0xOC41dDE4LjUgLTQ1LjV0LTE4LjUgLTQ1LjV0LTQ1LjUgLTE4LjVoLTg5NnEtMjcgMCAtNDUuNSAxOC41dC0xOC41IDQ1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MUQiIHVuaWNvZGU9IiYjeGU2MWQ7IiAKZD0iTTEwMiA3MzRxMCAyMiAxNS41IDM3dDM3LjUgMTVoMjYzdjUycTAgMjIgMTUuNSAzNy41dDM3LjUgMTUuNWgxMDVxMjIgMCAzNy41IC0xNS41dDE1LjUgLTM3LjV2LTUyaDI2M3EyMiAwIDM3IC0xNS41dDE1IC0zNi41di01M2gtODQydjUzek04OTIgNTc3di02NDRxMCAtMjIgLTE1LjUgLTM3LjV0LTM3LjUgLTE1LjVoLTYzMXEtMjIgMCAtMzcuNSAxNS41dC0xNS41IDM3LjV2Njk2aDczN3YtNTJ6TTM2NiA0NzNxMCAyMSAtMTUuNSAzNi41CnQtMzcuNSAxNS41dC0zNy41IC0xNS41dC0xNS41IC0zNi41di00MzZxMCAtMjIgMTUuNSAtMzd0MzcuNSAtMTV0MzcuNSAxNXQxNS41IDM3djQzNnpNNTc2IDQ3M3EwIDIxIC0xNS41IDM2LjV0LTM3IDE1LjV0LTM3IC0xNS41dC0xNS41IC0zNi41di00MzZxMCAtMjIgMTUuNSAtMzd0MzcgLTE1dDM3IDE1dDE1LjUgMzd2NDM2ek03ODYgNDczcTAgMjEgLTE1IDM2LjV0LTM3IDE1LjV0LTM3LjUgLTE1LjV0LTE1LjUgLTM2LjV2LTQzNgpxMCAtMjIgMTUuNSAtMzd0MzcuNSAtMTV0MzcgMTV0MTUgMzd2NDM2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjFFIiB1bmljb2RlPSImI3hlNjFlOyIgCmQ9Ik01MTYgNzE2cS03NCAwIC0xNDIuNSAtMjB0LTExOCAtNTJ0LTkyLjUgLTcxdC03MC41IC03Ny41dC00Ny41IC03MC41dC0yOSAtNTJsLTkgLTIwcTMgLTggOSAtMjF0MjguNSAtNTF0NDguNSAtNzJ0NzAgLTc2dDkzIC03Mi41dDExNy41IC01MXQxNDIuNSAtMjAuNXQxNDIuNSAyMC41dDExNy41IDUxdDkzIDcydDcwLjUgNzZ0NDguNSA3Mi41dDI4IDUxdDkgMjFxLTMgNyAtOSAyMHQtMjggNTF0LTQ4LjUgNzIuNXQtNzAuNSA3Ni41CnQtOTMgNzJ0LTExNy41IDUwLjV0LTE0Mi41IDIwLjV6TTUxNiAxMzRxLTkwIDAgLTE1NCA2NHQtNjQgMTU0LjV0NjQgMTU0LjV0MTU0IDY0dDE1NCAtNjR0NjQgLTE1NC41dC02NCAtMTU0LjV0LTE1NCAtNjR6TTYyNSAzNTIuNXEwIC00NS41IC0zMiAtNzcuNXQtNzcgLTMydC03NyAzMnQtMzIgNzcuNXQzMiA3Ny41dDc3IDMydDc3IC0zMnQzMiAtNzcuNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYxRiIgdW5pY29kZT0iJiN4ZTYxZjsiIApkPSJNNTEyIDg5MnExMDUgMCAxOTcuNSAtNDB0MTYxLjUgLTEwOXE2OSAtNjggMTA5IC0xNjF0NDAgLTE5OC41dC00MCAtMTk4dC0xMDkgLTE2MS41dC0xNjEuNSAtMTA5dC0xOTggLTQwdC0xOTguNSA0MHQtMTYxLjUgMTA5dC0xMDkgMTYxdC00MC41IDE5OHQ0MC41IDE5OXQxMDkgMTYxLjV0MTYxLjUgMTA4LjV0MTk5IDQwek01NzMgNDUzcTAgMjggLTE3LjUgNDYuNXQtNDMuNSAxOC41dC00NC41IC0xOC41dC0xOC41IC00Ni41di0zODAKcTAgLTI3IDE4LjUgLTQzLjV0NDQuNSAtMTYuNXQ0NCAxN3QxOCA0NHpNNTEyIDU5NHEzMyAwIDU2IDIzLjV0MjMgNTZ0LTIzIDU2dC01NiAyMy41dC01NyAtMjMuNXQtMjQgLTU2dDI0IC01NnQ1NyAtMjMuNXpNNTEyIDU5NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyMCIgdW5pY29kZT0iJiN4ZTYyMDsiIApkPSJNNDYxIDMycTAgMjIgMTUgMzcuNXQzNiAxNS41dDM2IC0xNS41dDE1IC0zNy41dC0xNSAtMzcuNXQtMzYgLTE1LjV0LTM2IDE1LjV0LTE1IDM3LjV6TTMwMiA3ODloNDIwcTE4IDAgMzEuNSAtMTMuNXQxMy41IC0zMy41di01MjRxMCAtMjAgLTEzLjUgLTMzLjV0LTMxLjUgLTEzLjVoLTQyMHEtMTggMCAtMzEuNSAxMy41dC0xMy41IDMzLjV2NTI0cTAgMjAgMTMuNSAzMy41dDMxLjUgMTMuNXpNMTU2IC00M3EwIC0zNSAyMy41IC02MAp0NTcuNSAtMjVoNTUwcTM0IDAgNTcuNSAyNXQyMy41IDYwdjg1NHEwIDM1IC0yMy41IDYwdC01Ny41IDI1aC01NTBxLTM0IDAgLTU3LjUgLTI1dC0yMy41IC02MHYtODU0ek0xNTYgLTQzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjIxIiB1bmljb2RlPSImI3hlNjIxOyIgCmQ9Ik00MjYgMTI4aDF2NTk0aC0xNTBxLTczIDAgLTEyNyAtNDh0LTYzIC0xMjBoLTg3bDg2IDM0Mmg4NTJsODYgLTM0MmgtODdxLTkgNzIgLTYzIDEyMHQtMTI3IDQ4aC0xNTB2LTU5NGgxcS0xIC02IC0xIC0xM3EwIC03MiA1MCAtMTIzdDEyMSAtNTF2LTY5aC0yMTNoLTg2aC0yMTN2NjlxNzEgMCAxMjEgNTF0NTAgMTIzcTAgNyAtMSAxM3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyMiIgdW5pY29kZT0iJiN4ZTYyMjsiIApkPSJNNDI3IDg5NnExMjcgMCAxODkuNSAtMTB0MTExLjUgLTQyLjV0ODIgLTg2dDMzIC0xMTkuNXEwIC03MiAtNDAgLTEzMnQtMTA5IC05MHE5NyAtMjcgMTQ5LjUgLTkyLjV0NTIuNSAtMTU0LjVxMCAtNzAgLTM0IC0xMzUuNXQtOTIuNSAtMTA1dC0xNDQuNSAtNDguNXEtNTUgLTYgLTI2MSAtN2gtMzY0djEwMjNoNDI3ek0xOTIgNTEyaDE1MnExMzYgMCAxNjggNHE2MCA3IDk0IDM5LjV0MzQgODYuNXEwIDUxIC0yOS41IDgzdC04Ny41IDM5CnEtMzQgNCAtMTk4IDRoLTEzM3YtMjU2ek0xOTIgNjRoMjI0cTEzMSAwIDE2NiA2cTU0IDggODggMzh0MzQgODFxMCA0MyAtMjYgNzMuNXQtNzUuNSA0NHQtMjE1LjUgMTMuNWgtMTk1di0yNTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MjMiIHVuaWNvZGU9IiYjeGU2MjM7IiAKZD0iTTkzOSA4OTZoLTg1N3EtMzQgMCAtNTggLTIzdC0yNCAtNTd2LTc5N3EwIC0zNCAyNCAtNTguNXQ1OCAtMjQuNWg4NjRxMzMgMCA1NS41IDI0dDIyLjUgNTl2Nzk3cTAgMzQgLTI1LjUgNTd0LTU5LjUgMjN6TTMzMCA3NzhxNTIgMCA4OC41IC0zN3QzNi41IC05MHQtMzYuNSAtOTB0LTg4LjUgLTM3dC04OSAzN3QtMzcgOTB0MzcgOTB0ODkgMzd6TTExNSAzN3EtMTUgMCAtMjYgMTBxLTEzIDExIC0xNC41IDI4dDkuNSAzMGwxODggMjg3CnExMSAxMyAyNyAxNC41dDI5IC03LjVsMTY2IC0xMjVsMjk3IDM0MnE3IDggMTUuNSAxN3QyNSAyMHQzMS41IDE0dDMyIC03dDI5IC0zN3YtMTl2LTYzdi03N3YtOTd2LTMxNHYtMTJ2LTJ2LTF2LTFoLTgwN2gtMnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyNCIgdW5pY29kZT0iJiN4ZTYyNDsiIApkPSJNNTU0IDI0NHExIC02MyAzNSAtMTA3LjV0ODIgLTQ0LjVoMjM2cTQ4IDAgODIuNSA0NnQzNC41IDExMHYyMzVxMCA2NSAtMzQgMTExdC04MyA0NmgtMjM2cS00OCAwIC04Mi41IC00NnQtMzQuNSAtMTExaDMxN3YtMjM5aC0zMTd6TTQ3MCAyNDRxLTEgLTYzIC0zNS41IC0xMDcuNXQtODEuNSAtNDQuNWgtMjM2cS00OSAwIC04MyA0NS41dC0zNCAxMTAuNXYyMzVxMCA2NSAzNC41IDExMXQ4Mi41IDQ2aDIzNnE0OSAwIDgzIC00NnQzNCAtMTExCmgtMzEzdi0yMzloMzEzek0zMTMgMzY1cTAgMTUgMTEgMjYuNXQyNyAxMS41aDMxNnExNiAwIDI3IC0xMS41dDExIC0yNi41cTAgLTE2IC0xMSAtMjd0LTI3IC0xMWgtMzE2cS0xNiAwIC0yNyAxMXQtMTEgMjd6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MjUiIHVuaWNvZGU9IiYjeGU2MjU7IiBob3Jpei1hZHYteD0iMTEwNyIgCmQ9Ik03ODQgMTQzbC03MyAxNzBoLTMzMmwtNzMgLTE3MGgtMTg4bDM0MiA3OTBoMTcwbDM0MiAtNzkwaC0xODh6TTU0NiA2OThsLTEwMCAtMjMwaDE5OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyNiIgdW5pY29kZT0iJiN4ZTYyNjsiIApkPSJNMzQxIDgxMXEwIDM1IDI1LjUgNjB0NjAuNSAyNWg1MTJxMzUgMCA2MCAtMjV0MjUgLTYwcTAgLTM2IC0yNSAtNjF0LTYwIC0yNWgtNTEycS0zNiAwIC02MSAyNXQtMjUgNjF6TTM0MSAzODRxMCAzNSAyNS41IDYwdDYwLjUgMjVoNTEycTM1IDAgNjAgLTI0LjV0MjUgLTYwLjVxMCAtMzUgLTI1IC02MHQtNjAgLTI1aC01MTJxLTM2IDAgLTYxIDI0LjV0LTI1IDYwLjV6TTM0MSAtNDNxMCAzNiAyNS41IDYxdDYwLjUgMjVoNTEyCnEzNSAwIDYwIC0yNXQyNSAtNjFxMCAtMzUgLTI1IC02MHQtNjAgLTI1aC01MTJxLTM2IDAgLTYxIDI1dC0yNSA2MHpNODUuNSA3MjlxMzUuNSAwIDYwLjUgMjQuNXQyNSA1OXQtMjUgNTl0LTYwLjUgMjQuNXQtNjAuNSAtMjQuNXQtMjUgLTU5dDI1IC01OXQ2MC41IC0yNC41ek04NS41IDI5OXEzNS41IDAgNjAuNSAyNC41dDI1IDU5dC0yNSA1OXQtNjAuNSAyNC41dC02MC41IC0yNC41dC0yNSAtNTl0MjUgLTU5dDYwLjUgLTI0LjV6Ck04NS41IC0xMjhxMzUuNSAwIDYwLjUgMjQuNXQyNSA1OXQtMjUgNTl0LTYwLjUgMjQuNXQtNjAuNSAtMjQuNXQtMjUgLTU5dDI1IC01OXQ2MC41IC0yNC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjI3IiB1bmljb2RlPSImI3hlNjI3OyIgCmQ9Ik0yNTYgODEwLjVxMCAzNS41IDI1IDYwLjV0NjAgMjVoNTk4cTM1IDAgNjAgLTI1dDI1IC02MC41dC0yNSAtNjAuNXQtNjAgLTI1aC01OThxLTM1IDAgLTYwIDI1dC0yNSA2MC41ek04NSA4OTZoODZ2LTg1aC04NnY4NXpNMjU2IDM4My41cTAgMzUuNSAyNSA2MC41dDYwIDI1aDU5OHEzNSAwIDYwIC0yNC41dDI1IC02MHQtMjUgLTYwLjV0LTYwIC0yNWgtNTk4cS0zNSAwIC02MCAyNC41dC0yNSA2MHpNMjU2IC00Mi41cTAgMzUuNSAyNSA2MC41CnQ2MCAyNWg1OThxMzUgMCA2MCAtMjV0MjUgLTYwLjV0LTI1IC02MC41dC02MCAtMjVoLTU5OHEtMzUgMCAtNjAgMjV0LTI1IDYwLjV6TTAgODk2aDg1di04NWgtODV2ODV6TTg1IDcyNWg4NnYtODVoLTg2djg1ek04NSA4MTFoODZ2LTg2aC04NnY4NnpNMCA1NTVoODV2LTg2aC04NXY4NnpNODUgNTU1aDg2di04NmgtODZ2ODZ6TTg1IDQ2OWg4NnYtODVoLTg2djg1ek0wIDM4NGg4NXYtODVoLTg1djg1ek0wIDI5OWg4NXYtODZoLTg1djg2egpNODUgMjk5aDg2di04NmgtODZ2ODZ6TTAgMTI4aDg1di04NWgtODV2ODV6TTg1IDEyOGg4NnYtODVoLTg2djg1ek04NSA0M2g4NnYtODZoLTg2djg2ek04NSAtNDNoODZ2LTg1aC04NnY4NXpNMCAtNDNoODV2LTg1aC04NXY4NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyOCIgdW5pY29kZT0iJiN4ZTYyODsiIApkPSJNNDI3IDQ4OHYyNjdxMCAxMCA3LjUgMTcuNXQxNy41IDcuNWg3MXExMCAwIDE3IC03LjV0NyAtMTcuNXYtMjY3bDIzMSAxMzNxOSA1IDE5IDIuNXQxNSAtMTAuNWwzNSAtNjJxNSAtOSAyLjUgLTE4LjV0LTExLjUgLTE0LjVsLTIzMSAtMTM0bDIzMSAtMTMzcTkgLTUgMTEuNSAtMTV0LTIuNSAtMTlsLTM1IC02MXEtNSAtOSAtMTUgLTExLjV0LTE5IDIuNWwtMjMxIDEzNHYtMjY3cTAgLTExIC03IC0xOHQtMTcgLTdoLTcxCnEtMTAgMCAtMTcuNSA3LjV0LTcuNSAxNy41djI2N2wtMjMxIC0xMzRxLTkgLTUgLTE4LjUgLTIuNXQtMTQuNSAxMS41bC0zNiA2MXEtNSA5IC0yIDE5dDExIDE1bDIzMiAxMzNsLTIzMiAxMzRxLTggNSAtMTEgMTV0MiAxOGwzNiA2MnE1IDggMTUgMTAuNXQxOCAtMi41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjI5IiB1bmljb2RlPSImI3hlNjI5OyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNMTAxOCAzODVxMCAtMTAzIC00MC41IC0xOTcuNXQtMTA4LjUgLTE2Mi41dC0xNjIgLTEwOHQtMTk3IC00MHEtMTA0IDAgLTE5OC41IDQwLjV0LTE2MyAxMDl0LTEwOC41IDE2M3QtNDAgMTk4LjV0NDEgMTk4LjV0MTEwIDE2Mi41dDE2NCAxMDcuNXQyMDAgMzkuNXExMDIgMCAxOTUgLTQxdDE2MC41IC0xMDkuNXQxMDcuNSAtMTYyLjV0NDAgLTE5OHpNNDAwIDI1NXEtMTAwIDEwNiAtMTA4IDExM3EtMjUgMjUgLTU1LjUgMjV0LTUzLjUgLTIzCnEtMjEgLTIzIC0xOS41IC01MC41dDI3LjUgLTUyLjVxNDkgLTUxIDEzNyAtMTM5cTQwIC0zOSA3My41IC0zOXQ3My41IDQwcTE3MyAxNzIgMjE1IDIxNHExMTkgMTE5IDE0MS41IDE0Mi41dDIyLjUgNTIuNXQtMjEgNTBxLTIwIDIwIC01MC41IDE5LjV0LTU0LjUgLTIyLjVxLTggLTcgLTMxIC0zMHEtNTAgLTUxIC0yOTcgLTMwMHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYyQSIgdW5pY29kZT0iJiN4ZTYyYTsiIApkPSJNNTExLjUgODk0cS0xMDMuNSAwIC0xOTggLTQwLjV0LTE2Mi41IC0xMDguNXQtMTA4LjUgLTE2Mi41dC00MC41IC0xOTh0NDAuNSAtMTk4dDEwOC41IC0xNjIuNXQxNjIuNSAtMTA4LjV0MTk4IC00MC41dDE5Ny41IDQwLjV0MTYyLjUgMTA4LjV0MTA4LjUgMTYyLjV0NDAgMTk4dC00MCAxOTh0LTEwOC41IDE2Mi41dC0xNjIuNSAxMDguNXQtMTk3LjUgNDAuNXpNNTA5IDY3cS0yNyAxIC00NiAyMHQtMjAgNDZxLTEgMjkgMjAgNTB0NTAgMjAKcTI3IC0xIDQ2IC0yMHQyMCAtNDZxMSAtMjkgLTIwIC01MHQtNTAgLTIwek01ODAgMzI0cTAgLTI3IC0xNyAtNDUuNXQtNDEgLTE4LjVoLTIwcS0yNCAwIC00MC41IDE4LjV0LTE2LjUgNDUuNWwtMjUgMzE1cTAgMjYgMTcgNDQuNXQ0MSAxOC41aDY3cTI0IDAgNDAuNSAtMTguNXQxNi41IC00NC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjJCIiB1bmljb2RlPSImI3hlNjJiOyIgCmQ9Ik01MTIgODk1cS0xMDQgMCAtMTk4LjUgLTQwLjV0LTE2MyAtMTA5dC0xMDkgLTE2M3QtNDAuNSAtMTk4LjV0NDAuNSAtMTk4LjV0MTA5IC0xNjN0MTYzIC0xMDl0MTk4LjUgLTQwLjV0MTk4LjUgNDAuNXQxNjMgMTA5dDEwOSAxNjN0NDAuNSAxOTguNXQtNDAuNSAxOTguNXQtMTA5IDE2M3QtMTYzIDEwOXQtMTk4LjUgNDAuNXpNNzMxIDE3NnEtMTggLTIwIC00NSAtMjEuNXQtNDcgMTYuNWwtMTY4IDE1MXEtMjMgMjAgLTIyIDUxdjJ2MjI2CnEwIDI3IDE5IDQ2dDQ2IDE5dDQ2IC0xOXQxOSAtNDZ2LTIwMmwxNDcgLTEzMXEyMCAtMTggMjEuNSAtNDV0LTE2LjUgLTQ3eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjJDIiB1bmljb2RlPSImI3hlNjJjOyIgCmQ9Ik00NTAgNDAwaC0xMDVxLTI2IDAgLTQ1IC0xOXQtMTkgLTQ2dDE5IC00NS41dDQ1IC0xOC41aDEwNXYtMTAwcTAgLTI3IDE4LjUgLTQ1LjV0NDUuNSAtMTguNXQ0NS41IDE4LjV0MTguNSA0NS41djEwMGgxMDFxMjYgMCA0NSAxOXQxOSA0NS41dC0xOSA0NS41dC00NSAxOWgtMTAxdjEwNHEwIDI2IC0xOC41IDQ1dC00NS41IDE5dC00NS41IC0xOXQtMTguNSAtNDV2LTEwNHpNMjY5IDNxLTUgMCAtMTUgMS41dC0zOCA5dC01MyAxOQp0LTU2LjUgMzQuNXQtNTMuNSA1My41dC0zNy41IDc4dC0xNS41IDEwNC41cTAgMTA0IDYzIDE4NC41dDE2MCAxMDUuNXE1MSA4MCAxMzQuNSAxMjd0MTgxLjUgNDdxMTM3IDAgMjQxIC04OC41dDEyOSAtMjIxLjVxNTMgLTM0IDg0IC04OXQzMSAtMTIwcTAgLTE0NiAtMTE0IC0yMjFxLTI3IC0xOCAtNDggLTI0aC01OTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MkQiIHVuaWNvZGU9IiYjeGU2MmQ7IiAKZD0iTTU3NiA1MTJoLTM4NHYtMTkyaDM4NHYtNDQ4aDE5MnYxMDI0aC0xOTJ2LTM4NHpNODMyIDM4NGg2NHYtMTI4aC02NHYxMjh6TTg5NiAzODRoMTI4di01MTJoLTEyOHY1MTJ6TTAgODk2aDE5MnYtMTAyNGgtMTkydjEwMjR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MkUiIHVuaWNvZGU9IiYjeGU2MmU7IiAKZD0iTTQyNiAxMjhoMXY1OTRoLTE1MHEtNzMgMCAtMTI3IC00OHQtNjMgLTEyMGgtODdsODYgMzQyaDg1Mmw4NiAtMzQyaC04N3EtOSA3MiAtNjMgMTIwdC0xMjcgNDhoLTE1MHYtNTk0aDFxLTEgLTYgLTEgLTEzcTAgLTcyIDUwIC0xMjN0MTIxIC01MXYtNjloLTIxM2gtODZoLTIxM3Y2OXE3MSAwIDEyMSA1MXQ1MCAxMjNxMCA3IC0xIDEzeiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjJGIiB1bmljb2RlPSImI3hlNjJmOyIgCmQ9Ik0zIDcwMHEwIDgwIDU2IDEzNnQxMzYgNTZoNjM3cTc5IDAgMTM1IC01NnQ1NiAtMTM2di02MzZxMCAtODAgLTU2IC0xMzZ0LTEzNSAtNTZoLTYzN3EtNzkgMCAtMTM1LjUgNTZ0LTU2LjUgMTM2djYzNnpNNTEwIDU5NXEzMyAwIDU2IDIzLjV0MjMgNTZ0LTIzIDU1LjV0LTU2IDIzdC01Ni41IC0yM3QtMjMuNSAtNTZ0MjMuNSAtNTZ0NTYuNSAtMjN2MHpNNTcxIDQ1NXEwIDI3IC0xNy41IDQ2dC00My41IDE5dC00NCAtMTl0LTE4IC00NnYtMzc4CnEwIC0yNyAxOCAtNDMuNXQ0NCAtMTYuNXQ0NCAxN3QxOCA0NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzMCIgdW5pY29kZT0iJiN4ZTYzMDsiIApkPSJNNjM4IDh2LTExcTAgLTQgMC41IC0xMHQwLjUgLTEycS0xIC0xOSAtMTAuNSAtNDEuNXQtMzYuNSAtMzIuNXEtMTEgLTQgLTI4IC0xMS41dC01MiAtNy41cS0zMCAwIC00OS41IDd0LTMwLjUgOXEtMTQgMyAtMjIuNSAxMi41dC0xMyAyMS41dC01LjUgMjQuNXQtMSAyMi41djMwek04NTQgNjU5cTI2IC02MSAzMCAtMTE0LjV0LTYgLTk5dC0yOSAtODF0LTM5LjUgLTYyLjV0LTM4LjUgLTQ0LjV0LTI1IC0yMy41cS0xMCAtOSAtMTggLTEzLjUKdC0xNC41IC03LjV0LTEyLjUgLTd0LTEyIC0xM3EtMTMgLTE5IC0yMCAtMzYuNXQtMTIgLTM0LjVxLTUgLTE0IC0xMSAtMjN0LTEzIC0xNnEtOCAtOCAtMTYgLTEzaC0yMTlxLTggNSAtMTQgMTNxLTcgNyAtMTQgMTh0LTEyIDI4cS0xMCAyOSAtMjQuNSA0NnQtMzcuNSAzNHEtMTYgMTIgLTM2LjUgMzJ0LTQwIDQ3dC0zNy41IDYwdC0yOSA3M3QtMTMgODV0OSA5NXExNyA4MCA1OC41IDEzNHQ5My41IDg2LjV0MTA3IDQ3dDEwMCAxNC41CnE0NyAwIDk3LjUgLTEzdDk3LjUgLTQwdDg2LjUgLTY5LjV0NjQuNSAtMTAxLjV6TTc1MyA0NTZxNDMgMTc0IC0xMTEgMjY1cS0yNiAxNiAtNjAgMjV0LTcwIDl0LTcxLjUgLTl0LTYyLjUgLTI4cS02OCAtNDYgLTkyIC0xMDF0LTIyIC0xMTVxMSAtMzQgMTEuNSAtNjF0MjUgLTQ5dDI5LjUgLTM4cTE2IC0xNyAyOCAtMjlxMjUgLTI3IDQzIC00NnExOSAtMTkgMzAgLTQ5cTExIC0yOSAzNC41IC0zNS41dDQzLjUgLTYuNXEyNiAwIDQ5LjUgMTEuNQp0MzMuNSAzNS41cTUgMTQgMjAuNSAzNHQ0Ni41IDU2cTE2IDE4IDMwLjUgMzJ0MjcgMjh0MjEuNSAzMC41dDE1IDQwLjV6TTc1MyA0NTZ6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MzEiIHVuaWNvZGU9IiYjeGU2MzE7IiAKZD0iTTAgNzY4cTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNWg3NjhxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTc2OHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNWgtNzY4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY3Njh6TTM3NyA0MTFxLTQ1IC0xOCAtNjggLTI3djE1NGg3NHY4NWgtNzR2MTQ1aC04NnYtMTQ1aC04NHYtODVoODR2LTE4MHEtNDIgLTEyIC05NSAtMjFsMjEgLTg0cTQzIDExIDc0IDIxdi0xNjYKcTAgLTMwIC0yOCAtMzBxLTI0IDAgLTU5IDZ2LTg2aDg5cTg0IDAgODQgODd2MjE3cTIzIDkgNjggMjd2ODJ6TTQ5MiA0NDNoMTAzdjg1aC0xMDN2MjM2aC04NnYtNjMycTAgLTM5IC0zNyAtNTBsMjIgLTgxcTEyMyAyOSAyMTEgNjRsLTE2IDgxcS00MSAtMjAgLTk0IC0zNnYzMzN6TTc4NCAycTQ4IDAgNzEgMjZxMjUgMjggMzUgMTc1bC03OSAyNnEtNCAtMTA0IC0xNSAtMTI1cS0xMCAtMjAgLTI4IC0yMGgtMzNxLTI1IDAgLTI1IDI4djMzNWgxODAKdjg2aC0xODB2MjMyaC04NnYtNjcycTAgLTkxIDg0IC05MWg3NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzMiIgdW5pY29kZT0iJiN4ZTYzMjsiIApkPSJNMTAwMiA0MjBsLTE2NiAxMTNxLTIyIDE1IC0zNy41IDYuNXQtMTUuNSAtMzQuNXYtNTdoLTIxOHYyMDdoNTdxMjYgMCAzNCAxNS41dC02IDM3LjVsLTExMyAxNjZxLTE1IDIyIC0zNiAyMnQtMzYgLTIybC0xMTMgLTE2NnEtMTUgLTIyIC02LjUgLTM3LjV0MzQuNSAtMTUuNWg1N3YtMjA3aC0xOTZ2NTdxMCAyNiAtMTUuNSAzNC41dC0zNy41IC02LjVsLTE2NiAtMTEzcS0yMiAtMTUgLTIyIC0zNnQyMiAtMzZsMTY2IC0xMTMKcTIyIC0xNSAzNy41IC02LjV0MTUuNSAzNC41djU3aDE5NnYtMjA3aC01N3EtMjYgMCAtMzQuNSAtMTUuNXQ2LjUgLTM3LjVsMTEzIC0xNjZxMTUgLTIyIDM2IC0yMnQzNiAyMmwxMTMgMTY2cTE0IDIyIDYgMzcuNXQtMzQgMTUuNWgtNTd2MjA3aDIxOHYtNTdxMCAtMjYgMTUuNSAtMzQuNXQzNy41IDYuNWwxNjYgMTEzcTIyIDE1IDIyIDM2dC0yMiAzNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzMyIgdW5pY29kZT0iJiN4ZTYzMzsiIApkPSJNNDQ4IDM4NGgtMzIwcS0yNiAwIC00NSAtMTguNXQtMTkgLTQ1LjV2LTY0aDM4NHYtMTI4aDEyOHYxMjhoMzg0djY0cTAgMjcgLTE5IDQ1LjV0LTQ1IDE4LjVoLTMyMHYxMjhoLTEyOHYtMTI4ek0zMjAgODMzcTAgMjYgMTguNSA0NC41dDQ0LjUgMTguNWgyNThxMjYgMCA0NC41IC0xOC41dDE4LjUgLTQ0LjV2LTI1OHEwIC0yNiAtMTguNSAtNDQuNXQtNDQuNSAtMTguNWgtMjU4cS0yNiAwIC00NC41IDE4LjV0LTE4LjUgNDQuNXYyNTh6Ck02NCAyNTZoMTI4di0xMjhoLTEyOHYxMjh6TTgzMiAyNTZoMTI4di0xMjhoLTEyOHYxMjh6TTM4NCA2M3EwIDI3IDE5IDQ2dDQ2IDE5aDEyNnEyNyAwIDQ2IC0xOXQxOSAtNDZ2LTEyNnEwIC0yNyAtMTkgLTQ2dC00NiAtMTloLTEyNnEtMjcgMCAtNDYgMTl0LTE5IDQ2djEyNnpNMCA2M3EwIDI3IDE5IDQ2dDQ2IDE5aDEyNnEyNyAwIDQ2IC0xOXQxOSAtNDZ2LTEyNnEwIC0yNyAtMTkgLTQ2dC00NiAtMTloLTEyNnEtMjcgMCAtNDYgMTl0LTE5IDQ2CnYxMjZ6TTc2OCA2M3EwIDI3IDE5IDQ2dDQ2IDE5aDEyNnEyNyAwIDQ2IC0xOXQxOSAtNDZ2LTEyNnEwIC0yNyAtMTkgLTQ2dC00NiAtMTloLTEyNnEtMjcgMCAtNDYgMTl0LTE5IDQ2djEyNnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzNCIgdW5pY29kZT0iJiN4ZTYzNDsiIGhvcml6LWFkdi14PSIxMDI1IiAKZD0iTTgyOSA0NDhoLTQ0N3YtMTI4aDQ0OGwxIC0xMjJxMCAtMTAgNS41IC0xMi41dDEyLjUgNS41bDE2OCAxNzVxNyA3IDcgMTcuNXQtNyAxNy41bC0xNzEgMTcwcS03IDcgLTEyIDQuNXQtNSAtMTMuNXYtMTE0ek03MTcgMTkycS01MSAtODcgLTEzOS41IC0xMzkuNXQtMTkzLjUgLTUyLjVxLTE1OSAwIC0yNzEuNSAxMTIuNXQtMTEyLjUgMjcxLjV0MTEyLjUgMjcxLjV0MjcxLjUgMTEyLjVxODUgMCAxNjEgLTM1cTExMCAtNTEgMTcxIC0xNTcKaC0xNjVxLTcyIDY0IC0xNjggNjRxLTEwNiAwIC0xODAuNSAtNzV0LTc0LjUgLTE4MXQ3NC41IC0xODF0MTgwLjUgLTc1cTk3IDAgMTY5IDY0aDE2NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzNSIgdW5pY29kZT0iJiN4ZTYzNTsiIApkPSJNMzIgNjRxMCAtNzkgNjAuNSAtMTM1LjV0MTQ1LjUgLTU2LjVoNTQ4cTg1IDAgMTQ1LjUgNTYuNXQ2MC41IDEzNS41djY0MHEwIDc5IC02MC41IDEzNS41dC0xNDUuNSA1Ni41aC01NDhxLTg1IDAgLTE0NS41IC01Ni41dC02MC41IC0xMzUuNXYtNjQwek0xNjAgNzA0cTAgMjYgMjEgNDV0NTAgMTloNTYycTI5IDAgNTAgLTE5dDIxIC00NXYtNjQwcTAgLTI2IC0yMSAtNDV0LTUwIC0xOWgtNTYycS0yOSAwIC01MCAxOXQtMjEgNDV2NjQwegpNMjI0IDU3NnEwIDI3IDE4LjUgNDUuNXQ0NS41IDE4LjVoNDQ4cTI3IDAgNDUuNSAtMTguNXQxOC41IC00NS41dC0xOC41IC00NS41dC00NS41IC0xOC41aC00NDhxLTI3IDAgLTQ1LjUgMTguNXQtMTguNSA0NS41ek0yMjQgMzg0cTAgMjcgMTguNSA0NS41dDQ1LjUgMTguNWg0NDhxMjcgMCA0NS41IC0xOC41dDE4LjUgLTQ1LjV0LTE4LjUgLTQ1LjV0LTQ1LjUgLTE4LjVoLTQ0OHEtMjcgMCAtNDUuNSAxOC41dC0xOC41IDQ1LjV6TTIyNCAxOTIKcTAgMjcgMTguNSA0NS41dDQ1LjUgMTguNWg0NDhxMjcgMCA0NS41IC0xOC41dDE4LjUgLTQ1LjV0LTE4LjUgLTQ1LjV0LTQ1LjUgLTE4LjVoLTQ0OHEtMjcgMCAtNDUuNSAxOC41dC0xOC41IDQ1LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2MzYiIHVuaWNvZGU9IiYjeGU2MzY7IiAKZD0iTTM2IDU2NXYtMWw0MzYgLTIxNXYxcTIwIC0xMiAzOS41IC0xMnQ0MC41IDEydi0xbDQzNiAyMTV2MXEzMyAxOSAzMyA1MS41dC0zMyA1MS41djFsLTQzNiAyMTV2LTFxLTE3IDEwIC00MCAxMHEtMjAgMCAtNDAgLTEydjFsLTQzNiAtMjEzdi0xcS0zMyAtMTkgLTMzIC01MS41dDMzIC01MS41ek05NDggNDQ2cS0xMyAwIC0yMyAtMy41dC0xNCAtNi41bC0zIC0zbC0zOTYgLTE4OWwtMzk3IDE5MnEtMTAgNiAtMzkgMTAKcS0zNSA0IC01NCAtMTUuNXQtMTkgLTQ4LjVxMCAtMzMgMzMgLTUybDQzNiAtMjE2djFxMjAgLTExIDQwIC0xMXQ0MCAxMXYtMWw0MzYgMjEwcTE0IDkgMjMuNSAyNC41dDkuNSAzMS41cTAgMjcgLTIxLjUgNDYuNXQtNTEuNSAxOS41ek05NDggMjE3cS0xMyAwIC0yMyAtM3QtMTQgLTZsLTMgLTRsLTM5NiAtMTg5bC0zOTcgMTkycS0xMCA3IC0zOSAxMHEtMzUgNCAtNTQgLTE1dC0xOSAtNDlxMCAtMzIgMzMgLTUxbDQzNiAtMjE2djEKcTIwIC0xMiA0MCAtMTJ0NDAgMTJ2LTFsNDM2IDIxMHExNCA4IDIzLjUgMjMuNXQ5LjUgMzEuNXEwIDI3IC0yMS41IDQ2LjV0LTUxLjUgMTkuNXpNOTQ4IDIxN3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzNyIgdW5pY29kZT0iJiN4ZTYzNzsiIApkPSJNNjggNTQ5cTAgMzQgMTEgNDlxMTEgMTQgNDkgMTRoMTA5di02MzFxMSAwIC0xMDggMXEtMzQgLTEgLTQ3LjUgMTEuNXQtMTMuNSA0OC41djE4MXEwIDE0IDQuNSAyMXQxNy41IDEwcTUgMCAxNCA0cTggNCAxNyAxMnQxNSAyMXE2IDE0IDYgMzJxMCAyOSAtMTUgNDZxLTE2IDE2IC0zMyAxOXEtMTQgMiAtMjAgOHQtNiAyMHYxMzN2MHpNMTk1IDY2OXYxNXYydjF2MTVxMCAyNSAxOSA0Ni41dDQyIDIxLjVoOTZ2LTEwMWgtMTU3djB6Ck05NTkgMzk1cS0xMCAtMyAtMTQgLTExdC00IC0xOHEwIC05IDQgLTE5dDE0IC0xNHQxNiAtMTVxNSAtMTEgNiAtMjRxMCAtMTIgLTMgLTI0cS00IC0xMSAtMTEgLTE2cS0yNSAtMTUgLTI1IC0zNHEwIC0yMCAyNSAtMzhxNCAtNCA5IC0xNHE0IC0xMCA0IC0yMHEwIC0xMSAtNSAtMThxLTUgLTggLTE3IC04aC02N3EtNyAwIC03IDJxLTEgMSAxIDR0NiA3dDcgOXE2IDE4IDAgMzBxLTcgMTMgLTIxIDIycS0xMSA1IC0xNSAxNnEtNCAxMCAtMyAyMgpxMCAxMSA0IDIwdDExIDEzcTEwIDMgMTUgMTRxNSA5IDUgMjFxMCAxMCAtNCAyMXEtNCAxMCAtMTEgMTNxLTEwIDUgLTE1IDE1cS02IDEwIC02IDIzdDUgMjRxNSAxMyAxNiAyMHE3IDUgMTIgMTRxNSA4IDYgMTlxMSA5IC00IDE5cS00IDEwIC0xNSAxNnEtMTMgNiAtMTggMThxLTYgMTMgLTYgMjV0NiAyNHE1IDEyIDE1IDE4cTIxIDExIDIzIDMxdC0zIDM2cS00IDEyIC0xNSAyM3EtMTEgMTAgLTI4IDEwaC00MjV2OTloNTI3cTkgMCAxNSAtNgp0OCAtMTV0LTEgLTE4cS0zIC0xMCAtMTIgLTE2cS04IC03IC0xMyAtMTdxLTUgLTkgLTYgLTIxcS0xIC0xMCAzIC0yMXQxNCAtMTZxMTMgLTcgMjAgLTIwLjV0NyAtMjYuNXQtNyAtMjVxLTcgLTExIC0xOSAtMTZxLTE0IC01IC0yMCAtMTQuNXQtNyAtMjAuNXEwIC0xMiA1IC0yMnE2IC0xMiAxOCAtMTlxMTMgLTcgMTggLTIwcTUgLTEyIDUgLTI1cS0xIC0xMyAtNiAtMjRxLTYgLTEwIC0xNyAtMTJ2MHpNNzk5IDQxNHEtMTUgLTQgLTIzIC0xNApxLTggLTExIC05IC0yMnEwIC0xMiA2IC0yM3E4IC0xMiAyMSAtMTdxMTIgLTUgMTggLTE1cTcgLTEwIDcgLTIxcTEgLTEyIC00IC0yMnQtMTUgLTE1cS0zMSAtMTUgLTMyIC0zN3EtMSAtMjEgMjMgLTM0cTEyIC01IDE4IC0xNXE3IC0xMSA4IC0yM3EwIC0xMiAtNSAtMjJxLTQgLTkgLTE2IC0xM3EtMTQgLTQgLTIzIC0xNHEtNyAtMTAgLTggLTIxLjV0NiAtMjIuNXQyMiAtMTlxOSAtNSAxMy41IC0xNS41dDMuNSAtMjEuNXEtMiAtMTAgLTcgLTE4CnQtMTUgLThoLTQ3OHY2MzFoNDg1cTEwIDAgMTYgLThxNSAtOCA2IC0xOHEwIC0xMCAtNSAtMjB0LTE2IC0xNHQtMTggLTEzcS02IC04IC04IC0xOXEtMSAtMTEgNSAtMjFxNyAtMTAgMjEgLTE1cTEyIC02IDE4IC0xNXE3IC0xMSA4IC0yMXEwIC0xMSAtNSAtMjFxLTYgLTkgLTE4IC0xM3Ywek02MjIgMzI5cS02IDAgLTEzIDJxLTYgMSAtMyA3cTExIDE2IDEyIDE4cTExIDE2IDIzIDMycTMgNCAxMS41IDE1LjV0MTMuNSAxNi41cTExIDE3IDEzIDIwCnE2IDkgLTcgMjNxLTMgMyAtMTAgOHQtMTQgOHEtMTAgMyAtMTQgMXEtNSAtMyAtMTAgLTEycS05IC0xMiAtMTMgLTE4cS0zIC01IC0yMSAtMzFxLTkgLTEzIC0yMCAtMjlxLTEwIC0xNCAtMTEgLTE2cS0yIC01IC05IC00dC05IDZxLTMgNCAtMTEgMTVxLTExIDEzIC0yMSAyN3EtNyAxMCAtMjIgMjhxLTEwIDEzIC0xNCAxOXEtMTEgMjEgLTI0IDE0cS04IC01IC0xNSAtMTFxLTYgLTUgLTEzIC0xMHEtMTIgLTggLTQgLTIycTIyIC0yNyAzNyAtNDcKcTE4IC0yMyAyNiAtMzRxMTIgLTE2IDE1IC0xOXEzIC01IC01IC01aC0xNXEtNyAwIC0xNyAtMXEtMTMgMCAtMjIgMXEtMTAgMCAtMTYgLTV0LTQgLTEzcTEgLTUgMSAtMTV2LTE1cTAgLTcgNCAtNy41dDkgLTAuNWg3MXExNSAwIDE1IC02di0yNHEwIC02IC0yIC02aC03aC0xMmgtMjVoLTI0aC0xNXEtNyAxIC0xMCAtNHEtMiAtNSAtNCAtMTJxLTEgLTYgMCAtMTF0MSAtMTBxMCAtMTYgMTcgLTE2aDc0cTYgMCA3IC0ydDEgLThxMiAtNyAxIC0yMwpxLTEgLTIwIC0xIC0yMnEwIC0xNCAxNiAtMTRoNDBxMTAgMCAxMCA3djl2NDFxMCAxMyAxMSAxM2gxMXExMCAwIDE5IDFoMjBoMTZxMTggMCAxOCAxM3YyOHEwIDExIC0xMiAxMWgtNzJxLTEzIC0zIC0xMyA1djEwcS0xIDQgLTEgMTBxMCA1IDQgOHE1IDIgMTAgMmg3M3ExMiAwIDEyIDl2MzBxMCA1IC00LjUgMTB0LTEwLjUgNWgtNDJ2MHpNNjIyIDMyOXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzOCIgdW5pY29kZT0iJiN4ZTYzODsiIApkPSJNMTAyNCAtNnEwIC01MyAtMzQuNSAtODcuNXQtODcuNSAtMzQuNWgtNzgwcS01MyAwIC04Ny41IDM0LjV0LTM0LjUgODcuNXY2MTRxMCAyNSAxMCA0OHEtMTAgMjQgLTEwIDQ1djczcTAgNTMgMzQuNSA4Ny41dDg3LjUgMzQuNWg3ODBxNTMgMCA4Ny41IC0zNC41dDM0LjUgLTg3LjV2LTczcTAgLTIyIC0xMCAtNDVxMTAgLTIzIDEwIC00OHYtNjE0ek05NzUgNzc0cTAgMjcgLTIzLjUgNTB0LTQ5LjUgMjNoLTc4MHEtMjcgMCAtNTAgLTIzCnQtMjMgLTUwdi03M3EwIC0yNiAyMyAtNDkuNXQ1MCAtMjMuNWg3ODBxMjYgMCA0OS41IDIzLjV0MjMuNSA0OS41djczdjB6TTk3NSA2MDNxLTQyIC0yNCAtNzMgLTI0aC03ODBxLTMyIDAgLTczIDI0di02MDlxMCAtMjYgMjMgLTQ5LjV0NTAgLTIzLjVoNzgwcTI2IDAgNDkuNSAyMy41dDIzLjUgNDkuNXY2MDl2MHpNODc4IDQzM2gtNDlxLTEyIC0xMjEgLTEwNS41IC0yMDd0LTIxMS41IC04NnQtMjExLjUgODZ0LTEwNS41IDIwN2gtNDkKcS0xMyAwIC0xOC41IDUuNXQtNS41IDE4LjVxMCAyNiAyNCAyNWgxNDdxMTMgMCAxOC41IC01LjV0NS41IC0xOXQtNS41IC0xOXQtMTguNSAtNS41aC00OXExMiAtOTkgODcgLTE3MS41dDE4MSAtNzIuNXQxODEgNzIuNXQ4NyAxNzEuNWgtNDlxLTEzIDAgLTE4LjUgNS41dC01LjUgMTl0NS41IDE5dDE4LjUgNS41aDE0N3E4IDAgMTYgLTYuNXQ4IC0xOC41cTAgLTEzIC01LjUgLTE4LjV0LTE4LjUgLTUuNXYweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjM5IiB1bmljb2RlPSImI3hlNjM5OyIgCmQ9Ik04NTMgODk2aC02ODJxLTcxIDAgLTEyMSAtNTB0LTUwIC0xMjF2LTY4MnEwIC03MSA1MCAtMTIxdDEyMSAtNTBoNjgycTcxIDAgMTIxIDUwdDUwIDEyMXY2ODJxMCA3MSAtNTAgMTIxdC0xMjEgNTB2MHpNOTYwIDUxcTAgLTQ4IC0zNCAtODJ0LTgyIC0zNGgtNjY0cS00OCAwIC04MiAzNHQtMzQgODJ2NjY1cTAgNDggMzQgODJ0ODIgMzRoNjY0cTQ4IDAgODIgLTM0dDM0IC04MnYtNjY1djB6TTg2NSAzMTloLTczcS0xMyAwIC0yMSAtNgp0LTE0IC0yM2wtNDAgLTgybC02NCA0ODZxLTQgMzIgLTQxIDMycS0zMyAwIC0zOSAtMzNsLTk5IC00OTlsLTc5IDM5M3EtNiAyOSAtNDMgMjlxLTMgMCAtOSAtMS41dC0xNS41IC03LjV0LTExLjUgLTE3bC04NCAtMjcxaC03MXEtMTYgMCAtMjUuNSAtOC41dC05LjUgLTIzLjV0OS41IC0yMy41dDI1LjUgLTguNWg3OWw0IC0xcTMgMCA2IDAuNXQ4IDF0OSAydDguNSA0LjV0OCA4dDYuNSAxMmw1OSAyMDJsODUgLTQyN3EwIC0xMyA4IC0yMwp0MjEgLTEzcTE1IC0zIDI3LjUgNS41dDE1LjUgMjMuNWwxMDYgNDgzbDQ0IC00MThxNCAtMzAgNDEgLTMycTI4IC0xIDQwIDIxbDc5IDE1Mmg0OXEzMiAwIDMyIDMxLjV0LTMyIDMxLjV2MHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzQSIgdW5pY29kZT0iJiN4ZTYzYTsiIApkPSJNMTAwNiA1NzRoLTg3NHEtNTUgMCAtOTMuNSAtMzUuNXQtMzguNSAtODUuNXYtNDU5cTAgLTUxIDM4LjUgLTg2LjV0OTMuNSAtMzUuNWg4NzZxLTEwIDI1IC0xMSAzOXEwIDE0IDI3IDQzdjQzcS0yNyAyOCAtMjcgNDJxMCA3IDcgMTcuNXQxMyAxOC41bDcgN3Y0M3EtMjcgMjkgLTI3IDQzcTAgNiA3IDE3dDEzIDE4bDcgOHY0M3EtMjcgMjggLTI3IDQzcTAgNiA3IDE3dDEzIDE4bDcgOHY0MnEtMjcgMjkgLTI3IDQzcTAgNyA3IDE3LjUKdDEzIDE4LjVsNyA3djQzcS0yNyAyOCAtMjcgNDNxMCA2IDIuNSAxMS41dDQuNSA2LjVsMiAydjB6TTk1MiA1MTl2LTUxcS0yNyAtMjggLTI3IC00M3EwIC02IDYuNSAtMTd0MTMuNSAtMThsNyAtOHYtNDJxLTI3IC0yOSAtMjcgLTQzcTAgLTcgNi41IC0xNy41dDEzLjUgLTE4LjVsNyAtN3YtNDNxLTI3IC0yOSAtMjcgLTQzcTAgLTYgNi41IC0xN3QxMy41IC0xOGw3IC04di00M3EtMjcgLTI4IC0yNyAtNDNxMCAtNiA2LjUgLTE2LjUKdDEzLjUgLTE4LjV0NyAtN3YtNDVsLTkgLTI0aC04MTlxLTIyIDAgLTQzIDI1dC0yMSA1N3Y0NThxMSAxNSAxNi41IDMzdDMxLjUgMThoODQ0djB6TTUxOSAxMzZ2MWgtMTAzdjYzaDEwM3YwcTEwIDAgMTYuNSA2LjV0Ni41IDE2dC02LjUgMTZ0LTE2LjUgNi41djBoLTg4bDk3IDE3OXE2IDggNiAxN3EwIDEyIC04LjUgMjAuNXQtMjAuNSA4LjVxLTIxIDAgLTI4IC0xOXEtODQgLTE2NCAtODggLTE3NWgtMWwtOTIgMTc1djBxLTcgMTkgLTI3IDE5CnEtMTIgMCAtMjAgLTguNXQtOCAtMTkuNXEwIC05IDQgLTE3bDk3IC0xODBoLTkwcS0xMCAwIC0xNi41IC02LjV0LTYuNSAtMTZ0Ni41IC0xNnQxNi41IC02LjVoMTA3di02M2gtMTA3di0xcS0xMCAwIC0xNi41IC02LjV0LTYuNSAtMTUuNXQ2LjUgLTE2dDE2LjUgLTdoMTA3di05MXYtNnEwIC0xMSA4IC0xOS41dDIwIC04LjV0MjAgOC41dDggMTkuNXY2aDF2OTFoMTAzdjBxMTAgMCAxNi41IDd0Ni41IDE2dC02LjUgMTUuNXQtMTYuNSA2LjV2MHoKTTcwMyA0NTVxMCAxMCA5IDE3LjV0MjIgNy41cTEyIDAgMjEuNSAtNy41dDkuNSAtMTcuNXYtMzlxMCAtMTAgLTkuNSAtMTcuNXQtMjEuNSAtNy41cS0xMyAwIC0yMiA3LjV0LTkgMTcuNXYzOXYwek03MDMgMzE0cTAgMTEgOSAxOC41dDIyIDcuNXExMiAwIDIxLjUgLTcuNXQ5LjUgLTE4LjV2LTM4cTAgLTEwIC05LjUgLTE3LjV0LTIxLjUgLTcuNXEtMTMgMCAtMjIgNy41dC05IDE3LjV2Mzh2MHpNNzAzIDE3NHEwIDEwIDkgMTcuNXQyMiA3LjUKcTEyIDAgMjEuNSAtNy41dDkuNSAtMTcuNXYtMzhxMCAtMTEgLTkuNSAtMTguNXQtMjEuNSAtNy41cS0xMyAwIC0yMiA3LjV0LTkgMTguNXYzOHYwek03MDMgMzRxMCAxMCA5IDE3LjV0MjIgNy41cTEyIDAgMjEuNSAtNy41dDkuNSAtMTcuNXYtMzlxMCAtMTAgLTkuNSAtMTcuNXQtMjEuNSAtNy41cS0xMyAwIC0yMiA3LjV0LTkgMTcuNXYzOXYwek0yMTMgNjEzbDI2IDY5cTYgMTMgMjUgMjAuNXQzNSAxLjVsMjM5IC05MWgxNzlsLTM4MCAxNDUKcS01MSAxOSAtMTAwIC0wLjV0LTY3IC02Ni41bC0yOSAtNzhoNzJ2MHpNNDIzIDc2OWw0NyA1NXExMSAxMCAzMSAxMXQzNCAtMTBsMjAyIC0xNzRsMTAxIC0zOGg0MWwtMjkxIDI0OXEtNDEgMzYgLTkzLjUgMzR0LTg1LjUgLTQwbC01MyAtNjJsNjcgLTI1djB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2M0IiIHVuaWNvZGU9IiYjeGU2M2I7IiAKZD0iTTk5NSAzN2wtMTY5IDE2OXE3MSAxMTEgNzEgMjQxcTAgOTEgLTM1LjUgMTc0dC05NS41IDE0M3QtMTQzIDk1LjV0LTE3NCAzNS41dC0xNzQgLTM1LjV0LTE0MyAtOTUuNXQtOTUuNSAtMTQzdC0zNS41IC0xNzR0MzUuNSAtMTc0dDk1LjUgLTE0M3QxNDMgLTk1LjV0MTc0IC0zNS41cTEyOSAwIDI0MSA3MWwxNjkgLTE2OXEyOCAtMjggNjggLTI4dDY4IDI4dDI4IDY4dC0yOCA2OHpNNDQ5IDEyN3EtODcgMCAtMTYwLjUgNDMKdC0xMTYuNSAxMTYuNXQtNDMgMTYwLjV0NDMgMTYwLjV0MTE2LjUgMTE2LjV0MTYwLjUgNDN0MTYwLjUgLTQzdDExNi41IC0xMTYuNXQ0MyAtMTYwLjV0LTQzIC0xNjAuNXQtMTE2LjUgLTExNi41dC0xNjAuNSAtNDN6TTU3NyA1MTFoLTY0djY0cTAgMjcgLTE5IDQ1LjV0LTQ1LjUgMTguNXQtNDUgLTE4LjV0LTE4LjUgLTQ1LjV2LTY0aC02NHEtMjcgMCAtNDUuNSAtMTguNXQtMTguNSAtNDV0MTguNSAtNDUuNXQ0NS41IC0xOWg2NHYtNjQKcTAgLTI2IDE4LjUgLTQ1dDQ1IC0xOXQ0NS41IDE5dDE5IDQ1djY0aDY0cTI2IDAgNDUgMTl0MTkgNDUuNXQtMTkgNDV0LTQ1IDE4LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2M0MiIHVuaWNvZGU9IiYjeGU2M2M7IiAKZD0iTTMyMCA1NzZxMCA4MCA1NiAxMzZ0MTM2IDU2dDEzNiAtNTZ0NTYgLTEzNnEwIC0zMSAtMTIgLTY0aDE0MHY2NHEwIDEzMyAtOTMuNSAyMjYuNXQtMjI2LjUgOTMuNXQtMjI2LjUgLTkzLjV0LTkzLjUgLTIyNi41di02NGgxNDBxLTEyIDMzIC0xMiA2NHpNODc4IDUxMmgtNzMycS02MCAwIC0xMDMgLTM3LjV0LTQzIC05MC41di0zODRxMCAtNTMgNDMgLTkwLjV0MTAzIC0zNy41aDczMnE2MCAwIDEwMyAzNy41dDQzIDkwLjV2Mzg0CnEwIDUzIC00MyA5MC41dC0xMDMgMzcuNXpNNTczIDE0NnYtODJxMCAtMjYgLTE4LjUgLTQ1dC00NSAtMTl0LTQ1LjUgMTl0LTE5IDQ1djgycS0yOSAxNyAtNDYuNSA0NnQtMTcuNSA2NHEwIDUzIDM3LjUgOTAuNXQ5MC41IDM3LjV0OTAuNSAtMzcuNXQzNy41IC05MC41cTAgLTM1IC0xNyAtNjR0LTQ3IC00NnoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzRCIgdW5pY29kZT0iJiN4ZTYzZDsiIApkPSJNNTExLjUgLTIwOXEtMTAzLjUgMCAtMTk3LjUgNDAuNXQtMTYyIDEwOC41dC0xMDguNSAxNjJ0LTQwLjUgMTk3LjV0NDAuNSAxOTh0MTA4LjUgMTYyLjV0MTYyIDEwOC41dDE5Ny41IDQwLjV0MTk4IC00MC41dDE2Mi41IC0xMDguNXQxMDguNSAtMTYyLjV0NDAuNSAtMTk4dC00MC41IC0xOTcuNXQtMTA4LjUgLTE2MnQtMTYyLjUgLTEwOC41dC0xOTggLTQwLjV6TTUxMiAtNjNxMTA5IDAgMjAxIDYwbC01MDQgNTA0CnEtNjAgLTkyIC02MCAtMjAxcTAgLTk5IDQ4LjUgLTE4Mi41dDEzMiAtMTMydDE4Mi41IC00OC41ek01MTIgNjYzcS0xMDkgMCAtMjAxIC02MGw1MDQgLTUwNHE2MCA5MiA2MCAyMDFxMCA5OSAtNDguNSAxODIuNXQtMTMyIDEzMnQtMTgyLjUgNDguNXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzRSIgdW5pY29kZT0iJiN4ZTYzZTsiIApkPSJNODcyIDc0M3EtNzIgNzIgLTE2NSAxMTAuNXQtMTk1IDM4LjV0LTE5NC41IC0zOC41dC0xNjQuNSAtMTEwLjV0LTExMC41IC0xNjQuNXQtMzguNSAtMTk0LjV0MzguNSAtMTk0LjV0MTEwLjUgLTE2NC41dDE2NC41IC0xMTAuNXQxOTQuNSAtMzguNXQxOTUgMzguNXQxNjUgMTEwLjVxOTcgOTcgMTMxLjUgMjI4dDAgMjYydC0xMzEuNSAyMjh2MHpNODI1IDcycS02MyAtNjMgLTE0My41IC05Ni41dC0xNjkgLTMzLjV0LTE2OS41IDMzLjUKdC0xNDMuNSA5NnQtOTYgMTQzLjV0LTMzLjUgMTY5LjV0MzMuNSAxNjl0OTYgMTQzdDE0My41IDk2dDE2OS41IDMzLjV0MTY5IC0zMy41dDE0My41IC05NS41cTg1IC04NSAxMTUgLTE5OXQwIC0yMjcuNXQtMTE1IC0xOTguNXYwek02ODQgNTQ5cS0yNSAwIC00Mi41IC0xNy41dC0xNy41IC00MnQxNy41IC00MnQ0Mi41IC0xNy41dDQyIDE3LjV0MTcgNDJ0LTE3IDQydC00MiAxNy41djB6TTM2NyA0MzBxMjUgMCA0Mi41IDE3LjV0MTcuNSA0Mgp0LTE3LjUgNDJ0LTQyLjUgMTcuNXQtNDIuNSAtMTcuNXQtMTcuNSAtNDJ0MTcuNSAtNDJ0NDIuNSAtMTcuNXYwek01MTMgMjk4cS02MiAwIC0xMTQuNSAtMjkuNXQtODUuNSAtODAuNXEtMTAgLTE1IC0xLjUgLTMxLjV0MjYuNSAtMTYuNWgycTE2IDAgMjUgMTNxMjUgMzcgNjQgNTguNXQ4NCAyMS41dDg0IC0yMS41dDY0IC01OC41cTggLTEzIDI0IC0xM2gycTE4IDAgMjYuNSAxNi41dC0xLjUgMzEuNXEtMzMgNTEgLTg1LjUgODAuNQp0LTExMy41IDI5LjV2MHpNNTEzIDI5OHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTYzRiIgdW5pY29kZT0iJiN4ZTYzZjsiIApkPSJNODk2IDgzMnEyOSAwIDQ2LjUgLTE3LjV0MTcuNSAtNDYuNXYtNzY4cTAgLTI5IC0xNy41IC00Ni41dC00Ni41IC0xNy41aC03NjhxLTI5IDAgLTQ2LjUgMTcuNXQtMTcuNSA0Ni41djc2OHEwIDI5IDE3LjUgNDYuNXQ0Ni41IDE3LjVoNzY4ek04OTYgODk2aC03NjhxLTUzIDAgLTkwLjUgLTM3LjV0LTM3LjUgLTkwLjV2LTc2OHEwIC01MyAzNy41IC05MC41dDkwLjUgLTM3LjVoNzY4cTUzIDAgOTAuNSAzNy41dDM3LjUgOTAuNXY3NjgKcTAgNTMgLTM3LjUgOTAuNXQtOTAuNSAzNy41djB6TTMzOSA0MTZxLTEzIC0xMyAtMTMgLTMydDEzIC0zMmwxIC0xbDEgLTFsMSAtMWgxdi0xbDEgLTFoMXYtMWwxIC0xbDEgLTFoMXYtMWwxIC0xbDEgLTFsMSAtMWwxIC0xbDEgLTFsMSAtMWgxbDEgLTFsMSAtMWwxIC0ybDI2MyAtMjYzcTE0IC0xNCAzMS41IC0xNHQzMiAxNC41dDE0LjUgMzJ0LTE0IDMxLjVsLTI1MCAyNTBsMjUwIDI1MHExNCAxNCAxNCAzMS41dC0xNC41IDMydC0zMiAxNC41CnQtMzEuNSAtMTRsLTI4MiAtMjgydjB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDAiIHVuaWNvZGU9IiYjeGU2NDA7IiAKZD0iTTEyOCA4MzJxLTI5IDAgLTQ2LjUgLTE3LjV0LTE3LjUgLTQ2LjV2LTc2OHEwIC0yOSAxNy41IC00Ni41dDQ2LjUgLTE3LjVoNzY4cTI5IDAgNDYuNSAxNy41dDE3LjUgNDYuNXY3NjhxMCAyOSAtMTcuNSA0Ni41dC00Ni41IDE3LjVoLTc2OHpNMTI4IDg5Nmg3NjhxNTMgMCA5MC41IC0zNy41dDM3LjUgLTkwLjV2LTc2OHEwIC01MyAtMzcuNSAtOTAuNXQtOTAuNSAtMzcuNWgtNzY4cS01MyAwIC05MC41IDM3LjV0LTM3LjUgOTAuNXY3NjgKcTAgNTMgMzcuNSA5MC41dDkwLjUgMzcuNXYwek02ODUgNDE2cTEzIC0xMyAxMyAtMzJ0LTEzIC0zMmwtMSAtMWwtMSAtMWwtMSAtMWgtMXYtMWwtMSAtMWgtMXYtMWwtMSAtMWwtMSAtMWgtMXYtMWwtMSAtMWwtMSAtMWwtMSAtMWwtMSAtMWwtMSAtMWwtMSAtMWgtMWwtMSAtMWwtMSAtMWwtMSAtMmwtMjYzIC0yNjNxLTE0IC0xNCAtMzEuNSAtMTR0LTMyIDE0LjV0LTE0LjUgMzJ0MTQgMzEuNWwyNTAgMjUwbC0yNTAgMjUwCnEtMTQgMTQgLTE0IDMxLjV0MTQuNSAzMnQzMiAxNC41dDMxLjUgLTE0bDI4MiAtMjgydjB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDEiIHVuaWNvZGU9IiYjeGU2NDE7IiAKZD0iTTAgNzAzcTAgODAgNTYgMTM2LjV0MTM3IDU2LjVoNjM4cTgwIDAgMTM2LjUgLTU2dDU2LjUgLTEzN3YtNjM4cTAgLTgwIC01NiAtMTM2LjV0LTEzNyAtNTYuNWgtNjM4cS04MCAwIC0xMzYuNSA1NnQtNTYuNSAxMzd2NjM4ek01MDkgMjJxMzMgMCA1NiAyMy41dDIzIDU2dC0yMyA1NnQtNTYgMjMuNXQtNTcgLTIzLjV0LTI0IC01NnQyNCAtNTZ0NTcgLTIzLjV2MHpNNTcwIDcxNHEwIDI3IC0xNy41IDQ1LjV0LTQzLjUgMTguNQp0LTQ0LjUgLTE4LjV0LTE4LjUgLTQ1LjV2LTM4MHEwIC0yNyAxOC41IC00My41dDQ0LjUgLTE2LjV0NDQgMTd0MTggNDR6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDIiIHVuaWNvZGU9IiYjeGU2NDI7IiAKZD0iTTg0OSA2MDRsLTE1NSAxcS0xNyAwIC0yOSAxMnQtMTIgMjh2ODFxMCAzMyAtMjMuNSA1Ni41dC01Ni41IDIzLjVxLTI3IDAgLTQ4IC0xNmwtNDA1IC0zMzRxLTMwIC0yOSAtMzAgLTcxdDMwIC03MWw0MDUgLTMzNHEyMSAtMTYgNDggLTE2cTMzIDAgNTYuNSAyMy41dDIzLjUgNTYuNXY4MHEwIDE3IDEyIDI4LjV0MjkgMTEuNWwxNTUgMXEzMyAwIDU2LjUgMjMuNXQyMy41IDU2LjV2MjgwcTAgMzMgLTIzLjUgNTZ0LTU2LjUgMjN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDMiIHVuaWNvZGU9IiYjeGU2NDM7IiAKZD0iTTE3MCA2MDRsMTU1IDFxMTcgMCAyOC41IDEydDExLjUgMjh2ODFxMCAzMyAyMy41IDU2LjV0NTcuNSAyMy41cTI2IDAgNDggLTE2bDQwNSAtMzM0cTMwIC0yOSAzMCAtNzF0LTMwIC03MWwtNDA1IC0zMzRxLTIyIC0xNiAtNDggLTE2cS0zNCAwIC01Ny41IDIzLjV0LTIzLjUgNTYuNXY4MHEwIDE3IC0xMS41IDI4LjV0LTI4LjUgMTEuNWwtMTU1IDFxLTMzIDAgLTU2LjUgMjMuNXQtMjMuNSA1Ni41djI4MHEwIDMzIDIzLjUgNTZ0NTYuNSAyM3oKIiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDQiIHVuaWNvZGU9IiYjeGU2NDQ7IiAKZD0iTTQ0OCAyMjZsLTE3MyAtNjBsNSAyNTFsLTE1MiAyMDBsMjQxIDczbDE0MyAyMDZsMTQzIC0yMDZsMjQxIC03M2wtMTUyIC0yMDBsNSAtMjUxbC0xNzMgNjB2LTI5MHEwIC0yNyAtMTguNSAtNDUuNXQtNDUuNSAtMTguNXQtNDUuNSAxOC41dC0xOC41IDQ1LjV2MjkweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjQ1IiB1bmljb2RlPSImI3hlNjQ1OyIgCmQ9Ik04MDQgNTM5cS0xMSA0IC00OC41IDUuNXQtNzYgM3QtODYgMTR0LTgwLjUgMzcuNXEtMTcwIDE0OCAtMzI1IDEzNXEtMjAgLTEgLTM4LjUgLTguNXQtMzEgLTE3dC0yMiAtMTl0LTEzLjUgLTE1LjVsLTQgLTdxLTE2IC0yNyAtNyAtNThsMjI0IC03MTlxOCAtMjcgMzIuNSAtNDB0NTAgLTR0MzggMzQuNXQzLjUgNTMuNWwtNTkgMTkxcTE3IDEzIDM5IDE5LjV0MzkuNSA3LjV0NDAgLTN0MzQuNSAtNy41dDMxIC0xMHQyMCAtNi41CnE1IC0yIDMyLjUgLTE1dDYwLjUgLTI3dDc1IC0zMHQ4MC41IC0yMi41dDcxIC00LjV0NTIgMjMuNXQxOS41IDYyLjVxMCA5MiAtMjYgMTkxdC02MS41IDE2Mi41dC02NC41IDczLjV6TTUwMCAyNTNxLTIgMSAtMTUgNC41dC0yMiA1LjV0LTI1IDV0LTI5LjUgM3QtMjkuNSAtMS41dC0zMC41IC03dC0yNi41IC0xNC41bC0xMTUgMzcycTg1IDkgMjU5IC0xMDhxMzMgLTE4IDkwIC0zMC41dDExMSAtMTguNXQ2MSAtOHEzNiAtMTAgNzMuNSAtOTIKdDM3LjUgLTE2N3EwIC0zMyAtMzIgLTQwdC04MC41IDcuNXQtOTUgMzN0LTg3IDM3dC00NC41IDE5LjV6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDYiIHVuaWNvZGU9IiYjeGU2NDY7IiAKZD0iTTk0OSA1NDV2MnEwIDMgLTEgNWwtNzYgMTc1cS0xMCAyOCAtMzYgNDV0LTU5IDE3aC01MzFxLTMzIDAgLTU4IC0xNnQtMzQgLTQ1bC04MSAtMTc4cS0xIC0xIC0yIC00cS04IC0yNyAtOCAtNTZxMCAtNDkgMjUgLTkxdDY5IC02NXYwdjBxMzYgLTE5IDgzIC0xOXE4MyAwIDEzNiA2M3E1MiAtNjIgMTM1IC02M3E4MSAxIDEzNCA2M3E1MyAtNjIgMTM2IC02MnE0OCAwIDg1IDIwcTQyIDIzIDY3IDY0LjV0MjUgOTAuNXEwIDI4IC05IDU0djB6Ck04NTkgMjg5cS0xNCAwIC0yMyAtOS41dC05IC0yMi41di0xOTRxMCAtNyAtNS41IC0xMi41dC0xMy41IC01LjVoLTYwN3EtOCAwIC0xMyA1LjV0LTUgMTIuNXYxOTBxMCAxMyAtOS41IDIyLjV0LTIzLjUgOS41cS0xMyAwIC0yMi41IC05LjV0LTkuNSAtMjIuNXYtMTkwcTAgLTM0IDI0LjUgLTU4dDU4LjUgLTI0aDYwOHEzNCAwIDU4IDI0dDI0IDU4djE5NHEwIDEzIC05LjUgMjIuNXQtMjIuNSA5LjV2MHpNNzg0IDUxMGgtNTQ2CnEtMTMgMCAtMjQgMTN0LTExIDI4dDExIDI4dDI0IDEzaDU0NnExNCAwIDI1IC0xM3QxMSAtMjh0LTExIC0yOHQtMjUgLTEzdjB6TTc4NCA1MTB6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDciIHVuaWNvZGU9IiYjeGU2NDc7IiAKZD0iTTUxMiA4OTZxLTEzOSAwIC0yNTcgLTY4LjV0LTE4Ni41IC0xODYuNXQtNjguNSAtMjU3dDY4LjUgLTI1N3QxODYuNSAtMTg2LjV0MjU3IC02OC41dDI1NyA2OC41dDE4Ni41IDE4Ni41dDY4LjUgMjU3dC02OC41IDI1N3QtMTg2LjUgMTg2LjV0LTI1NyA2OC41ek0yNzAgMjg5cS0zOSAwIC02NyAyOHQtMjggNjd0MjggNjd0NjcuNSAyOHQ2NyAtMjh0MjcuNSAtNjd0LTI3LjUgLTY3dC02Ny41IC0yOHpNNTEyIDI4OXEtMzkgMCAtNjcgMjgKdC0yOCA2N3QyOCA2N3Q2NyAyOHQ2NyAtMjh0MjggLTY3dC0yOCAtNjd0LTY3IC0yOHpNNzU0IDI4OXEtNDAgMCAtNjcuNSAyOHQtMjcuNSA2N3QyNy41IDY3dDY3IDI4dDY3LjUgLTI4dDI4IC02N3QtMjggLTY3dC02NyAtMjh6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NDgiIHVuaWNvZGU9IiYjeGU2NDg7IiAKZD0iTTgzMiAzMHEwIC0zMyAtMjMgLTU2dC01NSAtMjNoLTQ2OXEtMzMgMCAtNTUuNSAyM3QtMjIuNSA1NnY3MDhxMCAzMyAyMi41IDU2dDU1LjUgMjNoMjg0cTExIC0yIDE3IC05dDggLTIwdDIuNSAtMjEuNXQwLjUgLTI2LjV2LTEyMHEwIC0xNiAxMS41IC0yNy41dDI3LjUgLTExLjVoMTE4cTE5IDAgMjkgLTF0MjMuNSAtNHQxOS41IC0xMS41dDYgLTIyLjV2LTUxMnpNODAzIDczMGwtMjkgMjlsLTI5IDI5cS01OCA2MCAtODguNSA4NAp0LTU5LjUgMjRoLTMxMnEtNjUgMCAtMTExIC00NnQtNDYgLTExMnYtNzA4cTAgLTY2IDQ2IC0xMTJ0MTExIC00Nmg0NjlxNjQgMCAxMTAgNDZ0NDYgMTEydjU1MXEwIDI5IC0yNCA2MHQtODMgODl6TTM2MyA0NjNoLTc4di03OWg3OHY3OXpNMzYzIDMwNWgtNzh2LTc5aDc4djc5ek0zNjMgMTQ4aC03OHYtNzloNzh2Nzl6TTc1NCA0NjNoLTMxM3YtNzloMzEzdjc5ek03NTQgMzA1aC0zMTN2LTc5aDMxM3Y3OXpNNzU0IDE0OGgtMzEzdi03OWgzMTMKdjc5ek0zMjQgNjk5cS0xNiAwIC0yNy41IC0xMS41dC0xMS41IC0yNy41di00MHEwIC0xNiAxMS41IC0yNy41dDI3LjUgLTExLjVoMjA2cS0xMSAxOSAtMTEgMzl2NzloLTE5NXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTY0OSIgdW5pY29kZT0iJiN4ZTY0OTsiIApkPSJNNTEyIDg5MXEtMTAzIDAgLTE5Ny41IC00MC41dC0xNjIuNSAtMTA4LjV0LTEwOC41IC0xNjIuNXQtNDAuNSAtMTk4dDQwLjUgLTE5OHQxMDguNSAtMTYyLjV0MTYyLjUgLTEwOC41dDE5OCAtNDAuNXQxOTcuNSA0MC41dDE2Mi41IDEwOC41dDEwOC41IDE2Mi41dDQwIDE5OHQtNDAgMTk4dC0xMDguNSAxNjIuNXQtMTYyLjUgMTA4LjV0LTE5OCA0MC41ek01NDIgMTE2cS0xNyAtMTYgLTQwIC0xNnQtNDAgMTV0LTE3IDQzCnEwIDIzIDE2LjUgMzkuNXQ0MC41IDE2LjV0NDAuNSAtMTYuNXQxNi41IC0zOS41cTAgLTI3IC0xNyAtNDJ6TTY4MiA0NjZxLTEzIC0yNCAtMzEgLTQxLjV0LTY0IC01OS41cS0xMyAtMTIgLTIwLjUgLTIwLjV0LTExLjUgLTE2dC02IC0xNXQtNiAtMjUuNXEtNyAtMzkgLTQ1IC0zOXEtMjAgMCAtMzMgMTIuNXQtMTMgMzcuNXEwIDMyIDkuNSA1NS41dDI2IDQxdDQzLjUgNDEuNXEyNSAyMSAzNS41IDMxLjV0MTggMjR0Ny41IDI4LjUKcTAgMzAgLTIyLjUgNTF0LTU4LjUgMjFxLTQxIDAgLTYwLjUgLTIxdC0zMy41IC02MnEtMTMgLTQyIC00OSAtNDJxLTIxIDAgLTM1LjUgMTV0LTE0LjUgMzJxMCAzNiAyMyA3Mi41dDY3IDYxdDEwMyAyNC41cTU1IDAgOTcgLTIwLjV0NjQuNSAtNTV0MjIuNSAtNzUuNXEwIC0zMiAtMTMgLTU2eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjRBIiB1bmljb2RlPSImI3hlNjRhOyIgCmQ9Ik02NDAgLTY0cTI3IDAgNDUuNSAxOC41dDE4LjUgNDUuNXQtMTguNSA0NS41dC00NS41IDE4LjV0LTQ1LjUgLTE4LjV0LTE4LjUgLTQ1LjV0MTguNSAtNDUuNXQ0NS41IC0xOC41djB2MHYwdjB2MHYwek0zODQgLTY0cTI3IDAgNDUuNSAxOC41dDE4LjUgNDUuNXQtMTguNSA0NS41dC00NS41IDE4LjV0LTQ1LjUgLTE4LjV0LTE4LjUgLTQ1LjV0MTguNSAtNDUuNXQ0NS41IC0xOC41djB2MHYwdjB2MHYwek02NDAgMTkycTI3IDAgNDUuNSAxOC41CnQxOC41IDQ1LjV0LTE4LjUgNDUuNXQtNDUuNSAxOC41dC00NS41IC0xOC41dC0xOC41IC00NS41dDE4LjUgLTQ1LjV0NDUuNSAtMTguNXYwdjB2MHYwdjB2MHpNMzg0IDE5MnEyNyAwIDQ1LjUgMTguNXQxOC41IDQ1LjV0LTE4LjUgNDUuNXQtNDUuNSAxOC41dC00NS41IC0xOC41dC0xOC41IC00NS41dDE4LjUgLTQ1LjV0NDUuNSAtMTguNXYwdjB2MHYwdjB2MHpNNjQwIDQ0OHEyNyAwIDQ1LjUgMTguNXQxOC41IDQ1LjV0LTE4LjUgNDUuNQp0LTQ1LjUgMTguNXQtNDUuNSAtMTguNXQtMTguNSAtNDUuNXQxOC41IC00NS41dDQ1LjUgLTE4LjV2MHYwdjB2MHYwdjB6TTM4NCA0NDhxMjcgMCA0NS41IDE4LjV0MTguNSA0NS41dC0xOC41IDQ1LjV0LTQ1LjUgMTguNXQtNDUuNSAtMTguNXQtMTguNSAtNDUuNXQxOC41IC00NS41dDQ1LjUgLTE4LjV2MHYwdjB2MHYwdjB6TTY0MCA3MDRxMjcgMCA0NS41IDE4LjV0MTguNSA0NS41dC0xOC41IDQ1LjV0LTQ1LjUgMTguNXQtNDUuNSAtMTguNQp0LTE4LjUgLTQ1LjV0MTguNSAtNDUuNXQ0NS41IC0xOC41djB2MHYwdjB2MHYwek0zODQgNzA0cTI3IDAgNDUuNSAxOC41dDE4LjUgNDUuNXQtMTguNSA0NS41dC00NS41IDE4LjV0LTQ1LjUgLTE4LjV0LTE4LjUgLTQ1LjV0MTguNSAtNDUuNXQ0NS41IC0xOC41djB2MHYwdjB2MHYweiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjRCIiB1bmljb2RlPSImI3hlNjRiOyIgCmQ9Ik04NDIgMzQxcTMgMjUgMyA0M3QtMyA0M2w5NCA3NHExNCAxMSA1IDI4bC04OSAxNTRxLTEwIDE2IC0yNyA5bC0xMTEgLTQ0cS0zNSAyNyAtNzUgNDRsLTE2IDExN3EtMiA4IC04IDEzLjV0LTE0IDUuNWgtMTc4cS04IDAgLTE0IC01LjV0LTggLTEzLjVsLTE2IC0xMTdxLTQxIC0xNyAtNzUgLTQ0bC0xMTEgNDRxLTE4IDcgLTI3IC05bC04OSAtMTU0cS05IC0xNiA1IC0yOGw5NCAtNzRxLTMgLTI1IC0zIC00M3QzIC00M2wtOTQgLTc0CnEtMTQgLTExIC01IC0yOGw4OSAtMTU0cTEwIC0xNiAyNyAtOWwxMTEgNDRxMzUgLTI3IDc1IC00NGwxNiAtMTE3cTIgLTggOCAtMTMuNXQxNCAtNS41aDE3OHE4IDAgMTQgNS41dDggMTMuNWwxNiAxMTdxNDEgMTcgNzUgNDRsMTExIC00NHExNyAtNyAyNyA5bDg5IDE1NHE5IDE2IC02IDI4ek01MTEuNSAyMjlxLTY0LjUgMCAtMTA5LjUgNDUuNXQtNDUgMTA5LjV0NDUgMTA5LjV0MTA5LjUgNDUuNXQxMTAgLTQ1LjV0NDUuNSAtMTA5LjUKdC00NS41IC0xMDkuNXQtMTEwIC00NS41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjRDIiB1bmljb2RlPSImI3hlNjRjOyIgCmQ9Ik01MTIgODMycS0xODUgMCAtMzE2LjUgLTEzMS41dC0xMzEuNSAtMzE2LjV0MTMxLjUgLTMxNi41dDMxNi41IC0xMzEuNXQzMTYuNSAxMzEuNXQxMzEuNSAzMTYuNXQtMTMxLjUgMzE2LjV0LTMxNi41IDEzMS41ek02NDEgMzIwcTEzIDAgMjIuNSAtOS41dDkuNSAtMjIuNXQtOS41IC0yMi41dC0yMi41IC05LjVoLTk3di05NXEwIC0xMyAtOS41IC0yMi41dC0yMi41IC05LjV0LTIyLjUgOS41dC05LjUgMjIuNXY5NWgtOTUKcS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV0OS41IDIyLjV0MjIuNSA5LjVoOTV2NjRoLTk1cS0xMyAwIC0yMi41IDkuNXQtOS41IDIyLjV0OS41IDIyLjV0MjIuNSA5LjVoOTV2MjBsLTExOCAxMThxLTEwIDEwIC05LjUgMjN0OS41IDIyLjV0MjIuNSA5LjV0MjIuNSAtOWwxMDggLTEwOGwxMDEgMTA3cTEwIDEwIDIzIDEwdDIyLjUgLTl0MTAgLTIydC05LjUgLTIzbC0xMTggLTEyNHYtMTVoOTdxMTMgMCAyMi41IC05LjV0OS41IC0yMi41CnQtOS41IC0yMi41dC0yMi41IC05LjVoLTk3di02NGg5N3oiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTY0RCIgdW5pY29kZT0iJiN4ZTY0ZDsiIApkPSJNODI4IDMxMnEtMjMgMTE0IC0xMTEgMTg5dC0yMDUgNzVxLTkyIDAgLTE2Ny41IC00OHQtMTE0LjUgLTEyOHEtOTkgLTEzIC0xNjQuNSAtODcuNXQtNjUuNSAtMTc2LjVxMCAtMTA5IDc1IC0xODYuNXQxODEgLTc3LjVoNTU1cTg5IDAgMTUxIDY0dDYyIDE1NnEwIDg1IC01OCAxNDl0LTEzOCA3MXpNNTc2IDY0cTAgLTI3IC0xOC41IC00NS41dC00NS41IC0xOC41aC02NHEtMjcgMCAtNDUuNSAxOXQtMTguNSA0NXYxMjVsLTk2IDIKcS0yNiAwIC0zMiAxMy41dDEzIDMyLjVsMTY2IDE2NnExOSAxOSA0NSAxOXQ0NSAtMTlsMTY2IC0xNjZxMTkgLTE5IDEzIC0zMnQtMzIgLTEzaC05NnYtMTI4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjRFIiB1bmljb2RlPSImI3hlNjRlOyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNNTEyIC0xMjdxMTAzIDAgMTk2LjUgMzkuNXQxNjIgMTA2dDEwOS41IDE1OXQ0NCAxOTQuNXEtMyAtMTE5IC01OSAtMjE5dC0xNTEgLTE1OHQtMjA2IC01OHEtMTEzIDAgLTIwOC41IDYwdC0xNTEgMTYzdC01NS41IDIyNHEwIDQwIC0yOC41IDY4dC02OCAyOHQtNjcuNSAtMjh0LTI4IC02OHEwIC0xMDQgNDAuNSAtMTk4LjV0MTA5IC0xNjN0MTYzIC0xMDl0MTk4LjUgLTQwLjV6TTUxMiA4OTZxLTEwMiAwIC0xOTUuNSAtMzkuNQp0LTE2MiAtMTA2dC0xMTAgLTE1OXQtNDMuNSAtMTk1LjVxMyAxMTkgNTkgMjE5LjV0MTUwLjUgMTU4LjV0MjA2LjUgNTh0MjA4IC02MHQxNTEuNSAtMTYzdDU1LjUgLTIyNXEwIC0zOSAyOCAtNjd0NjggLTI4dDY4IDI4dDI4IDY3cTAgMTA1IC00MC41IDE5OS41dC0xMDkgMTYzdC0xNjMgMTA5dC0xOTkuNSA0MC41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjRGIiB1bmljb2RlPSImI3hlNjRmOyIgCmQ9Ik05NDQgLTEyMGgtMjg4cS0zMCAwIC01MSAyMS41dC0yMSA1MC41djI4OHEwIDMwIDIxIDUxdDUxIDIxaDI4OHEyOSAwIDUwLjUgLTIxdDIxLjUgLTUxdi0yODhxMCAtMjkgLTIxLjUgLTUwLjV0LTUwLjUgLTIxLjV6TTk0NCA0NTZoLTI4OHEtMzAgMCAtNTEgMjF0LTIxIDUxdjI4OHEwIDI5IDIxIDUwLjV0NTEgMjEuNWgyODhxMjkgMCA1MC41IC0yMS41dDIxLjUgLTUwLjV2LTI4OHEwIC0zMCAtMjEuNSAtNTF0LTUwLjUgLTIxegpNMzY4IC0xMjBoLTI4OHEtMjkgMCAtNTAuNSAyMS41dC0yMS41IDUwLjV2Mjg4cTAgMzAgMjEuNSA1MXQ1MC41IDIxaDI4OHEzMCAwIDUxIC0yMXQyMSAtNTF2LTI4OHEwIC0yOSAtMjEgLTUwLjV0LTUxIC0yMS41ek0zNjggNDU2aC0yODhxLTI5IDAgLTUwLjUgMjF0LTIxLjUgNTF2Mjg4cTAgMjkgMjEuNSA1MC41dDUwLjUgMjEuNWgyODhxMzAgMCA1MSAtMjEuNXQyMSAtNTAuNXYtMjg4cTAgLTMwIC0yMSAtNTF0LTUxIC0yMXoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTY1MCIgdW5pY29kZT0iJiN4ZTY1MDsiIGhvcml6LWFkdi14PSIxMDI1IiAKZD0iTTEwMjMgLTEyOGgtMTAyMnEwIDIgLTAuNSA4dC0wLjUgMTBxMCAxMDQgNDAuNSAxOTl0MTA5IDE2My41dDE2My41IDEwOXQxOTkgNDAuNXQxOTkgLTQwLjV0MTYzLjUgLTEwOXQxMDkgLTE2My41dDQwLjUgLTE5OXEwIC00IC0wLjUgLTEwdC0wLjUgLTh6TTY5NS41IDIxNS41cS0xMC41IDkuNSAtMjUuNSA5LjV0LTI2IC0xMGwtMTY5IC0xNThsLTI0IDIzcS0yNCAyMiAtNDkgNDRsLTI0IDIzcS0xMCAxMCAtMjUgOS41dC0yNiAtMTAKdC0xMC41IC0yMy41dDEwLjUgLTI0bDEyMiAtMTExcTExIC0xMCAyNiAtMTB0MjYgMTBsMTk0IDE4MHExMSAxMCAxMSAyNHQtMTAuNSAyMy41eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjUxIiB1bmljb2RlPSImI3hlNjUxOyIgCmQ9Ik04MjIgNTEzaC04MHEwIDk3IC02NSAxNjN0LTE2MCA2NnQtMTYwIC02NnQtNjUgLTE2M2gtODFxMCA3OCA0MC41IDE0OXQxMTIgMTE1LjV0MTUzIDQ0LjV0MTUzIC00NC41dDExMiAtMTE1LjV0NDAuNSAtMTQ5ek04NzAgMzgxcTAgMzMgLTIzLjUgNTd0LTU3LjUgMjRoLTUzOHEtMzMgMCAtNTYuNSAtMjR0LTIzLjUgLTU3di0zODJxMCAtMzQgMjMuNSAtNTcuNXQ1Ni41IC0yMy41aDUzOHEzNCAwIDU3LjUgMjMuNXQyMy41IDU3LjV2MzgyegpNNTg1IDgycTAgLTI1IC0xNy41IC00Mi41dC00Mi41IC0xNy41aC05cS0yNSAwIC00Mi41IDE3LjV0LTE3LjUgNDIuNXYxNjRxMCAyNSAxNy41IDQyLjV0NDIuNSAxNy41aDlxMjUgMCA0Mi41IC0xNy41dDE3LjUgLTQyLjV2LTE2NHoiIC8+CiAgICA8Z2x5cGggZ2x5cGgtbmFtZT0idW5pRTY1MiIgdW5pY29kZT0iJiN4ZTY1MjsiIApkPSJNOTIzIC0xMjhoLTMyNGgtMWgtNTA0cS0xOCAwIC0zMC41IDEyLjV0LTEyLjUgMzAuNXY5MzhxMCAxOCAxMi41IDMwLjV0MzAuNSAxMi41aDUwNHExNyAwIDI5LjUgLTEyLjV0MTIuNSAtMzAuNXYtMzQxaDI4M3EyMSAwIDM1LjUgLTExdDE0LjUgLTI2di01NjZxMCAtMTUgLTE0LjUgLTI2dC0zNS41IC0xMXpNNTEyIDY5MWgtMzMzdi03N2gzMzN2Nzd6TTUxMiA0ODZoLTMzM3YtNzZoMzMzdjc2ek01MTIgMjgyaC0zMzN2LTc3aDMzM3Y3N3oKTTg0NSAzNThoLTE3OXYtMTUzaDE3OXYxNTN6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NTMiIHVuaWNvZGU9IiYjeGU2NTM7IiAKZD0iTTYxNyAtMTI4aC0yMTZxLTYwIDAgLTkwIDAuNXQtNzcuNSAyLjV0LTcxIDYuNXQtNDkuNSAxMi41dC0zNi41IDIxLjV0LTEwLjUgMzEuNXYyMXEwIDkwIDQ1IDE2Ni41dDEyMiAxMjAuNXQxNjggNDRoMjE3cTkxIDAgMTY4LjUgLTQ0dDEyMiAtMTIwLjV0NDQuNSAtMTY2LjV2LTIxcTAgLTE0IC02IC0yNC41dC0yMC41IC0xOHQtMzAgLTEzdC00MiAtOXQtNDkgLTZ0LTU4IC0zdC02MiAtMXQtNjguNSAtMC41ek00OTguNSAzODQKcS0xMDcuNSAwIC0xODMuNSA3NXQtNzYgMTgxdDc2IDE4MXQxODMuNSA3NXQxODMuNSAtNzV0NzYgLTE4MXQtNzYgLTE4MXQtMTgzLjUgLTc1eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjU0IiB1bmljb2RlPSImI3hlNjU0OyIgaG9yaXotYWR2LXg9IjEwMjUiIApkPSJNMTA0IDU1M3EzMyAzMSA1NiAyMHQyMyAtNTd2LTE5OHEwIC00NyAtMjMuNSAtNTl0LTU3LjUgMThsLTY4IDYwcS0zMyAzMCAtMzQgNzN0MzIgNzR6TTkyMCA1NTNxLTMzIDMxIC01NS41IDIwdC0yMi41IC01N3YtMTk4cTAgLTQ3IDIzLjUgLTU5dDU2LjUgMThsNjggNjBxMzMgMzAgMzQgNzN0LTMyIDc0ek0xODMgNDg1aDY1OHYtMTQ4aC02NTh2MTQ4eiIgLz4KICAgIDxnbHlwaCBnbHlwaC1uYW1lPSJ1bmlFNjU1IiB1bmljb2RlPSImI3hlNjU1OyIgCmQ9Ik04NDYgMTc5aC05M3YtNDZoOTNxMTQgMCAyMy41IC0xMHQ5LjUgLTIzLjV0LTkuNSAtMjN0LTIzLjUgLTkuNWgtOTN2LTQ3cTAgLTE0IC05LjUgLTIzLjV0LTIzIC05LjV0LTIzIDkuNXQtOS41IDIzLjV2NDdoLTkzcS0xNCAwIC0yMy41IDkuNXQtOS41IDIzdDkuNSAyMy41dDIzLjUgMTBoOTN2NDZoLTkzcS0xNCAwIC0yMy41IDEwdC05LjUgMjMuNXQ5LjUgMjN0MjMuNSA5LjVoNDJsLTUyIDUycS05IDEwIC05IDIzLjV0OS41IDIzCnQyMyA5LjV0MjMuNSAtOWw4NiAtODdsODcgODdxMTAgOSAyMy41IDl0MjMgLTkuNXQ5LjUgLTIzdC0xMCAtMjMuNWwtNTIgLTUyaDQ3cTE0IDAgMjMuNSAtOS41dDkuNSAtMjN0LTkuNSAtMjMuNXQtMjMuNSAtMTB6TTk0OSAyNzVxLTE5IDQ1IC01NCA4MHQtODAgNTRxLTQ3IDIwIC05OCAyMHQtOTcgLTIwcS00NSAtMTkgLTgwIC01NHQtNTQgLTgwcS0yMCAtNDcgLTIwIC05OHQyMCAtOThxMTkgLTQ1IDU0IC03OS41dDgwIC01NC41CnE0NiAtMTkgOTcgLTE5dDk4IDE5cTQ1IDIwIDgwIDU0LjV0NTQgNzkuNXExOSA0NyAxOSA5OHQtMTkgOTh6TTY2OCA3MTZoLTI1OXEtMjIgMCAtMzcuNSAtMTUuNXQtMTUuNSAtMzh0MTUuNSAtMzh0MzcuNSAtMTUuNWgyNTlxMjIgMCAzNy41IDE1LjV0MTUuNSAzOHQtMTUuNSAzOHQtMzcuNSAxNS41ek0yMzAgNzE2aC03MXEtMjMgMCAtMzguNSAtMTUuNXQtMTUuNSAtMzh0MTUuNSAtMzh0MzguNSAtMTUuNWg3MXEyMyAwIDM4LjUgMTUuNQp0MTUuNSAzOHQtMTUuNSAzOHQtMzguNSAxNS41ek0xNjEgMzkzaDM0MXE0MiA0MiA5NyA2NXE1MiAyMyAxMDkgMjRxLTE2IDE5IC00MCAxOWgtNTA3cS0yMiAwIC0zOCAtMTZ0LTE2IC0zOC41dDE2IC0zOHQzOCAtMTUuNXpNMTYxIDE3N2gyNTJxMCA1NiAxOSAxMDhoLTI3MXEtMjIgMCAtMzggLTE1LjV0LTE2IC0zOHQxNiAtMzguNXQzOCAtMTZ6TTk5OCA1OHEtMjMgLTU0IC02NSAtOTYuNXQtOTcgLTY1LjVxLTU3IC0yNCAtMTE5IC0yNAp0LTExOCAyNHEtMzAgMTMgLTU2IDMxaC00NzBxLTMwIDAgLTUxLjUgMjF0LTIxLjUgNTF2ODI1cTAgMzAgMjEgNTF0NTEgMjFoNjAxcTE1MyAwIDE1MyAtMTM3di0yOTdsMTAgLTRxNTUgLTIzIDk3IC02NXQ2NSAtOTdxMjQgLTU3IDI0IC0xMTl0LTI0IC0xMTl6IiAvPgogICAgPGdseXBoIGdseXBoLW5hbWU9InVuaUU2NTYiIHVuaWNvZGU9IiYjeGU2NTY7IiBob3Jpei1hZHYteD0iMTEwNyIgCmQ9Ik04NjQgLTExOWwtOTUgMjIxaC00MjlsLTk1IC0yMjFoLTI0M2w0NDIgMTAyM2gyMjFsNDQyIC0xMDIzaC0yNDN6TTU1NSA2MDBsLTEyOCAtMjk3aDI1NnoiIC8+CiAgPC9mb250Pgo8L2RlZnM+PC9zdmc+Cg=="
/***/ },
/* 8 */
/***/ function(module, exports, __webpack_require__) {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var stylesInDom = {},
memoize = function(fn) {
var memo;
return function () {
if (typeof memo === "undefined") memo = fn.apply(this, arguments);
return memo;
};
},
isOldIE = memoize(function() {
return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase());
}),
getHeadElement = memoize(function () {
return document.head || document.getElementsByTagName("head")[0];
}),
singletonElement = null,
singletonCounter = 0,
styleElementsInsertedAtTop = [];
module.exports = function(list, options) {
if(false) {
if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
}
options = options || {};
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
// tags it will allow on a page
if (typeof options.singleton === "undefined") options.singleton = isOldIE();
// By default, add <style> tags to the bottom of <head>.
if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
var styles = listToStyles(list);
addStylesToDom(styles, options);
return function update(newList) {
var mayRemove = [];
for(var i = 0; i < styles.length; i++) {
var item = styles[i];
var domStyle = stylesInDom[item.id];
domStyle.refs--;
mayRemove.push(domStyle);
}
if(newList) {
var newStyles = listToStyles(newList);
addStylesToDom(newStyles, options);
}
for(var i = 0; i < mayRemove.length; i++) {
var domStyle = mayRemove[i];
if(domStyle.refs === 0) {
for(var j = 0; j < domStyle.parts.length; j++)
domStyle.parts[j]();
delete stylesInDom[domStyle.id];
}
}
};
}
function addStylesToDom(styles, options) {
for(var i = 0; i < styles.length; i++) {
var item = styles[i];
var domStyle = stylesInDom[item.id];
if(domStyle) {
domStyle.refs++;
for(var j = 0; j < domStyle.parts.length; j++) {
domStyle.parts[j](item.parts[j]);
}
for(; j < item.parts.length; j++) {
domStyle.parts.push(addStyle(item.parts[j], options));
}
} else {
var parts = [];
for(var j = 0; j < item.parts.length; j++) {
parts.push(addStyle(item.parts[j], options));
}
stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
}
}
}
function listToStyles(list) {
var styles = [];
var newStyles = {};
for(var i = 0; i < list.length; i++) {
var item = list[i];
var id = item[0];
var css = item[1];
var media = item[2];
var sourceMap = item[3];
var part = {css: css, media: media, sourceMap: sourceMap};
if(!newStyles[id])
styles.push(newStyles[id] = {id: id, parts: [part]});
else
newStyles[id].parts.push(part);
}
return styles;
}
function insertStyleElement(options, styleElement) {
var head = getHeadElement();
var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
if (options.insertAt === "top") {
if(!lastStyleElementInsertedAtTop) {
head.insertBefore(styleElement, head.firstChild);
} else if(lastStyleElementInsertedAtTop.nextSibling) {
head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
} else {
head.appendChild(styleElement);
}
styleElementsInsertedAtTop.push(styleElement);
} else if (options.insertAt === "bottom") {
head.appendChild(styleElement);
} else {
throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
}
}
function removeStyleElement(styleElement) {
styleElement.parentNode.removeChild(styleElement);
var idx = styleElementsInsertedAtTop.indexOf(styleElement);
if(idx >= 0) {
styleElementsInsertedAtTop.splice(idx, 1);
}
}
function createStyleElement(options) {
var styleElement = document.createElement("style");
styleElement.type = "text/css";
insertStyleElement(options, styleElement);
return styleElement;
}
function createLinkElement(options) {
var linkElement = document.createElement("link");
linkElement.rel = "stylesheet";
insertStyleElement(options, linkElement);
return linkElement;
}
function addStyle(obj, options) {
var styleElement, update, remove;
if (options.singleton) {
var styleIndex = singletonCounter++;
styleElement = singletonElement || (singletonElement = createStyleElement(options));
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
} else if(obj.sourceMap &&
typeof URL === "function" &&
typeof URL.createObjectURL === "function" &&
typeof URL.revokeObjectURL === "function" &&
typeof Blob === "function" &&
typeof btoa === "function") {
styleElement = createLinkElement(options);
update = updateLink.bind(null, styleElement);
remove = function() {
removeStyleElement(styleElement);
if(styleElement.href)
URL.revokeObjectURL(styleElement.href);
};
} else {
styleElement = createStyleElement(options);
update = applyToTag.bind(null, styleElement);
remove = function() {
removeStyleElement(styleElement);
};
}
update(obj);
return function updateStyle(newObj) {
if(newObj) {
if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
return;
update(obj = newObj);
} else {
remove();
}
};
}
var replaceText = (function () {
var textStore = [];
return function (index, replacement) {
textStore[index] = replacement;
return textStore.filter(Boolean).join('\n');
};
})();
function applyToSingletonTag(styleElement, index, remove, obj) {
var css = remove ? "" : obj.css;
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = replaceText(index, css);
} else {
var cssNode = document.createTextNode(css);
var childNodes = styleElement.childNodes;
if (childNodes[index]) styleElement.removeChild(childNodes[index]);
if (childNodes.length) {
styleElement.insertBefore(cssNode, childNodes[index]);
} else {
styleElement.appendChild(cssNode);
}
}
}
function applyToTag(styleElement, obj) {
var css = obj.css;
var media = obj.media;
if(media) {
styleElement.setAttribute("media", media)
}
if(styleElement.styleSheet) {
styleElement.styleSheet.cssText = css;
} else {
while(styleElement.firstChild) {
styleElement.removeChild(styleElement.firstChild);
}
styleElement.appendChild(document.createTextNode(css));
}
}
function updateLink(linkElement, obj) {
var css = obj.css;
var sourceMap = obj.sourceMap;
if(sourceMap) {
// http://stackoverflow.com/a/26603875
css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
}
var blob = new Blob([css], { type: "text/css" });
var oldSrc = linkElement.href;
linkElement.href = URL.createObjectURL(blob);
if(oldSrc)
URL.revokeObjectURL(oldSrc);
}
/***/ },
/* 9 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process, global) {/*!
* Vue.js v2.1.8
* (c) 2014-2016 Evan You
* Released under the MIT License.
*/
'use strict';
/* */
/**
* Convert a value to a string that is actually rendered.
*/
function _toString (val) {
return val == null
? ''
: typeof val === 'object'
? JSON.stringify(val, null, 2)
: String(val)
}
/**
* Convert a input value to a number for persistence.
* If the conversion fails, return original string.
*/
function toNumber (val) {
var n = parseFloat(val, 10);
return (n || n === 0) ? n : val
}
/**
* Make a map and return a function for checking if a key
* is in that map.
*/
function makeMap (
str,
expectsLowerCase
) {
var map = Object.create(null);
var list = str.split(',');
for (var i = 0; i < list.length; i++) {
map[list[i]] = true;
}
return expectsLowerCase
? function (val) { return map[val.toLowerCase()]; }
: function (val) { return map[val]; }
}
/**
* Check if a tag is a built-in tag.
*/
var isBuiltInTag = makeMap('slot,component', true);
/**
* Remove an item from an array
*/
function remove$1 (arr, item) {
if (arr.length) {
var index = arr.indexOf(item);
if (index > -1) {
return arr.splice(index, 1)
}
}
}
/**
* Check whether the object has the property.
*/
var hasOwnProperty = Object.prototype.hasOwnProperty;
function hasOwn (obj, key) {
return hasOwnProperty.call(obj, key)
}
/**
* Check if value is primitive
*/
function isPrimitive (value) {
return typeof value === 'string' || typeof value === 'number'
}
/**
* Create a cached version of a pure function.
*/
function cached (fn) {
var cache = Object.create(null);
return (function cachedFn (str) {
var hit = cache[str];
return hit || (cache[str] = fn(str))
})
}
/**
* Camelize a hyphen-delmited string.
*/
var camelizeRE = /-(\w)/g;
var camelize = cached(function (str) {
return str.replace(camelizeRE, function (_, c) { return c ? c.toUpperCase() : ''; })
});
/**
* Capitalize a string.
*/
var capitalize = cached(function (str) {
return str.charAt(0).toUpperCase() + str.slice(1)
});
/**
* Hyphenate a camelCase string.
*/
var hyphenateRE = /([^-])([A-Z])/g;
var hyphenate = cached(function (str) {
return str
.replace(hyphenateRE, '$1-$2')
.replace(hyphenateRE, '$1-$2')
.toLowerCase()
});
/**
* Simple bind, faster than native
*/
function bind$1 (fn, ctx) {
function boundFn (a) {
var l = arguments.length;
return l
? l > 1
? fn.apply(ctx, arguments)
: fn.call(ctx, a)
: fn.call(ctx)
}
// record original fn length
boundFn._length = fn.length;
return boundFn
}
/**
* Convert an Array-like object to a real Array.
*/
function toArray (list, start) {
start = start || 0;
var i = list.length - start;
var ret = new Array(i);
while (i--) {
ret[i] = list[i + start];
}
return ret
}
/**
* Mix properties into target object.
*/
function extend (to, _from) {
for (var key in _from) {
to[key] = _from[key];
}
return to
}
/**
* Quick object check - this is primarily used to tell
* Objects from primitive values when we know the value
* is a JSON-compliant type.
*/
function isObject (obj) {
return obj !== null && typeof obj === 'object'
}
/**
* Strict object type check. Only returns true
* for plain JavaScript objects.
*/
var toString = Object.prototype.toString;
var OBJECT_STRING = '[object Object]';
function isPlainObject (obj) {
return toString.call(obj) === OBJECT_STRING
}
/**
* Merge an Array of Objects into a single Object.
*/
function toObject (arr) {
var res = {};
for (var i = 0; i < arr.length; i++) {
if (arr[i]) {
extend(res, arr[i]);
}
}
return res
}
/**
* Perform no operation.
*/
function noop () {}
/**
* Always return false.
*/
var no = function () { return false; };
/**
* Return same value
*/
var identity = function (_) { return _; };
/**
* Generate a static keys string from compiler modules.
*/
function genStaticKeys (modules) {
return modules.reduce(function (keys, m) {
return keys.concat(m.staticKeys || [])
}, []).join(',')
}
/**
* Check if two values are loosely equal - that is,
* if they are plain objects, do they have the same shape?
*/
function looseEqual (a, b) {
var isObjectA = isObject(a);
var isObjectB = isObject(b);
if (isObjectA && isObjectB) {
return JSON.stringify(a) === JSON.stringify(b)
} else if (!isObjectA && !isObjectB) {
return String(a) === String(b)
} else {
return false
}
}
function looseIndexOf (arr, val) {
for (var i = 0; i < arr.length; i++) {
if (looseEqual(arr[i], val)) { return i }
}
return -1
}
/* */
var config = {
/**
* Option merge strategies (used in core/util/options)
*/
optionMergeStrategies: Object.create(null),
/**
* Whether to suppress warnings.
*/
silent: false,
/**
* Whether to enable devtools
*/
devtools: process.env.NODE_ENV !== 'production',
/**
* Error handler for watcher errors
*/
errorHandler: null,
/**
* Ignore certain custom elements
*/
ignoredElements: [],
/**
* Custom user key aliases for v-on
*/
keyCodes: Object.create(null),
/**
* Check if a tag is reserved so that it cannot be registered as a
* component. This is platform-dependent and may be overwritten.
*/
isReservedTag: no,
/**
* Check if a tag is an unknown element.
* Platform-dependent.
*/
isUnknownElement: no,
/**
* Get the namespace of an element
*/
getTagNamespace: noop,
/**
* Parse the real tag name for the specific platform.
*/
parsePlatformTagName: identity,
/**
* Check if an attribute must be bound using property, e.g. value
* Platform-dependent.
*/
mustUseProp: no,
/**
* List of asset types that a component can own.
*/
_assetTypes: [
'component',
'directive',
'filter'
],
/**
* List of lifecycle hooks.
*/
_lifecycleHooks: [
'beforeCreate',
'created',
'beforeMount',
'mounted',
'beforeUpdate',
'updated',
'beforeDestroy',
'destroyed',
'activated',
'deactivated'
],
/**
* Max circular updates allowed in a scheduler flush cycle.
*/
_maxUpdateCount: 100
};
/* */
/**
* Check if a string starts with $ or _
*/
function isReserved (str) {
var c = (str + '').charCodeAt(0);
return c === 0x24 || c === 0x5F
}
/**
* Define a property.
*/
function def (obj, key, val, enumerable) {
Object.defineProperty(obj, key, {
value: val,
enumerable: !!enumerable,
writable: true,
configurable: true
});
}
/**
* Parse simple path.
*/
var bailRE = /[^\w.$]/;
function parsePath (path) {
if (bailRE.test(path)) {
return
} else {
var segments = path.split('.');
return function (obj) {
for (var i = 0; i < segments.length; i++) {
if (!obj) { return }
obj = obj[segments[i]];
}
return obj
}
}
}
/* */
/* globals MutationObserver */
// can we use __proto__?
var hasProto = '__proto__' in {};
// Browser environment sniffing
var inBrowser = typeof window !== 'undefined';
var UA = inBrowser && window.navigator.userAgent.toLowerCase();
var isIE = UA && /msie|trident/.test(UA);
var isIE9 = UA && UA.indexOf('msie 9.0') > 0;
var isEdge = UA && UA.indexOf('edge/') > 0;
var isAndroid = UA && UA.indexOf('android') > 0;
var isIOS = UA && /iphone|ipad|ipod|ios/.test(UA);
// this needs to be lazy-evaled because vue may be required before
// vue-server-renderer can set VUE_ENV
var _isServer;
var isServerRendering = function () {
if (_isServer === undefined) {
/* istanbul ignore if */
if (!inBrowser && typeof global !== 'undefined') {
// detect presence of vue-server-renderer and avoid
// Webpack shimming the process
_isServer = global['process'].env.VUE_ENV === 'server';
} else {
_isServer = false;
}
}
return _isServer
};
// detect devtools
var devtools = inBrowser && window.__VUE_DEVTOOLS_GLOBAL_HOOK__;
/* istanbul ignore next */
function isNative (Ctor) {
return /native code/.test(Ctor.toString())
}
/**
* Defer a task to execute it asynchronously.
*/
var nextTick = (function () {
var callbacks = [];
var pending = false;
var timerFunc;
function nextTickHandler () {
pending = false;
var copies = callbacks.slice(0);
callbacks.length = 0;
for (var i = 0; i < copies.length; i++) {
copies[i]();
}
}
// the nextTick behavior leverages the microtask queue, which can be accessed
// via either native Promise.then or MutationObserver.
// MutationObserver has wider support, however it is seriously bugged in
// UIWebView in iOS >= 9.3.3 when triggered in touch event handlers. It
// completely stops working after triggering a few times... so, if native
// Promise is available, we will use it:
/* istanbul ignore if */
if (typeof Promise !== 'undefined' && isNative(Promise)) {
var p = Promise.resolve();
var logError = function (err) { console.error(err); };
timerFunc = function () {
p.then(nextTickHandler).catch(logError);
// in problematic UIWebViews, Promise.then doesn't completely break, but
// it can get stuck in a weird state where callbacks are pushed into the
// microtask queue but the queue isn't being flushed, until the browser
// needs to do some other work, e.g. handle a timer. Therefore we can
// "force" the microtask queue to be flushed by adding an empty timer.
if (isIOS) { setTimeout(noop); }
};
} else if (typeof MutationObserver !== 'undefined' && (
isNative(MutationObserver) ||
// PhantomJS and iOS 7.x
MutationObserver.toString() === '[object MutationObserverConstructor]'
)) {
// use MutationObserver where native Promise is not available,
// e.g. PhantomJS IE11, iOS7, Android 4.4
var counter = 1;
var observer = new MutationObserver(nextTickHandler);
var textNode = document.createTextNode(String(counter));
observer.observe(textNode, {
characterData: true
});
timerFunc = function () {
counter = (counter + 1) % 2;
textNode.data = String(counter);
};
} else {
// fallback to setTimeout
/* istanbul ignore next */
timerFunc = function () {
setTimeout(nextTickHandler, 0);
};
}
return function queueNextTick (cb, ctx) {
var _resolve;
callbacks.push(function () {
if (cb) { cb.call(ctx); }
if (_resolve) { _resolve(ctx); }
});
if (!pending) {
pending = true;
timerFunc();
}
if (!cb && typeof Promise !== 'undefined') {
return new Promise(function (resolve) {
_resolve = resolve;
})
}
}
})();
var _Set;
/* istanbul ignore if */
if (typeof Set !== 'undefined' && isNative(Set)) {
// use native Set when available.
_Set = Set;
} else {
// a non-standard Set polyfill that only works with primitive keys.
_Set = (function () {
function Set () {
this.set = Object.create(null);
}
Set.prototype.has = function has (key) {
return this.set[key] === true
};
Set.prototype.add = function add (key) {
this.set[key] = true;
};
Set.prototype.clear = function clear () {
this.set = Object.create(null);
};
return Set;
}());
}
var warn = noop;
var formatComponentName;
if (process.env.NODE_ENV !== 'production') {
var hasConsole = typeof console !== 'undefined';
warn = function (msg, vm) {
if (hasConsole && (!config.silent)) {
console.error("[Vue warn]: " + msg + " " + (
vm ? formatLocation(formatComponentName(vm)) : ''
));
}
};
formatComponentName = function (vm) {
if (vm.$root === vm) {
return 'root instance'
}
var name = vm._isVue
? vm.$options.name || vm.$options._componentTag
: vm.name;
return (
(name ? ("component <" + name + ">") : "anonymous component") +
(vm._isVue && vm.$options.__file ? (" at " + (vm.$options.__file)) : '')
)
};
var formatLocation = function (str) {
if (str === 'anonymous component') {
str += " - use the \"name\" option for better debugging messages.";
}
return ("\n(found in " + str + ")")
};
}
/* */
var uid$1 = 0;
/**
* A dep is an observable that can have multiple
* directives subscribing to it.
*/
var Dep = function Dep () {
this.id = uid$1++;
this.subs = [];
};
Dep.prototype.addSub = function addSub (sub) {
this.subs.push(sub);
};
Dep.prototype.removeSub = function removeSub (sub) {
remove$1(this.subs, sub);
};
Dep.prototype.depend = function depend () {
if (Dep.target) {
Dep.target.addDep(this);
}
};
Dep.prototype.notify = function notify () {
// stablize the subscriber list first
var subs = this.subs.slice();
for (var i = 0, l = subs.length; i < l; i++) {
subs[i].update();
}
};
// the current target watcher being evaluated.
// this is globally unique because there could be only one
// watcher being evaluated at any time.
Dep.target = null;
var targetStack = [];
function pushTarget (_target) {
if (Dep.target) { targetStack.push(Dep.target); }
Dep.target = _target;
}
function popTarget () {
Dep.target = targetStack.pop();
}
/*
* not type checking this file because flow doesn't play well with
* dynamically accessing methods on Array prototype
*/
var arrayProto = Array.prototype;
var arrayMethods = Object.create(arrayProto);[
'push',
'pop',
'shift',
'unshift',
'splice',
'sort',
'reverse'
]
.forEach(function (method) {
// cache original method
var original = arrayProto[method];
def(arrayMethods, method, function mutator () {
var arguments$1 = arguments;
// avoid leaking arguments:
// http://jsperf.com/closure-with-arguments
var i = arguments.length;
var args = new Array(i);
while (i--) {
args[i] = arguments$1[i];
}
var result = original.apply(this, args);
var ob = this.__ob__;
var inserted;
switch (method) {
case 'push':
inserted = args;
break
case 'unshift':
inserted = args;
break
case 'splice':
inserted = args.slice(2);
break
}
if (inserted) { ob.observeArray(inserted); }
// notify change
ob.dep.notify();
return result
});
});
/* */
var arrayKeys = Object.getOwnPropertyNames(arrayMethods);
/**
* By default, when a reactive property is set, the new value is
* also converted to become reactive. However when passing down props,
* we don't want to force conversion because the value may be a nested value
* under a frozen data structure. Converting it would defeat the optimization.
*/
var observerState = {
shouldConvert: true,
isSettingProps: false
};
/**
* Observer class that are attached to each observed
* object. Once attached, the observer converts target
* object's property keys into getter/setters that
* collect dependencies and dispatches updates.
*/
var Observer = function Observer (value) {
this.value = value;
this.dep = new Dep();
this.vmCount = 0;
def(value, '__ob__', this);
if (Array.isArray(value)) {
var augment = hasProto
? protoAugment
: copyAugment;
augment(value, arrayMethods, arrayKeys);
this.observeArray(value);
} else {
this.walk(value);
}
};
/**
* Walk through each property and convert them into
* getter/setters. This method should only be called when
* value type is Object.
*/
Observer.prototype.walk = function walk (obj) {
var keys = Object.keys(obj);
for (var i = 0; i < keys.length; i++) {
defineReactive$$1(obj, keys[i], obj[keys[i]]);
}
};
/**
* Observe a list of Array items.
*/
Observer.prototype.observeArray = function observeArray (items) {
for (var i = 0, l = items.length; i < l; i++) {
observe(items[i]);
}
};
// helpers
/**
* Augment an target Object or Array by intercepting
* the prototype chain using __proto__
*/
function protoAugment (target, src) {
/* eslint-disable no-proto */
target.__proto__ = src;
/* eslint-enable no-proto */
}
/**
* Augment an target Object or Array by defining
* hidden properties.
*/
/* istanbul ignore next */
function copyAugment (target, src, keys) {
for (var i = 0, l = keys.length; i < l; i++) {
var key = keys[i];
def(target, key, src[key]);
}
}
/**
* Attempt to create an observer instance for a value,
* returns the new observer if successfully observed,
* or the existing observer if the value already has one.
*/
function observe (value, asRootData) {
if (!isObject(value)) {
return
}
var ob;
if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {
ob = value.__ob__;
} else if (
observerState.shouldConvert &&
!isServerRendering() &&
(Array.isArray(value) || isPlainObject(value)) &&
Object.isExtensible(value) &&
!value._isVue
) {
ob = new Observer(value);
}
if (asRootData && ob) {
ob.vmCount++;
}
return ob
}
/**
* Define a reactive property on an Object.
*/
function defineReactive$$1 (
obj,
key,
val,
customSetter
) {
var dep = new Dep();
var property = Object.getOwnPropertyDescriptor(obj, key);
if (property && property.configurable === false) {
return
}
// cater for pre-defined getter/setters
var getter = property && property.get;
var setter = property && property.set;
var childOb = observe(val);
Object.defineProperty(obj, key, {
enumerable: true,
configurable: true,
get: function reactiveGetter () {
var value = getter ? getter.call(obj) : val;
if (Dep.target) {
dep.depend();
if (childOb) {
childOb.dep.depend();
}
if (Array.isArray(value)) {
dependArray(value);
}
}
return value
},
set: function reactiveSetter (newVal) {
var value = getter ? getter.call(obj) : val;
/* eslint-disable no-self-compare */
if (newVal === value || (newVal !== newVal && value !== value)) {
return
}
/* eslint-enable no-self-compare */
if (process.env.NODE_ENV !== 'production' && customSetter) {
customSetter();
}
if (setter) {
setter.call(obj, newVal);
} else {
val = newVal;
}
childOb = observe(newVal);
dep.notify();
}
});
}
/**
* Set a property on an object. Adds the new property and
* triggers change notification if the property doesn't
* already exist.
*/
function set$1 (obj, key, val) {
if (Array.isArray(obj)) {
obj.length = Math.max(obj.length, key);
obj.splice(key, 1, val);
return val
}
if (hasOwn(obj, key)) {
obj[key] = val;
return
}
var ob = obj.__ob__;
if (obj._isVue || (ob && ob.vmCount)) {
process.env.NODE_ENV !== 'production' && warn(
'Avoid adding reactive properties to a Vue instance or its root $data ' +
'at runtime - declare it upfront in the data option.'
);
return
}
if (!ob) {
obj[key] = val;
return
}
defineReactive$$1(ob.value, key, val);
ob.dep.notify();
return val
}
/**
* Delete a property and trigger change if necessary.
*/
function del (obj, key) {
var ob = obj.__ob__;
if (obj._isVue || (ob && ob.vmCount)) {
process.env.NODE_ENV !== 'production' && warn(
'Avoid deleting properties on a Vue instance or its root $data ' +
'- just set it to null.'
);
return
}
if (!hasOwn(obj, key)) {
return
}
delete obj[key];
if (!ob) {
return
}
ob.dep.notify();
}
/**
* Collect dependencies on array elements when the array is touched, since
* we cannot intercept array element access like property getters.
*/
function dependArray (value) {
for (var e = (void 0), i = 0, l = value.length; i < l; i++) {
e = value[i];
e && e.__ob__ && e.__ob__.dep.depend();
if (Array.isArray(e)) {
dependArray(e);
}
}
}
/* */
/**
* Option overwriting strategies are functions that handle
* how to merge a parent option value and a child option
* value into the final value.
*/
var strats = config.optionMergeStrategies;
/**
* Options with restrictions
*/
if (process.env.NODE_ENV !== 'production') {
strats.el = strats.propsData = function (parent, child, vm, key) {
if (!vm) {
warn(
"option \"" + key + "\" can only be used during instance " +
'creation with the `new` keyword.'
);
}
return defaultStrat(parent, child)
};
}
/**
* Helper that recursively merges two data objects together.
*/
function mergeData (to, from) {
if (!from) { return to }
var key, toVal, fromVal;
var keys = Object.keys(from);
for (var i = 0; i < keys.length; i++) {
key = keys[i];
toVal = to[key];
fromVal = from[key];
if (!hasOwn(to, key)) {
set$1(to, key, fromVal);
} else if (isPlainObject(toVal) && isPlainObject(fromVal)) {
mergeData(toVal, fromVal);
}
}
return to
}
/**
* Data
*/
strats.data = function (
parentVal,
childVal,
vm
) {
if (!vm) {
// in a Vue.extend merge, both should be functions
if (!childVal) {
return parentVal
}
if (typeof childVal !== 'function') {
process.env.NODE_ENV !== 'production' && warn(
'The "data" option should be a function ' +
'that returns a per-instance value in component ' +
'definitions.',
vm
);
return parentVal
}
if (!parentVal) {
return childVal
}
// when parentVal & childVal are both present,
// we need to return a function that returns the
// merged result of both functions... no need to
// check if parentVal is a function here because
// it has to be a function to pass previous merges.
return function mergedDataFn () {
return mergeData(
childVal.call(this),
parentVal.call(this)
)
}
} else if (parentVal || childVal) {
return function mergedInstanceDataFn () {
// instance merge
var instanceData = typeof childVal === 'function'
? childVal.call(vm)
: childVal;
var defaultData = typeof parentVal === 'function'
? parentVal.call(vm)
: undefined;
if (instanceData) {
return mergeData(instanceData, defaultData)
} else {
return defaultData
}
}
}
};
/**
* Hooks and param attributes are merged as arrays.
*/
function mergeHook (
parentVal,
childVal
) {
return childVal
? parentVal
? parentVal.concat(childVal)
: Array.isArray(childVal)
? childVal
: [childVal]
: parentVal
}
config._lifecycleHooks.forEach(function (hook) {
strats[hook] = mergeHook;
});
/**
* Assets
*
* When a vm is present (instance creation), we need to do
* a three-way merge between constructor options, instance
* options and parent options.
*/
function mergeAssets (parentVal, childVal) {
var res = Object.create(parentVal || null);
return childVal
? extend(res, childVal)
: res
}
config._assetTypes.forEach(function (type) {
strats[type + 's'] = mergeAssets;
});
/**
* Watchers.
*
* Watchers hashes should not overwrite one
* another, so we merge them as arrays.
*/
strats.watch = function (parentVal, childVal) {
/* istanbul ignore if */
if (!childVal) { return parentVal }
if (!parentVal) { return childVal }
var ret = {};
extend(ret, parentVal);
for (var key in childVal) {
var parent = ret[key];
var child = childVal[key];
if (parent && !Array.isArray(parent)) {
parent = [parent];
}
ret[key] = parent
? parent.concat(child)
: [child];
}
return ret
};
/**
* Other object hashes.
*/
strats.props =
strats.methods =
strats.computed = function (parentVal, childVal) {
if (!childVal) { return parentVal }
if (!parentVal) { return childVal }
var ret = Object.create(null);
extend(ret, parentVal);
extend(ret, childVal);
return ret
};
/**
* Default strategy.
*/
var defaultStrat = function (parentVal, childVal) {
return childVal === undefined
? parentVal
: childVal
};
/**
* Validate component names
*/
function checkComponents (options) {
for (var key in options.components) {
var lower = key.toLowerCase();
if (isBuiltInTag(lower) || config.isReservedTag(lower)) {
warn(
'Do not use built-in or reserved HTML elements as component ' +
'id: ' + key
);
}
}
}
/**
* Ensure all props option syntax are normalized into the
* Object-based format.
*/
function normalizeProps (options) {
var props = options.props;
if (!props) { return }
var res = {};
var i, val, name;
if (Array.isArray(props)) {
i = props.length;
while (i--) {
val = props[i];
if (typeof val === 'string') {
name = camelize(val);
res[name] = { type: null };
} else if (process.env.NODE_ENV !== 'production') {
warn('props must be strings when using array syntax.');
}
}
} else if (isPlainObject(props)) {
for (var key in props) {
val = props[key];
name = camelize(key);
res[name] = isPlainObject(val)
? val
: { type: val };
}
}
options.props = res;
}
/**
* Normalize raw function directives into object format.
*/
function normalizeDirectives (options) {
var dirs = options.directives;
if (dirs) {
for (var key in dirs) {
var def = dirs[key];
if (typeof def === 'function') {
dirs[key] = { bind: def, update: def };
}
}
}
}
/**
* Merge two option objects into a new one.
* Core utility used in both instantiation and inheritance.
*/
function mergeOptions (
parent,
child,
vm
) {
if (process.env.NODE_ENV !== 'production') {
checkComponents(child);
}
normalizeProps(child);
normalizeDirectives(child);
var extendsFrom = child.extends;
if (extendsFrom) {
parent = typeof extendsFrom === 'function'
? mergeOptions(parent, extendsFrom.options, vm)
: mergeOptions(parent, extendsFrom, vm);
}
if (child.mixins) {
for (var i = 0, l = child.mixins.length; i < l; i++) {
var mixin = child.mixins[i];
if (mixin.prototype instanceof Vue$2) {
mixin = mixin.options;
}
parent = mergeOptions(parent, mixin, vm);
}
}
var options = {};
var key;
for (key in parent) {
mergeField(key);
}
for (key in child) {
if (!hasOwn(parent, key)) {
mergeField(key);
}
}
function mergeField (key) {
var strat = strats[key] || defaultStrat;
options[key] = strat(parent[key], child[key], vm, key);
}
return options
}
/**
* Resolve an asset.
* This function is used because child instances need access
* to assets defined in its ancestor chain.
*/
function resolveAsset (
options,
type,
id,
warnMissing
) {
/* istanbul ignore if */
if (typeof id !== 'string') {
return
}
var assets = options[type];
// check local registration variations first
if (hasOwn(assets, id)) { return assets[id] }
var camelizedId = camelize(id);
if (hasOwn(assets, camelizedId)) { return assets[camelizedId] }
var PascalCaseId = capitalize(camelizedId);
if (hasOwn(assets, PascalCaseId)) { return assets[PascalCaseId] }
// fallback to prototype chain
var res = assets[id] || assets[camelizedId] || assets[PascalCaseId];
if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {
warn(
'Failed to resolve ' + type.slice(0, -1) + ': ' + id,
options
);
}
return res
}
/* */
function validateProp (
key,
propOptions,
propsData,
vm
) {
var prop = propOptions[key];
var absent = !hasOwn(propsData, key);
var value = propsData[key];
// handle boolean props
if (isType(Boolean, prop.type)) {
if (absent && !hasOwn(prop, 'default')) {
value = false;
} else if (!isType(String, prop.type) && (value === '' || value === hyphenate(key))) {
value = true;
}
}
// check default value
if (value === undefined) {
value = getPropDefaultValue(vm, prop, key);
// since the default value is a fresh copy,
// make sure to observe it.
var prevShouldConvert = observerState.shouldConvert;
observerState.shouldConvert = true;
observe(value);
observerState.shouldConvert = prevShouldConvert;
}
if (process.env.NODE_ENV !== 'production') {
assertProp(prop, key, value, vm, absent);
}
return value
}
/**
* Get the default value of a prop.
*/
function getPropDefaultValue (vm, prop, key) {
// no default, return undefined
if (!hasOwn(prop, 'default')) {
return undefined
}
var def = prop.default;
// warn against non-factory defaults for Object & Array
if (isObject(def)) {
process.env.NODE_ENV !== 'production' && warn(
'Invalid default value for prop "' + key + '": ' +
'Props with type Object/Array must use a factory function ' +
'to return the default value.',
vm
);
}
// the raw prop value was also undefined from previous render,
// return previous default value to avoid unnecessary watcher trigger
if (vm && vm.$options.propsData &&
vm.$options.propsData[key] === undefined &&
vm[key] !== undefined) {
return vm[key]
}
// call factory function for non-Function types
return typeof def === 'function' && prop.type !== Function
? def.call(vm)
: def
}
/**
* Assert whether a prop is valid.
*/
function assertProp (
prop,
name,
value,
vm,
absent
) {
if (prop.required && absent) {
warn(
'Missing required prop: "' + name + '"',
vm
);
return
}
if (value == null && !prop.required) {
return
}
var type = prop.type;
var valid = !type || type === true;
var expectedTypes = [];
if (type) {
if (!Array.isArray(type)) {
type = [type];
}
for (var i = 0; i < type.length && !valid; i++) {
var assertedType = assertType(value, type[i]);
expectedTypes.push(assertedType.expectedType || '');
valid = assertedType.valid;
}
}
if (!valid) {
warn(
'Invalid prop: type check failed for prop "' + name + '".' +
' Expected ' + expectedTypes.map(capitalize).join(', ') +
', got ' + Object.prototype.toString.call(value).slice(8, -1) + '.',
vm
);
return
}
var validator = prop.validator;
if (validator) {
if (!validator(value)) {
warn(
'Invalid prop: custom validator check failed for prop "' + name + '".',
vm
);
}
}
}
/**
* Assert the type of a value
*/
function assertType (value, type) {
var valid;
var expectedType = getType(type);
if (expectedType === 'String') {
valid = typeof value === (expectedType = 'string');
} else if (expectedType === 'Number') {
valid = typeof value === (expectedType = 'number');
} else if (expectedType === 'Boolean') {
valid = typeof value === (expectedType = 'boolean');
} else if (expectedType === 'Function') {
valid = typeof value === (expectedType = 'function');
} else if (expectedType === 'Object') {
valid = isPlainObject(value);
} else if (expectedType === 'Array') {
valid = Array.isArray(value);
} else {
valid = value instanceof type;
}
return {
valid: valid,
expectedType: expectedType
}
}
/**
* Use function string name to check built-in types,
* because a simple equality check will fail when running
* across different vms / iframes.
*/
function getType (fn) {
var match = fn && fn.toString().match(/^\s*function (\w+)/);
return match && match[1]
}
function isType (type, fn) {
if (!Array.isArray(fn)) {
return getType(fn) === getType(type)
}
for (var i = 0, len = fn.length; i < len; i++) {
if (getType(fn[i]) === getType(type)) {
return true
}
}
/* istanbul ignore next */
return false
}
var util = Object.freeze({
defineReactive: defineReactive$$1,
_toString: _toString,
toNumber: toNumber,
makeMap: makeMap,
isBuiltInTag: isBuiltInTag,
remove: remove$1,
hasOwn: hasOwn,
isPrimitive: isPrimitive,
cached: cached,
camelize: camelize,
capitalize: capitalize,
hyphenate: hyphenate,
bind: bind$1,
toArray: toArray,
extend: extend,
isObject: isObject,
isPlainObject: isPlainObject,
toObject: toObject,
noop: noop,
no: no,
identity: identity,
genStaticKeys: genStaticKeys,
looseEqual: looseEqual,
looseIndexOf: looseIndexOf,
isReserved: isReserved,
def: def,
parsePath: parsePath,
hasProto: hasProto,
inBrowser: inBrowser,
UA: UA,
isIE: isIE,
isIE9: isIE9,
isEdge: isEdge,
isAndroid: isAndroid,
isIOS: isIOS,
isServerRendering: isServerRendering,
devtools: devtools,
nextTick: nextTick,
get _Set () { return _Set; },
mergeOptions: mergeOptions,
resolveAsset: resolveAsset,
get warn () { return warn; },
get formatComponentName () { return formatComponentName; },
validateProp: validateProp
});
/* not type checking this file because flow doesn't play well with Proxy */
var initProxy;
if (process.env.NODE_ENV !== 'production') {
var allowedGlobals = makeMap(
'Infinity,undefined,NaN,isFinite,isNaN,' +
'parseFloat,parseInt,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,' +
'Math,Number,Date,Array,Object,Boolean,String,RegExp,Map,Set,JSON,Intl,' +
'require' // for Webpack/Browserify
);
var warnNonPresent = function (target, key) {
warn(
"Property or method \"" + key + "\" is not defined on the instance but " +
"referenced during render. Make sure to declare reactive data " +
"properties in the data option.",
target
);
};
var hasProxy =
typeof Proxy !== 'undefined' &&
Proxy.toString().match(/native code/);
if (hasProxy) {
var isBuiltInModifier = makeMap('stop,prevent,self,ctrl,shift,alt,meta');
config.keyCodes = new Proxy(config.keyCodes, {
set: function set (target, key, value) {
if (isBuiltInModifier(key)) {
warn(("Avoid overwriting built-in modifier in config.keyCodes: ." + key));
return false
} else {
target[key] = value;
return true
}
}
});
}
var hasHandler = {
has: function has (target, key) {
var has = key in target;
var isAllowed = allowedGlobals(key) || key.charAt(0) === '_';
if (!has && !isAllowed) {
warnNonPresent(target, key);
}
return has || !isAllowed
}
};
var getHandler = {
get: function get (target, key) {
if (typeof key === 'string' && !(key in target)) {
warnNonPresent(target, key);
}
return target[key]
}
};
initProxy = function initProxy (vm) {
if (hasProxy) {
// determine which proxy handler to use
var options = vm.$options;
var handlers = options.render && options.render._withStripped
? getHandler
: hasHandler;
vm._renderProxy = new Proxy(vm, handlers);
} else {
vm._renderProxy = vm;
}
};
}
/* */
var queue = [];
var has$1 = {};
var circular = {};
var waiting = false;
var flushing = false;
var index = 0;
/**
* Reset the scheduler's state.
*/
function resetSchedulerState () {
queue.length = 0;
has$1 = {};
if (process.env.NODE_ENV !== 'production') {
circular = {};
}
waiting = flushing = false;
}
/**
* Flush both queues and run the watchers.
*/
function flushSchedulerQueue () {
flushing = true;
// Sort queue before flush.
// This ensures that:
// 1. Components are updated from parent to child. (because parent is always
// created before the child)
// 2. A component's user watchers are run before its render watcher (because
// user watchers are created before the render watcher)
// 3. If a component is destroyed during a parent component's watcher run,
// its watchers can be skipped.
queue.sort(function (a, b) { return a.id - b.id; });
// do not cache length because more watchers might be pushed
// as we run existing watchers
for (index = 0; index < queue.length; index++) {
var watcher = queue[index];
var id = watcher.id;
has$1[id] = null;
watcher.run();
// in dev build, check and stop circular updates.
if (process.env.NODE_ENV !== 'production' && has$1[id] != null) {
circular[id] = (circular[id] || 0) + 1;
if (circular[id] > config._maxUpdateCount) {
warn(
'You may have an infinite update loop ' + (
watcher.user
? ("in watcher with expression \"" + (watcher.expression) + "\"")
: "in a component render function."
),
watcher.vm
);
break
}
}
}
// devtool hook
/* istanbul ignore if */
if (devtools && config.devtools) {
devtools.emit('flush');
}
resetSchedulerState();
}
/**
* Push a watcher into the watcher queue.
* Jobs with duplicate IDs will be skipped unless it's
* pushed when the queue is being flushed.
*/
function queueWatcher (watcher) {
var id = watcher.id;
if (has$1[id] == null) {
has$1[id] = true;
if (!flushing) {
queue.push(watcher);
} else {
// if already flushing, splice the watcher based on its id
// if already past its id, it will be run next immediately.
var i = queue.length - 1;
while (i >= 0 && queue[i].id > watcher.id) {
i--;
}
queue.splice(Math.max(i, index) + 1, 0, watcher);
}
// queue the flush
if (!waiting) {
waiting = true;
nextTick(flushSchedulerQueue);
}
}
}
/* */
var uid$2 = 0;
/**
* A watcher parses an expression, collects dependencies,
* and fires callback when the expression value changes.
* This is used for both the $watch() api and directives.
*/
var Watcher = function Watcher (
vm,
expOrFn,
cb,
options
) {
this.vm = vm;
vm._watchers.push(this);
// options
if (options) {
this.deep = !!options.deep;
this.user = !!options.user;
this.lazy = !!options.lazy;
this.sync = !!options.sync;
} else {
this.deep = this.user = this.lazy = this.sync = false;
}
this.cb = cb;
this.id = ++uid$2; // uid for batching
this.active = true;
this.dirty = this.lazy; // for lazy watchers
this.deps = [];
this.newDeps = [];
this.depIds = new _Set();
this.newDepIds = new _Set();
this.expression = process.env.NODE_ENV !== 'production'
? expOrFn.toString()
: '';
// parse expression for getter
if (typeof expOrFn === 'function') {
this.getter = expOrFn;
} else {
this.getter = parsePath(expOrFn);
if (!this.getter) {
this.getter = function () {};
process.env.NODE_ENV !== 'production' && warn(
"Failed watching path: \"" + expOrFn + "\" " +
'Watcher only accepts simple dot-delimited paths. ' +
'For full control, use a function instead.',
vm
);
}
}
this.value = this.lazy
? undefined
: this.get();
};
/**
* Evaluate the getter, and re-collect dependencies.
*/
Watcher.prototype.get = function get () {
pushTarget(this);
var value = this.getter.call(this.vm, this.vm);
// "touch" every property so they are all tracked as
// dependencies for deep watching
if (this.deep) {
traverse(value);
}
popTarget();
this.cleanupDeps();
return value
};
/**
* Add a dependency to this directive.
*/
Watcher.prototype.addDep = function addDep (dep) {
var id = dep.id;
if (!this.newDepIds.has(id)) {
this.newDepIds.add(id);
this.newDeps.push(dep);
if (!this.depIds.has(id)) {
dep.addSub(this);
}
}
};
/**
* Clean up for dependency collection.
*/
Watcher.prototype.cleanupDeps = function cleanupDeps () {
var this$1 = this;
var i = this.deps.length;
while (i--) {
var dep = this$1.deps[i];
if (!this$1.newDepIds.has(dep.id)) {
dep.removeSub(this$1);
}
}
var tmp = this.depIds;
this.depIds = this.newDepIds;
this.newDepIds = tmp;
this.newDepIds.clear();
tmp = this.deps;
this.deps = this.newDeps;
this.newDeps = tmp;
this.newDeps.length = 0;
};
/**
* Subscriber interface.
* Will be called when a dependency changes.
*/
Watcher.prototype.update = function update () {
/* istanbul ignore else */
if (this.lazy) {
this.dirty = true;
} else if (this.sync) {
this.run();
} else {
queueWatcher(this);
}
};
/**
* Scheduler job interface.
* Will be called by the scheduler.
*/
Watcher.prototype.run = function run () {
if (this.active) {
var value = this.get();
if (
value !== this.value ||
// Deep watchers and watchers on Object/Arrays should fire even
// when the value is the same, because the value may
// have mutated.
isObject(value) ||
this.deep
) {
// set new value
var oldValue = this.value;
this.value = value;
if (this.user) {
try {
this.cb.call(this.vm, value, oldValue);
} catch (e) {
/* istanbul ignore else */
if (config.errorHandler) {
config.errorHandler.call(null, e, this.vm);
} else {
process.env.NODE_ENV !== 'production' && warn(
("Error in watcher \"" + (this.expression) + "\""),
this.vm
);
throw e
}
}
} else {
this.cb.call(this.vm, value, oldValue);
}
}
}
};
/**
* Evaluate the value of the watcher.
* This only gets called for lazy watchers.
*/
Watcher.prototype.evaluate = function evaluate () {
this.value = this.get();
this.dirty = false;
};
/**
* Depend on all deps collected by this watcher.
*/
Watcher.prototype.depend = function depend () {
var this$1 = this;
var i = this.deps.length;
while (i--) {
this$1.deps[i].depend();
}
};
/**
* Remove self from all dependencies' subscriber list.
*/
Watcher.prototype.teardown = function teardown () {
var this$1 = this;
if (this.active) {
// remove self from vm's watcher list
// this is a somewhat expensive operation so we skip it
// if the vm is being destroyed.
if (!this.vm._isBeingDestroyed) {
remove$1(this.vm._watchers, this);
}
var i = this.deps.length;
while (i--) {
this$1.deps[i].removeSub(this$1);
}
this.active = false;
}
};
/**
* Recursively traverse an object to evoke all converted
* getters, so that every nested property inside the object
* is collected as a "deep" dependency.
*/
var seenObjects = new _Set();
function traverse (val) {
seenObjects.clear();
_traverse(val, seenObjects);
}
function _traverse (val, seen) {
var i, keys;
var isA = Array.isArray(val);
if ((!isA && !isObject(val)) || !Object.isExtensible(val)) {
return
}
if (val.__ob__) {
var depId = val.__ob__.dep.id;
if (seen.has(depId)) {
return
}
seen.add(depId);
}
if (isA) {
i = val.length;
while (i--) { _traverse(val[i], seen); }
} else {
keys = Object.keys(val);
i = keys.length;
while (i--) { _traverse(val[keys[i]], seen); }
}
}
/* */
function initState (vm) {
vm._watchers = [];
var opts = vm.$options;
if (opts.props) { initProps(vm, opts.props); }
if (opts.methods) { initMethods(vm, opts.methods); }
if (opts.data) {
initData(vm);
} else {
observe(vm._data = {}, true /* asRootData */);
}
if (opts.computed) { initComputed(vm, opts.computed); }
if (opts.watch) { initWatch(vm, opts.watch); }
}
var isReservedProp = { key: 1, ref: 1, slot: 1 };
function initProps (vm, props) {
var propsData = vm.$options.propsData || {};
var keys = vm.$options._propKeys = Object.keys(props);
var isRoot = !vm.$parent;
// root instance props should be converted
observerState.shouldConvert = isRoot;
var loop = function ( i ) {
var key = keys[i];
/* istanbul ignore else */
if (process.env.NODE_ENV !== 'production') {
if (isReservedProp[key]) {
warn(
("\"" + key + "\" is a reserved attribute and cannot be used as component prop."),
vm
);
}
defineReactive$$1(vm, key, validateProp(key, props, propsData, vm), function () {
if (vm.$parent && !observerState.isSettingProps) {
warn(
"Avoid mutating a prop directly since the value will be " +
"overwritten whenever the parent component re-renders. " +
"Instead, use a data or computed property based on the prop's " +
"value. Prop being mutated: \"" + key + "\"",
vm
);
}
});
} else {
defineReactive$$1(vm, key, validateProp(key, props, propsData, vm));
}
};
for (var i = 0; i < keys.length; i++) loop( i );
observerState.shouldConvert = true;
}
function initData (vm) {
var data = vm.$options.data;
data = vm._data = typeof data === 'function'
? data.call(vm)
: data || {};
if (!isPlainObject(data)) {
data = {};
process.env.NODE_ENV !== 'production' && warn(
'data functions should return an object:\n' +
'https://vuejs.org/v2/guide/components.html#data-Must-Be-a-Function',
vm
);
}
// proxy data on instance
var keys = Object.keys(data);
var props = vm.$options.props;
var i = keys.length;
while (i--) {
if (props && hasOwn(props, keys[i])) {
process.env.NODE_ENV !== 'production' && warn(
"The data property \"" + (keys[i]) + "\" is already declared as a prop. " +
"Use prop default value instead.",
vm
);
} else {
proxy(vm, keys[i]);
}
}
// observe data
observe(data, true /* asRootData */);
}
var computedSharedDefinition = {
enumerable: true,
configurable: true,
get: noop,
set: noop
};
function initComputed (vm, computed) {
for (var key in computed) {
/* istanbul ignore if */
if (process.env.NODE_ENV !== 'production' && key in vm) {
warn(
"existing instance property \"" + key + "\" will be " +
"overwritten by a computed property with the same name.",
vm
);
}
var userDef = computed[key];
if (typeof userDef === 'function') {
computedSharedDefinition.get = makeComputedGetter(userDef, vm);
computedSharedDefinition.set = noop;
} else {
computedSharedDefinition.get = userDef.get
? userDef.cache !== false
? makeComputedGetter(userDef.get, vm)
: bind$1(userDef.get, vm)
: noop;
computedSharedDefinition.set = userDef.set
? bind$1(userDef.set, vm)
: noop;
}
Object.defineProperty(vm, key, computedSharedDefinition);
}
}
function makeComputedGetter (getter, owner) {
var watcher = new Watcher(owner, getter, noop, {
lazy: true
});
return function computedGetter () {
if (watcher.dirty) {
watcher.evaluate();
}
if (Dep.target) {
watcher.depend();
}
return watcher.value
}
}
function initMethods (vm, methods) {
for (var key in methods) {
vm[key] = methods[key] == null ? noop : bind$1(methods[key], vm);
if (process.env.NODE_ENV !== 'production' && methods[key] == null) {
warn(
"method \"" + key + "\" has an undefined value in the component definition. " +
"Did you reference the function correctly?",
vm
);
}
}
}
function initWatch (vm, watch) {
for (var key in watch) {
var handler = watch[key];
if (Array.isArray(handler)) {
for (var i = 0; i < handler.length; i++) {
createWatcher(vm, key, handler[i]);
}
} else {
createWatcher(vm, key, handler);
}
}
}
function createWatcher (vm, key, handler) {
var options;
if (isPlainObject(handler)) {
options = handler;
handler = handler.handler;
}
if (typeof handler === 'string') {
handler = vm[handler];
}
vm.$watch(key, handler, options);
}
function stateMixin (Vue) {
// flow somehow has problems with directly declared definition object
// when using Object.defineProperty, so we have to procedurally build up
// the object here.
var dataDef = {};
dataDef.get = function () {
return this._data
};
if (process.env.NODE_ENV !== 'production') {
dataDef.set = function (newData) {
warn(
'Avoid replacing instance root $data. ' +
'Use nested data properties instead.',
this
);
};
}
Object.defineProperty(Vue.prototype, '$data', dataDef);
Vue.prototype.$set = set$1;
Vue.prototype.$delete = del;
Vue.prototype.$watch = function (
expOrFn,
cb,
options
) {
var vm = this;
options = options || {};
options.user = true;
var watcher = new Watcher(vm, expOrFn, cb, options);
if (options.immediate) {
cb.call(vm, watcher.value);
}
return function unwatchFn () {
watcher.teardown();
}
};
}
function proxy (vm, key) {
if (!isReserved(key)) {
Object.defineProperty(vm, key, {
configurable: true,
enumerable: true,
get: function proxyGetter () {
return vm._data[key]
},
set: function proxySetter (val) {
vm._data[key] = val;
}
});
}
}
/* */
var VNode = function VNode (
tag,
data,
children,
text,
elm,
context,
componentOptions
) {
this.tag = tag;
this.data = data;
this.children = children;
this.text = text;
this.elm = elm;
this.ns = undefined;
this.context = context;
this.functionalContext = undefined;
this.key = data && data.key;
this.componentOptions = componentOptions;
this.child = undefined;
this.parent = undefined;
this.raw = false;
this.isStatic = false;
this.isRootInsert = true;
this.isComment = false;
this.isCloned = false;
this.isOnce = false;
};
var createEmptyVNode = function () {
var node = new VNode();
node.text = '';
node.isComment = true;
return node
};
function createTextVNode (val) {
return new VNode(undefined, undefined, undefined, String(val))
}
// optimized shallow clone
// used for static nodes and slot nodes because they may be reused across
// multiple renders, cloning them avoids errors when DOM manipulations rely
// on their elm reference.
function cloneVNode (vnode) {
var cloned = new VNode(
vnode.tag,
vnode.data,
vnode.children,
vnode.text,
vnode.elm,
vnode.context,
vnode.componentOptions
);
cloned.ns = vnode.ns;
cloned.isStatic = vnode.isStatic;
cloned.key = vnode.key;
cloned.isCloned = true;
return cloned
}
function cloneVNodes (vnodes) {
var res = new Array(vnodes.length);
for (var i = 0; i < vnodes.length; i++) {
res[i] = cloneVNode(vnodes[i]);
}
return res
}
/* */
function mergeVNodeHook (def, hookKey, hook, key) {
key = key + hookKey;
var injectedHash = def.__injected || (def.__injected = {});
if (!injectedHash[key]) {
injectedHash[key] = true;
var oldHook = def[hookKey];
if (oldHook) {
def[hookKey] = function () {
oldHook.apply(this, arguments);
hook.apply(this, arguments);
};
} else {
def[hookKey] = hook;
}
}
}
/* */
function updateListeners (
on,
oldOn,
add,
remove$$1,
vm
) {
var name, cur, old, fn, event, capture, once;
for (name in on) {
cur = on[name];
old = oldOn[name];
if (!cur) {
process.env.NODE_ENV !== 'production' && warn(
"Invalid handler for event \"" + name + "\": got " + String(cur),
vm
);
} else if (!old) {
once = name.charAt(0) === '~'; // Prefixed last, checked first
event = once ? name.slice(1) : name;
capture = event.charAt(0) === '!';
event = capture ? event.slice(1) : event;
if (Array.isArray(cur)) {
add(event, (cur.invoker = arrInvoker(cur)), once, capture);
} else {
if (!cur.invoker) {
fn = cur;
cur = on[name] = {};
cur.fn = fn;
cur.invoker = fnInvoker(cur);
}
add(event, cur.invoker, once, capture);
}
} else if (cur !== old) {
if (Array.isArray(old)) {
old.length = cur.length;
for (var i = 0; i < old.length; i++) { old[i] = cur[i]; }
on[name] = old;
} else {
old.fn = cur;
on[name] = old;
}
}
}
for (name in oldOn) {
if (!on[name]) {
once = name.charAt(0) === '~'; // Prefixed last, checked first
event = once ? name.slice(1) : name;
capture = event.charAt(0) === '!';
event = capture ? event.slice(1) : event;
remove$$1(event, oldOn[name].invoker, capture);
}
}
}
function arrInvoker (arr) {
return function (ev) {
var arguments$1 = arguments;
var single = arguments.length === 1;
for (var i = 0; i < arr.length; i++) {
single ? arr[i](ev) : arr[i].apply(null, arguments$1);
}
}
}
function fnInvoker (o) {
return function (ev) {
var single = arguments.length === 1;
single ? o.fn(ev) : o.fn.apply(null, arguments);
}
}
/* */
// The template compiler attempts to minimize the need for normalization by
// statically analyzing the template at compile time.
//
// For plain HTML markup, normalization can be completely skipped because the
// generated render function is guaranteed to return Array<VNode>. There are
// two cases where extra normalization is needed:
// 1. When the children contains components - because a functional component
// may return an Array instead of a single root. In this case, just a simple
// nomralization is needed - if any child is an Array, we flatten the whole
// thing with Array.prototype.concat. It is guaranteed to be only 1-level deep
// because functional components already normalize their own children.
function simpleNormalizeChildren (children) {
for (var i = 0; i < children.length; i++) {
if (Array.isArray(children[i])) {
return Array.prototype.concat.apply([], children)
}
}
return children
}
// 2. When the children contains constrcuts that always generated nested Arrays,
// e.g. <template>, <slot>, v-for, or when the children is provided by user
// with hand-written render functions / JSX. In such cases a full normalization
// is needed to cater to all possible types of children values.
function normalizeChildren (children) {
return isPrimitive(children)
? [createTextVNode(children)]
: Array.isArray(children)
? normalizeArrayChildren(children)
: undefined
}
function normalizeArrayChildren (children, nestedIndex) {
var res = [];
var i, c, last;
for (i = 0; i < children.length; i++) {
c = children[i];
if (c == null || typeof c === 'boolean') { continue }
last = res[res.length - 1];
// nested
if (Array.isArray(c)) {
res.push.apply(res, normalizeArrayChildren(c, ((nestedIndex || '') + "_" + i)));
} else if (isPrimitive(c)) {
if (last && last.text) {
last.text += String(c);
} else if (c !== '') {
// convert primitive to vnode
res.push(createTextVNode(c));
}
} else {
if (c.text && last && last.text) {
res[res.length - 1] = createTextVNode(last.text + c.text);
} else {
// default key for nested array children (likely generated by v-for)
if (c.tag && c.key == null && nestedIndex != null) {
c.key = "__vlist" + nestedIndex + "_" + i + "__";
}
res.push(c);
}
}
}
return res
}
/* */
function getFirstComponentChild (children) {
return children && children.filter(function (c) { return c && c.componentOptions; })[0]
}
/* */
function initEvents (vm) {
vm._events = Object.create(null);
vm._hasHookEvent = false;
// init parent attached events
var listeners = vm.$options._parentListeners;
if (listeners) {
updateComponentListeners(vm, listeners);
}
}
var target;
function add$1 (event, fn, once) {
if (once) {
target.$once(event, fn);
} else {
target.$on(event, fn);
}
}
function remove$2 (event, fn) {
target.$off(event, fn);
}
function updateComponentListeners (
vm,
listeners,
oldListeners
) {
target = vm;
updateListeners(listeners, oldListeners || {}, add$1, remove$2, vm);
}
function eventsMixin (Vue) {
var hookRE = /^hook:/;
Vue.prototype.$on = function (event, fn) {
var vm = this;(vm._events[event] || (vm._events[event] = [])).push(fn);
// optimize hook:event cost by using a boolean flag marked at registration
// instead of a hash lookup
if (hookRE.test(event)) {
vm._hasHookEvent = true;
}
return vm
};
Vue.prototype.$once = function (event, fn) {
var vm = this;
function on () {
vm.$off(event, on);
fn.apply(vm, arguments);
}
on.fn = fn;
vm.$on(event, on);
return vm
};
Vue.prototype.$off = function (event, fn) {
var vm = this;
// all
if (!arguments.length) {
vm._events = Object.create(null);
return vm
}
// specific event
var cbs = vm._events[event];
if (!cbs) {
return vm
}
if (arguments.length === 1) {
vm._events[event] = null;
return vm
}
// specific handler
var cb;
var i = cbs.length;
while (i--) {
cb = cbs[i];
if (cb === fn || cb.fn === fn) {
cbs.splice(i, 1);
break
}
}
return vm
};
Vue.prototype.$emit = function (event) {
var vm = this;
var cbs = vm._events[event];
if (cbs) {
cbs = cbs.length > 1 ? toArray(cbs) : cbs;
var args = toArray(arguments, 1);
for (var i = 0, l = cbs.length; i < l; i++) {
cbs[i].apply(vm, args);
}
}
return vm
};
}
/* */
var activeInstance = null;
function initLifecycle (vm) {
var options = vm.$options;
// locate first non-abstract parent
var parent = options.parent;
if (parent && !options.abstract) {
while (parent.$options.abstract && parent.$parent) {
parent = parent.$parent;
}
parent.$children.push(vm);
}
vm.$parent = parent;
vm.$root = parent ? parent.$root : vm;
vm.$children = [];
vm.$refs = {};
vm._watcher = null;
vm._inactive = false;
vm._isMounted = false;
vm._isDestroyed = false;
vm._isBeingDestroyed = false;
}
function lifecycleMixin (Vue) {
Vue.prototype._mount = function (
el,
hydrating
) {
var vm = this;
vm.$el = el;
if (!vm.$options.render) {
vm.$options.render = createEmptyVNode;
if (process.env.NODE_ENV !== 'production') {
/* istanbul ignore if */
if (vm.$options.template && vm.$options.template.charAt(0) !== '#') {
warn(
'You are using the runtime-only build of Vue where the template ' +
'option is not available. Either pre-compile the templates into ' +
'render functions, or use the compiler-included build.',
vm
);
} else {
warn(
'Failed to mount component: template or render function not defined.',
vm
);
}
}
}
callHook(vm, 'beforeMount');
vm._watcher = new Watcher(vm, function () {
vm._update(vm._render(), hydrating);
}, noop);
hydrating = false;
// manually mounted instance, call mounted on self
// mounted is called for render-created child components in its inserted hook
if (vm.$vnode == null) {
vm._isMounted = true;
callHook(vm, 'mounted');
}
return vm
};
Vue.prototype._update = function (vnode, hydrating) {
var vm = this;
if (vm._isMounted) {
callHook(vm, 'beforeUpdate');
}
var prevEl = vm.$el;
var prevVnode = vm._vnode;
var prevActiveInstance = activeInstance;
activeInstance = vm;
vm._vnode = vnode;
// Vue.prototype.__patch__ is injected in entry points
// based on the rendering backend used.
if (!prevVnode) {
// initial render
vm.$el = vm.__patch__(
vm.$el, vnode, hydrating, false /* removeOnly */,
vm.$options._parentElm,
vm.$options._refElm
);
} else {
// updates
vm.$el = vm.__patch__(prevVnode, vnode);
}
activeInstance = prevActiveInstance;
// update __vue__ reference
if (prevEl) {
prevEl.__vue__ = null;
}
if (vm.$el) {
vm.$el.__vue__ = vm;
}
// if parent is an HOC, update its $el as well
if (vm.$vnode && vm.$parent && vm.$vnode === vm.$parent._vnode) {
vm.$parent.$el = vm.$el;
}
if (vm._isMounted) {
callHook(vm, 'updated');
}
};
Vue.prototype._updateFromParent = function (
propsData,
listeners,
parentVnode,
renderChildren
) {
var vm = this;
var hasChildren = !!(vm.$options._renderChildren || renderChildren);
vm.$options._parentVnode = parentVnode;
vm.$vnode = parentVnode; // update vm's placeholder node without re-render
if (vm._vnode) { // update child tree's parent
vm._vnode.parent = parentVnode;
}
vm.$options._renderChildren = renderChildren;
// update props
if (propsData && vm.$options.props) {
observerState.shouldConvert = false;
if (process.env.NODE_ENV !== 'production') {
observerState.isSettingProps = true;
}
var propKeys = vm.$options._propKeys || [];
for (var i = 0; i < propKeys.length; i++) {
var key = propKeys[i];
vm[key] = validateProp(key, vm.$options.props, propsData, vm);
}
observerState.shouldConvert = true;
if (process.env.NODE_ENV !== 'production') {
observerState.isSettingProps = false;
}
vm.$options.propsData = propsData;
}
// update listeners
if (listeners) {
var oldListeners = vm.$options._parentListeners;
vm.$options._parentListeners = listeners;
updateComponentListeners(vm, listeners, oldListeners);
}
// resolve slots + force update if has children
if (hasChildren) {
vm.$slots = resolveSlots(renderChildren, parentVnode.context);
vm.$forceUpdate();
}
};
Vue.prototype.$forceUpdate = function () {
var vm = this;
if (vm._watcher) {
vm._watcher.update();
}
};
Vue.prototype.$destroy = function () {
var vm = this;
if (vm._isBeingDestroyed) {
return
}
callHook(vm, 'beforeDestroy');
vm._isBeingDestroyed = true;
// remove self from parent
var parent = vm.$parent;
if (parent && !parent._isBeingDestroyed && !vm.$options.abstract) {
remove$1(parent.$children, vm);
}
// teardown watchers
if (vm._watcher) {
vm._watcher.teardown();
}
var i = vm._watchers.length;
while (i--) {
vm._watchers[i].teardown();
}
// remove reference from data ob
// frozen object may not have observer.
if (vm._data.__ob__) {
vm._data.__ob__.vmCount--;
}
// call the last hook...
vm._isDestroyed = true;
callHook(vm, 'destroyed');
// turn off all instance listeners.
vm.$off();
// remove __vue__ reference
if (vm.$el) {
vm.$el.__vue__ = null;
}
// invoke destroy hooks on current rendered tree
vm.__patch__(vm._vnode, null);
};
}
function callHook (vm, hook) {
var handlers = vm.$options[hook];
if (handlers) {
for (var i = 0, j = handlers.length; i < j; i++) {
handlers[i].call(vm);
}
}
if (vm._hasHookEvent) {
vm.$emit('hook:' + hook);
}
}
/* */
var hooks = { init: init, prepatch: prepatch, insert: insert, destroy: destroy$1 };
var hooksToMerge = Object.keys(hooks);
function createComponent (
Ctor,
data,
context,
children,
tag
) {
if (!Ctor) {
return
}
var baseCtor = context.$options._base;
if (isObject(Ctor)) {
Ctor = baseCtor.extend(Ctor);
}
if (typeof Ctor !== 'function') {
if (process.env.NODE_ENV !== 'production') {
warn(("Invalid Component definition: " + (String(Ctor))), context);
}
return
}
// async component
if (!Ctor.cid) {
if (Ctor.resolved) {
Ctor = Ctor.resolved;
} else {
Ctor = resolveAsyncComponent(Ctor, baseCtor, function () {
// it's ok to queue this on every render because
// $forceUpdate is buffered by the scheduler.
context.$forceUpdate();
});
if (!Ctor) {
// return nothing if this is indeed an async component
// wait for the callback to trigger parent update.
return
}
}
}
// resolve constructor options in case global mixins are applied after
// component constructor creation
resolveConstructorOptions(Ctor);
data = data || {};
// extract props
var propsData = extractProps(data, Ctor);
// functional component
if (Ctor.options.functional) {
return createFunctionalComponent(Ctor, propsData, data, context, children)
}
// extract listeners, since these needs to be treated as
// child component listeners instead of DOM listeners
var listeners = data.on;
// replace with listeners with .native modifier
data.on = data.nativeOn;
if (Ctor.options.abstract) {
// abstract components do not keep anything
// other than props & listeners
data = {};
}
// merge component management hooks onto the placeholder node
mergeHooks(data);
// return a placeholder vnode
var name = Ctor.options.name || tag;
var vnode = new VNode(
("vue-component-" + (Ctor.cid) + (name ? ("-" + name) : '')),
data, undefined, undefined, undefined, context,
{ Ctor: Ctor, propsData: propsData, listeners: listeners, tag: tag, children: children }
);
return vnode
}
function createFunctionalComponent (
Ctor,
propsData,
data,
context,
children
) {
var props = {};
var propOptions = Ctor.options.props;
if (propOptions) {
for (var key in propOptions) {
props[key] = validateProp(key, propOptions, propsData);
}
}
// ensure the createElement function in functional components
// gets a unique context - this is necessary for correct named slot check
var _context = Object.create(context);
var h = function (a, b, c, d) { return createElement(_context, a, b, c, d, true); };
var vnode = Ctor.options.render.call(null, h, {
props: props,
data: data,
parent: context,
children: children,
slots: function () { return resolveSlots(children, context); }
});
if (vnode instanceof VNode) {
vnode.functionalContext = context;
if (data.slot) {
(vnode.data || (vnode.data = {})).slot = data.slot;
}
}
return vnode
}
function createComponentInstanceForVnode (
vnode, // we know it's MountedComponentVNode but flow doesn't
parent, // activeInstance in lifecycle state
parentElm,
refElm
) {
var vnodeComponentOptions = vnode.componentOptions;
var options = {
_isComponent: true,
parent: parent,
propsData: vnodeComponentOptions.propsData,
_componentTag: vnodeComponentOptions.tag,
_parentVnode: vnode,
_parentListeners: vnodeComponentOptions.listeners,
_renderChildren: vnodeComponentOptions.children,
_parentElm: parentElm || null,
_refElm: refElm || null
};
// check inline-template render functions
var inlineTemplate = vnode.data.inlineTemplate;
if (inlineTemplate) {
options.render = inlineTemplate.render;
options.staticRenderFns = inlineTemplate.staticRenderFns;
}
return new vnodeComponentOptions.Ctor(options)
}
function init (
vnode,
hydrating,
parentElm,
refElm
) {
if (!vnode.child || vnode.child._isDestroyed) {
var child = vnode.child = createComponentInstanceForVnode(
vnode,
activeInstance,
parentElm,
refElm
);
child.$mount(hydrating ? vnode.elm : undefined, hydrating);
} else if (vnode.data.keepAlive) {
// kept-alive components, treat as a patch
var mountedNode = vnode; // work around flow
prepatch(mountedNode, mountedNode);
}
}
function prepatch (
oldVnode,
vnode
) {
var options = vnode.componentOptions;
var child = vnode.child = oldVnode.child;
child._updateFromParent(
options.propsData, // updated props
options.listeners, // updated listeners
vnode, // new parent vnode
options.children // new children
);
}
function insert (vnode) {
if (!vnode.child._isMounted) {
vnode.child._isMounted = true;
callHook(vnode.child, 'mounted');
}
if (vnode.data.keepAlive) {
vnode.child._inactive = false;
callHook(vnode.child, 'activated');
}
}
function destroy$1 (vnode) {
if (!vnode.child._isDestroyed) {
if (!vnode.data.keepAlive) {
vnode.child.$destroy();
} else {
vnode.child._inactive = true;
callHook(vnode.child, 'deactivated');
}
}
}
function resolveAsyncComponent (
factory,
baseCtor,
cb
) {
if (factory.requested) {
// pool callbacks
factory.pendingCallbacks.push(cb);
} else {
factory.requested = true;
var cbs = factory.pendingCallbacks = [cb];
var sync = true;
var resolve = function (res) {
if (isObject(res)) {
res = baseCtor.extend(res);
}
// cache resolved
factory.resolved = res;
// invoke callbacks only if this is not a synchronous resolve
// (async resolves are shimmed as synchronous during SSR)
if (!sync) {
for (var i = 0, l = cbs.length; i < l; i++) {
cbs[i](res);
}
}
};
var reject = function (reason) {
process.env.NODE_ENV !== 'production' && warn(
"Failed to resolve async component: " + (String(factory)) +
(reason ? ("\nReason: " + reason) : '')
);
};
var res = factory(resolve, reject);
// handle promise
if (res && typeof res.then === 'function' && !factory.resolved) {
res.then(resolve, reject);
}
sync = false;
// return in case resolved synchronously
return factory.resolved
}
}
function extractProps (data, Ctor) {
// we are only extracting raw values here.
// validation and default values are handled in the child
// component itself.
var propOptions = Ctor.options.props;
if (!propOptions) {
return
}
var res = {};
var attrs = data.attrs;
var props = data.props;
var domProps = data.domProps;
if (attrs || props || domProps) {
for (var key in propOptions) {
var altKey = hyphenate(key);
checkProp(res, props, key, altKey, true) ||
checkProp(res, attrs, key, altKey) ||
checkProp(res, domProps, key, altKey);
}
}
return res
}
function checkProp (
res,
hash,
key,
altKey,
preserve
) {
if (hash) {
if (hasOwn(hash, key)) {
res[key] = hash[key];
if (!preserve) {
delete hash[key];
}
return true
} else if (hasOwn(hash, altKey)) {
res[key] = hash[altKey];
if (!preserve) {
delete hash[altKey];
}
return true
}
}
return false
}
function mergeHooks (data) {
if (!data.hook) {
data.hook = {};
}
for (var i = 0; i < hooksToMerge.length; i++) {
var key = hooksToMerge[i];
var fromParent = data.hook[key];
var ours = hooks[key];
data.hook[key] = fromParent ? mergeHook$1(ours, fromParent) : ours;
}
}
function mergeHook$1 (one, two) {
return function (a, b, c, d) {
one(a, b, c, d);
two(a, b, c, d);
}
}
/* */
var SIMPLE_NORMALIZE = 1;
var ALWAYS_NORMALIZE = 2;
// wrapper function for providing a more flexible interface
// without getting yelled at by flow
function createElement (
context,
tag,
data,
children,
normalizationType,
alwaysNormalize
) {
if (Array.isArray(data) || isPrimitive(data)) {
normalizationType = children;
children = data;
data = undefined;
}
if (alwaysNormalize) { normalizationType = ALWAYS_NORMALIZE; }
return _createElement(context, tag, data, children, normalizationType)
}
function _createElement (
context,
tag,
data,
children,
normalizationType
) {
if (data && data.__ob__) {
process.env.NODE_ENV !== 'production' && warn(
"Avoid using observed data object as vnode data: " + (JSON.stringify(data)) + "\n" +
'Always create fresh vnode data objects in each render!',
context
);
return createEmptyVNode()
}
if (!tag) {
// in case of component :is set to falsy value
return createEmptyVNode()
}
// support single function children as default scoped slot
if (Array.isArray(children) &&
typeof children[0] === 'function') {
data = data || {};
data.scopedSlots = { default: children[0] };
children.length = 0;
}
if (normalizationType === ALWAYS_NORMALIZE) {
children = normalizeChildren(children);
} else if (normalizationType === SIMPLE_NORMALIZE) {
children = simpleNormalizeChildren(children);
}
var vnode, ns;
if (typeof tag === 'string') {
var Ctor;
ns = config.getTagNamespace(tag);
if (config.isReservedTag(tag)) {
// platform built-in elements
vnode = new VNode(
config.parsePlatformTagName(tag), data, children,
undefined, undefined, context
);
} else if ((Ctor = resolveAsset(context.$options, 'components', tag))) {
// component
vnode = createComponent(Ctor, data, context, children, tag);
} else {
// unknown or unlisted namespaced elements
// check at runtime because it may get assigned a namespace when its
// parent normalizes children
vnode = new VNode(
tag, data, children,
undefined, undefined, context
);
}
} else {
// direct component options / constructor
vnode = createComponent(tag, data, context, children);
}
if (vnode) {
if (ns) { applyNS(vnode, ns); }
return vnode
} else {
return createEmptyVNode()
}
}
function applyNS (vnode, ns) {
vnode.ns = ns;
if (vnode.tag === 'foreignObject') {
// use default namespace inside foreignObject
return
}
if (vnode.children) {
for (var i = 0, l = vnode.children.length; i < l; i++) {
var child = vnode.children[i];
if (child.tag && !child.ns) {
applyNS(child, ns);
}
}
}
}
/* */
function initRender (vm) {
vm.$vnode = null; // the placeholder node in parent tree
vm._vnode = null; // the root of the child tree
vm._staticTrees = null;
var parentVnode = vm.$options._parentVnode;
var renderContext = parentVnode && parentVnode.context;
vm.$slots = resolveSlots(vm.$options._renderChildren, renderContext);
vm.$scopedSlots = {};
// bind the createElement fn to this instance
// so that we get proper render context inside it.
// args order: tag, data, children, normalizationType, alwaysNormalize
// internal version is used by render functions compiled from templates
vm._c = function (a, b, c, d) { return createElement(vm, a, b, c, d, false); };
// normalization is always applied for the public version, used in
// user-written render functions.
vm.$createElement = function (a, b, c, d) { return createElement(vm, a, b, c, d, true); };
if (vm.$options.el) {
vm.$mount(vm.$options.el);
}
}
function renderMixin (Vue) {
Vue.prototype.$nextTick = function (fn) {
return nextTick(fn, this)
};
Vue.prototype._render = function () {
var vm = this;
var ref = vm.$options;
var render = ref.render;
var staticRenderFns = ref.staticRenderFns;
var _parentVnode = ref._parentVnode;
if (vm._isMounted) {
// clone slot nodes on re-renders
for (var key in vm.$slots) {
vm.$slots[key] = cloneVNodes(vm.$slots[key]);
}
}
if (_parentVnode && _parentVnode.data.scopedSlots) {
vm.$scopedSlots = _parentVnode.data.scopedSlots;
}
if (staticRenderFns && !vm._staticTrees) {
vm._staticTrees = [];
}
// set parent vnode. this allows render functions to have access
// to the data on the placeholder node.
vm.$vnode = _parentVnode;
// render self
var vnode;
try {
vnode = render.call(vm._renderProxy, vm.$createElement);
} catch (e) {
/* istanbul ignore else */
if (config.errorHandler) {
config.errorHandler.call(null, e, vm);
} else {
if (process.env.NODE_ENV !== 'production') {
warn(("Error when rendering " + (formatComponentName(vm)) + ":"));
}
throw e
}
// return previous vnode to prevent render error causing blank component
vnode = vm._vnode;
}
// return empty vnode in case the render function errored out
if (!(vnode instanceof VNode)) {
if (process.env.NODE_ENV !== 'production' && Array.isArray(vnode)) {
warn(
'Multiple root nodes returned from render function. Render function ' +
'should return a single root node.',
vm
);
}
vnode = createEmptyVNode();
}
// set parent
vnode.parent = _parentVnode;
return vnode
};
// toString for mustaches
Vue.prototype._s = _toString;
// convert text to vnode
Vue.prototype._v = createTextVNode;
// number conversion
Vue.prototype._n = toNumber;
// empty vnode
Vue.prototype._e = createEmptyVNode;
// loose equal
Vue.prototype._q = looseEqual;
// loose indexOf
Vue.prototype._i = looseIndexOf;
// render static tree by index
Vue.prototype._m = function renderStatic (
index,
isInFor
) {
var tree = this._staticTrees[index];
// if has already-rendered static tree and not inside v-for,
// we can reuse the same tree by doing a shallow clone.
if (tree && !isInFor) {
return Array.isArray(tree)
? cloneVNodes(tree)
: cloneVNode(tree)
}
// otherwise, render a fresh tree.
tree = this._staticTrees[index] = this.$options.staticRenderFns[index].call(this._renderProxy);
markStatic(tree, ("__static__" + index), false);
return tree
};
// mark node as static (v-once)
Vue.prototype._o = function markOnce (
tree,
index,
key
) {
markStatic(tree, ("__once__" + index + (key ? ("_" + key) : "")), true);
return tree
};
function markStatic (tree, key, isOnce) {
if (Array.isArray(tree)) {
for (var i = 0; i < tree.length; i++) {
if (tree[i] && typeof tree[i] !== 'string') {
markStaticNode(tree[i], (key + "_" + i), isOnce);
}
}
} else {
markStaticNode(tree, key, isOnce);
}
}
function markStaticNode (node, key, isOnce) {
node.isStatic = true;
node.key = key;
node.isOnce = isOnce;
}
// filter resolution helper
Vue.prototype._f = function resolveFilter (id) {
return resolveAsset(this.$options, 'filters', id, true) || identity
};
// render v-for
Vue.prototype._l = function renderList (
val,
render
) {
var ret, i, l, keys, key;
if (Array.isArray(val) || typeof val === 'string') {
ret = new Array(val.length);
for (i = 0, l = val.length; i < l; i++) {
ret[i] = render(val[i], i);
}
} else if (typeof val === 'number') {
ret = new Array(val);
for (i = 0; i < val; i++) {
ret[i] = render(i + 1, i);
}
} else if (isObject(val)) {
keys = Object.keys(val);
ret = new Array(keys.length);
for (i = 0, l = keys.length; i < l; i++) {
key = keys[i];
ret[i] = render(val[key], key, i);
}
}
return ret
};
// renderSlot
Vue.prototype._t = function (
name,
fallback,
props,
bindObject
) {
var scopedSlotFn = this.$scopedSlots[name];
if (scopedSlotFn) { // scoped slot
props = props || {};
if (bindObject) {
extend(props, bindObject);
}
return scopedSlotFn(props) || fallback
} else {
var slotNodes = this.$slots[name];
// warn duplicate slot usage
if (slotNodes && process.env.NODE_ENV !== 'production') {
slotNodes._rendered && warn(
"Duplicate presence of slot \"" + name + "\" found in the same render tree " +
"- this will likely cause render errors.",
this
);
slotNodes._rendered = true;
}
return slotNodes || fallback
}
};
// apply v-bind object
Vue.prototype._b = function bindProps (
data,
tag,
value,
asProp
) {
if (value) {
if (!isObject(value)) {
process.env.NODE_ENV !== 'production' && warn(
'v-bind without argument expects an Object or Array value',
this
);
} else {
if (Array.isArray(value)) {
value = toObject(value);
}
for (var key in value) {
if (key === 'class' || key === 'style') {
data[key] = value[key];
} else {
var hash = asProp || config.mustUseProp(tag, key)
? data.domProps || (data.domProps = {})
: data.attrs || (data.attrs = {});
hash[key] = value[key];
}
}
}
}
return data
};
// check v-on keyCodes
Vue.prototype._k = function checkKeyCodes (
eventKeyCode,
key,
builtInAlias
) {
var keyCodes = config.keyCodes[key] || builtInAlias;
if (Array.isArray(keyCodes)) {
return keyCodes.indexOf(eventKeyCode) === -1
} else {
return keyCodes !== eventKeyCode
}
};
}
function resolveSlots (
children,
context
) {
var slots = {};
if (!children) {
return slots
}
var defaultSlot = [];
var name, child;
for (var i = 0, l = children.length; i < l; i++) {
child = children[i];
// named slots should only be respected if the vnode was rendered in the
// same context.
if ((child.context === context || child.functionalContext === context) &&
child.data && (name = child.data.slot)) {
var slot = (slots[name] || (slots[name] = []));
if (child.tag === 'template') {
slot.push.apply(slot, child.children);
} else {
slot.push(child);
}
} else {
defaultSlot.push(child);
}
}
// ignore single whitespace
if (defaultSlot.length && !(
defaultSlot.length === 1 &&
(defaultSlot[0].text === ' ' || defaultSlot[0].isComment)
)) {
slots.default = defaultSlot;
}
return slots
}
/* */
var uid = 0;
function initMixin (Vue) {
Vue.prototype._init = function (options) {
var vm = this;
// a uid
vm._uid = uid++;
// a flag to avoid this being observed
vm._isVue = true;
// merge options
if (options && options._isComponent) {
// optimize internal component instantiation
// since dynamic options merging is pretty slow, and none of the
// internal component options needs special treatment.
initInternalComponent(vm, options);
} else {
vm.$options = mergeOptions(
resolveConstructorOptions(vm.constructor),
options || {},
vm
);
}
/* istanbul ignore else */
if (process.env.NODE_ENV !== 'production') {
initProxy(vm);
} else {
vm._renderProxy = vm;
}
// expose real self
vm._self = vm;
initLifecycle(vm);
initEvents(vm);
callHook(vm, 'beforeCreate');
initState(vm);
callHook(vm, 'created');
initRender(vm);
};
}
function initInternalComponent (vm, options) {
var opts = vm.$options = Object.create(vm.constructor.options);
// doing this because it's faster than dynamic enumeration.
opts.parent = options.parent;
opts.propsData = options.propsData;
opts._parentVnode = options._parentVnode;
opts._parentListeners = options._parentListeners;
opts._renderChildren = options._renderChildren;
opts._componentTag = options._componentTag;
opts._parentElm = options._parentElm;
opts._refElm = options._refElm;
if (options.render) {
opts.render = options.render;
opts.staticRenderFns = options.staticRenderFns;
}
}
function resolveConstructorOptions (Ctor) {
var options = Ctor.options;
if (Ctor.super) {
var superOptions = Ctor.super.options;
var cachedSuperOptions = Ctor.superOptions;
var extendOptions = Ctor.extendOptions;
if (superOptions !== cachedSuperOptions) {
// super option changed
Ctor.superOptions = superOptions;
extendOptions.render = options.render;
extendOptions.staticRenderFns = options.staticRenderFns;
extendOptions._scopeId = options._scopeId;
options = Ctor.options = mergeOptions(superOptions, extendOptions);
if (options.name) {
options.components[options.name] = Ctor;
}
}
}
return options
}
function Vue$2 (options) {
if (process.env.NODE_ENV !== 'production' &&
!(this instanceof Vue$2)) {
warn('Vue is a constructor and should be called with the `new` keyword');
}
this._init(options);
}
initMixin(Vue$2);
stateMixin(Vue$2);
eventsMixin(Vue$2);
lifecycleMixin(Vue$2);
renderMixin(Vue$2);
/* */
function initUse (Vue) {
Vue.use = function (plugin) {
/* istanbul ignore if */
if (plugin.installed) {
return
}
// additional parameters
var args = toArray(arguments, 1);
args.unshift(this);
if (typeof plugin.install === 'function') {
plugin.install.apply(plugin, args);
} else {
plugin.apply(null, args);
}
plugin.installed = true;
return this
};
}
/* */
function initMixin$1 (Vue) {
Vue.mixin = function (mixin) {
this.options = mergeOptions(this.options, mixin);
};
}
/* */
function initExtend (Vue) {
/**
* Each instance constructor, including Vue, has a unique
* cid. This enables us to create wrapped "child
* constructors" for prototypal inheritance and cache them.
*/
Vue.cid = 0;
var cid = 1;
/**
* Class inheritance
*/
Vue.extend = function (extendOptions) {
extendOptions = extendOptions || {};
var Super = this;
var SuperId = Super.cid;
var cachedCtors = extendOptions._Ctor || (extendOptions._Ctor = {});
if (cachedCtors[SuperId]) {
return cachedCtors[SuperId]
}
var name = extendOptions.name || Super.options.name;
if (process.env.NODE_ENV !== 'production') {
if (!/^[a-zA-Z][\w-]*$/.test(name)) {
warn(
'Invalid component name: "' + name + '". Component names ' +
'can only contain alphanumeric characters and the hyphen, ' +
'and must start with a letter.'
);
}
}
var Sub = function VueComponent (options) {
this._init(options);
};
Sub.prototype = Object.create(Super.prototype);
Sub.prototype.constructor = Sub;
Sub.cid = cid++;
Sub.options = mergeOptions(
Super.options,
extendOptions
);
Sub['super'] = Super;
// allow further extension/mixin/plugin usage
Sub.extend = Super.extend;
Sub.mixin = Super.mixin;
Sub.use = Super.use;
// create asset registers, so extended classes
// can have their private assets too.
config._assetTypes.forEach(function (type) {
Sub[type] = Super[type];
});
// enable recursive self-lookup
if (name) {
Sub.options.components[name] = Sub;
}
// keep a reference to the super options at extension time.
// later at instantiation we can check if Super's options have
// been updated.
Sub.superOptions = Super.options;
Sub.extendOptions = extendOptions;
// cache constructor
cachedCtors[SuperId] = Sub;
return Sub
};
}
/* */
function initAssetRegisters (Vue) {
/**
* Create asset registration methods.
*/
config._assetTypes.forEach(function (type) {
Vue[type] = function (
id,
definition
) {
if (!definition) {
return this.options[type + 's'][id]
} else {
/* istanbul ignore if */
if (process.env.NODE_ENV !== 'production') {
if (type === 'component' && config.isReservedTag(id)) {
warn(
'Do not use built-in or reserved HTML elements as component ' +
'id: ' + id
);
}
}
if (type === 'component' && isPlainObject(definition)) {
definition.name = definition.name || id;
definition = this.options._base.extend(definition);
}
if (type === 'directive' && typeof definition === 'function') {
definition = { bind: definition, update: definition };
}
this.options[type + 's'][id] = definition;
return definition
}
};
});
}
/* */
var patternTypes = [String, RegExp];
function matches (pattern, name) {
if (typeof pattern === 'string') {
return pattern.split(',').indexOf(name) > -1
} else {
return pattern.test(name)
}
}
var KeepAlive = {
name: 'keep-alive',
abstract: true,
props: {
include: patternTypes,
exclude: patternTypes
},
created: function created () {
this.cache = Object.create(null);
},
render: function render () {
var vnode = getFirstComponentChild(this.$slots.default);
if (vnode && vnode.componentOptions) {
var opts = vnode.componentOptions;
// check pattern
var name = opts.Ctor.options.name || opts.tag;
if (name && (
(this.include && !matches(this.include, name)) ||
(this.exclude && matches(this.exclude, name))
)) {
return vnode
}
var key = vnode.key == null
// same constructor may get registered as different local components
// so cid alone is not enough (#3269)
? opts.Ctor.cid + (opts.tag ? ("::" + (opts.tag)) : '')
: vnode.key;
if (this.cache[key]) {
vnode.child = this.cache[key].child;
} else {
this.cache[key] = vnode;
}
vnode.data.keepAlive = true;
}
return vnode
},
destroyed: function destroyed () {
var this$1 = this;
for (var key in this.cache) {
var vnode = this$1.cache[key];
callHook(vnode.child, 'deactivated');
vnode.child.$destroy();
}
}
};
var builtInComponents = {
KeepAlive: KeepAlive
};
/* */
function initGlobalAPI (Vue) {
// config
var configDef = {};
configDef.get = function () { return config; };
if (process.env.NODE_ENV !== 'production') {
configDef.set = function () {
warn(
'Do not replace the Vue.config object, set individual fields instead.'
);
};
}
Object.defineProperty(Vue, 'config', configDef);
Vue.util = util;
Vue.set = set$1;
Vue.delete = del;
Vue.nextTick = nextTick;
Vue.options = Object.create(null);
config._assetTypes.forEach(function (type) {
Vue.options[type + 's'] = Object.create(null);
});
// this is used to identify the "base" constructor to extend all plain-object
// components with in Weex's multi-instance scenarios.
Vue.options._base = Vue;
extend(Vue.options.components, builtInComponents);
initUse(Vue);
initMixin$1(Vue);
initExtend(Vue);
initAssetRegisters(Vue);
}
initGlobalAPI(Vue$2);
Object.defineProperty(Vue$2.prototype, '$isServer', {
get: isServerRendering
});
Vue$2.version = '2.1.8';
/* */
// attributes that should be using props for binding
var acceptValue = makeMap('input,textarea,option,select');
var mustUseProp = function (tag, attr) {
return (
(attr === 'value' && acceptValue(tag)) ||
(attr === 'selected' && tag === 'option') ||
(attr === 'checked' && tag === 'input') ||
(attr === 'muted' && tag === 'video')
)
};
var isEnumeratedAttr = makeMap('contenteditable,draggable,spellcheck');
var isBooleanAttr = makeMap(
'allowfullscreen,async,autofocus,autoplay,checked,compact,controls,declare,' +
'default,defaultchecked,defaultmuted,defaultselected,defer,disabled,' +
'enabled,formnovalidate,hidden,indeterminate,inert,ismap,itemscope,loop,multiple,' +
'muted,nohref,noresize,noshade,novalidate,nowrap,open,pauseonexit,readonly,' +
'required,reversed,scoped,seamless,selected,sortable,translate,' +
'truespeed,typemustmatch,visible'
);
var xlinkNS = 'http://www.w3.org/1999/xlink';
var isXlink = function (name) {
return name.charAt(5) === ':' && name.slice(0, 5) === 'xlink'
};
var getXlinkProp = function (name) {
return isXlink(name) ? name.slice(6, name.length) : ''
};
var isFalsyAttrValue = function (val) {
return val == null || val === false
};
/* */
function genClassForVnode (vnode) {
var data = vnode.data;
var parentNode = vnode;
var childNode = vnode;
while (childNode.child) {
childNode = childNode.child._vnode;
if (childNode.data) {
data = mergeClassData(childNode.data, data);
}
}
while ((parentNode = parentNode.parent)) {
if (parentNode.data) {
data = mergeClassData(data, parentNode.data);
}
}
return genClassFromData(data)
}
function mergeClassData (child, parent) {
return {
staticClass: concat(child.staticClass, parent.staticClass),
class: child.class
? [child.class, parent.class]
: parent.class
}
}
function genClassFromData (data) {
var dynamicClass = data.class;
var staticClass = data.staticClass;
if (staticClass || dynamicClass) {
return concat(staticClass, stringifyClass(dynamicClass))
}
/* istanbul ignore next */
return ''
}
function concat (a, b) {
return a ? b ? (a + ' ' + b) : a : (b || '')
}
function stringifyClass (value) {
var res = '';
if (!value) {
return res
}
if (typeof value === 'string') {
return value
}
if (Array.isArray(value)) {
var stringified;
for (var i = 0, l = value.length; i < l; i++) {
if (value[i]) {
if ((stringified = stringifyClass(value[i]))) {
res += stringified + ' ';
}
}
}
return res.slice(0, -1)
}
if (isObject(value)) {
for (var key in value) {
if (value[key]) { res += key + ' '; }
}
return res.slice(0, -1)
}
/* istanbul ignore next */
return res
}
/* */
var namespaceMap = {
svg: 'http://www.w3.org/2000/svg',
math: 'http://www.w3.org/1998/Math/MathML'
};
var isHTMLTag = makeMap(
'html,body,base,head,link,meta,style,title,' +
'address,article,aside,footer,header,h1,h2,h3,h4,h5,h6,hgroup,nav,section,' +
'div,dd,dl,dt,figcaption,figure,hr,img,li,main,ol,p,pre,ul,' +
'a,b,abbr,bdi,bdo,br,cite,code,data,dfn,em,i,kbd,mark,q,rp,rt,rtc,ruby,' +
's,samp,small,span,strong,sub,sup,time,u,var,wbr,area,audio,map,track,video,' +
'embed,object,param,source,canvas,script,noscript,del,ins,' +
'caption,col,colgroup,table,thead,tbody,td,th,tr,' +
'button,datalist,fieldset,form,input,label,legend,meter,optgroup,option,' +
'output,progress,select,textarea,' +
'details,dialog,menu,menuitem,summary,' +
'content,element,shadow,template'
);
// this map is intentionally selective, only covering SVG elements that may
// contain child elements.
var isSVG = makeMap(
'svg,animate,circle,clippath,cursor,defs,desc,ellipse,filter,' +
'font-face,g,glyph,image,line,marker,mask,missing-glyph,path,pattern,' +
'polygon,polyline,rect,switch,symbol,text,textpath,tspan,use,view',
true
);
var isReservedTag = function (tag) {
return isHTMLTag(tag) || isSVG(tag)
};
function getTagNamespace (tag) {
if (isSVG(tag)) {
return 'svg'
}
// basic support for MathML
// note it doesn't support other MathML elements being component roots
if (tag === 'math') {
return 'math'
}
}
var unknownElementCache = Object.create(null);
function isUnknownElement (tag) {
/* istanbul ignore if */
if (!inBrowser) {
return true
}
if (isReservedTag(tag)) {
return false
}
tag = tag.toLowerCase();
/* istanbul ignore if */
if (unknownElementCache[tag] != null) {
return unknownElementCache[tag]
}
var el = document.createElement(tag);
if (tag.indexOf('-') > -1) {
// http://stackoverflow.com/a/28210364/1070244
return (unknownElementCache[tag] = (
el.constructor === window.HTMLUnknownElement ||
el.constructor === window.HTMLElement
))
} else {
return (unknownElementCache[tag] = /HTMLUnknownElement/.test(el.toString()))
}
}
/* */
/**
* Query an element selector if it's not an element already.
*/
function query (el) {
if (typeof el === 'string') {
var selector = el;
el = document.querySelector(el);
if (!el) {
process.env.NODE_ENV !== 'production' && warn(
'Cannot find element: ' + selector
);
return document.createElement('div')
}
}
return el
}
/* */
function createElement$1 (tagName, vnode) {
var elm = document.createElement(tagName);
if (tagName !== 'select') {
return elm
}
if (vnode.data && vnode.data.attrs && 'multiple' in vnode.data.attrs) {
elm.setAttribute('multiple', 'multiple');
}
return elm
}
function createElementNS (namespace, tagName) {
return document.createElementNS(namespaceMap[namespace], tagName)
}
function createTextNode (text) {
return document.createTextNode(text)
}
function createComment (text) {
return document.createComment(text)
}
function insertBefore (parentNode, newNode, referenceNode) {
parentNode.insertBefore(newNode, referenceNode);
}
function removeChild (node, child) {
node.removeChild(child);
}
function appendChild (node, child) {
node.appendChild(child);
}
function parentNode (node) {
return node.parentNode
}
function nextSibling (node) {
return node.nextSibling
}
function tagName (node) {
return node.tagName
}
function setTextContent (node, text) {
node.textContent = text;
}
function setAttribute (node, key, val) {
node.setAttribute(key, val);
}
var nodeOps = Object.freeze({
createElement: createElement$1,
createElementNS: createElementNS,
createTextNode: createTextNode,
createComment: createComment,
insertBefore: insertBefore,
removeChild: removeChild,
appendChild: appendChild,
parentNode: parentNode,
nextSibling: nextSibling,
tagName: tagName,
setTextContent: setTextContent,
setAttribute: setAttribute
});
/* */
var ref = {
create: function create (_, vnode) {
registerRef(vnode);
},
update: function update (oldVnode, vnode) {
if (oldVnode.data.ref !== vnode.data.ref) {
registerRef(oldVnode, true);
registerRef(vnode);
}
},
destroy: function destroy (vnode) {
registerRef(vnode, true);
}
};
function registerRef (vnode, isRemoval) {
var key = vnode.data.ref;
if (!key) { return }
var vm = vnode.context;
var ref = vnode.child || vnode.elm;
var refs = vm.$refs;
if (isRemoval) {
if (Array.isArray(refs[key])) {
remove$1(refs[key], ref);
} else if (refs[key] === ref) {
refs[key] = undefined;
}
} else {
if (vnode.data.refInFor) {
if (Array.isArray(refs[key]) && refs[key].indexOf(ref) < 0) {
refs[key].push(ref);
} else {
refs[key] = [ref];
}
} else {
refs[key] = ref;
}
}
}
/**
* Virtual DOM patching algorithm based on Snabbdom by
* Simon Friis Vindum (@paldepind)
* Licensed under the MIT License
* https://github.com/paldepind/snabbdom/blob/master/LICENSE
*
* modified by Evan You (@yyx990803)
*
/*
* Not type-checking this because this file is perf-critical and the cost
* of making flow understand it is not worth it.
*/
var emptyNode = new VNode('', {}, []);
var hooks$1 = ['create', 'activate', 'update', 'remove', 'destroy'];
function isUndef (s) {
return s == null
}
function isDef (s) {
return s != null
}
function sameVnode (vnode1, vnode2) {
return (
vnode1.key === vnode2.key &&
vnode1.tag === vnode2.tag &&
vnode1.isComment === vnode2.isComment &&
!vnode1.data === !vnode2.data
)
}
function createKeyToOldIdx (children, beginIdx, endIdx) {
var i, key;
var map = {};
for (i = beginIdx; i <= endIdx; ++i) {
key = children[i].key;
if (isDef(key)) { map[key] = i; }
}
return map
}
function createPatchFunction (backend) {
var i, j;
var cbs = {};
var modules = backend.modules;
var nodeOps = backend.nodeOps;
for (i = 0; i < hooks$1.length; ++i) {
cbs[hooks$1[i]] = [];
for (j = 0; j < modules.length; ++j) {
if (modules[j][hooks$1[i]] !== undefined) { cbs[hooks$1[i]].push(modules[j][hooks$1[i]]); }
}
}
function emptyNodeAt (elm) {
return new VNode(nodeOps.tagName(elm).toLowerCase(), {}, [], undefined, elm)
}
function createRmCb (childElm, listeners) {
function remove$$1 () {
if (--remove$$1.listeners === 0) {
removeNode(childElm);
}
}
remove$$1.listeners = listeners;
return remove$$1
}
function removeNode (el) {
var parent = nodeOps.parentNode(el);
// element may have already been removed due to v-html / v-text
if (parent) {
nodeOps.removeChild(parent, el);
}
}
var inPre = 0;
function createElm (vnode, insertedVnodeQueue, parentElm, refElm, nested) {
vnode.isRootInsert = !nested; // for transition enter check
if (createComponent(vnode, insertedVnodeQueue, parentElm, refElm)) {
return
}
var data = vnode.data;
var children = vnode.children;
var tag = vnode.tag;
if (isDef(tag)) {
if (process.env.NODE_ENV !== 'production') {
if (data && data.pre) {
inPre++;
}
if (
!inPre &&
!vnode.ns &&
!(config.ignoredElements.length && config.ignoredElements.indexOf(tag) > -1) &&
config.isUnknownElement(tag)
) {
warn(
'Unknown custom element: <' + tag + '> - did you ' +
'register the component correctly? For recursive components, ' +
'make sure to provide the "name" option.',
vnode.context
);
}
}
vnode.elm = vnode.ns
? nodeOps.createElementNS(vnode.ns, tag)
: nodeOps.createElement(tag, vnode);
setScope(vnode);
/* istanbul ignore if */
{
createChildren(vnode, children, insertedVnodeQueue);
if (isDef(data)) {
invokeCreateHooks(vnode, insertedVnodeQueue);
}
insert(parentElm, vnode.elm, refElm);
}
if (process.env.NODE_ENV !== 'production' && data && data.pre) {
inPre--;
}
} else if (vnode.isComment) {
vnode.elm = nodeOps.createComment(vnode.text);
insert(parentElm, vnode.elm, refElm);
} else {
vnode.elm = nodeOps.createTextNode(vnode.text);
insert(parentElm, vnode.elm, refElm);
}
}
function createComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
var i = vnode.data;
if (isDef(i)) {
var isReactivated = isDef(vnode.child) && i.keepAlive;
if (isDef(i = i.hook) && isDef(i = i.init)) {
i(vnode, false /* hydrating */, parentElm, refElm);
}
// after calling the init hook, if the vnode is a child component
// it should've created a child instance and mounted it. the child
// component also has set the placeholder vnode's elm.
// in that case we can just return the element and be done.
if (isDef(vnode.child)) {
initComponent(vnode, insertedVnodeQueue);
if (isReactivated) {
reactivateComponent(vnode, insertedVnodeQueue, parentElm, refElm);
}
return true
}
}
}
function reactivateComponent (vnode, insertedVnodeQueue, parentElm, refElm) {
var i;
// hack for #4339: a reactivated component with inner transition
// does not trigger because the inner node's created hooks are not called
// again. It's not ideal to involve module-specific logic in here but
// there doesn't seem to be a better way to do it.
var innerNode = vnode;
while (innerNode.child) {
innerNode = innerNode.child._vnode;
if (isDef(i = innerNode.data) && isDef(i = i.transition)) {
for (i = 0; i < cbs.activate.length; ++i) {
cbs.activate[i](emptyNode, innerNode);
}
insertedVnodeQueue.push(innerNode);
break
}
}
// unlike a newly created component,
// a reactivated keep-alive component doesn't insert itself
insert(parentElm, vnode.elm, refElm);
}
function insert (parent, elm, ref) {
if (parent) {
if (ref) {
nodeOps.insertBefore(parent, elm, ref);
} else {
nodeOps.appendChild(parent, elm);
}
}
}
function createChildren (vnode, children, insertedVnodeQueue) {
if (Array.isArray(children)) {
for (var i = 0; i < children.length; ++i) {
createElm(children[i], insertedVnodeQueue, vnode.elm, null, true);
}
} else if (isPrimitive(vnode.text)) {
nodeOps.appendChild(vnode.elm, nodeOps.createTextNode(vnode.text));
}
}
function isPatchable (vnode) {
while (vnode.child) {
vnode = vnode.child._vnode;
}
return isDef(vnode.tag)
}
function invokeCreateHooks (vnode, insertedVnodeQueue) {
for (var i$1 = 0; i$1 < cbs.create.length; ++i$1) {
cbs.create[i$1](emptyNode, vnode);
}
i = vnode.data.hook; // Reuse variable
if (isDef(i)) {
if (i.create) { i.create(emptyNode, vnode); }
if (i.insert) { insertedVnodeQueue.push(vnode); }
}
}
function initComponent (vnode, insertedVnodeQueue) {
if (vnode.data.pendingInsert) {
insertedVnodeQueue.push.apply(insertedVnodeQueue, vnode.data.pendingInsert);
}
vnode.elm = vnode.child.$el;
if (isPatchable(vnode)) {
invokeCreateHooks(vnode, insertedVnodeQueue);
setScope(vnode);
} else {
// empty component root.
// skip all element-related modules except for ref (#3455)
registerRef(vnode);
// make sure to invoke the insert hook
insertedVnodeQueue.push(vnode);
}
}
// set scope id attribute for scoped CSS.
// this is implemented as a special case to avoid the overhead
// of going through the normal attribute patching process.
function setScope (vnode) {
var i;
if (isDef(i = vnode.context) && isDef(i = i.$options._scopeId)) {
nodeOps.setAttribute(vnode.elm, i, '');
}
if (isDef(i = activeInstance) &&
i !== vnode.context &&
isDef(i = i.$options._scopeId)) {
nodeOps.setAttribute(vnode.elm, i, '');
}
}
function addVnodes (parentElm, refElm, vnodes, startIdx, endIdx, insertedVnodeQueue) {
for (; startIdx <= endIdx; ++startIdx) {
createElm(vnodes[startIdx], insertedVnodeQueue, parentElm, refElm);
}
}
function invokeDestroyHook (vnode) {
var i, j;
var data = vnode.data;
if (isDef(data)) {
if (isDef(i = data.hook) && isDef(i = i.destroy)) { i(vnode); }
for (i = 0; i < cbs.destroy.length; ++i) { cbs.destroy[i](vnode); }
}
if (isDef(i = vnode.children)) {
for (j = 0; j < vnode.children.length; ++j) {
invokeDestroyHook(vnode.children[j]);
}
}
}
function removeVnodes (parentElm, vnodes, startIdx, endIdx) {
for (; startIdx <= endIdx; ++startIdx) {
var ch = vnodes[startIdx];
if (isDef(ch)) {
if (isDef(ch.tag)) {
removeAndInvokeRemoveHook(ch);
invokeDestroyHook(ch);
} else { // Text node
removeNode(ch.elm);
}
}
}
}
function removeAndInvokeRemoveHook (vnode, rm) {
if (rm || isDef(vnode.data)) {
var listeners = cbs.remove.length + 1;
if (!rm) {
// directly removing
rm = createRmCb(vnode.elm, listeners);
} else {
// we have a recursively passed down rm callback
// increase the listeners count
rm.listeners += listeners;
}
// recursively invoke hooks on child component root node
if (isDef(i = vnode.child) && isDef(i = i._vnode) && isDef(i.data)) {
removeAndInvokeRemoveHook(i, rm);
}
for (i = 0; i < cbs.remove.length; ++i) {
cbs.remove[i](vnode, rm);
}
if (isDef(i = vnode.data.hook) && isDef(i = i.remove)) {
i(vnode, rm);
} else {
rm();
}
} else {
removeNode(vnode.elm);
}
}
function updateChildren (parentElm, oldCh, newCh, insertedVnodeQueue, removeOnly) {
var oldStartIdx = 0;
var newStartIdx = 0;
var oldEndIdx = oldCh.length - 1;
var oldStartVnode = oldCh[0];
var oldEndVnode = oldCh[oldEndIdx];
var newEndIdx = newCh.length - 1;
var newStartVnode = newCh[0];
var newEndVnode = newCh[newEndIdx];
var oldKeyToIdx, idxInOld, elmToMove, refElm;
// removeOnly is a special flag used only by <transition-group>
// to ensure removed elements stay in correct relative positions
// during leaving transitions
var canMove = !removeOnly;
while (oldStartIdx <= oldEndIdx && newStartIdx <= newEndIdx) {
if (isUndef(oldStartVnode)) {
oldStartVnode = oldCh[++oldStartIdx]; // Vnode has been moved left
} else if (isUndef(oldEndVnode)) {
oldEndVnode = oldCh[--oldEndIdx];
} else if (sameVnode(oldStartVnode, newStartVnode)) {
patchVnode(oldStartVnode, newStartVnode, insertedVnodeQueue);
oldStartVnode = oldCh[++oldStartIdx];
newStartVnode = newCh[++newStartIdx];
} else if (sameVnode(oldEndVnode, newEndVnode)) {
patchVnode(oldEndVnode, newEndVnode, insertedVnodeQueue);
oldEndVnode = oldCh[--oldEndIdx];
newEndVnode = newCh[--newEndIdx];
} else if (sameVnode(oldStartVnode, newEndVnode)) { // Vnode moved right
patchVnode(oldStartVnode, newEndVnode, insertedVnodeQueue);
canMove && nodeOps.insertBefore(parentElm, oldStartVnode.elm, nodeOps.nextSibling(oldEndVnode.elm));
oldStartVnode = oldCh[++oldStartIdx];
newEndVnode = newCh[--newEndIdx];
} else if (sameVnode(oldEndVnode, newStartVnode)) { // Vnode moved left
patchVnode(oldEndVnode, newStartVnode, insertedVnodeQueue);
canMove && nodeOps.insertBefore(parentElm, oldEndVnode.elm, oldStartVnode.elm);
oldEndVnode = oldCh[--oldEndIdx];
newStartVnode = newCh[++newStartIdx];
} else {
if (isUndef(oldKeyToIdx)) { oldKeyToIdx = createKeyToOldIdx(oldCh, oldStartIdx, oldEndIdx); }
idxInOld = isDef(newStartVnode.key) ? oldKeyToIdx[newStartVnode.key] : null;
if (isUndef(idxInOld)) { // New element
createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);
newStartVnode = newCh[++newStartIdx];
} else {
elmToMove = oldCh[idxInOld];
/* istanbul ignore if */
if (process.env.NODE_ENV !== 'production' && !elmToMove) {
warn(
'It seems there are duplicate keys that is causing an update error. ' +
'Make sure each v-for item has a unique key.'
);
}
if (sameVnode(elmToMove, newStartVnode)) {
patchVnode(elmToMove, newStartVnode, insertedVnodeQueue);
oldCh[idxInOld] = undefined;
canMove && nodeOps.insertBefore(parentElm, newStartVnode.elm, oldStartVnode.elm);
newStartVnode = newCh[++newStartIdx];
} else {
// same key but different element. treat as new element
createElm(newStartVnode, insertedVnodeQueue, parentElm, oldStartVnode.elm);
newStartVnode = newCh[++newStartIdx];
}
}
}
}
if (oldStartIdx > oldEndIdx) {
refElm = isUndef(newCh[newEndIdx + 1]) ? null : newCh[newEndIdx + 1].elm;
addVnodes(parentElm, refElm, newCh, newStartIdx, newEndIdx, insertedVnodeQueue);
} else if (newStartIdx > newEndIdx) {
removeVnodes(parentElm, oldCh, oldStartIdx, oldEndIdx);
}
}
function patchVnode (oldVnode, vnode, insertedVnodeQueue, removeOnly) {
if (oldVnode === vnode) {
return
}
// reuse element for static trees.
// note we only do this if the vnode is cloned -
// if the new node is not cloned it means the render functions have been
// reset by the hot-reload-api and we need to do a proper re-render.
if (vnode.isStatic &&
oldVnode.isStatic &&
vnode.key === oldVnode.key &&
(vnode.isCloned || vnode.isOnce)) {
vnode.elm = oldVnode.elm;
vnode.child = oldVnode.child;
return
}
var i;
var data = vnode.data;
var hasData = isDef(data);
if (hasData && isDef(i = data.hook) && isDef(i = i.prepatch)) {
i(oldVnode, vnode);
}
var elm = vnode.elm = oldVnode.elm;
var oldCh = oldVnode.children;
var ch = vnode.children;
if (hasData && isPatchable(vnode)) {
for (i = 0; i < cbs.update.length; ++i) { cbs.update[i](oldVnode, vnode); }
if (isDef(i = data.hook) && isDef(i = i.update)) { i(oldVnode, vnode); }
}
if (isUndef(vnode.text)) {
if (isDef(oldCh) && isDef(ch)) {
if (oldCh !== ch) { updateChildren(elm, oldCh, ch, insertedVnodeQueue, removeOnly); }
} else if (isDef(ch)) {
if (isDef(oldVnode.text)) { nodeOps.setTextContent(elm, ''); }
addVnodes(elm, null, ch, 0, ch.length - 1, insertedVnodeQueue);
} else if (isDef(oldCh)) {
removeVnodes(elm, oldCh, 0, oldCh.length - 1);
} else if (isDef(oldVnode.text)) {
nodeOps.setTextContent(elm, '');
}
} else if (oldVnode.text !== vnode.text) {
nodeOps.setTextContent(elm, vnode.text);
}
if (hasData) {
if (isDef(i = data.hook) && isDef(i = i.postpatch)) { i(oldVnode, vnode); }
}
}
function invokeInsertHook (vnode, queue, initial) {
// delay insert hooks for component root nodes, invoke them after the
// element is really inserted
if (initial && vnode.parent) {
vnode.parent.data.pendingInsert = queue;
} else {
for (var i = 0; i < queue.length; ++i) {
queue[i].data.hook.insert(queue[i]);
}
}
}
var bailed = false;
// list of modules that can skip create hook during hydration because they
// are already rendered on the client or has no need for initialization
var isRenderedModule = makeMap('attrs,style,class,staticClass,staticStyle,key');
// Note: this is a browser-only function so we can assume elms are DOM nodes.
function hydrate (elm, vnode, insertedVnodeQueue) {
if (process.env.NODE_ENV !== 'production') {
if (!assertNodeMatch(elm, vnode)) {
return false
}
}
vnode.elm = elm;
var tag = vnode.tag;
var data = vnode.data;
var children = vnode.children;
if (isDef(data)) {
if (isDef(i = data.hook) && isDef(i = i.init)) { i(vnode, true /* hydrating */); }
if (isDef(i = vnode.child)) {
// child component. it should have hydrated its own tree.
initComponent(vnode, insertedVnodeQueue);
return true
}
}
if (isDef(tag)) {
if (isDef(children)) {
// empty element, allow client to pick up and populate children
if (!elm.hasChildNodes()) {
createChildren(vnode, children, insertedVnodeQueue);
} else {
var childrenMatch = true;
var childNode = elm.firstChild;
for (var i$1 = 0; i$1 < children.length; i$1++) {
if (!childNode || !hydrate(childNode, children[i$1], insertedVnodeQueue)) {
childrenMatch = false;
break
}
childNode = childNode.nextSibling;
}
// if childNode is not null, it means the actual childNodes list is
// longer than the virtual children list.
if (!childrenMatch || childNode) {
if (process.env.NODE_ENV !== 'production' &&
typeof console !== 'undefined' &&
!bailed) {
bailed = true;
console.warn('Parent: ', elm);
console.warn('Mismatching childNodes vs. VNodes: ', elm.childNodes, children);
}
return false
}
}
}
if (isDef(data)) {
for (var key in data) {
if (!isRenderedModule(key)) {
invokeCreateHooks(vnode, insertedVnodeQueue);
break
}
}
}
} else if (elm.data !== vnode.text) {
elm.data = vnode.text;
}
return true
}
function assertNodeMatch (node, vnode) {
if (vnode.tag) {
return (
vnode.tag.indexOf('vue-component') === 0 ||
vnode.tag.toLowerCase() === (node.tagName && node.tagName.toLowerCase())
)
} else {
return node.nodeType === (vnode.isComment ? 8 : 3)
}
}
return function patch (oldVnode, vnode, hydrating, removeOnly, parentElm, refElm) {
if (!vnode) {
if (oldVnode) { invokeDestroyHook(oldVnode); }
return
}
var elm, parent;
var isInitialPatch = false;
var insertedVnodeQueue = [];
if (!oldVnode) {
// empty mount (likely as component), create new root element
isInitialPatch = true;
createElm(vnode, insertedVnodeQueue, parentElm, refElm);
} else {
var isRealElement = isDef(oldVnode.nodeType);
if (!isRealElement && sameVnode(oldVnode, vnode)) {
// patch existing root node
patchVnode(oldVnode, vnode, insertedVnodeQueue, removeOnly);
} else {
if (isRealElement) {
// mounting to a real element
// check if this is server-rendered content and if we can perform
// a successful hydration.
if (oldVnode.nodeType === 1 && oldVnode.hasAttribute('server-rendered')) {
oldVnode.removeAttribute('server-rendered');
hydrating = true;
}
if (hydrating) {
if (hydrate(oldVnode, vnode, insertedVnodeQueue)) {
invokeInsertHook(vnode, insertedVnodeQueue, true);
return oldVnode
} else if (process.env.NODE_ENV !== 'production') {
warn(
'The client-side rendered virtual DOM tree is not matching ' +
'server-rendered content. This is likely caused by incorrect ' +
'HTML markup, for example nesting block-level elements inside ' +
'<p>, or missing <tbody>. Bailing hydration and performing ' +
'full client-side render.'
);
}
}
// either not server-rendered, or hydration failed.
// create an empty node and replace it
oldVnode = emptyNodeAt(oldVnode);
}
// replacing existing element
elm = oldVnode.elm;
parent = nodeOps.parentNode(elm);
createElm(vnode, insertedVnodeQueue, parent, nodeOps.nextSibling(elm));
if (vnode.parent) {
// component root element replaced.
// update parent placeholder node element, recursively
var ancestor = vnode.parent;
while (ancestor) {
ancestor.elm = vnode.elm;
ancestor = ancestor.parent;
}
if (isPatchable(vnode)) {
for (var i = 0; i < cbs.create.length; ++i) {
cbs.create[i](emptyNode, vnode.parent);
}
}
}
if (parent !== null) {
removeVnodes(parent, [oldVnode], 0, 0);
} else if (isDef(oldVnode.tag)) {
invokeDestroyHook(oldVnode);
}
}
}
invokeInsertHook(vnode, insertedVnodeQueue, isInitialPatch);
return vnode.elm
}
}
/* */
var directives = {
create: updateDirectives,
update: updateDirectives,
destroy: function unbindDirectives (vnode) {
updateDirectives(vnode, emptyNode);
}
};
function updateDirectives (oldVnode, vnode) {
if (oldVnode.data.directives || vnode.data.directives) {
_update(oldVnode, vnode);
}
}
function _update (oldVnode, vnode) {
var isCreate = oldVnode === emptyNode;
var isDestroy = vnode === emptyNode;
var oldDirs = normalizeDirectives$1(oldVnode.data.directives, oldVnode.context);
var newDirs = normalizeDirectives$1(vnode.data.directives, vnode.context);
var dirsWithInsert = [];
var dirsWithPostpatch = [];
var key, oldDir, dir;
for (key in newDirs) {
oldDir = oldDirs[key];
dir = newDirs[key];
if (!oldDir) {
// new directive, bind
callHook$1(dir, 'bind', vnode, oldVnode);
if (dir.def && dir.def.inserted) {
dirsWithInsert.push(dir);
}
} else {
// existing directive, update
dir.oldValue = oldDir.value;
callHook$1(dir, 'update', vnode, oldVnode);
if (dir.def && dir.def.componentUpdated) {
dirsWithPostpatch.push(dir);
}
}
}
if (dirsWithInsert.length) {
var callInsert = function () {
for (var i = 0; i < dirsWithInsert.length; i++) {
callHook$1(dirsWithInsert[i], 'inserted', vnode, oldVnode);
}
};
if (isCreate) {
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', callInsert, 'dir-insert');
} else {
callInsert();
}
}
if (dirsWithPostpatch.length) {
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'postpatch', function () {
for (var i = 0; i < dirsWithPostpatch.length; i++) {
callHook$1(dirsWithPostpatch[i], 'componentUpdated', vnode, oldVnode);
}
}, 'dir-postpatch');
}
if (!isCreate) {
for (key in oldDirs) {
if (!newDirs[key]) {
// no longer present, unbind
callHook$1(oldDirs[key], 'unbind', oldVnode, oldVnode, isDestroy);
}
}
}
}
var emptyModifiers = Object.create(null);
function normalizeDirectives$1 (
dirs,
vm
) {
var res = Object.create(null);
if (!dirs) {
return res
}
var i, dir;
for (i = 0; i < dirs.length; i++) {
dir = dirs[i];
if (!dir.modifiers) {
dir.modifiers = emptyModifiers;
}
res[getRawDirName(dir)] = dir;
dir.def = resolveAsset(vm.$options, 'directives', dir.name, true);
}
return res
}
function getRawDirName (dir) {
return dir.rawName || ((dir.name) + "." + (Object.keys(dir.modifiers || {}).join('.')))
}
function callHook$1 (dir, hook, vnode, oldVnode, isDestroy) {
var fn = dir.def && dir.def[hook];
if (fn) {
fn(vnode.elm, dir, vnode, oldVnode, isDestroy);
}
}
var baseModules = [
ref,
directives
];
/* */
function updateAttrs (oldVnode, vnode) {
if (!oldVnode.data.attrs && !vnode.data.attrs) {
return
}
var key, cur, old;
var elm = vnode.elm;
var oldAttrs = oldVnode.data.attrs || {};
var attrs = vnode.data.attrs || {};
// clone observed objects, as the user probably wants to mutate it
if (attrs.__ob__) {
attrs = vnode.data.attrs = extend({}, attrs);
}
for (key in attrs) {
cur = attrs[key];
old = oldAttrs[key];
if (old !== cur) {
setAttr(elm, key, cur);
}
}
// #4391: in IE9, setting type can reset value for input[type=radio]
/* istanbul ignore if */
if (isIE9 && attrs.value !== oldAttrs.value) {
setAttr(elm, 'value', attrs.value);
}
for (key in oldAttrs) {
if (attrs[key] == null) {
if (isXlink(key)) {
elm.removeAttributeNS(xlinkNS, getXlinkProp(key));
} else if (!isEnumeratedAttr(key)) {
elm.removeAttribute(key);
}
}
}
}
function setAttr (el, key, value) {
if (isBooleanAttr(key)) {
// set attribute for blank value
// e.g. <option disabled>Select one</option>
if (isFalsyAttrValue(value)) {
el.removeAttribute(key);
} else {
el.setAttribute(key, key);
}
} else if (isEnumeratedAttr(key)) {
el.setAttribute(key, isFalsyAttrValue(value) || value === 'false' ? 'false' : 'true');
} else if (isXlink(key)) {
if (isFalsyAttrValue(value)) {
el.removeAttributeNS(xlinkNS, getXlinkProp(key));
} else {
el.setAttributeNS(xlinkNS, key, value);
}
} else {
if (isFalsyAttrValue(value)) {
el.removeAttribute(key);
} else {
el.setAttribute(key, value);
}
}
}
var attrs = {
create: updateAttrs,
update: updateAttrs
};
/* */
function updateClass (oldVnode, vnode) {
var el = vnode.elm;
var data = vnode.data;
var oldData = oldVnode.data;
if (!data.staticClass && !data.class &&
(!oldData || (!oldData.staticClass && !oldData.class))) {
return
}
var cls = genClassForVnode(vnode);
// handle transition classes
var transitionClass = el._transitionClasses;
if (transitionClass) {
cls = concat(cls, stringifyClass(transitionClass));
}
// set the class
if (cls !== el._prevClass) {
el.setAttribute('class', cls);
el._prevClass = cls;
}
}
var klass = {
create: updateClass,
update: updateClass
};
/* */
var target$1;
function add$2 (event, handler, once, capture) {
if (once) {
var oldHandler = handler;
handler = function (ev) {
remove$3(event, handler, capture);
arguments.length === 1
? oldHandler(ev)
: oldHandler.apply(null, arguments);
};
}
target$1.addEventListener(event, handler, capture);
}
function remove$3 (event, handler, capture) {
target$1.removeEventListener(event, handler, capture);
}
function updateDOMListeners (oldVnode, vnode) {
if (!oldVnode.data.on && !vnode.data.on) {
return
}
var on = vnode.data.on || {};
var oldOn = oldVnode.data.on || {};
target$1 = vnode.elm;
updateListeners(on, oldOn, add$2, remove$3, vnode.context);
}
var events = {
create: updateDOMListeners,
update: updateDOMListeners
};
/* */
function updateDOMProps (oldVnode, vnode) {
if (!oldVnode.data.domProps && !vnode.data.domProps) {
return
}
var key, cur;
var elm = vnode.elm;
var oldProps = oldVnode.data.domProps || {};
var props = vnode.data.domProps || {};
// clone observed objects, as the user probably wants to mutate it
if (props.__ob__) {
props = vnode.data.domProps = extend({}, props);
}
for (key in oldProps) {
if (props[key] == null) {
elm[key] = '';
}
}
for (key in props) {
cur = props[key];
// ignore children if the node has textContent or innerHTML,
// as these will throw away existing DOM nodes and cause removal errors
// on subsequent patches (#3360)
if (key === 'textContent' || key === 'innerHTML') {
if (vnode.children) { vnode.children.length = 0; }
if (cur === oldProps[key]) { continue }
}
// #4521: if a click event triggers update before the change event is
// dispatched on a checkbox/radio input, the input's checked state will
// be reset and fail to trigger another update.
/* istanbul ignore next */
if (key === 'checked' && !isDirty(elm, cur)) {
continue
}
if (key === 'value') {
// store value as _value as well since
// non-string values will be stringified
elm._value = cur;
// avoid resetting cursor position when value is the same
var strCur = cur == null ? '' : String(cur);
if (shouldUpdateValue(elm, vnode, strCur)) {
elm.value = strCur;
}
} else {
elm[key] = cur;
}
}
}
// check platforms/web/util/attrs.js acceptValue
function shouldUpdateValue (
elm,
vnode,
checkVal
) {
if (!elm.composing && (
vnode.tag === 'option' ||
isDirty(elm, checkVal) ||
isInputChanged(vnode, checkVal)
)) {
return true
}
return false
}
function isDirty (elm, checkVal) {
return document.activeElement !== elm && elm.value !== checkVal
}
function isInputChanged (vnode, newVal) {
var value = vnode.elm.value;
var modifiers = vnode.elm._vModifiers; // injected by v-model runtime
if ((modifiers && modifiers.number) || vnode.elm.type === 'number') {
return toNumber(value) !== toNumber(newVal)
}
if (modifiers && modifiers.trim) {
return value.trim() !== newVal.trim()
}
return value !== newVal
}
var domProps = {
create: updateDOMProps,
update: updateDOMProps
};
/* */
var parseStyleText = cached(function (cssText) {
var res = {};
var listDelimiter = /;(?![^(]*\))/g;
var propertyDelimiter = /:(.+)/;
cssText.split(listDelimiter).forEach(function (item) {
if (item) {
var tmp = item.split(propertyDelimiter);
tmp.length > 1 && (res[tmp[0].trim()] = tmp[1].trim());
}
});
return res
});
// merge static and dynamic style data on the same vnode
function normalizeStyleData (data) {
var style = normalizeStyleBinding(data.style);
// static style is pre-processed into an object during compilation
// and is always a fresh object, so it's safe to merge into it
return data.staticStyle
? extend(data.staticStyle, style)
: style
}
// normalize possible array / string values into Object
function normalizeStyleBinding (bindingStyle) {
if (Array.isArray(bindingStyle)) {
return toObject(bindingStyle)
}
if (typeof bindingStyle === 'string') {
return parseStyleText(bindingStyle)
}
return bindingStyle
}
/**
* parent component style should be after child's
* so that parent component's style could override it
*/
function getStyle (vnode, checkChild) {
var res = {};
var styleData;
if (checkChild) {
var childNode = vnode;
while (childNode.child) {
childNode = childNode.child._vnode;
if (childNode.data && (styleData = normalizeStyleData(childNode.data))) {
extend(res, styleData);
}
}
}
if ((styleData = normalizeStyleData(vnode.data))) {
extend(res, styleData);
}
var parentNode = vnode;
while ((parentNode = parentNode.parent)) {
if (parentNode.data && (styleData = normalizeStyleData(parentNode.data))) {
extend(res, styleData);
}
}
return res
}
/* */
var cssVarRE = /^--/;
var importantRE = /\s*!important$/;
var setProp = function (el, name, val) {
/* istanbul ignore if */
if (cssVarRE.test(name)) {
el.style.setProperty(name, val);
} else if (importantRE.test(val)) {
el.style.setProperty(name, val.replace(importantRE, ''), 'important');
} else {
el.style[normalize(name)] = val;
}
};
var prefixes = ['Webkit', 'Moz', 'ms'];
var testEl;
var normalize = cached(function (prop) {
testEl = testEl || document.createElement('div');
prop = camelize(prop);
if (prop !== 'filter' && (prop in testEl.style)) {
return prop
}
var upper = prop.charAt(0).toUpperCase() + prop.slice(1);
for (var i = 0; i < prefixes.length; i++) {
var prefixed = prefixes[i] + upper;
if (prefixed in testEl.style) {
return prefixed
}
}
});
function updateStyle (oldVnode, vnode) {
var data = vnode.data;
var oldData = oldVnode.data;
if (!data.staticStyle && !data.style &&
!oldData.staticStyle && !oldData.style) {
return
}
var cur, name;
var el = vnode.elm;
var oldStaticStyle = oldVnode.data.staticStyle;
var oldStyleBinding = oldVnode.data.style || {};
// if static style exists, stylebinding already merged into it when doing normalizeStyleData
var oldStyle = oldStaticStyle || oldStyleBinding;
var style = normalizeStyleBinding(vnode.data.style) || {};
vnode.data.style = style.__ob__ ? extend({}, style) : style;
var newStyle = getStyle(vnode, true);
for (name in oldStyle) {
if (newStyle[name] == null) {
setProp(el, name, '');
}
}
for (name in newStyle) {
cur = newStyle[name];
if (cur !== oldStyle[name]) {
// ie9 setting to null has no effect, must use empty string
setProp(el, name, cur == null ? '' : cur);
}
}
}
var style = {
create: updateStyle,
update: updateStyle
};
/* */
/**
* Add class with compatibility for SVG since classList is not supported on
* SVG elements in IE
*/
function addClass (el, cls) {
/* istanbul ignore if */
if (!cls || !cls.trim()) {
return
}
/* istanbul ignore else */
if (el.classList) {
if (cls.indexOf(' ') > -1) {
cls.split(/\s+/).forEach(function (c) { return el.classList.add(c); });
} else {
el.classList.add(cls);
}
} else {
var cur = ' ' + el.getAttribute('class') + ' ';
if (cur.indexOf(' ' + cls + ' ') < 0) {
el.setAttribute('class', (cur + cls).trim());
}
}
}
/**
* Remove class with compatibility for SVG since classList is not supported on
* SVG elements in IE
*/
function removeClass (el, cls) {
/* istanbul ignore if */
if (!cls || !cls.trim()) {
return
}
/* istanbul ignore else */
if (el.classList) {
if (cls.indexOf(' ') > -1) {
cls.split(/\s+/).forEach(function (c) { return el.classList.remove(c); });
} else {
el.classList.remove(cls);
}
} else {
var cur = ' ' + el.getAttribute('class') + ' ';
var tar = ' ' + cls + ' ';
while (cur.indexOf(tar) >= 0) {
cur = cur.replace(tar, ' ');
}
el.setAttribute('class', cur.trim());
}
}
/* */
var hasTransition = inBrowser && !isIE9;
var TRANSITION = 'transition';
var ANIMATION = 'animation';
// Transition property/event sniffing
var transitionProp = 'transition';
var transitionEndEvent = 'transitionend';
var animationProp = 'animation';
var animationEndEvent = 'animationend';
if (hasTransition) {
/* istanbul ignore if */
if (window.ontransitionend === undefined &&
window.onwebkittransitionend !== undefined) {
transitionProp = 'WebkitTransition';
transitionEndEvent = 'webkitTransitionEnd';
}
if (window.onanimationend === undefined &&
window.onwebkitanimationend !== undefined) {
animationProp = 'WebkitAnimation';
animationEndEvent = 'webkitAnimationEnd';
}
}
var raf = (inBrowser && window.requestAnimationFrame) || setTimeout;
function nextFrame (fn) {
raf(function () {
raf(fn);
});
}
function addTransitionClass (el, cls) {
(el._transitionClasses || (el._transitionClasses = [])).push(cls);
addClass(el, cls);
}
function removeTransitionClass (el, cls) {
if (el._transitionClasses) {
remove$1(el._transitionClasses, cls);
}
removeClass(el, cls);
}
function whenTransitionEnds (
el,
expectedType,
cb
) {
var ref = getTransitionInfo(el, expectedType);
var type = ref.type;
var timeout = ref.timeout;
var propCount = ref.propCount;
if (!type) { return cb() }
var event = type === TRANSITION ? transitionEndEvent : animationEndEvent;
var ended = 0;
var end = function () {
el.removeEventListener(event, onEnd);
cb();
};
var onEnd = function (e) {
if (e.target === el) {
if (++ended >= propCount) {
end();
}
}
};
setTimeout(function () {
if (ended < propCount) {
end();
}
}, timeout + 1);
el.addEventListener(event, onEnd);
}
var transformRE = /\b(transform|all)(,|$)/;
function getTransitionInfo (el, expectedType) {
var styles = window.getComputedStyle(el);
var transitioneDelays = styles[transitionProp + 'Delay'].split(', ');
var transitionDurations = styles[transitionProp + 'Duration'].split(', ');
var transitionTimeout = getTimeout(transitioneDelays, transitionDurations);
var animationDelays = styles[animationProp + 'Delay'].split(', ');
var animationDurations = styles[animationProp + 'Duration'].split(', ');
var animationTimeout = getTimeout(animationDelays, animationDurations);
var type;
var timeout = 0;
var propCount = 0;
/* istanbul ignore if */
if (expectedType === TRANSITION) {
if (transitionTimeout > 0) {
type = TRANSITION;
timeout = transitionTimeout;
propCount = transitionDurations.length;
}
} else if (expectedType === ANIMATION) {
if (animationTimeout > 0) {
type = ANIMATION;
timeout = animationTimeout;
propCount = animationDurations.length;
}
} else {
timeout = Math.max(transitionTimeout, animationTimeout);
type = timeout > 0
? transitionTimeout > animationTimeout
? TRANSITION
: ANIMATION
: null;
propCount = type
? type === TRANSITION
? transitionDurations.length
: animationDurations.length
: 0;
}
var hasTransform =
type === TRANSITION &&
transformRE.test(styles[transitionProp + 'Property']);
return {
type: type,
timeout: timeout,
propCount: propCount,
hasTransform: hasTransform
}
}
function getTimeout (delays, durations) {
/* istanbul ignore next */
while (delays.length < durations.length) {
delays = delays.concat(delays);
}
return Math.max.apply(null, durations.map(function (d, i) {
return toMs(d) + toMs(delays[i])
}))
}
function toMs (s) {
return Number(s.slice(0, -1)) * 1000
}
/* */
function enter (vnode, toggleDisplay) {
var el = vnode.elm;
// call leave callback now
if (el._leaveCb) {
el._leaveCb.cancelled = true;
el._leaveCb();
}
var data = resolveTransition(vnode.data.transition);
if (!data) {
return
}
/* istanbul ignore if */
if (el._enterCb || el.nodeType !== 1) {
return
}
var css = data.css;
var type = data.type;
var enterClass = data.enterClass;
var enterToClass = data.enterToClass;
var enterActiveClass = data.enterActiveClass;
var appearClass = data.appearClass;
var appearToClass = data.appearToClass;
var appearActiveClass = data.appearActiveClass;
var beforeEnter = data.beforeEnter;
var enter = data.enter;
var afterEnter = data.afterEnter;
var enterCancelled = data.enterCancelled;
var beforeAppear = data.beforeAppear;
var appear = data.appear;
var afterAppear = data.afterAppear;
var appearCancelled = data.appearCancelled;
// activeInstance will always be the <transition> component managing this
// transition. One edge case to check is when the <transition> is placed
// as the root node of a child component. In that case we need to check
// <transition>'s parent for appear check.
var context = activeInstance;
var transitionNode = activeInstance.$vnode;
while (transitionNode && transitionNode.parent) {
transitionNode = transitionNode.parent;
context = transitionNode.context;
}
var isAppear = !context._isMounted || !vnode.isRootInsert;
if (isAppear && !appear && appear !== '') {
return
}
var startClass = isAppear ? appearClass : enterClass;
var activeClass = isAppear ? appearActiveClass : enterActiveClass;
var toClass = isAppear ? appearToClass : enterToClass;
var beforeEnterHook = isAppear ? (beforeAppear || beforeEnter) : beforeEnter;
var enterHook = isAppear ? (typeof appear === 'function' ? appear : enter) : enter;
var afterEnterHook = isAppear ? (afterAppear || afterEnter) : afterEnter;
var enterCancelledHook = isAppear ? (appearCancelled || enterCancelled) : enterCancelled;
var expectsCSS = css !== false && !isIE9;
var userWantsControl =
enterHook &&
// enterHook may be a bound method which exposes
// the length of original fn as _length
(enterHook._length || enterHook.length) > 1;
var cb = el._enterCb = once(function () {
if (expectsCSS) {
removeTransitionClass(el, toClass);
removeTransitionClass(el, activeClass);
}
if (cb.cancelled) {
if (expectsCSS) {
removeTransitionClass(el, startClass);
}
enterCancelledHook && enterCancelledHook(el);
} else {
afterEnterHook && afterEnterHook(el);
}
el._enterCb = null;
});
if (!vnode.data.show) {
// remove pending leave element on enter by injecting an insert hook
mergeVNodeHook(vnode.data.hook || (vnode.data.hook = {}), 'insert', function () {
var parent = el.parentNode;
var pendingNode = parent && parent._pending && parent._pending[vnode.key];
if (pendingNode &&
pendingNode.context === vnode.context &&
pendingNode.tag === vnode.tag &&
pendingNode.elm._leaveCb) {
pendingNode.elm._leaveCb();
}
enterHook && enterHook(el, cb);
}, 'transition-insert');
}
// start enter transition
beforeEnterHook && beforeEnterHook(el);
if (expectsCSS) {
addTransitionClass(el, startClass);
addTransitionClass(el, activeClass);
nextFrame(function () {
addTransitionClass(el, toClass);
removeTransitionClass(el, startClass);
if (!cb.cancelled && !userWantsControl) {
whenTransitionEnds(el, type, cb);
}
});
}
if (vnode.data.show) {
toggleDisplay && toggleDisplay();
enterHook && enterHook(el, cb);
}
if (!expectsCSS && !userWantsControl) {
cb();
}
}
function leave (vnode, rm) {
var el = vnode.elm;
// call enter callback now
if (el._enterCb) {
el._enterCb.cancelled = true;
el._enterCb();
}
var data = resolveTransition(vnode.data.transition);
if (!data) {
return rm()
}
/* istanbul ignore if */
if (el._leaveCb || el.nodeType !== 1) {
return
}
var css = data.css;
var type = data.type;
var leaveClass = data.leaveClass;
var leaveToClass = data.leaveToClass;
var leaveActiveClass = data.leaveActiveClass;
var beforeLeave = data.beforeLeave;
var leave = data.leave;
var afterLeave = data.afterLeave;
var leaveCancelled = data.leaveCancelled;
var delayLeave = data.delayLeave;
var expectsCSS = css !== false && !isIE9;
var userWantsControl =
leave &&
// leave hook may be a bound method which exposes
// the length of original fn as _length
(leave._length || leave.length) > 1;
var cb = el._leaveCb = once(function () {
if (el.parentNode && el.parentNode._pending) {
el.parentNode._pending[vnode.key] = null;
}
if (expectsCSS) {
removeTransitionClass(el, leaveToClass);
removeTransitionClass(el, leaveActiveClass);
}
if (cb.cancelled) {
if (expectsCSS) {
removeTransitionClass(el, leaveClass);
}
leaveCancelled && leaveCancelled(el);
} else {
rm();
afterLeave && afterLeave(el);
}
el._leaveCb = null;
});
if (delayLeave) {
delayLeave(performLeave);
} else {
performLeave();
}
function performLeave () {
// the delayed leave may have already been cancelled
if (cb.cancelled) {
return
}
// record leaving element
if (!vnode.data.show) {
(el.parentNode._pending || (el.parentNode._pending = {}))[vnode.key] = vnode;
}
beforeLeave && beforeLeave(el);
if (expectsCSS) {
addTransitionClass(el, leaveClass);
addTransitionClass(el, leaveActiveClass);
nextFrame(function () {
addTransitionClass(el, leaveToClass);
removeTransitionClass(el, leaveClass);
if (!cb.cancelled && !userWantsControl) {
whenTransitionEnds(el, type, cb);
}
});
}
leave && leave(el, cb);
if (!expectsCSS && !userWantsControl) {
cb();
}
}
}
function resolveTransition (def$$1) {
if (!def$$1) {
return
}
/* istanbul ignore else */
if (typeof def$$1 === 'object') {
var res = {};
if (def$$1.css !== false) {
extend(res, autoCssTransition(def$$1.name || 'v'));
}
extend(res, def$$1);
return res
} else if (typeof def$$1 === 'string') {
return autoCssTransition(def$$1)
}
}
var autoCssTransition = cached(function (name) {
return {
enterClass: (name + "-enter"),
leaveClass: (name + "-leave"),
appearClass: (name + "-enter"),
enterToClass: (name + "-enter-to"),
leaveToClass: (name + "-leave-to"),
appearToClass: (name + "-enter-to"),
enterActiveClass: (name + "-enter-active"),
leaveActiveClass: (name + "-leave-active"),
appearActiveClass: (name + "-enter-active")
}
});
function once (fn) {
var called = false;
return function () {
if (!called) {
called = true;
fn();
}
}
}
function _enter (_, vnode) {
if (!vnode.data.show) {
enter(vnode);
}
}
var transition = inBrowser ? {
create: _enter,
activate: _enter,
remove: function remove (vnode, rm) {
/* istanbul ignore else */
if (!vnode.data.show) {
leave(vnode, rm);
} else {
rm();
}
}
} : {};
var platformModules = [
attrs,
klass,
events,
domProps,
style,
transition
];
/* */
// the directive module should be applied last, after all
// built-in modules have been applied.
var modules = platformModules.concat(baseModules);
var patch$1 = createPatchFunction({ nodeOps: nodeOps, modules: modules });
/**
* Not type checking this file because flow doesn't like attaching
* properties to Elements.
*/
var modelableTagRE = /^input|select|textarea|vue-component-[0-9]+(-[0-9a-zA-Z_-]*)?$/;
/* istanbul ignore if */
if (isIE9) {
// http://www.matts411.com/post/internet-explorer-9-oninput/
document.addEventListener('selectionchange', function () {
var el = document.activeElement;
if (el && el.vmodel) {
trigger(el, 'input');
}
});
}
var model = {
inserted: function inserted (el, binding, vnode) {
if (process.env.NODE_ENV !== 'production') {
if (!modelableTagRE.test(vnode.tag)) {
warn(
"v-model is not supported on element type: <" + (vnode.tag) + ">. " +
'If you are working with contenteditable, it\'s recommended to ' +
'wrap a library dedicated for that purpose inside a custom component.',
vnode.context
);
}
}
if (vnode.tag === 'select') {
var cb = function () {
setSelected(el, binding, vnode.context);
};
cb();
/* istanbul ignore if */
if (isIE || isEdge) {
setTimeout(cb, 0);
}
} else if (vnode.tag === 'textarea' || el.type === 'text') {
el._vModifiers = binding.modifiers;
if (!binding.modifiers.lazy) {
if (!isAndroid) {
el.addEventListener('compositionstart', onCompositionStart);
el.addEventListener('compositionend', onCompositionEnd);
}
/* istanbul ignore if */
if (isIE9) {
el.vmodel = true;
}
}
}
},
componentUpdated: function componentUpdated (el, binding, vnode) {
if (vnode.tag === 'select') {
setSelected(el, binding, vnode.context);
// in case the options rendered by v-for have changed,
// it's possible that the value is out-of-sync with the rendered options.
// detect such cases and filter out values that no longer has a matching
// option in the DOM.
var needReset = el.multiple
? binding.value.some(function (v) { return hasNoMatchingOption(v, el.options); })
: binding.value !== binding.oldValue && hasNoMatchingOption(binding.value, el.options);
if (needReset) {
trigger(el, 'change');
}
}
}
};
function setSelected (el, binding, vm) {
var value = binding.value;
var isMultiple = el.multiple;
if (isMultiple && !Array.isArray(value)) {
process.env.NODE_ENV !== 'production' && warn(
"<select multiple v-model=\"" + (binding.expression) + "\"> " +
"expects an Array value for its binding, but got " + (Object.prototype.toString.call(value).slice(8, -1)),
vm
);
return
}
var selected, option;
for (var i = 0, l = el.options.length; i < l; i++) {
option = el.options[i];
if (isMultiple) {
selected = looseIndexOf(value, getValue(option)) > -1;
if (option.selected !== selected) {
option.selected = selected;
}
} else {
if (looseEqual(getValue(option), value)) {
if (el.selectedIndex !== i) {
el.selectedIndex = i;
}
return
}
}
}
if (!isMultiple) {
el.selectedIndex = -1;
}
}
function hasNoMatchingOption (value, options) {
for (var i = 0, l = options.length; i < l; i++) {
if (looseEqual(getValue(options[i]), value)) {
return false
}
}
return true
}
function getValue (option) {
return '_value' in option
? option._value
: option.value
}
function onCompositionStart (e) {
e.target.composing = true;
}
function onCompositionEnd (e) {
e.target.composing = false;
trigger(e.target, 'input');
}
function trigger (el, type) {
var e = document.createEvent('HTMLEvents');
e.initEvent(type, true, true);
el.dispatchEvent(e);
}
/* */
// recursively search for possible transition defined inside the component root
function locateNode (vnode) {
return vnode.child && (!vnode.data || !vnode.data.transition)
? locateNode(vnode.child._vnode)
: vnode
}
var show = {
bind: function bind (el, ref, vnode) {
var value = ref.value;
vnode = locateNode(vnode);
var transition = vnode.data && vnode.data.transition;
var originalDisplay = el.__vOriginalDisplay =
el.style.display === 'none' ? '' : el.style.display;
if (value && transition && !isIE9) {
vnode.data.show = true;
enter(vnode, function () {
el.style.display = originalDisplay;
});
} else {
el.style.display = value ? originalDisplay : 'none';
}
},
update: function update (el, ref, vnode) {
var value = ref.value;
var oldValue = ref.oldValue;
/* istanbul ignore if */
if (value === oldValue) { return }
vnode = locateNode(vnode);
var transition = vnode.data && vnode.data.transition;
if (transition && !isIE9) {
vnode.data.show = true;
if (value) {
enter(vnode, function () {
el.style.display = el.__vOriginalDisplay;
});
} else {
leave(vnode, function () {
el.style.display = 'none';
});
}
} else {
el.style.display = value ? el.__vOriginalDisplay : 'none';
}
},
unbind: function unbind (
el,
binding,
vnode,
oldVnode,
isDestroy
) {
if (!isDestroy) {
el.style.display = el.__vOriginalDisplay;
}
}
};
var platformDirectives = {
model: model,
show: show
};
/* */
// Provides transition support for a single element/component.
// supports transition mode (out-in / in-out)
var transitionProps = {
name: String,
appear: Boolean,
css: Boolean,
mode: String,
type: String,
enterClass: String,
leaveClass: String,
enterToClass: String,
leaveToClass: String,
enterActiveClass: String,
leaveActiveClass: String,
appearClass: String,
appearActiveClass: String,
appearToClass: String
};
// in case the child is also an abstract component, e.g. <keep-alive>
// we want to recursively retrieve the real component to be rendered
function getRealChild (vnode) {
var compOptions = vnode && vnode.componentOptions;
if (compOptions && compOptions.Ctor.options.abstract) {
return getRealChild(getFirstComponentChild(compOptions.children))
} else {
return vnode
}
}
function extractTransitionData (comp) {
var data = {};
var options = comp.$options;
// props
for (var key in options.propsData) {
data[key] = comp[key];
}
// events.
// extract listeners and pass them directly to the transition methods
var listeners = options._parentListeners;
for (var key$1 in listeners) {
data[camelize(key$1)] = listeners[key$1].fn;
}
return data
}
function placeholder (h, rawChild) {
return /\d-keep-alive$/.test(rawChild.tag)
? h('keep-alive')
: null
}
function hasParentTransition (vnode) {
while ((vnode = vnode.parent)) {
if (vnode.data.transition) {
return true
}
}
}
function isSameChild (child, oldChild) {
return oldChild.key === child.key && oldChild.tag === child.tag
}
var Transition = {
name: 'transition',
props: transitionProps,
abstract: true,
render: function render (h) {
var this$1 = this;
var children = this.$slots.default;
if (!children) {
return
}
// filter out text nodes (possible whitespaces)
children = children.filter(function (c) { return c.tag; });
/* istanbul ignore if */
if (!children.length) {
return
}
// warn multiple elements
if (process.env.NODE_ENV !== 'production' && children.length > 1) {
warn(
'<transition> can only be used on a single element. Use ' +
'<transition-group> for lists.',
this.$parent
);
}
var mode = this.mode;
// warn invalid mode
if (process.env.NODE_ENV !== 'production' &&
mode && mode !== 'in-out' && mode !== 'out-in') {
warn(
'invalid <transition> mode: ' + mode,
this.$parent
);
}
var rawChild = children[0];
// if this is a component root node and the component's
// parent container node also has transition, skip.
if (hasParentTransition(this.$vnode)) {
return rawChild
}
// apply transition data to child
// use getRealChild() to ignore abstract components e.g. keep-alive
var child = getRealChild(rawChild);
/* istanbul ignore if */
if (!child) {
return rawChild
}
if (this._leaving) {
return placeholder(h, rawChild)
}
var key = child.key = child.key == null || child.isStatic
? ("__v" + (child.tag + this._uid) + "__")
: child.key;
var data = (child.data || (child.data = {})).transition = extractTransitionData(this);
var oldRawChild = this._vnode;
var oldChild = getRealChild(oldRawChild);
// mark v-show
// so that the transition module can hand over the control to the directive
if (child.data.directives && child.data.directives.some(function (d) { return d.name === 'show'; })) {
child.data.show = true;
}
if (oldChild && oldChild.data && !isSameChild(child, oldChild)) {
// replace old child transition data with fresh one
// important for dynamic transitions!
var oldData = oldChild && (oldChild.data.transition = extend({}, data));
// handle transition mode
if (mode === 'out-in') {
// return placeholder node and queue update when leave finishes
this._leaving = true;
mergeVNodeHook(oldData, 'afterLeave', function () {
this$1._leaving = false;
this$1.$forceUpdate();
}, key);
return placeholder(h, rawChild)
} else if (mode === 'in-out') {
var delayedLeave;
var performLeave = function () { delayedLeave(); };
mergeVNodeHook(data, 'afterEnter', performLeave, key);
mergeVNodeHook(data, 'enterCancelled', performLeave, key);
mergeVNodeHook(oldData, 'delayLeave', function (leave) {
delayedLeave = leave;
}, key);
}
}
return rawChild
}
};
/* */
// Provides transition support for list items.
// supports move transitions using the FLIP technique.
// Because the vdom's children update algorithm is "unstable" - i.e.
// it doesn't guarantee the relative positioning of removed elements,
// we force transition-group to update its children into two passes:
// in the first pass, we remove all nodes that need to be removed,
// triggering their leaving transition; in the second pass, we insert/move
// into the final disired state. This way in the second pass removed
// nodes will remain where they should be.
var props = extend({
tag: String,
moveClass: String
}, transitionProps);
delete props.mode;
var TransitionGroup = {
props: props,
render: function render (h) {
var tag = this.tag || this.$vnode.data.tag || 'span';
var map = Object.create(null);
var prevChildren = this.prevChildren = this.children;
var rawChildren = this.$slots.default || [];
var children = this.children = [];
var transitionData = extractTransitionData(this);
for (var i = 0; i < rawChildren.length; i++) {
var c = rawChildren[i];
if (c.tag) {
if (c.key != null && String(c.key).indexOf('__vlist') !== 0) {
children.push(c);
map[c.key] = c
;(c.data || (c.data = {})).transition = transitionData;
} else if (process.env.NODE_ENV !== 'production') {
var opts = c.componentOptions;
var name = opts
? (opts.Ctor.options.name || opts.tag)
: c.tag;
warn(("<transition-group> children must be keyed: <" + name + ">"));
}
}
}
if (prevChildren) {
var kept = [];
var removed = [];
for (var i$1 = 0; i$1 < prevChildren.length; i$1++) {
var c$1 = prevChildren[i$1];
c$1.data.transition = transitionData;
c$1.data.pos = c$1.elm.getBoundingClientRect();
if (map[c$1.key]) {
kept.push(c$1);
} else {
removed.push(c$1);
}
}
this.kept = h(tag, null, kept);
this.removed = removed;
}
return h(tag, null, children)
},
beforeUpdate: function beforeUpdate () {
// force removing pass
this.__patch__(
this._vnode,
this.kept,
false, // hydrating
true // removeOnly (!important, avoids unnecessary moves)
);
this._vnode = this.kept;
},
updated: function updated () {
var children = this.prevChildren;
var moveClass = this.moveClass || ((this.name || 'v') + '-move');
if (!children.length || !this.hasMove(children[0].elm, moveClass)) {
return
}
// we divide the work into three loops to avoid mixing DOM reads and writes
// in each iteration - which helps prevent layout thrashing.
children.forEach(callPendingCbs);
children.forEach(recordPosition);
children.forEach(applyTranslation);
// force reflow to put everything in position
var f = document.body.offsetHeight; // eslint-disable-line
children.forEach(function (c) {
if (c.data.moved) {
var el = c.elm;
var s = el.style;
addTransitionClass(el, moveClass);
s.transform = s.WebkitTransform = s.transitionDuration = '';
el.addEventListener(transitionEndEvent, el._moveCb = function cb (e) {
if (!e || /transform$/.test(e.propertyName)) {
el.removeEventListener(transitionEndEvent, cb);
el._moveCb = null;
removeTransitionClass(el, moveClass);
}
});
}
});
},
methods: {
hasMove: function hasMove (el, moveClass) {
/* istanbul ignore if */
if (!hasTransition) {
return false
}
if (this._hasMove != null) {
return this._hasMove
}
addTransitionClass(el, moveClass);
var info = getTransitionInfo(el);
removeTransitionClass(el, moveClass);
return (this._hasMove = info.hasTransform)
}
}
};
function callPendingCbs (c) {
/* istanbul ignore if */
if (c.elm._moveCb) {
c.elm._moveCb();
}
/* istanbul ignore if */
if (c.elm._enterCb) {
c.elm._enterCb();
}
}
function recordPosition (c) {
c.data.newPos = c.elm.getBoundingClientRect();
}
function applyTranslation (c) {
var oldPos = c.data.pos;
var newPos = c.data.newPos;
var dx = oldPos.left - newPos.left;
var dy = oldPos.top - newPos.top;
if (dx || dy) {
c.data.moved = true;
var s = c.elm.style;
s.transform = s.WebkitTransform = "translate(" + dx + "px," + dy + "px)";
s.transitionDuration = '0s';
}
}
var platformComponents = {
Transition: Transition,
TransitionGroup: TransitionGroup
};
/* */
// install platform specific utils
Vue$2.config.isUnknownElement = isUnknownElement;
Vue$2.config.isReservedTag = isReservedTag;
Vue$2.config.getTagNamespace = getTagNamespace;
Vue$2.config.mustUseProp = mustUseProp;
// install platform runtime directives & components
extend(Vue$2.options.directives, platformDirectives);
extend(Vue$2.options.components, platformComponents);
// install platform patch function
Vue$2.prototype.__patch__ = inBrowser ? patch$1 : noop;
// wrap mount
Vue$2.prototype.$mount = function (
el,
hydrating
) {
el = el && inBrowser ? query(el) : undefined;
return this._mount(el, hydrating)
};
if (process.env.NODE_ENV !== 'production' &&
inBrowser && typeof console !== 'undefined') {
console[console.info ? 'info' : 'log'](
"You are running Vue in development mode.\n" +
"Make sure to turn on production mode when deploying for production.\n" +
"See more tips at https://vuejs.org/guide/deployment.html"
);
}
// devtools global hook
/* istanbul ignore next */
setTimeout(function () {
if (config.devtools) {
if (devtools) {
devtools.emit('init', Vue$2);
} else if (
process.env.NODE_ENV !== 'production' &&
inBrowser && !isEdge && /Chrome\/\d+/.test(window.navigator.userAgent)
) {
console[console.info ? 'info' : 'log'](
'Download the Vue Devtools extension for a better development experience:\n' +
'https://github.com/vuejs/vue-devtools'
);
}
}
}, 0);
module.exports = Vue$2;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10), (function() { return this; }())))
/***/ },
/* 10 */
/***/ function(module, exports) {
// shim for using process in browser
var process = module.exports = {};
// cached from whatever global is present so that test runners that stub it
// don't break things. But we need to wrap it in a try catch in case it is
// wrapped in strict mode code which doesn't define any globals. It's inside a
// function because try/catches deoptimize in certain engines.
var cachedSetTimeout;
var cachedClearTimeout;
function defaultSetTimout() {
throw new Error('setTimeout has not been defined');
}
function defaultClearTimeout () {
throw new Error('clearTimeout has not been defined');
}
(function () {
try {
if (typeof setTimeout === 'function') {
cachedSetTimeout = setTimeout;
} else {
cachedSetTimeout = defaultSetTimout;
}
} catch (e) {
cachedSetTimeout = defaultSetTimout;
}
try {
if (typeof clearTimeout === 'function') {
cachedClearTimeout = clearTimeout;
} else {
cachedClearTimeout = defaultClearTimeout;
}
} catch (e) {
cachedClearTimeout = defaultClearTimeout;
}
} ())
function runTimeout(fun) {
if (cachedSetTimeout === setTimeout) {
//normal enviroments in sane situations
return setTimeout(fun, 0);
}
// if setTimeout wasn't available but was latter defined
if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
cachedSetTimeout = setTimeout;
return setTimeout(fun, 0);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedSetTimeout(fun, 0);
} catch(e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedSetTimeout.call(null, fun, 0);
} catch(e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
return cachedSetTimeout.call(this, fun, 0);
}
}
}
function runClearTimeout(marker) {
if (cachedClearTimeout === clearTimeout) {
//normal enviroments in sane situations
return clearTimeout(marker);
}
// if clearTimeout wasn't available but was latter defined
if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
cachedClearTimeout = clearTimeout;
return clearTimeout(marker);
}
try {
// when when somebody has screwed with setTimeout but no I.E. maddness
return cachedClearTimeout(marker);
} catch (e){
try {
// When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
return cachedClearTimeout.call(null, marker);
} catch (e){
// same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
// Some versions of I.E. have different rules for clearTimeout vs setTimeout
return cachedClearTimeout.call(this, marker);
}
}
}
var queue = [];
var draining = false;
var currentQueue;
var queueIndex = -1;
function cleanUpNextTick() {
if (!draining || !currentQueue) {
return;
}
draining = false;
if (currentQueue.length) {
queue = currentQueue.concat(queue);
} else {
queueIndex = -1;
}
if (queue.length) {
drainQueue();
}
}
function drainQueue() {
if (draining) {
return;
}
var timeout = runTimeout(cleanUpNextTick);
draining = true;
var len = queue.length;
while(len) {
currentQueue = queue;
queue = [];
while (++queueIndex < len) {
if (currentQueue) {
currentQueue[queueIndex].run();
}
}
queueIndex = -1;
len = queue.length;
}
currentQueue = null;
draining = false;
runClearTimeout(timeout);
}
process.nextTick = function (fun) {
var args = new Array(arguments.length - 1);
if (arguments.length > 1) {
for (var i = 1; i < arguments.length; i++) {
args[i - 1] = arguments[i];
}
}
queue.push(new Item(fun, args));
if (queue.length === 1 && !draining) {
runTimeout(drainQueue);
}
};
// v8 likes predictible objects
function Item(fun, array) {
this.fun = fun;
this.array = array;
}
Item.prototype.run = function () {
this.fun.apply(null, this.array);
};
process.title = 'browser';
process.browser = true;
process.env = {};
process.argv = [];
process.version = ''; // empty string to avoid regexp issues
process.versions = {};
function noop() {}
process.on = noop;
process.addListener = noop;
process.once = noop;
process.off = noop;
process.removeListener = noop;
process.removeAllListeners = noop;
process.emit = noop;
process.binding = function (name) {
throw new Error('process.binding is not supported');
};
process.cwd = function () { return '/' };
process.chdir = function (dir) {
throw new Error('process.chdir is not supported');
};
process.umask = function() { return 0; };
/***/ },
/* 11 */
/***/ function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(process) {/**
* vue-router v2.1.1
* (c) 2016 Evan You
* @license MIT
*/
'use strict';
var View = {
name: 'router-view',
functional: true,
props: {
name: {
type: String,
default: 'default'
}
},
render: function render (h, ref) {
var props = ref.props;
var children = ref.children;
var parent = ref.parent;
var data = ref.data;
data.routerView = true
var route = parent.$route
var cache = parent._routerViewCache || (parent._routerViewCache = {})
var depth = 0
var inactive = false
while (parent) {
if (parent.$vnode && parent.$vnode.data.routerView) {
depth++
}
if (parent._inactive) {
inactive = true
}
parent = parent.$parent
}
data.routerViewDepth = depth
var matched = route.matched[depth]
if (!matched) {
return h()
}
var name = props.name
var component = inactive
? cache[name]
: (cache[name] = matched.components[name])
if (!inactive) {
var hooks = data.hook || (data.hook = {})
hooks.init = function (vnode) {
matched.instances[name] = vnode.child
}
hooks.prepatch = function (oldVnode, vnode) {
matched.instances[name] = vnode.child
}
hooks.destroy = function (vnode) {
if (matched.instances[name] === vnode.child) {
matched.instances[name] = undefined
}
}
}
return h(component, data, children)
}
}
/* */
function assert (condition, message) {
if (!condition) {
throw new Error(("[vue-router] " + message))
}
}
function warn (condition, message) {
if (!condition) {
typeof console !== 'undefined' && console.warn(("[vue-router] " + message))
}
}
/* */
var encode = encodeURIComponent
var decode = decodeURIComponent
function resolveQuery (
query,
extraQuery
) {
if ( extraQuery === void 0 ) extraQuery = {};
if (query) {
var parsedQuery
try {
parsedQuery = parseQuery(query)
} catch (e) {
process.env.NODE_ENV !== 'production' && warn(false, e.message)
parsedQuery = {}
}
for (var key in extraQuery) {
parsedQuery[key] = extraQuery[key]
}
return parsedQuery
} else {
return extraQuery
}
}
function parseQuery (query) {
var res = {}
query = query.trim().replace(/^(\?|#|&)/, '')
if (!query) {
return res
}
query.split('&').forEach(function (param) {
var parts = param.replace(/\+/g, ' ').split('=')
var key = decode(parts.shift())
var val = parts.length > 0
? decode(parts.join('='))
: null
if (res[key] === undefined) {
res[key] = val
} else if (Array.isArray(res[key])) {
res[key].push(val)
} else {
res[key] = [res[key], val]
}
})
return res
}
function stringifyQuery (obj) {
var res = obj ? Object.keys(obj).map(function (key) {
var val = obj[key]
if (val === undefined) {
return ''
}
if (val === null) {
return encode(key)
}
if (Array.isArray(val)) {
var result = []
val.slice().forEach(function (val2) {
if (val2 === undefined) {
return
}
if (val2 === null) {
result.push(encode(key))
} else {
result.push(encode(key) + '=' + encode(val2))
}
})
return result.join('&')
}
return encode(key) + '=' + encode(val)
}).filter(function (x) { return x.length > 0; }).join('&') : null
return res ? ("?" + res) : ''
}
/* */
function createRoute (
record,
location,
redirectedFrom
) {
var route = {
name: location.name || (record && record.name),
meta: (record && record.meta) || {},
path: location.path || '/',
hash: location.hash || '',
query: location.query || {},
params: location.params || {},
fullPath: getFullPath(location),
matched: record ? formatMatch(record) : []
}
if (redirectedFrom) {
route.redirectedFrom = getFullPath(redirectedFrom)
}
return Object.freeze(route)
}
// the starting route that represents the initial state
var START = createRoute(null, {
path: '/'
})
function formatMatch (record) {
var res = []
while (record) {
res.unshift(record)
record = record.parent
}
return res
}
function getFullPath (ref) {
var path = ref.path;
var query = ref.query; if ( query === void 0 ) query = {};
var hash = ref.hash; if ( hash === void 0 ) hash = '';
return (path || '/') + stringifyQuery(query) + hash
}
var trailingSlashRE = /\/$/
function isSameRoute (a, b) {
if (b === START) {
return a === b
} else if (!b) {
return false
} else if (a.path && b.path) {
return (
a.path.replace(trailingSlashRE, '') === b.path.replace(trailingSlashRE, '') &&
a.hash === b.hash &&
isObjectEqual(a.query, b.query)
)
} else if (a.name && b.name) {
return (
a.name === b.name &&
a.hash === b.hash &&
isObjectEqual(a.query, b.query) &&
isObjectEqual(a.params, b.params)
)
} else {
return false
}
}
function isObjectEqual (a, b) {
if ( a === void 0 ) a = {};
if ( b === void 0 ) b = {};
var aKeys = Object.keys(a)
var bKeys = Object.keys(b)
if (aKeys.length !== bKeys.length) {
return false
}
return aKeys.every(function (key) { return String(a[key]) === String(b[key]); })
}
function isIncludedRoute (current, target) {
return (
current.path.indexOf(target.path.replace(/\/$/, '')) === 0 &&
(!target.hash || current.hash === target.hash) &&
queryIncludes(current.query, target.query)
)
}
function queryIncludes (current, target) {
for (var key in target) {
if (!(key in current)) {
return false
}
}
return true
}
/* */
// work around weird flow bug
var toTypes = [String, Object]
var Link = {
name: 'router-link',
props: {
to: {
type: toTypes,
required: true
},
tag: {
type: String,
default: 'a'
},
exact: Boolean,
append: Boolean,
replace: Boolean,
activeClass: String,
event: {
type: [String, Array],
default: 'click'
}
},
render: function render (h) {
var this$1 = this;
var router = this.$router
var current = this.$route
var ref = router.resolve(this.to, current, this.append);
var normalizedTo = ref.normalizedTo;
var resolved = ref.resolved;
var href = ref.href;
var classes = {}
var activeClass = this.activeClass || router.options.linkActiveClass || 'router-link-active'
var compareTarget = normalizedTo.path ? createRoute(null, normalizedTo) : resolved
classes[activeClass] = this.exact
? isSameRoute(current, compareTarget)
: isIncludedRoute(current, compareTarget)
var handler = function (e) {
if (guardEvent(e)) {
if (this$1.replace) {
router.replace(normalizedTo)
} else {
router.push(normalizedTo)
}
}
}
var on = { click: guardEvent }
if (Array.isArray(this.event)) {
this.event.forEach(function (e) { on[e] = handler })
} else {
on[this.event] = handler
}
var data = {
class: classes
}
if (this.tag === 'a') {
data.on = on
data.attrs = { href: href }
} else {
// find the first <a> child and apply listener and href
var a = findAnchor(this.$slots.default)
if (a) {
// in case the <a> is a static node
a.isStatic = false
var extend = _Vue.util.extend
var aData = a.data = extend({}, a.data)
aData.on = on
var aAttrs = a.data.attrs = extend({}, a.data.attrs)
aAttrs.href = href
} else {
// doesn't have <a> child, apply listener to self
data.on = on
}
}
return h(this.tag, data, this.$slots.default)
}
}
function guardEvent (e) {
// don't redirect with control keys
/* istanbul ignore if */
if (e.metaKey || e.ctrlKey || e.shiftKey) { return }
// don't redirect when preventDefault called
/* istanbul ignore if */
if (e.defaultPrevented) { return }
// don't redirect on right click
/* istanbul ignore if */
if (e.button !== 0) { return }
// don't redirect if `target="_blank"`
/* istanbul ignore if */
var target = e.target.getAttribute('target')
if (/\b_blank\b/i.test(target)) { return }
e.preventDefault()
return true
}
function findAnchor (children) {
if (children) {
var child
for (var i = 0; i < children.length; i++) {
child = children[i]
if (child.tag === 'a') {
return child
}
if (child.children && (child = findAnchor(child.children))) {
return child
}
}
}
}
var _Vue
function install (Vue) {
if (install.installed) { return }
install.installed = true
_Vue = Vue
Object.defineProperty(Vue.prototype, '$router', {
get: function get () { return this.$root._router }
})
Object.defineProperty(Vue.prototype, '$route', {
get: function get$1 () { return this.$root._route }
})
Vue.mixin({
beforeCreate: function beforeCreate () {
if (this.$options.router) {
this._router = this.$options.router
this._router.init(this)
Vue.util.defineReactive(this, '_route', this._router.history.current)
}
}
})
Vue.component('router-view', View)
Vue.component('router-link', Link)
var strats = Vue.config.optionMergeStrategies
// use the same hook merging strategy for route hooks
strats.beforeRouteEnter = strats.beforeRouteLeave = strats.created
}
/* */
function resolvePath (
relative,
base,
append
) {
if (relative.charAt(0) === '/') {
return relative
}
if (relative.charAt(0) === '?' || relative.charAt(0) === '#') {
return base + relative
}
var stack = base.split('/')
// remove trailing segment if:
// - not appending
// - appending to trailing slash (last segment is empty)
if (!append || !stack[stack.length - 1]) {
stack.pop()
}
// resolve relative path
var segments = relative.replace(/^\//, '').split('/')
for (var i = 0; i < segments.length; i++) {
var segment = segments[i]
if (segment === '.') {
continue
} else if (segment === '..') {
stack.pop()
} else {
stack.push(segment)
}
}
// ensure leading slash
if (stack[0] !== '') {
stack.unshift('')
}
return stack.join('/')
}
function parsePath (path) {
var hash = ''
var query = ''
var hashIndex = path.indexOf('#')
if (hashIndex >= 0) {
hash = path.slice(hashIndex)
path = path.slice(0, hashIndex)
}
var queryIndex = path.indexOf('?')
if (queryIndex >= 0) {
query = path.slice(queryIndex + 1)
path = path.slice(0, queryIndex)
}
return {
path: path,
query: query,
hash: hash
}
}
function cleanPath (path) {
return path.replace(/\/\//g, '/')
}
/* */
function createRouteMap (routes) {
var pathMap = Object.create(null)
var nameMap = Object.create(null)
routes.forEach(function (route) {
addRouteRecord(pathMap, nameMap, route)
})
return {
pathMap: pathMap,
nameMap: nameMap
}
}
function addRouteRecord (
pathMap,
nameMap,
route,
parent,
matchAs
) {
var path = route.path;
var name = route.name;
if (process.env.NODE_ENV !== 'production') {
assert(path != null, "\"path\" is required in a route configuration.")
assert(
typeof route.component !== 'string',
"route config \"component\" for path: " + (String(path || name)) + " cannot be a " +
"string id. Use an actual component instead."
)
}
var record = {
path: normalizePath(path, parent),
components: route.components || { default: route.component },
instances: {},
name: name,
parent: parent,
matchAs: matchAs,
redirect: route.redirect,
beforeEnter: route.beforeEnter,
meta: route.meta || {}
}
if (route.children) {
// Warn if route is named and has a default child route.
// If users navigate to this route by name, the default child will
// not be rendered (GH Issue #629)
if (process.env.NODE_ENV !== 'production') {
if (route.name && route.children.some(function (child) { return /^\/?$/.test(child.path); })) {
warn(false, ("Named Route '" + (route.name) + "' has a default child route.\n When navigating to this named route (:to=\"{name: '" + (route.name) + "'\"), the default child route will not be rendered.\n Remove the name from this route and use the name of the default child route for named links instead.")
)
}
}
route.children.forEach(function (child) {
addRouteRecord(pathMap, nameMap, child, record)
})
}
if (route.alias !== undefined) {
if (Array.isArray(route.alias)) {
route.alias.forEach(function (alias) {
addRouteRecord(pathMap, nameMap, { path: alias }, parent, record.path)
})
} else {
addRouteRecord(pathMap, nameMap, { path: route.alias }, parent, record.path)
}
}
if (!pathMap[record.path]) {
pathMap[record.path] = record
}
if (name) {
if (!nameMap[name]) {
nameMap[name] = record
} else if (process.env.NODE_ENV !== 'production') {
warn(false, ("Duplicate named routes definition: { name: \"" + name + "\", path: \"" + (record.path) + "\" }"))
}
}
}
function normalizePath (path, parent) {
path = path.replace(/\/$/, '')
if (path[0] === '/') { return path }
if (parent == null) { return path }
return cleanPath(((parent.path) + "/" + path))
}
var __moduleExports = Array.isArray || function (arr) {
return Object.prototype.toString.call(arr) == '[object Array]';
};
var isarray = __moduleExports
/**
* Expose `pathToRegexp`.
*/
var index = pathToRegexp
var parse_1 = parse
var compile_1 = compile
var tokensToFunction_1 = tokensToFunction
var tokensToRegExp_1 = tokensToRegExp
/**
* The main path matching regexp utility.
*
* @type {RegExp}
*/
var PATH_REGEXP = new RegExp([
// Match escaped characters that would otherwise appear in future matches.
// This allows the user to escape special characters that won't transform.
'(\\\\.)',
// Match Express-style parameters and un-named parameters with a prefix
// and optional suffixes. Matches appear as:
//
// "/:test(\\d+)?" => ["/", "test", "\d+", undefined, "?", undefined]
// "/route(\\d+)" => [undefined, undefined, undefined, "\d+", undefined, undefined]
// "/*" => ["/", undefined, undefined, undefined, undefined, "*"]
'([\\/.])?(?:(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?|(\\*))'
].join('|'), 'g')
/**
* Parse a string for the raw tokens.
*
* @param {string} str
* @param {Object=} options
* @return {!Array}
*/
function parse (str, options) {
var tokens = []
var key = 0
var index = 0
var path = ''
var defaultDelimiter = options && options.delimiter || '/'
var res
while ((res = PATH_REGEXP.exec(str)) != null) {
var m = res[0]
var escaped = res[1]
var offset = res.index
path += str.slice(index, offset)
index = offset + m.length
// Ignore already escaped sequences.
if (escaped) {
path += escaped[1]
continue
}
var next = str[index]
var prefix = res[2]
var name = res[3]
var capture = res[4]
var group = res[5]
var modifier = res[6]
var asterisk = res[7]
// Push the current path onto the tokens.
if (path) {
tokens.push(path)
path = ''
}
var partial = prefix != null && next != null && next !== prefix
var repeat = modifier === '+' || modifier === '*'
var optional = modifier === '?' || modifier === '*'
var delimiter = res[2] || defaultDelimiter
var pattern = capture || group
tokens.push({
name: name || key++,
prefix: prefix || '',
delimiter: delimiter,
optional: optional,
repeat: repeat,
partial: partial,
asterisk: !!asterisk,
pattern: pattern ? escapeGroup(pattern) : (asterisk ? '.*' : '[^' + escapeString(delimiter) + ']+?')
})
}
// Match any characters still remaining.
if (index < str.length) {
path += str.substr(index)
}
// If the path exists, push it onto the end.
if (path) {
tokens.push(path)
}
return tokens
}
/**
* Compile a string to a template function for the path.
*
* @param {string} str
* @param {Object=} options
* @return {!function(Object=, Object=)}
*/
function compile (str, options) {
return tokensToFunction(parse(str, options))
}
/**
* Prettier encoding of URI path segments.
*
* @param {string}
* @return {string}
*/
function encodeURIComponentPretty (str) {
return encodeURI(str).replace(/[\/?#]/g, function (c) {
return '%' + c.charCodeAt(0).toString(16).toUpperCase()
})
}
/**
* Encode the asterisk parameter. Similar to `pretty`, but allows slashes.
*
* @param {string}
* @return {string}
*/
function encodeAsterisk (str) {
return encodeURI(str).replace(/[?#]/g, function (c) {
return '%' + c.charCodeAt(0).toString(16).toUpperCase()
})
}
/**
* Expose a method for transforming tokens into the path function.
*/
function tokensToFunction (tokens) {
// Compile all the tokens into regexps.
var matches = new Array(tokens.length)
// Compile all the patterns before compilation.
for (var i = 0; i < tokens.length; i++) {
if (typeof tokens[i] === 'object') {
matches[i] = new RegExp('^(?:' + tokens[i].pattern + ')$')
}
}
return function (obj, opts) {
var path = ''
var data = obj || {}
var options = opts || {}
var encode = options.pretty ? encodeURIComponentPretty : encodeURIComponent
for (var i = 0; i < tokens.length; i++) {
var token = tokens[i]
if (typeof token === 'string') {
path += token
continue
}
var value = data[token.name]
var segment
if (value == null) {
if (token.optional) {
// Prepend partial segment prefixes.
if (token.partial) {
path += token.prefix
}
continue
} else {
throw new TypeError('Expected "' + token.name + '" to be defined')
}
}
if (isarray(value)) {
if (!token.repeat) {
throw new TypeError('Expected "' + token.name + '" to not repeat, but received `' + JSON.stringify(value) + '`')
}
if (value.length === 0) {
if (token.optional) {
continue
} else {
throw new TypeError('Expected "' + token.name + '" to not be empty')
}
}
for (var j = 0; j < value.length; j++) {
segment = encode(value[j])
if (!matches[i].test(segment)) {
throw new TypeError('Expected all "' + token.name + '" to match "' + token.pattern + '", but received `' + JSON.stringify(segment) + '`')
}
path += (j === 0 ? token.prefix : token.delimiter) + segment
}
continue
}
segment = token.asterisk ? encodeAsterisk(value) : encode(value)
if (!matches[i].test(segment)) {
throw new TypeError('Expected "' + token.name + '" to match "' + token.pattern + '", but received "' + segment + '"')
}
path += token.prefix + segment
}
return path
}
}
/**
* Escape a regular expression string.
*
* @param {string} str
* @return {string}
*/
function escapeString (str) {
return str.replace(/([.+*?=^!:${}()[\]|\/\\])/g, '\\$1')
}
/**
* Escape the capturing group by escaping special characters and meaning.
*
* @param {string} group
* @return {string}
*/
function escapeGroup (group) {
return group.replace(/([=!:$\/()])/g, '\\$1')
}
/**
* Attach the keys as a property of the regexp.
*
* @param {!RegExp} re
* @param {Array} keys
* @return {!RegExp}
*/
function attachKeys (re, keys) {
re.keys = keys
return re
}
/**
* Get the flags for a regexp from the options.
*
* @param {Object} options
* @return {string}
*/
function flags (options) {
return options.sensitive ? '' : 'i'
}
/**
* Pull out keys from a regexp.
*
* @param {!RegExp} path
* @param {!Array} keys
* @return {!RegExp}
*/
function regexpToRegexp (path, keys) {
// Use a negative lookahead to match only capturing groups.
var groups = path.source.match(/\((?!\?)/g)
if (groups) {
for (var i = 0; i < groups.length; i++) {
keys.push({
name: i,
prefix: null,
delimiter: null,
optional: false,
repeat: false,
partial: false,
asterisk: false,
pattern: null
})
}
}
return attachKeys(path, keys)
}
/**
* Transform an array into a regexp.
*
* @param {!Array} path
* @param {Array} keys
* @param {!Object} options
* @return {!RegExp}
*/
function arrayToRegexp (path, keys, options) {
var parts = []
for (var i = 0; i < path.length; i++) {
parts.push(pathToRegexp(path[i], keys, options).source)
}
var regexp = new RegExp('(?:' + parts.join('|') + ')', flags(options))
return attachKeys(regexp, keys)
}
/**
* Create a path regexp from string input.
*
* @param {string} path
* @param {!Array} keys
* @param {!Object} options
* @return {!RegExp}
*/
function stringToRegexp (path, keys, options) {
return tokensToRegExp(parse(path, options), keys, options)
}
/**
* Expose a function for taking tokens and returning a RegExp.
*
* @param {!Array} tokens
* @param {(Array|Object)=} keys
* @param {Object=} options
* @return {!RegExp}
*/
function tokensToRegExp (tokens, keys, options) {
if (!isarray(keys)) {
options = /** @type {!Object} */ (keys || options)
keys = []
}
options = options || {}
var strict = options.strict
var end = options.end !== false
var route = ''
// Iterate over the tokens and create our regexp string.
for (var i = 0; i < tokens.length; i++) {
var token = tokens[i]
if (typeof token === 'string') {
route += escapeString(token)
} else {
var prefix = escapeString(token.prefix)
var capture = '(?:' + token.pattern + ')'
keys.push(token)
if (token.repeat) {
capture += '(?:' + prefix + capture + ')*'
}
if (token.optional) {
if (!token.partial) {
capture = '(?:' + prefix + '(' + capture + '))?'
} else {
capture = prefix + '(' + capture + ')?'
}
} else {
capture = prefix + '(' + capture + ')'
}
route += capture
}
}
var delimiter = escapeString(options.delimiter || '/')
var endsWithDelimiter = route.slice(-delimiter.length) === delimiter
// In non-strict mode we allow a slash at the end of match. If the path to
// match already ends with a slash, we remove it for consistency. The slash
// is valid at the end of a path match, not in the middle. This is important
// in non-ending mode, where "/test/" shouldn't match "/test//route".
if (!strict) {
route = (endsWithDelimiter ? route.slice(0, -delimiter.length) : route) + '(?:' + delimiter + '(?=$))?'
}
if (end) {
route += '$'
} else {
// In non-ending mode, we need the capturing groups to match as much as
// possible by using a positive lookahead to the end or next path segment.
route += strict && endsWithDelimiter ? '' : '(?=' + delimiter + '|$)'
}
return attachKeys(new RegExp('^' + route, flags(options)), keys)
}
/**
* Normalize the given path string, returning a regular expression.
*
* An empty array can be passed in for the keys, which will hold the
* placeholder key descriptions. For example, using `/user/:id`, `keys` will
* contain `[{ name: 'id', delimiter: '/', optional: false, repeat: false }]`.
*
* @param {(string|RegExp|Array)} path
* @param {(Array|Object)=} keys
* @param {Object=} options
* @return {!RegExp}
*/
function pathToRegexp (path, keys, options) {
if (!isarray(keys)) {
options = /** @type {!Object} */ (keys || options)
keys = []
}
options = options || {}
if (path instanceof RegExp) {
return regexpToRegexp(path, /** @type {!Array} */ (keys))
}
if (isarray(path)) {
return arrayToRegexp(/** @type {!Array} */ (path), /** @type {!Array} */ (keys), options)
}
return stringToRegexp(/** @type {string} */ (path), /** @type {!Array} */ (keys), options)
}
index.parse = parse_1;
index.compile = compile_1;
index.tokensToFunction = tokensToFunction_1;
index.tokensToRegExp = tokensToRegExp_1;
/* */
var regexpCache = Object.create(null)
function getRouteRegex (path) {
var hit = regexpCache[path]
var keys, regexp
if (hit) {
keys = hit.keys
regexp = hit.regexp
} else {
keys = []
regexp = index(path, keys)
regexpCache[path] = { keys: keys, regexp: regexp }
}
return { keys: keys, regexp: regexp }
}
var regexpCompileCache = Object.create(null)
function fillParams (
path,
params,
routeMsg
) {
try {
var filler =
regexpCompileCache[path] ||
(regexpCompileCache[path] = index.compile(path))
return filler(params || {}, { pretty: true })
} catch (e) {
if (process.env.NODE_ENV !== 'production') {
warn(false, ("missing param for " + routeMsg + ": " + (e.message)))
}
return ''
}
}
/* */
function normalizeLocation (
raw,
current,
append
) {
var next = typeof raw === 'string' ? { path: raw } : raw
// named target
if (next.name || next._normalized) {
return next
}
// relative params
if (!next.path && next.params && current) {
next = assign({}, next)
next._normalized = true
var params = assign(assign({}, current.params), next.params)
if (current.name) {
next.name = current.name
next.params = params
} else if (current.matched) {
var rawPath = current.matched[current.matched.length - 1].path
next.path = fillParams(rawPath, params, ("path " + (current.path)))
} else if (process.env.NODE_ENV !== 'production') {
warn(false, "relative params navigation requires a current route.")
}
return next
}
var parsedPath = parsePath(next.path || '')
var basePath = (current && current.path) || '/'
var path = parsedPath.path
? resolvePath(parsedPath.path, basePath, append || next.append)
: (current && current.path) || '/'
var query = resolveQuery(parsedPath.query, next.query)
var hash = next.hash || parsedPath.hash
if (hash && hash.charAt(0) !== '#') {
hash = "#" + hash
}
return {
_normalized: true,
path: path,
query: query,
hash: hash
}
}
function assign (a, b) {
for (var key in b) {
a[key] = b[key]
}
return a
}
/* */
function createMatcher (routes) {
var ref = createRouteMap(routes);
var pathMap = ref.pathMap;
var nameMap = ref.nameMap;
function match (
raw,
currentRoute,
redirectedFrom
) {
var location = normalizeLocation(raw, currentRoute)
var name = location.name;
if (name) {
var record = nameMap[name]
var paramNames = getRouteRegex(record.path).keys
.filter(function (key) { return !key.optional; })
.map(function (key) { return key.name; })
if (typeof location.params !== 'object') {
location.params = {}
}
if (currentRoute && typeof currentRoute.params === 'object') {
for (var key in currentRoute.params) {
if (!(key in location.params) && paramNames.indexOf(key) > -1) {
location.params[key] = currentRoute.params[key]
}
}
}
if (record) {
location.path = fillParams(record.path, location.params, ("named route \"" + name + "\""))
return _createRoute(record, location, redirectedFrom)
}
} else if (location.path) {
location.params = {}
for (var path in pathMap) {
if (matchRoute(path, location.params, location.path)) {
return _createRoute(pathMap[path], location, redirectedFrom)
}
}
}
// no match
return _createRoute(null, location)
}
function redirect (
record,
location
) {
var originalRedirect = record.redirect
var redirect = typeof originalRedirect === 'function'
? originalRedirect(createRoute(record, location))
: originalRedirect
if (typeof redirect === 'string') {
redirect = { path: redirect }
}
if (!redirect || typeof redirect !== 'object') {
process.env.NODE_ENV !== 'production' && warn(
false, ("invalid redirect option: " + (JSON.stringify(redirect)))
)
return _createRoute(null, location)
}
var re = redirect
var name = re.name;
var path = re.path;
var query = location.query;
var hash = location.hash;
var params = location.params;
query = re.hasOwnProperty('query') ? re.query : query
hash = re.hasOwnProperty('hash') ? re.hash : hash
params = re.hasOwnProperty('params') ? re.params : params
if (name) {
// resolved named direct
var targetRecord = nameMap[name]
if (process.env.NODE_ENV !== 'production') {
assert(targetRecord, ("redirect failed: named route \"" + name + "\" not found."))
}
return match({
_normalized: true,
name: name,
query: query,
hash: hash,
params: params
}, undefined, location)
} else if (path) {
// 1. resolve relative redirect
var rawPath = resolveRecordPath(path, record)
// 2. resolve params
var resolvedPath = fillParams(rawPath, params, ("redirect route with path \"" + rawPath + "\""))
// 3. rematch with existing query and hash
return match({
_normalized: true,
path: resolvedPath,
query: query,
hash: hash
}, undefined, location)
} else {
warn(false, ("invalid redirect option: " + (JSON.stringify(redirect))))
return _createRoute(null, location)
}
}
function alias (
record,
location,
matchAs
) {
var aliasedPath = fillParams(matchAs, location.params, ("aliased route with path \"" + matchAs + "\""))
var aliasedMatch = match({
_normalized: true,
path: aliasedPath
})
if (aliasedMatch) {
var matched = aliasedMatch.matched
var aliasedRecord = matched[matched.length - 1]
location.params = aliasedMatch.params
return _createRoute(aliasedRecord, location)
}
return _createRoute(null, location)
}
function _createRoute (
record,
location,
redirectedFrom
) {
if (record && record.redirect) {
return redirect(record, redirectedFrom || location)
}
if (record && record.matchAs) {
return alias(record, location, record.matchAs)
}
return createRoute(record, location, redirectedFrom)
}
return match
}
function matchRoute (
path,
params,
pathname
) {
var ref = getRouteRegex(path);
var regexp = ref.regexp;
var keys = ref.keys;
var m = pathname.match(regexp)
if (!m) {
return false
} else if (!params) {
return true
}
for (var i = 1, len = m.length; i < len; ++i) {
var key = keys[i - 1]
var val = typeof m[i] === 'string' ? decodeURIComponent(m[i]) : m[i]
if (key) { params[key.name] = val }
}
return true
}
function resolveRecordPath (path, record) {
return resolvePath(path, record.parent ? record.parent.path : '/', true)
}
/* */
var inBrowser = typeof window !== 'undefined'
var supportsHistory = inBrowser && (function () {
var ua = window.navigator.userAgent
if (
(ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) &&
ua.indexOf('Mobile Safari') !== -1 &&
ua.indexOf('Chrome') === -1 &&
ua.indexOf('Windows Phone') === -1
) {
return false
}
return window.history && 'pushState' in window.history
})()
/* */
function runQueue (queue, fn, cb) {
var step = function (index) {
if (index >= queue.length) {
cb()
} else {
if (queue[index]) {
fn(queue[index], function () {
step(index + 1)
})
} else {
step(index + 1)
}
}
}
step(0)
}
/* */
var History = function History (router, base) {
this.router = router
this.base = normalizeBase(base)
// start with a route object that stands for "nowhere"
this.current = START
this.pending = null
};
History.prototype.listen = function listen (cb) {
this.cb = cb
};
History.prototype.transitionTo = function transitionTo (location, onComplete, onAbort) {
var this$1 = this;
var route = this.router.match(location, this.current)
this.confirmTransition(route, function () {
this$1.updateRoute(route)
onComplete && onComplete(route)
this$1.ensureURL()
}, onAbort)
};
History.prototype.confirmTransition = function confirmTransition (route, onComplete, onAbort) {
var this$1 = this;
var current = this.current
var abort = function () { onAbort && onAbort() }
if (isSameRoute(route, current)) {
this.ensureURL()
return abort()
}
var ref = resolveQueue(this.current.matched, route.matched);
var deactivated = ref.deactivated;
var activated = ref.activated;
var queue = [].concat(
// in-component leave guards
extractLeaveGuards(deactivated),
// global before hooks
this.router.beforeHooks,
// enter guards
activated.map(function (m) { return m.beforeEnter; }),
// async components
resolveAsyncComponents(activated)
)
this.pending = route
var iterator = function (hook, next) {
if (this$1.pending !== route) {
return abort()
}
hook(route, current, function (to) {
if (to === false) {
// next(false) -> abort navigation, ensure current URL
this$1.ensureURL(true)
abort()
} else if (typeof to === 'string' || typeof to === 'object') {
// next('/') or next({ path: '/' }) -> redirect
(typeof to === 'object' && to.replace) ? this$1.replace(to) : this$1.push(to)
abort()
} else {
// confirm transition and pass on the value
next(to)
}
})
}
runQueue(queue, iterator, function () {
var postEnterCbs = []
var enterGuards = extractEnterGuards(activated, postEnterCbs, function () {
return this$1.current === route
})
// wait until async components are resolved before
// extracting in-component enter guards
runQueue(enterGuards, iterator, function () {
if (this$1.pending !== route) {
return abort()
}
this$1.pending = null
onComplete(route)
if (this$1.router.app) {
this$1.router.app.$nextTick(function () {
postEnterCbs.forEach(function (cb) { return cb(); })
})
}
})
})
};
History.prototype.updateRoute = function updateRoute (route) {
var prev = this.current
this.current = route
this.cb && this.cb(route)
this.router.afterHooks.forEach(function (hook) {
hook && hook(route, prev)
})
};
function normalizeBase (base) {
if (!base) {
if (inBrowser) {
// respect <base> tag
var baseEl = document.querySelector('base')
base = baseEl ? baseEl.getAttribute('href') : '/'
} else {
base = '/'
}
}
// make sure there's the starting slash
if (base.charAt(0) !== '/') {
base = '/' + base
}
// remove trailing slash
return base.replace(/\/$/, '')
}
function resolveQueue (
current,
next
) {
var i
var max = Math.max(current.length, next.length)
for (i = 0; i < max; i++) {
if (current[i] !== next[i]) {
break
}
}
return {
activated: next.slice(i),
deactivated: current.slice(i)
}
}
function extractGuard (
def,
key
) {
if (typeof def !== 'function') {
// extend now so that global mixins are applied.
def = _Vue.extend(def)
}
return def.options[key]
}
function extractLeaveGuards (matched) {
return flatten(flatMapComponents(matched, function (def, instance) {
var guard = extractGuard(def, 'beforeRouteLeave')
if (guard) {
return Array.isArray(guard)
? guard.map(function (guard) { return wrapLeaveGuard(guard, instance); })
: wrapLeaveGuard(guard, instance)
}
}).reverse())
}
function wrapLeaveGuard (
guard,
instance
) {
return function routeLeaveGuard () {
return guard.apply(instance, arguments)
}
}
function extractEnterGuards (
matched,
cbs,
isValid
) {
return flatten(flatMapComponents(matched, function (def, _, match, key) {
var guard = extractGuard(def, 'beforeRouteEnter')
if (guard) {
return Array.isArray(guard)
? guard.map(function (guard) { return wrapEnterGuard(guard, cbs, match, key, isValid); })
: wrapEnterGuard(guard, cbs, match, key, isValid)
}
}))
}
function wrapEnterGuard (
guard,
cbs,
match,
key,
isValid
) {
return function routeEnterGuard (to, from, next) {
return guard(to, from, function (cb) {
next(cb)
if (typeof cb === 'function') {
cbs.push(function () {
// #750
// if a router-view is wrapped with an out-in transition,
// the instance may not have been registered at this time.
// we will need to poll for registration until current route
// is no longer valid.
poll(cb, match.instances, key, isValid)
})
}
})
}
}
function poll (
cb, // somehow flow cannot infer this is a function
instances,
key,
isValid
) {
if (instances[key]) {
cb(instances[key])
} else if (isValid()) {
setTimeout(function () {
poll(cb, instances, key, isValid)
}, 16)
}
}
function resolveAsyncComponents (matched) {
return flatMapComponents(matched, function (def, _, match, key) {
// if it's a function and doesn't have Vue options attached,
// assume it's an async component resolve function.
// we are not using Vue's default async resolving mechanism because
// we want to halt the navigation until the incoming component has been
// resolved.
if (typeof def === 'function' && !def.options) {
return function (to, from, next) {
var resolve = function (resolvedDef) {
match.components[key] = resolvedDef
next()
}
var reject = function (reason) {
warn(false, ("Failed to resolve async component " + key + ": " + reason))
next(false)
}
var res = def(resolve, reject)
if (res && typeof res.then === 'function') {
res.then(resolve, reject)
}
}
}
})
}
function flatMapComponents (
matched,
fn
) {
return flatten(matched.map(function (m) {
return Object.keys(m.components).map(function (key) { return fn(
m.components[key],
m.instances[key],
m, key
); })
}))
}
function flatten (arr) {
return Array.prototype.concat.apply([], arr)
}
/* */
var positionStore = Object.create(null)
function saveScrollPosition (key) {
if (!key) { return }
positionStore[key] = {
x: window.pageXOffset,
y: window.pageYOffset
}
}
function getScrollPosition (key) {
if (!key) { return }
return positionStore[key]
}
function getElementPosition (el) {
var docRect = document.documentElement.getBoundingClientRect()
var elRect = el.getBoundingClientRect()
return {
x: elRect.left - docRect.left,
y: elRect.top - docRect.top
}
}
function isValidPosition (obj) {
return isNumber(obj.x) || isNumber(obj.y)
}
function normalizePosition (obj) {
return {
x: isNumber(obj.x) ? obj.x : window.pageXOffset,
y: isNumber(obj.y) ? obj.y : window.pageYOffset
}
}
function isNumber (v) {
return typeof v === 'number'
}
/* */
var genKey = function () { return String(Date.now()); }
var _key = genKey()
var HTML5History = (function (History) {
function HTML5History (router, base) {
var this$1 = this;
History.call(this, router, base)
var expectScroll = router.options.scrollBehavior
window.addEventListener('popstate', function (e) {
_key = e.state && e.state.key
var current = this$1.current
this$1.transitionTo(getLocation(this$1.base), function (next) {
if (expectScroll) {
this$1.handleScroll(next, current, true)
}
})
})
if (expectScroll) {
window.addEventListener('scroll', function () {
saveScrollPosition(_key)
})
}
}
if ( History ) HTML5History.__proto__ = History;
HTML5History.prototype = Object.create( History && History.prototype );
HTML5History.prototype.constructor = HTML5History;
HTML5History.prototype.go = function go (n) {
window.history.go(n)
};
HTML5History.prototype.push = function push (location) {
var this$1 = this;
var current = this.current
this.transitionTo(location, function (route) {
pushState(cleanPath(this$1.base + route.fullPath))
this$1.handleScroll(route, current, false)
})
};
HTML5History.prototype.replace = function replace (location) {
var this$1 = this;
var current = this.current
this.transitionTo(location, function (route) {
replaceState(cleanPath(this$1.base + route.fullPath))
this$1.handleScroll(route, current, false)
})
};
HTML5History.prototype.ensureURL = function ensureURL (push) {
if (getLocation(this.base) !== this.current.fullPath) {
var current = cleanPath(this.base + this.current.fullPath)
push ? pushState(current) : replaceState(current)
}
};
HTML5History.prototype.handleScroll = function handleScroll (to, from, isPop) {
var router = this.router
if (!router.app) {
return
}
var behavior = router.options.scrollBehavior
if (!behavior) {
return
}
if (process.env.NODE_ENV !== 'production') {
assert(typeof behavior === 'function', "scrollBehavior must be a function")
}
// wait until re-render finishes before scrolling
router.app.$nextTick(function () {
var position = getScrollPosition(_key)
var shouldScroll = behavior(to, from, isPop ? position : null)
if (!shouldScroll) {
return
}
var isObject = typeof shouldScroll === 'object'
if (isObject && typeof shouldScroll.selector === 'string') {
var el = document.querySelector(shouldScroll.selector)
if (el) {
position = getElementPosition(el)
} else if (isValidPosition(shouldScroll)) {
position = normalizePosition(shouldScroll)
}
} else if (isObject && isValidPosition(shouldScroll)) {
position = normalizePosition(shouldScroll)
}
if (position) {
window.scrollTo(position.x, position.y)
}
})
};
return HTML5History;
}(History));
function getLocation (base) {
var path = window.location.pathname
if (base && path.indexOf(base) === 0) {
path = path.slice(base.length)
}
return (path || '/') + window.location.search + window.location.hash
}
function pushState (url, replace) {
// try...catch the pushState call to get around Safari
// DOM Exception 18 where it limits to 100 pushState calls
var history = window.history
try {
if (replace) {
history.replaceState({ key: _key }, '', url)
} else {
_key = genKey()
history.pushState({ key: _key }, '', url)
}
saveScrollPosition(_key)
} catch (e) {
window.location[replace ? 'assign' : 'replace'](url)
}
}
function replaceState (url) {
pushState(url, true)
}
/* */
var HashHistory = (function (History) {
function HashHistory (router, base, fallback) {
History.call(this, router, base)
// check history fallback deeplinking
if (fallback && this.checkFallback()) {
return
}
ensureSlash()
}
if ( History ) HashHistory.__proto__ = History;
HashHistory.prototype = Object.create( History && History.prototype );
HashHistory.prototype.constructor = HashHistory;
HashHistory.prototype.checkFallback = function checkFallback () {
var location = getLocation(this.base)
if (!/^\/#/.test(location)) {
window.location.replace(
cleanPath(this.base + '/#' + location)
)
return true
}
};
HashHistory.prototype.onHashChange = function onHashChange () {
if (!ensureSlash()) {
return
}
this.transitionTo(getHash(), function (route) {
replaceHash(route.fullPath)
})
};
HashHistory.prototype.push = function push (location) {
this.transitionTo(location, function (route) {
pushHash(route.fullPath)
})
};
HashHistory.prototype.replace = function replace (location) {
this.transitionTo(location, function (route) {
replaceHash(route.fullPath)
})
};
HashHistory.prototype.go = function go (n) {
window.history.go(n)
};
HashHistory.prototype.ensureURL = function ensureURL (push) {
var current = this.current.fullPath
if (getHash() !== current) {
push ? pushHash(current) : replaceHash(current)
}
};
return HashHistory;
}(History));
function ensureSlash () {
var path = getHash()
if (path.charAt(0) === '/') {
return true
}
replaceHash('/' + path)
return false
}
function getHash () {
// We can't use window.location.hash here because it's not
// consistent across browsers - Firefox will pre-decode it!
var href = window.location.href
var index = href.indexOf('#')
return index === -1 ? '' : href.slice(index + 1)
}
function pushHash (path) {
window.location.hash = path
}
function replaceHash (path) {
var i = window.location.href.indexOf('#')
window.location.replace(
window.location.href.slice(0, i >= 0 ? i : 0) + '#' + path
)
}
/* */
var AbstractHistory = (function (History) {
function AbstractHistory (router) {
History.call(this, router)
this.stack = []
this.index = -1
}
if ( History ) AbstractHistory.__proto__ = History;
AbstractHistory.prototype = Object.create( History && History.prototype );
AbstractHistory.prototype.constructor = AbstractHistory;
AbstractHistory.prototype.push = function push (location) {
var this$1 = this;
this.transitionTo(location, function (route) {
this$1.stack = this$1.stack.slice(0, this$1.index + 1).concat(route)
this$1.index++
})
};
AbstractHistory.prototype.replace = function replace (location) {
var this$1 = this;
this.transitionTo(location, function (route) {
this$1.stack = this$1.stack.slice(0, this$1.index).concat(route)
})
};
AbstractHistory.prototype.go = function go (n) {
var this$1 = this;
var targetIndex = this.index + n
if (targetIndex < 0 || targetIndex >= this.stack.length) {
return
}
var route = this.stack[targetIndex]
this.confirmTransition(route, function () {
this$1.index = targetIndex
this$1.updateRoute(route)
})
};
AbstractHistory.prototype.ensureURL = function ensureURL () {
// noop
};
return AbstractHistory;
}(History));
/* */
var VueRouter = function VueRouter (options) {
if ( options === void 0 ) options = {};
this.app = null
this.options = options
this.beforeHooks = []
this.afterHooks = []
this.match = createMatcher(options.routes || [])
var mode = options.mode || 'hash'
this.fallback = mode === 'history' && !supportsHistory
if (this.fallback) {
mode = 'hash'
}
if (!inBrowser) {
mode = 'abstract'
}
this.mode = mode
switch (mode) {
case 'history':
this.history = new HTML5History(this, options.base)
break
case 'hash':
this.history = new HashHistory(this, options.base, this.fallback)
break
case 'abstract':
this.history = new AbstractHistory(this)
break
default:
process.env.NODE_ENV !== 'production' && assert(false, ("invalid mode: " + mode))
}
};
var prototypeAccessors = { currentRoute: {} };
prototypeAccessors.currentRoute.get = function () {
return this.history && this.history.current
};
VueRouter.prototype.init = function init (app /* Vue component instance */) {
var this$1 = this;
process.env.NODE_ENV !== 'production' && assert(
install.installed,
"not installed. Make sure to call `Vue.use(VueRouter)` " +
"before creating root instance."
)
this.app = app
var history = this.history
if (history instanceof HTML5History) {
history.transitionTo(getLocation(history.base))
} else if (history instanceof HashHistory) {
var setupHashListener = function () {
window.addEventListener('hashchange', function () {
history.onHashChange()
})
}
history.transitionTo(getHash(), setupHashListener, setupHashListener)
}
history.listen(function (route) {
this$1.app._route = route
})
};
VueRouter.prototype.beforeEach = function beforeEach (fn) {
this.beforeHooks.push(fn)
};
VueRouter.prototype.afterEach = function afterEach (fn) {
this.afterHooks.push(fn)
};
VueRouter.prototype.push = function push (location) {
this.history.push(location)
};
VueRouter.prototype.replace = function replace (location) {
this.history.replace(location)
};
VueRouter.prototype.go = function go (n) {
this.history.go(n)
};
VueRouter.prototype.back = function back () {
this.go(-1)
};
VueRouter.prototype.forward = function forward () {
this.go(1)
};
VueRouter.prototype.getMatchedComponents = function getMatchedComponents (to) {
var route = to
? this.resolve(to).resolved
: this.currentRoute
if (!route) {
return []
}
return [].concat.apply([], route.matched.map(function (m) {
return Object.keys(m.components).map(function (key) {
return m.components[key]
})
}))
};
VueRouter.prototype.resolve = function resolve (
to,
current,
append
) {
var normalizedTo = normalizeLocation(to, current || this.history.current, append)
var resolved = this.match(normalizedTo, current)
var fullPath = resolved.redirectedFrom || resolved.fullPath
var base = this.history.base
var href = createHref(base, fullPath, this.mode)
return {
normalizedTo: normalizedTo,
resolved: resolved,
href: href
}
};
Object.defineProperties( VueRouter.prototype, prototypeAccessors );
function createHref (base, fullPath, mode) {
var path = mode === 'hash' ? '#' + fullPath : fullPath
return base ? cleanPath(base + '/' + path) : path
}
VueRouter.install = install
if (inBrowser && window.Vue) {
window.Vue.use(VueRouter)
}
module.exports = VueRouter;
/* WEBPACK VAR INJECTION */}.call(exports, __webpack_require__(10)))
/***/ },
/* 12 */
/***/ function(module, exports, __webpack_require__) {
var __vue_exports__, __vue_options__
var __vue_styles__ = {}
/* styles */
__webpack_require__(13)
/* script */
__vue_exports__ = __webpack_require__(16)
/* template */
var __vue_template__ = __webpack_require__(20)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
__vue_options__ = __vue_options__.options
}
__vue_options__.__file = "/Users/fenglai/project/oxygen/docs/App.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
/* hot reload */
if (false) {(function () {
var hotAPI = require("vue-loader/node_modules/vue-hot-reload-api")
hotAPI.install(require("vue"), false)
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
hotAPI.createRecord("data-v-507c292b", __vue_options__)
} else {
hotAPI.reload("data-v-507c292b", __vue_options__)
}
})()}
if (__vue_options__.functional) {console.error("[vue-loader] App.vue: functional components are not supported and should be defined in plain js files using render functions.")}
module.exports = __vue_exports__
/***/ },
/* 13 */
/***/ function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(14);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(15)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!./../node_modules/css-loader/index.js?sourceMap!./../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-507c292b!./../node_modules/less-loader/index.js!./../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue", function() {
var newContent = require("!!./../node_modules/css-loader/index.js?sourceMap!./../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-507c292b!./../node_modules/less-loader/index.js!./../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./App.vue");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ },
/* 14 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(3)();
// imports
// module
exports.push([module.id, "\n.page-container {\n width: 1140px;\n padding: 0 30px;\n margin: 0 auto;\n}\n.page-container h2 {\n font-size: 28px;\n color: #1f2d3d;\n margin: 20px 0;\n line-height: 40px;\n}\n.page-container h3 {\n font-size: 22px;\n margin: 23px 0;\n}\n.page-container h2,\n.page-container h3,\n.page-container h4,\n.page-container h5 {\n font-weight: normal;\n color: #1f2f3d;\n}\n.page-container h2:hover a,\n.page-container h3:hover a,\n.page-container h4:hover a,\n.page-container h5:hover a {\n opacity: .4;\n}\n.page-container h2 a,\n.page-container h3 a,\n.page-container h4 a,\n.page-container h5 a {\n float: left;\n margin-left: -20px;\n opacity: 0;\n cursor: pointer;\n}\n.page-container h2 a:hover,\n.page-container h3 a:hover,\n.page-container h4 a:hover,\n.page-container h5 a:hover {\n opacity: .4;\n}\n.page-container p {\n font-size: 14px;\n color: #5e6d82;\n margin: 14px 0;\n}\n.page-content {\n width: 75%;\n float: left;\n}\n.table {\n border-collapse: collapse;\n width: 100%;\n background-color: #fff;\n color: #5e6d82;\n font-size: 14px;\n margin-bottom: 45px;\n}\n.table th:first-child {\n padding-left: 10px;\n}\n.table th {\n text-align: left;\n border-top: 1px solid #eaeefb;\n border-bottom: 1px solid #eaeefb;\n background-color: #eff2f7;\n padding: 10px;\n}\n.table td {\n border-bottom: 1px solid #eaeefb;\n padding: 10px;\n}\n", "", {"version":3,"sources":["/./docs/App.vue"],"names":[],"mappings":";AAAA;EACE,cAAc;EACd,gBAAgB;EAChB,eAAe;CAChB;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,eAAe;EACf,kBAAkB;CACnB;AACD;EACE,gBAAgB;EAChB,eAAe;CAChB;AACD;;;;EAIE,oBAAoB;EACpB,eAAe;CAChB;AACD;;;;EAIE,YAAY;CACb;AACD;;;;EAIE,YAAY;EACZ,mBAAmB;EACnB,WAAW;EACX,gBAAgB;CACjB;AACD;;;;EAIE,YAAY;CACb;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,eAAe;CAChB;AACD;EACE,WAAW;EACX,YAAY;CACb;AACD;EACE,0BAA0B;EAC1B,YAAY;EACZ,uBAAuB;EACvB,eAAe;EACf,gBAAgB;EAChB,oBAAoB;CACrB;AACD;EACE,mBAAmB;CACpB;AACD;EACE,iBAAiB;EACjB,8BAA8B;EAC9B,iCAAiC;EACjC,0BAA0B;EAC1B,cAAc;CACf;AACD;EACE,iCAAiC;EACjC,cAAc;CACf","file":"App.vue","sourcesContent":[".page-container {\n width: 1140px;\n padding: 0 30px;\n margin: 0 auto;\n}\n.page-container h2 {\n font-size: 28px;\n color: #1f2d3d;\n margin: 20px 0;\n line-height: 40px;\n}\n.page-container h3 {\n font-size: 22px;\n margin: 23px 0;\n}\n.page-container h2,\n.page-container h3,\n.page-container h4,\n.page-container h5 {\n font-weight: normal;\n color: #1f2f3d;\n}\n.page-container h2:hover a,\n.page-container h3:hover a,\n.page-container h4:hover a,\n.page-container h5:hover a {\n opacity: .4;\n}\n.page-container h2 a,\n.page-container h3 a,\n.page-container h4 a,\n.page-container h5 a {\n float: left;\n margin-left: -20px;\n opacity: 0;\n cursor: pointer;\n}\n.page-container h2 a:hover,\n.page-container h3 a:hover,\n.page-container h4 a:hover,\n.page-container h5 a:hover {\n opacity: .4;\n}\n.page-container p {\n font-size: 14px;\n color: #5e6d82;\n margin: 14px 0;\n}\n.page-content {\n width: 75%;\n float: left;\n}\n.table {\n border-collapse: collapse;\n width: 100%;\n background-color: #fff;\n color: #5e6d82;\n font-size: 14px;\n margin-bottom: 45px;\n}\n.table th:first-child {\n padding-left: 10px;\n}\n.table th {\n text-align: left;\n border-top: 1px solid #eaeefb;\n border-bottom: 1px solid #eaeefb;\n background-color: #eff2f7;\n padding: 10px;\n}\n.table td {\n border-bottom: 1px solid #eaeefb;\n padding: 10px;\n}\n"],"sourceRoot":"webpack://"}]);
// exports
/***/ },
/* 15 */
/***/ function(module, exports, __webpack_require__) {
/*
MIT License http://www.opensource.org/licenses/mit-license.php
Author Tobias Koppers @sokra
*/
var stylesInDom = {},
memoize = function(fn) {
var memo;
return function () {
if (typeof memo === "undefined") memo = fn.apply(this, arguments);
return memo;
};
},
isOldIE = memoize(function() {
return /msie [6-9]\b/.test(window.navigator.userAgent.toLowerCase());
}),
getHeadElement = memoize(function () {
return document.head || document.getElementsByTagName("head")[0];
}),
singletonElement = null,
singletonCounter = 0,
styleElementsInsertedAtTop = [];
module.exports = function(list, options) {
if(false) {
if(typeof document !== "object") throw new Error("The style-loader cannot be used in a non-browser environment");
}
options = options || {};
// Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
// tags it will allow on a page
if (typeof options.singleton === "undefined") options.singleton = isOldIE();
// By default, add <style> tags to the bottom of <head>.
if (typeof options.insertAt === "undefined") options.insertAt = "bottom";
var styles = listToStyles(list);
addStylesToDom(styles, options);
return function update(newList) {
var mayRemove = [];
for(var i = 0; i < styles.length; i++) {
var item = styles[i];
var domStyle = stylesInDom[item.id];
domStyle.refs--;
mayRemove.push(domStyle);
}
if(newList) {
var newStyles = listToStyles(newList);
addStylesToDom(newStyles, options);
}
for(var i = 0; i < mayRemove.length; i++) {
var domStyle = mayRemove[i];
if(domStyle.refs === 0) {
for(var j = 0; j < domStyle.parts.length; j++)
domStyle.parts[j]();
delete stylesInDom[domStyle.id];
}
}
};
}
function addStylesToDom(styles, options) {
for(var i = 0; i < styles.length; i++) {
var item = styles[i];
var domStyle = stylesInDom[item.id];
if(domStyle) {
domStyle.refs++;
for(var j = 0; j < domStyle.parts.length; j++) {
domStyle.parts[j](item.parts[j]);
}
for(; j < item.parts.length; j++) {
domStyle.parts.push(addStyle(item.parts[j], options));
}
} else {
var parts = [];
for(var j = 0; j < item.parts.length; j++) {
parts.push(addStyle(item.parts[j], options));
}
stylesInDom[item.id] = {id: item.id, refs: 1, parts: parts};
}
}
}
function listToStyles(list) {
var styles = [];
var newStyles = {};
for(var i = 0; i < list.length; i++) {
var item = list[i];
var id = item[0];
var css = item[1];
var media = item[2];
var sourceMap = item[3];
var part = {css: css, media: media, sourceMap: sourceMap};
if(!newStyles[id])
styles.push(newStyles[id] = {id: id, parts: [part]});
else
newStyles[id].parts.push(part);
}
return styles;
}
function insertStyleElement(options, styleElement) {
var head = getHeadElement();
var lastStyleElementInsertedAtTop = styleElementsInsertedAtTop[styleElementsInsertedAtTop.length - 1];
if (options.insertAt === "top") {
if(!lastStyleElementInsertedAtTop) {
head.insertBefore(styleElement, head.firstChild);
} else if(lastStyleElementInsertedAtTop.nextSibling) {
head.insertBefore(styleElement, lastStyleElementInsertedAtTop.nextSibling);
} else {
head.appendChild(styleElement);
}
styleElementsInsertedAtTop.push(styleElement);
} else if (options.insertAt === "bottom") {
head.appendChild(styleElement);
} else {
throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
}
}
function removeStyleElement(styleElement) {
styleElement.parentNode.removeChild(styleElement);
var idx = styleElementsInsertedAtTop.indexOf(styleElement);
if(idx >= 0) {
styleElementsInsertedAtTop.splice(idx, 1);
}
}
function createStyleElement(options) {
var styleElement = document.createElement("style");
styleElement.type = "text/css";
insertStyleElement(options, styleElement);
return styleElement;
}
function addStyle(obj, options) {
var styleElement, update, remove;
if (options.singleton) {
var styleIndex = singletonCounter++;
styleElement = singletonElement || (singletonElement = createStyleElement(options));
update = applyToSingletonTag.bind(null, styleElement, styleIndex, false);
remove = applyToSingletonTag.bind(null, styleElement, styleIndex, true);
} else {
styleElement = createStyleElement(options);
update = applyToTag.bind(null, styleElement);
remove = function() {
removeStyleElement(styleElement);
};
}
update(obj);
return function updateStyle(newObj) {
if(newObj) {
if(newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap)
return;
update(obj = newObj);
} else {
remove();
}
};
}
var replaceText = (function () {
var textStore = [];
return function (index, replacement) {
textStore[index] = replacement;
return textStore.filter(Boolean).join('\n');
};
})();
function applyToSingletonTag(styleElement, index, remove, obj) {
var css = remove ? "" : obj.css;
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = replaceText(index, css);
} else {
var cssNode = document.createTextNode(css);
var childNodes = styleElement.childNodes;
if (childNodes[index]) styleElement.removeChild(childNodes[index]);
if (childNodes.length) {
styleElement.insertBefore(cssNode, childNodes[index]);
} else {
styleElement.appendChild(cssNode);
}
}
}
function applyToTag(styleElement, obj) {
var css = obj.css;
var media = obj.media;
var sourceMap = obj.sourceMap;
if (media) {
styleElement.setAttribute("media", media);
}
if (sourceMap) {
// https://developer.chrome.com/devtools/docs/javascript-debugging
// this makes source maps inside style tags work properly in Chrome
css += '\n/*# sourceURL=' + sourceMap.sources[0] + ' */';
// http://stackoverflow.com/a/26603875
css += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))) + " */";
}
if (styleElement.styleSheet) {
styleElement.styleSheet.cssText = css;
} else {
while(styleElement.firstChild) {
styleElement.removeChild(styleElement.firstChild);
}
styleElement.appendChild(document.createTextNode(css));
}
}
/***/ },
/* 16 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
__webpack_require__(17);
var _navConfig = __webpack_require__(19);
var _navConfig2 = _interopRequireDefault(_navConfig);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
//
//
//
//
//
//
//
//
//
exports.default = {
data: function data() {
return {
navConfig: _navConfig2.default
};
}
};
/***/ },
/* 17 */
/***/ function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(18);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(8)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!./../../css-loader/index.js?root=./docs!./color-brewer.css", function() {
var newContent = require("!!./../../css-loader/index.js?root=./docs!./color-brewer.css");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ },
/* 18 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(3)();
// imports
// module
exports.push([module.id, "/*\n\nColorbrewer theme\nOriginal: https://github.com/mbostock/colorbrewer-theme (c) Mike Bostock <mike@ocks.org>\nPorted by Fabrício Tavares de Oliveira\n\n*/\n\n.hljs {\n display: block;\n overflow-x: auto;\n padding: 0.5em;\n background: #fff;\n}\n\n.hljs,\n.hljs-subst {\n color: #000;\n}\n\n.hljs-string,\n.hljs-meta,\n.hljs-symbol,\n.hljs-template-tag,\n.hljs-template-variable,\n.hljs-addition {\n color: #756bb1;\n}\n\n.hljs-comment,\n.hljs-quote {\n color: #636363;\n}\n\n.hljs-number,\n.hljs-regexp,\n.hljs-literal,\n.hljs-bullet,\n.hljs-link {\n color: #31a354;\n}\n\n.hljs-deletion,\n.hljs-variable {\n color: #88f;\n}\n\n\n\n.hljs-keyword,\n.hljs-selector-tag,\n.hljs-title,\n.hljs-section,\n.hljs-built_in,\n.hljs-doctag,\n.hljs-type,\n.hljs-tag,\n.hljs-name,\n.hljs-selector-id,\n.hljs-selector-class,\n.hljs-strong {\n color: #3182bd;\n}\n\n.hljs-emphasis {\n font-style: italic;\n}\n\n.hljs-attribute {\n color: #e6550d;\n}\n", ""]);
// exports
/***/ },
/* 19 */
/***/ function(module, exports) {
module.exports = {
"zh-CN": [
{
"name": "基础组件",
"groups": [
{
"groupName": "Basic",
"list": [
{
"path": "/sample",
"title": "Sample组件"
}
]
}
]
}
]
};
/***/ },
/* 20 */
/***/ function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
return _c('div', {
staticClass: "page-container"
}, [_c('side-nav', {
attrs: {
"data": _vm.navConfig['zh-CN'],
"base": "/component"
}
}), _vm._v(" "), _c('div', {
staticClass: "page-content"
}, [_c('router-view')], 1)], 1)
},staticRenderFns: []}
module.exports.render._withStripped = true
if (false) {
module.hot.accept()
if (module.hot.data) {
require("vue-loader/node_modules/vue-hot-reload-api").rerender("data-v-507c292b", module.exports)
}
}
/***/ },
/* 21 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _navConfig = __webpack_require__(19);
var _navConfig2 = _interopRequireDefault(_navConfig);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var registerRoute = function registerRoute(navConfig) {
var route = {};
var navs = navConfig['zh-CN'];
navs.forEach(function (nav) {
if (nav.groups) {
nav.groups.forEach(function (group) {
group.list.forEach(function (nav) {
addRoute(nav);
});
});
} else if (nav.children) {
nav.children.forEach(function (nav) {
addRoute(nav);
});
} else {
addRoute(nav);
}
});
function addRoute(page) {
route['/component' + page.path] = {
component: function component(resolve) {
__webpack_require__.e/* require */(1, function(__webpack_require__) { var __WEBPACK_AMD_REQUIRE_ARRAY__ = [__webpack_require__(22)("./examples" + page.path + '.md')]; (resolve.apply(null, __WEBPACK_AMD_REQUIRE_ARRAY__));}.bind(this));
}
};
}
return route;
};
var route = registerRoute(_navConfig2.default);
exports.default = route;
/***/ },
/* 22 */,
/* 23 */,
/* 24 */,
/* 25 */,
/* 26 */,
/* 27 */
/***/ function(module, exports, __webpack_require__) {
var __vue_exports__, __vue_options__
var __vue_styles__ = {}
/* styles */
__webpack_require__(28)
/* script */
__vue_exports__ = __webpack_require__(30)
/* template */
var __vue_template__ = __webpack_require__(31)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
__vue_options__ = __vue_options__.options
}
__vue_options__.__file = "/Users/fenglai/project/oxygen/docs/components/demo-block.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
/* hot reload */
if (false) {(function () {
var hotAPI = require("vue-loader/node_modules/vue-hot-reload-api")
hotAPI.install(require("vue"), false)
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
hotAPI.createRecord("data-v-59e535e6", __vue_options__)
} else {
hotAPI.reload("data-v-59e535e6", __vue_options__)
}
})()}
if (__vue_options__.functional) {console.error("[vue-loader] demo-block.vue: functional components are not supported and should be defined in plain js files using render functions.")}
module.exports = __vue_exports__
/***/ },
/* 28 */
/***/ function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(29);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(15)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!./../../node_modules/css-loader/index.js?sourceMap!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-59e535e6!./../../node_modules/less-loader/index.js!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./demo-block.vue", function() {
var newContent = require("!!./../../node_modules/css-loader/index.js?sourceMap!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-59e535e6!./../../node_modules/less-loader/index.js!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./demo-block.vue");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ },
/* 29 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(3)();
// imports
// module
exports.push([module.id, "\n.demo-block {\n border: solid 1px #eaeefb;\n border-radius: 4px;\n transition: .2s;\n}\n.demo-block.hover {\n box-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6), 0 2px 4px 0 rgba(232, 237, 250, 0.5);\n}\n.demo-block code {\n font-family: Menlo, Monaco, Consolas, Courier, monospace;\n}\n.demo-block p {\n margin: 0;\n}\n.demo-block .demo-button {\n float: right;\n}\n.demo-block .source {\n padding: 24px;\n}\n.demo-block .meta {\n background-color: #f9fafc;\n border-top: solid 1px #eaeefb;\n clear: both;\n overflow: hidden;\n height: 0;\n transition: height .2s;\n}\n.demo-block .description {\n padding: 18px 24px;\n width: 40%;\n box-sizing: border-box;\n border-left: solid 1px #eaeefb;\n float: right;\n font-size: 14px;\n line-height: 1.8;\n color: #5e6d82;\n word-break: break-word;\n}\n.demo-block .description p {\n margin: 0 0 12px;\n}\n.demo-block .description code {\n color: #5e6d82;\n background-color: #e6effb;\n margin: 0 4px;\n transform: translateY(-2px);\n display: inline-block;\n padding: 1px 5px;\n font-size: 12px;\n border-radius: 3px;\n}\n.demo-block .highlight {\n width: 60%;\n border-right: solid 1px #eaeefb;\n}\n.demo-block .highlight pre {\n margin: 0;\n}\n.demo-block .highlight code.hljs {\n margin: 0;\n border: none;\n max-height: none;\n border-radius: 0;\n}\n.demo-block .highlight code.hljs::before {\n content: none;\n}\n.demo-block .demo-block-control {\n border-top: solid 1px #eaeefb;\n height: 36px;\n box-sizing: border-box;\n background-color: #fff;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n text-align: center;\n margin-top: -1px;\n color: #d3dce6;\n cursor: pointer;\n transition: .2s;\n position: relative;\n}\n.demo-block .demo-block-control i {\n font-size: 12px;\n line-height: 36px;\n transition: .3s;\n}\n.demo-block .demo-block-control i.hovering {\n transform: translateX(-40px);\n}\n.demo-block .demo-block-control span {\n position: absolute;\n transform: translateX(-30px);\n font-size: 14px;\n line-height: 36px;\n transition: .3s;\n display: inline-block;\n}\n.demo-block .demo-block-control:hover {\n color: #20a0ff;\n background-color: #f9fafc;\n}\n.demo-block .demo-block-control .text-slide-enter,\n.demo-block .demo-block-control .text-slide-leave-active {\n opacity: 0;\n transform: translateX(10px);\n}\n", "", {"version":3,"sources":["/./docs/components/demo-block.vue"],"names":[],"mappings":";AAAA;EACE,0BAA0B;EAC1B,mBAAmB;EACnB,gBAAgB;CACjB;AACD;EACE,qFAAqF;CACtF;AACD;EACE,yDAAyD;CAC1D;AACD;EACE,UAAU;CACX;AACD;EACE,aAAa;CACd;AACD;EACE,cAAc;CACf;AACD;EACE,0BAA0B;EAC1B,8BAA8B;EAC9B,YAAY;EACZ,iBAAiB;EACjB,UAAU;EACV,uBAAuB;CACxB;AACD;EACE,mBAAmB;EACnB,WAAW;EACX,uBAAuB;EACvB,+BAA+B;EAC/B,aAAa;EACb,gBAAgB;EAChB,iBAAiB;EACjB,eAAe;EACf,uBAAuB;CACxB;AACD;EACE,iBAAiB;CAClB;AACD;EACE,eAAe;EACf,0BAA0B;EAC1B,cAAc;EACd,4BAA4B;EAC5B,sBAAsB;EACtB,iBAAiB;EACjB,gBAAgB;EAChB,mBAAmB;CACpB;AACD;EACE,WAAW;EACX,gCAAgC;CACjC;AACD;EACE,UAAU;CACX;AACD;EACE,UAAU;EACV,aAAa;EACb,iBAAiB;EACjB,iBAAiB;CAClB;AACD;EACE,cAAc;CACf;AACD;EACE,8BAA8B;EAC9B,aAAa;EACb,uBAAuB;EACvB,uBAAuB;EACvB,+BAA+B;EAC/B,gCAAgC;EAChC,mBAAmB;EACnB,iBAAiB;EACjB,eAAe;EACf,gBAAgB;EAChB,gBAAgB;EAChB,mBAAmB;CACpB;AACD;EACE,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;CACjB;AACD;EACE,6BAA6B;CAC9B;AACD;EACE,mBAAmB;EACnB,6BAA6B;EAC7B,gBAAgB;EAChB,kBAAkB;EAClB,gBAAgB;EAChB,sBAAsB;CACvB;AACD;EACE,eAAe;EACf,0BAA0B;CAC3B;AACD;;EAEE,WAAW;EACX,4BAA4B;CAC7B","file":"demo-block.vue","sourcesContent":[".demo-block {\n border: solid 1px #eaeefb;\n border-radius: 4px;\n transition: .2s;\n}\n.demo-block.hover {\n box-shadow: 0 0 8px 0 rgba(232, 237, 250, 0.6), 0 2px 4px 0 rgba(232, 237, 250, 0.5);\n}\n.demo-block code {\n font-family: Menlo, Monaco, Consolas, Courier, monospace;\n}\n.demo-block p {\n margin: 0;\n}\n.demo-block .demo-button {\n float: right;\n}\n.demo-block .source {\n padding: 24px;\n}\n.demo-block .meta {\n background-color: #f9fafc;\n border-top: solid 1px #eaeefb;\n clear: both;\n overflow: hidden;\n height: 0;\n transition: height .2s;\n}\n.demo-block .description {\n padding: 18px 24px;\n width: 40%;\n box-sizing: border-box;\n border-left: solid 1px #eaeefb;\n float: right;\n font-size: 14px;\n line-height: 1.8;\n color: #5e6d82;\n word-break: break-word;\n}\n.demo-block .description p {\n margin: 0 0 12px;\n}\n.demo-block .description code {\n color: #5e6d82;\n background-color: #e6effb;\n margin: 0 4px;\n transform: translateY(-2px);\n display: inline-block;\n padding: 1px 5px;\n font-size: 12px;\n border-radius: 3px;\n}\n.demo-block .highlight {\n width: 60%;\n border-right: solid 1px #eaeefb;\n}\n.demo-block .highlight pre {\n margin: 0;\n}\n.demo-block .highlight code.hljs {\n margin: 0;\n border: none;\n max-height: none;\n border-radius: 0;\n}\n.demo-block .highlight code.hljs::before {\n content: none;\n}\n.demo-block .demo-block-control {\n border-top: solid 1px #eaeefb;\n height: 36px;\n box-sizing: border-box;\n background-color: #fff;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n text-align: center;\n margin-top: -1px;\n color: #d3dce6;\n cursor: pointer;\n transition: .2s;\n position: relative;\n}\n.demo-block .demo-block-control i {\n font-size: 12px;\n line-height: 36px;\n transition: .3s;\n}\n.demo-block .demo-block-control i.hovering {\n transform: translateX(-40px);\n}\n.demo-block .demo-block-control span {\n position: absolute;\n transform: translateX(-30px);\n font-size: 14px;\n line-height: 36px;\n transition: .3s;\n display: inline-block;\n}\n.demo-block .demo-block-control:hover {\n color: #20a0ff;\n background-color: #f9fafc;\n}\n.demo-block .demo-block-control .text-slide-enter,\n.demo-block .demo-block-control .text-slide-leave-active {\n opacity: 0;\n transform: translateX(10px);\n}\n"],"sourceRoot":"webpack://"}]);
// exports
/***/ },
/* 30 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
exports.default = {
data: function data() {
return {
hovering: false,
isExpanded: false
};
},
computed: {
blockClass: function blockClass() {
return 'demo-' + this.$route.path.split('/').pop();
},
controlText: function controlText() {
return this.isExpanded ? '隐藏代码' : '显示代码';
},
codeArea: function codeArea() {
return this.$el.getElementsByClassName('meta')[0];
},
codeAreaHeight: function codeAreaHeight() {
if (this.$el.getElementsByClassName('description').length > 0) {
return Math.max(this.$el.getElementsByClassName('description')[0].clientHeight, this.$el.getElementsByClassName('highlight')[0].clientHeight);
}
return this.$el.getElementsByClassName('highlight')[0].clientHeight;
}
},
watch: {
isExpanded: function isExpanded(val) {
this.codeArea.style.height = val ? this.codeAreaHeight + 1 + 'px' : '0';
}
},
ready: function ready() {
var _this = this;
this.$nextTick(function () {
var highlight = _this.$el.getElementsByClassName('highlight')[0];
if (_this.$el.getElementsByClassName('description').length === 0) {
highlight.style.width = '100%';
highlight.borderRight = 'none';
}
});
}
};
/***/ },
/* 31 */
/***/ function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
return _c('div', {
staticClass: "demo-block",
class: [_vm.blockClass, {
'hover': _vm.hovering
}],
on: {
"mouseenter": function($event) {
_vm.hovering = true
},
"mouseleave": function($event) {
_vm.hovering = false
}
}
}, [_vm._t("source"), _vm._v(" "), _c('div', {
staticClass: "meta"
}, [_c('div', {
staticClass: "description"
}, [_vm._t("default")], 2), _vm._v(" "), _vm._t("highlight")], 2), _vm._v(" "), _c('div', {
staticClass: "demo-block-control",
on: {
"click": function($event) {
_vm.isExpanded = !_vm.isExpanded
}
}
}, [_c('span', {
directives: [{
name: "show",
rawName: "v-show",
value: (_vm.hovering),
expression: "hovering"
}]
}, [_vm._v(_vm._s(_vm.controlText))])])], 2)
},staticRenderFns: []}
module.exports.render._withStripped = true
if (false) {
module.hot.accept()
if (module.hot.data) {
require("vue-loader/node_modules/vue-hot-reload-api").rerender("data-v-59e535e6", module.exports)
}
}
/***/ },
/* 32 */
/***/ function(module, exports, __webpack_require__) {
var __vue_exports__, __vue_options__
var __vue_styles__ = {}
/* styles */
__webpack_require__(33)
/* script */
__vue_exports__ = __webpack_require__(35)
/* template */
var __vue_template__ = __webpack_require__(36)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
__vue_options__ = __vue_options__.options
}
__vue_options__.__file = "/Users/fenglai/project/oxygen/docs/components/side-nav.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
/* hot reload */
if (false) {(function () {
var hotAPI = require("vue-loader/node_modules/vue-hot-reload-api")
hotAPI.install(require("vue"), false)
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
hotAPI.createRecord("data-v-fec531a0", __vue_options__)
} else {
hotAPI.reload("data-v-fec531a0", __vue_options__)
}
})()}
if (__vue_options__.functional) {console.error("[vue-loader] side-nav.vue: functional components are not supported and should be defined in plain js files using render functions.")}
module.exports = __vue_exports__
/***/ },
/* 33 */
/***/ function(module, exports, __webpack_require__) {
// style-loader: Adds some css to the DOM by adding a <style> tag
// load the styles
var content = __webpack_require__(34);
if(typeof content === 'string') content = [[module.id, content, '']];
// add the styles to the DOM
var update = __webpack_require__(15)(content, {});
if(content.locals) module.exports = content.locals;
// Hot Module Replacement
if(false) {
// When the styles change, update the <style> tags
if(!content.locals) {
module.hot.accept("!!./../../node_modules/css-loader/index.js?sourceMap!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-fec531a0!./../../node_modules/less-loader/index.js!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side-nav.vue", function() {
var newContent = require("!!./../../node_modules/css-loader/index.js?sourceMap!./../../node_modules/vue-loader/lib/style-rewriter.js?id=data-v-fec531a0!./../../node_modules/less-loader/index.js!./../../node_modules/vue-loader/lib/selector.js?type=styles&index=0!./side-nav.vue");
if(typeof newContent === 'string') newContent = [[module.id, newContent, '']];
update(newContent);
});
}
// When the module is disposed, remove the <style> tags
module.hot.dispose(function() { update(); });
}
/***/ },
/* 34 */
/***/ function(module, exports, __webpack_require__) {
exports = module.exports = __webpack_require__(3)();
// imports
// module
exports.push([module.id, "\n.side-nav {\n width: 25%;\n box-sizing: border-box;\n padding-right: 30px;\n float: left;\n}\n.side-nav li {\n list-style: none;\n}\n.side-nav ul {\n padding: 0;\n margin: 0;\n overflow: hidden;\n}\n.side-nav .nav-item a {\n font-size: 16px;\n color: #5e6d82;\n line-height: 40px;\n height: 40px;\n margin: 0;\n padding: 0;\n text-decoration: none;\n display: block;\n position: relative;\n transition: all .3s;\n}\n.side-nav .nav-item a.active {\n color: #20a0ff;\n}\n.side-nav .nav-item .nav-item a {\n display: block;\n height: 40px;\n line-height: 40px;\n font-size: 13px;\n padding-left: 24px;\n}\n.side-nav .nav-item .nav-item a:hover {\n color: #20a0ff;\n}\n.side-nav .nav-group__title {\n font-size: 12px;\n color: #99a9bf;\n padding-left: 8px;\n line-height: 26px;\n margin-top: 10px;\n}\n", "", {"version":3,"sources":["/./docs/components/side-nav.vue"],"names":[],"mappings":";AAAA;EACE,WAAW;EACX,uBAAuB;EACvB,oBAAoB;EACpB,YAAY;CACb;AACD;EACE,iBAAiB;CAClB;AACD;EACE,WAAW;EACX,UAAU;EACV,iBAAiB;CAClB;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,aAAa;EACb,UAAU;EACV,WAAW;EACX,sBAAsB;EACtB,eAAe;EACf,mBAAmB;EACnB,oBAAoB;CACrB;AACD;EACE,eAAe;CAChB;AACD;EACE,eAAe;EACf,aAAa;EACb,kBAAkB;EAClB,gBAAgB;EAChB,mBAAmB;CACpB;AACD;EACE,eAAe;CAChB;AACD;EACE,gBAAgB;EAChB,eAAe;EACf,kBAAkB;EAClB,kBAAkB;EAClB,iBAAiB;CAClB","file":"side-nav.vue","sourcesContent":[".side-nav {\n width: 25%;\n box-sizing: border-box;\n padding-right: 30px;\n float: left;\n}\n.side-nav li {\n list-style: none;\n}\n.side-nav ul {\n padding: 0;\n margin: 0;\n overflow: hidden;\n}\n.side-nav .nav-item a {\n font-size: 16px;\n color: #5e6d82;\n line-height: 40px;\n height: 40px;\n margin: 0;\n padding: 0;\n text-decoration: none;\n display: block;\n position: relative;\n transition: all .3s;\n}\n.side-nav .nav-item a.active {\n color: #20a0ff;\n}\n.side-nav .nav-item .nav-item a {\n display: block;\n height: 40px;\n line-height: 40px;\n font-size: 13px;\n padding-left: 24px;\n}\n.side-nav .nav-item .nav-item a:hover {\n color: #20a0ff;\n}\n.side-nav .nav-group__title {\n font-size: 12px;\n color: #99a9bf;\n padding-left: 8px;\n line-height: 26px;\n margin-top: 10px;\n}\n"],"sourceRoot":"webpack://"}]);
// exports
/***/ },
/* 35 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
//
exports.default = {
props: {
data: Array,
base: {
type: String,
default: ''
}
},
data: function data() {
return {
highlights: [],
navState: []
};
}
};
/***/ },
/* 36 */
/***/ function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
return _c('div', {
staticClass: "side-nav"
}, [_c('ul', _vm._l((_vm.data), function(item) {
return _c('li', {
staticClass: "nav-item"
}, [(!item.path) ? _c('a', [_vm._v(_vm._s(item.name))]) : _c('a', {
directives: [{
name: "link",
rawName: "v-link",
value: ({
path: _vm.base + item.path,
activeClass: 'active',
exact: true
}),
expression: "{ path: base + item.path, activeClass: 'active', exact: true}"
}]
}, [_vm._v(_vm._s(item.title || item.name))]), _vm._v(" "), (item.children) ? _c('ul', {
staticClass: "pure-menu-list sub-nav"
}, _vm._l((item.children), function(navItem) {
return _c('li', {
staticClass: "nav-item"
}, [_c('a', {
directives: [{
name: "link",
rawName: "v-link",
value: ({
path: _vm.base + navItem.path,
activeClass: 'active',
exact: true
}),
expression: "{ path: base + navItem.path, activeClass: 'active', exact: true}"
}]
}, [_vm._v(_vm._s(navItem.title || navItem.name))])])
})) : _vm._e(), _vm._v(" "), (item.groups) ? _vm._l((item.groups), function(group) {
return _c('div', {
staticClass: "nav-group"
}, [_c('div', {
staticClass: "nav-group__title"
}, [_vm._v(_vm._s(group.groupName))]), _vm._v(" "), _c('ul', {
staticClass: "pure-menu-list"
}, [_vm._l((group.list), function(navItem) {
return [(!navItem.disabled) ? _c('li', {
staticClass: "nav-item"
}, [_c('a', {
directives: [{
name: "link",
rawName: "v-link",
value: ({
path: _vm.base + navItem.path,
activeClass: 'active',
exact: true
}),
expression: "{ path: base + navItem.path, activeClass: 'active', exact: true}"
}]
}, [_vm._v(_vm._s(navItem.title))])]) : _vm._e()]
})], 2)])
}) : _vm._e()], 2)
}))])
},staticRenderFns: []}
module.exports.render._withStripped = true
if (false) {
module.hot.accept()
if (module.hot.data) {
require("vue-loader/node_modules/vue-hot-reload-api").rerender("data-v-fec531a0", module.exports)
}
}
/***/ },
/* 37 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
var _index = __webpack_require__(38);
var _index2 = _interopRequireDefault(_index);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var install = function install(Vue) {
if (install.installed) return;
Vue.component(_index2.default.name, _index2.default);
};
// auto install
if (typeof window !== 'undefined' && window.Vue) {
install(window.Vue);
};
module.exports = {
install: install,
version: '0.0.1',
Sample: _index2.default
};
/***/ },
/* 38 */
/***/ function(module, exports, __webpack_require__) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
var _main = __webpack_require__(39);
var _main2 = _interopRequireDefault(_main);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
exports.default = _main2.default;
/***/ },
/* 39 */
/***/ function(module, exports, __webpack_require__) {
var __vue_exports__, __vue_options__
var __vue_styles__ = {}
/* script */
__vue_exports__ = __webpack_require__(40)
/* template */
var __vue_template__ = __webpack_require__(41)
__vue_options__ = __vue_exports__ = __vue_exports__ || {}
if (
typeof __vue_exports__.default === "object" ||
typeof __vue_exports__.default === "function"
) {
if (Object.keys(__vue_exports__).some(function (key) { return key !== "default" && key !== "__esModule" })) {console.error("named exports are not supported in *.vue files.")}
__vue_options__ = __vue_exports__ = __vue_exports__.default
}
if (typeof __vue_options__ === "function") {
__vue_options__ = __vue_options__.options
}
__vue_options__.__file = "/Users/fenglai/project/oxygen/packages/sample/src/main.vue"
__vue_options__.render = __vue_template__.render
__vue_options__.staticRenderFns = __vue_template__.staticRenderFns
/* hot reload */
if (false) {(function () {
var hotAPI = require("vue-loader/node_modules/vue-hot-reload-api")
hotAPI.install(require("vue"), false)
if (!hotAPI.compatible) return
module.hot.accept()
if (!module.hot.data) {
hotAPI.createRecord("data-v-58aa66b6", __vue_options__)
} else {
hotAPI.reload("data-v-58aa66b6", __vue_options__)
}
})()}
if (__vue_options__.functional) {console.error("[vue-loader] main.vue: functional components are not supported and should be defined in plain js files using render functions.")}
module.exports = __vue_exports__
/***/ },
/* 40 */
/***/ function(module, exports) {
'use strict';
Object.defineProperty(exports, "__esModule", {
value: true
});
//
//
//
//
//
//
//
exports.default = {
name: 'SampleComponent',
props: ['author'],
data: function data() {
return {
name: 'World'
};
}
};
/***/ },
/* 41 */
/***/ function(module, exports, __webpack_require__) {
module.exports={render:function (){var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;
return _c('div', [_c('h2', [_vm._v("author: " + _vm._s(_vm.author))]), _vm._v(" "), _c('div', [_vm._v("Hello " + _vm._s(_vm.name))])])
},staticRenderFns: []}
module.exports.render._withStripped = true
if (false) {
module.hot.accept()
if (module.hot.data) {
require("vue-loader/node_modules/vue-hot-reload-api").rerender("data-v-58aa66b6", module.exports)
}
}
/***/ }
/******/ ]);
//# sourceMappingURL=build-docs.js.map