(function(root, factory) {
"use strict";
if (typeof define === "function" && define.amd) {
define([], factory)
}
Cesium["viewerCesiumNavigationMixin"] = factory()
}
)(typeof window !== "undefined" ? window : typeof self !== "undefined" ? self : this, function() {
var requirejs, require, define;
(function(undef) {
var main, req, makeMap, handlers, defined = {}, waiting = {}, config = {}, defining = {}, hasOwn = Object.prototype.hasOwnProperty, aps = [].slice, jsSuffixRegExp = /\.js$/;
function hasProp(obj, prop) {
return hasOwn.call(obj, prop)
}
function normalize(name, baseName) {
var nameParts, nameSegment, mapValue, foundMap, lastIndex, foundI, foundStarMap, starI, i, j, part, normalizedBaseParts, baseParts = baseName && baseName.split("/"), map = config.map, starMap = map && map["*"] || {};
if (name) {
name = name.split("/");
lastIndex = name.length - 1;
if (config.nodeIdCompat && jsSuffixRegExp.test(name[lastIndex])) {
name[lastIndex] = name[lastIndex].replace(jsSuffixRegExp, "")
}
if (name[0].charAt(0) === "." && baseParts) {
normalizedBaseParts = baseParts.slice(0, baseParts.length - 1);
name = normalizedBaseParts.concat(name)
}
for (i = 0; i < name.length; i++) {
part = name[i];
if (part === ".") {
name.splice(i, 1);
i -= 1
} else if (part === "..") {
if (i === 0 || i === 1 && name[2] === ".." || name[i - 1] === "..") {
continue
} else if (i > 0) {
name.splice(i - 1, 2);
i -= 2
}
}
}
name = name.join("/")
}
if ((baseParts || starMap) && map) {
nameParts = name.split("/");
for (i = nameParts.length; i > 0; i -= 1) {
nameSegment = nameParts.slice(0, i).join("/");
if (baseParts) {
for (j = baseParts.length; j > 0; j -= 1) {
mapValue = map[baseParts.slice(0, j).join("/")];
if (mapValue) {
mapValue = mapValue[nameSegment];
if (mapValue) {
foundMap = mapValue;
foundI = i;
break
}
}
}
}
if (foundMap) {
break
}
if (!foundStarMap && starMap && starMap[nameSegment]) {
foundStarMap = starMap[nameSegment];
starI = i
}
}
if (!foundMap && foundStarMap) {
foundMap = foundStarMap;
foundI = starI
}
if (foundMap) {
nameParts.splice(0, foundI, foundMap);
name = nameParts.join("/")
}
}
return name
}
function makeRequire(relName, forceSync) {
return function() {
var args = aps.call(arguments, 0);
if (typeof args[0] !== "string" && args.length === 1) {
args.push(null)
}
return req.apply(undef, args.concat([relName, forceSync]))
}
}
function makeNormalize(relName) {
return function(name) {
return normalize(name, relName)
}
}
function makeLoad(depName) {
return function(value) {
defined[depName] = value
}
}
function callDep(name) {
if (hasProp(waiting, name)) {
var args = waiting[name];
delete waiting[name];
defining[name] = true;
main.apply(undef, args)
}
if (!hasProp(defined, name) && !hasProp(defining, name)) {
throw new Error("No " + name)
}
return defined[name]
}
function splitPrefix(name) {
var prefix, index = name ? name.indexOf("!") : -1;
if (index > -1) {
prefix = name.substring(0, index);
name = name.substring(index + 1, name.length)
}
return [prefix, name]
}
makeMap = function(name, relName) {
var plugin, parts = splitPrefix(name), prefix = parts[0];
name = parts[1];
if (prefix) {
prefix = normalize(prefix, relName);
plugin = callDep(prefix)
}
if (prefix) {
if (plugin && plugin.normalize) {
name = plugin.normalize(name, makeNormalize(relName))
} else {
name = normalize(name, relName)
}
} else {
name = normalize(name, relName);
parts = splitPrefix(name);
prefix = parts[0];
name = parts[1];
if (prefix) {
plugin = callDep(prefix)
}
}
return {
f: prefix ? prefix + "!" + name : name,
n: name,
pr: prefix,
p: plugin
}
}
;
function makeConfig(name) {
return function() {
return config && config.config && config.config[name] || {}
}
}
handlers = {
require: function(name) {
return makeRequire(name)
},
exports: function(name) {
var e = defined[name];
if (typeof e !== "undefined") {
return e
} else {
return defined[name] = {}
}
},
module: function(name) {
return {
id: name,
uri: "",
exports: defined[name],
config: makeConfig(name)
}
}
};
main = function(name, deps, callback, relName) {
var cjsModule, depName, ret, map, i, args = [], callbackType = typeof callback, usingExports;
relName = relName || name;
if (callbackType === "undefined" || callbackType === "function") {
deps = !deps.length && callback.length ? ["require", "exports", "module"] : deps;
for (i = 0; i < deps.length; i += 1) {
map = makeMap(deps[i], relName);
depName = map.f;
if (depName === "require") {
args[i] = handlers.require(name)
} else if (depName === "exports") {
args[i] = handlers.exports(name);
usingExports = true
} else if (depName === "module") {
cjsModule = args[i] = handlers.module(name)
} else if (hasProp(defined, depName) || hasProp(waiting, depName) || hasProp(defining, depName)) {
args[i] = callDep(depName)
} else if (map.p) {
map.p.load(map.n, makeRequire(relName, true), makeLoad(depName), {});
args[i] = defined[depName]
} else {
throw new Error(name + " missing " + depName)
}
}
ret = callback ? callback.apply(defined[name], args) : undefined;
if (name) {
if (cjsModule && cjsModule.exports !== undef && cjsModule.exports !== defined[name]) {
defined[name] = cjsModule.exports
} else if (ret !== undef || !usingExports) {
defined[name] = ret
}
}
} else if (name) {
defined[name] = callback
}
}
;
requirejs = require = req = function(deps, callback, relName, forceSync, alt) {
if (typeof deps === "string") {
if (handlers[deps]) {
return handlers[deps](callback)
}
return callDep(makeMap(deps, callback).f)
} else if (!deps.splice) {
config = deps;
if (config.deps) {
req(config.deps, config.callback)
}
if (!callback) {
return
}
if (callback.splice) {
deps = callback;
callback = relName;
relName = null
} else {
deps = undef
}
}
callback = callback || function() {}
;
if (typeof relName === "function") {
relName = forceSync;
forceSync = alt
}
if (forceSync) {
main(undef, deps, callback, relName)
} else {
setTimeout(function() {
main(undef, deps, callback, relName)
}, 4)
}
return req
}
;
req.config = function(cfg) {
return req(cfg)
}
;
requirejs._defined = defined;
define = function(name, deps, callback) {
if (typeof name !== "string") {
throw new Error("See almond README: incorrect module build, no module name")
}
if (!deps.splice) {
callback = deps;
deps = []
}
if (!hasProp(defined, name) && !hasProp(waiting, name)) {
waiting[name] = [name, deps, callback]
}
}
;
define.amd = {
jQuery: true
}
}
)();
define("almond", function() {});
(function() {
(function(n) {
var x = this || (0,
eval)("this")
, u = x.document
, M = x.navigator
, v = x.jQuery
, F = x.JSON;
(function(n) {
"function" === typeof define && define.amd ? define("knockout", ["exports", "require"], n) : "object" === typeof exports && "object" === typeof module ? n(module.exports || exports) : n(x.ko = {})
}
)(function(N, O) {
function J(a, c) {
return null === a || typeof a in T ? a === c : !1
}
function U(b, c) {
var d;
return function() {
d || (d = a.a.setTimeout(function() {
d = n;
b()
}, c))
}
}
function V(b, c) {
var d;
return function() {
clearTimeout(d);
d = a.a.setTimeout(b, c)
}
}
function W(a, c) {
c && c !== I ? "beforeChange" === c ? this.Kb(a) : this.Ha(a, c) : this.Lb(a)
}
function X(a, c) {
null !== c && c.k && c.k()
}
function Y(a, c) {
var d = this.Hc
, e = d[s];
e.R || (this.lb && this.Ma[c] ? (d.Pb(c, a, this.Ma[c]),
this.Ma[c] = null,
--this.lb) : e.r[c] || d.Pb(c, a, e.s ? {
ia: a
} : d.uc(a)))
}
function K(b, c, d, e) {
a.d[b] = {
init: function(b, g, k, l, m) {
var h, r;
a.m(function() {
var q = a.a.c(g())
, p = !d !== !q
, A = !r;
if (A || c || p !== h)
A && a.va.Aa() && (r = a.a.ua(a.f.childNodes(b), !0)),
p ? (A || a.f.da(b, a.a.ua(r)),
a.eb(e ? e(m, q) : m, b)) : a.f.xa(b),
h = p
}, null, {
i: b
});
return {
controlsDescendantBindings: !0
}
}
};
a.h.ta[b] = !1;
a.f.Z[b] = !0
}
var a = "undefined" !== typeof N ? N : {};
a.b = function(b, c) {
for (var d = b.split("."), e = a, f = 0; f < d.length - 1; f++)
e = e[d[f]];
e[d[d.length - 1]] = c
}
;
a.G = function(a, c, d) {
a[c] = d
}
;
a.version = "3.4.0";
a.b("version", a.version);
a.options = {
deferUpdates: !1,
useOnlyNativeEvents: !1
};
a.a = function() {
function b(a, b) {
for (var c in a)
a.hasOwnProperty(c) && b(c, a[c])
}
function c(a, b) {
if (b)
for (var c in b)
b.hasOwnProperty(c) && (a[c] = b[c]);
return a
}
function d(a, b) {
a.__proto__ = b;
return a
}
function e(b, c, d, e) {
var h = b[c].match(r) || [];
a.a.q(d.match(r), function(b) {
a.a.pa(h, b, e)
});
b[c] = h.join(" ")
}
var f = {
__proto__: []
}instanceof Array
, g = "function" === typeof Symbol
, k = {}
, l = {};
k[M && /Firefox\/2/i.test(M.userAgent) ? "KeyboardEvent" : "UIEvents"] = ["keyup", "keydown", "keypress"];
k.MouseEvents = "click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave".split(" ");
b(k, function(a, b) {
if (b.length)
for (var c = 0, d = b.length; c < d; c++)
l[b[c]] = a
});
var m = {
propertychange: !0
}
, h = u && function() {
for (var a = 3, b = u.createElement("div"), c = b.getElementsByTagName("i"); b.innerHTML = "",
c[0]; )
;
return 4 < a ? a : n
}()
, r = /\S+/g;
return {
cc: ["authenticity_token", /^__RequestVerificationToken(_.*)?$/],
q: function(a, b) {
for (var c = 0, d = a.length; c < d; c++)
b(a[c], c)
},
o: function(a, b) {
if ("function" == typeof Array.prototype.indexOf)
return Array.prototype.indexOf.call(a, b);
for (var c = 0, d = a.length; c < d; c++)
if (a[c] === b)
return c;
return -1
},
Sb: function(a, b, c) {
for (var d = 0, e = a.length; d < e; d++)
if (b.call(c, a[d], d))
return a[d];
return null
},
La: function(b, c) {
var d = a.a.o(b, c);
0 < d ? b.splice(d, 1) : 0 === d && b.shift()
},
Tb: function(b) {
b = b || [];
for (var c = [], d = 0, e = b.length; d < e; d++)
0 > a.a.o(c, b[d]) && c.push(b[d]);
return c
},
fb: function(a, b) {
a = a || [];
for (var c = [], d = 0, e = a.length; d < e; d++)
c.push(b(a[d], d));
return c
},
Ka: function(a, b) {
a = a || [];
for (var c = [], d = 0, e = a.length; d < e; d++)
b(a[d], d) && c.push(a[d]);
return c
},
ra: function(a, b) {
if (b instanceof Array)
a.push.apply(a, b);
else
for (var c = 0, d = b.length; c < d; c++)
a.push(b[c]);
return a
},
pa: function(b, c, d) {
var e = a.a.o(a.a.zb(b), c);
0 > e ? d && b.push(c) : d || b.splice(e, 1)
},
ka: f,
extend: c,
Xa: d,
Ya: f ? d : c,
D: b,
Ca: function(a, b) {
if (!a)
return a;
var c = {}, d;
for (d in a)
a.hasOwnProperty(d) && (c[d] = b(a[d], d, a));
return c
},
ob: function(b) {
for (; b.firstChild; )
a.removeNode(b.firstChild)
},
jc: function(b) {
b = a.a.V(b);
for (var c = (b[0] && b[0].ownerDocument || u).createElement("div"), d = 0, e = b.length; d < e; d++)
c.appendChild(a.$(b[d]));
return c
},
ua: function(b, c) {
for (var d = 0, e = b.length, h = []; d < e; d++) {
var m = b[d].cloneNode(!0);
h.push(c ? a.$(m) : m)
}
return h
},
da: function(b, c) {
a.a.ob(b);
if (c)
for (var d = 0, e = c.length; d < e; d++)
b.appendChild(c[d])
},
qc: function(b, c) {
var d = b.nodeType ? [b] : b;
if (0 < d.length) {
for (var e = d[0], h = e.parentNode, m = 0, l = c.length; m < l; m++)
h.insertBefore(c[m], e);
m = 0;
for (l = d.length; m < l; m++)
a.removeNode(d[m])
}
},
za: function(a, b) {
if (a.length) {
for (b = 8 === b.nodeType && b.parentNode || b; a.length && a[0].parentNode !== b; )
a.splice(0, 1);
for (; 1 < a.length && a[a.length - 1].parentNode !== b; )
a.length--;
if (1 < a.length) {
var c = a[0]
, d = a[a.length - 1];
for (a.length = 0; c !== d; )
a.push(c),
c = c.nextSibling;
a.push(d)
}
}
return a
},
sc: function(a, b) {
7 > h ? a.setAttribute("selected", b) : a.selected = b
},
$a: function(a) {
return null === a || a === n ? "" : a.trim ? a.trim() : a.toString().replace(/^[\s\xa0]+|[\s\xa0]+$/g, "")
},
nd: function(a, b) {
a = a || "";
return b.length > a.length ? !1 : a.substring(0, b.length) === b
},
Mc: function(a, b) {
if (a === b)
return !0;
if (11 === a.nodeType)
return !1;
if (b.contains)
return b.contains(3 === a.nodeType ? a.parentNode : a);
if (b.compareDocumentPosition)
return 16 == (b.compareDocumentPosition(a) & 16);
for (; a && a != b; )
a = a.parentNode;
return !!a
},
nb: function(b) {
return a.a.Mc(b, b.ownerDocument.documentElement)
},
Qb: function(b) {
return !!a.a.Sb(b, a.a.nb)
},
A: function(a) {
return a && a.tagName && a.tagName.toLowerCase()
},
Wb: function(b) {
return a.onError ? function() {
try {
return b.apply(this, arguments)
} catch (c) {
throw a.onError && a.onError(c),
c
}
}
: b
},
setTimeout: function(b, c) {
return setTimeout(a.a.Wb(b), c)
},
$b: function(b) {
setTimeout(function() {
a.onError && a.onError(b);
throw b
}, 0)
},
p: function(b, c, d) {
var e = a.a.Wb(d);
d = h && m[c];
if (a.options.useOnlyNativeEvents || d || !v)
if (d || "function" != typeof b.addEventListener)
if ("undefined" != typeof b.attachEvent) {
var l = function(a) {
e.call(b, a)
}
, f = "on" + c;
b.attachEvent(f, l);
a.a.F.oa(b, function() {
b.detachEvent(f, l)
})
} else
throw Error("Browser doesn't support addEventListener or attachEvent");
else
b.addEventListener(c, e, !1);
else
v(b).bind(c, e)
},
Da: function(b, c) {
if (!b || !b.nodeType)
throw Error("element must be a DOM node when calling triggerEvent");
var d;
"input" === a.a.A(b) && b.type && "click" == c.toLowerCase() ? (d = b.type,
d = "checkbox" == d || "radio" == d) : d = !1;
if (a.options.useOnlyNativeEvents || !v || d)
if ("function" == typeof u.createEvent)
if ("function" == typeof b.dispatchEvent)
d = u.createEvent(l[c] || "HTMLEvents"),
d.initEvent(c, !0, !0, x, 0, 0, 0, 0, 0, !1, !1, !1, !1, 0, b),
b.dispatchEvent(d);
else
throw Error("The supplied element doesn't support dispatchEvent");
else if (d && b.click)
b.click();
else if ("undefined" != typeof b.fireEvent)
b.fireEvent("on" + c);
else
throw Error("Browser doesn't support triggering events");
else
v(b).trigger(c)
},
c: function(b) {
return a.H(b) ? b() : b
},
zb: function(b) {
return a.H(b) ? b.t() : b
},
bb: function(b, c, d) {
var h;
c && ("object" === typeof b.classList ? (h = b.classList[d ? "add" : "remove"],
a.a.q(c.match(r), function(a) {
h.call(b.classList, a)
})) : "string" === typeof b.className.baseVal ? e(b.className, "baseVal", c, d) : e(b, "className", c, d))
},
Za: function(b, c) {
var d = a.a.c(c);
if (null === d || d === n)
d = "";
var e = a.f.firstChild(b);
!e || 3 != e.nodeType || a.f.nextSibling(e) ? a.f.da(b, [b.ownerDocument.createTextNode(d)]) : e.data = d;
a.a.Rc(b)
},
rc: function(a, b) {
a.name = b;
if (7 >= h)
try {
a.mergeAttributes(u.createElement(""), !1)
} catch (c) {}
},
Rc: function(a) {
9 <= h && (a = 1 == a.nodeType ? a : a.parentNode,
a.style && (a.style.zoom = a.style.zoom))
},
Nc: function(a) {
if (h) {
var b = a.style.width;
a.style.width = 0;
a.style.width = b
}
},
hd: function(b, c) {
b = a.a.c(b);
c = a.a.c(c);
for (var d = [], e = b; e <= c; e++)
d.push(e);
return d
},
V: function(a) {
for (var b = [], c = 0, d = a.length; c < d; c++)
b.push(a[c]);
return b
},
Yb: function(a) {
return g ? Symbol(a) : a
},
rd: 6 === h,
sd: 7 === h,
C: h,
ec: function(b, c) {
for (var d = a.a.V(b.getElementsByTagName("input")).concat(a.a.V(b.getElementsByTagName("textarea"))), e = "string" == typeof c ? function(a) {
return a.name === c
}
: function(a) {
return c.test(a.name)
}
, h = [], m = d.length - 1; 0 <= m; m--)
e(d[m]) && h.push(d[m]);
return h
},
ed: function(b) {
return "string" == typeof b && (b = a.a.$a(b)) ? F && F.parse ? F.parse(b) : new Function("return " + b)() : null
},
Eb: function(b, c, d) {
if (!F || !F.stringify)
throw Error("Cannot find JSON.stringify(). Some browsers (e.g., IE < 8) don't support it natively, but you can overcome this by adding a script reference to json2.js, downloadable from http://www.json.org/json2.js");
return F.stringify(a.a.c(b), c, d)
},
fd: function(c, d, e) {
e = e || {};
var h = e.params || {}
, m = e.includeFields || this.cc
, l = c;
if ("object" == typeof c && "form" === a.a.A(c))
for (var l = c.action, f = m.length - 1; 0 <= f; f--)
for (var g = a.a.ec(c, m[f]), k = g.length - 1; 0 <= k; k--)
h[g[k].name] = g[k].value;
d = a.a.c(d);
var r = u.createElement("form");
r.style.display = "none";
r.action = l;
r.method = "post";
for (var n in d)
c = u.createElement("input"),
c.type = "hidden",
c.name = n,
c.value = a.a.Eb(a.a.c(d[n])),
r.appendChild(c);
b(h, function(a, b) {
var c = u.createElement("input");
c.type = "hidden";
c.name = a;
c.value = b;
r.appendChild(c)
});
u.body.appendChild(r);
e.submitter ? e.submitter(r) : r.submit();
setTimeout(function() {
r.parentNode.removeChild(r)
}, 0)
}
}
}();
a.b("utils", a.a);
a.b("utils.arrayForEach", a.a.q);
a.b("utils.arrayFirst", a.a.Sb);
a.b("utils.arrayFilter", a.a.Ka);
a.b("utils.arrayGetDistinctValues", a.a.Tb);
a.b("utils.arrayIndexOf", a.a.o);
a.b("utils.arrayMap", a.a.fb);
a.b("utils.arrayPushAll", a.a.ra);
a.b("utils.arrayRemoveItem", a.a.La);
a.b("utils.extend", a.a.extend);
a.b("utils.fieldsIncludedWithJsonPost", a.a.cc);
a.b("utils.getFormFields", a.a.ec);
a.b("utils.peekObservable", a.a.zb);
a.b("utils.postJson", a.a.fd);
a.b("utils.parseJson", a.a.ed);
a.b("utils.registerEventHandler", a.a.p);
a.b("utils.stringifyJson", a.a.Eb);
a.b("utils.range", a.a.hd);
a.b("utils.toggleDomNodeCssClass", a.a.bb);
a.b("utils.triggerEvent", a.a.Da);
a.b("utils.unwrapObservable", a.a.c);
a.b("utils.objectForEach", a.a.D);
a.b("utils.addOrRemoveItem", a.a.pa);
a.b("utils.setTextContent", a.a.Za);
a.b("unwrap", a.a.c);
Function.prototype.bind || (Function.prototype.bind = function(a) {
var c = this;
if (1 === arguments.length)
return function() {
return c.apply(a, arguments)
}
;
var d = Array.prototype.slice.call(arguments, 1);
return function() {
var e = d.slice(0);
e.push.apply(e, arguments);
return c.apply(a, e)
}
}
);
a.a.e = new function() {
function a(b, g) {
var k = b[d];
if (!k || "null" === k || !e[k]) {
if (!g)
return n;
k = b[d] = "ko" + c++;
e[k] = {}
}
return e[k]
}
var c = 0
, d = "__ko__" + (new Date).getTime()
, e = {};
return {
get: function(c, d) {
var e = a(c, !1);
return e === n ? n : e[d]
},
set: function(c, d, e) {
if (e !== n || a(c, !1) !== n)
a(c, !0)[d] = e
},
clear: function(a) {
var b = a[d];
return b ? (delete e[b],
a[d] = null,
!0) : !1
},
I: function() {
return c++ + d
}
}
}
;
a.b("utils.domData", a.a.e);
a.b("utils.domData.clear", a.a.e.clear);
a.a.F = new function() {
function b(b, c) {
var e = a.a.e.get(b, d);
e === n && c && (e = [],
a.a.e.set(b, d, e));
return e
}
function c(d) {
var e = b(d, !1);
if (e)
for (var e = e.slice(0), l = 0; l < e.length; l++)
e[l](d);
a.a.e.clear(d);
a.a.F.cleanExternalData(d);
if (f[d.nodeType])
for (e = d.firstChild; d = e; )
e = d.nextSibling,
8 === d.nodeType && c(d)
}
var d = a.a.e.I()
, e = {
1: !0,
8: !0,
9: !0
}
, f = {
1: !0,
9: !0
};
return {
oa: function(a, c) {
if ("function" != typeof c)
throw Error("Callback must be a function");
b(a, !0).push(c)
},
pc: function(c, e) {
var l = b(c, !1);
l && (a.a.La(l, e),
0 == l.length && a.a.e.set(c, d, n))
},
$: function(b) {
if (e[b.nodeType] && (c(b),
f[b.nodeType])) {
var d = [];
a.a.ra(d, b.getElementsByTagName("*"));
for (var l = 0, m = d.length; l < m; l++)
c(d[l])
}
return b
},
removeNode: function(b) {
a.$(b);
b.parentNode && b.parentNode.removeChild(b)
},
cleanExternalData: function(a) {
v && "function" == typeof v.cleanData && v.cleanData([a])
}
}
}
;
a.$ = a.a.F.$;
a.removeNode = a.a.F.removeNode;
a.b("cleanNode", a.$);
a.b("removeNode", a.removeNode);
a.b("utils.domNodeDisposal", a.a.F);
a.b("utils.domNodeDisposal.addDisposeCallback", a.a.F.oa);
a.b("utils.domNodeDisposal.removeDisposeCallback", a.a.F.pc);
(function() {
var b = [0, "", ""]
, c = [1, "
"]
, d = [3, "
"]
, e = [1, "
"]
, f = {
thead: c,
tbody: c,
tfoot: c,
tr: [2, "
"],
td: d,
th: d,
option: e,
optgroup: e
}
, g = 8 >= a.a.C;
a.a.ma = function(c, d) {
var e;
if (v)
if (v.parseHTML)
e = v.parseHTML(c, d) || [];
else {
if ((e = v.clean([c], d)) && e[0]) {
for (var h = e[0]; h.parentNode && 11 !== h.parentNode.nodeType; )
h = h.parentNode;
h.parentNode && h.parentNode.removeChild(h)
}
}
else {
(e = d) || (e = u);
var h = e.parentWindow || e.defaultView || x, r = a.a.$a(c).toLowerCase(), q = e.createElement("div"), p;
p = (r = r.match(/^<([a-z]+)[ >]/)) && f[r[1]] || b;
r = p[0];
p = "ignored
" + p[1] + c + p[2] + "
";
"function" == typeof h.innerShiv ? q.appendChild(h.innerShiv(p)) : (g && e.appendChild(q),
q.innerHTML = p,
g && q.parentNode.removeChild(q));
for (; r--; )
q = q.lastChild;
e = a.a.V(q.lastChild.childNodes)
}
return e
}
;
a.a.Cb = function(b, c) {
a.a.ob(b);
c = a.a.c(c);
if (null !== c && c !== n)
if ("string" != typeof c && (c = c.toString()),
v)
v(b).html(c);
else
for (var d = a.a.ma(c, b.ownerDocument), e = 0; e < d.length; e++)
b.appendChild(d[e])
}
}
)();
a.b("utils.parseHtmlFragment", a.a.ma);
a.b("utils.setHtml", a.a.Cb);
a.M = function() {
function b(c, e) {
if (c)
if (8 == c.nodeType) {
var f = a.M.lc(c.nodeValue);
null != f && e.push({
Lc: c,
cd: f
})
} else if (1 == c.nodeType)
for (var f = 0, g = c.childNodes, k = g.length; f < k; f++)
b(g[f], e)
}
var c = {};
return {
wb: function(a) {
if ("function" != typeof a)
throw Error("You can only pass a function to ko.memoization.memoize()");
var b = (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1) + (4294967296 * (1 + Math.random()) | 0).toString(16).substring(1);
c[b] = a;
return ""
},
xc: function(a, b) {
var f = c[a];
if (f === n)
throw Error("Couldn't find any memo with ID " + a + ". Perhaps it's already been unmemoized.");
try {
return f.apply(null, b || []),
!0
} finally {
delete c[a]
}
},
yc: function(c, e) {
var f = [];
b(c, f);
for (var g = 0, k = f.length; g < k; g++) {
var l = f[g].Lc
, m = [l];
e && a.a.ra(m, e);
a.M.xc(f[g].cd, m);
l.nodeValue = "";
l.parentNode && l.parentNode.removeChild(l)
}
},
lc: function(a) {
return (a = a.match(/^\[ko_memo\:(.*?)\]$/)) ? a[1] : null
}
}
}();
a.b("memoization", a.M);
a.b("memoization.memoize", a.M.wb);
a.b("memoization.unmemoize", a.M.xc);
a.b("memoization.parseMemoText", a.M.lc);
a.b("memoization.unmemoizeDomNodeAndDescendants", a.M.yc);
a.Y = function() {
function b() {
if (e)
for (var b = e, c = 0, m; g < e; )
if (m = d[g++]) {
if (g > b) {
if (5e3 <= ++c) {
g = e;
a.a.$b(Error("'Too much recursion' after processing " + c + " task groups."));
break
}
b = e
}
try {
m()
} catch (h) {
a.a.$b(h)
}
}
}
function c() {
b();
g = e = d.length = 0
}
var d = []
, e = 0
, f = 1
, g = 0;
return {
scheduler: x.MutationObserver ? function(a) {
var b = u.createElement("div");
new MutationObserver(a).observe(b, {
attributes: !0
});
return function() {
b.classList.toggle("foo")
}
}(c) : u && "onreadystatechange"in u.createElement("script") ? function(a) {
var b = u.createElement("script");
b.onreadystatechange = function() {
b.onreadystatechange = null;
u.documentElement.removeChild(b);
b = null;
a()
}
;
u.documentElement.appendChild(b)
}
: function(a) {
setTimeout(a, 0)
}
,
Wa: function(b) {
e || a.Y.scheduler(c);
d[e++] = b;
return f++
},
cancel: function(a) {
a -= f - e;
a >= g && a < e && (d[a] = null)
},
resetForTesting: function() {
var a = e - g;
g = e = d.length = 0;
return a
},
md: b
}
}();
a.b("tasks", a.Y);
a.b("tasks.schedule", a.Y.Wa);
a.b("tasks.runEarly", a.Y.md);
a.ya = {
throttle: function(b, c) {
b.throttleEvaluation = c;
var d = null;
return a.B({
read: b,
write: function(e) {
clearTimeout(d);
d = a.a.setTimeout(function() {
b(e)
}, c)
}
})
},
rateLimit: function(a, c) {
var d, e, f;
"number" == typeof c ? d = c : (d = c.timeout,
e = c.method);
a.cb = !1;
f = "notifyWhenChangesStop" == e ? V : U;
a.Ta(function(a) {
return f(a, d)
})
},
deferred: function(b, c) {
if (!0 !== c)
throw Error("The 'deferred' extender only accepts the value 'true', because it is not supported to turn deferral off once enabled.");
b.cb || (b.cb = !0,
b.Ta(function(c) {
var e;
return function() {
a.Y.cancel(e);
e = a.Y.Wa(c);
b.notifySubscribers(n, "dirty")
}
}))
},
notify: function(a, c) {
a.equalityComparer = "always" == c ? null : J
}
};
var T = {
undefined: 1,
"boolean": 1,
number: 1,
string: 1
};
a.b("extenders", a.ya);
a.vc = function(b, c, d) {
this.ia = b;
this.gb = c;
this.Kc = d;
this.R = !1;
a.G(this, "dispose", this.k)
}
;
a.vc.prototype.k = function() {
this.R = !0;
this.Kc()
}
;
a.J = function() {
a.a.Ya(this, D);
D.rb(this)
}
;
var I = "change"
, D = {
rb: function(a) {
a.K = {};
a.Nb = 1
},
X: function(b, c, d) {
var e = this;
d = d || I;
var f = new a.vc(e,c ? b.bind(c) : b,function() {
a.a.La(e.K[d], f);
e.Ia && e.Ia(d)
}
);
e.sa && e.sa(d);
e.K[d] || (e.K[d] = []);
e.K[d].push(f);
return f
},
notifySubscribers: function(b, c) {
c = c || I;
c === I && this.zc();
if (this.Pa(c))
try {
a.l.Ub();
for (var d = this.K[c].slice(0), e = 0, f; f = d[e]; ++e)
f.R || f.gb(b)
} finally {
a.l.end()
}
},
Na: function() {
return this.Nb
},
Uc: function(a) {
return this.Na() !== a
},
zc: function() {
++this.Nb
},
Ta: function(b) {
var c = this, d = a.H(c), e, f, g;
c.Ha || (c.Ha = c.notifySubscribers,
c.notifySubscribers = W);
var k = b(function() {
c.Mb = !1;
d && g === c && (g = c());
e = !1;
c.tb(f, g) && c.Ha(f = g)
});
c.Lb = function(a) {
c.Mb = e = !0;
g = a;
k()
}
;
c.Kb = function(a) {
e || (f = a,
c.Ha(a, "beforeChange"))
}
},
Pa: function(a) {
return this.K[a] && this.K[a].length
},
Sc: function(b) {
if (b)
return this.K[b] && this.K[b].length || 0;
var c = 0;
a.a.D(this.K, function(a, b) {
"dirty" !== a && (c += b.length)
});
return c
},
tb: function(a, c) {
return !this.equalityComparer || !this.equalityComparer(a, c)
},
extend: function(b) {
var c = this;
b && a.a.D(b, function(b, e) {
var f = a.ya[b];
"function" == typeof f && (c = f(c, e) || c)
});
return c
}
};
a.G(D, "subscribe", D.X);
a.G(D, "extend", D.extend);
a.G(D, "getSubscriptionsCount", D.Sc);
a.a.ka && a.a.Xa(D, Function.prototype);
a.J.fn = D;
a.hc = function(a) {
return null != a && "function" == typeof a.X && "function" == typeof a.notifySubscribers
}
;
a.b("subscribable", a.J);
a.b("isSubscribable", a.hc);
a.va = a.l = function() {
function b(a) {
d.push(e);
e = a
}
function c() {
e = d.pop()
}
var d = [], e, f = 0;
return {
Ub: b,
end: c,
oc: function(b) {
if (e) {
if (!a.hc(b))
throw Error("Only subscribable things can act as dependencies");
e.gb.call(e.Gc, b, b.Cc || (b.Cc = ++f))
}
},
w: function(a, d, e) {
try {
return b(),
a.apply(d, e || [])
} finally {
c()
}
},
Aa: function() {
if (e)
return e.m.Aa()
},
Sa: function() {
if (e)
return e.Sa
}
}
}();
a.b("computedContext", a.va);
a.b("computedContext.getDependenciesCount", a.va.Aa);
a.b("computedContext.isInitial", a.va.Sa);
a.b("ignoreDependencies", a.qd = a.l.w);
var E = a.a.Yb("_latestValue");
a.N = function(b) {
function c() {
if (0 < arguments.length)
return c.tb(c[E], arguments[0]) && (c.ga(),
c[E] = arguments[0],
c.fa()),
this;
a.l.oc(c);
return c[E]
}
c[E] = b;
a.a.ka || a.a.extend(c, a.J.fn);
a.J.fn.rb(c);
a.a.Ya(c, B);
a.options.deferUpdates && a.ya.deferred(c, !0);
return c
}
;
var B = {
equalityComparer: J,
t: function() {
return this[E]
},
fa: function() {
this.notifySubscribers(this[E])
},
ga: function() {
this.notifySubscribers(this[E], "beforeChange")
}
};
a.a.ka && a.a.Xa(B, a.J.fn);
var H = a.N.gd = "__ko_proto__";
B[H] = a.N;
a.Oa = function(b, c) {
return null === b || b === n || b[H] === n ? !1 : b[H] === c ? !0 : a.Oa(b[H], c)
}
;
a.H = function(b) {
return a.Oa(b, a.N)
}
;
a.Ba = function(b) {
return "function" == typeof b && b[H] === a.N || "function" == typeof b && b[H] === a.B && b.Vc ? !0 : !1
}
;
a.b("observable", a.N);
a.b("isObservable", a.H);
a.b("isWriteableObservable", a.Ba);
a.b("isWritableObservable", a.Ba);
a.b("observable.fn", B);
a.G(B, "peek", B.t);
a.G(B, "valueHasMutated", B.fa);
a.G(B, "valueWillMutate", B.ga);
a.la = function(b) {
b = b || [];
if ("object" != typeof b || !("length"in b))
throw Error("The argument passed when initializing an observable array must be an array, or null, or undefined.");
b = a.N(b);
a.a.Ya(b, a.la.fn);
return b.extend({
trackArrayChanges: !0
})
}
;
a.la.fn = {
remove: function(b) {
for (var c = this.t(), d = [], e = "function" != typeof b || a.H(b) ? function(a) {
return a === b
}
: b, f = 0; f < c.length; f++) {
var g = c[f];
e(g) && (0 === d.length && this.ga(),
d.push(g),
c.splice(f, 1),
f--)
}
d.length && this.fa();
return d
},
removeAll: function(b) {
if (b === n) {
var c = this.t()
, d = c.slice(0);
this.ga();
c.splice(0, c.length);
this.fa();
return d
}
return b ? this.remove(function(c) {
return 0 <= a.a.o(b, c)
}) : []
},
destroy: function(b) {
var c = this.t()
, d = "function" != typeof b || a.H(b) ? function(a) {
return a === b
}
: b;
this.ga();
for (var e = c.length - 1; 0 <= e; e--)
d(c[e]) && (c[e]._destroy = !0);
this.fa()
},
destroyAll: function(b) {
return b === n ? this.destroy(function() {
return !0
}) : b ? this.destroy(function(c) {
return 0 <= a.a.o(b, c)
}) : []
},
indexOf: function(b) {
var c = this();
return a.a.o(c, b)
},
replace: function(a, c) {
var d = this.indexOf(a);
0 <= d && (this.ga(),
this.t()[d] = c,
this.fa())
}
};
a.a.ka && a.a.Xa(a.la.fn, a.N.fn);
a.a.q("pop push reverse shift sort splice unshift".split(" "), function(b) {
a.la.fn[b] = function() {
var a = this.t();
this.ga();
this.Vb(a, b, arguments);
var d = a[b].apply(a, arguments);
this.fa();
return d === a ? this : d
}
});
a.a.q(["slice"], function(b) {
a.la.fn[b] = function() {
var a = this();
return a[b].apply(a, arguments)
}
});
a.b("observableArray", a.la);
a.ya.trackArrayChanges = function(b, c) {
function d() {
if (!e) {
e = !0;
var c = b.notifySubscribers;
b.notifySubscribers = function(a, b) {
b && b !== I || ++k;
return c.apply(this, arguments)
}
;
var d = [].concat(b.t() || []);
f = null;
g = b.X(function(c) {
c = [].concat(c || []);
if (b.Pa("arrayChange")) {
var e;
if (!f || 1 < k)
f = a.a.ib(d, c, b.hb);
e = f
}
d = c;
f = null;
k = 0;
e && e.length && b.notifySubscribers(e, "arrayChange")
})
}
}
b.hb = {};
c && "object" == typeof c && a.a.extend(b.hb, c);
b.hb.sparse = !0;
if (!b.Vb) {
var e = !1, f = null, g, k = 0, l = b.sa, m = b.Ia;
b.sa = function(a) {
l && l.call(b, a);
"arrayChange" === a && d()
}
;
b.Ia = function(a) {
m && m.call(b, a);
"arrayChange" !== a || b.Pa("arrayChange") || (g.k(),
e = !1)
}
;
b.Vb = function(b, c, d) {
function m(a, b, c) {
return l[l.length] = {
status: a,
value: b,
index: c
}
}
if (e && !k) {
var l = []
, g = b.length
, t = d.length
, G = 0;
switch (c) {
case "push":
G = g;
case "unshift":
for (c = 0; c < t; c++)
m("added", d[c], G + c);
break;
case "pop":
G = g - 1;
case "shift":
g && m("deleted", b[G], G);
break;
case "splice":
c = Math.min(Math.max(0, 0 > d[0] ? g + d[0] : d[0]), g);
for (var g = 1 === t ? g : Math.min(c + (d[1] || 0), g), t = c + t - 2, G = Math.max(g, t), P = [], n = [], Q = 2; c < G; ++c,
++Q)
c < g && n.push(m("deleted", b[c], c)),
c < t && P.push(m("added", d[Q], c));
a.a.dc(n, P);
break;
default:
return
}
f = l
}
}
}
}
;
var s = a.a.Yb("_state");
a.m = a.B = function(b, c, d) {
function e() {
if (0 < arguments.length) {
if ("function" === typeof f)
f.apply(g.pb, arguments);
else
throw Error("Cannot write a value to a ko.computed unless you specify a 'write' option. If you wish to read the current value, don't pass any parameters.");
return this
}
a.l.oc(e);
(g.S || g.s && e.Qa()) && e.aa();
return g.T
}
"object" === typeof b ? d = b : (d = d || {},
b && (d.read = b));
if ("function" != typeof d.read)
throw Error("Pass a function that returns the value of the ko.computed");
var f = d.write
, g = {
T: n,
S: !0,
Ra: !1,
Fb: !1,
R: !1,
Va: !1,
s: !1,
jd: d.read,
pb: c || d.owner,
i: d.disposeWhenNodeIsRemoved || d.i || null,
wa: d.disposeWhen || d.wa,
mb: null,
r: {},
L: 0,
bc: null
};
e[s] = g;
e.Vc = "function" === typeof f;
a.a.ka || a.a.extend(e, a.J.fn);
a.J.fn.rb(e);
a.a.Ya(e, z);
d.pure ? (g.Va = !0,
g.s = !0,
a.a.extend(e, $)) : d.deferEvaluation && a.a.extend(e, aa);
a.options.deferUpdates && a.ya.deferred(e, !0);
g.i && (g.Fb = !0,
g.i.nodeType || (g.i = null));
g.s || d.deferEvaluation || e.aa();
g.i && e.ba() && a.a.F.oa(g.i, g.mb = function() {
e.k()
}
);
return e
}
;
var z = {
equalityComparer: J,
Aa: function() {
return this[s].L
},
Pb: function(a, c, d) {
if (this[s].Va && c === this)
throw Error("A 'pure' computed must not be called recursively");
this[s].r[a] = d;
d.Ga = this[s].L++;
d.na = c.Na()
},
Qa: function() {
var a, c, d = this[s].r;
for (a in d)
if (d.hasOwnProperty(a) && (c = d[a],
c.ia.Uc(c.na)))
return !0
},
bd: function() {
this.Fa && !this[s].Ra && this.Fa()
},
ba: function() {
return this[s].S || 0 < this[s].L
},
ld: function() {
this.Mb || this.ac()
},
uc: function(a) {
if (a.cb && !this[s].i) {
var c = a.X(this.bd, this, "dirty")
, d = a.X(this.ld, this);
return {
ia: a,
k: function() {
c.k();
d.k()
}
}
}
return a.X(this.ac, this)
},
ac: function() {
var b = this
, c = b.throttleEvaluation;
c && 0 <= c ? (clearTimeout(this[s].bc),
this[s].bc = a.a.setTimeout(function() {
b.aa(!0)
}, c)) : b.Fa ? b.Fa() : b.aa(!0)
},
aa: function(b) {
var c = this[s]
, d = c.wa;
if (!c.Ra && !c.R) {
if (c.i && !a.a.nb(c.i) || d && d()) {
if (!c.Fb) {
this.k();
return
}
} else
c.Fb = !1;
c.Ra = !0;
try {
this.Qc(b)
} finally {
c.Ra = !1
}
c.L || this.k()
}
},
Qc: function(b) {
var c = this[s]
, d = c.Va ? n : !c.L
, e = {
Hc: this,
Ma: c.r,
lb: c.L
};
a.l.Ub({
Gc: e,
gb: Y,
m: this,
Sa: d
});
c.r = {};
c.L = 0;
e = this.Pc(c, e);
this.tb(c.T, e) && (c.s || this.notifySubscribers(c.T, "beforeChange"),
c.T = e,
c.s ? this.zc() : b && this.notifySubscribers(c.T));
d && this.notifySubscribers(c.T, "awake")
},
Pc: function(b, c) {
try {
var d = b.jd;
return b.pb ? d.call(b.pb) : d()
} finally {
a.l.end(),
c.lb && !b.s && a.a.D(c.Ma, X),
b.S = !1
}
},
t: function() {
var a = this[s];
(a.S && !a.L || a.s && this.Qa()) && this.aa();
return a.T
},
Ta: function(b) {
a.J.fn.Ta.call(this, b);
this.Fa = function() {
this.Kb(this[s].T);
this[s].S = !0;
this.Lb(this)
}
},
k: function() {
var b = this[s];
!b.s && b.r && a.a.D(b.r, function(a, b) {
b.k && b.k()
});
b.i && b.mb && a.a.F.pc(b.i, b.mb);
b.r = null;
b.L = 0;
b.R = !0;
b.S = !1;
b.s = !1;
b.i = null
}
}
, $ = {
sa: function(b) {
var c = this
, d = c[s];
if (!d.R && d.s && "change" == b) {
d.s = !1;
if (d.S || c.Qa())
d.r = null,
d.L = 0,
d.S = !0,
c.aa();
else {
var e = [];
a.a.D(d.r, function(a, b) {
e[b.Ga] = a
});
a.a.q(e, function(a, b) {
var e = d.r[a]
, l = c.uc(e.ia);
l.Ga = b;
l.na = e.na;
d.r[a] = l
})
}
d.R || c.notifySubscribers(d.T, "awake")
}
},
Ia: function(b) {
var c = this[s];
c.R || "change" != b || this.Pa("change") || (a.a.D(c.r, function(a, b) {
b.k && (c.r[a] = {
ia: b.ia,
Ga: b.Ga,
na: b.na
},
b.k())
}),
c.s = !0,
this.notifySubscribers(n, "asleep"))
},
Na: function() {
var b = this[s];
b.s && (b.S || this.Qa()) && this.aa();
return a.J.fn.Na.call(this)
}
}
, aa = {
sa: function(a) {
"change" != a && "beforeChange" != a || this.t()
}
};
a.a.ka && a.a.Xa(z, a.J.fn);
var R = a.N.gd;
a.m[R] = a.N;
z[R] = a.m;
a.Xc = function(b) {
return a.Oa(b, a.m)
}
;
a.Yc = function(b) {
return a.Oa(b, a.m) && b[s] && b[s].Va
}
;
a.b("computed", a.m);
a.b("dependentObservable", a.m);
a.b("isComputed", a.Xc);
a.b("isPureComputed", a.Yc);
a.b("computed.fn", z);
a.G(z, "peek", z.t);
a.G(z, "dispose", z.k);
a.G(z, "isActive", z.ba);
a.G(z, "getDependenciesCount", z.Aa);
a.nc = function(b, c) {
if ("function" === typeof b)
return a.m(b, c, {
pure: !0
});
b = a.a.extend({}, b);
b.pure = !0;
return a.m(b, c)
}
;
a.b("pureComputed", a.nc);
(function() {
function b(a, f, g) {
g = g || new d;
a = f(a);
if ("object" != typeof a || null === a || a === n || a instanceof RegExp || a instanceof Date || a instanceof String || a instanceof Number || a instanceof Boolean)
return a;
var k = a instanceof Array ? [] : {};
g.save(a, k);
c(a, function(c) {
var d = f(a[c]);
switch (typeof d) {
case "boolean":
case "number":
case "string":
case "function":
k[c] = d;
break;
case "object":
case "undefined":
var h = g.get(d);
k[c] = h !== n ? h : b(d, f, g)
}
});
return k
}
function c(a, b) {
if (a instanceof Array) {
for (var c = 0; c < a.length; c++)
b(c);
"function" == typeof a.toJSON && b("toJSON")
} else
for (c in a)
b(c)
}
function d() {
this.keys = [];
this.Ib = []
}
a.wc = function(c) {
if (0 == arguments.length)
throw Error("When calling ko.toJS, pass the object you want to convert.");
return b(c, function(b) {
for (var c = 0; a.H(b) && 10 > c; c++)
b = b();
return b
})
}
;
a.toJSON = function(b, c, d) {
b = a.wc(b);
return a.a.Eb(b, c, d)
}
;
d.prototype = {
save: function(b, c) {
var d = a.a.o(this.keys, b);
0 <= d ? this.Ib[d] = c : (this.keys.push(b),
this.Ib.push(c))
},
get: function(b) {
b = a.a.o(this.keys, b);
return 0 <= b ? this.Ib[b] : n
}
}
}
)();
a.b("toJS", a.wc);
a.b("toJSON", a.toJSON);
(function() {
a.j = {
u: function(b) {
switch (a.a.A(b)) {
case "option":
return !0 === b.__ko__hasDomDataOptionValue__ ? a.a.e.get(b, a.d.options.xb) : 7 >= a.a.C ? b.getAttributeNode("value") && b.getAttributeNode("value").specified ? b.value : b.text : b.value;
case "select":
return 0 <= b.selectedIndex ? a.j.u(b.options[b.selectedIndex]) : n;
default:
return b.value
}
},
ha: function(b, c, d) {
switch (a.a.A(b)) {
case "option":
switch (typeof c) {
case "string":
a.a.e.set(b, a.d.options.xb, n);
"__ko__hasDomDataOptionValue__"in b && delete b.__ko__hasDomDataOptionValue__;
b.value = c;
break;
default:
a.a.e.set(b, a.d.options.xb, c),
b.__ko__hasDomDataOptionValue__ = !0,
b.value = "number" === typeof c ? c : ""
}
break;
case "select":
if ("" === c || null === c)
c = n;
for (var e = -1, f = 0, g = b.options.length, k; f < g; ++f)
if (k = a.j.u(b.options[f]),
k == c || "" == k && c === n) {
e = f;
break
}
if (d || 0 <= e || c === n && 1 < b.size)
b.selectedIndex = e;
break;
default:
if (null === c || c === n)
c = "";
b.value = c
}
}
}
}
)();
a.b("selectExtensions", a.j);
a.b("selectExtensions.readValue", a.j.u);
a.b("selectExtensions.writeValue", a.j.ha);
a.h = function() {
function b(b) {
b = a.a.$a(b);
123 === b.charCodeAt(0) && (b = b.slice(1, -1));
var c = [], d = b.match(e), r, k = [], p = 0;
if (d) {
d.push(",");
for (var A = 0, y; y = d[A]; ++A) {
var t = y.charCodeAt(0);
if (44 === t) {
if (0 >= p) {
c.push(r && k.length ? {
key: r,
value: k.join("")
} : {
unknown: r || k.join("")
});
r = p = 0;
k = [];
continue
}
} else if (58 === t) {
if (!p && !r && 1 === k.length) {
r = k.pop();
continue
}
} else
47 === t && A && 1 < y.length ? (t = d[A - 1].match(f)) && !g[t[0]] && (b = b.substr(b.indexOf(y) + 1),
d = b.match(e),
d.push(","),
A = -1,
y = "/") : 40 === t || 123 === t || 91 === t ? ++p : 41 === t || 125 === t || 93 === t ? --p : r || k.length || 34 !== t && 39 !== t || (y = y.slice(1, -1));
k.push(y)
}
}
return c
}
var c = ["true", "false", "null", "undefined"]
, d = /^(?:[$_a-z][$\w]*|(.+)(\.\s*[$_a-z][$\w]*|\[.+\]))$/i
, e = RegExp("\"(?:[^\"\\\\]|\\\\.)*\"|'(?:[^'\\\\]|\\\\.)*'|/(?:[^/\\\\]|\\\\.)*/w*|[^\\s:,/][^,\"'{}()/:[\\]]*[^\\s,\"'{}()/:[\\]]|[^\\s]", "g")
, f = /[\])"'A-Za-z0-9_$]+$/
, g = {
"in": 1,
"return": 1,
"typeof": 1
}
, k = {};
return {
ta: [],
ea: k,
yb: b,
Ua: function(e, m) {
function h(b, e) {
var m;
if (!A) {
var l = a.getBindingHandler(b);
if (l && l.preprocess && !(e = l.preprocess(e, b, h)))
return;
if (l = k[b])
m = e,
0 <= a.a.o(c, m) ? m = !1 : (l = m.match(d),
m = null === l ? !1 : l[1] ? "Object(" + l[1] + ")" + l[2] : m),
l = m;
l && g.push("'" + b + "':function(_z){" + m + "=_z}")
}
p && (e = "function(){return " + e + " }");
f.push("'" + b + "':" + e)
}
m = m || {};
var f = []
, g = []
, p = m.valueAccessors
, A = m.bindingParams
, y = "string" === typeof e ? b(e) : e;
a.a.q(y, function(a) {
h(a.key || a.unknown, a.value)
});
g.length && h("_ko_property_writers", "{" + g.join(",") + " }");
return f.join(",")
},
ad: function(a, b) {
for (var c = 0; c < a.length; c++)
if (a[c].key == b)
return !0;
return !1
},
Ea: function(b, c, d, e, f) {
if (b && a.H(b))
!a.Ba(b) || f && b.t() === e || b(e);
else if ((b = c.get("_ko_property_writers")) && b[d])
b[d](e)
}
}
}();
a.b("expressionRewriting", a.h);
a.b("expressionRewriting.bindingRewriteValidators", a.h.ta);
a.b("expressionRewriting.parseObjectLiteral", a.h.yb);
a.b("expressionRewriting.preProcessBindings", a.h.Ua);
a.b("expressionRewriting._twoWayBindings", a.h.ea);
a.b("jsonExpressionRewriting", a.h);
a.b("jsonExpressionRewriting.insertPropertyAccessorsIntoJson", a.h.Ua);
(function() {
function b(a) {
return 8 == a.nodeType && g.test(f ? a.text : a.nodeValue)
}
function c(a) {
return 8 == a.nodeType && k.test(f ? a.text : a.nodeValue)
}
function d(a, d) {
for (var e = a, f = 1, l = []; e = e.nextSibling; ) {
if (c(e) && (f--,
0 === f))
return l;
l.push(e);
b(e) && f++
}
if (!d)
throw Error("Cannot find closing comment tag to match: " + a.nodeValue);
return null
}
function e(a, b) {
var c = d(a, b);
return c ? 0 < c.length ? c[c.length - 1].nextSibling : a.nextSibling : null
}
var f = u && "" === u.createComment("test").text
, g = f ? /^\x3c!--\s*ko(?:\s+([\s\S]+))?\s*--\x3e$/ : /^\s*ko(?:\s+([\s\S]+))?\s*$/
, k = f ? /^\x3c!--\s*\/ko\s*--\x3e$/ : /^\s*\/ko\s*$/
, l = {
ul: !0,
ol: !0
};
a.f = {
Z: {},
childNodes: function(a) {
return b(a) ? d(a) : a.childNodes
},
xa: function(c) {
if (b(c)) {
c = a.f.childNodes(c);
for (var d = 0, e = c.length; d < e; d++)
a.removeNode(c[d])
} else
a.a.ob(c)
},
da: function(c, d) {
if (b(c)) {
a.f.xa(c);
for (var e = c.nextSibling, f = 0, l = d.length; f < l; f++)
e.parentNode.insertBefore(d[f], e)
} else
a.a.da(c, d)
},
mc: function(a, c) {
b(a) ? a.parentNode.insertBefore(c, a.nextSibling) : a.firstChild ? a.insertBefore(c, a.firstChild) : a.appendChild(c)
},
gc: function(c, d, e) {
e ? b(c) ? c.parentNode.insertBefore(d, e.nextSibling) : e.nextSibling ? c.insertBefore(d, e.nextSibling) : c.appendChild(d) : a.f.mc(c, d)
},
firstChild: function(a) {
return b(a) ? !a.nextSibling || c(a.nextSibling) ? null : a.nextSibling : a.firstChild
},
nextSibling: function(a) {
b(a) && (a = e(a));
return a.nextSibling && c(a.nextSibling) ? null : a.nextSibling
},
Tc: b,
pd: function(a) {
return (a = (f ? a.text : a.nodeValue).match(g)) ? a[1] : null
},
kc: function(d) {
if (l[a.a.A(d)]) {
var h = d.firstChild;
if (h) {
do
if (1 === h.nodeType) {
var f;
f = h.firstChild;
var g = null;
if (f) {
do
if (g)
g.push(f);
else if (b(f)) {
var k = e(f, !0);
k ? f = k : g = [f]
} else
c(f) && (g = [f]);
while (f = f.nextSibling)
}
if (f = g)
for (g = h.nextSibling,
k = 0; k < f.length; k++)
g ? d.insertBefore(f[k], g) : d.appendChild(f[k])
}
while (h = h.nextSibling)
}
}
}
}
}
)();
a.b("virtualElements", a.f);
a.b("virtualElements.allowedBindings", a.f.Z);
a.b("virtualElements.emptyNode", a.f.xa);
a.b("virtualElements.insertAfter", a.f.gc);
a.b("virtualElements.prepend", a.f.mc);
a.b("virtualElements.setDomNodeChildren", a.f.da);
(function() {
a.Q = function() {
this.Fc = {}
}
;
a.a.extend(a.Q.prototype, {
nodeHasBindings: function(b) {
switch (b.nodeType) {
case 1:
return null != b.getAttribute("data-bind") || a.g.getComponentNameForNode(b);
case 8:
return a.f.Tc(b);
default:
return !1
}
},
getBindings: function(b, c) {
var d = this.getBindingsString(b, c)
, d = d ? this.parseBindingsString(d, c, b) : null;
return a.g.Ob(d, b, c, !1)
},
getBindingAccessors: function(b, c) {
var d = this.getBindingsString(b, c)
, d = d ? this.parseBindingsString(d, c, b, {
valueAccessors: !0
}) : null;
return a.g.Ob(d, b, c, !0)
},
getBindingsString: function(b) {
switch (b.nodeType) {
case 1:
return b.getAttribute("data-bind");
case 8:
return a.f.pd(b);
default:
return null
}
},
parseBindingsString: function(b, c, d, e) {
try {
var f = this.Fc, g = b + (e && e.valueAccessors || ""), k;
if (!(k = f[g])) {
var l, m = "with($context){with($data||{}){return{" + a.h.Ua(b, e) + "}}}";
l = new Function("$context","$element",m);
k = f[g] = l
}
return k(c, d)
} catch (h) {
throw h.message = "Unable to parse bindings.\nBindings value: " + b + "\nMessage: " + h.message,
h
}
}
});
a.Q.instance = new a.Q
}
)();
a.b("bindingProvider", a.Q);
(function() {
function b(a) {
return function() {
return a
}
}
function c(a) {
return a()
}
function d(b) {
return a.a.Ca(a.l.w(b), function(a, c) {
return function() {
return b()[c]
}
})
}
function e(c, e, h) {
return "function" === typeof c ? d(c.bind(null, e, h)) : a.a.Ca(c, b)
}
function f(a, b) {
return d(this.getBindings.bind(this, a, b))
}
function g(b, c, d) {
var e, h = a.f.firstChild(c), f = a.Q.instance, m = f.preprocessNode;
if (m) {
for (; e = h; )
h = a.f.nextSibling(e),
m.call(f, e);
h = a.f.firstChild(c)
}
for (; e = h; )
h = a.f.nextSibling(e),
k(b, e, d)
}
function k(b, c, d) {
var e = !0
, h = 1 === c.nodeType;
h && a.f.kc(c);
if (h && d || a.Q.instance.nodeHasBindings(c))
e = m(c, null, b, d).shouldBindDescendants;
e && !r[a.a.A(c)] && g(b, c, !h)
}
function l(b) {
var c = []
, d = {}
, e = [];
a.a.D(b, function Z(h) {
if (!d[h]) {
var f = a.getBindingHandler(h);
f && (f.after && (e.push(h),
a.a.q(f.after, function(c) {
if (b[c]) {
if (-1 !== a.a.o(e, c))
throw Error("Cannot combine the following bindings, because they have a cyclic dependency: " + e.join(", "));
Z(c)
}
}),
e.length--),
c.push({
key: h,
fc: f
}));
d[h] = !0
}
});
return c
}
function m(b, d, e, h) {
var m = a.a.e.get(b, q);
if (!d) {
if (m)
throw Error("You cannot apply bindings multiple times to the same element.");
a.a.e.set(b, q, !0)
}
!m && h && a.tc(b, e);
var g;
if (d && "function" !== typeof d)
g = d;
else {
var k = a.Q.instance
, r = k.getBindingAccessors || f
, p = a.B(function() {
(g = d ? d(e, b) : r.call(k, b, e)) && e.P && e.P();
return g
}, null, {
i: b
});
g && p.ba() || (p = null)
}
var u;
if (g) {
var v = p ? function(a) {
return function() {
return c(p()[a])
}
}
: function(a) {
return g[a]
}
, s = function() {
return a.a.Ca(p ? p() : g, c)
};
s.get = function(a) {
return g[a] && c(v(a))
}
;
s.has = function(a) {
return a in g
}
;
h = l(g);
a.a.q(h, function(c) {
var d = c.fc.init
, h = c.fc.update
, f = c.key;
if (8 === b.nodeType && !a.f.Z[f])
throw Error("The binding '" + f + "' cannot be used with virtual elements");
try {
"function" == typeof d && a.l.w(function() {
var a = d(b, v(f), s, e.$data, e);
if (a && a.controlsDescendantBindings) {
if (u !== n)
throw Error("Multiple bindings (" + u + " and " + f + ") are trying to control descendant bindings of the same element. You cannot use these bindings together on the same element.");
u = f
}
}),
"function" == typeof h && a.B(function() {
h(b, v(f), s, e.$data, e)
}, null, {
i: b
})
} catch (m) {
throw m.message = 'Unable to process binding "' + f + ": " + g[f] + '"\nMessage: ' + m.message,
m
}
})
}
return {
shouldBindDescendants: u === n
}
}
function h(b) {
return b && b instanceof a.U ? b : new a.U(b)
}
a.d = {};
var r = {
script: !0,
textarea: !0,
template: !0
};
a.getBindingHandler = function(b) {
return a.d[b]
}
;
a.U = function(b, c, d, e) {
var h = this, f = "function" == typeof b && !a.H(b), m, g = a.B(function() {
var m = f ? b() : b
, l = a.a.c(m);
c ? (c.P && c.P(),
a.a.extend(h, c),
g && (h.P = g)) : (h.$parents = [],
h.$root = l,
h.ko = a);
h.$rawData = m;
h.$data = l;
d && (h[d] = l);
e && e(h, c, l);
return h.$data
}, null, {
wa: function() {
return m && !a.a.Qb(m)
},
i: !0
});
g.ba() && (h.P = g,
g.equalityComparer = null,
m = [],
g.Ac = function(b) {
m.push(b);
a.a.F.oa(b, function(b) {
a.a.La(m, b);
m.length || (g.k(),
h.P = g = n)
})
}
)
}
;
a.U.prototype.createChildContext = function(b, c, d) {
return new a.U(b,this,c,function(a, b) {
a.$parentContext = b;
a.$parent = b.$data;
a.$parents = (b.$parents || []).slice(0);
a.$parents.unshift(a.$parent);
d && d(a)
}
)
}
;
a.U.prototype.extend = function(b) {
return new a.U(this.P || this.$data,this,null,function(c, d) {
c.$rawData = d.$rawData;
a.a.extend(c, "function" == typeof b ? b() : b)
}
)
}
;
var q = a.a.e.I()
, p = a.a.e.I();
a.tc = function(b, c) {
if (2 == arguments.length)
a.a.e.set(b, p, c),
c.P && c.P.Ac(b);
else
return a.a.e.get(b, p)
}
;
a.Ja = function(b, c, d) {
1 === b.nodeType && a.f.kc(b);
return m(b, c, h(d), !0)
}
;
a.Dc = function(b, c, d) {
d = h(d);
return a.Ja(b, e(c, d, b), d)
}
;
a.eb = function(a, b) {
1 !== b.nodeType && 8 !== b.nodeType || g(h(a), b, !0)
}
;
a.Rb = function(a, b) {
!v && x.jQuery && (v = x.jQuery);
if (b && 1 !== b.nodeType && 8 !== b.nodeType)
throw Error("ko.applyBindings: first parameter should be your view model; second parameter should be a DOM node");
b = b || x.document.body;
k(h(a), b, !0)
}
;
a.kb = function(b) {
switch (b.nodeType) {
case 1:
case 8:
var c = a.tc(b);
if (c)
return c;
if (b.parentNode)
return a.kb(b.parentNode)
}
return n
}
;
a.Jc = function(b) {
return (b = a.kb(b)) ? b.$data : n
}
;
a.b("bindingHandlers", a.d);
a.b("applyBindings", a.Rb);
a.b("applyBindingsToDescendants", a.eb);
a.b("applyBindingAccessorsToNode", a.Ja);
a.b("applyBindingsToNode", a.Dc);
a.b("contextFor", a.kb);
a.b("dataFor", a.Jc)
}
)();
(function(b) {
function c(c, e) {
var m = f.hasOwnProperty(c) ? f[c] : b, h;
m ? m.X(e) : (m = f[c] = new a.J,
m.X(e),
d(c, function(b, d) {
var e = !(!d || !d.synchronous);
g[c] = {
definition: b,
Zc: e
};
delete f[c];
h || e ? m.notifySubscribers(b) : a.Y.Wa(function() {
m.notifySubscribers(b)
})
}),
h = !0)
}
function d(a, b) {
e("getConfig", [a], function(c) {
c ? e("loadComponent", [a, c], function(a) {
b(a, c)
}) : b(null, null)
})
}
function e(c, d, f, h) {
h || (h = a.g.loaders.slice(0));
var g = h.shift();
if (g) {
var q = g[c];
if (q) {
var p = !1;
if (q.apply(g, d.concat(function(a) {
p ? f(null) : null !== a ? f(a) : e(c, d, f, h)
})) !== b && (p = !0,
!g.suppressLoaderExceptions))
throw Error("Component loaders must supply values by invoking the callback, not by returning values synchronously.")
} else
e(c, d, f, h)
} else
f(null)
}
var f = {}
, g = {};
a.g = {
get: function(d, e) {
var f = g.hasOwnProperty(d) ? g[d] : b;
f ? f.Zc ? a.l.w(function() {
e(f.definition)
}) : a.Y.Wa(function() {
e(f.definition)
}) : c(d, e)
},
Xb: function(a) {
delete g[a]
},
Jb: e
};
a.g.loaders = [];
a.b("components", a.g);
a.b("components.get", a.g.get);
a.b("components.clearCachedDefinition", a.g.Xb)
}
)();
(function() {
function b(b, c, d, e) {
function g() {
0 === --y && e(k)
}
var k = {}
, y = 2
, t = d.template;
d = d.viewModel;
t ? f(c, t, function(c) {
a.g.Jb("loadTemplate", [b, c], function(a) {
k.template = a;
g()
})
}) : g();
d ? f(c, d, function(c) {
a.g.Jb("loadViewModel", [b, c], function(a) {
k[l] = a;
g()
})
}) : g()
}
function c(a, b, d) {
if ("function" === typeof b)
d(function(a) {
return new b(a)
});
else if ("function" === typeof b[l])
d(b[l]);
else if ("instance"in b) {
var e = b.instance;
d(function() {
return e
})
} else
"viewModel"in b ? c(a, b.viewModel, d) : a("Unknown viewModel value: " + b)
}
function d(b) {
switch (a.a.A(b)) {
case "script":
return a.a.ma(b.text);
case "textarea":
return a.a.ma(b.value);
case "template":
if (e(b.content))
return a.a.ua(b.content.childNodes)
}
return a.a.ua(b.childNodes)
}
function e(a) {
return x.DocumentFragment ? a instanceof DocumentFragment : a && 11 === a.nodeType
}
function f(a, b, c) {
"string" === typeof b.require ? O || x.require ? (O || x.require)([b.require], c) : a("Uses require, but no AMD loader is present") : c(b)
}
function g(a) {
return function(b) {
throw Error("Component '" + a + "': " + b)
}
}
var k = {};
a.g.register = function(b, c) {
if (!c)
throw Error("Invalid configuration for " + b);
if (a.g.ub(b))
throw Error("Component " + b + " is already registered");
k[b] = c
}
;
a.g.ub = function(a) {
return k.hasOwnProperty(a)
}
;
a.g.od = function(b) {
delete k[b];
a.g.Xb(b)
}
;
a.g.Zb = {
getConfig: function(a, b) {
b(k.hasOwnProperty(a) ? k[a] : null)
},
loadComponent: function(a, c, d) {
var e = g(a);
f(e, c, function(c) {
b(a, e, c, d)
})
},
loadTemplate: function(b, c, f) {
b = g(b);
if ("string" === typeof c)
f(a.a.ma(c));
else if (c instanceof Array)
f(c);
else if (e(c))
f(a.a.V(c.childNodes));
else if (c.element)
if (c = c.element,
x.HTMLElement ? c instanceof HTMLElement : c && c.tagName && 1 === c.nodeType)
f(d(c));
else if ("string" === typeof c) {
var l = u.getElementById(c);
l ? f(d(l)) : b("Cannot find element with ID " + c)
} else
b("Unknown element type: " + c);
else
b("Unknown template value: " + c)
},
loadViewModel: function(a, b, d) {
c(g(a), b, d)
}
};
var l = "createViewModel";
a.b("components.register", a.g.register);
a.b("components.isRegistered", a.g.ub);
a.b("components.unregister", a.g.od);
a.b("components.defaultLoader", a.g.Zb);
a.g.loaders.push(a.g.Zb);
a.g.Bc = k
}
)();
(function() {
function b(b, e) {
var f = b.getAttribute("params");
if (f) {
var f = c.parseBindingsString(f, e, b, {
valueAccessors: !0,
bindingParams: !0
})
, f = a.a.Ca(f, function(c) {
return a.m(c, null, {
i: b
})
})
, g = a.a.Ca(f, function(c) {
var e = c.t();
return c.ba() ? a.m({
read: function() {
return a.a.c(c())
},
write: a.Ba(e) && function(a) {
c()(a)
}
,
i: b
}) : e
});
g.hasOwnProperty("$raw") || (g.$raw = f);
return g
}
return {
$raw: {}
}
}
a.g.getComponentNameForNode = function(b) {
var c = a.a.A(b);
if (a.g.ub(c) && (-1 != c.indexOf("-") || "[object HTMLUnknownElement]" == "" + b || 8 >= a.a.C && b.tagName === c))
return c
}
;
a.g.Ob = function(c, e, f, g) {
if (1 === e.nodeType) {
var k = a.g.getComponentNameForNode(e);
if (k) {
c = c || {};
if (c.component)
throw Error('Cannot use the "component" binding on a custom element matching a component');
var l = {
name: k,
params: b(e, f)
};
c.component = g ? function() {
return l
}
: l
}
}
return c
}
;
var c = new a.Q;
9 > a.a.C && (a.g.register = function(a) {
return function(b) {
u.createElement(b);
return a.apply(this, arguments)
}
}(a.g.register),
u.createDocumentFragment = function(b) {
return function() {
var c = b(), f = a.g.Bc, g;
for (g in f)
f.hasOwnProperty(g) && c.createElement(g);
return c
}
}(u.createDocumentFragment))
}
)();
(function(b) {
function c(b, c, d) {
c = c.template;
if (!c)
throw Error("Component '" + b + "' has no template");
b = a.a.ua(c);
a.f.da(d, b)
}
function d(a, b, c, d) {
var e = a.createViewModel;
return e ? e.call(a, d, {
element: b,
templateNodes: c
}) : d
}
var e = 0;
a.d.component = {
init: function(f, g, k, l, m) {
function h() {
var a = r && r.dispose;
"function" === typeof a && a.call(r);
q = r = null
}
var r, q, p = a.a.V(a.f.childNodes(f));
a.a.F.oa(f, h);
a.m(function() {
var l = a.a.c(g()), k, t;
"string" === typeof l ? k = l : (k = a.a.c(l.name),
t = a.a.c(l.params));
if (!k)
throw Error("No component name specified");
var n = q = ++e;
a.g.get(k, function(e) {
if (q === n) {
h();
if (!e)
throw Error("Unknown component '" + k + "'");
c(k, e, f);
var g = d(e, f, p, t);
e = m.createChildContext(g, b, function(a) {
a.$component = g;
a.$componentTemplateNodes = p
});
r = g;
a.eb(e, f)
}
})
}, null, {
i: f
});
return {
controlsDescendantBindings: !0
}
}
};
a.f.Z.component = !0
}
)();
var S = {
"class": "className",
"for": "htmlFor"
};
a.d.attr = {
update: function(b, c) {
var d = a.a.c(c()) || {};
a.a.D(d, function(c, d) {
d = a.a.c(d);
var g = !1 === d || null === d || d === n;
g && b.removeAttribute(c);
8 >= a.a.C && c in S ? (c = S[c],
g ? b.removeAttribute(c) : b[c] = d) : g || b.setAttribute(c, d.toString());
"name" === c && a.a.rc(b, g ? "" : d.toString())
})
}
};
(function() {
a.d.checked = {
after: ["value", "attr"],
init: function(b, c, d) {
function e() {
var e = b.checked
, f = p ? g() : e;
if (!a.va.Sa() && (!l || e)) {
var m = a.l.w(c);
if (h) {
var k = r ? m.t() : m;
q !== f ? (e && (a.a.pa(k, f, !0),
a.a.pa(k, q, !1)),
q = f) : a.a.pa(k, f, e);
r && a.Ba(m) && m(k)
} else
a.h.Ea(m, d, "checked", f, !0)
}
}
function f() {
var d = a.a.c(c());
b.checked = h ? 0 <= a.a.o(d, g()) : k ? d : g() === d
}
var g = a.nc(function() {
return d.has("checkedValue") ? a.a.c(d.get("checkedValue")) : d.has("value") ? a.a.c(d.get("value")) : b.value
})
, k = "checkbox" == b.type
, l = "radio" == b.type;
if (k || l) {
var m = c()
, h = k && a.a.c(m)instanceof Array
, r = !(h && m.push && m.splice)
, q = h ? g() : n
, p = l || h;
l && !b.name && a.d.uniqueName.init(b, function() {
return !0
});
a.m(e, null, {
i: b
});
a.a.p(b, "click", e);
a.m(f, null, {
i: b
});
m = n
}
}
};
a.h.ea.checked = !0;
a.d.checkedValue = {
update: function(b, c) {
b.value = a.a.c(c())
}
}
}
)();
a.d.css = {
update: function(b, c) {
var d = a.a.c(c());
null !== d && "object" == typeof d ? a.a.D(d, function(c, d) {
d = a.a.c(d);
a.a.bb(b, c, d)
}) : (d = a.a.$a(String(d || "")),
a.a.bb(b, b.__ko__cssValue, !1),
b.__ko__cssValue = d,
a.a.bb(b, d, !0))
}
};
a.d.enable = {
update: function(b, c) {
var d = a.a.c(c());
d && b.disabled ? b.removeAttribute("disabled") : d || b.disabled || (b.disabled = !0)
}
};
a.d.disable = {
update: function(b, c) {
a.d.enable.update(b, function() {
return !a.a.c(c())
})
}
};
a.d.event = {
init: function(b, c, d, e, f) {
var g = c() || {};
a.a.D(g, function(g) {
"string" == typeof g && a.a.p(b, g, function(b) {
var m, h = c()[g];
if (h) {
try {
var r = a.a.V(arguments);
e = f.$data;
r.unshift(e);
m = h.apply(e, r)
} finally {
!0 !== m && (b.preventDefault ? b.preventDefault() : b.returnValue = !1)
}
!1 === d.get(g + "Bubble") && (b.cancelBubble = !0,
b.stopPropagation && b.stopPropagation())
}
})
})
}
};
a.d.foreach = {
ic: function(b) {
return function() {
var c = b()
, d = a.a.zb(c);
if (!d || "number" == typeof d.length)
return {
foreach: c,
templateEngine: a.W.sb
};
a.a.c(c);
return {
foreach: d.data,
as: d.as,
includeDestroyed: d.includeDestroyed,
afterAdd: d.afterAdd,
beforeRemove: d.beforeRemove,
afterRender: d.afterRender,
beforeMove: d.beforeMove,
afterMove: d.afterMove,
templateEngine: a.W.sb
}
}
},
init: function(b, c) {
return a.d.template.init(b, a.d.foreach.ic(c))
},
update: function(b, c, d, e, f) {
return a.d.template.update(b, a.d.foreach.ic(c), d, e, f)
}
};
a.h.ta.foreach = !1;
a.f.Z.foreach = !0;
a.d.hasfocus = {
init: function(b, c, d) {
function e(e) {
b.__ko_hasfocusUpdating = !0;
var f = b.ownerDocument;
if ("activeElement"in f) {
var g;
try {
g = f.activeElement
} catch (h) {
g = f.body
}
e = g === b
}
f = c();
a.h.Ea(f, d, "hasfocus", e, !0);
b.__ko_hasfocusLastValue = e;
b.__ko_hasfocusUpdating = !1
}
var f = e.bind(null, !0)
, g = e.bind(null, !1);
a.a.p(b, "focus", f);
a.a.p(b, "focusin", f);
a.a.p(b, "blur", g);
a.a.p(b, "focusout", g)
},
update: function(b, c) {
var d = !!a.a.c(c());
b.__ko_hasfocusUpdating || b.__ko_hasfocusLastValue === d || (d ? b.focus() : b.blur(),
!d && b.__ko_hasfocusLastValue && b.ownerDocument.body.focus(),
a.l.w(a.a.Da, null, [b, d ? "focusin" : "focusout"]))
}
};
a.h.ea.hasfocus = !0;
a.d.hasFocus = a.d.hasfocus;
a.h.ea.hasFocus = !0;
a.d.html = {
init: function() {
return {
controlsDescendantBindings: !0
}
},
update: function(b, c) {
a.a.Cb(b, c())
}
};
K("if");
K("ifnot", !1, !0);
K("with", !0, !1, function(a, c) {
return a.createChildContext(c)
});
var L = {};
a.d.options = {
init: function(b) {
if ("select" !== a.a.A(b))
throw Error("options binding applies only to SELECT elements");
for (; 0 < b.length; )
b.remove(0);
return {
controlsDescendantBindings: !0
}
},
update: function(b, c, d) {
function e() {
return a.a.Ka(b.options, function(a) {
return a.selected
})
}
function f(a, b, c) {
var d = typeof b;
return "function" == d ? b(a) : "string" == d ? a[b] : c
}
function g(c, e) {
if (A && h)
a.j.ha(b, a.a.c(d.get("value")), !0);
else if (p.length) {
var f = 0 <= a.a.o(p, a.j.u(e[0]));
a.a.sc(e[0], f);
A && !f && a.l.w(a.a.Da, null, [b, "change"])
}
}
var k = b.multiple
, l = 0 != b.length && k ? b.scrollTop : null
, m = a.a.c(c())
, h = d.get("valueAllowUnset") && d.has("value")
, r = d.get("optionsIncludeDestroyed");
c = {};
var q, p = [];
h || (k ? p = a.a.fb(e(), a.j.u) : 0 <= b.selectedIndex && p.push(a.j.u(b.options[b.selectedIndex])));
m && ("undefined" == typeof m.length && (m = [m]),
q = a.a.Ka(m, function(b) {
return r || b === n || null === b || !a.a.c(b._destroy)
}),
d.has("optionsCaption") && (m = a.a.c(d.get("optionsCaption")),
null !== m && m !== n && q.unshift(L)));
var A = !1;
c.beforeRemove = function(a) {
b.removeChild(a)
}
;
m = g;
d.has("optionsAfterRender") && "function" == typeof d.get("optionsAfterRender") && (m = function(b, c) {
g(0, c);
a.l.w(d.get("optionsAfterRender"), null, [c[0], b !== L ? b : n])
}
);
a.a.Bb(b, q, function(c, e, g) {
g.length && (p = !h && g[0].selected ? [a.j.u(g[0])] : [],
A = !0);
e = b.ownerDocument.createElement("option");
c === L ? (a.a.Za(e, d.get("optionsCaption")),
a.j.ha(e, n)) : (g = f(c, d.get("optionsValue"), c),
a.j.ha(e, a.a.c(g)),
c = f(c, d.get("optionsText"), g),
a.a.Za(e, c));
return [e]
}, c, m);
a.l.w(function() {
h ? a.j.ha(b, a.a.c(d.get("value")), !0) : (k ? p.length && e().length < p.length : p.length && 0 <= b.selectedIndex ? a.j.u(b.options[b.selectedIndex]) !== p[0] : p.length || 0 <= b.selectedIndex) && a.a.Da(b, "change")
});
a.a.Nc(b);
l && 20 < Math.abs(l - b.scrollTop) && (b.scrollTop = l)
}
};
a.d.options.xb = a.a.e.I();
a.d.selectedOptions = {
after: ["options", "foreach"],
init: function(b, c, d) {
a.a.p(b, "change", function() {
var e = c()
, f = [];
a.a.q(b.getElementsByTagName("option"), function(b) {
b.selected && f.push(a.j.u(b))
});
a.h.Ea(e, d, "selectedOptions", f)
})
},
update: function(b, c) {
if ("select" != a.a.A(b))
throw Error("values binding applies only to SELECT elements");
var d = a.a.c(c())
, e = b.scrollTop;
d && "number" == typeof d.length && a.a.q(b.getElementsByTagName("option"), function(b) {
var c = 0 <= a.a.o(d, a.j.u(b));
b.selected != c && a.a.sc(b, c)
});
b.scrollTop = e
}
};
a.h.ea.selectedOptions = !0;
a.d.style = {
update: function(b, c) {
var d = a.a.c(c() || {});
a.a.D(d, function(c, d) {
d = a.a.c(d);
if (null === d || d === n || !1 === d)
d = "";
b.style[c] = d
})
}
};
a.d.submit = {
init: function(b, c, d, e, f) {
if ("function" != typeof c())
throw Error("The value for a submit binding must be a function");
a.a.p(b, "submit", function(a) {
var d, e = c();
try {
d = e.call(f.$data, b)
} finally {
!0 !== d && (a.preventDefault ? a.preventDefault() : a.returnValue = !1)
}
})
}
};
a.d.text = {
init: function() {
return {
controlsDescendantBindings: !0
}
},
update: function(b, c) {
a.a.Za(b, c())
}
};
a.f.Z.text = !0;
(function() {
if (x && x.navigator)
var b = function(a) {
if (a)
return parseFloat(a[1])
}
, c = x.opera && x.opera.version && parseInt(x.opera.version())
, d = x.navigator.userAgent
, e = b(d.match(/^(?:(?!chrome).)*version\/([^ ]*) safari/i))
, f = b(d.match(/Firefox\/([^ ]*)/));
if (10 > a.a.C)
var g = a.a.e.I()
, k = a.a.e.I()
, l = function(b) {
var c = this.activeElement;
(c = c && a.a.e.get(c, k)) && c(b)
}
, m = function(b, c) {
var d = b.ownerDocument;
a.a.e.get(d, g) || (a.a.e.set(d, g, !0),
a.a.p(d, "selectionchange", l));
a.a.e.set(b, k, c)
};
a.d.textInput = {
init: function(b, d, g) {
function l(c, d) {
a.a.p(b, c, d)
}
function k() {
var c = a.a.c(d());
if (null === c || c === n)
c = "";
v !== n && c === v ? a.a.setTimeout(k, 4) : b.value !== c && (u = c,
b.value = c)
}
function y() {
s || (v = b.value,
s = a.a.setTimeout(t, 4))
}
function t() {
clearTimeout(s);
v = s = n;
var c = b.value;
u !== c && (u = c,
a.h.Ea(d(), g, "textInput", c))
}
var u = b.value, s, v, x = 9 == a.a.C ? y : t;
10 > a.a.C ? (l("propertychange", function(a) {
"value" === a.propertyName && x(a)
}),
8 == a.a.C && (l("keyup", t),
l("keydown", t)),
8 <= a.a.C && (m(b, x),
l("dragend", y))) : (l("input", t),
5 > e && "textarea" === a.a.A(b) ? (l("keydown", y),
l("paste", y),
l("cut", y)) : 11 > c ? l("keydown", y) : 4 > f && (l("DOMAutoComplete", t),
l("dragdrop", t),
l("drop", t)));
l("change", t);
a.m(k, null, {
i: b
})
}
};
a.h.ea.textInput = !0;
a.d.textinput = {
preprocess: function(a, b, c) {
c("textInput", a)
}
}
}
)();
a.d.uniqueName = {
init: function(b, c) {
if (c()) {
var d = "ko_unique_" + ++a.d.uniqueName.Ic;
a.a.rc(b, d)
}
}
};
a.d.uniqueName.Ic = 0;
a.d.value = {
after: ["options", "foreach"],
init: function(b, c, d) {
if ("input" != b.tagName.toLowerCase() || "checkbox" != b.type && "radio" != b.type) {
var e = ["change"]
, f = d.get("valueUpdate")
, g = !1
, k = null;
f && ("string" == typeof f && (f = [f]),
a.a.ra(e, f),
e = a.a.Tb(e));
var l = function() {
k = null;
g = !1;
var e = c()
, f = a.j.u(b);
a.h.Ea(e, d, "value", f)
};
!a.a.C || "input" != b.tagName.toLowerCase() || "text" != b.type || "off" == b.autocomplete || b.form && "off" == b.form.autocomplete || -1 != a.a.o(e, "propertychange") || (a.a.p(b, "propertychange", function() {
g = !0
}),
a.a.p(b, "focus", function() {
g = !1
}),
a.a.p(b, "blur", function() {
g && l()
}));
a.a.q(e, function(c) {
var d = l;
a.a.nd(c, "after") && (d = function() {
k = a.j.u(b);
a.a.setTimeout(l, 0)
}
,
c = c.substring(5));
a.a.p(b, c, d)
});
var m = function() {
var e = a.a.c(c())
, f = a.j.u(b);
if (null !== k && e === k)
a.a.setTimeout(m, 0);
else if (e !== f)
if ("select" === a.a.A(b)) {
var g = d.get("valueAllowUnset")
, f = function() {
a.j.ha(b, e, g)
};
f();
g || e === a.j.u(b) ? a.a.setTimeout(f, 0) : a.l.w(a.a.Da, null, [b, "change"])
} else
a.j.ha(b, e)
};
a.m(m, null, {
i: b
})
} else
a.Ja(b, {
checkedValue: c
})
},
update: function() {}
};
a.h.ea.value = !0;
a.d.visible = {
update: function(b, c) {
var d = a.a.c(c())
, e = "none" != b.style.display;
d && !e ? b.style.display = "" : !d && e && (b.style.display = "none")
}
};
(function(b) {
a.d[b] = {
init: function(c, d, e, f, g) {
return a.d.event.init.call(this, c, function() {
var a = {};
a[b] = d();
return a
}, e, f, g)
}
}
}
)("click");
a.O = function() {}
;
a.O.prototype.renderTemplateSource = function() {
throw Error("Override renderTemplateSource")
}
;
a.O.prototype.createJavaScriptEvaluatorBlock = function() {
throw Error("Override createJavaScriptEvaluatorBlock")
}
;
a.O.prototype.makeTemplateSource = function(b, c) {
if ("string" == typeof b) {
c = c || u;
var d = c.getElementById(b);
if (!d)
throw Error("Cannot find template with ID " + b);
return new a.v.n(d)
}
if (1 == b.nodeType || 8 == b.nodeType)
return new a.v.qa(b);
throw Error("Unknown template type: " + b)
}
;
a.O.prototype.renderTemplate = function(a, c, d, e) {
a = this.makeTemplateSource(a, e);
return this.renderTemplateSource(a, c, d, e)
}
;
a.O.prototype.isTemplateRewritten = function(a, c) {
return !1 === this.allowTemplateRewriting ? !0 : this.makeTemplateSource(a, c).data("isRewritten")
}
;
a.O.prototype.rewriteTemplate = function(a, c, d) {
a = this.makeTemplateSource(a, d);
c = c(a.text());
a.text(c);
a.data("isRewritten", !0)
}
;
a.b("templateEngine", a.O);
a.Gb = function() {
function b(b, c, d, k) {
b = a.h.yb(b);
for (var l = a.h.ta, m = 0; m < b.length; m++) {
var h = b[m].key;
if (l.hasOwnProperty(h)) {
var r = l[h];
if ("function" === typeof r) {
if (h = r(b[m].value))
throw Error(h)
} else if (!r)
throw Error("This template engine does not support the '" + h + "' binding within its templates")
}
}
d = "ko.__tr_ambtns(function($context,$element){return(function(){return{ " + a.h.Ua(b, {
valueAccessors: !0
}) + " } })()},'" + d.toLowerCase() + "')";
return k.createJavaScriptEvaluatorBlock(d) + c
}
var c = /(<([a-z]+\d*)(?:\s+(?!data-bind\s*=\s*)[a-z0-9\-]+(?:=(?:\"[^\"]*\"|\'[^\']*\'|[^>]*))?)*\s+)data-bind\s*=\s*(["'])([\s\S]*?)\3/gi
, d = /\x3c!--\s*ko\b\s*([\s\S]*?)\s*--\x3e/g;
return {
Oc: function(b, c, d) {
c.isTemplateRewritten(b, d) || c.rewriteTemplate(b, function(b) {
return a.Gb.dd(b, c)
}, d)
},
dd: function(a, f) {
return a.replace(c, function(a, c, d, e, h) {
return b(h, c, d, f)
}).replace(d, function(a, c) {
return b(c, "", "#comment", f)
})
},
Ec: function(b, c) {
return a.M.wb(function(d, k) {
var l = d.nextSibling;
l && l.nodeName.toLowerCase() === c && a.Ja(l, b, k)
})
}
}
}();
a.b("__tr_ambtns", a.Gb.Ec);
(function() {
a.v = {};
a.v.n = function(b) {
if (this.n = b) {
var c = a.a.A(b);
this.ab = "script" === c ? 1 : "textarea" === c ? 2 : "template" == c && b.content && 11 === b.content.nodeType ? 3 : 4
}
}
;
a.v.n.prototype.text = function() {
var b = 1 === this.ab ? "text" : 2 === this.ab ? "value" : "innerHTML";
if (0 == arguments.length)
return this.n[b];
var c = arguments[0];
"innerHTML" === b ? a.a.Cb(this.n, c) : this.n[b] = c
}
;
var b = a.a.e.I() + "_";
a.v.n.prototype.data = function(c) {
if (1 === arguments.length)
return a.a.e.get(this.n, b + c);
a.a.e.set(this.n, b + c, arguments[1])
}
;
var c = a.a.e.I();
a.v.n.prototype.nodes = function() {
var b = this.n;
if (0 == arguments.length)
return (a.a.e.get(b, c) || {}).jb || (3 === this.ab ? b.content : 4 === this.ab ? b : n);
a.a.e.set(b, c, {
jb: arguments[0]
})
}
;
a.v.qa = function(a) {
this.n = a
}
;
a.v.qa.prototype = new a.v.n;
a.v.qa.prototype.text = function() {
if (0 == arguments.length) {
var b = a.a.e.get(this.n, c) || {};
b.Hb === n && b.jb && (b.Hb = b.jb.innerHTML);
return b.Hb
}
a.a.e.set(this.n, c, {
Hb: arguments[0]
})
}
;
a.b("templateSources", a.v);
a.b("templateSources.domElement", a.v.n);
a.b("templateSources.anonymousTemplate", a.v.qa)
}
)();
(function() {
function b(b, c, d) {
var e;
for (c = a.f.nextSibling(c); b && (e = b) !== c; )
b = a.f.nextSibling(e),
d(e, b)
}
function c(c, d) {
if (c.length) {
var e = c[0]
, f = c[c.length - 1]
, g = e.parentNode
, k = a.Q.instance
, n = k.preprocessNode;
if (n) {
b(e, f, function(a, b) {
var c = a.previousSibling
, d = n.call(k, a);
d && (a === e && (e = d[0] || b),
a === f && (f = d[d.length - 1] || c))
});
c.length = 0;
if (!e)
return;
e === f ? c.push(e) : (c.push(e, f),
a.a.za(c, g))
}
b(e, f, function(b) {
1 !== b.nodeType && 8 !== b.nodeType || a.Rb(d, b)
});
b(e, f, function(b) {
1 !== b.nodeType && 8 !== b.nodeType || a.M.yc(b, [d])
});
a.a.za(c, g)
}
}
function d(a) {
return a.nodeType ? a : 0 < a.length ? a[0] : null
}
function e(b, e, f, k, q) {
q = q || {};
var p = (b && d(b) || f || {}).ownerDocument
, n = q.templateEngine || g;
a.Gb.Oc(f, n, p);
f = n.renderTemplate(f, k, q, p);
if ("number" != typeof f.length || 0 < f.length && "number" != typeof f[0].nodeType)
throw Error("Template engine must return an array of DOM nodes");
p = !1;
switch (e) {
case "replaceChildren":
a.f.da(b, f);
p = !0;
break;
case "replaceNode":
a.a.qc(b, f);
p = !0;
break;
case "ignoreTargetNode":
break;
default:
throw Error("Unknown renderMode: " + e)
}
p && (c(f, k),
q.afterRender && a.l.w(q.afterRender, null, [f, k.$data]));
return f
}
function f(b, c, d) {
return a.H(b) ? b() : "function" === typeof b ? b(c, d) : b
}
var g;
a.Db = function(b) {
if (b != n && !(b instanceof a.O))
throw Error("templateEngine must inherit from ko.templateEngine");
g = b
}
;
a.Ab = function(b, c, h, k, q) {
h = h || {};
if ((h.templateEngine || g) == n)
throw Error("Set a template engine before calling renderTemplate");
q = q || "replaceChildren";
if (k) {
var p = d(k);
return a.B(function() {
var g = c && c instanceof a.U ? c : new a.U(a.a.c(c))
, n = f(b, g.$data, g)
, g = e(k, q, n, g, h);
"replaceNode" == q && (k = g,
p = d(k))
}, null, {
wa: function() {
return !p || !a.a.nb(p)
},
i: p && "replaceNode" == q ? p.parentNode : p
})
}
return a.M.wb(function(d) {
a.Ab(b, c, h, d, "replaceNode")
})
}
;
a.kd = function(b, d, g, k, q) {
function p(a, b) {
c(b, s);
g.afterRender && g.afterRender(b, a);
s = null
}
function u(a, c) {
s = q.createChildContext(a, g.as, function(a) {
a.$index = c
});
var d = f(b, a, s);
return e(null, "ignoreTargetNode", d, s, g)
}
var s;
return a.B(function() {
var b = a.a.c(d) || [];
"undefined" == typeof b.length && (b = [b]);
b = a.a.Ka(b, function(b) {
return g.includeDestroyed || b === n || null === b || !a.a.c(b._destroy)
});
a.l.w(a.a.Bb, null, [k, b, u, g, p])
}, null, {
i: k
})
}
;
var k = a.a.e.I();
a.d.template = {
init: function(b, c) {
var d = a.a.c(c());
if ("string" == typeof d || d.name)
a.f.xa(b);
else {
if ("nodes"in d) {
if (d = d.nodes || [],
a.H(d))
throw Error('The "nodes" option must be a plain, non-observable array.')
} else
d = a.f.childNodes(b);
d = a.a.jc(d);
new a.v.qa(b).nodes(d)
}
return {
controlsDescendantBindings: !0
}
},
update: function(b, c, d, e, f) {
var g = c(), s;
c = a.a.c(g);
d = !0;
e = null;
"string" == typeof c ? c = {} : (g = c.name,
"if"in c && (d = a.a.c(c["if"])),
d && "ifnot"in c && (d = !a.a.c(c.ifnot)),
s = a.a.c(c.data));
"foreach"in c ? e = a.kd(g || b, d && c.foreach || [], c, b, f) : d ? (f = "data"in c ? f.createChildContext(s, c.as) : f,
e = a.Ab(g || b, f, c, b)) : a.f.xa(b);
f = e;
(s = a.a.e.get(b, k)) && "function" == typeof s.k && s.k();
a.a.e.set(b, k, f && f.ba() ? f : n)
}
};
a.h.ta.template = function(b) {
b = a.h.yb(b);
return 1 == b.length && b[0].unknown || a.h.ad(b, "name") ? null : "This template engine does not support anonymous templates nested within its templates"
}
;
a.f.Z.template = !0
}
)();
a.b("setTemplateEngine", a.Db);
a.b("renderTemplate", a.Ab);
a.a.dc = function(a, c, d) {
if (a.length && c.length) {
var e, f, g, k, l;
for (e = f = 0; (!d || e < d) && (k = a[f]); ++f) {
for (g = 0; l = c[g]; ++g)
if (k.value === l.value) {
k.moved = l.index;
l.moved = k.index;
c.splice(g, 1);
e = g = 0;
break
}
e += g
}
}
}
;
a.a.ib = function() {
function b(b, d, e, f, g) {
var k = Math.min, l = Math.max, m = [], h, n = b.length, q, p = d.length, s = p - n || 1, u = n + p + 1, t, v, x;
for (h = 0; h <= n; h++)
for (v = t,
m.push(t = []),
x = k(p, h + s),
q = l(0, h - 1); q <= x; q++)
t[q] = q ? h ? b[h - 1] === d[q - 1] ? v[q - 1] : k(v[q] || u, t[q - 1] || u) + 1 : q + 1 : h + 1;
k = [];
l = [];
s = [];
h = n;
for (q = p; h || q; )
p = m[h][q] - 1,
q && p === m[h][q - 1] ? l.push(k[k.length] = {
status: e,
value: d[--q],
index: q
}) : h && p === m[h - 1][q] ? s.push(k[k.length] = {
status: f,
value: b[--h],
index: h
}) : (--q,
--h,
g.sparse || k.push({
status: "retained",
value: d[q]
}));
a.a.dc(s, l, !g.dontLimitMoves && 10 * n);
return k.reverse()
}
return function(a, d, e) {
e = "boolean" === typeof e ? {
dontLimitMoves: e
} : e || {};
a = a || [];
d = d || [];
return a.length < d.length ? b(a, d, "added", "deleted", e) : b(d, a, "deleted", "added", e)
}
}();
a.b("utils.compareArrays", a.a.ib);
(function() {
function b(b, c, d, k, l) {
var m = []
, h = a.B(function() {
var h = c(d, l, a.a.za(m, b)) || [];
0 < m.length && (a.a.qc(m, h),
k && a.l.w(k, null, [d, h, l]));
m.length = 0;
a.a.ra(m, h)
}, null, {
i: b,
wa: function() {
return !a.a.Qb(m)
}
});
return {
ca: m,
B: h.ba() ? h : n
}
}
var c = a.a.e.I()
, d = a.a.e.I();
a.a.Bb = function(e, f, g, k, l) {
function m(b, c) {
w = q[c];
v !== c && (D[b] = w);
w.qb(v++);
a.a.za(w.ca, e);
u.push(w);
z.push(w)
}
function h(b, c) {
if (b)
for (var d = 0, e = c.length; d < e; d++)
c[d] && a.a.q(c[d].ca, function(a) {
b(a, d, c[d].ja)
})
}
f = f || [];
k = k || {};
var r = a.a.e.get(e, c) === n
, q = a.a.e.get(e, c) || []
, p = a.a.fb(q, function(a) {
return a.ja
})
, s = a.a.ib(p, f, k.dontLimitMoves)
, u = []
, t = 0
, v = 0
, x = []
, z = [];
f = [];
for (var D = [], p = [], w, C = 0, B, E; B = s[C]; C++)
switch (E = B.moved,
B.status) {
case "deleted":
E === n && (w = q[t],
w.B && (w.B.k(),
w.B = n),
a.a.za(w.ca, e).length && (k.beforeRemove && (u.push(w),
z.push(w),
w.ja === d ? w = null : f[C] = w),
w && x.push.apply(x, w.ca)));
t++;
break;
case "retained":
m(C, t++);
break;
case "added":
E !== n ? m(C, E) : (w = {
ja: B.value,
qb: a.N(v++)
},
u.push(w),
z.push(w),
r || (p[C] = w))
}
a.a.e.set(e, c, u);
h(k.beforeMove, D);
a.a.q(x, k.beforeRemove ? a.$ : a.removeNode);
for (var C = 0, r = a.f.firstChild(e), F; w = z[C]; C++) {
w.ca || a.a.extend(w, b(e, g, w.ja, l, w.qb));
for (t = 0; s = w.ca[t]; r = s.nextSibling,
F = s,
t++)
s !== r && a.f.gc(e, s, F);
!w.Wc && l && (l(w.ja, w.ca, w.qb),
w.Wc = !0)
}
h(k.beforeRemove, f);
for (C = 0; C < f.length; ++C)
f[C] && (f[C].ja = d);
h(k.afterMove, D);
h(k.afterAdd, p)
}
}
)();
a.b("utils.setDomNodeChildrenFromArrayMapping", a.a.Bb);
a.W = function() {
this.allowTemplateRewriting = !1
}
;
a.W.prototype = new a.O;
a.W.prototype.renderTemplateSource = function(b, c, d, e) {
if (c = (9 > a.a.C ? 0 : b.nodes) ? b.nodes() : null)
return a.a.V(c.cloneNode(!0).childNodes);
b = b.text();
return a.a.ma(b, e)
}
;
a.W.sb = new a.W;
a.Db(a.W.sb);
a.b("nativeTemplateEngine", a.W);
(function() {
a.vb = function() {
var a = this.$c = function() {
if (!v || !v.tmpl)
return 0;
try {
if (0 <= v.tmpl.tag.tmpl.open.toString().indexOf("__"))
return 2
} catch (a) {}
return 1
}();
this.renderTemplateSource = function(b, e, f, g) {
g = g || u;
f = f || {};
if (2 > a)
throw Error("Your version of jQuery.tmpl is too old. Please upgrade to jQuery.tmpl 1.0.0pre or later.");
var k = b.data("precompiled");
k || (k = b.text() || "",
k = v.template(null, "{{ko_with $item.koBindingContext}}" + k + "{{/ko_with}}"),
b.data("precompiled", k));
b = [e.$data];
e = v.extend({
koBindingContext: e
}, f.templateOptions);
e = v.tmpl(k, b, e);
e.appendTo(g.createElement("div"));
v.fragments = {};
return e
}
;
this.createJavaScriptEvaluatorBlock = function(a) {
return "{{ko_code ((function() { return " + a + " })()) }}"
}
;
this.addTemplate = function(a, b) {
u.write("")
}
;
0 < a && (v.tmpl.tag.ko_code = {
open: "__.push($1 || '');"
},
v.tmpl.tag.ko_with = {
open: "with($1) {",
close: "} "
})
}
;
a.vb.prototype = new a.O;
var b = new a.vb;
0 < b.$c && a.Db(b);
a.b("jqueryTmplTemplateEngine", a.vb)
}
)()
})
}
)()
}
)();
!function(a, b) {
"use strict";
function c(a, b) {
if (!a || "object" != typeof a)
throw new Error("When calling ko.track, you must pass an object as the first parameter.");
var c;
return i(b) ? (b.deep = b.deep || !1,
b.fields = b.fields || Object.getOwnPropertyNames(a),
b.lazy = b.lazy || !1,
h(a, b.fields, b)) : (c = b || Object.getOwnPropertyNames(a),
h(a, c, {})),
a
}
function d(a) {
return a.name ? a.name : (a.toString().trim().match(A) || [])[1]
}
function e(a) {
return a && "object" == typeof a && "Object" === d(a.constructor)
}
function f(a, c, d) {
var e = w.isObservable(a)
, f = !e && Array.isArray(a)
, g = e ? a : f ? w.observableArray(a) : w.observable(a);
return d[c] = function() {
return g
}
,
(f || e && "push"in g) && m(w, g),
{
configurable: !0,
enumerable: !0,
get: g,
set: w.isWriteableObservable(g) ? g : b
}
}
function g(a, b, c) {
function d(a, b) {
return e ? b ? e(a) : e : Array.isArray(a) ? (e = w.observableArray(a),
m(w, e),
e) : e = w.observable(a)
}
if (w.isObservable(a))
return f(a, b, c);
var e;
return c[b] = function() {
return d(a)
}
,
{
configurable: !0,
enumerable: !0,
get: function() {
return d(a)()
},
set: function(a) {
d(a, !0)
}
}
}
function h(a, b, c) {
if (b.length) {
var d = j(a, !0)
, i = {};
b.forEach(function(b) {
if (!(b in d) && Object.getOwnPropertyDescriptor(a, b).configurable !== !1) {
var j = a[b];
i[b] = (c.lazy ? g : f)(j, b, d),
c.deep && e(j) && h(j, Object.keys(j), c)
}
}),
Object.defineProperties(a, i)
}
}
function i(a) {
return !!a && "object" == typeof a && a.constructor === Object
}
function j(a, b) {
x || (x = z());
var c = x.get(a);
return !c && b && (c = {},
x.set(a, c)),
c
}
function k(a, b) {
if (x)
if (1 === arguments.length)
x["delete"](a);
else {
var c = j(a, !1);
c && b.forEach(function(a) {
delete c[a]
})
}
}
function l(a, b, d) {
var e = this
, f = {
owner: a,
deferEvaluation: !0
};
if ("function" == typeof d)
f.read = d;
else {
if ("value"in d)
throw new Error('For ko.defineProperty, you must not specify a "value" for the property. You must provide a "get" function.');
if ("function" != typeof d.get)
throw new Error('For ko.defineProperty, the third parameter must be either an evaluator function, or an options object containing a function called "get".');
f.read = d.get,
f.write = d.set
}
return a[b] = e.computed(f),
c.call(e, a, [b]),
a
}
function m(a, b) {
var c = null;
a.computed(function() {
c && (c.dispose(),
c = null);
var d = b();
d instanceof Array && (c = n(a, b, d))
})
}
function n(a, b, c) {
var d = o(a, c);
return d.subscribe(b)
}
function o(a, b) {
y || (y = z());
var c = y.get(b);
if (!c) {
c = new a.subscribable,
y.set(b, c);
var d = {};
p(b, c, d),
q(a, b, c, d)
}
return c
}
function p(a, b, c) {
["pop", "push", "reverse", "shift", "sort", "splice", "unshift"].forEach(function(d) {
var e = a[d];
a[d] = function() {
var a = e.apply(this, arguments);
return c.pause !== !0 && b.notifySubscribers(this),
a
}
})
}
function q(a, b, c, d) {
["remove", "removeAll", "destroy", "destroyAll", "replace"].forEach(function(e) {
Object.defineProperty(b, e, {
enumerable: !1,
value: function() {
var f;
d.pause = !0;
try {
f = a.observableArray.fn[e].apply(a.observableArray(b), arguments)
} finally {
d.pause = !1
}
return c.notifySubscribers(b),
f
}
})
})
}
function r(a, b) {
if (!a || "object" != typeof a)
return null;
var c = j(a, !1);
return c && b in c ? c[b]() : null
}
function s(a, b) {
if (!a || "object" != typeof a)
return !1;
var c = j(a, !1);
return !!c && b in c
}
function t(a, b) {
var c = r(a, b);
c && c.valueHasMutated()
}
function u(a) {
a.track = c,
a.untrack = k,
a.getObservable = r,
a.valueHasMutated = t,
a.defineProperty = l,
a.es5 = {
getAllObservablesForObject: j,
notifyWhenPresentOrFutureArrayValuesMutate: m,
isTracked: s
}
}
function v() {
if ("object" == typeof exports && "object" == typeof module) {
w = require("knockout");
var b = require("../lib/weakmap");
u(w),
z = function() {
return new b
}
,
module.exports = w
} else
"function" == typeof define && define.amd ? define("KnockoutES5", ["knockout"], function(b) {
return w = b,
u(b),
z = function() {
return new a.WeakMap
}
,
b
}) : "ko"in a && (w = a.ko,
u(a.ko),
z = function() {
return new a.WeakMap
}
)
}
var w, x, y, z, A = /^function\s*([^\s(]+)/;
v()
}(this),
void function(a, b, c) {
function d(a, b, c) {
return "function" == typeof b && (c = b,
b = e(c).replace(/_$/, "")),
j(a, b, {
configurable: !0,
writable: !0,
value: c
})
}
function e(a) {
return "function" != typeof a ? "" : "_name"in a ? a._name : "name"in a ? a.name : k.call(a).match(n)[1]
}
function f(a, b) {
return b._name = a,
b
}
function g(a) {
function b(b, e) {
return e || 2 === arguments.length ? d.set(b, e) : (e = d.get(b),
e === c && (e = a(b),
d.set(b, e))),
e
}
var d = new p;
return a || (a = q),
b
}
var h = Object.getOwnPropertyNames
, i = "object" == typeof window ? Object.getOwnPropertyNames(window) : []
, j = Object.defineProperty
, k = Function.prototype.toString
, l = Object.create
, m = Object.prototype.hasOwnProperty
, n = /^\n?function\s?(\w*)?_?\(/
, o = function() {
function a() {
var a = g()
, c = {};
this.unlock = function(d) {
var e = n(d);
if (m.call(e, a))
return e[a](c);
var f = l(null, b);
return j(e, a, {
value: function(a) {
return a === c ? f : void 0
}
}),
f
}
}
var b = {
value: {
writable: !0,
value: c
}
}
, e = l(null)
, g = function() {
var a = Math.random().toString(36).slice(2);
return a in e ? g() : e[a] = a
}
, k = g()
, n = function(a) {
if (m.call(a, k))
return a[k];
if (!Object.isExtensible(a))
throw new TypeError("Object must be extensible");
var b = l(null);
return j(a, k, {
value: b
}),
b
};
return d(Object, f("getOwnPropertyNames", function(a) {
var b, c = Object(a);
if (c !== Window.prototype && "toString"in c && "[object Window]" === c.toString())
try {
b = h(a)
} catch (d) {
b = i
}
else
b = h(a);
return m.call(a, k) && b.splice(b.indexOf(k), 1),
b
})),
d(a.prototype, f("get", function(a) {
return this.unlock(a).value
})),
d(a.prototype, f("set", function(a, b) {
this.unlock(a).value = b
})),
a
}()
, p = function(g) {
function h(b) {
return this === a || null == this || this === h.prototype ? new h(b) : (p(this, new o),
void r(this, b))
}
function i(a) {
n(a);
var d = q(this).get(a);
return d === b ? c : d
}
function j(a, d) {
n(a),
q(this).set(a, d === c ? b : d)
}
function k(a) {
return n(a),
q(this).get(a) !== c
}
function l(a) {
n(a);
var b = q(this)
, d = b.get(a) !== c;
return b.set(a, c),
d
}
function m() {
return q(this),
"[object WeakMap]"
}
var n = function(a) {
if (null == a || "object" != typeof a && "function" != typeof a)
throw new TypeError("Invalid WeakMap key")
}
, p = function(a, b) {
var c = g.unlock(a);
if (c.value)
throw new TypeError("Object is already a WeakMap");
c.value = b
}
, q = function(a) {
var b = g.unlock(a).value;
if (!b)
throw new TypeError("WeakMap is not generic");
return b
}
, r = function(a, b) {
null !== b && "object" == typeof b && "function" == typeof b.forEach && b.forEach(function(c, d) {
c instanceof Array && 2 === c.length && j.call(a, b[d][0], b[d][1])
})
};
i._name = "get",
j._name = "set",
k._name = "has",
m._name = "toString";
var s = ("" + Object).split("Object")
, t = f("toString", function() {
return s[0] + e(this) + s[1]
});
d(t, t);
var u = {
__proto__: []
}instanceof Array ? function(a) {
a.__proto__ = t
}
: function(a) {
d(a, t)
}
;
return u(h),
[m, i, j, k, l].forEach(function(a) {
d(h.prototype, a),
u(a)
}),
h
}(new o)
, q = Object.create ? function() {
return Object.create(null)
}
: function() {
return {}
}
;
"undefined" != typeof module ? module.exports = p : "undefined" != typeof exports ? exports.WeakMap = p : "WeakMap"in a || (a.WeakMap = p),
p.createStorage = g,
a.WeakMap && (a.WeakMap.createStorage = g)
}(function() {
return this
}());
!function(e) {
if ("object" == typeof exports && "undefined" != typeof module)
module.exports = e();
else if ("function" == typeof define && define.amd)
define("markdown-it-sanitizer", [], e);
else {
var t;
t = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this,
t.markdownitSanitizer = e()
}
}(function() {
return function e(t, n, r) {
function o(l, f) {
if (!n[l]) {
if (!t[l]) {
var a = "function" == typeof require && require;
if (!f && a)
return a(l, !0);
if (i)
return i(l, !0);
var s = new Error("Cannot find module '" + l + "'");
throw s.code = "MODULE_NOT_FOUND",
s
}
var u = n[l] = {
exports: {}
};
t[l][0].call(u.exports, function(e) {
var n = t[l][1][e];
return o(n ? n : e)
}, u, u.exports, e, t, n, r)
}
return n[l].exports
}
for (var i = "function" == typeof require && require, l = 0; l < r.length; l++)
o(r[l]);
return o
}({
1: [function(e, t, n) {
"use strict";
t.exports = function(e, t) {
function n(e) {
var t = l.match(e);
return t && 1 === t.length && 0 === t[0].index && t[0].lastIndex === e.length ? t[0].url : null
}
function r(e) {
var t = '
]*)"(?:\\stitle="([^"<>]*)")?>'
, r = RegExp(t, "i")
, o = '
]*src="[^"<>]*"[^<>]*)\\s?\\/?>'
, i = RegExp(o, "i");
return e = e.replace(/<[^<>]*>?/gi, function(e) {
var t, o, l, a, u;
if (/(^<->|^<-\s|^<3\s)/.test(e))
return e;
if (t = e.match(i)) {
var m = t[1];
if (o = n(m.match(/src="([^"<>]*)"/i)[1]),
l = m.match(/alt="([^"<>]*)"/i),
l = l && "undefined" != typeof l[1] ? l[1] : "",
a = m.match(/title="([^"<>]*)"/i),
a = a && "undefined" != typeof a[1] ? a[1] : "",
o && /^https?:\/\//i.test(o))
return "" !== c ? '
' : '
'
}
return u = d.indexOf("a"),
t = e.match(r),
t && (a = "undefined" != typeof t[2] ? t[2] : "",
o = n(t[1]),
o && /^(?:https?:\/\/|ftp:\/\/|mailto:|xmpp:)/i.test(o)) ? (p = !0,
h[u] += 1,
'') : (t = /<\/a>/i.test(e)) ? (p = !0,
h[u] -= 1,
h[u] < 0 && (g[u] = !0),
"") : (t = e.match(/<(br|hr)\s?\/?>/i)) ? "<" + t[1].toLowerCase() + ">" : (t = e.match(/<(\/?)(b|blockquote|code|em|h[1-6]|li|ol(?: start="\d+")?|p|pre|s|sub|sup|strong|ul)>/i),
t && !/<\/ol start="\d+"/i.test(e) ? (p = !0,
u = d.indexOf(t[2].toLowerCase().split(" ")[0]),
"/" === t[1] ? h[u] -= 1 : h[u] += 1,
h[u] < 0 && (g[u] = !0),
"<" + t[1] + t[2].toLowerCase() + ">") : s === !0 ? "" : f(e))
})
}
function o(e) {
var t, n, o;
for (a = 0; a < d.length; a++)
h[a] = 0;
for (a = 0; a < d.length; a++)
g[a] = !1;
for (p = !1,
n = 0; n < e.tokens.length; n++)
if ("html_block" === e.tokens[n].type && (e.tokens[n].content = r(e.tokens[n].content)),
"inline" === e.tokens[n].type)
for (o = e.tokens[n].children,
t = 0; t < o.length; t++)
"html_inline" === o[t].type && (o[t].content = r(o[t].content))
}
function i(e) {
function t(e, t) {
var n, r;
return n = "a" === t ? RegExp('
]*" title="[^"<>]*" target="_blank">', "g") : "ol" === t ? //g : RegExp("<" + t + ">", "g"),
r = RegExp("" + t + ">", "g"),
u === !0 ? (e = e.replace(n, ""),
e = e.replace(r, "")) : (e = e.replace(n, function(e) {
return f(e)
}),
e = e.replace(r, function(e) {
return f(e)
})),
e
}
function n(e) {
var n;
for (n = 0; n < d.length; n++)
g[n] === !0 && (e = t(e, d[n]));
return e
}
if (p !== !1) {
var r, o;
for (a = 0; a < d.length; a++)
0 !== h[a] && (g[a] = !0);
for (r = 0; r < e.tokens.length; r++)
if ("html_block" !== e.tokens[r].type) {
if ("inline" === e.tokens[r].type)
for (o = e.tokens[r].children,
a = 0; a < o.length; a++)
"html_inline" === o[a].type && (o[a].content = n(o[a].content))
} else
e.tokens[r].content = n(e.tokens[r].content)
}
}
var l = e.linkify
, f = e.utils.escapeHtml;
t = t ? t : {};
var a, s = "undefined" != typeof t.removeUnknown ? t.removeUnknown : !1, u = "undefined" != typeof t.removeUnbalanced ? t.removeUnbalanced : !1, c = "undefined" != typeof t.imageClass ? t.imageClass : "", p = !1, d = ["a", "b", "blockquote", "code", "em", "h1", "h2", "h3", "h4", "h5", "h6", "li", "ol", "p", "pre", "s", "sub", "sup", "strong", "ul"], h = new Array(d.length), g = new Array(d.length);
for (a = 0; a < d.length; a++)
h[a] = 0;
for (a = 0; a < d.length; a++)
g[a] = !1;
e.core.ruler.after("linkify", "sanitize_inline", o),
e.core.ruler.after("sanitize_inline", "sanitize_balance", i)
}
}
, {}]
}, {}, [1])(1)
});
!function(e) {
if ("object" == typeof exports && "undefined" != typeof module)
module.exports = e();
else if ("function" == typeof define && define.amd)
define("markdown-it", [], e);
else {
var r;
r = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof self ? self : this,
r.markdownit = e()
}
}(function() {
var e;
return function r(e, t, n) {
function s(i, a) {
if (!t[i]) {
if (!e[i]) {
var c = "function" == typeof require && require;
if (!a && c)
return c(i, !0);
if (o)
return o(i, !0);
var l = new Error("Cannot find module '" + i + "'");
throw l.code = "MODULE_NOT_FOUND",
l
}
var u = t[i] = {
exports: {}
};
e[i][0].call(u.exports, function(r) {
var t = e[i][1][r];
return s(t ? t : r)
}, u, u.exports, r, e, t, n)
}
return t[i].exports
}
for (var o = "function" == typeof require && require, i = 0; i < n.length; i++)
s(n[i]);
return s
}({
1: [function(e, r, t) {
"use strict";
r.exports = e("entities/maps/entities.json")
}
, {
"entities/maps/entities.json": 53
}],
2: [function(e, r, t) {
"use strict";
r.exports = ["address", "article", "aside", "base", "basefont", "blockquote", "body", "caption", "center", "col", "colgroup", "dd", "details", "dialog", "dir", "div", "dl", "dt", "fieldset", "figcaption", "figure", "footer", "form", "frame", "frameset", "h1", "head", "header", "hr", "html", "iframe", "legend", "li", "link", "main", "menu", "menuitem", "meta", "nav", "noframes", "ol", "optgroup", "option", "p", "param", "pre", "section", "source", "title", "summary", "table", "tbody", "td", "tfoot", "th", "thead", "title", "tr", "track", "ul"]
}
, {}],
3: [function(e, r, t) {
"use strict";
var n = "[a-zA-Z_:][a-zA-Z0-9:._-]*"
, s = "[^\"'=<>`\\x00-\\x20]+"
, o = "'[^']*'"
, i = '"[^"]*"'
, a = "(?:" + s + "|" + o + "|" + i + ")"
, c = "(?:\\s+" + n + "(?:\\s*=\\s*" + a + ")?)"
, l = "<[A-Za-z][A-Za-z0-9\\-]*" + c + "*\\s*\\/?>"
, u = "<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>"
, p = "|"
, h = "<[?].*?[?]>"
, f = "]*>"
, d = ""
, m = new RegExp("^(?:" + l + "|" + u + "|" + p + "|" + h + "|" + f + "|" + d + ")")
, _ = new RegExp("^(?:" + l + "|" + u + ")");
r.exports.HTML_TAG_RE = m,
r.exports.HTML_OPEN_CLOSE_TAG_RE = _
}
, {}],
4: [function(e, r, t) {
"use strict";
function n(e) {
return Object.prototype.toString.call(e)
}
function s(e) {
return "[object String]" === n(e)
}
function o(e, r) {
return x.call(e, r)
}
function i(e) {
var r = Array.prototype.slice.call(arguments, 1);
return r.forEach(function(r) {
if (r) {
if ("object" != typeof r)
throw new TypeError(r + "must be object");
Object.keys(r).forEach(function(t) {
e[t] = r[t]
})
}
}),
e
}
function a(e, r, t) {
return [].concat(e.slice(0, r), t, e.slice(r + 1))
}
function c(e) {
return !(e >= 55296 && e <= 57343) && (!(e >= 64976 && e <= 65007) && (65535 !== (65535 & e) && 65534 !== (65535 & e) && (!(e >= 0 && e <= 8) && (11 !== e && (!(e >= 14 && e <= 31) && (!(e >= 127 && e <= 159) && !(e > 1114111)))))))
}
function l(e) {
if (e > 65535) {
e -= 65536;
var r = 55296 + (e >> 10)
, t = 56320 + (1023 & e);
return String.fromCharCode(r, t)
}
return String.fromCharCode(e)
}
function u(e, r) {
var t = 0;
return o(D, r) ? D[r] : 35 === r.charCodeAt(0) && w.test(r) && (t = "x" === r[1].toLowerCase() ? parseInt(r.slice(2), 16) : parseInt(r.slice(1), 10),
c(t)) ? l(t) : e
}
function p(e) {
return e.indexOf("\\") < 0 ? e : e.replace(y, "$1")
}
function h(e) {
return e.indexOf("\\") < 0 && e.indexOf("&") < 0 ? e : e.replace(A, function(e, r, t) {
return r ? r : u(e, t)
})
}
function f(e) {
return S[e]
}
function d(e) {
return q.test(e) ? e.replace(E, f) : e
}
function m(e) {
return e.replace(F, "\\$&")
}
function _(e) {
switch (e) {
case 9:
case 32:
return !0
}
return !1
}
function g(e) {
if (e >= 8192 && e <= 8202)
return !0;
switch (e) {
case 9:
case 10:
case 11:
case 12:
case 13:
case 32:
case 160:
case 5760:
case 8239:
case 8287:
case 12288:
return !0
}
return !1
}
function k(e) {
return z.test(e)
}
function b(e) {
switch (e) {
case 33:
case 34:
case 35:
case 36:
case 37:
case 38:
case 39:
case 40:
case 41:
case 42:
case 43:
case 44:
case 45:
case 46:
case 47:
case 58:
case 59:
case 60:
case 61:
case 62:
case 63:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 124:
case 125:
case 126:
return !0;
default:
return !1
}
}
function v(e) {
return e.trim().replace(/\s+/g, " ").toUpperCase()
}
var x = Object.prototype.hasOwnProperty
, y = /\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g
, C = /&([a-z#][a-z0-9]{1,31});/gi
, A = new RegExp(y.source + "|" + C.source,"gi")
, w = /^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i
, D = e("./entities")
, q = /[&<>"]/
, E = /[&<>"]/g
, S = {
"&": "&",
"<": "<",
">": ">",
'"': """
}
, F = /[.?*+^$[\]\\(){}|-]/g
, z = e("uc.micro/categories/P/regex");
t.lib = {},
t.lib.mdurl = e("mdurl"),
t.lib.ucmicro = e("uc.micro"),
t.assign = i,
t.isString = s,
t.has = o,
t.unescapeMd = p,
t.unescapeAll = h,
t.isValidEntityCode = c,
t.fromCodePoint = l,
t.escapeHtml = d,
t.arrayReplaceAt = a,
t.isSpace = _,
t.isWhiteSpace = g,
t.isMdAsciiPunct = b,
t.isPunctChar = k,
t.escapeRE = m,
t.normalizeReference = v
}
, {
"./entities": 1,
mdurl: 59,
"uc.micro": 65,
"uc.micro/categories/P/regex": 63
}],
5: [function(e, r, t) {
"use strict";
t.parseLinkLabel = e("./parse_link_label"),
t.parseLinkDestination = e("./parse_link_destination"),
t.parseLinkTitle = e("./parse_link_title")
}
, {
"./parse_link_destination": 6,
"./parse_link_label": 7,
"./parse_link_title": 8
}],
6: [function(e, r, t) {
"use strict";
var n = e("../common/utils").isSpace
, s = e("../common/utils").unescapeAll;
r.exports = function(e, r, t) {
var o, i, a = 0, c = r, l = {
ok: !1,
pos: 0,
lines: 0,
str: ""
};
if (60 === e.charCodeAt(r)) {
for (r++; r < t; ) {
if (o = e.charCodeAt(r),
10 === o || n(o))
return l;
if (62 === o)
return l.pos = r + 1,
l.str = s(e.slice(c + 1, r)),
l.ok = !0,
l;
92 === o && r + 1 < t ? r += 2 : r++
}
return l
}
for (i = 0; r < t && (o = e.charCodeAt(r),
32 !== o) && !(o < 32 || 127 === o); )
if (92 === o && r + 1 < t)
r += 2;
else {
if (40 === o && (i++,
i > 1))
break;
if (41 === o && (i--,
i < 0))
break;
r++
}
return c === r ? l : (l.str = s(e.slice(c, r)),
l.lines = a,
l.pos = r,
l.ok = !0,
l)
}
}
, {
"../common/utils": 4
}],
7: [function(e, r, t) {
"use strict";
r.exports = function(e, r, t) {
var n, s, o, i, a = -1, c = e.posMax, l = e.pos;
for (e.pos = r + 1,
n = 1; e.pos < c; ) {
if (o = e.src.charCodeAt(e.pos),
93 === o && (n--,
0 === n)) {
s = !0;
break
}
if (i = e.pos,
e.md.inline.skipToken(e),
91 === o)
if (i === e.pos - 1)
n++;
else if (t)
return e.pos = l,
-1
}
return s && (a = e.pos),
e.pos = l,
a
}
}
, {}],
8: [function(e, r, t) {
"use strict";
var n = e("../common/utils").unescapeAll;
r.exports = function(e, r, t) {
var s, o, i = 0, a = r, c = {
ok: !1,
pos: 0,
lines: 0,
str: ""
};
if (r >= t)
return c;
if (o = e.charCodeAt(r),
34 !== o && 39 !== o && 40 !== o)
return c;
for (r++,
40 === o && (o = 41); r < t; ) {
if (s = e.charCodeAt(r),
s === o)
return c.pos = r + 1,
c.lines = i,
c.str = n(e.slice(a + 1, r)),
c.ok = !0,
c;
10 === s ? i++ : 92 === s && r + 1 < t && (r++,
10 === e.charCodeAt(r) && i++),
r++
}
return c
}
}
, {
"../common/utils": 4
}],
9: [function(e, r, t) {
"use strict";
function n(e) {
var r = e.trim().toLowerCase();
return !g.test(r) || !!k.test(r)
}
function s(e) {
var r = d.parse(e, !0);
if (r.hostname && (!r.protocol || b.indexOf(r.protocol) >= 0))
try {
r.hostname = m.toASCII(r.hostname)
} catch (t) {}
return d.encode(d.format(r))
}
function o(e) {
var r = d.parse(e, !0);
if (r.hostname && (!r.protocol || b.indexOf(r.protocol) >= 0))
try {
r.hostname = m.toUnicode(r.hostname)
} catch (t) {}
return d.decode(d.format(r))
}
function i(e, r) {
return this instanceof i ? (r || a.isString(e) || (r = e || {},
e = "default"),
this.inline = new h,
this.block = new p,
this.core = new u,
this.renderer = new l,
this.linkify = new f,
this.validateLink = n,
this.normalizeLink = s,
this.normalizeLinkText = o,
this.utils = a,
this.helpers = c,
this.options = {},
this.configure(e),
void (r && this.set(r))) : new i(e,r)
}
var a = e("./common/utils")
, c = e("./helpers")
, l = e("./renderer")
, u = e("./parser_core")
, p = e("./parser_block")
, h = e("./parser_inline")
, f = e("linkify-it")
, d = e("mdurl")
, m = e("punycode")
, _ = {
"default": e("./presets/default"),
zero: e("./presets/zero"),
commonmark: e("./presets/commonmark")
}
, g = /^(vbscript|javascript|file|data):/
, k = /^data:image\/(gif|png|jpeg|webp);/
, b = ["http:", "https:", "mailto:"];
i.prototype.set = function(e) {
return a.assign(this.options, e),
this
}
,
i.prototype.configure = function(e) {
var r, t = this;
if (a.isString(e) && (r = e,
e = _[r],
!e))
throw new Error('Wrong `markdown-it` preset "' + r + '", check name');
if (!e)
throw new Error("Wrong `markdown-it` preset, can't be empty");
return e.options && t.set(e.options),
e.components && Object.keys(e.components).forEach(function(r) {
e.components[r].rules && t[r].ruler.enableOnly(e.components[r].rules),
e.components[r].rules2 && t[r].ruler2.enableOnly(e.components[r].rules2)
}),
this
}
,
i.prototype.enable = function(e, r) {
var t = [];
Array.isArray(e) || (e = [e]),
["core", "block", "inline"].forEach(function(r) {
t = t.concat(this[r].ruler.enable(e, !0))
}, this),
t = t.concat(this.inline.ruler2.enable(e, !0));
var n = e.filter(function(e) {
return t.indexOf(e) < 0
});
if (n.length && !r)
throw new Error("MarkdownIt. Failed to enable unknown rule(s): " + n);
return this
}
,
i.prototype.disable = function(e, r) {
var t = [];
Array.isArray(e) || (e = [e]),
["core", "block", "inline"].forEach(function(r) {
t = t.concat(this[r].ruler.disable(e, !0))
}, this),
t = t.concat(this.inline.ruler2.disable(e, !0));
var n = e.filter(function(e) {
return t.indexOf(e) < 0
});
if (n.length && !r)
throw new Error("MarkdownIt. Failed to disable unknown rule(s): " + n);
return this
}
,
i.prototype.use = function(e) {
var r = [this].concat(Array.prototype.slice.call(arguments, 1));
return e.apply(e, r),
this
}
,
i.prototype.parse = function(e, r) {
var t = new this.core.State(e,this,r);
return this.core.process(t),
t.tokens
}
,
i.prototype.render = function(e, r) {
return r = r || {},
this.renderer.render(this.parse(e, r), this.options, r)
}
,
i.prototype.parseInline = function(e, r) {
var t = new this.core.State(e,this,r);
return t.inlineMode = !0,
this.core.process(t),
t.tokens
}
,
i.prototype.renderInline = function(e, r) {
return r = r || {},
this.renderer.render(this.parseInline(e, r), this.options, r)
}
,
r.exports = i
}
, {
"./common/utils": 4,
"./helpers": 5,
"./parser_block": 10,
"./parser_core": 11,
"./parser_inline": 12,
"./presets/commonmark": 13,
"./presets/default": 14,
"./presets/zero": 15,
"./renderer": 16,
"linkify-it": 54,
mdurl: 59,
punycode: 52
}],
10: [function(e, r, t) {
"use strict";
function n() {
this.ruler = new s;
for (var e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1], {
alt: (o[e][2] || []).slice()
})
}
var s = e("./ruler")
, o = [["table", e("./rules_block/table"), ["paragraph", "reference"]], ["code", e("./rules_block/code")], ["fence", e("./rules_block/fence"), ["paragraph", "reference", "blockquote", "list"]], ["blockquote", e("./rules_block/blockquote"), ["paragraph", "reference", "list"]], ["hr", e("./rules_block/hr"), ["paragraph", "reference", "blockquote", "list"]], ["list", e("./rules_block/list"), ["paragraph", "reference", "blockquote"]], ["reference", e("./rules_block/reference")], ["heading", e("./rules_block/heading"), ["paragraph", "reference", "blockquote"]], ["lheading", e("./rules_block/lheading")], ["html_block", e("./rules_block/html_block"), ["paragraph", "reference", "blockquote"]], ["paragraph", e("./rules_block/paragraph")]];
n.prototype.tokenize = function(e, r, t) {
for (var n, s, o = this.ruler.getRules(""), i = o.length, a = r, c = !1, l = e.md.options.maxNesting; a < t && (e.line = a = e.skipEmptyLines(a),
!(a >= t)) && !(e.sCount[a] < e.blkIndent); ) {
if (e.level >= l) {
e.line = t;
break
}
for (s = 0; s < i && !(n = o[s](e, a, t, !1)); s++)
;
if (e.tight = !c,
e.isEmpty(e.line - 1) && (c = !0),
a = e.line,
a < t && e.isEmpty(a)) {
if (c = !0,
a++,
a < t && "list" === e.parentType && e.isEmpty(a))
break;
e.line = a
}
}
}
,
n.prototype.parse = function(e, r, t, n) {
var s;
e && (s = new this.State(e,r,t,n),
this.tokenize(s, s.line, s.lineMax))
}
,
n.prototype.State = e("./rules_block/state_block"),
r.exports = n
}
, {
"./ruler": 17,
"./rules_block/blockquote": 18,
"./rules_block/code": 19,
"./rules_block/fence": 20,
"./rules_block/heading": 21,
"./rules_block/hr": 22,
"./rules_block/html_block": 23,
"./rules_block/lheading": 24,
"./rules_block/list": 25,
"./rules_block/paragraph": 26,
"./rules_block/reference": 27,
"./rules_block/state_block": 28,
"./rules_block/table": 29
}],
11: [function(e, r, t) {
"use strict";
function n() {
this.ruler = new s;
for (var e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1])
}
var s = e("./ruler")
, o = [["normalize", e("./rules_core/normalize")], ["block", e("./rules_core/block")], ["inline", e("./rules_core/inline")], ["linkify", e("./rules_core/linkify")], ["replacements", e("./rules_core/replacements")], ["smartquotes", e("./rules_core/smartquotes")]];
n.prototype.process = function(e) {
var r, t, n;
for (n = this.ruler.getRules(""),
r = 0,
t = n.length; r < t; r++)
n[r](e)
}
,
n.prototype.State = e("./rules_core/state_core"),
r.exports = n
}
, {
"./ruler": 17,
"./rules_core/block": 30,
"./rules_core/inline": 31,
"./rules_core/linkify": 32,
"./rules_core/normalize": 33,
"./rules_core/replacements": 34,
"./rules_core/smartquotes": 35,
"./rules_core/state_core": 36
}],
12: [function(e, r, t) {
"use strict";
function n() {
var e;
for (this.ruler = new s,
e = 0; e < o.length; e++)
this.ruler.push(o[e][0], o[e][1]);
for (this.ruler2 = new s,
e = 0; e < i.length; e++)
this.ruler2.push(i[e][0], i[e][1])
}
var s = e("./ruler")
, o = [["text", e("./rules_inline/text")], ["newline", e("./rules_inline/newline")], ["escape", e("./rules_inline/escape")], ["backticks", e("./rules_inline/backticks")], ["strikethrough", e("./rules_inline/strikethrough").tokenize], ["emphasis", e("./rules_inline/emphasis").tokenize], ["link", e("./rules_inline/link")], ["image", e("./rules_inline/image")], ["autolink", e("./rules_inline/autolink")], ["html_inline", e("./rules_inline/html_inline")], ["entity", e("./rules_inline/entity")]]
, i = [["balance_pairs", e("./rules_inline/balance_pairs")], ["strikethrough", e("./rules_inline/strikethrough").postProcess], ["emphasis", e("./rules_inline/emphasis").postProcess], ["text_collapse", e("./rules_inline/text_collapse")]];
n.prototype.skipToken = function(e) {
var r, t, n = e.pos, s = this.ruler.getRules(""), o = s.length, i = e.md.options.maxNesting, a = e.cache;
if ("undefined" != typeof a[n])
return void (e.pos = a[n]);
if (e.level < i)
for (t = 0; t < o && (e.level++,
r = s[t](e, !0),
e.level--,
!r); t++)
;
else
e.pos = e.posMax;
r || e.pos++,
a[n] = e.pos
}
,
n.prototype.tokenize = function(e) {
for (var r, t, n = this.ruler.getRules(""), s = n.length, o = e.posMax, i = e.md.options.maxNesting; e.pos < o; ) {
if (e.level < i)
for (t = 0; t < s && !(r = n[t](e, !1)); t++)
;
if (r) {
if (e.pos >= o)
break
} else
e.pending += e.src[e.pos++]
}
e.pending && e.pushPending()
}
,
n.prototype.parse = function(e, r, t, n) {
var s, o, i, a = new this.State(e,r,t,n);
for (this.tokenize(a),
o = this.ruler2.getRules(""),
i = o.length,
s = 0; s < i; s++)
o[s](a)
}
,
n.prototype.State = e("./rules_inline/state_inline"),
r.exports = n
}
, {
"./ruler": 17,
"./rules_inline/autolink": 37,
"./rules_inline/backticks": 38,
"./rules_inline/balance_pairs": 39,
"./rules_inline/emphasis": 40,
"./rules_inline/entity": 41,
"./rules_inline/escape": 42,
"./rules_inline/html_inline": 43,
"./rules_inline/image": 44,
"./rules_inline/link": 45,
"./rules_inline/newline": 46,
"./rules_inline/state_inline": 47,
"./rules_inline/strikethrough": 48,
"./rules_inline/text": 49,
"./rules_inline/text_collapse": 50
}],
13: [function(e, r, t) {
"use strict";
r.exports = {
options: {
html: !0,
xhtmlOut: !0,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 20
},
components: {
core: {
rules: ["normalize", "block", "inline"]
},
block: {
rules: ["blockquote", "code", "fence", "heading", "hr", "html_block", "lheading", "list", "reference", "paragraph"]
},
inline: {
rules: ["autolink", "backticks", "emphasis", "entity", "escape", "html_inline", "image", "link", "newline", "text"],
rules2: ["balance_pairs", "emphasis", "text_collapse"]
}
}
}
}
, {}],
14: [function(e, r, t) {
"use strict";
r.exports = {
options: {
html: !1,
xhtmlOut: !1,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 100
},
components: {
core: {},
block: {},
inline: {}
}
}
}
, {}],
15: [function(e, r, t) {
"use strict";
r.exports = {
options: {
html: !1,
xhtmlOut: !1,
breaks: !1,
langPrefix: "language-",
linkify: !1,
typographer: !1,
quotes: "“”‘’",
highlight: null,
maxNesting: 20
},
components: {
core: {
rules: ["normalize", "block", "inline"]
},
block: {
rules: ["paragraph"]
},
inline: {
rules: ["text"],
rules2: ["balance_pairs", "text_collapse"]
}
}
}
}
, {}],
16: [function(e, r, t) {
"use strict";
function n() {
this.rules = s({}, a)
}
var s = e("./common/utils").assign
, o = e("./common/utils").unescapeAll
, i = e("./common/utils").escapeHtml
, a = {};
a.code_inline = function(e, r, t, n, s) {
var o = e[r]
, a = s.renderAttrs(o);
return "" + i(e[r].content) + "
"
}
,
a.code_block = function(e, r, t, n, s) {
var o = e[r]
, a = s.renderAttrs(o);
return "" + i(e[r].content) + "
\n"
}
,
a.fence = function(e, r, t, n, s) {
var a, c, l, u, p = e[r], h = p.info ? o(p.info).trim() : "", f = "";
return h && (f = h.split(/\s+/g)[0]),
a = t.highlight ? t.highlight(p.content, f) || i(p.content) : i(p.content),
0 === a.indexOf("" + a + "
\n") : "" + a + "
\n"
}
,
a.image = function(e, r, t, n, s) {
var o = e[r];
return o.attrs[o.attrIndex("alt")][1] = s.renderInlineAsText(o.children, t, n),
s.renderToken(e, r, t)
}
,
a.hardbreak = function(e, r, t) {
return t.xhtmlOut ? "
\n" : "
\n"
}
,
a.softbreak = function(e, r, t) {
return t.breaks ? t.xhtmlOut ? "
\n" : "
\n" : "\n"
}
,
a.text = function(e, r) {
return i(e[r].content)
}
,
a.html_block = function(e, r) {
return e[r].content
}
,
a.html_inline = function(e, r) {
return e[r].content
}
,
n.prototype.renderAttrs = function(e) {
var r, t, n;
if (!e.attrs)
return "";
for (n = "",
r = 0,
t = e.attrs.length; r < t; r++)
n += " " + i(e.attrs[r][0]) + '="' + i(e.attrs[r][1]) + '"';
return n
}
,
n.prototype.renderToken = function(e, r, t) {
var n, s = "", o = !1, i = e[r];
return i.hidden ? "" : (i.block && i.nesting !== -1 && r && e[r - 1].hidden && (s += "\n"),
s += (i.nesting === -1 ? "" : "<") + i.tag,
s += this.renderAttrs(i),
0 === i.nesting && t.xhtmlOut && (s += " /"),
i.block && (o = !0,
1 === i.nesting && r + 1 < e.length && (n = e[r + 1],
"inline" === n.type || n.hidden ? o = !1 : n.nesting === -1 && n.tag === i.tag && (o = !1))),
s += o ? ">\n" : ">")
}
,
n.prototype.renderInline = function(e, r, t) {
for (var n, s = "", o = this.rules, i = 0, a = e.length; i < a; i++)
n = e[i].type,
s += "undefined" != typeof o[n] ? o[n](e, i, r, t, this) : this.renderToken(e, i, r);
return s
}
,
n.prototype.renderInlineAsText = function(e, r, t) {
for (var n = "", s = 0, o = e.length; s < o; s++)
"text" === e[s].type ? n += e[s].content : "image" === e[s].type && (n += this.renderInlineAsText(e[s].children, r, t));
return n
}
,
n.prototype.render = function(e, r, t) {
var n, s, o, i = "", a = this.rules;
for (n = 0,
s = e.length; n < s; n++)
o = e[n].type,
i += "inline" === o ? this.renderInline(e[n].children, r, t) : "undefined" != typeof a[o] ? a[e[n].type](e, n, r, t, this) : this.renderToken(e, n, r, t);
return i
}
,
r.exports = n
}
, {
"./common/utils": 4
}],
17: [function(e, r, t) {
"use strict";
function n() {
this.__rules__ = [],
this.__cache__ = null
}
n.prototype.__find__ = function(e) {
for (var r = 0; r < this.__rules__.length; r++)
if (this.__rules__[r].name === e)
return r;
return -1
}
,
n.prototype.__compile__ = function() {
var e = this
, r = [""];
e.__rules__.forEach(function(e) {
e.enabled && e.alt.forEach(function(e) {
r.indexOf(e) < 0 && r.push(e)
})
}),
e.__cache__ = {},
r.forEach(function(r) {
e.__cache__[r] = [],
e.__rules__.forEach(function(t) {
t.enabled && (r && t.alt.indexOf(r) < 0 || e.__cache__[r].push(t.fn))
})
})
}
,
n.prototype.at = function(e, r, t) {
var n = this.__find__(e)
, s = t || {};
if (n === -1)
throw new Error("Parser rule not found: " + e);
this.__rules__[n].fn = r,
this.__rules__[n].alt = s.alt || [],
this.__cache__ = null
}
,
n.prototype.before = function(e, r, t, n) {
var s = this.__find__(e)
, o = n || {};
if (s === -1)
throw new Error("Parser rule not found: " + e);
this.__rules__.splice(s, 0, {
name: r,
enabled: !0,
fn: t,
alt: o.alt || []
}),
this.__cache__ = null
}
,
n.prototype.after = function(e, r, t, n) {
var s = this.__find__(e)
, o = n || {};
if (s === -1)
throw new Error("Parser rule not found: " + e);
this.__rules__.splice(s + 1, 0, {
name: r,
enabled: !0,
fn: t,
alt: o.alt || []
}),
this.__cache__ = null
}
,
n.prototype.push = function(e, r, t) {
var n = t || {};
this.__rules__.push({
name: e,
enabled: !0,
fn: r,
alt: n.alt || []
}),
this.__cache__ = null
}
,
n.prototype.enable = function(e, r) {
Array.isArray(e) || (e = [e]);
var t = [];
return e.forEach(function(e) {
var n = this.__find__(e);
if (n < 0) {
if (r)
return;
throw new Error("Rules manager: invalid rule name " + e)
}
this.__rules__[n].enabled = !0,
t.push(e)
}, this),
this.__cache__ = null,
t
}
,
n.prototype.enableOnly = function(e, r) {
Array.isArray(e) || (e = [e]),
this.__rules__.forEach(function(e) {
e.enabled = !1
}),
this.enable(e, r)
}
,
n.prototype.disable = function(e, r) {
Array.isArray(e) || (e = [e]);
var t = [];
return e.forEach(function(e) {
var n = this.__find__(e);
if (n < 0) {
if (r)
return;
throw new Error("Rules manager: invalid rule name " + e)
}
this.__rules__[n].enabled = !1,
t.push(e)
}, this),
this.__cache__ = null,
t
}
,
n.prototype.getRules = function(e) {
return null === this.__cache__ && this.__compile__(),
this.__cache__[e] || []
}
,
r.exports = n
}
, {}],
18: [function(e, r, t) {
"use strict";
var n = e("../common/utils").isSpace;
r.exports = function(e, r, t, s) {
var o, i, a, c, l, u, p, h, f, d, m, _, g, k, b, v, x = e.bMarks[r] + e.tShift[r], y = e.eMarks[r];
if (62 !== e.src.charCodeAt(x++))
return !1;
if (s)
return !0;
for (32 === e.src.charCodeAt(x) && x++,
u = e.blkIndent,
e.blkIndent = 0,
f = d = e.sCount[r] + x - (e.bMarks[r] + e.tShift[r]),
l = [e.bMarks[r]],
e.bMarks[r] = x; x < y && (m = e.src.charCodeAt(x),
n(m)); )
9 === m ? d += 4 - d % 4 : d++,
x++;
for (i = x >= y,
c = [e.sCount[r]],
e.sCount[r] = d - f,
a = [e.tShift[r]],
e.tShift[r] = x - e.bMarks[r],
_ = e.md.block.ruler.getRules("blockquote"),
o = r + 1; o < t && !(e.sCount[o] < u) && (x = e.bMarks[o] + e.tShift[o],
y = e.eMarks[o],
!(x >= y)); o++)
if (62 !== e.src.charCodeAt(x++)) {
if (i)
break;
for (v = !1,
k = 0,
b = _.length; k < b; k++)
if (_[k](e, o, t, !0)) {
v = !0;
break
}
if (v)
break;
l.push(e.bMarks[o]),
a.push(e.tShift[o]),
c.push(e.sCount[o]),
e.sCount[o] = -1
} else {
for (32 === e.src.charCodeAt(x) && x++,
f = d = e.sCount[o] + x - (e.bMarks[o] + e.tShift[o]),
l.push(e.bMarks[o]),
e.bMarks[o] = x; x < y && (m = e.src.charCodeAt(x),
n(m)); )
9 === m ? d += 4 - d % 4 : d++,
x++;
i = x >= y,
c.push(e.sCount[o]),
e.sCount[o] = d - f,
a.push(e.tShift[o]),
e.tShift[o] = x - e.bMarks[o]
}
for (p = e.parentType,
e.parentType = "blockquote",
g = e.push("blockquote_open", "blockquote", 1),
g.markup = ">",
g.map = h = [r, 0],
e.md.block.tokenize(e, r, o),
g = e.push("blockquote_close", "blockquote", -1),
g.markup = ">",
e.parentType = p,
h[1] = e.line,
k = 0; k < a.length; k++)
e.bMarks[k + r] = l[k],
e.tShift[k + r] = a[k],
e.sCount[k + r] = c[k];
return e.blkIndent = u,
!0
}
}
, {
"../common/utils": 4
}],
19: [function(e, r, t) {
"use strict";
r.exports = function(e, r, t) {
var n, s, o, i = 0;
if (e.sCount[r] - e.blkIndent < 4)
return !1;
for (s = n = r + 1; n < t; )
if (e.isEmpty(n)) {
if (i++,
i >= 2 && "list" === e.parentType)
break;
n++
} else {
if (i = 0,
!(e.sCount[n] - e.blkIndent >= 4))
break;
n++,
s = n
}
return e.line = s,
o = e.push("code_block", "code", 0),
o.content = e.getLines(r, s, 4 + e.blkIndent, !0),
o.map = [r, e.line],
!0
}
}
, {}],
20: [function(e, r, t) {
"use strict";
r.exports = function(e, r, t, n) {
var s, o, i, a, c, l, u, p = !1, h = e.bMarks[r] + e.tShift[r], f = e.eMarks[r];
if (h + 3 > f)
return !1;
if (s = e.src.charCodeAt(h),
126 !== s && 96 !== s)
return !1;
if (c = h,
h = e.skipChars(h, s),
o = h - c,
o < 3)
return !1;
if (u = e.src.slice(c, h),
i = e.src.slice(h, f),
i.indexOf("`") >= 0)
return !1;
if (n)
return !0;
for (a = r; (a++,
!(a >= t)) && (h = c = e.bMarks[a] + e.tShift[a],
f = e.eMarks[a],
!(h < f && e.sCount[a] < e.blkIndent)); )
if (e.src.charCodeAt(h) === s && !(e.sCount[a] - e.blkIndent >= 4 || (h = e.skipChars(h, s),
h - c < o || (h = e.skipSpaces(h),
h < f)))) {
p = !0;
break
}
return o = e.sCount[r],
e.line = a + (p ? 1 : 0),
l = e.push("fence", "code", 0),
l.info = i,
l.content = e.getLines(r + 1, a, o, !0),
l.markup = u,
l.map = [r, e.line],
!0
}
}
, {}],
21: [function(e, r, t) {
"use strict";
var n = e("../common/utils").isSpace;
r.exports = function(e, r, t, s) {
var o, i, a, c, l = e.bMarks[r] + e.tShift[r], u = e.eMarks[r];
if (o = e.src.charCodeAt(l),
35 !== o || l >= u)
return !1;
for (i = 1,
o = e.src.charCodeAt(++l); 35 === o && l < u && i <= 6; )
i++,
o = e.src.charCodeAt(++l);
return !(i > 6 || l < u && 32 !== o) && (!!s || (u = e.skipSpacesBack(u, l),
a = e.skipCharsBack(u, 35, l),
a > l && n(e.src.charCodeAt(a - 1)) && (u = a),
e.line = r + 1,
c = e.push("heading_open", "h" + String(i), 1),
c.markup = "########".slice(0, i),
c.map = [r, e.line],
c = e.push("inline", "", 0),
c.content = e.src.slice(l, u).trim(),
c.map = [r, e.line],
c.children = [],
c = e.push("heading_close", "h" + String(i), -1),
c.markup = "########".slice(0, i),
!0))
}
}
, {
"../common/utils": 4
}],
22: [function(e, r, t) {
"use strict";
var n = e("../common/utils").isSpace;
r.exports = function(e, r, t, s) {
var o, i, a, c, l = e.bMarks[r] + e.tShift[r], u = e.eMarks[r];
if (o = e.src.charCodeAt(l++),
42 !== o && 45 !== o && 95 !== o)
return !1;
for (i = 1; l < u; ) {
if (a = e.src.charCodeAt(l++),
a !== o && !n(a))
return !1;
a === o && i++
}
return !(i < 3) && (!!s || (e.line = r + 1,
c = e.push("hr", "hr", 0),
c.map = [r, e.line],
c.markup = Array(i + 1).join(String.fromCharCode(o)),
!0))
}
}
, {
"../common/utils": 4
}],
23: [function(e, r, t) {
"use strict";
var n = e("../common/html_blocks")
, s = e("../common/html_re").HTML_OPEN_CLOSE_TAG_RE
, o = [[/^<(script|pre|style)(?=(\s|>|$))/i, /<\/(script|pre|style)>/i, !0], [/^/, !0], [/^<\?/, /\?>/, !0], [/^/, !0], [/^/, !0], [new RegExp("^?(" + n.join("|") + ")(?=(\\s|/?>|$))","i"), /^$/, !0], [new RegExp(s.source + "\\s*$"), /^$/, !1]];
r.exports = function(e, r, t, n) {
var s, i, a, c, l = e.bMarks[r] + e.tShift[r], u = e.eMarks[r];
if (!e.md.options.html)
return !1;
if (60 !== e.src.charCodeAt(l))
return !1;
for (c = e.src.slice(l, u),
s = 0; s < o.length && !o[s][0].test(c); s++)
;
if (s === o.length)
return !1;
if (n)
return o[s][2];
if (i = r + 1,
!o[s][1].test(c))
for (; i < t && !(e.sCount[i] < e.blkIndent); i++)
if (l = e.bMarks[i] + e.tShift[i],
u = e.eMarks[i],
c = e.src.slice(l, u),
o[s][1].test(c)) {
0 !== c.length && i++;
break
}
return e.line = i,
a = e.push("html_block", "", 0),
a.map = [r, i],
a.content = e.getLines(r, i, e.blkIndent, !0),
!0
}
}
, {
"../common/html_blocks": 2,
"../common/html_re": 3
}],
24: [function(e, r, t) {
"use strict";
r.exports = function(e, r, t) {
for (var n, s, o, i, a, c, l, u, p, h = r + 1, f = e.md.block.ruler.getRules("paragraph"); h < t && !e.isEmpty(h); h++)
if (!(e.sCount[h] - e.blkIndent > 3)) {
if (e.sCount[h] >= e.blkIndent && (c = e.bMarks[h] + e.tShift[h],
l = e.eMarks[h],
c < l && (p = e.src.charCodeAt(c),
(45 === p || 61 === p) && (c = e.skipChars(c, p),
c = e.skipSpaces(c),
c >= l)))) {
u = 61 === p ? 1 : 2;
break
}
if (!(e.sCount[h] < 0)) {
for (s = !1,
o = 0,
i = f.length; o < i; o++)
if (f[o](e, h, t, !0)) {
s = !0;
break
}
if (s)
break
}
}
return !!u && (n = e.getLines(r, h, e.blkIndent, !1).trim(),
e.line = h + 1,
a = e.push("heading_open", "h" + String(u), 1),
a.markup = String.fromCharCode(p),
a.map = [r, e.line],
a = e.push("inline", "", 0),
a.content = n,
a.map = [r, e.line - 1],
a.children = [],
a = e.push("heading_close", "h" + String(u), -1),
a.markup = String.fromCharCode(p),
!0)
}
}
, {}],
25: [function(e, r, t) {
"use strict";
function n(e, r) {
var t, n, s, o;
return n = e.bMarks[r] + e.tShift[r],
s = e.eMarks[r],
t = e.src.charCodeAt(n++),
42 !== t && 45 !== t && 43 !== t ? -1 : n < s && (o = e.src.charCodeAt(n),
!i(o)) ? -1 : n
}
function s(e, r) {
var t, n = e.bMarks[r] + e.tShift[r], s = n, o = e.eMarks[r];
if (s + 1 >= o)
return -1;
if (t = e.src.charCodeAt(s++),
t < 48 || t > 57)
return -1;
for (; ; ) {
if (s >= o)
return -1;
t = e.src.charCodeAt(s++);
{
if (!(t >= 48 && t <= 57)) {
if (41 === t || 46 === t)
break;
return -1
}
if (s - n >= 10)
return -1
}
}
return s < o && (t = e.src.charCodeAt(s),
!i(t)) ? -1 : s
}
function o(e, r) {
var t, n, s = e.level + 2;
for (t = r + 2,
n = e.tokens.length - 2; t < n; t++)
e.tokens[t].level === s && "paragraph_open" === e.tokens[t].type && (e.tokens[t + 2].hidden = !0,
e.tokens[t].hidden = !0,
t += 2)
}
var i = e("../common/utils").isSpace;
r.exports = function(e, r, t, a) {
var c, l, u, p, h, f, d, m, _, g, k, b, v, x, y, C, A, w, D, q, E, S, F, z, L, T, R, M, I = !0;
if ((k = s(e, r)) >= 0)
w = !0;
else {
if (!((k = n(e, r)) >= 0))
return !1;
w = !1
}
if (A = e.src.charCodeAt(k - 1),
a)
return !0;
for (q = e.tokens.length,
w ? (g = e.bMarks[r] + e.tShift[r],
C = Number(e.src.substr(g, k - g - 1)),
L = e.push("ordered_list_open", "ol", 1),
1 !== C && (L.attrs = [["start", C]])) : L = e.push("bullet_list_open", "ul", 1),
L.map = S = [r, 0],
L.markup = String.fromCharCode(A),
c = r,
E = !1,
z = e.md.block.ruler.getRules("list"); c < t; ) {
for (v = k,
x = e.eMarks[c],
l = u = e.sCount[c] + k - (e.bMarks[r] + e.tShift[r]); v < x && (b = e.src.charCodeAt(v),
i(b)); )
9 === b ? u += 4 - u % 4 : u++,
v++;
if (D = v,
y = D >= x ? 1 : u - l,
y > 4 && (y = 1),
p = l + y,
L = e.push("list_item_open", "li", 1),
L.markup = String.fromCharCode(A),
L.map = F = [r, 0],
f = e.blkIndent,
m = e.tight,
h = e.tShift[r],
d = e.sCount[r],
_ = e.parentType,
e.blkIndent = p,
e.tight = !0,
e.parentType = "list",
e.tShift[r] = D - e.bMarks[r],
e.sCount[r] = u,
D >= x && e.isEmpty(r + 1) ? e.line = Math.min(e.line + 2, t) : e.md.block.tokenize(e, r, t, !0),
e.tight && !E || (I = !1),
E = e.line - r > 1 && e.isEmpty(e.line - 1),
e.blkIndent = f,
e.tShift[r] = h,
e.sCount[r] = d,
e.tight = m,
e.parentType = _,
L = e.push("list_item_close", "li", -1),
L.markup = String.fromCharCode(A),
c = r = e.line,
F[1] = c,
D = e.bMarks[r],
c >= t)
break;
if (e.isEmpty(c))
break;
if (e.sCount[c] < e.blkIndent)
break;
for (M = !1,
T = 0,
R = z.length; T < R; T++)
if (z[T](e, c, t, !0)) {
M = !0;
break
}
if (M)
break;
if (w) {
if (k = s(e, c),
k < 0)
break
} else if (k = n(e, c),
k < 0)
break;
if (A !== e.src.charCodeAt(k - 1))
break
}
return L = w ? e.push("ordered_list_close", "ol", -1) : e.push("bullet_list_close", "ul", -1),
L.markup = String.fromCharCode(A),
S[1] = c,
e.line = c,
I && o(e, q),
!0
}
}
, {
"../common/utils": 4
}],
26: [function(e, r, t) {
"use strict";
r.exports = function(e, r) {
for (var t, n, s, o, i, a = r + 1, c = e.md.block.ruler.getRules("paragraph"), l = e.lineMax; a < l && !e.isEmpty(a); a++)
if (!(e.sCount[a] - e.blkIndent > 3 || e.sCount[a] < 0)) {
for (n = !1,
s = 0,
o = c.length; s < o; s++)
if (c[s](e, a, l, !0)) {
n = !0;
break
}
if (n)
break
}
return t = e.getLines(r, a, e.blkIndent, !1).trim(),
e.line = a,
i = e.push("paragraph_open", "p", 1),
i.map = [r, e.line],
i = e.push("inline", "", 0),
i.content = t,
i.map = [r, e.line],
i.children = [],
i = e.push("paragraph_close", "p", -1),
!0
}
}
, {}],
27: [function(e, r, t) {
"use strict";
var n = e("../helpers/parse_link_destination")
, s = e("../helpers/parse_link_title")
, o = e("../common/utils").normalizeReference
, i = e("../common/utils").isSpace;
r.exports = function(e, r, t, a) {
var c, l, u, p, h, f, d, m, _, g, k, b, v, x, y, C = 0, A = e.bMarks[r] + e.tShift[r], w = e.eMarks[r], D = r + 1;
if (91 !== e.src.charCodeAt(A))
return !1;
for (; ++A < w; )
if (93 === e.src.charCodeAt(A) && 92 !== e.src.charCodeAt(A - 1)) {
if (A + 1 === w)
return !1;
if (58 !== e.src.charCodeAt(A + 1))
return !1;
break
}
for (p = e.lineMax,
x = e.md.block.ruler.getRules("reference"); D < p && !e.isEmpty(D); D++)
if (!(e.sCount[D] - e.blkIndent > 3 || e.sCount[D] < 0)) {
for (v = !1,
f = 0,
d = x.length; f < d; f++)
if (x[f](e, D, p, !0)) {
v = !0;
break
}
if (v)
break
}
for (b = e.getLines(r, D, e.blkIndent, !1).trim(),
w = b.length,
A = 1; A < w; A++) {
if (c = b.charCodeAt(A),
91 === c)
return !1;
if (93 === c) {
_ = A;
break
}
10 === c ? C++ : 92 === c && (A++,
A < w && 10 === b.charCodeAt(A) && C++)
}
if (_ < 0 || 58 !== b.charCodeAt(_ + 1))
return !1;
for (A = _ + 2; A < w; A++)
if (c = b.charCodeAt(A),
10 === c)
C++;
else if (!i(c))
break;
if (g = n(b, A, w),
!g.ok)
return !1;
if (h = e.md.normalizeLink(g.str),
!e.md.validateLink(h))
return !1;
for (A = g.pos,
C += g.lines,
l = A,
u = C,
k = A; A < w; A++)
if (c = b.charCodeAt(A),
10 === c)
C++;
else if (!i(c))
break;
for (g = s(b, A, w),
A < w && k !== A && g.ok ? (y = g.str,
A = g.pos,
C += g.lines) : (y = "",
A = l,
C = u); A < w && (c = b.charCodeAt(A),
i(c)); )
A++;
if (A < w && 10 !== b.charCodeAt(A) && y)
for (y = "",
A = l,
C = u; A < w && (c = b.charCodeAt(A),
i(c)); )
A++;
return !(A < w && 10 !== b.charCodeAt(A)) && (!!(m = o(b.slice(1, _))) && (!!a || ("undefined" == typeof e.env.references && (e.env.references = {}),
"undefined" == typeof e.env.references[m] && (e.env.references[m] = {
title: y,
href: h
}),
e.line = r + C + 1,
!0)))
}
}
, {
"../common/utils": 4,
"../helpers/parse_link_destination": 6,
"../helpers/parse_link_title": 8
}],
28: [function(e, r, t) {
"use strict";
function n(e, r, t, n) {
var s, i, a, c, l, u, p, h;
for (this.src = e,
this.md = r,
this.env = t,
this.tokens = n,
this.bMarks = [],
this.eMarks = [],
this.tShift = [],
this.sCount = [],
this.blkIndent = 0,
this.line = 0,
this.lineMax = 0,
this.tight = !1,
this.parentType = "root",
this.ddIndent = -1,
this.level = 0,
this.result = "",
i = this.src,
h = !1,
a = c = u = p = 0,
l = i.length; c < l; c++) {
if (s = i.charCodeAt(c),
!h) {
if (o(s)) {
u++,
9 === s ? p += 4 - p % 4 : p++;
continue
}
h = !0
}
10 !== s && c !== l - 1 || (10 !== s && c++,
this.bMarks.push(a),
this.eMarks.push(c),
this.tShift.push(u),
this.sCount.push(p),
h = !1,
u = 0,
p = 0,
a = c + 1)
}
this.bMarks.push(i.length),
this.eMarks.push(i.length),
this.tShift.push(0),
this.sCount.push(0),
this.lineMax = this.bMarks.length - 1
}
var s = e("../token")
, o = e("../common/utils").isSpace;
n.prototype.push = function(e, r, t) {
var n = new s(e,r,t);
return n.block = !0,
t < 0 && this.level--,
n.level = this.level,
t > 0 && this.level++,
this.tokens.push(n),
n
}
,
n.prototype.isEmpty = function(e) {
return this.bMarks[e] + this.tShift[e] >= this.eMarks[e]
}
,
n.prototype.skipEmptyLines = function(e) {
for (var r = this.lineMax; e < r && !(this.bMarks[e] + this.tShift[e] < this.eMarks[e]); e++)
;
return e
}
,
n.prototype.skipSpaces = function(e) {
for (var r, t = this.src.length; e < t && (r = this.src.charCodeAt(e),
o(r)); e++)
;
return e
}
,
n.prototype.skipSpacesBack = function(e, r) {
if (e <= r)
return e;
for (; e > r; )
if (!o(this.src.charCodeAt(--e)))
return e + 1;
return e
}
,
n.prototype.skipChars = function(e, r) {
for (var t = this.src.length; e < t && this.src.charCodeAt(e) === r; e++)
;
return e
}
,
n.prototype.skipCharsBack = function(e, r, t) {
if (e <= t)
return e;
for (; e > t; )
if (r !== this.src.charCodeAt(--e))
return e + 1;
return e
}
,
n.prototype.getLines = function(e, r, t, n) {
var s, i, a, c, l, u, p, h = e;
if (e >= r)
return "";
for (u = new Array(r - e),
s = 0; h < r; h++,
s++) {
for (i = 0,
p = c = this.bMarks[h],
l = h + 1 < r || n ? this.eMarks[h] + 1 : this.eMarks[h]; c < l && i < t; ) {
if (a = this.src.charCodeAt(c),
o(a))
9 === a ? i += 4 - i % 4 : i++;
else {
if (!(c - p < this.tShift[h]))
break;
i++
}
c++
}
u[s] = this.src.slice(c, l)
}
return u.join("")
}
,
n.prototype.Token = s,
r.exports = n
}
, {
"../common/utils": 4,
"../token": 51
}],
29: [function(e, r, t) {
"use strict";
function n(e, r) {
var t = e.bMarks[r] + e.blkIndent
, n = e.eMarks[r];
return e.src.substr(t, n - t)
}
function s(e) {
var r, t = [], n = 0, s = e.length, o = 0, i = 0, a = !1, c = 0;
for (r = e.charCodeAt(n); n < s; )
96 === r && o % 2 === 0 ? (a = !a,
c = n) : 124 !== r || o % 2 !== 0 || a ? 92 === r ? o++ : o = 0 : (t.push(e.substring(i, n)),
i = n + 1),
n++,
n === s && a && (a = !1,
n = c + 1),
r = e.charCodeAt(n);
return t.push(e.substring(i)),
t
}
r.exports = function(e, r, t, o) {
var i, a, c, l, u, p, h, f, d, m, _, g;
if (r + 2 > t)
return !1;
if (u = r + 1,
e.sCount[u] < e.blkIndent)
return !1;
if (c = e.bMarks[u] + e.tShift[u],
c >= e.eMarks[u])
return !1;
if (i = e.src.charCodeAt(c),
124 !== i && 45 !== i && 58 !== i)
return !1;
if (a = n(e, r + 1),
!/^[-:| ]+$/.test(a))
return !1;
for (p = a.split("|"),
d = [],
l = 0; l < p.length; l++) {
if (m = p[l].trim(),
!m) {
if (0 === l || l === p.length - 1)
continue;
return !1
}
if (!/^:?-+:?$/.test(m))
return !1;
58 === m.charCodeAt(m.length - 1) ? d.push(58 === m.charCodeAt(0) ? "center" : "right") : 58 === m.charCodeAt(0) ? d.push("left") : d.push("")
}
if (a = n(e, r).trim(),
a.indexOf("|") === -1)
return !1;
if (p = s(a.replace(/^\||\|$/g, "")),
h = p.length,
h > d.length)
return !1;
if (o)
return !0;
for (f = e.push("table_open", "table", 1),
f.map = _ = [r, 0],
f = e.push("thead_open", "thead", 1),
f.map = [r, r + 1],
f = e.push("tr_open", "tr", 1),
f.map = [r, r + 1],
l = 0; l < p.length; l++)
f = e.push("th_open", "th", 1),
f.map = [r, r + 1],
d[l] && (f.attrs = [["style", "text-align:" + d[l]]]),
f = e.push("inline", "", 0),
f.content = p[l].trim(),
f.map = [r, r + 1],
f.children = [],
f = e.push("th_close", "th", -1);
for (f = e.push("tr_close", "tr", -1),
f = e.push("thead_close", "thead", -1),
f = e.push("tbody_open", "tbody", 1),
f.map = g = [r + 2, 0],
u = r + 2; u < t && !(e.sCount[u] < e.blkIndent) && (a = n(e, u),
a.indexOf("|") !== -1); u++) {
for (p = s(a.replace(/^\||\|\s*$/g, "")),
f = e.push("tr_open", "tr", 1),
l = 0; l < h; l++)
f = e.push("td_open", "td", 1),
d[l] && (f.attrs = [["style", "text-align:" + d[l]]]),
f = e.push("inline", "", 0),
f.content = p[l] ? p[l].trim() : "",
f.children = [],
f = e.push("td_close", "td", -1);
f = e.push("tr_close", "tr", -1)
}
return f = e.push("tbody_close", "tbody", -1),
f = e.push("table_close", "table", -1),
_[1] = g[1] = u,
e.line = u,
!0
}
}
, {}],
30: [function(e, r, t) {
"use strict";
r.exports = function(e) {
var r;
e.inlineMode ? (r = new e.Token("inline","",0),
r.content = e.src,
r.map = [0, 1],
r.children = [],
e.tokens.push(r)) : e.md.block.parse(e.src, e.md, e.env, e.tokens)
}
}
, {}],
31: [function(e, r, t) {
"use strict";
r.exports = function(e) {
var r, t, n, s = e.tokens;
for (t = 0,
n = s.length; t < n; t++)
r = s[t],
"inline" === r.type && e.md.inline.parse(r.content, e.md, e.env, r.children)
}
}
, {}],
32: [function(e, r, t) {
"use strict";
function n(e) {
return /^\s]/i.test(e)
}
function s(e) {
return /^<\/a\s*>/i.test(e)
}
var o = e("../common/utils").arrayReplaceAt;
r.exports = function(e) {
var r, t, i, a, c, l, u, p, h, f, d, m, _, g, k, b, v, x = e.tokens;
if (e.md.options.linkify)
for (t = 0,
i = x.length; t < i; t++)
if ("inline" === x[t].type && e.md.linkify.pretest(x[t].content))
for (a = x[t].children,
_ = 0,
r = a.length - 1; r >= 0; r--)
if (l = a[r],
"link_close" !== l.type) {
if ("html_inline" === l.type && (n(l.content) && _ > 0 && _--,
s(l.content) && _++),
!(_ > 0) && "text" === l.type && e.md.linkify.test(l.content)) {
for (h = l.content,
v = e.md.linkify.match(h),
u = [],
m = l.level,
d = 0,
p = 0; p < v.length; p++)
g = v[p].url,
k = e.md.normalizeLink(g),
e.md.validateLink(k) && (b = v[p].text,
b = v[p].schema ? "mailto:" !== v[p].schema || /^mailto:/i.test(b) ? e.md.normalizeLinkText(b) : e.md.normalizeLinkText("mailto:" + b).replace(/^mailto:/, "") : e.md.normalizeLinkText("http://" + b).replace(/^http:\/\//, ""),
f = v[p].index,
f > d && (c = new e.Token("text","",0),
c.content = h.slice(d, f),
c.level = m,
u.push(c)),
c = new e.Token("link_open","a",1),
c.attrs = [["href", k]],
c.level = m++,
c.markup = "linkify",
c.info = "auto",
u.push(c),
c = new e.Token("text","",0),
c.content = b,
c.level = m,
u.push(c),
c = new e.Token("link_close","a",-1),
c.level = --m,
c.markup = "linkify",
c.info = "auto",
u.push(c),
d = v[p].lastIndex);
d < h.length && (c = new e.Token("text","",0),
c.content = h.slice(d),
c.level = m,
u.push(c)),
x[t].children = a = o(a, r, u)
}
} else
for (r--; a[r].level !== l.level && "link_open" !== a[r].type; )
r--
}
}
, {
"../common/utils": 4
}],
33: [function(e, r, t) {
"use strict";
var n = /\r[\n\u0085]?|[\u2424\u2028\u0085]/g
, s = /\u0000/g;
r.exports = function(e) {
var r;
r = e.src.replace(n, "\n"),
r = r.replace(s, "�"),
e.src = r
}
}
, {}],
34: [function(e, r, t) {
"use strict";
function n(e, r) {
return l[r.toLowerCase()]
}
function s(e) {
var r, t;
for (r = e.length - 1; r >= 0; r--)
t = e[r],
"text" === t.type && (t.content = t.content.replace(c, n))
}
function o(e) {
var r, t;
for (r = e.length - 1; r >= 0; r--)
t = e[r],
"text" === t.type && i.test(t.content) && (t.content = t.content.replace(/\+-/g, "±").replace(/\.{2,}/g, "…").replace(/([?!])\u2026/g, "$1..").replace(/([?!]){4,}/g, "$1$1$1").replace(/,{2,}/g, ",").replace(/(^|[^-])---([^-]|$)/gm, "$1—$2").replace(/(^|\s)--(\s|$)/gm, "$1–$2").replace(/(^|[^-\s])--([^-\s]|$)/gm, "$1–$2"))
}
var i = /\+-|\.\.|\?\?\?\?|!!!!|,,|--/
, a = /\((c|tm|r|p)\)/i
, c = /\((c|tm|r|p)\)/gi
, l = {
c: "©",
r: "®",
p: "§",
tm: "™"
};
r.exports = function(e) {
var r;
if (e.md.options.typographer)
for (r = e.tokens.length - 1; r >= 0; r--)
"inline" === e.tokens[r].type && (a.test(e.tokens[r].content) && s(e.tokens[r].children),
i.test(e.tokens[r].content) && o(e.tokens[r].children))
}
}
, {}],
35: [function(e, r, t) {
"use strict";
function n(e, r, t) {
return e.substr(0, r) + t + e.substr(r + 1)
}
function s(e, r) {
var t, s, c, p, h, f, d, m, _, g, k, b, v, x, y, C, A, w, D, q, E;
for (D = [],
t = 0; t < e.length; t++) {
for (s = e[t],
d = e[t].level,
A = D.length - 1; A >= 0 && !(D[A].level <= d); A--)
;
if (D.length = A + 1,
"text" === s.type) {
c = s.content,
h = 0,
f = c.length;
e: for (; h < f && (l.lastIndex = h,
p = l.exec(c)); ) {
if (y = C = !0,
h = p.index + 1,
w = "'" === p[0],
_ = 32,
p.index - 1 >= 0)
_ = c.charCodeAt(p.index - 1);
else
for (A = t - 1; A >= 0; A--)
if ("text" === e[A].type) {
_ = e[A].content.charCodeAt(e[A].content.length - 1);
break
}
if (g = 32,
h < f)
g = c.charCodeAt(h);
else
for (A = t + 1; A < e.length; A++)
if ("text" === e[A].type) {
g = e[A].content.charCodeAt(0);
break
}
if (k = a(_) || i(String.fromCharCode(_)),
b = a(g) || i(String.fromCharCode(g)),
v = o(_),
x = o(g),
x ? y = !1 : b && (v || k || (y = !1)),
v ? C = !1 : k && (x || b || (C = !1)),
34 === g && '"' === p[0] && _ >= 48 && _ <= 57 && (C = y = !1),
y && C && (y = !1,
C = b),
y || C) {
if (C)
for (A = D.length - 1; A >= 0 && (m = D[A],
!(D[A].level < d)); A--)
if (m.single === w && D[A].level === d) {
m = D[A],
w ? (q = r.md.options.quotes[2],
E = r.md.options.quotes[3]) : (q = r.md.options.quotes[0],
E = r.md.options.quotes[1]),
s.content = n(s.content, p.index, E),
e[m.token].content = n(e[m.token].content, m.pos, q),
h += E.length - 1,
m.token === t && (h += q.length - 1),
c = s.content,
f = c.length,
D.length = A;
continue e
}
y ? D.push({
token: t,
pos: p.index,
single: w,
level: d
}) : C && w && (s.content = n(s.content, p.index, u))
} else
w && (s.content = n(s.content, p.index, u))
}
}
}
}
var o = e("../common/utils").isWhiteSpace
, i = e("../common/utils").isPunctChar
, a = e("../common/utils").isMdAsciiPunct
, c = /['"]/
, l = /['"]/g
, u = "’";
r.exports = function(e) {
var r;
if (e.md.options.typographer)
for (r = e.tokens.length - 1; r >= 0; r--)
"inline" === e.tokens[r].type && c.test(e.tokens[r].content) && s(e.tokens[r].children, e)
}
}
, {
"../common/utils": 4
}],
36: [function(e, r, t) {
"use strict";
function n(e, r, t) {
this.src = e,
this.env = t,
this.tokens = [],
this.inlineMode = !1,
this.md = r
}
var s = e("../token");
n.prototype.Token = s,
r.exports = n
}
, {
"../token": 51
}],
37: [function(e, r, t) {
"use strict";
var n = /^<([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)>/
, s = /^<([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)>/;
r.exports = function(e, r) {
var t, o, i, a, c, l, u = e.pos;
return 60 === e.src.charCodeAt(u) && (t = e.src.slice(u),
!(t.indexOf(">") < 0) && (s.test(t) ? (o = t.match(s),
a = o[0].slice(1, -1),
c = e.md.normalizeLink(a),
!!e.md.validateLink(c) && (r || (l = e.push("link_open", "a", 1),
l.attrs = [["href", c]],
l.markup = "autolink",
l.info = "auto",
l = e.push("text", "", 0),
l.content = e.md.normalizeLinkText(a),
l = e.push("link_close", "a", -1),
l.markup = "autolink",
l.info = "auto"),
e.pos += o[0].length,
!0)) : !!n.test(t) && (i = t.match(n),
a = i[0].slice(1, -1),
c = e.md.normalizeLink("mailto:" + a),
!!e.md.validateLink(c) && (r || (l = e.push("link_open", "a", 1),
l.attrs = [["href", c]],
l.markup = "autolink",
l.info = "auto",
l = e.push("text", "", 0),
l.content = e.md.normalizeLinkText(a),
l = e.push("link_close", "a", -1),
l.markup = "autolink",
l.info = "auto"),
e.pos += i[0].length,
!0))))
}
}
, {}],
38: [function(e, r, t) {
"use strict";
r.exports = function(e, r) {
var t, n, s, o, i, a, c = e.pos, l = e.src.charCodeAt(c);
if (96 !== l)
return !1;
for (t = c,
c++,
n = e.posMax; c < n && 96 === e.src.charCodeAt(c); )
c++;
for (s = e.src.slice(t, c),
o = i = c; (o = e.src.indexOf("`", i)) !== -1; ) {
for (i = o + 1; i < n && 96 === e.src.charCodeAt(i); )
i++;
if (i - o === s.length)
return r || (a = e.push("code_inline", "code", 0),
a.markup = s,
a.content = e.src.slice(c, o).replace(/[ \n]+/g, " ").trim()),
e.pos = i,
!0
}
return r || (e.pending += s),
e.pos += s.length,
!0
}
}
, {}],
39: [function(e, r, t) {
"use strict";
r.exports = function(e) {
var r, t, n, s, o = e.delimiters, i = e.delimiters.length;
for (r = 0; r < i; r++)
if (n = o[r],
n.close)
for (t = r - n.jump - 1; t >= 0; ) {
if (s = o[t],
s.open && s.marker === n.marker && s.end < 0 && s.level === n.level) {
n.jump = r - t,
n.open = !1,
s.end = r,
s.jump = 0;
break
}
t -= s.jump + 1
}
}
}
, {}],
40: [function(e, r, t) {
"use strict";
r.exports.tokenize = function(e, r) {
var t, n, s, o = e.pos, i = e.src.charCodeAt(o);
if (r)
return !1;
if (95 !== i && 42 !== i)
return !1;
for (n = e.scanDelims(e.pos, 42 === i),
t = 0; t < n.length; t++)
s = e.push("text", "", 0),
s.content = String.fromCharCode(i),
e.delimiters.push({
marker: i,
jump: t,
token: e.tokens.length - 1,
level: e.level,
end: -1,
open: n.can_open,
close: n.can_close
});
return e.pos += n.length,
!0
}
,
r.exports.postProcess = function(e) {
var r, t, n, s, o, i, a = e.delimiters, c = e.delimiters.length;
for (r = 0; r < c; r++)
t = a[r],
95 !== t.marker && 42 !== t.marker || t.end !== -1 && (n = a[t.end],
i = r + 1 < c && a[r + 1].end === t.end - 1 && a[r + 1].token === t.token + 1 && a[t.end - 1].token === n.token - 1 && a[r + 1].marker === t.marker,
o = String.fromCharCode(t.marker),
s = e.tokens[t.token],
s.type = i ? "strong_open" : "em_open",
s.tag = i ? "strong" : "em",
s.nesting = 1,
s.markup = i ? o + o : o,
s.content = "",
s = e.tokens[n.token],
s.type = i ? "strong_close" : "em_close",
s.tag = i ? "strong" : "em",
s.nesting = -1,
s.markup = i ? o + o : o,
s.content = "",
i && (e.tokens[a[r + 1].token].content = "",
e.tokens[a[t.end - 1].token].content = "",
r++))
}
}
, {}],
41: [function(e, r, t) {
"use strict";
var n = e("../common/entities")
, s = e("../common/utils").has
, o = e("../common/utils").isValidEntityCode
, i = e("../common/utils").fromCodePoint
, a = /^((?:x[a-f0-9]{1,8}|[0-9]{1,8}));/i
, c = /^&([a-z][a-z0-9]{1,31});/i;
r.exports = function(e, r) {
var t, l, u, p = e.pos, h = e.posMax;
if (38 !== e.src.charCodeAt(p))
return !1;
if (p + 1 < h)
if (t = e.src.charCodeAt(p + 1),
35 === t) {
if (u = e.src.slice(p).match(a))
return r || (l = "x" === u[1][0].toLowerCase() ? parseInt(u[1].slice(1), 16) : parseInt(u[1], 10),
e.pending += i(o(l) ? l : 65533)),
e.pos += u[0].length,
!0
} else if (u = e.src.slice(p).match(c),
u && s(n, u[1]))
return r || (e.pending += n[u[1]]),
e.pos += u[0].length,
!0;
return r || (e.pending += "&"),
e.pos++,
!0
}
}
, {
"../common/entities": 1,
"../common/utils": 4
}],
42: [function(e, r, t) {
"use strict";
for (var n = e("../common/utils").isSpace, s = [], o = 0; o < 256; o++)
s.push(0);
"\\!\"#$%&'()*+,./:;<=>?@[]^_`{|}~-".split("").forEach(function(e) {
s[e.charCodeAt(0)] = 1
}),
r.exports = function(e, r) {
var t, o = e.pos, i = e.posMax;
if (92 !== e.src.charCodeAt(o))
return !1;
if (o++,
o < i) {
if (t = e.src.charCodeAt(o),
t < 256 && 0 !== s[t])
return r || (e.pending += e.src[o]),
e.pos += 2,
!0;
if (10 === t) {
for (r || e.push("hardbreak", "br", 0),
o++; o < i && (t = e.src.charCodeAt(o),
n(t)); )
o++;
return e.pos = o,
!0
}
}
return r || (e.pending += "\\"),
e.pos++,
!0
}
}
, {
"../common/utils": 4
}],
43: [function(e, r, t) {
"use strict";
function n(e) {
var r = 32 | e;
return r >= 97 && r <= 122
}
var s = e("../common/html_re").HTML_TAG_RE;
r.exports = function(e, r) {
var t, o, i, a, c = e.pos;
return !!e.md.options.html && (i = e.posMax,
!(60 !== e.src.charCodeAt(c) || c + 2 >= i) && (t = e.src.charCodeAt(c + 1),
!(33 !== t && 63 !== t && 47 !== t && !n(t)) && (!!(o = e.src.slice(c).match(s)) && (r || (a = e.push("html_inline", "", 0),
a.content = e.src.slice(c, c + o[0].length)),
e.pos += o[0].length,
!0))))
}
}
, {
"../common/html_re": 3
}],
44: [function(e, r, t) {
"use strict";
var n = e("../helpers/parse_link_label")
, s = e("../helpers/parse_link_destination")
, o = e("../helpers/parse_link_title")
, i = e("../common/utils").normalizeReference
, a = e("../common/utils").isSpace;
r.exports = function(e, r) {
var t, c, l, u, p, h, f, d, m, _, g, k, b, v = "", x = e.pos, y = e.posMax;
if (33 !== e.src.charCodeAt(e.pos))
return !1;
if (91 !== e.src.charCodeAt(e.pos + 1))
return !1;
if (h = e.pos + 2,
p = n(e, e.pos + 1, !1),
p < 0)
return !1;
if (f = p + 1,
f < y && 40 === e.src.charCodeAt(f)) {
for (f++; f < y && (c = e.src.charCodeAt(f),
a(c) || 10 === c); f++)
;
if (f >= y)
return !1;
for (b = f,
m = s(e.src, f, e.posMax),
m.ok && (v = e.md.normalizeLink(m.str),
e.md.validateLink(v) ? f = m.pos : v = ""),
b = f; f < y && (c = e.src.charCodeAt(f),
a(c) || 10 === c); f++)
;
if (m = o(e.src, f, e.posMax),
f < y && b !== f && m.ok)
for (_ = m.str,
f = m.pos; f < y && (c = e.src.charCodeAt(f),
a(c) || 10 === c); f++)
;
else
_ = "";
if (f >= y || 41 !== e.src.charCodeAt(f))
return e.pos = x,
!1;
f++
} else {
if ("undefined" == typeof e.env.references)
return !1;
if (f < y && 91 === e.src.charCodeAt(f) ? (b = f + 1,
f = n(e, f),
f >= 0 ? u = e.src.slice(b, f++) : f = p + 1) : f = p + 1,
u || (u = e.src.slice(h, p)),
d = e.env.references[i(u)],
!d)
return e.pos = x,
!1;
v = d.href,
_ = d.title
}
return r || (l = e.src.slice(h, p),
e.md.inline.parse(l, e.md, e.env, k = []),
g = e.push("image", "img", 0),
g.attrs = t = [["src", v], ["alt", ""]],
g.children = k,
g.content = l,
_ && t.push(["title", _])),
e.pos = f,
e.posMax = y,
!0
}
}
, {
"../common/utils": 4,
"../helpers/parse_link_destination": 6,
"../helpers/parse_link_label": 7,
"../helpers/parse_link_title": 8
}],
45: [function(e, r, t) {
"use strict";
var n = e("../helpers/parse_link_label")
, s = e("../helpers/parse_link_destination")
, o = e("../helpers/parse_link_title")
, i = e("../common/utils").normalizeReference
, a = e("../common/utils").isSpace;
r.exports = function(e, r) {
var t, c, l, u, p, h, f, d, m, _, g = "", k = e.pos, b = e.posMax, v = e.pos;
if (91 !== e.src.charCodeAt(e.pos))
return !1;
if (p = e.pos + 1,
u = n(e, e.pos, !0),
u < 0)
return !1;
if (h = u + 1,
h < b && 40 === e.src.charCodeAt(h)) {
for (h++; h < b && (c = e.src.charCodeAt(h),
a(c) || 10 === c); h++)
;
if (h >= b)
return !1;
for (v = h,
f = s(e.src, h, e.posMax),
f.ok && (g = e.md.normalizeLink(f.str),
e.md.validateLink(g) ? h = f.pos : g = ""),
v = h; h < b && (c = e.src.charCodeAt(h),
a(c) || 10 === c); h++)
;
if (f = o(e.src, h, e.posMax),
h < b && v !== h && f.ok)
for (m = f.str,
h = f.pos; h < b && (c = e.src.charCodeAt(h),
a(c) || 10 === c); h++)
;
else
m = "";
if (h >= b || 41 !== e.src.charCodeAt(h))
return e.pos = k,
!1;
h++
} else {
if ("undefined" == typeof e.env.references)
return !1;
if (h < b && 91 === e.src.charCodeAt(h) ? (v = h + 1,
h = n(e, h),
h >= 0 ? l = e.src.slice(v, h++) : h = u + 1) : h = u + 1,
l || (l = e.src.slice(p, u)),
d = e.env.references[i(l)],
!d)
return e.pos = k,
!1;
g = d.href,
m = d.title
}
return r || (e.pos = p,
e.posMax = u,
_ = e.push("link_open", "a", 1),
_.attrs = t = [["href", g]],
m && t.push(["title", m]),
e.md.inline.tokenize(e),
_ = e.push("link_close", "a", -1)),
e.pos = h,
e.posMax = b,
!0
}
}
, {
"../common/utils": 4,
"../helpers/parse_link_destination": 6,
"../helpers/parse_link_label": 7,
"../helpers/parse_link_title": 8
}],
46: [function(e, r, t) {
"use strict";
r.exports = function(e, r) {
var t, n, s = e.pos;
if (10 !== e.src.charCodeAt(s))
return !1;
for (t = e.pending.length - 1,
n = e.posMax,
r || (t >= 0 && 32 === e.pending.charCodeAt(t) ? t >= 1 && 32 === e.pending.charCodeAt(t - 1) ? (e.pending = e.pending.replace(/ +$/, ""),
e.push("hardbreak", "br", 0)) : (e.pending = e.pending.slice(0, -1),
e.push("softbreak", "br", 0)) : e.push("softbreak", "br", 0)),
s++; s < n && 32 === e.src.charCodeAt(s); )
s++;
return e.pos = s,
!0
}
}
, {}],
47: [function(e, r, t) {
"use strict";
function n(e, r, t, n) {
this.src = e,
this.env = t,
this.md = r,
this.tokens = n,
this.pos = 0,
this.posMax = this.src.length,
this.level = 0,
this.pending = "",
this.pendingLevel = 0,
this.cache = {},
this.delimiters = []
}
var s = e("../token")
, o = e("../common/utils").isWhiteSpace
, i = e("../common/utils").isPunctChar
, a = e("../common/utils").isMdAsciiPunct;
n.prototype.pushPending = function() {
var e = new s("text","",0);
return e.content = this.pending,
e.level = this.pendingLevel,
this.tokens.push(e),
this.pending = "",
e
}
,
n.prototype.push = function(e, r, t) {
this.pending && this.pushPending();
var n = new s(e,r,t);
return t < 0 && this.level--,
n.level = this.level,
t > 0 && this.level++,
this.pendingLevel = this.level,
this.tokens.push(n),
n
}
,
n.prototype.scanDelims = function(e, r) {
var t, n, s, c, l, u, p, h, f, d = e, m = !0, _ = !0, g = this.posMax, k = this.src.charCodeAt(e);
for (t = e > 0 ? this.src.charCodeAt(e - 1) : 32; d < g && this.src.charCodeAt(d) === k; )
d++;
return s = d - e,
n = d < g ? this.src.charCodeAt(d) : 32,
p = a(t) || i(String.fromCharCode(t)),
f = a(n) || i(String.fromCharCode(n)),
u = o(t),
h = o(n),
h ? m = !1 : f && (u || p || (m = !1)),
u ? _ = !1 : p && (h || f || (_ = !1)),
r ? (c = m,
l = _) : (c = m && (!_ || p),
l = _ && (!m || f)),
{
can_open: c,
can_close: l,
length: s
}
}
,
n.prototype.Token = s,
r.exports = n
}
, {
"../common/utils": 4,
"../token": 51
}],
48: [function(e, r, t) {
"use strict";
r.exports.tokenize = function(e, r) {
var t, n, s, o, i, a = e.pos, c = e.src.charCodeAt(a);
if (r)
return !1;
if (126 !== c)
return !1;
if (n = e.scanDelims(e.pos, !0),
o = n.length,
i = String.fromCharCode(c),
o < 2)
return !1;
for (o % 2 && (s = e.push("text", "", 0),
s.content = i,
o--),
t = 0; t < o; t += 2)
s = e.push("text", "", 0),
s.content = i + i,
e.delimiters.push({
marker: c,
jump: t,
token: e.tokens.length - 1,
level: e.level,
end: -1,
open: n.can_open,
close: n.can_close
});
return e.pos += n.length,
!0
}
,
r.exports.postProcess = function(e) {
var r, t, n, s, o, i = [], a = e.delimiters, c = e.delimiters.length;
for (r = 0; r < c; r++)
n = a[r],
126 === n.marker && n.end !== -1 && (s = a[n.end],
o = e.tokens[n.token],
o.type = "s_open",
o.tag = "s",
o.nesting = 1,
o.markup = "~~",
o.content = "",
o = e.tokens[s.token],
o.type = "s_close",
o.tag = "s",
o.nesting = -1,
o.markup = "~~",
o.content = "",
"text" === e.tokens[s.token - 1].type && "~" === e.tokens[s.token - 1].content && i.push(s.token - 1));
for (; i.length; ) {
for (r = i.pop(),
t = r + 1; t < e.tokens.length && "s_close" === e.tokens[t].type; )
t++;
t--,
r !== t && (o = e.tokens[t],
e.tokens[t] = e.tokens[r],
e.tokens[r] = o)
}
}
}
, {}],
49: [function(e, r, t) {
"use strict";
function n(e) {
switch (e) {
case 10:
case 33:
case 35:
case 36:
case 37:
case 38:
case 42:
case 43:
case 45:
case 58:
case 60:
case 61:
case 62:
case 64:
case 91:
case 92:
case 93:
case 94:
case 95:
case 96:
case 123:
case 125:
case 126:
return !0;
default:
return !1
}
}
r.exports = function(e, r) {
for (var t = e.pos; t < e.posMax && !n(e.src.charCodeAt(t)); )
t++;
return t !== e.pos && (r || (e.pending += e.src.slice(e.pos, t)),
e.pos = t,
!0)
}
}
, {}],
50: [function(e, r, t) {
"use strict";
r.exports = function(e) {
var r, t, n = 0, s = e.tokens, o = e.tokens.length;
for (r = t = 0; r < o; r++)
n += s[r].nesting,
s[r].level = n,
"text" === s[r].type && r + 1 < o && "text" === s[r + 1].type ? s[r + 1].content = s[r].content + s[r + 1].content : (r !== t && (s[t] = s[r]),
t++);
r !== t && (s.length = t)
}
}
, {}],
51: [function(e, r, t) {
"use strict";
function n(e, r, t) {
this.type = e,
this.tag = r,
this.attrs = null,
this.map = null,
this.nesting = t,
this.level = 0,
this.children = null,
this.content = "",
this.markup = "",
this.info = "",
this.meta = null,
this.block = !1,
this.hidden = !1
}
n.prototype.attrIndex = function(e) {
var r, t, n;
if (!this.attrs)
return -1;
for (r = this.attrs,
t = 0,
n = r.length; t < n; t++)
if (r[t][0] === e)
return t;
return -1
}
,
n.prototype.attrPush = function(e) {
this.attrs ? this.attrs.push(e) : this.attrs = [e]
}
,
n.prototype.attrSet = function(e, r) {
var t = this.attrIndex(e)
, n = [e, r];
t < 0 ? this.attrPush(n) : this.attrs[t] = n
}
,
n.prototype.attrGet = function(e) {
var r = this.attrIndex(e)
, t = null;
return r >= 0 && (t = this.attrs[r][1]),
t
}
,
n.prototype.attrJoin = function(e, r) {
var t = this.attrIndex(e);
t < 0 ? this.attrPush([e, r]) : this.attrs[t][1] = this.attrs[t][1] + " " + r
}
,
r.exports = n
}
, {}],
52: [function(r, t, n) {
(function(r) {
!function(s) {
function o(e) {
throw new RangeError(R[e])
}
function i(e, r) {
for (var t = e.length, n = []; t--; )
n[t] = r(e[t]);
return n
}
function a(e, r) {
var t = e.split("@")
, n = "";
t.length > 1 && (n = t[0] + "@",
e = t[1]),
e = e.replace(T, ".");
var s = e.split(".")
, o = i(s, r).join(".");
return n + o
}
function c(e) {
for (var r, t, n = [], s = 0, o = e.length; s < o; )
r = e.charCodeAt(s++),
r >= 55296 && r <= 56319 && s < o ? (t = e.charCodeAt(s++),
56320 == (64512 & t) ? n.push(((1023 & r) << 10) + (1023 & t) + 65536) : (n.push(r),
s--)) : n.push(r);
return n
}
function l(e) {
return i(e, function(e) {
var r = "";
return e > 65535 && (e -= 65536,
r += B(e >>> 10 & 1023 | 55296),
e = 56320 | 1023 & e),
r += B(e)
}).join("")
}
function u(e) {
return e - 48 < 10 ? e - 22 : e - 65 < 26 ? e - 65 : e - 97 < 26 ? e - 97 : C
}
function p(e, r) {
return e + 22 + 75 * (e < 26) - ((0 != r) << 5)
}
function h(e, r, t) {
var n = 0;
for (e = t ? I(e / q) : e >> 1,
e += I(e / r); e > M * w >> 1; n += C)
e = I(e / M);
return I(n + (M + 1) * e / (e + D))
}
function f(e) {
var r, t, n, s, i, a, c, p, f, d, m = [], _ = e.length, g = 0, k = S, b = E;
for (t = e.lastIndexOf(F),
t < 0 && (t = 0),
n = 0; n < t; ++n)
e.charCodeAt(n) >= 128 && o("not-basic"),
m.push(e.charCodeAt(n));
for (s = t > 0 ? t + 1 : 0; s < _; ) {
for (i = g,
a = 1,
c = C; s >= _ && o("invalid-input"),
p = u(e.charCodeAt(s++)),
(p >= C || p > I((y - g) / a)) && o("overflow"),
g += p * a,
f = c <= b ? A : c >= b + w ? w : c - b,
!(p < f); c += C)
d = C - f,
a > I(y / d) && o("overflow"),
a *= d;
r = m.length + 1,
b = h(g - i, r, 0 == i),
I(g / r) > y - k && o("overflow"),
k += I(g / r),
g %= r,
m.splice(g++, 0, k)
}
return l(m)
}
function d(e) {
var r, t, n, s, i, a, l, u, f, d, m, _, g, k, b, v = [];
for (e = c(e),
_ = e.length,
r = S,
t = 0,
i = E,
a = 0; a < _; ++a)
m = e[a],
m < 128 && v.push(B(m));
for (n = s = v.length,
s && v.push(F); n < _; ) {
for (l = y,
a = 0; a < _; ++a)
m = e[a],
m >= r && m < l && (l = m);
for (g = n + 1,
l - r > I((y - t) / g) && o("overflow"),
t += (l - r) * g,
r = l,
a = 0; a < _; ++a)
if (m = e[a],
m < r && ++t > y && o("overflow"),
m == r) {
for (u = t,
f = C; d = f <= i ? A : f >= i + w ? w : f - i,
!(u < d); f += C)
b = u - d,
k = C - d,
v.push(B(p(d + b % k, 0))),
u = I(b / k);
v.push(B(p(u, 0))),
i = h(t, g, n == s),
t = 0,
++n
}
++t,
++r
}
return v.join("")
}
function m(e) {
return a(e, function(e) {
return z.test(e) ? f(e.slice(4).toLowerCase()) : e
})
}
function _(e) {
return a(e, function(e) {
return L.test(e) ? "xn--" + d(e) : e
})
}
var g = "object" == typeof n && n && !n.nodeType && n
, k = "object" == typeof t && t && !t.nodeType && t
, b = "object" == typeof r && r;
b.global !== b && b.window !== b && b.self !== b || (s = b);
var v, x, y = 2147483647, C = 36, A = 1, w = 26, D = 38, q = 700, E = 72, S = 128, F = "-", z = /^xn--/, L = /[^\x20-\x7E]/, T = /[\x2E\u3002\uFF0E\uFF61]/g, R = {
overflow: "Overflow: input needs wider integers to process",
"not-basic": "Illegal input >= 0x80 (not a basic code point)",
"invalid-input": "Invalid input"
}, M = C - A, I = Math.floor, B = String.fromCharCode;
if (v = {
version: "1.4.1",
ucs2: {
decode: c,
encode: l
},
decode: f,
encode: d,
toASCII: _,
toUnicode: m
},
"function" == typeof e && "object" == typeof e.amd && e.amd)
e("punycode", function() {
return v
});
else if (g && k)
if (t.exports == g)
k.exports = v;
else
for (x in v)
v.hasOwnProperty(x) && (g[x] = v[x]);
else
s.punycode = v
}(this)
}
).call(this, "undefined" != typeof global ? global : "undefined" != typeof self ? self : "undefined" != typeof window ? window : {})
}
, {}],
53: [function(e, r, t) {
r.exports = {
Aacute: "Á",
aacute: "á",
Abreve: "Ă",
abreve: "ă",
ac: "∾",
acd: "∿",
acE: "∾̳",
Acirc: "Â",
acirc: "â",
acute: "´",
Acy: "А",
acy: "а",
AElig: "Æ",
aelig: "æ",
af: "",
Afr: "𝔄",
afr: "𝔞",
Agrave: "À",
agrave: "à",
alefsym: "ℵ",
aleph: "ℵ",
Alpha: "Α",
alpha: "α",
Amacr: "Ā",
amacr: "ā",
amalg: "⨿",
amp: "&",
AMP: "&",
andand: "⩕",
And: "⩓",
and: "∧",
andd: "⩜",
andslope: "⩘",
andv: "⩚",
ang: "∠",
ange: "⦤",
angle: "∠",
angmsdaa: "⦨",
angmsdab: "⦩",
angmsdac: "⦪",
angmsdad: "⦫",
angmsdae: "⦬",
angmsdaf: "⦭",
angmsdag: "⦮",
angmsdah: "⦯",
angmsd: "∡",
angrt: "∟",
angrtvb: "⊾",
angrtvbd: "⦝",
angsph: "∢",
angst: "Å",
angzarr: "⍼",
Aogon: "Ą",
aogon: "ą",
Aopf: "𝔸",
aopf: "𝕒",
apacir: "⩯",
ap: "≈",
apE: "⩰",
ape: "≊",
apid: "≋",
apos: "'",
ApplyFunction: "",
approx: "≈",
approxeq: "≊",
Aring: "Å",
aring: "å",
Ascr: "𝒜",
ascr: "𝒶",
Assign: "≔",
ast: "*",
asymp: "≈",
asympeq: "≍",
Atilde: "Ã",
atilde: "ã",
Auml: "Ä",
auml: "ä",
awconint: "∳",
awint: "⨑",
backcong: "≌",
backepsilon: "϶",
backprime: "‵",
backsim: "∽",
backsimeq: "⋍",
Backslash: "∖",
Barv: "⫧",
barvee: "⊽",
barwed: "⌅",
Barwed: "⌆",
barwedge: "⌅",
bbrk: "⎵",
bbrktbrk: "⎶",
bcong: "≌",
Bcy: "Б",
bcy: "б",
bdquo: "„",
becaus: "∵",
because: "∵",
Because: "∵",
bemptyv: "⦰",
bepsi: "϶",
bernou: "ℬ",
Bernoullis: "ℬ",
Beta: "Β",
beta: "β",
beth: "ℶ",
between: "≬",
Bfr: "𝔅",
bfr: "𝔟",
bigcap: "⋂",
bigcirc: "◯",
bigcup: "⋃",
bigodot: "⨀",
bigoplus: "⨁",
bigotimes: "⨂",
bigsqcup: "⨆",
bigstar: "★",
bigtriangledown: "▽",
bigtriangleup: "△",
biguplus: "⨄",
bigvee: "⋁",
bigwedge: "⋀",
bkarow: "⤍",
blacklozenge: "⧫",
blacksquare: "▪",
blacktriangle: "▴",
blacktriangledown: "▾",
blacktriangleleft: "◂",
blacktriangleright: "▸",
blank: "␣",
blk12: "▒",
blk14: "░",
blk34: "▓",
block: "█",
bne: "=⃥",
bnequiv: "≡⃥",
bNot: "⫭",
bnot: "⌐",
Bopf: "𝔹",
bopf: "𝕓",
bot: "⊥",
bottom: "⊥",
bowtie: "⋈",
boxbox: "⧉",
boxdl: "┐",
boxdL: "╕",
boxDl: "╖",
boxDL: "╗",
boxdr: "┌",
boxdR: "╒",
boxDr: "╓",
boxDR: "╔",
boxh: "─",
boxH: "═",
boxhd: "┬",
boxHd: "╤",
boxhD: "╥",
boxHD: "╦",
boxhu: "┴",
boxHu: "╧",
boxhU: "╨",
boxHU: "╩",
boxminus: "⊟",
boxplus: "⊞",
boxtimes: "⊠",
boxul: "┘",
boxuL: "╛",
boxUl: "╜",
boxUL: "╝",
boxur: "└",
boxuR: "╘",
boxUr: "╙",
boxUR: "╚",
boxv: "│",
boxV: "║",
boxvh: "┼",
boxvH: "╪",
boxVh: "╫",
boxVH: "╬",
boxvl: "┤",
boxvL: "╡",
boxVl: "╢",
boxVL: "╣",
boxvr: "├",
boxvR: "╞",
boxVr: "╟",
boxVR: "╠",
bprime: "‵",
breve: "˘",
Breve: "˘",
brvbar: "¦",
bscr: "𝒷",
Bscr: "ℬ",
bsemi: "⁏",
bsim: "∽",
bsime: "⋍",
bsolb: "⧅",
bsol: "\\",
bsolhsub: "⟈",
bull: "•",
bullet: "•",
bump: "≎",
bumpE: "⪮",
bumpe: "≏",
Bumpeq: "≎",
bumpeq: "≏",
Cacute: "Ć",
cacute: "ć",
capand: "⩄",
capbrcup: "⩉",
capcap: "⩋",
cap: "∩",
Cap: "⋒",
capcup: "⩇",
capdot: "⩀",
CapitalDifferentialD: "ⅅ",
caps: "∩︀",
caret: "⁁",
caron: "ˇ",
Cayleys: "ℭ",
ccaps: "⩍",
Ccaron: "Č",
ccaron: "č",
Ccedil: "Ç",
ccedil: "ç",
Ccirc: "Ĉ",
ccirc: "ĉ",
Cconint: "∰",
ccups: "⩌",
ccupssm: "⩐",
Cdot: "Ċ",
cdot: "ċ",
cedil: "¸",
Cedilla: "¸",
cemptyv: "⦲",
cent: "¢",
centerdot: "·",
CenterDot: "·",
cfr: "𝔠",
Cfr: "ℭ",
CHcy: "Ч",
chcy: "ч",
check: "✓",
checkmark: "✓",
Chi: "Χ",
chi: "χ",
circ: "ˆ",
circeq: "≗",
circlearrowleft: "↺",
circlearrowright: "↻",
circledast: "⊛",
circledcirc: "⊚",
circleddash: "⊝",
CircleDot: "⊙",
circledR: "®",
circledS: "Ⓢ",
CircleMinus: "⊖",
CirclePlus: "⊕",
CircleTimes: "⊗",
cir: "○",
cirE: "⧃",
cire: "≗",
cirfnint: "⨐",
cirmid: "⫯",
cirscir: "⧂",
ClockwiseContourIntegral: "∲",
CloseCurlyDoubleQuote: "”",
CloseCurlyQuote: "’",
clubs: "♣",
clubsuit: "♣",
colon: ":",
Colon: "∷",
Colone: "⩴",
colone: "≔",
coloneq: "≔",
comma: ",",
commat: "@",
comp: "∁",
compfn: "∘",
complement: "∁",
complexes: "ℂ",
cong: "≅",
congdot: "⩭",
Congruent: "≡",
conint: "∮",
Conint: "∯",
ContourIntegral: "∮",
copf: "𝕔",
Copf: "ℂ",
coprod: "∐",
Coproduct: "∐",
copy: "©",
COPY: "©",
copysr: "℗",
CounterClockwiseContourIntegral: "∳",
crarr: "↵",
cross: "✗",
Cross: "⨯",
Cscr: "𝒞",
cscr: "𝒸",
csub: "⫏",
csube: "⫑",
csup: "⫐",
csupe: "⫒",
ctdot: "⋯",
cudarrl: "⤸",
cudarrr: "⤵",
cuepr: "⋞",
cuesc: "⋟",
cularr: "↶",
cularrp: "⤽",
cupbrcap: "⩈",
cupcap: "⩆",
CupCap: "≍",
cup: "∪",
Cup: "⋓",
cupcup: "⩊",
cupdot: "⊍",
cupor: "⩅",
cups: "∪︀",
curarr: "↷",
curarrm: "⤼",
curlyeqprec: "⋞",
curlyeqsucc: "⋟",
curlyvee: "⋎",
curlywedge: "⋏",
curren: "¤",
curvearrowleft: "↶",
curvearrowright: "↷",
cuvee: "⋎",
cuwed: "⋏",
cwconint: "∲",
cwint: "∱",
cylcty: "⌭",
dagger: "†",
Dagger: "‡",
daleth: "ℸ",
darr: "↓",
Darr: "↡",
dArr: "⇓",
dash: "‐",
Dashv: "⫤",
dashv: "⊣",
dbkarow: "⤏",
dblac: "˝",
Dcaron: "Ď",
dcaron: "ď",
Dcy: "Д",
dcy: "д",
ddagger: "‡",
ddarr: "⇊",
DD: "ⅅ",
dd: "ⅆ",
DDotrahd: "⤑",
ddotseq: "⩷",
deg: "°",
Del: "∇",
Delta: "Δ",
delta: "δ",
demptyv: "⦱",
dfisht: "⥿",
Dfr: "𝔇",
dfr: "𝔡",
dHar: "⥥",
dharl: "⇃",
dharr: "⇂",
DiacriticalAcute: "´",
DiacriticalDot: "˙",
DiacriticalDoubleAcute: "˝",
DiacriticalGrave: "`",
DiacriticalTilde: "˜",
diam: "⋄",
diamond: "⋄",
Diamond: "⋄",
diamondsuit: "♦",
diams: "♦",
die: "¨",
DifferentialD: "ⅆ",
digamma: "ϝ",
disin: "⋲",
div: "÷",
divide: "÷",
divideontimes: "⋇",
divonx: "⋇",
DJcy: "Ђ",
djcy: "ђ",
dlcorn: "⌞",
dlcrop: "⌍",
dollar: "$",
Dopf: "𝔻",
dopf: "𝕕",
Dot: "¨",
dot: "˙",
DotDot: "⃜",
doteq: "≐",
doteqdot: "≑",
DotEqual: "≐",
dotminus: "∸",
dotplus: "∔",
dotsquare: "⊡",
doublebarwedge: "⌆",
DoubleContourIntegral: "∯",
DoubleDot: "¨",
DoubleDownArrow: "⇓",
DoubleLeftArrow: "⇐",
DoubleLeftRightArrow: "⇔",
DoubleLeftTee: "⫤",
DoubleLongLeftArrow: "⟸",
DoubleLongLeftRightArrow: "⟺",
DoubleLongRightArrow: "⟹",
DoubleRightArrow: "⇒",
DoubleRightTee: "⊨",
DoubleUpArrow: "⇑",
DoubleUpDownArrow: "⇕",
DoubleVerticalBar: "∥",
DownArrowBar: "⤓",
downarrow: "↓",
DownArrow: "↓",
Downarrow: "⇓",
DownArrowUpArrow: "⇵",
DownBreve: "̑",
downdownarrows: "⇊",
downharpoonleft: "⇃",
downharpoonright: "⇂",
DownLeftRightVector: "⥐",
DownLeftTeeVector: "⥞",
DownLeftVectorBar: "⥖",
DownLeftVector: "↽",
DownRightTeeVector: "⥟",
DownRightVectorBar: "⥗",
DownRightVector: "⇁",
DownTeeArrow: "↧",
DownTee: "⊤",
drbkarow: "⤐",
drcorn: "⌟",
drcrop: "⌌",
Dscr: "𝒟",
dscr: "𝒹",
DScy: "Ѕ",
dscy: "ѕ",
dsol: "⧶",
Dstrok: "Đ",
dstrok: "đ",
dtdot: "⋱",
dtri: "▿",
dtrif: "▾",
duarr: "⇵",
duhar: "⥯",
dwangle: "⦦",
DZcy: "Џ",
dzcy: "џ",
dzigrarr: "⟿",
Eacute: "É",
eacute: "é",
easter: "⩮",
Ecaron: "Ě",
ecaron: "ě",
Ecirc: "Ê",
ecirc: "ê",
ecir: "≖",
ecolon: "≕",
Ecy: "Э",
ecy: "э",
eDDot: "⩷",
Edot: "Ė",
edot: "ė",
eDot: "≑",
ee: "ⅇ",
efDot: "≒",
Efr: "𝔈",
efr: "𝔢",
eg: "⪚",
Egrave: "È",
egrave: "è",
egs: "⪖",
egsdot: "⪘",
el: "⪙",
Element: "∈",
elinters: "⏧",
ell: "ℓ",
els: "⪕",
elsdot: "⪗",
Emacr: "Ē",
emacr: "ē",
empty: "∅",
emptyset: "∅",
EmptySmallSquare: "◻",
emptyv: "∅",
EmptyVerySmallSquare: "▫",
emsp13: " ",
emsp14: " ",
emsp: " ",
ENG: "Ŋ",
eng: "ŋ",
ensp: " ",
Eogon: "Ę",
eogon: "ę",
Eopf: "𝔼",
eopf: "𝕖",
epar: "⋕",
eparsl: "⧣",
eplus: "⩱",
epsi: "ε",
Epsilon: "Ε",
epsilon: "ε",
epsiv: "ϵ",
eqcirc: "≖",
eqcolon: "≕",
eqsim: "≂",
eqslantgtr: "⪖",
eqslantless: "⪕",
Equal: "⩵",
equals: "=",
EqualTilde: "≂",
equest: "≟",
Equilibrium: "⇌",
equiv: "≡",
equivDD: "⩸",
eqvparsl: "⧥",
erarr: "⥱",
erDot: "≓",
escr: "ℯ",
Escr: "ℰ",
esdot: "≐",
Esim: "⩳",
esim: "≂",
Eta: "Η",
eta: "η",
ETH: "Ð",
eth: "ð",
Euml: "Ë",
euml: "ë",
euro: "€",
excl: "!",
exist: "∃",
Exists: "∃",
expectation: "ℰ",
exponentiale: "ⅇ",
ExponentialE: "ⅇ",
fallingdotseq: "≒",
Fcy: "Ф",
fcy: "ф",
female: "♀",
ffilig: "ffi",
fflig: "ff",
ffllig: "ffl",
Ffr: "𝔉",
ffr: "𝔣",
filig: "fi",
FilledSmallSquare: "◼",
FilledVerySmallSquare: "▪",
fjlig: "fj",
flat: "♭",
fllig: "fl",
fltns: "▱",
fnof: "ƒ",
Fopf: "𝔽",
fopf: "𝕗",
forall: "∀",
ForAll: "∀",
fork: "⋔",
forkv: "⫙",
Fouriertrf: "ℱ",
fpartint: "⨍",
frac12: "½",
frac13: "⅓",
frac14: "¼",
frac15: "⅕",
frac16: "⅙",
frac18: "⅛",
frac23: "⅔",
frac25: "⅖",
frac34: "¾",
frac35: "⅗",
frac38: "⅜",
frac45: "⅘",
frac56: "⅚",
frac58: "⅝",
frac78: "⅞",
frasl: "⁄",
frown: "⌢",
fscr: "𝒻",
Fscr: "ℱ",
gacute: "ǵ",
Gamma: "Γ",
gamma: "γ",
Gammad: "Ϝ",
gammad: "ϝ",
gap: "⪆",
Gbreve: "Ğ",
gbreve: "ğ",
Gcedil: "Ģ",
Gcirc: "Ĝ",
gcirc: "ĝ",
Gcy: "Г",
gcy: "г",
Gdot: "Ġ",
gdot: "ġ",
ge: "≥",
gE: "≧",
gEl: "⪌",
gel: "⋛",
geq: "≥",
geqq: "≧",
geqslant: "⩾",
gescc: "⪩",
ges: "⩾",
gesdot: "⪀",
gesdoto: "⪂",
gesdotol: "⪄",
gesl: "⋛︀",
gesles: "⪔",
Gfr: "𝔊",
gfr: "𝔤",
gg: "≫",
Gg: "⋙",
ggg: "⋙",
gimel: "ℷ",
GJcy: "Ѓ",
gjcy: "ѓ",
gla: "⪥",
gl: "≷",
glE: "⪒",
glj: "⪤",
gnap: "⪊",
gnapprox: "⪊",
gne: "⪈",
gnE: "≩",
gneq: "⪈",
gneqq: "≩",
gnsim: "⋧",
Gopf: "𝔾",
gopf: "𝕘",
grave: "`",
GreaterEqual: "≥",
GreaterEqualLess: "⋛",
GreaterFullEqual: "≧",
GreaterGreater: "⪢",
GreaterLess: "≷",
GreaterSlantEqual: "⩾",
GreaterTilde: "≳",
Gscr: "𝒢",
gscr: "ℊ",
gsim: "≳",
gsime: "⪎",
gsiml: "⪐",
gtcc: "⪧",
gtcir: "⩺",
gt: ">",
GT: ">",
Gt: "≫",
gtdot: "⋗",
gtlPar: "⦕",
gtquest: "⩼",
gtrapprox: "⪆",
gtrarr: "⥸",
gtrdot: "⋗",
gtreqless: "⋛",
gtreqqless: "⪌",
gtrless: "≷",
gtrsim: "≳",
gvertneqq: "≩︀",
gvnE: "≩︀",
Hacek: "ˇ",
hairsp: " ",
half: "½",
hamilt: "ℋ",
HARDcy: "Ъ",
hardcy: "ъ",
harrcir: "⥈",
harr: "↔",
hArr: "⇔",
harrw: "↭",
Hat: "^",
hbar: "ℏ",
Hcirc: "Ĥ",
hcirc: "ĥ",
hearts: "♥",
heartsuit: "♥",
hellip: "…",
hercon: "⊹",
hfr: "𝔥",
Hfr: "ℌ",
HilbertSpace: "ℋ",
hksearow: "⤥",
hkswarow: "⤦",
hoarr: "⇿",
homtht: "∻",
hookleftarrow: "↩",
hookrightarrow: "↪",
hopf: "𝕙",
Hopf: "ℍ",
horbar: "―",
HorizontalLine: "─",
hscr: "𝒽",
Hscr: "ℋ",
hslash: "ℏ",
Hstrok: "Ħ",
hstrok: "ħ",
HumpDownHump: "≎",
HumpEqual: "≏",
hybull: "⁃",
hyphen: "‐",
Iacute: "Í",
iacute: "í",
ic: "",
Icirc: "Î",
icirc: "î",
Icy: "И",
icy: "и",
Idot: "İ",
IEcy: "Е",
iecy: "е",
iexcl: "¡",
iff: "⇔",
ifr: "𝔦",
Ifr: "ℑ",
Igrave: "Ì",
igrave: "ì",
ii: "ⅈ",
iiiint: "⨌",
iiint: "∭",
iinfin: "⧜",
iiota: "℩",
IJlig: "IJ",
ijlig: "ij",
Imacr: "Ī",
imacr: "ī",
image: "ℑ",
ImaginaryI: "ⅈ",
imagline: "ℐ",
imagpart: "ℑ",
imath: "ı",
Im: "ℑ",
imof: "⊷",
imped: "Ƶ",
Implies: "⇒",
incare: "℅",
"in": "∈",
infin: "∞",
infintie: "⧝",
inodot: "ı",
intcal: "⊺",
"int": "∫",
Int: "∬",
integers: "ℤ",
Integral: "∫",
intercal: "⊺",
Intersection: "⋂",
intlarhk: "⨗",
intprod: "⨼",
InvisibleComma: "",
InvisibleTimes: "",
IOcy: "Ё",
iocy: "ё",
Iogon: "Į",
iogon: "į",
Iopf: "𝕀",
iopf: "𝕚",
Iota: "Ι",
iota: "ι",
iprod: "⨼",
iquest: "¿",
iscr: "𝒾",
Iscr: "ℐ",
isin: "∈",
isindot: "⋵",
isinE: "⋹",
isins: "⋴",
isinsv: "⋳",
isinv: "∈",
it: "",
Itilde: "Ĩ",
itilde: "ĩ",
Iukcy: "І",
iukcy: "і",
Iuml: "Ï",
iuml: "ï",
Jcirc: "Ĵ",
jcirc: "ĵ",
Jcy: "Й",
jcy: "й",
Jfr: "𝔍",
jfr: "𝔧",
jmath: "ȷ",
Jopf: "𝕁",
jopf: "𝕛",
Jscr: "𝒥",
jscr: "𝒿",
Jsercy: "Ј",
jsercy: "ј",
Jukcy: "Є",
jukcy: "є",
Kappa: "Κ",
kappa: "κ",
kappav: "ϰ",
Kcedil: "Ķ",
kcedil: "ķ",
Kcy: "К",
kcy: "к",
Kfr: "𝔎",
kfr: "𝔨",
kgreen: "ĸ",
KHcy: "Х",
khcy: "х",
KJcy: "Ќ",
kjcy: "ќ",
Kopf: "𝕂",
kopf: "𝕜",
Kscr: "𝒦",
kscr: "𝓀",
lAarr: "⇚",
Lacute: "Ĺ",
lacute: "ĺ",
laemptyv: "⦴",
lagran: "ℒ",
Lambda: "Λ",
lambda: "λ",
lang: "⟨",
Lang: "⟪",
langd: "⦑",
langle: "⟨",
lap: "⪅",
Laplacetrf: "ℒ",
laquo: "«",
larrb: "⇤",
larrbfs: "⤟",
larr: "←",
Larr: "↞",
lArr: "⇐",
larrfs: "⤝",
larrhk: "↩",
larrlp: "↫",
larrpl: "⤹",
larrsim: "⥳",
larrtl: "↢",
latail: "⤙",
lAtail: "⤛",
lat: "⪫",
late: "⪭",
lates: "⪭︀",
lbarr: "⤌",
lBarr: "⤎",
lbbrk: "❲",
lbrace: "{",
lbrack: "[",
lbrke: "⦋",
lbrksld: "⦏",
lbrkslu: "⦍",
Lcaron: "Ľ",
lcaron: "ľ",
Lcedil: "Ļ",
lcedil: "ļ",
lceil: "⌈",
lcub: "{",
Lcy: "Л",
lcy: "л",
ldca: "⤶",
ldquo: "“",
ldquor: "„",
ldrdhar: "⥧",
ldrushar: "⥋",
ldsh: "↲",
le: "≤",
lE: "≦",
LeftAngleBracket: "⟨",
LeftArrowBar: "⇤",
leftarrow: "←",
LeftArrow: "←",
Leftarrow: "⇐",
LeftArrowRightArrow: "⇆",
leftarrowtail: "↢",
LeftCeiling: "⌈",
LeftDoubleBracket: "⟦",
LeftDownTeeVector: "⥡",
LeftDownVectorBar: "⥙",
LeftDownVector: "⇃",
LeftFloor: "⌊",
leftharpoondown: "↽",
leftharpoonup: "↼",
leftleftarrows: "⇇",
leftrightarrow: "↔",
LeftRightArrow: "↔",
Leftrightarrow: "⇔",
leftrightarrows: "⇆",
leftrightharpoons: "⇋",
leftrightsquigarrow: "↭",
LeftRightVector: "⥎",
LeftTeeArrow: "↤",
LeftTee: "⊣",
LeftTeeVector: "⥚",
leftthreetimes: "⋋",
LeftTriangleBar: "⧏",
LeftTriangle: "⊲",
LeftTriangleEqual: "⊴",
LeftUpDownVector: "⥑",
LeftUpTeeVector: "⥠",
LeftUpVectorBar: "⥘",
LeftUpVector: "↿",
LeftVectorBar: "⥒",
LeftVector: "↼",
lEg: "⪋",
leg: "⋚",
leq: "≤",
leqq: "≦",
leqslant: "⩽",
lescc: "⪨",
les: "⩽",
lesdot: "⩿",
lesdoto: "⪁",
lesdotor: "⪃",
lesg: "⋚︀",
lesges: "⪓",
lessapprox: "⪅",
lessdot: "⋖",
lesseqgtr: "⋚",
lesseqqgtr: "⪋",
LessEqualGreater: "⋚",
LessFullEqual: "≦",
LessGreater: "≶",
lessgtr: "≶",
LessLess: "⪡",
lesssim: "≲",
LessSlantEqual: "⩽",
LessTilde: "≲",
lfisht: "⥼",
lfloor: "⌊",
Lfr: "𝔏",
lfr: "𝔩",
lg: "≶",
lgE: "⪑",
lHar: "⥢",
lhard: "↽",
lharu: "↼",
lharul: "⥪",
lhblk: "▄",
LJcy: "Љ",
ljcy: "љ",
llarr: "⇇",
ll: "≪",
Ll: "⋘",
llcorner: "⌞",
Lleftarrow: "⇚",
llhard: "⥫",
lltri: "◺",
Lmidot: "Ŀ",
lmidot: "ŀ",
lmoustache: "⎰",
lmoust: "⎰",
lnap: "⪉",
lnapprox: "⪉",
lne: "⪇",
lnE: "≨",
lneq: "⪇",
lneqq: "≨",
lnsim: "⋦",
loang: "⟬",
loarr: "⇽",
lobrk: "⟦",
longleftarrow: "⟵",
LongLeftArrow: "⟵",
Longleftarrow: "⟸",
longleftrightarrow: "⟷",
LongLeftRightArrow: "⟷",
Longleftrightarrow: "⟺",
longmapsto: "⟼",
longrightarrow: "⟶",
LongRightArrow: "⟶",
Longrightarrow: "⟹",
looparrowleft: "↫",
looparrowright: "↬",
lopar: "⦅",
Lopf: "𝕃",
lopf: "𝕝",
loplus: "⨭",
lotimes: "⨴",
lowast: "∗",
lowbar: "_",
LowerLeftArrow: "↙",
LowerRightArrow: "↘",
loz: "◊",
lozenge: "◊",
lozf: "⧫",
lpar: "(",
lparlt: "⦓",
lrarr: "⇆",
lrcorner: "⌟",
lrhar: "⇋",
lrhard: "⥭",
lrm: "",
lrtri: "⊿",
lsaquo: "‹",
lscr: "𝓁",
Lscr: "ℒ",
lsh: "↰",
Lsh: "↰",
lsim: "≲",
lsime: "⪍",
lsimg: "⪏",
lsqb: "[",
lsquo: "‘",
lsquor: "‚",
Lstrok: "Ł",
lstrok: "ł",
ltcc: "⪦",
ltcir: "⩹",
lt: "<",
LT: "<",
Lt: "≪",
ltdot: "⋖",
lthree: "⋋",
ltimes: "⋉",
ltlarr: "⥶",
ltquest: "⩻",
ltri: "◃",
ltrie: "⊴",
ltrif: "◂",
ltrPar: "⦖",
lurdshar: "⥊",
luruhar: "⥦",
lvertneqq: "≨︀",
lvnE: "≨︀",
macr: "¯",
male: "♂",
malt: "✠",
maltese: "✠",
Map: "⤅",
map: "↦",
mapsto: "↦",
mapstodown: "↧",
mapstoleft: "↤",
mapstoup: "↥",
marker: "▮",
mcomma: "⨩",
Mcy: "М",
mcy: "м",
mdash: "—",
mDDot: "∺",
measuredangle: "∡",
MediumSpace: " ",
Mellintrf: "ℳ",
Mfr: "𝔐",
mfr: "𝔪",
mho: "℧",
micro: "µ",
midast: "*",
midcir: "⫰",
mid: "∣",
middot: "·",
minusb: "⊟",
minus: "−",
minusd: "∸",
minusdu: "⨪",
MinusPlus: "∓",
mlcp: "⫛",
mldr: "…",
mnplus: "∓",
models: "⊧",
Mopf: "𝕄",
mopf: "𝕞",
mp: "∓",
mscr: "𝓂",
Mscr: "ℳ",
mstpos: "∾",
Mu: "Μ",
mu: "μ",
multimap: "⊸",
mumap: "⊸",
nabla: "∇",
Nacute: "Ń",
nacute: "ń",
nang: "∠⃒",
nap: "≉",
napE: "⩰̸",
napid: "≋̸",
napos: "ʼn",
napprox: "≉",
natural: "♮",
naturals: "ℕ",
natur: "♮",
nbsp: " ",
nbump: "≎̸",
nbumpe: "≏̸",
ncap: "⩃",
Ncaron: "Ň",
ncaron: "ň",
Ncedil: "Ņ",
ncedil: "ņ",
ncong: "≇",
ncongdot: "⩭̸",
ncup: "⩂",
Ncy: "Н",
ncy: "н",
ndash: "–",
nearhk: "⤤",
nearr: "↗",
neArr: "⇗",
nearrow: "↗",
ne: "≠",
nedot: "≐̸",
NegativeMediumSpace: "",
NegativeThickSpace: "",
NegativeThinSpace: "",
NegativeVeryThinSpace: "",
nequiv: "≢",
nesear: "⤨",
nesim: "≂̸",
NestedGreaterGreater: "≫",
NestedLessLess: "≪",
NewLine: "\n",
nexist: "∄",
nexists: "∄",
Nfr: "𝔑",
nfr: "𝔫",
ngE: "≧̸",
nge: "≱",
ngeq: "≱",
ngeqq: "≧̸",
ngeqslant: "⩾̸",
nges: "⩾̸",
nGg: "⋙̸",
ngsim: "≵",
nGt: "≫⃒",
ngt: "≯",
ngtr: "≯",
nGtv: "≫̸",
nharr: "↮",
nhArr: "⇎",
nhpar: "⫲",
ni: "∋",
nis: "⋼",
nisd: "⋺",
niv: "∋",
NJcy: "Њ",
njcy: "њ",
nlarr: "↚",
nlArr: "⇍",
nldr: "‥",
nlE: "≦̸",
nle: "≰",
nleftarrow: "↚",
nLeftarrow: "⇍",
nleftrightarrow: "↮",
nLeftrightarrow: "⇎",
nleq: "≰",
nleqq: "≦̸",
nleqslant: "⩽̸",
nles: "⩽̸",
nless: "≮",
nLl: "⋘̸",
nlsim: "≴",
nLt: "≪⃒",
nlt: "≮",
nltri: "⋪",
nltrie: "⋬",
nLtv: "≪̸",
nmid: "∤",
NoBreak: "",
NonBreakingSpace: " ",
nopf: "𝕟",
Nopf: "ℕ",
Not: "⫬",
not: "¬",
NotCongruent: "≢",
NotCupCap: "≭",
NotDoubleVerticalBar: "∦",
NotElement: "∉",
NotEqual: "≠",
NotEqualTilde: "≂̸",
NotExists: "∄",
NotGreater: "≯",
NotGreaterEqual: "≱",
NotGreaterFullEqual: "≧̸",
NotGreaterGreater: "≫̸",
NotGreaterLess: "≹",
NotGreaterSlantEqual: "⩾̸",
NotGreaterTilde: "≵",
NotHumpDownHump: "≎̸",
NotHumpEqual: "≏̸",
notin: "∉",
notindot: "⋵̸",
notinE: "⋹̸",
notinva: "∉",
notinvb: "⋷",
notinvc: "⋶",
NotLeftTriangleBar: "⧏̸",
NotLeftTriangle: "⋪",
NotLeftTriangleEqual: "⋬",
NotLess: "≮",
NotLessEqual: "≰",
NotLessGreater: "≸",
NotLessLess: "≪̸",
NotLessSlantEqual: "⩽̸",
NotLessTilde: "≴",
NotNestedGreaterGreater: "⪢̸",
NotNestedLessLess: "⪡̸",
notni: "∌",
notniva: "∌",
notnivb: "⋾",
notnivc: "⋽",
NotPrecedes: "⊀",
NotPrecedesEqual: "⪯̸",
NotPrecedesSlantEqual: "⋠",
NotReverseElement: "∌",
NotRightTriangleBar: "⧐̸",
NotRightTriangle: "⋫",
NotRightTriangleEqual: "⋭",
NotSquareSubset: "⊏̸",
NotSquareSubsetEqual: "⋢",
NotSquareSuperset: "⊐̸",
NotSquareSupersetEqual: "⋣",
NotSubset: "⊂⃒",
NotSubsetEqual: "⊈",
NotSucceeds: "⊁",
NotSucceedsEqual: "⪰̸",
NotSucceedsSlantEqual: "⋡",
NotSucceedsTilde: "≿̸",
NotSuperset: "⊃⃒",
NotSupersetEqual: "⊉",
NotTilde: "≁",
NotTildeEqual: "≄",
NotTildeFullEqual: "≇",
NotTildeTilde: "≉",
NotVerticalBar: "∤",
nparallel: "∦",
npar: "∦",
nparsl: "⫽⃥",
npart: "∂̸",
npolint: "⨔",
npr: "⊀",
nprcue: "⋠",
nprec: "⊀",
npreceq: "⪯̸",
npre: "⪯̸",
nrarrc: "⤳̸",
nrarr: "↛",
nrArr: "⇏",
nrarrw: "↝̸",
nrightarrow: "↛",
nRightarrow: "⇏",
nrtri: "⋫",
nrtrie: "⋭",
nsc: "⊁",
nsccue: "⋡",
nsce: "⪰̸",
Nscr: "𝒩",
nscr: "𝓃",
nshortmid: "∤",
nshortparallel: "∦",
nsim: "≁",
nsime: "≄",
nsimeq: "≄",
nsmid: "∤",
nspar: "∦",
nsqsube: "⋢",
nsqsupe: "⋣",
nsub: "⊄",
nsubE: "⫅̸",
nsube: "⊈",
nsubset: "⊂⃒",
nsubseteq: "⊈",
nsubseteqq: "⫅̸",
nsucc: "⊁",
nsucceq: "⪰̸",
nsup: "⊅",
nsupE: "⫆̸",
nsupe: "⊉",
nsupset: "⊃⃒",
nsupseteq: "⊉",
nsupseteqq: "⫆̸",
ntgl: "≹",
Ntilde: "Ñ",
ntilde: "ñ",
ntlg: "≸",
ntriangleleft: "⋪",
ntrianglelefteq: "⋬",
ntriangleright: "⋫",
ntrianglerighteq: "⋭",
Nu: "Ν",
nu: "ν",
num: "#",
numero: "№",
numsp: " ",
nvap: "≍⃒",
nvdash: "⊬",
nvDash: "⊭",
nVdash: "⊮",
nVDash: "⊯",
nvge: "≥⃒",
nvgt: ">⃒",
nvHarr: "⤄",
nvinfin: "⧞",
nvlArr: "⤂",
nvle: "≤⃒",
nvlt: "<⃒",
nvltrie: "⊴⃒",
nvrArr: "⤃",
nvrtrie: "⊵⃒",
nvsim: "∼⃒",
nwarhk: "⤣",
nwarr: "↖",
nwArr: "⇖",
nwarrow: "↖",
nwnear: "⤧",
Oacute: "Ó",
oacute: "ó",
oast: "⊛",
Ocirc: "Ô",
ocirc: "ô",
ocir: "⊚",
Ocy: "О",
ocy: "о",
odash: "⊝",
Odblac: "Ő",
odblac: "ő",
odiv: "⨸",
odot: "⊙",
odsold: "⦼",
OElig: "Œ",
oelig: "œ",
ofcir: "⦿",
Ofr: "𝔒",
ofr: "𝔬",
ogon: "˛",
Ograve: "Ò",
ograve: "ò",
ogt: "⧁",
ohbar: "⦵",
ohm: "Ω",
oint: "∮",
olarr: "↺",
olcir: "⦾",
olcross: "⦻",
oline: "‾",
olt: "⧀",
Omacr: "Ō",
omacr: "ō",
Omega: "Ω",
omega: "ω",
Omicron: "Ο",
omicron: "ο",
omid: "⦶",
ominus: "⊖",
Oopf: "𝕆",
oopf: "𝕠",
opar: "⦷",
OpenCurlyDoubleQuote: "“",
OpenCurlyQuote: "‘",
operp: "⦹",
oplus: "⊕",
orarr: "↻",
Or: "⩔",
or: "∨",
ord: "⩝",
order: "ℴ",
orderof: "ℴ",
ordf: "ª",
ordm: "º",
origof: "⊶",
oror: "⩖",
orslope: "⩗",
orv: "⩛",
oS: "Ⓢ",
Oscr: "𝒪",
oscr: "ℴ",
Oslash: "Ø",
oslash: "ø",
osol: "⊘",
Otilde: "Õ",
otilde: "õ",
otimesas: "⨶",
Otimes: "⨷",
otimes: "⊗",
Ouml: "Ö",
ouml: "ö",
ovbar: "⌽",
OverBar: "‾",
OverBrace: "⏞",
OverBracket: "⎴",
OverParenthesis: "⏜",
para: "¶",
parallel: "∥",
par: "∥",
parsim: "⫳",
parsl: "⫽",
part: "∂",
PartialD: "∂",
Pcy: "П",
pcy: "п",
percnt: "%",
period: ".",
permil: "‰",
perp: "⊥",
pertenk: "‱",
Pfr: "𝔓",
pfr: "𝔭",
Phi: "Φ",
phi: "φ",
phiv: "ϕ",
phmmat: "ℳ",
phone: "☎",
Pi: "Π",
pi: "π",
pitchfork: "⋔",
piv: "ϖ",
planck: "ℏ",
planckh: "ℎ",
plankv: "ℏ",
plusacir: "⨣",
plusb: "⊞",
pluscir: "⨢",
plus: "+",
plusdo: "∔",
plusdu: "⨥",
pluse: "⩲",
PlusMinus: "±",
plusmn: "±",
plussim: "⨦",
plustwo: "⨧",
pm: "±",
Poincareplane: "ℌ",
pointint: "⨕",
popf: "𝕡",
Popf: "ℙ",
pound: "£",
prap: "⪷",
Pr: "⪻",
pr: "≺",
prcue: "≼",
precapprox: "⪷",
prec: "≺",
preccurlyeq: "≼",
Precedes: "≺",
PrecedesEqual: "⪯",
PrecedesSlantEqual: "≼",
PrecedesTilde: "≾",
preceq: "⪯",
precnapprox: "⪹",
precneqq: "⪵",
precnsim: "⋨",
pre: "⪯",
prE: "⪳",
precsim: "≾",
prime: "′",
Prime: "″",
primes: "ℙ",
prnap: "⪹",
prnE: "⪵",
prnsim: "⋨",
prod: "∏",
Product: "∏",
profalar: "⌮",
profline: "⌒",
profsurf: "⌓",
prop: "∝",
Proportional: "∝",
Proportion: "∷",
propto: "∝",
prsim: "≾",
prurel: "⊰",
Pscr: "𝒫",
pscr: "𝓅",
Psi: "Ψ",
psi: "ψ",
puncsp: " ",
Qfr: "𝔔",
qfr: "𝔮",
qint: "⨌",
qopf: "𝕢",
Qopf: "ℚ",
qprime: "⁗",
Qscr: "𝒬",
qscr: "𝓆",
quaternions: "ℍ",
quatint: "⨖",
quest: "?",
questeq: "≟",
quot: '"',
QUOT: '"',
rAarr: "⇛",
race: "∽̱",
Racute: "Ŕ",
racute: "ŕ",
radic: "√",
raemptyv: "⦳",
rang: "⟩",
Rang: "⟫",
rangd: "⦒",
range: "⦥",
rangle: "⟩",
raquo: "»",
rarrap: "⥵",
rarrb: "⇥",
rarrbfs: "⤠",
rarrc: "⤳",
rarr: "→",
Rarr: "↠",
rArr: "⇒",
rarrfs: "⤞",
rarrhk: "↪",
rarrlp: "↬",
rarrpl: "⥅",
rarrsim: "⥴",
Rarrtl: "⤖",
rarrtl: "↣",
rarrw: "↝",
ratail: "⤚",
rAtail: "⤜",
ratio: "∶",
rationals: "ℚ",
rbarr: "⤍",
rBarr: "⤏",
RBarr: "⤐",
rbbrk: "❳",
rbrace: "}",
rbrack: "]",
rbrke: "⦌",
rbrksld: "⦎",
rbrkslu: "⦐",
Rcaron: "Ř",
rcaron: "ř",
Rcedil: "Ŗ",
rcedil: "ŗ",
rceil: "⌉",
rcub: "}",
Rcy: "Р",
rcy: "р",
rdca: "⤷",
rdldhar: "⥩",
rdquo: "”",
rdquor: "”",
rdsh: "↳",
real: "ℜ",
realine: "ℛ",
realpart: "ℜ",
reals: "ℝ",
Re: "ℜ",
rect: "▭",
reg: "®",
REG: "®",
ReverseElement: "∋",
ReverseEquilibrium: "⇋",
ReverseUpEquilibrium: "⥯",
rfisht: "⥽",
rfloor: "⌋",
rfr: "𝔯",
Rfr: "ℜ",
rHar: "⥤",
rhard: "⇁",
rharu: "⇀",
rharul: "⥬",
Rho: "Ρ",
rho: "ρ",
rhov: "ϱ",
RightAngleBracket: "⟩",
RightArrowBar: "⇥",
rightarrow: "→",
RightArrow: "→",
Rightarrow: "⇒",
RightArrowLeftArrow: "⇄",
rightarrowtail: "↣",
RightCeiling: "⌉",
RightDoubleBracket: "⟧",
RightDownTeeVector: "⥝",
RightDownVectorBar: "⥕",
RightDownVector: "⇂",
RightFloor: "⌋",
rightharpoondown: "⇁",
rightharpoonup: "⇀",
rightleftarrows: "⇄",
rightleftharpoons: "⇌",
rightrightarrows: "⇉",
rightsquigarrow: "↝",
RightTeeArrow: "↦",
RightTee: "⊢",
RightTeeVector: "⥛",
rightthreetimes: "⋌",
RightTriangleBar: "⧐",
RightTriangle: "⊳",
RightTriangleEqual: "⊵",
RightUpDownVector: "⥏",
RightUpTeeVector: "⥜",
RightUpVectorBar: "⥔",
RightUpVector: "↾",
RightVectorBar: "⥓",
RightVector: "⇀",
ring: "˚",
risingdotseq: "≓",
rlarr: "⇄",
rlhar: "⇌",
rlm: "",
rmoustache: "⎱",
rmoust: "⎱",
rnmid: "⫮",
roang: "⟭",
roarr: "⇾",
robrk: "⟧",
ropar: "⦆",
ropf: "𝕣",
Ropf: "ℝ",
roplus: "⨮",
rotimes: "⨵",
RoundImplies: "⥰",
rpar: ")",
rpargt: "⦔",
rppolint: "⨒",
rrarr: "⇉",
Rrightarrow: "⇛",
rsaquo: "›",
rscr: "𝓇",
Rscr: "ℛ",
rsh: "↱",
Rsh: "↱",
rsqb: "]",
rsquo: "’",
rsquor: "’",
rthree: "⋌",
rtimes: "⋊",
rtri: "▹",
rtrie: "⊵",
rtrif: "▸",
rtriltri: "⧎",
RuleDelayed: "⧴",
ruluhar: "⥨",
rx: "℞",
Sacute: "Ś",
sacute: "ś",
sbquo: "‚",
scap: "⪸",
Scaron: "Š",
scaron: "š",
Sc: "⪼",
sc: "≻",
sccue: "≽",
sce: "⪰",
scE: "⪴",
Scedil: "Ş",
scedil: "ş",
Scirc: "Ŝ",
scirc: "ŝ",
scnap: "⪺",
scnE: "⪶",
scnsim: "⋩",
scpolint: "⨓",
scsim: "≿",
Scy: "С",
scy: "с",
sdotb: "⊡",
sdot: "⋅",
sdote: "⩦",
searhk: "⤥",
searr: "↘",
seArr: "⇘",
searrow: "↘",
sect: "§",
semi: ";",
seswar: "⤩",
setminus: "∖",
setmn: "∖",
sext: "✶",
Sfr: "𝔖",
sfr: "𝔰",
sfrown: "⌢",
sharp: "♯",
SHCHcy: "Щ",
shchcy: "щ",
SHcy: "Ш",
shcy: "ш",
ShortDownArrow: "↓",
ShortLeftArrow: "←",
shortmid: "∣",
shortparallel: "∥",
ShortRightArrow: "→",
ShortUpArrow: "↑",
shy: "",
Sigma: "Σ",
sigma: "σ",
sigmaf: "ς",
sigmav: "ς",
sim: "∼",
simdot: "⩪",
sime: "≃",
simeq: "≃",
simg: "⪞",
simgE: "⪠",
siml: "⪝",
simlE: "⪟",
simne: "≆",
simplus: "⨤",
simrarr: "⥲",
slarr: "←",
SmallCircle: "∘",
smallsetminus: "∖",
smashp: "⨳",
smeparsl: "⧤",
smid: "∣",
smile: "⌣",
smt: "⪪",
smte: "⪬",
smtes: "⪬︀",
SOFTcy: "Ь",
softcy: "ь",
solbar: "⌿",
solb: "⧄",
sol: "/",
Sopf: "𝕊",
sopf: "𝕤",
spades: "♠",
spadesuit: "♠",
spar: "∥",
sqcap: "⊓",
sqcaps: "⊓︀",
sqcup: "⊔",
sqcups: "⊔︀",
Sqrt: "√",
sqsub: "⊏",
sqsube: "⊑",
sqsubset: "⊏",
sqsubseteq: "⊑",
sqsup: "⊐",
sqsupe: "⊒",
sqsupset: "⊐",
sqsupseteq: "⊒",
square: "□",
Square: "□",
SquareIntersection: "⊓",
SquareSubset: "⊏",
SquareSubsetEqual: "⊑",
SquareSuperset: "⊐",
SquareSupersetEqual: "⊒",
SquareUnion: "⊔",
squarf: "▪",
squ: "□",
squf: "▪",
srarr: "→",
Sscr: "𝒮",
sscr: "𝓈",
ssetmn: "∖",
ssmile: "⌣",
sstarf: "⋆",
Star: "⋆",
star: "☆",
starf: "★",
straightepsilon: "ϵ",
straightphi: "ϕ",
strns: "¯",
sub: "⊂",
Sub: "⋐",
subdot: "⪽",
subE: "⫅",
sube: "⊆",
subedot: "⫃",
submult: "⫁",
subnE: "⫋",
subne: "⊊",
subplus: "⪿",
subrarr: "⥹",
subset: "⊂",
Subset: "⋐",
subseteq: "⊆",
subseteqq: "⫅",
SubsetEqual: "⊆",
subsetneq: "⊊",
subsetneqq: "⫋",
subsim: "⫇",
subsub: "⫕",
subsup: "⫓",
succapprox: "⪸",
succ: "≻",
succcurlyeq: "≽",
Succeeds: "≻",
SucceedsEqual: "⪰",
SucceedsSlantEqual: "≽",
SucceedsTilde: "≿",
succeq: "⪰",
succnapprox: "⪺",
succneqq: "⪶",
succnsim: "⋩",
succsim: "≿",
SuchThat: "∋",
sum: "∑",
Sum: "∑",
sung: "♪",
sup1: "¹",
sup2: "²",
sup3: "³",
sup: "⊃",
Sup: "⋑",
supdot: "⪾",
supdsub: "⫘",
supE: "⫆",
supe: "⊇",
supedot: "⫄",
Superset: "⊃",
SupersetEqual: "⊇",
suphsol: "⟉",
suphsub: "⫗",
suplarr: "⥻",
supmult: "⫂",
supnE: "⫌",
supne: "⊋",
supplus: "⫀",
supset: "⊃",
Supset: "⋑",
supseteq: "⊇",
supseteqq: "⫆",
supsetneq: "⊋",
supsetneqq: "⫌",
supsim: "⫈",
supsub: "⫔",
supsup: "⫖",
swarhk: "⤦",
swarr: "↙",
swArr: "⇙",
swarrow: "↙",
swnwar: "⤪",
szlig: "ß",
Tab: " ",
target: "⌖",
Tau: "Τ",
tau: "τ",
tbrk: "⎴",
Tcaron: "Ť",
tcaron: "ť",
Tcedil: "Ţ",
tcedil: "ţ",
Tcy: "Т",
tcy: "т",
tdot: "⃛",
telrec: "⌕",
Tfr: "𝔗",
tfr: "𝔱",
there4: "∴",
therefore: "∴",
Therefore: "∴",
Theta: "Θ",
theta: "θ",
thetasym: "ϑ",
thetav: "ϑ",
thickapprox: "≈",
thicksim: "∼",
ThickSpace: " ",
ThinSpace: " ",
thinsp: " ",
thkap: "≈",
thksim: "∼",
THORN: "Þ",
thorn: "þ",
tilde: "˜",
Tilde: "∼",
TildeEqual: "≃",
TildeFullEqual: "≅",
TildeTilde: "≈",
timesbar: "⨱",
timesb: "⊠",
times: "×",
timesd: "⨰",
tint: "∭",
toea: "⤨",
topbot: "⌶",
topcir: "⫱",
top: "⊤",
Topf: "𝕋",
topf: "𝕥",
topfork: "⫚",
tosa: "⤩",
tprime: "‴",
trade: "™",
TRADE: "™",
triangle: "▵",
triangledown: "▿",
triangleleft: "◃",
trianglelefteq: "⊴",
triangleq: "≜",
triangleright: "▹",
trianglerighteq: "⊵",
tridot: "◬",
trie: "≜",
triminus: "⨺",
TripleDot: "⃛",
triplus: "⨹",
trisb: "⧍",
tritime: "⨻",
trpezium: "⏢",
Tscr: "𝒯",
tscr: "𝓉",
TScy: "Ц",
tscy: "ц",
TSHcy: "Ћ",
tshcy: "ћ",
Tstrok: "Ŧ",
tstrok: "ŧ",
twixt: "≬",
twoheadleftarrow: "↞",
twoheadrightarrow: "↠",
Uacute: "Ú",
uacute: "ú",
uarr: "↑",
Uarr: "↟",
uArr: "⇑",
Uarrocir: "⥉",
Ubrcy: "Ў",
ubrcy: "ў",
Ubreve: "Ŭ",
ubreve: "ŭ",
Ucirc: "Û",
ucirc: "û",
Ucy: "У",
ucy: "у",
udarr: "⇅",
Udblac: "Ű",
udblac: "ű",
udhar: "⥮",
ufisht: "⥾",
Ufr: "𝔘",
ufr: "𝔲",
Ugrave: "Ù",
ugrave: "ù",
uHar: "⥣",
uharl: "↿",
uharr: "↾",
uhblk: "▀",
ulcorn: "⌜",
ulcorner: "⌜",
ulcrop: "⌏",
ultri: "◸",
Umacr: "Ū",
umacr: "ū",
uml: "¨",
UnderBar: "_",
UnderBrace: "⏟",
UnderBracket: "⎵",
UnderParenthesis: "⏝",
Union: "⋃",
UnionPlus: "⊎",
Uogon: "Ų",
uogon: "ų",
Uopf: "𝕌",
uopf: "𝕦",
UpArrowBar: "⤒",
uparrow: "↑",
UpArrow: "↑",
Uparrow: "⇑",
UpArrowDownArrow: "⇅",
updownarrow: "↕",
UpDownArrow: "↕",
Updownarrow: "⇕",
UpEquilibrium: "⥮",
upharpoonleft: "↿",
upharpoonright: "↾",
uplus: "⊎",
UpperLeftArrow: "↖",
UpperRightArrow: "↗",
upsi: "υ",
Upsi: "ϒ",
upsih: "ϒ",
Upsilon: "Υ",
upsilon: "υ",
UpTeeArrow: "↥",
UpTee: "⊥",
upuparrows: "⇈",
urcorn: "⌝",
urcorner: "⌝",
urcrop: "⌎",
Uring: "Ů",
uring: "ů",
urtri: "◹",
Uscr: "𝒰",
uscr: "𝓊",
utdot: "⋰",
Utilde: "Ũ",
utilde: "ũ",
utri: "▵",
utrif: "▴",
uuarr: "⇈",
Uuml: "Ü",
uuml: "ü",
uwangle: "⦧",
vangrt: "⦜",
varepsilon: "ϵ",
varkappa: "ϰ",
varnothing: "∅",
varphi: "ϕ",
varpi: "ϖ",
varpropto: "∝",
varr: "↕",
vArr: "⇕",
varrho: "ϱ",
varsigma: "ς",
varsubsetneq: "⊊︀",
varsubsetneqq: "⫋︀",
varsupsetneq: "⊋︀",
varsupsetneqq: "⫌︀",
vartheta: "ϑ",
vartriangleleft: "⊲",
vartriangleright: "⊳",
vBar: "⫨",
Vbar: "⫫",
vBarv: "⫩",
Vcy: "В",
vcy: "в",
vdash: "⊢",
vDash: "⊨",
Vdash: "⊩",
VDash: "⊫",
Vdashl: "⫦",
veebar: "⊻",
vee: "∨",
Vee: "⋁",
veeeq: "≚",
vellip: "⋮",
verbar: "|",
Verbar: "‖",
vert: "|",
Vert: "‖",
VerticalBar: "∣",
VerticalLine: "|",
VerticalSeparator: "❘",
VerticalTilde: "≀",
VeryThinSpace: " ",
Vfr: "𝔙",
vfr: "𝔳",
vltri: "⊲",
vnsub: "⊂⃒",
vnsup: "⊃⃒",
Vopf: "𝕍",
vopf: "𝕧",
vprop: "∝",
vrtri: "⊳",
Vscr: "𝒱",
vscr: "𝓋",
vsubnE: "⫋︀",
vsubne: "⊊︀",
vsupnE: "⫌︀",
vsupne: "⊋︀",
Vvdash: "⊪",
vzigzag: "⦚",
Wcirc: "Ŵ",
wcirc: "ŵ",
wedbar: "⩟",
wedge: "∧",
Wedge: "⋀",
wedgeq: "≙",
weierp: "℘",
Wfr: "𝔚",
wfr: "𝔴",
Wopf: "𝕎",
wopf: "𝕨",
wp: "℘",
wr: "≀",
wreath: "≀",
Wscr: "𝒲",
wscr: "𝓌",
xcap: "⋂",
xcirc: "◯",
xcup: "⋃",
xdtri: "▽",
Xfr: "𝔛",
xfr: "𝔵",
xharr: "⟷",
xhArr: "⟺",
Xi: "Ξ",
xi: "ξ",
xlarr: "⟵",
xlArr: "⟸",
xmap: "⟼",
xnis: "⋻",
xodot: "⨀",
Xopf: "𝕏",
xopf: "𝕩",
xoplus: "⨁",
xotime: "⨂",
xrarr: "⟶",
xrArr: "⟹",
Xscr: "𝒳",
xscr: "𝓍",
xsqcup: "⨆",
xuplus: "⨄",
xutri: "△",
xvee: "⋁",
xwedge: "⋀",
Yacute: "Ý",
yacute: "ý",
YAcy: "Я",
yacy: "я",
Ycirc: "Ŷ",
ycirc: "ŷ",
Ycy: "Ы",
ycy: "ы",
yen: "¥",
Yfr: "𝔜",
yfr: "𝔶",
YIcy: "Ї",
yicy: "ї",
Yopf: "𝕐",
yopf: "𝕪",
Yscr: "𝒴",
yscr: "𝓎",
YUcy: "Ю",
yucy: "ю",
yuml: "ÿ",
Yuml: "Ÿ",
Zacute: "Ź",
zacute: "ź",
Zcaron: "Ž",
zcaron: "ž",
Zcy: "З",
zcy: "з",
Zdot: "Ż",
zdot: "ż",
zeetrf: "ℨ",
ZeroWidthSpace: "",
Zeta: "Ζ",
zeta: "ζ",
zfr: "𝔷",
Zfr: "ℨ",
ZHcy: "Ж",
zhcy: "ж",
zigrarr: "⇝",
zopf: "𝕫",
Zopf: "ℤ",
Zscr: "𝒵",
zscr: "𝓏",
zwj: "",
zwnj: ""
}
}
, {}],
54: [function(e, r, t) {
"use strict";
function n(e) {
var r = Array.prototype.slice.call(arguments, 1);
return r.forEach(function(r) {
r && Object.keys(r).forEach(function(t) {
e[t] = r[t]
})
}),
e
}
function s(e) {
return Object.prototype.toString.call(e)
}
function o(e) {
return "[object String]" === s(e)
}
function i(e) {
return "[object Object]" === s(e)
}
function a(e) {
return "[object RegExp]" === s(e)
}
function c(e) {
return "[object Function]" === s(e)
}
function l(e) {
return e.replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
}
function u(e) {
return Object.keys(e || {}).reduce(function(e, r) {
return e || k.hasOwnProperty(r)
}, !1)
}
function p(e) {
e.__index__ = -1,
e.__text_cache__ = ""
}
function h(e) {
return function(r, t) {
var n = r.slice(t);
return e.test(n) ? n.match(e)[0].length : 0
}
}
function f() {
return function(e, r) {
r.normalize(e)
}
}
function d(r) {
function t(e) {
return e.replace("%TLDS%", s.src_tlds)
}
function n(e, r) {
throw new Error('(LinkifyIt) Invalid schema "' + e + '": ' + r)
}
var s = r.re = e("./lib/re")(r.__opts__)
, u = r.__tlds__.slice();
r.onCompile(),
r.__tlds_replaced__ || u.push(v),
u.push(s.src_xn),
s.src_tlds = u.join("|"),
s.email_fuzzy = RegExp(t(s.tpl_email_fuzzy), "i"),
s.link_fuzzy = RegExp(t(s.tpl_link_fuzzy), "i"),
s.link_no_ip_fuzzy = RegExp(t(s.tpl_link_no_ip_fuzzy), "i"),
s.host_fuzzy_test = RegExp(t(s.tpl_host_fuzzy_test), "i");
var d = [];
r.__compiled__ = {},
Object.keys(r.__schemas__).forEach(function(e) {
var t = r.__schemas__[e];
if (null !== t) {
var s = {
validate: null,
link: null
};
return r.__compiled__[e] = s,
i(t) ? (a(t.validate) ? s.validate = h(t.validate) : c(t.validate) ? s.validate = t.validate : n(e, t),
void (c(t.normalize) ? s.normalize = t.normalize : t.normalize ? n(e, t) : s.normalize = f())) : o(t) ? void d.push(e) : void n(e, t)
}
}),
d.forEach(function(e) {
r.__compiled__[r.__schemas__[e]] && (r.__compiled__[e].validate = r.__compiled__[r.__schemas__[e]].validate,
r.__compiled__[e].normalize = r.__compiled__[r.__schemas__[e]].normalize)
}),
r.__compiled__[""] = {
validate: null,
normalize: f()
};
var m = Object.keys(r.__compiled__).filter(function(e) {
return e.length > 0 && r.__compiled__[e]
}).map(l).join("|");
r.re.schema_test = RegExp("(^|(?!_)(?:[><]|" + s.src_ZPCc + "))(" + m + ")", "i"),
r.re.schema_search = RegExp("(^|(?!_)(?:[><]|" + s.src_ZPCc + "))(" + m + ")", "ig"),
r.re.pretest = RegExp("(" + r.re.schema_test.source + ")|(" + r.re.host_fuzzy_test.source + ")|@", "i"),
p(r)
}
function m(e, r) {
var t = e.__index__
, n = e.__last_index__
, s = e.__text_cache__.slice(t, n);
this.schema = e.__schema__.toLowerCase(),
this.index = t + r,
this.lastIndex = n + r,
this.raw = s,
this.text = s,
this.url = s
}
function _(e, r) {
var t = new m(e,r);
return e.__compiled__[t.schema].normalize(t, e),
t
}
function g(e, r) {
return this instanceof g ? (r || u(e) && (r = e,
e = {}),
this.__opts__ = n({}, k, r),
this.__index__ = -1,
this.__last_index__ = -1,
this.__schema__ = "",
this.__text_cache__ = "",
this.__schemas__ = n({}, b, e),
this.__compiled__ = {},
this.__tlds__ = x,
this.__tlds_replaced__ = !1,
this.re = {},
void d(this)) : new g(e,r)
}
var k = {
fuzzyLink: !0,
fuzzyEmail: !0,
fuzzyIP: !1
}
, b = {
"http:": {
validate: function(e, r, t) {
var n = e.slice(r);
return t.re.http || (t.re.http = new RegExp("^\\/\\/" + t.re.src_auth + t.re.src_host_port_strict + t.re.src_path,"i")),
t.re.http.test(n) ? n.match(t.re.http)[0].length : 0
}
},
"https:": "http:",
"ftp:": "http:",
"//": {
validate: function(e, r, t) {
var n = e.slice(r);
return t.re.no_http || (t.re.no_http = new RegExp("^" + t.re.src_auth + "(?:localhost|(?:(?:" + t.re.src_domain + ")\\.)+" + t.re.src_domain_root + ")" + t.re.src_port + t.re.src_host_terminator + t.re.src_path,"i")),
t.re.no_http.test(n) ? r >= 3 && ":" === e[r - 3] ? 0 : r >= 3 && "/" === e[r - 3] ? 0 : n.match(t.re.no_http)[0].length : 0
}
},
"mailto:": {
validate: function(e, r, t) {
var n = e.slice(r);
return t.re.mailto || (t.re.mailto = new RegExp("^" + t.re.src_email_name + "@" + t.re.src_host_strict,"i")),
t.re.mailto.test(n) ? n.match(t.re.mailto)[0].length : 0
}
}
}
, v = "a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"
, x = "biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|рф".split("|");
g.prototype.add = function(e, r) {
return this.__schemas__[e] = r,
d(this),
this
}
,
g.prototype.set = function(e) {
return this.__opts__ = n(this.__opts__, e),
this
}
,
g.prototype.test = function(e) {
if (this.__text_cache__ = e,
this.__index__ = -1,
!e.length)
return !1;
var r, t, n, s, o, i, a, c, l;
if (this.re.schema_test.test(e))
for (a = this.re.schema_search,
a.lastIndex = 0; null !== (r = a.exec(e)); )
if (s = this.testSchemaAt(e, r[2], a.lastIndex)) {
this.__schema__ = r[2],
this.__index__ = r.index + r[1].length,
this.__last_index__ = r.index + r[0].length + s;
break
}
return this.__opts__.fuzzyLink && this.__compiled__["http:"] && (c = e.search(this.re.host_fuzzy_test),
c >= 0 && (this.__index__ < 0 || c < this.__index__) && null !== (t = e.match(this.__opts__.fuzzyIP ? this.re.link_fuzzy : this.re.link_no_ip_fuzzy)) && (o = t.index + t[1].length,
(this.__index__ < 0 || o < this.__index__) && (this.__schema__ = "",
this.__index__ = o,
this.__last_index__ = t.index + t[0].length))),
this.__opts__.fuzzyEmail && this.__compiled__["mailto:"] && (l = e.indexOf("@"),
l >= 0 && null !== (n = e.match(this.re.email_fuzzy)) && (o = n.index + n[1].length,
i = n.index + n[0].length,
(this.__index__ < 0 || o < this.__index__ || o === this.__index__ && i > this.__last_index__) && (this.__schema__ = "mailto:",
this.__index__ = o,
this.__last_index__ = i))),
this.__index__ >= 0
}
,
g.prototype.pretest = function(e) {
return this.re.pretest.test(e)
}
,
g.prototype.testSchemaAt = function(e, r, t) {
return this.__compiled__[r.toLowerCase()] ? this.__compiled__[r.toLowerCase()].validate(e, t, this) : 0
}
,
g.prototype.match = function(e) {
var r = 0
, t = [];
this.__index__ >= 0 && this.__text_cache__ === e && (t.push(_(this, r)),
r = this.__last_index__);
for (var n = r ? e.slice(r) : e; this.test(n); )
t.push(_(this, r)),
n = n.slice(this.__last_index__),
r += this.__last_index__;
return t.length ? t : null
}
,
g.prototype.tlds = function(e, r) {
return e = Array.isArray(e) ? e : [e],
r ? (this.__tlds__ = this.__tlds__.concat(e).sort().filter(function(e, r, t) {
return e !== t[r - 1]
}).reverse(),
d(this),
this) : (this.__tlds__ = e.slice(),
this.__tlds_replaced__ = !0,
d(this),
this)
}
,
g.prototype.normalize = function(e) {
e.schema || (e.url = "http://" + e.url),
"mailto:" !== e.schema || /^mailto:/i.test(e.url) || (e.url = "mailto:" + e.url)
}
,
g.prototype.onCompile = function() {}
,
r.exports = g
}
, {
"./lib/re": 55
}],
55: [function(e, r, t) {
"use strict";
r.exports = function(r) {
var t = {};
return t.src_Any = e("uc.micro/properties/Any/regex").source,
t.src_Cc = e("uc.micro/categories/Cc/regex").source,
t.src_Z = e("uc.micro/categories/Z/regex").source,
t.src_P = e("uc.micro/categories/P/regex").source,
t.src_ZPCc = [t.src_Z, t.src_P, t.src_Cc].join("|"),
t.src_ZCc = [t.src_Z, t.src_Cc].join("|"),
t.src_pseudo_letter = "(?:(?!>|<|" + t.src_ZPCc + ")" + t.src_Any + ")",
t.src_ip4 = "(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",
t.src_auth = "(?:(?:(?!" + t.src_ZCc + "|[@/]).)+@)?",
t.src_port = "(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",
t.src_host_terminator = "(?=$|>|<|" + t.src_ZPCc + ")(?!-|_|:\\d|\\.-|\\.(?!$|" + t.src_ZPCc + "))",
t.src_path = "(?:[/?#](?:(?!" + t.src_ZCc + "|[()[\\]{}.,\"'?!\\-<>]).|\\[(?:(?!" + t.src_ZCc + "|\\]).)*\\]|\\((?:(?!" + t.src_ZCc + "|[)]).)*\\)|\\{(?:(?!" + t.src_ZCc + '|[}]).)*\\}|\\"(?:(?!' + t.src_ZCc + '|["]).)+\\"|\\\'(?:(?!' + t.src_ZCc + "|[']).)+\\'|\\'(?=" + t.src_pseudo_letter + "|[-]).|\\.{2,3}[a-zA-Z0-9%/]|\\.(?!" + t.src_ZCc + "|[.]).|" + (r && r["---"] ? "\\-(?!--(?:[^-]|$))(?:-*)|" : "\\-+|") + "\\,(?!" + t.src_ZCc + ").|\\!(?!" + t.src_ZCc + "|[!]).|\\?(?!" + t.src_ZCc + "|[?]).)+|\\/)?",
t.src_email_name = '[\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]+',
t.src_xn = "xn--[a-z0-9\\-]{1,59}",
t.src_domain_root = "(?:" + t.src_xn + "|" + t.src_pseudo_letter + "{1,63})",
t.src_domain = "(?:" + t.src_xn + "|(?:" + t.src_pseudo_letter + ")|(?:" + t.src_pseudo_letter + "(?:-(?!-)|" + t.src_pseudo_letter + "){0,61}" + t.src_pseudo_letter + "))",
t.src_host = "(?:(?:(?:(?:" + t.src_domain + ")\\.)*" + t.src_domain_root + "))",
t.tpl_host_fuzzy = "(?:" + t.src_ip4 + "|(?:(?:(?:" + t.src_domain + ")\\.)+(?:%TLDS%)))",
t.tpl_host_no_ip_fuzzy = "(?:(?:(?:" + t.src_domain + ")\\.)+(?:%TLDS%))",
t.src_host_strict = t.src_host + t.src_host_terminator,
t.tpl_host_fuzzy_strict = t.tpl_host_fuzzy + t.src_host_terminator,
t.src_host_port_strict = t.src_host + t.src_port + t.src_host_terminator,
t.tpl_host_port_fuzzy_strict = t.tpl_host_fuzzy + t.src_port + t.src_host_terminator,
t.tpl_host_port_no_ip_fuzzy_strict = t.tpl_host_no_ip_fuzzy + t.src_port + t.src_host_terminator,
t.tpl_host_fuzzy_test = "localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:" + t.src_ZPCc + "|>|$))",
t.tpl_email_fuzzy = "(^|<|>|\\(|" + t.src_ZCc + ")(" + t.src_email_name + "@" + t.tpl_host_fuzzy_strict + ")",
t.tpl_link_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|]|" + t.src_ZPCc + "))((?![$+<=>^`|])" + t.tpl_host_port_fuzzy_strict + t.src_path + ")",
t.tpl_link_no_ip_fuzzy = "(^|(?![.:/\\-_@])(?:[$+<=>^`|]|" + t.src_ZPCc + "))((?![$+<=>^`|])" + t.tpl_host_port_no_ip_fuzzy_strict + t.src_path + ")",
t
}
}
, {
"uc.micro/categories/Cc/regex": 61,
"uc.micro/categories/P/regex": 63,
"uc.micro/categories/Z/regex": 64,
"uc.micro/properties/Any/regex": 66
}],
56: [function(e, r, t) {
"use strict";
function n(e) {
var r, t, n = o[e];
if (n)
return n;
for (n = o[e] = [],
r = 0; r < 128; r++)
t = String.fromCharCode(r),
n.push(t);
for (r = 0; r < e.length; r++)
t = e.charCodeAt(r),
n[t] = "%" + ("0" + t.toString(16).toUpperCase()).slice(-2);
return n
}
function s(e, r) {
var t;
return "string" != typeof r && (r = s.defaultChars),
t = n(r),
e.replace(/(%[a-f0-9]{2})+/gi, function(e) {
var r, n, s, o, i, a, c, l = "";
for (r = 0,
n = e.length; r < n; r += 3)
s = parseInt(e.slice(r + 1, r + 3), 16),
s < 128 ? l += t[s] : 192 === (224 & s) && r + 3 < n && (o = parseInt(e.slice(r + 4, r + 6), 16),
128 === (192 & o)) ? (c = s << 6 & 1984 | 63 & o,
l += c < 128 ? "��" : String.fromCharCode(c),
r += 3) : 224 === (240 & s) && r + 6 < n && (o = parseInt(e.slice(r + 4, r + 6), 16),
i = parseInt(e.slice(r + 7, r + 9), 16),
128 === (192 & o) && 128 === (192 & i)) ? (c = s << 12 & 61440 | o << 6 & 4032 | 63 & i,
l += c < 2048 || c >= 55296 && c <= 57343 ? "���" : String.fromCharCode(c),
r += 6) : 240 === (248 & s) && r + 9 < n && (o = parseInt(e.slice(r + 4, r + 6), 16),
i = parseInt(e.slice(r + 7, r + 9), 16),
a = parseInt(e.slice(r + 10, r + 12), 16),
128 === (192 & o) && 128 === (192 & i) && 128 === (192 & a)) ? (c = s << 18 & 1835008 | o << 12 & 258048 | i << 6 & 4032 | 63 & a,
c < 65536 || c > 1114111 ? l += "����" : (c -= 65536,
l += String.fromCharCode(55296 + (c >> 10), 56320 + (1023 & c))),
r += 9) : l += "�";
return l
})
}
var o = {};
s.defaultChars = ";/?:@&=+$,#",
s.componentChars = "",
r.exports = s
}
, {}],
57: [function(e, r, t) {
"use strict";
function n(e) {
var r, t, n = o[e];
if (n)
return n;
for (n = o[e] = [],
r = 0; r < 128; r++)
t = String.fromCharCode(r),
/^[0-9a-z]$/i.test(t) ? n.push(t) : n.push("%" + ("0" + r.toString(16).toUpperCase()).slice(-2));
for (r = 0; r < e.length; r++)
n[e.charCodeAt(r)] = e[r];
return n
}
function s(e, r, t) {
var o, i, a, c, l, u = "";
for ("string" != typeof r && (t = r,
r = s.defaultChars),
"undefined" == typeof t && (t = !0),
l = n(r),
o = 0,
i = e.length; o < i; o++)
if (a = e.charCodeAt(o),
t && 37 === a && o + 2 < i && /^[0-9a-f]{2}$/i.test(e.slice(o + 1, o + 3)))
u += e.slice(o, o + 3),
o += 2;
else if (a < 128)
u += l[a];
else if (a >= 55296 && a <= 57343) {
if (a >= 55296 && a <= 56319 && o + 1 < i && (c = e.charCodeAt(o + 1),
c >= 56320 && c <= 57343)) {
u += encodeURIComponent(e[o] + e[o + 1]),
o++;
continue
}
u += "%EF%BF%BD"
} else
u += encodeURIComponent(e[o]);
return u
}
var o = {};
s.defaultChars = ";/?:@&=+$,-_.!~*'()#",
s.componentChars = "-_.!~*'()",
r.exports = s
}
, {}],
58: [function(e, r, t) {
"use strict";
r.exports = function(e) {
var r = "";
return r += e.protocol || "",
r += e.slashes ? "//" : "",
r += e.auth ? e.auth + "@" : "",
r += e.hostname && e.hostname.indexOf(":") !== -1 ? "[" + e.hostname + "]" : e.hostname || "",
r += e.port ? ":" + e.port : "",
r += e.pathname || "",
r += e.search || "",
r += e.hash || ""
}
}
, {}],
59: [function(e, r, t) {
"use strict";
r.exports.encode = e("./encode"),
r.exports.decode = e("./decode"),
r.exports.format = e("./format"),
r.exports.parse = e("./parse")
}
, {
"./decode": 56,
"./encode": 57,
"./format": 58,
"./parse": 60
}],
60: [function(e, r, t) {
"use strict";
function n() {
this.protocol = null,
this.slashes = null,
this.auth = null,
this.port = null,
this.hostname = null,
this.hash = null,
this.search = null,
this.pathname = null
}
function s(e, r) {
if (e && e instanceof n)
return e;
var t = new n;
return t.parse(e, r),
t
}
var o = /^([a-z0-9.+-]+:)/i
, i = /:[0-9]*$/
, a = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/
, c = ["<", ">", '"', "`", " ", "\r", "\n", " "]
, l = ["{", "}", "|", "\\", "^", "`"].concat(c)
, u = ["'"].concat(l)
, p = ["%", "/", "?", ";", "#"].concat(u)
, h = ["/", "?", "#"]
, f = 255
, d = /^[+a-z0-9A-Z_-]{0,63}$/
, m = /^([+a-z0-9A-Z_-]{0,63})(.*)$/
, _ = {
javascript: !0,
"javascript:": !0
}
, g = {
http: !0,
https: !0,
ftp: !0,
gopher: !0,
file: !0,
"http:": !0,
"https:": !0,
"ftp:": !0,
"gopher:": !0,
"file:": !0
};
n.prototype.parse = function(e, r) {
var t, n, s, i, c, l = e;
if (l = l.trim(),
!r && 1 === e.split("#").length) {
var u = a.exec(l);
if (u)
return this.pathname = u[1],
u[2] && (this.search = u[2]),
this
}
var k = o.exec(l);
if (k && (k = k[0],
s = k.toLowerCase(),
this.protocol = k,
l = l.substr(k.length)),
(r || k || l.match(/^\/\/[^@\/]+@[^@\/]+/)) && (c = "//" === l.substr(0, 2),
!c || k && _[k] || (l = l.substr(2),
this.slashes = !0)),
!_[k] && (c || k && !g[k])) {
var b = -1;
for (t = 0; t < h.length; t++)
i = l.indexOf(h[t]),
i !== -1 && (b === -1 || i < b) && (b = i);
var v, x;
for (x = b === -1 ? l.lastIndexOf("@") : l.lastIndexOf("@", b),
x !== -1 && (v = l.slice(0, x),
l = l.slice(x + 1),
this.auth = v),
b = -1,
t = 0; t < p.length; t++)
i = l.indexOf(p[t]),
i !== -1 && (b === -1 || i < b) && (b = i);
b === -1 && (b = l.length),
":" === l[b - 1] && b--;
var y = l.slice(0, b);
l = l.slice(b),
this.parseHost(y),
this.hostname = this.hostname || "";
var C = "[" === this.hostname[0] && "]" === this.hostname[this.hostname.length - 1];
if (!C) {
var A = this.hostname.split(/\./);
for (t = 0,
n = A.length; t < n; t++) {
var w = A[t];
if (w && !w.match(d)) {
for (var D = "", q = 0, E = w.length; q < E; q++)
D += w.charCodeAt(q) > 127 ? "x" : w[q];
if (!D.match(d)) {
var S = A.slice(0, t)
, F = A.slice(t + 1)
, z = w.match(m);
z && (S.push(z[1]),
F.unshift(z[2])),
F.length && (l = F.join(".") + l),
this.hostname = S.join(".");
break
}
}
}
}
this.hostname.length > f && (this.hostname = ""),
C && (this.hostname = this.hostname.substr(1, this.hostname.length - 2))
}
var L = l.indexOf("#");
L !== -1 && (this.hash = l.substr(L),
l = l.slice(0, L));
var T = l.indexOf("?");
return T !== -1 && (this.search = l.substr(T),
l = l.slice(0, T)),
l && (this.pathname = l),
g[s] && this.hostname && !this.pathname && (this.pathname = ""),
this
}
,
n.prototype.parseHost = function(e) {
var r = i.exec(e);
r && (r = r[0],
":" !== r && (this.port = r.substr(1)),
e = e.substr(0, e.length - r.length)),
e && (this.hostname = e)
}
,
r.exports = s
}
, {}],
61: [function(e, r, t) {
r.exports = /[\0-\x1F\x7F-\x9F]/
}
, {}],
62: [function(e, r, t) {
r.exports = /[\xAD\u0600-\u0605\u061C\u06DD\u070F\u180E\u200B-\u200F\u202A-\u202E\u2060-\u2064\u2066-\u206F\uFEFF\uFFF9-\uFFFB]|\uD804\uDCBD|\uD82F[\uDCA0-\uDCA3]|\uD834[\uDD73-\uDD7A]|\uDB40[\uDC01\uDC20-\uDC7F]/
}
, {}],
63: [function(e, r, t) {
r.exports = /[!-#%-\*,-\/:;\?@\[-\]_\{\}\xA1\xA7\xAB\xB6\xB7\xBB\xBF\u037E\u0387\u055A-\u055F\u0589\u058A\u05BE\u05C0\u05C3\u05C6\u05F3\u05F4\u0609\u060A\u060C\u060D\u061B\u061E\u061F\u066A-\u066D\u06D4\u0700-\u070D\u07F7-\u07F9\u0830-\u083E\u085E\u0964\u0965\u0970\u0AF0\u0DF4\u0E4F\u0E5A\u0E5B\u0F04-\u0F12\u0F14\u0F3A-\u0F3D\u0F85\u0FD0-\u0FD4\u0FD9\u0FDA\u104A-\u104F\u10FB\u1360-\u1368\u1400\u166D\u166E\u169B\u169C\u16EB-\u16ED\u1735\u1736\u17D4-\u17D6\u17D8-\u17DA\u1800-\u180A\u1944\u1945\u1A1E\u1A1F\u1AA0-\u1AA6\u1AA8-\u1AAD\u1B5A-\u1B60\u1BFC-\u1BFF\u1C3B-\u1C3F\u1C7E\u1C7F\u1CC0-\u1CC7\u1CD3\u2010-\u2027\u2030-\u2043\u2045-\u2051\u2053-\u205E\u207D\u207E\u208D\u208E\u2308-\u230B\u2329\u232A\u2768-\u2775\u27C5\u27C6\u27E6-\u27EF\u2983-\u2998\u29D8-\u29DB\u29FC\u29FD\u2CF9-\u2CFC\u2CFE\u2CFF\u2D70\u2E00-\u2E2E\u2E30-\u2E42\u3001-\u3003\u3008-\u3011\u3014-\u301F\u3030\u303D\u30A0\u30FB\uA4FE\uA4FF\uA60D-\uA60F\uA673\uA67E\uA6F2-\uA6F7\uA874-\uA877\uA8CE\uA8CF\uA8F8-\uA8FA\uA8FC\uA92E\uA92F\uA95F\uA9C1-\uA9CD\uA9DE\uA9DF\uAA5C-\uAA5F\uAADE\uAADF\uAAF0\uAAF1\uABEB\uFD3E\uFD3F\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE61\uFE63\uFE68\uFE6A\uFE6B\uFF01-\uFF03\uFF05-\uFF0A\uFF0C-\uFF0F\uFF1A\uFF1B\uFF1F\uFF20\uFF3B-\uFF3D\uFF3F\uFF5B\uFF5D\uFF5F-\uFF65]|\uD800[\uDD00-\uDD02\uDF9F\uDFD0]|\uD801\uDD6F|\uD802[\uDC57\uDD1F\uDD3F\uDE50-\uDE58\uDE7F\uDEF0-\uDEF6\uDF39-\uDF3F\uDF99-\uDF9C]|\uD804[\uDC47-\uDC4D\uDCBB\uDCBC\uDCBE-\uDCC1\uDD40-\uDD43\uDD74\uDD75\uDDC5-\uDDC9\uDDCD\uDDDB\uDDDD-\uDDDF\uDE38-\uDE3D\uDEA9]|\uD805[\uDCC6\uDDC1-\uDDD7\uDE41-\uDE43\uDF3C-\uDF3E]|\uD809[\uDC70-\uDC74]|\uD81A[\uDE6E\uDE6F\uDEF5\uDF37-\uDF3B\uDF44]|\uD82F\uDC9F|\uD836[\uDE87-\uDE8B]/
}
, {}],
64: [function(e, r, t) {
r.exports = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/
}
, {}],
65: [function(e, r, t) {
r.exports.Any = e("./properties/Any/regex"),
r.exports.Cc = e("./categories/Cc/regex"),
r.exports.Cf = e("./categories/Cf/regex"),
r.exports.P = e("./categories/P/regex"),
r.exports.Z = e("./categories/Z/regex")
}
, {
"./categories/Cc/regex": 61,
"./categories/Cf/regex": 62,
"./categories/P/regex": 63,
"./categories/Z/regex": 64,
"./properties/Any/regex": 66
}],
66: [function(e, r, t) {
r.exports = /[\0-\uD7FF\uE000-\uFFFF]|[\uD800-\uDBFF][\uDC00-\uDFFF]|[\uD800-\uDBFF](?![\uDC00-\uDFFF])|(?:[^\uD800-\uDBFF]|^)[\uDC00-\uDFFF]/
}
, {}],
67: [function(e, r, t) {
"use strict";
r.exports = e("./lib/")
}
, {
"./lib/": 9
}]
}, {}, [67])(67)
});
define("Core/KnockoutMarkdownBinding", ["markdown-it-sanitizer", "markdown-it"], function(MarkdownItSanitizer, MarkdownIt) {
"use strict";
var htmlTagRegex = /(.|\s)*<\/html>/im;
var md = new MarkdownIt({
html: true,
linkify: true
});
md.use(MarkdownItSanitizer, {
imageClass: "",
removeUnbalanced: false,
removeUnknown: false
});
var KnockoutMarkdownBinding = {
register: function(Knockout) {
Knockout.bindingHandlers.markdown = {
init: function() {
return {
controlsDescendantBindings: true
}
},
update: function(element, valueAccessor) {
while (element.firstChild) {
Knockout.removeNode(element.firstChild)
}
var rawText = Knockout.unwrap(valueAccessor());
var html;
if (htmlTagRegex.test(rawText)) {
html = rawText
} else {
html = md.render(rawText)
}
var nodes = Knockout.utils.parseHtmlFragment(html, element);
element.className = element.className + " markdown";
for (var i = 0; i < nodes.length; ++i) {
var node = nodes[i];
setAnchorTargets(node);
element.appendChild(node)
}
}
}
}
};
function setAnchorTargets(element) {
if (element instanceof HTMLAnchorElement) {
element.target = "_blank"
}
if (element.childNodes && element.childNodes.length > 0) {
for (var i = 0; i < element.childNodes.length; ++i) {
setAnchorTargets(element.childNodes[i])
}
}
}
return KnockoutMarkdownBinding
});
!function(a, b, c, d) {
"use strict";
function e(a, b, c) {
return setTimeout(j(a, c), b)
}
function f(a, b, c) {
return Array.isArray(a) ? (g(a, c[b], c),
!0) : !1
}
function g(a, b, c) {
var e;
if (a)
if (a.forEach)
a.forEach(b, c);
else if (a.length !== d)
for (e = 0; e < a.length; )
b.call(c, a[e], e, a),
e++;
else
for (e in a)
a.hasOwnProperty(e) && b.call(c, a[e], e, a)
}
function h(b, c, d) {
var e = "DEPRECATED METHOD: " + c + "\n" + d + " AT \n";
return function() {
var c = new Error("get-stack-trace")
, d = c && c.stack ? c.stack.replace(/^[^\(]+?[\n$]/gm, "").replace(/^\s+at\s+/gm, "").replace(/^Object.\s*\(/gm, "{anonymous}()@") : "Unknown Stack Trace"
, f = a.console && (a.console.warn || a.console.log);
return f && f.call(a.console, e, d),
b.apply(this, arguments)
}
}
function i(a, b, c) {
var d, e = b.prototype;
d = a.prototype = Object.create(e),
d.constructor = a,
d._super = e,
c && la(d, c)
}
function j(a, b) {
return function() {
return a.apply(b, arguments)
}
}
function k(a, b) {
return typeof a == oa ? a.apply(b ? b[0] || d : d, b) : a
}
function l(a, b) {
return a === d ? b : a
}
function m(a, b, c) {
g(q(b), function(b) {
a.addEventListener(b, c, !1)
})
}
function n(a, b, c) {
g(q(b), function(b) {
a.removeEventListener(b, c, !1)
})
}
function o(a, b) {
for (; a; ) {
if (a == b)
return !0;
a = a.parentNode
}
return !1
}
function p(a, b) {
return a.indexOf(b) > -1
}
function q(a) {
return a.trim().split(/\s+/g)
}
function r(a, b, c) {
if (a.indexOf && !c)
return a.indexOf(b);
for (var d = 0; d < a.length; ) {
if (c && a[d][c] == b || !c && a[d] === b)
return d;
d++
}
return -1
}
function s(a) {
return Array.prototype.slice.call(a, 0)
}
function t(a, b, c) {
for (var d = [], e = [], f = 0; f < a.length; ) {
var g = b ? a[f][b] : a[f];
r(e, g) < 0 && d.push(a[f]),
e[f] = g,
f++
}
return c && (d = b ? d.sort(function(a, c) {
return a[b] > c[b]
}) : d.sort()),
d
}
function u(a, b) {
for (var c, e, f = b[0].toUpperCase() + b.slice(1), g = 0; g < ma.length; ) {
if (c = ma[g],
e = c ? c + f : b,
e in a)
return e;
g++
}
return d
}
function v() {
return ua++
}
function w(b) {
var c = b.ownerDocument || b;
return c.defaultView || c.parentWindow || a
}
function x(a, b) {
var c = this;
this.manager = a,
this.callback = b,
this.element = a.element,
this.target = a.options.inputTarget,
this.domHandler = function(b) {
k(a.options.enable, [a]) && c.handler(b)
}
,
this.init()
}
function y(a) {
var b, c = a.options.inputClass;
return new (b = c ? c : xa ? M : ya ? P : wa ? R : L)(a,z)
}
function z(a, b, c) {
var d = c.pointers.length
, e = c.changedPointers.length
, f = b & Ea && d - e === 0
, g = b & (Ga | Ha) && d - e === 0;
c.isFirst = !!f,
c.isFinal = !!g,
f && (a.session = {}),
c.eventType = b,
A(a, c),
a.emit("hammer.input", c),
a.recognize(c),
a.session.prevInput = c
}
function A(a, b) {
var c = a.session
, d = b.pointers
, e = d.length;
c.firstInput || (c.firstInput = D(b)),
e > 1 && !c.firstMultiple ? c.firstMultiple = D(b) : 1 === e && (c.firstMultiple = !1);
var f = c.firstInput
, g = c.firstMultiple
, h = g ? g.center : f.center
, i = b.center = E(d);
b.timeStamp = ra(),
b.deltaTime = b.timeStamp - f.timeStamp,
b.angle = I(h, i),
b.distance = H(h, i),
B(c, b),
b.offsetDirection = G(b.deltaX, b.deltaY);
var j = F(b.deltaTime, b.deltaX, b.deltaY);
b.overallVelocityX = j.x,
b.overallVelocityY = j.y,
b.overallVelocity = qa(j.x) > qa(j.y) ? j.x : j.y,
b.scale = g ? K(g.pointers, d) : 1,
b.rotation = g ? J(g.pointers, d) : 0,
b.maxPointers = c.prevInput ? b.pointers.length > c.prevInput.maxPointers ? b.pointers.length : c.prevInput.maxPointers : b.pointers.length,
C(c, b);
var k = a.element;
o(b.srcEvent.target, k) && (k = b.srcEvent.target),
b.target = k
}
function B(a, b) {
var c = b.center
, d = a.offsetDelta || {}
, e = a.prevDelta || {}
, f = a.prevInput || {};
b.eventType !== Ea && f.eventType !== Ga || (e = a.prevDelta = {
x: f.deltaX || 0,
y: f.deltaY || 0
},
d = a.offsetDelta = {
x: c.x,
y: c.y
}),
b.deltaX = e.x + (c.x - d.x),
b.deltaY = e.y + (c.y - d.y)
}
function C(a, b) {
var c, e, f, g, h = a.lastInterval || b, i = b.timeStamp - h.timeStamp;
if (b.eventType != Ha && (i > Da || h.velocity === d)) {
var j = b.deltaX - h.deltaX
, k = b.deltaY - h.deltaY
, l = F(i, j, k);
e = l.x,
f = l.y,
c = qa(l.x) > qa(l.y) ? l.x : l.y,
g = G(j, k),
a.lastInterval = b
} else
c = h.velocity,
e = h.velocityX,
f = h.velocityY,
g = h.direction;
b.velocity = c,
b.velocityX = e,
b.velocityY = f,
b.direction = g
}
function D(a) {
for (var b = [], c = 0; c < a.pointers.length; )
b[c] = {
clientX: pa(a.pointers[c].clientX),
clientY: pa(a.pointers[c].clientY)
},
c++;
return {
timeStamp: ra(),
pointers: b,
center: E(b),
deltaX: a.deltaX,
deltaY: a.deltaY
}
}
function E(a) {
var b = a.length;
if (1 === b)
return {
x: pa(a[0].clientX),
y: pa(a[0].clientY)
};
for (var c = 0, d = 0, e = 0; b > e; )
c += a[e].clientX,
d += a[e].clientY,
e++;
return {
x: pa(c / b),
y: pa(d / b)
}
}
function F(a, b, c) {
return {
x: b / a || 0,
y: c / a || 0
}
}
function G(a, b) {
return a === b ? Ia : qa(a) >= qa(b) ? 0 > a ? Ja : Ka : 0 > b ? La : Ma
}
function H(a, b, c) {
c || (c = Qa);
var d = b[c[0]] - a[c[0]]
, e = b[c[1]] - a[c[1]];
return Math.sqrt(d * d + e * e)
}
function I(a, b, c) {
c || (c = Qa);
var d = b[c[0]] - a[c[0]]
, e = b[c[1]] - a[c[1]];
return 180 * Math.atan2(e, d) / Math.PI
}
function J(a, b) {
return I(b[1], b[0], Ra) + I(a[1], a[0], Ra)
}
function K(a, b) {
return H(b[0], b[1], Ra) / H(a[0], a[1], Ra)
}
function L() {
this.evEl = Ta,
this.evWin = Ua,
this.pressed = !1,
x.apply(this, arguments)
}
function M() {
this.evEl = Xa,
this.evWin = Ya,
x.apply(this, arguments),
this.store = this.manager.session.pointerEvents = []
}
function N() {
this.evTarget = $a,
this.evWin = _a,
this.started = !1,
x.apply(this, arguments)
}
function O(a, b) {
var c = s(a.touches)
, d = s(a.changedTouches);
return b & (Ga | Ha) && (c = t(c.concat(d), "identifier", !0)),
[c, d]
}
function P() {
this.evTarget = bb,
this.targetIds = {},
x.apply(this, arguments)
}
function Q(a, b) {
var c = s(a.touches)
, d = this.targetIds;
if (b & (Ea | Fa) && 1 === c.length)
return d[c[0].identifier] = !0,
[c, c];
var e, f, g = s(a.changedTouches), h = [], i = this.target;
if (f = c.filter(function(a) {
return o(a.target, i)
}),
b === Ea)
for (e = 0; e < f.length; )
d[f[e].identifier] = !0,
e++;
for (e = 0; e < g.length; )
d[g[e].identifier] && h.push(g[e]),
b & (Ga | Ha) && delete d[g[e].identifier],
e++;
return h.length ? [t(f.concat(h), "identifier", !0), h] : void 0
}
function R() {
x.apply(this, arguments);
var a = j(this.handler, this);
this.touch = new P(this.manager,a),
this.mouse = new L(this.manager,a),
this.primaryTouch = null,
this.lastTouches = []
}
function S(a, b) {
a & Ea ? (this.primaryTouch = b.changedPointers[0].identifier,
T.call(this, b)) : a & (Ga | Ha) && T.call(this, b)
}
function T(a) {
var b = a.changedPointers[0];
if (b.identifier === this.primaryTouch) {
var c = {
x: b.clientX,
y: b.clientY
};
this.lastTouches.push(c);
var d = this.lastTouches
, e = function() {
var a = d.indexOf(c);
a > -1 && d.splice(a, 1)
};
setTimeout(e, cb)
}
}
function U(a) {
for (var b = a.srcEvent.clientX, c = a.srcEvent.clientY, d = 0; d < this.lastTouches.length; d++) {
var e = this.lastTouches[d]
, f = Math.abs(b - e.x)
, g = Math.abs(c - e.y);
if (db >= f && db >= g)
return !0
}
return !1
}
function V(a, b) {
this.manager = a,
this.set(b)
}
function W(a) {
if (p(a, jb))
return jb;
var b = p(a, kb)
, c = p(a, lb);
return b && c ? jb : b || c ? b ? kb : lb : p(a, ib) ? ib : hb
}
function X() {
if (!fb)
return !1;
var b = {}
, c = a.CSS && a.CSS.supports;
return ["auto", "manipulation", "pan-y", "pan-x", "pan-x pan-y", "none"].forEach(function(d) {
b[d] = c ? a.CSS.supports("touch-action", d) : !0
}),
b
}
function Y(a) {
this.options = la({}, this.defaults, a || {}),
this.id = v(),
this.manager = null,
this.options.enable = l(this.options.enable, !0),
this.state = nb,
this.simultaneous = {},
this.requireFail = []
}
function Z(a) {
return a & sb ? "cancel" : a & qb ? "end" : a & pb ? "move" : a & ob ? "start" : ""
}
function $(a) {
return a == Ma ? "down" : a == La ? "up" : a == Ja ? "left" : a == Ka ? "right" : ""
}
function _(a, b) {
var c = b.manager;
return c ? c.get(a) : a
}
function aa() {
Y.apply(this, arguments)
}
function ba() {
aa.apply(this, arguments),
this.pX = null,
this.pY = null
}
function ca() {
aa.apply(this, arguments)
}
function da() {
Y.apply(this, arguments),
this._timer = null,
this._input = null
}
function ea() {
aa.apply(this, arguments)
}
function fa() {
aa.apply(this, arguments)
}
function ga() {
Y.apply(this, arguments),
this.pTime = !1,
this.pCenter = !1,
this._timer = null,
this._input = null,
this.count = 0
}
function ha(a, b) {
return b = b || {},
b.recognizers = l(b.recognizers, ha.defaults.preset),
new ia(a,b)
}
function ia(a, b) {
this.options = la({}, ha.defaults, b || {}),
this.options.inputTarget = this.options.inputTarget || a,
this.handlers = {},
this.session = {},
this.recognizers = [],
this.oldCssProps = {},
this.element = a,
this.input = y(this),
this.touchAction = new V(this,this.options.touchAction),
ja(this, !0),
g(this.options.recognizers, function(a) {
var b = this.add(new a[0](a[1]));
a[2] && b.recognizeWith(a[2]),
a[3] && b.requireFailure(a[3])
}, this)
}
function ja(a, b) {
var c = a.element;
if (c.style) {
var d;
g(a.options.cssProps, function(e, f) {
d = u(c.style, f),
b ? (a.oldCssProps[d] = c.style[d],
c.style[d] = e) : c.style[d] = a.oldCssProps[d] || ""
}),
b || (a.oldCssProps = {})
}
}
function ka(a, c) {
var d = b.createEvent("Event");
d.initEvent(a, !0, !0),
d.gesture = c,
c.target.dispatchEvent(d)
}
var la, ma = ["", "webkit", "Moz", "MS", "ms", "o"], na = b.createElement("div"), oa = "function", pa = Math.round, qa = Math.abs, ra = Date.now;
la = "function" != typeof Object.assign ? function(a) {
if (a === d || null === a)
throw new TypeError("Cannot convert undefined or null to object");
for (var b = Object(a), c = 1; c < arguments.length; c++) {
var e = arguments[c];
if (e !== d && null !== e)
for (var f in e)
e.hasOwnProperty(f) && (b[f] = e[f])
}
return b
}
: Object.assign;
var sa = h(function(a, b, c) {
for (var e = Object.keys(b), f = 0; f < e.length; )
(!c || c && a[e[f]] === d) && (a[e[f]] = b[e[f]]),
f++;
return a
}, "extend", "Use `assign`.")
, ta = h(function(a, b) {
return sa(a, b, !0)
}, "merge", "Use `assign`.")
, ua = 1
, va = /mobile|tablet|ip(ad|hone|od)|android/i
, wa = "ontouchstart"in a
, xa = u(a, "PointerEvent") !== d
, ya = wa && va.test(navigator.userAgent)
, za = "touch"
, Aa = "pen"
, Ba = "mouse"
, Ca = "kinect"
, Da = 25
, Ea = 1
, Fa = 2
, Ga = 4
, Ha = 8
, Ia = 1
, Ja = 2
, Ka = 4
, La = 8
, Ma = 16
, Na = Ja | Ka
, Oa = La | Ma
, Pa = Na | Oa
, Qa = ["x", "y"]
, Ra = ["clientX", "clientY"];
x.prototype = {
handler: function() {},
init: function() {
this.evEl && m(this.element, this.evEl, this.domHandler),
this.evTarget && m(this.target, this.evTarget, this.domHandler),
this.evWin && m(w(this.element), this.evWin, this.domHandler)
},
destroy: function() {
this.evEl && n(this.element, this.evEl, this.domHandler),
this.evTarget && n(this.target, this.evTarget, this.domHandler),
this.evWin && n(w(this.element), this.evWin, this.domHandler)
}
};
var Sa = {
mousedown: Ea,
mousemove: Fa,
mouseup: Ga
}
, Ta = "mousedown"
, Ua = "mousemove mouseup";
i(L, x, {
handler: function(a) {
var b = Sa[a.type];
b & Ea && 0 === a.button && (this.pressed = !0),
b & Fa && 1 !== a.which && (b = Ga),
this.pressed && (b & Ga && (this.pressed = !1),
this.callback(this.manager, b, {
pointers: [a],
changedPointers: [a],
pointerType: Ba,
srcEvent: a
}))
}
});
var Va = {
pointerdown: Ea,
pointermove: Fa,
pointerup: Ga,
pointercancel: Ha,
pointerout: Ha
}
, Wa = {
2: za,
3: Aa,
4: Ba,
5: Ca
}
, Xa = "pointerdown"
, Ya = "pointermove pointerup pointercancel";
a.MSPointerEvent && !a.PointerEvent && (Xa = "MSPointerDown",
Ya = "MSPointerMove MSPointerUp MSPointerCancel"),
i(M, x, {
handler: function(a) {
var b = this.store
, c = !1
, d = a.type.toLowerCase().replace("ms", "")
, e = Va[d]
, f = Wa[a.pointerType] || a.pointerType
, g = f == za
, h = r(b, a.pointerId, "pointerId");
e & Ea && (0 === a.button || g) ? 0 > h && (b.push(a),
h = b.length - 1) : e & (Ga | Ha) && (c = !0),
0 > h || (b[h] = a,
this.callback(this.manager, e, {
pointers: b,
changedPointers: [a],
pointerType: f,
srcEvent: a
}),
c && b.splice(h, 1))
}
});
var Za = {
touchstart: Ea,
touchmove: Fa,
touchend: Ga,
touchcancel: Ha
}
, $a = "touchstart"
, _a = "touchstart touchmove touchend touchcancel";
i(N, x, {
handler: function(a) {
var b = Za[a.type];
if (b === Ea && (this.started = !0),
this.started) {
var c = O.call(this, a, b);
b & (Ga | Ha) && c[0].length - c[1].length === 0 && (this.started = !1),
this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
})
}
}
});
var ab = {
touchstart: Ea,
touchmove: Fa,
touchend: Ga,
touchcancel: Ha
}
, bb = "touchstart touchmove touchend touchcancel";
i(P, x, {
handler: function(a) {
var b = ab[a.type]
, c = Q.call(this, a, b);
c && this.callback(this.manager, b, {
pointers: c[0],
changedPointers: c[1],
pointerType: za,
srcEvent: a
})
}
});
var cb = 2500
, db = 25;
i(R, x, {
handler: function(a, b, c) {
var d = c.pointerType == za
, e = c.pointerType == Ba;
if (!(e && c.sourceCapabilities && c.sourceCapabilities.firesTouchEvents)) {
if (d)
S.call(this, b, c);
else if (e && U.call(this, c))
return;
this.callback(a, b, c)
}
},
destroy: function() {
this.touch.destroy(),
this.mouse.destroy()
}
});
var eb = u(na.style, "touchAction")
, fb = eb !== d
, gb = "compute"
, hb = "auto"
, ib = "manipulation"
, jb = "none"
, kb = "pan-x"
, lb = "pan-y"
, mb = X();
V.prototype = {
set: function(a) {
a == gb && (a = this.compute()),
fb && this.manager.element.style && mb[a] && (this.manager.element.style[eb] = a),
this.actions = a.toLowerCase().trim()
},
update: function() {
this.set(this.manager.options.touchAction)
},
compute: function() {
var a = [];
return g(this.manager.recognizers, function(b) {
k(b.options.enable, [b]) && (a = a.concat(b.getTouchAction()))
}),
W(a.join(" "))
},
preventDefaults: function(a) {
var b = a.srcEvent
, c = a.offsetDirection;
if (this.manager.session.prevented)
return void b.preventDefault();
var d = this.actions
, e = p(d, jb) && !mb[jb]
, f = p(d, lb) && !mb[lb]
, g = p(d, kb) && !mb[kb];
if (e) {
var h = 1 === a.pointers.length
, i = a.distance < 2
, j = a.deltaTime < 250;
if (h && i && j)
return
}
return g && f ? void 0 : e || f && c & Na || g && c & Oa ? this.preventSrc(b) : void 0
},
preventSrc: function(a) {
this.manager.session.prevented = !0,
a.preventDefault()
}
};
var nb = 1
, ob = 2
, pb = 4
, qb = 8
, rb = qb
, sb = 16
, tb = 32;
Y.prototype = {
defaults: {},
set: function(a) {
return la(this.options, a),
this.manager && this.manager.touchAction.update(),
this
},
recognizeWith: function(a) {
if (f(a, "recognizeWith", this))
return this;
var b = this.simultaneous;
return a = _(a, this),
b[a.id] || (b[a.id] = a,
a.recognizeWith(this)),
this
},
dropRecognizeWith: function(a) {
return f(a, "dropRecognizeWith", this) ? this : (a = _(a, this),
delete this.simultaneous[a.id],
this)
},
requireFailure: function(a) {
if (f(a, "requireFailure", this))
return this;
var b = this.requireFail;
return a = _(a, this),
-1 === r(b, a) && (b.push(a),
a.requireFailure(this)),
this
},
dropRequireFailure: function(a) {
if (f(a, "dropRequireFailure", this))
return this;
a = _(a, this);
var b = r(this.requireFail, a);
return b > -1 && this.requireFail.splice(b, 1),
this
},
hasRequireFailures: function() {
return this.requireFail.length > 0
},
canRecognizeWith: function(a) {
return !!this.simultaneous[a.id]
},
emit: function(a) {
function b(b) {
c.manager.emit(b, a)
}
var c = this
, d = this.state;
qb > d && b(c.options.event + Z(d)),
b(c.options.event),
a.additionalEvent && b(a.additionalEvent),
d >= qb && b(c.options.event + Z(d))
},
tryEmit: function(a) {
return this.canEmit() ? this.emit(a) : void (this.state = tb)
},
canEmit: function() {
for (var a = 0; a < this.requireFail.length; ) {
if (!(this.requireFail[a].state & (tb | nb)))
return !1;
a++
}
return !0
},
recognize: function(a) {
var b = la({}, a);
return k(this.options.enable, [this, b]) ? (this.state & (rb | sb | tb) && (this.state = nb),
this.state = this.process(b),
void (this.state & (ob | pb | qb | sb) && this.tryEmit(b))) : (this.reset(),
void (this.state = tb))
},
process: function(a) {},
getTouchAction: function() {},
reset: function() {}
},
i(aa, Y, {
defaults: {
pointers: 1
},
attrTest: function(a) {
var b = this.options.pointers;
return 0 === b || a.pointers.length === b
},
process: function(a) {
var b = this.state
, c = a.eventType
, d = b & (ob | pb)
, e = this.attrTest(a);
return d && (c & Ha || !e) ? b | sb : d || e ? c & Ga ? b | qb : b & ob ? b | pb : ob : tb
}
}),
i(ba, aa, {
defaults: {
event: "pan",
threshold: 10,
pointers: 1,
direction: Pa
},
getTouchAction: function() {
var a = this.options.direction
, b = [];
return a & Na && b.push(lb),
a & Oa && b.push(kb),
b
},
directionTest: function(a) {
var b = this.options
, c = !0
, d = a.distance
, e = a.direction
, f = a.deltaX
, g = a.deltaY;
return e & b.direction || (b.direction & Na ? (e = 0 === f ? Ia : 0 > f ? Ja : Ka,
c = f != this.pX,
d = Math.abs(a.deltaX)) : (e = 0 === g ? Ia : 0 > g ? La : Ma,
c = g != this.pY,
d = Math.abs(a.deltaY))),
a.direction = e,
c && d > b.threshold && e & b.direction
},
attrTest: function(a) {
return aa.prototype.attrTest.call(this, a) && (this.state & ob || !(this.state & ob) && this.directionTest(a))
},
emit: function(a) {
this.pX = a.deltaX,
this.pY = a.deltaY;
var b = $(a.direction);
b && (a.additionalEvent = this.options.event + b),
this._super.emit.call(this, a)
}
}),
i(ca, aa, {
defaults: {
event: "pinch",
threshold: 0,
pointers: 2
},
getTouchAction: function() {
return [jb]
},
attrTest: function(a) {
return this._super.attrTest.call(this, a) && (Math.abs(a.scale - 1) > this.options.threshold || this.state & ob)
},
emit: function(a) {
if (1 !== a.scale) {
var b = a.scale < 1 ? "in" : "out";
a.additionalEvent = this.options.event + b
}
this._super.emit.call(this, a)
}
}),
i(da, Y, {
defaults: {
event: "press",
pointers: 1,
time: 251,
threshold: 9
},
getTouchAction: function() {
return [hb]
},
process: function(a) {
var b = this.options
, c = a.pointers.length === b.pointers
, d = a.distance < b.threshold
, f = a.deltaTime > b.time;
if (this._input = a,
!d || !c || a.eventType & (Ga | Ha) && !f)
this.reset();
else if (a.eventType & Ea)
this.reset(),
this._timer = e(function() {
this.state = rb,
this.tryEmit()
}, b.time, this);
else if (a.eventType & Ga)
return rb;
return tb
},
reset: function() {
clearTimeout(this._timer)
},
emit: function(a) {
this.state === rb && (a && a.eventType & Ga ? this.manager.emit(this.options.event + "up", a) : (this._input.timeStamp = ra(),
this.manager.emit(this.options.event, this._input)))
}
}),
i(ea, aa, {
defaults: {
event: "rotate",
threshold: 0,
pointers: 2
},
getTouchAction: function() {
return [jb]
},
attrTest: function(a) {
return this._super.attrTest.call(this, a) && (Math.abs(a.rotation) > this.options.threshold || this.state & ob)
}
}),
i(fa, aa, {
defaults: {
event: "swipe",
threshold: 10,
velocity: .3,
direction: Na | Oa,
pointers: 1
},
getTouchAction: function() {
return ba.prototype.getTouchAction.call(this)
},
attrTest: function(a) {
var b, c = this.options.direction;
return c & (Na | Oa) ? b = a.overallVelocity : c & Na ? b = a.overallVelocityX : c & Oa && (b = a.overallVelocityY),
this._super.attrTest.call(this, a) && c & a.offsetDirection && a.distance > this.options.threshold && a.maxPointers == this.options.pointers && qa(b) > this.options.velocity && a.eventType & Ga
},
emit: function(a) {
var b = $(a.offsetDirection);
b && this.manager.emit(this.options.event + b, a),
this.manager.emit(this.options.event, a)
}
}),
i(ga, Y, {
defaults: {
event: "tap",
pointers: 1,
taps: 1,
interval: 300,
time: 250,
threshold: 9,
posThreshold: 10
},
getTouchAction: function() {
return [ib]
},
process: function(a) {
var b = this.options
, c = a.pointers.length === b.pointers
, d = a.distance < b.threshold
, f = a.deltaTime < b.time;
if (this.reset(),
a.eventType & Ea && 0 === this.count)
return this.failTimeout();
if (d && f && c) {
if (a.eventType != Ga)
return this.failTimeout();
var g = this.pTime ? a.timeStamp - this.pTime < b.interval : !0
, h = !this.pCenter || H(this.pCenter, a.center) < b.posThreshold;
this.pTime = a.timeStamp,
this.pCenter = a.center,
h && g ? this.count += 1 : this.count = 1,
this._input = a;
var i = this.count % b.taps;
if (0 === i)
return this.hasRequireFailures() ? (this._timer = e(function() {
this.state = rb,
this.tryEmit()
}, b.interval, this),
ob) : rb
}
return tb
},
failTimeout: function() {
return this._timer = e(function() {
this.state = tb
}, this.options.interval, this),
tb
},
reset: function() {
clearTimeout(this._timer)
},
emit: function() {
this.state == rb && (this._input.tapCount = this.count,
this.manager.emit(this.options.event, this._input))
}
}),
ha.VERSION = "2.0.7",
ha.defaults = {
domEvents: !1,
touchAction: gb,
enable: !0,
inputTarget: null,
inputClass: null,
preset: [[ea, {
enable: !1
}], [ca, {
enable: !1
}, ["rotate"]], [fa, {
direction: Na
}], [ba, {
direction: Na
}, ["swipe"]], [ga], [ga, {
event: "doubletap",
taps: 2
}, ["tap"]], [da]],
cssProps: {
userSelect: "none",
touchSelect: "none",
touchCallout: "none",
contentZooming: "none",
userDrag: "none",
tapHighlightColor: "rgba(0,0,0,0)"
}
};
var ub = 1
, vb = 2;
ia.prototype = {
set: function(a) {
return la(this.options, a),
a.touchAction && this.touchAction.update(),
a.inputTarget && (this.input.destroy(),
this.input.target = a.inputTarget,
this.input.init()),
this
},
stop: function(a) {
this.session.stopped = a ? vb : ub
},
recognize: function(a) {
var b = this.session;
if (!b.stopped) {
this.touchAction.preventDefaults(a);
var c, d = this.recognizers, e = b.curRecognizer;
(!e || e && e.state & rb) && (e = b.curRecognizer = null);
for (var f = 0; f < d.length; )
c = d[f],
b.stopped === vb || e && c != e && !c.canRecognizeWith(e) ? c.reset() : c.recognize(a),
!e && c.state & (ob | pb | qb) && (e = b.curRecognizer = c),
f++
}
},
get: function(a) {
if (a instanceof Y)
return a;
for (var b = this.recognizers, c = 0; c < b.length; c++)
if (b[c].options.event == a)
return b[c];
return null
},
add: function(a) {
if (f(a, "add", this))
return this;
var b = this.get(a.options.event);
return b && this.remove(b),
this.recognizers.push(a),
a.manager = this,
this.touchAction.update(),
a
},
remove: function(a) {
if (f(a, "remove", this))
return this;
if (a = this.get(a)) {
var b = this.recognizers
, c = r(b, a);
-1 !== c && (b.splice(c, 1),
this.touchAction.update())
}
return this
},
on: function(a, b) {
if (a !== d && b !== d) {
var c = this.handlers;
return g(q(a), function(a) {
c[a] = c[a] || [],
c[a].push(b)
}),
this
}
},
off: function(a, b) {
if (a !== d) {
var c = this.handlers;
return g(q(a), function(a) {
b ? c[a] && c[a].splice(r(c[a], b), 1) : delete c[a]
}),
this
}
},
emit: function(a, b) {
this.options.domEvents && ka(a, b);
var c = this.handlers[a] && this.handlers[a].slice();
if (c && c.length) {
b.type = a,
b.preventDefault = function() {
b.srcEvent.preventDefault()
}
;
for (var d = 0; d < c.length; )
c[d](b),
d++
}
},
destroy: function() {
this.element && ja(this, !1),
this.handlers = {},
this.session = {},
this.input.destroy(),
this.element = null
}
},
la(ha, {
INPUT_START: Ea,
INPUT_MOVE: Fa,
INPUT_END: Ga,
INPUT_CANCEL: Ha,
STATE_POSSIBLE: nb,
STATE_BEGAN: ob,
STATE_CHANGED: pb,
STATE_ENDED: qb,
STATE_RECOGNIZED: rb,
STATE_CANCELLED: sb,
STATE_FAILED: tb,
DIRECTION_NONE: Ia,
DIRECTION_LEFT: Ja,
DIRECTION_RIGHT: Ka,
DIRECTION_UP: La,
DIRECTION_DOWN: Ma,
DIRECTION_HORIZONTAL: Na,
DIRECTION_VERTICAL: Oa,
DIRECTION_ALL: Pa,
Manager: ia,
Input: x,
TouchAction: V,
TouchInput: P,
MouseInput: L,
PointerEventInput: M,
TouchMouseInput: R,
SingleTouchInput: N,
Recognizer: Y,
AttrRecognizer: aa,
Tap: ga,
Pan: ba,
Swipe: fa,
Pinch: ca,
Rotate: ea,
Press: da,
on: m,
off: n,
each: g,
merge: ta,
extend: sa,
assign: la,
inherit: i,
bindFn: j,
prefixed: u
});
var wb = "undefined" != typeof a ? a : "undefined" != typeof self ? self : {};
wb.Hammer = ha,
"function" == typeof define && define.amd ? define("Hammer", [], function() {
return ha
}) : "undefined" != typeof module && module.exports ? module.exports = ha : a[c] = ha
}(window, document, "Hammer");
define("Core/KnockoutHammerBinding", ["KnockoutES5", "Hammer"], function(Knockout, Hammer) {
"use strict";
var KnockoutHammerBinding = {
register: function(Knockout) {
Knockout.bindingHandlers.swipeLeft = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var f = Knockout.unwrap(valueAccessor());
new Hammer(element).on("swipeleft", function(e) {
var viewModel = bindingContext.$data;
f.apply(viewModel, arguments)
})
}
};
Knockout.bindingHandlers.swipeRight = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var f = Knockout.unwrap(valueAccessor());
new Hammer(element).on("swiperight", function(e) {
var viewModel = bindingContext.$data;
f.apply(viewModel, arguments)
})
}
}
}
};
return KnockoutHammerBinding
});
define("Core/registerKnockoutBindings", ["Cesium/Widgets/SvgPathBindingHandler", "KnockoutES5", "Core/KnockoutMarkdownBinding", "Core/KnockoutHammerBinding"], function(SvgPathBindingHandler, Knockout, KnockoutMarkdownBinding, KnockoutHammerBinding) {
"use strict";
var registerKnockoutBindings = function() {
SvgPathBindingHandler.register(Knockout);
KnockoutMarkdownBinding.register(Knockout);
KnockoutHammerBinding.register(Knockout);
Knockout.bindingHandlers.embeddedComponent = {
init: function(element, valueAccessor, allBindings, viewModel, bindingContext) {
var component = Knockout.unwrap(valueAccessor());
component.show(element);
return {
controlsDescendantBindings: true
}
},
update: function(element, valueAccessor, allBindings, viewModel, bindingContext) {}
}
};
return registerKnockoutBindings
});
define("Core/createFragmentFromTemplate", [], function() {
"use strict";
var createFragmentFromTemplate = function(htmlString) {
var holder = document.createElement("div");
holder.innerHTML = htmlString;
var fragment = document.createDocumentFragment();
while (holder.firstChild) {
fragment.appendChild(holder.firstChild)
}
return fragment
};
return createFragmentFromTemplate
});
define("Core/loadView", ["Cesium/Widgets/getElement", "KnockoutES5", "Core/createFragmentFromTemplate"], function(getElement, Knockout, createFragmentFromTemplate) {
"use strict";
var loadView = function(htmlString, container, viewModel) {
container = getElement(container);
var fragment = createFragmentFromTemplate(htmlString);
var nodes = [];
var i;
for (i = 0; i < fragment.childNodes.length; ++i) {
nodes.push(fragment.childNodes[i])
}
container.appendChild(fragment);
for (i = 0; i < nodes.length; ++i) {
var node = nodes[i];
if (node.nodeType === 1 || node.nodeType === 8) {
Knockout.applyBindings(viewModel, node)
}
}
return nodes
};
return loadView
});
!function(t, e, i) {
var n = t.L
, o = {};
o.version = "0.7.7",
"object" == typeof module && "object" == typeof module.exports ? module.exports = o : "function" == typeof define && define.amd && define("leaflet", o),
o.noConflict = function() {
return t.L = n,
this
}
,
t.L = o,
o.Util = {
extend: function(t) {
var e, i, n, o, s = Array.prototype.slice.call(arguments, 1);
for (i = 0,
n = s.length; n > i; i++) {
o = s[i] || {};
for (e in o)
o.hasOwnProperty(e) && (t[e] = o[e])
}
return t
},
bind: function(t, e) {
var i = arguments.length > 2 ? Array.prototype.slice.call(arguments, 2) : null;
return function() {
return t.apply(e, i || arguments)
}
},
stamp: function() {
var t = 0
, e = "_leaflet_id";
return function(i) {
return i[e] = i[e] || ++t,
i[e]
}
}(),
invokeEach: function(t, e, i) {
var n, o;
if ("object" == typeof t) {
o = Array.prototype.slice.call(arguments, 3);
for (n in t)
e.apply(i, [n, t[n]].concat(o));
return !0
}
return !1
},
limitExecByInterval: function(t, e, i) {
var n, o;
return function s() {
var a = arguments;
return n ? void (o = !0) : (n = !0,
setTimeout(function() {
n = !1,
o && (s.apply(i, a),
o = !1)
}, e),
void t.apply(i, a))
}
},
falseFn: function() {
return !1
},
formatNum: function(t, e) {
var i = Math.pow(10, e || 5);
return Math.round(t * i) / i
},
trim: function(t) {
return t.trim ? t.trim() : t.replace(/^\s+|\s+$/g, "")
},
splitWords: function(t) {
return o.Util.trim(t).split(/\s+/)
},
setOptions: function(t, e) {
return t.options = o.extend({}, t.options, e),
t.options
},
getParamString: function(t, e, i) {
var n = [];
for (var o in t)
n.push(encodeURIComponent(i ? o.toUpperCase() : o) + "=" + encodeURIComponent(t[o]));
return (e && -1 !== e.indexOf("?") ? "&" : "?") + n.join("&")
},
template: function(t, e) {
return t.replace(/\{ *([\w_]+) *\}/g, function(t, n) {
var o = e[n];
if (o === i)
throw new Error("No value provided for variable " + t);
return "function" == typeof o && (o = o(e)),
o
})
},
isArray: Array.isArray || function(t) {
return "[object Array]" === Object.prototype.toString.call(t)
}
,
emptyImageUrl: "data:image/gif;base64,R0lGODlhAQABAAD/ACwAAAAAAQABAAACADs="
},
function() {
function e(e) {
var i, n, o = ["webkit", "moz", "o", "ms"];
for (i = 0; i < o.length && !n; i++)
n = t[o[i] + e];
return n
}
function i(e) {
var i = +new Date
, o = Math.max(0, 16 - (i - n));
return n = i + o,
t.setTimeout(e, o)
}
var n = 0
, s = t.requestAnimationFrame || e("RequestAnimationFrame") || i
, a = t.cancelAnimationFrame || e("CancelAnimationFrame") || e("CancelRequestAnimationFrame") || function(e) {
t.clearTimeout(e)
}
;
o.Util.requestAnimFrame = function(e, n, a, r) {
return e = o.bind(e, n),
a && s === i ? void e() : s.call(t, e, r)
}
,
o.Util.cancelAnimFrame = function(e) {
e && a.call(t, e)
}
}(),
o.extend = o.Util.extend,
o.bind = o.Util.bind,
o.stamp = o.Util.stamp,
o.setOptions = o.Util.setOptions,
o.Class = function() {}
,
o.Class.extend = function(t) {
var e = function() {
this.initialize && this.initialize.apply(this, arguments),
this._initHooks && this.callInitHooks()
}
, i = function() {};
i.prototype = this.prototype;
var n = new i;
n.constructor = e,
e.prototype = n;
for (var s in this)
this.hasOwnProperty(s) && "prototype" !== s && (e[s] = this[s]);
t.statics && (o.extend(e, t.statics),
delete t.statics),
t.includes && (o.Util.extend.apply(null, [n].concat(t.includes)),
delete t.includes),
t.options && n.options && (t.options = o.extend({}, n.options, t.options)),
o.extend(n, t),
n._initHooks = [];
var a = this;
return e.__super__ = a.prototype,
n.callInitHooks = function() {
if (!this._initHooksCalled) {
a.prototype.callInitHooks && a.prototype.callInitHooks.call(this),
this._initHooksCalled = !0;
for (var t = 0, e = n._initHooks.length; e > t; t++)
n._initHooks[t].call(this)
}
}
,
e
}
,
o.Class.include = function(t) {
o.extend(this.prototype, t)
}
,
o.Class.mergeOptions = function(t) {
o.extend(this.prototype.options, t)
}
,
o.Class.addInitHook = function(t) {
var e = Array.prototype.slice.call(arguments, 1)
, i = "function" == typeof t ? t : function() {
this[t].apply(this, e)
}
;
this.prototype._initHooks = this.prototype._initHooks || [],
this.prototype._initHooks.push(i)
}
;
var s = "_leaflet_events";
o.Mixin = {},
o.Mixin.Events = {
addEventListener: function(t, e, i) {
if (o.Util.invokeEach(t, this.addEventListener, this, e, i))
return this;
var n, a, r, h, l, u, c, d = this[s] = this[s] || {}, p = i && i !== this && o.stamp(i);
for (t = o.Util.splitWords(t),
n = 0,
a = t.length; a > n; n++)
r = {
action: e,
context: i || this
},
h = t[n],
p ? (l = h + "_idx",
u = l + "_len",
c = d[l] = d[l] || {},
c[p] || (c[p] = [],
d[u] = (d[u] || 0) + 1),
c[p].push(r)) : (d[h] = d[h] || [],
d[h].push(r));
return this
},
hasEventListeners: function(t) {
var e = this[s];
return !!e && (t in e && e[t].length > 0 || t + "_idx"in e && e[t + "_idx_len"] > 0)
},
removeEventListener: function(t, e, i) {
if (!this[s])
return this;
if (!t)
return this.clearAllEventListeners();
if (o.Util.invokeEach(t, this.removeEventListener, this, e, i))
return this;
var n, a, r, h, l, u, c, d, p, _ = this[s], m = i && i !== this && o.stamp(i);
for (t = o.Util.splitWords(t),
n = 0,
a = t.length; a > n; n++)
if (r = t[n],
u = r + "_idx",
c = u + "_len",
d = _[u],
e) {
if (h = m && d ? d[m] : _[r]) {
for (l = h.length - 1; l >= 0; l--)
h[l].action !== e || i && h[l].context !== i || (p = h.splice(l, 1),
p[0].action = o.Util.falseFn);
i && d && 0 === h.length && (delete d[m],
_[c]--)
}
} else
delete _[r],
delete _[u],
delete _[c];
return this
},
clearAllEventListeners: function() {
return delete this[s],
this
},
fireEvent: function(t, e) {
if (!this.hasEventListeners(t))
return this;
var i, n, a, r, h, l = o.Util.extend({}, e, {
type: t,
target: this
}), u = this[s];
if (u[t])
for (i = u[t].slice(),
n = 0,
a = i.length; a > n; n++)
i[n].action.call(i[n].context, l);
r = u[t + "_idx"];
for (h in r)
if (i = r[h].slice())
for (n = 0,
a = i.length; a > n; n++)
i[n].action.call(i[n].context, l);
return this
},
addOneTimeEventListener: function(t, e, i) {
if (o.Util.invokeEach(t, this.addOneTimeEventListener, this, e, i))
return this;
var n = o.bind(function() {
this.removeEventListener(t, e, i).removeEventListener(t, n, i)
}, this);
return this.addEventListener(t, e, i).addEventListener(t, n, i)
}
},
o.Mixin.Events.on = o.Mixin.Events.addEventListener,
o.Mixin.Events.off = o.Mixin.Events.removeEventListener,
o.Mixin.Events.once = o.Mixin.Events.addOneTimeEventListener,
o.Mixin.Events.fire = o.Mixin.Events.fireEvent,
function() {
var n = "ActiveXObject"in t
, s = n && !e.addEventListener
, a = navigator.userAgent.toLowerCase()
, r = -1 !== a.indexOf("webkit")
, h = -1 !== a.indexOf("chrome")
, l = -1 !== a.indexOf("phantom")
, u = -1 !== a.indexOf("android")
, c = -1 !== a.search("android [23]")
, d = -1 !== a.indexOf("gecko")
, p = typeof orientation != i + ""
, _ = !t.PointerEvent && t.MSPointerEvent
, m = t.PointerEvent && t.navigator.pointerEnabled || _
, f = "devicePixelRatio"in t && t.devicePixelRatio > 1 || "matchMedia"in t && t.matchMedia("(min-resolution:144dpi)") && t.matchMedia("(min-resolution:144dpi)").matches
, g = e.documentElement
, v = n && "transition"in g.style
, y = "WebKitCSSMatrix"in t && "m11"in new t.WebKitCSSMatrix && !c
, P = "MozPerspective"in g.style
, L = "OTransition"in g.style
, x = !t.L_DISABLE_3D && (v || y || P || L) && !l
, w = !t.L_NO_TOUCH && !l && (m || "ontouchstart"in t || t.DocumentTouch && e instanceof t.DocumentTouch);
o.Browser = {
ie: n,
ielt9: s,
webkit: r,
gecko: d && !r && !t.opera && !n,
android: u,
android23: c,
chrome: h,
ie3d: v,
webkit3d: y,
gecko3d: P,
opera3d: L,
any3d: x,
mobile: p,
mobileWebkit: p && r,
mobileWebkit3d: p && y,
mobileOpera: p && t.opera,
touch: w,
msPointer: _,
pointer: m,
retina: f
}
}(),
o.Point = function(t, e, i) {
this.x = i ? Math.round(t) : t,
this.y = i ? Math.round(e) : e
}
,
o.Point.prototype = {
clone: function() {
return new o.Point(this.x,this.y)
},
add: function(t) {
return this.clone()._add(o.point(t))
},
_add: function(t) {
return this.x += t.x,
this.y += t.y,
this
},
subtract: function(t) {
return this.clone()._subtract(o.point(t))
},
_subtract: function(t) {
return this.x -= t.x,
this.y -= t.y,
this
},
divideBy: function(t) {
return this.clone()._divideBy(t)
},
_divideBy: function(t) {
return this.x /= t,
this.y /= t,
this
},
multiplyBy: function(t) {
return this.clone()._multiplyBy(t)
},
_multiplyBy: function(t) {
return this.x *= t,
this.y *= t,
this
},
round: function() {
return this.clone()._round()
},
_round: function() {
return this.x = Math.round(this.x),
this.y = Math.round(this.y),
this
},
floor: function() {
return this.clone()._floor()
},
_floor: function() {
return this.x = Math.floor(this.x),
this.y = Math.floor(this.y),
this
},
distanceTo: function(t) {
t = o.point(t);
var e = t.x - this.x
, i = t.y - this.y;
return Math.sqrt(e * e + i * i)
},
equals: function(t) {
return t = o.point(t),
t.x === this.x && t.y === this.y
},
contains: function(t) {
return t = o.point(t),
Math.abs(t.x) <= Math.abs(this.x) && Math.abs(t.y) <= Math.abs(this.y)
},
toString: function() {
return "Point(" + o.Util.formatNum(this.x) + ", " + o.Util.formatNum(this.y) + ")"
}
},
o.point = function(t, e, n) {
return t instanceof o.Point ? t : o.Util.isArray(t) ? new o.Point(t[0],t[1]) : t === i || null === t ? t : new o.Point(t,e,n)
}
,
o.Bounds = function(t, e) {
if (t)
for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++)
this.extend(i[n])
}
,
o.Bounds.prototype = {
extend: function(t) {
return t = o.point(t),
this.min || this.max ? (this.min.x = Math.min(t.x, this.min.x),
this.max.x = Math.max(t.x, this.max.x),
this.min.y = Math.min(t.y, this.min.y),
this.max.y = Math.max(t.y, this.max.y)) : (this.min = t.clone(),
this.max = t.clone()),
this
},
getCenter: function(t) {
return new o.Point((this.min.x + this.max.x) / 2,(this.min.y + this.max.y) / 2,t)
},
getBottomLeft: function() {
return new o.Point(this.min.x,this.max.y)
},
getTopRight: function() {
return new o.Point(this.max.x,this.min.y)
},
getSize: function() {
return this.max.subtract(this.min)
},
contains: function(t) {
var e, i;
return t = "number" == typeof t[0] || t instanceof o.Point ? o.point(t) : o.bounds(t),
t instanceof o.Bounds ? (e = t.min,
i = t.max) : e = i = t,
e.x >= this.min.x && i.x <= this.max.x && e.y >= this.min.y && i.y <= this.max.y
},
intersects: function(t) {
t = o.bounds(t);
var e = this.min
, i = this.max
, n = t.min
, s = t.max
, a = s.x >= e.x && n.x <= i.x
, r = s.y >= e.y && n.y <= i.y;
return a && r
},
isValid: function() {
return !(!this.min || !this.max)
}
},
o.bounds = function(t, e) {
return !t || t instanceof o.Bounds ? t : new o.Bounds(t,e)
}
,
o.Transformation = function(t, e, i, n) {
this._a = t,
this._b = e,
this._c = i,
this._d = n
}
,
o.Transformation.prototype = {
transform: function(t, e) {
return this._transform(t.clone(), e)
},
_transform: function(t, e) {
return e = e || 1,
t.x = e * (this._a * t.x + this._b),
t.y = e * (this._c * t.y + this._d),
t
},
untransform: function(t, e) {
return e = e || 1,
new o.Point((t.x / e - this._b) / this._a,(t.y / e - this._d) / this._c)
}
},
o.DomUtil = {
get: function(t) {
return "string" == typeof t ? e.getElementById(t) : t
},
getStyle: function(t, i) {
var n = t.style[i];
if (!n && t.currentStyle && (n = t.currentStyle[i]),
(!n || "auto" === n) && e.defaultView) {
var o = e.defaultView.getComputedStyle(t, null);
n = o ? o[i] : null
}
return "auto" === n ? null : n
},
getViewportOffset: function(t) {
var i, n = 0, s = 0, a = t, r = e.body, h = e.documentElement;
do {
if (n += a.offsetTop || 0,
s += a.offsetLeft || 0,
n += parseInt(o.DomUtil.getStyle(a, "borderTopWidth"), 10) || 0,
s += parseInt(o.DomUtil.getStyle(a, "borderLeftWidth"), 10) || 0,
i = o.DomUtil.getStyle(a, "position"),
a.offsetParent === r && "absolute" === i)
break;
if ("fixed" === i) {
n += r.scrollTop || h.scrollTop || 0,
s += r.scrollLeft || h.scrollLeft || 0;
break
}
if ("relative" === i && !a.offsetLeft) {
var l = o.DomUtil.getStyle(a, "width")
, u = o.DomUtil.getStyle(a, "max-width")
, c = a.getBoundingClientRect();
("none" !== l || "none" !== u) && (s += c.left + a.clientLeft),
n += c.top + (r.scrollTop || h.scrollTop || 0);
break
}
a = a.offsetParent
} while (a);a = t;
do {
if (a === r)
break;
n -= a.scrollTop || 0,
s -= a.scrollLeft || 0,
a = a.parentNode
} while (a);return new o.Point(s,n)
},
documentIsLtr: function() {
return o.DomUtil._docIsLtrCached || (o.DomUtil._docIsLtrCached = !0,
o.DomUtil._docIsLtr = "ltr" === o.DomUtil.getStyle(e.body, "direction")),
o.DomUtil._docIsLtr
},
create: function(t, i, n) {
var o = e.createElement(t);
return o.className = i,
n && n.appendChild(o),
o
},
hasClass: function(t, e) {
if (t.classList !== i)
return t.classList.contains(e);
var n = o.DomUtil._getClass(t);
return n.length > 0 && new RegExp("(^|\\s)" + e + "(\\s|$)").test(n)
},
addClass: function(t, e) {
if (t.classList !== i)
for (var n = o.Util.splitWords(e), s = 0, a = n.length; a > s; s++)
t.classList.add(n[s]);
else if (!o.DomUtil.hasClass(t, e)) {
var r = o.DomUtil._getClass(t);
o.DomUtil._setClass(t, (r ? r + " " : "") + e)
}
},
removeClass: function(t, e) {
t.classList !== i ? t.classList.remove(e) : o.DomUtil._setClass(t, o.Util.trim((" " + o.DomUtil._getClass(t) + " ").replace(" " + e + " ", " ")))
},
_setClass: function(t, e) {
t.className.baseVal === i ? t.className = e : t.className.baseVal = e
},
_getClass: function(t) {
return t.className.baseVal === i ? t.className : t.className.baseVal
},
setOpacity: function(t, e) {
if ("opacity"in t.style)
t.style.opacity = e;
else if ("filter"in t.style) {
var i = !1
, n = "DXImageTransform.Microsoft.Alpha";
try {
i = t.filters.item(n)
} catch (o) {
if (1 === e)
return
}
e = Math.round(100 * e),
i ? (i.Enabled = 100 !== e,
i.Opacity = e) : t.style.filter += " progid:" + n + "(opacity=" + e + ")"
}
},
testProp: function(t) {
for (var i = e.documentElement.style, n = 0; n < t.length; n++)
if (t[n]in i)
return t[n];
return !1
},
getTranslateString: function(t) {
var e = o.Browser.webkit3d
, i = "translate" + (e ? "3d" : "") + "("
, n = (e ? ",0" : "") + ")";
return i + t.x + "px," + t.y + "px" + n
},
getScaleString: function(t, e) {
var i = o.DomUtil.getTranslateString(e.add(e.multiplyBy(-1 * t)))
, n = " scale(" + t + ") ";
return i + n
},
setPosition: function(t, e, i) {
t._leaflet_pos = e,
!i && o.Browser.any3d ? t.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(e) : (t.style.left = e.x + "px",
t.style.top = e.y + "px")
},
getPosition: function(t) {
return t._leaflet_pos
}
},
o.DomUtil.TRANSFORM = o.DomUtil.testProp(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"]),
o.DomUtil.TRANSITION = o.DomUtil.testProp(["webkitTransition", "transition", "OTransition", "MozTransition", "msTransition"]),
o.DomUtil.TRANSITION_END = "webkitTransition" === o.DomUtil.TRANSITION || "OTransition" === o.DomUtil.TRANSITION ? o.DomUtil.TRANSITION + "End" : "transitionend",
function() {
if ("onselectstart"in e)
o.extend(o.DomUtil, {
disableTextSelection: function() {
o.DomEvent.on(t, "selectstart", o.DomEvent.preventDefault)
},
enableTextSelection: function() {
o.DomEvent.off(t, "selectstart", o.DomEvent.preventDefault)
}
});
else {
var i = o.DomUtil.testProp(["userSelect", "WebkitUserSelect", "OUserSelect", "MozUserSelect", "msUserSelect"]);
o.extend(o.DomUtil, {
disableTextSelection: function() {
if (i) {
var t = e.documentElement.style;
this._userSelect = t[i],
t[i] = "none"
}
},
enableTextSelection: function() {
i && (e.documentElement.style[i] = this._userSelect,
delete this._userSelect)
}
})
}
o.extend(o.DomUtil, {
disableImageDrag: function() {
o.DomEvent.on(t, "dragstart", o.DomEvent.preventDefault)
},
enableImageDrag: function() {
o.DomEvent.off(t, "dragstart", o.DomEvent.preventDefault)
}
})
}(),
o.LatLng = function(t, e, n) {
if (t = parseFloat(t),
e = parseFloat(e),
isNaN(t) || isNaN(e))
throw new Error("Invalid LatLng object: (" + t + ", " + e + ")");
this.lat = t,
this.lng = e,
n !== i && (this.alt = parseFloat(n))
}
,
o.extend(o.LatLng, {
DEG_TO_RAD: Math.PI / 180,
RAD_TO_DEG: 180 / Math.PI,
MAX_MARGIN: 1e-9
}),
o.LatLng.prototype = {
equals: function(t) {
if (!t)
return !1;
t = o.latLng(t);
var e = Math.max(Math.abs(this.lat - t.lat), Math.abs(this.lng - t.lng));
return e <= o.LatLng.MAX_MARGIN
},
toString: function(t) {
return "LatLng(" + o.Util.formatNum(this.lat, t) + ", " + o.Util.formatNum(this.lng, t) + ")"
},
distanceTo: function(t) {
t = o.latLng(t);
var e = 6378137
, i = o.LatLng.DEG_TO_RAD
, n = (t.lat - this.lat) * i
, s = (t.lng - this.lng) * i
, a = this.lat * i
, r = t.lat * i
, h = Math.sin(n / 2)
, l = Math.sin(s / 2)
, u = h * h + l * l * Math.cos(a) * Math.cos(r);
return 2 * e * Math.atan2(Math.sqrt(u), Math.sqrt(1 - u))
},
wrap: function(t, e) {
var i = this.lng;
return t = t || -180,
e = e || 180,
i = (i + e) % (e - t) + (t > i || i === e ? e : t),
new o.LatLng(this.lat,i)
}
},
o.latLng = function(t, e) {
return t instanceof o.LatLng ? t : o.Util.isArray(t) ? "number" == typeof t[0] || "string" == typeof t[0] ? new o.LatLng(t[0],t[1],t[2]) : null : t === i || null === t ? t : "object" == typeof t && "lat"in t ? new o.LatLng(t.lat,"lng"in t ? t.lng : t.lon) : e === i ? null : new o.LatLng(t,e)
}
,
o.LatLngBounds = function(t, e) {
if (t)
for (var i = e ? [t, e] : t, n = 0, o = i.length; o > n; n++)
this.extend(i[n])
}
,
o.LatLngBounds.prototype = {
extend: function(t) {
if (!t)
return this;
var e = o.latLng(t);
return t = null !== e ? e : o.latLngBounds(t),
t instanceof o.LatLng ? this._southWest || this._northEast ? (this._southWest.lat = Math.min(t.lat, this._southWest.lat),
this._southWest.lng = Math.min(t.lng, this._southWest.lng),
this._northEast.lat = Math.max(t.lat, this._northEast.lat),
this._northEast.lng = Math.max(t.lng, this._northEast.lng)) : (this._southWest = new o.LatLng(t.lat,t.lng),
this._northEast = new o.LatLng(t.lat,t.lng)) : t instanceof o.LatLngBounds && (this.extend(t._southWest),
this.extend(t._northEast)),
this
},
pad: function(t) {
var e = this._southWest
, i = this._northEast
, n = Math.abs(e.lat - i.lat) * t
, s = Math.abs(e.lng - i.lng) * t;
return new o.LatLngBounds(new o.LatLng(e.lat - n,e.lng - s),new o.LatLng(i.lat + n,i.lng + s))
},
getCenter: function() {
return new o.LatLng((this._southWest.lat + this._northEast.lat) / 2,(this._southWest.lng + this._northEast.lng) / 2)
},
getSouthWest: function() {
return this._southWest
},
getNorthEast: function() {
return this._northEast
},
getNorthWest: function() {
return new o.LatLng(this.getNorth(),this.getWest())
},
getSouthEast: function() {
return new o.LatLng(this.getSouth(),this.getEast())
},
getWest: function() {
return this._southWest.lng
},
getSouth: function() {
return this._southWest.lat
},
getEast: function() {
return this._northEast.lng
},
getNorth: function() {
return this._northEast.lat
},
contains: function(t) {
t = "number" == typeof t[0] || t instanceof o.LatLng ? o.latLng(t) : o.latLngBounds(t);
var e, i, n = this._southWest, s = this._northEast;
return t instanceof o.LatLngBounds ? (e = t.getSouthWest(),
i = t.getNorthEast()) : e = i = t,
e.lat >= n.lat && i.lat <= s.lat && e.lng >= n.lng && i.lng <= s.lng
},
intersects: function(t) {
t = o.latLngBounds(t);
var e = this._southWest
, i = this._northEast
, n = t.getSouthWest()
, s = t.getNorthEast()
, a = s.lat >= e.lat && n.lat <= i.lat
, r = s.lng >= e.lng && n.lng <= i.lng;
return a && r
},
toBBoxString: function() {
return [this.getWest(), this.getSouth(), this.getEast(), this.getNorth()].join(",")
},
equals: function(t) {
return t ? (t = o.latLngBounds(t),
this._southWest.equals(t.getSouthWest()) && this._northEast.equals(t.getNorthEast())) : !1
},
isValid: function() {
return !(!this._southWest || !this._northEast)
}
},
o.latLngBounds = function(t, e) {
return !t || t instanceof o.LatLngBounds ? t : new o.LatLngBounds(t,e)
}
,
o.Projection = {},
o.Projection.SphericalMercator = {
MAX_LATITUDE: 85.0511287798,
project: function(t) {
var e = o.LatLng.DEG_TO_RAD
, i = this.MAX_LATITUDE
, n = Math.max(Math.min(i, t.lat), -i)
, s = t.lng * e
, a = n * e;
return a = Math.log(Math.tan(Math.PI / 4 + a / 2)),
new o.Point(s,a)
},
unproject: function(t) {
var e = o.LatLng.RAD_TO_DEG
, i = t.x * e
, n = (2 * Math.atan(Math.exp(t.y)) - Math.PI / 2) * e;
return new o.LatLng(n,i)
}
},
o.Projection.LonLat = {
project: function(t) {
return new o.Point(t.lng,t.lat)
},
unproject: function(t) {
return new o.LatLng(t.y,t.x)
}
},
o.CRS = {
latLngToPoint: function(t, e) {
var i = this.projection.project(t)
, n = this.scale(e);
return this.transformation._transform(i, n)
},
pointToLatLng: function(t, e) {
var i = this.scale(e)
, n = this.transformation.untransform(t, i);
return this.projection.unproject(n)
},
project: function(t) {
return this.projection.project(t)
},
scale: function(t) {
return 256 * Math.pow(2, t)
},
getSize: function(t) {
var e = this.scale(t);
return o.point(e, e)
}
},
o.CRS.Simple = o.extend({}, o.CRS, {
projection: o.Projection.LonLat,
transformation: new o.Transformation(1,0,-1,0),
scale: function(t) {
return Math.pow(2, t)
}
}),
o.CRS.EPSG3857 = o.extend({}, o.CRS, {
code: "EPSG:3857",
projection: o.Projection.SphericalMercator,
transformation: new o.Transformation(.5 / Math.PI,.5,-.5 / Math.PI,.5),
project: function(t) {
var e = this.projection.project(t)
, i = 6378137;
return e.multiplyBy(i)
}
}),
o.CRS.EPSG900913 = o.extend({}, o.CRS.EPSG3857, {
code: "EPSG:900913"
}),
o.CRS.EPSG4326 = o.extend({}, o.CRS, {
code: "EPSG:4326",
projection: o.Projection.LonLat,
transformation: new o.Transformation(1 / 360,.5,-1 / 360,.5)
}),
o.Map = o.Class.extend({
includes: o.Mixin.Events,
options: {
crs: o.CRS.EPSG3857,
fadeAnimation: o.DomUtil.TRANSITION && !o.Browser.android23,
trackResize: !0,
markerZoomAnimation: o.DomUtil.TRANSITION && o.Browser.any3d
},
initialize: function(t, e) {
e = o.setOptions(this, e),
this._initContainer(t),
this._initLayout(),
this._onResize = o.bind(this._onResize, this),
this._initEvents(),
e.maxBounds && this.setMaxBounds(e.maxBounds),
e.center && e.zoom !== i && this.setView(o.latLng(e.center), e.zoom, {
reset: !0
}),
this._handlers = [],
this._layers = {},
this._zoomBoundLayers = {},
this._tileLayersNum = 0,
this.callInitHooks(),
this._addLayers(e.layers)
},
setView: function(t, e) {
return e = e === i ? this.getZoom() : e,
this._resetView(o.latLng(t), this._limitZoom(e)),
this
},
setZoom: function(t, e) {
return this._loaded ? this.setView(this.getCenter(), t, {
zoom: e
}) : (this._zoom = this._limitZoom(t),
this)
},
zoomIn: function(t, e) {
return this.setZoom(this._zoom + (t || 1), e)
},
zoomOut: function(t, e) {
return this.setZoom(this._zoom - (t || 1), e)
},
setZoomAround: function(t, e, i) {
var n = this.getZoomScale(e)
, s = this.getSize().divideBy(2)
, a = t instanceof o.Point ? t : this.latLngToContainerPoint(t)
, r = a.subtract(s).multiplyBy(1 - 1 / n)
, h = this.containerPointToLatLng(s.add(r));
return this.setView(h, e, {
zoom: i
})
},
fitBounds: function(t, e) {
e = e || {},
t = t.getBounds ? t.getBounds() : o.latLngBounds(t);
var i = o.point(e.paddingTopLeft || e.padding || [0, 0])
, n = o.point(e.paddingBottomRight || e.padding || [0, 0])
, s = this.getBoundsZoom(t, !1, i.add(n));
s = e.maxZoom ? Math.min(e.maxZoom, s) : s;
var a = n.subtract(i).divideBy(2)
, r = this.project(t.getSouthWest(), s)
, h = this.project(t.getNorthEast(), s)
, l = this.unproject(r.add(h).divideBy(2).add(a), s);
return this.setView(l, s, e)
},
fitWorld: function(t) {
return this.fitBounds([[-90, -180], [90, 180]], t)
},
panTo: function(t, e) {
return this.setView(t, this._zoom, {
pan: e
})
},
panBy: function(t) {
return this.fire("movestart"),
this._rawPanBy(o.point(t)),
this.fire("move"),
this.fire("moveend")
},
setMaxBounds: function(t) {
return t = o.latLngBounds(t),
this.options.maxBounds = t,
t ? (this._loaded && this._panInsideMaxBounds(),
this.on("moveend", this._panInsideMaxBounds, this)) : this.off("moveend", this._panInsideMaxBounds, this)
},
panInsideBounds: function(t, e) {
var i = this.getCenter()
, n = this._limitCenter(i, this._zoom, t);
return i.equals(n) ? this : this.panTo(n, e)
},
addLayer: function(t) {
var e = o.stamp(t);
return this._layers[e] ? this : (this._layers[e] = t,
!t.options || isNaN(t.options.maxZoom) && isNaN(t.options.minZoom) || (this._zoomBoundLayers[e] = t,
this._updateZoomLevels()),
this.options.zoomAnimation && o.TileLayer && t instanceof o.TileLayer && (this._tileLayersNum++,
this._tileLayersToLoad++,
t.on("load", this._onTileLayerLoad, this)),
this._loaded && this._layerAdd(t),
this)
},
removeLayer: function(t) {
var e = o.stamp(t);
return this._layers[e] ? (this._loaded && t.onRemove(this),
delete this._layers[e],
this._loaded && this.fire("layerremove", {
layer: t
}),
this._zoomBoundLayers[e] && (delete this._zoomBoundLayers[e],
this._updateZoomLevels()),
this.options.zoomAnimation && o.TileLayer && t instanceof o.TileLayer && (this._tileLayersNum--,
this._tileLayersToLoad--,
t.off("load", this._onTileLayerLoad, this)),
this) : this
},
hasLayer: function(t) {
return t ? o.stamp(t)in this._layers : !1
},
eachLayer: function(t, e) {
for (var i in this._layers)
t.call(e, this._layers[i]);
return this
},
invalidateSize: function(t) {
if (!this._loaded)
return this;
t = o.extend({
animate: !1,
pan: !0
}, t === !0 ? {
animate: !0
} : t);
var e = this.getSize();
this._sizeChanged = !0,
this._initialCenter = null;
var i = this.getSize()
, n = e.divideBy(2).round()
, s = i.divideBy(2).round()
, a = n.subtract(s);
return a.x || a.y ? (t.animate && t.pan ? this.panBy(a) : (t.pan && this._rawPanBy(a),
this.fire("move"),
t.debounceMoveend ? (clearTimeout(this._sizeTimer),
this._sizeTimer = setTimeout(o.bind(this.fire, this, "moveend"), 200)) : this.fire("moveend")),
this.fire("resize", {
oldSize: e,
newSize: i
})) : this
},
addHandler: function(t, e) {
if (!e)
return this;
var i = this[t] = new e(this);
return this._handlers.push(i),
this.options[t] && i.enable(),
this
},
remove: function() {
this._loaded && this.fire("unload"),
this._initEvents("off");
try {
delete this._container._leaflet
} catch (t) {
this._container._leaflet = i
}
return this._clearPanes(),
this._clearControlPos && this._clearControlPos(),
this._clearHandlers(),
this
},
getCenter: function() {
return this._checkIfLoaded(),
this._initialCenter && !this._moved() ? this._initialCenter : this.layerPointToLatLng(this._getCenterLayerPoint())
},
getZoom: function() {
return this._zoom
},
getBounds: function() {
var t = this.getPixelBounds()
, e = this.unproject(t.getBottomLeft())
, i = this.unproject(t.getTopRight());
return new o.LatLngBounds(e,i)
},
getMinZoom: function() {
return this.options.minZoom === i ? this._layersMinZoom === i ? 0 : this._layersMinZoom : this.options.minZoom
},
getMaxZoom: function() {
return this.options.maxZoom === i ? this._layersMaxZoom === i ? 1 / 0 : this._layersMaxZoom : this.options.maxZoom
},
getBoundsZoom: function(t, e, i) {
t = o.latLngBounds(t);
var n, s = this.getMinZoom() - (e ? 1 : 0), a = this.getMaxZoom(), r = this.getSize(), h = t.getNorthWest(), l = t.getSouthEast(), u = !0;
i = o.point(i || [0, 0]);
do
s++,
n = this.project(l, s).subtract(this.project(h, s)).add(i),
u = e ? n.x < r.x || n.y < r.y : r.contains(n);
while (u && a >= s);return u && e ? null : e ? s : s - 1
},
getSize: function() {
return (!this._size || this._sizeChanged) && (this._size = new o.Point(this._container.clientWidth,this._container.clientHeight),
this._sizeChanged = !1),
this._size.clone()
},
getPixelBounds: function() {
var t = this._getTopLeftPoint();
return new o.Bounds(t,t.add(this.getSize()))
},
getPixelOrigin: function() {
return this._checkIfLoaded(),
this._initialTopLeftPoint
},
getPanes: function() {
return this._panes
},
getContainer: function() {
return this._container
},
getZoomScale: function(t) {
var e = this.options.crs;
return e.scale(t) / e.scale(this._zoom)
},
getScaleZoom: function(t) {
return this._zoom + Math.log(t) / Math.LN2
},
project: function(t, e) {
return e = e === i ? this._zoom : e,
this.options.crs.latLngToPoint(o.latLng(t), e)
},
unproject: function(t, e) {
return e = e === i ? this._zoom : e,
this.options.crs.pointToLatLng(o.point(t), e)
},
layerPointToLatLng: function(t) {
var e = o.point(t).add(this.getPixelOrigin());
return this.unproject(e)
},
latLngToLayerPoint: function(t) {
var e = this.project(o.latLng(t))._round();
return e._subtract(this.getPixelOrigin())
},
containerPointToLayerPoint: function(t) {
return o.point(t).subtract(this._getMapPanePos())
},
layerPointToContainerPoint: function(t) {
return o.point(t).add(this._getMapPanePos())
},
containerPointToLatLng: function(t) {
var e = this.containerPointToLayerPoint(o.point(t));
return this.layerPointToLatLng(e)
},
latLngToContainerPoint: function(t) {
return this.layerPointToContainerPoint(this.latLngToLayerPoint(o.latLng(t)))
},
mouseEventToContainerPoint: function(t) {
return o.DomEvent.getMousePosition(t, this._container)
},
mouseEventToLayerPoint: function(t) {
return this.containerPointToLayerPoint(this.mouseEventToContainerPoint(t))
},
mouseEventToLatLng: function(t) {
return this.layerPointToLatLng(this.mouseEventToLayerPoint(t))
},
_initContainer: function(t) {
var e = this._container = o.DomUtil.get(t);
if (!e)
throw new Error("Map container not found.");
if (e._leaflet)
throw new Error("Map container is already initialized.");
e._leaflet = !0
},
_initLayout: function() {
var t = this._container;
o.DomUtil.addClass(t, "leaflet-container" + (o.Browser.touch ? " leaflet-touch" : "") + (o.Browser.retina ? " leaflet-retina" : "") + (o.Browser.ielt9 ? " leaflet-oldie" : "") + (this.options.fadeAnimation ? " leaflet-fade-anim" : ""));
var e = o.DomUtil.getStyle(t, "position");
"absolute" !== e && "relative" !== e && "fixed" !== e && (t.style.position = "relative"),
this._initPanes(),
this._initControlPos && this._initControlPos()
},
_initPanes: function() {
var t = this._panes = {};
this._mapPane = t.mapPane = this._createPane("leaflet-map-pane", this._container),
this._tilePane = t.tilePane = this._createPane("leaflet-tile-pane", this._mapPane),
t.objectsPane = this._createPane("leaflet-objects-pane", this._mapPane),
t.shadowPane = this._createPane("leaflet-shadow-pane"),
t.overlayPane = this._createPane("leaflet-overlay-pane"),
t.markerPane = this._createPane("leaflet-marker-pane"),
t.popupPane = this._createPane("leaflet-popup-pane");
var e = " leaflet-zoom-hide";
this.options.markerZoomAnimation || (o.DomUtil.addClass(t.markerPane, e),
o.DomUtil.addClass(t.shadowPane, e),
o.DomUtil.addClass(t.popupPane, e))
},
_createPane: function(t, e) {
return o.DomUtil.create("div", t, e || this._panes.objectsPane)
},
_clearPanes: function() {
this._container.removeChild(this._mapPane)
},
_addLayers: function(t) {
t = t ? o.Util.isArray(t) ? t : [t] : [];
for (var e = 0, i = t.length; i > e; e++)
this.addLayer(t[e])
},
_resetView: function(t, e, i, n) {
var s = this._zoom !== e;
n || (this.fire("movestart"),
s && this.fire("zoomstart")),
this._zoom = e,
this._initialCenter = t,
this._initialTopLeftPoint = this._getNewTopLeftPoint(t),
i ? this._initialTopLeftPoint._add(this._getMapPanePos()) : o.DomUtil.setPosition(this._mapPane, new o.Point(0,0)),
this._tileLayersToLoad = this._tileLayersNum;
var a = !this._loaded;
this._loaded = !0,
this.fire("viewreset", {
hard: !i
}),
a && (this.fire("load"),
this.eachLayer(this._layerAdd, this)),
this.fire("move"),
(s || n) && this.fire("zoomend"),
this.fire("moveend", {
hard: !i
})
},
_rawPanBy: function(t) {
o.DomUtil.setPosition(this._mapPane, this._getMapPanePos().subtract(t))
},
_getZoomSpan: function() {
return this.getMaxZoom() - this.getMinZoom()
},
_updateZoomLevels: function() {
var t, e = 1 / 0, n = -(1 / 0), o = this._getZoomSpan();
for (t in this._zoomBoundLayers) {
var s = this._zoomBoundLayers[t];
isNaN(s.options.minZoom) || (e = Math.min(e, s.options.minZoom)),
isNaN(s.options.maxZoom) || (n = Math.max(n, s.options.maxZoom))
}
t === i ? this._layersMaxZoom = this._layersMinZoom = i : (this._layersMaxZoom = n,
this._layersMinZoom = e),
o !== this._getZoomSpan() && this.fire("zoomlevelschange")
},
_panInsideMaxBounds: function() {
this.panInsideBounds(this.options.maxBounds)
},
_checkIfLoaded: function() {
if (!this._loaded)
throw new Error("Set map center and zoom first.")
},
_initEvents: function(e) {
if (o.DomEvent) {
e = e || "on",
o.DomEvent[e](this._container, "click", this._onMouseClick, this);
var i, n, s = ["dblclick", "mousedown", "mouseup", "mouseenter", "mouseleave", "mousemove", "contextmenu"];
for (i = 0,
n = s.length; n > i; i++)
o.DomEvent[e](this._container, s[i], this._fireMouseEvent, this);
this.options.trackResize && o.DomEvent[e](t, "resize", this._onResize, this)
}
},
_onResize: function() {
o.Util.cancelAnimFrame(this._resizeRequest),
this._resizeRequest = o.Util.requestAnimFrame(function() {
this.invalidateSize({
debounceMoveend: !0
})
}, this, !1, this._container)
},
_onMouseClick: function(t) {
!this._loaded || !t._simulated && (this.dragging && this.dragging.moved() || this.boxZoom && this.boxZoom.moved()) || o.DomEvent._skipped(t) || (this.fire("preclick"),
this._fireMouseEvent(t))
},
_fireMouseEvent: function(t) {
if (this._loaded && !o.DomEvent._skipped(t)) {
var e = t.type;
if (e = "mouseenter" === e ? "mouseover" : "mouseleave" === e ? "mouseout" : e,
this.hasEventListeners(e)) {
"contextmenu" === e && o.DomEvent.preventDefault(t);
var i = this.mouseEventToContainerPoint(t)
, n = this.containerPointToLayerPoint(i)
, s = this.layerPointToLatLng(n);
this.fire(e, {
latlng: s,
layerPoint: n,
containerPoint: i,
originalEvent: t
})
}
}
},
_onTileLayerLoad: function() {
this._tileLayersToLoad--,
this._tileLayersNum && !this._tileLayersToLoad && this.fire("tilelayersload")
},
_clearHandlers: function() {
for (var t = 0, e = this._handlers.length; e > t; t++)
this._handlers[t].disable()
},
whenReady: function(t, e) {
return this._loaded ? t.call(e || this, this) : this.on("load", t, e),
this
},
_layerAdd: function(t) {
t.onAdd(this),
this.fire("layeradd", {
layer: t
})
},
_getMapPanePos: function() {
return o.DomUtil.getPosition(this._mapPane)
},
_moved: function() {
var t = this._getMapPanePos();
return t && !t.equals([0, 0])
},
_getTopLeftPoint: function() {
return this.getPixelOrigin().subtract(this._getMapPanePos())
},
_getNewTopLeftPoint: function(t, e) {
var i = this.getSize()._divideBy(2);
return this.project(t, e)._subtract(i)._round()
},
_latLngToNewLayerPoint: function(t, e, i) {
var n = this._getNewTopLeftPoint(i, e).add(this._getMapPanePos());
return this.project(t, e)._subtract(n)
},
_getCenterLayerPoint: function() {
return this.containerPointToLayerPoint(this.getSize()._divideBy(2))
},
_getCenterOffset: function(t) {
return this.latLngToLayerPoint(t).subtract(this._getCenterLayerPoint())
},
_limitCenter: function(t, e, i) {
if (!i)
return t;
var n = this.project(t, e)
, s = this.getSize().divideBy(2)
, a = new o.Bounds(n.subtract(s),n.add(s))
, r = this._getBoundsOffset(a, i, e);
return this.unproject(n.add(r), e)
},
_limitOffset: function(t, e) {
if (!e)
return t;
var i = this.getPixelBounds()
, n = new o.Bounds(i.min.add(t),i.max.add(t));
return t.add(this._getBoundsOffset(n, e))
},
_getBoundsOffset: function(t, e, i) {
var n = this.project(e.getNorthWest(), i).subtract(t.min)
, s = this.project(e.getSouthEast(), i).subtract(t.max)
, a = this._rebound(n.x, -s.x)
, r = this._rebound(n.y, -s.y);
return new o.Point(a,r)
},
_rebound: function(t, e) {
return t + e > 0 ? Math.round(t - e) / 2 : Math.max(0, Math.ceil(t)) - Math.max(0, Math.floor(e))
},
_limitZoom: function(t) {
var e = this.getMinZoom()
, i = this.getMaxZoom();
return Math.max(e, Math.min(i, t))
}
}),
o.map = function(t, e) {
return new o.Map(t,e)
}
,
o.Projection.Mercator = {
MAX_LATITUDE: 85.0840591556,
R_MINOR: 6356752.314245179,
R_MAJOR: 6378137,
project: function(t) {
var e = o.LatLng.DEG_TO_RAD
, i = this.MAX_LATITUDE
, n = Math.max(Math.min(i, t.lat), -i)
, s = this.R_MAJOR
, a = this.R_MINOR
, r = t.lng * e * s
, h = n * e
, l = a / s
, u = Math.sqrt(1 - l * l)
, c = u * Math.sin(h);
c = Math.pow((1 - c) / (1 + c), .5 * u);
var d = Math.tan(.5 * (.5 * Math.PI - h)) / c;
return h = -s * Math.log(d),
new o.Point(r,h)
},
unproject: function(t) {
for (var e, i = o.LatLng.RAD_TO_DEG, n = this.R_MAJOR, s = this.R_MINOR, a = t.x * i / n, r = s / n, h = Math.sqrt(1 - r * r), l = Math.exp(-t.y / n), u = Math.PI / 2 - 2 * Math.atan(l), c = 15, d = 1e-7, p = c, _ = .1; Math.abs(_) > d && --p > 0; )
e = h * Math.sin(u),
_ = Math.PI / 2 - 2 * Math.atan(l * Math.pow((1 - e) / (1 + e), .5 * h)) - u,
u += _;
return new o.LatLng(u * i,a)
}
},
o.CRS.EPSG3395 = o.extend({}, o.CRS, {
code: "EPSG:3395",
projection: o.Projection.Mercator,
transformation: function() {
var t = o.Projection.Mercator
, e = t.R_MAJOR
, i = .5 / (Math.PI * e);
return new o.Transformation(i,.5,-i,.5)
}()
}),
o.TileLayer = o.Class.extend({
includes: o.Mixin.Events,
options: {
minZoom: 0,
maxZoom: 18,
tileSize: 256,
subdomains: "abc",
errorTileUrl: "",
attribution: "",
zoomOffset: 0,
opacity: 1,
unloadInvisibleTiles: o.Browser.mobile,
updateWhenIdle: o.Browser.mobile
},
initialize: function(t, e) {
e = o.setOptions(this, e),
e.detectRetina && o.Browser.retina && e.maxZoom > 0 && (e.tileSize = Math.floor(e.tileSize / 2),
e.zoomOffset++,
e.minZoom > 0 && e.minZoom--,
this.options.maxZoom--),
e.bounds && (e.bounds = o.latLngBounds(e.bounds)),
this._url = t;
var i = this.options.subdomains;
"string" == typeof i && (this.options.subdomains = i.split(""))
},
onAdd: function(t) {
this._map = t,
this._animated = t._zoomAnimated,
this._initContainer(),
t.on({
viewreset: this._reset,
moveend: this._update
}, this),
this._animated && t.on({
zoomanim: this._animateZoom,
zoomend: this._endZoomAnim
}, this),
this.options.updateWhenIdle || (this._limitedUpdate = o.Util.limitExecByInterval(this._update, 150, this),
t.on("move", this._limitedUpdate, this)),
this._reset(),
this._update()
},
addTo: function(t) {
return t.addLayer(this),
this
},
onRemove: function(t) {
this._container.parentNode.removeChild(this._container),
t.off({
viewreset: this._reset,
moveend: this._update
}, this),
this._animated && t.off({
zoomanim: this._animateZoom,
zoomend: this._endZoomAnim
}, this),
this.options.updateWhenIdle || t.off("move", this._limitedUpdate, this),
this._container = null,
this._map = null
},
bringToFront: function() {
var t = this._map._panes.tilePane;
return this._container && (t.appendChild(this._container),
this._setAutoZIndex(t, Math.max)),
this
},
bringToBack: function() {
var t = this._map._panes.tilePane;
return this._container && (t.insertBefore(this._container, t.firstChild),
this._setAutoZIndex(t, Math.min)),
this
},
getAttribution: function() {
return this.options.attribution
},
getContainer: function() {
return this._container
},
setOpacity: function(t) {
return this.options.opacity = t,
this._map && this._updateOpacity(),
this
},
setZIndex: function(t) {
return this.options.zIndex = t,
this._updateZIndex(),
this
},
setUrl: function(t, e) {
return this._url = t,
e || this.redraw(),
this
},
redraw: function() {
return this._map && (this._reset({
hard: !0
}),
this._update()),
this
},
_updateZIndex: function() {
this._container && this.options.zIndex !== i && (this._container.style.zIndex = this.options.zIndex)
},
_setAutoZIndex: function(t, e) {
var i, n, o, s = t.children, a = -e(1 / 0, -(1 / 0));
for (n = 0,
o = s.length; o > n; n++)
s[n] !== this._container && (i = parseInt(s[n].style.zIndex, 10),
isNaN(i) || (a = e(a, i)));
this.options.zIndex = this._container.style.zIndex = (isFinite(a) ? a : 0) + e(1, -1)
},
_updateOpacity: function() {
var t, e = this._tiles;
if (o.Browser.ielt9)
for (t in e)
o.DomUtil.setOpacity(e[t], this.options.opacity);
else
o.DomUtil.setOpacity(this._container, this.options.opacity)
},
_initContainer: function() {
var t = this._map._panes.tilePane;
if (!this._container) {
if (this._container = o.DomUtil.create("div", "leaflet-layer"),
this._updateZIndex(),
this._animated) {
var e = "leaflet-tile-container";
this._bgBuffer = o.DomUtil.create("div", e, this._container),
this._tileContainer = o.DomUtil.create("div", e, this._container)
} else
this._tileContainer = this._container;
t.appendChild(this._container),
this.options.opacity < 1 && this._updateOpacity()
}
},
_reset: function(t) {
for (var e in this._tiles)
this.fire("tileunload", {
tile: this._tiles[e]
});
this._tiles = {},
this._tilesToLoad = 0,
this.options.reuseTiles && (this._unusedTiles = []),
this._tileContainer.innerHTML = "",
this._animated && t && t.hard && this._clearBgBuffer(),
this._initContainer()
},
_getTileSize: function() {
var t = this._map
, e = t.getZoom() + this.options.zoomOffset
, i = this.options.maxNativeZoom
, n = this.options.tileSize;
return i && e > i && (n = Math.round(t.getZoomScale(e) / t.getZoomScale(i) * n)),
n
},
_update: function() {
if (this._map) {
var t = this._map
, e = t.getPixelBounds()
, i = t.getZoom()
, n = this._getTileSize();
if (!(i > this.options.maxZoom || i < this.options.minZoom)) {
var s = o.bounds(e.min.divideBy(n)._floor(), e.max.divideBy(n)._floor());
this._addTilesFromCenterOut(s),
(this.options.unloadInvisibleTiles || this.options.reuseTiles) && this._removeOtherTiles(s)
}
}
},
_addTilesFromCenterOut: function(t) {
var i, n, s, a = [], r = t.getCenter();
for (i = t.min.y; i <= t.max.y; i++)
for (n = t.min.x; n <= t.max.x; n++)
s = new o.Point(n,i),
this._tileShouldBeLoaded(s) && a.push(s);
var h = a.length;
if (0 !== h) {
a.sort(function(t, e) {
return t.distanceTo(r) - e.distanceTo(r)
});
var l = e.createDocumentFragment();
for (this._tilesToLoad || this.fire("loading"),
this._tilesToLoad += h,
n = 0; h > n; n++)
this._addTile(a[n], l);
this._tileContainer.appendChild(l)
}
},
_tileShouldBeLoaded: function(t) {
if (t.x + ":" + t.y in this._tiles)
return !1;
var e = this.options;
if (!e.continuousWorld) {
var i = this._getWrapTileNum();
if (e.noWrap && (t.x < 0 || t.x >= i.x) || t.y < 0 || t.y >= i.y)
return !1
}
if (e.bounds) {
var n = this._getTileSize()
, o = t.multiplyBy(n)
, s = o.add([n, n])
, a = this._map.unproject(o)
, r = this._map.unproject(s);
if (e.continuousWorld || e.noWrap || (a = a.wrap(),
r = r.wrap()),
!e.bounds.intersects([a, r]))
return !1
}
return !0
},
_removeOtherTiles: function(t) {
var e, i, n, o;
for (o in this._tiles)
e = o.split(":"),
i = parseInt(e[0], 10),
n = parseInt(e[1], 10),
(i < t.min.x || i > t.max.x || n < t.min.y || n > t.max.y) && this._removeTile(o)
},
_removeTile: function(t) {
var e = this._tiles[t];
this.fire("tileunload", {
tile: e,
url: e.src
}),
this.options.reuseTiles ? (o.DomUtil.removeClass(e, "leaflet-tile-loaded"),
this._unusedTiles.push(e)) : e.parentNode === this._tileContainer && this._tileContainer.removeChild(e),
o.Browser.android || (e.onload = null,
e.src = o.Util.emptyImageUrl),
delete this._tiles[t]
},
_addTile: function(t, e) {
var i = this._getTilePos(t)
, n = this._getTile();
o.DomUtil.setPosition(n, i, o.Browser.chrome),
this._tiles[t.x + ":" + t.y] = n,
this._loadTile(n, t),
n.parentNode !== this._tileContainer && e.appendChild(n)
},
_getZoomForUrl: function() {
var t = this.options
, e = this._map.getZoom();
return t.zoomReverse && (e = t.maxZoom - e),
e += t.zoomOffset,
t.maxNativeZoom ? Math.min(e, t.maxNativeZoom) : e
},
_getTilePos: function(t) {
var e = this._map.getPixelOrigin()
, i = this._getTileSize();
return t.multiplyBy(i).subtract(e)
},
getTileUrl: function(t) {
return o.Util.template(this._url, o.extend({
s: this._getSubdomain(t),
z: t.z,
x: t.x,
y: t.y
}, this.options))
},
_getWrapTileNum: function() {
var t = this._map.options.crs
, e = t.getSize(this._map.getZoom());
return e.divideBy(this._getTileSize())._floor()
},
_adjustTilePoint: function(t) {
var e = this._getWrapTileNum();
this.options.continuousWorld || this.options.noWrap || (t.x = (t.x % e.x + e.x) % e.x),
this.options.tms && (t.y = e.y - t.y - 1),
t.z = this._getZoomForUrl()
},
_getSubdomain: function(t) {
var e = Math.abs(t.x + t.y) % this.options.subdomains.length;
return this.options.subdomains[e]
},
_getTile: function() {
if (this.options.reuseTiles && this._unusedTiles.length > 0) {
var t = this._unusedTiles.pop();
return this._resetTile(t),
t
}
return this._createTile()
},
_resetTile: function() {},
_createTile: function() {
var t = o.DomUtil.create("img", "leaflet-tile");
return t.style.width = t.style.height = this._getTileSize() + "px",
t.galleryimg = "no",
t.onselectstart = t.onmousemove = o.Util.falseFn,
o.Browser.ielt9 && this.options.opacity !== i && o.DomUtil.setOpacity(t, this.options.opacity),
o.Browser.mobileWebkit3d && (t.style.WebkitBackfaceVisibility = "hidden"),
t
},
_loadTile: function(t, e) {
t._layer = this,
t.onload = this._tileOnLoad,
t.onerror = this._tileOnError,
this._adjustTilePoint(e),
t.src = this.getTileUrl(e),
this.fire("tileloadstart", {
tile: t,
url: t.src
})
},
_tileLoaded: function() {
this._tilesToLoad--,
this._animated && o.DomUtil.addClass(this._tileContainer, "leaflet-zoom-animated"),
this._tilesToLoad || (this.fire("load"),
this._animated && (clearTimeout(this._clearBgBufferTimer),
this._clearBgBufferTimer = setTimeout(o.bind(this._clearBgBuffer, this), 500)))
},
_tileOnLoad: function() {
var t = this._layer;
this.src !== o.Util.emptyImageUrl && (o.DomUtil.addClass(this, "leaflet-tile-loaded"),
t.fire("tileload", {
tile: this,
url: this.src
})),
t._tileLoaded()
},
_tileOnError: function() {
var t = this._layer;
t.fire("tileerror", {
tile: this,
url: this.src
});
var e = t.options.errorTileUrl;
e && (this.src = e),
t._tileLoaded()
}
}),
o.tileLayer = function(t, e) {
return new o.TileLayer(t,e)
}
,
o.TileLayer.WMS = o.TileLayer.extend({
defaultWmsParams: {
service: "WMS",
request: "GetMap",
version: "1.1.1",
layers: "",
styles: "",
format: "image/jpeg",
transparent: !1
},
initialize: function(t, e) {
this._url = t;
var i = o.extend({}, this.defaultWmsParams)
, n = e.tileSize || this.options.tileSize;
e.detectRetina && o.Browser.retina ? i.width = i.height = 2 * n : i.width = i.height = n;
for (var s in e)
this.options.hasOwnProperty(s) || "crs" === s || (i[s] = e[s]);
this.wmsParams = i,
o.setOptions(this, e)
},
onAdd: function(t) {
this._crs = this.options.crs || t.options.crs,
this._wmsVersion = parseFloat(this.wmsParams.version);
var e = this._wmsVersion >= 1.3 ? "crs" : "srs";
this.wmsParams[e] = this._crs.code,
o.TileLayer.prototype.onAdd.call(this, t)
},
getTileUrl: function(t) {
var e = this._map
, i = this.options.tileSize
, n = t.multiplyBy(i)
, s = n.add([i, i])
, a = this._crs.project(e.unproject(n, t.z))
, r = this._crs.project(e.unproject(s, t.z))
, h = this._wmsVersion >= 1.3 && this._crs === o.CRS.EPSG4326 ? [r.y, a.x, a.y, r.x].join(",") : [a.x, r.y, r.x, a.y].join(",")
, l = o.Util.template(this._url, {
s: this._getSubdomain(t)
});
return l + o.Util.getParamString(this.wmsParams, l, !0) + "&BBOX=" + h
},
setParams: function(t, e) {
return o.extend(this.wmsParams, t),
e || this.redraw(),
this
}
}),
o.tileLayer.wms = function(t, e) {
return new o.TileLayer.WMS(t,e)
}
,
o.TileLayer.Canvas = o.TileLayer.extend({
options: {
async: !1
},
initialize: function(t) {
o.setOptions(this, t)
},
redraw: function() {
this._map && (this._reset({
hard: !0
}),
this._update());
for (var t in this._tiles)
this._redrawTile(this._tiles[t]);
return this
},
_redrawTile: function(t) {
this.drawTile(t, t._tilePoint, this._map._zoom)
},
_createTile: function() {
var t = o.DomUtil.create("canvas", "leaflet-tile");
return t.width = t.height = this.options.tileSize,
t.onselectstart = t.onmousemove = o.Util.falseFn,
t
},
_loadTile: function(t, e) {
t._layer = this,
t._tilePoint = e,
this._redrawTile(t),
this.options.async || this.tileDrawn(t)
},
drawTile: function() {},
tileDrawn: function(t) {
this._tileOnLoad.call(t)
}
}),
o.tileLayer.canvas = function(t) {
return new o.TileLayer.Canvas(t)
}
,
o.ImageOverlay = o.Class.extend({
includes: o.Mixin.Events,
options: {
opacity: 1
},
initialize: function(t, e, i) {
this._url = t,
this._bounds = o.latLngBounds(e),
o.setOptions(this, i)
},
onAdd: function(t) {
this._map = t,
this._image || this._initImage(),
t._panes.overlayPane.appendChild(this._image),
t.on("viewreset", this._reset, this),
t.options.zoomAnimation && o.Browser.any3d && t.on("zoomanim", this._animateZoom, this),
this._reset()
},
onRemove: function(t) {
t.getPanes().overlayPane.removeChild(this._image),
t.off("viewreset", this._reset, this),
t.options.zoomAnimation && t.off("zoomanim", this._animateZoom, this)
},
addTo: function(t) {
return t.addLayer(this),
this
},
setOpacity: function(t) {
return this.options.opacity = t,
this._updateOpacity(),
this
},
bringToFront: function() {
return this._image && this._map._panes.overlayPane.appendChild(this._image),
this
},
bringToBack: function() {
var t = this._map._panes.overlayPane;
return this._image && t.insertBefore(this._image, t.firstChild),
this
},
setUrl: function(t) {
this._url = t,
this._image.src = this._url
},
getAttribution: function() {
return this.options.attribution
},
_initImage: function() {
this._image = o.DomUtil.create("img", "leaflet-image-layer"),
this._map.options.zoomAnimation && o.Browser.any3d ? o.DomUtil.addClass(this._image, "leaflet-zoom-animated") : o.DomUtil.addClass(this._image, "leaflet-zoom-hide"),
this._updateOpacity(),
o.extend(this._image, {
galleryimg: "no",
onselectstart: o.Util.falseFn,
onmousemove: o.Util.falseFn,
onload: o.bind(this._onImageLoad, this),
src: this._url
})
},
_animateZoom: function(t) {
var e = this._map
, i = this._image
, n = e.getZoomScale(t.zoom)
, s = this._bounds.getNorthWest()
, a = this._bounds.getSouthEast()
, r = e._latLngToNewLayerPoint(s, t.zoom, t.center)
, h = e._latLngToNewLayerPoint(a, t.zoom, t.center)._subtract(r)
, l = r._add(h._multiplyBy(.5 * (1 - 1 / n)));
i.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(l) + " scale(" + n + ") "
},
_reset: function() {
var t = this._image
, e = this._map.latLngToLayerPoint(this._bounds.getNorthWest())
, i = this._map.latLngToLayerPoint(this._bounds.getSouthEast())._subtract(e);
o.DomUtil.setPosition(t, e),
t.style.width = i.x + "px",
t.style.height = i.y + "px"
},
_onImageLoad: function() {
this.fire("load")
},
_updateOpacity: function() {
o.DomUtil.setOpacity(this._image, this.options.opacity)
}
}),
o.imageOverlay = function(t, e, i) {
return new o.ImageOverlay(t,e,i)
}
,
o.Icon = o.Class.extend({
options: {
className: ""
},
initialize: function(t) {
o.setOptions(this, t)
},
createIcon: function(t) {
return this._createIcon("icon", t)
},
createShadow: function(t) {
return this._createIcon("shadow", t)
},
_createIcon: function(t, e) {
var i = this._getIconUrl(t);
if (!i) {
if ("icon" === t)
throw new Error("iconUrl not set in Icon options (see the docs).");
return null
}
var n;
return n = e && "IMG" === e.tagName ? this._createImg(i, e) : this._createImg(i),
this._setIconStyles(n, t),
n
},
_setIconStyles: function(t, e) {
var i, n = this.options, s = o.point(n[e + "Size"]);
i = "shadow" === e ? o.point(n.shadowAnchor || n.iconAnchor) : o.point(n.iconAnchor),
!i && s && (i = s.divideBy(2, !0)),
t.className = "leaflet-marker-" + e + " " + n.className,
i && (t.style.marginLeft = -i.x + "px",
t.style.marginTop = -i.y + "px"),
s && (t.style.width = s.x + "px",
t.style.height = s.y + "px")
},
_createImg: function(t, i) {
return i = i || e.createElement("img"),
i.src = t,
i
},
_getIconUrl: function(t) {
return o.Browser.retina && this.options[t + "RetinaUrl"] ? this.options[t + "RetinaUrl"] : this.options[t + "Url"]
}
}),
o.icon = function(t) {
return new o.Icon(t)
}
,
o.Icon.Default = o.Icon.extend({
options: {
iconSize: [25, 41],
iconAnchor: [12, 41],
popupAnchor: [1, -34],
shadowSize: [41, 41]
},
_getIconUrl: function(t) {
var e = t + "Url";
if (this.options[e])
return this.options[e];
o.Browser.retina && "icon" === t && (t += "-2x");
var i = o.Icon.Default.imagePath;
if (!i)
throw new Error("Couldn't autodetect L.Icon.Default.imagePath, set it manually.");
return i + "/marker-" + t + ".png"
}
}),
o.Icon.Default.imagePath = function() {
var t, i, n, o, s, a = e.getElementsByTagName("script"), r = /[\/^]leaflet[\-\._]?([\w\-\._]*)\.js\??/;
for (t = 0,
i = a.length; i > t; t++)
if (n = a[t].src,
o = n.match(r))
return s = n.split(r)[0],
(s ? s + "/" : "") + "images"
}(),
o.Marker = o.Class.extend({
includes: o.Mixin.Events,
options: {
icon: new o.Icon.Default,
title: "",
alt: "",
clickable: !0,
draggable: !1,
keyboard: !0,
zIndexOffset: 0,
opacity: 1,
riseOnHover: !1,
riseOffset: 250
},
initialize: function(t, e) {
o.setOptions(this, e),
this._latlng = o.latLng(t)
},
onAdd: function(t) {
this._map = t,
t.on("viewreset", this.update, this),
this._initIcon(),
this.update(),
this.fire("add"),
t.options.zoomAnimation && t.options.markerZoomAnimation && t.on("zoomanim", this._animateZoom, this)
},
addTo: function(t) {
return t.addLayer(this),
this
},
onRemove: function(t) {
this.dragging && this.dragging.disable(),
this._removeIcon(),
this._removeShadow(),
this.fire("remove"),
t.off({
viewreset: this.update,
zoomanim: this._animateZoom
}, this),
this._map = null
},
getLatLng: function() {
return this._latlng
},
setLatLng: function(t) {
return this._latlng = o.latLng(t),
this.update(),
this.fire("move", {
latlng: this._latlng
})
},
setZIndexOffset: function(t) {
return this.options.zIndexOffset = t,
this.update(),
this
},
setIcon: function(t) {
return this.options.icon = t,
this._map && (this._initIcon(),
this.update()),
this._popup && this.bindPopup(this._popup),
this
},
update: function() {
return this._icon && this._setPos(this._map.latLngToLayerPoint(this._latlng).round()),
this
},
_initIcon: function() {
var t = this.options
, e = this._map
, i = e.options.zoomAnimation && e.options.markerZoomAnimation
, n = i ? "leaflet-zoom-animated" : "leaflet-zoom-hide"
, s = t.icon.createIcon(this._icon)
, a = !1;
s !== this._icon && (this._icon && this._removeIcon(),
a = !0,
t.title && (s.title = t.title),
t.alt && (s.alt = t.alt)),
o.DomUtil.addClass(s, n),
t.keyboard && (s.tabIndex = "0"),
this._icon = s,
this._initInteraction(),
t.riseOnHover && o.DomEvent.on(s, "mouseover", this._bringToFront, this).on(s, "mouseout", this._resetZIndex, this);
var r = t.icon.createShadow(this._shadow)
, h = !1;
r !== this._shadow && (this._removeShadow(),
h = !0),
r && o.DomUtil.addClass(r, n),
this._shadow = r,
t.opacity < 1 && this._updateOpacity();
var l = this._map._panes;
a && l.markerPane.appendChild(this._icon),
r && h && l.shadowPane.appendChild(this._shadow)
},
_removeIcon: function() {
this.options.riseOnHover && o.DomEvent.off(this._icon, "mouseover", this._bringToFront).off(this._icon, "mouseout", this._resetZIndex),
this._map._panes.markerPane.removeChild(this._icon),
this._icon = null
},
_removeShadow: function() {
this._shadow && this._map._panes.shadowPane.removeChild(this._shadow),
this._shadow = null
},
_setPos: function(t) {
o.DomUtil.setPosition(this._icon, t),
this._shadow && o.DomUtil.setPosition(this._shadow, t),
this._zIndex = t.y + this.options.zIndexOffset,
this._resetZIndex()
},
_updateZIndex: function(t) {
this._icon.style.zIndex = this._zIndex + t
},
_animateZoom: function(t) {
var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center).round();
this._setPos(e)
},
_initInteraction: function() {
if (this.options.clickable) {
var t = this._icon
, e = ["dblclick", "mousedown", "mouseover", "mouseout", "contextmenu"];
o.DomUtil.addClass(t, "leaflet-clickable"),
o.DomEvent.on(t, "click", this._onMouseClick, this),
o.DomEvent.on(t, "keypress", this._onKeyPress, this);
for (var i = 0; i < e.length; i++)
o.DomEvent.on(t, e[i], this._fireMouseEvent, this);
o.Handler.MarkerDrag && (this.dragging = new o.Handler.MarkerDrag(this),
this.options.draggable && this.dragging.enable())
}
},
_onMouseClick: function(t) {
var e = this.dragging && this.dragging.moved();
(this.hasEventListeners(t.type) || e) && o.DomEvent.stopPropagation(t),
e || (this.dragging && this.dragging._enabled || !this._map.dragging || !this._map.dragging.moved()) && this.fire(t.type, {
originalEvent: t,
latlng: this._latlng
})
},
_onKeyPress: function(t) {
13 === t.keyCode && this.fire("click", {
originalEvent: t,
latlng: this._latlng
})
},
_fireMouseEvent: function(t) {
this.fire(t.type, {
originalEvent: t,
latlng: this._latlng
}),
"contextmenu" === t.type && this.hasEventListeners(t.type) && o.DomEvent.preventDefault(t),
"mousedown" !== t.type ? o.DomEvent.stopPropagation(t) : o.DomEvent.preventDefault(t)
},
setOpacity: function(t) {
return this.options.opacity = t,
this._map && this._updateOpacity(),
this
},
_updateOpacity: function() {
o.DomUtil.setOpacity(this._icon, this.options.opacity),
this._shadow && o.DomUtil.setOpacity(this._shadow, this.options.opacity)
},
_bringToFront: function() {
this._updateZIndex(this.options.riseOffset)
},
_resetZIndex: function() {
this._updateZIndex(0)
}
}),
o.marker = function(t, e) {
return new o.Marker(t,e)
}
,
o.DivIcon = o.Icon.extend({
options: {
iconSize: [12, 12],
className: "leaflet-div-icon",
html: !1
},
createIcon: function(t) {
var i = t && "DIV" === t.tagName ? t : e.createElement("div")
, n = this.options;
return n.html !== !1 ? i.innerHTML = n.html : i.innerHTML = "",
n.bgPos && (i.style.backgroundPosition = -n.bgPos.x + "px " + -n.bgPos.y + "px"),
this._setIconStyles(i, "icon"),
i
},
createShadow: function() {
return null
}
}),
o.divIcon = function(t) {
return new o.DivIcon(t)
}
,
o.Map.mergeOptions({
closePopupOnClick: !0
}),
o.Popup = o.Class.extend({
includes: o.Mixin.Events,
options: {
minWidth: 50,
maxWidth: 300,
autoPan: !0,
closeButton: !0,
offset: [0, 7],
autoPanPadding: [5, 5],
keepInView: !1,
className: "",
zoomAnimation: !0
},
initialize: function(t, e) {
o.setOptions(this, t),
this._source = e,
this._animated = o.Browser.any3d && this.options.zoomAnimation,
this._isOpen = !1
},
onAdd: function(t) {
this._map = t,
this._container || this._initLayout();
var e = t.options.fadeAnimation;
e && o.DomUtil.setOpacity(this._container, 0),
t._panes.popupPane.appendChild(this._container),
t.on(this._getEvents(), this),
this.update(),
e && o.DomUtil.setOpacity(this._container, 1),
this.fire("open"),
t.fire("popupopen", {
popup: this
}),
this._source && this._source.fire("popupopen", {
popup: this
})
},
addTo: function(t) {
return t.addLayer(this),
this
},
openOn: function(t) {
return t.openPopup(this),
this
},
onRemove: function(t) {
t._panes.popupPane.removeChild(this._container),
o.Util.falseFn(this._container.offsetWidth),
t.off(this._getEvents(), this),
t.options.fadeAnimation && o.DomUtil.setOpacity(this._container, 0),
this._map = null,
this.fire("close"),
t.fire("popupclose", {
popup: this
}),
this._source && this._source.fire("popupclose", {
popup: this
})
},
getLatLng: function() {
return this._latlng
},
setLatLng: function(t) {
return this._latlng = o.latLng(t),
this._map && (this._updatePosition(),
this._adjustPan()),
this
},
getContent: function() {
return this._content
},
setContent: function(t) {
return this._content = t,
this.update(),
this
},
update: function() {
this._map && (this._container.style.visibility = "hidden",
this._updateContent(),
this._updateLayout(),
this._updatePosition(),
this._container.style.visibility = "",
this._adjustPan())
},
_getEvents: function() {
var t = {
viewreset: this._updatePosition
};
return this._animated && (t.zoomanim = this._zoomAnimation),
("closeOnClick"in this.options ? this.options.closeOnClick : this._map.options.closePopupOnClick) && (t.preclick = this._close),
this.options.keepInView && (t.moveend = this._adjustPan),
t
},
_close: function() {
this._map && this._map.closePopup(this)
},
_initLayout: function() {
var t, e = "leaflet-popup", i = e + " " + this.options.className + " leaflet-zoom-" + (this._animated ? "animated" : "hide"), n = this._container = o.DomUtil.create("div", i);
this.options.closeButton && (t = this._closeButton = o.DomUtil.create("a", e + "-close-button", n),
t.href = "#close",
t.innerHTML = "×",
o.DomEvent.disableClickPropagation(t),
o.DomEvent.on(t, "click", this._onCloseButtonClick, this));
var s = this._wrapper = o.DomUtil.create("div", e + "-content-wrapper", n);
o.DomEvent.disableClickPropagation(s),
this._contentNode = o.DomUtil.create("div", e + "-content", s),
o.DomEvent.disableScrollPropagation(this._contentNode),
o.DomEvent.on(s, "contextmenu", o.DomEvent.stopPropagation),
this._tipContainer = o.DomUtil.create("div", e + "-tip-container", n),
this._tip = o.DomUtil.create("div", e + "-tip", this._tipContainer)
},
_updateContent: function() {
if (this._content) {
if ("string" == typeof this._content)
this._contentNode.innerHTML = this._content;
else {
for (; this._contentNode.hasChildNodes(); )
this._contentNode.removeChild(this._contentNode.firstChild);
this._contentNode.appendChild(this._content)
}
this.fire("contentupdate")
}
},
_updateLayout: function() {
var t = this._contentNode
, e = t.style;
e.width = "",
e.whiteSpace = "nowrap";
var i = t.offsetWidth;
i = Math.min(i, this.options.maxWidth),
i = Math.max(i, this.options.minWidth),
e.width = i + 1 + "px",
e.whiteSpace = "",
e.height = "";
var n = t.offsetHeight
, s = this.options.maxHeight
, a = "leaflet-popup-scrolled";
s && n > s ? (e.height = s + "px",
o.DomUtil.addClass(t, a)) : o.DomUtil.removeClass(t, a),
this._containerWidth = this._container.offsetWidth
},
_updatePosition: function() {
if (this._map) {
var t = this._map.latLngToLayerPoint(this._latlng)
, e = this._animated
, i = o.point(this.options.offset);
e && o.DomUtil.setPosition(this._container, t),
this._containerBottom = -i.y - (e ? 0 : t.y),
this._containerLeft = -Math.round(this._containerWidth / 2) + i.x + (e ? 0 : t.x),
this._container.style.bottom = this._containerBottom + "px",
this._container.style.left = this._containerLeft + "px"
}
},
_zoomAnimation: function(t) {
var e = this._map._latLngToNewLayerPoint(this._latlng, t.zoom, t.center);
o.DomUtil.setPosition(this._container, e)
},
_adjustPan: function() {
if (this.options.autoPan) {
var t = this._map
, e = this._container.offsetHeight
, i = this._containerWidth
, n = new o.Point(this._containerLeft,-e - this._containerBottom);
this._animated && n._add(o.DomUtil.getPosition(this._container));
var s = t.layerPointToContainerPoint(n)
, a = o.point(this.options.autoPanPadding)
, r = o.point(this.options.autoPanPaddingTopLeft || a)
, h = o.point(this.options.autoPanPaddingBottomRight || a)
, l = t.getSize()
, u = 0
, c = 0;
s.x + i + h.x > l.x && (u = s.x + i - l.x + h.x),
s.x - u - r.x < 0 && (u = s.x - r.x),
s.y + e + h.y > l.y && (c = s.y + e - l.y + h.y),
s.y - c - r.y < 0 && (c = s.y - r.y),
(u || c) && t.fire("autopanstart").panBy([u, c])
}
},
_onCloseButtonClick: function(t) {
this._close(),
o.DomEvent.stop(t)
}
}),
o.popup = function(t, e) {
return new o.Popup(t,e)
}
,
o.Map.include({
openPopup: function(t, e, i) {
if (this.closePopup(),
!(t instanceof o.Popup)) {
var n = t;
t = new o.Popup(i).setLatLng(e).setContent(n)
}
return t._isOpen = !0,
this._popup = t,
this.addLayer(t)
},
closePopup: function(t) {
return t && t !== this._popup || (t = this._popup,
this._popup = null),
t && (this.removeLayer(t),
t._isOpen = !1),
this
}
}),
o.Marker.include({
openPopup: function() {
return this._popup && this._map && !this._map.hasLayer(this._popup) && (this._popup.setLatLng(this._latlng),
this._map.openPopup(this._popup)),
this
},
closePopup: function() {
return this._popup && this._popup._close(),
this
},
togglePopup: function() {
return this._popup && (this._popup._isOpen ? this.closePopup() : this.openPopup()),
this
},
bindPopup: function(t, e) {
var i = o.point(this.options.icon.options.popupAnchor || [0, 0]);
return i = i.add(o.Popup.prototype.options.offset),
e && e.offset && (i = i.add(e.offset)),
e = o.extend({
offset: i
}, e),
this._popupHandlersAdded || (this.on("click", this.togglePopup, this).on("remove", this.closePopup, this).on("move", this._movePopup, this),
this._popupHandlersAdded = !0),
t instanceof o.Popup ? (o.setOptions(t, e),
this._popup = t,
t._source = this) : this._popup = new o.Popup(e,this).setContent(t),
this
},
setPopupContent: function(t) {
return this._popup && this._popup.setContent(t),
this
},
unbindPopup: function() {
return this._popup && (this._popup = null,
this.off("click", this.togglePopup, this).off("remove", this.closePopup, this).off("move", this._movePopup, this),
this._popupHandlersAdded = !1),
this
},
getPopup: function() {
return this._popup
},
_movePopup: function(t) {
this._popup.setLatLng(t.latlng)
}
}),
o.LayerGroup = o.Class.extend({
initialize: function(t) {
this._layers = {};
var e, i;
if (t)
for (e = 0,
i = t.length; i > e; e++)
this.addLayer(t[e])
},
addLayer: function(t) {
var e = this.getLayerId(t);
return this._layers[e] = t,
this._map && this._map.addLayer(t),
this
},
removeLayer: function(t) {
var e = t in this._layers ? t : this.getLayerId(t);
return this._map && this._layers[e] && this._map.removeLayer(this._layers[e]),
delete this._layers[e],
this
},
hasLayer: function(t) {
return t ? t in this._layers || this.getLayerId(t)in this._layers : !1
},
clearLayers: function() {
return this.eachLayer(this.removeLayer, this),
this
},
invoke: function(t) {
var e, i, n = Array.prototype.slice.call(arguments, 1);
for (e in this._layers)
i = this._layers[e],
i[t] && i[t].apply(i, n);
return this
},
onAdd: function(t) {
this._map = t,
this.eachLayer(t.addLayer, t)
},
onRemove: function(t) {
this.eachLayer(t.removeLayer, t),
this._map = null
},
addTo: function(t) {
return t.addLayer(this),
this
},
eachLayer: function(t, e) {
for (var i in this._layers)
t.call(e, this._layers[i]);
return this
},
getLayer: function(t) {
return this._layers[t]
},
getLayers: function() {
var t = [];
for (var e in this._layers)
t.push(this._layers[e]);
return t
},
setZIndex: function(t) {
return this.invoke("setZIndex", t)
},
getLayerId: function(t) {
return o.stamp(t)
}
}),
o.layerGroup = function(t) {
return new o.LayerGroup(t)
}
,
o.FeatureGroup = o.LayerGroup.extend({
includes: o.Mixin.Events,
statics: {
EVENTS: "click dblclick mouseover mouseout mousemove contextmenu popupopen popupclose"
},
addLayer: function(t) {
return this.hasLayer(t) ? this : ("on"in t && t.on(o.FeatureGroup.EVENTS, this._propagateEvent, this),
o.LayerGroup.prototype.addLayer.call(this, t),
this._popupContent && t.bindPopup && t.bindPopup(this._popupContent, this._popupOptions),
this.fire("layeradd", {
layer: t
}))
},
removeLayer: function(t) {
return this.hasLayer(t) ? (t in this._layers && (t = this._layers[t]),
"off"in t && t.off(o.FeatureGroup.EVENTS, this._propagateEvent, this),
o.LayerGroup.prototype.removeLayer.call(this, t),
this._popupContent && this.invoke("unbindPopup"),
this.fire("layerremove", {
layer: t
})) : this
},
bindPopup: function(t, e) {
return this._popupContent = t,
this._popupOptions = e,
this.invoke("bindPopup", t, e)
},
openPopup: function(t) {
for (var e in this._layers) {
this._layers[e].openPopup(t);
break
}
return this
},
setStyle: function(t) {
return this.invoke("setStyle", t)
},
bringToFront: function() {
return this.invoke("bringToFront")
},
bringToBack: function() {
return this.invoke("bringToBack")
},
getBounds: function() {
var t = new o.LatLngBounds;
return this.eachLayer(function(e) {
t.extend(e instanceof o.Marker ? e.getLatLng() : e.getBounds())
}),
t
},
_propagateEvent: function(t) {
t = o.extend({
layer: t.target,
target: this
}, t),
this.fire(t.type, t)
}
}),
o.featureGroup = function(t) {
return new o.FeatureGroup(t)
}
,
o.Path = o.Class.extend({
includes: [o.Mixin.Events],
statics: {
CLIP_PADDING: function() {
var e = o.Browser.mobile ? 1280 : 2e3
, i = (e / Math.max(t.outerWidth, t.outerHeight) - 1) / 2;
return Math.max(0, Math.min(.5, i))
}()
},
options: {
stroke: !0,
color: "#0033ff",
dashArray: null,
lineCap: null,
lineJoin: null,
weight: 5,
opacity: .5,
fill: !1,
fillColor: null,
fillOpacity: .2,
clickable: !0
},
initialize: function(t) {
o.setOptions(this, t)
},
onAdd: function(t) {
this._map = t,
this._container || (this._initElements(),
this._initEvents()),
this.projectLatlngs(),
this._updatePath(),
this._container && this._map._pathRoot.appendChild(this._container),
this.fire("add"),
t.on({
viewreset: this.projectLatlngs,
moveend: this._updatePath
}, this)
},
addTo: function(t) {
return t.addLayer(this),
this
},
onRemove: function(t) {
t._pathRoot.removeChild(this._container),
this.fire("remove"),
this._map = null,
o.Browser.vml && (this._container = null,
this._stroke = null,
this._fill = null),
t.off({
viewreset: this.projectLatlngs,
moveend: this._updatePath
}, this)
},
projectLatlngs: function() {},
setStyle: function(t) {
return o.setOptions(this, t),
this._container && this._updateStyle(),
this
},
redraw: function() {
return this._map && (this.projectLatlngs(),
this._updatePath()),
this
}
}),
o.Map.include({
_updatePathViewport: function() {
var t = o.Path.CLIP_PADDING
, e = this.getSize()
, i = o.DomUtil.getPosition(this._mapPane)
, n = i.multiplyBy(-1)._subtract(e.multiplyBy(t)._round())
, s = n.add(e.multiplyBy(1 + 2 * t)._round());
this._pathViewport = new o.Bounds(n,s)
}
}),
o.Path.SVG_NS = "http://www.w3.org/2000/svg",
o.Browser.svg = !(!e.createElementNS || !e.createElementNS(o.Path.SVG_NS, "svg").createSVGRect),
o.Path = o.Path.extend({
statics: {
SVG: o.Browser.svg
},
bringToFront: function() {
var t = this._map._pathRoot
, e = this._container;
return e && t.lastChild !== e && t.appendChild(e),
this
},
bringToBack: function() {
var t = this._map._pathRoot
, e = this._container
, i = t.firstChild;
return e && i !== e && t.insertBefore(e, i),
this
},
getPathString: function() {},
_createElement: function(t) {
return e.createElementNS(o.Path.SVG_NS, t)
},
_initElements: function() {
this._map._initPathRoot(),
this._initPath(),
this._initStyle()
},
_initPath: function() {
this._container = this._createElement("g"),
this._path = this._createElement("path"),
this.options.className && o.DomUtil.addClass(this._path, this.options.className),
this._container.appendChild(this._path)
},
_initStyle: function() {
this.options.stroke && (this._path.setAttribute("stroke-linejoin", "round"),
this._path.setAttribute("stroke-linecap", "round")),
this.options.fill && this._path.setAttribute("fill-rule", "evenodd"),
this.options.pointerEvents && this._path.setAttribute("pointer-events", this.options.pointerEvents),
this.options.clickable || this.options.pointerEvents || this._path.setAttribute("pointer-events", "none"),
this._updateStyle()
},
_updateStyle: function() {
this.options.stroke ? (this._path.setAttribute("stroke", this.options.color),
this._path.setAttribute("stroke-opacity", this.options.opacity),
this._path.setAttribute("stroke-width", this.options.weight),
this.options.dashArray ? this._path.setAttribute("stroke-dasharray", this.options.dashArray) : this._path.removeAttribute("stroke-dasharray"),
this.options.lineCap && this._path.setAttribute("stroke-linecap", this.options.lineCap),
this.options.lineJoin && this._path.setAttribute("stroke-linejoin", this.options.lineJoin)) : this._path.setAttribute("stroke", "none"),
this.options.fill ? (this._path.setAttribute("fill", this.options.fillColor || this.options.color),
this._path.setAttribute("fill-opacity", this.options.fillOpacity)) : this._path.setAttribute("fill", "none")
},
_updatePath: function() {
var t = this.getPathString();
t || (t = "M0 0"),
this._path.setAttribute("d", t)
},
_initEvents: function() {
if (this.options.clickable) {
(o.Browser.svg || !o.Browser.vml) && o.DomUtil.addClass(this._path, "leaflet-clickable"),
o.DomEvent.on(this._container, "click", this._onMouseClick, this);
for (var t = ["dblclick", "mousedown", "mouseover", "mouseout", "mousemove", "contextmenu"], e = 0; e < t.length; e++)
o.DomEvent.on(this._container, t[e], this._fireMouseEvent, this)
}
},
_onMouseClick: function(t) {
this._map.dragging && this._map.dragging.moved() || this._fireMouseEvent(t)
},
_fireMouseEvent: function(t) {
if (this._map && this.hasEventListeners(t.type)) {
var e = this._map
, i = e.mouseEventToContainerPoint(t)
, n = e.containerPointToLayerPoint(i)
, s = e.layerPointToLatLng(n);
this.fire(t.type, {
latlng: s,
layerPoint: n,
containerPoint: i,
originalEvent: t
}),
"contextmenu" === t.type && o.DomEvent.preventDefault(t),
"mousemove" !== t.type && o.DomEvent.stopPropagation(t)
}
}
}),
o.Map.include({
_initPathRoot: function() {
this._pathRoot || (this._pathRoot = o.Path.prototype._createElement("svg"),
this._panes.overlayPane.appendChild(this._pathRoot),
this.options.zoomAnimation && o.Browser.any3d ? (o.DomUtil.addClass(this._pathRoot, "leaflet-zoom-animated"),
this.on({
zoomanim: this._animatePathZoom,
zoomend: this._endPathZoom
})) : o.DomUtil.addClass(this._pathRoot, "leaflet-zoom-hide"),
this.on("moveend", this._updateSvgViewport),
this._updateSvgViewport())
},
_animatePathZoom: function(t) {
var e = this.getZoomScale(t.zoom)
, i = this._getCenterOffset(t.center)._multiplyBy(-e)._add(this._pathViewport.min);
this._pathRoot.style[o.DomUtil.TRANSFORM] = o.DomUtil.getTranslateString(i) + " scale(" + e + ") ",
this._pathZooming = !0
},
_endPathZoom: function() {
this._pathZooming = !1
},
_updateSvgViewport: function() {
if (!this._pathZooming) {
this._updatePathViewport();
var t = this._pathViewport
, e = t.min
, i = t.max
, n = i.x - e.x
, s = i.y - e.y
, a = this._pathRoot
, r = this._panes.overlayPane;
o.Browser.mobileWebkit && r.removeChild(a),
o.DomUtil.setPosition(a, e),
a.setAttribute("width", n),
a.setAttribute("height", s),
a.setAttribute("viewBox", [e.x, e.y, n, s].join(" ")),
o.Browser.mobileWebkit && r.appendChild(a)
}
}
}),
o.Path.include({
bindPopup: function(t, e) {
return t instanceof o.Popup ? this._popup = t : ((!this._popup || e) && (this._popup = new o.Popup(e,this)),
this._popup.setContent(t)),
this._popupHandlersAdded || (this.on("click", this._openPopup, this).on("remove", this.closePopup, this),
this._popupHandlersAdded = !0),
this
},
unbindPopup: function() {
return this._popup && (this._popup = null,
this.off("click", this._openPopup).off("remove", this.closePopup),
this._popupHandlersAdded = !1),
this
},
openPopup: function(t) {
return this._popup && (t = t || this._latlng || this._latlngs[Math.floor(this._latlngs.length / 2)],
this._openPopup({
latlng: t
})),
this
},
closePopup: function() {
return this._popup && this._popup._close(),
this
},
_openPopup: function(t) {
this._popup.setLatLng(t.latlng),
this._map.openPopup(this._popup)
}
}),
o.Browser.vml = !o.Browser.svg && function() {
try {
var t = e.createElement("div");
t.innerHTML = '';
var i = t.firstChild;
return i.style.behavior = "url(#default#VML)",
i && "object" == typeof i.adj
} catch (n) {
return !1
}
}(),
o.Path = o.Browser.svg || !o.Browser.vml ? o.Path : o.Path.extend({
statics: {
VML: !0,
CLIP_PADDING: .02
},
_createElement: function() {
try {
return e.namespaces.add("lvml", "urn:schemas-microsoft-com:vml"),
function(t) {
return e.createElement("')
}
} catch (t) {
return function(t) {
return e.createElement("<" + t + ' xmlns="urn:schemas-microsoft.com:vml" class="lvml">')
}
}
}(),
_initPath: function() {
var t = this._container = this._createElement("shape");
o.DomUtil.addClass(t, "leaflet-vml-shape" + (this.options.className ? " " + this.options.className : "")),
this.options.clickable && o.DomUtil.addClass(t, "leaflet-clickable"),
t.coordsize = "1 1",
this._path = this._createElement("path"),
t.appendChild(this._path),
this._map._pathRoot.appendChild(t)
},
_initStyle: function() {
this._updateStyle()
},
_updateStyle: function() {
var t = this._stroke
, e = this._fill
, i = this.options
, n = this._container;
n.stroked = i.stroke,
n.filled = i.fill,
i.stroke ? (t || (t = this._stroke = this._createElement("stroke"),
t.endcap = "round",
n.appendChild(t)),
t.weight = i.weight + "px",
t.color = i.color,
t.opacity = i.opacity,
i.dashArray ? t.dashStyle = o.Util.isArray(i.dashArray) ? i.dashArray.join(" ") : i.dashArray.replace(/( *, *)/g, " ") : t.dashStyle = "",
i.lineCap && (t.endcap = i.lineCap.replace("butt", "flat")),
i.lineJoin && (t.joinstyle = i.lineJoin)) : t && (n.removeChild(t),
this._stroke = null),
i.fill ? (e || (e = this._fill = this._createElement("fill"),
n.appendChild(e)),
e.color = i.fillColor || i.color,
e.opacity = i.fillOpacity) : e && (n.removeChild(e),
this._fill = null)
},
_updatePath: function() {
var t = this._container.style;
t.display = "none",
this._path.v = this.getPathString() + " ",
t.display = ""
}
}),
o.Map.include(o.Browser.svg || !o.Browser.vml ? {} : {
_initPathRoot: function() {
if (!this._pathRoot) {
var t = this._pathRoot = e.createElement("div");
t.className = "leaflet-vml-container",
this._panes.overlayPane.appendChild(t),
this.on("moveend", this._updatePathViewport),
this._updatePathViewport()
}
}
}),
o.Browser.canvas = function() {
return !!e.createElement("canvas").getContext
}(),
o.Path = o.Path.SVG && !t.L_PREFER_CANVAS || !o.Browser.canvas ? o.Path : o.Path.extend({
statics: {
CANVAS: !0,
SVG: !1
},
redraw: function() {
return this._map && (this.projectLatlngs(),
this._requestUpdate()),
this
},
setStyle: function(t) {
return o.setOptions(this, t),
this._map && (this._updateStyle(),
this._requestUpdate()),
this
},
onRemove: function(t) {
t.off("viewreset", this.projectLatlngs, this).off("moveend", this._updatePath, this),
this.options.clickable && (this._map.off("click", this._onClick, this),
this._map.off("mousemove", this._onMouseMove, this)),
this._requestUpdate(),
this.fire("remove"),
this._map = null
},
_requestUpdate: function() {
this._map && !o.Path._updateRequest && (o.Path._updateRequest = o.Util.requestAnimFrame(this._fireMapMoveEnd, this._map))
},
_fireMapMoveEnd: function() {
o.Path._updateRequest = null,
this.fire("moveend")
},
_initElements: function() {
this._map._initPathRoot(),
this._ctx = this._map._canvasCtx
},
_updateStyle: function() {
var t = this.options;
t.stroke && (this._ctx.lineWidth = t.weight,
this._ctx.strokeStyle = t.color),
t.fill && (this._ctx.fillStyle = t.fillColor || t.color),
t.lineCap && (this._ctx.lineCap = t.lineCap),
t.lineJoin && (this._ctx.lineJoin = t.lineJoin)
},
_drawPath: function() {
var t, e, i, n, s, a;
for (this._ctx.beginPath(),
t = 0,
i = this._parts.length; i > t; t++) {
for (e = 0,
n = this._parts[t].length; n > e; e++)
s = this._parts[t][e],
a = (0 === e ? "move" : "line") + "To",
this._ctx[a](s.x, s.y);
this instanceof o.Polygon && this._ctx.closePath()
}
},
_checkIfEmpty: function() {
return !this._parts.length
},
_updatePath: function() {
if (!this._checkIfEmpty()) {
var t = this._ctx
, e = this.options;
this._drawPath(),
t.save(),
this._updateStyle(),
e.fill && (t.globalAlpha = e.fillOpacity,
t.fill(e.fillRule || "evenodd")),
e.stroke && (t.globalAlpha = e.opacity,
t.stroke()),
t.restore()
}
},
_initEvents: function() {
this.options.clickable && (this._map.on("mousemove", this._onMouseMove, this),
this._map.on("click dblclick contextmenu", this._fireMouseEvent, this))
},
_fireMouseEvent: function(t) {
this._containsPoint(t.layerPoint) && this.fire(t.type, t)
},
_onMouseMove: function(t) {
this._map && !this._map._animatingZoom && (this._containsPoint(t.layerPoint) ? (this._ctx.canvas.style.cursor = "pointer",
this._mouseInside = !0,
this.fire("mouseover", t)) : this._mouseInside && (this._ctx.canvas.style.cursor = "",
this._mouseInside = !1,
this.fire("mouseout", t)))
}
}),
o.Map.include(o.Path.SVG && !t.L_PREFER_CANVAS || !o.Browser.canvas ? {} : {
_initPathRoot: function() {
var t, i = this._pathRoot;
i || (i = this._pathRoot = e.createElement("canvas"),
i.style.position = "absolute",
t = this._canvasCtx = i.getContext("2d"),
t.lineCap = "round",
t.lineJoin = "round",
this._panes.overlayPane.appendChild(i),
this.options.zoomAnimation && (this._pathRoot.className = "leaflet-zoom-animated",
this.on("zoomanim", this._animatePathZoom),
this.on("zoomend", this._endPathZoom)),
this.on("moveend", this._updateCanvasViewport),
this._updateCanvasViewport())
},
_updateCanvasViewport: function() {
if (!this._pathZooming) {
this._updatePathViewport();
var t = this._pathViewport
, e = t.min
, i = t.max.subtract(e)
, n = this._pathRoot;
o.DomUtil.setPosition(n, e),
n.width = i.x,
n.height = i.y,
n.getContext("2d").translate(-e.x, -e.y)
}
}
}),
o.LineUtil = {
simplify: function(t, e) {
if (!e || !t.length)
return t.slice();
var i = e * e;
return t = this._reducePoints(t, i),
t = this._simplifyDP(t, i)
},
pointToSegmentDistance: function(t, e, i) {
return Math.sqrt(this._sqClosestPointOnSegment(t, e, i, !0))
},
closestPointOnSegment: function(t, e, i) {
return this._sqClosestPointOnSegment(t, e, i)
},
_simplifyDP: function(t, e) {
var n = t.length
, o = typeof Uint8Array != i + "" ? Uint8Array : Array
, s = new o(n);
s[0] = s[n - 1] = 1,
this._simplifyDPStep(t, s, e, 0, n - 1);
var a, r = [];
for (a = 0; n > a; a++)
s[a] && r.push(t[a]);
return r
},
_simplifyDPStep: function(t, e, i, n, o) {
var s, a, r, h = 0;
for (a = n + 1; o - 1 >= a; a++)
r = this._sqClosestPointOnSegment(t[a], t[n], t[o], !0),
r > h && (s = a,
h = r);
h > i && (e[s] = 1,
this._simplifyDPStep(t, e, i, n, s),
this._simplifyDPStep(t, e, i, s, o))
},
_reducePoints: function(t, e) {
for (var i = [t[0]], n = 1, o = 0, s = t.length; s > n; n++)
this._sqDist(t[n], t[o]) > e && (i.push(t[n]),
o = n);
return s - 1 > o && i.push(t[s - 1]),
i
},
clipSegment: function(t, e, i, n) {
var o, s, a, r = n ? this._lastCode : this._getBitCode(t, i), h = this._getBitCode(e, i);
for (this._lastCode = h; ; ) {
if (!(r | h))
return [t, e];
if (r & h)
return !1;
o = r || h,
s = this._getEdgeIntersection(t, e, o, i),
a = this._getBitCode(s, i),
o === r ? (t = s,
r = a) : (e = s,
h = a)
}
},
_getEdgeIntersection: function(t, e, i, n) {
var s = e.x - t.x
, a = e.y - t.y
, r = n.min
, h = n.max;
return 8 & i ? new o.Point(t.x + s * (h.y - t.y) / a,h.y) : 4 & i ? new o.Point(t.x + s * (r.y - t.y) / a,r.y) : 2 & i ? new o.Point(h.x,t.y + a * (h.x - t.x) / s) : 1 & i ? new o.Point(r.x,t.y + a * (r.x - t.x) / s) : void 0
},
_getBitCode: function(t, e) {
var i = 0;
return t.x < e.min.x ? i |= 1 : t.x > e.max.x && (i |= 2),
t.y < e.min.y ? i |= 4 : t.y > e.max.y && (i |= 8),
i
},
_sqDist: function(t, e) {
var i = e.x - t.x
, n = e.y - t.y;
return i * i + n * n
},
_sqClosestPointOnSegment: function(t, e, i, n) {
var s, a = e.x, r = e.y, h = i.x - a, l = i.y - r, u = h * h + l * l;
return u > 0 && (s = ((t.x - a) * h + (t.y - r) * l) / u,
s > 1 ? (a = i.x,
r = i.y) : s > 0 && (a += h * s,
r += l * s)),
h = t.x - a,
l = t.y - r,
n ? h * h + l * l : new o.Point(a,r)
}
},
o.Polyline = o.Path.extend({
initialize: function(t, e) {
o.Path.prototype.initialize.call(this, e),
this._latlngs = this._convertLatLngs(t)
},
options: {
smoothFactor: 1,
noClip: !1
},
projectLatlngs: function() {
this._originalPoints = [];
for (var t = 0, e = this._latlngs.length; e > t; t++)
this._originalPoints[t] = this._map.latLngToLayerPoint(this._latlngs[t])
},
getPathString: function() {
for (var t = 0, e = this._parts.length, i = ""; e > t; t++)
i += this._getPathPartStr(this._parts[t]);
return i
},
getLatLngs: function() {
return this._latlngs
},
setLatLngs: function(t) {
return this._latlngs = this._convertLatLngs(t),
this.redraw()
},
addLatLng: function(t) {
return this._latlngs.push(o.latLng(t)),
this.redraw()
},
spliceLatLngs: function() {
var t = [].splice.apply(this._latlngs, arguments);
return this._convertLatLngs(this._latlngs, !0),
this.redraw(),
t
},
closestLayerPoint: function(t) {
for (var e, i, n = 1 / 0, s = this._parts, a = null, r = 0, h = s.length; h > r; r++)
for (var l = s[r], u = 1, c = l.length; c > u; u++) {
e = l[u - 1],
i = l[u];
var d = o.LineUtil._sqClosestPointOnSegment(t, e, i, !0);
n > d && (n = d,
a = o.LineUtil._sqClosestPointOnSegment(t, e, i))
}
return a && (a.distance = Math.sqrt(n)),
a
},
getBounds: function() {
return new o.LatLngBounds(this.getLatLngs())
},
_convertLatLngs: function(t, e) {
var i, n, s = e ? t : [];
for (i = 0,
n = t.length; n > i; i++) {
if (o.Util.isArray(t[i]) && "number" != typeof t[i][0])
return;
s[i] = o.latLng(t[i])
}
return s
},
_initEvents: function() {
o.Path.prototype._initEvents.call(this)
},
_getPathPartStr: function(t) {
for (var e, i = o.Path.VML, n = 0, s = t.length, a = ""; s > n; n++)
e = t[n],
i && e._round(),
a += (n ? "L" : "M") + e.x + " " + e.y;
return a
},
_clipPoints: function() {
var t, e, i, n = this._originalPoints, s = n.length;
if (this.options.noClip)
return void (this._parts = [n]);
this._parts = [];
var a = this._parts
, r = this._map._pathViewport
, h = o.LineUtil;
for (t = 0,
e = 0; s - 1 > t; t++)
i = h.clipSegment(n[t], n[t + 1], r, t),
i && (a[e] = a[e] || [],
a[e].push(i[0]),
(i[1] !== n[t + 1] || t === s - 2) && (a[e].push(i[1]),
e++))
},
_simplifyPoints: function() {
for (var t = this._parts, e = o.LineUtil, i = 0, n = t.length; n > i; i++)
t[i] = e.simplify(t[i], this.options.smoothFactor)
},
_updatePath: function() {
this._map && (this._clipPoints(),
this._simplifyPoints(),
o.Path.prototype._updatePath.call(this))
}
}),
o.polyline = function(t, e) {
return new o.Polyline(t,e)
}
,
o.PolyUtil = {},
o.PolyUtil.clipPolygon = function(t, e) {
var i, n, s, a, r, h, l, u, c, d = [1, 4, 2, 8], p = o.LineUtil;
for (n = 0,
l = t.length; l > n; n++)
t[n]._code = p._getBitCode(t[n], e);
for (a = 0; 4 > a; a++) {
for (u = d[a],
i = [],
n = 0,
l = t.length,
s = l - 1; l > n; s = n++)
r = t[n],
h = t[s],
r._code & u ? h._code & u || (c = p._getEdgeIntersection(h, r, u, e),
c._code = p._getBitCode(c, e),
i.push(c)) : (h._code & u && (c = p._getEdgeIntersection(h, r, u, e),
c._code = p._getBitCode(c, e),
i.push(c)),
i.push(r));
t = i
}
return t
}
,
o.Polygon = o.Polyline.extend({
options: {
fill: !0
},
initialize: function(t, e) {
o.Polyline.prototype.initialize.call(this, t, e),
this._initWithHoles(t)
},
_initWithHoles: function(t) {
var e, i, n;
if (t && o.Util.isArray(t[0]) && "number" != typeof t[0][0])
for (this._latlngs = this._convertLatLngs(t[0]),
this._holes = t.slice(1),
e = 0,
i = this._holes.length; i > e; e++)
n = this._holes[e] = this._convertLatLngs(this._holes[e]),
n[0].equals(n[n.length - 1]) && n.pop();
t = this._latlngs,
t.length >= 2 && t[0].equals(t[t.length - 1]) && t.pop()
},
projectLatlngs: function() {
if (o.Polyline.prototype.projectLatlngs.call(this),
this._holePoints = [],
this._holes) {
var t, e, i, n;
for (t = 0,
i = this._holes.length; i > t; t++)
for (this._holePoints[t] = [],
e = 0,
n = this._holes[t].length; n > e; e++)
this._holePoints[t][e] = this._map.latLngToLayerPoint(this._holes[t][e])
}
},
setLatLngs: function(t) {
return t && o.Util.isArray(t[0]) && "number" != typeof t[0][0] ? (this._initWithHoles(t),
this.redraw()) : o.Polyline.prototype.setLatLngs.call(this, t)
},
_clipPoints: function() {
var t = this._originalPoints
, e = [];
if (this._parts = [t].concat(this._holePoints),
!this.options.noClip) {
for (var i = 0, n = this._parts.length; n > i; i++) {
var s = o.PolyUtil.clipPolygon(this._parts[i], this._map._pathViewport);
s.length && e.push(s)
}
this._parts = e
}
},
_getPathPartStr: function(t) {
var e = o.Polyline.prototype._getPathPartStr.call(this, t);
return e + (o.Browser.svg ? "z" : "x")
}
}),
o.polygon = function(t, e) {
return new o.Polygon(t,e)
}
,
function() {
function t(t) {
return o.FeatureGroup.extend({
initialize: function(t, e) {
this._layers = {},
this._options = e,
this.setLatLngs(t)
},
setLatLngs: function(e) {
var i = 0
, n = e.length;
for (this.eachLayer(function(t) {
n > i ? t.setLatLngs(e[i++]) : this.removeLayer(t)
}, this); n > i; )
this.addLayer(new t(e[i++],this._options));
return this
},
getLatLngs: function() {
var t = [];
return this.eachLayer(function(e) {
t.push(e.getLatLngs())
}),
t
}
})
}
o.MultiPolyline = t(o.Polyline),
o.MultiPolygon = t(o.Polygon),
o.multiPolyline = function(t, e) {
return new o.MultiPolyline(t,e)
}
,
o.multiPolygon = function(t, e) {
return new o.MultiPolygon(t,e)
}
}(),
o.Rectangle = o.Polygon.extend({
initialize: function(t, e) {
o.Polygon.prototype.initialize.call(this, this._boundsToLatLngs(t), e)
},
setBounds: function(t) {
this.setLatLngs(this._boundsToLatLngs(t))
},
_boundsToLatLngs: function(t) {
return t = o.latLngBounds(t),
[t.getSouthWest(), t.getNorthWest(), t.getNorthEast(), t.getSouthEast()]
}
}),
o.rectangle = function(t, e) {
return new o.Rectangle(t,e)
}
,
o.Circle = o.Path.extend({
initialize: function(t, e, i) {
o.Path.prototype.initialize.call(this, i),
this._latlng = o.latLng(t),
this._mRadius = e
},
options: {
fill: !0
},
setLatLng: function(t) {
return this._latlng = o.latLng(t),
this.redraw()
},
setRadius: function(t) {
return this._mRadius = t,
this.redraw()
},
projectLatlngs: function() {
var t = this._getLngRadius()
, e = this._latlng
, i = this._map.latLngToLayerPoint([e.lat, e.lng - t]);
this._point = this._map.latLngToLayerPoint(e),
this._radius = Math.max(this._point.x - i.x, 1)
},
getBounds: function() {
var t = this._getLngRadius()
, e = this._mRadius / 40075017 * 360
, i = this._latlng;
return new o.LatLngBounds([i.lat - e, i.lng - t],[i.lat + e, i.lng + t])
},
getLatLng: function() {
return this._latlng
},
getPathString: function() {
var t = this._point
, e = this._radius;
return this._checkIfEmpty() ? "" : o.Browser.svg ? "M" + t.x + "," + (t.y - e) + "A" + e + "," + e + ",0,1,1," + (t.x - .1) + "," + (t.y - e) + " z" : (t._round(),
e = Math.round(e),
"AL " + t.x + "," + t.y + " " + e + "," + e + " 0,23592600")
},
getRadius: function() {
return this._mRadius
},
_getLatRadius: function() {
return this._mRadius / 40075017 * 360
},
_getLngRadius: function() {
return this._getLatRadius() / Math.cos(o.LatLng.DEG_TO_RAD * this._latlng.lat)
},
_checkIfEmpty: function() {
if (!this._map)
return !1;
var t = this._map._pathViewport
, e = this._radius
, i = this._point;
return i.x - e > t.max.x || i.y - e > t.max.y || i.x + e < t.min.x || i.y + e < t.min.y
}
}),
o.circle = function(t, e, i) {
return new o.Circle(t,e,i)
}
,
o.CircleMarker = o.Circle.extend({
options: {
radius: 10,
weight: 2
},
initialize: function(t, e) {
o.Circle.prototype.initialize.call(this, t, null, e),
this._radius = this.options.radius
},
projectLatlngs: function() {
this._point = this._map.latLngToLayerPoint(this._latlng)
},
_updateStyle: function() {
o.Circle.prototype._updateStyle.call(this),
this.setRadius(this.options.radius)
},
setLatLng: function(t) {
return o.Circle.prototype.setLatLng.call(this, t),
this._popup && this._popup._isOpen && this._popup.setLatLng(t),
this
},
setRadius: function(t) {
return this.options.radius = this._radius = t,
this.redraw()
},
getRadius: function() {
return this._radius
}
}),
o.circleMarker = function(t, e) {
return new o.CircleMarker(t,e)
}
,
o.Polyline.include(o.Path.CANVAS ? {
_containsPoint: function(t, e) {
var i, n, s, a, r, h, l, u = this.options.weight / 2;
for (o.Browser.touch && (u += 10),
i = 0,
a = this._parts.length; a > i; i++)
for (l = this._parts[i],
n = 0,
r = l.length,
s = r - 1; r > n; s = n++)
if ((e || 0 !== n) && (h = o.LineUtil.pointToSegmentDistance(t, l[s], l[n]),
u >= h))
return !0;
return !1
}
} : {}),
o.Polygon.include(o.Path.CANVAS ? {
_containsPoint: function(t) {
var e, i, n, s, a, r, h, l, u = !1;
if (o.Polyline.prototype._containsPoint.call(this, t, !0))
return !0;
for (s = 0,
h = this._parts.length; h > s; s++)
for (e = this._parts[s],
a = 0,
l = e.length,
r = l - 1; l > a; r = a++)
i = e[a],
n = e[r],
i.y > t.y != n.y > t.y && t.x < (n.x - i.x) * (t.y - i.y) / (n.y - i.y) + i.x && (u = !u);
return u
}
} : {}),
o.Circle.include(o.Path.CANVAS ? {
_drawPath: function() {
var t = this._point;
this._ctx.beginPath(),
this._ctx.arc(t.x, t.y, this._radius, 0, 2 * Math.PI, !1)
},
_containsPoint: function(t) {
var e = this._point
, i = this.options.stroke ? this.options.weight / 2 : 0;
return t.distanceTo(e) <= this._radius + i
}
} : {}),
o.CircleMarker.include(o.Path.CANVAS ? {
_updateStyle: function() {
o.Path.prototype._updateStyle.call(this)
}
} : {}),
o.GeoJSON = o.FeatureGroup.extend({
initialize: function(t, e) {
o.setOptions(this, e),
this._layers = {},
t && this.addData(t)
},
addData: function(t) {
var e, i, n, s = o.Util.isArray(t) ? t : t.features;
if (s) {
for (e = 0,
i = s.length; i > e; e++)
n = s[e],
(n.geometries || n.geometry || n.features || n.coordinates) && this.addData(s[e]);
return this
}
var a = this.options;
if (!a.filter || a.filter(t)) {
var r = o.GeoJSON.geometryToLayer(t, a.pointToLayer, a.coordsToLatLng, a);
return r.feature = o.GeoJSON.asFeature(t),
r.defaultOptions = r.options,
this.resetStyle(r),
a.onEachFeature && a.onEachFeature(t, r),
this.addLayer(r)
}
},
resetStyle: function(t) {
var e = this.options.style;
e && (o.Util.extend(t.options, t.defaultOptions),
this._setLayerStyle(t, e))
},
setStyle: function(t) {
this.eachLayer(function(e) {
this._setLayerStyle(e, t)
}, this)
},
_setLayerStyle: function(t, e) {
"function" == typeof e && (e = e(t.feature)),
t.setStyle && t.setStyle(e)
}
}),
o.extend(o.GeoJSON, {
geometryToLayer: function(t, e, i, n) {
var s, a, r, h, l = "Feature" === t.type ? t.geometry : t, u = l.coordinates, c = [];
switch (i = i || this.coordsToLatLng,
l.type) {
case "Point":
return s = i(u),
e ? e(t, s) : new o.Marker(s);
case "MultiPoint":
for (r = 0,
h = u.length; h > r; r++)
s = i(u[r]),
c.push(e ? e(t, s) : new o.Marker(s));
return new o.FeatureGroup(c);
case "LineString":
return a = this.coordsToLatLngs(u, 0, i),
new o.Polyline(a,n);
case "Polygon":
if (2 === u.length && !u[1].length)
throw new Error("Invalid GeoJSON object.");
return a = this.coordsToLatLngs(u, 1, i),
new o.Polygon(a,n);
case "MultiLineString":
return a = this.coordsToLatLngs(u, 1, i),
new o.MultiPolyline(a,n);
case "MultiPolygon":
return a = this.coordsToLatLngs(u, 2, i),
new o.MultiPolygon(a,n);
case "GeometryCollection":
for (r = 0,
h = l.geometries.length; h > r; r++)
c.push(this.geometryToLayer({
geometry: l.geometries[r],
type: "Feature",
properties: t.properties
}, e, i, n));
return new o.FeatureGroup(c);
default:
throw new Error("Invalid GeoJSON object.")
}
},
coordsToLatLng: function(t) {
return new o.LatLng(t[1],t[0],t[2])
},
coordsToLatLngs: function(t, e, i) {
var n, o, s, a = [];
for (o = 0,
s = t.length; s > o; o++)
n = e ? this.coordsToLatLngs(t[o], e - 1, i) : (i || this.coordsToLatLng)(t[o]),
a.push(n);
return a
},
latLngToCoords: function(t) {
var e = [t.lng, t.lat];
return t.alt !== i && e.push(t.alt),
e
},
latLngsToCoords: function(t) {
for (var e = [], i = 0, n = t.length; n > i; i++)
e.push(o.GeoJSON.latLngToCoords(t[i]));
return e
},
getFeature: function(t, e) {
return t.feature ? o.extend({}, t.feature, {
geometry: e
}) : o.GeoJSON.asFeature(e)
},
asFeature: function(t) {
return "Feature" === t.type ? t : {
type: "Feature",
properties: {},
geometry: t
}
}
});
var a = {
toGeoJSON: function() {
return o.GeoJSON.getFeature(this, {
type: "Point",
coordinates: o.GeoJSON.latLngToCoords(this.getLatLng())
})
}
};
o.Marker.include(a),
o.Circle.include(a),
o.CircleMarker.include(a),
o.Polyline.include({
toGeoJSON: function() {
return o.GeoJSON.getFeature(this, {
type: "LineString",
coordinates: o.GeoJSON.latLngsToCoords(this.getLatLngs())
})
}
}),
o.Polygon.include({
toGeoJSON: function() {
var t, e, i, n = [o.GeoJSON.latLngsToCoords(this.getLatLngs())];
if (n[0].push(n[0][0]),
this._holes)
for (t = 0,
e = this._holes.length; e > t; t++)
i = o.GeoJSON.latLngsToCoords(this._holes[t]),
i.push(i[0]),
n.push(i);
return o.GeoJSON.getFeature(this, {
type: "Polygon",
coordinates: n
})
}
}),
function() {
function t(t) {
return function() {
var e = [];
return this.eachLayer(function(t) {
e.push(t.toGeoJSON().geometry.coordinates)
}),
o.GeoJSON.getFeature(this, {
type: t,
coordinates: e
})
}
}
o.MultiPolyline.include({
toGeoJSON: t("MultiLineString")
}),
o.MultiPolygon.include({
toGeoJSON: t("MultiPolygon")
}),
o.LayerGroup.include({
toGeoJSON: function() {
var e, i = this.feature && this.feature.geometry, n = [];
if (i && "MultiPoint" === i.type)
return t("MultiPoint").call(this);
var s = i && "GeometryCollection" === i.type;
return this.eachLayer(function(t) {
t.toGeoJSON && (e = t.toGeoJSON(),
n.push(s ? e.geometry : o.GeoJSON.asFeature(e)))
}),
s ? o.GeoJSON.getFeature(this, {
geometries: n,
type: "GeometryCollection"
}) : {
type: "FeatureCollection",
features: n
}
}
})
}(),
o.geoJson = function(t, e) {
return new o.GeoJSON(t,e)
}
,
o.DomEvent = {
addListener: function(t, e, i, n) {
var s, a, r, h = o.stamp(i), l = "_leaflet_" + e + h;
return t[l] ? this : (s = function(e) {
return i.call(n || t, e || o.DomEvent._getEvent())
}
,
o.Browser.pointer && 0 === e.indexOf("touch") ? this.addPointerListener(t, e, s, h) : (o.Browser.touch && "dblclick" === e && this.addDoubleTapListener && this.addDoubleTapListener(t, s, h),
"addEventListener"in t ? "mousewheel" === e ? (t.addEventListener("DOMMouseScroll", s, !1),
t.addEventListener(e, s, !1)) : "mouseenter" === e || "mouseleave" === e ? (a = s,
r = "mouseenter" === e ? "mouseover" : "mouseout",
s = function(e) {
return o.DomEvent._checkMouse(t, e) ? a(e) : void 0
}
,
t.addEventListener(r, s, !1)) : "click" === e && o.Browser.android ? (a = s,
s = function(t) {
return o.DomEvent._filterClick(t, a)
}
,
t.addEventListener(e, s, !1)) : t.addEventListener(e, s, !1) : "attachEvent"in t && t.attachEvent("on" + e, s),
t[l] = s,
this))
},
removeListener: function(t, e, i) {
var n = o.stamp(i)
, s = "_leaflet_" + e + n
, a = t[s];
return a ? (o.Browser.pointer && 0 === e.indexOf("touch") ? this.removePointerListener(t, e, n) : o.Browser.touch && "dblclick" === e && this.removeDoubleTapListener ? this.removeDoubleTapListener(t, n) : "removeEventListener"in t ? "mousewheel" === e ? (t.removeEventListener("DOMMouseScroll", a, !1),
t.removeEventListener(e, a, !1)) : "mouseenter" === e || "mouseleave" === e ? t.removeEventListener("mouseenter" === e ? "mouseover" : "mouseout", a, !1) : t.removeEventListener(e, a, !1) : "detachEvent"in t && t.detachEvent("on" + e, a),
t[s] = null,
this) : this
},
stopPropagation: function(t) {
return t.stopPropagation ? t.stopPropagation() : t.cancelBubble = !0,
o.DomEvent._skipped(t),
this
},
disableScrollPropagation: function(t) {
var e = o.DomEvent.stopPropagation;
return o.DomEvent.on(t, "mousewheel", e).on(t, "MozMousePixelScroll", e)
},
disableClickPropagation: function(t) {
for (var e = o.DomEvent.stopPropagation, i = o.Draggable.START.length - 1; i >= 0; i--)
o.DomEvent.on(t, o.Draggable.START[i], e);
return o.DomEvent.on(t, "click", o.DomEvent._fakeStop).on(t, "dblclick", e)
},
preventDefault: function(t) {
return t.preventDefault ? t.preventDefault() : t.returnValue = !1,
this
},
stop: function(t) {
return o.DomEvent.preventDefault(t).stopPropagation(t)
},
getMousePosition: function(t, e) {
if (!e)
return new o.Point(t.clientX,t.clientY);
var i = e.getBoundingClientRect();
return new o.Point(t.clientX - i.left - e.clientLeft,t.clientY - i.top - e.clientTop)
},
getWheelDelta: function(t) {
var e = 0;
return t.wheelDelta && (e = t.wheelDelta / 120),
t.detail && (e = -t.detail / 3),
e
},
_skipEvents: {},
_fakeStop: function(t) {
o.DomEvent._skipEvents[t.type] = !0
},
_skipped: function(t) {
var e = this._skipEvents[t.type];
return this._skipEvents[t.type] = !1,
e
},
_checkMouse: function(t, e) {
var i = e.relatedTarget;
if (!i)
return !0;
try {
for (; i && i !== t; )
i = i.parentNode
} catch (n) {
return !1
}
return i !== t
},
_getEvent: function() {
var e = t.event;
if (!e)
for (var i = arguments.callee.caller; i && (e = i.arguments[0],
!e || t.Event !== e.constructor); )
i = i.caller;
return e
},
_filterClick: function(t, e) {
var i = t.timeStamp || t.originalEvent.timeStamp
, n = o.DomEvent._lastClick && i - o.DomEvent._lastClick;
return n && n > 100 && 500 > n || t.target._simulatedClick && !t._simulated ? void o.DomEvent.stop(t) : (o.DomEvent._lastClick = i,
e(t))
}
},
o.DomEvent.on = o.DomEvent.addListener,
o.DomEvent.off = o.DomEvent.removeListener,
o.Draggable = o.Class.extend({
includes: o.Mixin.Events,
statics: {
START: o.Browser.touch ? ["touchstart", "mousedown"] : ["mousedown"],
END: {
mousedown: "mouseup",
touchstart: "touchend",
pointerdown: "touchend",
MSPointerDown: "touchend"
},
MOVE: {
mousedown: "mousemove",
touchstart: "touchmove",
pointerdown: "touchmove",
MSPointerDown: "touchmove"
}
},
initialize: function(t, e) {
this._element = t,
this._dragStartTarget = e || t
},
enable: function() {
if (!this._enabled) {
for (var t = o.Draggable.START.length - 1; t >= 0; t--)
o.DomEvent.on(this._dragStartTarget, o.Draggable.START[t], this._onDown, this);
this._enabled = !0
}
},
disable: function() {
if (this._enabled) {
for (var t = o.Draggable.START.length - 1; t >= 0; t--)
o.DomEvent.off(this._dragStartTarget, o.Draggable.START[t], this._onDown, this);
this._enabled = !1,
this._moved = !1
}
},
_onDown: function(t) {
if (this._moved = !1,
!t.shiftKey && (1 === t.which || 1 === t.button || t.touches) && (o.DomEvent.stopPropagation(t),
!o.Draggable._disabled && (o.DomUtil.disableImageDrag(),
o.DomUtil.disableTextSelection(),
!this._moving))) {
var i = t.touches ? t.touches[0] : t;
this._startPoint = new o.Point(i.clientX,i.clientY),
this._startPos = this._newPos = o.DomUtil.getPosition(this._element),
o.DomEvent.on(e, o.Draggable.MOVE[t.type], this._onMove, this).on(e, o.Draggable.END[t.type], this._onUp, this)
}
},
_onMove: function(t) {
if (t.touches && t.touches.length > 1)
return void (this._moved = !0);
var i = t.touches && 1 === t.touches.length ? t.touches[0] : t
, n = new o.Point(i.clientX,i.clientY)
, s = n.subtract(this._startPoint);
(s.x || s.y) && (o.Browser.touch && Math.abs(s.x) + Math.abs(s.y) < 3 || (o.DomEvent.preventDefault(t),
this._moved || (this.fire("dragstart"),
this._moved = !0,
this._startPos = o.DomUtil.getPosition(this._element).subtract(s),
o.DomUtil.addClass(e.body, "leaflet-dragging"),
this._lastTarget = t.target || t.srcElement,
o.DomUtil.addClass(this._lastTarget, "leaflet-drag-target")),
this._newPos = this._startPos.add(s),
this._moving = !0,
o.Util.cancelAnimFrame(this._animRequest),
this._animRequest = o.Util.requestAnimFrame(this._updatePosition, this, !0, this._dragStartTarget)))
},
_updatePosition: function() {
this.fire("predrag"),
o.DomUtil.setPosition(this._element, this._newPos),
this.fire("drag")
},
_onUp: function() {
o.DomUtil.removeClass(e.body, "leaflet-dragging"),
this._lastTarget && (o.DomUtil.removeClass(this._lastTarget, "leaflet-drag-target"),
this._lastTarget = null);
for (var t in o.Draggable.MOVE)
o.DomEvent.off(e, o.Draggable.MOVE[t], this._onMove).off(e, o.Draggable.END[t], this._onUp);
o.DomUtil.enableImageDrag(),
o.DomUtil.enableTextSelection(),
this._moved && this._moving && (o.Util.cancelAnimFrame(this._animRequest),
this.fire("dragend", {
distance: this._newPos.distanceTo(this._startPos)
})),
this._moving = !1
}
}),
o.Handler = o.Class.extend({
initialize: function(t) {
this._map = t
},
enable: function() {
this._enabled || (this._enabled = !0,
this.addHooks())
},
disable: function() {
this._enabled && (this._enabled = !1,
this.removeHooks())
},
enabled: function() {
return !!this._enabled
}
}),
o.Map.mergeOptions({
dragging: !0,
inertia: !o.Browser.android23,
inertiaDeceleration: 3400,
inertiaMaxSpeed: 1 / 0,
inertiaThreshold: o.Browser.touch ? 32 : 18,
easeLinearity: .25,
worldCopyJump: !1
}),
o.Map.Drag = o.Handler.extend({
addHooks: function() {
if (!this._draggable) {
var t = this._map;
this._draggable = new o.Draggable(t._mapPane,t._container),
this._draggable.on({
dragstart: this._onDragStart,
drag: this._onDrag,
dragend: this._onDragEnd
}, this),
t.options.worldCopyJump && (this._draggable.on("predrag", this._onPreDrag, this),
t.on("viewreset", this._onViewReset, this),
t.whenReady(this._onViewReset, this))
}
this._draggable.enable()
},
removeHooks: function() {
this._draggable.disable()
},
moved: function() {
return this._draggable && this._draggable._moved
},
_onDragStart: function() {
var t = this._map;
t._panAnim && t._panAnim.stop(),
t.fire("movestart").fire("dragstart"),
t.options.inertia && (this._positions = [],
this._times = [])
},
_onDrag: function() {
if (this._map.options.inertia) {
var t = this._lastTime = +new Date
, e = this._lastPos = this._draggable._newPos;
this._positions.push(e),
this._times.push(t),
t - this._times[0] > 200 && (this._positions.shift(),
this._times.shift())
}
this._map.fire("move").fire("drag")
},
_onViewReset: function() {
var t = this._map.getSize()._divideBy(2)
, e = this._map.latLngToLayerPoint([0, 0]);
this._initialWorldOffset = e.subtract(t).x,
this._worldWidth = this._map.project([0, 180]).x
},
_onPreDrag: function() {
var t = this._worldWidth
, e = Math.round(t / 2)
, i = this._initialWorldOffset
, n = this._draggable._newPos.x
, o = (n - e + i) % t + e - i
, s = (n + e + i) % t - e - i
, a = Math.abs(o + i) < Math.abs(s + i) ? o : s;
this._draggable._newPos.x = a
},
_onDragEnd: function(t) {
var e = this._map
, i = e.options
, n = +new Date - this._lastTime
, s = !i.inertia || n > i.inertiaThreshold || !this._positions[0];
if (e.fire("dragend", t),
s)
e.fire("moveend");
else {
var a = this._lastPos.subtract(this._positions[0])
, r = (this._lastTime + n - this._times[0]) / 1e3
, h = i.easeLinearity
, l = a.multiplyBy(h / r)
, u = l.distanceTo([0, 0])
, c = Math.min(i.inertiaMaxSpeed, u)
, d = l.multiplyBy(c / u)
, p = c / (i.inertiaDeceleration * h)
, _ = d.multiplyBy(-p / 2).round();
_.x && _.y ? (_ = e._limitOffset(_, e.options.maxBounds),
o.Util.requestAnimFrame(function() {
e.panBy(_, {
duration: p,
easeLinearity: h,
noMoveStart: !0
})
})) : e.fire("moveend")
}
}
}),
o.Map.addInitHook("addHandler", "dragging", o.Map.Drag),
o.Map.mergeOptions({
doubleClickZoom: !0
}),
o.Map.DoubleClickZoom = o.Handler.extend({
addHooks: function() {
this._map.on("dblclick", this._onDoubleClick, this)
},
removeHooks: function() {
this._map.off("dblclick", this._onDoubleClick, this)
},
_onDoubleClick: function(t) {
var e = this._map
, i = e.getZoom() + (t.originalEvent.shiftKey ? -1 : 1);
"center" === e.options.doubleClickZoom ? e.setZoom(i) : e.setZoomAround(t.containerPoint, i)
}
}),
o.Map.addInitHook("addHandler", "doubleClickZoom", o.Map.DoubleClickZoom),
o.Map.mergeOptions({
scrollWheelZoom: !0
}),
o.Map.ScrollWheelZoom = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(this._map._container, "mousewheel", this._onWheelScroll, this),
o.DomEvent.on(this._map._container, "MozMousePixelScroll", o.DomEvent.preventDefault),
this._delta = 0
},
removeHooks: function() {
o.DomEvent.off(this._map._container, "mousewheel", this._onWheelScroll),
o.DomEvent.off(this._map._container, "MozMousePixelScroll", o.DomEvent.preventDefault)
},
_onWheelScroll: function(t) {
var e = o.DomEvent.getWheelDelta(t);
this._delta += e,
this._lastMousePos = this._map.mouseEventToContainerPoint(t),
this._startTime || (this._startTime = +new Date);
var i = Math.max(40 - (+new Date - this._startTime), 0);
clearTimeout(this._timer),
this._timer = setTimeout(o.bind(this._performZoom, this), i),
o.DomEvent.preventDefault(t),
o.DomEvent.stopPropagation(t)
},
_performZoom: function() {
var t = this._map
, e = this._delta
, i = t.getZoom();
e = e > 0 ? Math.ceil(e) : Math.floor(e),
e = Math.max(Math.min(e, 4), -4),
e = t._limitZoom(i + e) - i,
this._delta = 0,
this._startTime = null,
e && ("center" === t.options.scrollWheelZoom ? t.setZoom(i + e) : t.setZoomAround(this._lastMousePos, i + e))
}
}),
o.Map.addInitHook("addHandler", "scrollWheelZoom", o.Map.ScrollWheelZoom),
o.extend(o.DomEvent, {
_touchstart: o.Browser.msPointer ? "MSPointerDown" : o.Browser.pointer ? "pointerdown" : "touchstart",
_touchend: o.Browser.msPointer ? "MSPointerUp" : o.Browser.pointer ? "pointerup" : "touchend",
addDoubleTapListener: function(t, i, n) {
function s(t) {
var e;
if (o.Browser.pointer ? (_.push(t.pointerId),
e = _.length) : e = t.touches.length,
!(e > 1)) {
var i = Date.now()
, n = i - (r || i);
h = t.touches ? t.touches[0] : t,
l = n > 0 && u >= n,
r = i
}
}
function a(t) {
if (o.Browser.pointer) {
var e = _.indexOf(t.pointerId);
if (-1 === e)
return;
_.splice(e, 1)
}
if (l) {
if (o.Browser.pointer) {
var n, s = {};
for (var a in h)
n = h[a],
"function" == typeof n ? s[a] = n.bind(h) : s[a] = n;
h = s
}
h.type = "dblclick",
i(h),
r = null
}
}
var r, h, l = !1, u = 250, c = "_leaflet_", d = this._touchstart, p = this._touchend, _ = [];
t[c + d + n] = s,
t[c + p + n] = a;
var m = o.Browser.pointer ? e.documentElement : t;
return t.addEventListener(d, s, !1),
m.addEventListener(p, a, !1),
o.Browser.pointer && m.addEventListener(o.DomEvent.POINTER_CANCEL, a, !1),
this
},
removeDoubleTapListener: function(t, i) {
var n = "_leaflet_";
return t.removeEventListener(this._touchstart, t[n + this._touchstart + i], !1),
(o.Browser.pointer ? e.documentElement : t).removeEventListener(this._touchend, t[n + this._touchend + i], !1),
o.Browser.pointer && e.documentElement.removeEventListener(o.DomEvent.POINTER_CANCEL, t[n + this._touchend + i], !1),
this
}
}),
o.extend(o.DomEvent, {
POINTER_DOWN: o.Browser.msPointer ? "MSPointerDown" : "pointerdown",
POINTER_MOVE: o.Browser.msPointer ? "MSPointerMove" : "pointermove",
POINTER_UP: o.Browser.msPointer ? "MSPointerUp" : "pointerup",
POINTER_CANCEL: o.Browser.msPointer ? "MSPointerCancel" : "pointercancel",
_pointers: [],
_pointerDocumentListener: !1,
addPointerListener: function(t, e, i, n) {
switch (e) {
case "touchstart":
return this.addPointerListenerStart(t, e, i, n);
case "touchend":
return this.addPointerListenerEnd(t, e, i, n);
case "touchmove":
return this.addPointerListenerMove(t, e, i, n);
default:
throw "Unknown touch event type"
}
},
addPointerListenerStart: function(t, i, n, s) {
var a = "_leaflet_"
, r = this._pointers
, h = function(t) {
"mouse" !== t.pointerType && t.pointerType !== t.MSPOINTER_TYPE_MOUSE && o.DomEvent.preventDefault(t);
for (var e = !1, i = 0; i < r.length; i++)
if (r[i].pointerId === t.pointerId) {
e = !0;
break
}
e || r.push(t),
t.touches = r.slice(),
t.changedTouches = [t],
n(t)
};
if (t[a + "touchstart" + s] = h,
t.addEventListener(this.POINTER_DOWN, h, !1),
!this._pointerDocumentListener) {
var l = function(t) {
for (var e = 0; e < r.length; e++)
if (r[e].pointerId === t.pointerId) {
r.splice(e, 1);
break
}
};
e.documentElement.addEventListener(this.POINTER_UP, l, !1),
e.documentElement.addEventListener(this.POINTER_CANCEL, l, !1),
this._pointerDocumentListener = !0
}
return this
},
addPointerListenerMove: function(t, e, i, n) {
function o(t) {
if (t.pointerType !== t.MSPOINTER_TYPE_MOUSE && "mouse" !== t.pointerType || 0 !== t.buttons) {
for (var e = 0; e < a.length; e++)
if (a[e].pointerId === t.pointerId) {
a[e] = t;
break
}
t.touches = a.slice(),
t.changedTouches = [t],
i(t)
}
}
var s = "_leaflet_"
, a = this._pointers;
return t[s + "touchmove" + n] = o,
t.addEventListener(this.POINTER_MOVE, o, !1),
this
},
addPointerListenerEnd: function(t, e, i, n) {
var o = "_leaflet_"
, s = this._pointers
, a = function(t) {
for (var e = 0; e < s.length; e++)
if (s[e].pointerId === t.pointerId) {
s.splice(e, 1);
break
}
t.touches = s.slice(),
t.changedTouches = [t],
i(t)
};
return t[o + "touchend" + n] = a,
t.addEventListener(this.POINTER_UP, a, !1),
t.addEventListener(this.POINTER_CANCEL, a, !1),
this
},
removePointerListener: function(t, e, i) {
var n = "_leaflet_"
, o = t[n + e + i];
switch (e) {
case "touchstart":
t.removeEventListener(this.POINTER_DOWN, o, !1);
break;
case "touchmove":
t.removeEventListener(this.POINTER_MOVE, o, !1);
break;
case "touchend":
t.removeEventListener(this.POINTER_UP, o, !1),
t.removeEventListener(this.POINTER_CANCEL, o, !1)
}
return this
}
}),
o.Map.mergeOptions({
touchZoom: o.Browser.touch && !o.Browser.android23,
bounceAtZoomLimits: !0
}),
o.Map.TouchZoom = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(this._map._container, "touchstart", this._onTouchStart, this)
},
removeHooks: function() {
o.DomEvent.off(this._map._container, "touchstart", this._onTouchStart, this)
},
_onTouchStart: function(t) {
var i = this._map;
if (t.touches && 2 === t.touches.length && !i._animatingZoom && !this._zooming) {
var n = i.mouseEventToLayerPoint(t.touches[0])
, s = i.mouseEventToLayerPoint(t.touches[1])
, a = i._getCenterLayerPoint();
this._startCenter = n.add(s)._divideBy(2),
this._startDist = n.distanceTo(s),
this._moved = !1,
this._zooming = !0,
this._centerOffset = a.subtract(this._startCenter),
i._panAnim && i._panAnim.stop(),
o.DomEvent.on(e, "touchmove", this._onTouchMove, this).on(e, "touchend", this._onTouchEnd, this),
o.DomEvent.preventDefault(t)
}
},
_onTouchMove: function(t) {
var e = this._map;
if (t.touches && 2 === t.touches.length && this._zooming) {
var i = e.mouseEventToLayerPoint(t.touches[0])
, n = e.mouseEventToLayerPoint(t.touches[1]);
this._scale = i.distanceTo(n) / this._startDist,
this._delta = i._add(n)._divideBy(2)._subtract(this._startCenter),
1 !== this._scale && (e.options.bounceAtZoomLimits || !(e.getZoom() === e.getMinZoom() && this._scale < 1 || e.getZoom() === e.getMaxZoom() && this._scale > 1)) && (this._moved || (o.DomUtil.addClass(e._mapPane, "leaflet-touching"),
e.fire("movestart").fire("zoomstart"),
this._moved = !0),
o.Util.cancelAnimFrame(this._animRequest),
this._animRequest = o.Util.requestAnimFrame(this._updateOnMove, this, !0, this._map._container),
o.DomEvent.preventDefault(t))
}
},
_updateOnMove: function() {
var t = this._map
, e = this._getScaleOrigin()
, i = t.layerPointToLatLng(e)
, n = t.getScaleZoom(this._scale);
t._animateZoom(i, n, this._startCenter, this._scale, this._delta, !1, !0)
},
_onTouchEnd: function() {
if (!this._moved || !this._zooming)
return void (this._zooming = !1);
var t = this._map;
this._zooming = !1,
o.DomUtil.removeClass(t._mapPane, "leaflet-touching"),
o.Util.cancelAnimFrame(this._animRequest),
o.DomEvent.off(e, "touchmove", this._onTouchMove).off(e, "touchend", this._onTouchEnd);
var i = this._getScaleOrigin()
, n = t.layerPointToLatLng(i)
, s = t.getZoom()
, a = t.getScaleZoom(this._scale) - s
, r = a > 0 ? Math.ceil(a) : Math.floor(a)
, h = t._limitZoom(s + r)
, l = t.getZoomScale(h) / this._scale;
t._animateZoom(n, h, i, l)
},
_getScaleOrigin: function() {
var t = this._centerOffset.subtract(this._delta).divideBy(this._scale);
return this._startCenter.add(t)
}
}),
o.Map.addInitHook("addHandler", "touchZoom", o.Map.TouchZoom),
o.Map.mergeOptions({
tap: !0,
tapTolerance: 15
}),
o.Map.Tap = o.Handler.extend({
addHooks: function() {
o.DomEvent.on(this._map._container, "touchstart", this._onDown, this)
},
removeHooks: function() {
o.DomEvent.off(this._map._container, "touchstart", this._onDown, this)
},
_onDown: function(t) {
if (t.touches) {
if (o.DomEvent.preventDefault(t),
this._fireClick = !0,
t.touches.length > 1)
return this._fireClick = !1,
void clearTimeout(this._holdTimeout);
var i = t.touches[0]
, n = i.target;
this._startPos = this._newPos = new o.Point(i.clientX,i.clientY),
n.tagName && "a" === n.tagName.toLowerCase() && o.DomUtil.addClass(n, "leaflet-active"),
this._holdTimeout = setTimeout(o.bind(function() {
this._isTapValid() && (this._fireClick = !1,
this._onUp(),
this._simulateEvent("contextmenu", i))
}, this), 1e3),
o.DomEvent.on(e, "touchmove", this._onMove, this).on(e, "touchend", this._onUp, this)
}
},
_onUp: function(t) {
if (clearTimeout(this._holdTimeout),
o.DomEvent.off(e, "touchmove", this._onMove, this).off(e, "touchend", this._onUp, this),
this._fireClick && t && t.changedTouches) {
var i = t.changedTouches[0]
, n = i.target;
n && n.tagName && "a" === n.tagName.toLowerCase() && o.DomUtil.removeClass(n, "leaflet-active"),
this._isTapValid() && this._simulateEvent("click", i)
}
},
_isTapValid: function() {
return this._newPos.distanceTo(this._startPos) <= this._map.options.tapTolerance
},
_onMove: function(t) {
var e = t.touches[0];
this._newPos = new o.Point(e.clientX,e.clientY)
},
_simulateEvent: function(i, n) {
var o = e.createEvent("MouseEvents");
o._simulated = !0,
n.target._simulatedClick = !0,
o.initMouseEvent(i, !0, !0, t, 1, n.screenX, n.screenY, n.clientX, n.clientY, !1, !1, !1, !1, 0, null),
n.target.dispatchEvent(o)
}
}),
o.Browser.touch && !o.Browser.pointer && o.Map.addInitHook("addHandler", "tap", o.Map.Tap),
o.Map.mergeOptions({
boxZoom: !0
}),
o.Map.BoxZoom = o.Handler.extend({
initialize: function(t) {
this._map = t,
this._container = t._container,
this._pane = t._panes.overlayPane,
this._moved = !1
},
addHooks: function() {
o.DomEvent.on(this._container, "mousedown", this._onMouseDown, this)
},
removeHooks: function() {
o.DomEvent.off(this._container, "mousedown", this._onMouseDown),
this._moved = !1
},
moved: function() {
return this._moved
},
_onMouseDown: function(t) {
return this._moved = !1,
!t.shiftKey || 1 !== t.which && 1 !== t.button ? !1 : (o.DomUtil.disableTextSelection(),
o.DomUtil.disableImageDrag(),
this._startLayerPoint = this._map.mouseEventToLayerPoint(t),
void o.DomEvent.on(e, "mousemove", this._onMouseMove, this).on(e, "mouseup", this._onMouseUp, this).on(e, "keydown", this._onKeyDown, this))
},
_onMouseMove: function(t) {
this._moved || (this._box = o.DomUtil.create("div", "leaflet-zoom-box", this._pane),
o.DomUtil.setPosition(this._box, this._startLayerPoint),
this._container.style.cursor = "crosshair",
this._map.fire("boxzoomstart"));
var e = this._startLayerPoint
, i = this._box
, n = this._map.mouseEventToLayerPoint(t)
, s = n.subtract(e)
, a = new o.Point(Math.min(n.x, e.x),Math.min(n.y, e.y));
o.DomUtil.setPosition(i, a),
this._moved = !0,
i.style.width = Math.max(0, Math.abs(s.x) - 4) + "px",
i.style.height = Math.max(0, Math.abs(s.y) - 4) + "px"
},
_finish: function() {
this._moved && (this._pane.removeChild(this._box),
this._container.style.cursor = ""),
o.DomUtil.enableTextSelection(),
o.DomUtil.enableImageDrag(),
o.DomEvent.off(e, "mousemove", this._onMouseMove).off(e, "mouseup", this._onMouseUp).off(e, "keydown", this._onKeyDown)
},
_onMouseUp: function(t) {
this._finish();
var e = this._map
, i = e.mouseEventToLayerPoint(t);
if (!this._startLayerPoint.equals(i)) {
var n = new o.LatLngBounds(e.layerPointToLatLng(this._startLayerPoint),e.layerPointToLatLng(i));
e.fitBounds(n),
e.fire("boxzoomend", {
boxZoomBounds: n
})
}
},
_onKeyDown: function(t) {
27 === t.keyCode && this._finish()
}
}),
o.Map.addInitHook("addHandler", "boxZoom", o.Map.BoxZoom),
o.Map.mergeOptions({
keyboard: !0,
keyboardPanOffset: 80,
keyboardZoomOffset: 1
}),
o.Map.Keyboard = o.Handler.extend({
keyCodes: {
left: [37],
right: [39],
down: [40],
up: [38],
zoomIn: [187, 107, 61, 171],
zoomOut: [189, 109, 173]
},
initialize: function(t) {
this._map = t,
this._setPanOffset(t.options.keyboardPanOffset),
this._setZoomOffset(t.options.keyboardZoomOffset)
},
addHooks: function() {
var t = this._map._container;
-1 === t.tabIndex && (t.tabIndex = "0"),
o.DomEvent.on(t, "focus", this._onFocus, this).on(t, "blur", this._onBlur, this).on(t, "mousedown", this._onMouseDown, this),
this._map.on("focus", this._addHooks, this).on("blur", this._removeHooks, this)
},
removeHooks: function() {
this._removeHooks();
var t = this._map._container;
o.DomEvent.off(t, "focus", this._onFocus, this).off(t, "blur", this._onBlur, this).off(t, "mousedown", this._onMouseDown, this),
this._map.off("focus", this._addHooks, this).off("blur", this._removeHooks, this)
},
_onMouseDown: function() {
if (!this._focused) {
var i = e.body
, n = e.documentElement
, o = i.scrollTop || n.scrollTop
, s = i.scrollLeft || n.scrollLeft;
this._map._container.focus(),
t.scrollTo(s, o)
}
},
_onFocus: function() {
this._focused = !0,
this._map.fire("focus")
},
_onBlur: function() {
this._focused = !1,
this._map.fire("blur")
},
_setPanOffset: function(t) {
var e, i, n = this._panKeys = {}, o = this.keyCodes;
for (e = 0,
i = o.left.length; i > e; e++)
n[o.left[e]] = [-1 * t, 0];
for (e = 0,
i = o.right.length; i > e; e++)
n[o.right[e]] = [t, 0];
for (e = 0,
i = o.down.length; i > e; e++)
n[o.down[e]] = [0, t];
for (e = 0,
i = o.up.length; i > e; e++)
n[o.up[e]] = [0, -1 * t]
},
_setZoomOffset: function(t) {
var e, i, n = this._zoomKeys = {}, o = this.keyCodes;
for (e = 0,
i = o.zoomIn.length; i > e; e++)
n[o.zoomIn[e]] = t;
for (e = 0,
i = o.zoomOut.length; i > e; e++)
n[o.zoomOut[e]] = -t
},
_addHooks: function() {
o.DomEvent.on(e, "keydown", this._onKeyDown, this)
},
_removeHooks: function() {
o.DomEvent.off(e, "keydown", this._onKeyDown, this)
},
_onKeyDown: function(t) {
var e = t.keyCode
, i = this._map;
if (e in this._panKeys) {
if (i._panAnim && i._panAnim._inProgress)
return;
i.panBy(this._panKeys[e]),
i.options.maxBounds && i.panInsideBounds(i.options.maxBounds)
} else {
if (!(e in this._zoomKeys))
return;
i.setZoom(i.getZoom() + this._zoomKeys[e])
}
o.DomEvent.stop(t)
}
}),
o.Map.addInitHook("addHandler", "keyboard", o.Map.Keyboard),
o.Handler.MarkerDrag = o.Handler.extend({
initialize: function(t) {
this._marker = t
},
addHooks: function() {
var t = this._marker._icon;
this._draggable || (this._draggable = new o.Draggable(t,t)),
this._draggable.on("dragstart", this._onDragStart, this).on("drag", this._onDrag, this).on("dragend", this._onDragEnd, this),
this._draggable.enable(),
o.DomUtil.addClass(this._marker._icon, "leaflet-marker-draggable")
},
removeHooks: function() {
this._draggable.off("dragstart", this._onDragStart, this).off("drag", this._onDrag, this).off("dragend", this._onDragEnd, this),
this._draggable.disable(),
o.DomUtil.removeClass(this._marker._icon, "leaflet-marker-draggable")
},
moved: function() {
return this._draggable && this._draggable._moved
},
_onDragStart: function() {
this._marker.closePopup().fire("movestart").fire("dragstart")
},
_onDrag: function() {
var t = this._marker
, e = t._shadow
, i = o.DomUtil.getPosition(t._icon)
, n = t._map.layerPointToLatLng(i);
e && o.DomUtil.setPosition(e, i),
t._latlng = n,
t.fire("move", {
latlng: n
}).fire("drag")
},
_onDragEnd: function(t) {
this._marker.fire("moveend").fire("dragend", t)
}
}),
o.Control = o.Class.extend({
options: {
position: "topright"
},
initialize: function(t) {
o.setOptions(this, t)
},
getPosition: function() {
return this.options.position
},
setPosition: function(t) {
var e = this._map;
return e && e.removeControl(this),
this.options.position = t,
e && e.addControl(this),
this
},
getContainer: function() {
return this._container
},
addTo: function(t) {
this._map = t;
var e = this._container = this.onAdd(t)
, i = this.getPosition()
, n = t._controlCorners[i];
return o.DomUtil.addClass(e, "leaflet-control"),
-1 !== i.indexOf("bottom") ? n.insertBefore(e, n.firstChild) : n.appendChild(e),
this
},
removeFrom: function(t) {
var e = this.getPosition()
, i = t._controlCorners[e];
return i.removeChild(this._container),
this._map = null,
this.onRemove && this.onRemove(t),
this
},
_refocusOnMap: function() {
this._map && this._map.getContainer().focus()
}
}),
o.control = function(t) {
return new o.Control(t)
}
,
o.Map.include({
addControl: function(t) {
return t.addTo(this),
this
},
removeControl: function(t) {
return t.removeFrom(this),
this
},
_initControlPos: function() {
function t(t, s) {
var a = i + t + " " + i + s;
e[t + s] = o.DomUtil.create("div", a, n)
}
var e = this._controlCorners = {}
, i = "leaflet-"
, n = this._controlContainer = o.DomUtil.create("div", i + "control-container", this._container);
t("top", "left"),
t("top", "right"),
t("bottom", "left"),
t("bottom", "right")
},
_clearControlPos: function() {
this._container.removeChild(this._controlContainer)
}
}),
o.Control.Zoom = o.Control.extend({
options: {
position: "topleft",
zoomInText: "+",
/*zoomInTitle:"Zoom in"*/
zoomInTitle: "放大",
zoomOutText: "-",
/*zoomOutTitle:"Zoom out"*/
zoomOutTitle: "缩小"
},
onAdd: function(t) {
var e = "leaflet-control-zoom"
, i = o.DomUtil.create("div", e + " leaflet-bar");
return this._map = t,
this._zoomInButton = this._createButton(this.options.zoomInText, this.options.zoomInTitle, e + "-in", i, this._zoomIn, this),
this._zoomOutButton = this._createButton(this.options.zoomOutText, this.options.zoomOutTitle, e + "-out", i, this._zoomOut, this),
this._updateDisabled(),
t.on("zoomend zoomlevelschange", this._updateDisabled, this),
i
},
onRemove: function(t) {
t.off("zoomend zoomlevelschange", this._updateDisabled, this)
},
_zoomIn: function(t) {
this._map.zoomIn(t.shiftKey ? 3 : 1)
},
_zoomOut: function(t) {
this._map.zoomOut(t.shiftKey ? 3 : 1)
},
_createButton: function(t, e, i, n, s, a) {
var r = o.DomUtil.create("a", i, n);
r.innerHTML = t,
r.href = "#",
r.title = e;
var h = o.DomEvent.stopPropagation;
return o.DomEvent.on(r, "click", h).on(r, "mousedown", h).on(r, "dblclick", h).on(r, "click", o.DomEvent.preventDefault).on(r, "click", s, a).on(r, "click", this._refocusOnMap, a),
r
},
_updateDisabled: function() {
var t = this._map
, e = "leaflet-disabled";
o.DomUtil.removeClass(this._zoomInButton, e),
o.DomUtil.removeClass(this._zoomOutButton, e),
t._zoom === t.getMinZoom() && o.DomUtil.addClass(this._zoomOutButton, e),
t._zoom === t.getMaxZoom() && o.DomUtil.addClass(this._zoomInButton, e)
}
}),
o.Map.mergeOptions({
zoomControl: !0
}),
o.Map.addInitHook(function() {
this.options.zoomControl && (this.zoomControl = new o.Control.Zoom,
this.addControl(this.zoomControl))
}),
o.control.zoom = function(t) {
return new o.Control.Zoom(t)
}
,
o.Control.Attribution = o.Control.extend({
options: {
position: "bottomright",
prefix: 'http://leafletjs.com" title="A JS library for interactive maps">Leaflet
'
},
initialize: function(t) {
o.setOptions(this, t),
this._attributions = {}
},
onAdd: function(t) {
this._container = o.DomUtil.create("div", "leaflet-control-attribution"),
o.DomEvent.disableClickPropagation(this._container);
for (var e in t._layers)
t._layers[e].getAttribution && this.addAttribution(t._layers[e].getAttribution());
return t.on("layeradd", this._onLayerAdd, this).on("layerremove", this._onLayerRemove, this),
this._update(),
this._container
},
onRemove: function(t) {
t.off("layeradd", this._onLayerAdd).off("layerremove", this._onLayerRemove)
},
setPrefix: function(t) {
return this.options.prefix = t,
this._update(),
this
},
addAttribution: function(t) {
return t ? (this._attributions[t] || (this._attributions[t] = 0),
this._attributions[t]++,
this._update(),
this) : void 0
},
removeAttribution: function(t) {
return t ? (this._attributions[t] && (this._attributions[t]--,
this._update()),
this) : void 0
},
_update: function() {
if (this._map) {
var t = [];
for (var e in this._attributions)
this._attributions[e] && t.push(e);
var i = [];
this.options.prefix && i.push(this.options.prefix),
t.length && i.push(t.join(", ")),
this._container.innerHTML = i.join(" | ")
}
},
_onLayerAdd: function(t) {
t.layer.getAttribution && this.addAttribution(t.layer.getAttribution())
},
_onLayerRemove: function(t) {
t.layer.getAttribution && this.removeAttribution(t.layer.getAttribution())
}
}),
o.Map.mergeOptions({
attributionControl: !0
}),
o.Map.addInitHook(function() {
this.options.attributionControl && (this.attributionControl = (new o.Control.Attribution).addTo(this))
}),
o.control.attribution = function(t) {
return new o.Control.Attribution(t)
}
,
o.Control.Scale = o.Control.extend({
options: {
position: "bottomleft",
maxWidth: 100,
metric: !0,
imperial: !0,
updateWhenIdle: !1
},
onAdd: function(t) {
this._map = t;
var e = "leaflet-control-scale"
, i = o.DomUtil.create("div", e)
, n = this.options;
return this._addScales(n, e, i),
t.on(n.updateWhenIdle ? "moveend" : "move", this._update, this),
t.whenReady(this._update, this),
i
},
onRemove: function(t) {
t.off(this.options.updateWhenIdle ? "moveend" : "move", this._update, this)
},
_addScales: function(t, e, i) {
t.metric && (this._mScale = o.DomUtil.create("div", e + "-line", i)),
t.imperial && (this._iScale = o.DomUtil.create("div", e + "-line", i))
},
_update: function() {
var t = this._map.getBounds()
, e = t.getCenter().lat
, i = 6378137 * Math.PI * Math.cos(e * Math.PI / 180)
, n = i * (t.getNorthEast().lng - t.getSouthWest().lng) / 180
, o = this._map.getSize()
, s = this.options
, a = 0;
o.x > 0 && (a = n * (s.maxWidth / o.x)),
this._updateScales(s, a)
},
_updateScales: function(t, e) {
t.metric && e && this._updateMetric(e),
t.imperial && e && this._updateImperial(e)
},
_updateMetric: function(t) {
var e = this._getRoundNum(t);
this._mScale.style.width = this._getScaleWidth(e / t) + "px",
this._mScale.innerHTML = 1e3 > e ? e + " m" : e / 1e3 + " km"
},
_updateImperial: function(t) {
var e, i, n, o = 3.2808399 * t, s = this._iScale;
o > 5280 ? (e = o / 5280,
i = this._getRoundNum(e),
s.style.width = this._getScaleWidth(i / e) + "px",
s.innerHTML = i + " mi") : (n = this._getRoundNum(o),
s.style.width = this._getScaleWidth(n / o) + "px",
s.innerHTML = n + " ft")
},
_getScaleWidth: function(t) {
return Math.round(this.options.maxWidth * t) - 10
},
_getRoundNum: function(t) {
var e = Math.pow(10, (Math.floor(t) + "").length - 1)
, i = t / e;
return i = i >= 10 ? 10 : i >= 5 ? 5 : i >= 3 ? 3 : i >= 2 ? 2 : 1,
e * i
}
}),
o.control.scale = function(t) {
return new o.Control.Scale(t)
}
,
o.Control.Layers = o.Control.extend({
options: {
collapsed: !0,
position: "topright",
autoZIndex: !0
},
initialize: function(t, e, i) {
o.setOptions(this, i),
this._layers = {},
this._lastZIndex = 0,
this._handlingClick = !1;
for (var n in t)
this._addLayer(t[n], n);
for (n in e)
this._addLayer(e[n], n, !0)
},
onAdd: function(t) {
return this._initLayout(),
this._update(),
t.on("layeradd", this._onLayerChange, this).on("layerremove", this._onLayerChange, this),
this._container
},
onRemove: function(t) {
t.off("layeradd", this._onLayerChange, this).off("layerremove", this._onLayerChange, this)
},
addBaseLayer: function(t, e) {
return this._addLayer(t, e),
this._update(),
this
},
addOverlay: function(t, e) {
return this._addLayer(t, e, !0),
this._update(),
this
},
removeLayer: function(t) {
var e = o.stamp(t);
return delete this._layers[e],
this._update(),
this
},
_initLayout: function() {
var t = "leaflet-control-layers"
, e = this._container = o.DomUtil.create("div", t);
e.setAttribute("aria-haspopup", !0),
o.Browser.touch ? o.DomEvent.on(e, "click", o.DomEvent.stopPropagation) : o.DomEvent.disableClickPropagation(e).disableScrollPropagation(e);
var i = this._form = o.DomUtil.create("form", t + "-list");
if (this.options.collapsed) {
o.Browser.android || o.DomEvent.on(e, "mouseover", this._expand, this).on(e, "mouseout", this._collapse, this);
var n = this._layersLink = o.DomUtil.create("a", t + "-toggle", e);
n.href = "#",
n.title = "Layers",
o.Browser.touch ? o.DomEvent.on(n, "click", o.DomEvent.stop).on(n, "click", this._expand, this) : o.DomEvent.on(n, "focus", this._expand, this),
o.DomEvent.on(i, "click", function() {
setTimeout(o.bind(this._onInputClick, this), 0)
}, this),
this._map.on("click", this._collapse, this)
} else
this._expand();
this._baseLayersList = o.DomUtil.create("div", t + "-base", i),
this._separator = o.DomUtil.create("div", t + "-separator", i),
this._overlaysList = o.DomUtil.create("div", t + "-overlays", i),
e.appendChild(i)
},
_addLayer: function(t, e, i) {
var n = o.stamp(t);
this._layers[n] = {
layer: t,
name: e,
overlay: i
},
this.options.autoZIndex && t.setZIndex && (this._lastZIndex++,
t.setZIndex(this._lastZIndex))
},
_update: function() {
if (this._container) {
this._baseLayersList.innerHTML = "",
this._overlaysList.innerHTML = "";
var t, e, i = !1, n = !1;
for (t in this._layers)
e = this._layers[t],
this._addItem(e),
n = n || e.overlay,
i = i || !e.overlay;
this._separator.style.display = n && i ? "" : "none"
}
},
_onLayerChange: function(t) {
var e = this._layers[o.stamp(t.layer)];
if (e) {
this._handlingClick || this._update();
var i = e.overlay ? "layeradd" === t.type ? "overlayadd" : "overlayremove" : "layeradd" === t.type ? "baselayerchange" : null;
i && this._map.fire(i, e)
}
},
_createRadioElement: function(t, i) {
var n = '
";
var o = e.createElement("div");
return o.innerHTML = n,
o.firstChild
},
_addItem: function(t) {
var i, n = e.createElement("label"), s = this._map.hasLayer(t.layer);
t.overlay ? (i = e.createElement("input"),
i.type = "checkbox",
i.className = "leaflet-control-layers-selector",
i.defaultChecked = s) : i = this._createRadioElement("leaflet-base-layers", s),
i.layerId = o.stamp(t.layer),
o.DomEvent.on(i, "click", this._onInputClick, this);
var a = e.createElement("span");
a.innerHTML = " " + t.name,
n.appendChild(i),
n.appendChild(a);
var r = t.overlay ? this._overlaysList : this._baseLayersList;
return r.appendChild(n),
n
},
_onInputClick: function() {
var t, e, i, n = this._form.getElementsByTagName("input"), o = n.length;
for (this._handlingClick = !0,
t = 0; o > t; t++)
e = n[t],
i = this._layers[e.layerId],
e.checked && !this._map.hasLayer(i.layer) ? this._map.addLayer(i.layer) : !e.checked && this._map.hasLayer(i.layer) && this._map.removeLayer(i.layer);
this._handlingClick = !1,
this._refocusOnMap()
},
_expand: function() {
o.DomUtil.addClass(this._container, "leaflet-control-layers-expanded")
},
_collapse: function() {
this._container.className = this._container.className.replace(" leaflet-control-layers-expanded", "")
}
}),
o.control.layers = function(t, e, i) {
return new o.Control.Layers(t,e,i)
}
,
o.PosAnimation = o.Class.extend({
includes: o.Mixin.Events,
run: function(t, e, i, n) {
this.stop(),
this._el = t,
this._inProgress = !0,
this._newPos = e,
this.fire("start"),
t.style[o.DomUtil.TRANSITION] = "all " + (i || .25) + "s cubic-bezier(0,0," + (n || .5) + ",1)",
o.DomEvent.on(t, o.DomUtil.TRANSITION_END, this._onTransitionEnd, this),
o.DomUtil.setPosition(t, e),
o.Util.falseFn(t.offsetWidth),
this._stepTimer = setInterval(o.bind(this._onStep, this), 50)
},
stop: function() {
this._inProgress && (o.DomUtil.setPosition(this._el, this._getPos()),
this._onTransitionEnd(),
o.Util.falseFn(this._el.offsetWidth))
},
_onStep: function() {
var t = this._getPos();
return t ? (this._el._leaflet_pos = t,
void this.fire("step")) : void this._onTransitionEnd()
},
_transformRe: /([-+]?(?:\d*\.)?\d+)\D*, ([-+]?(?:\d*\.)?\d+)\D*\)/,
_getPos: function() {
var e, i, n, s = this._el, a = t.getComputedStyle(s);
if (o.Browser.any3d) {
if (n = a[o.DomUtil.TRANSFORM].match(this._transformRe),
!n)
return;
e = parseFloat(n[1]),
i = parseFloat(n[2])
} else
e = parseFloat(a.left),
i = parseFloat(a.top);
return new o.Point(e,i,!0)
},
_onTransitionEnd: function() {
o.DomEvent.off(this._el, o.DomUtil.TRANSITION_END, this._onTransitionEnd, this),
this._inProgress && (this._inProgress = !1,
this._el.style[o.DomUtil.TRANSITION] = "",
this._el._leaflet_pos = this._newPos,
clearInterval(this._stepTimer),
this.fire("step").fire("end"))
}
}),
o.Map.include({
setView: function(t, e, n) {
if (e = e === i ? this._zoom : this._limitZoom(e),
t = this._limitCenter(o.latLng(t), e, this.options.maxBounds),
n = n || {},
this._panAnim && this._panAnim.stop(),
this._loaded && !n.reset && n !== !0) {
n.animate !== i && (n.zoom = o.extend({
animate: n.animate
}, n.zoom),
n.pan = o.extend({
animate: n.animate
}, n.pan));
var s = this._zoom !== e ? this._tryAnimatedZoom && this._tryAnimatedZoom(t, e, n.zoom) : this._tryAnimatedPan(t, n.pan);
if (s)
return clearTimeout(this._sizeTimer),
this
}
return this._resetView(t, e),
this
},
panBy: function(t, e) {
if (t = o.point(t).round(),
e = e || {},
!t.x && !t.y)
return this;
if (this._panAnim || (this._panAnim = new o.PosAnimation,
this._panAnim.on({
step: this._onPanTransitionStep,
end: this._onPanTransitionEnd
}, this)),
e.noMoveStart || this.fire("movestart"),
e.animate !== !1) {
o.DomUtil.addClass(this._mapPane, "leaflet-pan-anim");
var i = this._getMapPanePos().subtract(t);
this._panAnim.run(this._mapPane, i, e.duration || .25, e.easeLinearity)
} else
this._rawPanBy(t),
this.fire("move").fire("moveend");
return this
},
_onPanTransitionStep: function() {
this.fire("move")
},
_onPanTransitionEnd: function() {
o.DomUtil.removeClass(this._mapPane, "leaflet-pan-anim"),
this.fire("moveend")
},
_tryAnimatedPan: function(t, e) {
var i = this._getCenterOffset(t)._floor();
return (e && e.animate) === !0 || this.getSize().contains(i) ? (this.panBy(i, e),
!0) : !1
}
}),
o.PosAnimation = o.DomUtil.TRANSITION ? o.PosAnimation : o.PosAnimation.extend({
run: function(t, e, i, n) {
this.stop(),
this._el = t,
this._inProgress = !0,
this._duration = i || .25,
this._easeOutPower = 1 / Math.max(n || .5, .2),
this._startPos = o.DomUtil.getPosition(t),
this._offset = e.subtract(this._startPos),
this._startTime = +new Date,
this.fire("start"),
this._animate()
},
stop: function() {
this._inProgress && (this._step(),
this._complete())
},
_animate: function() {
this._animId = o.Util.requestAnimFrame(this._animate, this),
this._step()
},
_step: function() {
var t = +new Date - this._startTime
, e = 1e3 * this._duration;
e > t ? this._runFrame(this._easeOut(t / e)) : (this._runFrame(1),
this._complete())
},
_runFrame: function(t) {
var e = this._startPos.add(this._offset.multiplyBy(t));
o.DomUtil.setPosition(this._el, e),
this.fire("step")
},
_complete: function() {
o.Util.cancelAnimFrame(this._animId),
this._inProgress = !1,
this.fire("end")
},
_easeOut: function(t) {
return 1 - Math.pow(1 - t, this._easeOutPower)
}
}),
o.Map.mergeOptions({
zoomAnimation: !0,
zoomAnimationThreshold: 4
}),
o.DomUtil.TRANSITION && o.Map.addInitHook(function() {
this._zoomAnimated = this.options.zoomAnimation && o.DomUtil.TRANSITION && o.Browser.any3d && !o.Browser.android23 && !o.Browser.mobileOpera,
this._zoomAnimated && o.DomEvent.on(this._mapPane, o.DomUtil.TRANSITION_END, this._catchTransitionEnd, this)
}),
o.Map.include(o.DomUtil.TRANSITION ? {
_catchTransitionEnd: function(t) {
this._animatingZoom && t.propertyName.indexOf("transform") >= 0 && this._onZoomTransitionEnd()
},
_nothingToAnimate: function() {
return !this._container.getElementsByClassName("leaflet-zoom-animated").length
},
_tryAnimatedZoom: function(t, e, i) {
if (this._animatingZoom)
return !0;
if (i = i || {},
!this._zoomAnimated || i.animate === !1 || this._nothingToAnimate() || Math.abs(e - this._zoom) > this.options.zoomAnimationThreshold)
return !1;
var n = this.getZoomScale(e)
, o = this._getCenterOffset(t)._divideBy(1 - 1 / n)
, s = this._getCenterLayerPoint()._add(o);
return i.animate === !0 || this.getSize().contains(o) ? (this.fire("movestart").fire("zoomstart"),
this._animateZoom(t, e, s, n, null, !0),
!0) : !1
},
_animateZoom: function(t, e, i, n, s, a, r) {
r || (this._animatingZoom = !0),
o.DomUtil.addClass(this._mapPane, "leaflet-zoom-anim"),
this._animateToCenter = t,
this._animateToZoom = e,
o.Draggable && (o.Draggable._disabled = !0),
o.Util.requestAnimFrame(function() {
this.fire("zoomanim", {
center: t,
zoom: e,
origin: i,
scale: n,
delta: s,
backwards: a
}),
setTimeout(o.bind(this._onZoomTransitionEnd, this), 250)
}, this)
},
_onZoomTransitionEnd: function() {
this._animatingZoom && (this._animatingZoom = !1,
o.DomUtil.removeClass(this._mapPane, "leaflet-zoom-anim"),
o.Util.requestAnimFrame(function() {
this._resetView(this._animateToCenter, this._animateToZoom, !0, !0),
o.Draggable && (o.Draggable._disabled = !1)
}, this))
}
} : {}),
o.TileLayer.include({
_animateZoom: function(t) {
this._animating || (this._animating = !0,
this._prepareBgBuffer());
var e = this._bgBuffer
, i = o.DomUtil.TRANSFORM
, n = t.delta ? o.DomUtil.getTranslateString(t.delta) : e.style[i]
, s = o.DomUtil.getScaleString(t.scale, t.origin);
e.style[i] = t.backwards ? s + " " + n : n + " " + s
},
_endZoomAnim: function() {
var t = this._tileContainer
, e = this._bgBuffer;
t.style.visibility = "",
t.parentNode.appendChild(t),
o.Util.falseFn(e.offsetWidth);
var i = this._map.getZoom();
(i > this.options.maxZoom || i < this.options.minZoom) && this._clearBgBuffer(),
this._animating = !1
},
_clearBgBuffer: function() {
var t = this._map;
!t || t._animatingZoom || t.touchZoom._zooming || (this._bgBuffer.innerHTML = "",
this._bgBuffer.style[o.DomUtil.TRANSFORM] = "")
},
_prepareBgBuffer: function() {
var t = this._tileContainer
, e = this._bgBuffer
, i = this._getLoadedTilesPercentage(e)
, n = this._getLoadedTilesPercentage(t);
return e && i > .5 && .5 > n ? (t.style.visibility = "hidden",
void this._stopLoadingImages(t)) : (e.style.visibility = "hidden",
e.style[o.DomUtil.TRANSFORM] = "",
this._tileContainer = e,
e = this._bgBuffer = t,
this._stopLoadingImages(e),
void clearTimeout(this._clearBgBufferTimer))
},
_getLoadedTilesPercentage: function(t) {
var e, i, n = t.getElementsByTagName("img"), o = 0;
for (e = 0,
i = n.length; i > e; e++)
n[e].complete && o++;
return o / i
},
_stopLoadingImages: function(t) {
var e, i, n, s = Array.prototype.slice.call(t.getElementsByTagName("img"));
for (e = 0,
i = s.length; i > e; e++)
n = s[e],
n.complete || (n.onload = o.Util.falseFn,
n.onerror = o.Util.falseFn,
n.src = o.Util.emptyImageUrl,
n.parentNode.removeChild(n))
}
}),
o.Map.include({
_defaultLocateOptions: {
watch: !1,
setView: !1,
maxZoom: 1 / 0,
timeout: 1e4,
maximumAge: 0,
enableHighAccuracy: !1
},
locate: function(t) {
if (t = this._locateOptions = o.extend(this._defaultLocateOptions, t),
!navigator.geolocation)
return this._handleGeolocationError({
code: 0,
message: "Geolocation not supported."
}),
this;
var e = o.bind(this._handleGeolocationResponse, this)
, i = o.bind(this._handleGeolocationError, this);
return t.watch ? this._locationWatchId = navigator.geolocation.watchPosition(e, i, t) : navigator.geolocation.getCurrentPosition(e, i, t),
this
},
stopLocate: function() {
return navigator.geolocation && navigator.geolocation.clearWatch(this._locationWatchId),
this._locateOptions && (this._locateOptions.setView = !1),
this
},
_handleGeolocationError: function(t) {
var e = t.code
, i = t.message || (1 === e ? "permission denied" : 2 === e ? "position unavailable" : "timeout");
this._locateOptions.setView && !this._loaded && this.fitWorld(),
this.fire("locationerror", {
code: e,
message: "Geolocation error: " + i + "."
})
},
_handleGeolocationResponse: function(t) {
var e = t.coords.latitude
, i = t.coords.longitude
, n = new o.LatLng(e,i)
, s = 180 * t.coords.accuracy / 40075017
, a = s / Math.cos(o.LatLng.DEG_TO_RAD * e)
, r = o.latLngBounds([e - s, i - a], [e + s, i + a])
, h = this._locateOptions;
if (h.setView) {
var l = Math.min(this.getBoundsZoom(r), h.maxZoom);
this.setView(n, l)
}
var u = {
latlng: n,
bounds: r,
timestamp: t.timestamp
};
for (var c in t.coords)
"number" == typeof t.coords[c] && (u[c] = t.coords[c]);
this.fire("locationfound", u)
}
})
}(window, document);
define("ViewModels/DistanceLegendViewModel", ["Cesium/Core/defined", "Cesium/Core/DeveloperError", "Cesium/Core/EllipsoidGeodesic", "Cesium/Core/Cartesian2", "Cesium/Core/getTimestamp", "Cesium/Core/EventHelper", "KnockoutES5", "Core/loadView", "leaflet"], function(defined, DeveloperError, EllipsoidGeodesic, Cartesian2, getTimestamp, EventHelper, Knockout, loadView, leaflet) {
"use strict";
var DistanceLegendViewModel = function(options) {
if (!defined(options) || !defined(options.terria)) {
throw new DeveloperError("options.terria is required.")
}
this.terria = options.terria;
this._removeSubscription = undefined;
this._lastLegendUpdate = undefined;
this.eventHelper = new EventHelper;
this.distanceLabel = undefined;
this.barWidth = undefined;
Knockout.track(this, ["distanceLabel", "barWidth"]);
this.eventHelper.add(this.terria.afterWidgetChanged, function() {
if (defined(this._removeSubscription)) {
this._removeSubscription();
this._removeSubscription = undefined
}
}, this);
var that = this;
function addUpdateSubscription() {
if (defined(that.terria)) {
var scene = that.terria.scene;
that._removeSubscription = scene.postRender.addEventListener(function() {
updateDistanceLegendCesium(this, scene)
}, that)
} else if (defined(that.terria.leaflet)) {
var map = that.terria.leaflet.map;
var potentialChangeCallback = function potentialChangeCallback() {
updateDistanceLegendLeaflet(that, map)
};
that._removeSubscription = function() {
map.off("zoomend", potentialChangeCallback);
map.off("moveend", potentialChangeCallback)
}
;
map.on("zoomend", potentialChangeCallback);
map.on("moveend", potentialChangeCallback);
updateDistanceLegendLeaflet(that, map)
}
}
addUpdateSubscription();
this.eventHelper.add(this.terria.afterWidgetChanged, function() {
addUpdateSubscription()
}, this)
};
DistanceLegendViewModel.prototype.destroy = function() {
this.eventHelper.removeAll()
}
;
DistanceLegendViewModel.prototype.show = function(container) {
var testing = '
";
loadView(testing, container, this)
}
;
DistanceLegendViewModel.create = function(options) {
var result = new DistanceLegendViewModel(options);
result.show(options.container);
return result
}
;
var geodesic = new EllipsoidGeodesic;
var distances = [1, 2, 3, 5, 10, 20, 30, 50, 100, 200, 300, 500, 1e3, 2e3, 3e3, 5e3, 1e4, 2e4, 3e4, 5e4, 1e5, 2e5, 3e5, 5e5, 1e6, 2e6, 3e6, 5e6, 1e7, 2e7, 3e7, 5e7];
function updateDistanceLegendCesium(viewModel, scene) {
var now = getTimestamp();
if (now < viewModel._lastLegendUpdate + 250) {
return
}
viewModel._lastLegendUpdate = now;
var width = scene.canvas.clientWidth;
var height = scene.canvas.clientHeight;
var left = scene.camera.getPickRay(new Cartesian2(width / 2 | 0,height - 1));
var right = scene.camera.getPickRay(new Cartesian2(1 + width / 2 | 0,height - 1));
var globe = scene.globe;
var leftPosition = globe.pick(left, scene);
var rightPosition = globe.pick(right, scene);
if (!defined(leftPosition) || !defined(rightPosition)) {
viewModel.barWidth = undefined;
viewModel.distanceLabel = undefined;
return
}
var leftCartographic = globe.ellipsoid.cartesianToCartographic(leftPosition);
var rightCartographic = globe.ellipsoid.cartesianToCartographic(rightPosition);
geodesic.setEndPoints(leftCartographic, rightCartographic);
var pixelDistance = geodesic.surfaceDistance;
var maxBarWidth = 100;
var distance;
for (var i = distances.length - 1; !defined(distance) && i >= 0; --i) {
if (distances[i] / pixelDistance < maxBarWidth) {
distance = distances[i]
}
}
if (defined(distance)) {
var label;
if (distance >= 1e3) {
label = (distance / 1e3).toString() + " km"
} else {
label = distance.toString() + " m"
}
viewModel.barWidth = distance / pixelDistance | 0;
viewModel.distanceLabel = label
} else {
viewModel.barWidth = undefined;
viewModel.distanceLabel = undefined
}
}
function updateDistanceLegendLeaflet(viewModel, map) {
var halfHeight = map.getSize().y / 2;
var maxPixelWidth = 100;
var maxMeters = map.containerPointToLatLng([0, halfHeight]).distanceTo(map.containerPointToLatLng([maxPixelWidth, halfHeight]));
var meters = leaflet.control.scale()._getRoundNum(maxMeters);
var label = meters < 1e3 ? meters + " m" : meters / 1e3 + " km";
viewModel.barWidth = meters / maxMeters * maxPixelWidth;
viewModel.distanceLabel = label
}
return DistanceLegendViewModel
});
define("ViewModels/UserInterfaceControl", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/DeveloperError", "KnockoutES5"], function(defined, defineProperties, DeveloperError, Knockout) {
"use strict";
var UserInterfaceControl = function(terria) {
if (!defined(terria)) {
throw new DeveloperError("terria is required")
}
this._terria = terria;
this.name = "Unnamed Control";
this.text = undefined;
this.svgIcon = undefined;
this.svgHeight = undefined;
this.svgWidth = undefined;
this.cssClass = undefined;
this.isActive = false;
Knockout.track(this, ["name", "svgIcon", "svgHeight", "svgWidth", "cssClass", "isActive"])
};
Object.defineProperties(UserInterfaceControl.prototype, {
terria: {
get: function() {
return this._terria
}
},
hasText: {
get: function() {
return defined(this.text) && typeof this.text === "string"
}
}
});
UserInterfaceControl.prototype.activate = function() {
throw new DeveloperError("activate must be implemented in the derived class.")
}
;
return UserInterfaceControl
});
define("ViewModels/NavigationControl", ["ViewModels/UserInterfaceControl"], function(UserInterfaceControl) {
"use strict";
var NavigationControl = function(terria) {
UserInterfaceControl.apply(this, arguments)
};
NavigationControl.prototype = Object.create(UserInterfaceControl.prototype);
return NavigationControl
});
define("SvgPaths/svgReset", [], function() {
"use strict";
return "M 7.5,0 C 3.375,0 0,3.375 0,7.5 0,11.625 3.375,15 7.5,15 c 3.46875,0 6.375,-2.4375 7.21875,-5.625 l -1.96875,0 C 12,11.53125 9.9375,13.125 7.5,13.125 4.40625,13.125 1.875,10.59375 1.875,7.5 1.875,4.40625 4.40625,1.875 7.5,1.875 c 1.59375,0 2.90625,0.65625 3.9375,1.6875 l -3,3 6.5625,0 L 15,0 12.75,2.25 C 11.4375,0.84375 9.5625,0 7.5,0 z"
});
define("ViewModels/ResetViewNavigationControl", ["Cesium/Core/defined", "Cesium/Scene/Camera", "Cesium/Core/Rectangle", "Cesium/Core/Cartographic", "ViewModels/NavigationControl", "SvgPaths/svgReset"], function(defined, Camera, Rectangle, Cartographic, NavigationControl, svgReset) {
"use strict";
var ResetViewNavigationControl = function(terria) {
NavigationControl.apply(this, arguments);
/*this.name="Reset View";*/
this.name = "地图复位";
this.svgIcon = svgReset;
this.svgHeight = 15;
this.svgWidth = 15;
this.cssClass = "navigation-control-icon-reset"
};
ResetViewNavigationControl.prototype = Object.create(NavigationControl.prototype);
ResetViewNavigationControl.prototype.resetView = function() {
var scene = this.terria.scene;
var sscc = scene.screenSpaceCameraController;
if (!sscc.enableInputs) {
return
}
this.isActive = true;
var camera = scene.camera;
if (defined(this.terria.trackedEntity)) {
var trackedEntity = this.terria.trackedEntity;
this.terria.trackedEntity = undefined;
this.terria.trackedEntity = trackedEntity
} else {
if (this.terria.options.defaultResetView) {
if (this.terria.options.defaultResetView && Array.isArray(this.terria.options.defaultResetView)) {
let view = this.terria.options.defaultResetView;
camera.flyTo({
destination: Cesium.Cartesian3.fromDegrees(view[0], view[1], view[2]),
orientation: new Cesium.HeadingPitchRoll(
Cesium.Math.toRadians(view[3] || 0),
Cesium.Math.toRadians(view[4] || -90),
Cesium.Math.toRadians(view[5] || 0),
),
})
} else if (this.terria.options.defaultResetView && this.terria.options.defaultResetView instanceof Cartographic) {
camera.flyTo({
destination: scene.globe.ellipsoid.cartographicToCartesian(this.terria.options.defaultResetView)
})
} else if (this.terria.options.defaultResetView && this.terria.options.defaultResetView instanceof Rectangle) {
try {
Rectangle.validate(this.terria.options.defaultResetView);
camera.flyTo({
destination: this.terria.options.defaultResetView
})
} catch (e) {
console.log("Cesium-navigation/ResetViewNavigationControl: options.defaultResetView Cesium rectangle is invalid!")
}
}
} else if (typeof camera.flyHome === "function") {
camera.flyHome(1)
} else {
camera.flyTo({
destination: Camera.DEFAULT_VIEW_RECTANGLE,
duration: 1
})
}
}
this.isActive = false
}
;
ResetViewNavigationControl.prototype.activate = function() {
this.resetView()
}
;
return ResetViewNavigationControl
});
define("Core/Utils", ["Cesium/Core/defined", "Cesium/Core/Ray", "Cesium/Core/Cartesian3", "Cesium/Core/Cartographic", "Cesium/Core/ReferenceFrame", "Cesium/Scene/SceneMode"], function(defined, Ray, Cartesian3, Cartographic, ReferenceFrame, SceneMode) {
"use strict";
var Utils = {};
var unprojectedScratch = new Cartographic;
var rayScratch = new Ray;
Utils.getCameraFocus = function(terria, inWorldCoordinates, result) {
var scene = terria.scene;
var camera = scene.camera;
if (scene.mode == SceneMode.MORPHING) {
return undefined
}
if (!defined(result)) {
result = new Cartesian3
}
if (defined(terria.trackedEntity)) {
result = terria.trackedEntity.position.getValue(terria.clock.currentTime, result)
} else {
rayScratch.origin = camera.positionWC;
rayScratch.direction = camera.directionWC;
result = scene.globe.pick(rayScratch, scene, result)
}
if (!defined(result)) {
return undefined
}
if (scene.mode == SceneMode.SCENE2D || scene.mode == SceneMode.COLUMBUS_VIEW) {
result = camera.worldToCameraCoordinatesPoint(result, result);
if (inWorldCoordinates) {
result = scene.globe.ellipsoid.cartographicToCartesian(scene.mapProjection.unproject(result, unprojectedScratch), result)
}
} else {
if (!inWorldCoordinates) {
result = camera.worldToCameraCoordinatesPoint(result, result)
}
}
return result
}
;
return Utils
});
define("ViewModels/ZoomNavigationControl", ["Cesium/Core/defined", "Cesium/Core/Ray", "Cesium/Core/IntersectionTests", "Cesium/Core/Cartesian3", "Cesium/Scene/SceneMode", "ViewModels/NavigationControl", "Core/Utils"], function(defined, Ray, IntersectionTests, Cartesian3, SceneMode, NavigationControl, Utils) {
"use strict";
var ZoomNavigationControl = function(terria, zoomIn) {
NavigationControl.apply(this, arguments);
/*this.name="Zoom "+(zoomIn?"In":"Out");*/
if (zoomIn) {
this.name = "放大"
} else {
this.name = "缩小"
}
;this.text = zoomIn ? "+" : "-";
this.cssClass = "navigation-control-icon-zoom-" + (zoomIn ? "in" : "out");
this.relativeAmount = 2;
if (zoomIn) {
this.relativeAmount = 1 / this.relativeAmount
}
};
ZoomNavigationControl.prototype.relativeAmount = 1;
ZoomNavigationControl.prototype = Object.create(NavigationControl.prototype);
ZoomNavigationControl.prototype.activate = function() {
this.zoom(this.relativeAmount)
}
;
var cartesian3Scratch = new Cartesian3;
ZoomNavigationControl.prototype.zoom = function(relativeAmount) {
this.isActive = true;
if (defined(this.terria)) {
var scene = this.terria.scene;
var sscc = scene.screenSpaceCameraController;
if (!sscc.enableInputs || !sscc.enableZoom) {
return
}
var camera = scene.camera;
var orientation;
switch (scene.mode) {
case SceneMode.MORPHING:
break;
case SceneMode.SCENE2D:
camera.zoomIn(camera.positionCartographic.height * (1 - this.relativeAmount));
break;
default:
var focus;
if (defined(this.terria.trackedEntity)) {
focus = new Cartesian3
} else {
focus = Utils.getCameraFocus(this.terria, false)
}
if (!defined(focus)) {
var ray = new Ray(camera.worldToCameraCoordinatesPoint(scene.globe.ellipsoid.cartographicToCartesian(camera.positionCartographic)),camera.directionWC);
focus = IntersectionTests.grazingAltitudeLocation(ray, scene.globe.ellipsoid);
orientation = {
heading: camera.heading,
pitch: camera.pitch,
roll: camera.roll
}
} else {
orientation = {
direction: camera.direction,
up: camera.up
}
}
var direction = Cartesian3.subtract(camera.position, focus, cartesian3Scratch);
var movementVector = Cartesian3.multiplyByScalar(direction, relativeAmount, direction);
var endPosition = Cartesian3.add(focus, movementVector, focus);
if (defined(this.terria.trackedEntity) || scene.mode == SceneMode.COLUMBUS_VIEW) {
camera.position = endPosition
} else {
camera.flyTo({
destination: endPosition,
orientation: orientation,
duration: .5,
convert: false
})
}
}
}
this.isActive = false
}
;
return ZoomNavigationControl
});
define("SvgPaths/svgCompassOuterRing", [], function() {
"use strict";
return "m 66.5625,0 0,15.15625 3.71875,0 0,-10.40625 5.5,10.40625 4.375,0 0,-15.15625 -3.71875,0 0,10.40625 L 70.9375,0 66.5625,0 z M 72.5,20.21875 c -28.867432,0 -52.28125,23.407738 -52.28125,52.28125 0,28.87351 23.413818,52.3125 52.28125,52.3125 28.86743,0 52.28125,-23.43899 52.28125,-52.3125 0,-28.873512 -23.41382,-52.28125 -52.28125,-52.28125 z m 0,1.75 c 13.842515,0 26.368948,5.558092 35.5,14.5625 l -11.03125,11 0.625,0.625 11.03125,-11 c 8.9199,9.108762 14.4375,21.579143 14.4375,35.34375 0,13.764606 -5.5176,26.22729 -14.4375,35.34375 l -11.03125,-11 -0.625,0.625 11.03125,11 c -9.130866,9.01087 -21.658601,14.59375 -35.5,14.59375 -13.801622,0 -26.321058,-5.53481 -35.4375,-14.5 l 11.125,-11.09375 c 6.277989,6.12179 14.857796,9.90625 24.3125,9.90625 19.241896,0 34.875,-15.629154 34.875,-34.875 0,-19.245847 -15.633104,-34.84375 -34.875,-34.84375 -9.454704,0 -18.034511,3.760884 -24.3125,9.875 L 37.0625,36.4375 C 46.179178,27.478444 58.696991,21.96875 72.5,21.96875 z m -0.875,0.84375 0,13.9375 1.75,0 0,-13.9375 -1.75,0 z M 36.46875,37.0625 47.5625,48.15625 C 41.429794,54.436565 37.65625,63.027539 37.65625,72.5 c 0,9.472461 3.773544,18.055746 9.90625,24.34375 L 36.46875,107.9375 c -8.96721,-9.1247 -14.5,-21.624886 -14.5,-35.4375 0,-13.812615 5.53279,-26.320526 14.5,-35.4375 z M 72.5,39.40625 c 18.297686,0 33.125,14.791695 33.125,33.09375 0,18.302054 -14.827314,33.125 -33.125,33.125 -18.297687,0 -33.09375,-14.822946 -33.09375,-33.125 0,-18.302056 14.796063,-33.09375 33.09375,-33.09375 z M 22.84375,71.625 l 0,1.75 13.96875,0 0,-1.75 -13.96875,0 z m 85.5625,0 0,1.75 14,0 0,-1.75 -14,0 z M 71.75,108.25 l 0,13.9375 1.71875,0 0,-13.9375 -1.71875,0 z"
});
define("SvgPaths/svgCompassGyro", [], function() {
"use strict";
return "m 72.71875,54.375 c -0.476702,0 -0.908208,0.245402 -1.21875,0.5625 -0.310542,0.317098 -0.551189,0.701933 -0.78125,1.1875 -0.172018,0.363062 -0.319101,0.791709 -0.46875,1.25 -6.91615,1.075544 -12.313231,6.656514 -13,13.625 -0.327516,0.117495 -0.661877,0.244642 -0.9375,0.375 -0.485434,0.22959 -0.901634,0.471239 -1.21875,0.78125 -0.317116,0.310011 -0.5625,0.742111 -0.5625,1.21875 l 0.03125,0 c 0,0.476639 0.245384,0.877489 0.5625,1.1875 0.317116,0.310011 0.702066,0.58291 1.1875,0.8125 0.35554,0.168155 0.771616,0.32165 1.21875,0.46875 1.370803,6.10004 6.420817,10.834127 12.71875,11.8125 0.146999,0.447079 0.30025,0.863113 0.46875,1.21875 0.230061,0.485567 0.470708,0.870402 0.78125,1.1875 0.310542,0.317098 0.742048,0.5625 1.21875,0.5625 0.476702,0 0.876958,-0.245402 1.1875,-0.5625 0.310542,-0.317098 0.582439,-0.701933 0.8125,-1.1875 0.172018,-0.363062 0.319101,-0.791709 0.46875,-1.25 6.249045,-1.017063 11.256351,-5.7184 12.625,-11.78125 0.447134,-0.1471 0.86321,-0.300595 1.21875,-0.46875 0.485434,-0.22959 0.901633,-0.502489 1.21875,-0.8125 0.317117,-0.310011 0.5625,-0.710861 0.5625,-1.1875 l -0.03125,0 c 0,-0.476639 -0.245383,-0.908739 -0.5625,-1.21875 C 89.901633,71.846239 89.516684,71.60459 89.03125,71.375 88.755626,71.244642 88.456123,71.117495 88.125,71 87.439949,64.078341 82.072807,58.503735 75.21875,57.375 c -0.15044,-0.461669 -0.326927,-0.884711 -0.5,-1.25 -0.230061,-0.485567 -0.501958,-0.870402 -0.8125,-1.1875 -0.310542,-0.317098 -0.710798,-0.5625 -1.1875,-0.5625 z m -0.0625,1.40625 c 0.03595,-0.01283 0.05968,0 0.0625,0 0.0056,0 0.04321,-0.02233 0.1875,0.125 0.144288,0.147334 0.34336,0.447188 0.53125,0.84375 0.06385,0.134761 0.123901,0.309578 0.1875,0.46875 -0.320353,-0.01957 -0.643524,-0.0625 -0.96875,-0.0625 -0.289073,0 -0.558569,0.04702 -0.84375,0.0625 C 71.8761,57.059578 71.936151,56.884761 72,56.75 c 0.18789,-0.396562 0.355712,-0.696416 0.5,-0.84375 0.07214,-0.07367 0.120304,-0.112167 0.15625,-0.125 z m 0,2.40625 c 0.448007,0 0.906196,0.05436 1.34375,0.09375 0.177011,0.592256 0.347655,1.271044 0.5,2.03125 0.475097,2.370753 0.807525,5.463852 0.9375,8.9375 -0.906869,-0.02852 -1.834463,-0.0625 -2.78125,-0.0625 -0.92298,0 -1.802327,0.03537 -2.6875,0.0625 0.138529,-3.473648 0.493653,-6.566747 0.96875,-8.9375 0.154684,-0.771878 0.320019,-1.463985 0.5,-2.0625 0.405568,-0.03377 0.804291,-0.0625 1.21875,-0.0625 z m -2.71875,0.28125 c -0.129732,0.498888 -0.259782,0.987558 -0.375,1.5625 -0.498513,2.487595 -0.838088,5.693299 -0.96875,9.25 -3.21363,0.15162 -6.119596,0.480068 -8.40625,0.9375 -0.682394,0.136509 -1.275579,0.279657 -1.84375,0.4375 0.799068,-6.135482 5.504716,-11.036454 11.59375,-12.1875 z M 75.5,58.5 c 6.043169,1.18408 10.705093,6.052712 11.5,12.15625 -0.569435,-0.155806 -1.200273,-0.302525 -1.875,-0.4375 -2.262525,-0.452605 -5.108535,-0.783809 -8.28125,-0.9375 -0.130662,-3.556701 -0.470237,-6.762405 -0.96875,-9.25 C 75.761959,59.467174 75.626981,58.990925 75.5,58.5 z m -2.84375,12.09375 c 0.959338,0 1.895843,0.03282 2.8125,0.0625 C 75.48165,71.267751 75.5,71.871028 75.5,72.5 c 0,1.228616 -0.01449,2.438313 -0.0625,3.59375 -0.897358,0.0284 -1.811972,0.0625 -2.75,0.0625 -0.927373,0 -1.831062,-0.03473 -2.71875,-0.0625 -0.05109,-1.155437 -0.0625,-2.365134 -0.0625,-3.59375 0,-0.628972 0.01741,-1.232249 0.03125,-1.84375 0.895269,-0.02827 1.783025,-0.0625 2.71875,-0.0625 z M 68.5625,70.6875 c -0.01243,0.60601 -0.03125,1.189946 -0.03125,1.8125 0,1.22431 0.01541,2.407837 0.0625,3.5625 -3.125243,-0.150329 -5.92077,-0.471558 -8.09375,-0.90625 -0.784983,-0.157031 -1.511491,-0.316471 -2.125,-0.5 -0.107878,-0.704096 -0.1875,-1.422089 -0.1875,-2.15625 0,-0.115714 0.02849,-0.228688 0.03125,-0.34375 0.643106,-0.20284 1.389577,-0.390377 2.25,-0.5625 2.166953,-0.433487 4.97905,-0.75541 8.09375,-0.90625 z m 8.3125,0.03125 c 3.075121,0.15271 5.824455,0.446046 7.96875,0.875 0.857478,0.171534 1.630962,0.360416 2.28125,0.5625 0.0027,0.114659 0,0.228443 0,0.34375 0,0.735827 -0.07914,1.450633 -0.1875,2.15625 -0.598568,0.180148 -1.29077,0.34562 -2.0625,0.5 -2.158064,0.431708 -4.932088,0.754666 -8.03125,0.90625 0.04709,-1.154663 0.0625,-2.33819 0.0625,-3.5625 0,-0.611824 -0.01924,-1.185379 -0.03125,-1.78125 z M 57.15625,72.5625 c 0.0023,0.572772 0.06082,1.131112 0.125,1.6875 -0.125327,-0.05123 -0.266577,-0.10497 -0.375,-0.15625 -0.396499,-0.187528 -0.665288,-0.387337 -0.8125,-0.53125 -0.147212,-0.143913 -0.15625,-0.182756 -0.15625,-0.1875 0,-0.0047 -0.02221,-0.07484 0.125,-0.21875 0.147212,-0.143913 0.447251,-0.312472 0.84375,-0.5 0.07123,-0.03369 0.171867,-0.06006 0.25,-0.09375 z m 31.03125,0 c 0.08201,0.03503 0.175941,0.05872 0.25,0.09375 0.396499,0.187528 0.665288,0.356087 0.8125,0.5 0.14725,0.14391 0.15625,0.21405 0.15625,0.21875 0,0.0047 -0.009,0.04359 -0.15625,0.1875 -0.147212,0.143913 -0.416001,0.343722 -0.8125,0.53125 -0.09755,0.04613 -0.233314,0.07889 -0.34375,0.125 0.06214,-0.546289 0.09144,-1.094215 0.09375,-1.65625 z m -29.5,3.625 c 0.479308,0.123125 0.983064,0.234089 1.53125,0.34375 2.301781,0.460458 5.229421,0.787224 8.46875,0.9375 0.167006,2.84339 0.46081,5.433176 0.875,7.5 0.115218,0.574942 0.245268,1.063612 0.375,1.5625 -5.463677,-1.028179 -9.833074,-5.091831 -11.25,-10.34375 z m 27.96875,0 C 85.247546,81.408945 80.919274,85.442932 75.5,86.5 c 0.126981,-0.490925 0.261959,-0.967174 0.375,-1.53125 0.41419,-2.066824 0.707994,-4.65661 0.875,-7.5 3.204493,-0.15162 6.088346,-0.480068 8.375,-0.9375 0.548186,-0.109661 1.051942,-0.220625 1.53125,-0.34375 z M 70.0625,77.53125 c 0.865391,0.02589 1.723666,0.03125 2.625,0.03125 0.912062,0 1.782843,-0.0048 2.65625,-0.03125 -0.165173,2.736408 -0.453252,5.207651 -0.84375,7.15625 -0.152345,0.760206 -0.322989,1.438994 -0.5,2.03125 -0.437447,0.03919 -0.895856,0.0625 -1.34375,0.0625 -0.414943,0 -0.812719,-0.02881 -1.21875,-0.0625 -0.177011,-0.592256 -0.347655,-1.271044 -0.5,-2.03125 -0.390498,-1.948599 -0.700644,-4.419842 -0.875,-7.15625 z m 1.75,10.28125 c 0.284911,0.01545 0.554954,0.03125 0.84375,0.03125 0.325029,0 0.648588,-0.01171 0.96875,-0.03125 -0.05999,0.148763 -0.127309,0.31046 -0.1875,0.4375 -0.18789,0.396562 -0.386962,0.696416 -0.53125,0.84375 -0.144288,0.147334 -0.181857,0.125 -0.1875,0.125 -0.0056,0 -0.07446,0.02233 -0.21875,-0.125 C 72.355712,88.946416 72.18789,88.646562 72,88.25 71.939809,88.12296 71.872486,87.961263 71.8125,87.8125 z"
});
define("SvgPaths/svgCompassRotationMarker", [], function() {
"use strict";
return "M 72.46875,22.03125 C 59.505873,22.050338 46.521615,27.004287 36.6875,36.875 L 47.84375,47.96875 C 61.521556,34.240041 83.442603,34.227389 97.125,47.90625 l 11.125,-11.125 C 98.401629,26.935424 85.431627,22.012162 72.46875,22.03125 z"
});
define("ViewModels/NavigationViewModel", ["Cesium/Core/defined", "Cesium/Core/Math", "Cesium/Core/getTimestamp", "Cesium/Core/EventHelper", "Cesium/Core/Transforms", "Cesium/Scene/SceneMode", "Cesium/Core/Cartesian2", "Cesium/Core/Cartesian3", "Cesium/Core/Matrix4", "Cesium/Core/BoundingSphere", "Cesium/Core/HeadingPitchRange", "KnockoutES5", "Core/loadView", "ViewModels/ResetViewNavigationControl", "ViewModels/ZoomNavigationControl", "SvgPaths/svgCompassOuterRing", "SvgPaths/svgCompassGyro", "SvgPaths/svgCompassRotationMarker", "Core/Utils"], function(defined, CesiumMath, getTimestamp, EventHelper, Transforms, SceneMode, Cartesian2, Cartesian3, Matrix4, BoundingSphere, HeadingPitchRange, Knockout, loadView, ResetViewNavigationControl, ZoomNavigationControl, svgCompassOuterRing, svgCompassGyro, svgCompassRotationMarker, Utils) {
"use strict";
var NavigationViewModel = function(options) {
this.terria = options.terria;
this.eventHelper = new EventHelper;
this.controls = options.controls;
if (!defined(this.controls)) {
this.controls = [new ZoomNavigationControl(this.terria,true), new ResetViewNavigationControl(this.terria), new ZoomNavigationControl(this.terria,false)]
}
this.svgCompassOuterRing = svgCompassOuterRing;
this.svgCompassGyro = svgCompassGyro;
this.svgCompassRotationMarker = svgCompassRotationMarker;
this.showCompass = defined(this.terria);
this.heading = this.showCompass ? this.terria.scene.camera.heading : 0;
this.isOrbiting = false;
this.orbitCursorAngle = 0;
this.orbitCursorOpacity = 0;
this.orbitLastTimestamp = 0;
this.orbitFrame = undefined;
this.orbitIsLook = false;
this.orbitMouseMoveFunction = undefined;
this.orbitMouseUpFunction = undefined;
this.isRotating = false;
this.rotateInitialCursorAngle = undefined;
this.rotateFrame = undefined;
this.rotateIsLook = false;
this.rotateMouseMoveFunction = undefined;
this.rotateMouseUpFunction = undefined;
this._unsubcribeFromPostRender = undefined;
Knockout.track(this, ["controls", "showCompass", "heading", "isOrbiting", "orbitCursorAngle", "isRotating"]);
var that = this;
function widgetChange() {
if (defined(that.terria)) {
if (that._unsubcribeFromPostRender) {
that._unsubcribeFromPostRender();
that._unsubcribeFromPostRender = undefined
}
that.showCompass = true;
that._unsubcribeFromPostRender = that.terria.scene.postRender.addEventListener(function() {
that.heading = that.terria.scene.camera.heading
})
} else {
if (that._unsubcribeFromPostRender) {
that._unsubcribeFromPostRender();
that._unsubcribeFromPostRender = undefined
}
that.showCompass = false
}
}
this.eventHelper.add(this.terria.afterWidgetChanged, widgetChange, this);
widgetChange()
};
NavigationViewModel.prototype.destroy = function() {
this.eventHelper.removeAll()
}
;
NavigationViewModel.prototype.show = function(container) {
var testing = '
' + '
' + "
" + "
" + '
' + '
' + "
" + '
' + "" + "
" + " " + "
" + " " + " " + "
" + " " + "
" + " " + "
";
loadView(testing, container, this)
}
;
NavigationViewModel.prototype.add = function(control) {
this.controls.push(control)
}
;
NavigationViewModel.prototype.remove = function(control) {
this.controls.remove(control)
}
;
NavigationViewModel.prototype.isLastControl = function(control) {
return control === this.controls[this.controls.length - 1]
}
;
var vectorScratch = new Cartesian2;
NavigationViewModel.prototype.handleMouseDown = function(viewModel, e) {
var scene = this.terria.scene;
if (scene.mode == SceneMode.MORPHING) {
return true
}
var compassElement = e.currentTarget;
var compassRectangle = e.currentTarget.getBoundingClientRect();
var maxDistance = compassRectangle.width / 2;
var center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2,(compassRectangle.bottom - compassRectangle.top) / 2);
var clickLocation = new Cartesian2(e.clientX - compassRectangle.left,e.clientY - compassRectangle.top);
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch);
var distanceFromCenter = Cartesian2.magnitude(vector);
var distanceFraction = distanceFromCenter / maxDistance;
var nominalTotalRadius = 145;
var norminalGyroRadius = 50;
if (distanceFraction < norminalGyroRadius / nominalTotalRadius) {
orbit(this, compassElement, vector)
} else if (distanceFraction < 1) {
rotate(this, compassElement, vector)
} else {
return true
}
}
;
var oldTransformScratch = new Matrix4;
var newTransformScratch = new Matrix4;
var centerScratch = new Cartesian3;
NavigationViewModel.prototype.handleDoubleClick = function(viewModel, e) {
var scene = viewModel.terria.scene;
var camera = scene.camera;
var sscc = scene.screenSpaceCameraController;
if (scene.mode == SceneMode.MORPHING || !sscc.enableInputs) {
return true
}
if (scene.mode == SceneMode.COLUMBUS_VIEW && !sscc.enableTranslate) {
return
}
if (scene.mode == SceneMode.SCENE3D || scene.mode == SceneMode.COLUMBUS_VIEW) {
if (!sscc.enableLook) {
return
}
if (scene.mode == SceneMode.SCENE3D) {
if (!sscc.enableRotate) {
return
}
}
}
var center = Utils.getCameraFocus(viewModel.terria, true, centerScratch);
if (!defined(center)) {
this.controls[1].resetView();
return
}
var cameraPosition = scene.globe.ellipsoid.cartographicToCartesian(camera.positionCartographic, new Cartesian3);
var surfaceNormal = scene.globe.ellipsoid.geodeticSurfaceNormal(center);
var focusBoundingSphere = new BoundingSphere(center,0);
camera.flyToBoundingSphere(focusBoundingSphere, {
offset: new HeadingPitchRange(0,CesiumMath.PI_OVER_TWO - Cartesian3.angleBetween(surfaceNormal, camera.directionWC),Cartesian3.distance(cameraPosition, center)),
duration: 1.5
})
}
;
NavigationViewModel.create = function(options) {
var result = new NavigationViewModel(options);
result.show(options.container);
return result
}
;
function orbit(viewModel, compassElement, cursorVector) {
var scene = viewModel.terria.scene;
var sscc = scene.screenSpaceCameraController;
if (scene.mode == SceneMode.MORPHING || !sscc.enableInputs) {
return
}
switch (scene.mode) {
case SceneMode.COLUMBUS_VIEW:
if (sscc.enableLook) {
break
}
if (!sscc.enableTranslate || !sscc.enableTilt) {
return
}
break;
case SceneMode.SCENE3D:
if (sscc.enableLook) {
break
}
if (!sscc.enableTilt || !sscc.enableRotate) {
return
}
break;
case SceneMode.SCENE2D:
if (!sscc.enableTranslate) {
return
}
break
}
document.removeEventListener("mousemove", viewModel.orbitMouseMoveFunction, false);
document.removeEventListener("mouseup", viewModel.orbitMouseUpFunction, false);
if (defined(viewModel.orbitTickFunction)) {
viewModel.terria.clock.onTick.removeEventListener(viewModel.orbitTickFunction)
}
viewModel.orbitMouseMoveFunction = undefined;
viewModel.orbitMouseUpFunction = undefined;
viewModel.orbitTickFunction = undefined;
viewModel.isOrbiting = true;
viewModel.orbitLastTimestamp = getTimestamp();
var camera = scene.camera;
if (defined(viewModel.terria.trackedEntity)) {
viewModel.orbitFrame = undefined;
viewModel.orbitIsLook = false
} else {
var center = Utils.getCameraFocus(viewModel.terria, true, centerScratch);
if (!defined(center)) {
viewModel.orbitFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch);
viewModel.orbitIsLook = true
} else {
viewModel.orbitFrame = Transforms.eastNorthUpToFixedFrame(center, scene.globe.ellipsoid, newTransformScratch);
viewModel.orbitIsLook = false
}
}
viewModel.orbitTickFunction = function(e) {
var timestamp = getTimestamp();
var deltaT = timestamp - viewModel.orbitLastTimestamp;
var rate = (viewModel.orbitCursorOpacity - .5) * 2.5 / 1e3;
var distance = deltaT * rate;
var angle = viewModel.orbitCursorAngle + CesiumMath.PI_OVER_TWO;
var x = Math.cos(angle) * distance;
var y = Math.sin(angle) * distance;
var oldTransform;
if (defined(viewModel.orbitFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch);
camera.lookAtTransform(viewModel.orbitFrame)
}
if (scene.mode == SceneMode.SCENE2D) {
camera.move(new Cartesian3(x,y,0), Math.max(scene.canvas.clientWidth, scene.canvas.clientHeight) / 100 * camera.positionCartographic.height * distance)
} else {
if (viewModel.orbitIsLook) {
camera.look(Cartesian3.UNIT_Z, -x);
camera.look(camera.right, -y)
} else {
camera.rotateLeft(x);
camera.rotateUp(y)
}
}
if (defined(viewModel.orbitFrame)) {
camera.lookAtTransform(oldTransform)
}
viewModel.orbitLastTimestamp = timestamp
}
;
function updateAngleAndOpacity(vector, compassWidth) {
var angle = Math.atan2(-vector.y, vector.x);
viewModel.orbitCursorAngle = CesiumMath.zeroToTwoPi(angle - CesiumMath.PI_OVER_TWO);
var distance = Cartesian2.magnitude(vector);
var maxDistance = compassWidth / 2;
var distanceFraction = Math.min(distance / maxDistance, 1);
var easedOpacity = .5 * distanceFraction * distanceFraction + .5;
viewModel.orbitCursorOpacity = easedOpacity
}
viewModel.orbitMouseMoveFunction = function(e) {
var compassRectangle = compassElement.getBoundingClientRect();
var center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2,(compassRectangle.bottom - compassRectangle.top) / 2);
var clickLocation = new Cartesian2(e.clientX - compassRectangle.left,e.clientY - compassRectangle.top);
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch);
updateAngleAndOpacity(vector, compassRectangle.width)
}
;
viewModel.orbitMouseUpFunction = function(e) {
viewModel.isOrbiting = false;
document.removeEventListener("mousemove", viewModel.orbitMouseMoveFunction, false);
document.removeEventListener("mouseup", viewModel.orbitMouseUpFunction, false);
if (defined(viewModel.orbitTickFunction)) {
viewModel.terria.clock.onTick.removeEventListener(viewModel.orbitTickFunction)
}
viewModel.orbitMouseMoveFunction = undefined;
viewModel.orbitMouseUpFunction = undefined;
viewModel.orbitTickFunction = undefined
}
;
document.addEventListener("mousemove", viewModel.orbitMouseMoveFunction, false);
document.addEventListener("mouseup", viewModel.orbitMouseUpFunction, false);
viewModel.terria.clock.onTick.addEventListener(viewModel.orbitTickFunction);
updateAngleAndOpacity(cursorVector, compassElement.getBoundingClientRect().width)
}
function rotate(viewModel, compassElement, cursorVector) {
var scene = viewModel.terria.scene;
var camera = scene.camera;
var sscc = scene.screenSpaceCameraController;
if (scene.mode == SceneMode.MORPHING || scene.mode == SceneMode.SCENE2D || !sscc.enableInputs) {
return
}
if (!sscc.enableLook && (scene.mode == SceneMode.COLUMBUS_VIEW || scene.mode == SceneMode.SCENE3D && !sscc.enableRotate)) {
return
}
document.removeEventListener("mousemove", viewModel.rotateMouseMoveFunction, false);
document.removeEventListener("mouseup", viewModel.rotateMouseUpFunction, false);
viewModel.rotateMouseMoveFunction = undefined;
viewModel.rotateMouseUpFunction = undefined;
viewModel.isRotating = true;
viewModel.rotateInitialCursorAngle = Math.atan2(-cursorVector.y, cursorVector.x);
if (defined(viewModel.terria.trackedEntity)) {
viewModel.rotateFrame = undefined;
viewModel.rotateIsLook = false
} else {
var viewCenter = Utils.getCameraFocus(viewModel.terria, true, centerScratch);
if (!defined(viewCenter) || scene.mode == SceneMode.COLUMBUS_VIEW && !sscc.enableLook && !sscc.enableTranslate) {
viewModel.rotateFrame = Transforms.eastNorthUpToFixedFrame(camera.positionWC, scene.globe.ellipsoid, newTransformScratch);
viewModel.rotateIsLook = true
} else {
viewModel.rotateFrame = Transforms.eastNorthUpToFixedFrame(viewCenter, scene.globe.ellipsoid, newTransformScratch);
viewModel.rotateIsLook = false
}
}
var oldTransform;
if (defined(viewModel.rotateFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch);
camera.lookAtTransform(viewModel.rotateFrame)
}
viewModel.rotateInitialCameraAngle = -camera.heading;
if (defined(viewModel.rotateFrame)) {
camera.lookAtTransform(oldTransform)
}
viewModel.rotateMouseMoveFunction = function(e) {
var compassRectangle = compassElement.getBoundingClientRect();
var center = new Cartesian2((compassRectangle.right - compassRectangle.left) / 2,(compassRectangle.bottom - compassRectangle.top) / 2);
var clickLocation = new Cartesian2(e.clientX - compassRectangle.left,e.clientY - compassRectangle.top);
var vector = Cartesian2.subtract(clickLocation, center, vectorScratch);
var angle = Math.atan2(-vector.y, vector.x);
var angleDifference = angle - viewModel.rotateInitialCursorAngle;
var newCameraAngle = CesiumMath.zeroToTwoPi(viewModel.rotateInitialCameraAngle - angleDifference);
var camera = viewModel.terria.scene.camera;
var oldTransform;
if (defined(viewModel.rotateFrame)) {
oldTransform = Matrix4.clone(camera.transform, oldTransformScratch);
camera.lookAtTransform(viewModel.rotateFrame)
}
var currentCameraAngle = -camera.heading;
camera.rotateRight(newCameraAngle - currentCameraAngle);
if (defined(viewModel.rotateFrame)) {
camera.lookAtTransform(oldTransform)
}
}
;
viewModel.rotateMouseUpFunction = function(e) {
viewModel.isRotating = false;
document.removeEventListener("mousemove", viewModel.rotateMouseMoveFunction, false);
document.removeEventListener("mouseup", viewModel.rotateMouseUpFunction, false);
viewModel.rotateMouseMoveFunction = undefined;
viewModel.rotateMouseUpFunction = undefined
}
;
document.addEventListener("mousemove", viewModel.rotateMouseMoveFunction, false);
document.addEventListener("mouseup", viewModel.rotateMouseUpFunction, false)
}
return NavigationViewModel
});
define("CesiumNavigation", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/Event", "KnockoutES5", "Core/registerKnockoutBindings", "ViewModels/DistanceLegendViewModel", "ViewModels/NavigationViewModel"], function(defined, defineProperties, CesiumEvent, Knockout, registerKnockoutBindings, DistanceLegendViewModel, NavigationViewModel) {
"use strict";
var CesiumNavigation = function(viewerCesiumWidget) {
initialize.apply(this, arguments);
this._onDestroyListeners = []
};
CesiumNavigation.prototype.distanceLegendViewModel = undefined;
CesiumNavigation.prototype.navigationViewModel = undefined;
CesiumNavigation.prototype.navigationDiv = undefined;
CesiumNavigation.prototype.distanceLegendDiv = undefined;
CesiumNavigation.prototype.terria = undefined;
CesiumNavigation.prototype.container = undefined;
CesiumNavigation.prototype._onDestroyListeners = undefined;
CesiumNavigation.prototype.destroy = function() {
if (defined(this.navigationViewModel)) {
this.navigationViewModel.destroy()
}
if (defined(this.distanceLegendViewModel)) {
this.distanceLegendViewModel.destroy()
}
if (defined(this.navigationDiv)) {
this.navigationDiv.parentNode.removeChild(this.navigationDiv)
}
delete this.navigationDiv;
if (defined(this.distanceLegendDiv)) {
this.distanceLegendDiv.parentNode.removeChild(this.distanceLegendDiv)
}
delete this.distanceLegendDiv;
if (defined(this.container)) {
this.container.parentNode.removeChild(this.container)
}
delete this.container;
for (var i = 0; i < this._onDestroyListeners.length; i++) {
this._onDestroyListeners[i]()
}
}
;
CesiumNavigation.prototype.addOnDestroyListener = function(callback) {
if (typeof callback === "function") {
this._onDestroyListeners.push(callback)
}
}
;
function initialize(viewerCesiumWidget, options) {
if (!defined(viewerCesiumWidget)) {
throw new DeveloperError("CesiumWidget or Viewer is required.")
}
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget) ? viewerCesiumWidget.cesiumWidget : viewerCesiumWidget;
var container = document.createElement("div");
container.className = "cesium-widget-cesiumNavigationContainer";
container.style.display = "block";
cesiumWidget.container.appendChild(container);
this.terria = viewerCesiumWidget;
this.terria.options = options;
this.terria.afterWidgetChanged = new CesiumEvent;
this.terria.beforeWidgetChanged = new CesiumEvent;
this.container = container;
this.navigationDiv = document.createElement("div");
this.navigationDiv.setAttribute("id", "navigationDiv");
this.distanceLegendDiv = document.createElement("div");
this.navigationDiv.setAttribute("id", "distanceLegendDiv");
container.appendChild(this.navigationDiv);
container.appendChild(this.distanceLegendDiv);
registerKnockoutBindings();
this.distanceLegendViewModel = DistanceLegendViewModel.create({
container: this.distanceLegendDiv,
terria: this.terria,
mapElement: container
});
this.navigationViewModel = NavigationViewModel.create({
container: this.navigationDiv,
terria: this.terria
})
}
return CesiumNavigation
});
define("dummy/require-less/less/dummy", [], function() {});
define("viewerCesiumNavigationMixin", ["Cesium/Core/defined", "Cesium/Core/defineProperties", "Cesium/Core/DeveloperError", "CesiumNavigation", "dummy/require-less/less/dummy"], function(defined, defineProperties, DeveloperError, CesiumNavigation) {
"use strict";
function viewerCesiumNavigationMixin(viewer, options) {
if (!defined(viewer)) {
throw new DeveloperError("viewer is required.")
}
var cesiumNavigation = init(viewer, options);
cesiumNavigation.addOnDestroyListener(function(viewer) {
return function() {
delete viewer.cesiumNavigation
}
}(viewer));
Object.defineProperties(viewer, {
cesiumNavigation: {
configurable: true,
get: function() {
return viewer.cesiumWidget.cesiumNavigation
}
}
})
}
viewerCesiumNavigationMixin.mixinWidget = function(cesiumWidget, options) {
return init.apply(undefined, arguments)
}
;
var init = function(viewerCesiumWidget, options) {
var cesiumNavigation = new CesiumNavigation(viewerCesiumWidget,options);
var cesiumWidget = defined(viewerCesiumWidget.cesiumWidget) ? viewerCesiumWidget.cesiumWidget : viewerCesiumWidget;
Object.defineProperties(cesiumWidget, {
cesiumNavigation: {
configurable: true,
get: function() {
return cesiumNavigation
}
}
});
cesiumNavigation.addOnDestroyListener(function(cesiumWidget) {
return function() {
delete cesiumWidget.cesiumNavigation
}
}(cesiumWidget));
return cesiumNavigation
};
return viewerCesiumNavigationMixin
});
(function(c) {
var d = document
, a = "appendChild"
, i = "styleSheet"
, s = d.createElement("style");
s.type = "text/css";
d.getElementsByTagName("head")[0][a](s);
s[i] ? s[i].cssText = c : s[a](d.createTextNode(c))
}
)(".full-window{position:absolute;top:0;left:0;right:0;bottom:0;margin:0;overflow:hidden;padding:0;-webkit-transition:left .25s ease-out;-moz-transition:left .25s ease-out;-ms-transition:left .25s ease-out;-o-transition:left .25s ease-out;transition:left .25s ease-out}.transparent-to-input{pointer-events:none}.opaque-to-input{pointer-events:auto}.clickable{cursor:pointer}.markdown a:hover,.markdown u,a:hover{text-decoration:underline}.modal,.modal-background{top:0;left:0;bottom:0;right:0}.modal-background{pointer-events:auto;background-color:rgba(0,0,0,.5);z-index:1000;position:fixed}.modal{position:absolute;margin:auto;background-color:#2f353c;max-height:100%;max-width:100%;font-family:'Roboto',sans-serif;color:#fff}.modal-header{background-color:rgba(0,0,0,.2);border-bottom:1px solid rgba(100,100,100,.6);font-size:15px;line-height:40px;margin:0}.modal-header h1{font-size:15px;color:#fff;margin-left:15px}.modal-content{margin-left:15px;margin-right:15px;margin-bottom:15px;padding-top:15px;overflow:auto}.modal-close-button{position:absolute;right:15px;cursor:pointer;font-size:18px;color:#fff}#ui{z-index:2100}@media print{.full-window{position:initial}}.markdown img{max-width:100%}.markdown svg{max-height:100%}.markdown fieldset,.markdown input,.markdown select,.markdown textarea{font-family:inherit;font-size:1rem;box-sizing:border-box;margin-top:0;margin-bottom:0}.markdown label{vertical-align:middle}.markdown h1,.markdown h2,.markdown h3,.markdown h4,.markdown h5,.markdown h6{font-family:inherit;font-weight:700;line-height:1.25;margin-top:1em;margin-bottom:.5em}.markdown h1{font-size:2rem}.markdown h2{font-size:1.5rem}.markdown h3{font-size:1.25rem}.markdown h4{font-size:1rem}.markdown h5{font-size:.875rem}.markdown h6{font-size:.75rem}.markdown dl,.markdown ol,.markdown p,.markdown ul{margin-top:0;margin-bottom:1rem}.markdown strong{font-weight:700}.markdown em{font-style:italic}.markdown small{font-size:80%}.markdown mark{color:#000;background:#ff0}.markdown s{text-decoration:line-through}.markdown ol{list-style:decimal inside}.markdown ul{list-style:disc inside}.markdown code,.markdown pre,.markdown samp{font-family:monospace;font-size:inherit}.markdown pre{margin-top:0;margin-bottom:1rem;overflow-x:scroll}.markdown a{color:#68adfe;text-decoration:none}.markdown code,.markdown pre{background-color:transparent;border-radius:3px}.markdown hr{border:0;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:rgba(0,0,0,.125)}.markdown .left-align{text-align:left}.markdown .center{text-align:center}.markdown .right-align{text-align:right}.markdown .justify{text-align:justify}.markdown .truncate{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.markdown ol.upper-roman{list-style-type:upper-roman}.markdown ol.lower-alpha{list-style-type:lower-alpha}.markdown ul.circle{list-style-type:circle}.markdown ul.square{list-style-type:square}.markdown .list-reset{list-style:none;padding-left:0}.floating,.floating-horizontal,.floating-vertical{pointer-events:auto;position:absolute;border-radius:15px;background-color:rgba(47,53,60,.8)}.floating-horizontal{padding-left:5px;padding-right:5px}.floating-vertical{padding-top:5px;padding-bottom:5px}@media print{.floating{display:none}}.distance-legend{pointer-events:auto;position:absolute;/*border-radius:15px;background-color:rgba(47,53,60,.8);*/padding-left:5px;padding-right:5px;right:50px;bottom:1px;height:30px;width:125px;/*border:1px solid rgba(255,255,255,.1);*/box-sizing:content-box;z-index: 10}.distance-legend-label{display:inline-block;font-family:'Roboto',sans-serif;font-size:14px;font-weight:lighter;line-height:30px;color:#fff;width:125px;text-align:center}.distance-legend-scale-bar{border-left:1px solid #fff;border-right:1px solid #fff;border-bottom:1px solid #fff;position:absolute;height:10px;top:15px}@media print{.distance-legend{display:none}}@media screen and (max-width:700px),screen and (max-height:420px){.distance-legend{display:none}}.navigation-controls{position:absolute;/*right:30px;*/top:110px;left:42px;/*bottom: 100px;*/width:30px;border:1px solid rgba(255,255,255,.5);font-weight:300;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;background: rgba(47,53,60,.8);}.navigation-control{cursor:pointer;/*border-bottom:1px solid #555*/border-bottom:1px solid rgba(255,255,255,.5)}.naviagation-control:active{color:#fff}.navigation-control-last{cursor:pointer;border-bottom:0}.navigation-control-icon-zoom-in{padding-bottom:4px}.navigation-control-icon-zoom-in,.navigation-control-icon-zoom-out{position:relative;text-align:center;font-size:20px;color:#fff}.navigation-control-icon-reset{position:relative;left:10px;width:10px;height:10px;fill:rgba(255,255,255,.8);padding-top:6px;padding-bottom:6px;box-sizing:content-box}.compass,.compass-outer-ring{position:absolute;width:95px;height:95px}.compass{pointer-events:auto;/*right:0;*/overflow:hidden;top:10px;left: 10px;/*bottom: 210px;*/}.compass-outer-ring{top:0;fill:rgba(255,255,255,.5)}.compass-outer-ring-background{position:absolute;top:14px;left:14px;width:44px;height:44px;border-radius:44px;border:12px solid rgba(47,53,60,.8);box-sizing:content-box}.compass-gyro{pointer-events:none;position:absolute;top:0;width:95px;height:95px;fill:#ccc}.compass-gyro-active,.compass-gyro-background:hover+.compass-gyro{fill:#68adfe}.compass-gyro-background{position:absolute;top:30px;left:30px;width:33px;height:33px;border-radius:33px;background-color:rgba(47,53,60,.8);border:1px solid rgba(255,255,255,.2);box-sizing:content-box}.compass-rotation-marker{position:absolute;top:0;width:95px;height:95px;fill:#68adfe}@media screen and (max-width:700px),screen and (max-height:420px){.compass,.navigation-controls{display:none}}@media print{.compass,.navigation-controls{display:none}}");
define("Cesium/Core/defined", function() {
return Cesium["defined"]
});
define("Cesium/Core/defineProperties", function() {
return Cesium["defineProperties"]
});
define("Cesium/Core/defaultValue", function() {
return Cesium["defaultValue"]
});
define("Cesium/Core/Event", function() {
return Cesium["Event"]
});
define("Cesium/Widgets/getElement", function() {
return Cesium["getElement"]
});
define("Cesium/Widgets/SvgPathBindingHandler", function() {
return Cesium["SvgPathBindingHandler"]
});
define("Cesium/Core/Ray", function() {
return Cesium["Ray"]
});
define("Cesium/Core/Cartesian3", function() {
return Cesium["Cartesian3"]
});
define("Cesium/Core/Cartographic", function() {
return Cesium["Cartographic"]
});
define("Cesium/Core/ReferenceFrame", function() {
return Cesium["ReferenceFrame"]
});
define("Cesium/Scene/SceneMode", function() {
return Cesium["SceneMode"]
});
define("Cesium/Core/DeveloperError", function() {
return Cesium["DeveloperError"]
});
define("Cesium/Core/EllipsoidGeodesic", function() {
return Cesium["EllipsoidGeodesic"]
});
define("Cesium/Core/Cartesian2", function() {
return Cesium["Cartesian2"]
});
define("Cesium/Core/getTimestamp", function() {
return Cesium["getTimestamp"]
});
define("Cesium/Core/EventHelper", function() {
return Cesium["EventHelper"]
});
define("Cesium/Core/Math", function() {
return Cesium["Math"]
});
define("Cesium/Core/Transforms", function() {
return Cesium["Transforms"]
});
define("Cesium/Core/Matrix4", function() {
return Cesium["Matrix4"]
});
define("Cesium/Core/BoundingSphere", function() {
return Cesium["BoundingSphere"]
});
define("Cesium/Core/HeadingPitchRange", function() {
return Cesium["HeadingPitchRange"]
});
define("Cesium/Scene/Camera", function() {
return Cesium["Camera"]
});
define("Cesium/Core/Rectangle", function() {
return Cesium["Rectangle"]
});
define("Cesium/Core/IntersectionTests", function() {
return Cesium["IntersectionTests"]
});
return require("viewerCesiumNavigationMixin")
});