"!==l[1]||kb.test(f)?0:h:h.firstChild,e=f&&f.childNodes.length;while(e--)m.nodeName(j=f.childNodes[e],"tbody")&&!j.childNodes.length&&f.removeChild(j)}m.merge(p,h.childNodes),h.textContent="";while(h.firstChild)h.removeChild(h.firstChild);h=o.lastChild}else p.push(b.createTextNode(f));h&&o.removeChild(h),k.appendChecked||m.grep(ub(p,"input"),vb),q=0;while(f=p[q++])if((!d||-1===m.inArray(f,d))&&(g=m.contains(f.ownerDocument,f),h=ub(o.appendChild(f),"script"),g&&zb(h),c)){e=0;while(f=h[e++])ob.test(f.type||"")&&c.push(f)}return h=null,o},cleanData:function(a,b){for(var d,e,f,g,h=0,i=m.expando,j=m.cache,l=k.deleteExpando,n=m.event.special;null!=(d=a[h]);h++)if((b||m.acceptData(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)n[e]?m.event.remove(d,e):m.removeEvent(d,e,g.handle);j[f]&&(delete j[f],l?delete d[i]:typeof d.removeAttribute!==K?d.removeAttribute(i):d[i]=null,c.push(f))}}}),m.fn.extend({text:function(a){return V(this,function(a){return void 0===a?m.text(this):this.empty().append((this[0]&&this[0].ownerDocument||y).createTextNode(a))},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=wb(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?m.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||m.cleanData(ub(c)),c.parentNode&&(b&&m.contains(c.ownerDocument,c)&&zb(ub(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&m.cleanData(ub(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&m.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return m.clone(this,a,b)})},html:function(a){return V(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(fb,""):void 0;if(!("string"!=typeof a||mb.test(a)||!k.htmlSerialize&&gb.test(a)||!k.leadingWhitespace&&hb.test(a)||rb[(jb.exec(a)||["",""])[1].toLowerCase()])){a=a.replace(ib,"<$1>$2>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(m.cleanData(ub(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,m.cleanData(ub(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,n=this,o=l-1,p=a[0],q=m.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&nb.test(p))return this.each(function(c){var d=n.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(i=m.buildFragment(a,this[0].ownerDocument,!1,this),c=i.firstChild,1===i.childNodes.length&&(i=c),c)){for(g=m.map(ub(i,"script"),xb),f=g.length;l>j;j++)d=i,j!==o&&(d=m.clone(d,!0,!0),f&&m.merge(g,ub(d,"script"))),b.call(this[j],d,j);if(f)for(h=g[g.length-1].ownerDocument,m.map(g,yb),j=0;f>j;j++)d=g[j],ob.test(d.type||"")&&!m._data(d,"globalEval")&&m.contains(h,d)&&(d.src?m._evalUrl&&m._evalUrl(d.src):m.globalEval((d.text||d.textContent||d.innerHTML||"").replace(qb,"")));i=c=null}return this}}),m.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){m.fn[a]=function(a){for(var c,d=0,e=[],g=m(a),h=g.length-1;h>=d;d++)c=d===h?this:this.clone(!0),m(g[d])[b](c),f.apply(e,c.get());return this.pushStack(e)}});var Cb,Db={};function Eb(b,c){var d,e=m(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:m.css(e[0],"display");return e.detach(),f}function Fb(a){var b=y,c=Db[a];return c||(c=Eb(a,b),"none"!==c&&c||(Cb=(Cb||m("")).appendTo(b.documentElement),b=(Cb[0].contentWindow||Cb[0].contentDocument).document,b.write(),b.close(),c=Eb(a,b),Cb.detach()),Db[a]=c),c}!function(){var a;k.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,d;return c=y.getElementsByTagName("body")[0],c&&c.style?(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),typeof b.style.zoom!==K&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(y.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(d),a):void 0}}();var Gb=/^margin/,Hb=new RegExp("^("+S+")(?!px)[a-z%]+$","i"),Ib,Jb,Kb=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ib=function(a){return a.ownerDocument.defaultView.getComputedStyle(a,null)},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c.getPropertyValue(b)||c[b]:void 0,c&&(""!==g||m.contains(a.ownerDocument,a)||(g=m.style(a,b)),Hb.test(g)&&Gb.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f)),void 0===g?g:g+""}):y.documentElement.currentStyle&&(Ib=function(a){return a.currentStyle},Jb=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ib(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Hb.test(g)&&!Kb.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Lb(a,b){return{get:function(){var c=a();if(null!=c)return c?void delete this.get:(this.get=b).apply(this,arguments)}}}!function(){var b,c,d,e,f,g,h;if(b=y.createElement("div"),b.innerHTML=" a ",d=b.getElementsByTagName("a")[0],c=d&&d.style){c.cssText="float:left;opacity:.5",k.opacity="0.5"===c.opacity,k.cssFloat=!!c.cssFloat,b.style.backgroundClip="content-box",b.cloneNode(!0).style.backgroundClip="",k.clearCloneStyle="content-box"===b.style.backgroundClip,k.boxSizing=""===c.boxSizing||""===c.MozBoxSizing||""===c.WebkitBoxSizing,m.extend(k,{reliableHiddenOffsets:function(){return null==g&&i(),g},boxSizingReliable:function(){return null==f&&i(),f},pixelPosition:function(){return null==e&&i(),e},reliableMarginRight:function(){return null==h&&i(),h}});function i(){var b,c,d,i;c=y.getElementsByTagName("body")[0],c&&c.style&&(b=y.createElement("div"),d=y.createElement("div"),d.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(d).appendChild(b),b.style.cssText="-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;display:block;margin-top:1%;top:1%;border:1px;padding:1px;width:4px;position:absolute",e=f=!1,h=!0,a.getComputedStyle&&(e="1%"!==(a.getComputedStyle(b,null)||{}).top,f="4px"===(a.getComputedStyle(b,null)||{width:"4px"}).width,i=b.appendChild(y.createElement("div")),i.style.cssText=b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",i.style.marginRight=i.style.width="0",b.style.width="1px",h=!parseFloat((a.getComputedStyle(i,null)||{}).marginRight)),b.innerHTML="",i=b.getElementsByTagName("td"),i[0].style.cssText="margin:0;border:0;padding:0;display:none",g=0===i[0].offsetHeight,g&&(i[0].style.display="",i[1].style.display="none",g=0===i[0].offsetHeight),c.removeChild(d))}}}(),m.swap=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e};var Mb=/alpha\([^)]*\)/i,Nb=/opacity\s*=\s*([^)]*)/,Ob=/^(none|table(?!-c[ea]).+)/,Pb=new RegExp("^("+S+")(.*)$","i"),Qb=new RegExp("^([+-])=("+S+")","i"),Rb={position:"absolute",visibility:"hidden",display:"block"},Sb={letterSpacing:"0",fontWeight:"400"},Tb=["Webkit","O","Moz","ms"];function Ub(a,b){if(b in a)return b;var c=b.charAt(0).toUpperCase()+b.slice(1),d=b,e=Tb.length;while(e--)if(b=Tb[e]+c,b in a)return b;return d}function Vb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=m._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&U(d)&&(f[g]=m._data(d,"olddisplay",Fb(d.nodeName)))):(e=U(d),(c&&"none"!==c||!e)&&m._data(d,"olddisplay",e?c:m.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function Wb(a,b,c){var d=Pb.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function Xb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=m.css(a,c+T[f],!0,e)),d?("content"===c&&(g-=m.css(a,"padding"+T[f],!0,e)),"margin"!==c&&(g-=m.css(a,"border"+T[f]+"Width",!0,e))):(g+=m.css(a,"padding"+T[f],!0,e),"padding"!==c&&(g+=m.css(a,"border"+T[f]+"Width",!0,e)));return g}function Yb(a,b,c){var d=!0,e="width"===b?a.offsetWidth:a.offsetHeight,f=Ib(a),g=k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,f);if(0>=e||null==e){if(e=Jb(a,b,f),(0>e||null==e)&&(e=a.style[b]),Hb.test(e))return e;d=g&&(k.boxSizingReliable()||e===a.style[b]),e=parseFloat(e)||0}return e+Xb(a,b,c||(g?"border":"content"),d,f)+"px"}m.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Jb(a,"opacity");return""===c?"1":c}}}},cssNumber:{columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":k.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=m.camelCase(b),i=a.style;if(b=m.cssProps[h]||(m.cssProps[h]=Ub(i,h)),g=m.cssHooks[b]||m.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=Qb.exec(c))&&(c=(e[1]+1)*e[2]+parseFloat(m.css(a,b)),f="number"),null!=c&&c===c&&("number"!==f||m.cssNumber[h]||(c+="px"),k.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=m.camelCase(b);return b=m.cssProps[h]||(m.cssProps[h]=Ub(a.style,h)),g=m.cssHooks[b]||m.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Jb(a,b,d)),"normal"===f&&b in Sb&&(f=Sb[b]),""===c||c?(e=parseFloat(f),c===!0||m.isNumeric(e)?e||0:f):f}}),m.each(["height","width"],function(a,b){m.cssHooks[b]={get:function(a,c,d){return c?Ob.test(m.css(a,"display"))&&0===a.offsetWidth?m.swap(a,Rb,function(){return Yb(a,b,d)}):Yb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ib(a);return Wb(a,c,d?Xb(a,b,d,k.boxSizing&&"border-box"===m.css(a,"boxSizing",!1,e),e):0)}}}),k.opacity||(m.cssHooks.opacity={get:function(a,b){return Nb.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=m.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===m.trim(f.replace(Mb,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Mb.test(f)?f.replace(Mb,e):f+" "+e)}}),m.cssHooks.marginRight=Lb(k.reliableMarginRight,function(a,b){return b?m.swap(a,{display:"inline-block"},Jb,[a,"marginRight"]):void 0}),m.each({margin:"",padding:"",border:"Width"},function(a,b){m.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+T[d]+b]=f[d]||f[d-2]||f[0];return e}},Gb.test(a)||(m.cssHooks[a+b].set=Wb)}),m.fn.extend({css:function(a,b){return V(this,function(a,b,c){var d,e,f={},g=0;if(m.isArray(b)){for(d=Ib(a),e=b.length;e>g;g++)f[b[g]]=m.css(a,b[g],!1,d);return f}return void 0!==c?m.style(a,b,c):m.css(a,b)},a,b,arguments.length>1)},show:function(){return Vb(this,!0)},hide:function(){return Vb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){U(this)?m(this).show():m(this).hide()})}});function Zb(a,b,c,d,e){return new Zb.prototype.init(a,b,c,d,e)}m.Tween=Zb,Zb.prototype={constructor:Zb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||"swing",this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(m.cssNumber[c]?"":"px")
-},cur:function(){var a=Zb.propHooks[this.prop];return a&&a.get?a.get(this):Zb.propHooks._default.get(this)},run:function(a){var b,c=Zb.propHooks[this.prop];return this.pos=b=this.options.duration?m.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):Zb.propHooks._default.set(this),this}},Zb.prototype.init.prototype=Zb.prototype,Zb.propHooks={_default:{get:function(a){var b;return null==a.elem[a.prop]||a.elem.style&&null!=a.elem.style[a.prop]?(b=m.css(a.elem,a.prop,""),b&&"auto"!==b?b:0):a.elem[a.prop]},set:function(a){m.fx.step[a.prop]?m.fx.step[a.prop](a):a.elem.style&&(null!=a.elem.style[m.cssProps[a.prop]]||m.cssHooks[a.prop])?m.style(a.elem,a.prop,a.now+a.unit):a.elem[a.prop]=a.now}}},Zb.propHooks.scrollTop=Zb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},m.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2}},m.fx=Zb.prototype.init,m.fx.step={};var $b,_b,ac=/^(?:toggle|show|hide)$/,bc=new RegExp("^(?:([+-])=|)("+S+")([a-z%]*)$","i"),cc=/queueHooks$/,dc=[ic],ec={"*":[function(a,b){var c=this.createTween(a,b),d=c.cur(),e=bc.exec(b),f=e&&e[3]||(m.cssNumber[a]?"":"px"),g=(m.cssNumber[a]||"px"!==f&&+d)&&bc.exec(m.css(c.elem,a)),h=1,i=20;if(g&&g[3]!==f){f=f||g[3],e=e||[],g=+d||1;do h=h||".5",g/=h,m.style(c.elem,a,g+f);while(h!==(h=c.cur()/d)&&1!==h&&--i)}return e&&(g=c.start=+g||+d||0,c.unit=f,c.end=e[1]?g+(e[1]+1)*e[2]:+e[2]),c}]};function fc(){return setTimeout(function(){$b=void 0}),$b=m.now()}function gc(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=T[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function hc(a,b,c){for(var d,e=(ec[b]||[]).concat(ec["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ic(a,b,c){var d,e,f,g,h,i,j,l,n=this,o={},p=a.style,q=a.nodeType&&U(a),r=m._data(a,"fxshow");c.queue||(h=m._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,n.always(function(){n.always(function(){h.unqueued--,m.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=m.css(a,"display"),l="none"===j?m._data(a,"olddisplay")||Fb(a.nodeName):j,"inline"===l&&"none"===m.css(a,"float")&&(k.inlineBlockNeedsLayout&&"inline"!==Fb(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",k.shrinkWrapBlocks()||n.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],ac.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||m.style(a,d)}else j=void 0;if(m.isEmptyObject(o))"inline"===("none"===j?Fb(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=m._data(a,"fxshow",{}),f&&(r.hidden=!q),q?m(a).show():n.done(function(){m(a).hide()}),n.done(function(){var b;m._removeData(a,"fxshow");for(b in o)m.style(a,b,o[b])});for(d in o)g=hc(q?r[d]:0,d,n),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function jc(a,b){var c,d,e,f,g;for(c in a)if(d=m.camelCase(c),e=b[d],f=a[c],m.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=m.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function kc(a,b,c){var d,e,f=0,g=dc.length,h=m.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=$b||fc(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:m.extend({},b),opts:m.extend(!0,{specialEasing:{}},c),originalProperties:b,originalOptions:c,startTime:$b||fc(),duration:c.duration,tweens:[],createTween:function(b,c){var d=m.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?h.resolveWith(a,[j,b]):h.rejectWith(a,[j,b]),this}}),k=j.props;for(jc(k,j.opts.specialEasing);g>f;f++)if(d=dc[f].call(j,a,k,j.opts))return d;return m.map(k,hc,j),m.isFunction(j.opts.start)&&j.opts.start.call(a,j),m.fx.timer(m.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}m.Animation=m.extend(kc,{tweener:function(a,b){m.isFunction(a)?(b=a,a=["*"]):a=a.split(" ");for(var c,d=0,e=a.length;e>d;d++)c=a[d],ec[c]=ec[c]||[],ec[c].unshift(b)},prefilter:function(a,b){b?dc.unshift(a):dc.push(a)}}),m.speed=function(a,b,c){var d=a&&"object"==typeof a?m.extend({},a):{complete:c||!c&&b||m.isFunction(a)&&a,duration:a,easing:c&&b||b&&!m.isFunction(b)&&b};return d.duration=m.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in m.fx.speeds?m.fx.speeds[d.duration]:m.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){m.isFunction(d.old)&&d.old.call(this),d.queue&&m.dequeue(this,d.queue)},d},m.fn.extend({fadeTo:function(a,b,c,d){return this.filter(U).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=m.isEmptyObject(a),f=m.speed(b,c,d),g=function(){var b=kc(this,m.extend({},a),f);(e||m._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=m.timers,g=m._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&cc.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&m.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=m._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=m.timers,g=d?d.length:0;for(c.finish=!0,m.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),m.each(["toggle","show","hide"],function(a,b){var c=m.fn[b];m.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(gc(b,!0),a,d,e)}}),m.each({slideDown:gc("show"),slideUp:gc("hide"),slideToggle:gc("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){m.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),m.timers=[],m.fx.tick=function(){var a,b=m.timers,c=0;for($b=m.now();ca ",d=b.getElementsByTagName("a")[0],c=y.createElement("select"),e=c.appendChild(y.createElement("option")),a=b.getElementsByTagName("input")[0],d.style.cssText="top:1px",k.getSetAttribute="t"!==b.className,k.style=/top/.test(d.getAttribute("style")),k.hrefNormalized="/a"===d.getAttribute("href"),k.checkOn=!!a.value,k.optSelected=e.selected,k.enctype=!!y.createElement("form").enctype,c.disabled=!0,k.optDisabled=!e.disabled,a=y.createElement("input"),a.setAttribute("value",""),k.input=""===a.getAttribute("value"),a.value="t",a.setAttribute("type","radio"),k.radioValue="t"===a.value}();var lc=/\r/g;m.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=m.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,m(this).val()):a,null==e?e="":"number"==typeof e?e+="":m.isArray(e)&&(e=m.map(e,function(a){return null==a?"":a+""})),b=m.valHooks[this.type]||m.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=m.valHooks[e.type]||m.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(lc,""):null==c?"":c)}}}),m.extend({valHooks:{option:{get:function(a){var b=m.find.attr(a,"value");return null!=b?b:m.trim(m.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],!(!c.selected&&i!==e||(k.optDisabled?c.disabled:null!==c.getAttribute("disabled"))||c.parentNode.disabled&&m.nodeName(c.parentNode,"optgroup"))){if(b=m(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=m.makeArray(b),g=e.length;while(g--)if(d=e[g],m.inArray(m.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),m.each(["radio","checkbox"],function(){m.valHooks[this]={set:function(a,b){return m.isArray(b)?a.checked=m.inArray(m(a).val(),b)>=0:void 0}},k.checkOn||(m.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var mc,nc,oc=m.expr.attrHandle,pc=/^(?:checked|selected)$/i,qc=k.getSetAttribute,rc=k.input;m.fn.extend({attr:function(a,b){return V(this,m.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){m.removeAttr(this,a)})}}),m.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(a&&3!==f&&8!==f&&2!==f)return typeof a.getAttribute===K?m.prop(a,b,c):(1===f&&m.isXMLDoc(a)||(b=b.toLowerCase(),d=m.attrHooks[b]||(m.expr.match.bool.test(b)?nc:mc)),void 0===c?d&&"get"in d&&null!==(e=d.get(a,b))?e:(e=m.find.attr(a,b),null==e?void 0:e):null!==c?d&&"set"in d&&void 0!==(e=d.set(a,c,b))?e:(a.setAttribute(b,c+""),c):void m.removeAttr(a,b))},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(E);if(f&&1===a.nodeType)while(c=f[e++])d=m.propFix[c]||c,m.expr.match.bool.test(c)?rc&&qc||!pc.test(c)?a[d]=!1:a[m.camelCase("default-"+c)]=a[d]=!1:m.attr(a,c,""),a.removeAttribute(qc?c:d)},attrHooks:{type:{set:function(a,b){if(!k.radioValue&&"radio"===b&&m.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}}}),nc={set:function(a,b,c){return b===!1?m.removeAttr(a,c):rc&&qc||!pc.test(c)?a.setAttribute(!qc&&m.propFix[c]||c,c):a[m.camelCase("default-"+c)]=a[c]=!0,c}},m.each(m.expr.match.bool.source.match(/\w+/g),function(a,b){var c=oc[b]||m.find.attr;oc[b]=rc&&qc||!pc.test(b)?function(a,b,d){var e,f;return d||(f=oc[b],oc[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,oc[b]=f),e}:function(a,b,c){return c?void 0:a[m.camelCase("default-"+b)]?b.toLowerCase():null}}),rc&&qc||(m.attrHooks.value={set:function(a,b,c){return m.nodeName(a,"input")?void(a.defaultValue=b):mc&&mc.set(a,b,c)}}),qc||(mc={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},oc.id=oc.name=oc.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},m.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:mc.set},m.attrHooks.contenteditable={set:function(a,b,c){mc.set(a,""===b?!1:b,c)}},m.each(["width","height"],function(a,b){m.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),k.style||(m.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var sc=/^(?:input|select|textarea|button|object)$/i,tc=/^(?:a|area)$/i;m.fn.extend({prop:function(a,b){return V(this,m.prop,a,b,arguments.length>1)},removeProp:function(a){return a=m.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),m.extend({propFix:{"for":"htmlFor","class":"className"},prop:function(a,b,c){var d,e,f,g=a.nodeType;if(a&&3!==g&&8!==g&&2!==g)return f=1!==g||!m.isXMLDoc(a),f&&(b=m.propFix[b]||b,e=m.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=m.find.attr(a,"tabindex");return b?parseInt(b,10):sc.test(a.nodeName)||tc.test(a.nodeName)&&a.href?0:-1}}}}),k.hrefNormalized||m.each(["href","src"],function(a,b){m.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),k.optSelected||(m.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),m.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){m.propFix[this.toLowerCase()]=this}),k.enctype||(m.propFix.enctype="encoding");var uc=/[\t\r\n\f]/g;m.fn.extend({addClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j="string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).addClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):" ")){f=0;while(e=b[f++])d.indexOf(" "+e+" ")<0&&(d+=e+" ");g=m.trim(d),c.className!==g&&(c.className=g)}return this},removeClass:function(a){var b,c,d,e,f,g,h=0,i=this.length,j=0===arguments.length||"string"==typeof a&&a;if(m.isFunction(a))return this.each(function(b){m(this).removeClass(a.call(this,b,this.className))});if(j)for(b=(a||"").match(E)||[];i>h;h++)if(c=this[h],d=1===c.nodeType&&(c.className?(" "+c.className+" ").replace(uc," "):"")){f=0;while(e=b[f++])while(d.indexOf(" "+e+" ")>=0)d=d.replace(" "+e+" "," ");g=a?m.trim(d):"",c.className!==g&&(c.className=g)}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):this.each(m.isFunction(a)?function(c){m(this).toggleClass(a.call(this,c,this.className,b),b)}:function(){if("string"===c){var b,d=0,e=m(this),f=a.match(E)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(c===K||"boolean"===c)&&(this.className&&m._data(this,"__className__",this.className),this.className=this.className||a===!1?"":m._data(this,"__className__")||"")})},hasClass:function(a){for(var b=" "+a+" ",c=0,d=this.length;d>c;c++)if(1===this[c].nodeType&&(" "+this[c].className+" ").replace(uc," ").indexOf(b)>=0)return!0;return!1}}),m.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){m.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),m.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}});var vc=m.now(),wc=/\?/,xc=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;m.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=m.trim(b+"");return e&&!m.trim(e.replace(xc,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():m.error("Invalid JSON: "+b)},m.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new DOMParser,c=d.parseFromString(b,"text/xml")):(c=new ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||m.error("Invalid XML: "+b),c};var yc,zc,Ac=/#.*$/,Bc=/([?&])_=[^&]*/,Cc=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Dc=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Ec=/^(?:GET|HEAD)$/,Fc=/^\/\//,Gc=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Hc={},Ic={},Jc="*/".concat("*");try{zc=location.href}catch(Kc){zc=y.createElement("a"),zc.href="",zc=zc.href}yc=Gc.exec(zc.toLowerCase())||[];function Lc(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(E)||[];if(m.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Mc(a,b,c,d){var e={},f=a===Ic;function g(h){var i;return e[h]=!0,m.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Nc(a,b){var c,d,e=m.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&m.extend(!0,a,c),a}function Oc(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Pc(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}m.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:zc,type:"GET",isLocal:Dc.test(yc[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Jc,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":m.parseJSON,"text xml":m.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Nc(Nc(a,m.ajaxSettings),b):Nc(m.ajaxSettings,a)},ajaxPrefilter:Lc(Hc),ajaxTransport:Lc(Ic),ajax:function(a,b){"object"==typeof a&&(b=a,a=void 0),b=b||{};var c,d,e,f,g,h,i,j,k=m.ajaxSetup({},b),l=k.context||k,n=k.context&&(l.nodeType||l.jquery)?m(l):m.event,o=m.Deferred(),p=m.Callbacks("once memory"),q=k.statusCode||{},r={},s={},t=0,u="canceled",v={readyState:0,getResponseHeader:function(a){var b;if(2===t){if(!j){j={};while(b=Cc.exec(f))j[b[1].toLowerCase()]=b[2]}b=j[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===t?f:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return t||(a=s[c]=s[c]||a,r[a]=b),this},overrideMimeType:function(a){return t||(k.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>t)for(b in a)q[b]=[q[b],a[b]];else v.always(a[v.status]);return this},abort:function(a){var b=a||u;return i&&i.abort(b),x(0,b),this}};if(o.promise(v).complete=p.add,v.success=v.done,v.error=v.fail,k.url=((a||k.url||zc)+"").replace(Ac,"").replace(Fc,yc[1]+"//"),k.type=b.method||b.type||k.method||k.type,k.dataTypes=m.trim(k.dataType||"*").toLowerCase().match(E)||[""],null==k.crossDomain&&(c=Gc.exec(k.url.toLowerCase()),k.crossDomain=!(!c||c[1]===yc[1]&&c[2]===yc[2]&&(c[3]||("http:"===c[1]?"80":"443"))===(yc[3]||("http:"===yc[1]?"80":"443")))),k.data&&k.processData&&"string"!=typeof k.data&&(k.data=m.param(k.data,k.traditional)),Mc(Hc,k,b,v),2===t)return v;h=k.global,h&&0===m.active++&&m.event.trigger("ajaxStart"),k.type=k.type.toUpperCase(),k.hasContent=!Ec.test(k.type),e=k.url,k.hasContent||(k.data&&(e=k.url+=(wc.test(e)?"&":"?")+k.data,delete k.data),k.cache===!1&&(k.url=Bc.test(e)?e.replace(Bc,"$1_="+vc++):e+(wc.test(e)?"&":"?")+"_="+vc++)),k.ifModified&&(m.lastModified[e]&&v.setRequestHeader("If-Modified-Since",m.lastModified[e]),m.etag[e]&&v.setRequestHeader("If-None-Match",m.etag[e])),(k.data&&k.hasContent&&k.contentType!==!1||b.contentType)&&v.setRequestHeader("Content-Type",k.contentType),v.setRequestHeader("Accept",k.dataTypes[0]&&k.accepts[k.dataTypes[0]]?k.accepts[k.dataTypes[0]]+("*"!==k.dataTypes[0]?", "+Jc+"; q=0.01":""):k.accepts["*"]);for(d in k.headers)v.setRequestHeader(d,k.headers[d]);if(k.beforeSend&&(k.beforeSend.call(l,v,k)===!1||2===t))return v.abort();u="abort";for(d in{success:1,error:1,complete:1})v[d](k[d]);if(i=Mc(Ic,k,b,v)){v.readyState=1,h&&n.trigger("ajaxSend",[v,k]),k.async&&k.timeout>0&&(g=setTimeout(function(){v.abort("timeout")},k.timeout));try{t=1,i.send(r,x)}catch(w){if(!(2>t))throw w;x(-1,w)}}else x(-1,"No Transport");function x(a,b,c,d){var j,r,s,u,w,x=b;2!==t&&(t=2,g&&clearTimeout(g),i=void 0,f=d||"",v.readyState=a>0?4:0,j=a>=200&&300>a||304===a,c&&(u=Oc(k,v,c)),u=Pc(k,u,v,j),j?(k.ifModified&&(w=v.getResponseHeader("Last-Modified"),w&&(m.lastModified[e]=w),w=v.getResponseHeader("etag"),w&&(m.etag[e]=w)),204===a||"HEAD"===k.type?x="nocontent":304===a?x="notmodified":(x=u.state,r=u.data,s=u.error,j=!s)):(s=x,(a||!x)&&(x="error",0>a&&(a=0))),v.status=a,v.statusText=(b||x)+"",j?o.resolveWith(l,[r,x,v]):o.rejectWith(l,[v,x,s]),v.statusCode(q),q=void 0,h&&n.trigger(j?"ajaxSuccess":"ajaxError",[v,k,j?r:s]),p.fireWith(l,[v,x]),h&&(n.trigger("ajaxComplete",[v,k]),--m.active||m.event.trigger("ajaxStop")))}return v},getJSON:function(a,b,c){return m.get(a,b,c,"json")},getScript:function(a,b){return m.get(a,void 0,b,"script")}}),m.each(["get","post"],function(a,b){m[b]=function(a,c,d,e){return m.isFunction(c)&&(e=e||d,d=c,c=void 0),m.ajax({url:a,type:b,dataType:e,data:c,success:d})}}),m.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){m.fn[b]=function(a){return this.on(b,a)}}),m._evalUrl=function(a){return m.ajax({url:a,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})},m.fn.extend({wrapAll:function(a){if(m.isFunction(a))return this.each(function(b){m(this).wrapAll(a.call(this,b))});if(this[0]){var b=m(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return this.each(m.isFunction(a)?function(b){m(this).wrapInner(a.call(this,b))}:function(){var b=m(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=m.isFunction(a);return this.each(function(c){m(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){m.nodeName(this,"body")||m(this).replaceWith(this.childNodes)}).end()}}),m.expr.filters.hidden=function(a){return a.offsetWidth<=0&&a.offsetHeight<=0||!k.reliableHiddenOffsets()&&"none"===(a.style&&a.style.display||m.css(a,"display"))},m.expr.filters.visible=function(a){return!m.expr.filters.hidden(a)};var Qc=/%20/g,Rc=/\[\]$/,Sc=/\r?\n/g,Tc=/^(?:submit|button|image|reset|file)$/i,Uc=/^(?:input|select|textarea|keygen)/i;function Vc(a,b,c,d){var e;if(m.isArray(b))m.each(b,function(b,e){c||Rc.test(a)?d(a,e):Vc(a+"["+("object"==typeof e?b:"")+"]",e,c,d)});else if(c||"object"!==m.type(b))d(a,b);else for(e in b)Vc(a+"["+e+"]",b[e],c,d)}m.param=function(a,b){var c,d=[],e=function(a,b){b=m.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=m.ajaxSettings&&m.ajaxSettings.traditional),m.isArray(a)||a.jquery&&!m.isPlainObject(a))m.each(a,function(){e(this.name,this.value)});else for(c in a)Vc(c,a[c],b,e);return d.join("&").replace(Qc,"+")},m.fn.extend({serialize:function(){return m.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=m.prop(this,"elements");return a?m.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!m(this).is(":disabled")&&Uc.test(this.nodeName)&&!Tc.test(a)&&(this.checked||!W.test(a))}).map(function(a,b){var c=m(this).val();return null==c?null:m.isArray(c)?m.map(c,function(a){return{name:b.name,value:a.replace(Sc,"\r\n")}}):{name:b.name,value:c.replace(Sc,"\r\n")}}).get()}}),m.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return!this.isLocal&&/^(get|post|head|put|delete|options)$/i.test(this.type)&&Zc()||$c()}:Zc;var Wc=0,Xc={},Yc=m.ajaxSettings.xhr();a.ActiveXObject&&m(a).on("unload",function(){for(var a in Xc)Xc[a](void 0,!0)}),k.cors=!!Yc&&"withCredentials"in Yc,Yc=k.ajax=!!Yc,Yc&&m.ajaxTransport(function(a){if(!a.crossDomain||k.cors){var b;return{send:function(c,d){var e,f=a.xhr(),g=++Wc;if(f.open(a.type,a.url,a.async,a.username,a.password),a.xhrFields)for(e in a.xhrFields)f[e]=a.xhrFields[e];a.mimeType&&f.overrideMimeType&&f.overrideMimeType(a.mimeType),a.crossDomain||c["X-Requested-With"]||(c["X-Requested-With"]="XMLHttpRequest");for(e in c)void 0!==c[e]&&f.setRequestHeader(e,c[e]+"");f.send(a.hasContent&&a.data||null),b=function(c,e){var h,i,j;if(b&&(e||4===f.readyState))if(delete Xc[g],b=void 0,f.onreadystatechange=m.noop,e)4!==f.readyState&&f.abort();else{j={},h=f.status,"string"==typeof f.responseText&&(j.text=f.responseText);try{i=f.statusText}catch(k){i=""}h||!a.isLocal||a.crossDomain?1223===h&&(h=204):h=j.text?200:404}j&&d(h,i,j,f.getAllResponseHeaders())},a.async?4===f.readyState?setTimeout(b):f.onreadystatechange=Xc[g]=b:b()},abort:function(){b&&b(void 0,!0)}}}});function Zc(){try{return new a.XMLHttpRequest}catch(b){}}function $c(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}m.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/(?:java|ecma)script/},converters:{"text script":function(a){return m.globalEval(a),a}}}),m.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),m.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=y.head||m("head")[0]||y.documentElement;return{send:function(d,e){b=y.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||e(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var _c=[],ad=/(=)\?(?=&|$)|\?\?/;m.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=_c.pop()||m.expando+"_"+vc++;return this[a]=!0,a}}),m.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(ad.test(b.url)?"url":"string"==typeof b.data&&!(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&ad.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=m.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(ad,"$1"+e):b.jsonp!==!1&&(b.url+=(wc.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||m.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,_c.push(e)),g&&m.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),m.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||y;var d=u.exec(a),e=!c&&[];return d?[b.createElement(d[1])]:(d=m.buildFragment([a],b,e),e&&e.length&&m(e).remove(),m.merge([],d.childNodes))};var bd=m.fn.load;m.fn.load=function(a,b,c){if("string"!=typeof a&&bd)return bd.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>=0&&(d=m.trim(a.slice(h,a.length)),a=a.slice(0,h)),m.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(f="POST"),g.length>0&&m.ajax({url:a,type:f,dataType:"html",data:b}).done(function(a){e=arguments,g.html(d?m("").append(m.parseHTML(a)).find(d):a)}).complete(c&&function(a,b){g.each(c,e||[a.responseText,b,a])}),this},m.expr.filters.animated=function(a){return m.grep(m.timers,function(b){return a===b.elem}).length};var cd=a.document.documentElement;function dd(a){return m.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}m.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=m.css(a,"position"),l=m(a),n={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=m.css(a,"top"),i=m.css(a,"left"),j=("absolute"===k||"fixed"===k)&&m.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),m.isFunction(b)&&(b=b.call(a,c,h)),null!=b.top&&(n.top=b.top-h.top+g),null!=b.left&&(n.left=b.left-h.left+e),"using"in b?b.using.call(a,n):l.css(n)}},m.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){m.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,m.contains(b,e)?(typeof e.getBoundingClientRect!==K&&(d=e.getBoundingClientRect()),c=dd(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===m.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),m.nodeName(a[0],"html")||(c=a.offset()),c.top+=m.css(a[0],"borderTopWidth",!0),c.left+=m.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-m.css(d,"marginTop",!0),left:b.left-c.left-m.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||cd;while(a&&!m.nodeName(a,"html")&&"static"===m.css(a,"position"))a=a.offsetParent;return a||cd})}}),m.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);m.fn[a]=function(d){return V(this,function(a,d,e){var f=dd(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?m(f).scrollLeft():e,c?e:m(f).scrollTop()):a[d]=e)},a,d,arguments.length,null)}}),m.each(["top","left"],function(a,b){m.cssHooks[b]=Lb(k.pixelPosition,function(a,c){return c?(c=Jb(a,b),Hb.test(c)?m(a).position()[b]+"px":c):void 0})}),m.each({Height:"height",Width:"width"},function(a,b){m.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){m.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return V(this,function(b,c,d){var e;return m.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?m.css(b,c,g):m.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),m.fn.size=function(){return this.length},m.fn.andSelf=m.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return m});var ed=a.jQuery,fd=a.$;return m.noConflict=function(b){return a.$===m&&(a.$=fd),b&&a.jQuery===m&&(a.jQuery=ed),m},typeof b===K&&(a.jQuery=a.$=m),m});
diff --git a/code/modules/goonchat/browserassets/js/json2.min.js b/code/modules/goonchat/browserassets/js/json2.min.js
deleted file mode 100644
index d867407f265e..000000000000
--- a/code/modules/goonchat/browserassets/js/json2.min.js
+++ /dev/null
@@ -1 +0,0 @@
-"object"!=typeof JSON&&(JSON={}),function(){"use strict";function f(t){return 10>t?"0"+t:t}function this_value(){return this.valueOf()}function quote(t){return rx_escapable.lastIndex=0,rx_escapable.test(t)?'"'+t.replace(rx_escapable,function(t){var e=meta[t];return"string"==typeof e?e:"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})+'"':'"'+t+'"'}function str(t,e){var r,n,o,u,f,a=gap,i=e[t];switch(i&&"object"==typeof i&&"function"==typeof i.toJSON&&(i=i.toJSON(t)),"function"==typeof rep&&(i=rep.call(e,t,i)),typeof i){case"string":return quote(i);case"number":return isFinite(i)?String(i):"null";case"boolean":case"null":return String(i);case"object":if(!i)return"null";if(gap+=indent,f=[],"[object Array]"===Object.prototype.toString.apply(i)){for(u=i.length,r=0;u>r;r+=1)f[r]=str(r,i)||"null";return o=0===f.length?"[]":gap?"[\n"+gap+f.join(",\n"+gap)+"\n"+a+"]":"["+f.join(",")+"]",gap=a,o}if(rep&&"object"==typeof rep)for(u=rep.length,r=0;u>r;r+=1)"string"==typeof rep[r]&&(n=rep[r],o=str(n,i),o&&f.push(quote(n)+(gap?": ":":")+o));else for(n in i)Object.prototype.hasOwnProperty.call(i,n)&&(o=str(n,i),o&&f.push(quote(n)+(gap?": ":":")+o));return o=0===f.length?"{}":gap?"{\n"+gap+f.join(",\n"+gap)+"\n"+a+"}":"{"+f.join(",")+"}",gap=a,o}}var rx_one=/^[\],:{}\s]*$/,rx_two=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,rx_three=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,rx_four=/(?:^|:|,)(?:\s*\[)+/g,rx_escapable=/[\\\"\u0000-\u001f\u007f-\u009f\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g,rx_dangerous=/[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;"function"!=typeof Date.prototype.toJSON&&(Date.prototype.toJSON=function(){return isFinite(this.valueOf())?this.getUTCFullYear()+"-"+f(this.getUTCMonth()+1)+"-"+f(this.getUTCDate())+"T"+f(this.getUTCHours())+":"+f(this.getUTCMinutes())+":"+f(this.getUTCSeconds())+"Z":null},Boolean.prototype.toJSON=this_value,Number.prototype.toJSON=this_value,String.prototype.toJSON=this_value);var gap,indent,meta,rep;"function"!=typeof JSON.stringify&&(meta={"\b":"\\b"," ":"\\t","\n":"\\n","\f":"\\f","\r":"\\r",'"':'\\"',"\\":"\\\\"},JSON.stringify=function(t,e,r){var n;if(gap="",indent="","number"==typeof r)for(n=0;r>n;n+=1)indent+=" ";else"string"==typeof r&&(indent=r);if(rep=e,e&&"function"!=typeof e&&("object"!=typeof e||"number"!=typeof e.length))throw new Error("JSON.stringify");return str("",{"":t})}),"function"!=typeof JSON.parse&&(JSON.parse=function(text,reviver){function walk(t,e){var r,n,o=t[e];if(o&&"object"==typeof o)for(r in o)Object.prototype.hasOwnProperty.call(o,r)&&(n=walk(o,r),void 0!==n?o[r]=n:delete o[r]);return reviver.call(t,e,o)}var j;if(text=String(text),rx_dangerous.lastIndex=0,rx_dangerous.test(text)&&(text=text.replace(rx_dangerous,function(t){return"\\u"+("0000"+t.charCodeAt(0).toString(16)).slice(-4)})),rx_one.test(text.replace(rx_two,"@").replace(rx_three,"]").replace(rx_four,"")))return j=eval("("+text+")"),"function"==typeof reviver?walk({"":j},""):j;throw new SyntaxError("JSON.parse")})}();
\ No newline at end of file
diff --git a/interface/interface.dm b/interface/interface.dm
index 2b33ebb5e827..2aece7cb6c92 100644
--- a/interface/interface.dm
+++ b/interface/interface.dm
@@ -71,7 +71,7 @@
return
var/static/issue_template = file2text(".github/ISSUE_TEMPLATE.md")
var/servername = CONFIG_GET(string/servername)
- var/url_params = "Reporting client version: [byond_version]\n\n[issue_template]"
+ var/url_params = "Reporting client version: [byond_version].[byond_build]\n\n[issue_template]"
if(GLOB.round_id || servername)
url_params = "Issue reported from [GLOB.round_id ? " Round ID: [GLOB.round_id][servername ? " ([servername])" : ""]" : servername]\n\n[url_params]"
DIRECT_OUTPUT(src, link("[githuburl]/issues/new?body=[url_encode(url_params)]"))
@@ -79,151 +79,13 @@
to_chat(src, "The Github URL is not set in the server configuration. ")
return
-/client/verb/hotkeys_help()
- set name = "hotkeys-help"
- set category = "OOC"
-
- var/adminhotkeys = {"
-Admin:
-\tF3 = asay
-\tF5 = Aghost (admin-ghost)
-\tF6 = player-panel
-\tF7 = Buildmode
-\tF8 = Invisimin
-\tCtrl+F8 = Stealthmin
- "}
-
- mob.hotkey_help()
-
- if(holder)
- to_chat(src, adminhotkeys)
-
/client/verb/changelog()
set name = "Changelog"
set category = "OOC"
- var/datum/asset/changelog = get_asset_datum(/datum/asset/simple/changelog)
+ var/datum/asset/simple/namespaced/changelog = get_asset_datum(/datum/asset/simple/namespaced/changelog)
changelog.send(src)
- src << browse('html/changelog.html', "window=changes;size=675x650")
+ src << browse(changelog.get_htmlloader("changelog.html"), "window=changes;size=675x650")
if(prefs.lastchangelog != GLOB.changelog_hash)
prefs.lastchangelog = GLOB.changelog_hash
prefs.save_preferences()
winset(src, "infowindow.changelog", "font-style=;")
-
-
-/mob/proc/hotkey_help()
- var/hotkey_mode = {"
-Hotkey-Mode: (hotkey-mode must be on)
-\tTAB = toggle hotkey-mode
-\ta = left
-\ts = down
-\td = right
-\tw = up
-\tq = drop
-\te = equip
-\tr = throw
-\tm = me
-\tt = say
-\to = OOC
-\tb = resist
-\tv = rest
-\t h = stop pulling
-\tx = swap-hand
-\tz = activate held object (or y)
-\tShift+e = Put held item into belt or take out most recent item added to belt.
-\tShift+b = Put held item into backpack or take out most recent item added to backpack.
-\tf = cycle-intents-left
-\tg = cycle-intents-right
-\t1 = help-intent
-\t2 = disarm-intent
-\t3 = grab-intent
-\t4 = harm-intent
-\tNumpad = Body target selection (Press 8 repeatedly for Head->Eyes->Mouth)
-\tAlt(HOLD) = Alter movement intent
- "}
-
- var/other = {"
-Any-Mode: (hotkey doesn't need to be on)
-\tCtrl+a = left
-\tCtrl+s = down
-\tCtrl+d = right
-\tCtrl+w = up
-\tCtrl+q = drop
-\tCtrl+e = equip
-\tCtrl+r = throw
-\tCtrl+b = resist
-\tCtrl+h = stop pulling
-\tCtrl+o = OOC
-\tCtrl+x = swap-hand
-\tCtrl+z = activate held object (or Ctrl+y)
-\tCtrl+f = cycle-intents-left
-\tCtrl+g = cycle-intents-right
-\tCtrl+1 = help-intent
-\tCtrl+2 = disarm-intent
-\tCtrl+3 = grab-intent
-\tCtrl+4 = harm-intent
-\tCtrl+'+/-' OR
-\tShift+Mousewheel = Ghost zoom in/out
-\tDEL = stop pulling
-\tINS = cycle-intents-right
-\tHOME = drop
-\tPGUP = swap-hand
-\tPGDN = activate held object
-\tEND = throw
-\tCtrl+Numpad = Body target selection (Press 8 repeatedly for Head->Eyes->Mouth)
- "}
-
- to_chat(src, hotkey_mode)
- to_chat(src, other)
-
-/mob/living/silicon/robot/hotkey_help()
- //h = talk-wheel has a nonsense tag in it because \th is an escape sequence in BYOND.
- var/hotkey_mode = {"
-Hotkey-Mode: (hotkey-mode must be on)
-\tTAB = toggle hotkey-mode
-\ta = left
-\ts = down
-\td = right
-\tw = up
-\tq = unequip active module
-\tv = rest
-\t h = stop pulling
-\tm = me
-\tt = say
-\to = OOC
-\tx = cycle active modules
-\tb = resist
-\tz = activate held object (or y)
-\tf = cycle-intents-left
-\tg = cycle-intents-right
-\t1 = activate module 1
-\t2 = activate module 2
-\t3 = activate module 3
-\t4 = toggle intents
- "}
-
- var/other = {"
-Any-Mode: (hotkey doesn't need to be on)
-\tCtrl+a = left
-\tCtrl+s = down
-\tCtrl+d = right
-\tCtrl+w = up
-\tCtrl+q = unequip active module
-\tCtrl+x = cycle active modules
-\tCtrl+b = resist
-\tCtrl+h = stop pulling
-\tCtrl+o = OOC
-\tCtrl+z = activate held object (or Ctrl+y)
-\tCtrl+f = cycle-intents-left
-\tCtrl+g = cycle-intents-right
-\tCtrl+1 = activate module 1
-\tCtrl+2 = activate module 2
-\tCtrl+3 = activate module 3
-\tCtrl+4 = toggle intents
-\tDEL = stop pulling
-\tINS = toggle intents
-\tPGUP = cycle active modules
-\tPGDN = activate held object
- "}
-
- to_chat(src, hotkey_mode)
- to_chat(src, other)
diff --git a/interface/menu.dm b/interface/menu.dm
index 3c881656da57..976abb16b34f 100644
--- a/interface/menu.dm
+++ b/interface/menu.dm
@@ -63,7 +63,6 @@ GLOBAL_LIST_EMPTY(menulist)
return
M.Set_checked(src, verbpath)
-
/datum/verbs/menu/Icon/Load_checked(client/C) //So we can be lazy, we invoke the "checked" menu item on menu load.
var/procpath/verbpath = Get_checked(C)
if (!verbpath || !(verbpath in typesof("[type]/verb")))
@@ -115,4 +114,3 @@ GLOBAL_LIST_EMPTY(menulist)
/datum/verbs/menu/Icon/Scaling/verb/BL()
set name = "@.winset \"mapwindow.map.zoom-mode=blur\""
set desc = "Bilinear"
-
diff --git a/interface/skin.dmf b/interface/skin.dmf
index cf49f0f30f00..ba82b729559a 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -1,320 +1,334 @@
-macro "default"
-
-
-menu "menu"
- elem
- name = "&File"
- command = ""
- saved-params = "is-checked"
- elem
- name = "&Quick screenshot\tF2"
- command = ".screenshot auto"
- category = "&File"
- saved-params = "is-checked"
- elem
- name = "&Save screenshot as...\tShift+F2"
- command = ".screenshot"
- category = "&File"
- saved-params = "is-checked"
- elem
- name = ""
- command = ""
- category = "&File"
- saved-params = "is-checked"
- elem "reconnectbutton"
- name = "&Reconnect"
- command = ".reconnect"
- category = "&File"
- saved-params = "is-checked"
- elem
- name = "&Quit\tAlt-F4"
- command = ".quit"
- category = "&File"
- saved-params = "is-checked"
- elem
- name = "&Help"
- command = ""
- saved-params = "is-checked"
- elem
- name = "&Admin Help\tF1"
- command = "adminhelp"
- category = "&Help"
- saved-params = "is-checked"
- elem
- name = "&Hotkeys"
- command = "hotkeys-help"
- category = "&Help"
- saved-params = "is-checked"
-
-
-window "mainwindow"
- elem "mainwindow"
- type = MAIN
- pos = 0,0
- size = 640x440
- anchor1 = none
- anchor2 = none
- background-color = #242424
- is-default = true
- saved-params = "pos;size;is-minimized;is-maximized"
- icon = 'icons\\ss13_64.png'
- macro = "default"
- menu = "menu"
- elem "split"
- type = CHILD
- pos = 0,0
- size = 637x440
- anchor1 = 0,0
- anchor2 = 100,100
- background-color = #272727
- saved-params = "splitter"
- left = "mapwindow"
- right = "infowindow"
- is-vert = true
- splitter = 75
- elem "asset_cache_browser"
- type = BROWSER
- pos = 0,0
- size = 200x200
- anchor1 = none
- anchor2 = none
- background-color = #272727
- is-visible = false
- auto-format = false
- saved-params = ""
- elem "tooltip"
- type = BROWSER
- pos = 0,0
- size = 999x999
- anchor1 = none
- anchor2 = none
- background-color = #272727
- is-visible = false
- saved-params = ""
-
-window "mapwindow"
- elem "mapwindow"
- type = MAIN
- pos = 418,0
- size = 1024x1024
- anchor1 = none
- anchor2 = none
- background-color = none
- saved-params = "pos;size;is-minimized;is-maximized"
- statusbar = false
- is-pane = true
- outer-size = 684x617
- inner-size = 662x561
- elem "map"
- type = MAP
- pos = 0,0
- size = 1024x1024
- anchor1 = 0,0
- anchor2 = 100,100
- font-family = "Arial"
- font-size = 7
- is-default = true
- saved-params = "icon-size"
- zoom-mode = distort
- style = ".center { text-align: center; }\n.maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; }\n.command_headset { font-weight: bold;\tfont-size: 8px; } .small { font-size: 6px; }\n.big { font-size: 8px; }\n.reallybig { font-size: 8px; }\n.extremelybig { font-size: 8px; }\n.greentext { color: #00ff00; font-size: 7px; }\n.redtext { color: #ff0000; font-size: 7px; }\n.clown { color: #ff69bf; font-size: 7px; font-weight: bold; }\n.his_grace { color: #15d512; }\n.hypnophrase { color: #0d0d0d; font-weight: bold; }\n.yell { font-weight: bold; }\n.italics { font-size: 6px; }"
-
-window "infowindow"
- elem "infowindow"
- type = MAIN
- pos = 0,0
- size = 640x480
- anchor1 = none
- anchor2 = none
- background-color = #242424
- saved-params = "pos;size;is-minimized;is-maximized"
- is-pane = true
- elem "info"
- type = CHILD
- pos = 0,30
- size = 640x445
- anchor1 = 0,0
- anchor2 = 100,100
- background-color = #272727
- saved-params = "splitter"
- left = "statwindow"
- right = "outputwindow"
- is-vert = false
- elem "changelog"
- type = BUTTON
- pos = 16,5
- size = 104x20
- anchor1 = 3,0
- anchor2 = 19,0
- text-color = #e0e0e0
- background-color = #40628a
- saved-params = "is-checked"
- text = "Changelog"
- command = "changelog"
- elem "rules"
- type = BUTTON
- pos = 120,5
- size = 100x20
- anchor1 = 19,0
- anchor2 = 34,0
- text-color = #e0e0e0
- background-color = #40628a
- saved-params = "is-checked"
- text = "Rules"
- command = "rules"
- elem "wiki"
- type = BUTTON
- pos = 220,5
- size = 100x20
- anchor1 = 34,0
- anchor2 = 50,0
- text-color = #e0e0e0
- background-color = #40628a
- saved-params = "is-checked"
- text = "Wiki"
- command = "wiki"
- elem "forum"
- type = BUTTON
- pos = 320,5
- size = 100x20
- anchor1 = 50,0
- anchor2 = 66,0
- text-color = #e0e0e0
- background-color = #40628a
- saved-params = "is-checked"
- text = "Forum"
- command = "forum"
- elem "github"
- type = BUTTON
- pos = 420,5
- size = 100x20
- anchor1 = 66,0
- anchor2 = 81,0
- text-color = #e0e0e0
- background-color = #40628a
- saved-params = "is-checked"
- text = "GitHub"
- command = "github"
- elem "report-issue"
- type = BUTTON
- pos = 520,5
- size = 100x20
- anchor1 = 81,0
- anchor2 = 97,0
- font-size = 8
- text-color = #e0e0e0
- background-color = #a92c2c
- saved-params = "is-checked"
- text = "Report Issue"
- command = "report-issue"
-
-window "outputwindow"
- elem "outputwindow"
- type = MAIN
- pos = 0,0
- size = 640x480
- anchor1 = none
- anchor2 = none
- background-color = #272727
- saved-params = "pos;size;is-minimized;is-maximized"
- titlebar = false
- statusbar = false
- can-close = false
- can-minimize = false
- can-resize = false
- is-pane = true
- elem "input"
- type = INPUT
- pos = 2,460
- size = 595x20
- anchor1 = 0,100
- anchor2 = 100,100
- background-color = #d3b5b5
- is-default = true
- border = sunken
- saved-params = "command"
- elem "say"
- type = BUTTON
- pos = 600,460
- size = 37x20
- anchor1 = 100,100
- anchor2 = none
- text-color = #e0e0e0
- background-color = #272727
- saved-params = "is-checked"
- text = "Chat"
- command = ".winset \"say.is-checked=true ? input.command=\"!say \\\"\" : input.command=\""
- is-flat = true
- button-type = pushbox
- elem "browseroutput"
- type = BROWSER
- pos = 0,0
- size = 640x456
- anchor1 = 0,0
- anchor2 = 100,100
- background-color = #272727
- is-visible = false
- is-disabled = true
- saved-params = ""
- auto-format = false
- elem "output"
- type = OUTPUT
- pos = 0,0
- size = 640x456
- anchor1 = 0,0
- anchor2 = 100,100
- text-color = #e0e0e0
- background-color = #272727
- is-default = true
- saved-params = ""
-
-window "statwindow"
- elem "statwindow"
- type = MAIN
- pos = 281,0
- size = 640x480
- anchor1 = none
- anchor2 = none
- background-color = #242424
- saved-params = "pos;size;is-minimized;is-maximized"
- is-pane = true
- elem "stat"
- type = INFO
- pos = 0,0
- size = 640x480
- anchor1 = 0,0
- anchor2 = 100,100
- text-color = #e0e0e0
- background-color = #272727
- is-default = true
- saved-params = ""
- tab-text-color = #e0e0e0
- tab-background-color = #242424
- prefix-color = #e0e0e0
- suffix-color = #e0e0e0
-
-window "preferences_window"
- elem "preferences_window"
- type = MAIN
- pos = 372,0
- size = 1280x1000
- anchor1 = none
- anchor2 = none
- is-visible = false
- saved-params = "pos;size;is-minimized;is-maximized"
- statusbar = false
- elem "preferences_browser"
- type = BROWSER
- pos = 0,0
- size = 960x1000
- anchor1 = 0,0
- anchor2 = 75,100
- saved-params = ""
- elem "character_preview_map"
- type = MAP
- pos = 960,0
- size = 320x1000
- anchor1 = 75,0
- anchor2 = 100,100
- right-click = true
- saved-params = "zoom;letterbox;zoom-mode"
-
+macro "default"
+
+
+menu "menu"
+ elem
+ name = "&File"
+ command = ""
+ saved-params = "is-checked"
+ elem
+ name = "&Quick screenshot\tF2"
+ command = ".screenshot auto"
+ category = "&File"
+ saved-params = "is-checked"
+ elem
+ name = "&Save screenshot as...\tShift+F2"
+ command = ".screenshot"
+ category = "&File"
+ saved-params = "is-checked"
+ elem
+ name = ""
+ command = ""
+ category = "&File"
+ saved-params = "is-checked"
+ elem "reconnectbutton"
+ name = "&Reconnect"
+ command = ".reconnect"
+ category = "&File"
+ saved-params = "is-checked"
+ elem
+ name = "&Quit\tAlt-F4"
+ command = ".quit"
+ category = "&File"
+ saved-params = "is-checked"
+ elem
+ name = "&Help"
+ command = ""
+ saved-params = "is-checked"
+ elem
+ name = "&Admin Help\tF1"
+ command = "adminhelp"
+ category = "&Help"
+ saved-params = "is-checked"
+ elem
+ name = "&Hotkeys"
+ command = "hotkeys-help"
+ category = "&Help"
+ saved-params = "is-checked"
+
+window "mainwindow"
+ elem "mainwindow"
+ type = MAIN
+ pos = 0,0
+ size = 640x440
+ anchor1 = none
+ anchor2 = none
+ background-color = #242424
+ is-default = true
+ saved-params = "pos;size;is-minimized;is-maximized"
+ icon = 'icons\\ss13_64.png'
+ macro = "default"
+ menu = "menu"
+ elem "split"
+ type = CHILD
+ pos = 3,0
+ size = 634x417
+ anchor1 = 0,0
+ anchor2 = 100,100
+ background-color = #272727
+ saved-params = "splitter"
+ left = "mapwindow"
+ right = "infowindow"
+ is-vert = true
+ elem "input"
+ type = INPUT
+ pos = 3,420
+ size = 517x20
+ anchor1 = 0,100
+ anchor2 = 100,100
+ background-color = #d3b5b5
+ is-default = true
+ border = sunken
+ saved-params = "command"
+ elem "saybutton"
+ type = BUTTON
+ pos = 600,420
+ size = 40x20
+ anchor1 = 100,100
+ anchor2 = none
+ text-color = #e0e0e0
+ background-color = #272727
+ saved-params = "is-checked"
+ text = "Chat"
+ command = ".winset \"saybutton.is-checked=true ? input.command=\"!say \\\"\" : input.command=\"\"saybutton.is-checked=true ? mebutton.is-checked=false\"\"saybutton.is-checked=true ? oocbutton.is-checked=false\""
+ button-type = pushbox
+ elem "oocbutton"
+ type = BUTTON
+ pos = 520,420
+ size = 40x20
+ anchor1 = 100,100
+ anchor2 = none
+ text-color = #e0e0e0
+ background-color = #272727
+ saved-params = "is-checked"
+ text = "OOC"
+ command = ".winset \"oocbutton.is-checked=true ? input.command=\"!ooc \\\"\" : input.command=\"\"oocbutton.is-checked=true ? mebutton.is-checked=false\"\"oocbutton.is-checked=true ? saybutton.is-checked=false\""
+ button-type = pushbox
+ elem "mebutton"
+ type = BUTTON
+ pos = 560,420
+ size = 40x20
+ anchor1 = 100,100
+ anchor2 = none
+ text-color = #e0e0e0
+ background-color = #272727
+ saved-params = "is-checked"
+ text = "Me"
+ command = ".winset \"mebutton.is-checked=true ? input.command=\"!me \\\"\" : input.command=\"\"mebutton.is-checked=true ? saybutton.is-checked=false\"\"mebutton.is-checked=true ? oocbutton.is-checked=false\""
+ button-type = pushbox
+ elem "asset_cache_browser"
+ type = BROWSER
+ pos = 0,0
+ size = 200x200
+ anchor1 = none
+ anchor2 = none
+ is-visible = false
+ auto-format = false
+ saved-params = ""
+ elem "tooltip"
+ type = BROWSER
+ pos = 0,0
+ size = 999x999
+ anchor1 = none
+ anchor2 = none
+ is-visible = false
+ saved-params = ""
+
+window "mapwindow"
+ elem "mapwindow"
+ type = MAIN
+ pos = 0,0
+ size = 640x480
+ anchor1 = none
+ anchor2 = none
+ saved-params = "pos;size;is-minimized;is-maximized"
+ is-pane = true
+ elem "map"
+ type = MAP
+ pos = 0,0
+ size = 640x480
+ anchor1 = 0,0
+ anchor2 = 100,100
+ font-family = "Arial"
+ font-size = 7
+ text-color = none
+ is-default = true
+ style=".center { text-align: center; } .maptext { font-family: 'Small Fonts'; font-size: 7px; -dm-text-outline: 1px black; color: white; line-height: 1.1; } .command_headset { font-weight: bold; font-size: 8px; } .small { font-size: 6px; } .big { font-size: 8px; } .reallybig { font-size: 8px; } .extremelybig { font-size: 8px; } .greentext { color: #00FF00; font-size: 7px; } .redtext { color: #FF0000; font-size: 7px; } .clown { color: #FF69Bf; font-size: 7px; font-weight: bold; } .his_grace { color: #15D512; } .hypnophrase { color: #0d0d0d; font-weight: bold; } .yell { font-weight: bold; } .italics { font-size: 6px; }"
+
+window "infowindow"
+ elem "infowindow"
+ type = MAIN
+ pos = 0,0
+ size = 640x480
+ anchor1 = none
+ anchor2 = none
+ background-color = #242424
+ saved-params = "pos;size;is-minimized;is-maximized"
+ is-pane = true
+ elem "info"
+ type = CHILD
+ pos = 0,30
+ size = 640x445
+ anchor1 = 0,0
+ anchor2 = 100,100
+ background-color = #272727
+ saved-params = "splitter"
+ left = "statwindow"
+ right = "outputwindow"
+ is-vert = false
+ elem "changelog"
+ type = BUTTON
+ pos = 16,5
+ size = 104x20
+ anchor1 = 3,0
+ anchor2 = 19,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Changelog"
+ command = "changelog"
+ elem "rules"
+ type = BUTTON
+ pos = 120,5
+ size = 100x20
+ anchor1 = 19,0
+ anchor2 = 34,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Rules"
+ command = "rules"
+ elem "wiki"
+ type = BUTTON
+ pos = 220,5
+ size = 100x20
+ anchor1 = 34,0
+ anchor2 = 50,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Wiki"
+ command = "wiki"
+ elem "forum"
+ type = BUTTON
+ pos = 320,5
+ size = 100x20
+ anchor1 = 50,0
+ anchor2 = 66,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Forum"
+ command = "forum"
+ elem "github"
+ type = BUTTON
+ pos = 420,5
+ size = 100x20
+ anchor1 = 66,0
+ anchor2 = 81,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Github"
+ command = "github"
+ elem "report-issue"
+ type = BUTTON
+ pos = 520,5
+ size = 100x20
+ anchor1 = 81,0
+ anchor2 = 97,0
+ text-color = #e0e0e0
+ background-color = #40628a
+ saved-params = "is-checked"
+ text = "Report Issue"
+ command = "report-issue"
+
+window "outputwindow"
+ elem "outputwindow"
+ type = MAIN
+ pos = 0,0
+ size = 640x480
+ anchor1 = none
+ anchor2 = none
+ background-color = #272727
+ saved-params = "pos;size;is-minimized;is-maximized"
+ is-pane = true
+ elem "browseroutput"
+ type = BROWSER
+ pos = 0,0
+ size = 640x480
+ anchor1 = 0,0
+ anchor2 = 100,100
+ background-color = #272727
+ is-visible = false
+ is-disabled = true
+ saved-params = ""
+ auto-format = false
+ elem "output"
+ type = OUTPUT
+ pos = 0,0
+ size = 640x480
+ anchor1 = 0,0
+ anchor2 = 100,100
+ text-color = #e0e0e0
+ background-color = #272727
+ is-default = true
+ saved-params = ""
+
+window "popupwindow"
+ elem "popupwindow"
+ type = MAIN
+ pos = 281,0
+ size = 120x120
+ anchor1 = none
+ anchor2 = none
+ background-color = none
+ is-visible = false
+ saved-params = "pos;size;is-minimized;is-maximized"
+ statusbar = false
+ can-resize = false
+
+window "preferences_window"
+ elem "preferences_window"
+ type = MAIN
+ pos = 281,0
+ size = 1280x1000
+ anchor1 = none
+ anchor2 = none
+ is-visible = false
+ saved-params = "pos;size;is-minimized;is-maximized"
+ statusbar = false
+ elem "preferences_browser"
+ type = BROWSER
+ pos = 0,0
+ size = 960x1000
+ anchor1 = 0,0
+ anchor2 = 75,100
+ saved-params = ""
+ elem "character_preview_map"
+ type = MAP
+ pos = 960,0
+ size = 320x1000
+ anchor1 = 75,0
+ anchor2 = 100,100
+ right-click = true
+ saved-params = "zoom;letterbox;zoom-mode"
+
+window "statwindow"
+ elem "statwindow"
+ type = MAIN
+ pos = 281,0
+ size = 640x480
+ anchor1 = none
+ anchor2 = none
+ saved-params = "pos;size;is-minimized;is-maximized"
+ is-pane = true
+ elem "stat"
+ type = INFO
+ pos = 0,0
+ size = 640x480
+ anchor1 = 0,0
+ anchor2 = 100,100
+ is-default = true
+ saved-params = ""
+
diff --git a/interface/stylesheet.dm b/interface/stylesheet.dm
index 9c35ddb75f63..fbb622a7001e 100644
--- a/interface/stylesheet.dm
+++ b/interface/stylesheet.dm
@@ -2,7 +2,7 @@
/// !!!!!!!!!!HEY LISTEN!!!!!!!!!!!!!!!!!!!!!!!!
/// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
-// If you modify this file you ALSO need to modify code/modules/goonchat/browserAssets/browserOutput.css
+// If you modify this file you ALSO need to modify code/modules/goonchat/browserAssets/browserOutput.css and browserOutput_white.css
// BUT you have to use PX font sizes with are on a x8 scale of these font sizes
// Sample font-size: DM: 8 CSS: 64px
@@ -30,14 +30,15 @@ em {font-style: normal; font-weight: bold;}
.adminooc {color: #700038; font-weight: bold;}
.adminobserver {color: #996600; font-weight: bold;}
+.adminsay {color: #FF4500; font-weight: bold;}
.admin {color: #386aff; font-weight: bold;}
.name { font-weight: bold;}
.say {}
.deadsay {color: #5c00e6;}
-.binarysay {color: #20c20e; background-color: #000000; display: block;}
-.binarysay a {color: #00ff00;}
+.binarysay {color: #20c20e; background-color: #000000; display: block;}
+.binarysay a {color: #00ff00;}
.binarysay a:active, .binarysay a:visited {color: #88ff88;}
.radio {color: #008000;}
.sciradio {color: #993399;}
@@ -50,8 +51,8 @@ em {font-style: normal; font-weight: bold;}
.syndradio {color: #6d3f40;}
.centcomradio {color: #686868;}
.aiprivradio {color: #ff00ff;}
-.redteamradio {color: #ff0000;}
-.blueteamradio {color: #0000ff;}
+.redteamradio {color: #ff0000;}
+.blueteamradio {color: #0000ff;}
.yell { font-weight: bold;}
@@ -65,13 +66,13 @@ h1.alert, h2.alert {color: #000000;}
.disarm {color: #990000;}
.passive {color: #660000;}
-.userdanger {color: #ff0000; font-weight: bold; font-size: 3;}
+.userdanger {color: #ff0000; font-weight: bold; font-size: 3;}
.danger {color: #ff0000; font-weight: bold;}
.tinydanger {color: #ff0000; font-size: 85%;}
.smalldanger {color: #ff0000; font-size: 90%;}
.warning {color: #ff0000; font-style: italic;}
.boldwarning {color: #ff0000; font-style: italic; font-weight: bold}
-.announce {color: #228b22; font-weight: bold;}
+.announce {color: #228b22; font-weight: bold;}
.boldannounce {color: #ff0000; font-weight: bold;}
.greenannounce {color: #00ff00; font-weight: bold;}
.rose {color: #ff5050;}
@@ -81,29 +82,31 @@ h1.alert, h2.alert {color: #000000;}
.smallnotice {color: #000099; font-size: 90%;}
.smallnoticeital {color: #000099; font-style: italic; font-size: 90%;}
.boldnotice {color: #000099; font-weight: bold;}
+.hear {color: #000099; font-style: italic;}
.adminnotice {color: #0000ff;}
-.adminhelp {color: #ff0000; font-weight: bold;}
+.adminhelp {color: #ff0000; font-weight: bold;}
.unconscious {color: #0000ff; font-weight: bold;}
.suicide {color: #ff5050; font-style: italic;}
.green {color: #03ff39;}
-.nicegreen {color: #14a833;}
+.nicegreen {color: #14a833;}
.shadowling {color: #3b2769;}
.cult {color: #960000;}
-.cultlarge {color: #960000; font-weight: bold; font-size: 3;}
-.narsie {color: #960000; font-weight: bold; font-size: 15;}
-.narsiesmall {color: #960000; font-weight: bold; font-size: 6;}
-.colossus {color: #7F282A; font-size: 5;}
-.hierophant {color: #660099; font-weight: bold; font-style: italic;}
-.hierophant_warning {color: #660099; font-style: italic;}
+.cultlarge {color: #960000; font-weight: bold; font-size: 3;}
+.narsie {color: #960000; font-weight: bold; font-size: 15;}
+.narsiesmall {color: #960000; font-weight: bold; font-size: 6;}
+.colossus {color: #7F282A; font-size: 5;}
+.hierophant {color: #660099; font-weight: bold; font-style: italic;}
+.hierophant_warning {color: #660099; font-style: italic;}
.purple {color: #5e2d79;}
.holoparasite {color: #35333a;}
+.bounty {color: #ab6613; font-style: italic;}
.revennotice {color: #1d2953;}
.revenboldnotice {color: #1d2953; font-weight: bold;}
-.revenbignotice {color: #1d2953; font-weight: bold; font-size: 3;}
+.revenbignotice {color: #1d2953; font-weight: bold; font-size: 3;}
.revenminor {color: #823abb}
.revenwarning {color: #760fbb; font-style: italic;}
-.revendanger {color: #760fbb; font-weight: bold; font-size: 3;}
+.revendanger {color: #760fbb; font-weight: bold; font-size: 3;}
.umbra {color: #5000A0;}
.umbra_emphasis {color: #5000A0; font-weight: bold; font-style: italic;}
.umbra_large {color: #5000A0; font-size: 3; font-weight: bold; font-style: italic;}
@@ -133,8 +136,7 @@ h1.alert, h2.alert {color: #000000;}
.neovgre {color: #6E001A; font-weight: bold; font-style: italic;}
.neovgre_small {color: #6E001A;}
-.newscaster {color: #800000;}
-.ghostalert {color: #5c00e6; font-style: italic; font-weight: bold;}
+.ghostalert {color: #5c00e6; font-style: italic; font-weight: bold;}
.alien {color: #543354;}
.noticealien {color: #00c000;}
@@ -149,7 +151,7 @@ h1.alert, h2.alert {color: #000000;}
.papyrus {font-family: "Papyrus", cursive, sans-serif;}
.robot {font-family: "Courier New", cursive, sans-serif;}
-.command_headset {font-weight: bold; font-size: 3;}
+.command_headset {font-weight: bold; font-size: 3;}
.small {font-size: 1;}
.big {font-size: 3;}
.reallybig {font-size: 4;}
@@ -157,9 +159,9 @@ h1.alert, h2.alert {color: #000000;}
.greentext {color: #00FF00; font-size: 3;}
.redtext {color: #FF0000; font-size: 3;}
.yellowtext {color: #FFCC00; font-size: 3;}
-.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
-.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
-.spooky {color: #FF9100;}
+.clown {color: #FF69Bf; font-size: 3; font-family: "Comic Sans MS", cursive, sans-serif; font-weight: bold;}
+.singing {font-family: "Trebuchet MS", cursive, sans-serif; font-style: italic;}
+.his_grace {color: #15D512; font-family: "Courier New", cursive, sans-serif; font-style: italic;}
.velvet {color: #660015; font-weight: bold; animation: velvet 5000ms infinite;}
@keyframes velvet {
0% { color: #400020; }
@@ -169,28 +171,29 @@ h1.alert, h2.alert {color: #000000;}
100% { color: #400020; }
}
-.hypnophrase {color: #3bb5d3; font-weight: bold; animation: hypnocolor 1500ms infinite;}
-@keyframes hypnocolor {
- 0% { color: #0d0d0d; }
- 25% { color: #410194; }
- 50% { color: #7f17d8; }
- 75% { color: #410194; }
- 100% { color: #3bb5d3; }
+.hypnophrase {color: #3bb5d3; font-weight: bold; animation: hypnocolor 1500ms infinite; animation-direction: alternate;}
+ @keyframes hypnocolor {
+ 0% {color: #0d0d0d;}
+ 25% {color: #410194;}
+ 50% {color: #7f17d8;}
+ 75% {color: #410194;}
+ 100% {color: #3bb5d3;}
}
-.phobia {color: #dd0000; font-weight: bold; animation: phobia 750ms infinite;}
+
+.phobia {color: #dd0000; font-weight: bold; animation: phobia 750ms infinite;}
@keyframes phobia {
- 0% { color: #0d0d0d; }
- 50% { color: #dd0000; }
- 100% { color: #0d0d0d; }
+ 0% {color: #0d0d0d;}
+ 50% {color: #dd0000;}
+ 100% {color: #0d0d0d;}
}
-.icon {height: 1em; width: auto;}
+.icon {height: 1em; width: auto;}
.memo {color: #638500; text-align: center;}
.memoedit {text-align: center; font-size: 2;}
-.abductor {color: #800080; font-style: italic;}
-.mind_control {color: #A00D6F; font-size: 3; font-weight: bold; font-style: italic;}
+.abductor {color: #800080; font-style: italic;}
+.mind_control {color: #A00D6F; font-size: 3; font-weight: bold; font-style: italic;}
.slime {color: #00CED1;}
.drone {color: #848482;}
.monkey {color: #975032;}
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
index 1594a0b5ed41..aaeae895991c 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-dark.scss
@@ -301,6 +301,12 @@ em {
font-weight: bold;
}
+/* @adminobserver compatability*/
+.adminobserver {
+ color: #996600;
+ font-weight: bold;
+}
+
.admin {
color: #5975da;
font-weight: bold;
@@ -596,12 +602,155 @@ em {
font-size: 185%;
}
+.umbra {
+ color: #5000A0;
+}
+
+.umbra_emphasis {
+ color: #5000A0;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.umbra_large {
+ color: #5000A0;
+ font-weight: bold;
+ font-style: italic;
+ font-size: 3;
+}
+
.deconversion_message {
- color: #a947ff;
+ color: #5000A0;
font-size: 185%;
font-style: italic;
}
+/* coggers dosen't exist on tg :( */
+/* from decon_msg: font-size: 185% == font-size 3*/
+.brass {
+ color: #BE8700;
+}
+
+.heavy_brass {
+ color: #BE8700;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.large_brass {
+ color: #BE8700;
+ font-size: 185%;
+ }
+
+.big_brass {
+ color: #BE8700;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.ratvar {
+ color: #BE8700;
+ font-size: 6;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.alloy {
+ color: #42474D;
+}
+
+.heavy_alloy {
+ color: #42474D;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere_large {
+ color: #42474D;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere {
+ color: #42474D;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere_small {
+ color: #42474D;
+}
+
+.sevtug_large {
+ color: #AF0AAF;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.sevtug {
+ color: #AF0AAF;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.sevtug_small {
+ color: #AF0AAF;
+}
+
+.inathneq_large {
+ color: #1E8CE1;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.inathneq {
+ color: #1E8CE1;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.inathneq_small {
+ color: #1E8CE1;
+}
+
+.nzcrentr_large {
+ color: #DAAA18;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nzcrentr {
+ color: #DAAA18;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nzcrentr_small {
+ color: #DAAA18;
+}
+
+.neovgre_large {
+ color: #6E001A;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.neovgre {
+ color: #6E001A;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.neovgre_small {
+ color: #6E001A;
+}
+
.ghostalert {
color: #6600ff;
font-style: italic;
@@ -685,6 +834,11 @@ em {
font-size: 185%;
}
+.yellowtext {
+ color: #FFCC00;
+ font-size: 185%;
+}
+
.clown {
color: #ff70c1;
font-size: 160%;
@@ -732,6 +886,31 @@ em {
}
}
+.velvet {
+ color: #660015;
+ font-weight: bold;
+ animation: velvet 5000ms infinite;
+ animation-direction: alternate;
+}
+
+@keyframes velvet {
+ 0% {
+ color: #400020;
+ }
+ 40% {
+ color: #FF0000;
+ }
+ 50% {
+ color: #FF8888;
+ }
+ 60% {
+ color: #FF0000;
+ }
+ 100% {
+ color: #400020;
+ }
+}
+
.phobia {
color: #dd0000;
font-weight: bold;
diff --git a/tgui/packages/tgui-panel/styles/goon/chat-light.scss b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
index 13b527312203..307c5bf45f4b 100644
--- a/tgui/packages/tgui-panel/styles/goon/chat-light.scss
+++ b/tgui/packages/tgui-panel/styles/goon/chat-light.scss
@@ -3,7 +3,7 @@
* SPDX-License-Identifier: MIT
*/
-html, body {
+ html, body {
padding: 0;
margin: 0;
height: 100%;
@@ -297,6 +297,12 @@ em {
font-weight: bold;
}
+/* @adminobserver compatability*/
+.adminobserver {
+ color: #996600;
+ font-weight: bold;
+}
+
.admin {
color: #4473ff;
font-weight: bold;
@@ -618,12 +624,155 @@ h1.alert, h2.alert {
font-size: 185%;
}
+.umbra {
+ color: #5000A0;
+}
+
+.umbra_emphasis {
+ color: #5000A0;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.umbra_large {
+ color: #5000A0;
+ font-weight: bold;
+ font-style: italic;
+ font-size: 3;
+}
+
.deconversion_message {
color: #5000A0;
font-size: 185%;
font-style: italic;
}
+/* coggers dosen't exist on tg :( */
+/* from decon_msg: font-size: 185% == font-size 3*/
+.brass {
+ color: #BE8700;
+}
+
+.heavy_brass {
+ color: #BE8700;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.large_brass {
+ color: #BE8700;
+ font-size: 185%;
+ }
+
+.big_brass {
+ color: #BE8700;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.ratvar {
+ color: #BE8700;
+ font-size: 6;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.alloy {
+ color: #42474D;
+}
+
+.heavy_alloy {
+ color: #42474D;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere_large {
+ color: #42474D;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere {
+ color: #42474D;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nezbere_small {
+ color: #42474D;
+}
+
+.sevtug_large {
+ color: #AF0AAF;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.sevtug {
+ color: #AF0AAF;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.sevtug_small {
+ color: #AF0AAF;
+}
+
+.inathneq_large {
+ color: #1E8CE1;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.inathneq {
+ color: #1E8CE1;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.inathneq_small {
+ color: #1E8CE1;
+}
+
+.nzcrentr_large {
+ color: #DAAA18;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nzcrentr {
+ color: #DAAA18;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.nzcrentr_small {
+ color: #DAAA18;
+}
+
+.neovgre_large {
+ color: #6E001A;
+ font-size: 185%;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.neovgre {
+ color: #6E001A;
+ font-weight: bold;
+ font-style: italic;
+}
+
+.neovgre_small {
+ color: #6E001A;
+}
+
.ghostalert {
color: #5c00e6;
font-style: italic;
@@ -707,6 +856,11 @@ h1.alert, h2.alert {
font-size: 185%;
}
+.yellowtext {
+ color: #FFCC00;
+ font-size: 185%;
+}
+
.clown {
color: #FF69Bf;
font-size: 160%;
@@ -754,6 +908,31 @@ h1.alert, h2.alert {
}
}
+.velvet {
+ color: #660015;
+ font-weight: bold;
+ animation: velvet 5000ms infinite;
+ animation-direction: alternate;
+}
+
+@keyframes velvet {
+ 0% {
+ color: #400020;
+ }
+ 40% {
+ color: #FF0000;
+ }
+ 50% {
+ color: #FF8888;
+ }
+ 60% {
+ color: #FF0000;
+ }
+ 100% {
+ color: #400020;
+ }
+}
+
.phobia {
color: #dd0000;
font-weight: bold;
diff --git a/tgui/packages/tgui/polyfills/css-om.js b/tgui/packages/tgui/polyfills/css-om.js
deleted file mode 100644
index 757d14f92858..000000000000
--- a/tgui/packages/tgui/polyfills/css-om.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * CSS Object Model patches
- *
- * Adapted from: https://github.com/shawnbot/aight
- *
- * @file
- * @copyright 2020 Aleksej Komarov
- * @license MIT
- */
-
-/* eslint-disable */
-(function(Proto) {
- 'use strict';
-
- if (typeof Proto.setAttribute !== 'undefined') {
- function toAttr(prop) {
- return prop.replace(/-[a-z]/g, function (bit) {
- return bit[1].toUpperCase();
- });
- }
-
- Proto.setProperty = function (prop, value) {
- var attr = toAttr(prop);
- if (!value) {
- return this.removeAttribute(attr);
- }
- var str = String(value);
- return this.setAttribute(attr, str);
- };
-
- Proto.getPropertyValue = function (prop) {
- var attr = toAttr(prop);
- return this.getAttribute(attr) || null;
- };
-
- Proto.removeProperty = function (prop) {
- var attr = toAttr(prop);
- var value = this.getAttribute(attr);
- this.removeAttribute(attr);
- return value;
- };
- }
-
-})(CSSStyleDeclaration.prototype);
diff --git a/tgui/packages/tgui/polyfills/dom4.js b/tgui/packages/tgui/polyfills/dom4.js
deleted file mode 100644
index f8e0000eb2b6..000000000000
--- a/tgui/packages/tgui/polyfills/dom4.js
+++ /dev/null
@@ -1,970 +0,0 @@
-/**
- * @file
- * @copyright 2013 Andrea Giammarchi, WebReflection
- * @license MIT
- */
-
-/* eslint-disable */
-(function(window){
- 'use strict';
- /* jshint loopfunc: true, noempty: false*/
- // http://www.w3.org/TR/dom/#element
-
- function createDocumentFragment() {
- return document.createDocumentFragment();
- }
-
- function createElement(nodeName) {
- return document.createElement(nodeName);
- }
-
- function enoughArguments(length, name) {
- if (!length) throw new Error(
- 'Failed to construct ' +
- name +
- ': 1 argument required, but only 0 present.'
- );
- }
-
- function mutationMacro(nodes) {
- if (nodes.length === 1) {
- return textNodeIfPrimitive(nodes[0]);
- }
- for (var
- fragment = createDocumentFragment(),
- list = slice.call(nodes),
- i = 0; i < nodes.length; i++
- ) {
- fragment.appendChild(textNodeIfPrimitive(list[i]));
- }
- return fragment;
- }
-
- function textNodeIfPrimitive(node) {
- return typeof node === 'object' ? node : document.createTextNode(node);
- }
-
- for(var
- head,
- property,
- TemporaryPrototype,
- TemporaryTokenList,
- wrapVerifyToken,
- document = window.document,
- hOP = Object.prototype.hasOwnProperty,
- defineProperty = Object.defineProperty || function (object, property, descriptor) {
- if (hOP.call(descriptor, 'value')) {
- object[property] = descriptor.value;
- } else {
- if (hOP.call(descriptor, 'get'))
- object.__defineGetter__(property, descriptor.get);
- if (hOP.call(descriptor, 'set'))
- object.__defineSetter__(property, descriptor.set);
- }
- return object;
- },
- indexOf = [].indexOf || function indexOf(value){
- var length = this.length;
- while(length--) {
- if (this[length] === value) {
- break;
- }
- }
- return length;
- },
- // http://www.w3.org/TR/domcore/#domtokenlist
- verifyToken = function (token) {
- if (!token) {
- throw 'SyntaxError';
- } else if (spaces.test(token)) {
- throw 'InvalidCharacterError';
- }
- return token;
- },
- DOMTokenList = function (node) {
- var
- noClassName = typeof node.className === 'undefined',
- className = noClassName ?
- (node.getAttribute('class') || '') : node.className,
- isSVG = noClassName || typeof className === 'object',
- value = (isSVG ?
- (noClassName ? className : className.baseVal) :
- className
- ).replace(trim, '')
- ;
- if (value.length) {
- properties.push.apply(
- this,
- value.split(spaces)
- );
- }
- this._isSVG = isSVG;
- this._ = node;
- },
- classListDescriptor = {
- get: function get() {
- return new DOMTokenList(this);
- },
- set: function(){}
- },
- trim = /^\s+|\s+$/g,
- spaces = /\s+/,
- SPACE = '\x20',
- CLASS_LIST = 'classList',
- toggle = function toggle(token, force) {
- if (this.contains(token)) {
- if (!force) {
- // force is not true (either false or omitted)
- this.remove(token);
- }
- } else if(force === undefined || force) {
- force = true;
- this.add(token);
- }
- return !!force;
- },
- DocumentFragmentPrototype = window.DocumentFragment && DocumentFragment.prototype,
- Node = window.Node,
- NodePrototype = (Node || Element).prototype,
- CharacterData = window.CharacterData || Node,
- CharacterDataPrototype = CharacterData && CharacterData.prototype,
- DocumentType = window.DocumentType,
- DocumentTypePrototype = DocumentType && DocumentType.prototype,
- ElementPrototype = (window.Element || Node || window.HTMLElement).prototype,
- HTMLSelectElement = window.HTMLSelectElement || createElement('select').constructor,
- selectRemove = HTMLSelectElement.prototype.remove,
- SVGElement = window.SVGElement,
- properties = [
- 'matches', (
- ElementPrototype.matchesSelector ||
- ElementPrototype.webkitMatchesSelector ||
- ElementPrototype.khtmlMatchesSelector ||
- ElementPrototype.mozMatchesSelector ||
- ElementPrototype.msMatchesSelector ||
- ElementPrototype.oMatchesSelector ||
- function matches(selector) {
- var parentNode = this.parentNode;
- return !!parentNode && -1 < indexOf.call(
- parentNode.querySelectorAll(selector),
- this
- );
- }
- ),
- 'closest', function closest(selector) {
- var parentNode = this, matches;
- while (
- // document has no .matches
- (matches = parentNode && parentNode.matches) &&
- !parentNode.matches(selector)
- ) {
- parentNode = parentNode.parentNode;
- }
- return matches ? parentNode : null;
- },
- 'prepend', function prepend() {
- var firstChild = this.firstChild,
- node = mutationMacro(arguments);
- if (firstChild) {
- this.insertBefore(node, firstChild);
- } else {
- this.appendChild(node);
- }
- },
- 'append', function append() {
- this.appendChild(mutationMacro(arguments));
- },
- 'before', function before() {
- var parentNode = this.parentNode;
- if (parentNode) {
- parentNode.insertBefore(
- mutationMacro(arguments), this
- );
- }
- },
- 'after', function after() {
- var parentNode = this.parentNode,
- nextSibling = this.nextSibling,
- node = mutationMacro(arguments);
- if (parentNode) {
- if (nextSibling) {
- parentNode.insertBefore(node, nextSibling);
- } else {
- parentNode.appendChild(node);
- }
- }
- },
- // https://dom.spec.whatwg.org/#dom-element-toggleattribute
- 'toggleAttribute', function toggleAttribute(name, force) {
- var had = this.hasAttribute(name);
- if (1 < arguments.length) {
- if (had && !force)
- this.removeAttribute(name);
- else if (force && !had)
- this.setAttribute(name, "");
- }
- else if (had)
- this.removeAttribute(name);
- else
- this.setAttribute(name, "");
- return this.hasAttribute(name);
- },
- // WARNING - DEPRECATED - use .replaceWith() instead
- 'replace', function replace() {
- this.replaceWith.apply(this, arguments);
- },
- 'replaceWith', function replaceWith() {
- var parentNode = this.parentNode;
- if (parentNode) {
- parentNode.replaceChild(
- mutationMacro(arguments),
- this
- );
- }
- },
- 'remove', function remove() {
- var parentNode = this.parentNode;
- if (parentNode) {
- parentNode.removeChild(this);
- }
- }
- ],
- slice = properties.slice,
- i = properties.length; i; i -= 2
- ) {
- property = properties[i - 2];
- if (!(property in ElementPrototype)) {
- ElementPrototype[property] = properties[i - 1];
- }
- // avoid unnecessary re-patch when the script is included
- // gazillion times without any reason whatsoever
- // https://github.com/WebReflection/dom4/pull/48
- if (property === 'remove' && !selectRemove._dom4) {
- // see https://github.com/WebReflection/dom4/issues/19
- (HTMLSelectElement.prototype[property] = function () {
- return 0 < arguments.length ?
- selectRemove.apply(this, arguments) :
- ElementPrototype.remove.call(this);
- })._dom4 = true;
- }
- // see https://github.com/WebReflection/dom4/issues/18
- if (/^(?:before|after|replace|replaceWith|remove)$/.test(property)) {
- if (CharacterData && !(property in CharacterDataPrototype)) {
- CharacterDataPrototype[property] = properties[i - 1];
- }
- if (DocumentType && !(property in DocumentTypePrototype)) {
- DocumentTypePrototype[property] = properties[i - 1];
- }
- }
- // see https://github.com/WebReflection/dom4/pull/26
- if (/^(?:append|prepend)$/.test(property)) {
- if (DocumentFragmentPrototype) {
- if (!(property in DocumentFragmentPrototype)) {
- DocumentFragmentPrototype[property] = properties[i - 1];
- }
- } else {
- try {
- createDocumentFragment().constructor.prototype[property] = properties[i - 1];
- } catch(o_O) {}
- }
- }
- }
-
- // most likely an IE9 only issue
- // see https://github.com/WebReflection/dom4/issues/6
- if (!createElement('a').matches('a')) {
- ElementPrototype[property] = function(matches){
- return function (selector) {
- return matches.call(
- this.parentNode ?
- this :
- createDocumentFragment().appendChild(this),
- selector
- );
- };
- }(ElementPrototype[property]);
- }
-
- // used to fix both old webkit and SVG
- DOMTokenList.prototype = {
- length: 0,
- add: function add() {
- for(var j = 0, token; j < arguments.length; j++) {
- token = arguments[j];
- if(!this.contains(token)) {
- properties.push.call(this, property);
- }
- }
- if (this._isSVG) {
- this._.setAttribute('class', '' + this);
- } else {
- this._.className = '' + this;
- }
- },
- contains: (function(indexOf){
- return function contains(token) {
- i = indexOf.call(this, property = verifyToken(token));
- return -1 < i;
- };
- }([].indexOf || function (token) {
- i = this.length;
- while(i-- && this[i] !== token){}
- return i;
- })),
- item: function item(i) {
- return this[i] || null;
- },
- remove: function remove() {
- for(var j = 0, token; j < arguments.length; j++) {
- token = arguments[j];
- if(this.contains(token)) {
- properties.splice.call(this, i, 1);
- }
- }
- if (this._isSVG) {
- this._.setAttribute('class', '' + this);
- } else {
- this._.className = '' + this;
- }
- },
- toggle: toggle,
- toString: function toString() {
- return properties.join.call(this, SPACE);
- }
- };
-
- if (SVGElement && !(CLASS_LIST in SVGElement.prototype)) {
- defineProperty(SVGElement.prototype, CLASS_LIST, classListDescriptor);
- }
-
- // http://www.w3.org/TR/dom/#domtokenlist
- // iOS 5.1 has completely screwed this property
- // classList in ElementPrototype is false
- // but it's actually there as getter
- if (!(CLASS_LIST in document.documentElement)) {
- defineProperty(ElementPrototype, CLASS_LIST, classListDescriptor);
- } else {
- // iOS 5.1 and Nokia ASHA do not support multiple add or remove
- // trying to detect and fix that in here
- TemporaryTokenList = createElement('div')[CLASS_LIST];
- TemporaryTokenList.add('a', 'b', 'a');
- if ('a\x20b' != TemporaryTokenList) {
- // no other way to reach original methods in iOS 5.1
- TemporaryPrototype = TemporaryTokenList.constructor.prototype;
- if (!('add' in TemporaryPrototype)) {
- // ASHA double fails in here
- TemporaryPrototype = window.TemporaryTokenList.prototype;
- }
- wrapVerifyToken = function (original) {
- return function () {
- var i = 0;
- while (i < arguments.length) {
- original.call(this, arguments[i++]);
- }
- };
- };
- TemporaryPrototype.add = wrapVerifyToken(TemporaryPrototype.add);
- TemporaryPrototype.remove = wrapVerifyToken(TemporaryPrototype.remove);
- // toggle is broken too ^_^ ... let's fix it
- TemporaryPrototype.toggle = toggle;
- }
- }
-
- if (!('contains' in NodePrototype)) {
- defineProperty(NodePrototype, 'contains', {
- value: function (el) {
- while (el && el !== this) el = el.parentNode;
- return this === el;
- }
- });
- }
-
- if (!('head' in document)) {
- defineProperty(document, 'head', {
- get: function () {
- return head || (
- head = document.getElementsByTagName('head')[0]
- );
- }
- });
- }
-
- // requestAnimationFrame partial polyfill
- (function () {
- for (var
- raf,
- rAF = window.requestAnimationFrame,
- cAF = window.cancelAnimationFrame,
- prefixes = ['o', 'ms', 'moz', 'webkit'],
- i = prefixes.length;
- !cAF && i--;
- ) {
- rAF = rAF || window[prefixes[i] + 'RequestAnimationFrame'];
- cAF = window[prefixes[i] + 'CancelAnimationFrame'] ||
- window[prefixes[i] + 'CancelRequestAnimationFrame'];
- }
- if (!cAF) {
- // some FF apparently implemented rAF but no cAF
- if (rAF) {
- raf = rAF;
- rAF = function (callback) {
- var goOn = true;
- raf(function () {
- if (goOn) callback.apply(this, arguments);
- });
- return function () {
- goOn = false;
- };
- };
- cAF = function (id) {
- id();
- };
- } else {
- rAF = function (callback) {
- return setTimeout(callback, 15, 15);
- };
- cAF = function (id) {
- clearTimeout(id);
- };
- }
- }
- window.requestAnimationFrame = rAF;
- window.cancelAnimationFrame = cAF;
- }());
-
- // http://www.w3.org/TR/dom/#customevent
- try{new window.CustomEvent('?');}catch(o_O){
- window.CustomEvent = function(
- eventName,
- defaultInitDict
- ){
-
- // the infamous substitute
- function CustomEvent(type, eventInitDict) {
- /*jshint eqnull:true */
- var event = document.createEvent(eventName);
- if (typeof type != 'string') {
- throw new Error('An event name must be provided');
- }
- if (eventName == 'Event') {
- event.initCustomEvent = initCustomEvent;
- }
- if (eventInitDict == null) {
- eventInitDict = defaultInitDict;
- }
- event.initCustomEvent(
- type,
- eventInitDict.bubbles,
- eventInitDict.cancelable,
- eventInitDict.detail
- );
- return event;
- }
-
- // attached at runtime
- function initCustomEvent(
- type, bubbles, cancelable, detail
- ) {
- /*jshint validthis:true*/
- this.initEvent(type, bubbles, cancelable);
- this.detail = detail;
- }
-
- // that's it
- return CustomEvent;
- }(
- // is this IE9 or IE10 ?
- // where CustomEvent is there
- // but not usable as construtor ?
- window.CustomEvent ?
- // use the CustomEvent interface in such case
- 'CustomEvent' : 'Event',
- // otherwise the common compatible one
- {
- bubbles: false,
- cancelable: false,
- detail: null
- }
- );
- }
-
- // window.Event as constructor
- try { new Event('_'); } catch (o_O) {
- /* jshint -W022 */
- o_O = (function ($Event) {
- function Event(type, init) {
- enoughArguments(arguments.length, 'Event');
- var out = document.createEvent('Event');
- if (!init) init = {};
- out.initEvent(
- type,
- !!init.bubbles,
- !!init.cancelable
- );
- return out;
- }
- Event.prototype = $Event.prototype;
- return Event;
- }(window.Event || function Event() {}));
- defineProperty(window, 'Event', {value: o_O});
- // Android 4 gotcha
- if (Event !== o_O) Event = o_O;
- }
-
- // window.KeyboardEvent as constructor
- try { new KeyboardEvent('_', {}); } catch (o_O) {
- /* jshint -W022 */
- o_O = (function ($KeyboardEvent) {
- // code inspired by https://gist.github.com/termi/4654819
- var
- initType = 0,
- defaults = {
- char: '',
- key: '',
- location: 0,
- ctrlKey: false,
- shiftKey: false,
- altKey: false,
- metaKey: false,
- altGraphKey: false,
- repeat: false,
- locale: navigator.language,
- detail: 0,
- bubbles: false,
- cancelable: false,
- keyCode: 0,
- charCode: 0,
- which: 0
- },
- eventType
- ;
- try {
- var e = document.createEvent('KeyboardEvent');
- e.initKeyboardEvent(
- 'keyup', false, false, window, '+', 3,
- true, false, true, false, false
- );
- initType = (
- (e.keyIdentifier || e.key) == '+' &&
- (e.keyLocation || e.location) == 3
- ) && (
- e.ctrlKey ? e.altKey ? 1 : 3 : e.shiftKey ? 2 : 4
- ) || 9;
- } catch(o_O) {}
- eventType = 0 < initType ? 'KeyboardEvent' : 'Event';
-
- function getModifier(init) {
- for (var
- out = [],
- keys = [
- 'ctrlKey',
- 'Control',
- 'shiftKey',
- 'Shift',
- 'altKey',
- 'Alt',
- 'metaKey',
- 'Meta',
- 'altGraphKey',
- 'AltGraph'
- ],
- i = 0; i < keys.length; i += 2
- ) {
- if (init[keys[i]])
- out.push(keys[i + 1]);
- }
- return out.join(' ');
- }
-
- function withDefaults(target, source) {
- for (var key in source) {
- if (
- source.hasOwnProperty(key) &&
- !source.hasOwnProperty.call(target, key)
- ) target[key] = source[key];
- }
- return target;
- }
-
- function withInitValues(key, out, init) {
- try {
- out[key] = init[key];
- } catch(o_O) {}
- }
-
- function KeyboardEvent(type, init) {
- enoughArguments(arguments.length, 'KeyboardEvent');
- init = withDefaults(init || {}, defaults);
- var
- out = document.createEvent(eventType),
- ctrlKey = init.ctrlKey,
- shiftKey = init.shiftKey,
- altKey = init.altKey,
- metaKey = init.metaKey,
- altGraphKey = init.altGraphKey,
- modifiers = initType > 3 ? getModifier(init) : null,
- key = String(init.key),
- chr = String(init.char),
- location = init.location,
- keyCode = init.keyCode || (
- (init.keyCode = key) &&
- key.charCodeAt(0)
- ) || 0,
- charCode = init.charCode || (
- (init.charCode = chr) &&
- chr.charCodeAt(0)
- ) || 0,
- bubbles = init.bubbles,
- cancelable = init.cancelable,
- repeat = init.repeat,
- locale = init.locale,
- view = init.view || window,
- args
- ;
- if (!init.which) init.which = init.keyCode;
- if ('initKeyEvent' in out) {
- out.initKeyEvent(
- type, bubbles, cancelable, view,
- ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode
- );
- } else if (0 < initType && 'initKeyboardEvent' in out) {
- args = [type, bubbles, cancelable, view];
- switch (initType) {
- case 1:
- args.push(key, location, ctrlKey, shiftKey, altKey, metaKey, altGraphKey);
- break;
- case 2:
- args.push(ctrlKey, altKey, shiftKey, metaKey, keyCode, charCode);
- break;
- case 3:
- args.push(key, location, ctrlKey, altKey, shiftKey, metaKey, altGraphKey);
- break;
- case 4:
- args.push(key, location, modifiers, repeat, locale);
- break;
- default:
- args.push(char, key, location, modifiers, repeat, locale);
- }
- out.initKeyboardEvent.apply(out, args);
- } else {
- out.initEvent(type, bubbles, cancelable);
- }
- for (key in out) {
- if (defaults.hasOwnProperty(key) && out[key] !== init[key]) {
- withInitValues(key, out, init);
- }
- }
- return out;
- }
- KeyboardEvent.prototype = $KeyboardEvent.prototype;
- return KeyboardEvent;
- }(window.KeyboardEvent || function KeyboardEvent() {}));
- defineProperty(window, 'KeyboardEvent', {value: o_O});
- // Android 4 gotcha
- if (KeyboardEvent !== o_O) KeyboardEvent = o_O;
- }
-
- // window.MouseEvent as constructor
- try { new MouseEvent('_', {}); } catch (o_O) {
- /* jshint -W022 */
- o_O = (function ($MouseEvent) {
- function MouseEvent(type, init) {
- enoughArguments(arguments.length, 'MouseEvent');
- var out = document.createEvent('MouseEvent');
- if (!init) init = {};
- out.initMouseEvent(
- type,
- !!init.bubbles,
- !!init.cancelable,
- init.view || window,
- init.detail || 1,
- init.screenX || 0,
- init.screenY || 0,
- init.clientX || 0,
- init.clientY || 0,
- !!init.ctrlKey,
- !!init.altKey,
- !!init.shiftKey,
- !!init.metaKey,
- init.button || 0,
- init.relatedTarget || null
- );
- return out;
- }
- MouseEvent.prototype = $MouseEvent.prototype;
- return MouseEvent;
- }(window.MouseEvent || function MouseEvent() {}));
- defineProperty(window, 'MouseEvent', {value: o_O});
- // Android 4 gotcha
- if (MouseEvent !== o_O) MouseEvent = o_O;
- }
-
- if (!document.querySelectorAll('*').forEach) {
- (function () {
- function patch(what) {
- var querySelectorAll = what.querySelectorAll;
- what.querySelectorAll = function qSA(css) {
- var result = querySelectorAll.call(this, css);
- result.forEach = Array.prototype.forEach;
- return result;
- };
- }
- patch(document);
- patch(Element.prototype);
- }());
- }
-
- try {
- // https://drafts.csswg.org/selectors-4/#the-scope-pseudo
- document.querySelector(':scope *');
- } catch(o_O) {
- (function () {
- var dataScope = 'data-scope-' + (Math.random() * 1e9 >>> 0);
- var proto = Element.prototype;
- var querySelector = proto.querySelector;
- var querySelectorAll = proto.querySelectorAll;
- proto.querySelector = function qS(css) {
- return find(this, querySelector, css);
- };
- proto.querySelectorAll = function qSA(css) {
- return find(this, querySelectorAll, css);
- };
- function find(node, method, css) {
- node.setAttribute(dataScope, null);
- var result = method.call(
- node,
- String(css).replace(
- /(^|,\s*)(:scope([ >]|$))/g,
- function ($0, $1, $2, $3) {
- return $1 + '[' + dataScope + ']' + ($3 || ' ');
- }
- )
- );
- node.removeAttribute(dataScope);
- return result;
- }
- }());
- }
-}(window));
-(function (global){'use strict';
-
- // a WeakMap fallback for DOM nodes only used as key
- var DOMMap = global.WeakMap || (function () {
-
- var
- counter = 0,
- dispatched = false,
- drop = false,
- value
- ;
-
- function dispatch(key, ce, shouldDrop) {
- drop = shouldDrop;
- dispatched = false;
- value = undefined;
- key.dispatchEvent(ce);
- }
-
- function Handler(value) {
- this.value = value;
- }
-
- Handler.prototype.handleEvent = function handleEvent(e) {
- dispatched = true;
- if (drop) {
- e.currentTarget.removeEventListener(e.type, this, false);
- } else {
- value = this.value;
- }
- };
-
- function DOMMap() {
- counter++; // make id clashing highly improbable
- this.__ce__ = new Event(('@DOMMap:' + counter) + Math.random());
- }
-
- DOMMap.prototype = {
- 'constructor': DOMMap,
- 'delete': function del(key) {
- return dispatch(key, this.__ce__, true), dispatched;
- },
- 'get': function get(key) {
- dispatch(key, this.__ce__, false);
- var v = value;
- value = undefined;
- return v;
- },
- 'has': function has(key) {
- return dispatch(key, this.__ce__, false), dispatched;
- },
- 'set': function set(key, value) {
- dispatch(key, this.__ce__, true);
- key.addEventListener(this.__ce__.type, new Handler(value), false);
- return this;
- },
- };
-
- return DOMMap;
-
- }());
-
- function Dict() {}
- Dict.prototype = (Object.create || Object)(null);
-
- // https://dom.spec.whatwg.org/#interface-eventtarget
-
- function createEventListener(type, callback, options) {
- function eventListener(e) {
- if (eventListener.once) {
- e.currentTarget.removeEventListener(
- e.type,
- callback,
- eventListener
- );
- eventListener.removed = true;
- }
- if (eventListener.passive) {
- e.preventDefault = createEventListener.preventDefault;
- }
- if (typeof eventListener.callback === 'function') {
- /* jshint validthis: true */
- eventListener.callback.call(this, e);
- } else if (eventListener.callback) {
- eventListener.callback.handleEvent(e);
- }
- if (eventListener.passive) {
- delete e.preventDefault;
- }
- }
- eventListener.type = type;
- eventListener.callback = callback;
- eventListener.capture = !!options.capture;
- eventListener.passive = !!options.passive;
- eventListener.once = !!options.once;
- // currently pointless but specs say to use it, so ...
- eventListener.removed = false;
- return eventListener;
- }
-
- createEventListener.preventDefault = function preventDefault() {};
-
- var
- Event = global.CustomEvent,
- dE = global.dispatchEvent,
- aEL = global.addEventListener,
- rEL = global.removeEventListener,
- counter = 0,
- increment = function () { counter++; },
- indexOf = [].indexOf || function indexOf(value){
- var length = this.length;
- while(length--) {
- if (this[length] === value) {
- break;
- }
- }
- return length;
- },
- getListenerKey = function (options) {
- return ''.concat(
- options.capture ? '1' : '0',
- options.passive ? '1' : '0',
- options.once ? '1' : '0'
- );
- },
- augment
- ;
-
- try {
- aEL('_', increment, {once: true});
- dE(new Event('_'));
- dE(new Event('_'));
- rEL('_', increment, {once: true});
- } catch(o_O) {}
-
- if (counter !== 1) {
- (function () {
- var dm = new DOMMap();
- function createAEL(aEL) {
- return function addEventListener(type, handler, options) {
- if (options && typeof options !== 'boolean') {
- var
- info = dm.get(this),
- key = getListenerKey(options),
- i, tmp, wrap
- ;
- if (!info) dm.set(this, (info = new Dict()));
- if (!(type in info)) info[type] = {
- handler: [],
- wrap: []
- };
- tmp = info[type];
- i = indexOf.call(tmp.handler, handler);
- if (i < 0) {
- i = tmp.handler.push(handler) - 1;
- tmp.wrap[i] = (wrap = new Dict());
- } else {
- wrap = tmp.wrap[i];
- }
- if (!(key in wrap)) {
- wrap[key] = createEventListener(type, handler, options);
- aEL.call(this, type, wrap[key], wrap[key].capture);
- }
- } else {
- aEL.call(this, type, handler, options);
- }
- };
- }
- function createREL(rEL) {
- return function removeEventListener(type, handler, options) {
- if (options && typeof options !== 'boolean') {
- var
- info = dm.get(this),
- key, i, tmp, wrap
- ;
- if (info && (type in info)) {
- tmp = info[type];
- i = indexOf.call(tmp.handler, handler);
- if (-1 < i) {
- key = getListenerKey(options);
- wrap = tmp.wrap[i];
- if (key in wrap) {
- rEL.call(this, type, wrap[key], wrap[key].capture);
- delete wrap[key];
- // return if there are other wraps
- for (key in wrap) return;
- // otherwise remove all the things
- tmp.handler.splice(i, 1);
- tmp.wrap.splice(i, 1);
- // if there are no other handlers
- if (tmp.handler.length === 0)
- // drop the info[type] entirely
- delete info[type];
- }
- }
- }
- } else {
- rEL.call(this, type, handler, options);
- }
- };
- }
-
- augment = function (Constructor) {
- if (!Constructor) return;
- var proto = Constructor.prototype;
- proto.addEventListener = createAEL(proto.addEventListener);
- proto.removeEventListener = createREL(proto.removeEventListener);
- };
-
- if (global.EventTarget) {
- augment(EventTarget);
- } else {
- augment(global.Text);
- augment(global.Element || global.HTMLElement);
- augment(global.HTMLDocument);
- augment(global.Window || {prototype:global});
- augment(global.XMLHttpRequest);
- }
-
- }());
- }
-
-}(window));
diff --git a/tgui/packages/tgui/polyfills/html5shiv.js b/tgui/packages/tgui/polyfills/html5shiv.js
deleted file mode 100644
index c2f2060a1db9..000000000000
--- a/tgui/packages/tgui/polyfills/html5shiv.js
+++ /dev/null
@@ -1,330 +0,0 @@
-/**
- * @file
- * @copyright 2014 Alexander Farkas
- * @license MIT
- */
-
-/* eslint-disable */
-(function(window, document) {
-/*jshint evil:true */
- /** version */
- var version = '3.7.3';
-
- /** Preset options */
- var options = window.html5 || {};
-
- /** Used to skip problem elements */
- var reSkip = /^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i;
-
- /** Not all elements can be cloned in IE **/
- var saveClones = /^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i;
-
- /** Detect whether the browser supports default html5 styles */
- var supportsHtml5Styles;
-
- /** Name of the expando, to work with multiple documents or to re-shiv one document */
- var expando = '_html5shiv';
-
- /** The id for the the documents expando */
- var expanID = 0;
-
- /** Cached data for each document */
- var expandoData = {};
-
- /** Detect whether the browser supports unknown elements */
- var supportsUnknownElements;
-
- (function() {
- try {
- var a = document.createElement('a');
- a.innerHTML = ' ';
- //if the hidden property is implemented we can assume, that the browser supports basic HTML5 Styles
- supportsHtml5Styles = ('hidden' in a);
-
- supportsUnknownElements = a.childNodes.length == 1 || (function() {
- // assign a false positive if unable to shiv
- (document.createElement)('a');
- var frag = document.createDocumentFragment();
- return (
- typeof frag.cloneNode == 'undefined' ||
- typeof frag.createDocumentFragment == 'undefined' ||
- typeof frag.createElement == 'undefined'
- );
- }());
- } catch(e) {
- // assign a false positive if detection fails => unable to shiv
- supportsHtml5Styles = true;
- supportsUnknownElements = true;
- }
-
- }());
-
- /*--------------------------------------------------------------------------*/
-
- /**
- * Creates a style sheet with the given CSS text and adds it to the document.
- * @private
- * @param {Document} ownerDocument The document.
- * @param {String} cssText The CSS text.
- * @returns {StyleSheet} The style element.
- */
- function addStyleSheet(ownerDocument, cssText) {
- var p = ownerDocument.createElement('p'),
- parent = ownerDocument.getElementsByTagName('head')[0] || ownerDocument.documentElement;
-
- p.innerHTML = 'x';
- return parent.insertBefore(p.lastChild, parent.firstChild);
- }
-
- /**
- * Returns the value of `html5.elements` as an array.
- * @private
- * @returns {Array} An array of shived element node names.
- */
- function getElements() {
- var elements = html5.elements;
- return typeof elements == 'string' ? elements.split(' ') : elements;
- }
-
- /**
- * Extends the built-in list of html5 elements
- * @memberOf html5
- * @param {String|Array} newElements whitespace separated list or array of new element names to shiv
- * @param {Document} ownerDocument The context document.
- */
- function addElements(newElements, ownerDocument) {
- var elements = html5.elements;
- if(typeof elements != 'string'){
- elements = elements.join(' ');
- }
- if(typeof newElements != 'string'){
- newElements = newElements.join(' ');
- }
- html5.elements = elements +' '+ newElements;
- shivDocument(ownerDocument);
- }
-
- /**
- * Returns the data associated to the given document
- * @private
- * @param {Document} ownerDocument The document.
- * @returns {Object} An object of data.
- */
- function getExpandoData(ownerDocument) {
- var data = expandoData[ownerDocument[expando]];
- if (!data) {
- data = {};
- expanID++;
- ownerDocument[expando] = expanID;
- expandoData[expanID] = data;
- }
- return data;
- }
-
- /**
- * returns a shived element for the given nodeName and document
- * @memberOf html5
- * @param {String} nodeName name of the element
- * @param {Document|DocumentFragment} ownerDocument The context document.
- * @returns {Object} The shived element.
- */
- function createElement(nodeName, ownerDocument, data){
- if (!ownerDocument) {
- ownerDocument = document;
- }
- if(supportsUnknownElements){
- return ownerDocument.createElement(nodeName);
- }
- if (!data) {
- data = getExpandoData(ownerDocument);
- }
- var node;
-
- if (data.cache[nodeName]) {
- node = data.cache[nodeName].cloneNode();
- } else if (saveClones.test(nodeName)) {
- node = (data.cache[nodeName] = data.createElem(nodeName)).cloneNode();
- } else {
- node = data.createElem(nodeName);
- }
-
- // Avoid adding some elements to fragments in IE < 9 because
- // * Attributes like `name` or `type` cannot be set/changed once an element
- // is inserted into a document/fragment
- // * Link elements with `src` attributes that are inaccessible, as with
- // a 403 response, will cause the tab/window to crash
- // * Script elements appended to fragments will execute when their `src`
- // or `text` property is set
- return node.canHaveChildren && !reSkip.test(nodeName) && !node.tagUrn ? data.frag.appendChild(node) : node;
- }
-
- /**
- * returns a shived DocumentFragment for the given document
- * @memberOf html5
- * @param {Document} ownerDocument The context document.
- * @returns {Object} The shived DocumentFragment.
- */
- function createDocumentFragment(ownerDocument, data){
- if (!ownerDocument) {
- ownerDocument = document;
- }
- if(supportsUnknownElements){
- return ownerDocument.createDocumentFragment();
- }
- data = data || getExpandoData(ownerDocument);
- var clone = data.frag.cloneNode(),
- i = 0,
- elems = getElements(),
- l = elems.length;
- for(;i