", options: { disabled: !1, create: null }, _createWidget: function (t, r) { r = e(r || this.defaultElement || this)[0], this.element = e(r), this.uuid = n++, this.eventNamespace = "." + this.widgetName + this.uuid, this.options = e.widget.extend({}, this.options, this._getCreateOptions(), t), this.bindings = e(), this.hoverable = e(), this.focusable = e(), r !== this && (e.data(r, this.widgetFullName, this), this._on(!0, this.element, { remove: function (e) { e.target === r && this.destroy() } }), this.document = e(r.style ? r.ownerDocument : r.document || r), this.window = e(this.document[0].defaultView || this.document[0].parentWindow)), this._create(), this._trigger("create", null, this._getCreateEventData()), this._init() }, _getCreateOptions: e.noop, _getCreateEventData: e.noop, _create: e.noop, _init: e.noop, destroy: function () { this._destroy(), this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)), this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName + "-disabled " + "ui-state-disabled"), this.bindings.unbind(this.eventNamespace), this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus") }, _destroy: e.noop, widget: function () { return this.element }, option: function (n, r) { var i = n, s, o, u; if (arguments.length === 0) return e.widget.extend({}, this.options); if (typeof n == "string") { i = {}, s = n.split("."), n = s.shift(); if (s.length) { o = i[n] = e.widget.extend({}, this.options[n]); for (u = 0; u < s.length - 1; u++) o[s[u]] = o[s[u]] || {}, o = o[s[u]]; n = s.pop(); if (r === t) return o[n] === t ? null : o[n]; o[n] = r } else { if (r === t) return this.options[n] === t ? null : this.options[n]; i[n] = r } } return this._setOptions(i), this }, _setOptions: function (e) { var t; for (t in e) this._setOption(t, e[t]); return this }, _setOption: function (e, t) { return this.options[e] = t, e === "disabled" && (this.widget().toggleClass(this.widgetFullName + "-disabled ui-state-disabled", !!t).attr("aria-disabled", t), this.hoverable.removeClass("ui-state-hover"), this.focusable.removeClass("ui-state-focus")), this }, enable: function () { return this._setOption("disabled", !1) }, disable: function () { return this._setOption("disabled", !0) }, _on: function (t, n, r) { var i, s = this; typeof t != "boolean" && (r = n, n = t, t = !1), r ? (n = i = e(n), this.bindings = this.bindings.add(n)) : (r = n, n = this.element, i = this.widget()), e.each(r, function (r, o) { function u() { if (!t && (s.options.disabled === !0 || e(this).hasClass("ui-state-disabled"))) return; return (typeof o == "string" ? s[o] : o).apply(s, arguments) } typeof o != "string" && (u.guid = o.guid = o.guid || u.guid || e.guid++); var a = r.match(/^(\w+)\s*(.*)$/), f = a[1] + s.eventNamespace, l = a[2]; l ? i.delegate(l, f, u) : n.bind(f, u) }) }, _off: function (e, t) { t = (t || "").split(" ").join(this.eventNamespace + " ") + this.eventNamespace, e.unbind(t).undelegate(t) }, _delay: function (e, t) { function n() { return (typeof e == "string" ? r[e] : e).apply(r, arguments) } var r = this; return setTimeout(n, t || 0) }, _hoverable: function (t) { this.hoverable = this.hoverable.add(t), this._on(t, { mouseenter: function (t) { e(t.currentTarget).addClass("ui-state-hover") }, mouseleave: function (t) { e(t.currentTarget).removeClass("ui-state-hover") } }) }, _focusable: function (t) { this.focusable = this.focusable.add(t), this._on(t, { focusin: function (t) { e(t.currentTarget).addClass("ui-state-focus") }, focusout: function (t) { e(t.currentTarget).removeClass("ui-state-focus") } }) }, _trigger: function (t, n, r) { var i, s, o = this.options[t]; r = r || {}, n = e.Event(n), n.type = (t === this.widgetEventPrefix ? t : this.widgetEventPrefix + t).toLowerCase(), n.target = this.element[0], s = n.originalEvent; if (s) for (i in s) i in n || (n[i] = s[i]); return this.element.trigger(n, r), !(e.isFunction(o) && o.apply(this.element[0], [n].concat(r)) === !1 || n.isDefaultPrevented()) } }, e.each({ show: "fadeIn", hide: "fadeOut" }, function (t, n) { e.Widget.prototype["_" + t] = function (r, i, s) { typeof i == "string" && (i = { effect: i }); var o, u = i ? i === !0 || typeof i == "number" ? n : i.effect || n : t; i = i || {}, typeof i == "number" && (i = { duration: i }), o = !e.isEmptyObject(i), i.complete = s, i.delay && r.delay(i.delay), o && e.effects && e.effects.effect[u] ? r[t](i) : u !== t && r[u] ? r[u](i.duration, i.easing, s) : r.queue(function (n) { e(this)[t](), s && s.call(r[0]), n() }) } }) })(jQuery); (function (e, t) { var n = !1; e(document).mouseup(function () { n = !1 }), e.widget("ui.mouse", { version: "1.10.0", options: { cancel: "input,textarea,button,select,option", distance: 1, delay: 0 }, _mouseInit: function () { var t = this; this.element.bind("mousedown." + this.widgetName, function (e) { return t._mouseDown(e) }).bind("click." + this.widgetName, function (n) { if (!0 === e.data(n.target, t.widgetName + ".preventClickEvent")) return e.removeData(n.target, t.widgetName + ".preventClickEvent"), n.stopImmediatePropagation(), !1 }), this.started = !1 }, _mouseDestroy: function () { this.element.unbind("." + this.widgetName), this._mouseMoveDelegate && e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate) }, _mouseDown: function (t) { if (n) return; this._mouseStarted && this._mouseUp(t), this._mouseDownEvent = t; var r = this, i = t.which === 1, s = typeof this.options.cancel == "string" && t.target.nodeName ? e(t.target).closest(this.options.cancel).length : !1; if (!i || s || !this._mouseCapture(t)) return !0; this.mouseDelayMet = !this.options.delay, this.mouseDelayMet || (this._mouseDelayTimer = setTimeout(function () { r.mouseDelayMet = !0 }, this.options.delay)); if (this._mouseDistanceMet(t) && this._mouseDelayMet(t)) { this._mouseStarted = this._mouseStart(t) !== !1; if (!this._mouseStarted) return t.preventDefault(), !0 } return !0 === e.data(t.target, this.widgetName + ".preventClickEvent") && e.removeData(t.target, this.widgetName + ".preventClickEvent"), this._mouseMoveDelegate = function (e) { return r._mouseMove(e) }, this._mouseUpDelegate = function (e) { return r._mouseUp(e) }, e(document).bind("mousemove." + this.widgetName, this._mouseMoveDelegate).bind("mouseup." + this.widgetName, this._mouseUpDelegate), t.preventDefault(), n = !0, !0 }, _mouseMove: function (t) { return e.ui.ie && (!document.documentMode || document.documentMode < 9) && !t.button ? this._mouseUp(t) : this._mouseStarted ? (this._mouseDrag(t), t.preventDefault()) : (this._mouseDistanceMet(t) && this._mouseDelayMet(t) && (this._mouseStarted = this._mouseStart(this._mouseDownEvent, t) !== !1, this._mouseStarted ? this._mouseDrag(t) : this._mouseUp(t)), !this._mouseStarted) }, _mouseUp: function (t) { return e(document).unbind("mousemove." + this.widgetName, this._mouseMoveDelegate).unbind("mouseup." + this.widgetName, this._mouseUpDelegate), this._mouseStarted && (this._mouseStarted = !1, t.target === this._mouseDownEvent.target && e.data(t.target, this.widgetName + ".preventClickEvent", !0), this._mouseStop(t)), !1 }, _mouseDistanceMet: function (e) { return Math.max(Math.abs(this._mouseDownEvent.pageX - e.pageX), Math.abs(this._mouseDownEvent.pageY - e.pageY)) >= this.options.distance }, _mouseDelayMet: function () { return this.mouseDelayMet }, _mouseStart: function () { }, _mouseDrag: function () { }, _mouseStop: function () { }, _mouseCapture: function () { return !0 } }) })(jQuery); (function (e, t) { e.widget("ui.draggable", e.ui.mouse, { version: "1.10.0", widgetEventPrefix: "drag", options: { addClasses: !0, appendTo: "parent", axis: !1, connectToSortable: !1, containment: !1, cursor: "auto", cursorAt: !1, grid: !1, handle: !1, helper: "original", iframeFix: !1, opacity: !1, refreshPositions: !1, revert: !1, revertDuration: 500, scope: "default", scroll: !0, scrollSensitivity: 20, scrollSpeed: 20, snap: !1, snapMode: "both", snapTolerance: 20, stack: !1, zIndex: !1, drag: null, start: null, stop: null }, _create: function () { this.options.helper === "original" && !/^(?:r|a|f)/.test(this.element.css("position")) && (this.element[0].style.position = "relative"), this.options.addClasses && this.element.addClass("ui-draggable"), this.options.disabled && this.element.addClass("ui-draggable-disabled"), this._mouseInit() }, _destroy: function () { this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"), this._mouseDestroy() }, _mouseCapture: function (t) { var n = this.options; return this.helper || n.disabled || e(t.target).closest(".ui-resizable-handle").length > 0 ? !1 : (this.handle = this._getHandle(t), this.handle ? (e(n.iframeFix === !0 ? "iframe" : n.iframeFix).each(function () { e("
").css({ width: this.offsetWidth + "px", height: this.offsetHeight + "px", position: "absolute", opacity: "0.001", zIndex: 1e3 }).css(e(this).offset()).appendTo("body") }), !0) : !1) }, _mouseStart: function (t) { var n = this.options; return this.helper = this._createHelper(t), this.helper.addClass("ui-draggable-dragging"), this._cacheHelperProportions(), e.ui.ddmanager && (e.ui.ddmanager.current = this), this._cacheMargins(), this.cssPosition = this.helper.css("position"), this.scrollParent = this.helper.scrollParent(), this.offset = this.positionAbs = this.element.offset(), this.offset = { top: this.offset.top - this.margins.top, left: this.offset.left - this.margins.left }, e.extend(this.offset, { click: { left: t.pageX - this.offset.left, top: t.pageY - this.offset.top }, parent: this._getParentOffset(), relative: this._getRelativeOffset() }), this.originalPosition = this.position = this._generatePosition(t), this.originalPageX = t.pageX, this.originalPageY = t.pageY, n.cursorAt && this._adjustOffsetFromHelper(n.cursorAt), n.containment && this._setContainment(), this._trigger("start", t) === !1 ? (this._clear(), !1) : (this._cacheHelperProportions(), e.ui.ddmanager && !n.dropBehaviour && e.ui.ddmanager.prepareOffsets(this, t), this._mouseDrag(t, !0), e.ui.ddmanager && e.ui.ddmanager.dragStart(this, t), !0) }, _mouseDrag: function (t, n) { this.position = this._generatePosition(t), this.positionAbs = this._convertPositionTo("absolute"); if (!n) { var r = this._uiHash(); if (this._trigger("drag", t, r) === !1) return this._mouseUp({}), !1; this.position = r.position } if (!this.options.axis || this.options.axis !== "y") this.helper[0].style.left = this.position.left + "px"; if (!this.options.axis || this.options.axis !== "x") this.helper[0].style.top = this.position.top + "px"; return e.ui.ddmanager && e.ui.ddmanager.drag(this, t), !1 }, _mouseStop: function (t) { var n, r = this, i = !1, s = !1; e.ui.ddmanager && !this.options.dropBehaviour && (s = e.ui.ddmanager.drop(this, t)), this.dropped && (s = this.dropped, this.dropped = !1), n = this.element[0]; while (n && (n = n.parentNode)) n === document && (i = !0); return !i && this.options.helper === "original" ? !1 : (this.options.revert === "invalid" && !s || this.options.revert === "valid" && s || this.options.revert === !0 || e.isFunction(this.options.revert) && this.options.revert.call(this.element, s) ? e(this.helper).animate(this.originalPosition, parseInt(this.options.revertDuration, 10), function () { r._trigger("stop", t) !== !1 && r._clear() }) : this._trigger("stop", t) !== !1 && this._clear(), !1) }, _mouseUp: function (t) { return e("div.ui-draggable-iframeFix").each(function () { this.parentNode.removeChild(this) }), e.ui.ddmanager && e.ui.ddmanager.dragStop(this, t), e.ui.mouse.prototype._mouseUp.call(this, t) }, cancel: function () { return this.helper.is(".ui-draggable-dragging") ? this._mouseUp({}) : this._clear(), this }, _getHandle: function (t) { var n = !this.options.handle || !e(this.options.handle, this.element).length ? !0 : !1; return e(this.options.handle, this.element).find("*").addBack().each(function () { this === t.target && (n = !0) }), n }, _createHelper: function (t) { var n = this.options, r = e.isFunction(n.helper) ? e(n.helper.apply(this.element[0], [t])) : n.helper === "clone" ? this.element.clone().removeAttr("id") : this.element; return r.parents("body").length || r.appendTo(n.appendTo === "parent" ? this.element[0].parentNode : n.appendTo), r[0] !== this.element[0] && !/(fixed|absolute)/.test(r.css("position")) && r.css("position", "absolute"), r }, _adjustOffsetFromHelper: function (t) { typeof t == "string" && (t = t.split(" ")), e.isArray(t) && (t = { left: +t[0], top: +t[1] || 0 }), "left" in t && (this.offset.click.left = t.left + this.margins.left), "right" in t && (this.offset.click.left = this.helperProportions.width - t.right + this.margins.left), "top" in t && (this.offset.click.top = t.top + this.margins.top), "bottom" in t && (this.offset.click.top = this.helperProportions.height - t.bottom + this.margins.top) }, _getParentOffset: function () { this.offsetParent = this.helper.offsetParent(); var t = this.offsetParent.offset(); this.cssPosition === "absolute" && this.scrollParent[0] !== document && e.contains(this.scrollParent[0], this.offsetParent[0]) && (t.left += this.scrollParent.scrollLeft(), t.top += this.scrollParent.scrollTop()); if (this.offsetParent[0] === document.body || this.offsetParent[0].tagName && this.offsetParent[0].tagName.toLowerCase() === "html" && e.ui.ie) t = { top: 0, left: 0 }; return { top: t.top + (parseInt(this.offsetParent.css("borderTopWidth"), 10) || 0), left: t.left + (parseInt(this.offsetParent.css("borderLeftWidth"), 10) || 0) } }, _getRelativeOffset: function () { if (this.cssPosition === "relative") { var e = this.element.position(); return { top: e.top - (parseInt(this.helper.css("top"), 10) || 0) + this.scrollParent.scrollTop(), left: e.left - (parseInt(this.helper.css("left"), 10) || 0) + this.scrollParent.scrollLeft() } } return { top: 0, left: 0 } }, _cacheMargins: function () { this.margins = { left: parseInt(this.element.css("marginLeft"), 10) || 0, top: parseInt(this.element.css("marginTop"), 10) || 0, right: parseInt(this.element.css("marginRight"), 10) || 0, bottom: parseInt(this.element.css("marginBottom"), 10) || 0 } }, _cacheHelperProportions: function () { this.helperProportions = { width: this.helper.outerWidth(), height: this.helper.outerHeight() } }, _setContainment: function () { var t, n, r, i = this.options; i.containment === "parent" && (i.containment = this.helper[0].parentNode); if (i.containment === "document" || i.containment === "window") this.containment = [i.containment === "document" ? 0 : e(window).scrollLeft() - this.offset.relative.left - this.offset.parent.left, i.containment === "document" ? 0 : e(window).scrollTop() - this.offset.relative.top - this.offset.parent.top, (i.containment === "document" ? 0 : e(window).scrollLeft()) + e(i.containment === "document" ? document : window).width() - this.helperProportions.width - this.margins.left, (i.containment === "document" ? 0 : e(window).scrollTop()) + (e(i.containment === "document" ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top]; if (!/^(document|window|parent)$/.test(i.containment) && i.containment.constructor !== Array) { n = e(i.containment), r = n[0]; if (!r) return; t = e(r).css("overflow") !== "hidden", this.containment = [(parseInt(e(r).css("borderLeftWidth"), 10) || 0) + (parseInt(e(r).css("paddingLeft"), 10) || 0), (parseInt(e(r).css("borderTopWidth"), 10) || 0) + (parseInt(e(r).css("paddingTop"), 10) || 0), (t ? Math.max(r.scrollWidth, r.offsetWidth) : r.offsetWidth) - (parseInt(e(r).css("borderLeftWidth"), 10) || 0) - (parseInt(e(r).css("paddingRight"), 10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right, (t ? Math.max(r.scrollHeight, r.offsetHeight) : r.offsetHeight) - (parseInt(e(r).css("borderTopWidth"), 10) || 0) - (parseInt(e(r).css("paddingBottom"), 10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom], this.relative_container = n } else i.containment.constructor === Array && (this.containment = i.containment) }, _convertPositionTo: function (t, n) { n || (n = this.position); var r = t === "absolute" ? 1 : -1, i = this.cssPosition !== "absolute" || this.scrollParent[0] !== document && !!e.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent, s = /(html|body)/i.test(i[0].tagName); return { top: n.top + this.offset.relative.top * r + this.offset.parent.top * r - (this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : s ? 0 : i.scrollTop()) * r, left: n.left + this.offset.relative.left * r + this.offset.parent.left * r - (this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : s ? 0 : i.scrollLeft()) * r } }, _generatePosition: function (t) { var n, r, i, s, o = this.options, u = this.cssPosition !== "absolute" || this.scrollParent[0] !== document && !!e.contains(this.scrollParent[0], this.offsetParent[0]) ? this.scrollParent : this.offsetParent, a = /(html|body)/i.test(u[0].tagName), f = t.pageX, l = t.pageY; return this.originalPosition && (this.containment && (this.relative_container ? (r = this.relative_container.offset(), n = [this.containment[0] + r.left, this.containment[1] + r.top, this.containment[2] + r.left, this.containment[3] + r.top]) : n = this.containment, t.pageX - this.offset.click.left < n[0] && (f = n[0] + this.offset.click.left), t.pageY - this.offset.click.top < n[1] && (l = n[1] + this.offset.click.top), t.pageX - this.offset.click.left > n[2] && (f = n[2] + this.offset.click.left), t.pageY - this.offset.click.top > n[3] && (l = n[3] + this.offset.click.top)), o.grid && (i = o.grid[1] ? this.originalPageY + Math.round((l - this.originalPageY) / o.grid[1]) * o.grid[1] : this.originalPageY, l = n ? i - this.offset.click.top >= n[1] || i - this.offset.click.top > n[3] ? i : i - this.offset.click.top >= n[1] ? i - o.grid[1] : i + o.grid[1] : i, s = o.grid[0] ? this.originalPageX + Math.round((f - this.originalPageX) / o.grid[0]) * o.grid[0] : this.originalPageX, f = n ? s - this.offset.click.left >= n[0] || s - this.offset.click.left > n[2] ? s : s - this.offset.click.left >= n[0] ? s - o.grid[0] : s + o.grid[0] : s)), { top: l - this.offset.click.top - this.offset.relative.top - this.offset.parent.top + (this.cssPosition === "fixed" ? -this.scrollParent.scrollTop() : a ? 0 : u.scrollTop()), left: f - this.offset.click.left - this.offset.relative.left - this.offset.parent.left + (this.cssPosition === "fixed" ? -this.scrollParent.scrollLeft() : a ? 0 : u.scrollLeft()) } }, _clear: function () { this.helper.removeClass("ui-draggable-dragging"), this.helper[0] !== this.element[0] && !this.cancelHelperRemoval && this.helper.remove(), this.helper = null, this.cancelHelperRemoval = !1 }, _trigger: function (t, n, r) { return r = r || this._uiHash(), e.ui.plugin.call(this, t, [n, r]), t === "drag" && (this.positionAbs = this._convertPositionTo("absolute")), e.Widget.prototype._trigger.call(this, t, n, r) }, plugins: {}, _uiHash: function () { return { helper: this.helper, position: this.position, originalPosition: this.originalPosition, offset: this.positionAbs } } }), e.ui.plugin.add("draggable", "connectToSortable", { start: function (t, n) { var r = e(this).data("ui-draggable"), i = r.options, s = e.extend({}, n, { item: r.element }); r.sortables = [], e(i.connectToSortable).each(function () { var n = e.data(this, "ui-sortable"); n && !n.options.disabled && (r.sortables.push({ instance: n, shouldRevert: n.options.revert }), n.refreshPositions(), n._trigger("activate", t, s)) }) }, stop: function (t, n) { var r = e(this).data("ui-draggable"), i = e.extend({}, n, { item: r.element }); e.each(r.sortables, function () { this.instance.isOver ? (this.instance.isOver = 0, r.cancelHelperRemoval = !0, this.instance.cancelHelperRemoval = !1, this.shouldRevert && (this.instance.options.revert = !0), this.instance._mouseStop(t), this.instance.options.helper = this.instance.options._helper, r.options.helper === "original" && this.instance.currentItem.css({ top: "auto", left: "auto" })) : (this.instance.cancelHelperRemoval = !1, this.instance._trigger("deactivate", t, i)) }) }, drag: function (t, n) { var r = e(this).data("ui-draggable"), i = this; e.each(r.sortables, function () { var s = !1, o = this; this.instance.positionAbs = r.positionAbs, this.instance.helperProportions = r.helperProportions, this.instance.offset.click = r.offset.click, this.instance._intersectsWith(this.instance.containerCache) && (s = !0, e.each(r.sortables, function () { return this.instance.positionAbs = r.positionAbs, this.instance.helperProportions = r.helperProportions, this.instance.offset.click = r.offset.click, this !== o && this.instance._intersectsWith(this.instance.containerCache) && e.ui.contains(o.instance.element[0], this.instance.element[0]) && (s = !1), s })), s ? (this.instance.isOver || (this.instance.isOver = 1, this.instance.currentItem = e(i).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item", !0), this.instance.options._helper = this.instance.options.helper, this.instance.options.helper = function () { return n.helper[0] }, t.target = this.instance.currentItem[0], this.instance._mouseCapture(t, !0), this.instance._mouseStart(t, !0, !0), this.instance.offset.click.top = r.offset.click.top, this.instance.offset.click.left = r.offset.click.left, this.instance.offset.parent.left -= r.offset.parent.left - this.instance.offset.parent.left, this.instance.offset.parent.top -= r.offset.parent.top - this.instance.offset.parent.top, r._trigger("toSortable", t), r.dropped = this.instance.element, r.currentItem = r.element, this.instance.fromOutside = r), this.instance.currentItem && this.instance._mouseDrag(t)) : this.instance.isOver && (this.instance.isOver = 0, this.instance.cancelHelperRemoval = !0, this.instance.options.revert = !1, this.instance._trigger("out", t, this.instance._uiHash(this.instance)), this.instance._mouseStop(t, !0), this.instance.options.helper = this.instance.options._helper, this.instance.currentItem.remove(), this.instance.placeholder && this.instance.placeholder.remove(), r._trigger("fromSortable", t), r.dropped = !1) }) } }), e.ui.plugin.add("draggable", "cursor", { start: function () { var t = e("body"), n = e(this).data("ui-draggable").options; t.css("cursor") && (n._cursor = t.css("cursor")), t.css("cursor", n.cursor) }, stop: function () { var t = e(this).data("ui-draggable").options; t._cursor && e("body").css("cursor", t._cursor) } }), e.ui.plugin.add("draggable", "opacity", { start: function (t, n) { var r = e(n.helper), i = e(this).data("ui-draggable").options; r.css("opacity") && (i._opacity = r.css("opacity")), r.css("opacity", i.opacity) }, stop: function (t, n) { var r = e(this).data("ui-draggable").options; r._opacity && e(n.helper).css("opacity", r._opacity) } }), e.ui.plugin.add("draggable", "scroll", { start: function () { var t = e(this).data("ui-draggable"); t.scrollParent[0] !== document && t.scrollParent[0].tagName !== "HTML" && (t.overflowOffset = t.scrollParent.offset()) }, drag: function (t) { var n = e(this).data("ui-draggable"), r = n.options, i = !1; if (n.scrollParent[0] !== document && n.scrollParent[0].tagName !== "HTML") { if (!r.axis || r.axis !== "x") n.overflowOffset.top + n.scrollParent[0].offsetHeight - t.pageY < r.scrollSensitivity ? n.scrollParent[0].scrollTop = i = n.scrollParent[0].scrollTop + r.scrollSpeed : t.pageY - n.overflowOffset.top < r.scrollSensitivity && (n.scrollParent[0].scrollTop = i = n.scrollParent[0].scrollTop - r.scrollSpeed); if (!r.axis || r.axis !== "y") n.overflowOffset.left + n.scrollParent[0].offsetWidth - t.pageX < r.scrollSensitivity ? n.scrollParent[0].scrollLeft = i = n.scrollParent[0].scrollLeft + r.scrollSpeed : t.pageX - n.overflowOffset.left < r.scrollSensitivity && (n.scrollParent[0].scrollLeft = i = n.scrollParent[0].scrollLeft - r.scrollSpeed) } else { if (!r.axis || r.axis !== "x") t.pageY - e(document).scrollTop() < r.scrollSensitivity ? i = e(document).scrollTop(e(document).scrollTop() - r.scrollSpeed) : e(window).height() - (t.pageY - e(document).scrollTop()) < r.scrollSensitivity && (i = e(document).scrollTop(e(document).scrollTop() + r.scrollSpeed)); if (!r.axis || r.axis !== "y") t.pageX - e(document).scrollLeft() < r.scrollSensitivity ? i = e(document).scrollLeft(e(document).scrollLeft() - r.scrollSpeed) : e(window).width() - (t.pageX - e(document).scrollLeft()) < r.scrollSensitivity && (i = e(document).scrollLeft(e(document).scrollLeft() + r.scrollSpeed)) } i !== !1 && e.ui.ddmanager && !r.dropBehaviour && e.ui.ddmanager.prepareOffsets(n, t) } }), e.ui.plugin.add("draggable", "snap", { start: function () { var t = e(this).data("ui-draggable"), n = t.options; t.snapElements = [], e(n.snap.constructor !== String ? n.snap.items || ":data(ui-draggable)" : n.snap).each(function () { var n = e(this), r = n.offset(); this !== t.element[0] && t.snapElements.push({ item: this, width: n.outerWidth(), height: n.outerHeight(), top: r.top, left: r.left }) }) }, drag: function (t, n) { var r, i, s, o, u, a, f, l, c, h, p = e(this).data("ui-draggable"), d = p.options, v = d.snapTolerance, m = n.offset.left, g = m + p.helperProportions.width, y = n.offset.top, b = y + p.helperProportions.height; for (c = p.snapElements.length - 1; c >= 0; c--) { u = p.snapElements[c].left, a = u + p.snapElements[c].width, f = p.snapElements[c].top, l = f + p.snapElements[c].height; if (!(u - v < m && m < a + v && f - v < y && y < l + v || u - v < m && m < a + v && f - v < b && b < l + v || u - v < g && g < a + v && f - v < y && y < l + v || u - v < g && g < a + v && f - v < b && b < l + v)) { p.snapElements[c].snapping && p.options.snap.release && p.options.snap.release.call(p.element, t, e.extend(p._uiHash(), { snapItem: p.snapElements[c].item })), p.snapElements[c].snapping = !1; continue } d.snapMode !== "inner" && (r = Math.abs(f - b) <= v, i = Math.abs(l - y) <= v, s = Math.abs(u - g) <= v, o = Math.abs(a - m) <= v, r && (n.position.top = p._convertPositionTo("relative", { top: f - p.helperProportions.height, left: 0 }).top - p.margins.top), i && (n.position.top = p._convertPositionTo("relative", { top: l, left: 0 }).top - p.margins.top), s && (n.position.left = p._convertPositionTo("relative", { top: 0, left: u - p.helperProportions.width }).left - p.margins.left), o && (n.position.left = p._convertPositionTo("relative", { top: 0, left: a }).left - p.margins.left)), h = r || i || s || o, d.snapMode !== "outer" && (r = Math.abs(f - y) <= v, i = Math.abs(l - b) <= v, s = Math.abs(u - m) <= v, o = Math.abs(a - g) <= v, r && (n.position.top = p._convertPositionTo("relative", { top: f, left: 0 }).top - p.margins.top), i && (n.position.top = p._convertPositionTo("relative", { top: l - p.helperProportions.height, left: 0 }).top - p.margins.top), s && (n.position.left = p._convertPositionTo("relative", { top: 0, left: u }).left - p.margins.left), o && (n.position.left = p._convertPositionTo("relative", { top: 0, left: a - p.helperProportions.width }).left - p.margins.left)), !p.snapElements[c].snapping && (r || i || s || o || h) && p.options.snap.snap && p.options.snap.snap.call(p.element, t, e.extend(p._uiHash(), { snapItem: p.snapElements[c].item })), p.snapElements[c].snapping = r || i || s || o || h } } }), e.ui.plugin.add("draggable", "stack", { start: function () { var t, n = e(this).data("ui-draggable").options, r = e.makeArray(e(n.stack)).sort(function (t, n) { return (parseInt(e(t).css("zIndex"), 10) || 0) - (parseInt(e(n).css("zIndex"), 10) || 0) }); if (!r.length) return; t = parseInt(r[0].style.zIndex, 10) || 0, e(r).each(function (e) { this.style.zIndex = t + e }), this[0].style.zIndex = t + r.length } }), e.ui.plugin.add("draggable", "zIndex", { start: function (t, n) { var r = e(n.helper), i = e(this).data("ui-draggable").options; r.css("zIndex") && (i._zIndex = r.css("zIndex")), r.css("zIndex", i.zIndex) }, stop: function (t, n) { var r = e(this).data("ui-draggable").options; r._zIndex && e(n.helper).css("zIndex", r._zIndex) } }) })(jQuery); (function (e, t) { function n(e) { return parseInt(e, 10) || 0 } function r(e) { return !isNaN(parseInt(e, 10)) } e.widget("ui.resizable", e.ui.mouse, { version: "1.10.0", widgetEventPrefix: "resize", options: { alsoResize: !1, animate: !1, animateDuration: "slow", animateEasing: "swing", aspectRatio: !1, autoHide: !1, containment: !1, ghost: !1, grid: !1, handles: "e,s,se", helper: !1, maxHeight: null, maxWidth: null, minHeight: 10, minWidth: 10, zIndex: 90, resize: null, start: null, stop: null }, _create: function () { var t, n, r, i, s, o = this, u = this.options; this.element.addClass("ui-resizable"), e.extend(this, { _aspectRatio: !!u.aspectRatio, aspectRatio: u.aspectRatio, originalElement: this.element, _proportionallyResizeElements: [], _helper: u.helper || u.ghost || u.animate ? u.helper || "ui-resizable-helper" : null }), this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i) && (this.element.wrap(e("
").css({ position: this.element.css("position"), width: this.element.outerWidth(), height: this.element.outerHeight(), top: this.element.css("top"), left: this.element.css("left") })), this.element = this.element.parent().data("ui-resizable", this.element.data("ui-resizable")), this.elementIsWrapper = !0, this.element.css({ marginLeft: this.originalElement.css("marginLeft"), marginTop: this.originalElement.css("marginTop"), marginRight: this.originalElement.css("marginRight"), marginBottom: this.originalElement.css("marginBottom") }), this.originalElement.css({ marginLeft: 0, marginTop: 0, marginRight: 0, marginBottom: 0 }), this.originalResizeStyle = this.originalElement.css("resize"), this.originalElement.css("resize", "none"), this._proportionallyResizeElements.push(this.originalElement.css({ position: "static", zoom: 1, display: "block" })), this.originalElement.css({ margin: this.originalElement.css("margin") }), this._proportionallyResize()), this.handles = u.handles || (e(".ui-resizable-handle", this.element).length ? { n: ".ui-resizable-n", e: ".ui-resizable-e", s: ".ui-resizable-s", w: ".ui-resizable-w", se: ".ui-resizable-se", sw: ".ui-resizable-sw", ne: ".ui-resizable-ne", nw: ".ui-resizable-nw" } : "e,s,se"); if (this.handles.constructor === String) { this.handles === "all" && (this.handles = "n,e,s,w,se,sw,ne,nw"), t = this.handles.split(","), this.handles = {}; for (n = 0; n < t.length; n++) r = e.trim(t[n]), s = "ui-resizable-" + r, i = e("
"), i.css({ zIndex: u.zIndex }), "se" === r && i.addClass("ui-icon ui-icon-gripsmall-diagonal-se"), this.handles[r] = ".ui-resizable-" + r, this.element.append(i) } this._renderAxis = function (t) { var n, r, i, s; t = t || this.element; for (n in this.handles) { this.handles[n].constructor === String && (this.handles[n] = e(this.handles[n], this.element).show()), this.elementIsWrapper && this.originalElement[0].nodeName.match(/textarea|input|select|button/i) && (r = e(this.handles[n], this.element), s = /sw|ne|nw|se|n|s/.test(n) ? r.outerHeight() : r.outerWidth(), i = ["padding", /ne|nw|n/.test(n) ? "Top" : /se|sw|s/.test(n) ? "Bottom" : /^e$/.test(n) ? "Right" : "Left"].join(""), t.css(i, s), this._proportionallyResize()); if (!e(this.handles[n]).length) continue } }, this._renderAxis(this.element), this._handles = e(".ui-resizable-handle", this.element).disableSelection(), this._handles.mouseover(function () { o.resizing || (this.className && (i = this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)), o.axis = i && i[1] ? i[1] : "se") }), u.autoHide && (this._handles.hide(), e(this.element).addClass("ui-resizable-autohide").mouseenter(function () { if (u.disabled) return; e(this).removeClass("ui-resizable-autohide"), o._handles.show() }).mouseleave(function () { if (u.disabled) return; o.resizing || (e(this).addClass("ui-resizable-autohide"), o._handles.hide()) })), this._mouseInit() }, _destroy: function () { this._mouseDestroy(); var t, n = function (t) { e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove() }; return this.elementIsWrapper && (n(this.element), t = this.element, this.originalElement.css({ position: t.css("position"), width: t.outerWidth(), height: t.outerHeight(), top: t.css("top"), left: t.css("left") }).insertAfter(t), t.remove()), this.originalElement.css("resize", this.originalResizeStyle), n(this.originalElement), this }, _mouseCapture: function (t) { var n, r, i = !1; for (n in this.handles) { r = e(this.handles[n])[0]; if (r === t.target || e.contains(r, t.target)) i = !0 } return !this.options.disabled && i }, _mouseStart: function (t) { var r, i, s, o = this.options, u = this.element.position(), a = this.element; return this.resizing = !0, /absolute/.test(a.css("position")) ? a.css({ position: "absolute", top: a.css("top"), left: a.css("left") }) : a.is(".ui-draggable") && a.css({ position: "absolute", top: u.top, left: u.left }), this._renderProxy(), r = n(this.helper.css("left")), i = n(this.helper.css("top")), o.containment && (r += e(o.containment).scrollLeft() || 0, i += e(o.containment).scrollTop() || 0), this.offset = this.helper.offset(), this.position = { left: r, top: i }, this.size = this._helper ? { width: a.outerWidth(), height: a.outerHeight() } : { width: a.width(), height: a.height() }, this.originalSize = this._helper ? { width: a.outerWidth(), height: a.outerHeight() } : { width: a.width(), height: a.height() }, this.originalPosition = { left: r, top: i }, this.sizeDiff = { width: a.outerWidth() - a.width(), height: a.outerHeight() - a.height() }, this.originalMousePosition = { left: t.pageX, top: t.pageY }, this.aspectRatio = typeof o.aspectRatio == "number" ? o.aspectRatio : this.originalSize.width / this.originalSize.height || 1, s = e(".ui-resizable-" + this.axis).css("cursor"), e("body").css("cursor", s === "auto" ? this.axis + "-resize" : s), a.addClass("ui-resizable-resizing"), this._propagate("start", t), !0 }, _mouseDrag: function (t) { var n, r = this.helper, i = {}, s = this.originalMousePosition, o = this.axis, u = this.position.top, a = this.position.left, f = this.size.width, l = this.size.height, c = t.pageX - s.left || 0, h = t.pageY - s.top || 0, p = this._change[o]; if (!p) return !1; n = p.apply(this, [t, c, h]), this._updateVirtualBoundaries(t.shiftKey); if (this._aspectRatio || t.shiftKey) n = this._updateRatio(n, t); return n = this._respectSize(n, t), this._updateCache(n), this._propagate("resize", t), this.position.top !== u && (i.top = this.position.top + "px"), this.position.left !== a && (i.left = this.position.left + "px"), this.size.width !== f && (i.width = this.size.width + "px"), this.size.height !== l && (i.height = this.size.height + "px"), r.css(i), !this._helper && this._proportionallyResizeElements.length && this._proportionallyResize(), e.isEmptyObject(i) || this._trigger("resize", t, this.ui()), !1 }, _mouseStop: function (t) { this.resizing = !1; var n, r, i, s, o, u, a, f = this.options, l = this; return this._helper && (n = this._proportionallyResizeElements, r = n.length && /textarea/i.test(n[0].nodeName), i = r && e.ui.hasScroll(n[0], "left") ? 0 : l.sizeDiff.height, s = r ? 0 : l.sizeDiff.width, o = { width: l.helper.width() - s, height: l.helper.height() - i }, u = parseInt(l.element.css("left"), 10) + (l.position.left - l.originalPosition.left) || null, a = parseInt(l.element.css("top"), 10) + (l.position.top - l.originalPosition.top) || null, f.animate || this.element.css(e.extend(o, { top: a, left: u })), l.helper.height(l.size.height), l.helper.width(l.size.width), this._helper && !f.animate && this._proportionallyResize()), e("body").css("cursor", "auto"), this.element.removeClass("ui-resizable-resizing"), this._propagate("stop", t), this._helper && this.helper.remove(), !1 }, _updateVirtualBoundaries: function (e) { var t, n, i, s, o, u = this.options; o = { minWidth: r(u.minWidth) ? u.minWidth : 0, maxWidth: r(u.maxWidth) ? u.maxWidth : Infinity, minHeight: r(u.minHeight) ? u.minHeight : 0, maxHeight: r(u.maxHeight) ? u.maxHeight : Infinity }; if (this._aspectRatio || e) t = o.minHeight * this.aspectRatio, i = o.minWidth / this.aspectRatio, n = o.maxHeight * this.aspectRatio, s = o.maxWidth / this.aspectRatio, t > o.minWidth && (o.minWidth = t), i > o.minHeight && (o.minHeight = i), n < o.maxWidth && (o.maxWidth = n), s < o.maxHeight && (o.maxHeight = s); this._vBoundaries = o }, _updateCache: function (e) { this.offset = this.helper.offset(), r(e.left) && (this.position.left = e.left), r(e.top) && (this.position.top = e.top), r(e.height) && (this.size.height = e.height), r(e.width) && (this.size.width = e.width) }, _updateRatio: function (e) { var t = this.position, n = this.size, i = this.axis; return r(e.height) ? e.width = e.height * this.aspectRatio : r(e.width) && (e.height = e.width / this.aspectRatio), i === "sw" && (e.left = t.left + (n.width - e.width), e.top = null), i === "nw" && (e.top = t.top + (n.height - e.height), e.left = t.left + (n.width - e.width)), e }, _respectSize: function (e) { var t = this._vBoundaries, n = this.axis, i = r(e.width) && t.maxWidth && t.maxWidth < e.width, s = r(e.height) && t.maxHeight && t.maxHeight < e.height, o = r(e.width) && t.minWidth && t.minWidth > e.width, u = r(e.height) && t.minHeight && t.minHeight > e.height, a = this.originalPosition.left + this.originalSize.width, f = this.position.top + this.size.height, l = /sw|nw|w/.test(n), c = /nw|ne|n/.test(n); return o && (e.width = t.minWidth), u && (e.height = t.minHeight), i && (e.width = t.maxWidth), s && (e.height = t.maxHeight), o && l && (e.left = a - t.minWidth), i && l && (e.left = a - t.maxWidth), u && c && (e.top = f - t.minHeight), s && c && (e.top = f - t.maxHeight), !e.width && !e.height && !e.left && e.top ? e.top = null : !e.width && !e.height && !e.top && e.left && (e.left = null), e }, _proportionallyResize: function () { if (!this._proportionallyResizeElements.length) return; var e, t, n, r, i, s = this.helper || this.element; for (e = 0; e < this._proportionallyResizeElements.length; e++) { i = this._proportionallyResizeElements[e]; if (!this.borderDif) { this.borderDif = [], n = [i.css("borderTopWidth"), i.css("borderRightWidth"), i.css("borderBottomWidth"), i.css("borderLeftWidth")], r = [i.css("paddingTop"), i.css("paddingRight"), i.css("paddingBottom"), i.css("paddingLeft")]; for (t = 0; t < n.length; t++) this.borderDif[t] = (parseInt(n[t], 10) || 0) + (parseInt(r[t], 10) || 0) } i.css({ height: s.height() - this.borderDif[0] - this.borderDif[2] || 0, width: s.width() - this.borderDif[1] - this.borderDif[3] || 0 }) } }, _renderProxy: function () { var t = this.element, n = this.options; this.elementOffset = t.offset(), this._helper ? (this.helper = this.helper || e("
"), this.helper.addClass(this._helper).css({ width: this.element.outerWidth() - 1, height: this.element.outerHeight() - 1, position: "absolute", left: this.elementOffset.left + "px", top: this.elementOffset.top + "px", zIndex: ++n.zIndex }), this.helper.appendTo("body").disableSelection()) : this.helper = this.element }, _change: { e: function (e, t) { return { width: this.originalSize.width + t } }, w: function (e, t) { var n = this.originalSize, r = this.originalPosition; return { left: r.left + t, width: n.width - t } }, n: function (e, t, n) { var r = this.originalSize, i = this.originalPosition; return { top: i.top + n, height: r.height - n } }, s: function (e, t, n) { return { height: this.originalSize.height + n } }, se: function (t, n, r) { return e.extend(this._change.s.apply(this, arguments), this._change.e.apply(this, [t, n, r])) }, sw: function (t, n, r) { return e.extend(this._change.s.apply(this, arguments), this._change.w.apply(this, [t, n, r])) }, ne: function (t, n, r) { return e.extend(this._change.n.apply(this, arguments), this._change.e.apply(this, [t, n, r])) }, nw: function (t, n, r) { return e.extend(this._change.n.apply(this, arguments), this._change.w.apply(this, [t, n, r])) } }, _propagate: function (t, n) { e.ui.plugin.call(this, t, [n, this.ui()]), t !== "resize" && this._trigger(t, n, this.ui()) }, plugins: {}, ui: function () { return { originalElement: this.originalElement, element: this.element, helper: this.helper, position: this.position, size: this.size, originalSize: this.originalSize, originalPosition: this.originalPosition } } }), e.ui.plugin.add("resizable", "animate", { stop: function (t) { var n = e(this).data("ui-resizable"), r = n.options, i = n._proportionallyResizeElements, s = i.length && /textarea/i.test(i[0].nodeName), o = s && e.ui.hasScroll(i[0], "left") ? 0 : n.sizeDiff.height, u = s ? 0 : n.sizeDiff.width, a = { width: n.size.width - u, height: n.size.height - o }, f = parseInt(n.element.css("left"), 10) + (n.position.left - n.originalPosition.left) || null, l = parseInt(n.element.css("top"), 10) + (n.position.top - n.originalPosition.top) || null; n.element.animate(e.extend(a, l && f ? { top: l, left: f } : {}), { duration: r.animateDuration, easing: r.animateEasing, step: function () { var r = { width: parseInt(n.element.css("width"), 10), height: parseInt(n.element.css("height"), 10), top: parseInt(n.element.css("top"), 10), left: parseInt(n.element.css("left"), 10) }; i && i.length && e(i[0]).css({ width: r.width, height: r.height }), n._updateCache(r), n._propagate("resize", t) } }) } }), e.ui.plugin.add("resizable", "containment", { start: function () { var t, r, i, s, o, u, a, f = e(this).data("ui-resizable"), l = f.options, c = f.element, h = l.containment, p = h instanceof e ? h.get(0) : /parent/.test(h) ? c.parent().get(0) : h; if (!p) return; f.containerElement = e(p), /document/.test(h) || h === document ? (f.containerOffset = { left: 0, top: 0 }, f.containerPosition = { left: 0, top: 0 }, f.parentData = { element: e(document), left: 0, top: 0, width: e(document).width(), height: e(document).height() || document.body.parentNode.scrollHeight }) : (t = e(p), r = [], e(["Top", "Right", "Left", "Bottom"]).each(function (e, i) { r[e] = n(t.css("padding" + i)) }), f.containerOffset = t.offset(), f.containerPosition = t.position(), f.containerSize = { height: t.innerHeight() - r[3], width: t.innerWidth() - r[1] }, i = f.containerOffset, s = f.containerSize.height, o = f.containerSize.width, u = e.ui.hasScroll(p, "left") ? p.scrollWidth : o, a = e.ui.hasScroll(p) ? p.scrollHeight : s, f.parentData = { element: p, left: i.left, top: i.top, width: u, height: a }) }, resize: function (t) { var n, r, i, s, o = e(this).data("ui-resizable"), u = o.options, a = o.containerOffset, f = o.position, l = o._aspectRatio || t.shiftKey, c = { top: 0, left: 0 }, h = o.containerElement; h[0] !== document && /static/.test(h.css("position")) && (c = a), f.left < (o._helper ? a.left : 0) && (o.size.width = o.size.width + (o._helper ? o.position.left - a.left : o.position.left - c.left), l && (o.size.height = o.size.width / o.aspectRatio), o.position.left = u.helper ? a.left : 0), f.top < (o._helper ? a.top : 0) && (o.size.height = o.size.height + (o._helper ? o.position.top - a.top : o.position.top), l && (o.size.width = o.size.height * o.aspectRatio), o.position.top = o._helper ? a.top : 0), o.offset.left = o.parentData.left + o.position.left, o.offset.top = o.parentData.top + o.position.top, n = Math.abs((o._helper ? o.offset.left - c.left : o.offset.left - c.left) + o.sizeDiff.width), r = Math.abs((o._helper ? o.offset.top - c.top : o.offset.top - a.top) + o.sizeDiff.height), i = o.containerElement.get(0) === o.element.parent().get(0), s = /relative|absolute/.test(o.containerElement.css("position")), i && s && (n -= o.parentData.left), n + o.size.width >= o.parentData.width && (o.size.width = o.parentData.width - n, l && (o.size.height = o.size.width / o.aspectRatio)), r + o.size.height >= o.parentData.height && (o.size.height = o.parentData.height - r, l && (o.size.width = o.size.height * o.aspectRatio)) }, stop: function () { var t = e(this).data("ui-resizable"), n = t.options, r = t.containerOffset, i = t.containerPosition, s = t.containerElement, o = e(t.helper), u = o.offset(), a = o.outerWidth() - t.sizeDiff.width, f = o.outerHeight() - t.sizeDiff.height; t._helper && !n.animate && /relative/.test(s.css("position")) && e(this).css({ left: u.left - i.left - r.left, width: a, height: f }), t._helper && !n.animate && /static/.test(s.css("position")) && e(this).css({ left: u.left - i.left - r.left, width: a, height: f }) } }), e.ui.plugin.add("resizable", "alsoResize", { start: function () { var t = e(this).data("ui-resizable"), n = t.options, r = function (t) { e(t).each(function () { var t = e(this); t.data("ui-resizable-alsoresize", { width: parseInt(t.width(), 10), height: parseInt(t.height(), 10), left: parseInt(t.css("left"), 10), top: parseInt(t.css("top"), 10) }) }) }; typeof n.alsoResize == "object" && !n.alsoResize.parentNode ? n.alsoResize.length ? (n.alsoResize = n.alsoResize[0], r(n.alsoResize)) : e.each(n.alsoResize, function (e) { r(e) }) : r(n.alsoResize) }, resize: function (t, n) { var r = e(this).data("ui-resizable"), i = r.options, s = r.originalSize, o = r.originalPosition, u = { height: r.size.height - s.height || 0, width: r.size.width - s.width || 0, top: r.position.top - o.top || 0, left: r.position.left - o.left || 0 }, a = function (t, r) { e(t).each(function () { var t = e(this), i = e(this).data("ui-resizable-alsoresize"), s = {}, o = r && r.length ? r : t.parents(n.originalElement[0]).length ? ["width", "height"] : ["width", "height", "top", "left"]; e.each(o, function (e, t) { var n = (i[t] || 0) + (u[t] || 0); n && n >= 0 && (s[t] = n || null) }), t.css(s) }) }; typeof i.alsoResize == "object" && !i.alsoResize.nodeType ? e.each(i.alsoResize, function (e, t) { a(e, t) }) : a(i.alsoResize) }, stop: function () { e(this).removeData("resizable-alsoresize") } }), e.ui.plugin.add("resizable", "ghost", { start: function () { var t = e(this).data("ui-resizable"), n = t.options, r = t.size; t.ghost = t.originalElement.clone(), t.ghost.css({ opacity: .25, display: "block", position: "relative", height: r.height, width: r.width, margin: 0, left: 0, top: 0 }).addClass("ui-resizable-ghost").addClass(typeof n.ghost == "string" ? n.ghost : ""), t.ghost.appendTo(t.helper) }, resize: function () { var t = e(this).data("ui-resizable"); t.ghost && t.ghost.css({ position: "relative", height: t.size.height, width: t.size.width }) }, stop: function () { var t = e(this).data("ui-resizable"); t.ghost && t.helper && t.helper.get(0).removeChild(t.ghost.get(0)) } }), e.ui.plugin.add("resizable", "grid", { resize: function () { var t = e(this).data("ui-resizable"), n = t.options, r = t.size, i = t.originalSize, s = t.originalPosition, o = t.axis, u = typeof n.grid == "number" ? [n.grid, n.grid] : n.grid, a = u[0] || 1, f = u[1] || 1, l = Math.round((r.width - i.width) / a) * a, c = Math.round((r.height - i.height) / f) * f, h = i.width + l, p = i.height + c, d = n.maxWidth && n.maxWidth < h, v = n.maxHeight && n.maxHeight < p, m = n.minWidth && n.minWidth > h, g = n.minHeight && n.minHeight > p; n.grid = u, m && (h += a), g && (p += f), d && (h -= a), v && (p -= f), /^(se|s|e)$/.test(o) ? (t.size.width = h, t.size.height = p) : /^(ne)$/.test(o) ? (t.size.width = h, t.size.height = p, t.position.top = s.top - c) : /^(sw)$/.test(o) ? (t.size.width = h, t.size.height = p, t.position.left = s.left - l) : (t.size.width = h, t.size.height = p, t.position.top = s.top - c, t.position.left = s.left - l) } }) })(jQuery);
/*!
* jQuery corner plugin: simple corner rounding
* Examples and documentation at: http://jquery.malsup.com/corner/
* version 2.13 (19-FEB-2013)
* Requires jQuery v1.3.2 or later
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
* Authors: Dave Methvin and Mike Alsup
*/
/**
* corner() takes a single string argument: $('#myDiv').corner("effect corners width")
*
* effect: name of the effect to apply, such as round, bevel, notch, bite, etc (default is round).
* corners: one or more of: top, bottom, tr, tl, br, or bl. (default is all corners)
* width: width of the effect; in the case of rounded corners this is the radius.
* specify this value using the px suffix such as 10px (yes, it must be pixels).
*/
; (function ($) {
var msie = /MSIE/.test(navigator.userAgent);
var style = document.createElement('div').style,
moz = style['MozBorderRadius'] !== undefined,
webkit = style['WebkitBorderRadius'] !== undefined,
radius = style['borderRadius'] !== undefined || style['BorderRadius'] !== undefined,
mode = document.documentMode || 0,
noBottomFold = msie && (!mode || mode < 8),
expr = msie && (function () {
var div = document.createElement('div');
try { div.style.setExpression('width', '0+0'); div.style.removeExpression('width'); }
catch (e) { return false; }
return true;
})();
$.support = $.support || {};
$.support.borderRadius = moz || webkit || radius; // so you can do: if (!$.support.borderRadius) $('#myDiv').corner();
function sz(el, p) {
return parseInt($.css(el, p), 10) || 0;
}
function hex2(s) {
s = parseInt(s, 10).toString(16);
return (s.length < 2) ? '0' + s : s;
}
function gpc(node) {
while (node) {
var v = $.css(node, 'backgroundColor'), rgb;
if (v && v != 'transparent' && v != 'rgba(0, 0, 0, 0)') {
if (v.indexOf('rgb') >= 0) {
rgb = v.match(/\d+/g);
return '#' + hex2(rgb[0]) + hex2(rgb[1]) + hex2(rgb[2]);
}
return v;
}
if (node.nodeName.toLowerCase() == 'html')
break;
node = node.parentNode; // keep walking if transparent
}
return '#ffffff';
}
function getWidth(fx, i, width) {
switch (fx) {
case 'round': return Math.round(width * (1 - Math.cos(Math.asin(i / width))));
case 'cool': return Math.round(width * (1 + Math.cos(Math.asin(i / width))));
case 'sharp': return width - i;
case 'bite': return Math.round(width * (Math.cos(Math.asin((width - i - 1) / width))));
case 'slide': return Math.round(width * (Math.atan2(i, width / i)));
case 'jut': return Math.round(width * (Math.atan2(width, (width - i - 1))));
case 'curl': return Math.round(width * (Math.atan(i)));
case 'tear': return Math.round(width * (Math.cos(i)));
case 'wicked': return Math.round(width * (Math.tan(i)));
case 'long': return Math.round(width * (Math.sqrt(i)));
case 'sculpt': return Math.round(width * (Math.log((width - i - 1), width)));
case 'dogfold':
case 'dog': return (i & 1) ? (i + 1) : width;
case 'dog2': return (i & 2) ? (i + 1) : width;
case 'dog3': return (i & 3) ? (i + 1) : width;
case 'fray': return (i % 2) * width;
case 'notch': return width;
case 'bevelfold':
case 'bevel': return i + 1;
case 'steep': return i / 2 + 1;
case 'invsteep': return (width - i) / 2 + 1;
}
}
$.fn.corner = function (options) {
// in 1.3+ we can fix mistakes with the ready state
if (this.length === 0) {
if (!$.isReady && this.selector) {
var s = this.selector, c = this.context;
$(function () {
$(s, c).corner(options);
});
}
return this;
}
return this.each(function (index) {
var $this = $(this),
// meta values override options
o = [$this.attr($.fn.corner.defaults.metaAttr) || '', options || ''].join(' ').toLowerCase(),
keep = /keep/.test(o), // keep borders?
cc = ((o.match(/cc:(#[0-9a-f]+)/) || [])[1]), // corner color
sc = ((o.match(/sc:(#[0-9a-f]+)/) || [])[1]), // strip color
width = parseInt((o.match(/(\d+)px/) || [])[1], 10) || 10, // corner width
re = /round|bevelfold|bevel|notch|bite|cool|sharp|slide|jut|curl|tear|fray|wicked|sculpt|long|dog3|dog2|dogfold|dog|invsteep|steep/,
fx = ((o.match(re) || ['round'])[0]),
fold = /dogfold|bevelfold/.test(o),
edges = { T: 0, B: 1 },
opts = {
TL: /top|tl|left/.test(o), TR: /top|tr|right/.test(o),
BL: /bottom|bl|left/.test(o), BR: /bottom|br|right/.test(o)
},
// vars used in func later
strip, pad, cssHeight, j, bot, d, ds, bw, i, w, e, c, common, $horz;
if (!opts.TL && !opts.TR && !opts.BL && !opts.BR)
opts = { TL: 1, TR: 1, BL: 1, BR: 1 };
// support native rounding
if ($.fn.corner.defaults.useNative && fx == 'round' && (radius || moz || webkit) && !cc && !sc) {
if (opts.TL)
$this.css(radius ? 'border-top-left-radius' : moz ? '-moz-border-radius-topleft' : '-webkit-border-top-left-radius', width + 'px');
if (opts.TR)
$this.css(radius ? 'border-top-right-radius' : moz ? '-moz-border-radius-topright' : '-webkit-border-top-right-radius', width + 'px');
if (opts.BL)
$this.css(radius ? 'border-bottom-left-radius' : moz ? '-moz-border-radius-bottomleft' : '-webkit-border-bottom-left-radius', width + 'px');
if (opts.BR)
$this.css(radius ? 'border-bottom-right-radius' : moz ? '-moz-border-radius-bottomright' : '-webkit-border-bottom-right-radius', width + 'px');
return;
}
strip = document.createElement('div');
$(strip).css({
overflow: 'hidden',
height: '1px',
minHeight: '1px',
fontSize: '1px',
backgroundColor: sc || 'transparent',
borderStyle: 'solid'
});
pad = {
T: parseInt($.css(this, 'paddingTop'), 10) || 0, R: parseInt($.css(this, 'paddingRight'), 10) || 0,
B: parseInt($.css(this, 'paddingBottom'), 10) || 0, L: parseInt($.css(this, 'paddingLeft'), 10) || 0
};
if (typeof this.style.zoom !== undefined) this.style.zoom = 1; // force 'hasLayout' in IE
if (!keep) this.style.border = 'none';
strip.style.borderColor = cc || gpc(this.parentNode);
cssHeight = $(this).outerHeight();
for (j in edges) {
bot = edges[j];
// only add stips if needed
if ((bot && (opts.BL || opts.BR)) || (!bot && (opts.TL || opts.TR))) {
strip.style.borderStyle = 'none ' + (opts[j + 'R'] ? 'solid' : 'none') + ' none ' + (opts[j + 'L'] ? 'solid' : 'none');
d = document.createElement('div');
$(d).addClass('jquery-corner');
ds = d.style;
bot ? this.appendChild(d) : this.insertBefore(d, this.firstChild);
if (bot && cssHeight != 'auto') {
if ($.css(this, 'position') == 'static')
this.style.position = 'relative';
ds.position = 'absolute';
ds.bottom = ds.left = ds.padding = ds.margin = '0';
if (expr)
ds.setExpression('width', 'this.parentNode.offsetWidth');
else
ds.width = '100%';
}
else if (!bot && msie) {
if ($.css(this, 'position') == 'static')
this.style.position = 'relative';
ds.position = 'absolute';
ds.top = ds.left = ds.right = ds.padding = ds.margin = '0';
// fix ie6 problem when blocked element has a border width
if (expr) {
bw = sz(this, 'borderLeftWidth') + sz(this, 'borderRightWidth');
ds.setExpression('width', 'this.parentNode.offsetWidth - ' + bw + '+ "px"');
}
else
ds.width = '100%';
}
else {
ds.position = 'relative';
ds.margin = !bot ? '-' + pad.T + 'px -' + pad.R + 'px ' + (pad.T - width) + 'px -' + pad.L + 'px' :
(pad.B - width) + 'px -' + pad.R + 'px -' + pad.B + 'px -' + pad.L + 'px';
}
for (i = 0; i < width; i++) {
w = Math.max(0, getWidth(fx, i, width));
e = strip.cloneNode(false);
e.style.borderWidth = '0 ' + (opts[j + 'R'] ? w : 0) + 'px 0 ' + (opts[j + 'L'] ? w : 0) + 'px';
bot ? d.appendChild(e) : d.insertBefore(e, d.firstChild);
}
if (fold && $.support.boxModel) {
if (bot && noBottomFold) continue;
for (c in opts) {
if (!opts[c]) continue;
if (bot && (c == 'TL' || c == 'TR')) continue;
if (!bot && (c == 'BL' || c == 'BR')) continue;
common = { position: 'absolute', border: 'none', margin: 0, padding: 0, overflow: 'hidden', backgroundColor: strip.style.borderColor };
$horz = $('
').css(common).css({ width: width + 'px', height: '1px' });
switch (c) {
case 'TL': $horz.css({ bottom: 0, left: 0 }); break;
case 'TR': $horz.css({ bottom: 0, right: 0 }); break;
case 'BL': $horz.css({ top: 0, left: 0 }); break;
case 'BR': $horz.css({ top: 0, right: 0 }); break;
}
d.appendChild($horz[0]);
var $vert = $('
').css(common).css({ top: 0, bottom: 0, width: '1px', height: width + 'px' });
switch (c) {
case 'TL': $vert.css({ left: width }); break;
case 'TR': $vert.css({ right: width }); break;
case 'BL': $vert.css({ left: width }); break;
case 'BR': $vert.css({ right: width }); break;
}
d.appendChild($vert[0]);
}
}
}
}
});
};
$.fn.uncorner = function () {
if (radius || moz || webkit)
this.css(radius ? 'border-radius' : moz ? '-moz-border-radius' : '-webkit-border-radius', 0);
$('div.jquery-corner', this).remove();
return this;
};
// expose options
$.fn.corner.defaults = {
useNative: true, // true if plugin should attempt to use native browser support for border radius rounding
metaAttr: 'data-corner' // name of meta attribute to use for options
};
})(jQuery);
/*
* jQuery UI Touch Punch 0.2.2
*
* Copyright 2011, Dave Furfero
* Dual licensed under the MIT or GPL Version 2 licenses.
*
* Depends:
* jquery.ui.widget.js
* jquery.ui.mouse.js
*/
(function (b) { b.support.touch = "ontouchend" in document; if (!b.support.touch) { return; } var c = b.ui.mouse.prototype, e = c._mouseInit, a; function d(g, h) { if (g.originalEvent.touches.length > 1) { return; } g.preventDefault(); var i = g.originalEvent.changedTouches[0], f = document.createEvent("MouseEvents"); f.initMouseEvent(h, true, true, window, 1, i.screenX, i.screenY, i.clientX, i.clientY, false, false, false, false, 0, null); g.target.dispatchEvent(f); } c._touchStart = function (g) { var f = this; if (a || !f._mouseCapture(g.originalEvent.changedTouches[0])) { return; } a = true; f._touchMoved = false; d(g, "mouseover"); d(g, "mousemove"); d(g, "mousedown"); }; c._touchMove = function (f) { if (!a) { return; } this._touchMoved = true; d(f, "mousemove"); }; c._touchEnd = function (f) { if (!a) { return; } d(f, "mouseup"); d(f, "mouseout"); if (!this._touchMoved) { d(f, "click"); } a = false; }; c._mouseInit = function () { var f = this; f.element.bind("touchstart", b.proxy(f, "_touchStart")).bind("touchmove", b.proxy(f, "_touchMove")).bind("touchend", b.proxy(f, "_touchEnd")); e.call(f); }; })(jQuery);
//fgnass.github.com/spin.js#v1.2.5
(function (a, b, c) { function g(a, c) { var d = b.createElement(a || "div"), e; for (e in c) d[e] = c[e]; return d } function h(a) { for (var b = 1, c = arguments.length; b < c; b++) a.appendChild(arguments[b]); return a } function j(a, b, c, d) { var g = ["opacity", b, ~~(a * 100), c, d].join("-"), h = .01 + c / d * 100, j = Math.max(1 - (1 - a) / b * (100 - h), a), k = f.substring(0, f.indexOf("Animation")).toLowerCase(), l = k && "-" + k + "-" || ""; return e[g] || (i.insertRule("@" + l + "keyframes " + g + "{" + "0%{opacity:" + j + "}" + h + "%{opacity:" + a + "}" + (h + .01) + "%{opacity:1}" + (h + b) % 100 + "%{opacity:" + a + "}" + "100%{opacity:" + j + "}" + "}", 0), e[g] = 1), g } function k(a, b) { var e = a.style, f, g; if (e[b] !== c) return b; b = b.charAt(0).toUpperCase() + b.slice(1); for (g = 0; g < d.length; g++) { f = d[g] + b; if (e[f] !== c) return f } } function l(a, b) { for (var c in b) a.style[k(a, c) || c] = b[c]; return a } function m(a) { for (var b = 1; b < arguments.length; b++) { var d = arguments[b]; for (var e in d) a[e] === c && (a[e] = d[e]) } return a } function n(a) { var b = { x: a.offsetLeft, y: a.offsetTop }; while (a = a.offsetParent) b.x += a.offsetLeft, b.y += a.offsetTop; return b } var d = ["webkit", "Moz", "ms", "O"], e = {}, f, i = function () { var a = g("style"); return h(b.getElementsByTagName("head")[0], a), a.sheet || a.styleSheet }(), o = { lines: 12, length: 7, width: 5, radius: 10, rotate: 0, color: "#000", speed: 1, trail: 100, opacity: .25, fps: 20, zIndex: 2e9, className: "spinner", top: "auto", left: "auto" }, p = function q(a) { if (!this.spin) return new q(a); this.opts = m(a || {}, q.defaults, o) }; p.defaults = {}, m(p.prototype, { spin: function (a) { this.stop(); var b = this, c = b.opts, d = b.el = l(g(0, { className: c.className }), { position: "relative", zIndex: c.zIndex }), e = c.radius + c.length + c.width, h, i; a && (a.insertBefore(d, a.firstChild || null), i = n(a), h = n(d), l(d, { left: (c.left == "auto" ? i.x - h.x + (a.offsetWidth >> 1) : c.left + e) + "px", top: (c.top == "auto" ? i.y - h.y + (a.offsetHeight >> 1) : c.top + e) + "px" })), d.setAttribute("aria-role", "progressbar"), b.lines(d, b.opts); if (!f) { var j = 0, k = c.fps, m = k / c.speed, o = (1 - c.opacity) / (m * c.trail / 100), p = m / c.lines; !function q() { j++; for (var a = c.lines; a; a--) { var e = Math.max(1 - (j + a * p) % m * o, c.opacity); b.opacity(d, c.lines - a, e, c) } b.timeout = b.el && setTimeout(q, ~~(1e3 / k)) }() } return b }, stop: function () { var a = this.el; return a && (clearTimeout(this.timeout), a.parentNode && a.parentNode.removeChild(a), this.el = c), this }, lines: function (a, b) { function e(a, d) { return l(g(), { position: "absolute", width: b.length + b.width + "px", height: b.width + "px", background: a, boxShadow: d, transformOrigin: "left", transform: "rotate(" + ~~(360 / b.lines * c + b.rotate) + "deg) translate(" + b.radius + "px" + ",0)", borderRadius: (b.width >> 1) + "px" }) } var c = 0, d; for (; c < b.lines; c++) d = l(g(), { position: "absolute", top: 1 + ~(b.width / 2) + "px", transform: b.hwaccel ? "translate3d(0,0,0)" : "", opacity: b.opacity, animation: f && j(b.opacity, b.trail, c, b.lines) + " " + 1 / b.speed + "s linear infinite" }), b.shadow && h(d, l(e("#000", "0 0 4px #000"), { top: "2px" })), h(a, h(d, e(b.color, "0 0 1px rgba(0,0,0,.1)"))); return a }, opacity: function (a, b, c) { b < a.childNodes.length && (a.childNodes[b].style.opacity = c) } }), !function () { function a(a, b) { return g("<" + a + ' xmlns="urn:schemas-microsoft.com:vml" class="spin-vml">', b) } var b = l(g("group"), { behavior: "url(#default#VML)" }); !k(b, "transform") && b.adj ? (i.addRule(".spin-vml", "behavior:url(#default#VML)"), p.prototype.lines = function (b, c) { function f() { return l(a("group", { coordsize: e + " " + e, coordorigin: -d + " " + -d }), { width: e, height: e }) } function k(b, e, g) { h(i, h(l(f(), { rotation: 360 / c.lines * b + "deg", left: ~~e }), h(l(a("roundrect", { arcsize: 1 }), { width: d, height: c.width, left: c.radius, top: -c.width >> 1, filter: g }), a("fill", { color: c.color, opacity: c.opacity }), a("stroke", { opacity: 0 })))) } var d = c.length + c.width, e = 2 * d, g = -(c.width + c.length) * 2 + "px", i = l(f(), { position: "absolute", top: g, left: g }), j; if (c.shadow) for (j = 1; j <= c.lines; j++) k(j, -2, "progid:DXImageTransform.Microsoft.Blur(pixelradius=2,makeshadow=1,shadowopacity=.3)"); for (j = 1; j <= c.lines; j++) k(j); return h(b, i) }, p.prototype.opacity = function (a, b, c, d) { var e = a.firstChild; d = d.shadow && d.lines || 0, e && b + d < e.childNodes.length && (e = e.childNodes[b + d], e = e && e.firstChild, e = e && e.firstChild, e && (e.opacity = c)) }) : f = k(b, "animation") }(), a.Spinner = p })(window, document);
var Mouse = { x: 0, y: 0, refresh: function (e) { if (e && !this.down && !jQuery(e.target).hasClass("flowpaper_zoomSlider")) return; var posx = 0, posy = 0; if (!e) e = window.event; if (e.pageX || e.pageY) { posx = e.pageX; posy = e.pageY } else if (e.clientX || e.clientY) { posx = e.clientX + document.body.scrollLeft + document.documentElement.scrollLeft; posy = e.clientY + document.body.scrollTop + document.documentElement.scrollTop } this.x = posx; this.y = posy } }; var mouseMoveHandler = document.onmousemove || function () { };
document.onmousemove = function (e) { if (!e) { e = window.event; } if (e && e.which == 1) Mouse.down = true; Mouse.refresh(e) }; var MPosition = { get: function (obj) { var curleft = curtop = 0; if (obj.offsetParent) { do { curleft += obj.offsetLeft; curtop += obj.offsetTop } while (obj = obj.offsetParent) } return [curleft, curtop] } };
var Slider = function (wrapper, options) { if (typeof wrapper == "string") wrapper = document.getElementById(wrapper); if (!wrapper) return; var handle = wrapper.getElementsByTagName("div")[0]; if (!handle || handle.className.search(/(^|\s)flowpaper_handle(\s|$)/) == -1) return; this.init(wrapper, handle, options || {}); this.setup() };
Slider.prototype = {
init: function (wrapper, handle, options) {
this.wrapper = wrapper; this.handle = handle; this.options = options; this.value = { current: options.value || 0, target: options.value || 0, prev: -1 }; this.disabled = options.disabled || false; this.steps = options.steps || 0; this.snapping = options.snapping || false; this.speed = options.speed || 5; this.callback = options.callback || null; this.animation_callback = options.animation_callback || null; this.bounds = { pleft: options.pleft || 0, left: 0, pright: -(options.pright || 0), right: 0, width: 0, diff: 0 };
this.offset = { wrapper: 0, mouse: 0, target: 0, current: 0, prev: -9999 }; this.dragging = false; this.tapping = false
}, setup: function () {
var self = this; this.wrapper.onselectstart = function () { return false }; this.handle.onmousedown = function (e) { self.preventDefaults(e, true); this.focus(); self.handleMouseDownHandler(e) }; this.wrapper.onmousedown = function (e) { self.preventDefaults(e); self.wrapperMouseDownHandler(e) }; var mouseUpHandler = document.onmouseup || function () { }; if (document.addEventListener) document.addEventListener("mouseup",
function (e) { if (self.dragging) { mouseUpHandler(e); self.preventDefaults(e); self.documentMouseUpHandler(e) } }); else document.onmouseup = function (e) { if (self.dragging) { mouseUpHandler(e); self.preventDefaults(e); self.documentMouseUpHandler(e) } }; var resizeHandler = document.onresize || function () { }; if (1 == 2) window.onresize = function (e) { resizeHandler(e); self.setWrapperOffset(); self.setBounds() }; this.setWrapperOffset(); if (!this.bounds.pleft && !this.bounds.pright) {
this.bounds.pleft = MPosition.get(this.handle)[0] - this.offset.wrapper;
this.bounds.pright = -this.bounds.pleft
} this.setBounds(); this.setSteps(); this.interval = setInterval(function () { self.animate() }, 100); self.animate(false, true)
}, setWrapperOffset: function () { this.offset.wrapper = MPosition.get(this.wrapper)[0] }, setBounds: function () { this.bounds.left = this.bounds.pleft; this.bounds.right = this.bounds.pright + this.wrapper.offsetWidth; this.bounds.width = this.bounds.right - this.bounds.left; this.bounds.diff = this.bounds.width - this.handle.offsetWidth }, setSteps: function () {
if (this.steps > 1) {
this.stepsRatio =
[]; for (var i = 0; i <= this.steps - 1; i++) this.stepsRatio[i] = i / (this.steps - 1)
}
}, disable: function () { this.disabled = true; this.handle.className += " disabled" }, enable: function () { this.disabled = false; this.handle.className = this.handle.className.replace(/\s?disabled/g, "") }, handleMouseDownHandler: function (e) { if (Mouse) { Mouse.down = true; Mouse.refresh(e) } var self = this; this.startDrag(e); this.cancelEvent(e) }, wrapperMouseDownHandler: function (e) { this.startTap() }, documentMouseUpHandler: function (e) {
this.stopDrag(); this.stopTap();
if (Mouse) Mouse.down = false
}, startTap: function (target) { if (this.disabled) return; if (target === undefined) target = Mouse.x - this.offset.wrapper - this.handle.offsetWidth / 2; this.setOffsetTarget(target); this.tapping = true }, stopTap: function () { if (this.disabled || !this.tapping) return; this.setOffsetTarget(this.offset.current); this.tapping = false; this.result() }, startDrag: function (e) { if (!e) e = window.event; if (this.disabled) return; this.offset.mouse = Mouse.x - MPosition.get(this.handle)[0]; this.dragging = true; if (e.preventDefault) e.preventDefault() },
stopDrag: function () { if (this.disabled || !this.dragging) return; this.dragging = false; this.result() }, feedback: function () { var value = this.value.current; if (this.steps > 1 && this.snapping) value = this.getClosestStep(value); if (value != this.value.prev) { if (typeof this.animation_callback == "function") this.animation_callback(value); this.value.prev = value } }, result: function () { var value = this.value.target; if (this.steps > 1) value = this.getClosestStep(value); if (typeof this.callback == "function") this.callback(value) }, animate: function (onMove,
first) { if (onMove && !this.dragging) return; if (this.dragging) this.setOffsetTarget(Mouse.x - this.offset.mouse - this.offset.wrapper); this.value.target = Math.max(this.value.target, 0); this.value.target = Math.min(this.value.target, 1); this.offset.target = this.getOffsetByRatio(this.value.target); if (!this.dragging && !this.tapping || this.snapping) if (this.steps > 1) this.setValueTarget(this.getClosestStep(this.value.target)); if (this.dragging || first) this.value.current = this.value.target; this.slide(); this.show(); this.feedback() },
slide: function () { if (this.value.target > this.value.current) this.value.current += Math.min(this.value.target - this.value.current, this.speed / 100); else if (this.value.target < this.value.current) this.value.current -= Math.min(this.value.current - this.value.target, this.speed / 100); if (!this.snapping) this.offset.current = this.getOffsetByRatio(this.value.current); else this.offset.current = this.getOffsetByRatio(this.getClosestStep(this.value.current)) }, show: function () {
if (this.offset.current != this.offset.prev) {
this.handle.style.left =
String(this.offset.current) + "px"; this.offset.prev = this.offset.current
}
}, setValue: function (value, snap) { this.setValueTarget(value); if (snap) this.value.current = this.value.target }, setValueTarget: function (value) { this.value.target = value; this.offset.target = this.getOffsetByRatio(value) }, setOffsetTarget: function (value) { this.offset.target = value; this.value.target = this.getRatioByOffset(value) }, getRatioByOffset: function (offset) { return (offset - this.bounds.left) / this.bounds.diff }, getOffsetByRatio: function (ratio) {
return Math.round(ratio *
this.bounds.diff) + this.bounds.left
}, getClosestStep: function (value) { var k = 0; var min = 1; for (var i = 0; i <= this.steps - 1; i++) if (Math.abs(this.stepsRatio[i] - value) < min) { min = Math.abs(this.stepsRatio[i] - value); k = i } return this.stepsRatio[k] }, preventDefaults: function (e, selection) { if (!e) e = window.event; if (e.preventDefault) e.preventDefault(); if (selection && document.selection) document.selection.empty() }, cancelEvent: function (e) { if (!e) e = window.event; if (e.stopPropagation) e.stopPropagation(); else e.cancelBubble = true }
};
// Copyright 2006 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
document.createElement("canvas").getContext || (function () {
var s = Math, j = s.round, F = s.sin, G = s.cos, V = s.abs, W = s.sqrt, k = 10, v = k / 2; function X() { return this.context_ || (this.context_ = new H(this)) } var L = Array.prototype.slice; function Y(b, a) { var c = L.call(arguments, 2); return function () { return b.apply(a, c.concat(L.call(arguments))) } } var M = {
init: function (b) { if (/MSIE/.test(navigator.userAgent) && !window.opera) { var a = b || document; a.createElement("canvas"); a.attachEvent("onreadystatechange", Y(this.init_, this, a)) } }, init_: function (b) {
b.namespaces.g_vml_ ||
b.namespaces.add("g_vml_", "urn:schemas-microsoft-com:vml", "#default#VML"); b.namespaces.g_o_ || b.namespaces.add("g_o_", "urn:schemas-microsoft-com:office:office", "#default#VML"); if (!b.styleSheets.ex_canvas_) { var a = b.createStyleSheet(); a.owningElement.id = "ex_canvas_"; a.cssText = "canvas{display:inline-block;overflow:hidden;text-align:left;width:300px;height:150px}g_vml_\\:*{behavior:url(#default#VML)}g_o_\\:*{behavior:url(#default#VML)}" } var c = b.getElementsByTagName("canvas"), d = 0; for (; d < c.length; d++) this.initElement(c[d])
},
initElement: function (b) { if (!b.getContext) { b.getContext = X; b.innerHTML = ""; b.attachEvent("onpropertychange", Z); b.attachEvent("onresize", $); var a = b.attributes; if (a.width && a.width.specified) b.style.width = a.width.nodeValue + "px"; else b.width = b.clientWidth; if (a.height && a.height.specified) b.style.height = a.height.nodeValue + "px"; else b.height = b.clientHeight } return b }
}; function Z(b) {
var a = b.srcElement; switch (b.propertyName) {
case "width": a.style.width = a.attributes.width.nodeValue + "px"; a.getContext().clearRect();
break; case "height": a.style.height = a.attributes.height.nodeValue + "px"; a.getContext().clearRect(); break
}
} function $(b) { var a = b.srcElement; if (a.firstChild) { a.firstChild.style.width = a.clientWidth + "px"; a.firstChild.style.height = a.clientHeight + "px" } } M.init(); var N = [], B = 0; for (; B < 16; B++) { var C = 0; for (; C < 16; C++) N[B * 16 + C] = B.toString(16) + C.toString(16) } function I() { return [[1, 0, 0], [0, 1, 0], [0, 0, 1]] } function y(b, a) {
var c = I(), d = 0; for (; d < 3; d++) {
var f = 0; for (; f < 3; f++) {
var h = 0, g = 0; for (; g < 3; g++) h += b[d][g] * a[g][f]; c[d][f] =
h
}
} return c
} function O(b, a) { a.fillStyle = b.fillStyle; a.lineCap = b.lineCap; a.lineJoin = b.lineJoin; a.lineWidth = b.lineWidth; a.miterLimit = b.miterLimit; a.shadowBlur = b.shadowBlur; a.shadowColor = b.shadowColor; a.shadowOffsetX = b.shadowOffsetX; a.shadowOffsetY = b.shadowOffsetY; a.strokeStyle = b.strokeStyle; a.globalAlpha = b.globalAlpha; a.arcScaleX_ = b.arcScaleX_; a.arcScaleY_ = b.arcScaleY_; a.lineScale_ = b.lineScale_ } function P(b) {
var a, c = 1; b = String(b); if (b.substring(0, 3) == "rgb") {
var d = b.indexOf("(", 3), f = b.indexOf(")", d +
1), h = b.substring(d + 1, f).split(","); a = "#"; var g = 0; for (; g < 3; g++) a += N[Number(h[g])]; if (h.length == 4 && b.substr(3, 1) == "a") c = h[3]
} else a = b; return { color: a, alpha: c }
} function aa(b) { switch (b) { case "butt": return "flat"; case "round": return "round"; case "square": default: return "square" } } function H(b) {
this.m_ = I(); this.mStack_ = []; this.aStack_ = []; this.currentPath_ = []; this.fillStyle = this.strokeStyle = "#000"; this.lineWidth = 1; this.lineJoin = "miter"; this.lineCap = "butt"; this.miterLimit = k * 1; this.globalAlpha = 1; this.canvas = b;
var a = b.ownerDocument.createElement("div"); a.style.width = b.clientWidth + "px"; a.style.height = b.clientHeight + "px"; a.style.overflow = "hidden"; a.style.position = "absolute"; b.appendChild(a); this.element_ = a; this.lineScale_ = this.arcScaleY_ = this.arcScaleX_ = 1
} var i = H.prototype; i.clearRect = function () { this.element_.innerHTML = "" }; i.beginPath = function () { this.currentPath_ = [] }; i.moveTo = function (b, a) { var c = this.getCoords_(b, a); this.currentPath_.push({ type: "moveTo", x: c.x, y: c.y }); this.currentX_ = c.x; this.currentY_ = c.y };
i.lineTo = function (b, a) { var c = this.getCoords_(b, a); this.currentPath_.push({ type: "lineTo", x: c.x, y: c.y }); this.currentX_ = c.x; this.currentY_ = c.y }; i.bezierCurveTo = function (b, a, c, d, f, h) { var g = this.getCoords_(f, h), l = this.getCoords_(b, a), e = this.getCoords_(c, d); Q(this, l, e, g) }; function Q(b, a, c, d) { b.currentPath_.push({ type: "bezierCurveTo", cp1x: a.x, cp1y: a.y, cp2x: c.x, cp2y: c.y, x: d.x, y: d.y }); b.currentX_ = d.x; b.currentY_ = d.y } i.quadraticCurveTo = function (b, a, c, d) {
var f = this.getCoords_(b, a), h = this.getCoords_(c, d), g = {
x: this.currentX_ +
0.6666666666666666 * (f.x - this.currentX_), y: this.currentY_ + 0.6666666666666666 * (f.y - this.currentY_)
}; Q(this, g, { x: g.x + (h.x - this.currentX_) / 3, y: g.y + (h.y - this.currentY_) / 3 }, h)
}; i.arc = function (b, a, c, d, f, h) { c *= k; var g = h ? "at" : "wa", l = b + G(d) * c - v, e = a + F(d) * c - v, m = b + G(f) * c - v, r = a + F(f) * c - v; if (l == m && !h) l += 0.125; var n = this.getCoords_(b, a), o = this.getCoords_(l, e), q = this.getCoords_(m, r); this.currentPath_.push({ type: g, x: n.x, y: n.y, radius: c, xStart: o.x, yStart: o.y, xEnd: q.x, yEnd: q.y }) }; i.rect = function (b, a, c, d) {
this.moveTo(b,
a); this.lineTo(b + c, a); this.lineTo(b + c, a + d); this.lineTo(b, a + d); this.closePath()
}; i.strokeRect = function (b, a, c, d) { var f = this.currentPath_; this.beginPath(); this.moveTo(b, a); this.lineTo(b + c, a); this.lineTo(b + c, a + d); this.lineTo(b, a + d); this.closePath(); this.stroke(); this.currentPath_ = f }; i.fillRect = function (b, a, c, d) { var f = this.currentPath_; this.beginPath(); this.moveTo(b, a); this.lineTo(b + c, a); this.lineTo(b + c, a + d); this.lineTo(b, a + d); this.closePath(); this.fill(); this.currentPath_ = f }; i.createLinearGradient = function (b,
a, c, d) { var f = new D("gradient"); f.x0_ = b; f.y0_ = a; f.x1_ = c; f.y1_ = d; return f }; i.createRadialGradient = function (b, a, c, d, f, h) { var g = new D("gradientradial"); g.x0_ = b; g.y0_ = a; g.r0_ = c; g.x1_ = d; g.y1_ = f; g.r1_ = h; return g }; i.drawImage = function (b) {
var a, c, d, f, h, g, l, e, m = b.runtimeStyle.width, r = b.runtimeStyle.height; b.runtimeStyle.width = "auto"; b.runtimeStyle.height = "auto"; var n = b.width, o = b.height; b.runtimeStyle.width = m; b.runtimeStyle.height = r; if (arguments.length == 3) { a = arguments[1]; c = arguments[2]; h = g = 0; l = d = n; e = f = o } else if (arguments.length ==
5) { a = arguments[1]; c = arguments[2]; d = arguments[3]; f = arguments[4]; h = g = 0; l = n; e = o } else if (arguments.length == 9) { h = arguments[1]; g = arguments[2]; l = arguments[3]; e = arguments[4]; a = arguments[5]; c = arguments[6]; d = arguments[7]; f = arguments[8] } else throw Error("Invalid number of arguments"); var q = this.getCoords_(a, c), t = []; t.push("
', '", ""); this.element_.insertAdjacentHTML("BeforeEnd", t.join(""))
}; i.stroke = function (b) {
var a = [], c = P(b ? this.fillStyle : this.strokeStyle), d = c.color, f = c.alpha * this.globalAlpha; a.push("
g.x) g.x = e.x; if (h.y == null || e.y < h.y) h.y = e.y; if (g.y == null || e.y > g.y) g.y = e.y }
} a.push(' ">'); if (b) if (typeof this.fillStyle == "object") {
var m = this.fillStyle, r = 0, n = { x: 0, y: 0 }, o = 0, q = 1; if (m.type_ == "gradient") {
var t = m.x1_ / this.arcScaleX_, E = m.y1_ / this.arcScaleY_, p = this.getCoords_(m.x0_ / this.arcScaleX_, m.y0_ / this.arcScaleY_),
z = this.getCoords_(t, E); r = Math.atan2(z.x - p.x, z.y - p.y) * 180 / Math.PI; if (r < 0) r += 360; if (r < 1.0E-6) r = 0
} else { var p = this.getCoords_(m.x0_, m.y0_), w = g.x - h.x, x = g.y - h.y; n = { x: (p.x - h.x) / w, y: (p.y - h.y) / x }; w /= this.arcScaleX_ * k; x /= this.arcScaleY_ * k; var R = s.max(w, x); o = 2 * m.r0_ / R; q = 2 * m.r1_ / R - o } var u = m.colors_; u.sort(function (ba, ca) { return ba.offset - ca.offset }); var J = u.length, da = u[0].color, ea = u[J - 1].color, fa = u[0].alpha * this.globalAlpha, ga = u[J - 1].alpha * this.globalAlpha, S = [], l = 0; for (; l < J; l++) {
var T = u[l]; S.push(T.offset * q +
o + " " + T.color)
} a.push('')
} else a.push(''); else {
var K = this.lineScale_ * this.lineWidth; if (K < 1) f *= K; a.push("')
} a.push(""); this.element_.insertAdjacentHTML("beforeEnd", a.join(""))
}; i.fill = function () { this.stroke(true) }; i.closePath = function () { this.currentPath_.push({ type: "close" }) }; i.getCoords_ = function (b, a) { var c = this.m_; return { x: k * (b * c[0][0] + a * c[1][0] + c[2][0]) - v, y: k * (b * c[0][1] + a * c[1][1] + c[2][1]) - v } }; i.save = function () { var b = {}; O(this, b); this.aStack_.push(b); this.mStack_.push(this.m_); this.m_ = y(I(), this.m_) }; i.restore = function () {
O(this.aStack_.pop(),
this); this.m_ = this.mStack_.pop()
}; function ha(b) { var a = 0; for (; a < 3; a++) { var c = 0; for (; c < 2; c++) if (!isFinite(b[a][c]) || isNaN(b[a][c])) return false } return true } function A(b, a, c) { if (!!ha(a)) { b.m_ = a; if (c) b.lineScale_ = W(V(a[0][0] * a[1][1] - a[0][1] * a[1][0])) } } i.translate = function (b, a) { A(this, y([[1, 0, 0], [0, 1, 0], [b, a, 1]], this.m_), false) }; i.rotate = function (b) { var a = G(b), c = F(b); A(this, y([[a, c, 0], [-c, a, 0], [0, 0, 1]], this.m_), false) }; i.scale = function (b, a) {
this.arcScaleX_ *= b; this.arcScaleY_ *= a; A(this, y([[b, 0, 0], [0, a,
0], [0, 0, 1]], this.m_), true)
}; i.transform = function (b, a, c, d, f, h) { A(this, y([[b, a, 0], [c, d, 0], [f, h, 1]], this.m_), true) }; i.setTransform = function (b, a, c, d, f, h) { A(this, [[b, a, 0], [c, d, 0], [f, h, 1]], true) }; i.clip = function () { }; i.arcTo = function () { }; i.createPattern = function () { return new U }; function D(b) { this.type_ = b; this.r1_ = this.y1_ = this.x1_ = this.r0_ = this.y0_ = this.x0_ = 0; this.colors_ = [] } D.prototype.addColorStop = function (b, a) { a = P(a); this.colors_.push({ offset: b, color: a.color, alpha: a.alpha }) }; function U() { } G_vmlCanvasManager =
M; CanvasRenderingContext2D = H; CanvasGradient = D; CanvasPattern = U
})();
(function ($) {
$.transit = { version: "0.1.3", propertyMap: { marginLeft: "margin", marginRight: "margin", marginBottom: "margin", marginTop: "margin", paddingLeft: "padding", paddingRight: "padding", paddingBottom: "padding", paddingTop: "padding" }, enabled: true, useTransitionEnd: false }; var div = document.createElement("div"); var support = {}; function getVendorPropertyName(prop) {
if (prop in div.style) return prop; var prefixes = ["Moz", "Webkit", "O", "ms"]; var prop_ = prop.charAt(0).toUpperCase() + prop.substr(1); if (prop in div.style) return prop;
for (var i = 0; i < prefixes.length; ++i) { var vendorProp = prefixes[i] + prop_; if (vendorProp in div.style) return vendorProp }
} function checkTransform3dSupport() { div.style[support.transform] = ""; div.style[support.transform] = "rotateY(90deg)"; return div.style[support.transform] !== "" } var isChrome = navigator.userAgent.toLowerCase().indexOf("chrome") > -1; support.transition = getVendorPropertyName("transition"); support.transitionDelay = getVendorPropertyName("transitionDelay"); support.transform = getVendorPropertyName("transform");
support.transformOrigin = getVendorPropertyName("transformOrigin"); support.transform3d = checkTransform3dSupport(); $.extend($.support, support); var eventNames = { "MozTransition": "transitionend", "OTransition": "oTransitionEnd", "WebkitTransition": "webkitTransitionEnd", "msTransition": "MSTransitionEnd" }; var transitionEnd = support.transitionEnd = eventNames[support.transition] || null; div = null; $.cssEase = { "_default": "ease", "in": "ease-in", "out": "ease-out", "in-out": "ease-in-out", "snap": "cubic-bezier(0,1,.5,1)" }; $.cssHooks.transform =
{ get: function (elem) { return $(elem).data("transform") }, set: function (elem, v) { var value = v; if (!(value instanceof Transform)) value = new Transform(value); if (window.eb && eb.browser.chrome) elem.style[support.transform] = value.toString(true); else elem.style[support.transform] = value.toString(); $(elem).data("transform", value) } }; $.cssHooks.transformOrigin = { get: function (elem) { return elem.style[support.transformOrigin] }, set: function (elem, value) { elem.style[support.transformOrigin] = value } };
$.cssHooks.transition = { get: function (elem) { return elem.style[support.transition] }, set: function (elem, value) { elem.style[support.transition] = value } }; registerCssHook("scale"); registerCssHook("translate"); registerCssHook("rotate"); registerCssHook("rotateX"); registerCssHook("rotateY"); registerCssHook("rotate3d"); registerCssHook("perspective"); registerCssHook("skewX"); registerCssHook("skewY"); registerCssHook("x", true); registerCssHook("y", true); function Transform(str) {
if (typeof str === "string") this.parse(str);
return this
} Transform.prototype = {
setFromString: function (prop, val) { var args = typeof val === "string" ? val.split(",") : val.constructor === Array ? val : [val]; args.unshift(prop); Transform.prototype.set.apply(this, args) }, set: function (prop) { var args = Array.prototype.slice.apply(arguments, [1]); if (this.setter[prop]) this.setter[prop].apply(this, args); else this[prop] = args.join(",") }, get: function (prop) { if (this.getter[prop]) return this.getter[prop].apply(this); else return this[prop] || 0 }, setter: {
rotate: function (theta) {
this.rotate =
unit(theta, "deg")
}, rotateX: function (theta) { this.rotateX = unit(theta, "deg") }, rotateY: function (theta) { this.rotateY = unit(theta, "deg") }, scale: function (x, y) { if (y === undefined) y = x; this.scale = x + "," + y }, skewX: function (x) { this.skewX = unit(x, "deg") }, skewY: function (y) { this.skewY = unit(y, "deg") }, perspective: function (dist) { this.perspective = unit(dist, "px") }, x: function (x) { this.set("translate", x, null) }, y: function (y) { this.set("translate", null, y) }, translate: function (x, y) {
if (this._translateX === undefined) this._translateX =
0; if (this._translateY === undefined) this._translateY = 0; if (x !== null) this._translateX = unit(x, "px"); if (y !== null) this._translateY = unit(y, "px"); this.translate = this._translateX + "," + this._translateY
}
}, getter: {
x: function () { return this._translateX || 0 }, y: function () { return this._translateY || 0 }, scale: function () { var s = (this.scale || "1,1").split(","); if (s[0]) s[0] = parseFloat(s[0]); if (s[1]) s[1] = parseFloat(s[1]); return s[0] === s[1] ? s[0] : s }, rotate3d: function () {
var s = (this.rotate3d || "0,0,0,0deg").split(","); for (var i = 0; i <=
3; ++i) if (s[i]) s[i] = parseFloat(s[i]); if (s[3]) s[3] = unit(s[3], "deg"); return s
}
}, parse: function (str) { var self = this; str.replace(/([a-zA-Z0-9]+)\((.*?)\)/g, function (x, prop, val) { self.setFromString(prop, val) }) }, toString: function (use3d) {
var re = []; for (var i in this) if (this.hasOwnProperty(i)) {
if (!support.transform3d && (i === "rotateX" || i === "rotateY" || i === "perspective" || i === "transformOrigin")) continue; if (i[0] !== "_") if (use3d && i === "scale") re.push(i + "3d(" + this[i] + ",1)"); else if (use3d && i === "translate") re.push(i + "3d(" +
this[i] + ",0)"); else re.push(i + "(" + this[i] + ")")
} return re.join(" ")
}
}; function callOrQueue(self, queue, fn) { if (queue === true) self.queue(fn); else if (queue) self.queue(queue, fn); else fn() } function getProperties(props) { var re = []; $.each(props, function (key) { key = $.camelCase(key); key = $.transit.propertyMap[key] || key; key = uncamel(key); if ($.inArray(key, re) === -1) re.push(key) }); return re } function getTransition(properties, duration, easing, delay) {
var props = getProperties(properties); if ($.cssEase[easing]) easing = $.cssEase[easing];
var attribs = "" + toMS(duration) + " " + easing; if (parseInt(delay, 10) > 0) attribs += " " + toMS(delay); var transitions = []; $.each(props, function (i, name) { transitions.push(name + " " + attribs) }); return transitions.join(", ")
} $.fn.transition = $.fn.transit = function (properties, duration, easing, callback) {
var self = this; var delay = 0; var queue = true; if (typeof duration === "function") { callback = duration; duration = undefined } if (typeof easing === "function") { callback = easing; easing = undefined } if (typeof properties.easing !== "undefined") {
easing =
properties.easing; delete properties.easing
} if (typeof properties.duration !== "undefined") { duration = properties.duration; delete properties.duration } if (typeof properties.complete !== "undefined") { callback = properties.complete; delete properties.complete } if (typeof properties.queue !== "undefined") { queue = properties.queue; delete properties.queue } if (typeof properties.delay !== "undefined") { delay = properties.delay; delete properties.delay } if (typeof duration === "undefined") duration = $.fx.speeds._default; if (typeof easing ===
"undefined") easing = $.cssEase._default; duration = toMS(duration); var transitionValue = getTransition(properties, duration, easing, delay); var work = $.transit.enabled && support.transition; var i = work ? parseInt(duration, 10) + parseInt(delay, 10) : 0; if (i === 0) { var fn = function (next) { self.css(properties); if (callback) callback.apply(self); if (next) next() }; callOrQueue(self, queue, fn); return self } var oldTransitions = {}; var run = function (nextCall) {
var bound = false; var cb = function () {
if (bound) self.unbind(transitionEnd, cb); if (i > 0) self.each(function () {
this.style[support.transition] =
oldTransitions[this] || null
}); if (typeof callback === "function") callback.apply(self); if (typeof nextCall === "function") nextCall()
}; if (i > 0 && transitionEnd && $.transit.useTransitionEnd) { bound = true; self.bind(transitionEnd, cb) } else window.setTimeout(cb, i); self.each(function () { if (i > 0) this.style[support.transition] = transitionValue; $(this).css(properties) })
}; var deferredRun = function (next) { var i = 0; this.offsetWidth; run(next) }; callOrQueue(self, queue, deferredRun); return this
}; function registerCssHook(prop, isPixels) {
if (!isPixels) $.cssNumber[prop] =
true; $.transit.propertyMap[prop] = support.transform; $.cssHooks[prop] = { get: function (elem) { var t = $(elem).css("transform"); if (!(t instanceof Transform)) t = new Transform; return t.get(prop) }, set: function (elem, value) { var t = $(elem).css("transform"); if (!(t instanceof Transform)) t = new Transform; t.setFromString(prop, value); $(elem).css({ transform: t }) } }
} function uncamel(str) { return str.replace(/([A-Z])/g, function (letter) { return "-" + letter.toLowerCase() }) } function unit(i, units) {
if (typeof i === "string" && !i.match(/^[\-0-9\.]+$/)) return i;
else return "" + i + units
} function toMS(duration) { var i = duration; if ($.fx.speeds[i]) i = $.fx.speeds[i]; return unit(i, "ms") } $.transit.getTransitionValue = getTransition
})(jQuery);
/*
CryptoJS v3.1.2
code.google.com/p/crypto-js
(c) 2009-2013 by Jeff Mott. All rights reserved.
code.google.com/p/crypto-js/wiki/License
*/
var CryptoJS = CryptoJS || function (s, l) {
var e = {}, n = e.lib = {}, p = function () { }, b = n.Base = { extend: function (c) { p.prototype = this; var a = new p; c && a.mixIn(c); a.hasOwnProperty("init") || (a.init = function () { a.$super.init.apply(this, arguments) }); a.init.prototype = a; a.$super = this; return a }, create: function () { var c = this.extend(); c.init.apply(c, arguments); return c }, init: function () { }, mixIn: function (c) { for (var a in c) c.hasOwnProperty(a) && (this[a] = c[a]); c.hasOwnProperty("toString") && (this.toString = c.toString) }, clone: function () { return this.init.prototype.extend(this) } },
d = n.WordArray = b.extend({
init: function (c, a) { c = this.words = c || []; this.sigBytes = a != l ? a : 4 * c.length }, toString: function (c) { return (c || q).stringify(this) }, concat: function (c) { var a = this.words, m = c.words, f = this.sigBytes; c = c.sigBytes; this.clamp(); if (f % 4) for (var r = 0; r < c; r++) a[f + r >>> 2] |= (m[r >>> 2] >>> 24 - 8 * (r % 4) & 255) << 24 - 8 * ((f + r) % 4); else if (65535 < m.length) for (r = 0; r < c; r += 4) a[f + r >>> 2] = m[r >>> 2]; else a.push.apply(a, m); this.sigBytes += c; return this }, clamp: function () {
var c = this.words, a = this.sigBytes; c[a >>> 2] &= 4294967295 <<
32 - 8 * (a % 4); c.length = s.ceil(a / 4)
}, clone: function () { var c = b.clone.call(this); c.words = this.words.slice(0); return c }, random: function (c) { for (var a = [], m = 0; m < c; m += 4) a.push(4294967296 * s.random() | 0); return new d.init(a, c) }
}), t = e.enc = {}, q = t.Hex = {
stringify: function (c) { var a = c.words; c = c.sigBytes; for (var m = [], f = 0; f < c; f++) { var r = a[f >>> 2] >>> 24 - 8 * (f % 4) & 255; m.push((r >>> 4).toString(16)); m.push((r & 15).toString(16)) } return m.join("") }, parse: function (c) {
for (var a = c.length, m = [], f = 0; f < a; f += 2) m[f >>> 3] |= parseInt(c.substr(f,
2), 16) << 24 - 4 * (f % 8); return new d.init(m, a / 2)
}
}, a = t.Latin1 = { stringify: function (c) { var a = c.words; c = c.sigBytes; for (var m = [], f = 0; f < c; f++) m.push(String.fromCharCode(a[f >>> 2] >>> 24 - 8 * (f % 4) & 255)); return m.join("") }, parse: function (c) { for (var a = c.length, m = [], f = 0; f < a; f++) m[f >>> 2] |= (c.charCodeAt(f) & 255) << 24 - 8 * (f % 4); return new d.init(m, a) } }, v = t.Utf8 = { stringify: function (c) { try { return decodeURIComponent(escape(a.stringify(c))) } catch (u) { throw Error("Malformed UTF-8 data"); } }, parse: function (c) { return a.parse(unescape(encodeURIComponent(c))) } },
u = n.BufferedBlockAlgorithm = b.extend({
reset: function () { this._data = new d.init; this._nDataBytes = 0 }, _append: function (a) { "string" == typeof a && (a = v.parse(a)); this._data.concat(a); this._nDataBytes += a.sigBytes }, _process: function (a) { var u = this._data, m = u.words, f = u.sigBytes, r = this.blockSize, e = f / (4 * r), e = a ? s.ceil(e) : s.max((e | 0) - this._minBufferSize, 0); a = e * r; f = s.min(4 * a, f); if (a) { for (var b = 0; b < a; b += r) this._doProcessBlock(m, b); b = m.splice(0, a); u.sigBytes -= f } return new d.init(b, f) }, clone: function () {
var a = b.clone.call(this);
a._data = this._data.clone(); return a
}, _minBufferSize: 0
}); n.Hasher = u.extend({
cfg: b.extend(), init: function (a) { this.cfg = this.cfg.extend(a); this.reset() }, reset: function () { u.reset.call(this); this._doReset() }, update: function (a) { this._append(a); this._process(); return this }, finalize: function (a) { a && this._append(a); return this._doFinalize() }, blockSize: 16, _createHelper: function (a) { return function (u, m) { return (new a.init(m)).finalize(u) } }, _createHmacHelper: function (a) {
return function (u, m) {
return (new w.HMAC.init(a,
m)).finalize(u)
}
}
}); var w = e.algo = {}; return e
}(Math);
(function () {
var s = CryptoJS, l = s.lib.WordArray; s.enc.Base64 = {
stringify: function (e) { var n = e.words, l = e.sigBytes, b = this._map; e.clamp(); e = []; for (var d = 0; d < l; d += 3) for (var t = (n[d >>> 2] >>> 24 - 8 * (d % 4) & 255) << 16 | (n[d + 1 >>> 2] >>> 24 - 8 * ((d + 1) % 4) & 255) << 8 | n[d + 2 >>> 2] >>> 24 - 8 * ((d + 2) % 4) & 255, q = 0; 4 > q && d + 0.75 * q < l; q++) e.push(b.charAt(t >>> 6 * (3 - q) & 63)); if (n = b.charAt(64)) for (; e.length % 4;) e.push(n); return e.join("") }, parse: function (e) {
var n = e.length, p = this._map, b = p.charAt(64); b && (b = e.indexOf(b), -1 != b && (n = b)); for (var b = [], d = 0, t = 0; t <
n; t++) if (t % 4) { var q = p.indexOf(e.charAt(t - 1)) << 2 * (t % 4), a = p.indexOf(e.charAt(t)) >>> 6 - 2 * (t % 4); b[d >>> 2] |= (q | a) << 24 - 8 * (d % 4); d++ } return l.create(b, d)
}, _map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
}
})();
(function (s) {
function l(a, b, c, e, m, f, r) { a = a + (b & c | ~b & e) + m + r; return (a << f | a >>> 32 - f) + b } function e(a, b, c, e, m, f, r) { a = a + (b & e | c & ~e) + m + r; return (a << f | a >>> 32 - f) + b } function n(a, b, c, e, m, f, r) { a = a + (b ^ c ^ e) + m + r; return (a << f | a >>> 32 - f) + b } function p(a, b, c, e, m, f, r) { a = a + (c ^ (b | ~e)) + m + r; return (a << f | a >>> 32 - f) + b } for (var b = CryptoJS, d = b.lib, t = d.WordArray, q = d.Hasher, d = b.algo, a = [], v = 0; 64 > v; v++) a[v] = 4294967296 * s.abs(s.sin(v + 1)) | 0; d = d.MD5 = q.extend({
_doReset: function () { this._hash = new t.init([1732584193, 4023233417, 2562383102, 271733878]) },
_doProcessBlock: function (b, d) {
for (var c = 0; 16 > c; c++) { var q = d + c, m = b[q]; b[q] = (m << 8 | m >>> 24) & 16711935 | (m << 24 | m >>> 8) & 4278255360 } var c = this._hash.words, q = b[d + 0], m = b[d + 1], f = b[d + 2], r = b[d + 3], x = b[d + 4], t = b[d + 5], s = b[d + 6], v = b[d + 7], y = b[d + 8], z = b[d + 9], A = b[d + 10], B = b[d + 11], C = b[d + 12], D = b[d + 13], E = b[d + 14], F = b[d + 15], g = c[0], h = c[1], j = c[2], k = c[3], g = l(g, h, j, k, q, 7, a[0]), k = l(k, g, h, j, m, 12, a[1]), j = l(j, k, g, h, f, 17, a[2]), h = l(h, j, k, g, r, 22, a[3]), g = l(g, h, j, k, x, 7, a[4]), k = l(k, g, h, j, t, 12, a[5]), j = l(j, k, g, h, s, 17, a[6]), h = l(h, j, k, g, v, 22, a[7]),
g = l(g, h, j, k, y, 7, a[8]), k = l(k, g, h, j, z, 12, a[9]), j = l(j, k, g, h, A, 17, a[10]), h = l(h, j, k, g, B, 22, a[11]), g = l(g, h, j, k, C, 7, a[12]), k = l(k, g, h, j, D, 12, a[13]), j = l(j, k, g, h, E, 17, a[14]), h = l(h, j, k, g, F, 22, a[15]), g = e(g, h, j, k, m, 5, a[16]), k = e(k, g, h, j, s, 9, a[17]), j = e(j, k, g, h, B, 14, a[18]), h = e(h, j, k, g, q, 20, a[19]), g = e(g, h, j, k, t, 5, a[20]), k = e(k, g, h, j, A, 9, a[21]), j = e(j, k, g, h, F, 14, a[22]), h = e(h, j, k, g, x, 20, a[23]), g = e(g, h, j, k, z, 5, a[24]), k = e(k, g, h, j, E, 9, a[25]), j = e(j, k, g, h, r, 14, a[26]), h = e(h, j, k, g, y, 20, a[27]), g = e(g, h, j, k, D, 5, a[28]), k = e(k, g,
h, j, f, 9, a[29]), j = e(j, k, g, h, v, 14, a[30]), h = e(h, j, k, g, C, 20, a[31]), g = n(g, h, j, k, t, 4, a[32]), k = n(k, g, h, j, y, 11, a[33]), j = n(j, k, g, h, B, 16, a[34]), h = n(h, j, k, g, E, 23, a[35]), g = n(g, h, j, k, m, 4, a[36]), k = n(k, g, h, j, x, 11, a[37]), j = n(j, k, g, h, v, 16, a[38]), h = n(h, j, k, g, A, 23, a[39]), g = n(g, h, j, k, D, 4, a[40]), k = n(k, g, h, j, q, 11, a[41]), j = n(j, k, g, h, r, 16, a[42]), h = n(h, j, k, g, s, 23, a[43]), g = n(g, h, j, k, z, 4, a[44]), k = n(k, g, h, j, C, 11, a[45]), j = n(j, k, g, h, F, 16, a[46]), h = n(h, j, k, g, f, 23, a[47]), g = p(g, h, j, k, q, 6, a[48]), k = p(k, g, h, j, v, 10, a[49]), j = p(j, k, g, h,
E, 15, a[50]), h = p(h, j, k, g, t, 21, a[51]), g = p(g, h, j, k, C, 6, a[52]), k = p(k, g, h, j, r, 10, a[53]), j = p(j, k, g, h, A, 15, a[54]), h = p(h, j, k, g, m, 21, a[55]), g = p(g, h, j, k, y, 6, a[56]), k = p(k, g, h, j, F, 10, a[57]), j = p(j, k, g, h, s, 15, a[58]), h = p(h, j, k, g, D, 21, a[59]), g = p(g, h, j, k, x, 6, a[60]), k = p(k, g, h, j, B, 10, a[61]), j = p(j, k, g, h, f, 15, a[62]), h = p(h, j, k, g, z, 21, a[63]); c[0] = c[0] + g | 0; c[1] = c[1] + h | 0; c[2] = c[2] + j | 0; c[3] = c[3] + k | 0
}, _doFinalize: function () {
var a = this._data, b = a.words, c = 8 * this._nDataBytes, d = 8 * a.sigBytes; b[d >>> 5] |= 128 << 24 - d % 32; var m = s.floor(c /
4294967296); b[(d + 64 >>> 9 << 4) + 15] = (m << 8 | m >>> 24) & 16711935 | (m << 24 | m >>> 8) & 4278255360; b[(d + 64 >>> 9 << 4) + 14] = (c << 8 | c >>> 24) & 16711935 | (c << 24 | c >>> 8) & 4278255360; a.sigBytes = 4 * (b.length + 1); this._process(); a = this._hash; b = a.words; for (c = 0; 4 > c; c++) d = b[c], b[c] = (d << 8 | d >>> 24) & 16711935 | (d << 24 | d >>> 8) & 4278255360; return a
}, clone: function () { var a = q.clone.call(this); a._hash = this._hash.clone(); return a }
}); b.MD5 = q._createHelper(d); b.HmacMD5 = q._createHmacHelper(d)
})(Math);
(function () {
var s = CryptoJS, l = s.lib, e = l.Base, n = l.WordArray, l = s.algo, p = l.EvpKDF = e.extend({ cfg: e.extend({ keySize: 4, hasher: l.MD5, iterations: 1 }), init: function (b) { this.cfg = this.cfg.extend(b) }, compute: function (b, d) { for (var e = this.cfg, q = e.hasher.create(), a = n.create(), l = a.words, p = e.keySize, e = e.iterations; l.length < p;) { s && q.update(s); var s = q.update(b).finalize(d); q.reset(); for (var c = 1; c < e; c++) s = q.finalize(s), q.reset(); a.concat(s) } a.sigBytes = 4 * p; return a } }); s.EvpKDF = function (b, d, e) {
return p.create(e).compute(b,
d)
}
})();
CryptoJS.lib.Cipher || function (s) {
var l = CryptoJS, e = l.lib, n = e.Base, p = e.WordArray, b = e.BufferedBlockAlgorithm, d = l.enc.Base64, t = l.algo.EvpKDF, q = e.Cipher = b.extend({
cfg: n.extend(), createEncryptor: function (a, f) { return this.create(this._ENC_XFORM_MODE, a, f) }, createDecryptor: function (a, f) { return this.create(this._DEC_XFORM_MODE, a, f) }, init: function (a, f, c) { this.cfg = this.cfg.extend(c); this._xformMode = a; this._key = f; this.reset() }, reset: function () { b.reset.call(this); this._doReset() }, process: function (a) { this._append(a); return this._process() },
finalize: function (a) { a && this._append(a); return this._doFinalize() }, keySize: 4, ivSize: 4, _ENC_XFORM_MODE: 1, _DEC_XFORM_MODE: 2, _createHelper: function (a) { return { encrypt: function (f, b, d) { return ("string" == typeof b ? G : c).encrypt(a, f, b, d) }, decrypt: function (f, b, d) { return ("string" == typeof b ? G : c).decrypt(a, f, b, d) } } }
}); e.StreamCipher = q.extend({ _doFinalize: function () { return this._process(!0) }, blockSize: 1 }); var a = l.mode = {}, v = function (a, f, b) {
var c = this._iv; c ? this._iv = s : c = this._prevBlock; for (var d = 0; d < b; d++) a[f + d] ^=
c[d]
}, u = (e.BlockCipherMode = n.extend({ createEncryptor: function (a, f) { return this.Encryptor.create(a, f) }, createDecryptor: function (a, f) { return this.Decryptor.create(a, f) }, init: function (a, f) { this._cipher = a; this._iv = f } })).extend(); u.Encryptor = u.extend({ processBlock: function (a, f) { var b = this._cipher, c = b.blockSize; v.call(this, a, f, c); b.encryptBlock(a, f); this._prevBlock = a.slice(f, f + c) } }); u.Decryptor = u.extend({
processBlock: function (a, f) {
var b = this._cipher, c = b.blockSize, d = a.slice(f, f + c); b.decryptBlock(a, f); v.call(this,
a, f, c); this._prevBlock = d
}
}); a = a.CBC = u; u = (l.pad = {}).Pkcs7 = { pad: function (a, f) { for (var b = 4 * f, b = b - a.sigBytes % b, c = b << 24 | b << 16 | b << 8 | b, d = [], e = 0; e < b; e += 4) d.push(c); b = p.create(d, b); a.concat(b) }, unpad: function (a) { a.sigBytes -= a.words[a.sigBytes - 1 >>> 2] & 255 } }; e.BlockCipher = q.extend({
cfg: q.cfg.extend({ mode: a, padding: u }), reset: function () {
q.reset.call(this); var a = this.cfg, b = a.iv, a = a.mode; if (this._xformMode == this._ENC_XFORM_MODE) var c = a.createEncryptor; else c = a.createDecryptor, this._minBufferSize = 1; this._mode = c.call(a,
this, b && b.words)
}, _doProcessBlock: function (a, b) { this._mode.processBlock(a, b) }, _doFinalize: function () { var a = this.cfg.padding; if (this._xformMode == this._ENC_XFORM_MODE) { a.pad(this._data, this.blockSize); var b = this._process(!0) } else b = this._process(!0), a.unpad(b); return b }, blockSize: 4
}); var w = e.CipherParams = n.extend({ init: function (a) { this.mixIn(a) }, toString: function (a) { return (a || this.formatter).stringify(this) } }), a = (l.format = {}).OpenSSL = {
stringify: function (a) {
var b = a.ciphertext; a = a.salt; return (a ? p.create([1398893684,
1701076831]).concat(a).concat(b) : b).toString(d)
}, parse: function (a) { a = d.parse(a); var b = a.words; if (1398893684 == b[0] && 1701076831 == b[1]) { var c = p.create(b.slice(2, 4)); b.splice(0, 4); a.sigBytes -= 16 } return w.create({ ciphertext: a, salt: c }) }
}, c = e.SerializableCipher = n.extend({
cfg: n.extend({ format: a }), encrypt: function (a, b, c, d) { d = this.cfg.extend(d); var e = a.createEncryptor(c, d); b = e.finalize(b); e = e.cfg; return w.create({ ciphertext: b, key: c, iv: e.iv, algorithm: a, mode: e.mode, padding: e.padding, blockSize: a.blockSize, formatter: d.format }) },
decrypt: function (a, b, c, d) { d = this.cfg.extend(d); b = this._parse(b, d.format); return a.createDecryptor(c, d).finalize(b.ciphertext) }, _parse: function (a, b) { return "string" == typeof a ? b.parse(a, this) : a }
}), l = (l.kdf = {}).OpenSSL = { execute: function (a, b, c, d) { d || (d = p.random(8)); a = t.create({ keySize: b + c }).compute(a, d); c = p.create(a.words.slice(b), 4 * c); a.sigBytes = 4 * b; return w.create({ key: a, iv: c, salt: d }) } }, G = e.PasswordBasedCipher = c.extend({
cfg: c.cfg.extend({ kdf: l }), encrypt: function (a, b, d, e) {
e = this.cfg.extend(e); d = e.kdf.execute(d,
a.keySize, a.ivSize); e.iv = d.iv; a = c.encrypt.call(this, a, b, d.key, e); a.mixIn(d); return a
}, decrypt: function (a, b, d, e) { e = this.cfg.extend(e); b = this._parse(b, e.format); d = e.kdf.execute(d, a.keySize, a.ivSize, b.salt); e.iv = d.iv; return c.decrypt.call(this, a, b, d.key, e) }
})
}();
(function () {
function s() { for (var b = this._S, d = this._i, e = this._j, q = 0, a = 0; 4 > a; a++) { var d = (d + 1) % 256, e = (e + b[d]) % 256, l = b[d]; b[d] = b[e]; b[e] = l; q |= b[(b[d] + b[e]) % 256] << 24 - 8 * a } this._i = d; this._j = e; return q } var l = CryptoJS, e = l.lib.StreamCipher, n = l.algo, p = n.RC4 = e.extend({
_doReset: function () { for (var b = this._key, d = b.words, b = b.sigBytes, e = this._S = [], l = 0; 256 > l; l++) e[l] = l; for (var a = l = 0; 256 > l; l++) { var n = l % b, a = (a + e[l] + (d[n >>> 2] >>> 24 - 8 * (n % 4) & 255)) % 256, n = e[l]; e[l] = e[a]; e[a] = n } this._i = this._j = 0 }, _doProcessBlock: function (b,
d) { b[d] ^= s.call(this) }, keySize: 8, ivSize: 0
}); l.RC4 = e._createHelper(p); n = n.RC4Drop = p.extend({ cfg: p.cfg.extend({ drop: 192 }), _doReset: function () { p._doReset.call(this); for (var b = this.cfg.drop; 0 < b; b--) s.call(this) } }); l.RC4Drop = e._createHelper(n)
})();
!function (t, e) {
e["true"] = t; var n = function (t) { "use strict"; function e(e) { var n = {}; this.subscribe = function (t, e, r) { if ("function" != typeof e) return !1; n.hasOwnProperty(t) || (n[t] = {}); var s = Math.random().toString(35); return n[t][s] = [e, !!r], s }, this.unsubscribe = function (t) { for (var e in n) if (n[e][t]) return delete n[e][t], !0; return !1 }, this.publish = function (r) { if (n.hasOwnProperty(r)) { var s = Array.prototype.slice.call(arguments, 1), i = []; for (var o in n[r]) { var a = n[r][o]; try { a[0].apply(e, s) } catch (u) { t.console && console.error("jsPDF PubSub Error", u.message, u) } a[1] && i.push(o) } i.length && i.forEach(this.unsubscribe) } } } function n(a, u, c, l) { var f = {}; "object" == typeof a && (f = a, a = f.orientation, u = f.unit || u, c = f.format || c, l = f.compress || f.compressPdf || l), u = u || "mm", c = c || "a4", a = ("" + (a || "P")).toLowerCase(); var d, h, p, m, w, g, y, v, b, q = (("" + c).toLowerCase(), !!l && "function" == typeof Uint8Array), x = f.textColor || "0 g", k = f.drawColor || "0 G", _ = f.fontSize || 16, A = f.lineHeight || 1.15, C = f.lineWidth || .200025, S = 2, E = !1, z = [], T = {}, I = {}, B = 0, O = [], P = {}, R = [], F = 0, D = 0, U = 0, N = { title: "", subject: "", author: "", keywords: "", creator: "" }, L = {}, j = new e(L), M = function (t) { return t.toFixed(2) }, H = function (t) { return t.toFixed(3) }, G = function (t) { return ("0" + parseInt(t)).slice(-2) }, W = function (t) { E ? O[m].push(t) : (U += t.length + 1, R.push(t)) }, V = function () { return S++, z[S] = U, W(S + " 0 obj"), S }, J = function (t) { W("stream"), W(t), W("endstream") }, X = function () { var e, r, i, o, a, u, c, l, f; for (c = t.adler32cs || n.adler32cs, q && "undefined" == typeof c && (q = !1), e = 1; B >= e; e++) { if (V(), l = (w = P[e].width) * h, f = (g = P[e].height) * h, W("<>"), W("endobj"), r = O[e].join("\n"), V(), q) { for (i = [], o = r.length; o--;) i[o] = r.charCodeAt(o); u = c.from(r), a = new s(6), a.append(new Uint8Array(i)), r = a.flush(), i = new Uint8Array(r.length + 6), i.set(new Uint8Array([120, 156])), i.set(r, 2), i.set(new Uint8Array([255 & u, u >> 8 & 255, u >> 16 & 255, u >> 24 & 255]), r.length + 2), r = String.fromCharCode.apply(null, i), W("<>") } else W("<>"); J(r), W("endobj") } z[1] = U, W("1 0 obj"), W("< o; o++) d += 3 + 2 * o + " 0 R "; W(d + "]"), W("/Count " + B), W(">>"), W("endobj") }, Y = function (t) { t.objectNumber = V(), W("<>"), W("endobj") }, K = function () { for (var t in T) T.hasOwnProperty(t) && Y(T[t]) }, Q = function () { j.publish("putXobjectDict") }, $ = function () { W("/ProcSet [/PDF /Text /ImageB /ImageC /ImageI]"), W("/Font <<"); for (var t in T) T.hasOwnProperty(t) && W("/" + t + " " + T[t].objectNumber + " 0 R"); W(">>"), W("/XObject <<"), Q(), W(">>") }, Z = function () { K(), j.publish("putResources"), z[2] = U, W("2 0 obj"), W("<<"), $(), W(">>"), W("endobj"), j.publish("postPutResources") }, te = function (t, e, n) { I.hasOwnProperty(e) || (I[e] = {}), I[e][n] = t }, ee = function (t, e, n, r) { var s = "F" + (Object.keys(T).length + 1).toString(10), i = T[s] = { id: s, PostScriptName: t, fontName: e, fontStyle: n, encoding: r, metadata: {} }; return te(s, e, n), j.publish("addFont", i), s }, ne = function () { for (var t = "helvetica", e = "times", n = "courier", r = "normal", s = "bold", i = "italic", o = "bolditalic", a = "StandardEncoding", u = [["Helvetica", t, r], ["Helvetica-Bold", t, s], ["Helvetica-Oblique", t, i], ["Helvetica-BoldOblique", t, o], ["Courier", n, r], ["Courier-Bold", n, s], ["Courier-Oblique", n, i], ["Courier-BoldOblique", n, o], ["Times-Roman", e, r], ["Times-Bold", e, s], ["Times-Italic", e, i], ["Times-BoldItalic", e, o]], c = 0, l = u.length; l > c; c++) { var f = ee(u[c][0], u[c][1], u[c][2], a), d = u[c][0].split("-"); te(f, d[0], d[1] || "") } j.publish("addFonts", { fonts: T, dictionary: I }) }, re = function (e) { return e.foo = function () { try { return e.apply(this, arguments) } catch (n) { var r = n.stack || ""; ~r.indexOf(" at ") && (r = r.split(" at ")[1]); var s = "Error in function " + r.split("\n")[0].split("<")[0] + ": " + n.message; if (!t.console) throw new Error(s); t.console.error(s, n), t.alert && alert(s) } }, e.foo.bar = e, e.foo }, se = function (t, e) { var n, r, s, i, o, a, u, c, l; if (e = e || {}, s = e.sourceEncoding || "Unicode", o = e.outputEncoding, (e.autoencode || o) && T[d].metadata && T[d].metadata[s] && T[d].metadata[s].encoding && (i = T[d].metadata[s].encoding, !o && T[d].encoding && (o = T[d].encoding), !o && i.codePages && (o = i.codePages[0]), "string" == typeof o && (o = i[o]), o)) { for (u = !1, a = [], n = 0, r = t.length; r > n; n++) c = o[t.charCodeAt(n)], a.push(c ? String.fromCharCode(c) : t[n]), a[n].charCodeAt(0) >> 8 && (u = !0); t = a.join("") } for (n = t.length; void 0 === u && 0 !== n;) t.charCodeAt(n - 1) >> 8 && (u = !0), n--; if (!u) return t; for (a = e.noBOM ? [] : [254, 255], n = 0, r = t.length; r > n; n++) { if (c = t.charCodeAt(n), l = c >> 8, l >> 8) throw new Error("Character at position " + n + " of string '" + t + "' exceeds 16bits. Cannot be encoded into UCS-2 BE"); a.push(l), a.push(c - (l << 8)) } return String.fromCharCode.apply(void 0, a) }, ie = function (t, e) { return se(t, e).replace(/\\/g, "\\\\").replace(/\(/g, "\\(").replace(/\)/g, "\\)") }, oe = function () { W("/Producer (jsPDF " + n.version + ")"); for (var t in N) N.hasOwnProperty(t) && N[t] && W("/" + t.substr(0, 1).toUpperCase() + t.substr(1) + " (" + ie(N[t]) + ")"); var e = new Date, r = e.getTimezoneOffset(), s = 0 > r ? "+" : "-", i = Math.floor(Math.abs(r / 60)), o = Math.abs(r % 60), a = [s, G(i), "'", G(o), "'"].join(""); W(["/CreationDate (D:", e.getFullYear(), G(e.getMonth() + 1), G(e.getDate()), G(e.getHours()), G(e.getMinutes()), G(e.getSeconds()), a, ")"].join("")) }, ae = function () { switch (W("/Type /Catalog"), W("/Pages 1 0 R"), v || (v = "fullwidth"), v) { case "fullwidth": W("/OpenAction [3 0 R /FitH null]"); break; case "fullheight": W("/OpenAction [3 0 R /FitV null]"); break; case "fullpage": W("/OpenAction [3 0 R /Fit]"); break; case "original": W("/OpenAction [3 0 R /XYZ null null 1]"); break; default: var t = "" + v; "%" === t.substr(t.length - 1) && (v = parseInt(v) / 100), "number" == typeof v && W("/OpenAction [3 0 R /XYZ null null " + M(v) + "]") } switch (b || (b = "continuous"), b) { case "continuous": W("/PageLayout /OneColumn"); break; case "single": W("/PageLayout /SinglePage"); break; case "two": case "twoleft": W("/PageLayout /TwoColumnLeft"); break; case "tworight": W("/PageLayout /TwoColumnRight") } y && W("/PageMode /" + y), j.publish("putCatalog") }, ue = function () { W("/Size " + (S + 1)), W("/Root " + S + " 0 R"), W("/Info " + (S - 1) + " 0 R") }, ce = function (t, e) { var n = "string" == typeof e && e.toLowerCase(); if ("string" == typeof t) { var r = t.toLowerCase(); o.hasOwnProperty(r) && (t = o[r][0] / h, e = o[r][1] / h) } if (Array.isArray(t) && (e = t[1], t = t[0]), n) { switch (n.substr(0, 1)) { case "l": e > t && (n = "s"); break; case "p": t > e && (n = "s") } "s" === n && (p = t, t = e, e = p) } E = !0, O[++B] = [], P[B] = { width: Number(t) || w, height: Number(e) || g }, fe(B) }, le = function () { ce.apply(this, arguments), W(M(C * h) + " w"), W(k), 0 !== F && W(F + " J"), 0 !== D && W(D + " j"), j.publish("addPage", { pageNumber: B }) }, fe = function (t) { t > 0 && B >= t && (m = t, w = P[t].width, g = P[t].height) }, de = function (t, e) { var n; t = void 0 !== t ? t : T[d].fontName, e = void 0 !== e ? e : T[d].fontStyle; try { n = I[t][e] } catch (r) { } if (!n) throw new Error("Unable to look up font label for font '" + t + "', '" + e + "'. Refer to getFontList() for available fonts."); return n }, he = function () { E = !1, S = 2, R = [], z = [], W("%PDF-" + i), X(), Z(), V(), W("<<"), oe(), W(">>"), W("endobj"), V(), W("<<"), ae(), W(">>"), W("endobj"); var t, e = U, n = "0000000000"; for (W("xref"), W("0 " + (S + 1)), W(n + " 65535 f "), t = 1; S >= t; t++) W((n + z[t]).slice(-10) + " 00000 n "); return W("trailer"), W("<<"), ue(), W(">>"), W("startxref"), W(e), W("%%EOF"), E = !0, R.join("\n") }, pe = function (t) { var e = "S"; return "F" === t ? e = "f" : "FD" === t || "DF" === t ? e = "B" : ("f" === t || "f*" === t || "B" === t || "B*" === t) && (e = t), e }, me = function () { for (var t = he(), e = t.length, n = new ArrayBuffer(e), r = new Uint8Array(n) ; e--;) r[e] = t.charCodeAt(e); return n }, we = function () { return new Blob([me()], { type: "application/pdf" }) }, ge = re(function (e, n) { var s = "dataur" === ("" + e).substr(0, 6) ? "data:application/pdf;base64," + btoa(he()) : 0; switch (e) { case void 0: return he(); case "save": if (navigator.getUserMedia && (void 0 === t.URL || void 0 === t.URL.createObjectURL)) return L.output("dataurlnewwindow"); r(we(), n), "function" == typeof r.unload && t.setTimeout && setTimeout(r.unload, 911); break; case "arraybuffer": return me(); case "blob": return we(); case "bloburi": case "bloburl": return t.URL && t.URL.createObjectURL(we()) || void 0; case "datauristring": case "dataurlstring": return s; case "dataurlnewwindow": var i = t.open(s); if (i || "undefined" == typeof safari) return i; case "datauri": case "dataurl": return t.document.location.href = s; default: throw new Error('Output type "' + e + '" is not supported.') } }); switch (u) { case "pt": h = 1; break; case "mm": h = 72 / 25.4; break; case "cm": h = 72 / 2.54; break; case "in": h = 72; break; case "px": h = 96 / 72; break; case "pc": h = 12; break; case "em": h = 12; break; case "ex": h = 6; break; default: throw "Invalid unit: " + u } L.internal = { pdfEscape: ie, getStyle: pe, getFont: function () { return T[de.apply(L, arguments)] }, getFontSize: function () { return _ }, getLineHeight: function () { return _ * A }, write: function (t) { W(1 === arguments.length ? t : Array.prototype.join.call(arguments, " ")) }, getCoordinateString: function (t) { return M(t * h) }, getVerticalCoordinateString: function (t) { return M((g - t) * h) }, collections: {}, newObject: V, putStream: J, events: j, scaleFactor: h, pageSize: { get width() { return w }, get height() { return g } }, output: function (t, e) { return ge(t, e) }, getNumberOfPages: function () { return O.length - 1 }, pages: O }, L.addPage = function () { return le.apply(this, arguments), this }, L.setPage = function () { return fe.apply(this, arguments), this }, L.setDisplayMode = function (t, e, n) { return v = t, b = e, y = n, this }, L.text = function (t, e, n, r, s) { function i(t) { return t = t.split(" ").join(Array(f.TabLen || 9).join(" ")), ie(t, r) } "number" == typeof t && (p = n, n = e, e = t, t = p), "string" == typeof t && t.match(/[\n\r]/) && (t = t.split(/\r\n|\r|\n/g)), "number" == typeof r && (s = r, r = null); var o, a = "", u = "Td"; if (s) { s *= Math.PI / 180; var c = Math.cos(s), l = Math.sin(s); a = [M(c), M(l), M(-1 * l), M(c), ""].join(" "), u = "Tm" } if (r = r || {}, "noBOM" in r || (r.noBOM = !0), "autoencode" in r || (r.autoencode = !0), "string" == typeof t) t = i(t); else { if (!(t instanceof Array)) throw new Error('Type of text must be string or Array. "' + t + '" is not recognized.'); for (var m = t.concat(), w = [], y = m.length; y--;) w.push(i(m.shift())); var v = Math.ceil((g - n) * h / (_ * A)); v >= 0 && v < w.length + 1 && (o = w.splice(v - 1)), t = w.join(") Tj\nT* (") } return W("BT\n/" + d + " " + _ + " Tf\n" + _ * A + " TL\n" + x + "\n" + a + M(e * h) + " " + M((g - n) * h) + " " + u + "\n(" + t + ") Tj\nET"), o && (this.addPage(), this.text(o, e, 1.7 * _ / h)), this }, L.lstext = function (t, e, n, r) { for (var s = 0, i = t.length; i > s; s++, e += r) this.text(t[s], e, n) }, L.line = function (t, e, n, r) { return this.lines([[n - t, r - e]], t, e) }, L.clip = function () { W("W"), W("S") }, L.lines = function (t, e, n, r, s, i) { var o, a, u, c, l, f, d, m, w, y, v; for ("number" == typeof t && (p = n, n = e, e = t, t = p), r = r || [1, 1], W(H(e * h) + " " + H((g - n) * h) + " m "), o = r[0], a = r[1], c = t.length, y = e, v = n, u = 0; c > u; u++) l = t[u], 2 === l.length ? (y = l[0] * o + y, v = l[1] * a + v, W(H(y * h) + " " + H((g - v) * h) + " l")) : (f = l[0] * o + y, d = l[1] * a + v, m = l[2] * o + y, w = l[3] * a + v, y = l[4] * o + y, v = l[5] * a + v, W(H(f * h) + " " + H((g - d) * h) + " " + H(m * h) + " " + H((g - w) * h) + " " + H(y * h) + " " + H((g - v) * h) + " c")); return i && W(" h"), null !== s && W(pe(s)), this }, L.rect = function (t, e, n, r, s) { pe(s); return W([M(t * h), M((g - e) * h), M(n * h), M(-r * h), "re"].join(" ")), null !== s && W(pe(s)), this }, L.triangle = function (t, e, n, r, s, i, o) { return this.lines([[n - t, r - e], [s - n, i - r], [t - s, e - i]], t, e, [1, 1], o, !0), this }, L.roundedRect = function (t, e, n, r, s, i, o) { var a = 4 / 3 * (Math.SQRT2 - 1); return this.lines([[n - 2 * s, 0], [s * a, 0, s, i - i * a, s, i], [0, r - 2 * i], [0, i * a, -(s * a), i, -s, i], [-n + 2 * s, 0], [-(s * a), 0, -s, -(i * a), -s, -i], [0, -r + 2 * i], [0, -(i * a), s * a, -i, s, -i]], t + s, e, [1, 1], o), this }, L.ellipse = function (t, e, n, r, s) { var i = 4 / 3 * (Math.SQRT2 - 1) * n, o = 4 / 3 * (Math.SQRT2 - 1) * r; return W([M((t + n) * h), M((g - e) * h), "m", M((t + n) * h), M((g - (e - o)) * h), M((t + i) * h), M((g - (e - r)) * h), M(t * h), M((g - (e - r)) * h), "c"].join(" ")), W([M((t - i) * h), M((g - (e - r)) * h), M((t - n) * h), M((g - (e - o)) * h), M((t - n) * h), M((g - e) * h), "c"].join(" ")), W([M((t - n) * h), M((g - (e + o)) * h), M((t - i) * h), M((g - (e + r)) * h), M(t * h), M((g - (e + r)) * h), "c"].join(" ")), W([M((t + i) * h), M((g - (e + r)) * h), M((t + n) * h), M((g - (e + o)) * h), M((t + n) * h), M((g - e) * h), "c"].join(" ")), null !== s && W(pe(s)), this }, L.circle = function (t, e, n, r) { return this.ellipse(t, e, n, n, r) }, L.setProperties = function (t) { for (var e in N) N.hasOwnProperty(e) && t[e] && (N[e] = t[e]); return this }, L.setFontSize = function (t) { return _ = t, this }, L.setFont = function (t, e) { return d = de(t, e), this }, L.setFontStyle = L.setFontType = function (t) { return d = de(void 0, t), this }, L.getFontList = function () { var t, e, n, r = {}; for (t in I) if (I.hasOwnProperty(t)) { r[t] = n = []; for (e in I[t]) I[t].hasOwnProperty(e) && n.push(e) } return r }, L.setLineWidth = function (t) { return W((t * h).toFixed(2) + " w"), this }, L.setDrawColor = function (t, e, n, r) { var s; return s = void 0 === e || void 0 === r && t === e === n ? "string" == typeof t ? t + " G" : M(t / 255) + " G" : void 0 === r ? "string" == typeof t ? [t, e, n, "RG"].join(" ") : [M(t / 255), M(e / 255), M(n / 255), "RG"].join(" ") : "string" == typeof t ? [t, e, n, r, "K"].join(" ") : [M(t), M(e), M(n), M(r), "K"].join(" "), W(s), this }, L.setFillColor = function (t, e, n, r) { var s; return s = void 0 === e || void 0 === r && t === e === n ? "string" == typeof t ? t + " g" : M(t / 255) + " g" : void 0 === r ? "string" == typeof t ? [t, e, n, "rg"].join(" ") : [M(t / 255), M(e / 255), M(n / 255), "rg"].join(" ") : "string" == typeof t ? [t, e, n, r, "k"].join(" ") : [M(t), M(e), M(n), M(r), "k"].join(" "), W(s), this }, L.setTextColor = function (t, e, n) { if ("string" == typeof t && /^#[0-9A-Fa-f]{6}$/.test(t)) { var r = parseInt(t.substr(1), 16); t = r >> 16 & 255, e = r >> 8 & 255, n = 255 & r } return x = 0 === t && 0 === e && 0 === n || "undefined" == typeof e ? H(t / 255) + " g" : [H(t / 255), H(e / 255), H(n / 255), "rg"].join(" "), this }, L.CapJoinStyles = { 0: 0, butt: 0, but: 0, miter: 0, 1: 1, round: 1, rounded: 1, circle: 1, 2: 2, projecting: 2, project: 2, square: 2, bevel: 2 }, L.setLineCap = function (t) { var e = this.CapJoinStyles[t]; if (void 0 === e) throw new Error("Line cap style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); return F = e, W(e + " J"), this }, L.setLineJoin = function (t) { var e = this.CapJoinStyles[t]; if (void 0 === e) throw new Error("Line join style of '" + t + "' is not recognized. See or extend .CapJoinStyles property for valid styles"); return D = e, W(e + " j"), this }, L.output = ge, L.save = function (t) { L.output("save", t) }; for (var ye in n.API) n.API.hasOwnProperty(ye) && ("events" === ye && n.API.events.length ? !function (t, e) { var n, r, s; for (s = e.length - 1; -1 !== s; s--) n = e[s][0], r = e[s][1], t.subscribe.apply(t, [n].concat("function" == typeof r ? [r] : r)) }(j, n.API.events) : L[ye] = n.API[ye]); return ne(), d = "F1", le(c, a), j.publish("initialized"), L } var i = "1.3", o = { a0: [2383.94, 3370.39], a1: [1683.78, 2383.94], a2: [1190.55, 1683.78], a3: [841.89, 1190.55], a4: [595.28, 841.89], a5: [419.53, 595.28], a6: [297.64, 419.53], a7: [209.76, 297.64], a8: [147.4, 209.76], a9: [104.88, 147.4], a10: [73.7, 104.88], b0: [2834.65, 4008.19], b1: [2004.09, 2834.65], b2: [1417.32, 2004.09], b3: [1000.63, 1417.32], b4: [708.66, 1000.63], b5: [498.9, 708.66], b6: [354.33, 498.9], b7: [249.45, 354.33], b8: [175.75, 249.45], b9: [124.72, 175.75], b10: [87.87, 124.72], c0: [2599.37, 3676.54], c1: [1836.85, 2599.37], c2: [1298.27, 1836.85], c3: [918.43, 1298.27], c4: [649.13, 918.43], c5: [459.21, 649.13], c6: [323.15, 459.21], c7: [229.61, 323.15], c8: [161.57, 229.61], c9: [113.39, 161.57], c10: [79.37, 113.39], dl: [311.81, 623.62], letter: [612, 792], "government-letter": [576, 756], legal: [612, 1008], "junior-legal": [576, 360], ledger: [1224, 792], tabloid: [792, 1224], "credit-card": [153, 243] }; return n.API = { events: [] }, n.version = "1.0.272-git 2014-09-29T15:09:diegocr", "function" == typeof define && define.amd ? define("jsPDF", function () { return n }) : t.jsPDF = n, n }("undefined" != typeof self && self || "undefined" != typeof window && window || this); !function (t) { "use strict"; t.addHTML = function (t, e, n, r, s) { if ("undefined" == typeof html2canvas && "undefined" == typeof rasterizeHTML) throw new Error("You need either https://github.com/niklasvh/html2canvas or https://github.com/cburgmer/rasterizeHTML.js"); "number" != typeof e && (r = e, s = n), "function" == typeof r && (s = r, r = null); var i = this.internal, o = i.scaleFactor, a = i.pageSize.width, u = i.pageSize.height; if (r = r || {}, r.onrendered = function (t) { e = parseInt(e) || 0, n = parseInt(n) || 0; var i = r.dim || {}, c = i.h || 0, l = i.w || Math.min(a, t.width / o) - e, f = "JPEG"; if (r.format && (f = r.format), t.height > u && r.pagesplit) { var d = function () { for (var r = 0; ;) { var i = document.createElement("canvas"); i.width = Math.min(a * o, t.width), i.height = Math.min(u * o, t.height - r); var c = i.getContext("2d"); c.drawImage(t, 0, r, t.width, i.height, 0, 0, i.width, i.height); var d = [i, e, r ? 0 : n, i.width / o, i.height / o, f, null, "SLOW"]; if (this.addImage.apply(this, d), r += i.height, r >= t.height) break; this.addPage() } s(l, r, null, d) }.bind(this); if ("CANVAS" === t.nodeName) { var h = new Image; h.onload = d, h.src = t.toDataURL("image/png"), t = h } else d() } else { var p = Math.random().toString(35), m = [t, e, n, l, c, f, p, "SLOW"]; this.addImage.apply(this, m), s(l, c, p, m) } }.bind(this), "undefined" != typeof html2canvas && !r.rstz) return html2canvas(t, r); if ("undefined" != typeof rasterizeHTML) { var c = "drawDocument"; return "string" == typeof t && (c = /^http/.test(t) ? "drawURL" : "drawHTML"), r.width = r.width || a * o, rasterizeHTML[c](t, void 0, r).then(function (t) { r.onrendered(t.image) }, function (t) { s(null, t) }) } return null } }(n.API), function (t) { "use strict"; var e = "addImage_", n = ["jpeg", "jpg", "png"], r = function (t) { var e = this.internal.newObject(), n = this.internal.write, s = this.internal.putStream; if (t.n = e, n("<>"), "trns" in t && t.trns.constructor == Array) { for (var i = "", o = 0, a = t.trns.length; a > o; o++) i += t.trns[o] + " " + t.trns[o] + " "; n("/Mask [" + i + "]") } if ("smask" in t && n("/SMask " + (e + 1) + " 0 R"), n("/Length " + t.data.length + ">>"), s(t.data), n("endobj"), "smask" in t) { var u = "/Predictor 15 /Colors 1 /BitsPerComponent " + t.bpc + " /Columns " + t.w, c = { w: t.w, h: t.h, cs: "DeviceGray", bpc: t.bpc, dp: u, data: t.smask }; "f" in t && (c.f = t.f), r.call(this, c) } t.cs === this.color_spaces.INDEXED && (this.internal.newObject(), n("<< /Length " + t.pal.length + ">>"), s(this.arrayBufferToBinaryString(new Uint8Array(t.pal))), n("endobj")) }, s = function () { var t = this.internal.collections[e + "images"]; for (var n in t) r.call(this, t[n]) }, i = function () { var t, n = this.internal.collections[e + "images"], r = this.internal.write; for (var s in n) t = n[s], r("/I" + t.i, t.n, "0", "R") }, o = function (e) { return e && "string" == typeof e && (e = e.toUpperCase()), e in t.image_compression ? e : t.image_compression.NONE }, a = function () { var t = this.internal.collections[e + "images"]; return t || (this.internal.collections[e + "images"] = t = {}, this.internal.events.subscribe("putResources", s), this.internal.events.subscribe("putXobjectDict", i)), t }, u = function (t) { var e = 0; return t && (e = Object.keys ? Object.keys(t).length : function (t) { var e = 0; for (var n in t) t.hasOwnProperty(n) && e++; return e }(t)), e }, c = function (t) { return "undefined" == typeof t || null === t }, l = function (e) { return "string" == typeof e && t.sHashCode(e) }, f = function (t) { return -1 === n.indexOf(t) }, d = function (e) { return "function" != typeof t["process" + e.toUpperCase()] }, h = function (t) { return "object" == typeof t && 1 === t.nodeType }, p = function (t, e, n) { if ("IMG" === t.nodeName && t.hasAttribute("src")) { var r = "" + t.getAttribute("src"); if (!n && 0 === r.indexOf("data:image/")) return r; !e && /\.png(?:[?#].*)?$/i.test(r) && (e = "png") } if ("CANVAS" === t.nodeName) var s = t; else { var s = document.createElement("canvas"); s.width = t.clientWidth || t.width, s.height = t.clientHeight || t.height; var i = s.getContext("2d"); if (!i) throw "addImage requires canvas to be supported by browser."; if (n) { var o, a, u, c, l, f, d, h, p = Math.PI / 180; "object" == typeof n && (o = n.x, a = n.y, u = n.bg, n = n.angle), h = n * p, c = Math.abs(Math.cos(h)), l = Math.abs(Math.sin(h)), f = s.width, d = s.height, s.width = d * l + f * c, s.height = d * c + f * l, isNaN(o) && (o = s.width / 2), isNaN(a) && (a = s.height / 2), i.clearRect(0, 0, s.width, s.height), i.fillStyle = u || "white", i.fillRect(0, 0, s.width, s.height), i.save(), i.translate(o, a), i.rotate(h), i.drawImage(t, -(f / 2), -(d / 2)), i.rotate(-h), i.translate(-o, -a), i.restore() } else i.drawImage(t, 0, 0, s.width, s.height) } return s.toDataURL("png" == ("" + e).toLowerCase() ? "image/png" : "image/jpeg") }, m = function (t, e) { var n; if (e) for (var r in e) if (t === e[r].alias) { n = e[r]; break } return n }, w = function (t, e, n) { return t || e || (t = -96, e = -96), 0 > t && (t = -1 * n.w * 72 / t / this.internal.scaleFactor), 0 > e && (e = -1 * n.h * 72 / e / this.internal.scaleFactor), 0 === t && (t = e * n.w / n.h), 0 === e && (e = t * n.h / n.w), [t, e] }, g = function (t, e, n, r, s, i, o) { var a = w.call(this, n, r, s), u = this.internal.getCoordinateString, c = this.internal.getVerticalCoordinateString; n = a[0], r = a[1], o[i] = s, this.internal.write("q", u(n), "0 0", u(r), u(t), c(e + r), "cm /I" + s.i, "Do Q") }; t.color_spaces = { DEVICE_RGB: "DeviceRGB", DEVICE_GRAY: "DeviceGray", DEVICE_CMYK: "DeviceCMYK", CAL_GREY: "CalGray", CAL_RGB: "CalRGB", LAB: "Lab", ICC_BASED: "ICCBased", INDEXED: "Indexed", PATTERN: "Pattern", SEPERATION: "Seperation", DEVICE_N: "DeviceN" }, t.decode = { DCT_DECODE: "DCTDecode", FLATE_DECODE: "FlateDecode", LZW_DECODE: "LZWDecode", JPX_DECODE: "JPXDecode", JBIG2_DECODE: "JBIG2Decode", ASCII85_DECODE: "ASCII85Decode", ASCII_HEX_DECODE: "ASCIIHexDecode", RUN_LENGTH_DECODE: "RunLengthDecode", CCITT_FAX_DECODE: "CCITTFaxDecode" }, t.image_compression = { NONE: "NONE", FAST: "FAST", MEDIUM: "MEDIUM", SLOW: "SLOW" }, t.sHashCode = function (t) { return Array.prototype.reduce && t.split("").reduce(function (t, e) { return t = (t << 5) - t + e.charCodeAt(0), t & t }, 0) }, t.isString = function (t) { return "string" == typeof t }, t.extractInfoFromBase64DataURI = function (t) { return /^data:([\w]+?\/([\w]+?));base64,(.+?)$/g.exec(t) }, t.supportsArrayBuffer = function () { return "undefined" != typeof ArrayBuffer && "undefined" != typeof Uint8Array }, t.isArrayBuffer = function (t) { return this.supportsArrayBuffer() ? t instanceof ArrayBuffer : !1 }, t.isArrayBufferView = function (t) { return this.supportsArrayBuffer() ? "undefined" == typeof Uint32Array ? !1 : t instanceof Int8Array || t instanceof Uint8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array : !1 }, t.binaryStringToUint8Array = function (t) { for (var e = t.length, n = new Uint8Array(e), r = 0; e > r; r++) n[r] = t.charCodeAt(r); return n }, t.arrayBufferToBinaryString = function (t) { this.isArrayBuffer(t) && (t = new Uint8Array(t)); for (var e = "", n = t.byteLength, r = 0; n > r; r++) e += String.fromCharCode(t[r]); return e }, t.arrayBufferToBase64 = function (t) { for (var e, n, r, s, i, o = "", a = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", u = new Uint8Array(t), c = u.byteLength, l = c % 3, f = c - l, d = 0; f > d; d += 3) i = u[d] << 16 | u[d + 1] << 8 | u[d + 2], e = (16515072 & i) >> 18, n = (258048 & i) >> 12, r = (4032 & i) >> 6, s = 63 & i, o += a[e] + a[n] + a[r] + a[s]; return 1 == l ? (i = u[f], e = (252 & i) >> 2, n = (3 & i) << 4, o += a[e] + a[n] + "==") : 2 == l && (i = u[f] << 8 | u[f + 1], e = (64512 & i) >> 10, n = (1008 & i) >> 4, r = (15 & i) << 2, o += a[e] + a[n] + a[r] + "="), o }, t.createImageInfo = function (t, e, n, r, s, i, o, a, u, c, l, f) { var d = { alias: a, w: e, h: n, cs: r, bpc: s, i: o, data: t }; return i && (d.f = i), u && (d.dp = u), c && (d.trns = c), l && (d.pal = l), f && (d.smask = f), d }, t.addImage = function (t, e, r, s, i, w, y, v, b) { if ("string" != typeof e) { var q = w; w = i, i = s, s = r, r = e, e = q } if ("object" == typeof t && !h(t) && "imageData" in t) { var x = t; t = x.imageData, e = x.format || e, r = x.x || r || 0, s = x.y || s || 0, i = x.w || i, w = x.h || w, y = x.alias || y, v = x.compression || v, b = x.rotation || x.angle || b } if (isNaN(r) || isNaN(s)) throw console.error("jsPDF.addImage: Invalid coordinates", arguments), new Error("Invalid coordinates passed to jsPDF.addImage"); var k, _ = a.call(this); if (!(k = m(t, _))) { var A; if (h(t) && (t = p(t, e, b)), c(y) && (y = l(t)), !(k = m(y, _))) { if (this.isString(t)) { var C = this.extractInfoFromBase64DataURI(t); C ? (e = C[2], t = atob(C[3])) : 137 === t.charCodeAt(0) && 80 === t.charCodeAt(1) && 78 === t.charCodeAt(2) && 71 === t.charCodeAt(3) && (e = "png") } if (e = (e || "JPEG").toLowerCase(), f(e)) throw new Error("addImage currently only supports formats " + n + ", not '" + e + "'"); if (d(e)) throw new Error("please ensure that the plugin for '" + e + "' support is added"); if (this.supportsArrayBuffer() && (A = t, t = this.binaryStringToUint8Array(t)), k = this["process" + e.toUpperCase()](t, u(_), y, o(v), A), !k) throw new Error("An unkwown error occurred whilst processing the image") } } return g.call(this, r, s, i, w, k, k.i, _), this }; var y = function (t) { var e, n, r; if (255 === !t.charCodeAt(0) || 216 === !t.charCodeAt(1) || 255 === !t.charCodeAt(2) || 224 === !t.charCodeAt(3) || !t.charCodeAt(6) === "J".charCodeAt(0) || !t.charCodeAt(7) === "F".charCodeAt(0) || !t.charCodeAt(8) === "I".charCodeAt(0) || !t.charCodeAt(9) === "F".charCodeAt(0) || 0 === !t.charCodeAt(10)) throw new Error("getJpegSize requires a binary string jpeg file"); for (var s = 256 * t.charCodeAt(4) + t.charCodeAt(5), i = 4, o = t.length; o > i;) { if (i += s, 255 !== t.charCodeAt(i)) throw new Error("getJpegSize could not find the size of the image"); if (192 === t.charCodeAt(i + 1) || 193 === t.charCodeAt(i + 1) || 194 === t.charCodeAt(i + 1) || 195 === t.charCodeAt(i + 1) || 196 === t.charCodeAt(i + 1) || 197 === t.charCodeAt(i + 1) || 198 === t.charCodeAt(i + 1) || 199 === t.charCodeAt(i + 1)) return n = 256 * t.charCodeAt(i + 5) + t.charCodeAt(i + 6), e = 256 * t.charCodeAt(i + 7) + t.charCodeAt(i + 8), r = t.charCodeAt(i + 9), [e, n, r]; i += 2, s = 256 * t.charCodeAt(i) + t.charCodeAt(i + 1) } }, v = function (t) { var e = t[0] << 8 | t[1]; if (65496 !== e) throw new Error("Supplied data is not a JPEG"); for (var n, r, s, i, o = t.length, a = (t[4] << 8) + t[5], u = 4; o > u;) { if (u += a, n = b(t, u), a = (n[2] << 8) + n[3], (192 === n[1] || 194 === n[1]) && 255 === n[0] && a > 7) return n = b(t, u + 5), r = (n[2] << 8) + n[3], s = (n[0] << 8) + n[1], i = n[4], { width: r, height: s, numcomponents: i }; u += 2 } throw new Error("getJpegSizeFromBytes could not find the size of the image") }, b = function (t, e) { return t.subarray(e, e + 5) }; t.processJPEG = function (t, e, n, r, s) { var i, o = this.color_spaces.DEVICE_RGB, a = this.decode.DCT_DECODE, u = 8; return this.isString(t) ? (i = y(t), this.createImageInfo(t, i[0], i[1], 1 == i[3] ? this.color_spaces.DEVICE_GRAY : o, u, a, e, n)) : (this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t) ? (i = v(t), t = s || this.arrayBufferToBinaryString(t), this.createImageInfo(t, i.width, i.height, 1 == i.numcomponents ? this.color_spaces.DEVICE_GRAY : o, u, a, e, n)) : null) }, t.processJPG = function () { return this.processJPEG.apply(this, arguments) } }(n.API), function (t) { "use strict"; t.autoPrint = function () { var t; return this.internal.events.subscribe("postPutResources", function () { t = this.internal.newObject(), this.internal.write("<< /S/Named /Type/Action /N/Print >>", "endobj") }), this.internal.events.subscribe("putCatalog", function () { this.internal.write("/OpenAction " + t + " 0 R") }), this } }(n.API), function (t) { "use strict"; var e, n, r, s, i = 3, o = 13, a = { x: void 0, y: void 0, w: void 0, h: void 0, ln: void 0 }, u = 1, c = function (t, e, n, r, s) { a = { x: t, y: e, w: n, h: r, ln: s } }, l = function () { return a }, f = { left: 0, top: 0, bottom: 0 }; t.setHeaderFunction = function (t) { s = t }, t.getTextDimensions = function (t) { e = this.internal.getFont().fontName, n = this.table_font_size || this.internal.getFontSize(), r = this.internal.getFont().fontStyle; var s, i, o = 19.049976 / 25.4; return i = document.createElement("font"), i.id = "jsPDFCell", i.style.fontStyle = r, i.style.fontName = e, i.style.fontSize = n + "pt", i.textContent = t, document.body.appendChild(i), s = { w: (i.offsetWidth + 1) * o, h: (i.offsetHeight + 1) * o }, document.body.removeChild(i), s }, t.cellAddPage = function () { var t = this.margins || f; this.addPage(), c(t.left, t.top, void 0, void 0), u += 1 }, t.cellInitialize = function () { a = { x: void 0, y: void 0, w: void 0, h: void 0, ln: void 0 }, u = 1 }, t.cell = function (t, e, n, r, s, a, u) { var d = l(); if (void 0 !== d.ln) if (d.ln === a) t = d.x + d.w, e = d.y; else { var h = this.margins || f; d.y + d.h + r + o >= this.internal.pageSize.height - h.bottom && (this.cellAddPage(), this.printHeaders && this.tableHeaderRow && this.printHeaderRow(a, !0)), e = l().y + l().h } if (void 0 !== s[0]) if (this.printingHeaderRow ? this.rect(t, e, n, r, "FD") : this.rect(t, e, n, r), "right" === u) { if (s instanceof Array) for (var p = 0; p < s.length; p++) { var m = s[p], w = this.getStringUnitWidth(m) * this.internal.getFontSize(); this.text(m, t + n - w - i, e + this.internal.getLineHeight() * (p + 1)) } } else this.text(s, t + i, e + this.internal.getLineHeight()); return c(t, e, n, r, a), this }, t.arrayMax = function (t, e) { var n, r, s, i = t[0]; for (n = 0, r = t.length; r > n; n += 1) s = t[n], e ? -1 === e(i, s) && (i = s) : s > i && (i = s); return i }, t.table = function (e, n, r, s, i) { if (!r) throw "No data for PDF table"; var o, c, l, d, h, p, m, w, g, y, v = [], b = [], q = {}, x = {}, k = [], _ = [], A = !1, C = !0, S = 12, E = f; if (E.width = this.internal.pageSize.width, i && (i.autoSize === !0 && (A = !0), i.printHeaders === !1 && (C = !1), i.fontSize && (S = i.fontSize), i.margins && (E = i.margins)), this.lnMod = 0, a = { x: void 0, y: void 0, w: void 0, h: void 0, ln: void 0 }, u = 1, this.printHeaders = C, this.margins = E, this.setFontSize(S), this.table_font_size = S, void 0 === s || null === s) v = Object.keys(r[0]); else if (s[0] && "string" != typeof s[0]) { var z = 19.049976 / 25.4; for (c = 0, l = s.length; l > c; c += 1) o = s[c], v.push(o.name), b.push(o.prompt), x[o.name] = o.width * z } else v = s; if (A) for (y = function (t) { return t[o] }, c = 0, l = v.length; l > c; c += 1) { for (o = v[c], q[o] = r.map(y), k.push(this.getTextDimensions(b[c] || o).w), p = q[o], m = 0, d = p.length; d > m; m += 1) h = p[m], k.push(this.getTextDimensions(h).w); x[o] = t.arrayMax(k) } if (C) { var T = this.calculateLineHeight(v, x, b.length ? b : v); for (c = 0, l = v.length; l > c; c += 1) o = v[c], _.push([e, n, x[o], T, String(b.length ? b[c] : o)]); this.setTableHeaderRow(_), this.printHeaderRow(1, !1) } for (c = 0, l = r.length; l > c; c += 1) { var T; for (w = r[c], T = this.calculateLineHeight(v, x, w), m = 0, g = v.length; g > m; m += 1) o = v[m], this.cell(e, n, x[o], T, w[o], c + 2, o.align) } return this.lastCellPos = a, this.table_x = e, this.table_y = n, this }, t.calculateLineHeight = function (t, e, n) { for (var r, s = 0, o = 0; o < t.length; o++) { r = t[o], n[r] = this.splitTextToSize(String(n[r]), e[r] - i); var a = this.internal.getLineHeight() * n[r].length + i; a > s && (s = a) } return s }, t.setTableHeaderRow = function (t) { this.tableHeaderRow = t }, t.printHeaderRow = function (t, e) { if (!this.tableHeaderRow) throw "Property tableHeaderRow does not exist."; var n, r, i, o; if (this.printingHeaderRow = !0, void 0 !== s) { var a = s(this, u); c(a[0], a[1], a[2], a[3], -1) } this.setFontStyle("bold"); var l = []; for (i = 0, o = this.tableHeaderRow.length; o > i; i += 1) this.setFillColor(200, 200, 200), n = this.tableHeaderRow[i], e && (n[1] = this.margins && this.margins.top || 0, l.push(n)), r = [].concat(n), this.cell.apply(this, r.concat(t)); l.length > 0 && this.setTableHeaderRow(l), this.setFontStyle("normal"), this.printingHeaderRow = !1 } }(n.API), function (t) {
var e, n, r, s, i, o, a, u, c, l, f, d, h, p, m, w, g, y, v; e = function () { function t() { } return function (e) { return t.prototype = e, new t } }(), c = function (t) { var e, n, r, s, i, o, a; for (n = 0, r = t.length, e = void 0, s = !1, o = !1; !s && n !== r;) e = t[n] = t[n].trimLeft(), e && (s = !0), n++; for (n = r - 1; r && !o && -1 !== n;) e = t[n] = t[n].trimRight(), e && (o = !0), n--; for (i = /\s+$/g, a = !0, n = 0; n !== r;) e = t[n].replace(/\s+/g, " "), a && (e = e.trimLeft()), e && (a = i.test(e)), t[n] = e, n++; return t }, l = function (t, e, n, r) { return this.pdf = t, this.x = e, this.y = n, this.settings = r, this.watchFunctions = [], this.init(), this }, f = function (t) { var e, n, s; for (e = void 0, s = t.split(","), n = s.shift() ; !e && n;) e = r[n.trim().toLowerCase()], n = s.shift(); return e }, d = function (t) { t = "auto" === t ? "0px" : t, t.indexOf("em") > -1 && !isNaN(Number(t.replace("em", ""))) && (t = 18.719 * Number(t.replace("em", "")) + "px"), t.indexOf("pt") > -1 && !isNaN(Number(t.replace("pt", ""))) && (t = 1.333 * Number(t.replace("pt", "")) + "px"); var e, n, r; return n = void 0, e = 16, (r = h[t]) ? r : (r = { "xx-small": 9, "x-small": 11, small: 13, medium: 16, large: 19, "x-large": 23, "xx-large": 28, auto: 0 }[{ css_line_height_string: t }], r !== n ? h[t] = r / e : (r = parseFloat(t)) ? h[t] = r / e : (r = t.match(/([\d\.]+)(px)/), h[t] = 3 === r.length ? parseFloat(r[1]) / e : 1)) }, u = function (t) { var e, n, r; return r = function (t) { var e; return e = function (t) { return document.defaultView && document.defaultView.getComputedStyle ? document.defaultView.getComputedStyle(t, null) : t.currentStyle ? t.currentStyle : t.style }(t), function (t) { return t = t.replace(/-\D/g, function (t) { return t.charAt(1).toUpperCase() }), e[t] } }(t), e = {}, n = void 0, e["font-family"] = f(r("font-family")) || "times", e["font-style"] = s[r("font-style")] || "normal", e["text-align"] = TextAlignMap[r("text-align")] || "left", n = i[r("font-weight")] || "normal", "bold" === n && (e["font-style"] = "normal" === e["font-style"] ? n : n + e["font-style"]), e["font-size"] = d(r("font-size")) || 1, e["line-height"] = d(r("line-height")) || 1, e.display = "inline" === r("display") ? "inline" : "block", n = "block" === e.display, e["margin-top"] = n && d(r("margin-top")) || 0, e["margin-bottom"] = n && d(r("margin-bottom")) || 0, e["padding-top"] = n && d(r("padding-top")) || 0, e["padding-bottom"] = n && d(r("padding-bottom")) || 0, e["margin-left"] = n && d(r("margin-left")) || 0, e["margin-right"] = n && d(r("margin-right")) || 0, e["padding-left"] = n && d(r("padding-left")) || 0, e["padding-right"] = n && d(r("padding-right")) || 0, e["float"] = o[r("cssFloat")] || "none", e.clear = a[r("clear")] || "none", e }, p = function (t, e, n) { var r, s, i, o, a; if (i = !1, s = void 0, o = void 0, a = void 0, r = n["#" + t.id]) if ("function" == typeof r) i = r(t, e); else for (s = 0, o = r.length; !i && s !== o;) i = r[s](t, e), s++; if (r = n[t.nodeName], !i && r) if ("function" == typeof r) i = r(t, e); else for (s = 0, o = r.length; !i && s !== o;) i = r[s](t, e), s++; return i }, v = function (t, e) {
var n, r, s, i, o, a, u, c, l, f;
for (n = [], r = [], s = 0, f = t.rows[0].cells.length, c = t.clientWidth; f > s;) l = t.rows[0].cells[s], r[s] = { name: l.textContent.toLowerCase().replace(/\s+/g, ""), prompt: l.textContent.replace(/\r?\n/g, ""), width: l.clientWidth / c * e.pdf.internal.pageSize.width }, s++; for (s = 1; s < t.rows.length;) { for (a = t.rows[s], o = {}, i = 0; i < a.cells.length;) o[r[i].name] = a.cells[i].textContent.replace(/\r?\n/g, ""), i++; n.push(o), s++ } return u = { rows: n, headers: r }
}; var b = { SCRIPT: 1, STYLE: 1, NOSCRIPT: 1, OBJECT: 1, EMBED: 1, SELECT: 1 }, q = 1; n = function (t, e, r) { var s, i, o, a, c, l, f, d, h; for (i = t.childNodes, s = void 0, o = u(t), c = "block" === o.display, c && (e.setBlockBoundary(), e.setBlockStyle(o)), f = 19.049976 / 25.4, a = 0, l = i.length; l > a;) { if (s = i[a], "object" == typeof s) { if (e.executeWatchFunctions(s), 1 === s.nodeType && "HEADER" === s.nodeName) { var w = s, g = e.pdf.margins_doc.top; e.pdf.internal.events.subscribe("addPage", function () { e.y = g, n(w, e, r), e.pdf.margins_doc.top = e.y + 10, e.y += 10 }, !1) } if (8 === s.nodeType && "#comment" === s.nodeName) ~s.textContent.indexOf("ADD_PAGE") && (e.pdf.addPage(), e.y = e.pdf.margins_doc.top); else if (1 !== s.nodeType || b[s.nodeName]) if (3 === s.nodeType) { var y = s.nodeValue; if (s.nodeValue && "LI" === s.parentNode.nodeName) if ("OL" === s.parentNode.parentNode.nodeName) y = q++ + ". " + y; else { var x = 16 * o["font-size"], k = 2; x > 20 && (k = 3), h = function (t, e) { this.pdf.circle(t, e, k, "FD") } } e.addText(y, o) } else "string" == typeof s && e.addText(s, o); else { var _; if ("IMG" === s.nodeName) { var A = s.getAttribute("src"); _ = m[e.pdf.sHashCode(A) || A] } if (_) { e.pdf.internal.pageSize.height - e.pdf.margins_doc.bottom < e.y + s.height && e.y > e.pdf.margins_doc.top && (e.pdf.addPage(), e.y = e.pdf.margins_doc.top, e.executeWatchFunctions(s)); var C = u(s), S = e.x, E = 12 / e.pdf.internal.scaleFactor, z = (C["margin-left"] + C["padding-left"]) * E, T = (C["margin-right"] + C["padding-right"]) * E, I = (C["margin-top"] + C["padding-top"]) * E, B = (C["margin-bottom"] + C["padding-bottom"]) * E; S += void 0 !== C["float"] && "right" === C["float"] ? e.settings.width - s.width - T : z, e.pdf.addImage(_, S, e.y + I, s.width, s.height), _ = void 0, "right" === C["float"] || "left" === C["float"] ? (e.watchFunctions.push(function (t, n, r, s) { return e.y >= n ? (e.x += t, e.settings.width += r, !0) : s && 1 === s.nodeType && !b[s.nodeName] && e.x + s.width > e.pdf.margins_doc.left + e.pdf.margins_doc.width ? (e.x += t, e.y = n, e.settings.width += r, !0) : !1 }.bind(this, "left" === C["float"] ? -s.width - z - T : 0, e.y + s.height + I + B, s.width)), e.watchFunctions.push(function (t, n, r) { return e.y < t && n === e.pdf.internal.getNumberOfPages() ? 1 === r.nodeType && "both" === u(r).clear ? (e.y = t, !0) : !1 : !0 }.bind(this, e.y + s.height, e.pdf.internal.getNumberOfPages())), e.settings.width -= s.width + z + T, "left" === C["float"] && (e.x += s.width + z + T)) : e.y += s.height + B } else if ("TABLE" === s.nodeName) d = v(s, e), e.y += 10, e.pdf.table(e.x, e.y, d.rows, d.headers, { autoSize: !1, printHeaders: !0, margins: e.pdf.margins_doc }), e.y = e.pdf.lastCellPos.y + e.pdf.lastCellPos.h + 20; else if ("OL" === s.nodeName || "UL" === s.nodeName) q = 1, p(s, e, r) || n(s, e, r), e.y += 10; else if ("LI" === s.nodeName) { var O = e.x; e.x += "UL" === s.parentNode.nodeName ? 22 : 10, e.y += 3, p(s, e, r) || n(s, e, r), e.x = O } else "BR" === s.nodeName ? e.y += o["font-size"] * e.pdf.internal.scaleFactor : p(s, e, r) || n(s, e, r) } } a++ } return c ? e.setBlockBoundary(h) : void 0 }, m = {}, w = function (t, e, n, r) { function s() { e.pdf.internal.events.publish("imagesLoaded"), r(o) } function i(t, n, r) { if (t) { var i = new Image; o = ++c, i.crossOrigin = "", i.onerror = i.onload = function () { if (i.complete && (0 === i.src.indexOf("data:image/") && (i.width = n || i.width || 0, i.height = r || i.height || 0), i.width + i.height)) { var o = e.pdf.sHashCode(t) || t; m[o] = m[o] || i } --c || s() }, i.src = t } } for (var o, a = t.getElementsByTagName("img"), u = a.length, c = 0; u--;) i(a[u].getAttribute("src"), a[u].width, a[u].height); return c || s() }, g = function (t, e, r) { var s = t.getElementsByTagName("footer"); if (s.length > 0) { s = s[0]; var i = e.pdf.internal.write, o = e.y; e.pdf.internal.write = function () { }, n(s, e, r); var a = Math.ceil(e.y - o) + 5; e.y = o, e.pdf.internal.write = i, e.pdf.margins_doc.bottom += a; for (var u = function (t) { var i = void 0 !== t ? t.pageNumber : 1, o = e.y; e.y = e.pdf.internal.pageSize.height - e.pdf.margins_doc.bottom, e.pdf.margins_doc.bottom -= a; for (var u = s.getElementsByTagName("span"), c = 0; c < u.length; ++c) (" " + u[c].className + " ").replace(/[\n\t]/g, " ").indexOf(" pageCounter ") > -1 && (u[c].innerHTML = i), (" " + u[c].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") > -1 && (u[c].innerHTML = "###jsPDFVarTotalPages###"); n(s, e, r), e.pdf.margins_doc.bottom += a, e.y = o }, c = s.getElementsByTagName("span"), l = 0; l < c.length; ++l) (" " + c[l].className + " ").replace(/[\n\t]/g, " ").indexOf(" totalPages ") > -1 && e.pdf.internal.events.subscribe("htmlRenderingFinished", e.pdf.putTotalPages.bind(e.pdf, "###jsPDFVarTotalPages###"), !0); e.pdf.internal.events.subscribe("addPage", u, !1), u(), b.FOOTER = 1 } }, y = function (t, e, r, s, i, o) { if (!e) return !1; "string" == typeof e || e.parentNode || (e = "" + e.innerHTML), "string" == typeof e && (e = function (t) { var e, n, r, s; return r = "jsPDFhtmlText" + Date.now().toString() + (1e3 * Math.random()).toFixed(0), s = "position: absolute !important;clip: rect(1px 1px 1px 1px); /* IE6, IE7 */clip: rect(1px, 1px, 1px, 1px);padding:0 !important;border:0 !important;height: 1px !important;width: 1px !important; top:auto;left:-100px;overflow: hidden;", n = document.createElement("div"), n.style.cssText = s, n.innerHTML = '
', document.body.appendChild(n), e = window.frames[r], e.document.body.innerHTML = t, e.document.body }(e.replace(/<\/?script[^>]*?>/gi, ""))); var a, u = new l(t, r, s, i); return w.call(this, e, u, i.elementHandlers, function (t) { g(e, u, i.elementHandlers), n(e, u, i.elementHandlers), u.pdf.internal.events.publish("htmlRenderingFinished"), a = u.dispose(), "function" == typeof o ? o(a) : t && console.error("jsPDF Warning: rendering issues? provide a callback to fromHTML!") }), a || { x: u.x, y: u.y } }, l.prototype.init = function () { return this.paragraph = { text: [], style: [] }, this.pdf.internal.write("q") }, l.prototype.dispose = function () { return this.pdf.internal.write("Q"), { x: this.x, y: this.y, ready: !0 } }, l.prototype.executeWatchFunctions = function (t) { var e = !1, n = []; if (this.watchFunctions.length > 0) { for (var r = 0; r < this.watchFunctions.length; ++r) this.watchFunctions[r](t) === !0 ? e = !0 : n.push(this.watchFunctions[r]); this.watchFunctions = n } return e }, l.prototype.splitFragmentsIntoLines = function (t, n) { var r, s, i, o, a, u, c, l, f, d, h, p, m, w, g; for (s = 12, h = this.pdf.internal.scaleFactor, a = {}, i = void 0, d = void 0, o = void 0, u = void 0, g = void 0, f = void 0, l = void 0, c = void 0, p = [], m = [p], r = 0, w = this.settings.width; t.length;) if (u = t.shift(), g = n.shift(), u) if (i = g["font-family"], d = g["font-style"], o = a[i + d], o || (o = this.pdf.internal.getFont(i, d).metadata.Unicode, a[i + d] = o), f = { widths: o.widths, kerning: o.kerning, fontSize: g["font-size"] * s, textIndent: r }, l = this.pdf.getStringUnitWidth(u, f) * f.fontSize / h, r + l > w) { for (c = this.pdf.splitTextToSize(u, w, f), p.push([c.shift(), g]) ; c.length;) p = [[c.shift(), g]], m.push(p); r = this.pdf.getStringUnitWidth(p[0][0], f) * f.fontSize / h } else p.push([u, g]), r += l; if (void 0 !== g["text-align"] && ("center" === g["text-align"] || "right" === g["text-align"] || "justify" === g["text-align"])) for (var y = 0; y < m.length; ++y) { var v = this.pdf.getStringUnitWidth(m[y][0][0], f) * f.fontSize / h; y > 0 && (m[y][0][1] = e(m[y][0][1])); var b = w - v; if ("right" === g["text-align"]) m[y][0][1]["margin-left"] = b; else if ("center" === g["text-align"]) m[y][0][1]["margin-left"] = b / 2; else if ("justify" === g["text-align"]) { var q = m[y][0][0].split(" ").length - 1; m[y][0][1]["word-spacing"] = b / q, y === m.length - 1 && (m[y][0][1]["word-spacing"] = 0) } } return m }, l.prototype.RenderTextFragment = function (t, e) { var n, r, s; s = 0, n = 12, this.pdf.internal.pageSize.height - this.pdf.margins_doc.bottom < this.y + this.pdf.internal.getFontSize() && (this.pdf.internal.write("ET", "Q"), this.pdf.addPage(), this.y = this.pdf.margins_doc.top, this.pdf.internal.write("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td"), s = Math.max(s, e["line-height"], e["font-size"]), this.pdf.internal.write(0, (-1 * n * s).toFixed(2), "Td")), r = this.pdf.internal.getFont(e["font-family"], e["font-style"]), void 0 !== e["word-spacing"] && e["word-spacing"] > 0 && this.pdf.internal.write(e["word-spacing"].toFixed(2), "Tw"), this.pdf.internal.write("/" + r.id, (n * e["font-size"]).toFixed(2), "Tf", "(" + this.pdf.internal.pdfEscape(t) + ") Tj"), void 0 !== e["word-spacing"] && this.pdf.internal.write(0, "Tw") }, l.prototype.renderParagraph = function (t) { var e, n, r, s, i, o, a, u, l, f, d, h, p, m, w; if (s = c(this.paragraph.text), m = this.paragraph.style, e = this.paragraph.blockstyle, p = this.paragraph.blockstyle || {}, this.paragraph = { text: [], style: [], blockstyle: {}, priorblockstyle: e }, s.join("").trim()) { u = this.splitFragmentsIntoLines(s, m), a = void 0, l = void 0, n = 12, r = n / this.pdf.internal.scaleFactor, h = (Math.max((e["margin-top"] || 0) - (p["margin-bottom"] || 0), 0) + (e["padding-top"] || 0)) * r, d = ((e["margin-bottom"] || 0) + (e["padding-bottom"] || 0)) * r, f = this.pdf.internal.write, i = void 0, o = void 0, this.y += h, f("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td"); for (var g = 0; u.length;) { for (a = u.shift(), l = 0, i = 0, o = a.length; i !== o;) a[i][0].trim() && (l = Math.max(l, a[i][1]["line-height"], a[i][1]["font-size"]), w = 7 * a[i][1]["font-size"]), i++; var y = 0; for (void 0 !== a[0][1]["margin-left"] && a[0][1]["margin-left"] > 0 && (wantedIndent = this.pdf.internal.getCoordinateString(a[0][1]["margin-left"]), y = wantedIndent - g, g = wantedIndent), f(y, (-1 * n * l).toFixed(2), "Td"), i = 0, o = a.length; i !== o;) a[i][0] && this.RenderTextFragment(a[i][0], a[i][1]), i++; if (this.y += l * r, this.executeWatchFunctions(a[0][1]) && u.length > 0) { var v = [], b = []; u.forEach(function (t) { for (var e = 0, n = t.length; e !== n;) t[e][0] && (v.push(t[e][0] + " "), b.push(t[e][1])), ++e }), u = this.splitFragmentsIntoLines(c(v), b), f("ET", "Q"), f("q", "BT 0 g", this.pdf.internal.getCoordinateString(this.x), this.pdf.internal.getVerticalCoordinateString(this.y), "Td") } } return t && "function" == typeof t && t.call(this, this.x - 9, this.y - w / 2), f("ET", "Q"), this.y += d } }, l.prototype.setBlockBoundary = function (t) { return this.renderParagraph(t) }, l.prototype.setBlockStyle = function (t) { return this.paragraph.blockstyle = t }, l.prototype.addText = function (t, e) { return this.paragraph.text.push(t), this.paragraph.style.push(e) }, r = { helvetica: "helvetica", "sans-serif": "helvetica", "times new roman": "times", serif: "times", times: "times", monospace: "courier", courier: "courier" }, i = { 100: "normal", 200: "normal", 300: "normal", 400: "normal", 500: "bold", 600: "bold", 700: "bold", 800: "bold", 900: "bold", normal: "normal", bold: "bold", bolder: "bold", lighter: "normal" }, s = { normal: "normal", italic: "italic", oblique: "italic" }, TextAlignMap = { left: "left", right: "right", center: "center", justify: "justify" }, o = { none: "none", right: "right", left: "left" }, a = { none: "none", both: "both" }, h = { normal: 1 }, t.fromHTML = function (t, e, n, r, s, i) { "use strict"; return this.margins_doc = i || { top: 0, bottom: 0 }, r || (r = {}), r.elementHandlers || (r.elementHandlers = {}), y(this, t, isNaN(e) ? 4 : e, isNaN(n) ? 4 : n, r, s) }
}(n.API), function (t) { "use strict"; var e, n, r; t.addJS = function (t) { return r = t, this.internal.events.subscribe("postPutResources", function () { e = this.internal.newObject(), this.internal.write("<< /Names [(EmbeddedJS) " + (e + 1) + " 0 R] >>", "endobj"), n = this.internal.newObject(), this.internal.write("<< /S /JavaScript /JS (", r, ") >>", "endobj") }), this.internal.events.subscribe("putCatalog", function () { void 0 !== e && void 0 !== n && this.internal.write("/Names <>") }), this } }(n.API), function (t) { "use strict"; var e = function () { return "function" != typeof PNG || "function" != typeof o }, n = function (e) { return e !== t.image_compression.NONE && r() }, r = function () { var t = "function" == typeof s; if (!t) throw new Error("requires deflate.js for compression"); return t }, i = function (e, n, r, i) { var o = 5, l = d; switch (i) { case t.image_compression.FAST: o = 3, l = f; break; case t.image_compression.MEDIUM: o = 6, l = h; break; case t.image_compression.SLOW: o = 9, l = p } e = c(e, n, r, l); var m = new Uint8Array(a(o)), w = u(e), g = new s(o), y = g.append(e), v = g.flush(), b = m.length + y.length + v.length, q = new Uint8Array(b + 4); return q.set(m), q.set(y, m.length), q.set(v, m.length + y.length), q[b++] = w >>> 24 & 255, q[b++] = w >>> 16 & 255, q[b++] = w >>> 8 & 255, q[b++] = 255 & w, t.arrayBufferToBinaryString(q) }, a = function (t, e) { var n = 8, r = Math.LOG2E * Math.log(32768) - 8, s = r << 4 | n, i = s << 8, o = Math.min(3, (e - 1 & 255) >> 1); return i |= o << 6, i |= 0, i += 31 - i % 31, [s, 255 & i & 255] }, u = function (t, e) { for (var n, r = 1, s = 65535 & r, i = r >>> 16 & 65535, o = t.length, a = 0; o > 0;) { n = o > e ? e : o, o -= n; do s += t[a++], i += s; while (--n); s %= 65521, i %= 65521 } return (i << 16 | s) >>> 0 }, c = function (t, e, n, r) { for (var s, i, o, a = t.length / e, u = new Uint8Array(t.length + a), c = w(), l = 0; a > l; l++) { if (o = l * e, s = t.subarray(o, o + e), r) u.set(r(s, n, i), o + l); else { for (var f = 0, d = c.length, h = []; d > f; f++) h[f] = c[f](s, n, i); var p = g(h.concat()); u.set(h[p], o + l) } i = s } return u }, l = function (t) { var e = Array.apply([], t); return e.unshift(0), e }, f = function (t, e) { var n, r = [], s = 0, i = t.length; for (r[0] = 1; i > s; s++) n = t[s - e] || 0, r[s + 1] = t[s] - n + 256 & 255; return r }, d = function (t, e, n) { var r, s = [], i = 0, o = t.length; for (s[0] = 2; o > i; i++) r = n && n[i] || 0, s[i + 1] = t[i] - r + 256 & 255; return s }, h = function (t, e, n) { var r, s, i = [], o = 0, a = t.length; for (i[0] = 3; a > o; o++) r = t[o - e] || 0, s = n && n[o] || 0, i[o + 1] = t[o] + 256 - (r + s >>> 1) & 255; return i }, p = function (t, e, n) { var r, s, i, o, a = [], u = 0, c = t.length; for (a[0] = 4; c > u; u++) r = t[u - e] || 0, s = n && n[u] || 0, i = n && n[u - e] || 0, o = m(r, s, i), a[u + 1] = t[u] - o + 256 & 255; return a }, m = function (t, e, n) { var r = t + e - n, s = Math.abs(r - t), i = Math.abs(r - e), o = Math.abs(r - n); return i >= s && o >= s ? t : o >= i ? e : n }, w = function () { return [l, f, d, h, p] }, g = function (t) { for (var e, n, r, s = 0, i = t.length; i > s;) e = y(t[s].slice(1)), (n > e || !n) && (n = e, r = s), s++; return r }, y = function (t) { for (var e = 0, n = t.length, r = 0; n > e;) r += Math.abs(t[e++]); return r }; t.processPNG = function (t, r, s, o) { var a, u, c, l, f, d, h = this.color_spaces.DEVICE_RGB, p = this.decode.FLATE_DECODE, m = 8; if (this.isArrayBuffer(t) && (t = new Uint8Array(t)), this.isArrayBufferView(t)) { if (e()) throw new Error("PNG support requires png.js and zlib.js"); if (a = new PNG(t), t = a.imgData, m = a.bits, h = a.colorSpace, l = a.colors, -1 !== [4, 6].indexOf(a.colorType)) { if (8 === a.bits) for (var w, g, y = window["Uint" + a.pixelBitlength + "Array"], v = new y(a.decodePixels().buffer), b = v.length, q = new Uint8Array(b * a.colors), x = new Uint8Array(b), k = a.pixelBitlength - a.bits, _ = 0, A = 0; b > _; _++) { for (w = v[_], g = 0; k > g;) q[A++] = w >>> g & 255, g += a.bits; x[_] = w >>> g & 255 } if (16 === a.bits) { for (var w, v = new Uint32Array(a.decodePixels().buffer), b = v.length, q = new Uint8Array(b * (32 / a.pixelBitlength) * a.colors), x = new Uint8Array(b * (32 / a.pixelBitlength)), C = a.colors > 1, _ = 0, A = 0, S = 0; b > _;) w = v[_++], q[A++] = w >>> 0 & 255, C && (q[A++] = w >>> 16 & 255, w = v[_++], q[A++] = w >>> 0 & 255), x[S++] = w >>> 16 & 255; m = 8 } n(o) ? (t = i(q, a.width * a.colors, a.colors, o), d = i(x, a.width, 1, o)) : (t = q, d = x, p = null) } if (3 === a.colorType && (h = this.color_spaces.INDEXED, f = a.palette, a.transparency.indexed)) { for (var E = a.transparency.indexed, z = 0, _ = 0, b = E.length; b > _; ++_) z += E[_]; if (z /= 255, z === b - 1 && -1 !== E.indexOf(0)) c = [E.indexOf(0)]; else if (z !== b) { for (var v = a.decodePixels(), x = new Uint8Array(v.length), _ = 0, b = v.length; b > _; _++) x[_] = E[v[_]]; d = i(x, a.width, 1) } } return u = p === this.decode.FLATE_DECODE ? "/Predictor 15 /Colors " + l + " /BitsPerComponent " + m + " /Columns " + a.width : "/Colors " + l + " /BitsPerComponent " + m + " /Columns " + a.width, (this.isArrayBuffer(t) || this.isArrayBufferView(t)) && (t = this.arrayBufferToBinaryString(t)), (d && this.isArrayBuffer(d) || this.isArrayBufferView(d)) && (d = this.arrayBufferToBinaryString(d)), this.createImageInfo(t, a.width, a.height, h, m, p, r, s, u, c, f, d) } throw new Error("Unsupported PNG image data, try using JPEG instead.") } }(n.API), function (t) { "use strict"; t.addSVG = function (t, e, n, r, s) { function i(t, e) { var n = e.createElement("style"); n.type = "text/css", n.styleSheet ? n.styleSheet.cssText = t : n.appendChild(e.createTextNode(t)), e.getElementsByTagName("head")[0].appendChild(n) } function o(t) { var e = "childframe", n = t.createElement("iframe"); return i(".jsPDF_sillysvg_iframe {display:none;position:absolute;}", t), n.name = e, n.setAttribute("width", 0), n.setAttribute("height", 0), n.setAttribute("frameborder", "0"), n.setAttribute("scrolling", "no"), n.setAttribute("seamless", "seamless"), n.setAttribute("class", "jsPDF_sillysvg_iframe"), t.body.appendChild(n), n } function a(t, e) { var n = (e.contentWindow || e.contentDocument).document; return n.write(t), n.close(), n.getElementsByTagName("svg")[0] } function u(t) { for (var e = parseFloat(t[1]), n = parseFloat(t[2]), r = [], s = 3, i = t.length; i > s;) "c" === t[s] ? (r.push([parseFloat(t[s + 1]), parseFloat(t[s + 2]), parseFloat(t[s + 3]), parseFloat(t[s + 4]), parseFloat(t[s + 5]), parseFloat(t[s + 6])]), s += 7) : "l" === t[s] ? (r.push([parseFloat(t[s + 1]), parseFloat(t[s + 2])]), s += 3) : s += 1; return [e, n, r] } var c; if (e === c || n === c) throw new Error("addSVG needs values for 'x' and 'y'"); var l = o(document), f = a(t, l), d = [1, 1], h = parseFloat(f.getAttribute("width")), p = parseFloat(f.getAttribute("height")); h && p && (r && s ? d = [r / h, s / p] : r ? d = [r / h, r / h] : s && (d = [s / p, s / p])); var m, w, g, y, v = f.childNodes; for (m = 0, w = v.length; w > m; m++) g = v[m], g.tagName && "PATH" === g.tagName.toUpperCase() && (y = u(g.getAttribute("d").split(" ")), y[0] = y[0] * d[0] + e, y[1] = y[1] * d[1] + n, this.lines.call(this, y[2], y[0], y[1], d)); return this } }(n.API), function (t) { "use strict"; var e = t.getCharWidthsArray = function (t, e) { e || (e = {}); var n, r, s, i = e.widths ? e.widths : this.internal.getFont().metadata.Unicode.widths, o = i.fof ? i.fof : 1, a = e.kerning ? e.kerning : this.internal.getFont().metadata.Unicode.kerning, u = a.fof ? a.fof : 1, c = 0, l = i[0] || o, f = []; for (n = 0, r = t.length; r > n; n++) s = t.charCodeAt(n), f.push((i[s] || l) / o + (a[s] && a[s][c] || 0) / u), c = s; return f }, n = function (t) { for (var e = t.length, n = 0; e;) e--, n += t[e]; return n }, r = t.getStringUnitWidth = function (t, r) { return n(e.call(this, t, r)) }, s = function (t, e, n, r) { for (var s = [], i = 0, o = t.length, a = 0; i !== o && a + e[i] < n;) a += e[i], i++; s.push(t.slice(0, i)); var u = i; for (a = 0; i !== o;) a + e[i] > r && (s.push(t.slice(u, i)), a = 0, u = i), a += e[i], i++; return u !== i && s.push(t.slice(u, i)), s }, i = function (t, i, o) { o || (o = {}); var a, u, c, l, f, d, h = [], p = [h], m = o.textIndent || 0, w = 0, g = 0, y = t.split(" "), v = e(" ", o)[0]; if (d = -1 === o.lineIndent ? y[0].length + 2 : o.lineIndent || 0) { var b = Array(d).join(" "), q = []; y.map(function (t) { t = t.split(/\s*\n/), t.length > 1 ? q = q.concat(t.map(function (t, e) { return (e && t.length ? "\n" : "") + t })) : q.push(t[0]) }), y = q, d = r(b, o) } for (c = 0, l = y.length; l > c; c++) { var x = 0; if (a = y[c], d && "\n" == a[0] && (a = a.substr(1), x = 1), u = e(a, o), g = n(u), m + w + g > i || x) { if (g > i) { for (f = s(a, u, i - (m + w), i), h.push(f.shift()), h = [f.pop()]; f.length;) p.push([f.shift()]); g = n(u.slice(a.length - h[0].length)) } else h = [a]; p.push(h), m = g + d, w = v } else h.push(a), m += w + g, w = v } if (d) var k = function (t, e) { return (e ? b : "") + t.join(" ") }; else var k = function (t) { return t.join(" ") }; return p.map(k) }; t.splitTextToSize = function (t, e, n) { n || (n = {}); var r, s = n.fontSize || this.internal.getFontSize(), o = function (t) { var e = { 0: 1 }, n = {}; if (t.widths && t.kerning) return { widths: t.widths, kerning: t.kerning }; var r = this.internal.getFont(t.fontName, t.fontStyle), s = "Unicode"; return r.metadata[s] ? { widths: r.metadata[s].widths || e, kerning: r.metadata[s].kerning || n } : { widths: e, kerning: n } }.call(this, n); r = Array.isArray(t) ? t : t.split(/\r?\n/); var a = 1 * this.internal.scaleFactor * e / s; o.textIndent = n.textIndent ? 1 * n.textIndent * this.internal.scaleFactor / s : 0, o.lineIndent = n.lineIndent; var u, c, l = []; for (u = 0, c = r.length; c > u; u++) l = l.concat(i(r[u], a, o)); return l } }(n.API), function (t) {
"use strict"; var e = function (t) { for (var e = "0123456789abcdef", n = "klmnopqrstuvwxyz", r = {}, s = 0; s < n.length; s++) r[n[s]] = e[s]; var i, o, a, u, c, l = {}, f = 1, d = l, h = [], p = "", m = "", w = t.length - 1; for (s = 1; s != w;) c = t[s], s += 1, "'" == c ? o ? (u = o.join(""), o = i) : o = [] : o ? o.push(c) : "{" == c ? (h.push([d, u]), d = {}, u = i) : "}" == c ? (a = h.pop(), a[0][a[1]] = d, u = i, d = a[0]) : "-" == c ? f = -1 : u === i ? r.hasOwnProperty(c) ? (p += r[c], u = parseInt(p, 16) * f, f = 1, p = "") : p += c : r.hasOwnProperty(c) ? (m += r[c], d[u] = parseInt(m, 16) * f, f = 1, u = i, m = "") : m += c; return l }, n = { codePages: ["WinAnsiEncoding"], WinAnsiEncoding: e("{19m8n201n9q201o9r201s9l201t9m201u8m201w9n201x9o201y8o202k8q202l8r202m9p202q8p20aw8k203k8t203t8v203u9v2cq8s212m9t15m8w15n9w2dw9s16k8u16l9u17s9z17x8y17y9y}") }, r = { Unicode: { Courier: n, "Courier-Bold": n, "Courier-BoldOblique": n, "Courier-Oblique": n, Helvetica: n, "Helvetica-Bold": n, "Helvetica-BoldOblique": n, "Helvetica-Oblique": n, "Times-Roman": n, "Times-Bold": n, "Times-BoldItalic": n, "Times-Italic": n } }, s = { Unicode: { "Courier-Oblique": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-BoldItalic": e("{'widths'{k3o2q4ycx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2r202m2n2n3m2o3m2p5n202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5n4l4m4m4m4n4m4o4s4p4m4q4m4r4s4s4y4t2r4u3m4v4m4w3x4x5t4y4s4z4s5k3x5l4s5m4m5n3r5o3x5p4s5q4m5r5t5s4m5t3x5u3x5v2l5w1w5x2l5y3t5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q2l6r3m6s3r6t1w6u1w6v3m6w1w6x4y6y3r6z3m7k3m7l3m7m2r7n2r7o1w7p3r7q2w7r4m7s3m7t2w7u2r7v2n7w1q7x2n7y3t202l3mcl4mal2ram3man3mao3map3mar3mas2lat4uau1uav3maw3way4uaz2lbk2sbl3t'fof'6obo2lbp3tbq3mbr1tbs2lbu1ybv3mbz3mck4m202k3mcm4mcn4mco4mcp4mcq5ycr4mcs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz2w203k6o212m6o2dw2l2cq2l3t3m3u2l17s3x19m3m}'kerning'{cl{4qu5kt5qt5rs17ss5ts}201s{201ss}201t{cks4lscmscnscoscpscls2wu2yu201ts}201x{2wu2yu}2k{201ts}2w{4qx5kx5ou5qx5rs17su5tu}2x{17su5tu5ou}2y{4qx5kx5ou5qx5rs17ss5ts}'fof'-6ofn{17sw5tw5ou5qw5rs}7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qs}3v{17su5tu5os5qs}7p{17su5tu}ck{4qu5kt5qt5rs17ss5ts}4l{4qu5kt5qt5rs17ss5ts}cm{4qu5kt5qt5rs17ss5ts}cn{4qu5kt5qt5rs17ss5ts}co{4qu5kt5qt5rs17ss5ts}cp{4qu5kt5qt5rs17ss5ts}6l{4qu5ou5qw5rt17su5tu}5q{ckuclucmucnucoucpu4lu}5r{ckuclucmucnucoucpu4lu}7q{cksclscmscnscoscps4ls}6p{4qu5ou5qw5rt17sw5tw}ek{4qu5ou5qw5rt17su5tu}el{4qu5ou5qw5rt17su5tu}em{4qu5ou5qw5rt17su5tu}en{4qu5ou5qw5rt17su5tu}eo{4qu5ou5qw5rt17su5tu}ep{4qu5ou5qw5rt17su5tu}es{17ss5ts5qs4qu}et{4qu5ou5qw5rt17sw5tw}eu{4qu5ou5qw5rt17ss5ts}ev{17ss5ts5qs4qu}6z{17sw5tw5ou5qw5rs}fm{17sw5tw5ou5qw5rs}7n{201ts}fo{17sw5tw5ou5qw5rs}fp{17sw5tw5ou5qw5rs}fq{17sw5tw5ou5qw5rs}7r{cksclscmscnscoscps4ls}fs{17sw5tw5ou5qw5rs}ft{17su5tu}fu{17su5tu}fv{17su5tu}fw{17su5tu}fz{cksclscmscnscoscps4ls}}}"), "Helvetica-Bold": e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), Courier: e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Courier-BoldOblique": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Bold": e("{'widths'{k3q2q5ncx2r201n3m201o6o201s2l201t2l201u2l201w3m201x3m201y3m2k1t2l2l202m2n2n3m2o3m2p6o202q6o2r1w2s2l2t2l2u3m2v3t2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w3t3x3t3y3t3z3m4k5x4l4s4m4m4n4s4o4s4p4m4q3x4r4y4s4y4t2r4u3m4v4y4w4m4x5y4y4s4z4y5k3x5l4y5m4s5n3r5o4m5p4s5q4s5r6o5s4s5t4s5u4m5v2l5w1w5x2l5y3u5z3m6k2l6l3m6m3r6n2w6o3r6p2w6q2l6r3m6s3r6t1w6u2l6v3r6w1w6x5n6y3r6z3m7k3r7l3r7m2w7n2r7o2l7p3r7q3m7r4s7s3m7t3m7u2w7v2r7w1q7x2r7y3o202l3mcl4sal2lam3man3mao3map3mar3mas2lat4uau1yav3maw3tay4uaz2lbk2sbl3t'fof'6obo2lbp3rbr1tbs2lbu2lbv3mbz3mck4s202k3mcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw2r2m3rcy2rcz2rdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3rek3mel3mem3men3meo3mep3meq4ser2wes2wet2weu2wev2wew1wex1wey1wez1wfl3rfm3mfn3mfo3mfp3mfq3mfr3tfs3mft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3m3u2l17s4s19m3m}'kerning'{cl{4qt5ks5ot5qy5rw17sv5tv}201t{cks4lscmscnscoscpscls4wv}2k{201ts}2w{4qu5ku7mu5os5qx5ru17su5tu}2x{17su5tu5ou5qs}2y{4qv5kv7mu5ot5qz5ru17su5tu}'fof'-6o7t{cksclscmscnscoscps4ls}3u{17su5tu5os5qu}3v{17su5tu5os5qu}fu{17su5tu5ou5qu}7p{17su5tu5ou5qu}ck{4qt5ks5ot5qy5rw17sv5tv}4l{4qt5ks5ot5qy5rw17sv5tv}cm{4qt5ks5ot5qy5rw17sv5tv}cn{4qt5ks5ot5qy5rw17sv5tv}co{4qt5ks5ot5qy5rw17sv5tv}cp{4qt5ks5ot5qy5rw17sv5tv}6l{17st5tt5ou5qu}17s{ckuclucmucnucoucpu4lu4wu}5o{ckuclucmucnucoucpu4lu4wu}5q{ckzclzcmzcnzcozcpz4lz4wu}5r{ckxclxcmxcnxcoxcpx4lx4wu}5t{ckuclucmucnucoucpu4lu4wu}7q{ckuclucmucnucoucpu4lu}6p{17sw5tw5ou5qu}ek{17st5tt5qu}el{17st5tt5ou5qu}em{17st5tt5qu}en{17st5tt5qu}eo{17st5tt5qu}ep{17st5tt5ou5qu}es{17ss5ts5qu}et{17sw5tw5ou5qu}eu{17sw5tw5ou5qu}ev{17ss5ts5qu}6z{17sw5tw5ou5qu5rs}fm{17sw5tw5ou5qu5rs}fn{17sw5tw5ou5qu5rs}fo{17sw5tw5ou5qu5rs}fp{17sw5tw5ou5qu5rs}fq{17sw5tw5ou5qu5rs}7r{cktcltcmtcntcotcpt4lt5os}fs{17sw5tw5ou5qu5rs}ft{17su5tu5ou5qu}7m{5os}fv{17su5tu5ou5qu}fw{17su5tu5ou5qu}fz{cksclscmscnscoscps4ls}}}"), Helvetica: e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}"), "Helvetica-BoldOblique": e("{'widths'{k3s2q4scx1w201n3r201o6o201s1w201t1w201u1w201w3m201x3m201y3m2k1w2l2l202m2n2n3r2o3r2p5t202q6o2r1s2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v2l3w3u3x3u3y3u3z3x4k6l4l4s4m4s4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3r4v4s4w3x4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v2l5w1w5x2l5y3u5z3r6k2l6l3r6m3x6n3r6o3x6p3r6q2l6r3x6s3x6t1w6u1w6v3r6w1w6x5t6y3x6z3x7k3x7l3x7m2r7n3r7o2l7p3x7q3r7r4y7s3r7t3r7u3m7v2r7w1w7x2r7y3u202l3rcl4sal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3xbq3rbr1wbs2lbu2obv3rbz3xck4s202k3rcm4scn4sco4scp4scq6ocr4scs4mct4mcu4mcv4mcw1w2m2zcy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3res3ret3reu3rev3rew1wex1wey1wez1wfl3xfm3xfn3xfo3xfp3xfq3xfr3ufs3xft3xfu3xfv3xfw3xfz3r203k6o212m6o2dw2l2cq2l3t3r3u2l17s4m19m3r}'kerning'{cl{4qs5ku5ot5qs17sv5tv}201t{2ww4wy2yw}201w{2ks}201x{2ww4wy2yw}2k{201ts201xs}2w{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}2x{5ow5qs}2y{7qs4qu5kw5os5qw5rs17su5tu7tsfzs}'fof'-6o7p{17su5tu5ot}ck{4qs5ku5ot5qs17sv5tv}4l{4qs5ku5ot5qs17sv5tv}cm{4qs5ku5ot5qs17sv5tv}cn{4qs5ku5ot5qs17sv5tv}co{4qs5ku5ot5qs17sv5tv}cp{4qs5ku5ot5qs17sv5tv}6l{17st5tt5os}17s{2kwclvcmvcnvcovcpv4lv4wwckv}5o{2kucltcmtcntcotcpt4lt4wtckt}5q{2ksclscmscnscoscps4ls4wvcks}5r{2ks4ws}5t{2kwclvcmvcnvcovcpv4lv4wwckv}eo{17st5tt5os}fu{17su5tu5ot}6p{17ss5ts}ek{17st5tt5os}el{17st5tt5os}em{17st5tt5os}en{17st5tt5os}6o{201ts}ep{17st5tt5os}es{17ss5ts}et{17ss5ts}eu{17ss5ts}ev{17ss5ts}6z{17su5tu5os5qt}fm{17su5tu5os5qt}fn{17su5tu5os5qt}fo{17su5tu5os5qt}fp{17su5tu5os5qt}fq{17su5tu5os5qt}fs{17su5tu5os5qt}ft{17su5tu5ot}7m{5os}fv{17su5tu5ot}fw{17su5tu5ot}}}"), "Courier-Bold": e("{'widths'{k3w'fof'6o}'kerning'{'fof'-6o}}"), "Times-Italic": e("{'widths'{k3n2q4ycx2l201n3m201o5t201s2l201t2l201u2l201w3r201x3r201y3r2k1t2l2l202m2n2n3m2o3m2p5n202q5t2r1p2s2l2t2l2u3m2v4n2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v2l3w4n3x4n3y4n3z3m4k5w4l3x4m3x4n4m4o4s4p3x4q3x4r4s4s4s4t2l4u2w4v4m4w3r4x5n4y4m4z4s5k3x5l4s5m3x5n3m5o3r5p4s5q3x5r5n5s3x5t3r5u3r5v2r5w1w5x2r5y2u5z3m6k2l6l3m6m3m6n2w6o3m6p2w6q1w6r3m6s3m6t1w6u1w6v2w6w1w6x4s6y3m6z3m7k3m7l3m7m2r7n2r7o1w7p3m7q2w7r4m7s2w7t2w7u2r7v2s7w1v7x2s7y3q202l3mcl3xal2ram3man3mao3map3mar3mas2lat4wau1vav3maw4nay4waz2lbk2sbl4n'fof'6obo2lbp3mbq3obr1tbs2lbu1zbv3mbz3mck3x202k3mcm3xcn3xco3xcp3xcq5tcr4mcs3xct3xcu3xcv3xcw2l2m2ucy2lcz2ldl4mdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek3mel3mem3men3meo3mep3meq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr4nfs3mft3mfu3mfv3mfw3mfz2w203k6o212m6m2dw2l2cq2l3t3m3u2l17s3r19m3m}'kerning'{cl{5kt4qw}201s{201sw}201t{201tw2wy2yy6q-t}201x{2wy2yy}2k{201tw}2w{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}2x{17ss5ts5os}2y{7qs4qy7rs5ky7mw5os5qx5ru17su5tu}'fof'-6o6t{17ss5ts5qs}7t{5os}3v{5qs}7p{17su5tu5qs}ck{5kt4qw}4l{5kt4qw}cm{5kt4qw}cn{5kt4qw}co{5kt4qw}cp{5kt4qw}6l{4qs5ks5ou5qw5ru17su5tu}17s{2ks}5q{ckvclvcmvcnvcovcpv4lv}5r{ckuclucmucnucoucpu4lu}5t{2ks}6p{4qs5ks5ou5qw5ru17su5tu}ek{4qs5ks5ou5qw5ru17su5tu}el{4qs5ks5ou5qw5ru17su5tu}em{4qs5ks5ou5qw5ru17su5tu}en{4qs5ks5ou5qw5ru17su5tu}eo{4qs5ks5ou5qw5ru17su5tu}ep{4qs5ks5ou5qw5ru17su5tu}es{5ks5qs4qs}et{4qs5ks5ou5qw5ru17su5tu}eu{4qs5ks5qw5ru17su5tu}ev{5ks5qs4qs}ex{17ss5ts5qs}6z{4qv5ks5ou5qw5ru17su5tu}fm{4qv5ks5ou5qw5ru17su5tu}fn{4qv5ks5ou5qw5ru17su5tu}fo{4qv5ks5ou5qw5ru17su5tu}fp{4qv5ks5ou5qw5ru17su5tu}fq{4qv5ks5ou5qw5ru17su5tu}7r{5os}fs{4qv5ks5ou5qw5ru17su5tu}ft{17su5tu5qs}fu{17su5tu5qs}fv{17su5tu5qs}fw{17su5tu5qs}}}"), "Times-Roman": e("{'widths'{k3n2q4ycx2l201n3m201o6o201s2l201t2l201u2l201w2w201x2w201y2w2k1t2l2l202m2n2n3m2o3m2p5n202q6o2r1m2s2l2t2l2u3m2v3s2w1t2x2l2y1t2z1w3k3m3l3m3m3m3n3m3o3m3p3m3q3m3r3m3s3m203t2l203u2l3v1w3w3s3x3s3y3s3z2w4k5w4l4s4m4m4n4m4o4s4p3x4q3r4r4s4s4s4t2l4u2r4v4s4w3x4x5t4y4s4z4s5k3r5l4s5m4m5n3r5o3x5p4s5q4s5r5y5s4s5t4s5u3x5v2l5w1w5x2l5y2z5z3m6k2l6l2w6m3m6n2w6o3m6p2w6q2l6r3m6s3m6t1w6u1w6v3m6w1w6x4y6y3m6z3m7k3m7l3m7m2l7n2r7o1w7p3m7q3m7r4s7s3m7t3m7u2w7v3k7w1o7x3k7y3q202l3mcl4sal2lam3man3mao3map3mar3mas2lat4wau1vav3maw3say4waz2lbk2sbl3s'fof'6obo2lbp3mbq2xbr1tbs2lbu1zbv3mbz2wck4s202k3mcm4scn4sco4scp4scq5tcr4mcs3xct3xcu3xcv3xcw2l2m2tcy2lcz2ldl4sdm4sdn4sdo4sdp4sdq4sds4sdt4sdu4sdv4sdw4sdz3mek2wel2wem2wen2weo2wep2weq4mer2wes2wet2weu2wev2wew1wex1wey1wez1wfl3mfm3mfn3mfo3mfp3mfq3mfr3sfs3mft3mfu3mfv3mfw3mfz3m203k6o212m6m2dw2l2cq2l3t3m3u1w17s4s19m3m}'kerning'{cl{4qs5ku17sw5ou5qy5rw201ss5tw201ws}201s{201ss}201t{ckw4lwcmwcnwcowcpwclw4wu201ts}2k{201ts}2w{4qs5kw5os5qx5ru17sx5tx}2x{17sw5tw5ou5qu}2y{4qs5kw5os5qx5ru17sx5tx}'fof'-6o7t{ckuclucmucnucoucpu4lu5os5rs}3u{17su5tu5qs}3v{17su5tu5qs}7p{17sw5tw5qs}ck{4qs5ku17sw5ou5qy5rw201ss5tw201ws}4l{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cm{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cn{4qs5ku17sw5ou5qy5rw201ss5tw201ws}co{4qs5ku17sw5ou5qy5rw201ss5tw201ws}cp{4qs5ku17sw5ou5qy5rw201ss5tw201ws}6l{17su5tu5os5qw5rs}17s{2ktclvcmvcnvcovcpv4lv4wuckv}5o{ckwclwcmwcnwcowcpw4lw4wu}5q{ckyclycmycnycoycpy4ly4wu5ms}5r{cktcltcmtcntcotcpt4lt4ws}5t{2ktclvcmvcnvcovcpv4lv4wuckv}7q{cksclscmscnscoscps4ls}6p{17su5tu5qw5rs}ek{5qs5rs}el{17su5tu5os5qw5rs}em{17su5tu5os5qs5rs}en{17su5qs5rs}eo{5qs5rs}ep{17su5tu5os5qw5rs}es{5qs}et{17su5tu5qw5rs}eu{17su5tu5qs5rs}ev{5qs}6z{17sv5tv5os5qx5rs}fm{5os5qt5rs}fn{17sv5tv5os5qx5rs}fo{17sv5tv5os5qx5rs}fp{5os5qt5rs}fq{5os5qt5rs}7r{ckuclucmucnucoucpu4lu5os}fs{17sv5tv5os5qx5rs}ft{17ss5ts5qs}fu{17sw5tw5qs}fv{17sw5tw5qs}fw{17ss5ts5qs}fz{ckuclucmucnucoucpu4lu5os5rs}}}"), "Helvetica-Oblique": e("{'widths'{k3p2q4mcx1w201n3r201o6o201s1q201t1q201u1q201w2l201x2l201y2l2k1w2l1w202m2n2n3r2o3r2p5t202q6o2r1n2s2l2t2l2u2r2v3u2w1w2x2l2y1w2z1w3k3r3l3r3m3r3n3r3o3r3p3r3q3r3r3r3s3r203t2l203u2l3v1w3w3u3x3u3y3u3z3r4k6p4l4m4m4m4n4s4o4s4p4m4q3x4r4y4s4s4t1w4u3m4v4m4w3r4x5n4y4s4z4y5k4m5l4y5m4s5n4m5o3x5p4s5q4m5r5y5s4m5t4m5u3x5v1w5w1w5x1w5y2z5z3r6k2l6l3r6m3r6n3m6o3r6p3r6q1w6r3r6s3r6t1q6u1q6v3m6w1q6x5n6y3r6z3r7k3r7l3r7m2l7n3m7o1w7p3r7q3m7r4s7s3m7t3m7u3m7v2l7w1u7x2l7y3u202l3rcl4mal2lam3ran3rao3rap3rar3ras2lat4tau2pav3raw3uay4taz2lbk2sbl3u'fof'6obo2lbp3rbr1wbs2lbu2obv3rbz3xck4m202k3rcm4mcn4mco4mcp4mcq6ocr4scs4mct4mcu4mcv4mcw1w2m2ncy1wcz1wdl4sdm4ydn4ydo4ydp4ydq4yds4ydt4sdu4sdv4sdw4sdz3xek3rel3rem3ren3reo3rep3req5ter3mes3ret3reu3rev3rew1wex1wey1wez1wfl3rfm3rfn3rfo3rfp3rfq3rfr3ufs3xft3rfu3rfv3rfw3rfz3m203k6o212m6o2dw2l2cq2l3t3r3u1w17s4m19m3r}'kerning'{5q{4wv}cl{4qs5kw5ow5qs17sv5tv}201t{2wu4w1k2yu}201x{2wu4wy2yu}17s{2ktclucmucnu4otcpu4lu4wycoucku}2w{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}2x{17sy5ty5oy5qs}2y{7qs4qz5k1m17sy5ow5qx5rsfsu5ty7tufzu}'fof'-6o7p{17sv5tv5ow}ck{4qs5kw5ow5qs17sv5tv}4l{4qs5kw5ow5qs17sv5tv}cm{4qs5kw5ow5qs17sv5tv}cn{4qs5kw5ow5qs17sv5tv}co{4qs5kw5ow5qs17sv5tv}cp{4qs5kw5ow5qs17sv5tv}6l{17sy5ty5ow}do{17st5tt}4z{17st5tt}7s{fst}dm{17st5tt}dn{17st5tt}5o{ckwclwcmwcnwcowcpw4lw4wv}dp{17st5tt}dq{17st5tt}7t{5ow}ds{17st5tt}5t{2ktclucmucnu4otcpu4lu4wycoucku}fu{17sv5tv5ow}6p{17sy5ty5ow5qs}ek{17sy5ty5ow}el{17sy5ty5ow}em{17sy5ty5ow}en{5ty}eo{17sy5ty5ow}ep{17sy5ty5ow}es{17sy5ty5qs}et{17sy5ty5ow5qs}eu{17sy5ty5ow5qs}ev{17sy5ty5ow5qs}6z{17sy5ty5ow5qs}fm{17sy5ty5ow5qs}fn{17sy5ty5ow5qs}fo{17sy5ty5ow5qs}fp{17sy5ty5qs}fq{17sy5ty5ow5qs}7r{5ow}fs{17sy5ty5ow5qs}ft{17sv5tv5ow}7m{5ow}fv{17sv5tv5ow}fw{17sv5tv5ow}}}") } };
t.events.push(["addFonts", function (t) { var e, n, i, o, a, u = "Unicode"; for (n in t.fonts) t.fonts.hasOwnProperty(n) && (e = t.fonts[n], i = s[u][e.PostScriptName], i && (o = e.metadata[u] ? e.metadata[u] : e.metadata[u] = {}, o.widths = i.widths, o.kerning = i.kerning), a = r[u][e.PostScriptName], a && (o = e.metadata[u] ? e.metadata[u] : e.metadata[u] = {}, o.encoding = a, a.codePages && a.codePages.length && (e.encoding = a.codePages[0]))) }])
}(n.API), function (t) { "use strict"; t.putTotalPages = function (t) { for (var e = new RegExp(t, "g"), n = 1; n <= this.internal.getNumberOfPages() ; n++) for (var r = 0; r < this.internal.pages[n].length; r++) this.internal.pages[n][r] = this.internal.pages[n][r].replace(e, this.internal.getNumberOfPages()); return this } }(n.API), function (t) { "use strict"; if (t.URL = t.URL || t.webkitURL, t.Blob && t.URL) try { return void new Blob } catch (e) { } var n = t.BlobBuilder || t.WebKitBlobBuilder || t.MozBlobBuilder || function (t) { var e = function (t) { return Object.prototype.toString.call(t).match(/^\[object\s(.*)\]$/)[1] }, n = function () { this.data = [] }, r = function (t, e, n) { this.data = t, this.size = t.length, this.type = e, this.encoding = n }, s = n.prototype, i = r.prototype, o = t.FileReaderSync, a = function (t) { this.code = this[this.name = t] }, u = "NOT_FOUND_ERR SECURITY_ERR ABORT_ERR NOT_READABLE_ERR ENCODING_ERR NO_MODIFICATION_ALLOWED_ERR INVALID_STATE_ERR SYNTAX_ERR".split(" "), c = u.length, l = t.URL || t.webkitURL || t, f = l.createObjectURL, d = l.revokeObjectURL, h = l, p = t.btoa, m = t.atob, w = t.ArrayBuffer, g = t.Uint8Array, y = /^[\w-]+:\/*\[?[\w\.:-]+\]?(?::[0-9]+)?/; for (r.fake = i.fake = !0; c--;) a.prototype[u[c]] = c + 1; return l.createObjectURL || (h = t.URL = function (t) { var e, n = document.createElementNS("http://www.w3.org/1999/xhtml", "a"); return n.href = t, "origin" in n || ("data:" === n.protocol.toLowerCase() ? n.origin = null : (e = t.match(y), n.origin = e && e[1])), n }), h.createObjectURL = function (t) { var e, n = t.type; return null === n && (n = "application/octet-stream"), t instanceof r ? (e = "data:" + n, "base64" === t.encoding ? e + ";base64," + t.data : "URI" === t.encoding ? e + "," + decodeURIComponent(t.data) : p ? e + ";base64," + p(t.data) : e + "," + encodeURIComponent(t.data)) : f ? f.call(l, t) : void 0 }, h.revokeObjectURL = function (t) { "data:" !== t.substring(0, 5) && d && d.call(l, t) }, s.append = function (t) { var n = this.data; if (g && (t instanceof w || t instanceof g)) { for (var s = "", i = new g(t), u = 0, c = i.length; c > u; u++) s += String.fromCharCode(i[u]); n.push(s) } else if ("Blob" === e(t) || "File" === e(t)) { if (!o) throw new a("NOT_READABLE_ERR"); var l = new o; n.push(l.readAsBinaryString(t)) } else t instanceof r ? "base64" === t.encoding && m ? n.push(m(t.data)) : "URI" === t.encoding ? n.push(decodeURIComponent(t.data)) : "raw" === t.encoding && n.push(t.data) : ("string" != typeof t && (t += ""), n.push(unescape(encodeURIComponent(t)))) }, s.getBlob = function (t) { return arguments.length || (t = null), new r(this.data.join(""), t, "raw") }, s.toString = function () { return "[object BlobBuilder]" }, i.slice = function (t, e, n) { var s = arguments.length; return 3 > s && (n = null), new r(this.data.slice(t, s > 1 ? e : this.data.length), n, this.encoding) }, i.toString = function () { return "[object Blob]" }, i.close = function () { this.size = 0, delete this.data }, n }(t); t.Blob = function (t, e) { var r = e ? e.type || "" : "", s = new n; if (t) for (var i = 0, o = t.length; o > i; i++) s.append(t[i]); return s.getBlob(r) } }("undefined" != typeof self && self || "undefined" != typeof window && window || this.content || this); var r = r || "undefined" != typeof navigator && navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator) || function (t) { "use strict"; if ("undefined" == typeof navigator || !/MSIE [1-9]\./.test(navigator.userAgent)) { var e = t.document, n = function () { return t.URL || t.webkitURL || t }, r = e.createElementNS("http://www.w3.org/1999/xhtml", "a"), s = "download" in r, i = function (n) { var r = e.createEvent("MouseEvents"); r.initMouseEvent("click", !0, !1, t, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, null), n.dispatchEvent(r) }, o = t.webkitRequestFileSystem, a = t.requestFileSystem || o || t.mozRequestFileSystem, u = function (e) { (t.setImmediate || t.setTimeout)(function () { throw e }, 0) }, c = "application/octet-stream", l = 0, f = 10, d = function (e) { var r = function () { "string" == typeof e ? n().revokeObjectURL(e) : e.remove() }; t.chrome ? r() : setTimeout(r, f) }, h = function (t, e, n) { e = [].concat(e); for (var r = e.length; r--;) { var s = t["on" + e[r]]; if ("function" == typeof s) try { s.call(t, n || t) } catch (i) { u(i) } } }, p = function (e, u) { var f, p, m, w = this, g = e.type, y = !1, v = function () { h(w, "writestart progress write writeend".split(" ")) }, b = function () { if ((y || !f) && (f = n().createObjectURL(e)), p) p.location.href = f; else { var r = t.open(f, "_blank"); void 0 == r && "undefined" != typeof safari && (t.location.href = f) } w.readyState = w.DONE, v(), d(f) }, q = function (t) { return function () { return w.readyState !== w.DONE ? t.apply(this, arguments) : void 0 } }, x = { create: !0, exclusive: !1 }; return w.readyState = w.INIT, u || (u = "download"), s ? (f = n().createObjectURL(e), r.href = f, r.download = u, i(r), w.readyState = w.DONE, v(), void d(f)) : (t.chrome && g && g !== c && (m = e.slice || e.webkitSlice, e = m.call(e, 0, e.size, c), y = !0), o && "download" !== u && (u += ".download"), (g === c || o) && (p = t), a ? (l += e.size, void a(t.TEMPORARY, l, q(function (t) { t.root.getDirectory("saved", x, q(function (t) { var n = function () { t.getFile(u, x, q(function (t) { t.createWriter(q(function (n) { n.onwriteend = function (e) { p.location.href = t.toURL(), w.readyState = w.DONE, h(w, "writeend", e), d(t) }, n.onerror = function () { var t = n.error; t.code !== t.ABORT_ERR && b() }, "writestart progress write abort".split(" ").forEach(function (t) { n["on" + t] = w["on" + t] }), n.write(e), w.abort = function () { n.abort(), w.readyState = w.DONE }, w.readyState = w.WRITING }), b) }), b) }; t.getFile(u, { create: !1 }, q(function (t) { t.remove(), n() }), q(function (t) { t.code === t.NOT_FOUND_ERR ? n() : b() })) }), b) }), b)) : void b()) }, m = p.prototype, w = function (t, e) { return new p(t, e) }; return m.abort = function () { var t = this; t.readyState = t.DONE, h(t, "abort") }, m.readyState = m.INIT = 0, m.WRITING = 1, m.DONE = 2, m.error = m.onwritestart = m.onprogress = m.onwrite = m.onabort = m.onerror = m.onwriteend = null, w } }("undefined" != typeof self && self || "undefined" != typeof window && window || this.content); "undefined" != typeof module && null !== module && (module.exports = r), void function (t, e) { "object" == typeof module ? module.exports = e() : t.adler32cs = e() }(n, function () { var t = "function" == typeof ArrayBuffer && "function" == typeof Uint8Array, e = null, n = function () { if (!t) return function () { return !1 }; try { var n = require("buffer"); "function" == typeof n.Buffer && (e = n.Buffer) } catch (r) { } return function (t) { return t instanceof ArrayBuffer || null !== e && t instanceof e } }(), r = function () { return null !== e ? function (t) { return new e(t, "utf8").toString("binary") } : function (t) { return unescape(encodeURIComponent(t)) } }(), s = 65521, i = function (t, e) { for (var n = 65535 & t, r = t >>> 16, i = 0, o = e.length; o > i; i++) n = (n + (255 & e.charCodeAt(i))) % s, r = (r + n) % s; return (r << 16 | n) >>> 0 }, o = function (t, e) { for (var n = 65535 & t, r = t >>> 16, i = 0, o = e.length; o > i; i++) n = (n + e[i]) % s, r = (r + n) % s; return (r << 16 | n) >>> 0 }, a = {}, u = a.Adler32 = function () { var e = function (t) { if (!(this instanceof e)) throw new TypeError("Constructor cannot called be as a function."); if (!isFinite(t = null == t ? 1 : +t)) throw new Error("First arguments needs to be a finite number."); this.checksum = t >>> 0 }, s = e.prototype = {}; return s.constructor = e, e.from = function (t) { return t.prototype = s, t }(function (t) { if (!(this instanceof e)) throw new TypeError("Constructor cannot called be as a function."); if (null == t) throw new Error("First argument needs to be a string."); this.checksum = i(1, t.toString()) }), e.fromUtf8 = function (t) { return t.prototype = s, t }(function (t) { if (!(this instanceof e)) throw new TypeError("Constructor cannot called be as a function."); if (null == t) throw new Error("First argument needs to be a string."); var n = r(t.toString()); this.checksum = i(1, n) }), t && (e.fromBuffer = function (t) { return t.prototype = s, t }(function (t) { if (!(this instanceof e)) throw new TypeError("Constructor cannot called be as a function."); if (!n(t)) throw new Error("First argument needs to be ArrayBuffer."); var r = new Uint8Array(t); return this.checksum = o(1, r) })), s.update = function (t) { if (null == t) throw new Error("First argument needs to be a string."); return t = t.toString(), this.checksum = i(this.checksum, t) }, s.updateUtf8 = function (t) { if (null == t) throw new Error("First argument needs to be a string."); var e = r(t.toString()); return this.checksum = i(this.checksum, e) }, t && (s.updateBuffer = function (t) { if (!n(t)) throw new Error("First argument needs to be ArrayBuffer."); var e = new Uint8Array(t); return this.checksum = o(this.checksum, e) }), s.clone = function () { return new u(this.checksum) }, e }(); return a.from = function (t) { if (null == t) throw new Error("First argument needs to be a string."); return i(1, t.toString()) }, a.fromUtf8 = function (t) { if (null == t) throw new Error("First argument needs to be a string."); var e = r(t.toString()); return i(1, e) }, t && (a.fromBuffer = function (t) { if (!n(t)) throw new Error("First argument need to be ArrayBuffer."); var e = new Uint8Array(t); return o(1, e) }), a }); var s = function () { function t() { function t(t) { var e, n, s, i, a, u, c = r.dyn_tree, l = r.stat_desc.static_tree, f = r.stat_desc.extra_bits, h = r.stat_desc.extra_base, p = r.stat_desc.max_length, m = 0; for (i = 0; o >= i; i++) t.bl_count[i] = 0; for (c[2 * t.heap[t.heap_max] + 1] = 0, e = t.heap_max + 1; d > e; e++) n = t.heap[e], i = c[2 * c[2 * n + 1] + 1] + 1, i > p && (i = p, m++), c[2 * n + 1] = i, n > r.max_code || (t.bl_count[i]++, a = 0, n >= h && (a = f[n - h]), u = c[2 * n], t.opt_len += u * (i + a), l && (t.static_len += u * (l[2 * n + 1] + a))); if (0 !== m) { do { for (i = p - 1; 0 === t.bl_count[i];) i--; t.bl_count[i]--, t.bl_count[i + 1] += 2, t.bl_count[p]--, m -= 2 } while (m > 0); for (i = p; 0 !== i; i--) for (n = t.bl_count[i]; 0 !== n;) s = t.heap[--e], s > r.max_code || (c[2 * s + 1] != i && (t.opt_len += (i - c[2 * s + 1]) * c[2 * s], c[2 * s + 1] = i), n--) } } function e(t, e) { var n = 0; do n |= 1 & t, t >>>= 1, n <<= 1; while (--e > 0); return n >>> 1 } function n(t, n, r) { var s, i, a, u = [], c = 0; for (s = 1; o >= s; s++) u[s] = c = c + r[s - 1] << 1; for (i = 0; n >= i; i++) a = t[2 * i + 1], 0 !== a && (t[2 * i] = e(u[a]++, a)) } var r = this; r.build_tree = function (e) { var s, i, o, a = r.dyn_tree, u = r.stat_desc.static_tree, c = r.stat_desc.elems, l = -1; for (e.heap_len = 0, e.heap_max = d, s = 0; c > s; s++) 0 !== a[2 * s] ? (e.heap[++e.heap_len] = l = s, e.depth[s] = 0) : a[2 * s + 1] = 0; for (; e.heap_len < 2;) o = e.heap[++e.heap_len] = 2 > l ? ++l : 0, a[2 * o] = 1, e.depth[o] = 0, e.opt_len--, u && (e.static_len -= u[2 * o + 1]); for (r.max_code = l, s = Math.floor(e.heap_len / 2) ; s >= 1; s--) e.pqdownheap(a, s); o = c; do s = e.heap[1], e.heap[1] = e.heap[e.heap_len--], e.pqdownheap(a, 1), i = e.heap[1], e.heap[--e.heap_max] = s, e.heap[--e.heap_max] = i, a[2 * o] = a[2 * s] + a[2 * i], e.depth[o] = Math.max(e.depth[s], e.depth[i]) + 1, a[2 * s + 1] = a[2 * i + 1] = o, e.heap[1] = o++, e.pqdownheap(a, 1); while (e.heap_len >= 2); e.heap[--e.heap_max] = e.heap[1], t(e), n(a, r.max_code, e.bl_count) } } function e(t, e, n, r, s) { var i = this; i.static_tree = t, i.extra_bits = e, i.extra_base = n, i.elems = r, i.max_length = s } function n(t, e, n, r, s) { var i = this; i.good_length = t, i.max_lazy = e, i.nice_length = n, i.max_chain = r, i.func = s } function r(t, e, n, r) { var s = t[2 * e], i = t[2 * n]; return i > s || s == i && r[e] <= r[n] } function s() { function n() { var t; for (Te = 2 * Ce, Be[Pe - 1] = 0, t = 0; Pe - 1 > t; t++) Be[t] = 0; Je = N[Xe].max_lazy, Ke = N[Xe].good_length, Qe = N[Xe].nice_length, Ve = N[Xe].max_chain, Me = 0, Ue = 0, Ge = 0, Ne = We = Z - 1, je = 0, Oe = 0 } function s() { var t; for (t = 0; f > t; t++) $e[2 * t] = 0; for (t = 0; a > t; t++) Ze[2 * t] = 0; for (t = 0; u > t; t++) tn[2 * t] = 0; $e[2 * h] = 1, en.opt_len = en.static_len = 0, un = ln = 0 } function i() { nn.dyn_tree = $e, nn.stat_desc = e.static_l_desc, rn.dyn_tree = Ze, rn.stat_desc = e.static_d_desc, sn.dyn_tree = tn, sn.stat_desc = e.static_bl_desc, dn = 0, hn = 0, fn = 8, s() } function o(t, e) { var n, r, s = -1, i = t[1], o = 0, a = 7, u = 4; for (0 === i && (a = 138, u = 3), t[2 * (e + 1) + 1] = 65535, n = 0; e >= n; n++) r = i, i = t[2 * (n + 1) + 1], ++o < a && r == i || (u > o ? tn[2 * r] += o : 0 !== r ? (r != s && tn[2 * r]++, tn[2 * m]++) : 10 >= o ? tn[2 * w]++ : tn[2 * g]++, o = 0, s = r, 0 === i ? (a = 138, u = 3) : r == i ? (a = 6, u = 3) : (a = 7, u = 4)) } function c() { var e; for (o($e, nn.max_code), o(Ze, rn.max_code), sn.build_tree(en), e = u - 1; e >= 3 && 0 === tn[2 * t.bl_order[e] + 1]; e--); return en.opt_len += 3 * (e + 1) + 5 + 5 + 4, e } function d(t) { en.pending_buf[en.pending++] = t } function p(t) { d(255 & t), d(t >>> 8 & 255) } function O(t) { d(t >> 8 & 255), d(255 & t & 255) } function ne(t, e) { var n, r = e; hn > y - r ? (n = t, dn |= n << hn & 65535, p(dn), dn = n >>> y - hn, hn += r - y) : (dn |= t << hn & 65535, hn += r) } function re(t, e) { var n = 2 * t; ne(65535 & e[n], 65535 & e[n + 1]) } function se(t, e) { var n, r, s = -1, i = t[1], o = 0, a = 7, u = 4; for (0 === i && (a = 138, u = 3), n = 0; e >= n; n++) if (r = i, i = t[2 * (n + 1) + 1], !(++o < a && r == i)) { if (u > o) { do re(r, tn); while (0 !== --o) } else 0 !== r ? (r != s && (re(r, tn), o--), re(m, tn), ne(o - 3, 2)) : 10 >= o ? (re(w, tn), ne(o - 3, 3)) : (re(g, tn), ne(o - 11, 7)); o = 0, s = r, 0 === i ? (a = 138, u = 3) : r == i ? (a = 6, u = 3) : (a = 7, u = 4) } } function ie(e, n, r) { var s; for (ne(e - 257, 5), ne(n - 1, 5), ne(r - 4, 4), s = 0; r > s; s++) ne(tn[2 * t.bl_order[s] + 1], 3); se($e, e - 1), se(Ze, n - 1) } function oe() { 16 == hn ? (p(dn), dn = 0, hn = 0) : hn >= 8 && (d(255 & dn), dn >>>= 8, hn -= 8) } function ae() { ne(Q << 1, 3), re(h, e.static_ltree), oe(), 9 > 1 + fn + 10 - hn && (ne(Q << 1, 3), re(h, e.static_ltree), oe()), fn = 7 } function ue(e, n) { var r, s, i; if (en.pending_buf[cn + 2 * un] = e >>> 8 & 255, en.pending_buf[cn + 2 * un + 1] = 255 & e, en.pending_buf[on + un] = 255 & n, un++, 0 === e ? $e[2 * n]++ : (ln++, e--, $e[2 * (t._length_code[n] + l + 1)]++, Ze[2 * t.d_code(e)]++), 0 === (8191 & un) && Xe > 2) { for (r = 8 * un, s = Me - Ue, i = 0; a > i; i++) r += Ze[2 * i] * (5 + t.extra_dbits[i]); if (r >>>= 3, ln < Math.floor(un / 2) && r < Math.floor(s / 2)) return !0 } return un == an - 1 } function ce(e, n) { var r, s, i, o, a = 0; if (0 !== un) do r = en.pending_buf[cn + 2 * a] << 8 & 65280 | 255 & en.pending_buf[cn + 2 * a + 1], s = 255 & en.pending_buf[on + a], a++, 0 === r ? re(s, e) : (i = t._length_code[s], re(i + l + 1, e), o = t.extra_lbits[i], 0 !== o && (s -= t.base_length[i], ne(s, o)), r--, i = t.d_code(r), re(i, n), o = t.extra_dbits[i], 0 !== o && (r -= t.base_dist[i], ne(r, o))); while (un > a); re(h, e), fn = e[2 * h + 1] } function le() { hn > 8 ? p(dn) : hn > 0 && d(255 & dn), dn = 0, hn = 0 } function fe(t, e, n) { le(), fn = 8, n && (p(e), p(~e)), en.pending_buf.set(ze.subarray(t, t + e), en.pending), en.pending += e } function de(t, e, n) { ne((K << 1) + (n ? 1 : 0), 3), fe(t, e, !0) } function he(t, n, r) { var i, o, a = 0; Xe > 0 ? (nn.build_tree(en), rn.build_tree(en), a = c(), i = en.opt_len + 3 + 7 >>> 3, o = en.static_len + 3 + 7 >>> 3, i >= o && (i = o)) : i = o = n + 5, i >= n + 4 && -1 != t ? de(t, n, r) : o == i ? (ne((Q << 1) + (r ? 1 : 0), 3), ce(e.static_ltree, e.static_dtree)) : (ne(($ << 1) + (r ? 1 : 0), 3), ie(nn.max_code + 1, rn.max_code + 1, a + 1), ce($e, Ze)), s(), r && le() } function pe(t) { he(Ue >= 0 ? Ue : -1, Me - Ue, t), Ue = Me, qe.flush_pending() } function me() { var t, e, n, r; do { if (r = Te - Ge - Me, 0 === r && 0 === Me && 0 === Ge) r = Ce; else if (-1 == r) r--; else if (Me >= Ce + Ce - ee) { ze.set(ze.subarray(Ce, Ce + Ce), 0), He -= Ce, Me -= Ce, Ue -= Ce, t = Pe, n = t; do e = 65535 & Be[--n], Be[n] = e >= Ce ? e - Ce : 0; while (0 !== --t); t = Ce, n = t; do e = 65535 & Ie[--n], Ie[n] = e >= Ce ? e - Ce : 0; while (0 !== --t); r += Ce } if (0 === qe.avail_in) return; t = qe.read_buf(ze, Me + Ge, r), Ge += t, Ge >= Z && (Oe = 255 & ze[Me], Oe = (Oe << De ^ 255 & ze[Me + 1]) & Fe) } while (ee > Ge && 0 !== qe.avail_in) } function we(t) { var e, n = 65535; for (n > ke - 5 && (n = ke - 5) ; ;) { if (1 >= Ge) { if (me(), 0 === Ge && t == k) return j; if (0 === Ge) break } if (Me += Ge, Ge = 0, e = Ue + n, (0 === Me || Me >= e) && (Ge = Me - e, Me = e, pe(!1), 0 === qe.avail_out)) return j; if (Me - Ue >= Ce - ee && (pe(!1), 0 === qe.avail_out)) return j } return pe(t == C), 0 === qe.avail_out ? t == C ? H : j : t == C ? G : M } function ge(t) { var e, n, r = Ve, s = Me, i = We, o = Me > Ce - ee ? Me - (Ce - ee) : 0, a = Qe, u = Ee, c = Me + te, l = ze[s + i - 1], f = ze[s + i]; We >= Ke && (r >>= 2), a > Ge && (a = Ge); do if (e = t, ze[e + i] == f && ze[e + i - 1] == l && ze[e] == ze[s] && ze[++e] == ze[s + 1]) { s += 2, e++; do; while (ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && ze[++s] == ze[++e] && c > s); if (n = te - (c - s), s = c - te, n > i) { if (He = t, i = n, n >= a) break; l = ze[s + i - 1], f = ze[s + i] } } while ((t = 65535 & Ie[t & u]) > o && 0 !== --r); return Ge >= i ? i : Ge } function ye(t) { for (var e, n = 0; ;) { if (ee > Ge) { if (me(), ee > Ge && t == k) return j; if (0 === Ge) break } if (Ge >= Z && (Oe = (Oe << De ^ 255 & ze[Me + (Z - 1)]) & Fe, n = 65535 & Be[Oe], Ie[Me & Ee] = Be[Oe], Be[Oe] = Me), 0 !== n && Ce - ee >= (Me - n & 65535) && Ye != q && (Ne = ge(n)), Ne >= Z) if (e = ue(Me - He, Ne - Z), Ge -= Ne, Je >= Ne && Ge >= Z) { Ne--; do Me++, Oe = (Oe << De ^ 255 & ze[Me + (Z - 1)]) & Fe, n = 65535 & Be[Oe], Ie[Me & Ee] = Be[Oe], Be[Oe] = Me; while (0 !== --Ne); Me++ } else Me += Ne, Ne = 0, Oe = 255 & ze[Me], Oe = (Oe << De ^ 255 & ze[Me + 1]) & Fe; else e = ue(0, 255 & ze[Me]), Ge--, Me++; if (e && (pe(!1), 0 === qe.avail_out)) return j } return pe(t == C), 0 === qe.avail_out ? t == C ? H : j : t == C ? G : M } function ve(t) { for (var e, n, r = 0; ;) { if (ee > Ge) { if (me(), ee > Ge && t == k) return j; if (0 === Ge) break } if (Ge >= Z && (Oe = (Oe << De ^ 255 & ze[Me + (Z - 1)]) & Fe, r = 65535 & Be[Oe], Ie[Me & Ee] = Be[Oe], Be[Oe] = Me), We = Ne, Le = He, Ne = Z - 1, 0 !== r && Je > We && Ce - ee >= (Me - r & 65535) && (Ye != q && (Ne = ge(r)), 5 >= Ne && (Ye == b || Ne == Z && Me - He > 4096) && (Ne = Z - 1)), We >= Z && We >= Ne) { n = Me + Ge - Z, e = ue(Me - 1 - Le, We - Z), Ge -= We - 1, We -= 2; do ++Me <= n && (Oe = (Oe << De ^ 255 & ze[Me + (Z - 1)]) & Fe, r = 65535 & Be[Oe], Ie[Me & Ee] = Be[Oe], Be[Oe] = Me); while (0 !== --We); if (je = 0, Ne = Z - 1, Me++, e && (pe(!1), 0 === qe.avail_out)) return j } else if (0 !== je) { if (e = ue(0, 255 & ze[Me - 1]), e && pe(!1), Me++, Ge--, 0 === qe.avail_out) return j } else je = 1, Me++, Ge-- } return 0 !== je && (e = ue(0, 255 & ze[Me - 1]), je = 0), pe(t == C), 0 === qe.avail_out ? t == C ? H : j : t == C ? G : M } function be(t) { return t.total_in = t.total_out = 0, t.msg = null, en.pending = 0, en.pending_out = 0, xe = J, Ae = k, i(), n(), S } var qe, xe, ke, _e, Ae, Ce, Se, Ee, ze, Te, Ie, Be, Oe, Pe, Re, Fe, De, Ue, Ne, Le, je, Me, He, Ge, We, Ve, Je, Xe, Ye, Ke, Qe, $e, Ze, tn, en = this, nn = new t, rn = new t, sn = new t; en.depth = []; var on, an, un, cn, ln, fn, dn, hn; en.bl_count = [], en.heap = [], $e = [], Ze = [], tn = [], en.pqdownheap = function (t, e) { for (var n = en.heap, s = n[e], i = e << 1; i <= en.heap_len && (i < en.heap_len && r(t, n[i + 1], n[i], en.depth) && i++, !r(t, s, n[i], en.depth)) ;) n[e] = n[i], e = i, i <<= 1; n[e] = s }, en.deflateInit = function (t, e, n, r, s, i) { return r || (r = Y), s || (s = R), i || (i = x), t.msg = null, e == v && (e = 6), 1 > s || s > P || r != Y || 9 > n || n > 15 || 0 > e || e > 9 || 0 > i || i > q ? T : (t.dstate = en, Se = n, Ce = 1 << Se, Ee = Ce - 1, Re = s + 7, Pe = 1 << Re, Fe = Pe - 1, De = Math.floor((Re + Z - 1) / Z), ze = new Uint8Array(2 * Ce), Ie = [], Be = [], an = 1 << s + 6, en.pending_buf = new Uint8Array(4 * an), ke = 4 * an, cn = Math.floor(an / 2), on = 3 * an, Xe = e, Ye = i, _e = 255 & r, be(t)) }, en.deflateEnd = function () { return xe != V && xe != J && xe != X ? T : (en.pending_buf = null, Be = null, Ie = null, ze = null, en.dstate = null, xe == J ? I : S) }, en.deflateParams = function (t, e, n) { var r = S; return e == v && (e = 6), 0 > e || e > 9 || 0 > n || n > q ? T : (N[Xe].func != N[e].func && 0 !== t.total_in && (r = t.deflate(_)), Xe != e && (Xe = e, Je = N[Xe].max_lazy, Ke = N[Xe].good_length, Qe = N[Xe].nice_length, Ve = N[Xe].max_chain), Ye = n, r) }, en.deflateSetDictionary = function (t, e, n) { var r, s = n, i = 0; if (!e || xe != V) return T; if (Z > s) return S; for (s > Ce - ee && (s = Ce - ee, i = n - s), ze.set(e.subarray(i, i + s), 0), Me = s, Ue = s, Oe = 255 & ze[0], Oe = (Oe << De ^ 255 & ze[1]) & Fe, r = 0; s - Z >= r; r++) Oe = (Oe << De ^ 255 & ze[r + (Z - 1)]) & Fe, Ie[r & Ee] = Be[Oe], Be[Oe] = r; return S }, en.deflate = function (t, e) { var n, r, s, i, o; if (e > C || 0 > e) return T; if (!t.next_out || !t.next_in && 0 !== t.avail_in || xe == X && e != C) return t.msg = L[z - T], T; if (0 === t.avail_out) return t.msg = L[z - B], B; if (qe = t, i = Ae, Ae = e, xe == V && (r = Y + (Se - 8 << 4) << 8, s = (Xe - 1 & 255) >> 1, s > 3 && (s = 3), r |= s << 6, 0 !== Me && (r |= W), r += 31 - r % 31, xe = J, O(r)), 0 !== en.pending) { if (qe.flush_pending(), 0 === qe.avail_out) return Ae = -1, S } else if (0 === qe.avail_in && i >= e && e != C) return qe.msg = L[z - B], B; if (xe == X && 0 !== qe.avail_in) return t.msg = L[z - B], B; if (0 !== qe.avail_in || 0 !== Ge || e != k && xe != X) { switch (o = -1, N[Xe].func) { case F: o = we(e); break; case D: o = ye(e); break; case U: o = ve(e) } if ((o == H || o == G) && (xe = X), o == j || o == H) return 0 === qe.avail_out && (Ae = -1), S; if (o == M) { if (e == _) ae(); else if (de(0, 0, !1), e == A) for (n = 0; Pe > n; n++) Be[n] = 0; if (qe.flush_pending(), 0 === qe.avail_out) return Ae = -1, S } } return e != C ? S : E } } function i() { var t = this; t.next_in_index = 0, t.next_out_index = 0, t.avail_in = 0, t.total_in = 0, t.avail_out = 0, t.total_out = 0 } var o = 15, a = 30, u = 19, c = 29, l = 256, f = l + 1 + c, d = 2 * f + 1, h = 256, p = 7, m = 16, w = 17, g = 18, y = 16, v = -1, b = 1, q = 2, x = 0, k = 0, _ = 1, A = 3, C = 4, S = 0, E = 1, z = 2, T = -2, I = -3, B = -5, O = [0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29]; t._length_code = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28], t.base_length = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, 64, 80, 96, 112, 128, 160, 192, 224, 0], t.base_dist = [0, 1, 2, 3, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576], t.d_code = function (t) { return 256 > t ? O[t] : O[256 + (t >>> 7)] }, t.extra_lbits = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0], t.extra_dbits = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13], t.extra_blbits = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7], t.bl_order = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15], e.static_ltree = [12, 8, 140, 8, 76, 8, 204, 8, 44, 8, 172, 8, 108, 8, 236, 8, 28, 8, 156, 8, 92, 8, 220, 8, 60, 8, 188, 8, 124, 8, 252, 8, 2, 8, 130, 8, 66, 8, 194, 8, 34, 8, 162, 8, 98, 8, 226, 8, 18, 8, 146, 8, 82, 8, 210, 8, 50, 8, 178, 8, 114, 8, 242, 8, 10, 8, 138, 8, 74, 8, 202, 8, 42, 8, 170, 8, 106, 8, 234, 8, 26, 8, 154, 8, 90, 8, 218, 8, 58, 8, 186, 8, 122, 8, 250, 8, 6, 8, 134, 8, 70, 8, 198, 8, 38, 8, 166, 8, 102, 8, 230, 8, 22, 8, 150, 8, 86, 8, 214, 8, 54, 8, 182, 8, 118, 8, 246, 8, 14, 8, 142, 8, 78, 8, 206, 8, 46, 8, 174, 8, 110, 8, 238, 8, 30, 8, 158, 8, 94, 8, 222, 8, 62, 8, 190, 8, 126, 8, 254, 8, 1, 8, 129, 8, 65, 8, 193, 8, 33, 8, 161, 8, 97, 8, 225, 8, 17, 8, 145, 8, 81, 8, 209, 8, 49, 8, 177, 8, 113, 8, 241, 8, 9, 8, 137, 8, 73, 8, 201, 8, 41, 8, 169, 8, 105, 8, 233, 8, 25, 8, 153, 8, 89, 8, 217, 8, 57, 8, 185, 8, 121, 8, 249, 8, 5, 8, 133, 8, 69, 8, 197, 8, 37, 8, 165, 8, 101, 8, 229, 8, 21, 8, 149, 8, 85, 8, 213, 8, 53, 8, 181, 8, 117, 8, 245, 8, 13, 8, 141, 8, 77, 8, 205, 8, 45, 8, 173, 8, 109, 8, 237, 8, 29, 8, 157, 8, 93, 8, 221, 8, 61, 8, 189, 8, 125, 8, 253, 8, 19, 9, 275, 9, 147, 9, 403, 9, 83, 9, 339, 9, 211, 9, 467, 9, 51, 9, 307, 9, 179, 9, 435, 9, 115, 9, 371, 9, 243, 9, 499, 9, 11, 9, 267, 9, 139, 9, 395, 9, 75, 9, 331, 9, 203, 9, 459, 9, 43, 9, 299, 9, 171, 9, 427, 9, 107, 9, 363, 9, 235, 9, 491, 9, 27, 9, 283, 9, 155, 9, 411, 9, 91, 9, 347, 9, 219, 9, 475, 9, 59, 9, 315, 9, 187, 9, 443, 9, 123, 9, 379, 9, 251, 9, 507, 9, 7, 9, 263, 9, 135, 9, 391, 9, 71, 9, 327, 9, 199, 9, 455, 9, 39, 9, 295, 9, 167, 9, 423, 9, 103, 9, 359, 9, 231, 9, 487, 9, 23, 9, 279, 9, 151, 9, 407, 9, 87, 9, 343, 9, 215, 9, 471, 9, 55, 9, 311, 9, 183, 9, 439, 9, 119, 9, 375, 9, 247, 9, 503, 9, 15, 9, 271, 9, 143, 9, 399, 9, 79, 9, 335, 9, 207, 9, 463, 9, 47, 9, 303, 9, 175, 9, 431, 9, 111, 9, 367, 9, 239, 9, 495, 9, 31, 9, 287, 9, 159, 9, 415, 9, 95, 9, 351, 9, 223, 9, 479, 9, 63, 9, 319, 9, 191, 9, 447, 9, 127, 9, 383, 9, 255, 9, 511, 9, 0, 7, 64, 7, 32, 7, 96, 7, 16, 7, 80, 7, 48, 7, 112, 7, 8, 7, 72, 7, 40, 7, 104, 7, 24, 7, 88, 7, 56, 7, 120, 7, 4, 7, 68, 7, 36, 7, 100, 7, 20, 7, 84, 7, 52, 7, 116, 7, 3, 8, 131, 8, 67, 8, 195, 8, 35, 8, 163, 8, 99, 8, 227, 8], e.static_dtree = [0, 5, 16, 5, 8, 5, 24, 5, 4, 5, 20, 5, 12, 5, 28, 5, 2, 5, 18, 5, 10, 5, 26, 5, 6, 5, 22, 5, 14, 5, 30, 5, 1, 5, 17, 5, 9, 5, 25, 5, 5, 5, 21, 5, 13, 5, 29, 5, 3, 5, 19, 5, 11, 5, 27, 5, 7, 5, 23, 5], e.static_l_desc = new e(e.static_ltree, t.extra_lbits, l + 1, f, o), e.static_d_desc = new e(e.static_dtree, t.extra_dbits, 0, a, o), e.static_bl_desc = new e(null, t.extra_blbits, 0, u, p); var P = 9, R = 8, F = 0, D = 1, U = 2, N = [new n(0, 0, 0, 0, F), new n(4, 4, 8, 4, D), new n(4, 5, 16, 8, D), new n(4, 6, 32, 32, D), new n(4, 4, 16, 16, U), new n(8, 16, 32, 32, U), new n(8, 16, 128, 128, U), new n(8, 32, 128, 256, U), new n(32, 128, 258, 1024, U), new n(32, 258, 258, 4096, U)], L = ["need dictionary", "stream end", "", "", "stream error", "data error", "", "buffer error", "", ""], j = 0, M = 1, H = 2, G = 3, W = 32, V = 42, J = 113, X = 666, Y = 8, K = 0, Q = 1, $ = 2, Z = 3, te = 258, ee = te + Z + 1; return i.prototype = { deflateInit: function (t, e) { var n = this; return n.dstate = new s, e || (e = o), n.dstate.deflateInit(n, t, e) }, deflate: function (t) { var e = this; return e.dstate ? e.dstate.deflate(e, t) : T }, deflateEnd: function () { var t = this; if (!t.dstate) return T; var e = t.dstate.deflateEnd(); return t.dstate = null, e }, deflateParams: function (t, e) { var n = this; return n.dstate ? n.dstate.deflateParams(n, t, e) : T }, deflateSetDictionary: function (t, e) { var n = this; return n.dstate ? n.dstate.deflateSetDictionary(n, t, e) : T }, read_buf: function (t, e, n) { var r = this, s = r.avail_in; return s > n && (s = n), 0 === s ? 0 : (r.avail_in -= s, t.set(r.next_in.subarray(r.next_in_index, r.next_in_index + s), e), r.next_in_index += s, r.total_in += s, s) }, flush_pending: function () { var t = this, e = t.dstate.pending; e > t.avail_out && (e = t.avail_out), 0 !== e && (t.next_out.set(t.dstate.pending_buf.subarray(t.dstate.pending_out, t.dstate.pending_out + e), t.next_out_index), t.next_out_index += e, t.dstate.pending_out += e, t.total_out += e, t.avail_out -= e, t.dstate.pending -= e, 0 === t.dstate.pending && (t.dstate.pending_out = 0)) } }, function (t) { var e = this, n = new i, r = 512, s = k, o = new Uint8Array(r); "undefined" == typeof t && (t = v), n.deflateInit(t), n.next_out = o, e.append = function (t, e) { var i, a, u = [], c = 0, l = 0, f = 0; if (t.length) { n.next_in_index = 0, n.next_in = t, n.avail_in = t.length; do { if (n.next_out_index = 0, n.avail_out = r, i = n.deflate(s), i != S) throw "deflating: " + n.msg; n.next_out_index && u.push(n.next_out_index == r ? new Uint8Array(o) : new Uint8Array(o.subarray(0, n.next_out_index))), f += n.next_out_index, e && n.next_in_index > 0 && n.next_in_index != c && (e(n.next_in_index), c = n.next_in_index) } while (n.avail_in > 0 || 0 === n.avail_out); return a = new Uint8Array(f), u.forEach(function (t) { a.set(t, l), l += t.length }), a } }, e.flush = function () { var t, e, s = [], i = 0, a = 0; do { if (n.next_out_index = 0, n.avail_out = r, t = n.deflate(C), t != E && t != S) throw "deflating: " + n.msg; r - n.avail_out > 0 && s.push(new Uint8Array(o.subarray(0, n.next_out_index))), a += n.next_out_index } while (n.avail_in > 0 || 0 === n.avail_out); return n.deflateEnd(), e = new Uint8Array(a), s.forEach(function (t) { e.set(t, i), i += t.length }), e } } }(this); !function (t) {
var e; e = function () {
function e(t) { var e, n, r, s, i, o, a, u, c, l, f, d, h, p, m; for (this.data = t, this.pos = 8, this.palette = [], this.imgData = [], this.transparency = {}, this.animation = null, this.text = {}, o = null; ;) { switch (e = this.readUInt32(), l = function () { var t, e; for (e = [], a = t = 0; 4 > t; a = ++t) e.push(String.fromCharCode(this.data[this.pos++])); return e }.call(this).join("")) { case "IHDR": this.width = this.readUInt32(), this.height = this.readUInt32(), this.bits = this.data[this.pos++], this.colorType = this.data[this.pos++], this.compressionMethod = this.data[this.pos++], this.filterMethod = this.data[this.pos++], this.interlaceMethod = this.data[this.pos++]; break; case "acTL": this.animation = { numFrames: this.readUInt32(), numPlays: this.readUInt32() || 1 / 0, frames: [] }; break; case "PLTE": this.palette = this.read(e); break; case "fcTL": o && this.animation.frames.push(o), this.pos += 4, o = { width: this.readUInt32(), height: this.readUInt32(), xOffset: this.readUInt32(), yOffset: this.readUInt32() }, i = this.readUInt16(), s = this.readUInt16() || 100, o.delay = 1e3 * i / s, o.disposeOp = this.data[this.pos++], o.blendOp = this.data[this.pos++], o.data = []; break; case "IDAT": case "fdAT": for ("fdAT" === l && (this.pos += 4, e -= 4), t = (null != o ? o.data : void 0) || this.imgData, a = h = 0; e >= 0 ? e > h : h > e; a = e >= 0 ? ++h : --h) t.push(this.data[this.pos++]); break; case "tRNS": switch (this.transparency = {}, this.colorType) { case 3: if (r = this.palette.length / 3, this.transparency.indexed = this.read(e), this.transparency.indexed.length > r) throw new Error("More transparent colors than palette size"); if (f = r - this.transparency.indexed.length, f > 0) for (a = p = 0; f >= 0 ? f > p : p > f; a = f >= 0 ? ++p : --p) this.transparency.indexed.push(255); break; case 0: this.transparency.grayscale = this.read(e)[0]; break; case 2: this.transparency.rgb = this.read(e) } break; case "tEXt": d = this.read(e), u = d.indexOf(0), c = String.fromCharCode.apply(String, d.slice(0, u)), this.text[c] = String.fromCharCode.apply(String, d.slice(u + 1)); break; case "IEND": return o && this.animation.frames.push(o), this.colors = function () { switch (this.colorType) { case 0: case 3: case 4: return 1; case 2: case 6: return 3 } }.call(this), this.hasAlphaChannel = 4 === (m = this.colorType) || 6 === m, n = this.colors + (this.hasAlphaChannel ? 1 : 0), this.pixelBitlength = this.bits * n, this.colorSpace = function () { switch (this.colors) { case 1: return "DeviceGray"; case 3: return "DeviceRGB" } }.call(this), void (this.imgData = new Uint8Array(this.imgData)); default: this.pos += e } if (this.pos += 4, this.pos > this.data.length) throw new Error("Incomplete or corrupt PNG file") } } var n, r, s, i, a, u, c, l; e.load = function (t, n, r) { var s; return "function" == typeof n && (r = n), s = new XMLHttpRequest, s.open("GET", t, !0), s.responseType = "arraybuffer", s.onload = function () { var t, i; return t = new Uint8Array(s.response || s.mozResponseArrayBuffer), i = new e(t), "function" == typeof (null != n ? n.getContext : void 0) && i.render(n), "function" == typeof r ? r(i) : void 0 }, s.send(null) }, i = 0, s = 1, a = 2, r = 0, n = 1, e.prototype.read = function (t) { var e, n, r; for (r = [], e = n = 0; t >= 0 ? t > n : n > t; e = t >= 0 ? ++n : --n) r.push(this.data[this.pos++]); return r }, e.prototype.readUInt32 = function () { var t, e, n, r; return t = this.data[this.pos++] << 24, e = this.data[this.pos++] << 16, n = this.data[this.pos++] << 8, r = this.data[this.pos++], t | e | n | r }, e.prototype.readUInt16 = function () { var t, e; return t = this.data[this.pos++] << 8, e = this.data[this.pos++], t | e }, e.prototype.decodePixels = function (t) { var e, n, r, s, i, a, u, c, l, f, d, h, p, m, w, g, y, v, b, q, x, k, _; if (null == t && (t = this.imgData), 0 === t.length) return new Uint8Array(0); for (t = new o(t), t = t.getBytes(), h = this.pixelBitlength / 8, g = h * this.width, p = new Uint8Array(g * this.height), a = t.length, w = 0, m = 0, n = 0; a > m;) { switch (t[m++]) { case 0: for (s = b = 0; g > b; s = b += 1) p[n++] = t[m++]; break; case 1: for (s = q = 0; g > q; s = q += 1) e = t[m++], i = h > s ? 0 : p[n - h], p[n++] = (e + i) % 256; break; case 2: for (s = x = 0; g > x; s = x += 1) e = t[m++], r = (s - s % h) / h, y = w && p[(w - 1) * g + r * h + s % h], p[n++] = (y + e) % 256; break; case 3: for (s = k = 0; g > k; s = k += 1) e = t[m++], r = (s - s % h) / h, i = h > s ? 0 : p[n - h], y = w && p[(w - 1) * g + r * h + s % h], p[n++] = (e + Math.floor((i + y) / 2)) % 256; break; case 4: for (s = _ = 0; g > _; s = _ += 1) e = t[m++], r = (s - s % h) / h, i = h > s ? 0 : p[n - h], 0 === w ? y = v = 0 : (y = p[(w - 1) * g + r * h + s % h], v = r && p[(w - 1) * g + (r - 1) * h + s % h]), u = i + y - v, c = Math.abs(u - i), f = Math.abs(u - y), d = Math.abs(u - v), l = f >= c && d >= c ? i : d >= f ? y : v, p[n++] = (e + l) % 256; break; default: throw new Error("Invalid filter algorithm: " + t[m - 1]) } w++ } return p }, e.prototype.decodePalette = function () { var t, e, n, r, s, i, o, a, u, c; for (r = this.palette, o = this.transparency.indexed || [], i = new Uint8Array((o.length || 0) + r.length), s = 0, n = r.length, t = 0, e = a = 0, u = r.length; u > a; e = a += 3) i[s++] = r[e], i[s++] = r[e + 1], i[s++] = r[e + 2], i[s++] = null != (c = o[t++]) ? c : 255; return i }, e.prototype.copyToImageData = function (t, e) { var n, r, s, i, o, a, u, c, l, f, d; if (r = this.colors, l = null, n = this.hasAlphaChannel, this.palette.length && (l = null != (d = this._decodedPalette) ? d : this._decodedPalette = this.decodePalette(), r = 4, n = !0), s = t.data || t, c = s.length, o = l || e, i = a = 0, 1 === r) for (; c > i;) u = l ? 4 * e[i / 4] : a, f = o[u++], s[i++] = f, s[i++] = f, s[i++] = f, s[i++] = n ? o[u++] : 255, a = u; else for (; c > i;) u = l ? 4 * e[i / 4] : a, s[i++] = o[u++], s[i++] = o[u++], s[i++] = o[u++], s[i++] = n ? o[u++] : 255, a = u }, e.prototype.decode = function () { var t; return t = new Uint8Array(this.width * this.height * 4), this.copyToImageData(t, this.decodePixels()), t }; try { c = t.document.createElement("canvas"), l = c.getContext("2d") } catch (f) { return -1 } return u = function (t) { var e; return l.width = t.width, l.height = t.height, l.clearRect(0, 0, t.width, t.height), l.putImageData(t, 0, 0), e = new Image, e.src = c.toDataURL(), e }, e.prototype.decodeFrames = function (t) { var e, n, r, s, i, o, a, c; if (this.animation) { for (a = this.animation.frames, c = [], n = i = 0, o = a.length; o > i; n = ++i) e = a[n], r = t.createImageData(e.width, e.height), s = this.decodePixels(new Uint8Array(e.data)), this.copyToImageData(r, s), e.imageData = r, c.push(e.image = u(r)); return c } }, e.prototype.renderFrame = function (t, e) { var n, i, o; return i = this.animation.frames, n = i[e], o = i[e - 1], 0 === e && t.clearRect(0, 0, this.width, this.height), (null != o ? o.disposeOp : void 0) === s ? t.clearRect(o.xOffset, o.yOffset, o.width, o.height) : (null != o ? o.disposeOp : void 0) === a && t.putImageData(o.imageData, o.xOffset, o.yOffset), n.blendOp === r && t.clearRect(n.xOffset, n.yOffset, n.width, n.height), t.drawImage(n.image, n.xOffset, n.yOffset) }, e.prototype.animate = function (t) {
var e, n, r, s, i, o, a = this; return n = 0, o = this.animation, s = o.numFrames, r = o.frames, i = o.numPlays, (e = function () {
var o, u; return o = n++ % s, u = r[o], a.renderFrame(t, o), s > 1 && i > n / s ? a.animation._timeout = setTimeout(e, u.delay) : void 0
})()
}, e.prototype.stopAnimation = function () { var t; return clearTimeout(null != (t = this.animation) ? t._timeout : void 0) }, e.prototype.render = function (t) { var e, n; return t._png && t._png.stopAnimation(), t._png = this, t.width = this.width, t.height = this.height, e = t.getContext("2d"), this.animation ? (this.decodeFrames(e), this.animate(e)) : (n = e.createImageData(this.width, this.height), this.copyToImageData(n, this.decodePixels()), e.putImageData(n, 0, 0)) }, e
}(), t.PNG = e
}("undefined" != typeof window && window || this); var i = function () { function t() { this.pos = 0, this.bufferLength = 0, this.eof = !1, this.buffer = null } return t.prototype = { ensureBuffer: function (t) { var e = this.buffer, n = e ? e.byteLength : 0; if (n > t) return e; for (var r = 512; t > r;) r <<= 1; for (var s = new Uint8Array(r), i = 0; n > i; ++i) s[i] = e[i]; return this.buffer = s }, getByte: function () { for (var t = this.pos; this.bufferLength <= t;) { if (this.eof) return null; this.readBlock() } return this.buffer[this.pos++] }, getBytes: function (t) { var e = this.pos; if (t) { this.ensureBuffer(e + t); for (var n = e + t; !this.eof && this.bufferLength < n;) this.readBlock(); var r = this.bufferLength; n > r && (n = r) } else { for (; !this.eof;) this.readBlock(); var n = this.bufferLength } return this.pos = n, this.buffer.subarray(e, n) }, lookChar: function () { for (var t = this.pos; this.bufferLength <= t;) { if (this.eof) return null; this.readBlock() } return String.fromCharCode(this.buffer[this.pos]) }, getChar: function () { for (var t = this.pos; this.bufferLength <= t;) { if (this.eof) return null; this.readBlock() } return String.fromCharCode(this.buffer[this.pos++]) }, makeSubStream: function (t, e, n) { for (var r = t + e; this.bufferLength <= r && !this.eof;) this.readBlock(); return new Stream(this.buffer, t, e, n) }, skip: function (t) { t || (t = 1), this.pos += t }, reset: function () { this.pos = 0 } }, t }(), o = function () { function t(t) { throw new Error(t) } function e(e) { var n = 0, r = e[n++], s = e[n++]; (-1 == r || -1 == s) && t("Invalid header in flate stream"), 8 != (15 & r) && t("Unknown compression method in flate stream"), ((r << 8) + s) % 31 != 0 && t("Bad FCHECK in flate stream"), 32 & s && t("FDICT bit set in flate stream"), this.bytes = e, this.bytesPos = n, this.codeSize = 0, this.codeBuf = 0, i.call(this) } if ("undefined" == typeof Uint32Array) return void 0; var n = new Uint32Array([16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15]), r = new Uint32Array([3, 4, 5, 6, 7, 8, 9, 10, 65547, 65549, 65551, 65553, 131091, 131095, 131099, 131103, 196643, 196651, 196659, 196667, 262211, 262227, 262243, 262259, 327811, 327843, 327875, 327907, 258, 258, 258]), s = new Uint32Array([1, 2, 3, 4, 65541, 65543, 131081, 131085, 196625, 196633, 262177, 262193, 327745, 327777, 393345, 393409, 459009, 459137, 524801, 525057, 590849, 591361, 657409, 658433, 724993, 727041, 794625, 798721, 868353, 876545]), o = [new Uint32Array([459008, 524368, 524304, 524568, 459024, 524400, 524336, 590016, 459016, 524384, 524320, 589984, 524288, 524416, 524352, 590048, 459012, 524376, 524312, 589968, 459028, 524408, 524344, 590032, 459020, 524392, 524328, 59e4, 524296, 524424, 524360, 590064, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590024, 459018, 524388, 524324, 589992, 524292, 524420, 524356, 590056, 459014, 524380, 524316, 589976, 459030, 524412, 524348, 590040, 459022, 524396, 524332, 590008, 524300, 524428, 524364, 590072, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590020, 459017, 524386, 524322, 589988, 524290, 524418, 524354, 590052, 459013, 524378, 524314, 589972, 459029, 524410, 524346, 590036, 459021, 524394, 524330, 590004, 524298, 524426, 524362, 590068, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590028, 459019, 524390, 524326, 589996, 524294, 524422, 524358, 590060, 459015, 524382, 524318, 589980, 459031, 524414, 524350, 590044, 459023, 524398, 524334, 590012, 524302, 524430, 524366, 590076, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590018, 459016, 524385, 524321, 589986, 524289, 524417, 524353, 590050, 459012, 524377, 524313, 589970, 459028, 524409, 524345, 590034, 459020, 524393, 524329, 590002, 524297, 524425, 524361, 590066, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590026, 459018, 524389, 524325, 589994, 524293, 524421, 524357, 590058, 459014, 524381, 524317, 589978, 459030, 524413, 524349, 590042, 459022, 524397, 524333, 590010, 524301, 524429, 524365, 590074, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590022, 459017, 524387, 524323, 589990, 524291, 524419, 524355, 590054, 459013, 524379, 524315, 589974, 459029, 524411, 524347, 590038, 459021, 524395, 524331, 590006, 524299, 524427, 524363, 590070, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590030, 459019, 524391, 524327, 589998, 524295, 524423, 524359, 590062, 459015, 524383, 524319, 589982, 459031, 524415, 524351, 590046, 459023, 524399, 524335, 590014, 524303, 524431, 524367, 590078, 459008, 524368, 524304, 524568, 459024, 524400, 524336, 590017, 459016, 524384, 524320, 589985, 524288, 524416, 524352, 590049, 459012, 524376, 524312, 589969, 459028, 524408, 524344, 590033, 459020, 524392, 524328, 590001, 524296, 524424, 524360, 590065, 459010, 524372, 524308, 524572, 459026, 524404, 524340, 590025, 459018, 524388, 524324, 589993, 524292, 524420, 524356, 590057, 459014, 524380, 524316, 589977, 459030, 524412, 524348, 590041, 459022, 524396, 524332, 590009, 524300, 524428, 524364, 590073, 459009, 524370, 524306, 524570, 459025, 524402, 524338, 590021, 459017, 524386, 524322, 589989, 524290, 524418, 524354, 590053, 459013, 524378, 524314, 589973, 459029, 524410, 524346, 590037, 459021, 524394, 524330, 590005, 524298, 524426, 524362, 590069, 459011, 524374, 524310, 524574, 459027, 524406, 524342, 590029, 459019, 524390, 524326, 589997, 524294, 524422, 524358, 590061, 459015, 524382, 524318, 589981, 459031, 524414, 524350, 590045, 459023, 524398, 524334, 590013, 524302, 524430, 524366, 590077, 459008, 524369, 524305, 524569, 459024, 524401, 524337, 590019, 459016, 524385, 524321, 589987, 524289, 524417, 524353, 590051, 459012, 524377, 524313, 589971, 459028, 524409, 524345, 590035, 459020, 524393, 524329, 590003, 524297, 524425, 524361, 590067, 459010, 524373, 524309, 524573, 459026, 524405, 524341, 590027, 459018, 524389, 524325, 589995, 524293, 524421, 524357, 590059, 459014, 524381, 524317, 589979, 459030, 524413, 524349, 590043, 459022, 524397, 524333, 590011, 524301, 524429, 524365, 590075, 459009, 524371, 524307, 524571, 459025, 524403, 524339, 590023, 459017, 524387, 524323, 589991, 524291, 524419, 524355, 590055, 459013, 524379, 524315, 589975, 459029, 524411, 524347, 590039, 459021, 524395, 524331, 590007, 524299, 524427, 524363, 590071, 459011, 524375, 524311, 524575, 459027, 524407, 524343, 590031, 459019, 524391, 524327, 589999, 524295, 524423, 524359, 590063, 459015, 524383, 524319, 589983, 459031, 524415, 524351, 590047, 459023, 524399, 524335, 590015, 524303, 524431, 524367, 590079]), 9], a = [new Uint32Array([327680, 327696, 327688, 327704, 327684, 327700, 327692, 327708, 327682, 327698, 327690, 327706, 327686, 327702, 327694, 0, 327681, 327697, 327689, 327705, 327685, 327701, 327693, 327709, 327683, 327699, 327691, 327707, 327687, 327703, 327695, 0]), 5]; return e.prototype = Object.create(i.prototype), e.prototype.getBits = function (e) { for (var n, r = this.codeSize, s = this.codeBuf, i = this.bytes, o = this.bytesPos; e > r;) "undefined" == typeof (n = i[o++]) && t("Bad encoding in flate stream"), s |= n << r, r += 8; return n = s & (1 << e) - 1, this.codeBuf = s >> e, this.codeSize = r -= e, this.bytesPos = o, n }, e.prototype.getCode = function (e) { for (var n = e[0], r = e[1], s = this.codeSize, i = this.codeBuf, o = this.bytes, a = this.bytesPos; r > s;) { var u; "undefined" == typeof (u = o[a++]) && t("Bad encoding in flate stream"), i |= u << s, s += 8 } var c = n[i & (1 << r) - 1], l = c >> 16, f = 65535 & c; return (0 == s || l > s || 0 == l) && t("Bad encoding in flate stream"), this.codeBuf = i >> l, this.codeSize = s - l, this.bytesPos = a, f }, e.prototype.generateHuffmanTable = function (t) { for (var e = t.length, n = 0, r = 0; e > r; ++r) t[r] > n && (n = t[r]); for (var s = 1 << n, i = new Uint32Array(s), o = 1, a = 0, u = 2; n >= o; ++o, a <<= 1, u <<= 1) for (var c = 0; e > c; ++c) if (t[c] == o) { for (var l = 0, f = a, r = 0; o > r; ++r) l = l << 1 | 1 & f, f >>= 1; for (var r = l; s > r; r += u) i[r] = o << 16 | c; ++a } return [i, n] }, e.prototype.readBlock = function () { function e(t, e, n, r, s) { for (var i = t.getBits(n) + r; i-- > 0;) e[k++] = s } var i = this.getBits(3); if (1 & i && (this.eof = !0), i >>= 1, 0 == i) { var u, c = this.bytes, l = this.bytesPos; "undefined" == typeof (u = c[l++]) && t("Bad block header in flate stream"); var f = u; "undefined" == typeof (u = c[l++]) && t("Bad block header in flate stream"), f |= u << 8, "undefined" == typeof (u = c[l++]) && t("Bad block header in flate stream"); var d = u; "undefined" == typeof (u = c[l++]) && t("Bad block header in flate stream"), d |= u << 8, d != (65535 & ~f) && t("Bad uncompressed block length in flate stream"), this.codeBuf = 0, this.codeSize = 0; var h = this.bufferLength, p = this.ensureBuffer(h + f), m = h + f; this.bufferLength = m; for (var w = h; m > w; ++w) { if ("undefined" == typeof (u = c[l++])) { this.eof = !0; break } p[w] = u } return void (this.bytesPos = l) } var g, y; if (1 == i) g = o, y = a; else if (2 == i) { for (var v = this.getBits(5) + 257, b = this.getBits(5) + 1, q = this.getBits(4) + 4, x = Array(n.length), k = 0; q > k;) x[n[k++]] = this.getBits(3); for (var _ = this.generateHuffmanTable(x), A = 0, k = 0, C = v + b, S = new Array(C) ; C > k;) { var E = this.getCode(_); 16 == E ? e(this, S, 2, 3, A) : 17 == E ? e(this, S, 3, 3, A = 0) : 18 == E ? e(this, S, 7, 11, A = 0) : S[k++] = A = E } g = this.generateHuffmanTable(S.slice(0, v)), y = this.generateHuffmanTable(S.slice(v, C)) } else t("Unknown block type in flate stream"); for (var p = this.buffer, z = p ? p.length : 0, T = this.bufferLength; ;) { var I = this.getCode(g); if (256 > I) T + 1 >= z && (p = this.ensureBuffer(T + 1), z = p.length), p[T++] = I; else { if (256 == I) return void (this.bufferLength = T); I -= 257, I = r[I]; var B = I >> 16; B > 0 && (B = this.getBits(B)); var A = (65535 & I) + B; I = this.getCode(y), I = s[I], B = I >> 16, B > 0 && (B = this.getBits(B)); var O = (65535 & I) + B; T + A >= z && (p = this.ensureBuffer(T + A), z = p.length); for (var P = 0; A > P; ++P, ++T) p[T] = p[T - O] } } }, e }(); !function (t) { var e = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="; "undefined" == typeof t.btoa && (t.btoa = function (t) { var n, r, s, i, o, a, u, c, l = 0, f = 0, d = "", h = []; if (!t) return t; do n = t.charCodeAt(l++), r = t.charCodeAt(l++), s = t.charCodeAt(l++), c = n << 16 | r << 8 | s, i = c >> 18 & 63, o = c >> 12 & 63, a = c >> 6 & 63, u = 63 & c, h[f++] = e.charAt(i) + e.charAt(o) + e.charAt(a) + e.charAt(u); while (l < t.length); d = h.join(""); var p = t.length % 3; return (p ? d.slice(0, p - 3) : d) + "===".slice(p || 3) }), "undefined" == typeof t.atob && (t.atob = function (t) { var n, r, s, i, o, a, u, c, l = 0, f = 0, d = "", h = []; if (!t) return t; t += ""; do i = e.indexOf(t.charAt(l++)), o = e.indexOf(t.charAt(l++)), a = e.indexOf(t.charAt(l++)), u = e.indexOf(t.charAt(l++)), c = i << 18 | o << 12 | a << 6 | u, n = c >> 16 & 255, r = c >> 8 & 255, s = 255 & c, h[f++] = 64 == a ? String.fromCharCode(n) : 64 == u ? String.fromCharCode(n, r) : String.fromCharCode(n, r, s); while (l < t.length); return d = h.join("") }), Array.prototype.map || (Array.prototype.map = function (t) { if (void 0 === this || null === this || "function" != typeof t) throw new TypeError; for (var e = Object(this), n = e.length >>> 0, r = new Array(n), s = arguments.length > 1 ? arguments[1] : void 0, i = 0; n > i; i++) i in e && (r[i] = t.call(s, e[i], i, e)); return r }), Array.isArray || (Array.isArray = function (t) { return "[object Array]" === Object.prototype.toString.call(t) }), Array.prototype.forEach || (Array.prototype.forEach = function (t, e) { "use strict"; if (void 0 === this || null === this || "function" != typeof t) throw new TypeError; for (var n = Object(this), r = n.length >>> 0, s = 0; r > s; s++) s in n && t.call(e, n[s], s, n) }), Object.keys || (Object.keys = function () { "use strict"; var t = Object.prototype.hasOwnProperty, e = !{ toString: null }.propertyIsEnumerable("toString"), n = ["toString", "toLocaleString", "valueOf", "hasOwnProperty", "isPrototypeOf", "propertyIsEnumerable", "constructor"], r = n.length; return function (s) { if ("object" != typeof s && ("function" != typeof s || null === s)) throw new TypeError; var i, o, a = []; for (i in s) t.call(s, i) && a.push(i); if (e) for (o = 0; r > o; o++) t.call(s, n[o]) && a.push(n[o]); return a } }()), String.prototype.trim || (String.prototype.trim = function () { return this.replace(/^\s+|\s+$/g, "") }), String.prototype.trimLeft || (String.prototype.trimLeft = function () { return this.replace(/^\s+/g, "") }), String.prototype.trimRight || (String.prototype.trimRight = function () { return this.replace(/\s+$/g, "") }) }("undefined" != typeof self && self || "undefined" != typeof window && window || this)
}({}, function () { return this }());
function hexToRgb(hex) {
var result = /^#?([a-f\d]{2})([a-f\d]{2})([a-f\d]{2})$/i.exec(hex);
return result ? {
r: parseInt(result[1], 16),
g: parseInt(result[2], 16),
b: parseInt(result[3], 16)
} : null;
}
function SortByPageIndex(a, b) {
return ((a.pageIndex < b.pageIndex) ? -1 : ((a.pageIndex > b.pageIndex) ? 1 : 0));
}
function createjsPDFDoc(marks, numPages) {
var flowpaper_selected_orange = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpi/HU2PI2BCMDEQCQYVUgdhQABBgAUEQKY/P3axgAAAABJRU5ErkJggg==';
var flowpaper_selected_yellow = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpi/P+9JI2BCMDEQCQYVUgdhQABBgCNGQLkLG5r/QAAAABJRU5ErkJggg==';
var flowpaper_selected_green = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpiPPS9NY2BCMDEQCQYVUgdhQABBgBGqwK44CLR7QAAAABJRU5ErkJggg==';
var flowpaper_selected_blue = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpinHPnfxoDEYCJgUgwqpA6CgECDACg4wLx/GfOhQAAAABJRU5ErkJggg==';
var flowpaper_selected_strike = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAoAAAAKCAYAAACNMs+9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAABtJREFUeNpi/B0aWMdABGBiIBKMKqSOQoAAAwBy4QIzEmxj4gAAAABJRU5ErkJggg==';
/* Sort the marks based on pageIndex */
marks = marks.sort(SortByPageIndex);
var docWidth = 210;
var docHeight = 297;
var currentPage = 1;
var doc = null;
if (!marks || (marks && marks.length == 0)) {
doc = new jsPDF('p', 'mm', [docHeight, docWidth]);
}
for (var i = 0; i < marks.length; i++) {
var mark = marks[i];
if (!mark.pageWidth) {
mark.pageWidth = 772;
}
if (!mark.pageHeight) {
mark.pageHeight = 1000;
}
if (currentPage != mark.pageIndex) {
var dxdy = (mark.pageWidth / mark.pageHeight);
if (!doc) {
docWidth = docHeight * dxdy;
doc = new jsPDF('p', 'mm', [docHeight, docWidth]);
}
var pagediff = mark.pageIndex - currentPage;
docWidth = docHeight * dxdy;
for (var d = 0; d < pagediff; d++) {
doc.addPage(docWidth, docHeight);
}
currentPage = mark.pageIndex;
} else if (!doc) {
var dxdy = (mark.pageWidth / mark.pageHeight);
docWidth = docHeight * dxdy;
doc = new jsPDF('p', 'mm', [docHeight, docWidth]);
}
if ((mark.type == "note" || (mark.type == "highlight" && mark.note != null && mark.positionX != null && mark.positionY != null && mark.positionX > 0 && mark.positionY > 0) || (mark.type == "drawing" && mark.note != null && mark.positionX != null && mark.positionY != null && mark.positionX > 0 && mark.positionY > 0 && mark.width != null && mark.height != null && mark.width > 0 && mark.height > 0)) && mark.pageWidth && mark.pageHeight) {
doc.setDrawColor(255, 255, 200);
doc.setFillColor(255, 255, 200);
var x = (mark.positionX / mark.pageWidth) * docWidth;
var y = (mark.positionY / mark.pageHeight) * docHeight;
var w = (mark.width / mark.pageWidth) * docWidth;
var h = (mark.height / mark.pageHeight) * docHeight;
doc.rect(x, y, w, h, 'F');
var specialElementHandlers = {
'#editor': function (element, renderer) {
return true;
}
};
mark.note = mark.note.replace(/
= 0 && mark.positionY != null && mark.positionY >= 0 && mark.width != null && mark.height != null && mark.width > 0 && mark.height > 0) {
var xy_start = points[0].split(',');
var xy_end = points[points.length - 1].split(',');
var x_start = parseFloat(xy_start[0]);
var y_start = parseFloat(xy_start[1]);
var x_end = parseFloat(xy_end[0]);
var y_end = parseFloat(xy_end[1]);
x_start = (x_start / mark.pageWidth) * docWidth;
y_start = (y_start / mark.pageHeight) * docHeight;
x_end = (x_end / mark.pageWidth) * docWidth;
y_end = (y_end / mark.pageHeight) * docHeight;
var rgb = hexToRgb('FF5500');
doc.setLineWidth(1.3);
doc.setDrawColor(rgb.r, rgb.g, rgb.b);
doc.line(x_start, y_start, x_end, y_start);
doc.line(x_end, y_start, x_end, y_end);
doc.line(x_end, y_end, x_start, y_end);
doc.line(x_start, y_end, x_start, y_start);
var closestX = (Math.abs(x_end - note_x) > Math.abs(x_start - note_x)) ? x_start : x_end;
var closestY = (Math.abs(y_end - note_y) > Math.abs(y_start - note_y)) ? y_start : y_end;
var note_x = (mark.positionX / mark.pageWidth) * docWidth;
var note_y = (mark.positionY / mark.pageHeight) * docHeight;
doc.line(closestX, closestY, note_x, note_y);
} else {
doc.setLineWidth(1.3);
for (p = 0; p < points.length; p++) {
xy = points[p].split(',');
x = parseFloat(xy[0]);
y = parseFloat(xy[1]);
x = (x / mark.pageWidth) * docWidth;
y = (y / mark.pageHeight) * docHeight;
doc.line(prevPoint.x, prevPoint.y, x, y);
prevPoint.x = x;
prevPoint.y = y;
}
}
}
if (mark.type == 'highlight' || mark.type == 'strikeout') {
doc.setDrawColor(250, 205, 86);
doc.setFillColor(250, 205, 86);
// if its a highlight note then grab selection_width and selection_height as w/h
if (mark.note != null && !mark.points) {
var note_x = (mark.positionX / mark.pageWidth) * docWidth;
var note_y = (mark.positionY / mark.pageHeight) * docHeight;
x = (mark.selection_x / mark.pageWidth) * docWidth;
y = (mark.selection_y / mark.pageHeight) * docHeight;
w = (mark.selection_width / mark.pageWidth) * docWidth;
h = (mark.selection_height / mark.pageHeight) * docHeight;
var rgb = hexToRgb('FF5500');
doc.setDrawColor(rgb.r, rgb.g, rgb.b);
doc.line(x + w / 2, y + h, note_x, note_y);
}
var points = mark.points.split(';');
if (points[points.length - 1] == "") {
points.splice(points.length - 1, 1);
}
for (p = 0; p < points.length; p++) {
var pair = points[p].split(':');
var xy1 = pair[0].split(',');
var x1 = parseFloat(xy1[0]);
var y1 = parseFloat(xy1[1]);
var x1 = (x1 / mark.pageWidth) * docWidth;
var y1 = (y1 / mark.pageHeight) * docHeight;
var xy2 = pair[1].split(',');
var x2 = parseFloat(xy2[0]);
var y2 = parseFloat(xy2[1]);
var x2 = (x2 / mark.pageWidth) * docWidth;
var y2 = (y2 / mark.pageHeight) * docHeight;
var w = x2 - x1;
var h = y2 - y1;
if (mark.color == '#fff774' || mark.color == '#fffc15') {
doc.addImage(flowpaper_selected_yellow, 'PNG', x1, y1, w, h);
}
if (mark.color == '#facd56') {
doc.addImage(flowpaper_selected_orange, 'PNG', x1, y1, w, h);
}
if (mark.color == '#c2f785') {
doc.addImage(flowpaper_selected_green, 'PNG', x1, y1, w, h);
}
if (mark.color == '#9cdcff') {
doc.addImage(flowpaper_selected_blue, 'PNG', x1, y1, w, h);
}
if (mark.color == '#fb5450') { //strikeout
doc.addImage(flowpaper_selected_strike, 'PNG', x1, y1 + h / 3, w, h / 3);
}
}
}
}
if (currentPage < numPages) {
doc.addPage();
}
return doc;
}