// Underscore.js 1.9.1 // http://underscorejs.org // (c) 2009-2018 Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors // Underscore may be freely distributed under the MIT license. !function () { var n = "object" == typeof self && self.self === self && self || "object" == typeof global && global.global === global && global || this || {}, r = n._, e = Array.prototype, o = Object.prototype, s = "undefined" != typeof Symbol ? Symbol.prototype : null, u = e.push, c = e.slice, p = o.toString, i = o.hasOwnProperty, t = Array.isArray, a = Object.keys, l = Object.create, f = function () { }, h = function (n) { return n instanceof h ? n : this instanceof h ? void (this._wrapped = n) : new h(n) }; "undefined" == typeof exports || exports.nodeType ? n._ = h : ("undefined" != typeof module && !module.nodeType && module.exports && (exports = module.exports = h), exports._ = h), h.VERSION = "1.9.1"; var v, y = function (u, i, n) { if (void 0 === i) return u; switch (null == n ? 3 : n) { case 1: return function (n) { return u.call(i, n) }; case 3: return function (n, r, t) { return u.call(i, n, r, t) }; case 4: return function (n, r, t, e) { return u.call(i, n, r, t, e) } }return function () { return u.apply(i, arguments) } }, d = function (n, r, t) { return h.iteratee !== v ? h.iteratee(n, r) : null == n ? h.identity : h.isFunction(n) ? y(n, r, t) : h.isObject(n) && !h.isArray(n) ? h.matcher(n) : h.property(n) }; h.iteratee = v = function (n, r) { return d(n, r, 1 / 0) }; var g = function (u, i) { return i = null == i ? u.length - 1 : +i, function () { for (var n = Math.max(arguments.length - i, 0), r = Array(n), t = 0; t < n; t++)r[t] = arguments[t + i]; switch (i) { case 0: return u.call(this, r); case 1: return u.call(this, arguments[0], r); case 2: return u.call(this, arguments[0], arguments[1], r) }var e = Array(i + 1); for (t = 0; t < i; t++)e[t] = arguments[t]; return e[i] = r, u.apply(this, e) } }, m = function (n) { if (!h.isObject(n)) return {}; if (l) return l(n); f.prototype = n; var r = new f; return f.prototype = null, r }, b = function (r) { return function (n) { return null == n ? void 0 : n[r] } }, j = function (n, r) { return null != n && i.call(n, r) }, x = function (n, r) { for (var t = r.length, e = 0; e < t; e++) { if (null == n) return; n = n[r[e]] } return t ? n : void 0 }, _ = Math.pow(2, 53) - 1, A = b("length"), w = function (n) { var r = A(n); return "number" == typeof r && 0 <= r && r <= _ }; h.each = h.forEach = function (n, r, t) { var e, u; if (r = y(r, t), w(n)) for (e = 0, u = n.length; e < u; e++)r(n[e], e, n); else { var i = h.keys(n); for (e = 0, u = i.length; e < u; e++)r(n[i[e]], i[e], n) } return n }, h.map = h.collect = function (n, r, t) { r = d(r, t); for (var e = !w(n) && h.keys(n), u = (e || n).length, i = Array(u), o = 0; o < u; o++) { var a = e ? e[o] : o; i[o] = r(n[a], a, n) } return i }; var O = function (c) { return function (n, r, t, e) { var u = 3 <= arguments.length; return function (n, r, t, e) { var u = !w(n) && h.keys(n), i = (u || n).length, o = 0 < c ? 0 : i - 1; for (e || (t = n[u ? u[o] : o], o += c); 0 <= o && o < i; o += c) { var a = u ? u[o] : o; t = r(t, n[a], a, n) } return t }(n, y(r, e, 4), t, u) } }; h.reduce = h.foldl = h.inject = O(1), h.reduceRight = h.foldr = O(-1), h.find = h.detect = function (n, r, t) { var e = (w(n) ? h.findIndex : h.findKey)(n, r, t); if (void 0 !== e && -1 !== e) return n[e] }, h.filter = h.select = function (n, e, r) { var u = []; return e = d(e, r), h.each(n, function (n, r, t) { e(n, r, t) && u.push(n) }), u }, h.reject = function (n, r, t) { return h.filter(n, h.negate(d(r)), t) }, h.every = h.all = function (n, r, t) { r = d(r, t); for (var e = !w(n) && h.keys(n), u = (e || n).length, i = 0; i < u; i++) { var o = e ? e[i] : i; if (!r(n[o], o, n)) return !1 } return !0 }, h.some = h.any = function (n, r, t) { r = d(r, t); for (var e = !w(n) && h.keys(n), u = (e || n).length, i = 0; i < u; i++) { var o = e ? e[i] : i; if (r(n[o], o, n)) return !0 } return !1 }, h.contains = h.includes = h.include = function (n, r, t, e) { return w(n) || (n = h.values(n)), ("number" != typeof t || e) && (t = 0), 0 <= h.indexOf(n, r, t) }, h.invoke = g(function (n, t, e) { var u, i; return h.isFunction(t) ? i = t : h.isArray(t) && (u = t.slice(0, -1), t = t[t.length - 1]), h.map(n, function (n) { var r = i; if (!r) { if (u && u.length && (n = x(n, u)), null == n) return; r = n[t] } return null == r ? r : r.apply(n, e) }) }), h.pluck = function (n, r) { return h.map(n, h.property(r)) }, h.where = function (n, r) { return h.filter(n, h.matcher(r)) }, h.findWhere = function (n, r) { return h.find(n, h.matcher(r)) }, h.max = function (n, e, r) { var t, u, i = -1 / 0, o = -1 / 0; if (null == e || "number" == typeof e && "object" != typeof n[0] && null != n) for (var a = 0, c = (n = w(n) ? n : h.values(n)).length; a < c; a++)null != (t = n[a]) && i < t && (i = t); else e = d(e, r), h.each(n, function (n, r, t) { u = e(n, r, t), (o < u || u === -1 / 0 && i === -1 / 0) && (i = n, o = u) }); return i }, h.min = function (n, e, r) { var t, u, i = 1 / 0, o = 1 / 0; if (null == e || "number" == typeof e && "object" != typeof n[0] && null != n) for (var a = 0, c = (n = w(n) ? n : h.values(n)).length; a < c; a++)null != (t = n[a]) && t < i && (i = t); else e = d(e, r), h.each(n, function (n, r, t) { ((u = e(n, r, t)) < o || u === 1 / 0 && i === 1 / 0) && (i = n, o = u) }); return i }, h.shuffle = function (n) { return h.sample(n, 1 / 0) }, h.sample = function (n, r, t) { if (null == r || t) return w(n) || (n = h.values(n)), n[h.random(n.length - 1)]; var e = w(n) ? h.clone(n) : h.values(n), u = A(e); r = Math.max(Math.min(r, u), 0); for (var i = u - 1, o = 0; o < r; o++) { var a = h.random(o, i), c = e[o]; e[o] = e[a], e[a] = c } return e.slice(0, r) }, h.sortBy = function (n, e, r) { var u = 0; return e = d(e, r), h.pluck(h.map(n, function (n, r, t) { return { value: n, index: u++, criteria: e(n, r, t) } }).sort(function (n, r) { var t = n.criteria, e = r.criteria; if (t !== e) { if (e < t || void 0 === t) return 1; if (t < e || void 0 === e) return -1 } return n.index - r.index }), "value") }; var k = function (o, r) { return function (e, u, n) { var i = r ? [[], []] : {}; return u = d(u, n), h.each(e, function (n, r) { var t = u(n, r, e); o(i, n, t) }), i } }; h.groupBy = k(function (n, r, t) { j(n, t) ? n[t].push(r) : n[t] = [r] }), h.indexBy = k(function (n, r, t) { n[t] = r }), h.countBy = k(function (n, r, t) { j(n, t) ? n[t]++ : n[t] = 1 }); var S = /[^\ud800-\udfff]|[\ud800-\udbff][\udc00-\udfff]|[\ud800-\udfff]/g; h.toArray = function (n) { return n ? h.isArray(n) ? c.call(n) : h.isString(n) ? n.match(S) : w(n) ? h.map(n, h.identity) : h.values(n) : [] }, h.size = function (n) { return null == n ? 0 : w(n) ? n.length : h.keys(n).length }, h.partition = k(function (n, r, t) { n[t ? 0 : 1].push(r) }, !0), h.first = h.head = h.take = function (n, r, t) { return null == n || n.length < 1 ? null == r ? void 0 : [] : null == r || t ? n[0] : h.initial(n, n.length - r) }, h.initial = function (n, r, t) { return c.call(n, 0, Math.max(0, n.length - (null == r || t ? 1 : r))) }, h.last = function (n, r, t) { return null == n || n.length < 1 ? null == r ? void 0 : [] : null == r || t ? n[n.length - 1] : h.rest(n, Math.max(0, n.length - r)) }, h.rest = h.tail = h.drop = function (n, r, t) { return c.call(n, null == r || t ? 1 : r) }, h.compact = function (n) { return h.filter(n, Boolean) }; var M = function (n, r, t, e) { for (var u = (e = e || []).length, i = 0, o = A(n); i < o; i++) { var a = n[i]; if (w(a) && (h.isArray(a) || h.isArguments(a))) if (r) for (var c = 0, l = a.length; c < l;)e[u++] = a[c++]; else M(a, r, t, e), u = e.length; else t || (e[u++] = a) } return e }; h.flatten = function (n, r) { return M(n, r, !1) }, h.without = g(function (n, r) { return h.difference(n, r) }), h.uniq = h.unique = function (n, r, t, e) { h.isBoolean(r) || (e = t, t = r, r = !1), null != t && (t = d(t, e)); for (var u = [], i = [], o = 0, a = A(n); o < a; o++) { var c = n[o], l = t ? t(c, o, n) : c; r && !t ? (o && i === l || u.push(c), i = l) : t ? h.contains(i, l) || (i.push(l), u.push(c)) : h.contains(u, c) || u.push(c) } return u }, h.union = g(function (n) { return h.uniq(M(n, !0, !0)) }), h.intersection = function (n) { for (var r = [], t = arguments.length, e = 0, u = A(n); e < u; e++) { var i = n[e]; if (!h.contains(r, i)) { var o; for (o = 1; o < t && h.contains(arguments[o], i); o++); o === t && r.push(i) } } return r }, h.difference = g(function (n, r) { return r = M(r, !0, !0), h.filter(n, function (n) { return !h.contains(r, n) }) }), h.unzip = function (n) { for (var r = n && h.max(n, A).length || 0, t = Array(r), e = 0; e < r; e++)t[e] = h.pluck(n, e); return t }, h.zip = g(h.unzip), h.object = function (n, r) { for (var t = {}, e = 0, u = A(n); e < u; e++)r ? t[n[e]] = r[e] : t[n[e][0]] = n[e][1]; return t }; var F = function (i) { return function (n, r, t) { r = d(r, t); for (var e = A(n), u = 0 < i ? 0 : e - 1; 0 <= u && u < e; u += i)if (r(n[u], u, n)) return u; return -1 } }; h.findIndex = F(1), h.findLastIndex = F(-1), h.sortedIndex = function (n, r, t, e) { for (var u = (t = d(t, e, 1))(r), i = 0, o = A(n); i < o;) { var a = Math.floor((i + o) / 2); t(n[a]) < u ? i = a + 1 : o = a } return i }; var E = function (i, o, a) { return function (n, r, t) { var e = 0, u = A(n); if ("number" == typeof t) 0 < i ? e = 0 <= t ? t : Math.max(t + u, e) : u = 0 <= t ? Math.min(t + 1, u) : t + u + 1; else if (a && t && u) return n[t = a(n, r)] === r ? t : -1; if (r != r) return 0 <= (t = o(c.call(n, e, u), h.isNaN)) ? t + e : -1; for (t = 0 < i ? e : u - 1; 0 <= t && t < u; t += i)if (n[t] === r) return t; return -1 } }; h.indexOf = E(1, h.findIndex, h.sortedIndex), h.lastIndexOf = E(-1, h.findLastIndex), h.range = function (n, r, t) { null == r && (r = n || 0, n = 0), t || (t = r < n ? -1 : 1); for (var e = Math.max(Math.ceil((r - n) / t), 0), u = Array(e), i = 0; i < e; i++ , n += t)u[i] = n; return u }, h.chunk = function (n, r) { if (null == r || r < 1) return []; for (var t = [], e = 0, u = n.length; e < u;)t.push(c.call(n, e, e += r)); return t }; var N = function (n, r, t, e, u) { if (!(e instanceof r)) return n.apply(t, u); var i = m(n.prototype), o = n.apply(i, u); return h.isObject(o) ? o : i }; h.bind = g(function (r, t, e) { if (!h.isFunction(r)) throw new TypeError("Bind must be called on a function"); var u = g(function (n) { return N(r, u, t, this, e.concat(n)) }); return u }), h.partial = g(function (u, i) { var o = h.partial.placeholder, a = function () { for (var n = 0, r = i.length, t = Array(r), e = 0; e < r; e++)t[e] = i[e] === o ? arguments[n++] : i[e]; for (; n < arguments.length;)t.push(arguments[n++]); return N(u, a, this, this, t) }; return a }), (h.partial.placeholder = h).bindAll = g(function (n, r) { var t = (r = M(r, !1, !1)).length; if (t < 1) throw new Error("bindAll must be passed function names"); for (; t--;) { var e = r[t]; n[e] = h.bind(n[e], n) } }), h.memoize = function (e, u) { var i = function (n) { var r = i.cache, t = "" + (u ? u.apply(this, arguments) : n); return j(r, t) || (r[t] = e.apply(this, arguments)), r[t] }; return i.cache = {}, i }, h.delay = g(function (n, r, t) { return setTimeout(function () { return n.apply(null, t) }, r) }), h.defer = h.partial(h.delay, h, 1), h.throttle = function (t, e, u) { var i, o, a, c, l = 0; u || (u = {}); var f = function () { l = !1 === u.leading ? 0 : h.now(), i = null, c = t.apply(o, a), i || (o = a = null) }, n = function () { var n = h.now(); l || !1 !== u.leading || (l = n); var r = e - (n - l); return o = this, a = arguments, r <= 0 || e < r ? (i && (clearTimeout(i), i = null), l = n, c = t.apply(o, a), i || (o = a = null)) : i || !1 === u.trailing || (i = setTimeout(f, r)), c }; return n.cancel = function () { clearTimeout(i), l = 0, i = o = a = null }, n }, h.debounce = function (t, e, u) { var i, o, a = function (n, r) { i = null, r && (o = t.apply(n, r)) }, n = g(function (n) { if (i && clearTimeout(i), u) { var r = !i; i = setTimeout(a, e), r && (o = t.apply(this, n)) } else i = h.delay(a, e, this, n); return o }); return n.cancel = function () { clearTimeout(i), i = null }, n }, h.wrap = function (n, r) { return h.partial(r, n) }, h.negate = function (n) { return function () { return !n.apply(this, arguments) } }, h.compose = function () { var t = arguments, e = t.length - 1; return function () { for (var n = e, r = t[e].apply(this, arguments); n--;)r = t[n].call(this, r); return r } }, h.after = function (n, r) { return function () { if (--n < 1) return r.apply(this, arguments) } }, h.before = function (n, r) { var t; return function () { return 0 < --n && (t = r.apply(this, arguments)), n <= 1 && (r = null), t } }, h.once = h.partial(h.before, 2), h.restArguments = g; var I = !{ toString: null }.propertyIsEnumerable("toString"), T = ["valueOf", "isPrototypeOf", "toString", "propertyIsEnumerable", "hasOwnProperty", "toLocaleString"], B = function (n, r) { var t = T.length, e = n.constructor, u = h.isFunction(e) && e.prototype || o, i = "constructor"; for (j(n, i) && !h.contains(r, i) && r.push(i); t--;)(i = T[t]) in n && n[i] !== u[i] && !h.contains(r, i) && r.push(i) }; h.keys = function (n) { if (!h.isObject(n)) return []; if (a) return a(n); var r = []; for (var t in n) j(n, t) && r.push(t); return I && B(n, r), r }, h.allKeys = function (n) { if (!h.isObject(n)) return []; var r = []; for (var t in n) r.push(t); return I && B(n, r), r }, h.values = function (n) { for (var r = h.keys(n), t = r.length, e = Array(t), u = 0; u < t; u++)e[u] = n[r[u]]; return e }, h.mapObject = function (n, r, t) { r = d(r, t); for (var e = h.keys(n), u = e.length, i = {}, o = 0; o < u; o++) { var a = e[o]; i[a] = r(n[a], a, n) } return i }, h.pairs = function (n) { for (var r = h.keys(n), t = r.length, e = Array(t), u = 0; u < t; u++)e[u] = [r[u], n[r[u]]]; return e }, h.invert = function (n) { for (var r = {}, t = h.keys(n), e = 0, u = t.length; e < u; e++)r[n[t[e]]] = t[e]; return r }, h.functions = h.methods = function (n) { var r = []; for (var t in n) h.isFunction(n[t]) && r.push(t); return r.sort() }; var R = function (c, l) { return function (n) { var r = arguments.length; if (l && (n = Object(n)), r < 2 || null == n) return n; for (var t = 1; t < r; t++)for (var e = arguments[t], u = c(e), i = u.length, o = 0; o < i; o++) { var a = u[o]; l && void 0 !== n[a] || (n[a] = e[a]) } return n } }; h.extend = R(h.allKeys), h.extendOwn = h.assign = R(h.keys), h.findKey = function (n, r, t) { r = d(r, t); for (var e, u = h.keys(n), i = 0, o = u.length; i < o; i++)if (r(n[e = u[i]], e, n)) return e }; var q, K, z = function (n, r, t) { return r in t }; h.pick = g(function (n, r) { var t = {}, e = r[0]; if (null == n) return t; h.isFunction(e) ? (1 < r.length && (e = y(e, r[1])), r = h.allKeys(n)) : (e = z, r = M(r, !1, !1), n = Object(n)); for (var u = 0, i = r.length; u < i; u++) { var o = r[u], a = n[o]; e(a, o, n) && (t[o] = a) } return t }), h.omit = g(function (n, t) { var r, e = t[0]; return h.isFunction(e) ? (e = h.negate(e), 1 < t.length && (r = t[1])) : (t = h.map(M(t, !1, !1), String), e = function (n, r) { return !h.contains(t, r) }), h.pick(n, e, r) }), h.defaults = R(h.allKeys, !0), h.create = function (n, r) { var t = m(n); return r && h.extendOwn(t, r), t }, h.clone = function (n) { return h.isObject(n) ? h.isArray(n) ? n.slice() : h.extend({}, n) : n }, h.tap = function (n, r) { return r(n), n }, h.isMatch = function (n, r) { var t = h.keys(r), e = t.length; if (null == n) return !e; for (var u = Object(n), i = 0; i < e; i++) { var o = t[i]; if (r[o] !== u[o] || !(o in u)) return !1 } return !0 }, q = function (n, r, t, e) { if (n === r) return 0 !== n || 1 / n == 1 / r; if (null == n || null == r) return !1; if (n != n) return r != r; var u = typeof n; return ("function" === u || "object" === u || "object" == typeof r) && K(n, r, t, e) }, K = function (n, r, t, e) { n instanceof h && (n = n._wrapped), r instanceof h && (r = r._wrapped); var u = p.call(n); if (u !== p.call(r)) return !1; switch (u) { case "[object RegExp]": case "[object String]": return "" + n == "" + r; case "[object Number]": return +n != +n ? +r != +r : 0 == +n ? 1 / +n == 1 / r : +n == +r; case "[object Date]": case "[object Boolean]": return +n == +r; case "[object Symbol]": return s.valueOf.call(n) === s.valueOf.call(r) }var i = "[object Array]" === u; if (!i) { if ("object" != typeof n || "object" != typeof r) return !1; var o = n.constructor, a = r.constructor; if (o !== a && !(h.isFunction(o) && o instanceof o && h.isFunction(a) && a instanceof a) && "constructor" in n && "constructor" in r) return !1 } e = e || []; for (var c = (t = t || []).length; c--;)if (t[c] === n) return e[c] === r; if (t.push(n), e.push(r), i) { if ((c = n.length) !== r.length) return !1; for (; c--;)if (!q(n[c], r[c], t, e)) return !1 } else { var l, f = h.keys(n); if (c = f.length, h.keys(r).length !== c) return !1; for (; c--;)if (l = f[c], !j(r, l) || !q(n[l], r[l], t, e)) return !1 } return t.pop(), e.pop(), !0 }, h.isEqual = function (n, r) { return q(n, r) }, h.isEmpty = function (n) { return null == n || (w(n) && (h.isArray(n) || h.isString(n) || h.isArguments(n)) ? 0 === n.length : 0 === h.keys(n).length) }, h.isElement = function (n) { return !(!n || 1 !== n.nodeType) }, h.isArray = t || function (n) { return "[object Array]" === p.call(n) }, h.isObject = function (n) { var r = typeof n; return "function" === r || "object" === r && !!n }, h.each(["Arguments", "Function", "String", "Number", "Date", "RegExp", "Error", "Symbol", "Map", "WeakMap", "Set", "WeakSet"], function (r) { h["is" + r] = function (n) { return p.call(n) === "[object " + r + "]" } }), h.isArguments(arguments) || (h.isArguments = function (n) { return j(n, "callee") }); var D = n.document && n.document.childNodes; "function" != typeof /./ && "object" != typeof Int8Array && "function" != typeof D && (h.isFunction = function (n) { return "function" == typeof n || !1 }), h.isFinite = function (n) { return !h.isSymbol(n) && isFinite(n) && !isNaN(parseFloat(n)) }, h.isNaN = function (n) { return h.isNumber(n) && isNaN(n) }, h.isBoolean = function (n) { return !0 === n || !1 === n || "[object Boolean]" === p.call(n) }, h.isNull = function (n) { return null === n }, h.isUndefined = function (n) { return void 0 === n }, h.has = function (n, r) { if (!h.isArray(r)) return j(n, r); for (var t = r.length, e = 0; e < t; e++) { var u = r[e]; if (null == n || !i.call(n, u)) return !1; n = n[u] } return !!t }, h.noConflict = function () { return n._ = r, this }, h.identity = function (n) { return n }, h.constant = function (n) { return function () { return n } }, h.noop = function () { }, h.property = function (r) { return h.isArray(r) ? function (n) { return x(n, r) } : b(r) }, h.propertyOf = function (r) { return null == r ? function () { } : function (n) { return h.isArray(n) ? x(r, n) : r[n] } }, h.matcher = h.matches = function (r) { return r = h.extendOwn({}, r), function (n) { return h.isMatch(n, r) } }, h.times = function (n, r, t) { var e = Array(Math.max(0, n)); r = y(r, t, 1); for (var u = 0; u < n; u++)e[u] = r(u); return e }, h.random = function (n, r) { return null == r && (r = n, n = 0), n + Math.floor(Math.random() * (r - n + 1)) }, h.now = Date.now || function () { return (new Date).getTime() }; var L = { "&": "&", "<": "<", ">": ">", '"': """, "'": "'", "`": "`" }, P = h.invert(L), W = function (r) { var t = function (n) { return r[n] }, n = "(?:" + h.keys(r).join("|") + ")", e = RegExp(n), u = RegExp(n, "g"); return function (n) { return n = null == n ? "" : "" + n, e.test(n) ? n.replace(u, t) : n } }; h.escape = W(L), h.unescape = W(P), h.result = function (n, r, t) { h.isArray(r) || (r = [r]); var e = r.length; if (!e) return h.isFunction(t) ? t.call(n) : t; for (var u = 0; u < e; u++) { var i = null == n ? void 0 : n[r[u]]; void 0 === i && (i = t, u = e), n = h.isFunction(i) ? i.call(n) : i } return n }; var C = 0; h.uniqueId = function (n) { var r = ++C + ""; return n ? n + r : r }, h.templateSettings = { evaluate: /<%([\s\S]+?)%>/g, interpolate: /<%=([\s\S]+?)%>/g, escape: /<%-([\s\S]+?)%>/g }; var J = /(.)^/, U = { "'": "'", "\\": "\\", "\r": "r", "\n": "n", "\u2028": "u2028", "\u2029": "u2029" }, V = /\\|'|\r|\n|\u2028|\u2029/g, $ = function (n) { return "\\" + U[n] }; h.template = function (i, n, r) { !n && r && (n = r), n = h.defaults({}, n, h.templateSettings); var t, e = RegExp([(n.escape || J).source, (n.interpolate || J).source, (n.evaluate || J).source].join("|") + "|$", "g"), o = 0, a = "__p+='"; i.replace(e, function (n, r, t, e, u) { return a += i.slice(o, u).replace(V, $), o = u + n.length, r ? a += "'+\n((__t=(" + r + "))==null?'':_.escape(__t))+\n'" : t ? a += "'+\n((__t=(" + t + "))==null?'':__t)+\n'" : e && (a += "';\n" + e + "\n__p+='"), n }), a += "';\n", n.variable || (a = "with(obj||{}){\n" + a + "}\n"), a = "var __t,__p='',__j=Array.prototype.join," + "print=function(){__p+=__j.call(arguments,'');};\n" + a + "return __p;\n"; try { t = new Function(n.variable || "obj", "_", a) } catch (n) { throw n.source = a, n } var u = function (n) { return t.call(this, n, h) }, c = n.variable || "obj"; return u.source = "function(" + c + "){\n" + a + "}", u }, h.chain = function (n) { var r = h(n); return r._chain = !0, r }; var G = function (n, r) { return n._chain ? h(r).chain() : r }; h.mixin = function (t) { return h.each(h.functions(t), function (n) { var r = h[n] = t[n]; h.prototype[n] = function () { var n = [this._wrapped]; return u.apply(n, arguments), G(this, r.apply(h, n)) } }), h }, h.mixin(h), h.each(["pop", "push", "reverse", "shift", "sort", "splice", "unshift"], function (r) { var t = e[r]; h.prototype[r] = function () { var n = this._wrapped; return t.apply(n, arguments), "shift" !== r && "splice" !== r || 0 !== n.length || delete n[0], G(this, n) } }), h.each(["concat", "join", "slice"], function (n) { var r = e[n]; h.prototype[n] = function () { return G(this, r.apply(this._wrapped, arguments)) } }), h.prototype.value = function () { return this._wrapped }, h.prototype.valueOf = h.prototype.toJSON = h.prototype.value, h.prototype.toString = function () { return String(this._wrapped) }, "function" == typeof define && define.amd && define("underscore", [], function () { return h }) }();