diff --git a/gh-pages/static/js/app.bcd40e336ccc6f4add7f.js b/gh-pages/static/js/app.bcd40e336ccc6f4add7f.js new file mode 100644 index 00000000..2c5107ce --- /dev/null +++ b/gh-pages/static/js/app.bcd40e336ccc6f4add7f.js @@ -0,0 +1,10 @@ +!function(e){function t(i){if(n[i])return n[i].exports;var r=n[i]={exports:{},id:i,loaded:!1};return e[i].call(r.exports,r,r.exports,t),r.loaded=!0,r.exports}var n={};return t.m=e,t.c=n,t.p="",t(0)}([function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}function r(e,t){var n=!1;return function(){n||(e.call(),n=!0,setTimeout(function(){n=!1},t))}}var o=n(83),s=i(o),a=n(82),c=i(a),l=n(79),u=i(l),h=n(80),f=i(h);s["default"].partial("customOptionPartial",f["default"]);var d=", 100%, 85%";n(77),new s["default"]({el:"body",components:{Multiselect:c["default"]},data:function(){return{options:["Select option","options","selected","mulitple","label","searchable","clearOnSelect","hideSelected","maxHeight","allowEmpty","showLabels","onChange","touched"],selected:["Select option"],source:[{name:"Vue.js",language:"JavaScript"},{name:"Rails",language:"Ruby"},{name:"Sinatra",language:"Ruby"},{name:"Laravel",language:"PHP"},{name:"Phoenix",language:"Elixir"}],value:{name:"Vue.js",language:"Javascript"},valuePrimitive:"showLabels",multiValue:[{name:"Vue.js",language:"Javascript"}],multiple:!0,taggingOptions:[{name:"Vue.js",code:"vu"},{name:"Javascript",code:"js"},{name:"Monterail",code:"pl"},{name:"Open Source",code:"os"}],taggingSelected:[],searchable:!0,placeholder:"Select props",countries:[],selectedCountries:[],actions:["alert","console.log","scrollTop"],action:null,isTouched:!1,exampleValue6:[],isLoading:!1,isNavSticky:!1,firstColor:Math.floor(255*Math.random()),secondColor:Math.floor(255*Math.random()),styleList:[{title:"Space Pirate",desc:"More space battles!",img:"static/posters/fleet.png"},{title:"Merchant",desc:"PROFIT!",img:"static/posters/trading_post.png"},{title:"Explorer",desc:"Discovering new species!",img:"static/posters/creatures.png"},{title:"Miner",desc:"We need to go deeper!",img:"static/posters/resource_lab.png"}],selectedStyle:{title:"Explorer",desc:"Discovering new species!",img:"static/posters/creatures.png"}}},computed:{gradient:function(){return{background:"linear-gradient(to left bottom, hsl("+(this.firstColor+d)+") 0%, hsl("+(this.secondColor+d)+") 100%)"}},isInvalid:function(){return this.isTouched&&0===this.exampleValue6.length}},methods:{asyncFind:function(e){var t=this;0===e.length?this.countries=[]:(this.isLoading=!0,setTimeout(function(){t.countries=u["default"].filter(function(t,n,i){return t.name.toLowerCase().includes(e.toLowerCase())}),t.isLoading=!1},1e3))},asyncUpdate:function(e){this.selectedCountries=e},afterChange:function(e){this.selected=e},onTagging:function(e){this.options.push(e),this.selected.push(e)},onClose:function(e){console.log("close: ",e)},addTag:function(e){var t={name:e,code:e.substring(0,2)+Math.floor(1e7*Math.random())};this.taggingOptions.push(t),this.taggingSelected.push(t)},updateSelectedTagging:function(e){console.log("@tag: ",e),this.taggingSelected=e},dispatchAction:function(e){switch(e){case"alert":window.alert('You just dispatched "alert" action!');break;case"console.log":console.log('You just dispatched "console.log" action!');break;case"scrollTop":window.scrollTo(0,0)}},updateExampleValue:function(e){console.log("@update: ",e),this.exampleValue6=e},onTouch:function(){this.isTouched=!0},updateValue:function(e){console.log("@update: ",e),this.value=e},updateMultiValue:function(e){console.log("@update: ",e),this.multiValue=e},updateValuePrimitive:function(e){console.log("@update: ",e),this.valuePrimitive=e},updateSelectedStyle:function(e){this.selectedStyle=e},nameWithLang:function(e){var t=e.name,n=e.language;return t+" — ["+n+"]"},styleLabel:function(e){var t=e.title,n=e.desc;return t+" – "+n},onSelect:function(e){console.log("@select: ",e)},onRemove:function(e){console.log("@remove: ",e)},adjustNav:function(){this.isNavSticky=window.scrollY>window.innerHeight}},ready:function(){this.adjustNav(),window.addEventListener("scroll",r(this.adjustNav,50))}})},function(e,t){var n=e.exports="undefined"!=typeof window&&window.Math==Math?window:"undefined"!=typeof self&&self.Math==Math?self:Function("return this")();"number"==typeof __g&&(__g=n)},function(e,t){var n={}.hasOwnProperty;e.exports=function(e,t){return n.call(e,t)}},function(e,t,n){var i=n(55),r=n(15);e.exports=function(e){return i(r(e))}},function(e,t,n){e.exports=!n(9)(function(){return 7!=Object.defineProperty({},"a",{get:function(){return 7}}).a})},function(e,t,n){var i=n(6),r=n(13);e.exports=n(4)?function(e,t,n){return i.f(e,t,r(1,n))}:function(e,t,n){return e[t]=n,e}},function(e,t,n){var i=n(11),r=n(31),o=n(25),s=Object.defineProperty;t.f=n(4)?Object.defineProperty:function(e,t,n){if(i(e),t=o(t,!0),i(n),r)try{return s(e,t,n)}catch(a){}if("get"in n||"set"in n)throw TypeError("Accessors not supported!");return"value"in n&&(e[t]=n.value),e}},function(e,t,n){var i=n(23)("wks"),r=n(14),o=n(1).Symbol,s="function"==typeof o,a=e.exports=function(e){return i[e]||(i[e]=s&&o[e]||(s?o:r)("Symbol."+e))};a.store=i},function(e,t){var n=e.exports={version:"2.4.0"};"number"==typeof __e&&(__e=n)},function(e,t){e.exports=function(e){try{return!!e()}catch(t){return!0}}},function(e,t,n){var i=n(36),r=n(16);e.exports=Object.keys||function(e){return i(e,r)}},function(e,t,n){var i=n(12);e.exports=function(e){if(!i(e))throw TypeError(e+" is not an object!");return e}},function(e,t){e.exports=function(e){return"object"==typeof e?null!==e:"function"==typeof e}},function(e,t){e.exports=function(e,t){return{enumerable:!(1&e),configurable:!(2&e),writable:!(4&e),value:t}}},function(e,t){var n=0,i=Math.random();e.exports=function(e){return"Symbol(".concat(void 0===e?"":e,")_",(++n+i).toString(36))}},function(e,t){e.exports=function(e){if(void 0==e)throw TypeError("Can't call method on "+e);return e}},function(e,t){e.exports="constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")},function(e,t,n){var i=n(1),r=n(8),o=n(52),s=n(5),a="prototype",c=function(e,t,n){var l,u,h,f=e&c.F,d=e&c.G,p=e&c.S,v=e&c.P,m=e&c.B,g=e&c.W,y=d?r:r[t]||(r[t]={}),b=y[a],_=d?i:p?i[t]:(i[t]||{})[a];d&&(n=t);for(l in n)u=!f&&_&&void 0!==_[l],u&&l in y||(h=u?_[l]:n[l],y[l]=d&&"function"!=typeof _[l]?n[l]:m&&u?o(h,i):g&&_[l]==h?function(e){var t=function(t,n,i){if(this instanceof e){switch(arguments.length){case 0:return new e;case 1:return new e(t);case 2:return new e(t,n)}return new e(t,n,i)}return e.apply(this,arguments)};return t[a]=e[a],t}(h):v&&"function"==typeof h?o(Function.call,h):h,v&&((y.virtual||(y.virtual={}))[l]=h,e&c.R&&b&&!b[l]&&s(b,l,h)))};c.F=1,c.G=2,c.S=4,c.P=8,c.B=16,c.W=32,c.U=64,c.R=128,e.exports=c},function(e,t){e.exports={}},function(e,t){e.exports=!0},function(e,t){t.f={}.propertyIsEnumerable},function(e,t,n){var i=n(6).f,r=n(2),o=n(7)("toStringTag");e.exports=function(e,t,n){e&&!r(e=n?e:e.prototype,o)&&i(e,o,{configurable:!0,value:t})}},function(e,t,n){var i=n(23)("keys"),r=n(14);e.exports=function(e){return i[e]||(i[e]=r(e))}},function(e,t,n){var i=n(1),r="__core-js_shared__",o=i[r]||(i[r]={});e.exports=function(e){return o[e]||(o[e]={})}},function(e,t){var n=Math.ceil,i=Math.floor;e.exports=function(e){return isNaN(e=+e)?0:(e>0?i:n)(e)}},function(e,t,n){var i=n(12);e.exports=function(e,t){if(!i(e))return e;var n,r;if(t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;if("function"==typeof(n=e.valueOf)&&!i(r=n.call(e)))return r;if(!t&&"function"==typeof(n=e.toString)&&!i(r=n.call(e)))return r;throw TypeError("Can't convert object to primitive value")}},function(e,t,n){var i=n(1),r=n(8),o=n(19),s=n(27),a=n(6).f;e.exports=function(e){var t=r.Symbol||(r.Symbol=o?{}:i.Symbol||{});"_"==e.charAt(0)||e in t||a(t,e,{value:s.f(e)})}},function(e,t,n){t.f=n(7)},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}t.__esModule=!0;var r=n(45),o=i(r),s=n(44),a=i(s),c="function"==typeof a["default"]&&"symbol"==typeof o["default"]?function(e){return typeof e}:function(e){return e&&"function"==typeof a["default"]&&e.constructor===a["default"]?"symbol":typeof e};t["default"]="function"==typeof a["default"]&&"symbol"===c(o["default"])?function(e){return"undefined"==typeof e?"undefined":c(e)}:function(e){return e&&"function"==typeof a["default"]&&e.constructor===a["default"]?"symbol":"undefined"==typeof e?"undefined":c(e)}},function(e,t){var n={}.toString;e.exports=function(e){return n.call(e).slice(8,-1)}},function(e,t,n){var i=n(12),r=n(1).document,o=i(r)&&i(r.createElement);e.exports=function(e){return o?r.createElement(e):{}}},function(e,t,n){e.exports=!n(4)&&!n(9)(function(){return 7!=Object.defineProperty(n(30)("div"),"a",{get:function(){return 7}}).a})},function(e,t,n){"use strict";var i=n(19),r=n(17),o=n(37),s=n(5),a=n(2),c=n(18),l=n(57),u=n(21),h=n(64),f=n(7)("iterator"),d=!([].keys&&"next"in[].keys()),p="@@iterator",v="keys",m="values",g=function(){return this};e.exports=function(e,t,n,y,b,_,w){l(n,t,y);var C,x,k,$=function(e){if(!d&&e in T)return T[e];switch(e){case v:return function(){return new n(this,e)};case m:return function(){return new n(this,e)}}return function(){return new n(this,e)}},S=t+" Iterator",O=b==m,A=!1,T=e.prototype,N=T[f]||T[p]||b&&T[b],E=N||$(b),j=b?O?$("entries"):E:void 0,P="Array"==t?T.entries||N:N;if(P&&(k=h(P.call(new e)),k!==Object.prototype&&(u(k,S,!0),i||a(k,f)||s(k,f,g))),O&&N&&N.name!==m&&(A=!0,E=function(){return N.call(this)}),i&&!w||!d&&!A&&T[f]||s(T,f,E),c[t]=E,c[S]=g,b)if(C={values:O?E:$(m),keys:_?E:$(v),entries:j},w)for(x in C)x in T||o(T,x,C[x]);else r(r.P+r.F*(d||A),t,C);return C}},function(e,t,n){var i=n(11),r=n(61),o=n(16),s=n(22)("IE_PROTO"),a=function(){},c="prototype",l=function(){var e,t=n(30)("iframe"),i=o.length,r=">";for(t.style.display="none",n(54).appendChild(t),t.src="javascript:",e=t.contentWindow.document,e.open(),e.write("c;)i(a,n=t[c++])&&(~o(l,n)||l.push(n));return l}},function(e,t,n){e.exports=n(5)},function(e,t,n){var i=n(15);e.exports=function(e){return Object(i(e))}},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(28),o=i(r),s=n(41),a=i(s);e.exports={data:function(){return{search:"",isOpen:!1,value:this.selected?(0,a["default"])(this.selected):this.multiple?[]:null}},props:{localSearch:{type:Boolean,"default":!0},options:{type:Array,required:!0},multiple:{type:Boolean,"default":!1},selected:{},key:{type:String,"default":!1},label:{type:String,"default":!1},searchable:{type:Boolean,"default":!0},clearOnSelect:{type:Boolean,"default":!0},hideSelected:{type:Boolean,"default":!1},placeholder:{type:String,"default":"Select option"},maxHeight:{type:Number,"default":300},allowEmpty:{type:Boolean,"default":!0},resetAfter:{type:Boolean,"default":!1},closeOnSelect:{type:Boolean,"default":!0},customLabel:{type:Function,"default":!1},taggable:{type:Boolean,"default":!1},tagPlaceholder:{type:String,"default":"Press enter to create a tag"},max:{type:Number,"default":!1},id:{"default":null}},created:function(){this.searchable&&this.adjustSearch()},computed:{filteredOptions:function(){var e=this.search||"",t=this.hideSelected?this.options.filter(this.isNotSelected):this.options;return this.localSearch&&(t=this.$options.filters.filterBy(t,this.search)),this.taggable&&e.length&&!this.isExistingOption(e)&&t.unshift({isTag:!0,label:e}),t},valueKeys:function(){var e=this;return this.key?this.multiple?this.value.map(function(t){return t[e.key]}):this.value[this.key]:this.value},optionKeys:function(){var e=this;return this.label?this.options.map(function(t){return t[e.label]}):this.options},currentOptionLabel:function(){return this.getOptionLabel(this.value)}},watch:{value:function(){this.resetAfter&&(this.$set("value",null),this.$set("search",null),this.$set("selected",null)),this.adjustSearch()},search:function(){this.search!==this.currentOptionLabel&&this.$emit("search-change",this.search,this.id)},selected:function(e,t){this.value=(0,a["default"])(this.selected)}},methods:{isExistingOption:function(e){return this.options?this.optionKeys.indexOf(e)>-1:!1},isSelected:function(e){if(!this.value)return!1;var t=this.key?e[this.key]:e;return this.multiple?this.valueKeys.indexOf(t)>-1:this.valueKeys===t},isNotSelected:function(e){return!this.isSelected(e)},getOptionLabel:function(e){return"object"!==("undefined"==typeof e?"undefined":(0,o["default"])(e))||null===e?e:this.customLabel?this.customLabel(e):this.label&&e[this.label]?e[this.label]:e.label?e.label:void 0},select:function(e){if(!this.max||!this.multiple||this.value.length!==this.max)if(e.isTag)this.$emit("tag",e.label,this.id),this.search="";else{if(this.multiple)this.isNotSelected(e)?(this.value.push(e),this.$emit("select",(0,a["default"])(e),this.id),this.$emit("update",(0,a["default"])(this.value),this.id)):this.removeElement(e);else{var t=this.isSelected(e);if(t&&!this.allowEmpty)return;this.value=t?null:e,this.$emit("select",(0,a["default"])(e),this.id),this.$emit("update",(0,a["default"])(this.value),this.id)}this.closeOnSelect&&this.deactivate()}},removeElement:function(e){if(this.allowEmpty||!(this.value.length<=1)){if(this.multiple&&"object"===("undefined"==typeof e?"undefined":(0,o["default"])(e))){var t=this.valueKeys.indexOf(e[this.key]);this.value.splice(t,1)}else this.value.$remove(e);this.$emit("remove",(0,a["default"])(e),this.id),this.$emit("update",(0,a["default"])(this.value),this.id)}},removeLastElement:function(){0===this.search.length&&Array.isArray(this.value)&&this.removeElement(this.value[this.value.length-1])},activate:function(){this.isOpen||(this.isOpen=!0,this.searchable?(this.search="",this.$els.search.focus()):this.$el.focus(),this.$emit("open",this.id))},deactivate:function(){this.isOpen&&(this.isOpen=!1,this.searchable?(this.$els.search.blur(),this.adjustSearch()):this.$el.blur(),this.$emit("close",(0,a["default"])(this.value),this.id))},adjustSearch:function(){this.searchable&&this.clearOnSelect&&(this.search=this.multiple?"":this.currentOptionLabel)},toggle:function(){this.isOpen?this.deactivate():this.activate()}}}},function(e,t){"use strict";e.exports={data:function(){return{pointer:0,visibleElements:this.maxHeight/this.optionHeight}},props:{showPointer:{type:Boolean,"default":!0},optionHeight:{type:Number,"default":40}},computed:{pointerPosition:function(){return this.pointer*this.optionHeight}},watch:{filteredOptions:function(){this.pointerAdjust()}},methods:{addPointerElement:function(){this.filteredOptions.length>0&&this.select(this.filteredOptions[this.pointer]),this.pointerReset()},pointerForward:function(){this.pointer0&&(this.pointer--,this.$els.list.scrollTop>=this.pointerPosition&&(this.$els.list.scrollTop=this.pointerPosition))},pointerReset:function(){this.closeOnSelect&&(this.pointer=0,this.$els.list&&(this.$els.list.scrollTop=0))},pointerAdjust:function(){this.pointer>=this.filteredOptions.length-1&&(this.pointer=this.filteredOptions.length?this.filteredOptions.length-1:0)},pointerSet:function(e){this.pointer=e}}}},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}var r=n(43),o=i(r),s=n(28),a=i(s),c=function l(e){if(Array.isArray(e))return e.map(l);if(e&&"object"===("undefined"==typeof e?"undefined":(0,a["default"])(e))){for(var t={},n=(0,o["default"])(e),i=0,r=n.length;r>i;i++){var s=n[i];t[s]=l(e[s])}return t}return e};e.exports=c},function(e,t,n){"use strict";function i(e){return e&&e.__esModule?e:{"default":e}}Object.defineProperty(t,"__esModule",{value:!0});var r=n(39),o=i(r),s=n(40),a=i(s);t["default"]={mixins:[o["default"],a["default"]],props:{optionPartial:{type:String,"default":""},selectLabel:{type:String,"default":"Press enter to select"},selectedLabel:{type:String,"default":"Selected"},deselectLabel:{type:String,"default":"Press enter to remove"},showLabels:{type:Boolean,"default":!0},limit:{type:Number,"default":99999},limitText:{type:Function,"default":function(e){return"and "+e+" more"}},loading:{type:Boolean,"default":!1},disabled:{type:Boolean,"default":!1}},computed:{visibleValue:function(){return this.multiple?this.value.slice(0,this.limit):this.value}},ready:function(){this.showLabels||(this.deselectLabel=this.selectedLabel=this.selectLabel="")}}},function(e,t,n){e.exports={"default":n(46),__esModule:!0}},function(e,t,n){e.exports={"default":n(47),__esModule:!0}},function(e,t,n){e.exports={"default":n(48),__esModule:!0}},function(e,t,n){n(70),e.exports=n(8).Object.keys},function(e,t,n){n(73),n(71),n(74),n(75),e.exports=n(8).Symbol},function(e,t,n){n(72),n(76),e.exports=n(27).f("iterator")},function(e,t){e.exports=function(e){if("function"!=typeof e)throw TypeError(e+" is not a function!");return e}},function(e,t){e.exports=function(){}},function(e,t,n){var i=n(3),r=n(68),o=n(67);e.exports=function(e){return function(t,n,s){var a,c=i(t),l=r(c.length),u=o(s,l);if(e&&n!=n){for(;l>u;)if(a=c[u++],a!=a)return!0}else for(;l>u;u++)if((e||u in c)&&c[u]===n)return e||u||0;return!e&&-1}}},function(e,t,n){var i=n(49);e.exports=function(e,t,n){if(i(e),void 0===t)return e;switch(n){case 1:return function(n){return e.call(t,n)};case 2:return function(n,i){return e.call(t,n,i)};case 3:return function(n,i,r){return e.call(t,n,i,r)}}return function(){return e.apply(t,arguments)}}},function(e,t,n){var i=n(10),r=n(35),o=n(20);e.exports=function(e){var t=i(e),n=r.f;if(n)for(var s,a=n(e),c=o.f,l=0;a.length>l;)c.call(e,s=a[l++])&&t.push(s);return t}},function(e,t,n){e.exports=n(1).document&&document.documentElement},function(e,t,n){var i=n(29);e.exports=Object("z").propertyIsEnumerable(0)?Object:function(e){return"String"==i(e)?e.split(""):Object(e)}},function(e,t,n){var i=n(29);e.exports=Array.isArray||function(e){return"Array"==i(e)}},function(e,t,n){"use strict";var i=n(33),r=n(13),o=n(21),s={};n(5)(s,n(7)("iterator"),function(){return this}),e.exports=function(e,t,n){e.prototype=i(s,{next:r(1,n)}),o(e,t+" Iterator")}},function(e,t){e.exports=function(e,t){return{value:t,done:!!e}}},function(e,t,n){var i=n(10),r=n(3);e.exports=function(e,t){for(var n,o=r(e),s=i(o),a=s.length,c=0;a>c;)if(o[n=s[c++]]===t)return n}},function(e,t,n){var i=n(14)("meta"),r=n(12),o=n(2),s=n(6).f,a=0,c=Object.isExtensible||function(){return!0},l=!n(9)(function(){return c(Object.preventExtensions({}))}),u=function(e){s(e,i,{value:{i:"O"+ ++a,w:{}}})},h=function(e,t){if(!r(e))return"symbol"==typeof e?e:("string"==typeof e?"S":"P")+e;if(!o(e,i)){if(!c(e))return"F";if(!t)return"E";u(e)}return e[i].i},f=function(e,t){if(!o(e,i)){if(!c(e))return!0;if(!t)return!1;u(e)}return e[i].w},d=function(e){return l&&p.NEED&&c(e)&&!o(e,i)&&u(e),e},p=e.exports={KEY:i,NEED:!1,fastKey:h,getWeak:f,onFreeze:d}},function(e,t,n){var i=n(6),r=n(11),o=n(10);e.exports=n(4)?Object.defineProperties:function(e,t){r(e);for(var n,s=o(t),a=s.length,c=0;a>c;)i.f(e,n=s[c++],t[n]);return e}},function(e,t,n){var i=n(20),r=n(13),o=n(3),s=n(25),a=n(2),c=n(31),l=Object.getOwnPropertyDescriptor;t.f=n(4)?l:function(e,t){if(e=o(e),t=s(t,!0),c)try{return l(e,t)}catch(n){}return a(e,t)?r(!i.f.call(e,t),e[t]):void 0}},function(e,t,n){var i=n(3),r=n(34).f,o={}.toString,s="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],a=function(e){try{return r(e)}catch(t){return s.slice()}};e.exports.f=function(e){return s&&"[object Window]"==o.call(e)?a(e):r(i(e))}},function(e,t,n){var i=n(2),r=n(38),o=n(22)("IE_PROTO"),s=Object.prototype;e.exports=Object.getPrototypeOf||function(e){return e=r(e),i(e,o)?e[o]:"function"==typeof e.constructor&&e instanceof e.constructor?e.constructor.prototype:e instanceof Object?s:null}},function(e,t,n){var i=n(17),r=n(8),o=n(9);e.exports=function(e,t){var n=(r.Object||{})[e]||Object[e],s={};s[e]=t(n),i(i.S+i.F*o(function(){n(1)}),"Object",s)}},function(e,t,n){var i=n(24),r=n(15);e.exports=function(e){return function(t,n){var o,s,a=String(r(t)),c=i(n),l=a.length;return 0>c||c>=l?e?"":void 0:(o=a.charCodeAt(c),55296>o||o>56319||c+1===l||(s=a.charCodeAt(c+1))<56320||s>57343?e?a.charAt(c):o:e?a.slice(c,c+2):(o-55296<<10)+(s-56320)+65536)}}},function(e,t,n){var i=n(24),r=Math.max,o=Math.min;e.exports=function(e,t){return e=i(e),0>e?r(e+t,0):o(e,t)}},function(e,t,n){var i=n(24),r=Math.min;e.exports=function(e){return e>0?r(i(e),9007199254740991):0}},function(e,t,n){"use strict";var i=n(50),r=n(58),o=n(18),s=n(3);e.exports=n(32)(Array,"Array",function(e,t){this._t=s(e),this._i=0,this._k=t},function(){var e=this._t,t=this._k,n=this._i++;return!e||n>=e.length?(this._t=void 0,r(1)):"keys"==t?r(0,n):"values"==t?r(0,e[n]):r(0,[n,e[n]])},"values"),o.Arguments=o.Array,i("keys"),i("values"),i("entries")},function(e,t,n){var i=n(38),r=n(10);n(65)("keys",function(){return function(e){return r(i(e))}})},function(e,t){},function(e,t,n){"use strict";var i=n(66)(!0);n(32)(String,"String",function(e){this._t=String(e),this._i=0},function(){var e,t=this._t,n=this._i;return n>=t.length?{value:void 0,done:!0}:(e=i(t,n),this._i+=e.length,{value:e,done:!1})})},function(e,t,n){"use strict";var i=n(1),r=n(2),o=n(4),s=n(17),a=n(37),c=n(60).KEY,l=n(9),u=n(23),h=n(21),f=n(14),d=n(7),p=n(27),v=n(26),m=n(59),g=n(53),y=n(56),b=n(11),_=n(3),w=n(25),C=n(13),x=n(33),k=n(63),$=n(62),S=n(6),O=n(10),A=$.f,T=S.f,N=k.f,E=i.Symbol,j=i.JSON,P=j&&j.stringify,M="prototype",F=d("_hidden"),L=d("toPrimitive"),R={}.propertyIsEnumerable,I=u("symbol-registry"),D=u("symbols"),B=u("op-symbols"),H=Object[M],V="function"==typeof E,G=i.QObject,W=!G||!G[M]||!G[M].findChild,U=o&&l(function(){return 7!=x(T({},"a",{get:function(){return T(this,"a",{value:7}).a}})).a})?function(e,t,n){var i=A(H,t);i&&delete H[t],T(e,t,n),i&&e!==H&&T(H,t,i)}:T,z=function(e){var t=D[e]=x(E[M]);return t._k=e,t},K=V&&"symbol"==typeof E.iterator?function(e){return"symbol"==typeof e}:function(e){return e instanceof E},J=function(e,t,n){return e===H&&J(B,t,n),b(e),t=w(t,!0),b(n),r(D,t)?(n.enumerable?(r(e,F)&&e[F][t]&&(e[F][t]=!1),n=x(n,{enumerable:C(0,!1)})):(r(e,F)||T(e,F,C(1,{})),e[F][t]=!0),U(e,t,n)):T(e,t,n)},q=function(e,t){b(e);for(var n,i=g(t=_(t)),r=0,o=i.length;o>r;)J(e,n=i[r++],t[n]);return e},Y=function(e,t){return void 0===t?x(e):q(x(e),t)},Z=function(e){var t=R.call(this,e=w(e,!0));return this===H&&r(D,e)&&!r(B,e)?!1:t||!r(this,e)||!r(D,e)||r(this,F)&&this[F][e]?t:!0},Q=function(e,t){if(e=_(e),t=w(t,!0),e!==H||!r(D,t)||r(B,t)){var n=A(e,t);return!n||!r(D,t)||r(e,F)&&e[F][t]||(n.enumerable=!0),n}},X=function(e){for(var t,n=N(_(e)),i=[],o=0;n.length>o;)r(D,t=n[o++])||t==F||t==c||i.push(t);return i},ee=function(e){for(var t,n=e===H,i=N(n?B:_(e)),o=[],s=0;i.length>s;)r(D,t=i[s++])&&(n?r(H,t):!0)&&o.push(D[t]);return o};V||(E=function(){if(this instanceof E)throw TypeError("Symbol is not a constructor!");var e=f(arguments.length>0?arguments[0]:void 0),t=function(n){this===H&&t.call(B,n),r(this,F)&&r(this[F],e)&&(this[F][e]=!1),U(this,e,C(1,n))};return o&&W&&U(H,e,{configurable:!0,set:t}),z(e)},a(E[M],"toString",function(){return this._k}),$.f=Q,S.f=J,n(34).f=k.f=X,n(20).f=Z,n(35).f=ee,o&&!n(19)&&a(H,"propertyIsEnumerable",Z,!0),p.f=function(e){return z(d(e))}),s(s.G+s.W+s.F*!V,{Symbol:E});for(var te="hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","),ne=0;te.length>ne;)d(te[ne++]);for(var te=O(d.store),ne=0;te.length>ne;)v(te[ne++]);s(s.S+s.F*!V,"Symbol",{"for":function(e){return r(I,e+="")?I[e]:I[e]=E(e)},keyFor:function(e){if(K(e))return m(I,e);throw TypeError(e+" is not a symbol!")},useSetter:function(){W=!0},useSimple:function(){W=!1}}),s(s.S+s.F*!V,"Object",{create:Y,defineProperty:J,defineProperties:q,getOwnPropertyDescriptor:Q,getOwnPropertyNames:X,getOwnPropertySymbols:ee}),j&&s(s.S+s.F*(!V||l(function(){var e=E();return"[null]"!=P([e])||"{}"!=P({a:e})||"{}"!=P(Object(e))})),"JSON",{stringify:function(e){if(void 0!==e&&!K(e)){for(var t,n,i=[e],r=1;arguments.length>r;)i.push(arguments[r++]);return t=i[1],"function"==typeof t&&(n=t),!n&&y(t)||(t=function(e,t){return n&&(t=n.call(this,e,t)),K(t)?void 0:t}),i[1]=t,P.apply(j,i)}}}),E[M][L]||n(5)(E[M],L,E[M].valueOf),h(E,"Symbol"),h(Math,"Math",!0),h(i.JSON,"JSON",!0)},function(e,t,n){n(26)("asyncIterator")},function(e,t,n){n(26)("observable")},function(e,t,n){n(69);for(var i=n(1),r=n(5),o=n(18),s=n(7)("toStringTag"),a=["NodeList","DOMTokenList","MediaList","StyleSheetList","CSSRuleList"],c=0;5>c;c++){var l=a[c],u=i[l],h=u&&u.prototype;h&&!h[s]&&r(h,s,l),o[l]=o.Array}},function(e,t){},function(e,t){},function(e,t){e.exports=[{name:"Afghanistan",code:"AF"},{name:"Åland Islands",code:"AX"},{name:"Albania",code:"AL"},{name:"Algeria",code:"DZ"},{name:"American Samoa",code:"AS"},{name:"AndorrA",code:"AD"},{name:"Angola",code:"AO"},{name:"Anguilla",code:"AI"},{name:"Antarctica",code:"AQ"},{name:"Antigua and Barbuda",code:"AG"},{name:"Argentina",code:"AR"},{name:"Armenia",code:"AM"},{name:"Aruba",code:"AW"},{name:"Australia",code:"AU"},{name:"Austria",code:"AT"},{name:"Azerbaijan",code:"AZ"},{name:"Bahamas",code:"BS"},{name:"Bahrain",code:"BH"},{name:"Bangladesh",code:"BD"},{name:"Barbados",code:"BB"},{name:"Belarus",code:"BY"},{name:"Belgium",code:"BE"},{name:"Belize",code:"BZ"},{name:"Benin",code:"BJ"},{name:"Bermuda",code:"BM"},{name:"Bhutan",code:"BT"},{name:"Bolivia",code:"BO"},{name:"Bosnia and Herzegovina",code:"BA"},{name:"Botswana",code:"BW"},{name:"Bouvet Island",code:"BV"},{name:"Brazil",code:"BR"},{name:"British Indian Ocean Territory",code:"IO"},{name:"Brunei Darussalam",code:"BN"},{name:"Bulgaria",code:"BG"},{name:"Burkina Faso",code:"BF"},{name:"Burundi",code:"BI"},{name:"Cambodia",code:"KH"},{name:"Cameroon",code:"CM"},{name:"Canada",code:"CA"},{name:"Cape Verde",code:"CV"},{name:"Cayman Islands",code:"KY"},{name:"Central African Republic",code:"CF"},{name:"Chad",code:"TD"},{name:"Chile",code:"CL"},{name:"China",code:"CN"},{name:"Christmas Island",code:"CX"},{name:"Cocos (Keeling) Islands",code:"CC"},{name:"Colombia",code:"CO"},{name:"Comoros",code:"KM"},{name:"Congo",code:"CG"},{name:"Congo, The Democratic Republic of the",code:"CD"},{name:"Cook Islands",code:"CK"},{name:"Costa Rica",code:"CR"},{name:'Cote D"Ivoire',code:"CI"},{name:"Croatia",code:"HR"},{name:"Cuba",code:"CU"},{name:"Cyprus",code:"CY"},{name:"Czech Republic",code:"CZ"},{name:"Denmark",code:"DK"},{name:"Djibouti",code:"DJ"},{name:"Dominica",code:"DM"},{name:"Dominican Republic",code:"DO"},{name:"Ecuador",code:"EC"},{name:"Egypt",code:"EG"},{name:"El Salvador",code:"SV"},{name:"Equatorial Guinea",code:"GQ"},{name:"Eritrea",code:"ER"},{name:"Estonia",code:"EE"},{name:"Ethiopia",code:"ET"},{name:"Falkland Islands (Malvinas)",code:"FK"},{name:"Faroe Islands",code:"FO"},{name:"Fiji",code:"FJ"},{name:"Finland",code:"FI"},{name:"France",code:"FR"},{name:"French Guiana",code:"GF"},{name:"French Polynesia",code:"PF"},{name:"French Southern Territories",code:"TF"},{name:"Gabon",code:"GA"},{name:"Gambia",code:"GM"},{name:"Georgia",code:"GE"},{name:"Germany",code:"DE"},{name:"Ghana",code:"GH"},{name:"Gibraltar",code:"GI"},{name:"Greece",code:"GR"},{name:"Greenland",code:"GL"},{name:"Grenada",code:"GD"},{name:"Guadeloupe",code:"GP"},{name:"Guam",code:"GU"},{name:"Guatemala",code:"GT"},{name:"Guernsey",code:"GG"},{name:"Guinea",code:"GN"},{name:"Guinea-Bissau",code:"GW"},{name:"Guyana",code:"GY"},{name:"Haiti",code:"HT"},{name:"Heard Island and Mcdonald Islands",code:"HM"},{name:"Holy See (Vatican City State)",code:"VA"},{name:"Honduras",code:"HN"},{name:"Hong Kong",code:"HK"},{name:"Hungary",code:"HU"},{name:"Iceland",code:"IS"},{name:"India",code:"IN"},{name:"Indonesia",code:"ID"},{name:"Iran, Islamic Republic Of",code:"IR"},{name:"Iraq",code:"IQ"},{name:"Ireland",code:"IE"},{name:"Isle of Man",code:"IM"},{name:"Israel",code:"IL"},{name:"Italy",code:"IT"},{name:"Jamaica",code:"JM"},{name:"Japan",code:"JP"},{name:"Jersey",code:"JE"},{name:"Jordan",code:"JO"},{name:"Kazakhstan",code:"KZ"},{name:"Kenya",code:"KE"},{name:"Kiribati",code:"KI"},{name:'Korea, Democratic People"S Republic of',code:"KP"},{name:"Korea, Republic of",code:"KR"},{name:"Kuwait",code:"KW"},{name:"Kyrgyzstan",code:"KG"},{name:'Lao People"S Democratic Republic',code:"LA"},{name:"Latvia",code:"LV"},{name:"Lebanon",code:"LB"},{name:"Lesotho",code:"LS"},{name:"Liberia",code:"LR"},{name:"Libyan Arab Jamahiriya",code:"LY"},{name:"Liechtenstein",code:"LI"},{name:"Lithuania",code:"LT"},{name:"Luxembourg",code:"LU"},{name:"Macao",code:"MO"},{name:"Macedonia, The Former Yugoslav Republic of",code:"MK"},{name:"Madagascar",code:"MG"},{name:"Malawi",code:"MW"},{name:"Malaysia",code:"MY"},{name:"Maldives",code:"MV"},{name:"Mali",code:"ML"},{name:"Malta",code:"MT"},{name:"Marshall Islands",code:"MH"},{name:"Martinique",code:"MQ"},{name:"Mauritania",code:"MR"},{name:"Mauritius",code:"MU"},{name:"Mayotte",code:"YT"},{name:"Mexico",code:"MX"},{name:"Micronesia, Federated States of",code:"FM"},{name:"Moldova, Republic of",code:"MD"},{name:"Monaco",code:"MC"},{name:"Mongolia",code:"MN"},{name:"Montserrat",code:"MS"},{name:"Morocco",code:"MA"},{name:"Mozambique",code:"MZ"},{name:"Myanmar",code:"MM"},{name:"Namibia",code:"NA"},{name:"Nauru",code:"NR"},{name:"Nepal",code:"NP"},{name:"Netherlands",code:"NL"},{name:"Netherlands Antilles",code:"AN"},{name:"New Caledonia",code:"NC"},{name:"New Zealand",code:"NZ"},{name:"Nicaragua",code:"NI"},{name:"Niger",code:"NE"},{name:"Nigeria",code:"NG"},{name:"Niue",code:"NU"},{name:"Norfolk Island",code:"NF"},{name:"Northern Mariana Islands",code:"MP"},{name:"Norway",code:"NO"},{name:"Oman",code:"OM"},{name:"Pakistan",code:"PK"},{name:"Palau",code:"PW"},{name:"Palestinian Territory, Occupied",code:"PS"},{name:"Panama",code:"PA"},{name:"Papua New Guinea",code:"PG"},{name:"Paraguay",code:"PY"},{name:"Peru",code:"PE"},{name:"Philippines",code:"PH"},{name:"Pitcairn",code:"PN"},{name:"Poland",code:"PL"},{name:"Portugal",code:"PT"},{name:"Puerto Rico",code:"PR"},{name:"Qatar",code:"QA"},{name:"Reunion",code:"RE"},{name:"Romania",code:"RO"},{name:"Russian Federation",code:"RU"},{name:"RWANDA",code:"RW"},{name:"Saint Helena",code:"SH"},{name:"Saint Kitts and Nevis",code:"KN"},{name:"Saint Lucia",code:"LC"},{name:"Saint Pierre and Miquelon",code:"PM"},{name:"Saint Vincent and the Grenadines",code:"VC"},{name:"Samoa",code:"WS"},{name:"San Marino",code:"SM"},{name:"Sao Tome and Principe",code:"ST"},{name:"Saudi Arabia",code:"SA"},{name:"Senegal",code:"SN"},{name:"Serbia and Montenegro",code:"CS"},{name:"Seychelles",code:"SC"},{name:"Sierra Leone",code:"SL"},{name:"Singapore",code:"SG"},{name:"Slovakia",code:"SK"},{name:"Slovenia",code:"SI"},{name:"Solomon Islands",code:"SB"},{name:"Somalia",code:"SO"},{name:"South Africa",code:"ZA"},{name:"South Georgia and the South Sandwich Islands",code:"GS"},{name:"Spain",code:"ES"},{name:"Sri Lanka",code:"LK"},{name:"Sudan",code:"SD"},{name:"Suriname",code:"SR"},{name:"Svalbard and Jan Mayen",code:"SJ"},{name:"Swaziland",code:"SZ"},{name:"Sweden",code:"SE"},{name:"Switzerland",code:"CH"},{name:"Syrian Arab Republic",code:"SY"},{name:"Taiwan, Province of China",code:"TW"},{name:"Tajikistan",code:"TJ"},{name:"Tanzania, United Republic of",code:"TZ"},{name:"Thailand",code:"TH"},{name:"Timor-Leste",code:"TL"},{name:"Togo",code:"TG"},{name:"Tokelau",code:"TK"},{name:"Tonga",code:"TO"},{name:"Trinidad and Tobago",code:"TT"},{name:"Tunisia",code:"TN"},{name:"Turkey",code:"TR" +},{name:"Turkmenistan",code:"TM"},{name:"Turks and Caicos Islands",code:"TC"},{name:"Tuvalu",code:"TV"},{name:"Uganda",code:"UG"},{name:"Ukraine",code:"UA"},{name:"United Arab Emirates",code:"AE"},{name:"United Kingdom",code:"GB"},{name:"United States",code:"US"},{name:"United States Minor Outlying Islands",code:"UM"},{name:"Uruguay",code:"UY"},{name:"Uzbekistan",code:"UZ"},{name:"Vanuatu",code:"VU"},{name:"Venezuela",code:"VE"},{name:"Viet Nam",code:"VN"},{name:"Virgin Islands, British",code:"VG"},{name:"Virgin Islands, U.S.",code:"VI"},{name:"Wallis and Futuna",code:"WF"},{name:"Western Sahara",code:"EH"},{name:"Yemen",code:"YE"},{name:"Zambia",code:"ZM"},{name:"Zimbabwe",code:"ZW"}]},function(e,t){e.exports=' {{ option.title }} {{ option.desc }} '},function(e,t){e.exports=' Maximum of {{ max }} options selected. First remove a selected option to select another. No elements found. Consider changing the search query. '},function(e,t,n){var i,r;n(78),i=n(42),r=n(81),e.exports=i||{},e.exports.__esModule&&(e.exports=e.exports["default"]),r&&(("function"==typeof e.exports?e.exports.options||(e.exports.options={}):e.exports).template=r)},function(e,t,n){(function(t){/*! + * Vue.js v1.0.26 + * (c) 2016 Evan You + * Released under the MIT License. + */ +"use strict";function n(e,t,i){if(r(e,t))return void(e[t]=i);if(e._isVue)return void n(e._data,t,i);var o=e.__ob__;if(!o)return void(e[t]=i);if(o.convert(t,i),o.dep.notify(),o.vms)for(var s=o.vms.length;s--;){var a=o.vms[s];a._proxy(t),a._digest()}return i}function i(e,t){if(r(e,t)){delete e[t];var n=e.__ob__;if(!n)return void(e._isVue&&(delete e._data[t],e._digest()));if(n.dep.notify(),n.vms)for(var i=n.vms.length;i--;){var o=n.vms[i];o._unproxy(t),o._digest()}}}function r(e,t){return Nn.call(e,t)}function o(e){return En.test(e)}function s(e){var t=(e+"").charCodeAt(0);return 36===t||95===t}function a(e){return null==e?"":e.toString()}function c(e){if("string"!=typeof e)return e;var t=Number(e);return isNaN(t)?e:t}function l(e){return"true"===e?!0:"false"===e?!1:e}function u(e){var t=e.charCodeAt(0),n=e.charCodeAt(e.length-1);return t!==n||34!==t&&39!==t?e:e.slice(1,-1)}function h(e){return e.replace(jn,f)}function f(e,t){return t?t.toUpperCase():""}function d(e){return e.replace(Pn,"$1-$2").toLowerCase()}function p(e){return e.replace(Mn,f)}function v(e,t){return function(n){var i=arguments.length;return i?i>1?e.apply(t,arguments):e.call(t,n):e.call(t)}}function m(e,t){t=t||0;for(var n=e.length-t,i=new Array(n);n--;)i[n]=e[n+t];return i}function g(e,t){for(var n=Object.keys(t),i=n.length;i--;)e[n[i]]=t[n[i]];return e}function y(e){return null!==e&&"object"==typeof e}function b(e){return Fn.call(e)===Ln}function _(e,t,n,i){Object.defineProperty(e,t,{value:n,enumerable:!!i,writable:!0,configurable:!0})}function w(e,t){var n,i,r,o,s,a=function c(){var a=Date.now()-o;t>a&&a>=0?n=setTimeout(c,t-a):(n=null,s=e.apply(r,i),n||(r=i=null))};return function(){return r=this,i=arguments,o=Date.now(),n||(n=setTimeout(a,t)),s}}function C(e,t){for(var n=e.length;n--;)if(e[n]===t)return n;return-1}function x(e){var t=function n(){return n.cancelled?void 0:e.apply(this,arguments)};return t.cancel=function(){t.cancelled=!0},t}function k(e,t){return e==t||(y(e)&&y(t)?JSON.stringify(e)===JSON.stringify(t):!1)}function $(e){this.size=0,this.limit=e,this.head=this.tail=void 0,this._keymap=Object.create(null)}function S(){var e,t=ri.slice(ui,ci).trim();if(t){e={};var n=t.match(gi);e.name=n[0],n.length>1&&(e.args=n.slice(1).map(O))}e&&(oi.filters=oi.filters||[]).push(e),ui=ci+1}function O(e){if(yi.test(e))return{value:c(e),dynamic:!1};var t=u(e),n=t===e;return{value:n?e:t,dynamic:n}}function A(e){var t=mi.get(e);if(t)return t;for(ri=e,hi=fi=!1,di=pi=vi=0,ui=0,oi={},ci=0,li=ri.length;li>ci;ci++)if(ai=si,si=ri.charCodeAt(ci),hi)39===si&&92!==ai&&(hi=!hi);else if(fi)34===si&&92!==ai&&(fi=!fi);else if(124===si&&124!==ri.charCodeAt(ci+1)&&124!==ri.charCodeAt(ci-1))null==oi.expression?(ui=ci+1,oi.expression=ri.slice(0,ci).trim()):S();else switch(si){case 34:fi=!0;break;case 39:hi=!0;break;case 40:vi++;break;case 41:vi--;break;case 91:pi++;break;case 93:pi--;break;case 123:di++;break;case 125:di--}return null==oi.expression?oi.expression=ri.slice(0,ci).trim():0!==ui&&S(),mi.put(e,oi),oi}function T(e){return e.replace(_i,"\\$&")}function N(){var e=T(Ai.delimiters[0]),t=T(Ai.delimiters[1]),n=T(Ai.unsafeDelimiters[0]),i=T(Ai.unsafeDelimiters[1]);Ci=new RegExp(n+"((?:.|\\n)+?)"+i+"|"+e+"((?:.|\\n)+?)"+t,"g"),xi=new RegExp("^"+n+"((?:.|\\n)+?)"+i+"$"),wi=new $(1e3)}function E(e){wi||N();var t=wi.get(e);if(t)return t;if(!Ci.test(e))return null;for(var n,i,r,o,s,a,c=[],l=Ci.lastIndex=0;n=Ci.exec(e);)i=n.index,i>l&&c.push({value:e.slice(l,i)}),r=xi.test(n[0]),o=r?n[1]:n[2],s=o.charCodeAt(0),a=42===s,o=a?o.slice(1):o,c.push({tag:!0,value:o.trim(),html:r,oneTime:a}),l=i+n[0].length;return l1?e.map(function(e){return P(e,t)}).join("+"):P(e[0],t,!0)}function P(e,t,n){return e.tag?e.oneTime&&t?'"'+t.$eval(e.value)+'"':M(e.value,n):'"'+e.value+'"'}function M(e,t){if(ki.test(e)){var n=A(e);return n.filters?"this._applyFilters("+n.expression+",null,"+JSON.stringify(n.filters)+",false)":"("+e+")"}return t?e:"("+e+")"}function F(e,t,n,i){I(e,1,function(){t.appendChild(e)},n,i)}function L(e,t,n,i){I(e,1,function(){W(e,t)},n,i)}function R(e,t,n){I(e,-1,function(){z(e)},t,n)}function I(e,t,n,i,r){var o=e.__v_trans;if(!o||!o.hooks&&!Yn||!i._isCompiled||i.$parent&&!i.$parent._isCompiled)return n(),void(r&&r());var s=t>0?"enter":"leave";o[s](n,r)}function D(e){if("string"==typeof e){e=document.querySelector(e)}return e}function B(e){if(!e)return!1;var t=e.ownerDocument.documentElement,n=e.parentNode;return t===e||t===n||!(!n||1!==n.nodeType||!t.contains(n))}function H(e,t){var n=e.getAttribute(t);return null!==n&&e.removeAttribute(t),n}function V(e,t){var n=H(e,":"+t);return null===n&&(n=H(e,"v-bind:"+t)),n}function G(e,t){return e.hasAttribute(t)||e.hasAttribute(":"+t)||e.hasAttribute("v-bind:"+t)}function W(e,t){t.parentNode.insertBefore(e,t)}function U(e,t){t.nextSibling?W(e,t.nextSibling):t.parentNode.appendChild(e)}function z(e){e.parentNode.removeChild(e)}function K(e,t){t.firstChild?W(e,t.firstChild):t.appendChild(e)}function J(e,t){var n=e.parentNode;n&&n.replaceChild(t,e)}function q(e,t,n,i){e.addEventListener(t,n,i)}function Y(e,t,n){e.removeEventListener(t,n)}function Z(e){var t=e.className;return"object"==typeof t&&(t=t.baseVal||""),t}function Q(e,t){Gn&&!/svg$/.test(e.namespaceURI)?e.className=t:e.setAttribute("class",t)}function X(e,t){if(e.classList)e.classList.add(t);else{var n=" "+Z(e)+" ";n.indexOf(" "+t+" ")<0&&Q(e,(n+t).trim())}}function ee(e,t){if(e.classList)e.classList.remove(t);else{for(var n=" "+Z(e)+" ",i=" "+t+" ";n.indexOf(i)>=0;)n=n.replace(i," ");Q(e,n.trim())}e.className||e.removeAttribute("class")}function te(e,t){var n,i;if(re(e)&&le(e.content)&&(e=e.content),e.hasChildNodes())for(ne(e),i=t?document.createDocumentFragment():document.createElement("div");n=e.firstChild;)i.appendChild(n);return i}function ne(e){for(var t;t=e.firstChild,ie(t);)e.removeChild(t);for(;t=e.lastChild,ie(t);)e.removeChild(t)}function ie(e){return e&&(3===e.nodeType&&!e.data.trim()||8===e.nodeType)}function re(e){return e.tagName&&"template"===e.tagName.toLowerCase()}function oe(e,t){var n=Ai.debug?document.createComment(e):document.createTextNode(t?" ":"");return n.__v_anchor=!0,n}function se(e){if(e.hasAttributes())for(var t=e.attributes,n=0,i=t.length;i>n;n++){var r=t[n].name;if(Ei.test(r))return h(r.replace(Ei,""))}}function ae(e,t,n){for(var i;e!==t;)i=e.nextSibling,n(e),e=i;n(t)}function ce(e,t,n,i,r){function o(){if(a++,s&&a>=c.length){for(var e=0;er;r++){var s=i[r];ji.test(s)||Pi.test(s)||(t=n[s],b(t)&&(n[s]=kn.extend(t)))}}function me(e){var t,n,i=e.props;if(Rn(i))for(e.props={},t=i.length;t--;)n=i[t],"string"==typeof n?e.props[n]=null:n.name&&(e.props[n.name]=n);else if(b(i)){var r=Object.keys(i);for(t=r.length;t--;)n=i[r[t]],"function"==typeof n&&(i[r[t]]={type:n})}}function ge(e){if(Rn(e)){for(var t,n={},i=e.length;i--;){t=e[i];var r="function"==typeof t?t.options&&t.options.name||t.id:t.name||t.id;r&&(n[r]=t)}return n}return e}function ye(e,t,n){function i(i){var r=Mi[i]||Fi;s[i]=r(e[i],t[i],n,i)}ve(t),me(t);var o,s={};if(t["extends"]&&(e="function"==typeof t["extends"]?ye(e,t["extends"].options,n):ye(e,t["extends"],n)),t.mixins)for(var a=0,c=t.mixins.length;c>a;a++){var l=t.mixins[a],u=l.prototype instanceof kn?l.options:l;e=ye(e,u,n)}for(o in e)i(o);for(o in t)r(e,o)||i(o);return s}function be(e,t,n,i){if("string"==typeof n){var r,o=e[t],s=o[n]||o[r=h(n)]||o[r.charAt(0).toUpperCase()+r.slice(1)];return s}}function _e(){this.id=Li++,this.subs=[]}function we(e){Bi=!1,e(),Bi=!0}function Ce(e){if(this.value=e,this.dep=new _e,_(e,"__ob__",this),Rn(e)){var t=In?xe:ke;t(e,Ii,Di),this.observeArray(e)}else this.walk(e)}function xe(e,t){e.__proto__=t}function ke(e,t,n){for(var i=0,r=n.length;r>i;i++){var o=n[i];_(e,o,t[o])}}function $e(e,t){if(e&&"object"==typeof e){var n;return r(e,"__ob__")&&e.__ob__ instanceof Ce?n=e.__ob__:Bi&&(Rn(e)||b(e))&&Object.isExtensible(e)&&!e._isVue&&(n=new Ce(e)),n&&t&&n.addVm(t),n}}function Se(e,t,n){var i=new _e,r=Object.getOwnPropertyDescriptor(e,t);if(!r||r.configurable!==!1){var o=r&&r.get,s=r&&r.set,a=$e(n);Object.defineProperty(e,t,{enumerable:!0,configurable:!0,get:function(){var t=o?o.call(e):n;if(_e.target&&(i.depend(),a&&a.dep.depend(),Rn(t)))for(var r,s=0,c=t.length;c>s;s++)r=t[s],r&&r.__ob__&&r.__ob__.dep.depend();return t},set:function(t){var r=o?o.call(e):n;t!==r&&(s?s.call(e,t):n=t,a=$e(t),i.notify())}})}}function Oe(e){e.prototype._init=function(e){e=e||{},this.$el=null,this.$parent=e.parent,this.$root=this.$parent?this.$parent.$root:this,this.$children=[],this.$refs={},this.$els={},this._watchers=[],this._directives=[],this._uid=Vi++,this._isVue=!0,this._events={},this._eventsCount={},this._isFragment=!1,this._fragment=this._fragmentStart=this._fragmentEnd=null,this._isCompiled=this._isDestroyed=this._isReady=this._isAttached=this._isBeingDestroyed=this._vForRemoving=!1,this._unlinkFn=null,this._context=e._context||this.$parent,this._scope=e._scope,this._frag=e._frag,this._frag&&this._frag.children.push(this),this.$parent&&this.$parent.$children.push(this),e=this.$options=ye(this.constructor.options,e,this),this._updateRef(),this._data={},this._callHook("init"),this._initState(),this._initEvents(),this._callHook("created"),e.el&&this.$mount(e.el)}}function Ae(e){if(void 0===e)return"eof";var t=e.charCodeAt(0);switch(t){case 91:case 93:case 46:case 34:case 39:case 48:return e;case 95:case 36:return"ident";case 32:case 9:case 10:case 13:case 160:case 65279:case 8232:case 8233:return"ws"}return t>=97&&122>=t||t>=65&&90>=t?"ident":t>=49&&57>=t?"number":"else"}function Te(e){var t=e.trim();return"0"===e.charAt(0)&&isNaN(e)?!1:o(t)?u(t):"*"+t}function Ne(e){function t(){var t=e[u+1];return h===Xi&&"'"===t||h===er&&'"'===t?(u++,i="\\"+t,d[Wi](),!0):void 0}var n,i,r,o,s,a,c,l=[],u=-1,h=Ji,f=0,d=[];for(d[Ui]=function(){void 0!==r&&(l.push(r),r=void 0)},d[Wi]=function(){void 0===r?r=i:r+=i},d[zi]=function(){d[Wi](),f++},d[Ki]=function(){if(f>0)f--,h=Qi,d[Wi]();else{if(f=0,r=Te(r),r===!1)return!1;d[Ui]()}};null!=h;)if(u++,n=e[u],"\\"!==n||!t()){if(o=Ae(n),c=ir[h],s=c[o]||c["else"]||nr,s===nr)return;if(h=s[0],a=d[s[1]],a&&(i=s[2],i=void 0===i?n:i,a()===!1))return;if(h===tr)return l.raw=e,l}}function Ee(e){var t=Gi.get(e);return t||(t=Ne(e),t&&Gi.put(e,t)),t}function je(e,t){return He(t).get(e)}function Pe(e,t,i){var r=e;if("string"==typeof t&&(t=Ne(t)),!t||!y(e))return!1;for(var o,s,a=0,c=t.length;c>a;a++)o=e,s=t[a],"*"===s.charAt(0)&&(s=He(s.slice(1)).get.call(r,r)),c-1>a?(e=e[s],y(e)||(e={},n(o,s,e))):Rn(e)?e.$set(s,i):s in e?e[s]=i:n(e,s,i);return!0}function Me(){}function Fe(e,t){var n=gr.length;return gr[n]=t?e.replace(hr,"\\n"):e,'"'+n+'"'}function Le(e){var t=e.charAt(0),n=e.slice(1);return ar.test(n)?e:(n=n.indexOf('"')>-1?n.replace(dr,Re):n,t+"scope."+n)}function Re(e,t){return gr[t]}function Ie(e){lr.test(e),gr.length=0;var t=e.replace(fr,Fe).replace(ur,"");return t=(" "+t).replace(vr,Le).replace(dr,Re),De(t)}function De(e){try{return new Function("scope","return "+e+";")}catch(t){return Me}}function Be(e){var t=Ee(e);return t?function(e,n){Pe(e,t,n)}:void 0}function He(e,t){e=e.trim();var n=or.get(e);if(n)return t&&!n.set&&(n.set=Be(n.exp)),n;var i={exp:e};return i.get=Ve(e)&&e.indexOf("[")<0?De("scope."+e):Ie(e),t&&(i.set=Be(e)),or.put(e,i),i}function Ve(e){return pr.test(e)&&!mr.test(e)&&"Math."!==e.slice(0,5)}function Ge(){br.length=0,_r.length=0,wr={},Cr={},xr=!1}function We(){for(var e=!0;e;)e=!1,Ue(br),Ue(_r),br.length?e=!0:(Bn&&Ai.devtools&&Bn.emit("flush"),Ge())}function Ue(e){for(var t=0;t0){var s=o+(i?t:ue(t));r=Rr.get(s),r||(r=Lt(n,e.$options,!0),Rr.put(s,r))}else r=Lt(n,e.$options,!0);this.linker=r}function ct(e,t,n){var i=e.node.previousSibling;if(i){for(e=i.__v_frag;!(e&&e.forId===n&&e.inserted||i===t);){if(i=i.previousSibling,!i)return;e=i.__v_frag}return e}}function lt(e){var t=e.node;if(e.end)for(;!t.__vue__&&t!==e.end&&t.nextSibling;)t=t.nextSibling;return t.__vue__}function ut(e){for(var t=-1,n=new Array(Math.floor(e));++ta;a++)if(i=e.options[a],o=n?i.hasAttribute("selected"):i.selected){if(r=i.hasOwnProperty("_value")?i._value:i.value,!t)return r;s.push(r)}return s}function dt(e,t){for(var n=e.length;n--;)if(k(e[n],t))return n;return-1}function pt(e,t){var n=t.map(function(e){var t=e.charCodeAt(0);return t>47&&58>t?parseInt(e,10):1===e.length&&(t=e.toUpperCase().charCodeAt(0),t>64&&91>t)?t:ro[e]});return n=[].concat.apply([],n),function(t){return n.indexOf(t.keyCode)>-1?e.call(this,t):void 0}}function vt(e){return function(t){return t.stopPropagation(),e.call(this,t)}}function mt(e){return function(t){return t.preventDefault(),e.call(this,t)}}function gt(e){return function(t){return t.target===t.currentTarget?e.call(this,t):void 0}}function yt(e){if(lo[e])return lo[e];var t=bt(e);return lo[e]=lo[t]=t,t}function bt(e){e=d(e);var t=h(e),n=t.charAt(0).toUpperCase()+t.slice(1);uo||(uo=document.createElement("div"));var i,r=so.length;if("filter"!==t&&t in uo.style)return{kebab:e,camel:t};for(;r--;)if(i=ao[r]+n,i in uo.style)return{kebab:so[r]+e,camel:i}}function _t(e){var t=[];if(Rn(e))for(var n=0,i=e.length;i>n;n++){var r=e[n];if(r)if("string"==typeof r)t.push(r);else for(var o in r)r[o]&&t.push(o)}else if(y(e))for(var s in e)e[s]&&t.push(s);return t}function wt(e,t,n){if(t=t.trim(),-1===t.indexOf(" "))return void n(e,t);for(var i=t.split(/\s+/),r=0,o=i.length;o>r;r++)n(e,i[r])}function Ct(e,t,n){function i(){++o>=r?n():e[o].call(t,i)}var r=e.length,o=0;e[0].call(t,i)}function xt(e,t,n){for(var i,r,s,a,c,l,u,f=[],p=Object.keys(t),v=p.length;v--;)if(r=p[v],i=t[r]||Oo,c=h(r),Ao.test(c)){if(u={name:r,path:c,options:i,mode:So.ONE_WAY,raw:null},s=d(r),null===(a=V(e,s))&&(null!==(a=V(e,s+".sync"))?u.mode=So.TWO_WAY:null!==(a=V(e,s+".once"))&&(u.mode=So.ONE_TIME)),null!==a)u.raw=a,l=A(a),a=l.expression,u.filters=l.filters,o(a)&&!l.filters?u.optimizedLiteral=!0:u.dynamic=!0,u.parentPath=a;else if(null!==(a=H(e,s)))u.raw=a;else;f.push(u)}return kt(f)}function kt(e){return function(t,n){t._props={};for(var i,o,s,a,h,f=t.$options.propsData,p=e.length;p--;)if(i=e[p],h=i.raw,o=i.path,s=i.options,t._props[o]=i,f&&r(f,o)&&St(t,i,f[o]),null===h)St(t,i,void 0);else if(i.dynamic)i.mode===So.ONE_TIME?(a=(n||t._context||t).$get(i.parentPath),St(t,i,a)):t._context?t._bindDir({name:"prop",def:No,prop:i},null,null,n):St(t,i,t.$get(i.parentPath));else if(i.optimizedLiteral){var v=u(h);a=v===h?l(c(h)):v,St(t,i,a)}else a=s.type!==Boolean||""!==h&&h!==d(i.name)?h:!0,St(t,i,a)}}function $t(e,t,n,i){var r=t.dynamic&&Ve(t.parentPath),o=n;void 0===o&&(o=At(e,t)),o=Nt(t,o,e);var s=o!==n;Tt(t,o,e)||(o=void 0),r&&!s?we(function(){i(o)}):i(o)}function St(e,t,n){$t(e,t,n,function(n){Se(e,t.path,n)})}function Ot(e,t,n){$t(e,t,n,function(n){e[t.path]=n})}function At(e,t){var n=t.options;if(!r(n,"default"))return n.type===Boolean?!1:void 0;var i=n["default"];return y(i),"function"==typeof i&&n.type!==Function?i.call(e):i}function Tt(e,t,n){if(!e.options.required&&(null===e.raw||null==t))return!0;var i=e.options,r=i.type,o=!r,s=[];if(r){Rn(r)||(r=[r]);for(var a=0;ar;r++)i[r]._bind();return i}function It(e,t){return e=e.descriptor.def.priority||Ko,t=t.descriptor.def.priority||Ko,e>t?-1:e===t?0:1}function Dt(e,t,n,i){function r(r){Bt(e,t,r),n&&i&&Bt(n,i)}return r.dirs=t,r}function Bt(e,t,n){for(var i=t.length;i--;)t[i]._teardown()}function Ht(e,t,n,i){var r=xt(t,n,e),o=Rt(function(){r(e,i)},e);return Dt(e,o)}function Vt(e,t,n){var i,r,o=t._containerAttrs,s=t._replacerAttrs;if(11!==e.nodeType)t._asComponent?(o&&n&&(i=nn(o,n)),s&&(r=nn(s,t))):r=nn(e.attributes,t);else;return t._containerAttrs=t._replacerAttrs=null,function(e,t,n){var o,s=e._context;s&&i&&(o=Rt(function(){i(s,t,null,n)},s));var a=Rt(function(){r&&r(e,t)},e);return Dt(e,a,s,o)}}function Gt(e,t){var n=e.nodeType;return 1!==n||an(e)?3===n&&e.data.trim()?Ut(e,t):null:Wt(e,t)}function Wt(e,t){if("TEXTAREA"===e.tagName){var n=E(e.value);n&&(e.setAttribute(":value",j(n)),e.value="")}var i,r=e.hasAttributes(),o=r&&m(e.attributes);return r&&(i=Xt(e,o,t)),i||(i=Zt(e,t)),i||(i=Qt(e,t)),!i&&r&&(i=nn(o,t)),i}function Ut(e,t){if(e._skip)return zt;var n=E(e.wholeText);if(!n)return null;for(var i=e.nextSibling;i&&3===i.nodeType;)i._skip=!0,i=i.nextSibling;for(var r,o,s=document.createDocumentFragment(),a=0,c=n.length;c>a;a++)o=n[a],r=o.tag?Kt(o,t):document.createTextNode(o.value),s.appendChild(r);return Jt(n,s,t)}function zt(e,t){z(t)}function Kt(e,t){function n(t){if(!e.descriptor){var n=A(e.value);e.descriptor={name:t,def:xo[t],expression:n.expression,filters:n.filters}}}var i;return e.oneTime?i=document.createTextNode(e.value):e.html?(i=document.createComment("v-html"),n("html")):(i=document.createTextNode(" "),n("text")),i}function Jt(e,t){return function(n,i,r,o){for(var s,c,l,u=t.cloneNode(!0),h=m(u.childNodes),f=0,d=e.length;d>f;f++)s=e[f],c=s.value,s.tag&&(l=h[f],s.oneTime?(c=(o||n).$eval(c),s.html?J(l,Xe(c,!0)):l.data=a(c)):n._bindDir(s.descriptor,l,r,o));J(i,u)}}function qt(e,t){for(var n,i,r,o=[],s=0,a=e.length;a>s;s++)r=e[s],n=Gt(r,t),i=n&&n.terminal||"SCRIPT"===r.tagName||!r.hasChildNodes()?null:qt(r.childNodes,t),o.push(n,i);return o.length?Yt(o):null}function Yt(e){return function(t,n,i,r,o){for(var s,a,c,l=0,u=0,h=e.length;h>l;u++){s=n[u],a=e[l++],c=e[l++];var f=m(s.childNodes);a&&a(t,s,i,r,o),c&&c(t,f,i,r,o)}}}function Zt(e,t){var n=e.tagName.toLowerCase();if(!ji.test(n)){var i=be(t,"elementDirectives",n);return i?tn(e,n,"",t,i):void 0}}function Qt(e,t){var n=he(e,t);if(n){var i=se(e),r={name:"component",ref:i,expression:n.id,def:Ho.component,modifiers:{literal:!n.dynamic}},o=function(e,t,n,o,s){i&&Se((o||e).$refs,i,null),e._bindDir(r,t,n,o,s)};return o.terminal=!0,o}}function Xt(e,t,n){if(null!==H(e,"v-pre"))return en;if(e.hasAttribute("v-else")){var i=e.previousElementSibling;if(i&&i.hasAttribute("v-if"))return en}for(var r,o,s,a,c,l,u,h,f,d,p=0,v=t.length;v>p;p++)r=t[p],o=r.name.replace(Uo,""),(c=o.match(Wo))&&(f=be(n,"directives",c[1]),f&&f.terminal&&(!d||(f.priority||Jo)>d.priority)&&(d=f,u=r.name,a=rn(r.name),s=r.value,l=c[1],h=c[2]));return d?tn(e,l,s,n,d,u,h,a):void 0}function en(){}function tn(e,t,n,i,r,o,s,a){var c=A(n),l={name:t,arg:s,expression:c.expression,filters:c.filters,raw:n,attr:o,modifiers:a,def:r};"for"!==t&&"router-view"!==t||(l.ref=se(e));var u=function(e,t,n,i,r){l.ref&&Se((i||e).$refs,l.ref,null),e._bindDir(l,t,n,i,r)};return u.terminal=!0,u}function nn(e,t){function n(e,t,n){var i=n&&sn(n),r=!i&&A(o);v.push({name:e,attr:s,raw:a,def:t,arg:l,modifiers:u,expression:r&&r.expression,filters:r&&r.filters,interp:n,hasOneTime:i})}for(var i,r,o,s,a,c,l,u,h,f,d,p=e.length,v=[];p--;)if(i=e[p],r=s=i.name,o=a=i.value,f=E(o),l=null,u=rn(r),r=r.replace(Uo,""),f)o=j(f),l=r,n("bind",xo.bind,f);else if(zo.test(r))u.literal=!Vo.test(r),n("transition",Ho.transition);else if(Go.test(r))l=r.replace(Go,""),n("on",xo.on);else if(Vo.test(r))c=r.replace(Vo,""),"style"===c||"class"===c?n(c,Ho[c]):(l=c,n("bind",xo.bind));else if(d=r.match(Wo)){if(c=d[1],l=d[2],"else"===c)continue;h=be(t,"directives",c,!0),h&&n(c,h)}return v.length?on(v):void 0}function rn(e){var t=Object.create(null),n=e.match(Uo);if(n)for(var i=n.length;i--;)t[n[i].slice(1)]=!0;return t}function on(e){return function(t,n,i,r,o){for(var s=e.length;s--;)t._bindDir(e[s],n,i,r,o)}}function sn(e){for(var t=e.length;t--;)if(e[t].oneTime)return!0}function an(e){return"SCRIPT"===e.tagName&&(!e.hasAttribute("type")||"text/javascript"===e.getAttribute("type"))}function cn(e,t){return t&&(t._containerAttrs=un(e)),re(e)&&(e=Xe(e)),t&&(t._asComponent&&!t.template&&(t.template=""),t.template&&(t._content=te(e),e=ln(e,t))),le(e)&&(K(oe("v-start",!0),e),e.appendChild(oe("v-end",!0))),e}function ln(e,t){var n=t.template,i=Xe(n,!0);if(i){var r=i.firstChild,o=r.tagName&&r.tagName.toLowerCase();return t.replace?(e===document.body,i.childNodes.length>1||1!==r.nodeType||"component"===o||be(t,"components",o)||G(r,"is")||be(t,"elementDirectives",o)||r.hasAttribute("v-for")||r.hasAttribute("v-if")?i:(t._replacerAttrs=un(r),hn(e,r),r)):(e.appendChild(i),e)}}function un(e){return 1===e.nodeType&&e.hasAttributes()?m(e.attributes):void 0}function hn(e,t){for(var n,i,r=e.attributes,o=r.length;o--;)n=r[o].name,i=r[o].value,t.hasAttribute(n)||qo.test(n)?"class"===n&&!E(i)&&(i=i.trim())&&i.split(/\s+/).forEach(function(e){X(t,e)}):t.setAttribute(n,i)}function fn(e,t){if(t){for(var n,i,r=e._slotContents=Object.create(null),o=0,s=t.children.length;s>o;o++)n=t.children[o],(i=n.getAttribute("slot"))&&(r[i]||(r[i]=[])).push(n);for(i in r)r[i]=dn(r[i],t);if(t.hasChildNodes()){var a=t.childNodes;if(1===a.length&&3===a[0].nodeType&&!a[0].data.trim())return;r["default"]=dn(t.childNodes,t)}}}function dn(e,t){var n=document.createDocumentFragment();e=m(e);for(var i=0,r=e.length;r>i;i++){var o=e[i];!re(o)||o.hasAttribute("v-if")||o.hasAttribute("v-for")||(t.removeChild(o),o=Xe(o,!0)),n.appendChild(o)}return n}function pn(e){function t(){}function n(e,t){var n=new Ke(t,e,null,{lazy:!0});return function(){return n.dirty&&n.evaluate(),_e.target&&n.depend(),n.value}}Object.defineProperty(e.prototype,"$data",{get:function(){return this._data},set:function(e){e!==this._data&&this._setData(e)}}),e.prototype._initState=function(){this._initProps(),this._initMeta(),this._initMethods(),this._initData(),this._initComputed()},e.prototype._initProps=function(){var e=this.$options,t=e.el,n=e.props;t=e.el=D(t),this._propsUnlinkFn=t&&1===t.nodeType&&n?Ht(this,t,n,this._scope):null},e.prototype._initData=function(){var e=this.$options.data,t=this._data=e?e():{};b(t)||(t={});var n,i,o=this._props,s=Object.keys(t);for(n=s.length;n--;)i=s[n],o&&r(o,i)||this._proxy(i);$e(t,this)},e.prototype._setData=function(e){e=e||{};var t=this._data;this._data=e;var n,i,o;for(n=Object.keys(t),o=n.length;o--;)i=n[o],i in e||this._unproxy(i);for(n=Object.keys(e),o=n.length;o--;)i=n[o],r(this,i)||this._proxy(i);t.__ob__.removeVm(this),$e(e,this),this._digest()},e.prototype._proxy=function(e){if(!s(e)){var t=this;Object.defineProperty(t,e,{configurable:!0,enumerable:!0,get:function(){return t._data[e]},set:function(n){t._data[e]=n}})}},e.prototype._unproxy=function(e){s(e)||delete this[e]},e.prototype._digest=function(){for(var e=0,t=this._watchers.length;t>e;e++)this._watchers[e].update(!0)},e.prototype._initComputed=function(){var e=this.$options.computed;if(e)for(var i in e){var r=e[i],o={enumerable:!0,configurable:!0};"function"==typeof r?(o.get=n(r,this),o.set=t):(o.get=r.get?r.cache!==!1?n(r.get,this):v(r.get,this):t,o.set=r.set?v(r.set,this):t),Object.defineProperty(this,i,o)}},e.prototype._initMethods=function(){var e=this.$options.methods;if(e)for(var t in e)this[t]=v(e[t],this)},e.prototype._initMeta=function(){var e=this.$options._meta;if(e)for(var t in e)Se(this,t,e[t])}}function vn(e){function t(e,t){for(var n,i,r,o=t.attributes,s=0,a=o.length;a>s;s++)n=o[s].name,Zo.test(n)&&(n=n.replace(Zo,""),i=o[s].value,Ve(i)&&(i+=".apply(this, $arguments)"),r=(e._scope||e._context).$eval(i,!0),r._fromParent=!0,e.$on(n.replace(Zo),r))}function n(e,t,n){if(n){var r,o,s,a;for(o in n)if(r=n[o],Rn(r))for(s=0,a=r.length;a>s;s++)i(e,t,o,r[s]);else i(e,t,o,r)}}function i(e,t,n,r,o){var s=typeof r;if("function"===s)e[t](n,r,o);else if("string"===s){var a=e.$options.methods,c=a&&a[r];c&&e[t](n,c,o)}else r&&"object"===s&&i(e,t,n,r.handler,r)}function r(){this._isAttached||(this._isAttached=!0,this.$children.forEach(o))}function o(e){!e._isAttached&&B(e.$el)&&e._callHook("attached")}function s(){this._isAttached&&(this._isAttached=!1,this.$children.forEach(a))}function a(e){e._isAttached&&!B(e.$el)&&e._callHook("detached")}e.prototype._initEvents=function(){var e=this.$options;e._asComponent&&t(this,e.el),n(this,"$on",e.events),n(this,"$watch",e.watch)},e.prototype._initDOMHooks=function(){this.$on("hook:attached",r),this.$on("hook:detached",s)},e.prototype._callHook=function(e){this.$emit("pre-hook:"+e);var t=this.$options[e];if(t)for(var n=0,i=t.length;i>n;n++)t[n].call(this);this.$emit("hook:"+e)}}function mn(){}function gn(e,t,n,i,r,o){this.vm=t,this.el=n,this.descriptor=e,this.name=e.name,this.expression=e.expression,this.arg=e.arg,this.modifiers=e.modifiers,this.filters=e.filters,this.literal=this.modifiers&&this.modifiers.literal,this._locked=!1,this._bound=!1,this._listeners=null,this._host=i,this._scope=r,this._frag=o}function yn(e){e.prototype._updateRef=function(e){var t=this.$options._ref;if(t){var n=(this._scope||this._context).$refs;e?n[t]===this&&(n[t]=null):n[t]=this}},e.prototype._compile=function(e){var t=this.$options,n=e;if(e=cn(e,t),this._initElement(e),1!==e.nodeType||null===H(e,"v-pre")){var i=this._context&&this._context.$options,r=Vt(e,t,i);fn(this,t._content);var o,s=this.constructor;t._linkerCachable&&(o=s.linker,o||(o=s.linker=Lt(e,t)));var a=r(this,e,this._scope),c=o?o(this,e):Lt(e,t)(this,e);this._unlinkFn=function(){a(),c(!0)},t.replace&&J(n,e),this._isCompiled=!0,this._callHook("compiled")}},e.prototype._initElement=function(e){le(e)?(this._isFragment=!0,this.$el=this._fragmentStart=e.firstChild,this._fragmentEnd=e.lastChild,3===this._fragmentStart.nodeType&&(this._fragmentStart.data=this._fragmentEnd.data=""),this._fragment=e):this.$el=e,this.$el.__vue__=this,this._callHook("beforeCompile")},e.prototype._bindDir=function(e,t,n,i,r){this._directives.push(new gn(e,this,t,n,i,r))},e.prototype._destroy=function(e,t){if(this._isBeingDestroyed)return void(t||this._cleanup());var n,i,r=this,o=function(){!n||i||t||r._cleanup()};e&&this.$el&&(i=!0,this.$remove(function(){i=!1,o()})),this._callHook("beforeDestroy"),this._isBeingDestroyed=!0;var s,a=this.$parent;for(a&&!a._isBeingDestroyed&&(a.$children.$remove(this), +this._updateRef(!0)),s=this.$children.length;s--;)this.$children[s].$destroy();for(this._propsUnlinkFn&&this._propsUnlinkFn(),this._unlinkFn&&this._unlinkFn(),s=this._watchers.length;s--;)this._watchers[s].teardown();this.$el&&(this.$el.__vue__=null),n=!0,o()},e.prototype._cleanup=function(){this._isDestroyed||(this._frag&&this._frag.children.$remove(this),this._data&&this._data.__ob__&&this._data.__ob__.removeVm(this),this.$el=this.$parent=this.$root=this.$children=this._watchers=this._context=this._scope=this._directives=null,this._isDestroyed=!0,this._callHook("destroyed"),this.$off())}}function bn(e){e.prototype._applyFilters=function(e,t,n,i){var r,o,s,a,c,l,u,h,f;for(l=0,u=n.length;u>l;l++)if(r=n[i?u-l-1:l],o=be(this.$options,"filters",r.name,!0),o&&(o=i?o.write:o.read||o,"function"==typeof o)){if(s=i?[e,t]:[e],c=i?2:1,r.args)for(h=0,f=r.args.length;f>h;h++)a=r.args[h],s[h+c]=a.dynamic?this.$get(a.value):a.value;e=o.apply(this,s)}return e},e.prototype._resolveComponent=function(t,n){var i;if(i="function"==typeof t?t:be(this.$options,"components",t,!0))if(i.options)n(i);else if(i.resolved)n(i.resolved);else if(i.requested)i.pendingCallbacks.push(n);else{i.requested=!0;var r=i.pendingCallbacks=[n];i.call(this,function(t){b(t)&&(t=e.extend(t)),i.resolved=t;for(var n=0,o=r.length;o>n;n++)r[n](t)},function(e){})}}}function _n(e){function t(e){return JSON.parse(JSON.stringify(e))}e.prototype.$get=function(e,t){var n=He(e);if(n){if(t){var i=this;return function(){i.$arguments=m(arguments);var e=n.get.call(i,i);return i.$arguments=null,e}}try{return n.get.call(this,this)}catch(r){}}},e.prototype.$set=function(e,t){var n=He(e,!0);n&&n.set&&n.set.call(this,this,t)},e.prototype.$delete=function(e){i(this._data,e)},e.prototype.$watch=function(e,t,n){var i,r=this;"string"==typeof e&&(i=A(e),e=i.expression);var o=new Ke(r,e,t,{deep:n&&n.deep,sync:n&&n.sync,filters:i&&i.filters,user:!n||n.user!==!1});return n&&n.immediate&&t.call(r,o.value),function(){o.teardown()}},e.prototype.$eval=function(e,t){if(Qo.test(e)){var n=A(e),i=this.$get(n.expression,t);return n.filters?this._applyFilters(i,null,n.filters):i}return this.$get(e,t)},e.prototype.$interpolate=function(e){var t=E(e),n=this;return t?1===t.length?n.$eval(t[0].value)+"":t.map(function(e){return e.tag?n.$eval(e.value):e.value}).join(""):e},e.prototype.$log=function(e){var n=e?je(this._data,e):this._data;if(n&&(n=t(n)),!e){var i;for(i in this.$options.computed)n[i]=t(this[i]);if(this._props)for(i in this._props)n[i]=t(this[i])}console.log(n)}}function wn(e){function t(e,t,i,r,o,s){t=n(t);var a=!B(t),c=r===!1||a?o:s,l=!a&&!e._isAttached&&!B(e.$el);return e._isFragment?(ae(e._fragmentStart,e._fragmentEnd,function(n){c(n,t,e)}),i&&i()):c(e.$el,t,e,i),l&&e._callHook("attached"),e}function n(e){return"string"==typeof e?document.querySelector(e):e}function i(e,t,n,i){t.appendChild(e),i&&i()}function r(e,t,n,i){W(e,t),i&&i()}function o(e,t,n){z(e),n&&n()}e.prototype.$nextTick=function(e){ti(e,this)},e.prototype.$appendTo=function(e,n,r){return t(this,e,n,r,i,F)},e.prototype.$prependTo=function(e,t,i){return e=n(e),e.hasChildNodes()?this.$before(e.firstChild,t,i):this.$appendTo(e,t,i),this},e.prototype.$before=function(e,n,i){return t(this,e,n,i,r,L)},e.prototype.$after=function(e,t,i){return e=n(e),e.nextSibling?this.$before(e.nextSibling,t,i):this.$appendTo(e.parentNode,t,i),this},e.prototype.$remove=function(e,t){if(!this.$el.parentNode)return e&&e();var n=this._isAttached&&B(this.$el);n||(t=!1);var i=this,r=function(){n&&i._callHook("detached"),e&&e()};if(this._isFragment)ce(this._fragmentStart,this._fragmentEnd,this,this._fragment,r);else{var s=t===!1?o:R;s(this.$el,this,r)}return this}}function Cn(e){function t(e,t,i){var r=e.$parent;if(r&&i&&!n.test(t))for(;r;)r._eventsCount[t]=(r._eventsCount[t]||0)+i,r=r.$parent}e.prototype.$on=function(e,n){return(this._events[e]||(this._events[e]=[])).push(n),t(this,e,1),this},e.prototype.$once=function(e,t){function n(){i.$off(e,n),t.apply(this,arguments)}var i=this;return n.fn=t,this.$on(e,n),this},e.prototype.$off=function(e,n){var i;if(!arguments.length){if(this.$parent)for(e in this._events)i=this._events[e],i&&t(this,e,-i.length);return this._events={},this}if(i=this._events[e],!i)return this;if(1===arguments.length)return t(this,e,-i.length),this._events[e]=null,this;for(var r,o=i.length;o--;)if(r=i[o],r===n||r.fn===n){t(this,e,-1),i.splice(o,1);break}return this},e.prototype.$emit=function(e){var t="string"==typeof e;e=t?e:e.name;var n=this._events[e],i=t||!n;if(n){n=n.length>1?m(n):n;var r=t&&n.some(function(e){return e._fromParent});r&&(i=!1);for(var o=m(arguments,1),s=0,a=n.length;a>s;s++){var c=n[s],l=c.apply(this,o);l!==!0||r&&!c._fromParent||(i=!0)}}return i},e.prototype.$broadcast=function(e){var t="string"==typeof e;if(e=t?e:e.name,this._eventsCount[e]){var n=this.$children,i=m(arguments);t&&(i[0]={name:e,source:this});for(var r=0,o=n.length;o>r;r++){var s=n[r],a=s.$emit.apply(s,i);a&&s.$broadcast.apply(s,i)}return this}},e.prototype.$dispatch=function(e){var t=this.$emit.apply(this,arguments);if(t){var n=this.$parent,i=m(arguments);for(i[0]={name:e,source:this};n;)t=n.$emit.apply(n,i),n=t?n.$parent:null;return this}};var n=/^hook:/}function xn(e){function t(){this._isAttached=!0,this._isReady=!0,this._callHook("ready")}e.prototype.$mount=function(e){return this._isCompiled?void 0:(e=D(e),e||(e=document.createElement("div")),this._compile(e),this._initDOMHooks(),B(this.$el)?(this._callHook("attached"),t.call(this)):this.$once("hook:attached",t),this)},e.prototype.$destroy=function(e,t){this._destroy(e,t)},e.prototype.$compile=function(e,t,n,i){return Lt(e,this.$options,!0)(this,e,t,n,i)}}function kn(e){this._init(e)}function $n(e,t,n){return n=n?parseInt(n,10):0,t=c(t),"number"==typeof t?e.slice(n,n+t):e}function Sn(e,t,n){if(e=ns(e),null==t)return e;if("function"==typeof t)return e.filter(t);t=(""+t).toLowerCase();for(var i,r,o,s,a="in"===n?3:2,c=Array.prototype.concat.apply([],m(arguments,a)),l=[],u=0,h=e.length;h>u;u++)if(i=e[u],o=i&&i.$value||i,s=c.length){for(;s--;)if(r=c[s],"$key"===r&&An(i.$key,t)||An(je(o,r),t)){l.push(i);break}}else An(i,t)&&l.push(i);return l}function On(e){function t(e,t,n){var r=i[n];return r&&("$key"!==r&&(y(e)&&"$value"in e&&(e=e.$value),y(t)&&"$value"in t&&(t=t.$value)),e=y(e)?je(e,r):e,t=y(t)?je(t,r):t),e===t?0:e>t?o:-o}var n=null,i=void 0;e=ns(e);var r=m(arguments,1),o=r[r.length-1];"number"==typeof o?(o=0>o?-1:1,r=r.length>1?r.slice(0,-1):r):o=1;var s=r[0];return s?("function"==typeof s?n=function(e,t){return s(e,t)*o}:(i=Array.prototype.concat.apply([],r),n=function(e,r,o){return o=o||0,o>=i.length-1?t(e,r,o):t(e,r,o)||n(e,r,o+1)}),e.slice().sort(n)):e}function An(e,t){var n;if(b(e)){var i=Object.keys(e);for(n=i.length;n--;)if(An(e[i[n]],t))return!0}else if(Rn(e)){for(n=e.length;n--;)if(An(e[n],t))return!0}else if(null!=e)return e.toString().toLowerCase().indexOf(t)>-1}function Tn(e){function t(e){return new Function("return function "+p(e)+" (options) { this._init(options) }")()}e.options={directives:xo,elementDirectives:ts,filters:rs,transitions:{},components:{},partials:{},replace:!0},e.util=Hi,e.config=Ai,e.set=n,e["delete"]=i,e.nextTick=ti,e.compiler=Yo,e.FragmentFactory=at,e.internalDirectives=Ho,e.parsers={path:rr,text:$i,template:Fr,directive:bi,expression:yr},e.cid=0;var r=1;e.extend=function(e){e=e||{};var n=this,i=0===n.cid;if(i&&e._Ctor)return e._Ctor;var o=e.name||n.options.name,s=t(o||"VueComponent");return s.prototype=Object.create(n.prototype),s.prototype.constructor=s,s.cid=r++,s.options=ye(n.options,e),s["super"]=n,s.extend=n.extend,Ai._assetTypes.forEach(function(e){s[e]=n[e]}),o&&(s.options.components[o]=s),i&&(e._Ctor=s),s},e.use=function(e){if(!e.installed){var t=m(arguments,1);return t.unshift(this),"function"==typeof e.install?e.install.apply(e,t):e.apply(null,t),e.installed=!0,this}},e.mixin=function(t){e.options=ye(e.options,t)},Ai._assetTypes.forEach(function(t){e[t]=function(n,i){return i?("component"===t&&b(i)&&(i.name||(i.name=n),i=e.extend(i)),this.options[t+"s"][n]=i,i):this.options[t+"s"][n]}}),g(e.transition,Ni)}var Nn=Object.prototype.hasOwnProperty,En=/^\s?(true|false|-?[\d\.]+|'[^']*'|"[^"]*")\s?$/,jn=/-(\w)/g,Pn=/([a-z\d])([A-Z])/g,Mn=/(?:^|[-_\/])(\w)/g,Fn=Object.prototype.toString,Ln="[object Object]",Rn=Array.isArray,In="__proto__"in{},Dn="undefined"!=typeof window&&"[object Object]"!==Object.prototype.toString.call(window),Bn=Dn&&window.__VUE_DEVTOOLS_GLOBAL_HOOK__,Hn=Dn&&window.navigator.userAgent.toLowerCase(),Vn=Hn&&Hn.indexOf("trident")>0,Gn=Hn&&Hn.indexOf("msie 9.0")>0,Wn=Hn&&Hn.indexOf("android")>0,Un=Hn&&/(iphone|ipad|ipod|ios)/i.test(Hn),zn=Un&&Hn.match(/os ([\d_]+)/),Kn=zn&&zn[1].split("_"),Jn=Kn&&Number(Kn[0])>=9&&Number(Kn[1])>=3&&!window.indexedDB,qn=void 0,Yn=void 0,Zn=void 0,Qn=void 0;if(Dn&&!Gn){var Xn=void 0===window.ontransitionend&&void 0!==window.onwebkittransitionend,ei=void 0===window.onanimationend&&void 0!==window.onwebkitanimationend;qn=Xn?"WebkitTransition":"transition",Yn=Xn?"webkitTransitionEnd":"transitionend",Zn=ei?"WebkitAnimation":"animation",Qn=ei?"webkitAnimationEnd":"animationend"}var ti=function(){function e(){r=!1;var e=i.slice(0);i=[];for(var t=0;tt;t++)e[t].update()};var Ri=Array.prototype,Ii=Object.create(Ri);["push","pop","shift","unshift","splice","sort","reverse"].forEach(function(e){var t=Ri[e];_(Ii,e,function(){for(var n=arguments.length,i=new Array(n);n--;)i[n]=arguments[n];var r,o=t.apply(this,i),s=this.__ob__;switch(e){case"push":r=i;break;case"unshift":r=i;break;case"splice":r=i.slice(2)}return r&&s.observeArray(r),s.dep.notify(),o})}),_(Ri,"$set",function(e,t){return e>=this.length&&(this.length=Number(e)+1),this.splice(e,1,t)[0]}),_(Ri,"$remove",function(e){if(this.length){var t=C(this,e);return t>-1?this.splice(t,1):void 0}});var Di=Object.getOwnPropertyNames(Ii),Bi=!0;Ce.prototype.walk=function(e){for(var t=Object.keys(e),n=0,i=t.length;i>n;n++)this.convert(t[n],e[t[n]])},Ce.prototype.observeArray=function(e){for(var t=0,n=e.length;n>t;t++)$e(e[t])},Ce.prototype.convert=function(e,t){Se(this.value,e,t)},Ce.prototype.addVm=function(e){(this.vms||(this.vms=[])).push(e)},Ce.prototype.removeVm=function(e){this.vms.$remove(e)};var Hi=Object.freeze({defineReactive:Se,set:n,del:i,hasOwn:r,isLiteral:o,isReserved:s,_toString:a,toNumber:c,toBoolean:l,stripQuotes:u,camelize:h,hyphenate:d,classify:p,bind:v,toArray:m,extend:g,isObject:y,isPlainObject:b,def:_,debounce:w,indexOf:C,cancellable:x,looseEqual:k,isArray:Rn,hasProto:In,inBrowser:Dn,devtools:Bn,isIE:Vn,isIE9:Gn,isAndroid:Wn,isIos:Un,iosVersionMatch:zn,iosVersion:Kn,hasMutationObserverBug:Jn,get transitionProp(){return qn},get transitionEndEvent(){return Yn},get animationProp(){return Zn},get animationEndEvent(){return Qn},nextTick:ti,get _Set(){return ni},query:D,inDoc:B,getAttr:H,getBindAttr:V,hasBindAttr:G,before:W,after:U,remove:z,prepend:K,replace:J,on:q,off:Y,setClass:Q,addClass:X,removeClass:ee,extractContent:te,trimNode:ne,isTemplate:re,createAnchor:oe,findRef:se,mapNodeRange:ae,removeNodeRange:ce,isFragment:le,getOuterHTML:ue,mergeOptions:ye,resolveAsset:be,checkComponentAttr:he,commonTagRE:ji,reservedTagRE:Pi,get warn(){return Ti}}),Vi=0,Gi=new $(1e3),Wi=0,Ui=1,zi=2,Ki=3,Ji=0,qi=1,Yi=2,Zi=3,Qi=4,Xi=5,er=6,tr=7,nr=8,ir=[];ir[Ji]={ws:[Ji],ident:[Zi,Wi],"[":[Qi],eof:[tr]},ir[qi]={ws:[qi],".":[Yi],"[":[Qi],eof:[tr]},ir[Yi]={ws:[Yi],ident:[Zi,Wi]},ir[Zi]={ident:[Zi,Wi],0:[Zi,Wi],number:[Zi,Wi],ws:[qi,Ui],".":[Yi,Ui],"[":[Qi,Ui],eof:[tr,Ui]},ir[Qi]={"'":[Xi,Wi],'"':[er,Wi],"[":[Qi,zi],"]":[qi,Ki],eof:nr,"else":[Qi,Wi]},ir[Xi]={"'":[Qi,Wi],eof:nr,"else":[Xi,Wi]},ir[er]={'"':[Qi,Wi],eof:nr,"else":[er,Wi]};var rr=Object.freeze({parsePath:Ee,getPath:je,setPath:Pe}),or=new $(1e3),sr="Math,Date,this,true,false,null,undefined,Infinity,NaN,isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,encodeURIComponent,parseInt,parseFloat",ar=new RegExp("^("+sr.replace(/,/g,"\\b|")+"\\b)"),cr="break,case,class,catch,const,continue,debugger,default,delete,do,else,export,extends,finally,for,function,if,import,in,instanceof,let,return,super,switch,throw,try,var,while,with,yield,enum,await,implements,package,protected,static,interface,private,public",lr=new RegExp("^("+cr.replace(/,/g,"\\b|")+"\\b)"),ur=/\s/g,hr=/\n/g,fr=/[\{,]\s*[\w\$_]+\s*:|('(?:[^'\\]|\\.)*'|"(?:[^"\\]|\\.)*"|`(?:[^`\\]|\\.)*\$\{|\}(?:[^`\\]|\\.)*`|`(?:[^`\\]|\\.)*`)|new |typeof |void /g,dr=/"(\d+)"/g,pr=/^[A-Za-z_$][\w$]*(?:\.[A-Za-z_$][\w$]*|\['.*?'\]|\[".*?"\]|\[\d+\]|\[[A-Za-z_$][\w$]*\])*$/,vr=/[^\w$\.](?:[A-Za-z_$][\w$]*)/g,mr=/^(?:true|false|null|undefined|Infinity|NaN)$/,gr=[],yr=Object.freeze({parseExpression:He,isSimplePath:Ve}),br=[],_r=[],wr={},Cr={},xr=!1,kr=0;Ke.prototype.get=function(){this.beforeGet();var e,t=this.scope||this.vm;try{e=this.getter.call(t,t)}catch(n){}return this.deep&&Je(e),this.preProcess&&(e=this.preProcess(e)),this.filters&&(e=t._applyFilters(e,null,this.filters,!1)),this.postProcess&&(e=this.postProcess(e)),this.afterGet(),e},Ke.prototype.set=function(e){var t=this.scope||this.vm;this.filters&&(e=t._applyFilters(e,this.value,this.filters,!0));try{this.setter.call(t,t,e)}catch(n){}var i=t.$forContext;if(i&&i.alias===this.expression){if(i.filters)return;i._withLock(function(){t.$key?i.rawValue[t.$key]=e:i.rawValue.$set(t.$index,e)})}},Ke.prototype.beforeGet=function(){_e.target=this},Ke.prototype.addDep=function(e){var t=e.id;this.newDepIds.has(t)||(this.newDepIds.add(t),this.newDeps.push(e),this.depIds.has(t)||e.addSub(this))},Ke.prototype.afterGet=function(){_e.target=null;for(var e=this.deps.length;e--;){var t=this.deps[e];this.newDepIds.has(t.id)||t.removeSub(this)}var n=this.depIds;this.depIds=this.newDepIds,this.newDepIds=n,this.newDepIds.clear(),n=this.deps,this.deps=this.newDeps,this.newDeps=n,this.newDeps.length=0},Ke.prototype.update=function(e){this.lazy?this.dirty=!0:this.sync||!Ai.async?this.run():(this.shallow=this.queued?e?this.shallow:!1:!!e,this.queued=!0,ze(this))},Ke.prototype.run=function(){if(this.active){var e=this.get();if(e!==this.value||(y(e)||this.deep)&&!this.shallow){var t=this.value;this.value=e;this.prevError;this.cb.call(this.vm,e,t)}this.queued=this.shallow=!1}},Ke.prototype.evaluate=function(){var e=_e.target;this.value=this.get(),this.dirty=!1,_e.target=e},Ke.prototype.depend=function(){for(var e=this.deps.length;e--;)this.deps[e].depend()},Ke.prototype.teardown=function(){if(this.active){this.vm._isBeingDestroyed||this.vm._vForRemoving||this.vm._watchers.$remove(this);for(var e=this.deps.length;e--;)this.deps[e].removeSub(this);this.active=!1,this.vm=this.cb=this.value=null}};var $r=new ni,Sr={bind:function(){this.attr=3===this.el.nodeType?"data":"textContent"},update:function(e){this.el[this.attr]=a(e)}},Or=new $(1e3),Ar=new $(1e3),Tr={efault:[0,"",""],legend:[1,"",""],tr:[2,"",""],col:[2,"",""]};Tr.td=Tr.th=[3,"",""],Tr.option=Tr.optgroup=[1,'',""],Tr.thead=Tr.tbody=Tr.colgroup=Tr.caption=Tr.tfoot=[1,"",""],Tr.g=Tr.defs=Tr.symbol=Tr.use=Tr.image=Tr.text=Tr.circle=Tr.ellipse=Tr.line=Tr.path=Tr.polygon=Tr.polyline=Tr.rect=[1,'',""];var Nr=/<([\w:-]+)/,Er=/?\w+?;/,jr=/ E\n\t }\n\t entry.newer = undefined; // D --x\n\t entry.older = this.tail; // D. --> E\n\t if (this.tail) {\n\t this.tail.newer = entry; // E. <-- D\n\t }\n\t this.tail = entry;\n\t return returnEntry ? entry : entry.value;\n\t};\n\t\n\tvar cache$1 = new Cache(1000);\n\tvar filterTokenRE = /[^\\s'\"]+|'[^']*'|\"[^\"]*\"/g;\n\tvar reservedArgRE = /^in$|^-?\\d+/;\n\t\n\t/**\n\t * Parser state\n\t */\n\t\n\tvar str;\n\tvar dir;\n\tvar c;\n\tvar prev;\n\tvar i;\n\tvar l;\n\tvar lastFilterIndex;\n\tvar inSingle;\n\tvar inDouble;\n\tvar curly;\n\tvar square;\n\tvar paren;\n\t/**\n\t * Push a filter to the current directive object\n\t */\n\t\n\tfunction pushFilter() {\n\t var exp = str.slice(lastFilterIndex, i).trim();\n\t var filter;\n\t if (exp) {\n\t filter = {};\n\t var tokens = exp.match(filterTokenRE);\n\t filter.name = tokens[0];\n\t if (tokens.length > 1) {\n\t filter.args = tokens.slice(1).map(processFilterArg);\n\t }\n\t }\n\t if (filter) {\n\t (dir.filters = dir.filters || []).push(filter);\n\t }\n\t lastFilterIndex = i + 1;\n\t}\n\t\n\t/**\n\t * Check if an argument is dynamic and strip quotes.\n\t *\n\t * @param {String} arg\n\t * @return {Object}\n\t */\n\t\n\tfunction processFilterArg(arg) {\n\t if (reservedArgRE.test(arg)) {\n\t return {\n\t value: toNumber(arg),\n\t dynamic: false\n\t };\n\t } else {\n\t var stripped = stripQuotes(arg);\n\t var dynamic = stripped === arg;\n\t return {\n\t value: dynamic ? arg : stripped,\n\t dynamic: dynamic\n\t };\n\t }\n\t}\n\t\n\t/**\n\t * Parse a directive value and extract the expression\n\t * and its filters into a descriptor.\n\t *\n\t * Example:\n\t *\n\t * \"a + 1 | uppercase\" will yield:\n\t * {\n\t * expression: 'a + 1',\n\t * filters: [\n\t * { name: 'uppercase', args: null }\n\t * ]\n\t * }\n\t *\n\t * @param {String} s\n\t * @return {Object}\n\t */\n\t\n\tfunction parseDirective(s) {\n\t var hit = cache$1.get(s);\n\t if (hit) {\n\t return hit;\n\t }\n\t\n\t // reset parser state\n\t str = s;\n\t inSingle = inDouble = false;\n\t curly = square = paren = 0;\n\t lastFilterIndex = 0;\n\t dir = {};\n\t\n\t for (i = 0, l = str.length; i < l; i++) {\n\t prev = c;\n\t c = str.charCodeAt(i);\n\t if (inSingle) {\n\t // check single quote\n\t if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;\n\t } else if (inDouble) {\n\t // check double quote\n\t if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;\n\t } else if (c === 0x7C && // pipe\n\t str.charCodeAt(i + 1) !== 0x7C && str.charCodeAt(i - 1) !== 0x7C) {\n\t if (dir.expression == null) {\n\t // first filter, end of expression\n\t lastFilterIndex = i + 1;\n\t dir.expression = str.slice(0, i).trim();\n\t } else {\n\t // already has filter\n\t pushFilter();\n\t }\n\t } else {\n\t switch (c) {\n\t case 0x22:\n\t inDouble = true;break; // \"\n\t case 0x27:\n\t inSingle = true;break; // '\n\t case 0x28:\n\t paren++;break; // (\n\t case 0x29:\n\t paren--;break; // )\n\t case 0x5B:\n\t square++;break; // [\n\t case 0x5D:\n\t square--;break; // ]\n\t case 0x7B:\n\t curly++;break; // {\n\t case 0x7D:\n\t curly--;break; // }\n\t }\n\t }\n\t }\n\t\n\t if (dir.expression == null) {\n\t dir.expression = str.slice(0, i).trim();\n\t } else if (lastFilterIndex !== 0) {\n\t pushFilter();\n\t }\n\t\n\t cache$1.put(s, dir);\n\t return dir;\n\t}\n\t\n\tvar directive = Object.freeze({\n\t parseDirective: parseDirective\n\t});\n\t\n\tvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\n\tvar cache = undefined;\n\tvar tagRE = undefined;\n\tvar htmlRE = undefined;\n\t/**\n\t * Escape a string so it can be used in a RegExp\n\t * constructor.\n\t *\n\t * @param {String} str\n\t */\n\t\n\tfunction escapeRegex(str) {\n\t return str.replace(regexEscapeRE, '\\\\$&');\n\t}\n\t\n\tfunction compileRegex() {\n\t var open = escapeRegex(config.delimiters[0]);\n\t var close = escapeRegex(config.delimiters[1]);\n\t var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]);\n\t var unsafeClose = escapeRegex(config.unsafeDelimiters[1]);\n\t tagRE = new RegExp(unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\\\n)+?)' + close, 'g');\n\t htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '$');\n\t // reset cache\n\t cache = new Cache(1000);\n\t}\n\t\n\t/**\n\t * Parse a template text string into an array of tokens.\n\t *\n\t * @param {String} text\n\t * @return {Array | null}\n\t * - {String} type\n\t * - {String} value\n\t * - {Boolean} [html]\n\t * - {Boolean} [oneTime]\n\t */\n\t\n\tfunction parseText(text) {\n\t if (!cache) {\n\t compileRegex();\n\t }\n\t var hit = cache.get(text);\n\t if (hit) {\n\t return hit;\n\t }\n\t if (!tagRE.test(text)) {\n\t return null;\n\t }\n\t var tokens = [];\n\t var lastIndex = tagRE.lastIndex = 0;\n\t var match, index, html, value, first, oneTime;\n\t /* eslint-disable no-cond-assign */\n\t while (match = tagRE.exec(text)) {\n\t /* eslint-enable no-cond-assign */\n\t index = match.index;\n\t // push text token\n\t if (index > lastIndex) {\n\t tokens.push({\n\t value: text.slice(lastIndex, index)\n\t });\n\t }\n\t // tag token\n\t html = htmlRE.test(match[0]);\n\t value = html ? match[1] : match[2];\n\t first = value.charCodeAt(0);\n\t oneTime = first === 42; // *\n\t value = oneTime ? value.slice(1) : value;\n\t tokens.push({\n\t tag: true,\n\t value: value.trim(),\n\t html: html,\n\t oneTime: oneTime\n\t });\n\t lastIndex = index + match[0].length;\n\t }\n\t if (lastIndex < text.length) {\n\t tokens.push({\n\t value: text.slice(lastIndex)\n\t });\n\t }\n\t cache.put(text, tokens);\n\t return tokens;\n\t}\n\t\n\t/**\n\t * Format a list of tokens into an expression.\n\t * e.g. tokens parsed from 'a {{b}} c' can be serialized\n\t * into one single expression as '\"a \" + b + \" c\"'.\n\t *\n\t * @param {Array} tokens\n\t * @param {Vue} [vm]\n\t * @return {String}\n\t */\n\t\n\tfunction tokensToExp(tokens, vm) {\n\t if (tokens.length > 1) {\n\t return tokens.map(function (token) {\n\t return formatToken(token, vm);\n\t }).join('+');\n\t } else {\n\t return formatToken(tokens[0], vm, true);\n\t }\n\t}\n\t\n\t/**\n\t * Format a single token.\n\t *\n\t * @param {Object} token\n\t * @param {Vue} [vm]\n\t * @param {Boolean} [single]\n\t * @return {String}\n\t */\n\t\n\tfunction formatToken(token, vm, single) {\n\t return token.tag ? token.oneTime && vm ? '\"' + vm.$eval(token.value) + '\"' : inlineFilters(token.value, single) : '\"' + token.value + '\"';\n\t}\n\t\n\t/**\n\t * For an attribute with multiple interpolation tags,\n\t * e.g. attr=\"some-{{thing | filter}}\", in order to combine\n\t * the whole thing into a single watchable expression, we\n\t * have to inline those filters. This function does exactly\n\t * that. This is a bit hacky but it avoids heavy changes\n\t * to directive parser and watcher mechanism.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} single\n\t * @return {String}\n\t */\n\t\n\tvar filterRE = /[^|]\\|[^|]/;\n\tfunction inlineFilters(exp, single) {\n\t if (!filterRE.test(exp)) {\n\t return single ? exp : '(' + exp + ')';\n\t } else {\n\t var dir = parseDirective(exp);\n\t if (!dir.filters) {\n\t return '(' + exp + ')';\n\t } else {\n\t return 'this._applyFilters(' + dir.expression + // value\n\t ',null,' + // oldValue (null for read)\n\t JSON.stringify(dir.filters) + // filter descriptors\n\t ',false)'; // write?\n\t }\n\t }\n\t}\n\t\n\tvar text = Object.freeze({\n\t compileRegex: compileRegex,\n\t parseText: parseText,\n\t tokensToExp: tokensToExp\n\t});\n\t\n\tvar delimiters = ['{{', '}}'];\n\tvar unsafeDelimiters = ['{{{', '}}}'];\n\t\n\tvar config = Object.defineProperties({\n\t\n\t /**\n\t * Whether to print debug messages.\n\t * Also enables stack trace for warnings.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t debug: false,\n\t\n\t /**\n\t * Whether to suppress warnings.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t silent: false,\n\t\n\t /**\n\t * Whether to use async rendering.\n\t */\n\t\n\t async: true,\n\t\n\t /**\n\t * Whether to warn against errors caught when evaluating\n\t * expressions.\n\t */\n\t\n\t warnExpressionErrors: true,\n\t\n\t /**\n\t * Whether to allow devtools inspection.\n\t * Disabled by default in production builds.\n\t */\n\t\n\t devtools: (\"production\") !== 'production',\n\t\n\t /**\n\t * Internal flag to indicate the delimiters have been\n\t * changed.\n\t *\n\t * @type {Boolean}\n\t */\n\t\n\t _delimitersChanged: true,\n\t\n\t /**\n\t * List of asset types that a component can own.\n\t *\n\t * @type {Array}\n\t */\n\t\n\t _assetTypes: ['component', 'directive', 'elementDirective', 'filter', 'transition', 'partial'],\n\t\n\t /**\n\t * prop binding modes\n\t */\n\t\n\t _propBindingModes: {\n\t ONE_WAY: 0,\n\t TWO_WAY: 1,\n\t ONE_TIME: 2\n\t },\n\t\n\t /**\n\t * Max circular updates allowed in a batcher flush cycle.\n\t */\n\t\n\t _maxUpdateCount: 100\n\t\n\t}, {\n\t delimiters: { /**\n\t * Interpolation delimiters. Changing these would trigger\n\t * the text parser to re-compile the regular expressions.\n\t *\n\t * @type {Array}\n\t */\n\t\n\t get: function get() {\n\t return delimiters;\n\t },\n\t set: function set(val) {\n\t delimiters = val;\n\t compileRegex();\n\t },\n\t configurable: true,\n\t enumerable: true\n\t },\n\t unsafeDelimiters: {\n\t get: function get() {\n\t return unsafeDelimiters;\n\t },\n\t set: function set(val) {\n\t unsafeDelimiters = val;\n\t compileRegex();\n\t },\n\t configurable: true,\n\t enumerable: true\n\t }\n\t});\n\t\n\tvar warn = undefined;\n\tvar formatComponentName = undefined;\n\t\n\tif (false) {\n\t (function () {\n\t var hasConsole = typeof console !== 'undefined';\n\t\n\t warn = function (msg, vm) {\n\t if (hasConsole && !config.silent) {\n\t console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : ''));\n\t }\n\t };\n\t\n\t formatComponentName = function (vm) {\n\t var name = vm._isVue ? vm.$options.name : vm.name;\n\t return name ? ' (found in component: <' + hyphenate(name) + '>)' : '';\n\t };\n\t })();\n\t}\n\t\n\t/**\n\t * Append with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction appendWithTransition(el, target, vm, cb) {\n\t applyTransition(el, 1, function () {\n\t target.appendChild(el);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * InsertBefore with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction beforeWithTransition(el, target, vm, cb) {\n\t applyTransition(el, 1, function () {\n\t before(el, target);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * Remove with transition.\n\t *\n\t * @param {Element} el\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction removeWithTransition(el, vm, cb) {\n\t applyTransition(el, -1, function () {\n\t remove(el);\n\t }, vm, cb);\n\t}\n\t\n\t/**\n\t * Apply transitions with an operation callback.\n\t *\n\t * @param {Element} el\n\t * @param {Number} direction\n\t * 1: enter\n\t * -1: leave\n\t * @param {Function} op - the actual DOM operation\n\t * @param {Vue} vm\n\t * @param {Function} [cb]\n\t */\n\t\n\tfunction applyTransition(el, direction, op, vm, cb) {\n\t var transition = el.__v_trans;\n\t if (!transition ||\n\t // skip if there are no js hooks and CSS transition is\n\t // not supported\n\t !transition.hooks && !transitionEndEvent ||\n\t // skip transitions for initial compile\n\t !vm._isCompiled ||\n\t // if the vm is being manipulated by a parent directive\n\t // during the parent's compilation phase, skip the\n\t // animation.\n\t vm.$parent && !vm.$parent._isCompiled) {\n\t op();\n\t if (cb) cb();\n\t return;\n\t }\n\t var action = direction > 0 ? 'enter' : 'leave';\n\t transition[action](op, cb);\n\t}\n\t\n\tvar transition = Object.freeze({\n\t appendWithTransition: appendWithTransition,\n\t beforeWithTransition: beforeWithTransition,\n\t removeWithTransition: removeWithTransition,\n\t applyTransition: applyTransition\n\t});\n\t\n\t/**\n\t * Query an element selector if it's not an element already.\n\t *\n\t * @param {String|Element} el\n\t * @return {Element}\n\t */\n\t\n\tfunction query(el) {\n\t if (typeof el === 'string') {\n\t var selector = el;\n\t el = document.querySelector(el);\n\t if (!el) {\n\t (\"production\") !== 'production' && warn('Cannot find element: ' + selector);\n\t }\n\t }\n\t return el;\n\t}\n\t\n\t/**\n\t * Check if a node is in the document.\n\t * Note: document.documentElement.contains should work here\n\t * but always returns false for comment nodes in phantomjs,\n\t * making unit tests difficult. This is fixed by doing the\n\t * contains() check on the node's parentNode instead of\n\t * the node itself.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction inDoc(node) {\n\t if (!node) return false;\n\t var doc = node.ownerDocument.documentElement;\n\t var parent = node.parentNode;\n\t return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n\t}\n\t\n\t/**\n\t * Get and remove an attribute from a node.\n\t *\n\t * @param {Node} node\n\t * @param {String} _attr\n\t */\n\t\n\tfunction getAttr(node, _attr) {\n\t var val = node.getAttribute(_attr);\n\t if (val !== null) {\n\t node.removeAttribute(_attr);\n\t }\n\t return val;\n\t}\n\t\n\t/**\n\t * Get an attribute with colon or v-bind: prefix.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {String|null}\n\t */\n\t\n\tfunction getBindAttr(node, name) {\n\t var val = getAttr(node, ':' + name);\n\t if (val === null) {\n\t val = getAttr(node, 'v-bind:' + name);\n\t }\n\t return val;\n\t}\n\t\n\t/**\n\t * Check the presence of a bind attribute.\n\t *\n\t * @param {Node} node\n\t * @param {String} name\n\t * @return {Boolean}\n\t */\n\t\n\tfunction hasBindAttr(node, name) {\n\t return node.hasAttribute(name) || node.hasAttribute(':' + name) || node.hasAttribute('v-bind:' + name);\n\t}\n\t\n\t/**\n\t * Insert el before target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction before(el, target) {\n\t target.parentNode.insertBefore(el, target);\n\t}\n\t\n\t/**\n\t * Insert el after target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction after(el, target) {\n\t if (target.nextSibling) {\n\t before(el, target.nextSibling);\n\t } else {\n\t target.parentNode.appendChild(el);\n\t }\n\t}\n\t\n\t/**\n\t * Remove el from DOM\n\t *\n\t * @param {Element} el\n\t */\n\t\n\tfunction remove(el) {\n\t el.parentNode.removeChild(el);\n\t}\n\t\n\t/**\n\t * Prepend el to target\n\t *\n\t * @param {Element} el\n\t * @param {Element} target\n\t */\n\t\n\tfunction prepend(el, target) {\n\t if (target.firstChild) {\n\t before(el, target.firstChild);\n\t } else {\n\t target.appendChild(el);\n\t }\n\t}\n\t\n\t/**\n\t * Replace target with el\n\t *\n\t * @param {Element} target\n\t * @param {Element} el\n\t */\n\t\n\tfunction replace(target, el) {\n\t var parent = target.parentNode;\n\t if (parent) {\n\t parent.replaceChild(el, target);\n\t }\n\t}\n\t\n\t/**\n\t * Add event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t * @param {Boolean} [useCapture]\n\t */\n\t\n\tfunction on(el, event, cb, useCapture) {\n\t el.addEventListener(event, cb, useCapture);\n\t}\n\t\n\t/**\n\t * Remove event listener shorthand.\n\t *\n\t * @param {Element} el\n\t * @param {String} event\n\t * @param {Function} cb\n\t */\n\t\n\tfunction off(el, event, cb) {\n\t el.removeEventListener(event, cb);\n\t}\n\t\n\t/**\n\t * For IE9 compat: when both class and :class are present\n\t * getAttribute('class') returns wrong value...\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */\n\t\n\tfunction getClass(el) {\n\t var classname = el.className;\n\t if (typeof classname === 'object') {\n\t classname = classname.baseVal || '';\n\t }\n\t return classname;\n\t}\n\t\n\t/**\n\t * In IE9, setAttribute('class') will result in empty class\n\t * if the element also has the :class attribute; However in\n\t * PhantomJS, setting `className` does not work on SVG elements...\n\t * So we have to do a conditional check here.\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction setClass(el, cls) {\n\t /* istanbul ignore if */\n\t if (isIE9 && !/svg$/.test(el.namespaceURI)) {\n\t el.className = cls;\n\t } else {\n\t el.setAttribute('class', cls);\n\t }\n\t}\n\t\n\t/**\n\t * Add class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction addClass(el, cls) {\n\t if (el.classList) {\n\t el.classList.add(cls);\n\t } else {\n\t var cur = ' ' + getClass(el) + ' ';\n\t if (cur.indexOf(' ' + cls + ' ') < 0) {\n\t setClass(el, (cur + cls).trim());\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Remove class with compatibility for IE & SVG\n\t *\n\t * @param {Element} el\n\t * @param {String} cls\n\t */\n\t\n\tfunction removeClass(el, cls) {\n\t if (el.classList) {\n\t el.classList.remove(cls);\n\t } else {\n\t var cur = ' ' + getClass(el) + ' ';\n\t var tar = ' ' + cls + ' ';\n\t while (cur.indexOf(tar) >= 0) {\n\t cur = cur.replace(tar, ' ');\n\t }\n\t setClass(el, cur.trim());\n\t }\n\t if (!el.className) {\n\t el.removeAttribute('class');\n\t }\n\t}\n\t\n\t/**\n\t * Extract raw content inside an element into a temporary\n\t * container div\n\t *\n\t * @param {Element} el\n\t * @param {Boolean} asFragment\n\t * @return {Element|DocumentFragment}\n\t */\n\t\n\tfunction extractContent(el, asFragment) {\n\t var child;\n\t var rawContent;\n\t /* istanbul ignore if */\n\t if (isTemplate(el) && isFragment(el.content)) {\n\t el = el.content;\n\t }\n\t if (el.hasChildNodes()) {\n\t trimNode(el);\n\t rawContent = asFragment ? document.createDocumentFragment() : document.createElement('div');\n\t /* eslint-disable no-cond-assign */\n\t while (child = el.firstChild) {\n\t /* eslint-enable no-cond-assign */\n\t rawContent.appendChild(child);\n\t }\n\t }\n\t return rawContent;\n\t}\n\t\n\t/**\n\t * Trim possible empty head/tail text and comment\n\t * nodes inside a parent.\n\t *\n\t * @param {Node} node\n\t */\n\t\n\tfunction trimNode(node) {\n\t var child;\n\t /* eslint-disable no-sequences */\n\t while ((child = node.firstChild, isTrimmable(child))) {\n\t node.removeChild(child);\n\t }\n\t while ((child = node.lastChild, isTrimmable(child))) {\n\t node.removeChild(child);\n\t }\n\t /* eslint-enable no-sequences */\n\t}\n\t\n\tfunction isTrimmable(node) {\n\t return node && (node.nodeType === 3 && !node.data.trim() || node.nodeType === 8);\n\t}\n\t\n\t/**\n\t * Check if an element is a template tag.\n\t * Note if the template appears inside an SVG its tagName\n\t * will be in lowercase.\n\t *\n\t * @param {Element} el\n\t */\n\t\n\tfunction isTemplate(el) {\n\t return el.tagName && el.tagName.toLowerCase() === 'template';\n\t}\n\t\n\t/**\n\t * Create an \"anchor\" for performing dom insertion/removals.\n\t * This is used in a number of scenarios:\n\t * - fragment instance\n\t * - v-html\n\t * - v-if\n\t * - v-for\n\t * - component\n\t *\n\t * @param {String} content\n\t * @param {Boolean} persist - IE trashes empty textNodes on\n\t * cloneNode(true), so in certain\n\t * cases the anchor needs to be\n\t * non-empty to be persisted in\n\t * templates.\n\t * @return {Comment|Text}\n\t */\n\t\n\tfunction createAnchor(content, persist) {\n\t var anchor = config.debug ? document.createComment(content) : document.createTextNode(persist ? ' ' : '');\n\t anchor.__v_anchor = true;\n\t return anchor;\n\t}\n\t\n\t/**\n\t * Find a component ref attribute that starts with $.\n\t *\n\t * @param {Element} node\n\t * @return {String|undefined}\n\t */\n\t\n\tvar refRE = /^v-ref:/;\n\t\n\tfunction findRef(node) {\n\t if (node.hasAttributes()) {\n\t var attrs = node.attributes;\n\t for (var i = 0, l = attrs.length; i < l; i++) {\n\t var name = attrs[i].name;\n\t if (refRE.test(name)) {\n\t return camelize(name.replace(refRE, ''));\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Map a function to a range of nodes .\n\t *\n\t * @param {Node} node\n\t * @param {Node} end\n\t * @param {Function} op\n\t */\n\t\n\tfunction mapNodeRange(node, end, op) {\n\t var next;\n\t while (node !== end) {\n\t next = node.nextSibling;\n\t op(node);\n\t node = next;\n\t }\n\t op(end);\n\t}\n\t\n\t/**\n\t * Remove a range of nodes with transition, store\n\t * the nodes in a fragment with correct ordering,\n\t * and call callback when done.\n\t *\n\t * @param {Node} start\n\t * @param {Node} end\n\t * @param {Vue} vm\n\t * @param {DocumentFragment} frag\n\t * @param {Function} cb\n\t */\n\t\n\tfunction removeNodeRange(start, end, vm, frag, cb) {\n\t var done = false;\n\t var removed = 0;\n\t var nodes = [];\n\t mapNodeRange(start, end, function (node) {\n\t if (node === end) done = true;\n\t nodes.push(node);\n\t removeWithTransition(node, vm, onRemoved);\n\t });\n\t function onRemoved() {\n\t removed++;\n\t if (done && removed >= nodes.length) {\n\t for (var i = 0; i < nodes.length; i++) {\n\t frag.appendChild(nodes[i]);\n\t }\n\t cb && cb();\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Check if a node is a DocumentFragment.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isFragment(node) {\n\t return node && node.nodeType === 11;\n\t}\n\t\n\t/**\n\t * Get outerHTML of elements, taking care\n\t * of SVG elements in IE as well.\n\t *\n\t * @param {Element} el\n\t * @return {String}\n\t */\n\t\n\tfunction getOuterHTML(el) {\n\t if (el.outerHTML) {\n\t return el.outerHTML;\n\t } else {\n\t var container = document.createElement('div');\n\t container.appendChild(el.cloneNode(true));\n\t return container.innerHTML;\n\t }\n\t}\n\t\n\tvar commonTagRE = /^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i;\n\tvar reservedTagRE = /^(slot|partial|component)$/i;\n\t\n\tvar isUnknownElement = undefined;\n\tif (false) {\n\t isUnknownElement = function (el, tag) {\n\t if (tag.indexOf('-') > -1) {\n\t // http://stackoverflow.com/a/28210364/1070244\n\t return el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n\t } else {\n\t return (/HTMLUnknownElement/.test(el.toString()) &&\n\t // Chrome returns unknown for several HTML5 elements.\n\t // https://code.google.com/p/chromium/issues/detail?id=540526\n\t // Firefox returns unknown for some \"Interactive elements.\"\n\t !/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag)\n\t );\n\t }\n\t };\n\t}\n\t\n\t/**\n\t * Check if an element is a component, if yes return its\n\t * component id.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */\n\t\n\tfunction checkComponentAttr(el, options) {\n\t var tag = el.tagName.toLowerCase();\n\t var hasAttrs = el.hasAttributes();\n\t if (!commonTagRE.test(tag) && !reservedTagRE.test(tag)) {\n\t if (resolveAsset(options, 'components', tag)) {\n\t return { id: tag };\n\t } else {\n\t var is = hasAttrs && getIsBinding(el, options);\n\t if (is) {\n\t return is;\n\t } else if (false) {\n\t var expectedTag = options._componentNameMap && options._componentNameMap[tag];\n\t if (expectedTag) {\n\t warn('Unknown custom element: <' + tag + '> - ' + 'did you mean <' + expectedTag + '>? ' + 'HTML is case-insensitive, remember to use kebab-case in templates.');\n\t } else if (isUnknownElement(el, tag)) {\n\t warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.');\n\t }\n\t }\n\t }\n\t } else if (hasAttrs) {\n\t return getIsBinding(el, options);\n\t }\n\t}\n\t\n\t/**\n\t * Get \"is\" binding from an element.\n\t *\n\t * @param {Element} el\n\t * @param {Object} options\n\t * @return {Object|undefined}\n\t */\n\t\n\tfunction getIsBinding(el, options) {\n\t // dynamic syntax\n\t var exp = el.getAttribute('is');\n\t if (exp != null) {\n\t if (resolveAsset(options, 'components', exp)) {\n\t el.removeAttribute('is');\n\t return { id: exp };\n\t }\n\t } else {\n\t exp = getBindAttr(el, 'is');\n\t if (exp != null) {\n\t return { id: exp, dynamic: true };\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Option overwriting strategies are functions that handle\n\t * how to merge a parent option value and a child option\n\t * value into the final value.\n\t *\n\t * All strategy functions follow the same signature:\n\t *\n\t * @param {*} parentVal\n\t * @param {*} childVal\n\t * @param {Vue} [vm]\n\t */\n\t\n\tvar strats = config.optionMergeStrategies = Object.create(null);\n\t\n\t/**\n\t * Helper that recursively merges two data objects together.\n\t */\n\t\n\tfunction mergeData(to, from) {\n\t var key, toVal, fromVal;\n\t for (key in from) {\n\t toVal = to[key];\n\t fromVal = from[key];\n\t if (!hasOwn(to, key)) {\n\t set(to, key, fromVal);\n\t } else if (isObject(toVal) && isObject(fromVal)) {\n\t mergeData(toVal, fromVal);\n\t }\n\t }\n\t return to;\n\t}\n\t\n\t/**\n\t * Data\n\t */\n\t\n\tstrats.data = function (parentVal, childVal, vm) {\n\t if (!vm) {\n\t // in a Vue.extend merge, both should be functions\n\t if (!childVal) {\n\t return parentVal;\n\t }\n\t if (typeof childVal !== 'function') {\n\t (\"production\") !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n\t return parentVal;\n\t }\n\t if (!parentVal) {\n\t return childVal;\n\t }\n\t // when parentVal & childVal are both present,\n\t // we need to return a function that returns the\n\t // merged result of both functions... no need to\n\t // check if parentVal is a function here because\n\t // it has to be a function to pass previous merges.\n\t return function mergedDataFn() {\n\t return mergeData(childVal.call(this), parentVal.call(this));\n\t };\n\t } else if (parentVal || childVal) {\n\t return function mergedInstanceDataFn() {\n\t // instance merge\n\t var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal;\n\t var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined;\n\t if (instanceData) {\n\t return mergeData(instanceData, defaultData);\n\t } else {\n\t return defaultData;\n\t }\n\t };\n\t }\n\t};\n\t\n\t/**\n\t * El\n\t */\n\t\n\tstrats.el = function (parentVal, childVal, vm) {\n\t if (!vm && childVal && typeof childVal !== 'function') {\n\t (\"production\") !== 'production' && warn('The \"el\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n\t return;\n\t }\n\t var ret = childVal || parentVal;\n\t // invoke the element factory if this is instance merge\n\t return vm && typeof ret === 'function' ? ret.call(vm) : ret;\n\t};\n\t\n\t/**\n\t * Hooks and param attributes are merged as arrays.\n\t */\n\t\n\tstrats.init = strats.created = strats.ready = strats.attached = strats.detached = strats.beforeCompile = strats.compiled = strats.beforeDestroy = strats.destroyed = strats.activate = function (parentVal, childVal) {\n\t return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n\t};\n\t\n\t/**\n\t * Assets\n\t *\n\t * When a vm is present (instance creation), we need to do\n\t * a three-way merge between constructor options, instance\n\t * options and parent options.\n\t */\n\t\n\tfunction mergeAssets(parentVal, childVal) {\n\t var res = Object.create(parentVal || null);\n\t return childVal ? extend(res, guardArrayAssets(childVal)) : res;\n\t}\n\t\n\tconfig._assetTypes.forEach(function (type) {\n\t strats[type + 's'] = mergeAssets;\n\t});\n\t\n\t/**\n\t * Events & Watchers.\n\t *\n\t * Events & watchers hashes should not overwrite one\n\t * another, so we merge them as arrays.\n\t */\n\t\n\tstrats.watch = strats.events = function (parentVal, childVal) {\n\t if (!childVal) return parentVal;\n\t if (!parentVal) return childVal;\n\t var ret = {};\n\t extend(ret, parentVal);\n\t for (var key in childVal) {\n\t var parent = ret[key];\n\t var child = childVal[key];\n\t if (parent && !isArray(parent)) {\n\t parent = [parent];\n\t }\n\t ret[key] = parent ? parent.concat(child) : [child];\n\t }\n\t return ret;\n\t};\n\t\n\t/**\n\t * Other object hashes.\n\t */\n\t\n\tstrats.props = strats.methods = strats.computed = function (parentVal, childVal) {\n\t if (!childVal) return parentVal;\n\t if (!parentVal) return childVal;\n\t var ret = Object.create(null);\n\t extend(ret, parentVal);\n\t extend(ret, childVal);\n\t return ret;\n\t};\n\t\n\t/**\n\t * Default strategy.\n\t */\n\t\n\tvar defaultStrat = function defaultStrat(parentVal, childVal) {\n\t return childVal === undefined ? parentVal : childVal;\n\t};\n\t\n\t/**\n\t * Make sure component options get converted to actual\n\t * constructors.\n\t *\n\t * @param {Object} options\n\t */\n\t\n\tfunction guardComponents(options) {\n\t if (options.components) {\n\t var components = options.components = guardArrayAssets(options.components);\n\t var ids = Object.keys(components);\n\t var def;\n\t if (false) {\n\t var map = options._componentNameMap = {};\n\t }\n\t for (var i = 0, l = ids.length; i < l; i++) {\n\t var key = ids[i];\n\t if (commonTagRE.test(key) || reservedTagRE.test(key)) {\n\t (\"production\") !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key);\n\t continue;\n\t }\n\t // record a all lowercase <-> kebab-case mapping for\n\t // possible custom element case error warning\n\t if (false) {\n\t map[key.replace(/-/g, '').toLowerCase()] = hyphenate(key);\n\t }\n\t def = components[key];\n\t if (isPlainObject(def)) {\n\t components[key] = Vue.extend(def);\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Ensure all props option syntax are normalized into the\n\t * Object-based format.\n\t *\n\t * @param {Object} options\n\t */\n\t\n\tfunction guardProps(options) {\n\t var props = options.props;\n\t var i, val;\n\t if (isArray(props)) {\n\t options.props = {};\n\t i = props.length;\n\t while (i--) {\n\t val = props[i];\n\t if (typeof val === 'string') {\n\t options.props[val] = null;\n\t } else if (val.name) {\n\t options.props[val.name] = val;\n\t }\n\t }\n\t } else if (isPlainObject(props)) {\n\t var keys = Object.keys(props);\n\t i = keys.length;\n\t while (i--) {\n\t val = props[keys[i]];\n\t if (typeof val === 'function') {\n\t props[keys[i]] = { type: val };\n\t }\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * Guard an Array-format assets option and converted it\n\t * into the key-value Object format.\n\t *\n\t * @param {Object|Array} assets\n\t * @return {Object}\n\t */\n\t\n\tfunction guardArrayAssets(assets) {\n\t if (isArray(assets)) {\n\t var res = {};\n\t var i = assets.length;\n\t var asset;\n\t while (i--) {\n\t asset = assets[i];\n\t var id = typeof asset === 'function' ? asset.options && asset.options.name || asset.id : asset.name || asset.id;\n\t if (!id) {\n\t (\"production\") !== 'production' && warn('Array-syntax assets must provide a \"name\" or \"id\" field.');\n\t } else {\n\t res[id] = asset;\n\t }\n\t }\n\t return res;\n\t }\n\t return assets;\n\t}\n\t\n\t/**\n\t * Merge two option objects into a new one.\n\t * Core utility used in both instantiation and inheritance.\n\t *\n\t * @param {Object} parent\n\t * @param {Object} child\n\t * @param {Vue} [vm] - if vm is present, indicates this is\n\t * an instantiation merge.\n\t */\n\t\n\tfunction mergeOptions(parent, child, vm) {\n\t guardComponents(child);\n\t guardProps(child);\n\t if (false) {\n\t if (child.propsData && !vm) {\n\t warn('propsData can only be used as an instantiation option.');\n\t }\n\t }\n\t var options = {};\n\t var key;\n\t if (child['extends']) {\n\t parent = typeof child['extends'] === 'function' ? mergeOptions(parent, child['extends'].options, vm) : mergeOptions(parent, child['extends'], vm);\n\t }\n\t if (child.mixins) {\n\t for (var i = 0, l = child.mixins.length; i < l; i++) {\n\t var mixin = child.mixins[i];\n\t var mixinOptions = mixin.prototype instanceof Vue ? mixin.options : mixin;\n\t parent = mergeOptions(parent, mixinOptions, vm);\n\t }\n\t }\n\t for (key in parent) {\n\t mergeField(key);\n\t }\n\t for (key in child) {\n\t if (!hasOwn(parent, key)) {\n\t mergeField(key);\n\t }\n\t }\n\t function mergeField(key) {\n\t var strat = strats[key] || defaultStrat;\n\t options[key] = strat(parent[key], child[key], vm, key);\n\t }\n\t return options;\n\t}\n\t\n\t/**\n\t * Resolve an asset.\n\t * This function is used because child instances need access\n\t * to assets defined in its ancestor chain.\n\t *\n\t * @param {Object} options\n\t * @param {String} type\n\t * @param {String} id\n\t * @param {Boolean} warnMissing\n\t * @return {Object|Function}\n\t */\n\t\n\tfunction resolveAsset(options, type, id, warnMissing) {\n\t /* istanbul ignore if */\n\t if (typeof id !== 'string') {\n\t return;\n\t }\n\t var assets = options[type];\n\t var camelizedId;\n\t var res = assets[id] ||\n\t // camelCase ID\n\t assets[camelizedId = camelize(id)] ||\n\t // Pascal Case ID\n\t assets[camelizedId.charAt(0).toUpperCase() + camelizedId.slice(1)];\n\t if (false) {\n\t warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n\t }\n\t return res;\n\t}\n\t\n\tvar uid$1 = 0;\n\t\n\t/**\n\t * A dep is an observable that can have multiple\n\t * directives subscribing to it.\n\t *\n\t * @constructor\n\t */\n\tfunction Dep() {\n\t this.id = uid$1++;\n\t this.subs = [];\n\t}\n\t\n\t// the current target watcher being evaluated.\n\t// this is globally unique because there could be only one\n\t// watcher being evaluated at any time.\n\tDep.target = null;\n\t\n\t/**\n\t * Add a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */\n\t\n\tDep.prototype.addSub = function (sub) {\n\t this.subs.push(sub);\n\t};\n\t\n\t/**\n\t * Remove a directive subscriber.\n\t *\n\t * @param {Directive} sub\n\t */\n\t\n\tDep.prototype.removeSub = function (sub) {\n\t this.subs.$remove(sub);\n\t};\n\t\n\t/**\n\t * Add self as a dependency to the target watcher.\n\t */\n\t\n\tDep.prototype.depend = function () {\n\t Dep.target.addDep(this);\n\t};\n\t\n\t/**\n\t * Notify all subscribers of a new value.\n\t */\n\t\n\tDep.prototype.notify = function () {\n\t // stablize the subscriber list first\n\t var subs = toArray(this.subs);\n\t for (var i = 0, l = subs.length; i < l; i++) {\n\t subs[i].update();\n\t }\n\t};\n\t\n\tvar arrayProto = Array.prototype;\n\tvar arrayMethods = Object.create(arrayProto)\n\t\n\t/**\n\t * Intercept mutating methods and emit events\n\t */\n\t\n\t;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) {\n\t // cache original method\n\t var original = arrayProto[method];\n\t def(arrayMethods, method, function mutator() {\n\t // avoid leaking arguments:\n\t // http://jsperf.com/closure-with-arguments\n\t var i = arguments.length;\n\t var args = new Array(i);\n\t while (i--) {\n\t args[i] = arguments[i];\n\t }\n\t var result = original.apply(this, args);\n\t var ob = this.__ob__;\n\t var inserted;\n\t switch (method) {\n\t case 'push':\n\t inserted = args;\n\t break;\n\t case 'unshift':\n\t inserted = args;\n\t break;\n\t case 'splice':\n\t inserted = args.slice(2);\n\t break;\n\t }\n\t if (inserted) ob.observeArray(inserted);\n\t // notify change\n\t ob.dep.notify();\n\t return result;\n\t });\n\t});\n\t\n\t/**\n\t * Swap the element at the given index with a new value\n\t * and emits corresponding event.\n\t *\n\t * @param {Number} index\n\t * @param {*} val\n\t * @return {*} - replaced element\n\t */\n\t\n\tdef(arrayProto, '$set', function $set(index, val) {\n\t if (index >= this.length) {\n\t this.length = Number(index) + 1;\n\t }\n\t return this.splice(index, 1, val)[0];\n\t});\n\t\n\t/**\n\t * Convenience method to remove the element at given index or target element reference.\n\t *\n\t * @param {*} item\n\t */\n\t\n\tdef(arrayProto, '$remove', function $remove(item) {\n\t /* istanbul ignore if */\n\t if (!this.length) return;\n\t var index = indexOf(this, item);\n\t if (index > -1) {\n\t return this.splice(index, 1);\n\t }\n\t});\n\t\n\tvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\t\n\t/**\n\t * By default, when a reactive property is set, the new value is\n\t * also converted to become reactive. However in certain cases, e.g.\n\t * v-for scope alias and props, we don't want to force conversion\n\t * because the value may be a nested value under a frozen data structure.\n\t *\n\t * So whenever we want to set a reactive property without forcing\n\t * conversion on the new value, we wrap that call inside this function.\n\t */\n\t\n\tvar shouldConvert = true;\n\t\n\tfunction withoutConversion(fn) {\n\t shouldConvert = false;\n\t fn();\n\t shouldConvert = true;\n\t}\n\t\n\t/**\n\t * Observer class that are attached to each observed\n\t * object. Once attached, the observer converts target\n\t * object's property keys into getter/setters that\n\t * collect dependencies and dispatches updates.\n\t *\n\t * @param {Array|Object} value\n\t * @constructor\n\t */\n\t\n\tfunction Observer(value) {\n\t this.value = value;\n\t this.dep = new Dep();\n\t def(value, '__ob__', this);\n\t if (isArray(value)) {\n\t var augment = hasProto ? protoAugment : copyAugment;\n\t augment(value, arrayMethods, arrayKeys);\n\t this.observeArray(value);\n\t } else {\n\t this.walk(value);\n\t }\n\t}\n\t\n\t// Instance methods\n\t\n\t/**\n\t * Walk through each property and convert them into\n\t * getter/setters. This method should only be called when\n\t * value type is Object.\n\t *\n\t * @param {Object} obj\n\t */\n\t\n\tObserver.prototype.walk = function (obj) {\n\t var keys = Object.keys(obj);\n\t for (var i = 0, l = keys.length; i < l; i++) {\n\t this.convert(keys[i], obj[keys[i]]);\n\t }\n\t};\n\t\n\t/**\n\t * Observe a list of Array items.\n\t *\n\t * @param {Array} items\n\t */\n\t\n\tObserver.prototype.observeArray = function (items) {\n\t for (var i = 0, l = items.length; i < l; i++) {\n\t observe(items[i]);\n\t }\n\t};\n\t\n\t/**\n\t * Convert a property into getter/setter so we can emit\n\t * the events when the property is accessed/changed.\n\t *\n\t * @param {String} key\n\t * @param {*} val\n\t */\n\t\n\tObserver.prototype.convert = function (key, val) {\n\t defineReactive(this.value, key, val);\n\t};\n\t\n\t/**\n\t * Add an owner vm, so that when $set/$delete mutations\n\t * happen we can notify owner vms to proxy the keys and\n\t * digest the watchers. This is only called when the object\n\t * is observed as an instance's root $data.\n\t *\n\t * @param {Vue} vm\n\t */\n\t\n\tObserver.prototype.addVm = function (vm) {\n\t (this.vms || (this.vms = [])).push(vm);\n\t};\n\t\n\t/**\n\t * Remove an owner vm. This is called when the object is\n\t * swapped out as an instance's $data object.\n\t *\n\t * @param {Vue} vm\n\t */\n\t\n\tObserver.prototype.removeVm = function (vm) {\n\t this.vms.$remove(vm);\n\t};\n\t\n\t// helpers\n\t\n\t/**\n\t * Augment an target Object or Array by intercepting\n\t * the prototype chain using __proto__\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} src\n\t */\n\t\n\tfunction protoAugment(target, src) {\n\t /* eslint-disable no-proto */\n\t target.__proto__ = src;\n\t /* eslint-enable no-proto */\n\t}\n\t\n\t/**\n\t * Augment an target Object or Array by defining\n\t * hidden properties.\n\t *\n\t * @param {Object|Array} target\n\t * @param {Object} proto\n\t */\n\t\n\tfunction copyAugment(target, src, keys) {\n\t for (var i = 0, l = keys.length; i < l; i++) {\n\t var key = keys[i];\n\t def(target, key, src[key]);\n\t }\n\t}\n\t\n\t/**\n\t * Attempt to create an observer instance for a value,\n\t * returns the new observer if successfully observed,\n\t * or the existing observer if the value already has one.\n\t *\n\t * @param {*} value\n\t * @param {Vue} [vm]\n\t * @return {Observer|undefined}\n\t * @static\n\t */\n\t\n\tfunction observe(value, vm) {\n\t if (!value || typeof value !== 'object') {\n\t return;\n\t }\n\t var ob;\n\t if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n\t ob = value.__ob__;\n\t } else if (shouldConvert && (isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n\t ob = new Observer(value);\n\t }\n\t if (ob && vm) {\n\t ob.addVm(vm);\n\t }\n\t return ob;\n\t}\n\t\n\t/**\n\t * Define a reactive property on an Object.\n\t *\n\t * @param {Object} obj\n\t * @param {String} key\n\t * @param {*} val\n\t */\n\t\n\tfunction defineReactive(obj, key, val) {\n\t var dep = new Dep();\n\t\n\t var property = Object.getOwnPropertyDescriptor(obj, key);\n\t if (property && property.configurable === false) {\n\t return;\n\t }\n\t\n\t // cater for pre-defined getter/setters\n\t var getter = property && property.get;\n\t var setter = property && property.set;\n\t\n\t var childOb = observe(val);\n\t Object.defineProperty(obj, key, {\n\t enumerable: true,\n\t configurable: true,\n\t get: function reactiveGetter() {\n\t var value = getter ? getter.call(obj) : val;\n\t if (Dep.target) {\n\t dep.depend();\n\t if (childOb) {\n\t childOb.dep.depend();\n\t }\n\t if (isArray(value)) {\n\t for (var e, i = 0, l = value.length; i < l; i++) {\n\t e = value[i];\n\t e && e.__ob__ && e.__ob__.dep.depend();\n\t }\n\t }\n\t }\n\t return value;\n\t },\n\t set: function reactiveSetter(newVal) {\n\t var value = getter ? getter.call(obj) : val;\n\t if (newVal === value) {\n\t return;\n\t }\n\t if (setter) {\n\t setter.call(obj, newVal);\n\t } else {\n\t val = newVal;\n\t }\n\t childOb = observe(newVal);\n\t dep.notify();\n\t }\n\t });\n\t}\n\t\n\t\n\t\n\tvar util = Object.freeze({\n\t\tdefineReactive: defineReactive,\n\t\tset: set,\n\t\tdel: del,\n\t\thasOwn: hasOwn,\n\t\tisLiteral: isLiteral,\n\t\tisReserved: isReserved,\n\t\t_toString: _toString,\n\t\ttoNumber: toNumber,\n\t\ttoBoolean: toBoolean,\n\t\tstripQuotes: stripQuotes,\n\t\tcamelize: camelize,\n\t\thyphenate: hyphenate,\n\t\tclassify: classify,\n\t\tbind: bind,\n\t\ttoArray: toArray,\n\t\textend: extend,\n\t\tisObject: isObject,\n\t\tisPlainObject: isPlainObject,\n\t\tdef: def,\n\t\tdebounce: _debounce,\n\t\tindexOf: indexOf,\n\t\tcancellable: cancellable,\n\t\tlooseEqual: looseEqual,\n\t\tisArray: isArray,\n\t\thasProto: hasProto,\n\t\tinBrowser: inBrowser,\n\t\tdevtools: devtools,\n\t\tisIE: isIE,\n\t\tisIE9: isIE9,\n\t\tisAndroid: isAndroid,\n\t\tisIos: isIos,\n\t\tiosVersionMatch: iosVersionMatch,\n\t\tiosVersion: iosVersion,\n\t\thasMutationObserverBug: hasMutationObserverBug,\n\t\tget transitionProp () { return transitionProp; },\n\t\tget transitionEndEvent () { return transitionEndEvent; },\n\t\tget animationProp () { return animationProp; },\n\t\tget animationEndEvent () { return animationEndEvent; },\n\t\tnextTick: nextTick,\n\t\tget _Set () { return _Set; },\n\t\tquery: query,\n\t\tinDoc: inDoc,\n\t\tgetAttr: getAttr,\n\t\tgetBindAttr: getBindAttr,\n\t\thasBindAttr: hasBindAttr,\n\t\tbefore: before,\n\t\tafter: after,\n\t\tremove: remove,\n\t\tprepend: prepend,\n\t\treplace: replace,\n\t\ton: on,\n\t\toff: off,\n\t\tsetClass: setClass,\n\t\taddClass: addClass,\n\t\tremoveClass: removeClass,\n\t\textractContent: extractContent,\n\t\ttrimNode: trimNode,\n\t\tisTemplate: isTemplate,\n\t\tcreateAnchor: createAnchor,\n\t\tfindRef: findRef,\n\t\tmapNodeRange: mapNodeRange,\n\t\tremoveNodeRange: removeNodeRange,\n\t\tisFragment: isFragment,\n\t\tgetOuterHTML: getOuterHTML,\n\t\tmergeOptions: mergeOptions,\n\t\tresolveAsset: resolveAsset,\n\t\tcheckComponentAttr: checkComponentAttr,\n\t\tcommonTagRE: commonTagRE,\n\t\treservedTagRE: reservedTagRE,\n\t\tget warn () { return warn; }\n\t});\n\t\n\tvar uid = 0;\n\t\n\tfunction initMixin (Vue) {\n\t /**\n\t * The main init sequence. This is called for every\n\t * instance, including ones that are created from extended\n\t * constructors.\n\t *\n\t * @param {Object} options - this options object should be\n\t * the result of merging class\n\t * options and the options passed\n\t * in to the constructor.\n\t */\n\t\n\t Vue.prototype._init = function (options) {\n\t options = options || {};\n\t\n\t this.$el = null;\n\t this.$parent = options.parent;\n\t this.$root = this.$parent ? this.$parent.$root : this;\n\t this.$children = [];\n\t this.$refs = {}; // child vm references\n\t this.$els = {}; // element references\n\t this._watchers = []; // all watchers as an array\n\t this._directives = []; // all directives\n\t\n\t // a uid\n\t this._uid = uid++;\n\t\n\t // a flag to avoid this being observed\n\t this._isVue = true;\n\t\n\t // events bookkeeping\n\t this._events = {}; // registered callbacks\n\t this._eventsCount = {}; // for $broadcast optimization\n\t\n\t // fragment instance properties\n\t this._isFragment = false;\n\t this._fragment = // @type {DocumentFragment}\n\t this._fragmentStart = // @type {Text|Comment}\n\t this._fragmentEnd = null; // @type {Text|Comment}\n\t\n\t // lifecycle state\n\t this._isCompiled = this._isDestroyed = this._isReady = this._isAttached = this._isBeingDestroyed = this._vForRemoving = false;\n\t this._unlinkFn = null;\n\t\n\t // context:\n\t // if this is a transcluded component, context\n\t // will be the common parent vm of this instance\n\t // and its host.\n\t this._context = options._context || this.$parent;\n\t\n\t // scope:\n\t // if this is inside an inline v-for, the scope\n\t // will be the intermediate scope created for this\n\t // repeat fragment. this is used for linking props\n\t // and container directives.\n\t this._scope = options._scope;\n\t\n\t // fragment:\n\t // if this instance is compiled inside a Fragment, it\n\t // needs to reigster itself as a child of that fragment\n\t // for attach/detach to work properly.\n\t this._frag = options._frag;\n\t if (this._frag) {\n\t this._frag.children.push(this);\n\t }\n\t\n\t // push self into parent / transclusion host\n\t if (this.$parent) {\n\t this.$parent.$children.push(this);\n\t }\n\t\n\t // merge options.\n\t options = this.$options = mergeOptions(this.constructor.options, options, this);\n\t\n\t // set ref\n\t this._updateRef();\n\t\n\t // initialize data as empty object.\n\t // it will be filled up in _initData().\n\t this._data = {};\n\t\n\t // call init hook\n\t this._callHook('init');\n\t\n\t // initialize data observation and scope inheritance.\n\t this._initState();\n\t\n\t // setup event system and option events.\n\t this._initEvents();\n\t\n\t // call created hook\n\t this._callHook('created');\n\t\n\t // if `el` option is passed, start compilation.\n\t if (options.el) {\n\t this.$mount(options.el);\n\t }\n\t };\n\t}\n\t\n\tvar pathCache = new Cache(1000);\n\t\n\t// actions\n\tvar APPEND = 0;\n\tvar PUSH = 1;\n\tvar INC_SUB_PATH_DEPTH = 2;\n\tvar PUSH_SUB_PATH = 3;\n\t\n\t// states\n\tvar BEFORE_PATH = 0;\n\tvar IN_PATH = 1;\n\tvar BEFORE_IDENT = 2;\n\tvar IN_IDENT = 3;\n\tvar IN_SUB_PATH = 4;\n\tvar IN_SINGLE_QUOTE = 5;\n\tvar IN_DOUBLE_QUOTE = 6;\n\tvar AFTER_PATH = 7;\n\tvar ERROR = 8;\n\t\n\tvar pathStateMachine = [];\n\t\n\tpathStateMachine[BEFORE_PATH] = {\n\t 'ws': [BEFORE_PATH],\n\t 'ident': [IN_IDENT, APPEND],\n\t '[': [IN_SUB_PATH],\n\t 'eof': [AFTER_PATH]\n\t};\n\t\n\tpathStateMachine[IN_PATH] = {\n\t 'ws': [IN_PATH],\n\t '.': [BEFORE_IDENT],\n\t '[': [IN_SUB_PATH],\n\t 'eof': [AFTER_PATH]\n\t};\n\t\n\tpathStateMachine[BEFORE_IDENT] = {\n\t 'ws': [BEFORE_IDENT],\n\t 'ident': [IN_IDENT, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_IDENT] = {\n\t 'ident': [IN_IDENT, APPEND],\n\t '0': [IN_IDENT, APPEND],\n\t 'number': [IN_IDENT, APPEND],\n\t 'ws': [IN_PATH, PUSH],\n\t '.': [BEFORE_IDENT, PUSH],\n\t '[': [IN_SUB_PATH, PUSH],\n\t 'eof': [AFTER_PATH, PUSH]\n\t};\n\t\n\tpathStateMachine[IN_SUB_PATH] = {\n\t \"'\": [IN_SINGLE_QUOTE, APPEND],\n\t '\"': [IN_DOUBLE_QUOTE, APPEND],\n\t '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n\t ']': [IN_PATH, PUSH_SUB_PATH],\n\t 'eof': ERROR,\n\t 'else': [IN_SUB_PATH, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_SINGLE_QUOTE] = {\n\t \"'\": [IN_SUB_PATH, APPEND],\n\t 'eof': ERROR,\n\t 'else': [IN_SINGLE_QUOTE, APPEND]\n\t};\n\t\n\tpathStateMachine[IN_DOUBLE_QUOTE] = {\n\t '\"': [IN_SUB_PATH, APPEND],\n\t 'eof': ERROR,\n\t 'else': [IN_DOUBLE_QUOTE, APPEND]\n\t};\n\t\n\t/**\n\t * Determine the type of a character in a keypath.\n\t *\n\t * @param {Char} ch\n\t * @return {String} type\n\t */\n\t\n\tfunction getPathCharType(ch) {\n\t if (ch === undefined) {\n\t return 'eof';\n\t }\n\t\n\t var code = ch.charCodeAt(0);\n\t\n\t switch (code) {\n\t case 0x5B: // [\n\t case 0x5D: // ]\n\t case 0x2E: // .\n\t case 0x22: // \"\n\t case 0x27: // '\n\t case 0x30:\n\t // 0\n\t return ch;\n\t\n\t case 0x5F: // _\n\t case 0x24:\n\t // $\n\t return 'ident';\n\t\n\t case 0x20: // Space\n\t case 0x09: // Tab\n\t case 0x0A: // Newline\n\t case 0x0D: // Return\n\t case 0xA0: // No-break space\n\t case 0xFEFF: // Byte Order Mark\n\t case 0x2028: // Line Separator\n\t case 0x2029:\n\t // Paragraph Separator\n\t return 'ws';\n\t }\n\t\n\t // a-z, A-Z\n\t if (code >= 0x61 && code <= 0x7A || code >= 0x41 && code <= 0x5A) {\n\t return 'ident';\n\t }\n\t\n\t // 1-9\n\t if (code >= 0x31 && code <= 0x39) {\n\t return 'number';\n\t }\n\t\n\t return 'else';\n\t}\n\t\n\t/**\n\t * Format a subPath, return its plain form if it is\n\t * a literal string or number. Otherwise prepend the\n\t * dynamic indicator (*).\n\t *\n\t * @param {String} path\n\t * @return {String}\n\t */\n\t\n\tfunction formatSubPath(path) {\n\t var trimmed = path.trim();\n\t // invalid leading 0\n\t if (path.charAt(0) === '0' && isNaN(path)) {\n\t return false;\n\t }\n\t return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed;\n\t}\n\t\n\t/**\n\t * Parse a string path into an array of segments\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */\n\t\n\tfunction parse(path) {\n\t var keys = [];\n\t var index = -1;\n\t var mode = BEFORE_PATH;\n\t var subPathDepth = 0;\n\t var c, newChar, key, type, transition, action, typeMap;\n\t\n\t var actions = [];\n\t\n\t actions[PUSH] = function () {\n\t if (key !== undefined) {\n\t keys.push(key);\n\t key = undefined;\n\t }\n\t };\n\t\n\t actions[APPEND] = function () {\n\t if (key === undefined) {\n\t key = newChar;\n\t } else {\n\t key += newChar;\n\t }\n\t };\n\t\n\t actions[INC_SUB_PATH_DEPTH] = function () {\n\t actions[APPEND]();\n\t subPathDepth++;\n\t };\n\t\n\t actions[PUSH_SUB_PATH] = function () {\n\t if (subPathDepth > 0) {\n\t subPathDepth--;\n\t mode = IN_SUB_PATH;\n\t actions[APPEND]();\n\t } else {\n\t subPathDepth = 0;\n\t key = formatSubPath(key);\n\t if (key === false) {\n\t return false;\n\t } else {\n\t actions[PUSH]();\n\t }\n\t }\n\t };\n\t\n\t function maybeUnescapeQuote() {\n\t var nextChar = path[index + 1];\n\t if (mode === IN_SINGLE_QUOTE && nextChar === \"'\" || mode === IN_DOUBLE_QUOTE && nextChar === '\"') {\n\t index++;\n\t newChar = '\\\\' + nextChar;\n\t actions[APPEND]();\n\t return true;\n\t }\n\t }\n\t\n\t while (mode != null) {\n\t index++;\n\t c = path[index];\n\t\n\t if (c === '\\\\' && maybeUnescapeQuote()) {\n\t continue;\n\t }\n\t\n\t type = getPathCharType(c);\n\t typeMap = pathStateMachine[mode];\n\t transition = typeMap[type] || typeMap['else'] || ERROR;\n\t\n\t if (transition === ERROR) {\n\t return; // parse error\n\t }\n\t\n\t mode = transition[0];\n\t action = actions[transition[1]];\n\t if (action) {\n\t newChar = transition[2];\n\t newChar = newChar === undefined ? c : newChar;\n\t if (action() === false) {\n\t return;\n\t }\n\t }\n\t\n\t if (mode === AFTER_PATH) {\n\t keys.raw = path;\n\t return keys;\n\t }\n\t }\n\t}\n\t\n\t/**\n\t * External parse that check for a cache hit first\n\t *\n\t * @param {String} path\n\t * @return {Array|undefined}\n\t */\n\t\n\tfunction parsePath(path) {\n\t var hit = pathCache.get(path);\n\t if (!hit) {\n\t hit = parse(path);\n\t if (hit) {\n\t pathCache.put(path, hit);\n\t }\n\t }\n\t return hit;\n\t}\n\t\n\t/**\n\t * Get from an object from a path string\n\t *\n\t * @param {Object} obj\n\t * @param {String} path\n\t */\n\t\n\tfunction getPath(obj, path) {\n\t return parseExpression(path).get(obj);\n\t}\n\t\n\t/**\n\t * Warn against setting non-existent root path on a vm.\n\t */\n\t\n\tvar warnNonExistent;\n\tif (false) {\n\t warnNonExistent = function (path, vm) {\n\t warn('You are setting a non-existent path \"' + path.raw + '\" ' + 'on a vm instance. Consider pre-initializing the property ' + 'with the \"data\" option for more reliable reactivity ' + 'and better performance.', vm);\n\t };\n\t}\n\t\n\t/**\n\t * Set on an object from a path\n\t *\n\t * @param {Object} obj\n\t * @param {String | Array} path\n\t * @param {*} val\n\t */\n\t\n\tfunction setPath(obj, path, val) {\n\t var original = obj;\n\t if (typeof path === 'string') {\n\t path = parse(path);\n\t }\n\t if (!path || !isObject(obj)) {\n\t return false;\n\t }\n\t var last, key;\n\t for (var i = 0, l = path.length; i < l; i++) {\n\t last = obj;\n\t key = path[i];\n\t if (key.charAt(0) === '*') {\n\t key = parseExpression(key.slice(1)).get.call(original, original);\n\t }\n\t if (i < l - 1) {\n\t obj = obj[key];\n\t if (!isObject(obj)) {\n\t obj = {};\n\t if (false) {\n\t warnNonExistent(path, last);\n\t }\n\t set(last, key, obj);\n\t }\n\t } else {\n\t if (isArray(obj)) {\n\t obj.$set(key, val);\n\t } else if (key in obj) {\n\t obj[key] = val;\n\t } else {\n\t if (false) {\n\t warnNonExistent(path, obj);\n\t }\n\t set(obj, key, val);\n\t }\n\t }\n\t }\n\t return true;\n\t}\n\t\n\tvar path = Object.freeze({\n\t parsePath: parsePath,\n\t getPath: getPath,\n\t setPath: setPath\n\t});\n\t\n\tvar expressionCache = new Cache(1000);\n\t\n\tvar allowedKeywords = 'Math,Date,this,true,false,null,undefined,Infinity,NaN,' + 'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,' + 'encodeURIComponent,parseInt,parseFloat';\n\tvar allowedKeywordsRE = new RegExp('^(' + allowedKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\t\n\t// keywords that don't make sense inside expressions\n\tvar improperKeywords = 'break,case,class,catch,const,continue,debugger,default,' + 'delete,do,else,export,extends,finally,for,function,if,' + 'import,in,instanceof,let,return,super,switch,throw,try,' + 'var,while,with,yield,enum,await,implements,package,' + 'protected,static,interface,private,public';\n\tvar improperKeywordsRE = new RegExp('^(' + improperKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\t\n\tvar wsRE = /\\s/g;\n\tvar newlineRE = /\\n/g;\n\tvar saveRE = /[\\{,]\\s*[\\w\\$_]+\\s*:|('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`)|new |typeof |void /g;\n\tvar restoreRE = /\"(\\d+)\"/g;\n\tvar pathTestRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;\n\tvar identRE = /[^\\w$\\.](?:[A-Za-z_$][\\w$]*)/g;\n\tvar literalValueRE$1 = /^(?:true|false|null|undefined|Infinity|NaN)$/;\n\t\n\tfunction noop() {}\n\t\n\t/**\n\t * Save / Rewrite / Restore\n\t *\n\t * When rewriting paths found in an expression, it is\n\t * possible for the same letter sequences to be found in\n\t * strings and Object literal property keys. Therefore we\n\t * remove and store these parts in a temporary array, and\n\t * restore them after the path rewrite.\n\t */\n\t\n\tvar saved = [];\n\t\n\t/**\n\t * Save replacer\n\t *\n\t * The save regex can match two possible cases:\n\t * 1. An opening object literal\n\t * 2. A string\n\t * If matched as a plain string, we need to escape its\n\t * newlines, since the string needs to be preserved when\n\t * generating the function body.\n\t *\n\t * @param {String} str\n\t * @param {String} isString - str if matched as a string\n\t * @return {String} - placeholder with index\n\t */\n\t\n\tfunction save(str, isString) {\n\t var i = saved.length;\n\t saved[i] = isString ? str.replace(newlineRE, '\\\\n') : str;\n\t return '\"' + i + '\"';\n\t}\n\t\n\t/**\n\t * Path rewrite replacer\n\t *\n\t * @param {String} raw\n\t * @return {String}\n\t */\n\t\n\tfunction rewrite(raw) {\n\t var c = raw.charAt(0);\n\t var path = raw.slice(1);\n\t if (allowedKeywordsRE.test(path)) {\n\t return raw;\n\t } else {\n\t path = path.indexOf('\"') > -1 ? path.replace(restoreRE, restore) : path;\n\t return c + 'scope.' + path;\n\t }\n\t}\n\t\n\t/**\n\t * Restore replacer\n\t *\n\t * @param {String} str\n\t * @param {String} i - matched save index\n\t * @return {String}\n\t */\n\t\n\tfunction restore(str, i) {\n\t return saved[i];\n\t}\n\t\n\t/**\n\t * Rewrite an expression, prefixing all path accessors with\n\t * `scope.` and generate getter/setter functions.\n\t *\n\t * @param {String} exp\n\t * @return {Function}\n\t */\n\t\n\tfunction compileGetter(exp) {\n\t if (improperKeywordsRE.test(exp)) {\n\t (\"production\") !== 'production' && warn('Avoid using reserved keywords in expression: ' + exp);\n\t }\n\t // reset state\n\t saved.length = 0;\n\t // save strings and object literal keys\n\t var body = exp.replace(saveRE, save).replace(wsRE, '');\n\t // rewrite all paths\n\t // pad 1 space here because the regex matches 1 extra char\n\t body = (' ' + body).replace(identRE, rewrite).replace(restoreRE, restore);\n\t return makeGetterFn(body);\n\t}\n\t\n\t/**\n\t * Build a getter function. Requires eval.\n\t *\n\t * We isolate the try/catch so it doesn't affect the\n\t * optimization of the parse function when it is not called.\n\t *\n\t * @param {String} body\n\t * @return {Function|undefined}\n\t */\n\t\n\tfunction makeGetterFn(body) {\n\t try {\n\t /* eslint-disable no-new-func */\n\t return new Function('scope', 'return ' + body + ';');\n\t /* eslint-enable no-new-func */\n\t } catch (e) {\n\t if (false) {\n\t /* istanbul ignore if */\n\t if (e.toString().match(/unsafe-eval|CSP/)) {\n\t warn('It seems you are using the default build of Vue.js in an environment ' + 'with Content Security Policy that prohibits unsafe-eval. ' + 'Use the CSP-compliant build instead: ' + 'http://vuejs.org/guide/installation.html#CSP-compliant-build');\n\t } else {\n\t warn('Invalid expression. ' + 'Generated function body: ' + body);\n\t }\n\t }\n\t return noop;\n\t }\n\t}\n\t\n\t/**\n\t * Compile a setter function for the expression.\n\t *\n\t * @param {String} exp\n\t * @return {Function|undefined}\n\t */\n\t\n\tfunction compileSetter(exp) {\n\t var path = parsePath(exp);\n\t if (path) {\n\t return function (scope, val) {\n\t setPath(scope, path, val);\n\t };\n\t } else {\n\t (\"production\") !== 'production' && warn('Invalid setter expression: ' + exp);\n\t }\n\t}\n\t\n\t/**\n\t * Parse an expression into re-written getter/setters.\n\t *\n\t * @param {String} exp\n\t * @param {Boolean} needSet\n\t * @return {Function}\n\t */\n\t\n\tfunction parseExpression(exp, needSet) {\n\t exp = exp.trim();\n\t // try cache\n\t var hit = expressionCache.get(exp);\n\t if (hit) {\n\t if (needSet && !hit.set) {\n\t hit.set = compileSetter(hit.exp);\n\t }\n\t return hit;\n\t }\n\t var res = { exp: exp };\n\t res.get = isSimplePath(exp) && exp.indexOf('[') < 0\n\t // optimized super simple getter\n\t ? makeGetterFn('scope.' + exp)\n\t // dynamic getter\n\t : compileGetter(exp);\n\t if (needSet) {\n\t res.set = compileSetter(exp);\n\t }\n\t expressionCache.put(exp, res);\n\t return res;\n\t}\n\t\n\t/**\n\t * Check if an expression is a simple path.\n\t *\n\t * @param {String} exp\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isSimplePath(exp) {\n\t return pathTestRE.test(exp) &&\n\t // don't treat literal values as paths\n\t !literalValueRE$1.test(exp) &&\n\t // Math constants e.g. Math.PI, Math.E etc.\n\t exp.slice(0, 5) !== 'Math.';\n\t}\n\t\n\tvar expression = Object.freeze({\n\t parseExpression: parseExpression,\n\t isSimplePath: isSimplePath\n\t});\n\t\n\t// we have two separate queues: one for directive updates\n\t// and one for user watcher registered via $watch().\n\t// we want to guarantee directive updates to be called\n\t// before user watchers so that when user watchers are\n\t// triggered, the DOM would have already been in updated\n\t// state.\n\t\n\tvar queue = [];\n\tvar userQueue = [];\n\tvar has = {};\n\tvar circular = {};\n\tvar waiting = false;\n\t\n\t/**\n\t * Reset the batcher's state.\n\t */\n\t\n\tfunction resetBatcherState() {\n\t queue.length = 0;\n\t userQueue.length = 0;\n\t has = {};\n\t circular = {};\n\t waiting = false;\n\t}\n\t\n\t/**\n\t * Flush both queues and run the watchers.\n\t */\n\t\n\tfunction flushBatcherQueue() {\n\t var _again = true;\n\t\n\t _function: while (_again) {\n\t _again = false;\n\t\n\t runBatcherQueue(queue);\n\t runBatcherQueue(userQueue);\n\t // user watchers triggered more watchers,\n\t // keep flushing until it depletes\n\t if (queue.length) {\n\t _again = true;\n\t continue _function;\n\t }\n\t // dev tool hook\n\t /* istanbul ignore if */\n\t if (devtools && config.devtools) {\n\t devtools.emit('flush');\n\t }\n\t resetBatcherState();\n\t }\n\t}\n\t\n\t/**\n\t * Run the watchers in a single queue.\n\t *\n\t * @param {Array} queue\n\t */\n\t\n\tfunction runBatcherQueue(queue) {\n\t // do not cache length because more watchers might be pushed\n\t // as we run existing watchers\n\t for (var i = 0; i < queue.length; i++) {\n\t var watcher = queue[i];\n\t var id = watcher.id;\n\t has[id] = null;\n\t watcher.run();\n\t // in dev build, check and stop circular updates.\n\t if (false) {\n\t circular[id] = (circular[id] || 0) + 1;\n\t if (circular[id] > config._maxUpdateCount) {\n\t warn('You may have an infinite update loop for watcher ' + 'with expression \"' + watcher.expression + '\"', watcher.vm);\n\t break;\n\t }\n\t }\n\t }\n\t queue.length = 0;\n\t}\n\t\n\t/**\n\t * Push a watcher into the watcher queue.\n\t * Jobs with duplicate IDs will be skipped unless it's\n\t * pushed when the queue is being flushed.\n\t *\n\t * @param {Watcher} watcher\n\t * properties:\n\t * - {Number} id\n\t * - {Function} run\n\t */\n\t\n\tfunction pushWatcher(watcher) {\n\t var id = watcher.id;\n\t if (has[id] == null) {\n\t // push watcher into appropriate queue\n\t var q = watcher.user ? userQueue : queue;\n\t has[id] = q.length;\n\t q.push(watcher);\n\t // queue the flush\n\t if (!waiting) {\n\t waiting = true;\n\t nextTick(flushBatcherQueue);\n\t }\n\t }\n\t}\n\t\n\tvar uid$2 = 0;\n\t\n\t/**\n\t * A watcher parses an expression, collects dependencies,\n\t * and fires callback when the expression value changes.\n\t * This is used for both the $watch() api and directives.\n\t *\n\t * @param {Vue} vm\n\t * @param {String|Function} expOrFn\n\t * @param {Function} cb\n\t * @param {Object} options\n\t * - {Array} filters\n\t * - {Boolean} twoWay\n\t * - {Boolean} deep\n\t * - {Boolean} user\n\t * - {Boolean} sync\n\t * - {Boolean} lazy\n\t * - {Function} [preProcess]\n\t * - {Function} [postProcess]\n\t * @constructor\n\t */\n\tfunction Watcher(vm, expOrFn, cb, options) {\n\t // mix in options\n\t if (options) {\n\t extend(this, options);\n\t }\n\t var isFn = typeof expOrFn === 'function';\n\t this.vm = vm;\n\t vm._watchers.push(this);\n\t this.expression = expOrFn;\n\t this.cb = cb;\n\t this.id = ++uid$2; // uid for batching\n\t this.active = true;\n\t this.dirty = this.lazy; // for lazy watchers\n\t this.deps = [];\n\t this.newDeps = [];\n\t this.depIds = new _Set();\n\t this.newDepIds = new _Set();\n\t this.prevError = null; // for async error stacks\n\t // parse expression for getter/setter\n\t if (isFn) {\n\t this.getter = expOrFn;\n\t this.setter = undefined;\n\t } else {\n\t var res = parseExpression(expOrFn, this.twoWay);\n\t this.getter = res.get;\n\t this.setter = res.set;\n\t }\n\t this.value = this.lazy ? undefined : this.get();\n\t // state for avoiding false triggers for deep and Array\n\t // watchers during vm._digest()\n\t this.queued = this.shallow = false;\n\t}\n\t\n\t/**\n\t * Evaluate the getter, and re-collect dependencies.\n\t */\n\t\n\tWatcher.prototype.get = function () {\n\t this.beforeGet();\n\t var scope = this.scope || this.vm;\n\t var value;\n\t try {\n\t value = this.getter.call(scope, scope);\n\t } catch (e) {\n\t if (false) {\n\t warn('Error when evaluating expression ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n\t }\n\t }\n\t // \"touch\" every property so they are all tracked as\n\t // dependencies for deep watching\n\t if (this.deep) {\n\t traverse(value);\n\t }\n\t if (this.preProcess) {\n\t value = this.preProcess(value);\n\t }\n\t if (this.filters) {\n\t value = scope._applyFilters(value, null, this.filters, false);\n\t }\n\t if (this.postProcess) {\n\t value = this.postProcess(value);\n\t }\n\t this.afterGet();\n\t return value;\n\t};\n\t\n\t/**\n\t * Set the corresponding value with the setter.\n\t *\n\t * @param {*} value\n\t */\n\t\n\tWatcher.prototype.set = function (value) {\n\t var scope = this.scope || this.vm;\n\t if (this.filters) {\n\t value = scope._applyFilters(value, this.value, this.filters, true);\n\t }\n\t try {\n\t this.setter.call(scope, scope, value);\n\t } catch (e) {\n\t if (false) {\n\t warn('Error when evaluating setter ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n\t }\n\t }\n\t // two-way sync for v-for alias\n\t var forContext = scope.$forContext;\n\t if (forContext && forContext.alias === this.expression) {\n\t if (forContext.filters) {\n\t (\"production\") !== 'production' && warn('It seems you are using two-way binding on ' + 'a v-for alias (' + this.expression + '), and the ' + 'v-for has filters. This will not work properly. ' + 'Either remove the filters or use an array of ' + 'objects and bind to object properties instead.', this.vm);\n\t return;\n\t }\n\t forContext._withLock(function () {\n\t if (scope.$key) {\n\t // original is an object\n\t forContext.rawValue[scope.$key] = value;\n\t } else {\n\t forContext.rawValue.$set(scope.$index, value);\n\t }\n\t });\n\t }\n\t};\n\t\n\t/**\n\t * Prepare for dependency collection.\n\t */\n\t\n\tWatcher.prototype.beforeGet = function () {\n\t Dep.target = this;\n\t};\n\t\n\t/**\n\t * Add a dependency to this directive.\n\t *\n\t * @param {Dep} dep\n\t */\n\t\n\tWatcher.prototype.addDep = function (dep) {\n\t var id = dep.id;\n\t if (!this.newDepIds.has(id)) {\n\t this.newDepIds.add(id);\n\t this.newDeps.push(dep);\n\t if (!this.depIds.has(id)) {\n\t dep.addSub(this);\n\t }\n\t }\n\t};\n\t\n\t/**\n\t * Clean up for dependency collection.\n\t */\n\t\n\tWatcher.prototype.afterGet = function () {\n\t Dep.target = null;\n\t var i = this.deps.length;\n\t while (i--) {\n\t var dep = this.deps[i];\n\t if (!this.newDepIds.has(dep.id)) {\n\t dep.removeSub(this);\n\t }\n\t }\n\t var tmp = this.depIds;\n\t this.depIds = this.newDepIds;\n\t this.newDepIds = tmp;\n\t this.newDepIds.clear();\n\t tmp = this.deps;\n\t this.deps = this.newDeps;\n\t this.newDeps = tmp;\n\t this.newDeps.length = 0;\n\t};\n\t\n\t/**\n\t * Subscriber interface.\n\t * Will be called when a dependency changes.\n\t *\n\t * @param {Boolean} shallow\n\t */\n\t\n\tWatcher.prototype.update = function (shallow) {\n\t if (this.lazy) {\n\t this.dirty = true;\n\t } else if (this.sync || !config.async) {\n\t this.run();\n\t } else {\n\t // if queued, only overwrite shallow with non-shallow,\n\t // but not the other way around.\n\t this.shallow = this.queued ? shallow ? this.shallow : false : !!shallow;\n\t this.queued = true;\n\t // record before-push error stack in debug mode\n\t /* istanbul ignore if */\n\t if (false) {\n\t this.prevError = new Error('[vue] async stack trace');\n\t }\n\t pushWatcher(this);\n\t }\n\t};\n\t\n\t/**\n\t * Batcher job interface.\n\t * Will be called by the batcher.\n\t */\n\t\n\tWatcher.prototype.run = function () {\n\t if (this.active) {\n\t var value = this.get();\n\t if (value !== this.value ||\n\t // Deep watchers and watchers on Object/Arrays should fire even\n\t // when the value is the same, because the value may\n\t // have mutated; but only do so if this is a\n\t // non-shallow update (caused by a vm digest).\n\t (isObject(value) || this.deep) && !this.shallow) {\n\t // set new value\n\t var oldValue = this.value;\n\t this.value = value;\n\t // in debug + async mode, when a watcher callbacks\n\t // throws, we also throw the saved before-push error\n\t // so the full cross-tick stack trace is available.\n\t var prevError = this.prevError;\n\t /* istanbul ignore if */\n\t if (false) {\n\t this.prevError = null;\n\t try {\n\t this.cb.call(this.vm, value, oldValue);\n\t } catch (e) {\n\t nextTick(function () {\n\t throw prevError;\n\t }, 0);\n\t throw e;\n\t }\n\t } else {\n\t this.cb.call(this.vm, value, oldValue);\n\t }\n\t }\n\t this.queued = this.shallow = false;\n\t }\n\t};\n\t\n\t/**\n\t * Evaluate the value of the watcher.\n\t * This only gets called for lazy watchers.\n\t */\n\t\n\tWatcher.prototype.evaluate = function () {\n\t // avoid overwriting another watcher that is being\n\t // collected.\n\t var current = Dep.target;\n\t this.value = this.get();\n\t this.dirty = false;\n\t Dep.target = current;\n\t};\n\t\n\t/**\n\t * Depend on all deps collected by this watcher.\n\t */\n\t\n\tWatcher.prototype.depend = function () {\n\t var i = this.deps.length;\n\t while (i--) {\n\t this.deps[i].depend();\n\t }\n\t};\n\t\n\t/**\n\t * Remove self from all dependencies' subcriber list.\n\t */\n\t\n\tWatcher.prototype.teardown = function () {\n\t if (this.active) {\n\t // remove self from vm's watcher list\n\t // this is a somewhat expensive operation so we skip it\n\t // if the vm is being destroyed or is performing a v-for\n\t // re-render (the watcher list is then filtered by v-for).\n\t if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) {\n\t this.vm._watchers.$remove(this);\n\t }\n\t var i = this.deps.length;\n\t while (i--) {\n\t this.deps[i].removeSub(this);\n\t }\n\t this.active = false;\n\t this.vm = this.cb = this.value = null;\n\t }\n\t};\n\t\n\t/**\n\t * Recrusively traverse an object to evoke all converted\n\t * getters, so that every nested property inside the object\n\t * is collected as a \"deep\" dependency.\n\t *\n\t * @param {*} val\n\t */\n\t\n\tvar seenObjects = new _Set();\n\tfunction traverse(val, seen) {\n\t var i = undefined,\n\t keys = undefined;\n\t if (!seen) {\n\t seen = seenObjects;\n\t seen.clear();\n\t }\n\t var isA = isArray(val);\n\t var isO = isObject(val);\n\t if ((isA || isO) && Object.isExtensible(val)) {\n\t if (val.__ob__) {\n\t var depId = val.__ob__.dep.id;\n\t if (seen.has(depId)) {\n\t return;\n\t } else {\n\t seen.add(depId);\n\t }\n\t }\n\t if (isA) {\n\t i = val.length;\n\t while (i--) traverse(val[i], seen);\n\t } else if (isO) {\n\t keys = Object.keys(val);\n\t i = keys.length;\n\t while (i--) traverse(val[keys[i]], seen);\n\t }\n\t }\n\t}\n\t\n\tvar text$1 = {\n\t\n\t bind: function bind() {\n\t this.attr = this.el.nodeType === 3 ? 'data' : 'textContent';\n\t },\n\t\n\t update: function update(value) {\n\t this.el[this.attr] = _toString(value);\n\t }\n\t};\n\t\n\tvar templateCache = new Cache(1000);\n\tvar idSelectorCache = new Cache(1000);\n\t\n\tvar map = {\n\t efault: [0, '', ''],\n\t legend: [1, '', ''],\n\t tr: [2, '', ''],\n\t col: [2, '', '']\n\t};\n\t\n\tmap.td = map.th = [3, '', ''];\n\t\n\tmap.option = map.optgroup = [1, '', ''];\n\t\n\tmap.thead = map.tbody = map.colgroup = map.caption = map.tfoot = [1, '', ''];\n\t\n\tmap.g = map.defs = map.symbol = map.use = map.image = map.text = map.circle = map.ellipse = map.line = map.path = map.polygon = map.polyline = map.rect = [1, '', ''];\n\t\n\t/**\n\t * Check if a node is a supported template node with a\n\t * DocumentFragment content.\n\t *\n\t * @param {Node} node\n\t * @return {Boolean}\n\t */\n\t\n\tfunction isRealTemplate(node) {\n\t return isTemplate(node) && isFragment(node.content);\n\t}\n\t\n\tvar tagRE$1 = /<([\\w:-]+)/;\n\tvar entityRE = /?\\w+?;/;\n\tvar commentRE = / E\n }\n entry.newer = undefined; // D --x\n entry.older = this.tail; // D. --> E\n if (this.tail) {\n this.tail.newer = entry; // E. <-- D\n }\n this.tail = entry;\n return returnEntry ? entry : entry.value;\n};\n\nvar cache$1 = new Cache(1000);\nvar filterTokenRE = /[^\\s'\"]+|'[^']*'|\"[^\"]*\"/g;\nvar reservedArgRE = /^in$|^-?\\d+/;\n\n/**\n * Parser state\n */\n\nvar str;\nvar dir;\nvar c;\nvar prev;\nvar i;\nvar l;\nvar lastFilterIndex;\nvar inSingle;\nvar inDouble;\nvar curly;\nvar square;\nvar paren;\n/**\n * Push a filter to the current directive object\n */\n\nfunction pushFilter() {\n var exp = str.slice(lastFilterIndex, i).trim();\n var filter;\n if (exp) {\n filter = {};\n var tokens = exp.match(filterTokenRE);\n filter.name = tokens[0];\n if (tokens.length > 1) {\n filter.args = tokens.slice(1).map(processFilterArg);\n }\n }\n if (filter) {\n (dir.filters = dir.filters || []).push(filter);\n }\n lastFilterIndex = i + 1;\n}\n\n/**\n * Check if an argument is dynamic and strip quotes.\n *\n * @param {String} arg\n * @return {Object}\n */\n\nfunction processFilterArg(arg) {\n if (reservedArgRE.test(arg)) {\n return {\n value: toNumber(arg),\n dynamic: false\n };\n } else {\n var stripped = stripQuotes(arg);\n var dynamic = stripped === arg;\n return {\n value: dynamic ? arg : stripped,\n dynamic: dynamic\n };\n }\n}\n\n/**\n * Parse a directive value and extract the expression\n * and its filters into a descriptor.\n *\n * Example:\n *\n * \"a + 1 | uppercase\" will yield:\n * {\n * expression: 'a + 1',\n * filters: [\n * { name: 'uppercase', args: null }\n * ]\n * }\n *\n * @param {String} s\n * @return {Object}\n */\n\nfunction parseDirective(s) {\n var hit = cache$1.get(s);\n if (hit) {\n return hit;\n }\n\n // reset parser state\n str = s;\n inSingle = inDouble = false;\n curly = square = paren = 0;\n lastFilterIndex = 0;\n dir = {};\n\n for (i = 0, l = str.length; i < l; i++) {\n prev = c;\n c = str.charCodeAt(i);\n if (inSingle) {\n // check single quote\n if (c === 0x27 && prev !== 0x5C) inSingle = !inSingle;\n } else if (inDouble) {\n // check double quote\n if (c === 0x22 && prev !== 0x5C) inDouble = !inDouble;\n } else if (c === 0x7C && // pipe\n str.charCodeAt(i + 1) !== 0x7C && str.charCodeAt(i - 1) !== 0x7C) {\n if (dir.expression == null) {\n // first filter, end of expression\n lastFilterIndex = i + 1;\n dir.expression = str.slice(0, i).trim();\n } else {\n // already has filter\n pushFilter();\n }\n } else {\n switch (c) {\n case 0x22:\n inDouble = true;break; // \"\n case 0x27:\n inSingle = true;break; // '\n case 0x28:\n paren++;break; // (\n case 0x29:\n paren--;break; // )\n case 0x5B:\n square++;break; // [\n case 0x5D:\n square--;break; // ]\n case 0x7B:\n curly++;break; // {\n case 0x7D:\n curly--;break; // }\n }\n }\n }\n\n if (dir.expression == null) {\n dir.expression = str.slice(0, i).trim();\n } else if (lastFilterIndex !== 0) {\n pushFilter();\n }\n\n cache$1.put(s, dir);\n return dir;\n}\n\nvar directive = Object.freeze({\n parseDirective: parseDirective\n});\n\nvar regexEscapeRE = /[-.*+?^${}()|[\\]\\/\\\\]/g;\nvar cache = undefined;\nvar tagRE = undefined;\nvar htmlRE = undefined;\n/**\n * Escape a string so it can be used in a RegExp\n * constructor.\n *\n * @param {String} str\n */\n\nfunction escapeRegex(str) {\n return str.replace(regexEscapeRE, '\\\\$&');\n}\n\nfunction compileRegex() {\n var open = escapeRegex(config.delimiters[0]);\n var close = escapeRegex(config.delimiters[1]);\n var unsafeOpen = escapeRegex(config.unsafeDelimiters[0]);\n var unsafeClose = escapeRegex(config.unsafeDelimiters[1]);\n tagRE = new RegExp(unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '|' + open + '((?:.|\\\\n)+?)' + close, 'g');\n htmlRE = new RegExp('^' + unsafeOpen + '((?:.|\\\\n)+?)' + unsafeClose + '$');\n // reset cache\n cache = new Cache(1000);\n}\n\n/**\n * Parse a template text string into an array of tokens.\n *\n * @param {String} text\n * @return {Array | null}\n * - {String} type\n * - {String} value\n * - {Boolean} [html]\n * - {Boolean} [oneTime]\n */\n\nfunction parseText(text) {\n if (!cache) {\n compileRegex();\n }\n var hit = cache.get(text);\n if (hit) {\n return hit;\n }\n if (!tagRE.test(text)) {\n return null;\n }\n var tokens = [];\n var lastIndex = tagRE.lastIndex = 0;\n var match, index, html, value, first, oneTime;\n /* eslint-disable no-cond-assign */\n while (match = tagRE.exec(text)) {\n /* eslint-enable no-cond-assign */\n index = match.index;\n // push text token\n if (index > lastIndex) {\n tokens.push({\n value: text.slice(lastIndex, index)\n });\n }\n // tag token\n html = htmlRE.test(match[0]);\n value = html ? match[1] : match[2];\n first = value.charCodeAt(0);\n oneTime = first === 42; // *\n value = oneTime ? value.slice(1) : value;\n tokens.push({\n tag: true,\n value: value.trim(),\n html: html,\n oneTime: oneTime\n });\n lastIndex = index + match[0].length;\n }\n if (lastIndex < text.length) {\n tokens.push({\n value: text.slice(lastIndex)\n });\n }\n cache.put(text, tokens);\n return tokens;\n}\n\n/**\n * Format a list of tokens into an expression.\n * e.g. tokens parsed from 'a {{b}} c' can be serialized\n * into one single expression as '\"a \" + b + \" c\"'.\n *\n * @param {Array} tokens\n * @param {Vue} [vm]\n * @return {String}\n */\n\nfunction tokensToExp(tokens, vm) {\n if (tokens.length > 1) {\n return tokens.map(function (token) {\n return formatToken(token, vm);\n }).join('+');\n } else {\n return formatToken(tokens[0], vm, true);\n }\n}\n\n/**\n * Format a single token.\n *\n * @param {Object} token\n * @param {Vue} [vm]\n * @param {Boolean} [single]\n * @return {String}\n */\n\nfunction formatToken(token, vm, single) {\n return token.tag ? token.oneTime && vm ? '\"' + vm.$eval(token.value) + '\"' : inlineFilters(token.value, single) : '\"' + token.value + '\"';\n}\n\n/**\n * For an attribute with multiple interpolation tags,\n * e.g. attr=\"some-{{thing | filter}}\", in order to combine\n * the whole thing into a single watchable expression, we\n * have to inline those filters. This function does exactly\n * that. This is a bit hacky but it avoids heavy changes\n * to directive parser and watcher mechanism.\n *\n * @param {String} exp\n * @param {Boolean} single\n * @return {String}\n */\n\nvar filterRE = /[^|]\\|[^|]/;\nfunction inlineFilters(exp, single) {\n if (!filterRE.test(exp)) {\n return single ? exp : '(' + exp + ')';\n } else {\n var dir = parseDirective(exp);\n if (!dir.filters) {\n return '(' + exp + ')';\n } else {\n return 'this._applyFilters(' + dir.expression + // value\n ',null,' + // oldValue (null for read)\n JSON.stringify(dir.filters) + // filter descriptors\n ',false)'; // write?\n }\n }\n}\n\nvar text = Object.freeze({\n compileRegex: compileRegex,\n parseText: parseText,\n tokensToExp: tokensToExp\n});\n\nvar delimiters = ['{{', '}}'];\nvar unsafeDelimiters = ['{{{', '}}}'];\n\nvar config = Object.defineProperties({\n\n /**\n * Whether to print debug messages.\n * Also enables stack trace for warnings.\n *\n * @type {Boolean}\n */\n\n debug: false,\n\n /**\n * Whether to suppress warnings.\n *\n * @type {Boolean}\n */\n\n silent: false,\n\n /**\n * Whether to use async rendering.\n */\n\n async: true,\n\n /**\n * Whether to warn against errors caught when evaluating\n * expressions.\n */\n\n warnExpressionErrors: true,\n\n /**\n * Whether to allow devtools inspection.\n * Disabled by default in production builds.\n */\n\n devtools: process.env.NODE_ENV !== 'production',\n\n /**\n * Internal flag to indicate the delimiters have been\n * changed.\n *\n * @type {Boolean}\n */\n\n _delimitersChanged: true,\n\n /**\n * List of asset types that a component can own.\n *\n * @type {Array}\n */\n\n _assetTypes: ['component', 'directive', 'elementDirective', 'filter', 'transition', 'partial'],\n\n /**\n * prop binding modes\n */\n\n _propBindingModes: {\n ONE_WAY: 0,\n TWO_WAY: 1,\n ONE_TIME: 2\n },\n\n /**\n * Max circular updates allowed in a batcher flush cycle.\n */\n\n _maxUpdateCount: 100\n\n}, {\n delimiters: { /**\n * Interpolation delimiters. Changing these would trigger\n * the text parser to re-compile the regular expressions.\n *\n * @type {Array}\n */\n\n get: function get() {\n return delimiters;\n },\n set: function set(val) {\n delimiters = val;\n compileRegex();\n },\n configurable: true,\n enumerable: true\n },\n unsafeDelimiters: {\n get: function get() {\n return unsafeDelimiters;\n },\n set: function set(val) {\n unsafeDelimiters = val;\n compileRegex();\n },\n configurable: true,\n enumerable: true\n }\n});\n\nvar warn = undefined;\nvar formatComponentName = undefined;\n\nif (process.env.NODE_ENV !== 'production') {\n (function () {\n var hasConsole = typeof console !== 'undefined';\n\n warn = function (msg, vm) {\n if (hasConsole && !config.silent) {\n console.error('[Vue warn]: ' + msg + (vm ? formatComponentName(vm) : ''));\n }\n };\n\n formatComponentName = function (vm) {\n var name = vm._isVue ? vm.$options.name : vm.name;\n return name ? ' (found in component: <' + hyphenate(name) + '>)' : '';\n };\n })();\n}\n\n/**\n * Append with transition.\n *\n * @param {Element} el\n * @param {Element} target\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction appendWithTransition(el, target, vm, cb) {\n applyTransition(el, 1, function () {\n target.appendChild(el);\n }, vm, cb);\n}\n\n/**\n * InsertBefore with transition.\n *\n * @param {Element} el\n * @param {Element} target\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction beforeWithTransition(el, target, vm, cb) {\n applyTransition(el, 1, function () {\n before(el, target);\n }, vm, cb);\n}\n\n/**\n * Remove with transition.\n *\n * @param {Element} el\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction removeWithTransition(el, vm, cb) {\n applyTransition(el, -1, function () {\n remove(el);\n }, vm, cb);\n}\n\n/**\n * Apply transitions with an operation callback.\n *\n * @param {Element} el\n * @param {Number} direction\n * 1: enter\n * -1: leave\n * @param {Function} op - the actual DOM operation\n * @param {Vue} vm\n * @param {Function} [cb]\n */\n\nfunction applyTransition(el, direction, op, vm, cb) {\n var transition = el.__v_trans;\n if (!transition ||\n // skip if there are no js hooks and CSS transition is\n // not supported\n !transition.hooks && !transitionEndEvent ||\n // skip transitions for initial compile\n !vm._isCompiled ||\n // if the vm is being manipulated by a parent directive\n // during the parent's compilation phase, skip the\n // animation.\n vm.$parent && !vm.$parent._isCompiled) {\n op();\n if (cb) cb();\n return;\n }\n var action = direction > 0 ? 'enter' : 'leave';\n transition[action](op, cb);\n}\n\nvar transition = Object.freeze({\n appendWithTransition: appendWithTransition,\n beforeWithTransition: beforeWithTransition,\n removeWithTransition: removeWithTransition,\n applyTransition: applyTransition\n});\n\n/**\n * Query an element selector if it's not an element already.\n *\n * @param {String|Element} el\n * @return {Element}\n */\n\nfunction query(el) {\n if (typeof el === 'string') {\n var selector = el;\n el = document.querySelector(el);\n if (!el) {\n process.env.NODE_ENV !== 'production' && warn('Cannot find element: ' + selector);\n }\n }\n return el;\n}\n\n/**\n * Check if a node is in the document.\n * Note: document.documentElement.contains should work here\n * but always returns false for comment nodes in phantomjs,\n * making unit tests difficult. This is fixed by doing the\n * contains() check on the node's parentNode instead of\n * the node itself.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction inDoc(node) {\n if (!node) return false;\n var doc = node.ownerDocument.documentElement;\n var parent = node.parentNode;\n return doc === node || doc === parent || !!(parent && parent.nodeType === 1 && doc.contains(parent));\n}\n\n/**\n * Get and remove an attribute from a node.\n *\n * @param {Node} node\n * @param {String} _attr\n */\n\nfunction getAttr(node, _attr) {\n var val = node.getAttribute(_attr);\n if (val !== null) {\n node.removeAttribute(_attr);\n }\n return val;\n}\n\n/**\n * Get an attribute with colon or v-bind: prefix.\n *\n * @param {Node} node\n * @param {String} name\n * @return {String|null}\n */\n\nfunction getBindAttr(node, name) {\n var val = getAttr(node, ':' + name);\n if (val === null) {\n val = getAttr(node, 'v-bind:' + name);\n }\n return val;\n}\n\n/**\n * Check the presence of a bind attribute.\n *\n * @param {Node} node\n * @param {String} name\n * @return {Boolean}\n */\n\nfunction hasBindAttr(node, name) {\n return node.hasAttribute(name) || node.hasAttribute(':' + name) || node.hasAttribute('v-bind:' + name);\n}\n\n/**\n * Insert el before target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction before(el, target) {\n target.parentNode.insertBefore(el, target);\n}\n\n/**\n * Insert el after target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction after(el, target) {\n if (target.nextSibling) {\n before(el, target.nextSibling);\n } else {\n target.parentNode.appendChild(el);\n }\n}\n\n/**\n * Remove el from DOM\n *\n * @param {Element} el\n */\n\nfunction remove(el) {\n el.parentNode.removeChild(el);\n}\n\n/**\n * Prepend el to target\n *\n * @param {Element} el\n * @param {Element} target\n */\n\nfunction prepend(el, target) {\n if (target.firstChild) {\n before(el, target.firstChild);\n } else {\n target.appendChild(el);\n }\n}\n\n/**\n * Replace target with el\n *\n * @param {Element} target\n * @param {Element} el\n */\n\nfunction replace(target, el) {\n var parent = target.parentNode;\n if (parent) {\n parent.replaceChild(el, target);\n }\n}\n\n/**\n * Add event listener shorthand.\n *\n * @param {Element} el\n * @param {String} event\n * @param {Function} cb\n * @param {Boolean} [useCapture]\n */\n\nfunction on(el, event, cb, useCapture) {\n el.addEventListener(event, cb, useCapture);\n}\n\n/**\n * Remove event listener shorthand.\n *\n * @param {Element} el\n * @param {String} event\n * @param {Function} cb\n */\n\nfunction off(el, event, cb) {\n el.removeEventListener(event, cb);\n}\n\n/**\n * For IE9 compat: when both class and :class are present\n * getAttribute('class') returns wrong value...\n *\n * @param {Element} el\n * @return {String}\n */\n\nfunction getClass(el) {\n var classname = el.className;\n if (typeof classname === 'object') {\n classname = classname.baseVal || '';\n }\n return classname;\n}\n\n/**\n * In IE9, setAttribute('class') will result in empty class\n * if the element also has the :class attribute; However in\n * PhantomJS, setting `className` does not work on SVG elements...\n * So we have to do a conditional check here.\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction setClass(el, cls) {\n /* istanbul ignore if */\n if (isIE9 && !/svg$/.test(el.namespaceURI)) {\n el.className = cls;\n } else {\n el.setAttribute('class', cls);\n }\n}\n\n/**\n * Add class with compatibility for IE & SVG\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction addClass(el, cls) {\n if (el.classList) {\n el.classList.add(cls);\n } else {\n var cur = ' ' + getClass(el) + ' ';\n if (cur.indexOf(' ' + cls + ' ') < 0) {\n setClass(el, (cur + cls).trim());\n }\n }\n}\n\n/**\n * Remove class with compatibility for IE & SVG\n *\n * @param {Element} el\n * @param {String} cls\n */\n\nfunction removeClass(el, cls) {\n if (el.classList) {\n el.classList.remove(cls);\n } else {\n var cur = ' ' + getClass(el) + ' ';\n var tar = ' ' + cls + ' ';\n while (cur.indexOf(tar) >= 0) {\n cur = cur.replace(tar, ' ');\n }\n setClass(el, cur.trim());\n }\n if (!el.className) {\n el.removeAttribute('class');\n }\n}\n\n/**\n * Extract raw content inside an element into a temporary\n * container div\n *\n * @param {Element} el\n * @param {Boolean} asFragment\n * @return {Element|DocumentFragment}\n */\n\nfunction extractContent(el, asFragment) {\n var child;\n var rawContent;\n /* istanbul ignore if */\n if (isTemplate(el) && isFragment(el.content)) {\n el = el.content;\n }\n if (el.hasChildNodes()) {\n trimNode(el);\n rawContent = asFragment ? document.createDocumentFragment() : document.createElement('div');\n /* eslint-disable no-cond-assign */\n while (child = el.firstChild) {\n /* eslint-enable no-cond-assign */\n rawContent.appendChild(child);\n }\n }\n return rawContent;\n}\n\n/**\n * Trim possible empty head/tail text and comment\n * nodes inside a parent.\n *\n * @param {Node} node\n */\n\nfunction trimNode(node) {\n var child;\n /* eslint-disable no-sequences */\n while ((child = node.firstChild, isTrimmable(child))) {\n node.removeChild(child);\n }\n while ((child = node.lastChild, isTrimmable(child))) {\n node.removeChild(child);\n }\n /* eslint-enable no-sequences */\n}\n\nfunction isTrimmable(node) {\n return node && (node.nodeType === 3 && !node.data.trim() || node.nodeType === 8);\n}\n\n/**\n * Check if an element is a template tag.\n * Note if the template appears inside an SVG its tagName\n * will be in lowercase.\n *\n * @param {Element} el\n */\n\nfunction isTemplate(el) {\n return el.tagName && el.tagName.toLowerCase() === 'template';\n}\n\n/**\n * Create an \"anchor\" for performing dom insertion/removals.\n * This is used in a number of scenarios:\n * - fragment instance\n * - v-html\n * - v-if\n * - v-for\n * - component\n *\n * @param {String} content\n * @param {Boolean} persist - IE trashes empty textNodes on\n * cloneNode(true), so in certain\n * cases the anchor needs to be\n * non-empty to be persisted in\n * templates.\n * @return {Comment|Text}\n */\n\nfunction createAnchor(content, persist) {\n var anchor = config.debug ? document.createComment(content) : document.createTextNode(persist ? ' ' : '');\n anchor.__v_anchor = true;\n return anchor;\n}\n\n/**\n * Find a component ref attribute that starts with $.\n *\n * @param {Element} node\n * @return {String|undefined}\n */\n\nvar refRE = /^v-ref:/;\n\nfunction findRef(node) {\n if (node.hasAttributes()) {\n var attrs = node.attributes;\n for (var i = 0, l = attrs.length; i < l; i++) {\n var name = attrs[i].name;\n if (refRE.test(name)) {\n return camelize(name.replace(refRE, ''));\n }\n }\n }\n}\n\n/**\n * Map a function to a range of nodes .\n *\n * @param {Node} node\n * @param {Node} end\n * @param {Function} op\n */\n\nfunction mapNodeRange(node, end, op) {\n var next;\n while (node !== end) {\n next = node.nextSibling;\n op(node);\n node = next;\n }\n op(end);\n}\n\n/**\n * Remove a range of nodes with transition, store\n * the nodes in a fragment with correct ordering,\n * and call callback when done.\n *\n * @param {Node} start\n * @param {Node} end\n * @param {Vue} vm\n * @param {DocumentFragment} frag\n * @param {Function} cb\n */\n\nfunction removeNodeRange(start, end, vm, frag, cb) {\n var done = false;\n var removed = 0;\n var nodes = [];\n mapNodeRange(start, end, function (node) {\n if (node === end) done = true;\n nodes.push(node);\n removeWithTransition(node, vm, onRemoved);\n });\n function onRemoved() {\n removed++;\n if (done && removed >= nodes.length) {\n for (var i = 0; i < nodes.length; i++) {\n frag.appendChild(nodes[i]);\n }\n cb && cb();\n }\n }\n}\n\n/**\n * Check if a node is a DocumentFragment.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction isFragment(node) {\n return node && node.nodeType === 11;\n}\n\n/**\n * Get outerHTML of elements, taking care\n * of SVG elements in IE as well.\n *\n * @param {Element} el\n * @return {String}\n */\n\nfunction getOuterHTML(el) {\n if (el.outerHTML) {\n return el.outerHTML;\n } else {\n var container = document.createElement('div');\n container.appendChild(el.cloneNode(true));\n return container.innerHTML;\n }\n}\n\nvar commonTagRE = /^(div|p|span|img|a|b|i|br|ul|ol|li|h1|h2|h3|h4|h5|h6|code|pre|table|th|td|tr|form|label|input|select|option|nav|article|section|header|footer)$/i;\nvar reservedTagRE = /^(slot|partial|component)$/i;\n\nvar isUnknownElement = undefined;\nif (process.env.NODE_ENV !== 'production') {\n isUnknownElement = function (el, tag) {\n if (tag.indexOf('-') > -1) {\n // http://stackoverflow.com/a/28210364/1070244\n return el.constructor === window.HTMLUnknownElement || el.constructor === window.HTMLElement;\n } else {\n return (/HTMLUnknownElement/.test(el.toString()) &&\n // Chrome returns unknown for several HTML5 elements.\n // https://code.google.com/p/chromium/issues/detail?id=540526\n // Firefox returns unknown for some \"Interactive elements.\"\n !/^(data|time|rtc|rb|details|dialog|summary)$/.test(tag)\n );\n }\n };\n}\n\n/**\n * Check if an element is a component, if yes return its\n * component id.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Object|undefined}\n */\n\nfunction checkComponentAttr(el, options) {\n var tag = el.tagName.toLowerCase();\n var hasAttrs = el.hasAttributes();\n if (!commonTagRE.test(tag) && !reservedTagRE.test(tag)) {\n if (resolveAsset(options, 'components', tag)) {\n return { id: tag };\n } else {\n var is = hasAttrs && getIsBinding(el, options);\n if (is) {\n return is;\n } else if (process.env.NODE_ENV !== 'production') {\n var expectedTag = options._componentNameMap && options._componentNameMap[tag];\n if (expectedTag) {\n warn('Unknown custom element: <' + tag + '> - ' + 'did you mean <' + expectedTag + '>? ' + 'HTML is case-insensitive, remember to use kebab-case in templates.');\n } else if (isUnknownElement(el, tag)) {\n warn('Unknown custom element: <' + tag + '> - did you ' + 'register the component correctly? For recursive components, ' + 'make sure to provide the \"name\" option.');\n }\n }\n }\n } else if (hasAttrs) {\n return getIsBinding(el, options);\n }\n}\n\n/**\n * Get \"is\" binding from an element.\n *\n * @param {Element} el\n * @param {Object} options\n * @return {Object|undefined}\n */\n\nfunction getIsBinding(el, options) {\n // dynamic syntax\n var exp = el.getAttribute('is');\n if (exp != null) {\n if (resolveAsset(options, 'components', exp)) {\n el.removeAttribute('is');\n return { id: exp };\n }\n } else {\n exp = getBindAttr(el, 'is');\n if (exp != null) {\n return { id: exp, dynamic: true };\n }\n }\n}\n\n/**\n * Option overwriting strategies are functions that handle\n * how to merge a parent option value and a child option\n * value into the final value.\n *\n * All strategy functions follow the same signature:\n *\n * @param {*} parentVal\n * @param {*} childVal\n * @param {Vue} [vm]\n */\n\nvar strats = config.optionMergeStrategies = Object.create(null);\n\n/**\n * Helper that recursively merges two data objects together.\n */\n\nfunction mergeData(to, from) {\n var key, toVal, fromVal;\n for (key in from) {\n toVal = to[key];\n fromVal = from[key];\n if (!hasOwn(to, key)) {\n set(to, key, fromVal);\n } else if (isObject(toVal) && isObject(fromVal)) {\n mergeData(toVal, fromVal);\n }\n }\n return to;\n}\n\n/**\n * Data\n */\n\nstrats.data = function (parentVal, childVal, vm) {\n if (!vm) {\n // in a Vue.extend merge, both should be functions\n if (!childVal) {\n return parentVal;\n }\n if (typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"data\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return parentVal;\n }\n if (!parentVal) {\n return childVal;\n }\n // when parentVal & childVal are both present,\n // we need to return a function that returns the\n // merged result of both functions... no need to\n // check if parentVal is a function here because\n // it has to be a function to pass previous merges.\n return function mergedDataFn() {\n return mergeData(childVal.call(this), parentVal.call(this));\n };\n } else if (parentVal || childVal) {\n return function mergedInstanceDataFn() {\n // instance merge\n var instanceData = typeof childVal === 'function' ? childVal.call(vm) : childVal;\n var defaultData = typeof parentVal === 'function' ? parentVal.call(vm) : undefined;\n if (instanceData) {\n return mergeData(instanceData, defaultData);\n } else {\n return defaultData;\n }\n };\n }\n};\n\n/**\n * El\n */\n\nstrats.el = function (parentVal, childVal, vm) {\n if (!vm && childVal && typeof childVal !== 'function') {\n process.env.NODE_ENV !== 'production' && warn('The \"el\" option should be a function ' + 'that returns a per-instance value in component ' + 'definitions.', vm);\n return;\n }\n var ret = childVal || parentVal;\n // invoke the element factory if this is instance merge\n return vm && typeof ret === 'function' ? ret.call(vm) : ret;\n};\n\n/**\n * Hooks and param attributes are merged as arrays.\n */\n\nstrats.init = strats.created = strats.ready = strats.attached = strats.detached = strats.beforeCompile = strats.compiled = strats.beforeDestroy = strats.destroyed = strats.activate = function (parentVal, childVal) {\n return childVal ? parentVal ? parentVal.concat(childVal) : isArray(childVal) ? childVal : [childVal] : parentVal;\n};\n\n/**\n * Assets\n *\n * When a vm is present (instance creation), we need to do\n * a three-way merge between constructor options, instance\n * options and parent options.\n */\n\nfunction mergeAssets(parentVal, childVal) {\n var res = Object.create(parentVal || null);\n return childVal ? extend(res, guardArrayAssets(childVal)) : res;\n}\n\nconfig._assetTypes.forEach(function (type) {\n strats[type + 's'] = mergeAssets;\n});\n\n/**\n * Events & Watchers.\n *\n * Events & watchers hashes should not overwrite one\n * another, so we merge them as arrays.\n */\n\nstrats.watch = strats.events = function (parentVal, childVal) {\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = {};\n extend(ret, parentVal);\n for (var key in childVal) {\n var parent = ret[key];\n var child = childVal[key];\n if (parent && !isArray(parent)) {\n parent = [parent];\n }\n ret[key] = parent ? parent.concat(child) : [child];\n }\n return ret;\n};\n\n/**\n * Other object hashes.\n */\n\nstrats.props = strats.methods = strats.computed = function (parentVal, childVal) {\n if (!childVal) return parentVal;\n if (!parentVal) return childVal;\n var ret = Object.create(null);\n extend(ret, parentVal);\n extend(ret, childVal);\n return ret;\n};\n\n/**\n * Default strategy.\n */\n\nvar defaultStrat = function defaultStrat(parentVal, childVal) {\n return childVal === undefined ? parentVal : childVal;\n};\n\n/**\n * Make sure component options get converted to actual\n * constructors.\n *\n * @param {Object} options\n */\n\nfunction guardComponents(options) {\n if (options.components) {\n var components = options.components = guardArrayAssets(options.components);\n var ids = Object.keys(components);\n var def;\n if (process.env.NODE_ENV !== 'production') {\n var map = options._componentNameMap = {};\n }\n for (var i = 0, l = ids.length; i < l; i++) {\n var key = ids[i];\n if (commonTagRE.test(key) || reservedTagRE.test(key)) {\n process.env.NODE_ENV !== 'production' && warn('Do not use built-in or reserved HTML elements as component ' + 'id: ' + key);\n continue;\n }\n // record a all lowercase <-> kebab-case mapping for\n // possible custom element case error warning\n if (process.env.NODE_ENV !== 'production') {\n map[key.replace(/-/g, '').toLowerCase()] = hyphenate(key);\n }\n def = components[key];\n if (isPlainObject(def)) {\n components[key] = Vue.extend(def);\n }\n }\n }\n}\n\n/**\n * Ensure all props option syntax are normalized into the\n * Object-based format.\n *\n * @param {Object} options\n */\n\nfunction guardProps(options) {\n var props = options.props;\n var i, val;\n if (isArray(props)) {\n options.props = {};\n i = props.length;\n while (i--) {\n val = props[i];\n if (typeof val === 'string') {\n options.props[val] = null;\n } else if (val.name) {\n options.props[val.name] = val;\n }\n }\n } else if (isPlainObject(props)) {\n var keys = Object.keys(props);\n i = keys.length;\n while (i--) {\n val = props[keys[i]];\n if (typeof val === 'function') {\n props[keys[i]] = { type: val };\n }\n }\n }\n}\n\n/**\n * Guard an Array-format assets option and converted it\n * into the key-value Object format.\n *\n * @param {Object|Array} assets\n * @return {Object}\n */\n\nfunction guardArrayAssets(assets) {\n if (isArray(assets)) {\n var res = {};\n var i = assets.length;\n var asset;\n while (i--) {\n asset = assets[i];\n var id = typeof asset === 'function' ? asset.options && asset.options.name || asset.id : asset.name || asset.id;\n if (!id) {\n process.env.NODE_ENV !== 'production' && warn('Array-syntax assets must provide a \"name\" or \"id\" field.');\n } else {\n res[id] = asset;\n }\n }\n return res;\n }\n return assets;\n}\n\n/**\n * Merge two option objects into a new one.\n * Core utility used in both instantiation and inheritance.\n *\n * @param {Object} parent\n * @param {Object} child\n * @param {Vue} [vm] - if vm is present, indicates this is\n * an instantiation merge.\n */\n\nfunction mergeOptions(parent, child, vm) {\n guardComponents(child);\n guardProps(child);\n if (process.env.NODE_ENV !== 'production') {\n if (child.propsData && !vm) {\n warn('propsData can only be used as an instantiation option.');\n }\n }\n var options = {};\n var key;\n if (child['extends']) {\n parent = typeof child['extends'] === 'function' ? mergeOptions(parent, child['extends'].options, vm) : mergeOptions(parent, child['extends'], vm);\n }\n if (child.mixins) {\n for (var i = 0, l = child.mixins.length; i < l; i++) {\n var mixin = child.mixins[i];\n var mixinOptions = mixin.prototype instanceof Vue ? mixin.options : mixin;\n parent = mergeOptions(parent, mixinOptions, vm);\n }\n }\n for (key in parent) {\n mergeField(key);\n }\n for (key in child) {\n if (!hasOwn(parent, key)) {\n mergeField(key);\n }\n }\n function mergeField(key) {\n var strat = strats[key] || defaultStrat;\n options[key] = strat(parent[key], child[key], vm, key);\n }\n return options;\n}\n\n/**\n * Resolve an asset.\n * This function is used because child instances need access\n * to assets defined in its ancestor chain.\n *\n * @param {Object} options\n * @param {String} type\n * @param {String} id\n * @param {Boolean} warnMissing\n * @return {Object|Function}\n */\n\nfunction resolveAsset(options, type, id, warnMissing) {\n /* istanbul ignore if */\n if (typeof id !== 'string') {\n return;\n }\n var assets = options[type];\n var camelizedId;\n var res = assets[id] ||\n // camelCase ID\n assets[camelizedId = camelize(id)] ||\n // Pascal Case ID\n assets[camelizedId.charAt(0).toUpperCase() + camelizedId.slice(1)];\n if (process.env.NODE_ENV !== 'production' && warnMissing && !res) {\n warn('Failed to resolve ' + type.slice(0, -1) + ': ' + id, options);\n }\n return res;\n}\n\nvar uid$1 = 0;\n\n/**\n * A dep is an observable that can have multiple\n * directives subscribing to it.\n *\n * @constructor\n */\nfunction Dep() {\n this.id = uid$1++;\n this.subs = [];\n}\n\n// the current target watcher being evaluated.\n// this is globally unique because there could be only one\n// watcher being evaluated at any time.\nDep.target = null;\n\n/**\n * Add a directive subscriber.\n *\n * @param {Directive} sub\n */\n\nDep.prototype.addSub = function (sub) {\n this.subs.push(sub);\n};\n\n/**\n * Remove a directive subscriber.\n *\n * @param {Directive} sub\n */\n\nDep.prototype.removeSub = function (sub) {\n this.subs.$remove(sub);\n};\n\n/**\n * Add self as a dependency to the target watcher.\n */\n\nDep.prototype.depend = function () {\n Dep.target.addDep(this);\n};\n\n/**\n * Notify all subscribers of a new value.\n */\n\nDep.prototype.notify = function () {\n // stablize the subscriber list first\n var subs = toArray(this.subs);\n for (var i = 0, l = subs.length; i < l; i++) {\n subs[i].update();\n }\n};\n\nvar arrayProto = Array.prototype;\nvar arrayMethods = Object.create(arrayProto)\n\n/**\n * Intercept mutating methods and emit events\n */\n\n;['push', 'pop', 'shift', 'unshift', 'splice', 'sort', 'reverse'].forEach(function (method) {\n // cache original method\n var original = arrayProto[method];\n def(arrayMethods, method, function mutator() {\n // avoid leaking arguments:\n // http://jsperf.com/closure-with-arguments\n var i = arguments.length;\n var args = new Array(i);\n while (i--) {\n args[i] = arguments[i];\n }\n var result = original.apply(this, args);\n var ob = this.__ob__;\n var inserted;\n switch (method) {\n case 'push':\n inserted = args;\n break;\n case 'unshift':\n inserted = args;\n break;\n case 'splice':\n inserted = args.slice(2);\n break;\n }\n if (inserted) ob.observeArray(inserted);\n // notify change\n ob.dep.notify();\n return result;\n });\n});\n\n/**\n * Swap the element at the given index with a new value\n * and emits corresponding event.\n *\n * @param {Number} index\n * @param {*} val\n * @return {*} - replaced element\n */\n\ndef(arrayProto, '$set', function $set(index, val) {\n if (index >= this.length) {\n this.length = Number(index) + 1;\n }\n return this.splice(index, 1, val)[0];\n});\n\n/**\n * Convenience method to remove the element at given index or target element reference.\n *\n * @param {*} item\n */\n\ndef(arrayProto, '$remove', function $remove(item) {\n /* istanbul ignore if */\n if (!this.length) return;\n var index = indexOf(this, item);\n if (index > -1) {\n return this.splice(index, 1);\n }\n});\n\nvar arrayKeys = Object.getOwnPropertyNames(arrayMethods);\n\n/**\n * By default, when a reactive property is set, the new value is\n * also converted to become reactive. However in certain cases, e.g.\n * v-for scope alias and props, we don't want to force conversion\n * because the value may be a nested value under a frozen data structure.\n *\n * So whenever we want to set a reactive property without forcing\n * conversion on the new value, we wrap that call inside this function.\n */\n\nvar shouldConvert = true;\n\nfunction withoutConversion(fn) {\n shouldConvert = false;\n fn();\n shouldConvert = true;\n}\n\n/**\n * Observer class that are attached to each observed\n * object. Once attached, the observer converts target\n * object's property keys into getter/setters that\n * collect dependencies and dispatches updates.\n *\n * @param {Array|Object} value\n * @constructor\n */\n\nfunction Observer(value) {\n this.value = value;\n this.dep = new Dep();\n def(value, '__ob__', this);\n if (isArray(value)) {\n var augment = hasProto ? protoAugment : copyAugment;\n augment(value, arrayMethods, arrayKeys);\n this.observeArray(value);\n } else {\n this.walk(value);\n }\n}\n\n// Instance methods\n\n/**\n * Walk through each property and convert them into\n * getter/setters. This method should only be called when\n * value type is Object.\n *\n * @param {Object} obj\n */\n\nObserver.prototype.walk = function (obj) {\n var keys = Object.keys(obj);\n for (var i = 0, l = keys.length; i < l; i++) {\n this.convert(keys[i], obj[keys[i]]);\n }\n};\n\n/**\n * Observe a list of Array items.\n *\n * @param {Array} items\n */\n\nObserver.prototype.observeArray = function (items) {\n for (var i = 0, l = items.length; i < l; i++) {\n observe(items[i]);\n }\n};\n\n/**\n * Convert a property into getter/setter so we can emit\n * the events when the property is accessed/changed.\n *\n * @param {String} key\n * @param {*} val\n */\n\nObserver.prototype.convert = function (key, val) {\n defineReactive(this.value, key, val);\n};\n\n/**\n * Add an owner vm, so that when $set/$delete mutations\n * happen we can notify owner vms to proxy the keys and\n * digest the watchers. This is only called when the object\n * is observed as an instance's root $data.\n *\n * @param {Vue} vm\n */\n\nObserver.prototype.addVm = function (vm) {\n (this.vms || (this.vms = [])).push(vm);\n};\n\n/**\n * Remove an owner vm. This is called when the object is\n * swapped out as an instance's $data object.\n *\n * @param {Vue} vm\n */\n\nObserver.prototype.removeVm = function (vm) {\n this.vms.$remove(vm);\n};\n\n// helpers\n\n/**\n * Augment an target Object or Array by intercepting\n * the prototype chain using __proto__\n *\n * @param {Object|Array} target\n * @param {Object} src\n */\n\nfunction protoAugment(target, src) {\n /* eslint-disable no-proto */\n target.__proto__ = src;\n /* eslint-enable no-proto */\n}\n\n/**\n * Augment an target Object or Array by defining\n * hidden properties.\n *\n * @param {Object|Array} target\n * @param {Object} proto\n */\n\nfunction copyAugment(target, src, keys) {\n for (var i = 0, l = keys.length; i < l; i++) {\n var key = keys[i];\n def(target, key, src[key]);\n }\n}\n\n/**\n * Attempt to create an observer instance for a value,\n * returns the new observer if successfully observed,\n * or the existing observer if the value already has one.\n *\n * @param {*} value\n * @param {Vue} [vm]\n * @return {Observer|undefined}\n * @static\n */\n\nfunction observe(value, vm) {\n if (!value || typeof value !== 'object') {\n return;\n }\n var ob;\n if (hasOwn(value, '__ob__') && value.__ob__ instanceof Observer) {\n ob = value.__ob__;\n } else if (shouldConvert && (isArray(value) || isPlainObject(value)) && Object.isExtensible(value) && !value._isVue) {\n ob = new Observer(value);\n }\n if (ob && vm) {\n ob.addVm(vm);\n }\n return ob;\n}\n\n/**\n * Define a reactive property on an Object.\n *\n * @param {Object} obj\n * @param {String} key\n * @param {*} val\n */\n\nfunction defineReactive(obj, key, val) {\n var dep = new Dep();\n\n var property = Object.getOwnPropertyDescriptor(obj, key);\n if (property && property.configurable === false) {\n return;\n }\n\n // cater for pre-defined getter/setters\n var getter = property && property.get;\n var setter = property && property.set;\n\n var childOb = observe(val);\n Object.defineProperty(obj, key, {\n enumerable: true,\n configurable: true,\n get: function reactiveGetter() {\n var value = getter ? getter.call(obj) : val;\n if (Dep.target) {\n dep.depend();\n if (childOb) {\n childOb.dep.depend();\n }\n if (isArray(value)) {\n for (var e, i = 0, l = value.length; i < l; i++) {\n e = value[i];\n e && e.__ob__ && e.__ob__.dep.depend();\n }\n }\n }\n return value;\n },\n set: function reactiveSetter(newVal) {\n var value = getter ? getter.call(obj) : val;\n if (newVal === value) {\n return;\n }\n if (setter) {\n setter.call(obj, newVal);\n } else {\n val = newVal;\n }\n childOb = observe(newVal);\n dep.notify();\n }\n });\n}\n\n\n\nvar util = Object.freeze({\n\tdefineReactive: defineReactive,\n\tset: set,\n\tdel: del,\n\thasOwn: hasOwn,\n\tisLiteral: isLiteral,\n\tisReserved: isReserved,\n\t_toString: _toString,\n\ttoNumber: toNumber,\n\ttoBoolean: toBoolean,\n\tstripQuotes: stripQuotes,\n\tcamelize: camelize,\n\thyphenate: hyphenate,\n\tclassify: classify,\n\tbind: bind,\n\ttoArray: toArray,\n\textend: extend,\n\tisObject: isObject,\n\tisPlainObject: isPlainObject,\n\tdef: def,\n\tdebounce: _debounce,\n\tindexOf: indexOf,\n\tcancellable: cancellable,\n\tlooseEqual: looseEqual,\n\tisArray: isArray,\n\thasProto: hasProto,\n\tinBrowser: inBrowser,\n\tdevtools: devtools,\n\tisIE: isIE,\n\tisIE9: isIE9,\n\tisAndroid: isAndroid,\n\tisIos: isIos,\n\tiosVersionMatch: iosVersionMatch,\n\tiosVersion: iosVersion,\n\thasMutationObserverBug: hasMutationObserverBug,\n\tget transitionProp () { return transitionProp; },\n\tget transitionEndEvent () { return transitionEndEvent; },\n\tget animationProp () { return animationProp; },\n\tget animationEndEvent () { return animationEndEvent; },\n\tnextTick: nextTick,\n\tget _Set () { return _Set; },\n\tquery: query,\n\tinDoc: inDoc,\n\tgetAttr: getAttr,\n\tgetBindAttr: getBindAttr,\n\thasBindAttr: hasBindAttr,\n\tbefore: before,\n\tafter: after,\n\tremove: remove,\n\tprepend: prepend,\n\treplace: replace,\n\ton: on,\n\toff: off,\n\tsetClass: setClass,\n\taddClass: addClass,\n\tremoveClass: removeClass,\n\textractContent: extractContent,\n\ttrimNode: trimNode,\n\tisTemplate: isTemplate,\n\tcreateAnchor: createAnchor,\n\tfindRef: findRef,\n\tmapNodeRange: mapNodeRange,\n\tremoveNodeRange: removeNodeRange,\n\tisFragment: isFragment,\n\tgetOuterHTML: getOuterHTML,\n\tmergeOptions: mergeOptions,\n\tresolveAsset: resolveAsset,\n\tcheckComponentAttr: checkComponentAttr,\n\tcommonTagRE: commonTagRE,\n\treservedTagRE: reservedTagRE,\n\tget warn () { return warn; }\n});\n\nvar uid = 0;\n\nfunction initMixin (Vue) {\n /**\n * The main init sequence. This is called for every\n * instance, including ones that are created from extended\n * constructors.\n *\n * @param {Object} options - this options object should be\n * the result of merging class\n * options and the options passed\n * in to the constructor.\n */\n\n Vue.prototype._init = function (options) {\n options = options || {};\n\n this.$el = null;\n this.$parent = options.parent;\n this.$root = this.$parent ? this.$parent.$root : this;\n this.$children = [];\n this.$refs = {}; // child vm references\n this.$els = {}; // element references\n this._watchers = []; // all watchers as an array\n this._directives = []; // all directives\n\n // a uid\n this._uid = uid++;\n\n // a flag to avoid this being observed\n this._isVue = true;\n\n // events bookkeeping\n this._events = {}; // registered callbacks\n this._eventsCount = {}; // for $broadcast optimization\n\n // fragment instance properties\n this._isFragment = false;\n this._fragment = // @type {DocumentFragment}\n this._fragmentStart = // @type {Text|Comment}\n this._fragmentEnd = null; // @type {Text|Comment}\n\n // lifecycle state\n this._isCompiled = this._isDestroyed = this._isReady = this._isAttached = this._isBeingDestroyed = this._vForRemoving = false;\n this._unlinkFn = null;\n\n // context:\n // if this is a transcluded component, context\n // will be the common parent vm of this instance\n // and its host.\n this._context = options._context || this.$parent;\n\n // scope:\n // if this is inside an inline v-for, the scope\n // will be the intermediate scope created for this\n // repeat fragment. this is used for linking props\n // and container directives.\n this._scope = options._scope;\n\n // fragment:\n // if this instance is compiled inside a Fragment, it\n // needs to reigster itself as a child of that fragment\n // for attach/detach to work properly.\n this._frag = options._frag;\n if (this._frag) {\n this._frag.children.push(this);\n }\n\n // push self into parent / transclusion host\n if (this.$parent) {\n this.$parent.$children.push(this);\n }\n\n // merge options.\n options = this.$options = mergeOptions(this.constructor.options, options, this);\n\n // set ref\n this._updateRef();\n\n // initialize data as empty object.\n // it will be filled up in _initData().\n this._data = {};\n\n // call init hook\n this._callHook('init');\n\n // initialize data observation and scope inheritance.\n this._initState();\n\n // setup event system and option events.\n this._initEvents();\n\n // call created hook\n this._callHook('created');\n\n // if `el` option is passed, start compilation.\n if (options.el) {\n this.$mount(options.el);\n }\n };\n}\n\nvar pathCache = new Cache(1000);\n\n// actions\nvar APPEND = 0;\nvar PUSH = 1;\nvar INC_SUB_PATH_DEPTH = 2;\nvar PUSH_SUB_PATH = 3;\n\n// states\nvar BEFORE_PATH = 0;\nvar IN_PATH = 1;\nvar BEFORE_IDENT = 2;\nvar IN_IDENT = 3;\nvar IN_SUB_PATH = 4;\nvar IN_SINGLE_QUOTE = 5;\nvar IN_DOUBLE_QUOTE = 6;\nvar AFTER_PATH = 7;\nvar ERROR = 8;\n\nvar pathStateMachine = [];\n\npathStateMachine[BEFORE_PATH] = {\n 'ws': [BEFORE_PATH],\n 'ident': [IN_IDENT, APPEND],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[IN_PATH] = {\n 'ws': [IN_PATH],\n '.': [BEFORE_IDENT],\n '[': [IN_SUB_PATH],\n 'eof': [AFTER_PATH]\n};\n\npathStateMachine[BEFORE_IDENT] = {\n 'ws': [BEFORE_IDENT],\n 'ident': [IN_IDENT, APPEND]\n};\n\npathStateMachine[IN_IDENT] = {\n 'ident': [IN_IDENT, APPEND],\n '0': [IN_IDENT, APPEND],\n 'number': [IN_IDENT, APPEND],\n 'ws': [IN_PATH, PUSH],\n '.': [BEFORE_IDENT, PUSH],\n '[': [IN_SUB_PATH, PUSH],\n 'eof': [AFTER_PATH, PUSH]\n};\n\npathStateMachine[IN_SUB_PATH] = {\n \"'\": [IN_SINGLE_QUOTE, APPEND],\n '\"': [IN_DOUBLE_QUOTE, APPEND],\n '[': [IN_SUB_PATH, INC_SUB_PATH_DEPTH],\n ']': [IN_PATH, PUSH_SUB_PATH],\n 'eof': ERROR,\n 'else': [IN_SUB_PATH, APPEND]\n};\n\npathStateMachine[IN_SINGLE_QUOTE] = {\n \"'\": [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_SINGLE_QUOTE, APPEND]\n};\n\npathStateMachine[IN_DOUBLE_QUOTE] = {\n '\"': [IN_SUB_PATH, APPEND],\n 'eof': ERROR,\n 'else': [IN_DOUBLE_QUOTE, APPEND]\n};\n\n/**\n * Determine the type of a character in a keypath.\n *\n * @param {Char} ch\n * @return {String} type\n */\n\nfunction getPathCharType(ch) {\n if (ch === undefined) {\n return 'eof';\n }\n\n var code = ch.charCodeAt(0);\n\n switch (code) {\n case 0x5B: // [\n case 0x5D: // ]\n case 0x2E: // .\n case 0x22: // \"\n case 0x27: // '\n case 0x30:\n // 0\n return ch;\n\n case 0x5F: // _\n case 0x24:\n // $\n return 'ident';\n\n case 0x20: // Space\n case 0x09: // Tab\n case 0x0A: // Newline\n case 0x0D: // Return\n case 0xA0: // No-break space\n case 0xFEFF: // Byte Order Mark\n case 0x2028: // Line Separator\n case 0x2029:\n // Paragraph Separator\n return 'ws';\n }\n\n // a-z, A-Z\n if (code >= 0x61 && code <= 0x7A || code >= 0x41 && code <= 0x5A) {\n return 'ident';\n }\n\n // 1-9\n if (code >= 0x31 && code <= 0x39) {\n return 'number';\n }\n\n return 'else';\n}\n\n/**\n * Format a subPath, return its plain form if it is\n * a literal string or number. Otherwise prepend the\n * dynamic indicator (*).\n *\n * @param {String} path\n * @return {String}\n */\n\nfunction formatSubPath(path) {\n var trimmed = path.trim();\n // invalid leading 0\n if (path.charAt(0) === '0' && isNaN(path)) {\n return false;\n }\n return isLiteral(trimmed) ? stripQuotes(trimmed) : '*' + trimmed;\n}\n\n/**\n * Parse a string path into an array of segments\n *\n * @param {String} path\n * @return {Array|undefined}\n */\n\nfunction parse(path) {\n var keys = [];\n var index = -1;\n var mode = BEFORE_PATH;\n var subPathDepth = 0;\n var c, newChar, key, type, transition, action, typeMap;\n\n var actions = [];\n\n actions[PUSH] = function () {\n if (key !== undefined) {\n keys.push(key);\n key = undefined;\n }\n };\n\n actions[APPEND] = function () {\n if (key === undefined) {\n key = newChar;\n } else {\n key += newChar;\n }\n };\n\n actions[INC_SUB_PATH_DEPTH] = function () {\n actions[APPEND]();\n subPathDepth++;\n };\n\n actions[PUSH_SUB_PATH] = function () {\n if (subPathDepth > 0) {\n subPathDepth--;\n mode = IN_SUB_PATH;\n actions[APPEND]();\n } else {\n subPathDepth = 0;\n key = formatSubPath(key);\n if (key === false) {\n return false;\n } else {\n actions[PUSH]();\n }\n }\n };\n\n function maybeUnescapeQuote() {\n var nextChar = path[index + 1];\n if (mode === IN_SINGLE_QUOTE && nextChar === \"'\" || mode === IN_DOUBLE_QUOTE && nextChar === '\"') {\n index++;\n newChar = '\\\\' + nextChar;\n actions[APPEND]();\n return true;\n }\n }\n\n while (mode != null) {\n index++;\n c = path[index];\n\n if (c === '\\\\' && maybeUnescapeQuote()) {\n continue;\n }\n\n type = getPathCharType(c);\n typeMap = pathStateMachine[mode];\n transition = typeMap[type] || typeMap['else'] || ERROR;\n\n if (transition === ERROR) {\n return; // parse error\n }\n\n mode = transition[0];\n action = actions[transition[1]];\n if (action) {\n newChar = transition[2];\n newChar = newChar === undefined ? c : newChar;\n if (action() === false) {\n return;\n }\n }\n\n if (mode === AFTER_PATH) {\n keys.raw = path;\n return keys;\n }\n }\n}\n\n/**\n * External parse that check for a cache hit first\n *\n * @param {String} path\n * @return {Array|undefined}\n */\n\nfunction parsePath(path) {\n var hit = pathCache.get(path);\n if (!hit) {\n hit = parse(path);\n if (hit) {\n pathCache.put(path, hit);\n }\n }\n return hit;\n}\n\n/**\n * Get from an object from a path string\n *\n * @param {Object} obj\n * @param {String} path\n */\n\nfunction getPath(obj, path) {\n return parseExpression(path).get(obj);\n}\n\n/**\n * Warn against setting non-existent root path on a vm.\n */\n\nvar warnNonExistent;\nif (process.env.NODE_ENV !== 'production') {\n warnNonExistent = function (path, vm) {\n warn('You are setting a non-existent path \"' + path.raw + '\" ' + 'on a vm instance. Consider pre-initializing the property ' + 'with the \"data\" option for more reliable reactivity ' + 'and better performance.', vm);\n };\n}\n\n/**\n * Set on an object from a path\n *\n * @param {Object} obj\n * @param {String | Array} path\n * @param {*} val\n */\n\nfunction setPath(obj, path, val) {\n var original = obj;\n if (typeof path === 'string') {\n path = parse(path);\n }\n if (!path || !isObject(obj)) {\n return false;\n }\n var last, key;\n for (var i = 0, l = path.length; i < l; i++) {\n last = obj;\n key = path[i];\n if (key.charAt(0) === '*') {\n key = parseExpression(key.slice(1)).get.call(original, original);\n }\n if (i < l - 1) {\n obj = obj[key];\n if (!isObject(obj)) {\n obj = {};\n if (process.env.NODE_ENV !== 'production' && last._isVue) {\n warnNonExistent(path, last);\n }\n set(last, key, obj);\n }\n } else {\n if (isArray(obj)) {\n obj.$set(key, val);\n } else if (key in obj) {\n obj[key] = val;\n } else {\n if (process.env.NODE_ENV !== 'production' && obj._isVue) {\n warnNonExistent(path, obj);\n }\n set(obj, key, val);\n }\n }\n }\n return true;\n}\n\nvar path = Object.freeze({\n parsePath: parsePath,\n getPath: getPath,\n setPath: setPath\n});\n\nvar expressionCache = new Cache(1000);\n\nvar allowedKeywords = 'Math,Date,this,true,false,null,undefined,Infinity,NaN,' + 'isNaN,isFinite,decodeURI,decodeURIComponent,encodeURI,' + 'encodeURIComponent,parseInt,parseFloat';\nvar allowedKeywordsRE = new RegExp('^(' + allowedKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\n// keywords that don't make sense inside expressions\nvar improperKeywords = 'break,case,class,catch,const,continue,debugger,default,' + 'delete,do,else,export,extends,finally,for,function,if,' + 'import,in,instanceof,let,return,super,switch,throw,try,' + 'var,while,with,yield,enum,await,implements,package,' + 'protected,static,interface,private,public';\nvar improperKeywordsRE = new RegExp('^(' + improperKeywords.replace(/,/g, '\\\\b|') + '\\\\b)');\n\nvar wsRE = /\\s/g;\nvar newlineRE = /\\n/g;\nvar saveRE = /[\\{,]\\s*[\\w\\$_]+\\s*:|('(?:[^'\\\\]|\\\\.)*'|\"(?:[^\"\\\\]|\\\\.)*\"|`(?:[^`\\\\]|\\\\.)*\\$\\{|\\}(?:[^`\\\\]|\\\\.)*`|`(?:[^`\\\\]|\\\\.)*`)|new |typeof |void /g;\nvar restoreRE = /\"(\\d+)\"/g;\nvar pathTestRE = /^[A-Za-z_$][\\w$]*(?:\\.[A-Za-z_$][\\w$]*|\\['.*?'\\]|\\[\".*?\"\\]|\\[\\d+\\]|\\[[A-Za-z_$][\\w$]*\\])*$/;\nvar identRE = /[^\\w$\\.](?:[A-Za-z_$][\\w$]*)/g;\nvar literalValueRE$1 = /^(?:true|false|null|undefined|Infinity|NaN)$/;\n\nfunction noop() {}\n\n/**\n * Save / Rewrite / Restore\n *\n * When rewriting paths found in an expression, it is\n * possible for the same letter sequences to be found in\n * strings and Object literal property keys. Therefore we\n * remove and store these parts in a temporary array, and\n * restore them after the path rewrite.\n */\n\nvar saved = [];\n\n/**\n * Save replacer\n *\n * The save regex can match two possible cases:\n * 1. An opening object literal\n * 2. A string\n * If matched as a plain string, we need to escape its\n * newlines, since the string needs to be preserved when\n * generating the function body.\n *\n * @param {String} str\n * @param {String} isString - str if matched as a string\n * @return {String} - placeholder with index\n */\n\nfunction save(str, isString) {\n var i = saved.length;\n saved[i] = isString ? str.replace(newlineRE, '\\\\n') : str;\n return '\"' + i + '\"';\n}\n\n/**\n * Path rewrite replacer\n *\n * @param {String} raw\n * @return {String}\n */\n\nfunction rewrite(raw) {\n var c = raw.charAt(0);\n var path = raw.slice(1);\n if (allowedKeywordsRE.test(path)) {\n return raw;\n } else {\n path = path.indexOf('\"') > -1 ? path.replace(restoreRE, restore) : path;\n return c + 'scope.' + path;\n }\n}\n\n/**\n * Restore replacer\n *\n * @param {String} str\n * @param {String} i - matched save index\n * @return {String}\n */\n\nfunction restore(str, i) {\n return saved[i];\n}\n\n/**\n * Rewrite an expression, prefixing all path accessors with\n * `scope.` and generate getter/setter functions.\n *\n * @param {String} exp\n * @return {Function}\n */\n\nfunction compileGetter(exp) {\n if (improperKeywordsRE.test(exp)) {\n process.env.NODE_ENV !== 'production' && warn('Avoid using reserved keywords in expression: ' + exp);\n }\n // reset state\n saved.length = 0;\n // save strings and object literal keys\n var body = exp.replace(saveRE, save).replace(wsRE, '');\n // rewrite all paths\n // pad 1 space here because the regex matches 1 extra char\n body = (' ' + body).replace(identRE, rewrite).replace(restoreRE, restore);\n return makeGetterFn(body);\n}\n\n/**\n * Build a getter function. Requires eval.\n *\n * We isolate the try/catch so it doesn't affect the\n * optimization of the parse function when it is not called.\n *\n * @param {String} body\n * @return {Function|undefined}\n */\n\nfunction makeGetterFn(body) {\n try {\n /* eslint-disable no-new-func */\n return new Function('scope', 'return ' + body + ';');\n /* eslint-enable no-new-func */\n } catch (e) {\n if (process.env.NODE_ENV !== 'production') {\n /* istanbul ignore if */\n if (e.toString().match(/unsafe-eval|CSP/)) {\n warn('It seems you are using the default build of Vue.js in an environment ' + 'with Content Security Policy that prohibits unsafe-eval. ' + 'Use the CSP-compliant build instead: ' + 'http://vuejs.org/guide/installation.html#CSP-compliant-build');\n } else {\n warn('Invalid expression. ' + 'Generated function body: ' + body);\n }\n }\n return noop;\n }\n}\n\n/**\n * Compile a setter function for the expression.\n *\n * @param {String} exp\n * @return {Function|undefined}\n */\n\nfunction compileSetter(exp) {\n var path = parsePath(exp);\n if (path) {\n return function (scope, val) {\n setPath(scope, path, val);\n };\n } else {\n process.env.NODE_ENV !== 'production' && warn('Invalid setter expression: ' + exp);\n }\n}\n\n/**\n * Parse an expression into re-written getter/setters.\n *\n * @param {String} exp\n * @param {Boolean} needSet\n * @return {Function}\n */\n\nfunction parseExpression(exp, needSet) {\n exp = exp.trim();\n // try cache\n var hit = expressionCache.get(exp);\n if (hit) {\n if (needSet && !hit.set) {\n hit.set = compileSetter(hit.exp);\n }\n return hit;\n }\n var res = { exp: exp };\n res.get = isSimplePath(exp) && exp.indexOf('[') < 0\n // optimized super simple getter\n ? makeGetterFn('scope.' + exp)\n // dynamic getter\n : compileGetter(exp);\n if (needSet) {\n res.set = compileSetter(exp);\n }\n expressionCache.put(exp, res);\n return res;\n}\n\n/**\n * Check if an expression is a simple path.\n *\n * @param {String} exp\n * @return {Boolean}\n */\n\nfunction isSimplePath(exp) {\n return pathTestRE.test(exp) &&\n // don't treat literal values as paths\n !literalValueRE$1.test(exp) &&\n // Math constants e.g. Math.PI, Math.E etc.\n exp.slice(0, 5) !== 'Math.';\n}\n\nvar expression = Object.freeze({\n parseExpression: parseExpression,\n isSimplePath: isSimplePath\n});\n\n// we have two separate queues: one for directive updates\n// and one for user watcher registered via $watch().\n// we want to guarantee directive updates to be called\n// before user watchers so that when user watchers are\n// triggered, the DOM would have already been in updated\n// state.\n\nvar queue = [];\nvar userQueue = [];\nvar has = {};\nvar circular = {};\nvar waiting = false;\n\n/**\n * Reset the batcher's state.\n */\n\nfunction resetBatcherState() {\n queue.length = 0;\n userQueue.length = 0;\n has = {};\n circular = {};\n waiting = false;\n}\n\n/**\n * Flush both queues and run the watchers.\n */\n\nfunction flushBatcherQueue() {\n var _again = true;\n\n _function: while (_again) {\n _again = false;\n\n runBatcherQueue(queue);\n runBatcherQueue(userQueue);\n // user watchers triggered more watchers,\n // keep flushing until it depletes\n if (queue.length) {\n _again = true;\n continue _function;\n }\n // dev tool hook\n /* istanbul ignore if */\n if (devtools && config.devtools) {\n devtools.emit('flush');\n }\n resetBatcherState();\n }\n}\n\n/**\n * Run the watchers in a single queue.\n *\n * @param {Array} queue\n */\n\nfunction runBatcherQueue(queue) {\n // do not cache length because more watchers might be pushed\n // as we run existing watchers\n for (var i = 0; i < queue.length; i++) {\n var watcher = queue[i];\n var id = watcher.id;\n has[id] = null;\n watcher.run();\n // in dev build, check and stop circular updates.\n if (process.env.NODE_ENV !== 'production' && has[id] != null) {\n circular[id] = (circular[id] || 0) + 1;\n if (circular[id] > config._maxUpdateCount) {\n warn('You may have an infinite update loop for watcher ' + 'with expression \"' + watcher.expression + '\"', watcher.vm);\n break;\n }\n }\n }\n queue.length = 0;\n}\n\n/**\n * Push a watcher into the watcher queue.\n * Jobs with duplicate IDs will be skipped unless it's\n * pushed when the queue is being flushed.\n *\n * @param {Watcher} watcher\n * properties:\n * - {Number} id\n * - {Function} run\n */\n\nfunction pushWatcher(watcher) {\n var id = watcher.id;\n if (has[id] == null) {\n // push watcher into appropriate queue\n var q = watcher.user ? userQueue : queue;\n has[id] = q.length;\n q.push(watcher);\n // queue the flush\n if (!waiting) {\n waiting = true;\n nextTick(flushBatcherQueue);\n }\n }\n}\n\nvar uid$2 = 0;\n\n/**\n * A watcher parses an expression, collects dependencies,\n * and fires callback when the expression value changes.\n * This is used for both the $watch() api and directives.\n *\n * @param {Vue} vm\n * @param {String|Function} expOrFn\n * @param {Function} cb\n * @param {Object} options\n * - {Array} filters\n * - {Boolean} twoWay\n * - {Boolean} deep\n * - {Boolean} user\n * - {Boolean} sync\n * - {Boolean} lazy\n * - {Function} [preProcess]\n * - {Function} [postProcess]\n * @constructor\n */\nfunction Watcher(vm, expOrFn, cb, options) {\n // mix in options\n if (options) {\n extend(this, options);\n }\n var isFn = typeof expOrFn === 'function';\n this.vm = vm;\n vm._watchers.push(this);\n this.expression = expOrFn;\n this.cb = cb;\n this.id = ++uid$2; // uid for batching\n this.active = true;\n this.dirty = this.lazy; // for lazy watchers\n this.deps = [];\n this.newDeps = [];\n this.depIds = new _Set();\n this.newDepIds = new _Set();\n this.prevError = null; // for async error stacks\n // parse expression for getter/setter\n if (isFn) {\n this.getter = expOrFn;\n this.setter = undefined;\n } else {\n var res = parseExpression(expOrFn, this.twoWay);\n this.getter = res.get;\n this.setter = res.set;\n }\n this.value = this.lazy ? undefined : this.get();\n // state for avoiding false triggers for deep and Array\n // watchers during vm._digest()\n this.queued = this.shallow = false;\n}\n\n/**\n * Evaluate the getter, and re-collect dependencies.\n */\n\nWatcher.prototype.get = function () {\n this.beforeGet();\n var scope = this.scope || this.vm;\n var value;\n try {\n value = this.getter.call(scope, scope);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && config.warnExpressionErrors) {\n warn('Error when evaluating expression ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n }\n }\n // \"touch\" every property so they are all tracked as\n // dependencies for deep watching\n if (this.deep) {\n traverse(value);\n }\n if (this.preProcess) {\n value = this.preProcess(value);\n }\n if (this.filters) {\n value = scope._applyFilters(value, null, this.filters, false);\n }\n if (this.postProcess) {\n value = this.postProcess(value);\n }\n this.afterGet();\n return value;\n};\n\n/**\n * Set the corresponding value with the setter.\n *\n * @param {*} value\n */\n\nWatcher.prototype.set = function (value) {\n var scope = this.scope || this.vm;\n if (this.filters) {\n value = scope._applyFilters(value, this.value, this.filters, true);\n }\n try {\n this.setter.call(scope, scope, value);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && config.warnExpressionErrors) {\n warn('Error when evaluating setter ' + '\"' + this.expression + '\": ' + e.toString(), this.vm);\n }\n }\n // two-way sync for v-for alias\n var forContext = scope.$forContext;\n if (forContext && forContext.alias === this.expression) {\n if (forContext.filters) {\n process.env.NODE_ENV !== 'production' && warn('It seems you are using two-way binding on ' + 'a v-for alias (' + this.expression + '), and the ' + 'v-for has filters. This will not work properly. ' + 'Either remove the filters or use an array of ' + 'objects and bind to object properties instead.', this.vm);\n return;\n }\n forContext._withLock(function () {\n if (scope.$key) {\n // original is an object\n forContext.rawValue[scope.$key] = value;\n } else {\n forContext.rawValue.$set(scope.$index, value);\n }\n });\n }\n};\n\n/**\n * Prepare for dependency collection.\n */\n\nWatcher.prototype.beforeGet = function () {\n Dep.target = this;\n};\n\n/**\n * Add a dependency to this directive.\n *\n * @param {Dep} dep\n */\n\nWatcher.prototype.addDep = function (dep) {\n var id = dep.id;\n if (!this.newDepIds.has(id)) {\n this.newDepIds.add(id);\n this.newDeps.push(dep);\n if (!this.depIds.has(id)) {\n dep.addSub(this);\n }\n }\n};\n\n/**\n * Clean up for dependency collection.\n */\n\nWatcher.prototype.afterGet = function () {\n Dep.target = null;\n var i = this.deps.length;\n while (i--) {\n var dep = this.deps[i];\n if (!this.newDepIds.has(dep.id)) {\n dep.removeSub(this);\n }\n }\n var tmp = this.depIds;\n this.depIds = this.newDepIds;\n this.newDepIds = tmp;\n this.newDepIds.clear();\n tmp = this.deps;\n this.deps = this.newDeps;\n this.newDeps = tmp;\n this.newDeps.length = 0;\n};\n\n/**\n * Subscriber interface.\n * Will be called when a dependency changes.\n *\n * @param {Boolean} shallow\n */\n\nWatcher.prototype.update = function (shallow) {\n if (this.lazy) {\n this.dirty = true;\n } else if (this.sync || !config.async) {\n this.run();\n } else {\n // if queued, only overwrite shallow with non-shallow,\n // but not the other way around.\n this.shallow = this.queued ? shallow ? this.shallow : false : !!shallow;\n this.queued = true;\n // record before-push error stack in debug mode\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.debug) {\n this.prevError = new Error('[vue] async stack trace');\n }\n pushWatcher(this);\n }\n};\n\n/**\n * Batcher job interface.\n * Will be called by the batcher.\n */\n\nWatcher.prototype.run = function () {\n if (this.active) {\n var value = this.get();\n if (value !== this.value ||\n // Deep watchers and watchers on Object/Arrays should fire even\n // when the value is the same, because the value may\n // have mutated; but only do so if this is a\n // non-shallow update (caused by a vm digest).\n (isObject(value) || this.deep) && !this.shallow) {\n // set new value\n var oldValue = this.value;\n this.value = value;\n // in debug + async mode, when a watcher callbacks\n // throws, we also throw the saved before-push error\n // so the full cross-tick stack trace is available.\n var prevError = this.prevError;\n /* istanbul ignore if */\n if (process.env.NODE_ENV !== 'production' && config.debug && prevError) {\n this.prevError = null;\n try {\n this.cb.call(this.vm, value, oldValue);\n } catch (e) {\n nextTick(function () {\n throw prevError;\n }, 0);\n throw e;\n }\n } else {\n this.cb.call(this.vm, value, oldValue);\n }\n }\n this.queued = this.shallow = false;\n }\n};\n\n/**\n * Evaluate the value of the watcher.\n * This only gets called for lazy watchers.\n */\n\nWatcher.prototype.evaluate = function () {\n // avoid overwriting another watcher that is being\n // collected.\n var current = Dep.target;\n this.value = this.get();\n this.dirty = false;\n Dep.target = current;\n};\n\n/**\n * Depend on all deps collected by this watcher.\n */\n\nWatcher.prototype.depend = function () {\n var i = this.deps.length;\n while (i--) {\n this.deps[i].depend();\n }\n};\n\n/**\n * Remove self from all dependencies' subcriber list.\n */\n\nWatcher.prototype.teardown = function () {\n if (this.active) {\n // remove self from vm's watcher list\n // this is a somewhat expensive operation so we skip it\n // if the vm is being destroyed or is performing a v-for\n // re-render (the watcher list is then filtered by v-for).\n if (!this.vm._isBeingDestroyed && !this.vm._vForRemoving) {\n this.vm._watchers.$remove(this);\n }\n var i = this.deps.length;\n while (i--) {\n this.deps[i].removeSub(this);\n }\n this.active = false;\n this.vm = this.cb = this.value = null;\n }\n};\n\n/**\n * Recrusively traverse an object to evoke all converted\n * getters, so that every nested property inside the object\n * is collected as a \"deep\" dependency.\n *\n * @param {*} val\n */\n\nvar seenObjects = new _Set();\nfunction traverse(val, seen) {\n var i = undefined,\n keys = undefined;\n if (!seen) {\n seen = seenObjects;\n seen.clear();\n }\n var isA = isArray(val);\n var isO = isObject(val);\n if ((isA || isO) && Object.isExtensible(val)) {\n if (val.__ob__) {\n var depId = val.__ob__.dep.id;\n if (seen.has(depId)) {\n return;\n } else {\n seen.add(depId);\n }\n }\n if (isA) {\n i = val.length;\n while (i--) traverse(val[i], seen);\n } else if (isO) {\n keys = Object.keys(val);\n i = keys.length;\n while (i--) traverse(val[keys[i]], seen);\n }\n }\n}\n\nvar text$1 = {\n\n bind: function bind() {\n this.attr = this.el.nodeType === 3 ? 'data' : 'textContent';\n },\n\n update: function update(value) {\n this.el[this.attr] = _toString(value);\n }\n};\n\nvar templateCache = new Cache(1000);\nvar idSelectorCache = new Cache(1000);\n\nvar map = {\n efault: [0, '', ''],\n legend: [1, '', ''],\n tr: [2, '', ''],\n col: [2, '', '']\n};\n\nmap.td = map.th = [3, '', ''];\n\nmap.option = map.optgroup = [1, '', ''];\n\nmap.thead = map.tbody = map.colgroup = map.caption = map.tfoot = [1, '', ''];\n\nmap.g = map.defs = map.symbol = map.use = map.image = map.text = map.circle = map.ellipse = map.line = map.path = map.polygon = map.polyline = map.rect = [1, '', ''];\n\n/**\n * Check if a node is a supported template node with a\n * DocumentFragment content.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\nfunction isRealTemplate(node) {\n return isTemplate(node) && isFragment(node.content);\n}\n\nvar tagRE$1 = /<([\\w:-]+)/;\nvar entityRE = /?\\w+?;/;\nvar commentRE = /