/*!
 * perfect-scrollbar v1.4.0
 * (c) 2018 Hyunje Jun
 * @license MIT
 */

!function(t, e) {
	"object"==typeof exports&&"undefined"!=typeof module?module.exports=e(): "function"==typeof define&&define.amd?define(e):t.PerfectScrollbar=e()
}

(this, function() {
	"use strict";
	function t(t) {
		return getComputedStyle(t)
	}
	function e(t, e) {
		for(var i in e) {
			var r=e[i];
			"number"==typeof r&&(r+="px"), t.style[i]=r
		}
		return t
	}
	function i(t) {
		var e=document.createElement("div");
		return e.className=t, e
	}
	function r(t, e) {
		if(!v)throw new Error("No element matching method supported");
		return v.call(t, e)
	}
	function l(t) {
		t.remove?t.remove(): t.parentNode&&t.parentNode.removeChild(t)
	}
	function n(t, e) {
		return Array.prototype.filter.call(t.children, function(t) {
			return r(t, e)
		}
		)
	}
	function o(t, e) {
		var i=t.element.classList, r=m.state.scrolling(e);
		i.contains(r)?clearTimeout(Y[e]): i.add(r)
	}
	function s(t, e) {
		Y[e]=setTimeout(function() {
			return t.isAlive&&t.element.classList.remove(m.state.scrolling(e))
		}
		, t.settings.scrollingThreshold)
	}
	function a(t, e) {
		o(t, e), s(t, e)
	}
	function c(t) {
		if("function"==typeof window.CustomEvent)return new CustomEvent(t);
		var e=document.createEvent("CustomEvent");
		return e.initCustomEvent(t, !1, !1, void 0), e
	}
	function h(t, e, i, r, l) {
		var n=i[0], o=i[1], s=i[2], h=i[3], u=i[4], d=i[5];
		void 0===r&&(r=!0), void 0===l&&(l=!1);
		var f=t.element;
		t.reach[h]=null, f[s]<1&&(t.reach[h]="start"), f[s]>t[n]-t[o]-1&&(t.reach[h]="end"), e&&(f.dispatchEvent(c("ps-scroll-"+h)), e<0?f.dispatchEvent(c("ps-scroll-"+u)): e>0&&f.dispatchEvent(c("ps-scroll-"+d)), r&&a(t, h)), t.reach[h]&&(e||l)&&f.dispatchEvent(c("ps-"+h+"-reach-"+t.reach[h]))
	}
	function u(t) {
		return parseInt(t, 10)||0
	}
	function d(t) {
		return r(t, "input,[contenteditable]")||r(t, "select,[contenteditable]")||r(t, "textarea,[contenteditable]")||r(t, "button,[contenteditable]")
	}
	function f(e) {
		var i=t(e);
		return u(i.width)+u(i.paddingLeft)+u(i.paddingRight)+u(i.borderLeftWidth)+u(i.borderRightWidth)
	}
	function p(t, e) {
		return t.settings.minScrollbarLength&&(e=Math.max(e, t.settings.minScrollbarLength)), t.settings.maxScrollbarLength&&(e=Math.min(e, t.settings.maxScrollbarLength)), e
	}
	function b(t, i) {
		var r= {
			width: i.railXWidth
		}
		, l=Math.floor(t.scrollTop);
		i.isRtl?r.right=i.negativeScrollAdjustment+t.scrollLeft+i.containerWidth-i.contentWidth:r.right=t.scrollLeft, i.isScrollbarXUsingBottom?r.bottom=i.scrollbarXBottom-l:r.top=i.scrollbarXTop+l, e(i.scrollbarXRail, r);
		var n= {
			top: l, height:i.railYHeight
		}
		;
		i.isScrollbarYUsingRight?i.isRtl?n.left=i.contentWidth-(i.negativeScrollAdjustment+t.scrollLeft)-i.scrollbarYRight-i.scrollbarYOuterWidth:n.left=i.scrollbarYRight-t.scrollLeft:i.isRtl?n.right=i.negativeScrollAdjustment+t.scrollLeft+2*i.containerWidth-i.contentWidth-i.scrollbarYLeft-i.scrollbarYOuterWidth:n.right=i.scrollbarYLeft+t.scrollLeft, e(i.scrollbarYRail, n), e(i.scrollbarX, {
			right: i.scrollbarXLeft, width:i.scrollbarXWidth-i.railBorderXWidth
		}
		), e(i.scrollbarY, {
			top: i.scrollbarYTop, height:i.scrollbarYHeight-i.railBorderYWidth
		}
		)
	}
	function g(t, e) {
		function i(e) {
			b[d]=g+Y*(e[a]-v), o(t, f), R(t), e.stopPropagation(), e.preventDefault()
		}
		function r() {
			s(t, f), t[p].classList.remove(m.state.clicking), t.event.unbind(t.ownerDocument, "mousemove", i)
		}
		var l=e[0], n=e[1], a=e[2], c=e[3], h=e[4], u=e[5], d=e[6], f=e[7], p=e[8], b=t.element, g=null, v=null, Y=null;
		t.event.bind(t[h], "mousedown", function(e) {
			g=b[d], v=e[a], Y=(t[n]-t[l])/(t[c]-t[u]), t.event.bind(t.ownerDocument, "mousemove", i), t.event.once(t.ownerDocument, "mouseup", r), t[p].classList.add(m.state.clicking), e.stopPropagation(), e.preventDefault()
		}
		)
	}
	var v="undefined"!=typeof Element&&(Element.prototype.matches||Element.prototype.webkitMatchesSelector||Element.prototype.mozMatchesSelector||Element.prototype.msMatchesSelector), m= {
		main:"ps", element: {
			thumb:function(t) {
				return"ps__thumb-"+t
			}
			, rail:function(t) {
				return"ps__rail-"+t
			}
			, consuming:"ps__child--consume"
		}
		, state: {
			focus:"ps--focus", clicking:"ps--clicking", active:function(t) {
				return"ps--active-"+t
			}
			, scrolling:function(t) {
				return"ps--scrolling-"+t
			}
		}
	}
	, Y= {
		x: null, y:null
	}
	, X=function(t) {
		this.element=t, this.handlers= {}
	}
	, w= {
		isEmpty: {
			configurable: !0
		}
	}
	;
	X.prototype.bind=function(t, e) {
		void 0===this.handlers[t]&&(this.handlers[t]=[]), this.handlers[t].push(e), this.element.addEventListener(t, e, !1)
	}
	, X.prototype.unbind=function(t, e) {
		var i=this;
		this.handlers[t]=this.handlers[t].filter(function(r) {
			return!(!e||r===e)||(i.element.removeEventListener(t, r, !1), !1)
		}
		)
	}
	, X.prototype.unbindAll=function() {
		var t=this;
		for(var e in t.handlers)t.unbind(e)
	}
	, w.isEmpty.get=function() {
		var t=this;
		return Object.keys(this.handlers).every(function(e) {
			return 0===t.handlers[e].length
		}
		)
	}
	, Object.defineProperties(X.prototype, w);
	var y=function() {
		this.eventElements=[]
	}
	;
	y.prototype.eventElement=function(t) {
		var e=this.eventElements.filter(function(e) {
			return e.element===t
		}
		)[0];
		return e||(e=new X(t), this.eventElements.push(e)), e
	}
	, y.prototype.bind=function(t, e, i) {
		this.eventElement(t).bind(e, i)
	}
	, y.prototype.unbind=function(t, e, i) {
		var r=this.eventElement(t);
		r.unbind(e, i), r.isEmpty&&this.eventElements.splice(this.eventElements.indexOf(r), 1)
	}
	, y.prototype.unbindAll=function() {
		this.eventElements.forEach(function(t) {
			return t.unbindAll()
		}
		), this.eventElements=[]
	}
	, y.prototype.once=function(t, e, i) {
		var r=this.eventElement(t), l=function(t) {
			r.unbind(e, l), i(t)
		}
		;
		r.bind(e, l)
	}
	;
	var W=function(t, e, i, r, l) {
		void 0===r&&(r=!0), void 0===l&&(l=!1);
		var n;
		if("top"===e)n=["contentHeight", "containerHeight", "scrollTop", "y", "up", "down"];
		else {
			if("right"!==e)throw new Error("A proper axis should be provided");
			n=["contentWidth", "containerWidth", "scrollLeft", "x", "right", "left"]
		}
		h(t, i, n, r, l)
	}
	, L= {
		isWebKit: "undefined"!=typeof document&&"WebkitAppearance"in document.documentElement.style, supportsTouch:"undefined"!=typeof window&&("ontouchstart"in window||window.DocumentTouch&&document instanceof window.DocumentTouch), supportsIePointer:"undefined"!=typeof navigator&&navigator.msMaxTouchPoints, isChrome:"undefined"!=typeof navigator&&/Chrome/i.test(navigator&&navigator.userAgent)
	}
	, R=function(t) {
		var e=t.element, i=Math.floor(e.scrollTop);
		t.containerWidth=e.clientWidth, t.containerHeight=e.clientHeight, t.contentWidth=e.scrollWidth, t.contentHeight=e.scrollHeight, e.contains(t.scrollbarXRail)||(n(e, m.element.rail("x")).forEach(function(t) {
			return l(t)
		}
		), e.appendChild(t.scrollbarXRail)), e.contains(t.scrollbarYRail)||(n(e, m.element.rail("y")).forEach(function(t) {
			return l(t)
		}
		), e.appendChild(t.scrollbarYRail)), !t.settings.suppressScrollX&&t.containerWidth+t.settings.scrollXMarginOffset<t.contentWidth?(t.scrollbarXActive=!0, t.railXWidth=t.containerWidth-t.railXMarginWidth, t.railXRatio=t.containerWidth/t.railXWidth, t.scrollbarXWidth=p(t, u(t.railXWidth*t.containerWidth/t.contentWidth)), t.scrollbarXLeft=u((t.negativeScrollAdjustment+e.scrollLeft)*(t.railXWidth-t.scrollbarXWidth)/(t.contentWidth-t.containerWidth))):t.scrollbarXActive=!1, !t.settings.suppressScrollY&&t.containerHeight+t.settings.scrollYMarginOffset<t.contentHeight?(t.scrollbarYActive=!0, t.railYHeight=t.containerHeight-t.railYMarginHeight, t.railYRatio=t.containerHeight/t.railYHeight, t.scrollbarYHeight=p(t, u(t.railYHeight*t.containerHeight/t.contentHeight)), t.scrollbarYTop=u(i*(t.railYHeight-t.scrollbarYHeight)/(t.contentHeight-t.containerHeight))):t.scrollbarYActive=!1, t.scrollbarXLeft>=t.railXWidth-t.scrollbarXWidth&&(t.scrollbarXLeft=t.railXWidth-t.scrollbarXWidth), t.scrollbarYTop>=t.railYHeight-t.scrollbarYHeight&&(t.scrollbarYTop=t.railYHeight-t.scrollbarYHeight), b(e, t), t.scrollbarXActive?e.classList.add(m.state.active("x")):(e.classList.remove(m.state.active("x")), t.scrollbarXWidth=0, t.scrollbarXLeft=0, e.scrollLeft=0), t.scrollbarYActive?e.classList.add(m.state.active("y")):(e.classList.remove(m.state.active("y")), t.scrollbarYHeight=0, t.scrollbarYTop=0, e.scrollTop=0)
	}
	, T= {
		"click-rail":function(t) {
			t.event.bind(t.scrollbarY, "mousedown", function(t) {
				return t.stopPropagation()
			}
			), t.event.bind(t.scrollbarYRail, "mousedown", function(e) {
				var i=e.pageY-window.pageYOffset-t.scrollbarYRail.getBoundingClientRect().top>t.scrollbarYTop?1: -1;
				t.element.scrollTop+=i*t.containerHeight, R(t), e.stopPropagation()
			}
			), t.event.bind(t.scrollbarX, "mousedown", function(t) {
				return t.stopPropagation()
			}
			), t.event.bind(t.scrollbarXRail, "mousedown", function(e) {
				var i=e.pageX-window.pageXOffset-t.scrollbarXRail.getBoundingClientRect().right>t.scrollbarXLeft?1: -1;
				t.element.scrollLeft+=i*t.containerWidth, R(t), e.stopPropagation()
			}
			)
		}
		, "drag-thumb":function(t) {
			g(t, ["containerWidth", "contentWidth", "pageX", "railXWidth", "scrollbarX", "scrollbarXWidth", "scrollLeft", "x", "scrollbarXRail"]), g(t, ["containerHeight", "contentHeight", "pageY", "railYHeight", "scrollbarY", "scrollbarYHeight", "scrollTop", "y", "scrollbarYRail"])
		}
		, keyboard:function(t) {
			function e(e, r) {
				var l=Math.floor(i.scrollTop);
				if(0===e) {
					if(!t.scrollbarYActive)return!1;
					if(0===l&&r>0||l>=t.contentHeight-t.containerHeight&&r<0)return!t.settings.wheelPropagation
				}
				var n=i.scrollLeft;
				if(0===r) {
					if(!t.scrollbarXActive)return!1;
					if(0===n&&e<0||n>=t.contentWidth-t.containerWidth&&e>0)return!t.settings.wheelPropagation
				}
				return!0
			}
			var i=t.element, l=function() {
				return r(i, ":hover")
			}
			, n=function() {
				return r(t.scrollbarX, ":focus")||r(t.scrollbarY, ":focus")
			}
			;
			t.event.bind(t.ownerDocument, "keydown", function(r) {
				if(!(r.isDefaultPrevented&&r.isDefaultPrevented()||r.defaultPrevented)&&(l()||n())) {
					var o=document.activeElement?document.activeElement: t.ownerDocument.activeElement;
					if(o) {
						if("IFRAME"===o.tagName)o=o.contentDocument.activeElement;
						else for(;
						o.shadowRoot;
						)o=o.shadowRoot.activeElement;
						if(d(o))return
					}
					var s=0, a=0;
					switch(r.which) {
						case 37: s=r.metaKey?-t.contentWidth:r.altKey?-t.containerWidth:-30;
						break;
						case 38: a=r.metaKey?t.contentHeight:r.altKey?t.containerHeight:30;
						break;
						case 39: s=r.metaKey?t.contentWidth:r.altKey?t.containerWidth:30;
						break;
						case 40: a=r.metaKey?-t.contentHeight:r.altKey?-t.containerHeight:-30;
						break;
						case 32: a=r.shiftKey?t.containerHeight:-t.containerHeight;
						break;
						case 33: a=t.containerHeight;
						break;
						case 34: a=-t.containerHeight;
						break;
						case 36: a=t.contentHeight;
						break;
						case 35: a=-t.contentHeight;
						break;
						default: return
					}
					t.settings.suppressScrollX&&0!==s||t.settings.suppressScrollY&&0!==a||(i.scrollTop-=a, i.scrollLeft+=s, R(t), e(s, a)&&r.preventDefault())
				}
			}
			)
		}
		, wheel:function(e) {
			function i(t, i) {
				var r=Math.floor(o.scrollTop), l=0===o.scrollTop, n=r+o.offsetHeight===o.scrollHeight, s=0===o.scrollLeft, a=o.scrollLeft+o.offsetWidth===o.scrollWidth;
				return!(Math.abs(i)>Math.abs(t)?l||n: s||a)||!e.settings.wheelPropagation
			}
			function r(t) {
				var e=t.deltaX, i=-1*t.deltaY;
				return void 0!==e&&void 0!==i||(e=-1*t.wheelDeltaX/6, i=t.wheelDeltaY/6), t.deltaMode&&1===t.deltaMode&&(e*=10, i*=10), e!==e&&i!==i&&(e=0, i=t.wheelDelta), t.shiftKey?[-i, -e]: [e, i]
			}
			function l(e, i, r) {
				if(!L.isWebKit&&o.querySelector("select:focus"))return!0;
				if(!o.contains(e))return!1;
				for(var l=e;
				l&&l!==o;
				) {
					if(l.classList.contains(m.element.consuming))return!0;
					var n=t(l);
					if([n.overflow, n.overflowX, n.overflowY].join("").match(/(scroll|auto)/)) {
						var s=l.scrollHeight-l.clientHeight;
						if(s>0&&!(0===l.scrollTop&&r>0||l.scrollTop===s&&r<0))return!0;
						var a=l.scrollWidth-l.clientWidth;
						if(a>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===a&&i>0))return!0
					}
					l=l.parentNode
				}
				return!1
			}
			function n(t) {
				var n=r(t), s=n[0], a=n[1];
				if(!l(t.target, s, a)) {
					var c=!1;
					e.settings.useBothWheelAxes?e.scrollbarYActive&&!e.scrollbarXActive?(a?o.scrollTop-=a*e.settings.wheelSpeed: o.scrollTop+=s*e.settings.wheelSpeed, c=!0):e.scrollbarXActive&&!e.scrollbarYActive&&(s?o.scrollLeft+=s*e.settings.wheelSpeed:o.scrollLeft-=a*e.settings.wheelSpeed, c=!0):(o.scrollTop-=a*e.settings.wheelSpeed, o.scrollLeft+=s*e.settings.wheelSpeed), R(e), (c=c||i(s, a))&&!t.ctrlKey&&(t.stopPropagation(), t.preventDefault())
				}
			}
			var o=e.element;
			void 0!==window.onwheel?e.event.bind(o, "wheel", n):void 0!==window.onmousewheel&&e.event.bind(o, "mousewheel", n)
		}
		, touch:function(e) {
			function i(t, i) {
				var r=Math.floor(h.scrollTop), l=h.scrollLeft, n=Math.abs(t), o=Math.abs(i);
				if(o>n) {
					if(i<0&&r===e.contentHeight-e.containerHeight||i>0&&0===r)return 0===window.scrollY&&i>0&&L.isChrome
				}
				else if(n>o&&(t<0&&l===e.contentWidth-e.containerWidth||t>0&&0===l))return!0;
				return!0
			}
			function r(t, i) {
				h.scrollTop-=i, h.scrollLeft-=t, R(e)
			}
			function l(t) {
				return t.targetTouches?t.targetTouches[0]: t
			}
			function n(t) {
				return!(t.pointerType&&"pen"===t.pointerType&&0===t.buttons||(!t.targetTouches||1!==t.targetTouches.length)&&(!t.pointerType||"mouse"===t.pointerType||t.pointerType===t.MSPOINTER_TYPE_MOUSE))
			}
			function o(t) {
				if(n(t)) {
					var e=l(t);
					u.pageX=e.pageX, u.pageY=e.pageY, d=(new Date).getTime(), null!==p&&clearInterval(p)
				}
			}
			function s(e, i, r) {
				if(!h.contains(e))return!1;
				for(var l=e;
				l&&l!==h;
				) {
					if(l.classList.contains(m.element.consuming))return!0;
					var n=t(l);
					if([n.overflow, n.overflowX, n.overflowY].join("").match(/(scroll|auto)/)) {
						var o=l.scrollHeight-l.clientHeight;
						if(o>0&&!(0===l.scrollTop&&r>0||l.scrollTop===o&&r<0))return!0;
						var s=l.scrollLeft-l.clientWidth;
						if(s>0&&!(0===l.scrollLeft&&i<0||l.scrollLeft===s&&i>0))return!0
					}
					l=l.parentNode
				}
				return!1
			}
			function a(t) {
				if(n(t)) {
					var e=l(t), o= {
						pageX: e.pageX, pageY:e.pageY
					}
					, a=o.pageX-u.pageX, c=o.pageY-u.pageY;
					if(s(t.target, a, c))return;
					r(a, c), u=o;
					var h=(new Date).getTime(), p=h-d;
					p>0&&(f.x=a/p, f.y=c/p, d=h), i(a, c)&&t.preventDefault()
				}
			}
			function c() {
				e.settings.swipeEasing&&(clearInterval(p), p=setInterval(function() {
					e.isInitialized?clearInterval(p): f.x||f.y?Math.abs(f.x)<.01&&Math.abs(f.y)<.01?clearInterval(p):(r(30*f.x, 30*f.y), f.x*=.8, f.y*=.8):clearInterval(p)
				}
				, 10))
			}
			if(L.supportsTouch||L.supportsIePointer) {
				var h=e.element, u= {}
				, d=0, f= {}
				, p=null;
				L.supportsTouch?(e.event.bind(h, "touchstart", o), e.event.bind(h, "touchmove", a), e.event.bind(h, "touchend", c)): L.supportsIePointer&&(window.PointerEvent?(e.event.bind(h, "pointerdown", o), e.event.bind(h, "pointermove", a), e.event.bind(h, "pointerup", c)):window.MSPointerEvent&&(e.event.bind(h, "MSPointerDown", o), e.event.bind(h, "MSPointerMove", a), e.event.bind(h, "MSPointerUp", c)))
			}
		}
	}
	, H=function(r, l) {
		var n=this;
		if(void 0===l&&(l= {}
		), "string"==typeof r&&(r=document.querySelector(r)), !r||!r.nodeName)throw new Error("no element is specified to initialize PerfectScrollbar");
		this.element=r, r.classList.add(m.main), this.settings= {
			handlers: ["click-rail", "drag-thumb", "keyboard", "wheel", "touch"], maxScrollbarLength:null, minScrollbarLength:null, scrollingThreshold:1e3, scrollXMarginOffset:0, scrollYMarginOffset:0, suppressScrollX:!1, suppressScrollY:!1, swipeEasing:!0, useBothWheelAxes:!1, wheelPropagation:!0, wheelSpeed:1
		}
		;
		for(var o in l)n.settings[o]=l[o];
		this.containerWidth=null, this.containerHeight=null, this.contentWidth=null, this.contentHeight=null;
		var s=function() {
			return r.classList.add(m.state.focus)
		}
		, a=function() {
			return r.classList.remove(m.state.focus)
		}
		;
		this.isRtl="rtl"===t(r).direction, this.isNegativeScroll=function() {
			var t=r.scrollLeft, e=null;
			return r.scrollLeft=-1, e=r.scrollLeft<0, r.scrollLeft=t, e
		}
		(), this.negativeScrollAdjustment=this.isNegativeScroll?r.scrollWidth-r.clientWidth:0, this.event=new y, this.ownerDocument=r.ownerDocument||document, this.scrollbarXRail=i(m.element.rail("x")), r.appendChild(this.scrollbarXRail), this.scrollbarX=i(m.element.thumb("x")), this.scrollbarXRail.appendChild(this.scrollbarX), this.scrollbarX.setAttribute("tabindex", 0), this.event.bind(this.scrollbarX, "focus", s), this.event.bind(this.scrollbarX, "blur", a), this.scrollbarXActive=null, this.scrollbarXWidth=null, this.scrollbarXLeft=null;
		var c=t(this.scrollbarXRail);
		this.scrollbarXBottom=parseInt(c.bottom, 10), isNaN(this.scrollbarXBottom)?(this.isScrollbarXUsingBottom=!1, this.scrollbarXTop=u(c.top)):this.isScrollbarXUsingBottom=!0, this.railBorderXWidth=u(c.borderLeftWidth)+u(c.borderRightWidth), e(this.scrollbarXRail, {
			display: "block"
		}
		), this.railXMarginWidth=u(c.marginLeft)+u(c.marginRight), e(this.scrollbarXRail, {
			display: ""
		}
		), this.railXWidth=null, this.railXRatio=null, this.scrollbarYRail=i(m.element.rail("y")), r.appendChild(this.scrollbarYRail), this.scrollbarY=i(m.element.thumb("y")), this.scrollbarYRail.appendChild(this.scrollbarY), this.scrollbarY.setAttribute("tabindex", 0), this.event.bind(this.scrollbarY, "focus", s), this.event.bind(this.scrollbarY, "blur", a), this.scrollbarYActive=null, this.scrollbarYHeight=null, this.scrollbarYTop=null;
		var h=t(this.scrollbarYRail);
		this.scrollbarYRight=parseInt(h.left, 10), isNaN(this.scrollbarYRight)?(this.isScrollbarYUsingRight=!1, this.scrollbarYLeft=u(h.right)):this.isScrollbarYUsingRight=!0, this.scrollbarYOuterWidth=this.isRtl?f(this.scrollbarY):null, this.railBorderYWidth=u(h.borderTopWidth)+u(h.borderBottomWidth), e(this.scrollbarYRail, {
			display: "block"
		}
		), this.railYMarginHeight=u(h.marginTop)+u(h.marginBottom), e(this.scrollbarYRail, {
			display: ""
		}
		), this.railYHeight=null, this.railYRatio=null, this.reach= {
			x: r.scrollLeft<=0?"start":r.scrollLeft>=this.contentWidth-this.containerWidth?"end":null, y:r.scrollTop<=0?"start":r.scrollTop>=this.contentHeight-this.containerHeight?"end":null
		}
		, this.isAlive=!0, this.settings.handlers.forEach(function(t) {
			return T[t](n)
		}
		), this.lastScrollTop=Math.floor(r.scrollTop), this.lastScrollLeft=r.scrollLeft, this.event.bind(this.element, "scroll", function(t) {
			return n.onScroll(t)
		}
		), R(this)
	}
	;
	return H.prototype.update=function() {
		this.isAlive&&(this.negativeScrollAdjustment=this.isNegativeScroll?this.element.scrollWidth-this.element.clientWidth:0, e(this.scrollbarXRail, {
			display: "block"
		}
		), e(this.scrollbarYRail, {
			display: "block"
		}
		), this.railXMarginWidth=u(t(this.scrollbarXRail).marginLeft)+u(t(this.scrollbarXRail).marginRight), this.railYMarginHeight=u(t(this.scrollbarYRail).marginTop)+u(t(this.scrollbarYRail).marginBottom), e(this.scrollbarXRail, {
			display: "none"
		}
		), e(this.scrollbarYRail, {
			display: "none"
		}
		), R(this), W(this, "top", 0, !1, !0), W(this, "right", 0, !1, !0), e(this.scrollbarXRail, {
			display: ""
		}
		), e(this.scrollbarYRail, {
			display: ""
		}
		))
	}
	, H.prototype.onScroll=function(t) {
		this.isAlive&&(R(this), W(this, "top", this.element.scrollTop-this.lastScrollTop), W(this, "right", this.element.scrollLeft-this.lastScrollLeft), this.lastScrollTop=Math.floor(this.element.scrollTop), this.lastScrollLeft=this.element.scrollLeft)
	}
	, H.prototype.destroy=function() {
		this.isAlive&&(this.event.unbindAll(), l(this.scrollbarX), l(this.scrollbarY), l(this.scrollbarXRail), l(this.scrollbarYRail), this.removePsClasses(), this.element=null, this.scrollbarX=null, this.scrollbarY=null, this.scrollbarXRail=null, this.scrollbarYRail=null, this.isAlive=!1)
	}
	, H.prototype.removePsClasses=function() {
		this.element.className=this.element.className.split(" ").filter(function(t) {
			return!t.match(/^ps([-_].+|)$/)
		}
		).join(" ")
	}
	, H
}

);