(function(){var a=Function.prototype.call,b=Object.prototype,h=Array.prototype.slice,m,f;if(!Function.prototype.bind)Function.prototype.bind=function(a){var f=this;if("function"!=typeof f)throw new TypeError;var k=h.call(arguments,1),l=function(){if(this instanceof l){var c=function(){};c.prototype=f.prototype;var c=new c,b=f.apply(c,k.concat(h.call(arguments)));return null!==b&&Object(b)===b?b:c}return f.apply(a,k.concat(h.call(arguments)))};return l};f=a.bind(b.toString);m=a.bind(b.hasOwnProperty); if(!Array.isArray)Array.isArray=function(a){return"[object Array]"==f(a)};if(!Array.prototype.forEach)Array.prototype.forEach=function(a,c){var k=q(this),l=0,b=k.length>>>0;if("[object Function]"!=f(a))throw new TypeError;for(;l>>0,b=Array(l);if("[object Function]"!=f(a))throw new TypeError;for(var g=0;g>>0,b=[];if("[object Function]"!=f(a))throw new TypeError;for(var g=0;g>>0;if("[object Function]"!=f(a))throw new TypeError;for(var b=0;b>>0;if("[object Function]"!=f(a))throw new TypeError; for(var b=0;b>>0;if("[object Function]"!=f(a))throw new TypeError;if(!k&&1==arguments.length)throw new TypeError;var c=0,g;if(2<=arguments.length)g=arguments[1];else{do{if(c in b){g=b[c++];break}if(++c>=k)throw new TypeError;}while(1)}for(;c>>0;if("[object Function]"!=f(a))throw new TypeError;if(!b&&1==arguments.length)throw new TypeError;var g,b=b-1;if(2<=arguments.length)g=arguments[1];else{do{if(b in c){g=c[b--];break}if(0>--b)throw new TypeError;}while(1)}do b in this&&(g=a.call(void 0,g,c[b],b,c));while(b--);return g};if(!Array.prototype.indexOf)Array.prototype.indexOf=function(a){var b=q(this),c=b.length>>>0;if(!c)return-1;var f=0;1>>0;if(!c)return-1;var f=c-1;1b&&(a[f]="0"+b);return a.slice(0,3).join("-")+"T"+ a.slice(3).join(":")+"."+("000"+this.getUTCMilliseconds()).slice(-3)+"Z"};if(!Date.now)Date.now=function(){return(new Date).getTime()};if(!Date.prototype.toJSON)Date.prototype.toJSON=function(){if("function"!=typeof this.toISOString)throw new TypeError;return this.toISOString()};a="\t\n\u000b\u000c\r \u00a0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029\ufeff";if(!String.prototype.trim||a.trim()){var a="["+a+"]",p=RegExp("^"+a+a+"*"),x= RegExp(a+a+"*$");String.prototype.trim=function(){return(""+this).replace(p,"").replace(x,"")}}var r=function(a){a=+a;a!==a?a=-1:0!==a&&a!==1/0&&a!==-(1/0)&&(a=(0h&&7