TMap = window.TMap || {};
if (!TMap.__load) {
	TMap.__load = function(onLoad) {
		onLoad({
			"key": "UJVBZ-EYDLR-QNBWK-W7LN2-2DXI3-7BBDU",
			"version": "1.2.0.5",
			"highQualityRender": false
		},
		1659414136069);
		delete TMap.__load;
	};
}

/*! @version 1.2.0.5 */
!
function(t) {
	function e(i) {
		if (n[i]) return n[i].exports;
		var o = n[i] = {
			i: i,
			l: !1,
			exports: {}
		};
		return t[i].call(o.exports, o, o.exports, e),
		o.l = !0,
		o.exports
	}
	var n = {};
	e.m = t,
	e.c = n,
	e.i = function(t) {
		return t
	},
	e.d = function(t, n, i) {
		e.o(t, n) || Object.defineProperty(t, n, {
			configurable: !1,
			enumerable: !0,
			get: i
		})
	},
	e.n = function(t) {
		var n = t && t.__esModule ?
		function() {
			return t.
		default
		}:
		function() {
			return t
		};
		return e.d(n, "a", n),
		n
	},
	e.o = function(t, e) {
		return Object.prototype.hasOwnProperty.call(t, e)
	},
	e.p = "",
	e(e.s = 635)
} ([function(t, e, n) {
	"use strict";
	e.__esModule = !0,
	e.
default = function(t, e) {
		if (! (t instanceof e)) throw new TypeError("Cannot call a class as a function")
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(75),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = function() {
		function t(t, e) {
			for (var n = 0; n < e.length; n++) {
				var i = e[n];
				i.enumerable = i.enumerable || !1,
				i.configurable = !0,
				"value" in i && (i.writable = !0),
				(0, o.
			default)(t, i.key, i)
			}
		}
		return function(e, n, i) {
			return n && t(e.prototype, n),
			i && t(e, i),
			e
		}
	} ()
},
function(t, e) {
	var n = t.exports = {
		version: "2.6.9"
	};
	"number" == typeof __e && (__e = n)
},
function(t, e, n) {
	t.exports = {
	default:
		n(166),
		__esModule: !0
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var o = n(155),
	r = i(o),
	a = n(77),
	s = i(a),
	l = n(20),
	u = i(l);
	e.
default = function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + (void 0 === e ? "undefined": (0, u.
	default)(e)));
		t.prototype = (0, s.
	default)(e && e.prototype, {
			constructor: {
				value: t,
				enumerable: !1,
				writable: !0,
				configurable: !0
			}
		}),
		e && (r.
	default ? (0, r.
	default)(t, e) : t.__proto__ = e)
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(20),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = function(t, e) {
		if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
		return ! e || "object" !== (void 0 === e ? "undefined": (0, o.
	default)(e)) && "function" != typeof e ? t: e
	}
},
function(t, e, n) {
	var i = n(8),
	o = n(2),
	r = n(22),
	a = n(19),
	s = n(21),
	l = function(t, e, n) {
		var u, c, f, d = t & l.F,
		h = t & l.G,
		v = t & l.S,
		p = t & l.P,
		_ = t & l.B,
		m = t & l.W,
		g = h ? o: o[e] || (o[e] = {}),
		y = g.prototype,
		x = h ? i: v ? i[e] : (i[e] || {}).prototype;
		h && (n = e);
		for (u in n)(c = !d && x && void 0 !== x[u]) && s(g, u) || (f = c ? x[u] : n[u], g[u] = h && "function" != typeof x[u] ? n[u] : _ && c ? r(f, i) : m && x[u] == f ?
		function(t) {
			var e = function(e, n, i) {
				if (this instanceof t) {
					switch (arguments.length) {
					case 0:
						return new t;
					case 1:
						return new t(e);
					case 2:
						return new t(e, n)
					}
					return new t(e, n, i)
				}
				return t.apply(this, arguments)
			};
			return e.prototype = t.prototype,
			e
		} (f) : p && "function" == typeof f ? r(Function.call, f) : f, p && ((g.virtual || (g.virtual = {}))[u] = f, t & l.R && y && !y[u] && a(y, u, f)))
	};
	l.F = 1,
	l.G = 2,
	l.S = 4,
	l.P = 8,
	l.B = 16,
	l.W = 32,
	l.U = 64,
	l.R = 128,
	t.exports = l
},
function(t, e) {
	t.exports = function(t) {
		return "object" == typeof t ? null !== t: "function" == typeof t
	}
},
function(t, e) {
	var n = t.exports = "undefined" != typeof window && window.Math == Math ? window: "undefined" != typeof self && self.Math == Math ? self: Function("return this")();
	"number" == typeof __g && (__g = n)
},
function(t, e, n) {
	var i = n(59)("wks"),
	o = n(46),
	r = n(8).Symbol,
	a = "function" == typeof r; (t.exports = function(t) {
		return i[t] || (i[t] = a && r[t] || (a ? r: o)("Symbol." + t))
	}).store = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		t && (0, d.
	default)(t).forEach(function(t) {
			e.apply(void 0, (0, c.
		default)(t))
		})
	}
	var r = n(17),
	a = i(r),
	s = n(20),
	l = i(s),
	u = n(24),
	c = i(u),
	f = n(115),
	d = i(f),
	h = n(27),
	v = i(h),
	p = n(124),
	_ = i(p),
	m = n(147),
	g = i(m),
	y = n(47),
	x = i(y),
	b = n(146);
	e.getMax = function(t) {
		for (var e = t.length,
		n = -1 / 0; e;) e -= 1,
		n = t[e] > n ? t[e] : n;
		return n
	},
	e.getMin = function(t) {
		for (var e = t.length,
		n = 1 / 0; e;) e -= 1,
		n = t[e] < n ? t[e] : n;
		return n
	},
	e.isInRange = function(t, e, n) {
		return t >= e && t <= n
	},
	e.clamp = function(t, e, n) {
		return Math.min(n, Math.max(e, t))
	},
	e.wrap = function(t, e, n) {
		var i = n - e,
		o = ((t - e) % i + i) % i + e;
		return o === e ? n: o
	},
	e.round = function(t, e) {
		var n = Math.pow(10, e);
		return Math.round(t * n) / n
	},
	e.mix = function(t, e, n) {
		return t * (1 - n) + e * n
	},
	e.degreeToRadian = _.
default,
	e.radianToDegree = g.
default,
	e.extend = function(t) {
		for (var e = arguments.length,
		n = Array(e > 1 ? e - 1 : 0), i = 1; i < e; i++) n[i - 1] = arguments[i];
		var r = !0,
		a = !1,
		s = void 0;
		try {
			for (var l, u = (0, v.
		default)(n); ! (r = (l = u.next()).done); r = !0) {
				o(l.value,
				function(e, n) {
					t[e] = n
				})
			}
		} catch(t) {
			a = !0,
			s = t
		} finally {
			try { ! r && u.
				return && u.
				return ()
			} finally {
				if (a) throw s
			}
		}
		return t
	},
	e.bindAll = function(t, e) {
		t.forEach(function(t) {
			e[t] && (e[t] = e[t].bind(e))
		})
	},
	e.forIn = o,
	e.endsWith = function(t, e) {
		return - 1 !== t.indexOf(e, t.length - e.length)
	},
	e.isDefined = function(t) {
		return null !== t && void 0 !== t
	},
	e.isUndefined = function(t) {
		return void 0 === t
	},
	e.isString = function(t) {
		return "[object String]" === Object.prototype.toString.call(t)
	},
	e.parseJson = function(t) {
		return ! JSON || !JSON.stringify ? new Function("return " + t)() : JSON.parse(t)
	},
	e.colorToRGBA = function(t) {
		if (t instanceof Array) return t;
		var e = t >> 0 & 255,
		n = t >> 8 & 255,
		i = t >> 16 & 255,
		o = t >> 24 & 255;
		return o /= 255,
		new Array(e, n, i, o)
	},
	e.rgbaToGLColor = function(t) {
		t = String(t).replace(/ /g, "");
		var e = t.substring(t.indexOf("(") + 1, t.indexOf(")")).split(",");
		return 3 === e.length && (e[3] = 1),
		e = e.map(function(t, e) {
			return 3 === e ? Number(t) : Number(t) / 255
		})
	},
	e.uniqueId = function() {
		var t = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),
		e = new Array(36),
		n = 0,
		i = void 0;
		return function() {
			for (var o = 0; o < 36; o++) 8 === o || 13 === o || 18 === o || 23 === o ? e[o] = "-": 14 === o ? e[o] = "4": (n <= 2 && (n = 33554432 + 16777216 * Math.random() | 0), i = 15 & n, n >>= 4, e[o] = t[19 === o ? 3 & i | 8 : i]);
			return e.join("")
		}
	} (),
	e.objectClone = function(t) {
		var e = this;
		if ("object" !== (void 0 === t ? "undefined": (0, l.
	default)(t)) || null === t) return t;
		if (t instanceof Array) return [].concat(t);
		var n = new Object;
		return o(t,
		function(t, i) {
			n[t] = e.objectClone(i)
		}),
		n
	},
	e.keysDifference = function(t, e) {
		var n = [];
		return o(t,
		function(t) {
			t in e || n.push(t)
		}),
		n
	},
	e.bezier = function(t, e, n, i) {
		var o = new b(t, e, n, i);
		return function(t) {
			return o.solve(t)
		}
	},
	e.ease = e.bezier(.25, .1, .25, 1),
	e.linearEase = function(t) {
		return t
	},
	e.asyncAll = function(t, e, n) {
		if (!t.length) return n(null, []);
		var i = t.length,
		o = new Array(t.length),
		r = null;
		t.forEach(function(t, a) {
			e(t,
			function(t, e) {
				t && (r = t),
				o[a] = e,
				0 === i && n(r, o),
				i -= 1
			})
		})
	},
	e.deepEqual = function(t, n) {
		if (Array.isArray(t)) {
			if (!Array.isArray(n) || t.length !== n.length) return ! 1;
			for (var i = 0; i < t.length; i++) if (!e.deepEqual(t[i], n[i])) return ! 1;
			return ! 0
		}
		if ("object" === (void 0 === t ? "undefined": (0, l.
	default)(t)) && null !== t && null !== n) {
			if ("object" !== (void 0 === n ? "undefined": (0, l.
		default)(n))) return ! 1;
			if ((0, a.
		default)(t).length !== (0, a.
		default)(n).length) return ! 1;
			for (var o in t) if (t.hasOwnProperty(o) && !e.deepEqual(t[o], n[o])) return ! 1;
			return ! 0
		}
		return t === n
	};
	var S = {};
	e.warnOnce = function(t) {
		S[t] || ("undefined" != typeof console && console.warn(t), S[t] = !0)
	},
	e.clone = function(t) {
		if (null === t || "object" !== (void 0 === t ? "undefined": (0, l.
	default)(t))) return t;
		if (t instanceof x.
	default) return new x.
	default(t.getLat(), t.getLng(), t.getHeight());
		if (t instanceof Date) {
			var e = new Date;
			return e.setTime(t.getTime()),
			e
		}
		if (t instanceof Array) {
			for (var n = [], i = 0, o = t.length; i < o; ++i) n[i] = this.clone(t[i]);
			return n
		}
		if (t instanceof Object) {
			var r = {};
			for (var a in t) t.hasOwnProperty(a) && (r[a] = this.clone(t[a]));
			return r
		}
		throw new Error("Unable to copy obj! Its type isn't supported.")
	},
	e.insertSort = function(t, e) {
		for (var n = 1,
		i = n; i < t.length; n += 1, i += 1) for (var o = 0; o < n; o++) if (t[i][e] <= t[o][e]) {
			t.splice(o, 0, t[i]),
			t.splice(i + 1, 1);
			break
		}
	},
	e.bubbleSort = function(t, e) {
		t.sort(function(t, n) {
			return t[e] - n[e]
		})
	}
},
function(t, e, n) {
	var i = n(62),
	o = n(102),
	r = n(215),
	a = n(206),
	s = n(231),
	l = function(t, e, n) {
		var u, c, f, d, h = t & l.F,
		v = t & l.G,
		p = t & l.S,
		_ = t & l.P,
		m = t & l.B,
		g = v ? i: p ? i[e] || (i[e] = {}) : (i[e] || {}).prototype,
		y = v ? o: o[e] || (o[e] = {}),
		x = y.prototype || (y.prototype = {});
		v && (n = e);
		for (u in n) c = !h && g && void 0 !== g[u],
		f = (c ? g: n)[u],
		d = m && c ? s(f, i) : _ && "function" == typeof f ? s(Function.call, f) : f,
		g && a(g, u, f, t & l.U),
		y[u] != f && r(y, u, d),
		_ && x[u] != f && (x[u] = f)
	};
	i.core = o,
	l.F = 1,
	l.G = 2,
	l.S = 4,
	l.P = 8,
	l.B = 16,
	l.W = 32,
	l.U = 64,
	l.R = 128,
	t.exports = l
},
function(t, e, n) {
	t.exports = !n(30)(function() {
		return 7 != Object.defineProperty({},
		"a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e, n) {
	var i = n(7);
	t.exports = function(t) {
		if (!i(t)) throw TypeError(t + " is not an object!");
		return t
	}
},
function(t, e, n) {
	var i = n(13),
	o = n(84),
	r = n(64),
	a = Object.defineProperty;
	e.f = n(12) ? Object.defineProperty: function(t, e, n) {
		if (i(t), e = r(e, !0), i(n), o) try {
			return a(t, e, n)
		} catch(t) {}
		if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
		return "value" in n && (t[e] = n.value),
		t
	}
},
function(t, e, n) {
	var i = n(6),
	o = n(2),
	r = n(30);
	t.exports = function(t, e) {
		var n = (o.Object || {})[t] || Object[t],
		a = {};
		a[t] = e(n),
		i(i.S + i.F * r(function() {
			n(1)
		}), "Object", a)
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(242),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(170),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = n(80),
	o = n(53);
	t.exports = function(t) {
		return i(o(t))
	}
},
function(t, e, n) {
	var i = n(14),
	o = n(38);
	t.exports = n(12) ?
	function(t, e, n) {
		return i.f(t, e, o(1, n))
	}: function(t, e, n) {
		return t[e] = n,
		t
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var o = n(157),
	r = i(o),
	a = n(156),
	s = i(a),
	l = "function" == typeof s.
default && "symbol" == typeof r.
default ?
	function(t) {
		return typeof t
	}: function(t) {
		return t && "function" == typeof s.
	default && t.constructor === s.
	default && t !== s.
	default.prototype ? "symbol": typeof t
	};
	e.
default = "function" == typeof s.
default && "symbol" === l(r.
default) ?
	function(t) {
		return void 0 === t ? "undefined": l(t)
	}: function(t) {
		return t && "function" == typeof s.
	default && t.constructor === s.
	default && t !== s.
	default.prototype ? "symbol": void 0 === t ? "undefined": l(t)
	}
},
function(t, e) {
	var n = {}.hasOwnProperty;
	t.exports = function(t, e) {
		return n.call(t, e)
	}
},
function(t, e, n) {
	var i = n(44);
	t.exports = function(t, e, n) {
		if (i(t), void 0 === e) return t;
		switch (n) {
		case 1:
			return function(n) {
				return t.call(e, n)
			};
		case 2:
			return function(n, i) {
				return t.call(e, n, i)
			};
		case 3:
			return function(n, i, o) {
				return t.call(e, n, i, o)
			}
		}
		return function() {
			return t.apply(e, arguments)
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = {
		batchRender: !0,
		highQualityRender: !1,
		type: "default",
		minZoom: 3,
		maxZoom: 20,
		maxDataZoom: 18,
		minPitch: 0,
		maxPitch: 80,
		minShowIndoorZoom: 17,
		tileSize: 256,
		checkKeySrc: "https://apikey.map.qq.com/mkey/index.php/mkey/check",
		overseaSrc: "https://overseactrl.map.qq.com",
		prSrc: "https://pr.map.qq.com/pingd?appid=jsapi_v3",
		verSrc: "https://confinfo.map.qq.com/confinfo",
		iconSize: 16,
		iconSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/icon?id={id}&type=img&version={version}",
		iconIndexSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/icon?id={id}&type=json&version={version}",
		styleSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/style?autoup=1&id={id}&version={version}",
		batchVectorSrc: ["https://rt0.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt1.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt2.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt3.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid"],
		vectorSrc: ["https://rt0.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt1.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt2.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt3.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid"],
		satelliteSrc: ["https://p0.map.gtimg.com/sateTiles", "https://p1.map.gtimg.com/sateTiles", "https://p2.map.gtimg.com/sateTiles", "https://p3.map.gtimg.com/sateTiles"],
		roadSrc: ["https://rt0.map.gtimg.com/tile", "https://rt1.map.gtimg.com/tile", "https://rt2.map.gtimg.com/tile", "https://rt3.map.gtimg.com/tile"],
		trafficSrc: ["https://rtt2.map.qq.com/rtt/", "https://rtt2a.map.qq.com/rtt/", "https://rtt2b.map.qq.com/rtt/", "https://rtt2c.map.qq.com/rtt/"],
		handdrawSrc: ["https://p0.map.gtimg.com/scenic/", "https://p1.map.gtimg.com/scenic/", "https://p2.map.gtimg.com/scenic/", "https://p3.map.gtimg.com/scenic/"],
		indoorIndexSrc: " https://mapvectors.map.qq.com/indoormap2/index?type=1",
		indoorBuildingSrc: "https://mapvectors.map.qq.com/indoormap",
		indoorStyleSrc: "https://mapvectors.map.qq.com/indoormap/style.js?version={version}",
		indoorIconSrc: "https://rt%$%.map.gtimg.com/icons/indoor/",
		dataVersion: {
			sat: 231,
			tile: 405,
			scenic: 157
		},
		cesiumStaticSrc: "https://mapapi.qq.com/web/visualization/real3d/cesium-static/",
		envSrc: "https://mapapi.qq.com/web/visualization/monet/resource/env.jpg"
	};
	t.exports = i
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(82),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = function(t) {
		if (Array.isArray(t)) {
			for (var e = 0,
			n = Array(t.length); e < t.length; e++) n[e] = t[e];
			return n
		}
		return (0, o.
	default)(t)
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(174),
		__esModule: !0
	}
},
function(t, e) {
	t.exports = {}
},
function(t, e, n) {
	t.exports = {
	default:
		n(126),
		__esModule: !0
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return ! (self.navigator.userAgent.indexOf("MiniProgramEnv") < 0)
	}
	function r() {
		for (var t = self.navigator.userAgent,
		e = ["iOS", "Android", "MINA"], n = ["Windows", "Mac"], i = "cannotrecongize", o = 0; o < e.length; o++) if (t.indexOf("MiniProgramEnv/" + e[o]) >= 0) {
			i = "mobile";
			break
		}
		for (var r = 0; r < n.length; r++) if (t.indexOf("MiniProgramEnv/" + n[r]) >= 0) {
			i = "pc";
			break
		}
		return i
	}
	function a(t, e, n) {
		if (e.includes(":")) {
			var i = n,
			o = e.split(":"),
			r = o[0].trim();
			e = o[1].trim(),
			n = function(t) {
				for (var e = !1,
				n = t.target; n && !(e = s(n, r));) n = n.parentNode;
				e && (t.selectorTarget = n, i(t))
			}
		}
		return "addEventListener" in t ? (t.addEventListener(e, n, !1), {
			remove: function() {
				t.removeEventListener(e, n, !1)
			}
		}) : "attachEvent" in t ? (t.attachEvent("on" + e, n), {
			remove: function() {
				t.detachEvent("on" + e, n)
			}
		}) : "on" in t ? (t.on(e, n), {
			remove: function() {
				t.off && t.off(e, n),
				t.removeListener && t.removeListener(e, n)
			}
		}) : void 0
	}
	function s(t, e) {
		var n = ["matches", "webkitMatchesSelector", "msMatchesSelector", "mozMatchesSelector", "oMatchesSelector"],
		i = !0,
		o = !1,
		r = void 0;
		try {
			for (var a, s = (0, u.
		default)(n); ! (i = (a = s.next()).done); i = !0) {
				var l = a.value;
				if (t[l] && "function" == typeof t[l]) return t[l](e)
			}
		} catch(t) {
			o = !0,
			r = t
		} finally {
			try { ! i && s.
				return && s.
				return ()
			} finally {
				if (o) throw r
			}
		}
		return ! 1
	}
	var l = n(27),
	u = i(l),
	c = n(17),
	f = i(c),
	d = n(20),
	h = i(d),
	v = n(24),
	p = i(v);
	e.now = function() {
		return self.performance && self.performance.now ? self.performance.now.bind(self.performance) : Date.now.bind(Date)
	} ();
	var _ = self.requestAnimationFrame || self.mozRequestAnimationFrame || self.webkitRequestAnimationFrame || self.msRequestAnimationFrame;
	e.frame = function(t) {
		return _(t)
	};
	var m = self.cancelAnimationFrame || self.mozCancelAnimationFrame || self.webkitCancelAnimationFrame || self.msCancelAnimationFrame;
	e.cancelFrame = function(t) {
		m(t)
	},
	e.timed = function(n, i, o, r) {
		function a(i) {
			l || (i = t.exports.now(), i >= u + o ? n.call(r, 1) : (n.call(r, (i - u) / o), e.frame(a)))
		}
		var s = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0;
		if (!o) return n.call(r, 1),
		null;
		var l = !1,
		u = t.exports.now() - s * o;
		return e.frame(a),
		function() {
			l = !0,
			i && i.call(r)
		}
	},
	e.getImageData = function(t) {
		var e = self.document.createElement("canvas"),
		n = e.getContext("2d");
		return e.width = t.width,
		e.height = t.height,
		n.drawImage(t, 0, 0, t.width, t.height),
		n.getImageData(0, 0, t.width, t.height).data
	},
	e.hardwareConcurrency = self.navigator.hardwareConcurrency || 4,
	Object.defineProperty(e, "devicePixelRatio", {
		get: function() {
			return self.devicePixelRatio || 1
		}
	}),
	e.isPC = function() {
		var t = self.navigator.userAgent,
		e = ["Android", "iPhone", "iPad", "iPod", "SymbianOS", "selfs Phone"],
		n = !0;
		if (o()) {
			if ("mobile" === r()) return ! 1;
			if ("pc" === r()) return ! 0
		}
		for (var i = 0; i < e.length; i++) if (t.indexOf(e[i]) >= 0) {
			n = !1;
			break
		}
		return n
	},
	e.isMiniProgram = o,
	e.getMiniProgramEnv = r,
	e.isLowMobileDevice = function() {
		var t = self.navigator.userAgent;
		if (this.isPC()) return ! 1;
		if (t.includes("SymbianOS") || t.includes("selfs Phone")) return ! 0;
		try {
			var e = t.includes("Android") && parseFloat(t.match(/Android (\d+)/)[1]),
			n = (t.includes("iPhone") || t.includes("iPad") || t.includes("iPod")) && t.match(/OS ((\d+_?){2,3})\s/) && parseFloat(String(t.match(/OS ((\d+_?){2,3})\s/)[1]).replace("_", "."));
			if (e && e < 6 || n && n < 11) return ! 0
		} catch(t) {
			return ! 1
		}
		return ! 1
	},
	e.mobileSystem = function() {
		var t = self.navigator.userAgent,
		e = "";
		if (this.isPC()) return ! 1;
		if (t.includes("SymbianOS") || t.includes("selfs Phone")) e = t.includes("SymbianOS") ? "SymbianOS": "selfs Phone";
		else try {
			var n = t.includes("Android") && parseFloat(t.match(/Android ([\d.]+?);/)[1]),
			i = (t.includes("iPhone") || t.includes("iPad") || t.includes("iPod")) && t.match(/OS ((\d+_?){2,3})\s/) && parseFloat(String(t.match(/OS ((\d+_?){2,3})\s/)[1]).replace("_", "."));
			e = n ? "Android" + n.toFixed(1) : "iOS" + i.toFixed(1)
		} catch(e) {
			return "无法识别: " + t
		}
		return e
	},
	e.debounce = function(t, e) {
		var n = null;
		return function() {
			var i = arguments;
			n && clearTimeout(n),
			n = setTimeout(function() {
				t.apply(void 0, (0, p.
			default)(i))
			},
			e)
		}
	},
	e.throttle = function(t, e) {
		var n = 0;
		return function() {
			var i = +new Date;
			if (i - n > e) {
				n = i;
				for (var o = arguments.length,
				r = Array(o), a = 0; a < o; a++) r[a] = arguments[a];
				t.apply(this, r)
			}
		}
	},
	e.throttleWithFrame = function(t) {
		var e = null;
		return function() {
			for (var n = this,
			i = arguments.length,
			o = Array(i), r = 0; r < i; r++) o[r] = arguments[r];
			e || (e = _(function() {
				t.apply(n, o),
				e = null
			}))
		}
	};
	var g = function t(e, n, i, o) {
		if (!e || !n) return void console.warn("arguments is invalid!", e, n, i);
		if ("object" === (void 0 === n ? "undefined": (0, h.
	default)(n))) {
			var r = null;
			return r = "length" in n ? n.map(function(n) {
				return t(e, n.trim(), i, o)
			}) : (0, f.
		default)(n).map(function(o) {
				return t(e, o.trim(), n[o], i)
			}),
			{
				remove: function() {
					r.forEach(function(t) {
						t && t.remove && t.remove()
					})
				}
			}
		}
		if ( - 1 !== n.indexOf(",")) {
			n = n.split(",");
			var s = n.map(function(n) {
				return t(e, n.trim(), i, o)
			});
			return {
				remove: function() {
					s.forEach(function(t) {
						t && t.remove && t.remove()
					})
				}
			}
		}
		return a(e, n,
		function(t) {
			return i.call(o || e, t)
		})
	},
	y = function(t, e, n, i) {
		var o = null,
		r = function(t) {
			return function() {
				return o && o.remove && o.remove(),
				t.apply(this, arguments)
			}
		};
		return t && e ? ("object" === (void 0 === e ? "undefined": (0, h.
	default)(e)) && ("length" in e ? n = r(n) : (0, f.
	default)(e).forEach(function(t) {
			e[t] = r(e[t])
		})), -1 !== e.indexOf(",") && (e = e.split(","), n = r(n)), o = g(t, e, n, i)) : void console.warn("arguments is invalid!", t, e, n)
	};
	e.on = g,
	e.once = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.AJAXError = e.EnumError = e.ClassTypeError = e.BaseTypeError = void 0;
	var o = n(20),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(5),
	u = i(l),
	c = n(4),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = function() {
		function t(e) { (0, h.
		default)(this, t),
			this.message = e
		}
		return (0, p.
	default)(t, [{
			key: "warn",
			value: function() {
				console.warn(this.message)
			}
		},
		{
			key: "error",
			value: function() {
				console.error(this.message)
			}
		},
		{
			key: "throw",
			value: function() {
				throw new Error(this.message)
			}
		}]),
		t
	} (),
	m = function(t) {
		function e(t, n, i) {
			return (0, h.
		default)(this, e),
			(0, u.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, "类型错误：" + t + " 应该是 " + n.toUpperCase() + " 类型, 实际却是 " + (void 0 === i ? "undefined": (0, r.
		default)(i)).toUpperCase() + " 类型。"))
		}
		return (0, f.
	default)(e, t),
		e
	} (_),
	g = function(t) {
		function e(t, n, i) {
			return (0, h.
		default)(this, e),
			(0, u.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, "类型错误：" + t + " 应该是 " + n + " 类型, 实际值为 " + i + "。"))
		}
		return (0, f.
	default)(e, t),
		e
	} (_),
	y = function(t) {
		function e(t, n, i) {
			return (0, h.
		default)(this, e),
			(0, u.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, "枚举错误：" + t + " 的可枚举值为 " + n.join(",") + "，实际却是 " + i))
		}
		return (0, f.
	default)(e, t),
		e
	} (_),
	x = function t(e, n) { (0, h.
	default)(this, t),
		this.message = e,
		this.status = n
	};
	e.BaseTypeError = m,
	e.ClassTypeError = g,
	e.EnumError = y,
	e.AJAXError = x
},
function(t, e) {
	t.exports = function(t) {
		try {
			return !! t()
		} catch(t) {
			return ! 0
		}
	}
},
function(t, e, n) {
	var i = n(53);
	t.exports = function(t) {
		return Object(i(t))
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var o = n(125),
	r = i(o),
	a = n(27),
	s = i(a);
	e.
default = function() {
		function t(t, e) {
			var n = [],
			i = !0,
			o = !1,
			r = void 0;
			try {
				for (var a, l = (0, s.
			default)(t); ! (i = (a = l.next()).done) && (n.push(a.value), !e || n.length !== e); i = !0);
			} catch(t) {
				o = !0,
				r = t
			} finally {
				try { ! i && l.
					return && l.
					return ()
				} finally {
					if (o) throw r
				}
			}
			return n
		}
		return function(e, n) {
			if (Array.isArray(e)) return e;
			if ((0, r.
		default)(Object(e))) return t(e, n);
			throw new TypeError("Invalid attempt to destructure non-iterable instance")
		}
	} ()
},
function(t, e, n) {
	"use strict";
	var i = n(131)(!0);
	n(72)(String, "String",
	function(t) {
		this._t = String(t),
		this._i = 0
	},
	function() {
		var t, e = this._t,
		n = this._i;
		return n >= e.length ? {
			value: void 0,
			done: !0
		}: (t = i(e, n), this._i += t.length, {
			value: t,
			done: !1
		})
	})
},
function(t, e, n) {
	var i = n(87),
	o = n(58);
	t.exports = Object.keys ||
	function(t) {
		return i(t, o)
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var o = n(3),
	r = i(o),
	a = n(116),
	s = i(a);
	e.
default = function t(e, n, i) {
		null === e && (e = Function.prototype);
		var o = (0, s.
	default)(e, n);
		if (void 0 === o) {
			var a = (0, r.
		default)(e);
			return null === a ? void 0 : t(a, n, i)
		}
		if ("value" in o) return o.value;
		var l = o.get;
		if (void 0 !== l) return l.call(i)
	}
},
function(t, e) {
	var n = {}.toString;
	t.exports = function(t) {
		return n.call(t).slice(8, -1)
	}
},
function(t, e) {
	t.exports = !0
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			enumerable: !(1 & t),
			configurable: !(2 & t),
			writable: !(4 & t),
			value: e
		}
	}
},
function(t, e, n) {
	n(135);
	for (var i = n(8), o = n(19), r = n(26), a = n(9)("toStringTag"), s = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), l = 0; l < s.length; l++) {
		var u = s[l],
		c = i[u],
		f = c && c.prototype;
		f && !f[a] && o(f, a, u),
		r[u] = r.Array
	}
},
function(t, e, n) {
	var i = n(46)("meta"),
	o = n(7),
	r = n(21),
	a = n(14).f,
	s = 0,
	l = Object.isExtensible ||
	function() {
		return ! 0
	},
	u = !n(30)(function() {
		return l(Object.preventExtensions({}))
	}),
	c = function(t) {
		a(t, i, {
			value: {
				i: "O" + ++s,
				w: {}
			}
		})
	},
	f = function(t, e) {
		if (!o(t)) return "symbol" == typeof t ? t: ("string" == typeof t ? "S": "P") + t;
		if (!r(t, i)) {
			if (!l(t)) return "F";
			if (!e) return "E";
			c(t)
		}
		return t[i].i
	},
	d = function(t, e) {
		if (!r(t, i)) {
			if (!l(t)) return ! 0;
			if (!e) return ! 1;
			c(t)
		}
		return t[i].w
	},
	h = function(t) {
		return u && v.NEED && l(t) && !r(t, i) && c(t),
		t
	},
	v = t.exports = {
		KEY: i,
		NEED: !1,
		fastKey: f,
		getWeak: d,
		onFreeze: h
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(32),
	r = i(o),
	a = n(140),
	s = i(a),
	l = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,
	u = /^rgb\((\d+,?\s*){3}\)$/,
	c = /^rgba\((\d+,?\s*){3},\s*[0-9.]+\)$/,
	f = {}; !
	function(t) { ["Number", "String", "Function", "Undefined", "Boolean", "Object", "Array"].forEach(function(e) {
			var n = function(t) {
				return "[object " + e + "]" === Object.prototype.toString.call(t)
			};
			t["is" + e] = n
		})
	} (f),
	f.isNaN = s.
default,
	f.isValidLatLng = function() {
		var t = void 0,
		e = void 0;
		if (1 === arguments.length) {
			var n = arguments[0];
			if (f.isArray(n)) {
				var i = (0, r.
			default)(n, 2);
				t = i[0],
				e = i[1]
			} else t = n.lat,
			e = n.lng
		} else {
			if (2 !== arguments.length) return ! 1;
			t = arguments[0],
			e = arguments[1]
		}
		return ! (!f.isNumber(t) || !f.isNumber(e)) && (Math.abs(t) <= 90 && Math.abs(e) <= 180)
	},
	f.isValidColor = function(t) {
		return f.isArray(t) ? (3 === t.length || 4 === t.length) && t.every(function(t) {
			return t >= 0 && t <= 255
		}) : !!f.isString(t) && (l.test(t) || u.test(t) || c.test(t))
	},
	f.isValidOffset = function(t) {
		return !! (f.isObject(t) && "x" in t && "y" in t && f.isNumber(t.x) && f.isNumber(t.y))
	},
	e.
default = f
},
function(t, e, n) {
	var i = n(14).f,
	o = n(21),
	r = n(9)("toStringTag");
	t.exports = function(t, e, n) {
		t && !o(t = n ? t: t.prototype, r) && i(t, r, {
			configurable: !0,
			value: e
		})
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return function() {
			return M ? void 0 : t.apply(null, arguments)
		}
	}
	function r(t, e) {
		var n = [];
		for (var i in e) e.hasOwnProperty(i) && n.push(i + "=" + e[i]);
		return t + ( - 1 === t.indexOf("?") ? "?": "&") + n.join("&")
	}
	function a(t) {
		var e = (0, A.isWebGLSupportedCached)(); (0, P.sendByAjax)(r(b.
	default.prSrc, {
			logid: "pv",
			key: t.key || w.
		default.key,
			v: t.version || "null",
			lt: t.loadDeltaTime || -1,
			d: location.host,
			dpr: window.devicePixelRatio,
			lss: T.
		default.support() ? 1 : 0,
			gls: e.context ? 1 : 0,
			ua: window.navigator.userAgent,
			dt: k.
		default.OS,
			dvn: e.renderer
		}))
	}
	function s() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
		e = t.type,
		n = t.code,
		i = t.message,
		o = void 0 === i ? "": i,
		a = t.key,
		s = void 0 === a ? w.
	default.key:
		a; (0, P.sendOnce)(r(b.
	default.prSrc, {
			logid: "err",
			key: s,
			type: e,
			code: n,
			msg: o,
			dt: k.
		default.OS
		}))
	}
	function l(t, e, n) {
		t.once("tilesloaded",
		function() { (0, P.sendOnce)(r(b.
		default.prSrc, {
				logid: "rt",
				frt: Date.now() - e,
				device: n
			}))
		})
	}
	function u(t, e, n) { (0, L.isPC)() || t.once("tilesloaded",
		function() { (0, P.sendOnce)(r(b.
		default.prSrc, {
				logid: "ds",
				lowdevice: e,
				systemid: n
			}))
		})
	}
	function c(t) {
		var e = (0, A.isWebGLSupportedCached)(),
		n = null,
		i = 0,
		o = null,
		a = function() {
			var a = (0, L.now)(),
			s = (a - o) / 1e3,
			l = Math.round(i / (60 * s) * 60);
			t.removeRenderCallback(n),
			(0, P.sendOnce)(r(b.
		default.prSrc, {
				logid: "fps",
				dt: k.
			default.OS,
				num: l,
				cd: e.isIndependentDisplayCard ? 1 : 0
			}))
		};
		t.on("movestart",
		function() {
			n && (t.removeListener("moveend", a), t.removeRenderCallback(n), i = 0),
			o = (0, L.now)(),
			n = function() {
				i++
			},
			t.addRenderCallback(n),
			t.once("moveend", a)
		})
	}
	function f(t) { (0, P.sendOnce)(r(b.
	default.prSrc, {
			logid: "cl",
			key: t.key || w.
		default.key,
			subkey: t.subkey || "",
			id: t.id || ""
		}))
	}
	function d(t) { (0, P.sendOnce)(r(b.
	default.prSrc, {
			logid: "cs",
			key: t.key || w.
		default.key,
			subkey: t.subkey || "",
			id: t.styleId
		}))
	}
	function h(t, e) { (0, P.sendOnce)(r(b.
	default.prSrc, {
			logid: "os",
			key: t.key || w.
		default.key,
			num: e || 0
		}))
	}
	function v(t) {
		var e = t.zoom,
		n = t.pitch,
		i = t.rotation,
		o = t.width,
		a = t.height; (0, P.sendOnce)(r(b.
	default.prSrc, {
			logid: "minfo",
			zoom: Math.floor(e),
			pitch: n,
			rotation: i,
			width: o,
			height: a
		}))
	}
	function p(t, e) {
		if ("tile" === t) {
			var n = e.id,
			i = e.status,
			o = e.time,
			a = C[n];
			a || (a = new R(n), C[n] = a),
			a.logStatus(i),
			0 === i && o && a.logTime(o)
		} else {
			var s = {
				logid: "qos",
				t: t,
				info: e.styleId + "|" + e.version
			};
			e.error || 0 === e.error ? s.e = e.error: s.lt = e.loadTime,
			(0, P.sendOnce)(r(b.
		default.prSrc, s))
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.statCn = e.qos = e.minfo = e.os = e.cs = e.cl = e.fps = e.ds = e.frt = e.err = e.pv = void 0;
	var _ = n(0),
	m = i(_),
	g = n(1),
	y = i(g),
	x = n(23),
	b = i(x),
	S = n(105),
	w = i(S),
	E = n(89),
	T = i(E),
	A = n(145),
	P = n(144),
	I = n(138),
	k = i(I),
	L = n(28),
	M = !!w.
default.isLocal,
	C = (e.pv = o(a), e.err = o(s), e.frt = o(l), e.ds = o(u), e.fps = o(c), e.cl = o(f), e.cs = o(d), e.os = o(h), e.minfo = o(v), {}),
	R = (e.qos = o(p),
	function() {
		function t(e) {
			function n() {
				var t = this.id[0] + "_stat",
				e = this.id[0] + "_avg",
				n = {},
				i = this.tilesStatus.join("|");
				if ("0|0|0" !== i && (n[t] = i, this.tilesStatus = [0, 0, 0]), this.tilesTime.length > 0) {
					var o = this.tilesTime.reduce(function(t, e) {
						return t + e
					},
					0) / this.tilesTime.length;
					n[e] = Math.max(0, Math.floor(o)),
					this.tilesTime = []
				}
				return n
			} (0, m.
		default)(this, t),
			this.id = e,
			this.tilesStatus = [0, 0, 0],
			this.tilesTime = [],
			(0, P.sendPeriodically)("tile", r(b.
		default.prSrc, {
				logid: "qos",
				t: "tile"
			}), n.bind(this))
		}
		return (0, y.
	default)(t, [{
			key: "logStatus",
			value: function(t) {
				this.tilesStatus[t] += 1
			}
		},
		{
			key: "logTime",
			value: function(t) {
				this.tilesTime.push(t)
			}
		}]),
		t
	} ()),
	B = function() {
		function t() {
			setTimeout(function() {
				e.length > 0 && ((0, P.sendOnce)(r(b.
			default.prSrc, {
					logid: "cn",
					cn: e.join(",")
				})), e = []),
				t()
			},
			5e3)
		}
		var e = [];
		return t(),
		function(t) {
			t && e.push(t)
		}
	} ();
	e.statCn = o(B)
},
function(t, e) {
	t.exports = function(t) {
		if ("function" != typeof t) throw TypeError(t + " is not a function!");
		return t
	}
},
function(t, e) {
	e.f = {}.propertyIsEnumerable
},
function(t, e) {
	var n = 0,
	i = Math.random();
	t.exports = function(t) {
		return "Symbol(".concat(void 0 === t ? "": t, ")_", (++n + i).toString(36))
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(20),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(10),
	f = 90,
	d = 180,
	h = function() {
		function t(e, n) {
			var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
			o = arguments[3];
			if ((0, s.
		default)(this, t), e = Number(e), n = Number(n), i = Number(i), isNaN(n) || isNaN(e) || isNaN(i)) throw new Error("参数错误：LatLng 传入参数 (" + e + ", " + n + ") 非合法数字。");
			if (o) e = (0, c.clamp)(e, -f, f),
			n = (0, c.wrap)(n, -d, d);
			else {
				if (e > f || e < -f) throw new Error("参数错误：LatLng.lat 取值应在 [" + -f + ", " + f + "] 区间内。");
				if (n > d || n < -d) throw new Error("参数错误：LatLng.lng 取值应在 [" + -d + ", " + d + "] 区间内。")
			}
			this.lat = e,
			this.lng = n,
			this.height = i
		}
		return (0, u.
	default)(t, [{
			key: "toString",
			value: function() {
				return this.lat + ", " + this.lng
			}
		},
		{
			key: "getLat",
			value: function() {
				return this.lat
			}
		},
		{
			key: "getLng",
			value: function() {
				return this.lng
			}
		},
		{
			key: "getHeight",
			value: function() {
				return this.height
			}
		},
		{
			key: "equals",
			value: function(t) {
				return this.lat === t.lat && this.lng === t.lng && this.height === t.height
			}
		}], [{
			key: "convert",
			value: function(e) {
				if (e instanceof t) return e;
				if (Array.isArray(e)) return new t(e[0], e[1], e[2], !0);
				if (!Array.isArray(e) && "object" === (void 0 === e ? "undefined": (0, r.
			default)(e)) && null !== e) return new t(e.lat, e.lng, e.height, !0);
				throw new Error("`LatLng` argument must be specified as a LatLng instance, an object {lat: <lat>, lng: <lng>}, or an array of [<lat>, <lng>]")
			}
		}]),
		t
	} ();
	t.exports = h
},
,
function(t, e, n) {
	var i = n(36),
	o = n(9)("toStringTag"),
	r = "Arguments" == i(function() {
		return arguments
	} ()),
	a = function(t, e) {
		try {
			return t[e]
		} catch(t) {}
	};
	t.exports = function(t) {
		var e, n, s;
		return void 0 === t ? "Undefined": null === t ? "Null": "string" == typeof(n = a(e = Object(t), o)) ? n: r ? i(e) : "Object" == (s = i(e)) && "function" == typeof e.callee ? "Arguments": s
	}
},
function(t, e, n) { !
	function(n, i) {
		t.exports = e = i()
	} (0,
	function() {
		var t = t ||
		function(t, e) {
			var n = Object.create ||
			function() {
				function t() {}
				return function(e) {
					var n;
					return t.prototype = e,
					n = new t,
					t.prototype = null,
					n
				}
			} (),
			i = {},
			o = i.lib = {},
			r = o.Base = function() {
				return {
					extend: function(t) {
						var e = n(this);
						return t && e.mixIn(t),
						e.hasOwnProperty("init") && this.init !== e.init || (e.init = function() {
							e.$super.init.apply(this, arguments)
						}),
						e.init.prototype = e,
						e.$super = this,
						e
					},
					create: function() {
						var t = this.extend();
						return t.init.apply(t, arguments),
						t
					},
					init: function() {},
					mixIn: function(t) {
						for (var e in t) t.hasOwnProperty(e) && (this[e] = t[e]);
						t.hasOwnProperty("toString") && (this.toString = t.toString)
					},
					clone: function() {
						return this.init.prototype.extend(this)
					}
				}
			} (),
			a = o.WordArray = r.extend({
				init: function(t, e) {
					t = this.words = t || [],
					this.sigBytes = void 0 != e ? e: 4 * t.length
				},
				toString: function(t) {
					return (t || l).stringify(this)
				},
				concat: function(t) {
					var e = this.words,
					n = t.words,
					i = this.sigBytes,
					o = t.sigBytes;
					if (this.clamp(), i % 4) for (var r = 0; r < o; r++) {
						var a = n[r >>> 2] >>> 24 - r % 4 * 8 & 255;
						e[i + r >>> 2] |= a << 24 - (i + r) % 4 * 8
					} else for (var r = 0; r < o; r += 4) e[i + r >>> 2] = n[r >>> 2];
					return this.sigBytes += o,
					this
				},
				clamp: function() {
					var e = this.words,
					n = this.sigBytes;
					e[n >>> 2] &= 4294967295 << 32 - n % 4 * 8,
					e.length = t.ceil(n / 4)
				},
				clone: function() {
					var t = r.clone.call(this);
					return t.words = this.words.slice(0),
					t
				},
				random: function(e) {
					for (var n, i = [], o = 0; o < e; o += 4) {
						var r = function(e) {
							var e = e,
							n = 987654321,
							i = 4294967295;
							return function() {
								n = 36969 * (65535 & n) + (n >> 16) & i,
								e = 18e3 * (65535 & e) + (e >> 16) & i;
								var o = (n << 16) + e & i;
								return o /= 4294967296,
								(o += .5) * (t.random() > .5 ? 1 : -1)
							}
						} (4294967296 * (n || t.random()));
						n = 987654071 * r(),
						i.push(4294967296 * r() | 0)
					}
					return new a.init(i, e)
				}
			}),
			s = i.enc = {},
			l = s.Hex = {
				stringify: function(t) {
					for (var e = t.words,
					n = t.sigBytes,
					i = [], o = 0; o < n; o++) {
						var r = e[o >>> 2] >>> 24 - o % 4 * 8 & 255;
						i.push((r >>> 4).toString(16)),
						i.push((15 & r).toString(16))
					}
					return i.join("")
				},
				parse: function(t) {
					for (var e = t.length,
					n = [], i = 0; i < e; i += 2) n[i >>> 3] |= parseInt(t.substr(i, 2), 16) << 24 - i % 8 * 4;
					return new a.init(n, e / 2)
				}
			},
			u = s.Latin1 = {
				stringify: function(t) {
					for (var e = t.words,
					n = t.sigBytes,
					i = [], o = 0; o < n; o++) {
						var r = e[o >>> 2] >>> 24 - o % 4 * 8 & 255;
						i.push(String.fromCharCode(r))
					}
					return i.join("")
				},
				parse: function(t) {
					for (var e = t.length,
					n = [], i = 0; i < e; i++) n[i >>> 2] |= (255 & t.charCodeAt(i)) << 24 - i % 4 * 8;
					return new a.init(n, e)
				}
			},
			c = s.Utf8 = {
				stringify: function(t) {
					try {
						return decodeURIComponent(escape(u.stringify(t)))
					} catch(t) {
						throw new Error("Malformed UTF-8 data")
					}
				},
				parse: function(t) {
					return u.parse(unescape(encodeURIComponent(t)))
				}
			},
			f = o.BufferedBlockAlgorithm = r.extend({
				reset: function() {
					this._data = new a.init,
					this._nDataBytes = 0
				},
				_append: function(t) {
					"string" == typeof t && (t = c.parse(t)),
					this._data.concat(t),
					this._nDataBytes += t.sigBytes
				},
				_process: function(e) {
					var n = this._data,
					i = n.words,
					o = n.sigBytes,
					r = this.blockSize,
					s = 4 * r,
					l = o / s;
					l = e ? t.ceil(l) : t.max((0 | l) - this._minBufferSize, 0);
					var u = l * r,
					c = t.min(4 * u, o);
					if (u) {
						for (var f = 0; f < u; f += r) this._doProcessBlock(i, f);
						var d = i.splice(0, u);
						n.sigBytes -= c
					}
					return new a.init(d, c)
				},
				clone: function() {
					var t = r.clone.call(this);
					return t._data = this._data.clone(),
					t
				},
				_minBufferSize: 0
			}),
			d = (o.Hasher = f.extend({
				cfg: r.extend(),
				init: function(t) {
					this.cfg = this.cfg.extend(t),
					this.reset()
				},
				reset: function() {
					f.reset.call(this),
					this._doReset()
				},
				update: function(t) {
					return this._append(t),
					this._process(),
					this
				},
				finalize: function(t) {
					return t && this._append(t),
					this._doFinalize()
				},
				blockSize: 16,
				_createHelper: function(t) {
					return function(e, n) {
						return new t.init(n).finalize(e)
					}
				},
				_createHmacHelper: function(t) {
					return function(e, n) {
						return new d.HMAC.init(t, n).finalize(e)
					}
				}
			}), i.algo = {});
			return i
		} (Math);
		return t
	})
},
function(t, e, n) {
	var i = n(13),
	o = n(85),
	r = n(58),
	a = n(54)("IE_PROTO"),
	s = function() {},
	l = function() {
		var t, e = n(57)("iframe"),
		i = r.length;
		for (e.style.display = "none", n(83).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write("<script>document.F=Object<\/script>"), t.close(), l = t.F; i--;) delete l.prototype[r[i]];
		return l()
	};
	t.exports = Object.create ||
	function(t, e) {
		var n;
		return null !== t ? (s.prototype = i(t), n = new s, s.prototype = null, n[a] = t) : n = l(),
		void 0 === e ? n: o(n, e)
	}
},
function(t, e, n) {
	var i = n(55),
	o = Math.min;
	t.exports = function(t) {
		return t > 0 ? o(i(t), 9007199254740991) : 0
	}
},
function(t, e) {
	t.exports = function(t) {
		if (void 0 == t) throw TypeError("Can't call method on  " + t);
		return t
	}
},
function(t, e, n) {
	var i = n(59)("keys"),
	o = n(46);
	t.exports = function(t) {
		return i[t] || (i[t] = o(t))
	}
},
function(t, e) {
	var n = Math.ceil,
	i = Math.floor;
	t.exports = function(t) {
		return isNaN(t = +t) ? 0 : (t > 0 ? i: n)(t)
	}
},
function(t, e, n) {
	"use strict";
	t.exports = "TMap"
},
function(t, e, n) {
	var i = n(7),
	o = n(8).document,
	r = i(o) && i(o.createElement);
	t.exports = function(t) {
		return r ? o.createElement(t) : {}
	}
},
function(t, e) {
	t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
},
function(t, e, n) {
	var i = n(2),
	o = n(8),
	r = o["__core-js_shared__"] || (o["__core-js_shared__"] = {}); (t.exports = function(t, e) {
		return r[t] || (r[t] = void 0 !== e ? e: {})
	})("versions", []).push({
		version: i.version,
		mode: n(37) ? "pure": "global",
		copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
	})
},
function(t, e, n) {
	var i = n(63);
	t.exports = function(t) {
		if (!i(t)) throw TypeError(t + " is not an object!");
		return t
	}
},
function(t, e) {
	t.exports = function(t) {
		try {
			return !! t()
		} catch(t) {
			return ! 0
		}
	}
},
function(t, e) {
	var n = t.exports = "undefined" != typeof window && window.Math == Math ? window: "undefined" != typeof self && self.Math == Math ? self: Function("return this")();
	"number" == typeof __g && (__g = n)
},
function(t, e) {
	t.exports = function(t) {
		return "object" == typeof t ? null !== t: "function" == typeof t
	}
},
function(t, e, n) {
	var i = n(7);
	t.exports = function(t, e) {
		if (!i(t)) return t;
		var n, o;
		if (e && "function" == typeof(n = t.toString) && !i(o = n.call(t))) return o;
		if ("function" == typeof(n = t.valueOf) && !i(o = n.call(t))) return o;
		if (!e && "function" == typeof(n = t.toString) && !i(o = n.call(t))) return o;
		throw TypeError("Can't convert object to primitive value")
	}
},
function(t, e, n) {
	var i = n(49),
	o = n(9)("iterator"),
	r = n(26);
	t.exports = n(2).getIteratorMethod = function(t) {
		if (void 0 != t) return t[o] || t["@@iterator"] || r[i(t)]
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return [l.circle, l.ellipse, l.rectangle, l.polygon, l.polyline, l.marker, l.label].some(function(e) {
			return t === e
		})
	}
	function o(t) {
		return [l.grayTile].some(function(e) {
			return t === e
		})
	}
	function r(t) {
		return [l.imageGround, l.canvasGround].some(function(e) {
			return t === e
		})
	}
	function a(t) {
		return [l.indoorRegion, l.indoorPoi, l.indoorEscalator, l.indoor].some(function(e) {
			return t === e
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isOverlayLayer = i,
	e.isGrayTileLayer = o,
	e.isTextureLayer = r,
	e.isIndoorLayer = a;
	var s = e.BASE_LAYER_TYPE = {
		arrow: "arrow",
		point: "point",
		label: "label",
		line: "line",
		region: "region",
		ground: "ground",
		base: "base",
		building3d: "building3d",
		building2d: "building2d",
		text: "text"
	},
	l = e.RENDER_LAYER_TYPE = {
		base: s.base,
		arrow: s.arrow,
		building3d: s.building3d,
		building2d: s.building2d,
		text: s.text,
		visualPlugin: "VISUAL_PLUGIN",
		marker: "MARKER",
		polyline: "POLYLINE",
		polygon: "POLYGON",
		label: "LABEL",
		circle: "CIRCLE",
		rectangle: "RECTANGLE",
		ellipse: "ELLIPSE",
		imageTile: "IMAGE_TILE",
		imageGround: "IMAGE_Ground",
		grayTile: "GRAY_TILE",
		canvasGround: "CANVAS_Ground",
		indoor: "INDOOR",
		indoorRegion: "INDOOR_REGION",
		indoorPoi: "INDOOR_POI",
		indoorEscalator: "INDOOR_ESCALATOR",
		mask: "MASK",
		highlight: "HIGHLIGHT",
		trafficFlow: "TRAFFIC_FLOW",
		trafficBase: "TRAFFIC_BASE"
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e, n;
		this.promise = new t(function(t, i) {
			if (void 0 !== e || void 0 !== n) throw TypeError("Bad Promise constructor");
			e = t,
			n = i
		}),
		this.resolve = o(e),
		this.reject = o(n)
	}
	var o = n(44);
	t.exports.f = function(t) {
		return new i(t)
	}
},
function(t, e, n) {
	var i = n(45),
	o = n(38),
	r = n(18),
	a = n(64),
	s = n(21),
	l = n(84),
	u = Object.getOwnPropertyDescriptor;
	e.f = n(12) ? u: function(t, e) {
		if (t = r(t), e = a(e, !0), l) try {
			return u(t, e)
		} catch(t) {}
		if (s(t, e)) return o(!i.f.call(t, e), t[e])
	}
},
function(t, e, n) {
	var i = n(8),
	o = n(2),
	r = n(37),
	a = n(70),
	s = n(14).f;
	t.exports = function(t) {
		var e = o.Symbol || (o.Symbol = r ? {}: i.Symbol || {});
		"_" == t.charAt(0) || t in e || s(e, t, {
			value: a.f(t)
		})
	}
},
function(t, e, n) {
	e.f = n(9)
},
function(t, e, n) {
	var i = n(22),
	o = n(93),
	r = n(92),
	a = n(13),
	s = n(52),
	l = n(65),
	u = {},
	c = {},
	e = t.exports = function(t, e, n, f, d) {
		var h, v, p, _, m = d ?
		function() {
			return t
		}: l(t),
		g = i(n, f, e ? 2 : 1),
		y = 0;
		if ("function" != typeof m) throw TypeError(t + " is not iterable!");
		if (r(m)) {
			for (h = s(t.length); h > y; y++) if ((_ = e ? g(a(v = t[y])[0], v[1]) : g(t[y])) === u || _ === c) return _
		} else for (p = m.call(t); ! (v = p.next()).done;) if ((_ = o(p, g, v.value, e)) === u || _ === c) return _
	};
	e.BREAK = u,
	e.RETURN = c
},
function(t, e, n) {
	"use strict";
	var i = n(37),
	o = n(6),
	r = n(81),
	a = n(19),
	s = n(26),
	l = n(130),
	u = n(42),
	c = n(86),
	f = n(9)("iterator"),
	d = !([].keys && "next" in [].keys()),
	h = function() {
		return this
	};
	t.exports = function(t, e, n, v, p, _, m) {
		l(n, e, v);
		var g, y, x, b = function(t) {
			if (!d && t in T) return T[t];
			switch (t) {
			case "keys":
			case "values":
				return function() {
					return new n(this, t)
				}
			}
			return function() {
				return new n(this, t)
			}
		},
		S = e + " Iterator",
		w = "values" == p,
		E = !1,
		T = t.prototype,
		A = T[f] || T["@@iterator"] || p && T[p],
		P = A || b(p),
		I = p ? w ? b("entries") : P: void 0,
		k = "Array" == e ? T.entries || A: A;
		if (k && (x = c(k.call(new t))) !== Object.prototype && x.next && (u(x, S, !0), i || "function" == typeof x[f] || a(x, f, h)), w && A && "values" !== A.name && (E = !0, P = function() {
			return A.call(this)
		}), i && !m || !d && !E && T[f] || a(T, f, P), s[e] = P, s[S] = h, p) if (g = {
			values: w ? P: b("values"),
			keys: _ ? P: b("keys"),
			entries: I
		},
		m) for (y in g) y in T || r(T, y, g[y]);
		else o(o.P + o.F * (d || E), e, g);
		return g
	}
},
function(t, e) {},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this.x = e,
			this.y = n
		}
		return (0, s.
	default)(t, [{
			key: "toString",
			value: function() {
				return this.x + ", " + this.y
			}
		},
		{
			key: "getX",
			value: function() {
				return this.x
			}
		},
		{
			key: "getY",
			value: function() {
				return this.y
			}
		},
		{
			key: "clone",
			value: function() {
				return new t(this.x, this.y)
			}
		},
		{
			key: "add",
			value: function(t) {
				return this.clone()._add(t)
			}
		},
		{
			key: "sub",
			value: function(t) {
				return this.clone()._sub(t)
			}
		},
		{
			key: "mult",
			value: function(t) {
				return this.clone()._mult(t)
			}
		},
		{
			key: "div",
			value: function(t) {
				return this.clone()._div(t)
			}
		},
		{
			key: "rotate",
			value: function(t) {
				return this.clone()._rotate(t)
			}
		},
		{
			key: "matMult",
			value: function(t) {
				return this.clone()._matMult(t)
			}
		},
		{
			key: "unit",
			value: function() {
				return this.clone()._unit()
			}
		},
		{
			key: "perp",
			value: function() {
				return this.clone()._perp()
			}
		},
		{
			key: "round",
			value: function() {
				return this.clone()._round()
			}
		},
		{
			key: "mag",
			value: function() {
				return Math.sqrt(this.magSq())
			}
		},
		{
			key: "magSq",
			value: function() {
				return this.x * this.x + this.y * this.y
			}
		},
		{
			key: "equals",
			value: function(t) {
				return this.x === t.x && this.y === t.y
			}
		},
		{
			key: "dist",
			value: function(t) {
				return Math.sqrt(this.distSqr(t))
			}
		},
		{
			key: "distSqr",
			value: function(t) {
				var e = t.x - this.x,
				n = t.y - this.y;
				return e * e + n * n
			}
		},
		{
			key: "angle",
			value: function() {
				return Math.atan2(this.y, this.x)
			}
		},
		{
			key: "angleTo",
			value: function(t) {
				return Math.atan2(this.y - t.y, this.x - t.x)
			}
		},
		{
			key: "angleWith",
			value: function(t) {
				return this.angleWithSep(t.x, t.y)
			}
		},
		{
			key: "angleWithSep",
			value: function(t, e) {
				return Math.atan2(this.x * e - this.y * t, this.x * t + this.y * e)
			}
		},
		{
			key: "normalize",
			value: function() {
				return this.clone()._unit()
			}
		},
		{
			key: "dot",
			value: function(t) {
				return this.x * t.x + this.y * t.y
			}
		},
		{
			key: "length",
			value: function() {
				return this.mag()
			}
		},
		{
			key: "lengthSq",
			value: function() {
				return this.magSq()
			}
		},
		{
			key: "_matMult",
			value: function(t) {
				var e = t[0] * this.x + t[1] * this.y,
				n = t[2] * this.x + t[3] * this.y;
				return this.x = e,
				this.y = n,
				this
			}
		},
		{
			key: "_add",
			value: function(t) {
				return this.x += t.x,
				this.y += t.y,
				this
			}
		},
		{
			key: "_sub",
			value: function(t) {
				return this.x -= t.x,
				this.y -= t.y,
				this
			}
		},
		{
			key: "_mult",
			value: function(t) {
				return this.x *= t,
				this.y *= t,
				this
			}
		},
		{
			key: "_div",
			value: function(t) {
				return this.x /= t,
				this.y /= t,
				this
			}
		},
		{
			key: "_unit",
			value: function() {
				return 0 === this.x && 0 === this.y ? this: (this._div(this.mag()), this)
			}
		},
		{
			key: "_perp",
			value: function() {
				var t = this.y;
				return this.y = this.x,
				this.x = -t,
				this
			}
		},
		{
			key: "_rotate",
			value: function(t) {
				var e = Math.cos(t),
				n = Math.sin(t),
				i = e * this.x - n * this.y,
				o = n * this.x + e * this.y;
				return this.x = i,
				this.y = o,
				this
			}
		},
		{
			key: "_round",
			value: function() {
				return this.x = Math.round(this.x),
				this.y = Math.round(this.y),
				this
			}
		}]),
		t
	} ();
	l.convert = function(t) {
		return t instanceof l ? t: Array.isArray(t) ? new l(t[0], t[1]) : "x" in t && "y" in t && "number" == typeof t.x && "number" == typeof t.y ? new l(t.x, t.y) : t
	},
	t.exports = l
},
function(t, e, n) {
	t.exports = {
	default:
		n(161),
		__esModule: !0
	}
},
function(t, e) {
	e.f = Object.getOwnPropertySymbols
},
function(t, e, n) {
	t.exports = {
	default:
		n(159),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = n(353)("wks"),
	o = n(270),
	r = n(62).Symbol,
	a = "function" == typeof r; (t.exports = function(t) {
		return i[t] || (i[t] = a && r[t] || (a ? r: o)("Symbol." + t))
	}).store = i
},
function(t, e, n) {
	"use strict";
	var i = n(25),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = n(29);
	e.getJSON = function(t, n, i, o) {
		o = o || 0;
		var a = void 0,
		s = void 0,
		l = new XMLHttpRequest;
		return l.open("GET", n, !0),
		l.setRequestHeader("Accept", "application/json"),
		l.onloadstart = function() {
			return a = +new Date
		},
		l.onerror = function() {
			console.error(l.response, l, n),
			o > 2 ? i(new r.AJAXError(n, 0)) : (o += 1, e.getJSON(t, n, i, o))
		},
		l.onload = function() {
			if (l.status >= 200 && l.status < 300 && l.response) {
				s = +new Date;
				var t = void 0;
				try {
					t = JSON.parse(l.response)
				} catch(t) {
					return i(t)
				}
				i(null, t, s - a)
			} else i(new r.AJAXError(l.statusText, l.status))
		},
		l.send(),
		l
	},
	e.getArrayBuffer = function(t, e) {
		var n = new XMLHttpRequest;
		return n.open("GET", t, !0),
		n.responseType = "arraybuffer",
		n.onerror = function(t) {
			e(t)
		},
		n.onload = function() {
			if (0 === n.response.byteLength && 200 === n.status) return e(new Error("http status 200 returned without content."));
			n.status >= 200 && n.status < 300 && n.response ? e(null, {
				data: n.response,
				cacheControl: n.getResponseHeader("Cache-Control"),
				expires: n.getResponseHeader("Expires")
			}) : e(new r.AJAXError(n.statusText, n.status))
		},
		n.send(),
		n
	},
	e.getImage = function(t, e) {
		var n = new XMLHttpRequest,
		i = new o.
	default(function(i, o) {
			n.open("GET", t),
			n.responseType = "blob",
			n.timeout = e,
			n.onload = function() {
				n.status >= 200 && n.status < 300 && n.response ? (0 === n.response.size && o(new r.AJAXError("The size of image is 0", 404)), i(n.response)) : o(new r.AJAXError(n.statusText, n.status))
			},
			n.onerror = function() {
				o(new r.AJAXError("error", 0))
			},
			n.ontimeout = function() {
				o(new r.AJAXError("timeout", 0))
			},
			n.onabort = function() {
				o(new r.AJAXError("abort", 0))
			},
			n.send()
		});
		return {
			xhr: n,
			promise: i
		}
	},
	e.getImageData = function(t, n) {
		return e.getArrayBuffer(t,
		function(t, e) {
			if (t) return n(t);
			n(null, e)
		})
	}
},
function(t, e, n) {
	var i = n(36);
	t.exports = Object("z").propertyIsEnumerable(0) ? Object: function(t) {
		return "String" == i(t) ? t.split("") : Object(t)
	}
},
function(t, e, n) {
	t.exports = n(19)
},
function(t, e, n) {
	t.exports = {
	default:
		n(158),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = n(8).document;
	t.exports = i && i.documentElement
},
function(t, e, n) {
	t.exports = !n(12) && !n(30)(function() {
		return 7 != Object.defineProperty(n(57)("div"), "a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e, n) {
	var i = n(14),
	o = n(13),
	r = n(34);
	t.exports = n(12) ? Object.defineProperties: function(t, e) {
		o(t);
		for (var n, a = r(e), s = a.length, l = 0; s > l;) i.f(t, n = a[l++], e[n]);
		return t
	}
},
function(t, e, n) {
	var i = n(21),
	o = n(31),
	r = n(54)("IE_PROTO"),
	a = Object.prototype;
	t.exports = Object.getPrototypeOf ||
	function(t) {
		return t = o(t),
		i(t, r) ? t[r] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype: t instanceof Object ? a: null
	}
},
function(t, e, n) {
	var i = n(21),
	o = n(18),
	r = n(129)(!1),
	a = n(54)("IE_PROTO");
	t.exports = function(t, e) {
		var n, s = o(t),
		l = 0,
		u = [];
		for (n in s) n != a && i(s, n) && u.push(n);
		for (; e.length > l;) i(s, n = e[l++]) && (~r(u, n) || u.push(n));
		return u
	}
},
function(t, e, n) {
	var i = n(234),
	o = Math.min;
	t.exports = function(t) {
		return t > 0 ? o(i(t), 9007199254740991) : 0
	}
},
function(t, e, n) {
	"use strict";
	var i = n(208),
	o = i && i.setItem && i.getItem;
	t.exports = {
		set: function(t, e, n) { (null !== e ? i.setItem(t, e) : i.removeItem(t)).then(function() {
				n && n()
			},
			function(t) {
				console.error(t),
				n && n(t)
			})
		},
		get: function(t, e) {
			i.getItem(t).then(function(t) {
				e && e(t)
			},
			function(t) {
				console.error(t),
				e && e(null)
			})
		},
		support: function() {
			return o
		}
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.SOURCE_TYPE = {
		vector: "vector",
		geojson: "geojson",
		geoTask: "geo_task",
		imageTile: "image_tile",
		indoor: "indoor",
		indoorIndex: "indoor_index",
		ground: "ground",
		traffic: "traffic"
	}
},
function(t, e) {
	t.exports = function(t, e, n, i) {
		if (! (t instanceof e) || void 0 !== i && i in t) throw TypeError(n + ": incorrect invocation!");
		return t
	}
},
function(t, e, n) {
	var i = n(26),
	o = n(9)("iterator"),
	r = Array.prototype;
	t.exports = function(t) {
		return void 0 !== t && (i.Array === t || r[o] === t)
	}
},
function(t, e, n) {
	var i = n(13);
	t.exports = function(t, e, n, o) {
		try {
			return o ? e(i(n)[0], n[1]) : e(n)
		} catch(e) {
			var r = t.
			return;
			throw void 0 !== r && i(r.call(t)),
			e
		}
	}
},
function(t, e, n) {
	var i = n(9)("iterator"),
	o = !1;
	try {
		var r = [7][i]();
		r.
		return = function() {
			o = !0
		},
		Array.from(r,
		function() {
			throw 2
		})
	} catch(t) {}
	t.exports = function(t, e) {
		if (!e && !o) return ! 1;
		var n = !1;
		try {
			var r = [7],
			a = r[i]();
			a.next = function() {
				return {
					done: n = !0
				}
			},
			r[i] = function() {
				return a
			},
			t(r)
		} catch(t) {}
		return n
	}
},
function(t, e, n) {
	var i = n(18),
	o = n(96).f,
	r = {}.toString,
	a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
	s = function(t) {
		try {
			return o(t)
		} catch(t) {
			return a.slice()
		}
	};
	t.exports.f = function(t) {
		return a && "[object Window]" == r.call(t) ? s(t) : o(i(t))
	}
},
function(t, e, n) {
	var i = n(87),
	o = n(58).concat("length", "prototype");
	e.f = Object.getOwnPropertyNames ||
	function(t) {
		return i(t, o)
	}
},
function(t, e) {
	t.exports = function(t) {
		try {
			return {
				e: !1,
				v: t()
			}
		} catch(t) {
			return {
				e: !0,
				v: t
			}
		}
	}
},
function(t, e, n) {
	var i = n(13),
	o = n(7),
	r = n(67);
	t.exports = function(t, e) {
		if (i(t), o(e) && e.constructor === t) return e;
		var n = r.f(t);
		return (0, n.resolve)(e),
		n.promise
	}
},
function(t, e, n) {
	var i = n(19);
	t.exports = function(t, e, n) {
		for (var o in e) n && t[o] ? t[o] = e[o] : i(t, o, e[o]);
		return t
	}
},
function(t, e, n) {
	var i = n(13),
	o = n(44),
	r = n(9)("species");
	t.exports = function(t, e) {
		var n, a = i(t).constructor;
		return void 0 === a || void 0 == (n = i(a)[r]) ? e: o(n)
	}
},
function(t, e, n) {
	var i, o, r, a = n(22),
	s = n(179),
	l = n(83),
	u = n(57),
	c = n(8),
	f = c.process,
	d = c.setImmediate,
	h = c.clearImmediate,
	v = c.MessageChannel,
	p = c.Dispatch,
	_ = 0,
	m = {},
	g = function() {
		var t = +this;
		if (m.hasOwnProperty(t)) {
			var e = m[t];
			delete m[t],
			e()
		}
	},
	y = function(t) {
		g.call(t.data)
	};
	d && h || (d = function(t) {
		for (var e = [], n = 1; arguments.length > n;) e.push(arguments[n++]);
		return m[++_] = function() {
			s("function" == typeof t ? t: Function(t), e)
		},
		i(_),
		_
	},
	h = function(t) {
		delete m[t]
	},
	"process" == n(36)(f) ? i = function(t) {
		f.nextTick(a(g, t, 1))
	}: p && p.now ? i = function(t) {
		p.now(a(g, t, 1))
	}: v ? (o = new v, r = o.port2, o.port1.onmessage = y, i = a(r.postMessage, r, 1)) : c.addEventListener && "function" == typeof postMessage && !c.importScripts ? (i = function(t) {
		c.postMessage(t + "", "*")
	},
	c.addEventListener("message", y, !1)) : i = "onreadystatechange" in u("script") ?
	function(t) {
		l.appendChild(u("script")).onreadystatechange = function() {
			l.removeChild(this),
			g.call(t)
		}
	}: function(t) {
		setTimeout(a(g, t, 1), 0)
	}),
	t.exports = {
		set: d,
		clear: h
	}
},
function(t, e) {
	var n = t.exports = {
		version: "2.6.9"
	};
	"number" == typeof __e && (__e = n)
},
function(t, e, n) {
	t.exports = !n(61)(function() {
		return 7 != Object.defineProperty({},
		"a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e, n) {
	var i = n(60),
	o = n(526),
	r = n(254),
	a = Object.defineProperty;
	e.f = n(103) ? Object.defineProperty: function(t, e, n) {
		if (i(t), e = r(e, !0), i(n), o) try {
			return a(t, e, n)
		} catch(t) {}
		if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
		return "value" in n && (t[e] = n.value),
		t
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(122),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default[0]
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		n[t] = n[t] || [],
		n[t].push(e)
	}
	function r(t, e, n) {
		if (n && n[t]) {
			var i = n[t].indexOf(e); - 1 !== i && n[t].splice(i, 1)
		}
	}
	var a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(10),
	m = n(120),
	g = function(t) {
		function e() { (0, u.
		default)(this, e);
			var t = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this));
			return t.setMaxListeners(500),
			t
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_on",
			value: function(t, e) {
				return this._listeners = this._listeners || {},
				o(t, e, this._listeners),
				this.on(t, e),
				e
			}
		},
		{
			key: "_off",
			value: function(t, e) {
				return r(t, e, this._listeners),
				r(t, e, this._oneTimeListeners),
				this.off(t, e),
				this
			}
		},
		{
			key: "_once",
			value: function(t, e) {
				return this._oneTimeListeners = this._oneTimeListeners || {},
				o(t, e, this._oneTimeListeners),
				this.once(t, e),
				e
			}
		},
		{
			key: "_fire",
			value: function(t, e, n) {
				if (this._listens(t)) {
					e = n ? _.extend({},
					e, {
						type: t
					}) : _.extend({},
					e, {
						type: t,
						target: this
					});
					for (var i = this._listeners && this._listeners[t] ? this._listeners[t].slice() : [], o = 0; o < i.length; o++) i[o].call(this, e);
					for (var a = this._oneTimeListeners && this._oneTimeListeners[t] ? this._oneTimeListeners[t].slice() : [], s = 0; s < a.length; s++) a[s].call(this, e),
					r(t, a[s], this._oneTimeListeners);
					this._eventedParent && this._eventedParent._fire(t, _.extend({},
					e, "function" == typeof this._eventedParentData ? this._eventedParentData() : this._eventedParentData))
				} else _.endsWith(t, "error") && console.error(e && e.error || e || "Empty error event");
				return this.emit(t, e),
				this
			}
		},
		{
			key: "_listens",
			value: function(t) {
				return this._listeners && this._listeners[t] && this._listeners[t].length > 0 || this._oneTimeListeners && this._oneTimeListeners[t] && this._oneTimeListeners[t].length > 0 || this._eventedParent && this._eventedParent._listens(t) || this.listenerCount(t) > 0
			}
		},
		{
			key: "_setEventedParent",
			value: function(t, e) {
				return this._eventedParent = t,
				this._eventedParentData = e,
				this
			}
		},
		{
			key: "_clearAllListeners",
			value: function() {
				this._listeners = {},
				this.removeAllListeners()
			}
		}]),
		e
	} (m);
	t.exports = g
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Vector4 = e.Vector3 = e.Matrix4 = void 0;
	var i = n(20),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = function(t) {
		var e = void 0,
		n = void 0,
		i = void 0;
		if (t && "object" === (void 0 === t ? "undefined": (0, o.
	default)(t)) && t.hasOwnProperty("elements")) {
			for (n = t.elements, i = new Float32Array(16), e = 0; e < 16; ++e) i[e] = n[e];
			this.elements = i
		} else {
			var r = new Float32Array(16);
			r[0] = 1,
			r[1] = 0,
			r[2] = 0,
			r[3] = 0,
			r[4] = 0,
			r[5] = 1,
			r[6] = 0,
			r[7] = 0,
			r[8] = 0,
			r[9] = 0,
			r[10] = 1,
			r[11] = 0,
			r[12] = 0,
			r[13] = 0,
			r[14] = 0,
			r[15] = 1,
			this.elements = r
		}
	};
	r.prototype.setIdentity = function() {
		var t = this.elements;
		return t[0] = 1,
		t[4] = 0,
		t[8] = 0,
		t[12] = 0,
		t[1] = 0,
		t[5] = 1,
		t[9] = 0,
		t[13] = 0,
		t[2] = 0,
		t[6] = 0,
		t[10] = 1,
		t[14] = 0,
		t[3] = 0,
		t[7] = 0,
		t[11] = 0,
		t[15] = 1,
		this
	},
	r.prototype.clone = function() {
		var t = new r,
		e = this.elements,
		n = t.elements;
		return n[0] = e[0],
		n[1] = e[1],
		n[2] = e[2],
		n[3] = e[3],
		n[4] = e[4],
		n[5] = e[5],
		n[6] = e[6],
		n[7] = e[7],
		n[8] = e[8],
		n[9] = e[9],
		n[10] = e[10],
		n[11] = e[11],
		n[12] = e[12],
		n[13] = e[13],
		n[14] = e[14],
		n[15] = e[15],
		t
	},
	r.prototype.set = function(t) {
		var e = void 0,
		n = t.elements,
		i = this.elements;
		if (n !== i) {
			for (e = 0; e < 16; ++e) i[e] = n[e];
			return this
		}
	},
	r.prototype.concat = function(t) {
		var e = void 0,
		n = void 0,
		i = void 0,
		o = void 0,
		r = void 0,
		a = void 0,
		s = this.elements,
		l = this.elements;
		if (n = t.elements, s === n) for (n = new Float32Array(16), e = 0; e < 16; ++e) n[e] = s[e];
		for (e = 0; e < 4; e++) i = l[e],
		o = l[e + 4],
		r = l[e + 8],
		a = l[e + 12],
		s[e] = i * n[0] + o * n[1] + r * n[2] + a * n[3],
		s[e + 4] = i * n[4] + o * n[5] + r * n[6] + a * n[7],
		s[e + 8] = i * n[8] + o * n[9] + r * n[10] + a * n[11],
		s[e + 12] = i * n[12] + o * n[13] + r * n[14] + a * n[15];
		return this
	},
	r.prototype.multiply = r.prototype.concat,
	r.prototype.multiplyVector3 = function(t) {
		var e = this.elements,
		n = t.elements,
		i = new a,
		o = i.elements;
		return o[0] = n[0] * e[0] + n[1] * e[4] + n[2] * e[8] + e[12],
		o[1] = n[0] * e[1] + n[1] * e[5] + n[2] * e[9] + e[13],
		o[2] = n[0] * e[2] + n[1] * e[6] + n[2] * e[10] + e[14],
		i
	},
	r.prototype.multiplyVector4 = function(t) {
		var e = this.elements,
		n = t.elements,
		i = new s,
		o = i.elements;
		return o[0] = n[0] * e[0] + n[1] * e[4] + n[2] * e[8] + n[3] * e[12],
		o[1] = n[0] * e[1] + n[1] * e[5] + n[2] * e[9] + n[3] * e[13],
		o[2] = n[0] * e[2] + n[1] * e[6] + n[2] * e[10] + n[3] * e[14],
		o[3] = n[0] * e[3] + n[1] * e[7] + n[2] * e[11] + n[3] * e[15],
		i
	},
	r.prototype.transpose = function() {
		var t = void 0,
		e = this.elements;
		return t = e[1],
		e[1] = e[4],
		e[4] = t,
		t = e[2],
		e[2] = e[8],
		e[8] = t,
		t = e[3],
		e[3] = e[12],
		e[12] = t,
		t = e[6],
		e[6] = e[9],
		e[9] = t,
		t = e[7],
		e[7] = e[13],
		e[13] = t,
		t = e[11],
		e[11] = e[14],
		e[14] = t,
		this
	},
	r.prototype.setInverseOf = function(t) {
		var e = void 0,
		n = void 0,
		i = t.elements,
		o = this.elements,
		r = new Float32Array(16);
		if (r[0] = i[5] * i[10] * i[15] - i[5] * i[11] * i[14] - i[9] * i[6] * i[15] + i[9] * i[7] * i[14] + i[13] * i[6] * i[11] - i[13] * i[7] * i[10], r[4] = -i[4] * i[10] * i[15] + i[4] * i[11] * i[14] + i[8] * i[6] * i[15] - i[8] * i[7] * i[14] - i[12] * i[6] * i[11] + i[12] * i[7] * i[10], r[8] = i[4] * i[9] * i[15] - i[4] * i[11] * i[13] - i[8] * i[5] * i[15] + i[8] * i[7] * i[13] + i[12] * i[5] * i[11] - i[12] * i[7] * i[9], r[12] = -i[4] * i[9] * i[14] + i[4] * i[10] * i[13] + i[8] * i[5] * i[14] - i[8] * i[6] * i[13] - i[12] * i[5] * i[10] + i[12] * i[6] * i[9], r[1] = -i[1] * i[10] * i[15] + i[1] * i[11] * i[14] + i[9] * i[2] * i[15] - i[9] * i[3] * i[14] - i[13] * i[2] * i[11] + i[13] * i[3] * i[10], r[5] = i[0] * i[10] * i[15] - i[0] * i[11] * i[14] - i[8] * i[2] * i[15] + i[8] * i[3] * i[14] + i[12] * i[2] * i[11] - i[12] * i[3] * i[10], r[9] = -i[0] * i[9] * i[15] + i[0] * i[11] * i[13] + i[8] * i[1] * i[15] - i[8] * i[3] * i[13] - i[12] * i[1] * i[11] + i[12] * i[3] * i[9], r[13] = i[0] * i[9] * i[14] - i[0] * i[10] * i[13] - i[8] * i[1] * i[14] + i[8] * i[2] * i[13] + i[12] * i[1] * i[10] - i[12] * i[2] * i[9], r[2] = i[1] * i[6] * i[15] - i[1] * i[7] * i[14] - i[5] * i[2] * i[15] + i[5] * i[3] * i[14] + i[13] * i[2] * i[7] - i[13] * i[3] * i[6], r[6] = -i[0] * i[6] * i[15] + i[0] * i[7] * i[14] + i[4] * i[2] * i[15] - i[4] * i[3] * i[14] - i[12] * i[2] * i[7] + i[12] * i[3] * i[6], r[10] = i[0] * i[5] * i[15] - i[0] * i[7] * i[13] - i[4] * i[1] * i[15] + i[4] * i[3] * i[13] + i[12] * i[1] * i[7] - i[12] * i[3] * i[5], r[14] = -i[0] * i[5] * i[14] + i[0] * i[6] * i[13] + i[4] * i[1] * i[14] - i[4] * i[2] * i[13] - i[12] * i[1] * i[6] + i[12] * i[2] * i[5], r[3] = -i[1] * i[6] * i[11] + i[1] * i[7] * i[10] + i[5] * i[2] * i[11] - i[5] * i[3] * i[10] - i[9] * i[2] * i[7] + i[9] * i[3] * i[6], r[7] = i[0] * i[6] * i[11] - i[0] * i[7] * i[10] - i[4] * i[2] * i[11] + i[4] * i[3] * i[10] + i[8] * i[2] * i[7] - i[8] * i[3] * i[6], r[11] = -i[0] * i[5] * i[11] + i[0] * i[7] * i[9] + i[4] * i[1] * i[11] - i[4] * i[3] * i[9] - i[8] * i[1] * i[7] + i[8] * i[3] * i[5], r[15] = i[0] * i[5] * i[10] - i[0] * i[6] * i[9] - i[4] * i[1] * i[10] + i[4] * i[2] * i[9] + i[8] * i[1] * i[6] - i[8] * i[2] * i[5], 0 === (n = i[0] * r[0] + i[1] * r[4] + i[2] * r[8] + i[3] * r[12])) return this;
		for (n = 1 / n, e = 0; e < 16; e++) o[e] = r[e] * n;
		return this
	},
	r.prototype.invert = function() {
		return this.setInverseOf(this)
	},
	r.prototype.setOrtho = function(t, e, n, i, o, r) {
		if (t === e || n === i || o === r) throw "null frustum";
		var a = 1 / (e - t),
		s = 1 / (i - n),
		l = 1 / (r - o),
		u = this.elements;
		return u[0] = 2 * a,
		u[1] = 0,
		u[2] = 0,
		u[3] = 0,
		u[4] = 0,
		u[5] = 2 * s,
		u[6] = 0,
		u[7] = 0,
		u[8] = 0,
		u[9] = 0,
		u[10] = -2 * l,
		u[11] = 0,
		u[12] = -(e + t) * a,
		u[13] = -(i + n) * s,
		u[14] = -(r + o) * l,
		u[15] = 1,
		this
	},
	r.prototype.ortho = function(t, e, n, i, o, a) {
		return this.concat((new r).setOrtho(t, e, n, i, o, a))
	},
	r.prototype.setFrustum = function(t, e, n, i, o, r) {
		if (t === e || i === n || o === r) throw "null frustum";
		if (o <= 0) throw "near <= 0";
		if (r <= 0) throw "far <= 0";
		var a = 1 / (e - t),
		s = 1 / (i - n),
		l = 1 / (r - o),
		u = this.elements;
		return u[0] = 2 * o * a,
		u[1] = 0,
		u[2] = 0,
		u[3] = 0,
		u[4] = 0,
		u[5] = 2 * o * s,
		u[6] = 0,
		u[7] = 0,
		u[8] = (e + t) * a,
		u[9] = (i + n) * s,
		u[10] = -(r + o) * l,
		u[11] = -1,
		u[12] = 0,
		u[13] = 0,
		u[14] = -2 * o * r * l,
		u[15] = 0,
		this
	},
	r.prototype.frustum = function(t, e, n, i, o, a) {
		return this.concat((new r).setFrustum(t, e, n, i, o, a))
	},
	r.prototype.setPerspective = function(t, e, n, i) {
		var o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
		r = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
		if (n === i || 0 === e) throw "null frustum";
		if (n <= 0) throw "near <= 0";
		if (i <= 0) throw "far <= 0";
		t = Math.PI * t / 180 / 2;
		var a = Math.sin(t);
		if (0 === a) throw "null frustum";
		var s = 1 / (i - n),
		l = Math.cos(t) / a,
		u = this.elements;
		return u[0] = l / e,
		u[1] = 0,
		u[2] = 0,
		u[3] = 0,
		u[4] = 0,
		u[5] = l,
		u[6] = 0,
		u[7] = 0,
		u[8] = -o,
		u[9] = -r,
		u[10] = -(i + n) * s,
		u[11] = -1,
		u[12] = 0,
		u[13] = 0,
		u[14] = -2 * n * i * s,
		u[15] = 0,
		this
	},
	r.prototype.perspective = function(t, e, n, i) {
		return this.concat((new r).setPerspective(t, e, n, i))
	},
	r.prototype.setScale = function(t, e, n) {
		var i = this.elements;
		return i[0] = t,
		i[4] = 0,
		i[8] = 0,
		i[12] = 0,
		i[1] = 0,
		i[5] = e,
		i[9] = 0,
		i[13] = 0,
		i[2] = 0,
		i[6] = 0,
		i[10] = n,
		i[14] = 0,
		i[3] = 0,
		i[7] = 0,
		i[11] = 0,
		i[15] = 1,
		this
	},
	r.prototype.scale = function(t, e, n) {
		var i = this.elements;
		return i[0] *= t,
		i[4] *= e,
		i[8] *= n,
		i[1] *= t,
		i[5] *= e,
		i[9] *= n,
		i[2] *= t,
		i[6] *= e,
		i[10] *= n,
		i[3] *= t,
		i[7] *= e,
		i[11] *= n,
		this
	},
	r.prototype.setTranslate = function(t, e, n) {
		var i = this.elements;
		return i[0] = 1,
		i[4] = 0,
		i[8] = 0,
		i[12] = t,
		i[1] = 0,
		i[5] = 1,
		i[9] = 0,
		i[13] = e,
		i[2] = 0,
		i[6] = 0,
		i[10] = 1,
		i[14] = n,
		i[3] = 0,
		i[7] = 0,
		i[11] = 0,
		i[15] = 1,
		this
	},
	r.prototype.translate = function(t, e, n) {
		var i = this.elements;
		return i[12] += i[0] * t + i[4] * e + i[8] * n,
		i[13] += i[1] * t + i[5] * e + i[9] * n,
		i[14] += i[2] * t + i[6] * e + i[10] * n,
		i[15] += i[3] * t + i[7] * e + i[11] * n,
		this
	},
	r.prototype.setRotate = function(t, e, n, i) {
		var o = void 0,
		r = void 0,
		a = void 0,
		s = void 0,
		l = void 0,
		u = void 0,
		c = void 0,
		f = void 0,
		d = void 0,
		h = void 0;
		t = Math.PI * t / 180;
		var v = this.elements;
		o = Math.sin(t);
		var p = Math.cos(t);
		return 0 !== e && 0 === n && 0 === i ? (e < 0 && (o = -o), v[0] = 1, v[4] = 0, v[8] = 0, v[12] = 0, v[1] = 0, v[5] = p, v[9] = -o, v[13] = 0, v[2] = 0, v[6] = o, v[10] = p, v[14] = 0, v[3] = 0, v[7] = 0, v[11] = 0, v[15] = 1) : 0 === e && 0 !== n && 0 === i ? (n < 0 && (o = -o), v[0] = p, v[4] = 0, v[8] = o, v[12] = 0, v[1] = 0, v[5] = 1, v[9] = 0, v[13] = 0, v[2] = -o, v[6] = 0, v[10] = p, v[14] = 0, v[3] = 0, v[7] = 0, v[11] = 0, v[15] = 1) : 0 === e && 0 === n && 0 !== i ? (i < 0 && (o = -o), v[0] = p, v[4] = -o, v[8] = 0, v[12] = 0, v[1] = o, v[5] = p, v[9] = 0, v[13] = 0, v[2] = 0, v[6] = 0, v[10] = 1, v[14] = 0, v[3] = 0, v[7] = 0, v[11] = 0, v[15] = 1) : (r = Math.sqrt(e * e + n * n + i * i), 1 !== r && (a = 1 / r, e *= a, n *= a, i *= a), s = 1 - p, l = e * n, u = n * i, c = i * e, f = e * o, d = n * o, h = i * o, v[0] = e * e * s + p, v[1] = l * s + h, v[2] = c * s - d, v[3] = 0, v[4] = l * s - h, v[5] = n * n * s + p, v[6] = u * s + f, v[7] = 0, v[8] = c * s + d, v[9] = u * s - f, v[10] = i * i * s + p, v[11] = 0, v[12] = 0, v[13] = 0, v[14] = 0, v[15] = 1),
		this
	},
	r.prototype.rotate = function(t, e, n, i) {
		return this.concat((new r).setRotate(t, e, n, i))
	},
	r.prototype.setLookAt = function(t, e, n, i, o, r, a, s, l) {
		var u = void 0,
		c = void 0,
		f = void 0,
		d = void 0,
		h = void 0,
		v = void 0;
		u = i - t,
		c = o - e,
		f = r - n;
		var p = 1 / Math.sqrt(u * u + c * c + f * f);
		u *= p,
		c *= p,
		f *= p,
		d = c * l - f * s,
		h = f * a - u * l,
		v = u * s - c * a;
		var _ = 1 / Math.sqrt(d * d + h * h + v * v);
		d *= _,
		h *= _,
		v *= _;
		var m = h * f - v * c,
		g = v * u - d * f,
		y = d * c - h * u,
		x = this.elements;
		return x[0] = d,
		x[1] = m,
		x[2] = -u,
		x[3] = 0,
		x[4] = h,
		x[5] = g,
		x[6] = -c,
		x[7] = 0,
		x[8] = v,
		x[9] = y,
		x[10] = -f,
		x[11] = 0,
		x[12] = 0,
		x[13] = 0,
		x[14] = 0,
		x[15] = 1,
		this.translate( - t, -e, -n)
	},
	r.prototype.lookAt = function(t, e, n, i, o, a, s, l, u) {
		return this.concat((new r).setLookAt(t, e, n, i, o, a, s, l, u))
	},
	r.prototype.dropShadow = function(t, e) {
		var n = new r,
		i = n.elements,
		o = t[0] * e[0] + t[1] * e[1] + t[2] * e[2] + t[3] * e[3];
		return i[0] = o - e[0] * t[0],
		i[1] = -e[1] * t[0],
		i[2] = -e[2] * t[0],
		i[3] = -e[3] * t[0],
		i[4] = -e[0] * t[1],
		i[5] = o - e[1] * t[1],
		i[6] = -e[2] * t[1],
		i[7] = -e[3] * t[1],
		i[8] = -e[0] * t[2],
		i[9] = -e[1] * t[2],
		i[10] = o - e[2] * t[2],
		i[11] = -e[3] * t[2],
		i[12] = -e[0] * t[3],
		i[13] = -e[1] * t[3],
		i[14] = -e[2] * t[3],
		i[15] = o - e[3] * t[3],
		this.concat(n)
	},
	r.prototype.dropShadowDirectionally = function(t, e, n, i, o, r, a, s, l) {
		var u = i * t + o * e + r * n;
		return this.dropShadow([t, e, n, -u], [a, s, l, 0])
	};
	var a = function() {
		var t = 1 === arguments.length ? arguments[0] : arguments,
		e = new Float32Array(3);
		t && "object" === (void 0 === t ? "undefined": (0, o.
	default)(t)) && (e[0] = t[0], e[1] = t[1], e[2] = t[2]),
		this.elements = e
	};
	a.prototype.normalize = function() {
		var t = this.elements,
		e = t[0],
		n = t[1],
		i = t[2],
		o = Math.sqrt(e * e + n * n + i * i);
		return o ? 1 === o ? this: (o = 1 / o, t[0] = e * o, t[1] = n * o, t[2] = i * o, this) : (t[0] = 0, t[1] = 0, t[2] = 0, this)
	},
	a.prototype.scale = function() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
		e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
		n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
		i = this.elements;
		return i[0] *= t,
		i[1] *= e,
		i[2] *= n,
		this
	},
	a.prototype.cross = function(t) {
		var e = this.elements,
		n = t.elements;
		return new a(e[1] * n[2] - e[2] * n[1], e[2] * n[0] - e[0] * n[2], e[0] * n[1] - e[1] * n[0])
	},
	a.prototype.equals = function(t) {
		var e = this.elements,
		n = t.elements;
		return e[0] === n[0] && e[1] === n[1] && e[2] === n[2]
	};
	var s = function() {
		var t = 1 === arguments.length ? arguments[0] : arguments,
		e = new Float32Array(4);
		t && "object" === (void 0 === t ? "undefined": (0, o.
	default)(t)) && (e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3]),
		this.elements = e
	};
	s.prototype.set = function(t, e, n) {
		this.elements[0] = t,
		this.elements[1] = e,
		this.elements[2] = n
	},
	s.prototype.multiply = function(t) {
		return this.elements[0] *= t,
		this.elements[1] *= t,
		this.elements[2] *= t,
		this.elements[3] *= t,
		this
	},
	s.prototype.add = function(t) {
		return this.elements[0] += t.elements[0],
		this.elements[1] += t.elements[1],
		this.elements[2] += t.elements[2],
		this.elements[3] += t.elements[3],
		this
	},
	s.prototype.minus = function(t) {
		return this.elements[0] -= t.elements[0],
		this.elements[1] -= t.elements[1],
		this.elements[2] -= t.elements[2],
		this.elements[3] -= t.elements[3],
		this
	},
	e.Matrix4 = r,
	e.Vector3 = a,
	e.Vector4 = s
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			value: e,
			done: !!t
		}
	}
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Store = e.textures = void 0;
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = function() {},
	u = function() {
		function t(e, n, i, o) { (0, r.
		default)(this, t),
			this.max = n || 1e4,
			this.type = e || "default",
			this.count = 0,
			this.store = {},
			this.reduceRange = i || Math.max(1, ~~this.max / 100),
			this.deleteCallback = o || l
		}
		return (0, s.
	default)(t, [{
			key: "set",
			value: function(t, e) {
				return this.count >= this.max && this.reduce(),
				t in this.store || (this.count += 1),
				this.store[t] = e,
				e
			}
		},
		{
			key: "get",
			value: function(t) {
				return this.store[t]
			}
		},
		{
			key: "reduce",
			value: function() {
				var t = 0,
				e = this.reduceRange;
				for (var n in this.store) if (this.store.hasOwnProperty(n)) {
					if (! (t < e)) break;
					t += 1,
					this.deleteCallback(this.store[n]),
					delete this.store[n]
				}
				this.count -= e
			}
		},
		{
			key: "clear",
			value: function() {
				for (var t in this.store) this.store.hasOwnProperty(t) && (this.deleteCallback(this.store[t]), this.store[t] = null);
				this.store = {},
				this.count = 0
			}
		},
		{
			key: "exist",
			value: function(t) {
				return t in this.store
			}
		},
		{
			key: "remove",
			value: function(t) {
				t in this.store && (this.deleteCallback(this.store[t]), delete this.store[t], this.count -= 1)
			}
		}]),
		t
	} (),
	c = new u("texture", 1e3);
	e.textures = c,
	e.Store = u
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(272))
	} (0,
	function(t) {
		t.lib.Cipher ||
		function(e) {
			var n = t,
			i = n.lib,
			o = i.Base,
			r = i.WordArray,
			a = i.BufferedBlockAlgorithm,
			s = n.enc,
			l = (s.Utf8, s.Base64),
			u = n.algo,
			c = u.EvpKDF,
			f = i.Cipher = a.extend({
				cfg: o.extend(),
				createEncryptor: function(t, e) {
					return this.create(this._ENC_XFORM_MODE, t, e)
				},
				createDecryptor: function(t, e) {
					return this.create(this._DEC_XFORM_MODE, t, e)
				},
				init: function(t, e, n) {
					this.cfg = this.cfg.extend(n),
					this._xformMode = t,
					this._key = e,
					this.reset()
				},
				reset: function() {
					a.reset.call(this),
					this._doReset()
				},
				process: function(t) {
					return this._append(t),
					this._process()
				},
				finalize: function(t) {
					return t && this._append(t),
					this._doFinalize()
				},
				keySize: 4,
				ivSize: 4,
				_ENC_XFORM_MODE: 1,
				_DEC_XFORM_MODE: 2,
				_createHelper: function() {
					function t(t) {
						return "string" == typeof t ? w: x
					}
					return function(e) {
						return {
							encrypt: function(n, i, o) {
								return t(i).encrypt(e, n, i, o)
							},
							decrypt: function(n, i, o) {
								return t(i).decrypt(e, n, i, o)
							}
						}
					}
				} ()
			}),
			d = (i.StreamCipher = f.extend({
				_doFinalize: function() {
					return this._process(!0)
				},
				blockSize: 1
			}), n.mode = {}),
			h = i.BlockCipherMode = o.extend({
				createEncryptor: function(t, e) {
					return this.Encryptor.create(t, e)
				},
				createDecryptor: function(t, e) {
					return this.Decryptor.create(t, e)
				},
				init: function(t, e) {
					this._cipher = t,
					this._iv = e
				}
			}),
			v = d.CBC = function() {
				function t(t, n, i) {
					var o = this._iv;
					if (o) {
						var r = o;
						this._iv = e
					} else var r = this._prevBlock;
					for (var a = 0; a < i; a++) t[n + a] ^= r[a]
				}
				var n = h.extend();
				return n.Encryptor = n.extend({
					processBlock: function(e, n) {
						var i = this._cipher,
						o = i.blockSize;
						t.call(this, e, n, o),
						i.encryptBlock(e, n),
						this._prevBlock = e.slice(n, n + o)
					}
				}),
				n.Decryptor = n.extend({
					processBlock: function(e, n) {
						var i = this._cipher,
						o = i.blockSize,
						r = e.slice(n, n + o);
						i.decryptBlock(e, n),
						t.call(this, e, n, o),
						this._prevBlock = r
					}
				}),
				n
			} (),
			p = n.pad = {},
			_ = p.Pkcs7 = {
				pad: function(t, e) {
					for (var n = 4 * e,
					i = n - t.sigBytes % n,
					o = i << 24 | i << 16 | i << 8 | i,
					a = [], s = 0; s < i; s += 4) a.push(o);
					var l = r.create(a, i);
					t.concat(l)
				},
				unpad: function(t) {
					var e = 255 & t.words[t.sigBytes - 1 >>> 2];
					t.sigBytes -= e
				}
			},
			m = (i.BlockCipher = f.extend({
				cfg: f.cfg.extend({
					mode: v,
					padding: _
				}),
				reset: function() {
					f.reset.call(this);
					var t = this.cfg,
					e = t.iv,
					n = t.mode;
					if (this._xformMode == this._ENC_XFORM_MODE) var i = n.createEncryptor;
					else {
						var i = n.createDecryptor;
						this._minBufferSize = 1
					}
					this._mode && this._mode.__creator == i ? this._mode.init(this, e && e.words) : (this._mode = i.call(n, this, e && e.words), this._mode.__creator = i)
				},
				_doProcessBlock: function(t, e) {
					this._mode.processBlock(t, e)
				},
				_doFinalize: function() {
					var t = this.cfg.padding;
					if (this._xformMode == this._ENC_XFORM_MODE) {
						t.pad(this._data, this.blockSize);
						var e = this._process(!0)
					} else {
						var e = this._process(!0);
						t.unpad(e)
					}
					return e
				},
				blockSize: 4
			}), i.CipherParams = o.extend({
				init: function(t) {
					this.mixIn(t)
				},
				toString: function(t) {
					return (t || this.formatter).stringify(this)
				}
			})),
			g = n.format = {},
			y = g.OpenSSL = {
				stringify: function(t) {
					var e = t.ciphertext,
					n = t.salt;
					if (n) var i = r.create([1398893684, 1701076831]).concat(n).concat(e);
					else var i = e;
					return i.toString(l)
				},
				parse: function(t) {
					var e = l.parse(t),
					n = e.words;
					if (1398893684 == n[0] && 1701076831 == n[1]) {
						var i = r.create(n.slice(2, 4));
						n.splice(0, 4),
						e.sigBytes -= 16
					}
					return m.create({
						ciphertext: e,
						salt: i
					})
				}
			},
			x = i.SerializableCipher = o.extend({
				cfg: o.extend({
					format: y
				}),
				encrypt: function(t, e, n, i) {
					i = this.cfg.extend(i);
					var o = t.createEncryptor(n, i),
					r = o.finalize(e),
					a = o.cfg;
					return m.create({
						ciphertext: r,
						key: n,
						iv: a.iv,
						algorithm: t,
						mode: a.mode,
						padding: a.padding,
						blockSize: t.blockSize,
						formatter: i.format
					})
				},
				decrypt: function(t, e, n, i) {
					return i = this.cfg.extend(i),
					e = this._parse(e, i.format),
					t.createDecryptor(n, i).finalize(e.ciphertext)
				},
				_parse: function(t, e) {
					return "string" == typeof t ? e.parse(t, this) : t
				}
			}),
			b = n.kdf = {},
			S = b.OpenSSL = {
				execute: function(t, e, n, i) {
					i || (i = r.random(8));
					var o = c.create({
						keySize: e + n
					}).compute(t, i),
					a = r.create(o.words.slice(e), 4 * n);
					return o.sigBytes = 4 * e,
					m.create({
						key: o,
						iv: a,
						salt: i
					})
				}
			},
			w = i.PasswordBasedCipher = x.extend({
				cfg: x.cfg.extend({
					kdf: S
				}),
				encrypt: function(t, e, n, i) {
					i = this.cfg.extend(i);
					var o = i.kdf.execute(n, t.keySize, t.ivSize);
					i.iv = o.iv;
					var r = x.encrypt.call(this, t, e, o.key, i);
					return r.mixIn(o),
					r
				},
				decrypt: function(t, e, n, i) {
					i = this.cfg.extend(i),
					e = this._parse(e, i.format);
					var o = i.kdf.execute(n, t.keySize, t.ivSize, e.salt);
					return i.iv = o.iv,
					x.decrypt.call(this, t, e, o.key, i)
				}
			})
		} ()
	})
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		return {
			x: t / n.width * 2 - 1,
			y: -e / n.height * 2 + 1,
			z: 1
		}
	}
	function r(t, e, n) {
		return {
			x: (t + 1) / 2 * n.width,
			y: (1 - e) / 2 * n.height
		}
	}
	function a(t, e, n) {
		var i = t.multiplyVector4(e),
		o = i.elements.map(function(t) {
			return t / i.elements[3]
		}),
		a = r(o[0], o[1], n);
		return {
			x: a.x,
			y: a.y,
			depthScale: 1
		}
	}
	function s(t, e) {
		var n = t.multiplyVector4(e);
		return n.multiply(1 / n.elements[3])
	}
	function l(t, e) {
		var n = t.clone().invert(),
		i = new b.Vector4(e.x, e.y, 0, 1),
		o = new b.Vector4(e.x, e.y, 1, 1),
		r = n.multiplyVector4(i),
		a = n.multiplyVector4(o);
		r.multiply(1 / r.elements[3]),
		a.multiply(1 / a.elements[3]);
		var s = (0 - r.elements[2]) / (a.elements[2] - r.elements[2]),
		l = r.add(a.minus(r).multiply(s));
		return {
			x: l.elements[0],
			y: l.elements[1]
		}
	}
	function u(t, e, n) {
		var i = t.clone().invert(),
		o = new b.Vector4(e.x, e.y, 0, 1),
		r = new b.Vector4(e.x, e.y, 1, 1),
		a = i.multiplyVector4(o),
		s = i.multiplyVector4(r);
		a.multiply(1 / a.elements[3]),
		s.multiply(1 / s.elements[3]);
		var l = new P.
	default(new b.Vector3(a.elements), new b.Vector3(s.elements)),
		u = new k.
	default(new b.Vector3(0, 0, -n), n),
		c = u.intersectWithLine(l);
		if (c.length) {
			var f = (0, v.
		default)(c, 2),
			d = f[0],
			h = f[1],
			p = d.elements[2] > h.elements[2] ? d: h,
			_ = (0, v.
		default)(p.elements, 3);
			return {
				x: _[0],
				y: _[1],
				z: _[2]
			}
		}
		return null
	}
	function c(t) {
		return 2 * Math.PI * _.
	default / (Math.pow(2, t) * g.
	default.tileSize)
	}
	function f(t) {
		var e = t.x,
		n = t.y;
		return e = e / M * 180,
		n = n / M * 180,
		n = 180 / Math.PI * (2 * Math.atan(Math.exp(n * Math.PI / 180)) - Math.PI / 2),
		new w.
	default(n, e)
	}
	function d(t) {
		var e = t.lng,
		n = t.lat;
		return e = e * M / 180,
		n = Math.log(Math.tan((90 + n) * Math.PI / 360)) / (Math.PI / 180),
		n = n * M / 180,
		new T.
	default(e, n)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var h = n(32),
	v = i(h);
	e.fromScreenToNdc = o,
	e.fromNdcToScreen = r,
	e.getScreenCoordsByCustomMatrix = a,
	e.getNdcCoordsByCustomMatrix = s,
	e.getZPlaneCoordsByCustomMatrix = l,
	e.getSphereCoordsByCustomMatrix = u,
	e.getSpatialResolution = c,
	e.mercatorToLatLng = f,
	e.latLngToMercator = d;
	var p = n(295),
	_ = i(p),
	m = n(23),
	g = i(m),
	y = n(247),
	x = i(y),
	b = n(107),
	S = n(47),
	w = i(S),
	E = n(74),
	T = i(E),
	A = n(377),
	P = i(A),
	I = n(378),
	k = i(I),
	L = x.
default[1],
	M = L / 2
},
function(t, e, n) {
	t.exports = {
	default:
		n(409),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(160),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(162),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(164),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = n(36);
	t.exports = Array.isArray ||
	function(t) {
		return "Array" == i(t)
	}
},
function(t, e, n) {
	var i = n(12),
	o = n(34),
	r = n(18),
	a = n(45).f;
	t.exports = function(t) {
		return function(e) {
			for (var n, s = r(e), l = o(s), u = l.length, c = 0, f = []; u > c;) n = l[c++],
			i && !a.call(s, n) || f.push(t ? [n, s[n]] : s[n]);
			return f
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(8),
	o = n(2),
	r = n(14),
	a = n(12),
	s = n(9)("species");
	t.exports = function(t) {
		var e = "function" == typeof o[t] ? o[t] : i[t];
		a && e && !e[s] && r.f(e, s, {
			configurable: !0,
			get: function() {
				return this
			}
		})
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		console && console.warn && console.warn(t)
	}
	function o() {
		o.init.call(this)
	}
	function r(t) {
		return void 0 === t._maxListeners ? o.defaultMaxListeners: t._maxListeners
	}
	function a(t, e, n, o) {
		var a, s, l;
		if ("function" != typeof n) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof n);
		if (s = t._events, void 0 === s ? (s = t._events = Object.create(null), t._eventsCount = 0) : (void 0 !== s.newListener && (t.emit("newListener", e, n.listener ? n.listener: n), s = t._events), l = s[e]), void 0 === l) l = s[e] = n,
		++t._eventsCount;
		else if ("function" == typeof l ? l = s[e] = o ? [n, l] : [l, n] : o ? l.unshift(n) : l.push(n), (a = r(t)) > 0 && l.length > a && !l.warned) {
			l.warned = !0;
			var u = new Error("Possible EventEmitter memory leak detected. " + l.length + " " + String(e) + " listeners added. Use emitter.setMaxListeners() to increase limit");
			u.name = "MaxListenersExceededWarning",
			u.emitter = t,
			u.type = e,
			u.count = l.length,
			i(u)
		}
		return t
	}
	function s() {
		for (var t = [], e = 0; e < arguments.length; e++) t.push(arguments[e]);
		this.fired || (this.target.removeListener(this.type, this.wrapFn), this.fired = !0, _(this.listener, this.target, t))
	}
	function l(t, e, n) {
		var i = {
			fired: !1,
			wrapFn: void 0,
			target: t,
			type: e,
			listener: n
		},
		o = s.bind(i);
		return o.listener = n,
		i.wrapFn = o,
		o
	}
	function u(t, e, n) {
		var i = t._events;
		if (void 0 === i) return [];
		var o = i[e];
		return void 0 === o ? [] : "function" == typeof o ? n ? [o.listener || o] : [o] : n ? h(o) : f(o, o.length)
	}
	function c(t) {
		var e = this._events;
		if (void 0 !== e) {
			var n = e[t];
			if ("function" == typeof n) return 1;
			if (void 0 !== n) return n.length
		}
		return 0
	}
	function f(t, e) {
		for (var n = new Array(e), i = 0; i < e; ++i) n[i] = t[i];
		return n
	}
	function d(t, e) {
		for (; e + 1 < t.length; e++) t[e] = t[e + 1];
		t.pop()
	}
	function h(t) {
		for (var e = new Array(t.length), n = 0; n < e.length; ++n) e[n] = t[n].listener || t[n];
		return e
	}
	var v, p = "object" == typeof Reflect ? Reflect: null,
	_ = p && "function" == typeof p.apply ? p.apply: function(t, e, n) {
		return Function.prototype.apply.call(t, e, n)
	};
	v = p && "function" == typeof p.ownKeys ? p.ownKeys: Object.getOwnPropertySymbols ?
	function(t) {
		return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))
	}: function(t) {
		return Object.getOwnPropertyNames(t)
	};
	var m = Number.isNaN ||
	function(t) {
		return t !== t
	};
	t.exports = o,
	o.EventEmitter = o,
	o.prototype._events = void 0,
	o.prototype._eventsCount = 0,
	o.prototype._maxListeners = void 0;
	var g = 10;
	Object.defineProperty(o, "defaultMaxListeners", {
		enumerable: !0,
		get: function() {
			return g
		},
		set: function(t) {
			if ("number" != typeof t || t < 0 || m(t)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + t + ".");
			g = t
		}
	}),
	o.init = function() {
		void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0),
		this._maxListeners = this._maxListeners || void 0
	},
	o.prototype.setMaxListeners = function(t) {
		if ("number" != typeof t || t < 0 || m(t)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + t + ".");
		return this._maxListeners = t,
		this
	},
	o.prototype.getMaxListeners = function() {
		return r(this)
	},
	o.prototype.emit = function(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e.push(arguments[n]);
		var i = "error" === t,
		o = this._events;
		if (void 0 !== o) i = i && void 0 === o.error;
		else if (!i) return ! 1;
		if (i) {
			var r;
			if (e.length > 0 && (r = e[0]), r instanceof Error) throw r;
			var a = new Error("Unhandled error." + (r ? " (" + r.message + ")": ""));
			throw a.context = r,
			a
		}
		var s = o[t];
		if (void 0 === s) return ! 1;
		if ("function" == typeof s) _(s, this, e);
		else for (var l = s.length,
		u = f(s, l), n = 0; n < l; ++n) _(u[n], this, e);
		return ! 0
	},
	o.prototype.addListener = function(t, e) {
		return a(this, t, e, !1)
	},
	o.prototype.on = o.prototype.addListener,
	o.prototype.prependListener = function(t, e) {
		return a(this, t, e, !0)
	},
	o.prototype.once = function(t, e) {
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		return this.on(t, l(this, t, e)),
		this
	},
	o.prototype.prependOnceListener = function(t, e) {
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		return this.prependListener(t, l(this, t, e)),
		this
	},
	o.prototype.removeListener = function(t, e) {
		var n, i, o, r, a;
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		if (void 0 === (i = this._events)) return this;
		if (void 0 === (n = i[t])) return this;
		if (n === e || n.listener === e) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete i[t], i.removeListener && this.emit("removeListener", t, n.listener || e));
		else if ("function" != typeof n) {
			for (o = -1, r = n.length - 1; r >= 0; r--) if (n[r] === e || n[r].listener === e) {
				a = n[r].listener,
				o = r;
				break
			}
			if (o < 0) return this;
			0 === o ? n.shift() : d(n, o),
			1 === n.length && (i[t] = n[0]),
			void 0 !== i.removeListener && this.emit("removeListener", t, a || e)
		}
		return this
	},
	o.prototype.off = o.prototype.removeListener,
	o.prototype.removeAllListeners = function(t) {
		var e, n, i;
		if (void 0 === (n = this._events)) return this;
		if (void 0 === n.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== n[t] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete n[t]),
		this;
		if (0 === arguments.length) {
			var o, r = Object.keys(n);
			for (i = 0; i < r.length; ++i)"removeListener" !== (o = r[i]) && this.removeAllListeners(o);
			return this.removeAllListeners("removeListener"),
			this._events = Object.create(null),
			this._eventsCount = 0,
			this
		}
		if ("function" == typeof(e = n[t])) this.removeListener(t, e);
		else if (void 0 !== e) for (i = e.length - 1; i >= 0; i--) this.removeListener(t, e[i]);
		return this
	},
	o.prototype.listeners = function(t) {
		return u(this, t, !0)
	},
	o.prototype.rawListeners = function(t) {
		return u(this, t, !1)
	},
	o.listenerCount = function(t, e) {
		return "function" == typeof t.listenerCount ? t.listenerCount(e) : c.call(t, e)
	},
	o.prototype.listenerCount = c,
	o.prototype.eventNames = function() {
		return this._eventsCount > 0 ? v(this._events) : []
	}
},
,
function(t, e, n) {
	"use strict";
	function i(t, e) {
		t.loadScriptTime = e,
		l[0] = t;
		for (var n in t) r.hasOwnProperty(n) && (r[n] = t[n])
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(56),
	r = n(23),
	a = 2 * Math.PI * 6378136.49,
	s = [6378136.49, a],
	l = [{},
	s],
	u = self[o] && self[o].__load;
	u && u(i),
	self.CESIUM_BASE_URL = r.cesiumStaticSrc,
	e.
default = l
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t * (Math.PI / 180)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = i
},
function(t, e, n) {
	t.exports = {
	default:
		n(127),
		__esModule: !0
	}
},
function(t, e, n) {
	n(39),
	n(33),
	t.exports = n(133)
},
function(t, e, n) {
	n(39),
	n(33),
	t.exports = n(134)
},
function(t, e) {
	t.exports = function() {}
},
function(t, e, n) {
	var i = n(18),
	o = n(52),
	r = n(132);
	t.exports = function(t) {
		return function(e, n, a) {
			var s, l = i(e),
			u = o(l.length),
			c = r(a, u);
			if (t && n != n) {
				for (; u > c;) if ((s = l[c++]) != s) return ! 0
			} else for (; u > c; c++) if ((t || c in l) && l[c] === n) return t || c || 0;
			return ! t && -1
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(51),
	o = n(38),
	r = n(42),
	a = {};
	n(19)(a, n(9)("iterator"),
	function() {
		return this
	}),
	t.exports = function(t, e, n) {
		t.prototype = i(a, {
			next: o(1, n)
		}),
		r(t, e + " Iterator")
	}
},
function(t, e, n) {
	var i = n(55),
	o = n(53);
	t.exports = function(t) {
		return function(e, n) {
			var r, a, s = String(o(e)),
			l = i(n),
			u = s.length;
			return l < 0 || l >= u ? t ? "": void 0 : (r = s.charCodeAt(l), r < 55296 || r > 56319 || l + 1 === u || (a = s.charCodeAt(l + 1)) < 56320 || a > 57343 ? t ? s.charAt(l) : r: t ? s.slice(l, l + 2) : a - 56320 + (r - 55296 << 10) + 65536)
		}
	}
},
function(t, e, n) {
	var i = n(55),
	o = Math.max,
	r = Math.min;
	t.exports = function(t, e) {
		return t = i(t),
		t < 0 ? o(t + e, 0) : r(t, e)
	}
},
function(t, e, n) {
	var i = n(13),
	o = n(65);
	t.exports = n(2).getIterator = function(t) {
		var e = o(t);
		if ("function" != typeof e) throw TypeError(t + " is not iterable!");
		return i(e.call(t))
	}
},
function(t, e, n) {
	var i = n(49),
	o = n(9)("iterator"),
	r = n(26);
	t.exports = n(2).isIterable = function(t) {
		var e = Object(t);
		return void 0 !== e[o] || "@@iterator" in e || r.hasOwnProperty(i(e))
	}
},
function(t, e, n) {
	"use strict";
	var i = n(128),
	o = n(108),
	r = n(26),
	a = n(18);
	t.exports = n(72)(Array, "Array",
	function(t, e) {
		this._t = a(t),
		this._i = 0,
		this._k = e
	},
	function() {
		var t = this._t,
		e = this._k,
		n = this._i++;
		return ! t || n >= t.length ? (this._t = void 0, o(1)) : "keys" == e ? o(0, n) : "values" == e ? o(0, t[n]) : o(0, [n, t[n]])
	},
	"values"),
	r.Arguments = r.Array,
	i("keys"),
	i("values"),
	i("entries")
},
function(t, e, n) {
	var i = n(245);
	t.exports = function(t) {
		return Object(i(t))
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = {
		QMAPI_style: "QMAPI__style__",
		QMAPI_style_indoor: "QMAPI__style__indoor__",
		QMAPI_poi_icon: "QMAPI__poi__icon",
		QMAPI_poi_icon_json: "QMAPI__poi__icon__json",
		QMAPI_indoor_buffer: "QMAPI__indoor__buffer__",
		QMAPI_indoor_index: "QMAPI__indoor__index__",
		VECTOR_SOURCE_ID: "vector_source",
		QMAPI_oversea: "QMAPI__oversea"
	};
	e.IMAGE_DISPLAY = {
		ORIGIN: 0,
		SCALE: 1,
		REPEAT: 2
	},
	e.VIEW_MODE = {
		MAP_2D: "2D",
		MAP_3D: "3D",
		SPHERE: "SPHERE"
	};
	e.
default = i
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = {
		init: function() {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser",
			this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version",
			this.OS = this.searchString(this.dataOS) || "an unknown OS"
		},
		searchString: function(t) {
			for (var e = 0; e < t.length; e++) {
				var n = t[e].string,
				i = t[e].prop;
				if (this.versionSearchString = t[e].versionSearch || t[e].identity, n) {
					if ( - 1 !== n.indexOf(t[e].subString)) return t[e].identity
				} else if (i) return t[e].identity
			}
		},
		searchVersion: function(t) {
			var e = t.indexOf(this.versionSearchString);
			if ( - 1 !== e) return parseFloat(t.substring(e + this.versionSearchString.length + 1))
		},
		dataBrowser: [{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{
			string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: self.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}],
		dataOS: [{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.userAgent,
			subString: "iPhone",
			identity: "iPhone"
		},
		{
			string: navigator.userAgent,
			subString: "Android",
			identity: "Android"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}]
	};
	i.init(),
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t - (0, a.
	default)(t)
	}
	function o(t) {
		var e = (0, a.
	default)(t);
		return {
			high:
			e,
			low: t - e
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(401),
	a = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.fp64LowPart = i,
	e.splitLatLngNumber = o
},
function(t, e, n) {
	t.exports = {
	default:
		n(224),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(163),
		__esModule: !0
	}
},
function(t, e) {
	var n;
	n = function() {
		return this
	} ();
	try {
		n = n || Function("return this")() || (0, eval)("this")
	} catch(t) {
		"object" == typeof window && (n = window)
	}
	t.exports = n
},
function(t, e, n) {
	"use strict";
	function i() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : a.GROUND,
		e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
		return 1e4 * t + (0, r.clamp)(e, 0, 9999)
	}
	function o() {
		return 1e4 * a.TEXT
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.LAYER_LEVEL = void 0,
	e.getRank = i,
	e.getNAALine = o;
	var r = n(10),
	a = e.LAYER_LEVEL = {
		UNDERGROUND: 0,
		BASE: 1,
		GROUND: 2,
		BUILDING: 3,
		OVERLAY_AA: 4,
		POST_PROCESS: 5,
		TEXT: 6,
		OVERLAY_NAA: 7
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return "&random=" + ( + new Date).toString(36)
	}
	function r(t) { (0, b.getImage)(t + o())
	}
	function a(t) {
		if (self.window) { (new Image).src = t + o()
		}
	}
	function s(t, e, n) {
		var i = S[t];
		return i || (i = new w({
			id: t,
			path: e
		})),
		i.on("send",
		function() {
			i.receiveData(n())
		}),
		S[t]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(4),
	m = i(_);
	e.sendByAjax = r,
	e.sendOnce = a,
	e.sendPeriodically = s;
	var g = n(120),
	y = n(10),
	x = i(y),
	b = n(79),
	S = {},
	w = function(t) {
		function e(t) {
			var n = t.id,
			i = t.path; (0, f.
		default)(this, e);
			var o = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this));
			return o.id = n,
			o.path = i,
			o.dataList = [],
			setInterval(function() {
				o.send()
			},
			5e3),
			window.addEventListener("beforeunload",
			function() {
				o.send()
			}),
			o
		}
		return (0, m.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "receiveData",
			value: function(t) {
				var e = this;
				x.
			default.forIn(t,
				function(t, n) {
					e.dataList.push(t + "=" + n)
				})
			}
		},
		{
			key: "send",
			value: function() {
				if (this.emit("send"), this.dataList.length > 0) {
					var t = this.path + ( - 1 === this.path.indexOf("?") ? "?": "&") + this.dataList.join("&");
					this.dataList = [],
					a(t)
				}
			}
		}]),
		e
	} (g.EventEmitter)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return !! (r() && a() && s() && l() && u() && c() && f() && d())
	}
	function r() {
		return "undefined" != typeof window && "undefined" != typeof document
	}
	function a() {
		return Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray
	}
	function s() {
		return Function.prototype && Function.prototype.bind
	}
	function l() {
		return F.
	default && D.
	default && N.
	default && R.
	default && M.
	default && k.
	default && P.
	default && T.
	default && w.
	default && b.
	default && y.
	default && m.
	default && p.
	default
	}
	function u() {
		return "JSON" in window && "parse" in JSON && "stringify" in JSON
	}
	function c() {
		return "Worker" in window
	}
	function f() {
		return "Uint8ClampedArray" in window
	}
	function d() {
		var t = V.context || null;
		if (!t) {
			t = h(),
			V.context = t;
			var e = t.getExtension("WEBGL_debug_renderer_info"),
			n = t.getParameter(e.UNMASKED_VENDOR_WEBGL),
			i = t.getParameter(e.UNMASKED_RENDERER_WEBGL);
			V.vendor = n,
			V.renderer = i,
			V.isIndependentDisplayCard = !/(\bHD\b)|(\bUHD\b)/.test(i)
		}
		return V
	}
	function h() {
		var t = document.createElement("canvas"),
		e = (0, D.
	default)(o.webGLContextAttributes);
		return t.getContext("webgl", e) || t.getContext("experimental-webgl", e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var v = n(153),
	p = i(v),
	_ = n(141),
	m = i(_),
	g = n(154),
	y = i(g),
	x = n(114),
	b = i(x),
	S = n(75),
	w = i(S),
	E = n(116),
	T = i(E),
	A = n(150),
	P = i(A),
	I = n(151),
	k = i(I),
	L = n(152),
	M = i(L),
	C = n(149),
	R = i(C),
	B = n(3),
	N = i(B),
	O = n(77),
	D = i(O),
	z = n(17),
	F = i(z);
	e.isSupported = o,
	e.isWebGLSupportedCached = d;
	var V = {};
	o.webGLContextAttributes = {
		antialias: !1,
		alpha: !0,
		stencil: !0,
		depth: !0
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = function() {
		function t(e, n, i, o) { (0, r.
		default)(this, t),
			this.cx = 3 * e,
			this.bx = 3 * (i - e) - this.cx,
			this.ax = 1 - this.cx - this.bx,
			this.cy = 3 * n,
			this.by = 3 * (o - n) - this.cy,
			this.ay = 1 - this.cy - this.by,
			this.p1x = e,
			this.p1y = n,
			this.p2x = i,
			this.p2y = o
		}
		return (0, s.
	default)(t, [{
			key: "sampleCurveX",
			value: function(t) {
				return ((this.ax * t + this.bx) * t + this.cx) * t
			}
		},
		{
			key: "sampleCurveY",
			value: function(t) {
				return ((this.ay * t + this.by) * t + this.cy) * t
			}
		},
		{
			key: "sampleCurveDerivativeX",
			value: function(t) {
				return (3 * this.ax * t + 2 * this.bx) * t + this.cx
			}
		},
		{
			key: "solveCurveX",
			value: function(t, e) {
				void 0 === e && (e = 1e-6);
				var n = void 0,
				i = void 0,
				o = void 0,
				r = void 0,
				a = void 0;
				for (o = t, a = 0; a < 8; a++) {
					if (r = this.sampleCurveX(o) - t, Math.abs(r) < e) return o;
					var s = this.sampleCurveDerivativeX(o);
					if (Math.abs(s) < 1e-6) break;
					o -= r / s
				}
				if (n = 0, i = 1, (o = t) < n) return n;
				if (o > i) return i;
				for (; n < i;) {
					if (r = this.sampleCurveX(o), Math.abs(r - t) < e) return o;
					t > r ? n = o: i = o,
					o = .5 * (i - n) + n
				}
				return o
			}
		},
		{
			key: "solve",
			value: function(t, e) {
				return this.sampleCurveY(this.solveCurveX(t, e))
			}
		}]),
		t
	} ();
	t.exports = l
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t / (Math.PI / 180)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = i
},
function(t, e, n) {
	t.exports = {
	default:
		n(307),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(165),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(167),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(168),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(169),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(171),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(172),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(173),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(175),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(176),
		__esModule: !0
	}
},
function(t, e, n) {
	n(33),
	n(184),
	t.exports = n(2).Array.from
},
function(t, e, n) {
	n(185);
	var i = n(2).Object;
	t.exports = function(t, e) {
		return i.create(t, e)
	}
},
function(t, e, n) {
	n(186);
	var i = n(2).Object;
	t.exports = function(t, e) {
		return i.defineProperties(t, e)
	}
},
function(t, e, n) {
	n(187);
	var i = n(2).Object;
	t.exports = function(t, e, n) {
		return i.defineProperty(t, e, n)
	}
},
function(t, e, n) {
	n(201),
	t.exports = n(2).Object.entries
},
function(t, e, n) {
	n(188),
	t.exports = n(2).Object.freeze
},
function(t, e, n) {
	n(189);
	var i = n(2).Object;
	t.exports = function(t, e) {
		return i.getOwnPropertyDescriptor(t, e)
	}
},
function(t, e, n) {
	n(190);
	var i = n(2).Object;
	t.exports = function(t) {
		return i.getOwnPropertyNames(t)
	}
},
function(t, e, n) {
	n(191),
	t.exports = n(2).Object.getPrototypeOf
},
function(t, e, n) {
	n(192),
	t.exports = n(2).Object.isExtensible
},
function(t, e, n) {
	n(193),
	t.exports = n(2).Object.isFrozen
},
function(t, e, n) {
	n(194),
	t.exports = n(2).Object.isSealed
},
function(t, e, n) {
	n(195),
	t.exports = n(2).Object.keys
},
function(t, e, n) {
	n(196),
	t.exports = n(2).Object.preventExtensions
},
function(t, e, n) {
	n(197),
	t.exports = n(2).Object.seal
},
function(t, e, n) {
	n(198),
	t.exports = n(2).Object.setPrototypeOf
},
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(199),
	n(202),
	n(203),
	t.exports = n(2).Promise
},
function(t, e, n) {
	n(200),
	n(73),
	n(204),
	n(205),
	t.exports = n(2).Symbol
},
function(t, e, n) {
	n(33),
	n(39),
	t.exports = n(70).f("iterator")
},
function(t, e, n) {
	"use strict";
	var i = n(14),
	o = n(38);
	t.exports = function(t, e, n) {
		e in t ? i.f(t, e, o(0, n)) : t[e] = n
	}
},
function(t, e, n) {
	var i = n(34),
	o = n(76),
	r = n(45);
	t.exports = function(t) {
		var e = i(t),
		n = o.f;
		if (n) for (var a, s = n(t), l = r.f, u = 0; s.length > u;) l.call(t, a = s[u++]) && e.push(a);
		return e
	}
},
function(t, e) {
	t.exports = function(t, e, n) {
		var i = void 0 === n;
		switch (e.length) {
		case 0:
			return i ? t() : t.call(n);
		case 1:
			return i ? t(e[0]) : t.call(n, e[0]);
		case 2:
			return i ? t(e[0], e[1]) : t.call(n, e[0], e[1]);
		case 3:
			return i ? t(e[0], e[1], e[2]) : t.call(n, e[0], e[1], e[2]);
		case 4:
			return i ? t(e[0], e[1], e[2], e[3]) : t.call(n, e[0], e[1], e[2], e[3])
		}
		return t.apply(n, e)
	}
},
function(t, e, n) {
	var i = n(8),
	o = n(101).set,
	r = i.MutationObserver || i.WebKitMutationObserver,
	a = i.process,
	s = i.Promise,
	l = "process" == n(36)(a);
	t.exports = function() {
		var t, e, n, u = function() {
			var i, o;
			for (l && (i = a.domain) && i.exit(); t;) {
				o = t.fn,
				t = t.next;
				try {
					o()
				} catch(i) {
					throw t ? n() : e = void 0,
					i
				}
			}
			e = void 0,
			i && i.enter()
		};
		if (l) n = function() {
			a.nextTick(u)
		};
		else if (!r || i.navigator && i.navigator.standalone) if (s && s.resolve) {
			var c = s.resolve(void 0);
			n = function() {
				c.then(u)
			}
		} else n = function() {
			o.call(i, u)
		};
		else {
			var f = !0,
			d = document.createTextNode("");
			new r(u).observe(d, {
				characterData: !0
			}),
			n = function() {
				d.data = f = !f
			}
		}
		return function(i) {
			var o = {
				fn: i,
				next: void 0
			};
			e && (e.next = o),
			t || (t = o, n()),
			e = o
		}
	}
},
function(t, e, n) {
	var i = n(7),
	o = n(13),
	r = function(t, e) {
		if (o(t), !i(e) && null !== e) throw TypeError(e + ": can't set as prototype!")
	};
	t.exports = {
		set: Object.setPrototypeOf || ("__proto__" in {} ?
		function(t, e, i) {
			try {
				i = n(22)(Function.call, n(68).f(Object.prototype, "__proto__").set, 2),
				i(t, []),
				e = !(t instanceof Array)
			} catch(t) {
				e = !0
			}
			return function(t, n) {
				return r(t, n),
				e ? t.__proto__ = n: i(t, n),
				t
			}
		} ({},
		!1) : void 0),
		check: r
	}
},
function(t, e, n) {
	var i = n(8),
	o = i.navigator;
	t.exports = o && o.userAgent || ""
},
function(t, e, n) {
	var i = n(7);
	t.exports = function(t, e) {
		if (!i(t) || t._t !== e) throw TypeError("Incompatible receiver, " + e + " required!");
		return t
	}
},
function(t, e, n) {
	"use strict";
	var i = n(22),
	o = n(6),
	r = n(31),
	a = n(93),
	s = n(92),
	l = n(52),
	u = n(177),
	c = n(65);
	o(o.S + o.F * !n(94)(function(t) {
		Array.from(t)
	}), "Array", {
		from: function(t) {
			var e, n, o, f, d = r(t),
			h = "function" == typeof this ? this: Array,
			v = arguments.length,
			p = v > 1 ? arguments[1] : void 0,
			_ = void 0 !== p,
			m = 0,
			g = c(d);
			if (_ && (p = i(p, v > 2 ? arguments[2] : void 0, 2)), void 0 == g || h == Array && s(g)) for (e = l(d.length), n = new h(e); e > m; m++) u(n, m, _ ? p(d[m], m) : d[m]);
			else for (f = g.call(d), n = new h; ! (o = f.next()).done; m++) u(n, m, _ ? a(f, p, [o.value, m], !0) : o.value);
			return n.length = m,
			n
		}
	})
},
function(t, e, n) {
	var i = n(6);
	i(i.S, "Object", {
		create: n(51)
	})
},
function(t, e, n) {
	var i = n(6);
	i(i.S + i.F * !n(12), "Object", {
		defineProperties: n(85)
	})
},
function(t, e, n) {
	var i = n(6);
	i(i.S + i.F * !n(12), "Object", {
		defineProperty: n(14).f
	})
},
function(t, e, n) {
	var i = n(7),
	o = n(40).onFreeze;
	n(15)("freeze",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(18),
	o = n(68).f;
	n(15)("getOwnPropertyDescriptor",
	function() {
		return function(t, e) {
			return o(i(t), e)
		}
	})
},
function(t, e, n) {
	n(15)("getOwnPropertyNames",
	function() {
		return n(95).f
	})
},
function(t, e, n) {
	var i = n(31),
	o = n(86);
	n(15)("getPrototypeOf",
	function() {
		return function(t) {
			return o(i(t))
		}
	})
},
function(t, e, n) {
	var i = n(7);
	n(15)("isExtensible",
	function(t) {
		return function(e) {
			return !! i(e) && (!t || t(e))
		}
	})
},
function(t, e, n) {
	var i = n(7);
	n(15)("isFrozen",
	function(t) {
		return function(e) {
			return ! i(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var i = n(7);
	n(15)("isSealed",
	function(t) {
		return function(e) {
			return ! i(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var i = n(31),
	o = n(34);
	n(15)("keys",
	function() {
		return function(t) {
			return o(i(t))
		}
	})
},
function(t, e, n) {
	var i = n(7),
	o = n(40).onFreeze;
	n(15)("preventExtensions",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(7),
	o = n(40).onFreeze;
	n(15)("seal",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(6);
	i(i.S, "Object", {
		setPrototypeOf: n(181).set
	})
},
function(t, e, n) {
	"use strict";
	var i, o, r, a, s = n(37),
	l = n(8),
	u = n(22),
	c = n(49),
	f = n(6),
	d = n(7),
	h = n(44),
	v = n(91),
	p = n(71),
	_ = n(100),
	m = n(101).set,
	g = n(180)(),
	y = n(67),
	x = n(97),
	b = n(182),
	S = n(98),
	w = l.TypeError,
	E = l.process,
	T = E && E.versions,
	A = T && T.v8 || "",
	P = l.Promise,
	I = "process" == c(E),
	k = function() {},
	L = o = y.f,
	M = !!
	function() {
		try {
			var t = P.resolve(1),
			e = (t.constructor = {})[n(9)("species")] = function(t) {
				t(k, k)
			};
			return (I || "function" == typeof PromiseRejectionEvent) && t.then(k) instanceof e && 0 !== A.indexOf("6.6") && -1 === b.indexOf("Chrome/66")
		} catch(t) {}
	} (),
	C = function(t) {
		var e;
		return ! (!d(t) || "function" != typeof(e = t.then)) && e
	},
	R = function(t, e) {
		if (!t._n) {
			t._n = !0;
			var n = t._c;
			g(function() {
				for (var i = t._v,
				o = 1 == t._s,
				r = 0; n.length > r;) !
				function(e) {
					var n, r, a, s = o ? e.ok: e.fail,
					l = e.resolve,
					u = e.reject,
					c = e.domain;
					try {
						s ? (o || (2 == t._h && O(t), t._h = 1), !0 === s ? n = i: (c && c.enter(), n = s(i), c && (c.exit(), a = !0)), n === e.promise ? u(w("Promise-chain cycle")) : (r = C(n)) ? r.call(n, l, u) : l(n)) : u(i)
					} catch(t) {
						c && !a && c.exit(),
						u(t)
					}
				} (n[r++]);
				t._c = [],
				t._n = !1,
				e && !t._h && B(t)
			})
		}
	},
	B = function(t) {
		m.call(l,
		function() {
			var e, n, i, o = t._v,
			r = N(t);
			if (r && (e = x(function() {
				I ? E.emit("unhandledRejection", o, t) : (n = l.onunhandledrejection) ? n({
					promise: t,
					reason: o
				}) : (i = l.console) && i.error && i.error("Unhandled promise rejection", o)
			}), t._h = I || N(t) ? 2 : 1), t._a = void 0, r && e.e) throw e.v
		})
	},
	N = function(t) {
		return 1 !== t._h && 0 === (t._a || t._c).length
	},
	O = function(t) {
		m.call(l,
		function() {
			var e;
			I ? E.emit("rejectionHandled", t) : (e = l.onrejectionhandled) && e({
				promise: t,
				reason: t._v
			})
		})
	},
	D = function(t) {
		var e = this;
		e._d || (e._d = !0, e = e._w || e, e._v = t, e._s = 2, e._a || (e._a = e._c.slice()), R(e, !0))
	},
	z = function(t) {
		var e, n = this;
		if (!n._d) {
			n._d = !0,
			n = n._w || n;
			try {
				if (n === t) throw w("Promise can't be resolved itself"); (e = C(t)) ? g(function() {
					var i = {
						_w: n,
						_d: !1
					};
					try {
						e.call(t, u(z, i, 1), u(D, i, 1))
					} catch(t) {
						D.call(i, t)
					}
				}) : (n._v = t, n._s = 1, R(n, !1))
			} catch(t) {
				D.call({
					_w: n,
					_d: !1
				},
				t)
			}
		}
	};
	M || (P = function(t) {
		v(this, P, "Promise", "_h"),
		h(t),
		i.call(this);
		try {
			t(u(z, this, 1), u(D, this, 1))
		} catch(t) {
			D.call(this, t)
		}
	},
	i = function(t) {
		this._c = [],
		this._a = void 0,
		this._s = 0,
		this._d = !1,
		this._v = void 0,
		this._h = 0,
		this._n = !1
	},
	i.prototype = n(99)(P.prototype, {
		then: function(t, e) {
			var n = L(_(this, P));
			return n.ok = "function" != typeof t || t,
			n.fail = "function" == typeof e && e,
			n.domain = I ? E.domain: void 0,
			this._c.push(n),
			this._a && this._a.push(n),
			this._s && R(this, !1),
			n.promise
		},
		catch: function(t) {
			return this.then(void 0, t)
		}
	}), r = function() {
		var t = new i;
		this.promise = t,
		this.resolve = u(z, t, 1),
		this.reject = u(D, t, 1)
	},
	y.f = L = function(t) {
		return t === P || t === a ? new r(t) : o(t)
	}),
	f(f.G + f.W + f.F * !M, {
		Promise: P
	}),
	n(42)(P, "Promise"),
	n(119)("Promise"),
	a = n(2).Promise,
	f(f.S + f.F * !M, "Promise", {
		reject: function(t) {
			var e = L(this);
			return (0, e.reject)(t),
			e.promise
		}
	}),
	f(f.S + f.F * (s || !M), "Promise", {
		resolve: function(t) {
			return S(s && this === a ? P: this, t)
		}
	}),
	f(f.S + f.F * !(M && n(94)(function(t) {
		P.all(t).
		catch(k)
	})), "Promise", {
		all: function(t) {
			var e = this,
			n = L(e),
			i = n.resolve,
			o = n.reject,
			r = x(function() {
				var n = [],
				r = 0,
				a = 1;
				p(t, !1,
				function(t) {
					var s = r++,
					l = !1;
					n.push(void 0),
					a++,
					e.resolve(t).then(function(t) {
						l || (l = !0, n[s] = t, --a || i(n))
					},
					o)
				}),
				--a || i(n)
			});
			return r.e && o(r.v),
			n.promise
		},
		race: function(t) {
			var e = this,
			n = L(e),
			i = n.reject,
			o = x(function() {
				p(t, !1,
				function(t) {
					e.resolve(t).then(n.resolve, i)
				})
			});
			return o.e && i(o.v),
			n.promise
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(8),
	o = n(21),
	r = n(12),
	a = n(6),
	s = n(81),
	l = n(40).KEY,
	u = n(30),
	c = n(59),
	f = n(42),
	d = n(46),
	h = n(9),
	v = n(70),
	p = n(69),
	_ = n(178),
	m = n(117),
	g = n(13),
	y = n(7),
	x = n(31),
	b = n(18),
	S = n(64),
	w = n(38),
	E = n(51),
	T = n(95),
	A = n(68),
	P = n(76),
	I = n(14),
	k = n(34),
	L = A.f,
	M = I.f,
	C = T.f,
	R = i.Symbol,
	B = i.JSON,
	N = B && B.stringify,
	O = h("_hidden"),
	D = h("toPrimitive"),
	z = {}.propertyIsEnumerable,
	F = c("symbol-registry"),
	V = c("symbols"),
	Y = c("op-symbols"),
	U = Object.prototype,
	j = "function" == typeof R && !!P.f,
	G = i.QObject,
	Z = !G || !G.prototype || !G.prototype.findChild,
	H = r && u(function() {
		return 7 != E(M({},
		"a", {
			get: function() {
				return M(this, "a", {
					value: 7
				}).a
			}
		})).a
	}) ?
	function(t, e, n) {
		var i = L(U, e);
		i && delete U[e],
		M(t, e, n),
		i && t !== U && M(U, e, i)
	}: M,
	W = function(t) {
		var e = V[t] = E(R.prototype);
		return e._k = t,
		e
	},
	X = j && "symbol" == typeof R.iterator ?
	function(t) {
		return "symbol" == typeof t
	}: function(t) {
		return t instanceof R
	},
	Q = function(t, e, n) {
		return t === U && Q(Y, e, n),
		g(t),
		e = S(e, !0),
		g(n),
		o(V, e) ? (n.enumerable ? (o(t, O) && t[O][e] && (t[O][e] = !1), n = E(n, {
			enumerable: w(0, !1)
		})) : (o(t, O) || M(t, O, w(1, {})), t[O][e] = !0), H(t, e, n)) : M(t, e, n)
	},
	q = function(t, e) {
		g(t);
		for (var n, i = _(e = b(e)), o = 0, r = i.length; r > o;) Q(t, n = i[o++], e[n]);
		return t
	},
	K = function(t, e) {
		return void 0 === e ? E(t) : q(E(t), e)
	},
	J = function(t) {
		var e = z.call(this, t = S(t, !0));
		return ! (this === U && o(V, t) && !o(Y, t)) && (!(e || !o(this, t) || !o(V, t) || o(this, O) && this[O][t]) || e)
	},
	$ = function(t, e) {
		if (t = b(t), e = S(e, !0), t !== U || !o(V, e) || o(Y, e)) {
			var n = L(t, e);
			return ! n || !o(V, e) || o(t, O) && t[O][e] || (n.enumerable = !0),
			n
		}
	},
	tt = function(t) {
		for (var e, n = C(b(t)), i = [], r = 0; n.length > r;) o(V, e = n[r++]) || e == O || e == l || i.push(e);
		return i
	},
	et = function(t) {
		for (var e, n = t === U,
		i = C(n ? Y: b(t)), r = [], a = 0; i.length > a;) ! o(V, e = i[a++]) || n && !o(U, e) || r.push(V[e]);
		return r
	};
	j || (R = function() {
		if (this instanceof R) throw TypeError("Symbol is not a constructor!");
		var t = d(arguments.length > 0 ? arguments[0] : void 0),
		e = function(n) {
			this === U && e.call(Y, n),
			o(this, O) && o(this[O], t) && (this[O][t] = !1),
			H(this, t, w(1, n))
		};
		return r && Z && H(U, t, {
			configurable: !0,
			set: e
		}),
		W(t)
	},
	s(R.prototype, "toString",
	function() {
		return this._k
	}), A.f = $, I.f = Q, n(96).f = T.f = tt, n(45).f = J, P.f = et, r && !n(37) && s(U, "propertyIsEnumerable", J, !0), v.f = function(t) {
		return W(h(t))
	}),
	a(a.G + a.W + a.F * !j, {
		Symbol: R
	});
	for (var nt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), it = 0; nt.length > it;) h(nt[it++]);
	for (var ot = k(h.store), rt = 0; ot.length > rt;) p(ot[rt++]);
	a(a.S + a.F * !j, "Symbol", {
		for: function(t) {
			return o(F, t += "") ? F[t] : F[t] = R(t)
		},
		keyFor: function(t) {
			if (!X(t)) throw TypeError(t + " is not a symbol!");
			for (var e in F) if (F[e] === t) return e
		},
		useSetter: function() {
			Z = !0
		},
		useSimple: function() {
			Z = !1
		}
	}),
	a(a.S + a.F * !j, "Object", {
		create: K,
		defineProperty: Q,
		defineProperties: q,
		getOwnPropertyDescriptor: $,
		getOwnPropertyNames: tt,
		getOwnPropertySymbols: et
	});
	var at = u(function() {
		P.f(1)
	});
	a(a.S + a.F * at, "Object", {
		getOwnPropertySymbols: function(t) {
			return P.f(x(t))
		}
	}),
	B && a(a.S + a.F * (!j || u(function() {
		var t = R();
		return "[null]" != N([t]) || "{}" != N({
			a: t
		}) || "{}" != N(Object(t))
	})), "JSON", {
		stringify: function(t) {
			for (var e, n, i = [t], o = 1; arguments.length > o;) i.push(arguments[o++]);
			if (n = e = i[1], (y(e) || void 0 !== t) && !X(t)) return m(e) || (e = function(t, e) {
				if ("function" == typeof n && (e = n.call(this, t, e)), !X(e)) return e
			}),
			i[1] = e,
			N.apply(B, i)
		}
	}),
	R.prototype[D] || n(19)(R.prototype, D, R.prototype.valueOf),
	f(R, "Symbol"),
	f(Math, "Math", !0),
	f(i.JSON, "JSON", !0)
},
function(t, e, n) {
	var i = n(6),
	o = n(118)(!0);
	i(i.S, "Object", {
		entries: function(t) {
			return o(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(6),
	o = n(2),
	r = n(8),
	a = n(100),
	s = n(98);
	i(i.P + i.R, "Promise", {
		finally: function(t) {
			var e = a(this, o.Promise || r.Promise),
			n = "function" == typeof t;
			return this.then(n ?
			function(n) {
				return s(e, t()).then(function() {
					return n
				})
			}: t, n ?
			function(n) {
				return s(e, t()).then(function() {
					throw n
				})
			}: t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(6),
	o = n(67),
	r = n(97);
	i(i.S, "Promise", {
		try: function(t) {
			var e = o.f(this),
			n = r(t);
			return (n.e ? e.reject: e.resolve)(n.v),
			e.promise
		}
	})
},
function(t, e, n) {
	n(69)("asyncIterator")
},
function(t, e, n) {
	n(69)("observable")
},
function(t, e, n) {
	var i = n(62),
	o = n(215),
	r = n(214),
	a = n(270)("src"),
	s = n(830),
	l = ("" + s).split("toString");
	n(102).inspectSource = function(t) {
		return s.call(t)
	},
	(t.exports = function(t, e, n, s) {
		var u = "function" == typeof n;
		u && (r(n, "name") || o(n, "name", e)),
		t[e] !== n && (u && (r(n, a) || o(n, a, t[e] ? "" + t[e] : l.join(String(e)))), t === i ? t[e] = n: s ? t[e] ? t[e] = n: o(t, e, n) : (delete t[e], o(t, e, n)))
	})(Function.prototype, "toString",
	function() {
		return "function" == typeof this && this[a] || s.call(this)
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(61),
	r = n(245),
	a = /"/g,
	s = function(t, e, n, i) {
		var o = String(r(t)),
		s = "<" + e;
		return "" !== n && (s += " " + n + '="' + String(i).replace(a, "&quot;") + '"'),
		s + ">" + o + "</" + e + ">"
	};
	t.exports = function(t, e) {
		var n = {};
		n[t] = e(s),
		i(i.P + i.F * o(function() {
			var e = "" [t]('"');
			return e !== e.toLowerCase() || e.split('"').length > 3
		}), "String", n)
	}
},
function(t, e, n) { (function(e) {
		var n, n;
		/*!
    localForage -- Offline Storage, Improved
    Version 1.7.3
    https://localforage.github.io/localForage
    (c) 2013-2017 Mozilla, Apache License 2.0
*/
		!
		function(e) {
			t.exports = e()
		} (function() {
			return function t(e, i, o) {
				function r(s, l) {
					if (!i[s]) {
						if (!e[s]) {
							var u = "function" == typeof n && n;
							if (!l && u) return n(s, !0);
							if (a) return a(s, !0);
							var c = new Error("Cannot find module '" + s + "'");
							throw c.code = "MODULE_NOT_FOUND",
							c
						}
						var f = i[s] = {
							exports: {}
						};
						e[s][0].call(f.exports,
						function(t) {
							var n = e[s][1][t];
							return r(n || t)
						},
						f, f.exports, t, e, i, o)
					}
					return i[s].exports
				}
				for (var a = "function" == typeof n && n,
				s = 0; s < o.length; s++) r(o[s]);
				return r
			} ({
				1 : [function(t, n, i) { (function(t) {
						"use strict";
						function e() {
							c = !0;
							for (var t, e, n = f.length; n;) {
								for (e = f, f = [], t = -1; ++t < n;) e[t]();
								n = f.length
							}
							c = !1
						}
						function i(t) {
							1 !== f.push(t) || c || o()
						}
						var o, r = t.MutationObserver || t.WebKitMutationObserver;
						if (r) {
							var a = 0,
							s = new r(e),
							l = t.document.createTextNode("");
							s.observe(l, {
								characterData: !0
							}),
							o = function() {
								l.data = a = ++a % 2
							}
						} else if (t.setImmediate || void 0 === t.MessageChannel) o = "document" in t && "onreadystatechange" in t.document.createElement("script") ?
						function() {
							var n = t.document.createElement("script");
							n.onreadystatechange = function() {
								e(),
								n.onreadystatechange = null,
								n.parentNode.removeChild(n),
								n = null
							},
							t.document.documentElement.appendChild(n)
						}: function() {
							setTimeout(e, 0)
						};
						else {
							var u = new t.MessageChannel;
							u.port1.onmessage = e,
							o = function() {
								u.port2.postMessage(0)
							}
						}
						var c, f = [];
						n.exports = i
					}).call(this, void 0 !== e ? e: "undefined" != typeof self ? self: "undefined" != typeof window ? window: {})
				},
				{}],
				2 : [function(t, e, n) {
					"use strict";
					function i() {}
					function o(t) {
						if ("function" != typeof t) throw new TypeError("resolver must be a function");
						this.state = g,
						this.queue = [],
						this.outcome = void 0,
						t !== i && l(this, t)
					}
					function r(t, e, n) {
						this.promise = t,
						"function" == typeof e && (this.onFulfilled = e, this.callFulfilled = this.otherCallFulfilled),
						"function" == typeof n && (this.onRejected = n, this.callRejected = this.otherCallRejected)
					}
					function a(t, e, n) {
						v(function() {
							var i;
							try {
								i = e(n)
							} catch(e) {
								return p.reject(t, e)
							}
							i === t ? p.reject(t, new TypeError("Cannot resolve promise with itself")) : p.resolve(t, i)
						})
					}
					function s(t) {
						var e = t && t.then;
						if (t && ("object" == typeof t || "function" == typeof t) && "function" == typeof e) return function() {
							e.apply(t, arguments)
						}
					}
					function l(t, e) {
						function n(e) {
							r || (r = !0, p.reject(t, e))
						}
						function i(e) {
							r || (r = !0, p.resolve(t, e))
						}
						function o() {
							e(i, n)
						}
						var r = !1,
						a = u(o);
						"error" === a.status && n(a.value)
					}
					function u(t, e) {
						var n = {};
						try {
							n.value = t(e),
							n.status = "success"
						} catch(t) {
							n.status = "error",
							n.value = t
						}
						return n
					}
					function c(t) {
						return t instanceof this ? t: p.resolve(new this(i), t)
					}
					function f(t) {
						var e = new this(i);
						return p.reject(e, t)
					}
					function d(t) {
						var e = this;
						if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(new TypeError("must be an array"));
						var n = t.length,
						o = !1;
						if (!n) return this.resolve([]);
						for (var r = new Array(n), a = 0, s = -1, l = new this(i); ++s < n;) !
						function(t, i) {
							function s(t) {
								r[i] = t,
								++a !== n || o || (o = !0, p.resolve(l, r))
							}
							e.resolve(t).then(s,
							function(t) {
								o || (o = !0, p.reject(l, t))
							})
						} (t[s], s);
						return l
					}
					function h(t) {
						var e = this;
						if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(new TypeError("must be an array"));
						var n = t.length,
						o = !1;
						if (!n) return this.resolve([]);
						for (var r = -1,
						a = new this(i); ++r < n;) !
						function(t) {
							e.resolve(t).then(function(t) {
								o || (o = !0, p.resolve(a, t))
							},
							function(t) {
								o || (o = !0, p.reject(a, t))
							})
						} (t[r]);
						return a
					}
					var v = t(1),
					p = {},
					_ = ["REJECTED"],
					m = ["FULFILLED"],
					g = ["PENDING"];
					e.exports = o,
					o.prototype.
					catch = function(t) {
						return this.then(null, t)
					},
					o.prototype.then = function(t, e) {
						if ("function" != typeof t && this.state === m || "function" != typeof e && this.state === _) return this;
						var n = new this.constructor(i);
						if (this.state !== g) {
							a(n, this.state === m ? t: e, this.outcome)
						} else this.queue.push(new r(n, t, e));
						return n
					},
					r.prototype.callFulfilled = function(t) {
						p.resolve(this.promise, t)
					},
					r.prototype.otherCallFulfilled = function(t) {
						a(this.promise, this.onFulfilled, t)
					},
					r.prototype.callRejected = function(t) {
						p.reject(this.promise, t)
					},
					r.prototype.otherCallRejected = function(t) {
						a(this.promise, this.onRejected, t)
					},
					p.resolve = function(t, e) {
						var n = u(s, e);
						if ("error" === n.status) return p.reject(t, n.value);
						var i = n.value;
						if (i) l(t, i);
						else {
							t.state = m,
							t.outcome = e;
							for (var o = -1,
							r = t.queue.length; ++o < r;) t.queue[o].callFulfilled(e)
						}
						return t
					},
					p.reject = function(t, e) {
						t.state = _,
						t.outcome = e;
						for (var n = -1,
						i = t.queue.length; ++n < i;) t.queue[n].callRejected(e);
						return t
					},
					o.resolve = c,
					o.reject = f,
					o.all = d,
					o.race = h
				},
				{
					1 : 1
				}],
				3 : [function(t, n, i) { (function(e) {
						"use strict";
						"function" != typeof e.Promise && (e.Promise = t(2))
					}).call(this, void 0 !== e ? e: "undefined" != typeof self ? self: "undefined" != typeof window ? window: {})
				},
				{
					2 : 2
				}],
				4 : [function(t, e, n) {
					"use strict";
					function i(t, e) {
						if (! (t instanceof e)) throw new TypeError("Cannot call a class as a function")
					}
					function o(t, e) {
						t = t || [],
						e = e || {};
						try {
							return new Blob(t, e)
						} catch(r) {
							if ("TypeError" !== r.name) throw r;
							for (var n = "undefined" != typeof BlobBuilder ? BlobBuilder: "undefined" != typeof MSBlobBuilder ? MSBlobBuilder: "undefined" != typeof MozBlobBuilder ? MozBlobBuilder: WebKitBlobBuilder, i = new n, o = 0; o < t.length; o += 1) i.append(t[o]);
							return i.getBlob(e.type)
						}
					}
					function r(t, e) {
						e && t.then(function(t) {
							e(null, t)
						},
						function(t) {
							e(t)
						})
					}
					function a(t, e, n) {
						"function" == typeof e && t.then(e),
						"function" == typeof n && t.
						catch(n)
					}
					function s(t) {
						return "string" != typeof t && (console.warn(t + " used as a key, but it is not a string."), t = String(t)),
						t
					}
					function l() {
						if (arguments.length && "function" == typeof arguments[arguments.length - 1]) return arguments[arguments.length - 1]
					}
					function u(t) {
						for (var e = t.length,
						n = new ArrayBuffer(e), i = new Uint8Array(n), o = 0; o < e; o++) i[o] = t.charCodeAt(o);
						return n
					}
					function c(t) {
						return new mt(function(e) {
							var n = t.transaction(gt, wt),
							i = o([""]);
							n.objectStore(gt).put(i, "key"),
							n.onabort = function(t) {
								t.preventDefault(),
								t.stopPropagation(),
								e(!1)
							},
							n.oncomplete = function() {
								var t = navigator.userAgent.match(/Chrome\/(\d+)/),
								n = navigator.userAgent.match(/Edge\//);
								e(n || !t || parseInt(t[1], 10) >= 43)
							}
						}).
						catch(function() {
							return ! 1
						})
					}
					function f(t) {
						return "boolean" == typeof yt ? mt.resolve(yt) : c(t).then(function(t) {
							return yt = t
						})
					}
					function d(t) {
						var e = xt[t.name],
						n = {};
						n.promise = new mt(function(t, e) {
							n.resolve = t,
							n.reject = e
						}),
						e.deferredOperations.push(n),
						e.dbReady ? e.dbReady = e.dbReady.then(function() {
							return n.promise
						}) : e.dbReady = n.promise
					}
					function h(t) {
						var e = xt[t.name],
						n = e.deferredOperations.pop();
						if (n) return n.resolve(),
						n.promise
					}
					function v(t, e) {
						var n = xt[t.name],
						i = n.deferredOperations.pop();
						if (i) return i.reject(e),
						i.promise
					}
					function p(t, e) {
						return new mt(function(n, i) {
							if (xt[t.name] = xt[t.name] || T(), t.db) {
								if (!e) return n(t.db);
								d(t),
								t.db.close()
							}
							var o = [t.name];
							e && o.push(t.version);
							var r = _t.open.apply(_t, o);
							e && (r.onupgradeneeded = function(e) {
								var n = r.result;
								try {
									n.createObjectStore(t.storeName),
									e.oldVersion <= 1 && n.createObjectStore(gt)
								} catch(n) {
									if ("ConstraintError" !== n.name) throw n;
									console.warn('The database "' + t.name + '" has been upgraded from version ' + e.oldVersion + " to version " + e.newVersion + ', but the storage "' + t.storeName + '" already exists.')
								}
							}),
							r.onerror = function(t) {
								t.preventDefault(),
								i(r.error)
							},
							r.onsuccess = function() {
								n(r.result),
								h(t)
							}
						})
					}
					function _(t) {
						return p(t, !1)
					}
					function m(t) {
						return p(t, !0)
					}
					function g(t, e) {
						if (!t.db) return ! 0;
						var n = !t.db.objectStoreNames.contains(t.storeName),
						i = t.version < t.db.version,
						o = t.version > t.db.version;
						if (i && (t.version !== e && console.warn('The database "' + t.name + "\" can't be downgraded from version " + t.db.version + " to version " + t.version + "."), t.version = t.db.version), o || n) {
							if (n) {
								var r = t.db.version + 1;
								r > t.version && (t.version = r)
							}
							return ! 0
						}
						return ! 1
					}
					function y(t) {
						return new mt(function(e, n) {
							var i = new FileReader;
							i.onerror = n,
							i.onloadend = function(n) {
								var i = btoa(n.target.result || "");
								e({
									__local_forage_encoded_blob: !0,
									data: i,
									type: t.type
								})
							},
							i.readAsBinaryString(t)
						})
					}
					function x(t) {
						return o([u(atob(t.data))], {
							type: t.type
						})
					}
					function b(t) {
						return t && t.__local_forage_encoded_blob
					}
					function S(t) {
						var e = this,
						n = e._initReady().then(function() {
							var t = xt[e._dbInfo.name];
							if (t && t.dbReady) return t.dbReady
						});
						return a(n, t, t),
						n
					}
					function w(t) {
						d(t);
						for (var e = xt[t.name], n = e.forages, i = 0; i < n.length; i++) {
							var o = n[i];
							o._dbInfo.db && (o._dbInfo.db.close(), o._dbInfo.db = null)
						}
						return t.db = null,
						_(t).then(function(e) {
							return t.db = e,
							g(t) ? m(t) : e
						}).then(function(i) {
							t.db = e.db = i;
							for (var o = 0; o < n.length; o++) n[o]._dbInfo.db = i
						}).
						catch(function(e) {
							throw v(t, e),
							e
						})
					}
					function E(t, e, n, i) {
						void 0 === i && (i = 1);
						try {
							var o = t.db.transaction(t.storeName, e);
							n(null, o)
						} catch(o) {
							if (i > 0 && (!t.db || "InvalidStateError" === o.name || "NotFoundError" === o.name)) return mt.resolve().then(function() {
								if (!t.db || "NotFoundError" === o.name && !t.db.objectStoreNames.contains(t.storeName) && t.version <= t.db.version) return t.db && (t.version = t.db.version + 1),
								m(t)
							}).then(function() {
								return w(t).then(function() {
									E(t, e, n, i - 1)
								})
							}).
							catch(n);
							n(o)
						}
					}
					function T() {
						return {
							forages: [],
							db: null,
							dbReady: null,
							deferredOperations: []
						}
					}
					function A(t) {
						function e() {
							return mt.resolve()
						}
						var n = this,
						i = {
							db: null
						};
						if (t) for (var o in t) i[o] = t[o];
						var r = xt[i.name];
						r || (r = T(), xt[i.name] = r),
						r.forages.push(n),
						n._initReady || (n._initReady = n.ready, n.ready = S);
						for (var a = [], s = 0; s < r.forages.length; s++) {
							var l = r.forages[s];
							l !== n && a.push(l._initReady().
							catch(e))
						}
						var u = r.forages.slice(0);
						return mt.all(a).then(function() {
							return i.db = r.db,
							_(i)
						}).then(function(t) {
							return i.db = t,
							g(i, n._defaultConfig.version) ? m(i) : t
						}).then(function(t) {
							i.db = r.db = t,
							n._dbInfo = i;
							for (var e = 0; e < u.length; e++) {
								var o = u[e];
								o !== n && (o._dbInfo.db = i.db, o._dbInfo.version = i.version)
							}
						})
					}
					function P(t, e) {
						var n = this;
						t = s(t);
						var i = new mt(function(e, i) {
							n.ready().then(function() {
								E(n._dbInfo, St,
								function(o, r) {
									if (o) return i(o);
									try {
										var a = r.objectStore(n._dbInfo.storeName),
										s = a.get(t);
										s.onsuccess = function() {
											var t = s.result;
											void 0 === t && (t = null),
											b(t) && (t = x(t)),
											e(t)
										},
										s.onerror = function() {
											i(s.error)
										}
									} catch(t) {
										i(t)
									}
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function I(t, e) {
						var n = this,
						i = new mt(function(e, i) {
							n.ready().then(function() {
								E(n._dbInfo, St,
								function(o, r) {
									if (o) return i(o);
									try {
										var a = r.objectStore(n._dbInfo.storeName),
										s = a.openCursor(),
										l = 1;
										s.onsuccess = function() {
											var n = s.result;
											if (n) {
												var i = n.value;
												b(i) && (i = x(i));
												var o = t(i, n.key, l++);
												void 0 !== o ? e(o) : n.
												continue ()
											} else e()
										},
										s.onerror = function() {
											i(s.error)
										}
									} catch(t) {
										i(t)
									}
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function k(t, e, n) {
						var i = this;
						t = s(t);
						var o = new mt(function(n, o) {
							var r;
							i.ready().then(function() {
								return r = i._dbInfo,
								"[object Blob]" === bt.call(e) ? f(r.db).then(function(t) {
									return t ? e: y(e)
								}) : e
							}).then(function(e) {
								E(i._dbInfo, wt,
								function(r, a) {
									if (r) return o(r);
									try {
										var s = a.objectStore(i._dbInfo.storeName);
										null === e && (e = void 0);
										var l = s.put(e, t);
										a.oncomplete = function() {
											void 0 === e && (e = null),
											n(e)
										},
										a.onabort = a.onerror = function() {
											var t = l.error ? l.error: l.transaction.error;
											o(t)
										}
									} catch(t) {
										o(t)
									}
								})
							}).
							catch(o)
						});
						return r(o, n),
						o
					}
					function L(t, e) {
						var n = this;
						t = s(t);
						var i = new mt(function(e, i) {
							n.ready().then(function() {
								E(n._dbInfo, wt,
								function(o, r) {
									if (o) return i(o);
									try {
										var a = r.objectStore(n._dbInfo.storeName),
										s = a.delete(t);
										r.oncomplete = function() {
											e()
										},
										r.onerror = function() {
											i(s.error)
										},
										r.onabort = function() {
											var t = s.error ? s.error: s.transaction.error;
											i(t)
										}
									} catch(t) {
										i(t)
									}
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function M(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								E(e._dbInfo, wt,
								function(i, o) {
									if (i) return n(i);
									try {
										var r = o.objectStore(e._dbInfo.storeName),
										a = r.clear();
										o.oncomplete = function() {
											t()
										},
										o.onabort = o.onerror = function() {
											var t = a.error ? a.error: a.transaction.error;
											n(t)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function C(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								E(e._dbInfo, St,
								function(i, o) {
									if (i) return n(i);
									try {
										var r = o.objectStore(e._dbInfo.storeName),
										a = r.count();
										a.onsuccess = function() {
											t(a.result)
										},
										a.onerror = function() {
											n(a.error)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function R(t, e) {
						var n = this,
						i = new mt(function(e, i) {
							if (t < 0) return void e(null);
							n.ready().then(function() {
								E(n._dbInfo, St,
								function(o, r) {
									if (o) return i(o);
									try {
										var a = r.objectStore(n._dbInfo.storeName),
										s = !1,
										l = a.openCursor();
										l.onsuccess = function() {
											var n = l.result;
											if (!n) return void e(null);
											0 === t ? e(n.key) : s ? e(n.key) : (s = !0, n.advance(t))
										},
										l.onerror = function() {
											i(l.error)
										}
									} catch(t) {
										i(t)
									}
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function B(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								E(e._dbInfo, St,
								function(i, o) {
									if (i) return n(i);
									try {
										var r = o.objectStore(e._dbInfo.storeName),
										a = r.openCursor(),
										s = [];
										a.onsuccess = function() {
											var e = a.result;
											if (!e) return void t(s);
											s.push(e.key),
											e.
											continue ()
										},
										a.onerror = function() {
											n(a.error)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function N(t, e) {
						e = l.apply(this, arguments);
						var n = this.config();
						t = "function" != typeof t && t || {},
						t.name || (t.name = t.name || n.name, t.storeName = t.storeName || n.storeName);
						var i, o = this;
						if (t.name) {
							var a = t.name === n.name && o._dbInfo.db,
							s = a ? mt.resolve(o._dbInfo.db) : _(t).then(function(e) {
								var n = xt[t.name],
								i = n.forages;
								n.db = e;
								for (var o = 0; o < i.length; o++) i[o]._dbInfo.db = e;
								return e
							});
							i = t.storeName ? s.then(function(e) {
								if (e.objectStoreNames.contains(t.storeName)) {
									var n = e.version + 1;
									d(t);
									var i = xt[t.name],
									o = i.forages;
									e.close();
									for (var r = 0; r < o.length; r++) {
										var a = o[r];
										a._dbInfo.db = null,
										a._dbInfo.version = n
									}
									return new mt(function(e, i) {
										var o = _t.open(t.name, n);
										o.onerror = function(t) {
											o.result.close(),
											i(t)
										},
										o.onupgradeneeded = function() {
											o.result.deleteObjectStore(t.storeName)
										},
										o.onsuccess = function() {
											var t = o.result;
											t.close(),
											e(t)
										}
									}).then(function(t) {
										i.db = t;
										for (var e = 0; e < o.length; e++) {
											var n = o[e];
											n._dbInfo.db = t,
											h(n._dbInfo)
										}
									}).
									catch(function(e) {
										throw (v(t, e) || mt.resolve()).
										catch(function() {}),
										e
									})
								}
							}) : s.then(function(e) {
								d(t);
								var n = xt[t.name],
								i = n.forages;
								e.close();
								for (var o = 0; o < i.length; o++) {
									i[o]._dbInfo.db = null
								}
								return new mt(function(e, n) {
									var i = _t.deleteDatabase(t.name);
									i.onerror = i.onblocked = function(t) {
										var e = i.result;
										e && e.close(),
										n(t)
									},
									i.onsuccess = function() {
										var t = i.result;
										t && t.close(),
										e(t)
									}
								}).then(function(t) {
									n.db = t;
									for (var e = 0; e < i.length; e++) h(i[e]._dbInfo)
								}).
								catch(function(e) {
									throw (v(t, e) || mt.resolve()).
									catch(function() {}),
									e
								})
							})
						} else i = mt.reject("Invalid arguments");
						return r(i, e),
						i
					}
					function O(t) {
						var e, n, i, o, r, a = .75 * t.length,
						s = t.length,
						l = 0;
						"=" === t[t.length - 1] && (a--, "=" === t[t.length - 2] && a--);
						var u = new ArrayBuffer(a),
						c = new Uint8Array(u);
						for (e = 0; e < s; e += 4) n = Tt.indexOf(t[e]),
						i = Tt.indexOf(t[e + 1]),
						o = Tt.indexOf(t[e + 2]),
						r = Tt.indexOf(t[e + 3]),
						c[l++] = n << 2 | i >> 4,
						c[l++] = (15 & i) << 4 | o >> 2,
						c[l++] = (3 & o) << 6 | 63 & r;
						return u
					}
					function D(t) {
						var e, n = new Uint8Array(t),
						i = "";
						for (e = 0; e < n.length; e += 3) i += Tt[n[e] >> 2],
						i += Tt[(3 & n[e]) << 4 | n[e + 1] >> 4],
						i += Tt[(15 & n[e + 1]) << 2 | n[e + 2] >> 6],
						i += Tt[63 & n[e + 2]];
						return n.length % 3 == 2 ? i = i.substring(0, i.length - 1) + "=": n.length % 3 == 1 && (i = i.substring(0, i.length - 2) + "=="),
						i
					}
					function z(t, e) {
						var n = "";
						if (t && (n = Ut.call(t)), t && ("[object ArrayBuffer]" === n || t.buffer && "[object ArrayBuffer]" === Ut.call(t.buffer))) {
							var i, o = It;
							t instanceof ArrayBuffer ? (i = t, o += Lt) : (i = t.buffer, "[object Int8Array]" === n ? o += Ct: "[object Uint8Array]" === n ? o += Rt: "[object Uint8ClampedArray]" === n ? o += Bt: "[object Int16Array]" === n ? o += Nt: "[object Uint16Array]" === n ? o += Dt: "[object Int32Array]" === n ? o += Ot: "[object Uint32Array]" === n ? o += zt: "[object Float32Array]" === n ? o += Ft: "[object Float64Array]" === n ? o += Vt: e(new Error("Failed to get type for BinaryArray"))),
							e(o + D(i))
						} else if ("[object Blob]" === n) {
							var r = new FileReader;
							r.onload = function() {
								var n = At + t.type + "~" + D(this.result);
								e(It + Mt + n)
							},
							r.readAsArrayBuffer(t)
						} else try {
							e(JSON.stringify(t))
						} catch(n) {
							console.error("Couldn't convert value into a JSON string: ", t),
							e(null, n)
						}
					}
					function F(t) {
						if (t.substring(0, kt) !== It) return JSON.parse(t);
						var e, n = t.substring(Yt),
						i = t.substring(kt, Yt);
						if (i === Mt && Pt.test(n)) {
							var r = n.match(Pt);
							e = r[1],
							n = n.substring(r[0].length)
						}
						var a = O(n);
						switch (i) {
						case Lt:
							return a;
						case Mt:
							return o([a], {
								type: e
							});
						case Ct:
							return new Int8Array(a);
						case Rt:
							return new Uint8Array(a);
						case Bt:
							return new Uint8ClampedArray(a);
						case Nt:
							return new Int16Array(a);
						case Dt:
							return new Uint16Array(a);
						case Ot:
							return new Int32Array(a);
						case zt:
							return new Uint32Array(a);
						case Ft:
							return new Float32Array(a);
						case Vt:
							return new Float64Array(a);
						default:
							throw new Error("Unkown type: " + i)
						}
					}
					function V(t, e, n, i) {
						t.executeSql("CREATE TABLE IF NOT EXISTS " + e.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], n, i)
					}
					function Y(t) {
						var e = this,
						n = {
							db: null
						};
						if (t) for (var i in t) n[i] = "string" != typeof t[i] ? t[i].toString() : t[i];
						var o = new mt(function(t, i) {
							try {
								n.db = openDatabase(n.name, String(n.version), n.description, n.size)
							} catch(t) {
								return i(t)
							}
							n.db.transaction(function(o) {
								V(o, n,
								function() {
									e._dbInfo = n,
									t()
								},
								function(t, e) {
									i(e)
								})
							},
							i)
						});
						return n.serializer = jt,
						o
					}
					function U(t, e, n, i, o, r) {
						t.executeSql(n, i, o,
						function(t, a) {
							a.code === a.SYNTAX_ERR ? t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [e.storeName],
							function(t, s) {
								s.rows.length ? r(t, a) : V(t, e,
								function() {
									t.executeSql(n, i, o, r)
								},
								r)
							},
							r) : r(t, a)
						},
						r)
					}
					function j(t, e) {
						var n = this;
						t = s(t);
						var i = new mt(function(e, i) {
							n.ready().then(function() {
								var o = n._dbInfo;
								o.db.transaction(function(n) {
									U(n, o, "SELECT * FROM " + o.storeName + " WHERE key = ? LIMIT 1", [t],
									function(t, n) {
										var i = n.rows.length ? n.rows.item(0).value: null;
										i && (i = o.serializer.deserialize(i)),
										e(i)
									},
									function(t, e) {
										i(e)
									})
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function G(t, e) {
						var n = this,
						i = new mt(function(e, i) {
							n.ready().then(function() {
								var o = n._dbInfo;
								o.db.transaction(function(n) {
									U(n, o, "SELECT * FROM " + o.storeName, [],
									function(n, i) {
										for (var r = i.rows,
										a = r.length,
										s = 0; s < a; s++) {
											var l = r.item(s),
											u = l.value;
											if (u && (u = o.serializer.deserialize(u)), void 0 !== (u = t(u, l.key, s + 1))) return void e(u)
										}
										e()
									},
									function(t, e) {
										i(e)
									})
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function Z(t, e, n, i) {
						var o = this;
						t = s(t);
						var a = new mt(function(r, a) {
							o.ready().then(function() {
								void 0 === e && (e = null);
								var s = e,
								l = o._dbInfo;
								l.serializer.serialize(e,
								function(e, u) {
									u ? a(u) : l.db.transaction(function(n) {
										U(n, l, "INSERT OR REPLACE INTO " + l.storeName + " (key, value) VALUES (?, ?)", [t, e],
										function() {
											r(s)
										},
										function(t, e) {
											a(e)
										})
									},
									function(e) {
										if (e.code === e.QUOTA_ERR) {
											if (i > 0) return void r(Z.apply(o, [t, s, n, i - 1]));
											a(e)
										}
									})
								})
							}).
							catch(a)
						});
						return r(a, n),
						a
					}
					function H(t, e, n) {
						return Z.apply(this, [t, e, n, 1])
					}
					function W(t, e) {
						var n = this;
						t = s(t);
						var i = new mt(function(e, i) {
							n.ready().then(function() {
								var o = n._dbInfo;
								o.db.transaction(function(n) {
									U(n, o, "DELETE FROM " + o.storeName + " WHERE key = ?", [t],
									function() {
										e()
									},
									function(t, e) {
										i(e)
									})
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function X(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								var i = e._dbInfo;
								i.db.transaction(function(e) {
									U(e, i, "DELETE FROM " + i.storeName, [],
									function() {
										t()
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function Q(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								var i = e._dbInfo;
								i.db.transaction(function(e) {
									U(e, i, "SELECT COUNT(key) as c FROM " + i.storeName, [],
									function(e, n) {
										var i = n.rows.item(0).c;
										t(i)
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function q(t, e) {
						var n = this,
						i = new mt(function(e, i) {
							n.ready().then(function() {
								var o = n._dbInfo;
								o.db.transaction(function(n) {
									U(n, o, "SELECT key FROM " + o.storeName + " WHERE id = ? LIMIT 1", [t + 1],
									function(t, n) {
										var i = n.rows.length ? n.rows.item(0).key: null;
										e(i)
									},
									function(t, e) {
										i(e)
									})
								})
							}).
							catch(i)
						});
						return r(i, e),
						i
					}
					function K(t) {
						var e = this,
						n = new mt(function(t, n) {
							e.ready().then(function() {
								var i = e._dbInfo;
								i.db.transaction(function(e) {
									U(e, i, "SELECT key FROM " + i.storeName, [],
									function(e, n) {
										for (var i = [], o = 0; o < n.rows.length; o++) i.push(n.rows.item(o).key);
										t(i)
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return r(n, t),
						n
					}
					function J(t) {
						return new mt(function(e, n) {
							t.transaction(function(i) {
								i.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [],
								function(n, i) {
									for (var o = [], r = 0; r < i.rows.length; r++) o.push(i.rows.item(r).name);
									e({
										db: t,
										storeNames: o
									})
								},
								function(t, e) {
									n(e)
								})
							},
							function(t) {
								n(t)
							})
						})
					}
					function $(t, e) {
						e = l.apply(this, arguments);
						var n = this.config();
						t = "function" != typeof t && t || {},
						t.name || (t.name = t.name || n.name, t.storeName = t.storeName || n.storeName);
						var i, o = this;
						return i = t.name ? new mt(function(e) {
							var i;
							i = t.name === n.name ? o._dbInfo.db: openDatabase(t.name, "", "", 0),
							e(t.storeName ? {
								db: i,
								storeNames: [t.storeName]
							}: J(i))
						}).then(function(t) {
							return new mt(function(e, n) {
								t.db.transaction(function(i) {
									for (var o = [], r = 0, a = t.storeNames.length; r < a; r++) o.push(function(t) {
										return new mt(function(e, n) {
											i.executeSql("DROP TABLE IF EXISTS " + t, [],
											function() {
												e()
											},
											function(t, e) {
												n(e)
											})
										})
									} (t.storeNames[r]));
									mt.all(o).then(function() {
										e()
									}).
									catch(function(t) {
										n(t)
									})
								},
								function(t) {
									n(t)
								})
							})
						}) : mt.reject("Invalid arguments"),
						r(i, e),
						i
					}
					function tt(t, e) {
						var n = t.name + "/";
						return t.storeName !== e.storeName && (n += t.storeName + "/"),
						n
					}
					function et() {
						try {
							return localStorage.setItem("_localforage_support_test", !0),
							localStorage.removeItem("_localforage_support_test"),
							!1
						} catch(t) {
							return ! 0
						}
					}
					function nt() {
						return ! et() || localStorage.length > 0
					}
					function it(t) {
						var e = this,
						n = {};
						if (t) for (var i in t) n[i] = t[i];
						return n.keyPrefix = tt(t, e._defaultConfig),
						nt() ? (e._dbInfo = n, n.serializer = jt, mt.resolve()) : mt.reject()
					}
					function ot(t) {
						var e = this,
						n = e.ready().then(function() {
							for (var t = e._dbInfo.keyPrefix,
							n = localStorage.length - 1; n >= 0; n--) {
								var i = localStorage.key(n);
								0 === i.indexOf(t) && localStorage.removeItem(i)
							}
						});
						return r(n, t),
						n
					}
					function rt(t, e) {
						var n = this;
						t = s(t);
						var i = n.ready().then(function() {
							var e = n._dbInfo,
							i = localStorage.getItem(e.keyPrefix + t);
							return i && (i = e.serializer.deserialize(i)),
							i
						});
						return r(i, e),
						i
					}
					function at(t, e) {
						var n = this,
						i = n.ready().then(function() {
							for (var e = n._dbInfo,
							i = e.keyPrefix,
							o = i.length,
							r = localStorage.length,
							a = 1,
							s = 0; s < r; s++) {
								var l = localStorage.key(s);
								if (0 === l.indexOf(i)) {
									var u = localStorage.getItem(l);
									if (u && (u = e.serializer.deserialize(u)), void 0 !== (u = t(u, l.substring(o), a++))) return u
								}
							}
						});
						return r(i, e),
						i
					}
					function st(t, e) {
						var n = this,
						i = n.ready().then(function() {
							var e, i = n._dbInfo;
							try {
								e = localStorage.key(t)
							} catch(t) {
								e = null
							}
							return e && (e = e.substring(i.keyPrefix.length)),
							e
						});
						return r(i, e),
						i
					}
					function lt(t) {
						var e = this,
						n = e.ready().then(function() {
							for (var t = e._dbInfo,
							n = localStorage.length,
							i = [], o = 0; o < n; o++) {
								var r = localStorage.key(o);
								0 === r.indexOf(t.keyPrefix) && i.push(r.substring(t.keyPrefix.length))
							}
							return i
						});
						return r(n, t),
						n
					}
					function ut(t) {
						var e = this,
						n = e.keys().then(function(t) {
							return t.length
						});
						return r(n, t),
						n
					}
					function ct(t, e) {
						var n = this;
						t = s(t);
						var i = n.ready().then(function() {
							var e = n._dbInfo;
							localStorage.removeItem(e.keyPrefix + t)
						});
						return r(i, e),
						i
					}
					function ft(t, e, n) {
						var i = this;
						t = s(t);
						var o = i.ready().then(function() {
							void 0 === e && (e = null);
							var n = e;
							return new mt(function(o, r) {
								var a = i._dbInfo;
								a.serializer.serialize(e,
								function(e, i) {
									if (i) r(i);
									else try {
										localStorage.setItem(a.keyPrefix + t, e),
										o(n)
									} catch(t) {
										"QuotaExceededError" !== t.name && "NS_ERROR_DOM_QUOTA_REACHED" !== t.name || r(t),
										r(t)
									}
								})
							})
						});
						return r(o, n),
						o
					}
					function dt(t, e) {
						if (e = l.apply(this, arguments), t = "function" != typeof t && t || {},
						!t.name) {
							var n = this.config();
							t.name = t.name || n.name,
							t.storeName = t.storeName || n.storeName
						}
						var i, o = this;
						return i = t.name ? new mt(function(e) {
							e(t.storeName ? tt(t, o._defaultConfig) : t.name + "/")
						}).then(function(t) {
							for (var e = localStorage.length - 1; e >= 0; e--) {
								var n = localStorage.key(e);
								0 === n.indexOf(t) && localStorage.removeItem(n)
							}
						}) : mt.reject("Invalid arguments"),
						r(i, e),
						i
					}
					function ht(t, e) {
						t[e] = function() {
							var n = arguments;
							return t.ready().then(function() {
								return t[e].apply(t, n)
							})
						}
					}
					function vt() {
						for (var t = 1; t < arguments.length; t++) {
							var e = arguments[t];
							if (e) for (var n in e) e.hasOwnProperty(n) && (Xt(e[n]) ? arguments[0][n] = e[n].slice() : arguments[0][n] = e[n])
						}
						return arguments[0]
					}
					var pt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
					function(t) {
						return typeof t
					}: function(t) {
						return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol": typeof t
					},
					_t = function() {
						try {
							if ("undefined" != typeof indexedDB) return indexedDB;
							if ("undefined" != typeof webkitIndexedDB) return webkitIndexedDB;
							if ("undefined" != typeof mozIndexedDB) return mozIndexedDB;
							if ("undefined" != typeof OIndexedDB) return OIndexedDB;
							if ("undefined" != typeof msIndexedDB) return msIndexedDB
						} catch(t) {
							return
						}
					} ();
					"undefined" == typeof Promise && t(3);
					var mt = Promise,
					gt = "local-forage-detect-blob-support",
					yt = void 0,
					xt = {},
					bt = Object.prototype.toString,
					St = "readonly",
					wt = "readwrite",
					Et = {
						_driver: "asyncStorage",
						_initStorage: A,
						_support: function() {
							try {
								if (!_t) return ! 1;
								var t = "undefined" != typeof openDatabase && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform),
								e = "function" == typeof fetch && -1 !== fetch.toString().indexOf("[native code");
								return (!t || e) && "undefined" != typeof indexedDB && "undefined" != typeof IDBKeyRange
							} catch(t) {
								return ! 1
							}
						} (),
						iterate: I,
						getItem: P,
						setItem: k,
						removeItem: L,
						clear: M,
						length: C,
						key: R,
						keys: B,
						dropInstance: N
					},
					Tt = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
					At = "~~local_forage_type~",
					Pt = /^~~local_forage_type~([^~]+)~/,
					It = "__lfsc__:",
					kt = It.length,
					Lt = "arbf",
					Mt = "blob",
					Ct = "si08",
					Rt = "ui08",
					Bt = "uic8",
					Nt = "si16",
					Ot = "si32",
					Dt = "ur16",
					zt = "ui32",
					Ft = "fl32",
					Vt = "fl64",
					Yt = kt + Lt.length,
					Ut = Object.prototype.toString,
					jt = {
						serialize: z,
						deserialize: F,
						stringToBuffer: O,
						bufferToString: D
					},
					Gt = {
						_driver: "webSQLStorage",
						_initStorage: Y,
						_support: function() {
							return "function" == typeof openDatabase
						} (),
						iterate: G,
						getItem: j,
						setItem: H,
						removeItem: W,
						clear: X,
						length: Q,
						key: q,
						keys: K,
						dropInstance: $
					},
					Zt = {
						_driver: "localStorageWrapper",
						_initStorage: it,
						_support: function() {
							try {
								return "undefined" != typeof localStorage && "setItem" in localStorage && !!localStorage.setItem
							} catch(t) {
								return ! 1
							}
						} (),
						iterate: at,
						getItem: rt,
						setItem: ft,
						removeItem: ct,
						clear: ot,
						length: ut,
						key: st,
						keys: lt,
						dropInstance: dt
					},
					Ht = function(t, e) {
						return t === e || "number" == typeof t && "number" == typeof e && isNaN(t) && isNaN(e)
					},
					Wt = function(t, e) {
						for (var n = t.length,
						i = 0; i < n;) {
							if (Ht(t[i], e)) return ! 0;
							i++
						}
						return ! 1
					},
					Xt = Array.isArray ||
					function(t) {
						return "[object Array]" === Object.prototype.toString.call(t)
					},
					Qt = {},
					qt = {},
					Kt = {
						INDEXEDDB: Et,
						WEBSQL: Gt,
						LOCALSTORAGE: Zt
					},
					Jt = [Kt.INDEXEDDB._driver, Kt.WEBSQL._driver, Kt.LOCALSTORAGE._driver],
					$t = ["dropInstance"],
					te = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat($t),
					ee = {
						description: "",
						driver: Jt.slice(),
						name: "localforage",
						size: 4980736,
						storeName: "keyvaluepairs",
						version: 1
					},
					ne = function() {
						function t(e) {
							i(this, t);
							for (var n in Kt) if (Kt.hasOwnProperty(n)) {
								var o = Kt[n],
								r = o._driver;
								this[n] = r,
								Qt[r] || this.defineDriver(o)
							}
							this._defaultConfig = vt({},
							ee),
							this._config = vt({},
							this._defaultConfig, e),
							this._driverSet = null,
							this._initDriver = null,
							this._ready = !1,
							this._dbInfo = null,
							this._wrapLibraryMethodsWithReady(),
							this.setDriver(this._config.driver).
							catch(function() {})
						}
						return t.prototype.config = function(t) {
							if ("object" === (void 0 === t ? "undefined": pt(t))) {
								if (this._ready) return new Error("Can't call config() after localforage has been used.");
								for (var e in t) {
									if ("storeName" === e && (t[e] = t[e].replace(/\W/g, "_")), "version" === e && "number" != typeof t[e]) return new Error("Database version must be a number.");
									this._config[e] = t[e]
								}
								return ! ("driver" in t && t.driver) || this.setDriver(this._config.driver)
							}
							return "string" == typeof t ? this._config[t] : this._config
						},
						t.prototype.defineDriver = function(t, e, n) {
							var i = new mt(function(e, n) {
								try {
									var i = t._driver,
									o = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
									if (!t._driver) return void n(o);
									for (var a = te.concat("_initStorage"), s = 0, l = a.length; s < l; s++) {
										var u = a[s];
										if ((!Wt($t, u) || t[u]) && "function" != typeof t[u]) return void n(o)
									} !
									function() {
										for (var e = 0,
										n = $t.length; e < n; e++) {
											var i = $t[e];
											t[i] || (t[i] = function(t) {
												return function() {
													var e = new Error("Method " + t + " is not implemented by the current driver"),
													n = mt.reject(e);
													return r(n, arguments[arguments.length - 1]),
													n
												}
											} (i))
										}
									} ();
									var c = function(n) {
										Qt[i] && console.info("Redefining LocalForage driver: " + i),
										Qt[i] = t,
										qt[i] = n,
										e()
									};
									"_support" in t ? t._support && "function" == typeof t._support ? t._support().then(c, n) : c( !! t._support) : c(!0)
								} catch(t) {
									n(t)
								}
							});
							return a(i, e, n),
							i
						},
						t.prototype.driver = function() {
							return this._driver || null
						},
						t.prototype.getDriver = function(t, e, n) {
							var i = Qt[t] ? mt.resolve(Qt[t]) : mt.reject(new Error("Driver not found."));
							return a(i, e, n),
							i
						},
						t.prototype.getSerializer = function(t) {
							var e = mt.resolve(jt);
							return a(e, t),
							e
						},
						t.prototype.ready = function(t) {
							var e = this,
							n = e._driverSet.then(function() {
								return null === e._ready && (e._ready = e._initDriver()),
								e._ready
							});
							return a(n, t, t),
							n
						},
						t.prototype.setDriver = function(t, e, n) {
							function i() {
								s._config.driver = s.driver()
							}
							function o(t) {
								return s._extend(t),
								i(),
								s._ready = s._initStorage(s._config),
								s._ready
							}
							function r(t) {
								return function() {
									function e() {
										for (; n < t.length;) {
											var r = t[n];
											return n++,
											s._dbInfo = null,
											s._ready = null,
											s.getDriver(r).then(o).
											catch(e)
										}
										i();
										var a = new Error("No available storage method found.");
										return s._driverSet = mt.reject(a),
										s._driverSet
									}
									var n = 0;
									return e()
								}
							}
							var s = this;
							Xt(t) || (t = [t]);
							var l = this._getSupportedDrivers(t),
							u = null !== this._driverSet ? this._driverSet.
							catch(function() {
								return mt.resolve()
							}) : mt.resolve();
							return this._driverSet = u.then(function() {
								var t = l[0];
								return s._dbInfo = null,
								s._ready = null,
								s.getDriver(t).then(function(t) {
									s._driver = t._driver,
									i(),
									s._wrapLibraryMethodsWithReady(),
									s._initDriver = r(l)
								})
							}).
							catch(function() {
								i();
								var t = new Error("No available storage method found.");
								return s._driverSet = mt.reject(t),
								s._driverSet
							}),
							a(this._driverSet, e, n),
							this._driverSet
						},
						t.prototype.supports = function(t) {
							return !! qt[t]
						},
						t.prototype._extend = function(t) {
							vt(this, t)
						},
						t.prototype._getSupportedDrivers = function(t) {
							for (var e = [], n = 0, i = t.length; n < i; n++) {
								var o = t[n];
								this.supports(o) && e.push(o)
							}
							return e
						},
						t.prototype._wrapLibraryMethodsWithReady = function() {
							for (var t = 0,
							e = te.length; t < e; t++) ht(this, te[t])
						},
						t.prototype.createInstance = function(e) {
							return new t(e)
						},
						t
					} (),
					ie = new ne;
					e.exports = ie
				},
				{
					3 : 3
				}]
			},
			{},
			[4])(4)
		})
	}).call(e, n(142))
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(29),
	u = n(47),
	c = function() {
		function t(e, n) {
			return (0, r.
		default)(this, t),
			!e || e instanceof u ? !n || n instanceof u ? void(e && (n ? ((e.getLat() > n.getLat() || e.getLng() > n.getLng()) && console.error("LatLngBounds中sw 的经纬度必须小于ne的经纬度，实际传入sw为：", e, "ne 为：", n), this.setSouthWest(e).setNorthEast(n)) : 4 === e.length ? this.setSouthWest([e[0], e[1]]).setNorthEast([e[2], e[3]]) : 2 === e.length && this.setSouthWest(e[0]).setNorthEast(e[1]))) : void new l.BaseTypeError("LatLngBounds.ne", "LatLng", n).error() : void new l.BaseTypeError("LatLngBounds.sw", "LatLng", e).error()
		}
		return (0, s.
	default)(t, [{
			key: "setNorthEast",
			value: function(t) {
				return this._ne = u.convert(t),
				this
			}
		},
		{
			key: "setSouthWest",
			value: function(t) {
				return this._sw = u.convert(t),
				this
			}
		},
		{
			key: "getCenter",
			value: function() {
				return new u((this._sw.lat + this._ne.lat) / 2, (this._sw.lng + this._ne.lng) / 2, 0, !0)
			}
		},
		{
			key: "getSouthWest",
			value: function() {
				return this._sw
			}
		},
		{
			key: "getNorthEast",
			value: function() {
				return this._ne
			}
		},
		{
			key: "extend",
			value: function(e) {
				var n = this._sw,
				i = this._ne,
				o = void 0,
				r = void 0;
				if (e instanceof u) o = e,
				r = e;
				else {
					if (! (e instanceof t)) return Array.isArray(e) ? e.every(Array.isArray) ? this.extend(t.convert(e)) : this.extend(u.convert(e)) : this;
					if (o = e._sw, r = e._ne, !o || !r) return this
				}
				return n || i ? (this._sw = new u(Math.min(o.lat, n.lat), Math.min(o.lng, n.lng), 0, !0), this._ne = new u(Math.max(r.lat, i.lat), Math.max(r.lng, i.lng), 0, !0)) : (this._sw = new u(o.lat, o.lng, 0, !0), this._ne = new u(r.lat, r.lng, 0, !0)),
				this
			}
		},
		{
			key: "union",
			value: function(t) {
				return this.extend(t)
			}
		},
		{
			key: "equals",
			value: function(t) {
				var e = this._sw,
				n = this._ne,
				i = t.getSouthWest(),
				o = t.getNorthEast();
				return e.equals(i) && n.equals(o)
			}
		},
		{
			key: "intersects",
			value: function(t) {
				var e = this._sw,
				n = this._ne,
				i = t.getSouthWest(),
				o = t.getNorthEast();
				return ! (i.lat > n.lat || o.lat < e.lat || i.lng > n.lng || o.lng < e.lng)
			}
		},
		{
			key: "covers",
			value: function(t) {
				var e = t.getSouthWest(),
				n = t.getNorthEast(),
				i = t.getSouthEast(),
				o = t.getNorthWest();
				return this.contains(e) && this.contains(n) && this.contains(i) && this.contains(o)
			}
		},
		{
			key: "isEmpty",
			value: function() {
				return ! this._sw || !this._ne || this._sw.lat === this._ne.lat || this._sw.lng === this._ne.lng
			}
		},
		{
			key: "contains",
			value: function(t) {
				return this._sw.lat <= t.lat && this._sw.lng <= t.lng && this._ne.lat >= t.lat && this._ne.lng >= t.lng
			}
		},
		{
			key: "getNorthWest",
			value: function() {
				return new u(this.getNorth(), this.getWest(), 0, !0)
			}
		},
		{
			key: "getSouthEast",
			value: function() {
				return new u(this.getSouth(), this.getEast(), 0, !0)
			}
		},
		{
			key: "getWest",
			value: function() {
				return this._sw.lng
			}
		},
		{
			key: "getSouth",
			value: function() {
				return this._sw.lat
			}
		},
		{
			key: "getEast",
			value: function() {
				return this._ne.lng
			}
		},
		{
			key: "getNorth",
			value: function() {
				return this._ne.lat
			}
		},
		{
			key: "toString",
			value: function() {
				return "LatLngBounds(" + this._sw.toString() + ", " + this._ne.toString() + ")"
			}
		}]),
		t
	} ();
	c.convert = function(t) {
		return ! t || t instanceof c ? t: new c(t)
	},
	c._convertFromWorker = function(t) {
		return t._sw && t._ne ? new c(u.convert(t._sw), u.convert(t._ne)) : t
	},
	t.exports = c
},
function(t, e, n) {
	"use strict";
	function i(t, e, n) {
		var i = window.document.createElement(t);
		return e && (i.className = e),
		n && n.appendChild(i),
		i
	}
	function o(t) {
		for (var e = 0; e < t.length; e++) if (t[e] in w) return t[e];
		return t[0]
	}
	function r() {
		E && (T = w[E], w[E] = "none")
	}
	function a() {
		E && (w[E] = T)
	}
	function s(t, e) {
		t.style[A] = e
	}
	function l(t) {
		t.preventDefault(),
		t.stopPropagation(),
		window.removeEventListener("click", l, !0)
	}
	function u() {
		window.addEventListener("click", l, !0),
		window.setTimeout(function() {
			window.removeEventListener("click", l, !0)
		},
		0)
	}
	function c(t, e) {
		var n = t.getBoundingClientRect();
		return e = e.touches ? ("touchend" === e.type ? e.changedTouches: e.touches)[0] : e,
		d(t, new S(e.clientX - n.left - t.clientLeft, e.clientY - n.top - t.clientTop))
	}
	function f(t, e) {
		for (var n = t.getBoundingClientRect(), i = [], o = "touchend" === e.type ? e.changedTouches: e.touches, r = 0; r < o.length; r++) {
			var a = new S(o[r].clientX - n.left - t.clientLeft, o[r].clientY - n.top - t.clientTop),
			s = d(t, a);
			i.push(s)
		}
		return i
	}
	function d(t, e) {
		var n = null,
		i = getComputedStyle(t),
		o = i.width,
		r = i.height,
		a = i.transform;
		for (o = o.replace("px", ""), r = r.replace("px", ""); null !== t;) {
			if (!a) {
				a = getComputedStyle(t).transform
			}
			if ("none" !== a) {
				var s = a.match(/\(([^)]*)\)/),
				l = (0, x.
			default)(s, 2),
				u = l[1],
				c = u.split(","),
				f = new b.Matrix4;
				f.elements[0] = parseFloat(c[0].trim()),
				f.elements[1] = parseFloat(c[1].trim()),
				f.elements[4] = parseFloat(c[2].trim()),
				f.elements[5] = parseFloat(c[3].trim()),
				n = n ? f.multiply(n) : f
			}
			t = t.parentElement,
			a = null
		}
		if (!n) return e;
		var d = new b.Vector3([o, 0, 0]),
		h = new b.Vector3([0, r, 0]),
		v = new b.Vector3([o, r, 0]),
		p = n.multiplyVector3(d),
		_ = n.multiplyVector3(h),
		m = n.multiplyVector3(v),
		g = Math.min.apply(null, [0, p.elements[0], _.elements[0], m.elements[0]]),
		y = Math.min.apply(null, [0, p.elements[1], _.elements[1], m.elements[1]]),
		w = n.invert(),
		E = new b.Vector3([e.x + g, e.y + y, 0]),
		T = w.multiplyVector3(E);
		return new S(T.elements[0], T.elements[1])
	}
	function h(t) {
		t.parentNode && t.parentNode.removeChild(t)
	}
	function v(t) {
		var e = document.createElement("div");
		e.innerHTML = t;
		var n = document.createDocumentFragment();
		return Array.prototype.slice.apply(e.childNodes).forEach(function(t) {
			n.appendChild(t)
		}),
		n
	}
	function p(t) {
		if ("pageX" in t && "pageY" in t) return {
			x: t.pageX,
			y: t.pageY
		};
		if ("touches" in t && t.touches.length > 0) {
			var e = t.touches[0];
			return {
				x: e.pageX,
				y: e.pageY
			}
		}
		if ("changedTouches" in t && t.changedTouches.length > 0) {
			var n = t.changedTouches[0];
			return {
				x: n.pageX,
				y: n.pageY
			}
		}
	}
	function _(t, e) {
		t && (Array.isArray(e) || (e = [e]), e.forEach(function(e) {
			g(t, e) || (t.className += " " + e)
		}))
	}
	function m(t, e) {
		t && (Array.isArray(e) || (e = [e]), e.forEach(function(e) {
			g(t, e) && (t.className = t.className.replace(" " + e, ""))
		}))
	}
	function g(t, e) {
		if (t) {
			var n = " " + e + " ";
			return (" " + t.className + " ").includes(n)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.TRANSITIONTIMINGFUNCTION = e.TRANSITIONDURATION = e.TRANSITIONEND = e.TRANSITION = e.TRANSFORM = e.TRANSFORMORIGIN = void 0;
	var y = n(32),
	x = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (y);
	e.create = i,
	e.disableDrag = r,
	e.enableDrag = a,
	e.setTransform = s,
	e.suppressClick = u,
	e.mousePos = c,
	e.touchPos = f,
	e.remove = h,
	e.toDom = v,
	e.getPointerXY = p,
	e.addClass = _,
	e.removeClass = m,
	e.hasClass = g;
	var b = n(107),
	S = n(74),
	w = window.document.documentElement.style,
	E = o(["userSelect", "MozUserSelect", "WebkitUserSelect", "msUserSelect"]),
	T = void 0,
	A = (e.TRANSFORMORIGIN = o(["TRANSFORMORIGIN", "WebkitTransformOrigin", "OTransformOrigin", "MozTransformOrigin", "msTransformOrigin"]), e.TRANSFORM = o(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"])),
	P = e.TRANSITION = o(["transition", "webkitTransition", "OTransition", "MozTransition", "msTransition"]);
	e.TRANSITIONEND = "transition" === P ? P + "end": P + "End",
	e.TRANSITIONDURATION = P + "Duration",
	e.TRANSITIONTIMINGFUNCTION = P + "TimingFunction"
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(212),
	f = i(c),
	d = n(784),
	h = i(d),
	v = void 0,
	p = {},
	_ = function() {
		function t(e) { (0, s.
		default)(this, t),
			this.gl = e.gl,
			this.location = {},
			this.store = null,
			this.shaderSource = null,
			this.shaderParams = null
		}
		return (0, u.
	default)(t, [{
			key: "preDraw",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = this.programId;
				e !== v && (v = e, this.enableProgram(t.updated)),
				this.loadTexture(t),
				this.applyLight(t.lightUniforms, t.shadowTexture)
			}
		},
		{
			key: "afterDraw",
			value: function() {
				if (this.enableLight) {
					var t = this.gl;
					t.activeTexture(t.TEXTURE3),
					t.bindTexture(t.TEXTURE_2D, null)
				}
			}
		},
		{
			key: "loadTexture",
			value: function() {}
		},
		{
			key: "applyLight",
			value: function(t, e) {
				if (t && this.enableLight) {
					var n = this.gl,
					i = t.lighting_uBase,
					o = t.lighting_uToneMapping,
					r = t.lighting_uAmbientColor,
					a = t.lighting_uDirDirection,
					s = t.lighting_uDirColor,
					l = t.lighting_uDirCount,
					u = t.lighting_uPointPosition,
					c = t.lighting_uPointAtt,
					f = t.lighting_uPointColor,
					d = t.lighting_uPointCount,
					h = t.lighting_uShadow,
					v = t.lighting_uViewPos,
					p = t.lighting_uShadowLightPVMatrix;
					e && e.bind(n, {
						textureIndex: 3
					}),
					n.uniform4f(this.lighting_uBase, i[0], i[1], i[2], i[3]),
					n.uniform4f(this.lighting_uAdvanced, o[0], o[1], h[0], h[1]),
					n.uniform3f(this.lighting_uAmbientColor, r[0], r[1], r[2]),
					n.uniform3fv(this.lighting_uDirDirection, a),
					n.uniform3fv(this.lighting_uDirColor, s),
					n.uniform3fv(this.lighting_uPointPosition, u),
					n.uniform3fv(this.lighting_uPointAtt, c),
					n.uniform3fv(this.lighting_uPointColor, f),
					n.uniform2f(this.lighting_uLightCount, l, d),
					n.uniform3f(this.lighting_uViewPos, v[0], v[1], v[2]),
					n.uniformMatrix4fv(this.lighting_uShadowLightPVMatrix, !1, p),
					e && n.uniform1i(this.lighting_uShadowSampler, 3)
				}
			}
		},
		{
			key: "createBuffer",
			value: function(t, e, n, i) {
				var o = this.gl,
				r = {};
				return e && (r.vertices = new f.
			default(o, {
					data: e,
					usage: o.DYNAMIC_DRAW
				})),
				n && (r.indices = new f.
			default(o, {
					target: o.ELEMENT_ARRAY_BUFFER,
					data: n,
					usage: o.DYNAMIC_DRAW
				}), r.length = n.byteLength / n.BYTES_PER_ELEMENT),
				i && (r.fillCoordinates = new f.
			default(o, {
					data: i,
					usage: o.DYNAMIC_DRAW
				})),
				r
			}
		},
		{
			key: "bindVertexBuffer",
			value: function(t, e) {
				var n = this.gl,
				i = t.attributes,
				o = void 0;
				e ? e.bind() : e = new f.
			default(n, {
					data: t.arrayBuffer,
					usage: n.DYNAMIC_DRAW
				});
				for (var r = 0,
				a = i.length; r < a; r++) {
					o = i[r],
					o.name in this.location || (this.location[o.name] = n.getAttribLocation(n.program, o.name));
					var s = this.location[o.name];
					s < 0 || e.pointToAttrib({
						location: s,
						size: o.components,
						type: n[o.type],
						stride: t.bytesPerElement,
						offset: o.offset
					})
				}
				return e
			}
		},
		{
			key: "unbindVertexBuffer",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : [],
				i = this.gl;
				n.forEach(function(t) {
					t.name in e.location || (e.location[t.name] = i.getAttribLocation(i.program, t.name));
					var n = e.location[t.name];
					n < 0 || e.gl.disableVertexAttribArray(n)
				}),
				t.unbind()
			}
		},
		{
			key: "bindElementBuffer",
			value: function(t, e) {
				var n = this.gl;
				return e ? e.bind() : e = new f.
			default(n, {
					target: n.ELEMENT_ARRAY_BUFFER,
					data: t.arrayBuffer,
					usage: n.DYNAMIC_DRAW
				}),
				e
			}
		},
		{
			key: "getVariableLocations",
			value: function(t) {
				var e = (0, r.
			default)({},
				this.shaderParams);
				if (this.enableLight) {
					var n; (n = e.uniforms).push.apply(n, ["lighting_uBase", "lighting_uAdvanced", "lighting_uAmbientColor", "lighting_uDirDirection", "lighting_uDirColor", "lighting_uPointPosition", "lighting_uPointAtt", "lighting_uPointColor", "lighting_uLightCount", "lighting_uViewPos", "lighting_uShadowLightPVMatrix", "lighting_uShadowSampler"])
				}
				return (0, r.
			default)({},
				t.getLocations("attributes", e.attributes), t.getLocations("uniforms", e.uniforms))
			}
		},
		{
			key: "enableProgram",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
				e = this.gl,
				n = this.programId,
				i = this.shaderSource,
				o = p[n];
				o ? t && (o.attachShader(i.v, i.f, t), o.locations = this.getVariableLocations(o), p[n] = o) : (o = new h.
			default(e, {
					vShader: i.v,
					fShader: i.f
				}), o.locations = this.getVariableLocations(o), p[n] = o),
				o.enable(),
				(0, r.
			default)(this, o.locations)
			}
		},
		{
			key: "clearStore",
			value: function() {
				this.store && this.store.clear()
			}
		},
		{
			key: "destroy",
			value: function() {
				this.store && (this.store.clear(), this.store = null);
				var t = this.shaderSource.name + this.gl.id;
				p[t] && (p[t].delete(), delete p[t]),
				this.shaderParams = null,
				this.shaderSource = null,
				this.location = null,
				this.gl = null
			}
		},
		{
			key: "isBufferChanged",
			value: function(t, e) {
				if (t && e) {
					for (var n in t) if (t.hasOwnProperty(n) && e[n] && t[n].data !== e[n]) return ! 0;
					return ! 1
				}
			}
		},
		{
			key: "programId",
			get: function() {
				return this.shaderSource.name + this.gl.id
			}
		}]),
		t
	} ();
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(280),
	p = i(v),
	_ = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_onCreate",
			value: function() {
				return this.gl.createBuffer()
			}
		},
		{
			key: "_onDelete",
			value: function() {
				this.unbind(),
				this.gl.deleteBuffer(this._object),
				this.gl.disableVertexAttribArray(this.location)
			}
		},
		{
			key: "_initialize",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.target = t.target || this.gl.ARRAY_BUFFER,
				t.data && (this.bind(), this.bufferData(t.data, t))
			}
		},
		{
			key: "bind",
			value: function(t, e) {
				t = t || this.gl,
				e = e || this.target,
				t.bindBuffer(e, this._object)
			}
		},
		{
			key: "unbind",
			value: function(t, e) {
				t = t || this.gl,
				e = e || this.target,
				t.bindBuffer(e, null)
			}
		},
		{
			key: "bufferData",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				this.gl.bufferData(this.target, t, e.usage || this.gl.STATIC_DRAW)
			}
		},
		{
			key: "bufferSubData",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				this.gl.bufferSubData(this.target, e.offset || 0, t)
			}
		},
		{
			key: "pointToAttrib",
			value: function(t) {
				var e = t.location,
				n = t.size,
				i = t.type,
				o = t.normalized,
				r = void 0 !== o && o,
				a = t.stride,
				s = void 0 === a ? 0 : a,
				l = t.offset,
				u = void 0 === l ? 0 : l,
				c = t.enable,
				f = void 0 === c || c;
				this.location = e,
				this.gl.vertexAttribPointer(e, n, i, r, s, u),
				f && this.gl.enableVertexAttribArray(e)
			}
		},
		{
			key: "buffer",
			get: function() {
				return this._object
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(280),
	p = i(v),
	_ = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, s.
		default)(this, e);
			var i = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n));
			return i._initialize(n),
			i
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_onCreate",
			value: function() {
				return this.gl.createTexture()
			}
		},
		{
			key: "_onDelete",
			value: function() {
				this.unbind(),
				this.gl.deleteTexture(this._object)
			}
		},
		{
			key: "_initialize",
			value: function(t) {
				var e = t.pixels,
				n = t.originalWidth,
				i = t.originalHeight,
				o = t.width,
				r = t.height,
				a = t.internalformat,
				s = t.type,
				l = void 0 === s ? "UNSIGNED_BYTE": s,
				u = t.format,
				c = void 0 === u ? "RGBA": u,
				f = t.target,
				d = void 0 === f ? "TEXTURE_2D": f,
				h = e && e.width,
				v = e && e.height;
				this.pixels = e || null,
				this.originalWidth = n || h,
				this.originalHeight = i || v,
				this.width = o || h,
				this.height = r || v,
				this.type = l,
				this.format = c,
				this.internalformat = a || c,
				this.target = d,
				this._uploaded = !1
			}
		},
		{
			key: "bind",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				t = t || this.gl;
				var n = this.target,
				i = this._object,
				o = t.TEXTURE0 + (e.textureIndex || 0);
				t.activeTexture(o),
				t.bindTexture(t[n], i)
			}
		},
		{
			key: "unbind",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				t = t || this.gl;
				var n = this.target,
				i = t.TEXTURE0 + (e.textureIndex || 0);
				t.activeTexture(i),
				t.bindTexture(this.gl[n], null)
			}
		},
		{
			key: "resize",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
				this.width = t,
				this.height = e;
				var i = this.gl,
				o = this.target;
				i && (this.bind(null, n), this._preSet(n), i.texImage2D(i[o], 0, i[this.internalformat], t, e, 0, i[this.format], i[this.type], this.pixels))
			}
		},
		{
			key: "update",
			value: function(t, e) {
				t && (this.originalWidth = t.width, this.width = t.width || e.width, this.height = t.height || e.height, this.originalHeight = t.height, this.pixels = t || null, this._uploaded = !1, this.upload(e))
			}
		},
		{
			key: "updateSub",
			value: function(t, e) {
				if (t) {
					this.bind(null, e),
					this._preSet(e);
					var n = this.gl,
					i = this.target,
					o = this.format,
					r = this.type,
					a = e.xOffset,
					s = e.yOffset;
					n.texSubImage2D(n[i], 0, a, s, n[o], n[r], t)
				}
			}
		},
		{
			key: "upload",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.gl || console.error("Texture donnot have gl, unable upload to GPU!");
				var e = this.gl,
				n = this.target;
				this.bind(null, t),
				this._preSet(t),
				this._uploaded || (e.isWebGL2 ? e.texImage2D(e[n], 0, e[this.internalformat], this.width, this.height, 0, e[this.format], e[this.type], this.pixels) : e.texImage2D(e[n], 0, e[this.internalformat], e[this.format], e[this.type], this.pixels), t.useMipmap && e.generateMipmap(e[n])),
				this._uploaded = !0
			}
		},
		{
			key: "copy",
			value: function(t) {
				var e = this.gl,
				n = this.width,
				i = this.height,
				o = this.target;
				e || console.error("Texture donnot have gl, unable upload to GPU!"),
				this.bind(null, t),
				this._preSet(t),
				e.copyTexImage2D(e[o], 0, e[this.internalformat], 0, 0, n, i, 0)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.gl && this.delete()
			}
		},
		{
			key: "_preSet",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = this.gl,
				n = this.target;
				t.flipY && e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL, 1),
				t.premultiply && e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0),
				e.texParameteri(e[n], e.TEXTURE_MIN_FILTER, t.minFilter || e.LINEAR),
				e.texParameteri(e[n], e.TEXTURE_MAG_FILTER, t.magFilter || e.LINEAR),
				e.texParameteri(e[n], e.TEXTURE_WRAP_S, t.wrapS || e.CLAMP_TO_EDGE),
				e.texParameteri(e[n], e.TEXTURE_WRAP_T, t.wrapT || e.CLAMP_TO_EDGE)
			}
		},
		{
			key: "texture",
			get: function() {
				return this._object
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e) {
	var n = {}.hasOwnProperty;
	t.exports = function(t, e) {
		return n.call(t, e)
	}
},
function(t, e, n) {
	var i = n(104),
	o = n(268);
	t.exports = n(103) ?
	function(t, e, n) {
		return i.f(t, e, o(1, n))
	}: function(t, e, n) {
		return t[e] = n,
		t
	}
},
function(t, e, n) {
	var i = n(321),
	o = n(245);
	t.exports = function(t) {
		return i(o(t))
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.UNIFORM_PART = "\n    uniform mat4 uMatrix;\n    uniform vec4 uCenter;\n    uniform float uZoom;\n\n    uniform vec3 uPixelsPerMeter;\n\n    uniform vec2 uResolution;\n    uniform vec3 uProject_uCommonUnitsPerWorldUnit;\n    uniform vec3 uProject_uCommonUnitsPerWorldUnit2;\n",
	e.PROJECTION_PART = "\n    float PI = 3.141592653589793;\n\n    float degreeToRadian(float deg) {\n      \treturn deg * PI / 180.;\n\t}\n\tconst float THRESHOLD_ZOOM = 9.0;\n\tfloat radianToDegree(float rad) {\n\t\treturn rad / PI * 180.;\n\t}\n\t\n\t\n\tvec2 fromPointToLatLng(vec2 point) {\n\t\tvec2 c = vec2(128.0, 128.0);\n\t\tfloat lng = (point.x - c.x) / 256. * 360.;\n\t\tfloat a = - (point.y - c.y) / 256. * 2. * PI;\n\t\tfloat lat = radianToDegree(2. * atan(exp(a)) - PI / 2.);\n\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\treturn vec2(lng, lat);\n\t}\n\n\n    vec2 fromLatLngToPoint(vec2 latlng) {\n      \tvec2 c = vec2(0.0, 0.0);\n      \tvec2 d = vec2(128.0, 128.0);\n      \tc.x = d.x + latlng.x * (256. / 360.);\n      \tfloat e = clamp(sin(degreeToRadian(latlng.y)), -(1. - 1E-15), 1. - 1E-15);\n      \tc.y = d.y + 0.5 * log((1. + e) / (1. - e)) * -(256. / (2. * PI));\n      \treturn c;\n    }\n\n\n\n    vec2 project_position(vec2 latlng, float mapzoom) {\n      \tvec2 tileCoord = fromLatLngToPoint(latlng);\n      \tfloat dimension = pow(2., mapzoom);\n      \ttileCoord.xy *= dimension;\n\n      \treturn tileCoord;\n    }\n\n\n    vec2 project_view_local_position(vec2 latlng) {\n      \tvec2 centerCoord = project_position(uCenter.xy, uZoom);\n      \tvec2 p = project_position(latlng.xy, uZoom);\n\n      \t\n      \treturn vec2(p.x - centerCoord.x, centerCoord.y - p.y);\n    }\n\n    vec3 project_offset(vec3 offset) {\n      \tfloat dy = offset.y;\n\t\t\n      \tdy = clamp(dy, -1., 1.);\n      \tvec3 commonUnitsPerWorldUnit = uProject_uCommonUnitsPerWorldUnit + uProject_uCommonUnitsPerWorldUnit2 * dy;\n\t\t\n      \treturn vec3(offset.xyz * commonUnitsPerWorldUnit.xyz);\n    }\n    \n\n\tvec3 project_view_local_position_precision(vec3 latlngHigh, vec2 latlngLow) {\n\t\t\n\n\t\t\n\t\tvec3 temp_latlng_high = vec3(latlngHigh.x ,latlngHigh.y, latlngHigh.z);\n\t\t\n\t\tif (uCenter.x > 0.0) {\n\t\t\ttemp_latlng_high = vec3(latlngHigh.x ,latlngHigh.y, latlngHigh.z);\n\t\t} else {\n\t\t\ttemp_latlng_high = vec3(latlngHigh.x ,latlngHigh.y, latlngHigh.z);\n\t\t}\n\n\t\tvec2 high = temp_latlng_high.xy - uCenter.xy;\n\t\tvec2 low = latlngLow.xy - uCenter.zw;\n\n\t\treturn mix(\n\t\t\tvec3(project_view_local_position(temp_latlng_high.xy), uProject_uCommonUnitsPerWorldUnit.z * temp_latlng_high.z),\n\t\t\tproject_offset(vec3(high + low, temp_latlng_high.z)),\n\t\t\tstep(9.0, uZoom)\n\t\t);\n\t}\n\n\n    vec2 project_view_local_position_precision(vec2 latlngHigh, vec2 latlngLow) {\n      \tvec3 result = project_view_local_position_precision(vec3(latlngHigh.xy, 0.0), latlngLow);\n\n      \treturn result.xy;\n\t}\n\t\n  vec2 centerPositiveCross0( vec3 startTemp, vec3 endTemp,vec3 latlngHigh,vec3 endLatlngHigh,float startLng,float endLng,float centerLng, float halfPixelDegree){\n    startTemp.x = mix(latlngHigh.x ,latlngHigh.x + 360.0, step(halfPixelDegree, centerLng - startLng) * step( halfPixelDegree, centerLng - endLng));\n    endTemp.x = mix(endLatlngHigh.x ,endLatlngHigh.x + 360.0, step(halfPixelDegree, centerLng - startLng) * step( halfPixelDegree, centerLng - endLng));\n    return vec2(startTemp.x, endTemp.x);\n  }\n\n  vec2 centerPositiveCross180( vec3 startTemp, vec3 endTemp,vec3 latlngHigh,vec3 endLatlngHigh,float startLng,float endLng,float centerLng, float halfPixelDegree){\n    float transit = 1.0;\n\n    startTemp.x = mix(latlngHigh.x , latlngHigh.x + 360.0, step( halfPixelDegree,centerLng -startLng));\n\n    endTemp.x = mix(endLatlngHigh.x , endLatlngHigh.x + 360.0, step( halfPixelDegree, centerLng -endLng));\n    transit = step(halfPixelDegree,centerLng -startLng) * step(halfPixelDegree, centerLng -endLng);\n\n\n\n    endTemp.x = mix(\n      endTemp.x,\n      mix(endLatlngHigh.x , endLatlngHigh.x + 360.0, step(startLng - endLng,180.0)),\n      transit\n    );\n\n    startTemp.x = mix(\n      startTemp.x,\n      mix(latlngHigh.x , latlngHigh.x + 360.0, step( endLng - startLng ,180.0)),\n      transit\n    );\n     return vec2(startTemp.x, endTemp.x);\n  }\n\n  vec2 centerNegativeCross0( vec3 startTemp, vec3 endTemp,vec3 latlngHigh,vec3 endLatlngHigh,float startLng,float endLng,float centerLng, float halfPixelDegree){\n    startTemp.x = mix(latlngHigh.x , latlngHigh.x - 360.0, step(halfPixelDegree, startLng - centerLng ) * step( halfPixelDegree, endLng - centerLng));\n    endTemp.x = mix(endLatlngHigh.x , endLatlngHigh.x - 360.0, step(halfPixelDegree, startLng - centerLng ) * step( halfPixelDegree, endLng - centerLng));\n    return vec2(startTemp.x, endTemp.x);\n  }\n\n  vec2 centerNegativeCross180( vec3 startTemp, vec3 endTemp,vec3 latlngHigh,vec3 endLatlngHigh,float startLng,float endLng,float centerLng, float halfPixelDegree){\n    float transit = 1.0;\n    startTemp.x = mix(latlngHigh.x , latlngHigh.x - 360.0, step( halfPixelDegree, startLng - centerLng));\n    endTemp.x = mix(endLatlngHigh.x , endLatlngHigh.x - 360.0, step( halfPixelDegree, endLng - centerLng));\n\n    transit = step(halfPixelDegree,centerLng -startLng) * step(halfPixelDegree, centerLng -endLng);\n    startTemp.x = mix(\n      startTemp.x,\n      mix(latlngHigh.x , latlngHigh.x - 360.0, step( startLng - endLng  ,180.0)),\n      transit\n    );\n    endTemp.x = mix(\n      endTemp.x,\n      mix(endLatlngHigh.x , endLatlngHigh.x - 360.0, step(endLng - startLng ,180.0)),\n      transit\n    );\n    return vec2(startTemp.x, endTemp.x);\n  }\n\n\tvoid geodesic_project_view_local_precision(vec3 latlngHigh, vec2 latlngLow,vec3 endLatlngHigh, vec2 endLatlngLow, inout vec3 geodesic_Position_Start, inout vec3 geodesic_Position_End, vec2 uProject_uDegreePerPixels) {\n\t\t\n    float halfPixelDegree = uResolution.x * uProject_uDegreePerPixels.x / 2.0;\n\t\tvec3 startTemp = latlngHigh;\n\t\tvec3 endTemp = endLatlngHigh;\n\t\tfloat startLng = latlngHigh.x + latlngLow.x;\n    float endLng = endLatlngHigh.x + endLatlngLow.x;\n    float centerLng = uCenter.x + uCenter.z;\n    vec2 startEndLngCross0 = mix(\n      centerNegativeCross0(startTemp,endTemp,latlngHigh,endLatlngHigh,startLng,endLng,centerLng, halfPixelDegree),\n      centerPositiveCross0(startTemp,endTemp,latlngHigh,endLatlngHigh,startLng,endLng,centerLng, halfPixelDegree),\n      step(0.0, uCenter.x)\n    );\n    vec2 startEndLngCross180 = mix(\n      centerNegativeCross180(startTemp,endTemp,latlngHigh,endLatlngHigh,startLng,endLng,centerLng, halfPixelDegree),\n      centerPositiveCross180(startTemp,endTemp,latlngHigh,endLatlngHigh,startLng,endLng,centerLng, halfPixelDegree),\n      step(0.0, uCenter.x)\n    );\n    startTemp.x = mix(\n      startEndLngCross180.x,\n      startEndLngCross0.x,\n      step(abs(startLng - endLng), 180.0));\n    endTemp.x = mix(\n      startEndLngCross180.y,\n      startEndLngCross0.y,\n      step(abs(startLng - endLng), 180.0));\n  \n\t\tvec3 startNew = project_view_local_position_precision(startTemp, latlngLow);\n\t\tvec3 endNew = project_view_local_position_precision(endTemp, endLatlngLow);\n\t\tgeodesic_Position_Start = startNew;\n\t\tgeodesic_Position_End = endNew;\n\t}\n\tvec3 latlng_to_cartesian(vec2 latlng) {\n\t\t\n\t\tvec2 spherical = vec2(degreeToRadian(latlng.x), degreeToRadian(latlng.y));\n\t\t\n\t\t\n\t\tvec3 cartesian = vec3(\n\t\t\tcos(spherical.y) * sin(spherical.x),\n\t\t\tsin(spherical.y),\n\t\t\tcos(spherical.y) * cos(spherical.x)\n\t\t);\n\n\t\treturn cartesian;\n\t}\n\t\n\t\n\tvec4 project_view_sphere_position(vec2 latlng) {\n\t\tvec3 cartesian = latlng_to_cartesian(latlng);\n\n\t\t\n\t\tfloat rotateY = - degreeToRadian(uCenter.x);\n\t\tfloat rotateX = degreeToRadian(uCenter.y);\n\t\tfloat r = 256. * pow(2., uZoom) / (2. * PI);\n\t\tmat4 rotate1 = mat4(\n\t\t\tcos(rotateY), 0., -sin(rotateY), 0.,\n\t\t\t0., 1., 0., 0.,\n\t\t\tsin(rotateY), 0., cos(rotateY), 0.,\n\t\t\t0., 0., 0., 1.\n\t\t);\n\t\tmat4 rotate2 = mat4(\n\t\t\t1., 0., 0., 0.,\n\t\t\t0., cos(rotateX), sin(rotateX), 0.,\n\t\t\t0., -sin(rotateX), cos(rotateX), 0.,\n\t\t\t0., 0., 0., 1.\n\t\t);\n\t\tmat4 scaleAndTrans = mat4(\n\t\t\tr, 0., 0., 0.,\n\t\t\t0., r, 0., 0.,\n\t\t\t0., 0., r, 0.,\n\t\t\t0., 0., -r, 1.\n\t\t);\n\t\tvec4 position = scaleAndTrans * rotate2 * rotate1 * vec4(cartesian, 1.0);\n\t\treturn position;\n\t}\n\n\n    vec2 proj_position_to_screen(vec4 device) {\n\t\tvec3 device_normal = device.xyz / device.w;\n\t\tvec2 clip_pos = (device_normal * 0.5 + 0.5).xy;\n\t\treturn clip_pos * uResolution;\n    }\n    \n\n\tvec4 screen_to_proj_position(vec2 screen, float z, float w) {\n\t    vec2 clip_pos = screen / uResolution;\n\t    vec2 device_normal = clip_pos * 2.0 - 1.0;\n\t    return vec4(device_normal * w, z, w);\n\t}\n\n    vec3 project_scale(vec3 meters) {\n      \treturn meters * uPixelsPerMeter;\n    }\n\n    vec2 rotate_by_angle_onScreen(vec2 vertex, float angle) {\n      \tfloat angle_radian = angle * PI / 180.0;\n      \tfloat cos_angle = cos(angle_radian);\n      \tfloat sin_angle = sin(angle_radian);\n      \tmat2 rotationMatrix = mat2(cos_angle, -sin_angle, sin_angle, cos_angle);\n      \treturn rotationMatrix * vertex;\n    }\n",
	e.SDF_PART = "\n\t\n\tfloat distance = texture2D(u_sampler, vTextureCoords).a;\n\n\t\n\tfloat finalAlpha = smoothstep(usedBuff - vGamma, usedBuff + vGamma, distance);\n\n\t\n\tfloat outlineFactor = smoothstep(u_buffer - vGamma, u_buffer + vGamma, distance);\n\n\t\n\tvec4 color = mix(vStrokeColor, vColor, outlineFactor) * finalAlpha;\n"
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.EllipseStyle = e.RectangleStyle = e.CircleStyle = e.ExtrudablePolygonStyle = e.PolygonStyle = void 0;
	var o = n(3),
	r = i(o),
	a = n(5),
	s = i(a),
	l = n(4),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(10),
	h = {
		color: "rgba(55,119,255,0.16)",
		borderColor: "#3777FF",
		showBorder: !0,
		borderWidth: 2,
		borderDashArray: [0, 0],
		extrudeHeight: 1
	},
	v = e.PolygonStyle = function t(e) { (0, f.
	default)(this, t),
		e = (0, d.extend)({},
		h, e),
		this.color = e.color,
		this.borderColor = e.borderColor,
		this.showBorder = !0 === e.showBorder,
		this.borderWidth = e.borderWidth,
		this.borderDashArray = e.borderDashArray
	};
	e.ExtrudablePolygonStyle = function t(e) { (0, f.
	default)(this, t),
		e = (0, d.extend)({},
		h, e),
		this.color = e.color,
		this.borderColor = e.borderColor,
		this.showBorder = !0 === e.showBorder,
		this.extrudeHeight = e.extrudeHeight
	},
	e.CircleStyle = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, s.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, u.
	default)(e, t),
		e
	} (v),
	e.RectangleStyle = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, s.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, u.
	default)(e, t),
		e
	} (v),
	e.EllipseStyle = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, s.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, u.
	default)(e, t),
		e
	} (v)
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.deleteInstanceCacllback = function(t) {
		t.data && (t.data = null),
		t.buffer && t.buffer.delete()
	},
	e.deleteBuffersCallback = function(t) {
		t.vertices && t.vertices.delete(),
		t.indeices && t.indeices.delete()
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.GEOMETRY_TYPES = {
		POINT: "POINT",
		POLYLINE: "POLYLINE",
		POLYGON: "POLYGON",
		LABEL: "LABEL",
		CIRCLE: "CIRCLE",
		RECTANGLE: "RECTANGLE",
		ELLIPSE: "ELLIPSE",
		MASK: "MASK",
		HIGHLIGHT: "HIGHLIGHT"
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(309),
		__esModule: !0
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(75),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = function(t, e, n) {
		return e in t ? (0, o.
	default)(t, e, {
			value: n,
			enumerable: !0,
			configurable: !0,
			writable: !0
		}) : t[e] = n,
		t
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(16),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default ||
	function(t) {
		for (var e = 1; e < arguments.length; e++) {
			var n = arguments[e];
			for (var i in n) Object.prototype.hasOwnProperty.call(n, i) && (t[i] = n[i])
		}
		return t
	}
},
function(t, e, n) {
	n(225),
	t.exports = n(2).Number.isNaN
},
function(t, e, n) {
	var i = n(6);
	i(i.S, "Number", {
		isNaN: function(t) {
			return t != t
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(61);
	t.exports = function(t, e) {
		return !! t && i(function() {
			e ? t.call(null,
			function() {},
			1) : t.call(null)
		})
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		if (4 === t.length) {
			for (var e = "#",
			n = 1; n < 4; n += 1) e += t.slice(n, n + 1).concat(t.slice(n, n + 1));
			t = e
		}
		var i = t.slice(1);
		return {
			r: parseInt(i.slice(0, 2), 16),
			g: parseInt(i.slice(2, 4), 16),
			b: parseInt(i.slice(4), 16)
		}
	}
	function r(t) {
		return t = t.replace(/rgb/, "rgba").replace(")", ",") + "1)",
		a(t)
	}
	function a(t) {
		return t = t.replace(/rgba\(/, "").replace(")", "").split(","),
		{
			r: parseInt(t[0]),
			g: parseInt(t[1]),
			b: parseInt(t[2]),
			a: parseFloat(t[3])
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(41),
	d = i(f),
	h = n(398),
	v = d.
default.isString,
	p = d.
default.isArray,
	_ = d.
default.isUndefined,
	m = function() {
		function t(e, n) {
			if ((0, l.
		default)(this, t), this.r = 1, this.g = 1, this.b = 1, this.a = 1, n && n.defaultColor && this.turnStr2Rgba(n.defaultColor), v(e)) this.turnStr2Rgba(e);
			else if (p(e)) {
				var i = n && n.max || 255;
				this.r = e[0] / i,
				this.g = e[1] / i,
				this.b = e[2] / i,
				this.a = _(e[3]) ? 1 : e[3]
			}
		}
		return (0, c.
	default)(t, [{
			key: "turnStr2Rgba",
			value: function(t) {
				t = t.toLowerCase();
				var e = h.HEX_REG,
				n = h.RGB_REG,
				i = h.RGBA_REG,
				s = null;
				e.test(t) ? s = o(t) : n.test(t) ? s = r(t) : i.test(t) && (s = a(t)),
				s && (this.r = s.r / 255, this.g = s.g / 255, this.b = s.b / 255, this.a = _(s.a) ? 1 : s.a)
			}
		},
		{
			key: "toArray",
			value: function() {
				return [this.r, this.g, this.b, this.a]
			}
		},
		{
			key: "toUpArray",
			value: function() {
				return this.toArray().map(function(t) {
					return 255 * t
				})
			}
		},
		{
			key: "toString",
			value: function() {
				return "rgba(" + ["" + Math.round(255 * this.r), "" + Math.round(255 * this.g), "" + Math.round(255 * this.b), "" + this.a].join(",") + ")"
			}
		}]),
		t
	} ();
	e.
default = m
},
function(t, e, n) {
	"use strict";
	var i = n(12),
	o = n(34),
	r = n(76),
	a = n(45),
	s = n(31),
	l = n(80),
	u = Object.assign;
	t.exports = !u || n(30)(function() {
		var t = {},
		e = {},
		n = Symbol(),
		i = "abcdefghijklmnopqrst";
		return t[n] = 7,
		i.split("").forEach(function(t) {
			e[t] = t
		}),
		7 != u({},
		t)[n] || Object.keys(u({},
		e)).join("") != i
	}) ?
	function(t, e) {
		for (var n = s(t), u = arguments.length, c = 1, f = r.f, d = a.f; u > c;) for (var h, v = l(arguments[c++]), p = f ? o(v).concat(f(v)) : o(v), _ = p.length, m = 0; _ > m;) h = p[m++],
		i && !d.call(v, h) || (n[h] = v[h]);
		return n
	}: u
},
function(t, e) {
	t.exports = function(t) {
		if ("function" != typeof t) throw TypeError(t + " is not a function!");
		return t
	}
},
function(t, e, n) {
	var i = n(231),
	o = n(321),
	r = n(136),
	a = n(88),
	s = n(522);
	t.exports = function(t, e) {
		var n = 1 == t,
		l = 2 == t,
		u = 3 == t,
		c = 4 == t,
		f = 6 == t,
		d = 5 == t || f,
		h = e || s;
		return function(e, s, v) {
			for (var p, _, m = r(e), g = o(m), y = i(s, v, 3), x = a(g.length), b = 0, S = n ? h(e, x) : l ? h(e, 0) : void 0; x > b; b++) if ((d || b in g) && (p = g[b], _ = y(p, b, m), t)) if (n) S[b] = _;
			else if (_) switch (t) {
			case 3:
				return ! 0;
			case 5:
				return p;
			case 6:
				return b;
			case 2:
				S.push(p)
			} else if (c) return ! 1;
			return f ? -1 : u || c ? c: S
		}
	}
},
function(t, e, n) {
	var i = n(229);
	t.exports = function(t, e, n) {
		if (i(t), void 0 === e) return t;
		switch (n) {
		case 1:
			return function(n) {
				return t.call(e, n)
			};
		case 2:
			return function(n, i) {
				return t.call(e, n, i)
			};
		case 3:
			return function(n, i, o) {
				return t.call(e, n, i, o)
			}
		}
		return function() {
			return t.apply(e, arguments)
		}
	}
},
function(t, e, n) {
	var i = n(322),
	o = n(268),
	r = n(216),
	a = n(254),
	s = n(214),
	l = n(526),
	u = Object.getOwnPropertyDescriptor;
	e.f = n(103) ? u: function(t, e) {
		if (t = r(t), e = a(e, !0), l) try {
			return u(t, e)
		} catch(t) {}
		if (s(t, e)) return o(!i.f.call(t, e), t[e])
	}
},
function(t, e, n) {
	var i = n(11),
	o = n(102),
	r = n(61);
	t.exports = function(t, e) {
		var n = (o.Object || {})[t] || Object[t],
		a = {};
		a[t] = e(n),
		i(i.S + i.F * r(function() {
			n(1)
		}), "Object", a)
	}
},
function(t, e) {
	var n = Math.ceil,
	i = Math.floor;
	t.exports = function(t) {
		return isNaN(t = +t) ? 0 : (t > 0 ? i: n)(t)
	}
},
, ,
function(t, e, n) {
	"use strict";
	function i(t) {
		for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = e.result, o = void 0 === n ? [] : n, r = e.dimensions, a = void 0 === r ? 3 : r, s = 0; s < t.length;) {
			var l = t[s];
			Array.isArray(l) || ArrayBuffer.isView(l) ? i(l, {
				result: o,
				dimensions: a
			}) : o.push(l.lng, l.lat),
			s += 1
		}
		return o
	}
	function o(t, e) {
		var n = t.getBounds();
		return n.covers(e) || n.intersects(e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isInFrustum = o,
	e.
default = {
		to3DVertices: function(t, e) {
			e = e || 0;
			for (var n = [], i = 0, o = t.length / 2; i < o; i++) n.push(t[2 * i], t[2 * i + 1], e, 1);
			return n
		},
		mixCoords: function(t, e, n, i) {
			var o = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1,
			r = [];
			if (i = i || 0, n) for (var a = 0,
			s = t.length / 2; a < s; a++) r.push([t[2 * a] * o + i, -1 * t[2 * a + 1] * o + i].concat(n));
			else for (var l = 0,
			u = t.length / 2; l < u; l++) r.push([t[2 * l] * o + i, -1 * t[2 * l + 1] * o + i, 0, 1]);
			return "polygon" === e && r.push(r[0]),
			r
		},
		flattenVertices: i,
		fillArray: function(t) {
			for (var e = t.target,
			n = t.source,
			i = t.start,
			o = void 0 === i ? 0 : i, r = t.count, a = void 0 === r ? 1 : r, s = n.length, l = a * s, u = 0, c = o; u < s; u++) e[c] = n[u],
			c += 1;
			for (; u < l;) u < l - u ? (e.copyWithin(o + u, o, o + u), u *= 2) : (e.copyWithin(o + u, o, o + l - u), u = l);
			return e
		}
	}
},
, ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return arguments.length > 1 && void 0 !== arguments[1] && arguments[1] ? [t + 1 & 255, t + 1 >> 8 & 255, t + 1 >> 8 >> 8 & 255, 255] : [t + 1 & 255, t + 1 >> 8 & 255, t + 1 >> 8 >> 8 & 255]
	}
	function r(t) {
		var e = (0, h.
	default)(t, 3);
		return e[0] + 256 * e[1] + 65536 * e[2] - 1
	}
	function a(t) {
		for (var e = new f.
	default,
		n = [], i = 0; i < t.length; i += 4) if (255 === t[i + 3]) {
			var o = r([t[i], t[i + 1], t[i + 2]]),
			a = s(o);
			a && a.id && !e.has(a.id) && (e.add(a.id), n.push(a))
		}
		return n
	}
	function s(t) {
		var e = void 0;
		return (0, u.
	default)(v.styleNameConfig).forEach(function(n) { (0, u.
		default)(v.styleNameConfig[n]).forEach(function(i) {
				if (v.styleNameConfig[n][i].includes(t)) return void(e = {
					type: n,
					id: t,
					tag: i
				})
			})
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var l = n(17),
	u = i(l),
	c = n(241),
	f = i(c),
	d = n(32),
	h = i(d);
	e.encodePickingColor = o,
	e.decodePickingColor = r,
	e.decodeStylePickingColor = a;
	var v = n(386)
},
function(t, e, n) {
	t.exports = {
	default:
		n(412),
		__esModule: !0
	}
},
function(t, e, n) {
	n(243),
	t.exports = n(2).Object.assign
},
function(t, e, n) {
	var i = n(6);
	i(i.S + i.F, "Object", {
		assign: n(228)
	})
},
function(t, e) {
	var n = {}.toString;
	t.exports = function(t) {
		return n.call(t).slice(8, -1)
	}
},
function(t, e) {
	t.exports = function(t) {
		if (void 0 == t) throw TypeError("Can't call method on  " + t);
		return t
	}
},
function(t, e, n) {
	"use strict";
	if (n(103)) {
		var i = n(263),
		o = n(62),
		r = n(61),
		a = n(11),
		s = n(354),
		l = n(441),
		u = n(231),
		c = n(284),
		f = n(268),
		d = n(215),
		h = n(286),
		v = n(234),
		p = n(88),
		_ = n(545),
		m = n(269),
		g = n(254),
		y = n(214),
		x = n(320),
		b = n(63),
		S = n(136),
		w = n(428),
		E = n(264),
		T = n(266),
		A = n(265).f,
		P = n(443),
		I = n(270),
		k = n(78),
		L = n(230),
		M = n(344),
		C = n(323),
		R = n(444),
		B = n(285),
		N = n(350),
		O = n(287),
		D = n(421),
		z = n(520),
		F = n(104),
		V = n(232),
		Y = F.f,
		U = V.f,
		j = o.RangeError,
		G = o.TypeError,
		Z = o.Uint8Array,
		H = Array.prototype,
		W = l.ArrayBuffer,
		X = l.DataView,
		Q = L(0),
		q = L(2),
		K = L(3),
		J = L(4),
		$ = L(5),
		tt = L(6),
		et = M(!0),
		nt = M(!1),
		it = R.values,
		ot = R.keys,
		rt = R.entries,
		at = H.lastIndexOf,
		st = H.reduce,
		lt = H.reduceRight,
		ut = H.join,
		ct = H.sort,
		ft = H.slice,
		dt = H.toString,
		ht = H.toLocaleString,
		vt = k("iterator"),
		pt = k("toStringTag"),
		_t = I("typed_constructor"),
		mt = I("def_constructor"),
		gt = s.CONSTR,
		yt = s.TYPED,
		xt = s.VIEW,
		bt = L(1,
		function(t, e) {
			return At(C(t, t[mt]), e)
		}),
		St = r(function() {
			return 1 === new Z(new Uint16Array([1]).buffer)[0]
		}),
		wt = !!Z && !!Z.prototype.set && r(function() {
			new Z(1).set({})
		}),
		Et = function(t, e) {
			var n = v(t);
			if (n < 0 || n % e) throw j("Wrong offset!");
			return n
		},
		Tt = function(t) {
			if (b(t) && yt in t) return t;
			throw G(t + " is not a typed array!")
		},
		At = function(t, e) {
			if (! (b(t) && _t in t)) throw G("It is not a typed array constructor!");
			return new t(e)
		},
		Pt = function(t, e) {
			return It(C(t, t[mt]), e)
		},
		It = function(t, e) {
			for (var n = 0,
			i = e.length,
			o = At(t, i); i > n;) o[n] = e[n++];
			return o
		},
		kt = function(t, e, n) {
			Y(t, e, {
				get: function() {
					return this._d[n]
				}
			})
		},
		Lt = function(t) {
			var e, n, i, o, r, a, s = S(t),
			l = arguments.length,
			c = l > 1 ? arguments[1] : void 0,
			f = void 0 !== c,
			d = P(s);
			if (void 0 != d && !w(d)) {
				for (a = d.call(s), i = [], e = 0; ! (r = a.next()).done; e++) i.push(r.value);
				s = i
			}
			for (f && l > 2 && (c = u(c, arguments[2], 2)), e = 0, n = p(s.length), o = At(this, n); n > e; e++) o[e] = f ? c(s[e], e) : s[e];
			return o
		},
		Mt = function() {
			for (var t = 0,
			e = arguments.length,
			n = At(this, e); e > t;) n[t] = arguments[t++];
			return n
		},
		Ct = !!Z && r(function() {
			ht.call(new Z(1))
		}),
		Rt = function() {
			return ht.apply(Ct ? ft.call(Tt(this)) : Tt(this), arguments)
		},
		Bt = {
			copyWithin: function(t, e) {
				return z.call(Tt(this), t, e, arguments.length > 2 ? arguments[2] : void 0)
			},
			every: function(t) {
				return J(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			fill: function(t) {
				return D.apply(Tt(this), arguments)
			},
			filter: function(t) {
				return Pt(this, q(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0))
			},
			find: function(t) {
				return $(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			findIndex: function(t) {
				return tt(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			forEach: function(t) {
				Q(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			indexOf: function(t) {
				return nt(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			includes: function(t) {
				return et(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			join: function(t) {
				return ut.apply(Tt(this), arguments)
			},
			lastIndexOf: function(t) {
				return at.apply(Tt(this), arguments)
			},
			map: function(t) {
				return bt(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			reduce: function(t) {
				return st.apply(Tt(this), arguments)
			},
			reduceRight: function(t) {
				return lt.apply(Tt(this), arguments)
			},
			reverse: function() {
				for (var t, e = this,
				n = Tt(e).length, i = Math.floor(n / 2), o = 0; o < i;) t = e[o],
				e[o++] = e[--n],
				e[n] = t;
				return e
			},
			some: function(t) {
				return K(Tt(this), t, arguments.length > 1 ? arguments[1] : void 0)
			},
			sort: function(t) {
				return ct.call(Tt(this), t)
			},
			subarray: function(t, e) {
				var n = Tt(this),
				i = n.length,
				o = m(t, i);
				return new(C(n, n[mt]))(n.buffer, n.byteOffset + o * n.BYTES_PER_ELEMENT, p((void 0 === e ? i: m(e, i)) - o))
			}
		},
		Nt = function(t, e) {
			return Pt(this, ft.call(Tt(this), t, e))
		},
		Ot = function(t) {
			Tt(this);
			var e = Et(arguments[1], 1),
			n = this.length,
			i = S(t),
			o = p(i.length),
			r = 0;
			if (o + e > n) throw j("Wrong length!");
			for (; r < o;) this[e + r] = i[r++]
		},
		Dt = {
			entries: function() {
				return rt.call(Tt(this))
			},
			keys: function() {
				return ot.call(Tt(this))
			},
			values: function() {
				return it.call(Tt(this))
			}
		},
		zt = function(t, e) {
			return b(t) && t[yt] && "symbol" != typeof e && e in t && String( + e) == String(e)
		},
		Ft = function(t, e) {
			return zt(t, e = g(e, !0)) ? f(2, t[e]) : U(t, e)
		},
		Vt = function(t, e, n) {
			return ! (zt(t, e = g(e, !0)) && b(n) && y(n, "value")) || y(n, "get") || y(n, "set") || n.configurable || y(n, "writable") && !n.writable || y(n, "enumerable") && !n.enumerable ? Y(t, e, n) : (t[e] = n.value, t)
		};
		gt || (V.f = Ft, F.f = Vt),
		a(a.S + a.F * !gt, "Object", {
			getOwnPropertyDescriptor: Ft,
			defineProperty: Vt
		}),
		r(function() {
			dt.call({})
		}) && (dt = ht = function() {
			return ut.call(this)
		});
		var Yt = h({},
		Bt);
		h(Yt, Dt),
		d(Yt, vt, Dt.values),
		h(Yt, {
			slice: Nt,
			set: Ot,
			constructor: function() {},
			toString: dt,
			toLocaleString: Rt
		}),
		kt(Yt, "buffer", "b"),
		kt(Yt, "byteOffset", "o"),
		kt(Yt, "byteLength", "l"),
		kt(Yt, "length", "e"),
		Y(Yt, pt, {
			get: function() {
				return this[yt]
			}
		}),
		t.exports = function(t, e, n, l) {
			l = !!l;
			var u = t + (l ? "Clamped": "") + "Array",
			f = "get" + t,
			h = "set" + t,
			v = o[u],
			m = v || {},
			g = v && T(v),
			y = !v || !s.ABV,
			S = {},
			w = v && v.prototype,
			P = function(t, n) {
				var i = t._d;
				return i.v[f](n * e + i.o, St)
			},
			I = function(t, n, i) {
				var o = t._d;
				l && (i = (i = Math.round(i)) < 0 ? 0 : i > 255 ? 255 : 255 & i),
				o.v[h](n * e + o.o, i, St)
			},
			k = function(t, e) {
				Y(t, e, {
					get: function() {
						return P(this, e)
					},
					set: function(t) {
						return I(this, e, t)
					},
					enumerable: !0
				})
			};
			y ? (v = n(function(t, n, i, o) {
				c(t, v, u, "_d");
				var r, a, s, l, f = 0,
				h = 0;
				if (b(n)) {
					if (! (n instanceof W || "ArrayBuffer" == (l = x(n)) || "SharedArrayBuffer" == l)) return yt in n ? It(v, n) : Lt.call(v, n);
					r = n,
					h = Et(i, e);
					var m = n.byteLength;
					if (void 0 === o) {
						if (m % e) throw j("Wrong length!");
						if ((a = m - h) < 0) throw j("Wrong length!")
					} else if ((a = p(o) * e) + h > m) throw j("Wrong length!");
					s = a / e
				} else s = _(n),
				a = s * e,
				r = new W(a);
				for (d(t, "_d", {
					b: r,
					o: h,
					l: a,
					e: s,
					v: new X(r)
				}); f < s;) k(t, f++)
			}), w = v.prototype = E(Yt), d(w, "constructor", v)) : r(function() {
				v(1)
			}) && r(function() {
				new v( - 1)
			}) && N(function(t) {
				new v,
				new v(null),
				new v(1.5),
				new v(t)
			},
			!0) || (v = n(function(t, n, i, o) {
				c(t, v, u);
				var r;
				return b(n) ? n instanceof W || "ArrayBuffer" == (r = x(n)) || "SharedArrayBuffer" == r ? void 0 !== o ? new m(n, Et(i, e), o) : void 0 !== i ? new m(n, Et(i, e)) : new m(n) : yt in n ? It(v, n) : Lt.call(v, n) : new m(_(n))
			}), Q(g !== Function.prototype ? A(m).concat(A(g)) : A(m),
			function(t) {
				t in v || d(v, t, m[t])
			}), v.prototype = w, i || (w.constructor = v));
			var L = w[vt],
			M = !!L && ("values" == L.name || void 0 == L.name),
			C = Dt.values;
			d(v, _t, !0),
			d(w, yt, u),
			d(w, xt, !0),
			d(w, mt, v),
			(l ? new v(1)[pt] == u: pt in w) || Y(w, pt, {
				get: function() {
					return u
				}
			}),
			S[u] = v,
			a(a.G + a.W + a.F * (v != m), S),
			a(a.S, u, {
				BYTES_PER_ELEMENT: e
			}),
			a(a.S + a.F * r(function() {
				m.of.call(v, 1)
			}), u, {
				from: Lt,
				of: Mt
			}),
			"BYTES_PER_ELEMENT" in w || d(w, "BYTES_PER_ELEMENT", e),
			a(a.P, u, Bt),
			O(u),
			a(a.P + a.F * wt, u, {
				set: Ot
			}),
			a(a.P + a.F * !M, u, Dt),
			i || w.toString == dt || (w.toString = dt),
			a(a.P + a.F * r(function() {
				new v(1).slice()
			}), u, {
				slice: Nt
			}),
			a(a.P + a.F * (r(function() {
				return [1, 2].toLocaleString() != new v([1, 2]).toLocaleString()
			}) || !r(function() {
				w.toLocaleString.call([1, 2])
			})), u, {
				toLocaleString: Rt
			}),
			B[u] = M ? L: C,
			i || M || d(w, vt, C)
		}
	} else t.exports = function() {}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(122),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default[1]
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.CONTROL_POSITION_STYLE = e.CONTROL_POSITION = e.MAP_APPROVAL_NUMBER = e.LOGO_URL = e.DEFAULT_CONTROL_ID = void 0;
	var i = n(221),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = (e.DEFAULT_CONTROL_ID = {
		SCALE: "scale",
		ZOOM: "zoom",
		FLOOR: "floor",
		ROTATION: "rotation"
	},
	e.LOGO_URL = {
		DEFAULT_LOGO: "https://mapapi.qq.com/web/jsapi/logo/logo_def.png",
		GRAY_LOGO: "https://mapapi.qq.com/web/jsapi/logo/logo_gray.png"
	},
	e.MAP_APPROVAL_NUMBER = {
		satellite: "GS(2022)1087",
		vector: "GS(2022)2224"
	},
	e.CONTROL_POSITION = {
		TOP_LEFT: 0,
		TOP_CENTER: 1,
		TOP_RIGHT: 2,
		CENTER_LEFT: 3,
		CENTER: 4,
		CENTER_RIGHT: 5,
		BOTTOM_LEFT: 6,
		BOTTOM_CENTER: 7,
		BOTTOM_RIGHT: 8
	});
	e.CONTROL_POSITION_STYLE = function() {
		var t = {};
		return (0, o.
	default)(r).forEach(function(e) {
			var n = e % 3,
			i = Math.floor(e / 3),
			o = "position: absolute;";
			switch (i) {
			case 0:
				o += "top:0px;";
				break;
			case 1:
				o += "top:50%;";
				break;
			case 2:
				o += "bottom:0px;"
			}
			switch (n) {
			case 0:
				o += "left:0px;";
				break;
			case 1:
				o += "left:50%;";
				break;
			case 2:
				o += "right:0px;"
			}
			o += "transform: translate(" + (1 === n ? "-50%": "0") + ", " + (1 === i ? "-50%": "0") + ");",
			t[e] = o
		}),
		t
	} ()
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.TILE_STATE = void 0;
	var o = n(16),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(10),
	f = e.TILE_STATE = {
		unloaded: "tile_unloaded",
		loading: "tile_loading",
		loaded: "tile_loaded",
		errored: "tile_errored",
		reloading: "tile_reloading",
		expired: "tile_expired"
	},
	d = function() {
		function t(e, n) { (0, s.
		default)(this, t),
			this.coord = e,
			this.uid = c.uniqueId(),
			this.tileSize = n,
			this.state = f.loading,
			this.visible = !0
		}
		return (0, u.
	default)(t, [{
			key: "show",
			value: function() {
				this.visible = !0
			}
		},
		{
			key: "hide",
			value: function() {
				this.visible = !1
			}
		},
		{
			key: "setData",
			value: function(t) {
				if (t && !t.baseData && (this.state = f.loaded), t && t.incrementData) return void(this._data = (0, r.
			default)({},
				this._data, t));
				this._data = t
			}
		},
		{
			key: "updateData",
			value: function(t) {
				this.setData(t)
			}
		},
		{
			key: "getData",
			value: function() {
				return this._data
			}
		},
		{
			key: "getQueryData",
			value: function(t) {
				return this._data && this.visible ? t && "" !== t ? this._data[t] : this._data: null
			}
		},
		{
			key: "hasData",
			value: function() {
				return this.state === f.loaded || this.state === f.reloading || this.state === f.expired
			}
		},
		{
			key: "isLoading",
			value: function() {
				return this.state === f.loading || this.state === f.reloading
			}
		},
		{
			key: "isLoaded",
			value: function() {
				return this.state === f.loaded || this.state === f.errored || this.state === f.expired
			}
		},
		{
			key: "clear",
			value: function() {
				this.unloadData()
			}
		},
		{
			key: "unloadData",
			value: function() {
				this._data = null,
				this.state = f.unloaded
			}
		}]),
		t
	} ();
	e.
default = d
},
function(t, e, n) {
	"use strict";
	var i = n(8),
	o = n(6),
	r = n(40),
	a = n(30),
	s = n(19),
	l = n(99),
	u = n(71),
	c = n(91),
	f = n(7),
	d = n(42),
	h = n(14).f,
	v = n(259)(0),
	p = n(12);
	t.exports = function(t, e, n, _, m, g) {
		var y = i[t],
		x = y,
		b = m ? "set": "add",
		S = x && x.prototype,
		w = {};
		return p && "function" == typeof x && (g || S.forEach && !a(function() { (new x).entries().next()
		})) ? (x = e(function(e, n) {
			c(e, x, t, "_c"),
			e._c = new y,
			void 0 != n && u(n, m, e[b], e)
		}), v("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),
		function(t) {
			var e = "add" == t || "set" == t;
			t in S && (!g || "clear" != t) && s(x.prototype, t,
			function(n, i) {
				if (c(this, x, t), !e && g && !f(n)) return "get" == t && void 0;
				var o = this._c[t](0 === n ? 0 : n, i);
				return e ? this: o
			})
		}), g || h(x.prototype, "size", {
			get: function() {
				return this._c.size
			}
		})) : (x = _.getConstructor(e, t, m, b), l(x.prototype, n), r.NEED = !0),
		d(x, t),
		w[t] = x,
		o(o.G + o.W + o.F, w),
		g || _.setStrong(x, t, m),
		x
	}
},
function(t, e, n) {
	"use strict";
	var i = n(6),
	o = n(44),
	r = n(22),
	a = n(71);
	t.exports = function(t) {
		i(i.S, t, {
			from: function(t) {
				var e, n, i, s, l = arguments[1];
				return o(this),
				e = void 0 !== l,
				e && o(l),
				void 0 == t ? new this: (n = [], e ? (i = 0, s = r(l, arguments[2], 2), a(t, !1,
				function(t) {
					n.push(s(t, i++))
				})) : a(t, !1, n.push, n), new this(n))
			}
		})
	}
},
function(t, e, n) {
	"use strict";
	var i = n(6);
	t.exports = function(t) {
		i(i.S, t, {
			of: function() {
				for (var t = arguments.length,
				e = new Array(t); t--;) e[t] = arguments[t];
				return new this(e)
			}
		})
	}
},
function(t, e, n) {
	var i = n(270)("meta"),
	o = n(63),
	r = n(214),
	a = n(104).f,
	s = 0,
	l = Object.isExtensible ||
	function() {
		return ! 0
	},
	u = !n(61)(function() {
		return l(Object.preventExtensions({}))
	}),
	c = function(t) {
		a(t, i, {
			value: {
				i: "O" + ++s,
				w: {}
			}
		})
	},
	f = function(t, e) {
		if (!o(t)) return "symbol" == typeof t ? t: ("string" == typeof t ? "S": "P") + t;
		if (!r(t, i)) {
			if (!l(t)) return "F";
			if (!e) return "E";
			c(t)
		}
		return t[i].i
	},
	d = function(t, e) {
		if (!r(t, i)) {
			if (!l(t)) return ! 0;
			if (!e) return ! 1;
			c(t)
		}
		return t[i].w
	},
	h = function(t) {
		return u && v.NEED && l(t) && !r(t, i) && c(t),
		t
	},
	v = t.exports = {
		KEY: i,
		NEED: !1,
		fastKey: f,
		getWeak: d,
		onFreeze: h
	}
},
function(t, e, n) {
	var i = n(63);
	t.exports = function(t, e) {
		if (!i(t)) return t;
		var n, o;
		if (e && "function" == typeof(n = t.toString) && !i(o = n.call(t))) return o;
		if ("function" == typeof(n = t.valueOf) && !i(o = n.call(t))) return o;
		if (!e && "function" == typeof(n = t.toString) && !i(o = n.call(t))) return o;
		throw TypeError("Can't convert object to primitive value")
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		return Object.prototype.hasOwnProperty.call(t, e)
	}
	var o = "undefined" != typeof Uint8Array && "undefined" != typeof Uint16Array && "undefined" != typeof Int32Array;
	e.assign = function(t) {
		for (var e = Array.prototype.slice.call(arguments, 1); e.length;) {
			var n = e.shift();
			if (n) {
				if ("object" != typeof n) throw new TypeError(n + "must be non-object");
				for (var o in n) i(n, o) && (t[o] = n[o])
			}
		}
		return t
	},
	e.shrinkBuf = function(t, e) {
		return t.length === e ? t: t.subarray ? t.subarray(0, e) : (t.length = e, t)
	};
	var r = {
		arraySet: function(t, e, n, i, o) {
			if (e.subarray && t.subarray) return void t.set(e.subarray(n, n + i), o);
			for (var r = 0; r < i; r++) t[o + r] = e[n + r]
		},
		flattenChunks: function(t) {
			var e, n, i, o, r, a;
			for (i = 0, e = 0, n = t.length; e < n; e++) i += t[e].length;
			for (a = new Uint8Array(i), o = 0, e = 0, n = t.length; e < n; e++) r = t[e],
			a.set(r, o),
			o += r.length;
			return a
		}
	},
	a = {
		arraySet: function(t, e, n, i, o) {
			for (var r = 0; r < i; r++) t[o + r] = e[n + r]
		},
		flattenChunks: function(t) {
			return [].concat.apply([], t)
		}
	};
	e.setTyped = function(t) {
		t ? (e.Buf8 = Uint8Array, e.Buf16 = Uint16Array, e.Buf32 = Int32Array, e.assign(e, r)) : (e.Buf8 = Array, e.Buf16 = Array, e.Buf32 = Array, e.assign(e, a))
	},
	e.setTyped(o)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(106),
	p = i(v),
	_ = n(248),
	m = n(10),
	g = n(41),
	y = i(g),
	x = y.
default.isNumber,
	b = {},
	S = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			n.options = t;
			var i = t.id;
			return n.id = y.
		default.isUndefined(i) ? (0, m.uniqueId)() : i,
			n.init(t),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "init",
			value: function(t) {
				this.onInit(t),
				this.dom = this.createDOM(t)
			}
		},
		{
			key: "setPosition",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : _.CONTROL_POSITION.TOP_LEFT;
				return t !== this.position && (this.appendToContainer(t), this.position = t),
				this
			}
		},
		{
			key: "setClassName",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
				return this.dom && (this.dom.className = t),
				this.className = t,
				this
			}
		},
		{
			key: "getDomPositionContainer",
			value: function(t) {
				var e = t.id,
				n = this.options,
				i = n.position,
				o = n.className;
				return this.setPosition(i),
				this.setClassName(o),
				b[e][i]
			}
		},
		{
			key: "appendToContainer",
			value: function(t) {
				if (!this.map || !this.map.id) return void console.error("当前没有添加该控件，请先添加控件再设置位置！");
				var e = this.map.id;
				if (b[e] || (b[e] = {}), !b[e][t]) {
					b[e][t] = document.createElement("div");
					var n = b[e][t];
					n.style.right = "auto",
					n.style.left = "auto",
					n.style.top = "auto",
					n.style.bottom = "auto",
					n.style.cssText += _.CONTROL_POSITION_STYLE[t],
					_.CONTROL_POSITION.BOTTOM_LEFT,
					this.dom.parentNode && this.dom.parentNode.parentNode && this.dom.parentNode.parentNode.appendChild(n)
				}
				return b[e][t].firstChild ? b[e][t].insertBefore(this.dom, b[e][t].firstChild) : b[e][t].appendChild(this.dom),
				b[e][t]
			}
		},
		{
			key: "createDOM",
			value: function() {}
		},
		{
			key: "onInit",
			value: function() {}
		},
		{
			key: "onDestroy",
			value: function() {}
		},
		{
			key: "onAdd",
			value: function() {}
		},
		{
			key: "onRemove",
			value: function() {}
		},
		{
			key: "addTo",
			value: function(t, e) {
				this.map = t;
				var n = this.getDomPositionContainer(t);
				e.appendChild(n),
				this.onAdd()
			}
		},
		{
			key: "remove",
			value: function() {
				var t = this.map && this.map.id;
				if (this.dom) {
					var e = this.dom.parentNode;
					this.dom.remove(),
					e && !e.firstChild && (e.remove(), e = null, x(this.position) && t && delete b[t][this.position]),
					this.position = null,
					this.onRemove(),
					this.map = null
				}
			}
		},
		{
			key: "destroy",
			value: function() {
				this.remove(),
				this.onDestroy(),
				this.removeAllListeners(),
				this.dom = null,
				this.className = null,
				this.position = null,
				this.id = null
			}
		}]),
		e
	} (p.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(337),
	p = i(v),
	_ = n(29),
	m = n(41),
	g = i(m),
	y = n(143),
	x = n(23),
	b = n(106),
	S = n(10),
	w = g.
default.isNumber,
	E = g.
default.isUndefined,
	T = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return n.id = t.id || S.uniqueId(),
			n.type = t.type || null,
			n.sourceId = t.sourceId || null,
			n.setZoomRange(t.minZoom, t.maxZoom),
			n.setDataZoomRange(t.minDataZoom || t.minZoom, t.maxDataZoom || t.maxZoom),
			n.visible = !!E(t.visible) || Boolean(t.visible),
			n.setLevel(t.level || y.LAYER_LEVEL.GROUND),
			n.setZIndex(t.zIndex || 0),
			n.setOpacity(t.opacity),
			n._childLayers = {},
			n._initialize(t),
			t.map && n.setMap(t.map),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "getId",
			value: function() {
				return this.id
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				return t = Boolean(t),
				this._forEachChild(function(e, n) {
					n.setVisible(t)
				}),
				this.visible === t ? this: (this.visible = t, this._fire("layer", {}), this)
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return w(t) || (new _.BaseTypeError("Layer.zIndex", "number", t).error(), t = 0),
				this._forEachChild(function(e, n) {
					n.setZIndex(t)
				}),
				this.zIndex = t,
				this.setRank((0, y.getRank)(this.level, this.zIndex)),
				this
			}
		},
		{
			key: "setLevel",
			value: function(t) {
				this.level = t,
				this.setRank((0, y.getRank)(this.level, this.zIndex))
			}
		},
		{
			key: "setRank",
			value: function(t) {
				this.rank = t,
				this._forEachChild(function(e, n) {
					n.setRank(t)
				}),
				this.emit("rank_changed")
			}
		},
		{
			key: "getRank",
			value: function() {
				return this.rank
			}
		},
		{
			key: "setMap",
			value: function(t) {
				return t instanceof p.
			default || null === t ? this.map === t ? this: (this.map && (this.map.removeLayer(this.id), this._removeSource(), this.map = null), t && (this.map = t, t.addLayer(this), this._addSource()), this) : (console.error("传入的map参数并非TMap.Map实例"), this)
			}
		},
		{
			key: "getMap",
			value: function() {
				return this.map
			}
		},
		{
			key: "getZIndex",
			value: function() {
				return this.zIndex
			}
		},
		{
			key: "setZoomRange",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : x.minZoom,
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : x.maxZoom;
				return w(t) || (new _.BaseTypeError("Layer.minZoom", "number", t).error(), t = x.minZoom),
				w(e) || (new _.BaseTypeError("Layer.maxZoom", "number", e).error(), e = x.maxZoom),
				this._forEachChild(function(n, i) {
					i.setZoomRange(t, e)
				}),
				this.minZoom = t,
				this.maxZoom = e,
				this
			}
		},
		{
			key: "setDataZoomRange",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : x.minZoom,
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : x.maxZoom;
				return w(t) || (new _.BaseTypeError("Layer.minDataZoom", "number", t).error(), t = x.minZoom),
				w(e) || (new _.BaseTypeError("Layer.maxDataZoom", "number", e).error(), e = x.maxZoom),
				this._forEachChild(function(n, i) {
					i.setDataZoomRange(t, e)
				}),
				this.minDataZoom = t,
				this.maxDataZoom = e,
				this
			}
		},
		{
			key: "setOpacity",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
				return w(t) || (new _.BaseTypeError("Layer.opacity", "number", t).error(), t = 1),
				(t < 0 || t > 1) && (console.error("Layer.opacity 传入参数值范围应当在0~1之间！"), t = S.clamp(t, 0, 1)),
				this.opacity = t,
				this
			}
		},
		{
			key: "_removeSource",
			value: function() {}
		},
		{
			key: "_addSource",
			value: function() {}
		},
		{
			key: "_initialize",
			value: function() {}
		},
		{
			key: "isHidden",
			value: function(t) {
				return !! (this.minZoom && t < this.minZoom) || ( !! (this.maxZoom && t > this.maxZoom) || !this.visible)
			}
		},
		{
			key: "appendChild",
			value: function(t) {
				var n = t instanceof e ? t: new e(t);
				return n.setMap(null),
				n.setZIndex(this.zIndex),
				n.setRank(this.rank),
				n.setZoomRange(this.minZoom, this.maxZoom),
				n.setVisible(this.visible),
				this._childLayers[n.id] = n,
				n
			}
		},
		{
			key: "removeChild",
			value: function(t) {
				this._childLayers[t] && delete this._childLayers[t]
			}
		},
		{
			key: "hasChild",
			value: function(t) {
				return !! this._childLayers[t]
			}
		},
		{
			key: "getChild",
			value: function(t) {
				return this.hasChild(t) ? this._childLayers[t] : null
			}
		},
		{
			key: "_forEachChild",
			value: function(t) {
				S.forIn(this._childLayers,
				function(e, n) {
					t(e, n)
				})
			}
		},
		{
			key: "flat",
			value: function() {
				var t = [];
				return this.sourceId && t.push(this),
				this._forEachChild(function(e, n) {
					t = t.concat(n.flat())
				}),
				t
			}
		}]),
		e
	} (b);
	e.
default = T
},
,
function(t, e, n) {
	var i = n(22),
	o = n(80),
	r = n(31),
	a = n(52),
	s = n(312);
	t.exports = function(t, e) {
		var n = 1 == t,
		l = 2 == t,
		u = 3 == t,
		c = 4 == t,
		f = 6 == t,
		d = 5 == t || f,
		h = e || s;
		return function(e, s, v) {
			for (var p, _, m = r(e), g = o(m), y = i(s, v, 3), x = a(g.length), b = 0, S = n ? h(e, x) : l ? h(e, 0) : void 0; x > b; b++) if ((d || b in g) && (p = g[b], _ = y(p, b, m), t)) if (n) S[b] = _;
			else if (_) switch (t) {
			case 3:
				return ! 0;
			case 5:
				return p;
			case 6:
				return b;
			case 2:
				S.push(p)
			} else if (c) return ! 1;
			return f ? -1 : u || c ? c: S
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(14).f,
	o = n(51),
	r = n(99),
	a = n(22),
	s = n(91),
	l = n(71),
	u = n(72),
	c = n(108),
	f = n(119),
	d = n(12),
	h = n(40).fastKey,
	v = n(183),
	p = d ? "_s": "size",
	_ = function(t, e) {
		var n, i = h(e);
		if ("F" !== i) return t._i[i];
		for (n = t._f; n; n = n.n) if (n.k == e) return n
	};
	t.exports = {
		getConstructor: function(t, e, n, u) {
			var c = t(function(t, i) {
				s(t, c, e, "_i"),
				t._t = e,
				t._i = o(null),
				t._f = void 0,
				t._l = void 0,
				t[p] = 0,
				void 0 != i && l(i, n, t[u], t)
			});
			return r(c.prototype, {
				clear: function() {
					for (var t = v(this, e), n = t._i, i = t._f; i; i = i.n) i.r = !0,
					i.p && (i.p = i.p.n = void 0),
					delete n[i.i];
					t._f = t._l = void 0,
					t[p] = 0
				},
				delete: function(t) {
					var n = v(this, e),
					i = _(n, t);
					if (i) {
						var o = i.n,
						r = i.p;
						delete n._i[i.i],
						i.r = !0,
						r && (r.n = o),
						o && (o.p = r),
						n._f == i && (n._f = o),
						n._l == i && (n._l = r),
						n[p]--
					}
					return !! i
				},
				forEach: function(t) {
					v(this, e);
					for (var n, i = a(t, arguments.length > 1 ? arguments[1] : void 0, 3); n = n ? n.n: this._f;) for (i(n.v, n.k, this); n && n.r;) n = n.p
				},
				has: function(t) {
					return !! _(v(this, e), t)
				}
			}),
			d && i(c.prototype, "size", {
				get: function() {
					return v(this, e)[p]
				}
			}),
			c
		},
		def: function(t, e, n) {
			var i, o, r = _(t, e);
			return r ? r.v = n: (t._l = r = {
				i: o = h(e, !0),
				k: e,
				v: n,
				p: i = t._l,
				n: void 0,
				r: !1
			},
			t._f || (t._f = r), i && (i.n = r), t[p]++, "F" !== o && (t._i[o] = r)),
			t
		},
		getEntry: _,
		setStrong: function(t, e, n) {
			u(t, e,
			function(t, n) {
				this._t = v(t, e),
				this._k = n,
				this._l = void 0
			},
			function() {
				for (var t = this,
				e = t._k,
				n = t._l; n && n.r;) n = n.p;
				return t._t && (t._l = n = n ? n.n: t._t._f) ? "keys" == e ? c(0, n.k) : "values" == e ? c(0, n.v) : c(0, [n.k, n.v]) : (t._t = void 0, c(1))
			},
			n ? "entries": "values", !n, !0),
			f(e)
		}
	}
},
function(t, e, n) {
	var i = n(49),
	o = n(310);
	t.exports = function(t) {
		return function() {
			if (i(this) != t) throw TypeError(t + "#toJSON isn't generic");
			return o(this)
		}
	}
},
function(t, e, n) {
	var i = n(78)("unscopables"),
	o = Array.prototype;
	void 0 == o[i] && n(215)(o, i, {}),
	t.exports = function(t) {
		o[i][t] = !0
	}
},
function(t, e) {
	t.exports = !1
},
function(t, e, n) {
	var i = n(60),
	o = n(535),
	r = n(424),
	a = n(435)("IE_PROTO"),
	s = function() {},
	l = function() {
		var t, e = n(423)("iframe"),
		i = r.length;
		for (e.style.display = "none", n(426).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write("<script>document.F=Object<\/script>"), t.close(), l = t.F; i--;) delete l.prototype[r[i]];
		return l()
	};
	t.exports = Object.create ||
	function(t, e) {
		var n;
		return null !== t ? (s.prototype = i(t), n = new s, s.prototype = null, n[a] = t) : n = l(),
		void 0 === e ? n: o(n, e)
	}
},
function(t, e, n) {
	var i = n(537),
	o = n(424).concat("length", "prototype");
	e.f = Object.getOwnPropertyNames ||
	function(t) {
		return i(t, o)
	}
},
function(t, e, n) {
	var i = n(214),
	o = n(136),
	r = n(435)("IE_PROTO"),
	a = Object.prototype;
	t.exports = Object.getPrototypeOf ||
	function(t) {
		return t = o(t),
		i(t, r) ? t[r] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype: t instanceof Object ? a: null
	}
},
function(t, e, n) {
	var i = n(537),
	o = n(424);
	t.exports = Object.keys ||
	function(t) {
		return i(t, o)
	}
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			enumerable: !(1 & t),
			configurable: !(2 & t),
			writable: !(4 & t),
			value: e
		}
	}
},
function(t, e, n) {
	var i = n(234),
	o = Math.max,
	r = Math.min;
	t.exports = function(t, e) {
		return t = i(t),
		t < 0 ? o(t + e, 0) : r(t, e)
	}
},
function(t, e) {
	var n = 0,
	i = Math.random();
	t.exports = function(t) {
		return "Symbol(".concat(void 0 === t ? "": t, ")_", (++n + i).toString(36))
	}
},
function(t, e, n) {
	var i = n(63);
	t.exports = function(t, e) {
		if (!i(t) || t._t !== e) throw TypeError("Incompatible receiver, " + e + " required!");
		return t
	}
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(446), n(445))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.lib,
			i = n.Base,
			o = n.WordArray,
			r = e.algo,
			a = r.MD5,
			s = r.EvpKDF = i.extend({
				cfg: i.extend({
					keySize: 4,
					hasher: a,
					iterations: 1
				}),
				init: function(t) {
					this.cfg = this.cfg.extend(t)
				},
				compute: function(t, e) {
					for (var n = this.cfg,
					i = n.hasher.create(), r = o.create(), a = r.words, s = n.keySize, l = n.iterations; a.length < s;) {
						u && i.update(u);
						var u = i.update(t).finalize(e);
						i.reset();
						for (var c = 1; c < l; c++) u = i.finalize(u),
						i.reset();
						r.concat(u)
					}
					return r.sigBytes = 4 * s,
					r
				}
			});
			e.EvpKDF = function(t, e, n) {
				return s.create(n).compute(t, e)
			}
		} (),
		t.EvpKDF
	})
},
function(t, e) {
	t.exports = function() {
		var t = [];
		return t.toString = function() {
			for (var t = [], e = 0; e < this.length; e++) {
				var n = this[e];
				n[2] ? t.push("@media " + n[2] + "{" + n[1] + "}") : t.push(n[1])
			}
			return t.join("")
		},
		t.i = function(e, n) {
			"string" == typeof e && (e = [[null, e, ""]]);
			for (var i = {},
			o = 0; o < this.length; o++) {
				var r = this[o][0];
				"number" == typeof r && (i[r] = !0)
			}
			for (o = 0; o < e.length; o++) {
				var a = e[o];
				"number" == typeof a[0] && i[a[0]] || (n && !a[2] ? a[2] = n: n && (a[2] = "(" + a[2] + ") and (" + n + ")"), t.push(a))
			}
		},
		t
	}
},
,
function(t, e) {
	function n(t, e) {
		for (var n = 0; n < t.length; n++) {
			var i = t[n],
			o = d[i.id];
			if (o) {
				o.refs++;
				for (var r = 0; r < o.parts.length; r++) o.parts[r](i.parts[r]);
				for (; r < i.parts.length; r++) o.parts.push(l(i.parts[r], e))
			} else {
				for (var a = [], r = 0; r < i.parts.length; r++) a.push(l(i.parts[r], e));
				d[i.id] = {
					id: i.id,
					refs: 1,
					parts: a
				}
			}
		}
	}
	function i(t) {
		for (var e = [], n = {},
		i = 0; i < t.length; i++) {
			var o = t[i],
			r = o[0],
			a = o[1],
			s = o[2],
			l = o[3],
			u = {
				css: a,
				media: s,
				sourceMap: l
			};
			n[r] ? n[r].parts.push(u) : e.push(n[r] = {
				id: r,
				parts: [u]
			})
		}
		return e
	}
	function o(t, e) {
		var n = p(),
		i = g[g.length - 1];
		if ("top" === t.insertAt) i ? i.nextSibling ? n.insertBefore(e, i.nextSibling) : n.appendChild(e) : n.insertBefore(e, n.firstChild),
		g.push(e);
		else {
			if ("bottom" !== t.insertAt) throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
			n.appendChild(e)
		}
	}
	function r(t) {
		t.parentNode.removeChild(t);
		var e = g.indexOf(t);
		e >= 0 && g.splice(e, 1)
	}
	function a(t) {
		var e = document.createElement("style");
		return e.type = "text/css",
		o(t, e),
		e
	}
	function s(t) {
		var e = document.createElement("link");
		return e.rel = "stylesheet",
		o(t, e),
		e
	}
	function l(t, e) {
		var n, i, o;
		if (e.singleton) {
			var l = m++;
			n = _ || (_ = a(e)),
			i = u.bind(null, n, l, !1),
			o = u.bind(null, n, l, !0)
		} else t.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = s(e), i = f.bind(null, n), o = function() {
			r(n),
			n.href && URL.revokeObjectURL(n.href)
		}) : (n = a(e), i = c.bind(null, n), o = function() {
			r(n)
		});
		return i(t),
		function(e) {
			if (e) {
				if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;
				i(t = e)
			} else o()
		}
	}
	function u(t, e, n, i) {
		var o = n ? "": i.css;
		if (t.styleSheet) t.styleSheet.cssText = y(e, o);
		else {
			var r = document.createTextNode(o),
			a = t.childNodes;
			a[e] && t.removeChild(a[e]),
			a.length ? t.insertBefore(r, a[e]) : t.appendChild(r)
		}
	}
	function c(t, e) {
		var n = e.css,
		i = e.media;
		if (i && t.setAttribute("media", i), t.styleSheet) t.styleSheet.cssText = n;
		else {
			for (; t.firstChild;) t.removeChild(t.firstChild);
			t.appendChild(document.createTextNode(n))
		}
	}
	function f(t, e) {
		var n = e.css,
		i = e.sourceMap;
		i && (n += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(i)))) + " */");
		var o = new Blob([n], {
			type: "text/css"
		}),
		r = t.href;
		t.href = URL.createObjectURL(o),
		r && URL.revokeObjectURL(r)
	}
	var d = {},
	h = function(t) {
		var e;
		return function() {
			return void 0 === e && (e = t.apply(this, arguments)),
			e
		}
	},
	v = h(function() {
		return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())
	}),
	p = h(function() {
		return document.head || document.getElementsByTagName("head")[0]
	}),
	_ = null,
	m = 0,
	g = [];
	t.exports = function(t, e) {
		if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) throw new Error("The style-loader cannot be used in a non-browser environment");
		e = e || {},
		void 0 === e.singleton && (e.singleton = v()),
		void 0 === e.insertAt && (e.insertAt = "bottom");
		var o = i(t);
		return n(o, e),
		function(t) {
			for (var r = [], a = 0; a < o.length; a++) {
				var s = o[a],
				l = d[s.id];
				l.refs--,
				r.push(l)
			}
			if (t) {
				n(i(t), e)
			}
			for (var a = 0; a < r.length; a++) {
				var l = r[a];
				if (0 === l.refs) {
					for (var u = 0; u < l.parts.length; u++) l.parts[u]();
					delete d[l.id]
				}
			}
		}
	};
	var y = function() {
		var t = [];
		return function(e, n) {
			return t[e] = n,
			t.filter(Boolean).join("\n")
		}
	} ()
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.LIGHT_FRAG = e.LIGHT_VERTEX = e.LIGHT_VARYING = e.LIGHT_UNIFORM = void 0;
	var i = n(330),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = o.
default ? "\nvec4 lighting_apply_on_color(vec4 color) {\n\tfloat isInShadow = isInShadow();\n\tvec3 colorInLight = color.rgb * mix(\n\t\tlighting_vLightWeight,\n\t\tlighting_vLightWeight - lighting_vShadowWeight,\n\t\tisInShadow\n\t) + mix(\n\t\tlighting_vLightSpecular,\n\t\tlighting_vLightSpecular - lighting_vShadowSpecular,\n\t\tisInShadow\n\t);\n\tcolorInLight = mix(\n\t\tcolorInLight,\n\t\ttoneMapping(colorInLight, lighting_vToneMapping.y),\n\t\tlighting_vToneMapping.x\n\t);\n\treturn vec4(colorInLight, color.a);\n}\n": "\nvec4 lighting_apply_on_color(vec4 color) {\n\tvec3 colorInLight = color.rgb * lighting_vLightWeight + lighting_vLightSpecular;\n\treturn vec4(colorInLight, color.a);\n}\n";
	e.LIGHT_UNIFORM = "\n#define LIGHT_MAX 4\n\n\nuniform vec4 lighting_uBase;\nuniform vec4 lighting_uAdvanced;\nuniform vec3 lighting_uAmbientColor;\nuniform vec3 lighting_uDirDirection[LIGHT_MAX];\nuniform vec3 lighting_uDirColor[LIGHT_MAX];\nuniform vec3 lighting_uPointPosition[LIGHT_MAX];\nuniform vec3 lighting_uPointAtt[LIGHT_MAX];\nuniform vec3 lighting_uPointColor[LIGHT_MAX];\nuniform vec2 lighting_uLightCount;\nuniform vec3 lighting_uViewPos;\nuniform mat4 lighting_uShadowLightPVMatrix;\n",
	e.LIGHT_VARYING = "\n\nvarying vec3 lighting_vLightWeight;\nvarying vec3 lighting_vLightSpecular;\nvarying vec3 lighting_vShadowWeight;\nvarying vec3 lighting_vShadowSpecular;\nvarying mediump vec4 lighting_vShadowInfo;\nvarying vec2 lighting_vToneMapping;\n",
	e.LIGHT_VERTEX = "\nvec3 lighting_vPosition;\nvec3 lighting_vNormal;\nvec3 lighting_vViewDir;\nvec2 lighting_vObjSpec;\n\n\nfloat lighting_calcDiffuse(vec3 lightDir) {\n\treturn max(dot(lightDir, lighting_vNormal), 0.);\n}\n\n\nfloat lighting_calcSpecular(vec3 lightDir) {\n\t\n\t\n\t\n\t\n\tvec3 halfwayDir = normalize(lighting_vViewDir + lightDir);\n\tfloat reflectStrength = max(dot(halfwayDir, lighting_vNormal), 0.);\n\n\treturn pow(reflectStrength, lighting_vObjSpec.y) * lighting_vObjSpec.x;\n}\n\n\nvoid lighting_setObjInfo(vec3 position, vec3 normal, mat4 modelMatrix, vec2 objSpec) {\n\tlighting_vPosition = (modelMatrix * vec4(position, 1.)).xyz;\n\tlighting_vNormal = normalize(modelMatrix * vec4(normal, 0.)).xyz;\n\tlighting_vViewDir = normalize(lighting_uViewPos - lighting_vPosition);\n\tlighting_vObjSpec = objSpec;\n\tlighting_vToneMapping = lighting_uAdvanced.xy;\n\t\n\tvec4 posInLightView = lighting_uShadowLightPVMatrix * vec4(lighting_vPosition, 1.0);\n\tvec3 normalized = (posInLightView.xyz/ posInLightView.w + 1.0) / 2.0;\n\tlighting_vShadowInfo = vec4(normalized, lighting_uAdvanced.z);\n}\n\n\nvoid lighting_calcDirLights(float enable) {\n\tvec3 diffuse = vec3(0.0);\n\tvec3 specular = vec3(0.0);\n\tvec3 shadowDiffuse = vec3(0.0);\n\tvec3 shadowSpecular = vec3(0.0);\n\n\tfor (int i = 0; i < LIGHT_MAX; i++) {\n\t\tfloat isValid = (1.0 - step(float(lighting_uLightCount.x), float(i))) * enable;\n\n\t\t\n\t\tdiffuse += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcDiffuse(lighting_uDirDirection[i]) * lighting_uDirColor[i],\n\t\t\tisValid\n\t\t);\n\t\t\n\t\t\n\t\tspecular += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcSpecular(lighting_uDirDirection[i]) * lighting_uDirColor[i],\n\t\t\tisValid\n\t\t);\n\n\t\t\n\t\tfloat isShadowLight = isValid * step(0., lighting_uAdvanced.z) * float((float(i) == lighting_uAdvanced.w));\n\t\tshadowDiffuse += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcDiffuse(lighting_uDirDirection[i]) * lighting_uDirColor[i],\n\t\t\tisShadowLight\n\t\t);\n\t\tshadowSpecular += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcSpecular(lighting_uDirDirection[i]) * lighting_uDirColor[i],\n\t\t\tisShadowLight\n\t\t);\n\t}\n\n\tlighting_vLightWeight += diffuse * lighting_uBase.z;\n\tlighting_vLightSpecular += specular * lighting_uBase.w;\n\tlighting_vShadowWeight = shadowDiffuse * lighting_uBase.z * lighting_uAdvanced.z;\n\tlighting_vShadowSpecular = shadowSpecular * lighting_uBase.w * lighting_uAdvanced.z;\n}\n\n\nvoid lighting_calcPointLights(float enable) {\n\tvec3 diffuse = vec3(0.0);\n\tvec3 specular = vec3(0.0);\n\n\tfor (int i = 0; i < LIGHT_MAX; i++) {\n\t\tfloat isValid = (1.0 - step(float(lighting_uLightCount.y), float(i))) * enable;\n\n\t\tvec3 posToLight = lighting_uPointPosition[i] - lighting_vPosition;\n\t\tvec3 direction = normalize(posToLight);\n\t\tfloat distance = length(posToLight);\n\t\t\n\t\t\n\t\tfloat attenuation = 1.0 / dot(vec3(1.0, 0.014, 0.0007), vec3(1.0, distance, distance * distance));\n\n\t\t\n\t\tdiffuse += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcDiffuse(direction) * lighting_uPointColor[i] * attenuation,\n\t\t\tisValid\n\t\t);\n\t\t\n\t\t\n\t\tspecular += mix(\n\t\t\tvec3(0.0),\n\t\t\tlighting_calcSpecular(direction) * lighting_uPointColor[i] * attenuation,\n\t\t\tisValid\n\t\t);\n\t}\n\n\tlighting_vLightWeight += diffuse * lighting_uBase.z;\n\tlighting_vLightSpecular += specular * lighting_uBase.w;\n}\n\n\nvoid lighting_apply_on_vertex(vec3 position, vec3 normal, mat4 modelMatrix, vec2 objSpec) {\n\tlighting_setObjInfo(position, normal, modelMatrix, objSpec);\n\n\t\n\tlighting_vLightWeight = mix(\n\t\tvec3(1.0),\n\t\tlighting_uAmbientColor * lighting_uBase.y,\n\t\tlighting_uBase.x\n\t);\n\tlighting_vLightSpecular = vec3(0.0);\n\tlighting_vShadowWeight = vec3(0.0);\n\tlighting_vShadowSpecular = vec3(0.0);\n\n\t\n\tlighting_calcDirLights(lighting_uBase.x);\n\tlighting_calcPointLights(lighting_uBase.x);\n}\n\nvoid lighting_apply_on_vertex(vec3 position, vec3 normal, mat4 modelMatrix) {\n\tlighting_apply_on_vertex(position, normal, modelMatrix, vec2(0.4, 32.0));\n}\n",
	e.LIGHT_FRAG = "\nuniform sampler2D lighting_uShadowSampler;\n\nvec3 toneMapping(vec3 hdrColor, float exposure) {\n\tconst float gamma = 2.2;\n\n\n\tvec3 mapped = vec3(1.0) - exp(-hdrColor * exposure);\n\t\n\n\tmapped = pow(mapped, vec3(1.0 / gamma));\n\t\n\treturn mapped;\n}\n\nfloat getShadowSceneDepth() {\n\treturn texture2D(lighting_uShadowSampler, lighting_vShadowInfo.xy).x;\n}\n\nfloat isInShadow() {\n  float isInSideTexture = float(abs(lighting_vShadowInfo.x - 0.5) < 0.5 && abs(lighting_vShadowInfo.y - 0.5) < 0.5);\n\tfloat sceneDepth = getShadowSceneDepth();\n\treturn mix(\n\t\t0.0,\n\t\tstep(0.0005, abs(lighting_vShadowInfo.z - sceneDepth)) * step(sceneDepth, lighting_vShadowInfo.z),\n\t\tstep(0., lighting_vShadowInfo.w) * isInSideTexture\n  );\n}\n\n" + r + "\n"
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = t.geometries.map(function(t) {
			return t.paths || []
		}),
		n = new o.PolygonParseHelper({
			complexPolygons: e,
			IndexType: Uint32Array
		});
		n.updatePositions({
			fp64: !0,
			extruded: !0
		});
		var i = n.getPositions(),
		r = n.getIndices(),
		s = n.getPositions64xyLow(),
		l = n.getVertexValid(),
		u = n.getPickingColors(),
		c = n.getElevations({
			getElevation: function(e) {
				var n = t.geometries[e],
				i = t.styles[n.styleId];
				return i && i.extrudeHeight ? i.extrudeHeight: 0
			}
		}),
		f = n.getColors({
			key: "fillColors",
			getColor: function(e) {
				var n = t.geometries[e],
				i = t.styles[n.styleId];
				if (i) {
					return new a.
				default(i.color).toUpArray()
				}
				return [0, 0, 0, 0]
			}
		}),
		d = n.getColors({
			key: "lineColors",
			getColor: function(e) {
				var n = t.geometries[e],
				i = t.styles[n.styleId];
				if (i) {
					if (i.showBorder) {
						var o = new a.
					default(i.borderColor);
						return "borderWidth" in i ? [0, 0, 0, 0] : o.toUpArray()
					}
					return [0, 0, 0, 0]
				}
				return [0, 0, 0, 0]
			}
		}),
		h = i.slice(3),
		v = s.slice(2),
		p = i.slice(),
		_ = s.slice();
		return p.set(h),
		_.set(v),
		{
			positions: i,
			indices: r,
			positions64xyLow: s,
			vertexValid: l,
			pickingColors: u,
			elevations: c,
			fillColors: f,
			lineColors: d,
			nextPositions: p,
			nextPositions64xyLow: _
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(333),
	r = n(227),
	a = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i) {
		n = n || 2;
		var r = e && e.length,
		s = r ? e[0] * n: t.length,
		l = o(t, 0, s, n, !0),
		u = [];
		if (!l) return u;
		var c = void 0,
		d = void 0,
		h = void 0,
		v = void 0,
		p = void 0,
		_ = void 0,
		m = void 0;
		if (r && (l = f(t, e, l, n)), t.length > 80 * n) {
			var g = (0, R.
		default)(t, 2);
			h = g[0],
			v = g[1],
			c = h,
			d = v;
			for (var y = n; y < s; y += n) p = t[y],
			_ = t[y + 1],
			p < c && (c = p),
			_ < d && (d = _),
			p > h && (h = p),
			_ > v && (v = _);
			m = Math.max(h - c, v - d)
		}
		return a(l, u, n, c, d, m, void 0, i),
		u
	}
	function o(t, e, n, i, o) {
		var r = void 0,
		a = void 0;
		if (o === M(t, e, n, i) > 0) for (r = e; r < n; r += i) a = I(r, t[r], t[r + 1], a);
		else for (r = n - i; r >= e; r -= i) a = I(r, t[r], t[r + 1], a);
		return a && S(a, a.next) && (k(a), a = a.next),
		a
	}
	function r(t, e) {
		if (!t) return t;
		e || (e = t);
		var n = t,
		i = void 0;
		do {
			if (i = !1, n.steiner || !S(n, n.next) && 0 !== b(n.prev, n, n.next)) n = n.next;
			else {
				if (k(n), e = n.prev, (n = e) === n.next) return null;
				i = !0
			}
		} while ( i || n !== e );
		return e
	}
	function a(t, e, n, i, o, f, d, h) {
		if (h = h || 0, t) { ! d && f && p(t, i, o, f);
			for (var v = t,
			_ = void 0,
			m = void 0; t.prev !== t.next;) if (_ = t.prev, m = t.next, f ? l(t, i, o, f) : s(t)) e.push(_.i / n + h),
			e.push(t.i / n + h),
			e.push(m.i / n + h),
			k(t),
			t = m.next,
			v = m.next;
			else if ((t = m) === v) {
				d ? 1 === d ? (t = u(t, e, n, h), a(t, e, n, i, o, f, 2, h)) : 2 === d && c(t, e, n, i, o, f, h) : a(r(t), e, n, i, o, f, 1, h);
				break
			}
		}
	}
	function s(t) {
		var e = t.prev,
		n = t,
		i = t.next;
		if (b(e, n, i) >= 0) return ! 1;
		for (var o = t.next.next; o !== t.prev;) {
			if (y(e.x, e.y, n.x, n.y, i.x, i.y, o.x, o.y) && b(o.prev, o, o.next) >= 0) return ! 1;
			o = o.next
		}
		return ! 0
	}
	function l(t, e, n, i) {
		var o = t.prev,
		r = t,
		a = t.next;
		if (b(o, r, a) >= 0) return ! 1;
		for (var s = o.x < r.x ? o.x < a.x ? o.x: a.x: r.x < a.x ? r.x: a.x, l = o.y < r.y ? o.y < a.y ? o.y: a.y: r.y < a.y ? r.y: a.y, u = o.x > r.x ? o.x > a.x ? o.x: a.x: r.x > a.x ? r.x: a.x, c = o.y > r.y ? o.y > a.y ? o.y: a.y: r.y > a.y ? r.y: a.y, f = m(s, l, e, n, i), d = m(u, c, e, n, i), h = t.nextZ; h && h.z <= d;) {
			if (h !== t.prev && h !== t.next && y(o.x, o.y, r.x, r.y, a.x, a.y, h.x, h.y) && b(h.prev, h, h.next) >= 0) return ! 1;
			h = h.nextZ
		}
		for (h = t.prevZ; h && h.z >= f;) {
			if (h !== t.prev && h !== t.next && y(o.x, o.y, r.x, r.y, a.x, a.y, h.x, h.y) && b(h.prev, h, h.next) >= 0) return ! 1;
			h = h.prevZ
		}
		return ! 0
	}
	function u(t, e, n, i) {
		var o = t;
		do {
			var r = o.prev,
			a = o.next.next; ! S(r, a) && w(r, o, o.next, a) && T(r, a) && T(a, r) && (e.push(r.i / n + i), e.push(o.i / n + i), e.push(a.i / n + i), k(o), k(o.next), t = a, o = t), o = o.next
		} while ( o !== t );
		return o
	}
	function c(t, e, n, i, o, s, l) {
		var u = t;
		do {
			for (var c = u.next.next; c !== u.prev;) {
				if (u.i !== c.i && x(u, c)) {
					var f = P(u, c);
					return u = r(u, u.next),
					f = r(f, f.next),
					a(u, e, n, i, o, s, void 0, l),
					void a(f, e, n, i, o, s, void 0, l)
				}
				c = c.next
			}
			u = u.next
		} while ( u !== t )
	}
	function f(t, e, n, i) {
		var a = [],
		s = void 0,
		l = void 0,
		u = void 0,
		c = void 0,
		f = void 0;
		for (s = 0, l = e.length; s < l; s++) u = e[s] * i,
		c = s < l - 1 ? e[s + 1] * i: t.length,
		f = o(t, u, c, i, !1),
		f === f.next && (f.steiner = !0),
		a.push(g(f));
		for (a.sort(d), s = 0; s < a.length; s++) h(a[s], n),
		n = r(n, n.next);
		return n
	}
	function d(t, e) {
		return t.x - e.x
	}
	function h(t, e) {
		if (e = v(t, e)) {
			var n = P(e, t);
			r(n, n.next)
		}
	}
	function v(t, e) {
		var n = e,
		i = t.x,
		o = t.y,
		r = -1 / 0,
		a = void 0;
		do {
			if (o <= n.y && o >= n.next.y && n.next.y !== n.y) {
				var s = n.x + (o - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
				if (s <= i && s > r) {
					if (r = s, s === i) {
						if (o === n.y) return n;
						if (o === n.next.y) return n.next
					}
					a = n.x < n.next.x ? n: n.next
				}
			}
			n = n.next
		} while ( n !== e );
		if (!a) return null;
		if (i === r) return a.prev;
		var l = a,
		u = a.x,
		c = a.y,
		f = 1 / 0,
		d = void 0;
		for (n = a.next; n !== l;) i >= n.x && n.x >= u && i !== n.x && y(o < c ? i: r, o, u, c, o < c ? r: i, o, n.x, n.y) && ((d = Math.abs(o - n.y) / (i - n.x)) < f || d === f && n.x > a.x) && T(n, t) && (a = n, f = d),
		n = n.next;
		return a
	}
	function p(t, e, n, i) {
		var o = t;
		do {
			null === o.z && (o.z = m(o.x, o.y, e, n, i)), o.prevZ = o.prev, o.nextZ = o.next, o = o.next
		} while ( o !== t );
		o.prevZ.nextZ = null,
		o.prevZ = null,
		_(o)
	}
	function _(t) {
		var e = void 0,
		n = void 0,
		i = void 0,
		o = void 0,
		r = void 0,
		a = void 0,
		s = void 0,
		l = void 0,
		u = 1;
		do {
			for (n = t, t = null, r = null, a = 0; n;) {
				for (a += 1, i = n, s = 0, e = 0; e < u && (s += 1, i = i.nextZ); e++);
				for (l = u; s > 0 || l > 0 && i;) 0 !== s && (0 === l || !i || n.z <= i.z) ? (o = n, n = n.nextZ, s -= 1) : (o = i, i = i.nextZ, l -= 1),
				r ? r.nextZ = o: t = o,
				o.prevZ = r,
				r = o;
				n = i
			}
			r && (r.nextZ = null), u *= 2
		} while ( a > 1 );
		return t
	}
	function m(t, e, n, i, o) {
		return t = 32767 * (t - n) / o,
		e = 32767 * (e - i) / o,
		t = 16711935 & (t | t << 8),
		t = 252645135 & (t | t << 4),
		t = 858993459 & (t | t << 2),
		t = 1431655765 & (t | t << 1),
		e = 16711935 & (e | e << 8),
		e = 252645135 & (e | e << 4),
		e = 858993459 & (e | e << 2),
		e = 1431655765 & (e | e << 1),
		t | e << 1
	}
	function g(t) {
		var e = t,
		n = t;
		do {
			e.x < n.x && (n = e), e = e.next
		} while ( e !== t );
		return n
	}
	function y(t, e, n, i, o, r, a, s) {
		return (o - a) * (e - s) - (t - a) * (r - s) >= 0 && (t - a) * (i - s) - (n - a) * (e - s) >= 0 && (n - a) * (r - s) - (o - a) * (i - s) >= 0
	}
	function x(t, e) {
		return t.next.i !== e.i && t.prev.i !== e.i && !E(t, e) && T(t, e) && T(e, t) && A(t, e)
	}
	function b(t, e, n) {
		return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
	}
	function S(t, e) {
		return t.x === e.x && t.y === e.y
	}
	function w(t, e, n, i) {
		return !! (S(t, e) && S(n, i) || S(t, i) && S(n, e)) || b(t, e, n) > 0 != b(t, e, i) > 0 && b(n, i, t) > 0 != b(n, i, e) > 0
	}
	function E(t, e) {
		var n = t;
		do {
			if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && w(n, n.next, t, e)) return ! 0;
			n = n.next
		} while ( n !== t );
		return ! 1
	}
	function T(t, e) {
		return b(t.prev, t, t.next) < 0 ? b(t, e, t.next) >= 0 && b(t, t.prev, e) >= 0 : b(t, e, t.prev) < 0 || b(t, t.next, e) < 0
	}
	function A(t, e) {
		var n = t,
		i = !1,
		o = (t.x + e.x) / 2,
		r = (t.y + e.y) / 2;
		do {
			n.y > r != n.next.y > r && n.next.y !== n.y && o < (n.next.x - n.x) * (r - n.y) / (n.next.y - n.y) + n.x && (i = !i), n = n.next
		} while ( n !== t );
		return i
	}
	function P(t, e) {
		var n = new L(t.i, t.x, t.y),
		i = new L(e.i, e.x, e.y),
		o = t.next,
		r = e.prev;
		return t.next = e,
		e.prev = t,
		n.next = o,
		o.prev = n,
		i.next = n,
		n.prev = i,
		r.next = i,
		i.prev = r,
		i
	}
	function I(t, e, n, i) {
		var o = new L(t, e, n);
		return i ? (o.next = i.next, o.prev = i, i.next.prev = o, i.next = o) : (o.prev = o, o.next = o),
		o
	}
	function k(t) {
		t.next.prev = t.prev,
		t.prev.next = t.next,
		t.prevZ && (t.prevZ.nextZ = t.nextZ),
		t.nextZ && (t.nextZ.prevZ = t.prevZ)
	}
	function L(t, e, n) {
		this.i = t,
		this.x = e,
		this.y = n,
		this.prev = null,
		this.next = null,
		this.z = null,
		this.prevZ = null,
		this.nextZ = null,
		this.steiner = !1
	}
	function M(t, e, n, i) {
		for (var o = 0,
		r = e,
		a = n - i; r < n; r += i) o += (t[a] - t[r]) * (t[r + 1] + t[a + 1]),
		a = r;
		return o
	}
	var C = n(32),
	R = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (C);
	t.exports = i,
	i.deviation = function(t, e, n, i) {
		var o = e && e.length,
		r = o ? e[0] * n: t.length,
		a = Math.abs(M(t, 0, r, n));
		if (o) for (var s = 0,
		l = e.length; s < l; s++) {
			var u = e[s] * n,
			c = s < l - 1 ? e[s + 1] * n: t.length;
			a -= Math.abs(M(t, u, c, n))
		}
		for (var f = 0,
		d = 0; d < i.length; d += 3) {
			var h = i[d] * n,
			v = i[d + 1] * n,
			p = i[d + 2] * n;
			f += Math.abs((t[h] - t[p]) * (t[v + 1] - t[h + 1]) - (t[h] - t[v]) * (t[p + 1] - t[h + 1]))
		}
		return 0 === a && 0 === f ? 0 : Math.abs((f - a) / a)
	},
	i.flatten = function(t) {
		for (var e = t[0][0].length, n = {
			vertices: [],
			holes: [],
			dimensions: e
		},
		i = 0, o = 0; o < t.length; o++) {
			for (var r = 0; r < t[o].length; r++) for (var a = 0; a < e; a++) n.vertices.push(t[o][r][a]);
			o > 0 && (i += t[o - 1].length, n.holes.push(i))
		}
		return n
	}
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(10),
	u = function() {
		function t(e) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, r.
		default)(this, t),
			e && (this.gl = e, this.id = n.id || "resource-" + (0, l.uniqueId)(), this._object = this._onCreate(n), this._initialize(n))
		}
		return (0, s.
	default)(t, [{
			key: "delete",
			value: function() {
				this._onDelete(),
				this._object = null,
				this.gl = null
			}
		},
		{
			key: "_onCreate",
			value: function() {}
		},
		{
			key: "_onDelete",
			value: function() {}
		},
		{
			key: "_initialize",
			value: function() {}
		},
		{
			key: "bind",
			value: function() {}
		},
		{
			key: "unbind",
			value: function() {}
		}]),
		t
	} ();
	e.
default = u
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.TRAFFIC_LAYER_ID = e.SATELLITE_LAYER_ID = e.VECTOR_LAYER_ID = e.DEFAULT_BASEMAP = e.TRAFFIC_FEATURE = e.SATELLITE_FEATURE = e.TRAFFIC_ROAD_TYPE = e.MAP_TYPE = void 0;
	var i = n(17),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = n(66),
	a = e.MAP_TYPE = {
		vector: "vector",
		satellite: "satellite",
		traffic: "traffic",
		handdraw: "handdraw",
		oversea: "oversea"
	},
	s = e.TRAFFIC_ROAD_TYPE = {
		highway: 1,
		motorway: 2,
		national: 3,
		provincial: 4,
		county: 5,
		country: 6,
		other: 7
	},
	l = e.SATELLITE_FEATURE = {
		satellite: "base",
		road: "road"
	},
	u = e.TRAFFIC_FEATURE = {
		base: "base",
		flow: "flow"
	};
	e.DEFAULT_BASEMAP = {
		vector: {
			type: a.vector,
			features: [r.BASE_LAYER_TYPE.base, r.BASE_LAYER_TYPE.building3d, r.BASE_LAYER_TYPE.point, r.BASE_LAYER_TYPE.label, r.BASE_LAYER_TYPE.arrow]
		},
		satellite: {
			type: a.satellite,
			features: [l.satellite, l.road]
		},
		traffic: {
			type: a.traffic,
			features: [u.base],
			filter: (0, o.
		default)(s)
		},
		handdraw: {
			type: a.handdraw
		},
		oversea: {
			type: a.oversea
		}
	},
	e.VECTOR_LAYER_ID = {
		base: "vector_bottom",
		arrow: "vector_bottom_arrow",
		building: "vector_top_building",
		poi: "vector_top_poi"
	},
	e.SATELLITE_LAYER_ID = {
		base: "satellite",
		road: "road"
	},
	e.TRAFFIC_LAYER_ID = {
		base: "traffic_base",
		flow: "traffic_flow"
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var i = n(25),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = function(t) {
		return function() {
			var e = t.apply(this, arguments);
			return new o.
		default(function(t, n) {
				function i(r, a) {
					try {
						var s = e[r](a),
						l = s.value
					} catch(t) {
						return void n(t)
					}
					if (!s.done) return o.
				default.resolve(l).then(function(t) {
						i("next", t)
					},
					function(t) {
						i("throw", t)
					});
					t(l)
				}
				return i("next")
			})
		}
	}
},
function(t, e, n) {
	t.exports = n(402)
},
function(t, e) {
	t.exports = function(t, e, n, i) {
		if (! (t instanceof e) || void 0 !== i && i in t) throw TypeError(n + ": incorrect invocation!");
		return t
	}
},
function(t, e) {
	t.exports = {}
},
function(t, e, n) {
	var i = n(206);
	t.exports = function(t, e, n) {
		for (var o in e) i(t, o, e[o], n);
		return t
	}
},
function(t, e, n) {
	"use strict";
	var i = n(62),
	o = n(104),
	r = n(103),
	a = n(78)("species");
	t.exports = function(t) {
		var e = i[t];
		r && e && !e[a] && o.f(e, a, {
			configurable: !0,
			get: function() {
				return this
			}
		})
	}
},
function(t, e, n) {
	var i = n(104).f,
	o = n(214),
	r = n(78)("toStringTag");
	t.exports = function(t, e, n) {
		t && !o(t = n ? t: t.prototype, r) && i(t, r, {
			configurable: !0,
			value: e
		})
	}
},
function(t, e, n) {
	var i = n(11),
	o = n(245),
	r = n(61),
	a = n(439),
	s = "[" + a + "]",
	l = "​",
	u = RegExp("^" + s + s + "*"),
	c = RegExp(s + s + "*$"),
	f = function(t, e, n) {
		var o = {},
		s = r(function() {
			return !! a[t]() || l[t]() != l
		}),
		u = o[t] = s ? e(d) : a[t];
		n && (o[n] = u),
		i(i.P + i.F * s, "String", o)
	},
	d = f.trim = function(t, e) {
		return t = String(o(t)),
		1 & e && (t = t.replace(u, "")),
		2 & e && (t = t.replace(c, "")),
		t
	};
	t.exports = f
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function() {
			function e(t, e, n) {
				for (var i = [], r = 0, a = 0; a < e; a++) if (a % 4) {
					var s = n[t.charCodeAt(a - 1)] << a % 4 * 2,
					l = n[t.charCodeAt(a)] >>> 6 - a % 4 * 2;
					i[r >>> 2] |= (s | l) << 24 - r % 4 * 8,
					r++
				}
				return o.create(i, r)
			}
			var n = t,
			i = n.lib,
			o = i.WordArray,
			r = n.enc;
			r.Base64 = {
				stringify: function(t) {
					var e = t.words,
					n = t.sigBytes,
					i = this._map;
					t.clamp();
					for (var o = [], r = 0; r < n; r += 3) for (var a = e[r >>> 2] >>> 24 - r % 4 * 8 & 255, s = e[r + 1 >>> 2] >>> 24 - (r + 1) % 4 * 8 & 255, l = e[r + 2 >>> 2] >>> 24 - (r + 2) % 4 * 8 & 255, u = a << 16 | s << 8 | l, c = 0; c < 4 && r + .75 * c < n; c++) o.push(i.charAt(u >>> 6 * (3 - c) & 63));
					var f = i.charAt(64);
					if (f) for (; o.length % 4;) o.push(f);
					return o.join("")
				},
				parse: function(t) {
					var n = t.length,
					i = this._map,
					o = this._reverseMap;
					if (!o) {
						o = this._reverseMap = [];
						for (var r = 0; r < i.length; r++) o[i.charCodeAt(r)] = r
					}
					var a = i.charAt(64);
					if (a) {
						var s = t.indexOf(a); - 1 !== s && (n = s)
					}
					return e(t, n, o)
				},
				_map: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/="
			}
		} (),
		t.enc.Base64
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function(e) {
			function n(t, e, n, i, o, r, a) {
				var s = t + (e & n | ~e & i) + o + a;
				return (s << r | s >>> 32 - r) + e
			}
			function i(t, e, n, i, o, r, a) {
				var s = t + (e & i | n & ~i) + o + a;
				return (s << r | s >>> 32 - r) + e
			}
			function o(t, e, n, i, o, r, a) {
				var s = t + (e ^ n ^ i) + o + a;
				return (s << r | s >>> 32 - r) + e
			}
			function r(t, e, n, i, o, r, a) {
				var s = t + (n ^ (e | ~i)) + o + a;
				return (s << r | s >>> 32 - r) + e
			}
			var a = t,
			s = a.lib,
			l = s.WordArray,
			u = s.Hasher,
			c = a.algo,
			f = []; !
			function() {
				for (var t = 0; t < 64; t++) f[t] = 4294967296 * e.abs(e.sin(t + 1)) | 0
			} ();
			var d = c.MD5 = u.extend({
				_doReset: function() {
					this._hash = new l.init([1732584193, 4023233417, 2562383102, 271733878])
				},
				_doProcessBlock: function(t, e) {
					for (var a = 0; a < 16; a++) {
						var s = e + a,
						l = t[s];
						t[s] = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8)
					}
					var u = this._hash.words,
					c = t[e + 0],
					d = t[e + 1],
					h = t[e + 2],
					v = t[e + 3],
					p = t[e + 4],
					_ = t[e + 5],
					m = t[e + 6],
					g = t[e + 7],
					y = t[e + 8],
					x = t[e + 9],
					b = t[e + 10],
					S = t[e + 11],
					w = t[e + 12],
					E = t[e + 13],
					T = t[e + 14],
					A = t[e + 15],
					P = u[0],
					I = u[1],
					k = u[2],
					L = u[3];
					P = n(P, I, k, L, c, 7, f[0]),
					L = n(L, P, I, k, d, 12, f[1]),
					k = n(k, L, P, I, h, 17, f[2]),
					I = n(I, k, L, P, v, 22, f[3]),
					P = n(P, I, k, L, p, 7, f[4]),
					L = n(L, P, I, k, _, 12, f[5]),
					k = n(k, L, P, I, m, 17, f[6]),
					I = n(I, k, L, P, g, 22, f[7]),
					P = n(P, I, k, L, y, 7, f[8]),
					L = n(L, P, I, k, x, 12, f[9]),
					k = n(k, L, P, I, b, 17, f[10]),
					I = n(I, k, L, P, S, 22, f[11]),
					P = n(P, I, k, L, w, 7, f[12]),
					L = n(L, P, I, k, E, 12, f[13]),
					k = n(k, L, P, I, T, 17, f[14]),
					I = n(I, k, L, P, A, 22, f[15]),
					P = i(P, I, k, L, d, 5, f[16]),
					L = i(L, P, I, k, m, 9, f[17]),
					k = i(k, L, P, I, S, 14, f[18]),
					I = i(I, k, L, P, c, 20, f[19]),
					P = i(P, I, k, L, _, 5, f[20]),
					L = i(L, P, I, k, b, 9, f[21]),
					k = i(k, L, P, I, A, 14, f[22]),
					I = i(I, k, L, P, p, 20, f[23]),
					P = i(P, I, k, L, x, 5, f[24]),
					L = i(L, P, I, k, T, 9, f[25]),
					k = i(k, L, P, I, v, 14, f[26]),
					I = i(I, k, L, P, y, 20, f[27]),
					P = i(P, I, k, L, E, 5, f[28]),
					L = i(L, P, I, k, h, 9, f[29]),
					k = i(k, L, P, I, g, 14, f[30]),
					I = i(I, k, L, P, w, 20, f[31]),
					P = o(P, I, k, L, _, 4, f[32]),
					L = o(L, P, I, k, y, 11, f[33]),
					k = o(k, L, P, I, S, 16, f[34]),
					I = o(I, k, L, P, T, 23, f[35]),
					P = o(P, I, k, L, d, 4, f[36]),
					L = o(L, P, I, k, p, 11, f[37]),
					k = o(k, L, P, I, g, 16, f[38]),
					I = o(I, k, L, P, b, 23, f[39]),
					P = o(P, I, k, L, E, 4, f[40]),
					L = o(L, P, I, k, c, 11, f[41]),
					k = o(k, L, P, I, v, 16, f[42]),
					I = o(I, k, L, P, m, 23, f[43]),
					P = o(P, I, k, L, x, 4, f[44]),
					L = o(L, P, I, k, w, 11, f[45]),
					k = o(k, L, P, I, A, 16, f[46]),
					I = o(I, k, L, P, h, 23, f[47]),
					P = r(P, I, k, L, c, 6, f[48]),
					L = r(L, P, I, k, g, 10, f[49]),
					k = r(k, L, P, I, T, 15, f[50]),
					I = r(I, k, L, P, _, 21, f[51]),
					P = r(P, I, k, L, w, 6, f[52]),
					L = r(L, P, I, k, v, 10, f[53]),
					k = r(k, L, P, I, b, 15, f[54]),
					I = r(I, k, L, P, d, 21, f[55]),
					P = r(P, I, k, L, y, 6, f[56]),
					L = r(L, P, I, k, A, 10, f[57]),
					k = r(k, L, P, I, m, 15, f[58]),
					I = r(I, k, L, P, E, 21, f[59]),
					P = r(P, I, k, L, p, 6, f[60]),
					L = r(L, P, I, k, S, 10, f[61]),
					k = r(k, L, P, I, h, 15, f[62]),
					I = r(I, k, L, P, x, 21, f[63]),
					u[0] = u[0] + P | 0,
					u[1] = u[1] + I | 0,
					u[2] = u[2] + k | 0,
					u[3] = u[3] + L | 0
				},
				_doFinalize: function() {
					var t = this._data,
					n = t.words,
					i = 8 * this._nDataBytes,
					o = 8 * t.sigBytes;
					n[o >>> 5] |= 128 << 24 - o % 32;
					var r = e.floor(i / 4294967296),
					a = i;
					n[15 + (o + 64 >>> 9 << 4)] = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8),
					n[14 + (o + 64 >>> 9 << 4)] = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8),
					t.sigBytes = 4 * (n.length + 1),
					this._process();
					for (var s = this._hash,
					l = s.words,
					u = 0; u < 4; u++) {
						var c = l[u];
						l[u] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8)
					}
					return s
				},
				clone: function() {
					var t = u.clone.call(this);
					return t._hash = this._hash.clone(),
					t
				}
			});
			a.MD5 = u._createHelper(d),
			a.HmacMD5 = u._createHmacHelper(d)
		} (Math),
		t.MD5
	})
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.PICK_UNIFORM = "\nuniform float picking_usePickingColor;\nuniform vec3 picking_selectedPickingColor;\n",
	e.PICK_FUNCTION = "\n    vec4 picking_getFinalColor(vec4 vertexColor, vec3 instancePickingColors) {\n        \n        return mix(\n            vertexColor,\n\n            vec4(instancePickingColors.rgb,  255.0).rgba / 255.0,\n\n            picking_usePickingColor);\n    }\n"
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
		if (!y.has(t)) {
			var n = new l.
		default(function(t) {
				if (!d.
			default || _.
			default.isLocal) return void t(null);
				var n = e.subkey,
				i = e.subpid,
				o = ["key=" + d.
			default, "pid=" + location.host, "channel=0"];
				n && o.push("key2=" + n, "pid2=" + i);
				var r = v.
			default.checkKeySrc + "?" + o.join("&");
				g(null, r,
				function(e) {
					var i = void 0;
					e && e.info && 0 === e.info.error ? (i = e.detail && e.detail.cfg) && (i.subkey = n) : console.error("鉴权失败：" + e.info.msg),
					t(i)
				},
				function() {
					console.error("鉴权失败：网络请求失败。"),
					t(null)
				})
			});
			y.set(t, n)
		}
		return y.get(t)
	}
	function r() {
		return new l.
	default(function(t) { (0, m.getStorageFrontier)().then(function(e) {
				var n = ["apikey=" + d.
			default, "ctrlver=-1", "ctrlpf=grid", "ctrlmb=jsapi", "frontier=" + (e && e.version || 0), "callback"],
				i = v.
			default.overseaSrc + "?" + n.join("&");
				g(null, i,
				function(e) {
					t(e)
				},
				function() {
					console.error("鉴权失败：海外图请求失败。"),
					t(null)
				})
			})
		})
	}
	function a(t) {
		y.delete(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(25),
	l = i(s),
	u = n(148),
	c = i(u);
	e.checkKey = o,
	e.overseaCheckKey = r,
	e.revokeKeyCheck = a;
	var f = n(471),
	d = i(f),
	h = n(23),
	v = i(h),
	p = n(105),
	_ = i(p),
	m = n(508),
	g = n(340).send,
	y = new c.
default
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(247),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default[0]
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		return Math.sqrt(t * t + e * e)
	}
	function r(t, e) {
		var n = t.pageX,
		i = t.pageY;
		if (t.touches) {
			var o = t.touches[e || 0];
			n = o.pageX,
			i = o.pageY
		}
		return {
			x: n,
			y: i
		}
	}
	function a(t) {
		return t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Finger = void 0;
	var s = n(24),
	l = i(s),
	u = n(17),
	c = i(u),
	f = n(3),
	d = i(f),
	h = n(0),
	v = i(h),
	p = n(1),
	_ = i(p),
	m = n(5),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(28),
	S = n(120),
	w = {
		start: ["mousedown", "touchstart"],
		move: ["mousemove", "touchmove"],
		end: ["mouseup", "touchend"],
		cancel: ["", "touchcancel"],
		leave: ["mouseleave", ""]
	},
	E = 0,
	T = (e.Finger = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, v.
		default)(this, e);
			var i = (0, g.
		default)(this, (e.__proto__ || (0, d.
		default)(e)).call(this));
			if (!t) throw new Error("element is invalid");
			return i.options = n,
			i.identifier = "Finger__" + E,
			E += 1,
			i.touched = !1,
			i.panning = !1,
			i.element = t,
			i.element.__Finger__identifier = i.identifier,
			i.handlers = [],
			i.isDoubleTap = !1,
			i.y1 = null,
			i.x1 = i.y1,
			i.y2 = null,
			i.x2 = i.y2,
			i.deltaTime = null,
			i.lastStartTime = null,
			i.panSpeedStartTime = null,
			i.panSpeedStartPos = null,
			i.now = null,
			i.tapTimeout = null,
			i.holdTimeout = null,
			i.swipeTimeout = null,
			i.startVector = null,
			i.startDistance = null,
			i.init(),
			i
		}
		return (0, x.
	default)(e, t),
		(0, _.
	default)(e, [{
			key: "init",
			value: function() {
				var t = this,
				e = "ontouchstart" in document ? 1 : 0,
				n = (0, c.
			default)(w).forEach(function(n) {
					if (w[n][e]) {
						if ("leave" === n) return void(0, b.on)(t.element, w[n][e], T.end, t); (0, b.on)(t.element, w[n][e], T[n], t)
					}
				});
				this.handlers.concat(n)
			}
		},
		{
			key: "destroy",
			value: function() {
				clearTimeout(this.tapTimeout),
				clearTimeout(this.holdTimeout),
				clearTimeout(this.swipeTimeout),
				this.removeAllListeners("touch-start"),
				this.removeAllListeners("multi-touch-start"),
				this.removeAllListeners("hold"),
				this.removeAllListeners("pinch"),
				this.removeAllListeners("rotate"),
				this.removeAllListeners("pan-start"),
				this.removeAllListeners("pan"),
				this.removeAllListeners("pan-end"),
				this.removeAllListeners("swipe"),
				this.removeAllListeners("tap"),
				this.removeAllListeners("doubletap"),
				this.removeAllListeners("touch-end"),
				this.removeAllListeners("multi-touch-end"),
				this.removeAllListeners("touch-cancel"),
				this.identifier = null,
				delete this.element.__Finger__identifier,
				this.handlers.forEach(function(t) {
					t && t.remove && t.remove()
				}),
				this.touched = !1,
				this.handlers = [],
				this.isDoubleTap = !1,
				this.y1 = null,
				this.x1 = this.y1,
				this.y2 = null,
				this.x2 = this.y2,
				this.deltaTime = null,
				this.lastStartTime = null,
				this.now = null,
				this.tapTimeout = null,
				this.holdTimeout = null,
				this.swipeTimeout = null,
				this.startVector = null,
				this.startDistance = null
			}
		}]),
		e
	} (S), {
		start: function(t) {
			var e = this;
			if (t && t.target) {
				this.touched = !0,
				this.now = Date.now(),
				this.deltaTime = this.now - (this.lastStartTime || this.now);
				var n = r(t);
				"number" == typeof this.x1 && "number" == typeof this.y1 && (this.isDoubleTap = this.deltaTime < 300 && Math.abs(n.x - this.x1) < 10 && Math.abs(n.y - this.y1) < 10),
				this.x1 = n.x,
				this.y1 = n.y;
				var i = a(t);
				if (this.emit("touch-start", i), t.touches && t.touches.length > 1) {
					var s = r(t, 0),
					u = r(t, 1);
					this.startVector = [u.x - s.x, u.y - s.y],
					this.startDistance = o.apply(void 0, (0, l.
				default)(this.startVector)),
					i.vector = this.startVector,
					i.vectorDistance = this.startDistance,
					clearTimeout(this.holdTimeout),
					this.emit("multi-touch-start", i)
				}
				this.lastStartTime = this.now,
				this.holdTimeout = setTimeout(function() {
					e.emit("hold", i)
				},
				750),
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		move: function(t) {
			console.log(55365)
			if (t && t.target && this.touched) {
				var e = r(t),
				n = a(t);
				if (this.isDoubleTap = !1, clearTimeout(this.holdTimeout), null !== this.x2 ? (n.deltaX = e.x - this.x2, n.deltaY = e.y - this.y2) : (n.deltaX = 0, n.deltaY = 0), t.touches && t.touches.length > 1 && this.startVector && null !== this.startVector.x) {
					var i = r(t, 0),
					s = r(t, 1),
					l = [s.x - i.x, s.y - i.y],
					u = o.apply(void 0, l),
					c = u / this.startDistance,
					f = Math.acos((this.startVector[0] * l[0] + this.startVector[1] * l[1]) / (u * this.startDistance));
					f = l[0] * this.startVector[1] - this.startVector[0] * l[1] >= 0 ? f: -f,
					Math.abs(c - 1) > .01 && (n.scale = c, this.emit("pinch", n)),
					0 !== f && (n.angle = f, this.emit("rotate", n)),
					t.preventDefault()
				} else if (this.touched && (0 !== n.deltaY || 0 !== n.deltaX)) if (this.panning) {
					this.emit("pan", n);
					var d = Date.now();
					d - this.panSpeedStartTime > 300 && (this.panSpeedStartTime = d, this.panSpeedStartPos = e)
				} else this.emit("pan-start", n),
				this.panning = !0,
				this.panSpeedStartTime = Date.now(),
				this.panSpeedStartPos = e;
				this.options.preventDefaultMove && t.preventDefault(),
				this.x2 = e.x,
				this.y2 = e.y,
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		end: function(t) {
			console.log(9999)
			var e = this;
			if (t && t.target) {
				clearTimeout(this.holdTimeout),
				this.now = Date.now();
				var n = this.x2 - this.x1,
				i = this.y2 - this.y1,
				o = null === this.x2 || Math.abs(n) < 10 && Math.abs(i) < 10,
				r = this.now - this.lastStartTime < 200 && o,
				s = a(t);
				if (null !== this.x2 && null !== this.y2 && this.panning) {
					var l = Math.abs(n) > Math.abs(i) ? n > 0 ? "RIGHT": "LEFT": i > 0 ? "DOWN": "TOP",
					u = 0,
					c = 0;
					if (this.now - this.panSpeedStartTime < 300) {
						var f = this.x2 - this.panSpeedStartPos.x,
						d = this.y2 - this.panSpeedStartPos.y,
						h = this.now - this.panSpeedStartTime;
						c = f / h,
						u = d / h
					}
					s.swipeDirection = l,
					s.speedX = c,
					s.speedY = u,
					s.deltaX = n,
					s.deltaY = i,
					this.panning && (this.emit("pan-end", s), this.panning = !1),
					this.swipeTimeout = setTimeout(function() {
						e.emit("swipe", s)
					})
				} else o && r && (this.tapTimeout = setTimeout(function() {
					e.emit("tap", s),
					e.isDoubleTap && (e.emit("doubletap", s), e.isDoubleTap = !1)
				},
				0));
				this.emit("touch-end", s),
				t.touches && t.touches.length > 0 && t.touches.length < 2 && this.emit("multi-touch-end", s),
				this.startDistance = null,
				this.startVector = [0, 0],
				this.y2 = null,
				this.x2 = this.y2,
				this.touched = !1,
				this.options.preventDefaultEnd && t.preventDefault(),
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		cancel: function(t) {
			clearTimeout(this.tapTimeout),
			clearTimeout(this.holdTimeout),
			clearTimeout(this.swipeTimeout),
			this.touched = !1,
			this.emit("touch-cancel", t)
		}
	})
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = r(t, e);
		return (0, o.toDom)(n)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Template = void 0,
	e.templeteToDom = i;
	var o = n(210),
	r = e.Template = function() {
		var t = {},
		e = function(t) {
			return String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;").replace(/[ ]/g, "&nbsp;")
		};
		return function(n, i) {
			if ("string" == typeof n) {
				var o = t[n];
				if (!t[n]) {
					var r = n.replace(/<%\s*([^=][^%>]*)\s*%>/g,
					function() {
						return "';" + arguments[1] + " tmp+='"
					}).replace(/<%=\s*([^%>]+)\s*%>/g,
					function() {
						return "' + strip(" + arguments[1] + ") +'"
					}).replace(/<%=\s*([^%>]+)\s*%>/g,
					function() {
						return "' + " + arguments[1] + "+ '"
					});
					r = 'var tmp = ""; with(obj){ tmp = \'' + r + "'; } return tmp;",
					o = new Function("obj", "strip", r),
					t[n] = o
				}
				return o(i, e)
			}
		}
	} ()
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t.length >= 3 && (0, w.
	default)(t[0].lat) && (0, w.
	default)(t[0].lng)
	}
	function r(t) {
		return t.length >= 1 && t.every(function(t) {
			return t.length >= 3 && o(t)
		})
	}
	function a(t) {
		return t.length >= 1 && t.every(function(t) {
			return r(t)
		})
	}
	function s(t) {
		var e = t[0],
		n = t[t.length - 1];
		return e.lat === n.lat && e.lng === n.lng ? t: t.concat([e])
	}
	function l(t) {
		for (var e = 0,
		n = 1,
		i = void 0,
		o = void 0; n < t.length;) i = o || t[0],
		o = t[n],
		e += (o.lng - i.lng) * (o.lat + i.lat),
		n += 1;
		return e > 0
	}
	function u(t) {
		return (o(t) ? [[s(t)]] : r(t) ? [t.map(function(t) {
			return s(t)
		})] : t.map(function(t) {
			return t.map(s)
		})).map(function(t) {
			return t.map(function(t, e) {
				var n = [];
				return t.forEach(function(t) {
					if (n.length > 0) {
						var e = n[n.length - 1];
						t.lat === e.lat && t.lng === e.lng || n.push(t)
					} else n.push(t)
				}),
				0 === e ? l(n) ? n.reverse() : n: l(n) ? n: n.reverse()
			})
		})
	}
	function c(t) {
		return u(t).reduce(function(t, e) {
			var n = e.reduce(function(t, e) {
				return t.push(e),
				t
			},
			[]);
			return t.push.apply(t, (0, b.
		default)(n)),
			t
		},
		[])
	}
	function f(t) {
		return o(t) ? t.length: t.reduce(function(t, e) {
			return t + e.reduce(function(t, e) {
				return t + e.length
			},
			0)
		},
		0)
	}
	function d(t) {
		return t.reduce(function(t, e) {
			return t + h(e)
		},
		0)
	}
	function h(t) {
		var e = 0,
		n = !0,
		i = !0,
		o = !1,
		r = void 0;
		try {
			for (var a, s = (0, y.
		default)(t); ! (i = (a = s.next()).done); i = !0) {
				var l = a.value,
				u = l.length;
				e += n ? u >= 3 ? u - 3 : 0 : u + 1,
				n = !1
			}
		} catch(t) {
			o = !0,
			r = t
		} finally {
			try { ! i && s.
				return && s.
				return ()
			} finally {
				if (o) throw r
			}
		}
		return e
	}
	function v(t) {
		var e = null;
		if (t.length > 1) {
			var n = 0;
			e = [],
			t.forEach(function(t) {
				n += t.length,
				e.push(n)
			}),
			e.pop()
		}
		return e
	}
	function p(t, e) {
		var n = 3 * d(t),
		i = m(t),
		o = new e(n),
		r = 0;
		return t.forEach(function(t, e) {
			var n = _(t),
			a = !0,
			s = !1,
			l = void 0;
			try {
				for (var u, c = (0, y.
			default)(n); ! (a = (u = c.next()).done); a = !0) {
					var f = u.value;
					o[r] = f + i[e],
					r += 1
				}
			} catch(t) {
				s = !0,
				l = t
			} finally {
				try { ! a && c.
					return && c.
					return ()
				} finally {
					if (s) throw l
				}
			}
		}),
		o
	}
	function _(t) {
		var e = v(t),
		n = I(t, {
			dimensions: 2,
			result: []
		});
		return (0, P.
	default)(n, e, 2)
	}
	function m(t) {
		var e = new Array(t.length + 1);
		e[0] = 0;
		var n = 0;
		return t.forEach(function(t, i) {
			n += t.reduce(function(t, e) {
				return t + e.length
			},
			0),
			e[i + 1] = n
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var g = n(27),
	y = i(g),
	x = n(24),
	b = i(x),
	S = n(343),
	w = i(S);
	e.isSimple = o,
	e.isPart = r,
	e.isComplex = a,
	e.isClockWise = l,
	e.normalize = u,
	e.getBorderPolyline = c,
	e.getVertexCount = f,
	e.getTriangleCount = d,
	e.getTriangleCountOfPart = h,
	e.getSurfaceIndices = p;
	var E = n(237),
	T = i(E),
	A = n(278),
	P = i(A),
	I = T.
default.flattenVertices
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		if (e) {
			var n = e.find(function(e) {
				return e.layerid === t
			});
			return n ? {
				minZoom: n.zoom_min,
				maxZoom: n.zoom_max,
				getTileUrl: function(t, e, i) {
					var o = n.url;
					return n.params.forEach(function(i) {
						var r = n[i];
						Array.isArray(r) && (r = r[(t + e) % r.length]),
						o = o.replace("{" + i + "}", r)
					}),
					o = o.replace("{x}", t).replace("{y}", e).replace("{z}", i)
				}
			}: void 0
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(16),
	a = i(r),
	s = n(3),
	l = i(s),
	u = n(0),
	c = i(u),
	f = n(1),
	d = i(f),
	h = n(5),
	v = i(h),
	p = n(35),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(382),
	x = i(y),
	b = n(90),
	S = n(66),
	w = n(143),
	E = n(41),
	T = i(E),
	A = n(29),
	P = n(294),
	I = n(43),
	k = T.
default.isFunction,
	L = T.
default.isString,
	M = T.
default.isNumber,
	C = function(t) {
		function e(t) { (0, c.
		default)(this, e),
			t.type = S.RENDER_LAYER_TYPE.imageTile;
			var n = (0, v.
		default)(this, (e.__proto__ || (0, l.
		default)(e)).call(this, t));
			return (0, I.statCn)("ImageTileLayer"),
			n
		}
		return (0, g.
	default)(e, t),
		(0, d.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "_initialize", this).call(this, t),
				this._setTileUrlGetter(t.getTileUrl),
				this.sourceId = this.sourceId || this.id
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return M(t) || new A.BaseTypeError("ImageTileLayer.zIndex", "number", t).error(),
				(0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "setZIndex", this).call(this, t)
			}
		},
		{
			key: "_setTileUrlGetter",
			value: function(t) {
				k(t) ? L(t(0, 0, 0)) ? this.getTileUrl = t: new A.BaseTypeError("ImageTileLayerOptions.getTileUrl返回值", "string", t(0, 0, 0)).
				throw () : new A.BaseTypeError("ImageTileLayerOptions.getTileUrl", "function", t).
				throw ()
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && (this.map.addSource(this.sourceId, {
					type: b.SOURCE_TYPE.imageTile,
					tileSize: this.tileSize,
					data: this.getTileUrl,
					minZoom: this.minDataZoom,
					maxZoom: this.maxDataZoom
				}), this._fire("layer", {}))
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId),
				this._fire("source_removed", {})
			}
		}], [{
			key: "createCustomLayer",
			value: function(t) {
				var n = t.map,
				i = t.layerId;
				return n ? (0, P.checkKey)(n.id).then(function(r) {
					if (!r) throw "请传入正确的key";
					if (!r.custom_layer || !r.custom_layer.enable) throw "无个性化图层权限";
					var s = o(i, r.custom_layer.layers);
					if (!s) throw "请传入正确的layerId"; (0, I.cl)({
						id: i,
						subkey: r.subkey
					});
					var l = new e((0, a.
				default)(s, t));
					return l.setZIndex((0, w.getRank)(w.LAYER_LEVEL.BUILDING + 1, 0) - (0, w.getRank)(w.LAYER_LEVEL.BUILDING, 0) - 1),
					n.moveLayer(l.getId(), w.LAYER_LEVEL.BUILDING),
					l
				}).
				catch(function(t) {
					return console.error("个性化图层鉴权失败：" + t),
					null
				}) : (console.error("个性化图层鉴权失败：未绑定地图对象。"), null)
			}
		}]),
		e
	} (x.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		if (t.row > e.row) {
			var n = t;
			t = e,
			e = n
		}
		return {
			x0: t.column,
			y0: t.row,
			x1: e.column,
			y1: e.row,
			dx: e.column - t.column,
			dy: e.row - t.row
		}
	}
	function r(t, e, n, i, o) {
		var r = Math.max(n, Math.floor(e.y0)),
		a = Math.min(i, Math.ceil(e.y1));
		if (t.x0 === e.x0 && t.y0 === e.y0 ? t.x0 + e.dy / t.dy * t.dx < e.x1: t.x1 - e.dy / t.dy * t.dx < e.x0) {
			var s = t;
			t = e,
			e = s
		}
		for (var l = t.dx / t.dy,
		u = e.dx / e.dy,
		c = t.dx > 0,
		f = e.dx < 0,
		d = r; d < a; d++) {
			var h = l * Math.max(0, Math.min(t.dy, d + c - t.y0)) + t.x0,
			v = u * Math.max(0, Math.min(e.dy, d + f - e.y0)) + e.x0;
			o(Math.floor(v), Math.ceil(h), d)
		}
	}
	function a(t, e, n, i, a, s) {
		var l = o(t, e),
		u = o(e, n),
		c = o(n, t),
		f = void 0;
		l.dy > u.dy && (f = l, l = u, u = f),
		l.dy > c.dy && (f = l, l = c, c = f),
		u.dy > c.dy && (f = u, u = c, c = f),
		l.dy && r(c, l, i, a, s),
		u.dy && r(c, u, i, a, s)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(17),
	l = i(s),
	u = n(0),
	c = i(u),
	f = n(1),
	d = i(f),
	h = n(23),
	v = i(h),
	p = function() {
		function t(e, n, i, o, r) { (0, c.
		default)(this, t),
			this.z = e,
			this.x = n,
			this.y = i,
			this.w = o,
			this.tileSize = r || v.
		default.tileSize,
			this.id = n + "_" + i + "_" + e,
			this._children = null,
			this._parent = null
		}
		return (0, d.
	default)(t, [{
			key: "url",
			value: function(t) {
				var e = this.getServiceCoord(),
				n = e.x,
				i = e.y,
				o = e.z;
				return t[(this.x + this.y) % t.length].replace("{z}", o).replace("{x}", n).replace("{y}", i).replace("{version}", v.
			default.dataVersion.tile)
			}
		},
		{
			key: "setIconUrls",
			value: function(t) {
				this._iconUrls = t
			}
		},
		{
			key: "getServiceCoord",
			value: function() {
				var t = this.tileSize ? v.
			default.tileSize / this.tileSize: 1;
				return {
					x: this.x,
					y: Math.pow(2, this.z) * t - this.y - 1,
					z: this.z
				}
			}
		},
		{
			key: "urlForBatchChildren",
			value: function(t) {
				var e = this.children().map(function(t) {
					return t.getServiceCoord()
				}).map(function(t) {
					return t.z + "_" + t.x + "_" + t.y
				}).join();
				return t[(this.x + this.y) % t.length].replace("{tiles}", e).replace("{version}", v.
			default.dataVersion.tile)
			}
		},
		{
			key: "parent",
			value: function(e) {
				return 0 === this.z ? null: this._parent ? this._parent: (this.z > e ? this._parent = new t(this.z - 1, this.x, this.y, this.w) : this._parent = new t(this.z - 1, Math.floor(this.x / 2), Math.floor(this.y / 2), this.w), this._parent)
			}
		},
		{
			key: "ancestor",
			value: function(e) {
				var n = Math.round(this.z) - Math.round(e);
				if (n <= 0) return null;
				var i = Math.pow(2, n);
				return new t(this.z - n, Math.floor(this.x / i), Math.floor(this.y / i), this.w)
			}
		},
		{
			key: "children",
			value: function(e) {
				if (this._children) return this._children;
				if (this.z >= e) return this._children = [new t(this.z + 1, this.x, this.y, this.w)],
				this._children;
				var n = this.z + 1,
				i = 2 * this.x,
				o = 2 * this.y;
				return this._children = [new t(n, i, o, this.w), new t(n, i + 1, o, this.w), new t(n, i, o + 1, this.w), new t(n, i + 1, o + 1, this.w)],
				this._children
			}
		},
		{
			key: "descendant",
			value: function(e) {
				var n = this.x,
				i = this.y,
				o = this.z,
				r = this.w,
				a = Math.round(e) - Math.round(o);
				if (a <= 0) return null;
				for (var s = Math.pow(2, a), l = [], u = 0; u < s; u++) for (var c = 0; c < s; c++) l.push(new t(e, n * s + u, i * s + c, r));
				return l
			}
		},
		{
			key: "isVirtualCoord",
			value: function() {
				return this.z <= 0
			}
		},
		{
			key: "wrapXAroundCenter",
			value: function(t) {
				var e = this.x,
				n = this.z,
				i = Math.pow(2, n),
				o = t.getLng() / 360 + .5,
				r = e / i,
				a = r - o;
				return a > .5 ? e - i: a < -.5 ? e + i: e
			}
		}], [{
			key: "converter",
			value: function(t) {
				return new this(t.z, t.x, t.y, t.w, t.tileSize)
			}
		},
		{
			key: "cover",
			value: function(e, n) {
				function i(n, i, a) {
					var s = void 0,
					l = void 0,
					u = void 0,
					c = void 0;
					if (a >= 0 && a <= o) for (s = n; s < i; s++) l = Math.floor(s / o),
					u = (s % o + o) % o,
					c = new t(e, u, a, l),
					r[c.id] = c
				}
				var o = 1 << e,
				r = {};
				return a(n[0], n[1], n[2], 0, o, i),
				a(n[2], n[3], n[0], 0, o, i),
				(0, l.
			default)(r).map(function(t) {
					return r[t]
				})
			}
		},
		{
			key: "coverAll",
			value: function(e) {
				for (var n = 1 << e,
				i = [], o = 0; o < n; o++) for (var r = 0; r < n; r++) {
					var a = new t(e, o, r, 0);
					i.push(a)
				}
				return i
			}
		}]),
		t
	} ();
	e.
default = p
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t === o.DEFAULT || o[t] === o.DEFAULT
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isDefaultStyle = i;
	var o = e.STYLE_ID = {
		DEFAULT: 0,
		DARK: 1,
		LIGHT: 2,
		GAME: 3
	}
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return {
			state:
			0,
			transition: function(t) {
				var e = "overlay" === t;
				switch (this.state) {
				case 0:
					this.state = e ? 1 : 0;
					break;
				case 1:
					this.state = e ? 1 : 2;
					break;
				case 2:
					this.state = e ? 1 : 0
				}
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(16),
	a = i(r),
	s = n(3),
	l = i(s),
	u = n(0),
	c = i(u),
	f = n(1),
	d = i(f),
	h = n(5),
	v = i(h),
	p = n(35),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(10),
	x = i(y),
	b = n(504),
	S = i(b),
	w = n(28),
	E = i(w),
	T = n(484),
	A = i(T),
	P = n(209),
	I = i(P),
	k = n(29),
	L = n(41),
	M = i(L),
	C = n(43),
	R = n(112),
	B = function(t) {
		function e(t) { (0, c.
		default)(this, e);
			var n = (0, v.
		default)(this, (e.__proto__ || (0, l.
		default)(e)).call(this));
			return t.geometries = t.geometries || [],
			n.id = t.id || x.
		default.uniqueId(),
			n.zIndex = t.zIndex >= 0 ? t.zIndex: 0,
			n.styles = t.styles || {},
			n.minZoom = t.minZoom,
			n.maxZoom = t.maxZoom,
			n._setGeometryType(),
			n._checkGeometries(t.geometries, n.styles),
			n._rawGeometries = n._assignIdToGeometry(t.geometries),
			n._idSet = n._updateGeometryIdSet(n._rawGeometries),
			n.geometries = n._transferFromGeometry(n._rawGeometries),
			n._checkStyles(n.styles),
			n._initialize(t),
			n._bubbleHandler = [],
			n._lastestOverlayMouseMoveObj = null,
			n._mousemoveFSM = o(),
			t.map && n.setMap(t.map),
			(0, C.statCn)(n._className),
			n
		}
		return (0, g.
	default)(e, t),
		(0, d.
	default)(e, [{
			key: "_initialize",
			value: function() {}
		},
		{
			key: "_emitGeoEvent",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
				n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {};
				this.emit(t, (0, a.
			default)({},
				n, {
					geometry: e,
					type: t,
					target: this
				}))
			}
		},
		{
			key: "_bindBubbleHandler",
			value: function() {
				var t = this;
				this._bubbleHandler.push(E.
			default.on(this.map._bubbleMiddleware, "mousemove",
				function(e) {
					2 === t._mousemoveFSM.state && (t._lastestOverlayMouseMoveObj = null, t._emitGeoEvent("mouseout", null, e), t._emitGeoEvent("hover", null, e)),
					t._mousemoveFSM.transition.call(t._mousemoveFSM, "map")
				})),
				this._bubbleHandler.push(E.
			default.on(this.map._bubbleMiddleware, "action",
				function(e) {
					if (e && e.layerId === t.id) {
						var n = t.geometries[e.objectIndex];
						t._emitGeoEvent(e.eventType, n, e.mapEvent),
						"mousemove" === e.eventType && (t._mousemoveFSM.transition.call(t._mousemoveFSM, "overlay"), t._lastestOverlayMouseMoveObj ? n !== t._lastestOverlayMouseMoveObj && t._emitGeoEvent("hover", n, e.mapEvent) : (t._emitGeoEvent("mouseover", n, e.mapEvent), t._emitGeoEvent("hover", n, e.mapEvent)), t._lastestOverlayMouseMoveObj = n)
					}
				})),
				this._bubbleHandler.push(E.
			default.on(this.map, "destroy",
				function() {
					t.setMap(null)
				}))
			}
		},
		{
			key: "_removeBubbleHander",
			value: function() {
				this._bubbleHandler.forEach(function(t) {
					t && t.remove && t.remove()
				})
			}
		},
		{
			key: "_setGeometryType",
			value: function() {}
		},
		{
			key: "_createLayer",
			value: function() {
				this.layer = new A.
			default({
					map:
					this.map,
					id: this.id,
					type: this._layerType,
					zIndex: this.zIndex,
					minZoom: this.minZoom,
					maxZoom: this.maxZoom,
					sourceData: this._getRenderSourceData()
				})
			}
		},
		{
			key: "_removeLayer",
			value: function() {
				this.layer && this.layer.setMap(null)
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				return t = Boolean(t),
				this.layer && this.layer.setVisible(t),
				this
			}
		},
		{
			key: "setMap",
			value: function(t) {
				return null === t || t instanceof window.TMap.Map ? t === this.map ? this: (t ? this.map ? (this.setMap(null), this.setMap(t)) : this.id && t.getLayer(this.id) ? console.error("Map中已存在id为" + this.id + "的图层，无法重复添加") : (this.map = t, this._bindBubbleHandler(), this._createLayer()) : (this._removeBubbleHander(), this._removeLayer(), this.map = null), this) : (console.error("所传入参数并非TMap.Map的实例！"), this)
			}
		},
		{
			key: "setGeometries",
			value: function(t) {
				return Array.isArray(t) ? t === this._rawGeometries ? this: ((0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "setGeometries", this).call(this, t, this.styles), this.map && this.map.getSource(this.id).setData(this._getRenderSourceData()), this) : (new k.BaseTypeError("geometries", "Array", t).error(), this)
			}
		},
		{
			key: "setStyles",
			value: function(t) {
				return t ? (t.hasOwnProperty || new k.BaseTypeError("styles", "Object", t).error(), this._checkStyles(t), t === this.styles ? this: (this.styles = t, this.map && this.map.getSource(this.id).setData(this._getRenderSourceData()), this)) : this
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return M.
			default.isNumber(t) ? t < 0 ? (console.error("zIndex希望设置为非负数,实际值为: " + t), this) : (this.layer && this.layer.setZIndex(t), this.zIndex = t, this) : (new k.BaseTypeError("zIndex", "Number", t).error(), this)
			}
		},
		{
			key: "getMap",
			value: function() {
				return this.map
			}
		},
		{
			key: "getVisible",
			value: function() {
				return this.layer && this.layer.visible
			}
		},
		{
			key: "getStyles",
			value: function() {
				return (0, a.
			default)({},
				this.styles)
			}
		},
		{
			key: "getZIndex",
			value: function() {
				return this.zIndex
			}
		},
		{
			key: "updateGeometries",
			value: function(t, n) {
				return t ? ((0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "updateGeometries", this).call(this, t, n), this.map && this.map.getSource(this.id).setData(this._getRenderSourceData()), this) : this
			}
		},
		{
			key: "add",
			value: function(t) {
				return (0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "add", this).call(this, t)
			}
		},
		{
			key: "remove",
			value: function(t) {
				return (0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "remove", this).call(this, t)
			}
		},
		{
			key: "destroy",
			value: function() { (0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "destroy", this).call(this),
				this.removeAllListeners(),
				this.setMap(null),
				this.styles = null,
				this.id = null,
				this.zIndex = null,
				this.minZoom = null,
				this.maxZoom = null
			}
		},
		{
			key: "getGeometryType",
			value: function() {
				return this._geometryType
			}
		},
		{
			key: "snap",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1 / 0,
				n = arguments[2];
				this._snapTargets || (this._updateSnapTargets(), this.on("geometry_changed", this._updateSnapTargets.bind(this)));
				var i = null;
				return i = this._snapToPoints(t, e, n),
				i || (i = this._snapToSegments(t, e, n)),
				i
			}
		},
		{
			key: "_snapToPoints",
			value: function(t, e, n) {
				var i = this._snapTargets.points,
				o = this.map;
				n && !n.isEmpty() && (i = i.filter(function(t) {
					return n.contains(t)
				}));
				var r = o.projectToContainer(t),
				a = null,
				s = 1 / 0;
				return i.forEach(function(t) {
					var n = o.projectToContainer(t),
					i = r.dist(n);
					i < e && i < s && (a = t, s = i)
				}),
				a ? {
					latLng: a,
					dist: s
				}: null
			}
		},
		{
			key: "_snapToSegments",
			value: function(t, e, n) {
				var i = this._snapTargets.segments,
				o = this.map;
				n && !n.isEmpty() && (i = i.filter(function(t) {
					var e = new I.
				default;
					return e.extend(t[0]),
					e.extend(t[1]),
					n.intersects(e)
				}));
				for (var r = o.projectToContainer(t), a = null, s = 1 / 0, l = 0; l < i.length; l++) {
					var u = i[l],
					c = o.projectToContainer(u[0]),
					f = o.projectToContainer(u[1]),
					d = f.sub(c),
					h = r.sub(c),
					v = h.dot(d) / d.lengthSq();
					if (v > 0 && v < 1) {
						var p = d.mult(v),
						_ = h.sub(p),
						m = _.length();
						m < e && m < s && (a = o.unprojectFromContainer(c.add(p)), s = m)
					}
				}
				return a ? {
					latLng: a,
					dist: s
				}: null
			}
		},
		{
			key: "_updateSnapTargets",
			value: function() {
				this._snapTargets = {
					points: this._getAllPoints(),
					segments: this._getAllSegments()
				}
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return []
			}
		},
		{
			key: "_getAllSegments",
			value: function() {
				return []
			}
		},
		{
			key: "_getRenderableGeometries",
			value: function() {
				var t = this;
				return this.geometries.filter(function(e) {
					return e && t.styles
				}).map(function(e) {
					var n = (0, a.
				default)({},
					e);
					return t.styles[e.styleId] || (n.styleId = "default"),
					n
				})
			}
		},
		{
			key: "_getRenderSourceData",
			value: function() {
				return {
					type: this._geometryType,
					styles: this.styles,
					geometries: this._getRenderableGeometries()
				}
			}
		},
		{
			key: "_checkStyles",
			value: function(t) {
				t.
			default || (t.
			default = this._getDefaultStyle())
			}
		}]),
		e
	} (S.
default);
	e.
default = B,
	B.LatLngBoundsToBoundingBox = function(t) {
		var e = t.getNorthEast(),
		n = t.getSouthWest(),
		i = new TMap.LatLng((e.lat + n.lat) / 2, (e.lng + n.lng) / 2),
		o = (0, R.latLngToMercator)(e),
		r = (0, R.latLngToMercator)(n),
		a = o.x - r.x,
		s = o.y - r.y;
		return i.height = ((e.height || 0) + (0 | n.height)) / 2,
		{
			center: i,
			width: a,
			height: s
		}
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.MAP_ZOOM_TYPE = {
		DEFAULT: 0,
		CENTER: 1
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(211),
	p = i(v),
	_ = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.textureShader = !0,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "afterDraw",
			value: function() {
				this.gl.activeTexture(this.gl.TEXTURE0),
				this.gl.bindTexture(this.gl.TEXTURE_2D, null),
				this.gl.activeTexture(this.gl.TEXTURE1),
				this.gl.bindTexture(this.gl.TEXTURE_2D, null)
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e, n) {
	t.exports = {
	default:
		n(308),
		__esModule: !0
	}
},
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(314),
	n(318),
	n(317),
	n(316),
	t.exports = n(2).Map
},
function(t, e, n) {
	n(315),
	t.exports = n(2).Math.log2
},
function(t, e, n) {
	n(319),
	t.exports = n(2).Object.values
},
function(t, e, n) {
	var i = n(71);
	t.exports = function(t, e) {
		var n = [];
		return i(t, !1, n.push, n, e),
		n
	}
},
function(t, e, n) {
	var i = n(7),
	o = n(117),
	r = n(9)("species");
	t.exports = function(t) {
		var e;
		return o(t) && (e = t.constructor, "function" != typeof e || e !== Array && !o(e.prototype) || (e = void 0), i(e) && null === (e = e[r]) && (e = void 0)),
		void 0 === e ? Array: e
	}
},
function(t, e, n) {
	var i = n(311);
	t.exports = function(t, e) {
		return new(i(t))(e)
	}
},
function(t, e) {
	t.exports = Math.sign ||
	function(t) {
		return 0 == (t = +t) || t != t ? t: t < 0 ? -1 : 1
	}
},
function(t, e, n) {
	"use strict";
	var i = n(260),
	o = n(183);
	t.exports = n(250)("Map",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		get: function(t) {
			var e = i.getEntry(o(this, "Map"), t);
			return e && e.v
		},
		set: function(t, e) {
			return i.def(o(this, "Map"), 0 === t ? 0 : t, e)
		}
	},
	i, !0)
},
function(t, e, n) {
	var i = n(6);
	i(i.S, "Math", {
		log2: function(t) {
			return Math.log(t) / Math.LN2
		}
	})
},
function(t, e, n) {
	n(251)("Map")
},
function(t, e, n) {
	n(252)("Map")
},
function(t, e, n) {
	var i = n(6);
	i(i.P + i.R, "Map", {
		toJSON: n(261)("Map")
	})
},
function(t, e, n) {
	var i = n(6),
	o = n(118)(!1);
	i(i.S, "Object", {
		values: function(t) {
			return o(t)
		}
	})
},
function(t, e, n) {
	var i = n(244),
	o = n(78)("toStringTag"),
	r = "Arguments" == i(function() {
		return arguments
	} ()),
	a = function(t, e) {
		try {
			return t[e]
		} catch(t) {}
	};
	t.exports = function(t) {
		var e, n, s;
		return void 0 === t ? "Undefined": null === t ? "Null": "string" == typeof(n = a(e = Object(t), o)) ? n: r ? i(e) : "Object" == (s = i(e)) && "function" == typeof e.callee ? "Arguments": s
	}
},
function(t, e, n) {
	var i = n(244);
	t.exports = Object("z").propertyIsEnumerable(0) ? Object: function(t) {
		return "String" == i(t) ? t.split("") : Object(t)
	}
},
function(t, e) {
	e.f = {}.propertyIsEnumerable
},
function(t, e, n) {
	var i = n(60),
	o = n(229),
	r = n(78)("species");
	t.exports = function(t, e) {
		var n, a = i(t).constructor;
		return void 0 === a || void 0 == (n = i(a)[r]) ? e: o(n)
	}
},
, ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.attributePart = "\n\tattribute vec2 a_Positions;\n\tattribute vec3 a_InstanceTrans;\n\tattribute vec4 a_InstanceCoords;\n\tattribute vec4 a_InstanceTextBounds;\n\tattribute vec4 a_InstanceInfo;\n",
	e.uniformPart = "\n\tuniform mat4 u_matrix;\n\tuniform vec2 u_resolution;\n\tuniform float u_fadeChange;\n\tuniform vec2 u_InstanceTileTextureOffset;\n\tuniform vec2 u_iconTextureResolution;\n\tuniform vec2 u_textTextureResolution;\n\tuniform float u_showPoint;\n\tuniform float u_showLabel;\n\tuniform float u_mapScale;\n",
	e.varyingPart = "\n\tvarying vec2 v_TexCoord;\n\tvarying float v_isShow;\n\tvarying float v_isIcon;\n\tvarying float v_opacity;\n\tvarying vec4 v_ndcCoord;\n",
	e.filterPart = "\nfloat getFilterOpacity(float opacity, float type) {\n\treturn mix(\n\t\tmix(0.0, opacity, u_showPoint),\n\t\tmix(0.0, opacity, u_showLabel),\n\t\ttype\n\t);\n}\n",
	e.projectScreenPart = "\nvec2 project(vec4 device) {\n    vec3 device_normal = device.xyz / device.w;\n    vec2 clip_pos = (device_normal * 0.5 + 0.5).xy;\n    return clip_pos * u_resolution;\n}\n\nvec4 unproject(vec2 screen, float z, float w) {\n    vec2 clip_pos = screen / u_resolution;\n    vec2 device_normal = clip_pos * 2.0 - 1.0;\n    return vec4(device_normal * w, z, w);\n}\n",
	e.glPositionPart = "\n\t\tvec4 center_proj = u_matrix * vec4(transCoord, 0., 1.);\n\t\tvec2 center_screen = project(center_proj);\n        \n\t\tfloat s_rotate = a_InstanceInfo.x;\n\t\tfloat angle_sin = sin(s_rotate);\n    float angle_cos = cos(s_rotate);\n\t\tmat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n        \n\t\tvec2 positions = a_Positions * 0.5 + 0.5;\n\t\tvec2 corner_screen = rotation_matrix * vec2(\n\t\t\t(a_InstanceCoords.x * positions.x - a_InstanceCoords.z) * u_mapScale,\n\t\t\t(a_InstanceCoords.y * (positions.y - 1.0) + a_InstanceCoords.w) * u_mapScale\n\t\t) + center_screen.xy;\n\t\tvec4 corner_proj = unproject(corner_screen, center_proj.z, center_proj.w);\n\t\tgl_Position = corner_proj;\n\n\t\tv_ndcCoord = center_proj;\n",
	e.glPositionCusPart = "\n\t\tvec4 center_proj = u_matrix * vec4(transCoord, 0., 1.);\n\t\tvec2 center_screen = project(center_proj);\n        \n\t\tfloat s_rotate = a_InstanceInfo.x;\n\t\tfloat angle_sin = sin(s_rotate);\n    float angle_cos = cos(s_rotate);\n\t\tmat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n        \n\t\tvec2 positions = a_Positions * 0.5 + 0.5;\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tvec2 corner_screen = rotation_matrix * vec2(\n\t\t\t(a_InstanceCoords.x  * positions.x - a_InstanceCoords.z) * u_mapScale * mix(1.0 , a_InstanceStrentchinglens.x , a_InstanceInfo.z),\n\t\t\t(a_InstanceCoords.y * (positions.y - 1.0) + a_InstanceCoords.w) * mix(1.0 , a_InstanceStrentchinglens.y , a_InstanceInfo.z) * u_mapScale\n\t\t) + center_screen.xy;\n\t\tvec4 corner_proj = unproject(corner_screen, center_proj.z, center_proj.w);\n\t\tgl_Position = corner_proj;\n\t\t\n\t\tv_ndcCoord = center_proj;\n",
	e.fragPart = "\n\tuniform sampler2D u_SamplerMask;\n\tuniform sampler2D u_SamplerText;\n\tuniform sampler2D u_SamplerIcon;\n\tuniform float u_asbackground;\n\tuniform float u_maskScale;\n",
	e.maskPart = "\n\tvec2 v_texCoord = (v_ndcCoord.xy / v_ndcCoord.w * u_maskScale + 1.0) / 2.0;\n\t\n\tfloat maskCull = texture2D(u_SamplerMask, v_texCoord).r;\n\tfloat clipCull = texture2D(u_SamplerMask, v_texCoord).g;\n\tfloat isCulledByMask = step(0.99, clipCull) * step(maskCull, 0.1);\n\t\n\t\n\t\n\t\n"
},
, , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(23),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default.highQualityRender
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.getSouthWest(),
		n = t.getNorthEast(),
		i = t.getSouthEast();
		return [n, t.getNorthWest(), e, i]
	}
	function r(t, e, n) {
		var i = (0, u.latLngToMercator)(t);
		return [new f.
	default(e / 2, n / 2), new f.
	default(e / 2, -n / 2), new f.
	default( - e / 2, -n / 2), new f.
	default( - e / 2, n / 2)].map(function(t) {
			return t.x = i.x + t.x,
			t.y = i.y + t.y,
			(0, u.mercatorToLatLng)(t)
		})
	}
	function a(t) {
		return (0, l.
	default)(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getBoundsPath = o,
	e.getRectanglePath = r;
	var s = n(277),
	l = i(s),
	u = n(112),
	c = n(74),
	f = i(c);
	e.
default = a
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		var i = "highlightRegion" === t ? T: 983040 & t,
		o = n[i] && n[i][t];
		return o ? f(o, e) : k[t] ? k[t] : null
	}
	function r(t) {
		var e = {};
		return e[T] = a(t.regionStyles),
		e[A] = s(t.labelStyles),
		e[E] = l(t.lineStyles),
		e[w] = u(t.pointStyles),
		e[P] = c(t.arrowStyles),
		e[T].highlightRegion = [{
			minScale: 16,
			maxScale: 22,
			fillStyle: "rgba(0, 0, 0, 0.1)",
			strokeStyle: "#888888",
			lineWidth: .5
		}],
		e
	}
	function a(t) {
		var e = {};
		return (0, h.
	default)(t).forEach(function(n) {
			e[n] = {},
			e[n] = t[n].map(function(t) {
				return {
					minScale: t.minScaleVal,
					maxScale: t.maxScaleVal,
					topStyle: (0, b.convertColorToHex)(t.top_color),
					bottomStyle: (0, b.convertColorToHex)(t.bottom_color),
					insideStyle: (0, b.convertColorToHex)(t.bottom_color),
					outsideStyle: (0, b.convertColorToHex)(t.outside_color),
					lineWidth: t.sidewidth
				}
			})
		}),
		e
	}
	function s(t) {
		var e = {};
		return (0, h.
	default)(t).forEach(function(n) {
			e[n] = {},
			e[n] = t[n].map(function(t) {
				var e = (0, b.getFontStyle)(t.effect),
				n = (0, b.getFontWeight)(),
				i = t.font_size,
				o = (0, b.getFontFamily)(t.font_name);
				return {
					minScale: t.minScaleVal,
					maxScale: t.maxScaleVal,
					effect: t.effect,
					font: e + " " + n + " " + i + "px " + o,
					fontStyle: e,
					fontWeight: n,
					fontSize: i,
					fontFamily: o,
					fillStyle: (0, b.convertColorToHex)(t.font_color),
					strokeStyle: (0, b.convertColorToHex)(t.background_color),
					lineWidth: t.effect_size
				}
			})
		}),
		e
	}
	function l(t) {
		var e = {};
		return (0, h.
	default)(t).forEach(function(n) {
			e[n] = {},
			e[n] = t[n].map(function(t) {
				return {
					minScale: t.minScaleVal,
					maxScale: t.maxScaleVal,
					fillStyle: (0, b.convertColorToHex)(t.color_fill),
					fillWidth: t.width,
					fillLineCap: "round",
					fillLineJoin: "bevel",
					strokeStyle: (0, b.convertColorToHex)(t.color_side),
					strokeWidth: t.sidewidth,
					strokeLineCap: "butt",
					strokeLineJoin: "bevel"
				}
			})
		}),
		e
	}
	function u(t) {
		var e = {};
		return (0, h.
	default)(t).forEach(function(n) {
			e[n] = {},
			e[n] = t[n].map(function(t) {
				return {
					minScale: t.minScaleVal,
					maxScale: t.maxScaleVal,
					icon_offset: t.icon_offset,
					labelid: t.labelid,
					density: t.density
				}
			})
		}),
		e
	}
	function c() {
		return {}
	}
	function f(t, e) {
		var n = null;
		return t.some(function(t) {
			return n = t,
			e >= t.minScale && e <= t.maxScale || 22 === e && 21 === t.maxScale
		}) && n || null
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.IndoorStyleMap = e.customStyle = e.ARROW_NUM = e.LABEL_NUM = e.REGION_NUM = e.LINE_NUM = e.POINT_NUM = void 0;
	var d = n(17),
	h = i(d),
	v = n(148),
	p = i(v),
	_ = n(0),
	m = i(_),
	g = n(1),
	y = i(g);
	e.getStyle = o;
	var x = n(646),
	b = n(647),
	S = null,
	w = e.POINT_NUM = 65536,
	E = e.LINE_NUM = 131072,
	T = e.REGION_NUM = 196608,
	A = e.LABEL_NUM = 262144,
	P = e.ARROW_NUM = 327680,
	I = r(x.STYLE),
	k = e.customStyle = {};
	e.IndoorStyleMap = function() {
		function t() { (0, m.
		default)(this, t),
			this.styleMap = new p.
		default,
			this.styleMap.set("default", I)
		}
		return (0, y.
	default)(t, [{
			key: "set",
			value: function(t, e) {
				var n = r(e);
				this.styleMap.set(t, n)
			}
		},
		{
			key: "get",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "default";
				return this.has(t) ? this.styleMap.get(t) : this.styleMap.get("default")
			}
		},
		{
			key: "has",
			value: function(t) {
				return this.styleMap.has(t)
			}
		},
		{
			key: "getFeatureStyle",
			value: function(t, e, n) {
				return o(t, e, this.get(n))
			}
		}], [{
			key: "getInstance",
			value: function() {
				return null === S && (S = new t),
				S
			}
		}]),
		t
	} ()
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t.reduce(function(t, e) {
			return t + y.getVertexCount(e)
		},
		0)
	}
	function r(t) {
		return t.reduce(function(t, e) {
			return t + y.getTriangleCount(e)
		},
		0)
	}
	function a(t) {
		var e = new Array(t.length + 1);
		e[0] = 0;
		var n = 0;
		return t.forEach(function(t, i) {
			n += y.getVertexCount(t),
			e[i + 1] = n
		}),
		e
	}
	function s(t) {
		var e = t.complexPolygons,
		n = t.IndexType,
		i = void 0 === n ? Uint32Array: n,
		o = 3 * r(e),
		s = a(e),
		l = new i(o),
		u = 0;
		return e.forEach(function(t, e) {
			var n = y.getSurfaceIndices(t, i),
			o = !0,
			r = !1,
			a = void 0;
			try {
				for (var c, f = (0, h.
			default)(n); ! (o = (c = f.next()).done); o = !0) {
					var d = c.value;
					l[u] = d + s[e],
					u += 1
				}
			} catch(t) {
				r = !0,
				a = t
			} finally {
				try { ! o && f.
					return && f.
					return ()
				} finally {
					if (r) throw a
				}
			}
		}),
		l
	}
	function l(t) {
		var e = t.cache,
		n = e.positions,
		i = e.positions64xyLow,
		o = e.vertexValid,
		r = t.complexPolygons,
		a = t.fp64,
		s = 0;
		r.forEach(function(t) {
			t.forEach(function(t) {
				t.forEach(function(t) {
					t.forEach(function(t) {
						var e = t.lng,
						o = t.lat,
						r = t.z || 0;
						n[3 * s] = e,
						n[3 * s + 1] = o,
						n[3 * s + 2] = r,
						a && (i[2 * s] = (0, S.fp64LowPart)(e), i[2 * s + 1] = (0, S.fp64LowPart)(o)),
						s += 1
					}),
					o[s - 1] = 0
				})
			})
		})
	}
	function u(t) {
		var e = t.cache,
		n = t.complexPolygons,
		i = t.pointCount,
		o = t.getElevation,
		r = e || new Float32Array(i),
		a = 0;
		return n.forEach(function(t, e) {
			var n = o(e),
			i = y.getVertexCount(t);
			E({
				target: r,
				source: [n],
				start: a,
				count: i
			}),
			a += i
		}),
		r
	}
	function c(t) {
		var e = t.cache,
		n = t.complexPolygons,
		i = t.pointCount,
		o = t.getColor,
		r = e || new Uint8ClampedArray(4 * i),
		a = 0;
		return n.forEach(function(t, e) {
			var n = o(e);
			isNaN(n[3]) && (n[3] = 255);
			var i = y.getVertexCount(t);
			E({
				target: r,
				source: n,
				start: a,
				count: i
			}),
			a += n.length * i
		}),
		r
	}
	function f(t) {
		var e = t.complexPolygons,
		n = t.pointCount,
		i = new Uint8ClampedArray(3 * n),
		o = 0;
		return e.forEach(function(t, e) {
			var n = (0, w.encodePickingColor)(e),
			r = y.getVertexCount(t);
			E({
				target: i,
				source: n,
				start: o,
				count: r
			}),
			o += n.length * r
		}),
		i
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.PolygonParseHelper = void 0;
	var d = n(27),
	h = i(d),
	v = n(0),
	p = i(v),
	_ = n(1),
	m = i(_),
	g = n(298),
	y = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (g),
	x = n(237),
	b = i(x),
	S = n(139),
	w = n(240),
	E = b.
default.fillArray,
	T = [0, 0, 0, 255];
	e.PolygonParseHelper = function() {
		function t(e) {
			var n = e.complexPolygons,
			i = e.IndexType; (0, p.
		default)(this, t),
			n = n.map(function(t) {
				return y.normalize(t)
			});
			var r = o(n);
			this.complexPolygons = n,
			this.pointCount = r,
			this.IndexType = i,
			this.attributes = {
				pickingColors: f({
					complexPolygons: n,
					pointCount: r
				})
			}
		}
		return (0, m.
	default)(t, [{
			key: "updatePositions",
			value: function(t) {
				var e = t.fp64,
				n = t.extruded;
				e = !0;
				var i = this.attributes,
				o = this.complexPolygons,
				r = this.pointCount;
				i.positions = i.positions || new Float32Array(3 * r),
				i.vertexValid = i.vertexValid || new Uint8ClampedArray(r).fill(1),
				e && (i.positions64xyLow = i.positions64xyLow || new Float32Array(2 * r)),
				l({
					cache: i,
					complexPolygons: o,
					extruded: n,
					fp64: e
				})
			}
		},
		{
			key: "getIndices",
			value: function() {
				return s({
					complexPolygons: this.complexPolygons,
					IndexType: this.IndexType
				})
			}
		},
		{
			key: "getPositions",
			value: function() {
				return this.attributes.positions
			}
		},
		{
			key: "getPositions64xyLow",
			value: function() {
				return this.attributes.positions64xyLow
			}
		},
		{
			key: "getVertexValid",
			value: function() {
				return this.attributes.vertexValid
			}
		},
		{
			key: "getElevations",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.key,
				n = void 0 === e ? "elevations": e,
				i = t.getElevation,
				o = void 0 === i ?
				function() {
					return 100
				}: i,
				r = this.attributes,
				a = this.complexPolygons,
				s = this.pointCount,
				l = u({
					cache: r[n],
					complexPolygons: a,
					pointCount: s,
					getElevation: o
				});
				return r[n] = l,
				l
			}
		},
		{
			key: "getColors",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.key,
				n = void 0 === e ? "colors": e,
				i = t.getColor,
				o = void 0 === i ?
				function() {
					return T
				}: i,
				r = this.attributes,
				a = this.complexPolygons,
				s = this.pointCount,
				l = c({
					cache: r[n],
					complexPolygons: a,
					pointCount: s,
					getColor: o
				});
				return r[n] = l,
				l
			}
		},
		{
			key: "getPickingColors",
			value: function() {
				return this.attributes.pickingColors
			}
		}]),
		t
	} ()
},
, , ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		var t = ["position:absolute;", "left:0;", "top:0;", "overflow:hidden;", "z-index:1000;", "width:100%;", "height:100%;"],
		e = document.createElement("div");
		e.style.cssText = t.join("");
		var n = document.createElement("div");
		return n.style.cssText = "left:0;top:0;z-index:101;",
		e.appendChild(n),
		{
			root: e,
			childs: {
				domOverlayLayer: n
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(223),
	a = i(r),
	s = n(140),
	l = i(s),
	u = n(113),
	c = i(u),
	f = n(17),
	d = i(f),
	h = n(16),
	v = i(h),
	p = n(3),
	_ = i(p),
	m = n(0),
	g = i(m),
	y = n(1),
	x = i(y),
	b = n(5),
	S = i(b),
	w = n(4),
	E = i(w),
	T = n(775),
	A = i(T),
	P = n(747),
	I = i(P),
	k = n(735),
	L = i(k),
	M = n(627),
	C = i(M),
	R = n(248),
	B = n(629),
	N = i(B),
	O = n(472),
	D = i(O),
	z = n(474),
	F = i(z),
	V = n(473),
	Y = i(V),
	U = n(294),
	j = n(376),
	G = n(726),
	Z = n(43),
	H = n(399),
	W = i(H),
	X = n(23),
	Q = i(X),
	q = n(105),
	K = i(q),
	J = n(637),
	$ = i(J),
	tt = n(736),
	et = i(tt),
	nt = n(112),
	it = n(29),
	ot = n(41),
	rt = i(ot),
	at = n(137),
	st = n(304),
	lt = n(663),
	ut = i(lt),
	ct = n(486),
	ft = i(ct),
	dt = n(143),
	ht = n(794),
	vt = n(750),
	pt = n(660),
	_t = n(28),
	mt = n(463),
	gt = n(630),
	yt = n(106),
	xt = n(47),
	bt = n(209),
	St = n(74),
	wt = n(10),
	Et = rt.
default.isString,
	Tt = rt.
default.isUndefined,
	At = rt.
default.isBoolean,
	Pt = rt.
default.isNumber,
	It = rt.
default.isObject,
	kt = {
		center: new xt(39.88795, 116.49369),
		zoom: 13,
		minZoom: Q.
	default.minZoom,
		maxZoom: Q.
	default.maxZoom,
		minPitch: Q.
	default.minPitch,
		maxPitch: Q.
	default.maxPitch,
		rotation: 0,
		pitch: 0,
		scale: 1,
		offset: {
			x: 0,
			y: 0
		},
		draggable: !0,
		scrollable: !0,
		pitchable: !0,
		rotatable: !0,
		doubleClickZoom: !0,
		mapZoomType: st.MAP_ZOOM_TYPE.DEFAULT,
		viewMode: at.VIEW_MODE.MAP_3D,
		mapStyleId: "DEFAULT",
		showControl: !0,
		enableExtendZoom: !1
	},
	Lt = _t.isLowMobileDevice() ? 30 : 55,
	Mt = wt.uniqueId(),
	Ct = function(t) {
		function e(t, n) { (0, g.
		default)(this, e);
			var i = (0, S.
		default)(this, (e.__proto__ || (0, _.
		default)(e)).call(this)),
			o = Date.now();
			n = wt.extend({},
			kt, n),
			n.heading = 360 - n.rotation;
			var r = n,
			a = r.minZoom,
			s = r.maxZoom,
			l = r.minPitch,
			u = r.maxPitch;
			if ("number" == typeof a ? n.minZoom = Math.max(a, Q.
		default.minZoom):
			(new it.ClassTypeError("MapOptions的minZoom参数", "Number", a).warn(), n.minZoom = Q.
		default.minZoom), "number" == typeof s) if (n.enableExtendZoom) {
				if (s > Q.
			default.maxZoom) {
					var c = Math.min(s, 25);
					Q.
				default.maxZoom = c,
					n.maxZoom = c
				}
			} else n.maxZoom = Math.min(n.maxZoom, Q.
		default.maxZoom);
			else new it.ClassTypeError("MapOptions的maxZoom参数", "Number", s).warn(),
			n.maxZoom = Q.
		default.maxZoom;
			"number" == typeof l ? n.minPitch = Math.max(l, Q.
		default.minPitch):
			(new it.ClassTypeError("MapOptions的minPitch参数", "Number", l).warn(), n.minPitch = Q.
		default.minPitch),
			"number" == typeof u ? n.maxPitch = Math.min(u, Q.
		default.maxPitch):
			(new it.ClassTypeError("MapOptions的maxPitch参数", "Number", u).warn(), n.maxPitch = Q.
		default.maxPitch),
			i._destroyed = !1,
			i._glContextLost = !1,
			i.drawContainer = Et(t) ? document.getElementById(t) : t,
			i._uniqueId = "map-" + i.drawContainer.id + "_" + wt.uniqueId(),
			i._initContainer();
			var f = n,
			d = f.subkey,
			h = f.subpid; (0, U.checkKey)(i.id, {
				subkey: d,
				subpid: h
			}),
			i.subkey = d,
			i.subpid = h,
			n.map = i;
			var p = new A.
		default(i.canvasContainer, n);
			i.renderEngine = p,
			i.drawManager = new vt(p),
			i.transform = new ht(n, p),
			i.transform._setEventedParent(i, null),
			i.controlManager = new C.
		default(i),
			i.layerResource = new pt(n, i),
			i.indoorManager = new $.
		default({
				map:
				i
			}),
			i.OverseaManager = new et.
		default({
				map:
				i
			}),
			i.fpsManager = new I.
		default,
			i.fpsManager.map = i,
			i.fpsManager.setCallback(i._render.bind(i)),
			i._shouldKeepHighFps = !1,
			i._renderCallbackList = [],
			(0, v.
		default)(i, j.easableMixin),
			(0, v.
		default)(i, G.animatableMap),
			wt.bindAll(["_onData", "_render"], i),
			i._initListeners(),
			i.jumpTo({
				center: n.center,
				zoom: n.zoom,
				heading: n.heading || 0,
				pitch: n.pitch || 0,
				scale: n.scale || 0
			}),
			i.highFpsReferIndex = 0;
			var m = p.getDrawContainer();
			return i.resize(m.clientWidth, m.clientHeight),
			i._update(),
			i.handler = new mt(i, {
				mapZoomType: n.mapZoomType
			}),
			i._bubbleMiddleware = new L.
		default(i, i._checkFeaturePickingType(n)),
			i.setDraggable(n.draggable),
			i.setScrollable(n.scrollable),
			i.setDoubleClickZoom(n.doubleClickZoom),
			i.setViewMode(n.viewMode),
			i.setShowControl(n.showControl),
			i.dragRotate.setRotatable(n.rotatable),
			i.dragRotate.setPitchable(n.pitchable),
			i._initControls(),
			i.enableAreaClip(n.clip),
			(0, Z.minfo)({
				zoom: n.zoom,
				pitch: n.pitch,
				rotation: n.rotation,
				width: i.transform.width,
				height: i.transform.height
			}),
			(0, Z.fps)(i),
			(0, Z.frt)(i, o, _t.isPC() ? "pc": "mobile"),
			(0, Z.ds)(i, _t.isLowMobileDevice(), _t.mobileSystem()),
			i
		}
		return (0, E.
	default)(e, t),
		(0, x.
	default)(e, [{
			key: "_initListeners",
			value: function() {
				var t = this;
				this._on("preload", this._preLoad),
				this._on("data", this._onData),
				this._on("data",
				function(e) {
					"metadata" === e.sourceDataType && t._update()
				}),
				_t.on(this, "layer,transit_end", this._update.bind(this, !1)),
				this._on("move", _t.debounce(function() {
					t._update()
				},
				10)),
				this._on("tilesloaded", _t.debounce(function() {
					t._update()
				},
				250)),
				_t.on(this, "movestart,transit_start",
				function() {
					t._changeFPS(Lt)
				}),
				_t.on(this, "data,moveend,transit_end", _t.debounce(function() {
					t._destroyed || t._shouldKeepHighFps || t._changeFPS(6)
				},
				3e3)),
				_t.on(this, "moveend,data_loaded", _t.debounce(function() {
					t.renderEngine && t.layerResource && t.renderEngine.updateLabel(t.layerResource.getDrawLayers())
				},
				10)),
				this.on("mapstyle_changed",
				function(e) {
					var n = e.styleId;
					t.renderEngine.onMapStyleUpdate(n),
					t.drawManager.resetGradualPlacement(),
					t._update()
				})
			}
		},
		{
			key: "resetRenderEngine",
			value: function() {
				this.renderEngine = new A.
			default(this.canvasContainer, {})
			}
		},
		{
			key: "_changeFPS",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : Lt;
				this.fpsManager.updateFPS(t)
			}
		},
		{
			key: "keepHighFps",
			value: function(t) {
				t ? this.highFpsReferIndex += 1 : this.highFpsReferIndex -= 1,
				this.highFpsReferIndex = Math.max(this.highFpsReferIndex, 0),
				this.highFpsReferIndex <= 0 ? this._shouldKeepHighFps = !1 : (this._changeFPS(Lt), this._shouldKeepHighFps = !0)
			}
		},
		{
			key: "setCenter",
			value: function(t, e) {
				return this.jumpTo({
					center: t
				},
				e)
			}
		},
		{
			key: "getCenter",
			value: function() {
				return this.transform.center
			}
		},
		{
			key: "setZoom",
			value: function(t, e) {
				return this.jumpTo({
					zoom: t
				},
				e),
				this
			}
		},
		{
			key: "getZoom",
			value: function() {
				return this.transform && this.transform.zoom
			}
		},
		{
			key: "setPitch",
			value: function(t, e) {
				return this._viewMode !== at.VIEW_MODE.MAP_2D && this.getPitchable() ? (this.jumpTo({
					pitch: t
				},
				e), this) : this
			}
		},
		{
			key: "setMaxZoom",
			value: function(t, e) {
				var n = this.transform;
				return isNaN(t) || !Pt(t) ? (new it.BaseTypeError("maxZoom", "number", t).error(), this) : n.maxZoom === +t ? this: ( + t < n.minZoom || +t > Q.
			default.maxZoom ? console.error("无法设置maxZoom,请检查maxZoom值是否大于" + Q.
			default.maxZoom + "，或小于当前minZoom。") : (n.zoom > t && this.jumpTo({
					zoom: t
				},
				e), n.maxZoom = +t), this)
			}
		},
		{
			key: "setMinZoom",
			value: function(t, e) {
				var n = this.transform;
				return isNaN(t) || !Pt(t) ? (new it.BaseTypeError("minZoom", "number", t).error(), this) : n.minZoom === +t ? this: ( + t > n.maxZoom || +t < Q.
			default.minZoom ? console.error("无法设置minZoom,请检查minZoom值是否小于" + Q.
			default.minZoom + "，或大于当前maxZoom。") : (n.zoom < t && this.jumpTo({
					zoom: t
				},
				e), n.minZoom = +t), this)
			}
		},
		{
			key: "setMaxPitch",
			value: function(t, e) {
				var n = this.transform;
				return isNaN(t) || !Pt(t) ? (new it.BaseTypeError("maxPitch", "number", t).error(), this) : n.maxPitch === +t ? this: ( + t > n.maxPitch || +t > Q.
			default.maxPitch ? console.error("无法设置maxPitch,请检查maxPitch值是否大于" + Q.
			default.maxPitch + "，或小于当前minPitch。") : (n.pitch > t && this.jumpTo({
					pitch: t
				},
				e), n.maxPitch = +t), this)
			}
		},
		{
			key: "getPitch",
			value: function() {
				return this.transform.pitch
			}
		},
		{
			key: "getRoll",
			value: function() {
				return this.transform.roll
			}
		},
		{
			key: "setRoll",
			value: function(t) {
				this.transform.roll = t
			}
		},
		{
			key: "frequentEaseTo",
			value: function(t) {
				var e = this;
				if (this._once("moveend",
				function() {
					e._easeToStore = null
				}), !this.moving) return this._easeToStore = t,
				void this.easeTo(t); (0, d.
			default)(t).forEach(function(n) {
					e._easeToStore[n] = t[n]
				}),
				this.easeTo(this._easeToStore)
			}
		},
		{
			key: "setPitchable",
			value: function(t) {
				return At(t) ? "2D" === this.getViewMode() || t === this.getPitchable() ? this: (t ? (this.dragRotate.setPitchable(!0), this.touchTilt.enable(), this.controlManager.setViewMode("3D")) : (this.frequentEaseTo({
					pitch: 0
				}), this.dragRotate.setPitchable(!1), this.touchTilt.disable(), this.controlManager.setViewMode("3D")), this) : (new it.BaseTypeError("setPitchable参数", "Boolean", t).error(), this)
			}
		},
		{
			key: "getPitchable",
			value: function() {
				return this.dragRotate.pitchable
			}
		},
		{
			key: "setRotatable",
			value: function(t) {
				return At(t) ? "2D" === this.getViewMode() || t === this.getRotatable() ? this: (t ? (this.dragRotate.setRotatable(!0), this.touchZoomRotate.enableRotation(), this.controlManager.setViewMode("3D")) : (this.frequentEaseTo({
					rotation: 0
				}), this.dragRotate.setRotatable(!1), this.touchZoomRotate.disableRotation(), this.controlManager.setViewMode("3D")), this) : (new it.BaseTypeError("setRotatable参数", "Boolean", t).error(), this)
			}
		},
		{
			key: "getRotatable",
			value: function() {
				return this.dragRotate.rotatable
			}
		},
		{
			key: "setScale",
			value: function(t, e) {
				return Pt(t) ? t <= 0 ? this: (this.jumpTo({
					scale: t
				},
				e), this) : (new it.BaseTypeError("scale", "number", t).error(), this)
			}
		},
		{
			key: "getScale",
			value: function() {
				return this.transform.scale
			}
		},
		{
			key: "setOffset",
			value: function(t) {
				return It(t) && Pt(t.x) && Pt(t.y) ? (this.renderEngine.camera.setOffset(t), this.emit("offset_changed")) : new it.ClassTypeError("Map.offset", "Object:{x,y}", t).error(),
				this
			}
		},
		{
			key: "getOffset",
			value: function() {
				return this.renderEngine.camera.offset
			}
		},
		{
			key: "setRotation",
			value: function(t, e) {
				return this._viewMode !== at.VIEW_MODE.MAP_2D && this.getRotatable() ? (this.jumpTo({
					heading: 360 - t
				},
				e), this) : this
			}
		},
		{
			key: "getRotation",
			value: function() {
				return 360 - this.transform.heading
			}
		},
		{
			key: "getHeading",
			value: function() {
				return this.transform.heading
			}
		},
		{
			key: "getContainer",
			value: function() {
				return this.drawContainer
			}
		},
		{
			key: "getBounds",
			value: function() {
				return this.transform && this.transform.getBounds()
			}
		},
		{
			key: "getRenderContainer",
			value: function() {
				return this.renderEngine.getDrawContainer()
			}
		},
		{
			key: "setDraggable",
			value: function(t) {
				var e = t ? "enable": "disable";
				return this.dragPan[e](),
				this.dragRotate[e](),
				this.longPress[e](),
				this.draggable = !!t,
				this
			}
		},
		{
			key: "getDraggable",
			value: function() {
				return this.draggable
			}
		},
		{
			key: "setScrollable",
			value: function(t) {
				var e = t ? "enable": "disable";
				return this.scrollZoom[e](),
				this
			}
		},
		{
			key: "getScrollable",
			value: function() {
				return this.scrollZoom.isEnabled()
			}
		},
		{
			key: "setDoubleClickZoom",
			value: function(t) {
				var e = t ? "enable": "disable";
				return this.doubleClickZoom[e](),
				this
			}
		},
		{
			key: "getDoubleClickZoom",
			value: function() {
				return this.doubleClickZoom.isEnabled()
			}
		},
		{
			key: "setBoundary",
			value: function(t) {
				return this.transform.boundary = t,
				this._update(),
				this
			}
		},
		{
			key: "getBoundary",
			value: function() {
				return this.transform.boundary
			}
		},
		{
			key: "getIndoorManager",
			value: function() {
				return this.indoorManager
			}
		},
		{
			key: "getLightManager",
			value: function() {
				return this.renderEngine.lightManager
			}
		},
		{
			key: "setViewMode",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : at.VIEW_MODE.MAP_3D,
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				if (t = String(t).toUpperCase(), this._viewMode === t) return this;
				switch (t) {
				case at.VIEW_MODE.MAP_2D:
					this.easeTo({
						pitch:
						0,
						heading: 0,
						roll: 0
					},
					e),
					this.dragRotate.disable(),
					this.touchZoomRotate.disableRotation(),
					this.touchTilt.disable();
					break;
				default:
					if (new it.EnumError("viewMode", [at.VIEW_MODE.MAP_2D, at.VIEW_MODE.MAP_3D, at.VIEW_MODE.SPHERE], t).error(), !Tt(this.getViewMode())) return this;
					t = at.VIEW_MODE.MAP_3D;
				case at.VIEW_MODE.SPHERE:
				case at.VIEW_MODE.MAP_3D:
					this.draggable && (this.dragRotate.enable(), this.touchZoomRotate.enableRotation(), this.touchTilt.enable())
				}
				return this.controlManager.setViewMode(t),
				this.transform.transitTo(t, e),
				this._viewMode = t,
				this
			}
		},
		{
			key: "getViewMode",
			value: function() {
				return this._viewMode
			}
		},
		{
			key: "getBaseMap",
			value: function() {
				return this.layerResource.baseMap
			}
		},
		{
			key: "setBaseMap",
			value: function(t) {
				this.layerResource.baseMap = t;
				var e = this.getControl(Mt);
				return e && e.updateMapAppNum(this.layerResource.hasSatellite()),
				this
			}
		},
		{
			key: "setMapStyleId",
			value: function(t) {
				return t && Et(t) ? this.layerResource.setMapStyleId(t) : console.error("传入的mapStyleId有误：" + t),
				this
			}
		},
		{
			key: "setMapStyleConfig",
			value: function(t) {
				return It(t) ? "{}" === (0, c.
			default)(t) ? (console.error("setMapStyleConfig传入的参数为空对象"), this) : (this.layerResource.setMapStyleConfig(t), this) : (new it.BaseTypeError("StyleConfig", "object", t).error(), this)
			}
		},
		{
			key: "getShowControl",
			value: function() {
				return this._showControl
			}
		},
		{
			key: "setShowControl",
			value: function(t) {
				this._showControl = t
			}
		},
		{
			key: "getControl",
			value: function(t) {
				return this.controlManager.getControl(t)
			}
		},
		{
			key: "removeControl",
			value: function(t) {
				return this.controlManager.removeControl(t),
				this
			}
		},
		{
			key: "addControl",
			value: function(t) {
				return this.controlManager.addControl(t),
				this
			}
		},
		{
			key: "panTo",
			value: function(t, e, n) {
				return this.easeTo({
					center: t
				},
				e, n)
			}
		},
		{
			key: "panBy",
			value: function(t, e, n) {
				return t = St.convert(t).mult( - 1),
				this.panTo(this.transform.center, wt.extend({
					offset: t
				},
				e), n)
			}
		},
		{
			key: "flyTo",
			value: function() {}
		},
		{
			key: "zoomBy",
			value: function(t, e, n) {
				var i = this.getZoom() + t,
				o = this.transform;
				i = Math.max(Math.min(i, o.maxZoom), o.minZoom),
				this.zoomTo(i, e, n)
			}
		},
		{
			key: "zoomTo",
			value: function(t, e, n) {
				return this.easeTo({
					zoom: t
				},
				e, n)
			}
		},
		{
			key: "rotateTo",
			value: function(t, e, n) {
				return this.easeTo({
					rotation: t
				},
				e, n)
			}
		},
		{
			key: "headTo",
			value: function(t, e, n) {
				return this.easeTo({
					heading: t
				},
				e, n)
			}
		},
		{
			key: "pitchTo",
			value: function(t, e) {
				return this.easeTo({
					pitch: t
				},
				e)
			}
		},
		{
			key: "naviTo",
			value: function(t, e, n, i) {
				return this.easeTo({
					heading: e,
					center: t
				},
				wt.extend({
					isMatrix: !1
				},
				n), i)
			}
		},
		{
			key: "jumpTo",
			value: function(t, e) {
				this.stopMoving();
				var n = this.transform,
				i = !1,
				o = !1,
				r = !1,
				a = !1,
				s = !1;
				return "zoom" in t && n.zoom !== +t.zoom && ((0, l.
			default)( + t.zoom) ? new it.BaseTypeError("zoom", "number", t.zoom).error() : (i = !0, n.zoom = +t.zoom)),
				"center" in t && (n.center = xt.convert(t.center), a = !0),
				"heading" in t && n.heading !== +t.heading && (o = !0, n.heading = +t.heading),
				"pitch" in t && n.pitch !== +t.pitch && (r = !0, n.pitch = +t.pitch),
				"roll" in t && n.roll !== +t.roll && (s = !0, n.roll = +t.roll),
				"scale" in t && n.scale !== t.scale && (n.scale = t.scale),
				this._fire("movestart", e)._fire("move", e),
				i && this._fire("zoomstart", e)._fire("zoom", e)._fire("zoomend", e),
				o && this._fire("rotate", e),
				r && this._fire("pitchstart", e)._fire("pitch", e)._fire("pitchend", e),
				s && this._fire("rollstart", e)._fire("roll", e)._fire("rollend", e),
				a && this._fire("panstart", e)._fire("pan", e)._fire("panend", e),
				this._fire("moveend", e)
			}
		},
		{
			key: "easeTo",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				i = arguments[2];
				this.stopMoving(),
				n = wt.extend({
					offset: [0, 0],
					duration: 500,
					easing: wt.ease
				},
				n),
				!1 === n.animate && (n.duration = 0);
				var o = this.transform,
				r = this.getZoom(),
				a = this.getHeading(),
				s = this.getPitch(),
				l = this.getRoll(),
				u = this.getCenter(),
				c = r,
				f = a,
				d = s,
				h = l;
				Pt(t.zoom) ? c = t.zoom: Tt(t.zoom) || new it.BaseTypeError("mapStatus.zoom", "number", t.zoom).error(),
				Pt(t.rotation) ? f = this._normalizeHeading(360 - t.rotation, a) : Tt(t.rotation) || new it.BaseTypeError("mapStatus.rotation", "number", t.rotation).error(),
				Pt(t.heading) && (f = this._normalizeHeading(t.heading, a)),
				Pt(t.pitch) ? d = t.pitch: Tt(t.pitch) || new it.BaseTypeError("mapStatus.pitch", "number", t.pitch).error(),
				Pt(t.roll) ? h = t.roll: Tt(t.roll) || new it.BaseTypeError("mapStatus.roll", "number", t.roll).error();
				var v = null,
				p = null;
				n.around && (v = n.around, p = this.projectToContainer(v));
				var _ = this.projectToContainer(u),
				m = St.convert(n.offset),
				g = xt.convert(t.center || u);
				this._normalizeCenter(g);
				var y = o.latLngToCoord(u),
				x = o.latLngToCoord(g),
				b = x.sub(y),
				S = o.zoomScale(c - r);
				return this.zooming = c !== r && c <= o.maxZoom && c >= o.minZoom,
				this.rotating = a !== f,
				this.pitching = d !== s,
				this.panning = 0 !== b.add(m).length(),
				this.rolling = l !== h,
				this._viewMode === at.VIEW_MODE.MAP_2D && (this.rotating = !1, this.pitching = !1, this.rolling = !1),
				this.zooming + this.rotating + this.pitching + this.rolling + this.panning ? (this._prepareMoving(i, n.noMoveStart), clearTimeout(this._onEaseEnd), this._ease(function(t) {
					if (this.zooming && (o.zoom = (0, W.
				default)(r, c, t)), this.rotating && (o.heading = (0, W.
				default)(a, f, t)), this.pitching && (o.pitch = (0, W.
				default)(s, d, t)), this.rolling && (o.roll = (0, W.
				default)(l, h, t)), n.around) o.setLocationAtPoint(v, p);
					else {
						var e = o.zoomScale(o.zoom - r),
						u = c > r ? Math.min(2, S) : Math.max(.5, S),
						g = Math.pow(u, 1 - t),
						x = b.mult(t * g),
						w = _.add(m.mult(t * g)),
						E = o.coordToLatLng(y.add(x).mult(e), o.zoom);
						o.setLocationAtPoint(E, w)
					}
					this._fireMoveEvents(i)
				},
				function() {
					n.delayEndEvents ? e._onEaseEnd = setTimeout(function() {
						return e._moveToEnd(i)
					},
					n.delayEndEvents) : e._moveToEnd(i)
				},
				function() {
					e._moveToEnd(i, !0)
				},
				n), this) : this
			}
		},
		{
			key: "getNonStopRotate",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
				n = arguments[1];
				if (!this.rotateTickTimer) {
					this.rotating = !0;
					var i = this.transform;
					this.rotateTickTimer = function(o) {
						t.isRotateAnimationRunning && ( - 1 === o ? i.heading -= .8 * e: i.heading += .8 * e, _t.frame(t.rotateTickTimer.bind(t, o)), t._fireMoveEvents(n))
					}
				}
				return {
					begin: function(e) {
						t._prepareMoving(n),
						t.rotating = !0,
						t.isRotateAnimationRunning = !0,
						t.rotateTickTimer(e)
					},
					cancel: function() {
						t.isRotateAnimationRunning && (t._moveToEnd(n), t.isRotateAnimationRunning = !1)
					}
				}
			}
		},
		{
			key: "getNonStopPitch",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
				n = arguments[1];
				if (!this.pitchTickTimer) {
					this.pitching = !0;
					var i = this.transform;
					this.pitchTickTimer = function(o) {
						t.isPitchAnimationRunning && ( - 1 === o ? i.pitch -= .8 * e: i.pitch += .8 * e, _t.frame(t.pitchTickTimer.bind(t, o)), t._fireMoveEvents(n))
					}
				}
				return {
					begin: function(e) {
						t._prepareMoving(n),
						t.isPitchAnimationRunning = !0,
						t.pitching = !0,
						t.pitchTickTimer(e)
					},
					cancel: function() {
						t.isPitchAnimationRunning && (t.pitching = !1, t._moveToEnd(n), t.isPitchAnimationRunning = !1)
					}
				}
			}
		},
		{
			key: "_prepareMoving",
			value: function(t, e) {
				this.moving = !0,
				e || (this._fire("movestart", t), this.zooming && this._fire("zoomstart", t), this.rotating && this._fire("rotatestart", t), this.pitching && this._fire("pitchstart", t), this.panning && this._fire("panstart", t))
			}
		},
		{
			key: "_fireMoveEvents",
			value: function(t) {
				this._fire("move", t),
				this.zooming && this._fire("zoom", t),
				this.rotating && this._fire("rotate", t),
				this.pitching && this._fire("pitch", t),
				this.panning && this._fire("pan", t)
			}
		},
		{
			key: "_moveToEnd",
			value: function(t, e) {
				var n = this.zooming,
				i = this.rotating,
				o = this.pitching,
				r = this.panning;
				this.moving = !1,
				this.zooming = !1,
				this.rotating = !1,
				this.pitching = !1,
				this.panning = !1,
				n && this._fire(e ? "zoomcancel": "zoomend", t),
				i && this._fire(e ? "rotatecancel": "rotateend", t),
				o && this._fire(e ? "pitchcancel": "pitchend", t),
				r && this._fire(e ? "pancancel": "panend", t),
				this._fire(e ? "movecancel": "moveend", t)
			}
		},
		{
			key: "resetNorth",
			value: function(t, e) {
				return this.rotateTo(0, wt.extend({
					duration: 1e3
				},
				t), e),
				this
			}
		},
		{
			key: "snapToNorth",
			value: function(t, e) {
				return Math.abs(this.getHeading()) < 7 ? this.resetNorth(t, e) : this
			}
		},
		{
			key: "fitBounds",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				if (! (t && t instanceof bt)) return new it.ClassTypeError("Map.fitBounds的bounds参数", "LatLngBounds", t).error(),
				this;
				var n = e.minZoom,
				i = void 0 === n ? this.transform.minZoom: n,
				o = e.maxZoom,
				r = void 0 === o ? this.transform.maxZoom: o,
				a = e.animate,
				s = void 0 === a || a,
				l = e.ease,
				u = void 0;
				if (Pt(e.padding)) {
					var c = e.padding;
					u = {
						top: c,
						bottom: c,
						right: c,
						left: c
					}
				} else u = (0, v.
			default)({
					top:
					0,
					bottom: 0,
					right: 0,
					left: 0
				},
				e.padding);
				if (!wt.deepEqual((0, d.
			default)(u).sort(function(t, e) {
					return t < e ? -1 : t > e ? 1 : 0
				}), ["bottom", "left", "right", "top"])) return void wt.warnOnce("FitBoundsOptions.padding must be a positive number, or an Object with keys 'bottom', 'left', 'right', 'top'");
				t = bt.convert(t);
				var f = u,
				h = f.top,
				p = f.bottom,
				_ = f.left,
				m = f.right,
				g = [(_ - m) / 2, (h - p) / 2],
				y = St.convert(g),
				x = this.transform,
				b = x.latLngToCoord(t.getNorthWest()),
				S = x.latLngToCoord(t.getSouthEast()),
				w = x._minZoom,
				E = x.coordToLatLng(b.add(S).div(2));
				if (0 === x.pitch) {
					var T = S.sub(b),
					A = (x.width - m - _) / T.x,
					P = (x.height - h - p) / T.y;
					if (P < 0 || A < 0) return wt.warnOnce("传入参数无效导致map无法进行fitBounds操作"),
					this;
					w = x.scaleZoom(x.scrollScale * Math.min(A, P))
				} else w = this._getZoomByBounds(t, {
					padding: u
				});
				w = Math.max(Math.min(w, r), i);
				var I = {
					center: E,
					zoom: w,
					heading: 0
				};
				return s ? this.easeTo(I, (0, v.
			default)({
					offset:
					y
				},
				l)) : this.jumpTo(I),
				this
			}
		},
		{
			key: "_getZoomByBounds",
			value: function(t, e) {
				var n = e.padding,
				i = n.top,
				o = n.bottom,
				r = n.left,
				a = n.right,
				s = [(r - a) / 2, (i - o) / 2],
				l = St.convert(s),
				u = this.transform,
				c = u._minZoom,
				f = u._maxZoom,
				d = u._minPitch,
				h = u._maxPitch,
				v = u._fov,
				p = u.width,
				_ = u.height,
				m = u.zoom,
				g = u.tileZoom,
				y = u._center,
				x = u._pitch,
				b = u._roll,
				S = u._scale,
				w = u.viewTransition,
				E = u._boundary,
				T = {
					minZoom: c,
					maxZoom: f,
					minPitch: d,
					maxPitch: h,
					fov: v,
					width: p,
					height: _,
					zoom: m,
					tileZoom: g,
					center: y,
					pitch: x,
					roll: b,
					scale: S,
					viewTransition: w,
					boundary: E,
					heading: 0
				},
				A = x / Math.PI * 180,
				P = b / Math.PI * 180;
				this.renderEngine.camera.setRotate(A, 0, P);
				var I = new ht(T, this.renderEngine),
				k = c,
				L = c,
				M = f,
				C = !1,
				R = this._getCenterByBounds(t),
				B = {
					x: p / 2,
					y: _ / 2
				};
				for (B.x = B.x + l.x, B.y = B.y + l.y; M - L > .001;) {
					k = (L + M) / 2,
					I.zoom = k,
					I.setLocationAtPoint(R, B);
					var N = I.latLngToScreen(t.getNorthWest()),
					O = I.latLngToScreen(t.getSouthEast()),
					D = I.latLngToScreen(t.getSouthWest()),
					z = I.latLngToScreen(t.getNorthEast()),
					F = Math.min.apply(null, [N.x, O.x, D.x, z.x]),
					V = Math.max.apply(null, [N.x, O.x, D.x, z.x]),
					Y = Math.min.apply(null, [N.y, O.y, D.y, z.y]),
					U = Math.max.apply(null, [N.y, O.y, D.y, z.y]);
					F > r && Y > i && V < p - a && U < _ - o ? (C = !0, L = k) : (M = k, C = !1)
				}
				return C || (k = L),
				k
			}
		},
		{
			key: "_getCenterByBounds",
			value: function(t) {
				var e = this.transform,
				n = e.latLngToCoord(t.getNorthWest()),
				i = e.latLngToCoord(t.getSouthEast());
				return e.coordToLatLng(n.add(i).div(2))
			}
		},
		{
			key: "getZoomByBounds",
			value: function(t) {
				var e = this.transform,
				n = e.latLngToCoord(t.getNorthWest()),
				i = e.latLngToCoord(t.getSouthEast()),
				o = i.sub(n),
				r = e.width / o.x,
				a = e.height / o.y;
				return a < 0 || r < 0 ? void wt.warnOnce("bounds error!") : Math.min(e.scaleZoom(e.scrollScale * Math.min(r, a)), e.maxZoom)
			}
		},
		{
			key: "stopMoving",
			value: function() {
				return this.stopEase(),
				this.stopAnimation(),
				this
			}
		},
		{
			key: "stopEase",
			value: function() {
				return this._abortFn && (this._abortFn(), this._finishEase()),
				this
			}
		},
		{
			key: "getSource",
			value: function(t) {
				return this.layerResource.getSource(t)
			}
		},
		{
			key: "addSource",
			value: function(t, e) {
				this.layerResource.addSource(t, e)
			}
		},
		{
			key: "removeSource",
			value: function(t) {
				this.layerResource.removeSource(t)
			}
		},
		{
			key: "addLayer",
			value: function(t) {
				this.layerResource.addLayer(t)
			}
		},
		{
			key: "removeLayer",
			value: function(t) {
				this.layerResource.removeLayer(t)
			}
		},
		{
			key: "moveLayer",
			value: function(t, e) {
				return this.layerResource.moveLayer(t, e),
				this
			}
		},
		{
			key: "getLayer",
			value: function(t) {
				return this.layerResource.getLayer(t)
			}
		},
		{
			key: "findLayer",
			value: function(t) {
				return this.layerResource.findLayer(t)
			}
		},
		{
			key: "addVisualPlugin",
			value: function(t) {
				this.layerResource.addVisualPlugin(t),
				this._update()
			}
		},
		{
			key: "removeVisualPlugin",
			value: function(t) {
				this.layerResource.removeVisualPlugin(t),
				this._update()
			}
		},
		{
			key: "indoorStateChange",
			value: function(t, e) {
				this.layerResource.updateIndoorData(t, e)
			}
		},
		{
			key: "unprojectFromContainer",
			value: function(t) {
				return t instanceof St ? this.transform.screenToLatLng(t) : t && t.x && t.y ? this.transform.screenToLatLng(new St(t.x, t.y)) : (new it.ClassTypeError("Map.unprojectFromContainer的point参数", "Point", t).error(), null)
			}
		},
		{
			key: "projectToContainer",
			value: function(t) {
				if (t instanceof xt) {
					var e = this.transform.latLngToScreen(t);
					return new St(e.x, e.y)
				}
				return new it.ClassTypeError("Map.projectToContainer的latLng参数", "LatLng", t).error(),
				null
			}
		},
		{
			key: "projectToCenterLocalPlane",
			value: function(t) {
				if (t instanceof xt) {
					return this.transform.latLngToCenterLocalPixel(t)
				}
				return new it.ClassTypeError("Map.projectToCenterLocalPlane的latLng参数", "LatLng", t).error(),
				null
			}
		},
		{
			key: "projectToWorldPlane",
			value: function(t, e) {
				if (t instanceof xt) {
					return this.transform.latLngToCoord(t, e)
				}
				return new it.ClassTypeError("Map.projectToWorldPlane的latLng参数", "LatLng", t).error(),
				null
			}
		},
		{
			key: "_getSpatialResolution",
			value: function(t, e) {
				t = t || this.getZoom();
				var n = (e || this.getCenter().getLat()) * Math.PI / 180;
				return (0, nt.getSpatialResolution)(t) * Math.cos(n) / this.getScale()
			}
		},
		{
			key: "_onData",
			value: function() {
				this.drawManager.updatePlace(),
				this._rerender()
			}
		},
		{
			key: "_preLoad",
			value: function() {
				this.layerResource._sources.vector_source.preload(this.transform)
			}
		},
		{
			key: "_normalizeHeading",
			value: function(t, e) {
				t = wt.wrap(t, -180, 180);
				var n = Math.abs(t - e);
				return Math.abs(t - 360 - e) < n && (t -= 360),
				Math.abs(t + 360 - e) < n && (t += 360),
				t
			}
		},
		{
			key: "_normalizeCenter",
			value: function(t) {
				var e = this.transform,
				n = t.lng - e.center.lng;
				t.lng += n > 180 ? -360 : n < -180 ? 360 : 0
			}
		},
		{
			key: "_rerender",
			value: function() {
				this._changeFPS(Lt),
				this.fpsManager.start()
			}
		},
		{
			key: "_render",
			value: function() {
				var t = this.getRenderContainer();
				this.resize(t.clientWidth, t.clientHeight);
				var e = this.drawManager.render(this.layerResource, this.transform);
				this._bubbleMiddleware && this._bubbleMiddleware.runPick(),
				e && this._rerender(),
				this._renderCallbackList.forEach(function(t) {
					return t && t()
				})
			}
		},
		{
			key: "addRenderCallback",
			value: function(t) {
				this._renderCallbackList.push(t)
			}
		},
		{
			key: "removeRenderCallback",
			value: function(t) {
				var e = this._renderCallbackList.indexOf(t);
				this._renderCallbackList.splice(e, 1)
			}
		},
		{
			key: "resize",
			value: function(t, e) {
				t && e && (t === this.width && e === this.height || (this.width = t, this.height = e, this.transform.resize(t, e), this.drawManager.resize(t, e), this._update(), this._frameId = null, this._fire("resize", {
					width: t,
					height: e
				},
				!0)))
			}
		},
		{
			key: "_update",
			value: function() {
				this._destroyed || this._glContextLost || (this.layerResource._updateSource(this.transform, this.renderEngine.camera, {
					causedBy: "move"
				}), this.drawManager.updatePlace(), this._rerender())
			}
		},
		{
			key: "_initContainer",
			value: function() {
				this.drawContainer.style.webkitTapHighlightColor = "rgba(0,0,0,0)",
				"static" === getComputedStyle(this.drawContainer).getPropertyValue("position") && (this.drawContainer.style.position = "relative");
				var t = document.createElement("canvas");
				t.style.cssText = "width:100%; height: 100%;";
				var e = o();
				this.drawContainer.appendChild(t),
				this.drawContainer.appendChild(e.root),
				this.canvasContainer = t,
				this._overlayer = e
			}
		},
		{
			key: "_initControls",
			value: function() {
				var t = this;
				if ((0, U.checkKey)(this.id).then(function(e) {
					void 0 !== e || K.
				default.isLocal || t.addControl(new N.
				default({
						position:
						R.CONTROL_POSITION.BOTTOM_CENTER
					}))
				}), this.addControl(new gt({
					id: Mt,
					position: R.CONTROL_POSITION.BOTTOM_LEFT,
					hasSatellite: this.layerResource.hasSatellite()
				})), this.lgId = Mt, !1 === this._showControl) return this;
				this.addControl(new D.
			default({
					id:
					R.DEFAULT_CONTROL_ID.SCALE,
					position: R.CONTROL_POSITION.BOTTOM_LEFT,
					center: this.getCenter(),
					zoom: this.getZoom(),
					scale: this.getScale()
				})),
				this.addControl(new F.
			default({
					id:
					R.DEFAULT_CONTROL_ID.ZOOM,
					position: R.CONTROL_POSITION.TOP_RIGHT
				})),
				this.addControl(new Y.
			default({
					id:
					R.DEFAULT_CONTROL_ID.ROTATION,
					position: R.CONTROL_POSITION.TOP_RIGHT
				}))
			}
		},
		{
			key: "_onContextError",
			value: function(t) {
				"restored" === t ? (this._rerender(), this._glContextLost = !1, (0, Z.err)({
					type: "ctx",
					code: 1
				}), this._fire("context_restored")) : (this.stop(), this._glContextLost = !0, (0, Z.err)({
					type: "ctx",
					code: 0
				}), this._fire("context_lost"))
			}
		},
		{
			key: "enableAreaHighlight",
			value: function(t) {
				var e = t.layerId || "$tmap_highlight",
				n = this.getLayer(e);
				if (n || (n = new ut.
			default({
					id:
					e,
					map: this,
					geometries: []
				})), t) {
					var i = t.paths,
					o = void 0 === i ? [] : i,
					r = t.highlightColor,
					a = t.shadeColor;
					n.update([{
						id: "highlight",
						paths: o
					}], {
						highlightColor: r,
						shadeColor: a
					})
				}
				return n.setVisible(!0),
				this
			}
		},
		{
			key: "disableAreaHighlight",
			value: function(t) {
				var e = t && t.layerId || "$tmap_highlight",
				n = this.getLayer(e);
				return n ? (n.setVisible(!1), this) : this
			}
		},
		{
			key: "enableAreaClip",
			value: function(t) {
				if (t && t.paths && this._checkMaskPaths(t.paths)) {
					t.layerId = "$tmap_clip_highlight",
					t.shadeColor = this.renderEngine.getBgColor(),
					this.enableAreaHighlight(t),
					this.moveLayer("$tmap_clip_highlight", dt.LAYER_LEVEL.OVERLAY_AA);
					var e = this.getLayer("$tmap_clip_clip");
					e || (e = new ft.
				default({
						map:
						this,
						id: "$tmap_clip_clip",
						geometries: [],
						isMaskReverse: !0
					})),
					e.add([{
						id: "$tmap_clip_clip",
						paths: t.paths
					}]),
					this.clipOptions = t,
					this.on("bgcolor_change", this._updateClipBgColor)
				}
			}
		},
		{
			key: "disableAreaClip",
			value: function() {
				this.disableAreaHighlight({
					layerId: "$tmap_clip_highlight"
				}),
				this.removeLayer("$tmap_clip_clip"),
				this.removeSource("$tmap_clip_clip"),
				this.off("bgcolor_change", this._updateClipBgColor)
			}
		},
		{
			key: "_updateClipBgColor",
			value: function(t) {
				this.enableAreaHighlight((0, a.
			default)({},
				this.clipOptions, {
					shadeColor: t
				})),
				this.moveLayer("$tmap_clip_highlight", dt.LAYER_LEVEL.OVERLAY_AA)
			}
		},
		{
			key: "_checkMaskPaths",
			value: function(t) {
				if (!Array.isArray(t)) return ! 1;
				var e = !0;
				return t.forEach(function(t, n) {
					rt.
				default.isValidLatLng(t) || (e = !1, console.error("areaClip.paths: 希望传入Geometry数组，实际第" + n + "元素非latlng格式！"))
				}),
				e
			}
		},
		{
			key: "_checkFeaturePickingType",
			value: function(t) {
				var e = t.enableFeaturePicking,
				n = t.featurePickingRadius,
				i = e,
				o = n;
				return e ? (isNaN(n) || !Pt(n) ? (new it.BaseTypeError("featurePickingRadius", "number", n).error(), o = null) : n <= 0 && (o = null), At(e) || (new it.BaseTypeError("enableFeaturePicking", "Boolean", e).error(), i = !1), {
					featurePicking: i,
					pickingRadius: o
				}) : {}
			}
		},
		{
			key: "stop",
			value: function() {
				this.fpsManager.stop()
			}
		},
		{
			key: "destroy",
			value: function() {
				this._destroyed || (this.emit("destroy"), this.stopMoving(), (0, U.revokeKeyCheck)(this.id), this.controlManager.destroy(), this.handler.destroy(), this.fpsManager.destroy(), this.layerResource.destroy(), this._bubbleMiddleware.destroy(), this.renderEngine.destroy(), this.drawManager.destroy(), this.indoorManager = null, this.fpsManager = null, this.handler = null, this.layerResource = null, this._bubbleMiddleware = null, this.renderEngine = null, this.drawManager = null, this.transform = null, this._clearAllListeners(), this.drawContainer.innerHTML = "", this.canvasContainer.width = 1, this.canvasContainer.height = 1, this.canvasContainer = null, this._overlayer = null, this.drawContainer = null, this.isPitchAnimationRunning = null, this.isRotateAnimationRunning = null, this.pitchTickTimer = null, this.rotateTickTimer = null, this._destroyed = !0)
			}
		},
		{
			key: "_getPoiInfo",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = this.drawManager.getPoi(t);
				if (e) {
					e.latLng = this.unprojectFromContainer(e.coord);
					var n = Math.round(this.getZoom()) >= Q.
				default.minShowIndoorZoom && this.indoorManager.getVisible() && this.indoorManager.getIndoorBuildingList().length;
					if (!e.isIndoor && n) for (var i = this.indoorManager.getIndoorBuildingList(), o = 0; o < i.length; o++) {
						var r = i[o],
						a = r.getBuildingInfo();
						if (a && a.bounds.contains(e.latLng)) {
							e = null;
							break
						}
					}
				}
				return e
			}
		},
		{
			key: "id",
			get: function() {
				return this._uniqueId
			}
		}]),
		e
	} (yt);
	e.
default = Ct
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		if ((0, T.isSimple)(t)) {
			for (var e = [], n = t.length, i = 0; i < n; i++) {
				var r = void 0;
				if (i < n - 1) r = [t[i], t[i + 1]];
				else {
					if (t[i].equals(t[0])) continue;
					r = [t[i], t[0]]
				}
				e.push(r)
			}
			return e
		}
		return t.map(function(t) {
			return o(t)
		}).flat()
	}
	var r = n(16),
	a = i(r),
	s = n(17),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(35),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(303),
	S = i(b),
	w = n(220),
	E = n(66),
	T = n(298),
	A = n(339),
	P = i(A),
	I = n(506),
	k = i(I),
	L = n(29),
	M = n(41),
	C = i(M),
	R = n(10),
	B = i(R),
	N = n(218),
	O = N.PolygonStyle,
	D = n(218),
	z = D.ExtrudablePolygonStyle,
	F = C.
default.isValidColor,
	V = C.
default.isNumber,
	Y = function(t) {
		function e(t) { (0, d.
		default)(this, e);
			var n = (0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t));
			return n._createSubOverlay(t),
			n
		}
		return (0, x.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "_initialize",
			value: function() {
				this._childGeometryOverlays = []
			}
		},
		{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = w.GEOMETRY_TYPES.POLYGON,
				this._layerType = E.RENDER_LAYER_TYPE.polygon,
				this._className = "MultiPolygon"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.styleId || (t.styleId = "default") : console.error("MultiPolygon.geometries: 希望传入PolygonGeometry数组，实际第" + e + "元素不存在！"),
					t.paths && ((0, T.isSimple)(t.paths) || (0, T.isPart)(t.paths) || (0, T.isComplex)(t.paths)) || console.error("MultiPolygon.geometries: 希望传入PolygonGeometry数组，实际第" + e + "元素的paths属性无效！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new O
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, l.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && (n instanceof O || n instanceof z) ? n instanceof O ? F(n.color) ? F(n.borderColor) || console.error("MultiPolygon.styles: 样式id ", e, " 对应的PolygonStyle.borderColor属性无效", n) : console.error("MultiPolygon.styles: 样式id ", e, " 对应的PolygonStyle.color属性无效", n) : n instanceof z && (F(n.color) ? F(n.borderColor) ? V(n.extrudeHeight) || console.error("MultiPolygon.styles: 样式id ", e, " 对应的ExtrudablePolygonStyle.extrudeHeight属性无效", n) : console.error("MultiPolygon.styles: 样式id ", e, " 对应的ExtrudablePolygonStyle.borderColor属性无效", n) : console.error("MultiPolygon.styles: 样式id ", e, " 对应的ExtrudablePolygonStyle.color属性无效", n)) : console.error("MultiPolygon.styles: 样式id ", e, "希望传入PolygonStyle或ExtrudablePolygonStyle实例，实际传入：", n)
				})
			}
		},
		{
			key: "_createSubOverlay",
			value: function(t) {
				var e = this._extractSubStyles(),
				n = this._extractSubGeometries(),
				i = new k.
			default((0, a.
			default)(t, {
					id: this.id + "_border",
					styles: e,
					geometries: n
				}));
				this._childGeometryOverlays.push(i)
			}
		},
		{
			key: "_extractSubGeometries",
			value: function() {
				var t = this;
				return this.geometries.reduce(function(e, n) {
					var i = t.styles[n.styleId] || t.styles.
				default;
					if (i && i.showBorder && i instanceof O) {
						var o = (0, T.getBorderPolyline)(n.paths);
						e.push({
							styleId: n.styleId,
							paths: o,
							rank: n.rank
						})
					}
					return e
				},
				[])
			}
		},
		{
			key: "_extractSubStyles",
			value: function() {
				var t = {};
				return B.
			default.forIn(this.styles,
				function(e, n) {
					n && n.showBorder && n instanceof O && (t[e] = new P.
				default({
						id:
						e,
						color: n.borderColor,
						width: n.borderWidth,
						lineCap: "round",
						dashArray: n.borderDashArray
					}))
				}),
				t
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				return t = Boolean(t),
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setVisible", this).call(this, t),
				this._childGeometryOverlays.forEach(function(e) {
					e.setVisible(t)
				}),
				this
			}
		},
		{
			key: "setMap",
			value: function(t) {
				return (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setMap", this).call(this, t),
				this._childGeometryOverlays.forEach(function(e) {
					return e.setMap(t)
				}),
				this
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return V(t) ? t < 0 ? (console.error("zIndex希望设置为非负数,实际值为: " + t), this) : ((0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setZIndex", this).call(this, t), this._childGeometryOverlays.forEach(function(e) {
					return e.setZIndex(t)
				}), this) : (new L.BaseTypeError("zIndex", "Number", t).error(), this)
			}
		},
		{
			key: "updateGeometries",
			value: function(t, n) {
				return t ? ((0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "updateGeometries", this).call(this, t, n), this._updateSubGeometries(), this) : this
			}
		},
		{
			key: "_updateSubGeometries",
			value: function() {
				var t = this._extractSubGeometries();
				this._childGeometryOverlays.forEach(function(e) {
					return e.setGeometries(t)
				})
			}
		},
		{
			key: "_updateSubStyles",
			value: function() {
				var t = this._extractSubStyles();
				this._childGeometryOverlays.forEach(function(e) {
					return e.setStyles(t)
				}),
				this._updateSubGeometries()
			}
		},
		{
			key: "setGeometries",
			value: function(t) {
				return t ? ((0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setGeometries", this).call(this, t), this._updateSubGeometries(), this) : this
			}
		},
		{
			key: "setStyles",
			value: function(t) {
				return t ? ((0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setStyles", this).call(this, t), this._updateSubStyles(), this) : this
			}
		},
		{
			key: "destroy",
			value: function() {
				this._childGeometryOverlays.forEach(function(t) {
					return t.destroy()
				}),
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "destroy", this).call(this)
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return this.geometries.map(function(t) {
					return t.paths.flat(1 / 0)
				}).flat()
			}
		},
		{
			key: "_getAllSegments",
			value: function() {
				return this.geometries.map(function(t) {
					return o(t.paths)
				}).flat()
			}
		}]),
		e
	} (S.
default);
	t.exports = Y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		if (m(t)) {
			var n = (0, u.
		default)(t, 2),
			i = n[0],
			o = n[1];
			return _(i) && _(o) ? (i = Math.max(Math.round(i), 0), o = Math.max(Math.round(o), 0), [i, o]) : (new p.BaseTypeError("PolylineStyle." + e + "[index]", "number", i), [0, 0])
		}
		return new p.BaseTypeError("PolylineStyle." + e, "array", t).error(),
		[0, 0]
	}
	function r() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
		e = ["width", "height", "space"],
		n = {};
		if (e.forEach(function(e) {
			if (e in t) {
				var i = t[e];
				_(i) ? n[e] = Math.min(Math.max(i, 0), 255) : new p.BaseTypeError("ArrowOptions." + e, "number", i).error()
			}
		}), !g(t.align)) {
			var i = t.align;
			i in x ? n.align = i: new p.EnumError("ArrowOptions.align", (0, s.
		default)(x), i).error()
		}
		return n
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(17),
	s = i(a),
	l = n(32),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(10),
	h = n(41),
	v = i(h),
	p = n(29),
	_ = v.
default.isNumber,
	m = v.
default.isArray,
	g = v.
default.isUndefined,
	y = {
		color: "#3777FF",
		width: 3,
		borderWidth: 0,
		borderColor: "#3777FF",
		lineCap: "butt",
		dashArray: [0, 0],
		showArrow: !1,
		arrowOptions: {
			width: 6,
			height: 4,
			space: 50,
			align: "middle"
		},
		eraseColor: "#C2CBD2",
		enableBloom: !1
	},
	x = {
		middle: 0,
		left: 1,
		right: 2
	},
	b = function t() {
		var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, f.
	default)(this, t),
		e = (0, d.extend)({},
		y, e),
		this.color = e.color,
		this.width = e.width,
		this.borderColor = e.borderColor,
		this.borderWidth = e.borderWidth || 0,
		this.lineCap = "round" === e.lineCap ? 2 : "square" === e.lineCap ? 1 : 0,
		this.dashArray = o(e.dashArray, "dashArray"),
		this.eraseColor = e.eraseColor,
		this.enableBloom = !!e.enableBloom;
		var n = (0, d.extend)({},
		y.arrowOptions, r(e.arrowOptions)),
		i = n.width,
		a = n.height,
		s = n.space,
		l = n.align;
		this.arrowInfo = [i, a * !!e.showArrow, s, x[l]]
	};
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return document.getElementsByTagName("head")[0]
	}
	function r(t) {
		return [].concat((0, _.
	default)(new URLSearchParams(t.split("?")[1]))).reduce(function(t, e) {
			var n = (0, v.
		default)(e, 2),
			i = n[0],
			o = n[1];
			return t[i] = o,
			t
		},
		{})
	}
	function a() {
		return "cb" + (new Date).getTime().toString(36) + (I++).toString(36)
	}
	function s(t, e) {
		P.push({
			name: t,
			sender: e
		})
	}
	function l(t) {
		t.clearAttributes && t.clearAttributes(),
		t[E] = null,
		t.onerror = null,
		t.parentNode && t.parentNode.removeChild(t)
	}
	function u(t, e) {
		var n = t.replace("https://apis.map.qq.com", "").replace("&servicesk=" + e, ""),
		i = [].concat((0, _.
	default)(new URLSearchParams(n.split("?")[1]))).sort(function(t, e) {
			return t[0].localeCompare(e[0])
		}).map(function(t) {
			return t.join("=")
		}).join("&"),
		o = n.split("?")[0] + "?" + i + e;
		return "https://apis.map.qq.com" + n + "&sig=" + (0, g.
	default)(o)
	}
	function c(t, e, n, i, a) {
		var l = null,
		c = !1,
		f = [];
		e.indexOf("callback") > -1 ? (e = e.replace("&callback", ""), f = ["output=jsonp", "callback=" + A + "." + t]) : f = ["output=jsonp", "pf=jsapi", "ref=jsapi", "cb=" + A + "." + t];
		var h = S.createElement("script");
		h.setAttribute("type", "text/javascript"),
		h.setAttribute("charset", a || "GBK"),
		h.async = !0;
		var v = e + ( - 1 === e.indexOf("?") ? "?": "&") + f.join("&"),
		p = r(v);
		p.servicesk && (v = u(v, p.servicesk)),
		h.src = v,
		h.onerror = function() {
			c = !0,
			i && i(),
			d(t)
		},
		T[t] = function(t) {
			l = t
		},
		h[E] = function() {
			w.test(this.readyState) && (d(t), l ? (l.id = t, n && n(l)) : c || i && i())
		};
		var _ = o();
		_.insertBefore(h, _.firstChild),
		s(t, h)
	}
	function f(t, e, n, i) {
		return t || (t = a()),
		b(function() {
			d(t),
			c(t, e, n, i)
		}),
		t
	}
	function d(t) {
		if (t) {
			for (var e = 0,
			n = null,
			i = P.length; e < i; e++) if (P[e].name === t) {
				n = P.splice(e, 1)[0];
				break
			}
			n && l(n.sender),
			T[t] && delete T[t]
		}
	}
	var h = n(32),
	v = i(h),
	p = n(24),
	_ = i(p),
	m = n(400),
	g = i(m),
	y = n(56),
	x = n(392),
	b = x.domReady,
	S = window.document,
	w = /loaded|complete|undefined/i,
	E = S.dispatchEvent ? "onload": "onreadystatechange",
	T = window[y]._svcb || (window[y]._svcb = {}),
	A = y + "._svcb",
	P = [],
	I = 0;
	e.send = f,
	e.cancel = d
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.LIGHT_TYPE = {
		AMBIENT: "ambient",
		DIRECTION: "dir",
		POINT: "point",
		SPOT: "spot"
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(211),
	m = i(_),
	g = [ - 1, -1, 1, -1, -1, 1, 1, 1],
	y = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.shaderParams = {
				attributes: ["aClipSpacePosition"],
				uniforms: t.uniformList || []
			},
			n.vertices = new Float32Array(g),
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "preDraw",
			value: function() { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "preDraw", this).call(this),
				this.buffers || (this.buffers = this.createBuffer(null, this.vertices)),
				this.bindBuffer()
			}
		},
		{
			key: "bindBuffer",
			value: function() {
				var t = this.gl;
				this.buffers.vertices.bind(),
				this.buffers.vertices.pointToAttrib({
					location: this.aClipSpacePosition,
					size: 2,
					type: t.FLOAT
				})
			}
		},
		{
			key: "draw",
			value: function(t) {
				var e = this.gl;
				e.useProgram(e.program),
				this.setUniforms(t),
				e.drawArrays(e.TRIANGLE_STRIP, 0, 4)
			}
		},
		{
			key: "setUniforms",
			value: function() {}
		}]),
		e
	} (m.
default);
	e.
default = y
},
function(t, e, n) {
	t.exports = {
	default:
		n(411),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = n(216),
	o = n(88),
	r = n(269);
	t.exports = function(t) {
		return function(e, n, a) {
			var s, l = i(e),
			u = o(l.length),
			c = r(a, u);
			if (t && n != n) {
				for (; u > c;) if ((s = l[c++]) != s) return ! 0
			} else for (; u > c; c++) if ((t || c in l) && l[c] === n) return t || c || 0;
			return ! t && -1
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(62),
	o = n(11),
	r = n(206),
	a = n(286),
	s = n(253),
	l = n(348),
	u = n(284),
	c = n(63),
	f = n(61),
	d = n(350),
	h = n(288),
	v = n(427);
	t.exports = function(t, e, n, p, _, m) {
		var g = i[t],
		y = g,
		x = _ ? "set": "add",
		b = y && y.prototype,
		S = {},
		w = function(t) {
			var e = b[t];
			r(b, t, "delete" == t ?
			function(t) {
				return ! (m && !c(t)) && e.call(this, 0 === t ? 0 : t)
			}: "has" == t ?
			function(t) {
				return ! (m && !c(t)) && e.call(this, 0 === t ? 0 : t)
			}: "get" == t ?
			function(t) {
				return m && !c(t) ? void 0 : e.call(this, 0 === t ? 0 : t)
			}: "add" == t ?
			function(t) {
				return e.call(this, 0 === t ? 0 : t),
				this
			}: function(t, n) {
				return e.call(this, 0 === t ? 0 : t, n),
				this
			})
		};
		if ("function" == typeof y && (m || b.forEach && !f(function() { (new y).entries().next()
		}))) {
			var E = new y,
			T = E[x](m ? {}: -0, 1) != E,
			A = f(function() {
				E.has(1)
			}),
			P = d(function(t) {
				new y(t)
			}),
			I = !m && f(function() {
				for (var t = new y,
				e = 5; e--;) t[x](e, e);
				return ! t.has( - 0)
			});
			P || (y = e(function(e, n) {
				u(e, y, t);
				var i = v(new g, e, y);
				return void 0 != n && l(n, _, i[x], i),
				i
			}), y.prototype = b, b.constructor = y),
			(A || I) && (w("delete"), w("has"), _ && w("get")),
			(I || T) && w(x),
			m && b.clear && delete b.clear
		} else y = p.getConstructor(e, t, _, x),
		a(y.prototype, n),
		s.NEED = !0;
		return h(y, t),
		S[t] = y,
		o(o.G + o.W + o.F * (y != g), S),
		m || p.setStrong(y, t, _),
		y
	}
},
function(t, e, n) {
	"use strict";
	n(548);
	var i = n(206),
	o = n(215),
	r = n(61),
	a = n(245),
	s = n(78),
	l = n(433),
	u = s("species"),
	c = !r(function() {
		var t = /./;
		return t.exec = function() {
			var t = [];
			return t.groups = {
				a: "7"
			},
			t
		},
		"7" !== "".replace(t, "$<a>")
	}),
	f = function() {
		var t = /(?:)/,
		e = t.exec;
		t.exec = function() {
			return e.apply(this, arguments)
		};
		var n = "ab".split(t);
		return 2 === n.length && "a" === n[0] && "b" === n[1]
	} ();
	t.exports = function(t, e, n) {
		var d = s(t),
		h = !r(function() {
			var e = {};
			return e[d] = function() {
				return 7
			},
			7 != "" [t](e)
		}),
		v = h ? !r(function() {
			var e = !1,
			n = /a/;
			return n.exec = function() {
				return e = !0,
				null
			},
			"split" === t && (n.constructor = {},
			n.constructor[u] = function() {
				return n
			}),
			n[d](""),
			!e
		}) : void 0;
		if (!h || !v || "replace" === t && !c || "split" === t && !f) {
			var p = /./ [d],
			_ = n(a, d, "" [t],
			function(t, e, n, i, o) {
				return e.exec === l ? h && !o ? {
					done: !0,
					value: p.call(e, n, i)
				}: {
					done: !0,
					value: t.call(n, e, i)
				}: {
					done: !1
				}
			}),
			m = _[0],
			g = _[1];
			i(String.prototype, t, m),
			o(RegExp.prototype, d, 2 == e ?
			function(t, e) {
				return g.call(t, this, e)
			}: function(t) {
				return g.call(t, this)
			})
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(60);
	t.exports = function() {
		var t = i(this),
		e = "";
		return t.global && (e += "g"),
		t.ignoreCase && (e += "i"),
		t.multiline && (e += "m"),
		t.unicode && (e += "u"),
		t.sticky && (e += "y"),
		e
	}
},
function(t, e, n) {
	var i = n(231),
	o = n(529),
	r = n(428),
	a = n(60),
	s = n(88),
	l = n(443),
	u = {},
	c = {},
	e = t.exports = function(t, e, n, f, d) {
		var h, v, p, _, m = d ?
		function() {
			return t
		}: l(t),
		g = i(n, f, e ? 2 : 1),
		y = 0;
		if ("function" != typeof m) throw TypeError(t + " is not iterable!");
		if (r(m)) {
			for (h = s(t.length); h > y; y++) if ((_ = e ? g(a(v = t[y])[0], v[1]) : g(t[y])) === u || _ === c) return _
		} else for (p = m.call(t); ! (v = p.next()).done;) if ((_ = o(p, g, v.value, e)) === u || _ === c) return _
	};
	e.BREAK = u,
	e.RETURN = c
},
function(t, e, n) {
	var i = n(244);
	t.exports = Array.isArray ||
	function(t) {
		return "Array" == i(t)
	}
},
function(t, e, n) {
	var i = n(78)("iterator"),
	o = !1;
	try {
		var r = [7][i]();
		r.
		return = function() {
			o = !0
		},
		Array.from(r,
		function() {
			throw 2
		})
	} catch(t) {}
	t.exports = function(t, e) {
		if (!e && !o) return ! 1;
		var n = !1;
		try {
			var r = [7],
			a = r[i]();
			a.next = function() {
				return {
					done: n = !0
				}
			},
			r[i] = function() {
				return a
			},
			t(r)
		} catch(t) {}
		return n
	}
},
function(t, e) {
	e.f = Object.getOwnPropertySymbols
},
function(t, e, n) {
	"use strict";
	var i = n(320),
	o = RegExp.prototype.exec;
	t.exports = function(t, e) {
		var n = t.exec;
		if ("function" == typeof n) {
			var r = n.call(t, e);
			if ("object" != typeof r) throw new TypeError("RegExp exec method returned something other than an Object or null");
			return r
		}
		if ("RegExp" !== i(t)) throw new TypeError("RegExp#exec called on incompatible receiver");
		return o.call(t, e)
	}
},
function(t, e, n) {
	var i = n(102),
	o = n(62),
	r = o["__core-js_shared__"] || (o["__core-js_shared__"] = {}); (t.exports = function(t, e) {
		return r[t] || (r[t] = void 0 !== e ? e: {})
	})("versions", []).push({
		version: i.version,
		mode: n(263) ? "pure": "global",
		copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
	})
},
function(t, e, n) {
	for (var i, o = n(62), r = n(215), a = n(270), s = a("typed_array"), l = a("view"), u = !(!o.ArrayBuffer || !o.DataView), c = u, f = 0, d = "Int8Array,Uint8Array,Uint8ClampedArray,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array".split(","); f < 9;)(i = o[d[f++]]) ? (r(i.prototype, s, !0), r(i.prototype, l, !0)) : c = !1;
	t.exports = {
		ABV: u,
		CONSTR: c,
		TYPED: s,
		VIEW: l
	}
},
function(t, e, n) {
	var i = n(62),
	o = i.navigator;
	t.exports = o && o.userAgent || ""
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function(e) {
			var n = t,
			i = n.lib,
			o = i.Base,
			r = i.WordArray,
			a = n.x64 = {};
			a.Word = o.extend({
				init: function(t, e) {
					this.high = t,
					this.low = e
				}
			}),
			a.WordArray = o.extend({
				init: function(t, e) {
					t = this.words = t || [],
					this.sigBytes = void 0 != e ? e: 8 * t.length
				},
				toX32: function() {
					for (var t = this.words,
					e = t.length,
					n = [], i = 0; i < e; i++) {
						var o = t[i];
						n.push(o.high),
						n.push(o.low)
					}
					return r.create(n, this.sigBytes)
				},
				clone: function() {
					for (var t = o.clone.call(this), e = t.words = this.words.slice(0), n = e.length, i = 0; i < n; i++) e[i] = e[i].clone();
					return t
				}
			})
		} (),
		t
	})
},
, , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.easableMixin = void 0;
	var i = n(28);
	e.easableMixin = {
		_abortFn: null,
		_finishFn: null,
		_ease: function(t, e, n, o) {
			var r = this;
			this._finishFn = e;
			var a = !1;
			this._abortFn = (0, i.timed)(function(e) {
				t.call(this, o.easing(e)),
				1 === e && this._finishEase()
			},
			function() {
				a || (delete r._finishFn, n && n.call(r), a = !0, delete r._abortFn)
			},
			!1 === o.animate ? 0 : o.duration, this)
		},
		_finishEase: function() {
			delete this._abortFn;
			var t = this._finishFn;
			delete this._finishFn,
			t && t.call(this)
		},
		_stopEase: function() {
			this._abortFn && (this._abortFn(), this._finishEase())
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(32),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = function() {
		function t(e, n) { (0, s.
		default)(this, t),
			this.p0 = e,
			this.p1 = n
		}
		return (0, u.
	default)(t, [{
			key: "getXYCoefficient",
			value: function() {
				var t = (0, r.
			default)(this.p0.elements, 3),
				e = t[0],
				n = t[1],
				i = t[2],
				o = (0, r.
			default)(this.p1.elements, 3),
				a = o[0],
				s = o[1],
				l = o[2];
				return [(a - e) / (l - i), (e * l - a * i) / (l - i), (s - n) / (l - i), (n * l - s * i) / (l - i)]
			}
		}]),
		t
	} ();
	e.
default = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(32),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(107),
	f = function() {
		function t(e, n) { (0, s.
		default)(this, t),
			this.center = e,
			this.radius = n
		}
		return (0, u.
	default)(t, [{
			key: "intersectWithLine",
			value: function(t) {
				var e = t.getXYCoefficient(),
				n = (0, r.
			default)(e, 4),
				i = n[0],
				o = n[1],
				a = n[2],
				s = n[3],
				l = (0, r.
			default)(this.center.elements, 3),
				u = l[0],
				f = l[1],
				d = l[2],
				h = this.radius,
				v = o - u,
				p = s - f,
				_ = -d,
				m = i * i + a * a + 1,
				g = 2 * (i * v + a * p + _),
				y = v * v + p * p + _ * _ - h * h,
				x = g * g - 4 * m * y;
				if (x < 0) return [];
				var b = ( - g + Math.sqrt(x)) / (2 * m),
				S = ( - g - Math.sqrt(x)) / (2 * m),
				w = i * b + o,
				E = a * b + s,
				T = i * S + o,
				A = a * S + s;
				return [new c.Vector3(w, E, b), new c.Vector3(T, A, S)]
			}
		}]),
		t
	} ();
	e.
default = f
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.ConfigUtil = e.INDOOR_ICON_SIZE = void 0;
	var i = n(23),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = 0;
	e.INDOOR_ICON_SIZE = o.
default.iconSize,
	e.ConfigUtil = {
		setBV: function(t) {
			r = t
		},
		getBV: function() {
			return r
		},
		getIconPath: function() {
			var t = Math.floor(3 * Math.random());
			return o.
		default.indoorIconSrc.replace("%$%", 0 === t ? 1 : t)
		},
		getIconSrc: function(t) {
			return "" + this.getIconPath() + t + ".png?v=" + this.getBV()
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t[0] + (t[1] << 8) + (t[2] << 16)
	}
	function r(t, e) {
		var n = {};
		n.x = 360 * t / 268435456 - 180;
		var i = 180 - 360 * e / 268435456;
		n.y = Math.atan(Math.exp(.017453292519943295 * i)) / .008726646259971648 - 90;
		var o = new _.
	default(n.y, n.x);
		return o.x = n.x,
		o.y = n.y,
		o
	}
	function a(t) {
		return (0, v.
	default)({},
		t)
	}
	function s(t, e) {
		var n = (0, S.mercatorToLatLng)(new g.
	default(t, e));
		return n.x = t,
		n.y = e,
		n
	}
	function l(t, e) {
		return (0, S.latLngToMercator)(new _.
	default(e, t))
	}
	function u(t) {
		var e = t.map(function(t) {
			return {
				lng: t.x,
				lat: t.y
			}
		});
		return (0, b.isClockWise)(e)
	}
	function c(t, e, n, i) {
		var o = (0, y.getStyle)(t, e, i);
		if (!o) return ! 1;
		var r = (0, y.getStyle)(o.labelid, e, i);
		if (!r) return ! 1;
		if (o.icon_offset && 65535 !== o.icon_offset || r.effect && 5 === r.effect) {
			var a = o.icon_offset;
			if (n && "number" == typeof o.icon_offset && isFinite(o.icon_offset) && 65535 !== o.icon_offset && -1 !== o.icon_offset) {
				if (r.fontSize > 0) return ! 0
			} else if (r.fontSize > 0) return ! 0;
			return !! ("number" == typeof a && isFinite(a) && a >= 0 && a < 500)
		}
		return r.fontSize > 0
	}
	function f(t, e, n, i) {
		var o = c(t, e, n, i),
		r = !1,
		a = !1;
		if (!o) return {
			isValid: o,
			drawIcon: r,
			drawLabel: a
		};
		var s = (0, y.getStyle)(t, e, i),
		l = (0, y.getStyle)(s.labelid, e, i);
		if (s.icon_offset && 65535 !== s.icon_offset || l.effect && 5 === l.effect) {
			var u = s.icon_offset;
			a = (n && "number" == typeof s.icon_offset && isFinite(s.icon_offset) && 65535 !== s.icon_offset && s.icon_offset, l.fontSize > 0),
			r = !!("number" == typeof u && isFinite(u) && u >= 0 && u < 500)
		} else r = !1,
		a = l.fontSize > 0;
		return {
			isValid: o,
			drawLabel: a,
			drawIcon: r
		}
	}
	function d(t, e, n, i) {
		var o = (0, y.getStyle)(t.styleId, e, i);
		if (!o) return void console.warn("style is invalid!");
		var r = (0, y.getStyle)(o.labelid, e, i);
		if (!r) return void console.warn("labelStyle is invalid!");
		var a = t.drawInfo || f(t.styleId, e, t.direct, i),
		s = x.INDOOR_ICON_SIZE,
		l = x.INDOOR_ICON_SIZE,
		u = /\\/g,
		c = null,
		d = null,
		h = s / 2,
		v = l / 2,
		p = t.text.split(u);
		return p.map(function(e, i) {
			var o = {
				x: 0,
				y: 0
			},
			s = {
				w: 0,
				h: 0
			},
			l = {
				x: 0,
				y: 0
			},
			u = {
				text: e,
				coords: [l.x, l.y],
				anchor: o,
				textBounds: s
			};
			if (!a.drawLabel) return u;
			switch (t.direct) {
			case 2:
				c = "right",
				d = "middle";
				break;
			case 3:
				c = "center",
				d = "top";
				break;
			case 4:
				c = "center",
				d = "bottom";
				break;
			case 1:
				c = "left",
				d = "middle";
				break;
			default:
				c = "center",
				d = "middle"
			}
			var f = 0;
			return n.font !== r.font && (n.font = r.font),
			f = n.measureText(e).width,
			s.w = Math.ceil(f),
			s.h = t.fontSize,
			"left" === c && a.drawIcon ? (o.x = 0 + h + 2 + f / 2, l.x = o.x) : "right" === c && a.drawIcon ? (o.x = 0 - h - 2 - f / 2, l.x = o.x) : (o.x = 0, l.x = 0),
			"top" === d ? (o.y = 0 + v + (r.fontSize + 2) * (i + 1) - r.fontSize / 2, l.y = o.y) : "bottom" === d ? (o.y = 0 - v - (r.fontSize + 2) * (p.length - i) + r.fontSize / 2, l.y = o.y) : a.drawIcon && a.drawLabel ? (o.y = 0 + (1 === p.length ? 0 : (r.fontSize / 2 + 2) * (0 === i ? -1 : 1)), l.y = o.y) : a.drawIcon ? (o.y = 0, l.y = 0) : a.drawLabel && (1 === p.length ? (o.y = 0, l.y = 0) : (o.y = 0 + (r.fontSize / 2 + 2) * (0 === i ? -1 : 1), l.y = o.y)),
			u.coords = [l.x, l.y],
			u
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var h = n(223),
	v = i(h);
	e.readUint24 = o,
	e.pixels2LongLat = r,
	e.extendCopy = a,
	e.mercator2latLng = s,
	e.latLng2Mercator = l,
	e.isClockWise = u,
	e.isValidPointStyle = c,
	e.getPoiDrawInfo = f,
	e.getPoiRect = d;
	var p = n(47),
	_ = i(p),
	m = n(74),
	g = i(m),
	y = n(332),
	x = n(379),
	b = n(298),
	S = n(112)
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = null;
	e.
default = {
		setStyleTag: function(t) {
			i = t
		},
		isDefaultNoSideLine: function(t) {
			var e = i,
			n = e.lineTag,
			o = ["street", "path", "secondaryroad"],
			r = o.some(function(e) {
				return n[e] && n[e].some(function(e) {
					return e === Number(t)
				})
			});
			return Number(r)
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(257),
	p = i(v),
	_ = n(41),
	m = i(_),
	g = n(29),
	y = m.
default.isNumber,
	x = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				this._setTileSize(t.tileSize)
			}
		},
		{
			key: "_setTileSize",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 256;
				y(t) || (new g.BaseTypeError("TileLayer.tileSize", "number", t).error(), t = 256),
				this.tileSize = t
			}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(148),
	r = i(o),
	a = n(25),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(382),
	b = i(x),
	S = n(137),
	w = i(S),
	E = n(90),
	T = n(66),
	A = n(29),
	P = n(23),
	I = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t))
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_initialize", this).call(this, t),
				t.type && ("string" != typeof t.type ? new A.BaseTypeError("Layer.type", "string", t.type).error() : this.features = k[t.type]),
				this.features = this.features || t.features || [],
				this.maxDataZoom = t.maxDataZoom || P.maxDataZoom,
				this.vectorSrc = t.vectorSrc,
				this._checkSourceId()
			}
		},
		{
			key: "setMap",
			value: function(t) {
				return (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "setMap", this).call(this, t),
				t && this._init(),
				this
			}
		},
		{
			key: "_init",
			value: function() {
				var t = this;
				this._createSource().then(function() {
					t.features.forEach(function(e) {
						var n = new b.
					default({
							id:
							e.id || e.type + "_" + t.id,
							type: e.type,
							maxDataZoom: t.maxDataZoom,
							sourceId: t.layerSourceId,
							tileSize: 256
						});
						n.filter = e.filter,
						t.appendChild(n)
					}),
					t._fire("layer", {})
				})
			}
		},
		{
			key: "_createSource",
			value: function() {
				var t = this,
				e = this._checkVectorSrc();
				return this.map.getSource(this.layerSourceId) ? s.
			default.resolve():
				(this.map.addSource(this.layerSourceId, {
					tileSize: P.tileSize,
					minZoom: this.minZoom,
					maxZoom: this.maxZoom,
					minDataZoom: this.minDataZoom,
					maxDataZoom: this.maxDataZoom,
					type: E.SOURCE_TYPE.vector,
					data: {
						vectorSrc: e.vectorSrc || P.vectorSrc,
						batchVectorSrc: e.batchVectorSrc || P.batchVectorSrc
					},
					enc: !1
				}), this.map.layerResource.getStyleIdPromise().then(function(e) {
					t.map.getSource(t.layerSourceId).setStyleId(e)
				},
				function(t) {
					return console.warn("底图样式未能加载：", t),
					s.
				default.resolve()
				}))
			}
		},
		{
			key: "_checkSourceId",
			value: function() {
				if (this.layerSourceId) return void(this.layerSourceId = this.layerSourceId);
				var t = this.vectorSrc;
				return this.layerSourceMap = P.layerSourceMap || new r.
			default,
				P.layerSourceMap = this.layerSourceMap,
				Array.isArray(t) ? void this._checkSourceIdUpdate(t.sort().toString()) : "string" == typeof t ? void this._checkSourceIdUpdate(t) : void(this.layerSourceId = w.
			default.VECTOR_SOURCE_ID)
			}
		},
		{
			key: "_checkSourceIdUpdate",
			value: function(t) {
				var e = this,
				n = !0;
				if (this.layerSourceMap.forEach(function(i, o) {
					i === t && (n = !1, e.layerSourceId = o)
				}), n) {
					var i = w.
				default.VECTOR_SOURCE_ID + "_" + this.id;
					this.layerSourceMap.set(i, t),
					this.layerSourceId = i
				}
			}
		},
		{
			key: "_checkVectorSrc",
			value: function() {
				var t = this,
				e = this.vectorSrc,
				n = {};
				return Array.isArray(e) && e.forEach(function(e) {
					n.vectorSrc = n.vectorSrc || [],
					n.batchVectorSrc = n.batchVectorSrc || [],
					n.vectorSrc.push(t._concatVectorSrc(e)),
					n.batchVectorSrc.push(t._concatVectorSrc(e))
				}),
				"string" == typeof e && (n.vectorSrc = [this._concatVectorSrc(e, "vector")], n.batchVectorSrc = [this._concatVectorSrc(e, "batchvector")]),
				n
			}
		},
		{
			key: "_concatVectorSrc",
			value: function(t) {
				return "batchvector" === (arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "batchvector") ? t + "?" + P.batchVectorSrc[0].split("?")[1] : t + "?" + P.vectorSrc[0].split("?")[1]
			}
		},
		{
			key: "_removeSource",
			value: function() {
				if (this.map) { ! this.map.findLayer(function(t) {
						return t instanceof e
					}) && (this.map.removeSource(this.layerSourceId), P.layerSourceMap && P.layerSourceMap.delete(this.layerSourceId), this.layerSourceMap = P.layerSourceMap)
				}
			}
		}]),
		e
	} (b.
default);
	e.
default = I;
	var k = {
		base: [{
			type: T.BASE_LAYER_TYPE.base,
			filter: T.BASE_LAYER_TYPE.base
		},
		{
			type: T.BASE_LAYER_TYPE.ground,
			filter: T.BASE_LAYER_TYPE.ground
		}],
		arrow: [{
			type: T.BASE_LAYER_TYPE.arrow,
			filter: T.BASE_LAYER_TYPE.arrow
		}],
		building2d: [{
			type: T.BASE_LAYER_TYPE.building2d,
			filter: T.BASE_LAYER_TYPE.building3d
		}],
		building3d: [{
			type: T.BASE_LAYER_TYPE.building3d,
			filter: T.BASE_LAYER_TYPE.building3d
		}],
		point: [{
			type: T.BASE_LAYER_TYPE.point,
			filter: T.BASE_LAYER_TYPE.point
		},
		{
			type: T.BASE_LAYER_TYPE.text,
			filter: T.BASE_LAYER_TYPE.text
		}],
		label: [{
			type: T.BASE_LAYER_TYPE.label,
			filter: T.BASE_LAYER_TYPE.label
		},
		{
			type: T.BASE_LAYER_TYPE.text,
			filter: T.BASE_LAYER_TYPE.text
		}]
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(10),
	u = i(l),
	c = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this.max = e,
			this.onRemove = n,
			this.reset()
		}
		return (0, s.
	default)(t, [{
			key: "reset",
			value: function() {
				var t = this;
				return u.
			default.forIn(this.data,
				function(e, n) {
					t.onRemove(n)
				}),
				this.data = {},
				this.order = [],
				this
			}
		},
		{
			key: "add",
			value: function(t, e) {
				if (this.has(t)) this.order.splice(this.order.indexOf(t), 1),
				this.data[t] = e,
				this.order.push(t);
				else if (this.data[t] = e, this.order.push(t), this.order.length > this.max) {
					var n = this.get(this.order[0]);
					n && this.onRemove(n)
				}
				return this
			}
		},
		{
			key: "has",
			value: function(t) {
				return t in this.data
			}
		},
		{
			key: "keys",
			value: function() {
				return this.order
			}
		},
		{
			key: "get",
			value: function(t) {
				if (!this.has(t)) return null;
				var e = this.data[t];
				return delete this.data[t],
				this.order.splice(this.order.indexOf(t), 1),
				e
			}
		},
		{
			key: "getWithoutRemoving",
			value: function(t) {
				return this.has(t) ? this.data[t] : null
			}
		},
		{
			key: "remove",
			value: function(t) {
				if (!this.has(t)) return this;
				var e = this.data[t];
				return delete this.data[t],
				this.onRemove(e),
				this.order.splice(this.order.indexOf(t), 1),
				this
			}
		},
		{
			key: "setMaxSize",
			value: function(t) {
				for (this.max = t; this.order.length > this.max;) {
					var e = this.get(this.order[0]);
					e && this.onRemove(e)
				}
				return this
			}
		}]),
		t
	} ();
	e.
default = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = y.
	default.QMAPI_style + t;
		return a(e).then(function(n) {
			var i = n.version,
			o = n.cacheJson;
			return u({
				styleId: t,
				version: i,
				serviceSrc: P.styleSrc,
				qosId: "st"
			}).then(function(n) {
				if (n ? l(e, n) : n = o, !n) throw Error("未知错误：获取样式文件失败。");
				return (0, m.setBgColor)(t, n.data),
				n.data
			})
		}).
		catch(function(t) {
			console.error(t)
		})
	}
	function r(t) {
		var e = y.
	default.QMAPI_style_indoor + t;
		return a(e).then(function(n) {
			var i = n.version,
			o = n.cacheJson;
			return u({
				styleId: t,
				version: i,
				serviceSrc: P.indoorStyleSrc,
				qosId: "in_st"
			}).then(function(t) {
				return t ? (l(e, t), t.data) : o ? o.data: null
			},
			function(t) {
				return t && console.error(t.status + ": " + t.message),
				null
			})
		})
	}
	function a(t) {
		return new _.
	default(function(e) {
			A.support() ? A.get(t,
			function(t) {
				var n = JSON.parse(t) || null,
				i = n ? n.version: -1;
				e({
					version: i,
					cacheJson: n
				})
			}) : (console.error("兼容性错误：当前浏览器不支持LocalStorage。"), e({
				version: -1
			}))
		})
	}
	function s(t, e) {
		return new _.
	default(function(n) {
			if (A.support()) { (0, m.setBgColor)(e, t);
				var i = y.
			default.QMAPI_style + "config";
				A.set(i, (0, v.
			default)({
					data:
					t
				}),
				function() {
					n(!0)
				})
			} else console.error("兼容性错误：当前浏览器不支持LocalStorage。"),
			n(!1)
		})
	}
	function l(t, e) {
		A.support() && A.set(t, (0, v.
	default)(e))
	}
	function u(t) {
		var e = t.styleId,
		n = t.version,
		i = void 0 === n ? -1 : n,
		o = t.serviceSrc,
		r = void 0 === o ? P.styleSrc: o,
		a = t.qosId,
		s = void 0 === a ? "st": a,
		l = d(r, {
			id: e,
			version: i
		});
		return new _.
	default(function(t, n) {
			T.getJSON(null, l,
			function(o, r, a) {
				"in_st" === s ? c({
					err: o,
					result: r,
					time: a,
					resolve: t,
					reject: n,
					styleId: e,
					version: i
				}) : f({
					err: o,
					result: r,
					time: a,
					resolve: t,
					reject: n,
					styleId: e,
					version: i
				})
			})
		})
	}
	function c(t) {
		var e = t.err,
		n = t.result,
		i = t.time,
		o = t.resolve,
		r = t.reject,
		a = t.styleId,
		s = t.version;
		if (!e && n && n.data) {
			var l = !0;
			for (var u in n.data) if (n.data.hasOwnProperty(u)) {
				l = !1;
				break
			}
			l ? o(null) : ((0, x.qos)("in_st", {
				styleId: a,
				version: s,
				loadTime: i
			}), o(n))
		} else(0, x.qos)("in_st", {
			styleId: a,
			version: s,
			error: e && e.status || 0
		}),
		r(e || "未知错误：获取样式文件失败。")
	}
	function f(t) {
		var e = t.err,
		n = t.result,
		i = t.time,
		o = t.resolve,
		r = t.reject,
		a = t.styleId,
		s = t.version;
		if (e || !n)(0, x.qos)("st", {
			styleId: a,
			version: s,
			error: e && e.status || 0
		}),
		r(e || "未知错误：获取样式文件失败。");
		else {
			if (n && n.data && E.
		default.isLocal) return void o(n);
			if (n && 0 === n.isup) o(null);
			else {
				var l = n && n.url;
				if (!l) return void r("未返回cdn地址，获取样式失败。");
				T.getJSON(null, l,
				function(t, n, l) {
					t || !n ? ((0, x.qos)("st", {
						styleId: a,
						version: s,
						error: e && e.status || 0
					}), r(e || "未知错误：获取样式文件失败。")) : ((0, x.qos)("st", {
						styleId: a,
						version: s,
						loadTime: i + l
					}), o(n))
				})
			}
		}
	}
	function d(t, e) {
		var n = t;
		return S.
	default.forIn(e,
		function(t, e) {
			n = n.replace("{" + t + "}", e)
		}),
		n
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var h = n(113),
	v = i(h),
	p = n(25),
	_ = i(p);
	e.loadStyleFile = o,
	e.loadIndoorStyleFile = r,
	e.setStyleConfig = s,
	e.loadStyleFileFromServer = u;
	var m = n(496),
	g = n(137),
	y = i(g),
	x = n(43),
	b = n(10),
	S = i(b),
	w = n(105),
	E = i(w),
	T = n(79),
	A = n(89),
	P = n(23)
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.styleNameConfig = {
		regionTag: {
			airportsarea: [196832],
			building: [196619, 197120, 197121, 197122, 197123],
			commercial: [196890],
			grass: [196614, 196615, 196616, 196833],
			hospital: [196774],
			land: [196609, 196612, 196613, 196617],
			otherarea: [196775, 196831, 196856, 196857, 196858, 196859, 196860, 196861, 196862, 196863, 196864, 196865, 196866, 196867, 196868, 196869, 196877, 196894, 196895, 196934],
			park: [196622],
			parkinglots: [196629, 196787],
			resident: [196621, 196627, 196630, 196632],
			school: [196773],
			sportsfield: [196626, 196789, 196790, 196791, 196792, 196793, 196794, 196795, 196796, 196798],
			subwayarea: [196634, 196635, 196636, 196637, 196638, 196639, 196640, 196641, 196642, 196643, 196644, 196645, 196646, 196647, 196648, 196649, 196684, 196685, 196686, 196687, 196688, 196689, 196690, 196651, 196652, 196653, 196654, 196655, 196656, 196657, 196658, 196659, 196660, 196691, 196692, 196693, 196694, 196695, 196696, 196697, 196698, 196661, 196662, 196663, 196664, 196665, 196666, 196667, 196668, 196669, 196670, 196671, 196672, 196673, 196674, 196675, 196676, 196677, 196678, 196679, 196680, 196681, 196682, 196683, 196699, 196700, 196701, 196702, 196703, 196704, 196705, 196706, 196707, 196708, 196709, 196710, 196711, 196712, 196713, 196714, 196715, 196716, 196717, 196718, 196719, 196720, 196721, 196722, 196723, 196724, 196725, 196726, 196727, 196728, 196729, 196730, 196731, 196732, 196733, 196734, 196735, 196736, 196737, 196738, 196739, 196650, 196740, 196741, 196742, 196743, 196744, 196745, 196746, 196747, 196748, 196749, 196750, 196753, 196754, 196755, 196756, 196757, 196758, 196759, 196760, 196761, 196762, 196763, 196764, 196765, 196766, 196767, 196768, 196769, 196770, 196771, 196772, 196776, 196777, 196778, 196779, 196780, 196781, 196782, 196783, 196784, 196785, 196786, 196799, 196800, 196801, 196802, 196803, 196815, 196816, 196817, 196818, 196819, 196820, 196821, 196822, 196823, 196824, 196825, 196826, 196827, 196828, 196829, 196830, 196834, 196835, 196836, 196837, 196838, 196839, 196840, 196841, 196842, 196843, 196844, 196845, 196846, 196847, 196848, 196849, 196850, 196851, 196852, 196853, 196854, 196855, 196870, 196871, 196872, 196874, 196875, 196876, 196881, 196878, 196879, 196880, 196882, 196883, 196884, 196885, 196886, 196887, 196888, 196889, 196891, 196892, 196893, 196896, 196897, 196898, 196899, 196900, 196901, 196902, 196903, 196904, 196905, 196906, 196907, 196908, 196909, 196910, 196911, 196912, 196913, 196914, 196915, 196916, 196917, 196918, 196919, 196920, 196921, 196922, 196923, 196924, 196925, 196926, 196927, 196928, 196929, 196930, 196931, 196932, 196933, 196935, 196936, 196938, 196939, 196940, 196941, 196942, 196944, 196945, 196946, 196947],
			water: [196610, 196611, 196618]
		},
		labelTag: {
			aoi: [262149, 262150, 262404, 262405, 262406, 262482, 262483, 262484, 262153, 262952],
			autoservice: [262864],
			bridge: [262154, 262953, 262946, 262947, 262948, 262949, 262950],
			building: [262145, 262409, 262487, 262708, 262713, 262494, 262506, 262954],
			business: [262493, 262515],
			city: [262157, 262158, 262159, 262160],
			commercial: [262942],
			continent: [262395, 262426],
			country: [262402, 262865],
			district: [262155],
			education: [262453, 262488],
			entertainment: [262486],
			ferry: [262162, 262801],
			government: [262869],
			highway: [262166, 262418, 262425, 262792, 262799, 262812, 262813],
			highwaynum: [262164, 262165, 262169, 262170, 262783, 262784],
			hospital: [262407],
			hotel: [262452],
			island: [262146],
			lifeservice: [262866, 262867, 262868],
			mainroad: [262178, 262179, 262185, 262186, 262415, 262416, 262419, 262420, 262790, 262791, 262797, 262798, 262802, 262803, 262810, 262811],
			motorway: [262173, 262417, 262424, 262793, 262800],
			nationalnum: [262163, 262168, 262785],
			ocean: [262147, 262396, 262707],
			other: [262151, 262496, 262497, 262498, 262499, 262500, 262501, 262502, 262503, 262504, 262505, 262507, 262508, 262509, 262510, 262511, 262512, 262514],
			path: [262903],
			province: [262533],
			railway: [262908, 263057],
			restrant: [262450, 262495],
			roadnum: [262167, 262176, 262786],
			scenic: [262288, 262489, 262870, 262941],
			secondaryroad: [262180, 262181, 262187, 262188, 262413, 262414, 262421, 262422, 262788, 262789, 262795, 262796, 262804, 262805, 262808, 262809],
			shopping: [262451, 262945],
			street: [262182, 262189, 262412, 262423, 262787, 262794, 262806, 262807],
			subwaygate: [262454, 262455, 262456, 262457, 262458, 262459, 262460, 262461, 262462, 262463, 262464, 262465, 262466, 262467, 262468, 262469, 262470, 262471, 262472, 262473, 262474, 262475, 262476, 262477, 262478, 262479, 262480, 262481, 262492, 262485, 262691, 262696, 262750, 262818, 262841, 262842, 262853, 262921, 262922, 262927, 262940, 263016],
			subwayline: [262544, 262545, 262546, 262547, 262548, 262549, 262550, 262551, 262552, 262553, 262554, 262555, 262556, 262557, 262558, 262559, 262560, 262561, 262564, 262565, 262566, 262567, 262568, 262569, 262570, 262571, 262572, 262573, 262574, 262575, 262576, 262577, 262578, 262579, 262580, 262581, 262582, 262583, 262584, 262585, 262586, 262587, 262588, 262589, 262590, 262591, 262592, 262593, 262594, 262595, 262596, 262597, 262598, 262599, 262600, 262601, 262602, 262603, 262604, 262605, 262606, 262607, 262608, 262609, 262610, 262611, 262612, 262613, 262614, 262615, 262616, 262617, 262618, 262619, 262620, 262621, 262622, 262623, 262624, 262625, 262626, 262627, 262628, 262629, 262630, 262631, 262632, 262633, 262634, 262635, 262636, 262637, 262638, 262639, 262640, 262641, 262642, 262643, 262644, 262645, 262646, 262647, 262648, 262649, 262650, 262651, 262652, 262653, 262654, 262655, 262656, 262657, 262658, 262659, 262660, 262661, 262662, 262663, 262664, 262665, 262666, 262667, 262668, 262669, 262670, 262671, 262672, 262673, 262674, 262675, 262676, 262677, 262678, 262679, 262680, 262681, 262682, 262684, 262686, 262688, 262690, 262693, 262695, 262698, 262700, 262702, 262704, 262706, 262710, 262712, 262715, 262717, 262719, 262721, 262723, 262725, 262727, 262729, 262731, 262733, 262735, 262737, 262739, 262741, 262743, 262745, 262747, 262749, 262752, 262762, 262767, 262768, 262769, 262770, 262771, 262772, 262773, 262774, 262775, 262776, 262777, 262778, 262779, 262780, 262781, 262782, 262815, 262817, 262820, 262822, 262824, 262826, 262828, 262830, 262832, 262834, 262836, 262838, 262840, 262844, 262846, 262848, 262850, 262852, 262855, 262857, 262859, 262861, 262863, 262905, 262907, 262910, 262909, 262912, 262914, 262916, 262918, 262920, 262924, 262926, 262929, 262931, 262933, 262935, 262937, 262939, 262944, 262973, 262975, 262977, 262979, 262981, 262983, 262985, 262987, 262989, 262991, 262993, 262995, 262997, 262999, 263001, 263003, 263005, 263007, 263009, 263011, 263013, 263015, 263018, 263020, 263022, 263024, 263026, 263028, 263030, 263032, 263034, 263036, 263038, 263040, 263042, 263044, 263046, 263048, 263050, 263052, 263054, 263056, 263061, 263063, 263065, 263067, 263069, 263073, 263075, 263077, 263079],
			subwaystation: [262287],
			town: [262156],
			transport: [262410, 262871],
			village: [262152]
		},
		lineTag: {
			ferry: [131115],
			guojie: [131073, 131074, 131075],
			highway: [131082, 131088, 131335, 131337, 131090, 131396, 131406],
			mainroad: [131084, 131085, 131105, 131106, 131107, 131333, 131342, 131108, 131109, 131110, 131111, 131334, 131344, 131112, 131398, 131399, 131408, 131409],
			motorway: [131083, 131089, 131329, 131338, 131091, 131397, 131407],
			path: [131336, 131483, 131484, 131405, 131453, 131454, 131455, 131456, 131457, 131506],
			pfurniture: [131352, 131353, 131354, 131355, 131511, 131512],
			railway: [131086, 131087, 131489],
			secondaryroad: [131208, 131097, 131098, 131099, 131331, 131340, 131100, 131101, 131102, 131103, 131332, 131341, 131104, 131400, 131401, 131410, 131411, 131507],
			shengjie: [131078, 131079, 131080, 131486],
			street: [131092, 131093, 131094, 131330, 131339, 131095, 131096, 131345, 131412, 131505],
			subwayline: [131117, 131118, 131119, 131120, 131121, 131122, 131123, 131124, 131125, 131126, 131127, 131128, 131129, 131130, 131131, 131132, 131133, 131134, 131135, 131136, 131137, 131138, 131139, 131140, 131141, 131142, 131143, 131144, 131145, 131146, 131147, 131148, 131149, 131150, 131151, 131152, 131153, 131154, 131155, 131156, 131157, 131158, 131159, 131160, 131161, 131162, 131163, 131164, 131165, 131166, 131167, 131168, 131169, 131170, 131171, 131172, 131173, 131174, 131175, 131176, 131177, 131178, 131179, 131180, 131181, 131182, 131183, 131184, 131185, 131186, 131187, 131188, 131189, 131190, 131191, 131192, 131193, 131194, 131195, 131196, 131197, 131198, 131199, 131200, 131201, 131202, 131203, 131204, 131205, 131206, 131207, 131209, 131210, 131211, 131212, 131213, 131214, 131215, 131216, 131217, 131218, 131219, 131220, 131221, 131222, 131223, 131224, 131225, 131226, 131227, 131228, 131229, 131230, 131231, 131232, 131233, 131234, 131235, 131236, 131237, 131238, 131239, 131240, 131241, 131242, 131243, 131244, 131245, 131246, 131247, 131248, 131249, 131250, 131251, 131252, 131253, 131254, 131255, 131256, 131257, 131258, 131259, 131260, 131261, 131262, 131263, 131264, 131265, 131266, 131267, 131268, 131269, 131270, 131271, 131272, 131273, 131274, 131275, 131276, 131277, 131278, 131279, 131280, 131281, 131282, 131283, 131284, 131285, 131286, 131287, 131288, 131289, 131290, 131291, 131292, 131293, 131294, 131295, 131296, 131297, 131298, 131299, 131300, 131301, 131302, 131303, 131304, 131305, 131306, 131307, 131308, 131309, 131310, 131311, 131312, 131313, 131314, 131315, 131316, 131317, 131318, 131319, 131320, 131321, 131322, 131323, 131324, 131325, 131326, 131327, 131346, 131347, 131348, 131349, 131350, 131351, 131356, 131357, 131358, 131359, 131360, 131361, 131362, 131363, 131364, 131365, 131366, 131367, 131368, 131369, 131370, 131371, 131384, 131385, 131386, 131387, 131388, 131389, 131390, 131391, 131392, 131393, 131394, 131395, 131402, 131403, 131404, 131413, 131414, 131415, 131416, 131417, 131437, 131438, 131439, 131440, 131441, 131442, 131443, 131444, 131445, 131446, 131447, 131448, 131449, 131450, 131451, 131452, 131458, 131459, 131460, 131461, 131462, 131463, 131464, 131465, 131466, 131467, 131468, 131469, 131470, 131471, 131472, 131473, 131474, 131475, 131476, 131477, 131478, 131479, 131480, 131481, 131482, 131487, 131488, 131491, 131492, 131493, 131494, 131495, 131496, 131497, 131498, 131499, 131500, 131501, 131502, 131503, 131504, 131508, 131509, 131510, 131513, 131514, 131515, 131516, 131517, 131518, 131519, 131520, 131521, 131522, 131523, 131524, 131525, 131526, 131527, 131528, 131529, 131530, 131531, 131532, 131533, 131534, 131535, 131536, 131537, 131538, 131539, 131540, 131541, 131542, 131543, 131544, 131545, 131546, 131547, 131548, 131549, 131550, 131551, 131552, 131554, 131555, 131556, 131557, 131558, 131560, 131561, 131562, 131563],
			water: [131081]
		},
		pointTag: {
			aoi: [65546, 65550, 65686, 65687, 65688, 65755, 65756, 65757, 65554, 66202, 66618],
			autoservice: [65606, 66173, 66174, 66175, 66176, 66177],
			bridge: [65547, 66612, 66613, 66614, 66615, 66616, 66617],
			building: [65568, 65574, 65577, 65587, 65592, 65594, 65600, 65602, 65603, 65604, 65608, 65619, 65620, 65621, 65622, 65623, 65624, 65625, 65626, 65627, 65628, 65629, 65630, 65632, 65703, 66092, 66098, 66099, 66100, 66101, 66102, 66103, 66096, 66105, 66106, 66107, 66108, 66109, 66110, 66111, 66112, 66113, 66114, 66115, 66116, 66120, 66132, 66133, 66134, 66135, 66136, 66137, 66138, 66139, 66140, 66141, 66142, 66178, 66179, 66180, 66181, 66183, 66184, 66186, 66187, 66189, 66190, 66191, 66192, 66193, 66194, 66224, 66414, 66415, 66416, 66417, 66418, 66419, 66420, 66421, 66422, 66423, 66424, 66425, 66426, 66427, 66428, 66429, 66430, 66431, 66432, 66433, 66434, 66435, 66634, 66684, 66685, 66686, 66850],
			business: [65578, 65618, 66582],
			carpark: [65607, 66526, 66527],
			city: [65543, 65555, 65557, 65558, 65559, 65693],
			commercial: [65758],
			continent: [65537],
			country: [65541, 65556],
			district: [65542],
			education: [65562, 65571, 65583, 65584, 65701, 65702, 65741, 65742, 66227, 66849],
			entertainment: [65569, 65593, 65613, 65743, 66199, 66200, 66226],
			government: [65579],
			hospital: [65581, 65598, 65705, 66852],
			hotel: [65582, 65733, 65734, 65735, 66123, 66124, 66125, 66126, 66127, 66128, 66163, 66164, 66165, 66166, 66167, 66168, 66169, 66170, 66171, 66172, 66188, 66222, 66490, 66541],
			island: [65539],
			lifeservice: [65586, 65596, 65597, 65599, 65617, 65738, 65739, 65740, 66118, 66119, 66129, 66182, 66185, 66221],
			ocean: [65538, 65540, 65549],
			other: [65553, 65616, 65631, 65700, 65706, 65707, 65708, 65709, 66196, 66564, 66565, 66577],
			province: [66572],
			restrant: [65591, 65595, 65601, 65729, 65730, 65731, 65732, 65704, 66223, 66851],
			scenic: [65552, 65563, 65564, 65565, 65566, 65567, 65573, 65585, 65744, 66198, 66201, 66491, 66492, 66493, 66494, 66495, 66496, 66497, 66498, 66499, 66500, 66501, 66502, 66503, 66504, 66505, 66506, 66507, 66508, 66509, 66510, 66511, 66512, 66513, 66514, 66515, 66516, 66517, 66518, 66519, 66520, 66521, 66522, 66523, 66524, 66525, 66528, 66529, 66530, 66531, 66532, 66533, 66534, 66535, 66536, 66537, 66538, 66539, 66540, 66542, 66543, 66544, 66545, 66546, 66547, 66548, 66549, 66550, 66551, 66552, 66553, 66554, 66555, 66556, 66557, 66558, 66559, 66560, 66561, 66562, 66563],
			shopping: [65588, 65589, 65736, 65737, 66619],
			subwaygate: [65836, 65837, 65838, 65839, 65840, 65841, 65842, 65843, 65844, 65845, 65745, 65846, 65847, 65848, 65849, 65850, 65851, 65852, 65853, 65854, 65855, 65856, 65857, 65858, 65859, 65860, 65861, 65862, 65863, 65864, 65894, 66080, 66086, 66160, 66233, 66398, 66402, 66413, 66590, 66594, 66600, 66610, 66679, 66682, 66775, 66844],
			subwayline: [65936, 65937, 65938, 65939, 65940, 65941, 65942, 65943, 65944, 65945, 65946, 65947, 65948, 65949, 65950, 65951, 65952, 65953, 65954, 65955, 65956, 65957, 65958, 65959, 65960, 65961, 65962, 65963, 65964, 65965, 65966, 65967, 65968, 65969, 65970, 65971, 65972, 65973, 65974, 65975, 65976, 65978, 65979, 65980, 65981, 65982, 65983, 65984, 65985, 65986, 65987, 65988, 65989, 65990, 65991, 65992, 65993, 65994, 65995, 65996, 65997, 65998, 65999, 66e3, 66001, 66002, 66003, 66004, 66005, 66006, 66007, 66008, 66009, 66010, 66011, 66012, 66013, 66014, 66015, 66016, 66017, 66018, 66019, 66020, 66021, 66022, 66023, 66024, 66025, 66026, 66027, 66028, 66029, 66030, 66031, 66032, 66033, 66034, 66035, 66036, 66037, 66038, 66039, 66040, 66041, 66042, 66043, 66044, 66045, 66046, 66047, 66048, 66049, 66050, 66051, 66052, 66053, 66054, 66055, 66056, 66057, 66058, 66059, 66060, 66061, 66062, 66063, 66064, 66065, 66066, 66067, 66068, 66069, 66070, 66071, 66072, 66073, 66074, 66075, 66076, 66081, 66082, 66087, 66088, 66089, 66090, 66091, 66097, 66104, 66117, 66130, 66131, 66143, 66144, 66145, 66146, 66147, 66148, 66149, 66150, 66151, 66152, 66153, 66154, 66155, 66156, 66161, 66162, 66195, 66203, 66206, 66207, 66208, 66209, 66210, 66211, 66212, 66213, 66214, 66215, 66216, 66217, 66218, 66219, 66220, 66228, 66229, 66234, 66377, 66378, 66380, 66382, 66385, 66387, 66389, 66390, 66391, 66392, 66403, 66404, 66405, 66406, 66409, 66486, 66487, 66566, 66568, 66569, 66573, 66574, 66579, 66581, 66583, 66584, 66585, 66586, 66595, 66596, 66601, 66602, 66603, 66604, 66605, 66606, 66611, 66638, 66639, 66640, 66641, 66642, 66643, 66644, 66645, 66646, 66647, 66648, 66649, 66650, 66651, 66652, 66653, 66654, 66655, 66656, 66657, 66658, 66659, 66660, 66661, 66662, 66663, 66664, 66665, 66666, 66667, 66668, 66669, 66670, 66671, 66672, 66673, 66674, 66675, 66676, 66683, 66687, 66688, 66834, 66835, 66836, 66837, 66838, 66840, 66841, 66845, 66848],
			subwaystation: [65635, 65637, 65639, 65641, 65643, 65645, 65647, 65649, 65651, 65653, 65654, 65655, 65657, 65659, 65661, 65663, 65665, 65667, 65669, 65673, 65675, 65677, 65681, 65683, 65684, 65689, 65691, 65694, 65696, 65698, 65710, 66077, 66083, 66157, 66204, 66205, 66230, 66375, 66235, 66236, 66237, 66238, 66239, 66240, 66241, 66242, 66243, 66244, 66245, 66246, 66247, 66248, 66249, 66250, 66251, 66252, 66253, 66254, 66255, 66256, 66257, 66258, 66259, 66260, 66261, 66262, 66263, 66264, 66265, 66266, 66267, 66268, 66269, 66270, 66271, 66272, 66273, 66274, 66275, 66276, 66277, 66278, 66279, 66280, 66281, 66282, 66283, 66284, 66285, 66286, 66287, 66288, 66289, 66290, 66291, 66292, 66293, 66294, 66295, 66296, 66297, 66298, 66299, 66300, 66301, 66302, 66303, 66304, 66305, 66306, 66307, 66308, 66309, 66310, 66311, 66312, 66313, 66314, 66315, 66316, 66317, 66318, 66319, 66320, 66321, 66322, 66323, 66324, 66325, 66326, 66327, 66328, 66329, 66330, 66331, 66332, 66333, 66334, 66335, 66336, 66337, 66338, 66339, 66340, 66342, 66343, 66344, 66345, 66346, 66347, 66348, 66349, 66350, 66351, 66352, 66353, 66354, 66355, 66356, 66357, 66358, 66359, 66360, 66361, 66362, 66363, 66364, 66365, 66366, 66367, 66368, 66369, 66370, 66371, 66372, 66373, 66374, 66376, 66379, 66381, 66383, 66384, 66386, 66388, 66393, 66394, 66395, 66399, 66407, 66408, 66410, 66411, 66488, 66489, 66567, 66570, 66571, 66575, 66576, 66580, 66587, 66588, 66591, 66592, 66597, 66598, 66607, 66608, 66677, 66678, 66680, 66681, 66773, 66774, 66842, 66843],
			town: [65544],
			transport: [65560, 65570, 65572, 65576, 65605, 65609, 65610, 65611, 65614, 65615, 66093, 66094, 66095, 66121, 66122, 66225],
			village: [65545, 65551, 65580, 66578]
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		var n = (0, r.
	default)(t.getLat()),
		i = (0, r.
	default)(e.getLat());
		return 2 * Math.asin(Math.sqrt(Math.pow(Math.sin((n - i) / 2), 2) + Math.cos(n) * Math.cos(i) * Math.pow(Math.sin(((0, r.
	default)(t.getLng()) - (0, r.
	default)(e.getLng())) / 2), 2)))
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(124),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		return (0, a.
	default)(t, e) * (n || l.
	default)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(387),
	a = i(r),
	s = n(295),
	l = i(s);
	e.
default = o
},
,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(106),
	p = i(v),
	_ = n(337),
	m = i(_),
	g = n(28),
	y = n(43),
	x = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return n.onInit(t),
			n.dom = n.createDOM(),
			n.map = null,
			n.setMap(t.map),
			(0, y.statCn)("DOMOverlay"),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_addToMap",
			value: function() {
				this.map && (this.map._overlayer.childs.domOverlayLayer.appendChild(this.dom), this.updateDOM(), this._listener = (0, g.throttleWithFrame)(this.updateDOM.bind(this)), this.map.on("move", this._listener), this.map.on("resize", this._listener), this.map.on("offset_changed", this._listener), this._onMapdestroy = this._onMapdestroy.bind(this), this.map.on("destroy", this._onMapdestroy))
			}
		},
		{
			key: "_onMapdestroy",
			value: function() {
				this.setMap(null)
			}
		},
		{
			key: "_removeFromMap",
			value: function() {
				this.map && (this.dom.parentNode && this.dom.parentNode.removeChild(this.dom), this.map.off("move", this._listener), this.map.off("resize", this._listener), this.map.off("offset_changed", this._listener), this.map.off("destroy", this._onMapdestroy), this._listener = null)
			}
		},
		{
			key: "getMap",
			value: function() {
				return this.map
			}
		},
		{
			key: "setMap",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
				return this.map === t ? this: !t || t instanceof m.
			default ? (this._removeFromMap(), this.map = t, this._addToMap(), this) : (console.error("类型错误: map参数类型错误，应为TMap.Map。"), this)
			}
		},
		{
			key: "destroy",
			value: function() {
				return this.onDestroy(),
				this.setMap(null),
				this.removeAllListeners(),
				this
			}
		},
		{
			key: "onInit",
			value: function() {}
		},
		{
			key: "onDestroy",
			value: function() {}
		},
		{
			key: "createDOM",
			value: function() {
				return document.createElement("div")
			}
		},
		{
			key: "updateDOM",
			value: function() {}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(74),
	s = i(a),
	l = n(10),
	u = {
		color: "rgba(0, 0, 0, 1)",
		backgroundColor: "rgba(0, 0, 0, 0)",
		borderColor: "rgba(0, 0, 0, 0)",
		strokeColor: "rgba(0, 0, 0, 0)",
		borderWidth: 0,
		size: 14,
		scale: 1,
		borderRadius: 0,
		offset: new s.
	default(0, 0),
		angle: 0,
		alignment: "center",
		verticalAlignment: "middle"
	},
	c = function t() {
		var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, r.
	default)(this, t),
		e = (0, l.extend)({},
		u, e),
		this.color = e.color,
		this.backgroundColor = e.backgroundColor,
		this.borderColor = e.borderColor,
		this.borderWidth = e.borderWidth,
		this.strokeColor = e.strokeColor,
		this.size = e.size,
		this.width = e.width,
		this.height = e.height,
		this.padding = e.padding,
		this.borderRadius = e.borderRadius,
		this.scale = e.scale,
		this.offset = e.offset,
		this.angle = e.angle,
		this.alignment = e.alignment,
		this.verticalAlignment = e.verticalAlignment
	};
	e.
default = c
},
function(t, e, n) {
	"use strict";
	function i() {
		r.removeEventListener("DOMContentLoaded", i, !1),
		o.fireReady()
	}
	var o = [],
	r = document;
	o.isReady = !1,
	o._used = !1,
	o.ready = function(t) {
		o.initReady(),
		o.isReady ? t() : o.push(t)
	},
	o.initReady = function() {
		if (!o._used) {
			if (o._used = !0, "complete" === r.readyState || "interactive" === r.readyState) return o.fireReady();
			r.addEventListener("DOMContentLoaded", i, !1)
		}
	},
	o.fireReady = function() {
		if (!o.isReady) {
			if (!r.body) return setTimeout(o.fireReady, 16);
			if (o.isReady = !0, o.length) for (var t, e = 0; t = o[e]; e++) t()
		}
	},
	e.domReady = o.ready
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		if (!t.unprojectFromContainer(e)) return ! 1;
		var n = !0,
		i = t.renderEngine.camera.getFogEdge()[1] + .15;
		if (i < 1) {
			var o = (1 - i) * t.transform.height / 2;
			e.y < o && (n = !1)
		}
		return n
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isResponsible = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(211),
	m = i(_),
	g = n(110),
	y = n(139),
	x = n(112),
	b = n(219),
	S = n(10),
	w = i(S),
	E = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new g.Store("buffer", 128, 16, b.deleteInstanceCacllback),
			n.commonUniformList = ["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "uRelativeCenter"],
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				if (t && n) {
					var o = this.gl;
					o.useProgram(o.program),
					this.setUniforms(t, e, n, i);
					var r = this.setBuffers(t);
					o.drawElements(o.TRIANGLES, r.index.length, r.index.type, 0),
					o.bindBuffer(o.ARRAY_BUFFER, null),
					o.bindBuffer(o.ELEMENT_ARRAY_BUFFER, null)
				}
			}
		},
		{
			key: "setBuffers",
			value: function(t) {
				var e = this.gl,
				n = this.store,
				i = t.uid,
				o = !1;
				if (n) {
					n.exist(i) ? this.isBufferChanged(n.get(i), t) && (o = !0) : n.set(i, this.createBuffer(t));
					var r = n.get(i);
					return w.
				default.forIn(r,
					function(n, i) {
						var r = i.buffer,
						a = i.location,
						s = i.size,
						l = i.type;
						r.bind(),
						o && (r.bufferData(t[n], {
							usage: e.DYNAMIC_DRAW
						}), i.data = t[n]),
						"index" !== n && r.pointToAttrib({
							location: a,
							size: s,
							type: l
						})
					}),
					r
				}
			}
		},
		{
			key: "setUniforms",
			value: function(t, e, n, i) {
				var o = this.gl,
				r = e.center,
				a = e.zoom,
				s = 1 / (0, x.getSpatialResolution)(a),
				l = i.distanceScales || e.getDistanceScales(),
				u = (0, y.splitLatLngNumber)(r.lat),
				c = (0, y.splitLatLngNumber)(r.lng),
				f = {
					latPart: (0, y.splitLatLngNumber)(t.center.lat),
					lngPart: (0, y.splitLatLngNumber)(t.center.lng)
				};
				o.uniformMatrix4fv(this.uMatrix, !1, n.elements),
				o.uniform4f(this.uCenter, c.high, u.high, c.low, u.low),
				o.uniform1f(this.uZoom, a),
				o.uniform3f(this.uPixelsPerMeter, s, s, s),
				o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
				o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
				o.uniform2f(this.uResolution, e.width, e.height),
				o.uniform4f(this.uRelativeCenter, f.lngPart.high, f.latPart.high, f.lngPart.low, f.latPart.low)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.commonUniformList = null,
				(0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (m.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(513),
	f = i(c),
	d = new Float32Array([1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, -1, 1, 0, 1]),
	h = function() {
		function t(e) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, s.
		default)(this, t);
			var i = n.id,
			o = void 0 === i ? "pass": i;
			this.id = o,
			this.gl = e,
			this.props = {},
			(0, r.
		default)(this.props, n)
		}
		return (0, u.
	default)(t, [{
			key: "setProps",
			value: function(t) { (0, r.
			default)(this.props, t)
			}
		},
		{
			key: "render",
			value: function(t) {
				var e = t.inputBuffer,
				n = t.outputBuffer,
				i = t.preserve,
				o = void 0 !== i && i,
				r = t.colorIndex,
				a = void 0 === r ? 0 : r,
				s = this.gl;
				n ? n.bind(s) : s.frameBuffer && s.frameBuffer.unbind(),
				o || s.clear(s.COLOR_BUFFER_BIT | s.DEPTH_BUFFER_BIT | s.STENCIL_BUFFER_BIT),
				this._renderPass({
					inputBuffer: e,
					colorIndex: a
				})
			}
		},
		{
			key: "destroy",
			value: function() {
				this._onDestroy(),
				this._painter && this._painter.destroy(),
				this.id = null,
				this.gl = null,
				this.props = null
			}
		},
		{
			key: "_onDestroy",
			value: function() {}
		},
		{
			key: "_renderPass",
			value: function(t) {
				var e = t.inputBuffer,
				n = this.gl;
				this._painter || (this._painter = new f.
			default({
					gl:
					n
				})),
				e.color.bind(n),
				this._painter.preDraw(),
				this._painter.draw({
					matrix: {
						elements: d
					},
					size: {
						width: 2,
						height: 2
					},
					texInfo: {
						s: 0,
						t: 0,
						w: 1,
						h: 1
					},
					opacity: 1
				})
			}
		}]),
		t
	} ();
	e.
default = h
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return Math.pow(2, Math.ceil((0, r.
	default)(t)))
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(306),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.getPowerOf2 = i,
	e.
default = {
		extendCanvasToPow2: function(t, e) {
			function n(t) {
				if (t < 2) return ! 1;
				var e = (0, r.
			default)(t);
				return e === ~~e
			}
			return e = e || 1,
			t && t.isPow2 && 1 === e ? t: n(t.width) && n(t.height) && 1 === e ? (t.isPow2 = !0, t) : function(t, e) {
				var n = document.createElement("canvas"),
				o = n.getContext("2d");
				return n.width = i(t.width * e),
				n.height = i(t.height * e),
				o.drawImage(t, 0, 0, n.width, n.height),
				n.isPow2 = !0,
				n
			} (t, e)
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(475),
	u = i(l),
	c = n(247).
default,
	f = n(74),
	d = n(47),
	h = n(10),
	v = c[0],
	p = function() {
		function t() { (0, r.
		default)(this, t),
			this.a = new f(128, 128),
			this.b = 256 / 360,
			this.c = 256 / (2 * Math.PI),
			this.d = !0
		}
		return (0, s.
	default)(t, [{
			key: "fromLatLngToPoint",
			value: function(t) {
				var e = new f(0, 0),
				n = this.a;
				e.x = n.x + t.lng * this.b;
				var i = h.clamp(Math.sin(h.degreeToRadian(t.lat)), -(1 - 1e-15), 1 - 1e-15);
				return e.y = n.y + .5 * Math.log((1 + i) / (1 - i)) * -this.c,
				e.z = t.height * this.c / v * Math.cos(h.degreeToRadian(t.lat)),
				e
			}
		},
		{
			key: "fromPointToLatLng",
			value: function(t) {
				var e = this.a,
				n = h.radianToDegree(2 * Math.atan(Math.exp((t.y - e.y) / -this.c)) - Math.PI / 2),
				i = (t.x - e.x) / this.b,
				o = (t.z || 0) * v * Math.cos(h.degreeToRadian(n)) / this.c;
				return new d(n, i, o, !0)
			}
		},
		{
			key: "latLngToCoord",
			value: function(t, e) {
				var n = this.fromLatLngToPoint(t);
				if (n) {
					var i = e,
					o = Math.pow(2, i);
					n.x = n.x * o,
					n.y = n.y * o,
					n.z = n.z * o
				}
				return n
			}
		},
		{
			key: "coordToLatLng",
			value: function(t, e) {
				var n = e,
				i = Math.pow(2, n),
				o = new u.
			default(t.x / i, t.y / i, (t.z || 0) / i);
				return this.fromPointToLatLng(o)
			}
		}]),
		t
	} ();
	t.exports = p
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.HEX_REG = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,
	e.RGB_REG = /^rgb\((\d+,?\s*){3}\)$/,
	e.RGBA_REG = /^rgba\((\d+,?\s*){3},\s*[0-9.]+\)$/
},
function(t, e, n) {
	"use strict";
	function i(t, e, n) {
		return t * (1 - n) + e * n
	}
	function o(t, e) {
		t = a.
	default.wrap(t, 0, 360);
		var n = Math.abs(t, e);
		return Math.abs(t - 360 - e) < n && (t -= 360),
		Math.abs(t + 360 - e) < n && (t += 360),
		t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(10),
	a = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	i.number = i,
	i.vec2 = function(t, e, n) {
		return [i(t[0], e[0], n), i(t[1], e[1], n)]
	},
	i.color = function(t, e, n) {
		return [i(t[0], e[0], n), i(t[1], e[1], n), i(t[2], e[2], n), i(t[3], e[3], n)]
	},
	i.array = function(t, e, n) {
		return t.map(function(t, o) {
			return i(t, e[o], n)
		})
	},
	i.latlng = function(t, e, n) {
		return [i(t.getLat(), e.getLat(), n), i(t.getLng(), e.getLng(), n)]
	},
	i.rotation = function(t, e, n) {
		return e = o(e, t),
		i(t, e, n)
	},
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return r(o(a(t)))
	}
	function o(t) {
		return l(u(s(t), 8 * t.length))
	}
	function r(t) {
		for (var e, n = m ? "0123456789ABCDEF": "0123456789abcdef", i = "", o = 0; o < t.length; o++) e = t.charCodeAt(o),
		i += n.charAt(e >>> 4 & 15) + n.charAt(15 & e);
		return i
	}
	function a(t) {
		for (var e, n, i = "",
		o = -1; ++o < t.length;) e = t.charCodeAt(o),
		n = o + 1 < t.length ? t.charCodeAt(o + 1) : 0,
		55296 <= e && e <= 56319 && 56320 <= n && n <= 57343 && (e = 65536 + ((1023 & e) << 10) + (1023 & n), o++),
		e <= 127 ? i += String.fromCharCode(e) : e <= 2047 ? i += String.fromCharCode(192 | e >>> 6 & 31, 128 | 63 & e) : e <= 65535 ? i += String.fromCharCode(224 | e >>> 12 & 15, 128 | e >>> 6 & 63, 128 | 63 & e) : e <= 2097151 && (i += String.fromCharCode(240 | e >>> 18 & 7, 128 | e >>> 12 & 63, 128 | e >>> 6 & 63, 128 | 63 & e));
		return i
	}
	function s(t) {
		for (var e = Array(t.length >> 2), n = 0; n < e.length; n++) e[n] = 0;
		for (var n = 0; n < 8 * t.length; n += 8) e[n >> 5] |= (255 & t.charCodeAt(n / 8)) << n % 32;
		return e
	}
	function l(t) {
		for (var e = "",
		n = 0; n < 32 * t.length; n += 8) e += String.fromCharCode(t[n >> 5] >>> n % 32 & 255);
		return e
	}
	function u(t, e) {
		t[e >> 5] |= 128 << e % 32,
		t[14 + (e + 64 >>> 9 << 4)] = e;
		for (var n = 1732584193,
		i = -271733879,
		o = -1732584194,
		r = 271733878,
		a = 0; a < t.length; a += 16) {
			var s = n,
			l = i,
			u = o,
			c = r;
			n = f(n, i, o, r, t[a + 0], 7, -680876936),
			r = f(r, n, i, o, t[a + 1], 12, -389564586),
			o = f(o, r, n, i, t[a + 2], 17, 606105819),
			i = f(i, o, r, n, t[a + 3], 22, -1044525330),
			n = f(n, i, o, r, t[a + 4], 7, -176418897),
			r = f(r, n, i, o, t[a + 5], 12, 1200080426),
			o = f(o, r, n, i, t[a + 6], 17, -1473231341),
			i = f(i, o, r, n, t[a + 7], 22, -45705983),
			n = f(n, i, o, r, t[a + 8], 7, 1770035416),
			r = f(r, n, i, o, t[a + 9], 12, -1958414417),
			o = f(o, r, n, i, t[a + 10], 17, -42063),
			i = f(i, o, r, n, t[a + 11], 22, -1990404162),
			n = f(n, i, o, r, t[a + 12], 7, 1804603682),
			r = f(r, n, i, o, t[a + 13], 12, -40341101),
			o = f(o, r, n, i, t[a + 14], 17, -1502002290),
			i = f(i, o, r, n, t[a + 15], 22, 1236535329),
			n = d(n, i, o, r, t[a + 1], 5, -165796510),
			r = d(r, n, i, o, t[a + 6], 9, -1069501632),
			o = d(o, r, n, i, t[a + 11], 14, 643717713),
			i = d(i, o, r, n, t[a + 0], 20, -373897302),
			n = d(n, i, o, r, t[a + 5], 5, -701558691),
			r = d(r, n, i, o, t[a + 10], 9, 38016083),
			o = d(o, r, n, i, t[a + 15], 14, -660478335),
			i = d(i, o, r, n, t[a + 4], 20, -405537848),
			n = d(n, i, o, r, t[a + 9], 5, 568446438),
			r = d(r, n, i, o, t[a + 14], 9, -1019803690),
			o = d(o, r, n, i, t[a + 3], 14, -187363961),
			i = d(i, o, r, n, t[a + 8], 20, 1163531501),
			n = d(n, i, o, r, t[a + 13], 5, -1444681467),
			r = d(r, n, i, o, t[a + 2], 9, -51403784),
			o = d(o, r, n, i, t[a + 7], 14, 1735328473),
			i = d(i, o, r, n, t[a + 12], 20, -1926607734),
			n = h(n, i, o, r, t[a + 5], 4, -378558),
			r = h(r, n, i, o, t[a + 8], 11, -2022574463),
			o = h(o, r, n, i, t[a + 11], 16, 1839030562),
			i = h(i, o, r, n, t[a + 14], 23, -35309556),
			n = h(n, i, o, r, t[a + 1], 4, -1530992060),
			r = h(r, n, i, o, t[a + 4], 11, 1272893353),
			o = h(o, r, n, i, t[a + 7], 16, -155497632),
			i = h(i, o, r, n, t[a + 10], 23, -1094730640),
			n = h(n, i, o, r, t[a + 13], 4, 681279174),
			r = h(r, n, i, o, t[a + 0], 11, -358537222),
			o = h(o, r, n, i, t[a + 3], 16, -722521979),
			i = h(i, o, r, n, t[a + 6], 23, 76029189),
			n = h(n, i, o, r, t[a + 9], 4, -640364487),
			r = h(r, n, i, o, t[a + 12], 11, -421815835),
			o = h(o, r, n, i, t[a + 15], 16, 530742520),
			i = h(i, o, r, n, t[a + 2], 23, -995338651),
			n = v(n, i, o, r, t[a + 0], 6, -198630844),
			r = v(r, n, i, o, t[a + 7], 10, 1126891415),
			o = v(o, r, n, i, t[a + 14], 15, -1416354905),
			i = v(i, o, r, n, t[a + 5], 21, -57434055),
			n = v(n, i, o, r, t[a + 12], 6, 1700485571),
			r = v(r, n, i, o, t[a + 3], 10, -1894986606),
			o = v(o, r, n, i, t[a + 10], 15, -1051523),
			i = v(i, o, r, n, t[a + 1], 21, -2054922799),
			n = v(n, i, o, r, t[a + 8], 6, 1873313359),
			r = v(r, n, i, o, t[a + 15], 10, -30611744),
			o = v(o, r, n, i, t[a + 6], 15, -1560198380),
			i = v(i, o, r, n, t[a + 13], 21, 1309151649),
			n = v(n, i, o, r, t[a + 4], 6, -145523070),
			r = v(r, n, i, o, t[a + 11], 10, -1120210379),
			o = v(o, r, n, i, t[a + 2], 15, 718787259),
			i = v(i, o, r, n, t[a + 9], 21, -343485551),
			n = p(n, s),
			i = p(i, l),
			o = p(o, u),
			r = p(r, c)
		}
		return Array(n, i, o, r)
	}
	function c(t, e, n, i, o, r) {
		return p(_(p(p(e, t), p(i, r)), o), n)
	}
	function f(t, e, n, i, o, r, a) {
		return c(e & n | ~e & i, t, e, o, r, a)
	}
	function d(t, e, n, i, o, r, a) {
		return c(e & i | n & ~i, t, e, o, r, a)
	}
	function h(t, e, n, i, o, r, a) {
		return c(e ^ n ^ i, t, e, o, r, a)
	}
	function v(t, e, n, i, o, r, a) {
		return c(n ^ (e | ~i), t, e, o, r, a)
	}
	function p(t, e) {
		var n = (65535 & t) + (65535 & e);
		return (t >> 16) + (e >> 16) + (n >> 16) << 16 | 65535 & n
	}
	function _(t, e) {
		return t << e | t >>> 32 - e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var m = 0;
	e.
default = i
},
function(t, e, n) {
	t.exports = {
	default:
		n(410),
		__esModule: !0
	}
},
function(t, e, n) {
	var i = function() {
		return this
	} () || Function("return this")(),
	o = i.regeneratorRuntime && Object.getOwnPropertyNames(i).indexOf("regeneratorRuntime") >= 0,
	r = o && i.regeneratorRuntime;
	if (i.regeneratorRuntime = void 0, t.exports = n(403), o) i.regeneratorRuntime = r;
	else try {
		delete i.regeneratorRuntime
	} catch(t) {
		i.regeneratorRuntime = void 0
	}
},
function(t, e) { !
	function(e) {
		"use strict";
		function n(t, e, n, i) {
			var r = e && e.prototype instanceof o ? e: o,
			a = Object.create(r.prototype),
			s = new h(i || []);
			return a._invoke = u(t, n, s),
			a
		}
		function i(t, e, n) {
			try {
				return {
					type: "normal",
					arg: t.call(e, n)
				}
			} catch(t) {
				return {
					type: "throw",
					arg: t
				}
			}
		}
		function o() {}
		function r() {}
		function a() {}
		function s(t) { ["next", "throw", "return"].forEach(function(e) {
				t[e] = function(t) {
					return this._invoke(e, t)
				}
			})
		}
		function l(t) {
			function e(n, o, r, a) {
				var s = i(t[n], t, o);
				if ("throw" !== s.type) {
					var l = s.arg,
					u = l.value;
					return u && "object" == typeof u && g.call(u, "__await") ? Promise.resolve(u.__await).then(function(t) {
						e("next", t, r, a)
					},
					function(t) {
						e("throw", t, r, a)
					}) : Promise.resolve(u).then(function(t) {
						l.value = t,
						r(l)
					},
					a)
				}
				a(s.arg)
			}
			function n(t, n) {
				function i() {
					return new Promise(function(i, o) {
						e(t, n, i, o)
					})
				}
				return o = o ? o.then(i, i) : i()
			}
			var o;
			this._invoke = n
		}
		function u(t, e, n) {
			var o = T;
			return function(r, a) {
				if (o === P) throw new Error("Generator is already running");
				if (o === I) {
					if ("throw" === r) throw a;
					return p()
				}
				for (n.method = r, n.arg = a;;) {
					var s = n.delegate;
					if (s) {
						var l = c(s, n);
						if (l) {
							if (l === k) continue;
							return l
						}
					}
					if ("next" === n.method) n.sent = n._sent = n.arg;
					else if ("throw" === n.method) {
						if (o === T) throw o = I,
						n.arg;
						n.dispatchException(n.arg)
					} else "return" === n.method && n.abrupt("return", n.arg);
					o = P;
					var u = i(t, e, n);
					if ("normal" === u.type) {
						if (o = n.done ? I: A, u.arg === k) continue;
						return {
							value: u.arg,
							done: n.done
						}
					}
					"throw" === u.type && (o = I, n.method = "throw", n.arg = u.arg)
				}
			}
		}
		function c(t, e) {
			var n = t.iterator[e.method];
			if (n === _) {
				if (e.delegate = null, "throw" === e.method) {
					if (t.iterator.
					return && (e.method = "return", e.arg = _, c(t, e), "throw" === e.method)) return k;
					e.method = "throw",
					e.arg = new TypeError("The iterator does not provide a 'throw' method")
				}
				return k
			}
			var o = i(n, t.iterator, e.arg);
			if ("throw" === o.type) return e.method = "throw",
			e.arg = o.arg,
			e.delegate = null,
			k;
			var r = o.arg;
			return r ? r.done ? (e[t.resultName] = r.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = _), e.delegate = null, k) : r: (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, k)
		}
		function f(t) {
			var e = {
				tryLoc: t[0]
			};
			1 in t && (e.catchLoc = t[1]),
			2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]),
			this.tryEntries.push(e)
		}
		function d(t) {
			var e = t.completion || {};
			e.type = "normal",
			delete e.arg,
			t.completion = e
		}
		function h(t) {
			this.tryEntries = [{
				tryLoc: "root"
			}],
			t.forEach(f, this),
			this.reset(!0)
		}
		function v(t) {
			if (t) {
				var e = t[x];
				if (e) return e.call(t);
				if ("function" == typeof t.next) return t;
				if (!isNaN(t.length)) {
					var n = -1,
					i = function e() {
						for (; ++n < t.length;) if (g.call(t, n)) return e.value = t[n],
						e.done = !1,
						e;
						return e.value = _,
						e.done = !0,
						e
					};
					return i.next = i
				}
			}
			return {
				next: p
			}
		}
		function p() {
			return {
				value: _,
				done: !0
			}
		}
		var _, m = Object.prototype,
		g = m.hasOwnProperty,
		y = "function" == typeof Symbol ? Symbol: {},
		x = y.iterator || "@@iterator",
		b = y.asyncIterator || "@@asyncIterator",
		S = y.toStringTag || "@@toStringTag",
		w = "object" == typeof t,
		E = e.regeneratorRuntime;
		if (E) return void(w && (t.exports = E));
		E = e.regeneratorRuntime = w ? t.exports: {},
		E.wrap = n;
		var T = "suspendedStart",
		A = "suspendedYield",
		P = "executing",
		I = "completed",
		k = {},
		L = {};
		L[x] = function() {
			return this
		};
		var M = Object.getPrototypeOf,
		C = M && M(M(v([])));
		C && C !== m && g.call(C, x) && (L = C);
		var R = a.prototype = o.prototype = Object.create(L);
		r.prototype = R.constructor = a,
		a.constructor = r,
		a[S] = r.displayName = "GeneratorFunction",
		E.isGeneratorFunction = function(t) {
			var e = "function" == typeof t && t.constructor;
			return !! e && (e === r || "GeneratorFunction" === (e.displayName || e.name))
		},
		E.mark = function(t) {
			return Object.setPrototypeOf ? Object.setPrototypeOf(t, a) : (t.__proto__ = a, S in t || (t[S] = "GeneratorFunction")),
			t.prototype = Object.create(R),
			t
		},
		E.awrap = function(t) {
			return {
				__await: t
			}
		},
		s(l.prototype),
		l.prototype[b] = function() {
			return this
		},
		E.AsyncIterator = l,
		E.async = function(t, e, i, o) {
			var r = new l(n(t, e, i, o));
			return E.isGeneratorFunction(e) ? r: r.next().then(function(t) {
				return t.done ? t.value: r.next()
			})
		},
		s(R),
		R[S] = "Generator",
		R[x] = function() {
			return this
		},
		R.toString = function() {
			return "[object Generator]"
		},
		E.keys = function(t) {
			var e = [];
			for (var n in t) e.push(n);
			return e.reverse(),
			function n() {
				for (; e.length;) {
					var i = e.pop();
					if (i in t) return n.value = i,
					n.done = !1,
					n
				}
				return n.done = !0,
				n
			}
		},
		E.values = v,
		h.prototype = {
			constructor: h,
			reset: function(t) {
				if (this.prev = 0, this.next = 0, this.sent = this._sent = _, this.done = !1, this.delegate = null, this.method = "next", this.arg = _, this.tryEntries.forEach(d), !t) for (var e in this)"t" === e.charAt(0) && g.call(this, e) && !isNaN( + e.slice(1)) && (this[e] = _)
			},
			stop: function() {
				this.done = !0;
				var t = this.tryEntries[0],
				e = t.completion;
				if ("throw" === e.type) throw e.arg;
				return this.rval
			},
			dispatchException: function(t) {
				function e(e, i) {
					return r.type = "throw",
					r.arg = t,
					n.next = e,
					i && (n.method = "next", n.arg = _),
					!!i
				}
				if (this.done) throw t;
				for (var n = this,
				i = this.tryEntries.length - 1; i >= 0; --i) {
					var o = this.tryEntries[i],
					r = o.completion;
					if ("root" === o.tryLoc) return e("end");
					if (o.tryLoc <= this.prev) {
						var a = g.call(o, "catchLoc"),
						s = g.call(o, "finallyLoc");
						if (a && s) {
							if (this.prev < o.catchLoc) return e(o.catchLoc, !0);
							if (this.prev < o.finallyLoc) return e(o.finallyLoc)
						} else if (a) {
							if (this.prev < o.catchLoc) return e(o.catchLoc, !0)
						} else {
							if (!s) throw new Error("try statement without catch or finally");
							if (this.prev < o.finallyLoc) return e(o.finallyLoc)
						}
					}
				}
			},
			abrupt: function(t, e) {
				for (var n = this.tryEntries.length - 1; n >= 0; --n) {
					var i = this.tryEntries[n];
					if (i.tryLoc <= this.prev && g.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
						var o = i;
						break
					}
				}
				o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
				var r = o ? o.completion: {};
				return r.type = t,
				r.arg = e,
				o ? (this.method = "next", this.next = o.finallyLoc, k) : this.complete(r)
			},
			complete: function(t, e) {
				if ("throw" === t.type) throw t.arg;
				return "break" === t.type || "continue" === t.type ? this.next = t.arg: "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e),
				k
			},
			finish: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc),
					d(n),
					k
				}
			},
			catch: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.tryLoc === t) {
						var i = n.completion;
						if ("throw" === i.type) {
							var o = i.arg;
							d(n)
						}
						return o
					}
				}
				throw new Error("illegal catch attempt")
			},
			delegateYield: function(t, e, n) {
				return this.delegate = {
					iterator: v(t),
					resultName: e,
					nextLoc: n
				},
				"next" === this.method && (this.arg = _),
				k
			}
		}
	} (function() {
		return this
	} () || Function("return this")())
},
, , , , ,
function(t, e, n) {
	var i = n(2),
	o = i.JSON || (i.JSON = {
		stringify: JSON.stringify
	});
	t.exports = function(t) {
		return o.stringify.apply(o, arguments)
	}
},
function(t, e, n) {
	n(414),
	t.exports = n(2).Math.fround
},
function(t, e, n) {
	n(415),
	t.exports = n(2).Number.isFinite
},
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(416),
	n(419),
	n(418),
	n(417),
	t.exports = n(2).Set
},
function(t, e, n) {
	var i = n(313),
	o = Math.pow,
	r = o(2, -52),
	a = o(2, -23),
	s = o(2, 127) * (2 - a),
	l = o(2, -126),
	u = function(t) {
		return t + 1 / r - 1 / r
	};
	t.exports = Math.fround ||
	function(t) {
		var e, n, o = Math.abs(t),
		c = i(t);
		return o < l ? c * u(o / l / a) * l * a: (e = (1 + a / r) * o, n = e - (e - o), n > s || n != n ? c * (1 / 0) : c * n)
	}
},
function(t, e, n) {
	var i = n(6);
	i(i.S, "Math", {
		fround: n(413)
	})
},
function(t, e, n) {
	var i = n(6),
	o = n(8).isFinite;
	i(i.S, "Number", {
		isFinite: function(t) {
			return "number" == typeof t && o(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(260),
	o = n(183);
	t.exports = n(250)("Set",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		add: function(t) {
			return i.def(o(this, "Set"), t = 0 === t ? 0 : t, t)
		}
	},
	i)
},
function(t, e, n) {
	n(251)("Set")
},
function(t, e, n) {
	n(252)("Set")
},
function(t, e, n) {
	var i = n(6);
	i(i.P + i.R, "Set", {
		toJSON: n(261)("Set")
	})
},
function(t, e, n) {
	"use strict";
	var i = n(436)(!0);
	t.exports = function(t, e, n) {
		return e + (n ? i(t, e).length: 1)
	}
},
function(t, e, n) {
	"use strict";
	var i = n(136),
	o = n(269),
	r = n(88);
	t.exports = function(t) {
		for (var e = i(this), n = r(e.length), a = arguments.length, s = o(a > 1 ? arguments[1] : void 0, n), l = a > 2 ? arguments[2] : void 0, u = void 0 === l ? n: o(l, n); u > s;) e[s++] = t;
		return e
	}
},
function(t, e, n) {
	"use strict";
	var i = n(104),
	o = n(268);
	t.exports = function(t, e, n) {
		e in t ? i.f(t, e, o(0, n)) : t[e] = n
	}
},
function(t, e, n) {
	var i = n(63),
	o = n(62).document,
	r = i(o) && i(o.createElement);
	t.exports = function(t) {
		return r ? o.createElement(t) : {}
	}
},
function(t, e) {
	t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
},
function(t, e, n) {
	var i = n(78)("match");
	t.exports = function(t) {
		var e = /./;
		try {
			"/./" [t](e)
		} catch(n) {
			try {
				return e[i] = !1,
				!"/./" [t](e)
			} catch(t) {}
		}
		return ! 0
	}
},
function(t, e, n) {
	var i = n(62).document;
	t.exports = i && i.documentElement
},
function(t, e, n) {
	var i = n(63),
	o = n(434).set;
	t.exports = function(t, e, n) {
		var r, a = e.constructor;
		return a !== n && "function" == typeof a && (r = a.prototype) !== n.prototype && i(r) && o && o(t, r),
		t
	}
},
function(t, e, n) {
	var i = n(285),
	o = n(78)("iterator"),
	r = Array.prototype;
	t.exports = function(t) {
		return void 0 !== t && (i.Array === t || r[o] === t)
	}
},
function(t, e, n) {
	var i = n(63),
	o = n(244),
	r = n(78)("match");
	t.exports = function(t) {
		var e;
		return i(t) && (void 0 !== (e = t[r]) ? !!e: "RegExp" == o(t))
	}
},
function(t, e, n) {
	"use strict";
	var i = n(263),
	o = n(11),
	r = n(206),
	a = n(215),
	s = n(285),
	l = n(530),
	u = n(288),
	c = n(266),
	f = n(78)("iterator"),
	d = !([].keys && "next" in [].keys()),
	h = function() {
		return this
	};
	t.exports = function(t, e, n, v, p, _, m) {
		l(n, e, v);
		var g, y, x, b = function(t) {
			if (!d && t in T) return T[t];
			switch (t) {
			case "keys":
			case "values":
				return function() {
					return new n(this, t)
				}
			}
			return function() {
				return new n(this, t)
			}
		},
		S = e + " Iterator",
		w = "values" == p,
		E = !1,
		T = t.prototype,
		A = T[f] || T["@@iterator"] || p && T[p],
		P = A || b(p),
		I = p ? w ? b("entries") : P: void 0,
		k = "Array" == e ? T.entries || A: A;
		if (k && (x = c(k.call(new t))) !== Object.prototype && x.next && (u(x, S, !0), i || "function" == typeof x[f] || a(x, f, h)), w && A && "values" !== A.name && (E = !0, P = function() {
			return A.call(this)
		}), i && !m || !d && !E && T[f] || a(T, f, P), s[e] = P, s[S] = h, p) if (g = {
			values: w ? P: b("values"),
			keys: _ ? P: b("keys"),
			entries: I
		},
		m) for (y in g) y in T || r(T, y, g[y]);
		else o(o.P + o.F * (d || E), e, g);
		return g
	}
},
function(t, e) {
	var n = Math.expm1;
	t.exports = !n || n(10) > 22025.465794806718 || n(10) < 22025.465794806718 || -2e-17 != n( - 2e-17) ?
	function(t) {
		return 0 == (t = +t) ? t: t > -1e-6 && t < 1e-6 ? t + t * t / 2 : Math.exp(t) - 1
	}: n
},
function(t, e) {
	t.exports = Math.sign ||
	function(t) {
		return 0 == (t = +t) || t != t ? t: t < 0 ? -1 : 1
	}
},
function(t, e, n) {
	"use strict";
	var i = n(347),
	o = RegExp.prototype.exec,
	r = String.prototype.replace,
	a = o,
	s = function() {
		var t = /a/,
		e = /b*/g;
		return o.call(t, "a"),
		o.call(e, "a"),
		0 !== t.lastIndex || 0 !== e.lastIndex
	} (),
	l = void 0 !== /()??/.exec("")[1]; (s || l) && (a = function(t) {
		var e, n, a, u, c = this;
		return l && (n = new RegExp("^" + c.source + "$(?!\\s)", i.call(c))),
		s && (e = c.lastIndex),
		a = o.call(c, t),
		s && a && (c.lastIndex = c.global ? a.index + a[0].length: e),
		l && a && a.length > 1 && r.call(a[0], n,
		function() {
			for (u = 1; u < arguments.length - 2; u++) void 0 === arguments[u] && (a[u] = void 0)
		}),
		a
	}),
	t.exports = a
},
function(t, e, n) {
	var i = n(63),
	o = n(60),
	r = function(t, e) {
		if (o(t), !i(e) && null !== e) throw TypeError(e + ": can't set as prototype!")
	};
	t.exports = {
		set: Object.setPrototypeOf || ("__proto__" in {} ?
		function(t, e, i) {
			try {
				i = n(231)(Function.call, n(232).f(Object.prototype, "__proto__").set, 2),
				i(t, []),
				e = !(t instanceof Array)
			} catch(t) {
				e = !0
			}
			return function(t, n) {
				return r(t, n),
				e ? t.__proto__ = n: i(t, n),
				t
			}
		} ({},
		!1) : void 0),
		check: r
	}
},
function(t, e, n) {
	var i = n(353)("keys"),
	o = n(270);
	t.exports = function(t) {
		return i[t] || (i[t] = o(t))
	}
},
function(t, e, n) {
	var i = n(234),
	o = n(245);
	t.exports = function(t) {
		return function(e, n) {
			var r, a, s = String(o(e)),
			l = i(n),
			u = s.length;
			return l < 0 || l >= u ? t ? "": void 0 : (r = s.charCodeAt(l), r < 55296 || r > 56319 || l + 1 === u || (a = s.charCodeAt(l + 1)) < 56320 || a > 57343 ? t ? s.charAt(l) : r: t ? s.slice(l, l + 2) : a - 56320 + (r - 55296 << 10) + 65536)
		}
	}
},
function(t, e, n) {
	var i = n(429),
	o = n(245);
	t.exports = function(t, e, n) {
		if (i(e)) throw TypeError("String#" + n + " doesn't accept regex!");
		return String(o(t))
	}
},
function(t, e, n) {
	"use strict";
	var i = n(234),
	o = n(245);
	t.exports = function(t) {
		var e = String(o(this)),
		n = "",
		r = i(t);
		if (r < 0 || r == 1 / 0) throw RangeError("Count can't be negative");
		for (; r > 0; (r >>>= 1) && (e += e)) 1 & r && (n += e);
		return n
	}
},
function(t, e) {
	t.exports = "\t\n\v\f\r   ᠎             　\u2028\u2029\ufeff"
},
function(t, e, n) {
	var i, o, r, a = n(231),
	s = n(527),
	l = n(426),
	u = n(423),
	c = n(62),
	f = c.process,
	d = c.setImmediate,
	h = c.clearImmediate,
	v = c.MessageChannel,
	p = c.Dispatch,
	_ = 0,
	m = {},
	g = function() {
		var t = +this;
		if (m.hasOwnProperty(t)) {
			var e = m[t];
			delete m[t],
			e()
		}
	},
	y = function(t) {
		g.call(t.data)
	};
	d && h || (d = function(t) {
		for (var e = [], n = 1; arguments.length > n;) e.push(arguments[n++]);
		return m[++_] = function() {
			s("function" == typeof t ? t: Function(t), e)
		},
		i(_),
		_
	},
	h = function(t) {
		delete m[t]
	},
	"process" == n(244)(f) ? i = function(t) {
		f.nextTick(a(g, t, 1))
	}: p && p.now ? i = function(t) {
		p.now(a(g, t, 1))
	}: v ? (o = new v, r = o.port2, o.port1.onmessage = y, i = a(r.postMessage, r, 1)) : c.addEventListener && "function" == typeof postMessage && !c.importScripts ? (i = function(t) {
		c.postMessage(t + "", "*")
	},
	c.addEventListener("message", y, !1)) : i = "onreadystatechange" in u("script") ?
	function(t) {
		l.appendChild(u("script")).onreadystatechange = function() {
			l.removeChild(this),
			g.call(t)
		}
	}: function(t) {
		setTimeout(a(g, t, 1), 0)
	}),
	t.exports = {
		set: d,
		clear: h
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e, n) {
		var i, o, r, a = new Array(n),
		s = 8 * n - e - 1,
		l = (1 << s) - 1,
		u = l >> 1,
		c = 23 === e ? z(2, -24) - z(2, -77) : 0,
		f = 0,
		d = t < 0 || 0 === t && 1 / t < 0 ? 1 : 0;
		for (t = D(t), t != t || t === N ? (o = t != t ? 1 : 0, i = l) : (i = F(V(t) / Y), t * (r = z(2, -i)) < 1 && (i--, r *= 2), t += i + u >= 1 ? c / r: c * z(2, 1 - u), t * r >= 2 && (i++, r /= 2), i + u >= l ? (o = 0, i = l) : i + u >= 1 ? (o = (t * r - 1) * z(2, e), i += u) : (o = t * z(2, u - 1) * z(2, e), i = 0)); e >= 8; a[f++] = 255 & o, o /= 256, e -= 8);
		for (i = i << e | o, s += e; s > 0; a[f++] = 255 & i, i /= 256, s -= 8);
		return a[--f] |= 128 * d,
		a
	}
	function o(t, e, n) {
		var i, o = 8 * n - e - 1,
		r = (1 << o) - 1,
		a = r >> 1,
		s = o - 7,
		l = n - 1,
		u = t[l--],
		c = 127 & u;
		for (u >>= 7; s > 0; c = 256 * c + t[l], l--, s -= 8);
		for (i = c & (1 << -s) - 1, c >>= -s, s += e; s > 0; i = 256 * i + t[l], l--, s -= 8);
		if (0 === c) c = 1 - a;
		else {
			if (c === r) return i ? NaN: u ? -N: N;
			i += z(2, e),
			c -= a
		}
		return (u ? -1 : 1) * i * z(2, c - e)
	}
	function r(t) {
		return t[3] << 24 | t[2] << 16 | t[1] << 8 | t[0]
	}
	function a(t) {
		return [255 & t]
	}
	function s(t) {
		return [255 & t, t >> 8 & 255]
	}
	function l(t) {
		return [255 & t, t >> 8 & 255, t >> 16 & 255, t >> 24 & 255]
	}
	function u(t) {
		return i(t, 52, 8)
	}
	function c(t) {
		return i(t, 23, 4)
	}
	function f(t, e, n) {
		A(t[k], e, {
			get: function() {
				return this[n]
			}
		})
	}
	function d(t, e, n, i) {
		var o = +n,
		r = E(o);
		if (r + e > t[j]) throw B(L);
		var a = t[U]._b,
		s = r + t[G],
		l = a.slice(s, s + e);
		return i ? l: l.reverse()
	}
	function h(t, e, n, i, o, r) {
		var a = +n,
		s = E(a);
		if (s + e > t[j]) throw B(L);
		for (var l = t[U]._b, u = s + t[G], c = i( + o), f = 0; f < e; f++) l[u + f] = c[r ? f: e - f - 1]
	}
	var v = n(62),
	p = n(103),
	_ = n(263),
	m = n(354),
	g = n(215),
	y = n(286),
	x = n(61),
	b = n(284),
	S = n(234),
	w = n(88),
	E = n(545),
	T = n(265).f,
	A = n(104).f,
	P = n(421),
	I = n(288),
	k = "prototype",
	L = "Wrong index!",
	M = v.ArrayBuffer,
	C = v.DataView,
	R = v.Math,
	B = v.RangeError,
	N = v.Infinity,
	O = M,
	D = R.abs,
	z = R.pow,
	F = R.floor,
	V = R.log,
	Y = R.LN2,
	U = p ? "_b": "buffer",
	j = p ? "_l": "byteLength",
	G = p ? "_o": "byteOffset";
	if (m.ABV) {
		if (!x(function() {
			M(1)
		}) || !x(function() {
			new M( - 1)
		}) || x(function() {
			return new M,
			new M(1.5),
			new M(NaN),
			"ArrayBuffer" != M.name
		})) {
			M = function(t) {
				return b(this, M),
				new O(E(t))
			};
			for (var Z, H = M[k] = O[k], W = T(O), X = 0; W.length > X;)(Z = W[X++]) in M || g(M, Z, O[Z]);
			_ || (H.constructor = M)
		}
		var Q = new C(new M(2)),
		q = C[k].setInt8;
		Q.setInt8(0, 2147483648),
		Q.setInt8(1, 2147483649),
		!Q.getInt8(0) && Q.getInt8(1) || y(C[k], {
			setInt8: function(t, e) {
				q.call(this, t, e << 24 >> 24)
			},
			setUint8: function(t, e) {
				q.call(this, t, e << 24 >> 24)
			}
		},
		!0)
	} else M = function(t) {
		b(this, M, "ArrayBuffer");
		var e = E(t);
		this._b = P.call(new Array(e), 0),
		this[j] = e
	},
	C = function(t, e, n) {
		b(this, C, "DataView"),
		b(t, M, "DataView");
		var i = t[j],
		o = S(e);
		if (o < 0 || o > i) throw B("Wrong offset!");
		if (n = void 0 === n ? i - o: w(n), o + n > i) throw B("Wrong length!");
		this[U] = t,
		this[G] = o,
		this[j] = n
	},
	p && (f(M, "byteLength", "_l"), f(C, "buffer", "_b"), f(C, "byteLength", "_l"), f(C, "byteOffset", "_o")),
	y(C[k], {
		getInt8: function(t) {
			return d(this, 1, t)[0] << 24 >> 24
		},
		getUint8: function(t) {
			return d(this, 1, t)[0]
		},
		getInt16: function(t) {
			var e = d(this, 2, t, arguments[1]);
			return (e[1] << 8 | e[0]) << 16 >> 16
		},
		getUint16: function(t) {
			var e = d(this, 2, t, arguments[1]);
			return e[1] << 8 | e[0]
		},
		getInt32: function(t) {
			return r(d(this, 4, t, arguments[1]))
		},
		getUint32: function(t) {
			return r(d(this, 4, t, arguments[1])) >>> 0
		},
		getFloat32: function(t) {
			return o(d(this, 4, t, arguments[1]), 23, 4)
		},
		getFloat64: function(t) {
			return o(d(this, 8, t, arguments[1]), 52, 8)
		},
		setInt8: function(t, e) {
			h(this, 1, t, a, e)
		},
		setUint8: function(t, e) {
			h(this, 1, t, a, e)
		},
		setInt16: function(t, e) {
			h(this, 2, t, s, e, arguments[2])
		},
		setUint16: function(t, e) {
			h(this, 2, t, s, e, arguments[2])
		},
		setInt32: function(t, e) {
			h(this, 4, t, l, e, arguments[2])
		},
		setUint32: function(t, e) {
			h(this, 4, t, l, e, arguments[2])
		},
		setFloat32: function(t, e) {
			h(this, 4, t, c, e, arguments[2])
		},
		setFloat64: function(t, e) {
			h(this, 8, t, u, e, arguments[2])
		}
	});
	I(M, "ArrayBuffer"),
	I(C, "DataView"),
	g(C[k], m.VIEW, !0),
	e.ArrayBuffer = M,
	e.DataView = C
},
function(t, e, n) {
	e.f = n(78)
},
function(t, e, n) {
	var i = n(320),
	o = n(78)("iterator"),
	r = n(285);
	t.exports = n(102).getIteratorMethod = function(t) {
		if (void 0 != t) return t[o] || t["@@iterator"] || r[i(t)]
	}
},
function(t, e, n) {
	"use strict";
	var i = n(262),
	o = n(531),
	r = n(285),
	a = n(216);
	t.exports = n(430)(Array, "Array",
	function(t, e) {
		this._t = a(t),
		this._i = 0,
		this._k = e
	},
	function() {
		var t = this._t,
		e = this._k,
		n = this._i++;
		return ! t || n >= t.length ? (this._t = void 0, o(1)) : "keys" == e ? o(0, n) : "values" == e ? o(0, t[n]) : o(0, [n, t[n]])
	},
	"values"),
	r.Arguments = r.Array,
	i("keys"),
	i("values"),
	i("entries")
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) { !
		function() {
			var e = t,
			n = e.lib,
			i = n.Base,
			o = e.enc,
			r = o.Utf8,
			a = e.algo;
			a.HMAC = i.extend({
				init: function(t, e) {
					t = this._hasher = new t.init,
					"string" == typeof e && (e = r.parse(e));
					var n = t.blockSize,
					i = 4 * n;
					e.sigBytes > i && (e = t.finalize(e)),
					e.clamp();
					for (var o = this._oKey = e.clone(), a = this._iKey = e.clone(), s = o.words, l = a.words, u = 0; u < n; u++) s[u] ^= 1549556828,
					l[u] ^= 909522486;
					o.sigBytes = a.sigBytes = i,
					this.reset()
				},
				reset: function() {
					var t = this._hasher;
					t.reset(),
					t.update(this._iKey)
				},
				update: function(t) {
					return this._hasher.update(t),
					this
				},
				finalize: function(t) {
					var e = this._hasher,
					n = e.finalize(t);
					return e.reset(),
					e.finalize(this._oKey.clone().concat(n))
				}
			})
		} ()
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.lib,
			i = n.WordArray,
			o = n.Hasher,
			r = e.algo,
			a = [],
			s = r.SHA1 = o.extend({
				_doReset: function() {
					this._hash = new i.init([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
				},
				_doProcessBlock: function(t, e) {
					for (var n = this._hash.words,
					i = n[0], o = n[1], r = n[2], s = n[3], l = n[4], u = 0; u < 80; u++) {
						if (u < 16) a[u] = 0 | t[e + u];
						else {
							var c = a[u - 3] ^ a[u - 8] ^ a[u - 14] ^ a[u - 16];
							a[u] = c << 1 | c >>> 31
						}
						var f = (i << 5 | i >>> 27) + l + a[u];
						f += u < 20 ? 1518500249 + (o & r | ~o & s) : u < 40 ? 1859775393 + (o ^ r ^ s) : u < 60 ? (o & r | o & s | r & s) - 1894007588 : (o ^ r ^ s) - 899497514,
						l = s,
						s = r,
						r = o << 30 | o >>> 2,
						o = i,
						i = f
					}
					n[0] = n[0] + i | 0,
					n[1] = n[1] + o | 0,
					n[2] = n[2] + r | 0,
					n[3] = n[3] + s | 0,
					n[4] = n[4] + l | 0
				},
				_doFinalize: function() {
					var t = this._data,
					e = t.words,
					n = 8 * this._nDataBytes,
					i = 8 * t.sigBytes;
					return e[i >>> 5] |= 128 << 24 - i % 32,
					e[14 + (i + 64 >>> 9 << 4)] = Math.floor(n / 4294967296),
					e[15 + (i + 64 >>> 9 << 4)] = n,
					t.sigBytes = 4 * e.length,
					this._process(),
					this._hash
				},
				clone: function() {
					var t = o.clone.call(this);
					return t._hash = this._hash.clone(),
					t
				}
			});
			e.SHA1 = o._createHelper(s),
			e.HmacSHA1 = o._createHmacHelper(s)
		} (),
		t.SHA1
	})
},
, , , ,
function(t, e, n) {
	"use strict";
	t.exports = {
		2 : "need dictionary",
		1 : "stream end",
		0 : "",
		"-1": "file error",
		"-2": "stream error",
		"-3": "data error",
		"-4": "insufficient memory",
		"-5": "buffer error",
		"-6": "incompatible version"
	}
},
, , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		if (t && e) return e.y - t.y <= x && e.x - t.x <= x
	}
	var r = n(27),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(742),
	d = i(f),
	h = n(210),
	v = n(74),
	p = n(106),
	_ = n(28),
	m = n(10),
	g = m.forIn,
	y = {
		scrollZoom: n(744),
		touchZoomRotate: n(746),
		touchTilt: n(745),
		doubleClickZoom: n(739),
		dragRotate: n(741),
		dragPan: n(740),
		longPress: n(743)
	},
	x = 10,
	b = function() {
		function t(e, n) { (0, l.
		default)(this, t),
			e.handler || (this.members = [e], this.map = e, this.eventHandlers = [], this.eventHandlers.push(_.on(window, "resize", this.onWindowResize.bind(this))), this.el = e.getContainer(), this.rl = e.getRenderContainer(), this.transform = e.transform, this.controlManager = e.controlManager, this.idleHandler = new d.
		default(this.transform), this.contextMenuEvent = null, this.mouseDown = !1, this.startPos = null, this.startTouchPoints = null, this.tapped = null, g(y,
			function(t, i) {
				e[t] = new i(e, n),
				n && n.disInteractive || e[t].enable()
			}), this.eventHandlers.push(_.on(this.controlManager, {
				control_added: function(t) {
					e._fire("control_added", t, !0)
				},
				control_removed: function(t) {
					e._fire("control_removed", t, !0)
				}
			})), this.eventHandlers.push(_.on(this.idleHandler, "idle",
			function() {
				e._fire("idle", null, !0)
			})), this.eventHandlers.push(_.on(e.canvasContainer, {
				webglcontextlost: e._onContextError.bind(e, "lost"),
				webglcontaxtrestored: e._onContextError.bind(e, "restored")
			})), this.eventHandlers.push(_.on(this.el, {
				mouseout: this.onMouseOut.bind(this),
				mousedown: this.onMouseDown.bind(this),
				mouseup: this.onMouseUp.bind(this),
				mousemove: this.onMouseMove.bind(this),
				touchstart: this.onTouchStart.bind(this),
				touchend: this.onTouchEnd.bind(this),
				touchmove: this.onTouchMove.bind(this),
				touchcancel: this.onTouchCancel.bind(this),
				click: this.onClick.bind(this),
				dblclick: this.onDblClick.bind(this),
				contextmenu: this.onContextMenu.bind(this)
			})))
		}
		return (0, c.
	default)(t, [{
			key: "destroy",
			value: function() {
				var t = this;
				g(y,
				function(e) {
					t.map[e] && (t.map[e].disable(), delete t.map[e])
				}),
				this.eventHandlers.forEach(function(t) {
					t && t.remove && t.remove()
				}),
				this.members = null,
				this.map = null,
				this.eventHandlers = [],
				this.el = null,
				this.rl = null,
				this.transform = null,
				this.idleHandler = null,
				this.contextMenuEvent = null,
				this.mouseDown = !1,
				this.startPos = null,
				this.tapped = null
			}
		},
		{
			key: "onWindowResize",
			value: function() {
				var t = this.rl.clientWidth,
				e = this.rl.clientHeight;
				this.map.resize(t, e)
			}
		},
		{
			key: "onMouseOut",
			value: function(t) {
				this.fireMouseEvent("mouseout", t)
			}
		},
		{
			key: "onMouseDown",
			value: function(t) {
				this.map.stopMoving(),
				this.startPos = h.mousePos(this.el, t),
				this.fireMouseEvent("mousedown", t),
				this.mouseDown = !0
			}
		},
		{
			key: "onMouseUp",
			value: function(t) {
				if (this.contextMenuEvent && !this.rotating && this.fireMouseEvent("contextmenu", this.contextMenuEvent), this.contextMenuEvent = null, this.mouseDown = !1, this.fireMouseEvent("mouseup", t), t && 2 === t.button) {
					var e = h.mousePos(this.el, t);
					this.startPos && e.equals(this.startPos) && this.fireMouseEvent("rightclick", t)
				}
			}
		},
		{
			key: "onMouseMove",
			value: function(t) {
			
				if (! (this.map.dragPan && this.map.dragPan.isActive() || this.map.dragRotate && this.map.dragRotate.isActive())) {
					for (var e = t.toElement || t.target; e && e !== this.el;) e = e.parentNode;
					e === this.el && this.fireMouseEvent("mousemove", t)
				}
			}
		},
		{
			key: "onTouchStart",
			value: function(t) {
				console.log(56456465465464)
				if (t.preventDefault(), this.map.stopMoving(), this.fireTouchEvent("touchstart", t), t.touches && !(t.touches.length > 1)) {
					var e = this.startTouchPoints;
					if (this.startTouchPoints = h.touchPos(this.el, t), this.tapped) {
						clearTimeout(this.tapped),
						this.tapped = null;
						var n = e && e[0],
						i = this.startTouchPoints && this.startTouchPoints[0];
						n && i && (this.maybeDoubleTap = o(n, i)),
						this.tapped = setTimeout(this.onTouchTimeout.bind(this), 300)
					} else this.tapped = setTimeout(this.onTouchTimeout.bind(this), 300)
				}
			}
		},
		{
			key: "onTouchMove",
			value: function(t) {
				console.log(4564654)
				this.fireTouchEvent("touchmove", t);
				var e = this.startTouchPoints[0],
				n = h.touchPos(this.el, t)[0];
				this.maybeDoubleTap && e && n && (this.maybeDoubleTap = o(e, n))
			}
		},
		{
			key: "onTouchEnd",
			value: function(t) {
				var e = this;
				this.fireTouchEvent("touchend", t),
				setTimeout(function() {
					if (e.tapped) {
						var n = e.startTouchPoints[0],
						i = h.touchPos(e.el, t)[0];
						if (n && i) {
							var r = o(n, i);
							r && e.fireTouchEvent("click", t),
							r && e.maybeDoubleTap && setTimeout(function() {
								e.fireTouchEvent("dblclick", t),
								e.maybeDoubleTap = !1
							},
							50)
						}
					}
				},
				50)
			}
		},
		{
			key: "onTouchCancel",
			value: function(t) {
				this.maybeDoubleTap = !1,
				this.fireTouchEvent("touchcancel", t)
			}
		},
		{
			key: "onTouchTimeout",
			value: function() {
				this.maybeDoubleTap = !1,
				this.tapped = null
			}
		},
		{
			key: "onClick",
			value: function(t) {
				var e = h.mousePos(this.el, t);
				this.startPos && e.dist(this.startPos) < x && this.fireMouseEvent("click", t)
			}
		},
		{
			key: "onDblClick",
			value: function(t) {
				this.fireMouseEvent("dblclick", t),
				t.preventDefault()
			}
		},
		{
			key: "onContextMenu",
			value: function(t) {
				var e = this.map.dragRotate && this.map.dragRotate.isActive();
				this.mouseDown || e ? this.mouseDown && (this.contextMenuEvent = t) : this.fireMouseEvent("contextmenu", t),
				t.preventDefault()
			}
		},
		{
			key: "fireMouseEvent",
			value: function(t, e) {
				var n = h.mousePos(this.el, e),
				i = {
					latLng: this.map.unprojectFromContainer(n),
					point: n,
					originalEvent: e
				};
				"click" === t && (i.poi = this.map._getPoiInfo(n));
				var o = !0,
				r = !1,
				s = void 0;
				try {
					for (var l, u = (0, a.
				default)(this.members); ! (o = (l = u.next()).done); o = !0) {
						l.value._fire(t, i)
					}
				} catch(t) {
					r = !0,
					s = t
				} finally {
					try { ! o && u.
						return && u.
						return ()
					} finally {
						if (r) throw s
					}
				}
			}
		},
		{
			key: "fireTouchEvent",
			value: function(t, e) {
				var n = this,
				i = h.touchPos(this.el, e),
				o = i.reduce(function(t, e, n, i) {
					return t.add(e.div(i.length))
				},
				new v(0, 0)),
				r = {
					latLng: this.map.unprojectFromContainer(o),
					point: o,
					latLngs: i.map(function(t) {
						return n.map.unprojectFromContainer(t)
					},
					this),
					points: i,
					originalEvent: e
				};
				"click" === t && (r.poi = this.map._getPoiInfo(i[0]));
				var s = !0,
				l = !1,
				u = void 0;
				try {
					for (var c, f = (0, a.
				default)(this.members); ! (s = (c = f.next()).done); s = !0) {
						c.value._fire(t, r)
					}
				} catch(t) {
					l = !0,
					u = t
				} finally {
					try { ! s && f.
						return && f.
						return ()
					} finally {
						if (l) throw u
					}
				}
			}
		},
		{
			key: "registe",
			value: function(t) {
				if (! (t instanceof p)) throw new Error("illegal event type!");
				var e = !0,
				n = !1,
				i = void 0;
				try {
					for (var o, r = (0, a.
				default)(this.members); ! (e = (o = r.next()).done); e = !0) {
						if (o.value === t) return
					}
				} catch(t) {
					n = !0,
					i = t
				} finally {
					try { ! e && r.
						return && r.
						return ()
					} finally {
						if (n) throw i
					}
				}
				this.members.push(t)
			}
		},
		{
			key: "cancel",
			value: function(t) {
				if (! (t instanceof p)) throw new Error("illegal event type!");
				for (var e = this.members,
				n = e.length - 1; n > -1; n--) e[n] === t && e.splice(n, 1)
			}
		}]),
		t
	} ();
	t.exports = b
},
function(t, e, n) {
	"use strict";
	n(801),
	n(803),
	n(802),
	n(809),
	n(808),
	n(811),
	n(810),
	n(812),
	n(805),
	n(806),
	n(804),
	n(807),
	n(982),
	n(1025)
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.imageVertex = "\nprecision mediump float;\n\nattribute vec2 a_position;\n\nuniform mat4 u_matrix;\nuniform vec2 u_size;\nuniform vec4 u_texInfo;\nvarying vec2 v_texCoord;\n\nvoid main() {\n\t\n\tv_texCoord = vec2(u_texInfo[0] + a_position.x * u_texInfo[2], u_texInfo[1] + a_position.y * u_texInfo[3]);\n\t\n\tvec2 position = vec2(a_position.x * u_size.x, (a_position.y - 1.0) * u_size.y);\n\n\tgl_Position = u_matrix * vec4(position, 0.0, 1.0);\n}\n"
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.INSTANCE_PARTS = "\nattribute vec2 positions;\n        \nattribute vec3 instancePositions;\nattribute vec2 instancePositions64xyLow;\nattribute vec2 instanceSizes;\nattribute vec4 instanceInfos;\n\n\nattribute vec3 instancePickingColors;\nattribute vec4 instanceFrames;\nattribute vec3 instancePixelOffset;\n",
	e.UNIFORM_PARTS = "\nuniform float u_sizeScale;\nuniform float u_sizeMinPixels;\nuniform float u_sizeMaxPixels;\nuniform vec2 u_textureDim;\nuniform float u_opacity;\nuniform float u_mapScale;\n\n",
	e.generateMainPart = function(t, e) {
		return "\n    \n    vec2 imageSize = instanceFrames.zw;\n            \n    vec2 sizePixels = clamp(instanceSizes * u_sizeScale, vec2(u_sizeMinPixels), vec2(u_sizeMaxPixels));\n    \n    " + t + "\n\n    vec3 latlngPoint = instancePositions;\n     float delta  = latlngPoint.x - uCenter.x;\n\n\n\n\n\n\n     latlngPoint.x = mix( mix(latlngPoint.x,latlngPoint.x + 360.0,step(delta,-180.)), latlngPoint.x - 360.0, step(180., delta));\n     \n    if (bool(instanceInfos.w))  {\n        vec4 center_proj = uMatrix * vec4(project_view_local_position_precision(latlngPoint, instancePositions64xyLow.xy), 1.0);\n        vec2 center_screen = proj_position_to_screen(center_proj);\n        vec2 corner_screen = center_screen + pixelOffset * u_mapScale;\n    \n        gl_Position = screen_to_proj_position(corner_screen, center_proj.z, center_proj.w);\n    } else {\n        gl_Position = uMatrix * vec4(project_view_local_position_precision(latlngPoint.xy, instancePositions64xyLow.xy) + pixelOffset, 0.0, 1.0);\n    }\n    \n    vTextureCoords = mix(\n        instanceFrames.xy,\n        instanceFrames.xy + imageSize,\n        (positions.xy + 1.0) / 2.0\n    ) / u_textureDim;\n    \n    vTextureCoords.y = 1.0 - vTextureCoords.y;\n    \n\n    " + e + "\n    vColor = picking_getFinalColor(vColor, instancePickingColors);\n    vOpacity = instancePixelOffset.z;\n    "
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(292),
	r = n(276);
	e.
default = {
		v: "\n\t\t#define SHADER_NAME polygon-vertex-shader\n\n\t\tattribute vec2 vertexPositions;\n\t\t\n\t\tattribute float vertexValid;\n\t\tattribute vec3 positions;\n\t\tattribute vec2 positions64xyLow;\n\t\tattribute vec3 nextPositions;\n\t\tattribute vec2 nextPositions64xyLow;\n\t\tattribute float elevations;\n\t\tattribute vec4 fillColors;\n\t\tattribute vec4 lineColors;\n\t\tattribute vec3 pickingColors;\n\n\t\t" + i.UNIFORM_PART + "\n        \n\t\t" + o.PICK_UNIFORM + "\n\t\t\n\t\t" + r.LIGHT_UNIFORM + "\n\t\t\n\t\tuniform bool u_isSideVertex;\n\t\tuniform bool u_extruded;\n\t\tuniform bool u_isWireframe;\n\t\tuniform float u_elevationScale;\n\t\tuniform float u_opacity;\n\t\t\n\t\tvarying vec4 vColor;\n\t\tvarying float isValid;\n\n\t\t" + r.LIGHT_VARYING + "\n\n\t\t" + i.PROJECTION_PART + "\n        \n\t\t" + o.PICK_FUNCTION + "\n\t\t\n\t\t" + r.LIGHT_VERTEX + "\n\t\t" + r.LIGHT_FRAG + "\n\t\t\n\t\tvoid main(void) {\n\t\t\tvec3 pos;\n\t\t\tvec2 pos64xyLow;\n\t\t\tvec3 normal;\n\t\t\tvec4 colors = mix(fillColors, lineColors, float(u_isWireframe));\n\n\t\t\tfloat isSideVertex = float(u_isSideVertex);\n\t\t\tfloat extruded = float(u_extruded);\n\n\t\t\tpos = mix(\n\t\t\t\tpositions,\n\t\t\t\t\n\t\t\t\tmix(positions, nextPositions, vertexPositions.x),\n\t\t\t\tisSideVertex\n\t\t\t);\n\t\t\tpos64xyLow = mix(\n\t\t\t\tpositions64xyLow,\n\t\t\t\tmix(positions64xyLow, nextPositions64xyLow, vertexPositions.x),\n\t\t\t\tisSideVertex\n\t\t\t);\n\t\t\tisValid = mix(1.0, vertexValid, isSideVertex);\n\t\t\tpos.z += mix(\n\t\t\t\t0.0,\n\t\t\t\tabs(elevations) * mix(1.0, vertexPositions.y, isSideVertex),\n\t\t\t\textruded\n\t\t\t) * u_elevationScale;\n\t\t\t\n\t\t\t\n\t\t\tpos.z = mix(pos.z, mix(pos.z - abs(elevations), pos.z, float(elevations >= 0.0)), extruded);\n\t\t\t\n\t\t\tvec3 local_position = project_view_local_position_precision(pos.xyz, pos64xyLow.xy);\n\t\t\tvec3 current_local_position = project_view_local_position_precision(positions.xyz, positions64xyLow.xy);\n\t\t\tvec3 next_local_position = project_view_local_position_precision(nextPositions.xyz, nextPositions64xyLow.xy);\n\n\t\t\tgl_Position = uMatrix * vec4(local_position, 1.0);\n\t\t\t\n\t\t\tnormal = mix(\n\t\t\t\tvec3(0., 0., 1.),\n\t\t\t\tmix(\n\t\t\t\t\tvec3(0.0, 0.0, 1.0),\n\t\t\t\t\tnormalize(\n\t\t\t\t\t\tcross(\n\t\t\t\t\t\t\tnormalize(vec3(next_local_position.xy - current_local_position.xy, 0.0)),\n\t\t\t\t\t\t\tvec3(0.0, 0.0, 1.0)\n\t\t\t\t\t\t)\n\t\t\t\t\t),\n\t\t\t\t\tfloat(u_isSideVertex && !u_isWireframe)\n\t\t\t\t),\n\t\t\t\textruded\n\t\t\t);\n\n\t\t\tlighting_apply_on_vertex(local_position.xyz, normal, mat4(1.0));\n\t\t\tvec4 color = vec4(colors.rgb, colors.a * u_opacity) / 255.0;\n\t\t\tvec4 lightingColor = mix(\n\t\t\t\tcolor,\n\t\t\t\tlighting_apply_on_color(color),\n\t\t\t\t\n\t\t\t\textruded\n\t\t\t);\n\t\t\tvColor = picking_getFinalColor(lightingColor, pickingColors);\n\t\t}\n\t",
		f: "\n\t\t#define SHADER_NAME polygon-fragment-shader\n\n\t\tprecision highp float;\n\t\t\n\t\tvarying vec4 vColor;\n\t\tvarying float isValid;\n\t\t\n\t\tvoid main(void) {\n\t\t\tif (isValid < 0.5) {\n\t\t\t\tdiscard;\n\t\t\t}\n\t\t\tgl_FragColor = vColor;\n\t\t}\n\t",
		name: "polygon"
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(17),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(41),
	f = i(c),
	d = n(29),
	h = f.
default.isNumber,
	v = f.
default.isValidColor,
	p = f.
default.isObject,
	_ = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, s.
		default)(this, t);
			var n = e.stops,
			i = void 0 === n ? {}: n,
			o = e.angle,
			r = void 0 === o ? 0 : o;
			if (this.stops = {},
			!p(i)) return void new d.BaseTypeError("stops", "object", i).error();
			for (var a in i) {
				var l = i[a];
				if (!v(l)) return void console.error("GradientColorOptions.stops中key为 " + a + " 的color属性无效", l);
				this.stops[a] = l
			}
			if (!h(r)) return void new d.BaseTypeError("GradientColorOptions.angle", "number", r).error();
			this.angle = r
		}
		return (0, u.
	default)(t, [{
			key: "addColorStop",
			value: function(t, e) {
				return h(t) ? v(e) ? void(this.stops[t] = e) : void console.error("addColorStop中key为 " + t + " 的color属性无效", e) : void new d.BaseTypeError("offset", "number", e).error()
			}
		},
		{
			key: "setAngle",
			value: function(t) {
				if (!h(t)) return void new d.BaseTypeError("setAngle.angle", "number", t).error();
				this.angle = t
			}
		},
		{
			key: "getAngle",
			value: function() {
				return this.angle
			}
		},
		{
			key: "isEmpty",
			value: function() {
				return (0, r.
			default)(this.stops).length <= 0
			}
		}], [{
			key: "createDoubleColorGradient",
			value: function(e, n) {
				var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
				if (!v(e)) return console.error("参数错误：createDoubleColorGradient.color1 颜色值不合法。"),
				null;
				if (!v(n)) return console.error("参数错误：createDoubleColorGradient.color2 颜色值不合法。"),
				null;
				if (!h(i)) return new d.BaseTypeError("createDoubleColorGradient.angle", "number", i).error(),
				null;
				var o = new t;
				return o.addColorStop(0, e),
				o.addColorStop(1, n),
				o.setAngle(i),
				o
			}
		},
		{
			key: "convert",
			value: function(e) {
				var n = e.constructor === Array ? e: [];
				if (e.constructor === Object && 2 === (0, r.
			default)(e).length) for (var i in e) n.push(e[i]);
				if (2 === n.length && v(n[0]) && v(n[1])) {
					var o = new t;
					return o.addColorStop(0, n[0]),
					o.addColorStop(1, n[1]),
					o
				}
				return null
			}
		}]),
		t
	} ();
	t.exports = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(10),
	u = i(l),
	c = function() {
		function t(e, n, i) { (0, r.
		default)(this, t),
			this.worker = e,
			this.parent = n,
			this.mapId = i,
			this.callbacks = {},
			this.callbackID = 0,
			this.receive = this.receive.bind(this),
			this.worker.addEventListener("message", this.receive, !1)
		}
		return (0, s.
	default)(t, [{
			key: "send",
			value: function(t, e, n, i) {
				var o = this;
				if (this.worker) {
					var r = n ? u.
				default.uniqueId() + ":" + this.callbackID: null;
					if (this.callbackID += 1, n && (this.callbacks[r] = n), e.dataFinishCallback) {
						var a = e.dataFinishCallback;
						a.finishPromise().then(function(t) {
							o.worker && o.worker.postMessage({
								targetMapId: i,
								sourceMapId: o.mapId,
								type: a.type,
								id: String(r),
								data: t
							})
						}),
						e.dataFinishCallback = null
					}
					this.worker && this.worker.postMessage({
						targetMapId: i,
						sourceMapId: this.mapId,
						type: t,
						id: String(r),
						data: e
					})
				}
			}
		},
		{
			key: "receive",
			value: function(t) {
				var e = this,
				n = t.data,
				i = n.id,
				o = void 0;
				if (!n.targetMapId || this.mapId === n.targetMapId) {
					var r = function(t, n, o) {
						if (e.worker) {
							var r = null;
							n && n.transferableList && (r = n.transferableList, delete n.transferableList),
							e.worker.postMessage({
								sourceMapId: e.mapId,
								type: "<response>",
								id: String(i),
								error: t,
								data: n,
								time: o
							},
							r || [])
						}
					};
					if ("<response>" === n.type) o = this.callbacks[n.id],
					n.data && n.data.baseData || delete this.callbacks[n.id],
					o && o(n.error || null, n.data, n.time);
					else if (void 0 !== n.id && this.parent[n.type]) this.parent[n.type](n.sourceMapId, n.data, r);
					else if (void 0 !== n.id && this.parent.getWorkerSource) {
						var a = n.type.split("."),
						s = this.parent.getWorkerSource(n.sourceMapId, a[0]);
						s[a[1]](n.data, r)
					}
				}
			}
		},
		{
			key: "remove",
			value: function() {
				this.worker.removeEventListener("message", this.receive, !1),
				this.worker = null
			}
		}]),
		t
	} ();
	t.exports = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		var i = {};
		return d.
	default.forIn(t,
		function(t, o) {
			if (e.hasOwnProperty(t)) {
				var r = e[t];
				if (_.
			default.isNumber(o)) i[t] = "rotation" === t || "heading" === t ? v.
			default.rotation(o, r, n) : (0, v.
			default)(o, r, n);
				else if (o instanceof g.
			default) {
					var a = v.
				default.latlng(o, r, n);
					i[t] = new g.
				default(a[0], a[1])
				} else o instanceof Array && (i[t] = v.
			default.array(o, r, n))
			}
		}),
		i
	}
	function r(t, e) {
		for (var n = 1; n < t.length; n++) {
			var i = t[n];
			if (i.percentage >= e) {
				var r = t[n - 1];
				return o(r, i, (e - r.percentage) / (i.percentage - r.percentage))
			}
		}
	}
	function a(t, e) {
		t.sort(function(t, e) {
			return t.percentage - e.percentage
		}),
		0 !== t[0].percentage && t.unshift((0, u.
	default)({},
		e, {
			percentage: 0
		}));
		var n = t[t.length - 1];
		1 !== n.percentage && t.push((0, u.
	default)({},
		n, {
			percentage: 1
		}))
	}
	function s() {
		delete this._onAnimateFrame,
		delete this._onAnimateLoopEnd,
		delete this._onAnimateResume,
		delete this._onStop,
		delete this._onPause,
		delete this._abortTimeProcess
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.animatableMixin = void 0;
	var l = n(16),
	u = i(l),
	c = n(28),
	f = n(10),
	d = i(f),
	h = n(399),
	v = i(h),
	p = n(41),
	_ = i(p),
	m = n(47),
	g = i(m);
	e.animatableMixin = {
		_animateStatus: "done",
		_animate: function() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
			e = arguments[1],
			n = e.onFrame,
			i = void 0 === n ?
			function() {}: n,
			o = e.onEnd,
			l = void 0 === o ?
			function() {}: o,
			u = e.onLoop,
			c = void 0 === u ?
			function() {}: u,
			f = e.onStop,
			h = void 0 === f ?
			function() {}: f,
			v = e.onPause,
			p = void 0 === v ?
			function() {}: v,
			m = e.onResume,
			g = void 0 === m ?
			function() {}: m,
			y = this,
			x = arguments[2],
			b = x.duration,
			S = void 0 === b ? 1e3: b,
			w = x.loop,
			E = void 0 === w ? 1 : w,
			T = x.initTick,
			A = void 0 === T ? 0 : T,
			P = x.id,
			I = void 0 === P ? d.
		default.uniqueId():
			P,
			k = x.easing,
			L = void 0 === k ? d.
		default.linearEase:
			k,
			M = arguments[3];
			if (this._isIdle() || this._stopAnimate(), t.length < 2) return void console.error("参数错误：关键帧数量不足2：" + t.length + "。");
			if (a(t, M), !((E = Number(E)) < 1) && _.
		default.isNumber(E)) {
				var C = 1,
				R = A;
				return c.call(this, C),
				this._onAnimateLoopEnd = function() {
					C < E ? (C += 1, c.call(y, C), y._startLoop(S, 0)) : (y._animateStatus = "done", l.call(y), s.call(y))
				},
				this._onAnimateFrame = function(e) {
					R = e,
					e = L(e);
					var n = r(t, e);
					i.call(y, {
						percentage: e,
						frame: n
					}),
					1 === e && y._onAnimateLoopEnd()
				},
				this._onAnimateResume = function() {
					y._startLoop(S, R),
					g.call(y)
				},
				this._onStop = h,
				this._onPause = p,
				this._animateStatus = "doing",
				this._startLoop(S, A),
				i.call(this, {
					percentage: 0,
					frame: t[0]
				}),
				I
			}
		},
		_startLoop: function(t) {
			var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 0;
			this._abortTimeProcess = (0, c.timed)(this._onAnimateFrame, null, t, this, e)
		},
		_stopAnimate: function() {
			this._isIdle() || (this._animateStatus = "done", this._abortTimeProcess && this._abortTimeProcess(), this._onStop && this._onStop.call(this), s.call(this))
		},
		_pauseAnimate: function() {
			this._isAnimating() && (this._animateStatus = "paused", this._abortTimeProcess && this._abortTimeProcess(), this._onPause && this._onPause.call(this))
		},
		_resumeAnimate: function() {
			this._isPaused() && (this._animateStatus = "doing", this._onAnimateResume && this._onAnimateResume())
		},
		_isAnimating: function() {
			return "doing" === this._animateStatus
		},
		_isPaused: function() {
			return "paused" === this._animateStatus
		},
		_isIdle: function() {
			return "done" === this._animateStatus
		}
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(105),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = o.
default.key || ""
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(256),
	p = i(v),
	_ = {
		Scale: {
			m: "米",
			km: "公里",
			mile: "英里",
			feet: "英尺"
		}
	},
	m = function(t, e) {
		"[object String]" === Object.prototype.toString.call(t.innerText) ? t.innerText = e: t.textContent = e
	},
	g = "position:absolute;border:1px solid #ffffff;width:2px;height:6px;background:#000;font-size:0;line-height:0;",
	y = g + "border-bottom-width:0px;",
	x = g + "border-top-width:0px;",
	b = function(t) {
		var e = Math.pow(10, ("" + Math.floor(t)).length - 1),
		n = t / e;
		return n = n >= 10 ? 10 : n >= 5 ? 5 : n >= 2 ? 2 : 1,
		e * n
	},
	S = function(t) {
		return Math.round(125 * t) - 10
	},
	w = function(t, e, n) {
		if (t && e && n) return Math.abs(156543.04 / n * Math.cos(t.lat * Math.PI / 180)) / Math.pow(2, e)
	},
	E = function(t) {
		var e = document.createElement("div");
		return "up" === t ? (e.style.cssText = y + ";border-right-width:0px", e.style.top = "7px", e.style.height = "9px") : "down" === t && (e.style.cssText = x + ";border-right-width:0px", e.style.top = "17px", e.style.height = "6px"),
		e.style.left = 0,
		e.style.zIndex = 0,
		e.className = "tmap-scale-line",
		e
	},
	T = function(t) {
		var e = document.createElement("div");
		return "up" === t ? (e.style.cssText = y, e.style.top = "0px") : "down" === t && (e.style.cssText = x, e.style.top = "9px"),
		e.style.left = "81px",
		e.style.zIndex = 2,
		e.className = "tmap-scale-line",
		e
	},
	A = function() {
		var t = document.createElement("div");
		return t.style.cssText = "position:absolute;border:1px solid #ffffff;width:2px;height:6px;background:#000;font-size:0;line-height:0;z-index:1;border-left-width:0px;",
		t.style.left = "3px",
		t.style.width = "80px",
		t.style.height = "2px",
		t.style.top = "6px",
		t.className = "tmap-scale-line",
		t
	},
	P = function(t) {
		var e = document.createElement("div"),
		n = "up" === t ? "top: 0px;": "bottom:-17px;";
		return e.style.cssText = "position:relative; " + n + " font:11px arial,simsun;color:#000;text-align:left; left:5px;",
		e.className = "tmap-scale-text",
		e
	},
	I = function(t) {
		for (var e = [], n = ["up", "down"], i = 0; i < 2; i++) {
			var o = n[i],
			r = document.createElement("div");
			r.style.cssText = "width:100px;position:absolute;";
			var a = document.createElement("div");
			a.style.cssText = "position:absolute;height:7px;width:84px;bottom:0px;";
			var s = E(o),
			l = T(o),
			u = A(),
			c = P(o);
			r.appendChild(s),
			a.appendChild(l),
			a.appendChild(u),
			r.appendChild(c),
			r.appendChild(a),
			e[o + "_rr"] = l,
			e[o + "_rl"] = s,
			e[o + "_rm"] = u,
			e[o + "_ruler"] = a,
			e[o + "_text"] = c,
			e[o + "_rl"] = s,
			t.appendChild(r)
		}
		var f = void 0;
		return {
			getMaxWidth: function() {
				return f
			},
			refresh: function(t) {
				var n = void 0,
				i = void 0,
				o = e.up_rr,
				r = e.up_rm,
				a = e.up_text,
				s = e.up_ruler,
				l = e.down_rr,
				u = e.down_rm,
				c = e.down_ruler,
				d = e.down_text,
				h = b(t);
				n = S(h / t);
				var v = n;
				i = h < 1e3 ? h + " " + _.Scale.m: h / 1e3 + " " + _.Scale.km,
				m(a, i),
				a.style.width = "80px",
				r.style.width = n + "px",
				o.style.left = n + 0 + "px";
				var p = 3.2808399 * t,
				g = void 0,
				y = void 0,
				x = void 0;
				p > 5280 ? (g = p / 5280, y = b(g), n = S(y / g), i = y + " " + _.Scale.mile) : (x = b(p), n = S(x / p), i = x + " " + _.Scale.feet),
				m(d, i);
				var w = parseInt(r.style.width, 10),
				E = n > w ? n: w;
				d.style.width = "80px",
				u.style.width = E + "px",
				l.style.left = n + "px",
				u.style.visibility = n > w ? "": "hidden",
				r.style.visibility = n > w ? "hidden": "",
				c.style.zIndex = n > w ? 0 : 1,
				s.style.zIndex = n > w ? 1 : 0,
				f = Math.max(v, E)
			}
		}
	},
	k = function(t, e, n, i) {
		var o = document.createElement("div");
		o.style.cssText = "position:absolute;";
		var r = I(o),
		a = function(e, n, i) {
			var o = w(e, n, i);
			if (o) {
				var a = 125 * o;
				r.refresh(a),
				t.style.width = r.getMaxWidth() + 10 + "px"
			}
		};
		return a(e, n, i),
		t.style.width = "100px",
		t.style.height = "35px",
		t.appendChild(o),
		{
			node: t,
			updateZoom: a
		}
	},
	L = function(t, e, n) {
		var i = document.createElement("div");
		return i.className = "tmap-scale-control",
		k(i, t, e, n)
	},
	M = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "createDOM",
			value: function(t) {
				var e = t.center,
				n = t.zoom,
				i = t.scale,
				o = document.createElement("div");
				return o.style.width = "125px",
				o.style.height = "35px",
				this.scaleControlView = L(e, n, i),
				o.appendChild(this.scaleControlView.node),
				o
			}
		},
		{
			key: "onAdd",
			value: function() {
				this.updateControl = this.updateControl.bind(this),
				this.map.on("zoom_changed", this.updateControl),
				this.map.on("scale_changed", this.updateControl)
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.map.off("zoom_changed", this.updateControl),
				this.map.off("scale_changed", this.updateControl)
			}
		},
		{
			key: "updateControl",
			value: function() {
				var t = this.map.getCenter(),
				e = this.map.getZoom(),
				n = this.map.getScale();
				this.scaleControlView.updateZoom(t, e, n)
			}
		}]),
		e
	} (p.
default);
	e.
default = M
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(256),
	p = i(v),
	_ = n(297),
	m = n(296),
	g = n(28),
	y = i(g),
	x = n(137),
	b = n(1027),
	S = n(1041),
	w = n(1042),
	E = n(1040);
	n(1031);
	var T = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.clickStrategy = {
				compassCircle: function(t) {
					if ("end" !== t && "2D" !== n.getViewMode()) return ! n.getPitchable() && n.getRotatable() ? void(n.map && n.map.easeTo({
						heading: 0
					})) : n.getPitchable() && !n.getRotatable() ? void(n.map && n.map.easeTo({
						pitch: 0
					})) : void(n.map && n.map.easeTo({
						pitch: 0,
						heading: 0,
						roll: 0
					}))
				},
				rotateTop: function(t) {
					"2D" !== n.getViewMode() && n.getPitchable() && n.map && (n.pitchHandle || (n.pitchHandle = n.map.getNonStopPitch()), "start" === t ? n.pitchHandle.begin(1) : "end" === t && n.pitchHandle.cancel())
				},
				rotateBottom: function(t) {
					"2D" !== n.getViewMode() && n.getPitchable() && n.map && (n.pitchHandle || (n.pitchHandle = n.map.getNonStopPitch()), "start" === t ? n.pitchHandle.begin( - 1) : "end" === t && n.pitchHandle.cancel())
				},
				rotateLeft: function(t) {
					"2D" !== n.getViewMode() && n.getRotatable() && n.map && (n.rotateHandle || (n.rotateHandle = n.map.getNonStopRotate()), "start" === t ? n.rotateHandle.begin(1) : "end" === t && n.rotateHandle.cancel())
				},
				rotateRight: function(t) {
					"2D" !== n.getViewMode() && n.getRotatable() && n.map && (n.rotateHandle || (n.rotateHandle = n.map.getNonStopRotate()), "start" === t ? n.rotateHandle.begin( - 1) : "end" === t && n.rotateHandle.cancel())
				}
			},
			n._bindEvents(),
			n._construct(),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_construct",
			value: function() {
				this.compassImg = this.dom.querySelector(".compass-img"),
				this.compassCircle = this.dom.querySelector(".compass-circle"),
				this.rotateLeftImg = this.dom.querySelector(".rotate-left-img"),
				this.rotateRightImg = this.dom.querySelector(".rotate-right-img"),
				this.rotateTopImg = this.dom.querySelector(".rotate-top-img"),
				this.rotateBottomImg = this.dom.querySelector(".rotate-bottom-img"),
				this.compassImg.src = E,
				this.rotateLeftImg.src = w,
				this.rotateRightImg.src = w,
				this.rotateTopImg.src = S,
				this.rotateBottomImg.src = S
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = document.createElement("div"),
				e = (0, _.Template)(b, {});
				return t.innerHTML ? t.insertAdjacentHTML("afterbegin", e) : t.innerHTML = e,
				t
			}
		},
		{
			key: "onAdd",
			value: function() {
				var t = this.onRotateChange.bind(this),
				e = this.onPitchChange.bind(this);
				if (this.throttleRotateChange = y.
			default.throttle(t, 50), this.throttlePitchChange = y.
			default.throttle(e, 50), this.map.on("rotate", this.throttleRotateChange), this.map.on("pitch", this.throttlePitchChange), "3D" === this.getViewMode()) {
					var n = this.map.getPitch(),
					i = this.map.getRotation();
					this.setButtonUseful(!0),
					this.checkButtonState(n),
					this.checkCompassState(n, i)
				} else this.setButtonUseful(!1)
			}
		},
		{
			key: "_bindEvents",
			value: function() {
				var t = this;
				this.handlers = [],
				["compass-circle", "rotate-left", "rotate-right", "rotate-top", "rotate-bottom"].forEach(function(e) {
					t.handleListen(e)
				}),
				this.handlers.push((0, g.on)(this.dom, "dblclick",
				function(t) {
					t.stopPropagation()
				})),
				this.handlers.push((0, g.on)(this.dom, "mousedown,mousemove,mouseup,mouseover,mouseleave,click,dblclick, touchstart,touchmove,touchend",
				function(t) {
					t.stopPropagation()
				}))
			}
		},
		{
			key: "onRotateChange",
			value: function(t) {
				var e = t.target.getRotation();
				this.compassImg.style.transform = "rotateZ(" + e + "deg)"
			}
		},
		{
			key: "onPitchChange",
			value: function(t) {
				var e = Math.round(t.target.getPitch());
				this.compassCircle.style.transform = "rotatex(" + e + "deg)",
				this.checkButtonState(e)
			}
		},
		{
			key: "handleListen",
			value: function(t) {
				var e = this,
				n = this.toCamel(t),
				i = this.dom.querySelector("." + t),
				o = new m.Finger(i, {
					preventDefaultMove: !0,
					preventDefaultEnd: !0,
					stopPropagation: !0
				});
				this.handlers.push((0, g.on)(o, "touch-start",
				function() {
					e.clickStrategy[n] && e.clickStrategy[n]("start")
				})),
				this.handlers.push((0, g.on)(o, "touch-end",
				function() {
					e.clickStrategy[n] && e.clickStrategy[n]("end")
				}))
			}
		},
		{
			key: "toCamel",
			value: function(t) {
				return t && t.replace(/\-(\w)/g,
				function(t, e) {
					return e.toUpperCase()
				})
			}
		},
		{
			key: "setButtonUseful",
			value: function(t) {
				if (!t) {
					return void["rotate-bottom", "rotate-top", "rotate-left", "rotate-right"].forEach(function(t) {
						document.getElementsByClassName(t)[0].classList.add("unclickable-" + t),
						document.getElementsByClassName(t)[0].classList.remove("clickable-" + t)
					})
				}
				var e = this.getPitchable(),
				n = this.getRotatable(),
				i = [],
				o = [];
				e ? i = i.concat(["rotate-bottom", "rotate-top"]) : o = o.concat(["rotate-bottom", "rotate-top"]),
				n ? i = i.concat(["rotate-left", "rotate-right"]) : o = o.concat(["rotate-left", "rotate-right"]),
				i.forEach(function(t) {
					document.getElementsByClassName(t)[0].classList.add("clickable-" + t),
					document.getElementsByClassName(t)[0].classList.remove("unclickable-" + t)
				}),
				o.forEach(function(t) {
					document.getElementsByClassName(t)[0].classList.add("unclickable-" + t),
					document.getElementsByClassName(t)[0].classList.remove("clickable-" + t)
				})
			}
		},
		{
			key: "checkButtonState",
			value: function(t) {
				0 === t && this.lastPitch !== t ? (document.getElementsByClassName("rotate-bottom")[0].classList.add("unclickable-rotate-bottom"), document.getElementsByClassName("rotate-bottom")[0].classList.remove("clickable-rotate-bottom")) : 0 === this.lastPitch && 0 !== t ? (document.getElementsByClassName("rotate-bottom")[0].classList.add("clickable-rotate-bottom"), document.getElementsByClassName("rotate-bottom")[0].classList.remove("unclickable-rotate-bottom")) : 80 === t && this.lastPitch !== t ? (document.getElementsByClassName("rotate-top")[0].classList.add("unclickable-rotate-top"), document.getElementsByClassName("rotate-top")[0].classList.remove("clickable-rotate-top")) : 80 === this.lastPitch && 80 !== t && (document.getElementsByClassName("rotate-top")[0].classList.add("clickable-rotate-top"), document.getElementsByClassName("rotate-top")[0].classList.remove("unclickable-rotate-top")),
				this.lastPitch = t
			}
		},
		{
			key: "checkCompassState",
			value: function(t, e) {
				this.compassImg.style.transform = "rotateZ(" + e + "deg)",
				this.compassCircle.style.transform = "rotatex(" + t + "deg)"
			}
		},
		{
			key: "getViewMode",
			value: function() {
				return this.map.getViewMode()
			}
		},
		{
			key: "getPitchable",
			value: function() {
				return this.map.getPitchable()
			}
		},
		{
			key: "getRotatable",
			value: function() {
				return this.map.getRotatable()
			}
		},
		{
			key: "setViewMode",
			value: function(t) {
				t === x.VIEW_MODE.MAP_2D ? this.setButtonUseful(!1) : this.setButtonUseful(!0)
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.map.off("rotate", this.throttleRotateChange),
				this.map.off("pitch", this.throttlePitchChange),
				this.rotateHandle = null,
				this.lastPitch = null,
				this.throttleRotateChange = null,
				this.throttlePitchChange = null
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this.handlers.forEach(function(t) {
					t && t.remove()
				})
			}
		}]),
		e
	} (p.
default);
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(256),
	p = i(v),
	_ = n(297),
	m = n(296),
	g = n(28),
	y = n(1028),
	x = n(1043),
	b = n(1044);
	n(1032);
	var S = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.dom.querySelector(".tmap-zoom-in-image").src = x,
			n.dom.querySelector(".tmap-zoom-out-image").src = b,
			n._bindEvents(),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "createDOM",
			value: function() {
				var t = document.createElement("div"),
				e = (0, _.Template)(y, {});
				return t.innerHTML ? t.insertAdjacentHTML("afterbegin", e) : t.innerHTML = e,
				t
			}
		},
		{
			key: "setNumVisible",
			value: function(t) {
				t ? (this.dom.querySelector(".tmap-zoom-control").style.height = "102px", this.dom.querySelector(".tmap-zoom-number").style.display = "block", this.dom.querySelector(".tmap-zoom-spliter").style.display = "none", this.dom.querySelector(".tmap-zoom-out").style.top = "70px") : (this.dom.querySelector(".tmap-zoom-control").style.height = "80px", this.dom.querySelector(".tmap-zoom-number").style.display = "none", this.dom.querySelector(".tmap-zoom-spliter").style.display = "block", this.dom.querySelector(".tmap-zoom-out").style.top = "48px")
			}
		},
		{
			key: "_bindEvents",
			value: function() {
				var t = this;
				this.zoomIn = this.dom.querySelector(".tmap-zoom-in"),
				this.zoomOut = this.dom.querySelector(".tmap-zoom-out"),
				this.zoomNumberShow = this.dom.querySelector(".tmap-zoom-number"),
				this.updateZoomNumberDisplay = function() {
					t.zoomNumberShow.innerHTML = t.map.getZoom().toFixed(1)
				},
				this.handlers = [],
				this.zoomInFinger = new m.Finger(this.zoomIn, {
					preventDefaultMove: !0,
					preventDefaultEnd: !0,
					stopPropagation: !0
				}),
				this.zoomOutFinger = new m.Finger(this.zoomOut, {
					preventDefaultMove: !0,
					preventDefaultEnd: !0,
					stopPropagation: !0
				}),
				this.handlers.push((0, g.on)(this.zoomInFinger, "tap",
				function() {
					t.map && t.map.zoomBy(1)
				})),
				this.handlers.push((0, g.on)(this.zoomOutFinger, "tap",
				function() {
					t.map && t.map.zoomBy( - 1)
				})),
				this.handlers.push((0, g.on)(this.dom, "dblclick",
				function(t) {
					t.stopPropagation()
				})),
				this.handlers.push((0, g.on)(this.dom, "mousedown,mousemove,mouseup,mouseover,mouseleave,click,dblclick, touchstart,touchmove,touchend",
				function(t) {
					t.stopPropagation()
				}))
			}
		},
		{
			key: "onAdd",
			value: function() {
				this.updateZoomNumberDisplay(),
				this.map.on("zoom", this.updateZoomNumberDisplay)
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.updateZoomNumberDisplay && this.map.off("zoom", this.updateZoomNumberDisplay)
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this.handlers.forEach(function(t) {
					t && t.remove()
				})
			}
		}]),
		e
	} (p.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(74),
	p = i(v),
	_ = function(t) {
		function e(t, n) {
			var i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0; (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n));
			return o.z = i,
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "getZ",
			value: function() {
				return this.z
			}
		},
		{
			key: "clone",
			value: function() {
				return new e(this.x, this.y, this.z)
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		for (var n = (0, l.latLngToMercator)(t), i = [], o = 0; o <= f; o++) {
			var r = o * d,
			a = new c.
		default(0, 0);
			a.x = Math.cos(r),
			a.y = Math.sin(r),
			i.push(a)
		}
		for (var s = i.length - 1; s >= 0; s--) {
			var u = i[s];
			i.push(new c.
		default(u.y, u.x))
		}
		for (var h = i.length - 1; h >= 0; h--) {
			var v = i[h];
			i.push(new c.
		default( - v.x, v.y))
		}
		for (var p = i.length - 1; p >= 0; p--) {
			var _ = i[p];
			i.push(new c.
		default(_.x, -_.y))
		}
		var m = t.getLat() * Math.PI / 180;
		return i.map(function(t) {
			return t.x = n.x + e / Math.cos(m) * t.x,
			t.y = n.y + e / Math.cos(m) * t.y,
			(0, l.mercatorToLatLng)(t)
		})
	}
	function r(t) {
		return (0, s.
	default)(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getCirclePath = o;
	var a = n(277),
	s = i(a),
	l = n(112),
	u = n(74),
	c = i(u),
	f = 9,
	d = 5 * Math.PI / 180;
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		for (var i = (0, l.latLngToMercator)(t), o = [], r = 0; r <= f; r++) {
			var a = r * d,
			s = new c.
		default(0, 0);
			s.x = Math.cos(a),
			s.y = Math.sin(a),
			o.push(s)
		}
		for (var u = o.length - 1; u >= 0; u--) {
			var h = o[u];
			o.push(new c.
		default(h.y, h.x))
		}
		for (var v = o.length - 1; v >= 0; v--) {
			var p = o[v];
			o.push(new c.
		default( - p.x, p.y))
		}
		for (var _ = o.length - 1; _ >= 0; _--) {
			var m = o[_];
			o.push(new c.
		default(m.x, -m.y))
		}
		var g = t.getLat() * Math.PI / 180;
		return o.map(function(t) {
			return t.x = i.x + e / Math.cos(g) * t.x,
			t.y = i.y + n / Math.cos(g) * t.y,
			(0, l.mercatorToLatLng)(t)
		})
	}
	function r(t) {
		return (0, s.
	default)(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getEllipsePath = o;
	var a = n(277),
	s = i(a),
	l = n(112),
	u = n(74),
	c = i(u),
	f = 9,
	d = 5 * Math.PI / 180;
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(47),
	u = i(l),
	c = n(209),
	f = i(c),
	d = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this.markerCluster = e,
			this.gridSize = e.gridSize,
			this.averageCenter = e.averageCenter,
			this.zoom = n,
			this.center = null,
			this.geometries = [],
			this.geometrySet = {},
			this.bounds = null
		}
		return (0, s.
	default)(t, [{
			key: "getClusterInfo",
			value: function() {
				return {
					center: this.center,
					geometries: this.geometries,
					bounds: this.bounds
				}
			}
		},
		{
			key: "getCenter",
			value: function() {
				return this.center
			}
		},
		{
			key: "add",
			value: function(t) {
				if (!this.geometrySet[t.id]) {
					if (this.center) {
						if (this.averageCenter) {
							var e = this.geometries.length + 1,
							n = (this.center.lat * (e - 1) + t.position.lat) / e,
							i = (this.center.lng * (e - 1) + t.position.lng) / e;
							this.center = new u.
						default(n, i),
							this._calculateBounds()
						}
					} else this.center = t.position,
					this._calculateBounds();
					this.geometrySet[t.id] = t,
					this.geometries.push(t)
				}
			}
		},
		{
			key: "_calculateBounds",
			value: function() {
				var t = new f.
			default(this.center, this.center);
				this.bounds = this.markerCluster._getExtendedBounds(t, this.zoom)
			}
		},
		{
			key: "getBounds",
			value: function() {
				var t = new f.
			default(this.center, this.center);
				return this.geometries.forEach(function(e) {
					t.extend(new u.
				default(e.position.lat, e.position.lng))
				}),
				t
			}
		},
		{
			key: "getGeometries",
			value: function() {
				return this.geometries
			}
		},
		{
			key: "isInBounds",
			value: function(t) {
				return this.bounds.contains(t.position)
			}
		},
		{
			key: "remove",
			value: function() {
				this.markerCluster = null,
				this.gridSize = null,
				this.averageCenter = null,
				this.center = null,
				this.geometries = [],
				this.geometrySet = {},
				this.bounds = null
			}
		}], [{
			key: "normalizeClusterInfo",
			value: function(t) {
				return {
					center: u.
				default.convert(t.center),
					geometries: t.geometries.map(function(t) {
						return t.position = u.
					default.convert(t.position),
						t
					}),
					bounds: f.
				default._convertFromWorker(t.bounds)
				}
			}
		}]),
		t
	} ();
	e.
default = d
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(27),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = /^[og]\s*(.+)?/,
	f = /^mtllib /,
	d = /^usemtl /,
	h = function() {
		function t(e) {
			var n = e.index,
			i = e.name,
			o = void 0 === i ? "": i,
			r = e.mtllib,
			a = e.smooth,
			l = e.groupStart; (0, s.
		default)(this, t),
			this.index = n,
			this.name = o,
			this.mtllib = r,
			this.smooth = a,
			this.groupStart = l,
			this.groupEnd = -1,
			this.groupCount = -1,
			this.inherited = !1
		}
		return (0, u.
	default)(t, [{
			key: "clone",
			value: function() {
				return new t({
					index: arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : this.index,
					name: this.name,
					mtllib: this.mtllib,
					smooth: this.smooth,
					groupStart: 0
				})
			}
		}]),
		t
	} (),
	v = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : ""; (0, s.
		default)(this, t),
			this.name = e,
			this.geometry = {
				vertices: [],
				normals: [],
				colors: [],
				uvs: []
			},
			this.materials = [],
			this.smooth = !0
		}
		return (0, u.
	default)(t, [{
			key: "startMaterial",
			value: function(t, e) {
				var n = this._finalize(!1);
				n && (n.inherited || n.groupCount <= 0) && this.materials.splice(n.index, 1);
				var i = new h({
					index: this.materials.length,
					name: t,
					mtllib: Array.isArray(e) && e.length > 0 ? e[e.length - 1] : "",
					smooth: void 0 !== n ? n.smooth: this.smooth,
					groupStart: void 0 !== n ? n.groupEnd: 0
				});
				return this.materials.push(i),
				i
			}
		},
		{
			key: "currentMaterial",
			value: function() {
				if (this.materials.length > 0) return this.materials[this.materials.length - 1]
			}
		},
		{
			key: "_finalize",
			value: function(t) {
				var e = this.currentMaterial();
				if (e && -1 === e.groupEnd && (e.groupEnd = this.geometry.vertices.length / 3, e.groupCount = e.groupEnd - e.groupStart, e.inherited = !1), t && this.materials.length > 1) for (var n = this.materials.length - 1; n >= 0; n--) this.materials[n].groupCount <= 0 && this.materials.splice(n, 1);
				return t && 0 === this.materials.length && this.materials.push({
					name: "",
					smooth: this.smooth
				}),
				e
			}
		}]),
		t
	} (),
	p = function() {
		function t() { (0, s.
		default)(this, t),
			this.objects = [],
			this.object = null,
			this.vertices = [],
			this.normals = [],
			this.colors = [],
			this.uvs = [],
			this.materialLibraries = [],
			this.startObject("", !1)
		}
		return (0, u.
	default)(t, [{
			key: "startObject",
			value: function(t) {
				var e = !(arguments.length > 1 && void 0 !== arguments[1]) || arguments[1];
				if (this.object && !this.object.fromDeclaration) return this.object.name = t,
				void(this.object.fromDeclaration = e);
				var n = this.object && "function" == typeof this.object.currentMaterial ? this.object.currentMaterial() : void 0;
				if (this.object && "function" == typeof this.object._finalize && this.object._finalize(!0), this.object = new v(t), this.object.fromDeclaration = e, n && n.name && "function" == typeof n.clone) {
					var i = n.clone(0);
					i.inherited = !0,
					this.object.materials.push(i)
				}
				this.objects.push(this.object)
			}
		},
		{
			key: "finalize",
			value: function() {
				this.object && "function" == typeof this.object._finalize && this.object._finalize(!0)
			}
		},
		{
			key: "parseVertexIndex",
			value: function(t, e) {
				var n = parseInt(t, 10);
				return 3 * (n >= 0 ? n - 1 : n + e / 3)
			}
		},
		{
			key: "parseNormalIndex",
			value: function(t, e) {
				var n = parseInt(t, 10);
				return 3 * (n >= 0 ? n - 1 : n + e / 3)
			}
		},
		{
			key: "parseUVIndex",
			value: function(t, e) {
				var n = parseInt(t, 10);
				return 2 * (n >= 0 ? n - 1 : n + e / 2)
			}
		},
		{
			key: "addVertex",
			value: function(t, e, n) {
				var i = this.vertices,
				o = this.object.geometry.vertices;
				o.push(i[t + 0], i[t + 1], i[t + 2]),
				o.push(i[e + 0], i[e + 1], i[e + 2]),
				o.push(i[n + 0], i[n + 1], i[n + 2])
			}
		},
		{
			key: "addVertexPoint",
			value: function(t) {
				var e = this.vertices;
				this.object.geometry.vertices.push(e[t + 0], e[t + 1], e[t + 2])
			}
		},
		{
			key: "addVertexLine",
			value: function(t) {
				var e = this.vertices;
				this.object.geometry.vertices.push(e[t + 0], e[t + 1], e[t + 2])
			}
		},
		{
			key: "addNormal",
			value: function(t, e, n) {
				var i = this.normals,
				o = this.object.geometry.normals;
				o.push(i[t + 0], i[t + 1], i[t + 2]),
				o.push(i[e + 0], i[e + 1], i[e + 2]),
				o.push(i[n + 0], i[n + 1], i[n + 2])
			}
		},
		{
			key: "addColor",
			value: function(t, e, n) {
				var i = this.colors,
				o = this.object.geometry.colors;
				o.push(i[t + 0], i[t + 1], i[t + 2]),
				o.push(i[e + 0], i[e + 1], i[e + 2]),
				o.push(i[n + 0], i[n + 1], i[n + 2])
			}
		},
		{
			key: "addUV",
			value: function(t, e, n) {
				var i = this.uvs,
				o = this.object.geometry.uvs;
				o.push(i[t + 0], i[t + 1]),
				o.push(i[e + 0], i[e + 1]),
				o.push(i[n + 0], i[n + 1])
			}
		},
		{
			key: "addUVLine",
			value: function(t) {
				var e = this.uvs;
				this.object.geometry.uvs.push(e[t + 0], e[t + 1])
			}
		},
		{
			key: "addFace",
			value: function(t, e, n, i, o, r, a, s, l) {
				var u = this.vertices.length,
				c = this.parseVertexIndex(t, u),
				f = this.parseVertexIndex(e, u),
				d = this.parseVertexIndex(n, u);
				if (this.addVertex(c, f, d), void 0 !== i && "" !== i) {
					var h = this.uvs.length;
					c = this.parseUVIndex(i, h),
					f = this.parseUVIndex(o, h),
					d = this.parseUVIndex(r, h),
					this.addUV(c, f, d)
				}
				if (void 0 !== a && "" !== a) {
					var v = this.normals.length;
					c = this.parseNormalIndex(a, v),
					f = a === s ? c: this.parseNormalIndex(s, v),
					d = a === l ? c: this.parseNormalIndex(l, v),
					this.addNormal(c, f, d)
				}
				this.colors.length > 0 && this.addColor(c, f, d)
			}
		},
		{
			key: "addPointGeometry",
			value: function(t) {
				this.object.geometry.type = "Points";
				var e = this.vertices.length,
				n = !0,
				i = !1,
				o = void 0;
				try {
					for (var a, s = (0, r.
				default)(t); ! (n = (a = s.next()).done); n = !0) {
						var l = a.value;
						this.addVertexPoint(this.parseVertexIndex(l, e))
					}
				} catch(t) {
					i = !0,
					o = t
				} finally {
					try { ! n && s.
						return && s.
						return ()
					} finally {
						if (i) throw o
					}
				}
			}
		},
		{
			key: "addLineGeometry",
			value: function(t, e) {
				this.object.geometry.type = "Line";
				var n = this.vertices.length,
				i = this.uvs.length,
				o = !0,
				a = !1,
				s = void 0;
				try {
					for (var l, u = (0, r.
				default)(t); ! (o = (l = u.next()).done); o = !0) {
						var c = l.value;
						this.addVertexLine(this.parseVertexIndex(c, n))
					}
				} catch(t) {
					a = !0,
					s = t
				} finally {
					try { ! o && u.
						return && u.
						return ()
					} finally {
						if (a) throw s
					}
				}
				var f = !0,
				d = !1,
				h = void 0;
				try {
					for (var v, p = (0, r.
				default)(e); ! (f = (v = p.next()).done); f = !0) {
						var _ = v.value;
						this.addUVLine(this.parseUVIndex(_, i))
					}
				} catch(t) {
					d = !0,
					h = t
				} finally {
					try { ! f && p.
						return && p.
						return ()
					} finally {
						if (d) throw h
					}
				}
			}
		}]),
		t
	} ();
	e.
default = function(t) {
		var e = new p; - 1 !== t.indexOf("\r\n") && (t = t.replace(/\r\n/g, "\n")),
		-1 !== t.indexOf("\\\n") && (t = t.replace(/\\\n/g, ""));
		for (var n = t.split("\n"), i = "", o = "", a = [], s = "function" == typeof "".trimLeft, l = 0, u = n.length; l < u; l++) if (i = n[l], i = s ? i.trimLeft() : i.trim(), 0 !== i.length && "#" !== (o = i.charAt(0))) if ("v" === o) {
			var h = i.split(/\s+/);
			switch (h[0]) {
			case "v":
				e.vertices.push(parseFloat(h[1]), parseFloat(h[2]), parseFloat(h[3])),
				8 === h.length && e.colors.push(parseFloat(h[4]), parseFloat(h[5]), parseFloat(h[6]));
				break;
			case "vn":
				e.normals.push(parseFloat(h[1]), parseFloat(h[2]), parseFloat(h[3]));
				break;
			case "vt":
				e.uvs.push(parseFloat(h[1]), parseFloat(h[2]))
			}
		} else if ("f" === o) {
			for (var v = i.substr(1).trim(), _ = v.split(/\s+/), m = [], g = 0, y = _.length; g < y; g++) {
				var x = _[g];
				if (x.length > 0) {
					var b = x.split("/");
					m.push(b)
				}
			}
			for (var S = m[0], w = 1, E = m.length - 1; w < E; w++) {
				var T = m[w],
				A = m[w + 1];
				e.addFace(S[0], T[0], A[0], S[1], T[1], A[1], S[2], T[2], A[2])
			}
		} else if ("l" === o) {
			var P = i.substring(1).trim().split(" "),
			I = void 0,
			k = [];
			if ( - 1 === i.indexOf("/")) I = P;
			else {
				I = [];
				for (var L = 0,
				M = P.length; L < M; L++) {
					var C = P[L].split("/");
					"" !== C[0] && I.push(C[0]),
					"" !== C[1] && k.push(C[1])
				}
			}
			e.addLineGeometry(I, k)
		} else if ("p" === o) {
			var R = i.substr(1).trim(),
			B = R.split(" ");
			e.addPointGeometry(B)
		} else if (null !== (a = c.exec(i))) {
			var N = (" " + a[0].substr(1).trim()).substr(1);
			e.startObject(N)
		} else if (d.test(i)) e.object.startMaterial(i.substring(7).trim(), e.materialLibraries);
		else if (f.test(i)) e.materialLibraries.push(i.substring(7).trim());
		else {
			if ("s" !== o) {
				if ("\0" === i) continue;
				throw new Error('Unexpected line: "' + i + '"')
			}
			if (a = i.split(" "), a.length > 1) {
				var O = a[1].trim().toLowerCase();
				e.object.smooth = "0" !== O && "off" !== O
			} else e.object.smooth = !0;
			var D = e.object.currentMaterial();
			D && (D.smooth = e.object.smooth)
		}
		e.finalize();
		var z = [],
		F = [],
		V = !0,
		Y = !1,
		U = void 0;
		try {
			for (var j, G = (0, r.
		default)(e.objects); ! (V = (j = G.next()).done); V = !0) {
				var Z = j.value,
				H = Z.geometry;
				if (0 !== H.vertices.length) {
					var W = {
						header: {
							vertexCount: H.vertices.length / 3
						},
						attributes: {}
					};
					switch (H.type) {
					case "Points":
						W.mode = 0;
						break;
					case "Line":
						W.mode = 1;
						break;
					default:
						W.mode = 4
					}
					W.attributes.POSITION = {
						value: new Float32Array(H.vertices),
						size: 3
					},
					H.normals.length > 0 && (W.attributes.NORMAL = {
						value: new Float32Array(H.normals),
						size: 3
					}),
					H.colors.length > 0 && (W.attributes.COLOR_0 = {
						value: new Float32Array(H.colors),
						size: 3
					}),
					H.uvs.length > 0 && (W.attributes.TEXCOORD_0 = {
						value: new Float32Array(H.uvs),
						size: 2
					}),
					W.materials = [];
					var X = !0,
					Q = !1,
					q = void 0;
					try {
						for (var K, J = (0, r.
					default)(Z.materials); ! (X = (K = J.next()).done); X = !0) {
							var $ = K.value,
							tt = {
								name: $.name,
								flatShading: !$.smooth
							};
							W.materials.push(tt),
							F.push(tt)
						}
					} catch(t) {
						Q = !0,
						q = t
					} finally {
						try { ! X && J.
							return && J.
							return ()
						} finally {
							if (Q) throw q
						}
					}
					W.name = Z.name,
					z.push(W)
				}
			}
		} catch(t) {
			Y = !0,
			U = t
		} finally {
			try { ! V && G.
				return && G.
				return ()
			} finally {
				if (Y) throw U
			}
		}
		return {
			meshes: z,
			materials: F
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t.length >= 2 && (0, h.
	default)(t[0].lat) && (0, h.
	default)(t[0].lng)
	}
	function r(t) {
		return t.length >= 1 && t.every(function(t) {
			return o(t)
		})
	}
	function a(t) {
		return (o(t) ? [t] : t).map(function(t) {
			return s(t)
		})
	}
	function s(t) {
		var e = t.length > 0 ? [t[0]] : [];
		return t.forEach(function(t) {
			var n = e[e.length - 1];
			t.lat === n.lat && t.lng === n.lng || e.push(t)
		}),
		e
	}
	function l(t) {
		var e = [];
		return t.forEach(function(n, i) {
			if (i > 0) {
				var o = t[i - 1],
				r = [o.lng, o.lat],
				a = [n.lng, n.lat],
				s = u(n.lng, o.lng);
				if (s < 5) {
					var l = n.lng,
					c = n.lat;
					e.push({
						lng: l,
						lat: c,
						height: 0
					})
				} else { (0, p.
				default)(r, a, {
						npoints: Math.ceil(s / 5)
					}).geometry.coordinates.forEach(function(t) {
						if (Array.isArray(t[0])) t.forEach(function(t) {
							var n = (0, f.
						default)(t, 2),
							i = n[0],
							o = n[1];
							e.push({
								lng: i,
								lat: o,
								height: 0
							})
						});
						else {
							var n = (0, f.
						default)(t, 2),
							i = n[0],
							o = n[1];
							e.push({
								lng: i,
								lat: o,
								height: 0
							})
						}
					})
				}
				return ! 0
			}
			var d = n.lng,
			h = n.lat;
			e.push({
				lng: d,
				lat: h,
				height: 0
			})
		}),
		e
	}
	function u(t, e) {
		return Math.abs(e - t) < 180 ? Math.abs(e - t) : 360 - Math.abs(e - t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var c = n(32),
	f = i(c),
	d = n(343),
	h = i(d);
	e.isSimple = o,
	e.isComplexLine = r,
	e.normalize = a,
	e.deduplicatePoint = s,
	e.cross180 = l;
	var v = n(649),
	p = i(v)
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		return function(n) {
			return new r.
		default(n, t, e)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(651),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		return f.
	default.batchRender && (e += 1),
		e === f.
	default.maxDataZoom && t > e
	}
	function o(t, e) {
		return e < f.
	default.maxDataZoom && t <= e
	}
	function r(t, e) {
		var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
		return f.
	default.batchRender && (e += 1),
		Math.abs(t - e) <= n
	}
	function a(t, e, n) {
		return ! (r(t, e, 1) || n && o(e, n) || i(t, e))
	}
	function s(t, e, n) {
		return ! (r(Math.round(t), e) || n && o(e, n) || i(t, e))
	}
	function l(t, e, n) {
		return s(t, e, n)
	}
	function u(t, e) {
		return s(t, e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isInterceptForBase64 = a,
	e.isInterceptForGPU = s,
	e.isInterceptForTileData = l,
	e.isInterceptForPlacement = u;
	var c = n(23),
	f = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (c)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return [{
			name:
			"a_Position",
			components: 2,
			type: "UNSIGNED_SHORT",
			offset: 0
		},
		{
			name: "a_Color",
			components: 4,
			type: "UNSIGNED_BYTE",
			offset: 4
		},
		{
			name: "a_Normal",
			components: 2,
			type: "UNSIGNED_BYTE",
			offset: 8
		},
		{
			name: "a_LineInfo",
			components: 2,
			type: "UNSIGNED_BYTE",
			offset: 10
		},
		{
			name: "a_LineDistance",
			components: 1,
			type: "UNSIGNED_SHORT",
			offset: 12
		},
		{
			name: "a_SideInfo",
			components: 2,
			type: "UNSIGNED_BYTE",
			offset: 14
		},
		{
			name: "a_PickingColor",
			components: 4,
			type: "UNSIGNED_BYTE",
			offset: 16
		}]
	}
	function r() {
		return ["Uint16", "Uint16", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint16", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8"]
	}
	function a(t) {
		var e = t.transX,
		n = void 0 === e ? 0 : e,
		i = t.transY,
		o = void 0 === i ? 0 : i,
		r = t.scale,
		a = void 0 === r ? 1 : r;
		return Math.round(n / 256) + 4 * Math.round(o / 256) + 16 * Math.round(1 / a)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(74),
	d = i(f),
	h = n(481),
	v = i(h),
	p = n(278),
	_ = i(p),
	m = n(237),
	g = i(m),
	y = n(381),
	x = (i(y), n(23)),
	b = i(x),
	S = b.
default.batchRender ? "Uint32": "Uint16",
	w = function() {
		function t(e) { (0, l.
		default)(this, t),
			e = e || {},
			this.normalScale = 63,
			this.type = e.type || "default",
			this.noTerminal = e.noTerminal || !1,
			this.lineDistance = e.startDistance || 0;
			var n = (0, v.
		default)(r(), o()),
			i = (0, v.
		default)([S]);
			this.vertiesDataBuffer = n(4096),
			this.indicesDataBuffer = i(4096),
			this.lineCount = 0
		}
		return (0, c.
	default)(t, [{
			key: "addLine",
			value: function(t, e, n, i, o, r, s, l) {
				function u(t, e, o, r) {
					x = e.sub(t);
					var a = x.perp().unit().mult(b)._round(),
					s = a.mult( - 1),
					l = e.dist(t),
					u = Math.max(1, Math.floor(h + l)),
					c = o.length,
					d = 1024 + ~~t.x + w,
					v = 1024 + ~~t.y + E,
					p = 1024 + ~~e.x + w,
					_ = 1024 + ~~e.y + E;
					a.x += 128,
					a.y += 128,
					s.x += 128,
					s.y += 128,
					o.add([[d, v, n[0], n[1], n[2], n[3], a.x, a.y, i, S, 10 * h + T, A, P, f[0], f[1], f[2], f[3]], [d, v, n[0], n[1], n[2], n[3], s.x, s.y, i, S, 10 * h + T, A, P, f[0], f[1], f[2], f[3]], [p, _, n[0], n[1], n[2], n[3], s.x, s.y, i, S, 10 * u + T, A, P, f[0], f[1], f[2], f[3]], [p, _, n[0], n[1], n[2], n[3], a.x, a.y, i, S, 10 * u + T, A, P, f[0], f[1], f[2], f[3]]]),
					r.add([[c + 0], [c + 1], [c + 3], [c + 1], [c + 2], [c + 3]]),
					h = u
				}
				function c(t, e, o) {
					var r = 1.732 * b,
					a = e.length,
					s = 1024 + ~~t.x + w,
					l = 1024 + ~~t.y + E;
					e.add([[s, l, n[0], n[1], n[2], n[3], 128, 2 * b + 128, i - 0, 0, 10 + T, A, P, f[0], f[1], f[2], f[3]], [s, l, n[0], n[1], n[2], n[3], 128 - r, -1 * b + 128, i - 0, 0, 10 + T, A, P, f[0], f[1], f[2], f[3]], [s, l, n[0], n[1], n[2], n[3], r + 128, -1 * b + 128, i - 0, 0, 10 + T, A, P, f[0], f[1], f[2], f[3]]]),
					o.add([[a + 0], [a + 1], [a + 2]])
				}
				this.lineCount += 1,
				t = t || {};
				var f = t.pickingColor || [0, 0, 0, 0],
				h = s || 1,
				v = t,
				p = v.noTerminal,
				_ = this.vertiesDataBuffer,
				m = this.indicesDataBuffer,
				g = void 0,
				y = void 0,
				x = void 0,
				b = this.normalScale,
				S = 0;
				o && r ? S = Math.min(10 * o, 240) + Math.floor(10 - r / o * 10) : (o = 0, r = 0);
				var w = 2048 * (t.preWidth || 0),
				E = 2048 * (t.nextWidth || 0),
				T = t.deltaSideWidth || 0,
				A = t.isSide || 0,
				P = a(t.transform);
				h = h % (o + r) || 1;
				for (var I = [], k = 0, L = e.length / 2; k < L; k++) I.push(new d.
			default(2 * e[2 * k], 2 * -e[2 * k + 1]));
				if (l && I.push(I[0], I[1]), !S && !p && I.length > 2) {
					p || c(I[0], _, m);
					for (var M = 1,
					C = I.length; M < C; M++) y = I[M],
					c.bind(this)(y, _, m)
				}
				for (var R = 1,
				B = I.length; R < B; R++) g = I[R - 1],
				y = I[R],
				u.bind(this)(g, y, _, m)
			}
		},
		{
			key: "addPolygon",
			value: function(t, e) {
				for (var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
				i = this.vertiesDataBuffer, o = this.indicesDataBuffer, r = n.pickingColor, s = a(n.transform), l = g.
			default.mixCoords(t, "polygon", e.concat([0, 0, 0, 0, 0, 0, s]).concat(r || [0, 0, 0, 0]), 1024, 2), u = _.
			default.flatten([l]), c = u.vertices, f = u.dimensions, d = (0, _.
			default)(c, u.holes, f, i.length), h = 0, v = c.length / f; h < v; h++) {
					for (var p = [], m = h * f, y = (h + 1) * f; m < y; m++) p.push(c[m]);
					i.add([p])
				}
				o.add(d)
			}
		}]),
		t
	} ();
	e.
default = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t === S.RENDER_LAYER_TYPE.marker || t === S.RENDER_LAYER_TYPE.label
	}
	function r(t) {
		return t === S.RENDER_LAYER_TYPE.polygon || t === S.RENDER_LAYER_TYPE.circle || t === S.RENDER_LAYER_TYPE.ellipse || t === S.RENDER_LAYER_TYPE.rectangle
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_);
	e.hasBorderLayer = r;
	var g = n(257),
	y = i(g),
	x = n(90),
	b = n(143),
	S = n(66),
	w = function(t) {
		function e(t) {
			return (0, u.
		default)(this, e),
			o(t.type) ? t.level = b.LAYER_LEVEL.OVERLAY_NAA: t.level = b.LAYER_LEVEL.OVERLAY_AA,
			(0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t))
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "_initialize", this).call(this, t),
				this.sourceData = t.sourceData,
				this.sourceId = this.id
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && this.map.addSource(this.sourceId, {
					type: x.SOURCE_TYPE.geojson,
					tileSize: this.tileSize,
					data: this.sourceData
				})
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		}]),
		e
	} (y.
default);
	e.
default = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(257),
	p = i(v),
	_ = n(90),
	m = n(209),
	g = i(m),
	y = n(29),
	x = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function() {
				this.sourceId = this.sourceId || this.id
			}
		},
		{
			key: "getBounds",
			value: function() {
				return this._bounds
			}
		},
		{
			key: "setBounds",
			value: function(t) {
				return t instanceof g.
			default ? (this._bounds = t, this._resetData(), this) : (new y.BaseTypeError("bounds", "LatLngBounds", t).error(), this)
			}
		},
		{
			key: "_updateMediaSource",
			value: function(t) {
				this._mediaSource = t,
				this._resetData()
			}
		},
		{
			key: "_resetData",
			value: function() {
				this.map && this.map.getSource(this.id).setData({
					mediaSource: this._mediaSource,
					bounds: this._bounds
				})
			}
		},
		{
			key: "_addSource",
			value: function() {
				this._mediaSource && this._bounds && this._mediaSource && this._bounds && this.map && !this.map.getSource(this.sourceId) && (this.map.addSource(this.sourceId, {
					type: _.SOURCE_TYPE.ground,
					tileSize: this.tileSize,
					data: {
						mediaSource: this._mediaSource,
						bounds: this._bounds
					}
				}), this._fire("layer", {}))
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		if (L(t)) {
			var e = t.id,
			n = void 0 === e ? (0, b.uniqueId)() : e,
			i = t.paths;
			return t.id = n,
			k(i) ? i.flat(3).every(function(t, e) {
				var n = M(t);
				return n || new P.ClassTypeError("MaskGeometry.path[" + e + "]", "LatLng", t).error(),
				n
			}) : (new P.BaseTypeError("MaskGeometry.paths", "Array", i).error(), !1)
		}
		return new P.BaseTypeError("MaskGeometry", "Object", t).error(),
		!1
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(24),
	a = i(r),
	s = n(148),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(257),
	x = i(y),
	b = n(10),
	S = n(90),
	w = n(220),
	E = n(66),
	T = n(41),
	A = i(T),
	P = n(29),
	I = n(143),
	k = A.
default.isArray,
	L = A.
default.isObject,
	M = A.
default.isValidLatLng,
	C = function(t) {
		function e(t) {
			return (0, d.
		default)(this, e),
			t.type = E.RENDER_LAYER_TYPE.mask,
			t.level = I.LAYER_LEVEL.UNDERGROUND,
			(0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, g.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var e = t.geometries,
				n = void 0 === e ? [] : e,
				i = new l.
			default;
				this.isMaskReverse = t.isMaskReverse || !1,
				this.sourceId = this.id,
				this.maskGeoMap = i,
				this.add(n)
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && this.map.addSource(this.sourceId, {
					type: S.SOURCE_TYPE.geojson,
					data: {
						type: w.GEOMETRY_TYPES.MASK,
						geometries: [].concat((0, a.
					default)(this.maskGeoMap.values()))
					}
				})
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		},
		{
			key: "add",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
				return k(e) ? (e.forEach(function(e) {
					if (o(e)) {
						var n = e.id;
						t.maskGeoMap.has(n) ? console.warn("MaskLayer.add: 已存在id为" + n + "的MaskGeometry对象。") : t.maskGeoMap.set(n, e)
					}
				}), this._updateData(), this) : (new P.BaseTypeError("MaskLayer.add()传入参数", "Array", e).error(), this)
			}
		},
		{
			key: "get",
			value: function(t) {
				return this.maskGeoMap.get(t)
			}
		},
		{
			key: "getAll",
			value: function() {
				return [].concat((0, a.
			default)(this.maskGeoMap.values()))
			}
		},
		{
			key: "remove",
			value: function(t) {
				if (!k(t)) return new P.BaseTypeError("MaskLayer.remove()传入参数", "Array", t).error(),
				this;
				var e = this.maskGeoMap;
				return t.forEach(function(t) {
					e.has(t) ? e.delete(t) : console.warn("MaskLayer.remove: 不存在id为" + t + "的MaskGeometry对象。")
				}),
				this._updateData(),
				this
			}
		},
		{
			key: "clear",
			value: function() {
				return this.maskGeoMap.clear(),
				this._updateData(),
				this
			}
		},
		{
			key: "update",
			value: function(t) {
				if (!k(t)) return new P.BaseTypeError("MaskLayer.update()传入参数", "Array", t).error(),
				this;
				var e = this.maskGeoMap;
				return t.forEach(function(t) {
					o(t) && e.set(t.id, t)
				}),
				this._updateData(),
				this
			}
		},
		{
			key: "_updateData",
			value: function() {
				this.map && this.map.getSource(this.sourceId).setData({
					type: w.GEOMETRY_TYPES.MASK,
					geometries: [].concat((0, a.
				default)(this.maskGeoMap.values()))
				})
			}
		}]),
		e
	} (x.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = Array.isArray(e.features) ? e.features: _.DEFAULT_BASEMAP.vector.features,
		i = [];
		if (n.includes(p.BASE_LAYER_TYPE.base)) {
			var o = new d.
		default({
				map:
				t,
				id: _.VECTOR_LAYER_ID.base,
				features: [{
					type: p.BASE_LAYER_TYPE.base,
					filter: p.BASE_LAYER_TYPE.base
				},
				{
					type: p.BASE_LAYER_TYPE.ground,
					filter: p.BASE_LAYER_TYPE.ground
				}]
			});
			t.moveLayer(o.id, y.LAYER_LEVEL.BASE),
			i.push(o)
		}
		if (n.includes(p.BASE_LAYER_TYPE.arrow)) {
			var r = new d.
		default({
				map:
				t,
				id: p.BASE_LAYER_TYPE.arrow,
				features: [{
					type: p.BASE_LAYER_TYPE.arrow,
					filter: p.BASE_LAYER_TYPE.arrow
				}]
			});
			r.setRank((0, y.getRank)(y.LAYER_LEVEL.GROUND) - 1),
			i.push(r)
		}
		var a = n.includes(p.BASE_LAYER_TYPE.building3d) || n.includes("building"),
		s = n.includes(p.BASE_LAYER_TYPE.building2d);
		if (a || s) {
			var l = new d.
		default({
				map:
				t,
				id: _.VECTOR_LAYER_ID.building,
				zIndex: 1,
				features: [a ? {
					type: p.BASE_LAYER_TYPE.building3d,
					filter: p.BASE_LAYER_TYPE.building3d
				}: {
					type: p.BASE_LAYER_TYPE.building2d,
					filter: p.BASE_LAYER_TYPE.building3d
				}]
			});
			t.moveLayer(l.id, y.LAYER_LEVEL.BUILDING),
			i.push(l)
		}
		var u = n.includes(p.BASE_LAYER_TYPE.point),
		c = n.includes(p.BASE_LAYER_TYPE.label);
		if (u || c) {
			var f = new d.
		default({
				map:
				t,
				id: _.VECTOR_LAYER_ID.poi,
				features: [u ? {
					type: p.BASE_LAYER_TYPE.point,
					filter: p.BASE_LAYER_TYPE.point
				}: null, c ? {
					type: p.BASE_LAYER_TYPE.label,
					filter: p.BASE_LAYER_TYPE.label
				}: null, {
					type: p.BASE_LAYER_TYPE.text,
					filter: p.BASE_LAYER_TYPE.text
				}].filter(function(t) {
					return !! t
				})
			});
			t.moveLayer(f.id, y.LAYER_LEVEL.TEXT),
			i.push(f)
		}
		return i
	}
	function r(t) {
		var e = new v.
	default({
			map:
			t,
			id: _.DEFAULT_BASEMAP.handdraw.type,
			getTileUrl: function(t, e, n) {
				e = Math.pow(2, n) - 1 - e;
				var i = g.
			default.handdrawSrc;
				return i[(t + e) % i.length] + "?z=" + n + "&x=" + t + "&y=" + e + "&version=" + g.
			default.dataVersion.scenic
			},
			maxDataZoom: 20
		});
		return e.setZIndex(2),
		t.moveLayer(e.getId(), y.LAYER_LEVEL.BUILDING),
		e
	}
	function a(t) {
		var e = t.map,
		n = t.tilesrc,
		i = t.encrypt,
		o = t.key;
		window.onbeforeunload = function() {
			var t = e.getSource(_.DEFAULT_BASEMAP.oversea.type),
			n = t && t.overseaNum; (0, S.os)(o, n),
			t && (t.overseaNum = 0)
		};
		var r = function() {
			return 1 === this.layerResource.getFinalUsedMapStyleId() ? 1 : 0
		}.bind(e);
		return new v.
	default({
			map:
			e,
			id: _.DEFAULT_BASEMAP.oversea.type,
			maxDataZoom: 18,
			getTileUrl: function(t, e, a) {
				var s = ["z=" + a, "x=" + t, "y=" + e, "styleid=" + n.style, "scene=" + r(), "version=" + n.version, "size=256", "ch=zh"],
				l = s.join("&"),
				u = i(l);
				return n.url + "&key=" + o + "&param=" + u
			}
		})
	}
	function s(t, e) {
		var n = Array.isArray(e.features) ? e.features: _.DEFAULT_BASEMAP.satellite.features,
		i = [];
		if (n.includes(_.SATELLITE_FEATURE.satellite)) {
			var o = new v.
		default({
				map:
				t,
				id: _.SATELLITE_LAYER_ID[_.SATELLITE_FEATURE.satellite],
				getTileUrl: function(t, e, n) {
					e = Math.pow(2, n) - 1 - e;
					var i = g.
				default.satelliteSrc;
					return i[(t + e) % i.length] + "/" + n + "/" + (t >> 4) + "/" + (e >> 4) + "/" + t + "_" + e + ".jpg?version=" + g.
				default.dataVersion.sat
				},
				maxDataZoom: 18
			});
			t.moveLayer(o.id, y.LAYER_LEVEL.BASE),
			i.push(o)
		}
		if (n.includes(_.SATELLITE_FEATURE.road)) {
			var r = new v.
		default({
				map:
				t,
				id: _.SATELLITE_LAYER_ID[_.SATELLITE_FEATURE.road],
				getTileUrl: function(t, e, n) {
					e = Math.pow(2, n) - e - 1;
					var i = g.
				default.roadSrc;
					return i[(t + e) % i.length] + "?z=" + n + "&x=" + t + "&y=" + e + "&styleid=2&scene=0&version=" + g.
				default.dataVersion.tile
				},
				maxDataZoom: 18
			});
			t.moveLayer(r.id, y.LAYER_LEVEL.BASE),
			i.push(r)
		}
		return i
	}
	function l(t, e) {
		var n = Array.isArray(e.features) ? e.features: _.DEFAULT_BASEMAP.traffic.features,
		i = e.opacity,
		o = e.flowColor,
		r = e.flowSpeed,
		a = [],
		s = e.filter;
		if (e && !e.hasOwnProperty("filter") && (s = (0, c.
	default)(_.TRAFFIC_ROAD_TYPE)), n.includes(_.TRAFFIC_FEATURE.base)) {
			var l = new b.
		default({
				map:
				t,
				id: _.TRAFFIC_LAYER_ID[_.TRAFFIC_FEATURE.base],
				type: p.RENDER_LAYER_TYPE.trafficBase,
				maxDataZoom: 18,
				filter: s,
				opacity: i
			});
			t.moveLayer(l.id, y.LAYER_LEVEL.BASE),
			a.push(l)
		}
		if (n.includes(_.TRAFFIC_FEATURE.flow)) {
			var u = new b.
		default({
				map:
				t,
				id: _.TRAFFIC_LAYER_ID[_.TRAFFIC_FEATURE.flow],
				type: p.RENDER_LAYER_TYPE.trafficFlow,
				maxDataZoom: 18,
				filter: s,
				flowColor: o,
				flowSpeed: r
			});
			t.moveLayer(u.id, y.LAYER_LEVEL.BASE),
			a.push(u)
		}
		return a.forEach(function(e) {
			var n = t.getSource(e.sourceId);
			e._interval = setInterval(function() {
				n.isFrozen || (n.reload(), n.once("tilesloaded",
				function() {
					if (e.type === p.RENDER_LAYER_TYPE.trafficFlow) {
						t.renderEngine.getImageCache(e.id).clear()
					} else {
						t.renderEngine.painters.trafficBase.clearStore()
					}
				}))
			},
			6e4),
			e.once("source_removed",
			function() {
				clearInterval(e._interval),
				delete e._interval
			})
		}),
		a
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.createOverseaLayer = e.createHanddrawLayer = e.createTrafficLayer = e.createSatelliteLayer = e.createVectorLayer = void 0;
	var u = n(17),
	c = i(u),
	f = n(383),
	d = i(f),
	h = n(299),
	v = i(h),
	p = n(66),
	_ = n(281),
	m = n(23),
	g = i(m),
	y = n(143),
	x = n(667),
	b = i(x),
	S = n(43);
	e.createVectorLayer = o,
	e.createSatelliteLayer = s,
	e.createTrafficLayer = l,
	e.createHanddrawLayer = r,
	e.createOverseaLayer = a
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(221),
	r = i(o),
	a = n(25),
	s = i(a),
	l = n(16),
	u = i(l),
	c = n(3),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(5),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(249),
	b = i(x),
	S = n(670),
	w = i(S),
	E = n(28),
	T = i(E),
	A = n(23),
	P = i(A),
	I = n(10),
	k = n(671),
	L = i(k),
	M = T.
default.isPC() ? 800 : 200,
	C = function(t) {
		function e(t, n, i) { (0, h.
		default)(this, e);
			var o = (0, m.
		default)(this, (e.__proto__ || (0, f.
		default)(e)).call(this, t, n, i)),
			r = n.tileSize,
			a = void 0 === r ? P.
		default.tileSize:
			r,
			s = n.minZoom,
			l = void 0 === s ? P.
		default.minZoom:
			s,
			c = n.maxZoom,
			d = void 0 === c ? P.
		default.maxZoom:
			c,
			v = n.isPixelGeo,
			p = void 0 !== v && v,
			_ = n.tileManager,
			g = n.data;
			return (0, u.
		default)(o, {
				tileSize: a,
				minZoom: l,
				maxZoom: d,
				isPixelGeo: p
			}),
			o._items = {},
			o._data = g,
			o.tileManager = _ || new L.
		default({
				add:
				o.addTile.bind(o),
				remove: o.removeTile.bind(o),
				show: o.showTile.bind(o),
				minZoom: l,
				maxZoom: d
			}),
			o
		}
		return (0, y.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "getDrawItems",
			value: function() {
				return this._items
			}
		},
		{
			key: "onCacheRemove",
			value: function(t) {
				this.unloadTile(t)
			}
		},
		{
			key: "onUpdate",
			value: function(t, e, n) {
				this.updateCacheSize(t),
				this.tileManager.update(t.zoom, t, {
					reason: n
				})
			}
		},
		{
			key: "updateCacheSize",
			value: function(t) {
				var e = Math.ceil(t.width / this.tileSize) + 1,
				n = Math.ceil(t.height / this.tileSize) + 1,
				i = e * n,
				o = Math.floor(5 * i),
				r = Math.max(M, o);
				this.cache.setMaxSize(r)
			}
		},
		{
			key: "onClear",
			value: function() {
				this.clearTiles()
			}
		},
		{
			key: "clearTiles",
			value: function() {
				this.tileManager.clear()
			}
		},
		{
			key: "onReload",
			value: function() {
				var t = this; (0, I.forIn)(this._items,
				function(e, n) {
					t.reloadTile(n)
				})
			}
		},
		{
			key: "addTile",
			value: function(t, e) {
				var n = this.cache.get(t.id);
				if (n) return n.hide(),
				this._items[t.id] = n,
				s.
			default.resolve();
				n = new b.
			default(t, this.tileSize),
				n.hide(),
				this._items[t.id] = n,
				n.state = x.TILE_STATE.loading;
				var i = this.loadTile(n, e);
				return i.then(this._tileLoaded.bind(this, n)),
				i
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				var e = t.id,
				n = this._items[e];
				if (n) if (delete this._items[e], n.isLoading()) n.aborted = !0,
				n.state = x.TILE_STATE.unloaded,
				this.abortTile(n);
				else if (n.hasData()) {
					var i = n.coord.id;
					this.cache.add(i, n)
				}
			}
		},
		{
			key: "showTile",
			value: function(t) {
				var e = this._items[t.id];
				e && !e.visible && (e.show(), this._fire("data", {
					dataType: "source",
					tile: e
				}))
			}
		},
		{
			key: "reloadTile",
			value: function(t) {
				var e = this;
				t.isLoading() || (t.state = x.TILE_STATE.reloading, this.loadTile(t, {}).then(function(n) {
					e._fire("data", {
						dataType: "source",
						tile: t
					}),
					e._tileLoaded.call(e, t, n)
				}))
			}
		},
		{
			key: "loadTile",
			value: function() {}
		},
		{
			key: "unloadTile",
			value: function(t) {
				t.unloadData(),
				this.dispatcher.send("removeTile", {
					uid: t.uid,
					type: this.type
				},
				null, t.workerID)
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				this.dispatcher.send("abortTile", {
					uid: t.uid,
					type: this.type
				},
				null, t.workerID)
			}
		},
		{
			key: "_tileLoaded",
			value: function(t, e) {
				e && (t.state = x.TILE_STATE.loaded, 404 !== e.status && this._fire("loaderror", {
					tile: t,
					error: e
				})),
				(0, r.
			default)(this._items).every(function(t) {
					return t.isLoaded()
				}) && this._fire("tilesloaded", {
					dataType: "source",
					tiles: this._items
				})
			}
		}]),
		e
	} (w.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(106),
	p = n(23),
	_ = function(t) {
		function e(t, n, i) { (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return o.id = t,
			o.dispatcher = i,
			o.minZoom = n.minZoom || p.minZoom,
			o.maxZoom = n.maxZoom || p.maxZoom,
			o.maxDataZoom = n.maxDataZoom || p.maxDataZoom,
			o._items = {},
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "getDrawItems",
			value: function() {
				return this._items
			}
		},
		{
			key: "clear",
			value: function() {}
		},
		{
			key: "freeze",
			value: function() {
				this.isFrozen = !0
			}
		},
		{
			key: "unfreeze",
			value: function() {
				this.isFrozen = !1
			}
		},
		{
			key: "onAdd",
			value: function(t) {
				this.map = t
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.map = null
			}
		},
		{
			key: "update",
			value: function(t, e) {
				this.transform = t,
				this.camera = e
			}
		}]),
		e
	} (v);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(113),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(249),
	m = i(_),
	g = n(492),
	y = i(g),
	x = n(300),
	b = i(x),
	S = n(10),
	w = n(23),
	E = function(t) {
		function e(t, n, i) { (0, u.
		default)(this, e);
			var o = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, n, i));
			return o._metaData = null,
			o._initialize(),
			o.workerOptions = S.extend({
				source: o.getUniqueId(),
				tileSize: o.tileSize
			},
			n.workerOptions),
			o
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_initialize",
			value: function() {}
		},
		{
			key: "load",
			value: function() {
				var t = this;
				this._loadOriginData(function() {
					t._fire("data", {
						dataType: "source",
						sourceDataType: "metadata"
					})
				})
			}
		},
		{
			key: "onAdd",
			value: function(t) {
				this.map = t,
				this.load()
			}
		},
		{
			key: "getMetaData",
			value: function() {
				return this._metaData
			}
		},
		{
			key: "update",
			value: function(t) {
				this.transform = t;
				var e = new b.
			default(0, 0, 0, 0);
				this.addItem(e)
			}
		},
		{
			key: "addItem",
			value: function(t) {
				this.addTile(t, null, null)
			}
		},
		{
			key: "_loadOriginData",
			value: function(t) {
				var e = this;
				this._fire("dataloading", {
					dataType: "source"
				}),
				this._updateWorkerData(function() {
					e.reload(),
					e.transform && e.update(e.transform),
					t && t()
				})
			}
		},
		{
			key: "_updateWorkerData",
			value: function(t) {
				var e = this,
				n = S.extend({},
				this.workerOptions),
				i = this._data;
				n.data = (0, r.
			default)(i),
				this._onLoadDataStart(i),
				this.workerID = this.dispatcher.send(this.type + ".loadData", n,
				function(n, i) {
					n ? (e._onLoadDataError(n), t(n)) : (e._loaded = !0, e._metaData = i, e._onLoadDataEnd(), t(null))
				},
				this.workerID)
			}
		},
		{
			key: "_onLoadDataStart",
			value: function() {}
		},
		{
			key: "_onLoadDataEnd",
			value: function() {}
		},
		{
			key: "_onLoadDataError",
			value: function(t) {
				this._fire("error", {
					error: t
				})
			}
		},
		{
			key: "addTile",
			value: function(t, e, n) {
				var i = this._items[t.id];
				return i || ((i = this._cache.get(t.id)) ? (this._items[t.id] = i, i) : (i = new m.
			default(t, this.tileSize), this._items[t.id] = i, t.z <= w.maxDataZoom && this.loadTile(i, e, n ? n.bind(this) : this._tileLoaded.bind(this, i)), i))
			}
		},
		{
			key: "loadTile",
			value: function(t, e, n) {
				var i = {
					type: this.type,
					uid: t.uid,
					coord: t.coord,
					zoom: t.coord.z,
					maxZoom: this.maxZoom,
					tileSize: this.tileSize,
					source: this.getUniqueId()
				};
				t.workerID = this.dispatcher.send("loadTile", i,
				function(e, i) {
					if (t.clear(), !t.aborted) return e || !i ? void(t.state = _.TILE_STATE.loaded) : (t.setData(i), n(null))
				},
				this.workerID)
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				t.aborted = !0
			}
		},
		{
			key: "unloadTile",
			value: function(t) {
				t.clear(),
				this.dispatcher.send("removeTile", {
					uid: t.uid,
					type: this.type,
					source: this.getUniqueId()
				},
				function() {},
				t.workerID)
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.dispatcher.broadcast("removeSource", {
					type: this.type,
					source: this.getUniqueId()
				},
				function() {}),
				this.map = null,
				this._metaData = null
			}
		}]),
		e
	} (y.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(20),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(79),
	f = function() {
		function t(e, n, i) { (0, s.
		default)(this, t),
			i && (this.loadGeoJSON = i),
			this._geoDataIndexes = {},
			this.actor = e
		}
		return (0, u.
	default)(t, [{
			key: "loadVectorData",
			value: function(t, e) {
				var n = t.source;
				if (!this._geoDataIndexes[n]) return e(null, null);
				var i = this._geoDataIndexes[n];
				if (!i) return e(null, null);
				e(null, i)
			}
		},
		{
			key: "loadData",
			value: function(t, e) {
				var n = function(n, i) {
					var o = this;
					return n ? e(n) : "object" !== (void 0 === i ? "undefined": (0, r.
				default)(i)) ? e(new Error("Input data is not a valid GeoJSON object.")) : void this._indexData(t, i,
					function(n, i) {
						if (n) return e(n);
						o._geoDataIndexes[t.source] = i,
						e(null)
					})
				}.bind(this);
				this.loadGeoJSON(t, n)
			}
		},
		{
			key: "loadGeoJSON",
			value: function(t, e) {
				if (t.url) c.getJSON(t.url, e);
				else {
					if ("string" != typeof t.data) return e(new Error("Input data is not a valid GeoJSON object."));
					try {
						return e(null, JSON.parse(t.data))
					} catch(t) {
						return e(new Error("Input data is not a valid GeoJSON object."))
					}
				}
			}
		},
		{
			key: "removeSource",
			value: function(t) {
				this._geoDataIndexes[t.source] && delete this._geoDataIndexes[t.source]
			}
		},
		{
			key: "_indexData",
			value: function() {}
		}]),
		t
	} ();
	e.
default = f
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(249),
	p = n(384),
	_ = i(p),
	m = n(489),
	g = i(m),
	y = n(28),
	x = i(y),
	b = n(10),
	S = function(t) {
		function e(t, n, i) { (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n, i));
			return o.tileSize = n.tileSize || 256,
			o._isPixelGeo = n.isPixelGeo || !1,
			o._data = n.data,
			o._cache = new _.
		default(0, o.unloadTile.bind(o)),
			o._maxTileCacheSize = x.
		default.isPC() ? 800 : 200,
			o._on("error",
			function() {
				o._sourceErrored = !0
			}),
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "getUniqueId",
			value: function() {
				return this._uniqueId || (this._uniqueId = (this.map && this.map.id || b.uniqueId()) + "_" + this.id),
				this._uniqueId
			}
		},
		{
			key: "addTile",
			value: function() {}
		},
		{
			key: "loadTile",
			value: function() {}
		},
		{
			key: "unloadTile",
			value: function() {}
		},
		{
			key: "abortTile",
			value: function() {}
		},
		{
			key: "reload",
			value: function() {
				var t = this;
				this._cache.reset(),
				b.forIn(this._items,
				function(e, n) {
					t.reloadTile(n)
				})
			}
		},
		{
			key: "reloadTile",
			value: function(t) {
				t.state !== v.TILE_STATE.loading && (t.state = v.TILE_STATE.reloading, this.loadTile(t, {},
				this._tileLoaded.bind(this, t)))
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
				n = this._items[t];
				if (n) if (delete this._items[t], n.hasData()) {
					var i = n.coord.id; ! e && this._cache.add(i, n)
				} else n.aborted = !0,
				this.abortTile(n),
				this.unloadTile(n)
			}
		},
		{
			key: "clear",
			value: function() {
				this.clearTiles(),
				this._cache.reset()
			}
		},
		{
			key: "clearTiles",
			value: function() {
				var t = this;
				b.forIn(this._items,
				function(e) {
					t.removeTile(e)
				})
			}
		},
		{
			key: "_tileLoaded",
			value: function() {}
		},
		{
			key: "getDrawItems",
			value: function() {
				return this._items
			}
		},
		{
			key: "onAdd",
			value: function(t) {
				this.map = t
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.map = null
			}
		},
		{
			key: "updateCacheSize",
			value: function(t) {
				var e = Math.ceil(t.width / this.tileSize) + 1,
				n = Math.ceil(t.height / this.tileSize) + 1,
				i = e * n,
				o = Math.floor(5 * i);
				if (x.
			default.isPC()) {
					var r = "number" == typeof this._maxTileCacheSize ? Math.max(this._maxTileCacheSize, o) : o;
					this._cache.setMaxSize(r)
				} else this._cache.setMaxSize(o)
			}
		},
		{
			key: "update",
			value: function() {}
		}]),
		e
	} (g.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(490),
	p = i(v),
	_ = n(90),
	m = n(249),
	g = function(t) {
		function e(t, n, i) { (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n, i));
			return o.on("data",
			function() {
				o.hasGeoChanged_inLoading = !0
			}),
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function() {
				this.type = _.SOURCE_TYPE.geojson
			}
		},
		{
			key: "setData",
			value: function(t) {
				var e = this;
				return this._data = t,
				this._loadOriginData(function() {
					e._fire("data", {
						dataType: "source",
						sourceDataType: "content"
					})
				}),
				this
			}
		},
		{
			key: "reloadTile",
			value: function(t) {
				var e = this;
				t.state !== m.TILE_STATE.loading ? (t.state = m.TILE_STATE.reloading, this.hasGeoChanged_inLoading = !1, this.updateTileCallback ? (this.updateTileCallback(), this.updateTileCallback = null) : this.loadTile(t, {},
				this._tileLoaded.bind(this, t))) : (this.hasGeoChanged_inLoading && (this.updateTileCallback = function() {
					e.loadTile(t, {},
					function() {
						e._tileLoaded.bind(e, t),
						e._fire("data", {
							dataType: "source"
						}),
						e.hasGeoChanged_inLoading = !1
					})
				}), t.state = m.TILE_STATE.reloading)
			}
		},
		{
			key: "updateIndoorData",
			value: function(t, e) {
				var n = this;
				arguments.length > 2 && void 0 !== arguments[2] && arguments[2] && (t = this.indoorOption);
				var i = this._data.geometries,
				o = this._data.type,
				r = 0;
				i.forEach(function(i, a) {
					var s = 0;
					if ("POLYLINE" === o && (i.paths && i.paths.forEach(function(t) {
						s += t.length || 1
					}), s = s - 1 > 0 ? s - 1 : 0), !i.floorName || !i.buildingId) return void(r += s);
					var l = 1;
					l = t ? t.floorName === i.floorName && t.buildingId === i.buildingId ? 1 : 0 : e ? 1 : 0;
					var u = n._items["0_0_0"];
					if ("POINT" === o) u._data["0_0_0"].instancePixelOffsetList[3 * a + 2] = l,
					u._data["0_0_0"].uid = (new Date).getTime();
					else if ("POLYLINE" === o) {
						for (var c = r; c < r + s; c++) u._data["0_0_0"].instanceColorList[4 * c + 3] = 255 * l,
						u._data["0_0_0"].instanceBorderColorList[4 * c + 3] = 255 * l;
						r += s,
						u._data["0_0_0"].uid = (new Date).getTime()
					}
				}),
				this.indoorOption = t
			}
		},
		{
			key: "_tileLoaded",
			value: function() {
				this.updateIndoorData && this.updateIndoorData(null, !1, !0),
				this._fire("data_loaded")
			}
		},
		{
			key: "setStyle",
			value: function(t) {
				var e = this;
				return this._data.styles = t,
				this._loadOriginData(function() {
					e._fire("data", {
						dataType: "source",
						sourceDataType: "content"
					})
				}),
				this
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return 64 === f.indexOf(t.charAt(t.length - 1)) ? t.substring(0, t.length - 1) : t
	}
	function o(t) {
		if (!t) return null;
		t = i(t),
		t = i(t);
		var e = parseInt(t.length / 4 * 3, 10),
		n = [];
		t = t.replace(/[^A-Za-z0-9\+\/\=]/g, "");
		var o = void 0,
		r = void 0,
		a = void 0,
		s = void 0,
		l = void 0,
		u = void 0,
		c = void 0,
		d = 0,
		h = 0;
		for (d = 0; d < e; d += 3) s = f.indexOf(t.charAt(h)),
		h += 1,
		l = f.indexOf(t.charAt(h)),
		h += 1,
		u = f.indexOf(t.charAt(h)),
		h += 1,
		c = f.indexOf(t.charAt(h)),
		h += 1,
		o = s << 2 | l >> 4,
		r = (15 & l) << 4 | u >> 2,
		a = (3 & u) << 6 | c,
		n.push(o),
		64 !== u && n.push(r),
		64 !== c && n.push(a);
		return n
	}
	function r(t, e) {
		return t >> 8 - e & 255 | t << e & 255
	}
	function a(t) {
		return r(t, 2) ^ r(t, 1) & r(t, 3)
	}
	function s(t, e) {
		return {
			x: e,
			y: t ^ a(e)
		}
	}
	function l(t) {
		for (var e = t.length,
		n = [], i = 0; i < e; i += 2) {
			var o = t[i],
			r = 0;
			i + 1 < e && (r = t[i + 1]);
			for (var a = 0,
			l = 0,
			u = 0; u < 3; u++) {
				var c = s(o, r);
				a = c.x,
				o = a,
				l = c.y,
				r = l
			}
			n.push(a),
			n.push(l)
		}
		return n
	}
	function u(t) {
		for (var e = "",
		n = 0; n < t.length;) {
			var i = t[n],
			o = 0,
			r = 0;
			i < 128 ? (e += String.fromCharCode(i), n += 1) : i > 191 && i < 224 ? (o = t[n + 1], e += String.fromCharCode((31 & i) << 6 | 63 & o), n += 2) : (o = t[n + 1], r = t[n + 2], e += String.fromCharCode((15 & i) << 12 | (63 & o) << 6 | 63 & r), n += 3)
		}
		return e
	}
	function c(t) {
		var e = t.lastIndexOf("}");
		return t.substring(0, e + 1)
	}
	var f = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
	e.decode = function(t) {
		return c(u(l(o(t))))
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = t[t.length - 1];
		return e === O.BASE_LAYER_TYPE.region ? t.cidx + String(1e5 * (n >> 16 & 65535)) : t.cidx + String(1e5 * (n >> 16 & 65535) + (65535 & n))
	}
	function r(t, e) {
		var n = void 0;
		return H.forIn(t,
		function(t, i) {
			i.minScaleVal <= e && i.maxScaleVal >= e && (n = i)
		}),
		n
	}
	function a(t, e) {
		if (e) {
			for (var n = t[1], i = e.transX, o = e.transY, r = e.scale, a = 0; a < n.length; a += 2) n[a] = (n[a] + i) * r,
			n[a + 1] = (n[a + 1] + o) * r;
			t[0] === J && (t[2] = t[2] * r)
		}
	}
	function s(t, e) {
		var n = e.enc,
		i = e.imgUploadHook,
		o = e.childIdx,
		r = void 0 === o ? 0 : o;
		if (t instanceof Array) {
			var l = -1,
			u = [],
			c = [],
			f = [],
			d = [];
			return t.forEach(function(t, e) {
				var i = s(t, {
					enc: n,
					childIdx: e
				});
				0 === i.ret && (l = 0),
				u.push(i.img),
				c.push(i.ext_img),
				f = f.concat(i.features || []),
				d = d.concat(i.pois || [])
			}),
			i && (u.length || c.length) && i(u, c),
			{
				ret: l,
				img: u,
				ext_img: c,
				features: f,
				pois: d
			}
		}
		if (!t.data) return {};
		var h = n ? t: Z(Y(t.data));
		if (0 !== h.ret) return {};
		i && i(h.img, h.ext_img);
		var v = j(U(h.features)) || [],
		p = j(U(h.pois)) || [];
		return v.unshift([$, [0, 0, 256, 0, 256, 256, 0, 256], "", 0]),
		v.forEach(function(e) {
			e[0] instanceof Array ? e.forEach(function(e) {
				a(e, t.tileTransform)
			}) : a(e, t.tileTransform),
			e.cidx = r,
			e.transform = t.tileTransform || {}
		}),
		p.forEach(function(e) {
			e[0] instanceof Array ? e.forEach(function(e) {
				a(e, t.tileTransform)
			}) : a(e, t.tileTransform),
			e.cidx = r,
			e.transform = t.tileTransform || {}
		}),
		h.features = v,
		h.pois = p,
		h
	}
	var l = n(82),
	u = i(l),
	c = n(27),
	f = i(c),
	d = n(221),
	h = i(d),
	v = n(32),
	p = i(v),
	_ = n(113),
	m = i(_),
	g = n(25),
	y = i(g),
	x = n(24),
	b = i(x),
	S = n(17),
	w = i(S),
	E = n(0),
	T = i(E),
	A = n(1),
	P = i(A),
	I = n(652),
	k = i(I),
	L = n(653),
	M = i(L),
	C = n(654),
	R = i(C),
	B = n(381),
	N = i(B),
	O = n(66),
	D = n(301),
	z = n(23),
	F = i(z),
	V = n(240),
	Y = n(494).decode,
	U = n(693).restores,
	j = n(692).merge,
	G = n(10),
	Z = G.parseJson,
	H = n(10),
	W = n(497),
	X = W.getVectorStyle,
	Q = n(10),
	q = Q.uniqueId,
	K = {
		65536 : O.BASE_LAYER_TYPE.point,
		131072 : O.BASE_LAYER_TYPE.line,
		196608 : O.BASE_LAYER_TYPE.region,
		262144 : O.BASE_LAYER_TYPE.label,
		327680 : O.BASE_LAYER_TYPE.arrow
	},
	J = 196619,
	$ = 196613,
	tt = function() {
		function t(e) { (0, T.
		default)(this, t),
			this.uid = e.uid,
			this.coord = e.coord,
			this.dataZoom = e.coord.z,
			this._needUploadTileImage = !1,
			this._billboardFeatures = [];
			var n = e.styleId;
			this.styleId = n,
			this.parse = (0, D.isDefaultStyle)(n) ? this.parseForDefaultStyle.bind(this) : this.parseForCustomStyle.bind(this)
		}
		return (0, P.
	default)(t, [{
			key: "parseForCustomStyle",
			value: function(t, e, n, i, o, r, a) {
				function s(t) {
					if (t) {
						var e = t;
						return t.children && (0, w.
					default)(t.children).length > 0 && H.forIn(t.children,
						function(t, n) {
							e = [].concat((0, b.
						default)(e), (0, b.
						default)(n))
						}),
						e
					}
				}
				function l(t, e) {
					var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
					i = this.getOriginalGroundFeatures(v.features, e, !0),
					o = (0, k.
				default)(i.ranks, t);
					E[e] = i,
					n && h[O.BASE_LAYER_TYPE.base][t] ? (!h[O.BASE_LAYER_TYPE.base][t].children && (h[O.BASE_LAYER_TYPE.base][t].children = {}), h[O.BASE_LAYER_TYPE.base][t].children[e] = o) : (h[O.BASE_LAYER_TYPE.base] = {},
					h[O.BASE_LAYER_TYPE.base][t] = o)
				}
				function u(t, e, n) {
					var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
					if (n) {
						var o = (0, M.
					default)(n.buildings, t),
						r = (0, k.
					default)(n.ranksSide, t),
						a = this.parseInstanceArrow(h.arrow, t);
						i ? (!h[O.BASE_LAYER_TYPE.building3d][t].children && (h[O.BASE_LAYER_TYPE.building3d][t].children = {}), h[O.BASE_LAYER_TYPE.building3d][t].children[e] = {
							buildings: o,
							buildSideShapes: r
						},
						a && (h[O.BASE_LAYER_TYPE.arrow][t].children[e] = h.arrow[t].slice() || [], h[O.BASE_LAYER_TYPE.arrow][t].children[e].instance = a)) : (h[O.BASE_LAYER_TYPE.building3d] = {},
						h[O.BASE_LAYER_TYPE.building3d][t] = {},
						h[O.BASE_LAYER_TYPE.building3d][t].buildings = o, h[O.BASE_LAYER_TYPE.building3d][t].buildSideShapes = r, a && (h[O.BASE_LAYER_TYPE.arrow] = h.arrow || {},
						h[O.BASE_LAYER_TYPE.arrow][t] = h.arrow[t] || [], h[O.BASE_LAYER_TYPE.arrow][t].instance = a))
					}
				}
				var c = this,
				f = this.coord.id,
				d = this.parseOriginData(t, e, n, i, null, a),
				h = d.layerstiles,
				v = d.jsonData;
				if (!h || !v) return void r(null, null);
				var _ = s(h.point && h.point[f]),
				g = s(h.label && h.label[f]),
				x = [];
				_ && _.forEach(function(t) {
					t && t.datas && t.datas[0].textName && t.datas[0].textName.split("").forEach(function(e) {
						x.findIndex(function(n) {
							return n.text === e && n.font_weight === t.datas[0].font_weight
						}) < 0 && x.push({
							text: e,
							font_weight: t.datas[0].font_weight
						})
					})
				}),
				g && g.forEach(function(t) {
					t && t.roadName && t.roadName.split("").forEach(function(e) {
						x.findIndex(function(n) {
							return n.text === e && n.font_weight === t.roads[0].datas[0].font_weight
						}) < 0 && x.push({
							text: e,
							font_weight: t.roads[0].datas[0].font_weight
						})
					})
				});
				var S = {},
				E = {};
				if (l.call(this, f, this.dataZoom), this.dataZoom === F.
			default.maxDataZoom) for (var T = F.
			default.maxDataZoom + 1; T <= F.
			default.maxZoom; T++) l.call(this, f, T, !0);
				if (S.base = h.base, delete h.base, S = this.transferData(f, S, "base", this.dataZoom), S.id = f, r(null, S), u.call(this, f, this.dataZoom, E[this.dataZoom]), this.dataZoom === F.
			default.maxDataZoom) for (var A = F.
			default.maxDataZoom + 1; A <= F.
			default.maxZoom; A++) u.call(this, f, A, E[A], !0);
				new y.
			default(function(t) {
					var e = "";
					c._needUploadTileImage && v.img && (e = {
						tileImage64: v.img,
						tileId: f,
						billboardData: (0, m.
					default)(c._billboardFeatures)
					}),
					o.send("uploadTileTexture", {
						zoom: c.coord.z,
						uid: c.uid,
						billboard: e,
						glyphs: x
					},
					function(e, n) {
						if (e) console.error(e),
						t([{},
						{}]);
						else {
							var i = JSON.parse(n.billboardMapping),
							o = JSON.parse(n.glyphMapping[0]),
							r = JSON.parse(n.glyphMapping[1]);
							t([i, o, r])
						}
					})
				}).then(function(t) {
					function e(t, e) {
						if (arguments.length > 2 && void 0 !== arguments[2] && arguments[2]) {
							var i = h.point[t].children && h.point[t].children[e],
							o = h.label[t].children && h.label[t].children[e],
							r = {
								point: {},
								label: {}
							};
							r.point[t] = i,
							r.label[t] = o;
							var u = this.parseInstancePoint(r, t, n, {
								glyphMapping: s,
								glyphMappingBold: l,
								billboardMapping: a
							});
							i && (h[O.BASE_LAYER_TYPE.point][t].children[e].instance = u),
							o && (h[O.BASE_LAYER_TYPE.label][t].children[e].instance = u)
						} else {
							var c = this.parseInstancePoint(h, t, n, {
								glyphMapping: s,
								glyphMappingBold: l,
								billboardMapping: a
							});
							h[O.BASE_LAYER_TYPE.point] = h.point || {},
							h[O.BASE_LAYER_TYPE.point][t] = h.point[t] || [],
							h[O.BASE_LAYER_TYPE.point][t].instance = c,
							h[O.BASE_LAYER_TYPE.label] = h.label || {},
							h[O.BASE_LAYER_TYPE.label][t] = h.label[t] || [],
							h[O.BASE_LAYER_TYPE.label][t].instance = c
						}
					}
					var o = (0, p.
				default)(t, 3),
					a = o[0],
					s = o[1],
					l = o[2];
					if (e.call(c, f, c.dataZoom), c.dataZoom === F.
				default.maxDataZoom) for (var u = F.
				default.maxDataZoom + 1; u <= F.
				default.maxZoom; u++) e.call(c, f, u, !0);
					h = c.transferData(f, h, "increment"),
					h.id = f,
					h.styleId = i.styleId,
					r(null, h)
				})
			}
		},
		{
			key: "transferData",
			value: function(t, e, n) {
				var i = [];
				return (0, w.
			default)(e).forEach(function(n) {
					if (n === O.BASE_LAYER_TYPE.base) {
						var o = e[n] && e[n][t];
						if (!o) return;
						e[n][t] = {
							id: t,
							children: o.children || null,
							indeices: {
								arrayBuffer: o.indeices.dataView,
								length: o.indeices.length
							},
							lineCount: o.lineCount,
							size: o.size,
							vertices: {
								arrayBuffer: o.vertices.dataView,
								attributes: o.vertices.attributes,
								bytesPerElement: o.vertices.bytesPerElement
							},
							vertiesCount: o.vertiesCount
						}
					} else if (n === O.BASE_LAYER_TYPE.region) delete e[O.BASE_LAYER_TYPE.region];
					else if (n === O.BASE_LAYER_TYPE.line) delete e[O.BASE_LAYER_TYPE.line];
					else if (n === O.BASE_LAYER_TYPE.building3d) {
						var r = e[n] && e[n][t] && e[n][t].buildings;
						if (!r) return;
						e[n][t].buildings = {
							id: t,
							children: r.children || null,
							indeices: {
								arrayBuffer: r.indeices.dataView,
								length: r.indeices.length
							},
							size: r.size,
							vertices: {
								arrayBuffer: r.vertices.dataView,
								attributes: r.vertices.attributes,
								bytesPerElement: r.vertices.bytesPerElement
							}
						};
						var a = e[n] && e[n][t].buildSideShapes;
						if (!a) return;
						e[n][t].buildSideShapes = {
							id: t,
							children: a.children || null,
							indeices: {
								arrayBuffer: a.indeices.dataView,
								length: a.indeices.length
							},
							lineCount: a.lineCount,
							size: a.size,
							vertices: {
								arrayBuffer: a.vertices.dataView,
								attributes: a.vertices.attributes,
								bytesPerElement: a.vertices.bytesPerElement
							},
							vertiesCount: a.vertiesCount
						}
					} else if (n === O.BASE_LAYER_TYPE.arrow) {
						var s = e[O.BASE_LAYER_TYPE.arrow] && e[O.BASE_LAYER_TYPE.arrow][t];
						if (!s) return;
						s.forEach(function(t) {
							t.datas && t.datas.forEach(function(t) {
								t.coords && (t.coords = new Int16Array(t.coords), i.push(t.coords.buffer)),
								t.color_fill && (t.color_fill = new Uint8ClampedArray(t.color_fill), i.push(t.color_fill.buffer))
							})
						})
					} else if (n === O.BASE_LAYER_TYPE.point) {
						var l = e[O.BASE_LAYER_TYPE.point] && e[O.BASE_LAYER_TYPE.point][t];
						if (!l) return;
						l.forEach(function(t) {
							t.translate && !i.includes(t.translate.buffer) && i.push(t.translate.buffer),
							t.vertices && !i.includes(t.vertices.buffer) && i.push(t.vertices.buffer),
							t.datas && t.datas.forEach(function(t) {
								t.coords && (t.coords = new Int16Array(t.coords), i.push(t.coords.buffer)),
								t.icon_coords && (t.icon_coords = new Int16Array(t.icon_coords), i.push(t.icon_coords.buffer)),
								t.text_bounds && (t.text_bounds = new Int16Array(t.text_bounds), i.push(t.text_bounds.buffer)),
								t.text && t.text.forEach(function(t) {
									t.coords && (t.coords = new Int16Array(t.coords), i.push(t.coords.buffer))
								}),
								t.font_color && (t.font_color = new Uint8ClampedArray(t.font_color), i.push(t.font_color.buffer)),
								t.background_color && (t.background_color = new Uint8ClampedArray(t.background_color), i.push(t.background_color.buffer))
							})
						});
						var u = e[O.BASE_LAYER_TYPE.point][t].instance; (0, w.
					default)(u).forEach(function(t) {
							"count" !== t && i.push(u[t].buffer)
						})
					} else if (n === O.BASE_LAYER_TYPE.label) {
						var c = e[O.BASE_LAYER_TYPE.label] && e[O.BASE_LAYER_TYPE.label][t];
						if (!c) return;
						c.forEach(function(t) {
							t.roads && t.roads.forEach(function(t) {
								t.datas && t.datas.forEach(function(t) {
									t.coords && (t.coords = new Int16Array(t.coords), i.push(t.coords.buffer)),
									t.text_bounds && (t.text_bounds = new Int16Array(t.text_bounds), i.push(t.text_bounds.buffer)),
									t.glyph_text_bounds && (t.glyph_text_bounds = new Int16Array(t.glyph_text_bounds), i.push(t.glyph_text_bounds.buffer)),
									t.font_color && (t.font_color = new Uint8ClampedArray(t.font_color), i.push(t.font_color.buffer)),
									t.background_color && (t.background_color = new Uint8ClampedArray(t.background_color), i.push(t.background_color.buffer))
								})
							})
						})
					}
				}),
				"base" === n ? (i.push(e[O.BASE_LAYER_TYPE.base][t].vertices.arrayBuffer.buffer), i.push(e[O.BASE_LAYER_TYPE.base][t].indeices.arrayBuffer.buffer), e.baseData = !0) : "increment" === n && (i.push(e[O.BASE_LAYER_TYPE.building3d][t].buildings.vertices.arrayBuffer.buffer), i.push(e[O.BASE_LAYER_TYPE.building3d][t].buildings.indeices.arrayBuffer.buffer), i.push(e[O.BASE_LAYER_TYPE.building3d][t].buildSideShapes.vertices.arrayBuffer.buffer), i.push(e[O.BASE_LAYER_TYPE.building3d][t].buildSideShapes.indeices.arrayBuffer.buffer), e.incrementData = !0),
				e.transferableList = i,
				e
			}
		},
		{
			key: "getOriginalGroundFeatures",
			value: function(t, e, n) {
				for (var i = e,
				a = {},
				s = {},
				l = [], u = void 0, c = void 0, f = void 0, d = void 0, v = void 0, _ = void 0, m = void 0, g = void 0, y = 0, x = t.length; y < x; y++) {
					u = t[y];
					var b = u,
					S = (0, p.
				default)(b, 3);
					if (c = S[0], v = S[1], f = S[2], m = this.mapStyle.layerMeta[c], (g = m ? r(m.styles, i) : void 0) && (c === J && f > 0 && l.push({
						datas: v,
						h: u[2] * (i >= 18 ? 2 : 1),
						colorFill: g.color_fill,
						colorSide: g.color_side,
						transform: u.transform
					}), g && g.color_fill[3])) {
						var w = r(m.styles, i + 1),
						E = r(m.styles, i - 1);
						d = m.name,
						_ = o(u, m.type);
						var T = void 0;
						if (m.type !== O.BASE_LAYER_TYPE.region && m.type !== O.BASE_LAYER_TYPE.line) continue;
						if (v instanceof Array && v.length && "number" == typeof v[0] && (v = [v]), m.type === O.BASE_LAYER_TYPE.region);
						else if (m.type === O.BASE_LAYER_TYPE.line) {
							if (0 === g.width) continue;
							T = u[u.length - 2]
						}
						a[_] = a[_] || {};
						var A = a[_][d],
						P = {};
						if (m.type === O.BASE_LAYER_TYPE.line && "number" == typeof u[2] && (P.startDistance = u[2]), A) if (A.datas[0] instanceof Array || (A.datas = [A.datas]), v[0] instanceof Array) for (var I = 0,
						k = v.length; I < k; I++) A.datas.push(v[I]);
						else A.datas.push(v);
						else a[_][d] = {
							id: this.coord.id + "_" + d,
							layerId: c,
							layerName: d,
							type: m.type,
							datas: v,
							style: g,
							nextStyle: w,
							preStyle: E,
							zLevel: T,
							transform: u.transform,
							options: P
						},
						A = a[_][d]
					}
				}
				return n && (H.forIn(a,
				function(t, e) {
					var n = (0, h.
				default)(e).sort(function(t, e) {
						return t.style.layerseq - e.style.layerseq
					});
					H.forIn(n,
					function(e, i) {
						i.layerId === J && (s[t] = {},
						s[t][e] = n[e], n.splice(e, 1))
					}),
					a[t] = n
				}), H.forIn(s,
				function(t, e) {
					var n = (0, h.
				default)(e).sort(function(t, e) {
						return t.style.layerseq - e.style.layerseq
					});
					s[t] = n
				})),
				{
					ranks: a,
					ranksSide: s,
					buildings: l
				}
			}
		},
		{
			key: "parseOriginData",
			value: function(t, e, n, i, r, a) {
				var l = this;
				this.status = "parsing",
				this.data = e,
				this.mapStyle = i;
				var u = this.coord.id,
				c = {},
				d = {};
				N.
			default.setStyleTag(this.mapStyle.styleTag);
				var h = s(e, {
					enc: a,
					imgUploadHook: r
				});
				if (0 !== h.ret) return {};
				for (var v = h.features,
				p = 0,
				_ = v.length; p < _; p++) {
					var m = v[p],
					g = m[0] instanceof Array ? m[0][0] : m[0];
					if (!g) return void console.warn("featureId is not exist", g);
					var y = 983040 & g;
					c[K[y]] ? c[K[y]].push(m) : (c[K[y]] = [], d[K[y]] = {},
					c[K[y]].push(m))
				}
				var x = this.mapStyle.style;
				return H.forIn(x,
				function(t, e) {
					function i(e, i) {
						for (var l = [], u = {},
						c = 0, _ = p.length; c < _; c++) {
							var m = p[c],
							g = [];
							if (m[0] instanceof Array)(g = this.parseRoadName(m, a, s, v, i, e, this.coord.tileSize)) && l.push(g);
							else {
								var y = m[0],
								x = X(a, s, v, y, i);
								if (x) {
									if (r === O.BASE_LAYER_TYPE.point) {
										var b = "" + m[2],
										S = this.parsePoi(m, x, this.coord);
										if (!S) continue;
										u[b] = !0,
										g.push(S)
									} else if (r === O.BASE_LAYER_TYPE.arrow) {
										var w = this.parseArrow(m, x, this.coord);
										g.push(w)
									} else if (m[1][0] instanceof Array) {
										var E = !0,
										T = !1,
										A = void 0;
										try {
											for (var P, I = (0, f.
										default)(m[1]); ! (E = (P = I.next()).done); E = !0) {
												var k = P.value,
												L = {
													coords: k
												};
												g.push(L)
											}
										} catch(t) {
											T = !0,
											A = t
										} finally {
											try { ! E && I.
												return && I.
												return ()
											} finally {
												if (T) throw A
											}
										}
									} else {
										var M = {
											coords: m[1]
										};
										g.push(M)
									}
									var C = {
										type: r,
										datas: g,
										id: e + "_" + c,
										rank: o(m, r)
									};
									l.push(C)
								}
							}
						}
						if (r === O.BASE_LAYER_TYPE.point && h.pois && h.pois.length > 0 && h.ext_img) for (var B = 0,
						N = h.pois.length; B < N; B++) {
							var D = h.pois[B],
							z = [],
							V = "" + D[2],
							Y = D[0],
							U = X(a, s, v, Y, i);
							if (U && !u[V]) {
								var j = this.parsePoi(D, U, this.coord, {
									isExt: !0
								});
								if (j) {
									z.push(j);
									var G = {
										type: r,
										datas: z,
										isExt: !0,
										id: e + "_ext_" + B,
										rank: o(D, r)
									};
									l.push(G)
								}
							}
						}
						var Z = void 0;
						switch (r) {
						case O.BASE_LAYER_TYPE.point:
							Z = (0, R.
						default)(l, n);
							break;
						default:
							Z = l
						}
						i > F.
					default.maxDataZoom ? (!d[t][e] && (d[t][e] = {}), !d[t][e].children && (d[t][e].children = {}), d[t][e].children[i] = Z) : d[t][e] = Z
					}
					if (c[t]) {
						var r = e.type,
						a = e.style,
						s = e.relyStyle,
						v = e.relyStyleField,
						p = c[t],
						_ = l.dataZoom;
						if (i.call(l, u, _), _ === F.
					default.maxDataZoom) for (var m = F.
					default.maxDataZoom + 1; m <= F.
					default.maxZoom; m++) i.call(l, "" + l.coord.id, m)
					}
				}),
				{
					layerstiles: d,
					jsonData: h
				}
			}
		},
		{
			key: "parseForDefaultStyle",
			value: function(t, e, n, i, o, r, a) {
				function s(t, e) {
					var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
					i = this.getOriginalGroundFeatures(p.features, this.dataZoom, !0),
					o = (0, k.
				default)(i.ranks, t);
					m[e] = i,
					n && v[O.BASE_LAYER_TYPE.base][t] ? (!v[O.BASE_LAYER_TYPE.base][t].children && (v[O.BASE_LAYER_TYPE.base][t].children = {}), v[O.BASE_LAYER_TYPE.base][t].children[e] = o) : (v[O.BASE_LAYER_TYPE.base] = {},
					v[O.BASE_LAYER_TYPE.base][t] = o)
				}
				function l(t, e, n) {
					var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
					if (n) {
						var o = (0, M.
					default)(n.buildings, t),
						r = (0, k.
					default)(n.ranksSide, t),
						a = this.parseInstanceArrow(v.arrow, t);
						i ? (!v[O.BASE_LAYER_TYPE.building3d][t].children && (v[O.BASE_LAYER_TYPE.building3d][t].children = {}), v[O.BASE_LAYER_TYPE.building3d][t].children[e] = {
							buildings: o,
							buildSideShapes: r
						},
						a && (v[O.BASE_LAYER_TYPE.arrow][t].children[e] = v.arrow[t].slice() || [], v[O.BASE_LAYER_TYPE.arrow][t].children[e].instance = a)) : (v[O.BASE_LAYER_TYPE.building3d] = {},
						v[O.BASE_LAYER_TYPE.building3d][t] = {},
						v[O.BASE_LAYER_TYPE.building3d][t].buildings = o, v[O.BASE_LAYER_TYPE.building3d][t].buildSideShapes = r, a && (v[O.BASE_LAYER_TYPE.arrow] = v.arrow || {},
						v[O.BASE_LAYER_TYPE.arrow][t] = v.arrow[t] || [], v[O.BASE_LAYER_TYPE.arrow][t].instance = a))
					}
				}
				function u() {
					var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
					e = arguments[1];
					if (f && v) {
						var i = this.parseInstancePoint(v, d, n, t);
						v[O.BASE_LAYER_TYPE.point] = v.point || {},
						v[O.BASE_LAYER_TYPE.point][d] = v.point[d] || [],
						v[O.BASE_LAYER_TYPE.point][d].instance = i,
						v[O.BASE_LAYER_TYPE.label] = v.label || {},
						v[O.BASE_LAYER_TYPE.label][d] = v.label[d] || [],
						v[O.BASE_LAYER_TYPE.label][d].instance = i,
						v = this.transferData(d, v, "increment", e),
						v.id = d,
						r(null, v)
					}
				}
				var c = this,
				f = !1,
				d = this.coord.id,
				h = this.parseOriginData(t, e, n, i,
				function(e, n) {
					e ? o.send("uploadTileImage", {
						zoom: c.coord.z,
						maxDataZoom: t.maxDataZoom,
						sourceId: t.sourceId,
						uid: c.uid,
						tileId: d,
						imgBase64: e,
						extImgBase64: n
					},
					function(t, e) {
						e && (f = !0, u.call(c, e, c.dataZoom))
					}) : f = !0
				},
				a),
				v = h.layerstiles,
				p = h.jsonData;
				if (!v || !p) return void r(null, null);
				var _ = {},
				m = {};
				if (s.call(this, d, this.dataZoom), this.dataZoom === F.
			default.maxDataZoom) for (var g = F.
			default.maxDataZoom + 1; g <= F.
			default.maxZoom; g++) s.call(this, d, g, !0);
				if (_.base = v.base, delete v.base, _ = this.transferData(d, _, "base", this.dataZoom), _.id = d, r(null, _), l.call(this, d, this.dataZoom, m[this.dataZoom]), this.dataZoom === F.
			default.maxDataZoom) for (var y = F.
			default.maxDataZoom + 1; y <= F.
			default.maxZoom; y++) l.call(this, d, y, m[y], !0);
				u.call(this)
			}
		},
		{
			key: "parseInstanceArrow",
			value: function(t, e) {
				if (!t || !t[e]) return null;
				var n = [],
				i = [],
				o = [];
				t[e].forEach(function(t) {
					var e = t.datas[0];
					i.push(e.width),
					o.push.apply(o, (0, b.
				default)(e.color_fill)),
					n.push.apply(n, (0, b.
				default)(e.coords))
				});
				var r = new Float32Array(n),
				a = new Float32Array(o);
				return {
					instanceCoordsTypeArray: r,
					instanceWidthTypeArray: new Float32Array(i),
					instanceColorTypeArray: a,
					count: n.length / 4
				}
			}
		},
		{
			key: "parseInstancePoint",
			value: function(t, e, n, i) {
				var o = this,
				r = 0,
				a = i.extOffset,
				s = void 0 === a ? 0 : a,
				l = i.yOffsetList,
				c = void 0 === l ? [] : l,
				f = i.glyphMapping,
				d = i.billboardMapping,
				h = i.glyphMappingBold,
				v = [],
				_ = [],
				m = [],
				g = [],
				y = [],
				x = [],
				S = [],
				w = [],
				E = [],
				T = t.point && t.point[e] || [],
				A = T.filter(function(t) {
					return t && t.datas && t.datas[0] && t.datas[0].icon_coords
				}) || [],
				P = [];
				t.label && t.label[e] && t.label[e].forEach(function(t) {
					P = P.concat(t.roads)
				}),
				A.forEach(function(t) {
					var e = n.scale,
					i = n.info,
					o = t.datas[0];
					if (o && o.icon && o.icon_coords) {
						var a = i[String(o.icon)];
						if (!a) return;
						var s = a.width / e / 2,
						l = a.height / e / 2,
						c = o.icon_coords[0],
						d = -o.icon_coords[1];
						if (v.push(c, d, 0), m.push(a.left, a.bottom, a.right - a.left, a.top - a.bottom), o.stretching_len) {
							for (var p = o.text,
							b = 0,
							T = 0,
							A = 0,
							P = p.length; A < P; A++) !
							function(t, e) {
								var n = p[t],
								i = n.text.length,
								r = [0],
								a = 0; (0, u.
							default)(n.text).forEach(function(t) {
									var e = "normal" === o.font_weight ? f[t] : h[t],
									n = o.font_size / e.fontSize;
									r.push(r[r.length - 1] + e.width * n),
									a = Math.max(a, e.height * n)
								});
								var s = r[i],
								l = a;
								T = T > s ? T: s,
								b += l
							} (A);
							_.push(2 * s, 2 * l, s, l),
							o.screenW = o.stretching_len[0] + T,
							o.screenH = o.stretching_len[1] + b;
							var I = (o.stretching_len[0] + T) / (2 * s),
							k = (o.stretching_len[1] + b) / (2 * l);
							g.push(I, k)
						} else _.push(2 * s, 2 * l, s, l),
						g.push(1, 1);
						y.push(0, 1, 1, 1),
						x.push(1, 1, 1, 1),
						w.push(0, 0, 0, 0),
						S.push(0, 0, 0, 0),
						E.push(0),
						t.iconSymbolIndex = r,
						r += 1
					}
				}),
				T.forEach(function(t) {
					var e = t.datas[0];
					if (e.coords.length) for (var i = e.text,
					a = e.text_bounds,
					l = void 0,
					d = e.cidx || 0,
					T = 0,
					A = i.length; T < A; T++) {
						l = 2 === A ? a.slice(4 * (1 - T), 4 * (1 - T) + 4) : a.slice(4 * T, 4 * T + 4);
						var P = 0;
						if (P = t.isExt ? c[d + s] || 0 : c[d] || 0, l[1] += P, !(l[2] < 10 || l[3] < 10 || 0 === l.length)) {
							var I = i[T],
							k = (0, p.
						default)(I.coords, 2),
							L = k[0],
							M = k[1],
							C = I.centerOffset,
							R = l[2] / n.scale,
							B = l[3] / n.scale,
							N = {
								x: R / 2,
								y: B / 2
							};
							C && (N = {
								x: R / 2 - C.x,
								y: B / 2 - C.y
							}),
							(0, D.isDefaultStyle)(o.styleId) ? (v.push(L, -M, 0), _.push(R, B, N.x, N.y), m.push.apply(m, (0, b.
						default)(l)), y.push(0, 1, 0, 1), I.textSymbolIndexList = [r], r += 1) : "center" === e.text_align &&
							function() {
								var t = new Uint16Array(I.text.length),
								n = I.text.length,
								i = [0],
								o = 0; (0, u.
							default)(I.text).forEach(function(t) {
									var n = "normal" === e.font_weight ? f[t] : h[t],
									r = e.font_size / n.fontSize;
									i.push(i[i.length - 1] + n.width * r),
									o = Math.max(o, n.height * r)
								});
								var a = i[n],
								s = o,
								l = Math.max(1, a / R, s / B);
								R = a,
								B = s,
								N = {
									x: C ? R / 2 - C.x * (e.stretching_len ? 1 : l) : R / 2,
									y: C ? B / 2 - C.y * (e.stretching_len ? 1 : l) : B / 2
								};
								for (var c = 0; c < n; c++) {
									var d = "normal" === e.font_weight ? f[I.text[c]] : h[I.text[c]],
									p = e.font_size / d.fontSize;
									v.push(L, -M, 0),
									g.push(1, 1),
									_.push(d.width * p, d.height * p, N.x - i[c], N.y),
									m.push(d.x, d.y, d.width, d.height),
									y.push(0, 1, 0, 1),
									x.push.apply(x, (0, b.
								default)(e.font_color)),
									S.push.apply(S, (0, b.
								default)((0, V.encodePickingColor)(e.style_id, !0))),
									w.push.apply(w, (0, b.
								default)(e.stroke_color)),
									E.push(e.stroke_width),
									t[c] = r,
									r += 1
								}
								I.textSymbolIndexList = t
							} (),
							I.instance_trans = [L, -M],
							I.instance_coords = [R, B, N.x, N.y]
						}
					}
				}),
				P.forEach(function(t) {
					var e = t.datas[0];
					if (e) {
						var i = e.text_bounds;
						i[1] += c[e.cidx] || 0;
						var a = null;
						if (a = e.isBillboard && e.font_size ? {
							w: i[2] / 1.5,
							h: i[3] / 1.5
						}: {
							w: e.font_size,
							h: e.font_size
						},
						v.push(e.coords[0], -e.coords[1], 1), g.push(1, 1), (0, D.isDefaultStyle)(o.styleId)) {
							var s = i[2] / n.scale,
							l = i[3] / n.scale;
							_.push(s, l, s / 2, l / 2),
							m.push(i[0], i[1], i[2], i[3]),
							y.push(0, 1, 0, 1)
						} else if (e.isBillboard) {
							var u = d && d[e.text];
							e.text_bounds = [u.x, u.y, u.width, u.height],
							t.datas[1].text_bounds = [u.x, u.y, u.width, u.height],
							m.push(u.x, u.y, u.width, u.height),
							_.push(a.w, a.h, a.w / 2, a.h / 2),
							y.push(0, 1, -1, 1),
							x.push(1, 1, 1, 1),
							w.push(0, 0, 0, 0),
							S.push(0, 0, 0, 0),
							E.push(0)
						} else {
							var p = "normal" === e.font_weight ? f[e.text] : h[e.text],
							T = e.font_size / p.fontSize;
							e.glyph_text_bounds = [p.x, p.y, p.width, p.height],
							t.datas[1].glyph_text_bounds = [p.x, p.y, p.width, p.height],
							_.push(p.width * T, p.height * T, p.width * T / 2, p.height * T / 2),
							m.push(p.x, p.y, p.width, p.height),
							y.push(0, 1, 0, 1),
							x.push.apply(x, (0, b.
						default)(e.font_color)),
							S.push.apply(S, (0, b.
						default)((0, V.encodePickingColor)(e.style_id, !0))),
							w.push.apply(w, (0, b.
						default)(e.stroke_color)),
							E.push(e.stroke_width)
						}
						t.roadSymbolIndex = r,
						r += 1
					}
				});
				var I = new Float32Array(v),
				k = new Float32Array(_),
				L = new Float32Array(m),
				M = new Float32Array(g),
				C = new Float32Array(y),
				R = new Uint8ClampedArray(x),
				B = new Uint8ClampedArray(S);
				return {
					instanceTransTypeArray: I,
					instanceCoordsTypeArray: k,
					instanceTextBoundsTypeArray: L,
					instanceStrentchinglensTypeArray: M,
					instanceInfosTypeArray: C,
					instanceColorsTypeArray: R,
					instanceStrokeColorsTypeArray: new Uint8ClampedArray(w),
					instanceStrokeWidthTypeArray: new Float32Array(E),
					instancePickingColorsTypeArray: B,
					count: y.length / 4
				}
			}
		},
		{
			key: "parsePoi",
			value: function(t, e, n, i) {
				var o = n.tileSize,
				r = {};
				r.cidx = t.cidx,
				r.coords = t[1].slice(),
				r.text = [],
				r.text_mix = t[3] || 0,
				r.text_align = "center",
				r.text_bounds = t[5],
				r.style_id = t[0],
				r.font_size = e.font_size,
				r.font_color = e.font_color ? [].concat((0, b.
			default)(e.font_color.slice(0, 3)), [255 * e.font_color[3]]) : [0, 0, 0, 0],
				r.stroke_color = e.background_color ? [].concat((0, b.
			default)(e.background_color.slice(0, 3)), [255 * e.background_color[3]]) : [0, 0, 0, 0];
				var a = t.transform,
				s = a.transX,
				l = void 0 === s ? 0 : s,
				u = a.transY,
				c = void 0 === u ? 0 : u,
				f = a.scale,
				d = void 0 === f ? 1 : f,
				h = (0 + l) * d,
				v = (o + l) * d,
				_ = (0 + c) * d,
				m = (o + c) * d,
				g = t[2];
				switch (r.textName = g, r.font_weight = 1 === e.font_weight ? "bold": "normal", r.font_family = e.font_family ? e.font_family: "", e.effect) {
				case 5:
					r.stroke_width = e.effect_size + 1;
					break;
				case 6:
					(0, D.isDefaultStyle)(this.styleId) ? (r.isBillboard = !0, this._needUploadTileImage = !0) : (r.stretching_len = e.stretching_len || [0, 0], r.icon = e.icon_offset, r.icon_coords = [t[1][0], t[1][1]]);
				case 1:
				case 2:
				default:
					r.background_color = null,
					r.stroke_width = 0
				}
				if (e.icon_offset && "65535" !== e.icon_offset && "-1" !== e.icon_offset && 6 !== e.effect) {
					var y = e.icon_offset;
					r.icon = y,
					r.icon_coords = [t[1][0], t[1][1]],
					r.coords.shift(),
					r.coords.shift(),
					i && i.isExt && e.font_size > 0 && 0 === r.coords.length && (r.coords.push(r.icon_coords[0]), r.coords.push(r.icon_coords[1] + (8 + e.font_size / 2 + 2) * d), /\//.test(r.textName) && (r.coords.push(r.icon_coords[0]), r.coords.push(r.coords[1] + (e.font_size + 2) * d)))
				}
				if (r.coords[0] < h || r.coords[0] >= v || r.coords[1] < _ || r.coords[1] >= m) return null;
				if (!r.font_size || void 0 === g || "@" === g) return r;
				var x = g.toString(),
				S = r.isBillboard ? [x] : x.split(/\//),
				w = null;
				r.icon_coords && !r.stretching_len ? w = {
					x: r.icon_coords[0],
					y: r.icon_coords[1]
				}: 2 === S.length && (w = {
					x: (r.coords[0] + r.coords[2]) / 2,
					y: (r.coords[1] + r.coords[3]) / 2
				},
				r.stretching_len && (r.icon_coords = [w.x, w.y]));
				for (var E = 0,
				T = S.length; E < T; E++) {
					var A = r.coords[2 * E],
					P = r.coords[2 * E + 1],
					I = r.text_bounds,
					k = null;
					if (r.stretching_len && 4 === r.text_bounds.length) {
						var L = (0, p.
					default)(r.text_bounds, 4),
						M = L[0],
						C = L[1],
						R = L[2],
						B = L[3];
						k = 2 === T ? [M, C / 2 - 2, R, B / 2] : [M, C, R, B / 2],
						r.text_bounds = [M, C, R, B / 2, M, C / 2 - 2, R, B / 2]
					} else k = 2 === T ? I.slice(4 * (1 - E), 4 * (1 - E) + 4) : I.slice(4 * E, 4 * E + 4);
					var N = w ? {
						x: (A - w.x) / d,
						y: (P - w.y) / d
					}: null,
					O = {
						text: S[E],
						coords: w ? [w.x, w.y] : [A, P],
						centerOffset: N,
						rank: t[4]
					};
					if (! (A && P || 0 === A || 0 === P)) break;
					r.text.push(O),
					r.isBillboard && this._billboardFeatures.push({
						text: S[E],
						bounds: k,
						cidx: r.cidx
					})
				}
				return r
			}
		},
		{
			key: "parseRoadName",
			value: function(t, e, n, i, o, r, a) {
				var s = a || 256,
				l = [],
				u = "",
				c = t.transform,
				f = c.transX,
				d = void 0 === f ? 0 : f,
				h = c.transY,
				v = void 0 === h ? 0 : h,
				p = c.scale,
				_ = void 0 === p ? 1 : p,
				m = (0 + d) * _,
				g = (s + d) * _,
				y = (0 + v) * _,
				x = (s + v) * _,
				S = t.length / 2 - .5,
				w = void 0;
				if (S % 1 == 0) w = t[S][1];
				else {
					var E = t[Math.floor(S)][1],
					T = t[Math.ceil(S)][1];
					w = [(E[0] + T[0]) / 2, (E[1] + T[1]) / 2]
				}
				if (w[0] < m || w[0] > g || w[1] < y || w[1] > x) return null;
				for (var A = 0,
				P = t.length; A < P; A++) {
					var I = t[A],
					k = I[0],
					L = X(e, n, i, k, o);
					if (L) {
						var M = [],
						C = {};
						switch (C.coordScale = _, C.cidx = t.cidx, C.coords = I[1].slice(), C.text = I[2], C.text_mix = I[3] || 0, C.text_bounds = I[5], C.rank = I[4], C.font_size = L.font_size, C.style_id = I[0], C.font_color = L.font_color ? [].concat((0, b.
					default)(L.font_color.slice(0, 3)), [255 * L.font_color[3]]) : [0, 0, 0, 0], C.stroke_color = L.background_color ? [].concat((0, b.
					default)(L.background_color.slice(0, 3)), [255 * L.background_color[3]]) : [0, 0, 0, 0], L.effect) {
						case 5:
							C.stroke_width = L.effect_size + 1;
							break;
						case 6:
							C.isBillboard = !0,
							this._needUploadTileImage = !0;
						case 1:
						case 2:
						default:
							C.background_color = null,
							C.stroke_width = 0
						}
						u += I[2],
						C.font_weight = 1 === L.font_weight ? "bold": "normal",
						C.font_family = L.font_family ? L.font_family: "",
						M.push(C),
						M.push(H.clone(C)),
						C.isBillboard && this._billboardFeatures.push({
							text: C.text,
							bounds: C.text_bounds,
							cidx: C.cidx
						}),
						l.push({
							datas: M,
							font_size: L.font_size,
							id: r + "_" + q()
						})
					}
				}
				return {
					roads: l,
					roadName: u
				}
			}
		},
		{
			key: "parseArrow",
			value: function(t, e) {
				var n = {};
				return n.coords = [t[1][0], -t[1][1], t[1][2], -t[1][3]],
				n.color_fill = e.color_fill,
				n.width = e.width,
				n
			}
		}]),
		t
	} ();
	t.exports = tt
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		f[t] = {};
		for (var n = 3; n <= 20; n++) {
			var i = a(e.regionStyles, null, null, u, n);
			i && (f[t][n] = "rgba(" + l(i.color_fill).join(",") + ")")
		}
	}
	function o(t, e) {
		return f[t] && f[t][Math.floor(e)] || c
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.setBgColor = i,
	e.getBgColor = o;
	var r = n(497),
	a = r.getVectorStyle,
	s = n(10),
	l = s.colorToRGBA,
	u = "196613",
	c = "rgba(0, 0, 0, 0)",
	f = {}
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		if (t && (!t || 0 !== t.length)) {
			var n = t.length,
			i = void 0;
			if (1 === n) e <= t[0].maxScaleVal && e >= t[0].minScaleVal && (i = a.objectClone(t[0]));
			else {
				var o = !0,
				s = !1,
				l = void 0;
				try {
					for (var u, c = (0, r.
				default)(t); ! (o = (u = c.next()).done); o = !0) {
						var f = u.value;
						if (e <= f.maxScaleVal && e >= f.minScaleVal) {
							i = a.objectClone(f);
							break
						}
					}
				} catch(t) {
					s = !0,
					l = t
				} finally {
					try { ! o && c.
						return && c.
						return ()
					} finally {
						if (s) throw l
					}
				}
			}
			return i
		}
	}
	var o = n(27),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = n(10);
	e.getVectorStyle = function(t, e, n, o, r) {
		var s = t[o];
		if (s) {
			var l = i(s, r);
			if (l && e && n && l[n]) {
				var u = e[l[n]];
				if (u) {
					var c = i(u, r);
					c && "-1" === c.icon_offset && 6 === c.effect && (c.icon_offset = l.icon_offset || "-1"),
					l = a.extend({},
					l, c)
				}
			} else if (e && n) {
				var f = s[0] && s[0][n],
				d = e[f];
				l = i(d, r)
			}
			return l
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		return new f.
	default(function(n) {
			var i = t || 0,
			o = p.
		default.QMAPI_poi_icon_json + i,
			r = -1,
			l = "",
			c = null;
			m.
		default.support() ? m.
		default.get(o,
			function(t) {
				var f = JSON.parse(t);
				r = t ? f.version: r,
				l = e.replace("{id}", i).replace("{version}", r),
				h.
			default.getJSON(null, l,
				function(t, e, l) {
					if (!t && e && e.data) {
						if ("{}" !== (0, u.
					default)(e.data)) return s({
							styleId:
							i,
							version: r,
							time: l
						}),
						c = e.data,
						void m.
					default.set(o, (0, u.
					default)(e),
						function() {
							n(c)
						});
						c = f.data
					} else a({
						styleId: i,
						version: r,
						err: t
					}),
					console.error(t, e),
					c = f.data;
					n(c)
				})
			}) : (l = e.replace("{id}", i).replace("{version}", r), h.
		default.getJSON(null, l,
			function(t, e, o) {
				return ! t && e && e.data ? "{}" === (0, u.
			default)(e.data) ? (a({
					styleId: i,
					version: r,
					err: null
				}), console.error(e), void n(null)) : (s({
					styleId: i,
					version: r,
					time: o
				}), c = e.data, void n(c)) : (a({
					styleId: i,
					version: r,
					err: t
				}), console.error(t, e), void n(null))
			}))
		})
	}
	function r(t) {
		var e = t.data,
		n = t.styleId,
		i = t.iconIndexSrc;
		return new f.
	default(function(t) {
			e ? m.
		default.support() ? m.
		default.set(y, (0, u.
		default)({
				data:
				e
			}),
			function() {
				t(e)
			}) : (console.error("兼容性错误：当前浏览器不支持LocalStorage。"), t(null)) : o(n, i).then(function(e) {
				m.
			default.support() ? m.
			default.set(y, (0, u.
			default)({
					data:
					e
				}),
				function() {
					t(e)
				}) : (console.error("兼容性错误：当前浏览器不支持LocalStorage。"), t(null))
			})
		})
	}
	function a(t) {
		var e = t.styleId,
		n = t.version,
		i = t.err; (0, g.qos)("ii", {
			styleId: e,
			version: n,
			error: i && i.status || 0
		})
	}
	function s(t) {
		var e = t.styleId,
		n = t.version,
		i = t.time; (0, g.qos)("ii", {
			styleId: e,
			version: n,
			loadTime: i
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.setPoiIconIndex = e.loadPoiIconIndexFile = void 0;
	var l = n(113),
	u = i(l),
	c = n(25),
	f = i(c),
	d = n(79),
	h = i(d),
	v = n(137),
	p = i(v),
	_ = n(89),
	m = i(_),
	g = n(43),
	y = p.
default.QMAPI_poi_icon_json + "config";
	e.loadPoiIconIndexFile = o,
	e.setPoiIconIndex = r
},
, , , , ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(24),
	r = i(o),
	a = n(27),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(106),
	y = i(g),
	x = n(10),
	b = i(x),
	S = function(t) {
		function e() { (0, f.
		default)(this, e);
			var t = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this));
			return t._rawGeometries = [],
			t._idSet = {},
			t.geometries = [],
			t
		}
		return (0, m.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_checkGeometries",
			value: function() {
				return arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []
			}
		},
		{
			key: "_assignIdToGeometry",
			value: function(t) {
				var e = [];
				return t.forEach(function(t) {
					0 === t.id || t.id ? e.includes(t.id) && (t.id = t.id + "-" + b.
				default.uniqueId()):
					t.id = b.
				default.uniqueId(),
					e.push(t.id)
				}),
				t
			}
		},
		{
			key: "_updateGeometryIdSet",
			value: function(t) {
				var e = {};
				return t.forEach(function(t, n) {
					e[t.id] = n
				}),
				e
			}
		},
		{
			key: "_transferFromGeometry",
			value: function(t) {
				var e = b.
			default.clone(t);
				return e.forEach(function(t) {
					t.rank = t.rank || 0
				}),
				e.sort(function(t, e) {
					return t.rank - e.rank
				}),
				e
			}
		},
		{
			key: "setGeometries",
			value: function(t, e) {
				this._checkGeometries(t, e),
				this._rawGeometries = this._assignIdToGeometry(t),
				this._idSet = this._updateGeometryIdSet(this._rawGeometries),
				this.geometries = this._transferFromGeometry(this._rawGeometries),
				this.emit("geometry_changed")
			}
		},
		{
			key: "getGeometries",
			value: function() {
				return b.
			default.clone(this._rawGeometries)
			}
		},
		{
			key: "getGeometryById",
			value: function(t) {
				var e = !0,
				n = !1,
				i = void 0;
				try {
					for (var o, r = (0, s.
				default)(this._rawGeometries); ! (e = (o = r.next()).done); e = !0) {
						var a = o.value;
						if (a.id === t) return a
					}
				} catch(t) {
					n = !0,
					i = t
				} finally {
					try { ! e && r.
						return && r.
						return ()
					} finally {
						if (n) throw i
					}
				}
				return null
			}
		},
		{
			key: "updateGeometries",
			value: function(t, e) {
				var n = this;
				Array.isArray(t) || (t = [t]),
				e || this._checkGeometries(t, this.styles),
				[].concat((0, r.
			default)(this._assignIdToGeometry(t))).forEach(function(t) {
					n._idSet.hasOwnProperty(t.id) ? n._rawGeometries[n._idSet[t.id]] = t: (n._idSet[t.id] = n._rawGeometries.length, n._rawGeometries.push(t))
				}),
				this._idSet = this._updateGeometryIdSet(this._rawGeometries),
				this.geometries = this._transferFromGeometry(this._rawGeometries),
				this.emit("geometry_changed")
			}
		},
		{
			key: "add",
			value: function(t) {
				var e = this;
				return t ? (Array.isArray(t) || (t = [t]), this._checkGeometries(t, this.styles), this._assignIdToGeometry(t).forEach(function(t) {
					e._idSet.hasOwnProperty(t.id) || (e._idSet[t.id] = e._rawGeometries.length, e._rawGeometries.push(t))
				}), this.updateGeometries(this._rawGeometries, !0), this) : this
			}
		},
		{
			key: "remove",
			value: function(t) {
				if (!t) return this;
				Array.isArray(t) || (t = [t]);
				var e = this._rawGeometries.length,
				n = this._rawGeometries.filter(function(e) {
					return - 1 === t.indexOf(e.id)
				});
				return n.length === e ? this: (this.setGeometries(n), this)
			}
		},
		{
			key: "destroy",
			value: function() {
				this._rawGeometries = [],
				this._idSet = {},
				this.geometries = []
			}
		}]),
		e
	} (y.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(41),
	u = i(l),
	c = n(29),
	f = n(558),
	d = i(f),
	h = n(74),
	v = {
		map: 0,
		screen: 1
	},
	p = {
		center: 0,
		top: 1,
		bottom: 2,
		left: 3,
		right: 4
	},
	_ = {
		src: d.
	default,
		width: 34,
		height: 50,
		rotate: 0,
		opacity: 1,
		faceTo: "screen",
		color: "rgba(0, 0, 0, 1)",
		strokeColor: "rgba(0, 0, 0, 0)",
		strokeWidth: 1,
		size: 14,
		direction: "center",
		offset: new h(0, 0)
	},
	m = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, r.
		default)(this, t),
			this._checkMarkerPartStyle(e),
			this._checkLabelPartStyle(e)
		}
		return (0, s.
	default)(t, [{
			key: "_checkMarkerPartStyle",
			value: function(t) {
				var e = t.src,
				n = void 0 === e ? _.src: e,
				i = t.width,
				o = void 0 === i ? _.width: i,
				r = t.height,
				a = void 0 === r ? _.height: r,
				s = t.anchor,
				l = t.rotate,
				f = void 0 === l ? _.rotate: l,
				d = t.opacity,
				v = void 0 === d ? _.opacity: d;
				u.
			default.isNumber(o) ? o <= 0 && (console.error("参数错误：MarkerStyle.width 取值要大于0，实际传入: " + o + "."), o = _.width) : (new c.BaseTypeError("MarkerStyle.width", "number", o).error(), o = _.width),
				u.
			default.isNumber(a) ? a <= 0 && (console.error("参数错误：MarkerStyle.height 取值要大于0，实际传入: " + a + "."), a = _.height) : (new c.BaseTypeError("MarkerStyle.height", "number", a).error(), a = _.height),
				u.
			default.isString(n) || (new c.BaseTypeError("MarkerStyle.src", "string", n).error(), n = _.src),
				s ? u.
			default.isValidOffset(s) || (console.error("参数错误：MarkerStyle.anchor不合法", s), s = new h(o / 2, a)) : s = new h(o / 2, a),
				u.
			default.isNumber(f) ? f < 0 && (console.error("参数错误：MarkerStyle.rotate 取值要大于等于0，实际传入: " + f + "."), f = _.rotate) : (new c.BaseTypeError("MarkerStyle.rotate", "number", f).error(), f = _.rotate),
				u.
			default.isNumber(v) ? v < 0 && (console.error("参数错误：MarkerStyle.opacity 取值要大于等于0，实际传入: " + v + "."), v = _.opacity) : (new c.BaseTypeError("MarkerStyle.opacity", "number", v).error(), v = _.opacity);
				var p = new Image;
				/^data:/.test(n) || (p.crossOrigin = "anonymous"),
				p.src = n,
				this.src = p.src,
				this.width = o,
				this.height = a,
				this.rotate = f,
				this.anchor = s,
				this.opacity = v
			}
		},
		{
			key: "_checkLabelPartStyle",
			value: function(t) {
				var e = t.faceTo,
				n = void 0 === e ? _.faceTo: e,
				i = t.color,
				o = void 0 === i ? _.color: i,
				r = t.strokeColor,
				a = void 0 === r ? _.strokeColor: r,
				s = t.strokeWidth,
				l = void 0 === s ? _.strokeWidth: s,
				f = t.size,
				d = void 0 === f ? _.size: f,
				h = t.direction,
				m = void 0 === h ? _.direction: h,
				g = t.offset,
				y = void 0 === g ? _.offset: g;
				u.
			default.isString(n) || (new c.BaseTypeError("MarkerStyle.faceTo", "string", n).error(), n = _.faceTo),
				u.
			default.isValidColor(o) || (console.error("MarkerStyle.color属性无效", o), o = _.color),
				u.
			default.isValidColor(a) || (console.error("MarkerStyle.color属性无效", a), a = _.strokeColor),
				u.
			default.isNumber(l) ? l < 0 && (console.error("参数错误：MarkerStyle.strokeWidth 取值要大于等于0，实际传入: " + l + "."), l = _.strokeWidth) : (new c.BaseTypeError("MarkerStyle.strokeWidth", "number", l).error(), l = _.strokeWidth),
				u.
			default.isNumber(d) ? d < 0 && (console.error("参数错误：MarkerStyle.size 取值要大于等于0，实际传入: " + d + "."), d = _.size) : (new c.BaseTypeError("MarkerStyle.size", "number", d).error(), d = _.size),
				u.
			default.isString(m) || (new c.BaseTypeError("MarkerStyle.direction", "string", m).error(), m = _.direction),
				y && !u.
			default.isObject(y) ? (new c.BaseTypeError("MarkerStyle.offset", "object", y).error(), y = _.offset) : u.
			default.isValidOffset(y) || (console.error("参数错误：MarkerStyle.offset不合法", y), y = _.offset),
				this.faceTo = n in v ? v[n] : v.screen,
				this.color = o,
				this.strokeColor = a,
				this.strokeWidth = l,
				this.size = d,
				this.direction = m in p ? p[m] : p.center,
				this.offset = y
			}
		}]),
		t
	} ();
	t.exports = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		if ((0, k.isSimple)(t)) {
			for (var e = [], n = 0; n < t.length - 1; n++) {
				var i = [t[n], t[n + 1]];
				e.push(i)
			}
			return e
		}
		return t.map(function(t) {
			return o(t)
		}).flat()
	}
	var r = n(140),
	a = i(r),
	s = n(17),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(35),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(339),
	S = i(b),
	w = n(41),
	E = i(w),
	T = n(303),
	A = i(T),
	P = n(220),
	I = n(66),
	k = n(480),
	L = n(29),
	M = E.
default.isValidColor,
	C = E.
default.isValidLatLng,
	R = function(t) {
		function e(t) {
			return (0, d.
		default)(this, e),
			(0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, x.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				this.enableGeodesic = t.enableGeodesic || !1,
				this._eraseOpts = {}
			}
		},
		{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = P.GEOMETRY_TYPES.POLYLINE,
				this._layerType = I.RENDER_LAYER_TYPE.polyline,
				this._className = "MultiPolyline"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.styleId || (t.styleId = "default") : console.error("MultiPolyline.geometries: 希望传入PolylineGeometry数组，实际第" + e + "元素不存在！");
					var n = t.paths,
					i = t.rainbowPaths;
					n || i || console.error("MultiPolyline.geometries: 希望传入PolylineGeometry数组，实际第" + e + "元素的未传入路径信息！"),
					!n || (0, k.isSimple)(n) || (0, k.isComplexLine)(n) || console.error("MultiPolyline.geometries: 希望传入PolylineGeometry数组，实际第" + e + "元素的paths属性无效！"),
					Array.isArray(i) && i.length > 0 && (i.map(function(t, n) {
						return t.color && !M(t.color) && console.error("MultiPolyline.geometries: 第" + e + "元素的rainbowPaths中的第" + n + "个元素的color属性无效！"),
						t.borderColor && !M(t.borderColor) && console.error("MultiPolyline.geometries: 第" + e + "元素的rainbowPaths中的第" + n + "个元素的borderColor属性无效！"),
						t.path
					}).every(function(t) {
						return (0, k.isSimple)(t)
					}) ? delete t.paths: console.error("MultiPolyline.geometries: 希望传入PolylineGeometry数组，实际第" + e + "元素的rainbowPath属性无效！"))
				})
			}
		},
		{
			key: "_getRenderSourceData",
			value: function() {
				return {
					type: this._geometryType,
					styles: this.styles,
					enableGeodesic: this.enableGeodesic || !1,
					_eraseOpts: this._eraseOpts || null,
					geometries: this._getRenderableGeometries()
				}
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new S.
			default
			}
		},
		{
			key: "_checkStyles",
			value: function(t) {
				var n = this; (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, l.
			default)(t).forEach(function(e) {
					var i = t[e];
					i && i instanceof S.
				default ? i.width && i.width > 0 && i.width % 1 == 0 ? M(i.color) ? "borderWidth" in i && !(i.borderWidth >= 0 && i.borderWidth % 1 == 0) ? console.error("MultiPolyline.styles: 样式id ", e, " 对应的PolylineStyle.borderWidth属性无效", i) : "borderColor" in i && !M(i.borderColor) ? console.error("MultiPolyline.styles: 样式id ", e, " 对应的PolylineStyle.borderColor属性无效", i) : M(i.eraseColor) || (console.error("MultiPolyline.styles: 样式id ", e, " 对应的PolylineStyle.eraseColor属性无效", i), t[e].eraseColor = n._getDefaultStyle().eraseColor) : console.error("MultiPolyline.styles: 样式id ", e, " 对应的PolylineStyle.color属性无效", i) : console.error("MultiPolyline.styles: 样式id ", e, " 对应的PolylineStyle.width属性无效", i) : console.error("MultiPolyline.styles: 样式id ", e, "希望传入PolylineStyle实例，实际传入：", i)
				})
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return this.getGeometries().map(function(t) {
					return t.paths.flat(1 / 0)
				}).flat()
			}
		},
		{
			key: "_getAllSegments",
			value: function() {
				return this.getGeometries().map(function(t) {
					return o(t.paths)
				}).flat()
			}
		},
		{
			key: "eraseTo",
			value: function(t, e, n) {
				if (this._checkEraseParams(t, e, n)) {
					var i = this.getGeometryById(t);
					if (!i) return console.error("eraseTo: 不存在id为" + t + "的polyline geometry 对象"),
					this;
					if (e > i.paths.length - 1 || e <= 0) return console.error("eraseTo: 坐标索引index：" + e + " 不在对应path点串区间内"),
					this;
					this._eraseOpts[t] = {
						index: e,
						point: n
					},
					this.map.getSource(this.id).setData(this._getRenderSourceData())
				}
				return this
			}
		},
		{
			key: "_checkEraseParams",
			value: function(t, e, n) {
				return C(n) ? "number" != typeof e || (0, a.
			default)(e) ? (console.error("eraseTo方法中参数index: " + e + "不合法!"), !1) : "string" == typeof t || (new L.ClassTypeError("eraseTo的参数id[" + t + "]", "String", t).error(), !1) : (new L.ClassTypeError("eraseTo方法中的参数point[" + n + "]", "LatLng", n).error(), !1)
			}
		}]),
		e
	} (A.
default);
	t.exports = R
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.defaultLogoRules = [{
		level: [0, 6],
		districts: [{
			rule: 0,
			priority: 0,
			frontier: "default",
			logo_name: "tencent",
			logo: "https://mapapi.qq.com/sdk/overseamap/logo/202107/tencent_color_logo.png",
			logo_night: "https://mapapi.qq.com/sdk/overseamap/logo/202107/tencent_color_logo_night.png"
		}]
	},
	{
		level: [7, 18],
		districts: [{
			rule: 0,
			priority: 0,
			frontier: "taiwan",
			logo_name: "taiwan",
			logo: "https://mapapi.qq.com/sdk/overseamap/logo/HERE_Logo_black.png",
			logo_night: ""
		},
		{
			rule: 0,
			priority: 0,
			frontier: "default",
			logo_name: "tencent",
			logo: "https://mapapi.qq.com/sdk/overseamap/logo/202107/tencent_color_logo.png",
			logo_night: "https://mapapi.qq.com/sdk/overseamap/logo/202107/tencent_color_logo_night.png"
		}]
	}],
	e.defaultFrontier = {
		version: 7,
		china: "124.240000,39.863000:127.060000,41.420000:128.320000,41.340000:128.338164,41.966811:129.070015,42.006633:129.392187,42.394602:129.544000,42.337000:129.757733,42.443019:129.915455,42.958121:130.581000,42.411000:130.664000,42.409000:130.660000,42.750000:131.056800,42.832500:131.362267,43.147780:131.359097,44.050378:131.184574,44.758711:131.911825,45.219501:133.163642,44.937724:135.144366,48.211013:135.144366,48.597000:131.071828,48.211013:130.773650,49.035551:128.751969,49.726565:125.969075,53.154351:123.347269,53.704738:120.827269,53.390754:119.713597,52.637780:120.321762,52.210396:118.926328,50.226355:117.662701,49.700280:116.622716,49.956516:115.284508,48.000368:116.104389,47.451176:118.485448,47.755809:119.550866,46.911548:117.463642,46.804509:113.640000,45.105329:111.969090,45.243847:111.267254,44.465714:111.589045,43.737317:109.905388,42.763982:107.448179,42.614694:105.337313,41.946215:100.992746,42.800196:96.838239,42.914056:95.070866,44.957807:91.816477,45.242319:91.161836,46.742245:90.130007,47.948495:88.699097,48.336174:87.883642,49.202090:86.809933,49.172099:85.459963,48.255788:85.328157,47.119427:82.919985,47.328453:82.134523,45.619623:82.396343,45.291415:81.735685,45.446091:79.797183,45.018009:80.618157,43.259401:80.112694,42.868284:80.120896,42.260590:77.976351,41.282314:76.788172,41.096389:76.197254,40.491205:75.361880,40.846808:73.365418,39.794560:73.634523,38.503352:74.669067,38.423003:74.896815,37.310540:74.429528,37.294106:74.454501,36.972073:75.734530,36.578999:75.962701,35.784605:77.852731,35.299899:78.205470,34.574291:78.973568,32.910437:78.263619,32.582183:78.649985,30.992536:81.199112,29.930890:81.625396,30.231654:85.988179,27.769037:88.674612,27.787987:88.840910,27.047339:89.241858,27.247275:89.644552,28.077447:90.426358,28.002589:91.425425,27.605415:92.127284,26.721880:93.834582,26.907073:95.855604,28.198876:97.000074,27.593593:97.491836,27.849236:97.700896,28.296779:98.301769,27.394792:98.605433,27.417494:98.502702,26.026786:97.440895,25.088802:97.485448,23.745403:98.497224,24.030523:98.809985,23.174956:99.324515,22.945024:99.099993,22.084196:100.205485,21.391178:101.003735,21.463004:101.278198,21.122876:101.931836,21.129823:101.785481,22.197373:102.650063,22.558783:103.074619,22.382137:103.979093,22.474798:104.809933,22.767793:105.399978,23.049961:106.469971,22.704082:106.610899,21.787060:107.897261,21.372454:107.490036,19.305984:109.748489,14.674666:110.039063,11.480025:107.666016,6.271618:111.752930,3.281824:112.939454,3.413421:115.018257,6.054474:118.674316,10.790140:119.164223,12.212996:119.707031,18.020528:121.959229,21.677848:122.699226,23.809795:127.303391,24.447079:127.390663,31.568056:124.335754,32.823666",
		inland: "124.240000,39.863000:127.060000,41.420000:128.320000,41.340000:128.338164,41.966811:129.070015,42.006633:129.392187,42.394602:129.544000,42.337000:129.757733,42.443019:129.915455,42.958121:130.581000,42.411000:130.664000,42.409000:130.660000,42.750000:131.056800,42.832500:131.362267,43.147780:131.359097,44.050378:131.184574,44.758711:131.911825,45.219501:133.163642,44.937724:135.144366,48.211013:135.144366,48.597000:131.071828,48.211013:130.773650,49.035551:128.751969,49.726565:125.969075,53.154351:123.347269,53.704738:120.827269,53.390754:119.713597,52.637780:120.321762,52.210396:118.926328,50.226355:117.662701,49.700280:116.622716,49.956516:115.284508,48.000368:116.104389,47.451176:118.485448,47.755809:119.550866,46.911548:117.463642,46.804509:113.640000,45.105329:111.969090,45.243847:111.267254,44.465714:111.589045,43.737317:109.905388,42.763982:107.448179,42.614694:105.337313,41.946215:100.992746,42.800196:96.838239,42.914056:95.070866,44.957807:91.816477,45.242319:91.161836,46.742245:90.130007,47.948495:88.699097,48.336174:87.883642,49.202090:86.809933,49.172099:85.459963,48.255788:85.328157,47.119427:82.919985,47.328453:82.134523,45.619623:82.396343,45.291415:81.735685,45.446091:79.797183,45.018009:80.618157,43.259401:80.112694,42.868284:80.120896,42.260590:77.976351,41.282314:76.788172,41.096389:76.197254,40.491205:75.361880,40.846808:73.365418,39.794560:73.634523,38.503352:74.669067,38.423003:74.896815,37.310540:74.429528,37.294106:74.454501,36.972073:75.734530,36.578999:75.962701,35.784605:77.852731,35.299899:78.205470,34.574291:78.973568,32.910437:78.263619,32.582183:78.649985,30.992536:81.199112,29.930890:81.625396,30.231654:85.988179,27.769037:88.674612,27.787987:88.840910,27.047339:89.241858,27.247275:89.644552,28.077447:90.426358,28.002589:91.425425,27.605415:92.127284,26.721880:93.834582,26.907073:95.855604,28.198876:97.000074,27.593593:97.491836,27.849236:97.700896,28.296779:98.301769,27.394792:98.605433,27.417494:98.502702,26.026786:97.440895,25.088802:97.485448,23.745403:98.497224,24.030523:98.809985,23.174956:99.324515,22.945024:99.099993,22.084196:100.205485,21.391178:101.003735,21.463004:101.278198,21.122876:101.931836,21.129823:101.785481,22.197373:102.650063,22.558783:103.074619,22.382137:103.979093,22.474798:104.809933,22.767793:105.399978,23.049961:106.469971,22.704082:106.610899,21.787060:107.897261,21.372454:107.490036,19.305984:109.748489,14.674666:110.039063,11.480025:107.666016,6.271618:111.752930,3.281824:112.939454,3.413421:115.018257,6.054474:118.674316,10.790140:119.164223,12.212996:119.707031,18.020528:121.397269,20.720622:118.487770,21.778166:119.578789,24.089008:120.465831,25.121382:121.207406,25.815692:121.869972,25.849447:122.599226,25.209509:122.699226,23.809795:127.303391,24.447079:127.390663,31.568056:124.335754,32.823666",
		japan: "130.058874,35.187485:133.208436,36.728760:135.302372,36.335340:136.056445,37.097326:137.028118,38.068999:138.937959,39.610275:139.004971,42.659319:140.278198,45.741869:141.661984,45.763377:144.566964,44.736690:148.890681,46.139089:149.266393,45.455293:147.984574,43.664498:142.757641,41.453104:142.925171,39.610275:141.098416,34.356762:142.992183,27.280073:141.450908,24.432065:131.432619,25.504256:127.303391,24.447079:127.390663,31.568056:127.210208,33.397935:127.728060,33.848258:128.693979,34.488846:129.402013,35.158401",
		taiwan: "121.397269,20.720622:118.487770,21.778166:119.578789,24.089008:120.465831,25.121382:121.207406,25.815692:121.869972,25.849447:122.599226,25.209509:122.699226,23.809795:121.959229,21.677848"
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return new l.
	default(function(t) {
			var e = c.
		default.QMAPI_oversea;
			d.
		default.support() ? d.
		default.get(e,
			function(e) {
				e || t(null);
				try {
					g = JSON.parse(e),
					t(g)
				} catch(e) {
					t(null)
				}
			}) : t(null)
		})
	}
	function r(t) {
		var e = c.
	default.QMAPI_oversea;
		d.
	default.support() && d.
	default.set(e, t)
	}
	function a(t) {
		var e = t && t.info && t.info.frontier && t.info.frontier.path;
		return e ? new l.
	default(function(t) {
			_(e,
			function(e, n) {
				e && t(g || p.defaultFrontier);
				try {
					var i = m.inflate(n.data, {
						to: "string"
					});
					r(i);
					var o = JSON.parse(i);
					t(o)
				} catch(e) {
					t(g || p.defaultFrontier)
				}
			})
		}) : new l.
	default(function(t) {
			o().then(function(e) {
				t(e || p.defaultFrontier)
			})
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(25),
	l = i(s);
	e.getStorageFrontier = o,
	e.getOnlineFrontier = a;
	var u = n(137),
	c = i(u),
	f = n(89),
	d = i(f),
	h = n(79),
	v = i(h),
	p = n(507),
	_ = v.
default.getArrayBuffer,
	m = n(552),
	g = null
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.ScheduleTaskQueue = e.ScheduleTaskNode = void 0;
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(28),
	u = i(l);
	e.ScheduleTaskNode = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, r.
		default)(this, t),
			this.prev = null,
			this.next = null,
			this.callback = null,
			this._expirationTime = e.expirationTime || u.
		default.now() + 150
		}
		return (0, s.
	default)(t, [{
			key: "isTimeout",
			value: function() {
				return u.
			default.now() >= this._expirationTime
			}
		},
		{
			key: "setCallback",
			value: function(t) {
				this.callback = t
			}
		},
		{
			key: "runTask",
			value: function() {
				var t = null;
				try {
					this.callback && (t = this.callback())
				} catch(t) {
					console.error(t)
				}
				"function" == typeof t ? this.setCallback(t) : this.remove()
			}
		},
		{
			key: "remove",
			value: function() {
				this.prev && (this.prev.next = this.next),
				this.next && (this.next.prev = this.prev),
				this.queue && this.queue.first === this && (this.queue.first = this.next),
				this.queue && this.queue.last === this && (this.queue.last = this.prev),
				this.prev = null,
				this.next = null,
				this.callback = null,
				this.queue = null
			}
		},
		{
			key: "addToQueue",
			value: function(t) {
				this.queue = t,
				this.queue.last ? (this.queue.last.next = this, this.prev = this.queue.last, this.queue.last = this) : this.queue.last = this,
				this.queue.first || (this.queue.first = this)
			}
		}]),
		t
	} (),
	e.ScheduleTaskQueue = function t() { (0, r.
	default)(this, t),
		this.first = null,
		this.last = null
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(337),
	p = i(v),
	_ = n(511),
	m = i(_),
	g = n(10),
	y = n(143),
	x = n(793),
	b = n(41),
	S = i(b),
	w = n(29),
	E = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this)),
			i = t.map,
			o = t.id,
			a = void 0 === o ? (0, g.uniqueId)() : o,
			l = t.zIndex,
			u = void 0 === l ? 0 : l;
			return n.id = a,
			n.level = y.LAYER_LEVEL.OVERLAY_AA,
			n.zIndex = 0,
			n.rank = (0, y.getRank)(n.level, n.zIndex),
			n.setZIndex(u),
			n.onInit(t),
			i && i instanceof p.
		default && n.addTo(i),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "onInit",
			value: function() {}
		},
		{
			key: "addTo",
			value: function(t) {
				if (t !== this.map) return this.remove(),
				t.addVisualPlugin(this),
				this.map = t,
				this.gl = t.renderEngine.gl,
				this.onAddToMap({
					canvas: t.canvasContainer,
					camera: t.renderEngine.camera
				}),
				this
			}
		},
		{
			key: "remove",
			value: function() {
				return this.map && (this.map.removeVisualPlugin(this.id), this.onRemoveFromMap(), this.map = null, this.gl = null),
				this
			}
		},
		{
			key: "redraw",
			value: function() {
				return this.map && this.map._render(),
				this
			}
		},
		{
			key: "draw",
			value: function() {
				var t = this,
				e = this.gl;
				e && (0, x.preserveParameters)(e, {
					DEPTH_TEST: !1,
					STENCIL_TEST: !1,
					BLEND: !0,
					CULL_FACE: !1,
					CULL_FACE_MODE: e.BACK,
					BLEND_SRC_RGB: e.ONE,
					BLEND_DST_RGB: e.ONE_MINUS_SRC_ALPHA,
					BLEND_SRC_ALPHA: e.ONE,
					BLEND_DST_ALPHA: e.ONE_MINUS_SRC_ALPHA,
					VIEWPORT: [0, 0, e.canvas.width, e.canvas.height],
					UNPACK_FLIP_Y_WEBGL: !1,
					UNPACK_PREMULTIPLY_ALPHA_WEBGL: !1
				},
				function() {
					t.onDraw()
				})
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return S.
			default.isNumber(t) ? t < 0 ? (console.error("zIndex希望设置为非负数,实际值为: " + t), this) : (this.zIndex = t, this.rank = (0, y.getRank)(this.level, this.zIndex), this) : (new w.BaseTypeError("zIndex", "Number", t).error(), this)
			}
		},
		{
			key: "getZIndex",
			value: function() {
				return this.zIndex
			}
		},
		{
			key: "setLevel",
			value: function(t) {
				this.level = t,
				this.rank = (0, y.getRank)(t, this.zIndex)
			}
		},
		{
			key: "getId",
			value: function() {
				return this.id
			}
		},
		{
			key: "onAddToMap",
			value: function() {}
		},
		{
			key: "onRemoveFromMap",
			value: function() {}
		},
		{
			key: "onDraw",
			value: function() {}
		}]),
		e
	} (m.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(5),
	u = i(l),
	c = n(4),
	f = i(c),
	d = n(106),
	h = function(t) {
		function e() {
			return (0, s.
		default)(this, e),
			(0, u.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this))
		}
		return (0, f.
	default)(e, t),
		e
	} (d);
	t.exports = h
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		switch (t.type) {
		case p.LIGHT_TYPE.POINT:
			return new S(t);
		case p.LIGHT_TYPE.DIRECTION:
			return new b(t);
		case p.LIGHT_TYPE.AMBIENT:
		default:
			return new x(t)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(3),
	a = i(r),
	s = n(5),
	l = i(s),
	u = n(4),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h);
	e.
default = o;
	var p = n(341),
	_ = n(10),
	m = n(107),
	g = n(227),
	y = i(g),
	x = function() {
		function t(e) {
			var n = e.id,
			i = e.color,
			o = void 0 === i ? "#FFFFFF": i,
			r = e.intensity,
			a = void 0 === r ? 1 : r,
			s = e.type; (0, d.
		default)(this, t),
			this.id = n || (0, _.uniqueId)(),
			this.color = o,
			this.intensity = a,
			this.type = s
		}
		return (0, v.
	default)(t, [{
			key: "color",
			get: function() {
				var t = this;
				return this._color.map(function(e) {
					return e * t.intensity
				})
			},
			set: function(t) {
				this._color = new y.
			default(t, {
					max: 1
				}).toArray().slice(0, 3)
			}
		}]),
		t
	} (),
	b = function(t) {
		function e(t) { (0, d.
		default)(this, e);
			var n = (0, l.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t));
			return n.direction = t.direction,
			n
		}
		return (0, c.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "direction",
			get: function() {
				return this._direction.elements
			},
			set: function(t) {
				this._direction = new m.Vector3(t || [0, 0, -1]).normalize().scale( - 1, -1, -1)
			}
		}]),
		e
	} (x),
	S = function(t) {
		function e(t) { (0, d.
		default)(this, e);
			var n = (0, l.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t));
			return n.position = t.position,
			n.height = t.height,
			n.attenuation = t.attenuation || [1, .045, .0075],
			n
		}
		return (0, c.
	default)(e, t),
		e
	} (x)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		for (var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 4, e = new Float32Array(8 * t * t), n = new Uint8Array(6 * t * t), i = 0, o = 0; o < t; o++) for (var r = 0; r < t; r++) {
			var a = [r / t, o / t],
			s = 1 / t,
			l = 8 * i;
			e[l] = a[0],
			e[l + 1] = a[1],
			e[l + 2] = a[0],
			e[l + 3] = a[1] + s,
			e[l + 4] = a[0] + s,
			e[l + 5] = a[1],
			e[l + 6] = a[0] + s,
			e[l + 7] = a[1] + s;
			var u = 6 * i,
			c = 4 * i;
			n[u + 0] = c + 0,
			n[u + 1] = c + 2,
			n[u + 2] = c + 1,
			n[u + 3] = c + 1,
			n[u + 4] = c + 2,
			n[u + 5] = c + 3,
			i += 1
		}
		return {
			vertices: e,
			indices: n
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(24),
	a = i(r),
	s = n(3),
	l = i(s),
	u = n(0),
	c = i(u),
	f = n(1),
	d = i(f),
	h = n(5),
	v = i(h),
	p = n(35),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(305),
	x = i(y),
	b = n(596),
	S = n(139),
	w = function(t) {
		function e(t) { (0, c.
		default)(this, e);
			var n = (0, v.
		default)(this, (e.__proto__ || (0, l.
		default)(e)).call(this, t));
			return n.defaultShaderConfig = {
				source: b.defaultShader,
				params: {
					attributes: ["a_position"],
					uniforms: ["u_matrix", "u_size", "u_texInfo", "u_opacity", "u_sampler"]
				},
				geometry: {
					vertices: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),
					indices: new Uint8Array([0, 2, 1, 1, 2, 3])
				}
			},
			n.sphereShaderConfig = {
				source: b.sphereShader,
				params: {
					attributes: ["a_position"],
					uniforms: ["u_matrix", "u_size", "u_texInfo", "u_opacity", "u_sampler", "u_mercator", "uZoom", "uCenter", "uMatrix", "u_ratio", "u_wireframe"]
				},
				geometry: o(4)
			},
			n.shaderSource = n.defaultShaderConfig.source,
			n.shaderParams = n.defaultShaderConfig.params,
			n
		}
		return (0, g.
	default)(e, t),
		(0, d.
	default)(e, [{
			key: "preDraw",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				n = t.isSphere,
				i = n ? this.sphereShaderConfig: this.defaultShaderConfig,
				o = i.source,
				r = i.params,
				a = i.geometry;
				if (this.shaderSource = o, this.shaderParams = r, (0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "preDraw", this).call(this), !i.buffers) {
					var s = a.vertices,
					u = a.indices;
					i.buffers = this.createBuffer(null, s, u)
				}
				this.buffers = i.buffers,
				this.bindBuffer()
			}
		},
		{
			key: "bindBuffer",
			value: function() {
				var t = this.gl;
				this.buffers.vertices.bind(),
				this.buffers.vertices.pointToAttrib({
					location: this.a_position,
					size: 2,
					type: t.FLOAT
				}),
				this.buffers.indices.bind()
			}
		},
		{
			key: "draw",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				t.isSphere ? this.drawOnSphere(t) : this.drawOnPlane(t)
			}
		},
		{
			key: "drawOnPlane",
			value: function(t) {
				var e = t.matrix,
				n = t.size,
				i = t.texInfo,
				o = t.opacity,
				r = this.gl;
				r.uniformMatrix4fv(this.u_matrix, !1, e.elements),
				r.uniform1i(this.u_sampler, 0),
				r.uniform2f(this.u_size, n.width, n.height),
				r.uniform4f(this.u_texInfo, i.s, i.t, i.w, i.h),
				r.uniform1f(this.u_opacity, o),
				r.drawElements(r.TRIANGLES, this.buffers.length, r.UNSIGNED_BYTE, 0)
			}
		},
		{
			key: "drawOnSphere",
			value: function(t) {
				var e = t.mercator,
				n = t.zoom,
				i = t.center,
				o = t.pvMatrix,
				r = t.matrix,
				s = t.size,
				l = t.texInfo,
				u = t.opacity,
				c = t.viewTransition,
				f = void 0 === c ? 1 : c,
				d = this.gl,
				h = (0, S.splitLatLngNumber)(i.lat),
				v = (0, S.splitLatLngNumber)(i.lng);
				d.uniformMatrix4fv(this.u_matrix, !1, r.elements),
				d.uniform1i(this.u_sampler, 0),
				d.uniform2f(this.u_size, s.width, s.height),
				d.uniform4f(this.u_texInfo, l.s, l.t, l.w, l.h),
				d.uniform1f(this.u_opacity, u),
				d.uniform3f.apply(d, [this.u_mercator].concat((0, a.
			default)(e))),
				d.uniform1f(this.u_ratio, f),
				d.uniform1f(this.uZoom, n),
				d.uniform4f(this.uCenter, v.high, h.high, v.low, h.low),
				d.uniformMatrix4fv(this.uMatrix, !1, o.elements),
				d.uniform1f(this.u_wireframe, 0),
				d.drawElements(d.TRIANGLES, this.buffers.length, d.UNSIGNED_BYTE, 0)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.buffers && (this.buffers.vertices.delete(), this.buffers.indices.delete()),
				this.vertices = null,
				this.indices = null,
				(0, _.
			default)(e.prototype.__proto__ || (0, l.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (x.
default);
	e.
default = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(211),
	y = i(g),
	x = n(110),
	b = n(139),
	S = n(212),
	w = i(S),
	E = n(219),
	T = n(10),
	A = i(T),
	P = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t)),
			i = t.attribList || [],
			o = t.uniformList || [];
			return n.shaderParams = {
				attributes: i.concat(["positions", "instancePositions", "instancePositions64xyLow", "instanceSizes", "instanceInfos", "instancePickingColors", "instanceFrames", "instancePixelOffset"]),
				uniforms: o.concat(["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "picking_usePickingColor", "picking_zindex", "u_sizeScale", "u_sizeMinPixels", "u_sizeMaxPixels", "u_textureDim", "u_opacity", "u_sampler", "u_mapScale"])
			},
			n.modelPositions = new Int16Array([ - 1, -1, 0, -1, 1, 0, 1, 1, 0, 1, -1, 0]),
			n.store = new x.Store("buffer", 128, 16, E.deleteInstanceCacllback),
			n.symbolManager = null,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				if (e && this.symbolManager.canvas) {
					var r = t.center,
					a = t.zoom,
					s = t.getDistanceRatio(),
					l = i.distanceScales,
					u = (0, b.splitLatLngNumber)(r.lat),
					c = (0, b.splitLatLngNumber)(r.lng);
					o.useProgram(o.program),
					o.uniformMatrix4fv(this.uMatrix, !1, e.elements),
					o.uniform4f(this.uCenter, c.high, u.high, c.low, u.low),
					o.uniform1f(this.uZoom, a),
					o.uniform3f(this.uPixelsPerMeter, s, s, s),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
					o.uniform2f(this.uResolution, t.width, t.height),
					o.uniform1f(this.picking_usePickingColor, i.usePicking ? 1 : 0),
					o.uniform1f(this.picking_zindex, i.picking_zindex || 0),
					o.uniform1f(this.u_sizeScale, 1),
					o.uniform1f(this.u_sizeMinPixels, 0),
					o.uniform1f(this.u_sizeMaxPixels, 1e3),
					o.uniform2f(this.u_textureDim, this.symbolManager.canvas.width, this.symbolManager.canvas.height),
					o.uniform1f(this.u_opacity, 1),
					o.uniform1f(this.u_mapScale, t.scale),
					this._onDraw(),
					this.drawTileInstance(n.uid, n)
				}
			}
		},
		{
			key: "drawTileInstance",
			value: function(t, e) {
				var n = this.gl,
				i = this.store,
				o = !1;
				if (i) {
					if (i.exist(t)) {
						var r = i.get(t).instanceBuffers;
						this.isBufferChanged(r, e) && (o = !0)
					} else i.set(t, this.createBuffer(t, e));
					var a = i.get(t);
					a.positions.bind(),
					a.positions.pointToAttrib({
						location: this.positions,
						size: 3,
						type: n.SHORT
					}),
					A.
				default.forIn(a.instanceBuffers,
					function(t, i) {
						var r = i.buffer,
						a = i.location,
						s = i.size,
						l = i.type;
						r.bind(),
						o && (r.bufferData(e[t], {
							usage: n.DYNAMIC_DRAW
						}), i.data = e[t]),
						r.pointToAttrib({
							location: a,
							size: s,
							type: l
						}),
						n.vertexAttribDivisor(a, 1)
					}),
					n.drawArraysInstanced(n.TRIANGLE_FAN, 0, 4, e.count),
					n.bindBuffer(n.ARRAY_BUFFER, null),
					n.vertexAttribDivisor(this.instancePositions, 0),
					n.vertexAttribDivisor(this.instancePositions64xyLow, 0),
					n.vertexAttribDivisor(this.instanceSizes, 0),
					n.vertexAttribDivisor(this.instanceInfos, 0),
					n.vertexAttribDivisor(this.instancePickingColors, 0),
					n.vertexAttribDivisor(this.instanceFrames, 0),
					n.vertexAttribDivisor(this.instancePixelOffset, 0),
					this._onDrawInstanceTile()
				}
			}
		},
		{
			key: "getInstanceConfig",
			value: function() {
				var t = this.gl;
				return {
					instancePositionList: {
						location: this.instancePositions,
						size: 3,
						type: t.FLOAT
					},
					instancePosition64xyLowList: {
						location: this.instancePositions64xyLow,
						size: 2,
						type: t.FLOAT
					},
					instanceSizeList: {
						location: this.instanceSizes,
						size: 2,
						type: t.UNSIGNED_SHORT
					},
					instanceInfoList: {
						location: this.instanceInfos,
						size: 4,
						type: t.FLOAT
					},
					instancePickingColorList: {
						location: this.instancePickingColors,
						size: 3,
						type: t.UNSIGNED_BYTE
					},
					instanceFrameList: {
						location: this.instanceFrames,
						size: 4,
						type: t.FLOAT
					},
					instancePixelOffsetList: {
						location: this.instancePixelOffset,
						size: 3,
						type: t.FLOAT
					}
				}
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl,
				i = {
					positions: null,
					indices: null,
					instanceBuffers: {}
				};
				if (this.modelPositions && (i.positions = new w.
			default(n, {
					data: this.modelPositions
				})), e) {
					var o = this.getInstanceConfig();
					A.
				default.forIn(o,
					function(t, o) {
						i.instanceBuffers[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new w.
						default(n, {
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					})
				}
				return i
			}
		},
		{
			key: "afterDraw",
			value: function() {
				this.gl.activeTexture(this.gl.TEXTURE0),
				this.gl.bindTexture(this.gl.TEXTURE_2D, null)
			}
		},
		{
			key: "loadTexture",
			value: function() {
				this.symbolManager.canvas && this.symbolManager.uploadToGPU({
					textureIndex: 0,
					minFilter: this.gl.LINEAR,
					magFilter: this.gl.LINEAR,
					wrapS: this.gl.CLAMP_TO_EDGE,
					wrapT: this.gl.CLAMP_TO_EDGE,
					premultiply: !0,
					useMipmap: !1,
					flipY: !0
				})
			}
		},
		{
			key: "_onDraw",
			value: function() {}
		},
		{
			key: "_onDrawInstanceTile",
			value: function() {}
		},
		{
			key: "destroy",
			value: function() {
				this.modelPositions = null,
				this.symbolManager = null,
				(0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (y.
default);
	e.
default = P
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return {
			x:
			t && t.width || 1,
			y: t && t.height || 1
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(16),
	a = i(r),
	s = n(17),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(35),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(305),
	S = i(b),
	w = n(605),
	E = i(w),
	T = n(606),
	A = i(T),
	P = n(213),
	I = i(P),
	k = n(110),
	L = n(212),
	M = i(L),
	C = n(10),
	R = i(C),
	B = n(28),
	N = i(B),
	O = 1 / 16 / N.
default.devicePixelRatio,
	D = function(t) {
		function e(t) { (0, d.
		default)(this, e);
			var n = (0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t));
			return n.textCache = t.textCache,
			n.glyphManager = t.glyphManager,
			n.markerManager = t.markerManager,
			n.shaderSource = n.textCache ? A.
		default:
			E.
		default,
			n._store = new k.Store("buffer", 100, 16,
			function(t) {
				t.positions && t.positions.delete(),
				t.indices && t.indices.delete(),
				t.instanceBuffers && (0, l.
			default)(t.instanceBuffers).forEach(function(e) {
					var n = t.instanceBuffers[e];
					n.data = null,
					n.buffer.delete()
				})
			}),
			n.shaderParams = {
				attributes: ["a_Positions", "a_InstanceTrans", "a_InstanceCoords", "a_InstanceTextBounds", "a_InstanceStrentchinglens", "a_InstanceInfo", "a_InstanceColors", "a_InstanceStrokeColors", "a_InstancePickingColors", "a_InstanceStrokeWidth"],
				uniforms: ["u_matrix", "u_resolution", "u_fadeChange", "u_showPoint", "u_showLabel", "u_mapScale", "u_InstanceTileTextureOffset", "u_iconTextureResolution", "u_billboardTextureResolution", "u_textTextureResolution", "u_glyphTextureResolution", "u_SamplerGlyph", "u_SamplerText", "u_SamplerIcon", "u_SamplerMask", "u_asbackground", "u_gamma", "u_buffer", "u_maskScale", "u_sdfRadius", "picking_useFeaturePickingColor"]
			},
			n.positions = new Int16Array([ - 1, 1, 1, 1, -1, -1, 1, -1]),
			n.indices = new Uint8Array([0, 2, 1, 1, 2, 3]),
			n
		}
		return (0, x.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "setCommonUniforms",
			value: function(t, e) {
				var n = this.gl;
				n.uniform2f(this.u_resolution, t.width, t.height),
				n.uniform2f(this.u_billboardTextureResolution, o(this.markerManager.canvas).x, o(this.markerManager.canvas).y),
				n.uniform2f(this.u_textTextureResolution, o(this.textCache).x, o(this.textCache).y),
				n.uniform2f(this.u_glyphTextureResolution, o(this.glyphManager.canvas).x, o(this.glyphManager.canvas).y),
				n.uniform2f(this.u_iconTextureResolution, o(e.iconsLoader.img).x, o(e.iconsLoader.img).y),
				n.uniform1f(this.u_asbackground, e.asBackground ? 1 : 0),
				n.uniform1f(this.u_fadeChange, e.fadeChange || 0),
				n.uniform1f(this.u_maskScale, e.maskScale || 1),
				n.uniform1f(this.u_showPoint, !1 === e.showPoint ? 0 : 1),
				n.uniform1f(this.u_showLabel, !1 === e.showLabel ? 0 : 1),
				n.uniform1f(this.u_mapScale, t.scale),
				n.uniform1f(this.picking_useFeaturePickingColor, e.usePicking ? 1 : 0),
				n.uniform1i(this.u_SamplerText, 0),
				n.uniform1i(this.u_SamplerGlyph, 2),
				n.uniform1f(this.u_gamma, O),
				n.uniform1f(this.u_buffer, .71),
				n.uniform1f(this.u_sdfRadius, this.glyphManager.setting.radius)
			}
		},
		{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this,
				r = this.gl;
				n && ((0, l.
			default)(n.textDataSet).length > 0 || (0, l.
			default)(n.poiDataSet).length > 0) && (r.useProgram(r.program), this.setCommonUniforms(t, i), r.uniform1i(this.u_SamplerIcon, 1), r.uniform1i(this.u_SamplerMask, 3), R.
			default.forIn(e,
				function(e, a) {
					var s = e + "_" + Math.round(t.zoom);
					if (n.instanceSet[s] && !n.instanceSet[s].isIndoor && (!o.textCache || o.textCache.tiles[e])) {
						var l = o.textCache && o.textCache.tiles[e] || {},
						u = n.instanceSet[s];
						r.uniformMatrix4fv(o.u_matrix, !1, a.elements),
						r.uniform2f(o.u_InstanceTileTextureOffset, l.x || 0, l.y || 0),
						o.drawTileInstance(s, u, i.updateSubData)
					}
				}))
			}
		},
		{
			key: "drawTileInstance",
			value: function(t, e, n) {
				var i = arguments.length > 3 && void 0 !== arguments[3] && arguments[3];
				if (! (e.count < 1)) {
					var o = this.gl,
					r = this._store;
					r.exist(t) || r.set(t, this.createBuffer(t, e, i));
					var a = r.get(t);
					a.positions.bind(),
					a.positions.pointToAttrib({
						location: this.a_Positions,
						size: 2,
						type: o.SHORT
					}),
					a.indices.bind(),
					R.
				default.forIn(a.instanceBuffers,
					function(t, i) {
						var r = i.buffer,
						a = i.location,
						s = i.size,
						l = i.type;
						r.bind(),
						n && i.updatable && (r.bufferData(e[t], {
							usage: o.DYNAMIC_DRAW
						}), i.data = e[t]),
						r.pointToAttrib({
							location: a,
							size: s,
							type: l
						}),
						o.vertexAttribDivisor(a, 1)
					}),
					o.drawElementsInstanced(o.TRIANGLES, this.indices.length, o.UNSIGNED_BYTE, 0, e.count),
					o.bindBuffer(o.ARRAY_BUFFER, null),
					o.bindBuffer(o.ELEMENT_ARRAY_BUFFER, null),
					o.vertexAttribDivisor(this.a_InstanceTrans, 0),
					o.vertexAttribDivisor(this.a_InstanceCoords, 0),
					o.vertexAttribDivisor(this.a_InstanceTextBounds, 0),
					o.vertexAttribDivisor(this.a_InstanceInfo, 0),
					this.textCache || (!i && o.vertexAttribDivisor(this.a_InstanceStrentchinglens, 0), o.vertexAttribDivisor(this.a_InstanceColors, 0), o.vertexAttribDivisor(this.a_InstanceStrokeColors, 0), !i && o.vertexAttribDivisor(this.a_InstancePickingColors, 0), !i && o.vertexAttribDivisor(this.a_InstanceStrokeWidth, 0))
				}
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
				i = this.gl,
				o = {
					positions: null,
					indices: null,
					instanceBuffers: {}
				};
				if (this.positions && (o.positions = new M.
			default(i, {
					data: this.positions
				})), this.indices && (o.indices = new M.
			default(i, {
					target: i.ELEMENT_ARRAY_BUFFER,
					data: this.indices
				})), e) {
					var r = {
						instanceTransTypeArray: {
							location: this.a_InstanceTrans,
							size: 3,
							type: i.FLOAT,
							updatable: !0
						},
						instanceCoordsTypeArray: {
							location: this.a_InstanceCoords,
							size: 4,
							type: i.FLOAT
						},
						instanceTextBoundsTypeArray: {
							location: this.a_InstanceTextBounds,
							size: 4,
							type: i.FLOAT,
							updatable: !0
						},
						instanceInfosTypeArray: {
							location: this.a_InstanceInfo,
							size: 4,
							type: i.FLOAT,
							updatable: !0
						}
					};
					this.textCache || (!n && (r.instanceStrentchinglensTypeArray = {
						location: this.a_InstanceStrentchinglens,
						size: 2,
						type: i.FLOAT,
						updatable: !0
					}), r.instanceColorsTypeArray = {
						location: this.a_InstanceColors,
						size: 4,
						type: i.UNSIGNED_BYTE
					},
					r.instanceStrokeColorsTypeArray = {
						location: this.a_InstanceStrokeColors,
						size: 4,
						type: i.UNSIGNED_BYTE
					},
					!n && (r.instancePickingColorsTypeArray = {
						location: this.a_InstancePickingColors,
						size: 4,
						type: i.UNSIGNED_BYTE
					}), !n && (r.instanceStrokeWidthTypeArray = {
						location: this.a_InstanceStrokeWidth,
						size: 1,
						type: i.FLOAT
					})),
					R.
				default.forIn(r,
					function(t, n) {
						o.instanceBuffers[t] = (0, a.
					default)({
							data:
							e[t],
							buffer: new M.
						default(i, {
								data: e[t],
								usage: i.DYNAMIC_DRAW
							})
						},
						n)
					})
				}
				return o
			}
		},
		{
			key: "afterDraw",
			value: function() { (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "afterDraw", this).call(this),
				this.gl.activeTexture(this.gl.TEXTURE2),
				this.gl.bindTexture(this.gl.TEXTURE_2D, null)
			}
		},
		{
			key: "loadTexture",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.textCache ? this.textCache.loadTexture() : this.loadManagerTexture(this.markerManager, 0),
				this.loadIconTexture(t),
				this.loadManagerTexture(this.glyphManager, 2),
				t.maskTexture && t.maskTexture.bind(this.gl, {
					textureIndex: 3
				})
			}
		},
		{
			key: "loadIconTexture",
			value: function(t) {
				var e = t.iconsLoader;
				if (e && e.img) {
					var n = this.gl;
					if (this.texture) this.texture.bind(null, {
						textureIndex: 1
					});
					else {
						n.useProgram(n.program);
						var i = new I.
					default(n, {
							pixels: e.img
						});
						i.upload({
							flipY: !0,
							textureIndex: 1
						});
						var o = n.getUniformLocation(n.program, "u_SamplerIcon");
						n.uniform1i(o, 1),
						this.texture = i
					}
				}
			}
		},
		{
			key: "loadManagerTexture",
			value: function(t, e) {
				t && t.canvas && t.uploadToGPU({
					textureIndex: e,
					minFilter: this.gl.LINEAR,
					magFilter: this.gl.LINEAR,
					wrapS: this.gl.CLAMP_TO_EDGE,
					wrapT: this.gl.CLAMP_TO_EDGE,
					premultiply: !0,
					useMipmap: !1,
					flipY: !0
				})
			}
		},
		{
			key: "clear",
			value: function() {
				this._store.clear(),
				this.texture && (this.texture.destroy(), this.texture = null)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.textCache = null,
				this.glyphManager = null,
				this.markerManager = null,
				this.positions = null,
				this.indices = null,
				this._store.clear(),
				this._store = null,
				this.texture && (this.texture.destroy(), this.texture = null),
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (S.
default);
	e.
default = D
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(280),
	m = i(_),
	g = n(213),
	y = i(g),
	x = n(517),
	b = i(x),
	S = n(41),
	w = i(S),
	E = function(t) {
		function e(t, n) {
			return (0, u.
		default)(this, e),
			(0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, n))
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_onCreate",
			value: function() {
				return this.gl.createFramebuffer()
			}
		},
		{
			key: "_onDelete",
			value: function(t) {
				t || (this._colorAttach.forEach(function(t) {
					return t.delete()
				}), this._depthAttach.delete()),
				this._colorAttach = null,
				this._depthAttach = null,
				this.unbind(!0),
				this.gl.deleteFramebuffer(this._object)
			}
		},
		{
			key: "_initialize",
			value: function(t) {
				var e = this,
				n = t.width,
				i = void 0 === n ? 1 : n,
				o = t.height,
				r = void 0 === o ? 1 : o,
				a = t.attachments,
				s = void 0 === a ? {}: a,
				l = t.drawBuffers;
				this.width = i,
				this.height = r,
				this._colorAttach = [],
				this._depthAttach = null;
				var u = void 0,
				c = void 0;
				s && (u = s.color, c = s.depth),
				w.
			default.isArray(u) ? u.forEach(function(t, n) {
					e.attach("color", t, {
						colorIndex: n
					})
				}) : this.attach("color", u),
				this.attach("depth", c),
				l && this.setDrawBuffers(l)
			}
		},
		{
			key: "_createDefaultAttachment",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				n = this.gl,
				i = null;
				switch (t) {
				case "color":
					i = new y.
				default(n, (0, r.
				default)({
						pixels:
						null
					},
					e));
					break;
				case "depth":
					i = new b.
				default(n, e)
				}
				return i
			}
		},
		{
			key: "bind",
			value: function(t) {
				t = t || this.gl,
				t.bindFramebuffer(t.FRAMEBUFFER, this._object),
				t.frameBuffer = this
			}
		},
		{
			key: "unbind",
			value: function(t) {
				t || (this._colorAttach.forEach(function(t) {
					return t.unbind()
				}), this._depthAttach.unbind()),
				this.gl.bindFramebuffer(this.gl.FRAMEBUFFER, null),
				this.gl.frameBuffer = null
			}
		},
		{
			key: "attach",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
				i = n.resizeAttach,
				o = void 0 === i || i,
				r = n.colorIndex,
				a = void 0 === r ? 0 : r,
				s = this.gl,
				l = this.width,
				u = this.height;
				switch (this.bind(), e instanceof y.
			default || e instanceof b.
			default || (e = this._createDefaultAttachment(t, e)), o && e.resize(l, u), t) {
				case "color":
					s.framebufferTexture2D(s.FRAMEBUFFER, s.COLOR_ATTACHMENT0 + a, s.TEXTURE_2D, e.texture, 0),
					this._colorAttach[a] = e;
					break;
				case "depth":
					var c = "DEPTH24_STENCIL8" === e.internalformat ? s.DEPTH_STENCIL_ATTACHMENT: s.DEPTH_ATTACHMENT;
					e instanceof b.
				default ? s.framebufferRenderbuffer(s.FRAMEBUFFER, c, s.RENDERBUFFER, e.buffer) : e instanceof y.
				default && s.framebufferTexture2D(s.FRAMEBUFFER, c, s.TEXTURE_2D, e.texture, 0),
					this._depthAttach = e
				}
			}
		},
		{
			key: "checkStatus",
			value: function() {
				this.bind();
				var t = this.gl.checkFramebufferStatus(this.gl.FRAMEBUFFER);
				return t === this.gl.FRAMEBUFFER_COMPLETE || (console.error("Framebuffer object is incomplete: " + t.toString() + "."), !1)
			}
		},
		{
			key: "resize",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
				this.width = t,
				this.height = e,
				this._colorAttach.forEach(function(n) {
					return n.resize(t, e)
				}),
				this._depthAttach.resize(t, e, {
					minFilter: this.gl.NEAREST,
					magFilter: this.gl.NEAREST
				})
			}
		},
		{
			key: "copy",
			value: function(t) {
				var e = this.gl,
				n = this.width,
				i = this.height;
				if (e.isWebGL2) {
					this.bind();
					var o = t ? t._object: null;
					e.bindFramebuffer(e.READ_FRAMEBUFFER, o),
					e.blitFramebuffer(0, 0, n, i, 0, 0, n, i, e.COLOR_BUFFER_BIT, e.NEAREST)
				} else t && t.bind(e),
				this.color.copy()
			}
		},
		{
			key: "setDrawBuffers",
			value: function(t) {
				this.bind();
				var e = this.gl,
				n = t.map(function(t) {
					return e[t]
				});
				e.drawBuffers(n)
			}
		},
		{
			key: "getColorAttach",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
				return this._colorAttach[t]
			}
		},
		{
			key: "color",
			get: function() {
				return this._colorAttach[0]
			}
		},
		{
			key: "depth",
			get: function() {
				return this._depthAttach
			}
		},
		{
			key: "texture",
			get: function() {
				return this._colorAttach[0].texture
			}
		},
		{
			key: "buffer",
			get: function() {
				return this._object
			}
		}]),
		e
	} (m.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(280),
	p = i(v),
	_ = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_onCreate",
			value: function() {
				return this.gl.createRenderbuffer()
			}
		},
		{
			key: "_onDelete",
			value: function() {
				this.unbind(),
				this.gl.deleteRenderbuffer(this._object)
			}
		},
		{
			key: "_initialize",
			value: function(t) {
				var e = t.width,
				n = void 0 === e ? 1 : e,
				i = t.height,
				o = void 0 === i ? 1 : i,
				r = t.internalformat,
				a = void 0 === r ? "DEPTH_COMPONENT16": r;
				this.width = n,
				this.height = o,
				this.internalformat = a
			}
		},
		{
			key: "bind",
			value: function(t) {
				t = t || this.gl,
				t.bindRenderbuffer(t.RENDERBUFFER, this._object)
			}
		},
		{
			key: "unbind",
			value: function() {
				this.gl.bindRenderbuffer(this.gl.RENDERBUFFER, null)
			}
		},
		{
			key: "resize",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1;
				this.width = t,
				this.height = e,
				this.bind();
				var n = this.internalformat,
				i = this.gl;
				this.gl.renderbufferStorage(i.RENDERBUFFER, i[n], t, e)
			}
		},
		{
			key: "buffer",
			get: function() {
				return this._object
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i, o, r) {
		this.fontSize = t || 24,
		this.buffer = void 0 === e ? 3 : e,
		this.cutoff = i || .25,
		this.fontFamily = o || "sans-serif",
		this.fontWeight = r || "normal",
		this.radius = n || 8,
		this.size = this.fontSize + 2 * this.buffer;
		var a = this.size;
		this.canvas = document.createElement("canvas"),
		this.canvas.width = a,
		this.canvas.height = a,
		this.ctx = this.canvas.getContext("2d"),
		this.ctx.font = this.fontWeight + " " + this.fontSize + "px " + this.fontFamily,
		this.ctx.textBaseline = "middle",
		this.ctx.fillStyle = "black",
		this.gridOuter = new Float64Array(a * a),
		this.gridInner = new Float64Array(a * a),
		this.f = new Float64Array(a),
		this.d = new Float64Array(a),
		this.z = new Float64Array(a + 1),
		this.v = new Int16Array(a),
		this.middle = Math.round(a / 2 * (navigator.userAgent.indexOf("Gecko/") >= 0 ? 1.2 : 1))
	}
	function o(t, e, n, i, o, a, s) {
		for (var l = 0; l < e; l++) {
			for (var u = 0; u < n; u++) i[u] = t[u * e + l];
			r(i, o, a, s, n);
			for (var c = 0; c < n; c++) t[c * e + l] = o[c]
		}
		for (var f = 0; f < n; f++) {
			for (var d = 0; d < e; d++) i[d] = t[f * e + d];
			r(i, o, a, s, e);
			for (var h = 0; h < e; h++) t[f * e + h] = Math.sqrt(o[h])
		}
	}
	function r(t, e, n, i, o) {
		n[0] = 0,
		i[0] = -a,
		i[1] = +a;
		for (var r = 1,
		s = 0; r < o; r++) {
			for (var l = (t[r] + r * r - (t[n[s]] + n[s] * n[s])) / (2 * r - 2 * n[s]); l <= i[s];) s -= 1,
			l = (t[r] + r * r - (t[n[s]] + n[s] * n[s])) / (2 * r - 2 * n[s]);
			s += 1,
			n[s] = r,
			i[s] = l,
			i[s + 1] = +a
		}
		for (var u = 0,
		c = 0; u < o; u++) {
			for (; i[c + 1] < u;) c += 1;
			e[u] = (u - n[c]) * (u - n[c]) + t[n[c]]
		}
	}
	t.exports = i,
	t.exports.
default = i;
	var a = 1e20;
	i.prototype.draw = function(t) {
		this.ctx.clearRect(0, 0, this.size, this.size),
		this.ctx.fillText(t, this.buffer, this.middle);
		for (var e = this.ctx.getImageData(0, 0, this.size, this.size), n = new Uint8ClampedArray(this.size * this.size), i = 0; i < this.size * this.size; i++) {
			var r = e.data[4 * i + 3] / 255;
			this.gridOuter[i] = 1 === r ? 0 : 0 === r ? a: Math.pow(Math.max(0, .5 - r), 2),
			this.gridInner[i] = 1 === r ? a: 0 === r ? 0 : Math.pow(Math.max(0, r - .5), 2)
		}
		o(this.gridOuter, this.size, this.size, this.f, this.d, this.v, this.z),
		o(this.gridInner, this.size, this.size, this.f, this.d, this.v, this.z);
		for (var s = 0; s < this.size * this.size; s++) {
			var l = this.gridOuter[s] - this.gridInner[s];
			n[s] = Math.max(0, Math.min(255, Math.round(255 - 255 * (l / this.radius + this.cutoff))))
		}
		return n
	}
},
function(t, e, n) {
	var i = n(244);
	t.exports = function(t, e) {
		if ("number" != typeof t && "Number" != i(t)) throw TypeError(e);
		return + t
	}
},
function(t, e, n) {
	"use strict";
	var i = n(136),
	o = n(269),
	r = n(88);
	t.exports = [].copyWithin ||
	function(t, e) {
		var n = i(this),
		a = r(n.length),
		s = o(t, a),
		l = o(e, a),
		u = arguments.length > 2 ? arguments[2] : void 0,
		c = Math.min((void 0 === u ? a: o(u, a)) - l, a - s),
		f = 1;
		for (l < s && s < l + c && (f = -1, l += c - 1, s += c - 1); c-->0;) l in n ? n[s] = n[l] : delete n[s],
		s += f,
		l += f;
		return n
	}
},
function(t, e, n) {
	var i = n(229),
	o = n(136),
	r = n(321),
	a = n(88);
	t.exports = function(t, e, n, s, l) {
		i(e);
		var u = o(t),
		c = r(u),
		f = a(u.length),
		d = l ? f - 1 : 0,
		h = l ? -1 : 1;
		if (n < 2) for (;;) {
			if (d in c) {
				s = c[d],
				d += h;
				break
			}
			if (d += h, l ? d < 0 : f <= d) throw TypeError("Reduce of empty array with no initial value")
		}
		for (; l ? d >= 0 : f > d; d += h) d in c && (s = e(s, c[d], d, u));
		return s
	}
},
function(t, e, n) {
	var i = n(825);
	t.exports = function(t, e) {
		return new(i(t))(e)
	}
},
function(t, e, n) {
	"use strict";
	var i = n(229),
	o = n(63),
	r = n(527),
	a = [].slice,
	s = {},
	l = function(t, e, n) {
		if (! (e in s)) {
			for (var i = [], o = 0; o < e; o++) i[o] = "a[" + o + "]";
			s[e] = Function("F,a", "return new F(" + i.join(",") + ")")
		}
		return s[e](t, n)
	};
	t.exports = Function.bind ||
	function(t) {
		var e = i(this),
		n = a.call(arguments, 1),
		s = function() {
			var i = n.concat(a.call(arguments));
			return this instanceof s ? l(e, i.length, i) : r(e, i, t)
		};
		return o(e.prototype) && (s.prototype = e.prototype),
		s
	}
},
function(t, e, n) {
	"use strict";
	var i = n(104).f,
	o = n(264),
	r = n(286),
	a = n(231),
	s = n(284),
	l = n(348),
	u = n(430),
	c = n(531),
	f = n(287),
	d = n(103),
	h = n(253).fastKey,
	v = n(271),
	p = d ? "_s": "size",
	_ = function(t, e) {
		var n, i = h(e);
		if ("F" !== i) return t._i[i];
		for (n = t._f; n; n = n.n) if (n.k == e) return n
	};
	t.exports = {
		getConstructor: function(t, e, n, u) {
			var c = t(function(t, i) {
				s(t, c, e, "_i"),
				t._t = e,
				t._i = o(null),
				t._f = void 0,
				t._l = void 0,
				t[p] = 0,
				void 0 != i && l(i, n, t[u], t)
			});
			return r(c.prototype, {
				clear: function() {
					for (var t = v(this, e), n = t._i, i = t._f; i; i = i.n) i.r = !0,
					i.p && (i.p = i.p.n = void 0),
					delete n[i.i];
					t._f = t._l = void 0,
					t[p] = 0
				},
				delete: function(t) {
					var n = v(this, e),
					i = _(n, t);
					if (i) {
						var o = i.n,
						r = i.p;
						delete n._i[i.i],
						i.r = !0,
						r && (r.n = o),
						o && (o.p = r),
						n._f == i && (n._f = o),
						n._l == i && (n._l = r),
						n[p]--
					}
					return !! i
				},
				forEach: function(t) {
					v(this, e);
					for (var n, i = a(t, arguments.length > 1 ? arguments[1] : void 0, 3); n = n ? n.n: this._f;) for (i(n.v, n.k, this); n && n.r;) n = n.p
				},
				has: function(t) {
					return !! _(v(this, e), t)
				}
			}),
			d && i(c.prototype, "size", {
				get: function() {
					return v(this, e)[p]
				}
			}),
			c
		},
		def: function(t, e, n) {
			var i, o, r = _(t, e);
			return r ? r.v = n: (t._l = r = {
				i: o = h(e, !0),
				k: e,
				v: n,
				p: i = t._l,
				n: void 0,
				r: !1
			},
			t._f || (t._f = r), i && (i.n = r), t[p]++, "F" !== o && (t._i[o] = r)),
			t
		},
		getEntry: _,
		setStrong: function(t, e, n) {
			u(t, e,
			function(t, n) {
				this._t = v(t, e),
				this._k = n,
				this._l = void 0
			},
			function() {
				for (var t = this,
				e = t._k,
				n = t._l; n && n.r;) n = n.p;
				return t._t && (t._l = n = n ? n.n: t._t._f) ? "keys" == e ? c(0, n.k) : "values" == e ? c(0, n.v) : c(0, [n.k, n.v]) : (t._t = void 0, c(1))
			},
			n ? "entries": "values", !n, !0),
			f(e)
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(286),
	o = n(253).getWeak,
	r = n(60),
	a = n(63),
	s = n(284),
	l = n(348),
	u = n(230),
	c = n(214),
	f = n(271),
	d = u(5),
	h = u(6),
	v = 0,
	p = function(t) {
		return t._l || (t._l = new _)
	},
	_ = function() {
		this.a = []
	},
	m = function(t, e) {
		return d(t.a,
		function(t) {
			return t[0] === e
		})
	};
	_.prototype = {
		get: function(t) {
			var e = m(this, t);
			if (e) return e[1]
		},
		has: function(t) {
			return !! m(this, t)
		},
		set: function(t, e) {
			var n = m(this, t);
			n ? n[1] = e: this.a.push([t, e])
		},
		delete: function(t) {
			var e = h(this.a,
			function(e) {
				return e[0] === t
			});
			return~e && this.a.splice(e, 1),
			!!~e
		}
	},
	t.exports = {
		getConstructor: function(t, e, n, r) {
			var u = t(function(t, i) {
				s(t, u, e, "_i"),
				t._t = e,
				t._i = v++,
				t._l = void 0,
				void 0 != i && l(i, n, t[r], t)
			});
			return i(u.prototype, {
				delete: function(t) {
					if (!a(t)) return ! 1;
					var n = o(t);
					return ! 0 === n ? p(f(this, e)).delete(t) : n && c(n, this._i) && delete n[this._i]
				},
				has: function(t) {
					if (!a(t)) return ! 1;
					var n = o(t);
					return ! 0 === n ? p(f(this, e)).has(t) : n && c(n, this._i)
				}
			}),
			u
		},
		def: function(t, e, n) {
			var i = o(r(e), !0);
			return ! 0 === i ? p(t).set(e, n) : i[t._i] = n,
			t
		},
		ufstore: p
	}
},
function(t, e, n) {
	t.exports = !n(103) && !n(61)(function() {
		return 7 != Object.defineProperty(n(423)("div"), "a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e) {
	t.exports = function(t, e, n) {
		var i = void 0 === n;
		switch (e.length) {
		case 0:
			return i ? t() : t.call(n);
		case 1:
			return i ? t(e[0]) : t.call(n, e[0]);
		case 2:
			return i ? t(e[0], e[1]) : t.call(n, e[0], e[1]);
		case 3:
			return i ? t(e[0], e[1], e[2]) : t.call(n, e[0], e[1], e[2]);
		case 4:
			return i ? t(e[0], e[1], e[2], e[3]) : t.call(n, e[0], e[1], e[2], e[3])
		}
		return t.apply(n, e)
	}
},
function(t, e, n) {
	var i = n(63),
	o = Math.floor;
	t.exports = function(t) {
		return ! i(t) && isFinite(t) && o(t) === t
	}
},
function(t, e, n) {
	var i = n(60);
	t.exports = function(t, e, n, o) {
		try {
			return o ? e(i(n)[0], n[1]) : e(n)
		} catch(e) {
			var r = t.
			return;
			throw void 0 !== r && i(r.call(t)),
			e
		}
	}
},
function(t, e, n) {
	"use strict";
	var i = n(264),
	o = n(268),
	r = n(288),
	a = {};
	n(215)(a, n(78)("iterator"),
	function() {
		return this
	}),
	t.exports = function(t, e, n) {
		t.prototype = i(a, {
			next: o(1, n)
		}),
		r(t, e + " Iterator")
	}
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			value: e,
			done: !!t
		}
	}
},
function(t, e) {
	t.exports = Math.log1p ||
	function(t) {
		return (t = +t) > -1e-8 && t < 1e-8 ? t - t * t / 2 : Math.log(1 + t)
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e, n;
		this.promise = new t(function(t, i) {
			if (void 0 !== e || void 0 !== n) throw TypeError("Bad Promise constructor");
			e = t,
			n = i
		}),
		this.resolve = o(e),
		this.reject = o(n)
	}
	var o = n(229);
	t.exports.f = function(t) {
		return new i(t)
	}
},
function(t, e, n) {
	"use strict";
	var i = n(103),
	o = n(267),
	r = n(351),
	a = n(322),
	s = n(136),
	l = n(321),
	u = Object.assign;
	t.exports = !u || n(61)(function() {
		var t = {},
		e = {},
		n = Symbol(),
		i = "abcdefghijklmnopqrst";
		return t[n] = 7,
		i.split("").forEach(function(t) {
			e[t] = t
		}),
		7 != u({},
		t)[n] || Object.keys(u({},
		e)).join("") != i
	}) ?
	function(t, e) {
		for (var n = s(t), u = arguments.length, c = 1, f = r.f, d = a.f; u > c;) for (var h, v = l(arguments[c++]), p = f ? o(v).concat(f(v)) : o(v), _ = p.length, m = 0; _ > m;) h = p[m++],
		i && !d.call(v, h) || (n[h] = v[h]);
		return n
	}: u
},
function(t, e, n) {
	var i = n(104),
	o = n(60),
	r = n(267);
	t.exports = n(103) ? Object.defineProperties: function(t, e) {
		o(t);
		for (var n, a = r(e), s = a.length, l = 0; s > l;) i.f(t, n = a[l++], e[n]);
		return t
	}
},
function(t, e, n) {
	var i = n(216),
	o = n(265).f,
	r = {}.toString,
	a = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
	s = function(t) {
		try {
			return o(t)
		} catch(t) {
			return a.slice()
		}
	};
	t.exports.f = function(t) {
		return a && "[object Window]" == r.call(t) ? s(t) : o(i(t))
	}
},
function(t, e, n) {
	var i = n(214),
	o = n(216),
	r = n(344)(!1),
	a = n(435)("IE_PROTO");
	t.exports = function(t, e) {
		var n, s = o(t),
		l = 0,
		u = [];
		for (n in s) n != a && i(s, n) && u.push(n);
		for (; e.length > l;) i(s, n = e[l++]) && (~r(u, n) || u.push(n));
		return u
	}
},
function(t, e, n) {
	var i = n(103),
	o = n(267),
	r = n(216),
	a = n(322).f;
	t.exports = function(t) {
		return function(e) {
			for (var n, s = r(e), l = o(s), u = l.length, c = 0, f = []; u > c;) n = l[c++],
			i && !a.call(s, n) || f.push(t ? [n, s[n]] : s[n]);
			return f
		}
	}
},
function(t, e, n) {
	var i = n(265),
	o = n(351),
	r = n(60),
	a = n(62).Reflect;
	t.exports = a && a.ownKeys ||
	function(t) {
		var e = i.f(r(t)),
		n = o.f;
		return n ? e.concat(n(t)) : e
	}
},
function(t, e, n) {
	var i = n(62).parseFloat,
	o = n(289).trim;
	t.exports = 1 / i(n(439) + "-0") != -1 / 0 ?
	function(t) {
		var e = o(String(t), 3),
		n = i(e);
		return 0 === n && "-" == e.charAt(0) ? -0 : n
	}: i
},
function(t, e, n) {
	var i = n(62).parseInt,
	o = n(289).trim,
	r = n(439),
	a = /^[-+]?0[xX]/;
	t.exports = 8 !== i(r + "08") || 22 !== i(r + "0x16") ?
	function(t, e) {
		var n = o(String(t), 3);
		return i(n, e >>> 0 || (a.test(n) ? 16 : 10))
	}: i
},
function(t, e, n) {
	var i = n(60),
	o = n(63),
	r = n(533);
	t.exports = function(t, e) {
		if (i(t), o(e) && e.constructor === t) return e;
		var n = r.f(t);
		return (0, n.resolve)(e),
		n.promise
	}
},
function(t, e) {
	t.exports = Object.is ||
	function(t, e) {
		return t === e ? 0 !== t || 1 / t == 1 / e: t != t && e != e
	}
},
function(t, e, n) {
	var i = n(88),
	o = n(438),
	r = n(245);
	t.exports = function(t, e, n, a) {
		var s = String(r(t)),
		l = s.length,
		u = void 0 === n ? " ": String(n),
		c = i(e);
		if (c <= l || "" == u) return s;
		var f = c - l,
		d = o.call(u, Math.ceil(f / u.length));
		return d.length > f && (d = d.slice(0, f)),
		a ? d + s: s + d
	}
},
function(t, e, n) {
	var i = n(234),
	o = n(88);
	t.exports = function(t) {
		if (void 0 === t) return 0;
		var e = i(t),
		n = o(e);
		if (e !== n) throw RangeError("Wrong length!");
		return n
	}
},
function(t, e, n) {
	var i = n(62),
	o = n(102),
	r = n(263),
	a = n(442),
	s = n(104).f;
	t.exports = function(t) {
		var e = o.Symbol || (o.Symbol = r ? {}: i.Symbol || {});
		"_" == t.charAt(0) || t in e || s(e, t, {
			value: a.f(t)
		})
	}
},
function(t, e, n) {
	"use strict";
	var i, o, r, a, s = n(263),
	l = n(62),
	u = n(231),
	c = n(320),
	f = n(11),
	d = n(63),
	h = n(229),
	v = n(284),
	p = n(348),
	_ = n(323),
	m = n(440).set,
	g = n(832)(),
	y = n(533),
	x = n(833),
	b = n(355),
	S = n(542),
	w = l.TypeError,
	E = l.process,
	T = E && E.versions,
	A = T && T.v8 || "",
	P = l.Promise,
	I = "process" == c(E),
	k = function() {},
	L = o = y.f,
	M = !!
	function() {
		try {
			var t = P.resolve(1),
			e = (t.constructor = {})[n(78)("species")] = function(t) {
				t(k, k)
			};
			return (I || "function" == typeof PromiseRejectionEvent) && t.then(k) instanceof e && 0 !== A.indexOf("6.6") && -1 === b.indexOf("Chrome/66")
		} catch(t) {}
	} (),
	C = function(t) {
		var e;
		return ! (!d(t) || "function" != typeof(e = t.then)) && e
	},
	R = function(t, e) {
		if (!t._n) {
			t._n = !0;
			var n = t._c;
			g(function() {
				for (var i = t._v,
				o = 1 == t._s,
				r = 0; n.length > r;) !
				function(e) {
					var n, r, a, s = o ? e.ok: e.fail,
					l = e.resolve,
					u = e.reject,
					c = e.domain;
					try {
						s ? (o || (2 == t._h && O(t), t._h = 1), !0 === s ? n = i: (c && c.enter(), n = s(i), c && (c.exit(), a = !0)), n === e.promise ? u(w("Promise-chain cycle")) : (r = C(n)) ? r.call(n, l, u) : l(n)) : u(i)
					} catch(t) {
						c && !a && c.exit(),
						u(t)
					}
				} (n[r++]);
				t._c = [],
				t._n = !1,
				e && !t._h && B(t)
			})
		}
	},
	B = function(t) {
		m.call(l,
		function() {
			var e, n, i, o = t._v,
			r = N(t);
			if (r && (e = x(function() {
				I ? E.emit("unhandledRejection", o, t) : (n = l.onunhandledrejection) ? n({
					promise: t,
					reason: o
				}) : (i = l.console) && i.error && i.error("Unhandled promise rejection", o)
			}), t._h = I || N(t) ? 2 : 1), t._a = void 0, r && e.e) throw e.v
		})
	},
	N = function(t) {
		return 1 !== t._h && 0 === (t._a || t._c).length
	},
	O = function(t) {
		m.call(l,
		function() {
			var e;
			I ? E.emit("rejectionHandled", t) : (e = l.onrejectionhandled) && e({
				promise: t,
				reason: t._v
			})
		})
	},
	D = function(t) {
		var e = this;
		e._d || (e._d = !0, e = e._w || e, e._v = t, e._s = 2, e._a || (e._a = e._c.slice()), R(e, !0))
	},
	z = function(t) {
		var e, n = this;
		if (!n._d) {
			n._d = !0,
			n = n._w || n;
			try {
				if (n === t) throw w("Promise can't be resolved itself"); (e = C(t)) ? g(function() {
					var i = {
						_w: n,
						_d: !1
					};
					try {
						e.call(t, u(z, i, 1), u(D, i, 1))
					} catch(t) {
						D.call(i, t)
					}
				}) : (n._v = t, n._s = 1, R(n, !1))
			} catch(t) {
				D.call({
					_w: n,
					_d: !1
				},
				t)
			}
		}
	};
	M || (P = function(t) {
		v(this, P, "Promise", "_h"),
		h(t),
		i.call(this);
		try {
			t(u(z, this, 1), u(D, this, 1))
		} catch(t) {
			D.call(this, t)
		}
	},
	i = function(t) {
		this._c = [],
		this._a = void 0,
		this._s = 0,
		this._d = !1,
		this._v = void 0,
		this._h = 0,
		this._n = !1
	},
	i.prototype = n(286)(P.prototype, {
		then: function(t, e) {
			var n = L(_(this, P));
			return n.ok = "function" != typeof t || t,
			n.fail = "function" == typeof e && e,
			n.domain = I ? E.domain: void 0,
			this._c.push(n),
			this._a && this._a.push(n),
			this._s && R(this, !1),
			n.promise
		},
		catch: function(t) {
			return this.then(void 0, t)
		}
	}), r = function() {
		var t = new i;
		this.promise = t,
		this.resolve = u(z, t, 1),
		this.reject = u(D, t, 1)
	},
	y.f = L = function(t) {
		return t === P || t === a ? new r(t) : o(t)
	}),
	f(f.G + f.W + f.F * !M, {
		Promise: P
	}),
	n(288)(P, "Promise"),
	n(287)("Promise"),
	a = n(102).Promise,
	f(f.S + f.F * !M, "Promise", {
		reject: function(t) {
			var e = L(this);
			return (0, e.reject)(t),
			e.promise
		}
	}),
	f(f.S + f.F * (s || !M), "Promise", {
		resolve: function(t) {
			return S(s && this === a ? P: this, t)
		}
	}),
	f(f.S + f.F * !(M && n(350)(function(t) {
		P.all(t).
		catch(k)
	})), "Promise", {
		all: function(t) {
			var e = this,
			n = L(e),
			i = n.resolve,
			o = n.reject,
			r = x(function() {
				var n = [],
				r = 0,
				a = 1;
				p(t, !1,
				function(t) {
					var s = r++,
					l = !1;
					n.push(void 0),
					a++,
					e.resolve(t).then(function(t) {
						l || (l = !0, n[s] = t, --a || i(n))
					},
					o)
				}),
				--a || i(n)
			});
			return r.e && o(r.v),
			n.promise
		},
		race: function(t) {
			var e = this,
			n = L(e),
			i = n.reject,
			o = x(function() {
				p(t, !1,
				function(t) {
					e.resolve(t).then(n.resolve, i)
				})
			});
			return o.e && i(o.v),
			n.promise
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(433);
	n(11)({
		target: "RegExp",
		proto: !0,
		forced: i !== /./.exec
	},
	{
		exec: i
	})
},
function(t, e, n) {
	n(103) && "g" != /./g.flags && n(104).f(RegExp.prototype, "flags", {
		configurable: !0,
		get: n(347)
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function(e) {
			var n = t,
			i = n.lib,
			o = i.WordArray,
			r = i.Hasher,
			a = n.algo,
			s = [],
			l = []; !
			function() {
				function t(t) {
					return 4294967296 * (t - (0 | t)) | 0
				}
				for (var n = 2,
				i = 0; i < 64;)(function(t) {
					for (var n = e.sqrt(t), i = 2; i <= n; i++) if (! (t % i)) return ! 1;
					return ! 0
				})(n) && (i < 8 && (s[i] = t(e.pow(n, .5))), l[i] = t(e.pow(n, 1 / 3)), i++),
				n++
			} ();
			var u = [],
			c = a.SHA256 = r.extend({
				_doReset: function() {
					this._hash = new o.init(s.slice(0))
				},
				_doProcessBlock: function(t, e) {
					for (var n = this._hash.words,
					i = n[0], o = n[1], r = n[2], a = n[3], s = n[4], c = n[5], f = n[6], d = n[7], h = 0; h < 64; h++) {
						if (h < 16) u[h] = 0 | t[e + h];
						else {
							var v = u[h - 15],
							p = (v << 25 | v >>> 7) ^ (v << 14 | v >>> 18) ^ v >>> 3,
							_ = u[h - 2],
							m = (_ << 15 | _ >>> 17) ^ (_ << 13 | _ >>> 19) ^ _ >>> 10;
							u[h] = p + u[h - 7] + m + u[h - 16]
						}
						var g = s & c ^ ~s & f,
						y = i & o ^ i & r ^ o & r,
						x = (i << 30 | i >>> 2) ^ (i << 19 | i >>> 13) ^ (i << 10 | i >>> 22),
						b = (s << 26 | s >>> 6) ^ (s << 21 | s >>> 11) ^ (s << 7 | s >>> 25),
						S = d + b + g + l[h] + u[h],
						w = x + y;
						d = f,
						f = c,
						c = s,
						s = a + S | 0,
						a = r,
						r = o,
						o = i,
						i = S + w | 0
					}
					n[0] = n[0] + i | 0,
					n[1] = n[1] + o | 0,
					n[2] = n[2] + r | 0,
					n[3] = n[3] + a | 0,
					n[4] = n[4] + s | 0,
					n[5] = n[5] + c | 0,
					n[6] = n[6] + f | 0,
					n[7] = n[7] + d | 0
				},
				_doFinalize: function() {
					var t = this._data,
					n = t.words,
					i = 8 * this._nDataBytes,
					o = 8 * t.sigBytes;
					return n[o >>> 5] |= 128 << 24 - o % 32,
					n[14 + (o + 64 >>> 9 << 4)] = e.floor(i / 4294967296),
					n[15 + (o + 64 >>> 9 << 4)] = i,
					t.sigBytes = 4 * n.length,
					this._process(),
					this._hash
				},
				clone: function() {
					var t = r.clone.call(this);
					return t._hash = this._hash.clone(),
					t
				}
			});
			n.SHA256 = r._createHelper(c),
			n.HmacSHA256 = r._createHmacHelper(c)
		} (Math),
		t.SHA256
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(356))
	} (0,
	function(t) {
		return function() {
			function e() {
				return a.create.apply(a, arguments)
			}
			var n = t,
			i = n.lib,
			o = i.Hasher,
			r = n.x64,
			a = r.Word,
			s = r.WordArray,
			l = n.algo,
			u = [e(1116352408, 3609767458), e(1899447441, 602891725), e(3049323471, 3964484399), e(3921009573, 2173295548), e(961987163, 4081628472), e(1508970993, 3053834265), e(2453635748, 2937671579), e(2870763221, 3664609560), e(3624381080, 2734883394), e(310598401, 1164996542), e(607225278, 1323610764), e(1426881987, 3590304994), e(1925078388, 4068182383), e(2162078206, 991336113), e(2614888103, 633803317), e(3248222580, 3479774868), e(3835390401, 2666613458), e(4022224774, 944711139), e(264347078, 2341262773), e(604807628, 2007800933), e(770255983, 1495990901), e(1249150122, 1856431235), e(1555081692, 3175218132), e(1996064986, 2198950837), e(2554220882, 3999719339), e(2821834349, 766784016), e(2952996808, 2566594879), e(3210313671, 3203337956), e(3336571891, 1034457026), e(3584528711, 2466948901), e(113926993, 3758326383), e(338241895, 168717936), e(666307205, 1188179964), e(773529912, 1546045734), e(1294757372, 1522805485), e(1396182291, 2643833823), e(1695183700, 2343527390), e(1986661051, 1014477480), e(2177026350, 1206759142), e(2456956037, 344077627), e(2730485921, 1290863460), e(2820302411, 3158454273), e(3259730800, 3505952657), e(3345764771, 106217008), e(3516065817, 3606008344), e(3600352804, 1432725776), e(4094571909, 1467031594), e(275423344, 851169720), e(430227734, 3100823752), e(506948616, 1363258195), e(659060556, 3750685593), e(883997877, 3785050280), e(958139571, 3318307427), e(1322822218, 3812723403), e(1537002063, 2003034995), e(1747873779, 3602036899), e(1955562222, 1575990012), e(2024104815, 1125592928), e(2227730452, 2716904306), e(2361852424, 442776044), e(2428436474, 593698344), e(2756734187, 3733110249), e(3204031479, 2999351573), e(3329325298, 3815920427), e(3391569614, 3928383900), e(3515267271, 566280711), e(3940187606, 3454069534), e(4118630271, 4000239992), e(116418474, 1914138554), e(174292421, 2731055270), e(289380356, 3203993006), e(460393269, 320620315), e(685471733, 587496836), e(852142971, 1086792851), e(1017036298, 365543100), e(1126000580, 2618297676), e(1288033470, 3409855158), e(1501505948, 4234509866), e(1607167915, 987167468), e(1816402316, 1246189591)],
			c = []; !
			function() {
				for (var t = 0; t < 80; t++) c[t] = e()
			} ();
			var f = l.SHA512 = o.extend({
				_doReset: function() {
					this._hash = new s.init([new a.init(1779033703, 4089235720), new a.init(3144134277, 2227873595), new a.init(1013904242, 4271175723), new a.init(2773480762, 1595750129), new a.init(1359893119, 2917565137), new a.init(2600822924, 725511199), new a.init(528734635, 4215389547), new a.init(1541459225, 327033209)])
				},
				_doProcessBlock: function(t, e) {
					for (var n = this._hash.words,
					i = n[0], o = n[1], r = n[2], a = n[3], s = n[4], l = n[5], f = n[6], d = n[7], h = i.high, v = i.low, p = o.high, _ = o.low, m = r.high, g = r.low, y = a.high, x = a.low, b = s.high, S = s.low, w = l.high, E = l.low, T = f.high, A = f.low, P = d.high, I = d.low, k = h, L = v, M = p, C = _, R = m, B = g, N = y, O = x, D = b, z = S, F = w, V = E, Y = T, U = A, j = P, G = I, Z = 0; Z < 80; Z++) {
						var H = c[Z];
						if (Z < 16) var W = H.high = 0 | t[e + 2 * Z],
						X = H.low = 0 | t[e + 2 * Z + 1];
						else {
							var Q = c[Z - 15],
							q = Q.high,
							K = Q.low,
							J = (q >>> 1 | K << 31) ^ (q >>> 8 | K << 24) ^ q >>> 7,
							$ = (K >>> 1 | q << 31) ^ (K >>> 8 | q << 24) ^ (K >>> 7 | q << 25),
							tt = c[Z - 2],
							et = tt.high,
							nt = tt.low,
							it = (et >>> 19 | nt << 13) ^ (et << 3 | nt >>> 29) ^ et >>> 6,
							ot = (nt >>> 19 | et << 13) ^ (nt << 3 | et >>> 29) ^ (nt >>> 6 | et << 26),
							rt = c[Z - 7],
							at = rt.high,
							st = rt.low,
							lt = c[Z - 16],
							ut = lt.high,
							ct = lt.low,
							X = $ + st,
							W = J + at + (X >>> 0 < $ >>> 0 ? 1 : 0),
							X = X + ot,
							W = W + it + (X >>> 0 < ot >>> 0 ? 1 : 0),
							X = X + ct,
							W = W + ut + (X >>> 0 < ct >>> 0 ? 1 : 0);
							H.high = W,
							H.low = X
						}
						var ft = D & F ^ ~D & Y,
						dt = z & V ^ ~z & U,
						ht = k & M ^ k & R ^ M & R,
						vt = L & C ^ L & B ^ C & B,
						pt = (k >>> 28 | L << 4) ^ (k << 30 | L >>> 2) ^ (k << 25 | L >>> 7),
						_t = (L >>> 28 | k << 4) ^ (L << 30 | k >>> 2) ^ (L << 25 | k >>> 7),
						mt = (D >>> 14 | z << 18) ^ (D >>> 18 | z << 14) ^ (D << 23 | z >>> 9),
						gt = (z >>> 14 | D << 18) ^ (z >>> 18 | D << 14) ^ (z << 23 | D >>> 9),
						yt = u[Z],
						xt = yt.high,
						bt = yt.low,
						St = G + gt,
						wt = j + mt + (St >>> 0 < G >>> 0 ? 1 : 0),
						St = St + dt,
						wt = wt + ft + (St >>> 0 < dt >>> 0 ? 1 : 0),
						St = St + bt,
						wt = wt + xt + (St >>> 0 < bt >>> 0 ? 1 : 0),
						St = St + X,
						wt = wt + W + (St >>> 0 < X >>> 0 ? 1 : 0),
						Et = _t + vt,
						Tt = pt + ht + (Et >>> 0 < _t >>> 0 ? 1 : 0);
						j = Y,
						G = U,
						Y = F,
						U = V,
						F = D,
						V = z,
						z = O + St | 0,
						D = N + wt + (z >>> 0 < O >>> 0 ? 1 : 0) | 0,
						N = R,
						O = B,
						R = M,
						B = C,
						M = k,
						C = L,
						L = St + Et | 0,
						k = wt + Tt + (L >>> 0 < St >>> 0 ? 1 : 0) | 0
					}
					v = i.low = v + L,
					i.high = h + k + (v >>> 0 < L >>> 0 ? 1 : 0),
					_ = o.low = _ + C,
					o.high = p + M + (_ >>> 0 < C >>> 0 ? 1 : 0),
					g = r.low = g + B,
					r.high = m + R + (g >>> 0 < B >>> 0 ? 1 : 0),
					x = a.low = x + O,
					a.high = y + N + (x >>> 0 < O >>> 0 ? 1 : 0),
					S = s.low = S + z,
					s.high = b + D + (S >>> 0 < z >>> 0 ? 1 : 0),
					E = l.low = E + V,
					l.high = w + F + (E >>> 0 < V >>> 0 ? 1 : 0),
					A = f.low = A + U,
					f.high = T + Y + (A >>> 0 < U >>> 0 ? 1 : 0),
					I = d.low = I + G,
					d.high = P + j + (I >>> 0 < G >>> 0 ? 1 : 0)
				},
				_doFinalize: function() {
					var t = this._data,
					e = t.words,
					n = 8 * this._nDataBytes,
					i = 8 * t.sigBytes;
					return e[i >>> 5] |= 128 << 24 - i % 32,
					e[30 + (i + 128 >>> 10 << 5)] = Math.floor(n / 4294967296),
					e[31 + (i + 128 >>> 10 << 5)] = n,
					t.sigBytes = 4 * e.length,
					this._process(),
					this._hash.toX32()
				},
				clone: function() {
					var t = o.clone.call(this);
					return t._hash = this._hash.clone(),
					t
				},
				blockSize: 32
			});
			n.SHA512 = o._createHelper(f),
			n.HmacSHA512 = o._createHmacHelper(f)
		} (),
		t.SHA512
	})
},
function(t, e, n) {
	"use strict";
	var i = n(255).assign,
	o = n(1015),
	r = n(1016),
	a = n(555),
	s = {};
	i(s, o, r, a),
	t.exports = s
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		if (e < 65534 && (t.subarray && a || !t.subarray && r)) return String.fromCharCode.apply(null, o.shrinkBuf(t, e));
		for (var n = "",
		i = 0; i < e; i++) n += String.fromCharCode(t[i]);
		return n
	}
	var o = n(255),
	r = !0,
	a = !0;
	try {
		String.fromCharCode.apply(null, [0])
	} catch(t) {
		r = !1
	}
	try {
		String.fromCharCode.apply(null, new Uint8Array(1))
	} catch(t) {
		a = !1
	}
	for (var s = new o.Buf8(256), l = 0; l < 256; l++) s[l] = l >= 252 ? 6 : l >= 248 ? 5 : l >= 240 ? 4 : l >= 224 ? 3 : l >= 192 ? 2 : 1;
	s[254] = s[254] = 1,
	e.string2buf = function(t) {
		var e, n, i, r, a, s = t.length,
		l = 0;
		for (r = 0; r < s; r++) n = t.charCodeAt(r),
		55296 == (64512 & n) && r + 1 < s && 56320 == (64512 & (i = t.charCodeAt(r + 1))) && (n = 65536 + (n - 55296 << 10) + (i - 56320), r++),
		l += n < 128 ? 1 : n < 2048 ? 2 : n < 65536 ? 3 : 4;
		for (e = new o.Buf8(l), a = 0, r = 0; a < l; r++) n = t.charCodeAt(r),
		55296 == (64512 & n) && r + 1 < s && 56320 == (64512 & (i = t.charCodeAt(r + 1))) && (n = 65536 + (n - 55296 << 10) + (i - 56320), r++),
		n < 128 ? e[a++] = n: n < 2048 ? (e[a++] = 192 | n >>> 6, e[a++] = 128 | 63 & n) : n < 65536 ? (e[a++] = 224 | n >>> 12, e[a++] = 128 | n >>> 6 & 63, e[a++] = 128 | 63 & n) : (e[a++] = 240 | n >>> 18, e[a++] = 128 | n >>> 12 & 63, e[a++] = 128 | n >>> 6 & 63, e[a++] = 128 | 63 & n);
		return e
	},
	e.buf2binstring = function(t) {
		return i(t, t.length)
	},
	e.binstring2buf = function(t) {
		for (var e = new o.Buf8(t.length), n = 0, i = e.length; n < i; n++) e[n] = t.charCodeAt(n);
		return e
	},
	e.buf2string = function(t, e) {
		var n, o, r, a, l = e || t.length,
		u = new Array(2 * l);
		for (o = 0, n = 0; n < l;) if ((r = t[n++]) < 128) u[o++] = r;
		else if ((a = s[r]) > 4) u[o++] = 65533,
		n += a - 1;
		else {
			for (r &= 2 === a ? 31 : 3 === a ? 15 : 7; a > 1 && n < l;) r = r << 6 | 63 & t[n++],
			a--;
			a > 1 ? u[o++] = 65533 : r < 65536 ? u[o++] = r: (r -= 65536, u[o++] = 55296 | r >> 10 & 1023, u[o++] = 56320 | 1023 & r)
		}
		return i(u, o)
	},
	e.utf8border = function(t, e) {
		var n;
		for (e = e || t.length, e > t.length && (e = t.length), n = e - 1; n >= 0 && 128 == (192 & t[n]);) n--;
		return n < 0 ? e: 0 === n ? e: n + s[t[n]] > e ? n: e
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i) {
		for (var o = 65535 & t | 0,
		r = t >>> 16 & 65535 | 0,
		a = 0; 0 !== n;) {
			a = n > 2e3 ? 2e3: n,
			n -= a;
			do {
				o = o + e[i++] | 0, r = r + o | 0
			} while (-- a );
			o %= 65521,
			r %= 65521
		}
		return o | r << 16 | 0
	}
	t.exports = i
},
function(t, e, n) {
	"use strict";
	t.exports = {
		Z_NO_FLUSH: 0,
		Z_PARTIAL_FLUSH: 1,
		Z_SYNC_FLUSH: 2,
		Z_FULL_FLUSH: 3,
		Z_FINISH: 4,
		Z_BLOCK: 5,
		Z_TREES: 6,
		Z_OK: 0,
		Z_STREAM_END: 1,
		Z_NEED_DICT: 2,
		Z_ERRNO: -1,
		Z_STREAM_ERROR: -2,
		Z_DATA_ERROR: -3,
		Z_BUF_ERROR: -5,
		Z_NO_COMPRESSION: 0,
		Z_BEST_SPEED: 1,
		Z_BEST_COMPRESSION: 9,
		Z_DEFAULT_COMPRESSION: -1,
		Z_FILTERED: 1,
		Z_HUFFMAN_ONLY: 2,
		Z_RLE: 3,
		Z_FIXED: 4,
		Z_DEFAULT_STRATEGY: 0,
		Z_BINARY: 0,
		Z_TEXT: 1,
		Z_UNKNOWN: 2,
		Z_DEFLATED: 8
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i) {
		var r = o,
		a = i + n;
		t ^= -1;
		for (var s = i; s < a; s++) t = t >>> 8 ^ r[255 & (t ^ e[s])];
		return - 1 ^ t
	}
	var o = function() {
		for (var t, e = [], n = 0; n < 256; n++) {
			t = n;
			for (var i = 0; i < 8; i++) t = 1 & t ? 3988292384 ^ t >>> 1 : t >>> 1;
			e[n] = t
		}
		return e
	} ();
	t.exports = i
},
function(t, e, n) {
	"use strict";
	function i() {
		this.input = null,
		this.next_in = 0,
		this.avail_in = 0,
		this.total_in = 0,
		this.output = null,
		this.next_out = 0,
		this.avail_out = 0,
		this.total_out = 0,
		this.msg = "",
		this.state = null,
		this.data_type = 2,
		this.adler = 0
	}
	t.exports = i
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABkCAMAAAAIYWa2AAAC8VBMVEVHcEwAAAAAAAAAAAAAAAAzMzPQRUXlSUnnS0vqS0vrTEzhSEgAAADFRUXmS0vtTk7xTU3yTk7yTk6vPz/oTEzvTk7yTk7MRETrS0vyT0/FQUHFPj7uTU3yTk7sTExVKiroS0vyTk5IJCS4QEDuTU3SRETxTU0AAADhSkreSUkAAADoSkryTk7pSkoAAADoTEzmTEziSUndSEjMRETDQUFtJCTwTU3vTExfHx/mSUkAAADFPz/yTk68PDztTEwAAADMRUXBQUHsTEzqTEyzPj7yTk6lOTnjSUnfSEjuTk7yUVH2iYn6wMD95OT+9vYAAADBPT32hob95ub///+2OTkAAADfSUnyT0/5ra3aR0cAAADqS0vwTU3vTU0AAABmKChbJCTBPT24OjrQQkIAAADXRUXRQ0PVRUUAAADcR0fYRkYAAADXRETQQkLNRETIQkLDQUG9Pj6qNzegNTUhCwvxTk4cCQkAAADrTEwAAAAAAADkSkriSEgAAADLQUFnIiLyTk5gHx/oS0vnSkoAAAAAAADOQ0NLHh7wTk4/FRXaRkbXRUVuJSXxTU1vKCgAAADfSEjZRkYAAADwTU3vTU1XHBzSRETIQEAmDw/rTEzoSkoIBQWhNDSMLS3NQkIAAAAAAAAlDw/oSkrnSkqBKyvwTU3vTU1lISG5PT2qODgAAADURUXKQkIBAQHjSUncRkYAAAAAAAA1FBTkSkoYCgpjISHsS0s/FxcAAABtJSXsTU3pS0tTGhp0JibsTExYHR1bHBzsTExpIyOVMzPuTU19KyujNjbxTk7uTU2MLS2xOTnxTk6bMTHCPj60OTniSEjcR0fuTU07FxefNDTbR0fTRUXpS0uiNDThSEiDKyvXRkZ6JyfhSUmSLi7pS0vIQUFQGBjmSkrGQUGCKSntTEzrTEzdSEjbR0edMzOYMTHZR0eTLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6Ei6pAAAA+3RSTlMAAQIDBAUhRVhlcUYFFlSTzvX/EGC6/B6P8h8YmPiZBmvtBxe7MNwGVlcHhf6PCHx8WlwtLw7T1BCDCSz3LrQLNzqwsSX9KICC2///////DjL///81CnP//3UMtOPkERkcPkFcDWdqdg98fhBvcmFjUlY8Phf4GxTRFxKlqBZsJfopwMIaE3ci7iSRky/5MhimnBvy7C2DeiHVzSBIQoceFSLQxTvw6zVnWx2Qgh+3qSEZJsAkMtssHDbh1jE73zQ14jpL6UFU9e9IXfRScma0p+crU56T0k2vOpQ0rULLdCm4cTHY1JeWPD6aQC42PDkwKCsvMjQsKSUnKiijw/sAAAUASURBVHgB1M8DcoRBEIbhNNbutW3EtnP/E2V/rDUzKeUpo9/q7+gfATA/tSAiORARpjQLiMTs8fr8gWAw4A95PWEmO6SRII5EY/GEzCXisWgkzIodu5BMpTOyIZNOJZmsjEIim8vLDvlcIXwgYw3hYqkse5QrRTuz741qrS4H1GsN3lmx3mimRUGrGabtkwAo3O6Ikk67u3USIIV7eVGU7w82JwEgdYcjUTYablasRk60jCdrFQDqHoumk3ll3jgVbWfWokUDw+d50Za/GND8FUC+vBID1zddt2KNGdyKkdu7MLoR7N4/iJGHR3cQIN89iaGnZ+cVoO7LSAyNXicMYD/yJsben7sI1iMfn2Ls82vC0wjffcsf/DyH8ZdUskbLIIyBcJCSag+BQ4+36+7uisv58d+T6pt23ic6sH1wJ5CEKMmKqiqyJJKIoB3vwM6xTgKGaf3LNEjIdnZh99IlXM+3luR7BBaEB7B3FxGub63IJ7BIO4ZjLSZ2sdZEbJSkl3Ce4UkTzfUipojnLXfgssAbSNaGJJwsQ3Aq3JI3i8g4WdVw1+CWsllEwclWgzDALXWziIqTXQ/1wFpknKC+Z13n4bvII+thn1Kon1lf/DJB/cqxhY17myB8v2aL/cdXKWYNHLcWheGlcmt3r32URP2E1FeqQoatDJrRpI0sJTIzyTEzoxIzY9gMYWY0M1fRXWXOsizdvf18c/6Dv3SNNpBspH8DGMlRhgv8df9WwQ0h1HDaFuXfUopiSQNBR8f4sx5jYvkLhn9ChTh/FnV8AkPImy0xyR9IEidvNstpJjkFn5GSypJWeduHCmn4kPQE5rTFYJL1ZGTiMjKzhFD57hgtBC1m40Ju5vAXrCbkTgLZjFw8Rl4+RxFm+RbLoTBiAR6kMIdXDIo9lKJiHEZJqYACsUPkrHBlMRhmqzzBdsEeCKJYST4nXT+korIqVPFsinsMraqu0cuoLRWZ02CHkeNixLp6fYyGxhweeS2jw5XLgpp02b+AZskhBgSx0i09kNstHA1i0FMqJLS0ame0tXfYKwMQ5RPhAiN2lmhldHUn8IH/gBjntHT09Gpj1PT1s6GODxXntAQm5gwMamEMDUtVFOHCgLTIyc0ZGdXAuCMJNPq+8ISg5Iay/SMhxzF671Z6ZQCFquovb1Bn3LtfydEXrJBUD4oVUR6otu7DRy0c450BlNNUlTQ27psxMYkYUFxfFFqQpnzu3OmZFlGdAZTKWV+QuVLRRqow4K/DaYZrmffOeNzewasygIIGIP+JN8bo05zEwP/NJnUGDEDClJe9EPBMgmZXeTAAbP9zT8iLFoEmjmfAXqCETo9ZfNkN06+JYr1g63jlJihgsj/RY/rV0xKY2P/arTItAkyudkFvXFpufKCDgT8D2gUluOT2rcTqEOM4Re9inK5dj0jrEQOnqOO9A5Ldn2j/oNf1UG6ryoBx8gMKRIcYCMWW8BFOpqQnEHgoKwL4yk8djM5AoEB87F9/0vq5KlBnIBAKxX1RIPM5NjiZekMh2asK5CtHybcb63+5nNpvSm2yWMWaYer5jiA/kBojHsT0D8n+RJBfeGqgVRam5RW/yGLVBlqlanFpaRm8GVYoTPvK6tra+ka7TbcagEibW9s7q6u7G3v7lbgQy8Hh/tbe9vbK1tHhgcWA+Yj+w839o62j/cN+ApeBskIyPM8EQlaxQcd32W/E9Jewb6BBFAAAAABJRU5ErkJggg=="
},
function(t, e, n) {
	"use strict";
	e.Event = n(106),
	e.Map = n(337).
default,
	e.LatLng = n(47),
	e.LatLngBounds = n(209),
	e.Point = n(74),
	e.GradientColor = n(468),
	e.TVectorTileLayer = n(383).
default,
	e.VectorTileLayer = n(383).
default,
	e.ImageTileLayer = n(299).
default,
	e.GrayTileLayer = n(662).
default,
	e.CanvasGroundLayer = n(661).
default,
	e.ImageGroundLayer = n(664).
default,
	e.MaskLayer = n(486).
default,
	e.WMTSLayer = n(669).
default,
	e.WMSLayer = n(668).
default,
	e.GeometryOverlay = n(303).
default,
	e.MultiPolygon = n(338),
	e.PolygonStyle = n(218).PolygonStyle,
	e.ExtrudablePolygonStyle = n(218).ExtrudablePolygonStyle,
	e.MultiCircle = n(728),
	e.CircleStyle = n(218).CircleStyle,
	e.MultiRectangle = n(732),
	e.RectangleStyle = n(218).RectangleStyle,
	e.MultiEllipse = n(729),
	e.EllipseStyle = n(218).EllipseStyle,
	e.MultiPolyline = n(506),
	e.PolylineStyle = n(339).
default,
	e.LabelStyle = n(391).
default,
	e.MultiLabel = n(730),
	e.MultiMarker = n(731),
	e.MarkerStyle = n(505),
	e.InfoWindow = n(727).
default,
	e.DOMOverlay = n(390).
default,
	e.MarkerCluster = n(734).
default,
	e.Light = n(512).
default,
	e.VisualPlugin = n(749),
	e.ModelPlugin = n(510).
default,
	e.LayerPlugin = n(510).
default,
	e.constants = {
		CONTROL_POSITION: n(248).CONTROL_POSITION,
		DEFAULT_CONTROL_ID: n(248).DEFAULT_CONTROL_ID,
		GEOMETRY_TYPES: n(220).GEOMETRY_TYPES,
		LIGHT_TYPE: n(341).LIGHT_TYPE,
		IMAGE_DISPLAY: n(137).IMAGE_DISPLAY,
		LAYER_LEVEL: n(143).LAYER_LEVEL,
		MAP_ZOOM_TYPE: n(304).MAP_ZOOM_TYPE
	},
	e.AnimatableMixin = n(470).animatableMixin
},
, , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(326);
	e.
default = {
		v: "\n    attribute vec2 a_Positions;\n    attribute vec4 a_InstanceCoords;\n    attribute vec4 a_InstanceColor;\n    attribute float a_InstanceWidth;\n\n    uniform mat4 u_matrix;\n    uniform sampler2D u_SamplerArrow;\n    uniform float u_mapScale;\n    uniform vec2 u_resolution;\n\t  varying vec2 v_TexCoord;\n\t  varying vec4 v_Color;\n    " + i.projectScreenPart + "\n\n\n\t  void main(){\n\t\n\t    vec2 wH = vec2(a_InstanceWidth * (20.0 / 4.0), a_InstanceWidth * (20.0 / 4.0));\n\t    vec2 startPt = a_InstanceCoords.xy;\n      vec2 endPt = a_InstanceCoords.zw;\n      vec2 wh = vec2(abs(endPt.x - startPt.x), abs(endPt.y - startPt.y));\n\t    vec2 transCoord = (startPt + endPt) / 2.0;\n      \n      vec2 start_proj = project(u_matrix * vec4(startPt, 0., 1.));\n      vec2 end_proj = project(u_matrix * vec4(endPt, 0., 1.));\n\n\t    vec4 center_proj = u_matrix * vec4(transCoord, 0., 1.);\n\t    \n      vec2 center_screen = project(center_proj);\n      vec2 delta = end_proj - start_proj;\n      float len = length(delta);\n      float angle_sin = delta.x / len;\n      float angle_cos = delta.y / len;\n      mat2 rotation_matrix = mat2(angle_cos, -1.0 * angle_sin, angle_sin, angle_cos);\n      \n      vec2 positions = a_Positions * 0.5 + 0.5;\n\n      vec2 corner_screen =  rotation_matrix * vec2(\n        (wH.x * positions.x - wH.x * 0.5) * u_mapScale, \n        (wH.y * (positions.y - 1.0) + wH.y * 0.5) * u_mapScale\n      ) + center_screen.xy;\n\n      vec4 corner_proj = unproject(corner_screen, center_proj.z, center_proj.w);\n      gl_Position = corner_proj;\n\n      gl_PointSize = 100.0;\n\n\t    v_TexCoord = vec2(positions.x, positions.y);\n\t    v_Color = vec4(a_InstanceColor.rgb / 255.0, 1.0);\n\t  }\n  ",
		f: "\n    precision mediump float;\n    varying vec2 v_TexCoord;\n    varying vec4 v_Color;\n\n    uniform sampler2D u_SamplerArrow;\n    void main(void) {\n\t\t\tvec4 color = texture2D(u_SamplerArrow, v_TexCoord);\n      gl_FragColor = mix(vec4(0.0, 0.0, 0.0, 0.0), v_Color, step(0.5, color.a));\n\t\t} \n  ",
		name: "arrow"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(276),
	o = n(330),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = r.
default ? i.LIGHT_UNIFORM + i.LIGHT_VARYING + i.LIGHT_VERTEX: "",
	s = r.
default ? i.LIGHT_VARYING + i.LIGHT_FRAG: "";
	e.
default = {
		v: "\n\t\tprecision highp float;\n\t\tattribute vec2 a_Position;\n\t\tattribute vec4 a_Color;\n\t\tattribute vec2 a_Normal;\n\t\tattribute vec2 a_LineInfo;\n\t\tattribute float a_LineDistance;\n\t\tattribute vec2 a_SideInfo;\n\t\tattribute vec4 a_PickingColor;\n\n\t\tuniform mat4 u_matrix;\n\t\tuniform mat4 u_modelMatrix;\n\t\tuniform float u_SizeScale;\n\t\tuniform float picking_useFeaturePickingColor;\n\n\t\tvarying vec4 v_Color;\n\t\tvarying vec2 v_Normal;\n\t\tvarying vec2 v_LineInfo;\n\t\tvarying vec2 v_Pos;\n\t\tvarying float v_Transform;\n\t\tvarying float v_LineDistance;\n\t\tvarying float v_Width;\n\t\tvarying float v_opaque_part;\n\n\t\t" + a + "\n\n\t\tvoid main(){\n\n\t\t\tfloat isSide = fract(a_SideInfo.x / 2.) * 2.;\n\t\t\tfloat isNoSideLine = floor(a_SideInfo.x / 2.);\n\t\t\tv_opaque_part = mix(1.0, 0.0, smoothstep(0.0, 1.0, isSide * isNoSideLine));\n\n\t\t\tfloat zoom = floor(u_SizeScale / 1000.) / 100.;\n\t\t\tfloat scale = fract(u_SizeScale / 1000.) * 10.;\n\t\t\tfloat preWidth = floor(a_Position.x / 2048.0)/2.0;\n\t\t\tfloat nextWidth = floor(a_Position.y / 2048.0)/2.0;\n\n\t\t\tv_Color = mix(a_Color, a_PickingColor, picking_useFeaturePickingColor);\n\t\t\tv_Normal = a_Normal;\n\t\t\tv_LineInfo = a_LineInfo;\n\t\t\tv_LineDistance = floor(a_LineDistance/10.0);\n\t\t\tvec2 point = (fract(a_Position.xy / 2048.0) * 2048.0 - 1024.0) * 0.5;\n\n\t\t\t\n\t\t\tfloat width = a_LineInfo.x / 2.0;\n\t\t\tfloat nearWidth = mix(nextWidth, preWidth, step(0.5, zoom));\n\t\t\tv_Width = mix(\n\t\t\t\twidth,\n\t\t\t\tmix(\n\t\t\t\t\tmix(width, nextWidth, zoom),\n\t\t\t\t\tmix(preWidth, width, zoom),\n\t\t\t\t\tstep(0.5, zoom)\n\t\t\t\t),\n\t\t\t\tfloat(v_LineDistance > 0. && nearWidth > 0.)\n\t\t\t) / scale;\n\n\t\t\tv_Normal = vec2(a_Normal.x - 128.0, a_Normal.y - 128.0) / 63.;\n\t\t\tv_Pos = point + v_Normal * v_Width;\n\t\t\tv_Transform = a_SideInfo.y;\n\t\t\tgl_Position = u_matrix * vec4(v_Pos, 0.0, 1.0);\n\n\t\t\t\n\t\t\t" + (r.
	default ? "lighting_apply_on_vertex(vec3(v_Pos, 0.0), vec3(0.0, 0.0, 1.0), u_modelMatrix, vec2(0.1, 16.0));": "") + "\n\t\t}\n\t",
		f: "\n\t\tprecision highp float;\n\t\tvarying vec4 v_Color;\n\t\tvarying vec2 v_Normal;\n\t\tvarying vec2 v_LineInfo;\n\t\tvarying vec2 v_Pos;\n\t\tvarying float v_Transform;\n\t\tvarying float v_LineDistance;\n\t\tvarying float v_Width;\n\t\tvarying float v_opaque_part;\n\n\t\t" + s + "\n\n\t\tvoid main(){\n\t\t\tvec4 f_Color;\n\t\t\tf_Color.r = v_Color.r / 255.0;\n\t\t\tf_Color.g = v_Color.g / 255.0;\n\t\t\tf_Color.b = v_Color.b / 255.0;\n\t\t\tf_Color.a = 1.0;\n\n\t\t\tfloat alpha = 1.0;\n\t\t\tfloat minAlpha = 0.0;\n\t\t\tfloat feather = min(v_Width * 0.3, 2.0);\n\n\t\t\t\n\t\t\tfloat transformByte = floor(v_Transform + 0.5);\n\t\t\tvec2 translate = vec2(fract(transformByte / 4.0) * 4.0, floor(fract(transformByte / 16.0) * 4.0));\n\t\t\tfloat scale = floor(transformByte / 16.0);\n\t\t\tvec2 coord = vec2(v_Pos.x, 0. - v_Pos.y) * scale - translate * 256.0;\n\t\t\tbool isOutSide = coord.x < 0. || coord.x > 256.0 || coord.y < 0. || coord.y > 256.0;\n\n\t\t\tfloat dist = abs(length(v_Normal) * v_Width);\n\t\t\tfloat isTransparent = float(\n\t\t\t\t(dist > v_Width || isOutSide) || \n\t\t\t\t(v_LineInfo.y> 0.0 && mod(v_LineDistance, floor(v_LineInfo.y/10.0) * (2.0-fract(v_LineInfo.y/10.0))) > floor(v_LineInfo.y/10.0))\n\t\t\t);\n\n\t\t\talpha = mix(\n\t\t\t\tmix(alpha, clamp((v_Width - dist) / feather, 0.0, 1.0), float(v_Width>0. && dist>(v_Width - feather))),\n\t\t\t\t0.0,\n\t\t\t\tisTransparent\n\t\t\t);\n\n\t\t\t\n\t\t\t" + (r.
	default ? "vec4 colorInLight = lighting_apply_on_color(f_Color);": "vec4 colorInLight = f_Color;") + "\n\t\t\tgl_FragColor =  colorInLight * (v_Color.a /255.0) * alpha * v_opaque_part;\n\t\t}\n\t",
		name: "base"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.
default = {
		v: "\nattribute vec2 a_Position;\nattribute vec4 a_Info;\nuniform mat4 u_matrix;\nuniform mat4 u_modelMatrix;\nuniform mat4 u_lightPVMatrix;\nvarying vec4 v_pos;\nvarying vec4 v_flatNDCCoord;\n\nvoid main(){\n\tv_pos = vec4(a_Position.xy - 2048.0, a_Info.x, 1.0);\n\n\t\n    v_flatNDCCoord = u_matrix * vec4(v_pos.xy, 0.0, 1.0);\n    \n    vec4 posInLightView = u_lightPVMatrix * u_modelMatrix *  vec4(v_pos.xyz, 1.0);\n\n\tgl_Position = posInLightView;\n}",
		f: "\nprecision mediump float;\n\nuniform float u_maskScale;\nuniform sampler2D u_maskSampler;\n\nvarying vec4 v_pos;\nvarying vec4 v_flatNDCCoord;\n\nvoid main(){ \n\tvec2 v_texCoord = (v_flatNDCCoord.xy / v_flatNDCCoord.w * u_maskScale + 1.0) / 2.0;\n\n\t\n\tvec4 maskColor = texture2D(u_maskSampler, v_texCoord);\n\tfloat isCulledByMask = maskColor.r;\n\tfloat alpha = 1.0;\n\tif(isCulledByMask > 0.99) {\n\t\tdiscard;\n\t}\n\tif(v_pos.x < -.17 || v_pos.y > .17 || v_pos.x > 256.0 || v_pos.y < -256.0){\n\t\tdiscard;\n\t}\n\n    gl_FragColor = vec4(1.0);\n}",
		name: "building-shadow"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(276),
	o = "\nattribute vec2 a_Position;\nattribute vec4 a_Color;\nattribute vec4 a_Info;\nattribute vec4 a_Transform;\nattribute float a_Height;\nuniform mat4 u_matrix;\nuniform mat4 u_modelMatrix;\nuniform float u_use3D;\nvarying vec4 v_coord;\nvarying vec4 v_color;\nvarying vec2 v_Transform;\n" + i.LIGHT_UNIFORM + "\n" + i.LIGHT_VARYING + "\n" + i.LIGHT_VERTEX + "\n\nvoid main(){\n\tvec4 v_pos = vec4(a_Position.xy - 2048.0, mix(0.0, a_Height, u_use3D), 1.0);\n\tvec3 a_normal = normalize(vec3(a_Info.xyz-128.0));\n\n\t\n\tv_color = vec4(float(a_Color.r), float(a_Color.g), float(a_Color.b), float(a_Color.a)) / 255.0;\n\tvec2 objSpec = vec2(0.5, 32.0);\n\tlighting_apply_on_vertex(v_pos.xyz, a_normal, u_modelMatrix, objSpec);\n\n\t\n\tvec4 v_flatNDCCoord = u_matrix * vec4(v_pos.xy, 0.0, 1.0);\n\tv_coord = vec4(v_pos.xy, v_flatNDCCoord.xy / v_flatNDCCoord.w);\n\tv_Transform = a_Transform.xy;\n\n\tgl_Position = u_matrix * v_pos;\n}",
	r = "\nprecision mediump float;\n\nuniform float u_maskScale;\nuniform sampler2D u_maskSampler;\n\nvarying vec4 v_coord;\nvarying vec4 v_color;\nvarying vec2 v_Transform;\n\n" + i.LIGHT_VARYING + "\n" + i.LIGHT_FRAG + "\n\nvoid main(){ \n\tvec2 v_texCoord = (v_coord.zw * u_maskScale + 1.0) / 2.0;\n\n\t\n\tvec4 maskColor = texture2D(u_maskSampler, v_texCoord);\n\tfloat isCulledByMask = maskColor.r;\n\t\n\t\n\tif(isCulledByMask > 0.99) {\n\t\tdiscard;\n\t}\n\n\t\n\tvec2 transformRound = floor(v_Transform + 0.5);\n\tvec2 translate = vec2(fract(transformRound.x / 16.0) * 16.0, floor(transformRound.x / 16.0));\n\tfloat scale = transformRound.y;\n\tvec2 coord = vec2(v_coord.x, - v_coord.y) * scale - translate * 256.0;\n\tbool isOutSide = coord.x < -.17 || coord.x > 256.0 || coord.y < -.17 || coord.y > 256.0;\n\t\n\tif(isOutSide){\n\t\t\n\t\tdiscard;\n\t}\n\n\tvec4 color = lighting_apply_on_color(v_color);\n\tgl_FragColor = vec4(color.rgb * color.a, color.a);\n}";
	e.
default = {
		v: o,
		f: r,
		name: "building"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.gradientNoise = "\n\nvec2 random(vec2 p) {\n\treturn -1.0 + 2.0 * fract(\n            sin(\n                vec2(\n                    dot(p, vec2(127.1, 311.7)),\n                    dot(p, vec2(269.5, 183.3))\n                )\n            ) * 43758.5453123\n        );\n}\n\n\nfloat noise(vec2 p) {\n\n    vec2 i = floor(p);\n    vec2 f = fract(p);\n\n\n    float a1 = dot(random(i), f);\n    float a2 = dot(random(i + vec2(1., 0.)), f + vec2(-1., 0.));\n    float a3 = dot(random(i + vec2(1., 1.)), f + vec2(-1., -1.));\n    float a4 = dot(random(i + vec2(0., 1.)), f + vec2(0., -1.));\n\n\n    vec2 w = smoothstep(0., 1., f);\n    return mix(\n        mix(a1, a2, w.x),\n        mix(a4, a3, w.x),\n        w.y\n    );\n}\n\nconst int FBM_NUM = 5;\nconst float FREQ = 2.;\nfloat fbm(vec2 p, vec2 cellScale) {\n    float f = 0.0;\n    float a = 1.0;\n    p *= cellScale;\n\n    for (int i = 0; i < FBM_NUM; i++) {\n        f += a * noise(p);\n        p *= FREQ;\n        a /= FREQ;\n    }\n    return f;\n}\n"
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(589),
	o = n(330),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = r.
default ? "\n\nfloat edgeY = (uFogEdge.x + 1.) / 2.;\nfloat x = fract((vPosition.x * uViewInfo.y + uViewInfo.x) / 2. / PI);\nvec2 skyCoord = vec2(\n\tgetCoordByDisplay(x, uSkyInfo.x * uViewInfo.y / PI, uSkyInfo.z),\n\tgetCoordByDisplay((texCoord.y - edgeY) / (1.0 - edgeY), uSkyInfo.y / (1.0 - edgeY), uSkyInfo.w)\n);\nvec4 skyColor = mix(\n\tuSkyColor,\n\ttexture2D(uSkySampler, skyCoord),\n\tstep(0.001, uSkyInfo.x * uSkyInfo.y)\n);\n\n\nvec2 p = vec2(texCoord.x - uViewInfo.w + uViewInfo.x / uViewInfo.y / 2., texCoord.y - edgeY);\nfloat mask = smoothstep(0., 0.5, p.y);\nfloat n = mix(\n\t0.,\n\tmax(0., fbm(p, vec2(2., 4.)) * mask),\n\tuViewInfo.z\n);\nvec4 skyWithCloud = vec4(mix(skyColor.rgb, vec3(1.0), n) * uSkyBrightness, skyColor.a);\n": "vec4 skyWithCloud = uSkyColor;",
	s = "\n#define SHADER_NAME FogShader-fragment-shader\nprecision highp float;\n\nconst float PI = 3.141592653589793;\n\n\nuniform vec2 uRange;\n\n\nuniform vec3 uFogEdge;\n\nuniform sampler2D uSampler;\nuniform sampler2D uDepthSampler;\nuniform sampler2D uSkySampler;\nuniform vec4 uSkyInfo;\nuniform vec4 uViewInfo;\nuniform float uSkyBrightness;\nuniform vec4 uFogColor;\nuniform vec4 uSkyColor;\n\nvarying vec2 vPosition;\n\nfloat LinearizeDepth(float depth) {\n    float near = 0.1;\n    float far = 100.0;\n    float z = depth * 2.0 - 1.0;\n    return (2.0 * near) / (far + near - z * (far - near));\n}\n\nfloat getDepthFromY(float y) {\n\t\n\treturn min(uFogEdge.z + (uFogEdge.y - uFogEdge.z) * y / uFogEdge.x, 1.);\n}\n\nfloat getCoordByDisplay(float value, float max, float displayType) {\n\t\n\treturn mix(\n\t\tvalue / max,\n\t\tmix(\n\t\t\tvalue,\n\t\t\tfract(value / max),\n\t\t\tstep(2.0, displayType)\n\t\t),\n\t\tstep(1.0, displayType)\n\t);\n}\n\n" + i.gradientNoise + "\n\nvoid main() {\n\tvec2 texCoord = (vPosition + vec2(1.0)) / 2.0;\n\n\t\n\tfloat depth = texture2D(uDepthSampler, texCoord).x;\n\n\t\n\tdepth = min(getDepthFromY(vPosition.y), depth);\n\t\n\n\t\n\tfloat fogFactor = mix(\n\t\tsmoothstep(getDepthFromY(uFogEdge.x - uRange.x), uFogEdge.y, depth),\n\t\t1. - smoothstep(uFogEdge.y, getDepthFromY(uFogEdge.x + uRange.y), depth),\n\t\tstep(uFogEdge.y, depth)\n\t);\n\n\t\n\t\n\tvec4 sceneColor = vec4(0.);\n\n\t" + a + "\n\t\n\t\n\tvec4 bgColor = mix(sceneColor, skyWithCloud, step(uFogEdge.y, depth));\n\n\t\n\t\n\tvec4 blendColor = mix(bgColor, uFogColor, fogFactor);\n\t\n\t\n\t\n\n\tgl_FragColor = mix(\n\t\tblendColor,\n\t\tsceneColor,\n\t\tfloat(vPosition.y < uFogEdge.x - uRange.x)\n\t);\n}\n";
	e.
default = {
		v: "\n#define SHADER_NAME FogShader-vertex-shader\nattribute vec2 aClipSpacePosition;\nvarying vec2 vPosition;\n\n\nuniform vec2 uRange;\n\nuniform vec3 uFogEdge;\n\nvoid main() {\n\tfloat bottom = uFogEdge.x - uRange.x;\n\tfloat y = mix(\n\t\tbottom,\n\t\taClipSpacePosition.y,\n\t\tstep(0., aClipSpacePosition.y)\n\t);\n\tvPosition = vec2(aClipSpacePosition.x, y);\n\t\n\tgl_Position = vec4(vPosition, 1.0, 1.0);\n}\n",
		f: s,
		name: "fog"
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return {
			v: "\n\t#define SHADER_NAME FXAA3Shader-vertex-shader\n\tattribute vec2 aClipSpacePosition;\n\n\tvoid main() {\n\tgl_Position = vec4(aClipSpacePosition, 1.0, 1.0);\n\t}\n\t",
			f: "\n\t#define SHADER_NAME FXAA3Shader-fragment-shader\n\tprecision highp float;\n\n\t" + (0, o.getFxaaFunPart)(t) + "\n\n\n\tuniform vec2 uResolution;\n\tuniform sampler2D uSampler;\n\tuniform bool uEnabled;\n\n\tconst float fxaaQualitySubpix = 0.5;\n\tconst float fxaaQualityEdgeThreshold = 0.125;\n\tconst float fxaaQualityEdgeThresholdMin = 0.0833;\n\n\tvoid main()\n\t{\n\t\tvec2 v_textureCoordinates = vec2(gl_FragCoord.xy / uResolution.xy);\n\t\tvec2 fxaaQualityRcpFrame = vec2(1.0) / uResolution.xy;\n\t\tvec4 color = texture2D(uSampler, v_textureCoordinates);\n\n\t\tcolor.rgb = mix(color.rgb,\n\t\tFxaaPixelShader(\n\t\t\tv_textureCoordinates,\n\t\t\tuSampler,\n\t\t\tfxaaQualityRcpFrame,\n\t\t\tfxaaQualitySubpix,\n\t\t\tfxaaQualityEdgeThreshold,\n\t\t\tfxaaQualityEdgeThresholdMin\n\t\t).rgb,\n\t\tfloat(uEnabled)\n\t\t);\n\t\tgl_FragColor = color;\n\t}",
			name: "fxaa3"
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = i;
	var o = n(592)
},
function(t, e, n) {
	"use strict";
	/**
 * @license
 * Copyright (c) 2014-2015, NVIDIA CORPORATION. All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 *  * Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 *  * Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 *  * Neither the name of NVIDIA CORPORATION nor the names of its
 *    contributors may be used to endorse or promote products derived
 *    from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 */
	function i(t) {
		return "\n    #define FXAA_QUALITY_PRESET " + t + "\n\n    #if (FXAA_QUALITY_PRESET == 10)\n        #define FXAA_QUALITY_PS 3\n        #define FXAA_QUALITY_P0 1.5\n        #define FXAA_QUALITY_P1 3.0\n        #define FXAA_QUALITY_P2 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 11)\n        #define FXAA_QUALITY_PS 4\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 3.0\n        #define FXAA_QUALITY_P3 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 12)\n        #define FXAA_QUALITY_PS 5\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 4.0\n        #define FXAA_QUALITY_P4 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 13)\n        #define FXAA_QUALITY_PS 6\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 4.0\n        #define FXAA_QUALITY_P5 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 14)\n        #define FXAA_QUALITY_PS 7\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 4.0\n        #define FXAA_QUALITY_P6 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 15)\n        #define FXAA_QUALITY_PS 8\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 4.0\n        #define FXAA_QUALITY_P7 12.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 20)\n        #define FXAA_QUALITY_PS 3\n        #define FXAA_QUALITY_P0 1.5\n        #define FXAA_QUALITY_P1 2.0\n        #define FXAA_QUALITY_P2 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 21)\n        #define FXAA_QUALITY_PS 4\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 22)\n        #define FXAA_QUALITY_PS 5\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 23)\n        #define FXAA_QUALITY_PS 6\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 24)\n        #define FXAA_QUALITY_PS 7\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 3.0\n        #define FXAA_QUALITY_P6 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 25)\n        #define FXAA_QUALITY_PS 8\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 4.0\n        #define FXAA_QUALITY_P7 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 26)\n        #define FXAA_QUALITY_PS 9\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 2.0\n        #define FXAA_QUALITY_P7 4.0\n        #define FXAA_QUALITY_P8 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 27)\n        #define FXAA_QUALITY_PS 10\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 2.0\n        #define FXAA_QUALITY_P7 2.0\n        #define FXAA_QUALITY_P8 4.0\n        #define FXAA_QUALITY_P9 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 28)\n        #define FXAA_QUALITY_PS 11\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 2.0\n        #define FXAA_QUALITY_P7 2.0\n        #define FXAA_QUALITY_P8 2.0\n        #define FXAA_QUALITY_P9 4.0\n        #define FXAA_QUALITY_P10 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 29)\n        #define FXAA_QUALITY_PS 12\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.5\n        #define FXAA_QUALITY_P2 2.0\n        #define FXAA_QUALITY_P3 2.0\n        #define FXAA_QUALITY_P4 2.0\n        #define FXAA_QUALITY_P5 2.0\n        #define FXAA_QUALITY_P6 2.0\n        #define FXAA_QUALITY_P7 2.0\n        #define FXAA_QUALITY_P8 2.0\n        #define FXAA_QUALITY_P9 2.0\n        #define FXAA_QUALITY_P10 4.0\n        #define FXAA_QUALITY_P11 8.0\n    #endif\n    #if (FXAA_QUALITY_PRESET == 39)\n        #define FXAA_QUALITY_PS 12\n        #define FXAA_QUALITY_P0 1.0\n        #define FXAA_QUALITY_P1 1.0\n        #define FXAA_QUALITY_P2 1.0\n        #define FXAA_QUALITY_P3 1.0\n        #define FXAA_QUALITY_P4 1.0\n        #define FXAA_QUALITY_P5 1.5\n        #define FXAA_QUALITY_P6 2.0\n        #define FXAA_QUALITY_P7 2.0\n        #define FXAA_QUALITY_P8 2.0\n        #define FXAA_QUALITY_P9 2.0\n        #define FXAA_QUALITY_P10 4.0\n        #define FXAA_QUALITY_P11 8.0\n    #endif\n\n    #define FxaaBool bool\n    #define FxaaFloat float\n    #define FxaaFloat2 vec2\n    #define FxaaFloat3 vec3\n    #define FxaaFloat4 vec4\n    #define FxaaHalf float\n    #define FxaaHalf2 vec2\n    #define FxaaHalf3 vec3\n    #define FxaaHalf4 vec4\n    #define FxaaInt2 vec2\n    #define FxaaTex sampler2D\n\n    #define FxaaSat(x) clamp(x, 0.0, 1.0)\n    #define FxaaTexTop(t, p) texture2D(t, p)\n    #define FxaaTexOff(t, p, o, r) texture2D(t, p + (o * r))\n\n    FxaaFloat FxaaLuma(FxaaFloat4 rgba) { return rgba.y; }\n\n    FxaaFloat4 FxaaPixelShader(\n\n\n\n        FxaaFloat2 pos,\n\n\n\n\n\n        FxaaTex tex,\n\n\n\n\n\n        FxaaFloat2 fxaaQualityRcpFrame,\n\n\n\n\n\n\n\n\n\n\n\n        FxaaFloat fxaaQualitySubpix,\n\n\n\n\n\n\n\n\n\n\n        FxaaFloat fxaaQualityEdgeThreshold,\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n        FxaaFloat fxaaQualityEdgeThresholdMin\n    ) {\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat2 posM;\n        posM.x = pos.x;\n        posM.y = pos.y;\n        FxaaFloat4 rgbyM = FxaaTexTop(tex, posM);\n        #define lumaM rgbyM.y\n        FxaaFloat lumaS = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0, 1), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 0), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaN = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 0,-1), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 0), fxaaQualityRcpFrame.xy));\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat maxSM = max(lumaS, lumaM);\n        FxaaFloat minSM = min(lumaS, lumaM);\n        FxaaFloat maxESM = max(lumaE, maxSM);\n        FxaaFloat minESM = min(lumaE, minSM);\n        FxaaFloat maxWN = max(lumaN, lumaW);\n        FxaaFloat minWN = min(lumaN, lumaW);\n        FxaaFloat rangeMax = max(maxWN, maxESM);\n        FxaaFloat rangeMin = min(minWN, minESM);\n        FxaaFloat rangeMaxScaled = rangeMax * fxaaQualityEdgeThreshold;\n        FxaaFloat range = rangeMax - rangeMin;\n        FxaaFloat rangeMaxClamped = max(fxaaQualityEdgeThresholdMin, rangeMaxScaled);\n        FxaaBool earlyExit = range < rangeMaxClamped;\n    /*--------------------------------------------------------------------------*/\n        if(earlyExit)\n            return rgbyM;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat lumaNW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1,-1), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaSE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1, 1), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaNE = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2( 1,-1), fxaaQualityRcpFrame.xy));\n        FxaaFloat lumaSW = FxaaLuma(FxaaTexOff(tex, posM, FxaaInt2(-1, 1), fxaaQualityRcpFrame.xy));\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat lumaNS = lumaN + lumaS;\n        FxaaFloat lumaWE = lumaW + lumaE;\n        FxaaFloat subpixRcpRange = 1.0/range;\n        FxaaFloat subpixNSWE = lumaNS + lumaWE;\n        FxaaFloat edgeHorz1 = (-2.0 * lumaM) + lumaNS;\n        FxaaFloat edgeVert1 = (-2.0 * lumaM) + lumaWE;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat lumaNESE = lumaNE + lumaSE;\n        FxaaFloat lumaNWNE = lumaNW + lumaNE;\n        FxaaFloat edgeHorz2 = (-2.0 * lumaE) + lumaNESE;\n        FxaaFloat edgeVert2 = (-2.0 * lumaN) + lumaNWNE;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat lumaNWSW = lumaNW + lumaSW;\n        FxaaFloat lumaSWSE = lumaSW + lumaSE;\n        FxaaFloat edgeHorz4 = (abs(edgeHorz1) * 2.0) + abs(edgeHorz2);\n        FxaaFloat edgeVert4 = (abs(edgeVert1) * 2.0) + abs(edgeVert2);\n        FxaaFloat edgeHorz3 = (-2.0 * lumaW) + lumaNWSW;\n        FxaaFloat edgeVert3 = (-2.0 * lumaS) + lumaSWSE;\n        FxaaFloat edgeHorz = abs(edgeHorz3) + edgeHorz4;\n        FxaaFloat edgeVert = abs(edgeVert3) + edgeVert4;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat subpixNWSWNESE = lumaNWSW + lumaNESE;\n        FxaaFloat lengthSign = fxaaQualityRcpFrame.x;\n        FxaaBool horzSpan = edgeHorz >= edgeVert;\n        FxaaFloat subpixA = subpixNSWE * 2.0 + subpixNWSWNESE;\n    /*--------------------------------------------------------------------------*/\n        if(!horzSpan) lumaN = lumaW;\n        if(!horzSpan) lumaS = lumaE;\n        if(horzSpan) lengthSign = fxaaQualityRcpFrame.y;\n        FxaaFloat subpixB = (subpixA * (1.0/12.0)) - lumaM;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat gradientN = lumaN - lumaM;\n        FxaaFloat gradientS = lumaS - lumaM;\n        FxaaFloat lumaNN = lumaN + lumaM;\n        FxaaFloat lumaSS = lumaS + lumaM;\n        FxaaBool pairN = abs(gradientN) >= abs(gradientS);\n        FxaaFloat gradient = max(abs(gradientN), abs(gradientS));\n        if(pairN) lengthSign = -lengthSign;\n        FxaaFloat subpixC = FxaaSat(abs(subpixB) * subpixRcpRange);\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat2 posB;\n        posB.x = posM.x;\n        posB.y = posM.y;\n        FxaaFloat2 offNP;\n        offNP.x = (!horzSpan) ? 0.0 : fxaaQualityRcpFrame.x;\n        offNP.y = ( horzSpan) ? 0.0 : fxaaQualityRcpFrame.y;\n        if(!horzSpan) posB.x += lengthSign * 0.5;\n        if( horzSpan) posB.y += lengthSign * 0.5;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat2 posN;\n        posN.x = posB.x - offNP.x * FXAA_QUALITY_P0;\n        posN.y = posB.y - offNP.y * FXAA_QUALITY_P0;\n        FxaaFloat2 posP;\n        posP.x = posB.x + offNP.x * FXAA_QUALITY_P0;\n        posP.y = posB.y + offNP.y * FXAA_QUALITY_P0;\n        FxaaFloat subpixD = ((-2.0)*subpixC) + 3.0;\n        FxaaFloat lumaEndN = FxaaLuma(FxaaTexTop(tex, posN));\n        FxaaFloat subpixE = subpixC * subpixC;\n        FxaaFloat lumaEndP = FxaaLuma(FxaaTexTop(tex, posP));\n    /*--------------------------------------------------------------------------*/\n        if(!pairN) lumaNN = lumaSS;\n        FxaaFloat gradientScaled = gradient * 1.0/4.0;\n        FxaaFloat lumaMM = lumaM - lumaNN * 0.5;\n        FxaaFloat subpixF = subpixD * subpixE;\n        FxaaBool lumaMLTZero = lumaMM < 0.0;\n    /*--------------------------------------------------------------------------*/\n        lumaEndN -= lumaNN * 0.5;\n        lumaEndP -= lumaNN * 0.5;\n        FxaaBool doneN = abs(lumaEndN) >= gradientScaled;\n        FxaaBool doneP = abs(lumaEndP) >= gradientScaled;\n        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P1;\n        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P1;\n        FxaaBool doneNP = (!doneN) || (!doneP);\n        if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P1;\n        if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P1;\n    /*--------------------------------------------------------------------------*/\n        if(doneNP) {\n            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n            doneN = abs(lumaEndN) >= gradientScaled;\n            doneP = abs(lumaEndP) >= gradientScaled;\n            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P2;\n            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P2;\n            doneNP = (!doneN) || (!doneP);\n            if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P2;\n            if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P2;\n    /*--------------------------------------------------------------------------*/\n            #if (FXAA_QUALITY_PS > 3)\n            if(doneNP) {\n                if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                doneN = abs(lumaEndN) >= gradientScaled;\n                doneP = abs(lumaEndP) >= gradientScaled;\n                if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P3;\n                if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P3;\n                doneNP = (!doneN) || (!doneP);\n                if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P3;\n                if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P3;\n    /*--------------------------------------------------------------------------*/\n                #if (FXAA_QUALITY_PS > 4)\n                if(doneNP) {\n                    if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                    if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                    if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                    if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                    doneN = abs(lumaEndN) >= gradientScaled;\n                    doneP = abs(lumaEndP) >= gradientScaled;\n                    if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P4;\n                    if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P4;\n                    doneNP = (!doneN) || (!doneP);\n                    if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P4;\n                    if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P4;\n    /*--------------------------------------------------------------------------*/\n                    #if (FXAA_QUALITY_PS > 5)\n                    if(doneNP) {\n                        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                        doneN = abs(lumaEndN) >= gradientScaled;\n                        doneP = abs(lumaEndP) >= gradientScaled;\n                        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P5;\n                        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P5;\n                        doneNP = (!doneN) || (!doneP);\n                        if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P5;\n                        if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P5;\n    /*--------------------------------------------------------------------------*/\n                        #if (FXAA_QUALITY_PS > 6)\n                        if(doneNP) {\n                            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                            doneN = abs(lumaEndN) >= gradientScaled;\n                            doneP = abs(lumaEndP) >= gradientScaled;\n                            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P6;\n                            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P6;\n                            doneNP = (!doneN) || (!doneP);\n                            if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P6;\n                            if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P6;\n    /*--------------------------------------------------------------------------*/\n                            #if (FXAA_QUALITY_PS > 7)\n                            if(doneNP) {\n                                if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                                if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                                if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                                if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                                doneN = abs(lumaEndN) >= gradientScaled;\n                                doneP = abs(lumaEndP) >= gradientScaled;\n                                if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P7;\n                                if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P7;\n                                doneNP = (!doneN) || (!doneP);\n                                if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P7;\n                                if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P7;\n    /*--------------------------------------------------------------------------*/\n        #if (FXAA_QUALITY_PS > 8)\n        if(doneNP) {\n            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n            doneN = abs(lumaEndN) >= gradientScaled;\n            doneP = abs(lumaEndP) >= gradientScaled;\n            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P8;\n            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P8;\n            doneNP = (!doneN) || (!doneP);\n            if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P8;\n            if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P8;\n    /*--------------------------------------------------------------------------*/\n            #if (FXAA_QUALITY_PS > 9)\n            if(doneNP) {\n                if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                doneN = abs(lumaEndN) >= gradientScaled;\n                doneP = abs(lumaEndP) >= gradientScaled;\n                if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P9;\n                if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P9;\n                doneNP = (!doneN) || (!doneP);\n                if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P9;\n                if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P9;\n    /*--------------------------------------------------------------------------*/\n                #if (FXAA_QUALITY_PS > 10)\n                if(doneNP) {\n                    if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                    if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                    if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                    if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                    doneN = abs(lumaEndN) >= gradientScaled;\n                    doneP = abs(lumaEndP) >= gradientScaled;\n                    if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P10;\n                    if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P10;\n                    doneNP = (!doneN) || (!doneP);\n                    if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P10;\n                    if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P10;\n    /*--------------------------------------------------------------------------*/\n                    #if (FXAA_QUALITY_PS > 11)\n                    if(doneNP) {\n                        if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                        if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                        if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                        if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                        doneN = abs(lumaEndN) >= gradientScaled;\n                        doneP = abs(lumaEndP) >= gradientScaled;\n                        if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P11;\n                        if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P11;\n                        doneNP = (!doneN) || (!doneP);\n                        if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P11;\n                        if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P11;\n    /*--------------------------------------------------------------------------*/\n                        #if (FXAA_QUALITY_PS > 12)\n                        if(doneNP) {\n                            if(!doneN) lumaEndN = FxaaLuma(FxaaTexTop(tex, posN.xy));\n                            if(!doneP) lumaEndP = FxaaLuma(FxaaTexTop(tex, posP.xy));\n                            if(!doneN) lumaEndN = lumaEndN - lumaNN * 0.5;\n                            if(!doneP) lumaEndP = lumaEndP - lumaNN * 0.5;\n                            doneN = abs(lumaEndN) >= gradientScaled;\n                            doneP = abs(lumaEndP) >= gradientScaled;\n                            if(!doneN) posN.x -= offNP.x * FXAA_QUALITY_P12;\n                            if(!doneN) posN.y -= offNP.y * FXAA_QUALITY_P12;\n                            doneNP = (!doneN) || (!doneP);\n                            if(!doneP) posP.x += offNP.x * FXAA_QUALITY_P12;\n                            if(!doneP) posP.y += offNP.y * FXAA_QUALITY_P12;\n    /*--------------------------------------------------------------------------*/\n                        }\n                        #endif\n    /*--------------------------------------------------------------------------*/\n                    }\n                    #endif\n    /*--------------------------------------------------------------------------*/\n                }\n                #endif\n    /*--------------------------------------------------------------------------*/\n            }\n            #endif\n    /*--------------------------------------------------------------------------*/\n        }\n        #endif\n    /*--------------------------------------------------------------------------*/\n                            }\n                            #endif\n    /*--------------------------------------------------------------------------*/\n                        }\n                        #endif\n    /*--------------------------------------------------------------------------*/\n                    }\n                    #endif\n    /*--------------------------------------------------------------------------*/\n                }\n                #endif\n    /*--------------------------------------------------------------------------*/\n            }\n            #endif\n    /*--------------------------------------------------------------------------*/\n        }\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat dstN = posM.x - posN.x;\n        FxaaFloat dstP = posP.x - posM.x;\n        if(!horzSpan) dstN = posM.y - posN.y;\n        if(!horzSpan) dstP = posP.y - posM.y;\n    /*--------------------------------------------------------------------------*/\n        FxaaBool goodSpanN = (lumaEndN < 0.0) != lumaMLTZero;\n        FxaaFloat spanLength = (dstP + dstN);\n        FxaaBool goodSpanP = (lumaEndP < 0.0) != lumaMLTZero;\n        FxaaFloat spanLengthRcp = 1.0/spanLength;\n    /*--------------------------------------------------------------------------*/\n        FxaaBool directionN = dstN < dstP;\n        FxaaFloat dst = min(dstN, dstP);\n        FxaaBool goodSpan = directionN ? goodSpanN : goodSpanP;\n        FxaaFloat subpixG = subpixF * subpixF;\n        FxaaFloat pixelOffset = (dst * (-spanLengthRcp)) + 0.5;\n        FxaaFloat subpixH = subpixG * fxaaQualitySubpix;\n    /*--------------------------------------------------------------------------*/\n        FxaaFloat pixelOffsetGood = goodSpan ? pixelOffset : 0.0;\n        FxaaFloat pixelOffsetSubpix = max(pixelOffsetGood, subpixH);\n        if(!horzSpan) posM.x += pixelOffsetSubpix * lengthSign;\n        if( horzSpan) posM.y += pixelOffsetSubpix * lengthSign;\n        return FxaaFloat4(FxaaTexTop(tex, posM).xyz, lumaM);\n\t}"
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getFxaaFunPart = i
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.
default = {
		v: "#version 300 es\n#define SHADER_NAME gaussianblur-vertex-shader\nin vec2 aClipSpacePosition;\nout vec2 vTexCoord;\n\nvoid main() {\n  vTexCoord = (aClipSpacePosition + 1.0) / 2.0;\n  gl_Position = vec4(aClipSpacePosition, 0., 1.);\n}\n",
		f: "#version 300 es\n#define SHADER_NAME gaussianblur-fragment-shader\nprecision highp float;\n\nout vec4 fragColor;\nin vec2 vTexCoord;\n\nuniform sampler2D uSampler;\nuniform bool uHorizontal;\nuniform vec2 uResolution;\n\nconst float offset[3] = float[](0.0, 1.3846153846, 3.2307692308);\nconst float weight[3] = float[](0.2270270270, 0.3162162162, 0.0702702703);\nconst int count = 3;\n\nvoid main()\n{             \n    vec2 tex_offset = 1.0 / uResolution;\n    vec3 result = texture(uSampler, vTexCoord).rgb * weight[0];\n    if(uHorizontal)\n    {\n        for(int i = 1; i < count; ++i)\n        {\n            result += texture(uSampler, vTexCoord + vec2(tex_offset.x * offset[i], 0.0)).rgb * weight[i];\n            result += texture(uSampler, vTexCoord - vec2(tex_offset.x * offset[i], 0.0)).rgb * weight[i];\n        }\n    }\n    else\n    {\n        for(int i = 1; i < count; ++i)\n        {\n            result += texture(uSampler, vTexCoord + vec2(0.0, tex_offset.y * offset[i])).rgb * weight[i];\n            result += texture(uSampler, vTexCoord - vec2(0.0, tex_offset.y * offset[i])).rgb * weight[i];\n        }\n    }\n    fragColor = vec4(result, 1.0);\n\n}\n",
		name: "gaussianblur"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.grayShader = void 0;
	var i = n(465),
	o = "\n  " + i.imageVertex + "\n";
	e.grayShader = {
		v: o,
		f: "\nprecision mediump float;\n\nuniform float u_opacity;\nuniform sampler2D u_sampler;\nuniform sampler2D u_samplerColorMap;\nuniform float u_hasColorMap;\nvarying vec2 v_texCoord;\nuniform float u_usePicking;\nvoid main() {\n \n  vec4 color = texture2D(u_sampler, v_texCoord);\n\n\n\n  vec4 finalColor = mix(\n    color,\n    texture2D(u_samplerColorMap, vec2({RGBA_FORMATTER}, 0.5)),\n    step(u_usePicking, 0.5) * step(0.5,u_hasColorMap)\n  );\n  gl_FragColor = finalColor * u_opacity;\n}\n",
		name: "instance_gray"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.
default = {
		v: "\n#define SHADER_NAME highlight-vertex-shader\nattribute vec2 aClipSpacePosition;\n\nvoid main() {\n  gl_Position = vec4(aClipSpacePosition, 0., 1.);\n}\n",
		f: "\n#define SHADER_NAME highlight-fragment-shader\nprecision highp float;\n\nuniform vec4 uColor;\n\nvoid main() {\n  gl_FragColor = uColor;\n}\n",
		name: "highlight"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.sphereShader = e.defaultShader = void 0;
	var i = n(217),
	o = n(465),
	r = "\n  " + o.imageVertex + "\n",
	a = (e.defaultShader = {
		v: r,
		f: "\nprecision mediump float;\n\nuniform float u_opacity;\nuniform sampler2D u_sampler;\n\nvarying vec2 v_texCoord;\n\nvoid main() {\n\tvec4 color = texture2D(u_sampler, v_texCoord);\n\t\n\tgl_FragColor = color * u_opacity;\n}\n",
		name: "instance_tex"
	},
	"\nattribute vec2 a_position;\n\nuniform mat4 u_matrix;\nuniform vec2 u_size;\nuniform vec4 u_texInfo;\nuniform vec3 u_mercator;\nuniform float u_ratio;\n\n" + i.UNIFORM_PART + "\n\nvarying vec2 v_texCoord;\nvarying vec4 v_debug;\n\n" + i.PROJECTION_PART + "\n\nvoid main() {\n\t\n  v_texCoord = u_texInfo.xy + a_position * u_texInfo.zw;\n\n\n  vec2 position = vec2(a_position.x, 1. - a_position.y) * u_size;\n\n\n  vec2 point = (position + u_mercator.xy) / pow(2., u_mercator.z);\n\n\n  vec2 latlng = fromPointToLatLng(point);\n\n  vec4 posOnPlane= u_matrix * vec4(a_position.x * u_size.x, (a_position.y - 1.) * u_size.y, 0.0, 1.0);\n  vec4 posOnSphere = uMatrix * project_view_sphere_position(latlng);\n  gl_Position = mix(posOnPlane, posOnSphere, u_ratio);\n\n\n\n\n}\n");
	e.sphereShader = {
		v: a,
		f: "\nprecision mediump float;\n\nuniform float u_opacity;\nuniform sampler2D u_sampler;\nuniform float u_wireframe;\n\nvarying vec2 v_texCoord;\nvarying vec4 v_debug;\n\nvoid main() {\n\tvec4 color = texture2D(u_sampler, v_texCoord) * u_opacity;\n  \n  gl_FragColor = mix(\n    color,\n    vec4(1., 0., 0., .6),\n    u_wireframe\n  );\n  \n\n}\n",
		name: "instance_tex_sphere"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = "\n#define SHADER_NAME indoor-mask-vertex-shader\n\nattribute vec3 aPosition;\n\n" + i.UNIFORM_PART + "\nuniform vec4 uRelativeCenter;\n\n" + i.PROJECTION_PART + "\n\nvoid main(void) {\n\tvec3 maskCenterPoint = vec3(project_view_local_position_precision(uRelativeCenter.xy, uRelativeCenter.zw), 0.0);\n\tgl_Position = uMatrix * vec4(maskCenterPoint + project_scale(aPosition), 1.0);\n}\n";
	e.
default = {
		v: o,
		f: "\n#define SHADER_NAME mask-fragment-shader\nprecision mediump float;\n\nuniform vec4 uColor;\n\nvoid main(void) {\n\tgl_FragColor = uColor;\n}\n",
		name: "indoor-mask"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(276),
	r = "\n#define SHADER_NAME indoor-vertex-shader\n\nattribute vec3 aPosition;\nattribute vec3 aColor;\nattribute vec3 aNormal;\n\n" + i.UNIFORM_PART + "\n" + o.LIGHT_UNIFORM + "\nuniform vec4 uRelativeCenter;\n\nvarying vec3 vColor;\n\n" + o.LIGHT_VARYING + "\n\n" + i.PROJECTION_PART + "\n" + o.LIGHT_VERTEX + "\n\nvoid main(void) {\n\tvec3 relativeCenterPoint = vec3(project_view_local_position_precision(uRelativeCenter.xy, uRelativeCenter.zw), 0.0);\n\tvec3 worldspaceCoord = relativeCenterPoint + project_scale(aPosition);\n\tgl_Position = uMatrix * vec4(worldspaceCoord, 1.0);\n\n\tlighting_apply_on_vertex(worldspaceCoord, aNormal, mat4(1.0));\n\n\tvColor = aColor / 255.;\n}\n",
	a = "\n#define SHADER_NAME indoor-fragment-shader\nprecision mediump float;\n\nvarying vec3 vColor;\n\n" + o.LIGHT_VARYING + "\n" + o.LIGHT_FRAG + "\n\nvoid main(void) {\n\tgl_FragColor = lighting_apply_on_color(vec4(vColor, 1.));\n}\n";
	e.
default = {
		v: r,
		f: a,
		name: "indoor"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(276),
	r = "\n#define SHADER_NAME indoor-vertex-shader\n\nattribute vec3 aPosition;\nattribute vec3 aNormal;\nattribute vec3 aColor;\n\nattribute vec2 aInstanceCoord;\nattribute vec4 aInstanceInfo;\n\n" + i.UNIFORM_PART + "\n" + o.LIGHT_UNIFORM + "\nuniform vec4 uRelativeCenter;\nuniform bool uEnableLighting;\nuniform vec3 uBoxMin;\nuniform vec3 uBoxMax;\n\nvarying vec3 vColor;\n" + o.LIGHT_VARYING + "\n\n" + i.PROJECTION_PART + "\n" + o.LIGHT_VERTEX + "\n\nmat3 rotateZ(float deg){\n    float rad = degreeToRadian(deg);\n    return mat3(\n        vec3(cos(rad), -sin(rad), 0.),\n        vec3(sin(rad), cos(rad), 0.),\n        vec3(0., 0., 1.)\n    );\n}\n\nmat3 rotateX(float deg){\n    float rad = degreeToRadian(deg);\n    return mat3(\n        vec3(1.0, 0.0, 0.0),\n        vec3(0.0, cos(rad), -sin(rad)),\n        vec3(0.0, sin(rad), cos(rad))\n    );\n}\n\nvoid main(void) {\n\n\tmat3 modelMatrix = rotateZ(-aInstanceInfo.w);\n\n\n\tvec3 modelNormal = rotateX(-90.0) * aNormal;\n\tmodelNormal = modelMatrix * modelNormal;\n\n\n    vec3 relativeCenterPoint = vec3(project_view_local_position_precision(uRelativeCenter.xy, uRelativeCenter.zw), 0.0);\n    vec3 modelCenterPoint = relativeCenterPoint + project_scale(vec3(aInstanceCoord, 0.0));\n\n\n\n    float scale = pow(2.0, uZoom - 20.0);\n    vec3 modelSize = vec3(aInstanceInfo.xy * scale, aInstanceInfo.z * uPixelsPerMeter.z);\n    vec3 localPosition = modelMatrix * (aPosition * modelSize / (uBoxMax - uBoxMin));\n    \n\n    vec3 worldspaceCoord = modelCenterPoint + localPosition;\n\n    gl_Position = uMatrix * vec4(worldspaceCoord, 1.0);\n\n    lighting_apply_on_vertex(worldspaceCoord, modelNormal, mat4(1.0));\n    \n\n    vColor = aColor / 255.;\n}\n",
	a = "\n#define SHADER_NAME indoor-fragment-shader\nprecision mediump float;\n\nvarying vec3 vColor;\n" + o.LIGHT_VARYING + "\n" + o.LIGHT_FRAG + "\n\nvoid main(void) {\n\tgl_FragColor = lighting_apply_on_color(vec4(vColor, 1.));\n}\n";
	e.
default = {
		v: r,
		f: a,
		name: "instance_escalator"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(292);
	e.
default = {
		v: "#version 300 es\n\t\t#define SHADER_NAME instance-polyline-vertex-shader\n\t\t\n\t\t\n\t\tin vec2 positions;\n\t\t\n\t\tin vec3 instanceStartPositions;\n\t\tin vec3 instanceEndPositions;\n\t\tin vec3 instanceLeftDeltas;\n\t\tin vec3 instanceRightDeltas;\n\t\tin vec4 instanceStartEndPositions64xyLow;\n\t\tin float instanceWidths;\n\t\tin vec4 instanceColors;\n\t\tin vec4 instanceLineInfo;\n\t\tin vec4 instanceArrowInfo;\n\t\tin float instanceArrowStartPositions;\n\t\t\n\t\t\n\t\tin vec3 instancePickingColors;\n\t\t\n\t\tuniform float u_enableGeodesic;\n\t\t\n\t\tuniform float u_isBorder;\n\t\tuniform float u_widthScale;\n\t\tuniform float u_widthMinPixels;\n\t\tuniform float u_widthMaxPixels;\n\t\tuniform float u_miterLimit;\n    uniform vec2 uProject_uDegreePerPixels;\n\n\t\tuniform float u_lineJoin;\n\t\t\n\t\tuniform float u_opacity;\n\t\t\n\t\tconst float EPSILON = 0.001;\n\t\tconst float PIXEL_EPSILON = 0.1;\n\t\t\n\t\t" + i.UNIFORM_PART + "\n\t\t\n\t\t\n\t\tout vec4 vColor;\n\t\t\n\t\tout vec4 vLineInfo;\n\t\tout vec3 vPickingColor;\n\t\t\n\t\t\n\n\t\tout vec4 vClipArray;\n\t\tout vec2 vDashArray;\n\t\tout vec4 vArrowArray;\n\n\t\tout vec4 vLineSegmentInfo;\n\t\tout vec4 vTrimDirection;\n\t\t\n\t\t" + i.PROJECTION_PART + " \n\t\t\n\t\t\n\n\t\t\n\t\tvec2 calculateTangent(vec3 prevPoint, vec3 currPoint, vec3 nextPoint) {\n\t\t\tvec2 deltaA = currPoint.xy - prevPoint.xy;\n\t\t\tvec2 deltaB = nextPoint.xy - currPoint.xy;\n\t\n\t\t\tfloat lenA = length(deltaA);\n\t\t\tfloat lenB = length(deltaB);\n\t\n\t\t\tlenA = mix(0.0, lenA, step(PIXEL_EPSILON, lenA));\n\t\t\tlenB = mix(0.0, lenB, step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 dirA = mix(vec2(0.0), normalize(deltaA), step(PIXEL_EPSILON, lenA));\n\t\t\tvec2 dirB = mix(vec2(0.0), normalize(deltaB), step(PIXEL_EPSILON, lenB));\n\n\t\t\t\n\t\t\tvec2 tangent = vec2(dirA + dirB);\n\t\t\ttangent = mix(vec2(0.0, 0.0), normalize(tangent), step(EPSILON, length(tangent)));\n\n\t\t\treturn tangent;\n\t\t}\n        \n\t\tvec3 calculateLinePosition(vec3 prevPoint, vec3 currPoint, vec3 nextPoint) {\n\t\t\tfloat lineCap = instanceLineInfo.x;\n\t\t\tvDashArray = instanceLineInfo.yz;\n\t\t\tvLineSegmentInfo.x = lineCap;\n\n\t\t\tfloat isEnd = positions.x;\n\t\t\tfloat width = clamp(instanceWidths * uPixelsPerMeter[0] * u_widthScale, u_widthMinPixels, u_widthMaxPixels) / 2.0;\n\t\t\tvClipArray.x = width;\n\t\t\tvLineSegmentInfo.w = instanceArrowStartPositions / width;\n\t\n\t\t\tvec2 deltaA = currPoint.xy - prevPoint.xy;\n\t\t\tvec2 deltaB = nextPoint.xy - currPoint.xy;\n\t\n\t\t\tfloat lenA = length(deltaA);\n\t\t\tfloat lenB = length(deltaB);\n\t\n\t\t\tlenA = mix(0.0, lenA, step(PIXEL_EPSILON, lenA));\n\t\t\tlenB = mix(0.0, lenB, step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 dirA = mix(vec2(0.0), normalize(deltaA), step(PIXEL_EPSILON, lenA));\n\t\t\tvec2 dirB = mix(vec2(0.0), normalize(deltaB), step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 perpA = vec2(-dirA.y, dirA.x);\n\t\t\tvec2 perpB = vec2(-dirB.y, dirB.x);\n\t\n\t\t\t\n\t\t\tvec2 tangent = vec2(dirA + dirB);\n\t\t\ttangent = mix(perpA, normalize(tangent), step(EPSILON, length(tangent)));\n\t\n\t\t\t\n\t\t\tvec2 miterVec = vec2(-tangent.y, tangent.x);\n\n\t\t\t\n\t\t\tvec2 perp = mix(perpB, perpA, isEnd);\n\t\t\tfloat L = mix(lenB, lenA, isEnd);\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\n\t\t\t\n\t\t\tvec2 vertical_offset = perp * width * positions.y;\n\t\t\tvLineInfo.x = length(vertical_offset);\n\t\n\t\n\t\t\t\n\t\t\tbool isPathStart = step(0.0, -lenA) > 0.5;\n\t\t\tbool isPathEnd = step(0.0, -lenB) > 0.5;\n\t\t\tvec2 dir = mix(dirB, dirA, isEnd);\n\t\t\tvLineSegmentInfo.y = float(isPathStart);\n\t\t\tvLineSegmentInfo.z = float(isPathEnd);\n\t\t\t\n\t\t\t\n\t\t\tvec2 horizontal_offset = vec2(0.0);\n\n\t\t\t\n\t\t\t\n\t\t\thorizontal_offset = mix(-dir, dir, isEnd) * width;\n\t\t\tvClipArray.y = L / width / 2.0;\n\t\t\tfloat capLength = mix(-1.0 - vClipArray.y, 1.0 + vClipArray.y, isEnd);\n\t\t\tvClipArray.zw = vec2(capLength, positions.y);\n\t\t\tvLineInfo.z = capLength;\n\n\t\n\t\t\t\n\n\t\t\t\n\t\t\tif ((isPathStart && !bool(isEnd)) || (isPathEnd && bool(isEnd))) {\n\t\t\t\tcapLength = mix(mix(-vClipArray.y, vClipArray.y, isEnd), capLength, step(0.1, lineCap));\n\t\t\t\tvClipArray.zw = mix(vec2(capLength, positions.y), vClipArray.zw, step(0.1, lineCap));\n\n\t\t\t\t\n\t\t\t\thorizontal_offset = mix(vec2(0.0), horizontal_offset, step(0.1, lineCap));\n\t\t\t\tvLineInfo.z = mix(mix(-vClipArray.y,  vClipArray.y, isEnd), vLineInfo.z, step(0.1, lineCap));\n\t\t\t}\n            vLineInfo.y = capLength;\n            vLineInfo.w = instanceLineInfo.w;\n\t\t\t\n\t\t\treturn currPoint + vec3(vertical_offset, 0.0) + vec3(horizontal_offset, 0.0);\n\t\t}\n\t\t\n\t\t\n\t\tvec2 getSegmentTangent(float isEnd, vec3 segmentDirection) {\n\t\t\t\n\t\t\tvec2 segmentX = mix(-segmentDirection.xy, segmentDirection.xy, isEnd);\n\t\t\tvec2 segmentY = vec2(-segmentX.y, segmentX.x);\n\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n      vec3 localPosition_Start = project_view_local_position_precision( instanceStartPositions, instanceStartEndPositions64xyLow.xy);\n      vec3 localPosition_End = project_view_local_position_precision( instanceEndPositions, instanceStartEndPositions64xyLow.zw);\n      \n\t\t\tvec3 geodesic_Position_Start;\n      vec3 geodesic_Position_End;\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, instanceEndPositions, instanceStartEndPositions64xyLow.zw, geodesic_Position_Start, geodesic_Position_End, uProject_uDegreePerPixels);\n     \n      vec3 startLocalPosition = mix(localPosition_Start, geodesic_Position_Start,u_enableGeodesic);\n      vec3 endLocalPosition = mix(localPosition_End, geodesic_Position_End,u_enableGeodesic);\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t    \n\t\t\tvec3 prevPosition = instanceStartPositions;\n\t\t\tvec2 prevPosition64xyLow = instanceStartEndPositions64xyLow.xy;\n      vec3 prevStartLinesPosition_Start;\n      vec3 prevStartLinesPosition_Start_Temp;\n      vec3 prevStartLinesPosition_End;\n      \n      vec3 lefDeltaByEnd = mix(instanceLeftDeltas, vec3(0.0), isEnd);\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n      geodesic_project_view_local_precision(prevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, instanceStartPositions, instanceStartEndPositions64xyLow.xy, prevStartLinesPosition_Start_Temp, prevStartLinesPosition_End, uProject_uDegreePerPixels);\n      prevStartLinesPosition_Start = mix( prevStartLinesPosition_Start_Temp,startLocalPosition, isEnd);\n\n\t\t\tprevPosition  = mix(project_view_local_position_precision(\n\t\t\t\tprevPosition  - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow  - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t),prevStartLinesPosition_Start,u_enableGeodesic) ;\n\n\t\t\tvec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n\t\t\tvec2 currPositionxy64Low = mix(instanceStartEndPositions64xyLow.xy, instanceStartEndPositions64xyLow.zw, isEnd);\n\t\t\tcurrPosition = mix(startLocalPosition,endLocalPosition,isEnd);\n\n\t\t\tvec3 nextPosition = instanceEndPositions;\n\t\t\tvec2 nextPosition64xyLow = instanceStartEndPositions64xyLow.zw;\n      vec3 endNextLinesPosition_start;\n      vec3 endNextLinesPosition_End_Temp;\n      vec3 endNextLinesPosition_End;\n      vec3 rightDeltaByEnd = mix(vec3(0.0), instanceRightDeltas, isEnd);\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, nextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, endNextLinesPosition_start, endNextLinesPosition_End_Temp, uProject_uDegreePerPixels);\n      endNextLinesPosition_End = mix(endLocalPosition, endNextLinesPosition_End_Temp, isEnd);\n      \n\t\t\tnextPosition = mix(project_view_local_position_precision(\n\t\t\t\tnextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), endNextLinesPosition_End,u_enableGeodesic);\n\n\n\t\t\tvec2 tangent = calculateTangent(prevPosition, currPosition, nextPosition);\n\n\t\t\t\n\t\t\treturn vec2(dot(tangent, segmentX), dot(tangent, segmentY));\n\t\t}\n\n\t\tvoid main(void) {\n\t\t\tfloat isEnd = positions.x;\n\t\t\t\n\n      vec3 localPosition_Start = project_view_local_position_precision( instanceStartPositions, instanceStartEndPositions64xyLow.xy);\n      vec3 localPosition_End = project_view_local_position_precision( instanceEndPositions, instanceStartEndPositions64xyLow.zw);\n\n\n      vec3 geodesic_Position_Start;\n      vec3 geodesic_Position_End;\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, instanceEndPositions, instanceStartEndPositions64xyLow.zw, geodesic_Position_Start, geodesic_Position_End, uProject_uDegreePerPixels);\n     \n      vec3 startLocalPosition = mix(localPosition_Start, geodesic_Position_Start,u_enableGeodesic);\n      vec3 endLocalPosition = mix(localPosition_End, geodesic_Position_End,u_enableGeodesic);\n\n\t\t\tvec3 segmentDirection = normalize(mix(startLocalPosition - endLocalPosition, endLocalPosition - startLocalPosition, isEnd));\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n      float maxDiff = length(startLocalPosition - endLocalPosition);\n      segmentDirection *= 0.00001 * maxDiff;\n\t    \n\t\t\tvec3 prevPosition = instanceStartPositions;\n\t\t\tvec2 prevPosition64xyLow = instanceStartEndPositions64xyLow.xy;\n      vec3 prevStartLinesPosition_Start;\n      vec3 prevStartLinesPosition_Start_Temp;\n      vec3 prevStartLinesPosition_End;\n      vec3 lefDeltaByEnd = mix(instanceLeftDeltas, vec3(0.0), isEnd);\n\n      geodesic_project_view_local_precision(prevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow -  mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, instanceStartPositions, instanceStartEndPositions64xyLow.xy, prevStartLinesPosition_Start_Temp, prevStartLinesPosition_End, uProject_uDegreePerPixels);\n      prevStartLinesPosition_Start = mix( prevStartLinesPosition_Start_Temp,startLocalPosition, isEnd);\n\n\t\t\n\t\t\tprevPosition  = mix(project_view_local_position_precision(\n\t\t\t\tprevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), prevStartLinesPosition_Start,u_enableGeodesic) + segmentDirection;\n\n\t\t\tvec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n\t\t\tvec2 currPositionxy64Low = mix(instanceStartEndPositions64xyLow.xy, instanceStartEndPositions64xyLow.zw, isEnd);\n\t\t\tcurrPosition = mix(startLocalPosition,endLocalPosition,isEnd);\n\n\t\t\tvec3 nextPosition = instanceEndPositions;\n\t\t\tvec2 nextPosition64xyLow = instanceStartEndPositions64xyLow.zw;\n      vec3 endNextLinesPosition_start;\n      vec3 endNextLinesPosition_End_Temp;\n      vec3 endNextLinesPosition_End;\n      vec3 rightDeltaByEnd = mix(vec3(0.0), instanceRightDeltas, isEnd);\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, nextPosition +mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, endNextLinesPosition_start, endNextLinesPosition_End_Temp, uProject_uDegreePerPixels);\n      endNextLinesPosition_End = mix(endLocalPosition, endNextLinesPosition_End_Temp, isEnd);\n    \n\t\t\t\n\t\t\tnextPosition = mix(project_view_local_position_precision(\n\t\t\t\tnextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), endNextLinesPosition_End,u_enableGeodesic) + segmentDirection;\n\n\t\t\tvec3 pos = calculateLinePosition(prevPosition, currPosition, nextPosition);\n\n\t\t\t\n\t\t\tvTrimDirection.xy = -getSegmentTangent(0.0, normalize(startLocalPosition - endLocalPosition));\n\t\t\tvTrimDirection.zw = getSegmentTangent(1.0, normalize(endLocalPosition - startLocalPosition));\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\n\t\t\tgl_Position = uMatrix * vec4(pos, 1.0);\n\t\n\t\t\tvec4 vertexColor = instanceColors.rgba / 255.0 * u_opacity;\n\t\t\tvPickingColor = instancePickingColors;\n\t\t\tvColor = vertexColor;\n\t\t\tvArrowArray = instanceArrowInfo; \n\t\t}\n    \n    ",
		f: "#version 300 es\n\t\t#define SHADER_NAME instance-polyline-fragment-shader\n\t\t\n\t\tprecision highp float;\n\t\tuniform float u_isBorder;\n\t\tuniform float u_miterLimit;\n    " + o.PICK_UNIFORM + "\n    " + o.PICK_FUNCTION + "\n\t\tuniform float u_lineJoin;\n\t\tuniform sampler2D u_arrowSampler;\n        \n\t\tin vec4 vColor;\n\t\tin vec4 vLineInfo;\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n    in vec4 vClipArray;\n\t\tin vec2 vDashArray;\n\t\tin vec4 vArrowArray;\n    \n    in vec3 vPickingColor;\n\t\tin vec4 vLineSegmentInfo;\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tin vec4 vTrimDirection;\n        \n    layout(location = 0) out vec4 fragColor;\n    layout(location = 1) out vec4 emissiveColor;\n\n\t\tvoid main(void) {\n\t\t\tvec4 fColor = vColor;\n\t\t\tvec4 opacity = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\tvec4 red = vec4(1.0, 0.0, 0.0, 1);\n\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\topacity,\n\t\t\t\tfloat(u_lineJoin == 1.0 &&\n\t\t\t\t\tlength(vec2(abs(vClipArray.z) - vClipArray.y, vClipArray.w)) > 1.0 &&\n\t\t\t\t\t(abs(vLineInfo.y) - vClipArray.y) >= 0.0 && \n\t\t\t\t\t((vLineSegmentInfo.y < 0.5 && vLineSegmentInfo.z < 0.5) || vLineSegmentInfo.x > 1.1)\n\t\t\t\t)\n\t\t\t);\n\n\n\n\n      fColor = mix(fColor, opacity, float(\n        dot(vClipArray.zw - vec2(-vClipArray.y, 0.0), vTrimDirection.xy) > 0.0 &&\n        step(0.1, abs(vTrimDirection.x)) > 0.5 &&\n        vLineSegmentInfo.y < 0.5\n      ));\n\n\n      fColor = mix(fColor, opacity, float(\n        dot(vClipArray.zw - vec2(vClipArray.y, 0.0), vTrimDirection.zw) > 0.0 &&\n        step(0.1, abs(vTrimDirection.x)) > 0.5 &&\n        vLineSegmentInfo.z < 0.5\n      ));\n\t\t\t\n\n\t\t\t\n\t\t\tfloat segmentLength = vLineInfo.z + vClipArray.y;\n\t\t\t\n\t\t\t\n\t\t\tvec2 normalDashArray = vDashArray / vClipArray.x;\n\t\t\tfloat useDash = step(0.1, vDashArray.y) * step(-vClipArray.y, -abs(vLineInfo.z));\n\t\t\tfloat isInGap = step(normalDashArray.x, mod(segmentLength, normalDashArray.x + normalDashArray.y));\n\n\t\t\t\n\t\t\tvec3 normalArrowArray = vArrowArray.xyz / vClipArray.x;\n\t\t\t\n\t\t\tfloat useArrow = (1.0 - u_isBorder) * step(0.1, vArrowArray.x) * step(0.1, vArrowArray.y) * step(-vClipArray.y, -abs(vLineInfo.z)) * step(-0.001, vLineSegmentInfo.w);\n\t\t\t\n\t\t\t\n\t\t\tfloat offsetX = mix(\n\t\t\t\tmix(\n\t\t\t\t\t0.5,\n\t\t\t\t\t1.0 / normalArrowArray.x,\n\t\t\t\t\tstep(0.1, vArrowArray.w)\n\t\t\t\t),\n\t\t\t\t1.0 - 1.0 / normalArrowArray.x,\n\t\t\t\tstep(1.1, vArrowArray.w)\n\t\t\t);\n\t\t\tfloat yMod = mod(segmentLength - vLineSegmentInfo.w, normalArrowArray.y + normalArrowArray.z);\n\t\t\tfloat texCoordY = yMod / normalArrowArray.y;\n\t\t\tfloat texCoordX = offsetX + vClipArray.w / normalArrowArray.x;\n\t\t\t\n\t\t\t\n\t\t\tfloat isComplete = step(0.0, vClipArray.y * 2.0 - (segmentLength + normalArrowArray.y - yMod));\n\t\t\tfloat isFilled = (1.0 - step(1.0, texCoordY)) * step(0.0, texCoordX) * (1.0 - step(1.0, texCoordX));\n\t\t\tvec4 arrowColor = texture(u_arrowSampler, vec2(texCoordX, texCoordY));\n\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\tmix(fColor, opacity, isInGap),\n\t\t\t\tuseDash\n\t\t\t);\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\tvec4(mix(\n\t\t\t\t\tfColor.rgb,\n\t\t\t\t\tarrowColor.rgb,\n\t\t\t\t\tarrowColor.a\n\t\t\t\t), fColor.a),\n\t\t\t\tuseArrow * isFilled * isComplete\n\t\t\t);\n      \n      fragColor = picking_getFinalColor(fColor, vPickingColor);\n      emissiveColor = mix(vec4(0.0), fColor, vLineInfo.w);\n\t\t\t\n\t\t\t\n\t\t}\n\t",
		name: "instance_polyline_glsl3"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(292);
	e.
default = {
		v: "\n\t\t#define SHADER_NAME instance-polyline-vertex-shader\n\t\t\n\t\t\n\t\tattribute vec2 positions;\n\t\t\n\t\tattribute vec3 instanceStartPositions;\n\t\tattribute vec3 instanceEndPositions;\n\t\tattribute vec3 instanceLeftDeltas;\n\t\tattribute vec3 instanceRightDeltas;\n\t\tattribute vec4 instanceStartEndPositions64xyLow;\n\t\tattribute float instanceWidths;\n\t\tattribute vec4 instanceColors;\n\t\tattribute vec4 instanceLineInfo;\n\t\tattribute vec4 instanceArrowInfo;\n\t\tattribute float instanceArrowStartPositions;\n\t\t\n\t\t\n\t\tattribute vec3 instancePickingColors;\n\t\t\n\t\tuniform float u_enableGeodesic;\n\t\t\n\t\tuniform float u_isBorder;\n\t\tuniform float u_widthScale;\n\t\tuniform float u_widthMinPixels;\n\t\tuniform float u_widthMaxPixels;\n\t\tuniform float u_miterLimit;\n    uniform vec2 uProject_uDegreePerPixels;\n\n\t\tuniform float u_lineJoin;\n\t\t\n\t\tuniform float u_opacity;\n\t\t\n\t\tconst float EPSILON = 0.001;\n\t\tconst float PIXEL_EPSILON = 0.1;\n\t\t\n\t\t" + i.UNIFORM_PART + "\n\t\t\n        \n\t\tvarying vec4 vColor;\n\t\t\n\t\tvarying vec3 vLineInfo;\n    varying vec3 vPickingColor;\n\n\t\t\n\t\t\n\n\t\tvarying vec4 vClipArray;\n\n\t\tvarying vec2 vDashArray;\n\t\tvarying vec4 vArrowArray;\n\n\t\tvarying vec4 vLineSegmentInfo;\n\t\tvarying vec4 vTrimDirection;\n\t\t\n\t\t" + i.PROJECTION_PART + "\n\t\t\n\n\t\t\n\t\tvec2 calculateTangent(vec3 prevPoint, vec3 currPoint, vec3 nextPoint) {\n\t\t\tvec2 deltaA = currPoint.xy - prevPoint.xy;\n\t\t\tvec2 deltaB = nextPoint.xy - currPoint.xy;\n\t\n\t\t\tfloat lenA = length(deltaA);\n\t\t\tfloat lenB = length(deltaB);\n\t\n\t\t\tlenA = mix(0.0, lenA, step(PIXEL_EPSILON, lenA));\n\t\t\tlenB = mix(0.0, lenB, step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 dirA = mix(vec2(0.0), normalize(deltaA), step(PIXEL_EPSILON, lenA));\n\t\t\tvec2 dirB = mix(vec2(0.0), normalize(deltaB), step(PIXEL_EPSILON, lenB));\n\n\t\t\t\n\t\t\tvec2 tangent = vec2(dirA + dirB);\n\t\t\ttangent = mix(vec2(0.0, 0.0), normalize(tangent), step(EPSILON, length(tangent)));\n\n\t\t\treturn tangent;\n\t\t}\n        \n\t\tvec3 calculateLinePosition(vec3 prevPoint, vec3 currPoint, vec3 nextPoint) {\n\t\t\tfloat lineCap = instanceLineInfo.x;\n\t\t\tvDashArray = instanceLineInfo.yz;\n\t\t\tvLineSegmentInfo.x = lineCap;\n\n\t\t\tfloat isEnd = positions.x;\n\t\t\tfloat width = clamp(instanceWidths * uPixelsPerMeter[0] * u_widthScale, u_widthMinPixels, u_widthMaxPixels) / 2.0;\n\t\t\tvClipArray.x = width;\n\t\t\tvLineSegmentInfo.w = instanceArrowStartPositions / width;\n\t\n\t\t\tvec2 deltaA = currPoint.xy - prevPoint.xy;\n\t\t\tvec2 deltaB = nextPoint.xy - currPoint.xy;\n\t\n\t\t\tfloat lenA = length(deltaA);\n\t\t\tfloat lenB = length(deltaB);\n\t\n\t\t\tlenA = mix(0.0, lenA, step(PIXEL_EPSILON, lenA));\n\t\t\tlenB = mix(0.0, lenB, step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 dirA = mix(vec2(0.0), normalize(deltaA), step(PIXEL_EPSILON, lenA));\n\t\t\tvec2 dirB = mix(vec2(0.0), normalize(deltaB), step(PIXEL_EPSILON, lenB));\n\t\n\t\t\t\n\t\t\tvec2 perpA = vec2(-dirA.y, dirA.x);\n\t\t\tvec2 perpB = vec2(-dirB.y, dirB.x);\n\t\n\t\t\t\n\t\t\tvec2 tangent = vec2(dirA + dirB);\n\t\t\ttangent = mix(perpA, normalize(tangent), step(EPSILON, length(tangent)));\n\t\n\t\t\t\n\t\t\tvec2 miterVec = vec2(-tangent.y, tangent.x);\n\n\t\t\t\n\t\t\tvec2 perp = mix(perpB, perpA, isEnd);\n\t\t\tfloat L = mix(lenB, lenA, isEnd);\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\n\t\t\t\n\t\t\tvec2 vertical_offset = perp * width * positions.y;\n\t\t\tvLineInfo.x = length(vertical_offset);\n\t\n\t\n\t\t\t\n\t\t\tbool isPathStart = step(0.0, -lenA) > 0.5;\n\t\t\tbool isPathEnd = step(0.0, -lenB) > 0.5;\n\t\t\tvec2 dir = mix(dirB, dirA, isEnd);\n\t\t\tvLineSegmentInfo.y = float(isPathStart);\n\t\t\tvLineSegmentInfo.z = float(isPathEnd);\n\t\t\t\n\t\t\t\n\t\t\tvec2 horizontal_offset = vec2(0.0);\n\n\t\t\t\n\t\t\t\n\t\t\thorizontal_offset = mix(-dir, dir, isEnd) * width;\n\t\t\tvClipArray.y = L / width / 2.0;\n\t\t\tfloat capLength = mix(-1.0 - vClipArray.y, 1.0 + vClipArray.y, isEnd);\n\t\t\tvClipArray.zw = vec2(capLength, positions.y);\n\t\t\tvLineInfo.z = capLength;\n\n\t\n\t\t\t\n\n\t\t\t\n\t\t\tif ((isPathStart && !bool(isEnd)) || (isPathEnd && bool(isEnd))) {\n\t\t\t\tcapLength = mix(mix(-vClipArray.y, vClipArray.y, isEnd), capLength, step(0.1, lineCap));\n\t\t\t\tvClipArray.zw = mix(vec2(capLength, positions.y), vClipArray.zw, step(0.1, lineCap));\n\n\t\t\t\t\n\t\t\t\thorizontal_offset = mix(vec2(0.0), horizontal_offset, step(0.1, lineCap));\n\t\t\t\tvLineInfo.z = mix(mix(-vClipArray.y,  vClipArray.y, isEnd), vLineInfo.z, step(0.1, lineCap));\n\t\t\t}\n\t\t\tvLineInfo.y = capLength;\n\t\t\t\n\t\t\treturn currPoint + vec3(vertical_offset, 0.0) + vec3(horizontal_offset, 0.0);\n\t\t}\n\t\t\n\t\t\n\t\tvec2 getSegmentTangent(float isEnd, vec3 segmentDirection) {\n\t\t\t\n\t\t\tvec2 segmentX = mix(-segmentDirection.xy, segmentDirection.xy, isEnd);\n\t\t\tvec2 segmentY = vec2(-segmentX.y, segmentX.x);\n\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n      vec3 localPosition_Start = project_view_local_position_precision( instanceStartPositions, instanceStartEndPositions64xyLow.xy);\n      vec3 localPosition_End = project_view_local_position_precision( instanceEndPositions, instanceStartEndPositions64xyLow.zw);\n      \n\t\t\tvec3 geodesic_Position_Start;\n      vec3 geodesic_Position_End;\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, instanceEndPositions, instanceStartEndPositions64xyLow.zw, geodesic_Position_Start, geodesic_Position_End, uProject_uDegreePerPixels);\n     \n      vec3 startLocalPosition = mix(localPosition_Start, geodesic_Position_Start,u_enableGeodesic);\n      vec3 endLocalPosition = mix(localPosition_End, geodesic_Position_End,u_enableGeodesic);\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t    \n\t\t\tvec3 prevPosition = instanceStartPositions;\n\t\t\tvec2 prevPosition64xyLow = instanceStartEndPositions64xyLow.xy;\n      vec3 prevStartLinesPosition_Start;\n      vec3 prevStartLinesPosition_Start_Temp;\n      vec3 prevStartLinesPosition_End;\n      \n      vec3 lefDeltaByEnd = mix(instanceLeftDeltas, vec3(0.0), isEnd);\t\t\n      geodesic_project_view_local_precision(prevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, instanceStartPositions, instanceStartEndPositions64xyLow.xy, prevStartLinesPosition_Start_Temp, prevStartLinesPosition_End, uProject_uDegreePerPixels);\n      prevStartLinesPosition_Start = mix( prevStartLinesPosition_Start_Temp,startLocalPosition, isEnd);\n\n\t\t\tprevPosition  = mix(project_view_local_position_precision(\n\t\t\t\tprevPosition  - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow  - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t),prevStartLinesPosition_Start,u_enableGeodesic) ;\n\n\t\t\tvec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n\t\t\tvec2 currPositionxy64Low = mix(instanceStartEndPositions64xyLow.xy, instanceStartEndPositions64xyLow.zw, isEnd);\n\t\t\tcurrPosition = mix(startLocalPosition,endLocalPosition,isEnd);\n\n\t\t\tvec3 nextPosition = instanceEndPositions;\n\t\t\tvec2 nextPosition64xyLow = instanceStartEndPositions64xyLow.zw;\n      vec3 endNextLinesPosition_start;\n      vec3 endNextLinesPosition_End_Temp;\n      vec3 endNextLinesPosition_End;\n      vec3 rightDeltaByEnd = mix(vec3(0.0), instanceRightDeltas, isEnd);\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, nextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, endNextLinesPosition_start, endNextLinesPosition_End_Temp, uProject_uDegreePerPixels);\n      endNextLinesPosition_End = mix(endLocalPosition, endNextLinesPosition_End_Temp, isEnd);\n      \n\t\t\tnextPosition = mix(project_view_local_position_precision(\n\t\t\t\tnextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), endNextLinesPosition_End,u_enableGeodesic);\n\n\n\t\t\tvec2 tangent = calculateTangent(prevPosition, currPosition, nextPosition);\n\n\t\t\t\n\t\t\treturn vec2(dot(tangent, segmentX), dot(tangent, segmentY));\n\t\t}\n\n\t\tvoid main(void) {\n\t\t\tfloat isEnd = positions.x;\n\t\t\t\n\n      vec3 localPosition_Start = project_view_local_position_precision( instanceStartPositions, instanceStartEndPositions64xyLow.xy);\n      vec3 localPosition_End = project_view_local_position_precision( instanceEndPositions, instanceStartEndPositions64xyLow.zw);\n\n\n      vec3 geodesic_Position_Start;\n      vec3 geodesic_Position_End;\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, instanceEndPositions, instanceStartEndPositions64xyLow.zw, geodesic_Position_Start, geodesic_Position_End, uProject_uDegreePerPixels);\n     \n      vec3 startLocalPosition = mix(localPosition_Start, geodesic_Position_Start,u_enableGeodesic);\n      vec3 endLocalPosition = mix(localPosition_End, geodesic_Position_End,u_enableGeodesic);\n\n\t\t\tvec3 segmentDirection = normalize(mix(startLocalPosition - endLocalPosition, endLocalPosition - startLocalPosition, isEnd));\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n      float maxDiff = length(startLocalPosition - endLocalPosition);\n      segmentDirection *= 0.00001 * maxDiff;\n\t    \n\t\t\tvec3 prevPosition = instanceStartPositions;\n\t\t\tvec2 prevPosition64xyLow = instanceStartEndPositions64xyLow.xy;\n      vec3 prevStartLinesPosition_Start;\n      vec3 prevStartLinesPosition_Start_Temp;\n      vec3 prevStartLinesPosition_End;\n      vec3 lefDeltaByEnd = mix(instanceLeftDeltas, vec3(0.0), isEnd);\n\n      geodesic_project_view_local_precision(prevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow -  mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, instanceStartPositions, instanceStartEndPositions64xyLow.xy, prevStartLinesPosition_Start_Temp, prevStartLinesPosition_End, uProject_uDegreePerPixels);\n      prevStartLinesPosition_Start = mix( prevStartLinesPosition_Start_Temp,startLocalPosition, isEnd);\n\n\t\t\n\t\t\tprevPosition  = mix(project_view_local_position_precision(\n\t\t\t\tprevPosition - mix(lefDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), prevPosition64xyLow - mix(vec3(0.0), lefDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), prevStartLinesPosition_Start,u_enableGeodesic) + segmentDirection;\n\n\t\t\tvec3 currPosition = mix(instanceStartPositions, instanceEndPositions, isEnd);\n\t\t\tvec2 currPositionxy64Low = mix(instanceStartEndPositions64xyLow.xy, instanceStartEndPositions64xyLow.zw, isEnd);\n\t\t\tcurrPosition = mix(startLocalPosition,endLocalPosition,isEnd);\n\n\t\t\tvec3 nextPosition = instanceEndPositions;\n\t\t\tvec2 nextPosition64xyLow = instanceStartEndPositions64xyLow.zw;\n      vec3 endNextLinesPosition_start;\n      vec3 endNextLinesPosition_End_Temp;\n      vec3 endNextLinesPosition_End;\n      vec3 rightDeltaByEnd = mix(vec3(0.0), instanceRightDeltas, isEnd);\n\n      geodesic_project_view_local_precision(instanceStartPositions, instanceStartEndPositions64xyLow.xy, nextPosition +mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy, endNextLinesPosition_start, endNextLinesPosition_End_Temp, uProject_uDegreePerPixels);\n      endNextLinesPosition_End = mix(endLocalPosition, endNextLinesPosition_End_Temp, isEnd);\n    \n\t\t\t\n\t\t\tnextPosition = mix(project_view_local_position_precision(\n\t\t\t\tnextPosition + mix(rightDeltaByEnd, vec3(0.0), step(THRESHOLD_ZOOM, uZoom)), nextPosition64xyLow + mix(vec3(0.0), rightDeltaByEnd, step(THRESHOLD_ZOOM, uZoom)).xy\n\t\t\t), endNextLinesPosition_End,u_enableGeodesic) + segmentDirection;\n\n\t\t\tvec3 pos = calculateLinePosition(prevPosition, currPosition, nextPosition);\n\n\t\t\t\n\t\t\tvTrimDirection.xy = -getSegmentTangent(0.0, normalize(startLocalPosition - endLocalPosition));\n\t\t\tvTrimDirection.zw = getSegmentTangent(1.0, normalize(endLocalPosition - startLocalPosition));\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\n\t\t\tgl_Position = uMatrix * vec4(pos, 1.0);\n\t\n\t\t\tvec4 vertexColor = instanceColors.rgba / 255.0 * u_opacity;\n\t\t\tvPickingColor = instancePickingColors;\n\t\t\tvColor = vertexColor;\n\t\t\tvArrowArray = instanceArrowInfo; \n\t\t}\n    \n    ",
		f: "\n\t\t#define SHADER_NAME instance-polyline-fragment-shader\n\t\t\n\t\tprecision highp float;\n\t\tuniform float u_isBorder;\n\t\tuniform float u_miterLimit;\n    " + o.PICK_UNIFORM + "\n    " + o.PICK_FUNCTION + "\n\t\tuniform float u_lineJoin;\n\t\tuniform sampler2D u_arrowSampler;\n        \n\t\tvarying vec4 vColor;\n\t\tvarying vec3 vLineInfo;\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\n    varying vec4 vClipArray;\n\n\t\tvarying vec2 vDashArray;\n\t\tvarying vec4 vArrowArray;\n\t\t\n    varying vec3 vPickingColor;\n\t\tvarying vec4 vLineSegmentInfo;\n\t\t\n\t\t\n\t\t\n\t\t\n\t\tvarying vec4 vTrimDirection;\n        \n\t\tvoid main(void) {\n\t\t\tvec4 fColor = vColor;\n\t\t\tvec4 opacity = vec4(0.0, 0.0, 0.0, 0.0);\n\t\t\tvec4 red = vec4(1.0, 0.0, 0.0, 1);\n\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\topacity,\n\t\t\t\tfloat(u_lineJoin == 1.0 &&\n\t\t\t\t\tlength(vec2(abs(vClipArray.z) - vClipArray.y, vClipArray.w)) > 1.0 &&\n\t\t\t\t\t(abs(vLineInfo.y) - vClipArray.y) >= 0.0 && \n\t\t\t\t\t((vLineSegmentInfo.y < 0.5 && vLineSegmentInfo.z < 0.5) || vLineSegmentInfo.x > 1.1)\n\t\t\t\t)\n\t\t\t);\n\n\n\n\n      fColor = mix(fColor, opacity, float(\n        dot(vClipArray.zw - vec2(-vClipArray.y, 0.0), vTrimDirection.xy) > 0.0 &&\n        step(0.1, abs(vTrimDirection.x)) > 0.5 &&\n        vLineSegmentInfo.y < 0.5\n      ));\n\n\n      fColor = mix(fColor, opacity, float(\n        dot(vClipArray.zw - vec2(vClipArray.y, 0.0), vTrimDirection.zw) > 0.0 &&\n        step(0.1, abs(vTrimDirection.x)) > 0.5 &&\n        vLineSegmentInfo.z < 0.5\n      ));\n\t\t\t\n\n\t\t\t\n\t\t\tfloat segmentLength = vLineInfo.z + vClipArray.y;\n\t\t\t\n\t\t\t\n\t\t\tvec2 normalDashArray = vDashArray / vClipArray.x;\n\t\t\tfloat useDash = step(0.1, vDashArray.y) * step(-vClipArray.y, -abs(vLineInfo.z));\n\t\t\tfloat isInGap = step(normalDashArray.x, mod(segmentLength, normalDashArray.x + normalDashArray.y));\n\n\t\t\t\n\t\t\tvec3 normalArrowArray = vArrowArray.xyz / vClipArray.x;\n\t\t\t\n\t\t\tfloat useArrow = (1.0 - u_isBorder) * step(0.1, vArrowArray.x) * step(0.1, vArrowArray.y) * step(-vClipArray.y, -abs(vLineInfo.z)) * step(-0.001, vLineSegmentInfo.w);\n\t\t\t\n\t\t\t\n\t\t\tfloat offsetX = mix(\n\t\t\t\tmix(\n\t\t\t\t\t0.5,\n\t\t\t\t\t1.0 / normalArrowArray.x,\n\t\t\t\t\tstep(0.1, vArrowArray.w)\n\t\t\t\t),\n\t\t\t\t1.0 - 1.0 / normalArrowArray.x,\n\t\t\t\tstep(1.1, vArrowArray.w)\n\t\t\t);\n\t\t\tfloat yMod = mod(segmentLength - vLineSegmentInfo.w, normalArrowArray.y + normalArrowArray.z);\n\t\t\tfloat texCoordY = yMod / normalArrowArray.y;\n\t\t\tfloat texCoordX = offsetX + vClipArray.w / normalArrowArray.x;\n\t\t\t\n\t\t\t\n\t\t\tfloat isComplete = step(0.0, vClipArray.y * 2.0 - (segmentLength + normalArrowArray.y - yMod));\n\t\t\tfloat isFilled = (1.0 - step(1.0, texCoordY)) * step(0.0, texCoordX) * (1.0 - step(1.0, texCoordX));\n\t\t\tvec4 arrowColor = texture2D(u_arrowSampler, vec2(texCoordX, texCoordY));\n\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\tmix(fColor, opacity, isInGap),\n\t\t\t\tuseDash\n\t\t\t);\n\t\t\tfColor = mix(\n\t\t\t\tfColor,\n\t\t\t\tvec4(mix(\n\t\t\t\t\tfColor.rgb,\n\t\t\t\t\tarrowColor.rgb,\n\t\t\t\t\tarrowColor.a\n\t\t\t\t), fColor.a),\n\t\t\t\tuseArrow * isFilled * isComplete\n\t\t\t);\n\t\t\t\n     gl_FragColor = picking_getFinalColor(fColor, vPickingColor);\n\t\t\t\n\t\t\t\n\t\t}\n\t",
		name: "instance_polyline"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217);
	e.
default = {
		v: "\n    #define SHADER_NAME mask-vertex-shader\n\n    attribute vec3 positions;\n    attribute vec2 positions64xyLow;\n\n    " + i.UNIFORM_PART + "\n\n    " + i.PROJECTION_PART + "\n    \n    void main(void) {\n      vec3 local_position = project_view_local_position_precision(positions.xyz, positions64xyLow.xy);\n\n      gl_Position = uMatrix * vec4(local_position, 1.0);\n    }\n  ",
		f: "\n    #define SHADER_NAME mask-fragment-shader\n\n        precision highp float;\n        \n    uniform vec4 uColor;\n    \n    void main(void) {\n      gl_FragColor = uColor;\n    }\n  ",
		name: "mask"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(292),
	r = n(466);
	e.
default = {
		v: "\n        #define SHADER_NAME instance-glyph-vertex-shader\n\n        " + r.INSTANCE_PARTS + "\n        attribute vec4 instanceColors;\n        attribute vec4 instanceStrokeColors;\n        attribute float instanceType;\n        attribute float instanceShow;\n        \n        " + i.UNIFORM_PART + "\n        \n        " + o.PICK_UNIFORM + "\n\n        " + r.UNIFORM_PARTS + "\n        uniform float u_gamma;\n        \n        varying vec4 vColor;\n        varying vec4 vStrokeColor;\n        varying vec2 vTextureCoords;\n        varying float vGamma;\n        varying vec2 vPositions;\n        varying float vOpacity;\n\n\n\n        varying vec2 vRadiusRate;\n\n\n        varying vec4 vBorderProperty;\n        varying vec3 vBgImageInfo;\n        " + i.PROJECTION_PART + "\n        \n        " + o.PICK_FUNCTION + "\n        \n        void main(void) {\n            " + (0, r.generateMainPart)("\n\n                vec2 backgroundScale = vec2(1.0) * u_sizeScale;\n                vec2 labelScale = mix(sizePixels / imageSize.y, vec2(0.0), float(imageSize.y == 0.0));\n                vec2 instanceScale = mix(labelScale, backgroundScale, instanceType);\n\n\n                vec2 pixelOffset = positions / 2.0 * imageSize + mix(instanceInfos.xy, vec2(0.0), instanceType);\n\n                pixelOffset = mix(rotate_by_angle_onScreen(pixelOffset, instanceInfos.z) * instanceScale,\n                rotate_by_angle_onScreen(pixelOffset, instanceInfos.z) * backgroundScale,\n                          instanceType);\n                pixelOffset += instancePixelOffset.xy;\n                pixelOffset.y *= -1.0;\n            ", "\n                vColor = vec4(instanceColors.rgb, instanceColors.a * u_opacity) / 255.;\n                vStrokeColor = vec4(instanceStrokeColors.rgb, instanceStrokeColors.a * u_opacity) / 255.;\n            ") + "\n\n            vGamma = u_gamma / (u_sizeScale * instanceSizes.x / imageSize.y);\n            vBorderProperty.w = instanceFrames.x;\n            vBorderProperty.xy = vec2((imageSize.x - vBorderProperty.w * 2.0) / imageSize.x, (imageSize.y - vBorderProperty.w * 2.0) / imageSize.y);\n            vOpacity = instanceShow * vOpacity;\n            vPositions = positions;\n            vBgImageInfo.x = instanceType;\n            vBorderProperty.z = clamp(instanceInfos.x, 0.0, min(imageSize.x / 2.0, imageSize.y / 2.0));\n            vRadiusRate = vec2(1.0 - vBorderProperty.z * 2.0 / imageSize.x, 1.0 - vBorderProperty.z * 2.0 / imageSize.y);\n            vBgImageInfo.yz = imageSize;\n        }\n    ",
		f: "\n        #define SHADER_NAME instance-marker-fragment-shader\n\n        precision highp float;\n        \n        uniform sampler2D u_sampler;\n        uniform float u_buffer;\n        uniform vec2 u_resolution;\n\n        " + o.PICK_UNIFORM + "\n        \n        varying vec4 vColor;\n        varying vec4 vStrokeColor;\n        varying vec2 vTextureCoords;\n        varying float vGamma;\n        varying vec2 vPositions;\n\n        varying float vOpacity;\n\n\n        varying vec2 vRadiusRate;\n\n\n        varying vec4 vBorderProperty;\n        varying vec3 vBgImageInfo;\n        \n        const float MIN_ALPHA = 0.05;\n        const bool useSdf = true;\n        \n        void main(void) {\n            float usedBuff = 0.548;\n\n            " + i.SDF_PART + "\n\n            float isBorder = float(abs(vPositions.x) > vBorderProperty.x || abs(vPositions.y) > vBorderProperty.y);\n            vec4 backgroundColor = vColor;\n            float isCorner = float(abs(vPositions.x) > vRadiusRate.x && abs(vPositions.y) > vRadiusRate.y);\n\n            float borderLen = length(vec2((abs(vPositions.x) - vRadiusRate.x) * vBgImageInfo.y / 2.0, (abs(vPositions.y) - vRadiusRate.y) * vBgImageInfo.z / 2.0));\n            isBorder = mix(isBorder, 1.0, step(vBorderProperty.z - vBorderProperty.w, borderLen) * isCorner);\n            backgroundColor = mix(vColor, vStrokeColor, isBorder) * vOpacity;\n            backgroundColor.w = backgroundColor.w * (1.0 - step(vBorderProperty.z, borderLen) * isCorner);\n            \n            gl_FragColor = mix(mix(color * vOpacity, backgroundColor, vBgImageInfo.x), vColor * vOpacity, picking_usePickingColor);\n        }\n    ",
		name: "instance_glyph"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(217),
	o = n(292),
	r = n(466);
	e.
default = {
		v: "\n        #define SHADER_NAME instance-marker-vertex-shader\n\n        " + r.INSTANCE_PARTS + "\n        attribute vec4 instanceColors;\n        attribute vec4 instanceStrokeColors;\n        attribute float instanceStrokeWidth;\n        attribute float instanceShow;\n        attribute float instanceType;\n\n        " + i.UNIFORM_PART + "\n        \n        " + o.PICK_UNIFORM + "\n\n        " + r.UNIFORM_PARTS + "\n        uniform float u_gamma;\n\n        varying vec4 vColor;\n        varying vec4 vStrokeColor;\n        varying float vStrokeWidth;\n        varying vec2 vTextureCoords;\n        varying float vOpacity;\n        varying float vGamma;\n        varying float vInstanceType;\n        varying vec2 vInstanceScale;\n        \n        " + i.PROJECTION_PART + "\n        \n        " + o.PICK_FUNCTION + "\n        \n        void main(void) {\n            " + (0, r.generateMainPart)("\n\n                vec2 markerScale = mix(sizePixels / imageSize, vec2(0.0), float(imageSize.y == 0.0));\n                vec2 labelScale = mix(sizePixels / imageSize.y, vec2(0.0), float(imageSize.y == 0.0));\n                vec2 instanceScale = mix(markerScale, labelScale, instanceType);\n                vec2 pixelOffset = mix(positions / 2.0 * imageSize, positions / 2.0 * imageSize + instanceInfos.xy, instanceType);\n                pixelOffset = mix(rotate_by_angle_onScreen((pixelOffset * instanceScale + instanceInfos.xy), instanceInfos.z),\n                    pixelOffset * instanceScale,\n                    instanceType);\n                pixelOffset += instancePixelOffset.xy;\n                pixelOffset.y *= -1.0;\n            ", "\n                vColor = mix(vec4(0.0, 0.0, 0.0, 0.0), vec4(instanceColors.rgb, instanceColors.a * u_opacity) / 255., instanceType);\n                vStrokeColor = vec4(instanceStrokeColors.rgb, instanceStrokeColors.a * u_opacity) / 255.;\n                vStrokeWidth = instanceStrokeWidth;\n            ") + "\n            vGamma = u_gamma / (u_sizeScale * instanceSizes.x / imageSize.y);\n            vOpacity = instanceShow * vOpacity;\n            vInstanceType = instanceType;\n            vInstanceScale = instanceScale;\n        }\n    ",
		f: "\n        #define SHADER_NAME instance-marker-fragment-shader\n\n        precision highp float;\n        \n\t\tuniform sampler2D u_sampler;\n        uniform float u_buffer;\n        uniform float u_sdfRadius;\n\n        " + o.PICK_UNIFORM + "\n        \n        varying vec4 vColor;\n        varying vec4 vStrokeColor;\n        varying float vStrokeWidth;\n        varying vec2 vTextureCoords;\n        varying float vOpacity;\n        varying float vGamma;\n        varying float vInstanceType;\n        varying vec2 vInstanceScale;\n        \n        const float MIN_ALPHA = 0.05;\n\n        \n        void main(void) {\n\n            float usedBuff =  u_buffer * (1.0 - vStrokeWidth / u_sdfRadius / vInstanceScale.y);\n\n            " + i.SDF_PART + "\n\n            vec4 texColor = texture2D(u_sampler, vTextureCoords);\n            gl_FragColor = mix(mix(texColor * vOpacity, color * vOpacity, vInstanceType), vColor, picking_usePickingColor);\n        }\n    ",
		name: "instance_marker"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(326);
	e.
default = {
		v: [i.attributePart, "attribute vec4 a_InstanceColors;", "attribute vec4 a_InstancePickingColors;", "attribute vec4 a_InstanceStrokeColors;", "attribute float a_InstanceStrokeWidth;", "attribute vec2 a_InstanceStrentchinglens;", i.uniformPart, "uniform vec2 u_glyphTextureResolution;", "uniform vec2 u_billboardTextureResolution;", "uniform float u_gamma;", "uniform float picking_useFeaturePickingColor;", i.varyingPart, "varying float v_gamma;", "varying vec4 v_color;", "varying vec4 v_strokeColor;", "varying vec2 v_fontArguments;", "varying float v_useFeaturePicking;", i.projectScreenPart, i.filterPart, "void main(){", "\tvec2 transCoord = a_InstanceTrans.xy;", i.glPositionCusPart, "    vec2 texCoords = a_Positions.xy * 0.5 + 0.5;", "vec4 textureBounds = vec4(a_InstanceTextBounds.x, u_billboardTextureResolution.y - a_InstanceTextBounds.y - a_InstanceTextBounds.w, a_InstanceTextBounds.zw);", "\tvec2 billboradTextureCoords = mix(\n\t\t\t\ttextureBounds.xy,\n\t\t\t\ttextureBounds.xy + textureBounds.zw,\n\t\t\t\t\ttexCoords\n\t\t\t\t) / u_billboardTextureResolution;\n\t\t\t\n\t\t", "       float xRoad = (a_InstanceTextBounds.x) / u_glyphTextureResolution.x;", "       float yRoad = (u_glyphTextureResolution.y - (a_InstanceTextBounds.y)) / u_glyphTextureResolution.y;", "       float wRoad = a_InstanceTextBounds.z / u_glyphTextureResolution.x;", "       float hRoad = a_InstanceTextBounds.w / u_glyphTextureResolution.y;", "       v_TexCoord = mix(\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\tbillboradTextureCoords,\n\t\t\t\t\t\t\t\tmix(\n\t\t\t\t\t\t\t\t\tvec2(xRoad + texCoords.x * wRoad, yRoad + (texCoords.y - 1.0) * hRoad),\n\t\t\t\t\t\t\t\t\tvec2(a_InstanceTextBounds.x + a_InstanceTextBounds.z * texCoords.x, a_InstanceTextBounds.y + a_InstanceTextBounds.w * texCoords.y),\n\t\t\t\t\t\t\t\t\ta_InstanceInfo.z\n\t\t\t\t\t\t\t\t),\n\t\t\t\t\t\t\t\tstep(0.0, a_InstanceInfo.z)\n\t\t\t\t\t\t\t);", "    v_isShow = a_InstanceInfo.y;", "    v_isIcon = a_InstanceInfo.z;", "    v_opacity = max(0.0, min(1.0, a_InstanceInfo.w + mix(-u_fadeChange, u_fadeChange, v_isShow)));", "\t v_opacity = getFilterOpacity(v_opacity, a_InstanceTrans.z);", "\t v_color = mix(a_InstanceColors, a_InstancePickingColors, picking_useFeaturePickingColor) / 255.0;", "  v_useFeaturePicking = picking_useFeaturePickingColor;", "\t v_strokeColor = a_InstanceStrokeColors / 255.0;", "\t v_fontArguments.x = a_InstanceStrokeWidth;", "\t v_gamma = u_gamma / (a_InstanceCoords.y / a_InstanceTextBounds.w);", "\t v_fontArguments.y = a_InstanceCoords.y / a_InstanceTextBounds.w;", "}"].join("\n"),
		f: ["#define SDF_PX 8.0", "#define EDGE_GAMMA 0.105 / 2.0", "precision highp float;", i.fragPart, "uniform sampler2D u_SamplerGlyph;", "uniform float u_buffer;", "uniform float u_sdfRadius;", i.uniformPart, i.varyingPart, "varying float v_gamma;", "varying vec4 v_color;", "varying vec4 v_strokeColor;", "varying vec2 v_fontArguments;", "varying float v_useFeaturePicking;", "void main() {", i.maskPart, "\t vec4 vColor = v_color * v_color.a;", "\tvec4 color = mix(\n\t\t\t\ttexture2D(u_SamplerGlyph, v_TexCoord),\n\t\t\t\tmix(\n\t\t\t\t\ttexture2D(u_SamplerText, v_TexCoord),\n\t\t\t\t\ttexture2D(u_SamplerIcon, v_TexCoord),\n\t\t\t\t\tstep(0.0, v_isIcon)\n\t\t\t\t),\n\t\t\t\tabs(v_isIcon)\n\t\t\t);\n\t\t", "\n\t\t\tfloat alpha = color.a;\n\t\t\tfloat distance = alpha;\n\n\t\t\tfloat usedBuff =  u_buffer - v_fontArguments.x  / u_sdfRadius / v_fontArguments.y *  u_buffer;\n\t\t\tfloat usedGamma = v_gamma;\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\tfloat outlineFactor = smoothstep(u_buffer - usedGamma, u_buffer + usedGamma, distance);\n\n\t\t\tfloat finallAlpha = smoothstep(usedBuff - usedGamma, usedBuff + usedGamma, distance);\n\t\t\t\n\t\t\tcolor = mix(\n\t\t\t\tmix(v_strokeColor * v_strokeColor.a, vColor, clamp(outlineFactor + v_useFeaturePicking, 0.0, 1.0)),\n\t\t\t\tcolor,\n\t\t\t\tstep(0.5, abs(v_isIcon))\n\t\t\t) * finallAlpha;\n\t\t\t\n\t\t\t\n\t\t\t\n\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t", "    gl_FragColor = color * mix(0.0, v_opacity, isCulledByMask);", "}"].join("\n"),
		name: "instance_symbol_custom_style"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(326);
	e.
default = {
		v: [i.attributePart, i.uniformPart, i.varyingPart, i.projectScreenPart, i.filterPart, "void main(){", "\tvec2 transCoord = a_InstanceTrans.xy;", i.glPositionPart, "        vec2 texCoords = a_Positions.xy * 0.5 + 0.5;", "        if (a_InstanceInfo.z != 1.0) {", "           float x = (u_InstanceTileTextureOffset.x + a_InstanceTextBounds.x) / u_textTextureResolution.x;", "           float y = (u_textTextureResolution.y - (u_InstanceTileTextureOffset.y + a_InstanceTextBounds.y)) / u_textTextureResolution.y;", "           float w = a_InstanceTextBounds.z / u_textTextureResolution.x;", "           float h = a_InstanceTextBounds.w / u_textTextureResolution.y;", "           v_TexCoord = vec2(x + texCoords.x * w, y + (texCoords.y - 1.0) * h);", "        } else {", "           v_TexCoord = vec2(a_InstanceTextBounds.x + a_InstanceTextBounds.z * texCoords.x, a_InstanceTextBounds.y + a_InstanceTextBounds.w * texCoords.y);", "        }", "    v_isShow = a_InstanceInfo.y;", "    v_isIcon = a_InstanceInfo.z;", "    v_opacity = max(0.0, min(1.0, a_InstanceInfo.w + mix(-u_fadeChange, u_fadeChange, v_isShow)));", "\t v_opacity = getFilterOpacity(v_opacity, a_InstanceTrans.z);", "}"].join("\n"),
		f: ["precision mediump float;", i.fragPart, i.varyingPart, "void main() {", i.maskPart, "    vec4 color = mix(texture2D(u_SamplerText, v_TexCoord), texture2D(u_SamplerIcon, v_TexCoord), v_isIcon);", "    gl_FragColor = mix(color, vec4(1.0, 1.0, 1.0, color.a), u_asbackground) * color.a * mix(0.0, v_opacity, isCulledByMask);", "}"].join("\n"),
		name: "instance_symbol_default_style"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(326),
	o = n(217),
	r = "\n\t" + o.PROJECTION_PART + "\n\n\tvec2 getWorldspaceCoord(vec4 relativeCenter, vec2 localPosition) {\n\t\tvec2 relativeCenterPoint = project_view_local_position_precision(relativeCenter.xy, relativeCenter.zw);\n\t\tvec2 worldspaceCoord = relativeCenterPoint + project_scale(vec3(localPosition, 0.0)).xy;\n\t\treturn worldspaceCoord;\n\t}\n";
	e.
default = {
		v: [i.attributePart, "attribute vec4 a_InstanceColors;", "attribute vec4 a_InstanceStrokeColors;", i.uniformPart, "uniform vec2 u_glyphTextureResolution;", "uniform vec2 u_billboardTextureResolution;", "uniform float u_gamma;", "\n\tuniform vec4 uCenter;\n\tuniform float uZoom;\n\tuniform vec3 uPixelsPerMeter;\n\tuniform vec2 uResolution;\n\tuniform vec3 uProject_uCommonUnitsPerWorldUnit;\n\tuniform vec3 uProject_uCommonUnitsPerWorldUnit2;\n\tuniform vec4 uRelativeCenter;\n", i.varyingPart, "varying float v_gamma;", "varying vec4 v_color;", "varying vec4 v_strokeColor;", "varying float v_fontScale;", "varying float v_gammaScale;", i.projectScreenPart, r, i.filterPart, "void main(){", "\tvec2 transCoord = getWorldspaceCoord(uRelativeCenter, a_InstanceTrans.xy);", i.glPositionPart, "\n\t\t\tvec2 texCoords = a_Positions.xy * 0.5 + 0.5;\n\t\t\t\n\t\t\t\n\t\t\tvec2 resolution = mix(\n\t\t\t\tu_glyphTextureResolution,\n\t\t\t\tu_billboardTextureResolution,\n\t\t\t\tabs(a_InstanceInfo.z)\n\t\t\t);\n\t\t\tvec4 textureBounds = vec4(a_InstanceTextBounds.x, resolution.y - a_InstanceTextBounds.y - a_InstanceTextBounds.w, a_InstanceTextBounds.zw);\n\t\t\tv_TexCoord = mix(\n\t\t\t\ttextureBounds.xy,\n\t\t\t\ttextureBounds.xy + textureBounds.zw,\n\t\t\t\ttexCoords\n\t\t\t) / resolution;\n\n\t\t\tv_isShow = a_InstanceInfo.y;\n\t\t\tv_isIcon = a_InstanceInfo.z;\n\t\t\tv_opacity = max(0.0, min(1.0, a_InstanceInfo.w + mix(-u_fadeChange, u_fadeChange, v_isShow)));\n\t\t\tv_color = a_InstanceColors / 255.0;\n\t\t\tv_strokeColor = a_InstanceStrokeColors / 255.0;\n\n\t\t\tv_gamma = u_gamma / (a_InstanceCoords.y / a_InstanceTextBounds.w);\n\n\t\t\tv_fontScale = a_InstanceCoords.y / a_InstanceTextBounds.w;\n\t\t\tv_gammaScale = 1.0;\n\t\t}"].join("\n"),
		f: ["#define SDF_PX 8.0", "#define EDGE_GAMMA 0.105 / 2.0", "precision highp float;", "uniform sampler2D u_SamplerText;", "uniform sampler2D u_SamplerGlyph;", "uniform float u_buffer;", "uniform float u_asbackground;", i.varyingPart, "varying float v_gamma;", "varying vec4 v_color;", "varying vec4 v_strokeColor;", "varying float v_fontScale;", "varying float v_gammaScale;", "void main() {", "\t vec4 vColor = v_color * v_color.a;", "\n\t\t\tvec4 color = mix(\n\t\t\t\ttexture2D(u_SamplerGlyph, v_TexCoord),\n\t\t\t\ttexture2D(u_SamplerText, v_TexCoord),\n\t\t\t\tabs(v_isIcon)\n\t\t\t);\n\t\t", "\n\t\t\tfloat alpha = color.a;\n\t\t\tfloat distance = alpha;\n\n\t\t\tfloat usedBuff = u_buffer;\n\t\t\tfloat usedGamma = v_gamma;\n\t\t\tfloat outlineFactor = smoothstep(usedBuff - usedGamma, usedBuff + usedGamma, distance);\n\t\t\tfloat finalAlpha = smoothstep(0.5 - usedGamma, 0.5 + usedGamma, distance);\n\n\t\t\tcolor = mix(\n\t\t\t\tmix(v_strokeColor * v_strokeColor.a, vColor, outlineFactor),\n\t\t\t\tcolor,\n\t\t\t\tstep(0.5, abs(v_isIcon))\n\t\t\t) * finalAlpha;\n\t\t\t\n\t\t\tgl_FragColor = color * v_opacity;\n\t\t}"].join("\n"),
		name: "instance_symbol_indoor"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(276),
	o = n(330),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = r.
default ? i.LIGHT_UNIFORM + i.LIGHT_VARYING + i.LIGHT_VERTEX: "",
	s = r.
default ? i.LIGHT_VARYING + i.LIGHT_FRAG: "";
	e.
default = {
		v: "\n\t\tprecision highp float;\n\t\tattribute vec2 a_Position;\n\t\tattribute vec4 a_Color;\n\t\tattribute vec2 a_Normal;\n\t\tattribute vec2 a_LineInfo;\n\t\tattribute float a_LineDistance;\n\t\tattribute vec2 a_SideInfo;\n\t\tattribute vec4 a_PickingColor;\n\n\t\tuniform mat4 u_matrix;\n\t\tuniform mat4 u_modelMatrix;\n\t\tuniform float u_SizeScale;\n\t\tuniform float picking_useFeaturePickingColor;\n\n\t\tvarying vec4 v_Color;\n\t\tvarying vec2 v_Normal;\n\t\tvarying vec2 v_LineInfo;\n\t\tvarying vec2 v_Pos;\n\t\tvarying float v_Transform;\n\t\tvarying float v_LineDistance;\n\t\tvarying float v_Width;\n\t\tvarying float v_opaque_part;\n\n\t\t" + a + "\n\n\t\tvoid main(){\n\n\t\t\tfloat isSide = fract(a_SideInfo.x / 2.) * 2.;\n\t\t\tfloat isNoSideLine = floor(a_SideInfo.x / 2.);\n\t\t\tv_opaque_part = mix(1.0, 0.0, smoothstep(0.0, 1.0, isSide * isNoSideLine));\n\n\t\t\tfloat zoom = floor(u_SizeScale / 1000.) / 100.;\n\t\t\tfloat scale = fract(u_SizeScale / 1000.) * 10.;\n\t\t\tfloat preWidth = floor(a_Position.x / 2048.0)/2.0;\n\t\t\tfloat nextWidth = floor(a_Position.y / 2048.0)/2.0;\n\n\t\t\tv_Color = mix(a_Color, a_PickingColor, picking_useFeaturePickingColor);\n\t\t\tv_Normal = a_Normal;\n\t\t\tv_LineInfo = a_LineInfo;\n\t\t\tv_LineDistance = floor(a_LineDistance/10.0);\n\t\t\tvec2 point = (fract(a_Position.xy / 2048.0) * 2048.0 - 1024.0) * 0.5;\n\n\t\t\t\n\t\t\tfloat width = a_LineInfo.x / 2.0;\n\t\t\tfloat nearWidth = mix(nextWidth, preWidth, step(0.5, zoom));\n\t\t\tv_Width = mix(\n\t\t\t\twidth,\n\t\t\t\tmix(\n\t\t\t\t\tmix(width, nextWidth, zoom),\n\t\t\t\t\tmix(preWidth, width, zoom),\n\t\t\t\t\tstep(0.5, zoom)\n\t\t\t\t),\n\t\t\t\tfloat(v_LineDistance > 0. && nearWidth > 0.)\n\t\t\t) / scale;\n\n\t\t\tv_Normal = vec2(a_Normal.x - 128.0, a_Normal.y - 128.0) / 63.;\n\t\t\tv_Pos = point + v_Normal * v_Width;\n\t\t\tv_Transform = a_SideInfo.y;\n\t\t\tgl_Position = u_matrix * vec4(v_Pos, 0.0, 1.0);\n\n\t\t\t\n\t\t\t" + (r.
	default ? "lighting_apply_on_vertex(vec3(v_Pos, 0.0), vec3(0.0, 0.0, 1.0), u_modelMatrix, vec2(0.1, 16.0));": "") + "\n\t\t}\n\t",
		f: "\n\t\tprecision highp float;\n\t\tuniform float u_opacity;\n\t\tvarying vec4 v_Color;\n\t\tvarying vec2 v_Normal;\n\t\tvarying vec2 v_LineInfo;\n\t\tvarying vec2 v_Pos;\n\t\tvarying float v_Transform;\n\t\tvarying float v_LineDistance;\n\t\tvarying float v_Width;\n\t\tvarying float v_opaque_part;\n\n\t\t" + s + "\n\n\t\tvoid main(){\n\t\t\tvec4 f_Color;\n\t\t\tf_Color.r = v_Color.r / 255.0;\n\t\t\tf_Color.g = v_Color.g / 255.0;\n\t\t\tf_Color.b = v_Color.b / 255.0;\n\t\t\tf_Color.a = 1.0;\n\n\t\t\tfloat alpha = u_opacity;\n\t\t\tfloat feather = min(v_Width * 0.3, 2.0);\n\n\t\t\t\n\t\t\tfloat transformByte = floor(v_Transform + 0.5);\n\t\t\tvec2 translate = vec2(fract(transformByte / 4.0) * 4.0, floor(fract(transformByte / 16.0) * 4.0));\n\t\t\tfloat scale = floor(transformByte / 16.0);\n\t\t\tvec2 coord = vec2(v_Pos.x, 0. - v_Pos.y) * scale - translate * 256.0;\n\t\t\tbool isOutSide = coord.x < 0. || coord.x > 256.0 || coord.y < 0. || coord.y > 256.0;\n\n\t\t\tfloat dist = abs(length(v_Normal) * v_Width);\n\t\t\tfloat isTransparent = float(\n\t\t\t\t(dist > v_Width || isOutSide) || \n\t\t\t\t(v_LineInfo.y> 0.0 && mod(v_LineDistance, floor(v_LineInfo.y/10.0) * (2.0-fract(v_LineInfo.y/10.0))) > floor(v_LineInfo.y/10.0))\n\t\t\t);\n\n\t\t\talpha = mix(\n\t\t\t\tu_opacity,\n\t\t\t\t0.0,\n\t\t\t\tisTransparent\n\t\t\t);\n\n\t\t\t\n\t\t\t" + (r.
	default ? "vec4 colorInLight = lighting_apply_on_color(f_Color);": "vec4 colorInLight = f_Color;") + "\n\t\t\tgl_FragColor =  colorInLight * (v_Color.a /255.0) * alpha * v_opaque_part;\n\t\t}\n\t",
		name: "trafficBase"
	}
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.defaultShader = {
		name: "instance_traffic_flow",
		v: "\nattribute vec2 instanceLinks;\nattribute vec4 instanceColors;\nattribute float instanceParticles;\n\nuniform mat4 uMatrix;\nuniform sampler2D uSampler;\nuniform vec2 uTexInfo;\nuniform vec4 uSubTexInfo;\nuniform float uTick;\n\nvarying vec4 vColor;\n\nvoid main() {\n\n  float stepByTime = floor(uTick / uTexInfo.y) + 0.4 + instanceParticles;\n  float linkLength = instanceLinks.y;\n  float offset = stepByTime - linkLength * floor(stepByTime / linkLength);\n\n  float index = floor(instanceLinks.x + offset);\n\n\n\n  float texSize = uTexInfo.x;\n  vec2 uvInUnit = vec2(\n    index - texSize * floor(index / texSize),\n    floor(index / texSize)\n\n  ) / (texSize - 1.);\n\n\n  vec2 uvInSampler = uSubTexInfo.xy + uvInUnit * uSubTexInfo.zw;\n\n  vec4 pointRGBA = texture2D(uSampler, uvInSampler);\n  vec2 point = vec2(\n    (pointRGBA.x + pointRGBA.y) * 256. - 128.,\n    (pointRGBA.z + pointRGBA.w) * 256. - 128.\n  );\n\n  gl_Position = uMatrix * vec4(point.x, -point.y, 0., 1.);\n  gl_PointSize = 5.;\n\n  vColor = instanceColors / 255.;\n}\n",
		f: "\nprecision mediump float;\n\nvarying vec4 vColor;\n\nvoid main() {\n  float alpha = 1.0 - step(0.5, distance(gl_PointCoord, vec2(0.5)));\n  gl_FragColor = vColor * alpha;\n}\n"
	}
},
, , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(10),
	u = n(469),
	c = function() {
		function t(e, n, i) { (0, r.
		default)(this, t),
			this.workerPool = e,
			this.actors = [],
			this.currentActor = 0,
			this.id = l.uniqueId();
			for (var o = this.workerPool.acquire(this.id, i), a = 0; a < o.length; a++) {
				var s = o[a],
				c = new u(s, n, this.id);
				c.name = "Worker " + a,
				this.actors.push(c)
			}
		}
		return (0, s.
	default)(t, [{
			key: "send",
			value: function(t, e, n, i) {
				return ("number" != typeof i || isNaN(i)) && (this.currentActor = (this.currentActor + 1) % this.actors.length, i = this.currentActor),
				this.actors[i].send(t, e, n),
				i
			}
		},
		{
			key: "remove",
			value: function() {
				this.actors.forEach(function(t) {
					t.remove()
				}),
				this.actors = [],
				this.workerPool.release(this.id)
			}
		},
		{
			key: "broadcast",
			value: function(t, e, n) {
				n = n ||
				function() {},
				l.asyncAll(this.actors,
				function(n, i) {
					n.send(t, e, i)
				},
				n)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.remove()
			}
		}]),
		t
	} ();
	e.
default = c
},
function(t, e, n) {
	"use strict";
	var i = n(624),
	o = i(625);
	t.exports = function() {
		var t = new window.Worker(o);
		return t.objectURL = o,
		t
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		function e(i) {
			if (n[i]) return n[i].exports;
			var o = n[i] = {
				i: i,
				l: !1,
				exports: {}
			};
			return t[i].call(o.exports, o, o.exports, e),
			o.l = !0,
			o.exports
		}
		var n = {};
		e.m = t,
		e.c = n,
		e.i = function(t) {
			return t
		},
		e.d = function(t, n, i) {
			e.o(t, n) || (0, p.
		default)(t, n, {
				configurable: !1,
				enumerable: !0,
				get: i
			})
		},
		e.r = function(t) {
			Object.defineProperty(t, "__esModule", {
				value: !0
			})
		},
		e.n = function(t) {
			var n = t && t.__esModule ?
			function() {
				return t.
			default
			}:
			function() {
				return t
			};
			return e.d(n, "a", n),
			n
		},
		e.o = function(t, e) {
			return Object.prototype.hasOwnProperty.call(t, e)
		},
		e.p = "/",
		e.oe = function(t) {
			throw console.error(t),
			t
		};
		var i = e(e.s = ENTRY_MODULE);
		return i.
	default || i
	}
	function r(t) {
		return ("" + t).replace(/[.?*+^$[\]\\(){}|-]/g, "\\$&")
	}
	function a(t) {
		return ! isNaN(1 * t)
	}
	function s(t, e, i) {
		var o = {};
		o[i] = [];
		var s = e.toString(),
		l = s.match(/^function\s?\w*\(\w+,\s*\w+,\s*(\w+)\)/);
		if (!l) return o;
		for (var u = l[1], c = new RegExp("(\\\\n|\\W)" + r(u) + m, "g"), f = void 0; f = c.exec(s);)"dll-reference" !== f[3] && o[i].push(f[3]);
		for (c = new RegExp("\\(" + r(u) + '\\("(dll-reference\\s(' + _ + '))"\\)\\)' + m, "g"); f = c.exec(s);) t[f[2]] || (o[i].push(f[1]), t[f[2]] = n(f[1]).m),
		o[f[2]] = o[f[2]] || [],
		o[f[2]].push(f[4]);
		for (var d = (0, h.
	default)(o), v = 0; v < d.length; v++) for (var p = 0; p < o[d[v]].length; p++) a(o[d[v]][p]) && (o[d[v]][p] = 1 * o[d[v]][p]);
		return o
	}
	function l(t) {
		return (0, h.
	default)(t).reduce(function(e, n) {
			return e || t[n].length > 0
		},
		!1)
	}
	function u(t, e) {
		for (var n = {
			main: [e]
		},
		i = {
			main: []
		},
		o = {
			main: {}
		}; l(n);) for (var r = (0, h.
	default)(n), a = 0; a < r.length; a++) {
			var u = r[a],
			c = n[u],
			f = c.pop();
			if (o[u] = o[u] || {},
			!o[u][f] && t[u][f]) {
				o[u][f] = !0,
				i[u] = i[u] || [],
				i[u].push(f);
				for (var d = s(t, t[u][f], u), v = (0, h.
			default)(d), p = 0; p < v.length; p++) n[v[p]] = n[v[p]] || [],
				n[v[p]] = n[v[p]].concat(d[v[p]])
			}
		}
		return i
	}
	var c = n(113),
	f = i(c),
	d = n(17),
	h = i(d),
	v = n(75),
	p = i(v),
	_ = "[\\.|\\-|\\+|\\w|/|@]+",
	m = "\\(\\s*(/\\*.*?\\*/)?\\s*.*?(" + _ + ").*?\\)";
	t.exports = function(t, e) {
		e = e || {};
		var i = {
			main: n.m
		},
		r = e.all ? {
			main: (0, h.
		default)(i.main)
		}:
		u(i, t),
		a = ""; (0, h.
	default)(r).filter(function(t) {
			return "main" !== t
		}).forEach(function(t) {
			for (var e = 0; r[t][e];) e += 1;
			r[t].push(e),
			i[t][e] = "(function(module, exports, __webpack_require__) { module.exports = __webpack_require__; })",
			a = a + "var " + t + " = (" + o.toString().replace("ENTRY_MODULE", (0, f.
		default)(e)) + ")({" + r[t].map(function(e) {
				return (0, f.
			default)(e) + ": " + i[t][e].toString()
			}).join(",") + "});\n"
		}),
		a = a + "new ((" + o.toString().replace("ENTRY_MODULE", (0, f.
	default)(t)) + ")({" + r.main.map(function(t) {
			return (0, f.
		default)(t) + ": " + i.main[t].toString()
		}).join(",") + "}))(self);";
		var s = new window.Blob([a], {
			type: "text/javascript"
		});
		return e.bare ? s: (window.URL || window.webkitURL || window.mozURL || window.msURL).createObjectURL(s)
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(222),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l);
	n(464);
	var c = n(672),
	f = i(c),
	d = n(675),
	h = i(d),
	v = n(678),
	p = i(v),
	_ = n(682),
	m = i(_),
	g = n(680),
	y = i(g),
	x = n(685),
	b = i(x),
	S = n(90),
	w = n(469),
	E = n(695),
	T = function() {
		function t(e) {
			var n, i = this; (0, s.
		default)(this, t),
			this.self = e,
			this.actor = new w(e, this),
			this.layerIndexes = {},
			this.workerSourceTypes = (n = {},
			(0, r.
		default)(n, S.SOURCE_TYPE.vector, E), (0, r.
		default)(n, S.SOURCE_TYPE.geojson, f.
		default), (0, r.
		default)(n, S.SOURCE_TYPE.geoTask, h.
		default), (0, r.
		default)(n, S.SOURCE_TYPE.imageTile, p.
		default), (0, r.
		default)(n, S.SOURCE_TYPE.indoor, m.
		default), (0, r.
		default)(n, S.SOURCE_TYPE.indoorIndex, y.
		default), (0, r.
		default)(n, S.SOURCE_TYPE.traffic, b.
		default), n),
			this.workerSources = {},
			this.self.registerWorkerSource = function(t, e) {
				if (i.workerSourceTypes[t]) throw new Error('Worker source with name "' + t + '" already registered.');
				i.workerSourceTypes[t] = e
			}
		}
		return (0, u.
	default)(t, [{
			key: "loadTile",
			value: function(t, e, n) {
				this.getWorkerSource(t, e.type).loadTile(e, n)
			}
		},
		{
			key: "reloadTile",
			value: function(t, e, n) {
				this.getWorkerSource(t, e.type).reloadTile(e, n)
			}
		},
		{
			key: "abortTile",
			value: function(t, e) {
				this.getWorkerSource(t, e.type).abortTile(e)
			}
		},
		{
			key: "removeTile",
			value: function(t, e) {
				this.getWorkerSource(t, e.type).removeTile(e)
			}
		},
		{
			key: "removeSource",
			value: function(t, e) {
				var n = this.getWorkerSource(t, e.type);
				void 0 !== n.removeSource && n.removeSource(e)
			}
		},
		{
			key: "getWorkerSource",
			value: function(t, e) {
				var n = this;
				if (this.workerSources[t] || (this.workerSources[t] = {}), !this.workerSources[t][e]) {
					var i = {
						send: function(e, i, o) {
							n.actor.send(e, i, o, t)
						}
					};
					this.workerSources[t][e] = new this.workerSourceTypes[e](i, t)
				}
				return this.workerSources[t][e]
			}
		},
		{
			key: "tileOffset",
			value: function(t, e, n) {
				this.getWorkerSource(t, e.type).tileOffset(e, n)
			}
		}]),
		t
	} ();
	t.exports = function(t) {
		return new T(t)
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(17),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(28),
	f = i(c),
	d = n(623),
	h = function() {
		function t() { (0, s.
		default)(this, t),
			this.activeSet = {}
		}
		return (0, u.
	default)(t, [{
			key: "acquire",
			value: function(t, e) {
				return this._createWorker(e),
				this.activeSet[t] = !0,
				this.workers.slice()
			}
		},
		{
			key: "_createWorker",
			value: function(t) {
				if (!this.workers) {
					this.workers = [];
					for (var e = t || this._getWorkerCount(); this.workers.length < e;) this.workers.push(new d)
				}
			}
		},
		{
			key: "_getWorkerCount",
			value: function() {
				if (f.
			default.isLowMobileDevice()) return 2;
				var t = f.
			default.isPC() ? 4 : 2;
				return 1 === f.
			default.hardwareConcurrency ? 1 : Math.min(Math.floor(f.
			default.hardwareConcurrency / 2), t)
			}
		},
		{
			key: "release",
			value: function(t) {
				delete this.activeSet[t],
				(0, r.
			default)(this.activeSet).length > 0 || this.reset()
			}
		},
		{
			key: "reset",
			value: function() {
				this.activeSet = {},
				this.workers.forEach(function(t) {
					t.terminate()
				}),
				this.workers = null
			}
		}]),
		t
	} (),
	v = new h;
	e.
default = v
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(221),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(106),
	m = i(_),
	g = n(256),
	y = i(g),
	x = n(29),
	b = n(472),
	S = i(b),
	w = n(474),
	E = i(w),
	T = n(473),
	A = i(T),
	P = n(248),
	I = ["left:0;", "top:0;", "overflow:visible;", "z-index:102;"],
	k = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this));
			return n.map = t,
			n.controls = {},
			n.createControlContainer(t),
			n
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "createControlContainer",
			value: function(t) {
				var e = t._overlayer.root;
				this.controlContainer = document.createElement("div");
				var n = this.controlContainer;
				n.style.cssText = I.join(""),
				e.appendChild(n),
				t._overlayer.childs.controlLayer = n
			}
		},
		{
			key: "addControl",
			value: function(t) {
				if (t instanceof y.
			default) {
					var e = t.id;
					this.controls[e] ? console.warn("addControl失败：id重复。") : (this.controls[e] = t, t.addTo(this.map, this.controlContainer), this._fire("control_added", {},
					!0))
				} else new x.BaseTypeError("control", "Control", t).error();
				return this
			}
		},
		{
			key: "removeControl",
			value: function(t) {
				if (this.controls[t]) {
					this.controls[t].remove(),
					delete this.controls[t],
					this._fire("control_removed", {},
					!0)
				}
				return this
			}
		},
		{
			key: "setViewMode",
			value: function(t) { (0, r.
			default)(this.controls).forEach(function(e) {
					e && e.setViewMode && e.setViewMode(t)
				})
			}
		},
		{
			key: "getControl",
			value: function(t) {
				if (this.controls[t]) return this.controls[t];
				switch (t) {
				case P.DEFAULT_CONTROL_ID.SCALE:
					return new S.
				default({
						id:
						P.DEFAULT_CONTROL_ID.SCALE,
						position: P.CONTROL_POSITION.BOTTOM_LEFT,
						center: this.map.getCenter(),
						zoom: this.map.getZoom()
					});
				case P.DEFAULT_CONTROL_ID.ZOOM:
					return new E.
				default({
						id:
						P.DEFAULT_CONTROL_ID.ZOOM,
						position: P.CONTROL_POSITION.TOP_RIGHT
					});
				case P.DEFAULT_CONTROL_ID.ROTATION:
					return new A.
				default({
						id:
						P.DEFAULT_CONTROL_ID.ROTATION,
						position: P.CONTROL_POSITION.TOP_RIGHT
					});
				default:
					return this.controls[t]
				}
			}
		},
		{
			key: "destroy",
			value: function() { (0, r.
			default)(this.controls).forEach(function(t) {
					t && t.destroy && t.destroy()
				}),
				this.controls = {},
				this.map = null
			}
		}]),
		e
	} (m.
default);
	e.
default = k
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = {
		TOP_LEFT: 0,
		TOP_CENTER: 1,
		TOP_RIGHT: 2,
		CENTER_LEFT: 3,
		CENTER: 4,
		CENTER_RIGHT: 5,
		BOTTOM_LEFT: 6,
		BOTTOM_CENTER: 7,
		BOTTOM_RIGHT: 8
	};
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(256),
	p = i(v),
	_ = n(1038),
	m = i(_),
	g = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "createDOM",
			value: function() {
				var t = document.createElement("div"),
				e = "margin-bottom: 30px; width: 230px; height:34px; background: rgba(255,255,255,0.90); z-index:200;";
				e += "border: 1px solid #DEDEDE; border-radius: 3px; padding:0 15px 0 40px; box-sizing:border-box; line-height: 32px;",
				e += "font-family: PingFangSC-Medium;font-size: 13px;color: #EF4D4D;letter-spacing: 0;",
				t.style.cssText = e,
				t.innerHTML = "鉴权失败，请传入正确的key";
				var n = document.createElement("img");
				return n.style.cssText = "width:20px; height:20px; position:absolute; top:6px; left:15px",
				n.src = m.
			default,
				t.appendChild(n),
				t
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = window.innerHeight,
		n = window.innerWidth,
		i = e > n ? n: e,
		o = "",
		r = "",
		a = 3.5 * i / 100;
		a > 71 ? (r = 3.9 / 3.5 * 71 + "px", o = "28.4px") : a < 34 ? (r = 3.9 / 3.5 * 34 + "px", o = "13.6px") : (r = "3.9vmin", o = "1.4vmin"),
		t.style.cssText = "margin-left:" + o + ";bottom:0;line-height:" + r + ";font-size:" + o + ";color:#333;font-family:Arial,sans-serif;white-space:nowrap;z-index:0;transform:rotateX(0deg)"
	}
	var r = n(3),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(5),
	d = i(f),
	h = n(4),
	v = i(h),
	p = n(256),
	_ = i(p),
	m = n(1039),
	g = i(m),
	y = n(248),
	x = y.LOGO_URL.DEFAULT_LOGO,
	b = y.LOGO_URL.GRAY_LOGO,
	S = (new Date).getFullYear(),
	w = function(t) {
		function e(t) {
			return (0, l.
		default)(this, e),
			(0, d.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t))
		}
		return (0, v.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "onInit",
			value: function(t) {
				this.hasSatellite = t.hasSatellite
			}
		},
		{
			key: "updateMapAppNum",
			value: function(t) {
				this.hasSatellite !== t && (this.hasSatellite = t, this.text.innerText = this.getTextValue())
			}
		},
		{
			key: "getMapAppNum",
			value: function() {
				return this.hasSatellite ? y.MAP_APPROVAL_NUMBER.satellite: y.MAP_APPROVAL_NUMBER.vector
			}
		},
		{
			key: "getTextValue",
			value: function() {
				return "©" + S + " Tencent - " + this.getMapAppNum() + "号 - Data© NavInfo"
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.style,
				n = void 0 === e ? "default": e;
				return this._createPlatformDom(n)
			}
		},
		{
			key: "_createPlatformDom",
			value: function(t) {
				var e = document.createElement("div");
				e.style.cssText = "margin:1px;display:flex;align-items:center";
				var n = document.createElement("a");
				n.style.cssText = "z-index:1;",
				n.href = "http://map.qq.com?ref=jsapi_v3",
				n.target = "_blank",
				n.style.cssText = "max-height:22px;max-width:150px;transform:rotateX(0deg)",
				e.appendChild(n);
				var i = document.createElement("div");
				return i.className = "logo-text",
				i.style.cssText = "padding-left:5px;font-size:10px;color:#333;font-family:Arial,sans-serif;white-space:nowrap;z-index:0;transform:rotateX(0deg)",
				i.innerText = this.getTextValue(),
				e.appendChild(i),
				this.text = i,
				this.logoImg = new Image,
				this.logoImg.src = "gray" === t ? b: x,
				this.logoImg.style.cssText = "max-height:22px;max-width:150px;",
				n.appendChild(this.logoImg),
				e
			}
		},
		{
			key: "_createVisDom",
			value: function() {
				var t = document.createElement("div");
				t.style.cssText = "overflow:visible;margin:1px;margin-top:1vmin;display:flex;";
				var e = document.createElement("a");
				e.style.cssText = "z-index:1;",
				e.target = "_blank",
				e.style.cssText = "transform:rotateX(0deg);",
				t.appendChild(e);
				var n = document.createElement("div");
				n.className = "logo-text",
				n.style.cssText = "display:none;",
				n.innerText = this.getTextValue(),
				t.appendChild(n),
				this.text = n;
				var i = new Image;
				return i.src = g.
			default,
				i.style.marginBottom = "-500px",
				e.appendChild(i),
				i.onload = function() {
					i.style.height = "3.5vmin",
					i.style.maxHeight = "71px",
					i.style.minHeight = "34px",
					i.style.width = "10.5vmin",
					i.style.maxWidth = "210px",
					i.style.minWidth = "100px",
					i.style.imageRendering = "-webkit-optimize-contrast",
					i.style.marginBottom = "0px",
					window.addEventListener("resize",
					function() {
						return o(n)
					}),
					o(n)
				},
				t
			}
		},
		{
			key: "changeLogoUrl",
			value: function(t) {
				t && this.logoImg && this.logoImg.src !== t && (this.logoImg.src = t)
			}
		}]),
		e
	} (_.
default);
	t.exports = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(32),
	r = i(o),
	a = n(27),
	s = i(a),
	l = n(148),
	u = i(l),
	c = n(3),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(5),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(256),
	b = i(x),
	S = n(297),
	w = n(633),
	E = n(632),
	T = n(28),
	A = n(210),
	P = n(1026),
	I = n(1037),
	k = n(1036);
	n(1030);
	var L = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
			if ((0, h.
		default)(this, e), !t.floorList || !t.buildingId) return console.error("楼层参数不合法!", t),
			(0, m.
		default)(n);
			var n = (0, m.
		default)(this, (e.__proto__ || (0, f.
		default)(e)).call(this, t));
			return n._construct(),
			n
		}
		return (0, y.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "onInit",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				n = e.buildingId,
				i = e.selectedFloor,
				o = e.floorList;
				this.buildingId = n,
				this.floorMap = new u.
			default,
				this.floors = [],
				o.map(function(e, n) {
					t.floorMap.set(e.name, String(n)),
					t.floors.push(e.name)
				}),
				this.list = null,
				this.selectedFloorIdx = this.floorMap.get(i),
				this._floorIndex = this._getFloorIndex(this.selectedFloorIdx)
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = (0, S.Template)(P, {
					floors: this.floors
				}),
				e = (0, A.toDom)(t),
				n = document.createElement("div");
				return n.appendChild(e.querySelector(".floor-control")),
				n
			}
		},
		{
			key: "_construct",
			value: function() {
				var t = this;
				this.wrapperNode = this.dom.querySelector(".floor-control-wrapper"),
				this.list = this.dom.querySelector(".floor-control-list"),
				this.arrTopImg = this.dom.querySelector(".arr-top"),
				this.arrBottomImg = this.dom.querySelector(".arr-bottom"),
				this.arrTopImg.src = I,
				this.arrBottomImg.src = k,
				(0, w.Transform)(this.list),
				this.floorListScroll = new E.Scroll({
					touch: this.wrapperNode,
					vertical: !0,
					target: this.list,
					property: "translateY",
					bindSelf: !0,
					maxSpeed: 2,
					outFactor: .2,
					min: -40 * Math.max(this.floors.length - 4, 0),
					max: 0,
					lockDirection: !1,
					maxRegion: 10,
					springMaxRegion: 1,
					touchStart: function() {
						t.floorListScroll.min = -40 * Math.max(t.floors.length - 4, 0)
					}
				}),
				this._bindEvents(),
				"number" == typeof this._floorIndex && this._floorIndex > -1 && this._updateSelectedFloor(this._floorIndex, !0)
			}
		},
		{
			key: "setFreezing",
			value: function(t) {
				t ? (0, A.addClass)(this.wrapperNode, "freezing") : (0, A.removeClass)(this.wrapperNode, "freezing")
			}
		},
		{
			key: "selectFloor",
			value: function(t, e) {
				var n = this.floorMap.get(t),
				i = this._getFloorIndex(n);
				i > -1 ? this._updateSelectedFloor(i, !1, e) : console.error("楼层不存在!", n)
			}
		},
		{
			key: "_bindEvents",
			value: function() {
				var t = this,
				e = this._bindClick();
				if ((0, T.isPC)()) {
					e.remove();
					var n = {},
					i = {}; (0, T.on)(this.list, "mousedown",
					function(t) {
						n = (0, A.getPointerXY)(t)
					}),
					(0, T.on)(this.list, "mouseup",
					function(e) {
						if (i = (0, A.getPointerXY)(e), Math.abs(i.y - n.y) <= 2 && Math.abs(i.x - n.x) <= 2) {
							if ((0, A.hasClass)(t.wrapperNode, "freezing")) return ! 0;
							var o = e.target.getAttribute("data-floor");
							t.selectFloor(o)
						}
					})
				}
			}
		},
		{
			key: "_bindClick",
			value: function() {
				var t = this;
				return (0, T.on)(this.list, ".floor-control-item:click",
				function(e) {
					if ((0, A.hasClass)(t.wrapperNode, "freezing")) return ! 0;
					var n = e.selectorTarget.getAttribute("data-floor");
					t.selectFloor(n)
				})
			}
		},
		{
			key: "getFloorName",
			value: function(t) {
				var e = t.toString(),
				n = !0,
				i = !1,
				o = void 0;
				try {
					for (var a, l = (0, s.
				default)(this.floorMap.entries()); ! (n = (a = l.next()).done); n = !0) {
						var u = (0, r.
					default)(a.value, 2),
						c = u[0];
						if (u[1] === e) return c
					}
				} catch(t) {
					i = !0,
					o = t
				} finally {
					try { ! n && l.
						return && l.
						return ()
					} finally {
						if (i) throw o
					}
				}
			}
		},
		{
			key: "_getFloorIndex",
			value: function(t) {
				var e = this.getFloorName(t);
				return this.floors.indexOf(e)
			}
		},
		{
			key: "_getFloorItem",
			value: function(t) {
				return this.dom.querySelector('.floor-control-item[data-index="' + t + '"]')
			}
		},
		{
			key: "_addSelected",
			value: function(t) { (0, A.addClass)(t, "selected-item"),
				3 === t.innerHTML.length ? t.style.fontSize = "13px": 4 === t.innerHTML.length ? t.style.fontSize = "10px": t.innerHTML.length > 4 && (t.style.fontSize = "8px")
			}
		},
		{
			key: "_removeSelected",
			value: function(t) { (0, A.removeClass)(t, "selected-item"),
				t.style.fontSize = ""
			}
		},
		{
			key: "_updateSelectedFloor",
			value: function(t, e, n) {
				var i = this,
				o = this._getFloorItem(this._floorIndex),
				r = this._getFloorItem(t);
				if (this._removeSelected(o), this._addSelected(r), this.floorListScroll) {
					var a = this.floorListScroll.getComputedPosition(),
					s = Math.floor((this.floorListScroll.max - a) / 40); [0, 1, 2, 3].map(function(t) {
						return t + s
					}).includes(t) || this.floorListScroll.to(Math.min(this.floorListScroll.max, Math.max( - 40 * (t - 2), this.floorListScroll.min)), 200)
				}
				if (e || t !== this._floorIndex) {
					this._floorIndex = t;
					var l = parseInt(this.floorMap.get(this.floors[t]), 10),
					u = l > this.selectedFloorIdx;
					this.selectedFloorIdx = l,
					n || setTimeout(function() {
						i.emit("floor-change", {
							floorIdx: i.selectedFloorIdx,
							floorName: i.floors[i.selectedFloorIdx],
							upper: u
						})
					},
					0)
				}
			}
		},
		{
			key: "show",
			value: function() {
				this.dom.style.display = "block"
			}
		},
		{
			key: "hide",
			value: function() {
				this.dom.style.display = "none"
			}
		},
		{
			key: "changeBottom",
			value: function(t) {
				if (isNaN(t)) return void console.error("top需要传数字");
				this.dom.style.bottom = t + "px"
			}
		}]),
		e
	} (b.
default);
	e.
default = L
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return 1 - Math.sqrt(1 - t * t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Scroll = void 0;
	var r = n(0),
	a = i(r),
	s = n(1),
	l = i(s),
	u = n(28),
	c = n(210),
	f = "cubic-bezier(0.1, 0.57, 0.1, 1)";
	e.Scroll = function() {
		function t(e) { (0, a.
		default)(this, t),
			this.element = "string" == typeof e.touch ? document.querySelector(e.touch) : e.touch,
			this.scroller = this._getValue(e.target, this.element),
			this.vertical = this._getValue(e.vertical, !0),
			this.property = e.property,
			this.sensitivity = this._getValue(e.sensitivity, 1),
			this.lockDirection = this._getValue(e.lockDirection, !0),
			this.tickID = 0,
			this.handlers = [],
			this.initialValue = this._getValue(e.initialValue, this.scroller[this.property]),
			this.scroller[this.property] = this.initialValue,
			this.moveFactor = this._getValue(e.moveFactor, 1),
			this.factor = this._getValue(e.factor, 1),
			this.outFactor = this._getValue(e.outFactor, .3),
			this.min = e.min,
			this.max = e.max,
			this.maxRegion = this._getValue(e.maxRegion, 600),
			this.deceleration = 6e-4,
			this.springMaxRegion = this._getValue(e.springMaxRegion, 60),
			this.fixed = this._getValue(e.fixed, !1);
			var n = function() {};
			if (this.change = e.change || n, this.touchEnd = e.touchEnd || n, this.touchStart = e.touchStart || n, this.touchMove = e.touchMove || n, this.touchCancel = e.touchCancel || n, this.animationEnd = e.animationEnd || n, this.hasMin = !(void 0 === this.min), this.hasMax = !(void 0 === this.max), this.isTouchStart = !1, this.step = e.step, this.inertia = this._getValue(e.inertia, !0), this.maxSpeed = e.maxSpeed, this.hasMaxSpeed = !(void 0 === this.maxSpeed), this.hasMax && this.hasMin) {
				if (this.min > this.max) throw "min value can't be greater than max value";
				this.currentPage = Math.round((this.max - this.scroller[this.property]) / this.step)
			}
			this.preventDefault = this._getValue(e.preventDefault, !0),
			this.eventTarget = self,
			e.bindSelf && (this.eventTarget = this.element),
			this.bindEvents(),
			this._endCallbackTag = !0,
			this._endTimeout = null
		}
		return (0, l.
	default)(t, [{
			key: "bindEvents",
			value: function() {
				var t = this; (0, u.isPC)() ? (this.handlers.push((0, u.on)(this.eventTarget, "mousedown",
				function(e) {
					t._start(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "mouseup",
				function(e) {
					t._end(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "mouseleave",
				function(e) {
					t._end(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "mousemove",
				function(e) {
					t._move(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "click",
				function(t) {
					t.stopPropagation()
				}))) : (this.handlers.push((0, u.on)(this.eventTarget, "touchstart",
				function(e) {
					t._start(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "touchend",
				function(e) {
					t._end(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "touchcancel",
				function(e) {
					t._cancel(e)
				})), this.handlers.push((0, u.on)(this.eventTarget, "touchmove",
				function(e) {
					t._move(e)
				}))),
				this.handlers.push((0, u.on)(this.scroller, c.TRANSITIONEND,
				function(e) {
					t._transitionEnd(e)
				}))
			}
		},
		{
			key: "_getValue",
			value: function(t, e) {
				return void 0 === t ? e: t
			}
		},
		{
			key: "_transitionEnd",
			value: function() {
				var t = this;
				if (this._triggerTransitionEnd) {
					var e = this.scroller[this.property];
					return e < this.min ? void this.to(this.min, 600, f) : e > this.max ? void this.to(this.max, 600, f) : void(this.step ? (this._correction(), this._endCallbackTag && (this._endCallbackTag = setTimeout(function() {
						t.animationEnd(e),
						(0, u.cancelFrame)(t.tickID)
					},
					400), this._endCallbackTag = !1)) : (this.animationEnd(e), (0, u.cancelFrame)(this.tickID)))
				}
			}
		},
		{
			key: "_cancelAnimation",
			value: function() {
				this.scroller.style[c.TRANSITIONDURATION] = "0ms",
				this.scroller[this.property] = this.getComputedPosition()
			}
		},
		{
			key: "getComputedPosition",
			value: function() {
				var t = self.getComputedStyle(this.scroller, null);
				return t = t[c.TRANSFORM].split(")")[0].split(", "),
				this.vertical ? +(t[13] || t[5]) : +(t[12] || t[4])
			}
		},
		{
			key: "_tick",
			value: function() {
				this.change(this.getComputedPosition()),
				this.tickID = (0, u.frame)(this._tick.bind(this))
			}
		},
		{
			key: "_start",
			value: function(t) { (0, u.cancelFrame)(this.tickID),
				this._endCallbackTag = !0,
				this.isTouchStart = !0,
				this._firstTouchMove = !0,
				this._preventMove = !1,
				this.touchStart(t, this.scroller[this.property]),
				this._cancelAnimation(),
				clearTimeout(this._endTimeout),
				this.hasMax && this.hasMin && (this.currentPage = Math.round((this.max - this.scroller[this.property]) / this.step)),
				this.startTime = (new Date).getTime();
				var e = (0, c.getPointerXY)(t);
				this.preX = e.x,
				this._startX = this.preX,
				this.preY = e.y,
				this._startY = this.preY,
				this.start = this.vertical ? this.preY: this.preX,
				t.stopPropagation()
			}
		},
		{
			key: "_move",
			value: function(t) {
				console.log(56446)
				if (this.isTouchStart) {
					var e = (0, c.getPointerXY)(t),
					n = Math.abs(e.x - this._startX),
					i = Math.abs(e.y - this._startY);
					if (this._firstTouchMove && this.lockDirection) {
						var o = n - i;
						o > 0 && this.vertical ? this._preventMove = !0 : o < 0 && !this.vertical && (this._preventMove = !0),
						this._firstTouchMove = !1
					}
					if (n < 10 && i < 10) return;
					if (!this._preventMove) {
						var r = this.moveFactor,
						a = (this.vertical ? e.y - this.preY: e.x - this.preX) * this.sensitivity;
						this.hasMax && this.scroller[this.property] > this.max && a > 0 ? r = this.outFactor: this.hasMin && this.scroller[this.property] < this.min && a < 0 && (r = this.outFactor),
						a *= r,
						this.preX = e.x,
						this.preY = e.y,
						this.scroller[this.property] += a;
						var s = (new Date).getTime();
						s - this.startTime > 300 && (this.startTime = s, this.start = this.vertical ? this.preY: this.preX),
						this.touchMove(t, this.scroller[this.property])
					}
					this.preventDefault && t.cancelable && t.preventDefault(),
					t.stopPropagation()
				}
			}
		},
		{
			key: "_end",
			value: function(t) {
				console.log(56446)
				if (this.isTouchStart) {
					var e = this.scroller[this.property],
					n = (0, c.getPointerXY)(t);
					if ((n.x - this._startX >= 2 || n.y - this._startY >= 2) && (0, u.isPC)(), !1 === this.touchEnd(t, e)) return void(this._triggerTransitionEnd = !1);
					if (this._triggerTransitionEnd = !0, this.hasMax && e > this.max) this.to(this.max, 600, f);
					else if (this.hasMin && e < this.min) this.to(this.min, 600, f);
					else if (this.inertia && !this._preventMove) {
						var i = (new Date).getTime() - this.startTime;
						if (i < 300) {
							var r = ((this.vertical ? n.y: n.x) - this.start) * this.sensitivity,
							a = Math.abs(r) / i,
							s = this.factor * a;
							this.hasMaxSpeed && s > this.maxSpeed && (s = this.maxSpeed);
							var l = e + s * s / (2 * this.deceleration) * (r < 0 ? -1 : 1),
							d = 1;
							l < this.min ? l < this.min - this.maxRegion ? (d = o((e - this.min + this.springMaxRegion) / (e - l)), l = this.min - this.springMaxRegion) : (d = o((e - this.min + this.springMaxRegion * (this.min - l) / this.maxRegion) / (e - l)), l = this.min - this.springMaxRegion * (this.min - l) / this.maxRegion) : l > this.max && (l > this.max + this.maxRegion ? (d = o((this.max + this.springMaxRegion - e) / (l - e)), l = this.max + this.springMaxRegion) : (d = o((this.max + this.springMaxRegion * (l - this.max) / this.maxRegion - e) / (l - e)), l = this.max + this.springMaxRegion * (l - this.max) / this.maxRegion));
							var h = Math.round(a / this.deceleration) * d;
							this.to(Math.round(l), h, f)
						} else this.step && this._correction()
					} else this.step && this._correction();
					this.isTouchStart = !1,
					t.stopPropagation()
				}
			}
		},
		{
			key: "_cancel",
			value: function(t) { (0, u.cancelFrame)(this.tickID),
				this.step && this._correction(),
				this.touchCancel(t)
			}
		},
		{
			key: "goMin",
			value: function(t) {
				var e = this.scroller[this.property]; (t || this.hasMin && e < this.min) && this.to(this.min, 200, f)
			}
		},
		{
			key: "goMax",
			value: function(t) {
				var e = this.scroller[this.property]; (t || this.hasMax && e > this.max) && this.to(this.max, 200, f)
			}
		},
		{
			key: "to",
			value: function(t, e, n) {
				var i = this.scroller,
				o = this.property;
				i.style[c.TRANSITIONDURATION] = this._getValue(e, 600) + "ms",
				i.style[c.TRANSITIONTIMINGFUNCTION] = n || f,
				i[o] = t
			}
		},
		{
			key: "_correction",
			value: function() {
				var t = self.getComputedStyle(this.scroller)[c.TRANSFORM],
				e = this.vertical ? parseInt(t.split(",")[13]) : parseInt(t.split(",")[12]),
				n = Math.floor(Math.abs(e / this.step)),
				i = e % this.step,
				o = void 0;
				Math.abs(i) > this.step / 2 ? (o = (e < 0 ? -1 : 1) * (n + 1) * this.step, o > this.max && (o = this.max), o < this.min && (o = this.min), this.to(o, 400, f)) : (o = (e < 0 ? -1 : 1) * n * this.step, o > this.max && (o = this.max), o < this.min && (o = this.min), this.to(o, 400, f))
			}
		},
		{
			key: "destroy",
			value: function() {
				this.handlers.forEach(function(t) {
					t && t.remove && t.remove()
				})
			}
		}]),
		t
	} ()
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		for (var i = 0,
		o = e.length; i < o; i++) {
			r(t, e[i], n)
		}
	}
	function r(t, e, n) { (0, f.
	default)(t, e, {
			get: function() {
				return this["_" + e]
			},
			set: function(t) {
				this["_" + e] = t,
				n()
			}
		})
	}
	function a(t) {
		return "object" === ("undefined" == typeof HTMLElement ? "undefined": (0, u.
	default)(HTMLElement)) ? t instanceof HTMLElement: t && "object" === (void 0 === t ? "undefined": (0, u.
	default)(t)) && null !== t && 1 === t.nodeType && "string" == typeof t.nodeName
	}
	function s(t, e) {
		if (!t.hasOwnProperty("translateX")) {
			var n = ["translateX", "translateY", "translateZ", "scaleX", "scaleY", "scaleZ", "rotateX", "rotateY", "rotateZ", "skewX", "skewY", "originX", "originY", "originZ"],
			i = a(t);
			e || n.push("perspective"),
			o(t, n,
			function() {
				var n = t.matrix3d.identity().appendTransform(t.translateX, t.translateY, t.translateZ, t.scaleX, t.scaleY, t.scaleZ, t.rotateX, t.rotateY, t.rotateZ, t.skewX, t.skewY, t.originX, t.originY, t.originZ),
				o = (e ? "": "perspective(" + t.perspective + "px) ") + "matrix3d(" + Array.prototype.slice.call(n.elements).join(",") + ")";
				i ? (t.style.transform = o, t.style.msTransform = o, t.style.OTransform = o, t.style.MozTransform = o, t.style.webkitTransform = o) : t.transform = o
			}),
			t.matrix3d = new h,
			e || (t.perspective = 500),
			t.scaleX = 1,
			t.scaleY = 1,
			t.scaleZ = 1,
			t.translateX = 0,
			t.translateY = 0,
			t.translateZ = 0,
			t.rotateX = 0,
			t.rotateY = 0,
			t.rotateZ = 0,
			t.skewX = 0,
			t.skewY = 0,
			t.originX = 0,
			t.originY = 0,
			t.originZ = 0
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Transform = void 0;
	var l = n(20),
	u = i(l),
	c = n(75),
	f = i(c),
	d = .017453292519943295,
	h = function(t, e, n, i, o, r, a, s, l, u, c, f, d, h, v, p) {
		this.elements = window.Float32Array ? new Float32Array(16) : [];
		var _ = this.elements;
		_[0] = void 0 !== t ? t: 1,
		_[4] = e || 0,
		_[8] = n || 0,
		_[12] = i || 0,
		_[1] = o || 0,
		_[5] = void 0 !== r ? r: 1,
		_[9] = a || 0,
		_[13] = s || 0,
		_[2] = l || 0,
		_[6] = u || 0,
		_[10] = void 0 !== c ? c: 1,
		_[14] = f || 0,
		_[3] = d || 0,
		_[7] = h || 0,
		_[11] = v || 0,
		_[15] = void 0 !== p ? p: 1
	};
	h.prototype = {
		set: function(t, e, n, i, o, r, a, s, l, u, c, f, d, h, v, p) {
			var _ = this.elements;
			return _[0] = t,
			_[4] = e,
			_[8] = n,
			_[12] = i,
			_[1] = o,
			_[5] = r,
			_[9] = a,
			_[13] = s,
			_[2] = l,
			_[6] = u,
			_[10] = c,
			_[14] = f,
			_[3] = d,
			_[7] = h,
			_[11] = v,
			_[15] = p,
			this
		},
		identity: function() {
			return this.set(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1),
			this
		},
		multiplyMatrices: function(t, e) {
			var n = t.elements,
			i = this.elements,
			o = n[0],
			r = n[4],
			a = n[8],
			s = n[12],
			l = n[1],
			u = n[5],
			c = n[9],
			f = n[13],
			d = n[2],
			h = n[6],
			v = n[10],
			p = n[14],
			_ = n[3],
			m = n[7],
			g = n[11],
			y = n[15],
			x = e[0],
			b = e[1],
			S = e[2],
			w = e[3],
			E = e[4],
			T = e[5],
			A = e[6],
			P = e[7],
			I = e[8],
			k = e[9],
			L = e[10],
			M = e[11],
			C = e[12],
			R = e[13],
			B = e[14],
			N = e[15];
			return i[0] = o * x + r * E + a * I + s * C,
			i[4] = o * b + r * T + a * k + s * R,
			i[8] = o * S + r * A + a * L + s * B,
			i[12] = o * w + r * P + a * M + s * N,
			i[1] = l * x + u * E + c * I + f * C,
			i[5] = l * b + u * T + c * k + f * R,
			i[9] = l * S + u * A + c * L + f * B,
			i[13] = l * w + u * P + c * M + f * N,
			i[2] = d * x + h * E + v * I + p * C,
			i[6] = d * b + h * T + v * k + p * R,
			i[10] = d * S + h * A + v * L + p * B,
			i[14] = d * w + h * P + v * M + p * N,
			i[3] = _ * x + m * E + g * I + y * C,
			i[7] = _ * b + m * T + g * k + y * R,
			i[11] = _ * S + m * A + g * L + y * B,
			i[15] = _ * w + m * P + g * M + y * N,
			this
		},
		_rounded: function(t, e) {
			return e = Math.pow(10, e || 15),
			Math.round(t * e) / e
		},
		_arrayWrap: function(t) {
			return self.Float32Array ? new Float32Array(t) : t
		},
		appendTransform: function(t, e, n, i, o, r, a, s, l, u, c, f, h, v) {
			var p = a * d,
			_ = this._rounded(Math.cos(p)),
			m = this._rounded(Math.sin(p)),
			g = s * d,
			y = this._rounded(Math.cos(g)),
			x = this._rounded(Math.sin(g)),
			b = l * d,
			S = this._rounded(Math.cos( - 1 * b)),
			w = this._rounded(Math.sin( - 1 * b));
			return this.multiplyMatrices(this, this._arrayWrap([1, 0, 0, t, 0, _, m, e, 0, -m, _, n, 0, 0, 0, 1])),
			this.multiplyMatrices(this, this._arrayWrap([y, 0, x, 0, 0, 1, 0, 0, -x, 0, y, 0, 0, 0, 0, 1])),
			this.multiplyMatrices(this, this._arrayWrap([S * i, w * o, 0, 0, -w * i, S * o, 0, 0, 0, 0, 1 * r, 0, 0, 0, 0, 1])),
			(u || c) && this.multiplyMatrices(this, this._arrayWrap([this._rounded(Math.cos(u * d)), this._rounded(Math.sin(u * d)), 0, 0, -1 * this._rounded(Math.sin(c * d)), this._rounded(Math.cos(c * d)), 0, 0, 0, 0, 1, 0, 0, 0, 0, 1])),
			(f || h || v) && (this.elements[12] -= f * this.elements[0] + h * this.elements[4] + v * this.elements[8], this.elements[13] -= f * this.elements[1] + h * this.elements[5] + v * this.elements[9], this.elements[14] -= f * this.elements[2] + h * this.elements[6] + v * this.elements[10]),
			this
		}
	};
	var v = function(t, e, n, i, o, r) {
		return this.a = null === t ? 1 : t,
		this.b = e || 0,
		this.c = n || 0,
		this.d = null === i ? 1 : i,
		this.tx = o || 0,
		this.ty = r || 0,
		this
	};
	v.prototype = {
		identity: function() {
			return this.a = 1,
			this.d = 1,
			this.b = 0,
			this.c = 0,
			this.tx = 0,
			this.ty = 0,
			this
		},
		appendTransform: function(t, e, n, i, o, r, a, s, l) {
			var u = void 0,
			c = void 0;
			if (o % 360) {
				var f = o * d;
				u = Math.cos(f),
				c = Math.sin(f)
			} else u = 1,
			c = 0;
			return r || a ? (r *= d, a *= d, this.append(Math.cos(a), Math.sin(a), -Math.sin(r), Math.cos(r), t, e), this.append(u * n, c * n, -c * i, u * i, 0, 0)) : this.append(u * n, c * n, -c * i, u * i, t, e),
			(s || l) && (this.tx -= s * this.a + l * this.c, this.ty -= s * this.b + l * this.d),
			this
		},
		append: function(t, e, n, i, o, r) {
			var a = this.a,
			s = this.b,
			l = this.c,
			u = this.d;
			return this.a = t * a + e * l,
			this.b = t * s + e * u,
			this.c = n * a + i * l,
			this.d = n * s + i * u,
			this.tx = o * a + r * l + this.tx,
			this.ty = o * s + r * u + this.ty,
			this
		},
		initialize: function(t, e, n, i, o, r) {
			return this.a = t,
			this.b = e,
			this.c = n,
			this.d = i,
			this.tx = o,
			this.ty = r,
			this
		},
		setValues: function(t, e, n, i, o, r) {
			return this.a = null === t ? 1 : t,
			this.b = e || 0,
			this.c = n || 0,
			this.d = null === i ? 1 : i,
			this.tx = o || 0,
			this.ty = r || 0,
			this
		},
		copy: function(t) {
			return this.setValues(t.a, t.b, t.c, t.d, t.tx, t.ty)
		}
	},
	s.getMatrix3D = function(t) {
		var e = {
			translateX: 0,
			translateY: 0,
			translateZ: 0,
			rotateX: 0,
			rotateY: 0,
			rotateZ: 0,
			skewX: 0,
			skewY: 0,
			originX: 0,
			originY: 0,
			originZ: 0,
			scaleX: 1,
			scaleY: 1,
			scaleZ: 1
		};
		for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
		return (new h).identity().appendTransform(e.translateX, e.translateY, e.translateZ, e.scaleX, e.scaleY, e.scaleZ, e.rotateX, e.rotateY, e.rotateZ, e.skewX, e.skewY, e.originX, e.originY, e.originZ).elements
	},
	s.getMatrix2D = function(t) {
		var e = {
			translateX: 0,
			translateY: 0,
			rotation: 0,
			skewX: 0,
			skewY: 0,
			originX: 0,
			originY: 0,
			scaleX: 1,
			scaleY: 1
		};
		for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]);
		return (new v).identity().appendTransform(e.translateX, e.translateY, e.scaleX, e.scaleY, e.rotation, e.skewX, e.skewY, e.originX, e.originY)
	};
	var p = s;
	e.Transform = p
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i, o) {
		var r = (e[1] - t[1]) * (n[2] - t[2]) - (e[2] - t[2]) * (n[1] - t[1]),
		a = (e[2] - t[2]) * (n[0] - t[0]) - (e[0] - t[0]) * (n[2] - t[2]),
		s = (e[0] - t[0]) * (n[1] - t[1]) - (e[1] - t[1]) * (n[0] - t[0]),
		l = Math.max(Math.abs(r), Math.abs(a), Math.abs(s));
		if (i > 0 && l > 0) {
			var u = i / l;
			r *= u,
			a *= u,
			s *= u
		}
		return o = o || 0,
		r += o,
		a += o,
		s += o,
		[~~r, ~~a, ~~s]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = i
},
function(t, e, n) {
	"use strict";
	n(464);
	var i = n(105),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i),
	r = n(43),
	a = n(56),
	s = window[a] || (window[a] = {}),
	l = n(559),
	u = n(463),
	c = o.
default.key,
	f = o.
default.version,
	d = o.
default.loadScriptTime;
	for (var h in l) l.hasOwnProperty(h) && (s[h] = l[h]);
	s.Handler = u;
	var v = +new Date; (0, r.pv)({
		key: c,
		version: f,
		loadDeltaTime: v - d
	}),
	location.protocol.indexOf("file") > -1 && console.error("腾讯地图 JavaScript API 不支持在file协议使用，请在http或https协议下使用！"),
	t.exports = s
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	r = i(o),
	a = n(16),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(106),
	y = i(g),
	x = n(47),
	b = i(x),
	S = n(209),
	w = i(S),
	E = n(665),
	T = i(E),
	A = n(66),
	P = n(90),
	I = function(t) {
		function e(t, n) { (0, f.
		default)(this, e);
			var i = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this));
			return i._buildingId = t,
			i._cityId = t.substring(0, 6),
			i._map = n.map,
			i._id = "indoor_bulding_" + i._buildingId,
			i._manager = n.manager,
			i._buildingInfo = null,
			i._buildingBounds = null,
			i._isActiveStatus = !1,
			i._destroyed = !1,
			i._createLayer(n),
			i
		}
		return (0, m.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "isActive",
			value: function() {
				return this._isActiveStatus
			}
		},
		{
			key: "_setActiveStatus",
			value: function(t) {
				this._isActiveStatus = t
			}
		},
		{
			key: "_createLayer",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this._sourceId = this._id,
				this._map.addSource(this._sourceId, {
					type: P.SOURCE_TYPE.indoor,
					data: {
						buildingId: this._buildingId,
						cityId: this._cityId,
						indoorStyleId: e.indoorStyleId
					}
				}),
				this._regionLayer = new T.
			default((0, s.
			default)(e, {
					map: this._map,
					id: this._id + "_region",
					sourceId: this._sourceId,
					type: A.RENDER_LAYER_TYPE.indoorRegion
				})),
				this._poiLayer = new T.
			default((0, s.
			default)(e, {
					map: this._map,
					id: this._id + "_poi",
					sourceId: this._sourceId,
					type: A.RENDER_LAYER_TYPE.indoorPoi
				})),
				this._escalatorLayer = new T.
			default((0, s.
			default)(e, {
					map: this._map,
					id: this._id + "_escalator",
					sourceId: this._sourceId,
					type: A.RENDER_LAYER_TYPE.indoorEscalator
				})),
				this._map.getSource(this._sourceId).on("loaded",
				function() {
					t._destroyed || t.getManager().emit("building_source_loaded")
				})
			}
		},
		{
			key: "_setVisible",
			value: function(t) {
				if (t !== this._visible) {
					this._regionLayer.setVisible(t),
					this._poiLayer.setVisible(t),
					this._escalatorLayer.setVisible(t),
					this._visible = t;
					var e = t ? "show": "hide";
					this.emit(e)
				}
			}
		},
		{
			key: "getVisible",
			value: function() {
				return this._visible
			}
		},
		{
			key: "setSelectedFloor",
			value: function(t) {
				if (this.isActive()) {
					var e = this.getSelectedFloor();
					if (this._map && e !== t) {
						this._map.getSource(this._sourceId).setSelectedFloor(t) < 0 ? console.warn("该室内建筑物无对应楼层: ", t) : this.emit("floor_changed")
					}
				} else console.warn("该室内建筑物处于非激活状态，该方法无效!");
				return this
			}
		},
		{
			key: "getMap",
			value: function() {
				return this._map
			}
		},
		{
			key: "getManager",
			value: function() {
				return this._manager
			}
		},
		{
			key: "getSelectedFloor",
			value: function() {
				if (this._map) return this._map.getSource(this._sourceId).getSelectedFloor()
			}
		},
		{
			key: "getBuildingInfo",
			value: function() {
				if (this._buildingInfo) return this._buildingInfo;
				var t = this._map && this._map.getSource(this._sourceId),
				e = t && t.getMetaData();
				return e && (this._buildingInfo = this._formatBuildingInfo(e)),
				this._buildingInfo
			}
		},
		{
			key: "getBuildingInfoAsync",
			value: function() {
				var t = this;
				return new r.
			default(function(e) {
					t._buildingInfo && e(t._buildingInfo);
					var n = t._map && t._map.getSource(t._sourceId),
					i = n && n.getMetaData();
					i ? (t._buildingInfo = t._formatBuildingInfo(i), e(t._buildingInfo)) : n.once("loaded",
					function() {
						t._destroyed || (t._buildingInfo = t._formatBuildingInfo(n.getMetaData()), e(t._buildingInfo))
					})
				})
			}
		},
		{
			key: "_formatBuildingInfo",
			value: function(t) {
				var e = t.floorInfo.bounds[0],
				n = t.floorInfo.bounds[1],
				i = new b.
			default(e.lat, e.lng),
				o = new b.
			default(n.lat, n.lng),
				r = new w.
			default(i, o);
				return this._buildingBounds = r,
				{
					cityId: this._cityId,
					buildingId: this._buildingId,
					buildingName: t.buildingName,
					defaultFloor: t.floorInfo.floorStrArr[t.floorInfo.defaultNum],
					center: new b.
				default(t.center.lat, t.center.lng),
					floorList: t.floorInfo.floorStrArr.map(function(t) {
						return {
							name: t,
							bounds: r
						}
					}),
					bounds: r
				}
			}
		},
		{
			key: "destroy",
			value: function() {
				this._regionLayer = null,
				this._poiLayer = null,
				this._escalatorLayer = null,
				this._buildingId = null,
				this._cityId = null,
				this._map = null,
				this._id = null,
				this._manager = null,
				this._buildingInfo = null,
				this._buildingBounds = null,
				this._isActiveStatus = !1,
				this._destroyed = !0
			}
		},
		{
			key: "buildingId",
			get: function() {
				return this._buildingId
			}
		}]),
		e
	} (y.
default);
	e.
default = I
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = t.getActiveIndoorBuilding();
		if (e !== n) {
			if (n && (n._setActiveStatus(!1), n.off("floor_changed", t._onActiveIndoorBuildingFloorChange)), e && (e._setActiveStatus(!0), e.on("floor_changed", t._onActiveIndoorBuildingFloorChange)), e) {
				var i = e.getSelectedFloor(),
				o = e.buildingId;
				t._map.indoorStateChange({
					floorName: i,
					buildingId: o
				},
				null)
			} else t._map.indoorStateChange(null, !!e);
			t._activeIndoorBuilding = e,
			t._updateFloorControl().then(function() {
				t.emit("active_changed", t._activeIndoorBuilding)
			})
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(25),
	a = i(r),
	s = n(16),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(23),
	x = i(y),
	b = n(106),
	S = i(b),
	w = n(294),
	E = n(28),
	T = i(E),
	A = n(10),
	P = n(636),
	I = i(P),
	k = n(631),
	L = i(k),
	M = n(628),
	C = i(M),
	R = n(385),
	B = n(332),
	N = n(248),
	O = n(638),
	D = i(O),
	z = n(90),
	F = {
		map: null,
		visible: !0,
		minZoom: x.
	default.minShowIndoorZoom,
		maxZoom: x.
	default.maxZoom
	},
	V = 0,
	Y = 100,
	U = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, d.
		default)(this, e);
			var n = (0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this)),
			i = (0, l.
		default)({},
			F, t);
			return n._options = i,
			n._map = i.map,
			n._visible = i.visible,
			n._minZoom = i.minZoom,
			n._maxZoom = i.maxZoom,
			n._indexSource = null,
			n._indoorBuildingList = [],
			n._indoorBuildingIds = [],
			n._userBuildingIdList = null,
			n._autoActive = !0,
			n._activeIndoorBuilding = null,
			n._floorControl = null,
			n._initialized = !1,
			n._isFloorControlVisible = !0,
			n._indoorStyleId = V,
			n._onActiveIndoorBuildingFloorChange = n._onActiveIndoorBuildingFloorChange.bind(n),
			n._initializePromise = null,
			n.checkInitialize(i),
			n
		}
		return (0, g.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "checkInitialize",
			value: function(t) {
				var e = this;
				if ((0, A.isInRange)(this._map.getZoom(), this._minZoom, this._maxZoom)) return void(this._initializePromise = this._init(t));
				this.changeInitListener = T.
			default.throttle(function() { (0, A.isInRange)(e._map.getZoom(), e._minZoom, e._maxZoom) && !e._initializePromise && (e._initializePromise = e._init(t))
				},
				50),
				this._map.on("zoom_changed", this.changeInitListener)
			}
		},
		{
			key: "_init",
			value: function(t) {
				var e = this,
				n = B.IndoorStyleMap.getInstance(),
				i = this._indoorStyleId,
				o = 0;
				return this.changeInitListener && this._map.off("zoom_changed", this.changeInitListener),
				(0, w.checkKey)(this._map.id).then(function(t) {
					var r = t && t.indoor_map;
					o = r && r.type;
					var a = r && r.enable,
					s = r && r.building_list;
					return 1 === a && Array.isArray(s) ? (e._userBuildingIdList = s, n.has(i) ? s: (0, R.loadIndoorStyleFile)(i).then(function(t) {
						return t && n.set(e._indoorStyleId, t),
						s
					})) : null
				}).then(function(n) {
					if (n) {
						var i = n.length;
						Y = i > 0 ? i: Y;
						var r = 1 === o ? 1 : 0;
						return e._map.on("moveend", T.
					default.debounce(e._createBuildingInView.bind(e, t, r), 50)),
						e._map.on("zoom_changed", T.
					default.throttle(e._onMapZoomChanged.bind(e), 50)),
						e._map.on("center_changed", T.
					default.throttle(e._onMapCenterChanged.bind(e), 50)),
						e.on("building_source_loaded", e._onBuildingSourceLoaded.bind(e)),
						e._createBuildingInView(t, r)
					}
				}).then(function() {
					e._initialized = !0
				})
			}
		},
		{
			key: "_createBuildingInView",
			value: function(t, e) {
				var n = this,
				i = this._getCityList();
				this._indexSource || (this._indexSource = this._map.layerResource && this._map.layerResource.addIndoorIndexSource(z.SOURCE_TYPE.indoorIndex));
				var o = this._getViewBounds();
				return new a.
			default(function(r) {
					n._indexSource && n._indexSource.loadIndexData(i, o, e,
					function(e) {
						var i = e;
						Array.isArray(n._userBuildingIdList) && n._userBuildingIdList.length > 0 && (i = e.filter(function(t) {
							return n._userBuildingIdList.includes(t)
						})),
						n._createIndoorBuildingList(i, t),
						n._visibleCheck(),
						r()
					})
				})
			}
		},
		{
			key: "_getCityList",
			value: function() {
				var t = this._map.getZoom(),
				e = [];
				if ((0, A.isInRange)(t, this._minZoom, this._maxZoom)) {
					var n = this._map.getCenter();
					e = D.
				default.filter(function(t) {
						var e = t.leftBottom,
						i = t.rightTop,
						o = n.getLat(),
						r = n.getLng();
						return (0, A.isInRange)(o, e.lat, i.lat) && (0, A.isInRange)(r, e.lng, i.lng)
					}).map(function(t) {
						return t.cityId
					})
				}
				return e
			}
		},
		{
			key: "_getViewBounds",
			value: function() {
				var t = this._map.getBounds();
				if (this._map.transform) {
					var e = this._map.transform.latLngToCoord(t.getNorthEast(), 20),
					n = e.x,
					i = e.y,
					o = this._map.transform.latLngToCoord(t.getSouthWest(), 20);
					return {
						left: o.x,
						right: n,
						top: i,
						bottom: o.y
					}
				}
			}
		},
		{
			key: "_createIndoorBuildingList",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				0 !== t.length && (0 === this._userBuildingIdList && this._buildingNumLimitCheck(t), t.forEach(function(t) {
					if (!e._indoorBuildingIds.includes(t)) {
						var i = new I.
					default(t, (0, l.
					default)(n, {
							map: e._map,
							manager: e,
							indoorStyleId: e._indoorStyleId
						}));
						e._indoorBuildingList.push(i),
						e._indoorBuildingIds.push(t)
					}
				}))
			}
		},
		{
			key: "_buildingNumLimitCheck",
			value: function(t) {
				var e = this,
				n = this._indoorBuildingIds.length,
				i = t.filter(function(t) {
					return e._indoorBuildingIds.includes(t)
				}),
				o = i.length,
				r = t.length - o;
				if (n + r > Y) {
					for (var a = n + r - Y,
					s = [], l = 0; l < n && (i.includes(this._indoorBuildingIds[l]) || s.push(l), s.length !== a); l++);
					for (var u = 0; u < a; u++) {
						this._indoorBuildingIds.splice(s[u], 1);
						var c = this._indoorBuildingList.splice(s[u], 1)[0];
						c && c.destroy(),
						c = null
					}
				}
			}
		},
		{
			key: "_onBuildingSourceLoaded",
			value: function() {
				this.getActiveIndoorBuilding() || this._autoActiveCheck()
			}
		},
		{
			key: "_onMapCenterChanged",
			value: function() {
				this._initialized && this._autoActiveCheck()
			}
		},
		{
			key: "_onMapZoomChanged",
			value: function() {
				this._visibleCheck()
			}
		},
		{
			key: "_visibleCheck",
			value: function() {
				var t = this._map.getZoom(); (0, A.isInRange)(t, this._minZoom, this._maxZoom) ? this._visible && this._indoorBuildingList.forEach(function(t) {
					t._setVisible(!0)
				}) : this._indoorBuildingList.forEach(function(t) {
					t._setVisible(!1)
				})
			}
		},
		{
			key: "_autoActiveCheck",
			value: function() {
				var t = this;
				if (this._autoActive) {
					var e = this._map.getCenter(),
					n = this._map.getZoom();
					n >= this._minZoom && n <= this._maxZoom && this._indoorBuildingList.length > 0 && this._indoorBuildingList.some(function(n) {
						var i = n.getBuildingInfo(),
						r = i && i.bounds && i.bounds.contains(e);
						return r && o(t, n),
						r
					}) || o(this, null)
				}
			}
		},
		{
			key: "_updateFloorControl",
			value: function() {
				var t = this,
				e = this.getActiveIndoorBuilding();
				return e ? e.getBuildingInfoAsync().then(function(n) {
					t._floorControl && t._floorControl.buildingId === n.buildingId || (t._floorControl && (t._map.removeControl(N.DEFAULT_CONTROL_ID.FLOOR), t._floorControl.destroy(), t._floorControl = null), t._floorControl = new L.
				default({
						id:
						N.DEFAULT_CONTROL_ID.FLOOR,
						position: C.
					default.BOTTOM_RIGHT,
						buildingId: n.buildingId,
						selectedFloor: e.getSelectedFloor() || n.defaultFloor,
						floorList: n.floorList
					}), t._map.addControl(t._floorControl), t._floorControl.on("floor-change",
					function(e) {
						var n = e.floorName;
						t.getActiveIndoorBuilding() && t.getActiveIndoorBuilding().setSelectedFloor(n)
					})),
					t._isFloorControlVisible && t._floorControl.show()
				}) : (this._floorControl && this._floorControl.hide(), a.
			default.resolve())
			}
		},
		{
			key: "_onActiveIndoorBuildingFloorChange",
			value: function() {
				var t = this.getActiveIndoorBuilding();
				if (this._floorControl && this._initialized && t) {
					var e = t.getSelectedFloor();
					this._map.indoorStateChange({
						floorName: e,
						buildingId: t.buildingId
					},
					null),
					this._floorControl.selectFloor(e)
				}
			}
		},
		{
			key: "initialize",
			value: function() {
				return this._initializePromise || (this._initializePromise = this._init()),
				this._initializePromise
			}
		},
		{
			key: "setAutoActive",
			value: function(t) {
				return this._autoActive = !!t,
				this._autoActiveCheck(),
				this
			}
		},
		{
			key: "setActiveIndoorBuilding",
			value: function(t) {
				if (this._initialized || console.warn("室内地图管理器尚未初始化完毕，该方法无效!"), this._autoActive) return console.warn("自动激活模式下，该方法无效!"),
				this;
				if (!t) return o(this, null),
				this;
				var e = this.getIndoorBuilding(t);
				return e && o(this, e),
				this
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				t = !!t,
				this._visible = t;
				var e = this._map.getZoom();
				return t && !(0, A.isInRange)(e, this._minZoom, this._maxZoom) ? this: (this._indoorBuildingList.forEach(function(e) {
					e._setVisible(t)
				}), this)
			}
		},
		{
			key: "showFloorControl",
			value: function() {
				this.getActiveIndoorBuilding() && (this._isFloorControlVisible = !0, this._floorControl && this._floorControl.show())
			}
		},
		{
			key: "hideFloorControl",
			value: function() {
				this._isFloorControlVisible = !1,
				this._floorControl && this._floorControl.hide()
			}
		},
		{
			key: "getMap",
			value: function() {
				return this._map
			}
		},
		{
			key: "getAutoActive",
			value: function() {
				return this._autoActive
			}
		},
		{
			key: "getActiveIndoorBuilding",
			value: function() {
				return this._initialized || console.warn("室内地图管理器尚未初始化完毕，该方法无效!"),
				this._activeIndoorBuilding
			}
		},
		{
			key: "getVisible",
			value: function() {
				return this._visible
			}
		},
		{
			key: "getIndoorBuilding",
			value: function(t) {
				return this._initialized || console.warn("室内地图管理器尚未初始化完毕，该方法无效!"),
				"string" != typeof t ? (console.error("室内地图管理器：请传入正确的buildingId"), null) : (this._userBuildingIdList && !this._indoorBuildingIds.includes(t) && (0 === this._userBuildingIdList.length || this._userBuildingIdList.includes(t)) && this._createIndoorBuildingList([t], this._options), this._indoorBuildingList.filter(function(e) {
					return e.buildingId === t
				})[0] || null)
			}
		},
		{
			key: "getIndoorBuildingList",
			value: function() {
				var t = this;
				if (!this._userBuildingIdList) return [];
				if (Array.isArray(this._userBuildingIdList) && 0 === this._userBuildingIdList.length) return [];
				var e = this._userBuildingIdList.filter(function(e) {
					return ! t._indoorBuildingIds.includes(e)
				});
				return e.length > 0 && this._createIndoorBuildingList(e, this._options),
				this._indoorBuildingList
			}
		},
		{
			key: "destroy",
			value: function() {
				this.removeAllListeners(),
				this._floorControl && this._floorControl.destroy(),
				this._indexSource = null,
				this._indoorBuildingList && this._indoorBuildingList.length > 0 && this._indoorBuildingList.forEach(function(t) {
					t.destroy()
				}),
				this._indoorBuildingList = null,
				this._indoorBuildingIds = null,
				this._userBuildingIdList = null
			}
		}], [{
			key: "getInstance",
			value: function(t) {
				return this(t)
			}
		}]),
		e
	} (S.
default);
	e.
default = U
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = [{
		cityId: 1,
		cityName: "阿坝藏族羌族自治州",
		leftBottom: {
			lng: 100.527191,
			lat: 30.5941792
		},
		rightTop: {
			lng: 104.437462,
			lat: 34.3129807
		}
	},
	{
		cityId: 2,
		cityName: "阿克苏地区",
		leftBottom: {
			lng: 78.0278625,
			lat: 39.46632
		},
		rightTop: {
			lng: 84.0897293,
			lat: 42.6467705
		}
	},
	{
		cityId: 3,
		cityName: "阿拉尔市",
		leftBottom: {
			lng: 80.5910263,
			lat: 40.3629417
		},
		rightTop: {
			lng: 81.9546509,
			lat: 40.9459915
		}
	},
	{
		cityId: 4,
		cityName: "阿拉善盟",
		leftBottom: {
			lng: 97.1728973,
			lat: 37.4060097
		},
		rightTop: {
			lng: 106.870407,
			lat: 42.7955093
		}
	},
	{
		cityId: 5,
		cityName: "阿勒泰地区",
		leftBottom: {
			lng: 85.5280609,
			lat: 45.0013466
		},
		rightTop: {
			lng: 91.0756912,
			lat: 49.1796417
		}
	},
	{
		cityId: 6,
		cityName: "阿里地区",
		leftBottom: {
			lng: 78.3958511,
			lat: 29.6754494
		},
		rightTop: {
			lng: 86.3286438,
			lat: 35.8606606
		}
	},
	{
		cityId: 7,
		cityName: "安康市",
		leftBottom: {
			lng: 108.025841,
			lat: 31.7050705
		},
		rightTop: {
			lng: 110.206619,
			lat: 33.8416901
		}
	},
	{
		cityId: 8,
		cityName: "安庆市",
		leftBottom: {
			lng: 115.762444,
			lat: 29.7817001
		},
		rightTop: {
			lng: 117.742203,
			lat: 31.2683601
		}
	},
	{
		cityId: 9,
		cityName: "鞍山市",
		leftBottom: {
			lng: 122.187637,
			lat: 40.0004501
		},
		rightTop: {
			lng: 123.76844,
			lat: 41.5684013
		}
	},
	{
		cityId: 10,
		cityName: "安顺市",
		leftBottom: {
			lng: 105.248627,
			lat: 25.3531303
		},
		rightTop: {
			lng: 106.571159,
			lat: 26.6234398
		}
	},
	{
		cityId: 11,
		cityName: "安阳市",
		leftBottom: {
			lng: 113.633263,
			lat: 35.2048492
		},
		rightTop: {
			lng: 114.989021,
			lat: 36.3664703
		}
	},
	{
		cityId: 12,
		cityName: "澳門特別行政區",
		leftBottom: {
			lng: 113.532799,
			lat: 22.1022892
		},
		rightTop: {
			lng: 113.610321,
			lat: 22.2143898
		}
	},
	{
		cityId: 13,
		cityName: "白城市",
		leftBottom: {
			lng: 121.641777,
			lat: 44.2273903
		},
		rightTop: {
			lng: 124.369949,
			lat: 46.3047295
		}
	},
	{
		cityId: 14,
		cityName: "百色市",
		leftBottom: {
			lng: 104.45018,
			lat: 22.8547001
		},
		rightTop: {
			lng: 107.88459,
			lat: 25.0993195
		}
	},
	{
		cityId: 15,
		cityName: "白沙黎族自治县",
		leftBottom: {
			lng: 109.038727,
			lat: 18.9357204
		},
		rightTop: {
			lng: 109.701729,
			lat: 19.4867706
		}
	},
	{
		cityId: 16,
		cityName: "白山市",
		leftBottom: {
			lng: 126.12088,
			lat: 41.3637886
		},
		rightTop: {
			lng: 128.31842,
			lat: 42.8214684
		}
	},
	{
		cityId: 17,
		cityName: "白银市",
		leftBottom: {
			lng: 103.555313,
			lat: 35.4118881
		},
		rightTop: {
			lng: 105.524643,
			lat: 37.6380882
		}
	},
	{
		cityId: 18,
		cityName: "保定市",
		leftBottom: {
			lng: 113.767166,
			lat: 38.2375298
		},
		rightTop: {
			lng: 116.335167,
			lat: 39.95224
		}
	},
	{
		cityId: 19,
		cityName: "宝鸡市",
		leftBottom: {
			lng: 106.310501,
			lat: 33.579361
		},
		rightTop: {
			lng: 108.05732,
			lat: 35.1055908
		}
	},
	{
		cityId: 20,
		cityName: "保山市",
		leftBottom: {
			lng: 98.0895004,
			lat: 24.1221294
		},
		rightTop: {
			lng: 100.047417,
			lat: 25.8563404
		}
	},
	{
		cityId: 21,
		cityName: "保亭黎族苗族自治县",
		leftBottom: {
			lng: 109.405197,
			lat: 18.3876495
		},
		rightTop: {
			lng: 109.852119,
			lat: 18.83354
		}
	},
	{
		cityId: 22,
		cityName: "包头市",
		leftBottom: {
			lng: 109.254807,
			lat: 40.2477493
		},
		rightTop: {
			lng: 111.445999,
			lat: 42.7367783
		}
	},
	{
		cityId: 23,
		cityName: "巴彦淖尔市",
		leftBottom: {
			lng: 105.19912,
			lat: 40.1707306
		},
		rightTop: {
			lng: 109.904839,
			lat: 42.4640388
		}
	},
	{
		cityId: 24,
		cityName: "巴音郭楞蒙古自治州",
		leftBottom: {
			lng: 82.4704132,
			lat: 35.639389
		},
		rightTop: {
			lng: 93.8679123,
			lat: 43.5614319
		}
	},
	{
		cityId: 25,
		cityName: "巴中市",
		leftBottom: {
			lng: 106.36805,
			lat: 31.25173
		},
		rightTop: {
			lng: 107.761841,
			lat: 32.7391319
		}
	},
	{
		cityId: 26,
		cityName: "北海市",
		leftBottom: {
			lng: 108.848152,
			lat: 20.8681602
		},
		rightTop: {
			lng: 109.792152,
			lat: 21.9190407
		}
	},
	{
		cityId: 27,
		cityName: "北京市",
		leftBottom: {
			lng: 115.423866,
			lat: 39.4396019
		},
		rightTop: {
			lng: 117.506706,
			lat: 41.0608292
		}
	},
	{
		cityId: 28,
		cityName: "蚌埠市",
		leftBottom: {
			lng: 116.73571,
			lat: 32.7119484
		},
		rightTop: {
			lng: 118.075287,
			lat: 33.5029106
		}
	},
	{
		cityId: 29,
		cityName: "本溪市",
		leftBottom: {
			lng: 123.589394,
			lat: 40.816349
		},
		rightTop: {
			lng: 125.791267,
			lat: 41.5696411
		}
	},
	{
		cityId: 30,
		cityName: "毕节市",
		leftBottom: {
			lng: 103.602074,
			lat: 26.3577995
		},
		rightTop: {
			lng: 106.726822,
			lat: 27.7762299
		}
	},
	{
		cityId: 31,
		cityName: "滨州市",
		leftBottom: {
			lng: 117.264549,
			lat: 36.6877708
		},
		rightTop: {
			lng: 118.380569,
			lat: 38.3085785
		}
	},
	{
		cityId: 32,
		cityName: "博尔塔拉蒙古自治州",
		leftBottom: {
			lng: 79.8846817,
			lat: 44.004612
		},
		rightTop: {
			lng: 83.8048172,
			lat: 45.3883896
		}
	},
	{
		cityId: 33,
		cityName: "亳州市",
		leftBottom: {
			lng: 115.545723,
			lat: 32.8593216
		},
		rightTop: {
			lng: 116.832817,
			lat: 34.0696716
		}
	},
	{
		cityId: 34,
		cityName: "沧州市",
		leftBottom: {
			lng: 115.702438,
			lat: 37.4709206
		},
		rightTop: {
			lng: 117.953407,
			lat: 38.9453011
		}
	},
	{
		cityId: 35,
		cityName: "长春市",
		leftBottom: {
			lng: 124.543671,
			lat: 43.2640915
		},
		rightTop: {
			lng: 127.09449,
			lat: 45.2520523
		}
	},
	{
		cityId: 36,
		cityName: "常德市",
		leftBottom: {
			lng: 110.491577,
			lat: 28.4049091
		},
		rightTop: {
			lng: 112.305939,
			lat: 30.1263695
		}
	},
	{
		cityId: 37,
		cityName: "昌都市",
		leftBottom: {
			lng: 93.5946198,
			lat: 28.4352398
		},
		rightTop: {
			lng: 99.110817,
			lat: 32.5928612
		}
	},
	{
		cityId: 38,
		cityName: "昌江黎族自治县",
		leftBottom: {
			lng: 108.600777,
			lat: 18.8782406
		},
		rightTop: {
			lng: 109.29821,
			lat: 19.5490608
		}
	},
	{
		cityId: 39,
		cityName: "昌吉回族自治州",
		leftBottom: {
			lng: 85.5804825,
			lat: 43.1013985
		},
		rightTop: {
			lng: 91.5870132,
			lat: 45.4880676
		}
	},
	{
		cityId: 40,
		cityName: "长沙市",
		leftBottom: {
			lng: 111.896248,
			lat: 27.8480892
		},
		rightTop: {
			lng: 114.261261,
			lat: 28.6616306
		}
	},
	{
		cityId: 41,
		cityName: "长治市",
		leftBottom: {
			lng: 111.981598,
			lat: 35.8231201
		},
		rightTop: {
			lng: 113.739258,
			lat: 37.1247711
		}
	},
	{
		cityId: 42,
		cityName: "常州市",
		leftBottom: {
			lng: 119.140572,
			lat: 31.1525402
		},
		rightTop: {
			lng: 120.201859,
			lat: 32.0591393
		}
	},
	{
		cityId: 43,
		cityName: "朝阳市",
		leftBottom: {
			lng: 118.84597,
			lat: 40.6007118
		},
		rightTop: {
			lng: 121.300911,
			lat: 42.3829689
		}
	},
	{
		cityId: 44,
		cityName: "潮州市",
		leftBottom: {
			lng: 116.36805,
			lat: 23.4261494
		},
		rightTop: {
			lng: 117.206261,
			lat: 24.23279
		}
	},
	{
		cityId: 45,
		cityName: "承德市",
		leftBottom: {
			lng: 115.908173,
			lat: 40.1918907
		},
		rightTop: {
			lng: 119.25309,
			lat: 42.6180382
		}
	},
	{
		cityId: 46,
		cityName: "成都市",
		leftBottom: {
			lng: 103.023376,
			lat: 30.0939312
		},
		rightTop: {
			lng: 104.892853,
			lat: 31.4346695
		}
	},
	{
		cityId: 47,
		cityName: "澄迈县",
		leftBottom: {
			lng: 109.725159,
			lat: 19.372879
		},
		rightTop: {
			lng: 110.261864,
			lat: 20.0893803
		}
	},
	{
		cityId: 48,
		cityName: "郴州市",
		leftBottom: {
			lng: 112.229713,
			lat: 24.8905201
		},
		rightTop: {
			lng: 114.237503,
			lat: 26.8396797
		}
	},
	{
		cityId: 49,
		cityName: "赤峰市",
		leftBottom: {
			lng: 116.367401,
			lat: 41.285511
		},
		rightTop: {
			lng: 120.987038,
			lat: 45.2432518
		}
	},
	{
		cityId: 50,
		cityName: "池州市",
		leftBottom: {
			lng: 116.648598,
			lat: 29.5614605
		},
		rightTop: {
			lng: 118.131439,
			lat: 30.8452892
		}
	},
	{
		cityId: 51,
		cityName: "重庆市",
		leftBottom: {
			lng: 105.289787,
			lat: 28.1602497
		},
		rightTop: {
			lng: 110.200401,
			lat: 32.2011986
		}
	},
	{
		cityId: 52,
		cityName: "崇左市",
		leftBottom: {
			lng: 106.56028,
			lat: 21.594059
		},
		rightTop: {
			lng: 108.112556,
			lat: 23.3547306
		}
	},
	{
		cityId: 53,
		cityName: "楚雄彝族自治州",
		leftBottom: {
			lng: 100.721611,
			lat: 24.2197895
		},
		rightTop: {
			lng: 102.482277,
			lat: 26.4988899
		}
	},
	{
		cityId: 54,
		cityName: "滁州市",
		leftBottom: {
			lng: 117.16095,
			lat: 31.8509197
		},
		rightTop: {
			lng: 119.22979,
			lat: 33.216671
		}
	},
	{
		cityId: 55,
		cityName: "大连市",
		leftBottom: {
			lng: 120.920418,
			lat: 38.250061
		},
		rightTop: {
			lng: 123.534721,
			lat: 40.2038498
		}
	},
	{
		cityId: 56,
		cityName: "大理白族自治州",
		leftBottom: {
			lng: 98.8642807,
			lat: 24.6606007
		},
		rightTop: {
			lng: 101.04641,
			lat: 26.696579
		}
	},
	{
		cityId: 57,
		cityName: "丹东市",
		leftBottom: {
			lng: 117.608596,
			lat: 36.843903
		},
		rightTop: {
			lng: 137.14943,
			lat: 43.72608
		}
	},
	{
		cityId: 58,
		cityName: "儋州市",
		leftBottom: {
			lng: 108.891983,
			lat: 19.1788597
		},
		rightTop: {
			lng: 109.766167,
			lat: 19.9512997
		}
	},
	{
		cityId: 59,
		cityName: "大庆市",
		leftBottom: {
			lng: 123.755363,
			lat: 45.3827896
		},
		rightTop: {
			lng: 125.79126,
			lat: 47.47612
		}
	},
	{
		cityId: 60,
		cityName: "大同市",
		leftBottom: {
			lng: 112.579514,
			lat: 39.0481491
		},
		rightTop: {
			lng: 114.562531,
			lat: 40.7433701
		}
	},
	{
		cityId: 61,
		cityName: "大兴安岭地区",
		leftBottom: {
			lng: 121.182663,
			lat: 50.9030266
		},
		rightTop: {
			lng: 127.029572,
			lat: 53.5634804
		}
	},
	{
		cityId: 62,
		cityName: "达州市",
		leftBottom: {
			lng: 106.6661,
			lat: 30.3247604
		},
		rightTop: {
			lng: 108.54673,
			lat: 32.3382301
		}
	},
	{
		cityId: 63,
		cityName: "德宏傣族景颇族自治州",
		leftBottom: {
			lng: 97.5288391,
			lat: 23.8391094
		},
		rightTop: {
			lng: 98.7270432,
			lat: 25.33605
		}
	},
	{
		cityId: 64,
		cityName: "德阳市",
		leftBottom: {
			lng: 103.795441,
			lat: 30.5235405
		},
		rightTop: {
			lng: 105.17466,
			lat: 31.6984806
		}
	},
	{
		cityId: 65,
		cityName: "德州市",
		leftBottom: {
			lng: 115.75869,
			lat: 36.4085388
		},
		rightTop: {
			lng: 117.6073,
			lat: 38.0099792
		}
	},
	{
		cityId: 66,
		cityName: "定安县",
		leftBottom: {
			lng: 110.123848,
			lat: 19.2112808
		},
		rightTop: {
			lng: 110.552711,
			lat: 19.7281208
		}
	},
	{
		cityId: 67,
		cityName: "定西市",
		leftBottom: {
			lng: 103.467056,
			lat: 34.1242905
		},
		rightTop: {
			lng: 105.64782,
			lat: 36.0434189
		}
	},
	{
		cityId: 68,
		cityName: "迪庆藏族自治州",
		leftBottom: {
			lng: 98.5940475,
			lat: 26.8659992
		},
		rightTop: {
			lng: 100.309219,
			lat: 29.2484894
		}
	},
	{
		cityId: 69,
		cityName: "东方市",
		leftBottom: {
			lng: 108.572449,
			lat: 18.7147293
		},
		rightTop: {
			lng: 109.126282,
			lat: 19.3674297
		}
	},
	{
		cityId: 70,
		cityName: "东莞市",
		leftBottom: {
			lng: 113.521858,
			lat: 22.65555
		},
		rightTop: {
			lng: 114.260269,
			lat: 23.1431999
		}
	},
	{
		cityId: 71,
		cityName: "东营市",
		leftBottom: {
			lng: 118.105743,
			lat: 36.9369011
		},
		rightTop: {
			lng: 119.342072,
			lat: 38.1630707
		}
	},
	{
		cityId: 72,
		cityName: "鄂尔多斯市",
		leftBottom: {
			lng: 106.475952,
			lat: 37.6173286
		},
		rightTop: {
			lng: 111.463211,
			lat: 40.8837891
		}
	},
	{
		cityId: 73,
		cityName: "恩施土家族苗族自治州",
		leftBottom: {
			lng: 108.36776,
			lat: 29.1143303
		},
		rightTop: {
			lng: 110.642776,
			lat: 31.3971806
		}
	},
	{
		cityId: 74,
		cityName: "鄂州市",
		leftBottom: {
			lng: 114.506058,
			lat: 30.0165501
		},
		rightTop: {
			lng: 115.091293,
			lat: 30.6148701
		}
	},
	{
		cityId: 75,
		cityName: "防城港市",
		leftBottom: {
			lng: 107.48481,
			lat: 21.4794598
		},
		rightTop: {
			lng: 108.607368,
			lat: 22.3736801
		}
	},
	{
		cityId: 76,
		cityName: "佛山市",
		leftBottom: {
			lng: 112.390572,
			lat: 22.6437092
		},
		rightTop: {
			lng: 113.391747,
			lat: 23.5727692
		}
	},
	{
		cityId: 77,
		cityName: "福州市",
		leftBottom: {
			lng: 118.384598,
			lat: 25.2075596
		},
		rightTop: {
			lng: 120.532837,
			lat: 26.6392307
		}
	},
	{
		cityId: 78,
		cityName: "抚州市",
		leftBottom: {
			lng: 115.591858,
			lat: 26.4950104
		},
		rightTop: {
			lng: 117.303299,
			lat: 28.4933796
		}
	},
	{
		cityId: 79,
		cityName: "抚顺市",
		leftBottom: {
			lng: 123.669518,
			lat: 41.2389412
		},
		rightTop: {
			lng: 125.489891,
			lat: 42.4778481
		}
	},
	{
		cityId: 80,
		cityName: "阜新市",
		leftBottom: {
			lng: 121.019867,
			lat: 41.6928291
		},
		rightTop: {
			lng: 122.976601,
			lat: 42.8437309
		}
	},
	{
		cityId: 81,
		cityName: "阜阳市",
		leftBottom: {
			lng: 114.8825,
			lat: 32.4035416
		},
		rightTop: {
			lng: 116.635048,
			lat: 33.5840912
		}
	},
	{
		cityId: 82,
		cityName: "甘南藏族自治州",
		leftBottom: {
			lng: 100.764427,
			lat: 33.1030006
		},
		rightTop: {
			lng: 104.76194,
			lat: 35.5940895
		}
	},
	{
		cityId: 83,
		cityName: "赣州市",
		leftBottom: {
			lng: 113.913612,
			lat: 24.4862404
		},
		rightTop: {
			lng: 116.64431,
			lat: 27.1436405
		}
	},
	{
		cityId: 84,
		cityName: "甘孜藏族自治州",
		leftBottom: {
			lng: 97.3528519,
			lat: 27.9609203
		},
		rightTop: {
			lng: 102.494583,
			lat: 34.1957703
		}
	},
	{
		cityId: 85,
		cityName: "广安市",
		leftBottom: {
			lng: 105.947571,
			lat: 30.0171814
		},
		rightTop: {
			lng: 107.314011,
			lat: 30.852869
		}
	},
	{
		cityId: 86,
		cityName: "广元市",
		leftBottom: {
			lng: 104.61628,
			lat: 31.5252304
		},
		rightTop: {
			lng: 106.766747,
			lat: 32.9328995
		}
	},
	{
		cityId: 87,
		cityName: "广州市",
		leftBottom: {
			lng: 112.96196,
			lat: 22.5145607
		},
		rightTop: {
			lng: 114.059258,
			lat: 23.9292698
		}
	},
	{
		cityId: 88,
		cityName: "贵港市",
		leftBottom: {
			lng: 109.20845,
			lat: 22.6535206
		},
		rightTop: {
			lng: 110.662659,
			lat: 24.0421696
		}
	},
	{
		cityId: 89,
		cityName: "桂林市",
		leftBottom: {
			lng: 109.618279,
			lat: 24.2535
		},
		rightTop: {
			lng: 111.492561,
			lat: 26.3854103
		}
	},
	{
		cityId: 90,
		cityName: "贵阳市",
		leftBottom: {
			lng: 106.124077,
			lat: 26.1840305
		},
		rightTop: {
			lng: 107.2798,
			lat: 27.3553791
		}
	},
	{
		cityId: 91,
		cityName: "果洛藏族自治州",
		leftBottom: {
			lng: 96.9792175,
			lat: 32.5127792
		},
		rightTop: {
			lng: 101.778862,
			lat: 35.5824699
		}
	},
	{
		cityId: 92,
		cityName: "固原市",
		leftBottom: {
			lng: 105.32505,
			lat: 35.2382889
		},
		rightTop: {
			lng: 106.958679,
			lat: 36.5176315
		}
	},
	{
		cityId: 93,
		cityName: "哈尔滨市",
		leftBottom: {
			lng: 125.688599,
			lat: 44.0616989
		},
		rightTop: {
			lng: 130.240707,
			lat: 46.6744576
		}
	},
	{
		cityId: 94,
		cityName: "海北藏族自治州",
		leftBottom: {
			lng: 98.0933533,
			lat: 36.7344704
		},
		rightTop: {
			lng: 102.642166,
			lat: 39.090271
		}
	},
	{
		cityId: 95,
		cityName: "海东市",
		leftBottom: {
			lng: 101.666412,
			lat: 35.4483185
		},
		rightTop: {
			lng: 103.072693,
			lat: 37.1489296
		}
	},
	{
		cityId: 96,
		cityName: "海口市",
		leftBottom: {
			lng: 110.069496,
			lat: 19.5237503
		},
		rightTop: {
			lng: 110.709084,
			lat: 20.1800804
		}
	},
	{
		cityId: 97,
		cityName: "海南藏族自治州",
		leftBottom: {
			lng: 98.9322205,
			lat: 34.6409912
		},
		rightTop: {
			lng: 101.799133,
			lat: 37.2373505
		}
	},
	{
		cityId: 98,
		cityName: "海西蒙古族藏族自治州",
		leftBottom: {
			lng: 89.6401367,
			lat: 32.7208214
		},
		rightTop: {
			lng: 99.78508,
			lat: 39.2215195
		}
	},
	{
		cityId: 99,
		cityName: "哈密地区",
		leftBottom: {
			lng: 91.1776886,
			lat: 40.7524414
		},
		rightTop: {
			lng: 96.3890991,
			lat: 45.0900536
		}
	},
	{
		cityId: 100,
		cityName: "邯郸市",
		leftBottom: {
			lng: 113.46228,
			lat: 36.048851
		},
		rightTop: {
			lng: 115.4841,
			lat: 37.022171
		}
	},
	{
		cityId: 101,
		cityName: "杭州市",
		leftBottom: {
			lng: 118.344948,
			lat: 29.1887302
		},
		rightTop: {
			lng: 120.721947,
			lat: 30.5664806
		}
	},
	{
		cityId: 102,
		cityName: "汉中市",
		leftBottom: {
			lng: 105.491577,
			lat: 32.146019
		},
		rightTop: {
			lng: 108.284073,
			lat: 33.8785019
		}
	},
	{
		cityId: 103,
		cityName: "鹤壁市",
		leftBottom: {
			lng: 113.996048,
			lat: 35.4426689
		},
		rightTop: {
			lng: 114.758102,
			lat: 36.0485992
		}
	},
	{
		cityId: 104,
		cityName: "河池市",
		leftBottom: {
			lng: 106.571083,
			lat: 23.5531693
		},
		rightTop: {
			lng: 109.161217,
			lat: 25.6107407
		}
	},
	{
		cityId: 105,
		cityName: "合肥市",
		leftBottom: {
			lng: 116.687492,
			lat: 30.9508095
		},
		rightTop: {
			lng: 117.965851,
			lat: 32.5360794
		}
	},
	{
		cityId: 106,
		cityName: "鹤岗市",
		leftBottom: {
			lng: 129.673492,
			lat: 47.0608521
		},
		rightTop: {
			lng: 132.524826,
			lat: 48.3533325
		}
	},
	{
		cityId: 107,
		cityName: "黑河市",
		leftBottom: {
			lng: 124.74855,
			lat: 47.5869026
		},
		rightTop: {
			lng: 129.537567,
			lat: 51.0035477
		}
	},
	{
		cityId: 108,
		cityName: "衡水市",
		leftBottom: {
			lng: 115.19146,
			lat: 37.0597992
		},
		rightTop: {
			lng: 116.56501,
			lat: 38.3703995
		}
	},
	{
		cityId: 109,
		cityName: "衡阳市",
		leftBottom: {
			lng: 111.54361,
			lat: 26.1142292
		},
		rightTop: {
			lng: 113.283943,
			lat: 27.4670391
		}
	},
	{
		cityId: 110,
		cityName: "和田地区",
		leftBottom: {
			lng: 77.4038315,
			lat: 34.3325081
		},
		rightTop: {
			lng: 84.9199219,
			lat: 39.6336403
		}
	},
	{
		cityId: 111,
		cityName: "河源市",
		leftBottom: {
			lng: 114.241814,
			lat: 23.1641808
		},
		rightTop: {
			lng: 115.59301,
			lat: 24.7810192
		}
	},
	{
		cityId: 112,
		cityName: "菏泽市",
		leftBottom: {
			lng: 114.823349,
			lat: 34.5508614
		},
		rightTop: {
			lng: 116.414032,
			lat: 35.8635483
		}
	},
	{
		cityId: 113,
		cityName: "贺州市",
		leftBottom: {
			lng: 110.57074,
			lat: 23.6517391
		},
		rightTop: {
			lng: 112.061867,
			lat: 25.1515808
		}
	},
	{
		cityId: 114,
		cityName: "红河哈尼族彝族自治州",
		leftBottom: {
			lng: 101.80204,
			lat: 22.4412899
		},
		rightTop: {
			lng: 104.282463,
			lat: 24.7642708
		}
	},
	{
		cityId: 115,
		cityName: "淮安市",
		leftBottom: {
			lng: 118.21949,
			lat: 32.7160492
		},
		rightTop: {
			lng: 119.645187,
			lat: 34.0930214
		}
	},
	{
		cityId: 116,
		cityName: "淮北市",
		leftBottom: {
			lng: 116.3937,
			lat: 33.2784386
		},
		rightTop: {
			lng: 117.058311,
			lat: 34.2487183
		}
	},
	{
		cityId: 117,
		cityName: "怀化市",
		leftBottom: {
			lng: 108.790848,
			lat: 25.8655605
		},
		rightTop: {
			lng: 111.113068,
			lat: 29.0210991
		}
	},
	{
		cityId: 118,
		cityName: "淮南市",
		leftBottom: {
			lng: 116.364891,
			lat: 32.3860397
		},
		rightTop: {
			lng: 117.215286,
			lat: 33.003521
		}
	},
	{
		cityId: 119,
		cityName: "黄冈市",
		leftBottom: {
			lng: 114.402023,
			lat: 29.7205601
		},
		rightTop: {
			lng: 116.136841,
			lat: 31.6047497
		}
	},
	{
		cityId: 120,
		cityName: "黄南藏族自治州",
		leftBottom: {
			lng: 100.68679,
			lat: 34.0640984
		},
		rightTop: {
			lng: 102.456642,
			lat: 36.1696205
		}
	},
	{
		cityId: 121,
		cityName: "黄山市",
		leftBottom: {
			lng: 117.202583,
			lat: 29.3929996
		},
		rightTop: {
			lng: 118.902573,
			lat: 30.5166492
		}
	},
	{
		cityId: 122,
		cityName: "黄石市",
		leftBottom: {
			lng: 114.531693,
			lat: 29.5069904
		},
		rightTop: {
			lng: 115.510941,
			lat: 30.33041
		}
	},
	{
		cityId: 123,
		cityName: "呼和浩特市",
		leftBottom: {
			lng: 110.5187,
			lat: 39.5889397
		},
		rightTop: {
			lng: 112.30896,
			lat: 41.3858604
		}
	},
	{
		cityId: 124,
		cityName: "惠州市",
		leftBottom: {
			lng: 113.812828,
			lat: 22.3743896
		},
		rightTop: {
			lng: 115.41877,
			lat: 23.9594307
		}
	},
	{
		cityId: 125,
		cityName: "葫芦岛市",
		leftBottom: {
			lng: 119.216583,
			lat: 39.954071
		},
		rightTop: {
			lng: 121.101257,
			lat: 41.2059708
		}
	},
	{
		cityId: 126,
		cityName: "呼伦贝尔市",
		leftBottom: {
			lng: 115.528923,
			lat: 47.0968704
		},
		rightTop: {
			lng: 126.07608,
			lat: 53.3356628
		}
	},
	{
		cityId: 127,
		cityName: "湖州市",
		leftBottom: {
			lng: 119.236954,
			lat: 30.3732891
		},
		rightTop: {
			lng: 120.490501,
			lat: 31.1787891
		}
	},
	{
		cityId: 128,
		cityName: "佳木斯市",
		leftBottom: {
			lng: 129.507706,
			lat: 45.9452362
		},
		rightTop: {
			lng: 135.09726,
			lat: 48.4652023
		}
	},
	{
		cityId: 129,
		cityName: "江门市",
		leftBottom: {
			lng: 112.003487,
			lat: 21.4434299
		},
		rightTop: {
			lng: 113.263329,
			lat: 22.8528194
		}
	},
	{
		cityId: 130,
		cityName: "吉安市",
		leftBottom: {
			lng: 113.834587,
			lat: 25.9722195
		},
		rightTop: {
			lng: 115.935379,
			lat: 27.9613094
		}
	},
	{
		cityId: 131,
		cityName: "焦作市",
		leftBottom: {
			lng: 112.568733,
			lat: 34.8115196
		},
		rightTop: {
			lng: 113.646973,
			lat: 35.4944992
		}
	},
	{
		cityId: 132,
		cityName: "嘉兴市",
		leftBottom: {
			lng: 120.295967,
			lat: 30.2451706
		},
		rightTop: {
			lng: 121.541481,
			lat: 31.0303497
		}
	},
	{
		cityId: 133,
		cityName: "嘉峪关市",
		leftBottom: {
			lng: 97.8316422,
			lat: 39.6320496
		},
		rightTop: {
			lng: 98.5236893,
			lat: 39.9784012
		}
	},
	{
		cityId: 134,
		cityName: "揭阳市",
		leftBottom: {
			lng: 115.61335,
			lat: 22.8476601
		},
		rightTop: {
			lng: 116.636101,
			lat: 23.7733994
		}
	},
	{
		cityId: 135,
		cityName: "吉林市",
		leftBottom: {
			lng: 125.650551,
			lat: 42.5628281
		},
		rightTop: {
			lng: 128.017487,
			lat: 44.6469116
		}
	},
	{
		cityId: 136,
		cityName: "济南市",
		leftBottom: {
			lng: 116.223824,
			lat: 36.0293388
		},
		rightTop: {
			lng: 117.747437,
			lat: 37.5390282
		}
	},
	{
		cityId: 137,
		cityName: "金昌市",
		leftBottom: {
			lng: 101.41864,
			lat: 38.0237007
		},
		rightTop: {
			lng: 102.734329,
			lat: 38.9994812
		}
	},
	{
		cityId: 138,
		cityName: "晋城市",
		leftBottom: {
			lng: 111.939537,
			lat: 35.2033615
		},
		rightTop: {
			lng: 113.625061,
			lat: 36.0641708
		}
	},
	{
		cityId: 139,
		cityName: "景德镇市",
		leftBottom: {
			lng: 116.962708,
			lat: 28.7178898
		},
		rightTop: {
			lng: 117.71064,
			lat: 29.9314899
		}
	},
	{
		cityId: 140,
		cityName: "荆门市",
		leftBottom: {
			lng: 111.860252,
			lat: 30.3902397
		},
		rightTop: {
			lng: 113.490494,
			lat: 31.6106396
		}
	},
	{
		cityId: 141,
		cityName: "荆州市",
		leftBottom: {
			lng: 111.243797,
			lat: 29.4276199
		},
		rightTop: {
			lng: 114.091049,
			lat: 30.6581097
		}
	},
	{
		cityId: 142,
		cityName: "金华市",
		leftBottom: {
			lng: 119.228706,
			lat: 28.5226898
		},
		rightTop: {
			lng: 120.783852,
			lat: 29.6822205
		}
	},
	{
		cityId: 143,
		cityName: "济宁市",
		leftBottom: {
			lng: 115.866364,
			lat: 34.4502602
		},
		rightTop: {
			lng: 117.597542,
			lat: 35.9813309
		}
	},
	{
		cityId: 144,
		cityName: "晋中市",
		leftBottom: {
			lng: 111.408463,
			lat: 36.6441498
		},
		rightTop: {
			lng: 114.139923,
			lat: 38.0931816
		}
	},
	{
		cityId: 145,
		cityName: "锦州市",
		leftBottom: {
			lng: 120.717194,
			lat: 40.7294807
		},
		rightTop: {
			lng: 122.600273,
			lat: 42.1297379
		}
	},
	{
		cityId: 146,
		cityName: "九江市",
		leftBottom: {
			lng: 113.942047,
			lat: 28.6851692
		},
		rightTop: {
			lng: 116.904037,
			lat: 30.0746002
		}
	},
	{
		cityId: 147,
		cityName: "酒泉市",
		leftBottom: {
			lng: 92.3222809,
			lat: 38.1041794
		},
		rightTop: {
			lng: 100.20182,
			lat: 42.7955093
		}
	},
	{
		cityId: 148,
		cityName: "鸡西市",
		leftBottom: {
			lng: 130.399857,
			lat: 44.53383
		},
		rightTop: {
			lng: 133.949524,
			lat: 46.6113396
		}
	},
	{
		cityId: 149,
		cityName: "济源市",
		leftBottom: {
			lng: 112.036949,
			lat: 34.8956909
		},
		rightTop: {
			lng: 112.767319,
			lat: 35.2798004
		}
	},
	{
		cityId: 150,
		cityName: "开封市",
		leftBottom: {
			lng: 113.877296,
			lat: 34.1970482
		},
		rightTop: {
			lng: 115.26548,
			lat: 35.0226517
		}
	},
	{
		cityId: 151,
		cityName: "喀什地区",
		leftBottom: {
			lng: 74.4605026,
			lat: 35.4513206
		},
		rightTop: {
			lng: 79.8657608,
			lat: 40.2581711
		}
	},
	{
		cityId: 152,
		cityName: "克拉玛依市",
		leftBottom: {
			lng: 84.5517731,
			lat: 44.1077805
		},
		rightTop: {
			lng: 86.036171,
			lat: 46.2131767
		}
	},
	{
		cityId: 153,
		cityName: "克孜勒苏柯尔克孜自治州",
		leftBottom: {
			lng: 73.4909286,
			lat: 37.6508789
		},
		rightTop: {
			lng: 78.8792191,
			lat: 41.3994408
		}
	},
	{
		cityId: 154,
		cityName: "昆明市",
		leftBottom: {
			lng: 102.168663,
			lat: 24.38521
		},
		rightTop: {
			lng: 103.673592,
			lat: 26.5426903
		}
	},
	{
		cityId: 155,
		cityName: "来宾市",
		leftBottom: {
			lng: 108.418243,
			lat: 23.2688408
		},
		rightTop: {
			lng: 110.458473,
			lat: 24.4675598
		}
	},
	{
		cityId: 156,
		cityName: "莱芜市",
		leftBottom: {
			lng: 117.331367,
			lat: 35.9906311
		},
		rightTop: {
			lng: 117.974678,
			lat: 36.552948
		}
	},
	{
		cityId: 157,
		cityName: "廊坊市",
		leftBottom: {
			lng: 116.116913,
			lat: 38.4735794
		},
		rightTop: {
			lng: 117.260078,
			lat: 40.0967293
		}
	},
	{
		cityId: 158,
		cityName: "兰州市",
		leftBottom: {
			lng: 102.600906,
			lat: 35.5711288
		},
		rightTop: {
			lng: 104.576378,
			lat: 37.0364189
		}
	},
	{
		cityId: 159,
		cityName: "拉萨市",
		leftBottom: {
			lng: 89.7535477,
			lat: 29.2380791
		},
		rightTop: {
			lng: 92.6215668,
			lat: 31.0558205
		}
	},
	{
		cityId: 160,
		cityName: "乐东黎族自治县",
		leftBottom: {
			lng: 108.64994,
			lat: 18.2978306
		},
		rightTop: {
			lng: 109.407997,
			lat: 18.9620495
		}
	},
	{
		cityId: 161,
		cityName: "乐山市",
		leftBottom: {
			lng: 102.911041,
			lat: 28.4202309
		},
		rightTop: {
			lng: 104.252129,
			lat: 29.9285908
		}
	},
	{
		cityId: 162,
		cityName: "凉山彝族自治州",
		leftBottom: {
			lng: 100.061317,
			lat: 26.0457802
		},
		rightTop: {
			lng: 103.877457,
			lat: 29.3026409
		}
	},
	{
		cityId: 163,
		cityName: "连云港市",
		leftBottom: {
			lng: 118.408463,
			lat: 33.979599
		},
		rightTop: {
			lng: 119.850807,
			lat: 35.1229095
		}
	},
	{
		cityId: 164,
		cityName: "聊城市",
		leftBottom: {
			lng: 115.282509,
			lat: 35.7792015
		},
		rightTop: {
			lng: 116.545616,
			lat: 37.0232506
		}
	},
	{
		cityId: 165,
		cityName: "辽阳市",
		leftBottom: {
			lng: 122.590973,
			lat: 40.7083397
		},
		rightTop: {
			lng: 123.688843,
			lat: 41.6118279
		}
	},
	{
		cityId: 166,
		cityName: "辽源市",
		leftBottom: {
			lng: 124.840012,
			lat: 42.2995682
		},
		rightTop: {
			lng: 125.843849,
			lat: 43.2328987
		}
	},
	{
		cityId: 167,
		cityName: "丽江市",
		leftBottom: {
			lng: 99.3820267,
			lat: 25.9848804
		},
		rightTop: {
			lng: 101.51403,
			lat: 27.9242191
		}
	},
	{
		cityId: 168,
		cityName: "临沧市",
		leftBottom: {
			lng: 98.6727905,
			lat: 23.0779896
		},
		rightTop: {
			lng: 100.547028,
			lat: 25.0324001
		}
	},
	{
		cityId: 169,
		cityName: "临汾市",
		leftBottom: {
			lng: 110.374191,
			lat: 35.3865089
		},
		rightTop: {
			lng: 112.57444,
			lat: 36.9346809
		}
	},
	{
		cityId: 170,
		cityName: "临高县",
		leftBottom: {
			lng: 109.49408,
			lat: 19.5733795
		},
		rightTop: {
			lng: 109.897087,
			lat: 20.0396595
		}
	},
	{
		cityId: 171,
		cityName: "陵水黎族自治县",
		leftBottom: {
			lng: 109.755768,
			lat: 18.2743607
		},
		rightTop: {
			lng: 110.229263,
			lat: 18.8091908
		}
	},
	{
		cityId: 172,
		cityName: "临夏回族自治州",
		leftBottom: {
			lng: 102.685997,
			lat: 34.9414787
		},
		rightTop: {
			lng: 103.858818,
			lat: 36.2103004
		}
	},
	{
		cityId: 173,
		cityName: "临沂市",
		leftBottom: {
			lng: 117.418716,
			lat: 34.3773499
		},
		rightTop: {
			lng: 119.203239,
			lat: 36.2068405
		}
	},
	{
		cityId: 174,
		cityName: "林芝市",
		leftBottom: {
			lng: 92.1635284,
			lat: 27.5596104
		},
		rightTop: {
			lng: 98.7536392,
			lat: 30.6712303
		}
	},
	{
		cityId: 175,
		cityName: "丽水市",
		leftBottom: {
			lng: 118.699173,
			lat: 27.4168701
		},
		rightTop: {
			lng: 120.438812,
			lat: 28.9501591
		}
	},
	{
		cityId: 176,
		cityName: "六盘水市",
		leftBottom: {
			lng: 104.308571,
			lat: 25.3223705
		},
		rightTop: {
			lng: 105.721603,
			lat: 26.9198208
		}
	},
	{
		cityId: 177,
		cityName: "柳州市",
		leftBottom: {
			lng: 108.5877,
			lat: 23.9060192
		},
		rightTop: {
			lng: 110.177963,
			lat: 26.0515099
		}
	},
	{
		cityId: 178,
		cityName: "陇南市",
		leftBottom: {
			lng: 104.023758,
			lat: 32.5941086
		},
		rightTop: {
			lng: 106.583961,
			lat: 34.5327415
		}
	},
	{
		cityId: 179,
		cityName: "龙岩市",
		leftBottom: {
			lng: 115.853439,
			lat: 24.3703594
		},
		rightTop: {
			lng: 117.753151,
			lat: 26.0330791
		}
	},
	{
		cityId: 180,
		cityName: "娄底市",
		leftBottom: {
			lng: 110.772034,
			lat: 27.2053204
		},
		rightTop: {
			lng: 112.524193,
			lat: 28.2342796
		}
	},
	{
		cityId: 181,
		cityName: "六安市",
		leftBottom: {
			lng: 115.371033,
			lat: 31.008419
		},
		rightTop: {
			lng: 117.25489,
			lat: 32.6611099
		}
	},
	{
		cityId: 182,
		cityName: "漯河市",
		leftBottom: {
			lng: 113.461662,
			lat: 33.4047318
		},
		rightTop: {
			lng: 114.29541,
			lat: 33.9852104
		}
	},
	{
		cityId: 183,
		cityName: "洛阳市",
		leftBottom: {
			lng: 111.138443,
			lat: 33.5629883
		},
		rightTop: {
			lng: 112.984749,
			lat: 35.0709305
		}
	},
	{
		cityId: 184,
		cityName: "泸州市",
		leftBottom: {
			lng: 105.145111,
			lat: 27.6595192
		},
		rightTop: {
			lng: 106.380608,
			lat: 29.3267193
		}
	},
	{
		cityId: 185,
		cityName: "吕梁市",
		leftBottom: {
			lng: 110.375908,
			lat: 36.7321091
		},
		rightTop: {
			lng: 112.329323,
			lat: 38.7314987
		}
	},
	{
		cityId: 186,
		cityName: "马鞍山市",
		leftBottom: {
			lng: 117.896248,
			lat: 31.2918797
		},
		rightTop: {
			lng: 118.888832,
			lat: 32.0581093
		}
	},
	{
		cityId: 187,
		cityName: "茂名市",
		leftBottom: {
			lng: 110.325279,
			lat: 21.3386803
		},
		rightTop: {
			lng: 111.68351,
			lat: 22.7048607
		}
	},
	{
		cityId: 188,
		cityName: "眉山市",
		leftBottom: {
			lng: 102.8526,
			lat: 29.4004898
		},
		rightTop: {
			lng: 104.503937,
			lat: 30.3617306
		}
	},
	{
		cityId: 189,
		cityName: "梅州市",
		leftBottom: {
			lng: 115.315277,
			lat: 23.3734493
		},
		rightTop: {
			lng: 116.941513,
			lat: 24.9373608
		}
	},
	{
		cityId: 190,
		cityName: "绵阳市",
		leftBottom: {
			lng: 103.748787,
			lat: 30.7056789
		},
		rightTop: {
			lng: 105.726219,
			lat: 33.0419884
		}
	},
	{
		cityId: 191,
		cityName: "牡丹江市",
		leftBottom: {
			lng: 128.230911,
			lat: 43.4264488
		},
		rightTop: {
			lng: 131.322891,
			lat: 45.9873085
		}
	},
	{
		cityId: 192,
		cityName: "南昌市",
		leftBottom: {
			lng: 115.438721,
			lat: 28.1574993
		},
		rightTop: {
			lng: 116.565491,
			lat: 29.1733303
		}
	},
	{
		cityId: 193,
		cityName: "南充市",
		leftBottom: {
			lng: 105.444649,
			lat: 30.4580097
		},
		rightTop: {
			lng: 106.968391,
			lat: 31.8483696
		}
	},
	{
		cityId: 194,
		cityName: "南京市",
		leftBottom: {
			lng: 118.362877,
			lat: 31.2292004
		},
		rightTop: {
			lng: 119.240486,
			lat: 32.6129684
		}
	},
	{
		cityId: 195,
		cityName: "南宁市",
		leftBottom: {
			lng: 107.329353,
			lat: 22.2025299
		},
		rightTop: {
			lng: 109.620338,
			lat: 24.0322609
		}
	},
	{
		cityId: 196,
		cityName: "南平市",
		leftBottom: {
			lng: 117.003418,
			lat: 26.2546902
		},
		rightTop: {
			lng: 119.275322,
			lat: 28.3129005
		}
	},
	{
		cityId: 197,
		cityName: "南通市",
		leftBottom: {
			lng: 120.202339,
			lat: 31.6141701
		},
		rightTop: {
			lng: 121.999161,
			lat: 32.7111397
		}
	},
	{
		cityId: 198,
		cityName: "南阳市",
		leftBottom: {
			lng: 110.982887,
			lat: 32.26894
		},
		rightTop: {
			lng: 113.814667,
			lat: 33.80159
		}
	},
	{
		cityId: 199,
		cityName: "那曲地区",
		leftBottom: {
			lng: 85.0527191,
			lat: 29.9365005
		},
		rightTop: {
			lng: 95.0232468,
			lat: 36.4849815
		}
	},
	{
		cityId: 200,
		cityName: "内江市",
		leftBottom: {
			lng: 104.269539,
			lat: 29.1844292
		},
		rightTop: {
			lng: 105.446068,
			lat: 30.0394707
		}
	},
	{
		cityId: 201,
		cityName: "宁波市",
		leftBottom: {
			lng: 120.877373,
			lat: 28.8407707
		},
		rightTop: {
			lng: 122.309402,
			lat: 30.4506607
		}
	},
	{
		cityId: 202,
		cityName: "宁德市",
		leftBottom: {
			lng: 118.548332,
			lat: 26.2919006
		},
		rightTop: {
			lng: 120.749741,
			lat: 27.67519
		}
	},
	{
		cityId: 203,
		cityName: "怒江傈僳族自治州",
		leftBottom: {
			lng: 98.1321182,
			lat: 25.5491695
		},
		rightTop: {
			lng: 99.6433868,
			lat: 28.3944302
		}
	},
	{
		cityId: 204,
		cityName: "盘锦市",
		leftBottom: {
			lng: 121.476044,
			lat: 40.6391411
		},
		rightTop: {
			lng: 122.42057,
			lat: 41.4518394
		}
	},
	{
		cityId: 205,
		cityName: "攀枝花市",
		leftBottom: {
			lng: 101.138229,
			lat: 26.0817795
		},
		rightTop: {
			lng: 102.24749,
			lat: 27.3427906
		}
	},
	{
		cityId: 206,
		cityName: "平顶山市",
		leftBottom: {
			lng: 112.249092,
			lat: 33.1282196
		},
		rightTop: {
			lng: 113.688469,
			lat: 34.3456802
		}
	},
	{
		cityId: 207,
		cityName: "平凉市",
		leftBottom: {
			lng: 105.345482,
			lat: 34.8834305
		},
		rightTop: {
			lng: 107.86409,
			lat: 35.7500687
		}
	},
	{
		cityId: 208,
		cityName: "萍乡市",
		leftBottom: {
			lng: 113.576149,
			lat: 26.9584789
		},
		rightTop: {
			lng: 114.275276,
			lat: 28.0050907
		}
	},
	{
		cityId: 209,
		cityName: "普洱市",
		leftBottom: {
			lng: 99.1557236,
			lat: 22.0240002
		},
		rightTop: {
			lng: 102.323448,
			lat: 24.8268108
		}
	},
	{
		cityId: 210,
		cityName: "莆田市",
		leftBottom: {
			lng: 118.452957,
			lat: 24.9391499
		},
		rightTop: {
			lng: 119.720039,
			lat: 25.7518406
		}
	},
	{
		cityId: 211,
		cityName: "濮阳市",
		leftBottom: {
			lng: 114.874611,
			lat: 35.3308716
		},
		rightTop: {
			lng: 116.110443,
			lat: 36.2104416
		}
	},
	{
		cityId: 212,
		cityName: "黔东南苗族侗族自治州",
		leftBottom: {
			lng: 107.298981,
			lat: 25.3063107
		},
		rightTop: {
			lng: 109.595367,
			lat: 27.527689
		}
	},
	{
		cityId: 213,
		cityName: "潜江市",
		leftBottom: {
			lng: 112.502739,
			lat: 30.0774097
		},
		rightTop: {
			lng: 113.033577,
			lat: 30.6462498
		}
	},
	{
		cityId: 214,
		cityName: "黔南布依族苗族自治州",
		leftBottom: {
			lng: 106.211052,
			lat: 25.0581398
		},
		rightTop: {
			lng: 108.30368,
			lat: 27.4843292
		}
	},
	{
		cityId: 215,
		cityName: "黔西南布依族苗族自治州",
		leftBottom: {
			lng: 104.529549,
			lat: 24.6183891
		},
		rightTop: {
			lng: 106.531639,
			lat: 26.1756592
		}
	},
	{
		cityId: 216,
		cityName: "青岛市",
		leftBottom: {
			lng: 119.513107,
			lat: 35.5273285
		},
		rightTop: {
			lng: 121.406502,
			lat: 37.1468506
		}
	},
	{
		cityId: 217,
		cityName: "庆阳市",
		leftBottom: {
			lng: 106.362221,
			lat: 35.2414398
		},
		rightTop: {
			lng: 108.715538,
			lat: 37.1590881
		}
	},
	{
		cityId: 218,
		cityName: "清远市",
		leftBottom: {
			lng: 111.927452,
			lat: 23.4543591
		},
		rightTop: {
			lng: 113.916321,
			lat: 25.2019005
		}
	},
	{
		cityId: 219,
		cityName: "秦皇岛市",
		leftBottom: {
			lng: 118.568459,
			lat: 39.4296112
		},
		rightTop: {
			lng: 119.863167,
			lat: 40.6130486
		}
	},
	{
		cityId: 220,
		cityName: "钦州市",
		leftBottom: {
			lng: 108.183693,
			lat: 21.5037308
		},
		rightTop: {
			lng: 109.870689,
			lat: 22.6821098
		}
	},
	{
		cityId: 221,
		cityName: "琼海市",
		leftBottom: {
			lng: 110.120117,
			lat: 18.9760704
		},
		rightTop: {
			lng: 110.721657,
			lat: 19.4722805
		}
	},
	{
		cityId: 222,
		cityName: "琼中黎族苗族自治县",
		leftBottom: {
			lng: 109.523941,
			lat: 18.7276707
		},
		rightTop: {
			lng: 110.158569,
			lat: 19.4198208
		}
	},
	{
		cityId: 223,
		cityName: "齐齐哈尔市",
		leftBottom: {
			lng: 122.400597,
			lat: 46.2237282
		},
		rightTop: {
			lng: 126.675209,
			lat: 48.9354706
		}
	},
	{
		cityId: 224,
		cityName: "七台河市",
		leftBottom: {
			lng: 130.104813,
			lat: 45.5882797
		},
		rightTop: {
			lng: 131.935455,
			lat: 46.3353882
		}
	},
	{
		cityId: 225,
		cityName: "泉州市",
		leftBottom: {
			lng: 117.578499,
			lat: 24.3017101
		},
		rightTop: {
			lng: 119.06678,
			lat: 25.9316406
		}
	},
	{
		cityId: 226,
		cityName: "曲靖市",
		leftBottom: {
			lng: 103.052559,
			lat: 24.3475895
		},
		rightTop: {
			lng: 104.828751,
			lat: 27.0522289
		}
	},
	{
		cityId: 227,
		cityName: "衢州市",
		leftBottom: {
			lng: 118.028282,
			lat: 28.23909
		},
		rightTop: {
			lng: 119.346153,
			lat: 29.4968891
		}
	},
	{
		cityId: 228,
		cityName: "日喀则市",
		leftBottom: {
			lng: 82.141983,
			lat: 27.2101307
		},
		rightTop: {
			lng: 90.3494492,
			lat: 31.8070793
		}
	},
	{
		cityId: 229,
		cityName: "日照市",
		leftBottom: {
			lng: 118.601082,
			lat: 34.9581299
		},
		rightTop: {
			lng: 119.952026,
			lat: 36.0414581
		}
	},
	{
		cityId: 230,
		cityName: "三门峡市",
		leftBottom: {
			lng: 110.359917,
			lat: 33.5501289
		},
		rightTop: {
			lng: 112.031097,
			lat: 35.0837898
		}
	},
	{
		cityId: 231,
		cityName: "三明市",
		leftBottom: {
			lng: 116.383308,
			lat: 25.4776897
		},
		rightTop: {
			lng: 118.672607,
			lat: 27.1298294
		}
	},
	{
		cityId: 232,
		cityName: "三沙市",
		leftBottom: {
			lng: 105.590164,
			lat: 2
		},
		rightTop: {
			lng: 125.76929,
			lat: 28.130243
		}
	},
	{
		cityId: 233,
		cityName: "三亚市",
		leftBottom: {
			lng: 108.931976,
			lat: 18.1160793
		},
		rightTop: {
			lng: 109.810959,
			lat: 18.6233902
		}
	},
	{
		cityId: 234,
		cityName: "上海市",
		leftBottom: {
			lng: 120.855919,
			lat: 30.6703892
		},
		rightTop: {
			lng: 121.999474,
			lat: 31.8675308
		}
	},
	{
		cityId: 235,
		cityName: "商洛市",
		leftBottom: {
			lng: 108.575882,
			lat: 33.0947304
		},
		rightTop: {
			lng: 111.036926,
			lat: 34.4323502
		}
	},
	{
		cityId: 236,
		cityName: "商丘市",
		leftBottom: {
			lng: 114.826897,
			lat: 33.7067184
		},
		rightTop: {
			lng: 116.65036,
			lat: 34.8606682
		}
	},
	{
		cityId: 237,
		cityName: "上饶市",
		leftBottom: {
			lng: 116.235687,
			lat: 27.8003101
		},
		rightTop: {
			lng: 118.487686,
			lat: 29.6993198
		}
	},
	{
		cityId: 238,
		cityName: "山南地区",
		leftBottom: {
			lng: 90.0673676,
			lat: 26.8494492
		},
		rightTop: {
			lng: 94.3594894,
			lat: 29.8240604
		}
	},
	{
		cityId: 239,
		cityName: "汕头市",
		leftBottom: {
			lng: 116.25029,
			lat: 23.0408096
		},
		rightTop: {
			lng: 117.359306,
			lat: 23.6460304
		}
	},
	{
		cityId: 240,
		cityName: "汕尾市",
		leftBottom: {
			lng: 114.918297,
			lat: 22.6116199
		},
		rightTop: {
			lng: 116.227768,
			lat: 23.4721298
		}
	},
	{
		cityId: 241,
		cityName: "韶关市",
		leftBottom: {
			lng: 112.852386,
			lat: 23.8879204
		},
		rightTop: {
			lng: 114.745323,
			lat: 25.5167599
		}
	},
	{
		cityId: 242,
		cityName: "绍兴市",
		leftBottom: {
			lng: 119.888496,
			lat: 29.2250595
		},
		rightTop: {
			lng: 121.231552,
			lat: 30.2862892
		}
	},
	{
		cityId: 243,
		cityName: "邵阳市",
		leftBottom: {
			lng: 109.822113,
			lat: 25.962019
		},
		rightTop: {
			lng: 112.091141,
			lat: 27.6624203
		}
	},
	{
		cityId: 244,
		cityName: "神农架林区",
		leftBottom: {
			lng: 109.939919,
			lat: 31.2963295
		},
		rightTop: {
			lng: 110.982727,
			lat: 31.8611107
		}
	},
	{
		cityId: 245,
		cityName: "沈阳市",
		leftBottom: {
			lng: 122.425743,
			lat: 41.1994896
		},
		rightTop: {
			lng: 123.813599,
			lat: 43.0429192
		}
	},
	{
		cityId: 246,
		cityName: "深圳市",
		leftBottom: {
			lng: 113.676979,
			lat: 22.2339993
		},
		rightTop: {
			lng: 114.652138,
			lat: 22.8514996
		}
	},
	{
		cityId: 247,
		cityName: "石河子市",
		leftBottom: {
			lng: 85.9007874,
			lat: 44.1234818
		},
		rightTop: {
			lng: 86.170639,
			lat: 44.4628601
		}
	},
	{
		cityId: 248,
		cityName: "石家庄市",
		leftBottom: {
			lng: 113.522743,
			lat: 37.4392509
		},
		rightTop: {
			lng: 115.483467,
			lat: 38.7645683
		}
	},
	{
		cityId: 249,
		cityName: "十堰市",
		leftBottom: {
			lng: 109.43557,
			lat: 31.5059605
		},
		rightTop: {
			lng: 111.585602,
			lat: 33.271431
		}
	},
	{
		cityId: 250,
		cityName: "石嘴山市",
		leftBottom: {
			lng: 105.986122,
			lat: 38.616909
		},
		rightTop: {
			lng: 106.988083,
			lat: 39.3917503
		}
	},
	{
		cityId: 251,
		cityName: "双鸭山市",
		leftBottom: {
			lng: 130.666473,
			lat: 45.7880974
		},
		rightTop: {
			lng: 134.347366,
			lat: 47.5725212
		}
	},
	{
		cityId: 252,
		cityName: "朔州市",
		leftBottom: {
			lng: 111.898064,
			lat: 39.0895805
		},
		rightTop: {
			lng: 113.572723,
			lat: 40.2991905
		}
	},
	{
		cityId: 253,
		cityName: "四平市",
		leftBottom: {
			lng: 123.305931,
			lat: 42.8219604
		},
		rightTop: {
			lng: 125.784317,
			lat: 44.1563187
		}
	},
	{
		cityId: 254,
		cityName: "松原市",
		leftBottom: {
			lng: 123.109871,
			lat: 43.9916496
		},
		rightTop: {
			lng: 126.194168,
			lat: 45.5417976
		}
	},
	{
		cityId: 255,
		cityName: "苏州市",
		leftBottom: {
			lng: 119.918633,
			lat: 30.7580795
		},
		rightTop: {
			lng: 121.386993,
			lat: 32.0347214
		}
	},
	{
		cityId: 256,
		cityName: "宿州市",
		leftBottom: {
			lng: 116.159286,
			lat: 33.2740517
		},
		rightTop: {
			lng: 118.187599,
			lat: 34.6508217
		}
	},
	{
		cityId: 257,
		cityName: "绥化市",
		leftBottom: {
			lng: 124.873772,
			lat: 45.5043678
		},
		rightTop: {
			lng: 128.555862,
			lat: 48.0974007
		}
	},
	{
		cityId: 258,
		cityName: "遂宁市",
		leftBottom: {
			lng: 105.059341,
			lat: 30.1749001
		},
		rightTop: {
			lng: 106.001053,
			lat: 31.1609001
		}
	},
	{
		cityId: 259,
		cityName: "随州市",
		leftBottom: {
			lng: 112.727821,
			lat: 31.32621
		},
		rightTop: {
			lng: 114.13459,
			lat: 32.4321213
		}
	},
	{
		cityId: 260,
		cityName: "宿迁市",
		leftBottom: {
			lng: 117.940071,
			lat: 33.13694
		},
		rightTop: {
			lng: 119.1763,
			lat: 34.4222298
		}
	},
	{
		cityId: 261,
		cityName: "塔城地区",
		leftBottom: {
			lng: 82.2501907,
			lat: 43.4809608
		},
		rightTop: {
			lng: 87.3363266,
			lat: 47.2344589
		}
	},
	{
		cityId: 262,
		cityName: "台州市",
		leftBottom: {
			lng: 120.289917,
			lat: 28.0003605
		},
		rightTop: {
			lng: 121.979637,
			lat: 29.3401108
		}
	},
	{
		cityId: 263,
		cityName: "泰州市",
		leftBottom: {
			lng: 119.646523,
			lat: 31.9272804
		},
		rightTop: {
			lng: 120.559113,
			lat: 33.2190819
		}
	},
	{
		cityId: 264,
		cityName: "泰安市",
		leftBottom: {
			lng: 116.048439,
			lat: 35.6303978
		},
		rightTop: {
			lng: 118.002647,
			lat: 36.4768715
		}
	},
	{
		cityId: 265,
		cityName: "太原市",
		leftBottom: {
			lng: 111.51593,
			lat: 37.4562302
		},
		rightTop: {
			lng: 113.156342,
			lat: 38.4213486
		}
	},
	{
		cityId: 266,
		cityName: "唐山市",
		leftBottom: {
			lng: 117.512032,
			lat: 38.900631
		},
		rightTop: {
			lng: 119.448532,
			lat: 40.4650192
		}
	},
	{
		cityId: 267,
		cityName: "天津市",
		leftBottom: {
			lng: 116.707947,
			lat: 38.555481
		},
		rightTop: {
			lng: 118.06942,
			lat: 40.2532692
		}
	},
	{
		cityId: 268,
		cityName: "天门市",
		leftBottom: {
			lng: 112.592613,
			lat: 30.3778706
		},
		rightTop: {
			lng: 113.467369,
			lat: 30.9039803
		}
	},
	{
		cityId: 269,
		cityName: "天水市",
		leftBottom: {
			lng: 104.577477,
			lat: 34.0765991
		},
		rightTop: {
			lng: 106.714996,
			lat: 35.1779099
		}
	},
	{
		cityId: 270,
		cityName: "铁岭市",
		leftBottom: {
			lng: 123.452957,
			lat: 41.9868889
		},
		rightTop: {
			lng: 125.109543,
			lat: 43.4924316
		}
	},
	{
		cityId: 271,
		cityName: "铜川市",
		leftBottom: {
			lng: 108.583549,
			lat: 34.8046417
		},
		rightTop: {
			lng: 109.496582,
			lat: 35.5810814
		}
	},
	{
		cityId: 272,
		cityName: "通化市",
		leftBottom: {
			lng: 125.264076,
			lat: 40.8618813
		},
		rightTop: {
			lng: 126.754272,
			lat: 43.0220795
		}
	},
	{
		cityId: 273,
		cityName: "通辽市",
		leftBottom: {
			lng: 119.238251,
			lat: 42.2457581
		},
		rightTop: {
			lng: 123.720779,
			lat: 45.6865997
		}
	},
	{
		cityId: 274,
		cityName: "铜陵市",
		leftBottom: {
			lng: 117.249451,
			lat: 30.4141502
		},
		rightTop: {
			lng: 118.165527,
			lat: 31.1289902
		}
	},
	{
		cityId: 275,
		cityName: "铜仁市",
		leftBottom: {
			lng: 107.753067,
			lat: 27.1212196
		},
		rightTop: {
			lng: 109.474548,
			lat: 29.0864506
		}
	},
	{
		cityId: 276,
		cityName: "吐鲁番市",
		leftBottom: {
			lng: 87.2599487,
			lat: 41.1891403
		},
		rightTop: {
			lng: 91.9163666,
			lat: 43.6343918
		}
	},
	{
		cityId: 277,
		cityName: "图木舒克市",
		leftBottom: {
			lng: 78.6532364,
			lat: 39.6160011
		},
		rightTop: {
			lng: 79.6058426,
			lat: 40.1293716
		}
	},
	{
		cityId: 278,
		cityName: "屯昌县",
		leftBottom: {
			lng: 109.821892,
			lat: 19.1306705
		},
		rightTop: {
			lng: 110.252731,
			lat: 19.5927391
		}
	},
	{
		cityId: 279,
		cityName: "万宁市",
		leftBottom: {
			lng: 110.012733,
			lat: 18.5727806
		},
		rightTop: {
			lng: 110.614479,
			lat: 19.1047993
		}
	},
	{
		cityId: 280,
		cityName: "潍坊市",
		leftBottom: {
			lng: 118.175079,
			lat: 35.7119408
		},
		rightTop: {
			lng: 120.011307,
			lat: 37.3332787
		}
	},
	{
		cityId: 281,
		cityName: "威海市",
		leftBottom: {
			lng: 121.176933,
			lat: 36.6739082
		},
		rightTop: {
			lng: 122.726158,
			lat: 38.2525711
		}
	},
	{
		cityId: 282,
		cityName: "渭南市",
		leftBottom: {
			lng: 108.9645,
			lat: 34.20961
		},
		rightTop: {
			lng: 110.606941,
			lat: 35.8539581
		}
	},
	{
		cityId: 283,
		cityName: "文昌市",
		leftBottom: {
			lng: 110.462769,
			lat: 19.3158607
		},
		rightTop: {
			lng: 111.31723,
			lat: 20.2484207
		}
	},
	{
		cityId: 284,
		cityName: "文山壮族苗族自治州",
		leftBottom: {
			lng: 103.574097,
			lat: 22.6856899
		},
		rightTop: {
			lng: 106.200073,
			lat: 24.4594593
		}
	},
	{
		cityId: 285,
		cityName: "温州市",
		leftBottom: {
			lng: 119.625343,
			lat: 27.0132389
		},
		rightTop: {
			lng: 121.372627,
			lat: 28.6110497
		}
	},
	{
		cityId: 286,
		cityName: "乌海市",
		leftBottom: {
			lng: 106.59095,
			lat: 39.0368309
		},
		rightTop: {
			lng: 107.181061,
			lat: 39.9054604
		}
	},
	{
		cityId: 287,
		cityName: "武汉市",
		leftBottom: {
			lng: 113.700409,
			lat: 29.9666405
		},
		rightTop: {
			lng: 115.080811,
			lat: 31.3612499
		}
	},
	{
		cityId: 288,
		cityName: "芜湖市",
		leftBottom: {
			lng: 117.48262,
			lat: 30.6380501
		},
		rightTop: {
			lng: 118.73336,
			lat: 31.5359898
		}
	},
	{
		cityId: 289,
		cityName: "五家渠市",
		leftBottom: {
			lng: 87.3679199,
			lat: 44.0043602
		},
		rightTop: {
			lng: 87.7174988,
			lat: 44.5968704
		}
	},
	{
		cityId: 290,
		cityName: "乌兰察布市",
		leftBottom: {
			lng: 110.337868,
			lat: 40.1639404
		},
		rightTop: {
			lng: 114.81105,
			lat: 43.379879
		}
	},
	{
		cityId: 291,
		cityName: "乌鲁木齐市",
		leftBottom: {
			lng: 86.7889175,
			lat: 42.9170418
		},
		rightTop: {
			lng: 88.9795074,
			lat: 45.0016747
		}
	},
	{
		cityId: 292,
		cityName: "武威市",
		leftBottom: {
			lng: 101.830902,
			lat: 36.7551613
		},
		rightTop: {
			lng: 104.207367,
			lat: 39.4612999
		}
	},
	{
		cityId: 293,
		cityName: "无锡市",
		leftBottom: {
			lng: 119.519676,
			lat: 31.1206703
		},
		rightTop: {
			lng: 120.604446,
			lat: 31.9852009
		}
	},
	{
		cityId: 294,
		cityName: "五指山市",
		leftBottom: {
			lng: 109.323799,
			lat: 18.6266804
		},
		rightTop: {
			lng: 109.732292,
			lat: 19.0324993
		}
	},
	{
		cityId: 295,
		cityName: "吴忠市",
		leftBottom: {
			lng: 105.571373,
			lat: 36.572319
		},
		rightTop: {
			lng: 107.657066,
			lat: 38.2624283
		}
	},
	{
		cityId: 296,
		cityName: "梧州市",
		leftBottom: {
			lng: 110.325142,
			lat: 22.6071396
		},
		rightTop: {
			lng: 111.667213,
			lat: 24.4049206
		}
	},
	{
		cityId: 297,
		cityName: "厦门市",
		leftBottom: {
			lng: 117.886009,
			lat: 24.3841305
		},
		rightTop: {
			lng: 118.453987,
			lat: 24.9073391
		}
	},
	{
		cityId: 298,
		cityName: "香港特別行政區",
		leftBottom: {
			lng: 113.616013,
			lat: 22.0750065
		},
		rightTop: {
			lng: 114.50898,
			lat: 22.5916195
		}
	},
	{
		cityId: 299,
		cityName: "湘潭市",
		leftBottom: {
			lng: 111.99971,
			lat: 27.3380604
		},
		rightTop: {
			lng: 113.091919,
			lat: 28.0735798
		}
	},
	{
		cityId: 300,
		cityName: "湘西土家族苗族自治州",
		leftBottom: {
			lng: 109.186653,
			lat: 27.7199993
		},
		rightTop: {
			lng: 110.391006,
			lat: 29.6338406
		}
	},
	{
		cityId: 301,
		cityName: "襄阳市",
		leftBottom: {
			lng: 110.764,
			lat: 31.2297993
		},
		rightTop: {
			lng: 113.118736,
			lat: 32.6276398
		}
	},
	{
		cityId: 302,
		cityName: "咸宁市",
		leftBottom: {
			lng: 113.537819,
			lat: 29.0294895
		},
		rightTop: {
			lng: 114.973717,
			lat: 30.2978191
		}
	},
	{
		cityId: 303,
		cityName: "西安市",
		leftBottom: {
			lng: 107.62751,
			lat: 33.693882
		},
		rightTop: {
			lng: 109.822456,
			lat: 34.74366
		}
	},
	{
		cityId: 304,
		cityName: "仙桃市",
		leftBottom: {
			lng: 112.940979,
			lat: 30.0696602
		},
		rightTop: {
			lng: 113.824944,
			lat: 30.5324593
		}
	},
	{
		cityId: 305,
		cityName: "咸阳市",
		leftBottom: {
			lng: 107.651894,
			lat: 34.1955299
		},
		rightTop: {
			lng: 109.178223,
			lat: 35.544239
		}
	},
	{
		cityId: 306,
		cityName: "孝感市",
		leftBottom: {
			lng: 113.316689,
			lat: 30.3799992
		},
		rightTop: {
			lng: 114.591988,
			lat: 31.853899
		}
	},
	{
		cityId: 307,
		cityName: "锡林郭勒盟",
		leftBottom: {
			lng: 111.154129,
			lat: 41.575779
		},
		rightTop: {
			lng: 120.123337,
			lat: 46.77705
		}
	},
	{
		cityId: 308,
		cityName: "兴安盟",
		leftBottom: {
			lng: 119.482262,
			lat: 44.2563591
		},
		rightTop: {
			lng: 123.643593,
			lat: 47.6574402
		}
	},
	{
		cityId: 309,
		cityName: "邢台市",
		leftBottom: {
			lng: 113.760094,
			lat: 36.7540207
		},
		rightTop: {
			lng: 115.852943,
			lat: 37.8066902
		}
	},
	{
		cityId: 310,
		cityName: "西宁市",
		leftBottom: {
			lng: 100.90403,
			lat: 36.2311096
		},
		rightTop: {
			lng: 101.91449,
			lat: 37.4052696
		}
	},
	{
		cityId: 311,
		cityName: "新乡市",
		leftBottom: {
			lng: 113.382111,
			lat: 34.8777008
		},
		rightTop: {
			lng: 115.018753,
			lat: 35.839138
		}
	},
	{
		cityId: 312,
		cityName: "信阳市",
		leftBottom: {
			lng: 113.710114,
			lat: 31.3823605
		},
		rightTop: {
			lng: 115.943787,
			lat: 32.6597099
		}
	},
	{
		cityId: 313,
		cityName: "新余市",
		leftBottom: {
			lng: 114.485558,
			lat: 27.53022
		},
		rightTop: {
			lng: 115.406487,
			lat: 28.1076393
		}
	},
	{
		cityId: 314,
		cityName: "忻州市",
		leftBottom: {
			lng: 110.944801,
			lat: 38.1324005
		},
		rightTop: {
			lng: 113.967003,
			lat: 39.6637001
		}
	},
	{
		cityId: 315,
		cityName: "西双版纳傣族自治州",
		leftBottom: {
			lng: 99.9450912,
			lat: 21.1399498
		},
		rightTop: {
			lng: 101.844193,
			lat: 22.5901508
		}
	},
	{
		cityId: 316,
		cityName: "宣城市",
		leftBottom: {
			lng: 117.970444,
			lat: 29.9435902
		},
		rightTop: {
			lng: 119.649498,
			lat: 31.3047504
		}
	},
	{
		cityId: 317,
		cityName: "许昌市",
		leftBottom: {
			lng: 113.065529,
			lat: 33.6887512
		},
		rightTop: {
			lng: 114.324966,
			lat: 34.4069214
		}
	},
	{
		cityId: 318,
		cityName: "徐州市",
		leftBottom: {
			lng: 116.361816,
			lat: 33.7185211
		},
		rightTop: {
			lng: 118.674423,
			lat: 34.9399414
		}
	},
	{
		cityId: 319,
		cityName: "雅安市",
		leftBottom: {
			lng: 101.936493,
			lat: 28.8487797
		},
		rightTop: {
			lng: 103.395248,
			lat: 30.9384594
		}
	},
	{
		cityId: 320,
		cityName: "延安市",
		leftBottom: {
			lng: 107.659721,
			lat: 35.3443909
		},
		rightTop: {
			lng: 110.552528,
			lat: 37.5010109
		}
	},
	{
		cityId: 321,
		cityName: "延边朝鲜族自治州",
		leftBottom: {
			lng: 127.46888,
			lat: 41.9987984
		},
		rightTop: {
			lng: 131.319122,
			lat: 44.5139198
		}
	},
	{
		cityId: 322,
		cityName: "盐城市",
		leftBottom: {
			lng: 119.459297,
			lat: 32.5754509
		},
		rightTop: {
			lng: 120.994926,
			lat: 34.5445213
		}
	},
	{
		cityId: 323,
		cityName: "阳江市",
		leftBottom: {
			lng: 111.282082,
			lat: 21.4660397
		},
		rightTop: {
			lng: 112.369362,
			lat: 22.6784
		}
	},
	{
		cityId: 324,
		cityName: "阳泉市",
		leftBottom: {
			lng: 112.919868,
			lat: 37.6619492
		},
		rightTop: {
			lng: 114.044571,
			lat: 38.5243607
		}
	},
	{
		cityId: 325,
		cityName: "扬州市",
		leftBottom: {
			lng: 119.016487,
			lat: 32.2179298
		},
		rightTop: {
			lng: 119.911797,
			lat: 33.4158211
		}
	},
	{
		cityId: 326,
		cityName: "烟台市",
		leftBottom: {
			lng: 119.553398,
			lat: 36.559639
		},
		rightTop: {
			lng: 122.03804,
			lat: 38.6573601
		}
	},
	{
		cityId: 327,
		cityName: "宜春市",
		leftBottom: {
			lng: 113.889679,
			lat: 27.5454998
		},
		rightTop: {
			lng: 116.149887,
			lat: 29.0996895
		}
	},
	{
		cityId: 328,
		cityName: "伊春市",
		leftBottom: {
			lng: 127.631432,
			lat: 46.4828873
		},
		rightTop: {
			lng: 130.777573,
			lat: 49.441349
		}
	},
	{
		cityId: 329,
		cityName: "宜宾市",
		leftBottom: {
			lng: 103.611809,
			lat: 27.8405991
		},
		rightTop: {
			lng: 105.355797,
			lat: 29.2660408
		}
	},
	{
		cityId: 330,
		cityName: "宜昌市",
		leftBottom: {
			lng: 110.255661,
			lat: 29.9457092
		},
		rightTop: {
			lng: 112.084328,
			lat: 31.5735302
		}
	},
	{
		cityId: 331,
		cityName: "伊犁哈萨克自治州",
		leftBottom: {
			lng: 80.1640167,
			lat: 42.258461
		},
		rightTop: {
			lng: 85.2510071,
			lat: 44.8430405
		}
	},
	{
		cityId: 332,
		cityName: "银川市",
		leftBottom: {
			lng: 105.838699,
			lat: 37.6021194
		},
		rightTop: {
			lng: 106.87043,
			lat: 38.8690491
		}
	},
	{
		cityId: 333,
		cityName: "营口市",
		leftBottom: {
			lng: 121.859306,
			lat: 39.9198418
		},
		rightTop: {
			lng: 123.007309,
			lat: 40.9410782
		}
	},
	{
		cityId: 334,
		cityName: "鹰潭市",
		leftBottom: {
			lng: 116.692207,
			lat: 27.84659
		},
		rightTop: {
			lng: 117.472794,
			lat: 28.6279202
		}
	},
	{
		cityId: 335,
		cityName: "益阳市",
		leftBottom: {
			lng: 110.721138,
			lat: 27.9746494
		},
		rightTop: {
			lng: 112.950127,
			lat: 29.5243607
		}
	},
	{
		cityId: 336,
		cityName: "永州市",
		leftBottom: {
			lng: 110.9515,
			lat: 24.6363602
		},
		rightTop: {
			lng: 112.457367,
			lat: 26.8679295
		}
	},
	{
		cityId: 337,
		cityName: "榆林市",
		leftBottom: {
			lng: 107.263802,
			lat: 36.8189201
		},
		rightTop: {
			lng: 111.246147,
			lat: 39.5869904
		}
	},
	{
		cityId: 338,
		cityName: "玉林市",
		leftBottom: {
			lng: 109.541069,
			lat: 21.6341991
		},
		rightTop: {
			lng: 110.898888,
			lat: 23.1247902
		}
	},
	{
		cityId: 339,
		cityName: "岳阳市",
		leftBottom: {
			lng: 112.315292,
			lat: 28.4218502
		},
		rightTop: {
			lng: 114.15712,
			lat: 29.8472996
		}
	},
	{
		cityId: 340,
		cityName: "运城市",
		leftBottom: {
			lng: 110.219887,
			lat: 34.5842896
		},
		rightTop: {
			lng: 112.081917,
			lat: 35.8212814
		}
	},
	{
		cityId: 341,
		cityName: "云浮市",
		leftBottom: {
			lng: 111.056427,
			lat: 22.3756905
		},
		rightTop: {
			lng: 112.521652,
			lat: 23.3238392
		}
	},
	{
		cityId: 342,
		cityName: "玉树藏族自治州",
		leftBottom: {
			lng: 89.4090881,
			lat: 31.6002407
		},
		rightTop: {
			lng: 97.776123,
			lat: 36.2771111
		}
	},
	{
		cityId: 343,
		cityName: "玉溪市",
		leftBottom: {
			lng: 101.276817,
			lat: 23.3137798
		},
		rightTop: {
			lng: 103.153099,
			lat: 24.9523697
		}
	},
	{
		cityId: 344,
		cityName: "枣庄市",
		leftBottom: {
			lng: 116.811401,
			lat: 34.4612503
		},
		rightTop: {
			lng: 117.832039,
			lat: 35.3204498
		}
	},
	{
		cityId: 345,
		cityName: "张家界市",
		leftBottom: {
			lng: 109.693748,
			lat: 28.8672409
		},
		rightTop: {
			lng: 111.337532,
			lat: 29.7908993
		}
	},
	{
		cityId: 346,
		cityName: "张家口市",
		leftBottom: {
			lng: 113.825562,
			lat: 39.5560112
		},
		rightTop: {
			lng: 116.465561,
			lat: 42.1491394
		}
	},
	{
		cityId: 347,
		cityName: "张掖市",
		leftBottom: {
			lng: 97.3878403,
			lat: 37.6070404
		},
		rightTop: {
			lng: 102.215363,
			lat: 39.8840218
		}
	},
	{
		cityId: 348,
		cityName: "漳州市",
		leftBottom: {
			lng: 116.899567,
			lat: 23.5487995
		},
		rightTop: {
			lng: 118.24514,
			lat: 25.1944695
		}
	},
	{
		cityId: 349,
		cityName: "湛江市",
		leftBottom: {
			lng: 109.628792,
			lat: 20.0595989
		},
		rightTop: {
			lng: 111.081047,
			lat: 21.9182796
		}
	},
	{
		cityId: 350,
		cityName: "肇庆市",
		leftBottom: {
			lng: 111.361977,
			lat: 22.7697697
		},
		rightTop: {
			lng: 112.88179,
			lat: 24.3998203
		}
	},
	{
		cityId: 351,
		cityName: "昭通市",
		leftBottom: {
			lng: 102.87149,
			lat: 26.5343094
		},
		rightTop: {
			lng: 105.316383,
			lat: 28.6684303
		}
	},
	{
		cityId: 352,
		cityName: "郑州市",
		leftBottom: {
			lng: 112.721176,
			lat: 34.2621002
		},
		rightTop: {
			lng: 114.22319,
			lat: 34.9885406
		}
	},
	{
		cityId: 353,
		cityName: "镇江市",
		leftBottom: {
			lng: 118.969482,
			lat: 31.6252193
		},
		rightTop: {
			lng: 119.981506,
			lat: 32.3162003
		}
	},
	{
		cityId: 354,
		cityName: "中山市",
		leftBottom: {
			lng: 113.158546,
			lat: 22.2039089
		},
		rightTop: {
			lng: 113.693253,
			lat: 22.7772007
		}
	},
	{
		cityId: 355,
		cityName: "中卫市",
		leftBottom: {
			lng: 104.293633,
			lat: 36.1216583
		},
		rightTop: {
			lng: 106.459618,
			lat: 37.7277107
		}
	},
	{
		cityId: 356,
		cityName: "周口市",
		leftBottom: {
			lng: 114.091621,
			lat: 33.0526619
		},
		rightTop: {
			lng: 115.653214,
			lat: 34.3372002
		}
	},
	{
		cityId: 357,
		cityName: "舟山市",
		leftBottom: {
			lng: 121.521332,
			lat: 29.545639
		},
		rightTop: {
			lng: 122.992256,
			lat: 30.9029293
		}
	},
	{
		cityId: 358,
		cityName: "珠海市",
		leftBottom: {
			lng: 113.059349,
			lat: 21.7801895
		},
		rightTop: {
			lng: 114.411263,
			lat: 22.4543991
		}
	},
	{
		cityId: 359,
		cityName: "驻马店市",
		leftBottom: {
			lng: 113.097687,
			lat: 32.2771912
		},
		rightTop: {
			lng: 115.219704,
			lat: 33.5306091
		}
	},
	{
		cityId: 360,
		cityName: "株洲市",
		leftBottom: {
			lng: 112.966667,
			lat: 26.0451908
		},
		rightTop: {
			lng: 114.106934,
			lat: 28.0290203
		}
	},
	{
		cityId: 361,
		cityName: "淄博市",
		leftBottom: {
			lng: 117.545601,
			lat: 35.9234695
		},
		rightTop: {
			lng: 118.520798,
			lat: 37.2891502
		}
	},
	{
		cityId: 362,
		cityName: "自贡市",
		leftBottom: {
			lng: 104.052917,
			lat: 28.9241199
		},
		rightTop: {
			lng: 105.270042,
			lat: 29.6372604
		}
	},
	{
		cityId: 363,
		cityName: "资阳市",
		leftBottom: {
			lng: 104.192131,
			lat: 29.6740208
		},
		rightTop: {
			lng: 105.753868,
			lat: 30.6436806
		}
	},
	{
		cityId: 364,
		cityName: "遵义市",
		leftBottom: {
			lng: 105.608841,
			lat: 27.1325493
		},
		rightTop: {
			lng: 108.21476,
			lat: 29.2213001
		}
	},
	{
		cityId: 365,
		cityName: "taiwan",
		leftBottom: {
			lng: 119.198798,
			lat: 21.835159
		},
		rightTop: {
			lng: 122.331982,
			lat: 25.72666
		}
	}];
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		var i = function(e) {
			var n = t.styles[e.styleId];
			return n ? (0, S.
		default)({},
			{
				text: e.content || C.text,
				color: n.color || C.color,
				backgroundColor: n.backgroundColor || C.backgroundColor,
				borderColor: n.borderColor || C.borderColor,
				borderWidth: f(n.borderWidth || C.borderWidth, "number", 0),
				strokeColor: n.strokeColor || C.strokeColor,
				borderRadius: f(n.borderRadius || C.borderRadius, "number", 0),
				size: n.size || C.size,
				width: f(n.width || C.width, "number", 0),
				height: f(n.height || C.height, "number", 0),
				padding: f(n.padding || C.padding, "string", ""),
				scale: n.scale || C.scale,
				offset: n.offset || C.offset,
				angle: n.angle || C.angle,
				alignment: L[n.alignment] || L[C.alignment],
				verticalAlignment: M[n.verticalAlignment] || M[C.verticalAlignment]
			}) : (0, S.
		default)({},
			C, {
				color: "rgba(0, 0, 0, 0)"
			})
		},
		o = {};
		t.geometries.forEach(function(t) {
			var e = i(t),
			n = e.text;
			n && (0, x.
		default)(n).forEach(function(t) {
				o[t] = 1
			})
		});
		var s = (0, g.
	default)(o);
		e.send("addGlyphs", {
			glyphs: s
		},
		function(e, o) {
			var s = JSON.parse(o.mapping),
			l = r(t.geometries, s, i),
			u = a(l, s, i);
			n && n(u)
		})
	}
	function r(t, e, n) {
		var i = [];
		return t.forEach(function(t, o) {
			if (t.position) {
				var r = n(t),
				a = r.text;
				if (a) {
					var s = (0, x.
				default)(a),
					l = [0],
					u = 0;
					i.push({
						geometry: t,
						geometryIndex: o
					}),
					s.forEach(function(n, r) {
						var s = {
							letter: n,
							index: r,
							offsets: l,
							len: a.length,
							geometry: t,
							geometryIndex: o
						},
						c = e[n];
						u += c ? c.width: k,
						l.push(u),
						i.push(s)
					})
				}
			}
		}),
		i
	}
	function a(t, e, n) {
		var i = t.length,
		o = new Float32Array(3 * i),
		r = new Float32Array(2 * i),
		a = new Uint16Array(2 * i),
		f = new Float32Array(4 * i),
		d = new Float32Array(4 * i),
		h = new Uint8ClampedArray(4 * i),
		v = new Uint8ClampedArray(4 * i),
		p = new Uint8ClampedArray(i),
		_ = new Uint8ClampedArray(3 * i),
		m = new Float32Array(3 * i),
		g = new Uint8ClampedArray(i),
		y = 0,
		x = 0,
		b = 0,
		S = 0,
		T = 0,
		P = 0,
		I = 0,
		k = 0,
		L = 0,
		M = 0,
		C = 0,
		R = [];
		return t.forEach(function(t) {
			var i = n(t.geometry),
			B = e[t.letter],
			N = 0;
			B || (N = 1),
			g[L] = N,
			L += 1;
			var O = new A.
		default(i.color).toUpArray(),
			D = new A.
		default(i.strokeColor).toUpArray(),
			z = new A.
		default(i.backgroundColor, {
				defaultColor: "rgba(0, 0, 0, 0)"
			}).toUpArray(),
			F = new A.
		default(i.borderColor, {
				defaultColor: "rgba(0, 0, 0, 0)"
			}).toUpArray(),
			V = t.geometry.position,
			Y = "lat" in V && "lng" in V,
			U = (0, w.splitLatLngNumber)(V.lng || 0),
			j = (0, w.splitLatLngNumber)(V.lat || 0),
			G = V.height;
			o[y] = U.high,
			y += 1,
			o[y] = j.high,
			y += 1,
			o[y] = G,
			y += 1,
			r[x] = U.low,
			x += 1,
			r[x] = j.low,
			x += 1,
			a[b] = i.size,
			b += 1,
			a[b] = i.size,
			b += 1,
			s({
				type: N,
				info: t,
				style: i,
				instanceInfos: f,
				infoIndex: S,
				letterRect: B
			}),
			S += 4;
			var Z = t.geometry.content;
			l({
				style: i,
				type: N,
				instanceFrames: d,
				letterRect: B,
				letterCount: Z.length,
				frameIndex: T
			}),
			T += 4,
			u({
				styleColor: O,
				bgColor: z,
				type: N,
				isValidPosition: Y,
				instanceColors: h,
				colorIndex: P
			}),
			P += 4,
			u({
				styleColor: D,
				bgColor: F,
				type: N,
				isValidPosition: Y,
				instanceColors: v,
				colorIndex: I
			}),
			I += 4,
			p[k] = 1,
			k += 1;
			var H = (0, E.encodePickingColor)(t.geometryIndex);
			Y ? (_[M] = H[0], M += 1, _[M] = H[1], M += 1, _[M] = H[2], M += 1) : (_[M] = 0, M += 1, _[M] = 0, M += 1, _[M] = 0, M += 1),
			m[C] = i.offset.x,
			C += 1,
			m[C] = i.offset.y,
			C += 1,
			m[C] = 1,
			C += 1;
			var W = t.geometryIndex,
			X = t.len,
			Q = t.index;
			if (R[W]) R[W].lettersCount += 1,
			R[W].widthSum += B.width,
			R[W].fontSize = R[W].fontSize || B && B.fontSize;
			else {
				var q = t.geometry;
				R[W] = {
					geometryIndex: W,
					geometry: q,
					style: i,
					lettersCount: 1,
					fontSize: B && B.fontSize,
					widthSum: B && B.width || 0
				}
			}
			if (Q === X - 1 && B) {
				R[W].heightSum = R[W].heightSum || B.height;
				var K = c(i, X),
				J = K.styleWidth,
				$ = K.styleHeight,
				tt = J * B.fontSize / i.size,
				et = $ * B.fontSize / i.size;
				R[W].widthSum = Math.max(R[W].widthSum, tt),
				R[W].heightSum = Math.max(R[W].heightSum, et)
			}
		}),
		{
			count: i,
			instancePositionList: o,
			instancePosition64xyLowList: r,
			instanceSizeList: a,
			instanceInfoList: f,
			instanceFrameList: d,
			instanceColorList: h,
			instanceStrokeColorList: v,
			instanceShowList: p,
			instanceTypeList: g,
			instancePickingColorList: _,
			instancePixelOffsetList: m,
			labelInfoList: R
		}
	}
	function s(t) {
		var e = t.type,
		n = t.info,
		i = t.style,
		o = t.instanceInfos,
		r = t.letterRect,
		a = t.infoIndex;
		if (e) return o[a] = i.borderRadius,
		a += 1,
		o[a] = 0,
		a += 1,
		o[a] = i.angle,
		a += 1,
		o[a] = 1,
		void(a += 1);
		var s = n.offsets[n.offsets.length - 1],
		l = n.offsets[n.index];
		o[a] = (i.alignment - 1) * s / 2 + r.width / 2 + l || 0,
		a += 1,
		o[a] = r.height / 2 * i.verticalAlignment || 0,
		a += 1,
		o[a] = i.angle,
		a += 1,
		o[a] = 1,
		a += 1
	}
	function l(t) {
		var e = t.instanceFrames,
		n = t.type,
		i = t.style,
		o = t.letterRect,
		r = t.letterCount,
		a = t.frameIndex;
		if (n) {
			var s = c(i, r),
			l = s.styleWidth,
			u = s.styleHeight;
			return l && u ? (e[a] = i.borderWidth, a += 1, e[a] = i.borderWidth, a += 1, e[a] = l + 2 * i.borderWidth || 0, a += 1, e[a] = u + 2 * i.borderWidth || 0, void(a += 1)) : (e[a] = 0, a += 1, e[a] = 0, a += 1, e[a] = 0, a += 1, e[a] = 0, void(a += 1))
		}
		e[a] = o.x || 0,
		a += 1,
		e[a] = o.y || 0,
		a += 1,
		e[a] = o.width || 0,
		a += 1,
		e[a] = o.height || 0,
		a += 1
	}
	function u(t) {
		var e = t.type,
		n = t.styleColor,
		i = t.isValidPosition,
		o = t.instanceColors,
		r = t.bgColor,
		a = t.colorIndex;
		if (e) return o[a] = i ? r[0] : 0,
		a += 1,
		o[a] = i ? r[1] : 0,
		a += 1,
		o[a] = i ? r[2] : 0,
		a += 1,
		o[a] = i ? r[3] : 0,
		void(a += 1);
		o[a] = i ? n[0] : 0,
		a += 1,
		o[a] = i ? n[1] : 0,
		a += 1,
		o[a] = i ? n[2] : 0,
		a += 1,
		o[a] = i ? n[3] : 0,
		a += 1
	}
	function c(t, e) {
		var n = t.height,
		i = t.width;
		if ((!n || !i) && t.padding) {
			var o = d(t.padding, "padding"),
			r = o.widthPadding,
			a = o.heightPadding;
			n = t.size + 2 * a,
			i = t.size * (e - 1) + 2 * r
		}
		return {
			styleHeight: n,
			styleWidth: i
		}
	}
	function f(t, e, n) {
		return (void 0 === t ? "undefined": (0, _.
	default)(t)) !== e ? n: t
	}
	function d(t, e) {
		function n(t) {
			var e = t.match(/\d+\px/);
			return (0, v.
		default)(e, 1)[0].slice(0, -2)
		}
		try {
			var i = t.split(" ");
			return {
				heightPadding: n(i[0]),
				widthPadding: n(i[1] || i[0])
			}
		} catch(t) {
			return console.error(e + "样式设置无法解析"),
			{
				wiheightPadding: 0,
				widthPadding: 0
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var h = n(32),
	v = i(h),
	p = n(20),
	_ = i(p),
	m = n(17),
	g = i(m),
	y = n(82),
	x = i(y),
	b = n(16),
	S = i(b),
	w = n(139),
	E = n(240),
	T = n(227),
	A = i(T),
	P = n(391),
	I = i(P),
	k = 32,
	L = {
		left: 1,
		center: 0,
		right: -1
	},
	M = {
		top: 1,
		middle: 0,
		bottom: -1
	},
	C = new I.
default;
	C.text = "",
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		var i = function(e) {
			var n = t.styles[e.styleId];
			return n.text = e.content || w,
			n
		},
		o = []; (0, p.
	default)(t.styles).forEach(function(e) {
			t.styles[e].src && o.push(t.styles[e].src)
		});
		var a = {};
		t.geometries.forEach(function(t) {
			var e = i(t),
			n = e.text;
			n && (0, h.
		default)(n).forEach(function(t) {
				a[t] = 1
			})
		});
		var s = (0, p.
	default)(a);
		e.send("addMarkers", {
			markerSrcs: o,
			glyphs: s
		},
		function(e, o) {
			var a = JSON.parse(o.mapping),
			s = r(t.geometries, a, i);
			n && n(s)
		})
	}
	function r(t, e, n) {
		var i = s(t, e, n),
		o = i.length,
		r = new Float32Array(3 * o),
		u = new Float32Array(2 * o),
		c = new Uint16Array(2 * o),
		d = new Float32Array(4 * o),
		h = new Float32Array(4 * o),
		v = new Uint8ClampedArray(3 * o),
		p = new Float32Array(3 * o),
		g = new Uint8ClampedArray(4 * o),
		x = new Uint8ClampedArray(4 * o),
		b = new Uint16Array(o),
		S = new Uint8ClampedArray(o),
		w = new Uint8ClampedArray(o),
		E = 0,
		T = 0,
		A = 0,
		P = 0,
		I = 0,
		k = 0,
		L = 0,
		M = 0,
		C = 0,
		R = 0,
		B = 0,
		N = 0,
		O = [];
		return i.forEach(function(t) {
			var i = n(t.geometry),
			o = t.geometry.position,
			s = (0, _.splitLatLngNumber)(o.lng),
			D = (0, _.splitLatLngNumber)(o.lat),
			z = o.height;
			r[E] = s.high,
			E += 1,
			r[E] = D.high,
			E += 1,
			r[E] = z,
			E += 1,
			u[T] = s.low,
			T += 1,
			u[T] = D.low,
			T += 1;
			var F = null;
			if (t.src) F = e[t.src],
			c[A] = parseInt(i.width, 10),
			A += 1,
			c[A] = parseInt(i.height, 10),
			A += 1,
			d[P] = i.width / 2 - i.anchor.x,
			P += 1,
			d[P] = i.height / 2 - i.anchor.y,
			P += 1,
			d[P] = t.geometry.properties && "$angle" in t.geometry.properties ? t.geometry.properties.$angle: i.rotate,
			P += 1,
			d[P] = i.faceTo,
			P += 1,
			p[L] = 0,
			L += 1,
			p[L] = 0,
			L += 1,
			p[L] = i.opacity,
			L += 1,
			w[N] = 0,
			N += 1;
			else {
				F = e[t.letter],
				c[A] = i.size,
				A += 1,
				c[A] = i.size,
				A += 1;
				var V = t.offsets[t.offsets.length - 1],
				Y = t.offsets[t.index];
				d[P] = F.width / 2 + Y - V / 2,
				P += 1,
				d[P] = 0,
				P += 1,
				d[P] = 0,
				P += 1,
				d[P] = 1,
				P += 1;
				var U = l(t, F, i);
				p[L] = U.x + i.offset.x,
				L += 1,
				p[L] = U.y + i.offset.y,
				L += 1,
				p[L] = 1,
				L += 1,
				t.offsetToMarkerCenter = {
					x: U.x + i.offset.x,
					y: U.y + i.offset.y
				},
				w[N] = 1,
				N += 1
			}
			h[I] = F.x,
			I += 1,
			h[I] = F.y,
			I += 1,
			h[I] = F.width,
			I += 1,
			h[I] = F.height,
			I += 1;
			var j = new y.
		default(i.color).toUpArray(),
			G = new y.
		default(i.strokeColor).toUpArray(),
			Z = (0, f.
		default)(j, 4);
			g[M] = Z[0],
			g[M + 1] = Z[1],
			g[M + 2] = Z[2],
			g[M + 3] = Z[3],
			M += 4;
			var H = (0, f.
		default)(G, 4);
			x[C] = H[0],
			x[C + 1] = H[1],
			x[C + 2] = H[2],
			x[C + 3] = H[3],
			C += 4,
			b[R] = i.strokeWidth,
			R += 1,
			S[B] = 1,
			B += 1;
			var W = (0, m.encodePickingColor)(t.geometryIndex),
			X = (0, f.
		default)(W, 3);
			v[k] = X[0],
			v[k + 1] = X[1],
			v[k + 2] = X[2],
			k += 3,
			a(t, i, F, O)
		}),
		{
			count: o,
			instancePositionList: r,
			instancePosition64xyLowList: u,
			instanceSizeList: c,
			instanceInfoList: d,
			instanceFrameList: h,
			instancePickingColorList: v,
			instancePixelOffsetList: p,
			instanceColorList: g,
			instanceStrokeColorList: x,
			instanceStrokeWidthList: b,
			instanceShowList: S,
			instanceTypeList: w,
			labelInfoList: O
		}
	}
	function a(t, e, n, i) {
		var o = t.geometryIndex;
		if (i[o]) i[o].lettersCount += 1;
		else {
			var r = t.geometry;
			i[o] = {
				geometryIndex: o,
				geometry: r,
				style: e,
				markerWidth: 0,
				markerHeight: 0,
				fontSize: S,
				labelWidthSum: 0,
				lettersCount: 1,
				offsetToMarkerCenter: {
					x: 0,
					y: 0
				}
			}
		}
		t.src ? (i[o].markerWidth = n.width, i[o].markerHeight = n.height) : (i[o].fontSize = n.fontSize, i[o].labelWidthSum += n.width, i[o].offsetToMarkerCenter = t.offsetToMarkerCenter)
	}
	function s(t, e, n) {
		var i = [];
		return t.forEach(function(t, o) {
			if (t.position) {
				var r = n(t);
				i.push({
					src: r.src,
					geometry: t,
					geometryIndex: o
				});
				var a = r.text;
				if (a) {
					var s = (0, h.
				default)(a),
					l = [0],
					u = 0;
					s.forEach(function(n, r) {
						var s = {
							letter: n,
							index: r,
							offsets: l,
							len: a.length,
							geometry: t,
							geometryIndex: o
						},
						c = e[n];
						u += c ? c.width: b,
						l.push(u),
						i.push(s)
					})
				}
			}
		}),
		i
	}
	function l(t, e, n) {
		var i = u({
			x: 0 - n.anchor.x,
			y: 0 - n.anchor.y
		},
		n.rotate),
		o = u({
			x: n.width - n.anchor.x,
			y: 0 - n.anchor.y
		},
		n.rotate),
		r = u({
			x: 0 - n.anchor.x,
			y: n.height - n.anchor.y
		},
		n.rotate),
		a = u({
			x: n.width - n.anchor.x,
			y: n.height - n.anchor.y
		},
		n.rotate),
		s = Math.min(i.x, o.x, r.x, a.x),
		l = Math.max(i.x, o.x, r.x, a.x),
		c = Math.min(i.y, o.y, r.y, a.y),
		f = Math.max(i.y, o.y, r.y, a.y),
		d = n.size / e.height,
		h = t.offsets[t.offsets.length - 1],
		v = h / 2 * d,
		p = e.height / 2 * d,
		_ = (s + l) / 2,
		m = (c + f) / 2;
		switch (n.direction) {
		case 0:
			break;
		case 1:
			m = c - p;
			break;
		case 2:
			m = f + p;
			break;
		case 3:
			_ = s - v;
			break;
		case 4:
			_ = l + v
		}
		return {
			x: _,
			y: m
		}
	}
	function u(t, e) {
		var n = new x.Vector4(t.x, t.y, 0, 1),
		i = (new x.Matrix4).setRotate( - e, 0, 0, 1),
		o = i.multiplyVector4(n);
		return {
			x: o.elements[0],
			y: o.elements[1]
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var c = n(32),
	f = i(c),
	d = n(82),
	h = i(d),
	v = n(17),
	p = i(v),
	_ = n(139),
	m = n(240),
	g = n(227),
	y = i(g),
	x = n(107),
	b = 32,
	S = 24,
	w = "";
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = t.geometries.map(function(t) {
			return t.paths || []
		}),
		n = new o.PolygonParseHelper({
			complexPolygons: e,
			IndexType: Uint32Array
		});
		n.updatePositions({
			fp64: !0
		});
		var i = n.getPositions();
		return {
			indices: n.getIndices(),
			positions: i,
			positions64xyLow: n.getPositions64xyLow()
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(333);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return new _.
	default(t).toUpArray()
	}
	function r(t, e) {
		var n = function(e) {
			var n = t.styles[e] || x,
			i = o(n.color),
			r = o(n.borderColor),
			a = o(n.eraseColor);
			return {
				color: i.slice(0, 3),
				borderColor: r.slice(0, 3),
				width: n.width,
				borderWidth: n.borderWidth ? 2 * n.borderWidth + n.width: 0,
				opacity: i[3],
				borderOpacity: r[3],
				lineCap: n.lineCap || 0,
				dashArray: n.dashArray,
				arrowInfo: n.arrowInfo,
				eraseColor: a.slice(0, 3),
				eraseOpacity: a[3],
				enableBloom: n.enableBloom
			}
		};
		t.geometries.forEach(function(n) {
			var i = n.rainbowPaths;
			if (i && i.length > 0) {
				var o = [],
				r = [],
				s = !0,
				l = !1,
				u = void 0;
				try {
					for (var f, h = (0, d.
				default)(i.entries()); ! (s = (f = h.next()).done); s = !0) {
						var v = (0, c.
					default)(f.value, 2),
						p = v[0],
						_ = v[1];
						if (p > 0) {
							var g = i[p - 1].path,
							y = g[g.length - 1],
							x = _.path[0];
							if (y.lat === x.lat && y.lng === x.lng) {
								var b = (0, m.deduplicatePoint)(_.path.slice(1));
								o[o.length - 1] = o[o.length - 1].concat(b);
								var S = r[r.length - 1],
								w = S[S.length - 1].end;
								S.push({
									color: _.color,
									borderColor: _.borderColor,
									start: w,
									end: o[o.length - 1].length - 1
								})
							} else o.push((0, m.deduplicatePoint)(_.path)),
							r.push([{
								color: _.color,
								borderColor: _.borderColor,
								start: 0,
								end: _.path.length - 1
							}])
						} else o.push((0, m.deduplicatePoint)(_.path)),
						r.push([{
							color: _.color,
							borderColor: _.borderColor,
							start: 0,
							end: _.path.length - 1
						}])
					}
				} catch(t) {
					l = !0,
					u = t
				} finally {
					try { ! s && h.
						return && h.
						return ()
					} finally {
						if (l) throw u
					}
				}
				n.paths = o,
				n.styleIdList = r
			} else {
				if ((0, m.isSimple)(n.paths) && t._eraseOpts[n.id]) {
					var E = t._eraseOpts[n.id],
					p = E.index,
					T = E.point,
					A = n.paths.slice(p - 1, p + 1);
					if (A.length) {
						var P = a(A[0], A[1], T, p),
						I = P.ptArr,
						k = P.crossIndex,
						L = P.type;
						t._eraseOpts[n.id].crossOpts = {
							ptArr: I,
							crossIndex: k,
							type: L
						},
						"start" === L || "end" === L || n.paths.splice(k, 0, {
							lat: I[0],
							lng: I[1],
							height: 0
						})
					}
				}
				n.paths = (0, m.normalize)(n.paths),
				e && (n.paths = n.paths.map(function(t) {
					return (0, m.cross180)(t)
				}))
			}
		});
		var i = t.geometries.reduce(function(t, e) {
			return t + e.paths.reduce(function(t, e) {
				return t + e.length - 1
			},
			0)
		},
		0),
		r = new Float32Array(3 * i),
		s = new Float32Array(3 * i),
		l = new Float32Array(3 * i),
		u = new Float32Array(3 * i),
		f = new Float32Array(4 * i),
		p = new Uint8ClampedArray(4 * i),
		_ = new Uint8ClampedArray(4 * i),
		g = new Uint8ClampedArray(3 * i),
		y = new Float32Array(1 * i),
		b = new Float32Array(1 * i),
		S = new Uint8ClampedArray(4 * i),
		w = new Uint8ClampedArray(4 * i),
		E = 0,
		T = 0,
		A = 0,
		P = 0,
		I = 0,
		k = 0,
		L = 0,
		M = 0,
		C = 0,
		R = 0;
		return t.geometries.forEach(function(e, i) {
			var a = n(e.styleId),
			c = t._eraseOpts[e.id] || null,
			d = a.color,
			m = a.opacity,
			x = a.borderColor,
			B = a.borderOpacity;
			e.paths.forEach(function(t, n) {
				for (var N = t[0], O = 0; O < t.length; O++) !
				function(O) {
					if (e.rainbowPaths) {
						var D = e.styleIdList[n].find(function(t) {
							return O >= t.start && O <= t.end
						});
						if (D.color) {
							var z = o(D.color);
							a.color = z.slice(0, 3),
							a.opacity = z[3]
						} else a.color = d,
						a.opacity = m;
						if (D.borderColor) {
							var F = o(D.borderColor);
							a.borderColor = F.slice(0, 3),
							a.borderOpacity = F[3]
						} else a.borderColor = x,
						a.borderOpacity = B
					}
					var V = t[O],
					Y = (0, h.splitLatLngNumber)(V.lat),
					U = (0, h.splitLatLngNumber)(V.lng);
					if (O < t.length - 1) {
						r[E] = U.high,
						E += 1,
						r[E] = Y.high,
						E += 1,
						r[E] = V.height,
						E += 1,
						l[A] = V.lng - N.lng,
						A += 1,
						l[A] = V.lat - N.lat,
						A += 1,
						l[A] = 0,
						A += 1,
						N = V;
						var j = t[O + 1],
						G = (0, h.splitLatLngNumber)(j.lat),
						Z = (0, h.splitLatLngNumber)(j.lng);
						f[I] = U.low,
						I += 1,
						f[I] = Y.low,
						I += 1,
						f[I] = Z.low,
						I += 1,
						f[I] = G.low,
						I += 1
					}
					if (O > 0) {
						var H = t[O + 1];
						H || (H = V),
						s[T] = U.high,
						T += 1,
						s[T] = Y.high,
						T += 1,
						s[T] = V.height,
						T += 1,
						u[P] = H.lng - V.lng,
						P += 1,
						u[P] = H.lat - V.lat,
						P += 1,
						u[P] = 0,
						P += 1
					}
					if (O > 0) {
						1 === e.paths.length && c && c.crossOpts.crossIndex >= O ? (p[k] = a.eraseColor[0], _[k] = a.eraseColor[0], k += 1, p[k] = a.eraseColor[1], _[k] = a.eraseColor[1], k += 1, p[k] = a.eraseColor[2], _[k] = a.eraseColor[2], k += 1, p[k] = a.eraseOpacity, _[k] = a.eraseOpacity, k += 1) : (p[k] = a.color[0], _[k] = a.borderColor[0], k += 1, p[k] = a.color[1], _[k] = a.borderColor[1], k += 1, p[k] = a.color[2], _[k] = a.borderColor[2], k += 1, p[k] = a.opacity, _[k] = a.borderOpacity, k += 1);
						var W = (0, v.encodePickingColor)(i);
						g[3 * L + 0] = W[0],
						g[3 * L + 1] = W[1],
						g[3 * L + 2] = W[2],
						L += 1,
						S[C] = a.lineCap,
						C += 1,
						S[C] = a.dashArray[0],
						C += 1,
						S[C] = a.dashArray[1],
						C += 1,
						S[C] = a.enableBloom,
						C += 1,
						y[M] = a.width,
						b[M] = a.borderWidth,
						M += 1,
						w[R] = a.arrowInfo[0],
						R += 1,
						w[R] = a.arrowInfo[1],
						R += 1,
						w[R] = a.arrowInfo[2],
						R += 1,
						w[R] = a.arrowInfo[3],
						R += 1
					}
				} (O)
			})
		}),
		{
			instanceStartPositionList: r,
			instanceEndPositionList: s,
			instanceLeftDeltaList: l,
			instanceRightDeltaList: u,
			instanceStartEndPostions64xyLowList: f,
			instanceColorList: p,
			instanceBorderColorList: _,
			instancePickingColorList: g,
			instanceWidthList: y,
			instanceBorderWidthList: b,
			instanceLineInfoList: S,
			instanceArrowInfoList: w,
			enableGeodesic: e,
			count: i
		}
	}
	function a(t, e, n, i) {
		var o = l(t),
		r = l(e),
		a = l(n),
		u = [r[0] - o[0], r[1] - o[1]],
		c = [a[0] - o[0], a[1] - o[1]],
		f = s(c, u);
		if (f <= 0) return {
			ptArr: t,
			crossIndex: i - 1,
			type: "start"
		};
		var d = s(u, u);
		if (d <= f) return {
			ptArr: e,
			crossIndex: i,
			type: "end"
		};
		if (! (Math.abs(u[0] * c[1] - c[0] * u[1]) <= .3)) return {
			ptArr: e,
			crossIndex: i,
			type: "end"
		};
		var h = f / d,
		v = [o[0] + h * u[0], o[1] + h * u[1]];
		return {
			ptArr: [v[1], v[0]],
			crossIndex: i,
			type: "middle"
		}
	}
	function s(t, e) {
		return t[0] * e[0] + t[1] * e[1]
	}
	function l(t) {
		return [t.lng, t.lat]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var u = n(32),
	c = i(u),
	f = n(27),
	d = i(f),
	h = n(139),
	v = n(240),
	p = n(227),
	_ = i(p),
	m = n(480),
	g = n(339),
	y = i(g),
	x = new y.
default;
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		if (t.getLng() < e.getLng()) {
			n.getLng() >= 0 ? t.lng = 180 : e.lng = -179.9999
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(0),
	a = i(r),
	s = n(1),
	l = i(s),
	u = n(47),
	c = i(u),
	f = n(209),
	d = i(f),
	h = n(397),
	v = i(h),
	p = n(478),
	_ = i(p),
	m = function() {
		function t(e, n) { (0, a.
		default)(this, t),
			this.geometries = e.map(function(t) {
				return t.position = c.
			default.convert(t.position),
				t
			}),
			this.clusters = [],
			this.minimumClusterSize = n.minimumClusterSize,
			this.gridSize = n.gridSize,
			this.averageCenter = n.averageCenter,
			this.projection = new v.
		default
		}
		return (0, l.
	default)(t, [{
			key: "createClusters",
			value: function(t) {
				var e = this,
				n = t.zoom > t.maxZoom; (t.resetCluster || n) && this._resetClusters();
				var i = t.pixelsPerDegree,
				o = new d.
			default(c.
			default.convert(t.mapBounds.sw), c.
			default.convert(t.mapBounds.ne)),
				r = this._getExtendedBounds(o, t.zoom);
				return this.geometries.filter(function(t) {
					return r.contains(t.position) && !t.hasCluster
				}).forEach(function(o) {
					n ? (e._createNewCluster(o, t.zoom), o.hasCluster = !0) : e._addToClosestCluster(o, i, t.zoom)
				}),
				this.clusters.forEach(function(t) {
					t.getGeometries().length < e.minimumClusterSize && e._breakUpCluster(t)
				}),
				this.clusters = this.clusters.filter(function(t) {
					return t.getGeometries().length
				}),
				this.clusters.map(function(t) {
					return t.getClusterInfo()
				})
			}
		},
		{
			key: "_resetClusters",
			value: function() {
				this.clusters.forEach(function(t) {
					return t.remove()
				}),
				this.clusters = [],
				this.geometries.forEach(function(t) {
					return delete t.hasCluster
				})
			}
		},
		{
			key: "_addToClosestCluster",
			value: function(t, e, n) {
				var i = null,
				o = 4e3;
				this.clusters.filter(function(e) {
					return e.isInBounds(t)
				}).forEach(function(n) {
					var r = n.getCenter();
					if (r) {
						var a = (r.lng - t.position.lng) * e[0],
						s = (r.lat - t.position.lat) * e[1],
						l = Math.sqrt(a * a + s * s);
						l < o && (o = l, i = n)
					}
				}),
				i && i.isInBounds(t) ? i.add(t) : this._createNewCluster(t, n),
				t.hasCluster = !0
			}
		},
		{
			key: "_createNewCluster",
			value: function(t, e) {
				var n = new _.
			default(this, e);
				n.add(t),
				this.clusters.push(n)
			}
		},
		{
			key: "_getExtendedBounds",
			value: function(t, e) {
				var n = t.getNorthEast(),
				i = t.getSouthWest(),
				r = this.projection.latLngToCoord(n, e),
				a = this.projection.latLngToCoord(i, e);
				r.x += this.gridSize,
				r.y -= this.gridSize,
				a.x -= this.gridSize,
				a.y += this.gridSize;
				var s = this.projection.coordToLatLng(r, e),
				l = this.projection.coordToLatLng(a, e);
				return o(s, l, t.getCenter()),
				new d.
			default(l, s)
			}
		},
		{
			key: "_breakUpCluster",
			value: function(t) {
				var e = this;
				t.getGeometries().length < 2 || (t.getGeometries().forEach(function(n) {
					e._createNewCluster(n, t.zoom)
				}), t.remove())
			}
		}]),
		t
	} ();
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(648),
	p = i(v),
	_ = n(479),
	m = i(_),
	g = function(t) {
		function e() { (0, s.
		default)(this, e);
			var t = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return t.materials = {
				escalator2: [.34999999403954, .34999999403954, .34999999403954],
				escalator3: [1, 1, 1]
			},
			t
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "parse",
			value: function(t) {
				var e = this,
				n = (0, m.
			default)(t),
				i = n.meshes;
				i.forEach(function(t) {
					var n = t.materials[0] && t.materials[0].name;
					if (n) {
						for (var i = new Float32Array(t.attributes.POSITION.value.length), o = 0; o < i.length; o += 3) i[o] = e.materials[n][0],
						i[o + 1] = e.materials[n][1],
						i[o + 2] = e.materials[n][2];
						t.attributes.COLOR_0 = {
							size: 3,
							value: i
						}
					}
				});
				var o = i.reduce(function(t, e) {
					return t + e.header.vertexCount
				},
				0);
				return {
					mode: 4,
					vertexCount: o,
					attributes: this.mergeAttributes(i, o)
				}
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = (0, E.latLng2Mercator)(t.x || t.lng, t.y || t.lat),
		i = new A.
	default;
		return i.x = n.x - e.x,
		i.y = n.y - e.y,
		i
	}
	function r(t, e) {
		return o((0, E.pixels2LongLat)(t.x, t.y), e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(27),
	s = i(a),
	l = n(82),
	u = i(l),
	c = n(241),
	f = i(c),
	d = n(17),
	h = i(d),
	v = n(16),
	p = i(v),
	_ = n(24),
	m = i(_),
	g = n(32),
	y = i(g),
	x = n(0),
	b = i(x),
	S = n(1),
	w = i(S),
	E = n(380),
	T = n(74),
	A = i(T),
	P = n(47),
	I = i(P),
	k = n(10),
	L = i(k),
	M = n(795),
	C = i(M),
	R = n(397),
	B = i(R),
	N = n(332),
	O = n(379),
	D = n(278),
	z = function() {
		function t(e, n) { (0, b.
		default)(this, t),
			this.buildingId = e,
			this.dataView = n.buffer,
			this.zoom = 20,
			this.areaCenter = (0, E.latLng2Mercator)(n.areaCenter.lng, n.areaCenter.lat),
			this.floorInfo = n.floorInfo,
			this.selectedFloorNum = n.selectedFloorNum,
			this.indoorStyle = n.indoorStyle,
			this.projection = new B.
		default,
			this._initialize()
		}
		return (0, w.
	default)(t, [{
			key: "_initialize",
			value: function() {
				var t = this,
				e = (0, y.
			default)(this.floorInfo.bounds, 2),
				n = e[0],
				i = e[1],
				r = [new I.
			default(i.lat, n.lng), n, new I.
			default(n.lat, i.lng), i],
				a = r.map(function(e) {
					return o(e, t.areaCenter)
				}),
				s = {
					displayType: 2,
					gateNum: 0,
					gates: [],
					height: 0,
					point: a,
					regionId: "",
					brickness: 1
				},
				l = this._translateLatLngForSingleRegion(s, 0, !0, null, 0);
				l.isWall = !1,
				this._boundsRegion = l
			}
		},
		{
			key: "parseBuilding",
			value: function() {
				var t = this.buildingId,
				e = new DataView(this.dataView.buffer),
				n = 0,
				i = {};
				i.Attribute_size = e.getInt32(n, !0),
				n += 4,
				i.Data_size = e.getInt32(n, !0),
				n += 4,
				i.Topology_size = e.getInt32(n, !0),
				n += 4,
				i.Name_CN_size = e.getUint8(n, !0),
				n += 1,
				i.Name_CN = String.fromCharCode.apply(String, (0, m.
			default)(new Uint16Array(e.buffer.slice(n, n + i.Name_CN_size)))),
				n += i.Name_CN_size,
				i.DefaultFloor = e.getUint8(n, !0),
				n += 1,
				i.Floor_num = e.getUint8(n, !0),
				n += 1,
				i.Floor_str_size = e.getUint8(n, !0),
				n += 1;
				for (var o = [], r = 0; r < i.Floor_str_size; r++) {
					var a = e.getUint8(n, !0);
					o.push(a),
					n += 1
				}
				i.floorStr = String.fromCharCode.apply(null, o);
				for (var s = [], l = 0; l < 4; l++) {
					var u = e.getInt32(n, !0);
					s.push(u),
					n += 4
				}
				i.Floor_num = e.getInt32(n, !0),
				n += 4;
				for (var c = [], f = 0; f < i.Floor_num; f++) {
					var d = e.getInt32(n, !0);
					c.push(d),
					n += 4
				}
				for (var h = [], v = [], p = [], _ = [], g = [], y = [], x = [], b = [], S = [], w = [], E = [], T = 0; T < i.Floor_num; T++) if (T === this.selectedFloorNum + 1) {
					var A = T,
					P = [],
					I = [],
					k = [],
					L = [],
					M = [],
					C = [],
					R = [],
					B = [],
					N = [],
					O = [],
					D = A,
					z = e.getInt32(n, !0);
					n += 4;
					for (var F = [], V = 0; V < z; V++) {
						var Y = {},
						U = e.getInt32(n, !0);
						n += 4;
						var j = e.getInt32(n, !0);
						Y.type = U,
						Y.size = j,
						F.push(Y),
						n += 4
					}
					for (var G = 0; G < z; G++) {
						var Z = F[G].type,
						H = F[G].size,
						W = G;
						if (9 === Z) {
							var X = this._parseFloorPointLayer(e, n, D, {
								nowFloorPoints22: L,
								nowFloorPoints21: M,
								nowFloorPoints20: C,
								nowFloorPoints19: R,
								nowFloorPoints18: B,
								nowFloorPoints17: N,
								nowFloorPoints16: O
							});
							n += H,
							L = X.nowFloorPoints22,
							M = X.nowFloorPoints21,
							C = X.nowFloorPoints20,
							R = X.nowFloorPoints19,
							B = X.nowFloorPoints18,
							N = X.nowFloorPoints17,
							O = X.nowFloorPoints16
						} else if (4 === Z) {
							var Q = this._parseFloorRegionLayer(e, n, G);
							n += H;
							var q = Q.nowLayerRegions,
							K = Q.nowLayerEscalatorRegions;
							0 === I.length && P.push({
								styleId: q.styleId,
								points: [this._boundsRegion],
								layerId: W
							}),
							K.length > 0 && k.push.apply(k, (0, m.
						default)(K)),
							I.push(q)
						} else if (11 === Z) {
							n += H;
							continue
						}
					}
					for (var J = [], $ = 0; $ < 4; $++) {
						var tt = e.getUint8(n, !0);
						J.push(tt),
						n += 1
					}
					p[A] = P,
					h[A] = I,
					v[A] = k,
					x[A] = this._refactorFloorPoints(C, t, A),
					b[A] = this._refactorFloorPoints(R, t, A),
					S[A] = this._refactorFloorPoints(B, t, A),
					w[A] = this._refactorFloorPoints(N, t, A),
					E[A] = this._refactorFloorPoints(O, t, A);
					var et = {};
					et.zoom22 = g,
					et.zoom21 = y,
					et.zoom20 = x,
					et.zoom19 = b,
					et.zoom18 = S,
					et.zoom17 = w,
					et.zoom16 = E
				} else n += c[T];
				return i.floorBoundsData = p,
				i.buildingData = h,
				i.buildingEscalator = v,
				i.buildingPoint = et,
				i.buildingLine = _,
				i
			}
		},
		{
			key: "_parseFloorPointLayer",
			value: function(t, e, n, i) {
				var o = i.nowFloorPoints22,
				r = i.nowFloorPoints21,
				a = i.nowFloorPoints20,
				s = i.nowFloorPoints19,
				l = i.nowFloorPoints18,
				u = i.nowFloorPoints17,
				c = i.nowFloorPoints16;
				e += 2,
				e += 2;
				var f = t.getInt32(e, !0);
				e += 4;
				for (var d = [], h = [], v = 0; v < f; v++) {
					var p = {},
					_ = (0, E.readUint24)(new Uint8Array(t.buffer.slice(e, e + 3))),
					g = 4095 & _;
					g ^= 65536,
					p.classCode = g;
					var y = _ >> 12 & 15,
					x = _ >> 16 & 255;
					e += 3;
					var b = t.getUint16(e, !0);
					e += 2,
					p.hPoi_count = b;
					var S = t.getInt32(e, !0);
					e += 4,
					p.poiPriority = S;
					var w = t.getUint8(e, !0);
					e += 1,
					p.Strace = w;
					var T = {};
					T.strace16 = 1 & w,
					T.strace17 = 2 & w,
					T.strace18 = 4 & w,
					T.strace19 = 8 & w,
					T.strace20 = 16 & w,
					T.strace21 = 32 & w,
					T.strace22 = 64 & w,
					p.zoomStrace = T;
					var A = t.getUint32(e, !0);
					e += 4,
					p.direct = A;
					var P = String.fromCharCode.apply(String, (0, m.
				default)(new Uint16Array(t.buffer.slice(e, e + 2 * y))));
					e += 2 * y,
					p.Name_str1 = P;
					var I = x - y,
					k = String.fromCharCode.apply(String, (0, m.
				default)(new Uint16Array(t.buffer.slice(e, e + 2 * I))));
					h.push(k),
					e += 2 * I,
					p.Name_str2 = k,
					d.push(p)
				}
				for (var M = [], C = 0; C < d.length; C++) for (var R = d[C].hPoi_count, B = 0; B < R; B++) {
					var N = t.getInt32(e, !0);
					e += 4;
					var O = t.getInt32(e, !0);
					e += 4;
					var D = (0, E.pixels2LongLat)(N, O);
					M.push(D)
				}
				var z = new Uint8Array(t.buffer.slice(e, e + 4));
				z = String.fromCharCode.apply(null, z),
				z = z.toUpperCase(),
				e += 4;
				var F = [];
				if ("EXPH" === z) for (var V = 0; V < f; V++) {
					var Y = t.getUint16(e, !0);
					e += 2,
					F.push(Y)
				}
				z = new Uint8Array(t.buffer.slice(e, e + 4)),
				z = String.fromCharCode.apply(null, z),
				z = z.toUpperCase(),
				e += 4;
				var U = [];
				if ("EXNR" === z) {
					for (var j = [], G = 0; G < f; G++) {
						var Z = t.getUint16(e, !0);
						e += 2;
						for (var H = 15 & Z,
						W = [], X = 0; X < H; X++) W.push(t.getUint8(e, !0)),
						e += 1;
						j.push(W)
					}
					for (var Q = 0; Q < j.length; Q++) {
						for (var q = [], K = j[Q], J = 0; J < K.length; J++) {
							var $ = new Uint16Array(t.buffer.slice(e, e + 2 * K[J])),
							tt = String.fromCharCode.apply(null, $);
							q.push(tt),
							e += 2 * K[J]
						}
						U.push(q)
					}
				}
				for (var et = 0; et < M.length; et++) {
					for (var nt = {},
					it = [], ot = d[et].hPoi_count, rt = 0; rt < ot; rt++);
					var at = "";
					d[et].Name_str2 && (at = "\\" + d[et].Name_str2),
					it.push(M[et]),
					nt.points = it,
					nt.styleId = d[et].classCode,
					nt.rank = d[et].poiPriority,
					nt.uuid = L.
				default.uniqueId(),
					nt.text = d[et].Name_str1 + at,
					nt.buildingId = this.buildingId;
					var st = d[et].zoomStrace;
					if (0 !== st.strace20) {
						var lt = d[et].direct;
						lt = lt >> 16 & 15;
						var ut = (0, E.extendCopy)(nt);
						ut.direct = lt;
						var ct = F[et],
						ft = this._translateLatLngPointForSinglePoint(ut, ct, n, a.length);
						a.push(ft)
					}
					if (0 !== st.strace19) {
						var dt = d[et].direct;
						dt = dt >> 12 & 15;
						var ht = (0, E.extendCopy)(nt);
						ht.direct = dt;
						var vt = F[et],
						pt = this._translateLatLngPointForSinglePoint(ht, vt, n, s.length);
						s.push(pt)
					}
					if (0 !== st.strace18) {
						var _t = d[et].direct;
						_t = _t >> 8 & 15;
						var mt = (0, E.extendCopy)(nt);
						mt.direct = _t;
						var gt = F[et],
						yt = this._translateLatLngPointForSinglePoint(mt, gt, n, l.length);
						l.push(yt)
					}
					if (0 !== st.strace17) {
						var xt = d[et].direct;
						xt = xt >> 4 & 15;
						var bt = (0, E.extendCopy)(nt);
						bt.direct = xt;
						var St = F[et],
						wt = this._translateLatLngPointForSinglePoint(bt, St, n, u.length);
						u.push(wt)
					}
					if (0 !== st.strace16) {
						var Et = d[et].direct;
						Et &= 15;
						var Tt = (0, E.extendCopy)(nt);
						Tt.direct = Et;
						var At = F[et],
						Pt = this._translateLatLngPointForSinglePoint(Tt, At, n, c.length);
						c.push(Pt)
					}
				}
				return {
					offset: e,
					nowFloorPoints22: o,
					nowFloorPoints21: r,
					nowFloorPoints20: a,
					nowFloorPoints19: s,
					nowFloorPoints18: l,
					nowFloorPoints17: u,
					nowFloorPoints16: c
				}
			}
		},
		{
			key: "_parseFloorRegionLayer",
			value: function(t, e, n) {
				var i = this,
				o = {};
				e += 2;
				var a = t.getUint16(e, !0);
				e += 2,
				e += 4;
				var s = t.getInt32(e, !0);
				e += 4;
				for (var l = [], u = 0; u < s; u++) {
					var c = t.getInt32(e, !0);
					l.push(c),
					e += 4
				}
				for (var f = [], d = {},
				h = 0, v = 0; v < s; v++) {
					d[v] = {},
					d[v].start = h;
					var _ = t.getUint16(e, !0);
					f.push(_),
					h += _,
					d[v].end = h,
					e += 2
				}
				for (var g = [], y = 0; y < h; y++) {
					var x = t.getUint32(e, !0);
					e += 4;
					var b = t.getUint32(e, !0);
					e += 4;
					var S = {
						x: x,
						y: b
					};
					g.push(S)
				}
				var w = new Uint8Array(t.buffer.slice(e, e + 4));
				w = String.fromCharCode.apply(null, w),
				w = w.toUpperCase(),
				e += 4;
				var E = [];
				if ("EXPI" === w) {
					for (var T = [], A = 0; A < s; A++) {
						var P = t.getUint8(e, !0);
						T.push(P),
						e += 1
					}
					for (var I = 0; I < T.length; I++) {
						var k = T[I],
						L = String.fromCharCode.apply(String, (0, m.
					default)(new Uint8Array(t.buffer.slice(e, e + k))));
						E.push(L),
						e += T[I]
					}
				}
				if (w = new Uint8Array(t.buffer.slice(e, e + 4)), w = String.fromCharCode.apply(null, w), w = w.toUpperCase(), e += 4, "EXMP" === w) for (var M = 0; M < g.length; M++) {
					var C = t.getUint8(e, !0);
					e += 1;
					var R = t.getUint8(e, !0);
					e += 1,
					g[M].x += C / 100,
					g[M].y += R / 100
				}
				for (var B = [], N = 0, O = 0; O < f.length; O++) {
					var D = void 0;
					D = 0 === O ? g.slice(O, f[O]) : g.slice(N, N + f[O]),
					N += f[O],
					B.push(D)
				}
				for (var z = [], F = 0; F < B.length; F++) {
					var V = B[F].map(function(t) {
						return r(t, i.areaCenter)
					}),
					Y = E[F],
					U = {
						point: V,
						height: l[F],
						regionId: Y
					};
					z.push(U)
				}
				if (w = new Uint8Array(t.buffer.slice(e, e + 4)), w = String.fromCharCode.apply(null, w), w = w.toUpperCase(), e += 4, "EX3D" === w) for (var j = 0; j < z.length; j++) {
					var G = t.getInt8(e, !0);
					e += 1;
					var Z = t.getUint8(e, !0);
					e += 1;
					var H = t.getUint8(e, !0);
					e += 1;
					var W = t.getInt16(e, !0);
					e += 2;
					var X = t.getUint16(e, !0);
					e += 2;
					var Q = t.getUint16(e, !0);
					e += 2;
					var q = t.getUint32(e, !0);
					e += 4;
					var K = t.getUint32(e, !0);
					e += 4,
					z[j].height = G / 10,
					z[j].displayType = Z,
					z[j].brickness = H,
					z[j].angle = W,
					z[j].rectWidth = X,
					z[j].rectHeight = Q,
					z[j].centerX = q,
					z[j].centerY = K
				}
				if (w = new Uint8Array(t.buffer.slice(e, e + 4)), w = String.fromCharCode.apply(null, w), w = w.toUpperCase(), e += 4, "EXGT" === w) for (var J = 0; J < z.length; J++) {
					var $ = z[J],
					tt = t.getUint16(e, !0);
					if (e += 2, $.gateNum = tt, $.gates = [], tt > 0) {
						for (var et = 0; et < tt; et++) {
							var nt = {};
							nt.hasCelling = !!t.getUint8(e, !0),
							e += 1,
							$.gates.push(nt)
						}
						for (var it = 0; it < tt; it++) {
							var ot = $.gates[it];
							ot.pt = [{},
							{}];
							for (var rt = 0; rt < 2; rt++) ot.pt[rt].x = t.getUint32(e, !0),
							e += 4,
							ot.pt[rt].y = t.getUint32(e, !0),
							e += 4,
							ot.pt[rt].x += t.getUint8(e, !0) / 100,
							e += 1,
							ot.pt[rt].y += t.getUint8(e, !0) / 100,
							e += 1
						}
					}
				}
				for (var at = [], st = [], lt = 0; lt < z.length; lt++) {
					var ut = z[lt],
					ct = null;
					if (1 === ut.displayType) ct = this._translateLatLngForSingleRegion(ut, n, !1);
					else {
						if (4 === ut.displayType) {
							st.push(ut);
							continue
						}
						var ft = this._extrudePolygon(ut.point, 0 === n ? 0 : 1, .2,
						function(t, e, n) {
							return 0 === e ? n[n.length - 1] : n[e - 1]
						},
						function(t, e, n) {
							return e === n.length - 1 ? n[0] : n[e + 1]
						}),
						dt = (0, p.
					default)({},
						ut, {
							point: ft
						});
						ct = this._translateLatLngForSingleRegion(dt, 0, !0, null, 0 === n ? 0 : .5)
					}
					ct.originRegion = ut,
					ct.isWall = !1,
					at.push(ct)
				}
				var ht = this._getWallRegions(at, n);
				return o.styleId = 196608 ^ a,
				o.points = [].concat(at, (0, m.
			default)(ht)),
				o.layerId = n,
				{
					offset: e,
					nowLayerRegions: o,
					nowLayerEscalatorRegions: st
				}
			}
		},
		{
			key: "_getWallRegions",
			value: function(t, e) {
				for (var n = this,
				i = [], o = t, r = o.slice(), a = 0; a < r.length; a++) { (function(t) {
						var o = r[t],
						a = o.originRegion;
						if (2 !== a.displayType) return "continue";
						var s = a.point,
						l = s[0],
						u = s;
						u[0].x === u[u.length - 1].x && u[0].y === u[u.length - 1].y || u.push(u[0]),
						(0, E.isClockWise)(u) && u.reverse();
						var c = {},
						f = a.gates.map(function(t) {
							return {
								hasCelling: t.hasCelling,
								pt: t.pt.map(function(t) {
									var e = (0, E.pixels2LongLat)(t.x, t.y),
									i = (0, E.latLng2Mercator)(e.x, e.y),
									o = {};
									return o.x = i.x - n.areaCenter.x,
									o.y = i.y - n.areaCenter.y,
									new A.
								default(o.x, o.y)
								})
							}
						}).filter(function(t) {
							var e = t.pt.reduce(function(t, e) {
								return "" + t + e.x + "+" + e.y + ";"
							},
							"");
							if (!c[e]) return c[e] = !0,
							!0
						}),
						d = [[]],
						h = 0;
						u.forEach(function(t, e) {
							if (e !== u.length - 1) {
								d[h].push(t);
								var n = u[e + 1],
								i = n.clone().sub(t),
								o = i.clone().normalize(),
								r = [];
								f.forEach(function(e) {
									var a = e.pt[1].clone().sub(e.pt[0]),
									s = a.clone().normalize(),
									l = Math.abs(i.x * a.y - a.x * i.y),
									u = l <= .3,
									c = e.pt[0].x >= Math.min(t.x, n.x) && e.pt[0].x <= Math.max(t.x, n.x) && e.pt[0].y >= Math.min(t.y, n.y) && e.pt[0].y <= Math.max(t.y, n.y) && e.pt[1].x >= Math.min(t.x, n.x) && e.pt[1].x <= Math.max(t.x, n.x) && e.pt[1].y >= Math.min(t.y, n.y) && e.pt[1].y <= Math.max(t.y, n.y);
									if (u && c) {
										var f = e.pt.slice();
										o.dot(s) + 1 < .1 && f.reverse(),
										r.push(f)
									}
								}),
								r.sort(function(e, n) {
									return e[0].clone().sub(t).lengthSq() - n[0].clone().sub(t).lengthSq()
								});
								var a = [];
								r.forEach(function(t) {
									if (0 === a.length) a.push(t);
									else {
										var e = a[a.length - 1]; (Math.abs(t[0].x - e[0].x) > .1 || Math.abs(t[0].y - e[0].y) > .1) && a.push(t)
									}
								}),
								a.forEach(function(t) {
									d[h].push(t[0]),
									h += 1,
									d[h] = [t[1]]
								})
							}
						}),
						d[h].push(l);
						var v = null;
						if (d.length > 1) {
							var _ = d[0],
							g = _[0],
							y = d[d.length - 1],
							x = y[y.length - 1];
							x.x === g.x && x.y === g.y && (d.shift(), y.pop(), y.push.apply(y, (0, m.
						default)(_)))
						}
						v = d.map(function(t) {
							var i = t,
							o = i.slice().reverse(),
							r = n._extrudePolygon(o, 0 === e ? 1 : -1, .2,
							function(t, e, n) {
								return 0 === e ? 1 === d.length ? n[n.length - 2] : t: n[e - 1]
							},
							function(t, e, n) {
								return e === n.length - 1 ? 1 === d.length ? n[1] : t: n[e + 1]
							}),
							a = [].concat((0, m.
						default)(i), (0, m.
						default)(r));
							return (0, E.isClockWise)(a) && 0 === e && a.reverse(),
							a
						}),
						v.forEach(function(t) {
							var e = (0, p.
						default)({},
							a);
							e.point = t;
							var o = n._translateLatLngForSingleRegion(e, 1, !1, t.holeIndecies);
							o.height /= 10,
							o.isWall = !0,
							i.push(o)
						})
					})(a)
				}
				return i
			}
		},
		{
			key: "_extrudePolygon",
			value: function(t, e, n, i, o) {
				var r = t;
				return r.map(function(t, a) {
					var s = i(t, a, r),
					l = o(t, a, r),
					u = t.clone().sub(s).normalize(),
					c = l.clone().sub(t).normalize(),
					f = new A.
				default( - u.y, u.x),
					d = new A.
				default( - c.y, c.x),
					h = 0 === a ? d: f,
					v = u.clone().add(c).normalize(),
					p = new A.
				default( - v.y, v.x),
					_ = Math.abs(p.dot(h)),
					m = p.clone().mult(e).mult(n / (Math.abs(_ - 0) < .1 ? 1 : _));
					return t.clone().add(m)
				})
			}
		},
		{
			key: "getEscalatorAttributes",
			value: function(t) {
				var e = this,
				n = new Float32Array(2 * t.length),
				i = new Int16Array(4 * t.length);
				return t.forEach(function(t, o) {
					var r = (0, E.pixels2LongLat)(t.centerX, t.centerY),
					a = (0, E.latLng2Mercator)(r.x, r.y);
					n[2 * o] = a.x - e.areaCenter.x,
					n[2 * o + 1] = a.y - e.areaCenter.y,
					i[4 * o] = t.rectWidth,
					i[4 * o + 1] = t.rectHeight,
					i[4 * o + 2] = t.height,
					i[4 * o + 3] = t.angle
				}),
				{
					instanceCoordsTypeArray: n,
					instanceInfosTypeArray: i,
					count: t.length
				}
			}
		},
		{
			key: "getTopGeometryAttributes",
			value: function(t) {
				var e = this,
				n = this.zoom,
				i = t.reduce(function(t, e) {
					return t + e.points.reduce(function(t, e) {
						return t + (e.point && e.point.length || 0)
					},
					0)
				},
				0),
				o = t.reduce(function(t, e) {
					return t + e.points.reduce(function(t, e) {
						return t + (e.index.top && e.index.top.length || 0)
					},
					0)
				},
				0),
				r = o > 65535 ? new Uint32Array(o) : new Uint16Array(o),
				a = new Float32Array(i),
				s = new Uint8ClampedArray(i),
				l = 0,
				u = 0;
				t.forEach(function(t) {
					var i = t.styleId,
					o = (0, N.getStyle)(i, n, e.indoorStyle);
					o && t.points.forEach(function(t) {
						if (!t._fail) {
							var e = l,
							n = u;
							t.index.top && (t.index.top.forEach(function(t, i) {
								r[n + i] = t + e / 3
							}), t.point.forEach(function(n, i) {
								a[e + i] = n,
								s[e + i] = t.isWall ? o.topStyle[i % 3] : o.bottomStyle[i % 3]
							}), u += t.index.top.length, l += t.point.length)
						}
					})
				});
				var c = this._computeNormals(a, r);
				return {
					color: s,
					position: a,
					index: r,
					normal: c
				}
			}
		},
		{
			key: "getSidesGeometryAttributes",
			value: function(t) {
				var e = this,
				n = this.zoom,
				i = t.reduce(function(t, e) {
					return t + e.points.reduce(function(t, e) {
						return t + (e.index.sides && 6 * e.index.sides.length * 3 || 0)
					},
					0)
				},
				0),
				o = t.reduce(function(t, e) {
					return t + e.points.reduce(function(t, e) {
						return t + (e.index.sides && 6 * e.index.sides.length || 0)
					},
					0)
				},
				0),
				r = o > 65535 ? new Uint32Array(o) : new Uint16Array(o),
				a = new Float32Array(i),
				s = new Uint8ClampedArray(i),
				l = 0,
				u = 0;
				t.forEach(function(t) {
					var i = t.styleId,
					o = (0, N.getStyle)(i, n, e.indoorStyle);
					o && t.points.forEach(function(t) {
						if (!t._fail) {
							var e = l,
							n = u;
							if (t.index.sides) {
								var i = t.index.top,
								c = Math.max.apply(null, i || [0]);
								t.index.sides.forEach(function(i, l) {
									var u = t.isWall && c > 0 && i.every(function(t) {
										return t > c ? t - c >= c / 2 : t >= c / 2
									});
									i.forEach(function(i, c) {
										var f = t.point[3 * i],
										d = t.point[3 * i + 1],
										h = t.point[3 * i + 2],
										v = e + 6 * l * 3 + 3 * c;
										a[v + 0] = f,
										a[v + 1] = d,
										a[v + 2] = h,
										s[v + 0] = u ? o.insideStyle[0] : o.outsideStyle[0],
										s[v + 1] = u ? o.insideStyle[1] : o.outsideStyle[1],
										s[v + 2] = u ? o.insideStyle[2] : o.outsideStyle[2];
										var p = e / 3 + 6 * l + c;
										r[n + 6 * l + c] = p
									})
								}),
								l += 6 * t.index.sides.length * 3,
								u += 6 * t.index.sides.length
							}
						}
					})
				});
				var c = this._computeNormals(a, r);
				return {
					color: s,
					position: a,
					index: r,
					normal: c
				}
			}
		},
		{
			key: "getBuildingPointInfo",
			value: function(t) {
				var e = this.indoorStyle,
				n = {},
				i = "",
				o = []; (0, h.
			default)(t).forEach(function(r) {
					var a = parseInt(r.replace("zoom", ""), 10);
					n[r] = [],
					t[r].forEach(function(t, s) {
						return n[r][s] = [],
						t.directs.map(function(l, u) {
							var c = t.styleIds[u],
							f = t.texts[u],
							d = t.ranks[u],
							h = t.positions.slice(3 * u, 3 * u + 3),
							v = (0, N.getStyle)(c, a, e);
							if (v) {
								var p = (0, N.getStyle)(v.labelid, a, e);
								if (p) {
									var _ = v.icon_offset,
									m = null,
									g = p.fontSize,
									y = p.font,
									x = (0, E.getPoiDrawInfo)(c, a, l, e);
									x.drawIcon && (m = O.ConfigUtil.getIconSrc(_), o.push(m)),
									i += f;
									var b = {
										direct: l,
										styleId: c,
										text: f,
										rank: d,
										font: y,
										fontSize: g,
										position: [h[0], h[1], h[2]],
										iconSrc: m,
										drawInfo: x
									};
									n[r][s].push(b)
								}
							}
						})
					}),
					n[r].shift()
				});
				var r = new f.
			default(i.split("")),
				a = (0, u.
			default)(r),
				s = new f.
			default(o);
				return o = (0, u.
			default)(s),
				{
					pointInfoSet: n,
					glyphList: a,
					iconSrcList: o
				}
			}
		},
		{
			key: "parseInstanceBuildingPoint",
			value: function(t, e, n, i) {
				var o = this.indoorStyle;
				return (0, h.
			default)(t).forEach(function(r) {
					var a = parseInt(r.replace("zoom", ""), 10);
					t[r].filter(function(t) {
						return !! t
					}).forEach(function(t, r) {
						var s = 0,
						l = [],
						c = [],
						f = [],
						d = [],
						h = [],
						v = [],
						p = i[a][r];
						t.forEach(function(t, i) {
							var r = p[i],
							_ = (0, N.getStyle)(t.styleId, a, o),
							g = (0, N.getStyle)(_.labelid, a, o);
							if (r.forEach(function(e) {
								return e.rank = t.rank
							}), t.drawInfo.drawIcon) {
								var y = e[t.iconSrc];
								if (y) {
									var x = O.INDOOR_ICON_SIZE / 2,
									b = O.INDOOR_ICON_SIZE / 2;
									l.push(t.position[0], t.position[1], 0),
									c.push(O.INDOOR_ICON_SIZE, O.INDOOR_ICON_SIZE, x, b),
									f.push(y.x, y.y, y.width, y.height),
									d.push(0, 1, -1, 1),
									h.push(1, 1, 1, 1),
									v.push(0, 0, 0, 0),
									r.iconSymbolIndex = s,
									s += 1
								}
							}
							t.drawInfo.drawLabel && r.forEach(function(e) {
								var i = e.anchor,
								o = e.textBounds,
								r = o.w,
								a = o.h,
								p = new Uint16Array(e.text.length),
								_ = e.text.length,
								y = [0],
								x = 0,
								b = 0; (0, u.
							default)(e.text).forEach(function(e) {
									var i = t.fontSize / n[e].fontSize;
									x = y[y.length - 1] + n[e].width * i,
									b = Math.max(b, n[e].height * i),
									y.push(x)
								});
								for (var S = Math.max(1, x / r, b / a), w = {
									x: x / 2 - i.x * S,
									y: b / 2 - i.y * S
								},
								E = 0; E < _; E++) {
									var T = n[e.text[E]],
									A = t.fontSize / T.fontSize;
									l.push(t.position[0], t.position[1], 0),
									c.push(T.width * A, T.height * A, w.x - y[E], w.y),
									f.push(T.x, T.y, T.width, T.height),
									d.push(0, 1, 0, 1),
									h.push.apply(h, (0, m.
								default)(g.fillStyle)),
									v.push.apply(v, (0, m.
								default)(g.strokeStyle)),
									p[E] = s,
									s += 1
								}
								e.textSymbolIndexList = p,
								e.instance_trans = t.position,
								e.instance_coords = [x, b, w.x, w.y]
							})
						});
						var _ = new Float32Array(l),
						g = new Float32Array(c),
						y = new Float32Array(f),
						x = new Float32Array(d),
						b = new Uint8ClampedArray(h),
						S = new Uint8ClampedArray(v);
						p.instance = {
							isIndoor: !0,
							instanceTransTypeArray: _,
							instanceCoordsTypeArray: g,
							instanceTextBoundsTypeArray: y,
							instanceInfosTypeArray: x,
							instanceColorsTypeArray: b,
							instanceStrokeColorsTypeArray: S,
							count: d.length / 4
						}
					})
				}),
				i
			}
		},
		{
			key: "_computeNormals",
			value: function(t, e) {
				var n = t,
				i = new Float32Array(t.length),
				o = void 0,
				r = void 0,
				a = void 0,
				s = C.
			default.create(),
				l = C.
			default.create(),
				u = C.
			default.create(),
				c = C.
			default.create(),
				f = C.
			default.create();
				if (e) for (var d = e,
				h = 0; h < d.length; h += 3) o = 3 * d[h + 0],
				r = 3 * d[h + 1],
				a = 3 * d[h + 2],
				s[0] = n[o + 0],
				s[1] = n[o + 1],
				s[2] = n[o + 2],
				l[0] = n[r + 0],
				l[1] = n[r + 1],
				l[2] = n[r + 2],
				u[0] = n[a + 0],
				u[1] = n[a + 1],
				u[2] = n[a + 2],
				C.
			default.subtract(c, u, l),
				C.
			default.subtract(f, s, l),
				C.
			default.cross(c, c, f),
				i[o] += c[0],
				i[o + 1] += c[1],
				i[o + 2] += c[2],
				i[r] += c[0],
				i[r + 1] += c[1],
				i[r + 2] += c[2],
				i[a] += c[0],
				i[a + 1] += c[1],
				i[a + 2] += c[2];
				else for (var v = 0; v < n.length; v += 9) s[0] = n[v + 0],
				s[1] = n[v + 1],
				s[2] = n[v + 2],
				l[0] = n[v + 3],
				l[1] = n[v + 4],
				l[2] = n[v + 5],
				u[0] = n[v + 6],
				u[1] = n[v + 7],
				u[2] = n[v + 8],
				C.
			default.subtract(c, u, l),
				C.
			default.subtract(f, s, l),
				C.
			default.cross(c, c, f),
				i[o] += c[0],
				i[o + 1] += c[1],
				i[o + 2] += c[2],
				i[r] += c[0],
				i[r + 1] += c[1],
				i[r + 2] += c[2],
				i[a] += c[0],
				i[a + 1] += c[1],
				i[a + 2] += c[2];
				for (var p = C.
			default.create(), _ = 0; _ < i.length; _ += 3) p[0] = i[_ + 0],
				p[1] = i[_ + 1],
				p[2] = i[_ + 2],
				C.
			default.normalize(p, p),
				i[_ + 0] = p[0],
				i[_ + 1] = p[1],
				i[_ + 2] = p[2];
				return i
			}
		},
		{
			key: "_translateLatLngPointForSinglePoint",
			value: function(t, e, n) {
				var i = (0, p.
			default)({},
				t),
				o = i.points[0],
				r = (0, E.latLng2Mercator)(o.x, o.y);
				return i.points = [{
					x: r.x - this.areaCenter.x,
					y: r.y - this.areaCenter.y,
					z: e
				}],
				i.height = this.poiHeight / 9,
				i.floorId = n,
				i
			}
		},
		{
			key: "_translateLatLngForSingleRegion",
			value: function(t, e, n, i, o) {
				var r = e,
				a = "",
				l = t,
				u = l.height,
				c = t,
				f = c.regionId;
				t = t.point;
				var d = {},
				h = [],
				v = [];
				d.height = u;
				var p = "";
				if (t.length >= 3 && (0 === r ? (p = "bottom", a = "floor") : p = "other", h = this.cutTrianleRegion(t, p, i)), "bottom" !== p && !n) {
					var _ = !0,
					m = !1,
					g = void 0;
					try {
						for (var y, x = (0, s.
					default)(t); ! (_ = (y = x.next()).done); _ = !0) {
							var b = y.value;
							v.push(b.x),
							v.push(b.y),
							v.push(u)
						}
					} catch(t) {
						m = !0,
						g = t
					} finally {
						try { ! _ && x.
							return && x.
							return ()
						} finally {
							if (m) throw g
						}
					}
				}
				var S = !0,
				w = !1,
				E = void 0;
				try {
					for (var T, A = (0, s.
				default)(t); ! (S = (T = A.next()).done); S = !0) {
						var P = T.value;
						v.push(P.x),
						v.push(P.y),
						v.push(o || 0)
					}
				} catch(t) {
					w = !0,
					E = t
				} finally {
					try { ! S && A.
						return && A.
						return ()
					} finally {
						if (w) throw E
					}
				}
				return d.index = {
					top: h.top || "",
					sides: h.sides || "",
					bottom: h.bottom || ""
				},
				d.point = v,
				d.type = a,
				d.regionId = f,
				d
			}
		},
		{
			key: "cutTrianleRegion",
			value: function(t, e, n) {
				var i = t,
				o = [],
				r = !0,
				a = !1,
				l = void 0;
				try {
					for (var u, c = (0, s.
				default)(i); ! (r = (u = c.next()).done); r = !0) {
						var f = u.value;
						o.push(f.x),
						o.push(f.y)
					}
				} catch(t) {
					a = !0,
					l = t
				} finally {
					try { ! r && c.
						return && c.
						return ()
					} finally {
						if (a) throw l
					}
				}
				var d = n && n.length > 0 ? D(o, n) : D(o);
				if ("bottom" === e) return {
					top: d
				};
				var h = [],
				v = !0,
				p = !1,
				_ = void 0;
				try {
					for (var m, g = (0, s.
				default)(d); ! (v = (m = g.next()).done); v = !0) {
						var y = m.value;
						h.push(y + i.length)
					}
				} catch(t) {
					p = !0,
					_ = t
				} finally {
					try { ! v && g.
						return && g.
						return ()
					} finally {
						if (p) throw _
					}
				}
				for (var x = [], b = 0; b < i.length; b++) {
					var S = [];
					S.push(b),
					S.push(b + i.length),
					S.push((b + 1) % i.length),
					S.push(b + i.length),
					S.push(b === i.length - 1 ? b + 1 : b + i.length + 1),
					S.push((b + 1) % i.length),
					x.push(S)
				}
				return {
					top: d,
					sides: x,
					bottom: h
				}
			}
		},
		{
			key: "_translateLatLngForSingleLine",
			value: function(t) {
				var e = [],
				n = !0,
				i = !1,
				o = void 0;
				try {
					for (var r, a = (0, s.
				default)(t); ! (n = (r = a.next()).done); n = !0) {
						var l = r.value,
						u = (0, E.latLng2Mercator)(l.x, l.y);
						u.x = u.x - this.areaCenter.x,
						u.y = u.y - this.areaCenter.y;
						var c = {};
						c.x = u.x,
						c.y = u.y,
						c.z = 0,
						e.push(c)
					}
				} catch(t) {
					i = !0,
					o = t
				} finally {
					try { ! n && a.
						return && a.
						return ()
					} finally {
						if (i) throw o
					}
				}
				return e
			}
		},
		{
			key: "_refactorFloorPoints",
			value: function(t, e, n) {
				var i = {
					buildingId: e,
					floorId: n,
					positions: new Float32Array(3 * t.length),
					styleIds: new Uint32Array(t.length),
					poiIds: [],
					texts: [],
					ranks: [],
					heights: new Uint32Array(t.length),
					directs: new Uint32Array(t.length),
					uuids: []
				};
				return t.forEach(function(t, e) {
					i.positions[3 * e] = t.points[0].x,
					i.positions[3 * e + 1] = t.points[0].y,
					i.positions[3 * e + 2] = t.points[0].z,
					i.styleIds[e] = t.styleId,
					i.poiIds.push(t.poiId),
					i.texts.push(t.text),
					i.ranks.push(t.rank),
					i.heights[e] = t.height,
					i.directs[e] = t.direct,
					i.uuids.push(t.uuid)
				}),
				i
			}
		}]),
		t
	} ();
	e.
default = z
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.STYLE = function() {
		return {
			regionStyles: {
				196609 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: 0,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: 0,
					bottom_color: -1
				}],
				196610 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -1,
					bottom_color: -1
				}],
				196611 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2953734,
					maxScaleVal: 22,
					color_side: -5712919,
					color_border: -5712919,
					bottom_color: -2953734
				}],
				196612 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -203803,
					maxScaleVal: 22,
					color_side: -1520948,
					color_border: -1520948,
					bottom_color: -203803
				}],
				196613 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1117483,
					maxScaleVal: 22,
					color_side: -3025487,
					color_border: -3025487,
					bottom_color: -1117483
				}],
				196614 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -3283714,
					maxScaleVal: 22,
					color_side: -5519384,
					color_border: -5519384,
					bottom_color: -3283714
				}],
				196615 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196616 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1117483,
					maxScaleVal: 22,
					color_side: -3025487,
					color_border: -3025487,
					bottom_color: -1117483
				}],
				196617 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196618 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -855310,
					maxScaleVal: 22,
					color_side: -2039584,
					color_border: -2039584,
					bottom_color: -855310
				}],
				196619 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1117483,
					maxScaleVal: 22,
					color_side: -3025487,
					color_border: -3025487,
					bottom_color: -1117483
				}],
				196620 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2698028,
					maxScaleVal: 22,
					color_side: -2039584,
					color_border: -2039584,
					bottom_color: -2698028
				}],
				196621 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196622 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196623 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -3283714,
					maxScaleVal: 22,
					color_side: -5519384,
					color_border: -5519384,
					bottom_color: -3283714
				}],
				196624 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2953734,
					maxScaleVal: 22,
					color_side: -5712919,
					color_border: -5712919,
					bottom_color: -2953734
				}],
				196625 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196626 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1316376,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -1316376
				}],
				196627 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2170631,
					maxScaleVal: 22,
					color_side: -4012824,
					color_border: -4012824,
					bottom_color: -2170631
				}],
				196628 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2170631,
					maxScaleVal: 22,
					color_side: -4012824,
					color_border: -4012824,
					bottom_color: -2170631
				}],
				196629 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2953734,
					maxScaleVal: 22,
					color_side: -5712919,
					color_border: -5712919,
					bottom_color: -2953734
				}],
				196630 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2953734,
					maxScaleVal: 22,
					color_side: -5712919,
					color_border: -5712919,
					bottom_color: -2953734
				}],
				196631 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196632 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196633 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -202279,
					maxScaleVal: 22,
					color_side: -1191237,
					color_border: -1191237,
					bottom_color: -202279
				}],
				196634 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1117483,
					maxScaleVal: 22,
					color_side: -3025487,
					color_border: -3025487,
					bottom_color: -1117483
				}],
				196635 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1316376,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -1316376
				}],
				196636 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -657931,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -657931
				}],
				196637 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -657931,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -657931
				}],
				196638 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -656385,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -656385
				}],
				196639 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1545,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -1545
				}],
				196640 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1545,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -1545
				}],
				196641 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -656385,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -656385
				}],
				196642 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -459272,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -459272
				}],
				196643 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -656385,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -656385
				}],
				196644 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -328961,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -328961
				}],
				196645 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -328961,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -328961
				}],
				196646 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -66569,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -66569
				}],
				196647 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -66569,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -66569
				}],
				196648 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -328961,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -328961
				}],
				196649 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: 1,
					top_color: -1,
					color_fill: -2953734,
					maxScaleVal: 22,
					color_side: -5712919,
					color_border: -5712919,
					bottom_color: -2953734
				}],
				196650 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -657931,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -657931
				}],
				196651 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -657931,
					maxScaleVal: 22,
					color_side: -1644826,
					color_border: -6513508,
					bottom_color: -657931
				}],
				196652 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1969153,
					maxScaleVal: 22,
					color_side: -2889739,
					color_border: -2889739,
					bottom_color: -1969153
				}],
				196653 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -135449,
					maxScaleVal: 22,
					color_side: -859430,
					color_border: -859430,
					bottom_color: -135449
				}],
				196654 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -135449,
					maxScaleVal: 22,
					color_side: -859430,
					color_border: -859430,
					bottom_color: -135449
				}],
				196655 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1969153,
					maxScaleVal: 22,
					color_side: -2889739,
					color_border: -2889739,
					bottom_color: -1969153
				}],
				196656 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1378325,
					maxScaleVal: 22,
					color_side: -2101793,
					color_border: -2101793,
					bottom_color: -1378325
				}],
				196657 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -1969153,
					maxScaleVal: 22,
					color_side: -2889739,
					color_border: -2889739,
					bottom_color: -1969153
				}],
				196658 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -986625,
					maxScaleVal: 22,
					color_side: -1776139,
					color_border: -1776139,
					bottom_color: -986625
				}],
				196659 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -986625,
					maxScaleVal: 22,
					color_side: -1776139,
					color_border: -1776139,
					bottom_color: -986625
				}],
				196660 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -199962,
					maxScaleVal: 22,
					color_side: -858152,
					color_border: -858152,
					bottom_color: -199962
				}],
				196661 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -199962,
					maxScaleVal: 22,
					color_side: -858152,
					color_border: -858152,
					bottom_color: -199962
				}],
				196662 : [{
					outside_color: -2039584,
					minScaleVal: 19,
					sidewidth: 1,
					top_color: -1,
					color_fill: -986625,
					maxScaleVal: 22,
					color_side: -1776139,
					color_border: -1776139,
					bottom_color: -986625
				}],
				196663 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -596290,
					maxScaleVal: 22,
					color_side: -596290,
					color_border: -1,
					bottom_color: -596290
				}],
				196664 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -3289606,
					maxScaleVal: 22,
					color_side: -3289606,
					color_border: -1,
					bottom_color: -3289606
				}],
				196665 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4861953,
					maxScaleVal: 22,
					color_side: -4861953,
					color_border: -1,
					bottom_color: -4861953
				}],
				196666 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -5513217,
					maxScaleVal: 22,
					color_side: -5513217,
					color_border: -1,
					bottom_color: -5513217
				}],
				196667 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4656129,
					maxScaleVal: 22,
					color_side: -4656129,
					color_border: -1,
					bottom_color: -4656129
				}],
				196668 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4984092,
					maxScaleVal: 22,
					color_side: -4984092,
					color_border: -1,
					bottom_color: -4984092
				}],
				196669 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4069182,
					maxScaleVal: 22,
					color_side: -4069182,
					color_border: -1,
					bottom_color: -4069182
				}],
				196670 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1972315,
					maxScaleVal: 22,
					color_side: -1972315,
					color_border: -1,
					bottom_color: -1972315
				}],
				196671 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -663120,
					maxScaleVal: 22,
					color_side: -663120,
					color_border: -1,
					bottom_color: -663120
				}],
				196672 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -337216,
					maxScaleVal: 22,
					color_side: -337216,
					color_border: -1,
					bottom_color: -337216
				}],
				196673 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -796706,
					maxScaleVal: 22,
					color_side: -796706,
					color_border: -1,
					bottom_color: -796706
				}],
				196674 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -863247,
					maxScaleVal: 22,
					color_side: -863247,
					color_border: -1,
					bottom_color: -863247
				}],
				196675 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -2108430,
					maxScaleVal: 22,
					color_side: -2108430,
					color_border: -1,
					bottom_color: -2108430
				}],
				196676 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1514785,
					maxScaleVal: 22,
					color_side: -1514785,
					color_border: -1,
					bottom_color: -1514785
				}],
				196677 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -596290,
					maxScaleVal: 22,
					color_side: -596290,
					color_border: -1,
					bottom_color: -596290
				}],
				196678 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -3289606,
					maxScaleVal: 22,
					color_side: -3289606,
					color_border: -1,
					bottom_color: -3289606
				}],
				196679 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4861953,
					maxScaleVal: 22,
					color_side: -4861953,
					color_border: -1,
					bottom_color: -4861953
				}],
				196680 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -5513217,
					maxScaleVal: 22,
					color_side: -5513217,
					color_border: -1,
					bottom_color: -5513217
				}],
				196681 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4656129,
					maxScaleVal: 22,
					color_side: -4656129,
					color_border: -1,
					bottom_color: -4656129
				}],
				196682 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4984092,
					maxScaleVal: 22,
					color_side: -4984092,
					color_border: -1,
					bottom_color: -4984092
				}],
				196683 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -4069182,
					maxScaleVal: 22,
					color_side: -4069182,
					color_border: -1,
					bottom_color: -4069182
				}],
				196684 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -1972315,
					maxScaleVal: 22,
					color_side: -1972315,
					color_border: -1,
					bottom_color: -1972315
				}],
				196685 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -663120,
					maxScaleVal: 22,
					color_side: -663120,
					color_border: -1,
					bottom_color: -663120
				}],
				196686 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -337216,
					maxScaleVal: 22,
					color_side: -337216,
					color_border: -1,
					bottom_color: -337216
				}],
				196687 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -796706,
					maxScaleVal: 22,
					color_side: -796706,
					color_border: -1,
					bottom_color: -796706
				}],
				196688 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -329739,
					maxScaleVal: 22,
					color_side: -1186079,
					color_border: -4543842,
					bottom_color: -329739
				}],
				196689 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -6710887,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -6710887,
					bottom_color: -1
				}],
				196690 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -6710887,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -6710887,
					bottom_color: -1
				}],
				196691 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -6710887,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -6710887,
					bottom_color: -1
				}],
				196692 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -6710887,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -6710887,
					bottom_color: -1
				}],
				196693 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -265762,
					maxScaleVal: 22,
					color_side: -1648708,
					color_border: -1648708,
					bottom_color: -265762
				}],
				196694 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -6710887,
					color_fill: -1,
					maxScaleVal: 22,
					color_side: -1118482,
					color_border: -6710887,
					bottom_color: -1
				}],
				196695 : [{
					outside_color: -2039584,
					minScaleVal: 16,
					sidewidth: .2,
					top_color: -1,
					color_fill: -265762,
					maxScaleVal: 22,
					color_side: -1648708,
					color_border: -1648708,
					bottom_color: -265762
				}]
			},
			labelStyles: {
				262145 : [{
					font_size: 0,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 0,
					font_color: -11385024,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 0,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 0,
					font_color: -11385024,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 0,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11385024,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262146 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262147 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262148 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262149 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262150 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262151 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -3050966,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262152 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -11564867,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -11564867,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11564867,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262153 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262154 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -8288957,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -8288957,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -8288957,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262155 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262156 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 19,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262157 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -11052612,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 12,
					maxScaleVal: 21,
					effect: 5,
					font_weight: 1,
					font_color: -11052612,
					minScaleVal: 19,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11052612,
					minScaleVal: 22,
					background_color: -1,
					effect_size: 1
				}],
				262158 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -10008623,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -10008623,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -10008623,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262159 : [{
					font_size: 13,
					maxScaleVal: 17,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 0,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 18,
					background_color: -1,
					effect_size: 1
				},
				{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -16743471,
					minScaleVal: 20,
					background_color: -1,
					effect_size: 1
				}],
				262160 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 21,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -10847555,
					minScaleVal: 22,
					background_color: -1,
					effect_size: .9
				}],
				262161 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262162 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262163 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7248559,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262164 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7248559,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262165 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262166 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -12878512,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262167 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262168 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262169 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262170 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7182279,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262171 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7182279,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262172 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262173 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262174 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7248559,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262175 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7248559,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262176 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262177 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -12878512,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262178 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13278798,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262179 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262180 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262181 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7182279,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262182 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7182279,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262183 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262184 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262185 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11844161,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262186 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -13870145,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262187 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -15305788,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262188 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -16739907,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262189 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -14250907,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262190 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -12480718,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262191 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -7568090,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262192 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -5013962,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262193 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -4559043,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262194 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -6204330,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262195 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -7583631,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262196 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -9223276,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262197 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -7568770,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262198 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262199 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262200 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262201 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262202 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262203 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262204 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262205 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262206 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262207 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262208 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 0,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262209 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262210 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4687280,
					minScaleVal: 20,
					background_color: -1,
					effect_size: .9
				}],
				262211 : [{
					font_size: 14,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -16752231,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				},
				{
					font_size: 0,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: 0,
					minScaleVal: 19,
					background_color: 16777215,
					effect_size: 0
				}],
				262212 : [{
					font_size: 14,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4023420,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				},
				{
					font_size: 0,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: 0,
					minScaleVal: 19,
					background_color: 16777215,
					effect_size: 0
				}],
				262213 : [{
					font_size: 14,
					maxScaleVal: 19,
					effect: 5,
					font_weight: 1,
					font_color: -10057525,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				},
				{
					font_size: 0,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: 0,
					minScaleVal: 20,
					background_color: 16777215,
					effect_size: 0
				}],
				262214 : [{
					font_size: 14,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -11848551,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				},
				{
					font_size: 0,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: 0,
					minScaleVal: 19,
					background_color: 16777215,
					effect_size: 0
				}],
				262215 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11844161,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262216 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -13870145,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262217 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -15305788,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262218 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -16739907,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262219 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -14250907,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262220 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -12480718,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262221 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7568090,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262222 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -5013962,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262223 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4559043,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262224 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -6204330,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262225 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7583631,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262226 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -9223276,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262227 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -7568770,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262228 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262229 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262230 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262231 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262232 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262233 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262234 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262235 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262236 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262237 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262238 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11777112,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262239 : [{
					font_size: 12,
					maxScaleVal: 18,
					effect: 5,
					font_weight: 1,
					font_color: -4756097,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 21,
					effect: 5,
					font_weight: 1,
					font_color: -4756097,
					minScaleVal: 19,
					background_color: -1,
					effect_size: .9
				},
				{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4756097,
					minScaleVal: 22,
					background_color: -1,
					effect_size: .9
				}],
				262240 : [{
					font_size: 10,
					maxScaleVal: 18,
					effect: 4,
					font_weight: 0,
					font_color: -1,
					minScaleVal: 0,
					background_color: -8411598,
					effect_size: 1
				},
				{
					font_size: 10,
					maxScaleVal: 19,
					effect: 4,
					font_weight: 0,
					font_color: -1,
					minScaleVal: 19,
					background_color: -8411598,
					effect_size: 1
				},
				{
					font_size: 10,
					maxScaleVal: 22,
					effect: 4,
					font_weight: 0,
					font_color: -1,
					minScaleVal: 20,
					background_color: -8411598,
					effect_size: 1
				}],
				262241 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -4023420,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				}],
				262242 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -11385024,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262243 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -8288957,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262244 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -8288957,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262245 : [{
					font_size: 12,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -6127544,
					minScaleVal: 0,
					background_color: -1,
					effect_size: .9
				}],
				262246 : [{
					font_size: 14,
					maxScaleVal: 22,
					effect: 5,
					font_weight: 1,
					font_color: -5923176,
					minScaleVal: 0,
					background_color: 1291845631,
					effect_size: 1
				}]
			},
			lineStyles: {
				131072 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 16,
					sidewidth: 1.5,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 16,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1.5,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 17,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 18,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 19,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				}],
				131073 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 20,
					sidewidth: 1,
					joinround: 1,
					color_fill: -6052957,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 2,
					width: 1,
					dash_space: 2,
					has_dash: 1
				}],
				131074 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 20,
					sidewidth: 1,
					joinround: 1,
					color_fill: -6052957,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1,
					dash_space: 0,
					has_dash: 0
				}],
				131075 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 20,
					sidewidth: 1,
					joinround: 1,
					color_fill: -6052957,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1,
					dash_space: 0,
					has_dash: 0
				}],
				131076 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 20,
					sidewidth: 1,
					joinround: 1,
					color_fill: -2894893,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1,
					dash_space: 0,
					has_dash: 0
				}],
				131077 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 16,
					sidewidth: 1.5,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 16,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1.5,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 17,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 18,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 19,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				}],
				131078 : [{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 16,
					sidewidth: 1.5,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 16,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 1.5,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 17,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 18,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				},
				{
					linelevel: 0,
					has_side: 1,
					minScaleVal: 19,
					sidewidth: 3.2,
					joinround: 1,
					color_fill: -6313288,
					maxScaleVal: 22,
					color_side: 0,
					joincap: 0,
					dash_length: 0,
					width: 3.2,
					dash_space: 0,
					has_dash: 0
				}]
			},
			pointStyles: {
				65537 : [{
					icon_offset: 0,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 6
				}],
				65538 : [{
					icon_offset: 1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65539 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 2,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65540 : [{
					icon_offset: 16,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 16,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262243,
					density: 0
				}],
				65541 : [{
					icon_offset: 4,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65542 : [{
					icon_offset: 5,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65543 : [{
					icon_offset: 6,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 6,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262153,
					density: 0
				}],
				65544 : [{
					icon_offset: 7,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65545 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 8,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65546 : [{
					icon_offset: 9,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65547 : [{
					icon_offset: 10,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262245,
					density: 0
				}],
				65548 : [{
					icon_offset: 11,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65549 : [{
					icon_offset: 12,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65550 : [{
					icon_offset: 13,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65551 : [{
					icon_offset: 14,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65552 : [{
					icon_offset: 15,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65553 : [{
					icon_offset: 16,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 16,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262243,
					density: 0
				}],
				65554 : [{
					icon_offset: 17,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65555 : [{
					icon_offset: 18,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65556 : [{
					icon_offset: 19,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65557 : [{
					icon_offset: 109,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65558 : [{
					icon_offset: 21,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65559 : [{
					icon_offset: 22,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65560 : [{
					icon_offset: 23,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65561 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 24,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262244,
					density: 0
				}],
				65562 : [{
					icon_offset: 25,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65563 : [{
					icon_offset: 26,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 26,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262153,
					density: 0
				}],
				65564 : [{
					icon_offset: 27,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65565 : [{
					icon_offset: 28,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 28,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65566 : [{
					icon_offset: 29,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 29,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262154,
					density: 0
				}],
				65567 : [{
					icon_offset: 30,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 30,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65568 : [{
					icon_offset: 31,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65569 : [{
					icon_offset: 32,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65570 : [{
					icon_offset: 33,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262155,
					density: 0
				}],
				65571 : [{
					icon_offset: 34,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 34,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262244,
					density: 0
				}],
				65572 : [{
					icon_offset: 35,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65573 : [{
					icon_offset: 36,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 36,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262153,
					density: 0
				}],
				65574 : [{
					icon_offset: 37,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 37,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65575 : [{
					icon_offset: 38,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65576 : [{
					icon_offset: 39,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65577 : [{
					icon_offset: 40,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 40,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65578 : [{
					icon_offset: 41,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65579 : [{
					icon_offset: 143,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 143,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262239,
					density: 0
				}],
				65580 : [{
					icon_offset: 43,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262155,
					density: 0
				}],
				65581 : [{
					icon_offset: 44,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 44,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262153,
					density: 0
				}],
				65582 : [{
					icon_offset: 45,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65583 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 46,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65584 : [{
					icon_offset: 47,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 47,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65585 : [{
					icon_offset: 48,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65586 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262147,
					density: 0
				}],
				65587 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65588 : [{
					icon_offset: 49,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65589 : [{
					icon_offset: 50,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65590 : [{
					icon_offset: 52,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262155,
					density: 0
				}],
				65591 : [{
					icon_offset: 53,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262155,
					density: 0
				}],
				65592 : [{
					icon_offset: 54,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 54,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262153,
					density: 0
				}],
				65593 : [{
					icon_offset: 82,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65594 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 149,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262156,
					density: 0
				}],
				65595 : [{
					icon_offset: 84,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65596 : [{
					icon_offset: 85,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65597 : [{
					icon_offset: 55,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65598 : [{
					icon_offset: 56,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 56,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262245,
					density: 0
				}],
				65599 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262148,
					density: 0
				}],
				65600 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262149,
					density: 0
				}],
				65601 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262150,
					density: 0
				}],
				65602 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262151,
					density: 0
				}],
				65603 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 109,
					maxScaleVal: 19,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 109,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262153,
					density: 0
				}],
				65604 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262153,
					density: 0
				}],
				65605 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 110,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262152,
					density: 0
				}],
				65606 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 111,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262155,
					density: 0
				}],
				65607 : [{
					icon_offset: 112,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65608 : [{
					icon_offset: 113,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65609 : [{
					icon_offset: 114,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65610 : [{
					icon_offset: 115,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65611 : [{
					icon_offset: 116,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65612 : [{
					icon_offset: 117,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65613 : [{
					icon_offset: 118,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65614 : [{
					icon_offset: 132,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65615 : [{
					icon_offset: 118,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65616 : [{
					icon_offset: 118,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65617 : [{
					icon_offset: 119,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65618 : [{
					icon_offset: 116,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65619 : [{
					icon_offset: 119,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65620 : [{
					icon_offset: 119,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65621 : [{
					icon_offset: 119,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65622 : [{
					icon_offset: 115,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65623 : [{
					icon_offset: 120,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65624 : [{
					icon_offset: 119,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65625 : [{
					icon_offset: 121,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65626 : [{
					icon_offset: 122,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65627 : [{
					icon_offset: 123,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65628 : [{
					icon_offset: 124,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65629 : [{
					icon_offset: 125,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262154,
					density: 0
				}],
				65630 : [{
					icon_offset: 126,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262154,
					density: 0
				}],
				65631 : [{
					icon_offset: 127,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262154,
					density: 0
				}],
				65632 : [{
					icon_offset: 128,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262154,
					density: 0
				}],
				65633 : [{
					icon_offset: 129,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65634 : [{
					icon_offset: 130,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65635 : [{
					icon_offset: 131,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65636 : [{
					icon_offset: 133,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65637 : [{
					icon_offset: 134,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262157,
					density: 0
				}],
				65638 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262158,
					density: 0
				}],
				65639 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262159,
					density: 0
				}],
				65640 : [{
					icon_offset: 136,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65641 : [{
					icon_offset: 137,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65642 : [{
					icon_offset: 138,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65643 : [{
					icon_offset: 139,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65644 : [{
					icon_offset: 140,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65645 : [{
					icon_offset: 141,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65646 : [{
					icon_offset: 140,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				65647 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262146,
					density: 0
				}],
				65648 : [{
					icon_offset: 146,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262162,
					density: 0
				}],
				65649 : [{
					icon_offset: 143,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262163,
					density: 0
				}],
				65650 : [{
					icon_offset: 143,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262164,
					density: 0
				}],
				65651 : [{
					icon_offset: 146,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262165,
					density: 0
				}],
				65652 : [{
					icon_offset: 145,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262166,
					density: 0
				}],
				65653 : [{
					icon_offset: 146,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262167,
					density: 0
				}],
				65654 : [{
					icon_offset: 147,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262168,
					density: 0
				}],
				65655 : [{
					icon_offset: 147,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262169,
					density: 0
				}],
				65656 : [{
					icon_offset: 144,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262170,
					density: 0
				}],
				65657 : [{
					icon_offset: 144,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262171,
					density: 0
				}],
				65658 : [{
					icon_offset: 147,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262172,
					density: 0
				}],
				65659 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262146,
					density: 0
				}],
				65660 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262173,
					density: 0
				}],
				65661 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262174,
					density: 0
				}],
				65662 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262175,
					density: 0
				}],
				65663 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262176,
					density: 0
				}],
				65664 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262177,
					density: 0
				}],
				65665 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262178,
					density: 0
				}],
				65666 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262179,
					density: 0
				}],
				65667 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262180,
					density: 0
				}],
				65668 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262181,
					density: 0
				}],
				65669 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262182,
					density: 0
				}],
				65670 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262183,
					density: 0
				}],
				65671 : [{
					icon_offset: 42,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				65672 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262185,
					density: 0
				}],
				65673 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262186,
					density: 0
				}],
				65674 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262187,
					density: 0
				}],
				65675 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262188,
					density: 0
				}],
				65676 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262189,
					density: 0
				}],
				65677 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262190,
					density: 0
				}],
				65678 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262191,
					density: 0
				}],
				65679 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262192,
					density: 0
				}],
				65680 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262193,
					density: 0
				}],
				65681 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262194,
					density: 0
				}],
				65682 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262195,
					density: 0
				}],
				65683 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262196,
					density: 0
				}],
				65684 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 8,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65685 : [{
					icon_offset: 40,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65686 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 29,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65687 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 46,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65688 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65689 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65690 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262197,
					density: 0
				}],
				65691 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262198,
					density: 0
				}],
				65692 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262199,
					density: 0
				}],
				65693 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262200,
					density: 0
				}],
				65694 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262201,
					density: 0
				}],
				65695 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262202,
					density: 0
				}],
				65696 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262203,
					density: 0
				}],
				65697 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262204,
					density: 0
				}],
				65698 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262205,
					density: 0
				}],
				65699 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262206,
					density: 0
				}],
				65700 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262207,
					density: 0
				}],
				65701 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262208,
					density: 0
				}],
				65702 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262211,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65703 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262212,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65704 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262213,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262145,
					density: 0
				}],
				65705 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262214,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262145,
					density: 0
				}],
				65706 : [{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				}],
				65707 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262215,
					density: 0
				}],
				65708 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262216,
					density: 0
				}],
				65709 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262217,
					density: 0
				}],
				65710 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262218,
					density: 0
				}],
				65711 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262219,
					density: 0
				}],
				65712 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262220,
					density: 0
				}],
				65713 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262221,
					density: 0
				}],
				65714 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262222,
					density: 0
				}],
				65715 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262223,
					density: 0
				}],
				65716 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262224,
					density: 0
				}],
				65717 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262225,
					density: 0
				}],
				65718 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262226,
					density: 0
				}],
				65719 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262227,
					density: 0
				}],
				65720 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262228,
					density: 0
				}],
				65721 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262229,
					density: 0
				}],
				65722 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262230,
					density: 0
				}],
				65723 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262231,
					density: 0
				}],
				65724 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262232,
					density: 0
				}],
				65725 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262233,
					density: 0
				}],
				65726 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262234,
					density: 0
				}],
				65727 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262235,
					density: 0
				}],
				65728 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262236,
					density: 0
				}],
				65729 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262237,
					density: 0
				}],
				65730 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262238,
					density: 0
				}],
				65731 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 51,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262156,
					density: 0
				}],
				65732 : [{
					icon_offset: 148,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262156,
					density: 0
				}],
				65733 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 50,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262156,
					density: 0
				}],
				65734 : [{
					icon_offset: 150,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262156,
					density: 0
				}],
				65735 : [{
					icon_offset: -1,
					maxScaleVal: 17,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 18,
					labelid: 262241,
					density: 0
				}],
				65736 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 143,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262239,
					density: 0
				}],
				65737 : [{
					icon_offset: 13,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262239,
					density: 0
				}],
				65738 : [{
					icon_offset: -1,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 109,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262153,
					density: 0
				}],
				65739 : [{
					icon_offset: 110,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 110,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				65740 : [{
					icon_offset: 29,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: -1,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262246,
					density: 0
				}],
				65741 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 152,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262245,
					density: 0
				}],
				65742 : [{
					icon_offset: -1,
					maxScaleVal: 18,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 152,
					maxScaleVal: 22,
					minScaleVal: 19,
					labelid: 262245,
					density: 0
				}],
				66437 : [{
					icon_offset: 57,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 57,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66438 : [{
					icon_offset: 58,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 58,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66439 : [{
					icon_offset: 59,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 59,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66440 : [{
					icon_offset: 60,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 60,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66441 : [{
					icon_offset: 61,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 61,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66442 : [{
					icon_offset: 62,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 62,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66443 : [{
					icon_offset: 63,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 63,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66444 : [{
					icon_offset: 64,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 64,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66445 : [{
					icon_offset: 65,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 65,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66446 : [{
					icon_offset: 66,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 66,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262155,
					density: 0
				}],
				66447 : [{
					icon_offset: 67,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 67,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66448 : [{
					icon_offset: 68,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				66449 : [{
					icon_offset: 69,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}],
				66450 : [{
					icon_offset: 70,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 70,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66451 : [{
					icon_offset: 71,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66452 : [{
					icon_offset: 72,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66453 : [{
					icon_offset: 73,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66454 : [{
					icon_offset: 74,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66455 : [{
					icon_offset: 75,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66456 : [{
					icon_offset: 76,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66457 : [{
					icon_offset: 77,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66458 : [{
					icon_offset: 78,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66459 : [{
					icon_offset: 79,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66460 : [{
					icon_offset: 80,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262153,
					density: 0
				}],
				66461 : [{
					icon_offset: 81,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262146,
					density: 0
				}],
				66462 : [{
					icon_offset: 86,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262146,
					density: 0
				}],
				66463 : [{
					icon_offset: 87,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262146,
					density: 0
				}],
				66464 : [{
					icon_offset: 88,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 88,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66465 : [{
					icon_offset: 89,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 89,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66466 : [{
					icon_offset: 90,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 90,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66467 : [{
					icon_offset: 91,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 91,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66468 : [{
					icon_offset: 92,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 92,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66469 : [{
					icon_offset: 93,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 93,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66470 : [{
					icon_offset: 94,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 94,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66471 : [{
					icon_offset: 95,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 95,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66472 : [{
					icon_offset: 96,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 96,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66473 : [{
					icon_offset: 97,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 97,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66474 : [{
					icon_offset: 98,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 98,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66475 : [{
					icon_offset: 99,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 99,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66476 : [{
					icon_offset: 100,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 100,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66477 : [{
					icon_offset: 101,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 101,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66478 : [{
					icon_offset: 102,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 102,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66479 : [{
					icon_offset: 103,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 103,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66480 : [{
					icon_offset: 104,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 104,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66481 : [{
					icon_offset: 105,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 105,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262152,
					density: 0
				}],
				66482 : [{
					icon_offset: 106,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 106,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262146,
					density: 0
				}],
				66483 : [{
					icon_offset: 107,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 107,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262146,
					density: 0
				}],
				66484 : [{
					icon_offset: 108,
					maxScaleVal: 19,
					minScaleVal: 16,
					labelid: 262145,
					density: 0
				},
				{
					icon_offset: 108,
					maxScaleVal: 22,
					minScaleVal: 20,
					labelid: 262146,
					density: 0
				}],
				66485 : [{
					icon_offset: 151,
					maxScaleVal: 22,
					minScaleVal: 16,
					labelid: 262152,
					density: 0
				}]
			},
			arrowStyles: {},
			bgColor: "#123182",
			stylesId: "default"
		}
	} ()
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t = (0, s.colorToRGBA)(t),
		[t[0], t[1], t[2], 255 * t[3]]
	}
	function o() {
		return ""
	}
	function r() {
		return l ? "bold": ""
	}
	function a(t) {
		var e = l ? "Microsoft YaHei UI,Microsoft YaHei,黑体,Hiragino Sans GB,sans-serif": "Microsoft YaHei UI,Microsoft YaHei,黑体,sans-serif";
		return t && t.length > 0 ? t: e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.convertColorToHex = i,
	e.getFontStyle = o,
	e.getFontWeight = r,
	e.getFontFamily = a;
	var s = n(10),
	l = !1
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(27),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(479),
	f = i(c),
	d = function() {
		function t() { (0, s.
		default)(this, t)
		}
		return (0, u.
	default)(t, [{
			key: "parse",
			value: function(t) {
				var e = (0, f.
			default)(t),
				n = e.meshes,
				i = n.reduce(function(t, e) {
					return t + e.header.vertexCount
				},
				0);
				return {
					mode: 4,
					vertexCount: i,
					attributes: this.mergeAttributes(n, i)
				}
			}
		},
		{
			key: "mergeAttributes",
			value: function(t, e) {
				var n = new Float32Array(3 * e),
				i = void 0,
				o = void 0,
				a = void 0,
				s = 0,
				l = !0,
				u = !1,
				c = void 0;
				try {
					for (var f, d = (0, r.
				default)(t); ! (l = (f = d.next()).done); l = !0) {
						var h = f.value,
						v = h.attributes,
						p = v.POSITION,
						_ = v.NORMAL,
						m = v.COLOR_0,
						g = v.TEXCOORD_0;
						n.set(p.value, 3 * s),
						_ && (i = i || new Int8Array(3 * e), i.set(_.value, 3 * s)),
						m && (o = o || new Uint8Array(3 * e), o.set(m.value.map(function(t) {
							return Math.round(255 * t)
						}), 3 * s)),
						g && (a = a || new Float32Array(2 * e), a.set(g.value, 2 * s)),
						s += p.value.length / 3
					}
				} catch(t) {
					u = !0,
					c = t
				} finally {
					try { ! l && d.
						return && d.
						return ()
					} finally {
						if (u) throw c
					}
				}
				var y = {};
				return y.POSITION = {
					value: n,
					size: 3
				},
				i && (y.NORMAL = {
					value: i,
					size: 3
				}),
				o && (y.COLOR_0 = {
					value: o,
					size: 3
				}),
				a && (y.TEXCOORD_0 = {
					value: a,
					size: 2
				}),
				y
			}
		}]),
		t
	} ();
	e.
default = d
},
function(t, e, n) {
	"use strict";
	function i(t, e, n) {
		if (n = n || {},
		"object" !== (void 0 === n ? "undefined": (0, r.
	default)(n))) throw new Error("options is invalid");
		var i = n,
		o = i.properties,
		l = n,
		u = l.npoints,
		c = n,
		f = c.offset;
		return t = (0, a.getCoord)(t),
		e = (0, a.getCoord)(e),
		o = o || {},
		u = u || 100,
		f = f || 10,
		new s.GreatCircle({
			x: t[0],
			y: t[1]
		},
		{
			x: e[0],
			y: e[1]
		},
		o).Arc(u, {
			offset: f
		}).json()
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(20),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = n(1052),
	s = n(650);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = Math.PI / 180,
	o = 180 / Math.PI,
	r = function(t, e) {
		this.lon = t,
		this.lat = e,
		this.x = i * t,
		this.y = i * e
	};
	r.prototype.view = function() {
		return String(this.lon).slice(0, 4) + "," + String(this.lat).slice(0, 4)
	},
	r.prototype.antipode = function() {
		var t = -1 * this.lat,
		e = this.lon < 0 ? 180 + this.lon: -1 * (180 - this.lon);
		return new r(e, t)
	};
	var a = function() {
		this.coords = [],
		this.length = 0
	};
	a.prototype.move_to = function(t) {
		this.length++,
		this.coords.push(t)
	};
	var s = function(t) {
		this.properties = t || {},
		this.geometries = []
	};
	s.prototype.json = function() {
		if (this.geometries.length <= 0) return {
			geometry: {
				type: "LineString",
				coordinates: null
			},
			type: "Feature",
			properties: this.properties
		};
		if (1 === this.geometries.length) return {
			geometry: {
				type: "LineString",
				coordinates: this.geometries[0].coords
			},
			type: "Feature",
			properties: this.properties
		};
		for (var t = [], e = 0; e < this.geometries.length; e++) t.push(this.geometries[e].coords);
		return {
			geometry: {
				type: "MultiLineString",
				coordinates: t
			},
			type: "Feature",
			properties: this.properties
		}
	},
	s.prototype.wkt = function() {
		for (var t = "",
		e = "LINESTRING(",
		n = function(t) {
			e += t[0] + " " + t[1] + ","
		},
		i = 0; i < this.geometries.length; i++) {
			if (0 === this.geometries[i].coords.length) return "LINESTRING(empty)";
			this.geometries[i].coords.forEach(n),
			t += e.substring(0, e.length - 1) + ")"
		}
		return t
	};
	var l = function(t, e, n) {
		if (!t || void 0 === t.x || void 0 === t.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
		if (!e || void 0 === e.x || void 0 === e.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
		this.start = new r(t.x, t.y),
		this.end = new r(e.x, e.y),
		this.properties = n || {};
		var i = this.start.x - this.end.x,
		o = this.start.y - this.end.y,
		a = Math.pow(Math.sin(o / 2), 2) + Math.cos(this.start.y) * Math.cos(this.end.y) * Math.pow(Math.sin(i / 2), 2);
		if (this.g = 2 * Math.asin(Math.sqrt(a)), this.g === Math.PI) throw new Error("it appears " + t.view() + " and " + e.view() + " are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite");
		if (isNaN(this.g)) throw new Error("could not calculate great circle between " + t + " and " + e)
	};
	l.prototype.interpolate = function(t) {
		var e = Math.sin((1 - t) * this.g) / Math.sin(this.g),
		n = Math.sin(t * this.g) / Math.sin(this.g),
		i = e * Math.cos(this.start.y) * Math.cos(this.start.x) + n * Math.cos(this.end.y) * Math.cos(this.end.x),
		r = e * Math.cos(this.start.y) * Math.sin(this.start.x) + n * Math.cos(this.end.y) * Math.sin(this.end.x),
		a = e * Math.sin(this.start.y) + n * Math.sin(this.end.y),
		s = o * Math.atan2(a, Math.sqrt(Math.pow(i, 2) + Math.pow(r, 2)));
		return [o * Math.atan2(r, i), s]
	},
	l.prototype.Arc = function(t, e) {
		var n = [];
		if (!t || t <= 2) n.push([this.start.lon, this.start.lat]),
		n.push([this.end.lon, this.end.lat]);
		else for (var i = 1 / (t - 1), o = 0; o < t; ++o) {
			var r = i * o,
			l = this.interpolate(r);
			n.push(l)
		}
		for (var u = !1,
		c = 0,
		f = e && e.offset ? e.offset: 10, d = 180 - f, h = -180 + f, v = 360 - f, p = 1; p < n.length; ++p) {
			var _ = n[p - 1][0],
			m = n[p][0],
			g = Math.abs(m - _);
			g > v && (m > d && _ < h || _ > d && m < h) ? u = !0 : g > c && (c = g)
		}
		var y = [];
		if (u && c < f) {
			var x = [];
			y.push(x);
			for (var b = 0; b < n.length; ++b) {
				var S = parseFloat(n[b][0]);
				if (b > 0 && Math.abs(S - n[b - 1][0]) > v) {
					var w = parseFloat(n[b - 1][0]),
					E = parseFloat(n[b - 1][1]),
					T = parseFloat(n[b][0]),
					A = parseFloat(n[b][1]);
					if (w > -180 && w < h && 180 === T && b + 1 < n.length && n[b - 1][0] > -180 && n[b - 1][0] < h) {
						x.push([ - 180, n[b][1]]),
						b++,
						x.push([n[b][0], n[b][1]]);
						continue
					}
					if (w > d && w < 180 && -180 === T && b + 1 < n.length && n[b - 1][0] > d && n[b - 1][0] < 180) {
						x.push([180, n[b][1]]),
						b++,
						x.push([n[b][0], n[b][1]]);
						continue
					}
					if (w < h && T > d) {
						var P = w;
						w = T,
						T = P;
						var I = E;
						E = A,
						A = I
					}
					if (w > d && T < h && (T += 360), w <= 180 && T >= 180 && w < T) {
						var k = (180 - w) / (T - w),
						L = k * A + (1 - k) * E;
						x.push([n[b - 1][0] > d ? 180 : -180, L]),
						x = [],
						x.push([n[b - 1][0] > d ? -180 : 180, L]),
						y.push(x)
					} else x = [],
					y.push(x);
					x.push([S, n[b][1]])
				} else x.push([n[b][0], n[b][1]])
			}
		} else {
			var M = [];
			y.push(M);
			for (var C = 0; C < n.length; ++C) M.push([n[C][0], n[C][1]])
		}
		for (var R = new s(this.properties), B = 0; B < y.length; ++B) {
			var N = new a;
			R.geometries.push(N);
			for (var O = y[B], D = 0; D < O.length; ++D) O[D][1] > 85 && (O[D][1] = 85),
			O[D][1] < -85 && (O[D][1] = -85),
			N.move_to(O[D])
		}
		return R
	},
	e.Coord = r,
	e.Arc = s,
	e.GreatCircle = l,
	e.
default = {
		Coord: r,
		Arc: s,
		GreatCircle: l
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = {
		Int8: Int8Array,
		Uint8: Uint8Array,
		Uint8Clamped: Uint8ClampedArray,
		Int16: Int16Array,
		Uint16: Uint16Array,
		Int32: Int32Array,
		Uint32: Uint32Array,
		Float32: Float32Array,
		Float64: Float64Array
	},
	u = function() {
		function t(e, n, i) { (0, r.
		default)(this, t),
			n = [].concat(n),
			this.extendEntitySize = 1024,
			this.entitySize = e || this.extendEntitySize,
			this.struct = n,
			this.attributes = i;
			for (var o = void 0,
			a = void 0,
			s = 0,
			u = 0,
			c = n.length; u < c; u++) o = n[u],
			a = l[o].BYTES_PER_ELEMENT,
			n[u] = {
				type: o,
				BYTES_PER_ELEMENT: a
			},
			s += a;
			this.unit8 = new Uint8Array(e * s),
			this.arrayBuffer = this.unit8.buffer,
			this.dataView = new DataView(this.arrayBuffer),
			this.bytesPerElement = s,
			this.length = 0
		}
		return (0, s.
	default)(t, [{
			key: "add",
			value: function(t) {
				if (t instanceof Array && 0 !== t.length) {
					if (t[0] instanceof Array) for (var e = 0,
					n = t.length; e < n; e++) this.addItem(t[e]);
					else for (var i = 0,
					o = t.length; i < o; i++) this.addItem([t[i]])
				}
			}
		},
		{
			key: "addItem",
			value: function(t) {
				var e = this.struct;
				if (t.length !== e.length) throw new Error("add data error"); (this.length + 1) * this.bytesPerElement > this.arrayBuffer.byteLength && this.extend();
				for (var n = this.length,
				i = this.bytesPerElement,
				o = void 0,
				r = void 0,
				a = this.dataView,
				s = 0,
				l = 0,
				u = e.length; l < u; l++) o = e[l ? l - 1 : 0],
				r = e[l],
				l > 0 && (s += o.BYTES_PER_ELEMENT),
				a["set" + r.type](n * i + s, t[l], !0);
				this.length += 1
			}
		},
		{
			key: "extend",
			value: function() {
				this.resize(this.entitySize + this.extendEntitySize)
			}
		},
		{
			key: "compress",
			value: function() {
				this.resize(this.length)
			}
		},
		{
			key: "resize",
			value: function(t) {
				var e = this.unit8;
				t > this.entitySize ? (this.arrayBuffer = new ArrayBuffer(t * this.bytesPerElement), this.unit8 = new Uint8Array(this.arrayBuffer), this.unit8.set(e)) : this.entitySize,
				this.entitySize = t,
				this.dataView = new DataView(this.arrayBuffer)
			}
		},
		{
			key: "toArray",
			value: function() {
				for (var t = this.struct,
				e = this.length,
				n = this.bytesPerElement,
				i = this.dataView,
				o = [], r = void 0, a = 0; a < e; a++) for (var s = 0,
				l = 0; l < t.length; l++) r = t[l],
				o.push(i["get" + r.type](n * a + s, !0)),
				s += r.BYTES_PER_ELEMENT;
				return o
			}
		}]),
		t
	} ();
	e.
default = u
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		for (var n = void 0,
		i = new p.
	default,
		o = [], a = (0, h.
	default)(t).sort(function(t, e) {
			return Number(t) - Number(e)
		}), s = 0, l = a.length; s < l; s++) if (n = t[a[s]], !(n.length <= 0)) {
			var c = n[0].type;
			c === _.BASE_LAYER_TYPE.line ? (o.push(Number(a[s])), r(n, i)) : c === _.BASE_LAYER_TYPE.region && u(n, i)
		}
		return {
			vertices: i.vertiesDataBuffer,
			indeices: i.indicesDataBuffer,
			size: i.indicesDataBuffer.length,
			id: e,
			vertiesCount: i.vertiesDataBuffer.length,
			lineCount: i.lineCount,
			lineRankKeys: o
		}
	}
	function r(t, e) {
		for (var n = 0,
		i = t.length; n < i; n++) l(t[n], e, "side");
		for (var o = 0,
		r = t.length; o < r; o++) l(t[o], e, "fill")
	}
	function a(t) {
		return t = Math.ceil(t || 0)
	}
	function s(t, e) {
		var n = t.style,
		i = n.sidewidth,
		o = n.width,
		r = t.style,
		s = t.preStyle,
		l = t.nextStyle,
		u = t.zLevel,
		c = t.options,
		d = t.transform;
		o = a(o),
		i = a(i);
		var h = (0, y.isDefaultStyle)(c.mapStyleId),
		v = g.
	default.isDefaultNoSideLine(r.styleId);
		return h && v && (r.has_side = 0),
		"side" === e ? r.has_side ? (i = i - o < 2 ? o + 2 : i, {
			hasDash: !1,
			color: f(r.color_side.slice()),
			width: i,
			preWidth: a(s && s.sidewidth),
			nextWidth: a(l && l.sidewidth),
			noTerminal: u || r.has_dash,
			deltaSideWidth: Math.ceil(i - o),
			isSide: 1,
			styleId: t.layerId,
			transform: d,
			pickingColor: (0, x.encodePickingColor)(t.layerId, !0)
		}) : null: {
			hasDash: r.has_dash,
			dashLength: r.has_dash ? r.dash_length: 0,
			dashSpace: r.has_dash ? r.dash_space: 0,
			color: f(r.color_fill.slice()),
			width: o,
			preWidth: a(s && s.width),
			nextWidth: a(l && l.width),
			noTerminal: u || r.has_dash,
			startDistance: c && c.startDistance || 0,
			isSide: 0,
			styleId: t.layerId,
			transform: d,
			pickingColor: (0, x.encodePickingColor)(t.layerId, !0)
		}
	}
	function l(t, e, n) {
		var i = s(t, n);
		if (i) {
			var o = i.color,
			r = i.width,
			a = i.dashLength,
			l = i.dashSpace,
			u = i.startDistance;
			t.datas.forEach(function(t) {
				e.addLine(i, t, o, r, a, l, u)
			})
		}
	}
	function u(t, e) {
		for (var n = 0,
		i = t.length; n < i; n++) c(t[n], e)
	}
	function c(t, e) {
		var n = t.datas,
		i = t.style,
		o = f((i.color_border || i.color_side).slice()),
		r = f(i.color_fill.slice()),
		a = (0, x.encodePickingColor)(t.layerId, !0),
		s = i.sidewidth;
		if (0 !== r[3]) {
			if (o[3] > 0 && s > 0) for (var l = 0,
			u = n.length; l < u; l++) {
				var c = n[l];
				if (! (c.length <= 4)) {
					var d = {
						transform: t.transform
					};
					e.addLine(d, c, o, s, null, null, null, !0)
				}
			}
			for (var h = 0,
			v = n.length; h < v; h++) {
				var p = n[h];
				p.length <= 4 || e.addPolygon(p, r, {
					transform: t.transform,
					pickingColor: a
				})
			}
		}
	}
	function f(t) {
		return t[0] <= 1 && t[1] <= 1 && t[2] <= 1 && (t[0] = Math.floor(255 * t[0]), t[1] = Math.floor(255 * t[1]), t[2] = Math.floor(255 * t[2])),
		t[3] < 2 && (t[3] = Math.floor(255 * t[3])),
		t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var d = n(17),
	h = i(d),
	v = n(483),
	p = i(v),
	_ = n(66),
	m = n(381),
	g = i(m),
	y = n(301),
	x = n(240);
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t.map(function(t, e) {
			return 3 === e ? Math.round(255 * t) : Math.round(t)
		})
	}
	function r(t, e) {
		var n = new u.
	default,
		i = !0,
		r = !1,
		a = void 0;
		try {
			for (var l, c = (0, s.
		default)(t); ! (i = (l = c.next()).done); i = !0) {
				var f = l.value;
				n.add({
					points: f.datas,
					height: f.h,
					colorFill: o(f.colorFill),
					colorSide: o(f.colorSide),
					transform: f.transform
				})
			}
		} catch(t) {
			r = !0,
			a = t
		} finally {
			try { ! i && c.
				return && c.
				return ()
			} finally {
				if (r) throw a
			}
		}
		return {
			vertices: n.vertiesDataBuffer,
			indeices: n.indicesDataBuffer,
			size: n.indicesDataBuffer.length,
			id: e
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(27),
	s = i(a),
	l = n(657),
	u = i(l);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		var n = e.info,
		i = !0,
		o = !1,
		a = void 0;
		try {
			for (var s, l = (0, r.
		default)(t); ! (i = (s = l.next()).done); i = !0) {
				var u = s.value,
				c = u.datas[0];
				if (c && c.icon && c.icon_coords) {
					if (!n[String(c.icon)]) continue;
					u.id = "icon_" + u.id
				}
			}
		} catch(t) {
			o = !0,
			a = t
		} finally {
			try { ! i && l.
				return && l.
				return ()
			} finally {
				if (o) throw a
			}
		}
		return t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(27),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		return t && !(0, v.isInterceptForPlacement)(e, t.coordZ) ? t: null
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(0),
	a = i(r),
	s = n(1),
	l = i(s),
	u = n(28),
	c = i(u),
	f = n(656),
	d = i(f),
	h = n(66),
	v = n(482),
	p = n(23),
	_ = i(p),
	m = function() {
		function t(e, n) { (0, a.
		default)(this, t),
			this._textCache = e,
			this.placement = new d.
		default({
				textCache:
				this._textCache
			}),
			this._currentPlacementIndex = n.length - 1,
			this._currentTileIndex = 0,
			this._isDone = !1,
			this._batchedUpdate = !1,
			this._fadeUntil = 0,
			this._batchUpdateTime = 0,
			this._destroyed = !1
		}
		return (0, l.
	default)(t, [{
			key: "isDone",
			value: function() {
				return this._isDone
			}
		},
		{
			key: "continuePlacement",
			value: function(t, e, n, i) {
				if (!this._destroyed) {
					for (var r = i.zoom,
					a = Math.round(r), s = c.
				default.now(), l = !1; this._currentPlacementIndex >= 0;) {
						var u = t[this._currentPlacementIndex];
						if (u && u.type === h.BASE_LAYER_TYPE.text) {
							var f = t.filter(function(t) {
								return t.type === h.BASE_LAYER_TYPE.point
							})[0],
							d = t.filter(function(t) {
								return t.type === h.BASE_LAYER_TYPE.label
							})[0];
							for (u = f || d || u; this._currentTileIndex < u.tiles.length;) {
								var v = u.tiles[this._currentTileIndex],
								p = d && d.tiles[this._currentTileIndex],
								m = f && f.tiles[this._currentTileIndex];
								Math.round(i.zoom) >= _.
							default.maxDataZoom && !this._textCache && (p && p.children && (p = v.children[Math.round(i.zoom)]), m && m.children && (m = m.children[Math.round(i.zoom)]));
								var g = e[v.id],
								y = this._textCache ? this._textCache.tiles[v.id] : null,
								x = p && p.features && p.features.instance && p.features.instance.count > 0 || m && m.features && m.features.instance && m.features.instance.count > 0;
								if (g && (this._textCache ? y: x) && (this.placement.calculateTextByTile({
									label: o(p, r),
									poi: o(m, r),
									icon: o(m, r)
								},
								g, n, i), this.placement.impactTextByTile(v)), this._currentTileIndex += 1, c.
							default.now() - s > 4) {
									l = !0;
									break
								}
							}
							if (l) return
						}
						if (u && u.type === h.RENDER_LAYER_TYPE.indoorPoi && u.tiles.length > 0) {
							var b = u.tiles[0],
							S = n.pvMatrix,
							w = b.features.pois[a] && b.features.pois[a][0],
							E = w && w.instance && w.instance.count > 0;
							S && E && (this.placement.calculateAllIndoorPois(w, b.features.center, S, n, i, b), this.placement.impactTextByTile(b))
						}
						this._currentPlacementIndex -= 1
					}
					this._isDone = !0
				}
			}
		},
		{
			key: "batchUpdate",
			value: function(t) {
				return this.placement.batchUpdate(t),
				this._batchedUpdate = !0,
				this._fadeUntil = c.
			default.now() + 300,
				this.placement
			}
		},
		{
			key: "isFading",
			value: function() {
				return this._isDone && c.
			default.now() < this._fadeUntil
			}
		},
		{
			key: "destroy",
			value: function() {
				this._destroyed || (this._textCache = null, this.placement.clear(), this.placement = null, this._currentPlacementIndex = null, this._currentTileIndex = null, this._isDone = null, this._batchedUpdate = null, this._fadeUntil = null, this._batchUpdateTime = null, this._destroyed = !0)
			}
		}]),
		t
	} ();
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(32),
	r = i(o),
	a = n(16),
	s = i(a),
	l = n(27),
	u = i(l),
	c = n(17),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(107),
	m = n(23),
	g = i(m),
	y = n(10),
	x = i(y),
	b = n(28),
	S = i(b),
	w = n(112),
	E = 80,
	T = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, h.
		default)(this, t),
			this.DELTA_SCREEN_CELL = Math.round(E * (e.textCache && e.textCache.scale || 1)),
			this.boundsBuffer = 0,
			this.iconBoundsBuffer = 0,
			this.textScreenCoordList = {},
			this.textDataSet = {},
			this.textTileCellSet = {},
			this.textFeatureSet = {},
			this.poiScreenCoordList = {},
			this.poiDataSet = {},
			this.poiTileCellSet = {},
			this.iconScreenCoordList = {},
			this.iconDataSet = {},
			this.iconTileCellSet = {},
			this.v = 1,
			this.instanceSet = {},
			this.cellSet = {},
			this._batchUpdateTime = 0,
			this.inUse = !1
		}
		return (0, p.
	default)(t, [{
			key: "updateVersion",
			value: function() {
				this.v += 1
			}
		},
		{
			key: "setInUse",
			value: function(t) {
				this.inUse = t
			}
		},
		{
			key: "getInUse",
			value: function() {
				return this.inUse
			}
		},
		{
			key: "clear",
			value: function() {
				this.clearText(),
				this.clearPoi(),
				this.clearIcon(),
				this.instanceSet = {},
				this.cellSet = {}
			}
		},
		{
			key: "clearText",
			value: function() {
				var t = this,
				e = this.v,
				n = this.textDataSet,
				i = this.textScreenCoordList;
				x.
			default.forIn(n,
				function(i, o) {
					if (o.v !== e) {
						var r = o.tileId,
						a = o.roadSymbolIndex;
						t.instanceSet[r] && (t.instanceSet[r].instanceInfosTypeArray[4 * a + 1] = 0),
						n[i].destory && n[i].destory(),
						delete n[i]
					}
				}),
				x.
			default.forIn(i,
				function(t, n) {
					x.
				default.forIn(n,
					function(t, i) {
						"cell" !== t && i.v !== e && (n[t].destory && n[t].destory(), delete n[t])
					})
				}),
				this.textTileCellSet = {}
			}
		},
		{
			key: "clearPoi",
			value: function() {
				var t = this; (0, f.
			default)(this.poiDataSet).forEach(function(e) {
					var n = t.poiDataSet[e],
					i = n.tileId,
					o = n.textSymbolIndexList;
					t.instanceSet[i] && o.forEach(function(e) {
						t.instanceSet[i].instanceInfosTypeArray[4 * e + 1] = 1
					}),
					t.poiDataSet[e].destory && t.poiDataSet[e].destory()
				}),
				this.poiDataSet = {},
				this.poiScreenCoordList = {},
				this.poiTileCellSet = {}
			}
		},
		{
			key: "clearIcon",
			value: function() {
				var t = this; (0, f.
			default)(this.iconDataSet).forEach(function(e) {
					var n = t.iconDataSet[e],
					i = n.tileId,
					o = n.iconSymbolIndex;
					t.instanceSet[i] && (t.instanceSet[i].instanceInfosTypeArray[4 * o + 1] = 1),
					t.iconDataSet[e].destory && t.iconDataSet[e].destory()
				}),
				this.iconDataSet = {},
				this.iconScreenCoordList = {},
				this.iconTileCellSet = {}
			}
		},
		{
			key: "_sortValue",
			value: function(t, e) {
				return e.y - t.y > t.x - e.x ? 1 : -1
			}
		},
		{
			key: "getFadeChange",
			value: function() {
				return (S.
			default.now() - this._batchUpdateTime) / 500
			}
		},
		{
			key: "batchUpdate",
			value: function(t) {
				this._batchUpdateTime = S.
			default.now(),
				this.batchUpdateShow();
				var e = 0;
				t && (e = (this._batchUpdateTime - t._batchUpdateTime) / 500),
				this.batchChangeOpacity(t, e),
				this.batchUpdateOpacities()
			}
		},
		{
			key: "batchUpdateShow",
			value: function() {
				var t = this; (0, f.
			default)(this.textDataSet).forEach(function(e) {
					var n = t.textDataSet[e];
					n.updateShow && n.updateShow()
				}),
				(0, f.
			default)(this.poiDataSet).forEach(function(e) {
					var n = t.poiDataSet[e];
					n.updateShow && n.updateShow()
				}),
				(0, f.
			default)(this.iconDataSet).forEach(function(e) {
					var n = t.iconDataSet[e];
					n.updateShow && n.updateShow()
				})
			}
		},
		{
			key: "batchChangeOpacity",
			value: function(t, e) {
				var n = this; (0, f.
			default)(this.textDataSet).forEach(function(i) {
					var o = n.textDataSet[i];
					if (o.setOpacity) {
						var r = t && t.textDataSet && t.textDataSet[i];
						r && null !== r._opacity ? o.setOpacity(r.getShow() !== o.getShow() ? r.getOpacity() : x.
					default.clamp(r._opacity + (o.getShow() ? e: -e), 0, 1)) : o.setOpacity(o.getShow() ? 1 : 0)
					}
				}),
				(0, f.
			default)(this.poiDataSet).forEach(function(i) {
					var o = n.poiDataSet[i];
					if (o.setOpacity) {
						var r = t && t.poiDataSet && t.poiDataSet[i];
						r && null !== r._opacity ? o.setOpacity(r.getShow() !== o.getShow() ? r.getOpacity() : x.
					default.clamp(r._opacity + (o.getShow() ? e: -e), 0, 1)) : r && r.getShow() ? o.setOpacity(1) : o.setOpacity(o.isIndoor && o.getShow() ? 1 : 0)
					}
				}),
				(0, f.
			default)(this.iconDataSet).forEach(function(i) {
					var o = n.iconDataSet[i];
					if (o.setOpacity) {
						var r = t && t.iconDataSet && t.iconDataSet[i];
						r && null !== r._opacity ? o.setOpacity(r.getShow() !== o.getShow() ? r.getOpacity() : x.
					default.clamp(r._opacity + (o.getShow() ? e: -e), 0, 1)) : r && r.getShow() ? o.setOpacity(1) : o.setOpacity(o.isIndoor && o.getShow() ? 1 : 0)
					}
				})
			}
		},
		{
			key: "batchUpdateOpacities",
			value: function() {
				var t = this; (0, f.
			default)(this.textDataSet).forEach(function(e) {
					var n = t.textDataSet[e];
					n.updateOpacity && n.updateOpacity()
				}),
				(0, f.
			default)(this.poiDataSet).forEach(function(e) {
					var n = t.poiDataSet[e];
					n.updateOpacity && n.updateOpacity()
				}),
				(0, f.
			default)(this.iconDataSet).forEach(function(e) {
					var n = t.iconDataSet[e];
					n.updateOpacity && n.updateOpacity()
				})
			}
		},
		{
			key: "calculateAlsoShowedLabel",
			value: function(t, e, n) {
				var i = this; (0, f.
			default)(this.textFeatureSet).filter(function(t) {
					return i.textFeatureSet[t].getShow()
				}).forEach(function(o) {
					var r = i.textFeatureSet[o];
					t[r.tileId] && r.zoom === n.roundZoom && i.calculateLabelFeatures({
						matrix: t[r.tileId]
					},
					r.roadFeature.roads, e, r.tile, n, r.tileFeatures, r.roadFeature)
				})
			}
		},
		{
			key: "calculateTextByTile",
			value: function(t, e, n, i) {
				t.label && this.calculateLabelByTile(t.label, e, n, i),
				t.poi && this.calculatePoiByTile(t.poi, e, n, i),
				t.icon && this.calculateIconByTile(t.icon, e, n, i)
			}
		},
		{
			key: "calculateLabelByTile",
			value: function(t, e, n, i) {
				var o = !0,
				r = !1,
				a = void 0;
				try {
					for (var s, l = (0, u.
				default)(t.features); ! (o = (s = l.next()).done); o = !0) {
						var c = s.value;
						c.roads instanceof Array && c.roads.length && this.calculateLabelFeatures({
							matrix: e
						},
						c.roads, n, t, i, t.features, c)
					}
				} catch(t) {
					r = !0,
					a = t
				} finally {
					try { ! o && l.
						return && l.
						return ()
					} finally {
						if (r) throw a
					}
				}
			}
		},
		{
			key: "calculatePoiByTile",
			value: function(t, e, n, i) {
				var o = !0,
				r = !1,
				a = void 0;
				try {
					for (var s, l = (0, u.
				default)(t.features); ! (o = (s = l.next()).done); o = !0) {
						var c = s.value;
						if (c.datas && c.datas[0] && c.datas[0].text) {
							var f = void 0;
							c.datas[0].icon && (f = c.id),
							this.calculatePoi({
								matrix: e
							},
							c, t.scale, null, n, t.offset, f, t, i, t.features)
						}
					}
				} catch(t) {
					r = !0,
					a = t
				} finally {
					try { ! o && l.
						return && l.
						return ()
					} finally {
						if (r) throw a
					}
				}
			}
		},
		{
			key: "calculateIconByTile",
			value: function(t, e, n, i) {
				var o = 1 / t.scale,
				r = !0,
				a = !1,
				s = void 0;
				try {
					for (var l, c = (0, u.
				default)(t.features); ! (r = (l = c.next()).done); r = !0) {
						var f = l.value;
						"iconSymbolIndex" in f && this.calculateIcon({
							matrix: e,
							scale: o
						},
						f.id, t, f, n, i, t.features)
					}
				} catch(t) {
					a = !0,
					s = t
				} finally {
					try { ! r && c.
						return && c.
						return ()
					} finally {
						if (a) throw s
					}
				}
			}
		},
		{
			key: "impactTextByTile",
			value: function(t) {
				var e = this,
				n = this.textTileCellSet[t.id] || null,
				i = this.poiTileCellSet[t.id] || null,
				o = this.iconTileCellSet[t.id] || null,
				r = (0, s.
			default)({},
				n, i, o); (0, f.
			default)(r).forEach(function(t) {
					e.impactTextByCellId(t)
				})
			}
		},
		{
			key: "impactTextByCellId",
			value: function(t) {
				var e = this,
				n = this.textDataSet,
				i = this.poiDataSet,
				o = this.iconDataSet,
				r = this.textScreenCoordList,
				a = this.poiScreenCoordList,
				s = this.iconScreenCoordList,
				l = void 0,
				u = void 0;
				x.
			default.forIn(r[t],
				function(l, c) {
					if ((u = n[l]) && u.getShow()) for (var f = u,
					d = f.linkIds,
					h = r[t].cell, v = 0; v < 3; v++) if (u && u.getShow()) for (var p = 0; p < 3; p++) if (u && u.getShow()) {
						var _ = h[0] + v - 1 + "_" + (h[1] + p - 1),
						m = r[_],
						g = a[_],
						y = s[_];
						m && x.
					default.forIn(m,
						function(t, i) {
							var o = n[t];
							if (o && o.getShow && t !== l && (!d || !d[t]) && e._impact(c, i)) if (u.rank > o.rank) {
								o.setShow(!1);
								var r = o.linkIds;
								x.
							default.forIn(r,
								function(t) {
									n[t].setShow(!1)
								})
							} else {
								u.setShow(!1);
								var a = u,
								s = a.linkIds;
								x.
							default.forIn(s,
								function(t) {
									n[t].setShow(!1)
								})
							}
						}),
						g && x.
					default.forIn(g,
						function(t, o) {
							var r = i[t];
							if (r && r.getShow() && e._impact(c, o)) {
								u.setShow(!1);
								var a = u,
								s = a.linkIds;
								x.
							default.forIn(s,
								function(t) {
									n[t].setShow(!1)
								})
							}
						}),
						y && x.
					default.forIn(y,
						function(t, n) {
							var i = o[t];
							i && i.getShow() && u.rank >= i.rank && e._impact(c, n) && i.setShow(!1)
						})
					}
				}),
				x.
			default.forIn(a[t],
				function(n, r) {
					if ((l = i[n]) && l.getShow()) for (var u = l.linkId,
					c = a[t].cell, f = 0; f < 3; f++) if (l && l.getShow()) for (var d = 0; d < 3; d++) if (l && l.getShow()) {
						var h = c[0] + f - 1 + "_" + (c[1] + d - 1),
						v = a[h],
						p = s[h];
						p && x.
					default.forIn(p,
						function(t, n) {
							var i = o[t];
							i && i.getShow() && l.iconId !== i.id && l.rank >= i.rank && e._impact(r, n) && i.setShow(!1)
						}),
						v && x.
					default.forIn(v,
						function(t, a) {
							var s = i[t];
							if (n !== t && s && s.getShow() && (!u || u !== t) && e._impact(r, a)) if (l.rank > s.rank) {
								s.setShow(!1),
								o[s.iconId] && o[s.iconId].setShow(!1);
								var c = s.linkId;
								c && i[c] && i[c].setShow(!1)
							} else {
								l.setShow(!1),
								o[l.iconId] && o[l.iconId].setShow(!1);
								var f = l,
								d = f.linkId;
								d && i[d] && i[d].setShow(!1)
							}
						})
					}
				}),
				x.
			default.forIn(s[t],
				function(n, i) {
					var r = o[n];
					if (r && r.getShow()) for (var a = s[t].cell, l = 0; l < 3; l++) if (r && r.getShow()) for (var u = 0; u < 3; u++) if (r && r.getShow()) {
						var c = a[0] + l - 1 + "_" + (a[1] + u - 1),
						f = s[c];
						i.isInCell && c !== t || f && x.
					default.forIn(f,
						function(t, a) {
							var s = o[t];
							n !== t && s && s.getShow() && e._impact(i, a) && (r.rank > s.rank ? s.setShow(!1) : r.setShow(!1))
						})
					}
				})
			}
		},
		{
			key: "textImpact",
			value: function() {
				var t = this;
				x.
			default.forIn(this.cellSet,
				function(e) {
					t.impactTextByCellId(e)
				})
			}
		},
		{
			key: "_impactCoord",
			value: function(t, e) {
				return ! (Math.abs(t.z - e.z) > 0 || Math.abs(t.x - e.x) > 1 || Math.abs(t.y - e.y) > 1)
			}
		},
		{
			key: "_impact",
			value: function(t, e) {
				var n = t.x <= e.x ? e.x: t.x,
				i = t.y <= e.y ? e.y: t.y;
				return n >= t.x && n <= t.x + t.w && i >= t.y && i <= t.y + t.h && n >= e.x && n <= e.x + e.w && i >= e.y && i <= e.y + e.h
			}
		},
		{
			key: "calculateLabelFeatures",
			value: function(t, e, n, i, o, r, a) {
				if (r.instance) {
					var s = i.id + "_" + Math.round(o.zoom);
					this.instanceSet[s] = r.instance;
					var l = e.length / 2 - .5,
					c = Math.floor(l),
					f = e[0].font_size || 12,
					d = void 0;
					if (l % 1 == 0) d = e[l].datas[0].coords;
					else {
						var h = e[Math.floor(l)].datas[0].coords,
						v = e[Math.ceil(l)].datas[0].coords;
						d = [(h[0] + v[0]) / 2, (h[1] + v[1]) / 2]
					}
					var p = new _.Vector4(0, 0, 0, 1),
					m = !0,
					g = !1,
					y = void 0;
					try {
						for (var x, b = (0, u.
					default)(e); ! (m = (x = b.next()).done); m = !0) {
							var S = x.value,
							w = S.datas[0].screenCoords;
							if (!w || w.version !== n.version) {
								p.elements[0] = S.datas[0].coords[0] + f / 2,
								p.elements[1] = -(S.datas[0].coords[1] + f / 2);
								var E = n.getScreenCoordsByCustomMatrix(t.matrix, p);
								E.rank = S.datas[0].rank,
								S.datas[0].screenCoords = E
							}
						}
					} catch(t) {
						g = !0,
						y = t
					} finally {
						try { ! m && b.
							return && b.
							return ()
						} finally {
							if (g) throw y
						}
					}
					for (var T = e[Math.floor(l)], A = e[Math.ceil(l)], P = T.datas[0].screenCoords, I = A.datas[0].screenCoords, k = {
						x: (P.x + I.x) / 2,
						y: (P.y + I.y) / 2
					},
					L = e[0].datas[0].coords, M = e[e.length - 1].datas[0].coords, C = {
						x: L[0],
						y: L[1]
					},
					R = {
						x: M[0],
						y: M[1]
					},
					B = this._sortValue(C, R), N = this._sortValue(e[0].datas[0].screenCoords, e[e.length - 1].datas[0].screenCoords), O = B !== N, D = void 0, z = {},
					F = 0, V = 0, Y = void 0, U = 0, j = e.length; U < j; U++) {
						var G = e[U].datas[0],
						Z = void 0,
						H = void 0,
						W = O ? e[j - U - 1] : e[U];
						G.text = W.datas[1].text,
						G.text_bounds = W.datas[1].text_bounds,
						G.glyph_text_bounds = W.datas[1].glyph_text_bounds;
						var X = W.roadSymbolIndex,
						Q = r.instance.instanceTransTypeArray[3 * X],
						q = r.instance.instanceTransTypeArray[3 * X + 1],
						K = r.instance.instanceTransTypeArray[3 * X + 2];
						W.roadSymbolIndex = e[U].roadSymbolIndex,
						r.instance.instanceTransTypeArray[3 * W.roadSymbolIndex] = r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex],
						r.instance.instanceTransTypeArray[3 * W.roadSymbolIndex + 1] = r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex + 1],
						r.instance.instanceTransTypeArray[3 * W.roadSymbolIndex + 2] = r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex + 2],
						e[U].roadSymbolIndex = X,
						r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex] = Q,
						r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex + 1] = q,
						r.instance.instanceTransTypeArray[3 * e[U].roadSymbolIndex + 2] = K,
						U < j - 1 && (Z = e[U + 1].datas[0], H = this.lineAngle(G.screenCoords, Z.screenCoords), D = U === j - 2 ? H: 0),
						G.line = U === j - 1 ? D: H,
						G.line >= 45 && G.line <= 135 || G.line >= 225 && G.line <= 315 ? V += 1 : F += 1;
						var J = "label_" + e[U].datas[0].text + "_" + e[U].id;
						z[J] = J
					}
					if (F === V) {
						var $ = e[0].datas[0].line;
						Y = !($ >= 45 && $ <= 135 || $ >= 225 && $ <= 315)
					} else Y = F >= V;
					for (var tt = e.map(function(t) {
						return t.id
					}).join(), et = c; et >= 0; et--) {
						var nt = {
							coords: et === c ? d: e[et + 1].datas[0].coords,
							newCoords: et === c ? d: e[et + 1].datas[0].newCoords,
							screenCoords: et === c ? k: e[et + 1].datas[0].screenCoords
						};
						this.calculate({
							transform: t,
							feature: e[et],
							camera: n,
							tile: i,
							neighbor: nt,
							linkIds: z,
							fixType: Y,
							gltrans: o,
							tileFeatures: r,
							roadFeature: a,
							roadFeatureId: tt
						})
					}
					for (var it = c + 1; it < e.length; it++) {
						var ot = {
							coords: it === c + 1 ? d: e[it - 1].datas[0].coords,
							newCoords: it === c + 1 ? d: e[it - 1].datas[0].newCoords,
							screenCoords: it === c + 1 ? k: e[it - 1].datas[0].screenCoords
						};
						this.calculate({
							transform: t,
							feature: e[it],
							camera: n,
							tile: i,
							neighbor: ot,
							linkIds: z,
							fixType: Y,
							gltrans: o,
							tileFeatures: r,
							roadFeature: a,
							roadFeatureId: tt
						})
					}
				}
			}
		},
		{
			key: "calculate",
			value: function(t) {
				var e = t.transform,
				n = t.feature,
				i = t.camera,
				o = t.tile,
				r = t.neighbor,
				a = t.linkIds,
				s = t.fixType,
				l = t.gltrans,
				u = t.tileFeatures,
				c = t.roadFeature,
				f = t.roadFeatureId,
				d = n.datas[0],
				h = i.scale,
				v = n.roadSymbolIndex,
				p = d.text,
				m = "label_" + p + "_" + n.id,
				g = u.instance.instanceCoordsTypeArray[4 * v] * h,
				y = u.instance.instanceCoordsTypeArray[4 * v + 1] * h,
				x = d.screenCoords,
				b = d.line || 0,
				S = 360 - this.calMix(s, b) || 0,
				w = Math.sqrt(Math.pow(x.x - r.screenCoords.x, 2) + Math.pow(x.y - r.screenCoords.y, 2)),
				E = this.calCoords(r.coords, d.coords, w, r.newCoords, d.coordScale, h),
				T = E[0],
				A = E[1];
				d.newCoords = [T, A],
				u.instance.instanceTransTypeArray[3 * v] = T,
				u.instance.instanceTransTypeArray[3 * v + 1] = -A;
				var P = d.newScreenCoords;
				if (!P || P.version !== i.version) {
					var I = new _.Vector4(0, 0, 0, 1);
					I.elements[0] = T,
					I.elements[1] = -A,
					d.newScreenCoords = i.getScreenCoordsByCustomMatrix(e.matrix, I),
					P = d.newScreenCoords,
					P.rank = d.rank,
					P.w = g,
					P.h = y,
					P.x -= g / 2,
					P.y -= y / 2
				}
				var k = Math.floor(P.x / this.DELTA_SCREEN_CELL),
				L = Math.floor(P.y / this.DELTA_SCREEN_CELL),
				M = k + "_" + L;
				P.isInCell = k === Math.floor((P.x + P.w) / this.DELTA_SCREEN_CELL) && L === Math.floor((P.y + P.h) / this.DELTA_SCREEN_CELL),
				this.textFeatureSet[f] || (this.textFeatureSet[f] = {
					_show: !0,
					tileId: o.id,
					roadFeature: c,
					tile: o,
					tileFeatures: u,
					zoom: l.roundZoom,
					getShow: function() {
						return this._show
					},
					setShow: function(t) {
						this._show = t
					},
					destory: function() {
						this._show = null
					}
				});
				var C = this,
				R = {
					v: this.v,
					_show: !0,
					roadSymbolIndex: v,
					rank: d.rank,
					tileId: o.id,
					linkIds: a,
					coordX: o.coordX,
					coordY: o.coordY,
					coordZ: o.coordZ,
					_opacity: null,
					getOpacity: function() {
						return this._opacity
					},
					setOpacity: function(t) {
						this._opacity = t
					},
					updateOpacity: function() {
						u.instance.instanceInfosTypeArray[4 * this.roadSymbolIndex + 3] = this._opacity
					},
					getShow: function() {
						return this._show
					},
					setShow: function(t) {
						this._show = t,
						C.textFeatureSet[f].setShow(t)
					},
					updateShow: function() {
						u.instance.instanceInfosTypeArray[4 * this.roadSymbolIndex + 1] = this._show ? 1 : 0
					},
					destory: function() {
						this._show = null,
						this._opacity = null
					}
				};
				P.x + P.w < -120 || P.x > l.width + 120 || P.y + P.h < -120 || P.y > l.height + 120 ? R.setShow(!1) : (P.v = this.v, this.textTileCellSet[o.id] = this.textTileCellSet[o.id] || {},
				this.textTileCellSet[o.id][M] = !0, this.textScreenCoordList[M] = this.textScreenCoordList[M] || {
					cell: [k, L]
				},
				this.textScreenCoordList[M][m] = P, this.cellSet[M] = !0),
				u.instance.instanceInfosTypeArray[4 * v] = -S % 360 * Math.PI / 180,
				u.instance.instanceInfosTypeArray[4 * v + 1] = 1;
				var B = this.textDataSet[m];
				B && (R.setShow(B.getShow()), R.setOpacity(B.getOpacity())),
				this.textDataSet[m] = R
			}
		},
		{
			key: "calculateAllIndoorPois",
			value: function(t, e, n, i, o, r) {
				var a = this;
				if (t.instance) {
					var s = r.id + "_" + Math.round(o.zoom);
					this.instanceSet[s] = t.instance;
					var l = o.getDistanceScales(),
					u = o.center,
					c = 1 / (0, w.getSpatialResolution)(o.zoom);
					t.forEach(function(s) {
						var f = "iconSymbolIndex" in s,
						d = s.length > 0 && s[0].instance_trans;
						if (f || d) {
							var h = s.iconSymbolIndex,
							v = r.id + "_icon_" + h,
							p = s.map(function(t, e) {
								return "indoor_" + t.text + "_" + r.id + "_" + (t.textSymbolIndexList && t.textSymbolIndexList[e] || "")
							}),
							_ = s.map(function(t) {
								return t.text
							}).join("/"),
							m = o.latLngToCenterLocalPixelByDistanceScales(e, {
								distanceScales: l,
								center: u,
								pixelsPerMeter: c,
								offsetMercator: f ? {
									x: t.instance.instanceTransTypeArray[3 * h],
									y: t.instance.instanceTransTypeArray[3 * h + 1]
								}: {
									x: s[0].instance_trans[0],
									y: s[0].instance_trans[1]
								}
							});
							a.calculateSingleIndoorPoi(s, {
								linkIds: p,
								indoorTile: r,
								hasIcon: f,
								iconId: v,
								localPixel: m,
								camera: i,
								tileMatrix: n,
								transform: o,
								indoorPois: t,
								textName: _
							}),
							f && a.calculateIndoorPoiIcon({
								indoorPois: t,
								iconId: v,
								poiInfo: s,
								localPixel: m,
								tileMatrix: n,
								camera: i,
								transform: o,
								tile: r,
								textName: _
							})
						}
					})
				}
			}
		},
		{
			key: "calculateSingleIndoorPoi",
			value: function(t, e) {
				var n = this,
				i = t,
				o = e.linkIds,
				a = e.indoorTile,
				s = e.hasIcon,
				l = e.iconId,
				u = e.localPixel,
				c = e.camera,
				f = e.tileMatrix,
				d = e.transform,
				h = e.indoorPois,
				v = e.textName;
				i.forEach(function(t, e) {
					if (0 !== t.textBounds.w && 0 !== t.textBounds.h) {
						var p = o[e],
						_ = 0 === e ? o[1] : o[0],
						m = n._generatePoiDataItem({
							isIndoor: !0,
							textSymbolIndexList: t.textSymbolIndexList,
							rank: t.rank,
							tile: a,
							linkId: _,
							iconId: l,
							instance: h.instance,
							name: v
						});
						if (n.poiDataSet[p] = m, !(e > 0)) {
							var y = 1,
							x = 1,
							b = 0;
							if (i.length > 1) {
								var S = i.map(function(t) {
									return t.textBounds
								}),
								w = (0, r.
							default)(S, 2),
								E = w[0],
								T = w[1],
								A = i.map(function(t) {
									return t.anchor
								}),
								P = (0, r.
							default)(A, 2),
								I = P[0],
								k = P[1];
								T.w > E.w && (y = T.w / E.w);
								var L = Math.abs(k.y - I.y) - (E.h + T.h) / 2;
								x = (E.h + T.h + L) / E.h;
								var M = I.x - E.w / 2 - (k.x - T.w / 2);
								M > 0 && (b = M)
							}
							var C = n._generateScreenCoordsForPoi({
								screenCoordsContainer: t,
								localPixel: u,
								textInfo: t,
								boundsScale: y,
								boundsH: x,
								camera: c,
								tileMatrix: f,
								correctCallback: function(e) {
									if (e.x -= b, s) {
										var n = g.
									default.iconSize * c.scale,
										i = t.anchor;
										i.x > 0 ? (e.x -= n, e.w += n) : i.x < 0 ? e.w += n: (e.h += n, i.y > 0 && (e.y -= n))
									}
								}
							});
							n._packPoiToSet(C, {
								item: m,
								transform: d,
								infoId: p,
								tile: a
							})
						}
					}
				})
			}
		},
		{
			key: "calculateIndoorPoiIcon",
			value: function(t) {
				var e = t.indoorPois,
				n = t.iconId,
				i = t.poiInfo,
				o = t.localPixel,
				r = t.tileMatrix,
				a = t.camera,
				s = t.transform,
				l = t.tile,
				u = t.textName,
				c = new _.Vector4(0, 0, 0, 1);
				c.elements[0] = o.x,
				c.elements[1] = o.y;
				var f = i.iconScreenCoods;
				if (!f || f.version !== a.version) {
					i.iconScreenCoods = a.getScreenCoordsByCustomMatrix(r, c),
					f = i.iconScreenCoods,
					f.rank = i[0].rank || 0,
					f.coord = {
						x: f.x,
						y: f.y
					};
					var d = g.
				default.iconSize * a.scale;
					f.x -= d / 2,
					f.y -= d / 2,
					f.w = d,
					f.h = d,
					f.iconSymbolIndex = i.iconSymbolIndex
				}
				this._packIconToSet(f, {
					id: n,
					isIndoor: !0,
					tileId: l.id,
					gltrans: s,
					instance: e.instance,
					needIcon: !i[0].textSymbolIndex,
					name: u
				})
			}
		},
		{
			key: "calculatePoi",
			value: function(t, e, n, i, o, r, a, s, l, u) {
				if (u.instance) {
					var c = s.id + "_" + Math.round(l.zoom);
					this.instanceSet[c] = u.instance;
					var f = e.datas[0];
					if (f.coords.length) for (var d = f.text,
					h = 1,
					v = 1,
					p = f.text_bounds,
					_ = void 0,
					m = 0,
					g = d.length; m < g; m++) {
						var y = "text_" + d[m].text + "_" + e.id,
						x = void 0;
						if (_ = 2 === g ? p.slice(4 * (1 - m), 4 * (1 - m) + 4) : p.slice(4 * m, 4 * m + 4), !(_[2] < 10 || _[3] < 10) && d[m].instance_trans) {
							if (2 === g) {
								var b = d[1].text,
								S = d[0].text;
								x = 0 === m ? "text_" + b + "_" + e.id: "text_" + S + "_" + e.id,
								h = d[0].instance_coords && d[1].instance_coords ? d[0].instance_coords[0] > d[1].instance_coords[0] ? 1 : d[1].instance_coords[0] / d[0].instance_coords[0] : 1,
								v = 2
							}
							this.calculateSingle(t, d[m], y, a, e, o, x, s, m, h, v, l, u)
						}
					}
				}
			}
		},
		{
			key: "calculateSingle",
			value: function(t, e, n, i, o, r, a, s, l, u, c, f, d) {
				var h = e.textSymbolIndexList,
				v = e.rank,
				p = this._generatePoiDataItem({
					isIndoor: !1,
					textSymbolIndexList: h,
					rank: v,
					tile: s,
					linkId: a,
					iconId: i,
					instance: d.instance,
					index: l,
					name: o.datas[0].textName
				});
				if (this.poiDataSet[n] = p, l) return void(this.poiDataSet[n] = p);
				var _ = this._generateScreenCoordsForPoi({
					screenCoordsContainer: o.datas[0],
					localPixel: {
						x: e.instance_trans[0],
						y: e.instance_trans[1]
					},
					textInfo: e,
					boundsScale: u,
					boundsH: c,
					tileMatrix: t.matrix,
					camera: r,
					correctCallback: function(t) {
						var n = e.centerOffset,
						a = g.
					default.iconSize,
						s = r.scale,
						l = e.instance_coords[0],
						c = !!i;
						if (o.datas[0].stretching_len) {
							var f = {
								x: o.datas[0].screenW || 0,
								y: o.datas[0].screenH || 0
							};
							t.x += (n && n.x) * s,
							t.y += (n && n.y) * s,
							t.w += f.x * s,
							t.h += f.y * s
						} else if (n) {
							var d = {
								x: 0,
								y: 0
							},
							h = {
								x: 0,
								y: 0
							};
							if (0 === n.x) {
								if (d.x = -l * (u - 1) / 2, c) {
									var v = Math.abs(e.instance_coords[3]) + a / 2;
									d.y = n.y > 0 ? -v: 0,
									h.y = v
								}
							} else {
								var p = Math.abs(e.instance_coords[2]) + a / 2;
								d.x = n.x < 0 ? -l * (u - 1) : -p,
								h.x = p
							}
							t.x += d.x * s,
							t.y += d.y * s,
							t.w += h.x * s,
							t.h += h.y * s
						}
					}
				});
				this._packPoiToSet(_, {
					item: p,
					infoId: n,
					tile: s,
					transform: f
				})
			}
		},
		{
			key: "_generateScreenCoordsForPoi",
			value: function(t) {
				var e = t.screenCoordsContainer,
				n = t.localPixel,
				i = t.textInfo,
				o = t.boundsScale,
				r = t.boundsH,
				a = t.camera,
				s = t.tileMatrix,
				l = t.correctCallback,
				u = new _.Vector4(0, 0, 0, 1),
				c = e.poiScreenCoords,
				f = a.scale;
				if (!c || c.version !== a.version) {
					u.elements[0] = n.x,
					u.elements[1] = n.y;
					var d = i.instance_coords[0] * f,
					h = i.instance_coords[1] * f,
					v = {
						x: i.instance_coords[2] * f,
						y: i.instance_coords[3] * f
					};
					e.poiScreenCoords = a.getScreenCoordsByCustomMatrix(s, u),
					c = e.poiScreenCoords,
					c.rank = i.rank || 0,
					c.coord = {
						x: c.x,
						y: c.y
					},
					c.x -= v.x,
					c.y -= v.y,
					c.w = d * o,
					c.h = h * r,
					l && l(c)
				}
				return c
			}
		},
		{
			key: "_generatePoiDataItem",
			value: function(t) {
				return {
					name: t.name || "",
					_show: !0,
					textSymbolIndexList: t.textSymbolIndexList,
					rank: t.rank,
					isIndoor: t.isIndoor,
					tileId: t.tile.id,
					linkId: t.linkId,
					iconId: t.iconId,
					coordX: t.tile.coordX,
					coordY: t.tile.coordY,
					coordZ: t.tile.coordZ,
					index: t.index || 0,
					_opacity: null,
					getOpacity: function() {
						return this._opacity
					},
					setOpacity: function(t) {
						this._opacity = t
					},
					updateOpacity: function() {
						var e = this;
						this.textSymbolIndexList.forEach(function(n) {
							t.instance.instanceInfosTypeArray[4 * n + 3] = e._opacity
						})
					},
					getShow: function() {
						return this._show
					},
					setShow: function(t) {
						this._show = t
					},
					updateShow: function() {
						var e = this;
						this.textSymbolIndexList.forEach(function(n) {
							t.instance.instanceInfosTypeArray[4 * n + 1] = e._show ? 1 : 0
						})
					},
					destory: function() {
						this._show = null,
						this._opacity = null
					}
				}
			}
		},
		{
			key: "_packPoiToSet",
			value: function(t, e) {
				var n = this.calCellCoord(t),
				i = n.hIdx,
				o = n.vIdx,
				r = n.cellId;
				t.isInCell = i === Math.floor((t.x + t.w) / this.DELTA_SCREEN_CELL) && o === Math.floor((t.y + t.h) / this.DELTA_SCREEN_CELL),
				t.x + t.w < -120 || t.x > e.transform.width + 120 || t.y + t.h < -120 || t.y > e.transform.height + 120 ? e.item.setShow(!1) : (this.poiScreenCoordList[r] ? this.poiScreenCoordList[r][e.infoId] = t: (this.poiScreenCoordList[r] = {
					cell: [i, o]
				},
				this.poiScreenCoordList[r][e.infoId] = t), this.poiTileCellSet[e.tile.id] = this.poiTileCellSet[e.tile.id] || {},
				this.poiTileCellSet[e.tile.id][r] = !0, this.cellSet[r] = !0)
			}
		},
		{
			key: "calculateIcon",
			value: function(t, e, n, i, o, r, a) {
				if (a.instance) {
					var s = n.id + "_" + Math.round(r.zoom);
					this.instanceSet[s] = a.instance
				}
				var l = i.datas[0].text,
				u = g.
			default.iconSize,
				c = new _.Vector4(0, 0, 0, 1);
				c.elements[0] = a.instance.instanceTransTypeArray[3 * i.iconSymbolIndex],
				c.elements[1] = a.instance.instanceTransTypeArray[3 * i.iconSymbolIndex + 1];
				var f = i.datas[0].iconScreenCoods;
				if (!f || f.version !== o.version) {
					i.datas[0].iconScreenCoods = o.getScreenCoordsByCustomMatrix(t.matrix, c),
					f = i.datas[0].iconScreenCoods,
					f.rank = l && l[0] && l[0].rank || 0;
					var d = u * f.depthScale * o.scale,
					h = u * f.depthScale * o.scale;
					f.coord = {
						x: f.x,
						y: f.y
					},
					f.x -= d / 2 + this.iconBoundsBuffer,
					f.y -= h / 2 + this.iconBoundsBuffer,
					f.w = d + 2 * this.iconBoundsBuffer,
					f.h = h + 2 * this.iconBoundsBuffer,
					f.iconSymbolIndex = i.iconSymbolIndex
				}
				this._packIconToSet(f, {
					id: e,
					tileId: n.id,
					isIndoor: !1,
					gltrans: r,
					instance: a.instance,
					needIcon: l.length <= 0,
					name: i.datas[0].textName
				})
			}
		},
		{
			key: "_packIconToSet",
			value: function(t, e) {
				var n = e.id,
				i = e.tileId,
				o = e.isIndoor,
				r = e.gltrans,
				a = e.instance,
				s = e.needIcon,
				l = e.name,
				u = Math.floor(t.x / this.DELTA_SCREEN_CELL),
				c = Math.floor(t.y / this.DELTA_SCREEN_CELL),
				f = u + "_" + c;
				t.isInCell = u === Math.floor((t.x + t.w) / this.DELTA_SCREEN_CELL) && c === Math.floor((t.y + t.h) / this.DELTA_SCREEN_CELL),
				this.iconDataSet[n] = {
					id: n,
					name: l,
					isIndoor: o,
					tileId: i,
					rank: t.rank,
					_show: !0,
					iconSymbolIndex: t.iconSymbolIndex,
					_opacity: null,
					getOpacity: function() {
						return this._opacity
					},
					setOpacity: function(t) {
						this._opacity = t
					},
					updateOpacity: function() {
						a.instanceInfosTypeArray[4 * this.iconSymbolIndex + 3] = this._opacity
					},
					getShow: function() {
						return this._show
					},
					setShow: function(t) {
						this._show = t
					},
					updateShow: function() {
						a.instanceInfosTypeArray[4 * this.iconSymbolIndex + 1] = this._show ? 1 : 0
					},
					destory: function() {
						this._show = null,
						this._opacity = null
					}
				},
				t.x + t.w < -120 || t.x > r.width + 120 || t.y + t.h < -120 || t.y > r.height + 120 ? this.iconDataSet[n].setShow(!1) : s && (this.iconScreenCoordList[f] ? this.iconScreenCoordList[f][n] = t: (this.iconScreenCoordList[f] = {
					cell: [u, c]
				},
				this.iconScreenCoordList[f][n] = t), this.iconTileCellSet[i] = this.iconTileCellSet[i] || {},
				this.iconTileCellSet[i][f] = !0, this.cellSet[f] = !0)
			}
		},
		{
			key: "calMix",
			value: function(t, e) {
				var n = 0;
				return n = t ? e >= 90 && e <= 270 ? e - 180 : e: e <= 180 ? e - 90 : e - 270,
				Math.round(n)
			}
		},
		{
			key: "lineAngle",
			value: function(t, e) {
				var n = t.x,
				i = t.y,
				o = e.x,
				r = e.y,
				a = o - n,
				s = r - i,
				l = Math.sqrt(a * a + s * s),
				u = a / l,
				c = Math.acos(u),
				f = 180 * c / Math.PI;
				return s > 0 ? f = -f: 0 === s && a < 0 && (f = 180),
				f = f > 90 ? 360 - (f - 90) : 90 - f,
				Math.round(f)
			}
		},
		{
			key: "calCoords",
			value: function(t, e, n, i, o, r) {
				if (!n) return i;
				var a = e[0] - t[0],
				s = e[1] - t[1],
				l = Math.sqrt(a * a + s * s),
				u = l / o * r,
				c = u / n;
				return [i[0] + a * c, i[1] + s * c]
			}
		},
		{
			key: "calCellCoord",
			value: function(t) {
				var e = Math.floor(t.x / this.DELTA_SCREEN_CELL),
				n = Math.floor(t.y / this.DELTA_SCREEN_CELL);
				return {
					hIdx: e,
					vIdx: n,
					cellId: e + "_" + n
				}
			}
		},
		{
			key: "getDataInCell",
			value: function(t, e) {
				var n = this[e + "ScreenCoordList"],
				i = this[e + "DataSet"],
				o = [];
				return n && i && x.
			default.forIn(n[t],
				function(t, e) {
					"cell" !== t && o.push(x.
				default.extend({
						poiId:
						t
					},
					e, i[t]))
				}),
				o
			}
		},
		{
			key: "getPoi",
			value: function(t) {
				var e = this,
				n = null,
				i = this.calCellCoord(t),
				o = i.hIdx,
				r = i.vIdx,
				a = [[0, 0], [0, -1], [ - 1, 0], [ - 1, -1]],
				s = [];
				a.forEach(function(t) {
					var n = o + t[0] + "_" + (r + t[1]),
					i = !!(t[0] + t[1]),
					a = e.getDataInCell(n, "poi").filter(function(t) {
						return t._show && !(i && t.isInCell)
					}),
					l = e.getDataInCell(n, "icon").filter(function(t) {
						return t._show && !(i && t.isInCell)
					});
					s = s.concat(a).concat(l)
				});
				for (var l = 0; l < s.length; l++) {
					var u = s[l],
					c = u.x,
					f = u.y,
					d = u.w,
					h = u.h,
					v = u.coord,
					p = u.isIndoor,
					_ = u.name,
					m = {
						x: t.x - c,
						y: t.y - f
					},
					g = d + 2,
					y = h + 2;
					if (m.x >= -2 && m.x <= g && m.y >= -2 && m.y <= y) {
						n = {
							coord: v,
							bounds: [c, f, d, h],
							isIndoor: p,
							name: _ ? _.replace("/", "") : ""
						};
						break
					}
				}
				return n
			}
		}]),
		t
	} ();
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return [{
			name:
			"a_Position",
			components: 2,
			type: "UNSIGNED_SHORT",
			offset: 0
		},
		{
			name: "a_Info",
			components: 4,
			type: "UNSIGNED_BYTE",
			offset: 4
		},
		{
			name: "a_Color",
			components: 4,
			type: "UNSIGNED_BYTE",
			offset: 8
		},
		{
			name: "a_Transform",
			components: 2,
			type: "UNSIGNED_BYTE",
			offset: 12
		},
		{
			name: "a_Height",
			components: 1,
			type: "UNSIGNED_SHORT",
			offset: 14
		}]
	}
	function r() {
		return ["Uint16", "Uint16", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint8", "Uint16"]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(27),
	s = i(a),
	l = n(24),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(481),
	p = i(v),
	_ = n(278),
	m = i(_),
	g = n(237),
	y = i(g),
	x = n(634),
	b = i(x),
	S = function() {
		function t() { (0, f.
		default)(this, t);
			var e = (0, p.
		default)(r(), o()),
			n = (0, p.
		default)(["Int16"]);
			this.vertiesDataBuffer = e(1024),
			this.indicesDataBuffer = n(1024)
		}
		return (0, h.
	default)(t, [{
			key: "add",
			value: function(t) {
				var e = t.points,
				n = t.height,
				i = t.colorFill,
				o = t.colorSide,
				r = t.transform;
				n *= 1;
				for (var a = r.transX,
				s = void 0 === a ? 0 : a, l = r.transY, c = void 0 === l ? 0 : l, f = r.scale, d = void 0 === f ? 1 : f, h = [Math.round(s / 256) + 16 * Math.round(c / 256), Math.round(1 / d)], v = this.vertiesDataBuffer, p = this.indicesDataBuffer, _ = y.
			default.mixCoords(e, "polygon", [128, 128, 129, 0].concat((0, u.
			default)(i), h, [n]), 2048), g = m.
			default.flatten([_]), x = g.vertices, b = g.dimensions, S = (0, m.
			default)(x, g.holes, b, v.length), w = 0, E = x.length / b; w < E; w++) {
					for (var T = [], A = w * b, P = (w + 1) * b; A < P; A++) T.push(x[A]);
					v.add([T])
				}
				p.add(S),
				this.addWalls(e, _, o, h)
			}
		},
		{
			key: "addWalls",
			value: function(t, e, n, i) {
				for (var o = this.vertiesDataBuffer,
				r = this.indicesDataBuffer,
				a = o.length,
				l = e.length,
				c = y.
			default.mixCoords(t, "polygon", [0, 0, 0, 0].concat((0, u.
			default)(n), (0, u.
			default)(i), [0]), 2048), f = [], d = [], h = 1; h < l; h++) {
					var v = [[].concat(e[h - 1]), [].concat(e[h]), [].concat(c[h - 1]), [].concat(c[h])],
					p = (0, b.
				default)(v[0], v[1], v[2], 127, 128),
					_ = !0,
					m = !1,
					g = void 0;
					try {
						for (var x, S = (0, s.
					default)(v); ! (_ = (x = S.next()).done); _ = !0) {
							var w = x.value;
							w.splice.apply(w, [6, 4].concat((0, u.
						default)(n))),
							w.splice(2, 3, p[0], p[1], p[2])
						}
					} catch(t) {
						m = !0,
						g = t
					} finally {
						try { ! _ && S.
							return && S.
							return ()
						} finally {
							if (m) throw g
						}
					} [].push.apply(f, v),
					d.push(a + 0, a + 1, a + 2, a + 1, a + 3, a + 2),
					a += v.length
				}
				o.add(f),
				r.add(d)
			}
		}]),
		t
	} ();
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = {
			increase: {},
			decrease: {}
		},
		i = [a(t), a(e)],
		o = i[0],
		r = i[1],
		s = l((0, _.
	default)(o), (0, _.
	default)(r)),
		u = s.sameList,
		c = s.increaseList,
		f = s.decreaseList;
		return c.forEach(function(t) {
			n.increase[t] = r[t]
		}),
		f.forEach(function(t) {
			n.decrease[t] = o[t]
		}),
		u.forEach(function(t) {
			var e = l(o[t], r[t]),
			i = e.increaseList,
			a = e.decreaseList;
			i.forEach(function(e) {
				n.increase[t] ? n.increase[t].push(e) : n.increase[t] = [e]
			}),
			a.forEach(function(e) {
				n.decrease[t] ? n.decrease[t].push(e) : n.decrease[t] = [e]
			})
		}),
		n
	}
	function r(t) {
		if ("object" !== (void 0 === t ? "undefined": (0, v.
	default)(t)) || null === t) return ! 1;
		if (Array.isArray(t)) {
			var e = !0,
			n = !1,
			i = void 0;
			try {
				for (var o, a = (0, d.
			default)(t); ! (e = (o = a.next()).done); e = !0) {
					return !! r(o.value)
				}
			} catch(t) {
				n = !0,
				i = t
			} finally {
				try { ! e && a.
					return && a.
					return ()
				} finally {
					if (n) throw i
				}
			}
		}
		return ! 0
	}
	function a(t) {
		var e = {};
		if (Array.isArray(t)) t.forEach(function(t) {
			var n = t.type,
			i = t.features;
			n && (e[n] = s(n, i))
		});
		else {
			var n = t.type,
			i = t.features;
			n && (e[n] = s(n, i))
		}
		return e
	}
	function s(t, e) {
		if (!Array.isArray(e)) return m.DEFAULT_BASEMAP[t] && m.DEFAULT_BASEMAP[t].features;
		switch (t) {
		case m.MAP_TYPE.vector:
			var n = [].concat((0, c.
		default)(e));
			if (n.includes("building")) {
				var i = n.indexOf("building");
				n.includes("building3d") ? n.splice(i, 1) : n.splice(i, 1, "building3d")
			}
			if (n.includes("building2d") && n.includes("building3d")) {
				var o = n.indexOf("building2d");
				n.splice(o, 1)
			}
			return n;
		case m.MAP_TYPE.satellite:
		case m.MAP_TYPE.traffic:
		case m.MAP_TYPE.handdraw:
		default:
			return e
		}
	}
	function l(t, e) {
		var n = [],
		i = [],
		o = [];
		return Array.isArray(t) && Array.isArray(e) && (e.forEach(function(e) {
			t.includes(e) ? n.push(e) : i.push(e)
		}), o = t.filter(function(t) {
			return ! n.includes(t)
		})),
		{
			sameList: n,
			increaseList: i,
			decreaseList: o
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isVerifiedBaseMap = e.formatBaseMap = e.compareBaseMap = void 0;
	var u = n(24),
	c = i(u),
	f = n(27),
	d = i(f),
	h = n(20),
	v = i(h),
	p = n(17),
	_ = i(p),
	m = n(281);
	e.compareBaseMap = o,
	e.formatBaseMap = a,
	e.isVerifiedBaseMap = r
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return c || (c = new a.
	default(function(t) {
			u(null, l.
		default.verSrc,
			function(e) {
				e && e.info && 0 === e.error && (l.
			default.dataVersion.sat = e.info.sat, l.
			default.dataVersion.tile = e.info["1d"], l.
			default.dataVersion.scenic = e.info.scenic),
				t()
			},
			function() {
				t()
			})
		})),
		c
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(25),
	a = i(r);
	e.
default = o;
	var s = n(23),
	l = i(s),
	u = n(340).send,
	c = void 0
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		return new Rt[e.type](t, e, n)
	}
	function r(t, e) {
		return t instanceof Array ? {
			imgBase64List: [].concat(t).concat(e),
			extOffset: t.length
		}: {
			imgBase64List: [t, e],
			extOffset: 1
		}
	}
	function a(t, e) {
		var n = e.id;
		return new L.
	default(function(e, i) {
			if (t) {
				var o = new Image;
				o.onload = function() {
					e(o)
				},
				o.onerror = function() {
					i(n)
				},
				o.src = "data:img/png;base64," + t
			} else e(null)
		})
	}
	function s(t) {
		var e = document.createElement("canvas"),
		n = [],
		i = 0,
		o = 0;
		if (t.forEach(function(t) {
			t && (i = Math.max(t.width, i), o += t.height)
		}), e.width = i, e.height = o, i && o) {
			var r = e.getContext("2d"),
			a = 0;
			return t.forEach(function(t) {
				n.push(a),
				t && (r.drawImage(t, 0, a), a += t.height)
			}),
			{
				canvas: e,
				yOffset: n
			}
		}
		return {}
	}
	function l(t, e) {
		if (t) {
			if (Array.isArray(t)) return t.find(function(t) {
				return t.type === e
			});
			return t.type === e ? t: null
		}
	}
	function u(t) {
		return ! (!t || t.type !== dt.MAP_TYPE.satellite)
	}
	var c, f = n(113),
	d = i(f),
	h = n(32),
	v = i(h),
	p = n(27),
	_ = i(p),
	m = n(221),
	g = i(m),
	y = n(115),
	x = i(y),
	b = n(17),
	S = i(b),
	w = n(20),
	E = i(w),
	T = n(283),
	A = i(T),
	P = n(282),
	I = i(P),
	k = n(25),
	L = i(k),
	M = n(3),
	C = i(M),
	R = n(0),
	B = i(R),
	N = n(1),
	O = i(N),
	D = n(5),
	z = i(D),
	F = n(4),
	V = i(F),
	Y = n(222),
	U = i(Y),
	j = n(487),
	G = n(622),
	Z = i(G),
	H = n(626),
	W = i(H),
	X = n(694),
	Q = i(X),
	q = n(493),
	K = i(q),
	J = n(674),
	$ = i(J),
	tt = n(677),
	et = i(tt),
	nt = n(681),
	it = i(nt),
	ot = n(679),
	rt = i(ot),
	at = n(676),
	st = i(at),
	lt = n(684),
	ut = i(lt),
	ct = n(90),
	ft = n(66),
	dt = n(281),
	ht = n(658),
	vt = n(301),
	pt = n(696),
	_t = i(pt),
	mt = n(697),
	gt = n(498),
	yt = n(385),
	xt = n(659),
	bt = i(xt),
	St = n(509),
	wt = n(788),
	Et = i(wt),
	Tt = n(380),
	At = n(482),
	Pt = n(143),
	It = n(29),
	kt = n(484),
	Lt = n(106),
	Mt = n(23),
	Ct = n(10),
	Rt = (c = {},
	(0, U.
default)(c, ct.SOURCE_TYPE.vector, Q.
default), (0, U.
default)(c, ct.SOURCE_TYPE.geojson, K.
default), (0, U.
default)(c, ct.SOURCE_TYPE.geoTask, $.
default), (0, U.
default)(c, ct.SOURCE_TYPE.imageTile, et.
default), (0, U.
default)(c, ct.SOURCE_TYPE.indoor, it.
default), (0, U.
default)(c, ct.SOURCE_TYPE.ground, st.
default), (0, U.
default)(c, ct.SOURCE_TYPE.traffic, ut.
default), c),
	Bt = function(t) {
		function e(t, n) { (0, B.
		default)(this, e);
			var i = (0, z.
		default)(this, (e.__proto__ || (0, C.
		default)(e)).call(this));
			return i.map = n,
			i._visualPlugins = {},
			i._layers = {},
			i._sources = {},
			i._stylePromise = null,
			i.dispatcher = new Z.
		default(W.
		default, i, t.workerCount),
			i.iconsLoader = new Et.
		default,
			i._mapStyleId = t.mapStyleId,
			i._finalUsedMapStyleId = vt.STYLE_ID[i._mapStyleId],
			i._lastStyleId = vt.STYLE_ID[i._mapStyleId],
			i._baseMap = null === t.baseMap ? null: t.baseMap || dt.DEFAULT_BASEMAP.vector,
			i._baseLayerList = [],
			i._setEventedParent(n, null),
			i._on("loaderror",
			function(t) {
				var e = t.tile,
				n = t.error;
				console.error("加载瓦片发生错误：" + e.coord.id, e, n)
			}),
			(0, bt.
		default)().then(function() {
				i.initBaseLayer()
			}),
			i.loadStyle().then(function(t) {
				var e = t.styleId;
				i._fire("mapstyle_changed", {
					styleId: e
				})
			}).
			catch(function() {}),
			i
		}
		return (0, V.
	default)(e, t),
		(0, O.
	default)(e, [{
			key: "getStyleIdPromise",
			value: function() {
				return (0, _t.
			default)(this._mapStyleId, this.map.id)
			}
		},
		{
			key: "loadStyle",
			value: function() {
				var t = this;
				if (!this._stylePromise) {
					var e = !1;
					this._stylePromise = this.getStyleIdPromise().then(function(n) {
						if (e) return L.
					default.reject("加载样式aborted");
						t._finalUsedMapStyleId = n,
						t._lastStyleId = n;
						var i = (0, mt.loadPoiIconFile)(n, Mt.iconSrc).then(function(e) {
							return t.iconsLoader && t.iconsLoader.load(e)
						}),
						o = (0, gt.loadPoiIconIndexFile)(n, Mt.iconIndexSrc),
						r = (0, yt.loadStyleFile)(n, n);
						return L.
					default.all([i, o, r]).then(function() {
							return e ? L.
						default.reject("加载样式aborted"):
							{
								styleId:
								n,
								iconInfo: {
									scale: t.iconsLoader && t.iconsLoader.scale,
									w: t.iconsLoader && t.iconsLoader.w,
									h: t.iconsLoader && t.iconsLoader.h
								}
							}
						})
					}),
					this._stylePromise.abort = function() {
						e = !0
					}
				}
				return this._stylePromise
			}
		},
		{
			key: "setMapStyleId",
			value: function() {
				function t(t) {
					return e.apply(this, arguments)
				}
				var e = (0, I.
			default)(A.
			default.mark(function t(e) {
					var n, i = this;
					return A.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							if (e !== this._mapStyleId || "config" === this._finalUsedMapStyleId) {
								t.next = 2;
								break
							}
							return t.abrupt("return");
						case 2:
							return this._mapStyleId = e,
							n = this._finalUsedMapStyleId,
							this._stylePromise.abort(),
							this._stylePromise = null,
							this.loadStyle().then(function(t) {
								var e = t.styleId,
								o = t.iconInfo;
								e !== n && i.resetStyle(e, o)
							}),
							t.abrupt("return", this);
						case 8:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "loadStyleConfig",
			value: function(t) {
				var e = this;
				if (!this._stylePromise) {
					var n = t.style,
					i = t.icon,
					o = void 0 === i ? null: i,
					r = t.iconIndex,
					a = void 0 === r ? null: r;
					"config" !== this._finalUsedMapStyleId && (this._lastStyleId = this._finalUsedMapStyleId, this._finalUsedMapStyleId = "config");
					var s = !1,
					l = (0, yt.setStyleConfig)(n, "config"),
					u = void 0,
					c = void 0;
					o && a ? (u = {
						data: o
					},
					c = {
						data: a
					}) : (u = {
						styleId: 0,
						iconSrc: Mt.iconSrc
					},
					c = {
						styleId: 0,
						iconIndexSrc: Mt.iconIndexSrc
					});
					var f = (0, mt.setPoiIcon)(u).then(function(t) {
						return e.iconsLoader.load(t)
					}),
					d = (0, gt.setPoiIconIndex)(c);
					this._stylePromise = L.
				default.all([l, f, d]).then(function() {
						return s ? L.
					default.reject("加载样式aborted"):
						{
							styleId:
							"config",
							iconInfo: {
								scale: e.iconsLoader.scale,
								w: e.iconsLoader.w,
								h: e.iconsLoader.h
							}
						}
					}),
					this._stylePromise.abort = function() {
						s = !0
					}
				}
				return this._stylePromise
			}
		},
		{
			key: "setMapStyleConfig",
			value: function(t) {
				var e = this,
				n = t.style,
				i = t.icon,
				o = void 0 === i ? void 0 : i,
				r = t.iconIndex,
				a = void 0 === r ? void 0 : r;
				return n ? o && "string" != typeof o ? void console.error("icon属性不合法") : a && "object" !== (void 0 === a ? "undefined": (0, E.
			default)(a)) ? void console.error("iconIndex属性不合法") : (this._stylePromise.abort(), this._stylePromise = null, void this.loadStyleConfig(t).then(function(t) {
					var n = t.styleId,
					i = t.iconInfo;
					e.resetStyle(n, i)
				})) : void console.error("setMapStyleConfig中style属性不合法")
			}
		},
		{
			key: "resetStyle",
			value: function(t, e) {
				var n = this,
				i = []; (0, S.
			default)(this._sources).forEach(function(t) {
					n._sources[t].id && n._sources[t].id.indexOf("vector_source") >= 0 && i.push(n._sources[t])
				}),
				i.length > 0 && i.forEach(function(n) {
					n.setStyleAndIconInfo(t, e),
					n.clearTiles()
				}),
				this._fire("mapstyle_changed", {
					styleId: t
				})
			}
		},
		{
			key: "initBaseLayer",
			value: function(t) {
				var e = this;
				if (this._baseMap || t) {
					if (t || (t = this._baseMap), Array.isArray(t)) return void t.forEach(function(t) {
						e.initBaseLayer(t)
					});
					switch (t.type) {
					case dt.MAP_TYPE.handdraw:
						(0, j.createHanddrawLayer)(this.map);
						break;
					case dt.MAP_TYPE.satellite:
						(0, j.createSatelliteLayer)(this.map, {
							features: t.features
						});
						break;
					case dt.MAP_TYPE.traffic:
						(0, j.createTrafficLayer)(this.map, t);
						break;
					case dt.MAP_TYPE.vector:
					default:
						(0, j.createVectorLayer)(this.map, {
							features: t.features
						})
					}
				}
			}
		},
		{
			key: "resetBaseLayer",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : dt.DEFAULT_BASEMAP.vector;
				if (! (0, ht.isVerifiedBaseMap)(e)) return console.error("setBaseMap传入的参数不合法", e),
				this;
				var n = Array.isArray(e) ? e.map(function(t) {
					return t.type
				}) : [e.type];
				null === this._baseMap && (this._baseMap = {});
				var i = (0, ht.compareBaseMap)(this._baseMap, e),
				o = i ? (0, x.
			default)(i.increase):
				[],
				r = i ? (0, x.
			default)(i.decrease):
				[];
				r.length > 0 && this._handleDecreaseBaseMap(r),
				o.length > 0 && this._handleIncreaseBaseMap(o, e);
				var a = (0, ht.formatBaseMap)(e).vector;
				a && 0 === a.length ? this._setSourceFrozen("vector_source", !0) : this._setSourceFrozen("vector_source", !1);
				var s = (0, g.
			default)(dt.SATELLITE_LAYER_ID),
				u = void 0,
				c = 0;
				return n.forEach(function(n) {
					switch (n) {
					case dt.MAP_TYPE.handdraw:
						u = t.getLayer(dt.MAP_TYPE.handdraw),
						u && u.setZIndex(c += 1);
						break;
					case dt.MAP_TYPE.satellite:
						s.forEach(function(e) { (u = t.getLayer(e)) && u.setZIndex(c += 1)
						});
						break;
					case dt.MAP_TYPE.traffic:
						(0, g.
					default)(dt.TRAFFIC_LAYER_ID).forEach(function(n) {
							u = t.getLayer(n);
							var i = l(e, dt.MAP_TYPE.traffic);
							u && (u._updateFilter(i && i.filter), i && i.hasOwnProperty("opacity") && u.setOpacity(i.opacity), u.setZIndex(c += 1))
						});
						break;
					case dt.MAP_TYPE.vector:
						u = t.getLayer(dt.VECTOR_LAYER_ID.base),
						u && u.setZIndex(c += 1)
					}
				}),
				this._baseMap = e,
				this
			}
		},
		{
			key: "_handleIncreaseBaseMap",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				i = [],
				o = !0,
				r = !1,
				a = void 0;
				try {
					for (var s, u = (0, _.
				default)(t); ! (o = (s = u.next()).done); o = !0) !
					function() {
						var t = (0, v.
					default)(s.value, 2),
						o = t[0],
						r = t[1],
						a = [];
						switch (o) {
						case dt.MAP_TYPE.traffic:
							if (r.forEach(function(t) {
								e._layers[dt.TRAFFIC_LAYER_ID[t]] ? (e._setLayerVisible(dt.TRAFFIC_LAYER_ID[t], !0), e._setSourceFrozen(dt.TRAFFIC_LAYER_ID[t], !1)) : a.push(t)
							}), a.length > 0) {
								var u = l(n, dt.MAP_TYPE.traffic);
								i.push(u)
							}
							break;
						case dt.MAP_TYPE.satellite:
							var c = o === dt.MAP_TYPE.satellite ? dt.SATELLITE_LAYER_ID: dt.TRAFFIC_LAYER_ID;
							r.forEach(function(t) {
								e._layers[c[t]] ? (e._setLayerVisible(c[t], !0), e._setSourceFrozen(c[t], !1)) : a.push(t)
							}),
							a.length > 0 && i.push({
								type: o,
								features: a
							});
							break;
						case dt.MAP_TYPE.handdraw:
							e._layers[o] ? (e._setLayerVisible(dt.MAP_TYPE.handdraw, !0), e._setSourceFrozen(dt.MAP_TYPE.handdraw, !1)) : i.push({
								type: o
							});
							break;
						case dt.MAP_TYPE.vector:
							r.forEach(function(t) {
								switch (t) {
								case ft.BASE_LAYER_TYPE.base:
									e._layers[dt.VECTOR_LAYER_ID.base] ? e._setLayerVisible(dt.VECTOR_LAYER_ID.base, !0) : a.push(t);
									break;
								case ft.BASE_LAYER_TYPE.arrow:
									e._layers[dt.VECTOR_LAYER_ID.arrow] ? e._setLayerVisible(dt.VECTOR_LAYER_ID.arrow, !0) : a.push(t);
									break;
								case ft.BASE_LAYER_TYPE.building2d:
								case ft.BASE_LAYER_TYPE.building3d:
									a.push(t);
									break;
								case ft.BASE_LAYER_TYPE.point:
								case ft.BASE_LAYER_TYPE.label:
									var n = e._layers[dt.VECTOR_LAYER_ID.poi],
									i = t === ft.BASE_LAYER_TYPE.point ? ft.BASE_LAYER_TYPE.label: ft.BASE_LAYER_TYPE.point;
									if (n) {
										var o = t + "_" + n.id,
										r = i + "_" + n.id;
										n.hasChild(o) ? (n.getChild(o).setVisible(!0), e.map.drawManager.updatePlace()) : (n.hasChild(r) && !1 !== n.getChild(r).visible && a.push(i), n.setMap(null), a.push(t))
									} else a.push(t)
								}
							}),
							a.length > 0 && i.push({
								type: o,
								features: a
							})
						}
					} ()
				} catch(t) {
					r = !0,
					a = t
				} finally {
					try { ! o && u.
						return && u.
						return ()
					} finally {
						if (r) throw a
					}
				}
				this.initBaseLayer(i)
			}
		},
		{
			key: "_handleDecreaseBaseMap",
			value: function(t) {
				var e = this,
				n = !0,
				i = !1,
				o = void 0;
				try {
					for (var r, a = (0, _.
				default)(t); ! (n = (r = a.next()).done); n = !0) {
						var s = (0, v.
					default)(r.value, 2),
						l = s[0],
						u = s[1];
						switch (l) {
						case dt.MAP_TYPE.traffic:
						case dt.MAP_TYPE.satellite:
							if ("break" ===
							function() {
								var t = l === dt.MAP_TYPE.satellite ? dt.SATELLITE_LAYER_ID: dt.TRAFFIC_LAYER_ID,
								n = (0, S.
							default)(t);
								return u.forEach(function(i) {
									n.includes(i) && (e._setLayerVisible(t[i], !1), e._setSourceFrozen(t[i], !0))
								}),
								"break"
							} ()) break;
						case dt.MAP_TYPE.handdraw:
							this._setLayerVisible(dt.MAP_TYPE.handdraw, !1),
							this._setSourceFrozen(dt.MAP_TYPE.handdraw, !0);
							break;
						case dt.MAP_TYPE.vector:
							u.forEach(function(t) {
								switch (t) {
								case ft.BASE_LAYER_TYPE.base:
									e._setLayerVisible(dt.VECTOR_LAYER_ID.base, !1);
									break;
								case ft.BASE_LAYER_TYPE.arrow:
									e._setLayerVisible(dt.VECTOR_LAYER_ID.arrow, !1);
									break;
								case ft.BASE_LAYER_TYPE.building2d:
								case ft.BASE_LAYER_TYPE.building3d:
									var n = e._layers[dt.VECTOR_LAYER_ID.building];
									n && n.setMap(null);
									break;
								case ft.BASE_LAYER_TYPE.point:
								case ft.BASE_LAYER_TYPE.label:
									var i = e._layers[dt.VECTOR_LAYER_ID.poi];
									i && i.hasChild(t + "_" + i.id) && i.getChild(t + "_" + i.id).setVisible(!1)
								}
							})
						}
					}
				} catch(t) {
					i = !0,
					o = t
				} finally {
					try { ! n && a.
						return && a.
						return ()
					} finally {
						if (i) throw o
					}
				}
			}
		},
		{
			key: "_setLayerVisible",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
				n = this._layers[t];
				return n && n.setVisible(e),
				this
			}
		},
		{
			key: "_setSourceFrozen",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
				n = this.getSource(t);
				return n && (e ? n.freeze() : n.unfreeze()),
				this
			}
		},
		{
			key: "getFinalUsedMapStyleId",
			value: function() {
				return this._finalUsedMapStyleId
			}
		},
		{
			key: "getSource",
			value: function(t) {
				return this._sources[t]
			}
		},
		{
			key: "addSource",
			value: function(t, e) {
				var n = o(t, e, this.dispatcher);
				this._sources[t] = n,
				n._setEventedParent(this,
				function() {
					return {
						source: n,
						sourceId: t
					}
				}),
				n.onAdd(this.map)
			}
		},
		{
			key: "removeSource",
			value: function(t) {
				if (this._sources[t]) {
					var e = this._sources[t];
					delete this._sources[t],
					e._setEventedParent(null),
					e.clear(),
					e.onRemove && e.onRemove(this.map)
				}
			}
		},
		{
			key: "addIndoorIndexSource",
			value: function(t) {
				return new rt.
			default(t, this.dispatcher)
			}
		},
		{
			key: "removeLayer",
			value: function(t) {
				var e = this._layers[t];
				if (!e) return void this._fire("error", {
					error: new Error("The layer '" + t + "' does not exist in map")
				});
				e._setEventedParent(null),
				delete this._layers[t]
			}
		},
		{
			key: "getLayer",
			value: function(t) {
				return this._layers[t]
			}
		},
		{
			key: "findLayer",
			value: function(t) {
				return (0, g.
			default)(this._layers).find(t)
			}
		},
		{
			key: "addLayer",
			value: function(t) {
				this._layers[t.id] = t,
				t._setEventedParent(this, {
					layer: {
						id: t.id
					}
				})
			}
		},
		{
			key: "_serializeLayers",
			value: function() {
				var t = [],
				e = (0, S.
			default)(this._layers),
				n = !0,
				i = !1,
				o = void 0;
				try {
					for (var r, a = (0, _.
				default)(e); ! (n = (r = a.next()).done); n = !0) {
						var s = r.value,
						l = this._layers[s];
						t.push(l)
					}
				} catch(t) {
					i = !0,
					o = t
				} finally {
					try { ! n && a.
						return && a.
						return ()
					} finally {
						if (i) throw o
					}
				}
				return t.length > 1 && t.sort(function(t, e) {
					return t.rank - e.rank
				}),
				t
			}
		},
		{
			key: "getDrawLayers",
			value: function() {
				return (0, g.
			default)(this._layers).reduce(function(t, e) {
					return t.concat(e.flat())
				},
				[])
			}
		},
		{
			key: "getDrawSource",
			value: function(t) {
				var e = this,
				n = {};
				return Ct.forIn(this._layers,
				function(i, o) {
					var r = o.sourceId || o.layerSourceId,
					a = e.map.getSource(r);
					a && t >= o.minZoom && t <= o.maxZoom && (n[r] = a)
				}),
				n
			}
		},
		{
			key: "_updateSource",
			value: function(t, e, n) {
				var i = this.getDrawSource(t.zoom);
				Ct.forIn(i,
				function(i, o) {
					o && !0 !== o.isFrozen && o.update(t, e, n)
				})
			}
		},
		{
			key: "updateIndoorData",
			value: function(t, e) {
				Ct.forIn(this._sources,
				function(n, i) {
					i.updateIndoorData && i.updateIndoorData(t, e)
				})
			}
		},
		{
			key: "moveLayer",
			value: function(t, e) {
				var n = (0, g.
			default)(Pt.LAYER_LEVEL);
				if (!n.includes(e)) return void new It.EnumError("level", n, e).error();
				var i = this._layers[t] || this._visualPlugins[t];
				if (i) {
					if (i.setLevel(e), (0, kt.hasBorderLayer)(i.type)) {
						var o = t + "_border";
						this.moveLayer(o, e)
					}
				} else console.log("moveLayer: 当前地图不存在此图层 " + t)
			}
		},
		{
			key: "update",
			value: function() {}
		},
		{
			key: "addVisualPlugin",
			value: function(t) {
				var e = t.id;
				if (this._visualPlugins[e]) return void console.warn("The visualPlugin '" + e + "' already exists in map");
				this._visualPlugins[e] = t
			}
		},
		{
			key: "removeVisualPlugin",
			value: function(t) {
				if (!this._visualPlugins[t]) return void console.warn("The visualPlugin '" + t + "' does not exist in map");
				delete this._visualPlugins[t]
			}
		},
		{
			key: "getPlugins",
			value: function() {
				return (0, g.
			default)(this._visualPlugins)
			}
		},
		{
			key: "_sortPlugins",
			value: function(t, e) {
				var n = (0, g.
			default)(t);
				return Ct.bubbleSort(n, e),
				n
			}
		},
		{
			key: "uploadTileImage",
			value: function(t, e, n) {
				var i = this,
				o = e.tileId,
				l = r(e.imgBase64, e.extImgBase64),
				u = l.imgBase64List,
				c = l.extOffset;
				if (o && u.length) {
					this.map.renderEngine.painters.symbol.preDraw({
						iconsLoader: this.iconsLoader
					});
					var f = this.map.renderEngine.textCache;
					if (f && !f.tiles[o]) {
						var d = new St.ScheduleTaskNode;
						d.tileId = o;
						var h = function() {
							if (f.tiles[o]) return n(null, null),
							null;
							var t = null,
							r = !1,
							l = !1,
							d = null,
							h = [];
							if ((0, At.isInterceptForBase64)(i.map.getZoom(), e.zoom, e.maxDataZoom)) return r = !0,
							l = !0,
							n(null, null),
							null;
							var v = u.map(function(t, e) {
								return a(t, {
									id: o + "_" + e
								})
							});
							return L.
						default.all(v).then(function(e) {
								var n = s(e),
								i = n.canvas,
								o = n.yOffset;
								t = i,
								h = o,
								r = !0,
								d && d()
							}).
							catch(function(t) {
								console.error("img upload failed ", t)
							}),
							d = function() {
								if (r && !l) return (0, At.isInterceptForGPU)(i.map && i.map.getZoom(), e.zoom, e.maxDataZoom) ? (l = !0, n(null, null), null) : t ? (f.addImage(o, t,
								function() {
									t = null,
									f.tiles[o].yOffsetList = h,
									l = !0,
									n(null, {
										yOffsetList: h,
										extOffset: c
									})
								}), d) : (n(null, {
									yOffsetList: h,
									extOffset: c
								}), null);
								if (l) {
									if ((0, At.isInterceptForTileData)(i.map.getZoom(), e.zoom, e.maxDataZoom)) return null;
									var a = i.getSource(e.sourceId),
									s = a && a.getDrawItems(),
									u = s && s[o],
									v = u && u.getData();
									return v ? (v[ft.BASE_LAYER_TYPE.text] || (v[ft.BASE_LAYER_TYPE.text] = {},
									v[ft.BASE_LAYER_TYPE.text][o] = t && t.toDataURL() || ""), null) : d
								}
								return d
							},
							d.tileId = o,
							null
						};
						h.tileId = o,
						d.setCallback(h),
						d.addToQueue(this.map.fpsManager.scheduleTaskQueue)
					} else f && n(null, {
						yOffsetList: f.tiles[o].yOffsetList,
						extOffset: c
					})
				} else n(null, null)
			}
		},
		{
			key: "addGlyphs",
			value: function(t, e, n, i) {
				if (e.glyphs && e.glyphs.length > 0) {
					var o = this.map.renderEngine.glyphManager.generateAtlas(e.glyphs, i || {});
					n(null, {
						mapping: (0, d.
					default)(o.mapping)
					})
				} else n(null, {
					mapping: "{}"
				})
			}
		},
		{
			key: "addMarkers",
			value: function(t, e, n) {
				e.markerSrcs && e.markerSrcs.length > 0 ? this.map.renderEngine.markerManager.generateAtlas(e.markerSrcs, e.glyphs).then(function(t) {
					n(null, {
						mapping: (0, d.
					default)(t)
					})
				}).
				catch(function(t) {
					console.error(t),
					n(null, {
						mapping: "{}"
					})
				}) : n(null, {
					mapping: "{}"
				})
			}
		},
		{
			key: "addBillboards",
			value: function(t, e, n) {
				if (e.markerSrcs && e.markerSrcs.length > 0 || e.tileId) {
					var i = e.markerSrcs,
					o = null;
					e.tileId && (o = JSON.parse(e.billboardData), i = o.map(function(t) {
						return t.text
					})),
					this.map.renderEngine.markerManager.generateAtlas(i, null, {
						tileId: e.tileId,
						tileImage64: e.tileImage64,
						billboardData: o
					}).then(function(t) {
						n(null, {
							mapping: (0, d.
						default)(t)
						})
					}).
					catch(function(t) {
						console.error(t),
						n(null, {
							mapping: "{}"
						})
					})
				} else n(null, {
					mapping: "{}"
				})
			}
		},
		{
			key: "uploadTileTexture",
			value: function(t, e, n) {
				var i = this;
				if (e.billboard || e.glyphs) {
					var o = new L.
				default(function(n) {
						i.addBillboards(t, e.billboard,
						function(t, e) {
							n(e.mapping)
						})
					}),
					r = {
						glyphs: []
					},
					a = {
						glyphs: []
					};
					e.glyphs && e.glyphs.forEach(function(t) {
						"bold" === t.font_weight ? a.glyphs.push(t.text) : r.glyphs.push(t.text)
					});
					var s = new L.
				default(function(e) {
						i.addGlyphs(t, r,
						function(t, n) {
							e(n.mapping)
						},
						{
							fontWeight: "normal"
						})
					}),
					l = new L.
				default(function(e) {
						i.addGlyphs(t, a,
						function(t, n) {
							e(n.mapping)
						},
						{
							fontWeight: "bold"
						})
					});
					L.
				default.all([o, s, l]).then(function(t) {
						n(null, {
							billboardMapping: t[0],
							glyphMapping: t.slice(1)
						})
					})
				} else n(null, {
					billboardMapping: "{}",
					glyphMapping: "{}"
				})
			}
		},
		{
			key: "getIndoorGlyphInfo",
			value: function(t, e, n) {
				var i = this;
				if (e.pointInfoSet || e.glyphList || e.iconSrcList) {
					var o = new L.
				default(function(n) {
						i.addMarkers(t, {
							markerSrcs: e.iconSrcList
						},
						function(t, e) {
							n(e.mapping)
						})
					}),
					r = new L.
				default(function(n) {
						i.addGlyphs(t, {
							glyphs: e.glyphList
						},
						function(t, e) {
							n(e.mapping)
						})
					}),
					a = JSON.parse(e.indoorStyle),
					s = new L.
				default(function(t) {
						var n = document.createElement("canvas"),
						i = n.getContext("2d"),
						o = JSON.parse(e.pointInfoSet),
						r = {}; (0, S.
					default)(o).forEach(function(t) {
							var e = parseInt(t.replace("zoom", ""), 10);
							r[e] = o[t].filter(function(t) {
								return !! t
							}).map(function(t) {
								return t.map(function(t) {
									return (0, Tt.getPoiRect)(t, e, i, a)
								})
							})
						}),
						t((0, d.
					default)(r))
					});
					L.
				default.all([o, r, s]).then(function(t) {
						n(null, {
							iconMapping: t[0],
							glyphMapping: t[1],
							poiMapping: t[2]
						})
					})
				} else n(null, {
					iconMapping: "{}",
					glyphMapping: "{}",
					poiMapping: "{}"
				})
			}
		},
		{
			key: "destroy",
			value: function() {
				var t = this; (0, S.
			default)(this._visualPlugins).forEach(function(e) {
					t._visualPlugins[e].remove()
				}),
				this._visualPlugins = null,
				(0, g.
			default)(this._layers).forEach(function(t) {
					t.setMap(null)
				}),
				this._layers = null,
				(0, S.
			default)(this._sources).forEach(function(e) {
					t.removeSource(e)
				}),
				this._sources = null,
				this._stylePromise = null,
				this.dispatcher.destroy(),
				this.iconsLoader = null,
				this._mapStyleId = null,
				this._finalUsedMapStyleId = null,
				this._lastStyleId = null,
				this._baseMap = null,
				this._clearAllListeners(),
				this.map = null
			}
		},
		{
			key: "hasSatellite",
			value: function() {
				var t = !1;
				return Array.isArray(this._baseMap) ? this._baseMap.forEach(function(e) {
					u(e) && (t = !0)
				}) : t = u(this._baseMap),
				t
			}
		},
		{
			key: "baseMap",
			get: function() {
				return this._baseMap
			},
			set: function(t) {
				this.resetBaseLayer(t)
			}
		}]),
		e
	} (Lt);
	t.exports = Bt
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(485),
	m = i(_),
	g = n(66),
	y = n(29),
	x = n(209),
	b = i(x),
	S = n(43),
	w = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, s.
		default)(this, e),
			t.type = g.RENDER_LAYER_TYPE.canvasGround;
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return (0, S.statCn)("CanvasGroundLayer"),
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "_initialize", this).call(this, t),
				t.canvas || new y.BaseTypeError("CanvasGroundLayer.canvas", "HTMLCanvasElement", t.canvas).error(),
				t.bounds instanceof b.
			default || new y.BaseTypeError("CanvasGroundLayer.bounds", "LatLngBounds", t.bounds).error(),
				this._mediaSource = t.canvas,
				this._bounds = t.bounds
			}
		},
		{
			key: "setCanvas",
			value: function(t) {
				t || new y.BaseTypeError("CanvasGroundLayer.canvas", "HTMLCanvasElement", t).error(),
				this._mediaSource !== t && this._updateMediaSource(t)
			}
		},
		{
			key: "refresh",
			value: function() {
				this._resetData()
			}
		}]),
		e
	} (m.
default);
	e.
default = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o() {
		return {
			state:
			0,
			transition: function(t) {
				var e = "overlay" === t;
				switch (this.state) {
				case 0:
					this.state = e ? 1 : 0;
					break;
				case 1:
					this.state = e ? 1 : 2;
					break;
				case 2:
					this.state = e ? 1 : 0
				}
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(82),
	a = i(r),
	s = n(16),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(35),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(299),
	S = i(b),
	w = n(90),
	E = n(66),
	T = n(41),
	A = i(T),
	P = n(29),
	I = n(43),
	k = n(28),
	L = i(k),
	M = n(468),
	C = i(M),
	R = A.
default.isNumber,
	B = function(t) {
		function e(t) { (0, d.
		default)(this, e);
			var n = (0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t));
			return (0, I.statCn)("GrayTileLayer"),
			n
		}
		return (0, x.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var n = (0, l.
			default)({},
				t),
				i = n.colorMap;
				this.getTileUrl = t.getTileUrl,
				i && i instanceof C.
			default || (new P.BaseTypeError("WeatherLayer.colorMap", "GradientColor", i).error(), n.colorMap = null),
				this.colorMap = n.colorMap || null,
				this.rgbaFormatter = n.rgbaFormatter || "color.r",
				this.type = E.RENDER_LAYER_TYPE.grayTile,
				this.grayType = n.weatherType || E.RENDER_LAYER_TYPE.grayTile,
				this._bubbleHandler = [],
				this._mousemoveFSM = o(),
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "_initialize", this).call(this, t)
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return R(t) || new P.BaseTypeError("GrayTileLayer.zIndex", "number", t).error(),
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "setZIndex", this).call(this, t)
			}
		},
		{
			key: "_addSource",
			value: function() {
				this._bindBubbleHandler(),
				this.map && !this.map.getSource(this.sourceId) && (this.map.addSource(this.sourceId, {
					type: w.SOURCE_TYPE.imageTile,
					tileSize: this.tileSize,
					data: this.getTileUrl,
					colorMap: this.colorMap,
					rgbaFormatter: this.rgbaFormatter,
					minZoom: this.minDataZoom,
					maxZoom: this.maxDataZoom
				}), this._fire("layer", {}))
			}
		},
		{
			key: "_removeSource",
			value: function() { (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "_removeSource", this).call(this),
				this._removeBubbleHandler()
			}
		},
		{
			key: "_bindBubbleHandler",
			value: function() {
				var t = this;
				this._bubbleHandler && (this._bubbleHandler.push(L.
			default.on(this.map._bubbleMiddleware, "mousemove",
				function() {
					t._mousemoveFSM.transition.call(t._mousemoveFSM, "map")
				})), this._bubbleHandler.push(L.
			default.on(this.map._bubbleMiddleware, "action",
				function(e) {
					e && e.layerId === t.id && ("click" === e.eventType && t.emit("click", (0, l.
				default)({},
					e.mapEvent, {
						value: t.getValueFromColor(e.pickColor),
						rgba: (0, a.
					default)(e.pickColor),
						type: "click",
						target: t
					})), "mousemove" === e.eventType && (t._mousemoveFSM.transition.call(t._mousemoveFSM, "overlay"), t._emitPixelEvent("hover", t.getValueFromColor(e.pickColor), e.pickColor, e.mapEvent)))
				})), this._bubbleHandler.push(L.
			default.on(this.map, "destroy",
				function() {
					t.setMap(null)
				})))
			}
		},
		{
			key: "_removeBubbleHandler",
			value: function() {
				this._bubbleHandler.forEach(function(t) {
					t && t.remove && t.remove()
				})
			}
		},
		{
			key: "_emitPixelEvent",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : null,
				n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : [0, 0, 0, 1],
				i = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {};
				this.emit(t, (0, l.
			default)({},
				i, {
					value: e,
					rgba: (0, a.
				default)(n),
					type: t,
					target: this
				}))
			}
		},
		{
			key: "getValueFromColor",
			value: function(t) {
				return Number(t[0] || 0).toFixed(2)
			}
		}]),
		e
	} (S.
default);
	e.
default = B
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		if (R(t)) {
			var e = t.id,
			n = void 0 === e ? (0, b.uniqueId)() : e,
			i = t.paths;
			return t.id = n,
			C(i) ? i.flat(3).every(function(t, e) {
				var n = B(t);
				return n || new P.ClassTypeError("HighlightGeometry.path[" + e + "]", "LatLng", t).error(),
				n
			}) : (new P.BaseTypeError("HighlightGeometry.paths", "Array", i).error(), !1)
		}
		return new P.BaseTypeError("HighlightGeometry", "Object", t).error(),
		!1
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(24),
	a = i(r),
	s = n(148),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(4),
	g = i(m),
	y = n(257),
	x = i(y),
	b = n(10),
	S = n(90),
	w = n(220),
	E = n(66),
	T = n(41),
	A = i(T),
	P = n(29),
	I = n(227),
	k = i(I),
	L = n(143),
	M = n(218),
	C = A.
default.isArray,
	R = A.
default.isObject,
	B = A.
default.isValidLatLng,
	N = new M.ExtrudablePolygonStyle({
		color: "#ffffff",
		showBorder: !1,
		extrudeHeight: 1e3
	}),
	O = function(t) {
		function e(t) {
			return (0, d.
		default)(this, e),
			t.type = E.RENDER_LAYER_TYPE.highlight,
			t.level = L.LAYER_LEVEL.POST_PROCESS,
			(0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, g.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var e = t.geometries,
				n = void 0 === e ? [] : e,
				i = new l.
			default;
				this.sourceId = this.id,
				this.maskGeoMap = i,
				this.highlightColor = new k.
			default("rgba(0, 0, 0, 0)").toArray(),
				this.shadeColor = new k.
			default("rgba(0, 0, 0, 0.4)").toArray(),
				n && n.lenght > 0 && this.add(n)
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && this.map.addSource(this.sourceId, {
					type: S.SOURCE_TYPE.geojson,
					data: {
						type: w.GEOMETRY_TYPES.HIGHLIGHT,
						geometries: [].concat((0, a.
					default)(this.maskGeoMap.values())),
						styles: {
						default:
							N,
							highlightColor: this.highlightColor,
							shadeColor: this.shadeColor
						}
					}
				})
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		},
		{
			key: "add",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
				return C(e) ? (e.forEach(function(e) {
					if (o(e)) {
						var n = e.id;
						t.maskGeoMap.has(n) ? console.warn("HighlightLayer.add: 已存在id为" + n + "的MaskGeometry对象。") : t.maskGeoMap.set(n, e)
					}
				}), this._updateData(), this) : (new P.BaseTypeError("HighlightLayer.add()传入参数", "Array", e).error(), this)
			}
		},
		{
			key: "get",
			value: function(t) {
				return this.maskGeoMap.get(t)
			}
		},
		{
			key: "getAll",
			value: function() {
				return [].concat((0, a.
			default)(this.maskGeoMap.values()))
			}
		},
		{
			key: "remove",
			value: function(t) {
				if (!C(t)) return new P.BaseTypeError("HighlightLayer.remove()传入参数", "Array", t).error(),
				this;
				var e = this.maskGeoMap;
				return t.forEach(function(t) {
					e.has(t) ? e.delete(t) : console.warn("HighlightLayer.remove: 不存在id为" + t + "的MaskGeometry对象。")
				}),
				this._updateData(),
				this
			}
		},
		{
			key: "clear",
			value: function() {
				return this.maskGeoMap.clear(),
				this._updateData(),
				this
			}
		},
		{
			key: "update",
			value: function(t, e) {
				var n = e.highlightColor,
				i = void 0 === n ? "rgba(0, 0, 0, 0)": n,
				r = e.shadeColor,
				a = void 0 === r ? "rgba(0, 0, 0, 0.4)": r;
				if (!C(t)) return new P.BaseTypeError("HighlightLayer.update()传入参数", "Array", t).error(),
				this;
				var s = this.maskGeoMap;
				return t.forEach(function(t) {
					o(t) && (t.styleId = "default", s.set(t.id, t))
				}),
				this.highlightColor = new k.
			default(i).toArray(),
				this.shadeColor = new k.
			default(a).toArray(),
				this._updateData(),
				this
			}
		},
		{
			key: "_updateData",
			value: function() {
				this.map && this.map.getSource(this.sourceId).setData({
					type: w.GEOMETRY_TYPES.HIGHLIGHT,
					geometries: [].concat((0, a.
				default)(this.maskGeoMap.values())),
					styles: {
					default:
						N,
						highlightColor: this.highlightColor,
						shadeColor: this.shadeColor
					}
				})
			}
		}]),
		e
	} (x.
default);
	e.
default = O
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(485),
	m = i(_),
	g = n(66),
	y = n(29),
	x = n(209),
	b = i(x),
	S = n(43),
	w = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, s.
		default)(this, e),
			t.type = g.RENDER_LAYER_TYPE.imageGround;
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return (0, S.statCn)("ImageGroundLayer"),
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var n = this; (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "_initialize", this).call(this, t),
				t.src || new y.BaseTypeError("ImageGroundLayer.src", "URL", t.src).error(),
				t.bounds instanceof b.
			default || new y.BaseTypeError("ImageGroundLayer.bounds", "LatLngBounds", t.bounds).error();
				var i = new Image;
				this._image = i,
				i.crossOrigin = "anonymous",
				i.onload = function() {
					n._mediaSource = i,
					n._bounds = t.bounds;
					var e = n.map;
					e && n.setMap(null),
					n.setMap(e),
					n.emit("image_loaded")
				},
				i.onerror = function() {
					console.error("图片资源获取失败: " + t.src)
				},
				i.src = t.src
			}
		},
		{
			key: "setSrc",
			value: function(t) {
				var e = this;
				t || new y.BaseTypeError("ImageGroundLayer.src", "URL", t).error(),
				this._image.src !== t && (this._image.onload = function() {
					e._updateMediaSource(e._image),
					e.emit("image_loaded")
				},
				this._image.src = t)
			}
		}]),
		e
	} (m.
default);
	e.
default = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(257),
	m = i(_),
	g = n(90),
	y = n(143),
	x = n(66),
	b = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			t.level = t.type !== x.RENDER_LAYER_TYPE.indoorPoi ? y.LAYER_LEVEL.BUILDING: y.LAYER_LEVEL.OVERLAY_NAA,
			t.zIndex = 0,
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "_initialize", this).call(this, t),
				this.buildingData = t.buildingData,
				this.filter = t.type,
				this.sourceId || (this.sourceId = this.id)
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && this.map.addSource(this.sourceId, {
					type: g.SOURCE_TYPE.indoor,
					data: this.buildingData
				})
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		}]),
		e
	} (m.
default);
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(257),
	m = i(_),
	g = n(90),
	y = function(t) {
		function e(t) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t))
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "_initialize", this).call(this, t),
				this.sourceData = t.sourceData,
				this.sourceId = this.id,
				this.minimumClusterSize = t.minimumClusterSize,
				this.gridSize = t.gridSize,
				this.averageCenter = t.averageCenter
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && !this.map.getSource(this.sourceId) && this.map.addSource(this.sourceId, {
					type: g.SOURCE_TYPE.geoTask,
					data: this.sourceData,
					workerOptions: {
						gridSize: this.gridSize,
						minimumClusterSize: this.minimumClusterSize,
						averageCenter: this.averageCenter
					},
					maxZoom: this.maxZoom
				})
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.removeSource(this.sourceId)
			}
		}]),
		e
	} (m.
default);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(17),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(382),
	y = i(g),
	x = n(90),
	b = n(66),
	S = n(41),
	w = i(S),
	E = n(29),
	T = n(227),
	A = i(T),
	P = n(43),
	I = n(23),
	k = n(281),
	L = w.
default.isNumber,
	M = w.
default.isArray,
	C = ["#13b06a", "#e9ab1d", "#e05649", "#6c120a"],
	R = ["#6CC356", "#FAB835", "#F94954", "#B90149"],
	B = [80, 30, 10, 5],
	N = function(t) {
		function e(t) { (0, u.
		default)(this, e),
			t.type = t.type || b.RENDER_LAYER_TYPE.trafficBase;
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return (0, P.statCn)(t.type === b.RENDER_LAYER_TYPE.trafficBase ? "TrafficBaseTileLayer": "TrafficFlowTileLayer"),
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_initialize",
			value: function(t) { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "_initialize", this).call(this, t),
				this.sourceId = this.sourceId || this.id,
				this.baseColor = R.map(function(t) {
					return new A.
				default(t).toUpArray()
				}),
				this.setColor(t.flowColor),
				this.setSpeed(t.flowSpeed),
				this.setFilter(t.filter)
			}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return L(t) || new E.BaseTypeError("TrafficTileLayer.zIndex", "number", t).error(),
				(0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "setZIndex", this).call(this, t)
			}
		},
		{
			key: "setColor",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : C;
				M(t) || (new E.BaseTypeError("flowColor", "Array", t).error(), t = C),
				4 !== t.length && (console.error("flowColor 格式错误：需传入长度为4的数组"), t = C),
				this.flowColor = t.map(function(t) {
					return new A.
				default(t).toUpArray()
				})
			}
		},
		{
			key: "setSpeed",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : B;
				M(t) || (new E.BaseTypeError("flowSpeed", "Array", t).error(), t = B),
				4 !== t.length && (console.error("flowSpeed 格式错误：需传入长度为4的数组"), t = B),
				this.flowSpeed = t
			}
		},
		{
			key: "setFilter",
			value: function(t) {
				var e = [];
				M(t) ? t.forEach(function(t) { (0, r.
				default)(k.TRAFFIC_ROAD_TYPE).includes(t) ? e.push(t) : new E.EnumError("filter", (0, r.
				default)(k.TRAFFIC_ROAD_TYPE), t).error()
				}) : (new E.BaseTypeError("TrafficTileLayer.filter", "array", t).error(), e = k.DEFAULT_BASEMAP.traffic.filter.slice()),
				this.trafficFilter = e.slice()
			}
		},
		{
			key: "_addSource",
			value: function() {
				this.map && this.map.keepHighFps(!0),
				this.map && !this.map.getSource(this.sourceId) && (this.map.addSource(this.sourceId, {
					type: x.SOURCE_TYPE.traffic,
					tileSize: this.tileSize,
					data: function(t, e, n) {
						var i = (t + e) % I.trafficSrc.length;
						return I.trafficSrc[i] + "?x=" + t + "&y=" + (Math.pow(2, n) - 1 - e) + "&z=" + n + "&type=jsonp&time=" + (new Date).getTime()
					},
					minZoom: this.minDataZoom,
					maxZoom: this.maxDataZoom,
					baseColor: this.baseColor,
					opacity: this.opacity,
					flowColor: this.flowColor,
					flowSpeed: this.flowSpeed,
					filter: this.trafficFilter
				}), this._fire("layer", {}))
			}
		},
		{
			key: "_updateFilter",
			value: function(t) {
				if (t !== this.trafficFilter && (this.setFilter(t || k.DEFAULT_BASEMAP.traffic.filter), this.map)) {
					var e = this.map.getSource(this.sourceId);
					if (e && (e.setFilter(this.trafficFilter), e.reload()), this.type === b.RENDER_LAYER_TYPE.trafficFlow) {
						var n = this.map.renderEngine.getImageCache(this.id);
						n && n.clear()
					} else {
						this.map.renderEngine.painters.trafficBase.clearStore()
					}
					this._fire("layer", {})
				}
			}
		},
		{
			key: "_removeSource",
			value: function() {
				this.map && this.map.keepHighFps(!1),
				this.map && this.map.removeSource(this.sourceId),
				this._fire("source_removed", {})
			}
		}]),
		e
	} (y.
default);
	e.
default = N
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.params;
		e.hasOwnProperty("version") || (e.version = "1.3.0"),
		e.hasOwnProperty("CRS") || (e.CRS = "EPSG:3857");
		var n = "";
		for (var i in e) n = n + "&" + i + "=" + e[i];
		return function(e, i, o) {
			var r = new g(0, 0),
			a = new g(0, 0),
			s = Math.pow(2, o - 1);
			return r.x = (e / s - 1) * x,
			r.y = (1 - (i + 1) / s) * x,
			a.x = ((e + 1) / s - 1) * x,
			a.y = (1 - i / s) * x,
			t.url + "?REQUEST=GetMap&SERVICE=WMS" + n + "&WIDTH=256&HEIGHT=256&FORMAT=image/png&TRANSPARENT=true&BBOX=" + r.x + "," + r.y + "," + a.x + "," + a.y
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(3),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(5),
	c = i(u),
	f = n(4),
	d = i(f),
	h = n(299),
	v = i(h),
	p = n(247),
	_ = i(p),
	m = n(43),
	g = n(74),
	y = _.
default[1],
	x = y / 2,
	b = function(t) {
		function e(t) { (0, l.
		default)(this, e),
			t.getTileUrl = o(t);
			var n = (0, c.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t));
			return (0, m.statCn)("WMSLayer"),
			n
		}
		return (0, d.
	default)(e, t),
		e
	} (v.
default);
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.params,
		n = "";
		e.hasOwnProperty("version") || (e.version = "1.0.0");
		for (var i in e) n = n + "&" + i + "=" + e[i];
		return function(i, o, r) {
			var a = "geoserver" === t.service ? e.tileMatrixSet + ":" + r: r;
			return t.url + "?Request=GetTile&Service=WMTS" + n + "&Format=image/png&TileMatrix=" + a + "&TileRow=" + o + "&TileCol=" + i
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(3),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(5),
	c = i(u),
	f = n(4),
	d = i(f),
	h = n(299),
	v = i(h),
	p = n(43),
	_ = function(t) {
		function e(t) { (0, l.
		default)(this, e),
			t.getTileUrl = o(t);
			var n = (0, c.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t));
			return (0, p.statCn)("WMTSLayer"),
			n
		}
		return (0, d.
	default)(e, t),
		e
	} (v.
default);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(10),
	p = n(106),
	_ = i(p),
	m = n(384),
	g = i(m),
	y = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : (0, v.uniqueId)(),
			n = arguments[1],
			i = arguments[2]; (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this)),
			a = n.cacheSize,
			l = void 0 === a ? 0 : a;
			return o.id = t,
			o.dispatcher = i,
			o.cache = new g.
		default(l, o.onCacheRemove.bind(o)),
			o.isFrozen = !1,
			o.updateUniqueId(),
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "updateUniqueId",
			value: function() {
				var t = this.map && this.map.id || (0, v.uniqueId)();
				this.uniqueId = t + "_" + this.id
			}
		},
		{
			key: "getUniqueId",
			value: function() {
				return this.uniqueId
			}
		},
		{
			key: "update",
			value: function() {
				this.isFrozen || this.onUpdate.apply(this, arguments)
			}
		},
		{
			key: "freeze",
			value: function() {
				this.isFrozen = !0
			}
		},
		{
			key: "unfreeze",
			value: function() {
				this.isFrozen = !1
			}
		},
		{
			key: "clear",
			value: function() {
				this.cache.reset(),
				this.onClear()
			}
		},
		{
			key: "reload",
			value: function() {
				this.cache.reset(),
				this.onReload()
			}
		},
		{
			key: "onAdd",
			value: function(t) {
				this.map = t,
				this.updateUniqueId()
			}
		},
		{
			key: "onRemove",
			value: function() {
				this.map = null
			}
		},
		{
			key: "getDrawItems",
			value: function() {
				return {}
			}
		},
		{
			key: "onCacheRemove",
			value: function() {}
		},
		{
			key: "onUpdate",
			value: function() {}
		},
		{
			key: "onClear",
			value: function() {}
		},
		{
			key: "onReload",
			value: function() {}
		}]),
		e
	} (_.
default);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(241),
	r = i(o),
	a = n(24),
	s = i(a),
	l = n(148),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(23),
	p = i(v),
	_ = n(10),
	m = {
		UP: 4,
		DOWN: 3
	},
	g = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
			n = e.add,
			i = e.remove,
			o = e.show,
			r = e.minZoom,
			a = void 0 === r ? p.
		default.minZoom:
			r,
			s = e.maxZoom,
			l = void 0 === s ? p.
		default.maxZoom:
			s,
			c = e.round,
			d = void 0 === c || c; (0, f.
		default)(this, t),
			this.config = {
				minZoom: a,
				maxZoom: l,
				round: d
			},
			this.add = n,
			this.remove = i,
			this.show = o,
			this.coordPool = new u.
		default,
			this.deps = new u.
		default,
			this.responsers = new u.
		default,
			this.waitingPool = new u.
		default
		}
		return (0, h.
	default)(t, [{
			key: "getTileCoord",
			value: function(t) {
				return this.coordPool.get(t)
			}
		},
		{
			key: "isLoaded",
			value: function(t) {
				var e = this.getTileCoord(t);
				return e && e.loaded
			}
		},
		{
			key: "clear",
			value: function() {
				var t = this;
				this.coordPool.forEach(function(e) {
					t.remove(e)
				}),
				this.coordPool.clear(),
				this.deps.clear(),
				this.responsers.clear()
			}
		},
		{
			key: "update",
			value: function(t, e) {
				var n = this,
				i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
				o = this.config,
				a = o.round,
				l = o.minZoom,
				u = o.maxZoom,
				c = [].concat((0, s.
			default)(this.coordPool.values()));
				t = (0, _.clamp)(t, l, u),
				a && (t = Math.round(t));
				var f = e.coveringTiles({
					zoom: t,
					round: a,
					minZoom: l,
					maxZoom: u
				}),
				d = new r.
			default(f.map(function(t) {
					return t.id
				})),
				h = f.filter(function(t) {
					return ! n.coordPool.has(t.id)
				}),
				v = c.filter(function(t) {
					return ! d.has(t.id)
				});
				this.dealWithRemoveList(v, d, t),
				this.dealWithAddList(h, i.reason)
			}
		},
		{
			key: "dealWithRemoveList",
			value: function(t, e, n) {
				var i = this;
				t.length,
				t.forEach(function(t) {
					var o = i.isLoaded(t.id),
					r = t.z - n,
					a = (0, _.isInRange)(r, -m.DOWN, m.UP);
					if (o && a) if (r > 0) {
						var s = t.ancestor(n);
						if (e.has(s.id)) return void i.markTileToRemove(t, [s])
					} else if (r < 0) {
						var l = t.descendant(n),
						u = l.filter(function(t) {
							return e.has(t.id)
						});
						if (u.length > 0) return void i.markTileToRemove(t, u)
					}
					i.removeTile(t)
				})
			}
		},
		{
			key: "dealWithAddList",
			value: function(t, e) {
				var n = this;
				t.length,
				t.forEach(function(t) {
					n.addTile(t, e)
				})
			}
		},
		{
			key: "addTile",
			value: function(t, e) {
				var n = this;
				t && (t.loaded = !1, this.coordPool.set(t.id, t), this.add(t, e).then(function() {
					t.loaded = !0,
					n.removeMarkedTile(t)
				}))
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				t && (this.isLoaded(t.id) || this.removeMarkedTile(t), this.removeFromMarked(t), this.showWaitingTiles(t.id), this.coordPool.delete(t.id), this.remove(t))
			}
		},
		{
			key: "markTileToRemove",
			value: function(t, e) {
				var n = this,
				i = e.filter(function(t) {
					return ! n.isLoaded(t.id)
				});
				this.deps.set(t.id, new r.
			default(i.map(function(t) {
					return t.id
				}))),
				i.forEach(function(e) {
					var i = e.id;
					n.responsers.has(i) || n.responsers.set(i, new r.
				default),
					n.responsers.get(i).add(t.id)
				})
			}
		},
		{
			key: "removeMarkedTile",
			value: function(t) {
				var e = this,
				n = void 0,
				i = this.responsers.get(t.id);
				i && i.size && i.forEach(function(i) {
					if (e.deps.has(i)) {
						var o = e.deps.get(i);
						o.delete(t.id),
						0 === o.size ? (e.deps.delete(i), e.removeTile(e.getTileCoord(i))) : n = i
					} else e.removeTile(e.getTileCoord(i))
				}),
				this.responsers.delete(t.id),
				n ? this.addTileToWaitingPool(t.id, n) : this.show(t)
			}
		},
		{
			key: "removeFromMarked",
			value: function(t) {
				var e = this,
				n = this.deps.get(t.id);
				n && n.size && n.forEach(function(n) {
					var i = e.responsers.get(n);
					i.delete(t.id),
					0 === i.size && e.responsers.delete(n)
				}),
				this.deps.delete(t.id)
			}
		},
		{
			key: "addTileToWaitingPool",
			value: function(t, e) {
				this.waitingPool.has(e) ? this.waitingPool.get(e).add(t) : this.waitingPool.set(e, new r.
			default([t]))
			}
		},
		{
			key: "showWaitingTiles",
			value: function(t) {
				var e = this;
				this.waitingPool.has(t) && (this.waitingPool.get(t).forEach(function(t) {
					var n = e.getTileCoord(t);
					n && e.show(n)
				}), this.waitingPool.delete(t))
			}
		}]),
		t
	} ();
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(673),
	p = i(v),
	_ = n(491),
	m = i(_),
	g = function(t) {
		function e(t, n, i) { (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n, i));
			return o.loading = {},
			o.loaded = {},
			o
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_indexData",
			value: function(t, e, n) {
				try {
					var i = {
						enableGeodesic: e.enableGeodesic || !1,
						features: {
							geometries: e.geometries,
							styles: e.styles,
							_eraseOpts: e._eraseOpts
						},
						type: e.type
					};
					n(null, i)
				} catch(t) {
					return n(t)
				}
			}
		},
		{
			key: "loadTile",
			value: function(t, e) {
				function n(t, n) {
					return delete this.loading[i][o],
					t ? e(t) : n ? (r.vectorTile = n, r.parse(n, this.actor, e), this.loaded[i] = this.loaded[i] || {},
					void(this.loaded[i][o] = r)) : e(null, null)
				}
				var i = t.source,
				o = t.uid;
				this.loading[i] || (this.loading[i] = {}),
				this.loading[i][o] = new p.
			default(t);
				var r = this.loading[i][o];
				r.abort = this.loadVectorData(t, n.bind(this))
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				var e = this.loading[t.source],
				n = t.uid;
				e && e[n] && e[n].abort && (e[n].abort(), delete e[n])
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				var e = this.loaded[t.source],
				n = t.uid;
				e && e[n] && delete e[n],
				this.removeSource(t)
			}
		}]),
		e
	} (m.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(277),
	u = i(l),
	c = n(642),
	f = i(c),
	d = n(640),
	h = i(d),
	v = n(639),
	p = i(v),
	_ = n(476),
	m = i(_),
	g = n(477),
	y = i(g),
	x = n(331),
	b = i(x),
	S = n(641),
	w = i(S),
	E = n(220),
	T = function() {
		function t(e) { (0, r.
		default)(this, t),
			this.uid = e.uid,
			this.coord = e.coord
		}
		return (0, s.
	default)(t, [{
			key: "parse",
			value: function(t, e, n) {
				var i = void 0,
				o = this.coord.x + "_" + this.coord.y + "_" + this.coord.z,
				r = {};
				switch (t.type) {
				case E.GEOMETRY_TYPES.HIGHLIGHT:
					i = (0, u.
				default)(t.features, e),
					i.highlightColor = t.features.styles.highlightColor,
					i.shadeColor = t.features.styles.shadeColor;
					break;
				case E.GEOMETRY_TYPES.MASK:
					i = (0, w.
				default)(t.features, e);
					break;
				case E.GEOMETRY_TYPES.POLYGON:
					i = (0, u.
				default)(t.features, e);
					break;
				case E.GEOMETRY_TYPES.CIRCLE:
					i = (0, m.
				default)(t.features, e);
					break;
				case E.GEOMETRY_TYPES.ELLIPSE:
					i = (0, y.
				default)(t.features, e);
					break;
				case E.GEOMETRY_TYPES.RECTANGLE:
					i = (0, b.
				default)(t.features, e);
					break;
				case E.GEOMETRY_TYPES.POLYLINE:
					i = (0, f.
				default)(t.features, t.enableGeodesic),
					i.uid = this.uid;
					break;
				case E.GEOMETRY_TYPES.POINT:
					return void(0, h.
				default)(t.features, e,
					function(t) {
						r[o] = t,
						n(null, r)
					});
				case E.GEOMETRY_TYPES.LABEL:
					return void(0, p.
				default)(t.features, e,
					function(t) {
						r[o] = t,
						n(null, r)
					})
				}
				r[o] = i,
				n(null, r)
			}
		}]),
		t
	} ();
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(493),
	p = i(v),
	_ = n(90),
	m = function(t) {
		function e(t, n, i) {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n, i))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_initialize",
			value: function() {
				this.type = _.SOURCE_TYPE.geoTask
			}
		},
		{
			key: "update",
			value: function() {}
		},
		{
			key: "getCluster",
			value: function(t, e) {
				var n = {
					type: this.type,
					pixelsPerDegree: t.pixelsPerDegree,
					resetCluster: t.resetCluster,
					mapBounds: t.mapBounds,
					zoom: t.zoom,
					maxZoom: this.maxZoom,
					source: this.getUniqueId()
				};
				this.dispatcher.send(this.type + ".getCluster", n,
				function(t, n) {
					if (t || !n) return void console.error(t);
					var i = JSON.parse(n);
					return e(i)
				},
				this.workerID)
			}
		}]),
		e
	} (p.
default);
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(113),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(491),
	m = i(_),
	g = n(643),
	y = i(g),
	x = !1,
	b = function(t) {
		function e(t, n, i) {
			return (0, u.
		default)(this, e),
			(0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, n, i))
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_indexData",
			value: function(t, e, n) {
				try {
					var i = {
						task: new y.
					default(e, {
							minimumClusterSize: t.minimumClusterSize,
							gridSize: t.gridSize,
							averageCenter: t.averageCenter
						})
					};
					n(null, i)
				} catch(t) {
					return n(t)
				}
			}
		},
		{
			key: "getCluster",
			value: function(t, e) {
				function n(n, i) {
					x && console.log(i),
					x && console.time("createClusters");
					var o = i.task,
					a = o.createClusters(t);
					x && console.timeEnd("createClusters"),
					e(null, (0, r.
				default)(a))
				}
				x && console.log("getCluster", t),
				this.loadVectorData(t, n.bind(this))
			}
		}]),
		e
	} (m.
default);
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(237),
	m = n(249),
	g = i(m),
	y = n(300),
	x = i(y),
	b = n(489),
	S = i(b),
	w = n(213),
	E = i(w),
	T = function(t) {
		function e(t, n, i) { (0, s.
		default)(this, e);
			var o = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n, i));
			return o._data = n.data || null,
			o._data && (o._data.center = o._data.bounds.getCenter()),
			o._glTexture = null,
			o._items = {},
			o
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "onAdd",
			value: function(t) {
				this.map = t,
				this._glTexture || (this._glTexture = new E.
			default(this.map.renderEngine.gl, {
					pixels: this._data.mediaSource
				})),
				this._fire("data", {
					dataType: "source",
					sourceDataType: "metadata"
				})
			}
		},
		{
			key: "setData",
			value: function(t) {
				if (this._data = t, this._data && (this._data.center = this._data.bounds.getCenter()), this._glTexture) {
					var e = this.map.renderEngine.gl;
					this._glTexture.update(this._data.mediaSource, {
						textureIndex: 0,
						minFilter: e.LINEAR,
						magFilter: e.LINEAR,
						wrapS: e.CLAMP_TO_EDGE,
						wrapT: e.CLAMP_TO_EDGE,
						premultiply: !0,
						useMipmap: !1,
						flipY: !0
					})
				}
				this.transform,
				this.camera && this.update(this.transform, this.camera),
				this._fire("data", {
					dataType: "source",
					sourceDataType: "content"
				})
			}
		},
		{
			key: "update",
			value: function(t, e) {
				if (this.transform = t, this.camera = e, this._data && (0, _.isInFrustum)(this.map, this._data.bounds)) {
					var n = new x.
				default(0, 0, 0, 0);
					this.addItem(n)
				}
			}
		},
		{
			key: "addItem",
			value: function(t) {
				var e = this._items[t.id];
				if (this._data && !e) {
					e = new g.
				default(t, this.tileSize),
					this._items[t.id] = e,
					e.setData({
						bounds: this._data.bounds,
						center: this._data.center,
						texture: this._glTexture,
						texInfo: {
							s: 0,
							t: 0,
							w: 1,
							h: 1
						}
					});
					var n = this.map.renderEngine.gl;
					this._glTexture.upload({
						textureIndex: 0,
						minFilter: n.LINEAR,
						magFilter: n.LINEAR,
						wrapS: n.CLAMP_TO_EDGE,
						wrapT: n.CLAMP_TO_EDGE,
						premultiply: !0,
						useMipmap: !1,
						flipY: !0
					})
				} else {
					var i = e.getData();
					i.bounds = this._data.bounds,
					i.center = this._data.center,
					e.setData(i)
				}
			}
		},
		{
			key: "getDrawItems",
			value: function() {
				var t = this._items;
				return this._data ? (0, _.isInFrustum)(this.map, this._data.bounds) ? t: {}: t
			}
		},
		{
			key: "onRemove",
			value: function() { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "onRemove", this).call(this),
				this._items = {},
				this._glTexture.destroy()
			}
		}]),
		e
	} (S.
default);
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(488),
	m = i(_),
	g = n(90),
	y = n(249),
	x = n(138),
	b = i(x),
	S = n(796),
	w = window.createImageBitmap && "Firefox" !== b.
default.browser,
	E = function(t) {
		function e(t, n, i) { (0, u.
		default)(this, e);
			var o = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, n, i));
			return o.type = g.SOURCE_TYPE.imageTile,
			o
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "loadTile",
			value: function(t) {
				var e = this,
				n = t.coord,
				i = t.uid,
				o = t.tileSize,
				a = this._data(n.x, n.y, n.z),
				s = {
					url: a,
					uid: i,
					tileSize: o,
					type: this.type,
					isBitmapEnabled: w
				};
				return new r.
			default(function(n) {
					var i = function(i, o) {
						if (i) return void n(i);
						a.indexOf("oversea") > -1 && (e.overseaNum = e.overseaNum || 0, e.overseaNum = e.overseaNum + 1),
						o.bitmap ? (t.setData(o.bitmap), n(null)) : o.image ? (0, S.blobToImage)(o.image).then(function(e) {
							return (0, S.canvasToImage)((0, S.imageToCanvas)(e, {
								width: t.tileSize,
								height: t.tileSize
							}))
						}).then(function(e) {
							t.setData(e),
							n(null)
						}).
						catch(function(t) {
							console.error(t),
							n("Image格式转换失败")
						}) : n("Invalid Data")
					};
					t.workerID && t.state !== y.TILE_STATE.expired ? e.dispatcher.send("reloadTile", s, i, t.workerID) : t.workerID = e.dispatcher.send("loadTile", s, i)
				})
			}
		}]),
		e
	} (m.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(79),
	u = n(110),
	c = function() {
		function t(e) { (0, r.
		default)(this, t),
			this.actor = e,
			this.cache = new u.Store("imageTileLoader", 1e3)
		}
		return (0, s.
	default)(t, [{
			key: "loadTile",
			value: function(t, e) {
				var n = t.url,
				i = t.uid,
				o = t.tileSize,
				r = t.isBitmapEnabled;
				i in this.cache || (this.cache[i] = (0, l.getImage)(n, 12e3)),
				this.cache[i].promise.then(function(t) {
					r ? self.createImageBitmap(t, {
						imageOrientation: "flipY",
						premultiplyAlpha: "premultiply",
						resizeWidth: o,
						resizeHeight: o
					}).then(function(t) {
						e(null, {
							bitmap: t,
							transferableList: [t]
						})
					}).
					catch(function(t) {
						console.warn(t),
						e(t)
					}) : e(null, {
						image: t,
						transfertableList: [t]
					})
				}).
				catch(function(t) {
					switch (t.message) {
					case "abort":
						break;
					default:
						e(t)
					}
				})
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				var e = t.uid;
				e in this.cache && (this.cache[e].xhr.abort(), this.cache[e] = null)
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				this.abortTile(t)
			}
		},
		{
			key: "reloadTile",
			value: function(t, e) {
				t.uid in this.cache && delete this.cache[t.uid],
				this.loadTile(t, e)
			}
		}]),
		t
	} ();
	e.
default = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(90),
	u = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this.id = e,
			this.dispatcher = n,
			this.type = l.SOURCE_TYPE.indoorIndex,
			this.workerId = null
		}
		return (0, s.
	default)(t, [{
			key: "loadIndexData",
			value: function(t, e, n, i) {
				t.length > 0 ? this.workerId ? this.dispatcher.send(this.type + ".calcBuildingListInView", {
					ids: t,
					viewBounds: e,
					indexType: n
				},
				i, this.workerId) : this.workerId = this.dispatcher.send(this.type + ".calcBuildingListInView", {
					ids: t,
					viewBounds: e,
					indexType: n
				},
				i) : i && i([])
			}
		},
		{
			key: "onAdd",
			value: function(t) {
				this._map = t
			}
		}]),
		t
	} ();
	e.
default = u
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		var i = t.getUint32(e, n),
		o = t.getUint32(e + 4, n);
		return n ? i + Math.pow(2, 32) * o: Math.pow(2, 32) * i + o
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(24),
	a = i(r),
	s = n(283),
	l = i(s),
	u = n(223),
	c = i(u),
	f = n(25),
	d = i(f),
	h = n(282),
	v = i(h),
	p = n(20),
	_ = i(p),
	m = n(221),
	g = i(m),
	y = n(27),
	x = i(y),
	b = n(0),
	S = i(b),
	w = n(1),
	E = i(w),
	T = n(23),
	A = i(T),
	P = n(89),
	I = i(P),
	k = n(137),
	L = i(k),
	M = n(79),
	C = function() {
		function t(e, n) { (0, S.
		default)(this, t),
			this._mapId = n,
			this.actor = e,
			this._cityIdsCache = {}
		}
		return (0, E.
	default)(t, [{
			key: "calcBuildingListInView",
			value: function(t, e) {
				var n = this,
				i = t.ids,
				o = void 0 === i ? [] : i,
				r = t.viewBounds,
				a = t.indexType;
				this._getIndoorIndexList(o, a).then(function(t) {
					var i = [],
					o = !0,
					a = !1,
					s = void 0;
					try {
						for (var l, u = (0, x.
					default)((0, g.
					default)(t)); ! (o = (l = u.next()).done); o = !0) {
							var c = l.value;
							if ("object" === (void 0 === c ? "undefined": (0, _.
						default)(c)) && c.dataLength > 0) {
								var f = n.getBuildingIdsInView(c.buildingList.infoList, r);
								i = i.concat(f)
							}
						}
					} catch(t) {
						a = !0,
						s = t
					} finally {
						try { ! o && u.
							return && u.
							return ()
						} finally {
							if (a) throw s
						}
					}
					return e(i),
					i
				})
			}
		},
		{
			key: "_getIndoorIndexList",
			value: function() {
				function t(t, n) {
					return e.apply(this, arguments)
				}
				var e = (0, v.
			default)(l.
			default.mark(function t(e, n) {
					var i, o, r, a, s, u, f = this;
					return l.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							return t.prev = 0,
							i = {},
							o = this._getSortedCityId(e),
							r = o.oldIds,
							a = o.newIds,
							s = r.map(function(t) {
								return f._getCityIndexCache(t)
							}),
							t.next = 6,
							d.
						default.all(s);
						case 6:
							return u = t.sent,
							u.forEach(function(t, e) {
								t ? i[r[e]] = t: a.push(r[e])
							}),
							t.abrupt("return", this._loadCityData(a, n).then(function(t) {
								return i = (0, c.
							default)({},
								i, t)
							}));
						case 11:
							t.prev = 11,
							t.t0 = t.
							catch(0),
							console.warn(t.t0);
						case 14:
						case "end":
							return t.stop()
						}
					},
					t, this, [[0, 11]])
				}));
				return t
			} ()
		},
		{
			key: "_loadCityData",
			value: function(t, e) {
				var n = this,
				i = {};
				if (t.length > 0) {
					var o = t.map(function(t) {
						return t + ",0"
					}).join(","),
					r = A.
				default.indoorIndexSrc + "&all=" + e + "&data=" + o;
					return new d.
				default(function(t, e) {
						M.getArrayBuffer(r,
						function(o, r) {
							if (!o && r && r.data) {
								var a = new DataView(r.data);
								i = n._extract(a),
								t(i)
							} else e(o || "未知错误：获取室内索引失败。")
						})
					})
				}
				return new d.
			default(function(t) {
					t(i)
				})
			}
		},
		{
			key: "_getSortedCityId",
			value: function(t) {
				var e = this,
				n = [],
				i = [];
				return t.forEach(function(t) {
					e._cityIdsCache[t] ? n.push(t) : (i.push(t), e._cityIdsCache[t] = !0)
				}),
				{
					oldIds: n,
					newIds: i
				}
			}
		},
		{
			key: "_getCityIndexCache",
			value: function(t) {
				var e = L.
			default.QMAPI_indoor_index + t;
				return new d.
			default(function(t) {
					I.
				default.get(e,
					function(e) {
						t(e)
					})
				})
			}
		},
		{
			key: "_extract",
			value: function(t) {
				var e = {},
				n = 0,
				i = t.getInt8(n, !0);
				e.cityNum = i,
				n += 1;
				for (var o = 0,
				r = 0; r < i; r++) {
					o = t.getInt16(n, !0),
					n += 2,
					e[o] || (e[o] = {}),
					e[o].version = t.getInt32(n, !0),
					n += 4,
					e[o].intervel = t.getInt16(n, !0),
					n += 2,
					e[o].status = t.getInt8(n, !0),
					n += 1;
					var a = t.getInt32(n, !0);
					e[o].dataLength = a,
					n += 4,
					a > 0 && (e[o].buildingList = this._extractCityInfo(t, n)),
					n += a,
					I.
				default.set(L.
				default.QMAPI_indoor_index + o, e[o])
				}
				return e
			}
		},
		{
			key: "_extractCityInfo",
			value: function(t, e) {
				var n = e,
				i = {};
				i.sign = String.fromCharCode.apply(String, (0, a.
			default)(new Uint8Array(t.buffer.slice(n, n + 4)))),
				n += 4,
				i.df = t.getInt32(n, !0),
				n += 4,
				i.dataVer = t.getInt32(n, !0),
				n += 4,
				i.confSize = t.getInt32(n, !0),
				n += 4,
				i.crc = t.getInt32(n + i.confSize, !0),
				i.cityIndex = t.getInt16(n, !0),
				n += 2,
				n += 6,
				i.buildingNum = t.getInt32(n, !0),
				n += 4,
				i.infoList = [];
				for (var r = 0; r < i.buildingNum; r++) {
					var s = {},
					l = t.getInt32(n, !0) + e;
					n += 4,
					n += 4,
					s.buildingId = String(parseInt(o(t, l, !0))),
					l += 8,
					s.version = t.getInt32(l, !0),
					l += 4,
					s.left = t.getInt32(l, !0),
					l += 4,
					s.right = t.getInt32(l, !0),
					l += 4,
					s.top = t.getInt32(l, !0),
					l += 4,
					s.bottom = t.getInt32(l, !0),
					l += 4,
					i.infoList.push(s)
				}
				return i
			}
		},
		{
			key: "getBuildingIdsInView",
			value: function(t, e) {
				var n = [],
				i = e.left,
				o = e.right,
				r = e.top,
				a = e.bottom;
				return t.forEach(function(t) {
					var e = t.buildingId,
					s = t.left,
					l = t.right,
					u = t.top,
					c = t.bottom;
					s > 0 && l > 0 && i < l && o > s && a > u && r < c && n.push(e)
				}),
				n
			}
		}]),
		t
	} ();
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(222),
	r = i(o),
	a = n(32),
	s = i(a),
	l = n(113),
	u = i(l),
	c = n(3),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(5),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(23),
	b = i(x),
	S = n(47),
	w = i(S),
	E = n(209),
	T = i(E),
	A = n(490),
	P = i(A),
	I = n(300),
	k = i(I),
	L = n(237),
	M = n(90),
	C = n(332),
	R = function(t) {
		function e(t, n, i) {
			return (0, h.
		default)(this, e),
			(0, m.
		default)(this, (e.__proto__ || (0, f.
		default)(e)).call(this, t, n, i))
		}
		return (0, y.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "setSelectedFloor",
			value: function(t) {
				if (!this._loaded) return - 1;
				var e = this.getMetaData(),
				n = e.floorInfo.floorStrArr.indexOf(t);
				return n >= 0 && (this._selectedFloorNum = n, this.update(this.map.transform)),
				n
			}
		},
		{
			key: "getSelectedFloor",
			value: function() {
				return this._loaded ? this.getMetaData().floorInfo.floorStrArr[this._selectedFloorNum] || null: null
			}
		},
		{
			key: "_initialize",
			value: function() {
				this.type = M.SOURCE_TYPE.indoor,
				this._selectedFloorNum = null
			}
		},
		{
			key: "_onLoadDataStart",
			value: function() {
				var t = C.IndoorStyleMap.getInstance().get(this._data.indoorStyleId);
				t.id = this._data.indoorStyleId,
				this.workerID = this.dispatcher.send(this.type + ".setStyle", {
					indoorStyle: (0, u.
				default)(t)
				})
			}
		},
		{
			key: "_onLoadDataEnd",
			value: function() {
				var t = this.getMetaData(),
				e = t.floorInfo.defaultNum;
				this._selectedFloorNum = e;
				var n = (0, s.
			default)(t.floorInfo.bounds, 2),
				i = n[0],
				o = n[1];
				this._buildingBounds = new T.
			default(new w.
			default(i.lat, i.lng), new w.
			default(o.lat, o.lng)),
				this._fire("loaded")
			}
		},
		{
			key: "_onLoadDataError",
			value: function(t) {
				console.error("室内建筑物 " + this._data.buildingId + " 加载出错", t)
			}
		},
		{
			key: "update",
			value: function(t) {
				if (this.transform = t, this._loaded && (0, L.isInFrustum)(this.map, this._buildingBounds) && t.zoom >= b.
			default.minShowIndoorZoom) {
					var e = this.getMetaData(),
					n = new k.
				default(0, e.buildingId, this._selectedFloorNum, 0);
					this.addItem(n)
				}
			}
		},
		{
			key: "getDrawItems",
			value: function() {
				var t = this._items,
				e = this.getMetaData();
				if (!e) return t;
				if (! (0, L.isInFrustum)(this.map, this._buildingBounds)) return {};
				var n = e.buildingId + "_" + this._selectedFloorNum + "_0",
				i = t[n];
				return i && i.hasData() && (this._currentItems = (0, r.
			default)({},
				n, i)),
				this._currentItems || {}
			}
		}]),
		e
	} (P.
default);
	e.
default = R
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(24),
	r = i(o),
	a = n(25),
	s = i(a),
	l = n(20),
	u = i(l),
	c = n(148),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(23),
	m = i(_),
	g = n(47),
	y = i(g),
	x = n(379),
	b = n(380),
	S = n(683),
	w = i(S),
	E = n(89),
	T = i(E),
	A = n(137),
	P = i(A),
	I = n(1013),
	k = n(552),
	L = n(79),
	M = function() {
		function t(e, n) { (0, h.
		default)(this, t),
			this._indoorBuildingSet = {},
			this._mapId = n,
			this.actor = e,
			this.loading = {},
			this.loaded = {},
			this.versionPromiseMap = new f.
		default
		}
		return (0, p.
	default)(t, [{
			key: "setStyle",
			value: function(t) {
				this._indoorStyle = JSON.parse(t.indoorStyle)
			}
		},
		{
			key: "loadTile",
			value: function(t, e) {
				function n(t, n) {
					return delete this.loading[i][o],
					t ? e(t) : n ? (r.vectorTile = n, r.parse(n, this.actor, this._indoorStyle, e), this.loaded[i] = this.loaded[i] || {},
					void(this.loaded[i][o] = r)) : e(null, null)
				}
				var i = t.source,
				o = t.uid;
				this.loading[i] || (this.loading[i] = {}),
				this.loading[i][o] = new w.
			default(t);
				var r = this.loading[i][o];
				r.abort = this.loadVectorData(t, n.bind(this))
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				this.removeSource(t)
			}
		},
		{
			key: "loadVectorData",
			value: function(t, e) {
				var n = t.source;
				if (!this._indoorBuildingSet[n]) return e(null, null);
				e(null, this._indoorBuildingSet[n])
			}
		},
		{
			key: "loadData",
			value: function(t, e) {
				var n = function(n, i) {
					return n ? e(n) : "object" !== (void 0 === i ? "undefined": (0, u.
				default)(i)) ? e(new Error("Input data is not a valid Indoor object.")) : (this._indoorBuildingSet[t.source] = i, void e(null, {
						buildingId: i.buildingId,
						buildingName: i.Name_CN,
						floorInfo: i.floorInfo,
						center: i.areaCenter
					}))
				}.bind(this);
				this.loadIndoorBuffer(t, n)
			}
		},
		{
			key: "loadIndoorBuffer",
			value: function(t, e) {
				var n = this,
				i = JSON.parse(t.data),
				o = P.
			default.QMAPI_indoor_buffer + i.buildingId;
				new s.
			default(function(t) {
					T.
				default.get(o,
					function(e) {
						t(e)
					})
				}).then(function(t) {
					return n._getVersion(t).then(function(e) {
						return n._getIndoorInfoData(i, t, e)
					})
				}).then(function(t) {
					x.ConfigUtil.setBV(t.version),
					e(null, t.buildingData)
				}).
				catch(function(t) {
					e(t, null)
				})
			}
		},
		{
			key: "_getVersion",
			value: function(t) {
				var e = null;
				if (t) {
					var n = m.
				default.indoorBuildingSrc + "?df=1&type=dataver&cid=" + t.cityId;
					e = this.versionPromiseMap.get(t.cityId) || new s.
				default(function(t) {
						L.getJSON(null, n,
						function(e, n) {
							var i = 1 / 0;
							e ? console.error(e) : i = n && n.metadata && n.metadata.version && n.metadata.version.data,
							t({
								version: i
							})
						})
					}),
					this.versionPromiseMap.set(t.cityId, e)
				} else e = s.
			default.resolve({
					version:
					1 / 0
				});
				return e
			}
		},
		{
			key: "_getIndoorInfoData",
			value: function(t, e, n) {
				var i = this,
				o = P.
			default.QMAPI_indoor_buffer + t.buildingId,
				r = m.
			default.indoorBuildingSrc + "?df=1&cid=" + (e && e.cityId || t.cityId) + "&bid=" + t.buildingId,
				a = n.version;
				return e && e.version >= a ? s.
			default.resolve(e):
				new s.
			default(function(e, n) {
					L.getArrayBuffer(r,
					function(r, a) {
						if (r) n(r);
						else {
							var s = null,
							l = a.data,
							u = new DataView(l);
							s = i.extract(u, t.buildingId),
							T.
						default.set(o, s),
							e(s)
						}
					})
				}).
				catch(function(t) {
					if (console.error(t), e) return e;
					throw new Error(t)
				})
			}
		},
		{
			key: "removeSource",
			value: function(t) {
				this._indoorBuildingSet[t.source] && delete this._indoorBuildingSet[t.source]
			}
		},
		{
			key: "extract",
			value: function(t, e) {
				var n = {},
				i = 0;
				n.sign = String.fromCharCode.apply(String, (0, r.
			default)(new Uint8Array(t.buffer.slice(i, 4)))),
				i += 4,
				n.version = t.getInt32(i, !0),
				i += 4,
				n.cityId = t.getInt32(i, !0),
				i += 4,
				n.buildId = t.getInt32(i, !0),
				i += 4,
				n.zipSize = t.getInt32(i, !0),
				i += 4,
				n.srcSize = t.getInt32(i, !0),
				i += 4,
				n.CRC = t.getInt32(i),
				i += 4,
				I(t.byteLength - 28 === n.zipSize, "Check zip size");
				var o = k.inflate(t.buffer.slice(i), {
					windowBits: -15
				});
				return I(o.length === n.srcSize, "Check unzipped size"),
				n.buildingData = this.extractFloorInfo(o, e),
				n.buildingData.buildingId = e,
				n.buildingData.buffer = o,
				n
			}
		},
		{
			key: "extractFloorInfo",
			value: function(t) {
				var e = new DataView(t.buffer),
				n = 0,
				i = {};
				i.Attribute_size = e.getInt32(n, !0),
				n += 4,
				i.Data_size = e.getInt32(n, !0),
				n += 4,
				i.Topology_size = e.getInt32(n, !0),
				n += 4,
				i.Name_CN_size = e.getUint8(n, !0),
				n += 1,
				i.Name_CN = String.fromCharCode.apply(String, (0, r.
			default)(new Uint16Array(e.buffer.slice(n, n + i.Name_CN_size)))),
				n += i.Name_CN_size,
				i.DefaultFloor = e.getUint8(n, !0),
				n += 1,
				i.Floor_num = e.getUint8(n, !0),
				n += 1,
				i.Floor_str_size = e.getUint8(n, !0),
				n += 1;
				for (var o = [], a = 0; a < i.Floor_str_size; a++) {
					var s = e.getUint8(n, !0);
					o.push(s),
					n += 1
				}
				i.floorStr = String.fromCharCode.apply(null, o);
				for (var l = [], u = 0; u < 4; u++) {
					var c = e.getInt32(n, !0);
					l.push(c),
					n += 4
				}
				var f = [],
				d = {},
				h = {};
				d.x = l[0],
				h.x = l[1],
				d.y = l[2],
				h.y = l[3];
				var v = void 0,
				p = void 0;
				try {
					v = (0, b.pixels2LongLat)(d.x, h.y),
					p = (0, b.pixels2LongLat)(h.x, d.y),
					f.push(v),
					f.push(p)
				} catch(t) {
					throw new Error("数据错误，bounds无效。")
				}
				return i.floorInfo = {
					floorNum: i.Floor_num,
					floorStr: i.floorStr,
					floorStrArr: i.floorStr.split(","),
					bounds: f,
					defaultNum: i.DefaultFloor
				},
				i.Floor_num = e.getInt32(n, !0),
				i.areaCenter = new y.
			default((v.lat + p.lat) / 2, (v.lng + p.lng) / 2),
				i
			}
		}]),
		t
	} ();
	e.
default = M
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(17),
	r = i(o),
	a = n(222),
	s = i(a),
	l = n(113),
	u = i(l),
	c = n(25),
	f = i(c),
	d = n(0),
	h = i(d),
	v = n(1),
	p = i(v),
	_ = n(66),
	m = n(645),
	g = i(m),
	y = function() {
		function t(e) { (0, h.
		default)(this, t),
			this.uid = e.uid,
			this.coord = e.coord
		}
		return (0, p.
	default)(t, [{
			key: "_parseEscalator",
			value: function() {}
		},
		{
			key: "parse",
			value: function(t, e, n, i) {
				var o = this.coord.x + "_" + this.coord.y + "_" + this.coord.z,
				r = {},
				a = t.buffer,
				l = t.buildingId,
				c = t.areaCenter,
				d = new g.
			default(l, {
					buffer: a,
					areaCenter: c,
					floorInfo: t.floorInfo,
					selectedFloorNum: this.coord.y,
					indoorStyle: n
				}),
				h = d.parseBuilding(),
				v = d.getBuildingPointInfo(h.buildingPoint),
				p = new f.
			default(function(t) {
					e.send("getIndoorGlyphInfo", {
						glyphList: v.glyphList,
						iconSrcList: v.iconSrcList,
						pointInfoSet: (0, u.
					default)(v.pointInfoSet),
						indoorStyle: (0, u.
					default)(n)
					},
					function(e, n) {
						if (e) console.error(e),
						t(null);
						else {
							var i = JSON.parse(n.iconMapping),
							o = JSON.parse(n.glyphMapping),
							r = JSON.parse(n.poiMapping);
							t({
								poiMapping: r,
								iconMapping: i,
								glyphMapping: o
							})
						}
					})
				}),
				m = h.buildingData.map(function(t) {
					if (t.length > 0) {
						return {
							top: d.getTopGeometryAttributes(t),
							sides: d.getSidesGeometryAttributes(t)
						}
					}
					return null
				}).filter(function(t) {
					return !! t
				}),
				y = h.buildingEscalator.map(function(t) {
					if (t.length > 0) {
						return d.getEscalatorAttributes(t)
					}
					return null
				}).filter(function(t) {
					return !! t
				}),
				x = h.floorBoundsData.map(function(t) {
					if (t.length > 0) {
						var e = d.getTopGeometryAttributes(t);
						return delete e.normal,
						delete e.color,
						{
							top: e
						}
					}
				}).filter(function(t) {
					return !! t
				});
				p.then(function(t) {
					var e = d.parseInstanceBuildingPoint(v.pointInfoSet, t.iconMapping, t.glyphMapping, t.poiMapping);
					r[_.RENDER_LAYER_TYPE.indoorRegion] = (0, s.
				default)({},
					o, {
						regions: m,
						bounds: x,
						center: c,
						floorIndex: d.selectedFloorNum
					}),
					r[_.RENDER_LAYER_TYPE.indoorPoi] = (0, s.
				default)({},
					o, {
						pois: e,
						bounds: x,
						center: c,
						floorIndex: d.selectedFloorNum
					}),
					r[_.RENDER_LAYER_TYPE.indoorEscalator] = (0, s.
				default)({},
					o, {
						escalators: y,
						bounds: x,
						center: c
					}),
					r.id = o,
					i(null, r)
				})
			}
		},
		{
			key: "transferData",
			value: function(t, e) {
				var n = [],
				i = ["top", "sides"],
				o = ["position", "index", "color", "normal"]; ["regions", "bounds"].forEach(function(r) {
					e[_.RENDER_LAYER_TYPE.indoorRegion][t][r].forEach(function(t) {
						i.forEach(function(e) {
							o.forEach(function(i) {
								var o = t[e] && t[e][i] && t[e][i].buffer;
								o && n.push(o)
							})
						})
					})
				});
				var a = e[_.RENDER_LAYER_TYPE.indoorPoi][t].pois; (0, r.
			default)(a).forEach(function(t) {
					a[t].forEach(function(t) {
						t.instance.count > 0 && ["instanceTransTypeArray", "instanceCoordsTypeArray", "instanceTextBoundsTypeArray", "instanceInfosTypeArray", "instanceColorsTypeArray", "instanceStrokeColorsTypeArray"].forEach(function(e) {
							n.push(t.instance[e].buffer)
						})
					})
				});
				var s = e[_.RENDER_LAYER_TYPE.indoorEscalator][t].escalators;
				return s.length > 0 && ["instanceCoordsTypeArray", "instanceInfosTypeArray"].forEach(function(t) {
					n.push(s[0][t].buffer)
				}),
				e.transferableList = n,
				e
			}
		}]),
		t
	} ();
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(488),
	m = i(_),
	g = n(90),
	y = n(249),
	x = function(t) {
		function e(t, n, i) { (0, u.
		default)(this, e);
			var o = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, n, i));
			return o.type = g.SOURCE_TYPE.traffic,
			o.baseColor = n.baseColor,
			o.flowColor = n.flowColor,
			o.flowSpeed = n.flowSpeed,
			o.setFilter(n.filter),
			o
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "setFilter",
			value: function(t) {
				this.filter = t
			}
		},
		{
			key: "loadTile",
			value: function(t) {
				var e = this,
				n = t.coord,
				i = t.uid,
				o = this.baseColor,
				a = this.flowColor,
				s = this.flowSpeed,
				l = this.filter,
				u = this._data(n.x, n.y, n.z),
				c = {
					url: u,
					uid: i + "_" + u,
					baseColor: o,
					flowColor: a,
					flowSpeed: s,
					filter: l,
					type: this.type
				};
				return new r.
			default(function(n) {
					var i = function(e, i) {
						if (e) return void n(e);
						if (i && i.flowData) {
							var o = i.flowData,
							r = o.texSize,
							a = o.pixelSpace,
							s = o.pointArray,
							l = o.count,
							u = o.instance;
							self.createImageBitmap(new ImageData(s, r, r), {
								premultiplyAlpha: "none"
							}).then(function(e) {
								t.setData({
									base: i.baseData,
									flow: {
										pathImage: e,
										count: l,
										instance: u,
										texSize: r,
										pixelSpace: a
									},
									uid: c.uid
								}),
								n(null)
							})
						} else n("Invalid Data")
					};
					t.workerID && t.state !== y.TILE_STATE.expired ? e.dispatcher.send("reloadTile", c, i, t.workerID) : t.workerID = e.dispatcher.send("loadTile", c, i)
				})
			}
		}]),
		e
	} (m.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(17),
	r = i(o),
	a = n(25),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(110),
	h = n(79),
	v = n(29),
	p = n(688),
	_ = function() {
		function t(e) { (0, u.
		default)(this, t),
			this.actor = e,
			this.cache = new d.Store("trafficTileLoader", 1e3)
		}
		return (0, f.
	default)(t, [{
			key: "loadTile",
			value: function(t, e) {
				var n = t.url,
				i = t.uid,
				o = t.baseColor,
				r = t.flowColor,
				a = t.flowSpeed,
				l = t.filter;
				if (! (i in this.cache)) {
					var u = void 0,
					c = new s.
				default(function(t, e) {
						u = (0, h.getJSON)(i, n,
						function(n, i) {
							n ? e(n) : t(i)
						})
					});
					this.cache[i] = {
						xhr: u,
						promise: c
					}
				}
				this.cache[i].promise.then(function(t) {
					if (t.hasOwnProperty("ret")) if (0 === t.ret) {
						var n = (0, p.parse)(t, {
							enc: !1,
							baseColor: o,
							flowColor: r,
							flowSpeed: a,
							filter: l
						});
						n.uid = i,
						e(null, n)
					} else e(new v.AJAXError("no data", 404));
					else {
						var s = (0, p.parse)(t, {
							baseColor: o,
							flowColor: r,
							flowSpeed: a,
							filter: l
						});
						s.uid = i,
						e(null, s)
					}
				}).
				catch(function(t) {
					switch (t.message) {
					case "abort":
						break;
					default:
						e(t)
					}
				})
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				var e = t.uid,
				n = (0, r.
			default)(this.cache).find(function(t) {
					return t.includes(e)
				});
				n && (this.cache[n].xhr.abort(), this.cache[n] = null)
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				this.abortTile(t)
			}
		},
		{
			key: "reloadTile",
			value: function(t, e) {
				t.uid in this.cache && delete this.cache[t.uid],
				this.loadTile(t, e)
			}
		}]),
		t
	} ();
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = 0;
		t.forEach(function(t) {
			var n = Math.round(t.length * o);
			e += n,
			t.particles = n
		});
		var n = new Uint16Array(2 * e),
		i = new Uint8ClampedArray(4 * e),
		r = new Uint8ClampedArray(e),
		a = 0,
		s = 0,
		l = 0;
		return t.forEach(function(t) {
			for (var e = t.offset,
			o = t.length,
			u = t.particles,
			c = t.color,
			f = 0; f < u; f++) {
				var d = Math.floor(Math.random() * o);
				n[a] = e,
				a += 1,
				n[a] = o,
				a += 1,
				i[s] = c[0],
				s += 1,
				i[s] = c[1],
				s += 1,
				i[s] = c[2],
				s += 1,
				i[s] = c[3],
				s += 1,
				r[l] = d,
				l += 1
			}
		}),
		{
			count: e,
			instance: {
				instanceLinkList: n,
				instanceColorList: i,
				instanceParticleList: r
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = i;
	var o = .1
},
function(t, e, n) {
	"use strict";
	function i(t) {
		if (!t || !t.length) return t;
		for (var e = [], n = t[0].slice(), i = void 0, r = 1; r < t.length; r++) {
			i = t[r];
			switch (o(n, i)) {
			case 1:
				n[1] = n[1].concat(i[1].slice(1));
				break;
			case 2:
				n[1] = i[1].concat(n[1].slice(1));
				break;
			case 0:
			default:
				e.push(n),
				n = i.slice()
			}
		}
		return e
	}
	function o(t, e) {
		if (t[0] !== e[0]) return 0;
		var n = t[1].length,
		i = e[1].length;
		if (n && i) {
			var o = t[1][0],
			a = e[1][0],
			s = t[1][n - 1],
			l = e[1][i - 1];
			return r(a, s) ? 1 : r(o, l) ? 2 : 0
		}
		return 0
	}
	function r(t, e) {
		var n = e.x - t.x,
		i = e.y - t.y;
		return Math.sqrt(n * n + i * i) <= 2
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.merge = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = s(t, e),
		i = r(n.flowData, e),
		o = a(n.baseData, e);
		return {
			baseData: {
				indeices: {
					arrayBuffer: o.indeices.dataView,
					length: o.indeices.length
				},
				lineCount: o.lineCount,
				size: o.size,
				vertices: {
					arrayBuffer: o.vertices.dataView,
					attributes: o.vertices.attributes,
					bytesPerElement: o.vertices.bytesPerElement
				},
				vertiesCount: o.vertiesCount
			},
			flowData: i
		}
	}
	function r(t, e) {
		var n = l(t, e),
		i = n.linkInfoList,
		o = n.pointArray,
		r = (0, b.
	default)(i),
		a = r.instance,
		s = r.count;
		return {
			texSize: w,
			pixelSpace: 1e3 * S,
			count: s,
			instance: a,
			pointArray: o
		}
	}
	function a(t, e) {
		return (0, g.
	default)(t, e.baseColor)
	}
	function s(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = e.enc,
		i = void 0 === n || n,
		o = e.filter;
		if (!t.data) return {};
		var r = i ? (0, y.parseJson)((0, v.decode)(t.data)) : t;
		if (0 !== r.ret) return console.error("瓦块没有数据", t),
		{};
		var a = r.features,
		s = (0, p.restore)(a, o);
		return {
			baseData: s,
			flowData: (0, _.merge)(s)
		}
	}
	function l(t, e) {
		var n = e.flowColor,
		i = e.flowSpeed,
		o = 0,
		r = [],
		a = new Uint8ClampedArray(w * w * 4);
		return {
			linkInfoList: t.map(function(t) {
				var e = o,
				s = i[t[0]] * S,
				l = t[1];
				l.forEach(function(t, n) {
					if (r.push(t), c(a, 4 * e, t), e += 1, n < l.length - 1) for (var i = l[n + 1], o = Math.sqrt(Math.pow(i.x - t.x, 2) + Math.pow(i.y - t.y, 2)), f = Math.ceil(o / s), d = 1; d < f; d++) r.push(u(t, i, d / f)),
					c(a, 4 * e, u(t, i, d / f)),
					e += 1
				});
				var f = {
					offset: o,
					length: e - o,
					color: n[t[0]]
				};
				return o = e,
				f
			}),
			pointArray: a
		}
	}
	function u(t, e, n) {
		return {
			x: Math.round(t.x * (1 - n) + e.x * n),
			y: Math.round(t.y * (1 - n) + e.y * n)
		}
	}
	function c(t, e, n) {
		var i = f(n),
		o = (0, h.
	default)(i, 4),
		r = o[0],
		a = o[1],
		s = o[2],
		l = o[3];
		t[e] = r,
		t[e + 1] = a,
		t[e + 2] = s,
		t[e + 3] = l
	}
	function f(t) {
		var e = t.x + 128,
		n = t.y + 128;
		return [e < 256 ? e: 255, e < 256 ? 0 : e - 255, n < 256 ? n: 255, n < 256 ? 0 : n - 255]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var d = n(32),
	h = i(d);
	e.parse = o,
	e.preParse = s,
	e.interpolate = l;
	var v = n(494),
	p = n(690),
	_ = n(687),
	m = n(689),
	g = i(m),
	y = n(10),
	x = n(686),
	b = i(x),
	S = .1,
	w = 64
},
function(t, e, n) {
	"use strict";
	function i(t, e, n) {
		var i = r(t, n);
		if (i) {
			var a = i.color,
			s = i.width,
			l = i.dashLength,
			u = i.dashSpace,
			c = i.startDistance,
			f = o(t[1]); ! f || f.length < 2 || e.addLine(i, f, a, s, l, u, c)
		}
	}
	function o(t) {
		var e = [];
		return t.forEach(function(t) {
			e.push(t.x, t.y)
		}),
		e
	}
	function r(t, e) {
		var n = l;
		return {
			hasDash: 0,
			dashLength: 0,
			dashSpace: 0,
			color: e[t[0]],
			width: n,
			preWidth: n,
			nextWidth: n,
			noTerminal: 0,
			startDistance: 0,
			isSide: 0,
			transform: {
				transX: 0,
				transY: 0,
				scale: 1
			}
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = function(t, e) {
		for (var n = new s.
	default,
		o = 0,
		r = t.length; o < r; o++) i(t[o], n, e);
		return {
			vertices: n.vertiesDataBuffer,
			indeices: n.indicesDataBuffer,
			size: n.indicesDataBuffer.length,
			vertiesCount: n.vertiesDataBuffer.length,
			lineCount: n.lineCount
		}
	};
	var a = n(483),
	s = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (a),
	l = 3
},
function(t, e, n) {
	"use strict";
	function i(t) {
		for (var e = [], n = t.slice(), i = null, o = 0, r = n.length; o < r; o += 2) {
			if (i) {
				i = {
					x: i.x + n[o],
					y: i.y + n[o + 1]
				}
			} else i = {
				x: n[o],
				y: n[o + 1]
			};
			e.push(i)
		}
		return e
	}
	function o() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
		e = arguments[1];
		t.forEach(function(t) {
			t[0] instanceof Array ? t.forEach(function(t) {
				t[1] = i(t[1])
			}) : t[1] = i(t[1])
		});
		var n = e.map(function(t) {
			return r.TRAFFIC_ROAD_TYPE[t]
		});
		return t = t.filter(function(t) {
			return n.includes(t[2])
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.restore = o;
	var r = n(281)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = t.z - e.z,
		i = Math.pow(2, n);
		return {
			transX: (t.x - e.x * i) * t.tileSize,
			transY: (t.y - e.y * i) * t.tileSize,
			scale: 1 / i
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(16),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(300),
	d = i(f),
	h = n(495),
	v = i(h),
	p = n(23),
	_ = i(p),
	m = function() {
		function t(e) { (0, l.
		default)(this, t);
			var n = d.
		default.converter(e.coord);
			this._batchCoord = n,
			this._workerTile = new v.
		default((0, a.
		default)({},
			e, {
				coord: n
			})),
			this._workerTile.dataZoom = n.z + 1,
			this._batchTiles = n.children().map(function(t) {
				return new v.
			default((0, a.
			default)({},
				e, {
					coord: t
				}))
			})
		}
		return (0, c.
	default)(t, [{
			key: "parse",
			value: function(t, e, n, i, o, r, a) {
				function s(t, e) {
					return function(t, n) {
						if (t && (console.error(t), n = null), l[e] = n, (u += 1) === c.length) {
							var i = l.reduce(function(t, e) {
								return e && (Array.prototype.push.apply(t, e.transferableList), delete e.transferableList),
								t
							},
							[]);
							l.transferableList = i,
							r(null, l)
						}
					}
				}
				if (_.
			default.batchRender) return void this.batchParse.apply(this, arguments);
				var l = [],
				u = 0,
				c = this._batchTiles;
				this._batchTiles.forEach(function(r, l) {
					var u = s(r.coord, l);
					if (!e || !e.datas || !e.datas[l]) return void u(new Error("瓦片：" + r.coord.id + " 加载失败!"), null);
					r.parse(t, e.datas[l], n, i, o, u, a)
				})
			}
		},
		{
			key: "batchParse",
			value: function(t, e, n, i, r, a, s) {
				function l(t, e) {
					if (t) return console.error(t),
					void a(t);
					a(null, e)
				}
				var u = this._batchCoord,
				c = e.datas;
				u.children().forEach(function(t, e) {
					c[e].tileTransform = o(t, u)
				}),
				this._workerTile.parse(t, c, n, i, r, l, s)
			}
		}]),
		t
	} ();
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return !! t && t[0] instanceof Number && !t[2]
	}
	e.merge = function(t) {
		if (!t || !t.length) return t;
		for (var e = [], n = null, o = !1, r = void 0, a = void 0, s = 0; s < t.length; s++) r = t[s],
		n && i(r) && r[0] === n[0] ? o ? (a = n[1], a.push(r[1])) : (n[1] = [n[1]], a = n[1], a.push(r[1]), o = !0) : (e.push(r), o = !1, n = i(r) ? r: null);
		return e
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		for (var e = [], n = t.slice(), i = 0, o = n.length; i < o; i += 2) if (0 === e.length) e.push(n[0], n[1]);
		else {
			var r = e[i - 2] + n[i],
			a = e[i - 1] + n[i + 1];
			e.push(r, a)
		}
		return e
	}
	e.restores = function(t) {
		for (var e = t || [], n = 0; n < e.length; n++) {
			var o = e[n];
			if (o[0] instanceof Array) for (var r = 0; r < o.length; r++) {
				var a = o[r];
				a[1] = i(a[1])
			} else o[1] = i(o[1])
		}
		return t
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return t >= C.
	default.maxDataZoom
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(17),
	a = i(r),
	s = n(27),
	l = i(s),
	u = n(3),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(5),
	_ = i(p),
	m = n(35),
	g = i(m),
	y = n(4),
	x = i(y),
	b = n(43),
	S = n(249),
	w = i(S),
	E = n(384),
	T = i(E),
	A = n(10),
	P = i(A),
	I = n(492),
	k = i(I),
	L = n(90),
	M = n(23),
	C = i(M),
	R = C.
default.batchRender,
	B = function(t) {
		function e(t, n, i) { (0, d.
		default)(this, e);
			var o = (0, _.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t, n, i));
			return o._data = n.data,
			o.type = L.SOURCE_TYPE.vector,
			o.iconInfo = n.iconInfo || null,
			o.enc = n.enc,
			o.styleId = n.styleId,
			o._shadowTiles = {},
			o._parentTiles = {},
			o._parentCache = new T.
		default(0, o.unloadTile.bind(o)),
			o
		}
		return (0, x.
	default)(e, t),
		(0, v.
	default)(e, [{
			key: "setStyleId",
			value: function(t) {
				this.styleId = t
			}
		},
		{
			key: "setStyleAndIconInfo",
			value: function(t, e) {
				this.styleId = t,
				this.iconInfo = e
			}
		},
		{
			key: "clear",
			value: function() {
				this._shadowTiles = {},
				(0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "clear", this).call(this),
				this._parentTiles = {},
				this._parentCache.reset()
			}
		},
		{
			key: "clearTiles",
			value: function() {
				var t = this;
				P.
			default.forIn(this._parentTiles,
				function(e) {
					t.removeBatchTile(e)
				}),
				this._cache.reset(),
				this._parentCache.reset()
			}
		},
		{
			key: "reload",
			value: function() {
				var t = this;
				this._cache.reset(),
				this._parentCache.reset(),
				P.
			default.forIn(this._items,
				function(e, n) {
					t.reloadTile(n, !0)
				})
			}
		},
		{
			key: "reloadTile",
			value: function(t, e) { (e || t.state !== S.TILE_STATE.reloading) && (t.state = S.TILE_STATE.reloading, this.loadBatchTile(t, {},
				this._tileLoaded.bind(this, t)))
			}
		},
		{
			key: "updateCacheSize",
			value: function(t) { (0, g.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "updateCacheSize", this).call(this, t),
				this._parentCache.setMaxSize(this._cache.max / 4)
			}
		},
		{
			key: "update",
			value: function(t, e, n) {
				var i = this;
				this.transform = t,
				this.camera = e;
				var o = {},
				r = {},
				a = void 0,
				s = void 0,
				u = !0;
				this.updateCacheSize(t);
				var c = this.transform.zoom,
				f = Math.max(c - 4, this.minZoom),
				d = Math.max(c + 3, this.minZoom),
				h = t.coveringTiles({
					round: !0,
					tileSize: this.tileSize,
					minZoom: this.minZoom - 1,
					maxZoom: this.maxZoom - 1,
					zoom: c - 1
				});
				if (h.forEach(function(t) {
					var e = i._parentTiles[t.id];
					e && e.hasData() || (u = !1, r[t.id] = !0)
				}), 0 !== P.
			default.keysDifference(r, this._parentTiles).length || u || c > C.
			default.maxDataZoom) {
					for (var v = 0; v < h.length; v++) {
						var p = h[v];
						if (p.z >= C.
					default.maxDataZoom) {
							var _ = p.ancestor(C.
						default.maxDataZoom - 1) || p;
							this.addTile(_, n, null),
							o[_.id] = !0
						} else {
							if (this.icon && p.setIconUrls(this.icon), !(a = this.addTile(p, n, null))) continue;
							if (o[p.id] = !0, a.hasData()) continue;
							this._findLoadedChildren(p, d, o) || (s = this.findLoadedParent(p, f, o)) && this.addTile(s.coord, n, null)
						}
					}
					var m = P.
				default.keysDifference(this._parentTiles, o),
					g = !0,
					y = !1,
					x = void 0;
					try {
						for (var b, S = (0, l.
					default)(m); ! (g = (b = S.next()).done); g = !0) {
							var w = b.value;
							this.removeBatchTile(w)
						}
					} catch(t) {
						y = !0,
						x = t
					} finally {
						try { ! g && S.
							return && S.
							return ()
						} finally {
							if (y) throw x
						}
					}
				} else h.forEach(function(t) {
					if (i._parentTiles[t.id].hasData()) {
						var e = t.parent(d);
						i.removeBatchTile(e && e.id),
						t.children(d).forEach(function(t) {
							i.removeBatchTile(t && t.id)
						})
					}
				})
			}
		},
		{
			key: "_findLoadedChildren",
			value: function(t, e, n) {
				var i = this,
				o = !1;
				return P.
			default.forIn(this._parentTiles,
				function(r, a) {
					if (! (n[r] || !a.hasData() || a.coord.z <= t.z || a.coord.z > e)) {
						var s = Math.pow(2, Math.min(a.coord.z, i.maxZoom) - Math.min(t.z, i.maxZoom));
						if (Math.floor(a.coord.x / s) === t.x && Math.floor(a.coord.y / s) === t.y) for (n[r] = !0, o = !0; a && a.coord.z - 1 > t.z;) {
							var l = a.coord.parent(i.maxZoom).id;
							a = i._parentTiles[l],
							a && a.hasData() && (delete n[r], n[l] = !0)
						}
					}
				}),
				o
			}
		},
		{
			key: "findLoadedParent",
			value: function(t, e, n) {
				for (var i = t.z - 1; i >= e; i--) {
					t = t.parent(this.maxZoom);
					var o = this._parentTiles[t.id];
					if (o && o.hasData()) return n[t.id] = !0,
					o
				}
			}
		},
		{
			key: "addTile",
			value: function(t, e, n) {
				var i = this;
				if (P.
			default.isDefined(this.styleId)) {
					var r = this._parentTiles[t.id];
					return r ? ((R || o(r.coord.z)) && r.hasData() && (this._items[r.coord.id] = r), r) : (r = this._parentCache.get(t.id)) ? (this._parentTiles[t.id] = r, o(t.z) || R ? this._items[t.id] = r: r.coord.children().forEach(function(t) {
						var e = i._cache.get(t.id);
						e && (i._items[t.id] = e)
					}), r) : (r = new w.
				default(t, this.tileSize), this._parentTiles[t.id] = r, (o(t.z) || R) && (this._items[t.id] = r), this.loadBatchTile(r, e, n ? n.bind(this) : this._tileLoaded.bind(this, r)), r)
				}
				return null
			}
		},
		{
			key: "removeBatchTile",
			value: function(t) {
				var e = this,
				n = this._parentTiles[t];
				if (n) if (o(n.coord.z) || R ? this.removeTile(n.coord.id, !0) : n.coord.children().forEach(function(t) {
					return e.removeTile(t.id)
				}), delete this._parentTiles[t], n.hasData()) {
					var i = n.coord.id;
					this._parentCache.add(i, n)
				} else n.aborted = !0,
				this.abortTile(n),
				this.unloadTile(n)
			}
		},
		{
			key: "loadBatchTile",
			value: function(t, e, n) {
				function i(e, i, r) {
					var s = this;
					if (e) return (0, b.qos)("tile", {
						id: "v",
						status: 1
					}),
					n(e); (0, b.qos)("tile", {
						id: "v",
						status: 0,
						time: r
					}),
					t.setData(i),
					o(a.z) || R || a.children().forEach(function(e, n) {
						t = new w.
					default(e, s.tileSize),
						s._items[e.id] = t,
						t.setData(i[n]),
						s._parentTiles[t.coord.parent().id] || s.removeTile(t.coord.id)
					}),
					n(null)
				}
				var r = t,
				a = r.coord,
				s = o(a.z) ? a.url(this._data.vectorSrc) : a.urlForBatchChildren(this._data.batchVectorSrc),
				l = {
					url: s,
					uid: t.uid,
					type: this.type,
					source: this.getUniqueId(),
					coord: a,
					enc: this.enc,
					styleId: this.styleId,
					reason: e,
					maxDataZoom: this.maxDataZoom,
					sourceId: this.id,
					dataFinishCallback: {
						finishPromise: this.map.layerResource.loadStyle.bind(this.map.layerResource),
						type: "vector.setStyleInfo"
					}
				};
				t.workerID && t.state !== S.TILE_STATE.expired ? t.state === S.TILE_STATE.loading || this.dispatcher.send("reloadTile", l, i.bind(this), t.workerID) : t.workerID = this.dispatcher.send(o(a.z) ? "loadTile": "vector.loadBatchTile", l, i.bind(this))
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				this.dispatcher.send("abortTile", {
					uid: t.uid,
					type: this.type,
					source: this.getUniqueId(),
					tileId: t.coord.id
				},
				null, t.workerID)
			}
		},
		{
			key: "unloadTile",
			value: function(t) {
				t.clear(),
				this.dispatcher.send("removeTile", {
					uid: t.uid,
					type: this.type,
					source: this.getUniqueId(),
					tileId: t.coord.id
				},
				null, t.workerID)
			}
		},
		{
			key: "_tileLoaded",
			value: function(t, e) {
				var n = this;
				e ? (t.state = S.TILE_STATE.errored, 404 !== e.status && this._fire("loaderror", {
					tile: t,
					error: e
				})) : this._fire("data", {
					dataType: "source",
					tile: t
				}),
				(0, a.
			default)(this._items).every(function(e) {
					return n._items && n._items[e] && (n._items[e].getData() && n._items[e].state === S.TILE_STATE.loaded || t.state === S.TILE_STATE.errored)
				}) && this._fire("tilesloaded", {
					dataType: "source",
					tiles: this._items
				})
			}
		}]),
		e
	} (k.
default);
	e.
default = B
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(283),
	r = i(o),
	a = n(25),
	s = i(a),
	l = n(282),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(699),
	p = n(787),
	_ = i(p),
	m = n(691),
	g = i(m),
	y = n(10),
	x = i(y),
	b = n(79),
	S = n(495),
	w = function() {
		function t(e) { (0, f.
		default)(this, t),
			this.actor = e,
			this.loading = {},
			this.loaded = {},
			self._preloadPromiseCache || (self._preloadPromiseCache = {}),
			self._iconIndexCache || (self._iconIndexCache = {}),
			self._styleCache || (self._styleCache = {}),
			this.currentStyleId = null
		}
		return (0, h.
	default)(t, [{
			key: "_toTextureCoords",
			value: function(t, e, n) {
				return x.
			default.forIn(t,
				function(i, o) {
					t[i] = {
						left: o[0] / e,
						right: (o[0] + o[2]) / e,
						top: (n - o[1]) / n,
						bottom: (n - o[1] - o[3]) / n,
						width: o[2],
						height: o[3]
					}
				}),
				t
			}
		},
		{
			key: "getStyleInfo",
			value: function(t, e) {
				this.styleMap && this.styleMap[t] && "config" !== t ? e(this.styleMap[t]) : (this.iconInfoCallbackObj = this.iconInfoCallbackObj || {},
				this.iconInfoCallbackObj[t] = this.iconInfoCallbackObj[t] || [], this.iconInfoCallbackObj[t].push(e))
			}
		},
		{
			key: "setStyleInfo",
			value: function(t) {
				var e = t.iconInfo,
				n = t.styleId;
				this.styleMap = this.styleMap || {},
				this.styleMap[n] = e,
				this.iconInfoCallbackObj && this.iconInfoCallbackObj[n] && this.iconInfoCallbackObj[n].length > 0 && (this.iconInfoCallbackObj[n].forEach(function(t) {
					t(e)
				}), this.iconInfoCallbackObj[n] = null)
			}
		},
		{
			key: "_preload",
			value: function() {
				function t(t, n) {
					return e.apply(this, arguments)
				}
				var e = (0, u.
			default)(r.
			default.mark(function t(e, n) {
					var i = this;
					return r.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							return t.abrupt("return", s.
						default.all([self._iconIndexCache[e] || (0, _.
						default)(e), self._styleCache[e] || (0, v.getStyleForWorker)(e)]).then(function(t) {
								return self._iconIndexCache[e] = t[0],
								self._styleCache[e] = t[1],
								{
									iconCoords: i._toTextureCoords(t[0], n.w, n.h),
									style: t[1],
									iconInfoData: n
								}
							}));
						case 1:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "deleteCache",
			value: function(t) {
				null !== t && (delete self._iconIndexCache[t], delete self._styleCache[t])
			}
		},
		{
			key: "reloadTile",
			value: function(t, e) {
				var n = t.uid,
				i = t.source,
				o = this.loading[i],
				r = this.loaded[i];
				o[n] ? this.abortTile(t) : r[n] && this.removeTile(t),
				this.loadBatchTile(t, e)
			}
		},
		{
			key: "loadBatchTile",
			value: function(t, e) {
				function n(n, i, s) {
					return n ? (console.error(n), e(n)) : i ? this.loading[o][a] ? (delete this.loading[o][a], d.vectorTile = i, d.parse(t, i, c, u, this.actor,
					function(t, n) {
						e(t, n, s)
					},
					r), this.loaded[o] = this.loaded[o] || {},
					void(this.loaded[o][a] = d)) : void e(null, null) : e(null, null)
				}
				var i = this,
				o = t.source,
				r = t.enc,
				a = t.uid,
				l = t.styleId,
				u = void 0,
				c = void 0,
				f = new s.
			default(function(t) {
					i.currentStyleId !== l && (null !== i.currentStyleId && i.deleteCache(i.currentStyleId), i.currentStyleId = l);
					var e = "" + l;
					"config" === l && (delete self._preloadPromiseCache[e], i.deleteCache(l)),
					i.getStyleInfo(l,
					function(n) {
						var o = self._preloadPromiseCache[e];
						o || (c = n, o = i._preload(l, c), self._preloadPromiseCache[e] = o),
						o.then(function(e) {
							var i = e.iconCoords,
							o = e.style;
							c = n,
							c.info = i,
							u = o,
							t()
						})
					})
				});
				this.loading[o] || (this.loading[o] = {}),
				this.loading[o][a] = new g.
			default(t);
				var d = this.loading[o][a],
				h = new s.
			default(function(e) {
					d.abort = i.loadVectorData(t, e)
				});
				s.
			default.all([f, h]).then(function(t) {
					n.call(i, t[1].err, t[1].data, t[1].time)
				})
			}
		},
		{
			key: "loadTile",
			value: function(t, e) {
				function n(n, i, s) {
					return n ? e(n) : i ? this.loading[o][a] ? (delete this.loading[o][a], d.vectorTile = i, d.parse(t, i, c, u, this.actor,
					function(t, n) {
						e(t, n, s)
					},
					r), this.loaded[o] = this.loaded[o] || {},
					void(this.loaded[o][a] = d)) : void e(null, null) : e(null, null)
				}
				var i = this,
				o = t.source,
				r = t.enc,
				a = t.uid,
				l = t.styleId,
				u = void 0,
				c = void 0,
				f = new s.
			default(function(t) {
					i.currentStyleId !== l && (null !== i.currentStyleId && i.deleteCache(i.currentStyleId), i.currentStyleId = l);
					var e = "" + l;
					"config" === l && (delete self._preloadPromiseCache[e], i.deleteCache(l)),
					i.getStyleInfo(l,
					function(n) {
						var o = self._preloadPromiseCache[e];
						o || (c = n, o = i._preload(l, c), self._preloadPromiseCache[e] = o),
						o.then(function(e) {
							var i = e.iconCoords,
							o = e.style;
							c = n,
							c.info = i,
							u = o,
							t()
						})
					})
				});
				this.loading[o] || (this.loading[o] = {}),
				this.loading[o][a] = new S(t);
				var d = this.loading[o][a],
				h = new s.
			default(function(e) {
					d.abort = i.loadVectorData(t, e)
				});
				s.
			default.all([f, h]).then(function(t) {
					n.call(i, t[1].err, t[1].data, t[1].time)
				})
			}
		},
		{
			key: "abortTile",
			value: function(t) {
				var e = this.loading[t.source],
				n = t.uid;
				e && e[n] && e[n].abort && (e[n].abort(), delete e[n])
			}
		},
		{
			key: "removeTile",
			value: function(t) {
				var e = this.loaded[t.source],
				n = t.uid;
				e && e[n] && delete e[n]
			}
		},
		{
			key: "loadVectorData",
			value: function(t, e) {
				var n = b.getJSON(t.id, t.url,
				function(t, n, i) {
					e && e({
						err: t,
						data: n,
						time: i
					})
				});
				return function() {
					e = null,
					n.abort()
				}
			}
		}]),
		t
	} ();
	t.exports = w
},
function(t, e, n) {
	"use strict";
	function i() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "DEFAULT",
		e = arguments[1];
		return s.STYLE_ID.hasOwnProperty(t) ? r.
	default.resolve(s.STYLE_ID[t]):
		(0, a.checkKey)(e).then(function(e) {
			var n = s.STYLE_ID.DEFAULT;
			if (e && e.custom_map_style && e.custom_map_style.style_list) {
				var i = parseInt(String(t).replace("style", ""));
				e.custom_map_style.style_list.some(function(t) {
					return i > -1 && i === t.order && (n = t.id, (0, l.cs)({
						styleId: n,
						subkey: e.subkey
					}), !0)
				}) || console.error("个性化样式 " + t + " 并未找到，已自动启用默认样式！")
			}
			return n
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	r = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o),
	a = n(294),
	s = n(301),
	l = n(43);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		return new f.
	default(function(n) {
			var i = t || 0,
			o = p.
		default.QMAPI_poi_icon + i,
			r = -1,
			l = "",
			c = "";
			m.
		default.support() ? m.
		default.get(o,
			function(t) {
				var f = JSON.parse(t);
				r = t ? f.version: r,
				l = e.replace("{id}", i).replace("{version}", r),
				h.
			default.getJSON(null, l,
				function(t, e, l) {
					if (!t && e && e.data) {
						if ("{}" !== (0, u.
					default)(e.data)) return s({
							styleId:
							i,
							version: r,
							time: l
						}),
						c = e.data,
						void m.
					default.set(o, (0, u.
					default)(e),
						function() {
							n("data:image/png;base64," + c)
						});
						c = f.data
					} else a({
						styleId: i,
						version: r,
						err: t
					}),
					console.error(t, e),
					c = f.data;
					n("data:image/png;base64," + c)
				})
			}) : (l = e.replace("{id}", i).replace("{version}", r), h.
		default.getJSON(null, l,
			function(t, e, o) {
				return ! t && e && e.data ? "{}" === (0, u.
			default)(e.data) ? (a({
					styleId: i,
					version: r,
					err: null
				}), console.error(e), void n(null)) : (s({
					styleId: i,
					version: r,
					time: o
				}), c = e.data, void n("data:image/png;base64," + c)) : (a({
					styleId: i,
					version: r,
					err: t
				}), console.error(t, e), void n(null))
			}))
		})
	}
	function r(t) {
		var e = t.data,
		n = t.styleId,
		i = t.iconSrc;
		return new f.
	default(function(t) {
			e && "string" == typeof e ? m.
		default.support() ? m.
		default.set(y, (0, u.
		default)({
				data:
				e
			}),
			function() {
				t("data:image/png;base64," + e)
			}) : (console.error("兼容性错误：当前浏览器不支持LocalStorage。"), t(null)) : o(n, i).then(function(e) {
				m.
			default.support() ? m.
			default.set(y, (0, u.
			default)(e),
				function() {
					t(e)
				}) : (console.error("兼容性错误：当前浏览器不支持LocalStorage。"), t(null))
			})
		})
	}
	function a(t) {
		var e = t.styleId,
		n = t.version,
		i = t.err; (0, g.qos)("icon", {
			styleId: e,
			version: n,
			error: i && i.status || 0
		})
	}
	function s(t) {
		var e = t.styleId,
		n = t.version,
		i = t.time; (0, g.qos)("icon", {
			styleId: e,
			version: n,
			loadTime: i
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.setPoiIcon = e.loadPoiIconFile = void 0;
	var l = n(113),
	u = i(l),
	c = n(25),
	f = i(c),
	d = n(79),
	h = i(d),
	v = n(137),
	p = i(v),
	_ = n(89),
	m = i(_),
	g = n(43),
	y = p.
default.QMAPI_poi_icon + "config";
	e.loadPoiIconFile = o,
	e.setPoiIcon = r
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = ["background_color", "font_color", "color_fill", "color_side", "color_border"]; ["regionStyles", "lineStyles", "pointStyles", "labelStyles", "arrowStyles"].forEach(function(n) {
			var i = t[n];
			a(i,
			function(t, n) {
				n.forEach(function(t) {
					e.forEach(function(e) {
						e in t && (t[e] = r(t[e]))
					})
				})
			})
		})
	}
	var o = n(10),
	r = o.colorToRGBA,
	a = o.forIn;
	t.exports = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = {};
		return [v.BASE_LAYER_TYPE.region, v.BASE_LAYER_TYPE.line, v.BASE_LAYER_TYPE.label, v.BASE_LAYER_TYPE.point, v.BASE_LAYER_TYPE.arrow].forEach(function(n) {
			e[n] = {
				type: n,
				style: t[n + "Styles"]
			}
		}),
		e.point.relyStyle = e.label.style,
		e.point.relyStyleField = "labelid",
		e
	}
	function r(t) {
		var e, n = (e = {},
		(0, f.
	default)(e, v.BASE_LAYER_TYPE.region, t.region.style), (0, f.
	default)(e, v.BASE_LAYER_TYPE.line, t.line.style), e),
		i = {};
		return m.
	default.forIn(n,
		function(t, e) {
			m.
		default.forIn(e,
			function(e, n) {
				var o = n[0];
				if (o) {
					var r = o.stylename;
					i[e] = i[e] || {
						id: e,
						name: r,
						type: t,
						styles: {}
					};
					for (var a = i[e], s = 0, l = n.length; s < l; s++) o = n[s],
					a.styles[o.minScaleVal + "-" + o.maxScaleVal] = o
				}
			})
		}),
		i
	}
	function a(t) {
		g(t);
		var e = o(t);
		return {
			style: e,
			layerMeta: r(e),
			styleTag: t.Tag
		}
	}
	function s(t) {
		return new u.
	default(function(e) {
			var n = null,
			i = null;
			if (y.support()) {
				var o = h.
			default.QMAPI_style + t;
				y.get(o,
				function(o) {
					o ? (n = JSON.parse(o).data, i = a(n), i.styleId = t, e(i)) : (0, p.loadStyleFileFromServer)({
						styleId: t,
						version: -1
					}).then(function(n) {
						i = a(n.data),
						i.styleId = t,
						e(i)
					})
				})
			} else(0, p.loadStyleFileFromServer)({
				styleId: t,
				version: -1
			}).then(function(n) {
				i = a(n.data),
				i.styleId = t,
				e(i)
			})
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var l = n(25),
	u = i(l),
	c = n(222),
	f = i(c);
	e.parseStyle = a,
	e.getStyleForWorker = s;
	var d = n(137),
	h = i(d),
	v = n(66),
	p = n(385),
	_ = n(10),
	m = i(_),
	g = n(698),
	y = n(89)
},
, , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.animatableMap = void 0;
	var o = n(16),
	r = i(o),
	a = n(470),
	s = n(10),
	l = i(s),
	u = {
		startAnimation: function(t, e) {
			this.stopMoving(),
			this._prepareMoving();
			var n = {
				center: this.getCenter(),
				zoom: this.getZoom(),
				pitch: this.getPitch(),
				rotation: this.getRotation()
			};
			this._animate(t, {
				onFrame: function(t) {
					var e = t.percentage,
					n = t.frame,
					i = this.transform;
					l.
				default.forIn(n,
					function(t, e) {
						switch (t) {
						case "percentage":
							break;
						case "rotation":
							i.heading = -e;
							break;
						default:
							i[t] = e
						}
					}),
					this.emit("animation_playing", {
						percentage: e,
						frame: n
					}),
					this._fireMoveEvents()
				},
				onEnd: function() {
					this.emit("animation_ended"),
					this._moveToEnd()
				},
				onLoop: function(t) {
					this.emit("animation_looped", t)
				},
				onStop: function() {
					this.emit("animation_stopped"),
					this._moveToEnd()
				},
				onPause: function() {
					this._moveToEnd()
				}
			},
			e, n)
		},
		stopAnimation: function() {
			this._stopAnimate()
		},
		pauseAnimation: function() {
			this._pauseAnimate()
		},
		resumeAnimation: function() {
			this._resumeAnimate()
		}
	};
	e.animatableMap = (0, r.
default)(u, a.animatableMixin)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		var n = document.createElement(t);
		return n.style.cssText = e,
		n
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(3),
	a = i(r),
	s = n(0),
	l = i(s),
	u = n(1),
	c = i(u),
	f = n(5),
	d = i(f),
	h = n(4),
	v = i(h),
	p = n(390),
	_ = i(p),
	m = n(47),
	g = i(m),
	y = n(10),
	x = n(41),
	b = i(x),
	S = n(29),
	w = n(28),
	E = n(43),
	T = b.
default.isString,
	A = b.
default.isNumber,
	P = b.
default.isObject,
	I = ["position:absolute;", "left:0;top:0;", "padding:0px 0px 6px;"],
	k = ["min-width:100px;", "white-space:nowrap;", "background-color:white;", "text-align:center;", "padding:25px 10px 12px;", "border-radius:6px;", "box-shadow:0 2px 4px 0 rgba(0,0,0,0.15);"],
	L = ["width:10px;height:10px;", "background-color:white;", "transform:rotate(45deg);", "position:absolute;", "bottom:1px;", "left:0;right:0;", "margin:auto;", "box-shadow:2px 2px 2px rgba(0,0,0,0.15);"],
	M = ["width:15px;height:15px;", "position:absolute;", "right:5px;top:5px;", "cursor:pointer;"],
	C = {
		x: 0,
		y: 0
	},
	R = function(t) {
		function e(t) {
			return (0, l.
		default)(this, e),
			(0, d.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t || {}))
		}
		return (0, v.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "onInit",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.content = "",
				this.zIndex = 0,
				this.offset = C,
				this.enableCustom = !!t.enableCustom && t.enableCustom,
				this._handlers = [],
				this._domResizeObserver = null,
				this.setContent(t.content).setZIndex(t.zIndex).setOffset(t.offset).setPosition(t.position),
				(0, E.statCn)("InfoWindow")
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this._handlers.forEach(function(t) {
					t && t.remove()
				}),
				this._domResizeObserver && this._domResizeObserver.disconnect()
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = this;
				if (this.enableCustom) return this.dom;
				var e = o("div", k.join(""));
				e.innerHTML = this.content,
				window.ResizeObserver && (this._domResizeObserver = new ResizeObserver(function() {
					t.updateDOM()
				}), this._domResizeObserver.observe(e));
				var n = o("div", L.join("")),
				i = o("div", M.join(""));
				i.innerHTML = '<svg style="fill: #aaa;overflow: hidden;" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg">\n<path d="M579.888 512l190.064-190.064a48 48 0 0 0-67.888-67.872L512 444.112 321.936 254.064a48 48 0 1 0-67.872 67.872L444.112 512 254.064 702.064a48 48 0 1 0 67.872 67.872L512 579.888l190.064 190.064a48 48 0 0 0 67.872-67.888L579.888 512z" fill></path>\n</svg>',
				this._handlers.push((0, w.on)(i, "click,touchend",
				function() {
					t.emit("closeclick"),
					t.close()
				}));
				var r = o("div", I.join(""));
				return r.appendChild(e),
				r.appendChild(n),
				r.appendChild(i),
				r.style.zIndex = this.zIndex,
				this._handlers.push((0, w.on)(r, "click, touchstart, touchend",
				function(t) {
					t && t.stopPropagation && t.stopPropagation()
				})),
				r
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this.map) {
					var t = this.map.projectToContainer(this.position),
					e = this.offset.x || 0,
					n = this.offset.y || 0,
					i = t.x - this.dom.clientWidth / 2 + e + "px",
					o = t.y - this.dom.clientHeight + n + "px";
					this.dom.style.transform = "translate(" + i + ", " + o + ")"
				}
			}
		},
		{
			key: "close",
			value: function() {
				return this.dom && (this.dom.style.display = "none"),
				this
			}
		},
		{
			key: "open",
			value: function() {
				return this.dom && (this.dom.style.display = "", this.updateDOM()),
				this
			}
		},
		{
			key: "setPosition",
			value: function(t) {
				return t instanceof g.
			default ? (this.position = t, this.updateDOM()) : console.error("类型错误: InfoWindow.position参数类型错误，应为TMap.LatLng。"),
				this
			}
		},
		{
			key: "getPosition",
			value: function() {
				return this.position
			}
		},
		{
			key: "setContent",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : "";
				if (!T(t)) return new S.BaseTypeError("InfoWindow.content", "string", t).error(),
				this;
				if (this.enableCustom) {
					this._removeFromMap(),
					this.content = t;
					var e = (new DOMParser).parseFromString(t, "text/html").body.firstElementChild;
					if (e) return this.dom && (e.style.cssText = this.dom.style.cssText),
					this.dom = e,
					this.dom.style.position = "absolute",
					this._addToMap(),
					this;
					this.enableCustom = !1,
					console.error("自定义信息窗体解析错误: content内容无法被解析为DOM，将自动转为默认样式。")
				}
				return this.content = t,
				this.dom && (this.dom.firstElementChild.innerHTML = this.content, this.updateDOM()),
				this
			}
		},
		{
			key: "setZIndex",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 0;
				return A(t) ? (this.zIndex = t, this.dom && (this.dom.style.zIndex = this.zIndex), this) : (new S.BaseTypeError("InfoWindow.zIndex", "number", t).error(), this)
			}
		},
		{
			key: "setOffset",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : C;
				return P(t) ? (t = (0, y.extend)({},
				C, t), A(t.x) ? A(t.y) ? (this.offset = t, this.dom && this.updateDOM(), this) : (new S.BaseTypeError("InfoWindow.offset.y", "number", t.y).error(), this) : (new S.BaseTypeError("InfoWindow.offset.x", "number", t.x).error(), this)) : (new S.BaseTypeError("InfoWindow.offset", "object", t).error(), this)
			}
		}]),
		e
	} (_.
default);
	e.
default = R
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(223),
	r = i(o),
	a = n(17),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(47),
	b = i(x),
	S = n(338),
	w = i(S),
	E = n(220),
	T = n(66),
	A = n(476),
	P = n(41),
	I = i(P),
	k = n(218),
	L = k.CircleStyle,
	M = I.
default.isValidColor,
	C = I.
default.isNumber,
	R = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t))
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = E.GEOMETRY_TYPES.CIRCLE,
				this._layerType = T.RENDER_LAYER_TYPE.circle,
				this._className = "MultiCircle"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.center && t.center instanceof b.
				default ? !t.radius || !C(t.radius) || t.radius <= 0 ? console.error("MultiCircle.geometries: 希望传入CircleGeometry数组，实际第" + e + "元素的radius属性无效！") : (t.styleId || (t.styleId = "default"), t._valid = !0) : console.error("MultiCircle.geometries: 希望传入CircleGeometry数组，实际第" + e + "元素的center属性无效！") : console.error("MultiCircle.geometries: 希望传入CircleGeometry数组，实际第" + e + "元素不存在！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new L
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, s.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && n instanceof L ? n instanceof L && (M(n.color) ? M(n.borderColor) || console.error("MultiCircle.styles: 样式id ", e, " 对应的PolygonStyle.borderColor属性无效", n) : console.error("MultiCircle.styles: 样式id ", e, " 对应的PolygonStyle.color属性无效", n)) : console.error("MultiCircle.styles: 样式id ", e, "希望传入CircleStyle实例，实际传入：", n)
				})
			}
		},
		{
			key: "_transferFromGeometry",
			value: function(t) {
				return (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_transferFromGeometry", this).call(this, t).map(function(t) {
					var e = t.center,
					n = t.radius;
					if (t._valid) return (0, r.
				default)({},
					t, {
						paths: (0, A.getCirclePath)(e, n)
					})
				}).filter(function(t) {
					return !! t
				})
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return this.getGeometries().map(function(t) {
					return t.center
				})
			}
		},
		{
			key: "_getAllSegments",
			value: function() {
				return []
			}
		}]),
		e
	} (w.
default);
	t.exports = R
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(223),
	r = i(o),
	a = n(17),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(47),
	b = i(x),
	S = n(338),
	w = i(S),
	E = n(220),
	T = n(66),
	A = n(477),
	P = n(41),
	I = i(P),
	k = n(218),
	L = k.EllipseStyle,
	M = I.
default.isValidColor,
	C = I.
default.isNumber,
	R = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t))
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = E.GEOMETRY_TYPES.ELLIPSE,
				this._layerType = T.RENDER_LAYER_TYPE.ellipse,
				this._className = "MultiEllipse"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.center && t.center instanceof b.
				default ? !t.majorRadius || !C(t.majorRadius) || t.majorRadius <= 0 ? console.error("MultiEllipse.geometries: 希望传入EllipseGeometry数组，实际第" + e + "元素的majorRadius属性无效！") : !t.minorRadius || !C(t.minorRadius) || t.minorRadius <= 0 ? console.error("MultiEllipse.geometries: 希望传入EllipseGeometry数组，实际第" + e + "元素的minorRadius属性无效！") : (t.styleId || (t.styleId = "default"), t._valid = !0) : console.error("MultiEllipse.geometries: 希望传入EllipseGeometry数组，实际第" + e + "元素的center属性无效！") : console.error("MultiEllipse.geometries: 希望传入EllipseGeometry数组，实际第" + e + "元素不存在！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new L
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, s.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && n instanceof L ? n instanceof L && (M(n.color) ? M(n.borderColor) || console.error("MultiEllipse.styles: 样式id ", e, " 对应的EllipseStyle.borderColor属性无效", n) : console.error("MultiEllipse.styles: 样式id ", e, " 对应的EllipseStyle.color属性无效", n)) : console.error("MultiEllipse.styles: 样式id ", e, "希望传入EllipseStyle实例，实际传入：", n)
				})
			}
		},
		{
			key: "_transferFromGeometry",
			value: function(t) {
				return (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_transferFromGeometry", this).call(this, t).map(function(t) {
					var e = t.center,
					n = t.majorRadius,
					i = t.minorRadius;
					if (t._valid) return (0, r.
				default)({},
					t, {
						paths: (0, A.getEllipsePath)(e, n, i)
					})
				}).filter(function(t) {
					return !! t
				})
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return this.getGeometries().map(function(t) {
					return t.center
				})
			}
		},
		{
			key: "_getAllSegments",
			value: function() {
				return []
			}
		}]),
		e
	} (w.
default);
	t.exports = R
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(17),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(47),
	y = i(g),
	x = n(303),
	b = i(x),
	S = n(391),
	w = i(S),
	E = n(220),
	T = n(66),
	A = n(41),
	P = i(A),
	I = P.
default.isNumber,
	k = P.
default.isUndefined,
	L = function(t) {
		function e(t) {
			return (0, u.
		default)(this, e),
			(0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t))
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var e = t.enableCollision,
				n = void 0 !== e && e;
				this.enableCollision = n
			}
		},
		{
			key: "_createLayer",
			value: function() { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "_createLayer", this).call(this),
				this.layer._enableCollision = !!this.enableCollision
			}
		},
		{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = E.GEOMETRY_TYPES.LABEL,
				this._layerType = T.RENDER_LAYER_TYPE.label,
				this._className = "MultiLabel"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.styleId ? t.position && t.position instanceof y.
				default ? t.content ? k(t.rank) || I(t.rank) || console.error("MultiLabel.geometries: 希望传入LabelGeometry数组，实际第" + e + "元素的rank属性无效!") : console.error("MultiLabel.geometries: 希望传入LabelGeometry数组，实际第" + e + "元素的content属性无效!") : console.error("MultiLabel.geometries: 希望传入LabelGeometry数组，实际第" + e + "元素的position属性无效！") : t.styleId = "default": console.error("MultiLabel.geometries: 希望传入LabelGeometry数组，实际第" + e + "元素不存在！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new w.
			default
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, r.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && n instanceof w.
				default || console.error("MultiLabel.styles: 样式id ", e, "希望传入LabelStyle实例，实际传入：", n)
				})
			}
		}]),
		e
	} (b.
default);
	t.exports = L
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(17),
	r = i(o),
	a = n(16),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(140),
	b = i(x),
	S = n(376),
	w = n(399),
	E = i(w),
	T = n(10),
	A = n(74),
	P = i(A),
	I = n(47),
	k = i(I),
	L = n(303),
	M = i(L),
	C = n(220),
	R = n(66),
	B = n(505),
	N = function(t) {
		return "number" == typeof t && !(0, b.
	default)(t)
	},
	O = function(t) {
		function e(t) { (0, f.
		default)(this, e);
			var n = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return (0, s.
		default)(n, S.easableMixin),
			n._movingState = null,
			n._pausedState = null,
			n
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_initialize",
			value: function(t) {
				var e = t.enableCollision,
				n = void 0 !== e && e;
				this.enableCollision = n
			}
		},
		{
			key: "_createLayer",
			value: function() { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_createLayer", this).call(this),
				this.layer._enableCollision = !!this.enableCollision
			}
		},
		{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = C.GEOMETRY_TYPES.POINT,
				this._layerType = R.RENDER_LAYER_TYPE.marker,
				this._className = "MultiMarker"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.styleId || (t.styleId = "default") : console.error("MultiMarker.geometries: 希望传入PointGeometry数组，实际第" + e + "元素不存在！"),
					t.position && t.position instanceof k.
				default || console.error("MultiMarker.geometries: 希望传入PointGeometry数组，实际第" + e + "元素的position属性无效！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new B
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, r.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && n instanceof B ? n.width && n.width > 0 && n.width % 1 == 0 ? n.height && n.height > 0 && n.height % 1 == 0 ? n.src || console.error("MultiMarker.styles: 样式id ", e, " 对应的MarkerStyle.src属性无效", n) : console.error("MultiMarker.styles: 样式id ", e, " 对应的MarkerStyle.height属性无效", n) : console.error("MultiMarker.styles: 样式id ", e, " 对应的MarkerStyle.width属性无效", n) : console.error("MultiMarker.styles: 样式id ", e, "希望传入MarkerStyle实例，实际传入：", n)
				})
			}
		},
		{
			key: "moveAlong",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				i = n.autoRotation,
				o = void 0 !== i && i;
				if (!this.getMap()) return this;
				this.stopMove();
				var a = {},
				l = this.map.transform.getDistanceScales(),
				u = l.pixelsPerMeter,
				c = l.pixelsPerDegree,
				f = [c[0] / u[0], c[1] / u[1]];
				try { (0, r.
				default)(t).forEach(function(n) {
						if (! (n in e._idSet)) return void console.warn("MultiMarker中并不存在id为: " + n + "的点！");
						var i = t[n],
						o = i.path,
						r = i.duration,
						s = i.speed;
						if (e._checkMoveAlongParams(i, n)) {
							var l = [],
							u = 0,
							c = 0;
							if (o.forEach(function(t, e, n) {
								if (e !== n.length - 1) {
									var i = void 0;
									n[e + 1].lng * t.lng < 0 && (i = t.lng / Math.abs(t.lng) * (180 - Math.abs(n[e + 1].lng)) + (180 - Math.abs(t.lng)));
									var o = new P.
								default((i || n[e + 1].lng - t.lng) * f[0], (n[e + 1].lat - t.lat) * f[1]),
									r = o.mag();
									u += r,
									l.push({
										angle: o.angle(),
										segDistance: r,
										start: t,
										end: n[e + 1],
										radio: null,
										totalRadio: null
									})
								}
							}), 0 === u) return void console.error("moveAlong方法中id为" + n + "对应的path计算得到的总长度为0");
							var d = s / 3.6,
							h = r || u / d * 1e3;
							l.forEach(function(t) {
								t.radio = t.segDistance / u,
								c += t.radio,
								t.totalRadio = c,
								t.pendingTime = t.radio * h,
								t.totalPendingTime = t.totalRadio * h,
								t.totalDistance = u
							}),
							a[n] = {
								segmentInfos: l,
								pendingTime: h,
								curSeg: 0,
								geometry: e._rawGeometries[e._idSet[n]],
								param: i
							}
						}
					})
				} catch(t) {
					console.error("moveAlong数据解析出错，请检查传入参数是否合法", t)
				}
				this._moveParamSet = t;
				var d = [],
				h = 0;
				return (0, r.
			default)(a).forEach(function(e) {
					var n = a[e].geometry;
					n.position.equals(t[e].path[0]) || d.push((0, s.
				default)({},
					n, {
						position: t[e].path[0]
					})),
					h = h > a[e].pendingTime ? h: a[e].pendingTime
				}),
				d.length > 0 && this.updateGeometries(d),
				this._startMoveAnimation(a, {
					duration: h,
					startTime: 0,
					autoRotation: o
				}),
				this
			}
		},
		{
			key: "_checkMoveAlongParams",
			value: function(t, e) {
				var n = t.path,
				i = t.duration,
				o = t.speed,
				r = void 0 !== i,
				a = void 0 !== o;
				return Array.isArray(n) && n.length > 0 ? r || a ? r && (!N(i) || i <= 0) ? (console.error("moveAlong方法中id为" + e + "对应的duration: " + i + "不合法!"), !1) : !(a && (!N(o) || o <= 0)) || (console.error("moveAlong方法中id为" + e + "对应的speed: " + o + "不合法!"), !1) : (console.error("moveAlong方法中id为" + e + "对应的duration和speed均未定义!"), !1) : (console.error("moveAlong方法中id为" + e + "对应的path: " + n + "不合法!"), !1)
			}
		},
		{
			key: "_startMoveAnimation",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				i = n.duration,
				o = void 0 === i ? 0 : i,
				a = n.startTime,
				l = void 0 === a ? 0 : a,
				u = n.autoRotation,
				c = void 0 !== u && u,
				f = this._moveParamSet;
				this._ease(function(n) {
					var i = [],
					a = {},
					u = l + n * o; (0, r.
				default)(t).forEach(function(n) {
						var o = t[n],
						r = o.segmentInfos[o.curSeg];
						if (r) {
							for (; u > r.totalPendingTime && (o.curSeg += 1, r = o.segmentInfos[o.curSeg]););
							if (r) {
								var l = new k.
							default(0, 0),
								d = (u + r.pendingTime - r.totalPendingTime) / r.pendingTime;
								if (l.lat = (0, E.
							default)(r.start.lat, r.end.lat, d), l.lng = (0, E.
							default)(r.start.lng, r.end.lng, d), r.start.lng * r.end.lng < 0) {
									var h = r.start.lng,
									v = r.end.lng,
									p = (180 - Math.abs(h)) / (180 - Math.abs(h) + (180 - Math.abs(v)));
									l.lng = d <= p ? d / p * (180 - Math.abs(h)) * (h / Math.abs(h)) + h: v / Math.abs(v) * (180 - (d - p) / (1 - p) * (180 - Math.abs(v)))
								}
								o.geometry.position = l;
								var _ = o.geometry.styleId && 0 === e.styles[o.geometry.styleId].faceTo;
								c && _ && (o.geometry.properties = (0, s.
							default)({},
								o.geometry.properties, {
									$angle: (0, T.radianToDegree)(r.angle) - 90
								}));
								var m = f[n].path.slice(0, o.curSeg + 1);
								m.push(l),
								a[n] = {
									passedLatLngs: m,
									angle: o.geometry.properties && o.geometry.properties.$angle
								},
								i.push(o.geometry)
							}
						}
					}),
					e._movingState = {
						moveAlongProcessed: t,
						time: u,
						left: (1 - n) * o,
						autoRotation: c
					},
					e.updateGeometries(i);
					var d = e.getMap();
					d && d._changeFPS(),
					e.emit("moving", a)
				},
				function() {
					e._movingState = null,
					e._pausedState = null,
					e.emit("move_ended", f)
				},
				function() {
					e._movingState && (e.emit("move_stopped", f), e._pausedState = null, e._movingState = null)
				},
				{
					easing: T.linearEase,
					animate: !0,
					duration: o
				})
			}
		},
		{
			key: "stopMove",
			value: function() {
				return this._abortFn && (this._abortFn(), this._abortFn = null),
				this._finishFn = null,
				this
			}
		},
		{
			key: "pauseMove",
			value: function() {
				return this._movingState && (this._pausedState = this._movingState, this._movingState = null, this.stopMove(), this.emit("move_paused")),
				this
			}
		},
		{
			key: "resumeMove",
			value: function() {
				if (this._pausedState) {
					var t = this._pausedState,
					e = t.moveAlongProcessed,
					n = t.autoRotation,
					i = t.time,
					o = t.left;
					this._startMoveAnimation(e, {
						duration: o,
						autoRotation: n,
						startTime: i
					}),
					this._pausedState = null,
					this._movingState = null,
					this.emit("move_resumed")
				}
				return this
			}
		},
		{
			key: "_getAllPoints",
			value: function() {
				return this.getGeometries().map(function(t) {
					return t.position
				})
			}
		}]),
		e
	} (M.
default);
	t.exports = O
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(223),
	r = i(o),
	a = n(17),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(338),
	b = i(x),
	S = n(220),
	w = n(66),
	E = n(331),
	T = n(41),
	A = i(T),
	P = n(209),
	I = i(P),
	k = n(218),
	L = k.RectangleStyle,
	M = A.
default.isValidColor,
	C = A.
default.isNumber,
	R = A.
default.isValidLatLng,
	B = function(t) {
		function e(t) {
			return (0, f.
		default)(this, e),
			(0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t))
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "_setGeometryType",
			value: function() {
				this._geometryType = S.GEOMETRY_TYPES.RECTANGLE,
				this._layerType = w.RENDER_LAYER_TYPE.rectangle,
				this._className = "MultiRectangle"
			}
		},
		{
			key: "_checkGeometries",
			value: function() { (arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : []).forEach(function(t, e) {
					t ? t.center && t.center instanceof TMap.LatLng ? !t.width || !C(t.width) || t.width <= 0 ? console.error("MultiRectangle.geometries: 希望传入RectangleGeometry数组，实际第" + e + "元素的width属性无效！") : !t.height || !C(t.height) || t.height <= 0 ? console.error("MultiRectangle.geometries: 希望传入RectangleGeometry数组，实际第" + e + "元素的height属性无效！") : (t.styleId || (t.styleId = "default"), t._valid = !0) : console.error("MultiRectangle.geometries: 希望传入RectangleGeometry数组，实际第" + e + "元素的center属性无效！") : console.error("MultiRectangle.geometries: 希望传入RectangleGeometry数组，实际第" + e + "元素不存在！")
				})
			}
		},
		{
			key: "_getDefaultStyle",
			value: function() {
				return new L
			}
		},
		{
			key: "_checkStyles",
			value: function(t) { (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_checkStyles", this).call(this, t),
				(0, s.
			default)(t).forEach(function(e) {
					var n = t[e];
					n && n instanceof L ? n instanceof L && (M(n.color) ? M(n.borderColor) || console.error("MultiRectangle.styles: 样式id ", e, " 对应的RectangleStyle.borderColor属性无效", n) : console.error("MultiRectangle.styles: 样式id ", e, " 对应的RectangleStyle.color属性无效", n)) : console.error("MultiRectangle.styles: 样式id ", e, "希望传入RectangleStyle实例，实际传入：", n)
				})
			}
		},
		{
			key: "_transferFromGeometry",
			value: function(t) {
				return (0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "_transferFromGeometry", this).call(this, t).map(function(t) {
					var e = t.center,
					n = t.width,
					i = t.height;
					if (t._valid) return (0, r.
				default)({},
					t, {
						paths: (0, E.getRectanglePath)(e, n, i)
					})
				}).filter(function(t) {
					return !! t
				})
			}
		}], [{
			key: "getBounds",
			value: function(t) {
				if (!t) return void console.error("geometry参数无效,预期是RectangleGeometry对象，实际传入：", t);
				var e = t.center,
				n = t.width,
				i = t.height;
				if (!e || !R(e)) return void console.error("RectangleGeometry.center 属性无效,预期是符合要求的经纬度坐标，实际传入：", e);
				if (!C(n) || n <= 0) return void console.error("RectangleGeometry.width 属性无效,预期是正数，实际传入：", n);
				if (!C(i) || i <= 0) return void console.error("RectangleGeometry.height 属性无效,预期是正数，实际传入：", i);
				var o = (0, E.getRectanglePath)(e, n, i);
				return new I.
			default(o[2], o[0])
			}
		}]),
		e
	} (b.
default);
	t.exports = B
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(390),
	p = i(v),
	_ = n(558),
	m = i(_),
	g = n(296),
	y = function(t) {
		function e() {
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).apply(this, arguments))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "onInit",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.count = t.count,
				this.instance = t.instance,
				this.position = this.instance.center || this.instance.position,
				this.zoomOnClick = t.zoomOnClick,
				this._handlers = [],
				this.visible = !0
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = this,
				e = document.createElement("div");
				return this.instance && this._updateContent(e),
				this.finger = new g.Finger(e, {
					preventDefaultMove: !0,
					preventDefaultEnd: !0
				}),
				this.finger.on("tap",
				function() {
					t.instance.geometries && t.visible && t.zoomOnClick && t.map.fitBounds(t.instance.bounds),
					t.emit("overlay-click", t.instance)
				}),
				e
			}
		},
		{
			key: "updateContent",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				return this.count = t.count,
				this.instance = t.instance,
				this.position = this.instance.center || this.instance.position,
				this._updateContent(this.dom),
				this.updateDOM(),
				this.map !== t.map && this.setMap(t.map),
				this
			}
		},
		{
			key: "_updateContent",
			value: function(t) {
				if (1 === this.count) {
					t.textContent = "",
					t.style.cssText = ["position:absolute;", "width: 32px;", "height: 32px;"].join(" ");
					var e = document.createElement("img");
					e.height = 32,
					e.src = m.
				default,
					e.style.cssText = ["position: absolute;", "bottom: 16px;"].join(" "),
					t.appendChild(e)
				} else t.style.cssText = "\n\t\t\tposition: absolute;\n\t\t\twidth: 40px;\n\t\t\theight: 40px;\n\t\t\tborder-radius: 40px;\n\t\t\tbackground-color: green;\n\t\t\ttransform: translate3d(718.348px, 395.68px, 0px);\n\t\t\ttext-align: center;\n\t\t\tline-height: 40px;\n\t\t\tbox-shadow: 0 1px 1px 0 rgba(0,0,0,0.2);\n\t\t\tborder: 1px solid #3875FF;\n\t\t\tbackground-color: rgba(227,235,255,0.9);\n\t\t\tfont-size: 14px;\n\t\t\tcolor: #1D63FF;",
				t.textContent = this.count
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this.map && this.visible) {
					var t = this.map.projectToContainer(this.position),
					e = t.getX() - 20 + "px",
					n = t.getY() - 20 + "px";
					this.dom.style.transform = "translate3d(" + e + ", " + n + ", 0px)"
				}
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				return this.visible = !!t,
				this.dom.style.display = this.visible ? "": "none",
				this
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this._handlers.forEach(function(t) {
					return t.remove()
				}),
				this.finger && this.finger.destroy(),
				this.removeAllListeners(),
				this.count = null,
				this.instance = null,
				this.position = null,
				this.dom = null,
				this.visible = null
			}
		}]),
		e
	} (p.
default);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(113),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(23),
	y = i(g),
	x = n(478),
	b = i(x),
	S = n(504),
	w = i(S),
	E = n(666),
	T = i(E),
	A = n(28),
	P = i(A),
	I = n(10),
	k = i(I),
	L = n(47),
	M = i(L),
	C = n(733),
	R = i(C),
	B = n(29),
	N = n(43),
	O = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this));
			return n.id = t.id || k.
		default.uniqueId(),
			n._defaultMarkers = [],
			n.clusters = [],
			n._overlayList = [],
			n._eventHandlers = [],
			n._ready = !1,
			n._prevZoom = null,
			n._cacheCluster = n.clusters,
			n.zIndex = t.zIndex || null,
			n.enableDefaultStyle = !1 !== t.enableDefaultStyle,
			n.minimumClusterSize = t.minimumClusterSize || 2,
			n.zoomOnClick = !!n.enableDefaultStyle && !1 !== t.zoomOnClick,
			n.gridSize = t.gridSize || 60,
			n.averageCenter = !1 !== t.averageCenter,
			n.maxZoom = k.
		default.clamp(t.maxZoom || y.
		default.maxZoom, y.
		default.minZoom, y.
		default.maxZoom),
			n._checkGeometries(t.geometries),
			n._rawGeometries = n._assignIdToGeometry(t.geometries),
			n._idSet = n._updateGeometryIdSet(n._rawGeometries),
			n.geometries = n._rawGeometries,
			t.map && n.setMap(t.map),
			(0, N.statCn)("Map"),
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "setMap",
			value: function(t) {
				return t === this.map ? this: null === t || t instanceof window.TMap.Map ? (t ? this.map ? (this.setMap(null), this.setMap(t)) : this.id && t.getLayer(this.id) ? console.error("Map中已存在id为" + this.id + "的图层，无法重复添加") : (this.map = t, this._bindEventHandler(), this._createLayer(), this._ready = !0, this._redraw()) : (this._removeEventHander(), this._removeLayer(), this._overlayList.forEach(function(t) {
					return t.setMap(null)
				}), this.map = null, this._ready = !1), this) : (console.error("所传入参数并非TMap.Map的实例！"), this)
			}
		},
		{
			key: "setGeometries",
			value: function(t) {
				return Array.isArray(t) ? t === this._rawGeometries ? this: ((0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "setGeometries", this).call(this, t, this.styles), this) : (new B.BaseTypeError("geometries", "Array", t).error(), this)
			}
		},
		{
			key: "updateGeometries",
			value: function(t, n) {
				return t ? ((0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "updateGeometries", this).call(this, t, n), this) : this
			}
		},
		{
			key: "_bindEventHandler",
			value: function() {
				var t = this;
				this._eventHandlers.push(P.
			default.on(this.map, "zoom",
				function() {
					var e = k.
				default.round(t.map.getZoom(), 1);
					t._prevZoom !== e && (t._prevZoom = e, t._resetViewport())
				})),
				this._eventHandlers.push(P.
			default.on(this.map, "idle",
				function() {
					t._redraw()
				})),
				this._eventHandlers.push(P.
			default.on(this, "geometry_changed",
				function() {
					t.map && (t.map && t.map.getSource(t.id).setData(t.geometries), t._resetViewport(), t._redraw())
				}))
			}
		},
		{
			key: "_removeEventHander",
			value: function() {
				this._eventHandlers.forEach(function(t) {
					return t.remove()
				})
			}
		},
		{
			key: "getMap",
			value: function() {
				return this.map
			}
		},
		{
			key: "_createLayer",
			value: function() {
				this.layer = new T.
			default({
					map:
					this.map,
					id: this.id,
					type: this._layerType,
					zIndex: this.zIndex,
					maxZoom: this.maxZoom,
					gridSize: this.gridSize,
					minimumClusterSize: this.minimumClusterSize,
					averageCenter: this.averageCenter,
					sourceData: this.geometries
				})
			}
		},
		{
			key: "_removeLayer",
			value: function() {
				this.layer.setMap(null)
			}
		},
		{
			key: "_resetViewport",
			value: function() {
				this.clusters = [],
				this._resetCluster = !0
			}
		},
		{
			key: "_redraw",
			value: function() {
				var t = this;
				if (this._ready && this.map.getSource(this.id)) {
					var e = this.map.transform.getDistanceScales(),
					n = this.map.getBounds();
					this.map.getSource(this.id).getCluster({
						pixelsPerDegree: e.pixelsPerDegree,
						resetCluster: this._resetCluster,
						mapBounds: {
							sw: n.getSouthWest(),
							ne: n.getNorthEast()
						},
						zoom: this.map.getZoom()
					},
					function(e) {
						t.clusters = e.map(function(t) {
							return b.
						default.normalizeClusterInfo(t)
						}),
						t._checkClusterChange(),
						t._repaint()
					}),
					this._resetCluster = !1
				}
			}
		},
		{
			key: "_repaint",
			value: function() {
				var t = this;
				if (this.enableDefaultStyle && this.layer.visible) {
					this._overlayList.forEach(function(t) {
						return t.setVisible(!1)
					});
					var e = 0,
					n = this._overlayList.length;
					this.clusters.forEach(function(i) {
						var o = {
							count: i.geometries.length,
							instance: i,
							map: t.map,
							zoomOnClick: t.zoomOnClick
						};
						t._constructOverlay(e, n, o),
						e += 1
					})
				}
			}
		},
		{
			key: "_constructOverlay",
			value: function(t, e, n) {
				var i = this;
				if (t < e) this._overlayList[t].setVisible(!0),
				this._overlayList[t].updateContent(n);
				else {
					var o = new R.
				default(n);
					o.on("overlay-click",
					function(t) {
						var e = {};
						t.geometries ? e.cluster = t: e.geometry = t,
						i.emit("click", e)
					}),
					this._overlayList.push(o)
				}
			}
		},
		{
			key: "_checkClusterChange",
			value: function() {
				var t = this,
				e = this.clusters,
				n = [];
				e.forEach(function(t) {
					n.push((0, r.
				default)(t.geometries))
				});
				var i = !1;
				n.forEach(function(e, n) {
					e !== (t._cacheCluster && t._cacheCluster[n]) && (i = !0)
				}),
				i && 0 !== n.length && (this._cacheCluster = n, this.emit("cluster_changed"))
			}
		},
		{
			key: "_checkGeometries",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [],
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				return t.filter(function(t, n) {
					return t ? t.position && t.position instanceof M.
				default ? (t.styleId && e[t.styleId] || (t.styleId = "default"), !0) : (console.error("MarkerCluster.geometries: 希望传入PointGeometry数组，实际第" + n + "元素的position属性无效！"), !1) : (console.error("MarkerCluster.geometries: 希望传入PointGeometry数组，实际第" + n + "元素不存在！"), !1)
				})
			}
		},
		{
			key: "getClusters",
			value: function() {
				return this.clusters
			}
		},
		{
			key: "zoomInCluster",
			value: function(t) {
				t.bounds ? this.map.fitBounds(t.bounds) : console.warn("聚合簇 " + t + " 缺少bounds信息")
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				this._overlayList.forEach(function(t) {
					return t.setVisible(!1)
				}),
				this.layer.setVisible(t),
				this._repaint()
			}
		},
		{
			key: "getVisible",
			value: function() {
				return this.layer.visible
			}
		},
		{
			key: "destroy",
			value: function() {
				this.setMap(null),
				this._resetViewport(),
				this._overlayList.forEach(function(t) {
					return t.destroy()
				}),
				this._defaultMarkers = null,
				this.clusters = null,
				this._overlayList = null,
				this._eventHandlers = null,
				this._ready = null,
				this._prevZoom = null,
				this._cacheCluster = null,
				this.zIndex = null,
				this.enableDefaultStyle = null,
				this.minimumClusterSize = null,
				this.zoomOnClick = null,
				this.gridSize = null,
				this.averageCenter = null,
				this.maxZoom = null,
				this._rawGeometries = null,
				this.id = null,
				this._idSet = null,
				this.geometries = null
			}
		}]),
		e
	} (w.
default);
	e.
default = O
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(28),
	p = i(v),
	_ = n(779),
	m = i(_),
	g = n(106),
	y = function(t) {
		function e(t, n) { (0, s.
		default)(this, e);
			var i = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return i.map = t,
			i.el = i.map.getContainer(),
			i.eventHandlers = [],
			i.pickQuery = new m.
		default(i.map),
			i.featurePicking = n.featurePicking,
			i.pickingRadius = n.pickingRadius,
			[{
				type: "mousedown",
				immediate: !0,
				delay: !1
			},
			{
				type: "mouseout",
				immediate: !0,
				delay: !1
			},
			{
				type: "mouseover",
				immediate: !0,
				delay: !1
			},
			{
				type: "mouseup",
				immediate: !0,
				delay: !1
			},
			{
				type: "touchstart",
				immediate: !0,
				delay: !1
			},
			{
				type: "touchend",
				immediate: !0,
				delay: !1
			},
			{
				type: "touchcancel",
				immediate: !1,
				delay: !1
			},
			{
				type: "click",
				immediate: !1,
				delay: !1
			},
			{
				type: "rightclick",
				immediate: !1,
				delay: !1
			},
			{
				type: "dblclick",
				immediate: !1,
				delay: !0
			}].forEach(function(t) {
				i.eventHandlers.push(p.
			default.on(i.map, t.type,
				function(e) {
					e.delay ? setTimeout(function() {
						i.onHandleEvent(e, t)
					},
					50) : i.onHandleEvent(e, t)
				}))
			}),
			i.eventHandlers.push(p.
		default.on(i.map, {
				mousemove: p.
			default.throttle(function(t) {
					i.requestPick("mousemove", {
						event: t
					})
				},
				50),
				touchmove: p.
			default.throttle(function(t) {
				console.log("dasdasdas")
					i.requestPick("touchmove", {
						event: t
					})
				},
				50)
			})),
			i._pickRequestObject = {},
			i._isPicking = !1,
			i.setMaxListeners(300),
			i
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "onHandleEvent",
			value: function(t, e) {
				this.requestPick(e.type, {
					event: t
				}),
				e.immediate && this.runPick()
			}
		},
		{
			key: "requestPick",
			value: function(t, e) {
				if (!this.map.moving || "dblclick" === t || "touchmove" === t || "touchend" === t) {
					delete this._pickRequestObject.type,
					delete this._pickRequestObject.pos,
					delete this._pickRequestObject.radius,
					this._pickRequestObject.type = t;
					var n = e.event;
					if (n && (n.point || n.points)) {
						var i = n.points && n.points[0] || n.point;
						this._pickRequestObject.pos = i,
						this._pickRequestObject.radius = 1,
						this._pickRequestObject.mapEvent = n,
						"click" === t && this.featurePicking && (this._pickRequestObject.radius = this.pickingRadius || 5)
					}
				}
			}
		},
		{
			key: "runPick",
			value: function() {
				var t = this; (!this._isPicking && this._pickRequestObject.type && !this.map.moving || "touchmove" === this._pickRequestObject.type) && (this._isPicking = !0, this.pickQuery.pickObject({
					x: this._pickRequestObject.pos.x,
					y: this._pickRequestObject.pos.y,
					radius: this._pickRequestObject.radius,
					featurePicking: this.featurePicking && "click" === this._pickRequestObject.type,
					callback: function(e) {
						e && e.layerId && e.objectIndex > -1 && t.emit("action", {
							eventType: t._pickRequestObject.type,
							layerId: e.layerId,
							objectIndex: e.objectIndex,
							pickColor: e.pickColor,
							mapEvent: t._pickRequestObject.mapEvent
						}),
						"click" === t._pickRequestObject.type && t.featurePicking && t.map.emit("feature_picked", e.featurePick),
						t.emit(t._pickRequestObject.type, t._pickRequestObject.mapEvent),
						t._clearRequest(),
						t._isPicking = !1
					}
				}))
			}
		},
		{
			key: "_clearRequest",
			value: function() {
				this._pickRequestObject = {}
			}
		},
		{
			key: "destroy",
			value: function() {
				this._clearRequest(),
				this.pickQuery.destroy(),
				this.map = null,
				this.removeAllListeners()
			}
		}]),
		e
	} (g);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(221),
	r = i(o),
	a = n(24),
	s = i(a),
	l = n(283),
	u = i(l),
	c = n(32),
	f = i(c),
	d = n(25),
	h = i(d),
	v = n(282),
	p = i(v),
	_ = n(3),
	m = i(_),
	g = n(0),
	y = i(g),
	x = n(1),
	b = i(x),
	S = n(5),
	w = i(S),
	E = n(4),
	T = i(E),
	A = n(106),
	P = i(A),
	I = n(294),
	k = n(507),
	L = n(738),
	M = n(487),
	C = n(737),
	R = n(281),
	B = n(508),
	N = n(471),
	O = i(N),
	D = n(248),
	z = D.LOGO_URL.DEFAULT_LOGO,
	F = {
		ANY: 1,
		CENTER: 0
	},
	V = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, y.
		default)(this, e);
			var n = (0, w.
		default)(this, (e.__proto__ || (0, m.
		default)(e)).call(this));
			return n._map = t.map,
			n._init(),
			n
		}
		return (0, T.
	default)(e, t),
		(0, b.
	default)(e, [{
			key: "_init",
			value: function() {
				function t() {
					return e.apply(this, arguments)
				}
				var e = (0, p.
			default)(u.
			default.mark(function t() {
					var e, n, i, o, r, a, s;
					return u.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							return e = (0, I.checkKey)(this._map.id),
							n = (0, I.overseaCheckKey)(),
							t.next = 4,
							h.
						default.all([e, n]);
						case 4:
							if (i = t.sent, o = (0, f.
						default)(i, 2), r = o[0], a = o[1], r) {
								t.next = 9;
								break
							}
							return console.error("鉴权失败：海外图鉴权失败"),
							t.abrupt("return");
						case 9:
							if (!a || 0 !== a.error) {
								t.next = 18;
								break
							}
							return t.next = 12,
							(0, B.getOnlineFrontier)(a);
						case 12:
							this.frontier = t.sent,
							s = a && a.info && a.info.detail,
							this.tilesrc = a && a.info && a.info.tilesrc,
							this.isOverseaMap = !1,
							this._turnOnOverseaControl(),
							this._turnOnLogoControl(s);
						case 18:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "_turnOnOverseaControl",
			value: function() {
				var t = this;
				this._map.on("bounds_changed",
				function() {
					t._switchOversea()
				}),
				this._map.on("mapstyle_changed",
				function() {
					t._switchOversea()
				})
			}
		},
		{
			key: "_switchOversea",
			value: function() {
				var t = this._map.getBaseMap();
				if (this.tilesrc && "satellite" !== t.type) {
					if (this._map.getZoom() > 6) {
						var e = this._map.getBounds();
						return void(this._checkIsInDistrict("china", e, F.ANY) ? this._changeMapType("china") : this._changeMapType("overseamap"))
					}
					this._changeMapType("china")
				}
			}
		},
		{
			key: "_changeMapType",
			value: function(t) {
				if (this.isOverseaMap || "overseamap" !== t) this.isOverseaMap && "china" === t && (this.isOverseaMap = !1, this._changeLayerVisible("china"));
				else {
					this.isOverseaMap = !0;
					var e = this._map.getLayer("oversea");
					e || (e = (0, M.createOverseaLayer)({
						map: this._map,
						tilesrc: this.tilesrc,
						key: O.
					default,
						encrypt: C.encrypt
					})),
					this._changeLayerVisible("oversea")
				}
			}
		},
		{
			key: "_changeLayerVisible",
			value: function(t) {
				var e = this,
				n = "oversea" === t;
				this.visibleCache = this.visibleCache || {};
				var i = [].concat((0, s.
			default)(R.VECTOR_LAYER_ID), ["handdraw", "traffic_base", "oversea"]); (0, r.
			default)(i).forEach(function(t) {
					var i = e._map.getLayer(t);
					if (i) if (n) {
						if (e.visibleCache[t] = i.visible, "oversea" === t) return void i.setVisible(!0);
						i.setVisible(!1)
					} else {
						if ("oversea" === t) return void i.setVisible(!1);
						var o = e.visibleCache[t];
						i.setVisible(o)
					}
				}),
				n ? (this._map.getSource("oversea") && this._map.getSource("oversea").unfreeze(), this._map.getSource("vector_source") && this._map.getSource("vector_source").freeze(), this._map.getSource("traffic_base") && this._map.getSource("traffic_base").freeze(), this._map.getSource("handdraw") && this._map.getSource("handdraw").freeze()) : (this._map.getSource("oversea") && this._map.getSource("oversea").freeze(), this._map.getSource("vector_source") && this._map.getSource("vector_source").unfreeze(), this._map.getSource("traffic_base") && this._map.getSource("traffic_base").unfreeze(), this._map.getSource("handdraw") && this._map.getSource("handdraw").unfreeze())
			}
		},
		{
			key: "_turnOnLogoControl",
			value: function(t) {
				var e = this;
				this._map.on("bounds_changed",
				function() {
					e._switchLogo(t)
				}),
				this._map.on("mapstyle_changed",
				function() {
					e._switchLogo(t)
				})
			}
		},
		{
			key: "_switchLogo",
			value: function(t) {
				var e = this;
				if ("satellite" !== this._map.getBaseMap().type) for (var n = Math.ceil(this._map.getZoom()), i = t || k.defaultLogoRules, o = 0; o < i.length; o++) {
					var r = i[o];
					n >= r.level[0] && n <= r.level[1] &&
					function() {
						var t = null,
						n = -1;
						r.districts.forEach(function(i) {
							if ("default" === i.frontier) i.priority > n && (t = i, n = i.priority);
							else {
								var o = e._map.getBounds();
								e._checkIsInDistrict(i.frontier, o, i.rule) && i.priority > n && (t = i, n = i.priority)
							}
						}),
						e._updateLogo(t)
					} ()
				}
			}
		},
		{
			key: "_checkIsInDistrict",
			value: function(t, e, n) {
				var i = this.frontier && this.frontier[t],
				o = !1;
				if (i) if (n === F.CENTER) {
					var r = e.getCenter();
					o = (0, L.isPointInFrontier)(r, i)
				} else if (n === F.ANY) {
					for (var a = (0, L.getBoundsPoints)(e, !0), s = 0; s < a.length; s++) if ((0, L.isPointInFrontier)(a[s], i)) {
						o = !0;
						break
					}
					o = o || (0, L.isFrontierInBounds)(e, i)
				}
				return o
			}
		},
		{
			key: "_updateLogo",
			value: function(t) {
				var e = this._map.layerResource.getFinalUsedMapStyleId(),
				n = void 0;
				n = 1 === e && t.logo_night ? t.logo_night: t.logo ? t.logo: z;
				var i = this._map.getControl(this._map.lgId);
				i && i.changeLogoUrl(n)
			}
		}]),
		e
	} (P.
default);
	e.
default = V
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return l(t) ? o(t) : t
	}
	function o(t) {
		var e = s.enc.Utf8.parse(t),
		n = s.enc.Utf8.parse("d8ab2f7b7a7536a71894084e1c812fd0"),
		i = s.enc.Utf8.parse("c0ab1f54he78k36d"),
		o = s.AES.encrypt(e, n, {
			iv: i
		});
		return encodeURIComponent(o.toString())
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.encrypt = i;
	var r = n(41),
	a = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r),
	s = n(986),
	l = a.
default.isString
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		var n = a(t),
		i = s(e),
		o = n.x,
		r = n.y,
		l = i.polyX,
		u = i.polyY,
		c = u.length - 1,
		f = !1,
		d = void 0;
		for (d = 0; d < u.length; d++)(u[d] < r && u[c] >= r || u[c] < r && u[d] >= r) && (l[d] <= o || l[c] <= o) && (f ^= l[d] + (r - u[d]) / (u[c] - u[d]) * (l[c] - l[d]) < o),
		c = d;
		return f
	}
	function o(t, e) {
		var n = t.getNorthEast(),
		i = t.getSouthWest(),
		o = new l(n.getLat(), i.getLng()),
		r = new l(i.getLat(), n.getLng()),
		a = [n, o, i, r],
		s = n.getLng() > i.getLng() ? n.getLng() : n.getLng() + 360;
		return a.push(new l(n.getLat(), (s + i.getLng()) / 2)),
		a.push(new l(i.getLat(), (s + i.getLng()) / 2)),
		a.push(new l((n.getLat() + i.getLat()) / 2, n.getLng())),
		a.push(new l((n.getLat() + i.getLat()) / 2, i.getLng())),
		e && a.push(t.getCenter()),
		a
	}
	function r(t, e) {
		for (var n = s(e), i = n.latLngArray, o = 0; o < i.length; o++) if (t.contains(i[o])) return ! 0;
		return ! 1
	}
	function a(t) {
		var e = t.getLng().toString(),
		n = t.getLat().toString(),
		i = 20037508.34 * e / 180,
		o = Math.log(Math.tan((90 + n) * Math.PI / 360)) / (Math.PI / 180);
		return o = 20037508.34 * o / 180,
		{
			x: i,
			y: o
		}
	}
	function s(t) {
		var e = t.split(":"),
		n = [],
		i = [],
		o = [];
		if (e.length > 0) for (var r = 0; r < e.length; r++) {
			var a = e[r].split(",");
			n[r] = new l(a[1], a[0]),
			i[r] = 20037508.34 * a[0] / 180,
			o[r] = Math.log(Math.tan((90 + a[1]) * Math.PI / 360)) / (Math.PI / 180) * 20037508.34 / 180
		}
		return {
			latLngArray: n,
			polyX: i,
			polyY: o
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isPointInFrontier = i,
	e.getBoundsPoints = o,
	e.isFrontierInBounds = r;
	var l = n(47)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(393),
	u = n(304),
	c = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this._map = e,
			this._setMapZoomType(n.mapZoomType),
			this._onDblClick = this._onDblClick.bind(this)
		}
		return (0, s.
	default)(t, [{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "enable",
			value: function() {
				this.isEnabled() || (this._map._on("dblclick", this._onDblClick), this._enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				this.isEnabled() && (this._map._off("dblclick", this._onDblClick), this._enabled = !1)
			}
		},
		{
			key: "_setMapZoomType",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : u.MAP_ZOOM_TYPE.DEFAULT;
				return t === u.MAP_ZOOM_TYPE.CENTER ? this._aroundCenter = !0 : (t !== u.MAP_ZOOM_TYPE.DEFAULT && console.error("mapZoomType参数错误，参数应该是MAP_ZOOM_TYPE常量"), this._aroundCenter = !1)
			}
		},
		{
			key: "_onDblClick",
			value: function(t) {
				var e = t.point; (0, l.isResponsible)(this._map, e) && this._map.zoomTo(Math.min(this._map.getZoom() + (t.originalEvent.shiftKey ? -1 : 1), this._map.transform.maxZoom), {
					around: this._aroundCenter ? this._map.getCenter() : t.latLng
				},
				t)
			}
		}]),
		t
	} ();
	t.exports = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(393),
	u = n(28),
	c = n(210),
	f = n(10),
	d = f.bezier(0, 0, .3, 1),
	h = function() {
		function t(e) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			this._moveStartEvent = null,
			f.bindAll(["_onDown", "_onMove", "_onUp", "_onTouchEnd", "_onMouseUp"], this)
		}
		return (0, s.
	default)(t, [{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "isActive",
			value: function() {
				return !! this._active
			}
		},
		{
			key: "enable",
			value: function() {
				this.isEnabled() || (this._el.addEventListener("mousedown", this._onDown), this._el.addEventListener("touchstart", this._onDown), this._enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				this.isEnabled() && (this._el.removeEventListener("mousedown", this._onDown), this._el.removeEventListener("touchstart", this._onDown), this._enabled = !1)
			}
		},
		{
			key: "_onDown",
			value: function(t) {
				if (!this._ignoreEvent(t) && !this.isActive()) {
					this._moveStartEvent = t,
					t.touches && ((0, u.isMiniProgram)() && "pc" !== (0, u.getMiniProgramEnv)() || !(0, u.isMiniProgram)()) ? (window.document.addEventListener("touchmove", this._onMove), window.document.addEventListener("touchend", this._onTouchEnd)) : (window.document.addEventListener("mousemove", this._onMove), window.document.addEventListener("mouseup", this._onMouseUp)),
					window.addEventListener("blur", this._onMouseUp),
					this._active = !1;
					var e = c.mousePos(this._el, t); (0, l.isResponsible)(this._map, e) && (this._pos = e),
					this._inertia = [[Date.now(), this._pos]]
				}
			}
		},
		{
			key: "_onMove",
			value: function(t) {

				console.log(this._map.ismoved1)
				if(this._map.ismoved1==false){
					this._onMouseUp(t);
					
					//this._onUp(t);
					setTimeout(() => {
						this._map.ismoved1=true;
						this._onUp(t);
					}, 0);
					
				}else{
					// this._onUp(t);
				}
				var e = this;
				if (!this._ignoreEvent(t)) {
					if (!this.isActive()) {
						if (!this._isMoved(t)) return;
						this._active = !0,
						this._map.moving = !0,
						this._fireEvent("dragstart", t),
						this._fireEvent("panstart", t),
						this._fireEvent("movestart", t),
						this._map.once("moveend",
						function() {
							e._active = !1
						})
					}
					var n = c.mousePos(this._el, t),
					
					i = this._map;
					 
					 i.stopMoving(),
					  this._drainInertiaBuffer(), 
					  //this._inertia.push([Date.now(), n]),
					   i.transform.setLocationAtPoint(i.unprojectFromContainer(this._pos), n), 
					   this._pos = n,
					
					this._fireEvent("drag", t),
					this._fireEvent("pan", t),
					this._fireEvent("move", t),
					t.preventDefault()
					//123
					t.touches || t.preventDefault()
				}
			}
		},
		{
			key: "_onUp",
			value: function(t) {
				var e = this;
				if (this.isActive()) {
					this._active = !1,
					this._fireEvent("dragend", t),
					this._fireEvent("panend", t),
					this._drainInertiaBuffer();
					var n = function() {
						e._map.moving = !1,
						e._fireEvent("moveend", t)
					},
					i = this._inertia;
					if (i.length < 2) return void n();
					var o = i[i.length - 1],
					r = i[0],
					a = o[1].sub(r[1]),
					s = (o[0] - r[0]) / 1e3;
					if (0 === s || o[1].equals(r[1])) return void n();
					var u = c.mousePos(this._el, t);
					if ((0, l.isResponsible)(this._map, u)) {
						var f = a.mult(.3 / s),
						h = f.mag();
						h > 1400 && (h = 1400, f._unit()._mult(h));
						var v = h / 750,
						p = f.mult( - v / 2);
						this._map.panBy(p, {
							duration: 1e3 * v,
							easing: d,
							noMoveStart: !0
						},
						{
							originalEvent: t
						})
					}
				}
			}
		},
		{
			key: "_onMouseUp",
			value: function(t) {
				this._ignoreEvent(t) || (this._onUp(t), window.document.removeEventListener("mousemove", this._onMove), window.document.removeEventListener("mouseup", this._onMouseUp), window.removeEventListener("blur", this._onMouseUp))
			}
		},
		{
			key: "_onTouchEnd",
			value: function(t) {
				console.log("qweqwe")
				this._ignoreEvent(t) || (this._onUp(t), window.document.removeEventListener("touchmove", this._onMove), window.document.removeEventListener("touchend", this._onTouchEnd))
			}
		},
		{
			key: "_fireEvent",
			value: function(t, e) {
				return this._map._fire(t, {
					originalEvent: e
				})
			}
		},
		{
			key: "_ignoreEvent",
			value: function(t) {
				var e = this._map;
				if (e.boxZoom && e.boxZoom.isActive()) return ! 0;
				if (e.dragRotate && e.dragRotate.isActive()) return ! 0;
				if (t.touches) return t.touches.length > 1;
				if (t.ctrlKey) return ! 0;
				return "mousemove" === t.type ? !1 & t.buttons: t.button && 0 !== t.button
			}
		},
		{
			key: "_drainInertiaBuffer",
			value: function() {
				for (var t = this._inertia,
				e = Date.now(); t.length > 0 && e - t[0][0] > 160;) t.shift()
			}
		},
		{
			key: "_isMoved",
			value: function(t) {
				var e = this._moveStartEvent;
				if (!e) return ! 0;
				var n = void 0,
				i = void 0;
				return t.touches ? (n = e.touches[0], i = t.touches[0]) : (n = e, i = t),
				Math.abs(i.clientX - n.clientX) > 2 || Math.abs(i.clientY - n.clientY) > 2
			}
		}]),
		t
	} ();
	t.exports = h
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(28),
	u = n(41),
	c = i(u),
	f = n(29),
	d = n(210),
	h = n(10),
	v = c.
default.isBoolean,
	p = h.bezier(0, 0, .25, 1),
	_ = function() {
		function t(e) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			this._pitchWithRotate = !0,
			this._moveStartEvent = null,
			this.pitchable = !0,
			this.rotatable = !0,
			h.bindAll(["_onDown", "_onMove", "_onUp"], this)
		}
		return (0, s.
	default)(t, [{
			key: "setPitchable",
			value: function(t) {
				v(t) ? this.pitchable = t: new f.BaseTypeError("pitchable", "Boolean", t).error()
			}
		},
		{
			key: "setRotatable",
			value: function(t) {
				v(t) ? this.rotatable = t: new f.BaseTypeError("rotatable", "Boolean", t).error()
			}
		},
		{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "isActive",
			value: function() {
				return !! this._active
			}
		},
		{
			key: "enable",
			value: function() {
				this.isEnabled() || (this._el.addEventListener("mousedown", this._onDown), this._enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				this.isEnabled() && (this._el.removeEventListener("mousedown", this._onDown), this._enabled = !1)
			}
		},
		{
			key: "_onDown",
			value: function(t) {
				this._ignoreEvent(t) || this.isActive() || (this._moveStartEvent = t, window.document.addEventListener("mousemove", this._onMove), window.document.addEventListener("mouseup", this._onUp), window.addEventListener("blur", this._onUp), this._active = !1, this._inertia = [[Date.now(), this._map.getHeading()]], this._pos = d.mousePos(this._el, t), this._startPos = this._pos, this._center = this._map.transform.centerPoint, t.preventDefault())
			}
		},
		{
			key: "_onMove",
			value: function(t) {
				console.log(1111)
				var e = this;
				if (!this._ignoreEvent(t)) {
					if (!this.isActive()) {
						if (!this._isMoved(t)) return;
						this._active = !0,
						this._map.moving = !0,
						this._fireEvent("dragstart", t),
						this._fireEvent("rotatestart", t),
						this._fireEvent("movestart", t),
						this._pitchWithRotate && this._fireEvent("pitchstart", t),
						this._map.once("moveend",
						function() {
							e._active = !1
						})
					}
					var n = this._map;
					if (n.stopMoving(), this.rotatable || this.pitchable) {
						var i = this._pos,
						o = d.mousePos(this._el, t),
						r = .8 * (i.x - o.x),
						a = -.5 * (i.y - o.y),
						s = n.getHeading() - r,
						l = n.getPitch() - a,
						u = this._inertia,
						c = u[u.length - 1];
						this.rotatable && (this._drainInertiaBuffer(), u.push([Date.now(), n._normalizeHeading(s, c[1])]), this._fireEvent("rotate", t), n.transform.heading = s),
						this.pitchable && (this._fireEvent("pitch", t), n.transform.pitch = l),
						this._fireEvent("drag", t),
						this._fireEvent("move", t),
						this._pos = o
					}
				}
			}
		},
		{
			key: "_onUp",
			value: function(t) {
				var e = this;
				if (!this._ignoreEvent(t) && (window.document.removeEventListener("mousemove", this._onMove), window.document.removeEventListener("mouseup", this._onUp), window.removeEventListener("blur", this._onUp), this.isActive())) {
					this._active = !1,
					this._fireEvent("dragend", t),
					this._fireEvent("rotateend", t),
					this._drainInertiaBuffer();
					var n = this._map,
					i = n.getHeading(),
					o = this._inertia,
					r = function() {
						Math.abs(i) < e._bearingSnap ? n.resetNorth({
							noMoveStart: !0
						},
						{
							originalEvent: t
						}) : (e._map.moving = !1, e._fireEvent("moveend", t)),
						e._pitchWithRotate && e._fireEvent("pitchend", t)
					};
					if (o.length < 2) return void r();
					var a = o[0],
					s = o[o.length - 1],
					l = o[o.length - 2],
					u = n._normalizeHeading(i, l[1]),
					c = s[1] - a[1],
					f = c < 0 ? -1 : 1,
					d = (s[0] - a[0]) / 1e3;
					if (0 === c || 0 === d) return void r();
					var h = Math.abs(c * (.25 / d));
					h > 180 && (h = 180);
					var v = h / 180;
					u += f * h * (v / 2),
					Math.abs(n._normalizeHeading(u, 0)) < this._bearingSnap && (u = n._normalizeHeading(0, u)),
					n.headTo(u, {
						duration: 1e3 * v,
						easing: p,
						noMoveStart: !0
					},
					{
						originalEvent: t
					})
				}
			}
		},
		{
			key: "_fireEvent",
			value: function(t, e) {
				return this._map._fire(t, {
					originalEvent: e
				})
			}
		},
		{
			key: "_ignoreEvent",
			value: function(t) {
				var e = this._map;
				if (e.boxZoom && e.boxZoom.isActive()) return ! 0;
				if (e.dragPan && e.dragPan.isActive()) return ! 0;
				if (t.touches && ((0, l.isMiniProgram)() && "pc" !== (0, l.getMiniProgramEnv)() || !(0, l.isMiniProgram)())) return t.touches.length > 1;
				var n = t.ctrlKey ? 1 : 2,
				i = t.ctrlKey ? 0 : 2,
				o = t.button;
				return "undefined" != typeof InstallTrigger && 2 === t.button && t.ctrlKey && window.navigator.platform.toUpperCase().indexOf("MAC") >= 0 && (o = 0),
				"mousemove" === t.type ? t.buttons & 0 === n: !this.isActive() && o !== i
			}
		},
		{
			key: "_drainInertiaBuffer",
			value: function() {
				for (var t = this._inertia,
				e = Date.now(); t.length > 0 && e - t[0][0] > 160;) t.shift()
			}
		},
		{
			key: "_isMoved",
			value: function(t) {
				console.log(22222)
				var e = this._moveStartEvent;
				if (!e) return ! 0;
				var n = e,
				i = t;
				return Math.abs(i.clientX - n.clientX) > 2 || Math.abs(i.clientY - n.clientY) > 2
			}
		}]),
		t
	} ();
	t.exports = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(106),
	p = i(v),
	_ = n(10),
	m = i(_),
	g = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this));
			return n.transform = t,
			n.bindIdleEvent(),
			n.start(),
			n.isJudging = !1,
			n.timer = null,
			n.duration = 100,
			n.input = void 0,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "start",
			value: function() {
				this.isJudging || (this.input = this.transform.getInput(), this.isJudging = !0, this.judge())
			}
		},
		{
			key: "stop",
			value: function() {
				this.isJudging = !1,
				this.timer && window.clearTimeout(this.timer)
			}
		},
		{
			key: "judge",
			value: function() {
				this.timer = window.setTimeout(function() {
					var t = this.transform.getInput();
					this.inputEqual(t, this.input) ? (this.stop(), this._fire("idle")) : this.judge(),
					this.input = t
				}.bind(this), this.duration)
			}
		},
		{
			key: "bindIdleEvent",
			value: function() {
				this.transform._on("input_change", this.start.bind(this))
			}
		},
		{
			key: "inputEqual",
			value: function(t, e) {
				return ! (!t || !e) && (m.
			default.forIn(t,
				function(n) {
					return ("center" !== n || t[n].lat === e[n].lat && t[n].lng === e[n].lng) && (t[n] === e[n] && void 0)
				}), !0)
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(10),
	u = function() {
		function t(e) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			l.bindAll(["_onTouchStart", "_onTouchMove", "_onTouchEnd"], this),
			this.timer = null,
			this.duration = 750,
			this.buffer = 3,
			this.position = null,
			this.enabled = !1
		}
		return (0, s.
	default)(t, [{
			key: "enable",
			value: function() {
				//123
				 this.enabled || (this._el.addEventListener("touchstart", this._onTouchStart), this._el.addEventListener("touchmove", this._onTouchMove), this._el.addEventListener("touchend", this._onTouchEnd), this.enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				this.enabled && (this._el.removeEventListener("touchstart", this._onTouchStart), this._el.removeEventListener("touchmove", this._onTouchMove), this._el.removeEventListener("touchend", this._onTouchEnd), this.enabled = !1)
			}
		},
		{
			key: "startLongPress",
			value: function() {
				console.log(12306)
				this.timer = window.setTimeout(function() {
					this._map._fire("longpress"),
					this.endLongPress()
				}.bind(this), this.duration)
			}
		},
		{
			key: "endLongPress",
			value: function() {
				window.clearTimeout(this.timer),
				this.position = null
			}
		},
		{
			key: "_onTouchStart",
			value: function(t) {
				console.log(12306)
				this.endLongPress(),
				1 === t.touches.length && (this.startLongPress(), this.position = {
					x: t.touches[0].pageX,
					y: t.touches[0].pageY
				})
			}
		},
		{
			key: "_onTouchMove",
			value: function(t) {
				console.log(44444)
				if (this.position) {
					var e = t.touches[0].pageX - this.position.x,
					n = t.touches[0].pageY - this.position.y;
					Math.sqrt(e * e + n * n) > this.buffer && this.endLongPress()
				}
			}
		},
		{
			key: "_onTouchEnd",
			value: function() {
				this.endLongPress()
			}
		}]),
		t
	} ();
	t.exports = u
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(393),
	u = n(23),
	c = i(u),
	f = n(304),
	d = n(210),
	h = n(10),
	v = n(28),
	p = window.navigator.userAgent.toLowerCase(),
	_ = -1 !== p.indexOf("firefox"),
	m = -1 !== p.indexOf("safari") && -1 === p.indexOf("chrom"),
	g = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			h.bindAll(["_onWheel", "_onTimeout"], this),
			this._setMapZoomType(n.mapZoomType)
		}
		return (0, s.
	default)(t, [{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "enable",
			value: function() {
				this.isEnabled() || (this._el.addEventListener("wheel", this._onWheel, !1), this._el.addEventListener("mousewheel", this._onWheel, !1), this._enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				this.isEnabled() && (this._el.removeEventListener("wheel", this._onWheel), this._el.removeEventListener("mousewheel", this._onWheel), this._enabled = !1)
			}
		},
		{
			key: "_setMapZoomType",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : f.MAP_ZOOM_TYPE.DEFAULT;
				return t === f.MAP_ZOOM_TYPE.CENTER ? this._aroundCenter = !0 : (t !== f.MAP_ZOOM_TYPE.DEFAULT && console.error("mapZoomType参数错误，参数应该是MAP_ZOOM_TYPE常量"), this._aroundCenter = !1)
			}
		},
		{
			key: "_onWheel",
			value: function(t) {
				var e = void 0;
				"wheel" === t.type ? (e = t.deltaY, _ && t.deltaMode === window.WheelEvent.DOM_DELTA_PIXEL && (e /= v.devicePixelRatio), t.deltaMode === window.WheelEvent.DOM_DELTA_LINE && (e *= 40)) : "mousewheel" === t.type && (e = -t.wheelDeltaY, m && (e /= 3));
				var n = v.now(),
				i = n - (this._time || 0);
				this._pos = d.mousePos(this._el, t),
				this._time = n,
				0 !== e && e % 4.000244140625 == 0 ? this._type = "wheel": 0 !== e && Math.abs(e) < 4 ? this._type = "trackpad": i > 400 ? (this._type = null, this._lastValue = e, this._timeout = setTimeout(this._onTimeout.bind(this, t), 40)) : this._type || (this._type = Math.abs(i * e) < 200 ? "trackpad": "wheel", this._timeout && (clearTimeout(this._timeout), this._timeout = null, e += this._lastValue)),
				t.shiftKey && e && (e /= 4),
				this._type && this._zoom( - e, t),
				t.preventDefault()
			}
		},
		{
			key: "_onTimeout",
			value: function(t) {
				this._type = "wheel",
				this._zoom( - this._lastValue, t)
			}
		},
		{
			key: "_zoom",
			value: function(t, e) {
				if (0 !== t) {
					var n = this._map,
					i = d.mousePos(this._el, e);
					if ((0, l.isResponsible)(this._map, i)) {
						var o = 2 / (1 + Math.exp( - Math.abs(t / 100)));
						t < 0 && 0 !== o && (o = 1 / o);
						var r = n.ease ? n.ease.to: n.transform.scrollScale,
						a = h.clamp(n.transform.scaleZoom(r * o), c.
					default.minZoom, c.
					default.maxZoom);
						n.zoomTo(a, {
							duration: "wheel" === this._type ? 200 : 0,
							around: this._aroundCenter ? n.getCenter() : n.unprojectFromContainer(this._pos),
							delayEndEvents: 100,
							smoothEasing: !0
						},
						{
							originalEvent: e
						})
					}
				}
			}
		}]),
		t
	} ();
	t.exports = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(210),
	u = n(10),
	c = function() {
		function t(e) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			u.bindAll(["_onStart", "_onMove", "_onEnd"], this)
		}
		return (0, s.
	default)(t, [{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "enable",
			value: function(t) {
				//123
				this.isEnabled() || (this._el.addEventListener("touchstart", this._onStart, !1), this._enabled = !0, this._aroundCenter = t && "center" === t.around)
			}
		},
		{
			key: "disable",
			value: function() {
				//123
				this.isEnabled() && (this._el.removeEventListener("touchstart", this._onStart), this._enabled = !1)
			}
		},
		{
			key: "isActive",
			value: function() {
				return !! this._active
			}
		},
		{
			key: "_onStart",
			value: function(t) {
				console.log(12306)
				if (!this._ignoreEvent(t)) {
					var e = l.mousePos(this._el, t.touches[0]),
					n = l.mousePos(this._el, t.touches[1]);
					this._posP0 = e,
					this._posP1 = n,
					this._startPitch = this._map.transform.pitch,
					this._gestureIntent = void 0,
					this._inertia = [],
					this._active = !1,
					window.document.addEventListener("touchmove", this._onMove, !1),
					window.document.addEventListener("touchend", this._onEnd, !1)
				}
			}
		},
		{
			key: "_onMove",
			value: function(t) {
				console.log(55555)
				if (!this._ignoreEvent(t)) {
					this.isActive() || (this._active = !0);
					var e = l.mousePos(this._el, t.touches[0]),
					n = l.mousePos(this._el, t.touches[1]),
					i = this._posP0.sub(e),
					o = this._posP1.sub(n),
					r = .5 * (i.y + o.y),
					a = this._map;
					if (this._posP0 = e, this._posP1 = n, this._gestureIntent) a.transform.pitch = a.getPitch() - r,
					this._drainInertiaBuffer(),
					this._inertia.push([Date.now(), r]),
					this._fireEvent("pitch", t),
					this._fireEvent("move", t);
					else {
						Math.abs(Math.abs(i.x) - Math.abs(o.x)) < 2 && (this._gestureIntent = "pitch", this._startPitch = a.transform.pitch)
					}
					t.preventDefault()
				}
			}
		},
		{
			key: "_onEnd",
			value: function() {
				this._active = !1,
				window.document.removeEventListener("touchmove", this._onMove),
				window.document.removeEventListener("touchend", this._onEnd),
				this._drainInertiaBuffer()
			}
		},
		{
			key: "_fireEvent",
			value: function(t, e) {
				return this._map._fire(t, {
					originalEvent: e
				})
			}
		},
		{
			key: "_ignoreEvent",
			value: function(t) {
				var e = this._map;
				return ! (!e.dragPan || !e.dragPan.isActive()) || (!(!e.touchZoomRotate || !e.touchZoomRotate.isActive()) || (t.touches ? t.touches.length < 2 : void 0))
			}
		},
		{
			key: "_drainInertiaBuffer",
			value: function() {
				for (var t = this._inertia,
				e = Date.now(); t.length > 2 && e - t[0][0] > 160;) t.shift()
			}
		}]),
		t
	} ();
	t.exports = c
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(304),
	u = n(210),
	c = n(10),
	f = c.bezier(0, 0, .15, 1),
	d = function() {
		function t(e, n) { (0, r.
		default)(this, t),
			this._map = e,
			this._el = e.getContainer(),
			c.bindAll(["_onStart", "_onMove", "_onEnd"], this),
			this._setMapZoomType(n.mapZoomType)
		}
		return (0, s.
	default)(t, [{
			key: "isEnabled",
			value: function() {
				return !! this._enabled
			}
		},
		{
			key: "isActive",
			value: function() {
				return !! this._active
			}
		},
		{
			key: "enable",
			value: function() {
				//123
				this.isEnabled() || (this._el.addEventListener("touchstart", this._onStart, !1), this._enabled = !0)
			}
		},
		{
			key: "disable",
			value: function() {
				//123
				this.isEnabled() && (this._el.removeEventListener("touchstart", this._onStart), this._enabled = !1)
			}
		},
		{
			key: "disableRotation",
			value: function() {
				this._rotationDisabled = !0
			}
		},
		{
			key: "enableRotation",
			value: function() {
				this._rotationDisabled = !1
			}
		},
		{
			key: "_setMapZoomType",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : l.MAP_ZOOM_TYPE.DEFAULT;
				return t === l.MAP_ZOOM_TYPE.CENTER ? this._aroundCenter = !0 : (t !== l.MAP_ZOOM_TYPE.DEFAULT && console.error("mapZoomType参数错误，参数应该是MAP_ZOOM_TYPE常量"), this._aroundCenter = !1)
			}
		},
		{
			key: "_onStart",
			value: function(t) {

				if (2 === t.touches.length) {
					var e = u.mousePos(this._el, t.touches[0]),
					n = u.mousePos(this._el, t.touches[1]);
					this._posP0 = e,
					this._posP1 = n,
					this._startVec = e.sub(n),
					this._startScale = this._map.transform.scrollScale,
					this._startHeading = this._map.transform.heading,
					this._gestureIntent = void 0,
					this._inertia = [],
					this._active = !1,
					window.document.addEventListener("touchmove", this._onMove, !1),
					window.document.addEventListener("touchend", this._onEnd, !1)
				}
			}
		},
		{
			key: "_onMove",
			value: function(t) {
				console.log(666666)
				if (2 === t.touches.length) {
					var e = u.mousePos(this._el, t.touches[0]),
					n = u.mousePos(this._el, t.touches[1]),
					i = e.add(n).div(2),
					o = e.sub(n),
					r = o.mag() / this._startVec.mag(),
					a = this._rotationDisabled ? 0 : 180 * o.angleWith(this._startVec) / Math.PI,
					s = this._map;
					if (this._gestureIntent) {
						var l = {};
						"rotate" === this._gestureIntent && (l.heading = this._startHeading + a),
						"zoom" === this._gestureIntent && (l.zoom = s.transform.scaleZoom(this._startScale * r)),
						s.stopMoving(),
						this._drainInertiaBuffer(),
						this._inertia.push([Date.now(), r, i]),
						s.easeTo(l, {
							duration: 0,
							around: this._aroundCenter ? s.getCenter() : s.unprojectFromContainer(i)
						},
						{
							originalEvent: t
						}),
						this._fireEvent("rotate", t),
						this._fireEvent("move", t)
					} else {
						var c = Math.abs(1 - r) > .15;
						Math.abs(a) > 8 ? this._gestureIntent = "rotate": c && (this._gestureIntent = "zoom"),
						this._gestureIntent && (this._startVec = o, this._startScale = s.transform.scrollScale, this._startHeading = s.transform.heading, this.isActive() || (this._active = !0))
					}
					t.preventDefault()
				}
			}
		},
		{
			key: "_onEnd",
			value: function(t) {
				window.document.removeEventListener("touchmove", this._onMove),
				window.document.removeEventListener("touchend", this._onEnd),
				this._drainInertiaBuffer(),
				this._active = !1;
				var e = this._inertia,
				n = this._map;
				if (e.length < 2) return void n.snapToNorth({},
				{
					originalEvent: t
				});
				var i = e[e.length - 1],
				o = e[0],
				r = n.transform.scaleZoom(this._startScale * i[1]),
				a = n.transform.scaleZoom(this._startScale * o[1]),
				s = r - a,
				l = (i[0] - o[0]) / 1e3,
				u = i[2];
				if (0 === l || r === a) return void n.snapToNorth({},
				{
					originalEvent: t
				});
				var c = .15 * s / l;
				Math.abs(c) > 2.5 && (c = c > 0 ? 2.5 : -2.5);
				var d = 1e3 * Math.abs(c / (12 * .15));
				n.easeTo({},
				{
					duration: d,
					easing: f,
					around: this._aroundCenter ? n.getCenter() : n.unprojectFromContainer(u)
				},
				{
					originalEvent: t
				})
			}
		},
		{
			key: "_fireEvent",
			value: function(t, e) {
				return this._map._fire(t, {
					originalEvent: e
				})
			}
		},
		{
			key: "_drainInertiaBuffer",
			value: function() {
				for (var t = this._inertia,
				e = Date.now(); t.length > 2 && e - t[0][0] > 160;) t.shift()
			}
		},
		{
			key: "_ignoreEvent",
			value: function(t) {
				var e = this._map;
				return ! (!e.touchTilt || !e.touchTilt.isActive()) || (t.touches ? t.touches.length < 2 : void 0)
			}
		}]),
		t
	} ();
	t.exports = d
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(28),
	u = i(l),
	c = n(748),
	f = i(c),
	d = n(509),
	h = function() {
		function t() {
			var e = this; (0, r.
		default)(this, t),
			this.fps = 6,
			this.now = null,
			this.then = null,
			this.interval = 1e3 / this.fps,
			this.delta = null,
			this._frameDeadline = 0,
			this._channel = new MessageChannel,
			this.scheduleTaskQueue = new d.ScheduleTaskQueue,
			this.callbacks = {},
			this._channel.port1.onmessage = function() {
				if (e.scheduleTaskQueue) for (var t = e._frameDeadline - u.
			default.now(), n = e.scheduleTaskQueue.first; n && (t > 1 || n.isTimeout());) {
					var i = n;
					n = n.next,
					i && i.runTask(),
					t = e._frameDeadline - u.
				default.now()
				}
			}
		}
		return (0, s.
	default)(t, [{
			key: "_initStats",
			value: function() {
				this.stats = new f.
			default,
				this.stats.domElement.style.position = "absolute",
				this.stats.domElement.style.right = "14px",
				this.stats.domElement.style.bottom = "140px",
				this.stats.domElement.style.zIndex = 1e6,
				document.body.appendChild(this.stats.domElement)
			}
		},
		{
			key: "updateFPS",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 30;
				this.fps = Math.max(0, Math.min(t, 60)),
				this.interval = 0 === this.fps ? 1 / 0 : 1e3 / this.fps
			}
		},
		{
			key: "setCallback",
			value: function(t) {
				this.addCallback("singlecb", t, !0)
			}
		},
		{
			key: "addCallback",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
				"function" == typeof e && (this.callbacks[t] ? n && (this.callbacks[t] = e) : this.callbacks[t] = e)
			}
		},
		{
			key: "removeCallback",
			value: function(t) {
				delete this.callbacks[t]
			}
		},
		{
			key: "clearAllCallbacks",
			value: function() {
				this.callbacks = {}
			}
		},
		{
			key: "start",
			value: function() {
				this._animFrameId || this._destroyed || (this.then = u.
			default.now(), this.tick())
			}
		},
		{
			key: "tickOnce",
			value: function() {
				var t = this;
				this.isUpdating || (0, u.
			default)(function(e) {
					t.callback && t.callback(e)
				})
			}
		},
		{
			key: "tick",
			value: function(t) {
				var e = this;
				if (this._animFrameId = u.
			default.frame(function(t) {
					e.tick(t)
				}), this.now = u.
			default.now(), this.delta = this.now - this.then, this.delta > this.interval) {
					this.stats && this.stats.update(),
					this.then = this.now - this.delta % this.interval,
					this._frameDeadline = t + this.interval;
					for (var n in this.callbacks) this.callbacks[n](t);
					this._channel.port2.postMessage(null)
				}
			}
		},
		{
			key: "stop",
			value: function() {
				u.
			default.cancelFrame(this._animFrameId),
				this._animFrameId = null
			}
		},
		{
			key: "destroy",
			value: function() {
				this.stop(),
				this.clearAllCallbacks();
				for (var t = this.scheduleTaskQueue.first; t;) {
					var e = t;
					t = t.next,
					e.remove()
				}
				this.scheduleTaskQueue = null,
				this._destroyed = !0
			}
		},
		{
			key: "isUpdating",
			get: function() {
				return !! this._animFrameId
			}
		}]),
		t
	} ();
	e.
default = h
},
function(t, e, n) {
	"use strict";
	var i = function() {
		var t = 0,
		e = 0,
		n = Date.now(),
		i = n,
		o = 0,
		r = 1e3,
		a = 0,
		s = 0,
		l = 1e3,
		u = 0,
		c = 0,
		f = 0,
		d = document.createElement("div");
		d.id = "stats",
		d.addEventListener("mousedown",
		function(t) {
			t.preventDefault(),
			f += 1,
			x(f % 2)
		},
		!1),
		d.style.cssText = "width:80px;opacity:0.9;cursor:pointer";
		var h = document.createElement("div");
		h.id = "fps",
		h.style.cssText = "padding:0 0 3px 3px;text-align:left;background-color:#002",
		d.appendChild(h);
		var v = document.createElement("div");
		v.id = "fpsText",
		v.style.cssText = "color:#0ff;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px",
		v.innerHTML = "FPS",
		h.appendChild(v);
		var p = document.createElement("div");
		for (p.id = "fpsGraph", p.style.cssText = "position:relative;width:74px;height:30px;background-color:#0ff", h.appendChild(p); 74 > p.children.length;) {
			var _ = document.createElement("span");
			_.style.cssText = "width:1px;height:30px;float:left;background-color:#113",
			p.appendChild(_)
		}
		var m = document.createElement("div");
		m.id = "ms",
		m.style.cssText = "padding:0 0 3px 3px;text-align:left;background-color:#020;display:none",
		d.appendChild(m);
		var g = document.createElement("div");
		g.id = "msText",
		g.style.cssText = "color:#0f0;font-family:Helvetica,Arial,sans-serif;font-size:9px;font-weight:bold;line-height:15px",
		g.innerHTML = "MS",
		m.appendChild(g);
		var y = document.createElement("div");
		for (y.id = "msGraph", y.style.cssText = "position:relative;width:74px;height:30px;background-color:#0f0", m.appendChild(y); 74 > y.children.length;) _ = document.createElement("span"),
		_.style.cssText = "width:1px;height:30px;float:left;background-color:#131",
		y.appendChild(_);
		var x = function(t) {
			switch (f = t) {
			case 0:
				h.style.display = "block",
				m.style.display = "none";
				break;
			case 1:
				h.style.display = "none",
				m.style.display = "block"
			}
		};
		return {
			domElement: d,
			setMode: x,
			begin: function() {
				n = Date.now()
			},
			end: function() {
				var f = Date.now();
				o = f - n,
				r = Math.min(r, o),
				a = Math.max(a, o),
				g.textContent = o + " MS (" + r + "-" + a + ")";
				var d = Math.min(30, 30 - o / 200 * 30);
				return y.appendChild(y.firstChild).style.height = d + "px",
				c += 1,
				f > i + 1e3 && (s = Math.round(1e3 * c / (f - i)), l = Math.min(l, s), u = Math.max(u, s), e += s, v.textContent = s + " FPS (" + l + "-" + u + ") Avg: " + parseInt(e / t), d = Math.min(30, 30 - s / 100 * 30), p.appendChild(p.firstChild).style.height = d + "px", i = f, c = 0),
				t += 1,
				f
			},
			update: function() {
				n = this.end()
			}
		}
	};
	t.exports = i
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(143),
	p = n(41),
	_ = i(p),
	m = n(29),
	g = n(511),
	y = n(10),
	x = y.uniqueId,
	b = 3,
	S = 20,
	w = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this)),
			i = t.id,
			o = void 0 === i ? x() : i,
			a = t.zIndex,
			l = void 0 === a ? 0 : a,
			u = t.minZoom,
			c = void 0 === u ? b: u,
			d = t.maxZoom,
			h = void 0 === d ? S: d;
			return n.id = o,
			n.level = v.LAYER_LEVEL.OVERLAY_AA,
			n.zIndex = 0,
			n.rank = (0, v.getRank)(n.level, n.zIndex),
			n.setZIndex(l),
			n.setMinZoom(c),
			n.setMaxZoom(h),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "getId",
			value: function() {
				return this.id
			}
		},
		{
			key: "addTo",
			value: function(t) {
				return t.addVisualPlugin(this),
				this.map = t,
				this.gl = t.renderEngine.gl,
				this.transform = t.transform,
				this
			}
		},
		{
			key: "remove",
			value: function() {
				return this.map && this.map.removeVisualPlugin(this.id),
				this.map = null,
				this.gl = null,
				this.transform = null,
				this
			}
		},
		{
			key: "redraw",
			value: function() {
				return this.map && this.map._render(),
				this
			}
		},
		{
			key: "draw",
			value: function() {}
		},
		{
			key: "setZIndex",
			value: function(t) {
				return _.
			default.isNumber(t) ? t < 0 ? (console.error("zIndex希望设置为非负数,实际值为: " + t), this) : (this.zIndex = t, this.rank = (0, v.getRank)(this.level, this.zIndex), this) : (new m.BaseTypeError("zIndex", "Number", t).error(), this)
			}
		},
		{
			key: "getZIndex",
			value: function() {
				return this.zIndex
			}
		},
		{
			key: "setMinZoom",
			value: function(t) {
				return _.
			default.isNumber(t) ? t < 0 ? (console.error("minZoom希望设置为非负数,实际值为: " + t), this) : (this.minZoom = t, this) : (new m.BaseTypeError("minZoom", "Number", t).error(), this)
			}
		},
		{
			key: "getMinZoom",
			value: function() {
				return this.minZoom
			}
		},
		{
			key: "setMaxZoom",
			value: function(t) {
				return _.
			default.isNumber(t) ? t < 0 ? (console.error("maxZoom希望设置为非负数,实际值为: " + t), this) : (this.maxZoom = t, this) : (new m.BaseTypeError("maxZoom", "Number", t).error(), this)
			}
		},
		{
			key: "getMaxZoom",
			value: function() {
				return this.maxZoom
			}
		},
		{
			key: "setLevel",
			value: function(t) {
				this.level = t,
				this.rank = (0, v.getRank)(t, this.zIndex)
			}
		}]),
		e
	} (g);
	t.exports = w
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var o = n(17),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(655),
	f = i(c),
	d = n(66),
	h = n(23),
	v = i(h),
	p = n(10),
	_ = i(p),
	m = function() {
		function t(e) { (0, s.
		default)(this, t),
			this.painter = e,
			this.renderLayers = null,
			this._destroyed = !1,
			this._needReplace = !0,
			this.gradualPlacementArr = []
		}
		return (0, u.
	default)(t, [{
			key: "updatePlace",
			value: function() {
				this._needReplace = !0
			}
		},
		{
			key: "resize",
			value: function(t, e) {
				this._destroyed || (this.width = t, this.height = e, this.painter.resize(t, e))
			}
		},
		{
			key: "update",
			value: function(t, e) {
				var n = this;
				if (!this._destroyed) {
					var i = t.getDrawLayers().filter(function(t) {
						return ! t.isHidden(e.zoom)
					}),
					o = t.getPlugins(),
					a = [],
					s = {};
					i.forEach(function(i) {
						var o = i.filter,
						l = i.sourceId,
						u = t.getSource(l);
						if (u) {
							var c = u.getDrawItems();
							if (0 !== (0, r.
						default)(c).length) {
								var f = {};
								f.tileSize = i.tileSize,
								f.type = i.type,
								f.rank = i.rank,
								f.id = i.id,
								f.opacity = i.opacity,
								"LABEL" !== i.type && "MARKER" !== i.type || (f._enableCollision = i._enableCollision),
								i.type === d.RENDER_LAYER_TYPE.grayTile && (f.colorMap = i.colorMap, f.rgbaFormatter = i.rgbaFormatter),
								"MASK" === i.type && (f.isMaskReverse = i.isMaskReverse);
								var h = [];
								_.
							default.forIn(c,
								function(t, r) {
									var a = r.getQueryData(o),
									l = r.coord;
									if (a) {
										var u = {},
										c = void 0,
										f = void 0;
										if (l.isVirtualCoord()) c = 0,
										f = 0;
										else {
											if ((l.z - e.tileZoom >= 4 || e.tileZoom - l.z >= 5) && e.tileZoom <= v.
										default.maxDataZoom && !(i.maxDataZoom < v.
										default.maxDataZoom && l.z <= i.maxDataZoom - 1) && i.type !== d.RENDER_LAYER_TYPE.grayTile) return;
											var p = e.projectionTopLeft(l.z);
											c = l.wrapXAroundCenter(e.center) * i.tileSize - p.x,
											f = l.y * i.tileSize - p.y
										}
										u.offset = {
											x: c,
											y: f
										},
										u.id = l.id,
										u.coordX = l.x,
										u.coordY = l.y,
										u.coordZ = l.z,
										u.size = r.tileSize;
										var _ = u.id in a ? a[u.id] : a;
										if (_ && _.children && Math.round(e.zoom) >= v.
									default.maxDataZoom) {
											var m = _.children[Math.round(e.zoom)]; ! m || n.painter.textCache && [d.BASE_LAYER_TYPE.point, d.BASE_LAYER_TYPE.label].includes(o) || (_ = m)
										}
										if (u.features = _, u.scale = l.isVirtualCoord() ? 1 : e.calCoordsScale(l.z), !s[u.id]) {
											var g = {};
											g.offset = u.offset,
											g.scale = u.scale,
											g.tileSize = i.tileSize,
											s[u.id] = g
										}
										h.push(u)
									}
								}),
								f.tiles = h,
								a.push(f)
							}
						}
					}),
					o.forEach(function(t) {
						a.push({
							type: d.RENDER_LAYER_TYPE.visualPlugin,
							visualPlugin: t,
							rank: t.rank
						})
					}),
					a.sort(function(t, e) {
						return t.rank - e.rank
					}),
					this.renderLayers = a;
					var l = !1;
					if (this.painter.preRender(e, s), (!this.gradualPlacement || this.gradualPlacement.isDone() && !this.gradualPlacement.isFading() && this._needReplace) && (this.gradualPlacement = new f.
				default(this.painter.textCache, this.renderLayers), this._needReplace = !1, this.gradualPlacementArr.push(this.gradualPlacement), this.gradualPlacementArr.length > 3)) {
						var u = this.gradualPlacementArr[0];
						if (u.getInUse && u.getInUse()) return;
						this.gradualPlacementArr.shift(),
						u.destroy(),
						u = null
					}
					return this.gradualPlacement.isDone() || (this.painter.painters.symbol && this.painter.painters.symbol.preDraw({
						iconsLoader: t.iconsLoader
					}), this.gradualPlacement.placement.updateVersion(), this.gradualPlacement.continuePlacement(this.renderLayers, this.painter.tilesMatrix, this.painter.camera, e), this.gradualPlacement.isDone() ? this.placement = this.gradualPlacement.batchUpdate(this.placement) : (this.lastGradualPlacement = this.gradualPlacement, l = !0, this.placement || (this.placement = this.gradualPlacement.placement))),
					this.gradualPlacement && this.gradualPlacement.placement !== this.placement && this.placement.batchUpdateShow(),
					this.painter.render(this.renderLayers, e, this.placement, {
						fadeChange: this.placement.getFadeChange(),
						iconsLoader: t.iconsLoader
					}),
					l
				}
			}
		},
		{
			key: "resetGradualPlacement",
			value: function() {
				this.gradualPlacement && (this.gradualPlacement.destroy(), this.gradualPlacement = null)
			}
		},
		{
			key: "render",
			value: function(t, e) {
				if (!this._destroyed) return this.update(t, e)
			}
		},
		{
			key: "destroy",
			value: function() {
				this._destroyed || (this.gradualPlacement && (this.gradualPlacement.destroy(), this.gradualPlacement = null), this.painter = null, this.renderLayers = null, this._destroyed = !0, this.gradualPlacementArr = [])
			}
		},
		{
			key: "getPoi",
			value: function(t) {
				return this.placement ? this.placement.getPoi(t) : null
			}
		}]),
		t
	} ();
	t.exports = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
		n = JSON.parse((0, s.
	default)(t));
		return m.
	default.forIn(n,
		function(t, n) {
			n.x *= e,
			n.y *= e
		}),
		n
	}
	function r(t, e) {
		var n = t * Math.PI / 180,
		i = e / 2 * Math.PI / 180;
		return (Math.cos(n) * Math.tan(n + i) - Math.sin(n)) / Math.tan(i)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(113),
	s = i(a),
	l = n(16),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(107),
	p = n(110),
	_ = n(10),
	m = i(_),
	g = n(112),
	y = n(23),
	x = i(y),
	b = function() {
		function t() {
			var e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
			n = e.map,
			i = e.view,
			o = e.look,
			r = e.scale,
			a = e.offset; (0, f.
		default)(this, t),
			this.version = 0,
			this.look = o,
			this.view = i,
			this.map = n,
			this.scale = r,
			this.lookPoint = new v.Vector3(o.slice(0, 3)),
			this.lightPosition = new v.Vector3([0, 0, 0]);
			var s = i.right - i.left,
			l = i.top - i.bottom;
			this.resolution = {
				width: s,
				height: l
			},
			this.pMatrix = new v.Matrix4,
			this.vMatrix = new v.Matrix4,
			this.vInverseMatrix = new v.Matrix4,
			this.rotateMatrix = new v.Matrix4,
			this.scaleMatrix = new v.Matrix4,
			this.matrixStore = new p.Store("matrixStore", 1e4),
			this.fovy = 30,
			this.distance = Math.floor(o[2] = i.top / Math.tan(this.fovy / 2 * Math.PI / 180)),
			this.far = 4 * this.distance,
			this.near = 1;
			var u = a.x,
			c = void 0 === u ? 0 : u,
			d = a.y,
			h = void 0 === d ? 0 : d;
			this.pMatrix.setPerspective(this.fovy, s / l, this.near, this.far, 2 * c / s, -2 * h / l),
			this.offset = {
				x: c,
				y: h
			},
			this.setLookAt(o),
			this.cache = {},
			this.fogPitch = 45
		}
		return (0, h.
	default)(t, [{
			key: "setView",
			value: function(t) {
				if (arguments.length > 1 && void 0 !== arguments[1] && arguments[1]) this.updateVersion();
				else for (var e in t) if (t.hasOwnProperty(e) && this.view[e] !== t[e]) {
					this.updateVersion();
					break
				}
				this.view = t;
				var n = t.right - t.left,
				i = t.top - t.bottom,
				o = this.fovy,
				r = this.near,
				a = this.offset;
				this.distance = Math.floor(t.top / Math.tan(o / 2 * Math.PI / 180)),
				this.far = 4 * this.distance,
				this.resolution.width = n,
				this.resolution.height = i,
				this.pMatrix.setPerspective(o, n / i, r, this.far, 2 * a.x / n, -2 * a.y / i),
				this._setPVMatrix()
			}
		},
		{
			key: "setOffset",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {
					x: 0,
					y: 0
				};
				m.
			default.deepEqual(t, this.offset) || (this.offset = t, this.setView(this.view, !0))
			}
		},
		{
			key: "setLookAt",
			value: function(t) {
				for (var e = 0,
				n = t.length; e < n; e++) if (this.look[e] !== this.look[e]) {
					this.updateVersion();
					break
				}
				this.look = t,
				this._setPVMatrix()
			}
		},
		{
			key: "setRotate",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0;
				e %= 360,
				n %= 360,
				t === this.pitch && e === this.heading && n === this.roll || this.updateVersion(),
				(t || 0 === t) && (t = Math.min(Math.max(t, 0), x.
			default.maxPitch)),
				this.heading = e,
				this.pitch = t,
				this.roll = n,
				this._setPVMatrix()
			}
		},
		{
			key: "setScale",
			value: function(t) {
				t !== this.scale && (this.updateVersion(), this.scaleMatrix.setScale(t, t, t), this.scale = t, this._setPVMatrix())
			}
		},
		{
			key: "canvasCoordsToGLCoords",
			value: function(t, e) {
				return (0, g.fromScreenToNdc)(t, e, this.resolution)
			}
		},
		{
			key: "glCoordsToCanvasCoords",
			value: function(t, e) {
				return (0, g.fromNdcToScreen)(t, e, this.resolution)
			}
		},
		{
			key: "getScreenCoordsByCustomMatrix",
			value: function(t, e) {
				var n = (0, g.getScreenCoordsByCustomMatrix)(t, e, this.resolution);
				return (0, u.
			default)({},
				n, {
					version: this.version
				})
			}
		},
		{
			key: "getScreenCoordsFromPixel",
			value: function(t) {
				var e = new v.Vector4(t.x, t.y, 0, 1);
				return this.getScreenCoordsByCustomMatrix(this.pvMatrix, e)
			}
		},
		{
			key: "getScreenCoordsFromWorld",
			value: function(t) {
				return this.getScreenCoordsByCustomMatrix(this.pvMatrix, t)
			}
		},
		{
			key: "getBounds",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
				e = this.cache,
				n = this.version,
				i = this.pvMatrix;
				if (e.bounds && e.bounds.version === n) return o(e.bounds.value, 1 / t);
				var r = Math.min(this.getFogEdge()[1], 1),
				a = {
					centerDelta: {
						x: 0,
						y: 0
					},
					leftTop: (0, g.getZPlaneCoordsByCustomMatrix)(i, {
						x: -1,
						y: r
					}),
					rightTop: (0, g.getZPlaneCoordsByCustomMatrix)(i, {
						x: 1,
						y: r
					}),
					leftBottom: (0, g.getZPlaneCoordsByCustomMatrix)(i, {
						x: -1,
						y: -1
					}),
					rightBottom: (0, g.getZPlaneCoordsByCustomMatrix)(i, {
						x: 1,
						y: -1
					})
				};
				return this.cache.bounds = {
					version: this.version,
					value: a
				},
				o(a, 1 / t)
			}
		},
		{
			key: "getFogEdge",
			value: function() {
				var t = this.fogPitch;
				if (this.pitch < t - 5) return [1, 1 / 0, 1, 1];
				if (this.cache.fogEdge && this.cache.fogEdge.version === this.version) return this.cache.fogEdge.value;
				var e = this.map.transform._zoom > 18 ? this.map.transform._zoom - 17 : 1,
				n = this.view.top / this.scale * r(t, this.fovy) * e,
				i = n * Math.sin(this.heading * Math.PI / 180),
				o = n * Math.cos(this.heading * Math.PI / 180),
				a = this.pvMatrix.multiplyVector4({
					elements: [i, o, 0, 1]
				}).elements,
				s = a.map(function(t) {
					return t / a[3]
				});
				return this.cache.fogEdge = {
					version: this.version,
					value: s
				},
				s
			}
		},
		{
			key: "getLookPosition",
			value: function() {
				return this.vInverseMatrix.multiplyVector3(this.lookPoint)
			}
		},
		{
			key: "getLightPosition",
			value: function(t) {
				return this.vInverseMatrix.multiplyVector3(t || this.lightPosition)
			}
		},
		{
			key: "_setPVMatrix",
			value: function() {
				var t = new v.Matrix4,
				e = new v.Matrix4;
				e.translate(0, 0, -this.distance),
				e.rotate( - this.pitch, 1, 0, 0),
				e.rotate(this.roll, 0, 1, 0),
				e.rotate(this.heading, 0, 0, 1),
				e.scale(this.scale, this.scale, this.scale),
				e.translate(0, 0, 0),
				this.vMatrix = e,
				this.vInverseMatrix.set(e).invert(),
				t.multiply(this.pMatrix).multiply(e),
				this.pvMatrix = t
			}
		},
		{
			key: "updateVersion",
			value: function() {
				this.version += 1
			}
		},
		{
			key: "destroy",
			value: function() {
				this.version = 0,
				this.look = null,
				this.view = null,
				this.map = null,
				this.scale = null,
				this.lookPoint = null,
				this.lightPosition = null,
				this.resolution = null,
				this.pMatrix = null,
				this.vMatrix = null,
				this.vInverseMatrix = null,
				this.rotateMatrix = null,
				this.scaleMatrix = null,
				this.matrixStore.clear(),
				this.matrixStore = null,
				this.fovy = null,
				this.distance = null,
				this.far = null,
				this.near = null,
				this.cache = null
			}
		}]),
		t
	} ();
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t[0],
		n = [];
		return n = e ? e.color: [0, 0, 0],
		{
			lighting_uAmbientColor: n
		}
	}
	function r(t) {
		var e = [],
		n = [];
		return t.forEach(function(t) {
			e.push.apply(e, (0, l.
		default)(t.direction)),
			n.push.apply(n, (0, l.
		default)(t.color))
		}),
		t.length || (e.push(0, 0, 0), n.push(0, 0, 0)),
		{
			lighting_uDirDirection: e,
			lighting_uDirColor: n,
			lighting_uDirCount: t.length
		}
	}
	function a(t, e) {
		var n = [],
		i = [],
		o = [];
		return t.forEach(function(t) {
			var r = e.latLngToCenterLocalPixel(t.position),
			a = 1 / (0, S.getSpatialResolution)(e.zoom),
			s = a * t.height;
			n.push(r.x, r.y, s),
			i.push.apply(i, (0, l.
		default)(t.attenuation)),
			o.push.apply(o, (0, l.
		default)(t.color))
		}),
		t.length || (n.push(0, 0, 0), i.push(0, 0, 0), o.push(0, 0, 0)),
		{
			lighting_uPointPosition: n,
			lighting_uPointAtt: i,
			lighting_uPointColor: o,
			lighting_uPointCount: t.length
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(24),
	l = i(s),
	u = n(16),
	c = i(u),
	f = n(222),
	d = i(f),
	h = n(0),
	v = i(h),
	p = n(1),
	_ = i(p),
	m = n(753),
	g = i(m),
	y = n(341),
	x = n(512),
	b = i(x),
	S = n(112),
	w = n(107),
	E = n(10),
	T = i(E),
	A = function() {
		function t() {
			var e; (0, v.
		default)(this, t),
			this.lights = (e = {},
			(0, d.
		default)(e, y.LIGHT_TYPE.AMBIENT, []), (0, d.
		default)(e, y.LIGHT_TYPE.DIRECTION, []), (0, d.
		default)(e, y.LIGHT_TYPE.POINT, []), e),
			this.setConfig(),
			this._uniforms = {},
			this._cameraVer = null
		}
		return (0, _.
	default)(t, [{
			key: "setConfig",
			value: function(t) {
				var e = this,
				n = (0, c.
			default)({},
				g.
			default, t),
				i = n.active,
				o = n.toneMapping,
				r = n.intensity,
				a = n.lightList,
				s = n.shadowOptions;
				return i ? this.enable() : this.disable(),
				this._toneMapping = o,
				this.setIntensity(r),
				this.clearLights(),
				a && a.forEach(function(t) {
					e.addLight(new b.
				default(t))
				}),
				this.setShadowOptions(s),
				this
			}
		},
		{
			key: "addLight",
			value: function(t) {
				var e = t.type;
				return this.lights[e] && this.lights[e].length < 4 ? this.lights[e].push(t) : console.warn(e + "类型光源暂不支持，或已达上限，不可添加。"),
				this
			}
		},
		{
			key: "removeLight",
			value: function(t) {
				var e = this.lights[t.type],
				n = e.findIndex(function(e) {
					return e.id === t.id
				});
				return n >= 0 && e.splice(n, 1),
				this
			}
		},
		{
			key: "clearLights",
			value: function() {
				var t = this;
				return T.
			default.forIn(this.lights,
				function(e) {
					t.lights[e] = []
				}),
				this
			}
		},
		{
			key: "getLights",
			value: function() {
				var t = [];
				return T.
			default.forIn(this.lights,
				function(e, n) {
					t.push.apply(t, (0, l.
				default)(n))
				}),
				t
			}
		},
		{
			key: "setIntensity",
			value: function(t) {
				return this.intensity = (0, c.
			default)({
					ambient:
					0,
					diffuse: 0,
					specular: 0
				},
				this.intensity, t),
				this
			}
		},
		{
			key: "getIntensity",
			value: function() {
				return this.intensity
			}
		},
		{
			key: "enable",
			value: function() {
				return this.active = !0,
				this
			}
		},
		{
			key: "disable",
			value: function() {
				return this.active = !1,
				this
			}
		},
		{
			key: "isActive",
			value: function() {
				return this.active
			}
		},
		{
			key: "setShadowOptions",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.lightId,
				n = t.intensity,
				i = void 0 === n ? 1 : n,
				o = t.enabled,
				r = void 0 !== o && o;
				return this._shadowEnabled = r,
				this._shadowLightId = e,
				this._shadowIntensity = Math.max(0, Math.min(i, 1)),
				this
			}
		},
		{
			key: "getShadowOptions",
			value: function() {
				return {
					enabled: this._shadowEnabled,
					lightId: this._shadowLightId,
					intensity: this._shadowIntensity
				}
			}
		},
		{
			key: "getShadowLight",
			value: function() {
				return this._shadowEnabled && this.lights[y.LIGHT_TYPE.DIRECTION][this._getShadowLightIndex()]
			}
		},
		{
			key: "_getShadowLightIndex",
			value: function() {
				var t = this;
				return this.lights[y.LIGHT_TYPE.DIRECTION].findIndex(function(e) {
					return e.id === t._shadowLightId
				})
			}
		},
		{
			key: "_updateViewPos",
			value: function(t) {
				t ? t.version !== this._cameraVer && (this._uniforms.lighting_uViewPos = t.getLookPosition().elements, this._cameraVer = t.version) : this._uniforms.lighting_uViewPos = [0, 0, 1e3]
			}
		},
		{
			key: "getLightPVMatrix",
			value: function(t) {
				var e;
				if (!this.getShadowLight()) return new w.Matrix4;
				var n = new w.Vector3(this.getShadowLight().direction),
				i = new w.Vector3(n.elements).scale(3e3, 3e3, 3e3),
				o = new w.Vector3(0, 0, 1);
				n.equals(o) && (o = new w.Vector3(0, 1, 0));
				var r = (e = new w.Matrix4).setLookAt.apply(e, (0, l.
			default)(i.elements).concat([0, 0, 0], (0, l.
			default)(o.elements)));
				return (new w.Matrix4).setOrtho(t.left, t.right, t.bottom, t.top, 1, 6e3).scale(.75, .75, 1).multiply(r)
			}
		},
		{
			key: "update",
			value: function(t) {
				var e = t.camera,
				n = t.transform,
				i = t.view,
				s = this.isActive(),
				l = this.intensity,
				u = this._toneMapping;
				this._updateViewPos(e);
				var f = o(this.lights[y.LIGHT_TYPE.AMBIENT]),
				d = r(this.lights[y.LIGHT_TYPE.DIRECTION]),
				h = a(this.lights[y.LIGHT_TYPE.POINT], n); (0, c.
			default)(this._uniforms, {
					lighting_uBase: [s, l.ambient, l.diffuse, l.specular],
					lighting_uToneMapping: [u.enable, u.exposure],
					lighting_uShadow: [this._shadowEnabled && this._shadowIntensity, this._getShadowLightIndex()],
					lighting_uShadowLightPVMatrix: this.getLightPVMatrix(i).elements
				},
				f, d, h)
			}
		},
		{
			key: "uniforms",
			get: function() {
				return this._uniforms
			}
		}]),
		t
	} ();
	e.
default = A
},
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(341);
	e.
default = {
		active: !0,
		toneMapping: {
			enable: !1,
			exposure: 1
		},
		intensity: {
			ambient: 1,
			diffuse: 1,
			specular: 1
		},
		lightList: [{
			type: i.LIGHT_TYPE.AMBIENT,
			color: "#FFF",
			intensity: .8
		},
		{
			id: "$main",
			type: i.LIGHT_TYPE.DIRECTION,
			color: "#FFF",
			intensity: .2,
			direction: [ - 1, 2, -1.41]
		},
		{
			type: i.LIGHT_TYPE.DIRECTION,
			color: "#FFF",
			intensity: .2,
			direction: [1, -2, -1.41]
		}],
		shadowOptions: {
			enabled: !1
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(17),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(35),
	m = i(_),
	g = n(4),
	y = i(g),
	x = n(305),
	b = i(x),
	S = n(585),
	w = i(S),
	E = n(213),
	T = i(E),
	A = n(110),
	P = n(212),
	I = i(P),
	k = n(10),
	L = i(k),
	M = n(1049),
	C = i(M),
	R = !1,
	B = new Image;
	B.onload = function() {
		R = !0
	},
	B.src = C.
default;
	var N = function(t) {
		function e(t) { (0, f.
		default)(this, e);
			var n = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return n.shaderSource = w.
		default,
			n._store = new A.Store("buffer", 100, 16,
			function(t) {
				t.positions && t.positions.delete(),
				t.indices && t.indices.delete(),
				t.instanceBuffers && (0, s.
			default)(t.instanceBuffers).forEach(function(e) {
					var n = t.instanceBuffers[e];
					n.data = null,
					n.buffer.delete()
				})
			}),
			n.shaderParams = {
				attributes: ["a_Positions", "a_InstanceCoords", "a_InstanceColor", "a_InstanceWidth"],
				uniforms: ["u_matrix", "u_mapScale", "u_SamplerArrow", "u_resolution"]
			},
			n.positions = new Int16Array([ - 1, 1, 1, 1, -1, -1, 1, -1]),
			n.indices = new Uint8Array([0, 2, 1, 1, 2, 3]),
			n
		}
		return (0, y.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "draw",
			value: function(t, e, n) {
				var i = this.gl,
				o = n.tileId || 0;
				i.useProgram(i.program),
				i.uniform1f(this.u_mapScale, e.scale),
				i.uniform1i(this.u_SamplerArrow, 0),
				i.uniform2f(this.u_resolution, e.width, e.height),
				i.uniformMatrix4fv(this.u_matrix, !1, e.matrix),
				this.drawTileInstance(o, t.instance)
			}
		},
		{
			key: "drawTileInstance",
			value: function(t, e) {
				if (! (e.count < 1)) {
					var n = this.gl,
					i = this._store;
					i.exist(t) || i.set(t, this.createBuffer(t, e));
					var o = i.get(t);
					o.positions.bind(),
					o.positions.pointToAttrib({
						location: this.a_Positions,
						size: 2,
						type: n.SHORT
					}),
					o.indices.bind(),
					L.
				default.forIn(o.instanceBuffers,
					function(t, e) {
						var i = e.buffer,
						o = e.location,
						r = e.size,
						a = e.type;
						i.bind(),
						i.pointToAttrib({
							location: o,
							size: r,
							type: a
						}),
						n.vertexAttribDivisor(o, 1)
					}),
					n.drawElementsInstanced(n.TRIANGLES, this.indices.length, n.UNSIGNED_BYTE, 0, e.count),
					n.bindBuffer(n.ARRAY_BUFFER, null),
					n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, null),
					n.vertexAttribDivisor(this.a_InstanceCoords, 0),
					n.vertexAttribDivisor(this.a_InstanceColor, 0),
					n.vertexAttribDivisor(this.a_InstanceWidth, 0)
				}
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl,
				i = {
					positions: null,
					indices: null,
					instanceBuffers: {}
				};
				if (this.positions && (i.positions = new I.
			default(n, {
					data: this.positions
				})), this.indices && (i.indices = new I.
			default(n, {
					target: n.ELEMENT_ARRAY_BUFFER,
					data: this.indices
				})), e) {
					var o = {
						instanceCoordsTypeArray: {
							location: this.a_InstanceCoords,
							size: 4,
							type: n.FLOAT
						},
						instanceColorTypeArray: {
							location: this.a_InstanceColor,
							size: 4,
							type: n.FLOAT
						},
						instanceWidthTypeArray: {
							location: this.a_InstanceWidth,
							size: 1,
							type: n.FLOAT
						}
					};
					L.
				default.forIn(o,
					function(t, o) {
						i.instanceBuffers[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new I.
						default(n, {
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					})
				}
				return i
			}
		},
		{
			key: "afterDraw",
			value: function() {
				this._arrowTex && this._arrowTex.unbind()
			}
		},
		{
			key: "loadTexture",
			value: function() {
				R ? (this._arrowTex || (this._arrowTex = new T.
			default(this.gl, {
					pixels: B
				}), this._arrowTex.upload({
					flipY: !0
				})), this._arrowTex.bind()) : (this.gl.activeTexture(this.gl.TEXTURE0), this.gl.bindTexture(this.gl.TEXTURE_2D, null))
			}
		},
		{
			key: "clear",
			value: function() {
				this._store.clear(),
				this._arrowTexture && (this._arrowTexture.destroy(), this._arrowTexture = null)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.positions = null,
				this.indices = null,
				this._store.clear(),
				this._store = null,
				this._arrowTex && (this._arrowTex.delete(), this._arrowTex = null),
				(0, m.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (b.
default);
	e.
default = N
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(211),
	p = i(v),
	_ = n(586),
	m = i(_),
	g = n(110),
	y = n(219),
	x = n(23),
	b = i(x),
	S = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new g.Store("buffer", 1024, 128, y.deleteBuffersCallback),
			n.shaderSource = m.
		default,
			n.shaderParams = {
				attributes: ["a_Position", "a_Color", "a_Normal", "a_LineInfo", "a_LineDistance", "a_SideInfo", "a_PickingColor"],
				uniforms: ["u_matrix", "u_modelMatrix", "u_SizeScale", "picking_useFeaturePickingColor"]
			},
			n.enableLight = !0,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i, o) {
				var r = arguments.length > 5 && void 0 !== arguments[5] && arguments[5],
				a = this.gl,
				s = this.store,
				l = t.vertices,
				u = t.indeices,
				c = "base_" + o + "_" + t.id + "_" + Math.round(i),
				f = e.matrix,
				d = e.modelMatrix,
				h = void 0;
				s.exist(c) ? (h = s.get(c), this.bindVertexBuffer(l, h.vertices), this.bindElementBuffer(u, h.indices)) : h = s.set(c, {
					vertices: this.bindVertexBuffer(l),
					indices: this.bindElementBuffer(u),
					length: u.length
				}),
				a.uniformMatrix4fv(this.u_matrix, !1, f),
				a.uniformMatrix4fv(this.u_modelMatrix, !1, d);
				var v = ~~ (100 * (i - ~~i));
				a.uniform1f(this.u_SizeScale, 1e3 * v + Math.min(Math.floor(100 * (n || 1)), 255)),
				a.uniform1f(this.picking_useFeaturePickingColor, r ? 1 : 0);
				var p = b.
			default.batchRender ? a.UNSIGNED_INT: a.UNSIGNED_SHORT;
				a.drawElements(a.TRIANGLES, h.length, p, 0),
				this.unbindVertexBuffer(h.vertices, l.attributes)
			}
		}]),
		e
	} (p.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(211),
	p = i(v),
	_ = n(588),
	m = i(_),
	g = n(110),
	y = n(219),
	x = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new g.Store("buffer", 1024, 128, y.deleteBuffersCallback),
			n.shaderSource = m.
		default,
			n.shaderParams = {
				attributes: ["a_Position", "a_Color", "a_Info", "a_Transform", "a_Height"],
				uniforms: ["u_matrix", "u_modelMatrix", "u_use3D", "u_maskSampler", "u_maskScale"]
			},
			n.enableLight = !0,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
				i = this.gl,
				o = this.store,
				r = t.vertices,
				a = t.indeices,
				s = "build_" + t.id + "_" + e.zoom,
				l = e.matrix,
				u = e.modelMatrix,
				c = e.maskScale || 1,
				f = void 0;
				o.exist(s) ? (f = o.get(s), this.bindVertexBuffer(r, f.vertices), this.bindElementBuffer(a, f.indices)) : f = o.set(s, {
					vertices: this.bindVertexBuffer(r),
					indices: this.bindElementBuffer(a),
					length: a.length
				}),
				i.uniformMatrix4fv(this.u_matrix, !1, l),
				i.uniformMatrix4fv(this.u_modelMatrix, !1, u),
				i.uniform1i(this.u_maskSampler, 0),
				i.uniform1f(this.u_maskScale, c),
				i.uniform1f(this.u_use3D, n.use3D ? 1 : 0),
				i.drawElements(i.TRIANGLES, f.length, i.UNSIGNED_SHORT, 0),
				this.unbindVertexBuffer(f.vertices, r.attributes)
			}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(113),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(305),
	y = i(g),
	x = n(594),
	b = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = JSON.parse((0, r.
		default)(x.grayShader)),
			n.shaderParams = {
				attributes: ["a_position"],
				uniforms: ["u_matrix", "u_size", "u_texInfo", "u_opacity", "u_sampler", "u_Resolution", "u_hasColorMap", "u_samplerColorMap", "u_usePicking"]
			},
			n.geometry = {
				vertices: new Float32Array([0, 0, 0, 1, 1, 0, 1, 1]),
				indices: new Uint8Array([0, 2, 1, 1, 2, 3])
			},
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "preDraw",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				n = t.hasColorMap,
				i = t.colorMapTexture,
				o = t.rgbaFormatter,
				r = this.shaderSource.f;
				if (this.shaderSource.f = x.grayShader.f.replace("{RGBA_FORMATTER}", o), (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "preDraw", this).call(this, {
					updated: r !== this.shaderSource.f
				}), this.gl.uniform1f(this.u_hasColorMap, n ? 1 : 0), i && i._uploaded) {
					if (this.gl.uniform1i(this.u_samplerColorMap, 1), !this.buffers) {
						var a = this.geometry,
						l = a.vertices,
						u = a.indices;
						this.buffers = this.createBuffer(null, l, u)
					}
					this.bindBuffer()
				}
			}
		},
		{
			key: "bindBuffer",
			value: function() {
				var t = this.gl;
				this.buffers.vertices.bind(),
				this.buffers.vertices.pointToAttrib({
					location: this.a_position,
					size: 2,
					type: t.FLOAT
				}),
				this.buffers.indices.bind()
			}
		},
		{
			key: "draw",
			value: function(t) {
				var e = t.matrix,
				n = t.size,
				i = t.texInfo,
				o = t.opacity,
				r = t.resolution,
				a = t.usePicking,
				s = void 0 !== a && a,
				l = this.gl;
				l.uniformMatrix4fv(this.u_matrix, !1, e.elements),
				l.uniform1i(this.u_sampler, 0),
				l.uniform2f(this.u_size, n.width, n.height),
				l.uniform2f(this.u_Resolution, r.width, r.height),
				l.uniform4f(this.u_texInfo, i.s, i.t, i.w, i.h),
				l.uniform1f(this.u_opacity, o),
				l.uniform1f(this.u_usePicking, s ? 1 : 0),
				l.drawElements(l.TRIANGLES, this.buffers.length, l.UNSIGNED_BYTE, 0)
			}
		},
		{
			key: "destroy",
			value: function() {
				this.buffers && (this.buffers.vertices.delete(), this.buffers.indices.delete()),
				this.vertices = null,
				this.indices = null,
				(0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (y.
default);
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(394),
	y = i(g),
	x = n(599),
	b = i(x),
	S = n(212),
	w = i(S),
	E = n(10),
	T = i(E),
	A = n(644),
	P = i(A),
	I = n(1024),
	k = new P.
default,
	L = k.parse(I),
	M = {
		minX: -17.631067276000977,
		maxX: 15.692798614501953,
		minY: -3.118868112564087,
		maxY: 3.4938244819641113,
		minZ: .05786377936601639,
		maxZ: 20.096586227416992
	},
	C = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = b.
		default,
			n.shaderParams = {
				attributes: ["aPosition", "aNormal", "aColor", "aInstanceCoord", "aInstanceInfo"],
				uniforms: n.commonUniformList.concat(["uEnableLighting", "lighting_uCameraPosition", "lighting_lightPositions", "uBoxMin", "uBoxMax"])
			},
			n.enableLight = !0,
			n.model = L,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "createModelBuffer",
			value: function() {
				var t = this.gl,
				e = this.model.attributes;
				this.modelBuffers = {
					positions: {
						buffer: new w.
					default(t, {
							data: e.POSITION.value
						}),
						location: this.aPosition,
						size: e.POSITION.size,
						type: t.FLOAT
					},
					normals: {
						buffer: new w.
					default(t, {
							data: e.NORMAL.value
						}),
						location: this.aNormal,
						size: e.NORMAL.size,
						type: t.BYTE
					},
					colors: {
						buffer: new w.
					default(t, {
							data: e.COLOR_0.value
						}),
						location: this.aColor,
						size: e.COLOR_0.size,
						type: t.UNSIGNED_BYTE
					}
				}
			}
		},
		{
			key: "createBuffer",
			value: function(t) {
				var e = this.gl,
				n = {},
				i = {
					instanceCoordsTypeArray: {
						location: this.aInstanceCoord,
						size: 2,
						type: e.FLOAT
					},
					instanceInfosTypeArray: {
						location: this.aInstanceInfo,
						size: 4,
						type: e.SHORT
					}
				};
				return T.
			default.forIn(i,
				function(i, o) {
					n[i] = (0, r.
				default)({
						data:
						t[i],
						buffer: new w.
					default(e, {
							target: e.ARRAY_BUFFER,
							data: t[i],
							usage: e.DYNAMIC_DRAW
						})
					},
					o)
				}),
				n
			}
		},
		{
			key: "setBuffers",
			value: function(t) {
				var n = this;
				this.modelBuffers || this.createModelBuffer();
				var i = this.modelBuffers;
				T.
			default.forIn(i,
				function(t, e) {
					var n = e.buffer,
					i = e.location,
					o = e.size,
					r = e.type;
					n.bind(),
					"index" !== t && n.pointToAttrib({
						location: i,
						size: o,
						type: r
					})
				});
				var o = (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "setBuffers", this).call(this, t);
				return T.
			default.forIn(o,
				function(t, e) {
					var i = e.location;
					n.gl.vertexAttribDivisor(i, 1)
				}),
				o
			}
		},
		{
			key: "setUniforms",
			value: function(t, n, i, o) { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "setUniforms", this).call(this, t, n, i, o);
				var r = this.gl;
				r.uniform3f(this.uBoxMin, M.minX, M.minY, M.minZ),
				r.uniform3f(this.uBoxMax, M.maxX, M.maxY, M.maxZ)
			}
		},
		{
			key: "draw",
			value: function(t, e, n, i) {
				if (t && n) {
					var o = this.gl,
					r = this.model;
					o.useProgram(o.program),
					this.setUniforms(t, e, n, i);
					var a = this.setBuffers(t);
					o.drawArraysInstanced(r.mode, 0, r.vertexCount, t.count),
					o.bindBuffer(o.ARRAY_BUFFER, null),
					T.
				default.forIn(a,
					function(t, e) {
						var n = e.location;
						o.vertexAttribDivisor(n, 0)
					})
				}
			}
		},
		{
			key: "destroy",
			value: function() {
				this.model = null,
				(0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (y.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(394),
	m = i(_),
	g = n(597),
	y = i(g),
	x = n(212),
	b = i(x),
	S = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.shaderSource = y.
		default,
			n.shaderParams = {
				attributes: ["aPosition"],
				uniforms: n.commonUniformList.concat(["uColor"])
			},
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "createBuffer",
			value: function(t) {
				var e = this.gl,
				n = t.position,
				i = t.index;
				return {
					position: {
						location: this.aPosition,
						size: 3,
						type: e.FLOAT,
						data: n,
						buffer: new b.
					default(e, {
							data: n,
							usage: e.DYNAMIC_DRAW
						})
					},
					index: {
						data: i,
						buffer: new b.
					default(e, {
							target: e.ELEMENT_ARRAY_BUFFER,
							data: i
						}),
						type: 2 === i.BYTES_PER_ELEMENT ? e.UNSIGNED_SHORT: e.UNSIGNED_INT,
						length: i.byteLength / i.BYTES_PER_ELEMENT
					}
				}
			}
		},
		{
			key: "setUniforms",
			value: function(t, n, i, o) { (0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "setUniforms", this).call(this, t, n, i, o);
				var a = this.gl,
				s = o.color || [1, 1, 1, 1];
				a.uniform4f(this.uColor, s[0], s[1], s[2], s[3])
			}
		}]),
		e
	} (m.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(515),
	p = i(v),
	_ = n(607),
	m = i(_),
	g = n(139),
	y = n(112),
	x = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.shaderParams.uniforms = n.shaderParams.uniforms.concat(["uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "uRelativeCenter"]),
			n.shaderSource = m.
		default,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				o.useProgram(o.program),
				this.setCommonUniforms(t, i),
				this.setUniforms(n, t, e, i),
				this.drawTileInstance(n.id, n, i.updateSubData, !0)
			}
		},
		{
			key: "setUniforms",
			value: function(t, e, n, i) {
				var o = this.gl,
				r = e.center,
				a = e.zoom,
				s = 1 / (0, y.getSpatialResolution)(a),
				l = i.distanceScales || e.getDistanceScales(),
				u = (0, g.splitLatLngNumber)(r.lat),
				c = (0, g.splitLatLngNumber)(r.lng),
				f = {
					latPart: (0, g.splitLatLngNumber)(t.center.lat),
					lngPart: (0, g.splitLatLngNumber)(t.center.lng)
				};
				o.uniformMatrix4fv(this.u_matrix, !1, n.elements),
				o.uniform4f(this.uCenter, c.high, u.high, c.low, u.low),
				o.uniform1f(this.uZoom, a),
				o.uniform3f(this.uPixelsPerMeter, s, s, s),
				o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
				o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
				o.uniform2f(this.uResolution, e.width, e.height),
				o.uniform4f(this.uRelativeCenter, f.lngPart.high, f.latPart.high, f.lngPart.low, f.latPart.low),
				o.uniform2f(this.u_InstanceTileTextureOffset, 0, 0)
			}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(394),
	m = i(_),
	g = n(598),
	y = i(g),
	x = n(212),
	b = i(x),
	S = n(10),
	w = i(S),
	E = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = y.
		default,
			n.shaderParams = {
				attributes: ["aPosition", "aColor", "aNormal"],
				uniforms: n.commonUniformList
			},
			n.enableLight = !0,
			n
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "createBuffer",
			value: function(t) {
				var e = this.gl,
				n = t.index,
				i = {},
				o = {
					position: {
						location: this.aPosition,
						size: 3,
						type: e.FLOAT
					},
					color: {
						location: this.aColor,
						size: 3,
						type: e.UNSIGNED_BYTE
					},
					normal: {
						location: this.aNormal,
						size: 3,
						type: e.FLOAT
					},
					index: {
						type: 2 === n.BYTES_PER_ELEMENT ? e.UNSIGNED_SHORT: e.UNSIGNED_INT,
						length: n.byteLength / n.BYTES_PER_ELEMENT
					}
				};
				return w.
			default.forIn(o,
				function(n, o) {
					i[n] = (0, r.
				default)({
						data:
						t[n],
						buffer: new b.
					default(e, {
							target: "index" === n ? e.ELEMENT_ARRAY_BUFFER: e.ARRAY_BUFFER,
							data: t[n],
							usage: e.DYNAMIC_DRAW
						})
					},
					o)
				}),
				i
			}
		}]),
		e
	} (m.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(514),
	y = i(g),
	x = n(603),
	b = i(x),
	S = n(28),
	w = i(S),
	E = 1 / 16 / w.
default.devicePixelRatio,
	T = function(t) {
		function e(t) { (0, u.
		default)(this, e),
			t.attribList = ["instanceColors", "instanceStrokeColors", "instanceShow", "instanceType"],
			t.uniformList = ["u_gamma", "u_buffer"];
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = b.
		default,
			n.symbolManager = t.glyphManager,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_onDraw",
			value: function() {
				var t = this.gl;
				t.uniform1f(this.u_sizeMinPixels, 10),
				t.uniform1f(this.u_gamma, E),
				t.uniform1f(this.u_buffer, .71)
			}
		},
		{
			key: "_onDrawInstanceTile",
			value: function() {
				this.gl.vertexAttribDivisor(this.instanceColors, 0),
				this.gl.vertexAttribDivisor(this.instanceStrokeColors, 0),
				this.gl.vertexAttribDivisor(this.instanceShow, 0),
				this.gl.vertexAttribDivisor(this.instanceType, 0)
			}
		},
		{
			key: "getInstanceConfig",
			value: function() {
				var t = this.gl;
				return (0, r.
			default)((0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "getInstanceConfig", this).call(this), {
					instanceColorList: {
						location: this.instanceColors,
						size: 4,
						type: t.UNSIGNED_BYTE
					},
					instanceStrokeColorList: {
						location: this.instanceStrokeColors,
						size: 4,
						type: t.UNSIGNED_BYTE
					},
					instanceShowList: {
						location: this.instanceShow,
						size: 1,
						type: t.UNSIGNED_BYTE
					},
					instanceTypeList: {
						location: this.instanceType,
						size: 1,
						type: t.UNSIGNED_BYTE
					}
				})
			}
		}]),
		e
	} (y.
default);
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(514),
	y = i(g),
	x = n(604),
	b = i(x),
	S = n(28),
	w = i(S),
	E = 1 / 16 / w.
default.devicePixelRatio,
	T = function(t) {
		function e(t) { (0, u.
		default)(this, e),
			t.attribList = ["instanceColors", "instanceStrokeColors", "instanceStrokeWidth", "instanceShow", "instanceType"],
			t.uniformList = ["u_gamma", "u_buffer", "u_sdfRadius"];
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = b.
		default,
			n.symbolManager = t.markerManager,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_onDraw",
			value: function() {
				var t = this.gl;
				t.uniform1f(this.u_sizeMinPixels, 10),
				t.uniform1f(this.u_gamma, E),
				t.uniform1f(this.u_buffer, .71),
				t.uniform1f(this.u_sdfRadius, this.symbolManager.setting.radius)
			}
		},
		{
			key: "_onDrawInstanceTile",
			value: function() {
				this.gl.vertexAttribDivisor(this.instanceColors, 0),
				this.gl.vertexAttribDivisor(this.instanceStrokeColors, 0),
				this.gl.vertexAttribDivisor(this.instanceStrokeWidth, 0),
				this.gl.vertexAttribDivisor(this.instanceShow, 0),
				this.gl.vertexAttribDivisor(this.instanceType, 0)
			}
		},
		{
			key: "getInstanceConfig",
			value: function() {
				var t = this.gl;
				return (0, r.
			default)((0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "getInstanceConfig", this).call(this), {
					instanceColorList: {
						location: this.instanceColors,
						size: 4,
						type: t.UNSIGNED_BYTE
					},
					instanceStrokeColorList: {
						location: this.instanceStrokeColors,
						size: 4,
						type: t.UNSIGNED_BYTE
					},
					instanceStrokeWidthList: {
						location: this.instanceStrokeWidth,
						size: 1,
						type: t.UNSIGNED_SHORT
					},
					instanceShowList: {
						location: this.instanceShow,
						size: 1,
						type: t.UNSIGNED_BYTE
					},
					instanceTypeList: {
						location: this.instanceType,
						size: 1,
						type: t.UNSIGNED_BYTE
					}
				})
			}
		}]),
		e
	} (y.
default);
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(24),
	s = i(a),
	l = n(3),
	u = i(l),
	c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(5),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(211),
	y = i(g),
	x = n(602),
	b = i(x),
	S = n(110),
	w = n(139),
	E = n(212),
	T = i(E),
	A = n(219),
	P = n(10),
	I = i(P),
	k = function(t) {
		function e(t) { (0, f.
		default)(this, e);
			var n = (0, p.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return n.store = new S.Store("buffer", 128, 16, A.deleteInstanceCacllback),
			n.shaderSource = b.
		default,
			n.shaderParams = {
				attributes: ["positions", "positions64xyLow"],
				uniforms: ["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "uColor"]
			},
			n
		}
		return (0, m.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				if (e) {
					var r = t.center,
					a = t.zoom,
					l = t.getDistanceRatio(),
					u = i.distanceScales,
					c = i.color,
					f = (0, w.splitLatLngNumber)(r.lat),
					d = (0, w.splitLatLngNumber)(r.lng),
					h = [d.high, f.high, d.low, f.low];
					o.useProgram(o.program),
					o.uniformMatrix4fv(this.uMatrix, !1, e.elements),
					o.uniform4f.apply(o, [this.uCenter].concat(h)),
					o.uniform1f(this.uZoom, a),
					o.uniform3f(this.uPixelsPerMeter, l, l, l),
					o.uniform3f.apply(o, [this.uProject_uCommonUnitsPerWorldUnit].concat((0, s.
				default)(u.pixelsPerDegree))),
					o.uniform3f.apply(o, [this.uProject_uCommonUnitsPerWorldUnit2].concat((0, s.
				default)(u.pixelsPerDegree2))),
					o.uniform2f(this.uResolution, t.width, t.height),
					o.uniform4f(this.uColor, c[0], c[1], c[2], c[3]),
					this.drawTile(n.uid, n)
				}
			}
		},
		{
			key: "drawTile",
			value: function(t, e) {
				var n = this.gl,
				i = this.store,
				o = !1;
				if (i) {
					i.exist(t) ? this._hasChangedBuffer(t, e) && (o = !0) : i.set(t, this.createBuffer(t, e));
					var r = i.get(t);
					I.
				default.forIn(r,
					function(t, i) {
						var r = i.buffer,
						a = i.location,
						s = i.size,
						l = i.type;
						r.bind(),
						o && (r.bufferData(e[t], {
							usage: n.DYNAMIC_DRAW
						}), i.data = e[t]),
						"indices" !== t && r.pointToAttrib({
							location: a,
							size: s,
							type: l
						})
					}),
					n.drawElements(n.TRIANGLES, r.indices.data.length, n.UNSIGNED_INT, 0),
					n.bindBuffer(n.ARRAY_BUFFER, null),
					n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, null)
				}
			}
		},
		{
			key: "_hasChangedBuffer",
			value: function(t, e) {
				var n = this.store.get(t);
				for (var i in n) if (n.hasOwnProperty(i) && e[i] && n[i].data !== e[i]) return ! 0;
				return ! 1
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl;
				if (e) {
					var i = {},
					o = {
						positions: {
							location: this.positions,
							size: 3,
							type: n.FLOAT
						},
						positions64xyLow: {
							location: this.positions64xyLow,
							size: 2,
							type: n.FLOAT
						},
						indices: {}
					};
					return I.
				default.forIn(o,
					function(t, o) {
						i[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new T.
						default(n, {
								target: "indices" === t ? n.ELEMENT_ARRAY_BUFFER: n.ARRAY_BUFFER,
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					}),
					i
				}
			}
		}]),
		e
	} (y.
default);
	e.
default = k
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(28),
	p = i(v),
	_ = n(791),
	m = n(342),
	g = i(m),
	y = n(591),
	x = i(y),
	b = 12,
	S = 15,
	w = 39,
	E = function(t) {
		function e(t) { (0, s.
		default)(this, e),
			t.uniformList = ["uResolution", "uSampler", "uEnabled"];
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t)),
			i = (0, _.getGraphicHardwareInfo)(n.gl),
			o = p.
		default.devicePixelRatio >= 2 ? S: i ? /(\bHD\b)|(\bUHD\b)/.test(i.renderer) ? b: w: b;
			return n.shaderSource = (0, x.
		default)(o),
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "setUniforms",
			value: function(t) {
				var e = t.resolution,
				n = t.texture,
				i = t.enabled,
				o = this.gl;
				o.uniform2f(this.uResolution, e[0], e[1]),
				o.uniform1f(this.uEnabled, i),
				o.activeTexture(o.TEXTURE0),
				o.bindTexture(o.TEXTURE_2D, n),
				o.uniform1i(this.uSampler, 0)
			}
		}]),
		e
	} (g.
default);
	e.
default = E
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(24),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(342),
	y = i(g),
	x = n(590),
	b = i(x),
	S = function(t) {
		function e(t) { (0, u.
		default)(this, e),
			t.uniformList = ["uRange", "uFogEdge", "uSampler", "uDepthSampler", "uSkySampler", "uSkyInfo", "uViewInfo", "uSkyBrightness", "uFogColor", "uSkyColor"];
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderSource = b.
		default,
			n.brightness = 1,
			n.colors = {},
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "preDraw",
			value: function() { (0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "preDraw", this).call(this)
			}
		},
		{
			key: "setFogColor",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [.93, .93, .93, 1];
				this.colors.fog = t
			}
		},
		{
			key: "setSkyColor",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [.8, .8784, 1, 1];
				this.colors.sky = t
			}
		},
		{
			key: "setBrightness",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1;
				this.brightness = t
			}
		},
		{
			key: "setUniforms",
			value: function(t) {
				var e = t.rangeList,
				n = t.fogEdge,
				i = t.texture,
				o = t.depth,
				a = t.skyTex,
				s = t.skyInfo,
				l = t.viewInfo,
				u = this.gl;
				u.uniform4fv(this.uFogColor, this.colors.fog),
				u.uniform4fv(this.uSkyColor, this.colors.sky),
				u.uniform2f(this.uRange, e[0], e[1]),
				u.uniform3f(this.uFogEdge, n[0], n[1], n[2]),
				u.uniform4f.apply(u, [this.uSkyInfo].concat((0, r.
			default)(s))),
				u.uniform4f.apply(u, [this.uViewInfo].concat((0, r.
			default)(l))),
				u.uniform1f(this.uSkyBrightness, this.brightness),
				u.activeTexture(u.TEXTURE0),
				u.bindTexture(u.TEXTURE_2D, i),
				u.uniform1i(this.uSampler, 0),
				u.activeTexture(u.TEXTURE1),
				u.bindTexture(u.TEXTURE_2D, o),
				u.uniform1i(this.uDepthSampler, 1),
				a ? (a.bind(u, {
					textureIndex: 2
				}), u.uniform1i(this.uSkySampler, 2)) : (u.activeTexture(u.TEXTURE2), u.bindTexture(u.TEXTURE_2D, null))
			}
		}]),
		e
	} (y.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(342),
	p = i(v),
	_ = n(593),
	m = i(_),
	g = function(t) {
		function e(t) { (0, s.
		default)(this, e),
			t.uniformList = ["uSampler", "uHorizontal", "uResolution"];
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.shaderSource = m.
		default,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "setUniforms",
			value: function(t) {
				var e = t.texture,
				n = t.horizontal,
				i = t.resolution,
				o = this.gl;
				e.bind(),
				o.uniform1i(this.uSampler, 0),
				o.uniform1i(this.uHorizontal, n),
				o.uniform2f(this.uResolution, i[0], i[1])
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(342),
	p = i(v),
	_ = n(595),
	m = i(_),
	g = function(t) {
		function e(t) { (0, s.
		default)(this, e),
			t.uniformList = ["uColor"];
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.shaderSource = m.
		default,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "setUniforms",
			value: function(t) {
				var e = t.color;
				this.gl.uniform4fv(this.uColor, e)
			}
		}]),
		e
	} (p.
default);
	e.
default = g
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(211),
	m = i(_),
	g = n(467),
	y = i(g),
	x = n(110),
	b = n(139),
	S = n(212),
	w = i(S),
	E = n(219),
	T = n(10),
	A = i(T),
	P = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.store = new x.Store("buffer", 128, 16, E.deleteInstanceCacllback),
			n.shaderSource = y.
		default,
			n.shaderParams = {
				attributes: ["vertexPositions", "vertexValid", "positions", "positions64xyLow", "nextPositions", "nextPositions64xyLow", "elevations", "fillColors", "lineColors", "pickingColors"],
				uniforms: ["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "picking_usePickingColor", "u_isSideVertex", "u_extruded", "u_isWireframe", "u_elevationScale", "u_opacity"]
			},
			n.enableLight = !0,
			n
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				if (e) {
					var r = t.center,
					a = t.zoom,
					s = t.getDistanceRatio(),
					l = i.distanceScales,
					u = i.extruded,
					c = void 0 === u ? 1 : u,
					f = (0, b.splitLatLngNumber)(r.lat),
					d = (0, b.splitLatLngNumber)(r.lng);
					o.useProgram(o.program),
					o.uniformMatrix4fv(this.uMatrix, !1, e.elements),
					o.uniform4f(this.uCenter, d.high, f.high, d.low, f.low),
					o.uniform1f(this.uZoom, a),
					o.uniform3f(this.uPixelsPerMeter, s, s, s),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
					o.uniform2f(this.uResolution, t.width, t.height),
					o.uniform1f(this.picking_usePickingColor, i.usePicking ? 1 : 0),
					o.uniform1f(this.u_isSideVertex, 0),
					o.uniform1f(this.u_extruded, c),
					o.uniform1f(this.u_isWireframe, !1),
					o.uniform1f(this.u_elevationScale, 1),
					o.uniform1f(this.u_opacity, 1),
					this.drawTile(n.uid, n)
				}
			}
		},
		{
			key: "drawTile",
			value: function(t, e) {
				var n = this.gl,
				i = this.store,
				o = !1;
				if (i) {
					i.exist(t) ? this._hasChangedBuffer(t, e) && (o = !0) : i.set(t, this.createBuffer(t, e));
					var r = i.get(t);
					n.disableVertexAttribArray(this.vertexPositions),
					n.disableVertexAttribArray(this.nextPositions),
					n.disableVertexAttribArray(this.nextPositions64xyLow),
					A.
				default.forIn(r,
					function(t, i) {
						var r = i.buffer,
						a = i.location,
						s = i.size,
						l = i.type;
						r.bind(),
						o && (r.bufferData(e[t], {
							usage: n.DYNAMIC_DRAW
						}), i.data = e[t]),
						"indices" !== t && r.pointToAttrib({
							location: a,
							size: s,
							type: l
						})
					}),
					n.drawElements(n.TRIANGLES, r.indices.data.length, n.UNSIGNED_INT, 0),
					n.bindBuffer(n.ARRAY_BUFFER, null),
					n.bindBuffer(n.ELEMENT_ARRAY_BUFFER, null)
				}
			}
		},
		{
			key: "_hasChangedBuffer",
			value: function(t, e) {
				var n = this.store.get(t);
				for (var i in n) if (n.hasOwnProperty(i) && e[i] && n[i].data !== e[i]) return ! 0;
				return ! 1
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl;
				if (e) {
					var i = {},
					o = {
						elevations: {
							location: this.elevations,
							size: 1,
							type: n.FLOAT
						},
						fillColors: {
							location: this.fillColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						lineColors: {
							location: this.lineColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						pickingColors: {
							location: this.pickingColors,
							size: 3,
							type: n.UNSIGNED_BYTE
						},
						positions: {
							location: this.positions,
							size: 3,
							type: n.FLOAT
						},
						positions64xyLow: {
							location: this.positions64xyLow,
							size: 2,
							type: n.FLOAT
						},
						vertexValid: {
							location: this.vertexValid,
							size: 1,
							type: n.UNSIGNED_BYTE
						},
						indices: {}
					};
					return A.
				default.forIn(o,
					function(t, o) {
						i[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new w.
						default(n, {
								target: "indices" === t ? n.ELEMENT_ARRAY_BUFFER: n.ARRAY_BUFFER,
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					}),
					i
				}
			}
		}]),
		e
	} (m.
default);
	e.
default = P
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(35),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(16),
	m = i(_),
	g = n(211),
	y = i(g),
	x = n(467),
	b = i(x),
	S = n(110),
	w = n(139),
	E = n(212),
	T = i(E),
	A = n(219),
	P = n(10),
	I = i(P),
	k = (0, m.
default)({},
	b.
default, {
		name: "polygon_side"
	}),
	L = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new S.Store("buffer", 128, 16, A.deleteInstanceCacllback),
			n.shaderSource = k,
			n.shaderParams = {
				attributes: ["vertexPositions", "vertexValid", "positions", "positions64xyLow", "nextPositions", "nextPositions64xyLow", "elevations", "fillColors", "lineColors", "pickingColors"],
				uniforms: ["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "picking_usePickingColor", "u_isSideVertex", "u_extruded", "u_isWireframe", "u_elevationScale", "u_opacity"]
			},
			n.enableLight = !0,
			n._vertPositions = new Float32Array([1, 1, 0, 1, 0, 0, 1, 0]),
			n
		}
		return (0, p.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				if (e) {
					var r = t.center,
					a = t.zoom,
					s = t.getDistanceRatio(),
					l = i.distanceScales,
					u = i.extruded,
					c = void 0 === u ? 1 : u,
					f = (0, w.splitLatLngNumber)(r.lat),
					d = (0, w.splitLatLngNumber)(r.lng);
					o.useProgram(o.program),
					o.uniformMatrix4fv(this.uMatrix, !1, e.elements),
					o.uniform4f(this.uCenter, d.high, f.high, d.low, f.low),
					o.uniform1f(this.uZoom, a),
					o.uniform3f(this.uPixelsPerMeter, s, s, s),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
					o.uniform2f(this.uResolution, t.width, t.height),
					o.uniform1f(this.picking_usePickingColor, i.usePicking ? 1 : 0),
					o.uniform1f(this.u_isSideVertex, 1),
					o.uniform1f(this.u_extruded, c),
					o.uniform1f(this.u_isWireframe, i.drawBorder ? 1 : 0),
					o.uniform1f(this.u_elevationScale, 1),
					o.uniform1f(this.u_opacity, 1),
					this.drawTile(n.uid, n, i.drawBorder)
				}
			}
		},
		{
			key: "drawTile",
			value: function(t, e, n) {
				var i = this.gl,
				o = this.store,
				r = !1;
				if (o) {
					o.exist(t) ? this._hasChangedBuffer(t, e) && (r = !0) : o.set(t, this.createBuffer(t, e));
					var a = o.get(t);
					a.vertexPositions.bind(),
					a.vertexPositions.pointToAttrib({
						location: this.vertexPositions,
						size: 2,
						type: i.FLOAT
					}),
					I.
				default.forIn(a,
					function(t, n) {
						if ("vertexPositions" !== t) {
							var o = n.buffer,
							a = n.location,
							s = n.size,
							l = n.type;
							o.bind(),
							r && (o.bufferData(e[t], {
								usage: i.DYNAMIC_DRAW
							}), n.data = e[t]),
							"indices" !== t && (o.pointToAttrib({
								location: a,
								size: s,
								type: l
							}), i.vertexAttribDivisor(a, 1))
						}
					}),
					i.drawArraysInstanced(n ? i.LINE_STRIP: i.TRIANGLE_FAN, 0, 4, e.elevations.length),
					i.bindBuffer(i.ARRAY_BUFFER, null),
					i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, null),
					i.vertexAttribDivisor(this.positions, 0),
					i.vertexAttribDivisor(this.positions64xyLow, 0),
					i.vertexAttribDivisor(this.elevations, 0),
					i.vertexAttribDivisor(this.fillColors, 0),
					i.vertexAttribDivisor(this.lineColors, 0),
					i.vertexAttribDivisor(this.nextPositions, 0),
					i.vertexAttribDivisor(this.nextPositions64xyLow, 0),
					i.vertexAttribDivisor(this.pickingColors, 0),
					i.vertexAttribDivisor(this.vertexValid, 0)
				}
			}
		},
		{
			key: "_hasChangedBuffer",
			value: function(t, e) {
				var n = this.store.get(t);
				for (var i in n) if (n.hasOwnProperty(i) && e[i] && "indices" !== i && n[i].data !== e[i]) return ! 0;
				return ! 1
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl;
				if (e) {
					var i = {},
					o = {
						elevations: {
							location: this.elevations,
							size: 1,
							type: n.FLOAT
						},
						fillColors: {
							location: this.fillColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						lineColors: {
							location: this.lineColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						pickingColors: {
							location: this.pickingColors,
							size: 3,
							type: n.UNSIGNED_BYTE
						},
						positions: {
							location: this.positions,
							size: 3,
							type: n.FLOAT
						},
						positions64xyLow: {
							location: this.positions64xyLow,
							size: 2,
							type: n.FLOAT
						},
						vertexValid: {
							location: this.vertexValid,
							size: 1,
							type: n.UNSIGNED_BYTE
						},
						nextPositions: {
							location: this.nextPositions,
							size: 3,
							type: n.FLOAT
						},
						nextPositions64xyLow: {
							location: this.nextPositions64xyLow,
							size: 2,
							type: n.FLOAT
						},
						indices: {}
					};
					return this._vertPositions && (i.vertexPositions = new T.
				default(n, {
						data: this._vertPositions
					})),
					I.
				default.forIn(o,
					function(t, o) {
						i[t] = (0, m.
					default)({
							data:
							e[t],
							buffer: new T.
						default(n, {
								target: "indices" === t ? n.ELEMENT_ARRAY_BUFFER: n.ARRAY_BUFFER,
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					}),
					i
				}
			}
		},
		{
			key: "destroy",
			value: function() {
				this._vertPositions = null,
				(0, h.
			default)(e.prototype.__proto__ || (0, r.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (y.
default);
	e.
default = L
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(35),
	p = i(v),
	_ = n(4),
	m = i(_),
	g = n(211),
	y = i(g),
	x = n(601),
	b = i(x),
	S = n(600),
	w = i(S),
	E = n(110),
	T = n(139),
	A = n(212),
	P = i(A),
	I = n(219),
	k = n(213),
	L = i(k),
	M = n(1048),
	C = i(M),
	R = n(10),
	B = i(R),
	N = n(388),
	O = i(N),
	D = n(47),
	z = i(D),
	F = !1,
	V = new Image;
	V.onload = function() {
		F = !0
	},
	V.src = C.
default;
	var Y = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.store = new E.Store("buffer", 128, 16, I.deleteInstanceCacllback),
			n.shaderSource = n.gl.isWebGL2 ? w.
		default:
			b.
		default,
			n.shaderParams = {
				attributes: ["positions", "instanceStartPositions", "instanceEndPositions", "instanceLeftDeltas", "instanceRightDeltas", "instanceStartEndPositions64xyLow", "instanceWidths", "instanceColors", "instanceLineInfo", "instanceArrowInfo", "instanceArrowStartPositions", "instancePickingColors"],
				uniforms: ["uMatrix", "uCenter", "uZoom", "uPixelsPerMeter", "uResolution", "uProject_uCommonUnitsPerWorldUnit", "uProject_uCommonUnitsPerWorldUnit2", "uProject_uDegreePerPixels", "picking_usePickingColor", "u_isBorder", "u_widthScale", "u_widthMinPixels", "u_widthMaxPixels", "u_enableGeodesic", "u_miterLimit", "u_lineJoin", "u_opacity", "u_arrowSampler"]
			},
			n.modelPositions = new Int16Array([0, 1, 0, -1, 1, 1, 1, -1]),
			n.modelIndicies = new Uint8Array([0, 1, 2, 1, 3, 2]),
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "loadTexture",
			value: function() {
				F ? (this._arrowTex || (this._arrowTex = new L.
			default(this.gl, {
					pixels: V
				}), this._arrowTex.upload({
					flipY: !0
				})), this._arrowTex.bind()) : (this.gl.activeTexture(this.gl.TEXTURE0), this.gl.bindTexture(this.gl.TEXTURE_2D, null))
			}
		},
		{
			key: "afterDraw",
			value: function() {
				this._arrowTex && this._arrowTex.unbind()
			}
		},
		{
			key: "draw",
			value: function(t, e, n, i) {
				var o = this.gl;
				if (e && 0 !== n.count) {
					var r = t.center,
					a = t.zoom,
					s = t.getDistanceRatio(),
					l = i.distanceScales,
					u = (0, T.splitLatLngNumber)(r.lat),
					c = (0, T.splitLatLngNumber)(r.lng);
					o.useProgram(o.program),
					o.uniformMatrix4fv(this.uMatrix, !1, e.elements),
					o.uniform4f(this.uCenter, c.high, u.high, c.low, u.low),
					o.uniform1f(this.uZoom, a),
					o.uniform3f(this.uPixelsPerMeter, s, s, s),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit, l.pixelsPerDegree[0], l.pixelsPerDegree[1], l.pixelsPerDegree[2]),
					o.uniform2f(this.uProject_uDegreePerPixels, l.degreesPerPixel[0], l.degreesPerPixel[1]),
					o.uniform3f(this.uProject_uCommonUnitsPerWorldUnit2, l.pixelsPerDegree2[0], l.pixelsPerDegree2[1], l.pixelsPerDegree2[2]),
					o.uniform2f(this.uResolution, t.width, t.height),
					o.uniform1f(this.picking_usePickingColor, i.usePicking ? 1 : 0),
					o.uniform1f(this.u_isBorder, i.drawBorder ? 1 : 0),
					o.uniform1f(this.u_widthScale, 1 / s),
					o.uniform1f(this.u_widthMinPixels, 0),
					o.uniform1f(this.u_widthMaxPixels, 1e3),
					o.uniform1f(this.u_miterLimit, 150),
					o.uniform1f(this.u_lineJoin, 1),
					o.uniform1f(this.u_opacity, 1),
					o.uniform1i(this.u_arrowSampler, 0),
					o.uniform1f(this.u_enableGeodesic, n.enableGeodesic ? 1 : 0);
					var f = this._calcArrowStratPosition(n, t);
					n.instanceArrowStartPositionList = f,
					this.drawTileInstance(n.uid, n, i.drawBorder)
				}
			}
		},
		{
			key: "_calcArrowStratPosition",
			value: function(t, e) {
				var n = t.count,
				i = t.instanceArrowInfoList;
				if (0 === i[1]) return new Float32Array(n);
				for (var o = t.instanceStartPositionList,
				r = t.instanceEndPositionList,
				a = t.instanceStartEndPostions64xyLowList,
				s = e.getDistanceRatio(), l = i[1], u = l + i[2], c = 0, f = new Float32Array(n), d = 0; d < n; d++) {
					var h = new z.
				default(o[3 * d + 1] + a[4 * d + 1], o[3 * d] + a[4 * d]),
					v = new z.
				default(r[3 * d + 1] + a[4 * d + 3], r[3 * d] + a[4 * d + 2]),
					p = (0, O.
				default)(h, v),
					_ = p * s;
					if (c < l) f[d] = 0,
					c = _ % u;
					else {
						var m = u - c;
						_ < m ? (f[d] = -1, c += _) : (f[d] = m, c = (_ - m) % u)
					}
				}
				return f
			}
		},
		{
			key: "drawTileInstance",
			value: function(t, e, n) {
				var i = this.gl,
				o = this.store,
				r = !1;
				if (o) {
					o.exist(t) ? this._hasChangedBuffer(t, e) && (r = !0) : o.set(t, this.createBuffer(t, e));
					var a = o.get(t);
					a.positions.bind(),
					a.positions.pointToAttrib({
						location: this.positions,
						size: 2,
						type: i.SHORT
					}),
					a.indices.bind(),
					B.
				default.forIn(a.instanceBuffers,
					function(t, o) {
						if (n) {
							if ("instanceColorList" === t || "instanceWidthList" === t) return
						} else if ("instanceBorderColorList" === t || "instanceBorderWidthList" === t) return;
						var a = o.buffer,
						s = o.location,
						l = o.size,
						u = o.type;
						a.bind(),
						r && (a.bufferData(e[t], {
							usage: i.DYNAMIC_DRAW
						}), o.data = e[t]),
						a.pointToAttrib({
							location: s,
							size: l,
							type: u
						}),
						i.vertexAttribDivisor(s, 1)
					}),
					i.drawElementsInstanced(i.TRIANGLES, this.modelIndicies.length, i.UNSIGNED_BYTE, 0, e.count),
					i.bindBuffer(i.ARRAY_BUFFER, null),
					i.bindBuffer(i.ELEMENT_ARRAY_BUFFER, null),
					i.vertexAttribDivisor(this.instanceStartPositions, 0),
					i.vertexAttribDivisor(this.instanceEndPositions, 0),
					i.vertexAttribDivisor(this.instanceLeftDeltas, 0),
					i.vertexAttribDivisor(this.instanceRightDeltas, 0),
					i.vertexAttribDivisor(this.instanceStartEndPositions64xyLow, 0),
					i.vertexAttribDivisor(this.instancePickingColors, 0),
					i.vertexAttribDivisor(this.instanceColors, 0),
					i.vertexAttribDivisor(this.instanceWidths, 0),
					i.vertexAttribDivisor(this.instanceLineInfo, 0),
					i.vertexAttribDivisor(this.instanceArrowInfo, 0),
					i.vertexAttribDivisor(this.instanceArrowStartPositions, 0)
				}
			}
		},
		{
			key: "_hasChangedBuffer",
			value: function(t, e) {
				var n = this.store.get(t),
				i = n.instanceBuffers;
				for (var o in i) if (i.hasOwnProperty(o) && e[o] && i[o].data !== e[o]) return ! 0;
				return ! 1
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl,
				i = {
					positions: null,
					indices: null,
					instanceBuffers: {}
				};
				if (this.modelPositions && (i.positions = new P.
			default(n, {
					data: this.modelPositions
				})), this.modelIndicies && (i.indices = new P.
			default(n, {
					target: n.ELEMENT_ARRAY_BUFFER,
					data: this.modelIndicies
				})), e) {
					var o = {
						instanceStartPositionList: {
							location: this.instanceStartPositions,
							size: 3,
							type: n.FLOAT
						},
						instanceEndPositionList: {
							location: this.instanceEndPositions,
							size: 3,
							type: n.FLOAT
						},
						instanceLeftDeltaList: {
							location: this.instanceLeftDeltas,
							size: 3,
							type: n.FLOAT
						},
						instanceRightDeltaList: {
							location: this.instanceRightDeltas,
							size: 3,
							type: n.FLOAT
						},
						instanceStartEndPostions64xyLowList: {
							location: this.instanceStartEndPositions64xyLow,
							size: 4,
							type: n.FLOAT
						},
						instanceColorList: {
							location: this.instanceColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						instanceBorderColorList: {
							location: this.instanceColors,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						instanceWidthList: {
							location: this.instanceWidths,
							size: 1,
							type: n.FLOAT
						},
						instanceBorderWidthList: {
							location: this.instanceWidths,
							size: 1,
							type: n.FLOAT
						},
						instanceLineInfoList: {
							location: this.instanceLineInfo,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						instanceArrowInfoList: {
							location: this.instanceArrowInfo,
							size: 4,
							type: n.UNSIGNED_BYTE
						},
						instancePickingColorList: {
							location: this.instancePickingColors,
							size: 3,
							type: n.UNSIGNED_BYTE
						},
						instanceArrowStartPositionList: {
							location: this.instanceArrowStartPositions,
							size: 1,
							type: n.FLOAT
						}
					};
					B.
				default.forIn(o,
					function(t, o) {
						e[t] && (i.instanceBuffers[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new P.
						default(n, {
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o))
					})
				}
				return i
			}
		},
		{
			key: "destroy",
			value: function() {
				this.modelIndicies = null,
				this.modelPositions = null,
				this._arrowTex && (this._arrowTex.delete(), this._arrowTex = null),
				(0, p.
			default)(e.prototype.__proto__ || (0, s.
			default)(e.prototype), "destroy", this).call(this)
			}
		}]),
		e
	} (y.
default);
	e.
default = Y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(211),
	p = i(v),
	_ = n(608),
	m = i(_),
	g = n(110),
	y = n(219),
	x = n(23),
	b = i(x),
	S = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new g.Store("buffer", 1024, 128, y.deleteBuffersCallback),
			n.shaderSource = m.
		default,
			n.shaderParams = {
				attributes: ["a_Position", "a_Color", "a_Normal", "a_LineInfo", "a_LineDistance", "a_SideInfo", "a_PickingColor"],
				uniforms: ["u_matrix", "u_modelMatrix", "u_SizeScale", "u_opacity"]
			},
			n.enableLight = !0,
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e, n, i, o, r) {
				var a = this.gl,
				s = this.store,
				l = t.vertices,
				u = t.indeices,
				c = "traffic_" + r + "_" + t.id + "_" + Math.round(i),
				f = e.matrix,
				d = e.modelMatrix,
				h = void 0;
				s.exist(c) ? (h = s.get(c), this.bindVertexBuffer(l, h.vertices), this.bindElementBuffer(u, h.indices)) : h = s.set(c, {
					vertices: this.bindVertexBuffer(l),
					indices: this.bindElementBuffer(u),
					length: u.length
				}),
				a.uniformMatrix4fv(this.u_matrix, !1, f),
				a.uniformMatrix4fv(this.u_modelMatrix, !1, d);
				var v = ~~ (100 * (i - ~~i));
				a.uniform1f(this.u_SizeScale, 1e3 * v + Math.min(Math.floor(100 * (n || 1)), 255)),
				a.uniform1f(this.u_opacity, o);
				var p = b.
			default.batchRender ? a.UNSIGNED_INT: a.UNSIGNED_SHORT;
				a.drawElements(a.TRIANGLES, h.length, p, 0),
				this.unbindVertexBuffer(h.vertices, l.attributes)
			}
		}]),
		e
	} (p.
default);
	e.
default = S
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(110),
	m = n(219),
	g = n(305),
	y = i(g),
	x = n(609),
	b = n(212),
	S = i(b),
	w = n(10),
	E = i(w),
	T = function(t) {
		function e(t) { (0, u.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t));
			return n.shaderParams = {
				attributes: ["instanceLinks", "instanceColors", "instanceParticles"],
				uniforms: ["uMatrix", "uSampler", "uTexInfo", "uSubTexInfo", "uTick"]
			},
			n.shaderSource = x.defaultShader,
			n.store = new _.Store("buffer", 128, 16, m.deleteInstanceCacllback),
			n
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "draw",
			value: function(t, e) {
				var n = this.gl,
				i = this.store,
				o = e.matrix,
				r = e.texInfo,
				a = e.uid,
				s = e.tick,
				l = t.texSize,
				u = t.pixelSpace,
				c = t.count,
				f = t.instance;
				n.uniformMatrix4fv(this.uMatrix, !1, o.elements),
				n.uniform1i(this.uSampler, 0),
				n.uniform2f(this.uTexInfo, l, u),
				n.uniform4f(this.uSubTexInfo, r.s, r.t, r.w, r.h),
				n.uniform1f(this.uTick, s);
				var d = !1;
				if (i.exist(a)) {
					var h = i.get(a).instanceBuffers;
					this.isBufferChanged(h, f) && (d = !0)
				} else i.set(a, this.createBuffer(a, f));
				var v = i.get(a);
				E.
			default.forIn(v.instanceBuffers,
				function(t, e) {
					var i = e.buffer,
					o = e.location,
					r = e.size,
					a = e.type;
					i.bind(),
					d && (i.bufferData(f[t], {
						usage: n.DYNAMIC_DRAW
					}), e.data = f[t]),
					i.pointToAttrib({
						location: o,
						size: r,
						type: a
					}),
					n.vertexAttribDivisor(o, 1)
				}),
				n.drawArraysInstanced(n.POINTS, 0, 1, c),
				n.bindBuffer(n.ARRAY_BUFFER, null),
				n.vertexAttribDivisor(this.instanceLinks, 0),
				n.vertexAttribDivisor(this.instanceColors, 0),
				n.vertexAttribDivisor(this.instanceParticles, 0)
			}
		},
		{
			key: "createBuffer",
			value: function(t, e) {
				var n = this.gl,
				i = {
					positions: null,
					indices: null,
					instanceBuffers: {}
				};
				if (this.modelPositions && (i.positions = new S.
			default(n, {
					data: this.modelPositions
				})), e) {
					var o = this.getInstanceConfig();
					E.
				default.forIn(o,
					function(t, o) {
						i.instanceBuffers[t] = (0, r.
					default)({
							data:
							e[t],
							buffer: new S.
						default(n, {
								data: e[t],
								usage: n.DYNAMIC_DRAW
							})
						},
						o)
					})
				}
				return i
			}
		},
		{
			key: "getInstanceConfig",
			value: function() {
				var t = this.gl;
				return {
					instanceLinkList: {
						location: this.instanceLinks,
						size: 2,
						type: t.UNSIGNED_SHORT
					},
					instanceColorList: {
						location: this.instanceColors,
						size: 4,
						type: t.UNSIGNED_BYTE
					},
					instanceParticleList: {
						location: this.instanceParticles,
						size: 1,
						type: t.UNSIGNED_BYTE
					}
				}
			}
		}]),
		e
	} (y.
default);
	e.
default = T
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(211),
	p = i(v),
	_ = n(587),
	m = i(_),
	g = n(110),
	y = n(219),
	x = function(t) {
		function e(t) { (0, s.
		default)(this, e);
			var n = (0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t));
			return n.store = new g.Store("buffer", 1024, 128, y.deleteBuffersCallback),
			n.shaderSource = m.
		default,
			n.shaderParams = {
				attributes: ["a_Position", "a_Info"],
				uniforms: ["u_matrix", "u_modelMatrix", "u_lightPVMatrix", "u_maskSampler", "u_maskScale"]
			},
			n
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "draw",
			value: function(t, e) {
				var n = this.gl,
				i = this.store,
				o = t.vertices,
				r = t.indeices,
				a = "build_" + t.id,
				s = e.matrix,
				l = e.modelMatrix,
				u = e.lightPVMatrix,
				c = e.maskScale || 1,
				f = void 0;
				i.exist(a) ? (f = i.get(a), this.bindVertexBuffer(o, f.vertices), this.bindElementBuffer(r, f.indices)) : f = i.set(a, {
					vertices: this.bindVertexBuffer(o),
					indices: this.bindElementBuffer(r),
					length: r.length
				}),
				n.uniformMatrix4fv(this.u_matrix, !1, s),
				n.uniformMatrix4fv(this.u_modelMatrix, !1, l),
				n.uniformMatrix4fv(this.u_lightPVMatrix, !1, u),
				n.uniform1i(this.u_maskSampler, 0),
				n.uniform1f(this.u_maskScale, c),
				n.drawElements(n.TRIANGLES, f.length, n.UNSIGNED_SHORT, 0)
			}
		}]),
		e
	} (p.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return !! jt(t) && t.some(function(t) {
			return (0, vt.isOverlayLayer)(t.type)
		})
	}
	function r(t) {
		return !! jt(t) && t.some(function(t) {
			return (0, vt.isGrayTileLayer)(t.type)
		})
	}
	function a(t) {
		return o(t) || t.some(function(t) {
			return (0, vt.isGrayTileLayer)(t.type) || (0, vt.isTextureLayer)(t) || (0, vt.isIndoorLayer)(t) || t.type === vt.RENDER_LAYER_TYPE.mask || t.type === vt.RENDER_LAYER_TYPE.highlight
		})
	}
	function s(t) {
		t && t.stops && !t.isEmpty() || (t = {
			stops: {
				0 : "rgba(255, 255, 255,1)",
				1 : "rgba(0,0,0, 1)"
			}
		});
		var e = document.createElement("canvas"),
		n = e.getContext("2d");
		e.width = 256,
		e.height = 1;
		var i = n.createLinearGradient(0, 0, 256, 1);
		for (var o in t.stops) t.stops[o] && i.addColorStop( + o, t.stops[o]);
		return n.fillStyle = i,
		n.fillRect(0, 0, 256, 1),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var l = n(17),
	u = i(l),
	c = n(223),
	f = i(c),
	d = n(27),
	h = i(d),
	v = n(24),
	p = i(v),
	_ = n(0),
	m = i(_),
	g = n(1),
	y = i(g),
	x = n(792),
	b = n(755),
	S = i(b),
	w = n(769),
	E = i(w),
	T = n(770),
	A = i(T),
	P = n(771),
	I = i(P),
	k = n(515),
	L = i(k),
	M = n(762),
	C = i(M),
	R = n(763),
	B = i(R),
	N = n(756),
	O = i(N),
	D = n(754),
	z = i(D),
	F = n(513),
	V = i(F),
	Y = n(757),
	U = i(Y),
	j = n(759),
	G = i(j),
	Z = n(761),
	H = i(Z),
	W = n(760),
	X = i(W),
	Q = n(758),
	q = i(Q),
	K = n(774),
	J = i(K),
	$ = n(764),
	tt = i($),
	et = n(28),
	nt = i(et),
	it = n(751),
	ot = i(it),
	rt = n(786),
	at = i(rt),
	st = n(782),
	lt = i(st),
	ut = n(781),
	ct = i(ut),
	ft = n(783),
	dt = i(ft),
	ht = n(496),
	vt = n(66),
	pt = n(516),
	_t = i(pt),
	mt = n(517),
	gt = i(mt),
	yt = n(780),
	xt = n(776),
	bt = i(xt),
	St = n(143),
	wt = n(301),
	Et = n(777),
	Tt = i(Et),
	At = n(213),
	Pt = i(At),
	It = n(107),
	kt = n(790),
	Lt = i(kt),
	Mt = n(752),
	Ct = i(Mt),
	Rt = n(768),
	Bt = i(Rt),
	Nt = n(778),
	Ot = i(Nt),
	Dt = n(773),
	zt = i(Dt),
	Ft = n(772),
	Vt = i(Ft),
	Yt = n(41),
	Ut = i(Yt),
	jt = Ut.
default.isArray,
	Gt = n(10),
	Zt = function() {
		function t(e, n) { (0, m.
		default)(this, t),
			n = n || {};
			var i = n.renderOptions || {},
			o = i.preserveDrawingBuffer,
			r = void 0 !== o && o,
			a = i.disableAntialias,
			s = void 0 !== a && a,
			l = i.disableShadow,
			u = void 0 !== l && l,
			c = i.skyOptions,
			f = void 0 === c ? {}: c,
			d = i.fogOptions,
			h = void 0 === d ? {}: d,
			v = i.enableBloom,
			p = void 0 !== v && v,
			_ = i.disableWebGL2,
			g = void 0 !== _ && _;
			e.style.zIndex = 2,
			this._destroyed = !1,
			this.styleId = wt.STYLE_ID[n.mapStyleId],
			this.isDefaultStyle = (0, wt.isDefaultStyle)(n.mapStyleId),
			this.canvas = e,
			this.maskScale = .5,
			this.map = n.map;
			var y = this.createContext(e, {
				preserveDrawingBuffer: r,
				disableWebGL2: g
			});
			this.textCache = this.isDefaultStyle ? new at.
		default(this.gl):
			null,
			this.imageCaches = {},
			this.grayCaches = {},
			this.colorMapCanvas = {},
			this.glyphManager = new ct.
		default(this.gl),
			this.markerManager = new dt.
		default(this.gl),
			this.lightManager = new Ct.
		default,
			this.painters = {
				base: new S.
			default({
					gl:
					y
				}),
				polygon: new E.
			default({
					gl:
					y
				}),
				side: new A.
			default({
					gl:
					y
				}),
				polyline: new I.
			default({
					gl:
					y
				}),
				arrow: new z.
			default({
					gl:
					y
				}),
				building: new O.
			default({
					gl:
					y
				}),
				buildingShadow: new J.
			default({
					gl:
					y
				}),
				marker: new B.
			default({
					gl:
					y,
					markerManager: this.markerManager
				}),
				symbol: new L.
			default({
					gl:
					y,
					textCache: this.textCache,
					glyphManager: this.glyphManager,
					markerManager: this.markerManager
				}),
				image: new V.
			default({
					gl:
					y
				}),
				gray: new U.
			default({
					gl:
					y
				}),
				label: new C.
			default({
					gl:
					this.gl,
					glyphManager: this.glyphManager
				}),
				mask: new tt.
			default({
					gl:
					y
				}),
				indoorMask: new G.
			default({
					gl:
					y
				}),
				indoorRegion: new H.
			default({
					gl:
					y
				}),
				indoorPoi: new X.
			default({
					gl:
					y,
					glyphManager: this.glyphManager,
					markerManager: this.markerManager
				}),
				indoorEscalator: new q.
			default({
					gl:
					y
				}),
				highlight: new Bt.
			default({
					gl:
					y
				}),
				trafficFlow: new zt.
			default({
					gl:
					y
				}),
				trafficBase: new Vt.
			default({
					gl:
					y
				})
			},
			this.disableAntialias = nt.
		default.isLowMobileDevice() || s,
			this.disableShadow = nt.
		default.isLowMobileDevice() || u,
			this.enableBloom = p && y.isWebGL2,
			this.createFrameBuffer({
				skyOptions: f,
				fogOptions: h
			}),
			this.resize(e.clientWidth, e.clientHeight),
			this.camera = new ot.
		default({
				map:
				this.map,
				view: this.view,
				look: [0, 0, 0, 0, 0, 0, 0, 1, 0],
				scale: n.scale,
				offset: n.offset
			}),
			this.camera.setRotate(n.pitch || 0, n.heading || 0),
			this.camera.fogPitch = h.pitch || 45,
			this.map.on("zoom_changed", nt.
		default.throttle(this._checkBgColor.bind(this), 50)),
			this._updateBgColor()
		}
		return (0, y.
	default)(t, [{
			key: "setDepth",
			value: function(t, e) {
				this.gl.depthRange(t, e)
			}
		},
		{
			key: "createContext",
			value: function(t, e) {
				var n = e.preserveDrawingBuffer,
				i = void 0 !== n && n,
				o = e.disableWebGL2,
				r = void 0 !== o && o,
				a = {
					alpha: !0,
					antialias: !1,
					depth: !0,
					failIfMajorPerformanceCaveat: !1,
					powerPreference: (0, et.isPC)() ? "high-performance": "default",
					preserveDrawingBuffer: i,
					stencil: !1
				},
				s = null;
				return r || (s = t.getContext("webgl2", a)),
				s ? s.isWebGL2 = !0 : (s = t.getContext("webgl", a), s.isWebGL2 = !1),
				s.id = Gt.uniqueId(),
				s.clearColor.apply(s, Gt.rgbaToGLColor((0, ht.getBgColor)(this.styleId, this.transform && this.transform.zoom || 10))),
				s.enable(s.BLEND),
				s.disable(s.CULL_FACE),
				s.disable(s.DEPTH_TEST),
				s.blendFunc(s.ONE, s.ONE_MINUS_SRC_ALPHA),
				this.gl = s,
				this.getExtensions(),
				s
			}
		},
		{
			key: "getExtensions",
			value: function() {
				var t = this.gl,
				e = new yt.Extensions(t);
				t.isWebGL2 ? (e.set("WEBGL_depth_texture", !0), e.set("OES_element_index_uint", !0)) : (e.get("WEBGL_depth_texture", "depth textures not supported"), e.get("OES_element_index_uint", "element_index_uint not supported"), e.get("WEBGL_draw_buffers", "draw buffers not supported"), e.extendWebGL1()),
				e.get("WEBGL_debug_renderer_info", "WEBGL_debug_renderer_info not supported"),
				t.extensions_TMAP = e
			}
		},
		{
			key: "createFrameBuffer",
			value: function(t) {
				var e = this.gl,
				n = this.enableBloom,
				i = {},
				o = this.gl.extensions_TMAP.get("WEBGL_depth_texture");
				i.mask = new _t.
			default(e),
				this.disableShadow || (i.shadow = new _t.
			default(e, {
					attachments: {
						depth: o ? new Pt.
					default(e, {
							pixels: null,
							internalformat: "DEPTH_COMPONENT24",
							format: "DEPTH_COMPONENT",
							type: "UNSIGNED_INT"
						}) : new gt.
					default(this.gl)
					}
				})),
				i.main = new _t.
			default(e, {
					id: "fb-main",
					attachments: {
						color: n ? [new Pt.
					default(e, {
							pixels: null
						}), new Pt.
					default(e, {
							pixels: null
						})] : void 0,
						depth: o ? new Pt.
					default(e, {
							tex: null,
							internalformat: "DEPTH24_STENCIL8",
							format: "DEPTH_STENCIL",
							type: "UNSIGNED_INT_24_8"
						}) : new gt.
					default(this.gl)
					}
				}),
				i.pass0 = new _t.
			default(e, {
					id: "fb-pass-1"
				}),
				i.pass1 = new _t.
			default(e, {
					id: "fb-pass-2"
				}),
				this.fxaaPass = new bt.
			default(e),
				this.fogPass = new Tt.
			default(e, {
					skyOptions: t.skyOptions,
					fogColor: t.fogOptions.color,
					fogRange: t.fogOptions.range
				}),
				n && (this.bloomBlurPass = new Ot.
			default(e)),
				this.frameBuffer = i
			}
		},
		{
			key: "onMapStyleUpdate",
			value: function(t) {
				if ("config" !== t && this.styleId === t) return void this._updateBgColor();
				this.isDefaultStyle !== (0, wt.isDefaultStyle)(t) ? (this.isDefaultStyle = (0, wt.isDefaultStyle)(t), this.textCache = this.isDefaultStyle ? new at.
			default(this.gl):
				null, this.painters.symbol.destroy(), this.painters.symbol = null, this.painters.symbol = new L.
			default({
					gl:
					this.gl,
					textCache: this.textCache,
					glyphManager: this.glyphManager,
					markerManager: this.markerManager
				})) : this.painters.symbol.clear(),
				this.painters.base.clearStore(),
				this.painters.building.clearStore(),
				this.painters.arrow.clearStore(),
				this.styleId = t,
				this._updateBgColor()
			}
		},
		{
			key: "getDrawContainer",
			value: function() {
				return this.canvas
			}
		},
		{
			key: "resize",
			value: function(t, e) {
				var n = this;
				this.view = {
					left: -t / 2,
					right: t / 2,
					bottom: -e / 2,
					top: e / 2,
					near: -1,
					far: 1e3
				};
				var i = nt.
			default.devicePixelRatio;
				this.canvas.width = t * i,
				this.canvas.height = e * i,
				this.gl.viewport(0, 0, t * i, e * i),
				this.camera && this.camera.setView(this.view),
				Gt.forIn(this.frameBuffer,
				function(t, e) {
					e && e.resize(n.canvas.width, n.canvas.height)
				})
			}
		},
		{
			key: "setTilesMatrix",
			value: function(t) {
				var e = this,
				n = {},
				i = {},
				o = this.view;
				Gt.forIn(t,
				function(t, r) {
					var a = (0, x.getModelMatrix)({
						view: o,
						offset: r.offset,
						scale: r.scale
					});
					n[t] = e.camera.pvMatrix.clone().multiply(a),
					i[t] = a
				}),
				this.tilesMatrix = n,
				this.tilesModelMatrix = i
			}
		},
		{
			key: "catcheTextTexture",
			value: function(t, e) {
				if (this.painters.symbol && (this.painters.symbol.preDraw({
					iconsLoader: e
				}), t && 0 !== t.length)) {
					var n = this.textCache;
					n.loadTexture();
					for (var i, o = 0; i = t[o]; o++) i.features && "" !== i.features && n.add(i.id, i.features)
				}
			}
		},
		{
			key: "clear",
			value: function() {
				var t = this.gl;
				t.clear(t.COLOR_BUFFER_BIT | t.DEPTH_BUFFER_BIT | t.STENCIL_BUFFER_BIT)
			}
		},
		{
			key: "preRender",
			value: function(t, e) {
				t = t || this.transform;
				var n = t && t.heading || 0,
				i = t && t.pitch || 0,
				o = t && t.roll || 0;
				this.camera.setRotate(i, n, o),
				this.setTilesMatrix(e)
			}
		},
		{
			key: "drawMask",
			value: function(t) {
				var e = this,
				n = this.maskScale,
				i = t.filter(function(t) {
					return t.type === vt.RENDER_LAYER_TYPE.indoorRegion
				}),
				o = t.filter(function(t) {
					return t.type === vt.RENDER_LAYER_TYPE.mask
				});
				this.frameBuffer.mask.bind();
				var r = this.gl;
				if (r.clearColor(0, 1, 0, 1), this.clear(), i.length || o.length) {
					var a = this.transform,
					s = (new It.Matrix4).scale(n, n, n).multiply(this.camera.pvMatrix);
					this.painters.indoorMask.preDraw(),
					i.forEach(function(t) {
						var n = t.tiles && t.tiles[0];
						if (n) {
							var i = n.features,
							o = i.center,
							r = i.bounds,
							l = i.floorIndex,
							u = {
								uid: t.id + "_" + l + "_bounds",
								center: o,
								position: r[0].top.position,
								index: r[0].top.index
							};
							e.painters.indoorMask.draw(u, a, s, {
								color: [1, 1, 1, 1]
							})
						}
					}),
					this.painters.mask.preDraw(),
					o.forEach(function(t) {
						if (!t.isMaskReverse) {
							var n = t.tiles && t.tiles[0];
							n && e.painters.mask.draw(a, s, n.features, {
								color: [1, 1, 1, 1],
								distanceScales: e.distanceScales
							})
						}
					});
					var l = t.filter(function(t) {
						return t.type === vt.RENDER_LAYER_TYPE.mask && t.isMaskReverse
					});
					l && l.length >= 1 && (r.colorMask(!1, !0, !1, !1), r.clearColor(0, 0, 0, 1), this.clear(), l.forEach(function(t) {
						var n = t.tiles && t.tiles[0];
						n && e.painters.mask.draw(a, s, n.features, {
							color: [0, 1, 0, 0],
							distanceScales: e.distanceScales
						})
					}), r.colorMask(!0, !0, !0, !0))
				}
				r.clearColor.apply(r, Gt.rgbaToGLColor(this.background)),
				this.frameBuffer.mask.unbind()
			}
		},
		{
			key: "drawShadow",
			value: function(t) {
				var e = this,
				n = t.filter(function(t) {
					return t.type === vt.RENDER_LAYER_TYPE.building3d
				});
				if (n.length) {
					this.frameBuffer.shadow.bind();
					var i = this.gl;
					this.clear(),
					i.enable(i.DEPTH_TEST),
					i.enable(i.CULL_FACE),
					i.colorMask(!1, !1, !1, !1);
					var o = this.lightManager.getLightPVMatrix(this.view);
					n.forEach(function(t) {
						e.drawBuildingShadows(t, o)
					}),
					i.disable(i.DEPTH_TEST),
					i.disable(i.CULL_FACE),
					i.colorMask(!0, !0, !0, !0),
					this.frameBuffer.shadow.unbind()
				}
			}
		},
		{
			key: "drawBloom",
			value: function() {
				var t = this.gl,
				e = 0,
				n = "main",
				i = "pass0",
				o = !0;
				t.clearColor(0, 0, 0, 0);
				for (var r = 0; r < 9; r++) this.bloomBlurPass.setProps({
					horizontal: o
				}),
				this.bloomBlurPass.render({
					inputBuffer: this.frameBuffer[n],
					outputBuffer: this.frameBuffer[i],
					colorIndex: 0 === r ? 1 : 0
				}),
				n = "pass" + e,
				i = "pass" + (1 - e),
				e = 1 - e,
				o = !o;
				t.blendFunc(t.ONE, t.ONE),
				this.bloomBlurPass.setProps({
					horizontal: o
				}),
				this.bloomBlurPass.render({
					inputBuffer: this.frameBuffer[n],
					outputBuffer: this.frameBuffer.main,
					preserve: !0
				}),
				t.blendFunc(t.ONE, t.ONE_MINUS_SRC_ALPHA),
				t.clearColor.apply(t, (0, p.
			default)(Gt.rgbaToGLColor(this.background)))
			}
		},
		{
			key: "clearBloomBuffer",
			value: function() {
				var t = this.gl;
				this.frameBuffer.main.setDrawBuffers(["COLOR_ATTACHMENT0", "COLOR_ATTACHMENT1"]),
				t.clearBufferfv(t.COLOR, 1, new Float32Array([0, 0, 0, 0])),
				this.frameBuffer.main.setDrawBuffers(["COLOR_ATTACHMENT0"])
			}
		},
		{
			key: "render",
			value: function(t, e, n, i) {
				if (!this._destroyed) {
					e = e || this.transform,
					this.transform = e,
					t = t || this.data,
					this.data = t,
					this.distanceScales = a(t) ? e.getDistanceScales() : null,
					this.lightManager.update({
						transform: e,
						camera: this.camera,
						view: this.view
					}),
					this.textCache && this.textCache.updateRenderTiles(this.tilesMatrix),
					this.drawMask(t),
					!this.disableShadow && this.lightManager.getShadowLight() && this.drawShadow(t);
					var o = !(i.disableAntialias || this.disableAntialias),
					r = this.camera.getFogEdge(),
					s = this.gl.extensions_TMAP.get("WEBGL_depth_texture") && r[1] < 1 / 0,
					l = [],
					u = [];
					if (t.forEach(function(t) {
						t.rank >= (0, St.getNAALine)() ? u.push(t) : l.push(t)
					}), this.frameBuffer.main.bind(), this.clear(), this.enableBloom && this.clearBloomBuffer(), this.draw(l, n, i), this.enableBloom && this.drawBloom(), this.fxaaPass.setProps({
						enabled: o
					}), this.fxaaPass.render({
						inputBuffer: this.frameBuffer.main,
						outputBuffer: null
					}), s) {
						var c = this.camera.pvMatrix.multiplyVector4({
							elements: [0, 0, 0, 1]
						}).elements;
						this.fogPass.setProps({
							fogEdge: r,
							depthAtCenter: (c[2] / c[3] + 1) / 2,
							depthTexture: this.frameBuffer.main.depth.texture,
							heading: e.heading
						}),
						this.frameBuffer.pass0.copy(null),
						this.fogPass.render({
							inputBuffer: this.frameBuffer.pass0,
							outputBuffer: null,
							preserve: !0
						})
					}
					this.draw(u, n, i)
				}
			}
		},
		{
			key: "draw",
			value: function(t, e, n) {
				var i = this,
				o = n.fadeChange,
				r = n.iconsLoader;
				t.forEach(function(n) {
					switch (n.type) {
					case vt.RENDER_LAYER_TYPE.text:
						i.textCache && i.catcheTextTexture(n.tiles, r);
						var a = t.filter(function(t) {
							return t.type === vt.BASE_LAYER_TYPE.point
						})[0],
						s = t.filter(function(t) {
							return t.type === vt.BASE_LAYER_TYPE.label
						})[0];
						i.baseTextOptions = {
							placement: e,
							fadeChange: o,
							iconsLoader: r
						},
						i.drawBaseText(e, o, r, {
							showPoint: !!a,
							showLabel: !!s
						});
						break;
					case vt.RENDER_LAYER_TYPE.base:
						i.drawBase(n);
						break;
					case vt.RENDER_LAYER_TYPE.arrow:
						i.drawArrows(n);
						break;
					case vt.RENDER_LAYER_TYPE.building3d:
						i.drawBuildings(n, !0);
						break;
					case vt.RENDER_LAYER_TYPE.building2d:
						i.drawBuildings(n, !1),
						i.drawBase(n, !0);
						break;
					case vt.RENDER_LAYER_TYPE.circle:
					case vt.RENDER_LAYER_TYPE.ellipse:
					case vt.RENDER_LAYER_TYPE.rectangle:
					case vt.RENDER_LAYER_TYPE.polygon:
						i.drawPolygons(n, {
							distanceScales: i.distanceScales,
							usePicking: !1
						});
						break;
					case vt.RENDER_LAYER_TYPE.polyline:
						i.drawPolylines(n, {
							distanceScales: i.distanceScales,
							usePicking: !1
						});
						break;
					case vt.RENDER_LAYER_TYPE.label:
						i.drawLabels(n, {
							distanceScales: i.distanceScales,
							usePicking: !1
						});
						break;
					case vt.RENDER_LAYER_TYPE.marker:
						i.drawMarkers(n, {
							distanceScales: i.distanceScales,
							usePicking: !1
						});
						break;
					case vt.RENDER_LAYER_TYPE.visualPlugin:
						n.visualPlugin.draw(i.camera);
						break;
					case vt.RENDER_LAYER_TYPE.grayTile:
						i.drawGrayTile(n);
						break;
					case vt.RENDER_LAYER_TYPE.imageTile:
						i.drawImageTile(n);
						break;
					case vt.RENDER_LAYER_TYPE.canvasGround:
					case vt.RENDER_LAYER_TYPE.imageGround:
						i.drawGroundLayer(n);
						break;
					case vt.RENDER_LAYER_TYPE.indoorRegion:
						i.drawIndoorRegions(n);
						break;
					case vt.RENDER_LAYER_TYPE.indoorPoi:
						i.drawIndoorPois(n, {
							fadeChange: o
						});
						break;
					case vt.RENDER_LAYER_TYPE.indoorEscalator:
						i.drawIndoorEscalators(n);
						break;
					case vt.RENDER_LAYER_TYPE.highlight:
						i.drawHighlight(n, {
							distanceScales: i.distanceScales,
							usePicking: !1
						});
						break;
					case vt.RENDER_LAYER_TYPE.trafficBase:
						i.drawTrafficBaseTile(n);
						break;
					case vt.RENDER_LAYER_TYPE.trafficFlow:
						i.drawTrafficFlowTile(n)
					}
				})
			}
		},
		{
			key: "hasPickableLayer",
			value: function() {
				return o(this.data) || r(this.data)
			}
		},
		{
			key: "isNeedColor",
			value: function(t) {
				return this.data.some(function(e) {
					return (0, vt.isGrayTileLayer)(e.type) && e.id === t
				})
			}
		},
		{
			key: "renderForPicking",
			value: function(t) {
				var e = this;
				if (this.data) {
					var n = this.data.filter(function(t) {
						return (0, vt.isOverlayLayer)(t.type) || (0, vt.isGrayTileLayer)(t.type)
					});
					return n.length > 0 && this.distanceScales ? (n.forEach(function(n, i) {
						switch (n.type) {
						case vt.RENDER_LAYER_TYPE.rectangle:
						case vt.RENDER_LAYER_TYPE.circle:
						case vt.RENDER_LAYER_TYPE.ellipse:
						case vt.RENDER_LAYER_TYPE.polygon:
							t && t(i),
							e.drawPolygons(n, {
								distanceScales: e.distanceScales,
								usePicking: !0,
								picking_zindex: i
							});
							break;
						case vt.RENDER_LAYER_TYPE.polyline:
							t && t(i),
							e.drawPolylines(n, {
								distanceScales: e.distanceScales,
								usePicking: !0,
								picking_zindex: i
							});
							break;
						case vt.RENDER_LAYER_TYPE.label:
							t && t(i),
							e.drawLabels(n, {
								distanceScales: e.distanceScales,
								usePicking: !0
							});
							break;
						case vt.RENDER_LAYER_TYPE.marker:
							t && t(i),
							e.drawMarkers(n, {
								distanceScales: e.distanceScales,
								usePicking: !0
							});
							break;
						case vt.RENDER_LAYER_TYPE.grayTile:
							t && t(i),
							e.drawGrayTile(n, {
								usePicking: !0
							})
						}
					}), n) : null
				}
			}
		},
		{
			key: "renderForFeaturePicking",
			value: function() {
				if (this.data) {
					var t = this.getTypeLayer(vt.BASE_LAYER_TYPE.base),
					e = this.getTypeLayer(vt.BASE_LAYER_TYPE.point),
					n = this.getTypeLayer(vt.BASE_LAYER_TYPE.label);
					this.drawBase(t, !1, !0);
					var i = this.baseTextOptions,
					o = i.placement,
					r = i.fadeChange,
					a = i.iconsLoader;
					o && r && a && this.drawBaseText(o, r, a, {
						showPoint: !!e,
						showLabel: !!n,
						usePicking: !0
					})
				}
			}
		},
		{
			key: "getTypeLayer",
			value: function(t) {
				if (this.data) return this.data.filter(function(e) {
					return e.type === t
				})[0]
			}
		},
		{
			key: "drawBaseText",
			value: function(t, e, n, i) {
				t.setInUse(!0);
				var o = this.painters,
				r = this.maskScale,
				a = this.gl;
				o.symbol && (o.symbol.preDraw({
					iconsLoader: n,
					maskTexture: this.frameBuffer.mask.color
				}), i.showLabel && t.calculateAlsoShowedLabel(this.tilesMatrix, this.camera, this.transform), o.symbol.draw(this.transform, this.tilesMatrix, t, {
					showPoint: i.showPoint,
					showLabel: i.showLabel,
					asBackground: !1,
					updateSubData: !0,
					fadeChange: e,
					iconsLoader: n,
					maskScale: r,
					usePicking: i.usePicking
				}), o.symbol.afterDraw(), this.frameBuffer.mask.color.unbind(a, {
					textureIndex: 3
				}), t.setInUse(!1))
			}
		},
		{
			key: "drawBuildings",
			value: function(t, e) {
				var n = this,
				i = t;
				if (i && 0 !== i.tiles.length) {
					var o = this.gl;
					this._withBlendEliminationDraw(o,
					function() {
						var t = n.painters.building,
						r = i.tiles;
						t.preDraw({
							lightUniforms: n.lightManager.uniforms,
							shadowTexture: n.frameBuffer.shadow && n.frameBuffer.shadow.depth
						}),
						n.frameBuffer.mask.color.bind(o);
						var a = !0,
						s = !1,
						l = void 0;
						try {
							for (var u, c = (0, h.
						default)(r); ! (a = (u = c.next()).done); a = !0) {
								var f = u.value,
								d = f.features && f.features.buildings;
								if (d) {
									var v = {
										zoom: n.transform.roundZoom,
										matrix: n.tilesMatrix[f.id].elements,
										modelMatrix: n.tilesModelMatrix[f.id].elements,
										maskScale: n.maskScale
									};
									t.draw(d, v, {
										scale: f.scale,
										use3D: e
									})
								}
							}
						} catch(t) {
							s = !0,
							l = t
						} finally {
							try { ! a && c.
								return && c.
								return ()
							} finally {
								if (s) throw l
							}
						}
						n.frameBuffer.mask.color.unbind(),
						t.afterDraw()
					},
					{
						useCullFace: !0
					})
				}
			}
		},
		{
			key: "drawArrows",
			value: function(t) {
				var e = t;
				if (e && e.tiles && 0 !== e.tiles.length) {
					var n = this.painters.arrow,
					i = e.tiles;
					n.preDraw();
					var o = !0,
					r = !1,
					a = void 0;
					try {
						for (var s, l = (0, h.
					default)(i); ! (o = (s = l.next()).done); o = !0) {
							var u = s.value,
							c = u.features;
							if (c) {
								var f = this.transform,
								d = f.width,
								v = f.height,
								p = f.scale,
								_ = {
									matrix: this.tilesMatrix[u.id].elements,
									width: d,
									height: v,
									scale: p
								};
								n.draw(c, _, {
									tileId: u.id
								})
							}
						}
					} catch(t) {
						r = !0,
						a = t
					} finally {
						try { ! o && l.
							return && l.
							return ()
						} finally {
							if (r) throw a
						}
					}
					n.afterDraw()
				}
			}
		},
		{
			key: "drawBuildingShadows",
			value: function(t, e) {
				if (t && 0 !== t.tiles.length) {
					var n = this.painters.buildingShadow;
					n.preDraw(),
					this.frameBuffer.mask.color.bind(this.gl);
					var i = !0,
					o = !1,
					r = void 0;
					try {
						for (var a, s = (0, h.
					default)(t.tiles); ! (i = (a = s.next()).done); i = !0) {
							var l = a.value,
							u = l.features;
							if (u) {
								var c = {
									matrix: this.tilesMatrix[l.id].elements,
									modelMatrix: this.tilesModelMatrix[l.id].elements,
									lightPVMatrix: e.elements,
									maskScale: this.maskScale
								};
								n.draw(u, c, {
									scale: l.scale
								})
							}
						}
					} catch(t) {
						o = !0,
						r = t
					} finally {
						try { ! i && s.
							return && s.
							return ()
						} finally {
							if (o) throw r
						}
					}
					this.frameBuffer.mask.color.unbind()
				}
			}
		},
		{
			key: "drawBase",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] && arguments[1],
				n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2];
				if (t && 0 !== t.tiles.length) {
					var i = this.painters.base,
					o = t.tiles;
					i.preDraw({
						lightUniforms: this.lightManager.uniforms,
						shadowTexture: this.frameBuffer.shadow && this.frameBuffer.shadow.depth
					});
					var r = !0,
					a = !1,
					s = void 0;
					try {
						for (var l, u = (0, h.
					default)(o); ! (r = (l = u.next()).done); r = !0) {
							var c = l.value,
							f = e ? c.features && c.features.buildSideShapes: c.features;
							if (f) {
								var d = {
									matrix: this.tilesMatrix[c.id].elements,
									modelMatrix: this.tilesModelMatrix[c.id].elements
								};
								i.draw(f, d, c.scale, this.transform._zoom, t.id, n)
							}
						}
					} catch(t) {
						a = !0,
						s = t
					} finally {
						try { ! r && u.
							return && u.
							return ()
						} finally {
							if (a) throw s
						}
					}
					i.afterDraw()
				}
			}
		},
		{
			key: "drawHighlight",
			value: function(t, e) {
				var n = this.gl,
				i = t.tiles && t.tiles[0];
				if (i && i.features) {
					n.enable(n.DEPTH_TEST),
					n.enable(n.STENCIL_TEST),
					n.colorMask(!1, !1, !1, !1),
					n.depthMask(!1),
					n.enable(n.CULL_FACE),
					n.stencilFunc(n.ALWAYS, 1, 255),
					n.clearStencil(0),
					n.clear(n.STENCIL_BUFFER_BIT);
					var o = this.camera.getLookPosition().elements,
					r = this.camera.getLightPosition().elements,
					a = this.camera.pvMatrix;
					e.noBorder = !0,
					e.extruded = !0,
					n.cullFace(n.FRONT),
					n.stencilOp(n.KEEP, n.INCR, n.KEEP),
					this._reallyDrawPolygon(a, i, o, r, e),
					e.extruded = !1,
					n.cullFace(n.BACK),
					n.stencilOp(n.KEEP, n.INCR, n.INCR),
					this._reallyDrawPolygon(a, i, o, r, e),
					e.extruded = !0,
					n.stencilOp(n.KEEP, n.DECR, n.KEEP),
					this._reallyDrawPolygon(a, i, o, r, e),
					n.disable(n.DEPTH_TEST),
					n.colorMask(!0, !0, !0, !0),
					n.stencilMask(0),
					n.blendFuncSeparate(n.SRC_ALPHA, n.ONE_MINUS_SRC_ALPHA, n.ZERO, n.ONE);
					var s = this.painters.highlight;
					n.stencilFunc(n.EQUAL, 1, 255),
					s.preDraw(),
					s.draw({
						color: i.features.highlightColor
					}),
					n.stencilFunc(n.EQUAL, 0, 255),
					s.draw({
						color: i.features.shadeColor
					}),
					n.disable(n.STENCIL_TEST),
					n.disable(n.CULL_FACE),
					n.cullFace(n.BACK),
					n.depthMask(!0),
					n.stencilMask(255),
					n.blendFuncSeparate(n.ONE, n.ONE_MINUS_SRC_ALPHA, n.ONE, n.ONE_MINUS_SRC_ALPHA)
				}
			}
		},
		{
			key: "drawPolygons",
			value: function(t, e) {
				var n = this.gl,
				i = t.tiles && t.tiles[0];
				if (i && i.features) {
					var o = this.camera.getLookPosition().elements,
					r = this.camera.getLightPosition().elements,
					a = this.camera.pvMatrix;
					e.usePicking || n.blendFuncSeparate(n.SRC_ALPHA, n.ONE_MINUS_SRC_ALPHA, n.ONE, n.ONE_MINUS_SRC_ALPHA),
					n.enable(n.CULL_FACE),
					n.enable(n.DEPTH_TEST),
					n.colorMask(!1, !1, !1, !1),
					this._reallyDrawPolygon(a, i, o, r, e),
					n.disable(n.DEPTH_TEST),
					n.colorMask(!0, !0, !0, !0),
					this._reallyDrawPolygon(a, i, o, r, e),
					n.disable(n.CULL_FACE),
					e.usePicking || n.blendFuncSeparate(n.ONE, n.ONE_MINUS_SRC_ALPHA, n.ONE, n.ONE_MINUS_SRC_ALPHA)
				}
			}
		},
		{
			key: "_reallyDrawPolygon",
			value: function(t, e, n, i, o) {
				this.painters.side.preDraw({
					lightUniforms: this.lightManager.uniforms
				}),
				o.noBorder || this.painters.side.draw(this.transform, t, e.features, {
					drawBorder: !0,
					distanceScales: o.distanceScales,
					usePicking: o.usePicking,
					picking_zindex: o.picking_zindex,
					cameraPosition: n,
					lightPosition: i,
					extruded: o.extruded
				}),
				this.painters.side.draw(this.transform, t, e.features, {
					drawBorder: !1,
					distanceScales: o.distanceScales,
					usePicking: o.usePicking,
					picking_zindex: o.picking_zindex,
					cameraPosition: n,
					lightPosition: i,
					extruded: o.extruded
				}),
				this.painters.polygon.preDraw({
					lightUniforms: this.lightManager.uniforms
				}),
				this.painters.polygon.draw(this.transform, t, e.features, {
					distanceScales: o.distanceScales,
					usePicking: o.usePicking,
					picking_zindex: o.picking_zindex,
					cameraPosition: n,
					lightPosition: i,
					extruded: o.extruded
				})
			}
		},
		{
			key: "drawPolylines",
			value: function(t, e) {
				var n = this.gl;
				this.painters.polyline.preDraw();
				var i = t.tiles && t.tiles[0];
				if (i && i.features) {
					var o = this.camera.pvMatrix;
					e.usePicking || (n.blendFunc(n.SRC_ALPHA, n.ONE_MINUS_SRC_ALPHA), this.enableBloom && n.frameBuffer.setDrawBuffers(["COLOR_ATTACHMENT0", "COLOR_ATTACHMENT1"])),
					this.painters.polyline.draw(this.transform, o, i.features, {
						drawBorder: !0,
						distanceScales: e.distanceScales,
						usePicking: e.usePicking,
						picking_zindex: e.picking_zindex
					}),
					this.painters.polyline.draw(this.transform, o, i.features, {
						drawBorder: !1,
						distanceScales: e.distanceScales,
						usePicking: e.usePicking,
						picking_zindex: e.picking_zindex
					}),
					e.usePicking || (n.blendFunc(n.ONE, n.ONE_MINUS_SRC_ALPHA), this.enableBloom && n.frameBuffer.setDrawBuffers(["COLOR_ATTACHMENT0"]))
				}
			}
		},
		{
			key: "drawGrayTile",
			value: function(t, e) {
				var n = this,
				i = this.tilesMatrix,
				o = this.painters,
				r = this.grayCaches,
				a = this.gl,
				l = this.transform,
				u = l.viewTransition,
				c = l.zoom,
				d = l.center,
				h = l.width,
				v = l.height;
				r[t.id] || (r[t.id] = new lt.
			default(a, {
					itemWidth: t.tileSize,
					config: {
						magFilter: a.LINEAR
					}
				}));
				var p = r[t.id];
				t.tiles.forEach(function(t) {
					p.addImage(t.id, t.features)
				}),
				p.loadTexture(),
				this.colorMapCanvas[t.id] || (this.colorMapCanvas[t.id] = s(t.colorMap)),
				this.colorMapTexture ? this.colorMapTexture.update(this.colorMapCanvas[t.id], {
					textureIndex: 1,
					width: 256,
					height: 1
				}) : this.colorMapTexture = new Pt.
			default(this.map.renderEngine.gl, {
					pixels: this.colorMapCanvas[t.id],
					width: 256,
					height: 1
				});
				var _ = o.gray;
				_.preDraw({
					hasColorMap: !!t.colorMap,
					colorMapTexture: this.colorMapTexture,
					rgbaFormatter: t.rgbaFormatter
				}),
				a.enable(a.CULL_FACE),
				t.tiles.forEach(function(o) {
					var r = p.getTexCoord(o.id);
					r && _.draw((0, f.
				default)({
						viewTransition:
						u,
						mercator: [o.coordX * o.size, o.coordY * o.size, o.coordZ],
						zoom: c,
						center: d,
						pvMatrix: n.camera.pvMatrix,
						matrix: i[o.id],
						size: {
							width: t.tileSize,
							height: t.tileSize
						},
						resolution: {
							width: h,
							height: v
						},
						texInfo: r,
						opacity: t.opacity
					},
					e))
				}),
				a.disable(a.CULL_FACE),
				_.afterDraw()
			}
		},
		{
			key: "drawImageTile",
			value: function(t) {
				var e = this,
				n = this.tilesMatrix,
				i = this.painters,
				o = this.imageCaches,
				r = this.gl,
				a = this.transform,
				s = a.isSphere,
				l = a.viewTransition,
				u = a.zoom,
				c = a.center;
				o[t.id] || (o[t.id] = new lt.
			default(r, {
					itemWidth: t.tileSize,
					config: {
						magFilter: r.NEAREST
					}
				}));
				var f = o[t.id];
				t.tiles.forEach(function(t) {
					f.addImage(t.id, t.features)
				}),
				f.loadTexture();
				var d = i.image;
				d.preDraw({
					isSphere: s
				}),
				r.enable(r.CULL_FACE),
				t.tiles.forEach(function(i) {
					var o = f.getTexCoord(i.id);
					o && d.draw({
						isSphere: s,
						viewTransition: l,
						mercator: [i.coordX * i.size, i.coordY * i.size, i.coordZ],
						zoom: u,
						center: c,
						pvMatrix: e.camera.pvMatrix,
						matrix: n[i.id],
						size: {
							width: t.tileSize,
							height: t.tileSize
						},
						texInfo: o,
						opacity: t.opacity
					})
				}),
				r.disable(r.CULL_FACE),
				d.afterDraw()
			}
		},
		{
			key: "drawTrafficBaseTile",
			value: function(t) {
				if (t && 0 !== t.tiles.length) {
					var e = this.painters.trafficBase,
					n = t.tiles;
					e.preDraw({
						lightUniforms: this.lightManager.uniforms,
						shadowTexture: this.frameBuffer.shadow && this.frameBuffer.shadow.depth
					});
					var i = !0,
					o = !1,
					r = void 0;
					try {
						for (var a, s = (0, h.
					default)(n); ! (i = (a = s.next()).done); i = !0) {
							var l = a.value,
							u = l.features.base;
							if (u) {
								var c = {
									matrix: this.tilesMatrix[l.id].elements,
									modelMatrix: this.tilesModelMatrix[l.id].elements
								};
								u.id = l.id + "_" + l.features.uid,
								e.draw(u, c, l.scale, this.transform._zoom, t.opacity, t.id)
							}
						}
					} catch(t) {
						o = !0,
						r = t
					} finally {
						try { ! i && s.
							return && s.
							return ()
						} finally {
							if (o) throw r
						}
					}
					e.afterDraw()
				}
			}
		},
		{
			key: "drawTrafficFlowTile",
			value: function(t) {
				var e = this,
				n = this.tilesMatrix,
				i = this.painters,
				o = this.imageCaches,
				r = this.gl;
				o[t.id] || (o[t.id] = new lt.
			default(r, {
					itemWidth: 64,
					width: 1024,
					height: 1024,
					config: {
						minFilter: r.NEAREST,
						magFilter: r.NEAREST,
						flipY: !0
					}
				}));
				var a = o[t.id];
				t.tiles.forEach(function(t) {
					a.addImage(t.id + "_" + t.features.uid, t.features.flow.pathImage)
				}),
				a.loadTexture();
				var s = i.trafficFlow;
				s.preDraw(),
				this._startTick || (this._startTick = nt.
			default.now()),
				t.tiles.forEach(function(t) {
					var i = a.getTexCoord(t.id + "_" + t.features.uid);
					i && s.draw(t.features.flow, {
						uid: t.uid + "_" + t.features.uid,
						matrix: n[t.id],
						texInfo: i,
						tick: nt.
					default.now() - e._startTick
					})
				}),
				s.afterDraw()
			}
		},
		{
			key: "drawGroundLayer",
			value: function(t) {
				var e = this,
				n = this.painters,
				i = this.gl,
				o = n.image;
				o.preDraw(),
				t.tiles.forEach(function(n) {
					n.features.texture.bind(i);
					var r = n.features.bounds,
					a = e.transform.latLngToCenterLocalPixelByDistanceScales(r.getNorthEast(), {
						distanceScales: e.distanceScales,
						center: r.getSouthWest()
					});
					a.x = Math.abs(a.x),
					a.y = Math.abs(a.y);
					var s = e.transform.latLngToCenterLocalPixelByDistanceScales(n.features.center, {
						distanceScales: e.distanceScales,
						center: e.map.getCenter()
					});
					o.draw({
						matrix: e.camera.pvMatrix.clone().translate(s.x - a.x / 2, s.y + a.y / 2, 0),
						size: {
							width: a.x,
							height: a.y
						},
						texInfo: n.features.texInfo,
						opacity: t.opacity
					}),
					n.features.texture.unbind(i)
				}),
				o.afterDraw()
			}
		},
		{
			key: "drawLabels",
			value: function(t, e) {
				var n = this.gl;
				this.painters.label.preDraw();
				var i = t.tiles && t.tiles[0];
				if (i && i.features) {
					e.usePicking || n.blendFuncSeparate(n.SRC_ALPHA, n.ONE_MINUS_SRC_ALPHA, n.ZERO, n.ONE);
					var o = this.camera.pvMatrix;
					t._enableCollision && this._LabelCalcCollisionCount > 0 && (i.features.instanceShowList = (0, Lt.
				default)(i.features.labelInfoList, this.transform, this.camera, t.type), this._LabelCalcCollisionCount -= 1),
					this.painters.label.draw(this.transform, o, i.features, {
						distanceScales: e.distanceScales,
						usePicking: e.usePicking,
						picking_zindex: e.picking_zindex
					}),
					e.usePicking || n.blendFuncSeparate(n.ONE, n.ONE_MINUS_SRC_ALPHA, n.ONE, n.ONE_MINUS_SRC_ALPHA)
				}
			}
		},
		{
			key: "updateLabel",
			value: function(t) {
				if (t) {
					var e = 0;
					t.forEach(function(t) {
						"LABEL" !== t.type && "MARKER" !== t.type || (e += 1)
					}),
					this._LabelCalcCollisionCount = e
				}
			}
		},
		{
			key: "drawMarkers",
			value: function(t, e) {
				var n = t.tiles && t.tiles[0];
				if (n && n.features && n.features.count > 0) {
					this.painters.marker.preDraw();
					var i = this.camera.pvMatrix;
					t._enableCollision && this._LabelCalcCollisionCount > 0 && (n.features.instanceShowList = (0, Lt.
				default)(n.features.labelInfoList, this.transform, this.camera, t.type), this._LabelCalcCollisionCount -= 1),
					this.painters.marker.draw(this.transform, i, n.features, {
						distanceScales: e.distanceScales,
						usePicking: e.usePicking,
						picking_zindex: e.picking_zindex
					})
				}
			}
		},
		{
			key: "drawIndoorRegions",
			value: function(t) {
				var e = this,
				n = this.gl,
				i = t.tiles && t.tiles[0];
				if (i) {
					var o = i.features,
					r = o.center,
					a = o.regions,
					s = o.floorIndex,
					l = a[0],
					u = this.camera.pvMatrix;
					n.enable(n.DEPTH_TEST),
					n.enable(n.CULL_FACE),
					n.cullFace(n.BACK),
					this.painters.indoorRegion.preDraw({
						lightUniforms: this.lightManager.uniforms
					}); ["sides", "top"].forEach(function(n) {
						var i = {
							uid: t.id + "_" + s + "_region_" + n,
							center: r,
							position: l[n].position,
							color: l[n].color,
							normal: l[n].normal,
							index: l[n].index
						},
						o = {
							distanceScales: e.distanceScales
						};
						e.painters.indoorRegion.draw(i, e.transform, u, o)
					}),
					n.disable(n.DEPTH_TEST),
					n.disable(n.CULL_FACE)
				}
			}
		},
		{
			key: "drawIndoorEscalators",
			value: function(t) {
				var e = this.gl,
				n = t.tiles && t.tiles[0];
				if (n) {
					var i = n.features,
					o = i.escalators[0];
					if (o) {
						o.uid = t.id,
						o.center = i.center;
						var r = this.camera.pvMatrix;
						e.enable(e.DEPTH_TEST),
						e.enable(e.CULL_FACE),
						e.cullFace(e.BACK),
						this.painters.indoorEscalator.preDraw({
							lightUniforms: this.lightManager.uniforms
						});
						var a = {
							distanceScales: this.distanceScales
						};
						this.painters.indoorEscalator.draw(o, this.transform, r, a),
						e.disable(e.DEPTH_TEST),
						e.disable(e.CULL_FACE)
					}
				}
			}
		},
		{
			key: "drawIndoorPois",
			value: function(t) {
				var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
				n = t.tiles && t.tiles[0];
				if (n) {
					var i = n.features,
					o = Math.round(this.transform.zoom);
					if (i.pois[o] && i.pois[o][0]) {
						var r = i.pois[o][0].instance;
						if (r.id = n.id + "_" + o, r.center = i.center, !r.count) return;
						this.painters.indoorPoi.preDraw(),
						this.painters.indoorPoi.draw(this.transform, this.camera.pvMatrix, r, {
							showPoint: !0,
							showLabel: !0,
							distanceScales: this.distanceScales,
							iconsLoader: {},
							fadeChange: e.fadeChange,
							updateSubData: !0
						})
					}
				}
			}
		},
		{
			key: "_withBlendEliminationDraw",
			value: function(t, e, n) {
				t.enable(t.DEPTH_TEST),
				n.useCullFace && t.enable(t.CULL_FACE),
				t.colorMask(!1, !1, !1, !1),
				e && e(),
				t.depthFunc(t.LEQUAL),
				t.colorMask(!0, !0, !0, !0),
				e && e(),
				t.disable(t.DEPTH_TEST),
				n.useCullFace && t.disable(t.CULL_FACE)
			}
		},
		{
			key: "_updateBgColor",
			value: function(t) {
				if (!this._destroyed) {
					var e = this.getBgColor(); (e !== this.background || t) && (this._disableUpdateClearColor || (this.background = e, this.gl.clearColor.apply(this.gl, Gt.rgbaToGLColor(e))), this.fogPass.setFogColor(Gt.rgbaToGLColor(e)), this.map && this.map.emit("bgcolor_change", e))
				}
			}
		},
		{
			key: "getBgColor",
			value: function() {
				return (0, ht.getBgColor)(this.styleId, this.transform && this.transform.zoom || 10)
			}
		},
		{
			key: "_checkBgColor",
			value: function() {
				var t = (0, ht.getBgColor)(this.styleId, this.transform && this.transform.zoom || 10);
				this.background !== t && this._updateBgColor()
			}
		},
		{
			key: "_setClearColor",
			value: function(t) {
				this.background = t,
				this.gl.clearColor.apply(this.gl, Gt.rgbaToGLColor(t)),
				this._disableUpdateClearColor = !0
			}
		},
		{
			key: "getImageCache",
			value: function(t) {
				return this.imageCaches[t]
			}
		},
		{
			key: "destroy",
			value: function() {
				var t = this;
				if (!this._destroyed) {
					this.camera.destroy(),
					this.camera = null,
					this.styleId = null,
					this.isDefaultStyle = null,
					this.canvas = null,
					this.maskScale = null,
					this.distanceScales = null,
					this.map = null,
					this.textCache && this.textCache.destroy(),
					this.textCache = null,
					Gt.forIn(this.imageCaches,
					function(t, e) {
						e.destroy()
					}),
					this.imageCaches = null,
					this.glyphManager.destroy(),
					this.glyphManager = null,
					this.markerManager.destroy(),
					this.markerManager = null,
					this.fxaaPass && (this.fxaaPass.destroy(), this.fxaaPass = null),
					this.fogPass && (this.fogPass.destroy(), this.fogPass = null),
					(0, u.
				default)(this.frameBuffer).keys(function(e) {
						t.frameBuffer[e].delete()
					}),
					this.frameBuffer = null,
					(0, u.
				default)(this.painters).forEach(function(e) {
						t.painters[e].destroy()
					}),
					this.painters = null;
					var e = this.gl.extensions_TMAP.get("WEBGL_lose_context");
					e && e.loseContext(),
					this.gl.extensions_TMAP.destroy(),
					delete this.gl.extensions_TMAP,
					this.gl = null,
					this._destroyed = !0
				}
			}
		}]),
		t
	} ();
	e.
default = Zt
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(395),
	m = i(_),
	g = n(765),
	y = i(g),
	x = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, u.
		default)(this, e),
			void 0 === n.enabled && (n.enabled = !0);
			var i = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, (0, r.
		default)({
				id:
				"fxaa-pass"
			},
			n)));
			return i._painter = new y.
		default({
				gl:
				t
			}),
			i
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_renderPass",
			value: function(t) {
				var e = t.inputBuffer;
				this._painter.preDraw(),
				this._painter.draw({
					resolution: [e.width, e.height],
					enabled: this.props.enabled,
					texture: e.texture
				})
			}
		}]),
		e
	} (m.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(24),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(395),
	m = i(_),
	g = n(766),
	y = i(g),
	x = n(213),
	b = i(x),
	S = n(137),
	w = n(227),
	E = i(w),
	T = 30 * Math.PI / 180,
	A = 0,
	P = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
			i = n.fogColor,
			o = n.skyOptions,
			r = n.id,
			a = void 0 === r ? "fog-pass": r,
			l = n.fogRange,
			c = void 0 === l ? [200, 400] : l,
			f = n.heading,
			d = void 0 === f ? 0 : f; (0, u.
		default)(this, e);
			var v = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, {
				id: a,
				fogRange: c,
				heading: d
			}));
			return v._painter = new y.
		default({
				gl:
				t
			}),
			v._setSkyOptions(o),
			i ? (v.setFogColor(new E.
		default(i).toArray()), v._disableColorSetting = !0) : v.setFogColor(),
			v
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "setFogColor",
			value: function(t) {
				this._disableColorSetting || this._painter.setFogColor(t)
			}
		},
		{
			key: "_setSkyOptions",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				n = e.width,
				i = e.height,
				o = e.src,
				r = e.color,
				a = e.horizontal,
				s = void 0 === a ? S.IMAGE_DISPLAY.SCALE: a,
				l = e.vertical,
				u = void 0 === l ? S.IMAGE_DISPLAY.ORIGIN: l,
				c = e.brightness,
				f = void 0 === c ? 1 : c,
				d = e.animated,
				h = void 0 !== d && d;
				if (this.skyTex = void 0, o) {
					var v = new Image;
					v.onload = function() {
						t.skyTex = new b.
					default(t.gl, {
							pixels: v,
							width: n,
							height: i
						}),
						t.skyTex.upload({
							flipY: !0
						})
					},
					v.src = o
				}
				this._painter.setSkyColor(r ? new E.
			default(r).toArray():
				void 0),
				this.skyDisplay = [s, u],
				this.skyAnimated = h,
				this._painter.setBrightness(f)
			}
		},
		{
			key: "_renderPass",
			value: function(t) {
				var e = t.inputBuffer,
				n = this.props.fogRange.map(function(t) {
					return 2 * t / e.height
				}),
				i = this.skyTex,
				o = [0, 0, 0, 0];
				i && (o = [i.width / e.width, i.height / e.height].concat((0, r.
			default)(this.skyDisplay)));
				var a = this._depthRange || [0, 1],
				s = a[0] + (a[1] - a[0]) * this.props.depthAtCenter,
				l = a[0] + (a[1] - a[0]) * (this.props.fogEdge[2] + 1) / 2;
				this._painter.preDraw(),
				this._painter.draw({
					rangeList: n,
					fogEdge: [this.props.fogEdge[1], l, s],
					texture: e.texture,
					depth: this.props.depthTexture,
					skyTex: i,
					skyInfo: o,
					viewInfo: [this.props.heading * Math.PI / 180, Math.atan(e.width / e.height * Math.tan(T / 2)), this.skyAnimated, A += 3e-4]
				})
			}
		},
		{
			key: "_onDestroy",
			value: function() {
				this.skyTex && this.skyTex.delete()
			}
		}]),
		e
	} (m.
default);
	e.
default = P
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(3),
	s = i(a),
	l = n(0),
	u = i(l),
	c = n(1),
	f = i(c),
	d = n(5),
	h = i(d),
	v = n(4),
	p = i(v),
	_ = n(767),
	m = i(_),
	g = n(395),
	y = i(g),
	x = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, u.
		default)(this, e);
			var i = (0, h.
		default)(this, (e.__proto__ || (0, s.
		default)(e)).call(this, t, (0, r.
		default)({
				id:
				"gsblur-pass"
			},
			n)));
			return i._painter = new m.
		default({
				gl:
				t
			}),
			i
		}
		return (0, p.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "_renderPass",
			value: function(t) {
				var e = t.inputBuffer,
				n = t.colorIndex;
				this._painter.preDraw(),
				this._painter.draw({
					texture: e.getColorAttach(n),
					horizontal: !!this.props.horizontal,
					resolution: [e.width, e.height]
				})
			}
		}]),
		e
	} (y.
default);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.deviceX,
		n = t.deviceY,
		i = t.deviceRadius,
		o = t.deviceWidth,
		r = t.deviceHeight;
		if (! (e >= 0 && n >= 0 && e < o && n < r)) return null;
		var a = Math.max(0, e - i),
		s = Math.max(0, n - i);
		return {
			x: a,
			y: s,
			width: Math.min(o, e + i) - a + 1,
			height: Math.min(r, n + i) - s + 1,
			centerX: e,
			centerY: n
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(16),
	a = i(r),
	s = n(82),
	l = i(s),
	u = n(24),
	c = i(u),
	f = n(0),
	d = i(f),
	h = n(1),
	v = i(h),
	p = n(240),
	_ = n(28),
	m = i(_),
	g = n(516),
	y = i(g),
	x = function(t) {
		return t.useDevicePixels && "undefined" != typeof window ? m.
	default.devicePixelRatio:
		1
	},
	b = function() {
		function t(e) {
			var n = this; (0, d.
		default)(this, t),
			this.map = e,
			this.render = e.renderEngine,
			this._eventHandlers = [],
			this._fbo = this.createFBO(),
			this._eventHandlers.push(m.
		default.on(this.map, "resize",
			function() {
				n.updateFBO()
			}))
		}
		return (0, v.
	default)(t, [{
			key: "createFBO",
			value: function() {
				var t = this.render.gl,
				e = this.render.canvas.width,
				n = this.render.canvas.height,
				i = new y.
			default(t, {
					width: e,
					height: n
				});
				return i.unbind(),
				i
			}
		},
		{
			key: "updateFBO",
			value: function() {
				var t = this.render.canvas.width,
				e = this.render.canvas.height;
				this._fbo.resize(t, e)
			}
		},
		{
			key: "_getPickingFBO",
			value: function() {
				return (this._fbo || this.createFBO()).buffer
			}
		},
		{
			key: "pickObject",
			value: function(t) {
				var e = t.x,
				n = t.y,
				i = t.mode,
				o = t.radius,
				r = t.callback,
				a = t.featurePicking,
				s = void 0 !== a && a,
				l = this._pickObject({
					x: e,
					y: n,
					radius: o,
					mode: i,
					pickingFBO: this._getPickingFBO(),
					lastPickedInfo: this._lastPickedInfo,
					useDevicePixels: !0,
					featurePicking: s
				});
				r && r(l)
			}
		},
		{
			key: "_pickObject",
			value: function(t) {
				var e = t.x,
				n = t.y,
				i = t.radius,
				r = t.mode,
				a = t.pickingFBO,
				s = t.useDevicePixels,
				l = t.viewport,
				u = t.featurePicking;
				if (this.render.hasPickableLayer() || u) {
					var c = x({
						useDevicePixels: s
					}),
					f = Math.round(e * c),
					d = Math.round(this.render.canvas.height - n * c),
					h = Math.round(i * c),
					v = o({
						deviceX: f,
						deviceY: d,
						deviceRadius: h,
						deviceWidth: this.render.canvas.width,
						deviceHeight: this.render.canvas.height
					}),
					_ = v && this._getPickedColorFromPickingFBO({
						viewport: l,
						useDevicePixels: s,
						pickingFBO: a,
						deviceRect: v,
						mode: r,
						deviceRadius: h,
						featurePicking: u
					});
					if (_) {
						var m = this.render.isNeedColor(_.layerId),
						g = (0, p.decodePickingColor)(_.pickedColor),
						y = {
							objectIndex: m ? 0 : g,
							layerId: _ && _.layerId,
							pickColor: m ? _.pickedColor: null
						};
						if (u && _) {
							var b = _ && (0, p.decodeStylePickingColor)(_.featurePickedColor);
							y.featurePick = b
						}
						return y
					}
				}
			}
		},
		{
			key: "_getPickedColorFromPickingFBO",
			value: function(t) {
				var e = t.deviceRect,
				n = t.deviceRadius,
				i = t.featurePicking,
				o = this.render.gl;
				this._fbo.bind(),
				o.enable(o.SCISSOR_TEST),
				o.scissor(e.x, e.y, e.width, e.height),
				o.clearColor(0, 0, 0, .001),
				o.enable(o.BLEND),
				o.blendFuncSeparate(o.ONE, o.ZERO, o.CONSTANT_ALPHA, o.ZERO),
				o.blendEquationSeparate(o.FUNC_ADD, o.FUNC_ADD),
				o.blendColor(0, 0, 0, 0),
				o.colorMask(!0, !0, !0, !0);
				var r = {},
				s = null,
				u = new Uint8Array(4);
				if ((this.render.hasPickableLayer() || i) && (s = this.render.renderForPicking(function(t) {
					o.blendColor(0, 0, 0, (t + 1) / 255)
				}), o.readPixels(e.x + n, e.y + n, 1, 1, o.RGBA, o.UNSIGNED_BYTE, u), i)) {
					var f = new Uint8Array(e.width * e.height * 4);
					o.blendFuncSeparate(o.ONE, o.ZERO, o.ONE, o.ZERO),
					o.clearColor(0, 0, 0, 0),
					this.render.renderForFeaturePicking(),
					o.readPixels(e.x, e.y, e.width, e.height, o.RGBA, o.UNSIGNED_BYTE, f),
					r.featurePickedColor = [].concat((0, c.
				default)((0, l.
				default)(f)))
				}
				return this._fbo.unbind(),
				o.disable(o.SCISSOR_TEST),
				o.blendFuncSeparate(o.ONE, o.ONE_MINUS_SRC_ALPHA, o.ONE, o.ONE_MINUS_SRC_ALPHA),
				this.render._updateBgColor(!0),
				(0, a.
			default)(r, {
					layerId: s && s[u[3] - 1] && s[u[3] - 1].id,
					pickedColor: u
				})
			}
		},
		{
			key: "destroy",
			value: function() {
				this._eventHandlers.forEach(function(t) {
					t && t.remove && t.remove()
				}),
				this._fbo && this._fbo.delete(),
				this.render = null,
				this.map = null
			}
		}]),
		t
	} ();
	e.
default = b
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		var n = t.getExtension(e);
		if (!n) return null;
		var i = e.split("_")[0],
		o = "_" + i;
		for (var r in n) {
			var a = n[r],
			s = "function" == typeof a,
			l = s ? i: o,
			u = r;
			r.endsWith(l) && (u = r.substring(0, r.length - l.length)),
			void 0 !== t[u] ? s || t[u] === a || console.warn("conflict:", u, t[u], a, r) : t[u] = s ?
			function(t) {
				return function() {
					return t.apply(n, arguments)
				}
			} (a) : a
		}
		return n
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.Extensions = function(t) {
		var e = {};
		return {
			get: function(n, i) {
				if (void 0 !== e[n]) return e[n];
				var o = void 0;
				switch (n) {
				case "WEBGL_depth_texture":
					o = t.getExtension("WEBGL_depth_texture") || t.getExtension("MOZ_WEBGL_depth_texture") || t.getExtension("WEBKIT_WEBGL_depth_texture");
					break;
				case "EXT_texture_filter_anisotropic":
					o = t.getExtension("EXT_texture_filter_anisotropic") || t.getExtension("MOZ_EXT_texture_filter_anisotropic") || t.getExtension("WEBKIT_EXT_texture_filter_anisotropic");
					break;
				case "WEBGL_compressed_texture_s3tc":
					o = t.getExtension("WEBGL_compressed_texture_s3tc") || t.getExtension("MOZ_WEBGL_compressed_texture_s3tc") || t.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");
					break;
				case "WEBGL_compressed_texture_pvrtc":
					o = t.getExtension("WEBGL_compressed_texture_pvrtc") || t.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");
					break;
				default:
					o = t.getExtension(n)
				}
				return ! o && i && console.error(i),
				e[n] = o,
				o
			},
			set: function(t, n) {
				e[t] = n
			},
			extendWebGL1: function() {
				t.DEPTH_COMPONENT24 = t.DEPTH_COMPONENT,
				t.DEPTH24_STENCIL8 = t.DEPTH_STENCIL,
				i(t, "OES_vertex_array_object"),
				i(t, "ANGLE_instanced_arrays"),
				i(t, "WEBGL_depth_texture"),
				i(t, "WEBGL_draw_buffers")
			},
			destroy: function() {
				e = null
			}
		}
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.glyphList,
		n = t.getGlyphWidth,
		i = t.fontSize,
		o = t.fontWeight,
		r = t.glyphHeight,
		s = t.buffer,
		l = t.maxCanvasWidth,
		u = t.mapping,
		c = void 0 === u ? {}: u,
		f = t.xOffset,
		d = void 0 === f ? 0 : f,
		h = t.yOffset,
		v = void 0 === h ? 0 : h,
		_ = 0,
		m = d; (0, a.
	default)(e).forEach(function(t, e) {
			if (!c[t] || c[t] && c[t].fontWeight !== o) {
				var a = n(t, e);
				m + a + 2 * s > l && (m = 0, _ += 1),
				c[t] = {
					x: m,
					y: v + _ * (r + 2 * s),
					fontSize: i,
					fontWeight: o,
					width: a + 2 * s,
					height: r + 2 * s,
					mask: !0
				},
				m += a + 2 * s
			}
		});
		var g = r + 2 * s;
		return {
			mapping: c,
			xOffset: m,
			yOffset: v + _ * g,
			canvasHeight: (0, p.getPowerOf2)(v + (_ + 1) * g)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(82),
	a = i(r),
	s = n(16),
	l = i(s),
	u = n(0),
	c = i(u),
	f = n(1),
	d = i(f);
	e.buildMapping = o;
	var h = n(518),
	v = i(h),
	p = n(396),
	_ = n(213),
	m = i(_),
	g = n(28),
	y = '"SF Pro SC","SF Pro Display","SF Pro Icons","PingFang SC","Helvetica Neue","Helvetica","Arial", "Microsoft YaHei",sans-serif',
	x = "normal",
	b = 24,
	S = 2,
	w = .25,
	E = 10,
	T = 1024 * ((0, g.isPC)() ? 4 : 2),
	A = function() {
		function t(e) { (0, c.
		default)(this, t),
			this.setting = {
				fontFamily: y,
				fontWeight: x,
				fontSize: b,
				useSdf: !0,
				buffer: S,
				cutoff: w,
				radius: E
			},
			this.gl = e,
			this._debounceTimeId = null,
			this.debug = !1
		}
		return (0, d.
	default)(t, [{
			key: "updateTextStyle",
			value: function(t, e, n, i) {
				t.font = i + " " + n + "px " + e,
				t.fillStyle = "#000",
				t.textBaseline = "baseline",
				t.textAlign = "left"
			}
		},
		{
			key: "generateAtlas",
			value: function(t, e) {
				var n = this,
				i = {}; (0, l.
			default)(i, this.setting, e);
				var r = i.fontFamily,
				a = i.fontWeight,
				s = i.fontSize,
				u = i.buffer,
				c = i.useSdf,
				f = i.radius,
				d = i.cutoff;
				this.canvas || (this.canvas = document.createElement("canvas"), this.canvas.width = T, this.canvas.height = T / 8, this.glyphTexture = new m.
			default(this.gl, {
					pixels: this.canvas
				}), this.debug && (this.canvas.style.position = "fixed", this.canvas.style.top = 0, this.canvas.style.left = 0, document.body.appendChild(this.canvas))),
				this.lastAtlas || (this.lastAtlas = {
					mapping: {},
					xOffset: 0,
					yOffset: 0
				});
				var h = this.canvas.getContext("2d");
				this.updateTextStyle(h, r, s, a);
				var p = t.filter(function(t) {
					return ! n.lastAtlas.mapping[t] || n.lastAtlas.mapping[t] && n.lastAtlas.mapping[t].fontWeight !== a
				}),
				_ = o({
					glyphList: t,
					getGlyphWidth: function(t) {
						return h.measureText(t).width
					},
					fontSize: s,
					fontWeight: a,
					glyphHeight: 1 * s,
					buffer: u,
					maxCanvasWidth: T,
					mapping: this.lastAtlas.mapping,
					xOffset: this.lastAtlas.xOffset,
					yOffset: this.lastAtlas.yOffset
				});
				if (this.canvas.height < _.canvasHeight) {
					var g = h.getImageData(0, 0, this.canvas.width, this.canvas.height);
					this.canvas.height = _.canvasHeight,
					h.putImageData(g, 0, 0)
				}
				if (this.updateTextStyle(h, r, s, a), p.length > 0) {
					if (c) {
						var y = new v.
					default(s, u, f, d, r, a),
						x = h.createImageData(y.size, y.size);
						p.forEach(function(t) {
							n.makeRGBAImageData(y.draw(t), x),
							h.putImageData(x, _.mapping[t].x, _.mapping[t].y)
						})
					} else p.forEach(function(t) {
						h.fillText(t, _.mapping[t].x, _.mapping[t].y + .9 * s)
					});
					this.canvasUpdated = !0
				}
				this.lastAtlas = _;
				var b = {};
				return t.forEach(function(t) {
					b[t] = _.mapping[t]
				}),
				{
					xOffset: _.xOffset,
					yOffset: _.yOffset,
					mapping: b,
					data: this.canvas,
					width: this.canvas.width,
					height: this.canvas.height
				}
			}
		},
		{
			key: "uploadToGPU",
			value: function(t) {
				if (t.force || this.canvasUpdated) {
					var e = this.canvas,
					n = e.width,
					i = e.height,
					o = this.canvas.getContext("2d").getImageData(0, 0, n, i);
					this.glyphTexture.update(o, t)
				} else this.glyphTexture.upload(t);
				this.canvasUpdated = !1
			}
		},
		{
			key: "makeRGBAImageData",
			value: function(t, e) {
				for (var n = 0; n < t.length; n++) e.data[4 * n + 0] = t[n],
				e.data[4 * n + 1] = t[n],
				e.data[4 * n + 2] = t[n],
				e.data[4 * n + 3] = t[n]
			}
		},
		{
			key: "destroy",
			value: function() {
				this.glyphTexture && this.glyphTexture.destroy(),
				this.canvas && (this.canvas.width = 1, this.canvas.height = 1, this.canvas = null),
				this.setting = null,
				this.gl = null
			}
		}]),
		t
	} ();
	e.
default = A
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(28),
	f = i(c),
	d = n(213),
	h = i(d),
	v = n(10),
	p = i(v),
	_ = f.
default.isPC() ? 8192 : 4096,
	m = function() {
		function t(e, n) { (0, s.
		default)(this, t),
			this.gl = e,
			this.width = n.width || _,
			this.height = n.height || _ / 2,
			this.itemWidth = n.itemWidth || 512,
			this.next = {
				x: 0,
				y: 0
			},
			this.images = {},
			this.config = n.config || {},
			this.debug = n.debug || !1,
			this.debug && (this.canvas = this.createCanvas(this.width, this.height), this.debugShow())
		}
		return (0, u.
	default)(t, [{
			key: "getTexCoord",
			value: function(t) {
				var e = this.images[t];
				if (e) {
					var n = this.width,
					i = this.height;
					return {
						s: (e.x + .5) / n,
						t: (e.y + .5) / i,
						w: (e.w - 1) / n,
						h: (e.h - 1) / i
					}
				}
				return null
			}
		},
		{
			key: "addImage",
			value: function(t, e) {
				return t in this.images || this.updateSubImg(t, e),
				this.images[t]
			}
		},
		{
			key: "removeImage",
			value: function(t) {
				delete this.images[t]
			}
		},
		{
			key: "updateSubImg",
			value: function(t, e) {
				var n = this.images,
				i = this.next,
				o = this.itemWidth,
				a = this.width,
				s = this.height;
				if (this.loadTexture(), !(t in n)) {
					var l = e.height,
					u = e.width,
					c = i.x,
					f = i.y;
					f + l > s && (c += o, f = 0),
					c >= a && (c = 0),
					this.removeOldImages(c, f, l),
					n[t] = {
						x: c,
						y: f,
						h: l,
						w: u
					},
					this.texture.updateSub(e, (0, r.
				default)({
						xOffset:
						c,
						yOffset: f
					},
					this.config)),
					i.x = c,
					i.y = f + l,
					this.debug && this.canvas.ctx.drawImage(e, c, f)
				}
			}
		},
		{
			key: "loadTexture",
			value: function() {
				var t = this.gl;
				if (this.texture) this.texture.bind();
				else {
					var e = new h.
				default(t);
					e.resize(this.width, this.height, this.config),
					this.texture = e
				}
			}
		},
		{
			key: "removeOldImages",
			value: function(t, e, n) {
				var i = this.images,
				o = [];
				p.
			default.forIn(i,
				function(i, r) {
					r.x !== t || r.y >= e + n || r.y + r.h <= e || o.push(i)
				}),
				o.forEach(function(t) {
					delete i[t]
				}),
				o = void 0
			}
		},
		{
			key: "clear",
			value: function() {
				this.images = {},
				this.next = {
					x: 0,
					y: 0
				}
			}
		},
		{
			key: "createCanvas",
			value: function(t, e) {
				var n = document.createElement("canvas");
				return n.width = t,
				n.height = e,
				n.ctx = n.getContext("2d"),
				this.debug && document.body.appendChild(n),
				n
			}
		},
		{
			key: "debugShow",
			value: function() {
				this.debug && (this.canvas.style.position = "absolute", this.canvas.style.zIndex = "10000", this.canvas.style.border = "1px solid red", this.canvas.style.width = "1200px", this.canvas.style.height = "1200px", this.canvas.style.left = "0", this.canvas.style.top = "0", this.canvas.style.pointerEvents = "none", this.canvas.id = "ImageCache", document.body.appendChild(this.canvas))
			}
		},
		{
			key: "destroy",
			value: function() {
				this.texture && (this.texture.destroy(), this.texture = null),
				this.width = null,
				this.height = null,
				this.itemWidth = null,
				this.next = null,
				this.images = null,
				this.debug = null,
				this.canvas = null,
				this.gl = null
			}
		}]),
		t
	} ();
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		var e = t.markers,
		n = t.getMarkerWidth,
		i = t.rowHeight,
		o = t.buffer,
		a = t.maxCanvasWidth,
		s = t.mapping,
		l = void 0 === s ? {}: s,
		u = t.xOffset,
		f = void 0 === u ? 0 : u,
		h = t.yOffset,
		p = void 0 === h ? 0 : h,
		_ = t.lastRowHeight,
		m = void 0 === _ ? 0 : _,
		g = t.lastXSpareSet,
		y = void 0 === g ? {}: g,
		x = t.lastYSpare,
		S = void 0 === x ? 0 : x,
		w = 0,
		E = f,
		T = i + 2 * o,
		A = p + w * T,
		P = (0, v.
	default)({},
		y); (0, d.
	default)(e).forEach(function(t, e) {
			if (!l[t.src]) {
				var s = n(t, e);
				if (E + s + 2 * o > a) {
					w++,
					A = p + w * T;
					var u = r(P, A);
					E = u < 0 ? 0 : a - u
				}
				l[t.src] = {
					x: E + o,
					y: A + o,
					width: s,
					height: Math.min(t.height, i),
					mask: !0
				},
				E += s + 2 * o
			}
		});
		var I = a - E,
		k = S + p - A,
		L = A + i;
		if (i > m) P = (0, c.
	default)({},
		L, I);
		else {
			for (var M in P) P.hasOwnProperty(M) && M <= L && delete P[M];
			P[L] = I
		}
		return {
			mapping: l,
			xOffset: E,
			yOffset: A,
			spareRowHeight: Math.max(i, m),
			xSpareSet: P,
			ySpare: i > m ? A + i - p: k > 0 ? k: i,
			canvasHeight: (0, b.getPowerOf2)(p + (w + 1) * T)
		}
	}
	function r(t, e) {
		for (var n = (0, l.
	default)(t).map(function(t) {
			return Number(t)
		}).sort(function(t, e) {
			return t - e
		}), i = 0; i < n.length; i++) if (e <= n[i]) return t[n[i]];
		return - 1
	}
	function a(t) {
		var e = t.glyphList,
		n = t.getGlyphWidth,
		i = t.fontSize,
		o = t.glyphHeight,
		a = t.buffer,
		s = t.maxCanvasWidth,
		l = t.mapping,
		u = void 0 === l ? {}: l,
		f = t.xOffset,
		h = void 0 === f ? 0 : f,
		p = t.yOffset,
		_ = void 0 === p ? 0 : p,
		m = t.lastRowHeight,
		g = void 0 === m ? 0 : m,
		y = t.lastXSpareSet,
		x = void 0 === y ? {}: y,
		S = t.lastYSpare,
		w = void 0 === S ? 0 : S,
		E = 0,
		T = h,
		A = o + 2 * a,
		P = _,
		I = (0, v.
	default)({},
		x); (0, d.
	default)(e).forEach(function(t, e) {
			if (!u[t]) {
				var l = n(t, e);
				if (T + l + 2 * a > s) {
					E++,
					P = _ + E * A;
					var c = r(I, P);
					T = c < 0 ? 0 : s - c
				}
				u[t] = {
					x: T + a,
					y: P + a,
					fontSize: i,
					width: l + 2 * a,
					height: o + 2 * a,
					mask: !0
				},
				T += l + 2 * a
			}
		});
		var k = s - T,
		L = w + _ - P,
		M = P + o;
		if (o > g) I = (0, c.
	default)({},
		M, k);
		else {
			for (var C in I) I.hasOwnProperty(C) && C <= M && delete I[C];
			I[M] = k
		}
		return {
			mapping: u,
			xOffset: T,
			yOffset: P,
			spareRowHeight: Math.max(o, g),
			xSpareSet: I,
			ySpare: o > g ? P + o - _: L > 0 ? L: o,
			canvasHeight: (0, b.getPowerOf2)(_ + (E + 1) * A)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(17),
	l = i(s),
	u = n(222),
	c = i(u),
	f = n(82),
	d = i(f),
	h = n(223),
	v = i(h),
	p = n(25),
	_ = i(p),
	m = n(0),
	g = i(m),
	y = n(1),
	x = i(y);
	e.buildAtlas = o;
	var b = n(396),
	S = n(213),
	w = i(S),
	E = n(28),
	T = n(518),
	A = i(T),
	P = '"SF Pro SC","SF Pro Display","SF Pro Icons","PingFang SC","Helvetica Neue","Helvetica","Arial", "Microsoft YaHei",sans-serif',
	I = "normal",
	k = 24,
	L = 2,
	M = .25,
	C = 10,
	R = 1024 * ((0, E.isPC)() ? 2 : 1),
	B = function() {
		function t(e) {
			var n = this; (0, g.
		default)(this, t),
			this._reUpdateCanvas = (0, E.debounce)(function() {
				n.canvasUpdated = !0
			},
			5e3),
			this.setting = {
				fontFamily: P,
				fontWeight: I,
				fontSize: k,
				useSdf: !0,
				buffer: L,
				cutoff: M,
				radius: C
			},
			this.queuePromise = null,
			this.gl = e,
			this.debug = !1,
			this._destroyed = !1
		}
		return (0, x.
	default)(t, [{
			key: "updateTextStyle",
			value: function(t, e, n, i) {
				t.font = i + " " + n + "px " + e,
				t.fillStyle = "#000",
				t.textBaseline = "baseline",
				t.textAlign = "left"
			}
		},
		{
			key: "generateAtlas",
			value: function(t, e) {
				var n = this,
				i = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
				r = this.setting,
				s = r.fontFamily,
				l = r.fontWeight,
				u = r.fontSize,
				c = r.buffer,
				f = r.useSdf,
				d = r.radius,
				h = r.cutoff;
				this.canvas || (this.canvas = document.createElement("canvas"), this.canvas.width = R, this.canvas.height = R / 2, this.markerTexture = new w.
			default(this.gl, {
					pixels: this.canvas
				}), this.debug && (this.canvas.style.position = "fixed", this.canvas.style.top = 0, this.canvas.style.left = 0, document.body.appendChild(this.canvas))),
				this.lastAtlas || (this.lastAtlas = {
					mapping: {},
					xOffset: 0,
					yOffset: 0
				});
				var v = this.canvas.getContext("2d");
				if (e && e.length > 0) {
					this.updateTextStyle(v, s, u, l);
					var p = e.filter(function(t) {
						return ! n.lastAtlas.mapping[t]
					}),
					m = a({
						glyphList: e,
						getGlyphWidth: function(t) {
							return v.measureText(t).width
						},
						fontSize: u,
						glyphHeight: 1 * u,
						buffer: c,
						maxCanvasWidth: R,
						mapping: this.lastAtlas.mapping,
						xOffset: this.lastAtlas.xOffset,
						yOffset: this.lastAtlas.yOffset,
						lastRowHeight: this.lastAtlas.spareRowHeight,
						lastXSpareSet: this.lastAtlas.xSpareSet,
						lastYSpare: this.lastAtlas.ySpare
					});
					if (p.length > 0) {
						if (f) {
							var g = new A.
						default(u, c, d, h, s, l),
							y = v.createImageData(g.size, g.size);
							p.forEach(function(t) {
								n.makeRGBAImageData(g.draw(t), y),
								v.putImageData(y, m.mapping[t].x, m.mapping[t].y)
							})
						} else p.forEach(function(t) {
							v.fillText(t, m.mapping[t].x, m.mapping[t].y + .9 * u)
						});
						this.canvasUpdated = !0
					}
					this.lastAtlas = m
				}
				var x = null,
				b = t.filter(function(t) {
					return ! n.lastAtlas.mapping[t]
				}).map(function(t) {
					if (i.tileId) {
						if (!x) {
							var e = [];
							"string" == typeof i.tileImage64 ? e.push(i.tileImage64) : e = i.tileImage64,
							x = _.
						default.all(e.map(function(t, e) {
								return new _.
							default(function(n, o) {
									if (t) {
										var r = new Image;
										r.onload = function() {
											n(r)
										},
										r.onerror = function() {
											console.error("Image加载失败: " + i.tileId + "-" + e),
											n(null)
										},
										r.src = "data:image/png;base64," + t
									} else n(null)
								})
							}))
						}
						return x.then(function(e) {
							var n = i.billboardData.filter(function(e) {
								return e.text === t
							})[0],
							o = n && n.bounds,
							r = n && n.cidx;
							return e[r] ? {
								tileImage: e[r],
								isSimulate: !0,
								src: t,
								width: o[2],
								height: o[3],
								bounds: o
							}: null
						})
					}
					return new _.
				default(function(e, n) {
						var i = new Image;
						/^data:/.test(t) || (i.crossOrigin = "anonymous"),
						i.onload = function() {
							e(i)
						},
						i.onerror = function() {
							console.error("Image加载失败: " + t),
							e(null)
						},
						i.src = t
					})
				}),
				S = _.
			default.all(b);
				return this.queuePromise = (null === this.queuePromise ? S: this.queuePromise.then(function() {
					return S
				},
				function(t) {
					return console.error(t),
					S
				})).then(function(r) {
					if (!n._destroyed) {
						r = r.filter(function(t) {
							return !! t
						});
						var a = o({
							markers: r,
							getMarkerWidth: function(t) {
								return t.height > 128 ? 128 * t.width / t.height: t.width
							},
							rowHeight: i.tileId ? 30 : Math.min(128, r.reduce(function(t, e) {
								return Math.max(t, e.height)
							},
							0)),
							buffer: 4,
							maxCanvasWidth: R,
							mapping: n.lastAtlas.mapping,
							xOffset: n.lastAtlas.xOffset,
							yOffset: n.lastAtlas.yOffset,
							lastRowHeight: n.lastAtlas.spareRowHeight,
							lastXSpareSet: n.lastAtlas.xSpareSet,
							lastYSpare: n.lastAtlas.ySpare
						});
						if (n.canvas.height < a.canvasHeight) {
							var s = v.getImageData(0, 0, n.canvas.width, n.canvas.height);
							n.canvas.height = a.canvasHeight,
							v.putImageData(s, 0, 0)
						}
						r.forEach(function(t) {
							var e = a.mapping[t.src];
							if (!e.isFilled) {
								if (t.isSimulate) {
									var n = t.bounds;
									v.drawImage(t.tileImage, n[0], n[1], n[2], n[3], e.x, e.y, e.width, e.height)
								} else v.drawImage(t, e.x, e.y, e.width, e.height);
								e.isFilled = !0
							}
						}),
						n.lastAtlas = a,
						n.canvasUpdated = n.canvasUpdated || r.length > 0;
						var l = {};
						return t.forEach(function(t) {
							l[t] = a.mapping[t]
						}),
						e && e.length > 0 && e.forEach(function(t) {
							l[t] = a.mapping[t]
						}),
						n.canvasUpdated && n._reUpdateCanvas(),
						l
					}
				}),
				this.queuePromise
			}
		},
		{
			key: "uploadToGPU",
			value: function(t) {
				if (t.force || this.canvasUpdated) {
					var e = this.canvas,
					n = e.width,
					i = e.height,
					o = this.canvas.getContext("2d").getImageData(0, 0, n, i);
					this.markerTexture.update(o, t)
				} else this.markerTexture.upload(t);
				this.canvasUpdated = !1
			}
		},
		{
			key: "makeRGBAImageData",
			value: function(t, e) {
				for (var n = 0; n < t.length; n++) e.data[4 * n + 0] = t[n],
				e.data[4 * n + 1] = t[n],
				e.data[4 * n + 2] = t[n],
				e.data[4 * n + 3] = t[n]
			}
		},
		{
			key: "destroy",
			value: function() {
				this._destroyed || (this.markerTexture && (this.markerTexture.destroy(), this.markerTexture = null), this.canvas && (this.canvas.width = 1, this.canvas.height = 1, this.canvas = null), this.queuePromise = null, this.gl = null, this._destroyed = !0)
			}
		}]),
		t
	} ();
	e.
default = B
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(280),
	p = i(v),
	_ = n(785),
	m = i(_),
	g = {
		attributes: "getAttribLocation",
		uniforms: "getUniformLocation"
	},
	y = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_onCreate",
			value: function() {
				return this.gl.createProgram()
			}
		},
		{
			key: "_onDelete",
			value: function(t) {
				t || (this._vShader.delete(), this._fShader.delete()),
				this.gl.deleteProgram(this._object)
			}
		},
		{
			key: "_initialize",
			value: function(t) {
				var e = t.vShader,
				n = t.fShader;
				this.attachShader(e, n)
			}
		},
		{
			key: "attachShader",
			value: function(t, e) {
				var n = arguments.length > 2 && void 0 !== arguments[2] && arguments[2],
				i = this.gl;
				"string" == typeof t && (t = new m.
			default(i, {
					type: i.VERTEX_SHADER,
					source: t
				})),
				"string" == typeof e && (e = new m.
			default(i, {
					type: i.FRAGMENT_SHADER,
					source: e
				})),
				n && this._vShader && this._fShader && (i.detachShader(this._object, this._vShader.shader), i.detachShader(this._object, this._fShader.shader)),
				i.attachShader(this._object, t.shader),
				i.attachShader(this._object, e.shader),
				this._vShader = t,
				this._fShader = e,
				i.linkProgram(this._object),
				this.check()
			}
		},
		{
			key: "enable",
			value: function() {
				this.gl.useProgram(this._object),
				this.gl.program = this._object
			}
		},
		{
			key: "check",
			value: function() {
				var t = this.gl;
				this.getParameter(t.LINK_STATUS) || (console.error(t.getProgramInfoLog(this._object)), console.log(this._source))
			}
		},
		{
			key: "getParameter",
			value: function(t) {
				return this.gl.getProgramParameter(this._object, t)
			}
		},
		{
			key: "getLocations",
			value: function(t, e) {
				var n = this,
				i = {},
				o = g[t];
				return o && e.forEach(function(t) {
					i[t] = n.gl[o](n._object, t)
				}),
				i
			}
		},
		{
			key: "program",
			get: function() {
				return this._object
			}
		}]),
		e
	} (p.
default);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(3),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(5),
	f = i(c),
	d = n(4),
	h = i(d),
	v = n(280),
	p = i(v),
	_ = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
			return (0, s.
		default)(this, e),
			(0, f.
		default)(this, (e.__proto__ || (0, r.
		default)(e)).call(this, t, n))
		}
		return (0, h.
	default)(e, t),
		(0, u.
	default)(e, [{
			key: "_onCreate",
			value: function(t) {
				var e = t.type;
				return this.gl.createShader(e)
			}
		},
		{
			key: "_onDelete",
			value: function() {
				this.gl.deleteShader(this._object)
			}
		},
		{
			key: "_initialize",
			value: function(t) {
				var e = t.source;
				e && this.setSource(e)
			}
		},
		{
			key: "setSource",
			value: function(t) {
				this._source = t,
				this.gl.shaderSource(this._object, t),
				this.compile(),
				this.check()
			}
		},
		{
			key: "compile",
			value: function() {
				this.gl.compileShader(this._object)
			}
		},
		{
			key: "check",
			value: function() {
				var t = this.gl;
				this.getParameter(t.COMPILE_STATUS) || (console.error(t.getShaderInfoLog(this._object)), console.log(this._source))
			}
		},
		{
			key: "getParameter",
			value: function(t) {
				return this.gl.getShaderParameter(this._object, t)
			}
		},
		{
			key: "shader",
			get: function() {
				return this._object
			}
		}]),
		e
	} (p.
default);
	e.
default = _
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	r = i(o),
	a = n(1),
	s = i(a),
	l = n(28),
	u = i(l),
	c = n(213),
	f = i(c),
	d = n(10),
	h = i(d),
	v = u.
default.isPC() ? 8192 : 4096,
	p = function() {
		function t(e) { (0, r.
		default)(this, t),
			this.gl = e,
			this.width = v,
			this.height = this.width,
			this.itemWidth = 512,
			this.scale = 2,
			this.next = {
				x: 0,
				y: 0
			},
			this.tiles = {},
			this.tilePositions = {},
			this._renderTiles = null,
			this.debug = 0,
			this.debug && (this.canvas = this.createCanvas(this.width, this.height), this.debugShow())
		}
		return (0, s.
	default)(t, [{
			key: "updateRenderTiles",
			value: function(t) {
				this._renderTiles = t
			}
		},
		{
			key: "getTexCoord",
			value: function(t, e) {
				var n = this.tiles[t];
				if (!n) return null;
				var i = this.scale;
				return {
					x: (n.x + e[0]) / this.width,
					y: (this.height - (n.y + e[1])) / this.height,
					w: e[2] / this.width,
					h: e[3] / this.height,
					fontSize: {
						w: e[2] / i,
						h: e[3] / i
					}
				}
			}
		},
		{
			key: "addImage",
			value: function(t, e, n) {
				if (t in this.tiles || !e) return void(n && n());
				this.updateTextSubImg(e, t),
				n && n()
			}
		},
		{
			key: "add",
			value: function(t, e, n) {
				var i = this.tiles;
				if (t in i) return void(n && n());
				this.createItem(e,
				function(e) {
					this.updateTextSubImg(e, t),
					n && n()
				}.bind(this))
			}
		},
		{
			key: "updateTextSubImg",
			value: function(t, e) {
				this.loadTexture();
				var n = this.tiles;
				if (! (e in n)) {
					var i = this.tilePositions,
					o = this.next,
					r = t.height,
					a = o.x,
					s = o.y;
					s + r > this.height && (a += this.itemWidth, s = 0),
					a >= this.width && (a = 0),
					this.removeOldTiles(a, s, r);
					var l = a + "-" + s;
					n[e] = {
						x: a,
						y: s,
						height: r
					},
					i[l] = e,
					this.texture.updateSub(t, {
						flipY: !0,
						premultiply: !0,
						xOffset: a,
						yOffset: this.height - s - r
					}),
					o.x = a,
					o.y = s + r,
					this.debug && this.canvas.ctx.drawImage(t, a, s)
				}
			}
		},
		{
			key: "loadTexture",
			value: function() {
				var t = this.gl;
				if (this.texture) this.texture.bind();
				else {
					var e = new f.
				default(t);
					e.resize(this.width, this.height, {
						flipY: !0,
						premultiply: !0
					}),
					this.texture = e
				}
			}
		},
		{
			key: "removeOldTiles",
			value: function(t, e, n) {
				var i = this.tiles,
				o = this.tilePositions,
				r = [];
				h.
			default.forIn(i,
				function(i, a) {
					if (! (a.x !== t || a.y >= e + n || a.y + a.height <= e)) {
						var s = a.x + "-" + a.y;
						delete o[s],
						r.push(i)
					}
				});
				for (var a = 0,
				s = r.length; a < s; a++) delete i[r[a]];
				r = void 0
			}
		},
		{
			key: "createItem",
			value: function(t, e) {
				var n = new Image;
				n.onload = function() {
					"function" == typeof e && e(n, n.width, n.height)
				}.bind(this),
				n.src = t
			}
		},
		{
			key: "createCanvas",
			value: function(t, e) {
				var n = document.createElement("canvas");
				return n.width = t,
				n.height = e,
				n.ctx = n.getContext("2d"),
				this.debug && document.body.appendChild(n),
				n
			}
		},
		{
			key: "debugShow",
			value: function() {
				this.debug && (document.getElementById("TextCache") || (console.info(232), this.canvas.style.position = "absolute", this.canvas.style.zIndex = "10000", this.canvas.style.border = "1px solid red", this.canvas.style.width = "8192px", this.canvas.style.height = "8192px", this.canvas.style.left = "0", this.canvas.style.top = "0", this.canvas.style.pointerEvents = "none", this.canvas.id = "TextCache", document.body.appendChild(this.canvas)))
			}
		},
		{
			key: "destroy",
			value: function() {
				this.texture && (this.texture.destroy(), this.texture = null),
				this.width = null,
				this.height = null,
				this.itemWidth = null,
				this.scale = null,
				this.next = null,
				this.tiles = null,
				this.tilePositions = null,
				this._renderTiles = null,
				this.debug = 0,
				this.canvas = null,
				this.gl = null
			}
		}]),
		t
	} ();
	e.
default = p
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t) {
		return new a.
	default(function(e) {
			if (l.
		default.support()) {
				var n = c.
			default.QMAPI_poi_icon_json + t;
				l.
			default.get(n,
				function(n) {
					if (n) {
						var i = JSON.parse(n).data;
						e(i)
					} else(0, h.loadPoiIconIndexFile)(t, d.
				default.iconIndexSrc).then(function(t) {
						e(t)
					},
					function(t) {
						console.error(t),
						e(null)
					})
				})
			} else(0, h.loadPoiIconIndexFile)(t, d.
		default.iconIndexSrc).then(function(t) {
				e(t)
			},
			function(t) {
				console.error(t),
				e(null)
			})
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(25),
	a = i(r),
	s = n(89),
	l = i(s),
	u = n(137),
	c = i(u),
	f = n(23),
	d = i(f),
	h = n(498);
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	r = i(o),
	a = n(0),
	s = i(a),
	l = n(1),
	u = i(l),
	c = n(789),
	f = i(c),
	d = function() {
		function t() { (0, s.
		default)(this, t),
			this.img = null,
			this.w = 0,
			this.h = 0,
			this.scale = 2
		}
		return (0, u.
	default)(t, [{
			key: "load",
			value: function(t) {
				var e = this;
				return new r.
			default(function(n) {
					function i(t) {
						t.img && (t.ready = !0, n())
					} (0, f.
				default)(t,
					function(t) {
						e.w = t.originalWidth,
						e.h = t.originalHeight,
						e.img = t.pixels,
						i(e, e.w, e.h)
					})
				})
			}
		}]),
		t
	} ();
	e.
default = d
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e) {
		if ("function" == typeof e) {
			if (t in r.textures) return void e(r.textures[t]);
			var n = new Image;
			/^data:/.test(t) || (n.crossOrigin = "anonymous"),
			n.onload = function() {
				if (r.textures[t]) return void e(r.textures[t]);
				var i = u.
			default.extendCanvasToPow2(n, 1);
				r.textures[t] = new s.
			default(null, {
					pixels: i,
					originalWidth: n.width,
					originalHeight: n.height,
					width: i.width,
					height: i.height
				}),
				e(r.textures[t])
			}.bind(this),
			n.src = t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(110),
	a = n(213),
	s = i(a),
	l = n(396),
	u = i(l);
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n, i) {
		var o = null;
		o = "LABEL" === i ? r(t, e, n, i) : s(t, e, n, i);
		var a = l(o),
		u = [];
		return a.forEach(function(t) {
			u = t.isShow ? u.concat(Array(Number(t.lettersCount)).fill(1)) : u.concat(Array(Number(t.lettersCount)).fill(0))
		}),
		new Uint8ClampedArray(u)
	}
	function r(t, e, n, i) {
		var o = [],
		r = !0,
		s = !1,
		l = void 0;
		try {
			for (var u, c = (0, m.
		default)(t); ! (r = (u = c.next()).done); r = !0) {
				var f = u.value,
				d = f.geometry.position,
				h = e.latLngToCenterLocalPixel(d),
				v = new g.Vector4(h.x, h.y, 0, 1),
				p = n.pvMatrix.multiplyVector4(v),
				_ = p.elements[0] / p.elements[3],
				y = p.elements[1] / p.elements[3],
				x = (1 + _) / 2 * e.width,
				b = (1 - y) / 2 * e.height,
				S = f.style.size / f.fontSize * f.widthSum * e.scale,
				w = f.style.size / f.fontSize * f.heightSum * e.scale,
				E = S / 2,
				T = w / 2,
				A = {
					x: x,
					y: b
				},
				P = f.style,
				I = P.alignment,
				k = P.verticalAlignment,
				L = P.angle;
				o[f.geometryIndex] = {
					leftTop: a({
						x: x - E + I * E,
						y: b - T + k * T
					},
					A, f.style, i),
					rightTop: a({
						x: x + E + I * E,
						y: b - T + k * T
					},
					A, f.style, i),
					rightBottom: a({
						x: x + E + I * E,
						y: b + T + k * T
					},
					A, f.style, i),
					leftBottom: a({
						x: x - E + I * E,
						y: b + T + k * T
					},
					A, f.style, i),
					width: S,
					height: w,
					angle: L,
					lettersCount: f.lettersCount,
					rank: void 0 === f.geometry.rank ? -1 / 0 : f.geometry.rank,
					geometryIndex: f.geometryIndex
				}
			}
		} catch(t) {
			s = !0,
			l = t
		} finally {
			try { ! r && c.
				return && c.
				return ()
			} finally {
				if (s) throw l
			}
		}
		return o
	}
	function a(t, e, n, i) {
		var o = t.x - e.x,
		r = t.y - e.y,
		a = new g.Vector4(o, r, 0, 1),
		s = 0;
		s = "LABEL" === i ? n.angle || 0 : n.rotate || 0;
		var l = (new g.Matrix4).setRotate( - s, 0, 0, 1),
		u = l.multiplyVector4(a);
		return "LABEL" === i ? {
			x: u.elements[0] + e.x + n.offset.x,
			y: u.elements[1] + e.y + n.offset.y
		}: {
			x: u.elements[0] + e.x,
			y: u.elements[1] + e.y
		}
	}
	function s(t, e, n, i) {
		var o = [],
		r = !0,
		s = !1,
		l = void 0;
		try {
			for (var u, c = (0, m.
		default)(t); ! (r = (u = c.next()).done); r = !0) {
				var f = u.value,
				d = f.geometry.position,
				h = e.latLngToCenterLocalPixel(d),
				v = new g.Vector4(h.x, h.y, 0, 1),
				p = n.pvMatrix.multiplyVector4(v),
				_ = p.elements[0] / p.elements[3],
				y = p.elements[1] / p.elements[3],
				x = (1 + _) / 2 * e.width,
				b = (1 - y) / 2 * e.height,
				S = {
					x: x,
					y: b
				},
				w = null,
				E = null;
				f.labelWidthSum < 1 ? (w = 0, E = 0) : (w = f.style.size / f.fontSize * f.labelWidthSum * e.scale, E = f.style.size * e.scale);
				var T = f.style.width * e.scale,
				A = f.style.height * e.scale,
				P = w / 2,
				I = E / 2,
				k = {
					leftTop: a({
						x: x - f.style.anchor.x,
						y: b - f.style.anchor.y
					},
					S, f.style, i),
					rightTop: a({
						x: x + T - f.style.anchor.x,
						y: b - f.style.anchor.y
					},
					S, f.style, i),
					rightBottom: a({
						x: x + T - f.style.anchor.x,
						y: b + A - f.style.anchor.y
					},
					S, f.style, i),
					leftBottom: a({
						x: x - f.style.anchor.x,
						y: b + A - f.style.anchor.y
					},
					S, f.style, i)
				},
				L = Math.min(k.leftTop.x, k.rightTop.x, k.rightBottom.x, k.leftBottom.x),
				M = Math.min(k.leftTop.y, k.rightTop.y, k.rightBottom.y, k.leftBottom.y),
				C = Math.max(k.leftTop.x, k.rightTop.x, k.rightBottom.x, k.leftBottom.x),
				R = M,
				B = C,
				N = Math.max(k.leftTop.y, k.rightTop.y, k.rightBottom.y, k.leftBottom.y),
				O = L,
				D = N;
				if (f.labelWidthSum > 1) {
					var z = Math.min(L, C, O, B),
					F = Math.max(L, C, O, B),
					V = Math.min(M, R, D, N),
					Y = Math.max(M, R, D, N),
					U = {
						x: (z + F) / 2,
						y: (V + Y) / 2
					},
					j = {
						leftTop: {
							x: U.x - P + f.offsetToMarkerCenter.x,
							y: U.y - I + f.offsetToMarkerCenter.y
						},
						rightTop: {
							x: U.x + P + f.offsetToMarkerCenter.x,
							y: U.y - I + f.offsetToMarkerCenter.y
						},
						rightBottom: {
							x: U.x + P + f.offsetToMarkerCenter.x,
							y: U.y + I + f.offsetToMarkerCenter.y
						},
						leftBottom: {
							x: U.x - P + f.offsetToMarkerCenter.x,
							y: U.y + I + f.offsetToMarkerCenter.y
						}
					};
					L = Math.min(L, j.leftTop.x),
					M = Math.min(M, j.leftTop.y),
					C = Math.max(C, j.rightTop.x),
					R = Math.min(R, j.rightTop.y),
					B = Math.max(B, j.rightBottom.x),
					N = Math.max(N, j.rightBottom.y),
					O = Math.min(O, j.leftBottom.x),
					D = Math.max(D, j.leftBottom.y)
				}
				o[f.geometryIndex] = {
					leftTop: {
						x: L,
						y: M
					},
					rightTop: {
						x: C,
						y: R
					},
					rightBottom: {
						x: B,
						y: N
					},
					leftBottom: {
						x: O,
						y: D
					},
					width: C - L,
					height: N - R,
					angle: 0,
					lettersCount: f.lettersCount,
					rank: void 0 === f.geometry.rank ? -1 / 0 : f.geometry.rank,
					geometryIndex: f.geometryIndex
				}
			}
		} catch(t) {
			s = !0,
			l = t
		} finally {
			try { ! r && c.
				return && c.
				return ()
			} finally {
				if (s) throw l
			}
		}
		return o
	}
	function l(t) {
		var e = t.map(function(t) {
			return {
				isShow: !0,
				lettersCount: t.lettersCount
			}
		}),
		n = !0,
		i = !1,
		o = void 0;
		try {
			for (var r, a = (0, m.
		default)(t.entries()); ! (n = (r = a.next()).done); n = !0) {
				var s = (0, p.
			default)(r.value, 2),
				l = s[0],
				c = s[1],
				f = t.slice(l + 1);
				if (e[c.geometryIndex].isShow) {
					var d = !0,
					h = !1,
					v = void 0;
					try {
						for (var _, g = (0, m.
					default)(f); ! (d = (_ = g.next()).done); d = !0) {
							var y = _.value;
							if (e[y.geometryIndex].isShow) {
								var x = u(c, y),
								b = !0;
								x && (b = c.rank === y.rank ? y.geometryIndex > c.geometryIndex: y.rank > c.rank, b ? e[c.geometryIndex].isShow = !1 : e[y.geometryIndex].isShow = !1)
							}
						}
					} catch(t) {
						h = !0,
						v = t
					} finally {
						try { ! d && g.
							return && g.
							return ()
						} finally {
							if (h) throw v
						}
					}
				}
			}
		} catch(t) {
			i = !0,
			o = t
		} finally {
			try { ! n && a.
				return && a.
				return ()
			} finally {
				if (i) throw o
			}
		}
		return e
	}
	function u(t, e) {
		var n = new y(t),
		i = new y(e);
		return n.isCollision(i)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var c = n(0),
	f = i(c),
	d = n(1),
	h = i(d),
	v = n(32),
	p = i(v),
	_ = n(27),
	m = i(_),
	g = n(107),
	y = function() {
		function t(e) { (0, f.
		default)(this, t),
			this.centerPoint = [(e.leftTop.x + e.rightBottom.x) / 2, (e.leftTop.y + e.rightBottom.y) / 2],
			this.halfHeight = e.height / 2,
			this.halfWidth = e.width / 2,
			this.setRotation(e.angle)
		}
		return (0, h.
	default)(t, [{
			key: "getProjectionRadius",
			value: function(t) {
				var e = this.dot(t, this.axisX),
				n = this.dot(t, this.axisY);
				return this.halfWidth * e + this.halfHeight * n
			}
		},
		{
			key: "dot",
			value: function(t, e) {
				return Math.abs(t[0] * e[0] + t[1] * e[1])
			}
		},
		{
			key: "setRotation",
			value: function(t) {
				var e = t / 180 * Math.PI;
				return this.axisX = [Math.cos(e), -Math.sin(e)],
				this.axisY = [Math.sin(e), Math.cos(e)],
				this
			}
		},
		{
			key: "isCollision",
			value: function(t) {
				for (var e = [this.centerPoint[0] - t.centerPoint[0], this.centerPoint[1] - t.centerPoint[1]], n = [this.axisX, this.axisY, t.axisX, t.axisY], i = 0, o = n.length; i < o; i++) if (this.getProjectionRadius(n[i]) + t.getProjectionRadius(n[i]) <= this.dot(e, n[i])) return ! 1;
				return ! 0
			}
		}]),
		t
	} ();
	e.
default = o
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = t.extensions_TMAP.get("WEBGL_debug_renderer_info");
		return e ? {
			vendor: t.getParameter(e.UNMASKED_VENDOR_WEBGL),
			renderer: t.getParameter(e.UNMASKED_RENDERER_WEBGL)
		}: null
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getGraphicHardwareInfo = i
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, i) {
		i = i || 1;
		var o = new r.Matrix4,
		a = new r.Matrix4;
		return a.scale(i, i, i),
		o = o.multiply(e),
		o = o.multiply(a),
		o = o.multiply(function(t, e) {
			var n = new r.Matrix4,
			i = t.x + e.left,
			o = e.top - t.y;
			return n.setTranslate(i, o, 0),
			n
		} (n, t))
	}
	function o(t) {
		var e = t.view,
		n = t.offset,
		i = t.scale,
		o = void 0 === i ? 1 : i,
		a = new r.Matrix4;
		return a.scale(o, o, o).translate(n.x + e.left, e.top - n.y, 0),
		a
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.mixMatrix = i,
	e.getModelMatrix = o;
	var r = n(107)
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n) {
		n(),
		a(t, e)
	}
	function r(t, e) {
		var n = {};
		return e.forEach(function(e) {
			var i = v[e];
			n[e] = i ? i(t, t[e]) : t.getParameter(t[e])
		}),
		n
	}
	function a(t, e) {
		t.blendFuncSeparate(e.BLEND_SRC_RGB, e.BLEND_DST_RGB, e.BLEND_SRC_ALPHA, e.BLEND_DST_ALPHA),
		(0, c.
	default)(e).forEach(function(e) {
			var n = (0, l.
		default)(e, 2),
			i = n[0],
			o = n[1],
			r = m[i];
			r && r(t, o, t[i])
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(32),
	l = i(s),
	u = n(115),
	c = i(u),
	f = n(24),
	d = i(f);
	e.preserveParameters = o,
	e.getParameters = r;
	var h = function(t, e) {
		return t.isEnabled(e)
	},
	v = {
		BLEND: h,
		CULL_FACE: h,
		DEPTH_TEST: h,
		DITHER: h,
		POLYGON_OFFSET_FILL: h,
		SAMPLE_ALPHA_TO_COVERAGE: h,
		SAMPLE_COVERAGE: h,
		SCISSOR_TEST: h,
		STENCIL_TEST: h,
		RASTERIZER_DISCARD: h
	},
	p = function(t, e, n) {
		return e ? t.enable(n) : t.disable(n)
	},
	_ = function(t, e, n) {
		return t.pixelStorei(n, e)
	},
	m = {
		BLEND: p,
		CULL_FACE: p,
		DEPTH_TEST: p,
		COLOR_CLEAR_VALUE: function(t, e) {
			return t.clearColor.apply(t, (0, d.
		default)(e))
		},
		VIEWPORT: function(t, e) {
			return t.viewport.apply(t, (0, d.
		default)(e))
		},
		UNPACK_FLIP_Y_WEBGL: _,
		UNPACK_PREMULTIPLY_ALPHA_WEBGL: _
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function o(t, e, n, i) { (i < 270 && i > 90 && t.getLng() > e.getLng() || i > 270 && i < 90 && t.getLng() < e.getLng()) && (n.getLng() >= 0 ? t.lng = 180 : e.lng = -179.9999)
	}
	function r(t) {
		var e = D.degreeToRadian(t.getLat()),
		n = D.degreeToRadian(t.getLng());
		return new L.Vector4(Math.cos(e) * Math.sin(n), Math.sin(e), Math.cos(e) * Math.cos(n), 1)
	}
	function a(t) {
		var e = (0, c.
	default)(t.elements, 3),
		n = e[0],
		i = e[1],
		o = e[2],
		r = Math.asin(i),
		a = void 0,
		s = Math.cos(r);
		return 0 === s ? a = 0 : (a = Math.asin(D.clamp(n / s, -1, 1)), a = o / s > 0 ? a: Math.PI - a),
		new N(D.radianToDegree(r), D.radianToDegree(a), !0)
	}
	function s(t, e) {
		var n = t.getLat(),
		i = -t.getLng(),
		o = l(e);
		return (new L.Matrix4).translate(0, 0, -o).scale(o, o, o).rotate(n, 1, 0, 0).rotate(i, 0, 1, 0)
	}
	function l(t) {
		return 256 * Math.pow(2, t) / (2 * Math.PI)
	}
	var u = n(32),
	c = i(u),
	f = n(16),
	d = i(f),
	h = n(3),
	v = i(h),
	p = n(0),
	_ = i(p),
	m = n(1),
	g = i(m),
	y = n(5),
	x = i(y),
	b = n(4),
	S = i(b),
	w = n(23),
	E = i(w),
	T = n(247),
	A = i(T),
	P = n(300),
	I = i(P),
	k = n(137),
	L = n(107),
	M = n(112),
	C = n(376),
	R = n(475),
	B = i(R),
	N = n(47),
	O = n(74),
	D = n(10),
	z = n(209),
	F = n(397),
	V = n(106),
	Y = E.
default.tileSize,
	U = Math.PI,
	j = U / 180,
	G = A.
default[1],
	Z = function(t) {
		function e(t, n) { (0, _.
		default)(this, e);
			var i = (0, x.
		default)(this, (e.__proto__ || (0, v.
		default)(e)).call(this));
			return i._minZoom = t.minZoom || E.
		default.mainZoom,
			i._maxZoom = t.maxZoom || E.
		default.maxZoom,
			i._minPitch = t.minPitch || E.
		default.minPitch,
			i._maxPitch = t.maxPitch || E.
		default.maxPitch,
			i._fov = t.fov || .6435011087932844,
			i.width = t.width || 0,
			i.height = t.height || 0,
			i.zoom = t.zoom || 10,
			i.tileZoom = Math.floor(i._zoom),
			i._center = N.convert(t.center) || new N(39.908782, 116.3974),
			i.heading = t.heading || 0,
			i._pitch = t.pitch || 0,
			i._roll = t.roll || 0,
			i._scale = t.scale || 1,
			i.viewTransition = t.viewMode === k.VIEW_MODE.SPHERE ? 1 : 0,
			i._boundary = t.boundary || null,
			i.projection = new F,
			i.renderEngine = n,
			(0, d.
		default)(i, C.easableMixin),
			i
		}
		return (0, S.
	default)(e, t),
		(0, g.
	default)(e, [{
			key: "_isCameraReady",
			value: function() {
				var t = this.renderEngine && this.renderEngine.camera && this.renderEngine.camera.resolution;
				return t && null !== t.width && null !== t.height
			}
		},
		{
			key: "resize",
			value: function(t, e) {
				this.width = t,
				this.height = e,
				this._isCameraReady() && this._fire("bounds_changed", {
					bounds: this.getBounds()
				},
				!0),
				this._fire("input_change"),
				this._constrain()
			}
		},
		{
			key: "transitTo",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
				this._stopEase(),
				n = (0, d.
			default)({
					duration:
					500,
					easing: D.ease
				},
				n);
				var i = this.viewTransition,
				o = t === k.VIEW_MODE.SPHERE ? 1 : 0;
				this._fire("transit_start"),
				this._ease(function(t) {
					e.viewTransition = D.mix(i, o, t)
				},
				function() {
					e._fire("transit_end")
				},
				function() {
					e.viewTransition = o
				},
				n)
			}
		},
		{
			key: "_constrain",
			value: function() {
				if (this._boundary && !this._boundary.isEmpty()) {
					if (this._unmodify) return void(this._unmodify = !1);
					var t = this.width,
					e = this.height,
					n = this.center,
					i = t / this._scale,
					o = e / this._scale,
					r = this.latLngToCoord(this._boundary.getSouthWest()),
					a = this.latLngToCoord(this._boundary.getNorthEast()),
					s = this.latLngToCoord(n),
					l = [r.x, a.x],
					u = [a.y, r.y];
					if (Math.round(l[0]) !== Math.round(l[1]) && Math.round(u[0]) !== Math.round(u[1])) {
						var c = void 0,
						f = void 0,
						d = l && l[1] - l[0] < i ? i / (l[1] - l[0]) : 0,
						h = u && u[1] - u[0] < o ? o / (u[1] - u[0]) : 0,
						v = Math.max(d, h);
						if (v) {
							c = d ? (l[0] + l[1]) / 2 : s.x,
							f = h ? (u[0] + u[1]) / 2 : s.y;
							var p = this.coordToLatLng({
								x: c,
								y: f
							});
							this._unmodify = !0,
							this.zoom += this.scaleZoom(v),
							this.center = p
						} else if (s.x - i / 2 < l[0] && (c = l[0] + i / 2), s.x + i / 2 > l[1] && (c = l[1] - i / 2), s.y - o / 2 < u[0] && (f = u[0] + o / 2), s.y + o / 2 > u[1] && (f = u[1] - o / 2), void 0 !== c || void 0 !== f) {
							var _ = this.coordToLatLng({
								x: void 0 !== c ? c: s.x,
								y: void 0 !== f ? f: s.y
							});
							if (_.lat === this._center.lat && _.lng === this._center.lng) return;
							this._unmodify = !0,
							this.center = _
						}
					}
				}
			}
		},
		{
			key: "zoomScale",
			value: function(t) {
				return Math.pow(2, t)
			}
		},
		{
			key: "scaleZoom",
			value: function(t) {
				return Math.log(t) / Math.LN2
			}
		},
		{
			key: "calCoordsScale",
			value: function(t) {
				return this.scrollScale / this.zoomScale(t)
			}
		},
		{
			key: "latLngToCoord",
			value: function(t, e) {
				return this.projection.latLngToCoord(t, e || this.zoom)
			}
		},
		{
			key: "coordToLatLng",
			value: function(t, e) {
				return this.projection.coordToLatLng(t, e || this.zoom)
			}
		},
		{
			key: "latLngToCenterLocalPixel",
			value: function(t) {
				var e = this.latLngToCoord(this.center, this.zoom),
				n = this.latLngToCoord(t, this.zoom);
				return new B.
			default(n.x - e.x, e.y - n.y, n.z - e.z)
			}
		},
		{
			key: "centerLocalPixelToLatLng",
			value: function(t) {
				var e = this.latLngToCoord(this.center, this.zoom),
				n = new O(e.x + t.x, e.y - t.y);
				return this.coordToLatLng(n, this.zoom)
			}
		},
		{
			key: "latLngToCenterLocalPixelByDistanceScales",
			value: function(t, e) {
				var n = e.distanceScales || this.getDistanceScales(),
				i = e.center || this.center,
				o = e.offsetMercator,
				r = new N(t.lat - i.lat, t.lng - i.lng),
				a = D.clamp(r.lat, -1, 1),
				s = [n.pixelsPerDegree[0], n.pixelsPerDegree[1] + n.pixelsPerDegree2[1] * a],
				l = new O(r.lng * s[0], r.lat * s[1]);
				return o && (l.x += o.x * e.pixelsPerMeter, l.y += o.y * e.pixelsPerMeter),
				l
			}
		},
		{
			key: "projectionTopLeft",
			value: function(t) {
				var e = this.latLngToCoord(this.center, t);
				return new O(e.x - this.width / 2, e.y - this.height / 2)
			}
		},
		{
			key: "latLngToWorldCoord",
			value: function(t) {
				if (this.isSphere) {
					var e = r(t);
					return s(this.center, this.zoom).multiplyVector4(e)
				}
				var n = this.latLngToCenterLocalPixel(t),
				i = n.x,
				o = n.y,
				a = n.z;
				return new L.Vector4(i, o, a, 1)
			}
		},
		{
			key: "worldCoordToLatLng",
			value: function(t) {
				if (this.isSphere) {
					return a(s(this.center, this.zoom).invert().multiplyVector4(t))
				}
				var e = (0, c.
			default)(t.elements, 2),
				n = e[0],
				i = e[1];
				return this.centerLocalPixelToLatLng(new O(n, i))
			}
		},
		{
			key: "screenToLatLng",
			value: function(t) {
				var e = this.renderEngine.camera,
				n = (0, M.fromScreenToNdc)(t.x, t.y, e.resolution),
				i = void 0;
				if (this.isSphere) {
					var o = l(this.zoom),
					r = (0, M.getSphereCoordsByCustomMatrix)(e.pvMatrix, n, o);
					if (!r) return null;
					var a = r.x,
					s = r.y,
					u = r.z;
					i = new L.Vector4(a, s, u, 1)
				} else {
					var c = (0, M.getZPlaneCoordsByCustomMatrix)(e.pvMatrix, n),
					f = c.x,
					d = c.y;
					i = new L.Vector4(f, d, 0, 1)
				}
				return this.worldCoordToLatLng(i)
			}
		},
		{
			key: "latLngToScreen",
			value: function(t) {
				var e = this.latLngToWorldCoord(t),
				n = this.renderEngine.camera,
				i = n.pvMatrix,
				o = n.resolution,
				r = (0, c.
			default)((0, M.getNdcCoordsByCustomMatrix)(i, e).elements, 2),
				a = r[0],
				s = r[1];
				return (0, M.fromNdcToScreen)(a, s, o)
			}
		},
		{
			key: "latLngToTileCoord",
			value: function(t, e) {
				return this.latLngToCoord(t, e || this.zoom).div(Y)
			}
		},
		{
			key: "tileCoordToLatLng",
			value: function(t, e) {
				return this.coordToLatLng(t.mult(Y), e || this.zoom)
			}
		},
		{
			key: "setLocationAtPoint",
			value: function(t, e) {
				var n = this.latLngToTileCoord(t),
				i = this.latLngToTileCoord(this.center),
				o = this.screenToLatLng(e),
				r = this.latLngToTileCoord(o),
				a = r.sub(i),
				s = n.sub(a);
				this.center = this.tileCoordToLatLng(s)
			}
		},
		{
			key: "getBounds",
			value: function() {
				if (this.isSphere) return new z(new N( - 90, -180), new N(90, 180));
				var t = new z,
				e = Math.min(this.renderEngine.camera.getFogEdge()[1], 1),
				n = (1 - e) / 2 * this.height,
				i = this.screenToLatLng(new O(0, n)),
				r = this.screenToLatLng(new O(this.width, n)),
				a = this.screenToLatLng(new O(0, this.height)),
				s = this.screenToLatLng(new O(this.width, this.height));
				return o(r, i, this.center, this.heading),
				o(s, a, this.center, this.heading),
				t.extend(i).extend(r).extend(a).extend(s),
				t
			}
		},
		{
			key: "coveringTiles",
			value: function(t) {
				var e = this.isSphere,
				n = t.round,
				i = t.pixelGeo,
				o = t.minZoom,
				r = t.maxZoom,
				a = t.zoom,
				s = void 0 === a ? this.zoom: a;
				s = D.clamp(s, o, r);
				var l = e ? 3 : n ? Math.round(s) : Math.floor(s);
				if (!this.width || !this.height) return [];
				if (i) {
					return [new I.
				default(l, 0, 0, 0, Y)]
				}
				return e ? this.coveringTilesOnSphere(l, t) : this.coveringTilesOnPlane(l, 1)
			}
		},
		{
			key: "coveringTilesOnSphere",
			value: function(t) {
				var e = I.
			default.coverAll(t);
				return this._sortTiles(e, Y)
			}
		},
		{
			key: "coveringTilesOnPlane",
			value: function(t, e) {
				e = e || 1;
				var n = this.calCoordsScale(t),
				i = this.renderEngine.camera.getBounds(n);
				D.forIn(i,
				function(t, n) {
					n.x *= e,
					n.y *= e
				});
				var o = this.latLngToCoord(this.center, t),
				r = [{
					column: ~~ (o.x + i.leftTop.x) / Y,
					row: ~~ (o.y - i.leftTop.y) / Y
				},
				{
					column: ~~ (o.x + i.rightTop.x) / Y,
					row: ~~ (o.y - i.rightTop.y) / Y
				},
				{
					column: ~~ (o.x + i.rightBottom.x) / Y,
					row: ~~ (o.y - i.rightBottom.y) / Y
				},
				{
					column: ~~ (o.x + i.leftBottom.x) / Y,
					row: ~~ (o.y - i.leftBottom.y) / Y
				}],
				a = I.
			default.cover(t, r);
				return this._sortTiles(a, Y)
			}
		},
		{
			key: "_sortTiles",
			value: function(t, e) {
				for (var n = 0,
				i = t.length; n < i; n++) {
					var o = t[n],
					r = this.projectionTopLeft(o.z),
					a = o.x * e - r.x + e / 2,
					s = o.y * e - r.y + e / 2,
					l = Math.pow(a - this.centerPoint.x, 2) + Math.pow(s - this.centerPoint.y, 2);
					o.ds = Math.sqrt(l)
				}
				return D.bubbleSort(t, "ds"),
				t
			}
		},
		{
			key: "getDistanceRatio",
			value: function(t) {
				var e = 256 * this.zoomScale(t || this.zoom),
				n = this.center;
				return e / (G * Math.abs(Math.cos(n.lat * j)))
			}
		},
		{
			key: "getDistanceScales",
			value: function(t) {
				var e = this.center,
				n = e.lat,
				i = this.zoomScale(t || this.zoom),
				o = {},
				r = Y * i,
				a = Math.cos(n * j),
				s = r / 360,
				l = s / a,
				u = r / G / a;
				o.pixelsPerMeter = [u, u, u],
				o.metersPerPixel = [1 / u, 1 / u, 1 / u],
				o.pixelsPerDegree = [s, l, u],
				o.degreesPerPixel = [1 / s, 1 / l, 1 / u];
				var c = j * Math.tan(n * j) / a,
				f = s * c / 2,
				d = r / G * c,
				h = d / l * u;
				return o.pixelsPerDegree2 = [0, f, d],
				o.pixelsPerMeter2 = [h, 0, h],
				o
			}
		},
		{
			key: "getInput",
			value: function() {
				return {
					height: this.height,
					width: this.width,
					center: this._center,
					zoom: this._zoom,
					heading: this._heading,
					pitch: this._pitch
				}
			}
		},
		{
			key: "isSphere",
			get: function() {
				return this.viewTransition > 0
			}
		},
		{
			key: "size",
			get: function() {
				return new O(this.width, this.height)
			}
		},
		{
			key: "minZoom",
			get: function() {
				return this._minZoom
			},
			set: function(t) {
				t = Math.max(t, E.
			default.minZoom),
				this._minZoom !== t && (this._minZoom = t, this.zoom = Math.max(this.zoom, t))
			}
		},
		{
			key: "maxZoom",
			get: function() {
				return this._maxZoom
			},
			set: function(t) {
				t = Math.min(t, E.
			default.maxZoom),
				this._maxZoom !== t && (this._maxZoom = t, this.zoom = Math.min(this.zoom, t))
			}
		},
		{
			key: "maxPitch",
			get: function() {
				return this._maxPitch
			},
			set: function(t) {
				t = Math.min(t, E.
			default.maxPitch),
				this._maxPitch !== t && (this._maxPitch = t, this.pitch = Math.min(this.pitch, t))
			}
		},
		{
			key: "zoom",
			get: function() {
				return this._zoom
			},
			set: function(t) {
				var e = Math.min(Math.max(t, this.minZoom), this.maxZoom);
				this._zoom !== e && (this._isCameraReady() && this._fire("bounds_changed", {
					bounds: this.getBounds()
				},
				!0), this.renderEngine && this._zoom !== e && this.renderEngine.camera.updateVersion(), this._zoom = e, this._fire("zoom_changed", {
					zoom: this._zoom
				},
				!0), this._scrollScale = this.zoomScale(e), this.tileZoom = Math.floor(e), this.zoomFraction = e - this.tileZoom, this._fire("input_change"), this._constrain())
			}
		},
		{
			key: "roundZoom",
			get: function() {
				return Math.round(this._zoom)
			}
		},
		{
			key: "scrollScale",
			get: function() {
				return this._scrollScale
			}
		},
		{
			key: "center",
			get: function() {
				return this._center
			},
			set: function(t) {
				t.lat === this._center.lat && t.lng === this._center.lng || (this.renderEngine && this._center && t && (this._center.lat !== t.lat || this._center.lng !== t.lng) && this.renderEngine.camera.updateVersion(), this._center = t, this._fire("center_changed", {
					center: this._center
				},
				!0), this._isCameraReady() && this._fire("bounds_changed", {
					bounds: this.getBounds()
				},
				!0), this._fire("input_change"), this._constrain())
			}
		},
		{
			key: "centerPoint",
			get: function() {
				return new O(this.width / 2, this.height / 2)
			}
		},
		{
			key: "heading",
			get: function() {
				return this._heading / Math.PI * 180
			},
			set: function(t) {
				if (!isNaN(t)) {
					var e = D.wrap(t, 0, 360) * Math.PI / 180;
					this._heading !== e && (this._heading = e, this._isCameraReady() && this._fire("bounds_changed", {
						bounds: this.getBounds()
					},
					!0), this._fire("input_change"))
				}
			}
		},
		{
			key: "pitch",
			get: function() {
				return this._pitch / Math.PI * 180
			},
			set: function(t) {
				if (!isNaN(t)) {
					var e = D.clamp(t, this._minPitch, this._maxPitch) / 180 * Math.PI;
					this._pitch !== e && (this._pitch = e, this._isCameraReady() && this._fire("bounds_changed", {
						bounds: this.getBounds()
					},
					!0), this._fire("input_change"))
				}
			}
		},
		{
			key: "roll",
			get: function() {
				return this._roll / Math.PI * 180
			},
			set: function(t) {
				if (!isNaN(t)) {
					var e = D.clamp(t, -90, 90) / 180 * Math.PI;
					this._roll !== e && (this._roll = e, this._isCameraReady() && this._fire("bounds_changed", {
						bounds: this.getBounds()
					},
					!0), this._fire("input_change"))
				}
			}
		},
		{
			key: "fov",
			get: function() {
				return this._fov / Math.PI * 180
			},
			set: function(t) {
				t = Math.max(.01, Math.min(60, t)),
				this._fov !== t && (this._fov = t / 180 * Math.PI)
			}
		},
		{
			key: "scale",
			get: function() {
				return this._scale
			},
			set: function(t) {
				this._scale !== t && (this._scale = t, this.renderEngine.camera.setScale(t), this._fire("scale_changed", {
					scale: this._scale
				},
				!0), this._isCameraReady() && this._fire("bounds_changed", {
					bounds: this.getBounds()
				},
				!0), this._fire("input_change"), this._constrain())
			}
		},
		{
			key: "boundary",
			get: function() {
				return this._boundary || null
			},
			set: function(t) {
				t instanceof z && (this._boundary = t, this._constrain())
			}
		}]),
		e
	} (V);
	t.exports = Z
},
function(t, e, n) {
	"use strict";
	var i = n(32),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.create = function() {
		var t = new Float32Array(3);
		return t[0] = 0,
		t[1] = 0,
		t[2] = 0,
		t
	},
	e.clone = function(t) {
		var e = new Float32Array(3);
		return e[0] = t[0],
		e[1] = t[1],
		e[2] = t[2],
		e
	},
	e.fromValues = function(t, e, n) {
		var i = new Float32Array(3);
		return i[0] = t,
		i[1] = e,
		i[2] = n,
		i
	},
	e.copy = function(t, e) {
		return t[0] = e[0],
		t[1] = e[1],
		t[2] = e[2],
		t
	},
	e.set = function(t, e, n, i) {
		return t[0] = e,
		t[1] = n,
		t[2] = i,
		t
	},
	e.add = function(t, e, n) {
		return t[0] = e[0] + n[0],
		t[1] = e[1] + n[1],
		t[2] = e[2] + n[2],
		t
	},
	e.subtract = function(t, e, n) {
		return t[0] = e[0] - n[0],
		t[1] = e[1] - n[1],
		t[2] = e[2] - n[2],
		t
	},
	e.multiply = function(t, e, n) {
		return t[0] = e[0] * n[0],
		t[1] = e[1] * n[1],
		t[2] = e[2] * n[2],
		t
	},
	e.divide = function(t, e, n) {
		return t[0] = e[0] / n[0],
		t[1] = e[1] / n[1],
		t[2] = e[2] / n[2],
		t
	},
	e.ceil = function(t, e) {
		return t[0] = Math.ceil(e[0]),
		t[1] = Math.ceil(e[1]),
		t[2] = Math.ceil(e[2]),
		t
	},
	e.floor = function(t, e) {
		return t[0] = Math.floor(e[0]),
		t[1] = Math.floor(e[1]),
		t[2] = Math.floor(e[2]),
		t
	},
	e.min = function(t, e, n) {
		return t[0] = Math.min(e[0], n[0]),
		t[1] = Math.min(e[1], n[1]),
		t[2] = Math.min(e[2], n[2]),
		t
	},
	e.max = function(t, e, n) {
		return t[0] = Math.max(e[0], n[0]),
		t[1] = Math.max(e[1], n[1]),
		t[2] = Math.max(e[2], n[2]),
		t
	},
	e.round = function(t, e) {
		return t[0] = Math.round(e[0]),
		t[1] = Math.round(e[1]),
		t[2] = Math.round(e[2]),
		t
	},
	e.scale = function(t, e, n) {
		return t[0] = e[0] * n,
		t[1] = e[1] * n,
		t[2] = e[2] * n,
		t
	},
	e.scaleAndAdd = function(t, e, n, i) {
		return t[0] = e[0] + n[0] * i,
		t[1] = e[1] + n[1] * i,
		t[2] = e[2] + n[2] * i,
		t
	},
	e.distance = function(t, e) {
		var n = e[0] - t[0],
		i = e[1] - t[1],
		o = e[2] - t[2];
		return Math.sqrt(n * n + i * i + o * o)
	},
	e.squaredDistance = function(t, e) {
		var n = e[0] - t[0],
		i = e[1] - t[1],
		o = e[2] - t[2];
		return n * n + i * i + o * o
	},
	e.length = function(t) {
		var e = (0, o.
	default)(t, 3),
		n = e[0],
		i = e[1],
		r = e[2];
		return Math.sqrt(n * n + i * i + r * r)
	},
	e.squaredLength = function(t) {
		var e = (0, o.
	default)(t, 3),
		n = e[0],
		i = e[1],
		r = e[2];
		return n * n + i * i + r * r
	},
	e.negate = function(t, e) {
		return t[0] = -e[0],
		t[1] = -e[1],
		t[2] = -e[2],
		t
	},
	e.inverse = function(t, e) {
		return t[0] = 1 / e[0],
		t[1] = 1 / e[1],
		t[2] = 1 / e[2],
		t
	},
	e.normalize = function(t, e) {
		var n = (0, o.
	default)(e, 3),
		i = n[0],
		r = n[1],
		a = n[2],
		s = i * i + r * r + a * a;
		return s > 0 && (s = 1 / Math.sqrt(s), t[0] = e[0] * s, t[1] = e[1] * s, t[2] = e[2] * s),
		t
	},
	e.dot = function(t, e) {
		return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
	},
	e.cross = function(t, e, n) {
		var i = (0, o.
	default)(e, 3),
		r = i[0],
		a = i[1],
		s = i[2],
		l = (0, o.
	default)(n, 3),
		u = l[0],
		c = l[1],
		f = l[2];
		return t[0] = a * f - s * c,
		t[1] = s * u - r * f,
		t[2] = r * c - a * u,
		t
	},
	e.lerp = function(t, e, n, i) {
		var r = (0, o.
	default)(e, 3),
		a = r[0],
		s = r[1],
		l = r[2];
		return t[0] = a + i * (n[0] - a),
		t[1] = s + i * (n[1] - s),
		t[2] = l + i * (n[2] - l),
		t
	},
	e.hermite = function(t, e, n, i, o, r) {
		var a = r * r,
		s = a * (2 * r - 3) + 1,
		l = a * (r - 2) + r,
		u = a * (r - 1),
		c = a * (3 - 2 * r);
		return t[0] = e[0] * s + n[0] * l + i[0] * u + o[0] * c,
		t[1] = e[1] * s + n[1] * l + i[1] * u + o[1] * c,
		t[2] = e[2] * s + n[2] * l + i[2] * u + o[2] * c,
		t
	},
	e.bezier = function(t, e, n, i, o, r) {
		var a = 1 - r,
		s = a * a,
		l = r * r,
		u = s * a,
		c = 3 * r * s,
		f = 3 * l * a,
		d = l * r;
		return t[0] = e[0] * u + n[0] * c + i[0] * f + o[0] * d,
		t[1] = e[1] * u + n[1] * c + i[1] * f + o[1] * d,
		t[2] = e[2] * u + n[2] * c + i[2] * f + o[2] * d,
		t
	},
	e.random = function(t, e) {
		e = e || 1;
		var n = 2 * Math.random() * Math.PI,
		i = 2 * Math.random() - 1,
		o = Math.sqrt(1 - i * i) * e;
		return t[0] = Math.cos(n) * o,
		t[1] = Math.sin(n) * o,
		t[2] = i * e,
		t
	},
	e.transformMat4 = function(t, e, n) {
		var i = (0, o.
	default)(e, 3),
		r = i[0],
		a = i[1],
		s = i[2],
		l = n[3] * r + n[7] * a + n[11] * s + n[15] || 1;
		return t[0] = (n[0] * r + n[4] * a + n[8] * s + n[12]) / l,
		t[1] = (n[1] * r + n[5] * a + n[9] * s + n[13]) / l,
		t[2] = (n[2] * r + n[6] * a + n[10] * s + n[14]) / l,
		t
	},
	e.transformMat3 = function(t, e, n) {
		var i = (0, o.
	default)(e, 3),
		r = i[0],
		a = i[1],
		s = i[2];
		return t[0] = r * n[0] + a * n[3] + s * n[6],
		t[1] = r * n[1] + a * n[4] + s * n[7],
		t[2] = r * n[2] + a * n[5] + s * n[8],
		t
	},
	e.transformQuat = function(t, e, n) {
		var i = (0, o.
	default)(e, 3),
		r = i[0],
		a = i[1],
		s = i[2],
		l = (0, o.
	default)(n, 4),
		u = l[0],
		c = l[1],
		f = l[2],
		d = l[3],
		h = d * r + c * s - f * a,
		v = d * a + f * r - u * s,
		p = d * s + u * a - c * r,
		_ = -u * r - c * a - f * s;
		return t[0] = h * d + _ * -u + v * -f - p * -c,
		t[1] = v * d + _ * -c + p * -u - h * -f,
		t[2] = p * d + _ * -f + h * -c - v * -u,
		t
	},
	e.rotateX = function(t, e, n, i) {
		var o = [],
		r = [];
		return o[0] = e[0] - n[0],
		o[1] = e[1] - n[1],
		o[2] = e[2] - n[2],
		r[0] = o[0],
		r[1] = o[1] * Math.cos(i) - o[2] * Math.sin(i),
		r[2] = o[1] * Math.sin(i) + o[2] * Math.cos(i),
		t[0] = r[0] + n[0],
		t[1] = r[1] + n[1],
		t[2] = r[2] + n[2],
		t
	},
	e.rotateY = function(t, e, n, i) {
		var o = [],
		r = [];
		return o[0] = e[0] - n[0],
		o[1] = e[1] - n[1],
		o[2] = e[2] - n[2],
		r[0] = o[2] * Math.sin(i) + o[0] * Math.cos(i),
		r[1] = o[1],
		r[2] = o[2] * Math.cos(i) - o[0] * Math.sin(i),
		t[0] = r[0] + n[0],
		t[1] = r[1] + n[1],
		t[2] = r[2] + n[2],
		t
	},
	e.rotateZ = function(t, e, n, i) {
		var o = [],
		r = [];
		return o[0] = e[0] - n[0],
		o[1] = e[1] - n[1],
		o[2] = e[2] - n[2],
		r[0] = o[0] * Math.cos(i) - o[1] * Math.sin(i),
		r[1] = o[0] * Math.sin(i) + o[1] * Math.cos(i),
		r[2] = o[2],
		t[0] = r[0] + n[0],
		t[1] = r[1] + n[1],
		t[2] = r[2] + n[2],
		t
	},
	e.forEach = function(t, e, n, i, o, r) {
		var a = void 0,
		s = void 0;
		for (e || (e = 3), n || (n = 0), s = i ? Math.min(i * e + n, t.length) : t.length, a = n; a < s; a += e) vec[0] = t[a],
		vec[1] = t[a + 1],
		vec[2] = t[a + 2],
		o(vec, vec, r),
		t[a] = vec[0],
		t[a + 1] = vec[1],
		t[a + 2] = vec[2];
		return t
	},
	e.angle = function(t, e) {
		var n = fromValues(t[0], t[1], t[2]),
		i = fromValues(e[0], e[1], e[2]);
		normalize(n, n),
		normalize(i, i);
		var o = dot(n, i);
		return o > 1 ? 0 : o < -1 ? Math.PI: Math.acos(o)
	},
	e.str = function(t) {
		return "vec3(" + t[0] + ", " + t[1] + ", " + t[2] + ")"
	},
	e.equals = function(t, e) {
		return t[0] === e[0] && t[1] === e[1] && t[2] === e[2]
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
		return new s.
	default(function(n, i) {
			var o = window.URL.createObjectURL(t),
			r = new Image(e.width, e.height);
			r.src = o,
			r.onload = function() {
				n(r)
			},
			r.onerror = function() {
				i(new Error("blob to image failed"))
			}
		})
	}
	function o(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = e.width || t.width,
		i = e.height || t.height,
		o = document.createElement("canvas");
		return o.width = n,
		o.height = i,
		o.getContext("2d").drawImage(t, 0, 0, n, i),
		o
	}
	function r(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {};
		return new s.
	default(function(n, i) {
			var o = new Image(e.width, e.height);
			o.src = t.toDataURL("image/png"),
			o.onload = function() {
				n(o)
			},
			o.onerror = function() {
				i()
			}
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(25),
	s = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (a);
	e.blobToImage = i,
	e.imageToCanvas = o,
	e.canvasToImage = r
},
, , , ,
function(t, e, n) {
	n(954),
	n(893),
	n(895),
	n(894),
	n(897),
	n(899),
	n(904),
	n(898),
	n(896),
	n(906),
	n(905),
	n(901),
	n(902),
	n(900),
	n(892),
	n(903),
	n(907),
	n(908),
	n(859),
	n(861),
	n(860),
	n(910),
	n(909),
	n(880),
	n(890),
	n(891),
	n(881),
	n(882),
	n(883),
	n(884),
	n(885),
	n(886),
	n(887),
	n(888),
	n(889),
	n(863),
	n(864),
	n(865),
	n(866),
	n(867),
	n(868),
	n(869),
	n(870),
	n(871),
	n(872),
	n(873),
	n(874),
	n(875),
	n(876),
	n(877),
	n(878),
	n(879),
	n(941),
	n(946),
	n(953),
	n(944),
	n(936),
	n(937),
	n(942),
	n(947),
	n(949),
	n(932),
	n(933),
	n(934),
	n(935),
	n(938),
	n(939),
	n(940),
	n(943),
	n(945),
	n(948),
	n(950),
	n(951),
	n(952),
	n(854),
	n(856),
	n(855),
	n(858),
	n(857),
	n(843),
	n(841),
	n(847),
	n(844),
	n(850),
	n(852),
	n(840),
	n(846),
	n(837),
	n(851),
	n(835),
	n(849),
	n(848),
	n(842),
	n(845),
	n(834),
	n(836),
	n(839),
	n(838),
	n(853),
	n(444),
	n(925),
	n(548),
	n(930),
	n(549),
	n(926),
	n(927),
	n(928),
	n(929),
	n(547),
	n(862),
	n(931),
	n(966),
	n(967),
	n(955),
	n(956),
	n(961),
	n(964),
	n(965),
	n(959),
	n(962),
	n(960),
	n(963),
	n(957),
	n(958),
	n(911),
	n(912),
	n(913),
	n(914),
	n(915),
	n(918),
	n(916),
	n(917),
	n(919),
	n(920),
	n(921),
	n(922),
	n(924),
	n(923),
	t.exports = n(102)
},
function(t, e, n) {
	n(968),
	t.exports = n(102).Array.flatMap
},
function(t, e, n) {
	n(969),
	t.exports = n(102).Array.includes
},
function(t, e, n) {
	n(970),
	t.exports = n(102).Object.entries
},
function(t, e, n) {
	n(971),
	t.exports = n(102).Object.getOwnPropertyDescriptors
},
function(t, e, n) {
	n(972),
	t.exports = n(102).Object.values
},
function(t, e, n) {
	"use strict";
	n(547),
	n(973),
	t.exports = n(102).Promise.
	finally
},
function(t, e, n) {
	n(974),
	t.exports = n(102).String.padEnd
},
function(t, e, n) {
	n(975),
	t.exports = n(102).String.padStart
},
function(t, e, n) {
	n(977),
	t.exports = n(102).String.trimRight
},
function(t, e, n) {
	n(976),
	t.exports = n(102).String.trimLeft
},
function(t, e, n) {
	n(978),
	t.exports = n(442).f("asyncIterator")
},
, , , , , , , , , , , ,
function(t, e, n) {
	var i = n(63),
	o = n(349),
	r = n(78)("species");
	t.exports = function(t) {
		var e;
		return o(t) && (e = t.constructor, "function" != typeof e || e !== Array && !o(e.prototype) || (e = void 0), i(e) && null === (e = e[r]) && (e = void 0)),
		void 0 === e ? Array: e
	}
},
function(t, e, n) {
	"use strict";
	var i = n(61),
	o = Date.prototype.getTime,
	r = Date.prototype.toISOString,
	a = function(t) {
		return t > 9 ? t: "0" + t
	};
	t.exports = i(function() {
		return "0385-07-25T07:06:39.999Z" != r.call(new Date( - 5e13 - 1))
	}) || !i(function() {
		r.call(new Date(NaN))
	}) ?
	function() {
		if (!isFinite(o.call(this))) throw RangeError("Invalid time value");
		var t = this,
		e = t.getUTCFullYear(),
		n = t.getUTCMilliseconds(),
		i = e < 0 ? "-": e > 9999 ? "+": "";
		return i + ("00000" + Math.abs(e)).slice(i ? -6 : -4) + "-" + a(t.getUTCMonth() + 1) + "-" + a(t.getUTCDate()) + "T" + a(t.getUTCHours()) + ":" + a(t.getUTCMinutes()) + ":" + a(t.getUTCSeconds()) + "." + (n > 99 ? n: "0" + a(n)) + "Z"
	}: r
},
function(t, e, n) {
	"use strict";
	var i = n(60),
	o = n(254);
	t.exports = function(t) {
		if ("string" !== t && "number" !== t && "default" !== t) throw TypeError("Incorrect hint");
		return o(i(this), "number" != t)
	}
},
function(t, e, n) {
	var i = n(267),
	o = n(351),
	r = n(322);
	t.exports = function(t) {
		var e = i(t),
		n = o.f;
		if (n) for (var a, s = n(t), l = r.f, u = 0; s.length > u;) l.call(t, a = s[u++]) && e.push(a);
		return e
	}
},
function(t, e, n) {
	"use strict";
	function i(t, e, n, u, c, f, d, h) {
		for (var v, p, _ = c,
		m = 0,
		g = !!d && s(d, h, 3); m < u;) {
			if (m in n) {
				if (v = g ? g(n[m], m, e) : n[m], p = !1, r(v) && (p = v[l], p = void 0 !== p ? !!p: o(v)), p && f > 0) _ = i(t, e, v, a(v.length), _, f - 1) - 1;
				else {
					if (_ >= 9007199254740991) throw TypeError();
					t[_] = v
				}
				_++
			}
			m++
		}
		return _
	}
	var o = n(349),
	r = n(63),
	a = n(88),
	s = n(231),
	l = n(78)("isConcatSpreadable");
	t.exports = i
},
function(t, e, n) {
	t.exports = n(353)("native-function-to-string", Function.toString)
},
function(t, e, n) {
	var i = n(432),
	o = Math.pow,
	r = o(2, -52),
	a = o(2, -23),
	s = o(2, 127) * (2 - a),
	l = o(2, -126),
	u = function(t) {
		return t + 1 / r - 1 / r
	};
	t.exports = Math.fround ||
	function(t) {
		var e, n, o = Math.abs(t),
		c = i(t);
		return o < l ? c * u(o / l / a) * l * a: (e = (1 + a / r) * o, n = e - (e - o), n > s || n != n ? c * (1 / 0) : c * n)
	}
},
function(t, e, n) {
	var i = n(62),
	o = n(440).set,
	r = i.MutationObserver || i.WebKitMutationObserver,
	a = i.process,
	s = i.Promise,
	l = "process" == n(244)(a);
	t.exports = function() {
		var t, e, n, u = function() {
			var i, o;
			for (l && (i = a.domain) && i.exit(); t;) {
				o = t.fn,
				t = t.next;
				try {
					o()
				} catch(i) {
					throw t ? n() : e = void 0,
					i
				}
			}
			e = void 0,
			i && i.enter()
		};
		if (l) n = function() {
			a.nextTick(u)
		};
		else if (!r || i.navigator && i.navigator.standalone) if (s && s.resolve) {
			var c = s.resolve(void 0);
			n = function() {
				c.then(u)
			}
		} else n = function() {
			o.call(i, u)
		};
		else {
			var f = !0,
			d = document.createTextNode("");
			new r(u).observe(d, {
				characterData: !0
			}),
			n = function() {
				d.data = f = !f
			}
		}
		return function(i) {
			var o = {
				fn: i,
				next: void 0
			};
			e && (e.next = o),
			t || (t = o, n()),
			e = o
		}
	}
},
function(t, e) {
	t.exports = function(t) {
		try {
			return {
				e: !1,
				v: t()
			}
		} catch(t) {
			return {
				e: !0,
				v: t
			}
		}
	}
},
function(t, e, n) {
	var i = n(11);
	i(i.P, "Array", {
		copyWithin: n(520)
	}),
	n(262)("copyWithin")
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(4);
	i(i.P + i.F * !n(226)([].every, !0), "Array", {
		every: function(t) {
			return o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.P, "Array", {
		fill: n(421)
	}),
	n(262)("fill")
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(2);
	i(i.P + i.F * !n(226)([].filter, !0), "Array", {
		filter: function(t) {
			return o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(6),
	r = "findIndex",
	a = !0;
	r in [] && Array(1)[r](function() {
		a = !1
	}),
	i(i.P + i.F * a, "Array", {
		findIndex: function(t) {
			return o(this, t, arguments.length > 1 ? arguments[1] : void 0)
		}
	}),
	n(262)(r)
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(5),
	r = !0;
	"find" in [] && Array(1).find(function() {
		r = !1
	}),
	i(i.P + i.F * r, "Array", {
		find: function(t) {
			return o(this, t, arguments.length > 1 ? arguments[1] : void 0)
		}
	}),
	n(262)("find")
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(0),
	r = n(226)([].forEach, !0);
	i(i.P + i.F * !r, "Array", {
		forEach: function(t) {
			return o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(231),
	o = n(11),
	r = n(136),
	a = n(529),
	s = n(428),
	l = n(88),
	u = n(422),
	c = n(443);
	o(o.S + o.F * !n(350)(function(t) {
		Array.from(t)
	}), "Array", {
		from: function(t) {
			var e, n, o, f, d = r(t),
			h = "function" == typeof this ? this: Array,
			v = arguments.length,
			p = v > 1 ? arguments[1] : void 0,
			_ = void 0 !== p,
			m = 0,
			g = c(d);
			if (_ && (p = i(p, v > 2 ? arguments[2] : void 0, 2)), void 0 == g || h == Array && s(g)) for (e = l(d.length), n = new h(e); e > m; m++) u(n, m, _ ? p(d[m], m) : d[m]);
			else for (f = g.call(d), n = new h; ! (o = f.next()).done; m++) u(n, m, _ ? a(f, p, [o.value, m], !0) : o.value);
			return n.length = m,
			n
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(344)(!1),
	r = [].indexOf,
	a = !!r && 1 / [1].indexOf(1, -0) < 0;
	i(i.P + i.F * (a || !n(226)(r)), "Array", {
		indexOf: function(t) {
			return a ? r.apply(this, arguments) || 0 : o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Array", {
		isArray: n(349)
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(216),
	r = [].join;
	i(i.P + i.F * (n(321) != Object || !n(226)(r)), "Array", {
		join: function(t) {
			return r.call(o(this), void 0 === t ? ",": t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(216),
	r = n(234),
	a = n(88),
	s = [].lastIndexOf,
	l = !!s && 1 / [1].lastIndexOf(1, -0) < 0;
	i(i.P + i.F * (l || !n(226)(s)), "Array", {
		lastIndexOf: function(t) {
			if (l) return s.apply(this, arguments) || 0;
			var e = o(this),
			n = a(e.length),
			i = n - 1;
			for (arguments.length > 1 && (i = Math.min(i, r(arguments[1]))), i < 0 && (i = n + i); i >= 0; i--) if (i in e && e[i] === t) return i || 0;
			return - 1
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(1);
	i(i.P + i.F * !n(226)([].map, !0), "Array", {
		map: function(t) {
			return o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(422);
	i(i.S + i.F * n(61)(function() {
		function t() {}
		return ! (Array.of.call(t) instanceof t)
	}), "Array", {
		of: function() {
			for (var t = 0,
			e = arguments.length,
			n = new("function" == typeof this ? this: Array)(e); e > t;) o(n, t, arguments[t++]);
			return n.length = e,
			n
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(521);
	i(i.P + i.F * !n(226)([].reduceRight, !0), "Array", {
		reduceRight: function(t) {
			return o(this, t, arguments.length, arguments[1], !0)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(521);
	i(i.P + i.F * !n(226)([].reduce, !0), "Array", {
		reduce: function(t) {
			return o(this, t, arguments.length, arguments[1], !1)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(426),
	r = n(244),
	a = n(269),
	s = n(88),
	l = [].slice;
	i(i.P + i.F * n(61)(function() {
		o && l.call(o)
	}), "Array", {
		slice: function(t, e) {
			var n = s(this.length),
			i = r(this);
			if (e = void 0 === e ? n: e, "Array" == i) return l.call(this, t, e);
			for (var o = a(t, n), u = a(e, n), c = s(u - o), f = new Array(c), d = 0; d < c; d++) f[d] = "String" == i ? this.charAt(o + d) : this[o + d];
			return f
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(230)(3);
	i(i.P + i.F * !n(226)([].some, !0), "Array", {
		some: function(t) {
			return o(this, t, arguments[1])
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(229),
	r = n(136),
	a = n(61),
	s = [].sort,
	l = [1, 2, 3];
	i(i.P + i.F * (a(function() {
		l.sort(void 0)
	}) || !a(function() {
		l.sort(null)
	}) || !n(226)(s)), "Array", {
		sort: function(t) {
			return void 0 === t ? s.call(r(this)) : s.call(r(this), o(t))
		}
	})
},
function(t, e, n) {
	n(287)("Array")
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Date", {
		now: function() {
			return (new Date).getTime()
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(826);
	i(i.P + i.F * (Date.prototype.toISOString !== o), "Date", {
		toISOString: o
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(136),
	r = n(254);
	i(i.P + i.F * n(61)(function() {
		return null !== new Date(NaN).toJSON() || 1 !== Date.prototype.toJSON.call({
			toISOString: function() {
				return 1
			}
		})
	}), "Date", {
		toJSON: function(t) {
			var e = o(this),
			n = r(e);
			return "number" != typeof n || isFinite(n) ? e.toISOString() : null
		}
	})
},
function(t, e, n) {
	var i = n(78)("toPrimitive"),
	o = Date.prototype;
	i in o || n(215)(o, i, n(827))
},
function(t, e, n) {
	var i = Date.prototype,
	o = i.toString,
	r = i.getTime;
	new Date(NaN) + "" != "Invalid Date" && n(206)(i, "toString",
	function() {
		var t = r.call(this);
		return t === t ? o.call(this) : "Invalid Date"
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.P, "Function", {
		bind: n(523)
	})
},
function(t, e, n) {
	"use strict";
	var i = n(63),
	o = n(266),
	r = n(78)("hasInstance"),
	a = Function.prototype;
	r in a || n(104).f(a, r, {
		value: function(t) {
			if ("function" != typeof this || !i(t)) return ! 1;
			if (!i(this.prototype)) return t instanceof this;
			for (; t = o(t);) if (this.prototype === t) return ! 0;
			return ! 1
		}
	})
},
function(t, e, n) {
	var i = n(104).f,
	o = Function.prototype,
	r = /^\s*function ([^ (]*)/;
	"name" in o || n(103) && i(o, "name", {
		configurable: !0,
		get: function() {
			try {
				return ("" + this).match(r)[1]
			} catch(t) {
				return ""
			}
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(524),
	o = n(271);
	t.exports = n(345)("Map",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		get: function(t) {
			var e = i.getEntry(o(this, "Map"), t);
			return e && e.v
		},
		set: function(t, e) {
			return i.def(o(this, "Map"), 0 === t ? 0 : t, e)
		}
	},
	i, !0)
},
function(t, e, n) {
	var i = n(11),
	o = n(532),
	r = Math.sqrt,
	a = Math.acosh;
	i(i.S + i.F * !(a && 710 == Math.floor(a(Number.MAX_VALUE)) && a(1 / 0) == 1 / 0), "Math", {
		acosh: function(t) {
			return (t = +t) < 1 ? NaN: t > 94906265.62425156 ? Math.log(t) + Math.LN2: o(t - 1 + r(t - 1) * r(t + 1))
		}
	})
},
function(t, e, n) {
	function i(t) {
		return isFinite(t = +t) && 0 != t ? t < 0 ? -i( - t) : Math.log(t + Math.sqrt(t * t + 1)) : t
	}
	var o = n(11),
	r = Math.asinh;
	o(o.S + o.F * !(r && 1 / r(0) > 0), "Math", {
		asinh: i
	})
},
function(t, e, n) {
	var i = n(11),
	o = Math.atanh;
	i(i.S + i.F * !(o && 1 / o( - 0) < 0), "Math", {
		atanh: function(t) {
			return 0 == (t = +t) ? t: Math.log((1 + t) / (1 - t)) / 2
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(432);
	i(i.S, "Math", {
		cbrt: function(t) {
			return o(t = +t) * Math.pow(Math.abs(t), 1 / 3)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		clz32: function(t) {
			return (t >>>= 0) ? 31 - Math.floor(Math.log(t + .5) * Math.LOG2E) : 32
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = Math.exp;
	i(i.S, "Math", {
		cosh: function(t) {
			return (o(t = +t) + o( - t)) / 2
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(431);
	i(i.S + i.F * (o != Math.expm1), "Math", {
		expm1: o
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		fround: n(831)
	})
},
function(t, e, n) {
	var i = n(11),
	o = Math.abs;
	i(i.S, "Math", {
		hypot: function(t, e) {
			for (var n, i, r = 0,
			a = 0,
			s = arguments.length,
			l = 0; a < s;) n = o(arguments[a++]),
			l < n ? (i = l / n, r = r * i * i + 1, l = n) : n > 0 ? (i = n / l, r += i * i) : r += n;
			return l === 1 / 0 ? 1 / 0 : l * Math.sqrt(r)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = Math.imul;
	i(i.S + i.F * n(61)(function() {
		return - 5 != o(4294967295, 5) || 2 != o.length
	}), "Math", {
		imul: function(t, e) {
			var n = +t,
			i = +e,
			o = 65535 & n,
			r = 65535 & i;
			return 0 | o * r + ((65535 & n >>> 16) * r + o * (65535 & i >>> 16) << 16 >>> 0)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		log10: function(t) {
			return Math.log(t) * Math.LOG10E
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		log1p: n(532)
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		log2: function(t) {
			return Math.log(t) / Math.LN2
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		sign: n(432)
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(431),
	r = Math.exp;
	i(i.S + i.F * n(61)(function() {
		return - 2e-17 != !Math.sinh( - 2e-17)
	}), "Math", {
		sinh: function(t) {
			return Math.abs(t = +t) < 1 ? (o(t) - o( - t)) / 2 : (r(t - 1) - r( - t - 1)) * (Math.E / 2)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(431),
	r = Math.exp;
	i(i.S, "Math", {
		tanh: function(t) {
			var e = o(t = +t),
			n = o( - t);
			return e == 1 / 0 ? 1 : n == 1 / 0 ? -1 : (e - n) / (r(t) + r( - t))
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Math", {
		trunc: function(t) {
			return (t > 0 ? Math.floor: Math.ceil)(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(62),
	o = n(214),
	r = n(244),
	a = n(427),
	s = n(254),
	l = n(61),
	u = n(265).f,
	c = n(232).f,
	f = n(104).f,
	d = n(289).trim,
	h = i.Number,
	v = h,
	p = h.prototype,
	_ = "Number" == r(n(264)(p)),
	m = "trim" in String.prototype,
	g = function(t) {
		var e = s(t, !1);
		if ("string" == typeof e && e.length > 2) {
			e = m ? e.trim() : d(e, 3);
			var n, i, o, r = e.charCodeAt(0);
			if (43 === r || 45 === r) {
				if (88 === (n = e.charCodeAt(2)) || 120 === n) return NaN
			} else if (48 === r) {
				switch (e.charCodeAt(1)) {
				case 66:
				case 98:
					i = 2,
					o = 49;
					break;
				case 79:
				case 111:
					i = 8,
					o = 55;
					break;
				default:
					return + e
				}
				for (var a, l = e.slice(2), u = 0, c = l.length; u < c; u++) if ((a = l.charCodeAt(u)) < 48 || a > o) return NaN;
				return parseInt(l, i)
			}
		}
		return + e
	};
	if (!h(" 0o1") || !h("0b1") || h("+0x1")) {
		h = function(t) {
			var e = arguments.length < 1 ? 0 : t,
			n = this;
			return n instanceof h && (_ ? l(function() {
				p.valueOf.call(n)
			}) : "Number" != r(n)) ? a(new v(g(e)), n, h) : g(e)
		};
		for (var y, x = n(103) ? u(v) : "MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,isFinite,isInteger,isNaN,isSafeInteger,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,parseFloat,parseInt,isInteger".split(","), b = 0; x.length > b; b++) o(v, y = x[b]) && !o(h, y) && f(h, y, c(v, y));
		h.prototype = p,
		p.constructor = h,
		n(206)(i, "Number", h)
	}
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Number", {
		EPSILON: Math.pow(2, -52)
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(62).isFinite;
	i(i.S, "Number", {
		isFinite: function(t) {
			return "number" == typeof t && o(t)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Number", {
		isInteger: n(528)
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Number", {
		isNaN: function(t) {
			return t != t
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(528),
	r = Math.abs;
	i(i.S, "Number", {
		isSafeInteger: function(t) {
			return o(t) && r(t) <= 9007199254740991
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Number", {
		MAX_SAFE_INTEGER: 9007199254740991
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Number", {
		MIN_SAFE_INTEGER: -9007199254740991
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(540);
	i(i.S + i.F * (Number.parseFloat != o), "Number", {
		parseFloat: o
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(541);
	i(i.S + i.F * (Number.parseInt != o), "Number", {
		parseInt: o
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(234),
	r = n(519),
	a = n(438),
	s = 1..toFixed,
	l = Math.floor,
	u = [0, 0, 0, 0, 0, 0],
	c = "Number.toFixed: incorrect invocation!",
	f = function(t, e) {
		for (var n = -1,
		i = e; ++n < 6;) i += t * u[n],
		u[n] = i % 1e7,
		i = l(i / 1e7)
	},
	d = function(t) {
		for (var e = 6,
		n = 0; --e >= 0;) n += u[e],
		u[e] = l(n / t),
		n = n % t * 1e7
	},
	h = function() {
		for (var t = 6,
		e = ""; --t >= 0;) if ("" !== e || 0 === t || 0 !== u[t]) {
			var n = String(u[t]);
			e = "" === e ? n: e + a.call("0", 7 - n.length) + n
		}
		return e
	},
	v = function(t, e, n) {
		return 0 === e ? n: e % 2 == 1 ? v(t, e - 1, n * t) : v(t * t, e / 2, n)
	},
	p = function(t) {
		for (var e = 0,
		n = t; n >= 4096;) e += 12,
		n /= 4096;
		for (; n >= 2;) e += 1,
		n /= 2;
		return e
	};
	i(i.P + i.F * ( !! s && ("0.000" !== 8e-5.toFixed(3) || "1" !== .9.toFixed(0) || "1.25" !== 1.255.toFixed(2) || "1000000000000000128" !== (0xde0b6b3a7640080).toFixed(0)) || !n(61)(function() {
		s.call({})
	})), "Number", {
		toFixed: function(t) {
			var e, n, i, s, l = r(this, c),
			u = o(t),
			_ = "",
			m = "0";
			if (u < 0 || u > 20) throw RangeError(c);
			if (l != l) return "NaN";
			if (l <= -1e21 || l >= 1e21) return String(l);
			if (l < 0 && (_ = "-", l = -l), l > 1e-21) if (e = p(l * v(2, 69, 1)) - 69, n = e < 0 ? l * v(2, -e, 1) : l / v(2, e, 1), n *= 4503599627370496, (e = 52 - e) > 0) {
				for (f(0, n), i = u; i >= 7;) f(1e7, 0),
				i -= 7;
				for (f(v(10, i, 1), 0), i = e - 1; i >= 23;) d(1 << 23),
				i -= 23;
				d(1 << i),
				f(1, 1),
				d(2),
				m = h()
			} else f(0, n),
			f(1 << -e, 0),
			m = h() + a.call("0", u);
			return u > 0 ? (s = m.length, m = _ + (s <= u ? "0." + a.call("0", u - s) + m: m.slice(0, s - u) + "." + m.slice(s - u))) : m = _ + m,
			m
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(61),
	r = n(519),
	a = 1..toPrecision;
	i(i.P + i.F * (o(function() {
		return "1" !== a.call(1, void 0)
	}) || !o(function() {
		a.call({})
	})), "Number", {
		toPrecision: function(t) {
			var e = r(this, "Number#toPrecision: incorrect invocation!");
			return void 0 === t ? a.call(e) : a.call(e, t)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S + i.F, "Object", {
		assign: n(534)
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Object", {
		create: n(264)
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S + i.F * !n(103), "Object", {
		defineProperties: n(535)
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S + i.F * !n(103), "Object", {
		defineProperty: n(104).f
	})
},
function(t, e, n) {
	var i = n(63),
	o = n(253).onFreeze;
	n(233)("freeze",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(216),
	o = n(232).f;
	n(233)("getOwnPropertyDescriptor",
	function() {
		return function(t, e) {
			return o(i(t), e)
		}
	})
},
function(t, e, n) {
	n(233)("getOwnPropertyNames",
	function() {
		return n(536).f
	})
},
function(t, e, n) {
	var i = n(136),
	o = n(266);
	n(233)("getPrototypeOf",
	function() {
		return function(t) {
			return o(i(t))
		}
	})
},
function(t, e, n) {
	var i = n(63);
	n(233)("isExtensible",
	function(t) {
		return function(e) {
			return !! i(e) && (!t || t(e))
		}
	})
},
function(t, e, n) {
	var i = n(63);
	n(233)("isFrozen",
	function(t) {
		return function(e) {
			return ! i(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var i = n(63);
	n(233)("isSealed",
	function(t) {
		return function(e) {
			return ! i(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Object", {
		is: n(543)
	})
},
function(t, e, n) {
	var i = n(136),
	o = n(267);
	n(233)("keys",
	function() {
		return function(t) {
			return o(i(t))
		}
	})
},
function(t, e, n) {
	var i = n(63),
	o = n(253).onFreeze;
	n(233)("preventExtensions",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(63),
	o = n(253).onFreeze;
	n(233)("seal",
	function(t) {
		return function(e) {
			return t && i(e) ? t(o(e)) : e
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Object", {
		setPrototypeOf: n(434).set
	})
},
function(t, e, n) {
	"use strict";
	var i = n(320),
	o = {};
	o[n(78)("toStringTag")] = "z",
	o + "" != "[object z]" && n(206)(Object.prototype, "toString",
	function() {
		return "[object " + i(this) + "]"
	},
	!0)
},
function(t, e, n) {
	var i = n(11),
	o = n(540);
	i(i.G + i.F * (parseFloat != o), {
		parseFloat: o
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(541);
	i(i.G + i.F * (parseInt != o), {
		parseInt: o
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(229),
	r = n(60),
	a = (n(62).Reflect || {}).apply,
	s = Function.apply;
	i(i.S + i.F * !n(61)(function() {
		a(function() {})
	}), "Reflect", {
		apply: function(t, e, n) {
			var i = o(t),
			l = r(n);
			return a ? a(i, e, l) : s.call(i, e, l)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(264),
	r = n(229),
	a = n(60),
	s = n(63),
	l = n(61),
	u = n(523),
	c = (n(62).Reflect || {}).construct,
	f = l(function() {
		function t() {}
		return ! (c(function() {},
		[], t) instanceof t)
	}),
	d = !l(function() {
		c(function() {})
	});
	i(i.S + i.F * (f || d), "Reflect", {
		construct: function(t, e) {
			r(t),
			a(e);
			var n = arguments.length < 3 ? t: r(arguments[2]);
			if (d && !f) return c(t, e, n);
			if (t == n) {
				switch (e.length) {
				case 0:
					return new t;
				case 1:
					return new t(e[0]);
				case 2:
					return new t(e[0], e[1]);
				case 3:
					return new t(e[0], e[1], e[2]);
				case 4:
					return new t(e[0], e[1], e[2], e[3])
				}
				var i = [null];
				return i.push.apply(i, e),
				new(u.apply(t, i))
			}
			var l = n.prototype,
			h = o(s(l) ? l: Object.prototype),
			v = Function.apply.call(t, h, e);
			return s(v) ? v: h
		}
	})
},
function(t, e, n) {
	var i = n(104),
	o = n(11),
	r = n(60),
	a = n(254);
	o(o.S + o.F * n(61)(function() {
		Reflect.defineProperty(i.f({},
		1, {
			value: 1
		}), 1, {
			value: 2
		})
	}), "Reflect", {
		defineProperty: function(t, e, n) {
			r(t),
			e = a(e, !0),
			r(n);
			try {
				return i.f(t, e, n),
				!0
			} catch(t) {
				return ! 1
			}
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(232).f,
	r = n(60);
	i(i.S, "Reflect", {
		deleteProperty: function(t, e) {
			var n = o(r(t), e);
			return ! (n && !n.configurable) && delete t[e]
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(60),
	r = function(t) {
		this._t = o(t),
		this._i = 0;
		var e, n = this._k = [];
		for (e in t) n.push(e)
	};
	n(530)(r, "Object",
	function() {
		var t, e = this,
		n = e._k;
		do {
			if (e._i >= n.length) return {
				value: void 0,
				done: !0
			}
		} while (!(( t = n [ e . _i ++]) in e._t));
		return {
			value: t,
			done: !1
		}
	}),
	i(i.S, "Reflect", {
		enumerate: function(t) {
			return new r(t)
		}
	})
},
function(t, e, n) {
	var i = n(232),
	o = n(11),
	r = n(60);
	o(o.S, "Reflect", {
		getOwnPropertyDescriptor: function(t, e) {
			return i.f(r(t), e)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(266),
	r = n(60);
	i(i.S, "Reflect", {
		getPrototypeOf: function(t) {
			return o(r(t))
		}
	})
},
function(t, e, n) {
	function i(t, e) {
		var n, s, c = arguments.length < 3 ? t: arguments[2];
		return u(t) === c ? t[e] : (n = o.f(t, e)) ? a(n, "value") ? n.value: void 0 !== n.get ? n.get.call(c) : void 0 : l(s = r(t)) ? i(s, e, c) : void 0
	}
	var o = n(232),
	r = n(266),
	a = n(214),
	s = n(11),
	l = n(63),
	u = n(60);
	s(s.S, "Reflect", {
		get: i
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Reflect", {
		has: function(t, e) {
			return e in t
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(60),
	r = Object.isExtensible;
	i(i.S, "Reflect", {
		isExtensible: function(t) {
			return o(t),
			!r || r(t)
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.S, "Reflect", {
		ownKeys: n(539)
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(60),
	r = Object.preventExtensions;
	i(i.S, "Reflect", {
		preventExtensions: function(t) {
			o(t);
			try {
				return r && r(t),
				!0
			} catch(t) {
				return ! 1
			}
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(434);
	o && i(i.S, "Reflect", {
		setPrototypeOf: function(t, e) {
			o.check(t, e);
			try {
				return o.set(t, e),
				!0
			} catch(t) {
				return ! 1
			}
		}
	})
},
function(t, e, n) {
	function i(t, e, n) {
		var l, d, h = arguments.length < 4 ? t: arguments[3],
		v = r.f(c(t), e);
		if (!v) {
			if (f(d = a(t))) return i(d, e, n, h);
			v = u(0)
		}
		if (s(v, "value")) {
			if (!1 === v.writable || !f(h)) return ! 1;
			if (l = r.f(h, e)) {
				if (l.get || l.set || !1 === l.writable) return ! 1;
				l.value = n,
				o.f(h, e, l)
			} else o.f(h, e, u(0, n));
			return ! 0
		}
		return void 0 !== v.set && (v.set.call(h, n), !0)
	}
	var o = n(104),
	r = n(232),
	a = n(266),
	s = n(214),
	l = n(11),
	u = n(268),
	c = n(60),
	f = n(63);
	l(l.S, "Reflect", {
		set: i
	})
},
function(t, e, n) {
	var i = n(62),
	o = n(427),
	r = n(104).f,
	a = n(265).f,
	s = n(429),
	l = n(347),
	u = i.RegExp,
	c = u,
	f = u.prototype,
	d = /a/g,
	h = /a/g,
	v = new u(d) !== d;
	if (n(103) && (!v || n(61)(function() {
		return h[n(78)("match")] = !1,
		u(d) != d || u(h) == h || "/a/i" != u(d, "i")
	}))) {
		u = function(t, e) {
			var n = this instanceof u,
			i = s(t),
			r = void 0 === e;
			return ! n && i && t.constructor === u && r ? t: o(v ? new c(i && !r ? t.source: t, e) : c((i = t instanceof u) ? t.source: t, i && r ? l.call(t) : e), n ? this: f, u)
		};
		for (var p = a(c), _ = 0; p.length > _;) !
		function(t) {
			t in u || r(u, t, {
				configurable: !0,
				get: function() {
					return c[t]
				},
				set: function(e) {
					c[t] = e
				}
			})
		} (p[_++]);
		f.constructor = u,
		u.prototype = f,
		n(206)(i, "RegExp", u)
	}
	n(287)("RegExp")
},
function(t, e, n) {
	"use strict";
	var i = n(60),
	o = n(88),
	r = n(420),
	a = n(352);
	n(346)("match", 1,
	function(t, e, n, s) {
		return [function(n) {
			var i = t(this),
			o = void 0 == n ? void 0 : n[e];
			return void 0 !== o ? o.call(n, i) : new RegExp(n)[e](String(i))
		},
		function(t) {
			var e = s(n, t, this);
			if (e.done) return e.value;
			var l = i(t),
			u = String(this);
			if (!l.global) return a(l, u);
			var c = l.unicode;
			l.lastIndex = 0;
			for (var f, d = [], h = 0; null !== (f = a(l, u));) {
				var v = String(f[0]);
				d[h] = v,
				"" === v && (l.lastIndex = r(u, o(l.lastIndex), c)),
				h++
			}
			return 0 === h ? null: d
		}]
	})
},
function(t, e, n) {
	"use strict";
	var i = n(60),
	o = n(136),
	r = n(88),
	a = n(234),
	s = n(420),
	l = n(352),
	u = Math.max,
	c = Math.min,
	f = Math.floor,
	d = /\$([$&`']|\d\d?|<[^>]*>)/g,
	h = /\$([$&`']|\d\d?)/g,
	v = function(t) {
		return void 0 === t ? t: String(t)
	};
	n(346)("replace", 2,
	function(t, e, n, p) {
		function _(t, e, i, r, a, s) {
			var l = i + t.length,
			u = r.length,
			c = h;
			return void 0 !== a && (a = o(a), c = d),
			n.call(s, c,
			function(n, o) {
				var s;
				switch (o.charAt(0)) {
				case "$":
					return "$";
				case "&":
					return t;
				case "`":
					return e.slice(0, i);
				case "'":
					return e.slice(l);
				case "<":
					s = a[o.slice(1, -1)];
					break;
				default:
					var c = +o;
					if (0 === c) return n;
					if (c > u) {
						var d = f(c / 10);
						return 0 === d ? n: d <= u ? void 0 === r[d - 1] ? o.charAt(1) : r[d - 1] + o.charAt(1) : n
					}
					s = r[c - 1]
				}
				return void 0 === s ? "": s
			})
		}
		return [function(i, o) {
			var r = t(this),
			a = void 0 == i ? void 0 : i[e];
			return void 0 !== a ? a.call(i, r, o) : n.call(String(r), i, o)
		},
		function(t, e) {
			var o = p(n, t, this, e);
			if (o.done) return o.value;
			var f = i(t),
			d = String(this),
			h = "function" == typeof e;
			h || (e = String(e));
			var m = f.global;
			if (m) {
				var g = f.unicode;
				f.lastIndex = 0
			}
			for (var y = [];;) {
				var x = l(f, d);
				if (null === x) break;
				if (y.push(x), !m) break;
				"" === String(x[0]) && (f.lastIndex = s(d, r(f.lastIndex), g))
			}
			for (var b = "",
			S = 0,
			w = 0; w < y.length; w++) {
				x = y[w];
				for (var E = String(x[0]), T = u(c(a(x.index), d.length), 0), A = [], P = 1; P < x.length; P++) A.push(v(x[P]));
				var I = x.groups;
				if (h) {
					var k = [E].concat(A, T, d);
					void 0 !== I && k.push(I);
					var L = String(e.apply(void 0, k))
				} else L = _(E, d, T, A, I, e);
				T >= S && (b += d.slice(S, T) + L, S = T + E.length)
			}
			return b + d.slice(S)
		}]
	})
},
function(t, e, n) {
	"use strict";
	var i = n(60),
	o = n(543),
	r = n(352);
	n(346)("search", 1,
	function(t, e, n, a) {
		return [function(n) {
			var i = t(this),
			o = void 0 == n ? void 0 : n[e];
			return void 0 !== o ? o.call(n, i) : new RegExp(n)[e](String(i))
		},
		function(t) {
			var e = a(n, t, this);
			if (e.done) return e.value;
			var s = i(t),
			l = String(this),
			u = s.lastIndex;
			o(u, 0) || (s.lastIndex = 0);
			var c = r(s, l);
			return o(s.lastIndex, u) || (s.lastIndex = u),
			null === c ? -1 : c.index
		}]
	})
},
function(t, e, n) {
	"use strict";
	var i = n(429),
	o = n(60),
	r = n(323),
	a = n(420),
	s = n(88),
	l = n(352),
	u = n(433),
	c = n(61),
	f = Math.min,
	d = [].push,
	h = "length",
	v = !c(function() {
		RegExp(4294967295, "y")
	});
	n(346)("split", 2,
	function(t, e, n, c) {
		var p;
		return p = "c" == "abbc".split(/(b)*/)[1] || 4 != "test".split(/(?:)/, -1)[h] || 2 != "ab".split(/(?:ab)*/)[h] || 4 != ".".split(/(.?)(.?)/)[h] || ".".split(/()()/)[h] > 1 || "".split(/.?/)[h] ?
		function(t, e) {
			var o = String(this);
			if (void 0 === t && 0 === e) return [];
			if (!i(t)) return n.call(o, t, e);
			for (var r, a, s, l = [], c = (t.ignoreCase ? "i": "") + (t.multiline ? "m": "") + (t.unicode ? "u": "") + (t.sticky ? "y": ""), f = 0, v = void 0 === e ? 4294967295 : e >>> 0, p = new RegExp(t.source, c + "g"); (r = u.call(p, o)) && !((a = p.lastIndex) > f && (l.push(o.slice(f, r.index)), r[h] > 1 && r.index < o[h] && d.apply(l, r.slice(1)), s = r[0][h], f = a, l[h] >= v));) p.lastIndex === r.index && p.lastIndex++;
			return f === o[h] ? !s && p.test("") || l.push("") : l.push(o.slice(f)),
			l[h] > v ? l.slice(0, v) : l
		}: "0".split(void 0, 0)[h] ?
		function(t, e) {
			return void 0 === t && 0 === e ? [] : n.call(this, t, e)
		}: n,
		[function(n, i) {
			var o = t(this),
			r = void 0 == n ? void 0 : n[e];
			return void 0 !== r ? r.call(n, o, i) : p.call(String(o), n, i)
		},
		function(t, e) {
			var i = c(p, t, this, e, p !== n);
			if (i.done) return i.value;
			var u = o(t),
			d = String(this),
			h = r(u, RegExp),
			_ = u.unicode,
			m = (u.ignoreCase ? "i": "") + (u.multiline ? "m": "") + (u.unicode ? "u": "") + (v ? "y": "g"),
			g = new h(v ? u: "^(?:" + u.source + ")", m),
			y = void 0 === e ? 4294967295 : e >>> 0;
			if (0 === y) return [];
			if (0 === d.length) return null === l(g, d) ? [d] : [];
			for (var x = 0,
			b = 0,
			S = []; b < d.length;) {
				g.lastIndex = v ? b: 0;
				var w, E = l(g, v ? d: d.slice(b));
				if (null === E || (w = f(s(g.lastIndex + (v ? 0 : b)), d.length)) === x) b = a(d, b, _);
				else {
					if (S.push(d.slice(x, b)), S.length === y) return S;
					for (var T = 1; T <= E.length - 1; T++) if (S.push(E[T]), S.length === y) return S;
					b = x = w
				}
			}
			return S.push(d.slice(x)),
			S
		}]
	})
},
function(t, e, n) {
	"use strict";
	n(549);
	var i = n(60),
	o = n(347),
	r = n(103),
	a = /./.toString,
	s = function(t) {
		n(206)(RegExp.prototype, "toString", t, !0)
	};
	n(61)(function() {
		return "/a/b" != a.call({
			source: "a",
			flags: "b"
		})
	}) ? s(function() {
		var t = i(this);
		return "/".concat(t.source, "/", "flags" in t ? t.flags: !r && t instanceof RegExp ? o.call(t) : void 0)
	}) : "toString" != a.name && s(function() {
		return a.call(this)
	})
},
function(t, e, n) {
	"use strict";
	var i = n(524),
	o = n(271);
	t.exports = n(345)("Set",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		add: function(t) {
			return i.def(o(this, "Set"), t = 0 === t ? 0 : t, t)
		}
	},
	i)
},
function(t, e, n) {
	"use strict";
	n(207)("anchor",
	function(t) {
		return function(e) {
			return t(this, "a", "name", e)
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("big",
	function(t) {
		return function() {
			return t(this, "big", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("blink",
	function(t) {
		return function() {
			return t(this, "blink", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("bold",
	function(t) {
		return function() {
			return t(this, "b", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(436)(!1);
	i(i.P, "String", {
		codePointAt: function(t) {
			return o(this, t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(88),
	r = n(437),
	a = "".endsWith;
	i(i.P + i.F * n(425)("endsWith"), "String", {
		endsWith: function(t) {
			var e = r(this, t, "endsWith"),
			n = arguments.length > 1 ? arguments[1] : void 0,
			i = o(e.length),
			s = void 0 === n ? i: Math.min(o(n), i),
			l = String(t);
			return a ? a.call(e, l, s) : e.slice(s - l.length, s) === l
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("fixed",
	function(t) {
		return function() {
			return t(this, "tt", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("fontcolor",
	function(t) {
		return function(e) {
			return t(this, "font", "color", e)
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("fontsize",
	function(t) {
		return function(e) {
			return t(this, "font", "size", e)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(269),
	r = String.fromCharCode,
	a = String.fromCodePoint;
	i(i.S + i.F * ( !! a && 1 != a.length), "String", {
		fromCodePoint: function(t) {
			for (var e, n = [], i = arguments.length, a = 0; i > a;) {
				if (e = +arguments[a++], o(e, 1114111) !== e) throw RangeError(e + " is not a valid code point");
				n.push(e < 65536 ? r(e) : r(55296 + ((e -= 65536) >> 10), e % 1024 + 56320))
			}
			return n.join("")
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(437);
	i(i.P + i.F * n(425)("includes"), "String", {
		includes: function(t) {
			return !! ~o(this, t, "includes").indexOf(t, arguments.length > 1 ? arguments[1] : void 0)
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("italics",
	function(t) {
		return function() {
			return t(this, "i", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(436)(!0);
	n(430)(String, "String",
	function(t) {
		this._t = String(t),
		this._i = 0
	},
	function() {
		var t, e = this._t,
		n = this._i;
		return n >= e.length ? {
			value: void 0,
			done: !0
		}: (t = i(e, n), this._i += t.length, {
			value: t,
			done: !1
		})
	})
},
function(t, e, n) {
	"use strict";
	n(207)("link",
	function(t) {
		return function(e) {
			return t(this, "a", "href", e)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(216),
	r = n(88);
	i(i.S, "String", {
		raw: function(t) {
			for (var e = o(t.raw), n = r(e.length), i = arguments.length, a = [], s = 0; n > s;) a.push(String(e[s++])),
			s < i && a.push(String(arguments[s]));
			return a.join("")
		}
	})
},
function(t, e, n) {
	var i = n(11);
	i(i.P, "String", {
		repeat: n(438)
	})
},
function(t, e, n) {
	"use strict";
	n(207)("small",
	function(t) {
		return function() {
			return t(this, "small", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(88),
	r = n(437),
	a = "".startsWith;
	i(i.P + i.F * n(425)("startsWith"), "String", {
		startsWith: function(t) {
			var e = r(this, t, "startsWith"),
			n = o(Math.min(arguments.length > 1 ? arguments[1] : void 0, e.length)),
			i = String(t);
			return a ? a.call(e, i, n) : e.slice(n, n + i.length) === i
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("strike",
	function(t) {
		return function() {
			return t(this, "strike", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("sub",
	function(t) {
		return function() {
			return t(this, "sub", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(207)("sup",
	function(t) {
		return function() {
			return t(this, "sup", "", "")
		}
	})
},
function(t, e, n) {
	"use strict";
	n(289)("trim",
	function(t) {
		return function() {
			return t(this, 3)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(62),
	o = n(214),
	r = n(103),
	a = n(11),
	s = n(206),
	l = n(253).KEY,
	u = n(61),
	c = n(353),
	f = n(288),
	d = n(270),
	h = n(78),
	v = n(442),
	p = n(546),
	_ = n(828),
	m = n(349),
	g = n(60),
	y = n(63),
	x = n(136),
	b = n(216),
	S = n(254),
	w = n(268),
	E = n(264),
	T = n(536),
	A = n(232),
	P = n(351),
	I = n(104),
	k = n(267),
	L = A.f,
	M = I.f,
	C = T.f,
	R = i.Symbol,
	B = i.JSON,
	N = B && B.stringify,
	O = h("_hidden"),
	D = h("toPrimitive"),
	z = {}.propertyIsEnumerable,
	F = c("symbol-registry"),
	V = c("symbols"),
	Y = c("op-symbols"),
	U = Object.prototype,
	j = "function" == typeof R && !!P.f,
	G = i.QObject,
	Z = !G || !G.prototype || !G.prototype.findChild,
	H = r && u(function() {
		return 7 != E(M({},
		"a", {
			get: function() {
				return M(this, "a", {
					value: 7
				}).a
			}
		})).a
	}) ?
	function(t, e, n) {
		var i = L(U, e);
		i && delete U[e],
		M(t, e, n),
		i && t !== U && M(U, e, i)
	}: M,
	W = function(t) {
		var e = V[t] = E(R.prototype);
		return e._k = t,
		e
	},
	X = j && "symbol" == typeof R.iterator ?
	function(t) {
		return "symbol" == typeof t
	}: function(t) {
		return t instanceof R
	},
	Q = function(t, e, n) {
		return t === U && Q(Y, e, n),
		g(t),
		e = S(e, !0),
		g(n),
		o(V, e) ? (n.enumerable ? (o(t, O) && t[O][e] && (t[O][e] = !1), n = E(n, {
			enumerable: w(0, !1)
		})) : (o(t, O) || M(t, O, w(1, {})), t[O][e] = !0), H(t, e, n)) : M(t, e, n)
	},
	q = function(t, e) {
		g(t);
		for (var n, i = _(e = b(e)), o = 0, r = i.length; r > o;) Q(t, n = i[o++], e[n]);
		return t
	},
	K = function(t, e) {
		return void 0 === e ? E(t) : q(E(t), e)
	},
	J = function(t) {
		var e = z.call(this, t = S(t, !0));
		return ! (this === U && o(V, t) && !o(Y, t)) && (!(e || !o(this, t) || !o(V, t) || o(this, O) && this[O][t]) || e)
	},
	$ = function(t, e) {
		if (t = b(t), e = S(e, !0), t !== U || !o(V, e) || o(Y, e)) {
			var n = L(t, e);
			return ! n || !o(V, e) || o(t, O) && t[O][e] || (n.enumerable = !0),
			n
		}
	},
	tt = function(t) {
		for (var e, n = C(b(t)), i = [], r = 0; n.length > r;) o(V, e = n[r++]) || e == O || e == l || i.push(e);
		return i
	},
	et = function(t) {
		for (var e, n = t === U,
		i = C(n ? Y: b(t)), r = [], a = 0; i.length > a;) ! o(V, e = i[a++]) || n && !o(U, e) || r.push(V[e]);
		return r
	};
	j || (R = function() {
		if (this instanceof R) throw TypeError("Symbol is not a constructor!");
		var t = d(arguments.length > 0 ? arguments[0] : void 0),
		e = function(n) {
			this === U && e.call(Y, n),
			o(this, O) && o(this[O], t) && (this[O][t] = !1),
			H(this, t, w(1, n))
		};
		return r && Z && H(U, t, {
			configurable: !0,
			set: e
		}),
		W(t)
	},
	s(R.prototype, "toString",
	function() {
		return this._k
	}), A.f = $, I.f = Q, n(265).f = T.f = tt, n(322).f = J, P.f = et, r && !n(263) && s(U, "propertyIsEnumerable", J, !0), v.f = function(t) {
		return W(h(t))
	}),
	a(a.G + a.W + a.F * !j, {
		Symbol: R
	});
	for (var nt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), it = 0; nt.length > it;) h(nt[it++]);
	for (var ot = k(h.store), rt = 0; ot.length > rt;) p(ot[rt++]);
	a(a.S + a.F * !j, "Symbol", {
		for: function(t) {
			return o(F, t += "") ? F[t] : F[t] = R(t)
		},
		keyFor: function(t) {
			if (!X(t)) throw TypeError(t + " is not a symbol!");
			for (var e in F) if (F[e] === t) return e
		},
		useSetter: function() {
			Z = !0
		},
		useSimple: function() {
			Z = !1
		}
	}),
	a(a.S + a.F * !j, "Object", {
		create: K,
		defineProperty: Q,
		defineProperties: q,
		getOwnPropertyDescriptor: $,
		getOwnPropertyNames: tt,
		getOwnPropertySymbols: et
	});
	var at = u(function() {
		P.f(1)
	});
	a(a.S + a.F * at, "Object", {
		getOwnPropertySymbols: function(t) {
			return P.f(x(t))
		}
	}),
	B && a(a.S + a.F * (!j || u(function() {
		var t = R();
		return "[null]" != N([t]) || "{}" != N({
			a: t
		}) || "{}" != N(Object(t))
	})), "JSON", {
		stringify: function(t) {
			for (var e, n, i = [t], o = 1; arguments.length > o;) i.push(arguments[o++]);
			if (n = e = i[1], (y(e) || void 0 !== t) && !X(t)) return m(e) || (e = function(t, e) {
				if ("function" == typeof n && (e = n.call(this, t, e)), !X(e)) return e
			}),
			i[1] = e,
			N.apply(B, i)
		}
	}),
	R.prototype[D] || n(215)(R.prototype, D, R.prototype.valueOf),
	f(R, "Symbol"),
	f(Math, "Math", !0),
	f(i.JSON, "JSON", !0)
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(354),
	r = n(441),
	a = n(60),
	s = n(269),
	l = n(88),
	u = n(63),
	c = n(62).ArrayBuffer,
	f = n(323),
	d = r.ArrayBuffer,
	h = r.DataView,
	v = o.ABV && c.isView,
	p = d.prototype.slice,
	_ = o.VIEW;
	i(i.G + i.W + i.F * (c !== d), {
		ArrayBuffer: d
	}),
	i(i.S + i.F * !o.CONSTR, "ArrayBuffer", {
		isView: function(t) {
			return v && v(t) || u(t) && _ in t
		}
	}),
	i(i.P + i.U + i.F * n(61)(function() {
		return ! new d(2).slice(1, void 0).byteLength
	}), "ArrayBuffer", {
		slice: function(t, e) {
			if (void 0 !== p && void 0 === e) return p.call(a(this), t);
			for (var n = a(this).byteLength, i = s(t, n), o = s(void 0 === e ? n: e, n), r = new(f(this, d))(l(o - i)), u = new h(this), c = new h(r), v = 0; i < o;) c.setUint8(v++, u.getUint8(i++));
			return r
		}
	}),
	n(287)("ArrayBuffer")
},
function(t, e, n) {
	var i = n(11);
	i(i.G + i.W + i.F * !n(354).ABV, {
		DataView: n(441).DataView
	})
},
function(t, e, n) {
	n(246)("Float32", 4,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Float64", 8,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Int16", 2,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Int32", 4,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Int8", 1,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Uint16", 2,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Uint32", 4,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Uint8", 1,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	})
},
function(t, e, n) {
	n(246)("Uint8", 1,
	function(t) {
		return function(e, n, i) {
			return t(this, e, n, i)
		}
	},
	!0)
},
function(t, e, n) {
	"use strict";
	var i, o = n(62),
	r = n(230)(0),
	a = n(206),
	s = n(253),
	l = n(534),
	u = n(525),
	c = n(63),
	f = n(271),
	d = n(271),
	h = !o.ActiveXObject && "ActiveXObject" in o,
	v = s.getWeak,
	p = Object.isExtensible,
	_ = u.ufstore,
	m = function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	g = {
		get: function(t) {
			if (c(t)) {
				var e = v(t);
				return ! 0 === e ? _(f(this, "WeakMap")).get(t) : e ? e[this._i] : void 0
			}
		},
		set: function(t, e) {
			return u.def(f(this, "WeakMap"), t, e)
		}
	},
	y = t.exports = n(345)("WeakMap", m, g, u, !0, !0);
	d && h && (i = u.getConstructor(m, "WeakMap"), l(i.prototype, g), s.NEED = !0, r(["delete", "has", "get", "set"],
	function(t) {
		var e = y.prototype,
		n = e[t];
		a(e, t,
		function(e, o) {
			if (c(e) && !p(e)) {
				this._f || (this._f = new i);
				var r = this._f[t](e, o);
				return "set" == t ? this: r
			}
			return n.call(this, e, o)
		})
	}))
},
function(t, e, n) {
	"use strict";
	var i = n(525),
	o = n(271);
	n(345)("WeakSet",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		add: function(t) {
			return i.def(o(this, "WeakSet"), t, !0)
		}
	},
	i, !1, !0)
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(829),
	r = n(136),
	a = n(88),
	s = n(229),
	l = n(522);
	i(i.P, "Array", {
		flatMap: function(t) {
			var e, n, i = r(this);
			return s(t),
			e = a(i.length),
			n = l(i, 0),
			o(n, i, i, e, 0, 1, t, arguments[1]),
			n
		}
	}),
	n(262)("flatMap")
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(344)(!0);
	i(i.P, "Array", {
		includes: function(t) {
			return o(this, t, arguments.length > 1 ? arguments[1] : void 0)
		}
	}),
	n(262)("includes")
},
function(t, e, n) {
	var i = n(11),
	o = n(538)(!0);
	i(i.S, "Object", {
		entries: function(t) {
			return o(t)
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(539),
	r = n(216),
	a = n(232),
	s = n(422);
	i(i.S, "Object", {
		getOwnPropertyDescriptors: function(t) {
			for (var e, n, i = r(t), l = a.f, u = o(i), c = {},
			f = 0; u.length > f;) void 0 !== (n = l(i, e = u[f++])) && s(c, e, n);
			return c
		}
	})
},
function(t, e, n) {
	var i = n(11),
	o = n(538)(!1);
	i(i.S, "Object", {
		values: function(t) {
			return o(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(102),
	r = n(62),
	a = n(323),
	s = n(542);
	i(i.P + i.R, "Promise", {
		finally: function(t) {
			var e = a(this, o.Promise || r.Promise),
			n = "function" == typeof t;
			return this.then(n ?
			function(n) {
				return s(e, t()).then(function() {
					return n
				})
			}: t, n ?
			function(n) {
				return s(e, t()).then(function() {
					throw n
				})
			}: t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(544),
	r = n(355),
	a = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r);
	i(i.P + i.F * a, "String", {
		padEnd: function(t) {
			return o(this, t, arguments.length > 1 ? arguments[1] : void 0, !1)
		}
	})
},
function(t, e, n) {
	"use strict";
	var i = n(11),
	o = n(544),
	r = n(355),
	a = /Version\/10\.\d+(\.\d+)?( Mobile\/\w+)? Safari\//.test(r);
	i(i.P + i.F * a, "String", {
		padStart: function(t) {
			return o(this, t, arguments.length > 1 ? arguments[1] : void 0, !0)
		}
	})
},
function(t, e, n) {
	"use strict";
	n(289)("trimLeft",
	function(t) {
		return function() {
			return t(this, 1)
		}
	},
	"trimStart")
},
function(t, e, n) {
	"use strict";
	n(289)("trimRight",
	function(t) {
		return function() {
			return t(this, 2)
		}
	},
	"trimEnd")
},
function(t, e, n) {
	n(546)("asyncIterator")
},
function(t, e, n) {
	for (var i = n(444), o = n(267), r = n(206), a = n(62), s = n(215), l = n(285), u = n(78), c = u("iterator"), f = u("toStringTag"), d = l.Array, h = {
		CSSRuleList: !0,
		CSSStyleDeclaration: !1,
		CSSValueList: !1,
		ClientRectList: !1,
		DOMRectList: !1,
		DOMStringList: !1,
		DOMTokenList: !0,
		DataTransferItemList: !1,
		FileList: !1,
		HTMLAllCollection: !1,
		HTMLCollection: !1,
		HTMLFormElement: !1,
		HTMLSelectElement: !1,
		MediaList: !0,
		MimeTypeArray: !1,
		NamedNodeMap: !1,
		NodeList: !0,
		PaintRequestList: !1,
		Plugin: !1,
		PluginArray: !1,
		SVGLengthList: !1,
		SVGNumberList: !1,
		SVGPathSegList: !1,
		SVGPointList: !1,
		SVGStringList: !1,
		SVGTransformList: !1,
		SourceBufferList: !1,
		StyleSheetList: !0,
		TextTrackCueList: !1,
		TextTrackList: !1,
		TouchList: !1
	},
	v = o(h), p = 0; p < v.length; p++) {
		var _, m = v[p],
		g = h[m],
		y = a[m],
		x = y && y.prototype;
		if (x && (x[c] || s(x, c, d), x[f] || s(x, f, m), l[m] = d, g)) for (_ in i) x[_] || r(x, _, i[_], !0)
	}
},
function(t, e, n) {
	var i = n(11),
	o = n(440);
	i(i.G + i.B, {
		setImmediate: o.set,
		clearImmediate: o.clear
	})
},
function(t, e, n) {
	var i = n(62),
	o = n(11),
	r = n(355),
	a = [].slice,
	s = /MSIE .\./.test(r),
	l = function(t) {
		return function(e, n) {
			var i = arguments.length > 2,
			o = !!i && a.call(arguments, 2);
			return t(i ?
			function() { ("function" == typeof e ? e: Function(e)).apply(this, o)
			}: e, n)
		}
	};
	o(o.G + o.B + o.F * s, {
		setTimeout: l(i.setTimeout),
		setInterval: l(i.setInterval)
	})
},
function(t, e, n) {
	n(981),
	n(980),
	n(979),
	t.exports = n(102)
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(290), n(291), n(272), n(111))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.lib,
			i = n.BlockCipher,
			o = e.algo,
			r = [],
			a = [],
			s = [],
			l = [],
			u = [],
			c = [],
			f = [],
			d = [],
			h = [],
			v = []; !
			function() {
				for (var t = [], e = 0; e < 256; e++) t[e] = e < 128 ? e << 1 : e << 1 ^ 283;
				for (var n = 0,
				i = 0,
				e = 0; e < 256; e++) {
					var o = i ^ i << 1 ^ i << 2 ^ i << 3 ^ i << 4;
					o = o >>> 8 ^ 255 & o ^ 99,
					r[n] = o,
					a[o] = n;
					var p = t[n],
					_ = t[p],
					m = t[_],
					g = 257 * t[o] ^ 16843008 * o;
					s[n] = g << 24 | g >>> 8,
					l[n] = g << 16 | g >>> 16,
					u[n] = g << 8 | g >>> 24,
					c[n] = g;
					var g = 16843009 * m ^ 65537 * _ ^ 257 * p ^ 16843008 * n;
					f[o] = g << 24 | g >>> 8,
					d[o] = g << 16 | g >>> 16,
					h[o] = g << 8 | g >>> 24,
					v[o] = g,
					n ? (n = p ^ t[t[t[m ^ p]]], i ^= t[t[i]]) : n = i = 1
				}
			} ();
			var p = [0, 1, 2, 4, 8, 16, 32, 64, 128, 27, 54],
			_ = o.AES = i.extend({
				_doReset: function() {
					if (!this._nRounds || this._keyPriorReset !== this._key) {
						for (var t = this._keyPriorReset = this._key,
						e = t.words,
						n = t.sigBytes / 4,
						i = this._nRounds = n + 6,
						o = 4 * (i + 1), a = this._keySchedule = [], s = 0; s < o; s++) if (s < n) a[s] = e[s];
						else {
							var l = a[s - 1];
							s % n ? n > 6 && s % n == 4 && (l = r[l >>> 24] << 24 | r[l >>> 16 & 255] << 16 | r[l >>> 8 & 255] << 8 | r[255 & l]) : (l = l << 8 | l >>> 24, l = r[l >>> 24] << 24 | r[l >>> 16 & 255] << 16 | r[l >>> 8 & 255] << 8 | r[255 & l], l ^= p[s / n | 0] << 24),
							a[s] = a[s - n] ^ l
						}
						for (var u = this._invKeySchedule = [], c = 0; c < o; c++) {
							var s = o - c;
							if (c % 4) var l = a[s];
							else var l = a[s - 4];
							u[c] = c < 4 || s <= 4 ? l: f[r[l >>> 24]] ^ d[r[l >>> 16 & 255]] ^ h[r[l >>> 8 & 255]] ^ v[r[255 & l]]
						}
					}
				},
				encryptBlock: function(t, e) {
					this._doCryptBlock(t, e, this._keySchedule, s, l, u, c, r)
				},
				decryptBlock: function(t, e) {
					var n = t[e + 1];
					t[e + 1] = t[e + 3],
					t[e + 3] = n,
					this._doCryptBlock(t, e, this._invKeySchedule, f, d, h, v, a);
					var n = t[e + 1];
					t[e + 1] = t[e + 3],
					t[e + 3] = n
				},
				_doCryptBlock: function(t, e, n, i, o, r, a, s) {
					for (var l = this._nRounds,
					u = t[e] ^ n[0], c = t[e + 1] ^ n[1], f = t[e + 2] ^ n[2], d = t[e + 3] ^ n[3], h = 4, v = 1; v < l; v++) {
						var p = i[u >>> 24] ^ o[c >>> 16 & 255] ^ r[f >>> 8 & 255] ^ a[255 & d] ^ n[h++],
						_ = i[c >>> 24] ^ o[f >>> 16 & 255] ^ r[d >>> 8 & 255] ^ a[255 & u] ^ n[h++],
						m = i[f >>> 24] ^ o[d >>> 16 & 255] ^ r[u >>> 8 & 255] ^ a[255 & c] ^ n[h++],
						g = i[d >>> 24] ^ o[u >>> 16 & 255] ^ r[c >>> 8 & 255] ^ a[255 & f] ^ n[h++];
						u = p,
						c = _,
						f = m,
						d = g
					}
					var p = (s[u >>> 24] << 24 | s[c >>> 16 & 255] << 16 | s[f >>> 8 & 255] << 8 | s[255 & d]) ^ n[h++],
					_ = (s[c >>> 24] << 24 | s[f >>> 16 & 255] << 16 | s[d >>> 8 & 255] << 8 | s[255 & u]) ^ n[h++],
					m = (s[f >>> 24] << 24 | s[d >>> 16 & 255] << 16 | s[u >>> 8 & 255] << 8 | s[255 & c]) ^ n[h++],
					g = (s[d >>> 24] << 24 | s[u >>> 16 & 255] << 16 | s[c >>> 8 & 255] << 8 | s[255 & f]) ^ n[h++];
					t[e] = p,
					t[e + 1] = _,
					t[e + 2] = m,
					t[e + 3] = g
				},
				keySize: 8
			});
			e.AES = i._createHelper(_)
		} (),
		t.AES
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function() {
			function e(t) {
				return t << 8 & 4278255360 | t >>> 8 & 16711935
			}
			var n = t,
			i = n.lib,
			o = i.WordArray,
			r = n.enc;
			r.Utf16 = r.Utf16BE = {
				stringify: function(t) {
					for (var e = t.words,
					n = t.sigBytes,
					i = [], o = 0; o < n; o += 2) {
						var r = e[o >>> 2] >>> 16 - o % 4 * 8 & 65535;
						i.push(String.fromCharCode(r))
					}
					return i.join("")
				},
				parse: function(t) {
					for (var e = t.length,
					n = [], i = 0; i < e; i++) n[i >>> 1] |= t.charCodeAt(i) << 16 - i % 2 * 16;
					return o.create(n, 2 * e)
				}
			};
			r.Utf16LE = {
				stringify: function(t) {
					for (var n = t.words,
					i = t.sigBytes,
					o = [], r = 0; r < i; r += 2) {
						var a = e(n[r >>> 2] >>> 16 - r % 4 * 8 & 65535);
						o.push(String.fromCharCode(a))
					}
					return o.join("")
				},
				parse: function(t) {
					for (var n = t.length,
					i = [], r = 0; r < n; r++) i[r >>> 1] |= e(t.charCodeAt(r) << 16 - r % 2 * 16);
					return o.create(i, 2 * n)
				}
			}
		} (),
		t.enc.Utf16
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return function(e) {
			var n = t,
			i = n.lib,
			o = i.CipherParams,
			r = n.enc,
			a = r.Hex,
			s = n.format;
			s.Hex = {
				stringify: function(t) {
					return t.ciphertext.toString(a)
				},
				parse: function(t) {
					var e = a.parse(t);
					return o.create({
						ciphertext: e
					})
				}
			}
		} (),
		t.format.Hex
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(356), n(987), n(984), n(290), n(291), n(446), n(550), n(1003), n(551), n(1005), n(1004), n(1002), n(445), n(998), n(272), n(111), n(988), n(990), n(989), n(992), n(991), n(993), n(994), n(995), n(997), n(996), n(985), n(983), n(1006), n(1001), n(1e3), n(999))
	} (0,
	function(t) {
		return t
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		return function() {
			if ("function" == typeof ArrayBuffer) {
				var e = t,
				n = e.lib,
				i = n.WordArray,
				o = i.init; (i.init = function(t) {
					if (t instanceof ArrayBuffer && (t = new Uint8Array(t)), (t instanceof Int8Array || "undefined" != typeof Uint8ClampedArray && t instanceof Uint8ClampedArray || t instanceof Int16Array || t instanceof Uint16Array || t instanceof Int32Array || t instanceof Uint32Array || t instanceof Float32Array || t instanceof Float64Array) && (t = new Uint8Array(t.buffer, t.byteOffset, t.byteLength)), t instanceof Uint8Array) {
						for (var e = t.byteLength,
						n = [], i = 0; i < e; i++) n[i >>> 2] |= t[i] << 24 - i % 4 * 8;
						o.call(this, n, e)
					} else o.apply(this, arguments)
				}).prototype = i
			}
		} (),
		t.lib.WordArray
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.mode.CFB = function() {
			function e(t, e, n, i) {
				var o = this._iv;
				if (o) {
					var r = o.slice(0);
					this._iv = void 0
				} else var r = this._prevBlock;
				i.encryptBlock(r, 0);
				for (var a = 0; a < n; a++) t[e + a] ^= r[a]
			}
			var n = t.lib.BlockCipherMode.extend();
			return n.Encryptor = n.extend({
				processBlock: function(t, n) {
					var i = this._cipher,
					o = i.blockSize;
					e.call(this, t, n, o, i),
					this._prevBlock = t.slice(n, n + o)
				}
			}),
			n.Decryptor = n.extend({
				processBlock: function(t, n) {
					var i = this._cipher,
					o = i.blockSize,
					r = t.slice(n, n + o);
					e.call(this, t, n, o, i),
					this._prevBlock = r
				}
			}),
			n
		} (),
		t.mode.CFB
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		/** @preserve
	 * Counter block mode compatible with  Dr Brian Gladman fileenc.c
	 * derived from CryptoJS.mode.CTR
	 * Jan Hruby jhruby.web@gmail.com
	 */
		return t.mode.CTRGladman = function() {
			function e(t) {
				if (255 == (t >> 24 & 255)) {
					var e = t >> 16 & 255,
					n = t >> 8 & 255,
					i = 255 & t;
					255 === e ? (e = 0, 255 === n ? (n = 0, 255 === i ? i = 0 : ++i) : ++n) : ++e,
					t = 0,
					t += e << 16,
					t += n << 8,
					t += i
				} else t += 1 << 24;
				return t
			}
			function n(t) {
				return 0 === (t[0] = e(t[0])) && (t[1] = e(t[1])),
				t
			}
			var i = t.lib.BlockCipherMode.extend(),
			o = i.Encryptor = i.extend({
				processBlock: function(t, e) {
					var i = this._cipher,
					o = i.blockSize,
					r = this._iv,
					a = this._counter;
					r && (a = this._counter = r.slice(0), this._iv = void 0),
					n(a);
					var s = a.slice(0);
					i.encryptBlock(s, 0);
					for (var l = 0; l < o; l++) t[e + l] ^= s[l]
				}
			});
			return i.Decryptor = o,
			i
		} (),
		t.mode.CTRGladman
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.mode.CTR = function() {
			var e = t.lib.BlockCipherMode.extend(),
			n = e.Encryptor = e.extend({
				processBlock: function(t, e) {
					var n = this._cipher,
					i = n.blockSize,
					o = this._iv,
					r = this._counter;
					o && (r = this._counter = o.slice(0), this._iv = void 0);
					var a = r.slice(0);
					n.encryptBlock(a, 0),
					r[i - 1] = r[i - 1] + 1 | 0;
					for (var s = 0; s < i; s++) t[e + s] ^= a[s]
				}
			});
			return e.Decryptor = n,
			e
		} (),
		t.mode.CTR
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.mode.ECB = function() {
			var e = t.lib.BlockCipherMode.extend();
			return e.Encryptor = e.extend({
				processBlock: function(t, e) {
					this._cipher.encryptBlock(t, e)
				}
			}),
			e.Decryptor = e.extend({
				processBlock: function(t, e) {
					this._cipher.decryptBlock(t, e)
				}
			}),
			e
		} (),
		t.mode.ECB
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.mode.OFB = function() {
			var e = t.lib.BlockCipherMode.extend(),
			n = e.Encryptor = e.extend({
				processBlock: function(t, e) {
					var n = this._cipher,
					i = n.blockSize,
					o = this._iv,
					r = this._keystream;
					o && (r = this._keystream = o.slice(0), this._iv = void 0),
					n.encryptBlock(r, 0);
					for (var a = 0; a < i; a++) t[e + a] ^= r[a]
				}
			});
			return e.Decryptor = n,
			e
		} (),
		t.mode.OFB
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.pad.AnsiX923 = {
			pad: function(t, e) {
				var n = t.sigBytes,
				i = 4 * e,
				o = i - n % i,
				r = n + o - 1;
				t.clamp(),
				t.words[r >>> 2] |= o << 24 - r % 4 * 8,
				t.sigBytes += o
			},
			unpad: function(t) {
				var e = 255 & t.words[t.sigBytes - 1 >>> 2];
				t.sigBytes -= e
			}
		},
		t.pad.Ansix923
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.pad.Iso10126 = {
			pad: function(e, n) {
				var i = 4 * n,
				o = i - e.sigBytes % i;
				e.concat(t.lib.WordArray.random(o - 1)).concat(t.lib.WordArray.create([o << 24], 1))
			},
			unpad: function(t) {
				var e = 255 & t.words[t.sigBytes - 1 >>> 2];
				t.sigBytes -= e
			}
		},
		t.pad.Iso10126
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.pad.Iso97971 = {
			pad: function(e, n) {
				e.concat(t.lib.WordArray.create([2147483648], 1)),
				t.pad.ZeroPadding.pad(e, n)
			},
			unpad: function(e) {
				t.pad.ZeroPadding.unpad(e),
				e.sigBytes--
			}
		},
		t.pad.Iso97971
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.pad.NoPadding = {
			pad: function() {},
			unpad: function() {}
		},
		t.pad.NoPadding
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(111))
	} (0,
	function(t) {
		return t.pad.ZeroPadding = {
			pad: function(t, e) {
				var n = 4 * e;
				t.clamp(),
				t.sigBytes += n - (t.sigBytes % n || n)
			},
			unpad: function(t) {
				for (var e = t.words,
				n = t.sigBytes - 1; ! (e[n >>> 2] >>> 24 - n % 4 * 8 & 255);) n--;
				t.sigBytes = n + 1
			}
		},
		t.pad.ZeroPadding
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(446), n(445))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.lib,
			i = n.Base,
			o = n.WordArray,
			r = e.algo,
			a = r.SHA1,
			s = r.HMAC,
			l = r.PBKDF2 = i.extend({
				cfg: i.extend({
					keySize: 4,
					hasher: a,
					iterations: 1
				}),
				init: function(t) {
					this.cfg = this.cfg.extend(t)
				},
				compute: function(t, e) {
					for (var n = this.cfg,
					i = s.create(n.hasher, t), r = o.create(), a = o.create([1]), l = r.words, u = a.words, c = n.keySize, f = n.iterations; l.length < c;) {
						var d = i.update(e).finalize(a);
						i.reset();
						for (var h = d.words,
						v = h.length,
						p = d,
						_ = 1; _ < f; _++) {
							p = i.finalize(p),
							i.reset();
							for (var m = p.words,
							g = 0; g < v; g++) h[g] ^= m[g]
						}
						r.concat(d),
						u[0]++
					}
					return r.sigBytes = 4 * c,
					r
				}
			});
			e.PBKDF2 = function(t, e, n) {
				return l.create(n).compute(t, e)
			}
		} (),
		t.PBKDF2
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(290), n(291), n(272), n(111))
	} (0,
	function(t) {
		return function() {
			function e() {
				for (var t = this._X,
				e = this._C,
				n = 0; n < 8; n++) s[n] = e[n];
				e[0] = e[0] + 1295307597 + this._b | 0,
				e[1] = e[1] + 3545052371 + (e[0] >>> 0 < s[0] >>> 0 ? 1 : 0) | 0,
				e[2] = e[2] + 886263092 + (e[1] >>> 0 < s[1] >>> 0 ? 1 : 0) | 0,
				e[3] = e[3] + 1295307597 + (e[2] >>> 0 < s[2] >>> 0 ? 1 : 0) | 0,
				e[4] = e[4] + 3545052371 + (e[3] >>> 0 < s[3] >>> 0 ? 1 : 0) | 0,
				e[5] = e[5] + 886263092 + (e[4] >>> 0 < s[4] >>> 0 ? 1 : 0) | 0,
				e[6] = e[6] + 1295307597 + (e[5] >>> 0 < s[5] >>> 0 ? 1 : 0) | 0,
				e[7] = e[7] + 3545052371 + (e[6] >>> 0 < s[6] >>> 0 ? 1 : 0) | 0,
				this._b = e[7] >>> 0 < s[7] >>> 0 ? 1 : 0;
				for (var n = 0; n < 8; n++) {
					var i = t[n] + e[n],
					o = 65535 & i,
					r = i >>> 16,
					a = ((o * o >>> 17) + o * r >>> 15) + r * r,
					u = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
					l[n] = a ^ u
				}
				t[0] = l[0] + (l[7] << 16 | l[7] >>> 16) + (l[6] << 16 | l[6] >>> 16) | 0,
				t[1] = l[1] + (l[0] << 8 | l[0] >>> 24) + l[7] | 0,
				t[2] = l[2] + (l[1] << 16 | l[1] >>> 16) + (l[0] << 16 | l[0] >>> 16) | 0,
				t[3] = l[3] + (l[2] << 8 | l[2] >>> 24) + l[1] | 0,
				t[4] = l[4] + (l[3] << 16 | l[3] >>> 16) + (l[2] << 16 | l[2] >>> 16) | 0,
				t[5] = l[5] + (l[4] << 8 | l[4] >>> 24) + l[3] | 0,
				t[6] = l[6] + (l[5] << 16 | l[5] >>> 16) + (l[4] << 16 | l[4] >>> 16) | 0,
				t[7] = l[7] + (l[6] << 8 | l[6] >>> 24) + l[5] | 0
			}
			var n = t,
			i = n.lib,
			o = i.StreamCipher,
			r = n.algo,
			a = [],
			s = [],
			l = [],
			u = r.RabbitLegacy = o.extend({
				_doReset: function() {
					var t = this._key.words,
					n = this.cfg.iv,
					i = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16],
					o = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]];
					this._b = 0;
					for (var r = 0; r < 4; r++) e.call(this);
					for (var r = 0; r < 8; r++) o[r] ^= i[r + 4 & 7];
					if (n) {
						var a = n.words,
						s = a[0],
						l = a[1],
						u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
						c = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8),
						f = u >>> 16 | 4294901760 & c,
						d = c << 16 | 65535 & u;
						o[0] ^= u,
						o[1] ^= f,
						o[2] ^= c,
						o[3] ^= d,
						o[4] ^= u,
						o[5] ^= f,
						o[6] ^= c,
						o[7] ^= d;
						for (var r = 0; r < 4; r++) e.call(this)
					}
				},
				_doProcessBlock: function(t, n) {
					var i = this._X;
					e.call(this),
					a[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16,
					a[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16,
					a[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16,
					a[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16;
					for (var o = 0; o < 4; o++) a[o] = 16711935 & (a[o] << 8 | a[o] >>> 24) | 4278255360 & (a[o] << 24 | a[o] >>> 8),
					t[n + o] ^= a[o]
				},
				blockSize: 4,
				ivSize: 2
			});
			n.RabbitLegacy = o._createHelper(u)
		} (),
		t.RabbitLegacy
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(290), n(291), n(272), n(111))
	} (0,
	function(t) {
		return function() {
			function e() {
				for (var t = this._X,
				e = this._C,
				n = 0; n < 8; n++) s[n] = e[n];
				e[0] = e[0] + 1295307597 + this._b | 0,
				e[1] = e[1] + 3545052371 + (e[0] >>> 0 < s[0] >>> 0 ? 1 : 0) | 0,
				e[2] = e[2] + 886263092 + (e[1] >>> 0 < s[1] >>> 0 ? 1 : 0) | 0,
				e[3] = e[3] + 1295307597 + (e[2] >>> 0 < s[2] >>> 0 ? 1 : 0) | 0,
				e[4] = e[4] + 3545052371 + (e[3] >>> 0 < s[3] >>> 0 ? 1 : 0) | 0,
				e[5] = e[5] + 886263092 + (e[4] >>> 0 < s[4] >>> 0 ? 1 : 0) | 0,
				e[6] = e[6] + 1295307597 + (e[5] >>> 0 < s[5] >>> 0 ? 1 : 0) | 0,
				e[7] = e[7] + 3545052371 + (e[6] >>> 0 < s[6] >>> 0 ? 1 : 0) | 0,
				this._b = e[7] >>> 0 < s[7] >>> 0 ? 1 : 0;
				for (var n = 0; n < 8; n++) {
					var i = t[n] + e[n],
					o = 65535 & i,
					r = i >>> 16,
					a = ((o * o >>> 17) + o * r >>> 15) + r * r,
					u = ((4294901760 & i) * i | 0) + ((65535 & i) * i | 0);
					l[n] = a ^ u
				}
				t[0] = l[0] + (l[7] << 16 | l[7] >>> 16) + (l[6] << 16 | l[6] >>> 16) | 0,
				t[1] = l[1] + (l[0] << 8 | l[0] >>> 24) + l[7] | 0,
				t[2] = l[2] + (l[1] << 16 | l[1] >>> 16) + (l[0] << 16 | l[0] >>> 16) | 0,
				t[3] = l[3] + (l[2] << 8 | l[2] >>> 24) + l[1] | 0,
				t[4] = l[4] + (l[3] << 16 | l[3] >>> 16) + (l[2] << 16 | l[2] >>> 16) | 0,
				t[5] = l[5] + (l[4] << 8 | l[4] >>> 24) + l[3] | 0,
				t[6] = l[6] + (l[5] << 16 | l[5] >>> 16) + (l[4] << 16 | l[4] >>> 16) | 0,
				t[7] = l[7] + (l[6] << 8 | l[6] >>> 24) + l[5] | 0
			}
			var n = t,
			i = n.lib,
			o = i.StreamCipher,
			r = n.algo,
			a = [],
			s = [],
			l = [],
			u = r.Rabbit = o.extend({
				_doReset: function() {
					for (var t = this._key.words,
					n = this.cfg.iv,
					i = 0; i < 4; i++) t[i] = 16711935 & (t[i] << 8 | t[i] >>> 24) | 4278255360 & (t[i] << 24 | t[i] >>> 8);
					var o = this._X = [t[0], t[3] << 16 | t[2] >>> 16, t[1], t[0] << 16 | t[3] >>> 16, t[2], t[1] << 16 | t[0] >>> 16, t[3], t[2] << 16 | t[1] >>> 16],
					r = this._C = [t[2] << 16 | t[2] >>> 16, 4294901760 & t[0] | 65535 & t[1], t[3] << 16 | t[3] >>> 16, 4294901760 & t[1] | 65535 & t[2], t[0] << 16 | t[0] >>> 16, 4294901760 & t[2] | 65535 & t[3], t[1] << 16 | t[1] >>> 16, 4294901760 & t[3] | 65535 & t[0]];
					this._b = 0;
					for (var i = 0; i < 4; i++) e.call(this);
					for (var i = 0; i < 8; i++) r[i] ^= o[i + 4 & 7];
					if (n) {
						var a = n.words,
						s = a[0],
						l = a[1],
						u = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8),
						c = 16711935 & (l << 8 | l >>> 24) | 4278255360 & (l << 24 | l >>> 8),
						f = u >>> 16 | 4294901760 & c,
						d = c << 16 | 65535 & u;
						r[0] ^= u,
						r[1] ^= f,
						r[2] ^= c,
						r[3] ^= d,
						r[4] ^= u,
						r[5] ^= f,
						r[6] ^= c,
						r[7] ^= d;
						for (var i = 0; i < 4; i++) e.call(this)
					}
				},
				_doProcessBlock: function(t, n) {
					var i = this._X;
					e.call(this),
					a[0] = i[0] ^ i[5] >>> 16 ^ i[3] << 16,
					a[1] = i[2] ^ i[7] >>> 16 ^ i[5] << 16,
					a[2] = i[4] ^ i[1] >>> 16 ^ i[7] << 16,
					a[3] = i[6] ^ i[3] >>> 16 ^ i[1] << 16;
					for (var o = 0; o < 4; o++) a[o] = 16711935 & (a[o] << 8 | a[o] >>> 24) | 4278255360 & (a[o] << 24 | a[o] >>> 8),
					t[n + o] ^= a[o]
				},
				blockSize: 4,
				ivSize: 2
			});
			n.Rabbit = o._createHelper(u)
		} (),
		t.Rabbit
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(290), n(291), n(272), n(111))
	} (0,
	function(t) {
		return function() {
			function e() {
				for (var t = this._S,
				e = this._i,
				n = this._j,
				i = 0,
				o = 0; o < 4; o++) {
					e = (e + 1) % 256,
					n = (n + t[e]) % 256;
					var r = t[e];
					t[e] = t[n],
					t[n] = r,
					i |= t[(t[e] + t[n]) % 256] << 24 - 8 * o
				}
				return this._i = e,
				this._j = n,
				i
			}
			var n = t,
			i = n.lib,
			o = i.StreamCipher,
			r = n.algo,
			a = r.RC4 = o.extend({
				_doReset: function() {
					for (var t = this._key,
					e = t.words,
					n = t.sigBytes,
					i = this._S = [], o = 0; o < 256; o++) i[o] = o;
					for (var o = 0,
					r = 0; o < 256; o++) {
						var a = o % n,
						s = e[a >>> 2] >>> 24 - a % 4 * 8 & 255;
						r = (r + i[o] + s) % 256;
						var l = i[o];
						i[o] = i[r],
						i[r] = l
					}
					this._i = this._j = 0
				},
				_doProcessBlock: function(t, n) {
					t[n] ^= e.call(this)
				},
				keySize: 8,
				ivSize: 0
			});
			n.RC4 = o._createHelper(a);
			var s = r.RC4Drop = a.extend({
				cfg: a.cfg.extend({
					drop: 192
				}),
				_doReset: function() {
					a._doReset.call(this);
					for (var t = this.cfg.drop; t > 0; t--) e.call(this)
				}
			});
			n.RC4Drop = o._createHelper(s)
		} (),
		t.RC4
	})
},
function(t, e, n) { !
	function(i, o) {
		t.exports = e = o(n(50))
	} (0,
	function(t) {
		/** @preserve
	(c) 2012 by Cédric Mesnil. All rights reserved.

	Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

	    - Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
	    - Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

	THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
	*/
		return function(e) {
			function n(t, e, n) {
				return t ^ e ^ n
			}
			function i(t, e, n) {
				return t & e | ~t & n
			}
			function o(t, e, n) {
				return (t | ~e) ^ n
			}
			function r(t, e, n) {
				return t & n | e & ~n
			}
			function a(t, e, n) {
				return t ^ (e | ~n)
			}
			function s(t, e) {
				return t << e | t >>> 32 - e
			}
			var l = t,
			u = l.lib,
			c = u.WordArray,
			f = u.Hasher,
			d = l.algo,
			h = c.create([0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8, 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12, 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2, 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13]),
			v = c.create([5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12, 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2, 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13, 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14, 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11]),
			p = c.create([11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8, 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12, 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5, 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12, 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6]),
			_ = c.create([8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6, 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11, 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5, 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8, 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11]),
			m = c.create([0, 1518500249, 1859775393, 2400959708, 2840853838]),
			g = c.create([1352829926, 1548603684, 1836072691, 2053994217, 0]),
			y = d.RIPEMD160 = f.extend({
				_doReset: function() {
					this._hash = c.create([1732584193, 4023233417, 2562383102, 271733878, 3285377520])
				},
				_doProcessBlock: function(t, e) {
					for (var l = 0; l < 16; l++) {
						var u = e + l,
						c = t[u];
						t[u] = 16711935 & (c << 8 | c >>> 24) | 4278255360 & (c << 24 | c >>> 8)
					}
					var f, d, y, x, b, S, w, E, T, A, P = this._hash.words,
					I = m.words,
					k = g.words,
					L = h.words,
					M = v.words,
					C = p.words,
					R = _.words;
					S = f = P[0],
					w = d = P[1],
					E = y = P[2],
					T = x = P[3],
					A = b = P[4];
					for (var B, l = 0; l < 80; l += 1) B = f + t[e + L[l]] | 0,
					B += l < 16 ? n(d, y, x) + I[0] : l < 32 ? i(d, y, x) + I[1] : l < 48 ? o(d, y, x) + I[2] : l < 64 ? r(d, y, x) + I[3] : a(d, y, x) + I[4],
					B |= 0,
					B = s(B, C[l]),
					B = B + b | 0,
					f = b,
					b = x,
					x = s(y, 10),
					y = d,
					d = B,
					B = S + t[e + M[l]] | 0,
					B += l < 16 ? a(w, E, T) + k[0] : l < 32 ? r(w, E, T) + k[1] : l < 48 ? o(w, E, T) + k[2] : l < 64 ? i(w, E, T) + k[3] : n(w, E, T) + k[4],
					B |= 0,
					B = s(B, R[l]),
					B = B + A | 0,
					S = A,
					A = T,
					T = s(E, 10),
					E = w,
					w = B;
					B = P[1] + y + T | 0,
					P[1] = P[2] + x + A | 0,
					P[2] = P[3] + b + S | 0,
					P[3] = P[4] + f + w | 0,
					P[4] = P[0] + d + E | 0,
					P[0] = B
				},
				_doFinalize: function() {
					var t = this._data,
					e = t.words,
					n = 8 * this._nDataBytes,
					i = 8 * t.sigBytes;
					e[i >>> 5] |= 128 << 24 - i % 32,
					e[14 + (i + 64 >>> 9 << 4)] = 16711935 & (n << 8 | n >>> 24) | 4278255360 & (n << 24 | n >>> 8),
					t.sigBytes = 4 * (e.length + 1),
					this._process();
					for (var o = this._hash,
					r = o.words,
					a = 0; a < 5; a++) {
						var s = r[a];
						r[a] = 16711935 & (s << 8 | s >>> 24) | 4278255360 & (s << 24 | s >>> 8)
					}
					return o
				},
				clone: function() {
					var t = f.clone.call(this);
					return t._hash = this._hash.clone(),
					t
				}
			});
			l.RIPEMD160 = f._createHelper(y),
			l.HmacRIPEMD160 = f._createHmacHelper(y)
		} (Math),
		t.RIPEMD160
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(550))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.lib,
			i = n.WordArray,
			o = e.algo,
			r = o.SHA256,
			a = o.SHA224 = r.extend({
				_doReset: function() {
					this._hash = new i.init([3238371032, 914150663, 812702999, 4144912697, 4290775857, 1750603025, 1694076839, 3204075428])
				},
				_doFinalize: function() {
					var t = r._doFinalize.call(this);
					return t.sigBytes -= 4,
					t
				}
			});
			e.SHA224 = r._createHelper(a),
			e.HmacSHA224 = r._createHmacHelper(a)
		} (),
		t.SHA224
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(356))
	} (0,
	function(t) {
		return function(e) {
			var n = t,
			i = n.lib,
			o = i.WordArray,
			r = i.Hasher,
			a = n.x64,
			s = a.Word,
			l = n.algo,
			u = [],
			c = [],
			f = []; !
			function() {
				for (var t = 1,
				e = 0,
				n = 0; n < 24; n++) {
					u[t + 5 * e] = (n + 1) * (n + 2) / 2 % 64;
					var i = e % 5,
					o = (2 * t + 3 * e) % 5;
					t = i,
					e = o
				}
				for (var t = 0; t < 5; t++) for (var e = 0; e < 5; e++) c[t + 5 * e] = e + (2 * t + 3 * e) % 5 * 5;
				for (var r = 1,
				a = 0; a < 24; a++) {
					for (var l = 0,
					d = 0,
					h = 0; h < 7; h++) {
						if (1 & r) {
							var v = (1 << h) - 1;
							v < 32 ? d ^= 1 << v: l ^= 1 << v - 32
						}
						128 & r ? r = r << 1 ^ 113 : r <<= 1
					}
					f[a] = s.create(l, d)
				}
			} ();
			var d = []; !
			function() {
				for (var t = 0; t < 25; t++) d[t] = s.create()
			} ();
			var h = l.SHA3 = r.extend({
				cfg: r.cfg.extend({
					outputLength: 512
				}),
				_doReset: function() {
					for (var t = this._state = [], e = 0; e < 25; e++) t[e] = new s.init;
					this.blockSize = (1600 - 2 * this.cfg.outputLength) / 32
				},
				_doProcessBlock: function(t, e) {
					for (var n = this._state,
					i = this.blockSize / 2,
					o = 0; o < i; o++) {
						var r = t[e + 2 * o],
						a = t[e + 2 * o + 1];
						r = 16711935 & (r << 8 | r >>> 24) | 4278255360 & (r << 24 | r >>> 8),
						a = 16711935 & (a << 8 | a >>> 24) | 4278255360 & (a << 24 | a >>> 8);
						var s = n[o];
						s.high ^= a,
						s.low ^= r
					}
					for (var l = 0; l < 24; l++) {
						for (var h = 0; h < 5; h++) {
							for (var v = 0,
							p = 0,
							_ = 0; _ < 5; _++) {
								var s = n[h + 5 * _];
								v ^= s.high,
								p ^= s.low
							}
							var m = d[h];
							m.high = v,
							m.low = p
						}
						for (var h = 0; h < 5; h++) for (var g = d[(h + 4) % 5], y = d[(h + 1) % 5], x = y.high, b = y.low, v = g.high ^ (x << 1 | b >>> 31), p = g.low ^ (b << 1 | x >>> 31), _ = 0; _ < 5; _++) {
							var s = n[h + 5 * _];
							s.high ^= v,
							s.low ^= p
						}
						for (var S = 1; S < 25; S++) {
							var s = n[S],
							w = s.high,
							E = s.low,
							T = u[S];
							if (T < 32) var v = w << T | E >>> 32 - T,
							p = E << T | w >>> 32 - T;
							else var v = E << T - 32 | w >>> 64 - T,
							p = w << T - 32 | E >>> 64 - T;
							var A = d[c[S]];
							A.high = v,
							A.low = p
						}
						var P = d[0],
						I = n[0];
						P.high = I.high,
						P.low = I.low;
						for (var h = 0; h < 5; h++) for (var _ = 0; _ < 5; _++) {
							var S = h + 5 * _,
							s = n[S],
							k = d[S],
							L = d[(h + 1) % 5 + 5 * _],
							M = d[(h + 2) % 5 + 5 * _];
							s.high = k.high ^ ~L.high & M.high,
							s.low = k.low ^ ~L.low & M.low
						}
						var s = n[0],
						C = f[l];
						s.high ^= C.high,
						s.low ^= C.low
					}
				},
				_doFinalize: function() {
					var t = this._data,
					n = t.words,
					i = (this._nDataBytes, 8 * t.sigBytes),
					r = 32 * this.blockSize;
					n[i >>> 5] |= 1 << 24 - i % 32,
					n[(e.ceil((i + 1) / r) * r >>> 5) - 1] |= 128,
					t.sigBytes = 4 * n.length,
					this._process();
					for (var a = this._state,
					s = this.cfg.outputLength / 8,
					l = s / 8,
					u = [], c = 0; c < l; c++) {
						var f = a[c],
						d = f.high,
						h = f.low;
						d = 16711935 & (d << 8 | d >>> 24) | 4278255360 & (d << 24 | d >>> 8),
						h = 16711935 & (h << 8 | h >>> 24) | 4278255360 & (h << 24 | h >>> 8),
						u.push(h),
						u.push(d)
					}
					return new o.init(u, s)
				},
				clone: function() {
					for (var t = r.clone.call(this), e = t._state = this._state.slice(0), n = 0; n < 25; n++) e[n] = e[n].clone();
					return t
				}
			});
			n.SHA3 = r._createHelper(h),
			n.HmacSHA3 = r._createHmacHelper(h)
		} (Math),
		t.SHA3
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(356), n(551))
	} (0,
	function(t) {
		return function() {
			var e = t,
			n = e.x64,
			i = n.Word,
			o = n.WordArray,
			r = e.algo,
			a = r.SHA512,
			s = r.SHA384 = a.extend({
				_doReset: function() {
					this._hash = new o.init([new i.init(3418070365, 3238371032), new i.init(1654270250, 914150663), new i.init(2438529370, 812702999), new i.init(355462360, 4144912697), new i.init(1731405415, 4290775857), new i.init(2394180231, 1750603025), new i.init(3675008525, 1694076839), new i.init(1203062813, 3204075428)])
				},
				_doFinalize: function() {
					var t = a._doFinalize.call(this);
					return t.sigBytes -= 16,
					t
				}
			});
			e.SHA384 = a._createHelper(s),
			e.HmacSHA384 = a._createHmacHelper(s)
		} (),
		t.SHA384
	})
},
function(t, e, n) { !
	function(i, o, r) {
		t.exports = e = o(n(50), n(290), n(291), n(272), n(111))
	} (0,
	function(t) {
		return function() {
			function e(t, e) {
				var n = (this._lBlock >>> t ^ this._rBlock) & e;
				this._rBlock ^= n,
				this._lBlock ^= n << t
			}
			function n(t, e) {
				var n = (this._rBlock >>> t ^ this._lBlock) & e;
				this._lBlock ^= n,
				this._rBlock ^= n << t
			}
			var i = t,
			o = i.lib,
			r = o.WordArray,
			a = o.BlockCipher,
			s = i.algo,
			l = [57, 49, 41, 33, 25, 17, 9, 1, 58, 50, 42, 34, 26, 18, 10, 2, 59, 51, 43, 35, 27, 19, 11, 3, 60, 52, 44, 36, 63, 55, 47, 39, 31, 23, 15, 7, 62, 54, 46, 38, 30, 22, 14, 6, 61, 53, 45, 37, 29, 21, 13, 5, 28, 20, 12, 4],
			u = [14, 17, 11, 24, 1, 5, 3, 28, 15, 6, 21, 10, 23, 19, 12, 4, 26, 8, 16, 7, 27, 20, 13, 2, 41, 52, 31, 37, 47, 55, 30, 40, 51, 45, 33, 48, 44, 49, 39, 56, 34, 53, 46, 42, 50, 36, 29, 32],
			c = [1, 2, 4, 6, 8, 10, 12, 14, 15, 17, 19, 21, 23, 25, 27, 28],
			f = [{
				0 : 8421888,
				268435456 : 32768,
				536870912 : 8421378,
				805306368 : 2,
				1073741824 : 512,
				1342177280 : 8421890,
				1610612736 : 8389122,
				1879048192 : 8388608,
				2147483648 : 514,
				2415919104 : 8389120,
				2684354560 : 33280,
				2952790016 : 8421376,
				3221225472 : 32770,
				3489660928 : 8388610,
				3758096384 : 0,
				4026531840 : 33282,
				134217728 : 0,
				402653184 : 8421890,
				671088640 : 33282,
				939524096 : 32768,
				1207959552 : 8421888,
				1476395008 : 512,
				1744830464 : 8421378,
				2013265920 : 2,
				2281701376 : 8389120,
				2550136832 : 33280,
				2818572288 : 8421376,
				3087007744 : 8389122,
				3355443200 : 8388610,
				3623878656 : 32770,
				3892314112 : 514,
				4160749568 : 8388608,
				1 : 32768,
				268435457 : 2,
				536870913 : 8421888,
				805306369 : 8388608,
				1073741825 : 8421378,
				1342177281 : 33280,
				1610612737 : 512,
				1879048193 : 8389122,
				2147483649 : 8421890,
				2415919105 : 8421376,
				2684354561 : 8388610,
				2952790017 : 33282,
				3221225473 : 514,
				3489660929 : 8389120,
				3758096385 : 32770,
				4026531841 : 0,
				134217729 : 8421890,
				402653185 : 8421376,
				671088641 : 8388608,
				939524097 : 512,
				1207959553 : 32768,
				1476395009 : 8388610,
				1744830465 : 2,
				2013265921 : 33282,
				2281701377 : 32770,
				2550136833 : 8389122,
				2818572289 : 514,
				3087007745 : 8421888,
				3355443201 : 8389120,
				3623878657 : 0,
				3892314113 : 33280,
				4160749569 : 8421378
			},
			{
				0 : 1074282512,
				16777216 : 16384,
				33554432 : 524288,
				50331648 : 1074266128,
				67108864 : 1073741840,
				83886080 : 1074282496,
				100663296 : 1073758208,
				117440512 : 16,
				134217728 : 540672,
				150994944 : 1073758224,
				167772160 : 1073741824,
				184549376 : 540688,
				201326592 : 524304,
				218103808 : 0,
				234881024 : 16400,
				251658240 : 1074266112,
				8388608 : 1073758208,
				25165824 : 540688,
				41943040 : 16,
				58720256 : 1073758224,
				75497472 : 1074282512,
				92274688 : 1073741824,
				109051904 : 524288,
				125829120 : 1074266128,
				142606336 : 524304,
				159383552 : 0,
				176160768 : 16384,
				192937984 : 1074266112,
				209715200 : 1073741840,
				226492416 : 540672,
				243269632 : 1074282496,
				260046848 : 16400,
				268435456 : 0,
				285212672 : 1074266128,
				301989888 : 1073758224,
				318767104 : 1074282496,
				335544320 : 1074266112,
				352321536 : 16,
				369098752 : 540688,
				385875968 : 16384,
				402653184 : 16400,
				419430400 : 524288,
				436207616 : 524304,
				452984832 : 1073741840,
				469762048 : 540672,
				486539264 : 1073758208,
				503316480 : 1073741824,
				520093696 : 1074282512,
				276824064 : 540688,
				293601280 : 524288,
				310378496 : 1074266112,
				327155712 : 16384,
				343932928 : 1073758208,
				360710144 : 1074282512,
				377487360 : 16,
				394264576 : 1073741824,
				411041792 : 1074282496,
				427819008 : 1073741840,
				444596224 : 1073758224,
				461373440 : 524304,
				478150656 : 0,
				494927872 : 16400,
				511705088 : 1074266128,
				528482304 : 540672
			},
			{
				0 : 260,
				1048576 : 0,
				2097152 : 67109120,
				3145728 : 65796,
				4194304 : 65540,
				5242880 : 67108868,
				6291456 : 67174660,
				7340032 : 67174400,
				8388608 : 67108864,
				9437184 : 67174656,
				10485760 : 65792,
				11534336 : 67174404,
				12582912 : 67109124,
				13631488 : 65536,
				14680064 : 4,
				15728640 : 256,
				524288 : 67174656,
				1572864 : 67174404,
				2621440 : 0,
				3670016 : 67109120,
				4718592 : 67108868,
				5767168 : 65536,
				6815744 : 65540,
				7864320 : 260,
				8912896 : 4,
				9961472 : 256,
				11010048 : 67174400,
				12058624 : 65796,
				13107200 : 65792,
				14155776 : 67109124,
				15204352 : 67174660,
				16252928 : 67108864,
				16777216 : 67174656,
				17825792 : 65540,
				18874368 : 65536,
				19922944 : 67109120,
				20971520 : 256,
				22020096 : 67174660,
				23068672 : 67108868,
				24117248 : 0,
				25165824 : 67109124,
				26214400 : 67108864,
				27262976 : 4,
				28311552 : 65792,
				29360128 : 67174400,
				30408704 : 260,
				31457280 : 65796,
				32505856 : 67174404,
				17301504 : 67108864,
				18350080 : 260,
				19398656 : 67174656,
				20447232 : 0,
				21495808 : 65540,
				22544384 : 67109120,
				23592960 : 256,
				24641536 : 67174404,
				25690112 : 65536,
				26738688 : 67174660,
				27787264 : 65796,
				28835840 : 67108868,
				29884416 : 67109124,
				30932992 : 67174400,
				31981568 : 4,
				33030144 : 65792
			},
			{
				0 : 2151682048,
				65536 : 2147487808,
				131072 : 4198464,
				196608 : 2151677952,
				262144 : 0,
				327680 : 4198400,
				393216 : 2147483712,
				458752 : 4194368,
				524288 : 2147483648,
				589824 : 4194304,
				655360 : 64,
				720896 : 2147487744,
				786432 : 2151678016,
				851968 : 4160,
				917504 : 4096,
				983040 : 2151682112,
				32768 : 2147487808,
				98304 : 64,
				163840 : 2151678016,
				229376 : 2147487744,
				294912 : 4198400,
				360448 : 2151682112,
				425984 : 0,
				491520 : 2151677952,
				557056 : 4096,
				622592 : 2151682048,
				688128 : 4194304,
				753664 : 4160,
				819200 : 2147483648,
				884736 : 4194368,
				950272 : 4198464,
				1015808 : 2147483712,
				1048576 : 4194368,
				1114112 : 4198400,
				1179648 : 2147483712,
				1245184 : 0,
				1310720 : 4160,
				1376256 : 2151678016,
				1441792 : 2151682048,
				1507328 : 2147487808,
				1572864 : 2151682112,
				1638400 : 2147483648,
				1703936 : 2151677952,
				1769472 : 4198464,
				1835008 : 2147487744,
				1900544 : 4194304,
				1966080 : 64,
				2031616 : 4096,
				1081344 : 2151677952,
				1146880 : 2151682112,
				1212416 : 0,
				1277952 : 4198400,
				1343488 : 4194368,
				1409024 : 2147483648,
				1474560 : 2147487808,
				1540096 : 64,
				1605632 : 2147483712,
				1671168 : 4096,
				1736704 : 2147487744,
				1802240 : 2151678016,
				1867776 : 4160,
				1933312 : 2151682048,
				1998848 : 4194304,
				2064384 : 4198464
			},
			{
				0 : 128,
				4096 : 17039360,
				8192 : 262144,
				12288 : 536870912,
				16384 : 537133184,
				20480 : 16777344,
				24576 : 553648256,
				28672 : 262272,
				32768 : 16777216,
				36864 : 537133056,
				40960 : 536871040,
				45056 : 553910400,
				49152 : 553910272,
				53248 : 0,
				57344 : 17039488,
				61440 : 553648128,
				2048 : 17039488,
				6144 : 553648256,
				10240 : 128,
				14336 : 17039360,
				18432 : 262144,
				22528 : 537133184,
				26624 : 553910272,
				30720 : 536870912,
				34816 : 537133056,
				38912 : 0,
				43008 : 553910400,
				47104 : 16777344,
				51200 : 536871040,
				55296 : 553648128,
				59392 : 16777216,
				63488 : 262272,
				65536 : 262144,
				69632 : 128,
				73728 : 536870912,
				77824 : 553648256,
				81920 : 16777344,
				86016 : 553910272,
				90112 : 537133184,
				94208 : 16777216,
				98304 : 553910400,
				102400 : 553648128,
				106496 : 17039360,
				110592 : 537133056,
				114688 : 262272,
				118784 : 536871040,
				122880 : 0,
				126976 : 17039488,
				67584 : 553648256,
				71680 : 16777216,
				75776 : 17039360,
				79872 : 537133184,
				83968 : 536870912,
				88064 : 17039488,
				92160 : 128,
				96256 : 553910272,
				100352 : 262272,
				104448 : 553910400,
				108544 : 0,
				112640 : 553648128,
				116736 : 16777344,
				120832 : 262144,
				124928 : 537133056,
				129024 : 536871040
			},
			{
				0 : 268435464,
				256 : 8192,
				512 : 270532608,
				768 : 270540808,
				1024 : 268443648,
				1280 : 2097152,
				1536 : 2097160,
				1792 : 268435456,
				2048 : 0,
				2304 : 268443656,
				2560 : 2105344,
				2816 : 8,
				3072 : 270532616,
				3328 : 2105352,
				3584 : 8200,
				3840 : 270540800,
				128 : 270532608,
				384 : 270540808,
				640 : 8,
				896 : 2097152,
				1152 : 2105352,
				1408 : 268435464,
				1664 : 268443648,
				1920 : 8200,
				2176 : 2097160,
				2432 : 8192,
				2688 : 268443656,
				2944 : 270532616,
				3200 : 0,
				3456 : 270540800,
				3712 : 2105344,
				3968 : 268435456,
				4096 : 268443648,
				4352 : 270532616,
				4608 : 270540808,
				4864 : 8200,
				5120 : 2097152,
				5376 : 268435456,
				5632 : 268435464,
				5888 : 2105344,
				6144 : 2105352,
				6400 : 0,
				6656 : 8,
				6912 : 270532608,
				7168 : 8192,
				7424 : 268443656,
				7680 : 270540800,
				7936 : 2097160,
				4224 : 8,
				4480 : 2105344,
				4736 : 2097152,
				4992 : 268435464,
				5248 : 268443648,
				5504 : 8200,
				5760 : 270540808,
				6016 : 270532608,
				6272 : 270540800,
				6528 : 270532616,
				6784 : 8192,
				7040 : 2105352,
				7296 : 2097160,
				7552 : 0,
				7808 : 268435456,
				8064 : 268443656
			},
			{
				0 : 1048576,
				16 : 33555457,
				32 : 1024,
				48 : 1049601,
				64 : 34604033,
				80 : 0,
				96 : 1,
				112 : 34603009,
				128 : 33555456,
				144 : 1048577,
				160 : 33554433,
				176 : 34604032,
				192 : 34603008,
				208 : 1025,
				224 : 1049600,
				240 : 33554432,
				8 : 34603009,
				24 : 0,
				40 : 33555457,
				56 : 34604032,
				72 : 1048576,
				88 : 33554433,
				104 : 33554432,
				120 : 1025,
				136 : 1049601,
				152 : 33555456,
				168 : 34603008,
				184 : 1048577,
				200 : 1024,
				216 : 34604033,
				232 : 1,
				248 : 1049600,
				256 : 33554432,
				272 : 1048576,
				288 : 33555457,
				304 : 34603009,
				320 : 1048577,
				336 : 33555456,
				352 : 34604032,
				368 : 1049601,
				384 : 1025,
				400 : 34604033,
				416 : 1049600,
				432 : 1,
				448 : 0,
				464 : 34603008,
				480 : 33554433,
				496 : 1024,
				264 : 1049600,
				280 : 33555457,
				296 : 34603009,
				312 : 1,
				328 : 33554432,
				344 : 1048576,
				360 : 1025,
				376 : 34604032,
				392 : 33554433,
				408 : 34603008,
				424 : 0,
				440 : 34604033,
				456 : 1049601,
				472 : 1024,
				488 : 33555456,
				504 : 1048577
			},
			{
				0 : 134219808,
				1 : 131072,
				2 : 134217728,
				3 : 32,
				4 : 131104,
				5 : 134350880,
				6 : 134350848,
				7 : 2048,
				8 : 134348800,
				9 : 134219776,
				10 : 133120,
				11 : 134348832,
				12 : 2080,
				13 : 0,
				14 : 134217760,
				15 : 133152,
				2147483648 : 2048,
				2147483649 : 134350880,
				2147483650 : 134219808,
				2147483651 : 134217728,
				2147483652 : 134348800,
				2147483653 : 133120,
				2147483654 : 133152,
				2147483655 : 32,
				2147483656 : 134217760,
				2147483657 : 2080,
				2147483658 : 131104,
				2147483659 : 134350848,
				2147483660 : 0,
				2147483661 : 134348832,
				2147483662 : 134219776,
				2147483663 : 131072,
				16 : 133152,
				17 : 134350848,
				18 : 32,
				19 : 2048,
				20 : 134219776,
				21 : 134217760,
				22 : 134348832,
				23 : 131072,
				24 : 0,
				25 : 131104,
				26 : 134348800,
				27 : 134219808,
				28 : 134350880,
				29 : 133120,
				30 : 2080,
				31 : 134217728,
				2147483664 : 131072,
				2147483665 : 2048,
				2147483666 : 134348832,
				2147483667 : 133152,
				2147483668 : 32,
				2147483669 : 134348800,
				2147483670 : 134217728,
				2147483671 : 134219808,
				2147483672 : 134350880,
				2147483673 : 134217760,
				2147483674 : 134219776,
				2147483675 : 0,
				2147483676 : 133120,
				2147483677 : 2080,
				2147483678 : 131104,
				2147483679 : 134350848
			}],
			d = [4160749569, 528482304, 33030144, 2064384, 129024, 8064, 504, 2147483679],
			h = s.DES = a.extend({
				_doReset: function() {
					for (var t = this._key,
					e = t.words,
					n = [], i = 0; i < 56; i++) {
						var o = l[i] - 1;
						n[i] = e[o >>> 5] >>> 31 - o % 32 & 1
					}
					for (var r = this._subKeys = [], a = 0; a < 16; a++) {
						for (var s = r[a] = [], f = c[a], i = 0; i < 24; i++) s[i / 6 | 0] |= n[(u[i] - 1 + f) % 28] << 31 - i % 6,
						s[4 + (i / 6 | 0)] |= n[28 + (u[i + 24] - 1 + f) % 28] << 31 - i % 6;
						s[0] = s[0] << 1 | s[0] >>> 31;
						for (var i = 1; i < 7; i++) s[i] = s[i] >>> 4 * (i - 1) + 3;
						s[7] = s[7] << 5 | s[7] >>> 27
					}
					for (var d = this._invSubKeys = [], i = 0; i < 16; i++) d[i] = r[15 - i]
				},
				encryptBlock: function(t, e) {
					this._doCryptBlock(t, e, this._subKeys)
				},
				decryptBlock: function(t, e) {
					this._doCryptBlock(t, e, this._invSubKeys)
				},
				_doCryptBlock: function(t, i, o) {
					this._lBlock = t[i],
					this._rBlock = t[i + 1],
					e.call(this, 4, 252645135),
					e.call(this, 16, 65535),
					n.call(this, 2, 858993459),
					n.call(this, 8, 16711935),
					e.call(this, 1, 1431655765);
					for (var r = 0; r < 16; r++) {
						for (var a = o[r], s = this._lBlock, l = this._rBlock, u = 0, c = 0; c < 8; c++) u |= f[c][((l ^ a[c]) & d[c]) >>> 0];
						this._lBlock = l,
						this._rBlock = s ^ u
					}
					var h = this._lBlock;
					this._lBlock = this._rBlock,
					this._rBlock = h,
					e.call(this, 1, 1431655765),
					n.call(this, 8, 16711935),
					n.call(this, 2, 858993459),
					e.call(this, 16, 65535),
					e.call(this, 4, 252645135),
					t[i] = this._lBlock,
					t[i + 1] = this._rBlock
				},
				keySize: 2,
				ivSize: 2,
				blockSize: 2
			});
			i.DES = a._createHelper(h);
			var v = s.TripleDES = a.extend({
				_doReset: function() {
					var t = this._key,
					e = t.words;
					this._des1 = h.createEncryptor(r.create(e.slice(0, 2))),
					this._des2 = h.createEncryptor(r.create(e.slice(2, 4))),
					this._des3 = h.createEncryptor(r.create(e.slice(4, 6)))
				},
				encryptBlock: function(t, e) {
					this._des1.encryptBlock(t, e),
					this._des2.decryptBlock(t, e),
					this._des3.encryptBlock(t, e)
				},
				decryptBlock: function(t, e) {
					this._des3.decryptBlock(t, e),
					this._des2.encryptBlock(t, e),
					this._des1.decryptBlock(t, e)
				},
				keySize: 6,
				ivSize: 2,
				blockSize: 2
			});
			i.TripleDES = a._createHelper(v)
		} (),
		t.TripleDES
	})
},
function(t, e, n) {
	e = t.exports = n(273)(),
	e.push([t.i, '.floor-control{font-size:15px;color:#646464;height:180px;width:38px;background:#fff;position:relative;bottom:83px!important;margin-left:31px;margin-right:30px;border-radius:40px;webkit-user-select:none;ms-user-select:none;moz-user-select:none;apple-user-select:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;z-index:10}.floor-control:after{position:absolute;top:0;left:0;width:200%;height:200%;transform:scale(.5);transform-origin:left top;border-radius:40px;z-index:1000000;box-shadow:0 0 1px 1px rgba(0,0,0,.12)}.floor-control ul{-webkit-padding-start:0;padding-inline-start:0;-webkit-padding-end:0;padding-inline-end:0;-webkit-margin-before:0;margin-block-start:0;-webkit-margin-after:0;margin-block-end:0}.floor-control .arr-top{width:38px;position:absolute;z-index:100;top:-2px}.floor-control .arr-bottom{width:38px;position:absolute;z-index:100;bottom:-2px}.floor-control .floor-control-wrapper{overflow:hidden;height:160px;width:100%;position:absolute;top:10px}.floor-control .floor-control-wrapper .floor-control-list{font-size:12px;list-style-type:none;margin:0}.floor-control .floor-control-wrapper .floor-control-list .floor-control-item{position:relative;display:block;text-align:center;text-decoration:none;width:38px;height:40px;line-height:40px;transition:color .3s ease-in}.floor-control .floor-control-wrapper .floor-control-list .floor-control-item:after{content:"";position:absolute;width:26px;height:26px;border-radius:30px;z-index:-10;pointer-events:none;left:0;right:0;top:0;bottom:0;margin:auto;opacity:0;transition:opacity .2s ease-out;background-color:#4875fd}.floor-control .floor-control-wrapper .floor-control-list .selected-item{color:#fff!important;opacity:1!important}.floor-control .floor-control-wrapper .floor-control-list .selected-item:after{opacity:1}.floor-control .floor-control-wrapper.freezing .floor-control-list .floor-control-item{color:#4d4d4d;opacity:.4}.floor-control-moveup{bottom:83px!important}', ""])
},
function(t, e, n) {
	e = t.exports = n(273)(),
	e.push([t.i, ".rotate-circle{position:relative;width:60px;height:60px;padding:20px 20px 7px}.rotate-circle,.rotate-circle *{box-sizing:content-box}.rotate-circle .rotate-panel{position:relative;left:0;top:-60px;font-size:16px;line-height:normal;font-family:auto}.rotate-circle .rotate-left{top:15px;left:-6px;transform:rotate(-45deg)}.rotate-circle .rotate-left,.rotate-circle .rotate-top{position:absolute;width:30px;height:30px;border-radius:30px 0 0 0;background:#fff}.rotate-circle .rotate-top{left:15px;top:-6px;transform:rotate(45deg)}.rotate-circle .rotate-right{left:36px;top:15px;border-radius:0 30px 0 0}.rotate-circle .rotate-bottom,.rotate-circle .rotate-right{position:absolute;width:30px;height:30px;background:#fff;transform:rotate(45deg)}.rotate-circle .rotate-bottom{left:15px;top:36px;border-radius:0 0 30px 0}.rotate-circle .compass-circle{width:28px;height:28px;background:#fff;border:1px solid rgba(0,20,51,.1);border-radius:50%;position:relative;left:15px;top:-15px;z-index:100}.rotate-circle .compass-img{height:28px;left:30%;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none}.rotate-circle .compass-circle-background{width:28px;height:28px;background:#e7eaef;border:1px solid rgba(0,20,51,.1);border-radius:50%;position:relative;left:15px;top:15px;z-index:50}.rotate-circle .rotate-left-img{transform:scaleY(-1) rotate(-45deg)}.rotate-circle .rotate-left-img,.rotate-circle .rotate-right-img{width:6px;height:17px;position:relative;left:12px;top:5px;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:baseline}.rotate-circle .rotate-right-img{transform:rotate(135deg)}.rotate-circle .rotate-top-img{transform:rotate(-45deg);left:10px;top:-1px}.rotate-circle .rotate-bottom-img,.rotate-circle .rotate-top-img{width:8px;height:4px;position:relative;-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;vertical-align:baseline}.rotate-circle .rotate-bottom-img{transform:rotate(135deg);left:13px;top:2px}.rotate-circle .unclickable-rotate-bottom .rotate-bottom-img,.rotate-circle .unclickable-rotate-left .rotate-left-img,.rotate-circle .unclickable-rotate-right .rotate-right-img,.rotate-circle .unclickable-rotate-top .rotate-top-img{opacity:.3}.rotate-circle .clickable-rotate-bottom:hover,.rotate-circle .clickable-rotate-left:hover,.rotate-circle .clickable-rotate-right:hover,.rotate-circle .clickable-rotate-top:hover{background:#f2f4f8}.rotate-circle .clickable-rotate-bottom:active,.rotate-circle .clickable-rotate-left:active,.rotate-circle .clickable-rotate-right:active,.rotate-circle .clickable-rotate-top:active{background:#e7eaef}", ""])
},
function(t, e, n) {
	e = t.exports = n(273)(),
	e.push([t.i, ".tmap-zoom-control{margin:10px 30px 20px;display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;position:relative;width:40px;height:80px;background:#fff;box-shadow:0 8px 19px rgba(41,64,102,.12);border-radius:4px}.tmap-zoom-control .tmap-zoom-content{-ms-flex:auto;flex:auto;-ms-flex-order:1;order:1;-ms-flex-positive:0;flex-grow:0;margin:8px 0}.tmap-zoom-control .tmap-zoom-in{position:absolute;width:24px;height:24px;left:8px;top:8px}.tmap-zoom-control .tmap-zoom-out{position:absolute;width:24px;height:24px;left:8px;top:48px}.tmap-zoom-control .tmap-zoom-spliter{height:1px;width:40px;background-color:#dee2e8;margin:auto}.tmap-zoom-control .tmap-zoom-number{display:inline;height:22px;top:40px;text-align:center;font-size:14px;font-weight:600;font-style:medium;font-family:Microsoft YaHei,PingFang SC;color:#000;line-height:22px}", ""])
},
, ,
function(t, e) {
	"function" == typeof Object.create ? t.exports = function(t, e) {
		t.super_ = e,
		t.prototype = Object.create(e.prototype, {
			constructor: {
				value: t,
				enumerable: !1,
				writable: !0,
				configurable: !0
			}
		})
	}: t.exports = function(t, e) {
		t.super_ = e;
		var n = function() {};
		n.prototype = e.prototype,
		t.prototype = new n,
		t.prototype.constructor = t
	}
},
function(t, e, n) {
	"use strict"; (function(e) {
		/*!
 * The buffer module from node.js, for the browser.
 *
 * @author   Feross Aboukhadijeh <feross@feross.org> <http://feross.org>
 * @license  MIT
 */
		function i(t, e) {
			if (t === e) return 0;
			for (var n = t.length,
			i = e.length,
			o = 0,
			r = Math.min(n, i); o < r; ++o) if (t[o] !== e[o]) {
				n = t[o],
				i = e[o];
				break
			}
			return n < i ? -1 : i < n ? 1 : 0
		}
		function o(t) {
			return e.Buffer && "function" == typeof e.Buffer.isBuffer ? e.Buffer.isBuffer(t) : !(null == t || !t._isBuffer)
		}
		function r(t) {
			return Object.prototype.toString.call(t)
		}
		function a(t) {
			return ! o(t) && ("function" == typeof e.ArrayBuffer && ("function" == typeof ArrayBuffer.isView ? ArrayBuffer.isView(t) : !!t && (t instanceof DataView || !!(t.buffer && t.buffer instanceof ArrayBuffer))))
		}
		function s(t) {
			if (S.isFunction(t)) {
				if (T) return t.name;
				var e = t.toString(),
				n = e.match(P);
				return n && n[1]
			}
		}
		function l(t, e) {
			return "string" == typeof t ? t.length < e ? t: t.slice(0, e) : t
		}
		function u(t) {
			if (T || !S.isFunction(t)) return S.inspect(t);
			var e = s(t);
			return "[Function" + (e ? ": " + e: "") + "]"
		}
		function c(t) {
			return l(u(t.actual), 128) + " " + t.operator + " " + l(u(t.expected), 128)
		}
		function f(t, e, n, i, o) {
			throw new A.AssertionError({
				message: n,
				actual: t,
				expected: e,
				operator: i,
				stackStartFunction: o
			})
		}
		function d(t, e) {
			t || f(t, !0, e, "==", A.ok)
		}
		function h(t, e, n, s) {
			if (t === e) return ! 0;
			if (o(t) && o(e)) return 0 === i(t, e);
			if (S.isDate(t) && S.isDate(e)) return t.getTime() === e.getTime();
			if (S.isRegExp(t) && S.isRegExp(e)) return t.source === e.source && t.global === e.global && t.multiline === e.multiline && t.lastIndex === e.lastIndex && t.ignoreCase === e.ignoreCase;
			if (null !== t && "object" == typeof t || null !== e && "object" == typeof e) {
				if (a(t) && a(e) && r(t) === r(e) && !(t instanceof Float32Array || t instanceof Float64Array)) return 0 === i(new Uint8Array(t.buffer), new Uint8Array(e.buffer));
				if (o(t) !== o(e)) return ! 1;
				s = s || {
					actual: [],
					expected: []
				};
				var l = s.actual.indexOf(t);
				return - 1 !== l && l === s.expected.indexOf(e) || (s.actual.push(t), s.expected.push(e), p(t, e, n, s))
			}
			return n ? t === e: t == e
		}
		function v(t) {
			return "[object Arguments]" == Object.prototype.toString.call(t)
		}
		function p(t, e, n, i) {
			if (null === t || void 0 === t || null === e || void 0 === e) return ! 1;
			if (S.isPrimitive(t) || S.isPrimitive(e)) return t === e;
			if (n && Object.getPrototypeOf(t) !== Object.getPrototypeOf(e)) return ! 1;
			var o = v(t),
			r = v(e);
			if (o && !r || !o && r) return ! 1;
			if (o) return t = E.call(t),
			e = E.call(e),
			h(t, e, n);
			var a, s, l = I(t),
			u = I(e);
			if (l.length !== u.length) return ! 1;
			for (l.sort(), u.sort(), s = l.length - 1; s >= 0; s--) if (l[s] !== u[s]) return ! 1;
			for (s = l.length - 1; s >= 0; s--) if (a = l[s], !h(t[a], e[a], n, i)) return ! 1;
			return ! 0
		}
		function _(t, e, n) {
			h(t, e, !0) && f(t, e, n, "notDeepStrictEqual", _)
		}
		function m(t, e) {
			if (!t || !e) return ! 1;
			if ("[object RegExp]" == Object.prototype.toString.call(e)) return e.test(t);
			try {
				if (t instanceof e) return ! 0
			} catch(t) {}
			return ! Error.isPrototypeOf(e) && !0 === e.call({},
			t)
		}
		function g(t) {
			var e;
			try {
				t()
			} catch(t) {
				e = t
			}
			return e
		}
		function y(t, e, n, i) {
			var o;
			if ("function" != typeof e) throw new TypeError('"block" argument must be a function');
			"string" == typeof n && (i = n, n = null),
			o = g(e),
			i = (n && n.name ? " (" + n.name + ").": ".") + (i ? " " + i: "."),
			t && !o && f(o, n, "Missing expected exception" + i);
			var r = "string" == typeof i,
			a = !t && S.isError(o),
			s = !t && o && !n;
			if ((a && r && m(o, n) || s) && f(o, n, "Got unwanted exception" + i), t && o && n && !m(o, n) || !t && o) throw o
		}
		function x(t, e) {
			t || f(t, !0, e, "==", x)
		}
		var b = n(1014),
		S = n(1051),
		w = Object.prototype.hasOwnProperty,
		E = Array.prototype.slice,
		T = function() {
			return "foo" ===
			function() {}.name
		} (),
		A = t.exports = d,
		P = /\s*function\s+([^\(\s]*)\s*/;
		A.AssertionError = function(t) {
			this.name = "AssertionError",
			this.actual = t.actual,
			this.expected = t.expected,
			this.operator = t.operator,
			t.message ? (this.message = t.message, this.generatedMessage = !1) : (this.message = c(this), this.generatedMessage = !0);
			var e = t.stackStartFunction || f;
			if (Error.captureStackTrace) Error.captureStackTrace(this, e);
			else {
				var n = new Error;
				if (n.stack) {
					var i = n.stack,
					o = s(e),
					r = i.indexOf("\n" + o);
					if (r >= 0) {
						var a = i.indexOf("\n", r + 1);
						i = i.substring(a + 1)
					}
					this.stack = i
				}
			}
		},
		S.inherits(A.AssertionError, Error),
		A.fail = f,
		A.ok = d,
		A.equal = function(t, e, n) {
			t != e && f(t, e, n, "==", A.equal)
		},
		A.notEqual = function(t, e, n) {
			t == e && f(t, e, n, "!=", A.notEqual)
		},
		A.deepEqual = function(t, e, n) {
			h(t, e, !1) || f(t, e, n, "deepEqual", A.deepEqual)
		},
		A.deepStrictEqual = function(t, e, n) {
			h(t, e, !0) || f(t, e, n, "deepStrictEqual", A.deepStrictEqual)
		},
		A.notDeepEqual = function(t, e, n) {
			h(t, e, !1) && f(t, e, n, "notDeepEqual", A.notDeepEqual)
		},
		A.notDeepStrictEqual = _,
		A.strictEqual = function(t, e, n) {
			t !== e && f(t, e, n, "===", A.strictEqual)
		},
		A.notStrictEqual = function(t, e, n) {
			t === e && f(t, e, n, "!==", A.notStrictEqual)
		},
		A.throws = function(t, e, n) {
			y(!0, t, e, n)
		},
		A.doesNotThrow = function(t, e, n) {
			y(!1, t, e, n)
		},
		A.ifError = function(t) {
			if (t) throw t
		},
		A.strict = b(x, A, {
			equal: A.strictEqual,
			deepEqual: A.deepStrictEqual,
			notEqual: A.notStrictEqual,
			notDeepEqual: A.notDeepStrictEqual
		}),
		A.strict.strict = A.strict;
		var I = Object.keys ||
		function(t) {
			var e = [];
			for (var n in t) w.call(t, n) && e.push(n);
			return e
		}
	}).call(e, n(142))
},
function(t, e, n) {
	"use strict";
	function i(t) {
		if (null === t || void 0 === t) throw new TypeError("Object.assign cannot be called with null or undefined");
		return Object(t)
	}
	/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
	var o = Object.getOwnPropertySymbols,
	r = Object.prototype.hasOwnProperty,
	a = Object.prototype.propertyIsEnumerable;
	t.exports = function() {
		try {
			if (!Object.assign) return ! 1;
			var t = new String("abc");
			if (t[5] = "de", "5" === Object.getOwnPropertyNames(t)[0]) return ! 1;
			for (var e = {},
			n = 0; n < 10; n++) e["_" + String.fromCharCode(n)] = n;
			if ("0123456789" !== Object.getOwnPropertyNames(e).map(function(t) {
				return e[t]
			}).join("")) return ! 1;
			var i = {};
			return "abcdefghijklmnopqrst".split("").forEach(function(t) {
				i[t] = t
			}),
			"abcdefghijklmnopqrst" === Object.keys(Object.assign({},
			i)).join("")
		} catch(t) {
			return ! 1
		}
	} () ? Object.assign: function(t, e) {
		for (var n, s, l = i(t), u = 1; u < arguments.length; u++) {
			n = Object(arguments[u]);
			for (var c in n) r.call(n, c) && (l[c] = n[c]);
			if (o) {
				s = o(n);
				for (var f = 0; f < s.length; f++) a.call(n, s[f]) && (l[s[f]] = n[s[f]])
			}
		}
		return l
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		if (! (this instanceof i)) return new i(t);
		this.options = l.assign({
			level: v,
			method: _,
			chunkSize: 16384,
			windowBits: 15,
			memLevel: 8,
			strategy: p,
			to: ""
		},
		t || {});
		var e = this.options;
		e.raw && e.windowBits > 0 ? e.windowBits = -e.windowBits: e.gzip && e.windowBits > 0 && e.windowBits < 16 && (e.windowBits += 16),
		this.err = 0,
		this.msg = "",
		this.ended = !1,
		this.chunks = [],
		this.strm = new f,
		this.strm.avail_out = 0;
		var n = s.deflateInit2(this.strm, e.level, e.method, e.windowBits, e.memLevel, e.strategy);
		if (n !== h) throw new Error(c[n]);
		if (e.header && s.deflateSetHeader(this.strm, e.header), e.dictionary) {
			var o;
			if (o = "string" == typeof e.dictionary ? u.string2buf(e.dictionary) : "[object ArrayBuffer]" === d.call(e.dictionary) ? new Uint8Array(e.dictionary) : e.dictionary, (n = s.deflateSetDictionary(this.strm, o)) !== h) throw new Error(c[n]);
			this._dict_set = !0
		}
	}
	function o(t, e) {
		var n = new i(e);
		if (n.push(t, !0), n.err) throw n.msg || c[n.err];
		return n.result
	}
	function r(t, e) {
		return e = e || {},
		e.raw = !0,
		o(t, e)
	}
	function a(t, e) {
		return e = e || {},
		e.gzip = !0,
		o(t, e)
	}
	var s = n(1017),
	l = n(255),
	u = n(553),
	c = n(451),
	f = n(557),
	d = Object.prototype.toString,
	h = 0,
	v = -1,
	p = 0,
	_ = 8;
	i.prototype.push = function(t, e) {
		var n, i, o = this.strm,
		r = this.options.chunkSize;
		if (this.ended) return ! 1;
		i = e === ~~e ? e: !0 === e ? 4 : 0,
		"string" == typeof t ? o.input = u.string2buf(t) : "[object ArrayBuffer]" === d.call(t) ? o.input = new Uint8Array(t) : o.input = t,
		o.next_in = 0,
		o.avail_in = o.input.length;
		do {
			if (0 === o.avail_out && (o.output = new l.Buf8(r), o.next_out = 0, o.avail_out = r), 1 !== (n = s.deflate(o, i)) && n !== h) return this.onEnd(n), this.ended = !0, !1;
			0 !== o.avail_out && (0 !== o.avail_in || 4 !== i && 2 !== i) || ("string" === this.options.to ? this.onData(u.buf2binstring(l.shrinkBuf(o.output, o.next_out))) : this.onData(l.shrinkBuf(o.output, o.next_out)))
		} while (( o . avail_in > 0 || 0 === o . avail_out ) && 1 !== n);
		return 4 === i ? (n = s.deflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === h) : 2 !== i || (this.onEnd(h), o.avail_out = 0, !0)
	},
	i.prototype.onData = function(t) {
		this.chunks.push(t)
	},
	i.prototype.onEnd = function(t) {
		t === h && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = l.flattenChunks(this.chunks)),
		this.chunks = [],
		this.err = t,
		this.msg = this.strm.msg
	},
	e.Deflate = i,
	e.deflate = o,
	e.deflateRaw = r,
	e.gzip = a
},
function(t, e, n) {
	"use strict";
	function i(t) {
		if (! (this instanceof i)) return new i(t);
		this.options = s.assign({
			chunkSize: 16384,
			windowBits: 0,
			to: ""
		},
		t || {});
		var e = this.options;
		e.raw && e.windowBits >= 0 && e.windowBits < 16 && (e.windowBits = -e.windowBits, 0 === e.windowBits && (e.windowBits = -15)),
		!(e.windowBits >= 0 && e.windowBits < 16) || t && t.windowBits || (e.windowBits += 32),
		e.windowBits > 15 && e.windowBits < 48 && 0 == (15 & e.windowBits) && (e.windowBits |= 15),
		this.err = 0,
		this.msg = "",
		this.ended = !1,
		this.chunks = [],
		this.strm = new f,
		this.strm.avail_out = 0;
		var n = a.inflateInit2(this.strm, e.windowBits);
		if (n !== u.Z_OK) throw new Error(c[n]);
		if (this.header = new d, a.inflateGetHeader(this.strm, this.header), e.dictionary && ("string" == typeof e.dictionary ? e.dictionary = l.string2buf(e.dictionary) : "[object ArrayBuffer]" === h.call(e.dictionary) && (e.dictionary = new Uint8Array(e.dictionary)), e.raw && (n = a.inflateSetDictionary(this.strm, e.dictionary)) !== u.Z_OK)) throw new Error(c[n])
	}
	function o(t, e) {
		var n = new i(e);
		if (n.push(t, !0), n.err) throw n.msg || c[n.err];
		return n.result
	}
	function r(t, e) {
		return e = e || {},
		e.raw = !0,
		o(t, e)
	}
	var a = n(1020),
	s = n(255),
	l = n(553),
	u = n(555),
	c = n(451),
	f = n(557),
	d = n(1018),
	h = Object.prototype.toString;
	i.prototype.push = function(t, e) {
		var n, i, o, r, c, f = this.strm,
		d = this.options.chunkSize,
		v = this.options.dictionary,
		p = !1;
		if (this.ended) return ! 1;
		i = e === ~~e ? e: !0 === e ? u.Z_FINISH: u.Z_NO_FLUSH,
		"string" == typeof t ? f.input = l.binstring2buf(t) : "[object ArrayBuffer]" === h.call(t) ? f.input = new Uint8Array(t) : f.input = t,
		f.next_in = 0,
		f.avail_in = f.input.length;
		do {
			if (0 === f.avail_out && (f.output = new s.Buf8(d), f.next_out = 0, f.avail_out = d), n = a.inflate(f, u.Z_NO_FLUSH), n === u.Z_NEED_DICT && v && (n = a.inflateSetDictionary(this.strm, v)), n === u.Z_BUF_ERROR && !0 === p && (n = u.Z_OK, p = !1), n !== u.Z_STREAM_END && n !== u.Z_OK) return this.onEnd(n), this.ended = !0, !1;
			f.next_out && (0 !== f.avail_out && n !== u.Z_STREAM_END && (0 !== f.avail_in || i !== u.Z_FINISH && i !== u.Z_SYNC_FLUSH) || ("string" === this.options.to ? (o = l.utf8border(f.output, f.next_out), r = f.next_out - o, c = l.buf2string(f.output, o), f.next_out = r, f.avail_out = d - r, r && s.arraySet(f.output, f.output, o, r, 0), this.onData(c)) : this.onData(s.shrinkBuf(f.output, f.next_out)))), 0 === f.avail_in && 0 === f.avail_out && (p = !0)
		} while (( f . avail_in > 0 || 0 === f . avail_out ) && n !== u.Z_STREAM_END);
		return n === u.Z_STREAM_END && (i = u.Z_FINISH),
		i === u.Z_FINISH ? (n = a.inflateEnd(this.strm), this.onEnd(n), this.ended = !0, n === u.Z_OK) : i !== u.Z_SYNC_FLUSH || (this.onEnd(u.Z_OK), f.avail_out = 0, !0)
	},
	i.prototype.onData = function(t) {
		this.chunks.push(t)
	},
	i.prototype.onEnd = function(t) {
		t === u.Z_OK && ("string" === this.options.to ? this.result = this.chunks.join("") : this.result = s.flattenChunks(this.chunks)),
		this.chunks = [],
		this.err = t,
		this.msg = this.strm.msg
	},
	e.Inflate = i,
	e.inflate = o,
	e.inflateRaw = r,
	e.ungzip = o
},
function(t, e, n) {
	"use strict";
	function i(t, e) {
		return t.msg = B[e],
		e
	}
	function o(t) {
		return (t << 1) - (t > 4 ? 9 : 0)
	}
	function r(t) {
		for (var e = t.length; --e >= 0;) t[e] = 0
	}
	function a(t) {
		var e = t.state,
		n = e.pending;
		n > t.avail_out && (n = t.avail_out),
		0 !== n && (L.arraySet(t.output, e.pending_buf, e.pending_out, n, t.next_out), t.next_out += n, e.pending_out += n, t.total_out += n, t.avail_out -= n, e.pending -= n, 0 === e.pending && (e.pending_out = 0))
	}
	function s(t, e) {
		M._tr_flush_block(t, t.block_start >= 0 ? t.block_start: -1, t.strstart - t.block_start, e),
		t.block_start = t.strstart,
		a(t.strm)
	}
	function l(t, e) {
		t.pending_buf[t.pending++] = e
	}
	function u(t, e) {
		t.pending_buf[t.pending++] = e >>> 8 & 255,
		t.pending_buf[t.pending++] = 255 & e
	}
	function c(t, e, n, i) {
		var o = t.avail_in;
		return o > i && (o = i),
		0 === o ? 0 : (t.avail_in -= o, L.arraySet(e, t.input, t.next_in, o, n), 1 === t.state.wrap ? t.adler = C(t.adler, e, o, n) : 2 === t.state.wrap && (t.adler = R(t.adler, e, o, n)), t.next_in += o, t.total_in += o, o)
	}
	function f(t, e) {
		var n, i, o = t.max_chain_length,
		r = t.strstart,
		a = t.prev_length,
		s = t.nice_match,
		l = t.strstart > t.w_size - ut ? t.strstart - (t.w_size - ut) : 0,
		u = t.window,
		c = t.w_mask,
		f = t.prev,
		d = t.strstart + lt,
		h = u[r + a - 1],
		v = u[r + a];
		t.prev_length >= t.good_match && (o >>= 2),
		s > t.lookahead && (s = t.lookahead);
		do {
			if (n = e, u[n + a] === v && u[n + a - 1] === h && u[n] === u[r] && u[++n] === u[r + 1]) {
				r += 2,
				n++;
				do {} while ( u [++ r ] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && u[++r] === u[++n] && r < d);
				if (i = lt - (d - r), r = d - lt, i > a) {
					if (t.match_start = e, a = i, i >= s) break;
					h = u[r + a - 1],
					v = u[r + a]
				}
			}
		} while (( e = f [ e & c ]) > l && 0 != --o);
		return a <= t.lookahead ? a: t.lookahead
	}
	function d(t) {
		var e, n, i, o, r, a = t.w_size;
		do {
			if (o = t.window_size - t.lookahead - t.strstart, t.strstart >= a + (a - ut)) {
				L.arraySet(t.window, t.window, a, a, 0),
				t.match_start -= a,
				t.strstart -= a,
				t.block_start -= a,
				n = t.hash_size,
				e = n;
				do {
					i = t.head[--e], t.head[e] = i >= a ? i - a: 0
				} while (-- n );
				n = a,
				e = n;
				do {
					i = t.prev[--e], t.prev[e] = i >= a ? i - a: 0
				} while (-- n );
				o += a
			}
			if (0 === t.strm.avail_in) break;
			if (n = c(t.strm, t.window, t.strstart + t.lookahead, o), t.lookahead += n, t.lookahead + t.insert >= st) for (r = t.strstart - t.insert, t.ins_h = t.window[r], t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + 1]) & t.hash_mask; t.insert && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[r + st - 1]) & t.hash_mask, t.prev[r & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = r, r++, t.insert--, !(t.lookahead + t.insert < st)););
		} while ( t . lookahead < ut && 0 !== t . strm . avail_in )
	}
	function h(t, e) {
		var n = 65535;
		for (n > t.pending_buf_size - 5 && (n = t.pending_buf_size - 5);;) {
			if (t.lookahead <= 1) {
				if (d(t), 0 === t.lookahead && e === N) return gt;
				if (0 === t.lookahead) break
			}
			t.strstart += t.lookahead,
			t.lookahead = 0;
			var i = t.block_start + n;
			if ((0 === t.strstart || t.strstart >= i) && (t.lookahead = t.strstart - i, t.strstart = i, s(t, !1), 0 === t.strm.avail_out)) return gt;
			if (t.strstart - t.block_start >= t.w_size - ut && (s(t, !1), 0 === t.strm.avail_out)) return gt
		}
		return t.insert = 0,
		e === z ? (s(t, !0), 0 === t.strm.avail_out ? xt: bt) : (t.strstart > t.block_start && (s(t, !1), t.strm.avail_out), gt)
	}
	function v(t, e) {
		for (var n, i;;) {
			if (t.lookahead < ut) {
				if (d(t), t.lookahead < ut && e === N) return gt;
				if (0 === t.lookahead) break
			}
			if (n = 0, t.lookahead >= st && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + st - 1]) & t.hash_mask, n = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), 0 !== n && t.strstart - n <= t.w_size - ut && (t.match_length = f(t, n)), t.match_length >= st) if (i = M._tr_tally(t, t.strstart - t.match_start, t.match_length - st), t.lookahead -= t.match_length, t.match_length <= t.max_lazy_match && t.lookahead >= st) {
				t.match_length--;
				do {
					t.strstart++, t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + st - 1]) & t.hash_mask, n = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart
				} while ( 0 != -- t . match_length );
				t.strstart++
			} else t.strstart += t.match_length,
			t.match_length = 0,
			t.ins_h = t.window[t.strstart],
			t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + 1]) & t.hash_mask;
			else i = M._tr_tally(t, 0, t.window[t.strstart]),
			t.lookahead--,
			t.strstart++;
			if (i && (s(t, !1), 0 === t.strm.avail_out)) return gt
		}
		return t.insert = t.strstart < st - 1 ? t.strstart: st - 1,
		e === z ? (s(t, !0), 0 === t.strm.avail_out ? xt: bt) : t.last_lit && (s(t, !1), 0 === t.strm.avail_out) ? gt: yt
	}
	function p(t, e) {
		for (var n, i, o;;) {
			if (t.lookahead < ut) {
				if (d(t), t.lookahead < ut && e === N) return gt;
				if (0 === t.lookahead) break
			}
			if (n = 0, t.lookahead >= st && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + st - 1]) & t.hash_mask, n = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart), t.prev_length = t.match_length, t.prev_match = t.match_start, t.match_length = st - 1, 0 !== n && t.prev_length < t.max_lazy_match && t.strstart - n <= t.w_size - ut && (t.match_length = f(t, n), t.match_length <= 5 && (t.strategy === H || t.match_length === st && t.strstart - t.match_start > 4096) && (t.match_length = st - 1)), t.prev_length >= st && t.match_length <= t.prev_length) {
				o = t.strstart + t.lookahead - st,
				i = M._tr_tally(t, t.strstart - 1 - t.prev_match, t.prev_length - st),
				t.lookahead -= t.prev_length - 1,
				t.prev_length -= 2;
				do {++t.strstart <= o && (t.ins_h = (t.ins_h << t.hash_shift ^ t.window[t.strstart + st - 1]) & t.hash_mask, n = t.prev[t.strstart & t.w_mask] = t.head[t.ins_h], t.head[t.ins_h] = t.strstart)
				} while ( 0 != -- t . prev_length );
				if (t.match_available = 0, t.match_length = st - 1, t.strstart++, i && (s(t, !1), 0 === t.strm.avail_out)) return gt
			} else if (t.match_available) {
				if (i = M._tr_tally(t, 0, t.window[t.strstart - 1]), i && s(t, !1), t.strstart++, t.lookahead--, 0 === t.strm.avail_out) return gt
			} else t.match_available = 1,
			t.strstart++,
			t.lookahead--
		}
		return t.match_available && (i = M._tr_tally(t, 0, t.window[t.strstart - 1]), t.match_available = 0),
		t.insert = t.strstart < st - 1 ? t.strstart: st - 1,
		e === z ? (s(t, !0), 0 === t.strm.avail_out ? xt: bt) : t.last_lit && (s(t, !1), 0 === t.strm.avail_out) ? gt: yt
	}
	function _(t, e) {
		for (var n, i, o, r, a = t.window;;) {
			if (t.lookahead <= lt) {
				if (d(t), t.lookahead <= lt && e === N) return gt;
				if (0 === t.lookahead) break
			}
			if (t.match_length = 0, t.lookahead >= st && t.strstart > 0 && (o = t.strstart - 1, (i = a[o]) === a[++o] && i === a[++o] && i === a[++o])) {
				r = t.strstart + lt;
				do {} while ( i === a [++ o ] && i === a[++o] && i === a[++o] && i === a[++o] && i === a[++o] && i === a[++o] && i === a[++o] && i === a[++o] && o < r);
				t.match_length = lt - (r - o),
				t.match_length > t.lookahead && (t.match_length = t.lookahead)
			}
			if (t.match_length >= st ? (n = M._tr_tally(t, 1, t.match_length - st), t.lookahead -= t.match_length, t.strstart += t.match_length, t.match_length = 0) : (n = M._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++), n && (s(t, !1), 0 === t.strm.avail_out)) return gt
		}
		return t.insert = 0,
		e === z ? (s(t, !0), 0 === t.strm.avail_out ? xt: bt) : t.last_lit && (s(t, !1), 0 === t.strm.avail_out) ? gt: yt
	}
	function m(t, e) {
		for (var n;;) {
			if (0 === t.lookahead && (d(t), 0 === t.lookahead)) {
				if (e === N) return gt;
				break
			}
			if (t.match_length = 0, n = M._tr_tally(t, 0, t.window[t.strstart]), t.lookahead--, t.strstart++, n && (s(t, !1), 0 === t.strm.avail_out)) return gt
		}
		return t.insert = 0,
		e === z ? (s(t, !0), 0 === t.strm.avail_out ? xt: bt) : t.last_lit && (s(t, !1), 0 === t.strm.avail_out) ? gt: yt
	}
	function g(t, e, n, i, o) {
		this.good_length = t,
		this.max_lazy = e,
		this.nice_length = n,
		this.max_chain = i,
		this.func = o
	}
	function y(t) {
		t.window_size = 2 * t.w_size,
		r(t.head),
		t.max_lazy_match = k[t.level].max_lazy,
		t.good_match = k[t.level].good_length,
		t.nice_match = k[t.level].nice_length,
		t.max_chain_length = k[t.level].max_chain,
		t.strstart = 0,
		t.block_start = 0,
		t.lookahead = 0,
		t.insert = 0,
		t.match_length = t.prev_length = st - 1,
		t.match_available = 0,
		t.ins_h = 0
	}
	function x() {
		this.strm = null,
		this.status = 0,
		this.pending_buf = null,
		this.pending_buf_size = 0,
		this.pending_out = 0,
		this.pending = 0,
		this.wrap = 0,
		this.gzhead = null,
		this.gzindex = 0,
		this.method = J,
		this.last_flush = -1,
		this.w_size = 0,
		this.w_bits = 0,
		this.w_mask = 0,
		this.window = null,
		this.window_size = 0,
		this.prev = null,
		this.head = null,
		this.ins_h = 0,
		this.hash_size = 0,
		this.hash_bits = 0,
		this.hash_mask = 0,
		this.hash_shift = 0,
		this.block_start = 0,
		this.match_length = 0,
		this.prev_match = 0,
		this.match_available = 0,
		this.strstart = 0,
		this.match_start = 0,
		this.lookahead = 0,
		this.prev_length = 0,
		this.max_chain_length = 0,
		this.max_lazy_match = 0,
		this.level = 0,
		this.strategy = 0,
		this.good_match = 0,
		this.nice_match = 0,
		this.dyn_ltree = new L.Buf16(2 * rt),
		this.dyn_dtree = new L.Buf16(2 * (2 * it + 1)),
		this.bl_tree = new L.Buf16(2 * (2 * ot + 1)),
		r(this.dyn_ltree),
		r(this.dyn_dtree),
		r(this.bl_tree),
		this.l_desc = null,
		this.d_desc = null,
		this.bl_desc = null,
		this.bl_count = new L.Buf16(at + 1),
		this.heap = new L.Buf16(2 * nt + 1),
		r(this.heap),
		this.heap_len = 0,
		this.heap_max = 0,
		this.depth = new L.Buf16(2 * nt + 1),
		r(this.depth),
		this.l_buf = 0,
		this.lit_bufsize = 0,
		this.last_lit = 0,
		this.d_buf = 0,
		this.opt_len = 0,
		this.static_len = 0,
		this.matches = 0,
		this.insert = 0,
		this.bi_buf = 0,
		this.bi_valid = 0
	}
	function b(t) {
		var e;
		return t && t.state ? (t.total_in = t.total_out = 0, t.data_type = K, e = t.state, e.pending = 0, e.pending_out = 0, e.wrap < 0 && (e.wrap = -e.wrap), e.status = e.wrap ? ft: _t, t.adler = 2 === e.wrap ? 0 : 1, e.last_flush = N, M._tr_init(e), V) : i(t, U)
	}
	function S(t) {
		var e = b(t);
		return e === V && y(t.state),
		e
	}
	function w(t, e) {
		return t && t.state ? 2 !== t.state.wrap ? U: (t.state.gzhead = e, V) : U
	}
	function E(t, e, n, o, r, a) {
		if (!t) return U;
		var s = 1;
		if (e === Z && (e = 6), o < 0 ? (s = 0, o = -o) : o > 15 && (s = 2, o -= 16), r < 1 || r > $ || n !== J || o < 8 || o > 15 || e < 0 || e > 9 || a < 0 || a > Q) return i(t, U);
		8 === o && (o = 9);
		var l = new x;
		return t.state = l,
		l.strm = t,
		l.wrap = s,
		l.gzhead = null,
		l.w_bits = o,
		l.w_size = 1 << l.w_bits,
		l.w_mask = l.w_size - 1,
		l.hash_bits = r + 7,
		l.hash_size = 1 << l.hash_bits,
		l.hash_mask = l.hash_size - 1,
		l.hash_shift = ~~ ((l.hash_bits + st - 1) / st),
		l.window = new L.Buf8(2 * l.w_size),
		l.head = new L.Buf16(l.hash_size),
		l.prev = new L.Buf16(l.w_size),
		l.lit_bufsize = 1 << r + 6,
		l.pending_buf_size = 4 * l.lit_bufsize,
		l.pending_buf = new L.Buf8(l.pending_buf_size),
		l.d_buf = 1 * l.lit_bufsize,
		l.l_buf = 3 * l.lit_bufsize,
		l.level = e,
		l.strategy = a,
		l.method = n,
		S(t)
	}
	function T(t, e) {
		return E(t, e, J, tt, et, q)
	}
	function A(t, e) {
		var n, s, c, f;
		if (!t || !t.state || e > F || e < 0) return t ? i(t, U) : U;
		if (s = t.state, !t.output || !t.input && 0 !== t.avail_in || s.status === mt && e !== z) return i(t, 0 === t.avail_out ? G: U);
		if (s.strm = t, n = s.last_flush, s.last_flush = e, s.status === ft) if (2 === s.wrap) t.adler = 0,
		l(s, 31),
		l(s, 139),
		l(s, 8),
		s.gzhead ? (l(s, (s.gzhead.text ? 1 : 0) + (s.gzhead.hcrc ? 2 : 0) + (s.gzhead.extra ? 4 : 0) + (s.gzhead.name ? 8 : 0) + (s.gzhead.comment ? 16 : 0)), l(s, 255 & s.gzhead.time), l(s, s.gzhead.time >> 8 & 255), l(s, s.gzhead.time >> 16 & 255), l(s, s.gzhead.time >> 24 & 255), l(s, 9 === s.level ? 2 : s.strategy >= W || s.level < 2 ? 4 : 0), l(s, 255 & s.gzhead.os), s.gzhead.extra && s.gzhead.extra.length && (l(s, 255 & s.gzhead.extra.length), l(s, s.gzhead.extra.length >> 8 & 255)), s.gzhead.hcrc && (t.adler = R(t.adler, s.pending_buf, s.pending, 0)), s.gzindex = 0, s.status = dt) : (l(s, 0), l(s, 0), l(s, 0), l(s, 0), l(s, 0), l(s, 9 === s.level ? 2 : s.strategy >= W || s.level < 2 ? 4 : 0), l(s, St), s.status = _t);
		else {
			var d = J + (s.w_bits - 8 << 4) << 8,
			h = -1;
			h = s.strategy >= W || s.level < 2 ? 0 : s.level < 6 ? 1 : 6 === s.level ? 2 : 3,
			d |= h << 6,
			0 !== s.strstart && (d |= ct),
			d += 31 - d % 31,
			s.status = _t,
			u(s, d),
			0 !== s.strstart && (u(s, t.adler >>> 16), u(s, 65535 & t.adler)),
			t.adler = 1
		}
		if (s.status === dt) if (s.gzhead.extra) {
			for (c = s.pending; s.gzindex < (65535 & s.gzhead.extra.length) && (s.pending !== s.pending_buf_size || (s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)), a(t), c = s.pending, s.pending !== s.pending_buf_size));) l(s, 255 & s.gzhead.extra[s.gzindex]),
			s.gzindex++;
			s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)),
			s.gzindex === s.gzhead.extra.length && (s.gzindex = 0, s.status = ht)
		} else s.status = ht;
		if (s.status === ht) if (s.gzhead.name) {
			c = s.pending;
			do {
				if (s.pending === s.pending_buf_size && (s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)), a(t), c = s.pending, s.pending === s.pending_buf_size)) {
					f = 1;
					break
				}
				f = s.gzindex < s.gzhead.name.length ? 255 & s.gzhead.name.charCodeAt(s.gzindex++) : 0, l(s, f)
			} while ( 0 !== f );
			s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)),
			0 === f && (s.gzindex = 0, s.status = vt)
		} else s.status = vt;
		if (s.status === vt) if (s.gzhead.comment) {
			c = s.pending;
			do {
				if (s.pending === s.pending_buf_size && (s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)), a(t), c = s.pending, s.pending === s.pending_buf_size)) {
					f = 1;
					break
				}
				f = s.gzindex < s.gzhead.comment.length ? 255 & s.gzhead.comment.charCodeAt(s.gzindex++) : 0, l(s, f)
			} while ( 0 !== f );
			s.gzhead.hcrc && s.pending > c && (t.adler = R(t.adler, s.pending_buf, s.pending - c, c)),
			0 === f && (s.status = pt)
		} else s.status = pt;
		if (s.status === pt && (s.gzhead.hcrc ? (s.pending + 2 > s.pending_buf_size && a(t), s.pending + 2 <= s.pending_buf_size && (l(s, 255 & t.adler), l(s, t.adler >> 8 & 255), t.adler = 0, s.status = _t)) : s.status = _t), 0 !== s.pending) {
			if (a(t), 0 === t.avail_out) return s.last_flush = -1,
			V
		} else if (0 === t.avail_in && o(e) <= o(n) && e !== z) return i(t, G);
		if (s.status === mt && 0 !== t.avail_in) return i(t, G);
		if (0 !== t.avail_in || 0 !== s.lookahead || e !== N && s.status !== mt) {
			var v = s.strategy === W ? m(s, e) : s.strategy === X ? _(s, e) : k[s.level].func(s, e);
			if (v !== xt && v !== bt || (s.status = mt), v === gt || v === xt) return 0 === t.avail_out && (s.last_flush = -1),
			V;
			if (v === yt && (e === O ? M._tr_align(s) : e !== F && (M._tr_stored_block(s, 0, 0, !1), e === D && (r(s.head), 0 === s.lookahead && (s.strstart = 0, s.block_start = 0, s.insert = 0))), a(t), 0 === t.avail_out)) return s.last_flush = -1,
			V
		}
		return e !== z ? V: s.wrap <= 0 ? Y: (2 === s.wrap ? (l(s, 255 & t.adler), l(s, t.adler >> 8 & 255), l(s, t.adler >> 16 & 255), l(s, t.adler >> 24 & 255), l(s, 255 & t.total_in), l(s, t.total_in >> 8 & 255), l(s, t.total_in >> 16 & 255), l(s, t.total_in >> 24 & 255)) : (u(s, t.adler >>> 16), u(s, 65535 & t.adler)), a(t), s.wrap > 0 && (s.wrap = -s.wrap), 0 !== s.pending ? V: Y)
	}
	function P(t) {
		var e;
		return t && t.state ? (e = t.state.status) !== ft && e !== dt && e !== ht && e !== vt && e !== pt && e !== _t && e !== mt ? i(t, U) : (t.state = null, e === _t ? i(t, j) : V) : U
	}
	function I(t, e) {
		var n, i, o, a, s, l, u, c, f = e.length;
		if (!t || !t.state) return U;
		if (n = t.state, 2 === (a = n.wrap) || 1 === a && n.status !== ft || n.lookahead) return U;
		for (1 === a && (t.adler = C(t.adler, e, f, 0)), n.wrap = 0, f >= n.w_size && (0 === a && (r(n.head), n.strstart = 0, n.block_start = 0, n.insert = 0), c = new L.Buf8(n.w_size), L.arraySet(c, e, f - n.w_size, n.w_size, 0), e = c, f = n.w_size), s = t.avail_in, l = t.next_in, u = t.input, t.avail_in = f, t.next_in = 0, t.input = e, d(n); n.lookahead >= st;) {
			i = n.strstart,
			o = n.lookahead - (st - 1);
			do {
				n.ins_h = (n.ins_h << n.hash_shift ^ n.window[i + st - 1]) & n.hash_mask, n.prev[i & n.w_mask] = n.head[n.ins_h], n.head[n.ins_h] = i, i++
			} while (-- o );
			n.strstart = i,
			n.lookahead = st - 1,
			d(n)
		}
		return n.strstart += n.lookahead,
		n.block_start = n.strstart,
		n.insert = n.lookahead,
		n.lookahead = 0,
		n.match_length = n.prev_length = st - 1,
		n.match_available = 0,
		t.next_in = l,
		t.input = u,
		t.avail_in = s,
		n.wrap = a,
		V
	}
	var k, L = n(255),
	M = n(1022),
	C = n(554),
	R = n(556),
	B = n(451),
	N = 0,
	O = 1,
	D = 3,
	z = 4,
	F = 5,
	V = 0,
	Y = 1,
	U = -2,
	j = -3,
	G = -5,
	Z = -1,
	H = 1,
	W = 2,
	X = 3,
	Q = 4,
	q = 0,
	K = 2,
	J = 8,
	$ = 9,
	tt = 15,
	et = 8,
	nt = 286,
	it = 30,
	ot = 19,
	rt = 2 * nt + 1,
	at = 15,
	st = 3,
	lt = 258,
	ut = lt + st + 1,
	ct = 32,
	ft = 42,
	dt = 69,
	ht = 73,
	vt = 91,
	pt = 103,
	_t = 113,
	mt = 666,
	gt = 1,
	yt = 2,
	xt = 3,
	bt = 4,
	St = 3;
	k = [new g(0, 0, 0, 0, h), new g(4, 4, 8, 4, v), new g(4, 5, 16, 8, v), new g(4, 6, 32, 32, v), new g(4, 4, 16, 16, p), new g(8, 16, 32, 32, p), new g(8, 16, 128, 128, p), new g(8, 32, 128, 256, p), new g(32, 128, 258, 1024, p), new g(32, 258, 258, 4096, p)],
	e.deflateInit = T,
	e.deflateInit2 = E,
	e.deflateReset = S,
	e.deflateResetKeep = b,
	e.deflateSetHeader = w,
	e.deflate = A,
	e.deflateEnd = P,
	e.deflateSetDictionary = I,
	e.deflateInfo = "pako deflate (from Nodeca project)"
},
function(t, e, n) {
	"use strict";
	function i() {
		this.text = 0,
		this.time = 0,
		this.xflags = 0,
		this.os = 0,
		this.extra = null,
		this.extra_len = 0,
		this.name = "",
		this.comment = "",
		this.hcrc = 0,
		this.done = !1
	}
	t.exports = i
},
function(t, e, n) {
	"use strict";
	t.exports = function(t, e) {
		var n, i, o, r, a, s, l, u, c, f, d, h, v, p, _, m, g, y, x, b, S, w, E, T, A;
		n = t.state,
		i = t.next_in,
		T = t.input,
		o = i + (t.avail_in - 5),
		r = t.next_out,
		A = t.output,
		a = r - (e - t.avail_out),
		s = r + (t.avail_out - 257),
		l = n.dmax,
		u = n.wsize,
		c = n.whave,
		f = n.wnext,
		d = n.window,
		h = n.hold,
		v = n.bits,
		p = n.lencode,
		_ = n.distcode,
		m = (1 << n.lenbits) - 1,
		g = (1 << n.distbits) - 1;
		t: do {
			v < 15 && (h += T[i++] << v, v += 8, h += T[i++] << v, v += 8), y = p[h & m];
			e: for (;;) {
				if (x = y >>> 24, h >>>= x, v -= x, 0 === (x = y >>> 16 & 255)) A[r++] = 65535 & y;
				else {
					if (! (16 & x)) {
						if (0 == (64 & x)) {
							y = p[(65535 & y) + (h & (1 << x) - 1)];
							continue e
						}
						if (32 & x) {
							n.mode = 12;
							break t
						}
						t.msg = "invalid literal/length code",
						n.mode = 30;
						break t
					}
					b = 65535 & y,
					x &= 15,
					x && (v < x && (h += T[i++] << v, v += 8), b += h & (1 << x) - 1, h >>>= x, v -= x),
					v < 15 && (h += T[i++] << v, v += 8, h += T[i++] << v, v += 8),
					y = _[h & g];
					n: for (;;) {
						if (x = y >>> 24, h >>>= x, v -= x, !(16 & (x = y >>> 16 & 255))) {
							if (0 == (64 & x)) {
								y = _[(65535 & y) + (h & (1 << x) - 1)];
								continue n
							}
							t.msg = "invalid distance code",
							n.mode = 30;
							break t
						}
						if (S = 65535 & y, x &= 15, v < x && (h += T[i++] << v, (v += 8) < x && (h += T[i++] << v, v += 8)), (S += h & (1 << x) - 1) > l) {
							t.msg = "invalid distance too far back",
							n.mode = 30;
							break t
						}
						if (h >>>= x, v -= x, x = r - a, S > x) {
							if ((x = S - x) > c && n.sane) {
								t.msg = "invalid distance too far back",
								n.mode = 30;
								break t
							}
							if (w = 0, E = d, 0 === f) {
								if (w += u - x, x < b) {
									b -= x;
									do {
										A[r++] = d[w++]
									} while (-- x );
									w = r - S,
									E = A
								}
							} else if (f < x) {
								if (w += u + f - x, (x -= f) < b) {
									b -= x;
									do {
										A[r++] = d[w++]
									} while (-- x );
									if (w = 0, f < b) {
										x = f,
										b -= x;
										do {
											A[r++] = d[w++]
										} while (-- x );
										w = r - S,
										E = A
									}
								}
							} else if (w += f - x, x < b) {
								b -= x;
								do {
									A[r++] = d[w++]
								} while (-- x );
								w = r - S,
								E = A
							}
							for (; b > 2;) A[r++] = E[w++],
							A[r++] = E[w++],
							A[r++] = E[w++],
							b -= 3;
							b && (A[r++] = E[w++], b > 1 && (A[r++] = E[w++]))
						} else {
							w = r - S;
							do {
								A[r++] = A[w++], A[r++] = A[w++], A[r++] = A[w++], b -= 3
							} while ( b > 2 );
							b && (A[r++] = A[w++], b > 1 && (A[r++] = A[w++]))
						}
						break
					}
				}
				break
			}
		} while ( i < o && r < s );
		b = v >> 3,
		i -= b,
		v -= b << 3,
		h &= (1 << v) - 1,
		t.next_in = i,
		t.next_out = r,
		t.avail_in = i < o ? o - i + 5 : 5 - (i - o),
		t.avail_out = r < s ? s - r + 257 : 257 - (r - s),
		n.hold = h,
		n.bits = v
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		return (t >>> 24 & 255) + (t >>> 8 & 65280) + ((65280 & t) << 8) + ((255 & t) << 24)
	}
	function o() {
		this.mode = 0,
		this.last = !1,
		this.wrap = 0,
		this.havedict = !1,
		this.flags = 0,
		this.dmax = 0,
		this.check = 0,
		this.total = 0,
		this.head = null,
		this.wbits = 0,
		this.wsize = 0,
		this.whave = 0,
		this.wnext = 0,
		this.window = null,
		this.hold = 0,
		this.bits = 0,
		this.length = 0,
		this.offset = 0,
		this.extra = 0,
		this.lencode = null,
		this.distcode = null,
		this.lenbits = 0,
		this.distbits = 0,
		this.ncode = 0,
		this.nlen = 0,
		this.ndist = 0,
		this.have = 0,
		this.next = null,
		this.lens = new g.Buf16(320),
		this.work = new g.Buf16(288),
		this.lendyn = null,
		this.distdyn = null,
		this.sane = 0,
		this.back = 0,
		this.was = 0
	}
	function r(t) {
		var e;
		return t && t.state ? (e = t.state, t.total_in = t.total_out = e.total = 0, t.msg = "", e.wrap && (t.adler = 1 & e.wrap), e.mode = D, e.last = 0, e.havedict = 0, e.dmax = 32768, e.head = null, e.hold = 0, e.bits = 0, e.lencode = e.lendyn = new g.Buf32(pt), e.distcode = e.distdyn = new g.Buf32(_t), e.sane = 1, e.back = -1, k) : C
	}
	function a(t) {
		var e;
		return t && t.state ? (e = t.state, e.wsize = 0, e.whave = 0, e.wnext = 0, r(t)) : C
	}
	function s(t, e) {
		var n, i;
		return t && t.state ? (i = t.state, e < 0 ? (n = 0, e = -e) : (n = 1 + (e >> 4), e < 48 && (e &= 15)), e && (e < 8 || e > 15) ? C: (null !== i.window && i.wbits !== e && (i.window = null), i.wrap = n, i.wbits = e, a(t))) : C
	}
	function l(t, e) {
		var n, i;
		return t ? (i = new o, t.state = i, i.window = null, n = s(t, e), n !== k && (t.state = null), n) : C
	}
	function u(t) {
		return l(t, mt)
	}
	function c(t) {
		if (gt) {
			var e;
			for (_ = new g.Buf32(512), m = new g.Buf32(32), e = 0; e < 144;) t.lens[e++] = 8;
			for (; e < 256;) t.lens[e++] = 9;
			for (; e < 280;) t.lens[e++] = 7;
			for (; e < 288;) t.lens[e++] = 8;
			for (S(E, t.lens, 0, 288, _, 0, t.work, {
				bits: 9
			}), e = 0; e < 32;) t.lens[e++] = 5;
			S(T, t.lens, 0, 32, m, 0, t.work, {
				bits: 5
			}),
			gt = !1
		}
		t.lencode = _,
		t.lenbits = 9,
		t.distcode = m,
		t.distbits = 5
	}
	function f(t, e, n, i) {
		var o, r = t.state;
		return null === r.window && (r.wsize = 1 << r.wbits, r.wnext = 0, r.whave = 0, r.window = new g.Buf8(r.wsize)),
		i >= r.wsize ? (g.arraySet(r.window, e, n - r.wsize, r.wsize, 0), r.wnext = 0, r.whave = r.wsize) : (o = r.wsize - r.wnext, o > i && (o = i), g.arraySet(r.window, e, n - i, o, r.wnext), i -= o, i ? (g.arraySet(r.window, e, n - i, i, 0), r.wnext = i, r.whave = r.wsize) : (r.wnext += o, r.wnext === r.wsize && (r.wnext = 0), r.whave < r.wsize && (r.whave += o))),
		0
	}
	function d(t, e) {
		var n, o, r, a, s, l, u, d, h, v, p, _, m, pt, _t, mt, gt, yt, xt, bt, St, wt, Et, Tt, At = 0,
		Pt = new g.Buf8(4),
		It = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15];
		if (!t || !t.state || !t.output || !t.input && 0 !== t.avail_in) return C;
		n = t.state,
		n.mode === X && (n.mode = Q),
		s = t.next_out,
		r = t.output,
		u = t.avail_out,
		a = t.next_in,
		o = t.input,
		l = t.avail_in,
		d = n.hold,
		h = n.bits,
		v = l,
		p = u,
		wt = k;
		t: for (;;) switch (n.mode) {
		case D:
			if (0 === n.wrap) {
				n.mode = Q;
				break
			}
			for (; h < 16;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if (2 & n.wrap && 35615 === d) {
				n.check = 0,
				Pt[0] = 255 & d,
				Pt[1] = d >>> 8 & 255,
				n.check = x(n.check, Pt, 2, 0),
				d = 0,
				h = 0,
				n.mode = z;
				break
			}
			if (n.flags = 0, n.head && (n.head.done = !1), !(1 & n.wrap) || (((255 & d) << 8) + (d >> 8)) % 31) {
				t.msg = "incorrect header check",
				n.mode = dt;
				break
			}
			if ((15 & d) !== O) {
				t.msg = "unknown compression method",
				n.mode = dt;
				break
			}
			if (d >>>= 4, h -= 4, St = 8 + (15 & d), 0 === n.wbits) n.wbits = St;
			else if (St > n.wbits) {
				t.msg = "invalid window size",
				n.mode = dt;
				break
			}
			n.dmax = 1 << St,
			t.adler = n.check = 1,
			n.mode = 512 & d ? H: X,
			d = 0,
			h = 0;
			break;
		case z:
			for (; h < 16;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if (n.flags = d, (255 & n.flags) !== O) {
				t.msg = "unknown compression method",
				n.mode = dt;
				break
			}
			if (57344 & n.flags) {
				t.msg = "unknown header flags set",
				n.mode = dt;
				break
			}
			n.head && (n.head.text = d >> 8 & 1),
			512 & n.flags && (Pt[0] = 255 & d, Pt[1] = d >>> 8 & 255, n.check = x(n.check, Pt, 2, 0)),
			d = 0,
			h = 0,
			n.mode = F;
		case F:
			for (; h < 32;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			n.head && (n.head.time = d),
			512 & n.flags && (Pt[0] = 255 & d, Pt[1] = d >>> 8 & 255, Pt[2] = d >>> 16 & 255, Pt[3] = d >>> 24 & 255, n.check = x(n.check, Pt, 4, 0)),
			d = 0,
			h = 0,
			n.mode = V;
		case V:
			for (; h < 16;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			n.head && (n.head.xflags = 255 & d, n.head.os = d >> 8),
			512 & n.flags && (Pt[0] = 255 & d, Pt[1] = d >>> 8 & 255, n.check = x(n.check, Pt, 2, 0)),
			d = 0,
			h = 0,
			n.mode = Y;
		case Y:
			if (1024 & n.flags) {
				for (; h < 16;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				n.length = d,
				n.head && (n.head.extra_len = d),
				512 & n.flags && (Pt[0] = 255 & d, Pt[1] = d >>> 8 & 255, n.check = x(n.check, Pt, 2, 0)),
				d = 0,
				h = 0
			} else n.head && (n.head.extra = null);
			n.mode = U;
		case U:
			if (1024 & n.flags && (_ = n.length, _ > l && (_ = l), _ && (n.head && (St = n.head.extra_len - n.length, n.head.extra || (n.head.extra = new Array(n.head.extra_len)), g.arraySet(n.head.extra, o, a, _, St)), 512 & n.flags && (n.check = x(n.check, o, _, a)), l -= _, a += _, n.length -= _), n.length)) break t;
			n.length = 0,
			n.mode = j;
		case j:
			if (2048 & n.flags) {
				if (0 === l) break t;
				_ = 0;
				do {
					St = o[a + _++], n.head && St && n.length < 65536 && (n.head.name += String.fromCharCode(St))
				} while ( St && _ < l );
				if (512 & n.flags && (n.check = x(n.check, o, _, a)), l -= _, a += _, St) break t
			} else n.head && (n.head.name = null);
			n.length = 0,
			n.mode = G;
		case G:
			if (4096 & n.flags) {
				if (0 === l) break t;
				_ = 0;
				do {
					St = o[a + _++], n.head && St && n.length < 65536 && (n.head.comment += String.fromCharCode(St))
				} while ( St && _ < l );
				if (512 & n.flags && (n.check = x(n.check, o, _, a)), l -= _, a += _, St) break t
			} else n.head && (n.head.comment = null);
			n.mode = Z;
		case Z:
			if (512 & n.flags) {
				for (; h < 16;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				if (d !== (65535 & n.check)) {
					t.msg = "header crc mismatch",
					n.mode = dt;
					break
				}
				d = 0,
				h = 0
			}
			n.head && (n.head.hcrc = n.flags >> 9 & 1, n.head.done = !0),
			t.adler = n.check = 0,
			n.mode = X;
			break;
		case H:
			for (; h < 32;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			t.adler = n.check = i(d),
			d = 0,
			h = 0,
			n.mode = W;
		case W:
			if (0 === n.havedict) return t.next_out = s,
			t.avail_out = u,
			t.next_in = a,
			t.avail_in = l,
			n.hold = d,
			n.bits = h,
			M;
			t.adler = n.check = 1,
			n.mode = X;
		case X:
			if (e === P || e === I) break t;
		case Q:
			if (n.last) {
				d >>>= 7 & h,
				h -= 7 & h,
				n.mode = ut;
				break
			}
			for (; h < 3;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			switch (n.last = 1 & d, d >>>= 1, h -= 1, 3 & d) {
			case 0:
				n.mode = q;
				break;
			case 1:
				if (c(n), n.mode = nt, e === I) {
					d >>>= 2,
					h -= 2;
					break t
				}
				break;
			case 2:
				n.mode = $;
				break;
			case 3:
				t.msg = "invalid block type",
				n.mode = dt
			}
			d >>>= 2,
			h -= 2;
			break;
		case q:
			for (d >>>= 7 & h, h -= 7 & h; h < 32;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if ((65535 & d) != (d >>> 16 ^ 65535)) {
				t.msg = "invalid stored block lengths",
				n.mode = dt;
				break
			}
			if (n.length = 65535 & d, d = 0, h = 0, n.mode = K, e === I) break t;
		case K:
			n.mode = J;
		case J:
			if (_ = n.length) {
				if (_ > l && (_ = l), _ > u && (_ = u), 0 === _) break t;
				g.arraySet(r, o, a, _, s),
				l -= _,
				a += _,
				u -= _,
				s += _,
				n.length -= _;
				break
			}
			n.mode = X;
			break;
		case $:
			for (; h < 14;) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if (n.nlen = 257 + (31 & d), d >>>= 5, h -= 5, n.ndist = 1 + (31 & d), d >>>= 5, h -= 5, n.ncode = 4 + (15 & d), d >>>= 4, h -= 4, n.nlen > 286 || n.ndist > 30) {
				t.msg = "too many length or distance symbols",
				n.mode = dt;
				break
			}
			n.have = 0,
			n.mode = tt;
		case tt:
			for (; n.have < n.ncode;) {
				for (; h < 3;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				n.lens[It[n.have++]] = 7 & d,
				d >>>= 3,
				h -= 3
			}
			for (; n.have < 19;) n.lens[It[n.have++]] = 0;
			if (n.lencode = n.lendyn, n.lenbits = 7, Et = {
				bits: n.lenbits
			},
			wt = S(w, n.lens, 0, 19, n.lencode, 0, n.work, Et), n.lenbits = Et.bits, wt) {
				t.msg = "invalid code lengths set",
				n.mode = dt;
				break
			}
			n.have = 0,
			n.mode = et;
		case et:
			for (; n.have < n.nlen + n.ndist;) {
				for (; At = n.lencode[d & (1 << n.lenbits) - 1], _t = At >>> 24, mt = At >>> 16 & 255, gt = 65535 & At, !(_t <= h);) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				if (gt < 16) d >>>= _t,
				h -= _t,
				n.lens[n.have++] = gt;
				else {
					if (16 === gt) {
						for (Tt = _t + 2; h < Tt;) {
							if (0 === l) break t;
							l--,
							d += o[a++] << h,
							h += 8
						}
						if (d >>>= _t, h -= _t, 0 === n.have) {
							t.msg = "invalid bit length repeat",
							n.mode = dt;
							break
						}
						St = n.lens[n.have - 1],
						_ = 3 + (3 & d),
						d >>>= 2,
						h -= 2
					} else if (17 === gt) {
						for (Tt = _t + 3; h < Tt;) {
							if (0 === l) break t;
							l--,
							d += o[a++] << h,
							h += 8
						}
						d >>>= _t,
						h -= _t,
						St = 0,
						_ = 3 + (7 & d),
						d >>>= 3,
						h -= 3
					} else {
						for (Tt = _t + 7; h < Tt;) {
							if (0 === l) break t;
							l--,
							d += o[a++] << h,
							h += 8
						}
						d >>>= _t,
						h -= _t,
						St = 0,
						_ = 11 + (127 & d),
						d >>>= 7,
						h -= 7
					}
					if (n.have + _ > n.nlen + n.ndist) {
						t.msg = "invalid bit length repeat",
						n.mode = dt;
						break
					}
					for (; _--;) n.lens[n.have++] = St
				}
			}
			if (n.mode === dt) break;
			if (0 === n.lens[256]) {
				t.msg = "invalid code -- missing end-of-block",
				n.mode = dt;
				break
			}
			if (n.lenbits = 9, Et = {
				bits: n.lenbits
			},
			wt = S(E, n.lens, 0, n.nlen, n.lencode, 0, n.work, Et), n.lenbits = Et.bits, wt) {
				t.msg = "invalid literal/lengths set",
				n.mode = dt;
				break
			}
			if (n.distbits = 6, n.distcode = n.distdyn, Et = {
				bits: n.distbits
			},
			wt = S(T, n.lens, n.nlen, n.ndist, n.distcode, 0, n.work, Et), n.distbits = Et.bits, wt) {
				t.msg = "invalid distances set",
				n.mode = dt;
				break
			}
			if (n.mode = nt, e === I) break t;
		case nt:
			n.mode = it;
		case it:
			if (l >= 6 && u >= 258) {
				t.next_out = s,
				t.avail_out = u,
				t.next_in = a,
				t.avail_in = l,
				n.hold = d,
				n.bits = h,
				b(t, p),
				s = t.next_out,
				r = t.output,
				u = t.avail_out,
				a = t.next_in,
				o = t.input,
				l = t.avail_in,
				d = n.hold,
				h = n.bits,
				n.mode === X && (n.back = -1);
				break
			}
			for (n.back = 0; At = n.lencode[d & (1 << n.lenbits) - 1], _t = At >>> 24, mt = At >>> 16 & 255, gt = 65535 & At, !(_t <= h);) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if (mt && 0 == (240 & mt)) {
				for (yt = _t, xt = mt, bt = gt; At = n.lencode[bt + ((d & (1 << yt + xt) - 1) >> yt)], _t = At >>> 24, mt = At >>> 16 & 255, gt = 65535 & At, !(yt + _t <= h);) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				d >>>= yt,
				h -= yt,
				n.back += yt
			}
			if (d >>>= _t, h -= _t, n.back += _t, n.length = gt, 0 === mt) {
				n.mode = lt;
				break
			}
			if (32 & mt) {
				n.back = -1,
				n.mode = X;
				break
			}
			if (64 & mt) {
				t.msg = "invalid literal/length code",
				n.mode = dt;
				break
			}
			n.extra = 15 & mt,
			n.mode = ot;
		case ot:
			if (n.extra) {
				for (Tt = n.extra; h < Tt;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				n.length += d & (1 << n.extra) - 1,
				d >>>= n.extra,
				h -= n.extra,
				n.back += n.extra
			}
			n.was = n.length,
			n.mode = rt;
		case rt:
			for (; At = n.distcode[d & (1 << n.distbits) - 1], _t = At >>> 24, mt = At >>> 16 & 255, gt = 65535 & At, !(_t <= h);) {
				if (0 === l) break t;
				l--,
				d += o[a++] << h,
				h += 8
			}
			if (0 == (240 & mt)) {
				for (yt = _t, xt = mt, bt = gt; At = n.distcode[bt + ((d & (1 << yt + xt) - 1) >> yt)], _t = At >>> 24, mt = At >>> 16 & 255, gt = 65535 & At, !(yt + _t <= h);) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				d >>>= yt,
				h -= yt,
				n.back += yt
			}
			if (d >>>= _t, h -= _t, n.back += _t, 64 & mt) {
				t.msg = "invalid distance code",
				n.mode = dt;
				break
			}
			n.offset = gt,
			n.extra = 15 & mt,
			n.mode = at;
		case at:
			if (n.extra) {
				for (Tt = n.extra; h < Tt;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				n.offset += d & (1 << n.extra) - 1,
				d >>>= n.extra,
				h -= n.extra,
				n.back += n.extra
			}
			if (n.offset > n.dmax) {
				t.msg = "invalid distance too far back",
				n.mode = dt;
				break
			}
			n.mode = st;
		case st:
			if (0 === u) break t;
			if (_ = p - u, n.offset > _) {
				if ((_ = n.offset - _) > n.whave && n.sane) {
					t.msg = "invalid distance too far back",
					n.mode = dt;
					break
				}
				_ > n.wnext ? (_ -= n.wnext, m = n.wsize - _) : m = n.wnext - _,
				_ > n.length && (_ = n.length),
				pt = n.window
			} else pt = r,
			m = s - n.offset,
			_ = n.length;
			_ > u && (_ = u),
			u -= _,
			n.length -= _;
			do {
				r[s++] = pt[m++]
			} while (-- _ );
			0 === n.length && (n.mode = it);
			break;
		case lt:
			if (0 === u) break t;
			r[s++] = n.length,
			u--,
			n.mode = it;
			break;
		case ut:
			if (n.wrap) {
				for (; h < 32;) {
					if (0 === l) break t;
					l--,
					d |= o[a++] << h,
					h += 8
				}
				if (p -= u, t.total_out += p, n.total += p, p && (t.adler = n.check = n.flags ? x(n.check, r, p, s - p) : y(n.check, r, p, s - p)), p = u, (n.flags ? d: i(d)) !== n.check) {
					t.msg = "incorrect data check",
					n.mode = dt;
					break
				}
				d = 0,
				h = 0
			}
			n.mode = ct;
		case ct:
			if (n.wrap && n.flags) {
				for (; h < 32;) {
					if (0 === l) break t;
					l--,
					d += o[a++] << h,
					h += 8
				}
				if (d !== (4294967295 & n.total)) {
					t.msg = "incorrect length check",
					n.mode = dt;
					break
				}
				d = 0,
				h = 0
			}
			n.mode = ft;
		case ft:
			wt = L;
			break t;
		case dt:
			wt = R;
			break t;
		case ht:
			return B;
		case vt:
		default:
			return C
		}
		return t.next_out = s,
		t.avail_out = u,
		t.next_in = a,
		t.avail_in = l,
		n.hold = d,
		n.bits = h,
		(n.wsize || p !== t.avail_out && n.mode < dt && (n.mode < ut || e !== A)) && f(t, t.output, t.next_out, p - t.avail_out) ? (n.mode = ht, B) : (v -= t.avail_in, p -= t.avail_out, t.total_in += v, t.total_out += p, n.total += p, n.wrap && p && (t.adler = n.check = n.flags ? x(n.check, r, p, t.next_out - p) : y(n.check, r, p, t.next_out - p)), t.data_type = n.bits + (n.last ? 64 : 0) + (n.mode === X ? 128 : 0) + (n.mode === nt || n.mode === K ? 256 : 0), (0 === v && 0 === p || e === A) && wt === k && (wt = N), wt)
	}
	function h(t) {
		if (!t || !t.state) return C;
		var e = t.state;
		return e.window && (e.window = null),
		t.state = null,
		k
	}
	function v(t, e) {
		var n;
		return t && t.state ? (n = t.state, 0 == (2 & n.wrap) ? C: (n.head = e, e.done = !1, k)) : C
	}
	function p(t, e) {
		var n, i, o = e.length;
		return t && t.state ? (n = t.state, 0 !== n.wrap && n.mode !== W ? C: n.mode === W && (i = 1, (i = y(i, e, o, 0)) !== n.check) ? R: f(t, e, o, o) ? (n.mode = ht, B) : (n.havedict = 1, k)) : C
	}
	var _, m, g = n(255),
	y = n(554),
	x = n(556),
	b = n(1019),
	S = n(1021),
	w = 0,
	E = 1,
	T = 2,
	A = 4,
	P = 5,
	I = 6,
	k = 0,
	L = 1,
	M = 2,
	C = -2,
	R = -3,
	B = -4,
	N = -5,
	O = 8,
	D = 1,
	z = 2,
	F = 3,
	V = 4,
	Y = 5,
	U = 6,
	j = 7,
	G = 8,
	Z = 9,
	H = 10,
	W = 11,
	X = 12,
	Q = 13,
	q = 14,
	K = 15,
	J = 16,
	$ = 17,
	tt = 18,
	et = 19,
	nt = 20,
	it = 21,
	ot = 22,
	rt = 23,
	at = 24,
	st = 25,
	lt = 26,
	ut = 27,
	ct = 28,
	ft = 29,
	dt = 30,
	ht = 31,
	vt = 32,
	pt = 852,
	_t = 592,
	mt = 15,
	gt = !0;
	e.inflateReset = a,
	e.inflateReset2 = s,
	e.inflateResetKeep = r,
	e.inflateInit = u,
	e.inflateInit2 = l,
	e.inflate = d,
	e.inflateEnd = h,
	e.inflateGetHeader = v,
	e.inflateSetDictionary = p,
	e.inflateInfo = "pako inflate (from Nodeca project)"
},
function(t, e, n) {
	"use strict";
	var i = n(255),
	o = [3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0],
	r = [16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 72, 78],
	a = [1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, 8193, 12289, 16385, 24577, 0, 0],
	s = [16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28, 29, 29, 64, 64];
	t.exports = function(t, e, n, l, u, c, f, d) {
		var h, v, p, _, m, g, y, x, b, S = d.bits,
		w = 0,
		E = 0,
		T = 0,
		A = 0,
		P = 0,
		I = 0,
		k = 0,
		L = 0,
		M = 0,
		C = 0,
		R = null,
		B = 0,
		N = new i.Buf16(16),
		O = new i.Buf16(16),
		D = null,
		z = 0;
		for (w = 0; w <= 15; w++) N[w] = 0;
		for (E = 0; E < l; E++) N[e[n + E]]++;
		for (P = S, A = 15; A >= 1 && 0 === N[A]; A--);
		if (P > A && (P = A), 0 === A) return u[c++] = 20971520,
		u[c++] = 20971520,
		d.bits = 1,
		0;
		for (T = 1; T < A && 0 === N[T]; T++);
		for (P < T && (P = T), L = 1, w = 1; w <= 15; w++) if (L <<= 1, (L -= N[w]) < 0) return - 1;
		if (L > 0 && (0 === t || 1 !== A)) return - 1;
		for (O[1] = 0, w = 1; w < 15; w++) O[w + 1] = O[w] + N[w];
		for (E = 0; E < l; E++) 0 !== e[n + E] && (f[O[e[n + E]]++] = E);
		if (0 === t ? (R = D = f, g = 19) : 1 === t ? (R = o, B -= 257, D = r, z -= 257, g = 256) : (R = a, D = s, g = -1), C = 0, E = 0, w = T, m = c, I = P, k = 0, p = -1, M = 1 << P, _ = M - 1, 1 === t && M > 852 || 2 === t && M > 592) return 1;
		for (;;) {
			y = w - k,
			f[E] < g ? (x = 0, b = f[E]) : f[E] > g ? (x = D[z + f[E]], b = R[B + f[E]]) : (x = 96, b = 0),
			h = 1 << w - k,
			v = 1 << I,
			T = v;
			do {
				v -= h, u[m + (C >> k) + v] = y << 24 | x << 16 | b | 0
			} while ( 0 !== v );
			for (h = 1 << w - 1; C & h;) h >>= 1;
			if (0 !== h ? (C &= h - 1, C += h) : C = 0, E++, 0 == --N[w]) {
				if (w === A) break;
				w = e[n + f[E]]
			}
			if (w > P && (C & _) !== p) {
				for (0 === k && (k = P), m += T, I = w - k, L = 1 << I; I + k < A && !((L -= N[I + k]) <= 0);) I++,
				L <<= 1;
				if (M += 1 << I, 1 === t && M > 852 || 2 === t && M > 592) return 1;
				p = C & _,
				u[p] = P << 24 | I << 16 | m - c | 0
			}
		}
		return 0 !== C && (u[m + C] = w - k << 24 | 64 << 16 | 0),
		d.bits = P,
		0
	}
},
function(t, e, n) {
	"use strict";
	function i(t) {
		for (var e = t.length; --e >= 0;) t[e] = 0
	}
	function o(t, e, n, i, o) {
		this.static_tree = t,
		this.extra_bits = e,
		this.extra_base = n,
		this.elems = i,
		this.max_length = o,
		this.has_stree = t && t.length
	}
	function r(t, e) {
		this.dyn_tree = t,
		this.max_code = 0,
		this.stat_desc = e
	}
	function a(t) {
		return t < 256 ? rt[t] : rt[256 + (t >>> 7)]
	}
	function s(t, e) {
		t.pending_buf[t.pending++] = 255 & e,
		t.pending_buf[t.pending++] = e >>> 8 & 255
	}
	function l(t, e, n) {
		t.bi_valid > W - n ? (t.bi_buf |= e << t.bi_valid & 65535, s(t, t.bi_buf), t.bi_buf = e >> W - t.bi_valid, t.bi_valid += n - W) : (t.bi_buf |= e << t.bi_valid & 65535, t.bi_valid += n)
	}
	function u(t, e, n) {
		l(t, n[2 * e], n[2 * e + 1])
	}
	function c(t, e) {
		var n = 0;
		do {
			n |= 1 & t, t >>>= 1, n <<= 1
		} while (-- e > 0 );
		return n >>> 1
	}
	function f(t) {
		16 === t.bi_valid ? (s(t, t.bi_buf), t.bi_buf = 0, t.bi_valid = 0) : t.bi_valid >= 8 && (t.pending_buf[t.pending++] = 255 & t.bi_buf, t.bi_buf >>= 8, t.bi_valid -= 8)
	}
	function d(t, e) {
		var n, i, o, r, a, s, l = e.dyn_tree,
		u = e.max_code,
		c = e.stat_desc.static_tree,
		f = e.stat_desc.has_stree,
		d = e.stat_desc.extra_bits,
		h = e.stat_desc.extra_base,
		v = e.stat_desc.max_length,
		p = 0;
		for (r = 0; r <= H; r++) t.bl_count[r] = 0;
		for (l[2 * t.heap[t.heap_max] + 1] = 0, n = t.heap_max + 1; n < Z; n++) i = t.heap[n],
		r = l[2 * l[2 * i + 1] + 1] + 1,
		r > v && (r = v, p++),
		l[2 * i + 1] = r,
		i > u || (t.bl_count[r]++, a = 0, i >= h && (a = d[i - h]), s = l[2 * i], t.opt_len += s * (r + a), f && (t.static_len += s * (c[2 * i + 1] + a)));
		if (0 !== p) {
			do {
				for (r = v - 1; 0 === t.bl_count[r];) r--;
				t.bl_count[r]--, t.bl_count[r + 1] += 2, t.bl_count[v]--, p -= 2
			} while ( p > 0 );
			for (r = v; 0 !== r; r--) for (i = t.bl_count[r]; 0 !== i;)(o = t.heap[--n]) > u || (l[2 * o + 1] !== r && (t.opt_len += (r - l[2 * o + 1]) * l[2 * o], l[2 * o + 1] = r), i--)
		}
	}
	function h(t, e, n) {
		var i, o, r = new Array(H + 1),
		a = 0;
		for (i = 1; i <= H; i++) r[i] = a = a + n[i - 1] << 1;
		for (o = 0; o <= e; o++) {
			var s = t[2 * o + 1];
			0 !== s && (t[2 * o] = c(r[s]++, s))
		}
	}
	function v() {
		var t, e, n, i, r, a = new Array(H + 1);
		for (n = 0, i = 0; i < V - 1; i++) for (st[i] = n, t = 0; t < 1 << $[i]; t++) at[n++] = i;
		for (at[n - 1] = i, r = 0, i = 0; i < 16; i++) for (lt[i] = r, t = 0; t < 1 << tt[i]; t++) rt[r++] = i;
		for (r >>= 7; i < j; i++) for (lt[i] = r << 7, t = 0; t < 1 << tt[i] - 7; t++) rt[256 + r++] = i;
		for (e = 0; e <= H; e++) a[e] = 0;
		for (t = 0; t <= 143;) it[2 * t + 1] = 8,
		t++,
		a[8]++;
		for (; t <= 255;) it[2 * t + 1] = 9,
		t++,
		a[9]++;
		for (; t <= 279;) it[2 * t + 1] = 7,
		t++,
		a[7]++;
		for (; t <= 287;) it[2 * t + 1] = 8,
		t++,
		a[8]++;
		for (h(it, U + 1, a), t = 0; t < j; t++) ot[2 * t + 1] = 5,
		ot[2 * t] = c(t, 5);
		ut = new o(it, $, Y + 1, U, H),
		ct = new o(ot, tt, 0, j, H),
		ft = new o(new Array(0), et, 0, G, X)
	}
	function p(t) {
		var e;
		for (e = 0; e < U; e++) t.dyn_ltree[2 * e] = 0;
		for (e = 0; e < j; e++) t.dyn_dtree[2 * e] = 0;
		for (e = 0; e < G; e++) t.bl_tree[2 * e] = 0;
		t.dyn_ltree[2 * Q] = 1,
		t.opt_len = t.static_len = 0,
		t.last_lit = t.matches = 0
	}
	function _(t) {
		t.bi_valid > 8 ? s(t, t.bi_buf) : t.bi_valid > 0 && (t.pending_buf[t.pending++] = t.bi_buf),
		t.bi_buf = 0,
		t.bi_valid = 0
	}
	function m(t, e, n, i) {
		_(t),
		i && (s(t, n), s(t, ~n)),
		C.arraySet(t.pending_buf, t.window, e, n, t.pending),
		t.pending += n
	}
	function g(t, e, n, i) {
		var o = 2 * e,
		r = 2 * n;
		return t[o] < t[r] || t[o] === t[r] && i[e] <= i[n]
	}
	function y(t, e, n) {
		for (var i = t.heap[n], o = n << 1; o <= t.heap_len && (o < t.heap_len && g(e, t.heap[o + 1], t.heap[o], t.depth) && o++, !g(e, i, t.heap[o], t.depth));) t.heap[n] = t.heap[o],
		n = o,
		o <<= 1;
		t.heap[n] = i
	}
	function x(t, e, n) {
		var i, o, r, s, c = 0;
		if (0 !== t.last_lit) do {
			i = t.pending_buf[t.d_buf + 2 * c] << 8 | t.pending_buf[t.d_buf + 2 * c + 1], o = t.pending_buf[t.l_buf + c], c++, 0 === i ? u(t, o, e) : (r = at[o], u(t, r + Y + 1, e), s = $[r], 0 !== s && (o -= st[r], l(t, o, s)), i--, r = a(i), u(t, r, n), 0 !== (s = tt[r]) && (i -= lt[r], l(t, i, s)))
		} while ( c < t . last_lit );
		u(t, Q, e)
	}
	function b(t, e) {
		var n, i, o, r = e.dyn_tree,
		a = e.stat_desc.static_tree,
		s = e.stat_desc.has_stree,
		l = e.stat_desc.elems,
		u = -1;
		for (t.heap_len = 0, t.heap_max = Z, n = 0; n < l; n++) 0 !== r[2 * n] ? (t.heap[++t.heap_len] = u = n, t.depth[n] = 0) : r[2 * n + 1] = 0;
		for (; t.heap_len < 2;) o = t.heap[++t.heap_len] = u < 2 ? ++u: 0,
		r[2 * o] = 1,
		t.depth[o] = 0,
		t.opt_len--,
		s && (t.static_len -= a[2 * o + 1]);
		for (e.max_code = u, n = t.heap_len >> 1; n >= 1; n--) y(t, r, n);
		o = l;
		do {
			n = t.heap[1], t.heap[1] = t.heap[t.heap_len--], y(t, r, 1), i = t.heap[1], t.heap[--t.heap_max] = n, t.heap[--t.heap_max] = i, r[2 * o] = r[2 * n] + r[2 * i], t.depth[o] = (t.depth[n] >= t.depth[i] ? t.depth[n] : t.depth[i]) + 1, r[2 * n + 1] = r[2 * i + 1] = o, t.heap[1] = o++, y(t, r, 1)
		} while ( t . heap_len >= 2 );
		t.heap[--t.heap_max] = t.heap[1],
		d(t, e),
		h(r, u, t.bl_count)
	}
	function S(t, e, n) {
		var i, o, r = -1,
		a = e[1],
		s = 0,
		l = 7,
		u = 4;
		for (0 === a && (l = 138, u = 3), e[2 * (n + 1) + 1] = 65535, i = 0; i <= n; i++) o = a,
		a = e[2 * (i + 1) + 1],
		++s < l && o === a || (s < u ? t.bl_tree[2 * o] += s: 0 !== o ? (o !== r && t.bl_tree[2 * o]++, t.bl_tree[2 * q]++) : s <= 10 ? t.bl_tree[2 * K]++:t.bl_tree[2 * J]++, s = 0, r = o, 0 === a ? (l = 138, u = 3) : o === a ? (l = 6, u = 3) : (l = 7, u = 4))
	}
	function w(t, e, n) {
		var i, o, r = -1,
		a = e[1],
		s = 0,
		c = 7,
		f = 4;
		for (0 === a && (c = 138, f = 3), i = 0; i <= n; i++) if (o = a, a = e[2 * (i + 1) + 1], !(++s < c && o === a)) {
			if (s < f) do {
				u(t, o, t.bl_tree)
			} while ( 0 != -- s );
			else 0 !== o ? (o !== r && (u(t, o, t.bl_tree), s--), u(t, q, t.bl_tree), l(t, s - 3, 2)) : s <= 10 ? (u(t, K, t.bl_tree), l(t, s - 3, 3)) : (u(t, J, t.bl_tree), l(t, s - 11, 7));
			s = 0,
			r = o,
			0 === a ? (c = 138, f = 3) : o === a ? (c = 6, f = 3) : (c = 7, f = 4)
		}
	}
	function E(t) {
		var e;
		for (S(t, t.dyn_ltree, t.l_desc.max_code), S(t, t.dyn_dtree, t.d_desc.max_code), b(t, t.bl_desc), e = G - 1; e >= 3 && 0 === t.bl_tree[2 * nt[e] + 1]; e--);
		return t.opt_len += 3 * (e + 1) + 5 + 5 + 4,
		e
	}
	function T(t, e, n, i) {
		var o;
		for (l(t, e - 257, 5), l(t, n - 1, 5), l(t, i - 4, 4), o = 0; o < i; o++) l(t, t.bl_tree[2 * nt[o] + 1], 3);
		w(t, t.dyn_ltree, e - 1),
		w(t, t.dyn_dtree, n - 1)
	}
	function A(t) {
		var e, n = 4093624447;
		for (e = 0; e <= 31; e++, n >>>= 1) if (1 & n && 0 !== t.dyn_ltree[2 * e]) return B;
		if (0 !== t.dyn_ltree[18] || 0 !== t.dyn_ltree[20] || 0 !== t.dyn_ltree[26]) return N;
		for (e = 32; e < Y; e++) if (0 !== t.dyn_ltree[2 * e]) return N;
		return B
	}
	function P(t) {
		dt || (v(), dt = !0),
		t.l_desc = new r(t.dyn_ltree, ut),
		t.d_desc = new r(t.dyn_dtree, ct),
		t.bl_desc = new r(t.bl_tree, ft),
		t.bi_buf = 0,
		t.bi_valid = 0,
		p(t)
	}
	function I(t, e, n, i) {
		l(t, (D << 1) + (i ? 1 : 0), 3),
		m(t, e, n, !0)
	}
	function k(t) {
		l(t, z << 1, 3),
		u(t, Q, it),
		f(t)
	}
	function L(t, e, n, i) {
		var o, r, a = 0;
		t.level > 0 ? (t.strm.data_type === O && (t.strm.data_type = A(t)), b(t, t.l_desc), b(t, t.d_desc), a = E(t), o = t.opt_len + 3 + 7 >>> 3, (r = t.static_len + 3 + 7 >>> 3) <= o && (o = r)) : o = r = n + 5,
		n + 4 <= o && -1 !== e ? I(t, e, n, i) : t.strategy === R || r === o ? (l(t, (z << 1) + (i ? 1 : 0), 3), x(t, it, ot)) : (l(t, (F << 1) + (i ? 1 : 0), 3), T(t, t.l_desc.max_code + 1, t.d_desc.max_code + 1, a + 1), x(t, t.dyn_ltree, t.dyn_dtree)),
		p(t),
		i && _(t)
	}
	function M(t, e, n) {
		return t.pending_buf[t.d_buf + 2 * t.last_lit] = e >>> 8 & 255,
		t.pending_buf[t.d_buf + 2 * t.last_lit + 1] = 255 & e,
		t.pending_buf[t.l_buf + t.last_lit] = 255 & n,
		t.last_lit++,
		0 === e ? t.dyn_ltree[2 * n]++:(t.matches++, e--, t.dyn_ltree[2 * (at[n] + Y + 1)]++, t.dyn_dtree[2 * a(e)]++),
		t.last_lit === t.lit_bufsize - 1
	}
	var C = n(255),
	R = 4,
	B = 0,
	N = 1,
	O = 2,
	D = 0,
	z = 1,
	F = 2,
	V = 29,
	Y = 256,
	U = Y + 1 + V,
	j = 30,
	G = 19,
	Z = 2 * U + 1,
	H = 15,
	W = 16,
	X = 7,
	Q = 256,
	q = 16,
	K = 17,
	J = 18,
	$ = [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0],
	tt = [0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13],
	et = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7],
	nt = [16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15],
	it = new Array(2 * (U + 2));
	i(it);
	var ot = new Array(2 * j);
	i(ot);
	var rt = new Array(512);
	i(rt);
	var at = new Array(256);
	i(at);
	var st = new Array(V);
	i(st);
	var lt = new Array(j);
	i(lt);
	var ut, ct, ft, dt = !1;
	e._tr_init = P,
	e._tr_stored_block = I,
	e._tr_flush_block = L,
	e._tr_tally = M,
	e._tr_align = k
},
function(t, e) {
	function n() {
		throw new Error("setTimeout has not been defined")
	}
	function i() {
		throw new Error("clearTimeout has not been defined")
	}
	function o(t) {
		if (c === setTimeout) return setTimeout(t, 0);
		if ((c === n || !c) && setTimeout) return c = setTimeout,
		setTimeout(t, 0);
		try {
			return c(t, 0)
		} catch(e) {
			try {
				return c.call(null, t, 0)
			} catch(e) {
				return c.call(this, t, 0)
			}
		}
	}
	function r(t) {
		if (f === clearTimeout) return clearTimeout(t);
		if ((f === i || !f) && clearTimeout) return f = clearTimeout,
		clearTimeout(t);
		try {
			return f(t)
		} catch(e) {
			try {
				return f.call(null, t)
			} catch(e) {
				return f.call(this, t)
			}
		}
	}
	function a() {
		p && h && (p = !1, h.length ? v = h.concat(v) : _ = -1, v.length && s())
	}
	function s() {
		if (!p) {
			var t = o(a);
			p = !0;
			for (var e = v.length; e;) {
				for (h = v, v = []; ++_ < e;) h && h[_].run();
				_ = -1,
				e = v.length
			}
			h = null,
			p = !1,
			r(t)
		}
	}
	function l(t, e) {
		this.fun = t,
		this.array = e
	}
	function u() {}
	var c, f, d = t.exports = {}; !
	function() {
		try {
			c = "function" == typeof setTimeout ? setTimeout: n
		} catch(t) {
			c = n
		}
		try {
			f = "function" == typeof clearTimeout ? clearTimeout: i
		} catch(t) {
			f = i
		}
	} ();
	var h, v = [],
	p = !1,
	_ = -1;
	d.nextTick = function(t) {
		var e = new Array(arguments.length - 1);
		if (arguments.length > 1) for (var n = 1; n < arguments.length; n++) e[n - 1] = arguments[n];
		v.push(new l(t, e)),
		1 !== v.length || p || o(s)
	},
	l.prototype.run = function() {
		this.fun.apply(null, this.array)
	},
	d.title = "browser",
	d.browser = !0,
	d.env = {},
	d.argv = [],
	d.version = "",
	d.versions = {},
	d.on = u,
	d.addListener = u,
	d.once = u,
	d.off = u,
	d.removeListener = u,
	d.removeAllListeners = u,
	d.emit = u,
	d.prependListener = u,
	d.prependOnceListener = u,
	d.listeners = function(t) {
		return []
	},
	d.binding = function(t) {
		throw new Error("process.binding is not supported")
	},
	d.cwd = function() {
		return "/"
	},
	d.chdir = function(t) {
		throw new Error("process.chdir is not supported")
	},
	d.umask = function() {
		return 0
	}
},
function(t, e) {
	t.exports = "# WaveFront *.obj file (generated by CINEMA 4D)\n\nmtllib ./escalator.mtl\n\nv -10.38787460327148 3.49382448196411 0.05786377936602\nv -10.38787460327148 2.83549332618713 0.05786377936602\nv 8.37319946289062 3.49382448196411 15.20390701293945\nv 8.37319946289062 2.83549332618713 15.20390701293945\nv -15.11080265045166 2.83549332618713 4.95054340362549\nv -15.11080265045166 3.49382448196411 4.95054340362549\nv -17.63106727600098 3.49382448196411 2.51569700241089\nv -17.63106727600098 2.83549332618713 2.51569700241089\nv -15.63636589050293 2.83549332618713 4.89701271057129\nv -16.17062377929688 2.83549332618713 4.72479200363159\nv -16.67029190063477 2.83549332618713 4.42842483520508\nv -17.09063148498535 2.83549332618713 4.02233219146729\nv -17.39739608764648 2.83549332618713 3.53959894180298\nv -17.57565879821777 2.83549332618713 3.02344822883606\nv -15.63636589050293 3.49382448196411 4.89701271057129\nv -16.17062377929688 3.49382448196411 4.72479200363159\nv -16.67029190063477 3.49382448196411 4.42842483520508\nv -17.09063148498535 3.49382448196411 4.02233219146729\nv -17.39739608764648 3.49382448196411 3.53959894180298\nv -17.57565879821777 3.49382448196411 3.02344822883606\nv -15.11080265045166 3.49382448196411 0.05786377936602\nv -15.11080265045166 2.83549332618713 0.05786377936602\nv -17.63106727600098 3.49382448196411 2.49271011352539\nv -17.63106727600098 2.83549332618713 2.49271011352539\nv -15.63636589050293 3.49382448196411 0.11139420419931\nv -16.17062377929688 3.49382448196411 0.28361487388611\nv -16.67029190063477 3.49382448196411 0.57998245954514\nv -17.09063148498535 3.49382448196411 0.9860748052597\nv -17.39739608764648 3.49382448196411 1.4688081741333\nv -17.57565879821777 3.49382448196411 1.98495888710022\nv -15.63636589050293 2.83549332618713 0.11139420419931\nv -16.17062377929688 2.83549332618713 0.28361487388611\nv -16.67029190063477 2.83549332618713 0.57998245954514\nv -17.09063148498535 2.83549332618713 0.9860748052597\nv -17.39739608764648 2.83549332618713 1.4688081741333\nv -17.57565879821777 2.83549332618713 1.98495888710022\nv 13.17253494262695 3.49382448196411 20.09658622741699\nv 13.17253494262695 2.83549332618713 20.09658622741699\nv 15.69279861450195 2.83549332618713 17.66173934936523\nv 15.69279861450195 3.49382448196411 17.66173934936523\nv 13.69809818267822 3.49382448196411 20.04305648803711\nv 14.23235607147217 3.49382448196411 19.87083435058594\nv 14.73202419281006 3.49382448196411 19.5744686126709\nv 15.15236282348633 3.49382448196411 19.16837501525879\nv 15.45912742614746 3.49382448196411 18.68564224243164\nv 15.63739013671875 3.49382448196411 18.16949081420898\nv 13.69809818267822 2.83549332618713 20.04305648803711\nv 14.23235607147217 2.83549332618713 19.87083435058594\nv 14.73202419281006 2.83549332618713 19.5744686126709\nv 15.15236282348633 2.83549332618713 19.16837501525879\nv 15.45912742614746 2.83549332618713 18.68564224243164\nv 15.63739013671875 2.83549332618713 18.16949081420898\nv 13.17253494262695 2.83549332618713 15.20390701293945\nv 13.17253494262695 3.49382448196411 15.20390701293945\nv 15.69279861450195 2.83549332618713 17.63875389099121\nv 15.69279861450195 3.49382448196411 17.63875389099121\nv 13.69809818267822 2.83549332618713 15.25743770599365\nv 14.23235607147217 2.83549332618713 15.42965793609619\nv 14.73202419281006 2.83549332618713 15.72602558135986\nv 15.15236282348633 2.83549332618713 16.13211822509766\nv 15.45912742614746 2.83549332618713 16.6148509979248\nv 15.63739013671875 2.83549332618713 17.13100242614746\nv 13.69809818267822 3.49382448196411 15.25743770599365\nv 14.23235607147217 3.49382448196411 15.42965793609619\nv 14.73202419281006 3.49382448196411 15.72602558135986\nv 15.15236282348633 3.49382448196411 16.13211822509766\nv 15.45912742614746 3.49382448196411 16.6148509979248\nv 15.63739013671875 3.49382448196411 17.13100242614746\nv -10.38787460327148 2.83549332618713 4.22026777267456\nv -9.80783653259277 2.83549332618713 5.41881465911865\nv -9.80783653259277 3.49382448196411 5.41881465911865\nv -11.14376926422119 2.83549332618713 4.95054340362549\nv -11.14376926422119 3.49382448196411 4.95054340362549\nv -10.38787460327148 3.49382448196411 4.22026777267456\nv -10.93948745727539 2.83549332618713 4.96024227142334\nv -10.7346715927124 2.83549332618713 4.98972845077515\nv -10.53240394592285 2.83549332618713 5.03915452957153\nv -10.33578205108643 2.83549332618713 5.10807466506958\nv -10.14776611328125 2.83549332618713 5.19545078277588\nv -9.97102928161621 2.83549332618713 5.29970645904541\nv -9.97102928161621 3.49382448196411 5.29970645904541\nv -10.14776611328125 3.49382448196411 5.19545078277588\nv -10.33578205108643 3.49382448196411 5.10807466506958\nv -10.53240394592285 3.49382448196411 5.03915452957153\nv -10.7346715927124 3.49382448196411 4.98972845077515\nv -10.93948745727539 3.49382448196411 4.96024227142334\nv 8.37319946289062 2.83549332618713 19.37121200561523\nv 7.79705476760864 2.83549332618713 19.6314582824707\nv 7.79705476760864 3.49382448196411 19.6314582824707\nv 9.12402153015137 3.49382448196411 20.09658622741699\nv 9.12402153015137 2.83549332618713 20.09658622741699\nv 8.37319946289062 3.49382448196411 19.37121200561523\nv 7.95915222167969 2.83549332618713 19.7497673034668\nv 8.13470268249512 2.83549332618713 19.85332298278809\nv 8.32145690917969 2.83549332618713 19.94011306762695\nv 8.51675891876221 2.83549332618713 20.00856971740723\nv 8.71766948699951 2.83549332618713 20.05766487121582\nv 8.92111110687256 2.83549332618713 20.08695220947266\nv 8.92111110687256 3.49382448196411 20.08695220947266\nv 8.71766948699951 3.49382448196411 20.05766487121582\nv 8.51675891876221 3.49382448196411 20.00856971740723\nv 8.32145690917969 3.49382448196411 19.94011306762695\nv 8.13470268249512 3.49382448196411 19.85332298278809\nv 7.95915222167969 3.49382448196411 19.7497673034668\n# 104 vertices\n\nvn 0 0 1\nvn 0 0 0\nvn 1 0 0\nvn 0 0 -1\nvn -1 0 0\nvn 0 1 0\nvn 0.33310228586197 -0.94289070367813 0\nvn 0 -1 0\nvn -0.62815809249878 0.77808576822281 0\nvn -0.1013290733099 0.99485296010971 0\nvn -0.20520241558552 0.97871953248978 0\nvn -0.41104024648666 0.91161721944809 0\nvn -0.6065838932991 0.7950194478035 0\nvn -0.77482038736343 0.63218140602112 0\nvn -0.90074276924133 0.43435296416283 0\nvn -0.97576230764389 0.21883322298527 0\nvn -0.99409872293472 0.10847935080528 0\nvn -0.10132952034473 -0.99485290050507 0\nvn -0.20520263910294 -0.97871953248978 0\nvn -0.41104024648666 -0.91161721944809 0\nvn -0.6065838932991 -0.7950194478035 0\nvn -0.77482026815414 -0.63218152523041 0\nvn -0.90074276924133 -0.43435296416283 0\nvn -0.97576230764389 -0.21883311867714 0\nvn -0.99409866333008 -0.10847944766283 0\nvn 0.10132952034473 0.99485290050507 0\nvn 0.20520223677158 0.97871959209442 0\nvn 0.41103982925415 0.91161739826202 0\nvn 0.60658365488052 0.79501962661743 0\nvn 0.77482026815414 0.63218152523041 0\nvn 0.90074348449707 0.43435138463974 0\nvn 0.97576242685318 0.21883250772953 0\nvn 0.99409848451614 0.10848119109869 0\nvn 0.10132862627506 -0.99485301971436 0\nvn 0.20520259439945 -0.97871953248978 0\nvn 0.41104060411453 -0.91161704063416 0\nvn 0.60658323764801 -0.7950199842453 0\nvn 0.77481991052628 -0.63218206167221 0\nvn 0.90074348449707 -0.43435138463974 0\nvn 0.97576242685318 -0.21883250772953 0\nvn 0.99409848451614 -0.10848119109869 0\nvn -0.58953845500946 0.80774033069611 0\nvn -0.54946291446686 0.83551812171936 0\nvn -0.46531841158867 0.88514333963394 0\nvn -0.37656545639038 0.92638999223709 0\nvn -0.28441932797432 0.95870000123978 0\nvn -0.19015780091286 0.98175352811813 0\nvn -0.09506894648075 0.99547070264816 0\nvn -0.04742458090186 0.99887484312058 0\nvn -0.04742596670985 0.99887478351593 0\nvn -0.09506894648075 0.99547070264816 0\nvn -0.19015677273273 0.98175370693207 0\nvn -0.28441941738129 0.95869994163513 0\nvn -0.37656646966934 0.92638963460922 0\nvn -0.46531823277473 0.88514345884323 0\nvn -0.54946219921112 0.83551859855652 0\n# 56 normals\n\nvt 1 0 0\nvt 0.81572288274765 0 0\nvt 1 1 0\nvt 0 0.49765086174011 0\nvt 0 0.50234913825989 0\nvt 1 0.50234913825989 0\nvt 1 0.49765086174011 0\nvt 0 1 0\nvt 0.8346254825592 1 0\nvt 0.9365501999855 1 0\nvt 0.9365501999855 0 0\nvt 0.8346254825592 0 0\nvt 0.81572288274765 1 0\nvt 0.13769590854645 0 0\nvt 0.05349377542734 0 0\nvt 0.05349377542734 1 0\nvt 0.13769590854645 1 0\nvt 0.15374012291431 0 0\nvt 0.15374012291431 1 0\nvt 0.7953936457634 0 0\nvt 0.17420670390129 0 0\nvt 0.17420670390129 1 0\nvt 0.7953936457634 1 0\nvt 0.18427714705467 0 0\nvt 0.18427714705467 1 0\nvt 0 0 0\nvt -0.02524117194116 0 0\nvt -0.02524117194116 1 0\nvt -0.10397612303495 0 0\nvt -0.10397612303495 1 0\nvt -0.18271106481552 0 0\nvt -0.18271106481552 1 0\nvt -0.26144602894783 0 0\nvt -0.26144602894783 1 0\nvt -0.34018096327782 0 0\nvt -0.34018096327782 1 0\nvt -0.41891592741013 0 0\nvt -0.41891592741013 1 0\nvt -0.49765086174011 0 0\nvt -0.49765086174011 1 0\nvt 0.84625989198685 0 0\nvt 1.01670742034912 1 0\nvt 1.01670742034912 0 0\nvt 1.09686470031738 1 0\nvt 1.09686470031738 0 0\nvt 1.17702186107636 1 0\nvt 1.17702186107636 0 0\nvt 1.25717914104462 1 0\nvt 1.25717914104462 0 0\nvt 1.33733642101288 1 0\nvt 1.33733642101288 0 0\nvt 1.41749358177185 1 0\nvt 1.41749358177185 0 0\nvt 1.49765086174011 1 0\nvt 1.49765086174011 0 0\nvt 0.16899088025093 0 0\nvt 0.16899088025093 1 0\nvt 0.15374012291431 0.850741147995 0\nvt 0.30622574687004 0.35800528526306 0\nvt 0.45763164758682 0.31676697731018 0\nvt 0.60481113195419 0.25926399230957 0\nvt 0.74554884433746 0.18636214733124 0\nvt 0.87784332036972 0.09937715530396 0\nvt 0.15291278064251 0.38260698318481 0\nvt 0.84625989198685 0.850741147995 0\nvt 0.16377504169941 0 0\nvt 0.16377504169941 1 0\nvt 0.15855921804905 0 0\nvt 0.15855921804905 1 0\nvt 0.15334339439869 0 0\nvt 0.15334339439869 1 0\nvt 0.14812757074833 0 0\nvt 0.14812757074833 1 0\nvt 0.14291173219681 0 0\nvt 0.14291173219681 1 0\nvt 0.82902091741562 0 0\nvt 0.82902091741562 1 0\nvt 0.81572288274765 0.85174286365509 0\nvt 0.69377422332764 0.05365812778473 0\nvt 0.84708720445633 0.01328134536743 0\nvt 0.12215665727854 0.47812533378601 0\nvt 0.25445115566254 0.33536338806152 0\nvt 0.39518883824348 0.21571493148804 0\nvt 0.54236835241318 0.12133967876434 0\nvt 0.18427714705467 0.85174286365509 0\nvt 0.82341641187668 0 0\nvt 0.82341641187668 1 0\nvt 0.81781184673309 0 0\nvt 0.81781184673309 1 0\nvt 0.81220728158951 0 0\nvt 0.81220728158951 1 0\nvt 0.80660271644592 0 0\nvt 0.80660271644592 1 0\nvt 0.80099821090698 0 0\nvt 0.80099821090698 1 0\n# 95 texture coordinates\n\no 1\nusemtl escalator3\nf 4/2/2 53/2/1 57/8/1 58/26/1 59/3/1 60/1/1 61/26/1 62/1/1 55/3/1 39/26/1 52/3/1 51/1/1 50/3/1 49/3/1 48/2/1 47/1/1 38/8/1 91/2/1 87/8/1\nf 56/7/3 40/6/3 39/5/3 55/4/3\nf 3/24/2 92/3/4 90/3/4 37/8/4 41/1/4 42/3/4 43/26/4 44/3/4 45/1/4 46/8/4 40/3/4 56/1/4 68/3/4 67/3/4 66/3/4 65/3/4 64/1/4 63/1/4 54/8/4\nf 24/7/5 8/6/5 7/5/5 23/4/5\nf 91/12/6 38/11/6 37/10/6 90/9/6\nf 3/2/7 54/11/8 53/10/8 4/13/7\nf 73/17/6 6/16/6 5/15/6 72/14/6\nf 1/41/2 21/8/4 25/26/4 26/1/4 27/3/4 28/3/4 29/1/4 30/3/4 23/3/4 7/1/4 20/3/4 19/8/4 18/26/4 17/1/4 16/3/4 15/3/4 6/3/4 73/1/4 74/3/4\nf 2/19/7 22/16/8 21/15/8 1/18/7\nf 69/1/2 72/1/1 5/8/1 9/3/1 10/26/1 11/1/1 12/3/1 13/1/1 14/3/1 8/3/1 24/1/1 36/8/1 35/3/1 34/3/1 33/26/1 32/3/1 31/26/1 22/1/1 2/18/1\nf 89/23/9 71/22/9 70/21/9 88/20/9\nf 3/24/2 1/41/4 74/3/4 71/8/4 89/3/4 92/24/4\nf 4/13/7 2/19/7 1/18/7 3/2/7\nf 87/1/2 88/3/1 70/1/1 69/3/1 2/18/1 4/2/1\nf 6/16/10 15/28/11 9/27/11 5/15/10\nf 15/28/11 16/30/12 10/29/12 9/27/11\nf 16/30/12 17/32/13 11/31/13 10/29/12\nf 17/32/13 18/34/14 12/33/14 11/31/13\nf 18/34/14 19/36/15 13/35/15 12/33/14\nf 19/36/15 20/38/16 14/37/16 13/35/15\nf 20/38/16 7/40/17 8/39/17 14/37/16\nf 22/16/18 31/28/19 25/27/19 21/15/18\nf 31/28/19 32/30/20 26/29/20 25/27/19\nf 32/30/20 33/32/21 27/31/21 26/29/20\nf 33/32/21 34/34/22 28/33/22 27/31/21\nf 34/34/22 35/36/23 29/35/23 28/33/22\nf 35/36/23 36/38/24 30/37/24 29/35/23\nf 36/38/24 24/40/25 23/39/25 30/37/24\nf 38/11/26 47/43/27 41/42/27 37/10/26\nf 47/43/27 48/45/28 42/44/28 41/42/27\nf 48/45/28 49/47/29 43/46/29 42/44/28\nf 49/47/29 50/49/30 44/48/30 43/46/29\nf 50/49/30 51/51/31 45/50/31 44/48/30\nf 51/51/31 52/53/32 46/52/32 45/50/31\nf 52/53/32 39/55/33 40/54/33 46/52/32\nf 54/11/34 63/43/35 57/42/35 53/10/34\nf 63/43/35 64/45/36 58/44/36 57/42/35\nf 64/45/36 65/47/37 59/46/37 58/44/36\nf 65/47/37 66/49/38 60/48/38 59/46/37\nf 66/49/38 67/51/39 61/50/39 60/48/38\nf 67/51/39 68/53/40 62/52/40 61/50/39\nf 68/53/40 56/55/41 55/54/41 62/52/40\nf 71/22/42 81/57/43 80/56/43 70/21/42\nf 80/63/2 79/62/1 78/61/1 77/60/1 76/59/1 75/64/1 72/14/1 69/58/1 70/21/1\nf 74/65/2 73/17/4 86/64/4 85/59/4 84/60/4 83/61/4 82/62/4 81/63/4 71/22/4\nf 81/57/43 82/67/44 79/66/44 80/56/43\nf 82/67/44 83/69/45 78/68/45 79/66/44\nf 83/69/45 84/71/46 77/70/46 78/68/45\nf 84/71/46 85/73/47 76/72/47 77/70/46\nf 85/73/47 86/75/48 75/74/48 76/72/47\nf 86/75/48 73/17/49 72/14/49 75/74/48\nf 90/9/50 99/77/51 98/76/51 91/12/50\nf 87/78/1 91/12/1 98/80/1 97/79/1 96/84/1 95/83/1 94/82/1 93/81/1 88/20/1\nf 104/81/4 103/82/4 102/83/4 101/84/4 100/79/4 99/80/4 90/9/4 92/85/4 89/23/4\nf 99/77/51 100/87/52 97/86/52 98/76/51\nf 100/87/52 101/89/53 96/88/53 97/86/52\nf 101/89/53 102/91/54 95/90/54 96/88/53\nf 102/91/54 103/93/55 94/92/55 95/90/54\nf 103/93/55 104/95/56 93/94/56 94/92/55\nf 104/95/56 89/23/42 88/20/42 93/94/56\n\nv -14.80749797821045 -2.56458234786987 0.06820003688335\nv -14.80749797821045 -2.56458234786987 0.12007328867912\nv 13.05556869506836 -2.56458234786987 15.21544075012207\nv 13.05556869506836 -2.56458234786987 15.25115966796875\nv 13.05556869506836 2.8786358833313 15.21544075012207\nv 13.05556869506836 2.8786358833313 15.25115966796875\nv -14.80749797821045 2.8786358833313 0.06820003688335\nv -14.80749797821045 2.8786358833313 0.12007328867912\nv -10.3766450881958 2.8786358833313 0.12007328867912\nv -10.3766450881958 2.8786358833313 0.06820003688335\nv -10.3766450881958 -2.56458234786987 0.06820003688335\nv -10.3766450881958 -2.56458234786987 0.12007328867912\nv 8.33759689331055 2.8786358833313 15.25115966796875\nv 8.33759689331055 -2.56458234786987 15.25115966796875\nv 8.33759689331055 -2.56458234786987 15.21544075012207\nv 8.33759689331055 2.8786358833313 15.21544075012207\n# 16 vertices\n\nvn -0.33345052599907 0.94276762008667 0\nvn 0.33369651436806 -0.94268053770065 0\n# 2 normals\n\nvt 0.21950633823872 1 0\nvt 0.65553259849548 1 0\nvt 0.65553259849548 0 0\nvt 0.21950633823872 0 0\nvt 0.34446743130684 1 0\nvt 0.78049367666244 1 0\nvt 0.78049367666244 0 0\nvt 0.34446743130684 0 0\n# 8 texture coordinates\n\no 2\nusemtl escalator2\nf 115/99/1 119/98/1 118/97/1 116/96/1\nf 109/1/3 110/3/3 108/8/3 107/26/3\nf 120/103/4 114/102/4 113/101/4 117/100/4\nf 105/1/5 106/3/5 112/8/5 111/26/5\nf 116/99/57 118/98/57 117/97/57 113/96/57\nf 114/102/4 111/1/4 112/3/4 113/101/4\nf 115/96/58 105/8/8 111/26/8 114/99/58\nf 116/96/1 106/8/1 105/26/1 115/99/1\nf 113/96/57 112/8/6 106/26/6 116/99/57\nf 118/98/57 108/1/6 110/3/6 117/97/57\nf 119/98/1 107/1/1 108/3/1 118/97/1\nf 117/100/4 110/8/4 109/26/4 120/103/4\n\nusemtl escalator3\nf 114/99/58 120/98/58 119/97/58 115/96/58\nf 120/98/58 109/1/8 107/3/8 119/97/58\n\nv -10.38787460327148 -2.46053695678711 0.05786377936602\nv -10.38787460327148 -3.11886811256409 0.05786377936602\nv 8.37319946289062 -2.46053695678711 15.20390701293945\nv 8.37319946289062 -3.11886811256409 15.20390701293945\nv -15.11080265045166 -3.11886811256409 4.95054340362549\nv -15.11080265045166 -2.46053695678711 4.95054340362549\nv -17.63106727600098 -2.46053695678711 2.51569700241089\nv -17.63106727600098 -3.11886811256409 2.51569700241089\nv -15.63636589050293 -3.11886811256409 4.89701271057129\nv -16.17062377929688 -3.11886811256409 4.72479200363159\nv -16.67029190063477 -3.11886811256409 4.42842483520508\nv -17.09063148498535 -3.11886811256409 4.02233219146729\nv -17.39739608764648 -3.11886811256409 3.53959894180298\nv -17.57565879821777 -3.11886811256409 3.02344822883606\nv -15.63636589050293 -2.46053695678711 4.89701271057129\nv -16.17062377929688 -2.46053695678711 4.72479200363159\nv -16.67029190063477 -2.46053695678711 4.42842483520508\nv -17.09063148498535 -2.46053695678711 4.02233219146729\nv -17.39739608764648 -2.46053695678711 3.53959894180298\nv -17.57565879821777 -2.46053695678711 3.02344822883606\nv -15.11080265045166 -2.46053695678711 0.05786377936602\nv -15.11080265045166 -3.11886811256409 0.05786377936602\nv -17.63106727600098 -2.46053695678711 2.49271011352539\nv -17.63106727600098 -3.11886811256409 2.49271011352539\nv -15.63636589050293 -2.46053695678711 0.11139420419931\nv -16.17062377929688 -2.46053695678711 0.28361487388611\nv -16.67029190063477 -2.46053695678711 0.57998245954514\nv -17.09063148498535 -2.46053695678711 0.9860748052597\nv -17.39739608764648 -2.46053695678711 1.4688081741333\nv -17.57565879821777 -2.46053695678711 1.98495888710022\nv -15.63636589050293 -3.11886811256409 0.11139420419931\nv -16.17062377929688 -3.11886811256409 0.28361487388611\nv -16.67029190063477 -3.11886811256409 0.57998245954514\nv -17.09063148498535 -3.11886811256409 0.9860748052597\nv -17.39739608764648 -3.11886811256409 1.4688081741333\nv -17.57565879821777 -3.11886811256409 1.98495888710022\nv 13.17253494262695 -2.46053695678711 20.09658622741699\nv 13.17253494262695 -3.11886811256409 20.09658622741699\nv 15.69279861450195 -3.11886811256409 17.66173934936523\nv 15.69279861450195 -2.46053695678711 17.66173934936523\nv 13.69809818267822 -2.46053695678711 20.04305648803711\nv 14.23235607147217 -2.46053695678711 19.87083435058594\nv 14.73202419281006 -2.46053695678711 19.5744686126709\nv 15.15236282348633 -2.46053695678711 19.16837501525879\nv 15.45912742614746 -2.46053695678711 18.68564224243164\nv 15.63739013671875 -2.46053695678711 18.16949081420898\nv 13.69809818267822 -3.11886811256409 20.04305648803711\nv 14.23235607147217 -3.11886811256409 19.87083435058594\nv 14.73202419281006 -3.11886811256409 19.5744686126709\nv 15.15236282348633 -3.11886811256409 19.16837501525879\nv 15.45912742614746 -3.11886811256409 18.68564224243164\nv 15.63739013671875 -3.11886811256409 18.16949081420898\nv 13.17253494262695 -3.11886811256409 15.20390701293945\nv 13.17253494262695 -2.46053695678711 15.20390701293945\nv 15.69279861450195 -3.11886811256409 17.63875389099121\nv 15.69279861450195 -2.46053695678711 17.63875389099121\nv 13.69809818267822 -3.11886811256409 15.25743770599365\nv 14.23235607147217 -3.11886811256409 15.42965793609619\nv 14.73202419281006 -3.11886811256409 15.72602558135986\nv 15.15236282348633 -3.11886811256409 16.13211822509766\nv 15.45912742614746 -3.11886811256409 16.6148509979248\nv 15.63739013671875 -3.11886811256409 17.13100242614746\nv 13.69809818267822 -2.46053695678711 15.25743770599365\nv 14.23235607147217 -2.46053695678711 15.42965793609619\nv 14.73202419281006 -2.46053695678711 15.72602558135986\nv 15.15236282348633 -2.46053695678711 16.13211822509766\nv 15.45912742614746 -2.46053695678711 16.6148509979248\nv 15.63739013671875 -2.46053695678711 17.13100242614746\nv -10.38787460327148 -3.11886811256409 4.22026777267456\nv -9.80783653259277 -3.11886811256409 5.41881465911865\nv -9.80783653259277 -2.46053695678711 5.41881465911865\nv -11.14376926422119 -3.11886811256409 4.95054340362549\nv -11.14376926422119 -2.46053695678711 4.95054340362549\nv -10.38787460327148 -2.46053695678711 4.22026777267456\nv -10.93948745727539 -3.11886811256409 4.96024227142334\nv -10.7346715927124 -3.11886811256409 4.98972845077515\nv -10.53240394592285 -3.11886811256409 5.03915452957153\nv -10.33578205108643 -3.11886811256409 5.10807466506958\nv -10.14776611328125 -3.11886811256409 5.19545078277588\nv -9.97102928161621 -3.11886811256409 5.29970645904541\nv -9.97102928161621 -2.46053695678711 5.29970645904541\nv -10.14776611328125 -2.46053695678711 5.19545078277588\nv -10.33578205108643 -2.46053695678711 5.10807466506958\nv -10.53240394592285 -2.46053695678711 5.03915452957153\nv -10.7346715927124 -2.46053695678711 4.98972845077515\nv -10.93948745727539 -2.46053695678711 4.96024227142334\nv 8.37319946289062 -3.11886811256409 19.37121200561523\nv 7.79705476760864 -3.11886811256409 19.6314582824707\nv 7.79705476760864 -2.46053695678711 19.6314582824707\nv 9.12402153015137 -2.46053695678711 20.09658622741699\nv 9.12402153015137 -3.11886811256409 20.09658622741699\nv 8.37319946289062 -2.46053695678711 19.37121200561523\nv 7.95915222167969 -3.11886811256409 19.7497673034668\nv 8.13470268249512 -3.11886811256409 19.85332298278809\nv 8.32145690917969 -3.11886811256409 19.94011306762695\nv 8.51675891876221 -3.11886811256409 20.00856971740723\nv 8.71766948699951 -3.11886811256409 20.05766487121582\nv 8.92111110687256 -3.11886811256409 20.08695220947266\nv 8.92111110687256 -2.46053695678711 20.08695220947266\nv 8.71766948699951 -2.46053695678711 20.05766487121582\nv 8.51675891876221 -2.46053695678711 20.00856971740723\nv 8.32145690917969 -2.46053695678711 19.94011306762695\nv 8.13470268249512 -2.46053695678711 19.85332298278809\nv 7.95915222167969 -2.46053695678711 19.7497673034668\n# 104 vertices\n\n# 0 normal\n\n# 0 texture coordinate\n\no 3\nusemtl escalator3\nf 124/2/2 173/2/1 177/8/1 178/26/1 179/3/1 180/1/1 181/26/1 182/1/1 175/3/1 159/26/1 172/3/1 171/1/1 170/3/1 169/3/1 168/2/1 167/1/1 158/8/1 211/2/1 207/8/1\nf 176/7/3 160/6/3 159/5/3 175/4/3\nf 123/24/2 212/3/4 210/3/4 157/8/4 161/1/4 162/3/4 163/26/4 164/3/4 165/1/4 166/8/4 160/3/4 176/1/4 188/3/4 187/3/4 186/3/4 185/3/4 184/1/4 183/1/4 174/8/4\nf 144/7/5 128/6/5 127/5/5 143/4/5\nf 211/12/6 158/11/6 157/10/6 210/9/6\nf 123/2/7 174/11/8 173/10/8 124/13/7\nf 193/17/6 126/16/6 125/15/6 192/14/6\nf 121/41/2 141/8/4 145/26/4 146/1/4 147/3/4 148/3/4 149/1/4 150/3/4 143/3/4 127/1/4 140/3/4 139/8/4 138/26/4 137/1/4 136/3/4 135/3/4 126/3/4 193/1/4 194/3/4\nf 122/19/7 142/16/8 141/15/8 121/18/7\nf 189/1/2 192/1/1 125/8/1 129/3/1 130/26/1 131/1/1 132/3/1 133/1/1 134/3/1 128/3/1 144/1/1 156/8/1 155/3/1 154/3/1 153/26/1 152/3/1 151/26/1 142/1/1 122/18/1\nf 209/23/9 191/22/9 190/21/9 208/20/9\nf 123/24/2 121/41/4 194/3/4 191/8/4 209/3/4 212/24/4\nf 124/13/7 122/19/7 121/18/7 123/2/7\nf 207/1/2 208/3/1 190/1/1 189/3/1 122/18/1 124/2/1\nf 126/16/10 135/28/11 129/27/11 125/15/10\nf 135/28/11 136/30/12 130/29/12 129/27/11\nf 136/30/12 137/32/13 131/31/13 130/29/12\nf 137/32/13 138/34/14 132/33/14 131/31/13\nf 138/34/14 139/36/15 133/35/15 132/33/14\nf 139/36/15 140/38/16 134/37/16 133/35/15\nf 140/38/16 127/40/17 128/39/17 134/37/16\nf 142/16/18 151/28/19 145/27/19 141/15/18\nf 151/28/19 152/30/20 146/29/20 145/27/19\nf 152/30/20 153/32/21 147/31/21 146/29/20\nf 153/32/21 154/34/22 148/33/22 147/31/21\nf 154/34/22 155/36/23 149/35/23 148/33/22\nf 155/36/23 156/38/24 150/37/24 149/35/23\nf 156/38/24 144/40/25 143/39/25 150/37/24\nf 158/11/26 167/43/27 161/42/27 157/10/26\nf 167/43/27 168/45/28 162/44/28 161/42/27\nf 168/45/28 169/47/29 163/46/29 162/44/28\nf 169/47/29 170/49/30 164/48/30 163/46/29\nf 170/49/30 171/51/31 165/50/31 164/48/30\nf 171/51/31 172/53/32 166/52/32 165/50/31\nf 172/53/32 159/55/33 160/54/33 166/52/32\nf 174/11/34 183/43/35 177/42/35 173/10/34\nf 183/43/35 184/45/36 178/44/36 177/42/35\nf 184/45/36 185/47/37 179/46/37 178/44/36\nf 185/47/37 186/49/38 180/48/38 179/46/37\nf 186/49/38 187/51/39 181/50/39 180/48/38\nf 187/51/39 188/53/40 182/52/40 181/50/39\nf 188/53/40 176/55/41 175/54/41 182/52/40\nf 191/22/42 201/57/43 200/56/43 190/21/42\nf 200/63/2 199/62/1 198/61/1 197/60/1 196/59/1 195/64/1 192/14/1 189/58/1 190/21/1\nf 194/65/2 193/17/4 206/64/4 205/59/4 204/60/4 203/61/4 202/62/4 201/63/4 191/22/4\nf 201/57/43 202/67/44 199/66/44 200/56/43\nf 202/67/44 203/69/45 198/68/45 199/66/44\nf 203/69/45 204/71/46 197/70/46 198/68/45\nf 204/71/46 205/73/47 196/72/47 197/70/46\nf 205/73/47 206/75/48 195/74/48 196/72/47\nf 206/75/48 193/17/49 192/14/49 195/74/48\nf 210/9/50 219/77/51 218/76/51 211/12/50\nf 207/78/1 211/12/1 218/80/1 217/79/1 216/84/1 215/83/1 214/82/1 213/81/1 208/20/1\nf 224/81/4 223/82/4 222/83/4 221/84/4 220/79/4 219/80/4 210/9/4 212/85/4 209/23/4\nf 219/77/51 220/87/52 217/86/52 218/76/51\nf 220/87/52 221/89/53 216/88/53 217/86/52\nf 221/89/53 222/91/54 215/90/54 216/88/53\nf 222/91/54 223/93/55 214/92/55 215/90/54\nf 223/93/55 224/95/56 213/94/56 214/92/55\nf 224/95/56 209/23/42 208/20/42 213/94/56\n\n# 0 vertex\n\n# 0 normal\n\n# 0 texture coordinate\n\no 1_1\nusemtl escalator3\nf 4/2/2 53/2/1 57/8/1 58/26/1 59/3/1 60/1/1 61/26/1 62/1/1 55/3/1 39/26/1 52/3/1 51/1/1 50/3/1 49/3/1 48/2/1 47/1/1 38/8/1 91/2/1 87/8/1\nf 56/7/3 40/6/3 39/5/3 55/4/3\nf 3/24/2 92/3/4 90/3/4 37/8/4 41/1/4 42/3/4 43/26/4 44/3/4 45/1/4 46/8/4 40/3/4 56/1/4 68/3/4 67/3/4 66/3/4 65/3/4 64/1/4 63/1/4 54/8/4\nf 24/7/5 8/6/5 7/5/5 23/4/5\nf 91/12/6 38/11/6 37/10/6 90/9/6\nf 3/2/7 54/11/8 53/10/8 4/13/7\nf 73/17/6 6/16/6 5/15/6 72/14/6\nf 1/41/2 21/8/4 25/26/4 26/1/4 27/3/4 28/3/4 29/1/4 30/3/4 23/3/4 7/1/4 20/3/4 19/8/4 18/26/4 17/1/4 16/3/4 15/3/4 6/3/4 73/1/4 74/3/4\nf 2/19/7 22/16/8 21/15/8 1/18/7\nf 69/1/2 72/1/1 5/8/1 9/3/1 10/26/1 11/1/1 12/3/1 13/1/1 14/3/1 8/3/1 24/1/1 36/8/1 35/3/1 34/3/1 33/26/1 32/3/1 31/26/1 22/1/1 2/18/1\nf 89/23/9 71/22/9 70/21/9 88/20/9\nf 3/24/2 1/41/4 74/3/4 71/8/4 89/3/4 92/24/4\nf 4/13/7 2/19/7 1/18/7 3/2/7\nf 87/1/2 88/3/1 70/1/1 69/3/1 2/18/1 4/2/1\nf 6/16/10 15/28/11 9/27/11 5/15/10\nf 15/28/11 16/30/12 10/29/12 9/27/11\nf 16/30/12 17/32/13 11/31/13 10/29/12\nf 17/32/13 18/34/14 12/33/14 11/31/13\nf 18/34/14 19/36/15 13/35/15 12/33/14\nf 19/36/15 20/38/16 14/37/16 13/35/15\nf 20/38/16 7/40/17 8/39/17 14/37/16\nf 22/16/18 31/28/19 25/27/19 21/15/18\nf 31/28/19 32/30/20 26/29/20 25/27/19\nf 32/30/20 33/32/21 27/31/21 26/29/20\nf 33/32/21 34/34/22 28/33/22 27/31/21\nf 34/34/22 35/36/23 29/35/23 28/33/22\nf 35/36/23 36/38/24 30/37/24 29/35/23\nf 36/38/24 24/40/25 23/39/25 30/37/24\nf 38/11/26 47/43/27 41/42/27 37/10/26\nf 47/43/27 48/45/28 42/44/28 41/42/27\nf 48/45/28 49/47/29 43/46/29 42/44/28\nf 49/47/29 50/49/30 44/48/30 43/46/29\nf 50/49/30 51/51/31 45/50/31 44/48/30\nf 51/51/31 52/53/32 46/52/32 45/50/31\nf 52/53/32 39/55/33 40/54/33 46/52/32\nf 54/11/34 63/43/35 57/42/35 53/10/34\nf 63/43/35 64/45/36 58/44/36 57/42/35\nf 64/45/36 65/47/37 59/46/37 58/44/36\nf 65/47/37 66/49/38 60/48/38 59/46/37\nf 66/49/38 67/51/39 61/50/39 60/48/38\nf 67/51/39 68/53/40 62/52/40 61/50/39\nf 68/53/40 56/55/41 55/54/41 62/52/40\nf 71/22/42 81/57/43 80/56/43 70/21/42\nf 80/63/2 79/62/1 78/61/1 77/60/1 76/59/1 75/64/1 72/14/1 69/58/1 70/21/1\nf 74/65/2 73/17/4 86/64/4 85/59/4 84/60/4 83/61/4 82/62/4 81/63/4 71/22/4\nf 81/57/43 82/67/44 79/66/44 80/56/43\nf 82/67/44 83/69/45 78/68/45 79/66/44\nf 83/69/45 84/71/46 77/70/46 78/68/45\nf 84/71/46 85/73/47 76/72/47 77/70/46\nf 85/73/47 86/75/48 75/74/48 76/72/47\nf 86/75/48 73/17/49 72/14/49 75/74/48\nf 90/9/50 99/77/51 98/76/51 91/12/50\nf 87/78/1 91/12/1 98/80/1 97/79/1 96/84/1 95/83/1 94/82/1 93/81/1 88/20/1\nf 104/81/4 103/82/4 102/83/4 101/84/4 100/79/4 99/80/4 90/9/4 92/85/4 89/23/4\nf 99/77/51 100/87/52 97/86/52 98/76/51\nf 100/87/52 101/89/53 96/88/53 97/86/52\nf 101/89/53 102/91/54 95/90/54 96/88/53\nf 102/91/54 103/93/55 94/92/55 95/90/54\nf 103/93/55 104/95/56 93/94/56 94/92/55\nf 104/95/56 89/23/42 88/20/42 93/94/56\n\n# 0 vertex\n\n# 0 normal\n\n# 0 texture coordinate\n\no 2_1\nusemtl escalator2\nf 115/99/1 119/98/1 118/97/1 116/96/1\nf 109/1/3 110/3/3 108/8/3 107/26/3\nf 120/103/4 114/102/4 113/101/4 117/100/4\nf 105/1/5 106/3/5 112/8/5 111/26/5\nf 116/99/57 118/98/57 117/97/57 113/96/57\nf 114/102/4 111/1/4 112/3/4 113/101/4\nf 115/96/58 105/8/8 111/26/8 114/99/58\nf 116/96/1 106/8/1 105/26/1 115/99/1\nf 113/96/57 112/8/6 106/26/6 116/99/57\nf 118/98/57 108/1/6 110/3/6 117/97/57\nf 119/98/1 107/1/1 108/3/1 118/97/1\nf 117/100/4 110/8/4 109/26/4 120/103/4\n\nusemtl escalator3\nf 114/99/58 120/98/58 119/97/58 115/96/58\nf 120/98/58 109/1/8 107/3/8 119/97/58\n\n# 0 vertex\n\n# 0 normal\n\n# 0 texture coordinate\n\no 3_1\nusemtl escalator3\nf 124/2/2 173/2/1 177/8/1 178/26/1 179/3/1 180/1/1 181/26/1 182/1/1 175/3/1 159/26/1 172/3/1 171/1/1 170/3/1 169/3/1 168/2/1 167/1/1 158/8/1 211/2/1 207/8/1\nf 176/7/3 160/6/3 159/5/3 175/4/3\nf 123/24/2 212/3/4 210/3/4 157/8/4 161/1/4 162/3/4 163/26/4 164/3/4 165/1/4 166/8/4 160/3/4 176/1/4 188/3/4 187/3/4 186/3/4 185/3/4 184/1/4 183/1/4 174/8/4\nf 144/7/5 128/6/5 127/5/5 143/4/5\nf 211/12/6 158/11/6 157/10/6 210/9/6\nf 123/2/7 174/11/8 173/10/8 124/13/7\nf 193/17/6 126/16/6 125/15/6 192/14/6\nf 121/41/2 141/8/4 145/26/4 146/1/4 147/3/4 148/3/4 149/1/4 150/3/4 143/3/4 127/1/4 140/3/4 139/8/4 138/26/4 137/1/4 136/3/4 135/3/4 126/3/4 193/1/4 194/3/4\nf 122/19/7 142/16/8 141/15/8 121/18/7\nf 189/1/2 192/1/1 125/8/1 129/3/1 130/26/1 131/1/1 132/3/1 133/1/1 134/3/1 128/3/1 144/1/1 156/8/1 155/3/1 154/3/1 153/26/1 152/3/1 151/26/1 142/1/1 122/18/1\nf 209/23/9 191/22/9 190/21/9 208/20/9\nf 123/24/2 121/41/4 194/3/4 191/8/4 209/3/4 212/24/4\nf 124/13/7 122/19/7 121/18/7 123/2/7\nf 207/1/2 208/3/1 190/1/1 189/3/1 122/18/1 124/2/1\nf 126/16/10 135/28/11 129/27/11 125/15/10\nf 135/28/11 136/30/12 130/29/12 129/27/11\nf 136/30/12 137/32/13 131/31/13 130/29/12\nf 137/32/13 138/34/14 132/33/14 131/31/13\nf 138/34/14 139/36/15 133/35/15 132/33/14\nf 139/36/15 140/38/16 134/37/16 133/35/15\nf 140/38/16 127/40/17 128/39/17 134/37/16\nf 142/16/18 151/28/19 145/27/19 141/15/18\nf 151/28/19 152/30/20 146/29/20 145/27/19\nf 152/30/20 153/32/21 147/31/21 146/29/20\nf 153/32/21 154/34/22 148/33/22 147/31/21\nf 154/34/22 155/36/23 149/35/23 148/33/22\nf 155/36/23 156/38/24 150/37/24 149/35/23\nf 156/38/24 144/40/25 143/39/25 150/37/24\nf 158/11/26 167/43/27 161/42/27 157/10/26\nf 167/43/27 168/45/28 162/44/28 161/42/27\nf 168/45/28 169/47/29 163/46/29 162/44/28\nf 169/47/29 170/49/30 164/48/30 163/46/29\nf 170/49/30 171/51/31 165/50/31 164/48/30\nf 171/51/31 172/53/32 166/52/32 165/50/31\nf 172/53/32 159/55/33 160/54/33 166/52/32\nf 174/11/34 183/43/35 177/42/35 173/10/34\nf 183/43/35 184/45/36 178/44/36 177/42/35\nf 184/45/36 185/47/37 179/46/37 178/44/36\nf 185/47/37 186/49/38 180/48/38 179/46/37\nf 186/49/38 187/51/39 181/50/39 180/48/38\nf 187/51/39 188/53/40 182/52/40 181/50/39\nf 188/53/40 176/55/41 175/54/41 182/52/40\nf 191/22/42 201/57/43 200/56/43 190/21/42\nf 200/63/2 199/62/1 198/61/1 197/60/1 196/59/1 195/64/1 192/14/1 189/58/1 190/21/1\nf 194/65/2 193/17/4 206/64/4 205/59/4 204/60/4 203/61/4 202/62/4 201/63/4 191/22/4\nf 201/57/43 202/67/44 199/66/44 200/56/43\nf 202/67/44 203/69/45 198/68/45 199/66/44\nf 203/69/45 204/71/46 197/70/46 198/68/45\nf 204/71/46 205/73/47 196/72/47 197/70/46\nf 205/73/47 206/75/48 195/74/48 196/72/47\nf 206/75/48 193/17/49 192/14/49 195/74/48\nf 210/9/50 219/77/51 218/76/51 211/12/50\nf 207/78/1 211/12/1 218/80/1 217/79/1 216/84/1 215/83/1 214/82/1 213/81/1 208/20/1\nf 224/81/4 223/82/4 222/83/4 221/84/4 220/79/4 219/80/4 210/9/4 212/85/4 209/23/4\nf 219/77/51 220/87/52 217/86/52 218/76/51\nf 220/87/52 221/89/53 216/88/53 217/86/52\nf 221/89/53 222/91/54 215/90/54 216/88/53\nf 222/91/54 223/93/55 214/92/55 215/90/54\nf 223/93/55 224/95/56 213/94/56 214/92/55\nf 224/95/56 209/23/42 208/20/42 213/94/56\n\n"
},
function(t, e, n) {
	var i = function(t) {
		"use strict";
		function e(t, e, n, o) {
			var r = e && e.prototype instanceof i ? e: i,
			a = Object.create(r.prototype),
			s = new d(o || []);
			return a._invoke = l(t, n, s),
			a
		}
		function n(t, e, n) {
			try {
				return {
					type: "normal",
					arg: t.call(e, n)
				}
			} catch(t) {
				return {
					type: "throw",
					arg: t
				}
			}
		}
		function i() {}
		function o() {}
		function r() {}
		function a(t) { ["next", "throw", "return"].forEach(function(e) {
				t[e] = function(t) {
					return this._invoke(e, t)
				}
			})
		}
		function s(t, e) {
			function i(o, r, a, s) {
				var l = n(t[o], t, r);
				if ("throw" !== l.type) {
					var u = l.arg,
					c = u.value;
					return c && "object" == typeof c && m.call(c, "__await") ? e.resolve(c.__await).then(function(t) {
						i("next", t, a, s)
					},
					function(t) {
						i("throw", t, a, s)
					}) : e.resolve(c).then(function(t) {
						u.value = t,
						a(u)
					},
					function(t) {
						return i("throw", t, a, s)
					})
				}
				s(l.arg)
			}
			function o(t, n) {
				function o() {
					return new e(function(e, o) {
						i(t, n, e, o)
					})
				}
				return r = r ? r.then(o, o) : o()
			}
			var r;
			this._invoke = o
		}
		function l(t, e, i) {
			var o = S;
			return function(r, a) {
				if (o === E) throw new Error("Generator is already running");
				if (o === T) {
					if ("throw" === r) throw a;
					return v()
				}
				for (i.method = r, i.arg = a;;) {
					var s = i.delegate;
					if (s) {
						var l = u(s, i);
						if (l) {
							if (l === A) continue;
							return l
						}
					}
					if ("next" === i.method) i.sent = i._sent = i.arg;
					else if ("throw" === i.method) {
						if (o === S) throw o = T,
						i.arg;
						i.dispatchException(i.arg)
					} else "return" === i.method && i.abrupt("return", i.arg);
					o = E;
					var c = n(t, e, i);
					if ("normal" === c.type) {
						if (o = i.done ? T: w, c.arg === A) continue;
						return {
							value: c.arg,
							done: i.done
						}
					}
					"throw" === c.type && (o = T, i.method = "throw", i.arg = c.arg)
				}
			}
		}
		function u(t, e) {
			var i = t.iterator[e.method];
			if (i === p) {
				if (e.delegate = null, "throw" === e.method) {
					if (t.iterator.
					return && (e.method = "return", e.arg = p, u(t, e), "throw" === e.method)) return A;
					e.method = "throw",
					e.arg = new TypeError("The iterator does not provide a 'throw' method")
				}
				return A
			}
			var o = n(i, t.iterator, e.arg);
			if ("throw" === o.type) return e.method = "throw",
			e.arg = o.arg,
			e.delegate = null,
			A;
			var r = o.arg;
			return r ? r.done ? (e[t.resultName] = r.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = p), e.delegate = null, A) : r: (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, A)
		}
		function c(t) {
			var e = {
				tryLoc: t[0]
			};
			1 in t && (e.catchLoc = t[1]),
			2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]),
			this.tryEntries.push(e)
		}
		function f(t) {
			var e = t.completion || {};
			e.type = "normal",
			delete e.arg,
			t.completion = e
		}
		function d(t) {
			this.tryEntries = [{
				tryLoc: "root"
			}],
			t.forEach(c, this),
			this.reset(!0)
		}
		function h(t) {
			if (t) {
				var e = t[y];
				if (e) return e.call(t);
				if ("function" == typeof t.next) return t;
				if (!isNaN(t.length)) {
					var n = -1,
					i = function e() {
						for (; ++n < t.length;) if (m.call(t, n)) return e.value = t[n],
						e.done = !1,
						e;
						return e.value = p,
						e.done = !0,
						e
					};
					return i.next = i
				}
			}
			return {
				next: v
			}
		}
		function v() {
			return {
				value: p,
				done: !0
			}
		}
		var p, _ = Object.prototype,
		m = _.hasOwnProperty,
		g = "function" == typeof Symbol ? Symbol: {},
		y = g.iterator || "@@iterator",
		x = g.asyncIterator || "@@asyncIterator",
		b = g.toStringTag || "@@toStringTag";
		t.wrap = e;
		var S = "suspendedStart",
		w = "suspendedYield",
		E = "executing",
		T = "completed",
		A = {},
		P = {};
		P[y] = function() {
			return this
		};
		var I = Object.getPrototypeOf,
		k = I && I(I(h([])));
		k && k !== _ && m.call(k, y) && (P = k);
		var L = r.prototype = i.prototype = Object.create(P);
		return o.prototype = L.constructor = r,
		r.constructor = o,
		r[b] = o.displayName = "GeneratorFunction",
		t.isGeneratorFunction = function(t) {
			var e = "function" == typeof t && t.constructor;
			return !! e && (e === o || "GeneratorFunction" === (e.displayName || e.name))
		},
		t.mark = function(t) {
			return Object.setPrototypeOf ? Object.setPrototypeOf(t, r) : (t.__proto__ = r, b in t || (t[b] = "GeneratorFunction")),
			t.prototype = Object.create(L),
			t
		},
		t.awrap = function(t) {
			return {
				__await: t
			}
		},
		a(s.prototype),
		s.prototype[x] = function() {
			return this
		},
		t.AsyncIterator = s,
		t.async = function(n, i, o, r, a) {
			void 0 === a && (a = Promise);
			var l = new s(e(n, i, o, r), a);
			return t.isGeneratorFunction(i) ? l: l.next().then(function(t) {
				return t.done ? t.value: l.next()
			})
		},
		a(L),
		L[b] = "Generator",
		L[y] = function() {
			return this
		},
		L.toString = function() {
			return "[object Generator]"
		},
		t.keys = function(t) {
			var e = [];
			for (var n in t) e.push(n);
			return e.reverse(),
			function n() {
				for (; e.length;) {
					var i = e.pop();
					if (i in t) return n.value = i,
					n.done = !1,
					n
				}
				return n.done = !0,
				n
			}
		},
		t.values = h,
		d.prototype = {
			constructor: d,
			reset: function(t) {
				if (this.prev = 0, this.next = 0, this.sent = this._sent = p, this.done = !1, this.delegate = null, this.method = "next", this.arg = p, this.tryEntries.forEach(f), !t) for (var e in this)"t" === e.charAt(0) && m.call(this, e) && !isNaN( + e.slice(1)) && (this[e] = p)
			},
			stop: function() {
				this.done = !0;
				var t = this.tryEntries[0],
				e = t.completion;
				if ("throw" === e.type) throw e.arg;
				return this.rval
			},
			dispatchException: function(t) {
				function e(e, i) {
					return r.type = "throw",
					r.arg = t,
					n.next = e,
					i && (n.method = "next", n.arg = p),
					!!i
				}
				if (this.done) throw t;
				for (var n = this,
				i = this.tryEntries.length - 1; i >= 0; --i) {
					var o = this.tryEntries[i],
					r = o.completion;
					if ("root" === o.tryLoc) return e("end");
					if (o.tryLoc <= this.prev) {
						var a = m.call(o, "catchLoc"),
						s = m.call(o, "finallyLoc");
						if (a && s) {
							if (this.prev < o.catchLoc) return e(o.catchLoc, !0);
							if (this.prev < o.finallyLoc) return e(o.finallyLoc)
						} else if (a) {
							if (this.prev < o.catchLoc) return e(o.catchLoc, !0)
						} else {
							if (!s) throw new Error("try statement without catch or finally");
							if (this.prev < o.finallyLoc) return e(o.finallyLoc)
						}
					}
				}
			},
			abrupt: function(t, e) {
				for (var n = this.tryEntries.length - 1; n >= 0; --n) {
					var i = this.tryEntries[n];
					if (i.tryLoc <= this.prev && m.call(i, "finallyLoc") && this.prev < i.finallyLoc) {
						var o = i;
						break
					}
				}
				o && ("break" === t || "continue" === t) && o.tryLoc <= e && e <= o.finallyLoc && (o = null);
				var r = o ? o.completion: {};
				return r.type = t,
				r.arg = e,
				o ? (this.method = "next", this.next = o.finallyLoc, A) : this.complete(r)
			},
			complete: function(t, e) {
				if ("throw" === t.type) throw t.arg;
				return "break" === t.type || "continue" === t.type ? this.next = t.arg: "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e),
				A
			},
			finish: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc),
					f(n),
					A
				}
			},
			catch: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.tryLoc === t) {
						var i = n.completion;
						if ("throw" === i.type) {
							var o = i.arg;
							f(n)
						}
						return o
					}
				}
				throw new Error("illegal catch attempt")
			},
			delegateYield: function(t, e, n) {
				return this.delegate = {
					iterator: h(t),
					resultName: e,
					nextLoc: n
				},
				"next" === this.method && (this.arg = p),
				A
			}
		},
		t
	} (t.exports);
	try {
		regeneratorRuntime = i
	} catch(t) {
		Function("r", "regeneratorRuntime = r")(i)
	}
},
function(t, e) {
	t.exports = '<div class="floor-control indoor-control">  <img class="arr-top" src="">  <img class="arr-bottom" src="">  <div class="floor-control-wrapper">    <ul class="floor-control-list transition-animate">      <%Array.prototype.forEach.call(obj.floors, function(fl, idx){%>      <li class="floor-control-item marked-pseudo-background-color" data-index="<%= idx%>" data-floor="<%= fl%>"><%= fl%></li>      <%});%>    </ul>  </div></div>'
},
function(t, e) {
	t.exports = '<div class="rotate-circle">\t\t<div class="compass-circle-background"></div>\t\t<div class="compass-circle">\t\t\t<img class="compass-img" src=""/>\t\t</div>\t\t<div class="rotate-panel">\t\t\t<div class="rotate-left clickable-rotate-left">\t\t\t\t<img class="rotate-left-img" src=""/>\t\t\t</div>\t\t\t<div class="rotate-top  clickable-rotate-top">\t\t\t\t<img class="rotate-top-img" src=""/>\t\t\t</div>\t\t\t<div class="rotate-right  clickable-rotate-right">\t\t\t\t<img class="rotate-right-img" src=""/>\t\t\t</div>\t\t\t<div class="rotate-bottom  clickable-rotate-bottom">\t\t\t\t<img class="rotate-bottom-img" src=""/>\t\t\t</div>\t\t</div>\t</div>'
},
function(t, e) {
	t.exports = '<div class="tmap-zoom-control">    <div class="tmap-zoom-content">        <div class="tmap-zoom-in"><img class="tmap-zoom-in-image" src=""></img></div>        <div class="tmap-zoom-number" style="display:none"></div>        <div class="tmap-zoom-spliter" style="display:block"></div>        <div class="tmap-zoom-out"><img class="tmap-zoom-out-image" src=""></img></div>    </div></div>'
},
,
function(t, e, n) {
	var i = n(1007);
	"string" == typeof i && (i = [[t.i, i, ""]]);
	n(275)(i, {});
	i.locals && (t.exports = i.locals)
},
function(t, e, n) {
	var i = n(1008);
	"string" == typeof i && (i = [[t.i, i, ""]]);
	n(275)(i, {});
	i.locals && (t.exports = i.locals)
},
function(t, e, n) {
	var i = n(1009);
	"string" == typeof i && (i = [[t.i, i, ""]]);
	n(275)(i, {});
	i.locals && (t.exports = i.locals)
},
, , ,
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAAgCAYAAAD+Fz2gAAABmElEQVR4AeTVMYrqUBjH0VtZzizBFbiEWYRby7osRRVEFE1SCqqJQvQ8biOveLxp7oXJ5JRJuh//LyElfKI2XDU+wk+GqeGahj5AYXiK0BcYYWY4ZhiFPsEYlUzu97vX6+U78ZvMSoxDH2GCk8SaprFcLu12u/8GOB6Pttut5/MpkxMmoc/whVZCj8fDer02n8/t93v/UpZlfB9DattWBg2+wlv/I51Sn7jVahUjOBwO/lZVVXxusVi43W4yOPU2zjfnrpJQXEZcSIwRz1lU13XuOCUm4TfCGLMc/6MYZbPZvONcr1cZzDAOvxlGKKQTlxKjvONcLhcZFBiFocAUtUTiYuKSzuezxGpMwxDhEwU6CXRdJ6EOBT7C0OFPe3RMwyAUBkD4X3GBBFhYkYMJEhyghPUJwAIbEwYw8IY2vaFbhybta8Nwl3wKrkHCVUpo4iVHtVhwx7+7YUEbb3NUjRE7ft2OEXV8lLM6TFiR8W0ZKyZ0UTRnVegxYEbChgMn8tOJAxsSZgzoUUXBzMzMzMzMzMzMzMzsAXLnMf6Zx2aAAAAAAElFTkSuQmCC"
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGgAAAAgCAYAAAD+Fz2gAAACU0lEQVR4AezRIQ4AIBADQeD4/5uxDQnucDPJyqoOLgAAAADAbI0vh6yoov2ostg2HeaYPOO0Xw6wcwRRGK8dlDGLGHUbFrFRxGZju4pdI3ZSxmlY27bPWOTWm7v3db5gk2O18z9+Z+zM+94vb2berGvXri1yHGdHGIb74jg+Wq/Xr4jIK/X4DqCqHhEffM/v+Bv/w//yGnXtdo7BsboC+ztNoNRqta1RFB0WkZtMPv5fEcfimBz7z2FNwCRQMpnMKpXAAyLyEZrFOTgX52yB1QpqAqZarW5US9Jl5g1Tr4aa+xJjGHdQrUvZrEqlsoF7BQZEjIUxMbbWpW+squbBgwdL4zg+yZxg8FRXsZ24e/fukjGopvblzHGc3QAKSFFhGEKDCoy107I3knDOnj27gFWDlGVZFt68eQPDMKBDjJmxjxakZjizPn/+vEpEniBl2bYNwnn9+jX4ME0TOtRoNJ7SA720QBp+OPl8fp2I5JGyVC+TwPnx4wf4ys+sKB2iB3oZckjNcKrV6g4AqWfMcZwETrlchhKXuAQSK0uTrGKxuFN5m90EaQjhzKYRAAFSluu6ePv2LQhDzdH0W7VanQpI/hBCaq4cteSs11E5vu8ncAqFAjqpUqkkkDzP01ZJ9Dgky10znOfPn68RkQI0KIoifPz4EblcDr3EZS+TyUCnuCfR64BDaoZz8ODBRTzxaO72MSiiV3oeXEjNTeicMAxPYcxEz/Te1CcNWPUwsNnqFLUXYyp6Zw6YiyQvg7S0Xb58eYWIFDGmovfz588vT3Op+wWhHSH6nVaMlQAAAABJRU5ErkJggg=="
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAAoCAYAAACM/rhtAAACnklEQVR4AWJwL/ABNGcOPnMFURSv7ai2+Vc07KyS2oxq22ZcI6gdVGGtsLaj6rMxvaf5brL69OYskpzsXZ33m7mjd58n5RgzNNPnWys6l+Hz3ZPXTxnGFIj+iJ7LZ7dEJ0Qzc4PBDl6vU6sf548c2TXTmF2ijwJha6Fy0WP53zI7cmRrOiBMpYe2V/SQddRv6dUFds6cxhRAafVYMf0Fc7K+iPdwz4DW2rpishlmCVRpls83r7aASGlTad15mCRDcq2jdtashjUGxMwMM0gaZI0A5Ycrkw0XpvlVAmYZM0J+VObR/E2Gz3cKQux1TEZPnIhxJz/44bX1WJDVC7HL7MYSFAMoXyx1HENz1AuxixfWyQjADL+/jZj+dTRdoqaIXRdz3XG0xSucZ6HPt1YBERNm9TJ4aXqfOBqiB7eGDZdthBn9+D8gThrYzAk9uE8BERMAy8GG9M4imEEHFBAxwxNsGNAnGGbwUUCmJ8xukczOKiBikuctpOM5KcVXFRAxyfM5zP6wWquArKyADYAFJLM7YT14l+RZgCXhE8nsqQIiZniCDem4R0rxCwVETPK8xzycflBAxAxPsDH2TdXvrFCoD4SYBLgWW90wDiBfKA4gJYSJwheKA+HHrT0E01fZgcAACDEBcFf4gbW7fFjoYpjl882FF4R7Xdf1D2UWBdQ073Zs8SW7bl09CLHj5NgOpkjAkSPbOR77oXeQo8ev8AKTAur6NSUNJsfY6m7c96YQcHO1lQXp3voZPt/1FPTceRSsalY8Gj++VTIhsaWhcFCr8ht6MgnpLkMtyKmAiYkjJhkJgPuBWhCjBKxL0B7XxRyqWMqWIqX0Ijp2HIB62LvLRU9QwUCZJWFV/nDhFBTxGMKYz/EeQ+De1uUxxD/5bqFw0Zjc3QAAAABJRU5ErkJggg=="
},
function(t, e) {
	t.exports = "data:image/png;base64, "
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAoCAYAAAD32nqhAAADEklEQVR4AbWWNZgkZRCG3+rZOV3D3Z3za9xJcHc6wXsXi4jIyNAYmfw5C3HIcc7dMnzd/f/Y6+efembOtdrtra++qhVOaAxedvOH/Rdc+yEHiYQDhObd0RgU2oPUvuf8iAHDU5OZiUYza+zr68+OGADWJkAIRNsRAYYW3JkKloIwQGhp71kL0sNXEMj9PCJCID8sgO54sjExMiQMQyhCyHTavMZDAsZ6+zJBI+CfAkhq7BHZYZSgXBJgmIFEEWZGUMgPChi//v5UkJpF62okFFAp7Wi5Mj2wghByJCRBhFiVYMR7rsIBbp6CMsxT4qEIEghl/7mZNYCJkTE3D2K2ahesrqONNjqa7QPAQm61rkleguGqCq6mQl4H0C2PpIhUqslW86GIUL8m7ZhzfuqAALl/6CfyBYwI985MTZEXAD35ZCNmGW68sHKZ8lvtzP3xC5p+/YZZb78J5YZojbe0MLOBTrIgNWIxuxkNbzxP+SX3iVmvvwBBDL3zEZIohgoaJ7u7s0SQu+g4Aw0P3c3eMeOpB/Ekvidv2PbJe0xJKAQEKIirW1soUx+TJ7ey+/tVSBDiuyZIlCQVdyaiu3v72Du6untRVOmjbuGzhNa5y8xsMBqPBP/818m/HV1MTExObxP8/W8Hf/7dUVsBZslg69wZyw1g09ZdnwUpV4iNCyJIQCE3HoUkQMU5ZpWbrl3YlgCUoIKo7bPLrJts7xQkCRUfpKuuunQ1xmqA+mkuQF47ojreq29IF66OAE9RqPCBQhQfSxgFyBVYzF4HKJ3SvAzToMsUHq4GEAw2zSot2wcw7/TTBw1bhvC5rw2LTDMtmzdv3mA9wK+SStVA7asgqiq7/H0AC6fNNNnqav340FQ7k0ybd9Xqg/1WLgySaooGN1JE8w4GKNG6LEkY9F9p/iveps1j2T4J2TdYu2H7Z1LIg+QKBJXrlsxrO6gCV1EuVTDz+iUolZIKRxJrNmz9/fd1W/Tb2s2aPv5+xP8fJFCxqMKwyhEDyqVTlpkxCBqcVT5lGUcTqzdu+2D1+i0fcCLjf0XElF4DYemFAAAAAElFTkSuQmCC"
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAICAYAAADwdn+XAAAASklEQVR4AWPAB9JKWqNAmIEckFHS2pBW1PofhEFssjUjG0KGZkxDyNGMaQhhzYQNwQhtkAQpGCV20ovbQtKL2r4RqxmkFqQHpBcA3gqccd9+wbMAAAAASUVORK5CYII="
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAiCAYAAABr0zihAAABkUlEQVR4AWKgCsgs61RPK2p9llbVLwnopBwe5AiiMB7nGtu2nXNs28kwLMQY1atYp+SWY2xbf8ga17V7G4t+vdtVsztofr+Hr5AWECDwwASMAJGX9GJ6s0+QQJkDQGYsZnRSA2ZUR+z8QwRW+4qP3b/f3Yxa4AYCVLz3BYIUNiOx+Q9SURs4c3WYT/3wyAs4ECRbiK3mzBeFrQGWxbHYry44OoP5XiFqnstNnvrlQxVgZv/qrT9fAZh/qAvw66NtsWEYHU37KputlN9CTMSCBD64+zKv4zZw4rzoj6IxkULZTVutHkxgkv0gQuVc1CCDoHI6mORG1CCHlRpAnMAZxBQ1QIDgDNfHKgGrZjcQ4ddnqDMwsRuPKizWZJAbkK1cLlUD9OoyBBC5RQlECYzzzJu4ErCnNhHFzYB4iwQ+1v5vAojI0QMU7rvLOnYO+mqshQO4D7lDCRw7fW2IPefb1AcVf1zbS2X4rOyp2yLDqCwGh/TbJBXVrvF4l45b71zACy0QIbeGmsInZnlP0Y7X3k89HCaJpH6+oPwAAAAASUVORK5CYII="
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABdSURBVHgB7dTBCQAhDATA9bgO7grQGuy/BGvQBqxBMS/B1woiYgbyCcIiLAHUWT4fZQgv8xgGFqQHi2nA/gAzbFoNJ9oiChJycP1q+Q84vy8yBG3RBQHcNW09V8epFRQL9pWRYd8AAAAASUVORK5CYII="
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAA4SURBVHgB7cixEQAQEEXBTwsaoAb9l6AGGlADQjMCM5dc8jZcCQC+wjOp9rNZFktDs5W7ogDA3wZy7gUEOT7xUAAAAABJRU5ErkJggg=="
},
, , ,
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAOCAYAAAAvxDzwAAAACXBIWXMAAAsTAAALEwEAmpwYAAAFNWlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDAgNzkuMTYwNDUxLCAyMDE3LzA1LzA2LTAxOjA4OjIxICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczpkYz0iaHR0cDovL3B1cmwub3JnL2RjL2VsZW1lbnRzLzEuMS8iIHhtbG5zOnBob3Rvc2hvcD0iaHR0cDovL25zLmFkb2JlLmNvbS9waG90b3Nob3AvMS4wLyIgeG1sbnM6eG1wTU09Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9tbS8iIHhtbG5zOnN0RXZ0PSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvc1R5cGUvUmVzb3VyY2VFdmVudCMiIHRpZmY6T3JpZW50YXRpb249IjEiIHhtcDpDcmVhdGVEYXRlPSIyMDIwLTA1LTI2VDE2OjUyOjAxKzA4OjAwIiB4bXA6TW9kaWZ5RGF0ZT0iMjAyMC0wOC0wN1QxMDo0OTo1OCswODowMCIgeG1wOk1ldGFkYXRhRGF0ZT0iMjAyMC0wOC0wN1QxMDo0OTo1OCswODowMCIgZGM6Zm9ybWF0PSJpbWFnZS9wbmciIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIuMSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDo5OGM1MjA3My00NzRmLTQ5YTUtYTBiMy04YTBiNjUxOTg4MTkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6OThjNTIwNzMtNDc0Zi00OWE1LWEwYjMtOGEwYjY1MTk4ODE5IiB4bXBNTTpPcmlnaW5hbERvY3VtZW50SUQ9InhtcC5kaWQ6OThjNTIwNzMtNDc0Zi00OWE1LWEwYjMtOGEwYjY1MTk4ODE5Ij4gPHhtcE1NOkhpc3Rvcnk+IDxyZGY6U2VxPiA8cmRmOmxpIHN0RXZ0OmFjdGlvbj0ic2F2ZWQiIHN0RXZ0Omluc3RhbmNlSUQ9InhtcC5paWQ6OThjNTIwNzMtNDc0Zi00OWE1LWEwYjMtOGEwYjY1MTk4ODE5IiBzdEV2dDp3aGVuPSIyMDIwLTA4LTA3VDEwOjQ5OjU4KzA4OjAwIiBzdEV2dDpzb2Z0d2FyZUFnZW50PSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHN0RXZ0OmNoYW5nZWQ9Ii8iLz4gPC9yZGY6U2VxPiA8L3htcE1NOkhpc3Rvcnk+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+BNIWNwAAANBJREFUOI2lk7FtwzAQRZ9UpPIGAtyr8RaZwMgA2SGtN/AGadMZaTyFao9gQJ1bw0AKPTdHwTBCkUgO+MDxePcIkneNSsE64Dv8LTAuZqtLelcv6i10iVi2JrexUo8PoGcdI6cK+KqOC7CkMXKzwFb9VK8VsKRr1LSJ08SnbIADsC79UMbOwBtwatQd8AG8/BGW7AfYN+qtJjH84sEl4HyVWBefps3EJ+AL6B9ghN/H3vRrZW071LbXMzDbsLUDkIDFkSpoHlHUQe3+AUvq1OEOLQ87IC/d1y4AAAAASUVORK5CYII="
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAYAAACNiR0NAAAACXBIWXMAABYlAAAWJQFJUiTwAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAABqSURBVHgB7dDRCYAgGATgqwkcwQ1rE0d0hEa4LhAq7I8/89EPDnzQEw5wILkoK3pQUVS2kog/VBCUzNNxDmilx4m1hBZlN8u3PS+7Wfx7Puxmya49jd0s1Z6T4wPeHsjb/RmdjcJROAo9do2y5zKNIp3eAAAAAElFTkSuQmCC"
},
function(t, e) {
	t.exports = function(t) {
		return t && "object" == typeof t && "function" == typeof t.copy && "function" == typeof t.fill && "function" == typeof t.readUInt8
	}
},
function(t, e, n) { (function(t) {
		function i(t, n) {
			var i = {
				seen: [],
				stylize: r
			};
			return arguments.length >= 3 && (i.depth = arguments[2]),
			arguments.length >= 4 && (i.colors = arguments[3]),
			v(n) ? i.showHidden = n: n && e._extend(i, n),
			x(i.showHidden) && (i.showHidden = !1),
			x(i.depth) && (i.depth = 2),
			x(i.colors) && (i.colors = !1),
			x(i.customInspect) && (i.customInspect = !0),
			i.colors && (i.stylize = o),
			s(i, t, i.depth)
		}
		function o(t, e) {
			var n = i.styles[e];
			return n ? "[" + i.colors[n][0] + "m" + t + "[" + i.colors[n][1] + "m": t
		}
		function r(t, e) {
			return t
		}
		function a(t) {
			var e = {};
			return t.forEach(function(t, n) {
				e[t] = !0
			}),
			e
		}
		function s(t, n, i) {
			if (t.customInspect && n && T(n.inspect) && n.inspect !== e.inspect && (!n.constructor || n.constructor.prototype !== n)) {
				var o = n.inspect(i, t);
				return g(o) || (o = s(t, o, i)),
				o
			}
			var r = l(t, n);
			if (r) return r;
			var v = Object.keys(n),
			p = a(v);
			if (t.showHidden && (v = Object.getOwnPropertyNames(n)), E(n) && (v.indexOf("message") >= 0 || v.indexOf("description") >= 0)) return u(n);
			if (0 === v.length) {
				if (T(n)) {
					var _ = n.name ? ": " + n.name: "";
					return t.stylize("[Function" + _ + "]", "special")
				}
				if (b(n)) return t.stylize(RegExp.prototype.toString.call(n), "regexp");
				if (w(n)) return t.stylize(Date.prototype.toString.call(n), "date");
				if (E(n)) return u(n)
			}
			var m = "",
			y = !1,
			x = ["{", "}"];
			if (h(n) && (y = !0, x = ["[", "]"]), T(n)) {
				m = " [Function" + (n.name ? ": " + n.name: "") + "]"
			}
			if (b(n) && (m = " " + RegExp.prototype.toString.call(n)), w(n) && (m = " " + Date.prototype.toUTCString.call(n)), E(n) && (m = " " + u(n)), 0 === v.length && (!y || 0 == n.length)) return x[0] + m + x[1];
			if (i < 0) return b(n) ? t.stylize(RegExp.prototype.toString.call(n), "regexp") : t.stylize("[Object]", "special");
			t.seen.push(n);
			var S;
			return S = y ? c(t, n, i, p, v) : v.map(function(e) {
				return f(t, n, i, p, e, y)
			}),
			t.seen.pop(),
			d(S, m, x)
		}
		function l(t, e) {
			if (x(e)) return t.stylize("undefined", "undefined");
			if (g(e)) {
				var n = "'" + JSON.stringify(e).replace(/^"|"$/g, "").replace(/'/g, "\\'").replace(/\\"/g, '"') + "'";
				return t.stylize(n, "string")
			}
			return m(e) ? t.stylize("" + e, "number") : v(e) ? t.stylize("" + e, "boolean") : p(e) ? t.stylize("null", "null") : void 0
		}
		function u(t) {
			return "[" + Error.prototype.toString.call(t) + "]"
		}
		function c(t, e, n, i, o) {
			for (var r = [], a = 0, s = e.length; a < s; ++a) L(e, String(a)) ? r.push(f(t, e, n, i, String(a), !0)) : r.push("");
			return o.forEach(function(o) {
				o.match(/^\d+$/) || r.push(f(t, e, n, i, o, !0))
			}),
			r
		}
		function f(t, e, n, i, o, r) {
			var a, l, u;
			if (u = Object.getOwnPropertyDescriptor(e, o) || {
				value: e[o]
			},
			u.get ? l = u.set ? t.stylize("[Getter/Setter]", "special") : t.stylize("[Getter]", "special") : u.set && (l = t.stylize("[Setter]", "special")), L(i, o) || (a = "[" + o + "]"), l || (t.seen.indexOf(u.value) < 0 ? (l = p(n) ? s(t, u.value, null) : s(t, u.value, n - 1), l.indexOf("\n") > -1 && (l = r ? l.split("\n").map(function(t) {
				return "  " + t
			}).join("\n").substr(2) : "\n" + l.split("\n").map(function(t) {
				return "   " + t
			}).join("\n"))) : l = t.stylize("[Circular]", "special")), x(a)) {
				if (r && o.match(/^\d+$/)) return l;
				a = JSON.stringify("" + o),
				a.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/) ? (a = a.substr(1, a.length - 2), a = t.stylize(a, "name")) : (a = a.replace(/'/g, "\\'").replace(/\\"/g, '"').replace(/(^"|"$)/g, "'"), a = t.stylize(a, "string"))
			}
			return a + ": " + l
		}
		function d(t, e, n) {
			var i = 0;
			return t.reduce(function(t, e) {
				return i++,
				e.indexOf("\n") >= 0 && i++,
				t + e.replace(/\u001b\[\d\d?m/g, "").length + 1
			},
			0) > 60 ? n[0] + ("" === e ? "": e + "\n ") + " " + t.join(",\n  ") + " " + n[1] : n[0] + e + " " + t.join(", ") + " " + n[1]
		}
		function h(t) {
			return Array.isArray(t)
		}
		function v(t) {
			return "boolean" == typeof t
		}
		function p(t) {
			return null === t
		}
		function _(t) {
			return null == t
		}
		function m(t) {
			return "number" == typeof t
		}
		function g(t) {
			return "string" == typeof t
		}
		function y(t) {
			return "symbol" == typeof t
		}
		function x(t) {
			return void 0 === t
		}
		function b(t) {
			return S(t) && "[object RegExp]" === P(t)
		}
		function S(t) {
			return "object" == typeof t && null !== t
		}
		function w(t) {
			return S(t) && "[object Date]" === P(t)
		}
		function E(t) {
			return S(t) && ("[object Error]" === P(t) || t instanceof Error)
		}
		function T(t) {
			return "function" == typeof t
		}
		function A(t) {
			return null === t || "boolean" == typeof t || "number" == typeof t || "string" == typeof t || "symbol" == typeof t || void 0 === t
		}
		function P(t) {
			return Object.prototype.toString.call(t)
		}
		function I(t) {
			return t < 10 ? "0" + t.toString(10) : t.toString(10)
		}
		function k() {
			var t = new Date,
			e = [I(t.getHours()), I(t.getMinutes()), I(t.getSeconds())].join(":");
			return [t.getDate(), D[t.getMonth()], e].join(" ")
		}
		function L(t, e) {
			return Object.prototype.hasOwnProperty.call(t, e)
		}
		function M(t, e) {
			if (!t) {
				var n = new Error("Promise was rejected with a falsy value");
				n.reason = t,
				t = n
			}
			return e(t)
		}
		function C(e) {
			function n() {
				for (var n = [], i = 0; i < arguments.length; i++) n.push(arguments[i]);
				var o = n.pop();
				if ("function" != typeof o) throw new TypeError("The last argument must be of type Function");
				var r = this,
				a = function() {
					return o.apply(r, arguments)
				};
				e.apply(this, n).then(function(e) {
					t.nextTick(a, null, e)
				},
				function(e) {
					t.nextTick(M, e, a)
				})
			}
			if ("function" != typeof e) throw new TypeError('The "original" argument must be of type Function');
			return Object.setPrototypeOf(n, Object.getPrototypeOf(e)),
			Object.defineProperties(n, R(e)),
			n
		}
		var R = Object.getOwnPropertyDescriptors ||
		function(t) {
			for (var e = Object.keys(t), n = {},
			i = 0; i < e.length; i++) n[e[i]] = Object.getOwnPropertyDescriptor(t, e[i]);
			return n
		},
		B = /%[sdj%]/g;
		e.format = function(t) {
			if (!g(t)) {
				for (var e = [], n = 0; n < arguments.length; n++) e.push(i(arguments[n]));
				return e.join(" ")
			}
			for (var n = 1,
			o = arguments,
			r = o.length,
			a = String(t).replace(B,
			function(t) {
				if ("%%" === t) return "%";
				if (n >= r) return t;
				switch (t) {
				case "%s":
					return String(o[n++]);
				case "%d":
					return Number(o[n++]);
				case "%j":
					try {
						return JSON.stringify(o[n++])
					} catch(t) {
						return "[Circular]"
					}
				default:
					return t
				}
			}), s = o[n]; n < r; s = o[++n]) p(s) || !S(s) ? a += " " + s: a += " " + i(s);
			return a
		},
		e.deprecate = function(n, i) {
			function o() {
				if (!r) {
					if (t.throwDeprecation) throw new Error(i);
					t.traceDeprecation ? console.trace(i) : console.error(i),
					r = !0
				}
				return n.apply(this, arguments)
			}
			if (void 0 !== t && !0 === t.noDeprecation) return n;
			if (void 0 === t) return function() {
				return e.deprecate(n, i).apply(this, arguments)
			};
			var r = !1;
			return o
		};
		var N, O = {};
		e.debuglog = function(n) {
			if (x(N) && (N = t.env.NODE_DEBUG || ""), n = n.toUpperCase(), !O[n]) if (new RegExp("\\b" + n + "\\b", "i").test(N)) {
				var i = t.pid;
				O[n] = function() {
					var t = e.format.apply(e, arguments);
					console.error("%s %d: %s", n, i, t)
				}
			} else O[n] = function() {};
			return O[n]
		},
		e.inspect = i,
		i.colors = {
			bold: [1, 22],
			italic: [3, 23],
			underline: [4, 24],
			inverse: [7, 27],
			white: [37, 39],
			grey: [90, 39],
			black: [30, 39],
			blue: [34, 39],
			cyan: [36, 39],
			green: [32, 39],
			magenta: [35, 39],
			red: [31, 39],
			yellow: [33, 39]
		},
		i.styles = {
			special: "cyan",
			number: "yellow",
			boolean: "yellow",
			undefined: "grey",
			null: "bold",
			string: "green",
			date: "magenta",
			regexp: "red"
		},
		e.isArray = h,
		e.isBoolean = v,
		e.isNull = p,
		e.isNullOrUndefined = _,
		e.isNumber = m,
		e.isString = g,
		e.isSymbol = y,
		e.isUndefined = x,
		e.isRegExp = b,
		e.isObject = S,
		e.isDate = w,
		e.isError = E,
		e.isFunction = T,
		e.isPrimitive = A,
		e.isBuffer = n(1050);
		var D = ["Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"];
		e.log = function() {
			console.log("%s - %s", k(), e.format.apply(e, arguments))
		},
		e.inherits = n(1012),
		e._extend = function(t, e) {
			if (!e || !S(e)) return t;
			for (var n = Object.keys(e), i = n.length; i--;) t[n[i]] = e[n[i]];
			return t
		};
		var z = "undefined" != typeof Symbol ? Symbol("util.promisify.custom") : void 0;
		e.promisify = function(t) {
			function e() {
				for (var e, n, i = new Promise(function(t, i) {
					e = t,
					n = i
				}), o = [], r = 0; r < arguments.length; r++) o.push(arguments[r]);
				o.push(function(t, i) {
					t ? n(t) : e(i)
				});
				try {
					t.apply(this, o)
				} catch(t) {
					n(t)
				}
				return i
			}
			if ("function" != typeof t) throw new TypeError('The "original" argument must be of type Function');
			if (z && t[z]) {
				var e = t[z];
				if ("function" != typeof e) throw new TypeError('The "util.promisify.custom" argument must be of type Function');
				return Object.defineProperty(e, z, {
					value: e,
					enumerable: !1,
					writable: !1,
					configurable: !0
				}),
				e
			}
			return Object.setPrototypeOf(e, Object.getPrototypeOf(t)),
			z && Object.defineProperty(e, z, {
				value: e,
				enumerable: !1,
				writable: !1,
				configurable: !0
			}),
			Object.defineProperties(e, R(t))
		},
		e.promisify.custom = z,
		e.callbackify = C
	}).call(e, n(1023))
},
function(t, e, n) {
	"use strict";
	function i(t) {
		if (!t) throw new Error("coord is required");
		if (!Array.isArray(t)) {
			if ("Feature" === t.type && null !== t.geometry && "Point" === t.geometry.type) return t.geometry.coordinates;
			if ("Point" === t.type) return t.coordinates
		}
		if (Array.isArray(t) && t.length >= 2 && !Array.isArray(t[0]) && !Array.isArray(t[1])) return t;
		throw new Error("coord must be GeoJSON Point or an Array of numbers")
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getCoord = i
}]);
/*! library: tools */

/*! @version 1.2.0.5 */
!
function(t) {
	function e(r) {
		if (n[r]) return n[r].exports;
		var i = n[r] = {
			i: r,
			l: !1,
			exports: {}
		};
		return t[r].call(i.exports, i, i.exports, e),
		i.l = !0,
		i.exports
	}
	var n = {};
	e.m = t,
	e.c = n,
	e.i = function(t) {
		return t
	},
	e.d = function(t, n, r) {
		e.o(t, n) || Object.defineProperty(t, n, {
			configurable: !1,
			enumerable: !0,
			get: r
		})
	},
	e.n = function(t) {
		var n = t && t.__esModule ?
		function() {
			return t.
		default
		}:
		function() {
			return t
		};
		return e.d(n, "a", n),
		n
	},
	e.o = function(t, e) {
		return Object.prototype.hasOwnProperty.call(t, e)
	},
	e.p = "",
	e(e.s = 720)
} ([function(t, e, n) {
	"use strict";
	e.__esModule = !0,
	e.
default = function(t, e) {
		if (! (t instanceof e)) throw new TypeError("Cannot call a class as a function")
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var r = n(75),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = function() {
		function t(t, e) {
			for (var n = 0; n < e.length; n++) {
				var r = e[n];
				r.enumerable = r.enumerable || !1,
				r.configurable = !0,
				"value" in r && (r.writable = !0),
				(0, i.
			default)(t, r.key, r)
			}
		}
		return function(e, n, r) {
			return n && t(e.prototype, n),
			r && t(e, r),
			e
		}
	} ()
},
function(t, e) {
	var n = t.exports = {
		version: "2.6.9"
	};
	"number" == typeof __e && (__e = n)
},
function(t, e, n) {
	t.exports = {
	default:
		n(166),
		__esModule: !0
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var i = n(155),
	o = r(i),
	s = n(77),
	a = r(s),
	u = n(20),
	c = r(u);
	e.
default = function(t, e) {
		if ("function" != typeof e && null !== e) throw new TypeError("Super expression must either be null or a function, not " + (void 0 === e ? "undefined": (0, c.
	default)(e)));
		t.prototype = (0, a.
	default)(e && e.prototype, {
			constructor: {
				value: t,
				enumerable: !1,
				writable: !0,
				configurable: !0
			}
		}),
		e && (o.
	default ? (0, o.
	default)(t, e) : t.__proto__ = e)
	}
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var r = n(20),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = function(t, e) {
		if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
		return ! e || "object" !== (void 0 === e ? "undefined": (0, i.
	default)(e)) && "function" != typeof e ? t: e
	}
},
function(t, e, n) {
	var r = n(8),
	i = n(2),
	o = n(22),
	s = n(19),
	a = n(21),
	u = function(t, e, n) {
		var c, l, h, f = t & u.F,
		p = t & u.G,
		d = t & u.S,
		g = t & u.P,
		y = t & u.B,
		v = t & u.W,
		m = p ? i: i[e] || (i[e] = {}),
		_ = m.prototype,
		w = p ? r: d ? r[e] : (r[e] || {}).prototype;
		p && (n = e);
		for (c in n)(l = !f && w && void 0 !== w[c]) && a(m, c) || (h = l ? w[c] : n[c], m[c] = p && "function" != typeof w[c] ? n[c] : y && l ? o(h, r) : v && w[c] == h ?
		function(t) {
			var e = function(e, n, r) {
				if (this instanceof t) {
					switch (arguments.length) {
					case 0:
						return new t;
					case 1:
						return new t(e);
					case 2:
						return new t(e, n)
					}
					return new t(e, n, r)
				}
				return t.apply(this, arguments)
			};
			return e.prototype = t.prototype,
			e
		} (h) : g && "function" == typeof h ? o(Function.call, h) : h, g && ((m.virtual || (m.virtual = {}))[c] = h, t & u.R && _ && !_[c] && s(_, c, h)))
	};
	u.F = 1,
	u.G = 2,
	u.S = 4,
	u.P = 8,
	u.B = 16,
	u.W = 32,
	u.U = 64,
	u.R = 128,
	t.exports = u
},
function(t, e) {
	t.exports = function(t) {
		return "object" == typeof t ? null !== t: "function" == typeof t
	}
},
function(t, e) {
	var n = t.exports = "undefined" != typeof window && window.Math == Math ? window: "undefined" != typeof self && self.Math == Math ? self: Function("return this")();
	"number" == typeof __g && (__g = n)
},
function(t, e, n) {
	var r = n(59)("wks"),
	i = n(46),
	o = n(8).Symbol,
	s = "function" == typeof o; (t.exports = function(t) {
		return r[t] || (r[t] = s && o[t] || (s ? o: i)("Symbol." + t))
	}).store = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		t && (0, f.
	default)(t).forEach(function(t) {
			e.apply(void 0, (0, l.
		default)(t))
		})
	}
	var o = n(17),
	s = r(o),
	a = n(20),
	u = r(a),
	c = n(24),
	l = r(c),
	h = n(115),
	f = r(h),
	p = n(27),
	d = r(p),
	g = n(124),
	y = r(g),
	v = n(147),
	m = r(v),
	_ = n(47),
	w = r(_),
	b = n(146);
	e.getMax = function(t) {
		for (var e = t.length,
		n = -1 / 0; e;) e -= 1,
		n = t[e] > n ? t[e] : n;
		return n
	},
	e.getMin = function(t) {
		for (var e = t.length,
		n = 1 / 0; e;) e -= 1,
		n = t[e] < n ? t[e] : n;
		return n
	},
	e.isInRange = function(t, e, n) {
		return t >= e && t <= n
	},
	e.clamp = function(t, e, n) {
		return Math.min(n, Math.max(e, t))
	},
	e.wrap = function(t, e, n) {
		var r = n - e,
		i = ((t - e) % r + r) % r + e;
		return i === e ? n: i
	},
	e.round = function(t, e) {
		var n = Math.pow(10, e);
		return Math.round(t * n) / n
	},
	e.mix = function(t, e, n) {
		return t * (1 - n) + e * n
	},
	e.degreeToRadian = y.
default,
	e.radianToDegree = m.
default,
	e.extend = function(t) {
		for (var e = arguments.length,
		n = Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r];
		var o = !0,
		s = !1,
		a = void 0;
		try {
			for (var u, c = (0, d.
		default)(n); ! (o = (u = c.next()).done); o = !0) {
				i(u.value,
				function(e, n) {
					t[e] = n
				})
			}
		} catch(t) {
			s = !0,
			a = t
		} finally {
			try { ! o && c.
				return && c.
				return ()
			} finally {
				if (s) throw a
			}
		}
		return t
	},
	e.bindAll = function(t, e) {
		t.forEach(function(t) {
			e[t] && (e[t] = e[t].bind(e))
		})
	},
	e.forIn = i,
	e.endsWith = function(t, e) {
		return - 1 !== t.indexOf(e, t.length - e.length)
	},
	e.isDefined = function(t) {
		return null !== t && void 0 !== t
	},
	e.isUndefined = function(t) {
		return void 0 === t
	},
	e.isString = function(t) {
		return "[object String]" === Object.prototype.toString.call(t)
	},
	e.parseJson = function(t) {
		return ! JSON || !JSON.stringify ? new Function("return " + t)() : JSON.parse(t)
	},
	e.colorToRGBA = function(t) {
		if (t instanceof Array) return t;
		var e = t >> 0 & 255,
		n = t >> 8 & 255,
		r = t >> 16 & 255,
		i = t >> 24 & 255;
		return i /= 255,
		new Array(e, n, r, i)
	},
	e.rgbaToGLColor = function(t) {
		t = String(t).replace(/ /g, "");
		var e = t.substring(t.indexOf("(") + 1, t.indexOf(")")).split(",");
		return 3 === e.length && (e[3] = 1),
		e = e.map(function(t, e) {
			return 3 === e ? Number(t) : Number(t) / 255
		})
	},
	e.uniqueId = function() {
		var t = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(""),
		e = new Array(36),
		n = 0,
		r = void 0;
		return function() {
			for (var i = 0; i < 36; i++) 8 === i || 13 === i || 18 === i || 23 === i ? e[i] = "-": 14 === i ? e[i] = "4": (n <= 2 && (n = 33554432 + 16777216 * Math.random() | 0), r = 15 & n, n >>= 4, e[i] = t[19 === i ? 3 & r | 8 : r]);
			return e.join("")
		}
	} (),
	e.objectClone = function(t) {
		var e = this;
		if ("object" !== (void 0 === t ? "undefined": (0, u.
	default)(t)) || null === t) return t;
		if (t instanceof Array) return [].concat(t);
		var n = new Object;
		return i(t,
		function(t, r) {
			n[t] = e.objectClone(r)
		}),
		n
	},
	e.keysDifference = function(t, e) {
		var n = [];
		return i(t,
		function(t) {
			t in e || n.push(t)
		}),
		n
	},
	e.bezier = function(t, e, n, r) {
		var i = new b(t, e, n, r);
		return function(t) {
			return i.solve(t)
		}
	},
	e.ease = e.bezier(.25, .1, .25, 1),
	e.linearEase = function(t) {
		return t
	},
	e.asyncAll = function(t, e, n) {
		if (!t.length) return n(null, []);
		var r = t.length,
		i = new Array(t.length),
		o = null;
		t.forEach(function(t, s) {
			e(t,
			function(t, e) {
				t && (o = t),
				i[s] = e,
				0 === r && n(o, i),
				r -= 1
			})
		})
	},
	e.deepEqual = function(t, n) {
		if (Array.isArray(t)) {
			if (!Array.isArray(n) || t.length !== n.length) return ! 1;
			for (var r = 0; r < t.length; r++) if (!e.deepEqual(t[r], n[r])) return ! 1;
			return ! 0
		}
		if ("object" === (void 0 === t ? "undefined": (0, u.
	default)(t)) && null !== t && null !== n) {
			if ("object" !== (void 0 === n ? "undefined": (0, u.
		default)(n))) return ! 1;
			if ((0, s.
		default)(t).length !== (0, s.
		default)(n).length) return ! 1;
			for (var i in t) if (t.hasOwnProperty(i) && !e.deepEqual(t[i], n[i])) return ! 1;
			return ! 0
		}
		return t === n
	};
	var x = {};
	e.warnOnce = function(t) {
		x[t] || ("undefined" != typeof console && console.warn(t), x[t] = !0)
	},
	e.clone = function(t) {
		if (null === t || "object" !== (void 0 === t ? "undefined": (0, u.
	default)(t))) return t;
		if (t instanceof w.
	default) return new w.
	default(t.getLat(), t.getLng(), t.getHeight());
		if (t instanceof Date) {
			var e = new Date;
			return e.setTime(t.getTime()),
			e
		}
		if (t instanceof Array) {
			for (var n = [], r = 0, i = t.length; r < i; ++r) n[r] = this.clone(t[r]);
			return n
		}
		if (t instanceof Object) {
			var o = {};
			for (var s in t) t.hasOwnProperty(s) && (o[s] = this.clone(t[s]));
			return o
		}
		throw new Error("Unable to copy obj! Its type isn't supported.")
	},
	e.insertSort = function(t, e) {
		for (var n = 1,
		r = n; r < t.length; n += 1, r += 1) for (var i = 0; i < n; i++) if (t[r][e] <= t[i][e]) {
			t.splice(i, 0, t[r]),
			t.splice(r + 1, 1);
			break
		}
	},
	e.bubbleSort = function(t, e) {
		t.sort(function(t, n) {
			return t[e] - n[e]
		})
	}
},
,
function(t, e, n) {
	t.exports = !n(30)(function() {
		return 7 != Object.defineProperty({},
		"a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e, n) {
	var r = n(7);
	t.exports = function(t) {
		if (!r(t)) throw TypeError(t + " is not an object!");
		return t
	}
},
function(t, e, n) {
	var r = n(13),
	i = n(84),
	o = n(64),
	s = Object.defineProperty;
	e.f = n(12) ? Object.defineProperty: function(t, e, n) {
		if (r(t), e = o(e, !0), r(n), i) try {
			return s(t, e, n)
		} catch(t) {}
		if ("get" in n || "set" in n) throw TypeError("Accessors not supported!");
		return "value" in n && (t[e] = n.value),
		t
	}
},
function(t, e, n) {
	var r = n(6),
	i = n(2),
	o = n(30);
	t.exports = function(t, e) {
		var n = (i.Object || {})[t] || Object[t],
		s = {};
		s[t] = e(n),
		r(r.S + r.F * o(function() {
			n(1)
		}), "Object", s)
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(242),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(170),
		__esModule: !0
	}
},
function(t, e, n) {
	var r = n(80),
	i = n(53);
	t.exports = function(t) {
		return r(i(t))
	}
},
function(t, e, n) {
	var r = n(14),
	i = n(38);
	t.exports = n(12) ?
	function(t, e, n) {
		return r.f(t, e, i(1, n))
	}: function(t, e, n) {
		return t[e] = n,
		t
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var i = n(157),
	o = r(i),
	s = n(156),
	a = r(s),
	u = "function" == typeof a.
default && "symbol" == typeof o.
default ?
	function(t) {
		return typeof t
	}: function(t) {
		return t && "function" == typeof a.
	default && t.constructor === a.
	default && t !== a.
	default.prototype ? "symbol": typeof t
	};
	e.
default = "function" == typeof a.
default && "symbol" === u(o.
default) ?
	function(t) {
		return void 0 === t ? "undefined": u(t)
	}: function(t) {
		return t && "function" == typeof a.
	default && t.constructor === a.
	default && t !== a.
	default.prototype ? "symbol": void 0 === t ? "undefined": u(t)
	}
},
function(t, e) {
	var n = {}.hasOwnProperty;
	t.exports = function(t, e) {
		return n.call(t, e)
	}
},
function(t, e, n) {
	var r = n(44);
	t.exports = function(t, e, n) {
		if (r(t), void 0 === e) return t;
		switch (n) {
		case 1:
			return function(n) {
				return t.call(e, n)
			};
		case 2:
			return function(n, r) {
				return t.call(e, n, r)
			};
		case 3:
			return function(n, r, i) {
				return t.call(e, n, r, i)
			}
		}
		return function() {
			return t.apply(e, arguments)
		}
	}
},
function(t, e, n) {
	"use strict";
	var r = {
		batchRender: !0,
		highQualityRender: !1,
		type: "default",
		minZoom: 3,
		maxZoom: 20,
		maxDataZoom: 18,
		minPitch: 0,
		maxPitch: 80,
		minShowIndoorZoom: 17,
		tileSize: 256,
		checkKeySrc: "https://apikey.map.qq.com/mkey/index.php/mkey/check",
		overseaSrc: "https://overseactrl.map.qq.com",
		prSrc: "https://pr.map.qq.com/pingd?appid=jsapi_v3",
		verSrc: "https://confinfo.map.qq.com/confinfo",
		iconSize: 16,
		iconSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/icon?id={id}&type=img&version={version}",
		iconIndexSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/icon?id={id}&type=json&version={version}",
		styleSrc: "https://vectorsdk.map.qq.com/fileupdate/jsapi/style?autoup=1&id={id}&version={version}",
		batchVectorSrc: ["https://rt0.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt1.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt2.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt3.map.gtimg.com/tile?styleid=0&tiles={tiles}&version={version}&style=100&compress=1&mapType=hybrid"],
		vectorSrc: ["https://rt0.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt1.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt2.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid", "https://rt3.map.gtimg.com/tile?styleid=0&z={z}&x={x}&y={y}&version={version}&style=100&compress=1&mapType=hybrid"],
		satelliteSrc: ["https://p0.map.gtimg.com/sateTiles", "https://p1.map.gtimg.com/sateTiles", "https://p2.map.gtimg.com/sateTiles", "https://p3.map.gtimg.com/sateTiles"],
		roadSrc: ["https://rt0.map.gtimg.com/tile", "https://rt1.map.gtimg.com/tile", "https://rt2.map.gtimg.com/tile", "https://rt3.map.gtimg.com/tile"],
		trafficSrc: ["https://rtt2.map.qq.com/rtt/", "https://rtt2a.map.qq.com/rtt/", "https://rtt2b.map.qq.com/rtt/", "https://rtt2c.map.qq.com/rtt/"],
		handdrawSrc: ["https://p0.map.gtimg.com/scenic/", "https://p1.map.gtimg.com/scenic/", "https://p2.map.gtimg.com/scenic/", "https://p3.map.gtimg.com/scenic/"],
		indoorIndexSrc: " https://mapvectors.map.qq.com/indoormap2/index?type=1",
		indoorBuildingSrc: "https://mapvectors.map.qq.com/indoormap",
		indoorStyleSrc: "https://mapvectors.map.qq.com/indoormap/style.js?version={version}",
		indoorIconSrc: "https://rt%$%.map.gtimg.com/icons/indoor/",
		dataVersion: {
			sat: 231,
			tile: 405,
			scenic: 157
		},
		cesiumStaticSrc: "https://mapapi.qq.com/web/visualization/real3d/cesium-static/",
		envSrc: "https://mapapi.qq.com/web/visualization/monet/resource/env.jpg"
	};
	t.exports = r
},
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var r = n(82),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = function(t) {
		if (Array.isArray(t)) {
			for (var e = 0,
			n = Array(t.length); e < t.length; e++) n[e] = t[e];
			return n
		}
		return (0, i.
	default)(t)
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(174),
		__esModule: !0
	}
},
function(t, e) {
	t.exports = {}
},
function(t, e, n) {
	t.exports = {
	default:
		n(126),
		__esModule: !0
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i() {
		return ! (self.navigator.userAgent.indexOf("MiniProgramEnv") < 0)
	}
	function o() {
		for (var t = self.navigator.userAgent,
		e = ["iOS", "Android", "MINA"], n = ["Windows", "Mac"], r = "cannotrecongize", i = 0; i < e.length; i++) if (t.indexOf("MiniProgramEnv/" + e[i]) >= 0) {
			r = "mobile";
			break
		}
		for (var o = 0; o < n.length; o++) if (t.indexOf("MiniProgramEnv/" + n[o]) >= 0) {
			r = "pc";
			break
		}
		return r
	}
	function s(t, e, n) {
		if (e.includes(":")) {
			var r = n,
			i = e.split(":"),
			o = i[0].trim();
			e = i[1].trim(),
			n = function(t) {
				for (var e = !1,
				n = t.target; n && !(e = a(n, o));) n = n.parentNode;
				e && (t.selectorTarget = n, r(t))
			}
		}
		return "addEventListener" in t ? (t.addEventListener(e, n, !1), {
			remove: function() {
				t.removeEventListener(e, n, !1)
			}
		}) : "attachEvent" in t ? (t.attachEvent("on" + e, n), {
			remove: function() {
				t.detachEvent("on" + e, n)
			}
		}) : "on" in t ? (t.on(e, n), {
			remove: function() {
				t.off && t.off(e, n),
				t.removeListener && t.removeListener(e, n)
			}
		}) : void 0
	}
	function a(t, e) {
		var n = ["matches", "webkitMatchesSelector", "msMatchesSelector", "mozMatchesSelector", "oMatchesSelector"],
		r = !0,
		i = !1,
		o = void 0;
		try {
			for (var s, a = (0, c.
		default)(n); ! (r = (s = a.next()).done); r = !0) {
				var u = s.value;
				if (t[u] && "function" == typeof t[u]) return t[u](e)
			}
		} catch(t) {
			i = !0,
			o = t
		} finally {
			try { ! r && a.
				return && a.
				return ()
			} finally {
				if (i) throw o
			}
		}
		return ! 1
	}
	var u = n(27),
	c = r(u),
	l = n(17),
	h = r(l),
	f = n(20),
	p = r(f),
	d = n(24),
	g = r(d);
	e.now = function() {
		return self.performance && self.performance.now ? self.performance.now.bind(self.performance) : Date.now.bind(Date)
	} ();
	var y = self.requestAnimationFrame || self.mozRequestAnimationFrame || self.webkitRequestAnimationFrame || self.msRequestAnimationFrame;
	e.frame = function(t) {
		return y(t)
	};
	var v = self.cancelAnimationFrame || self.mozCancelAnimationFrame || self.webkitCancelAnimationFrame || self.msCancelAnimationFrame;
	e.cancelFrame = function(t) {
		v(t)
	},
	e.timed = function(n, r, i, o) {
		function s(r) {
			u || (r = t.exports.now(), r >= c + i ? n.call(o, 1) : (n.call(o, (r - c) / i), e.frame(s)))
		}
		var a = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0;
		if (!i) return n.call(o, 1),
		null;
		var u = !1,
		c = t.exports.now() - a * i;
		return e.frame(s),
		function() {
			u = !0,
			r && r.call(o)
		}
	},
	e.getImageData = function(t) {
		var e = self.document.createElement("canvas"),
		n = e.getContext("2d");
		return e.width = t.width,
		e.height = t.height,
		n.drawImage(t, 0, 0, t.width, t.height),
		n.getImageData(0, 0, t.width, t.height).data
	},
	e.hardwareConcurrency = self.navigator.hardwareConcurrency || 4,
	Object.defineProperty(e, "devicePixelRatio", {
		get: function() {
			return self.devicePixelRatio || 1
		}
	}),
	e.isPC = function() {
		var t = self.navigator.userAgent,
		e = ["Android", "iPhone", "iPad", "iPod", "SymbianOS", "selfs Phone"],
		n = !0;
		if (i()) {
			if ("mobile" === o()) return ! 1;
			if ("pc" === o()) return ! 0
		}
		for (var r = 0; r < e.length; r++) if (t.indexOf(e[r]) >= 0) {
			n = !1;
			break
		}
		return n
	},
	e.isMiniProgram = i,
	e.getMiniProgramEnv = o,
	e.isLowMobileDevice = function() {
		var t = self.navigator.userAgent;
		if (this.isPC()) return ! 1;
		if (t.includes("SymbianOS") || t.includes("selfs Phone")) return ! 0;
		try {
			var e = t.includes("Android") && parseFloat(t.match(/Android (\d+)/)[1]),
			n = (t.includes("iPhone") || t.includes("iPad") || t.includes("iPod")) && t.match(/OS ((\d+_?){2,3})\s/) && parseFloat(String(t.match(/OS ((\d+_?){2,3})\s/)[1]).replace("_", "."));
			if (e && e < 6 || n && n < 11) return ! 0
		} catch(t) {
			return ! 1
		}
		return ! 1
	},
	e.mobileSystem = function() {
		var t = self.navigator.userAgent,
		e = "";
		if (this.isPC()) return ! 1;
		if (t.includes("SymbianOS") || t.includes("selfs Phone")) e = t.includes("SymbianOS") ? "SymbianOS": "selfs Phone";
		else try {
			var n = t.includes("Android") && parseFloat(t.match(/Android ([\d.]+?);/)[1]),
			r = (t.includes("iPhone") || t.includes("iPad") || t.includes("iPod")) && t.match(/OS ((\d+_?){2,3})\s/) && parseFloat(String(t.match(/OS ((\d+_?){2,3})\s/)[1]).replace("_", "."));
			e = n ? "Android" + n.toFixed(1) : "iOS" + r.toFixed(1)
		} catch(e) {
			return "无法识别: " + t
		}
		return e
	},
	e.debounce = function(t, e) {
		var n = null;
		return function() {
			var r = arguments;
			n && clearTimeout(n),
			n = setTimeout(function() {
				t.apply(void 0, (0, g.
			default)(r))
			},
			e)
		}
	},
	e.throttle = function(t, e) {
		var n = 0;
		return function() {
			var r = +new Date;
			if (r - n > e) {
				n = r;
				for (var i = arguments.length,
				o = Array(i), s = 0; s < i; s++) o[s] = arguments[s];
				t.apply(this, o)
			}
		}
	},
	e.throttleWithFrame = function(t) {
		var e = null;
		return function() {
			for (var n = this,
			r = arguments.length,
			i = Array(r), o = 0; o < r; o++) i[o] = arguments[o];
			e || (e = y(function() {
				t.apply(n, i),
				e = null
			}))
		}
	};
	var m = function t(e, n, r, i) {
		if (!e || !n) return void console.warn("arguments is invalid!", e, n, r);
		if ("object" === (void 0 === n ? "undefined": (0, p.
	default)(n))) {
			var o = null;
			return o = "length" in n ? n.map(function(n) {
				return t(e, n.trim(), r, i)
			}) : (0, h.
		default)(n).map(function(i) {
				return t(e, i.trim(), n[i], r)
			}),
			{
				remove: function() {
					o.forEach(function(t) {
						t && t.remove && t.remove()
					})
				}
			}
		}
		if ( - 1 !== n.indexOf(",")) {
			n = n.split(",");
			var a = n.map(function(n) {
				return t(e, n.trim(), r, i)
			});
			return {
				remove: function() {
					a.forEach(function(t) {
						t && t.remove && t.remove()
					})
				}
			}
		}
		return s(e, n,
		function(t) {
			return r.call(i || e, t)
		})
	},
	_ = function(t, e, n, r) {
		var i = null,
		o = function(t) {
			return function() {
				return i && i.remove && i.remove(),
				t.apply(this, arguments)
			}
		};
		return t && e ? ("object" === (void 0 === e ? "undefined": (0, p.
	default)(e)) && ("length" in e ? n = o(n) : (0, h.
	default)(e).forEach(function(t) {
			e[t] = o(e[t])
		})), -1 !== e.indexOf(",") && (e = e.split(","), n = o(n)), i = m(t, e, n, r)) : void console.warn("arguments is invalid!", t, e, n)
	};
	e.on = m,
	e.once = _
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.AJAXError = e.EnumError = e.ClassTypeError = e.BaseTypeError = void 0;
	var i = n(20),
	o = r(i),
	s = n(3),
	a = r(s),
	u = n(5),
	c = r(u),
	l = n(4),
	h = r(l),
	f = n(0),
	p = r(f),
	d = n(1),
	g = r(d),
	y = function() {
		function t(e) { (0, p.
		default)(this, t),
			this.message = e
		}
		return (0, g.
	default)(t, [{
			key: "warn",
			value: function() {
				console.warn(this.message)
			}
		},
		{
			key: "error",
			value: function() {
				console.error(this.message)
			}
		},
		{
			key: "throw",
			value: function() {
				throw new Error(this.message)
			}
		}]),
		t
	} (),
	v = function(t) {
		function e(t, n, r) {
			return (0, p.
		default)(this, e),
			(0, c.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, "类型错误：" + t + " 应该是 " + n.toUpperCase() + " 类型, 实际却是 " + (void 0 === r ? "undefined": (0, o.
		default)(r)).toUpperCase() + " 类型。"))
		}
		return (0, h.
	default)(e, t),
		e
	} (y),
	m = function(t) {
		function e(t, n, r) {
			return (0, p.
		default)(this, e),
			(0, c.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, "类型错误：" + t + " 应该是 " + n + " 类型, 实际值为 " + r + "。"))
		}
		return (0, h.
	default)(e, t),
		e
	} (y),
	_ = function(t) {
		function e(t, n, r) {
			return (0, p.
		default)(this, e),
			(0, c.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, "枚举错误：" + t + " 的可枚举值为 " + n.join(",") + "，实际却是 " + r))
		}
		return (0, h.
	default)(e, t),
		e
	} (y),
	w = function t(e, n) { (0, p.
	default)(this, t),
		this.message = e,
		this.status = n
	};
	e.BaseTypeError = v,
	e.ClassTypeError = m,
	e.EnumError = _,
	e.AJAXError = w
},
function(t, e) {
	t.exports = function(t) {
		try {
			return !! t()
		} catch(t) {
			return ! 0
		}
	}
},
function(t, e, n) {
	var r = n(53);
	t.exports = function(t) {
		return Object(r(t))
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var i = n(125),
	o = r(i),
	s = n(27),
	a = r(s);
	e.
default = function() {
		function t(t, e) {
			var n = [],
			r = !0,
			i = !1,
			o = void 0;
			try {
				for (var s, u = (0, a.
			default)(t); ! (r = (s = u.next()).done) && (n.push(s.value), !e || n.length !== e); r = !0);
			} catch(t) {
				i = !0,
				o = t
			} finally {
				try { ! r && u.
					return && u.
					return ()
				} finally {
					if (i) throw o
				}
			}
			return n
		}
		return function(e, n) {
			if (Array.isArray(e)) return e;
			if ((0, o.
		default)(Object(e))) return t(e, n);
			throw new TypeError("Invalid attempt to destructure non-iterable instance")
		}
	} ()
},
function(t, e, n) {
	"use strict";
	var r = n(131)(!0);
	n(72)(String, "String",
	function(t) {
		this._t = String(t),
		this._i = 0
	},
	function() {
		var t, e = this._t,
		n = this._i;
		return n >= e.length ? {
			value: void 0,
			done: !0
		}: (t = r(e, n), this._i += t.length, {
			value: t,
			done: !1
		})
	})
},
function(t, e, n) {
	var r = n(87),
	i = n(58);
	t.exports = Object.keys ||
	function(t) {
		return r(t, i)
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	e.__esModule = !0;
	var i = n(3),
	o = r(i),
	s = n(116),
	a = r(s);
	e.
default = function t(e, n, r) {
		null === e && (e = Function.prototype);
		var i = (0, a.
	default)(e, n);
		if (void 0 === i) {
			var s = (0, o.
		default)(e);
			return null === s ? void 0 : t(s, n, r)
		}
		if ("value" in i) return i.value;
		var u = i.get;
		if (void 0 !== u) return u.call(r)
	}
},
function(t, e) {
	var n = {}.toString;
	t.exports = function(t) {
		return n.call(t).slice(8, -1)
	}
},
function(t, e) {
	t.exports = !0
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			enumerable: !(1 & t),
			configurable: !(2 & t),
			writable: !(4 & t),
			value: e
		}
	}
},
function(t, e, n) {
	n(135);
	for (var r = n(8), i = n(19), o = n(26), s = n(9)("toStringTag"), a = "CSSRuleList,CSSStyleDeclaration,CSSValueList,ClientRectList,DOMRectList,DOMStringList,DOMTokenList,DataTransferItemList,FileList,HTMLAllCollection,HTMLCollection,HTMLFormElement,HTMLSelectElement,MediaList,MimeTypeArray,NamedNodeMap,NodeList,PaintRequestList,Plugin,PluginArray,SVGLengthList,SVGNumberList,SVGPathSegList,SVGPointList,SVGStringList,SVGTransformList,SourceBufferList,StyleSheetList,TextTrackCueList,TextTrackList,TouchList".split(","), u = 0; u < a.length; u++) {
		var c = a[u],
		l = r[c],
		h = l && l.prototype;
		h && !h[s] && i(h, s, c),
		o[c] = o.Array
	}
},
function(t, e, n) {
	var r = n(46)("meta"),
	i = n(7),
	o = n(21),
	s = n(14).f,
	a = 0,
	u = Object.isExtensible ||
	function() {
		return ! 0
	},
	c = !n(30)(function() {
		return u(Object.preventExtensions({}))
	}),
	l = function(t) {
		s(t, r, {
			value: {
				i: "O" + ++a,
				w: {}
			}
		})
	},
	h = function(t, e) {
		if (!i(t)) return "symbol" == typeof t ? t: ("string" == typeof t ? "S": "P") + t;
		if (!o(t, r)) {
			if (!u(t)) return "F";
			if (!e) return "E";
			l(t)
		}
		return t[r].i
	},
	f = function(t, e) {
		if (!o(t, r)) {
			if (!u(t)) return ! 0;
			if (!e) return ! 1;
			l(t)
		}
		return t[r].w
	},
	p = function(t) {
		return c && d.NEED && u(t) && !o(t, r) && l(t),
		t
	},
	d = t.exports = {
		KEY: r,
		NEED: !1,
		fastKey: h,
		getWeak: f,
		onFreeze: p
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(32),
	o = r(i),
	s = n(140),
	a = r(s),
	u = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,
	c = /^rgb\((\d+,?\s*){3}\)$/,
	l = /^rgba\((\d+,?\s*){3},\s*[0-9.]+\)$/,
	h = {}; !
	function(t) { ["Number", "String", "Function", "Undefined", "Boolean", "Object", "Array"].forEach(function(e) {
			var n = function(t) {
				return "[object " + e + "]" === Object.prototype.toString.call(t)
			};
			t["is" + e] = n
		})
	} (h),
	h.isNaN = a.
default,
	h.isValidLatLng = function() {
		var t = void 0,
		e = void 0;
		if (1 === arguments.length) {
			var n = arguments[0];
			if (h.isArray(n)) {
				var r = (0, o.
			default)(n, 2);
				t = r[0],
				e = r[1]
			} else t = n.lat,
			e = n.lng
		} else {
			if (2 !== arguments.length) return ! 1;
			t = arguments[0],
			e = arguments[1]
		}
		return ! (!h.isNumber(t) || !h.isNumber(e)) && (Math.abs(t) <= 90 && Math.abs(e) <= 180)
	},
	h.isValidColor = function(t) {
		return h.isArray(t) ? (3 === t.length || 4 === t.length) && t.every(function(t) {
			return t >= 0 && t <= 255
		}) : !!h.isString(t) && (u.test(t) || c.test(t) || l.test(t))
	},
	h.isValidOffset = function(t) {
		return !! (h.isObject(t) && "x" in t && "y" in t && h.isNumber(t.x) && h.isNumber(t.y))
	},
	e.
default = h
},
function(t, e, n) {
	var r = n(14).f,
	i = n(21),
	o = n(9)("toStringTag");
	t.exports = function(t, e, n) {
		t && !i(t = n ? t: t.prototype, o) && r(t, o, {
			configurable: !0,
			value: e
		})
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		return function() {
			return A ? void 0 : t.apply(null, arguments)
		}
	}
	function o(t, e) {
		var n = [];
		for (var r in e) e.hasOwnProperty(r) && n.push(r + "=" + e[r]);
		return t + ( - 1 === t.indexOf("?") ? "?": "&") + n.join("&")
	}
	function s(t) {
		var e = (0, S.isWebGLSupportedCached)(); (0, C.sendByAjax)(o(b.
	default.prSrc, {
			logid: "pv",
			key: t.key || E.
		default.key,
			v: t.version || "null",
			lt: t.loadDeltaTime || -1,
			d: location.host,
			dpr: window.devicePixelRatio,
			lss: I.
		default.support() ? 1 : 0,
			gls: e.context ? 1 : 0,
			ua: window.navigator.userAgent,
			dt: P.
		default.OS,
			dvn: e.renderer
		}))
	}
	function a() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
		e = t.type,
		n = t.code,
		r = t.message,
		i = void 0 === r ? "": r,
		s = t.key,
		a = void 0 === s ? E.
	default.key:
		s; (0, C.sendOnce)(o(b.
	default.prSrc, {
			logid: "err",
			key: a,
			type: e,
			code: n,
			msg: i,
			dt: P.
		default.OS
		}))
	}
	function u(t, e, n) {
		t.once("tilesloaded",
		function() { (0, C.sendOnce)(o(b.
		default.prSrc, {
				logid: "rt",
				frt: Date.now() - e,
				device: n
			}))
		})
	}
	function c(t, e, n) { (0, L.isPC)() || t.once("tilesloaded",
		function() { (0, C.sendOnce)(o(b.
		default.prSrc, {
				logid: "ds",
				lowdevice: e,
				systemid: n
			}))
		})
	}
	function l(t) {
		var e = (0, S.isWebGLSupportedCached)(),
		n = null,
		r = 0,
		i = null,
		s = function() {
			var s = (0, L.now)(),
			a = (s - i) / 1e3,
			u = Math.round(r / (60 * a) * 60);
			t.removeRenderCallback(n),
			(0, C.sendOnce)(o(b.
		default.prSrc, {
				logid: "fps",
				dt: P.
			default.OS,
				num: u,
				cd: e.isIndependentDisplayCard ? 1 : 0
			}))
		};
		t.on("movestart",
		function() {
			n && (t.removeListener("moveend", s), t.removeRenderCallback(n), r = 0),
			i = (0, L.now)(),
			n = function() {
				r++
			},
			t.addRenderCallback(n),
			t.once("moveend", s)
		})
	}
	function h(t) { (0, C.sendOnce)(o(b.
	default.prSrc, {
			logid: "cl",
			key: t.key || E.
		default.key,
			subkey: t.subkey || "",
			id: t.id || ""
		}))
	}
	function f(t) { (0, C.sendOnce)(o(b.
	default.prSrc, {
			logid: "cs",
			key: t.key || E.
		default.key,
			subkey: t.subkey || "",
			id: t.styleId
		}))
	}
	function p(t, e) { (0, C.sendOnce)(o(b.
	default.prSrc, {
			logid: "os",
			key: t.key || E.
		default.key,
			num: e || 0
		}))
	}
	function d(t) {
		var e = t.zoom,
		n = t.pitch,
		r = t.rotation,
		i = t.width,
		s = t.height; (0, C.sendOnce)(o(b.
	default.prSrc, {
			logid: "minfo",
			zoom: Math.floor(e),
			pitch: n,
			rotation: r,
			width: i,
			height: s
		}))
	}
	function g(t, e) {
		if ("tile" === t) {
			var n = e.id,
			r = e.status,
			i = e.time,
			s = O[n];
			s || (s = new T(n), O[n] = s),
			s.logStatus(r),
			0 === r && i && s.logTime(i)
		} else {
			var a = {
				logid: "qos",
				t: t,
				info: e.styleId + "|" + e.version
			};
			e.error || 0 === e.error ? a.e = e.error: a.lt = e.loadTime,
			(0, C.sendOnce)(o(b.
		default.prSrc, a))
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.statCn = e.qos = e.minfo = e.os = e.cs = e.cl = e.fps = e.ds = e.frt = e.err = e.pv = void 0;
	var y = n(0),
	v = r(y),
	m = n(1),
	_ = r(m),
	w = n(23),
	b = r(w),
	x = n(105),
	E = r(x),
	M = n(89),
	I = r(M),
	S = n(145),
	C = n(144),
	N = n(138),
	P = r(N),
	L = n(28),
	A = !!E.
default.isLocal,
	O = (e.pv = i(s), e.err = i(a), e.frt = i(u), e.ds = i(c), e.fps = i(l), e.cl = i(h), e.cs = i(f), e.os = i(p), e.minfo = i(d), {}),
	T = (e.qos = i(g),
	function() {
		function t(e) {
			function n() {
				var t = this.id[0] + "_stat",
				e = this.id[0] + "_avg",
				n = {},
				r = this.tilesStatus.join("|");
				if ("0|0|0" !== r && (n[t] = r, this.tilesStatus = [0, 0, 0]), this.tilesTime.length > 0) {
					var i = this.tilesTime.reduce(function(t, e) {
						return t + e
					},
					0) / this.tilesTime.length;
					n[e] = Math.max(0, Math.floor(i)),
					this.tilesTime = []
				}
				return n
			} (0, v.
		default)(this, t),
			this.id = e,
			this.tilesStatus = [0, 0, 0],
			this.tilesTime = [],
			(0, C.sendPeriodically)("tile", o(b.
		default.prSrc, {
				logid: "qos",
				t: "tile"
			}), n.bind(this))
		}
		return (0, _.
	default)(t, [{
			key: "logStatus",
			value: function(t) {
				this.tilesStatus[t] += 1
			}
		},
		{
			key: "logTime",
			value: function(t) {
				this.tilesTime.push(t)
			}
		}]),
		t
	} ()),
	R = function() {
		function t() {
			setTimeout(function() {
				e.length > 0 && ((0, C.sendOnce)(o(b.
			default.prSrc, {
					logid: "cn",
					cn: e.join(",")
				})), e = []),
				t()
			},
			5e3)
		}
		var e = [];
		return t(),
		function(t) {
			t && e.push(t)
		}
	} ();
	e.statCn = i(R)
},
function(t, e) {
	t.exports = function(t) {
		if ("function" != typeof t) throw TypeError(t + " is not a function!");
		return t
	}
},
function(t, e) {
	e.f = {}.propertyIsEnumerable
},
function(t, e) {
	var n = 0,
	r = Math.random();
	t.exports = function(t) {
		return "Symbol(".concat(void 0 === t ? "": t, ")_", (++n + r).toString(36))
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var i = n(20),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(10),
	h = 90,
	f = 180,
	p = function() {
		function t(e, n) {
			var r = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 0,
			i = arguments[3];
			if ((0, a.
		default)(this, t), e = Number(e), n = Number(n), r = Number(r), isNaN(n) || isNaN(e) || isNaN(r)) throw new Error("参数错误：LatLng 传入参数 (" + e + ", " + n + ") 非合法数字。");
			if (i) e = (0, l.clamp)(e, -h, h),
			n = (0, l.wrap)(n, -f, f);
			else {
				if (e > h || e < -h) throw new Error("参数错误：LatLng.lat 取值应在 [" + -h + ", " + h + "] 区间内。");
				if (n > f || n < -f) throw new Error("参数错误：LatLng.lng 取值应在 [" + -f + ", " + f + "] 区间内。")
			}
			this.lat = e,
			this.lng = n,
			this.height = r
		}
		return (0, c.
	default)(t, [{
			key: "toString",
			value: function() {
				return this.lat + ", " + this.lng
			}
		},
		{
			key: "getLat",
			value: function() {
				return this.lat
			}
		},
		{
			key: "getLng",
			value: function() {
				return this.lng
			}
		},
		{
			key: "getHeight",
			value: function() {
				return this.height
			}
		},
		{
			key: "equals",
			value: function(t) {
				return this.lat === t.lat && this.lng === t.lng && this.height === t.height
			}
		}], [{
			key: "convert",
			value: function(e) {
				if (e instanceof t) return e;
				if (Array.isArray(e)) return new t(e[0], e[1], e[2], !0);
				if (!Array.isArray(e) && "object" === (void 0 === e ? "undefined": (0, o.
			default)(e)) && null !== e) return new t(e.lat, e.lng, e.height, !0);
				throw new Error("`LatLng` argument must be specified as a LatLng instance, an object {lat: <lat>, lng: <lng>}, or an array of [<lat>, <lng>]")
			}
		}]),
		t
	} ();
	t.exports = p
},
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		if (n = n || {},
		!S(n)) throw new Error("options is invalid");
		var r = n.bbox,
		i = n.id;
		if (void 0 === t) throw new Error("geometry is required");
		if (e && e.constructor !== Object) throw new Error("properties must be an Object");
		r && C(r),
		i && N(i);
		var o = {
			type: "Feature"
		};
		return i && (o.id = i),
		r && (o.bbox = r),
		o.properties = e || {},
		o.geometry = t,
		o
	}
	function i(t, e, n) {
		if (n = n || {},
		!S(n)) throw new Error("options is invalid");
		var r = n.bbox;
		if (!t) throw new Error("type is required");
		if (!e) throw new Error("coordinates is required");
		if (!Array.isArray(e)) throw new Error("coordinates must be an Array");
		r && C(r);
		var i;
		switch (t) {
		case "Point":
			i = o(e).geometry;
			break;
		case "LineString":
			i = c(e).geometry;
			break;
		case "Polygon":
			i = a(e).geometry;
			break;
		case "MultiPoint":
			i = p(e).geometry;
			break;
		case "MultiLineString":
			i = f(e).geometry;
			break;
		case "MultiPolygon":
			i = d(e).geometry;
			break;
		default:
			throw new Error(t + " is invalid")
		}
		return r && (i.bbox = r),
		i
	}
	function o(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
		if (t.length < 2) throw new Error("coordinates must be at least 2 numbers long");
		if (!I(t[0]) || !I(t[1])) throw new Error("coordinates must contain numbers");
		return r({
			type: "Point",
			coordinates: t
		},
		e, n)
	}
	function s(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
		return h(t.map(function(t) {
			return o(t, e)
		}), n)
	}
	function a(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		for (var i = 0; i < t.length; i++) {
			var o = t[i];
			if (o.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
			for (var s = 0; s < o[o.length - 1].length; s++) {
				if (0 === i && 0 === s && !I(o[0][0]) || !I(o[0][1])) throw new Error("coordinates must contain numbers");
				if (o[o.length - 1][s] !== o[0][s]) throw new Error("First and last Position are not equivalent.")
			}
		}
		return r({
			type: "Polygon",
			coordinates: t
		},
		e, n)
	}
	function u(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
		return h(t.map(function(t) {
			return a(t, e)
		}), n)
	}
	function c(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		if (t.length < 2) throw new Error("coordinates must be an array of two or more positions");
		if (!I(t[0][1]) || !I(t[0][1])) throw new Error("coordinates must contain numbers");
		return r({
			type: "LineString",
			coordinates: t
		},
		e, n)
	}
	function l(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
		return h(t.map(function(t) {
			return c(t, e)
		}), n)
	}
	function h(t, e) {
		if (e = e || {},
		!S(e)) throw new Error("options is invalid");
		var n = e.bbox,
		r = e.id;
		if (!t) throw new Error("No features passed");
		if (!Array.isArray(t)) throw new Error("features must be an Array");
		n && C(n),
		r && N(r);
		var i = {
			type: "FeatureCollection"
		};
		return r && (i.id = r),
		n && (i.bbox = n),
		i.features = t,
		i
	}
	function f(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		return r({
			type: "MultiLineString",
			coordinates: t
		},
		e, n)
	}
	function p(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		return r({
			type: "MultiPoint",
			coordinates: t
		},
		e, n)
	}
	function d(t, e, n) {
		if (!t) throw new Error("coordinates is required");
		return r({
			type: "MultiPolygon",
			coordinates: t
		},
		e, n)
	}
	function g(t, e, n) {
		if (!t) throw new Error("geometries is required");
		if (!Array.isArray(t)) throw new Error("geometries must be an Array");
		return r({
			type: "GeometryCollection",
			geometries: t
		},
		e, n)
	}
	function y(t, e) {
		if (void 0 === t || null === t || isNaN(t)) throw new Error("num is required");
		if (e && !(e >= 0)) throw new Error("precision must be a positive number");
		var n = Math.pow(10, e || 0);
		return Math.round(t * n) / n
	}
	function v(t, e) {
		if (void 0 === t || null === t) throw new Error("radians is required");
		if (e && "string" != typeof e) throw new Error("units must be a string");
		var n = F[e || "kilometers"];
		if (!n) throw new Error(e + " units is invalid");
		return t * n
	}
	function m(t, e) {
		if (void 0 === t || null === t) throw new Error("distance is required");
		if (e && "string" != typeof e) throw new Error("units must be a string");
		var n = F[e || "kilometers"];
		if (!n) throw new Error(e + " units is invalid");
		return t / n
	}
	function _(t, e) {
		return b(m(t, e))
	}
	function w(t) {
		if (null === t || void 0 === t) throw new Error("bearing is required");
		var e = t % 360;
		return e < 0 && (e += 360),
		e
	}
	function b(t) {
		if (null === t || void 0 === t) throw new Error("radians is required");
		return t % (2 * Math.PI) * 180 / Math.PI
	}
	function x(t) {
		if (null === t || void 0 === t) throw new Error("degrees is required");
		return t % 360 * Math.PI / 180
	}
	function E(t, e, n) {
		if (null === t || void 0 === t) throw new Error("length is required");
		if (! (t >= 0)) throw new Error("length must be a positive number");
		return v(m(t, e), n || "kilometers")
	}
	function M(t, e, n) {
		if (null === t || void 0 === t) throw new Error("area is required");
		if (! (t >= 0)) throw new Error("area must be a positive number");
		var r = q[e || "meters"];
		if (!r) throw new Error("invalid original units");
		var i = q[n || "kilometers"];
		if (!i) throw new Error("invalid final units");
		return t / r * i
	}
	function I(t) {
		return ! isNaN(t) && null !== t && !Array.isArray(t)
	}
	function S(t) {
		return !! t && t.constructor === Object
	}
	function C(t) {
		if (!t) throw new Error("bbox is required");
		if (!Array.isArray(t)) throw new Error("bbox must be an Array");
		if (4 !== t.length && 6 !== t.length) throw new Error("bbox must be an Array of 4 or 6 numbers");
		t.forEach(function(t) {
			if (!I(t)) throw new Error("bbox must only contain numbers")
		})
	}
	function N(t) {
		if (!t) throw new Error("id is required");
		if ( - 1 === ["string", "number"].indexOf(typeof t)) throw new Error("id must be a number or a string")
	}
	function P() {
		throw new Error("method has been renamed to `radiansToDegrees`")
	}
	function L() {
		throw new Error("method has been renamed to `degreesToRadians`")
	}
	function A() {
		throw new Error("method has been renamed to `lengthToDegrees`")
	}
	function O() {
		throw new Error("method has been renamed to `lengthToRadians`")
	}
	function T() {
		throw new Error("method has been renamed to `radiansToLength`")
	}
	function R() {
		throw new Error("method has been renamed to `bearingToAzimuth`")
	}
	function D() {
		throw new Error("method has been renamed to `convertLength`")
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	n.d(e, "earthRadius",
	function() {
		return k
	}),
	n.d(e, "factors",
	function() {
		return F
	}),
	n.d(e, "unitsFactors",
	function() {
		return j
	}),
	n.d(e, "areaFactors",
	function() {
		return q
	}),
	n.d(e, "feature",
	function() {
		return r
	}),
	n.d(e, "geometry",
	function() {
		return i
	}),
	n.d(e, "point",
	function() {
		return o
	}),
	n.d(e, "points",
	function() {
		return s
	}),
	n.d(e, "polygon",
	function() {
		return a
	}),
	n.d(e, "polygons",
	function() {
		return u
	}),
	n.d(e, "lineString",
	function() {
		return c
	}),
	n.d(e, "lineStrings",
	function() {
		return l
	}),
	n.d(e, "featureCollection",
	function() {
		return h
	}),
	n.d(e, "multiLineString",
	function() {
		return f
	}),
	n.d(e, "multiPoint",
	function() {
		return p
	}),
	n.d(e, "multiPolygon",
	function() {
		return d
	}),
	n.d(e, "geometryCollection",
	function() {
		return g
	}),
	n.d(e, "round",
	function() {
		return y
	}),
	n.d(e, "radiansToLength",
	function() {
		return v
	}),
	n.d(e, "lengthToRadians",
	function() {
		return m
	}),
	n.d(e, "lengthToDegrees",
	function() {
		return _
	}),
	n.d(e, "bearingToAzimuth",
	function() {
		return w
	}),
	n.d(e, "radiansToDegrees",
	function() {
		return b
	}),
	n.d(e, "degreesToRadians",
	function() {
		return x
	}),
	n.d(e, "convertLength",
	function() {
		return E
	}),
	n.d(e, "convertArea",
	function() {
		return M
	}),
	n.d(e, "isNumber",
	function() {
		return I
	}),
	n.d(e, "isObject",
	function() {
		return S
	}),
	n.d(e, "validateBBox",
	function() {
		return C
	}),
	n.d(e, "validateId",
	function() {
		return N
	}),
	n.d(e, "radians2degrees",
	function() {
		return P
	}),
	n.d(e, "degrees2radians",
	function() {
		return L
	}),
	n.d(e, "distanceToDegrees",
	function() {
		return A
	}),
	n.d(e, "distanceToRadians",
	function() {
		return O
	}),
	n.d(e, "radiansToDistance",
	function() {
		return T
	}),
	n.d(e, "bearingToAngle",
	function() {
		return R
	}),
	n.d(e, "convertDistance",
	function() {
		return D
	});
	var k = 6378136.49,
	F = {
		meters: k,
		metres: k,
		millimeters: 1e3 * k,
		millimetres: 1e3 * k,
		centimeters: 100 * k,
		centimetres: 100 * k,
		kilometers: k / 1e3,
		kilometres: k / 1e3,
		miles: k / 1609.344,
		nauticalmiles: k / 1852,
		inches: 39.37 * k,
		yards: k / 1.0936,
		feet: 3.28084 * k,
		radians: 1,
		degrees: k / 111325
	},
	j = {
		meters: 1,
		metres: 1,
		millimeters: 1e3,
		millimetres: 1e3,
		centimeters: 100,
		centimetres: 100,
		kilometers: .001,
		kilometres: .001,
		miles: 1 / 1609.344,
		nauticalmiles: 1 / 1852,
		inches: 39.37,
		yards: 1 / 1.0936,
		feet: 3.28084,
		radians: 1 / k,
		degrees: 1 / 111325
	},
	q = {
		meters: 1,
		metres: 1,
		millimeters: 1e6,
		millimetres: 1e6,
		centimeters: 1e4,
		centimetres: 1e4,
		kilometers: 1e-6,
		kilometres: 1e-6,
		acres: 247105e-9,
		miles: 3.86e-7,
		yards: 1.195990046,
		feet: 10.763910417,
		inches: 1550.003100006
	}
},
function(t, e, n) {
	var r = n(36),
	i = n(9)("toStringTag"),
	o = "Arguments" == r(function() {
		return arguments
	} ()),
	s = function(t, e) {
		try {
			return t[e]
		} catch(t) {}
	};
	t.exports = function(t) {
		var e, n, a;
		return void 0 === t ? "Undefined": null === t ? "Null": "string" == typeof(n = s(e = Object(t), i)) ? n: o ? r(e) : "Object" == (a = r(e)) && "function" == typeof e.callee ? "Arguments": a
	}
},
,
function(t, e, n) {
	var r = n(13),
	i = n(85),
	o = n(58),
	s = n(54)("IE_PROTO"),
	a = function() {},
	u = function() {
		var t, e = n(57)("iframe"),
		r = o.length;
		for (e.style.display = "none", n(83).appendChild(e), e.src = "javascript:", t = e.contentWindow.document, t.open(), t.write("<script>document.F=Object<\/script>"), t.close(), u = t.F; r--;) delete u.prototype[o[r]];
		return u()
	};
	t.exports = Object.create ||
	function(t, e) {
		var n;
		return null !== t ? (a.prototype = r(t), n = new a, a.prototype = null, n[s] = t) : n = u(),
		void 0 === e ? n: i(n, e)
	}
},
function(t, e, n) {
	var r = n(55),
	i = Math.min;
	t.exports = function(t) {
		return t > 0 ? i(r(t), 9007199254740991) : 0
	}
},
function(t, e) {
	t.exports = function(t) {
		if (void 0 == t) throw TypeError("Can't call method on  " + t);
		return t
	}
},
function(t, e, n) {
	var r = n(59)("keys"),
	i = n(46);
	t.exports = function(t) {
		return r[t] || (r[t] = i(t))
	}
},
function(t, e) {
	var n = Math.ceil,
	r = Math.floor;
	t.exports = function(t) {
		return isNaN(t = +t) ? 0 : (t > 0 ? r: n)(t)
	}
},
function(t, e, n) {
	"use strict";
	t.exports = "TMap"
},
function(t, e, n) {
	var r = n(7),
	i = n(8).document,
	o = r(i) && r(i.createElement);
	t.exports = function(t) {
		return o ? i.createElement(t) : {}
	}
},
function(t, e) {
	t.exports = "constructor,hasOwnProperty,isPrototypeOf,propertyIsEnumerable,toLocaleString,toString,valueOf".split(",")
},
function(t, e, n) {
	var r = n(2),
	i = n(8),
	o = i["__core-js_shared__"] || (i["__core-js_shared__"] = {}); (t.exports = function(t, e) {
		return o[t] || (o[t] = void 0 !== e ? e: {})
	})("versions", []).push({
		version: r.version,
		mode: n(37) ? "pure": "global",
		copyright: "© 2019 Denis Pushkarev (zloirock.ru)"
	})
},
, , , ,
function(t, e, n) {
	var r = n(7);
	t.exports = function(t, e) {
		if (!r(t)) return t;
		var n, i;
		if (e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i;
		if ("function" == typeof(n = t.valueOf) && !r(i = n.call(t))) return i;
		if (!e && "function" == typeof(n = t.toString) && !r(i = n.call(t))) return i;
		throw TypeError("Can't convert object to primitive value")
	}
},
function(t, e, n) {
	var r = n(49),
	i = n(9)("iterator"),
	o = n(26);
	t.exports = n(2).getIteratorMethod = function(t) {
		if (void 0 != t) return t[i] || t["@@iterator"] || o[r(t)]
	}
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		var e, n;
		this.promise = new t(function(t, r) {
			if (void 0 !== e || void 0 !== n) throw TypeError("Bad Promise constructor");
			e = t,
			n = r
		}),
		this.resolve = i(e),
		this.reject = i(n)
	}
	var i = n(44);
	t.exports.f = function(t) {
		return new r(t)
	}
},
function(t, e, n) {
	var r = n(45),
	i = n(38),
	o = n(18),
	s = n(64),
	a = n(21),
	u = n(84),
	c = Object.getOwnPropertyDescriptor;
	e.f = n(12) ? c: function(t, e) {
		if (t = o(t), e = s(e, !0), u) try {
			return c(t, e)
		} catch(t) {}
		if (a(t, e)) return i(!r.f.call(t, e), t[e])
	}
},
function(t, e, n) {
	var r = n(8),
	i = n(2),
	o = n(37),
	s = n(70),
	a = n(14).f;
	t.exports = function(t) {
		var e = i.Symbol || (i.Symbol = o ? {}: r.Symbol || {});
		"_" == t.charAt(0) || t in e || a(e, t, {
			value: s.f(t)
		})
	}
},
function(t, e, n) {
	e.f = n(9)
},
function(t, e, n) {
	var r = n(22),
	i = n(93),
	o = n(92),
	s = n(13),
	a = n(52),
	u = n(65),
	c = {},
	l = {},
	e = t.exports = function(t, e, n, h, f) {
		var p, d, g, y, v = f ?
		function() {
			return t
		}: u(t),
		m = r(n, h, e ? 2 : 1),
		_ = 0;
		if ("function" != typeof v) throw TypeError(t + " is not iterable!");
		if (o(v)) {
			for (p = a(t.length); p > _; _++) if ((y = e ? m(s(d = t[_])[0], d[1]) : m(t[_])) === c || y === l) return y
		} else for (g = v.call(t); ! (d = g.next()).done;) if ((y = i(g, m, d.value, e)) === c || y === l) return y
	};
	e.BREAK = c,
	e.RETURN = l
},
function(t, e, n) {
	"use strict";
	var r = n(37),
	i = n(6),
	o = n(81),
	s = n(19),
	a = n(26),
	u = n(130),
	c = n(42),
	l = n(86),
	h = n(9)("iterator"),
	f = !([].keys && "next" in [].keys()),
	p = function() {
		return this
	};
	t.exports = function(t, e, n, d, g, y, v) {
		u(n, e, d);
		var m, _, w, b = function(t) {
			if (!f && t in I) return I[t];
			switch (t) {
			case "keys":
			case "values":
				return function() {
					return new n(this, t)
				}
			}
			return function() {
				return new n(this, t)
			}
		},
		x = e + " Iterator",
		E = "values" == g,
		M = !1,
		I = t.prototype,
		S = I[h] || I["@@iterator"] || g && I[g],
		C = S || b(g),
		N = g ? E ? b("entries") : C: void 0,
		P = "Array" == e ? I.entries || S: S;
		if (P && (w = l(P.call(new t))) !== Object.prototype && w.next && (c(w, x, !0), r || "function" == typeof w[h] || s(w, h, p)), E && S && "values" !== S.name && (M = !0, C = function() {
			return S.call(this)
		}), r && !v || !f && !M && I[h] || s(I, h, C), a[e] = C, a[x] = p, g) if (m = {
			values: E ? C: b("values"),
			keys: y ? C: b("keys"),
			entries: N
		},
		v) for (_ in m) _ in I || o(I, _, m[_]);
		else i(i.P + i.F * (f || M), e, m);
		return m
	}
},
function(t, e) {},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var i = n(0),
	o = r(i),
	s = n(1),
	a = r(s),
	u = function() {
		function t(e, n) { (0, o.
		default)(this, t),
			this.x = e,
			this.y = n
		}
		return (0, a.
	default)(t, [{
			key: "toString",
			value: function() {
				return this.x + ", " + this.y
			}
		},
		{
			key: "getX",
			value: function() {
				return this.x
			}
		},
		{
			key: "getY",
			value: function() {
				return this.y
			}
		},
		{
			key: "clone",
			value: function() {
				return new t(this.x, this.y)
			}
		},
		{
			key: "add",
			value: function(t) {
				return this.clone()._add(t)
			}
		},
		{
			key: "sub",
			value: function(t) {
				return this.clone()._sub(t)
			}
		},
		{
			key: "mult",
			value: function(t) {
				return this.clone()._mult(t)
			}
		},
		{
			key: "div",
			value: function(t) {
				return this.clone()._div(t)
			}
		},
		{
			key: "rotate",
			value: function(t) {
				return this.clone()._rotate(t)
			}
		},
		{
			key: "matMult",
			value: function(t) {
				return this.clone()._matMult(t)
			}
		},
		{
			key: "unit",
			value: function() {
				return this.clone()._unit()
			}
		},
		{
			key: "perp",
			value: function() {
				return this.clone()._perp()
			}
		},
		{
			key: "round",
			value: function() {
				return this.clone()._round()
			}
		},
		{
			key: "mag",
			value: function() {
				return Math.sqrt(this.magSq())
			}
		},
		{
			key: "magSq",
			value: function() {
				return this.x * this.x + this.y * this.y
			}
		},
		{
			key: "equals",
			value: function(t) {
				return this.x === t.x && this.y === t.y
			}
		},
		{
			key: "dist",
			value: function(t) {
				return Math.sqrt(this.distSqr(t))
			}
		},
		{
			key: "distSqr",
			value: function(t) {
				var e = t.x - this.x,
				n = t.y - this.y;
				return e * e + n * n
			}
		},
		{
			key: "angle",
			value: function() {
				return Math.atan2(this.y, this.x)
			}
		},
		{
			key: "angleTo",
			value: function(t) {
				return Math.atan2(this.y - t.y, this.x - t.x)
			}
		},
		{
			key: "angleWith",
			value: function(t) {
				return this.angleWithSep(t.x, t.y)
			}
		},
		{
			key: "angleWithSep",
			value: function(t, e) {
				return Math.atan2(this.x * e - this.y * t, this.x * t + this.y * e)
			}
		},
		{
			key: "normalize",
			value: function() {
				return this.clone()._unit()
			}
		},
		{
			key: "dot",
			value: function(t) {
				return this.x * t.x + this.y * t.y
			}
		},
		{
			key: "length",
			value: function() {
				return this.mag()
			}
		},
		{
			key: "lengthSq",
			value: function() {
				return this.magSq()
			}
		},
		{
			key: "_matMult",
			value: function(t) {
				var e = t[0] * this.x + t[1] * this.y,
				n = t[2] * this.x + t[3] * this.y;
				return this.x = e,
				this.y = n,
				this
			}
		},
		{
			key: "_add",
			value: function(t) {
				return this.x += t.x,
				this.y += t.y,
				this
			}
		},
		{
			key: "_sub",
			value: function(t) {
				return this.x -= t.x,
				this.y -= t.y,
				this
			}
		},
		{
			key: "_mult",
			value: function(t) {
				return this.x *= t,
				this.y *= t,
				this
			}
		},
		{
			key: "_div",
			value: function(t) {
				return this.x /= t,
				this.y /= t,
				this
			}
		},
		{
			key: "_unit",
			value: function() {
				return 0 === this.x && 0 === this.y ? this: (this._div(this.mag()), this)
			}
		},
		{
			key: "_perp",
			value: function() {
				var t = this.y;
				return this.y = this.x,
				this.x = -t,
				this
			}
		},
		{
			key: "_rotate",
			value: function(t) {
				var e = Math.cos(t),
				n = Math.sin(t),
				r = e * this.x - n * this.y,
				i = n * this.x + e * this.y;
				return this.x = r,
				this.y = i,
				this
			}
		},
		{
			key: "_round",
			value: function() {
				return this.x = Math.round(this.x),
				this.y = Math.round(this.y),
				this
			}
		}]),
		t
	} ();
	u.convert = function(t) {
		return t instanceof u ? t: Array.isArray(t) ? new u(t[0], t[1]) : "x" in t && "y" in t && "number" == typeof t.x && "number" == typeof t.y ? new u(t.x, t.y) : t
	},
	t.exports = u
},
function(t, e, n) {
	t.exports = {
	default:
		n(161),
		__esModule: !0
	}
},
function(t, e) {
	e.f = Object.getOwnPropertySymbols
},
function(t, e, n) {
	t.exports = {
	default:
		n(159),
		__esModule: !0
	}
},
,
function(t, e, n) {
	"use strict";
	var r = n(25),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r),
	o = n(29);
	e.getJSON = function(t, n, r, i) {
		i = i || 0;
		var s = void 0,
		a = void 0,
		u = new XMLHttpRequest;
		return u.open("GET", n, !0),
		u.setRequestHeader("Accept", "application/json"),
		u.onloadstart = function() {
			return s = +new Date
		},
		u.onerror = function() {
			console.error(u.response, u, n),
			i > 2 ? r(new o.AJAXError(n, 0)) : (i += 1, e.getJSON(t, n, r, i))
		},
		u.onload = function() {
			if (u.status >= 200 && u.status < 300 && u.response) {
				a = +new Date;
				var t = void 0;
				try {
					t = JSON.parse(u.response)
				} catch(t) {
					return r(t)
				}
				r(null, t, a - s)
			} else r(new o.AJAXError(u.statusText, u.status))
		},
		u.send(),
		u
	},
	e.getArrayBuffer = function(t, e) {
		var n = new XMLHttpRequest;
		return n.open("GET", t, !0),
		n.responseType = "arraybuffer",
		n.onerror = function(t) {
			e(t)
		},
		n.onload = function() {
			if (0 === n.response.byteLength && 200 === n.status) return e(new Error("http status 200 returned without content."));
			n.status >= 200 && n.status < 300 && n.response ? e(null, {
				data: n.response,
				cacheControl: n.getResponseHeader("Cache-Control"),
				expires: n.getResponseHeader("Expires")
			}) : e(new o.AJAXError(n.statusText, n.status))
		},
		n.send(),
		n
	},
	e.getImage = function(t, e) {
		var n = new XMLHttpRequest,
		r = new i.
	default(function(r, i) {
			n.open("GET", t),
			n.responseType = "blob",
			n.timeout = e,
			n.onload = function() {
				n.status >= 200 && n.status < 300 && n.response ? (0 === n.response.size && i(new o.AJAXError("The size of image is 0", 404)), r(n.response)) : i(new o.AJAXError(n.statusText, n.status))
			},
			n.onerror = function() {
				i(new o.AJAXError("error", 0))
			},
			n.ontimeout = function() {
				i(new o.AJAXError("timeout", 0))
			},
			n.onabort = function() {
				i(new o.AJAXError("abort", 0))
			},
			n.send()
		});
		return {
			xhr: n,
			promise: r
		}
	},
	e.getImageData = function(t, n) {
		return e.getArrayBuffer(t,
		function(t, e) {
			if (t) return n(t);
			n(null, e)
		})
	}
},
function(t, e, n) {
	var r = n(36);
	t.exports = Object("z").propertyIsEnumerable(0) ? Object: function(t) {
		return "String" == r(t) ? t.split("") : Object(t)
	}
},
function(t, e, n) {
	t.exports = n(19)
},
function(t, e, n) {
	t.exports = {
	default:
		n(158),
		__esModule: !0
	}
},
function(t, e, n) {
	var r = n(8).document;
	t.exports = r && r.documentElement
},
function(t, e, n) {
	t.exports = !n(12) && !n(30)(function() {
		return 7 != Object.defineProperty(n(57)("div"), "a", {
			get: function() {
				return 7
			}
		}).a
	})
},
function(t, e, n) {
	var r = n(14),
	i = n(13),
	o = n(34);
	t.exports = n(12) ? Object.defineProperties: function(t, e) {
		i(t);
		for (var n, s = o(e), a = s.length, u = 0; a > u;) r.f(t, n = s[u++], e[n]);
		return t
	}
},
function(t, e, n) {
	var r = n(21),
	i = n(31),
	o = n(54)("IE_PROTO"),
	s = Object.prototype;
	t.exports = Object.getPrototypeOf ||
	function(t) {
		return t = i(t),
		r(t, o) ? t[o] : "function" == typeof t.constructor && t instanceof t.constructor ? t.constructor.prototype: t instanceof Object ? s: null
	}
},
function(t, e, n) {
	var r = n(21),
	i = n(18),
	o = n(129)(!1),
	s = n(54)("IE_PROTO");
	t.exports = function(t, e) {
		var n, a = i(t),
		u = 0,
		c = [];
		for (n in a) n != s && r(a, n) && c.push(n);
		for (; e.length > u;) r(a, n = e[u++]) && (~o(c, n) || c.push(n));
		return c
	}
},
,
function(t, e, n) {
	"use strict";
	var r = n(208),
	i = r && r.setItem && r.getItem;
	t.exports = {
		set: function(t, e, n) { (null !== e ? r.setItem(t, e) : r.removeItem(t)).then(function() {
				n && n()
			},
			function(t) {
				console.error(t),
				n && n(t)
			})
		},
		get: function(t, e) {
			r.getItem(t).then(function(t) {
				e && e(t)
			},
			function(t) {
				console.error(t),
				e && e(null)
			})
		},
		support: function() {
			return i
		}
	}
},
,
function(t, e) {
	t.exports = function(t, e, n, r) {
		if (! (t instanceof e) || void 0 !== r && r in t) throw TypeError(n + ": incorrect invocation!");
		return t
	}
},
function(t, e, n) {
	var r = n(26),
	i = n(9)("iterator"),
	o = Array.prototype;
	t.exports = function(t) {
		return void 0 !== t && (r.Array === t || o[i] === t)
	}
},
function(t, e, n) {
	var r = n(13);
	t.exports = function(t, e, n, i) {
		try {
			return i ? e(r(n)[0], n[1]) : e(n)
		} catch(e) {
			var o = t.
			return;
			throw void 0 !== o && r(o.call(t)),
			e
		}
	}
},
function(t, e, n) {
	var r = n(9)("iterator"),
	i = !1;
	try {
		var o = [7][r]();
		o.
		return = function() {
			i = !0
		},
		Array.from(o,
		function() {
			throw 2
		})
	} catch(t) {}
	t.exports = function(t, e) {
		if (!e && !i) return ! 1;
		var n = !1;
		try {
			var o = [7],
			s = o[r]();
			s.next = function() {
				return {
					done: n = !0
				}
			},
			o[r] = function() {
				return s
			},
			t(o)
		} catch(t) {}
		return n
	}
},
function(t, e, n) {
	var r = n(18),
	i = n(96).f,
	o = {}.toString,
	s = "object" == typeof window && window && Object.getOwnPropertyNames ? Object.getOwnPropertyNames(window) : [],
	a = function(t) {
		try {
			return i(t)
		} catch(t) {
			return s.slice()
		}
	};
	t.exports.f = function(t) {
		return s && "[object Window]" == o.call(t) ? a(t) : i(r(t))
	}
},
function(t, e, n) {
	var r = n(87),
	i = n(58).concat("length", "prototype");
	e.f = Object.getOwnPropertyNames ||
	function(t) {
		return r(t, i)
	}
},
function(t, e) {
	t.exports = function(t) {
		try {
			return {
				e: !1,
				v: t()
			}
		} catch(t) {
			return {
				e: !0,
				v: t
			}
		}
	}
},
function(t, e, n) {
	var r = n(13),
	i = n(7),
	o = n(67);
	t.exports = function(t, e) {
		if (r(t), i(e) && e.constructor === t) return e;
		var n = o.f(t);
		return (0, n.resolve)(e),
		n.promise
	}
},
function(t, e, n) {
	var r = n(19);
	t.exports = function(t, e, n) {
		for (var i in e) n && t[i] ? t[i] = e[i] : r(t, i, e[i]);
		return t
	}
},
function(t, e, n) {
	var r = n(13),
	i = n(44),
	o = n(9)("species");
	t.exports = function(t, e) {
		var n, s = r(t).constructor;
		return void 0 === s || void 0 == (n = r(s)[o]) ? e: i(n)
	}
},
function(t, e, n) {
	var r, i, o, s = n(22),
	a = n(179),
	u = n(83),
	c = n(57),
	l = n(8),
	h = l.process,
	f = l.setImmediate,
	p = l.clearImmediate,
	d = l.MessageChannel,
	g = l.Dispatch,
	y = 0,
	v = {},
	m = function() {
		var t = +this;
		if (v.hasOwnProperty(t)) {
			var e = v[t];
			delete v[t],
			e()
		}
	},
	_ = function(t) {
		m.call(t.data)
	};
	f && p || (f = function(t) {
		for (var e = [], n = 1; arguments.length > n;) e.push(arguments[n++]);
		return v[++y] = function() {
			a("function" == typeof t ? t: Function(t), e)
		},
		r(y),
		y
	},
	p = function(t) {
		delete v[t]
	},
	"process" == n(36)(h) ? r = function(t) {
		h.nextTick(s(m, t, 1))
	}: g && g.now ? r = function(t) {
		g.now(s(m, t, 1))
	}: d ? (i = new d, o = i.port2, i.port1.onmessage = _, r = s(o.postMessage, o, 1)) : l.addEventListener && "function" == typeof postMessage && !l.importScripts ? (r = function(t) {
		l.postMessage(t + "", "*")
	},
	l.addEventListener("message", _, !1)) : r = "onreadystatechange" in c("script") ?
	function(t) {
		u.appendChild(c("script")).onreadystatechange = function() {
			u.removeChild(this),
			m.call(t)
		}
	}: function(t) {
		setTimeout(s(m, t, 1), 0)
	}),
	t.exports = {
		set: f,
		clear: p
	}
},
, , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(122),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = i.
default[0]
},
,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Vector4 = e.Vector3 = e.Matrix4 = void 0;
	var r = n(20),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r),
	o = function(t) {
		var e = void 0,
		n = void 0,
		r = void 0;
		if (t && "object" === (void 0 === t ? "undefined": (0, i.
	default)(t)) && t.hasOwnProperty("elements")) {
			for (n = t.elements, r = new Float32Array(16), e = 0; e < 16; ++e) r[e] = n[e];
			this.elements = r
		} else {
			var o = new Float32Array(16);
			o[0] = 1,
			o[1] = 0,
			o[2] = 0,
			o[3] = 0,
			o[4] = 0,
			o[5] = 1,
			o[6] = 0,
			o[7] = 0,
			o[8] = 0,
			o[9] = 0,
			o[10] = 1,
			o[11] = 0,
			o[12] = 0,
			o[13] = 0,
			o[14] = 0,
			o[15] = 1,
			this.elements = o
		}
	};
	o.prototype.setIdentity = function() {
		var t = this.elements;
		return t[0] = 1,
		t[4] = 0,
		t[8] = 0,
		t[12] = 0,
		t[1] = 0,
		t[5] = 1,
		t[9] = 0,
		t[13] = 0,
		t[2] = 0,
		t[6] = 0,
		t[10] = 1,
		t[14] = 0,
		t[3] = 0,
		t[7] = 0,
		t[11] = 0,
		t[15] = 1,
		this
	},
	o.prototype.clone = function() {
		var t = new o,
		e = this.elements,
		n = t.elements;
		return n[0] = e[0],
		n[1] = e[1],
		n[2] = e[2],
		n[3] = e[3],
		n[4] = e[4],
		n[5] = e[5],
		n[6] = e[6],
		n[7] = e[7],
		n[8] = e[8],
		n[9] = e[9],
		n[10] = e[10],
		n[11] = e[11],
		n[12] = e[12],
		n[13] = e[13],
		n[14] = e[14],
		n[15] = e[15],
		t
	},
	o.prototype.set = function(t) {
		var e = void 0,
		n = t.elements,
		r = this.elements;
		if (n !== r) {
			for (e = 0; e < 16; ++e) r[e] = n[e];
			return this
		}
	},
	o.prototype.concat = function(t) {
		var e = void 0,
		n = void 0,
		r = void 0,
		i = void 0,
		o = void 0,
		s = void 0,
		a = this.elements,
		u = this.elements;
		if (n = t.elements, a === n) for (n = new Float32Array(16), e = 0; e < 16; ++e) n[e] = a[e];
		for (e = 0; e < 4; e++) r = u[e],
		i = u[e + 4],
		o = u[e + 8],
		s = u[e + 12],
		a[e] = r * n[0] + i * n[1] + o * n[2] + s * n[3],
		a[e + 4] = r * n[4] + i * n[5] + o * n[6] + s * n[7],
		a[e + 8] = r * n[8] + i * n[9] + o * n[10] + s * n[11],
		a[e + 12] = r * n[12] + i * n[13] + o * n[14] + s * n[15];
		return this
	},
	o.prototype.multiply = o.prototype.concat,
	o.prototype.multiplyVector3 = function(t) {
		var e = this.elements,
		n = t.elements,
		r = new s,
		i = r.elements;
		return i[0] = n[0] * e[0] + n[1] * e[4] + n[2] * e[8] + e[12],
		i[1] = n[0] * e[1] + n[1] * e[5] + n[2] * e[9] + e[13],
		i[2] = n[0] * e[2] + n[1] * e[6] + n[2] * e[10] + e[14],
		r
	},
	o.prototype.multiplyVector4 = function(t) {
		var e = this.elements,
		n = t.elements,
		r = new a,
		i = r.elements;
		return i[0] = n[0] * e[0] + n[1] * e[4] + n[2] * e[8] + n[3] * e[12],
		i[1] = n[0] * e[1] + n[1] * e[5] + n[2] * e[9] + n[3] * e[13],
		i[2] = n[0] * e[2] + n[1] * e[6] + n[2] * e[10] + n[3] * e[14],
		i[3] = n[0] * e[3] + n[1] * e[7] + n[2] * e[11] + n[3] * e[15],
		r
	},
	o.prototype.transpose = function() {
		var t = void 0,
		e = this.elements;
		return t = e[1],
		e[1] = e[4],
		e[4] = t,
		t = e[2],
		e[2] = e[8],
		e[8] = t,
		t = e[3],
		e[3] = e[12],
		e[12] = t,
		t = e[6],
		e[6] = e[9],
		e[9] = t,
		t = e[7],
		e[7] = e[13],
		e[13] = t,
		t = e[11],
		e[11] = e[14],
		e[14] = t,
		this
	},
	o.prototype.setInverseOf = function(t) {
		var e = void 0,
		n = void 0,
		r = t.elements,
		i = this.elements,
		o = new Float32Array(16);
		if (o[0] = r[5] * r[10] * r[15] - r[5] * r[11] * r[14] - r[9] * r[6] * r[15] + r[9] * r[7] * r[14] + r[13] * r[6] * r[11] - r[13] * r[7] * r[10], o[4] = -r[4] * r[10] * r[15] + r[4] * r[11] * r[14] + r[8] * r[6] * r[15] - r[8] * r[7] * r[14] - r[12] * r[6] * r[11] + r[12] * r[7] * r[10], o[8] = r[4] * r[9] * r[15] - r[4] * r[11] * r[13] - r[8] * r[5] * r[15] + r[8] * r[7] * r[13] + r[12] * r[5] * r[11] - r[12] * r[7] * r[9], o[12] = -r[4] * r[9] * r[14] + r[4] * r[10] * r[13] + r[8] * r[5] * r[14] - r[8] * r[6] * r[13] - r[12] * r[5] * r[10] + r[12] * r[6] * r[9], o[1] = -r[1] * r[10] * r[15] + r[1] * r[11] * r[14] + r[9] * r[2] * r[15] - r[9] * r[3] * r[14] - r[13] * r[2] * r[11] + r[13] * r[3] * r[10], o[5] = r[0] * r[10] * r[15] - r[0] * r[11] * r[14] - r[8] * r[2] * r[15] + r[8] * r[3] * r[14] + r[12] * r[2] * r[11] - r[12] * r[3] * r[10], o[9] = -r[0] * r[9] * r[15] + r[0] * r[11] * r[13] + r[8] * r[1] * r[15] - r[8] * r[3] * r[13] - r[12] * r[1] * r[11] + r[12] * r[3] * r[9], o[13] = r[0] * r[9] * r[14] - r[0] * r[10] * r[13] - r[8] * r[1] * r[14] + r[8] * r[2] * r[13] + r[12] * r[1] * r[10] - r[12] * r[2] * r[9], o[2] = r[1] * r[6] * r[15] - r[1] * r[7] * r[14] - r[5] * r[2] * r[15] + r[5] * r[3] * r[14] + r[13] * r[2] * r[7] - r[13] * r[3] * r[6], o[6] = -r[0] * r[6] * r[15] + r[0] * r[7] * r[14] + r[4] * r[2] * r[15] - r[4] * r[3] * r[14] - r[12] * r[2] * r[7] + r[12] * r[3] * r[6], o[10] = r[0] * r[5] * r[15] - r[0] * r[7] * r[13] - r[4] * r[1] * r[15] + r[4] * r[3] * r[13] + r[12] * r[1] * r[7] - r[12] * r[3] * r[5], o[14] = -r[0] * r[5] * r[14] + r[0] * r[6] * r[13] + r[4] * r[1] * r[14] - r[4] * r[2] * r[13] - r[12] * r[1] * r[6] + r[12] * r[2] * r[5], o[3] = -r[1] * r[6] * r[11] + r[1] * r[7] * r[10] + r[5] * r[2] * r[11] - r[5] * r[3] * r[10] - r[9] * r[2] * r[7] + r[9] * r[3] * r[6], o[7] = r[0] * r[6] * r[11] - r[0] * r[7] * r[10] - r[4] * r[2] * r[11] + r[4] * r[3] * r[10] + r[8] * r[2] * r[7] - r[8] * r[3] * r[6], o[11] = -r[0] * r[5] * r[11] + r[0] * r[7] * r[9] + r[4] * r[1] * r[11] - r[4] * r[3] * r[9] - r[8] * r[1] * r[7] + r[8] * r[3] * r[5], o[15] = r[0] * r[5] * r[10] - r[0] * r[6] * r[9] - r[4] * r[1] * r[10] + r[4] * r[2] * r[9] + r[8] * r[1] * r[6] - r[8] * r[2] * r[5], 0 === (n = r[0] * o[0] + r[1] * o[4] + r[2] * o[8] + r[3] * o[12])) return this;
		for (n = 1 / n, e = 0; e < 16; e++) i[e] = o[e] * n;
		return this
	},
	o.prototype.invert = function() {
		return this.setInverseOf(this)
	},
	o.prototype.setOrtho = function(t, e, n, r, i, o) {
		if (t === e || n === r || i === o) throw "null frustum";
		var s = 1 / (e - t),
		a = 1 / (r - n),
		u = 1 / (o - i),
		c = this.elements;
		return c[0] = 2 * s,
		c[1] = 0,
		c[2] = 0,
		c[3] = 0,
		c[4] = 0,
		c[5] = 2 * a,
		c[6] = 0,
		c[7] = 0,
		c[8] = 0,
		c[9] = 0,
		c[10] = -2 * u,
		c[11] = 0,
		c[12] = -(e + t) * s,
		c[13] = -(r + n) * a,
		c[14] = -(o + i) * u,
		c[15] = 1,
		this
	},
	o.prototype.ortho = function(t, e, n, r, i, s) {
		return this.concat((new o).setOrtho(t, e, n, r, i, s))
	},
	o.prototype.setFrustum = function(t, e, n, r, i, o) {
		if (t === e || r === n || i === o) throw "null frustum";
		if (i <= 0) throw "near <= 0";
		if (o <= 0) throw "far <= 0";
		var s = 1 / (e - t),
		a = 1 / (r - n),
		u = 1 / (o - i),
		c = this.elements;
		return c[0] = 2 * i * s,
		c[1] = 0,
		c[2] = 0,
		c[3] = 0,
		c[4] = 0,
		c[5] = 2 * i * a,
		c[6] = 0,
		c[7] = 0,
		c[8] = (e + t) * s,
		c[9] = (r + n) * a,
		c[10] = -(o + i) * u,
		c[11] = -1,
		c[12] = 0,
		c[13] = 0,
		c[14] = -2 * i * o * u,
		c[15] = 0,
		this
	},
	o.prototype.frustum = function(t, e, n, r, i, s) {
		return this.concat((new o).setFrustum(t, e, n, r, i, s))
	},
	o.prototype.setPerspective = function(t, e, n, r) {
		var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 0,
		o = arguments.length > 5 && void 0 !== arguments[5] ? arguments[5] : 0;
		if (n === r || 0 === e) throw "null frustum";
		if (n <= 0) throw "near <= 0";
		if (r <= 0) throw "far <= 0";
		t = Math.PI * t / 180 / 2;
		var s = Math.sin(t);
		if (0 === s) throw "null frustum";
		var a = 1 / (r - n),
		u = Math.cos(t) / s,
		c = this.elements;
		return c[0] = u / e,
		c[1] = 0,
		c[2] = 0,
		c[3] = 0,
		c[4] = 0,
		c[5] = u,
		c[6] = 0,
		c[7] = 0,
		c[8] = -i,
		c[9] = -o,
		c[10] = -(r + n) * a,
		c[11] = -1,
		c[12] = 0,
		c[13] = 0,
		c[14] = -2 * n * r * a,
		c[15] = 0,
		this
	},
	o.prototype.perspective = function(t, e, n, r) {
		return this.concat((new o).setPerspective(t, e, n, r))
	},
	o.prototype.setScale = function(t, e, n) {
		var r = this.elements;
		return r[0] = t,
		r[4] = 0,
		r[8] = 0,
		r[12] = 0,
		r[1] = 0,
		r[5] = e,
		r[9] = 0,
		r[13] = 0,
		r[2] = 0,
		r[6] = 0,
		r[10] = n,
		r[14] = 0,
		r[3] = 0,
		r[7] = 0,
		r[11] = 0,
		r[15] = 1,
		this
	},
	o.prototype.scale = function(t, e, n) {
		var r = this.elements;
		return r[0] *= t,
		r[4] *= e,
		r[8] *= n,
		r[1] *= t,
		r[5] *= e,
		r[9] *= n,
		r[2] *= t,
		r[6] *= e,
		r[10] *= n,
		r[3] *= t,
		r[7] *= e,
		r[11] *= n,
		this
	},
	o.prototype.setTranslate = function(t, e, n) {
		var r = this.elements;
		return r[0] = 1,
		r[4] = 0,
		r[8] = 0,
		r[12] = t,
		r[1] = 0,
		r[5] = 1,
		r[9] = 0,
		r[13] = e,
		r[2] = 0,
		r[6] = 0,
		r[10] = 1,
		r[14] = n,
		r[3] = 0,
		r[7] = 0,
		r[11] = 0,
		r[15] = 1,
		this
	},
	o.prototype.translate = function(t, e, n) {
		var r = this.elements;
		return r[12] += r[0] * t + r[4] * e + r[8] * n,
		r[13] += r[1] * t + r[5] * e + r[9] * n,
		r[14] += r[2] * t + r[6] * e + r[10] * n,
		r[15] += r[3] * t + r[7] * e + r[11] * n,
		this
	},
	o.prototype.setRotate = function(t, e, n, r) {
		var i = void 0,
		o = void 0,
		s = void 0,
		a = void 0,
		u = void 0,
		c = void 0,
		l = void 0,
		h = void 0,
		f = void 0,
		p = void 0;
		t = Math.PI * t / 180;
		var d = this.elements;
		i = Math.sin(t);
		var g = Math.cos(t);
		return 0 !== e && 0 === n && 0 === r ? (e < 0 && (i = -i), d[0] = 1, d[4] = 0, d[8] = 0, d[12] = 0, d[1] = 0, d[5] = g, d[9] = -i, d[13] = 0, d[2] = 0, d[6] = i, d[10] = g, d[14] = 0, d[3] = 0, d[7] = 0, d[11] = 0, d[15] = 1) : 0 === e && 0 !== n && 0 === r ? (n < 0 && (i = -i), d[0] = g, d[4] = 0, d[8] = i, d[12] = 0, d[1] = 0, d[5] = 1, d[9] = 0, d[13] = 0, d[2] = -i, d[6] = 0, d[10] = g, d[14] = 0, d[3] = 0, d[7] = 0, d[11] = 0, d[15] = 1) : 0 === e && 0 === n && 0 !== r ? (r < 0 && (i = -i), d[0] = g, d[4] = -i, d[8] = 0, d[12] = 0, d[1] = i, d[5] = g, d[9] = 0, d[13] = 0, d[2] = 0, d[6] = 0, d[10] = 1, d[14] = 0, d[3] = 0, d[7] = 0, d[11] = 0, d[15] = 1) : (o = Math.sqrt(e * e + n * n + r * r), 1 !== o && (s = 1 / o, e *= s, n *= s, r *= s), a = 1 - g, u = e * n, c = n * r, l = r * e, h = e * i, f = n * i, p = r * i, d[0] = e * e * a + g, d[1] = u * a + p, d[2] = l * a - f, d[3] = 0, d[4] = u * a - p, d[5] = n * n * a + g, d[6] = c * a + h, d[7] = 0, d[8] = l * a + f, d[9] = c * a - h, d[10] = r * r * a + g, d[11] = 0, d[12] = 0, d[13] = 0, d[14] = 0, d[15] = 1),
		this
	},
	o.prototype.rotate = function(t, e, n, r) {
		return this.concat((new o).setRotate(t, e, n, r))
	},
	o.prototype.setLookAt = function(t, e, n, r, i, o, s, a, u) {
		var c = void 0,
		l = void 0,
		h = void 0,
		f = void 0,
		p = void 0,
		d = void 0;
		c = r - t,
		l = i - e,
		h = o - n;
		var g = 1 / Math.sqrt(c * c + l * l + h * h);
		c *= g,
		l *= g,
		h *= g,
		f = l * u - h * a,
		p = h * s - c * u,
		d = c * a - l * s;
		var y = 1 / Math.sqrt(f * f + p * p + d * d);
		f *= y,
		p *= y,
		d *= y;
		var v = p * h - d * l,
		m = d * c - f * h,
		_ = f * l - p * c,
		w = this.elements;
		return w[0] = f,
		w[1] = v,
		w[2] = -c,
		w[3] = 0,
		w[4] = p,
		w[5] = m,
		w[6] = -l,
		w[7] = 0,
		w[8] = d,
		w[9] = _,
		w[10] = -h,
		w[11] = 0,
		w[12] = 0,
		w[13] = 0,
		w[14] = 0,
		w[15] = 1,
		this.translate( - t, -e, -n)
	},
	o.prototype.lookAt = function(t, e, n, r, i, s, a, u, c) {
		return this.concat((new o).setLookAt(t, e, n, r, i, s, a, u, c))
	},
	o.prototype.dropShadow = function(t, e) {
		var n = new o,
		r = n.elements,
		i = t[0] * e[0] + t[1] * e[1] + t[2] * e[2] + t[3] * e[3];
		return r[0] = i - e[0] * t[0],
		r[1] = -e[1] * t[0],
		r[2] = -e[2] * t[0],
		r[3] = -e[3] * t[0],
		r[4] = -e[0] * t[1],
		r[5] = i - e[1] * t[1],
		r[6] = -e[2] * t[1],
		r[7] = -e[3] * t[1],
		r[8] = -e[0] * t[2],
		r[9] = -e[1] * t[2],
		r[10] = i - e[2] * t[2],
		r[11] = -e[3] * t[2],
		r[12] = -e[0] * t[3],
		r[13] = -e[1] * t[3],
		r[14] = -e[2] * t[3],
		r[15] = i - e[3] * t[3],
		this.concat(n)
	},
	o.prototype.dropShadowDirectionally = function(t, e, n, r, i, o, s, a, u) {
		var c = r * t + i * e + o * n;
		return this.dropShadow([t, e, n, -c], [s, a, u, 0])
	};
	var s = function() {
		var t = 1 === arguments.length ? arguments[0] : arguments,
		e = new Float32Array(3);
		t && "object" === (void 0 === t ? "undefined": (0, i.
	default)(t)) && (e[0] = t[0], e[1] = t[1], e[2] = t[2]),
		this.elements = e
	};
	s.prototype.normalize = function() {
		var t = this.elements,
		e = t[0],
		n = t[1],
		r = t[2],
		i = Math.sqrt(e * e + n * n + r * r);
		return i ? 1 === i ? this: (i = 1 / i, t[0] = e * i, t[1] = n * i, t[2] = r * i, this) : (t[0] = 0, t[1] = 0, t[2] = 0, this)
	},
	s.prototype.scale = function() {
		var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 1,
		e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 1,
		n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1,
		r = this.elements;
		return r[0] *= t,
		r[1] *= e,
		r[2] *= n,
		this
	},
	s.prototype.cross = function(t) {
		var e = this.elements,
		n = t.elements;
		return new s(e[1] * n[2] - e[2] * n[1], e[2] * n[0] - e[0] * n[2], e[0] * n[1] - e[1] * n[0])
	},
	s.prototype.equals = function(t) {
		var e = this.elements,
		n = t.elements;
		return e[0] === n[0] && e[1] === n[1] && e[2] === n[2]
	};
	var a = function() {
		var t = 1 === arguments.length ? arguments[0] : arguments,
		e = new Float32Array(4);
		t && "object" === (void 0 === t ? "undefined": (0, i.
	default)(t)) && (e[0] = t[0], e[1] = t[1], e[2] = t[2], e[3] = t[3]),
		this.elements = e
	};
	a.prototype.set = function(t, e, n) {
		this.elements[0] = t,
		this.elements[1] = e,
		this.elements[2] = n
	},
	a.prototype.multiply = function(t) {
		return this.elements[0] *= t,
		this.elements[1] *= t,
		this.elements[2] *= t,
		this.elements[3] *= t,
		this
	},
	a.prototype.add = function(t) {
		return this.elements[0] += t.elements[0],
		this.elements[1] += t.elements[1],
		this.elements[2] += t.elements[2],
		this.elements[3] += t.elements[3],
		this
	},
	a.prototype.minus = function(t) {
		return this.elements[0] -= t.elements[0],
		this.elements[1] -= t.elements[1],
		this.elements[2] -= t.elements[2],
		this.elements[3] -= t.elements[3],
		this
	},
	e.Matrix4 = o,
	e.Vector3 = s,
	e.Vector4 = a
},
function(t, e) {
	t.exports = function(t, e) {
		return {
			value: e,
			done: !!t
		}
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		if (!t) throw new Error("obj is required");
		var e = i(t);
		if (e.length > 1 && n.i(f.isNumber)(e[0]) && n.i(f.isNumber)(e[1])) return e;
		throw new Error("Coordinate is not a valid Point")
	}
	function i(t) {
		if (!t) throw new Error("obj is required");
		var e;
		if (t.length ? e = t: t.coordinates ? e = t.coordinates: t.geometry && t.geometry.coordinates && (e = t.geometry.coordinates), e) return o(e),
		e;
		throw new Error("No valid coordinates")
	}
	function o(t) {
		if (t.length > 1 && n.i(f.isNumber)(t[0]) && n.i(f.isNumber)(t[1])) return ! 0;
		if (Array.isArray(t[0]) && t[0].length) return o(t[0]);
		throw new Error("coordinates must only contain numbers")
	}
	function s(t, e, n) {
		if (!e || !n) throw new Error("type and name required");
		if (!t || t.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.type)
	}
	function a(t, e, n) {
		if (!t) throw new Error("No feature passed");
		if (!n) throw new Error(".featureOf() requires a name");
		if (!t || "Feature" !== t.type || !t.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
		if (!t.geometry || t.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.geometry.type)
	}
	function u(t, e, n) {
		if (!t) throw new Error("No featureCollection passed");
		if (!n) throw new Error(".collectionOf() requires a name");
		if (!t || "FeatureCollection" !== t.type) throw new Error("Invalid input to " + n + ", FeatureCollection required");
		for (var r = 0; r < t.features.length; r++) {
			var i = t.features[r];
			if (!i || "Feature" !== i.type || !i.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
			if (!i.geometry || i.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + i.geometry.type)
		}
	}
	function c(t) {
		if (!t) throw new Error("geojson is required");
		if (void 0 !== t.geometry) return t.geometry;
		if (t.coordinates || t.geometries) return t;
		throw new Error("geojson must be a valid Feature or Geometry Object")
	}
	function l() {
		throw new Error("invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType")
	}
	function h(t, e) {
		if (!t) throw new Error((e || "geojson") + " is required");
		if (t.geometry && t.geometry.type) return t.geometry.type;
		if (t.type) return t.type;
		throw new Error((e || "geojson") + " is invalid")
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	n.d(e, "getCoord",
	function() {
		return r
	}),
	n.d(e, "getCoords",
	function() {
		return i
	}),
	n.d(e, "containsNumber",
	function() {
		return o
	}),
	n.d(e, "geojsonType",
	function() {
		return s
	}),
	n.d(e, "featureOf",
	function() {
		return a
	}),
	n.d(e, "collectionOf",
	function() {
		return u
	}),
	n.d(e, "getGeom",
	function() {
		return c
	}),
	n.d(e, "getGeomType",
	function() {
		return l
	}),
	n.d(e, "getType",
	function() {
		return h
	});
	var f = n(48)
},
, ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e, n) {
		return {
			x: t / n.width * 2 - 1,
			y: -e / n.height * 2 + 1,
			z: 1
		}
	}
	function o(t, e, n) {
		return {
			x: (t + 1) / 2 * n.width,
			y: (1 - e) / 2 * n.height
		}
	}
	function s(t, e, n) {
		var r = t.multiplyVector4(e),
		i = r.elements.map(function(t) {
			return t / r.elements[3]
		}),
		s = o(i[0], i[1], n);
		return {
			x: s.x,
			y: s.y,
			depthScale: 1
		}
	}
	function a(t, e) {
		var n = t.multiplyVector4(e);
		return n.multiply(1 / n.elements[3])
	}
	function u(t, e) {
		var n = t.clone().invert(),
		r = new b.Vector4(e.x, e.y, 0, 1),
		i = new b.Vector4(e.x, e.y, 1, 1),
		o = n.multiplyVector4(r),
		s = n.multiplyVector4(i);
		o.multiply(1 / o.elements[3]),
		s.multiply(1 / s.elements[3]);
		var a = (0 - o.elements[2]) / (s.elements[2] - o.elements[2]),
		u = o.add(s.minus(o).multiply(a));
		return {
			x: u.elements[0],
			y: u.elements[1]
		}
	}
	function c(t, e, n) {
		var r = t.clone().invert(),
		i = new b.Vector4(e.x, e.y, 0, 1),
		o = new b.Vector4(e.x, e.y, 1, 1),
		s = r.multiplyVector4(i),
		a = r.multiplyVector4(o);
		s.multiply(1 / s.elements[3]),
		a.multiply(1 / a.elements[3]);
		var u = new C.
	default(new b.Vector3(s.elements), new b.Vector3(a.elements)),
		c = new P.
	default(new b.Vector3(0, 0, -n), n),
		l = c.intersectWithLine(u);
		if (l.length) {
			var h = (0, d.
		default)(l, 2),
			f = h[0],
			p = h[1],
			g = f.elements[2] > p.elements[2] ? f: p,
			y = (0, d.
		default)(g.elements, 3);
			return {
				x: y[0],
				y: y[1],
				z: y[2]
			}
		}
		return null
	}
	function l(t) {
		return 2 * Math.PI * y.
	default / (Math.pow(2, t) * m.
	default.tileSize)
	}
	function h(t) {
		var e = t.x,
		n = t.y;
		return e = e / A * 180,
		n = n / A * 180,
		n = 180 / Math.PI * (2 * Math.atan(Math.exp(n * Math.PI / 180)) - Math.PI / 2),
		new E.
	default(n, e)
	}
	function f(t) {
		var e = t.lng,
		n = t.lat;
		return e = e * A / 180,
		n = Math.log(Math.tan((90 + n) * Math.PI / 360)) / (Math.PI / 180),
		n = n * A / 180,
		new I.
	default(e, n)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var p = n(32),
	d = r(p);
	e.fromScreenToNdc = i,
	e.fromNdcToScreen = o,
	e.getScreenCoordsByCustomMatrix = s,
	e.getNdcCoordsByCustomMatrix = a,
	e.getZPlaneCoordsByCustomMatrix = u,
	e.getSphereCoordsByCustomMatrix = c,
	e.getSpatialResolution = l,
	e.mercatorToLatLng = h,
	e.latLngToMercator = f;
	var g = n(295),
	y = r(g),
	v = n(23),
	m = r(v),
	_ = n(247),
	w = r(_),
	b = n(107),
	x = n(47),
	E = r(x),
	M = n(74),
	I = r(M),
	S = n(377),
	C = r(S),
	N = n(378),
	P = r(N),
	L = w.
default[1],
	A = L / 2
},
,
function(t, e, n) {
	t.exports = {
	default:
		n(160),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(162),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(164),
		__esModule: !0
	}
},
function(t, e, n) {
	var r = n(36);
	t.exports = Array.isArray ||
	function(t) {
		return "Array" == r(t)
	}
},
function(t, e, n) {
	var r = n(12),
	i = n(34),
	o = n(18),
	s = n(45).f;
	t.exports = function(t) {
		return function(e) {
			for (var n, a = o(e), u = i(a), c = u.length, l = 0, h = []; c > l;) n = u[l++],
			r && !s.call(a, n) || h.push(t ? [n, a[n]] : a[n]);
			return h
		}
	}
},
function(t, e, n) {
	"use strict";
	var r = n(8),
	i = n(2),
	o = n(14),
	s = n(12),
	a = n(9)("species");
	t.exports = function(t) {
		var e = "function" == typeof i[t] ? i[t] : r[t];
		s && e && !e[a] && o.f(e, a, {
			configurable: !0,
			get: function() {
				return this
			}
		})
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		console && console.warn && console.warn(t)
	}
	function i() {
		i.init.call(this)
	}
	function o(t) {
		return void 0 === t._maxListeners ? i.defaultMaxListeners: t._maxListeners
	}
	function s(t, e, n, i) {
		var s, a, u;
		if ("function" != typeof n) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof n);
		if (a = t._events, void 0 === a ? (a = t._events = Object.create(null), t._eventsCount = 0) : (void 0 !== a.newListener && (t.emit("newListener", e, n.listener ? n.listener: n), a = t._events), u = a[e]), void 0 === u) u = a[e] = n,
		++t._eventsCount;
		else if ("function" == typeof u ? u = a[e] = i ? [n, u] : [u, n] : i ? u.unshift(n) : u.push(n), (s = o(t)) > 0 && u.length > s && !u.warned) {
			u.warned = !0;
			var c = new Error("Possible EventEmitter memory leak detected. " + u.length + " " + String(e) + " listeners added. Use emitter.setMaxListeners() to increase limit");
			c.name = "MaxListenersExceededWarning",
			c.emitter = t,
			c.type = e,
			c.count = u.length,
			r(c)
		}
		return t
	}
	function a() {
		for (var t = [], e = 0; e < arguments.length; e++) t.push(arguments[e]);
		this.fired || (this.target.removeListener(this.type, this.wrapFn), this.fired = !0, y(this.listener, this.target, t))
	}
	function u(t, e, n) {
		var r = {
			fired: !1,
			wrapFn: void 0,
			target: t,
			type: e,
			listener: n
		},
		i = a.bind(r);
		return i.listener = n,
		r.wrapFn = i,
		i
	}
	function c(t, e, n) {
		var r = t._events;
		if (void 0 === r) return [];
		var i = r[e];
		return void 0 === i ? [] : "function" == typeof i ? n ? [i.listener || i] : [i] : n ? p(i) : h(i, i.length)
	}
	function l(t) {
		var e = this._events;
		if (void 0 !== e) {
			var n = e[t];
			if ("function" == typeof n) return 1;
			if (void 0 !== n) return n.length
		}
		return 0
	}
	function h(t, e) {
		for (var n = new Array(e), r = 0; r < e; ++r) n[r] = t[r];
		return n
	}
	function f(t, e) {
		for (; e + 1 < t.length; e++) t[e] = t[e + 1];
		t.pop()
	}
	function p(t) {
		for (var e = new Array(t.length), n = 0; n < e.length; ++n) e[n] = t[n].listener || t[n];
		return e
	}
	var d, g = "object" == typeof Reflect ? Reflect: null,
	y = g && "function" == typeof g.apply ? g.apply: function(t, e, n) {
		return Function.prototype.apply.call(t, e, n)
	};
	d = g && "function" == typeof g.ownKeys ? g.ownKeys: Object.getOwnPropertySymbols ?
	function(t) {
		return Object.getOwnPropertyNames(t).concat(Object.getOwnPropertySymbols(t))
	}: function(t) {
		return Object.getOwnPropertyNames(t)
	};
	var v = Number.isNaN ||
	function(t) {
		return t !== t
	};
	t.exports = i,
	i.EventEmitter = i,
	i.prototype._events = void 0,
	i.prototype._eventsCount = 0,
	i.prototype._maxListeners = void 0;
	var m = 10;
	Object.defineProperty(i, "defaultMaxListeners", {
		enumerable: !0,
		get: function() {
			return m
		},
		set: function(t) {
			if ("number" != typeof t || t < 0 || v(t)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + t + ".");
			m = t
		}
	}),
	i.init = function() {
		void 0 !== this._events && this._events !== Object.getPrototypeOf(this)._events || (this._events = Object.create(null), this._eventsCount = 0),
		this._maxListeners = this._maxListeners || void 0
	},
	i.prototype.setMaxListeners = function(t) {
		if ("number" != typeof t || t < 0 || v(t)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + t + ".");
		return this._maxListeners = t,
		this
	},
	i.prototype.getMaxListeners = function() {
		return o(this)
	},
	i.prototype.emit = function(t) {
		for (var e = [], n = 1; n < arguments.length; n++) e.push(arguments[n]);
		var r = "error" === t,
		i = this._events;
		if (void 0 !== i) r = r && void 0 === i.error;
		else if (!r) return ! 1;
		if (r) {
			var o;
			if (e.length > 0 && (o = e[0]), o instanceof Error) throw o;
			var s = new Error("Unhandled error." + (o ? " (" + o.message + ")": ""));
			throw s.context = o,
			s
		}
		var a = i[t];
		if (void 0 === a) return ! 1;
		if ("function" == typeof a) y(a, this, e);
		else for (var u = a.length,
		c = h(a, u), n = 0; n < u; ++n) y(c[n], this, e);
		return ! 0
	},
	i.prototype.addListener = function(t, e) {
		return s(this, t, e, !1)
	},
	i.prototype.on = i.prototype.addListener,
	i.prototype.prependListener = function(t, e) {
		return s(this, t, e, !0)
	},
	i.prototype.once = function(t, e) {
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		return this.on(t, u(this, t, e)),
		this
	},
	i.prototype.prependOnceListener = function(t, e) {
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		return this.prependListener(t, u(this, t, e)),
		this
	},
	i.prototype.removeListener = function(t, e) {
		var n, r, i, o, s;
		if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e);
		if (void 0 === (r = this._events)) return this;
		if (void 0 === (n = r[t])) return this;
		if (n === e || n.listener === e) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete r[t], r.removeListener && this.emit("removeListener", t, n.listener || e));
		else if ("function" != typeof n) {
			for (i = -1, o = n.length - 1; o >= 0; o--) if (n[o] === e || n[o].listener === e) {
				s = n[o].listener,
				i = o;
				break
			}
			if (i < 0) return this;
			0 === i ? n.shift() : f(n, i),
			1 === n.length && (r[t] = n[0]),
			void 0 !== r.removeListener && this.emit("removeListener", t, s || e)
		}
		return this
	},
	i.prototype.off = i.prototype.removeListener,
	i.prototype.removeAllListeners = function(t) {
		var e, n, r;
		if (void 0 === (n = this._events)) return this;
		if (void 0 === n.removeListener) return 0 === arguments.length ? (this._events = Object.create(null), this._eventsCount = 0) : void 0 !== n[t] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete n[t]),
		this;
		if (0 === arguments.length) {
			var i, o = Object.keys(n);
			for (r = 0; r < o.length; ++r)"removeListener" !== (i = o[r]) && this.removeAllListeners(i);
			return this.removeAllListeners("removeListener"),
			this._events = Object.create(null),
			this._eventsCount = 0,
			this
		}
		if ("function" == typeof(e = n[t])) this.removeListener(t, e);
		else if (void 0 !== e) for (r = e.length - 1; r >= 0; r--) this.removeListener(t, e[r]);
		return this
	},
	i.prototype.listeners = function(t) {
		return c(this, t, !0)
	},
	i.prototype.rawListeners = function(t) {
		return c(this, t, !1)
	},
	i.listenerCount = function(t, e) {
		return "function" == typeof t.listenerCount ? t.listenerCount(e) : l.call(t, e)
	},
	i.prototype.listenerCount = l,
	i.prototype.eventNames = function() {
		return this._eventsCount > 0 ? d(this._events) : []
	}
},
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		if (null !== t) for (var i, o, s, a, u, c, l, h, f = 0,
		p = 0,
		d = t.type,
		g = "FeatureCollection" === d,
		y = "Feature" === d,
		v = g ? t.features.length: 1, m = 0; m < v; m++) {
			l = g ? t.features[m].geometry: y ? t.geometry: t,
			h = !!l && "GeometryCollection" === l.type,
			u = h ? l.geometries.length: 1;
			for (var _ = 0; _ < u; _++) {
				var w = 0,
				b = 0;
				if (null !== (a = h ? l.geometries[_] : l)) {
					c = a.coordinates;
					var x = a.type;
					switch (f = !n || "Polygon" !== x && "MultiPolygon" !== x ? 0 : 1, x) {
					case null:
						break;
					case "Point":
						e(c, p, m, w, b),
						p++,
						w++;
						break;
					case "LineString":
					case "MultiPoint":
						for (i = 0; i < c.length; i++) e(c[i], p, m, w, b),
						p++,
						"MultiPoint" === x && w++;
						"LineString" === x && w++;
						break;
					case "Polygon":
					case "MultiLineString":
						for (i = 0; i < c.length; i++) {
							for (o = 0; o < c[i].length - f; o++) e(c[i][o], p, m, w, b),
							p++;
							"MultiLineString" === x && w++,
							"Polygon" === x && b++
						}
						"Polygon" === x && w++;
						break;
					case "MultiPolygon":
						for (i = 0; i < c.length; i++) {
							for ("MultiPolygon" === x && (b = 0), o = 0; o < c[i].length; o++) {
								for (s = 0; s < c[i][o].length - f; s++) e(c[i][o][s], p, m, w, b),
								p++;
								b++
							}
							w++
						}
						break;
					case "GeometryCollection":
						for (i = 0; i < a.geometries.length; i++) r(a.geometries[i], e, n);
						break;
					default:
						throw new Error("Unknown Geometry Type")
					}
				}
			}
		}
	}
	function i(t, e, n, i) {
		var o = n;
		return r(t,
		function(t, r, i, s, a) {
			o = 0 === r && void 0 === n ? t: e(o, t, r, i, s, a)
		},
		i),
		o
	}
	function o(t, e) {
		var n;
		switch (t.type) {
		case "FeatureCollection":
			for (n = 0; n < t.features.length; n++) e(t.features[n].properties, n);
			break;
		case "Feature":
			e(t.properties, 0)
		}
	}
	function s(t, e, n) {
		var r = n;
		return o(t,
		function(t, i) {
			r = 0 === i && void 0 === n ? t: e(r, t, i)
		}),
		r
	}
	function a(t, e) {
		if ("Feature" === t.type) e(t, 0);
		else if ("FeatureCollection" === t.type) for (var n = 0; n < t.features.length; n++) e(t.features[n], n)
	}
	function u(t, e, n) {
		var r = n;
		return a(t,
		function(t, i) {
			r = 0 === i && void 0 === n ? t: e(r, t, i)
		}),
		r
	}
	function c(t) {
		var e = [];
		return r(t,
		function(t) {
			e.push(t)
		}),
		e
	}
	function l(t, e) {
		var n, r, i, o, s, a, u, c, l, h, f = 0,
		p = "FeatureCollection" === t.type,
		d = "Feature" === t.type,
		g = p ? t.features.length: 1;
		for (n = 0; n < g; n++) {
			for (a = p ? t.features[n].geometry: d ? t.geometry: t, c = p ? t.features[n].properties: d ? t.properties: {},
			l = p ? t.features[n].bbox: d ? t.bbox: void 0, h = p ? t.features[n].id: d ? t.id: void 0, u = !!a && "GeometryCollection" === a.type, s = u ? a.geometries.length: 1, i = 0; i < s; i++) if (null !== (o = u ? a.geometries[i] : a)) switch (o.type) {
			case "Point":
			case "LineString":
			case "MultiPoint":
			case "Polygon":
			case "MultiLineString":
			case "MultiPolygon":
				e(o, f, c, l, h);
				break;
			case "GeometryCollection":
				for (r = 0; r < o.geometries.length; r++) e(o.geometries[r], f, c, l, h);
				break;
			default:
				throw new Error("Unknown Geometry Type")
			} else e(null, f, c, l, h);
			f++
		}
	}
	function h(t, e, n) {
		var r = n;
		return l(t,
		function(t, i, o, s, a) {
			r = 0 === i && void 0 === n ? t: e(r, t, i, o, s, a)
		}),
		r
	}
	function f(t, e) {
		l(t,
		function(t, r, i, o, s) {
			var a = null === t ? null: t.type;
			switch (a) {
			case null:
			case "Point":
			case "LineString":
			case "Polygon":
				return void e(n.i(m.feature)(t, i, {
					bbox: o,
					id: s
				}), r, 0)
			}
			var u;
			switch (a) {
			case "MultiPoint":
				u = "Point";
				break;
			case "MultiLineString":
				u = "LineString";
				break;
			case "MultiPolygon":
				u = "Polygon"
			}
			t.coordinates.forEach(function(t, o) {
				var s = {
					type: u,
					coordinates: t
				};
				e(n.i(m.feature)(s, i), r, o)
			})
		})
	}
	function p(t, e, n) {
		var r = n;
		return f(t,
		function(t, i, o) {
			r = 0 === i && 0 === o && void 0 === n ? t: e(r, t, i, o)
		}),
		r
	}
	function d(t, e) {
		f(t,
		function(t, r, o) {
			var s = 0;
			if (t.geometry) {
				var a = t.geometry.type;
				"Point" !== a && "MultiPoint" !== a && i(t,
				function(i, a, u, c, l, h) {
					var f = n.i(m.lineString)([i, a], t.properties);
					return e(f, r, o, h, s),
					s++,
					a
				})
			}
		})
	}
	function g(t, e, n) {
		var r = n,
		i = !1;
		return d(t,
		function(t, o, s, a, u) {
			r = !1 === i && void 0 === n ? t: e(r, t, o, s, a, u),
			i = !0
		}),
		r
	}
	function y(t, e) {
		if (!t) throw new Error("geojson is required");
		f(t,
		function(t, r, i) {
			if (null !== t.geometry) {
				var o = t.geometry.type,
				s = t.geometry.coordinates;
				switch (o) {
				case "LineString":
					e(t, r, i, 0, 0);
					break;
				case "Polygon":
					for (var a = 0; a < s.length; a++) e(n.i(m.lineString)(s[a], t.properties), r, i, a)
				}
			}
		})
	}
	function v(t, e, n) {
		var r = n;
		return y(t,
		function(t, i, o, s) {
			r = 0 === i && void 0 === n ? t: e(r, t, i, o, s)
		}),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	n.d(e, "coordEach",
	function() {
		return r
	}),
	n.d(e, "coordReduce",
	function() {
		return i
	}),
	n.d(e, "propEach",
	function() {
		return o
	}),
	n.d(e, "propReduce",
	function() {
		return s
	}),
	n.d(e, "featureEach",
	function() {
		return a
	}),
	n.d(e, "featureReduce",
	function() {
		return u
	}),
	n.d(e, "coordAll",
	function() {
		return c
	}),
	n.d(e, "geomEach",
	function() {
		return l
	}),
	n.d(e, "geomReduce",
	function() {
		return h
	}),
	n.d(e, "flattenEach",
	function() {
		return f
	}),
	n.d(e, "flattenReduce",
	function() {
		return p
	}),
	n.d(e, "segmentEach",
	function() {
		return d
	}),
	n.d(e, "segmentReduce",
	function() {
		return g
	}),
	n.d(e, "lineEach",
	function() {
		return y
	}),
	n.d(e, "lineReduce",
	function() {
		return v
	});
	var m = n(48)
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		t.loadScriptTime = e,
		u[0] = t;
		for (var n in t) o.hasOwnProperty(n) && (o[n] = t[n])
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(56),
	o = n(23),
	s = 2 * Math.PI * 6378136.49,
	a = [6378136.49, s],
	u = [{},
	a],
	c = self[i] && self[i].__load;
	c && c(r),
	self.CESIUM_BASE_URL = o.cesiumStaticSrc,
	e.
default = u
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return [t.getLng(), t.getLat()]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t * (Math.PI / 180)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = r
},
function(t, e, n) {
	t.exports = {
	default:
		n(127),
		__esModule: !0
	}
},
function(t, e, n) {
	n(39),
	n(33),
	t.exports = n(133)
},
function(t, e, n) {
	n(39),
	n(33),
	t.exports = n(134)
},
function(t, e) {
	t.exports = function() {}
},
function(t, e, n) {
	var r = n(18),
	i = n(52),
	o = n(132);
	t.exports = function(t) {
		return function(e, n, s) {
			var a, u = r(e),
			c = i(u.length),
			l = o(s, c);
			if (t && n != n) {
				for (; c > l;) if ((a = u[l++]) != a) return ! 0
			} else for (; c > l; l++) if ((t || l in u) && u[l] === n) return t || l || 0;
			return ! t && -1
		}
	}
},
function(t, e, n) {
	"use strict";
	var r = n(51),
	i = n(38),
	o = n(42),
	s = {};
	n(19)(s, n(9)("iterator"),
	function() {
		return this
	}),
	t.exports = function(t, e, n) {
		t.prototype = r(s, {
			next: i(1, n)
		}),
		o(t, e + " Iterator")
	}
},
function(t, e, n) {
	var r = n(55),
	i = n(53);
	t.exports = function(t) {
		return function(e, n) {
			var o, s, a = String(i(e)),
			u = r(n),
			c = a.length;
			return u < 0 || u >= c ? t ? "": void 0 : (o = a.charCodeAt(u), o < 55296 || o > 56319 || u + 1 === c || (s = a.charCodeAt(u + 1)) < 56320 || s > 57343 ? t ? a.charAt(u) : o: t ? a.slice(u, u + 2) : s - 56320 + (o - 55296 << 10) + 65536)
		}
	}
},
function(t, e, n) {
	var r = n(55),
	i = Math.max,
	o = Math.min;
	t.exports = function(t, e) {
		return t = r(t),
		t < 0 ? i(t + e, 0) : o(t, e)
	}
},
function(t, e, n) {
	var r = n(13),
	i = n(65);
	t.exports = n(2).getIterator = function(t) {
		var e = i(t);
		if ("function" != typeof e) throw TypeError(t + " is not iterable!");
		return r(e.call(t))
	}
},
function(t, e, n) {
	var r = n(49),
	i = n(9)("iterator"),
	o = n(26);
	t.exports = n(2).isIterable = function(t) {
		var e = Object(t);
		return void 0 !== e[i] || "@@iterator" in e || o.hasOwnProperty(r(e))
	}
},
function(t, e, n) {
	"use strict";
	var r = n(128),
	i = n(108),
	o = n(26),
	s = n(18);
	t.exports = n(72)(Array, "Array",
	function(t, e) {
		this._t = s(t),
		this._i = 0,
		this._k = e
	},
	function() {
		var t = this._t,
		e = this._k,
		n = this._i++;
		return ! t || n >= t.length ? (this._t = void 0, i(1)) : "keys" == e ? i(0, n) : "values" == e ? i(0, t[n]) : i(0, [n, t[n]])
	},
	"values"),
	o.Arguments = o.Array,
	r("keys"),
	r("values"),
	r("entries")
},
, ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = {
		init: function() {
			this.browser = this.searchString(this.dataBrowser) || "An unknown browser",
			this.version = this.searchVersion(navigator.userAgent) || this.searchVersion(navigator.appVersion) || "an unknown version",
			this.OS = this.searchString(this.dataOS) || "an unknown OS"
		},
		searchString: function(t) {
			for (var e = 0; e < t.length; e++) {
				var n = t[e].string,
				r = t[e].prop;
				if (this.versionSearchString = t[e].versionSearch || t[e].identity, n) {
					if ( - 1 !== n.indexOf(t[e].subString)) return t[e].identity
				} else if (r) return t[e].identity
			}
		},
		searchVersion: function(t) {
			var e = t.indexOf(this.versionSearchString);
			if ( - 1 !== e) return parseFloat(t.substring(e + this.versionSearchString.length + 1))
		},
		dataBrowser: [{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{
			string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: self.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}],
		dataOS: [{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.userAgent,
			subString: "iPhone",
			identity: "iPhone"
		},
		{
			string: navigator.userAgent,
			subString: "Android",
			identity: "Android"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}]
	};
	r.init(),
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t - (0, s.
	default)(t)
	}
	function i(t) {
		var e = (0, s.
	default)(t);
		return {
			high:
			e,
			low: t - e
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(401),
	s = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.fp64LowPart = r,
	e.splitLatLngNumber = i
},
function(t, e, n) {
	t.exports = {
	default:
		n(224),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(163),
		__esModule: !0
	}
},
function(t, e) {
	var n;
	n = function() {
		return this
	} ();
	try {
		n = n || Function("return this")() || (0, eval)("this")
	} catch(t) {
		"object" == typeof window && (n = window)
	}
	t.exports = n
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i() {
		return "&random=" + ( + new Date).toString(36)
	}
	function o(t) { (0, b.getImage)(t + i())
	}
	function s(t) {
		if (self.window) { (new Image).src = t + i()
		}
	}
	function a(t, e, n) {
		var r = x[t];
		return r || (r = new E({
			id: t,
			path: e
		})),
		r.on("send",
		function() {
			r.receiveData(n())
		}),
		x[t]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(4),
	v = r(y);
	e.sendByAjax = o,
	e.sendOnce = s,
	e.sendPeriodically = a;
	var m = n(120),
	_ = n(10),
	w = r(_),
	b = n(79),
	x = {},
	E = function(t) {
		function e(t) {
			var n = t.id,
			r = t.path; (0, h.
		default)(this, e);
			var i = (0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this));
			return i.id = n,
			i.path = r,
			i.dataList = [],
			setInterval(function() {
				i.send()
			},
			5e3),
			window.addEventListener("beforeunload",
			function() {
				i.send()
			}),
			i
		}
		return (0, v.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "receiveData",
			value: function(t) {
				var e = this;
				w.
			default.forIn(t,
				function(t, n) {
					e.dataList.push(t + "=" + n)
				})
			}
		},
		{
			key: "send",
			value: function() {
				if (this.emit("send"), this.dataList.length > 0) {
					var t = this.path + ( - 1 === this.path.indexOf("?") ? "?": "&") + this.dataList.join("&");
					this.dataList = [],
					s(t)
				}
			}
		}]),
		e
	} (m.EventEmitter)
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i() {
		return !! (o() && s() && a() && u() && c() && l() && h() && f())
	}
	function o() {
		return "undefined" != typeof window && "undefined" != typeof document
	}
	function s() {
		return Array.prototype && Array.prototype.every && Array.prototype.filter && Array.prototype.forEach && Array.prototype.indexOf && Array.prototype.lastIndexOf && Array.prototype.map && Array.prototype.some && Array.prototype.reduce && Array.prototype.reduceRight && Array.isArray
	}
	function a() {
		return Function.prototype && Function.prototype.bind
	}
	function u() {
		return q.
	default && F.
	default && D.
	default && T.
	default && A.
	default && P.
	default && C.
	default && I.
	default && E.
	default && b.
	default && _.
	default && v.
	default && g.
	default
	}
	function c() {
		return "JSON" in window && "parse" in JSON && "stringify" in JSON
	}
	function l() {
		return "Worker" in window
	}
	function h() {
		return "Uint8ClampedArray" in window
	}
	function f() {
		var t = B.context || null;
		if (!t) {
			t = p(),
			B.context = t;
			var e = t.getExtension("WEBGL_debug_renderer_info"),
			n = t.getParameter(e.UNMASKED_VENDOR_WEBGL),
			r = t.getParameter(e.UNMASKED_RENDERER_WEBGL);
			B.vendor = n,
			B.renderer = r,
			B.isIndependentDisplayCard = !/(\bHD\b)|(\bUHD\b)/.test(r)
		}
		return B
	}
	function p() {
		var t = document.createElement("canvas"),
		e = (0, F.
	default)(i.webGLContextAttributes);
		return t.getContext("webgl", e) || t.getContext("experimental-webgl", e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var d = n(153),
	g = r(d),
	y = n(141),
	v = r(y),
	m = n(154),
	_ = r(m),
	w = n(114),
	b = r(w),
	x = n(75),
	E = r(x),
	M = n(116),
	I = r(M),
	S = n(150),
	C = r(S),
	N = n(151),
	P = r(N),
	L = n(152),
	A = r(L),
	O = n(149),
	T = r(O),
	R = n(3),
	D = r(R),
	k = n(77),
	F = r(k),
	j = n(17),
	q = r(j);
	e.isSupported = i,
	e.isWebGLSupportedCached = f;
	var B = {};
	i.webGLContextAttributes = {
		antialias: !1,
		alpha: !0,
		stencil: !0,
		depth: !0
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var i = n(0),
	o = r(i),
	s = n(1),
	a = r(s),
	u = function() {
		function t(e, n, r, i) { (0, o.
		default)(this, t),
			this.cx = 3 * e,
			this.bx = 3 * (r - e) - this.cx,
			this.ax = 1 - this.cx - this.bx,
			this.cy = 3 * n,
			this.by = 3 * (i - n) - this.cy,
			this.ay = 1 - this.cy - this.by,
			this.p1x = e,
			this.p1y = n,
			this.p2x = r,
			this.p2y = i
		}
		return (0, a.
	default)(t, [{
			key: "sampleCurveX",
			value: function(t) {
				return ((this.ax * t + this.bx) * t + this.cx) * t
			}
		},
		{
			key: "sampleCurveY",
			value: function(t) {
				return ((this.ay * t + this.by) * t + this.cy) * t
			}
		},
		{
			key: "sampleCurveDerivativeX",
			value: function(t) {
				return (3 * this.ax * t + 2 * this.bx) * t + this.cx
			}
		},
		{
			key: "solveCurveX",
			value: function(t, e) {
				void 0 === e && (e = 1e-6);
				var n = void 0,
				r = void 0,
				i = void 0,
				o = void 0,
				s = void 0;
				for (i = t, s = 0; s < 8; s++) {
					if (o = this.sampleCurveX(i) - t, Math.abs(o) < e) return i;
					var a = this.sampleCurveDerivativeX(i);
					if (Math.abs(a) < 1e-6) break;
					i -= o / a
				}
				if (n = 0, r = 1, (i = t) < n) return n;
				if (i > r) return r;
				for (; n < r;) {
					if (o = this.sampleCurveX(i), Math.abs(o - t) < e) return i;
					t > o ? n = i: r = i,
					i = .5 * (r - n) + n
				}
				return i
			}
		},
		{
			key: "solve",
			value: function(t, e) {
				return this.sampleCurveY(this.solveCurveX(t, e))
			}
		}]),
		t
	} ();
	t.exports = u
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t / (Math.PI / 180)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = r
},
function(t, e, n) {
	t.exports = {
	default:
		n(307),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(165),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(167),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(168),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(169),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(171),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(172),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(173),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(175),
		__esModule: !0
	}
},
function(t, e, n) {
	t.exports = {
	default:
		n(176),
		__esModule: !0
	}
},
function(t, e, n) {
	n(33),
	n(184),
	t.exports = n(2).Array.from
},
function(t, e, n) {
	n(185);
	var r = n(2).Object;
	t.exports = function(t, e) {
		return r.create(t, e)
	}
},
function(t, e, n) {
	n(186);
	var r = n(2).Object;
	t.exports = function(t, e) {
		return r.defineProperties(t, e)
	}
},
function(t, e, n) {
	n(187);
	var r = n(2).Object;
	t.exports = function(t, e, n) {
		return r.defineProperty(t, e, n)
	}
},
function(t, e, n) {
	n(201),
	t.exports = n(2).Object.entries
},
function(t, e, n) {
	n(188),
	t.exports = n(2).Object.freeze
},
function(t, e, n) {
	n(189);
	var r = n(2).Object;
	t.exports = function(t, e) {
		return r.getOwnPropertyDescriptor(t, e)
	}
},
function(t, e, n) {
	n(190);
	var r = n(2).Object;
	t.exports = function(t) {
		return r.getOwnPropertyNames(t)
	}
},
function(t, e, n) {
	n(191),
	t.exports = n(2).Object.getPrototypeOf
},
function(t, e, n) {
	n(192),
	t.exports = n(2).Object.isExtensible
},
function(t, e, n) {
	n(193),
	t.exports = n(2).Object.isFrozen
},
function(t, e, n) {
	n(194),
	t.exports = n(2).Object.isSealed
},
function(t, e, n) {
	n(195),
	t.exports = n(2).Object.keys
},
function(t, e, n) {
	n(196),
	t.exports = n(2).Object.preventExtensions
},
function(t, e, n) {
	n(197),
	t.exports = n(2).Object.seal
},
function(t, e, n) {
	n(198),
	t.exports = n(2).Object.setPrototypeOf
},
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(199),
	n(202),
	n(203),
	t.exports = n(2).Promise
},
function(t, e, n) {
	n(200),
	n(73),
	n(204),
	n(205),
	t.exports = n(2).Symbol
},
function(t, e, n) {
	n(33),
	n(39),
	t.exports = n(70).f("iterator")
},
function(t, e, n) {
	"use strict";
	var r = n(14),
	i = n(38);
	t.exports = function(t, e, n) {
		e in t ? r.f(t, e, i(0, n)) : t[e] = n
	}
},
function(t, e, n) {
	var r = n(34),
	i = n(76),
	o = n(45);
	t.exports = function(t) {
		var e = r(t),
		n = i.f;
		if (n) for (var s, a = n(t), u = o.f, c = 0; a.length > c;) u.call(t, s = a[c++]) && e.push(s);
		return e
	}
},
function(t, e) {
	t.exports = function(t, e, n) {
		var r = void 0 === n;
		switch (e.length) {
		case 0:
			return r ? t() : t.call(n);
		case 1:
			return r ? t(e[0]) : t.call(n, e[0]);
		case 2:
			return r ? t(e[0], e[1]) : t.call(n, e[0], e[1]);
		case 3:
			return r ? t(e[0], e[1], e[2]) : t.call(n, e[0], e[1], e[2]);
		case 4:
			return r ? t(e[0], e[1], e[2], e[3]) : t.call(n, e[0], e[1], e[2], e[3])
		}
		return t.apply(n, e)
	}
},
function(t, e, n) {
	var r = n(8),
	i = n(101).set,
	o = r.MutationObserver || r.WebKitMutationObserver,
	s = r.process,
	a = r.Promise,
	u = "process" == n(36)(s);
	t.exports = function() {
		var t, e, n, c = function() {
			var r, i;
			for (u && (r = s.domain) && r.exit(); t;) {
				i = t.fn,
				t = t.next;
				try {
					i()
				} catch(r) {
					throw t ? n() : e = void 0,
					r
				}
			}
			e = void 0,
			r && r.enter()
		};
		if (u) n = function() {
			s.nextTick(c)
		};
		else if (!o || r.navigator && r.navigator.standalone) if (a && a.resolve) {
			var l = a.resolve(void 0);
			n = function() {
				l.then(c)
			}
		} else n = function() {
			i.call(r, c)
		};
		else {
			var h = !0,
			f = document.createTextNode("");
			new o(c).observe(f, {
				characterData: !0
			}),
			n = function() {
				f.data = h = !h
			}
		}
		return function(r) {
			var i = {
				fn: r,
				next: void 0
			};
			e && (e.next = i),
			t || (t = i, n()),
			e = i
		}
	}
},
function(t, e, n) {
	var r = n(7),
	i = n(13),
	o = function(t, e) {
		if (i(t), !r(e) && null !== e) throw TypeError(e + ": can't set as prototype!")
	};
	t.exports = {
		set: Object.setPrototypeOf || ("__proto__" in {} ?
		function(t, e, r) {
			try {
				r = n(22)(Function.call, n(68).f(Object.prototype, "__proto__").set, 2),
				r(t, []),
				e = !(t instanceof Array)
			} catch(t) {
				e = !0
			}
			return function(t, n) {
				return o(t, n),
				e ? t.__proto__ = n: r(t, n),
				t
			}
		} ({},
		!1) : void 0),
		check: o
	}
},
function(t, e, n) {
	var r = n(8),
	i = r.navigator;
	t.exports = i && i.userAgent || ""
},
function(t, e, n) {
	var r = n(7);
	t.exports = function(t, e) {
		if (!r(t) || t._t !== e) throw TypeError("Incompatible receiver, " + e + " required!");
		return t
	}
},
function(t, e, n) {
	"use strict";
	var r = n(22),
	i = n(6),
	o = n(31),
	s = n(93),
	a = n(92),
	u = n(52),
	c = n(177),
	l = n(65);
	i(i.S + i.F * !n(94)(function(t) {
		Array.from(t)
	}), "Array", {
		from: function(t) {
			var e, n, i, h, f = o(t),
			p = "function" == typeof this ? this: Array,
			d = arguments.length,
			g = d > 1 ? arguments[1] : void 0,
			y = void 0 !== g,
			v = 0,
			m = l(f);
			if (y && (g = r(g, d > 2 ? arguments[2] : void 0, 2)), void 0 == m || p == Array && a(m)) for (e = u(f.length), n = new p(e); e > v; v++) c(n, v, y ? g(f[v], v) : f[v]);
			else for (h = m.call(f), n = new p; ! (i = h.next()).done; v++) c(n, v, y ? s(h, g, [i.value, v], !0) : i.value);
			return n.length = v,
			n
		}
	})
},
function(t, e, n) {
	var r = n(6);
	r(r.S, "Object", {
		create: n(51)
	})
},
function(t, e, n) {
	var r = n(6);
	r(r.S + r.F * !n(12), "Object", {
		defineProperties: n(85)
	})
},
function(t, e, n) {
	var r = n(6);
	r(r.S + r.F * !n(12), "Object", {
		defineProperty: n(14).f
	})
},
function(t, e, n) {
	var r = n(7),
	i = n(40).onFreeze;
	n(15)("freeze",
	function(t) {
		return function(e) {
			return t && r(e) ? t(i(e)) : e
		}
	})
},
function(t, e, n) {
	var r = n(18),
	i = n(68).f;
	n(15)("getOwnPropertyDescriptor",
	function() {
		return function(t, e) {
			return i(r(t), e)
		}
	})
},
function(t, e, n) {
	n(15)("getOwnPropertyNames",
	function() {
		return n(95).f
	})
},
function(t, e, n) {
	var r = n(31),
	i = n(86);
	n(15)("getPrototypeOf",
	function() {
		return function(t) {
			return i(r(t))
		}
	})
},
function(t, e, n) {
	var r = n(7);
	n(15)("isExtensible",
	function(t) {
		return function(e) {
			return !! r(e) && (!t || t(e))
		}
	})
},
function(t, e, n) {
	var r = n(7);
	n(15)("isFrozen",
	function(t) {
		return function(e) {
			return ! r(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var r = n(7);
	n(15)("isSealed",
	function(t) {
		return function(e) {
			return ! r(e) || !!t && t(e)
		}
	})
},
function(t, e, n) {
	var r = n(31),
	i = n(34);
	n(15)("keys",
	function() {
		return function(t) {
			return i(r(t))
		}
	})
},
function(t, e, n) {
	var r = n(7),
	i = n(40).onFreeze;
	n(15)("preventExtensions",
	function(t) {
		return function(e) {
			return t && r(e) ? t(i(e)) : e
		}
	})
},
function(t, e, n) {
	var r = n(7),
	i = n(40).onFreeze;
	n(15)("seal",
	function(t) {
		return function(e) {
			return t && r(e) ? t(i(e)) : e
		}
	})
},
function(t, e, n) {
	var r = n(6);
	r(r.S, "Object", {
		setPrototypeOf: n(181).set
	})
},
function(t, e, n) {
	"use strict";
	var r, i, o, s, a = n(37),
	u = n(8),
	c = n(22),
	l = n(49),
	h = n(6),
	f = n(7),
	p = n(44),
	d = n(91),
	g = n(71),
	y = n(100),
	v = n(101).set,
	m = n(180)(),
	_ = n(67),
	w = n(97),
	b = n(182),
	x = n(98),
	E = u.TypeError,
	M = u.process,
	I = M && M.versions,
	S = I && I.v8 || "",
	C = u.Promise,
	N = "process" == l(M),
	P = function() {},
	L = i = _.f,
	A = !!
	function() {
		try {
			var t = C.resolve(1),
			e = (t.constructor = {})[n(9)("species")] = function(t) {
				t(P, P)
			};
			return (N || "function" == typeof PromiseRejectionEvent) && t.then(P) instanceof e && 0 !== S.indexOf("6.6") && -1 === b.indexOf("Chrome/66")
		} catch(t) {}
	} (),
	O = function(t) {
		var e;
		return ! (!f(t) || "function" != typeof(e = t.then)) && e
	},
	T = function(t, e) {
		if (!t._n) {
			t._n = !0;
			var n = t._c;
			m(function() {
				for (var r = t._v,
				i = 1 == t._s,
				o = 0; n.length > o;) !
				function(e) {
					var n, o, s, a = i ? e.ok: e.fail,
					u = e.resolve,
					c = e.reject,
					l = e.domain;
					try {
						a ? (i || (2 == t._h && k(t), t._h = 1), !0 === a ? n = r: (l && l.enter(), n = a(r), l && (l.exit(), s = !0)), n === e.promise ? c(E("Promise-chain cycle")) : (o = O(n)) ? o.call(n, u, c) : u(n)) : c(r)
					} catch(t) {
						l && !s && l.exit(),
						c(t)
					}
				} (n[o++]);
				t._c = [],
				t._n = !1,
				e && !t._h && R(t)
			})
		}
	},
	R = function(t) {
		v.call(u,
		function() {
			var e, n, r, i = t._v,
			o = D(t);
			if (o && (e = w(function() {
				N ? M.emit("unhandledRejection", i, t) : (n = u.onunhandledrejection) ? n({
					promise: t,
					reason: i
				}) : (r = u.console) && r.error && r.error("Unhandled promise rejection", i)
			}), t._h = N || D(t) ? 2 : 1), t._a = void 0, o && e.e) throw e.v
		})
	},
	D = function(t) {
		return 1 !== t._h && 0 === (t._a || t._c).length
	},
	k = function(t) {
		v.call(u,
		function() {
			var e;
			N ? M.emit("rejectionHandled", t) : (e = u.onrejectionhandled) && e({
				promise: t,
				reason: t._v
			})
		})
	},
	F = function(t) {
		var e = this;
		e._d || (e._d = !0, e = e._w || e, e._v = t, e._s = 2, e._a || (e._a = e._c.slice()), T(e, !0))
	},
	j = function(t) {
		var e, n = this;
		if (!n._d) {
			n._d = !0,
			n = n._w || n;
			try {
				if (n === t) throw E("Promise can't be resolved itself"); (e = O(t)) ? m(function() {
					var r = {
						_w: n,
						_d: !1
					};
					try {
						e.call(t, c(j, r, 1), c(F, r, 1))
					} catch(t) {
						F.call(r, t)
					}
				}) : (n._v = t, n._s = 1, T(n, !1))
			} catch(t) {
				F.call({
					_w: n,
					_d: !1
				},
				t)
			}
		}
	};
	A || (C = function(t) {
		d(this, C, "Promise", "_h"),
		p(t),
		r.call(this);
		try {
			t(c(j, this, 1), c(F, this, 1))
		} catch(t) {
			F.call(this, t)
		}
	},
	r = function(t) {
		this._c = [],
		this._a = void 0,
		this._s = 0,
		this._d = !1,
		this._v = void 0,
		this._h = 0,
		this._n = !1
	},
	r.prototype = n(99)(C.prototype, {
		then: function(t, e) {
			var n = L(y(this, C));
			return n.ok = "function" != typeof t || t,
			n.fail = "function" == typeof e && e,
			n.domain = N ? M.domain: void 0,
			this._c.push(n),
			this._a && this._a.push(n),
			this._s && T(this, !1),
			n.promise
		},
		catch: function(t) {
			return this.then(void 0, t)
		}
	}), o = function() {
		var t = new r;
		this.promise = t,
		this.resolve = c(j, t, 1),
		this.reject = c(F, t, 1)
	},
	_.f = L = function(t) {
		return t === C || t === s ? new o(t) : i(t)
	}),
	h(h.G + h.W + h.F * !A, {
		Promise: C
	}),
	n(42)(C, "Promise"),
	n(119)("Promise"),
	s = n(2).Promise,
	h(h.S + h.F * !A, "Promise", {
		reject: function(t) {
			var e = L(this);
			return (0, e.reject)(t),
			e.promise
		}
	}),
	h(h.S + h.F * (a || !A), "Promise", {
		resolve: function(t) {
			return x(a && this === s ? C: this, t)
		}
	}),
	h(h.S + h.F * !(A && n(94)(function(t) {
		C.all(t).
		catch(P)
	})), "Promise", {
		all: function(t) {
			var e = this,
			n = L(e),
			r = n.resolve,
			i = n.reject,
			o = w(function() {
				var n = [],
				o = 0,
				s = 1;
				g(t, !1,
				function(t) {
					var a = o++,
					u = !1;
					n.push(void 0),
					s++,
					e.resolve(t).then(function(t) {
						u || (u = !0, n[a] = t, --s || r(n))
					},
					i)
				}),
				--s || r(n)
			});
			return o.e && i(o.v),
			n.promise
		},
		race: function(t) {
			var e = this,
			n = L(e),
			r = n.reject,
			i = w(function() {
				g(t, !1,
				function(t) {
					e.resolve(t).then(n.resolve, r)
				})
			});
			return i.e && r(i.v),
			n.promise
		}
	})
},
function(t, e, n) {
	"use strict";
	var r = n(8),
	i = n(21),
	o = n(12),
	s = n(6),
	a = n(81),
	u = n(40).KEY,
	c = n(30),
	l = n(59),
	h = n(42),
	f = n(46),
	p = n(9),
	d = n(70),
	g = n(69),
	y = n(178),
	v = n(117),
	m = n(13),
	_ = n(7),
	w = n(31),
	b = n(18),
	x = n(64),
	E = n(38),
	M = n(51),
	I = n(95),
	S = n(68),
	C = n(76),
	N = n(14),
	P = n(34),
	L = S.f,
	A = N.f,
	O = I.f,
	T = r.Symbol,
	R = r.JSON,
	D = R && R.stringify,
	k = p("_hidden"),
	F = p("toPrimitive"),
	j = {}.propertyIsEnumerable,
	q = l("symbol-registry"),
	B = l("symbols"),
	G = l("op-symbols"),
	U = Object.prototype,
	z = "function" == typeof T && !!C.f,
	Y = r.QObject,
	X = !Y || !Y.prototype || !Y.prototype.findChild,
	V = o && c(function() {
		return 7 != M(A({},
		"a", {
			get: function() {
				return A(this, "a", {
					value: 7
				}).a
			}
		})).a
	}) ?
	function(t, e, n) {
		var r = L(U, e);
		r && delete U[e],
		A(t, e, n),
		r && t !== U && A(U, e, r)
	}: A,
	W = function(t) {
		var e = B[t] = M(T.prototype);
		return e._k = t,
		e
	},
	H = z && "symbol" == typeof T.iterator ?
	function(t) {
		return "symbol" == typeof t
	}: function(t) {
		return t instanceof T
	},
	J = function(t, e, n) {
		return t === U && J(G, e, n),
		m(t),
		e = x(e, !0),
		m(n),
		i(B, e) ? (n.enumerable ? (i(t, k) && t[k][e] && (t[k][e] = !1), n = M(n, {
			enumerable: E(0, !1)
		})) : (i(t, k) || A(t, k, E(1, {})), t[k][e] = !0), V(t, e, n)) : A(t, e, n)
	},
	Z = function(t, e) {
		m(t);
		for (var n, r = y(e = b(e)), i = 0, o = r.length; o > i;) J(t, n = r[i++], e[n]);
		return t
	},
	Q = function(t, e) {
		return void 0 === e ? M(t) : Z(M(t), e)
	},
	K = function(t) {
		var e = j.call(this, t = x(t, !0));
		return ! (this === U && i(B, t) && !i(G, t)) && (!(e || !i(this, t) || !i(B, t) || i(this, k) && this[k][t]) || e)
	},
	$ = function(t, e) {
		if (t = b(t), e = x(e, !0), t !== U || !i(B, e) || i(G, e)) {
			var n = L(t, e);
			return ! n || !i(B, e) || i(t, k) && t[k][e] || (n.enumerable = !0),
			n
		}
	},
	tt = function(t) {
		for (var e, n = O(b(t)), r = [], o = 0; n.length > o;) i(B, e = n[o++]) || e == k || e == u || r.push(e);
		return r
	},
	et = function(t) {
		for (var e, n = t === U,
		r = O(n ? G: b(t)), o = [], s = 0; r.length > s;) ! i(B, e = r[s++]) || n && !i(U, e) || o.push(B[e]);
		return o
	};
	z || (T = function() {
		if (this instanceof T) throw TypeError("Symbol is not a constructor!");
		var t = f(arguments.length > 0 ? arguments[0] : void 0),
		e = function(n) {
			this === U && e.call(G, n),
			i(this, k) && i(this[k], t) && (this[k][t] = !1),
			V(this, t, E(1, n))
		};
		return o && X && V(U, t, {
			configurable: !0,
			set: e
		}),
		W(t)
	},
	a(T.prototype, "toString",
	function() {
		return this._k
	}), S.f = $, N.f = J, n(96).f = I.f = tt, n(45).f = K, C.f = et, o && !n(37) && a(U, "propertyIsEnumerable", K, !0), d.f = function(t) {
		return W(p(t))
	}),
	s(s.G + s.W + s.F * !z, {
		Symbol: T
	});
	for (var nt = "hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables".split(","), rt = 0; nt.length > rt;) p(nt[rt++]);
	for (var it = P(p.store), ot = 0; it.length > ot;) g(it[ot++]);
	s(s.S + s.F * !z, "Symbol", {
		for: function(t) {
			return i(q, t += "") ? q[t] : q[t] = T(t)
		},
		keyFor: function(t) {
			if (!H(t)) throw TypeError(t + " is not a symbol!");
			for (var e in q) if (q[e] === t) return e
		},
		useSetter: function() {
			X = !0
		},
		useSimple: function() {
			X = !1
		}
	}),
	s(s.S + s.F * !z, "Object", {
		create: Q,
		defineProperty: J,
		defineProperties: Z,
		getOwnPropertyDescriptor: $,
		getOwnPropertyNames: tt,
		getOwnPropertySymbols: et
	});
	var st = c(function() {
		C.f(1)
	});
	s(s.S + s.F * st, "Object", {
		getOwnPropertySymbols: function(t) {
			return C.f(w(t))
		}
	}),
	R && s(s.S + s.F * (!z || c(function() {
		var t = T();
		return "[null]" != D([t]) || "{}" != D({
			a: t
		}) || "{}" != D(Object(t))
	})), "JSON", {
		stringify: function(t) {
			for (var e, n, r = [t], i = 1; arguments.length > i;) r.push(arguments[i++]);
			if (n = e = r[1], (_(e) || void 0 !== t) && !H(t)) return v(e) || (e = function(t, e) {
				if ("function" == typeof n && (e = n.call(this, t, e)), !H(e)) return e
			}),
			r[1] = e,
			D.apply(R, r)
		}
	}),
	T.prototype[F] || n(19)(T.prototype, F, T.prototype.valueOf),
	h(T, "Symbol"),
	h(Math, "Math", !0),
	h(r.JSON, "JSON", !0)
},
function(t, e, n) {
	var r = n(6),
	i = n(118)(!0);
	r(r.S, "Object", {
		entries: function(t) {
			return i(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var r = n(6),
	i = n(2),
	o = n(8),
	s = n(100),
	a = n(98);
	r(r.P + r.R, "Promise", {
		finally: function(t) {
			var e = s(this, i.Promise || o.Promise),
			n = "function" == typeof t;
			return this.then(n ?
			function(n) {
				return a(e, t()).then(function() {
					return n
				})
			}: t, n ?
			function(n) {
				return a(e, t()).then(function() {
					throw n
				})
			}: t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var r = n(6),
	i = n(67),
	o = n(97);
	r(r.S, "Promise", {
		try: function(t) {
			var e = i.f(this),
			n = o(t);
			return (n.e ? e.reject: e.resolve)(n.v),
			e.promise
		}
	})
},
function(t, e, n) {
	n(69)("asyncIterator")
},
function(t, e, n) {
	n(69)("observable")
},
, ,
function(t, e, n) { (function(e) {
		var n, n;
		/*!
    localForage -- Offline Storage, Improved
    Version 1.7.3
    https://localforage.github.io/localForage
    (c) 2013-2017 Mozilla, Apache License 2.0
*/
		!
		function(e) {
			t.exports = e()
		} (function() {
			return function t(e, r, i) {
				function o(a, u) {
					if (!r[a]) {
						if (!e[a]) {
							var c = "function" == typeof n && n;
							if (!u && c) return n(a, !0);
							if (s) return s(a, !0);
							var l = new Error("Cannot find module '" + a + "'");
							throw l.code = "MODULE_NOT_FOUND",
							l
						}
						var h = r[a] = {
							exports: {}
						};
						e[a][0].call(h.exports,
						function(t) {
							var n = e[a][1][t];
							return o(n || t)
						},
						h, h.exports, t, e, r, i)
					}
					return r[a].exports
				}
				for (var s = "function" == typeof n && n,
				a = 0; a < i.length; a++) o(i[a]);
				return o
			} ({
				1 : [function(t, n, r) { (function(t) {
						"use strict";
						function e() {
							l = !0;
							for (var t, e, n = h.length; n;) {
								for (e = h, h = [], t = -1; ++t < n;) e[t]();
								n = h.length
							}
							l = !1
						}
						function r(t) {
							1 !== h.push(t) || l || i()
						}
						var i, o = t.MutationObserver || t.WebKitMutationObserver;
						if (o) {
							var s = 0,
							a = new o(e),
							u = t.document.createTextNode("");
							a.observe(u, {
								characterData: !0
							}),
							i = function() {
								u.data = s = ++s % 2
							}
						} else if (t.setImmediate || void 0 === t.MessageChannel) i = "document" in t && "onreadystatechange" in t.document.createElement("script") ?
						function() {
							var n = t.document.createElement("script");
							n.onreadystatechange = function() {
								e(),
								n.onreadystatechange = null,
								n.parentNode.removeChild(n),
								n = null
							},
							t.document.documentElement.appendChild(n)
						}: function() {
							setTimeout(e, 0)
						};
						else {
							var c = new t.MessageChannel;
							c.port1.onmessage = e,
							i = function() {
								c.port2.postMessage(0)
							}
						}
						var l, h = [];
						n.exports = r
					}).call(this, void 0 !== e ? e: "undefined" != typeof self ? self: "undefined" != typeof window ? window: {})
				},
				{}],
				2 : [function(t, e, n) {
					"use strict";
					function r() {}
					function i(t) {
						if ("function" != typeof t) throw new TypeError("resolver must be a function");
						this.state = m,
						this.queue = [],
						this.outcome = void 0,
						t !== r && u(this, t)
					}
					function o(t, e, n) {
						this.promise = t,
						"function" == typeof e && (this.onFulfilled = e, this.callFulfilled = this.otherCallFulfilled),
						"function" == typeof n && (this.onRejected = n, this.callRejected = this.otherCallRejected)
					}
					function s(t, e, n) {
						d(function() {
							var r;
							try {
								r = e(n)
							} catch(e) {
								return g.reject(t, e)
							}
							r === t ? g.reject(t, new TypeError("Cannot resolve promise with itself")) : g.resolve(t, r)
						})
					}
					function a(t) {
						var e = t && t.then;
						if (t && ("object" == typeof t || "function" == typeof t) && "function" == typeof e) return function() {
							e.apply(t, arguments)
						}
					}
					function u(t, e) {
						function n(e) {
							o || (o = !0, g.reject(t, e))
						}
						function r(e) {
							o || (o = !0, g.resolve(t, e))
						}
						function i() {
							e(r, n)
						}
						var o = !1,
						s = c(i);
						"error" === s.status && n(s.value)
					}
					function c(t, e) {
						var n = {};
						try {
							n.value = t(e),
							n.status = "success"
						} catch(t) {
							n.status = "error",
							n.value = t
						}
						return n
					}
					function l(t) {
						return t instanceof this ? t: g.resolve(new this(r), t)
					}
					function h(t) {
						var e = new this(r);
						return g.reject(e, t)
					}
					function f(t) {
						var e = this;
						if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(new TypeError("must be an array"));
						var n = t.length,
						i = !1;
						if (!n) return this.resolve([]);
						for (var o = new Array(n), s = 0, a = -1, u = new this(r); ++a < n;) !
						function(t, r) {
							function a(t) {
								o[r] = t,
								++s !== n || i || (i = !0, g.resolve(u, o))
							}
							e.resolve(t).then(a,
							function(t) {
								i || (i = !0, g.reject(u, t))
							})
						} (t[a], a);
						return u
					}
					function p(t) {
						var e = this;
						if ("[object Array]" !== Object.prototype.toString.call(t)) return this.reject(new TypeError("must be an array"));
						var n = t.length,
						i = !1;
						if (!n) return this.resolve([]);
						for (var o = -1,
						s = new this(r); ++o < n;) !
						function(t) {
							e.resolve(t).then(function(t) {
								i || (i = !0, g.resolve(s, t))
							},
							function(t) {
								i || (i = !0, g.reject(s, t))
							})
						} (t[o]);
						return s
					}
					var d = t(1),
					g = {},
					y = ["REJECTED"],
					v = ["FULFILLED"],
					m = ["PENDING"];
					e.exports = i,
					i.prototype.
					catch = function(t) {
						return this.then(null, t)
					},
					i.prototype.then = function(t, e) {
						if ("function" != typeof t && this.state === v || "function" != typeof e && this.state === y) return this;
						var n = new this.constructor(r);
						if (this.state !== m) {
							s(n, this.state === v ? t: e, this.outcome)
						} else this.queue.push(new o(n, t, e));
						return n
					},
					o.prototype.callFulfilled = function(t) {
						g.resolve(this.promise, t)
					},
					o.prototype.otherCallFulfilled = function(t) {
						s(this.promise, this.onFulfilled, t)
					},
					o.prototype.callRejected = function(t) {
						g.reject(this.promise, t)
					},
					o.prototype.otherCallRejected = function(t) {
						s(this.promise, this.onRejected, t)
					},
					g.resolve = function(t, e) {
						var n = c(a, e);
						if ("error" === n.status) return g.reject(t, n.value);
						var r = n.value;
						if (r) u(t, r);
						else {
							t.state = v,
							t.outcome = e;
							for (var i = -1,
							o = t.queue.length; ++i < o;) t.queue[i].callFulfilled(e)
						}
						return t
					},
					g.reject = function(t, e) {
						t.state = y,
						t.outcome = e;
						for (var n = -1,
						r = t.queue.length; ++n < r;) t.queue[n].callRejected(e);
						return t
					},
					i.resolve = l,
					i.reject = h,
					i.all = f,
					i.race = p
				},
				{
					1 : 1
				}],
				3 : [function(t, n, r) { (function(e) {
						"use strict";
						"function" != typeof e.Promise && (e.Promise = t(2))
					}).call(this, void 0 !== e ? e: "undefined" != typeof self ? self: "undefined" != typeof window ? window: {})
				},
				{
					2 : 2
				}],
				4 : [function(t, e, n) {
					"use strict";
					function r(t, e) {
						if (! (t instanceof e)) throw new TypeError("Cannot call a class as a function")
					}
					function i(t, e) {
						t = t || [],
						e = e || {};
						try {
							return new Blob(t, e)
						} catch(o) {
							if ("TypeError" !== o.name) throw o;
							for (var n = "undefined" != typeof BlobBuilder ? BlobBuilder: "undefined" != typeof MSBlobBuilder ? MSBlobBuilder: "undefined" != typeof MozBlobBuilder ? MozBlobBuilder: WebKitBlobBuilder, r = new n, i = 0; i < t.length; i += 1) r.append(t[i]);
							return r.getBlob(e.type)
						}
					}
					function o(t, e) {
						e && t.then(function(t) {
							e(null, t)
						},
						function(t) {
							e(t)
						})
					}
					function s(t, e, n) {
						"function" == typeof e && t.then(e),
						"function" == typeof n && t.
						catch(n)
					}
					function a(t) {
						return "string" != typeof t && (console.warn(t + " used as a key, but it is not a string."), t = String(t)),
						t
					}
					function u() {
						if (arguments.length && "function" == typeof arguments[arguments.length - 1]) return arguments[arguments.length - 1]
					}
					function c(t) {
						for (var e = t.length,
						n = new ArrayBuffer(e), r = new Uint8Array(n), i = 0; i < e; i++) r[i] = t.charCodeAt(i);
						return n
					}
					function l(t) {
						return new vt(function(e) {
							var n = t.transaction(mt, Et),
							r = i([""]);
							n.objectStore(mt).put(r, "key"),
							n.onabort = function(t) {
								t.preventDefault(),
								t.stopPropagation(),
								e(!1)
							},
							n.oncomplete = function() {
								var t = navigator.userAgent.match(/Chrome\/(\d+)/),
								n = navigator.userAgent.match(/Edge\//);
								e(n || !t || parseInt(t[1], 10) >= 43)
							}
						}).
						catch(function() {
							return ! 1
						})
					}
					function h(t) {
						return "boolean" == typeof _t ? vt.resolve(_t) : l(t).then(function(t) {
							return _t = t
						})
					}
					function f(t) {
						var e = wt[t.name],
						n = {};
						n.promise = new vt(function(t, e) {
							n.resolve = t,
							n.reject = e
						}),
						e.deferredOperations.push(n),
						e.dbReady ? e.dbReady = e.dbReady.then(function() {
							return n.promise
						}) : e.dbReady = n.promise
					}
					function p(t) {
						var e = wt[t.name],
						n = e.deferredOperations.pop();
						if (n) return n.resolve(),
						n.promise
					}
					function d(t, e) {
						var n = wt[t.name],
						r = n.deferredOperations.pop();
						if (r) return r.reject(e),
						r.promise
					}
					function g(t, e) {
						return new vt(function(n, r) {
							if (wt[t.name] = wt[t.name] || I(), t.db) {
								if (!e) return n(t.db);
								f(t),
								t.db.close()
							}
							var i = [t.name];
							e && i.push(t.version);
							var o = yt.open.apply(yt, i);
							e && (o.onupgradeneeded = function(e) {
								var n = o.result;
								try {
									n.createObjectStore(t.storeName),
									e.oldVersion <= 1 && n.createObjectStore(mt)
								} catch(n) {
									if ("ConstraintError" !== n.name) throw n;
									console.warn('The database "' + t.name + '" has been upgraded from version ' + e.oldVersion + " to version " + e.newVersion + ', but the storage "' + t.storeName + '" already exists.')
								}
							}),
							o.onerror = function(t) {
								t.preventDefault(),
								r(o.error)
							},
							o.onsuccess = function() {
								n(o.result),
								p(t)
							}
						})
					}
					function y(t) {
						return g(t, !1)
					}
					function v(t) {
						return g(t, !0)
					}
					function m(t, e) {
						if (!t.db) return ! 0;
						var n = !t.db.objectStoreNames.contains(t.storeName),
						r = t.version < t.db.version,
						i = t.version > t.db.version;
						if (r && (t.version !== e && console.warn('The database "' + t.name + "\" can't be downgraded from version " + t.db.version + " to version " + t.version + "."), t.version = t.db.version), i || n) {
							if (n) {
								var o = t.db.version + 1;
								o > t.version && (t.version = o)
							}
							return ! 0
						}
						return ! 1
					}
					function _(t) {
						return new vt(function(e, n) {
							var r = new FileReader;
							r.onerror = n,
							r.onloadend = function(n) {
								var r = btoa(n.target.result || "");
								e({
									__local_forage_encoded_blob: !0,
									data: r,
									type: t.type
								})
							},
							r.readAsBinaryString(t)
						})
					}
					function w(t) {
						return i([c(atob(t.data))], {
							type: t.type
						})
					}
					function b(t) {
						return t && t.__local_forage_encoded_blob
					}
					function x(t) {
						var e = this,
						n = e._initReady().then(function() {
							var t = wt[e._dbInfo.name];
							if (t && t.dbReady) return t.dbReady
						});
						return s(n, t, t),
						n
					}
					function E(t) {
						f(t);
						for (var e = wt[t.name], n = e.forages, r = 0; r < n.length; r++) {
							var i = n[r];
							i._dbInfo.db && (i._dbInfo.db.close(), i._dbInfo.db = null)
						}
						return t.db = null,
						y(t).then(function(e) {
							return t.db = e,
							m(t) ? v(t) : e
						}).then(function(r) {
							t.db = e.db = r;
							for (var i = 0; i < n.length; i++) n[i]._dbInfo.db = r
						}).
						catch(function(e) {
							throw d(t, e),
							e
						})
					}
					function M(t, e, n, r) {
						void 0 === r && (r = 1);
						try {
							var i = t.db.transaction(t.storeName, e);
							n(null, i)
						} catch(i) {
							if (r > 0 && (!t.db || "InvalidStateError" === i.name || "NotFoundError" === i.name)) return vt.resolve().then(function() {
								if (!t.db || "NotFoundError" === i.name && !t.db.objectStoreNames.contains(t.storeName) && t.version <= t.db.version) return t.db && (t.version = t.db.version + 1),
								v(t)
							}).then(function() {
								return E(t).then(function() {
									M(t, e, n, r - 1)
								})
							}).
							catch(n);
							n(i)
						}
					}
					function I() {
						return {
							forages: [],
							db: null,
							dbReady: null,
							deferredOperations: []
						}
					}
					function S(t) {
						function e() {
							return vt.resolve()
						}
						var n = this,
						r = {
							db: null
						};
						if (t) for (var i in t) r[i] = t[i];
						var o = wt[r.name];
						o || (o = I(), wt[r.name] = o),
						o.forages.push(n),
						n._initReady || (n._initReady = n.ready, n.ready = x);
						for (var s = [], a = 0; a < o.forages.length; a++) {
							var u = o.forages[a];
							u !== n && s.push(u._initReady().
							catch(e))
						}
						var c = o.forages.slice(0);
						return vt.all(s).then(function() {
							return r.db = o.db,
							y(r)
						}).then(function(t) {
							return r.db = t,
							m(r, n._defaultConfig.version) ? v(r) : t
						}).then(function(t) {
							r.db = o.db = t,
							n._dbInfo = r;
							for (var e = 0; e < c.length; e++) {
								var i = c[e];
								i !== n && (i._dbInfo.db = r.db, i._dbInfo.version = r.version)
							}
						})
					}
					function C(t, e) {
						var n = this;
						t = a(t);
						var r = new vt(function(e, r) {
							n.ready().then(function() {
								M(n._dbInfo, xt,
								function(i, o) {
									if (i) return r(i);
									try {
										var s = o.objectStore(n._dbInfo.storeName),
										a = s.get(t);
										a.onsuccess = function() {
											var t = a.result;
											void 0 === t && (t = null),
											b(t) && (t = w(t)),
											e(t)
										},
										a.onerror = function() {
											r(a.error)
										}
									} catch(t) {
										r(t)
									}
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function N(t, e) {
						var n = this,
						r = new vt(function(e, r) {
							n.ready().then(function() {
								M(n._dbInfo, xt,
								function(i, o) {
									if (i) return r(i);
									try {
										var s = o.objectStore(n._dbInfo.storeName),
										a = s.openCursor(),
										u = 1;
										a.onsuccess = function() {
											var n = a.result;
											if (n) {
												var r = n.value;
												b(r) && (r = w(r));
												var i = t(r, n.key, u++);
												void 0 !== i ? e(i) : n.
												continue ()
											} else e()
										},
										a.onerror = function() {
											r(a.error)
										}
									} catch(t) {
										r(t)
									}
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function P(t, e, n) {
						var r = this;
						t = a(t);
						var i = new vt(function(n, i) {
							var o;
							r.ready().then(function() {
								return o = r._dbInfo,
								"[object Blob]" === bt.call(e) ? h(o.db).then(function(t) {
									return t ? e: _(e)
								}) : e
							}).then(function(e) {
								M(r._dbInfo, Et,
								function(o, s) {
									if (o) return i(o);
									try {
										var a = s.objectStore(r._dbInfo.storeName);
										null === e && (e = void 0);
										var u = a.put(e, t);
										s.oncomplete = function() {
											void 0 === e && (e = null),
											n(e)
										},
										s.onabort = s.onerror = function() {
											var t = u.error ? u.error: u.transaction.error;
											i(t)
										}
									} catch(t) {
										i(t)
									}
								})
							}).
							catch(i)
						});
						return o(i, n),
						i
					}
					function L(t, e) {
						var n = this;
						t = a(t);
						var r = new vt(function(e, r) {
							n.ready().then(function() {
								M(n._dbInfo, Et,
								function(i, o) {
									if (i) return r(i);
									try {
										var s = o.objectStore(n._dbInfo.storeName),
										a = s.delete(t);
										o.oncomplete = function() {
											e()
										},
										o.onerror = function() {
											r(a.error)
										},
										o.onabort = function() {
											var t = a.error ? a.error: a.transaction.error;
											r(t)
										}
									} catch(t) {
										r(t)
									}
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function A(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								M(e._dbInfo, Et,
								function(r, i) {
									if (r) return n(r);
									try {
										var o = i.objectStore(e._dbInfo.storeName),
										s = o.clear();
										i.oncomplete = function() {
											t()
										},
										i.onabort = i.onerror = function() {
											var t = s.error ? s.error: s.transaction.error;
											n(t)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function O(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								M(e._dbInfo, xt,
								function(r, i) {
									if (r) return n(r);
									try {
										var o = i.objectStore(e._dbInfo.storeName),
										s = o.count();
										s.onsuccess = function() {
											t(s.result)
										},
										s.onerror = function() {
											n(s.error)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function T(t, e) {
						var n = this,
						r = new vt(function(e, r) {
							if (t < 0) return void e(null);
							n.ready().then(function() {
								M(n._dbInfo, xt,
								function(i, o) {
									if (i) return r(i);
									try {
										var s = o.objectStore(n._dbInfo.storeName),
										a = !1,
										u = s.openCursor();
										u.onsuccess = function() {
											var n = u.result;
											if (!n) return void e(null);
											0 === t ? e(n.key) : a ? e(n.key) : (a = !0, n.advance(t))
										},
										u.onerror = function() {
											r(u.error)
										}
									} catch(t) {
										r(t)
									}
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function R(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								M(e._dbInfo, xt,
								function(r, i) {
									if (r) return n(r);
									try {
										var o = i.objectStore(e._dbInfo.storeName),
										s = o.openCursor(),
										a = [];
										s.onsuccess = function() {
											var e = s.result;
											if (!e) return void t(a);
											a.push(e.key),
											e.
											continue ()
										},
										s.onerror = function() {
											n(s.error)
										}
									} catch(t) {
										n(t)
									}
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function D(t, e) {
						e = u.apply(this, arguments);
						var n = this.config();
						t = "function" != typeof t && t || {},
						t.name || (t.name = t.name || n.name, t.storeName = t.storeName || n.storeName);
						var r, i = this;
						if (t.name) {
							var s = t.name === n.name && i._dbInfo.db,
							a = s ? vt.resolve(i._dbInfo.db) : y(t).then(function(e) {
								var n = wt[t.name],
								r = n.forages;
								n.db = e;
								for (var i = 0; i < r.length; i++) r[i]._dbInfo.db = e;
								return e
							});
							r = t.storeName ? a.then(function(e) {
								if (e.objectStoreNames.contains(t.storeName)) {
									var n = e.version + 1;
									f(t);
									var r = wt[t.name],
									i = r.forages;
									e.close();
									for (var o = 0; o < i.length; o++) {
										var s = i[o];
										s._dbInfo.db = null,
										s._dbInfo.version = n
									}
									return new vt(function(e, r) {
										var i = yt.open(t.name, n);
										i.onerror = function(t) {
											i.result.close(),
											r(t)
										},
										i.onupgradeneeded = function() {
											i.result.deleteObjectStore(t.storeName)
										},
										i.onsuccess = function() {
											var t = i.result;
											t.close(),
											e(t)
										}
									}).then(function(t) {
										r.db = t;
										for (var e = 0; e < i.length; e++) {
											var n = i[e];
											n._dbInfo.db = t,
											p(n._dbInfo)
										}
									}).
									catch(function(e) {
										throw (d(t, e) || vt.resolve()).
										catch(function() {}),
										e
									})
								}
							}) : a.then(function(e) {
								f(t);
								var n = wt[t.name],
								r = n.forages;
								e.close();
								for (var i = 0; i < r.length; i++) {
									r[i]._dbInfo.db = null
								}
								return new vt(function(e, n) {
									var r = yt.deleteDatabase(t.name);
									r.onerror = r.onblocked = function(t) {
										var e = r.result;
										e && e.close(),
										n(t)
									},
									r.onsuccess = function() {
										var t = r.result;
										t && t.close(),
										e(t)
									}
								}).then(function(t) {
									n.db = t;
									for (var e = 0; e < r.length; e++) p(r[e]._dbInfo)
								}).
								catch(function(e) {
									throw (d(t, e) || vt.resolve()).
									catch(function() {}),
									e
								})
							})
						} else r = vt.reject("Invalid arguments");
						return o(r, e),
						r
					}
					function k(t) {
						var e, n, r, i, o, s = .75 * t.length,
						a = t.length,
						u = 0;
						"=" === t[t.length - 1] && (s--, "=" === t[t.length - 2] && s--);
						var c = new ArrayBuffer(s),
						l = new Uint8Array(c);
						for (e = 0; e < a; e += 4) n = It.indexOf(t[e]),
						r = It.indexOf(t[e + 1]),
						i = It.indexOf(t[e + 2]),
						o = It.indexOf(t[e + 3]),
						l[u++] = n << 2 | r >> 4,
						l[u++] = (15 & r) << 4 | i >> 2,
						l[u++] = (3 & i) << 6 | 63 & o;
						return c
					}
					function F(t) {
						var e, n = new Uint8Array(t),
						r = "";
						for (e = 0; e < n.length; e += 3) r += It[n[e] >> 2],
						r += It[(3 & n[e]) << 4 | n[e + 1] >> 4],
						r += It[(15 & n[e + 1]) << 2 | n[e + 2] >> 6],
						r += It[63 & n[e + 2]];
						return n.length % 3 == 2 ? r = r.substring(0, r.length - 1) + "=": n.length % 3 == 1 && (r = r.substring(0, r.length - 2) + "=="),
						r
					}
					function j(t, e) {
						var n = "";
						if (t && (n = Ut.call(t)), t && ("[object ArrayBuffer]" === n || t.buffer && "[object ArrayBuffer]" === Ut.call(t.buffer))) {
							var r, i = Nt;
							t instanceof ArrayBuffer ? (r = t, i += Lt) : (r = t.buffer, "[object Int8Array]" === n ? i += Ot: "[object Uint8Array]" === n ? i += Tt: "[object Uint8ClampedArray]" === n ? i += Rt: "[object Int16Array]" === n ? i += Dt: "[object Uint16Array]" === n ? i += Ft: "[object Int32Array]" === n ? i += kt: "[object Uint32Array]" === n ? i += jt: "[object Float32Array]" === n ? i += qt: "[object Float64Array]" === n ? i += Bt: e(new Error("Failed to get type for BinaryArray"))),
							e(i + F(r))
						} else if ("[object Blob]" === n) {
							var o = new FileReader;
							o.onload = function() {
								var n = St + t.type + "~" + F(this.result);
								e(Nt + At + n)
							},
							o.readAsArrayBuffer(t)
						} else try {
							e(JSON.stringify(t))
						} catch(n) {
							console.error("Couldn't convert value into a JSON string: ", t),
							e(null, n)
						}
					}
					function q(t) {
						if (t.substring(0, Pt) !== Nt) return JSON.parse(t);
						var e, n = t.substring(Gt),
						r = t.substring(Pt, Gt);
						if (r === At && Ct.test(n)) {
							var o = n.match(Ct);
							e = o[1],
							n = n.substring(o[0].length)
						}
						var s = k(n);
						switch (r) {
						case Lt:
							return s;
						case At:
							return i([s], {
								type: e
							});
						case Ot:
							return new Int8Array(s);
						case Tt:
							return new Uint8Array(s);
						case Rt:
							return new Uint8ClampedArray(s);
						case Dt:
							return new Int16Array(s);
						case Ft:
							return new Uint16Array(s);
						case kt:
							return new Int32Array(s);
						case jt:
							return new Uint32Array(s);
						case qt:
							return new Float32Array(s);
						case Bt:
							return new Float64Array(s);
						default:
							throw new Error("Unkown type: " + r)
						}
					}
					function B(t, e, n, r) {
						t.executeSql("CREATE TABLE IF NOT EXISTS " + e.storeName + " (id INTEGER PRIMARY KEY, key unique, value)", [], n, r)
					}
					function G(t) {
						var e = this,
						n = {
							db: null
						};
						if (t) for (var r in t) n[r] = "string" != typeof t[r] ? t[r].toString() : t[r];
						var i = new vt(function(t, r) {
							try {
								n.db = openDatabase(n.name, String(n.version), n.description, n.size)
							} catch(t) {
								return r(t)
							}
							n.db.transaction(function(i) {
								B(i, n,
								function() {
									e._dbInfo = n,
									t()
								},
								function(t, e) {
									r(e)
								})
							},
							r)
						});
						return n.serializer = zt,
						i
					}
					function U(t, e, n, r, i, o) {
						t.executeSql(n, r, i,
						function(t, s) {
							s.code === s.SYNTAX_ERR ? t.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name = ?", [e.storeName],
							function(t, a) {
								a.rows.length ? o(t, s) : B(t, e,
								function() {
									t.executeSql(n, r, i, o)
								},
								o)
							},
							o) : o(t, s)
						},
						o)
					}
					function z(t, e) {
						var n = this;
						t = a(t);
						var r = new vt(function(e, r) {
							n.ready().then(function() {
								var i = n._dbInfo;
								i.db.transaction(function(n) {
									U(n, i, "SELECT * FROM " + i.storeName + " WHERE key = ? LIMIT 1", [t],
									function(t, n) {
										var r = n.rows.length ? n.rows.item(0).value: null;
										r && (r = i.serializer.deserialize(r)),
										e(r)
									},
									function(t, e) {
										r(e)
									})
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function Y(t, e) {
						var n = this,
						r = new vt(function(e, r) {
							n.ready().then(function() {
								var i = n._dbInfo;
								i.db.transaction(function(n) {
									U(n, i, "SELECT * FROM " + i.storeName, [],
									function(n, r) {
										for (var o = r.rows,
										s = o.length,
										a = 0; a < s; a++) {
											var u = o.item(a),
											c = u.value;
											if (c && (c = i.serializer.deserialize(c)), void 0 !== (c = t(c, u.key, a + 1))) return void e(c)
										}
										e()
									},
									function(t, e) {
										r(e)
									})
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function X(t, e, n, r) {
						var i = this;
						t = a(t);
						var s = new vt(function(o, s) {
							i.ready().then(function() {
								void 0 === e && (e = null);
								var a = e,
								u = i._dbInfo;
								u.serializer.serialize(e,
								function(e, c) {
									c ? s(c) : u.db.transaction(function(n) {
										U(n, u, "INSERT OR REPLACE INTO " + u.storeName + " (key, value) VALUES (?, ?)", [t, e],
										function() {
											o(a)
										},
										function(t, e) {
											s(e)
										})
									},
									function(e) {
										if (e.code === e.QUOTA_ERR) {
											if (r > 0) return void o(X.apply(i, [t, a, n, r - 1]));
											s(e)
										}
									})
								})
							}).
							catch(s)
						});
						return o(s, n),
						s
					}
					function V(t, e, n) {
						return X.apply(this, [t, e, n, 1])
					}
					function W(t, e) {
						var n = this;
						t = a(t);
						var r = new vt(function(e, r) {
							n.ready().then(function() {
								var i = n._dbInfo;
								i.db.transaction(function(n) {
									U(n, i, "DELETE FROM " + i.storeName + " WHERE key = ?", [t],
									function() {
										e()
									},
									function(t, e) {
										r(e)
									})
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function H(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								var r = e._dbInfo;
								r.db.transaction(function(e) {
									U(e, r, "DELETE FROM " + r.storeName, [],
									function() {
										t()
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function J(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								var r = e._dbInfo;
								r.db.transaction(function(e) {
									U(e, r, "SELECT COUNT(key) as c FROM " + r.storeName, [],
									function(e, n) {
										var r = n.rows.item(0).c;
										t(r)
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function Z(t, e) {
						var n = this,
						r = new vt(function(e, r) {
							n.ready().then(function() {
								var i = n._dbInfo;
								i.db.transaction(function(n) {
									U(n, i, "SELECT key FROM " + i.storeName + " WHERE id = ? LIMIT 1", [t + 1],
									function(t, n) {
										var r = n.rows.length ? n.rows.item(0).key: null;
										e(r)
									},
									function(t, e) {
										r(e)
									})
								})
							}).
							catch(r)
						});
						return o(r, e),
						r
					}
					function Q(t) {
						var e = this,
						n = new vt(function(t, n) {
							e.ready().then(function() {
								var r = e._dbInfo;
								r.db.transaction(function(e) {
									U(e, r, "SELECT key FROM " + r.storeName, [],
									function(e, n) {
										for (var r = [], i = 0; i < n.rows.length; i++) r.push(n.rows.item(i).key);
										t(r)
									},
									function(t, e) {
										n(e)
									})
								})
							}).
							catch(n)
						});
						return o(n, t),
						n
					}
					function K(t) {
						return new vt(function(e, n) {
							t.transaction(function(r) {
								r.executeSql("SELECT name FROM sqlite_master WHERE type='table' AND name <> '__WebKitDatabaseInfoTable__'", [],
								function(n, r) {
									for (var i = [], o = 0; o < r.rows.length; o++) i.push(r.rows.item(o).name);
									e({
										db: t,
										storeNames: i
									})
								},
								function(t, e) {
									n(e)
								})
							},
							function(t) {
								n(t)
							})
						})
					}
					function $(t, e) {
						e = u.apply(this, arguments);
						var n = this.config();
						t = "function" != typeof t && t || {},
						t.name || (t.name = t.name || n.name, t.storeName = t.storeName || n.storeName);
						var r, i = this;
						return r = t.name ? new vt(function(e) {
							var r;
							r = t.name === n.name ? i._dbInfo.db: openDatabase(t.name, "", "", 0),
							e(t.storeName ? {
								db: r,
								storeNames: [t.storeName]
							}: K(r))
						}).then(function(t) {
							return new vt(function(e, n) {
								t.db.transaction(function(r) {
									for (var i = [], o = 0, s = t.storeNames.length; o < s; o++) i.push(function(t) {
										return new vt(function(e, n) {
											r.executeSql("DROP TABLE IF EXISTS " + t, [],
											function() {
												e()
											},
											function(t, e) {
												n(e)
											})
										})
									} (t.storeNames[o]));
									vt.all(i).then(function() {
										e()
									}).
									catch(function(t) {
										n(t)
									})
								},
								function(t) {
									n(t)
								})
							})
						}) : vt.reject("Invalid arguments"),
						o(r, e),
						r
					}
					function tt(t, e) {
						var n = t.name + "/";
						return t.storeName !== e.storeName && (n += t.storeName + "/"),
						n
					}
					function et() {
						try {
							return localStorage.setItem("_localforage_support_test", !0),
							localStorage.removeItem("_localforage_support_test"),
							!1
						} catch(t) {
							return ! 0
						}
					}
					function nt() {
						return ! et() || localStorage.length > 0
					}
					function rt(t) {
						var e = this,
						n = {};
						if (t) for (var r in t) n[r] = t[r];
						return n.keyPrefix = tt(t, e._defaultConfig),
						nt() ? (e._dbInfo = n, n.serializer = zt, vt.resolve()) : vt.reject()
					}
					function it(t) {
						var e = this,
						n = e.ready().then(function() {
							for (var t = e._dbInfo.keyPrefix,
							n = localStorage.length - 1; n >= 0; n--) {
								var r = localStorage.key(n);
								0 === r.indexOf(t) && localStorage.removeItem(r)
							}
						});
						return o(n, t),
						n
					}
					function ot(t, e) {
						var n = this;
						t = a(t);
						var r = n.ready().then(function() {
							var e = n._dbInfo,
							r = localStorage.getItem(e.keyPrefix + t);
							return r && (r = e.serializer.deserialize(r)),
							r
						});
						return o(r, e),
						r
					}
					function st(t, e) {
						var n = this,
						r = n.ready().then(function() {
							for (var e = n._dbInfo,
							r = e.keyPrefix,
							i = r.length,
							o = localStorage.length,
							s = 1,
							a = 0; a < o; a++) {
								var u = localStorage.key(a);
								if (0 === u.indexOf(r)) {
									var c = localStorage.getItem(u);
									if (c && (c = e.serializer.deserialize(c)), void 0 !== (c = t(c, u.substring(i), s++))) return c
								}
							}
						});
						return o(r, e),
						r
					}
					function at(t, e) {
						var n = this,
						r = n.ready().then(function() {
							var e, r = n._dbInfo;
							try {
								e = localStorage.key(t)
							} catch(t) {
								e = null
							}
							return e && (e = e.substring(r.keyPrefix.length)),
							e
						});
						return o(r, e),
						r
					}
					function ut(t) {
						var e = this,
						n = e.ready().then(function() {
							for (var t = e._dbInfo,
							n = localStorage.length,
							r = [], i = 0; i < n; i++) {
								var o = localStorage.key(i);
								0 === o.indexOf(t.keyPrefix) && r.push(o.substring(t.keyPrefix.length))
							}
							return r
						});
						return o(n, t),
						n
					}
					function ct(t) {
						var e = this,
						n = e.keys().then(function(t) {
							return t.length
						});
						return o(n, t),
						n
					}
					function lt(t, e) {
						var n = this;
						t = a(t);
						var r = n.ready().then(function() {
							var e = n._dbInfo;
							localStorage.removeItem(e.keyPrefix + t)
						});
						return o(r, e),
						r
					}
					function ht(t, e, n) {
						var r = this;
						t = a(t);
						var i = r.ready().then(function() {
							void 0 === e && (e = null);
							var n = e;
							return new vt(function(i, o) {
								var s = r._dbInfo;
								s.serializer.serialize(e,
								function(e, r) {
									if (r) o(r);
									else try {
										localStorage.setItem(s.keyPrefix + t, e),
										i(n)
									} catch(t) {
										"QuotaExceededError" !== t.name && "NS_ERROR_DOM_QUOTA_REACHED" !== t.name || o(t),
										o(t)
									}
								})
							})
						});
						return o(i, n),
						i
					}
					function ft(t, e) {
						if (e = u.apply(this, arguments), t = "function" != typeof t && t || {},
						!t.name) {
							var n = this.config();
							t.name = t.name || n.name,
							t.storeName = t.storeName || n.storeName
						}
						var r, i = this;
						return r = t.name ? new vt(function(e) {
							e(t.storeName ? tt(t, i._defaultConfig) : t.name + "/")
						}).then(function(t) {
							for (var e = localStorage.length - 1; e >= 0; e--) {
								var n = localStorage.key(e);
								0 === n.indexOf(t) && localStorage.removeItem(n)
							}
						}) : vt.reject("Invalid arguments"),
						o(r, e),
						r
					}
					function pt(t, e) {
						t[e] = function() {
							var n = arguments;
							return t.ready().then(function() {
								return t[e].apply(t, n)
							})
						}
					}
					function dt() {
						for (var t = 1; t < arguments.length; t++) {
							var e = arguments[t];
							if (e) for (var n in e) e.hasOwnProperty(n) && (Ht(e[n]) ? arguments[0][n] = e[n].slice() : arguments[0][n] = e[n])
						}
						return arguments[0]
					}
					var gt = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ?
					function(t) {
						return typeof t
					}: function(t) {
						return t && "function" == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? "symbol": typeof t
					},
					yt = function() {
						try {
							if ("undefined" != typeof indexedDB) return indexedDB;
							if ("undefined" != typeof webkitIndexedDB) return webkitIndexedDB;
							if ("undefined" != typeof mozIndexedDB) return mozIndexedDB;
							if ("undefined" != typeof OIndexedDB) return OIndexedDB;
							if ("undefined" != typeof msIndexedDB) return msIndexedDB
						} catch(t) {
							return
						}
					} ();
					"undefined" == typeof Promise && t(3);
					var vt = Promise,
					mt = "local-forage-detect-blob-support",
					_t = void 0,
					wt = {},
					bt = Object.prototype.toString,
					xt = "readonly",
					Et = "readwrite",
					Mt = {
						_driver: "asyncStorage",
						_initStorage: S,
						_support: function() {
							try {
								if (!yt) return ! 1;
								var t = "undefined" != typeof openDatabase && /(Safari|iPhone|iPad|iPod)/.test(navigator.userAgent) && !/Chrome/.test(navigator.userAgent) && !/BlackBerry/.test(navigator.platform),
								e = "function" == typeof fetch && -1 !== fetch.toString().indexOf("[native code");
								return (!t || e) && "undefined" != typeof indexedDB && "undefined" != typeof IDBKeyRange
							} catch(t) {
								return ! 1
							}
						} (),
						iterate: N,
						getItem: C,
						setItem: P,
						removeItem: L,
						clear: A,
						length: O,
						key: T,
						keys: R,
						dropInstance: D
					},
					It = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
					St = "~~local_forage_type~",
					Ct = /^~~local_forage_type~([^~]+)~/,
					Nt = "__lfsc__:",
					Pt = Nt.length,
					Lt = "arbf",
					At = "blob",
					Ot = "si08",
					Tt = "ui08",
					Rt = "uic8",
					Dt = "si16",
					kt = "si32",
					Ft = "ur16",
					jt = "ui32",
					qt = "fl32",
					Bt = "fl64",
					Gt = Pt + Lt.length,
					Ut = Object.prototype.toString,
					zt = {
						serialize: j,
						deserialize: q,
						stringToBuffer: k,
						bufferToString: F
					},
					Yt = {
						_driver: "webSQLStorage",
						_initStorage: G,
						_support: function() {
							return "function" == typeof openDatabase
						} (),
						iterate: Y,
						getItem: z,
						setItem: V,
						removeItem: W,
						clear: H,
						length: J,
						key: Z,
						keys: Q,
						dropInstance: $
					},
					Xt = {
						_driver: "localStorageWrapper",
						_initStorage: rt,
						_support: function() {
							try {
								return "undefined" != typeof localStorage && "setItem" in localStorage && !!localStorage.setItem
							} catch(t) {
								return ! 1
							}
						} (),
						iterate: st,
						getItem: ot,
						setItem: ht,
						removeItem: lt,
						clear: it,
						length: ct,
						key: at,
						keys: ut,
						dropInstance: ft
					},
					Vt = function(t, e) {
						return t === e || "number" == typeof t && "number" == typeof e && isNaN(t) && isNaN(e)
					},
					Wt = function(t, e) {
						for (var n = t.length,
						r = 0; r < n;) {
							if (Vt(t[r], e)) return ! 0;
							r++
						}
						return ! 1
					},
					Ht = Array.isArray ||
					function(t) {
						return "[object Array]" === Object.prototype.toString.call(t)
					},
					Jt = {},
					Zt = {},
					Qt = {
						INDEXEDDB: Mt,
						WEBSQL: Yt,
						LOCALSTORAGE: Xt
					},
					Kt = [Qt.INDEXEDDB._driver, Qt.WEBSQL._driver, Qt.LOCALSTORAGE._driver],
					$t = ["dropInstance"],
					te = ["clear", "getItem", "iterate", "key", "keys", "length", "removeItem", "setItem"].concat($t),
					ee = {
						description: "",
						driver: Kt.slice(),
						name: "localforage",
						size: 4980736,
						storeName: "keyvaluepairs",
						version: 1
					},
					ne = function() {
						function t(e) {
							r(this, t);
							for (var n in Qt) if (Qt.hasOwnProperty(n)) {
								var i = Qt[n],
								o = i._driver;
								this[n] = o,
								Jt[o] || this.defineDriver(i)
							}
							this._defaultConfig = dt({},
							ee),
							this._config = dt({},
							this._defaultConfig, e),
							this._driverSet = null,
							this._initDriver = null,
							this._ready = !1,
							this._dbInfo = null,
							this._wrapLibraryMethodsWithReady(),
							this.setDriver(this._config.driver).
							catch(function() {})
						}
						return t.prototype.config = function(t) {
							if ("object" === (void 0 === t ? "undefined": gt(t))) {
								if (this._ready) return new Error("Can't call config() after localforage has been used.");
								for (var e in t) {
									if ("storeName" === e && (t[e] = t[e].replace(/\W/g, "_")), "version" === e && "number" != typeof t[e]) return new Error("Database version must be a number.");
									this._config[e] = t[e]
								}
								return ! ("driver" in t && t.driver) || this.setDriver(this._config.driver)
							}
							return "string" == typeof t ? this._config[t] : this._config
						},
						t.prototype.defineDriver = function(t, e, n) {
							var r = new vt(function(e, n) {
								try {
									var r = t._driver,
									i = new Error("Custom driver not compliant; see https://mozilla.github.io/localForage/#definedriver");
									if (!t._driver) return void n(i);
									for (var s = te.concat("_initStorage"), a = 0, u = s.length; a < u; a++) {
										var c = s[a];
										if ((!Wt($t, c) || t[c]) && "function" != typeof t[c]) return void n(i)
									} !
									function() {
										for (var e = 0,
										n = $t.length; e < n; e++) {
											var r = $t[e];
											t[r] || (t[r] = function(t) {
												return function() {
													var e = new Error("Method " + t + " is not implemented by the current driver"),
													n = vt.reject(e);
													return o(n, arguments[arguments.length - 1]),
													n
												}
											} (r))
										}
									} ();
									var l = function(n) {
										Jt[r] && console.info("Redefining LocalForage driver: " + r),
										Jt[r] = t,
										Zt[r] = n,
										e()
									};
									"_support" in t ? t._support && "function" == typeof t._support ? t._support().then(l, n) : l( !! t._support) : l(!0)
								} catch(t) {
									n(t)
								}
							});
							return s(r, e, n),
							r
						},
						t.prototype.driver = function() {
							return this._driver || null
						},
						t.prototype.getDriver = function(t, e, n) {
							var r = Jt[t] ? vt.resolve(Jt[t]) : vt.reject(new Error("Driver not found."));
							return s(r, e, n),
							r
						},
						t.prototype.getSerializer = function(t) {
							var e = vt.resolve(zt);
							return s(e, t),
							e
						},
						t.prototype.ready = function(t) {
							var e = this,
							n = e._driverSet.then(function() {
								return null === e._ready && (e._ready = e._initDriver()),
								e._ready
							});
							return s(n, t, t),
							n
						},
						t.prototype.setDriver = function(t, e, n) {
							function r() {
								a._config.driver = a.driver()
							}
							function i(t) {
								return a._extend(t),
								r(),
								a._ready = a._initStorage(a._config),
								a._ready
							}
							function o(t) {
								return function() {
									function e() {
										for (; n < t.length;) {
											var o = t[n];
											return n++,
											a._dbInfo = null,
											a._ready = null,
											a.getDriver(o).then(i).
											catch(e)
										}
										r();
										var s = new Error("No available storage method found.");
										return a._driverSet = vt.reject(s),
										a._driverSet
									}
									var n = 0;
									return e()
								}
							}
							var a = this;
							Ht(t) || (t = [t]);
							var u = this._getSupportedDrivers(t),
							c = null !== this._driverSet ? this._driverSet.
							catch(function() {
								return vt.resolve()
							}) : vt.resolve();
							return this._driverSet = c.then(function() {
								var t = u[0];
								return a._dbInfo = null,
								a._ready = null,
								a.getDriver(t).then(function(t) {
									a._driver = t._driver,
									r(),
									a._wrapLibraryMethodsWithReady(),
									a._initDriver = o(u)
								})
							}).
							catch(function() {
								r();
								var t = new Error("No available storage method found.");
								return a._driverSet = vt.reject(t),
								a._driverSet
							}),
							s(this._driverSet, e, n),
							this._driverSet
						},
						t.prototype.supports = function(t) {
							return !! Zt[t]
						},
						t.prototype._extend = function(t) {
							dt(this, t)
						},
						t.prototype._getSupportedDrivers = function(t) {
							for (var e = [], n = 0, r = t.length; n < r; n++) {
								var i = t[n];
								this.supports(i) && e.push(i)
							}
							return e
						},
						t.prototype._wrapLibraryMethodsWithReady = function() {
							for (var t = 0,
							e = te.length; t < e; t++) pt(this, te[t])
						},
						t.prototype.createInstance = function(e) {
							return new t(e)
						},
						t
					} (),
					re = new ne;
					e.exports = re
				},
				{
					3 : 3
				}]
			},
			{},
			[4])(4)
		})
	}).call(e, n(142))
},
,
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		var r = window.document.createElement(t);
		return e && (r.className = e),
		n && n.appendChild(r),
		r
	}
	function i(t) {
		for (var e = 0; e < t.length; e++) if (t[e] in E) return t[e];
		return t[0]
	}
	function o() {
		M && (I = E[M], E[M] = "none")
	}
	function s() {
		M && (E[M] = I)
	}
	function a(t, e) {
		t.style[S] = e
	}
	function u(t) {
		t.preventDefault(),
		t.stopPropagation(),
		window.removeEventListener("click", u, !0)
	}
	function c() {
		window.addEventListener("click", u, !0),
		window.setTimeout(function() {
			window.removeEventListener("click", u, !0)
		},
		0)
	}
	function l(t, e) {
		var n = t.getBoundingClientRect();
		return e = e.touches ? ("touchend" === e.type ? e.changedTouches: e.touches)[0] : e,
		f(t, new x(e.clientX - n.left - t.clientLeft, e.clientY - n.top - t.clientTop))
	}
	function h(t, e) {
		for (var n = t.getBoundingClientRect(), r = [], i = "touchend" === e.type ? e.changedTouches: e.touches, o = 0; o < i.length; o++) {
			var s = new x(i[o].clientX - n.left - t.clientLeft, i[o].clientY - n.top - t.clientTop),
			a = f(t, s);
			r.push(a)
		}
		return r
	}
	function f(t, e) {
		var n = null,
		r = getComputedStyle(t),
		i = r.width,
		o = r.height,
		s = r.transform;
		for (i = i.replace("px", ""), o = o.replace("px", ""); null !== t;) {
			if (!s) {
				s = getComputedStyle(t).transform
			}
			if ("none" !== s) {
				var a = s.match(/\(([^)]*)\)/),
				u = (0, w.
			default)(a, 2),
				c = u[1],
				l = c.split(","),
				h = new b.Matrix4;
				h.elements[0] = parseFloat(l[0].trim()),
				h.elements[1] = parseFloat(l[1].trim()),
				h.elements[4] = parseFloat(l[2].trim()),
				h.elements[5] = parseFloat(l[3].trim()),
				n = n ? h.multiply(n) : h
			}
			t = t.parentElement,
			s = null
		}
		if (!n) return e;
		var f = new b.Vector3([i, 0, 0]),
		p = new b.Vector3([0, o, 0]),
		d = new b.Vector3([i, o, 0]),
		g = n.multiplyVector3(f),
		y = n.multiplyVector3(p),
		v = n.multiplyVector3(d),
		m = Math.min.apply(null, [0, g.elements[0], y.elements[0], v.elements[0]]),
		_ = Math.min.apply(null, [0, g.elements[1], y.elements[1], v.elements[1]]),
		E = n.invert(),
		M = new b.Vector3([e.x + m, e.y + _, 0]),
		I = E.multiplyVector3(M);
		return new x(I.elements[0], I.elements[1])
	}
	function p(t) {
		t.parentNode && t.parentNode.removeChild(t)
	}
	function d(t) {
		var e = document.createElement("div");
		e.innerHTML = t;
		var n = document.createDocumentFragment();
		return Array.prototype.slice.apply(e.childNodes).forEach(function(t) {
			n.appendChild(t)
		}),
		n
	}
	function g(t) {
		if ("pageX" in t && "pageY" in t) return {
			x: t.pageX,
			y: t.pageY
		};
		if ("touches" in t && t.touches.length > 0) {
			var e = t.touches[0];
			return {
				x: e.pageX,
				y: e.pageY
			}
		}
		if ("changedTouches" in t && t.changedTouches.length > 0) {
			var n = t.changedTouches[0];
			return {
				x: n.pageX,
				y: n.pageY
			}
		}
	}
	function y(t, e) {
		t && (Array.isArray(e) || (e = [e]), e.forEach(function(e) {
			m(t, e) || (t.className += " " + e)
		}))
	}
	function v(t, e) {
		t && (Array.isArray(e) || (e = [e]), e.forEach(function(e) {
			m(t, e) && (t.className = t.className.replace(" " + e, ""))
		}))
	}
	function m(t, e) {
		if (t) {
			var n = " " + e + " ";
			return (" " + t.className + " ").includes(n)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.TRANSITIONTIMINGFUNCTION = e.TRANSITIONDURATION = e.TRANSITIONEND = e.TRANSITION = e.TRANSFORM = e.TRANSFORMORIGIN = void 0;
	var _ = n(32),
	w = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (_);
	e.create = r,
	e.disableDrag = o,
	e.enableDrag = s,
	e.setTransform = a,
	e.suppressClick = c,
	e.mousePos = l,
	e.touchPos = h,
	e.remove = p,
	e.toDom = d,
	e.getPointerXY = g,
	e.addClass = y,
	e.removeClass = v,
	e.hasClass = m;
	var b = n(107),
	x = n(74),
	E = window.document.documentElement.style,
	M = i(["userSelect", "MozUserSelect", "WebkitUserSelect", "msUserSelect"]),
	I = void 0,
	S = (e.TRANSFORMORIGIN = i(["TRANSFORMORIGIN", "WebkitTransformOrigin", "OTransformOrigin", "MozTransformOrigin", "msTransformOrigin"]), e.TRANSFORM = i(["transform", "WebkitTransform", "OTransform", "MozTransform", "msTransform"])),
	C = e.TRANSITION = i(["transition", "webkitTransition", "OTransition", "MozTransition", "msTransition"]);
	e.TRANSITIONEND = "transition" === C ? C + "end": C + "End",
	e.TRANSITIONDURATION = C + "Duration",
	e.TRANSITIONTIMINGFUNCTION = C + "TimingFunction"
},
, , , , , , , , , ,
function(t, e, n) {
	t.exports = {
	default:
		n(309),
		__esModule: !0
	}
},
,
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var r = n(16),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = i.
default ||
	function(t) {
		for (var e = 1; e < arguments.length; e++) {
			var n = arguments[e];
			for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r])
		}
		return t
	}
},
function(t, e, n) {
	n(225),
	t.exports = n(2).Number.isNaN
},
function(t, e, n) {
	var r = n(6);
	r(r.S, "Number", {
		isNaN: function(t) {
			return t != t
		}
	})
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		if (4 === t.length) {
			for (var e = "#",
			n = 1; n < 4; n += 1) e += t.slice(n, n + 1).concat(t.slice(n, n + 1));
			t = e
		}
		var r = t.slice(1);
		return {
			r: parseInt(r.slice(0, 2), 16),
			g: parseInt(r.slice(2, 4), 16),
			b: parseInt(r.slice(4), 16)
		}
	}
	function o(t) {
		return t = t.replace(/rgb/, "rgba").replace(")", ",") + "1)",
		s(t)
	}
	function s(t) {
		return t = t.replace(/rgba\(/, "").replace(")", "").split(","),
		{
			r: parseInt(t[0]),
			g: parseInt(t[1]),
			b: parseInt(t[2]),
			a: parseFloat(t[3])
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(0),
	u = r(a),
	c = n(1),
	l = r(c),
	h = n(41),
	f = r(h),
	p = n(398),
	d = f.
default.isString,
	g = f.
default.isArray,
	y = f.
default.isUndefined,
	v = function() {
		function t(e, n) {
			if ((0, u.
		default)(this, t), this.r = 1, this.g = 1, this.b = 1, this.a = 1, n && n.defaultColor && this.turnStr2Rgba(n.defaultColor), d(e)) this.turnStr2Rgba(e);
			else if (g(e)) {
				var r = n && n.max || 255;
				this.r = e[0] / r,
				this.g = e[1] / r,
				this.b = e[2] / r,
				this.a = y(e[3]) ? 1 : e[3]
			}
		}
		return (0, l.
	default)(t, [{
			key: "turnStr2Rgba",
			value: function(t) {
				t = t.toLowerCase();
				var e = p.HEX_REG,
				n = p.RGB_REG,
				r = p.RGBA_REG,
				a = null;
				e.test(t) ? a = i(t) : n.test(t) ? a = o(t) : r.test(t) && (a = s(t)),
				a && (this.r = a.r / 255, this.g = a.g / 255, this.b = a.b / 255, this.a = y(a.a) ? 1 : a.a)
			}
		},
		{
			key: "toArray",
			value: function() {
				return [this.r, this.g, this.b, this.a]
			}
		},
		{
			key: "toUpArray",
			value: function() {
				return this.toArray().map(function(t) {
					return 255 * t
				})
			}
		},
		{
			key: "toString",
			value: function() {
				return "rgba(" + ["" + Math.round(255 * this.r), "" + Math.round(255 * this.g), "" + Math.round(255 * this.b), "" + this.a].join(",") + ")"
			}
		}]),
		t
	} ();
	e.
default = v
},
function(t, e, n) {
	"use strict";
	var r = n(12),
	i = n(34),
	o = n(76),
	s = n(45),
	a = n(31),
	u = n(80),
	c = Object.assign;
	t.exports = !c || n(30)(function() {
		var t = {},
		e = {},
		n = Symbol(),
		r = "abcdefghijklmnopqrst";
		return t[n] = 7,
		r.split("").forEach(function(t) {
			e[t] = t
		}),
		7 != c({},
		t)[n] || Object.keys(c({},
		e)).join("") != r
	}) ?
	function(t, e) {
		for (var n = a(t), c = arguments.length, l = 1, h = o.f, f = s.f; c > l;) for (var p, d = u(arguments[l++]), g = h ? i(d).concat(h(d)) : i(d), y = g.length, v = 0; y > v;) p = g[v++],
		r && !f.call(d, p) || (n[p] = d[p]);
		return n
	}: c
},
, , , , , ,
function(t, e) {
	function n(t, e, n, r) {
		if (void 0 === t) throw new Error("geometry is required");
		if (e && e.constructor !== Object) throw new Error("properties must be an Object");
		if (n && 4 !== n.length) throw new Error("bbox must be an Array of 4 numbers");
		if (r && -1 === ["string", "number"].indexOf(typeof r)) throw new Error("id must be a number or a string");
		var i = {
			type: "Feature"
		};
		return r && (i.id = r),
		n && (i.bbox = n),
		i.properties = e || {},
		i.geometry = t,
		i
	}
	function r(t, e, n) {
		if (!t) throw new Error("type is required");
		if (!e) throw new Error("coordinates is required");
		if (!Array.isArray(e)) throw new Error("coordinates must be an Array");
		if (n && 4 !== n.length) throw new Error("bbox must be an Array of 4 numbers");
		var r;
		switch (t) {
		case "Point":
			r = i(e).geometry;
			break;
		case "LineString":
			r = s(e).geometry;
			break;
		case "Polygon":
			r = o(e).geometry;
			break;
		case "MultiPoint":
			r = c(e).geometry;
			break;
		case "MultiLineString":
			r = u(e).geometry;
			break;
		case "MultiPolygon":
			r = l(e).geometry;
			break;
		default:
			throw new Error(t + " is invalid")
		}
		return n && (r.bbox = n),
		r
	}
	function i(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		if (void 0 === t.length) throw new Error("Coordinates must be an array");
		if (t.length < 2) throw new Error("Coordinates must be at least 2 numbers long");
		if (!b(t[0]) || !b(t[1])) throw new Error("Coordinates must contain numbers");
		return n({
			type: "Point",
			coordinates: t
		},
		e, r, i)
	}
	function o(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		for (var o = 0; o < t.length; o++) {
			var s = t[o];
			if (s.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
			for (var a = 0; a < s[s.length - 1].length; a++) {
				if (0 === o && 0 === a && !b(s[0][0]) || !b(s[0][1])) throw new Error("Coordinates must contain numbers");
				if (s[s.length - 1][a] !== s[0][a]) throw new Error("First and last Position are not equivalent.")
			}
		}
		return n({
			type: "Polygon",
			coordinates: t
		},
		e, r, i)
	}
	function s(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		if (t.length < 2) throw new Error("Coordinates must be an array of two or more positions");
		if (!b(t[0][1]) || !b(t[0][1])) throw new Error("Coordinates must contain numbers");
		return n({
			type: "LineString",
			coordinates: t
		},
		e, r, i)
	}
	function a(t, e, n) {
		if (!t) throw new Error("No features passed");
		if (!Array.isArray(t)) throw new Error("features must be an Array");
		if (e && 4 !== e.length) throw new Error("bbox must be an Array of 4 numbers");
		if (n && -1 === ["string", "number"].indexOf(typeof n)) throw new Error("id must be a number or a string");
		var r = {
			type: "FeatureCollection"
		};
		return n && (r.id = n),
		e && (r.bbox = e),
		r.features = t,
		r
	}
	function u(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		return n({
			type: "MultiLineString",
			coordinates: t
		},
		e, r, i)
	}
	function c(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		return n({
			type: "MultiPoint",
			coordinates: t
		},
		e, r, i)
	}
	function l(t, e, r, i) {
		if (!t) throw new Error("No coordinates passed");
		return n({
			type: "MultiPolygon",
			coordinates: t
		},
		e, r, i)
	}
	function h(t, e, r, i) {
		if (!t) throw new Error("geometries is required");
		if (!Array.isArray(t)) throw new Error("geometries must be an Array");
		return n({
			type: "GeometryCollection",
			geometries: t
		},
		e, r, i)
	}
	function f(t, e) {
		if (void 0 === t || null === t || isNaN(t)) throw new Error("num is required");
		if (e && !(e >= 0)) throw new Error("precision must be a positive number");
		var n = Math.pow(10, e || 0);
		return Math.round(t * n) / n
	}
	function p(t, e) {
		if (void 0 === t || null === t) throw new Error("radians is required");
		var n = x[e || "kilometers"];
		if (!n) throw new Error("units is invalid");
		return t * n
	}
	function d(t, e) {
		if (void 0 === t || null === t) throw new Error("distance is required");
		var n = x[e || "kilometers"];
		if (!n) throw new Error("units is invalid");
		return t / n
	}
	function g(t, e) {
		return v(d(t, e))
	}
	function y(t) {
		if (null === t || void 0 === t) throw new Error("bearing is required");
		var e = t % 360;
		return e < 0 && (e += 360),
		e
	}
	function v(t) {
		if (null === t || void 0 === t) throw new Error("radians is required");
		return t % (2 * Math.PI) * 180 / Math.PI
	}
	function m(t) {
		if (null === t || void 0 === t) throw new Error("degrees is required");
		return t % 360 * Math.PI / 180
	}
	function _(t, e, n) {
		if (null === t || void 0 === t) throw new Error("distance is required");
		if (! (t >= 0)) throw new Error("distance must be a positive number");
		return p(d(t, e), n || "kilometers")
	}
	function w(t, e, n) {
		if (null === t || void 0 === t) throw new Error("area is required");
		if (! (t >= 0)) throw new Error("area must be a positive number");
		var r = E[e || "meters"];
		if (!r) throw new Error("invalid original units");
		var i = E[n || "kilometers"];
		if (!i) throw new Error("invalid final units");
		return t / r * i
	}
	function b(t) {
		return ! isNaN(t) && null !== t && !Array.isArray(t)
	}
	var x = {
		miles: 3960,
		nauticalmiles: 3441.145,
		degrees: 57.2957795,
		radians: 1,
		inches: 250905600,
		yards: 6969600,
		meters: 6373e3,
		metres: 6373e3,
		centimeters: 6373e5,
		centimetres: 6373e5,
		kilometers: 6373,
		kilometres: 6373,
		feet: 20908792.65
	},
	E = {
		kilometers: 1e-6,
		kilometres: 1e-6,
		meters: 1,
		metres: 1,
		centimetres: 1e4,
		millimeter: 1e6,
		acres: 247105e-9,
		miles: 3.86e-7,
		yards: 1.195990046,
		feet: 10.763910417,
		inches: 1550.003100006
	};
	t.exports = {
		feature: n,
		geometry: r,
		featureCollection: a,
		geometryCollection: h,
		point: i,
		multiPoint: c,
		lineString: s,
		multiLineString: u,
		polygon: o,
		multiPolygon: l,
		radiansToDistance: p,
		distanceToRadians: d,
		distanceToDegrees: g,
		radians2degrees: v,
		degrees2radians: m,
		bearingToAngle: y,
		convertDistance: _,
		convertArea: w,
		round: f,
		isNumber: b
	}
},
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		if (null !== t) {
			var i, o, s, a, u, c, l, h, f, p, d = 0,
			g = 0,
			y = t.type,
			v = "FeatureCollection" === y,
			m = "Feature" === y,
			_ = v ? t.features.length: 1;
			for (i = 0; i < _; i++) for (f = v ? t.features[i].geometry: m ? t.geometry: t, p = !!f && "GeometryCollection" === f.type, l = p ? f.geometries.length: 1, o = 0; o < l; o++) {
				var w = 0;
				if (null !== (c = p ? f.geometries[o] : f)) {
					h = c.coordinates;
					var b = c.type;
					switch (d = !n || "Polygon" !== b && "MultiPolygon" !== b ? 0 : 1, b) {
					case null:
						break;
					case "Point":
						e(h, g, i, w),
						g++,
						w++;
						break;
					case "LineString":
					case "MultiPoint":
						for (s = 0; s < h.length; s++) e(h[s], g, i, w),
						g++,
						"MultiPoint" === b && w++;
						"LineString" === b && w++;
						break;
					case "Polygon":
					case "MultiLineString":
						for (s = 0; s < h.length; s++) {
							for (a = 0; a < h[s].length - d; a++) e(h[s][a], g, i, w),
							g++;
							"MultiLineString" === b && w++
						}
						"Polygon" === b && w++;
						break;
					case "MultiPolygon":
						for (s = 0; s < h.length; s++) {
							for (a = 0; a < h[s].length; a++) for (u = 0; u < h[s][a].length - d; u++) e(h[s][a][u], g, i, w),
							g++;
							w++
						}
						break;
					case "GeometryCollection":
						for (s = 0; s < c.geometries.length; s++) r(c.geometries[s], e, n);
						break;
					default:
						throw new Error("Unknown Geometry Type")
					}
				}
			}
		}
	}
	function i(t, e, n, i) {
		var o = n;
		return r(t,
		function(t, r, i, s) {
			o = 0 === r && void 0 === n ? t: e(o, t, r, i, s)
		},
		i),
		o
	}
	function o(t, e) {
		var n;
		switch (t.type) {
		case "FeatureCollection":
			for (n = 0; n < t.features.length; n++) e(t.features[n].properties, n);
			break;
		case "Feature":
			e(t.properties, 0)
		}
	}
	function s(t, e, n) {
		var r = n;
		return o(t,
		function(t, i) {
			r = 0 === i && void 0 === n ? t: e(r, t, i)
		}),
		r
	}
	function a(t, e) {
		if ("Feature" === t.type) e(t, 0);
		else if ("FeatureCollection" === t.type) for (var n = 0; n < t.features.length; n++) e(t.features[n], n)
	}
	function u(t, e, n) {
		var r = n;
		return a(t,
		function(t, i) {
			r = 0 === i && void 0 === n ? t: e(r, t, i)
		}),
		r
	}
	function c(t) {
		var e = [];
		return r(t,
		function(t) {
			e.push(t)
		}),
		e
	}
	function l(t, e) {
		var n, r, i, o, s, a, u, c, l = 0,
		h = "FeatureCollection" === t.type,
		f = "Feature" === t.type,
		p = h ? t.features.length: 1;
		for (n = 0; n < p; n++) {
			for (a = h ? t.features[n].geometry: f ? t.geometry: t, c = h ? t.features[n].properties: f ? t.properties: {},
			u = !!a && "GeometryCollection" === a.type, s = u ? a.geometries.length: 1, i = 0; i < s; i++) if (null !== (o = u ? a.geometries[i] : a)) switch (o.type) {
			case "Point":
			case "LineString":
			case "MultiPoint":
			case "Polygon":
			case "MultiLineString":
			case "MultiPolygon":
				e(o, l, c);
				break;
			case "GeometryCollection":
				for (r = 0; r < o.geometries.length; r++) e(o.geometries[r], l, c);
				break;
			default:
				throw new Error("Unknown Geometry Type")
			} else e(null, l, c);
			l++
		}
	}
	function h(t, e, n) {
		var r = n;
		return l(t,
		function(t, i, o) {
			r = 0 === i && void 0 === n ? t: e(r, t, i, o)
		}),
		r
	}
	function f(t, e) {
		l(t,
		function(t, n, r) {
			var i = null === t ? null: t.type;
			switch (i) {
			case null:
			case "Point":
			case "LineString":
			case "Polygon":
				return void e(y(t, r), n, 0)
			}
			var o;
			switch (i) {
			case "MultiPoint":
				o = "Point";
				break;
			case "MultiLineString":
				o = "LineString";
				break;
			case "MultiPolygon":
				o = "Polygon"
			}
			t.coordinates.forEach(function(t, i) {
				e(y({
					type: o,
					coordinates: t
				},
				r), n, i)
			})
		})
	}
	function p(t, e, n) {
		var r = n;
		return f(t,
		function(t, i, o) {
			r = 0 === i && 0 === o && void 0 === n ? t: e(r, t, i, o)
		}),
		r
	}
	function d(t, e) {
		f(t,
		function(t, n, r) {
			var o = 0;
			if (t.geometry) {
				var s = t.geometry.type;
				"Point" !== s && "MultiPoint" !== s && i(t,
				function(i, s) {
					var a = v([i, s], t.properties);
					return e(a, n, r, o),
					o++,
					s
				})
			}
		})
	}
	function g(t, e, n) {
		var r = n,
		i = !1;
		return d(t,
		function(t, o, s, a) {
			r = !1 === i && void 0 === n ? t: e(r, t, o, s, a),
			i = !0
		}),
		r
	}
	function y(t, e) {
		if (void 0 === t) throw new Error("No geometry passed");
		return {
			type: "Feature",
			properties: e || {},
			geometry: t
		}
	}
	function v(t, e) {
		if (!t) throw new Error("No coordinates passed");
		if (t.length < 2) throw new Error("Coordinates must be an array of two or more positions");
		return {
			type: "Feature",
			properties: e || {},
			geometry: {
				type: "LineString",
				coordinates: t
			}
		}
	}
	function m(t, e) {
		if (!t) throw new Error("geojson is required");
		var n = t.geometry ? t.geometry.type: t.type;
		if (!n) throw new Error("invalid geojson");
		if ("FeatureCollection" === n) throw new Error("FeatureCollection is not supported");
		if ("GeometryCollection" === n) throw new Error("GeometryCollection is not supported");
		var r = t.geometry ? t.geometry.coordinates: t.coordinates;
		if (!r) throw new Error("geojson must contain coordinates");
		switch (n) {
		case "LineString":
			return void e(r, 0, 0);
		case "Polygon":
		case "MultiLineString":
			for (var i = 0,
			o = 0; o < r.length; o++)"MultiLineString" === n && (i = o),
			e(r[o], o, i);
			return;
		case "MultiPolygon":
			for (var s = 0; s < r.length; s++) for (var a = 0; a < r[s].length; a++) e(r[s][a], a, s);
			return;
		default:
			throw new Error(n + " geometry not supported")
		}
	}
	function _(t, e, n) {
		var r = n;
		return m(t,
		function(t, i, o) {
			r = 0 === i && void 0 === n ? t: e(r, t, i, o)
		}),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.coordEach = r,
	e.coordReduce = i,
	e.propEach = o,
	e.propReduce = s,
	e.featureEach = a,
	e.featureReduce = u,
	e.coordAll = c,
	e.geomEach = l,
	e.geomReduce = h,
	e.flattenEach = f,
	e.flattenReduce = p,
	e.segmentEach = d,
	e.segmentReduce = g,
	e.feature = y,
	e.lineString = v,
	e.lineEach = m,
	e.lineReduce = _
},
function(t, e, n) {
	"use strict";
	function r(t) {
		for (var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = e.result, i = void 0 === n ? [] : n, o = e.dimensions, s = void 0 === o ? 3 : o, a = 0; a < t.length;) {
			var u = t[a];
			Array.isArray(u) || ArrayBuffer.isView(u) ? r(u, {
				result: i,
				dimensions: s
			}) : i.push(u.lng, u.lat),
			a += 1
		}
		return i
	}
	function i(t, e) {
		var n = t.getBounds();
		return n.covers(e) || n.intersects(e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.isInFrustum = i,
	e.
default = {
		to3DVertices: function(t, e) {
			e = e || 0;
			for (var n = [], r = 0, i = t.length / 2; r < i; r++) n.push(t[2 * r], t[2 * r + 1], e, 1);
			return n
		},
		mixCoords: function(t, e, n, r) {
			var i = arguments.length > 4 && void 0 !== arguments[4] ? arguments[4] : 1,
			o = [];
			if (r = r || 0, n) for (var s = 0,
			a = t.length / 2; s < a; s++) o.push([t[2 * s] * i + r, -1 * t[2 * s + 1] * i + r].concat(n));
			else for (var u = 0,
			c = t.length / 2; u < c; u++) o.push([t[2 * u] * i + r, -1 * t[2 * u + 1] * i + r, 0, 1]);
			return "polygon" === e && o.push(o[0]),
			o
		},
		flattenVertices: r,
		fillArray: function(t) {
			for (var e = t.target,
			n = t.source,
			r = t.start,
			i = void 0 === r ? 0 : r, o = t.count, s = void 0 === o ? 1 : o, a = n.length, u = s * a, c = 0, l = i; c < a; c++) e[l] = n[c],
			l += 1;
			for (; c < u;) c < u - c ? (e.copyWithin(i + c, i, i + c), c *= 2) : (e.copyWithin(i + c, i, i + u - c), c = u);
			return e
		}
	}
},
, ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		return arguments.length > 1 && void 0 !== arguments[1] && arguments[1] ? [t + 1 & 255, t + 1 >> 8 & 255, t + 1 >> 8 >> 8 & 255, 255] : [t + 1 & 255, t + 1 >> 8 & 255, t + 1 >> 8 >> 8 & 255]
	}
	function o(t) {
		var e = (0, p.
	default)(t, 3);
		return e[0] + 256 * e[1] + 65536 * e[2] - 1
	}
	function s(t) {
		for (var e = new h.
	default,
		n = [], r = 0; r < t.length; r += 4) if (255 === t[r + 3]) {
			var i = o([t[r], t[r + 1], t[r + 2]]),
			s = a(i);
			s && s.id && !e.has(s.id) && (e.add(s.id), n.push(s))
		}
		return n
	}
	function a(t) {
		var e = void 0;
		return (0, c.
	default)(d.styleNameConfig).forEach(function(n) { (0, c.
		default)(d.styleNameConfig[n]).forEach(function(r) {
				if (d.styleNameConfig[n][r].includes(t)) return void(e = {
					type: n,
					id: t,
					tag: r
				})
			})
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var u = n(17),
	c = r(u),
	l = n(241),
	h = r(l),
	f = n(32),
	p = r(f);
	e.encodePickingColor = i,
	e.decodePickingColor = o,
	e.decodeStylePickingColor = s;
	var d = n(386)
},
function(t, e, n) {
	t.exports = {
	default:
		n(412),
		__esModule: !0
	}
},
function(t, e, n) {
	n(243),
	t.exports = n(2).Object.assign
},
function(t, e, n) {
	var r = n(6);
	r(r.S + r.F, "Object", {
		assign: n(228)
	})
},
, , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(122),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = i.
default[1]
},
, ,
function(t, e, n) {
	"use strict";
	var r = n(8),
	i = n(6),
	o = n(40),
	s = n(30),
	a = n(19),
	u = n(99),
	c = n(71),
	l = n(91),
	h = n(7),
	f = n(42),
	p = n(14).f,
	d = n(259)(0),
	g = n(12);
	t.exports = function(t, e, n, y, v, m) {
		var _ = r[t],
		w = _,
		b = v ? "set": "add",
		x = w && w.prototype,
		E = {};
		return g && "function" == typeof w && (m || x.forEach && !s(function() { (new w).entries().next()
		})) ? (w = e(function(e, n) {
			l(e, w, t, "_c"),
			e._c = new _,
			void 0 != n && c(n, v, e[b], e)
		}), d("add,clear,delete,forEach,get,has,set,keys,values,entries,toJSON".split(","),
		function(t) {
			var e = "add" == t || "set" == t;
			t in x && (!m || "clear" != t) && a(w.prototype, t,
			function(n, r) {
				if (l(this, w, t), !e && m && !h(n)) return "get" == t && void 0;
				var i = this._c[t](0 === n ? 0 : n, r);
				return e ? this: i
			})
		}), m || p(w.prototype, "size", {
			get: function() {
				return this._c.size
			}
		})) : (w = y.getConstructor(e, t, v, b), u(w.prototype, n), o.NEED = !0),
		f(w, t),
		E[t] = w,
		i(i.G + i.W + i.F, E),
		m || y.setStrong(w, t, v),
		w
	}
},
function(t, e, n) {
	"use strict";
	var r = n(6),
	i = n(44),
	o = n(22),
	s = n(71);
	t.exports = function(t) {
		r(r.S, t, {
			from: function(t) {
				var e, n, r, a, u = arguments[1];
				return i(this),
				e = void 0 !== u,
				e && i(u),
				void 0 == t ? new this: (n = [], e ? (r = 0, a = o(u, arguments[2], 2), s(t, !1,
				function(t) {
					n.push(a(t, r++))
				})) : s(t, !1, n.push, n), new this(n))
			}
		})
	}
},
function(t, e, n) {
	"use strict";
	var r = n(6);
	t.exports = function(t) {
		r(r.S, t, {
			of: function() {
				for (var t = arguments.length,
				e = new Array(t); t--;) e[t] = arguments[t];
				return new this(e)
			}
		})
	}
},
, , , , ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e, n) {
		var r = t.projectToContainer(e),
		i = t.projectToContainer(n);
		return r.dist(i)
	}
	function o(t, e, n) {
		return i(t, e, n) * t._getSpatialResolution()
	}
	function s(t, e, n) {
		var r = t.projectToContainer(e),
		i = t.projectToContainer(n),
		o = r.add(i).div(2);
		return t.unprojectFromContainer(o)
	}
	function a(t, e) {
		var n = 0;
		return function() {
			var r = +new Date;
			if (r - n > e) {
				n = r;
				for (var i = arguments.length,
				o = Array(i), s = 0; s < i; s++) o[s] = arguments[s];
				t.apply(this, o)
			}
		}
	}
	function u(t, e, n) {
		if (e.length < 2) return null;
		var r = t.paths,
		i = l(r, n),
		o = h(e, n),
		s = (0, w.
	default)(i, o);
		if (s && s.features.length) {
			return s.features.map(function(t) {
				return f(t, n)
			}).map(function(e) {
				return {
					styleId: t.styleId,
					paths: e
				}
			})
		}
		return null
	}
	function c(t, e) {
		for (var n = t.map(function(t) {
			return l(t.paths, e)
		}), r = n[0], i = 1; i < n.length; i++) {
			var o = n[i];
			if (m.booleanDisjoint(r, o)) return null;
			r = (0, x.
		default)(r, o)
		}
		return {
			styleId: t[0].styleId,
			paths: f(r, e)
		}
	}
	function l(t, e) {
		var n = null; (0, E.isSimplePolygon)(t) ? n = [t] : (0, E.isHoleyPolygon)(t) && (n = t);
		var r = n.map(function(t) {
			return p(t),
			g(t, e)
		});
		return m.polygon(r)
	}
	function h(t, e) {
		return m.lineString(g(t, e))
	}
	function f(t, e) {
		var n = m.getCoords(t);
		return 1 === n.length ? y(n[0], e) : y(n, e)
	}
	function p(t) {
		var e = t[0],
		n = t[t.length - 1];
		e.equals(n) || t.push(e)
	}
	function d(t, e, n) {
		return e(t) ? n(t) : t.map(function(t) {
			return d(t, e, n)
		})
	}
	function g(t, e) {
		return d(t,
		function(t) {
			return t instanceof S
		},
		function(t) {
			var n = e.projectToContainer(t);
			return [n.x, n.y]
		})
	}
	function y(t, e) {
		return d(t,
		function(t) {
			return "number" == typeof t[0]
		},
		function(t) {
			var n = new I(t[0], t[1]);
			return e.unprojectFromContainer(n)
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.computePixelDist = i,
	e.computeMeterDist = o,
	e.computeMidPoint = s,
	e.throttle = a,
	e.split = u,
	e.union = c;
	var v = n(374),
	m = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (v),
	_ = n(718),
	w = r(_),
	b = n(719),
	x = r(b),
	E = n(279),
	M = TMap,
	I = M.Point,
	S = M.LatLng
},
function(t, e, n) {
	var r = n(22),
	i = n(80),
	o = n(31),
	s = n(52),
	a = n(312);
	t.exports = function(t, e) {
		var n = 1 == t,
		u = 2 == t,
		c = 3 == t,
		l = 4 == t,
		h = 6 == t,
		f = 5 == t || h,
		p = e || a;
		return function(e, a, d) {
			for (var g, y, v = o(e), m = i(v), _ = r(a, d, 3), w = s(m.length), b = 0, x = n ? p(e, w) : u ? p(e, 0) : void 0; w > b; b++) if ((f || b in m) && (g = m[b], y = _(g, b, v), t)) if (n) x[b] = y;
			else if (y) switch (t) {
			case 3:
				return ! 0;
			case 5:
				return g;
			case 6:
				return b;
			case 2:
				x.push(g)
			} else if (l) return ! 1;
			return h ? -1 : c || l ? l: x
		}
	}
},
function(t, e, n) {
	"use strict";
	var r = n(14).f,
	i = n(51),
	o = n(99),
	s = n(22),
	a = n(91),
	u = n(71),
	c = n(72),
	l = n(108),
	h = n(119),
	f = n(12),
	p = n(40).fastKey,
	d = n(183),
	g = f ? "_s": "size",
	y = function(t, e) {
		var n, r = p(e);
		if ("F" !== r) return t._i[r];
		for (n = t._f; n; n = n.n) if (n.k == e) return n
	};
	t.exports = {
		getConstructor: function(t, e, n, c) {
			var l = t(function(t, r) {
				a(t, l, e, "_i"),
				t._t = e,
				t._i = i(null),
				t._f = void 0,
				t._l = void 0,
				t[g] = 0,
				void 0 != r && u(r, n, t[c], t)
			});
			return o(l.prototype, {
				clear: function() {
					for (var t = d(this, e), n = t._i, r = t._f; r; r = r.n) r.r = !0,
					r.p && (r.p = r.p.n = void 0),
					delete n[r.i];
					t._f = t._l = void 0,
					t[g] = 0
				},
				delete: function(t) {
					var n = d(this, e),
					r = y(n, t);
					if (r) {
						var i = r.n,
						o = r.p;
						delete n._i[r.i],
						r.r = !0,
						o && (o.n = i),
						i && (i.p = o),
						n._f == r && (n._f = i),
						n._l == r && (n._l = o),
						n[g]--
					}
					return !! r
				},
				forEach: function(t) {
					d(this, e);
					for (var n, r = s(t, arguments.length > 1 ? arguments[1] : void 0, 3); n = n ? n.n: this._f;) for (r(n.v, n.k, this); n && n.r;) n = n.p
				},
				has: function(t) {
					return !! y(d(this, e), t)
				}
			}),
			f && r(l.prototype, "size", {
				get: function() {
					return d(this, e)[g]
				}
			}),
			l
		},
		def: function(t, e, n) {
			var r, i, o = y(t, e);
			return o ? o.v = n: (t._l = o = {
				i: i = p(e, !0),
				k: e,
				v: n,
				p: r = t._l,
				n: void 0,
				r: !1
			},
			t._f || (t._f = o), r && (r.n = o), t[g]++, "F" !== i && (t._i[i] = o)),
			t
		},
		getEntry: y,
		setStrong: function(t, e, n) {
			c(t, e,
			function(t, n) {
				this._t = d(t, e),
				this._k = n,
				this._l = void 0
			},
			function() {
				for (var t = this,
				e = t._k,
				n = t._l; n && n.r;) n = n.p;
				return t._t && (t._l = n = n ? n.n: t._t._f) ? "keys" == e ? l(0, n.k) : "values" == e ? l(0, n.v) : l(0, [n.k, n.v]) : (t._t = void 0, l(1))
			},
			n ? "entries": "values", !n, !0),
			h(e)
		}
	}
},
function(t, e, n) {
	var r = n(49),
	i = n(310);
	t.exports = function(t) {
		return function() {
			if (r(this) != t) throw TypeError(t + "#toJSON isn't generic");
			return i(this)
		}
	}
},
, , , , , , , , , , ,
function(t, e) {
	t.exports = function() {
		var t = [];
		return t.toString = function() {
			for (var t = [], e = 0; e < this.length; e++) {
				var n = this[e];
				n[2] ? t.push("@media " + n[2] + "{" + n[1] + "}") : t.push(n[1])
			}
			return t.join("")
		},
		t.i = function(e, n) {
			"string" == typeof e && (e = [[null, e, ""]]);
			for (var r = {},
			i = 0; i < this.length; i++) {
				var o = this[i][0];
				"number" == typeof o && (r[o] = !0)
			}
			for (i = 0; i < e.length; i++) {
				var s = e[i];
				"number" == typeof s[0] && r[s[0]] || (n && !s[2] ? s[2] = n: n && (s[2] = "(" + s[2] + ") and (" + n + ")"), t.push(s))
			}
		},
		t
	}
},
function(t, e, n) {
	"use strict";
	function r(t, e, n, r) {
		return function(n, i, o) {
			var s = t(t(e(i[1], o[0]), e( - o[1], i[0])), t(e(n[1], i[0]), e( - i[1], n[0]))),
			a = t(e(n[1], o[0]), e( - o[1], n[0])),
			u = r(s, a);
			return u[u.length - 1]
		}
	}
	function i(t, e, n, r) {
		return function(i, o, s, a) {
			var u = t(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), o[2]), t(n(t(e(o[1], a[0]), e( - a[1], o[0])), -s[2]), n(t(e(o[1], s[0]), e( - s[1], o[0])), a[2]))), t(n(t(e(o[1], a[0]), e( - a[1], o[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), a[2])))),
			c = t(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -s[2]), n(t(e(i[1], s[0]), e( - s[1], i[0])), a[2]))), t(n(t(e(o[1], s[0]), e( - s[1], o[0])), i[2]), t(n(t(e(i[1], s[0]), e( - s[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), s[2])))),
			l = r(u, c);
			return l[l.length - 1]
		}
	}
	function o(t, e, n, r) {
		return function(i, o, s, a, u) {
			var c = t(t(t(n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), s[2]), t(n(t(e(s[1], u[0]), e( - u[1], s[0])), -a[2]), n(t(e(s[1], a[0]), e( - a[1], s[0])), u[2]))), o[3]), t(n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), o[2]), t(n(t(e(o[1], u[0]), e( - u[1], o[0])), -a[2]), n(t(e(o[1], a[0]), e( - a[1], o[0])), u[2]))), -s[3]), n(t(n(t(e(s[1], u[0]), e( - u[1], s[0])), o[2]), t(n(t(e(o[1], u[0]), e( - u[1], o[0])), -s[2]), n(t(e(o[1], s[0]), e( - s[1], o[0])), u[2]))), a[3]))), t(n(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), o[2]), t(n(t(e(o[1], a[0]), e( - a[1], o[0])), -s[2]), n(t(e(o[1], s[0]), e( - s[1], o[0])), a[2]))), -u[3]), t(n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), o[2]), t(n(t(e(o[1], u[0]), e( - u[1], o[0])), -a[2]), n(t(e(o[1], a[0]), e( - a[1], o[0])), u[2]))), i[3]), n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -a[2]), n(t(e(i[1], a[0]), e( - a[1], i[0])), u[2]))), -o[3])))), t(t(n(t(n(t(e(o[1], u[0]), e( - u[1], o[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), u[2]))), a[3]), t(n(t(n(t(e(o[1], a[0]), e( - a[1], o[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), a[2]))), -u[3]), n(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), o[2]), t(n(t(e(o[1], a[0]), e( - a[1], o[0])), -s[2]), n(t(e(o[1], s[0]), e( - s[1], o[0])), a[2]))), i[3]))), t(n(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -s[2]), n(t(e(i[1], s[0]), e( - s[1], i[0])), a[2]))), -o[3]), t(n(t(n(t(e(o[1], a[0]), e( - a[1], o[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), a[2]))), s[3]), n(t(n(t(e(o[1], s[0]), e( - s[1], o[0])), i[2]), t(n(t(e(i[1], s[0]), e( - s[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), s[2]))), -a[3]))))),
			l = t(t(t(n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), s[2]), t(n(t(e(s[1], u[0]), e( - u[1], s[0])), -a[2]), n(t(e(s[1], a[0]), e( - a[1], s[0])), u[2]))), i[3]), n(t(n(t(e(a[1], u[0]), e( - u[1], a[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -a[2]), n(t(e(i[1], a[0]), e( - a[1], i[0])), u[2]))), -s[3])), t(n(t(n(t(e(s[1], u[0]), e( - u[1], s[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -s[2]), n(t(e(i[1], s[0]), e( - s[1], i[0])), u[2]))), a[3]), n(t(n(t(e(s[1], a[0]), e( - a[1], s[0])), i[2]), t(n(t(e(i[1], a[0]), e( - a[1], i[0])), -s[2]), n(t(e(i[1], s[0]), e( - s[1], i[0])), a[2]))), -u[3]))), t(t(n(t(n(t(e(s[1], u[0]), e( - u[1], s[0])), o[2]), t(n(t(e(o[1], u[0]), e( - u[1], o[0])), -s[2]), n(t(e(o[1], s[0]), e( - s[1], o[0])), u[2]))), i[3]), n(t(n(t(e(s[1], u[0]), e( - u[1], s[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -s[2]), n(t(e(i[1], s[0]), e( - s[1], i[0])), u[2]))), -o[3])), t(n(t(n(t(e(o[1], u[0]), e( - u[1], o[0])), i[2]), t(n(t(e(i[1], u[0]), e( - u[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), u[2]))), s[3]), n(t(n(t(e(o[1], s[0]), e( - s[1], o[0])), i[2]), t(n(t(e(i[1], s[0]), e( - s[1], i[0])), -o[2]), n(t(e(i[1], o[0]), e( - o[1], i[0])), s[2]))), -u[3])))),
			h = r(c, l);
			return h[h.length - 1]
		}
	}
	function s(t) {
		return (3 === t ? r: 4 === t ? i: o)(l, c, h, f)
	}
	function a(t) {
		var e = y[t.length];
		return e || (e = y[t.length] = s(t.length)),
		e.apply(void 0, t)
	}
	function u(t, e, n, r, i, o, s) {
		return function(e, n, a, u, c) {
			switch (arguments.length) {
			case 0:
			case 1:
				return 0;
			case 2:
				return r(e, n);
			case 3:
				return i(e, n, a);
			case 4:
				return o(e, n, a, u);
			case 5:
				return s(e, n, a, u, c)
			}
			for (var l = new Array(arguments.length), h = 0; h < arguments.length; ++h) l[h] = arguments[h];
			return t(l)
		}
	}
	var c = n(324),
	l = n(454),
	h = n(452),
	f = n(453),
	p = 5,
	d = s(3),
	g = s(4),
	y = [function() {
		return 0
	},
	function() {
		return 0
	},
	function(t, e) {
		return e[0] - t[0]
	},
	function(t, e, n) {
		var r, i = (t[1] - n[1]) * (e[0] - n[0]),
		o = (t[0] - n[0]) * (e[1] - n[1]),
		s = i - o;
		if (i > 0) {
			if (o <= 0) return s;
			r = i + o
		} else {
			if (! (i < 0)) return s;
			if (o >= 0) return s;
			r = -(i + o)
		}
		var a = 3.3306690738754716e-16 * r;
		return s >= a || s <= -a ? s: d(t, e, n)
	},
	function(t, e, n, r) {
		var i = t[0] - r[0],
		o = e[0] - r[0],
		s = n[0] - r[0],
		a = t[1] - r[1],
		u = e[1] - r[1],
		c = n[1] - r[1],
		l = t[2] - r[2],
		h = e[2] - r[2],
		f = n[2] - r[2],
		p = o * c,
		d = s * u,
		y = s * a,
		v = i * c,
		m = i * u,
		_ = o * a,
		w = l * (p - d) + h * (y - v) + f * (m - _),
		b = (Math.abs(p) + Math.abs(d)) * Math.abs(l) + (Math.abs(y) + Math.abs(v)) * Math.abs(h) + (Math.abs(m) + Math.abs(_)) * Math.abs(f),
		x = 7.771561172376103e-16 * b;
		return w > x || -w > x ? w: g(t, e, n, r)
	}]; !
	function() {
		for (; y.length <= p;) y.push(s(y.length));
		t.exports = u.apply(void 0, [a].concat(y));
		for (var e = 0; e <= p; ++e) t.exports[e] = y[e]
	} ()
},
function(t, e) {
	function n(t, e) {
		for (var n = 0; n < t.length; n++) {
			var r = t[n],
			i = f[r.id];
			if (i) {
				i.refs++;
				for (var o = 0; o < i.parts.length; o++) i.parts[o](r.parts[o]);
				for (; o < r.parts.length; o++) i.parts.push(u(r.parts[o], e))
			} else {
				for (var s = [], o = 0; o < r.parts.length; o++) s.push(u(r.parts[o], e));
				f[r.id] = {
					id: r.id,
					refs: 1,
					parts: s
				}
			}
		}
	}
	function r(t) {
		for (var e = [], n = {},
		r = 0; r < t.length; r++) {
			var i = t[r],
			o = i[0],
			s = i[1],
			a = i[2],
			u = i[3],
			c = {
				css: s,
				media: a,
				sourceMap: u
			};
			n[o] ? n[o].parts.push(c) : e.push(n[o] = {
				id: o,
				parts: [c]
			})
		}
		return e
	}
	function i(t, e) {
		var n = g(),
		r = m[m.length - 1];
		if ("top" === t.insertAt) r ? r.nextSibling ? n.insertBefore(e, r.nextSibling) : n.appendChild(e) : n.insertBefore(e, n.firstChild),
		m.push(e);
		else {
			if ("bottom" !== t.insertAt) throw new Error("Invalid value for parameter 'insertAt'. Must be 'top' or 'bottom'.");
			n.appendChild(e)
		}
	}
	function o(t) {
		t.parentNode.removeChild(t);
		var e = m.indexOf(t);
		e >= 0 && m.splice(e, 1)
	}
	function s(t) {
		var e = document.createElement("style");
		return e.type = "text/css",
		i(t, e),
		e
	}
	function a(t) {
		var e = document.createElement("link");
		return e.rel = "stylesheet",
		i(t, e),
		e
	}
	function u(t, e) {
		var n, r, i;
		if (e.singleton) {
			var u = v++;
			n = y || (y = s(e)),
			r = c.bind(null, n, u, !1),
			i = c.bind(null, n, u, !0)
		} else t.sourceMap && "function" == typeof URL && "function" == typeof URL.createObjectURL && "function" == typeof URL.revokeObjectURL && "function" == typeof Blob && "function" == typeof btoa ? (n = a(e), r = h.bind(null, n), i = function() {
			o(n),
			n.href && URL.revokeObjectURL(n.href)
		}) : (n = s(e), r = l.bind(null, n), i = function() {
			o(n)
		});
		return r(t),
		function(e) {
			if (e) {
				if (e.css === t.css && e.media === t.media && e.sourceMap === t.sourceMap) return;
				r(t = e)
			} else i()
		}
	}
	function c(t, e, n, r) {
		var i = n ? "": r.css;
		if (t.styleSheet) t.styleSheet.cssText = _(e, i);
		else {
			var o = document.createTextNode(i),
			s = t.childNodes;
			s[e] && t.removeChild(s[e]),
			s.length ? t.insertBefore(o, s[e]) : t.appendChild(o)
		}
	}
	function l(t, e) {
		var n = e.css,
		r = e.media;
		if (r && t.setAttribute("media", r), t.styleSheet) t.styleSheet.cssText = n;
		else {
			for (; t.firstChild;) t.removeChild(t.firstChild);
			t.appendChild(document.createTextNode(n))
		}
	}
	function h(t, e) {
		var n = e.css,
		r = e.sourceMap;
		r && (n += "\n/*# sourceMappingURL=data:application/json;base64," + btoa(unescape(encodeURIComponent(JSON.stringify(r)))) + " */");
		var i = new Blob([n], {
			type: "text/css"
		}),
		o = t.href;
		t.href = URL.createObjectURL(i),
		o && URL.revokeObjectURL(o)
	}
	var f = {},
	p = function(t) {
		var e;
		return function() {
			return void 0 === e && (e = t.apply(this, arguments)),
			e
		}
	},
	d = p(function() {
		return /msie [6-9]\b/.test(self.navigator.userAgent.toLowerCase())
	}),
	g = p(function() {
		return document.head || document.getElementsByTagName("head")[0]
	}),
	y = null,
	v = 0,
	m = [];
	t.exports = function(t, e) {
		if ("undefined" != typeof DEBUG && DEBUG && "object" != typeof document) throw new Error("The style-loader cannot be used in a non-browser environment");
		e = e || {},
		void 0 === e.singleton && (e.singleton = d()),
		void 0 === e.insertAt && (e.insertAt = "bottom");
		var i = r(t);
		return n(i, e),
		function(t) {
			for (var o = [], s = 0; s < i.length; s++) {
				var a = i[s],
				u = f[a.id];
				u.refs--,
				o.push(u)
			}
			if (t) {
				n(r(t), e)
			}
			for (var s = 0; s < o.length; s++) {
				var u = o[s];
				if (0 === u.refs) {
					for (var c = 0; c < u.parts.length; c++) u.parts[c]();
					delete f[u.id]
				}
			}
		}
	};
	var _ = function() {
		var t = [];
		return function(e, n) {
			return t[e] = n,
			t.filter(Boolean).join("\n")
		}
	} ()
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = t.geometries.map(function(t) {
			return t.paths || []
		}),
		n = new i.PolygonParseHelper({
			complexPolygons: e,
			IndexType: Uint32Array
		});
		n.updatePositions({
			fp64: !0,
			extruded: !0
		});
		var r = n.getPositions(),
		o = n.getIndices(),
		a = n.getPositions64xyLow(),
		u = n.getVertexValid(),
		c = n.getPickingColors(),
		l = n.getElevations({
			getElevation: function(e) {
				var n = t.geometries[e],
				r = t.styles[n.styleId];
				return r && r.extrudeHeight ? r.extrudeHeight: 0
			}
		}),
		h = n.getColors({
			key: "fillColors",
			getColor: function(e) {
				var n = t.geometries[e],
				r = t.styles[n.styleId];
				if (r) {
					return new s.
				default(r.color).toUpArray()
				}
				return [0, 0, 0, 0]
			}
		}),
		f = n.getColors({
			key: "lineColors",
			getColor: function(e) {
				var n = t.geometries[e],
				r = t.styles[n.styleId];
				if (r) {
					if (r.showBorder) {
						var i = new s.
					default(r.borderColor);
						return "borderWidth" in r ? [0, 0, 0, 0] : i.toUpArray()
					}
					return [0, 0, 0, 0]
				}
				return [0, 0, 0, 0]
			}
		}),
		p = r.slice(3),
		d = a.slice(2),
		g = r.slice(),
		y = a.slice();
		return g.set(p),
		y.set(d),
		{
			positions: r,
			indices: o,
			positions64xyLow: a,
			vertexValid: u,
			pickingColors: c,
			elevations: l,
			fillColors: h,
			lineColors: f,
			nextPositions: g,
			nextPositions64xyLow: y
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(333),
	o = n(227),
	s = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (o);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t, e, n, r) {
		n = n || 2;
		var o = e && e.length,
		a = o ? e[0] * n: t.length,
		u = i(t, 0, a, n, !0),
		c = [];
		if (!u) return c;
		var l = void 0,
		f = void 0,
		p = void 0,
		d = void 0,
		g = void 0,
		y = void 0,
		v = void 0;
		if (o && (u = h(t, e, u, n)), t.length > 80 * n) {
			var m = (0, T.
		default)(t, 2);
			p = m[0],
			d = m[1],
			l = p,
			f = d;
			for (var _ = n; _ < a; _ += n) g = t[_],
			y = t[_ + 1],
			g < l && (l = g),
			y < f && (f = y),
			g > p && (p = g),
			y > d && (d = y);
			v = Math.max(p - l, d - f)
		}
		return s(u, c, n, l, f, v, void 0, r),
		c
	}
	function i(t, e, n, r, i) {
		var o = void 0,
		s = void 0;
		if (i === A(t, e, n, r) > 0) for (o = e; o < n; o += r) s = N(o, t[o], t[o + 1], s);
		else for (o = n - r; o >= e; o -= r) s = N(o, t[o], t[o + 1], s);
		return s && x(s, s.next) && (P(s), s = s.next),
		s
	}
	function o(t, e) {
		if (!t) return t;
		e || (e = t);
		var n = t,
		r = void 0;
		do {
			if (r = !1, n.steiner || !x(n, n.next) && 0 !== b(n.prev, n, n.next)) n = n.next;
			else {
				if (P(n), e = n.prev, (n = e) === n.next) return null;
				r = !0
			}
		} while ( r || n !== e );
		return e
	}
	function s(t, e, n, r, i, h, f, p) {
		if (p = p || 0, t) { ! f && h && g(t, r, i, h);
			for (var d = t,
			y = void 0,
			v = void 0; t.prev !== t.next;) if (y = t.prev, v = t.next, h ? u(t, r, i, h) : a(t)) e.push(y.i / n + p),
			e.push(t.i / n + p),
			e.push(v.i / n + p),
			P(t),
			t = v.next,
			d = v.next;
			else if ((t = v) === d) {
				f ? 1 === f ? (t = c(t, e, n, p), s(t, e, n, r, i, h, 2, p)) : 2 === f && l(t, e, n, r, i, h, p) : s(o(t), e, n, r, i, h, 1, p);
				break
			}
		}
	}
	function a(t) {
		var e = t.prev,
		n = t,
		r = t.next;
		if (b(e, n, r) >= 0) return ! 1;
		for (var i = t.next.next; i !== t.prev;) {
			if (_(e.x, e.y, n.x, n.y, r.x, r.y, i.x, i.y) && b(i.prev, i, i.next) >= 0) return ! 1;
			i = i.next
		}
		return ! 0
	}
	function u(t, e, n, r) {
		var i = t.prev,
		o = t,
		s = t.next;
		if (b(i, o, s) >= 0) return ! 1;
		for (var a = i.x < o.x ? i.x < s.x ? i.x: s.x: o.x < s.x ? o.x: s.x, u = i.y < o.y ? i.y < s.y ? i.y: s.y: o.y < s.y ? o.y: s.y, c = i.x > o.x ? i.x > s.x ? i.x: s.x: o.x > s.x ? o.x: s.x, l = i.y > o.y ? i.y > s.y ? i.y: s.y: o.y > s.y ? o.y: s.y, h = v(a, u, e, n, r), f = v(c, l, e, n, r), p = t.nextZ; p && p.z <= f;) {
			if (p !== t.prev && p !== t.next && _(i.x, i.y, o.x, o.y, s.x, s.y, p.x, p.y) && b(p.prev, p, p.next) >= 0) return ! 1;
			p = p.nextZ
		}
		for (p = t.prevZ; p && p.z >= h;) {
			if (p !== t.prev && p !== t.next && _(i.x, i.y, o.x, o.y, s.x, s.y, p.x, p.y) && b(p.prev, p, p.next) >= 0) return ! 1;
			p = p.prevZ
		}
		return ! 0
	}
	function c(t, e, n, r) {
		var i = t;
		do {
			var o = i.prev,
			s = i.next.next; ! x(o, s) && E(o, i, i.next, s) && I(o, s) && I(s, o) && (e.push(o.i / n + r), e.push(i.i / n + r), e.push(s.i / n + r), P(i), P(i.next), t = s, i = t), i = i.next
		} while ( i !== t );
		return i
	}
	function l(t, e, n, r, i, a, u) {
		var c = t;
		do {
			for (var l = c.next.next; l !== c.prev;) {
				if (c.i !== l.i && w(c, l)) {
					var h = C(c, l);
					return c = o(c, c.next),
					h = o(h, h.next),
					s(c, e, n, r, i, a, void 0, u),
					void s(h, e, n, r, i, a, void 0, u)
				}
				l = l.next
			}
			c = c.next
		} while ( c !== t )
	}
	function h(t, e, n, r) {
		var s = [],
		a = void 0,
		u = void 0,
		c = void 0,
		l = void 0,
		h = void 0;
		for (a = 0, u = e.length; a < u; a++) c = e[a] * r,
		l = a < u - 1 ? e[a + 1] * r: t.length,
		h = i(t, c, l, r, !1),
		h === h.next && (h.steiner = !0),
		s.push(m(h));
		for (s.sort(f), a = 0; a < s.length; a++) p(s[a], n),
		n = o(n, n.next);
		return n
	}
	function f(t, e) {
		return t.x - e.x
	}
	function p(t, e) {
		if (e = d(t, e)) {
			var n = C(e, t);
			o(n, n.next)
		}
	}
	function d(t, e) {
		var n = e,
		r = t.x,
		i = t.y,
		o = -1 / 0,
		s = void 0;
		do {
			if (i <= n.y && i >= n.next.y && n.next.y !== n.y) {
				var a = n.x + (i - n.y) * (n.next.x - n.x) / (n.next.y - n.y);
				if (a <= r && a > o) {
					if (o = a, a === r) {
						if (i === n.y) return n;
						if (i === n.next.y) return n.next
					}
					s = n.x < n.next.x ? n: n.next
				}
			}
			n = n.next
		} while ( n !== e );
		if (!s) return null;
		if (r === o) return s.prev;
		var u = s,
		c = s.x,
		l = s.y,
		h = 1 / 0,
		f = void 0;
		for (n = s.next; n !== u;) r >= n.x && n.x >= c && r !== n.x && _(i < l ? r: o, i, c, l, i < l ? o: r, i, n.x, n.y) && ((f = Math.abs(i - n.y) / (r - n.x)) < h || f === h && n.x > s.x) && I(n, t) && (s = n, h = f),
		n = n.next;
		return s
	}
	function g(t, e, n, r) {
		var i = t;
		do {
			null === i.z && (i.z = v(i.x, i.y, e, n, r)), i.prevZ = i.prev, i.nextZ = i.next, i = i.next
		} while ( i !== t );
		i.prevZ.nextZ = null,
		i.prevZ = null,
		y(i)
	}
	function y(t) {
		var e = void 0,
		n = void 0,
		r = void 0,
		i = void 0,
		o = void 0,
		s = void 0,
		a = void 0,
		u = void 0,
		c = 1;
		do {
			for (n = t, t = null, o = null, s = 0; n;) {
				for (s += 1, r = n, a = 0, e = 0; e < c && (a += 1, r = r.nextZ); e++);
				for (u = c; a > 0 || u > 0 && r;) 0 !== a && (0 === u || !r || n.z <= r.z) ? (i = n, n = n.nextZ, a -= 1) : (i = r, r = r.nextZ, u -= 1),
				o ? o.nextZ = i: t = i,
				i.prevZ = o,
				o = i;
				n = r
			}
			o && (o.nextZ = null), c *= 2
		} while ( s > 1 );
		return t
	}
	function v(t, e, n, r, i) {
		return t = 32767 * (t - n) / i,
		e = 32767 * (e - r) / i,
		t = 16711935 & (t | t << 8),
		t = 252645135 & (t | t << 4),
		t = 858993459 & (t | t << 2),
		t = 1431655765 & (t | t << 1),
		e = 16711935 & (e | e << 8),
		e = 252645135 & (e | e << 4),
		e = 858993459 & (e | e << 2),
		e = 1431655765 & (e | e << 1),
		t | e << 1
	}
	function m(t) {
		var e = t,
		n = t;
		do {
			e.x < n.x && (n = e), e = e.next
		} while ( e !== t );
		return n
	}
	function _(t, e, n, r, i, o, s, a) {
		return (i - s) * (e - a) - (t - s) * (o - a) >= 0 && (t - s) * (r - a) - (n - s) * (e - a) >= 0 && (n - s) * (o - a) - (i - s) * (r - a) >= 0
	}
	function w(t, e) {
		return t.next.i !== e.i && t.prev.i !== e.i && !M(t, e) && I(t, e) && I(e, t) && S(t, e)
	}
	function b(t, e, n) {
		return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
	}
	function x(t, e) {
		return t.x === e.x && t.y === e.y
	}
	function E(t, e, n, r) {
		return !! (x(t, e) && x(n, r) || x(t, r) && x(n, e)) || b(t, e, n) > 0 != b(t, e, r) > 0 && b(n, r, t) > 0 != b(n, r, e) > 0
	}
	function M(t, e) {
		var n = t;
		do {
			if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && E(n, n.next, t, e)) return ! 0;
			n = n.next
		} while ( n !== t );
		return ! 1
	}
	function I(t, e) {
		return b(t.prev, t, t.next) < 0 ? b(t, e, t.next) >= 0 && b(t, t.prev, e) >= 0 : b(t, e, t.prev) < 0 || b(t, t.next, e) < 0
	}
	function S(t, e) {
		var n = t,
		r = !1,
		i = (t.x + e.x) / 2,
		o = (t.y + e.y) / 2;
		do {
			n.y > o != n.next.y > o && n.next.y !== n.y && i < (n.next.x - n.x) * (o - n.y) / (n.next.y - n.y) + n.x && (r = !r), n = n.next
		} while ( n !== t );
		return r
	}
	function C(t, e) {
		var n = new L(t.i, t.x, t.y),
		r = new L(e.i, e.x, e.y),
		i = t.next,
		o = e.prev;
		return t.next = e,
		e.prev = t,
		n.next = i,
		i.prev = n,
		r.next = n,
		n.prev = r,
		o.next = r,
		r.prev = o,
		r
	}
	function N(t, e, n, r) {
		var i = new L(t, e, n);
		return r ? (i.next = r.next, i.prev = r, r.next.prev = i, r.next = i) : (i.prev = i, i.next = i),
		i
	}
	function P(t) {
		t.next.prev = t.prev,
		t.prev.next = t.next,
		t.prevZ && (t.prevZ.nextZ = t.nextZ),
		t.nextZ && (t.nextZ.prevZ = t.prevZ)
	}
	function L(t, e, n) {
		this.i = t,
		this.x = e,
		this.y = n,
		this.prev = null,
		this.next = null,
		this.z = null,
		this.prevZ = null,
		this.nextZ = null,
		this.steiner = !1
	}
	function A(t, e, n, r) {
		for (var i = 0,
		o = e,
		s = n - r; o < n; o += r) i += (t[s] - t[o]) * (t[o + 1] + t[s + 1]),
		s = o;
		return i
	}
	var O = n(32),
	T = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (O);
	t.exports = r,
	r.deviation = function(t, e, n, r) {
		var i = e && e.length,
		o = i ? e[0] * n: t.length,
		s = Math.abs(A(t, 0, o, n));
		if (i) for (var a = 0,
		u = e.length; a < u; a++) {
			var c = e[a] * n,
			l = a < u - 1 ? e[a + 1] * n: t.length;
			s -= Math.abs(A(t, c, l, n))
		}
		for (var h = 0,
		f = 0; f < r.length; f += 3) {
			var p = r[f] * n,
			d = r[f + 1] * n,
			g = r[f + 2] * n;
			h += Math.abs((t[p] - t[g]) * (t[d + 1] - t[p + 1]) - (t[p] - t[d]) * (t[g + 1] - t[p + 1]))
		}
		return 0 === s && 0 === h ? 0 : Math.abs((h - s) / s)
	},
	r.flatten = function(t) {
		for (var e = t[0][0].length, n = {
			vertices: [],
			holes: [],
			dimensions: e
		},
		r = 0, i = 0; i < t.length; i++) {
			for (var o = 0; o < t[i].length; o++) for (var s = 0; s < e; s++) n.vertices.push(t[i][o][s]);
			i > 0 && (r += t[i - 1].length, n.holes.push(r))
		}
		return n
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return "[object Array]" === Object.prototype.toString.call(t)
	}
	function i(t) {
		return t instanceof v || t instanceof _
	}
	function o(t, e) {
		return e.flat(1 / 0).map(function(e) {
			return t.projectToContainer(e)
		})
	}
	function s(t) {
		return i(t[0]) ? [t] : t.reduce(function(t, e) {
			return t.concat(s(e))
		},
		[])
	}
	function a(t) {
		return i(t[0]) ? w.SIMPLE: r(t[0]) && i(t[0][0]) ? w.HOLEY: w.COMBINED
	}
	function u(t) {
		return a(t) === w.SIMPLE
	}
	function c(t) {
		return a(t) === w.HOLEY
	}
	function l(t) {
		return a(t) === w.COMBINED
	}
	function h(t) {
		return i(t[0]) ? b.SIMPLE: b.COMBINED
	}
	function f(t) {
		return h(t) === b.SIMPLE
	}
	function p(t) {
		return h(t) === b.COMBINED
	}
	function d(t) {
		var e = void 0,
		n = void 0,
		r = t.length;
		if (r < 3) return ! 1;
		t.forEach(function(t, r) { (!e || t.x > e.x || t.x === e.x && t.y >= e.y) && (e = t, n = r)
		});
		var i = n > 0 ? t[n - 1] : t[r - 1],
		o = n < r - 1 ? t[n + 1] : t[0];
		return ! ((e.x - i.x) * (o.y - e.y) - (o.x - e.x) * (e.y - i.y) < 0)
	}
	function g(t, e) {
		return i(e) ? t.projectToContainer(e) : e.map(function(e) {
			return g(t, e)
		})
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getPathPixelPoints = o,
	e.flatPaths = s,
	e.getPolygonType = a,
	e.isSimplePolygon = u,
	e.isHoleyPolygon = c,
	e.isCombinedPolygon = l,
	e.getPolylineType = h,
	e.isSimplePolyline = f,
	e.isCombinedPolyline = p,
	e.isClockwise = d,
	e.projectPath = g;
	var y = TMap,
	v = y.LatLng,
	m = TMap,
	_ = m.Point,
	w = {
		SIMPLE: "simple",
		HOLEY: "complex",
		COMBINED: "part"
	},
	b = {
		SIMPLE: "simple",
		COMBINED: "part"
	}
},
, ,
function(t, e, n) {
	"use strict";
	e.__esModule = !0;
	var r = n(25),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = function(t) {
		return function() {
			var e = t.apply(this, arguments);
			return new i.
		default(function(t, n) {
				function r(o, s) {
					try {
						var a = e[o](s),
						u = a.value
					} catch(t) {
						return void n(t)
					}
					if (!a.done) return i.
				default.resolve(u).then(function(t) {
						r("next", t)
					},
					function(t) {
						r("throw", t)
					});
					t(u)
				}
				return r("next")
			})
		}
	}
},
function(t, e, n) {
	t.exports = n(402)
},
, , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var r = n(247),
	i = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (r);
	e.
default = i.
default[0]
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		return Math.sqrt(t * t + e * e)
	}
	function o(t, e) {
		var n = t.pageX,
		r = t.pageY;
		if (t.touches) {
			var i = t.touches[e || 0];
			n = i.pageX,
			r = i.pageY
		}
		return {
			x: n,
			y: r
		}
	}
	function s(t) {
		return t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Finger = void 0;
	var a = n(24),
	u = r(a),
	c = n(17),
	l = r(c),
	h = n(3),
	f = r(h),
	p = n(0),
	d = r(p),
	g = n(1),
	y = r(g),
	v = n(5),
	m = r(v),
	_ = n(4),
	w = r(_),
	b = n(28),
	x = n(120),
	E = {
		start: ["mousedown", "touchstart"],
		move: ["mousemove", "touchmove"],
		end: ["mouseup", "touchend"],
		cancel: ["", "touchcancel"],
		leave: ["mouseleave", ""]
	},
	M = 0,
	I = (e.Finger = function(t) {
		function e(t) {
			var n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {}; (0, d.
		default)(this, e);
			var r = (0, m.
		default)(this, (e.__proto__ || (0, f.
		default)(e)).call(this));
			if (!t) throw new Error("element is invalid");
			return r.options = n,
			r.identifier = "Finger__" + M,
			M += 1,
			r.touched = !1,
			r.panning = !1,
			r.element = t,
			r.element.__Finger__identifier = r.identifier,
			r.handlers = [],
			r.isDoubleTap = !1,
			r.y1 = null,
			r.x1 = r.y1,
			r.y2 = null,
			r.x2 = r.y2,
			r.deltaTime = null,
			r.lastStartTime = null,
			r.panSpeedStartTime = null,
			r.panSpeedStartPos = null,
			r.now = null,
			r.tapTimeout = null,
			r.holdTimeout = null,
			r.swipeTimeout = null,
			r.startVector = null,
			r.startDistance = null,
			r.init(),
			r
		}
		return (0, w.
	default)(e, t),
		(0, y.
	default)(e, [{
			key: "init",
			value: function() {
				var t = this,
				e = "ontouchstart" in document ? 1 : 0,
				n = (0, l.
			default)(E).forEach(function(n) {
					if (E[n][e]) {
						if ("leave" === n) return void(0, b.on)(t.element, E[n][e], I.end, t); (0, b.on)(t.element, E[n][e], I[n], t)
					}
				});
				this.handlers.concat(n)
			}
		},
		{
			key: "destroy",
			value: function() {
				clearTimeout(this.tapTimeout),
				clearTimeout(this.holdTimeout),
				clearTimeout(this.swipeTimeout),
				this.removeAllListeners("touch-start"),
				this.removeAllListeners("multi-touch-start"),
				this.removeAllListeners("hold"),
				this.removeAllListeners("pinch"),
				this.removeAllListeners("rotate"),
				this.removeAllListeners("pan-start"),
				this.removeAllListeners("pan"),
				this.removeAllListeners("pan-end"),
				this.removeAllListeners("swipe"),
				this.removeAllListeners("tap"),
				this.removeAllListeners("doubletap"),
				this.removeAllListeners("touch-end"),
				this.removeAllListeners("multi-touch-end"),
				this.removeAllListeners("touch-cancel"),
				this.identifier = null,
				delete this.element.__Finger__identifier,
				this.handlers.forEach(function(t) {
					t && t.remove && t.remove()
				}),
				this.touched = !1,
				this.handlers = [],
				this.isDoubleTap = !1,
				this.y1 = null,
				this.x1 = this.y1,
				this.y2 = null,
				this.x2 = this.y2,
				this.deltaTime = null,
				this.lastStartTime = null,
				this.now = null,
				this.tapTimeout = null,
				this.holdTimeout = null,
				this.swipeTimeout = null,
				this.startVector = null,
				this.startDistance = null
			}
		}]),
		e
	} (x), {
		start: function(t) {
			var e = this;
			if (t && t.target) {
				this.touched = !0,
				this.now = Date.now(),
				this.deltaTime = this.now - (this.lastStartTime || this.now);
				var n = o(t);
				"number" == typeof this.x1 && "number" == typeof this.y1 && (this.isDoubleTap = this.deltaTime < 300 && Math.abs(n.x - this.x1) < 10 && Math.abs(n.y - this.y1) < 10),
				this.x1 = n.x,
				this.y1 = n.y;
				var r = s(t);
				if (this.emit("touch-start", r), t.touches && t.touches.length > 1) {
					var a = o(t, 0),
					c = o(t, 1);
					this.startVector = [c.x - a.x, c.y - a.y],
					this.startDistance = i.apply(void 0, (0, u.
				default)(this.startVector)),
					r.vector = this.startVector,
					r.vectorDistance = this.startDistance,
					clearTimeout(this.holdTimeout),
					this.emit("multi-touch-start", r)
				}
				this.lastStartTime = this.now,
				this.holdTimeout = setTimeout(function() {
					e.emit("hold", r)
				},
				750),
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		move: function(t) {
			if (t && t.target && this.touched) {
				var e = o(t),
				n = s(t);
				if (this.isDoubleTap = !1, clearTimeout(this.holdTimeout), null !== this.x2 ? (n.deltaX = e.x - this.x2, n.deltaY = e.y - this.y2) : (n.deltaX = 0, n.deltaY = 0), t.touches && t.touches.length > 1 && this.startVector && null !== this.startVector.x) {
					var r = o(t, 0),
					a = o(t, 1),
					u = [a.x - r.x, a.y - r.y],
					c = i.apply(void 0, u),
					l = c / this.startDistance,
					h = Math.acos((this.startVector[0] * u[0] + this.startVector[1] * u[1]) / (c * this.startDistance));
					h = u[0] * this.startVector[1] - this.startVector[0] * u[1] >= 0 ? h: -h,
					Math.abs(l - 1) > .01 && (n.scale = l, this.emit("pinch", n)),
					0 !== h && (n.angle = h, this.emit("rotate", n)),
					t.preventDefault()
				} else if (this.touched && (0 !== n.deltaY || 0 !== n.deltaX)) if (this.panning) {
					this.emit("pan", n);
					var f = Date.now();
					f - this.panSpeedStartTime > 300 && (this.panSpeedStartTime = f, this.panSpeedStartPos = e)
				} else this.emit("pan-start", n),
				this.panning = !0,
				this.panSpeedStartTime = Date.now(),
				this.panSpeedStartPos = e;
				this.options.preventDefaultMove && t.preventDefault(),
				this.x2 = e.x,
				this.y2 = e.y,
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		end: function(t) {
			var e = this;
			if (t && t.target) {
				clearTimeout(this.holdTimeout),
				this.now = Date.now();
				var n = this.x2 - this.x1,
				r = this.y2 - this.y1,
				i = null === this.x2 || Math.abs(n) < 10 && Math.abs(r) < 10,
				o = this.now - this.lastStartTime < 200 && i,
				a = s(t);
				if (null !== this.x2 && null !== this.y2 && this.panning) {
					var u = Math.abs(n) > Math.abs(r) ? n > 0 ? "RIGHT": "LEFT": r > 0 ? "DOWN": "TOP",
					c = 0,
					l = 0;
					if (this.now - this.panSpeedStartTime < 300) {
						var h = this.x2 - this.panSpeedStartPos.x,
						f = this.y2 - this.panSpeedStartPos.y,
						p = this.now - this.panSpeedStartTime;
						l = h / p,
						c = f / p
					}
					a.swipeDirection = u,
					a.speedX = l,
					a.speedY = c,
					a.deltaX = n,
					a.deltaY = r,
					this.panning && (this.emit("pan-end", a), this.panning = !1),
					this.swipeTimeout = setTimeout(function() {
						e.emit("swipe", a)
					})
				} else i && o && (this.tapTimeout = setTimeout(function() {
					e.emit("tap", a),
					e.isDoubleTap && (e.emit("doubletap", a), e.isDoubleTap = !1)
				},
				0));
				this.emit("touch-end", a),
				t.touches && t.touches.length > 0 && t.touches.length < 2 && this.emit("multi-touch-end", a),
				this.startDistance = null,
				this.startVector = [0, 0],
				this.y2 = null,
				this.x2 = this.y2,
				this.touched = !1,
				this.options.preventDefaultEnd && t.preventDefault(),
				this.options.stopPropagation && t.stopPropagation()
			}
		},
		cancel: function(t) {
			clearTimeout(this.tapTimeout),
			clearTimeout(this.holdTimeout),
			clearTimeout(this.swipeTimeout),
			this.touched = !1,
			this.emit("touch-cancel", t)
		}
	})
},
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {},
		n = o(t, e);
		return (0, i.toDom)(n)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.Template = void 0,
	e.templeteToDom = r;
	var i = n(210),
	o = e.Template = function() {
		var t = {},
		e = function(t) {
			return String(t).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#039;").replace(/[ ]/g, "&nbsp;")
		};
		return function(n, r) {
			if ("string" == typeof n) {
				var i = t[n];
				if (!t[n]) {
					var o = n.replace(/<%\s*([^=][^%>]*)\s*%>/g,
					function() {
						return "';" + arguments[1] + " tmp+='"
					}).replace(/<%=\s*([^%>]+)\s*%>/g,
					function() {
						return "' + strip(" + arguments[1] + ") +'"
					}).replace(/<%=\s*([^%>]+)\s*%>/g,
					function() {
						return "' + " + arguments[1] + "+ '"
					});
					o = 'var tmp = ""; with(obj){ tmp = \'' + o + "'; } return tmp;",
					i = new Function("obj", "strip", o),
					t[n] = i
				}
				return i(r, e)
			}
		}
	} ()
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		return t.length >= 3 && (0, E.
	default)(t[0].lat) && (0, E.
	default)(t[0].lng)
	}
	function o(t) {
		return t.length >= 1 && t.every(function(t) {
			return t.length >= 3 && i(t)
		})
	}
	function s(t) {
		return t.length >= 1 && t.every(function(t) {
			return o(t)
		})
	}
	function a(t) {
		var e = t[0],
		n = t[t.length - 1];
		return e.lat === n.lat && e.lng === n.lng ? t: t.concat([e])
	}
	function u(t) {
		for (var e = 0,
		n = 1,
		r = void 0,
		i = void 0; n < t.length;) r = i || t[0],
		i = t[n],
		e += (i.lng - r.lng) * (i.lat + r.lat),
		n += 1;
		return e > 0
	}
	function c(t) {
		return (i(t) ? [[a(t)]] : o(t) ? [t.map(function(t) {
			return a(t)
		})] : t.map(function(t) {
			return t.map(a)
		})).map(function(t) {
			return t.map(function(t, e) {
				var n = [];
				return t.forEach(function(t) {
					if (n.length > 0) {
						var e = n[n.length - 1];
						t.lat === e.lat && t.lng === e.lng || n.push(t)
					} else n.push(t)
				}),
				0 === e ? u(n) ? n.reverse() : n: u(n) ? n: n.reverse()
			})
		})
	}
	function l(t) {
		return c(t).reduce(function(t, e) {
			var n = e.reduce(function(t, e) {
				return t.push(e),
				t
			},
			[]);
			return t.push.apply(t, (0, b.
		default)(n)),
			t
		},
		[])
	}
	function h(t) {
		return i(t) ? t.length: t.reduce(function(t, e) {
			return t + e.reduce(function(t, e) {
				return t + e.length
			},
			0)
		},
		0)
	}
	function f(t) {
		return t.reduce(function(t, e) {
			return t + p(e)
		},
		0)
	}
	function p(t) {
		var e = 0,
		n = !0,
		r = !0,
		i = !1,
		o = void 0;
		try {
			for (var s, a = (0, _.
		default)(t); ! (r = (s = a.next()).done); r = !0) {
				var u = s.value,
				c = u.length;
				e += n ? c >= 3 ? c - 3 : 0 : c + 1,
				n = !1
			}
		} catch(t) {
			i = !0,
			o = t
		} finally {
			try { ! r && a.
				return && a.
				return ()
			} finally {
				if (i) throw o
			}
		}
		return e
	}
	function d(t) {
		var e = null;
		if (t.length > 1) {
			var n = 0;
			e = [],
			t.forEach(function(t) {
				n += t.length,
				e.push(n)
			}),
			e.pop()
		}
		return e
	}
	function g(t, e) {
		var n = 3 * f(t),
		r = v(t),
		i = new e(n),
		o = 0;
		return t.forEach(function(t, e) {
			var n = y(t),
			s = !0,
			a = !1,
			u = void 0;
			try {
				for (var c, l = (0, _.
			default)(n); ! (s = (c = l.next()).done); s = !0) {
					var h = c.value;
					i[o] = h + r[e],
					o += 1
				}
			} catch(t) {
				a = !0,
				u = t
			} finally {
				try { ! s && l.
					return && l.
					return ()
				} finally {
					if (a) throw u
				}
			}
		}),
		i
	}
	function y(t) {
		var e = d(t),
		n = N(t, {
			dimensions: 2,
			result: []
		});
		return (0, C.
	default)(n, e, 2)
	}
	function v(t) {
		var e = new Array(t.length + 1);
		e[0] = 0;
		var n = 0;
		return t.forEach(function(t, r) {
			n += t.reduce(function(t, e) {
				return t + e.length
			},
			0),
			e[r + 1] = n
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var m = n(27),
	_ = r(m),
	w = n(24),
	b = r(w),
	x = n(343),
	E = r(x);
	e.isSimple = i,
	e.isPart = o,
	e.isComplex = s,
	e.isClockWise = u,
	e.normalize = c,
	e.getBorderPolyline = l,
	e.getVertexCount = h,
	e.getTriangleCount = f,
	e.getTriangleCountOfPart = p,
	e.getSurfaceIndices = g;
	var M = n(237),
	I = r(M),
	S = n(278),
	C = r(S),
	N = I.
default.flattenVertices
},
, , , , , , , ,
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(314),
	n(318),
	n(317),
	n(316),
	t.exports = n(2).Map
},
,
function(t, e, n) {
	n(319),
	t.exports = n(2).Object.values
},
function(t, e, n) {
	var r = n(71);
	t.exports = function(t, e) {
		var n = [];
		return r(t, !1, n.push, n, e),
		n
	}
},
function(t, e, n) {
	var r = n(7),
	i = n(117),
	o = n(9)("species");
	t.exports = function(t) {
		var e;
		return i(t) && (e = t.constructor, "function" != typeof e || e !== Array && !i(e.prototype) || (e = void 0), r(e) && null === (e = e[o]) && (e = void 0)),
		void 0 === e ? Array: e
	}
},
function(t, e, n) {
	var r = n(311);
	t.exports = function(t, e) {
		return new(r(t))(e)
	}
},
function(t, e) {
	t.exports = Math.sign ||
	function(t) {
		return 0 == (t = +t) || t != t ? t: t < 0 ? -1 : 1
	}
},
function(t, e, n) {
	"use strict";
	var r = n(260),
	i = n(183);
	t.exports = n(250)("Map",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		get: function(t) {
			var e = r.getEntry(i(this, "Map"), t);
			return e && e.v
		},
		set: function(t, e) {
			return r.def(i(this, "Map"), 0 === t ? 0 : t, e)
		}
	},
	r, !0)
},
,
function(t, e, n) {
	n(251)("Map")
},
function(t, e, n) {
	n(252)("Map")
},
function(t, e, n) {
	var r = n(6);
	r(r.P + r.R, "Map", {
		toJSON: n(261)("Map")
	})
},
function(t, e, n) {
	var r = n(6),
	i = n(118)(!1);
	r(r.S, "Object", {
		values: function(t) {
			return i(t)
		}
	})
},
, , , ,
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		var r = t * e,
		o = i * t,
		s = o - t,
		a = o - s,
		u = t - a,
		c = i * e,
		l = c - e,
		h = c - l,
		f = e - h,
		p = r - a * h,
		d = p - u * h,
		g = d - a * f,
		y = u * f - g;
		return n ? (n[0] = y, n[1] = r, n) : [y, r]
	}
	t.exports = r;
	var i = +(Math.pow(2, 27) + 1)
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		var n = ["fill:none", "stroke-linecap:" + x[e.lineCap], "stroke-linejoin:" + e.lineJoin];
		e.dash && n.push("stroke-dasharray:" + e.dash.join(","));
		var r = document.createElementNS(t, "g");
		if (r.setAttribute("style", n.join(";")), e.borderWidth) {
			var i = ["stroke:" + e.borderColor, "stroke-width:" + (2 * e.borderWidth + e.width)],
			o = document.createElementNS(t, "path");
			o.setAttribute("style", i.join(";")),
			r.appendChild(o)
		}
		if (e.width) {
			var s = ["stroke:" + e.color, "stroke-width:" + e.width],
			a = document.createElementNS(t, "path");
			a.setAttribute("style", s.join(";")),
			r.appendChild(a)
		}
		return r
	}
	function o(t) {
		return t.map(function(t, e) {
			return (e ? "L": "M") + t.x + "," + t.y
		}).join(" ")
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(16),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(4),
	v = r(y),
	m = n(389),
	_ = r(m),
	w = n(279),
	b = {
		color: "#3777FF",
		width: 3,
		borderWidth: 0,
		borderColor: "#3777FF",
		lineCap: 0,
		lineJoin: "round",
		dash: null
	},
	x = {
		0 : "butt",
		1 : "square",
		2 : "round"
	},
	E = function(t) {
		function e(t) {
			return (0, h.
		default)(this, e),
			(0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, v.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "setStyle",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.style = (0, a.
			default)({},
				b, t)
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this.style)
			}
		},
		{
			key: "_updatePoints",
			value: function() {
				var t = this.path,
				e = this.map,
				n = "",
				r = [];
				return (0, w.isSimplePolyline)(t) ? (r = (0, w.getPathPixelPoints)(e, t), n = o(r)) : n = t.map(function(t) {
					var n = (0, w.getPathPixelPoints)(e, t);
					return r = r.concat(n),
					o(n)
				}).join(" "),
				this._shape.childNodes.forEach(function(t) {
					t.setAttribute("d", n)
				}),
				r
			}
		}]),
		e
	} (_.
default);
	e.
default = E
},
,
function(t, e, n) {
	"use strict";
	function r(t, e, r) {
		if (r = r || {},
		!n.i(o.isObject)(r)) throw new Error("options is invalid");
		var s = r.units,
		a = n.i(i.getCoord)(t),
		u = n.i(i.getCoord)(e),
		c = n.i(o.degreesToRadians)(u[1] - a[1]),
		l = n.i(o.degreesToRadians)(u[0] - a[0]),
		h = n.i(o.degreesToRadians)(a[1]),
		f = n.i(o.degreesToRadians)(u[1]),
		p = Math.pow(Math.sin(c / 2), 2) + Math.pow(Math.sin(l / 2), 2) * Math.cos(h) * Math.cos(f);
		return n.i(o.radiansToLength)(2 * Math.atan2(Math.sqrt(p), Math.sqrt(1 - p)), s)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(109),
	o = n(48);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var r = {},
		l = [];
		if ("LineString" === t.type && (t = n.i(c.feature)(t)), "LineString" === e.type && (e = n.i(c.feature)(e)), "Feature" === t.type && "Feature" === e.type && "LineString" === t.geometry.type && "LineString" === e.geometry.type && 2 === t.geometry.coordinates.length && 2 === e.geometry.coordinates.length) {
			var h = i(t, e);
			return h && l.push(h),
			n.i(c.featureCollection)(l)
		}
		var f = n.i(o.
	default)();
		return f.load(n.i(s.
	default)(e)),
		n.i(u.featureEach)(n.i(s.
	default)(t),
		function(t) {
			n.i(u.featureEach)(f.search(t),
			function(e) {
				var o = i(t, e);
				if (o) {
					var s = n.i(a.getCoords)(o).join(",");
					r[s] || (r[s] = !0, l.push(o))
				}
			})
		}),
		n.i(c.featureCollection)(l)
	}
	function i(t, e) {
		var r = n.i(a.getCoords)(t),
		i = n.i(a.getCoords)(e);
		if (2 !== r.length) throw new Error("<intersects> line1 must only contain 2 coordinates");
		if (2 !== i.length) throw new Error("<intersects> line2 must only contain 2 coordinates");
		var o = r[0][0],
		s = r[0][1],
		u = r[1][0],
		l = r[1][1],
		h = i[0][0],
		f = i[0][1],
		p = i[1][0],
		d = i[1][1],
		g = (d - f) * (u - o) - (p - h) * (l - s),
		y = (p - h) * (s - f) - (d - f) * (o - h),
		v = (u - o) * (s - f) - (l - s) * (o - h);
		if (0 === g) return null;
		var m = y / g,
		_ = v / g;
		if (m >= 0 && m <= 1 && _ >= 0 && _ <= 1) {
			var w = o + m * (u - o),
			b = s + m * (l - s);
			return n.i(c.point)([w, b])
		}
		return null
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(357),
	s = n(329),
	a = n(109),
	u = n(121),
	c = n(48);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		if (!t) throw new Error("geojson is required");
		var e = [];
		return n.i(c.flattenEach)(t,
		function(t) {
			i(t, e)
		}),
		n.i(a.featureCollection)(e)
	}
	function i(t, e) {
		var r = [],
		i = t.geometry;
		switch (i.type) {
		case "Polygon":
			r = n.i(u.getCoords)(i);
			break;
		case "LineString":
			r = [n.i(u.getCoords)(i)]
		}
		r.forEach(function(n) {
			o(n, t.properties).forEach(function(t) {
				t.id = e.length,
				e.push(t)
			})
		})
	}
	function o(t, e) {
		var r = [];
		return t.reduce(function(t, i) {
			var o = n.i(a.lineString)([t, i], e);
			return o.bbox = s(t, i),
			r.push(o),
			i
		}),
		r
	}
	function s(t, e) {
		var n = t[0],
		r = t[1],
		i = e[0],
		o = e[1];
		return [n < i ? n: i, r < o ? r: o, n > i ? n: i, r > o ? r: o]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(48),
	u = n(109),
	c = n(121);
	e.
default = r
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		var e = t.getSouthWest(),
		n = t.getNorthEast(),
		r = t.getSouthEast();
		return [n, t.getNorthWest(), e, r]
	}
	function o(t, e, n) {
		var r = (0, c.latLngToMercator)(t);
		return [new h.
	default(e / 2, n / 2), new h.
	default(e / 2, -n / 2), new h.
	default( - e / 2, -n / 2), new h.
	default( - e / 2, n / 2)].map(function(t) {
			return t.x = r.x + t.x,
			t.y = r.y + t.y,
			(0, c.mercatorToLatLng)(t)
		})
	}
	function s(t) {
		return (0, u.
	default)(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.getBoundsPath = i,
	e.getRectanglePath = o;
	var a = n(277),
	u = r(a),
	c = n(112),
	l = n(74),
	h = r(l);
	e.
default = s
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		return t.reduce(function(t, e) {
			return t + _.getVertexCount(e)
		},
		0)
	}
	function o(t) {
		return t.reduce(function(t, e) {
			return t + _.getTriangleCount(e)
		},
		0)
	}
	function s(t) {
		var e = new Array(t.length + 1);
		e[0] = 0;
		var n = 0;
		return t.forEach(function(t, r) {
			n += _.getVertexCount(t),
			e[r + 1] = n
		}),
		e
	}
	function a(t) {
		var e = t.complexPolygons,
		n = t.IndexType,
		r = void 0 === n ? Uint32Array: n,
		i = 3 * o(e),
		a = s(e),
		u = new r(i),
		c = 0;
		return e.forEach(function(t, e) {
			var n = _.getSurfaceIndices(t, r),
			i = !0,
			o = !1,
			s = void 0;
			try {
				for (var l, h = (0, p.
			default)(n); ! (i = (l = h.next()).done); i = !0) {
					var f = l.value;
					u[c] = f + a[e],
					c += 1
				}
			} catch(t) {
				o = !0,
				s = t
			} finally {
				try { ! i && h.
					return && h.
					return ()
				} finally {
					if (o) throw s
				}
			}
		}),
		u
	}
	function u(t) {
		var e = t.cache,
		n = e.positions,
		r = e.positions64xyLow,
		i = e.vertexValid,
		o = t.complexPolygons,
		s = t.fp64,
		a = 0;
		o.forEach(function(t) {
			t.forEach(function(t) {
				t.forEach(function(t) {
					t.forEach(function(t) {
						var e = t.lng,
						i = t.lat,
						o = t.z || 0;
						n[3 * a] = e,
						n[3 * a + 1] = i,
						n[3 * a + 2] = o,
						s && (r[2 * a] = (0, x.fp64LowPart)(e), r[2 * a + 1] = (0, x.fp64LowPart)(i)),
						a += 1
					}),
					i[a - 1] = 0
				})
			})
		})
	}
	function c(t) {
		var e = t.cache,
		n = t.complexPolygons,
		r = t.pointCount,
		i = t.getElevation,
		o = e || new Float32Array(r),
		s = 0;
		return n.forEach(function(t, e) {
			var n = i(e),
			r = _.getVertexCount(t);
			M({
				target: o,
				source: [n],
				start: s,
				count: r
			}),
			s += r
		}),
		o
	}
	function l(t) {
		var e = t.cache,
		n = t.complexPolygons,
		r = t.pointCount,
		i = t.getColor,
		o = e || new Uint8ClampedArray(4 * r),
		s = 0;
		return n.forEach(function(t, e) {
			var n = i(e);
			isNaN(n[3]) && (n[3] = 255);
			var r = _.getVertexCount(t);
			M({
				target: o,
				source: n,
				start: s,
				count: r
			}),
			s += n.length * r
		}),
		o
	}
	function h(t) {
		var e = t.complexPolygons,
		n = t.pointCount,
		r = new Uint8ClampedArray(3 * n),
		i = 0;
		return e.forEach(function(t, e) {
			var n = (0, E.encodePickingColor)(e),
			o = _.getVertexCount(t);
			M({
				target: r,
				source: n,
				start: i,
				count: o
			}),
			i += n.length * o
		}),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.PolygonParseHelper = void 0;
	var f = n(27),
	p = r(f),
	d = n(0),
	g = r(d),
	y = n(1),
	v = r(y),
	m = n(298),
	_ = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (m),
	w = n(237),
	b = r(w),
	x = n(139),
	E = n(240),
	M = b.
default.fillArray,
	I = [0, 0, 0, 255];
	e.PolygonParseHelper = function() {
		function t(e) {
			var n = e.complexPolygons,
			r = e.IndexType; (0, g.
		default)(this, t),
			n = n.map(function(t) {
				return _.normalize(t)
			});
			var o = i(n);
			this.complexPolygons = n,
			this.pointCount = o,
			this.IndexType = r,
			this.attributes = {
				pickingColors: h({
					complexPolygons: n,
					pointCount: o
				})
			}
		}
		return (0, v.
	default)(t, [{
			key: "updatePositions",
			value: function(t) {
				var e = t.fp64,
				n = t.extruded;
				e = !0;
				var r = this.attributes,
				i = this.complexPolygons,
				o = this.pointCount;
				r.positions = r.positions || new Float32Array(3 * o),
				r.vertexValid = r.vertexValid || new Uint8ClampedArray(o).fill(1),
				e && (r.positions64xyLow = r.positions64xyLow || new Float32Array(2 * o)),
				u({
					cache: r,
					complexPolygons: i,
					extruded: n,
					fp64: e
				})
			}
		},
		{
			key: "getIndices",
			value: function() {
				return a({
					complexPolygons: this.complexPolygons,
					IndexType: this.IndexType
				})
			}
		},
		{
			key: "getPositions",
			value: function() {
				return this.attributes.positions
			}
		},
		{
			key: "getPositions64xyLow",
			value: function() {
				return this.attributes.positions64xyLow
			}
		},
		{
			key: "getVertexValid",
			value: function() {
				return this.attributes.vertexValid
			}
		},
		{
			key: "getElevations",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.key,
				n = void 0 === e ? "elevations": e,
				r = t.getElevation,
				i = void 0 === r ?
				function() {
					return 100
				}: r,
				o = this.attributes,
				s = this.complexPolygons,
				a = this.pointCount,
				u = c({
					cache: o[n],
					complexPolygons: s,
					pointCount: a,
					getElevation: i
				});
				return o[n] = u,
				u
			}
		},
		{
			key: "getColors",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.key,
				n = void 0 === e ? "colors": e,
				r = t.getColor,
				i = void 0 === r ?
				function() {
					return I
				}: r,
				o = this.attributes,
				s = this.complexPolygons,
				a = this.pointCount,
				u = l({
					cache: o[n],
					complexPolygons: s,
					pointCount: a,
					getColor: i
				});
				return o[n] = u,
				u
			}
		},
		{
			key: "getPickingColors",
			value: function() {
				return this.attributes.pickingColors
			}
		}]),
		t
	} ()
},
function(t, e, n) {
	"use strict";
	function r(t) {
		if (t && t.geometry && t.geometry.coordinates) {
			var e = (0, o.
		default)(t.geometry.coordinates, 2),
			n = e[0],
			r = e[1];
			return new TMap.LatLng(r, n)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(32),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(4),
	p = r(f),
	d = TMap,
	g = d.DOMOverlay,
	y = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, a.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).call(this, t));
			return n.correctHandler = t.correctHandler ||
			function(t) {
				return t
			},
			n.setEditable(t.editable),
			n
		}
		return (0, p.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "onInit",
			value: function(t) {
				this._ns = "http://www.w3.org/2000/svg",
				this._xlinkns = "http://www.w3.org/1999/xlink",
				this.setStyle(t.style)
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this.setEditable(!1)
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = document.createElementNS(this._ns, "svg");
				return t.setAttribute("version", "1.1"),
				t.setAttribute("baseProfile", "full"),
				t.setAttribute("pointer-events", "none"),
				t.style.cssText = ["position:absolute", "left: 0px", "top: 0px"].join(";"),
				this._shape = this._createShape(),
				t.appendChild(this._shape),
				t
			}
		},
		{
			key: "updateDOM",
			value: function() {}
		},
		{
			key: "setStyle",
			value: function() {}
		},
		{
			key: "setEditable",
			value: function() {}
		}]),
		e
	} (g);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(223),
	o = r(i),
	s = n(16),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(35),
	v = r(y),
	m = n(4),
	_ = r(m),
	w = n(1045),
	b = r(w),
	x = n(1046),
	E = r(x),
	M = n(362),
	I = r(M),
	S = {
		width: 10,
		height: 10,
		anchor: {
			x: 5,
			y: 5
		}
	},
	C = function(t) {
		function e(t) { (0, h.
		default)(this, e);
			var n = (0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, (0, a.
		default)({},
			t, {
				style: (0, o.
			default)({
					src:
					t.light ? b.
				default:
					E.
				default
				},
				S, t.iconStyle),
				editable: !0
			})));
			return n.dom.style.cursor = "pointer",
			t.disableDblclick || (n._onDblclick = function(t) {
				t.stopPropagation(),
				n.emit("dblclick")
			},
			n.dom.addEventListener("dblclick", n._onDblclick)),
			n
		}
		return (0, _.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "onDestroy",
			value: function() {
				this._onDblclick && (this.dom.removeEventListener("dblclick", this._onDblclick), this._onDblclick = null),
				(0, v.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "onDestroy", this).call(this)
			}
		}]),
		e
	} (I.
default);
	e.
default = C
},
, , , , , ,
function(t, e, n) {
	t.exports = {
	default:
		n(411),
		__esModule: !0
	}
},
, , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = n.i(s.a)(t);
		return e.insert = function(t) {
			if (Array.isArray(t)) {
				var e = t;
				t = i(e),
				t.bbox = e
			} else t.bbox = t.bbox ? t.bbox: o(t);
			return s.a.prototype.insert.call(this, t)
		},
		e.load = function(t) {
			var e = [];
			return Array.isArray(t) ? t.forEach(function(t) {
				var n = i(t);
				n.bbox = t,
				e.push(n)
			}) : n.i(a.featureEach)(t,
			function(t) {
				t.bbox = t.bbox ? t.bbox: o(t),
				e.push(t)
			}),
			s.a.prototype.load.call(this, e)
		},
		e.remove = function(t) {
			if (Array.isArray(t)) {
				var e = t;
				t = i(e),
				t.bbox = e
			}
			return s.a.prototype.remove.call(this, t)
		},
		e.clear = function() {
			return s.a.prototype.clear.call(this)
		},
		e.search = function(t) {
			return {
				type: "FeatureCollection",
				features: s.a.prototype.search.call(this, this.toBBox(t))
			}
		},
		e.collides = function(t) {
			return s.a.prototype.collides.call(this, this.toBBox(t))
		},
		e.all = function() {
			return {
				type: "FeatureCollection",
				features: s.a.prototype.all.call(this)
			}
		},
		e.toJSON = function() {
			return s.a.prototype.toJSON.call(this)
		},
		e.fromJSON = function(t) {
			return s.a.prototype.fromJSON.call(this, t)
		},
		e.toBBox = function(t) {
			var e;
			return e = t.bbox ? t.bbox: Array.isArray(t) && 4 === t.length ? t: o(t),
			{
				minX: e[0],
				minY: e[1],
				maxX: e[2],
				maxY: e[3]
			}
		},
		e
	}
	function i(t) {
		var e = [t[0], t[1]],
		n = [t[0], t[3]],
		r = [t[2], t[3]];
		return {
			type: "Feature",
			bbox: t,
			properties: {},
			geometry: {
				type: "Polygon",
				coordinates: [[e, [t[2], t[1]], r, n, e]]
			}
		}
	}
	function o(t) {
		var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
		return n.i(a.coordEach)(t,
		function(t) {
			e[0] > t[0] && (e[0] = t[0]),
			e[1] > t[1] && (e[1] = t[1]),
			e[2] < t[0] && (e[2] = t[0]),
			e[3] < t[1] && (e[3] = t[1])
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(448),
	a = n(121);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		if (o(t) !== f) {
			var e = t.map(function(t) {
				return (0, h.
			default)(t)
			}),
			n = (0, a.polygon)([e]);
			return (0, c.
		default)(n)
		}
	}
	function o(t) {
		if (!Array.isArray(t)) return f;
		if (Array.isArray(t[0])) return console.error("传入的数据不合规范，暂只支持简单多边形"),
		f;
		if (t.length < 3) return console.error("传入的数据不合规范，简单多边形请至少输入三个点"),
		f;
		try {
			t.forEach(function(t) {
				t.getLat(),
				t.getLng()
			})
		} catch(t) {
			throw console.error("传入的数据不合规范，请确认输入多边形内点的格式为 LatLng"),
			new Error(t)
		}
		s(t)
	}
	function s(t) {
		var e = (0, h.
	default)(t[0]),
		n = (0, h.
	default)(t[t.length - 1]);
		if (e[0] !== n[0] || e[1] !== n[1]) {
			var r = new TMap.LatLng(t[0].getLat(), t[0].getLng());
			t.push(r)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(48),
	u = n(364),
	c = r(u),
	l = n(123),
	h = r(l),
	f = "INPUT_ILLEAGL";
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		if (o(t) !== d) {
			var e = t.map(function(t) {
				return (0, h.
			default)(t)
			}),
			n = (0, a.polygon)([e]),
			r = (0, c.
		default)(n);
			return (0, p.
		default)(r)
		}
	}
	function o(t) {
		if (!Array.isArray(t)) return console.error("传入的数据不合规范，多边形数据请输入数组形式"),
		d;
		if (Array.isArray(t[0])) return console.error("传入的数据不合规范，暂只支持简单多边形"),
		d;
		if (t.length < 3) return console.error("传入的数据不合规范，简单多边形请至少输入三个点"),
		d;
		try {
			t.forEach(function(t) {
				t.getLat(),
				t.getLng()
			})
		} catch(t) {
			throw console.error("传入的数据不合规范，请确认输入多边形内点的格式为 LatLng"),
			new Error(t)
		}
		s(t)
	}
	function s(t) {
		var e = (0, h.
	default)(t[0]),
		n = (0, h.
	default)(t[t.length - 1]);
		if (e[0] !== n[0] || e[1] !== n[1]) {
			var r = new TMap.LatLng(t[0].getLat(), t[0].getLng());
			t.push(r)
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var a = n(48),
	u = n(367),
	c = r(u),
	l = n(123),
	h = r(l),
	f = n(334),
	p = r(f),
	d = "INPUT_ILLEAGL";
	e.
default = i
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		var n = ["fill:" + e.color, "stroke:" + e.borderColor, "stroke-width:" + e.borderWidth],
		r = document.createElementNS(t, "circle");
		return r.setAttribute("style", n.join(";")),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	s = r(o),
	a = n(3),
	u = r(a),
	c = n(0),
	l = r(c),
	h = n(1),
	f = r(h),
	p = n(5),
	d = r(p),
	g = n(35),
	y = r(g),
	v = n(4),
	m = r(v),
	_ = n(335),
	w = r(_),
	b = n(336),
	x = r(b),
	E = n(258),
	M = TMap,
	I = M.Point,
	S = {
		color: "rgba(55,119,255,0.16)",
		borderWidth: 2,
		borderColor: "#3777FF"
	},
	C = function(t) {
		function e(t) { (0, l.
		default)(this, e);
			var n = (0, d.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return n.iconInfo = t.iconInfo,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, y.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "onInit", this).call(this, t),
				this.setCenter(t.center),
				this.setRadius(t.radius)
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this._shape && this.map) {
					var t = this.radius / this.map._getSpatialResolution();
					t !== this._shapeRadius && this._updateShape(t);
					var e = this.map.projectToContainer(this.center),
					n = e.x - this.dom.clientWidth / 2,
					r = e.y - this.dom.clientHeight / 2;
					this.dom.style.transform = "translate3d(" + n + "px, " + r + "px, 0px)"
				}
			}
		},
		{
			key: "setStyle",
			value: function(t) {
				this.style = (0, s.
			default)({},
				S, t)
			}
		},
		{
			key: "setCenter",
			value: function(t) {
				this.center = t,
				this.updateDOM()
			}
		},
		{
			key: "getCenter",
			value: function() {
				return this.center
			}
		},
		{
			key: "setRadius",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 5;
				this.radius = t,
				this.updateDOM()
			}
		},
		{
			key: "getRadius",
			value: function() {
				return this.radius
			}
		},
		{
			key: "_updateShape",
			value: function(t) {
				if (this._shape) {
					this._shape.setAttribute("cx", t),
					this._shape.setAttribute("cy", t),
					this._shape.setAttribute("r", t);
					var e = 0,
					n = 0,
					r = 2 * t,
					i = 2 * t;
					r += 40,
					i += 40,
					e -= 20,
					n -= 20,
					this.dom.setAttribute("viewBox", [e, n, r, i].join(" ")),
					this.dom.setAttribute("width", r),
					this.dom.setAttribute("height", i),
					this._shapeRadius = t
				}
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this.style)
			}
		},
		{
			key: "setEditable",
			value: function(t) {
				var e = this;
				if (t !== this.editable) {
					if (t) {
						var n = this.map,
						r = new x.
					default({
							map:
							n,
							position: this.center,
							correctHandler: this.correctHandler,
							iconStyle: this.iconInfo.actual || {}
						}),
						i = new x.
					default({
							map:
							n,
							position: this._getRadiusPos(),
							correctHandler: this.correctHandler,
							light: !0,
							iconStyle: this.iconInfo.virtual || {}
						});
						r.on("editing",
						function(t) {
							e.setCenter(r.getPosition()),
							i.setPosition(e._getRadiusPos()),
							e.emit("editing", t)
						}),
						r.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						i.on("editing",
						function(t) {
							e.setRadius((0, E.computeMeterDist)(n, e.getCenter(), i.getPosition())),
							e.emit("editing", t)
						}),
						i.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						this.centerEditPoint = r,
						this.radiusEditPoint = i
					} else this.centerEditPoint.destroy(),
					this.radiusEditPoint.destroy(),
					this.centerEditPoint = null,
					this.radiusEditPoint = null;
					this.editable = !!t
				}
			}
		},
		{
			key: "_getRadiusPos",
			value: function() {
				var t = this.map,
				e = this.center,
				n = this.radius,
				r = t.projectToContainer(e),
				i = n / t._getSpatialResolution(),
				o = r.add(new I(i, 0));
				return t.unprojectFromContainer(o)
			}
		}]),
		e
	} (w.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e, n) {
		var r = document.createElementNS(t, "image");
		return r.setAttribute("x", 0),
		r.setAttribute("h", 0),
		r.setAttribute("width", n.width),
		r.setAttribute("height", n.height),
		r.setAttributeNS(e, "href", n.src),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	s = r(o),
	a = n(3),
	u = r(a),
	c = n(0),
	l = r(c),
	h = n(1),
	f = r(h),
	p = n(5),
	d = r(p),
	g = n(35),
	y = r(g),
	v = n(4),
	m = r(v),
	_ = n(335),
	w = r(_),
	b = n(1047),
	x = r(b),
	E = n(258),
	M = TMap,
	I = M.Point,
	S = {
		src: x.
	default,
		width: 34,
		height: 50,
		anchor: null
	},
	C = function(t) {
		function e(t) {
			return (0, l.
		default)(this, e),
			(0, d.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t))
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, y.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "onInit", this).call(this, t),
				this.setPosition(t.position)
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = (0, y.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "createDOM", this).call(this),
				n = this.style,
				r = n.width,
				i = n.height;
				return t.setAttribute("viewBox", [0, 0, r, i].join(" ")),
				t.setAttribute("width", r),
				t.setAttribute("height", i),
				t
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this._shape && this.map) {
					var t = this.map.projectToContainer(this.position),
					e = this.style.anchor,
					n = e.x,
					r = e.y,
					i = t.x - n,
					o = t.y - r;
					this.dom.style.transform = "translate3d(" + i + "px, " + o + "px, 0px)"
				}
			}
		},
		{
			key: "setStyle",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.style = (0, s.
			default)({},
				S, t),
				this.style.anchor || (this.style.anchor = {
					x: this.style.width / 2,
					y: this.style.height
				})
			}
		},
		{
			key: "setPosition",
			value: function(t) {
				return this.position = t,
				this.updateDOM(),
				this
			}
		},
		{
			key: "getPosition",
			value: function() {
				return this.position
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this._xlinkns, this.style)
			}
		},
		{
			key: "setEditable",
			value: function(t) {
				t !== this.editable && (t ? (this.dom.setAttribute("pointer-events", "painted"), this._onMouseDown = this._onMouseDown.bind(this), this._onMouseUp = this._onMouseUp.bind(this), this.dom.addEventListener("mousedown", this._onMouseDown), document.addEventListener("mouseup", this._onMouseUp)) : (this.dom.setAttribute("pointer-events", "none"), this.dom.removeEventListener("mousedown", this._onMouseDown), document.removeEventListener("mouseup", this._onMouseUp), this._isDown && this._onMouseUp()), this.editable = !!t)
			}
		},
		{
			key: "_onMouseDown",
			value: function(t) {
				this._isDown = !0,
				this._moveFrom = {
					containerPixel: this.map.projectToContainer(this.position),
					mousePixel: new I(t.clientX, t.clientY)
				},
				this.map.dragPan.isEnabled() && (this.map.dragPan.disable(), this.map._dragPan = !0),
				this._mousemoveHandler = (0, E.throttle)(this._onMouseMove.bind(this), 20),
				document.addEventListener("mousemove", this._mousemoveHandler)
			}
		},
		{
			key: "_onMouseMove",
			value: function(t) {
				if (this._isDown) {
					var e = this._moveFrom,
					n = new I(t.clientX, t.clientY),
					r = n.sub(e.mousePixel);
					if (r.mag() < 2) return;
					this._isMoved || (this._isMoved = !0, this.emit("edit_start"));
					var i = e.containerPixel.add(r),
					o = this.map.unprojectFromContainer(i),
					s = this.correctHandler(o);
					this.setPosition(s),
					this.emit("editing", s)
				}
			}
		},
		{
			key: "_onMouseUp",
			value: function() {
				this._isDown && (this._isDown = !1, this._moveFrom = null, this.map._dragPan && (this.map.dragPan.enable(), this.map._dragPan = null), document.removeEventListener("mousemove", this._mousemoveHandler), this._isMoved && (this.emit("edit_end"), this._isMoved = !1))
			}
		}]),
		e
	} (w.
default);
	e.
default = C
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		var n = ["fill:" + e.color, "stroke:" + e.borderColor, "stroke-width:" + e.borderWidth],
		r = document.createElementNS(t, "path");
		return r.setAttribute("style", n.join(";")),
		r
	}
	function o(t) {
		if ((0, x.isCombinedPolygon)(t)) return t.map(function(t) {
			return o(t)
		}).join(" ");
		if ((0, x.isHoleyPolygon)(t)) {
			var e = !1;
			return t.map(function(t, n) {
				if (n) {
					return (0, x.isClockwise)(t) === e && t.reverse(),
					o(t)
				}
				return e = (0, x.isClockwise)(t),
				o(t)
			}).join(" ")
		}
		return t.map(function(t, e) {
			return (e ? "": "M") + t.x + "," + t.y
		}).join(" ") + " z"
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(16),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(35),
	v = r(y),
	m = n(4),
	_ = r(m),
	w = n(389),
	b = r(w),
	x = n(279),
	E = {
		color: "rgba(55,119,255,0.16)",
		borderWidth: 2,
		borderColor: "#3777FF"
	},
	M = function(t) {
		function e(t) {
			return (0, h.
		default)(this, e),
			(0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, _.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, v.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "onInit", this).call(this, t),
				this.closed = !0
			}
		},
		{
			key: "setStyle",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.style = (0, a.
			default)({},
				E, t)
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this.style)
			}
		},
		{
			key: "_updatePoints",
			value: function() {
				var t = this.path,
				e = this.map,
				n = (0, x.projectPath)(e, t),
				r = o(n);
				return this._shape.setAttribute("d", r),
				n.flat(1 / 0)
			}
		}]),
		e
	} (b.
default);
	e.
default = M
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return n.i(u.geomReduce)(t,
		function(t, e) {
			return t + i(e)
		},
		0)
	}
	function i(t) {
		var e, n = 0;
		switch (t.type) {
		case "Polygon":
			return o(t.coordinates);
		case "MultiPolygon":
			for (e = 0; e < t.coordinates.length; e++) n += o(t.coordinates[e]);
			return n;
		case "Point":
		case "MultiPoint":
		case "LineString":
		case "MultiLineString":
			return 0;
		case "GeometryCollection":
			for (e = 0; e < t.geometries.length; e++) n += i(t.geometries[e]);
			return n
		}
	}
	function o(t) {
		var e = 0;
		if (t && t.length > 0) {
			e += Math.abs(s(t[0]));
			for (var n = 1; n < t.length; n++) e -= Math.abs(s(t[n]))
		}
		return e
	}
	function s(t) {
		var e, n, r, i, o, s, u, l = 0,
		h = t.length;
		if (h > 2) {
			for (u = 0; u < h; u++) u === h - 2 ? (i = h - 2, o = h - 1, s = 0) : u === h - 1 ? (i = h - 1, o = 0, s = 1) : (i = u, o = u + 1, s = u + 2),
			e = t[i],
			n = t[o],
			r = t[s],
			l += (a(r[0]) - a(e[0])) * Math.sin(a(n[1]));
			l = l * c * c / 2
		}
		return l
	}
	function a(t) {
		return t * Math.PI / 180
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var u = n(121),
	c = 6378137;
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
		return n.i(i.coordEach)(t,
		function(t) {
			e[0] > t[0] && (e[0] = t[0]),
			e[1] > t[1] && (e[1] = t[1]),
			e[2] < t[0] && (e[2] = t[0]),
			e[3] < t[1] && (e[3] = t[1])
		}),
		e
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(121);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t, e, r) {
		if (r = r || {},
		!n.i(s.isObject)(r)) throw new Error("options is invalid");
		if (!0 === r.final) return i(t, e);
		var a = n.i(o.getCoord)(t),
		u = n.i(o.getCoord)(e),
		c = n.i(s.degreesToRadians)(a[0]),
		l = n.i(s.degreesToRadians)(u[0]),
		h = n.i(s.degreesToRadians)(a[1]),
		f = n.i(s.degreesToRadians)(u[1]),
		p = Math.sin(l - c) * Math.cos(f),
		d = Math.cos(h) * Math.sin(f) - Math.sin(h) * Math.cos(f) * Math.cos(l - c);
		return n.i(s.radiansToDegrees)(Math.atan2(p, d))
	}
	function i(t, e) {
		var n = r(e, t);
		return n = (n + 180) % 360
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(109),
	s = n(48);
	e.
default = r
},
function(t, e, n) {
	function r(t, e) {
		switch (t.geometry ? t.geometry.type: t.type) {
		case "Point":
			return i(u(t), e);
		case "Polygon":
			var n = [];
			c(t,
			function(t) {
				n.push(t)
			});
			var l, h, f, p, d, g, y, v, m = a(t, e),
			_ = m.geometry.coordinates,
			w = 0,
			b = 0,
			x = 0,
			E = n.map(function(t) {
				return [t[0] - _[0], t[1] - _[1]]
			});
			for (l = 0; l < n.length - 1; l++) h = E[l],
			p = h[0],
			g = h[1],
			f = E[l + 1],
			d = f[0],
			y = f[1],
			v = p * y - d * g,
			x += v,
			w += (p + d) * v,
			b += (g + y) * v;
			if (0 === x) return m;
			var M = .5 * x,
			I = 1 / (6 * M);
			return i([_[0] + I * w, _[1] + I * b], e);
		default:
			var S = o(s(t));
			return S ? r(S, e) : a(t, e)
		}
	}
	var i = n(235).point,
	o = n(369),
	s = n(370),
	a = n(368),
	u = n(371).getCoord,
	c = n(236).coordEach;
	t.exports = r
},
function(t, e, n) {
	var r = n(236).coordEach,
	i = n(235).point;
	t.exports = function(t, e) {
		var n = 0,
		o = 0,
		s = 0;
		return r(t,
		function(t) {
			n += t[0],
			o += t[1],
			s++
		},
		!0),
		i([n / s, o / s], e)
	}
},
function(t, e, n) {
	var r = n(236).coordEach,
	i = n(405),
	o = n(235).polygon;
	t.exports = function(t) {
		var e = [];
		r(t,
		function(t) {
			e.push([t[0], t[1]])
		});
		var n = i(e);
		if (n.length >= 3) {
			for (var s = [], a = 0; a < n.length; a++) s.push(e[n[a][0]]);
			return s.push(e[n[n.length - 1][1]]),
			o([s])
		}
	}
},
function(t, e, n) {
	var r = n(236),
	i = n(235),
	o = i.point,
	s = r.coordEach,
	a = r.featureEach,
	u = i.featureCollection;
	t.exports = function(t) {
		var e = [];
		return "FeatureCollection" === t.type ? a(t,
		function(t) {
			s(t,
			function(n) {
				e.push(o(n, t.properties))
			})
		}) : s(t,
		function(n) {
			e.push(o(n, t.properties))
		}),
		u(e)
	}
},
function(t, e) {
	function n(t) {
		if (!t) throw new Error("obj is required");
		var e = r(t);
		if (e.length > 1 && "number" == typeof e[0] && "number" == typeof e[1]) return e;
		throw new Error("Coordinate is not a valid Point")
	}
	function r(t) {
		if (!t) throw new Error("obj is required");
		var e;
		if (t.length ? e = t: t.coordinates ? e = t.coordinates: t.geometry && t.geometry.coordinates && (e = t.geometry.coordinates), e) return i(e),
		e;
		throw new Error("No valid coordinates")
	}
	function i(t) {
		if (t.length > 1 && "number" == typeof t[0] && "number" == typeof t[1]) return ! 0;
		if (Array.isArray(t[0]) && t[0].length) return i(t[0]);
		throw new Error("coordinates must only contain numbers")
	}
	function o(t, e, n) {
		if (!e || !n) throw new Error("type and name required");
		if (!t || t.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.type)
	}
	function s(t, e, n) {
		if (!t) throw new Error("No feature passed");
		if (!n) throw new Error(".featureOf() requires a name");
		if (!t || "Feature" !== t.type || !t.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
		if (!t.geometry || t.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.geometry.type)
	}
	function a(t, e, n) {
		if (!t) throw new Error("No featureCollection passed");
		if (!n) throw new Error(".collectionOf() requires a name");
		if (!t || "FeatureCollection" !== t.type) throw new Error("Invalid input to " + n + ", FeatureCollection required");
		for (var r = 0; r < t.features.length; r++) {
			var i = t.features[r];
			if (!i || "Feature" !== i.type || !i.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
			if (!i.geometry || i.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + i.geometry.type)
		}
	}
	function u(t) {
		if (!t) throw new Error("geojson is required");
		if (void 0 !== t.geometry) return t.geometry;
		if (t.coordinates || t.geometries) return t;
		throw new Error("geojson must be a valid Feature or Geometry Object")
	}
	function c(t) {
		if (!t) throw new Error("geojson is required");
		var e = u(t);
		if (e) return e.type
	}
	t.exports = {
		geojsonType: o,
		collectionOf: a,
		featureOf: s,
		getCoord: n,
		getCoords: r,
		containsNumber: i,
		getGeom: u,
		getGeomType: c
	}
},
,
function(t, e, n) {
	"use strict";
	function r(t, e) {
		if (e = e || {},
		!n.i(s.isObject)(e)) throw new Error("options is invalid");
		var r = e.precision,
		a = e.coordinates,
		u = e.mutate;
		if (r = void 0 === r || null === r || isNaN(r) ? 6 : r, a = void 0 === a || null === a || isNaN(a) ? 3 : a, !t) throw new Error("<geojson> is required");
		if ("number" != typeof r) throw new Error("<precision> must be a number");
		if ("number" != typeof a) throw new Error("<coordinates> must be a number"); ! 1 !== u && void 0 !== u || (t = JSON.parse(JSON.stringify(t)));
		var c = Math.pow(10, r);
		return n.i(o.coordEach)(t,
		function(t) {
			i(t, c, a)
		}),
		t
	}
	function i(t, e, n) {
		t.length > n && t.splice(n, t.length);
		for (var r = 0; r < t.length; r++) t[r] = Math.round(t[r] * e) / e;
		return t
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(121),
	s = n(48);
	e.
default = r
},
function(t, e, n) { !
	function(t, n) {
		n(e)
	} (0,
	function(t) {
		"use strict";
		function e(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.bbox,
			i = n.id;
			if (void 0 === t) throw new Error("geometry is required");
			if (e && e.constructor !== Object) throw new Error("properties must be an Object");
			r && I(r),
			i && S(i);
			var o = {
				type: "Feature"
			};
			return i && (o.id = i),
			r && (o.bbox = r),
			o.properties = e || {},
			o.geometry = t,
			o
		}
		function n(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var i = n.bbox;
			if (!t) throw new Error("type is required");
			if (!e) throw new Error("coordinates is required");
			if (!Array.isArray(e)) throw new Error("coordinates must be an Array");
			i && I(i);
			var s;
			switch (t) {
			case "Point":
				s = r(e).geometry;
				break;
			case "LineString":
				s = a(e).geometry;
				break;
			case "Polygon":
				s = o(e).geometry;
				break;
			case "MultiPoint":
				s = h(e).geometry;
				break;
			case "MultiLineString":
				s = l(e).geometry;
				break;
			case "MultiPolygon":
				s = f(e).geometry;
				break;
			default:
				throw new Error(t + " is invalid")
			}
			return i && (s.bbox = i),
			s
		}
		function r(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
			if (t.length < 2) throw new Error("coordinates must be at least 2 numbers long");
			if (!E(t[0]) || !E(t[1])) throw new Error("coordinates must contain numbers");
			return e({
				type: "Point",
				coordinates: t
			},
			n, r)
		}
		function i(t, e, n) {
			if (!t) throw new Error("coordinates is required");
			if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
			return c(t.map(function(t) {
				return r(t, e)
			}), n)
		}
		function o(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			for (var i = 0; i < t.length; i++) {
				var o = t[i];
				if (o.length < 4) throw new Error("Each LinearRing of a Polygon must have 4 or more Positions.");
				for (var s = 0; s < o[o.length - 1].length; s++) {
					if (0 === i && 0 === s && !E(o[0][0]) || !E(o[0][1])) throw new Error("coordinates must contain numbers");
					if (o[o.length - 1][s] !== o[0][s]) throw new Error("First and last Position are not equivalent.")
				}
			}
			return e({
				type: "Polygon",
				coordinates: t
			},
			n, r)
		}
		function s(t, e, n) {
			if (!t) throw new Error("coordinates is required");
			if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
			return c(t.map(function(t) {
				return o(t, e)
			}), n)
		}
		function a(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			if (t.length < 2) throw new Error("coordinates must be an array of two or more positions");
			if (!E(t[0][1]) || !E(t[0][1])) throw new Error("coordinates must contain numbers");
			return e({
				type: "LineString",
				coordinates: t
			},
			n, r)
		}
		function u(t, e, n) {
			if (!t) throw new Error("coordinates is required");
			if (!Array.isArray(t)) throw new Error("coordinates must be an Array");
			return c(t.map(function(t) {
				return a(t, e)
			}), n)
		}
		function c(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.bbox,
			r = e.id;
			if (!t) throw new Error("No features passed");
			if (!Array.isArray(t)) throw new Error("features must be an Array");
			n && I(n),
			r && S(r);
			var i = {
				type: "FeatureCollection"
			};
			return r && (i.id = r),
			n && (i.bbox = n),
			i.features = t,
			i
		}
		function l(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			return e({
				type: "MultiLineString",
				coordinates: t
			},
			n, r)
		}
		function h(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			return e({
				type: "MultiPoint",
				coordinates: t
			},
			n, r)
		}
		function f(t, n, r) {
			if (!t) throw new Error("coordinates is required");
			return e({
				type: "MultiPolygon",
				coordinates: t
			},
			n, r)
		}
		function p(t, n, r) {
			if (!t) throw new Error("geometries is required");
			if (!Array.isArray(t)) throw new Error("geometries must be an Array");
			return e({
				type: "GeometryCollection",
				geometries: t
			},
			n, r)
		}
		function d(t, e) {
			if (void 0 === t || null === t || isNaN(t)) throw new Error("num is required");
			if (e && !(e >= 0)) throw new Error("precision must be a positive number");
			var n = Math.pow(10, e || 0);
			return Math.round(t * n) / n
		}
		function g(t, e) {
			if (void 0 === t || null === t) throw new Error("radians is required");
			if (e && "string" != typeof e) throw new Error("units must be a string");
			var n = Fo[e || "kilometers"];
			if (!n) throw new Error(e + " units is invalid");
			return t * n
		}
		function y(t, e) {
			if (void 0 === t || null === t) throw new Error("distance is required");
			if (e && "string" != typeof e) throw new Error("units must be a string");
			var n = Fo[e || "kilometers"];
			if (!n) throw new Error(e + " units is invalid");
			return t / n
		}
		function v(t, e) {
			return _(y(t, e))
		}
		function m(t) {
			if (null === t || void 0 === t) throw new Error("bearing is required");
			var e = t % 360;
			return e < 0 && (e += 360),
			e
		}
		function _(t) {
			if (null === t || void 0 === t) throw new Error("radians is required");
			return t % (2 * Math.PI) * 180 / Math.PI
		}
		function w(t) {
			if (null === t || void 0 === t) throw new Error("degrees is required");
			return t % 360 * Math.PI / 180
		}
		function b(t, e, n) {
			if (null === t || void 0 === t) throw new Error("length is required");
			if (! (t >= 0)) throw new Error("length must be a positive number");
			return g(y(t, e), n || "kilometers")
		}
		function x(t, e, n) {
			if (null === t || void 0 === t) throw new Error("area is required");
			if (! (t >= 0)) throw new Error("area must be a positive number");
			var r = qo[e || "meters"];
			if (!r) throw new Error("invalid original units");
			var i = qo[n || "kilometers"];
			if (!i) throw new Error("invalid final units");
			return t / r * i
		}
		function E(t) {
			return ! isNaN(t) && null !== t && !Array.isArray(t)
		}
		function M(t) {
			return !! t && t.constructor === Object
		}
		function I(t) {
			if (!t) throw new Error("bbox is required");
			if (!Array.isArray(t)) throw new Error("bbox must be an Array");
			if (4 !== t.length && 6 !== t.length) throw new Error("bbox must be an Array of 4 or 6 numbers");
			t.forEach(function(t) {
				if (!E(t)) throw new Error("bbox must only contain numbers")
			})
		}
		function S(t) {
			if (!t) throw new Error("id is required");
			if ( - 1 === ["string", "number"].indexOf(typeof t)) throw new Error("id must be a number or a string")
		}
		function C(t, e, n) {
			if (null !== t) for (var r, i, o, s, a, u, c, l, h = 0,
			f = 0,
			p = t.type,
			d = "FeatureCollection" === p,
			g = "Feature" === p,
			y = d ? t.features.length: 1, v = 0; v < y; v++) {
				a = (l = !!(c = d ? t.features[v].geometry: g ? t.geometry: t) && "GeometryCollection" === c.type) ? c.geometries.length: 1;
				for (var m = 0; m < a; m++) {
					var _ = 0,
					w = 0;
					if (null !== (s = l ? c.geometries[m] : c)) {
						u = s.coordinates;
						var b = s.type;
						switch (h = !n || "Polygon" !== b && "MultiPolygon" !== b ? 0 : 1, b) {
						case null:
							break;
						case "Point":
							e(u, f, v, _, w),
							f++,
							_++;
							break;
						case "LineString":
						case "MultiPoint":
							for (r = 0; r < u.length; r++) e(u[r], f, v, _, w),
							f++,
							"MultiPoint" === b && _++;
							"LineString" === b && _++;
							break;
						case "Polygon":
						case "MultiLineString":
							for (r = 0; r < u.length; r++) {
								for (i = 0; i < u[r].length - h; i++) e(u[r][i], f, v, _, w),
								f++;
								"MultiLineString" === b && _++,
								"Polygon" === b && w++
							}
							"Polygon" === b && _++;
							break;
						case "MultiPolygon":
							for (r = 0; r < u.length; r++) {
								for ("MultiPolygon" === b && (w = 0), i = 0; i < u[r].length; i++) {
									for (o = 0; o < u[r][i].length - h; o++) e(u[r][i][o], f, v, _, w),
									f++;
									w++
								}
								_++
							}
							break;
						case "GeometryCollection":
							for (r = 0; r < s.geometries.length; r++) C(s.geometries[r], e, n);
							break;
						default:
							throw new Error("Unknown Geometry Type")
						}
					}
				}
			}
		}
		function N(t, e, n, r) {
			var i = n;
			return C(t,
			function(t, r, o, s, a) {
				i = 0 === r && void 0 === n ? t: e(i, t, r, o, s, a)
			},
			r),
			i
		}
		function P(t, e) {
			var n;
			switch (t.type) {
			case "FeatureCollection":
				for (n = 0; n < t.features.length; n++) e(t.features[n].properties, n);
				break;
			case "Feature":
				e(t.properties, 0)
			}
		}
		function L(t, e, n) {
			var r = n;
			return P(t,
			function(t, i) {
				r = 0 === i && void 0 === n ? t: e(r, t, i)
			}),
			r
		}
		function A(t, e) {
			if ("Feature" === t.type) e(t, 0);
			else if ("FeatureCollection" === t.type) for (var n = 0; n < t.features.length; n++) e(t.features[n], n)
		}
		function O(t, e, n) {
			var r = n;
			return A(t,
			function(t, i) {
				r = 0 === i && void 0 === n ? t: e(r, t, i)
			}),
			r
		}
		function T(t) {
			var e = [];
			return C(t,
			function(t) {
				e.push(t)
			}),
			e
		}
		function R(t, e) {
			var n, r, i, o, s, a, u, c, l, h, f = 0,
			p = "FeatureCollection" === t.type,
			d = "Feature" === t.type,
			g = p ? t.features.length: 1;
			for (n = 0; n < g; n++) {
				for (a = p ? t.features[n].geometry: d ? t.geometry: t, c = p ? t.features[n].properties: d ? t.properties: {},
				l = p ? t.features[n].bbox: d ? t.bbox: void 0, h = p ? t.features[n].id: d ? t.id: void 0, s = (u = !!a && "GeometryCollection" === a.type) ? a.geometries.length: 1, i = 0; i < s; i++) if (null !== (o = u ? a.geometries[i] : a)) switch (o.type) {
				case "Point":
				case "LineString":
				case "MultiPoint":
				case "Polygon":
				case "MultiLineString":
				case "MultiPolygon":
					e(o, f, c, l, h);
					break;
				case "GeometryCollection":
					for (r = 0; r < o.geometries.length; r++) e(o.geometries[r], f, c, l, h);
					break;
				default:
					throw new Error("Unknown Geometry Type")
				} else e(null, f, c, l, h);
				f++
			}
		}
		function D(t, e, n) {
			var r = n;
			return R(t,
			function(t, i, o, s, a) {
				r = 0 === i && void 0 === n ? t: e(r, t, i, o, s, a)
			}),
			r
		}
		function k(t, n) {
			R(t,
			function(t, r, i, o, s) {
				var a = null === t ? null: t.type;
				switch (a) {
				case null:
				case "Point":
				case "LineString":
				case "Polygon":
					return void n(e(t, i, {
						bbox: o,
						id: s
					}), r, 0)
				}
				var u;
				switch (a) {
				case "MultiPoint":
					u = "Point";
					break;
				case "MultiLineString":
					u = "LineString";
					break;
				case "MultiPolygon":
					u = "Polygon"
				}
				t.coordinates.forEach(function(t, o) {
					n(e({
						type: u,
						coordinates: t
					},
					i), r, o)
				})
			})
		}
		function F(t, e, n) {
			var r = n;
			return k(t,
			function(t, i, o) {
				r = 0 === i && 0 === o && void 0 === n ? t: e(r, t, i, o)
			}),
			r
		}
		function j(t, e) {
			k(t,
			function(t, n, r) {
				var i = 0;
				if (t.geometry) {
					var o = t.geometry.type;
					"Point" !== o && "MultiPoint" !== o && N(t,
					function(o, s, u, c, l, h) {
						var f = a([o, s], t.properties);
						return e(f, n, r, h, i),
						i++,
						s
					})
				}
			})
		}
		function q(t, e, n) {
			var r = n,
			i = !1;
			return j(t,
			function(t, o, s, a, u) {
				r = !1 === i && void 0 === n ? t: e(r, t, o, s, a, u),
				i = !0
			}),
			r
		}
		function B(t, e) {
			if (!t) throw new Error("geojson is required");
			k(t,
			function(t, n, r) {
				if (null !== t.geometry) {
					var i = t.geometry.type,
					o = t.geometry.coordinates;
					switch (i) {
					case "LineString":
						e(t, n, r, 0, 0);
						break;
					case "Polygon":
						for (var s = 0; s < o.length; s++) e(a(o[s], t.properties), n, r, s)
					}
				}
			})
		}
		function G(t, e, n) {
			var r = n;
			return B(t,
			function(t, i, o, s) {
				r = 0 === i && void 0 === n ? t: e(r, t, i, o, s)
			}),
			r
		}
		function U(t) {
			var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
			return C(t,
			function(t) {
				e[0] > t[0] && (e[0] = t[0]),
				e[1] > t[1] && (e[1] = t[1]),
				e[2] < t[0] && (e[2] = t[0]),
				e[3] < t[1] && (e[3] = t[1])
			}),
			e
		}
		function z(t) {
			if (!t) throw new Error("obj is required");
			var e = Y(t);
			if (e.length > 1 && E(e[0]) && E(e[1])) return e;
			throw new Error("Coordinate is not a valid Point")
		}
		function Y(t) {
			if (!t) throw new Error("obj is required");
			var e;
			if (t.length ? e = t: t.coordinates ? e = t.coordinates: t.geometry && t.geometry.coordinates && (e = t.geometry.coordinates), e) return X(e),
			e;
			throw new Error("No valid coordinates")
		}
		function X(t) {
			if (t.length > 1 && E(t[0]) && E(t[1])) return ! 0;
			if (Array.isArray(t[0]) && t[0].length) return X(t[0]);
			throw new Error("coordinates must only contain numbers")
		}
		function V(t, e, n) {
			if (!e || !n) throw new Error("type and name required");
			if (!t || t.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.type)
		}
		function W(t, e, n) {
			if (!t) throw new Error("No feature passed");
			if (!n) throw new Error(".featureOf() requires a name");
			if (!t || "Feature" !== t.type || !t.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
			if (!t.geometry || t.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + t.geometry.type)
		}
		function H(t, e, n) {
			if (!t) throw new Error("No featureCollection passed");
			if (!n) throw new Error(".collectionOf() requires a name");
			if (!t || "FeatureCollection" !== t.type) throw new Error("Invalid input to " + n + ", FeatureCollection required");
			for (var r = 0; r < t.features.length; r++) {
				var i = t.features[r];
				if (!i || "Feature" !== i.type || !i.geometry) throw new Error("Invalid input to " + n + ", Feature with geometry required");
				if (!i.geometry || i.geometry.type !== e) throw new Error("Invalid input to " + n + ": must be a " + e + ", given " + i.geometry.type)
			}
		}
		function J(t) {
			if (!t) throw new Error("geojson is required");
			if (void 0 !== t.geometry) return t.geometry;
			if (t.coordinates || t.geometries) return t;
			throw new Error("geojson must be a valid Feature or Geometry Object")
		}
		function Z() {
			throw new Error("invariant.getGeomType has been deprecated in v5.0 in favor of invariant.getType")
		}
		function Q(t, e) {
			if (!t) throw new Error((e || "geojson") + " is required");
			if (t.geometry && t.geometry.type) return t.geometry.type;
			if (t.type) return t.type;
			throw new Error((e || "geojson") + " is invalid")
		}
		function K(t, e, n) {
			n = n || {};
			for (var r = Object.keys(zo), i = 0; i < r.length; i++) {
				var o = r[i],
				s = n[o];
				s = void 0 !== s && null !== s ? s: zo[o],
				Yo[o] = s
			}
			Yo.verbose && console.log("MarchingSquaresJS-isoContours: computing isocontour for " + e);
			var a = function(t) {
				var e = [],
				n = 0;
				return t.rows,
				t.cols,
				t.cells.forEach(function(r, i) {
					r.forEach(function(r, o) {
						if (void 0 !== r && !
						function(t) {
							return 5 === t.cval || 10 === t.cval
						} (r) && !tt(r)) {
							var s = function(t, e, n) {
								var r, i, o, s = t.length,
								a = [],
								u = [0, 0, 1, 1, 0, 0, 0, 0, -1, 0, 1, 1, -1, 0, -1, 0],
								c = [0, -1, 0, 0, 1, 1, 1, 1, 0, -1, 0, 0, 0, -1, 0, 0],
								l = ["none", "bottom", "right", "right", "top", "top", "top", "top", "left", "bottom", "right", "right", "left", "bottom", "left", "none"],
								h = (t[e][n], t[e][n]),
								f = h.cval,
								p = nt(h, o = ["none", "left", "bottom", "left", "right", "none", "bottom", "left", "top", "top", "none", "top", "right", "right", "bottom", "none"][f]);
								a.push([n + p[0], e + p[1]]),
								p = nt(h, o = l[f]),
								a.push([n + p[0], e + p[1]]),
								et(h);
								for (var d = n + u[f], g = e + c[f], y = f; d >= 0 && g >= 0 && g < s && (d != n || g != e) && void 0 !== (h = t[g][d]);) {
									if (0 === (f = h.cval) || 15 === f) return {
										path: a,
										info: "mergeable"
									};
									o = l[f],
									r = u[f],
									i = c[f],
									5 !== f && 10 !== f || (5 === f ? h.flipped ? -1 === c[y] ? (o = "left", r = -1, i = 0) : (o = "right", r = 1, i = 0) : -1 === u[y] && (o = "bottom", r = 0, i = -1) : 10 === f && (h.flipped ? -1 === u[y] ? (o = "top", r = 0, i = 1) : (o = "bottom", r = 0, i = -1) : 1 === c[y] && (o = "left", r = -1, i = 0))),
									p = nt(h, o),
									a.push([d + p[0], g + p[1]]),
									et(h),
									d += r,
									g += i,
									y = f
								}
								return {
									path: a,
									info: "closed"
								}
							} (t.cells, i, o),
							a = !1;
							if ("mergeable" === s.info) for (var u = s.path[s.path.length - 1][0], c = s.path[s.path.length - 1][1], l = n - 1; l >= 0; l--) if (Math.abs(e[l][0][0] - u) <= 1e-7 && Math.abs(e[l][0][1] - c) <= 1e-7) {
								for (var h = s.path.length - 2; h >= 0; --h) e[l].unshift(s.path[h]);
								a = !0;
								break
							}
							a || (e[n++] = s.path)
						}
					})
				}),
				e
			} (function(t, e) {
				for (var n = t.length - 1,
				r = t[0].length - 1, i = {
					rows: n,
					cols: r,
					cells: []
				},
				o = 0; o < n; ++o) {
					i.cells[o] = [];
					for (var s = 0; s < r; ++s) {
						var a = 0,
						u = t[o + 1][s],
						c = t[o + 1][s + 1],
						l = t[o][s + 1],
						h = t[o][s];
						if (! (isNaN(u) || isNaN(c) || isNaN(l) || isNaN(h))) {
							a |= u >= e ? 8 : 0,
							a |= c >= e ? 4 : 0,
							a |= l >= e ? 2 : 0;
							var f = !1;
							if (5 == (a |= h >= e ? 1 : 0) || 10 === a) {
								var p = (u + c + l + h) / 4;
								5 === a && p < e ? (a = 10, f = !0) : 10 === a && p < e && (a = 5, f = !0)
							}
							if (0 !== a && 15 !== a) {
								var d, g, y, v;
								d = g = y = v = .5,
								1 === a ? (y = 1 - $(e, u, h), g = 1 - $(e, l, h)) : 2 === a ? (g = $(e, h, l), v = 1 - $(e, c, l)) : 3 === a ? (y = 1 - $(e, u, h), v = 1 - $(e, c, l)) : 4 === a ? (d = $(e, u, c), v = $(e, l, c)) : 5 === a ? (d = $(e, u, c), v = $(e, l, c), g = 1 - $(e, l, h), y = 1 - $(e, u, h)) : 6 === a ? (g = $(e, h, l), d = $(e, u, c)) : 7 === a ? (y = 1 - $(e, u, h), d = $(e, u, c)) : 8 === a ? (y = $(e, h, u), d = 1 - $(e, c, u)) : 9 === a ? (g = 1 - $(e, l, h), d = 1 - $(e, c, u)) : 10 === a ? (d = 1 - $(e, c, u), v = 1 - $(e, c, l), g = $(e, h, l), y = $(e, h, u)) : 11 === a ? (d = 1 - $(e, c, u), v = 1 - $(e, c, l)) : 12 === a ? (y = $(e, h, u), v = $(e, l, c)) : 13 === a ? (g = 1 - $(e, l, h), v = $(e, l, c)) : 14 === a ? (y = $(e, h, u), g = $(e, h, l)) : console.log("MarchingSquaresJS-isoContours: Illegal cval detected: " + a),
								i.cells[o][s] = {
									cval: a,
									flipped: f,
									top: d,
									right: v,
									bottom: g,
									left: y
								}
							}
						}
					}
				}
				return i
			} (t, e));
			return "function" == typeof Yo.successCallback && Yo.successCallback(a),
			a
		}
		function $(t, e, n) {
			return (t - e) / (n - e)
		}
		function tt(t) {
			return 0 === t.cval || 15 === t.cval
		}
		function et(t) {
			tt(t) || 5 === t.cval || 10 === t.cval || (t.cval = 15)
		}
		function nt(t, e) {
			return "top" === e ? [t.top, 1] : "bottom" === e ? [t.bottom, 0] : "right" === e ? [1, t.right] : "left" === e ? [0, t.left] : void 0
		}
		function rt(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.zProperty || "elevation",
			r = e.flip,
			i = e.flags;
			H(t, "Point", "input must contain Points");
			for (var o = function(t, e) {
				var n = {};
				return A(t,
				function(t) {
					var e = Y(t)[1];
					n[e] || (n[e] = []),
					n[e].push(t)
				}),
				Object.keys(n).map(function(t) {
					return n[t].sort(function(t, e) {
						return Y(t)[0] - Y(e)[0]
					})
				}).sort(function(t, n) {
					return e ? Y(t[0])[1] - Y(n[0])[1] : Y(n[0])[1] - Y(t[0])[1]
				})
			} (t, r), s = [], a = 0; a < o.length; a++) {
				for (var u = o[a], c = [], l = 0; l < u.length; l++) {
					var h = u[l];
					h.properties[n] ? c.push(h.properties[n]) : c.push(0),
					!0 === i && (h.properties.matrixPosition = [a, l])
				}
				s.push(c)
			}
			return s
		}
		function it(t, e, n, r, i) {
			for (n = n || 0, r = r || t.length - 1, i = i ||
			function(t, e) {
				return t < e ? -1 : t > e ? 1 : 0
			}; r > n;) {
				if (r - n > 600) {
					var o = r - n + 1,
					s = e - n + 1,
					a = Math.log(o),
					u = .5 * Math.exp(2 * a / 3),
					c = .5 * Math.sqrt(a * u * (o - u) / o) * (s - o / 2 < 0 ? -1 : 1);
					it(t, e, Math.max(n, Math.floor(e - s * u / o + c)), Math.min(r, Math.floor(e + (o - s) * u / o + c)), i)
				}
				var l = t[e],
				h = n,
				f = r;
				for (ot(t, n, e), i(t[r], l) > 0 && ot(t, n, r); h < f;) {
					for (ot(t, h, f), h++, f--; i(t[h], l) < 0;) h++;
					for (; i(t[f], l) > 0;) f--
				}
				0 === i(t[n], l) ? ot(t, n, f) : ot(t, ++f, r),
				f <= e && (n = f + 1),
				e <= f && (r = f - 1)
			}
		}
		function ot(t, e, n) {
			var r = t[e];
			t[e] = t[n],
			t[n] = r
		}
		function st(t, e) {
			if (! (this instanceof st)) return new st(t, e);
			this._maxEntries = Math.max(4, t || 9),
			this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)),
			e && this._initFormat(e),
			this.clear()
		}
		function at(t, e) {
			ut(t, 0, t.children.length, e, t)
		}
		function ut(t, e, n, r, i) {
			i || (i = yt(null)),
			i.minX = 1 / 0,
			i.minY = 1 / 0,
			i.maxX = -1 / 0,
			i.maxY = -1 / 0;
			for (var o, s = e; s < n; s++) o = t.children[s],
			ct(i, t.leaf ? r(o) : o);
			return i
		}
		function ct(t, e) {
			return t.minX = Math.min(t.minX, e.minX),
			t.minY = Math.min(t.minY, e.minY),
			t.maxX = Math.max(t.maxX, e.maxX),
			t.maxY = Math.max(t.maxY, e.maxY),
			t
		}
		function lt(t, e) {
			return t.minX - e.minX
		}
		function ht(t, e) {
			return t.minY - e.minY
		}
		function ft(t) {
			return (t.maxX - t.minX) * (t.maxY - t.minY)
		}
		function pt(t) {
			return t.maxX - t.minX + (t.maxY - t.minY)
		}
		function dt(t, e) {
			return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY
		}
		function gt(t, e) {
			return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY
		}
		function yt(t) {
			return {
				children: t,
				height: 1,
				leaf: !0,
				minX: 1 / 0,
				minY: 1 / 0,
				maxX: -1 / 0,
				maxY: -1 / 0
			}
		}
		function vt(t, e, n, r, i) {
			for (var o, s = [e, n]; s.length;)(n = s.pop()) - (e = s.pop()) <= r || (o = e + Math.ceil((n - e) / r / 2) * r, Xo(t, o, e, n, i), s.push(e, o, o, n))
		}
		function mt(t, e) {
			return e = {
				exports: {}
			},
			t(e, e.exports),
			e.exports
		}
		function _t(t, e) {
			if (! (this instanceof _t)) return new _t(t, e);
			if (this.data = t || [], this.length = this.data.length, this.compare = e ||
			function(t, e) {
				return t < e ? -1 : t > e ? 1 : 0
			},
			this.length > 0) for (var n = (this.length >> 1) - 1; n >= 0; n--) this._down(n)
		}
		function wt(t, e, n) {
			e = Math.max(0, void 0 === e ? 2 : e),
			n = n || 0;
			for (var r, i = function(t) {
				for (var e = t[0], n = t[0], r = t[0], i = t[0], o = 0; o < t.length; o++) {
					var s = t[o];
					s[0] < e[0] && (e = s),
					s[0] > r[0] && (r = s),
					s[1] < n[1] && (n = s),
					s[1] > i[1] && (i = s)
				}
				var a = [e, n, r, i],
				u = a.slice();
				for (o = 0; o < t.length; o++) is(t[o], a) || u.push(t[o]);
				var c = ts(u),
				l = [];
				for (o = 0; o < c.length; o++) l.push(u[c[o]]);
				return l
			} (t), o = Vo(16, ["[0]", "[1]", "[0]", "[1]"]).load(t), s = [], a = 0; a < i.length; a++) {
				var u = i[a];
				o.remove(u),
				r = It(u, r),
				s.push(r)
			}
			var c = Vo(16);
			for (a = 0; a < s.length; a++) c.insert(Mt(s[a]));
			for (var l = e * e,
			h = n * n; s.length;) {
				var f = s.shift(),
				p = f.p,
				d = f.next.p,
				g = St(p, d);
				if (! (g < h)) {
					var y = g / l; (u = function(t, e, n, r, i, o, s) {
						for (var a = new ns(null, bt), u = t.data; u;) {
							for (var c = 0; c < u.children.length; c++) {
								var l = u.children[c],
								h = u.leaf ? Ct(l, n, r) : function(t, e, n) {
									if (xt(t, n) || xt(e, n)) return 0;
									var r = Nt(t[0], t[1], e[0], e[1], n.minX, n.minY, n.maxX, n.minY);
									if (0 === r) return 0;
									var i = Nt(t[0], t[1], e[0], e[1], n.minX, n.minY, n.minX, n.maxY);
									if (0 === i) return 0;
									var o = Nt(t[0], t[1], e[0], e[1], n.maxX, n.minY, n.maxX, n.maxY);
									if (0 === o) return 0;
									var s = Nt(t[0], t[1], e[0], e[1], n.minX, n.maxY, n.maxX, n.maxY);
									return 0 === s ? 0 : Math.min(r, i, o, s)
								} (n, r, l);
								h > o || a.push({
									node: l,
									dist: h
								})
							}
							for (; a.length && !a.peek().node.children;) {
								var f = a.pop(),
								p = f.node,
								d = Ct(p, e, n),
								g = Ct(p, r, i);
								if (f.dist < d && f.dist < g && Et(n, p, s) && Et(r, p, s)) return p
							} (u = a.pop()) && (u = u.node)
						}
						return null
					} (o, f.prev.p, p, d, f.next.next.p, y, c)) && Math.min(St(u, p), St(u, d)) <= y && (s.push(f), s.push(It(u, f)), o.remove(u), c.remove(f), c.insert(Mt(f)), c.insert(Mt(f.next)))
				}
			}
			f = r;
			var v = [];
			do {
				v.push(f.p), f = f.next
			} while ( f !== r );
			return v.push(f.p),
			v
		}
		function bt(t, e) {
			return t.dist - e.dist
		}
		function xt(t, e) {
			return t[0] >= e.minX && t[0] <= e.maxX && t[1] >= e.minY && t[1] <= e.maxY
		}
		function Et(t, e, n) {
			for (var r = Math.min(t[0], e[0]), i = Math.min(t[1], e[1]), o = Math.max(t[0], e[0]), s = Math.max(t[1], e[1]), a = n.search({
				minX: r,
				minY: i,
				maxX: o,
				maxY: s
			}), u = 0; u < a.length; u++) if (function(t, e, n, r) {
				return t !== r && e !== n && os(t, e, n) > 0 != os(t, e, r) > 0 && os(n, r, t) > 0 != os(n, r, e) > 0
			} (a[u].p, a[u].next.p, t, e)) return ! 1;
			return ! 0
		}
		function Mt(t) {
			var e = t.p,
			n = t.next.p;
			return t.minX = Math.min(e[0], n[0]),
			t.minY = Math.min(e[1], n[1]),
			t.maxX = Math.max(e[0], n[0]),
			t.maxY = Math.max(e[1], n[1]),
			t
		}
		function It(t, e) {
			var n = {
				p: t,
				prev: null,
				next: null,
				minX: 0,
				minY: 0,
				maxX: 0,
				maxY: 0
			};
			return e ? (n.next = e.next, n.prev = e, e.next.prev = n, e.next = n) : (n.prev = n, n.next = n),
			n
		}
		function St(t, e) {
			var n = t[0] - e[0],
			r = t[1] - e[1];
			return n * n + r * r
		}
		function Ct(t, e, n) {
			var r = e[0],
			i = e[1],
			o = n[0] - r,
			s = n[1] - i;
			if (0 !== o || 0 !== s) {
				var a = ((t[0] - r) * o + (t[1] - i) * s) / (o * o + s * s);
				a > 1 ? (r = n[0], i = n[1]) : a > 0 && (r += o * a, i += s * a)
			}
			return o = t[0] - r,
			s = t[1] - i,
			o * o + s * s
		}
		function Nt(t, e, n, r, i, o, s, a) {
			var u, c, l, h, f = n - t,
			p = r - e,
			d = s - i,
			g = a - o,
			y = t - i,
			v = e - o,
			m = f * f + p * p,
			_ = f * d + p * g,
			w = d * d + g * g,
			b = f * y + p * v,
			x = d * y + g * v,
			E = m * w - _ * _,
			M = E,
			I = E;
			0 === E ? (c = 0, M = 1, h = x, I = w) : (h = m * x - _ * b, (c = _ * x - w * b) < 0 ? (c = 0, h = x, I = w) : c > M && (c = M, h = x + _, I = w)),
			h < 0 ? (h = 0, -b < 0 ? c = 0 : -b > m ? c = M: (c = -b, M = m)) : h > I && (h = I, -b + _ < 0 ? c = 0 : -b + _ > m ? c = M: (c = -b + _, M = m)),
			u = 0 === c ? 0 : c / M;
			var S = (1 - (l = 0 === h ? 0 : h / I)) * i + l * s - ((1 - u) * t + u * n),
			C = (1 - l) * o + l * a - ((1 - u) * e + u * r);
			return S * S + C * C
		}
		function Pt(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.concavity || 1 / 0,
			r = [];
			if (C(t,
			function(t) {
				r.push([t[0], t[1]])
			}), !r.length) return null;
			var i = ss(r, n);
			return i.length > 3 ? o([i]) : null
		}
		function Lt(t, e, n) {
			if ("object" != typeof(n = n || {})) throw new Error("options is invalid");
			var r = n.ignoreBoundary;
			if (!t) throw new Error("point is required");
			if (!e) throw new Error("polygon is required");
			var i = z(t),
			o = Y(e),
			s = e.geometry ? e.geometry.type: e.type,
			a = e.bbox;
			if (a && !1 ===
			function(t, e) {
				return e[0] <= t[0] && e[1] <= t[1] && e[2] >= t[0] && e[3] >= t[1]
			} (i, a)) return ! 1;
			"Polygon" === s && (o = [o]);
			for (var u = 0,
			c = !1; u < o.length && !c; u++) if (At(i, o[u][0], r)) {
				for (var l = !1,
				h = 1; h < o[u].length && !l;) At(i, o[u][h], !r) && (l = !0),
				h++;
				l || (c = !0)
			}
			return c
		}
		function At(t, e, n) {
			var r = !1;
			e[0][0] === e[e.length - 1][0] && e[0][1] === e[e.length - 1][1] && (e = e.slice(0, e.length - 1));
			for (var i = 0,
			o = e.length - 1; i < e.length; o = i++) {
				var s = e[i][0],
				a = e[i][1],
				u = e[o][0],
				c = e[o][1];
				if (t[1] * (s - u) + a * (u - t[0]) + c * (t[0] - s) == 0 && (s - t[0]) * (u - t[0]) <= 0 && (a - t[1]) * (c - t[1]) <= 0) return ! n;
				a > t[1] != c > t[1] && t[0] < (u - s) * (t[1] - a) / (c - a) + s && (r = !r)
			}
			return r
		}
		function Ot(t, e) {
			var n = [];
			return R(e,
			function(e) {
				A(t,
				function(t) {
					Lt(t, e) && n.push(t)
				})
			}),
			c(n)
		}
		function Tt(t, e) {
			if ("FeatureCollection" !== t.type) throw new Error("points must be a FeatureCollection");
			var n = !1;
			return c(function(t) {
				if (t.length < 3) return [];
				t.sort(Dt);
				for (var e, n, r, i, o, s, a = t.length - 1,
				u = t[a].x, c = t[0].x, l = t[a].y, h = l; a--;) t[a].y < l && (l = t[a].y),
				t[a].y > h && (h = t[a].y);
				var f, p = c - u,
				d = h - l,
				g = p > d ? p: d,
				y = .5 * (c + u),
				v = .5 * (h + l),
				m = [new Rt({
					x: y - 20 * g,
					y: v - g,
					__sentinel: !0
				},
				{
					x: y,
					y: v + 20 * g,
					__sentinel: !0
				},
				{
					x: y + 20 * g,
					y: v - g,
					__sentinel: !0
				})],
				_ = [],
				w = [];
				for (a = t.length; a--;) {
					for (w.length = 0, f = m.length; f--;)(p = t[a].x - m[f].x) > 0 && p * p > m[f].r ? (_.push(m[f]), m.splice(f, 1)) : (d = t[a].y - m[f].y, p * p + d * d > m[f].r || (w.push(m[f].a, m[f].b, m[f].b, m[f].c, m[f].c, m[f].a), m.splice(f, 1)));
					for (kt(w), f = w.length; f;) n = w[--f],
					e = w[--f],
					r = t[a],
					i = n.x - e.x,
					o = n.y - e.y,
					s = 2 * (i * (r.y - n.y) - o * (r.x - n.x)),
					Math.abs(s) > 1e-12 && m.push(new Rt(e, n, r))
				}
				for (Array.prototype.push.apply(_, m), a = _.length; a--;)(_[a].a.__sentinel || _[a].b.__sentinel || _[a].c.__sentinel) && _.splice(a, 1);
				return _
			} (t.features.map(function(t) {
				var r = {
					x: t.geometry.coordinates[0],
					y: t.geometry.coordinates[1]
				};
				return e ? r.z = t.properties[e] : 3 === t.geometry.coordinates.length && (n = !0, r.z = t.geometry.coordinates[2]),
				r
			})).map(function(t) {
				var e = [t.a.x, t.a.y],
				r = [t.b.x, t.b.y],
				i = [t.c.x, t.c.y],
				s = {};
				return n ? (e.push(t.a.z), r.push(t.b.z), i.push(t.c.z)) : s = {
					a: t.a.z,
					b: t.b.z,
					c: t.c.z
				},
				o([[e, r, i, e]], s)
			}))
		}
		function Rt(t, e, n) {
			this.a = t,
			this.b = e,
			this.c = n;
			var r, i, o = e.x - t.x,
			s = e.y - t.y,
			a = n.x - t.x,
			u = n.y - t.y,
			c = o * (t.x + e.x) + s * (t.y + e.y),
			l = a * (t.x + n.x) + u * (t.y + n.y),
			h = 2 * (o * (n.y - e.y) - s * (n.x - e.x));
			this.x = (u * c - s * l) / h,
			this.y = (o * l - a * c) / h,
			r = this.x - t.x,
			i = this.y - t.y,
			this.r = r * r + i * i
		}
		function Dt(t, e) {
			return e.x - t.x
		}
		function kt(t) {
			var e, n, r, i, o, s = t.length;
			t: for (; s;) for (n = t[--s], e = t[--s], r = s; r;) if (o = t[--r], i = t[--r], e === i && n === o || e === o && n === i) {
				t.splice(s, 2),
				t.splice(r, 2),
				s -= 2;
				continue t
			}
		}
		function Ft(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.units,
			i = z(t),
			o = z(e),
			s = w(o[1] - i[1]),
			a = w(o[0] - i[0]),
			u = w(i[1]),
			c = w(o[1]),
			l = Math.pow(Math.sin(s / 2), 2) + Math.pow(Math.sin(a / 2), 2) * Math.cos(u) * Math.cos(c);
			return g(2 * Math.atan2(Math.sqrt(l), Math.sqrt(1 - l)), r)
		}
		function jt(t) {
			if (!t) throw new Error("geojson is required");
			switch (t.type) {
			case "Feature":
				return qt(t);
			case "FeatureCollection":
				return function(t) {
					var e = {
						type: "FeatureCollection"
					};
					return Object.keys(t).forEach(function(n) {
						switch (n) {
						case "type":
						case "features":
							return;
						default:
							e[n] = t[n]
						}
					}),
					e.features = t.features.map(function(t) {
						return qt(t)
					}),
					e
				} (t);
			case "Point":
			case "LineString":
			case "Polygon":
			case "MultiPoint":
			case "MultiLineString":
			case "MultiPolygon":
			case "GeometryCollection":
				return Gt(t);
			default:
				throw new Error("unknown GeoJSON type")
			}
		}
		function qt(t) {
			var e = {
				type: "Feature"
			};
			return Object.keys(t).forEach(function(n) {
				switch (n) {
				case "type":
				case "properties":
				case "geometry":
					return;
				default:
					e[n] = t[n]
				}
			}),
			e.properties = Bt(t.properties),
			e.geometry = Gt(t.geometry),
			e
		}
		function Bt(t) {
			var e = {};
			return t ? (Object.keys(t).forEach(function(n) {
				var r = t[n];
				"object" == typeof r ? null === r ? e[n] = null: r.length ? e[n] = r.map(function(t) {
					return t
				}) : e[n] = Bt(r) : e[n] = r
			}), e) : e
		}
		function Gt(t) {
			var e = {
				type: t.type
			};
			return t.bbox && (e.bbox = t.bbox),
			"GeometryCollection" === t.type ? (e.geometries = t.geometries.map(function(t) {
				return Gt(t)
			}), e) : (e.coordinates = Ut(t.coordinates), e)
		}
		function Ut(t) {
			return "object" != typeof t[0] ? t.slice() : t.map(function(t) {
				return Ut(t)
			})
		}
		function zt(t, e) {
			function n(t, e) {
				e.length && e.pop();
				for (var n = c[t < 0 ? ~t: t], r = 0, i = n.length; r < i; ++r) e.push(u(n[r], r));
				t < 0 && ls(e, i)
			}
			function r(t) {
				return u(t)
			}
			function i(t) {
				for (var e = [], r = 0, i = t.length; r < i; ++r) n(t[r], e);
				return e.length < 2 && e.push(e[0]),
				e
			}
			function o(t) {
				for (var e = i(t); e.length < 4;) e.push(e[0]);
				return e
			}
			function s(t) {
				return t.map(o)
			}
			function a(t) {
				var e, n = t.type;
				switch (n) {
				case "GeometryCollection":
					return {
						type:
						n,
						geometries: t.geometries.map(a)
					};
				case "Point":
					e = r(t.coordinates);
					break;
				case "MultiPoint":
					e = t.coordinates.map(r);
					break;
				case "LineString":
					e = i(t.arcs);
					break;
				case "MultiLineString":
					e = t.arcs.map(i);
					break;
				case "Polygon":
					e = s(t.arcs);
					break;
				case "MultiPolygon":
					e = t.arcs.map(s);
					break;
				default:
					return null
				}
				return {
					type:
					n,
					coordinates: e
				}
			}
			var u = cs(t.transform),
			c = t.arcs;
			return a(e)
		}
		function Yt(t, e) {
			function n(t) {
				switch (t.type) {
				case "GeometryCollection":
					t.geometries.forEach(n);
					break;
				case "Polygon":
					r(t.arcs);
					break;
				case "MultiPolygon":
					t.arcs.forEach(r)
				}
			}
			function r(t) {
				t.forEach(function(e) {
					e.forEach(function(e) { (o[e = e < 0 ? ~e: e] || (o[e] = [])).push(t)
					})
				}),
				s.push(t)
			}
			function i(e) {
				return function(t) {
					for (var e, n = -1,
					r = t.length,
					i = t[r - 1], o = 0; ++n < r;) e = i,
					i = t[n],
					o += e[0] * i[1] - e[1] * i[0];
					return Math.abs(o)
				} (zt(t, {
					type: "Polygon",
					arcs: [e]
				}).coordinates[0])
			}
			var o = {},
			s = [],
			a = [];
			return e.forEach(n),
			s.forEach(function(t) {
				if (!t._) {
					var e = [],
					n = [t];
					for (t._ = 1, a.push(e); t = n.pop();) e.push(t),
					t.forEach(function(t) {
						t.forEach(function(t) {
							o[t < 0 ? ~t: t].forEach(function(t) {
								t._ || (t._ = 1, n.push(t))
							})
						})
					})
				}
			}),
			s.forEach(function(t) {
				delete t._
			}),
			{
				type: "MultiPolygon",
				arcs: a.map(function(e) {
					var n, r = [];
					if (e.forEach(function(t) {
						t.forEach(function(t) {
							t.forEach(function(t) {
								o[t < 0 ? ~t: t].length < 2 && r.push(t)
							})
						})
					}), r = hs(t, r), (n = r.length) > 1) for (var s, a, u = 1,
					c = i(r[0]); u < n; ++u)(s = i(r[u])) > c && (a = r[0], r[0] = r[u], r[u] = a, c = s);
					return r
				})
			}
		}
		function Xt(t, e, n) {
			for (var r, i = e + (n---e >> 1); e < i; ++e, --n) r = t[e],
			t[e] = t[n],
			t[n] = r
		}
		function Vt(t) {
			return null == t ? {
				type: null
			}: ("FeatureCollection" === t.type ?
			function(t) {
				var e = {
					type: "GeometryCollection",
					geometries: t.features.map(Wt)
				};
				return null != t.bbox && (e.bbox = t.bbox),
				e
			}: "Feature" === t.type ? Wt: Ht)(t)
		}
		function Wt(t) {
			var e, n = Ht(t.geometry);
			null != t.id && (n.id = t.id),
			null != t.bbox && (n.bbox = t.bbox);
			for (e in t.properties) {
				n.properties = t.properties;
				break
			}
			return n
		}
		function Ht(t) {
			if (null == t) return {
				type: null
			};
			var e = "GeometryCollection" === t.type ? {
				type: "GeometryCollection",
				geometries: t.geometries.map(Ht)
			}: "Point" === t.type || "MultiPoint" === t.type ? {
				type: t.type,
				coordinates: t.coordinates
			}: {
				type: t.type,
				arcs: t.coordinates
			};
			return null != t.bbox && (e.bbox = t.bbox),
			e
		}
		function Jt(t) {
			var e, n = t[0],
			r = t[1];
			return r < n && (e = n, n = r, r = e),
			n + 31 * r
		}
		function Zt(t, e) {
			var n, r = t[0],
			i = t[1],
			o = e[0],
			s = e[1];
			return i < r && (n = r, r = i, i = n),
			s < o && (n = o, o = s, s = n),
			r === o && i === s
		}
		function Qt(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.mutate;
			if ("FeatureCollection" !== Q(t)) throw new Error("geojson must be a FeatureCollection");
			if (!t.features.length) throw new Error("geojson is empty"); ! 1 !== n && void 0 !== n || (t = jt(t));
			var r = [],
			i = G(t,
			function(t, e) {
				return function(t, e) {
					var n, r = t.geometry.coordinates,
					i = e.geometry.coordinates,
					o = Kt(r[0]),
					s = Kt(r[r.length - 1]),
					u = Kt(i[0]),
					c = Kt(i[i.length - 1]);
					if (o === c) n = i.concat(r.slice(1));
					else if (u === s) n = r.concat(i.slice(1));
					else if (o === u) n = r.slice(1).reverse().concat(i);
					else {
						if (s !== c) return null;
						n = r.concat(i.reverse().slice(1))
					}
					return a(n)
				} (t, e) || (r.push(t), e)
			});
			return i && r.push(i),
			r.length ? 1 === r.length ? r[0] : l(r.map(function(t) {
				return t.coordinates
			})) : null
		}
		function Kt(t) {
			return t[0].toString() + "," + t[1].toString()
		}
		function $t(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.mutate;
			if ("FeatureCollection" !== Q(t)) throw new Error("geojson must be a FeatureCollection");
			if (!t.features.length) throw new Error("geojson is empty"); ! 1 !== n && void 0 !== n || (t = jt(t));
			var r = function(t) {
				var e = {};
				k(t,
				function(t) {
					e[t.geometry.type] = !0
				});
				var n = Object.keys(e);
				return 1 === n.length ? n[0] : null
			} (t);
			if (!r) throw new Error("geojson must be homogenous");
			switch (r) {
			case "LineString":
				return Qt(t, e);
			case "Polygon":
				return function(t, e) {
					if (e = e || {},
					!M(e)) throw new Error("options is invalid");
					var n = e.mutate;
					if ("FeatureCollection" !== Q(t)) throw new Error("geojson must be a FeatureCollection");
					if (!t.features.length) throw new Error("geojson is empty"); ! 1 !== n && void 0 !== n || (t = jt(t));
					var r = [];
					k(t,
					function(t) {
						r.push(t.geometry)
					});
					var i = xs({
						geoms: p(r).geometry
					});
					return fs(i, i.objects.geoms.geometries)
				} (t, e);
			default:
				throw new Error(r + " is not supported")
			}
		}
		function te(t, n) {
			var r = "object" == typeof n ? n.mutate: n;
			if (!t) throw new Error("geojson is required");
			var i = Q(t),
			o = [];
			switch (i) {
			case "LineString":
				o = ee(t);
				break;
			case "MultiLineString":
			case "Polygon":
				Y(t).forEach(function(t) {
					o.push(ee(t))
				});
				break;
			case "MultiPolygon":
				Y(t).forEach(function(t) {
					var e = [];
					t.forEach(function(t) {
						e.push(ee(t))
					}),
					o.push(e)
				});
				break;
			case "Point":
				return t;
			case "MultiPoint":
				var s = {};
				Y(t).forEach(function(t) {
					var e = t.join("-");
					s.hasOwnProperty(e) || (o.push(t), s[e] = !0)
				});
				break;
			default:
				throw new Error(i + " geometry not supported")
			}
			return t.coordinates ? !0 === r ? (t.coordinates = o, t) : {
				type: i,
				coordinates: o
			}: !0 === r ? (t.geometry.coordinates = o, t) : e({
				type: i,
				coordinates: o
			},
			t.properties, t.bbox, t.id)
		}
		function ee(t) {
			var e = Y(t);
			if (2 === e.length && !
			function(t, e) {
				return t[0] === e[0] && t[1] === e[1]
			} (e[0], e[1])) return e;
			var n, r, i, o = [],
			s = e.length - 1;
			o.push(e[0]);
			for (var a = 1; a < s; a++) n = e[a - 1],
			r = e[a],
			function(t, e, n) {
				var r = n[0],
				i = n[1],
				o = t[0],
				s = t[1],
				a = e[0],
				u = e[1],
				c = a - o,
				l = u - s;
				return (r - o) * l - (i - s) * c == 0 && (Math.abs(c) >= Math.abs(l) ? c > 0 ? o <= r && r <= a: a <= r && r <= o: l > 0 ? s <= i && i <= u: u <= i && i <= s)
			} (n, i = e[a + 1], r) || o.push(r);
			return o.push(i),
			o
		}
		function ne(t, e) {
			var n = t.x - e.x,
			r = t.y - e.y;
			return n * n + r * r
		}
		function re(t, e, n) {
			var r = e.x,
			i = e.y,
			o = n.x - r,
			s = n.y - i;
			if (0 !== o || 0 !== s) {
				var a = ((t.x - r) * o + (t.y - i) * s) / (o * o + s * s);
				a > 1 ? (r = n.x, i = n.y) : a > 0 && (r += o * a, i += s * a)
			}
			return o = t.x - r,
			s = t.y - i,
			o * o + s * s
		}
		function ie(t, e, n, r, i) {
			for (var o, s = r,
			a = e + 1; a < n; a++) {
				var u = re(t[a], t[e], t[n]);
				u > s && (o = a, s = u)
			}
			s > r && (o - e > 1 && ie(t, e, o, r, i), i.push(t[o]), n - o > 1 && ie(t, o, n, r, i))
		}
		function oe(t, e, n) {
			if (t.length <= 2) return t;
			var r = void 0 !== e ? e * e: 1;
			return t = n ? t: function(t, e) {
				for (var n, r = t[0], i = [r], o = 1, s = t.length; o < s; o++) ne(n = t[o], r) > e && (i.push(n), r = n);
				return r !== n && i.push(n),
				i
			} (t, r),
			t = function(t, e) {
				var n = t.length - 1,
				r = [t[0]];
				return ie(t, 0, n, e, r),
				r.push(t[n]),
				r
			} (t, r)
		}
		function se(t, e, n) {
			return oe(t.map(function(t) {
				return {
					x: t[0],
					y: t[1],
					z: t[2]
				}
			}), e, n).map(function(t) {
				return t.z ? [t.x, t.y, t.z] : [t.x, t.y]
			})
		}
		function ae(t, e, n) {
			return t.map(function(t) {
				var r = t.map(function(t) {
					return {
						x: t[0],
						y: t[1]
					}
				});
				if (r.length < 4) throw new Error("invalid polygon");
				for (var i = oe(r, e, n).map(function(t) {
					return [t.x, t.y]
				}); !
				function(t) {
					return ! (t.length < 3 || 3 === t.length && t[2][0] === t[0][0] && t[2][1] === t[0][1])
				} (i);) i = oe(r, e -= .01 * e, n).map(function(t) {
					return [t.x, t.y]
				});
				return i[i.length - 1][0] === i[0][0] && i[i.length - 1][1] === i[0][1] || i.push(i[0]),
				i
			})
		}
		function ue(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.resolution || 1e4,
			r = e.sharpness || .85;
			if (!t) throw new Error("line is required");
			if (!E(n)) throw new Error("resolution must be an number");
			if (!E(r)) throw new Error("sharpness must be an number");
			for (var i = [], o = new Es({
				points: J(t).coordinates.map(function(t) {
					return {
						x: t[0],
						y: t[1]
					}
				}),
				duration: n,
				sharpness: r
			}), s = 0; s < o.duration; s += 10) {
				var u = o.pos(s);
				Math.floor(s / 100) % 2 == 0 && i.push([u.x, u.y])
			}
			return a(i, t.properties)
		}
		function ce(t) {
			I(t);
			var e = Number(t[0]),
			n = Number(t[1]),
			r = Number(t[2]),
			i = Number(t[3]);
			if (6 === t.length) throw new Error("@turf/bbox-polygon does not support BBox with 6 positions");
			var s = [e, n];
			return o([[s, [r, n], [r, i], [e, i], s]])
		}
		function le(t) {
			return ce(U(t))
		}
		function he(t) {
			var e = t[0],
			n = t[1],
			r = t[2],
			i = t[3];
			if (Ft(t.slice(0, 2), [r, n]) >= Ft(t.slice(0, 2), [e, i])) {
				var o = (n + i) / 2;
				return [e, o - (r - e) / 2, r, o + (r - e) / 2]
			}
			var s = (e + r) / 2;
			return [s - (i - n) / 2, n, s + (i - n) / 2, i]
		}
		function fe(t, e, n, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			var o = i.units,
			s = i.properties,
			a = z(t),
			u = w(a[0]),
			c = w(a[1]),
			l = w(n),
			h = y(e, o),
			f = Math.asin(Math.sin(c) * Math.cos(h) + Math.cos(c) * Math.sin(h) * Math.cos(l));
			return r([_(u + Math.atan2(Math.sin(l) * Math.sin(h) * Math.cos(c), Math.cos(h) - Math.sin(c) * Math.sin(f))), _(f)], s)
		}
		function pe(t, e, n) {
			var r = (n = n || {}).steps || 64,
			i = n.properties;
			if (!t) throw new Error("center is required");
			if (!e) throw new Error("radius is required");
			if ("object" != typeof n) throw new Error("options must be an object");
			if ("number" != typeof r) throw new Error("steps must be a number");
			r = r || 64,
			i = i || t.properties || {};
			for (var s = [], a = 0; a < r; a++) s.push(fe(t, e, -360 * a / r, n).geometry.coordinates);
			return s.push(s[0]),
			o([s], i)
		}
		function de(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			if (!0 === n.final) return function(t, e) {
				var n = de(e, t);
				return n = (n + 180) % 360
			} (t, e);
			var r = z(t),
			i = z(e),
			o = w(r[0]),
			s = w(i[0]),
			a = w(r[1]),
			u = w(i[1]),
			c = Math.sin(s - o) * Math.cos(u),
			l = Math.cos(a) * Math.sin(u) - Math.sin(a) * Math.cos(u) * Math.cos(s - o);
			return _(Math.atan2(c, l))
		}
		function ge(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.properties;
			if (!t) throw new Error("geojson is required");
			var i = U(t);
			return r([(i[0] + i[2]) / 2, (i[1] + i[3]) / 2], n)
		}
		function ye(t, e) {
			var n = 0,
			i = 0,
			o = 0;
			return C(t,
			function(t) {
				n += t[0],
				i += t[1],
				o++
			},
			!0),
			r([n / o, i / o], e)
		}
		function ve(t, e) {
			switch (Q(t)) {
			case "Point":
				return t;
			case "Polygon":
				var n = [];
				C(t,
				function(t) {
					n.push(t)
				});
				var i, o, s, a, u, c, l, h, f = ye(t, e),
				p = f.geometry.coordinates,
				d = 0,
				g = 0,
				y = 0,
				v = n.map(function(t) {
					return [t[0] - p[0], t[1] - p[1]]
				});
				for (i = 0; i < n.length - 1; i++) a = (o = v[i])[0],
				c = o[1],
				u = (s = v[i + 1])[0],
				y += h = a * (l = s[1]) - u * c,
				d += (a + u) * h,
				g += (c + l) * h;
				if (0 === y) return f;
				var m = 1 / (.5 * y * 6);
				return r([p[0] + m * d, p[1] + m * g], e);
			default:
				var _ = Pt(t);
				return _ ? ve(_, e) : ye(t, e)
			}
		}
		function me(t) {
			var e = [];
			return "FeatureCollection" === t.type ? A(t,
			function(t) {
				C(t,
				function(n) {
					e.push(r(n, t.properties))
				})
			}) : C(t,
			function(n) {
				e.push(r(n, t.properties))
			}),
			c(e)
		}
		function _e(t, e, n) {
			n = n || 2;
			var r = e && e.length,
			i = r ? e[0] * n: t.length,
			o = we(t, 0, i, n, !0),
			s = [];
			if (!o) return s;
			var a, u, c, l, h, f, p;
			if (r && (o = function(t, e, n, r) {
				var i, o, s, a, u, c = [];
				for (i = 0, o = e.length; i < o; i++) s = e[i] * r,
				a = i < o - 1 ? e[i + 1] * r: t.length,
				(u = we(t, s, a, r, !1)) === u.next && (u.steiner = !0),
				c.push(function(t) {
					var e = t,
					n = t;
					do {
						e.x < n.x && (n = e), e = e.next
					} while ( e !== t );
					return n
				} (u));
				for (c.sort(Ee), i = 0; i < c.length; i++) !
				function(t, e) {
					if (e = function(t, e) {
						var n, r = e,
						i = t.x,
						o = t.y,
						s = -1 / 0;
						do {
							if (o <= r.y && o >= r.next.y && r.next.y !== r.y) {
								var a = r.x + (o - r.y) * (r.next.x - r.x) / (r.next.y - r.y);
								if (a <= i && a > s) {
									if (s = a, a === i) {
										if (o === r.y) return r;
										if (o === r.next.y) return r.next
									}
									n = r.x < r.next.x ? r: r.next
								}
							}
							r = r.next
						} while ( r !== e );
						if (!n) return null;
						if (i === s) return n.prev;
						var u, c = n,
						l = n.x,
						h = n.y,
						f = 1 / 0;
						for (r = n.next; r !== c;) i >= r.x && r.x >= l && i !== r.x && Ie(o < h ? i: s, o, l, h, o < h ? s: i, o, r.x, r.y) && ((u = Math.abs(o - r.y) / (i - r.x)) < f || u === f && r.x > n.x) && Pe(r, t) && (n = r, f = u),
						r = r.next;
						return n
					} (t, e)) {
						var n = Le(e, t);
						be(n, n.next)
					}
				} (c[i], n),
				n = be(n, n.next);
				return n
			} (t, e, o, n)), t.length > 80 * n) {
				a = c = t[0],
				u = l = t[1];
				for (var d = n; d < i; d += n) h = t[d],
				f = t[d + 1],
				h < a && (a = h),
				f < u && (u = f),
				h > c && (c = h),
				f > l && (l = f);
				p = 0 !== (p = Math.max(c - a, l - u)) ? 1 / p: 0
			}
			return xe(o, s, n, a, u, p),
			s
		}
		function we(t, e, n, r, i) {
			var o, s;
			if (i === Re(t, e, n, r) > 0) for (o = e; o < n; o += r) s = Ae(o, t[o], t[o + 1], s);
			else for (o = n - r; o >= e; o -= r) s = Ae(o, t[o], t[o + 1], s);
			return s && Ce(s, s.next) && (Oe(s), s = s.next),
			s
		}
		function be(t, e) {
			if (!t) return t;
			e || (e = t);
			var n, r = t;
			do {
				if (n = !1, r.steiner || !Ce(r, r.next) && 0 !== Se(r.prev, r, r.next)) r = r.next;
				else {
					if (Oe(r), (r = e = r.prev) === r.next) break;
					n = !0
				}
			} while ( n || r !== e );
			return e
		}
		function xe(t, e, n, r, i, o, s) {
			if (t) { ! s && o &&
				function(t, e, n, r) {
					var i = t;
					do {
						null === i.z && (i.z = Me(i.x, i.y, e, n, r)), i.prevZ = i.prev, i.nextZ = i.next, i = i.next
					} while ( i !== t );
					i.prevZ.nextZ = null,
					i.prevZ = null,
					function(t) {
						var e, n, r, i, o, s, a, u, c = 1;
						do {
							for (n = t, t = null, o = null, s = 0; n;) {
								for (s++, r = n, a = 0, e = 0; e < c && (a++, r = r.nextZ); e++);
								for (u = c; a > 0 || u > 0 && r;) 0 !== a && (0 === u || !r || n.z <= r.z) ? (i = n, n = n.nextZ, a--) : (i = r, r = r.nextZ, u--),
								o ? o.nextZ = i: t = i,
								i.prevZ = o,
								o = i;
								n = r
							}
							o.nextZ = null, c *= 2
						} while ( s > 1 )
					} (i)
				} (t, r, i, o);
				for (var a, u, c = t; t.prev !== t.next;) if (a = t.prev, u = t.next, o ?
				function(t, e, n, r) {
					var i = t.prev,
					o = t,
					s = t.next;
					if (Se(i, o, s) >= 0) return ! 1;
					for (var a = i.x < o.x ? i.x < s.x ? i.x: s.x: o.x < s.x ? o.x: s.x, u = i.y < o.y ? i.y < s.y ? i.y: s.y: o.y < s.y ? o.y: s.y, c = i.x > o.x ? i.x > s.x ? i.x: s.x: o.x > s.x ? o.x: s.x, l = i.y > o.y ? i.y > s.y ? i.y: s.y: o.y > s.y ? o.y: s.y, h = Me(a, u, e, n, r), f = Me(c, l, e, n, r), p = t.nextZ; p && p.z <= f;) {
						if (p !== t.prev && p !== t.next && Ie(i.x, i.y, o.x, o.y, s.x, s.y, p.x, p.y) && Se(p.prev, p, p.next) >= 0) return ! 1;
						p = p.nextZ
					}
					for (p = t.prevZ; p && p.z >= h;) {
						if (p !== t.prev && p !== t.next && Ie(i.x, i.y, o.x, o.y, s.x, s.y, p.x, p.y) && Se(p.prev, p, p.next) >= 0) return ! 1;
						p = p.prevZ
					}
					return ! 0
				} (t, r, i, o) : function(t) {
					var e = t.prev,
					n = t,
					r = t.next;
					if (Se(e, n, r) >= 0) return ! 1;
					for (var i = t.next.next; i !== t.prev;) {
						if (Ie(e.x, e.y, n.x, n.y, r.x, r.y, i.x, i.y) && Se(i.prev, i, i.next) >= 0) return ! 1;
						i = i.next
					}
					return ! 0
				} (t)) e.push(a.i / n),
				e.push(t.i / n),
				e.push(u.i / n),
				Oe(t),
				t = u.next,
				c = u.next;
				else if ((t = u) === c) {
					s ? 1 === s ? xe(t = function(t, e, n) {
						var r = t;
						do {
							var i = r.prev,
							o = r.next.next; ! Ce(i, o) && Ne(i, r, r.next, o) && Pe(i, o) && Pe(o, i) && (e.push(i.i / n), e.push(r.i / n), e.push(o.i / n), Oe(r), Oe(r.next), r = t = o), r = r.next
						} while ( r !== t );
						return r
					} (t, e, n), e, n, r, i, o, 2) : 2 === s &&
					function(t, e, n, r, i, o) {
						var s = t;
						do {
							for (var a = s.next.next; a !== s.prev;) {
								if (s.i !== a.i &&
								function(t, e) {
									return t.next.i !== e.i && t.prev.i !== e.i && !
									function(t, e) {
										var n = t;
										do {
											if (n.i !== t.i && n.next.i !== t.i && n.i !== e.i && n.next.i !== e.i && Ne(n, n.next, t, e)) return ! 0;
											n = n.next
										} while ( n !== t );
										return ! 1
									} (t, e) && Pe(t, e) && Pe(e, t) &&
									function(t, e) {
										var n = t,
										r = !1,
										i = (t.x + e.x) / 2,
										o = (t.y + e.y) / 2;
										do {
											n.y > o != n.next.y > o && n.next.y !== n.y && i < (n.next.x - n.x) * (o - n.y) / (n.next.y - n.y) + n.x && (r = !r), n = n.next
										} while ( n !== t );
										return r
									} (t, e)
								} (s, a)) {
									var u = Le(s, a);
									return s = be(s, s.next),
									u = be(u, u.next),
									xe(s, e, n, r, i, o),
									void xe(u, e, n, r, i, o)
								}
								a = a.next
							}
							s = s.next
						} while ( s !== t )
					} (t, e, n, r, i, o) : xe(be(t), e, n, r, i, o, 1);
					break
				}
			}
		}
		function Ee(t, e) {
			return t.x - e.x
		}
		function Me(t, e, n, r, i) {
			return t = 32767 * (t - n) * i,
			e = 32767 * (e - r) * i,
			t = 16711935 & (t | t << 8),
			t = 252645135 & (t | t << 4),
			t = 858993459 & (t | t << 2),
			t = 1431655765 & (t | t << 1),
			e = 16711935 & (e | e << 8),
			e = 252645135 & (e | e << 4),
			e = 858993459 & (e | e << 2),
			e = 1431655765 & (e | e << 1),
			t | e << 1
		}
		function Ie(t, e, n, r, i, o, s, a) {
			return (i - s) * (e - a) - (t - s) * (o - a) >= 0 && (t - s) * (r - a) - (n - s) * (e - a) >= 0 && (n - s) * (o - a) - (i - s) * (r - a) >= 0
		}
		function Se(t, e, n) {
			return (e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)
		}
		function Ce(t, e) {
			return t.x === e.x && t.y === e.y
		}
		function Ne(t, e, n, r) {
			return !! (Ce(t, e) && Ce(n, r) || Ce(t, r) && Ce(n, e)) || Se(t, e, n) > 0 != Se(t, e, r) > 0 && Se(n, r, t) > 0 != Se(n, r, e) > 0
		}
		function Pe(t, e) {
			return Se(t.prev, t, t.next) < 0 ? Se(t, e, t.next) >= 0 && Se(t, t.prev, e) >= 0 : Se(t, e, t.prev) < 0 || Se(t, t.next, e) < 0
		}
		function Le(t, e) {
			var n = new Te(t.i, t.x, t.y),
			r = new Te(e.i, e.x, e.y),
			i = t.next,
			o = e.prev;
			return t.next = e,
			e.prev = t,
			n.next = i,
			i.prev = n,
			r.next = n,
			n.prev = r,
			o.next = r,
			r.prev = o,
			r
		}
		function Ae(t, e, n, r) {
			var i = new Te(t, e, n);
			return r ? (i.next = r.next, i.prev = r, r.next.prev = i, r.next = i) : (i.prev = i, i.next = i),
			i
		}
		function Oe(t) {
			t.next.prev = t.prev,
			t.prev.next = t.next,
			t.prevZ && (t.prevZ.nextZ = t.nextZ),
			t.nextZ && (t.nextZ.prevZ = t.prevZ)
		}
		function Te(t, e, n) {
			this.i = t,
			this.x = e,
			this.y = n,
			this.prev = null,
			this.next = null,
			this.z = null,
			this.prevZ = null,
			this.nextZ = null,
			this.steiner = !1
		}
		function Re(t, e, n, r) {
			for (var i = 0,
			o = e,
			s = n - r; o < n; o += r) i += (t[s] - t[o]) * (t[o + 1] + t[s + 1]),
			s = o;
			return i
		}
		function De(t) {
			var e = function(t) {
				for (var e = t[0][0].length, n = {
					vertices: [],
					holes: [],
					dimensions: e
				},
				r = 0, i = 0; i < t.length; i++) {
					for (var o = 0; o < t[i].length; o++) for (var s = 0; s < e; s++) n.vertices.push(t[i][o][s]);
					i > 0 && (r += t[i - 1].length, n.holes.push(r))
				}
				return n
			} (t),
			n = Ms(e.vertices, e.holes, 2),
			r = [],
			i = [];
			n.forEach(function(t, r) {
				var o = n[r];
				i.push([e.vertices[2 * o], e.vertices[2 * o + 1]])
			});
			for (var s = 0; s < i.length; s += 3) {
				var a = i.slice(s, s + 3);
				a.push(i[s]),
				r.push(o([a]))
			}
			return r
		}
		function ke(t, e) {
			if (!t) throw new Error("targetPoint is required");
			if (!e) throw new Error("points is required");
			var n, r = 1 / 0;
			return A(e,
			function(e, i) {
				var o = Ft(t, e);
				o < r && ((n = jt(e)).properties.featureIndex = i, n.properties.distanceToPoint = o, r = o)
			}),
			n
		}
		function Fe(t, e, n, r, i) {
			je(t, e, n || 0, r || t.length - 1, i ||
			function(t, e) {
				return t < e ? -1 : t > e ? 1 : 0
			})
		}
		function je(t, e, n, r, i) {
			for (; r > n;) {
				if (r - n > 600) {
					var o = r - n + 1,
					s = e - n + 1,
					a = Math.log(o),
					u = .5 * Math.exp(2 * a / 3),
					c = .5 * Math.sqrt(a * u * (o - u) / o) * (s - o / 2 < 0 ? -1 : 1);
					je(t, e, Math.max(n, Math.floor(e - s * u / o + c)), Math.min(r, Math.floor(e + (o - s) * u / o + c)), i)
				}
				var l = t[e],
				h = n,
				f = r;
				for (qe(t, n, e), i(t[r], l) > 0 && qe(t, n, r); h < f;) {
					for (qe(t, h, f), h++, f--; i(t[h], l) < 0;) h++;
					for (; i(t[f], l) > 0;) f--
				}
				0 === i(t[n], l) ? qe(t, n, f) : qe(t, ++f, r),
				f <= e && (n = f + 1),
				e <= f && (r = f - 1)
			}
		}
		function qe(t, e, n) {
			var r = t[e];
			t[e] = t[n],
			t[n] = r
		}
		function Be(t, e) {
			if (! (this instanceof Be)) return new Be(t, e);
			this._maxEntries = Math.max(4, t || 9),
			this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)),
			e && this._initFormat(e),
			this.clear()
		}
		function Ge(t, e) {
			Ue(t, 0, t.children.length, e, t)
		}
		function Ue(t, e, n, r, i) {
			i || (i = Ze(null)),
			i.minX = 1 / 0,
			i.minY = 1 / 0,
			i.maxX = -1 / 0,
			i.maxY = -1 / 0;
			for (var o, s = e; s < n; s++) o = t.children[s],
			ze(i, t.leaf ? r(o) : o);
			return i
		}
		function ze(t, e) {
			return t.minX = Math.min(t.minX, e.minX),
			t.minY = Math.min(t.minY, e.minY),
			t.maxX = Math.max(t.maxX, e.maxX),
			t.maxY = Math.max(t.maxY, e.maxY),
			t
		}
		function Ye(t, e) {
			return t.minX - e.minX
		}
		function Xe(t, e) {
			return t.minY - e.minY
		}
		function Ve(t) {
			return (t.maxX - t.minX) * (t.maxY - t.minY)
		}
		function We(t) {
			return t.maxX - t.minX + (t.maxY - t.minY)
		}
		function He(t, e) {
			return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY
		}
		function Je(t, e) {
			return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY
		}
		function Ze(t) {
			return {
				children: t,
				height: 1,
				leaf: !0,
				minX: 1 / 0,
				minY: 1 / 0,
				maxX: -1 / 0,
				maxY: -1 / 0
			}
		}
		function Qe(t, e, n, r, i) {
			for (var o, s = [e, n]; s.length;)(n = s.pop()) - (e = s.pop()) <= r || (Fe(t, o = e + Math.ceil((n - e) / r / 2) * r, e, n, i), s.push(e, o, o, n))
		}
		function Ke(t) {
			var e = Be(t);
			return e.insert = function(t) {
				if (Array.isArray(t)) {
					var e = t; (t = $e(e)).bbox = e
				} else t.bbox = t.bbox ? t.bbox: tn(t);
				return Be.prototype.insert.call(this, t)
			},
			e.load = function(t) {
				var e = [];
				return Array.isArray(t) ? t.forEach(function(t) {
					var n = $e(t);
					n.bbox = t,
					e.push(n)
				}) : A(t,
				function(t) {
					t.bbox = t.bbox ? t.bbox: tn(t),
					e.push(t)
				}),
				Be.prototype.load.call(this, e)
			},
			e.remove = function(t) {
				if (Array.isArray(t)) {
					var e = t; (t = $e(e)).bbox = e
				}
				return Be.prototype.remove.call(this, t)
			},
			e.clear = function() {
				return Be.prototype.clear.call(this)
			},
			e.search = function(t) {
				return {
					type: "FeatureCollection",
					features: Be.prototype.search.call(this, this.toBBox(t))
				}
			},
			e.collides = function(t) {
				return Be.prototype.collides.call(this, this.toBBox(t))
			},
			e.all = function() {
				return {
					type: "FeatureCollection",
					features: Be.prototype.all.call(this)
				}
			},
			e.toJSON = function() {
				return Be.prototype.toJSON.call(this)
			},
			e.fromJSON = function(t) {
				return Be.prototype.fromJSON.call(this, t)
			},
			e.toBBox = function(t) {
				var e;
				return e = t.bbox ? t.bbox: Array.isArray(t) && 4 === t.length ? t: tn(t),
				{
					minX: e[0],
					minY: e[1],
					maxX: e[2],
					maxY: e[3]
				}
			},
			e
		}
		function $e(t) {
			var e = [t[0], t[1]],
			n = [t[0], t[3]],
			r = [t[2], t[3]];
			return {
				type: "Feature",
				bbox: t,
				properties: {},
				geometry: {
					type: "Polygon",
					coordinates: [[e, [t[2], t[1]], r, n, e]]
				}
			}
		}
		function tn(t) {
			var e = [1 / 0, 1 / 0, -1 / 0, -1 / 0];
			return C(t,
			function(t) {
				e[0] > t[0] && (e[0] = t[0]),
				e[1] > t[1] && (e[1] = t[1]),
				e[2] < t[0] && (e[2] = t[0]),
				e[3] < t[1] && (e[3] = t[1])
			}),
			e
		}
		function en(t) {
			if (!t) throw new Error("geojson is required");
			var e = [];
			return k(t,
			function(t) { !
				function(t, e) {
					var n = [],
					r = t.geometry;
					switch (r.type) {
					case "Polygon":
						n = Y(r);
						break;
					case "LineString":
						n = [Y(r)]
					}
					n.forEach(function(n) { (function(t, e) {
							var n = [];
							return t.reduce(function(t, r) {
								var i = a([t, r], e);
								return i.bbox = function(t, e) {
									var n = t[0],
									r = t[1],
									i = e[0],
									o = e[1];
									return [n < i ? n: i, r < o ? r: o, n > i ? n: i, r > o ? r: o]
								} (t, r),
								n.push(i),
								r
							}),
							n
						})(n, t.properties).forEach(function(t) {
							t.id = e.length,
							e.push(t)
						})
					})
				} (t, e)
			}),
			c(e)
		}
		function nn(t, n) {
			var r = {},
			i = [];
			if ("LineString" === t.type && (t = e(t)), "LineString" === n.type && (n = e(n)), "Feature" === t.type && "Feature" === n.type && "LineString" === t.geometry.type && "LineString" === n.geometry.type && 2 === t.geometry.coordinates.length && 2 === n.geometry.coordinates.length) {
				var o = rn(t, n);
				return o && i.push(o),
				c(i)
			}
			var s = Ke();
			return s.load(en(n)),
			A(en(t),
			function(t) {
				A(s.search(t),
				function(e) {
					var n = rn(t, e);
					if (n) {
						var o = Y(n).join(",");
						r[o] || (r[o] = !0, i.push(n))
					}
				})
			}),
			c(i)
		}
		function rn(t, e) {
			var n = Y(t),
			i = Y(e);
			if (2 !== n.length) throw new Error("<intersects> line1 must only contain 2 coordinates");
			if (2 !== i.length) throw new Error("<intersects> line2 must only contain 2 coordinates");
			var o = n[0][0],
			s = n[0][1],
			a = n[1][0],
			u = n[1][1],
			c = i[0][0],
			l = i[0][1],
			h = i[1][0],
			f = i[1][1],
			p = (f - l) * (a - o) - (h - c) * (u - s),
			d = (h - c) * (s - l) - (f - l) * (o - c),
			g = (a - o) * (s - l) - (u - s) * (o - c);
			if (0 === p) return null;
			var y = d / p,
			v = g / p;
			return y >= 0 && y <= 1 && v >= 0 && v <= 1 ? r([o + y * (a - o), s + y * (u - s)]) : null
		}
		function on(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var i = t.geometry ? t.geometry.type: t.type;
			if ("LineString" !== i && "MultiLineString" !== i) throw new Error("lines must be LineString or MultiLineString");
			var o = r([1 / 0, 1 / 0], {
				dist: 1 / 0
			}),
			s = 0;
			return k(t,
			function(t) {
				for (var i = Y(t), u = 0; u < i.length - 1; u++) {
					var c = r(i[u]);
					c.properties.dist = Ft(e, c, n);
					var l = r(i[u + 1]);
					l.properties.dist = Ft(e, l, n);
					var h = Ft(c, l, n),
					f = Math.max(c.properties.dist, l.properties.dist),
					p = de(c, l),
					d = fe(e, f, p + 90, n),
					g = fe(e, f, p - 90, n),
					y = nn(a([d.geometry.coordinates, g.geometry.coordinates]), a([c.geometry.coordinates, l.geometry.coordinates])),
					v = null;
					y.features.length > 0 && ((v = y.features[0]).properties.dist = Ft(e, v, n), v.properties.location = s + Ft(c, v, n)),
					c.properties.dist < o.properties.dist && ((o = c).properties.index = u, o.properties.location = s),
					l.properties.dist < o.properties.dist && ((o = l).properties.index = u + 1, o.properties.location = s + h),
					v && v.properties.dist < o.properties.dist && ((o = v).properties.index = u),
					s += h
				}
			}),
			o
		}
		function sn(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.final;
			if (!t) throw new Error("start point is required");
			if (!e) throw new Error("end point is required");
			var i;
			return (i = r ? an(z(e), z(t)) : an(z(t), z(e))) > 180 ? -(360 - i) : i
		}
		function an(t, e) {
			var n = w(t[1]),
			r = w(e[1]),
			i = w(e[0] - t[0]);
			i > Math.PI && (i -= 2 * Math.PI),
			i < -Math.PI && (i += 2 * Math.PI);
			var o = Math.log(Math.tan(r / 2 + Math.PI / 4) / Math.tan(n / 2 + Math.PI / 4));
			return (_(Math.atan2(i, o)) + 360) % 360
		}
		function un(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.units;
			if (!t) throw new Error("from point is required");
			if (!e) throw new Error("to point is required");
			var i = z(t),
			o = z(e);
			return o[0] += o[0] - i[0] > 180 ? -360 : i[0] - o[0] > 180 ? 360 : 0,
			b(function(t, e, n) {
				var r = n = void 0 === n ? ko: Number(n),
				i = t[1] * Math.PI / 180,
				o = e[1] * Math.PI / 180,
				s = o - i,
				a = Math.abs(e[0] - t[0]) * Math.PI / 180;
				a > Math.PI && (a -= 2 * Math.PI);
				var u = Math.log(Math.tan(o / 2 + Math.PI / 4) / Math.tan(i / 2 + Math.PI / 4)),
				c = Math.abs(u) > 1e-11 ? s / u: Math.cos(i);
				return Math.sqrt(s * s + c * c * a * a) * r
			} (i, o), "meters", r)
		}
		function cn(t, e) {
			return hn(t, "mercator", e)
		}
		function ln(t, e) {
			return hn(t, "wgs84", e)
		}
		function hn(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.mutate;
			if (!t) throw new Error("geojson is required");
			return Array.isArray(t) && E(t[0]) ? t = "mercator" === e ? fn(t) : pn(t) : (!0 !== r && (t = jt(t)), C(t,
			function(t) {
				var n = "mercator" === e ? fn(t) : pn(t);
				t[0] = n[0],
				t[1] = n[1]
			})),
			t
		}
		function fn(t) {
			var e = Math.PI / 180,
			n = 20037508.342789244,
			r = [6378137 * (Math.abs(t[0]) <= 180 ? t[0] : t[0] - 360 *
			function(t) {
				return t < 0 ? -1 : t > 0 ? 1 : 0
			} (t[0])) * e, 6378137 * Math.log(Math.tan(.25 * Math.PI + .5 * t[1] * e))];
			return r[0] > n && (r[0] = n),
			r[0] < -n && (r[0] = -n),
			r[1] > n && (r[1] = n),
			r[1] < -n && (r[1] = -n),
			r
		}
		function pn(t) {
			var e = 180 / Math.PI;
			return [t[0] * e / 6378137, (.5 * Math.PI - 2 * Math.atan(Math.exp( - t[1] / 6378137))) * e]
		}
		function dn(t, n, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			if (!t) throw new Error("pt is required");
			if (Array.isArray(t) ? t = r(t) : "Point" === t.type ? t = e(t) : W(t, "Point", "point"), !n) throw new Error("line is required");
			Array.isArray(n) ? n = a(n) : "LineString" === n.type ? n = e(n) : W(n, "LineString", "line");
			var o = 1 / 0,
			s = t.geometry.coordinates;
			return j(n,
			function(t) {
				var e = t.geometry.coordinates[0],
				n = t.geometry.coordinates[1],
				a = function(t, e, n, i) {
					var o = i.mercator,
					s = !0 !== o ? Ft(e, t, i) : gn(e, t, i),
					a = m(!0 !== o ? de(e, t) : sn(e, t)),
					u = m(!0 !== o ? de(e, n) : sn(e, n)),
					c = Math.abs(a - u);
					if (c > 90) return s;
					var l = (u + 180) % 360,
					h = m(!0 !== o ? de(n, t) : sn(n, t)),
					f = Math.abs(h - l);
					return f > 180 && (f = Math.abs(f - 360)),
					f > 90 ? !0 !== o ? Ft(t, n, i) : gn(t, n, i) : !0 !== o ? s * Math.sin(w(c)) : function(t, e, n, i) {
						var o = 0; (Math.abs(t[0]) >= 180 || Math.abs(e[0]) >= 180 || Math.abs(n[0]) >= 180) && (o = t[0] > 0 || e[0] > 0 || n[0] > 0 ? -180 : 180);
						var s = r(n),
						a = cn([t[0] + o, t[1]]),
						u = cn([e[0] + o, e[1]]),
						c = cn([n[0] + o, n[1]]),
						l = ln(function(t, e, n) {
							var r = t[0],
							i = t[1],
							o = e[0],
							s = e[1],
							a = n[0],
							u = n[1],
							c = o - r,
							l = s - i,
							h = ((a - r) * c + (u - i) * l) / (c * c + l * l);
							return [r + h * c, i + h * l]
						} (a, u, c));
						return 0 !== o && (l[0] -= o),
						un(s, l, i)
					} (e, n, t, i)
				} (s, e, n, i);
				o > a && (o = a)
			}),
			o
		}
		function gn(t, e, n) {
			var r = n.units,
			i = 0;
			Math.abs(t[0]) >= 180 && (i = t[0] > 0 ? -180 : 180),
			Math.abs(e[0]) >= 180 && (i = e[0] > 0 ? -180 : 180);
			var o = cn([t[0] + i, t[1]]),
			s = cn([e[0] + i, e[1]]),
			a = function(t) {
				return t * t
			},
			u = a(o[0] - s[0]) + a(o[1] - s[1]);
			return b(Math.sqrt(u), "meters", r)
		}
		function yn(t) {
			for (var n = function(t) {
				return "FeatureCollection" !== t.type ? c("Feature" !== t.type ? [e(t)] : [t]) : t
			} (t), i = ge(n), o = !1, s = 0; ! o && s < n.features.length;) {
				var a, u = n.features[s].geometry,
				l = !1;
				if ("Point" === u.type) i.geometry.coordinates[0] === u.coordinates[0] && i.geometry.coordinates[1] === u.coordinates[1] && (o = !0);
				else if ("MultiPoint" === u.type) {
					var h = !1;
					for (a = 0; ! h && a < u.coordinates.length;) i.geometry.coordinates[0] === u.coordinates[a][0] && i.geometry.coordinates[1] === u.coordinates[a][1] && (o = !0, h = !0),
					a++
				} else if ("LineString" === u.type) for (a = 0; ! l && a < u.coordinates.length - 1;) vn(i.geometry.coordinates[0], i.geometry.coordinates[1], u.coordinates[a][0], u.coordinates[a][1], u.coordinates[a + 1][0], u.coordinates[a + 1][1]) && (l = !0, o = !0),
				a++;
				else if ("MultiLineString" === u.type) for (var f = 0; f < u.coordinates.length;) {
					l = !1,
					a = 0;
					for (var p = u.coordinates[f]; ! l && a < p.length - 1;) vn(i.geometry.coordinates[0], i.geometry.coordinates[1], p[a][0], p[a][1], p[a + 1][0], p[a + 1][1]) && (l = !0, o = !0),
					a++;
					f++
				} else "Polygon" !== u.type && "MultiPolygon" !== u.type || Lt(i, u) && (o = !0);
				s++
			}
			if (o) return i;
			var d = c([]);
			for (s = 0; s < n.features.length; s++) d.features = d.features.concat(me(n.features[s]).features);
			return r(ke(i, d).geometry.coordinates)
		}
		function vn(t, e, n, r, i, o) {
			return Math.sqrt((i - n) * (i - n) + (o - r) * (o - r)) === Math.sqrt((t - n) * (t - n) + (e - r) * (e - r)) + Math.sqrt((i - t) * (i - t) + (o - e) * (o - e))
		}
		function mn(t) {
			return D(t,
			function(t, e) {
				return t + _n(e)
			},
			0)
		}
		function _n(t) {
			var e, n = 0;
			switch (t.type) {
			case "Polygon":
				return wn(t.coordinates);
			case "MultiPolygon":
				for (e = 0; e < t.coordinates.length; e++) n += wn(t.coordinates[e]);
				return n;
			case "Point":
			case "MultiPoint":
			case "LineString":
			case "MultiLineString":
				return 0;
			case "GeometryCollection":
				for (e = 0; e < t.geometries.length; e++) n += _n(t.geometries[e]);
				return n
			}
		}
		function wn(t) {
			var e = 0;
			if (t && t.length > 0) {
				e += Math.abs(bn(t[0]));
				for (var n = 1; n < t.length; n++) e -= Math.abs(bn(t[n]))
			}
			return e
		}
		function bn(t) {
			var e, n, r, i, o, s, a = 0,
			u = t.length;
			if (u > 2) {
				for (s = 0; s < u; s++) s === u - 2 ? (r = u - 2, i = u - 1, o = 0) : s === u - 1 ? (r = u - 1, i = 0, o = 1) : (r = s, i = s + 1, o = s + 2),
				e = t[r],
				n = t[i],
				a += (xn(t[o][0]) - xn(e[0])) * Math.sin(xn(n[1]));
				a = a * Cs * Cs / 2
			}
			return a
		}
		function xn(t) {
			return t * Math.PI / 180
		}
		function En(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			if (!t) throw new Error("geojson is required");
			return q(t,
			function(t, n) {
				var r = n.geometry.coordinates;
				return t + Ft(r[0], r[1], e)
			},
			0)
		}
		function Mn(t, e, n, r) {
			if (r = r || {},
			!M(r)) throw new Error("options is invalid");
			var i, o = [];
			if ("Feature" === t.type) i = t.geometry.coordinates;
			else {
				if ("LineString" !== t.type) throw new Error("input must be a LineString Feature or Geometry");
				i = t.coordinates
			}
			for (var s, u, c, l = 0,
			h = 0; h < i.length && !(e >= l && h === i.length - 1); h++) {
				if (l > e && 0 === o.length) {
					if (! (s = e - l)) return o.push(i[h]),
					a(o);
					u = de(i[h], i[h - 1]) - 180,
					c = fe(i[h], s, u, r),
					o.push(c.geometry.coordinates)
				}
				if (l >= n) return (s = n - l) ? (u = de(i[h], i[h - 1]) - 180, c = fe(i[h], s, u, r), o.push(c.geometry.coordinates), a(o)) : (o.push(i[h]), a(o));
				if (l >= e && o.push(i[h]), h === i.length - 1) return a(o);
				l += Ft(i[h], i[h + 1], r)
			}
			return a(i[i.length - 1])
		}
		function In(t, e, n) {
			var r = (n = n || {}).ignoreEndVertices;
			if (!M(n)) throw new Error("invalid options");
			if (!t) throw new Error("pt is required");
			if (!e) throw new Error("line is required");
			for (var i = z(t), o = Y(e), s = 0; s < o.length - 1; s++) {
				var a = !1;
				if (r && (0 === s && (a = "start"), s === o.length - 2 && (a = "end"), 0 === s && s + 1 === o.length - 1 && (a = "both")),
				function(t, e, n, r) {
					var i = n[0],
					o = n[1],
					s = t[0],
					a = t[1],
					u = e[0],
					c = e[1],
					l = n[0] - s,
					h = n[1] - a,
					f = u - s,
					p = c - a;
					return l * p - h * f == 0 && (r ? "start" === r ? Math.abs(f) >= Math.abs(p) ? f > 0 ? s < i && i <= u: u <= i && i < s: p > 0 ? a < o && o <= c: c <= o && o < a: "end" === r ? Math.abs(f) >= Math.abs(p) ? f > 0 ? s <= i && i < u: u < i && i <= s: p > 0 ? a <= o && o < c: c < o && o <= a: "both" === r ? Math.abs(f) >= Math.abs(p) ? f > 0 ? s < i && i < u: u < i && i < s: p > 0 ? a < o && o < c: c < o && o < a: void 0 : Math.abs(f) >= Math.abs(p) ? f > 0 ? s <= i && i <= u: u <= i && i <= s: p > 0 ? a <= o && o <= c: c <= o && o <= a)
				} (o[s], o[s + 1], i, a)) return ! 0
			}
			return ! 1
		}
		function Sn(t, e) {
			var n = Q(t),
			r = Q(e),
			i = J(t),
			o = J(e);
			switch (n) {
			case "Point":
				switch (r) {
				case "MultiPoint":
					return function(t, e) {
						var n, r = !1;
						for (n = 0; n < e.coordinates.length; n++) if (Nn(e.coordinates[n], t.coordinates)) {
							r = !0;
							break
						}
						return r
					} (i, o);
				case "LineString":
					return In(i, o, {
						ignoreEndVertices: !0
					});
				case "Polygon":
					return Lt(i, o, {
						ignoreBoundary: !0
					});
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "MultiPoint":
				switch (r) {
				case "MultiPoint":
					return function(t, e) {
						for (var n = 0; n < t.coordinates.length; n++) {
							for (var r = !1,
							i = 0; i < e.coordinates.length; i++) Nn(t.coordinates[n], e.coordinates[i]) && (r = !0);
							if (!r) return ! 1
						}
						return ! 0
					} (i, o);
				case "LineString":
					return function(t, e) {
						for (var n = !1,
						r = 0; r < t.coordinates.length; r++) {
							if (!In(t.coordinates[r], e)) return ! 1;
							n || (n = In(t.coordinates[r], e, {
								ignoreEndVertices: !0
							}))
						}
						return n
					} (i, o);
				case "Polygon":
					return function(t, e) {
						for (var n = !0,
						r = 0; r < t.coordinates.length; r++) {
							var i = Lt(t.coordinates[1], e);
							if (!i) {
								n = !1;
								break
							}
							i = Lt(t.coordinates[1], e, {
								ignoreBoundary: !0
							})
						}
						return n && i
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "LineString":
				switch (r) {
				case "LineString":
					return function(t, e) {
						for (var n = 0; n < t.coordinates.length; n++) if (!In(t.coordinates[n], e)) return ! 1;
						return ! 0
					} (i, o);
				case "Polygon":
					return function(t, e) {
						if (!Cn(U(e), U(t))) return ! 1;
						for (var n = !1,
						r = 0; r < t.coordinates.length - 1; r++) {
							if (!Lt(t.coordinates[r], e)) return ! 1;
							if (n || (n = Lt(t.coordinates[r], e, {
								ignoreBoundary: !0
							})), !n) {
								n = Lt(function(t, e) {
									return [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2]
								} (t.coordinates[r], t.coordinates[r + 1]), e, {
									ignoreBoundary: !0
								})
							}
						}
						return n
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "Polygon":
				switch (r) {
				case "Polygon":
					return function(t, e) {
						var n = U(t);
						if (!Cn(U(e), n)) return ! 1;
						for (var r = 0; r < t.coordinates[0].length; r++) if (!Lt(t.coordinates[0][r], e)) return ! 1;
						return ! 0
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			default:
				throw new Error("feature1 " + n + " geometry not supported")
			}
		}
		function Cn(t, e) {
			return ! (t[0] > e[0] || t[2] < e[2] || t[1] > e[1] || t[3] < e[3])
		}
		function Nn(t, e) {
			return t[0] === e[0] && t[1] === e[1]
		}
		function Pn(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var i = n.mask,
			o = n.properties,
			s = [];
			if (null === e || void 0 === e) throw new Error("cellSide is required");
			if (!E(e)) throw new Error("cellSide is invalid");
			if (!t) throw new Error("bbox is required");
			if (!Array.isArray(t)) throw new Error("bbox must be array");
			if (4 !== t.length) throw new Error("bbox must contain 4 numbers");
			if (i && -1 === ["Polygon", "MultiPolygon"].indexOf(Q(i))) throw new Error("options.mask must be a (Multi)Polygon");
			for (var a = t[0], u = t[1], l = t[2], h = t[3], f = e / Ft([a, u], [l, u], n) * (l - a), p = e / Ft([a, u], [a, h], n) * (h - u), d = l - a, g = h - u, y = Math.floor(d / f), v = (g - Math.floor(g / p) * p) / 2, m = a + (d - y * f) / 2; m <= l;) {
				for (var _ = u + v; _ <= h;) {
					var w = r([m, _], o);
					i ? Sn(w, i) && s.push(w) : s.push(w),
					_ += p
				}
				m += f
			}
			return c(s)
		}
		function Ln(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.precision,
			r = e.coordinates,
			i = e.mutate;
			if (n = void 0 === n || null === n || isNaN(n) ? 6 : n, r = void 0 === r || null === r || isNaN(r) ? 3 : r, !t) throw new Error("<geojson> is required");
			if ("number" != typeof n) throw new Error("<precision> must be a number");
			if ("number" != typeof r) throw new Error("<coordinates> must be a number"); ! 1 !== i && void 0 !== i || (t = JSON.parse(JSON.stringify(t)));
			var o = Math.pow(10, n);
			return C(t,
			function(t) { !
				function(t, e, n) {
					t.length > n && t.splice(n, t.length);
					for (var r = 0; r < t.length; r++) t[r] = Math.round(t[r] * e) / e
				} (t, o, r)
			}),
			t
		}
		function An(t, e) {
			if (!t || !e) return ! 1;
			if (t.length !== e.length) return ! 1;
			for (var n = 0,
			r = t.length; n < r; n++) if (t[n] instanceof Array && e[n] instanceof Array) {
				if (!An(t[n], e[n])) return ! 1
			} else if (t[n] !== e[n]) return ! 1;
			return ! 0
		}
		function On(t, e) {
			if (void 0 === e && (e = !0), 3 != t.length) throw new Error("This function requires an array of three points [x,y]");
			return (t[1][0] - t[0][0]) * (t[2][1] - t[0][1]) - (t[1][1] - t[0][1]) * (t[2][0] - t[0][0]) >= 0 == e
		}
		function Tn(t, e) {
			if (!t || !e) return ! 1;
			if (t.length != e.length) return ! 1;
			for (var n = 0,
			r = t.length; n < r; n++) if (t[n] instanceof Array && e[n] instanceof Array) {
				if (!Tn(t[n], e[n])) return ! 1
			} else if (t[n] != e[n]) return ! 1;
			return ! 0
		}
		function Rn(t, e) {
			var n = [],
			r = Ke();
			return k(e,
			function(e) {
				if (n.forEach(function(t, e) {
					t.id = e
				}), n.length) {
					var i = r.search(e);
					if (i.features.length) {
						var o = kn(e, i);
						n = n.filter(function(t) {
							return t.id !== o.id
						}),
						r.remove(o),
						A(Dn(o, e),
						function(t) {
							n.push(t),
							r.insert(t)
						})
					}
				} else(n = Dn(t, e).features).forEach(function(t) {
					t.bbox || (t.bbox = he(U(t)))
				}),
				r.load(c(n))
			}),
			c(n)
		}
		function Dn(t, e) {
			var n = [],
			r = Y(t)[0],
			i = Y(t)[t.geometry.coordinates.length - 1];
			if (Fn(r, z(e)) || Fn(i, z(e))) return c([t]);
			var o = Ke(),
			s = en(t);
			o.load(s);
			var u = o.search(e);
			if (!u.features.length) return c([t]);
			var l = kn(e, u),
			h = O(s,
			function(t, r, i) {
				var o = Y(r)[1],
				s = z(e);
				return i === l.id ? (t.push(s), n.push(a(t)), Fn(s, o) ? [s] : [s, o]) : (t.push(o), t)
			},
			[r]);
			return h.length > 1 && n.push(a(h)),
			c(n)
		}
		function kn(t, e) {
			if (!e.features.length) throw new Error("lines must contain features");
			if (1 === e.features.length) return e.features[0];
			var n, r = 1 / 0;
			return A(e,
			function(e) {
				var i = on(e, t).properties.dist;
				i < r && (n = e, r = i)
			}),
			n
		}
		function Fn(t, e) {
			return t[0] === e[0] && t[1] === e[1]
		}
		function jn(t, e, n, r, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			var o = i.steps,
			s = i.units;
			if (!t) throw new Error("center is required");
			if (!e) throw new Error("radius is required");
			if (void 0 === n || null === n) throw new Error("bearing1 is required");
			if (void 0 === r || null === r) throw new Error("bearing2 is required");
			if ("object" != typeof i) throw new Error("options must be an object");
			o = o || 64;
			var u = qn(n),
			c = qn(r),
			l = t.properties;
			if (u === c) return a(pe(t, e, i).geometry.coordinates[0], l);
			for (var h = u,
			f = u < c ? c: c + 360, p = h, d = [], g = 0; p < f;) d.push(fe(t, e, p, s).geometry.coordinates),
			p = h + 360 * ++g / o;
			return p > f && d.push(fe(t, e, f, s).geometry.coordinates),
			a(d, l)
		}
		function qn(t) {
			var e = t % 360;
			return e < 0 && (e += 360),
			e
		}
		function Bn(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.properties,
			r = Q(t),
			i = Y(t);
			if (n = n || t.properties || {},
			!i.length) throw new Error("polygon must contain coordinates");
			switch (r) {
			case "Polygon":
				return Gn(i, n);
			case "MultiPolygon":
				var o = [];
				return i.forEach(function(t) {
					o.push(Gn(t, n))
				}),
				c(o);
			default:
				throw new Error("geom " + r + " not supported")
			}
		}
		function Gn(t, e) {
			return t.length > 1 ? l(t, e) : a(t[0], e)
		}
		function Un(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.properties,
			r = e.autoComplete,
			i = e.orderCoords;
			if (!t) throw new Error("lines is required");
			switch (r = void 0 === r || r, i = void 0 === i || i, Q(t)) {
			case "FeatureCollection":
			case "GeometryCollection":
				var o = [];
				return (t.features ? t.features: t.geometries).forEach(function(t) {
					o.push(Y(zn(t, {},
					r, i)))
				}),
				f(o, n)
			}
			return zn(t, n, r, i)
		}
		function zn(t, e, n, r) {
			e = e || t.properties || {};
			var i = Y(t),
			s = Q(t);
			if (!i.length) throw new Error("line must contain coordinates");
			switch (s) {
			case "LineString":
				return n && (i = Yn(i)),
				o([i], e);
			case "MultiLineString":
				var u = [],
				c = 0;
				return i.forEach(function(t) {
					if (n && (t = Yn(t)), r) {
						var e = function(t) {
							var e = t[0],
							n = t[1],
							r = t[2],
							i = t[3];
							return Math.abs(e - r) * Math.abs(n - i)
						} (U(a(t)));
						e > c ? (u.unshift(t), c = e) : u.push(t)
					} else u.push(t)
				}),
				o(u, e);
			default:
				throw new Error("geometry type " + s + " is not supported")
			}
		}
		function Yn(t) {
			var e = t[0],
			n = e[0],
			r = e[1],
			i = t[t.length - 1],
			o = i[0],
			s = i[1];
			return n === o && r === s || t.push(e),
			t
		}
		function Xn(t, e, n) {
			var r, i, o, s, a, u = t.length,
			c = Wn(t[0], e),
			l = [];
			for (n || (n = []), r = 1; r < u; r++) {
				for (i = t[r - 1], s = a = Wn(o = t[r], e);;) {
					if (! (c | s)) {
						l.push(i),
						s !== a ? (l.push(o), r < u - 1 && (n.push(l), l = [])) : r === u - 1 && l.push(o);
						break
					}
					if (c & s) break;
					c ? c = Wn(i = Vn(i, o, c, e), e) : s = Wn(o = Vn(i, o, s, e), e)
				}
				c = a
			}
			return l.length && n.push(l),
			n
		}
		function Vn(t, e, n, r) {
			return 8 & n ? [t[0] + (e[0] - t[0]) * (r[3] - t[1]) / (e[1] - t[1]), r[3]] : 4 & n ? [t[0] + (e[0] - t[0]) * (r[1] - t[1]) / (e[1] - t[1]), r[1]] : 2 & n ? [r[2], t[1] + (e[1] - t[1]) * (r[2] - t[0]) / (e[0] - t[0])] : 1 & n ? [r[0], t[1] + (e[1] - t[1]) * (r[0] - t[0]) / (e[0] - t[0])] : null
		}
		function Wn(t, e) {
			var n = 0;
			return t[0] < e[0] ? n |= 1 : t[0] > e[2] && (n |= 2),
			t[1] < e[1] ? n |= 4 : t[1] > e[3] && (n |= 8),
			n
		}
		function Hn(t, e) {
			for (var n = [], r = 0; r < t.length; r++) {
				var i = js.polygon(t[r], e);
				i.length > 0 && (i[0][0] === i[i.length - 1][0] && i[0][1] === i[i.length - 1][1] || i.push(i[0]), i.length >= 4 && n.push(i))
			}
			return n
		}
		function Jn(t) {
			return "[object Arguments]" === Object.prototype.toString.call(t)
		}
		function Zn(t, e, n) {
			return n || (n = {}),
			t === e || (t instanceof Date && e instanceof Date ? t.getTime() === e.getTime() : !t || !e || "object" != typeof t && "object" != typeof e ? (n.strict, t === e) : function(t, e, n) {
				var r, i;
				if (Qn(t) || Qn(e)) return ! 1;
				if (t.prototype !== e.prototype) return ! 1;
				if (Jn(t)) return !! Jn(e) && (t = qs.call(t), e = qs.call(e), Zn(t, e, n));
				if (Kn(t)) {
					if (!Kn(e)) return ! 1;
					if (t.length !== e.length) return ! 1;
					for (r = 0; r < t.length; r++) if (t[r] !== e[r]) return ! 1;
					return ! 0
				}
				try {
					var o = Object.keys(t),
					s = Object.keys(e)
				} catch(t) {
					return ! 1
				}
				if (o.length !== s.length) return ! 1;
				for (o.sort(), s.sort(), r = o.length - 1; r >= 0; r--) if (o[r] !== s[r]) return ! 1;
				for (r = o.length - 1; r >= 0; r--) if (i = o[r], !Zn(t[i], e[i], n)) return ! 1;
				return typeof t == typeof e
			} (t, e, n))
		}
		function Qn(t) {
			return null === t || void 0 === t
		}
		function Kn(t) {
			return ! (!t || "object" != typeof t || "number" != typeof t.length || "function" != typeof t.copy || "function" != typeof t.slice || t.length > 0 && "number" != typeof t[0])
		}
		function $n(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.tolerance || 0,
			i = [],
			o = Ke();
			o.load(en(t));
			var s;
			return j(e,
			function(t) {
				var e = !1;
				A(o.search(t),
				function(n) {
					if (!1 === e) {
						var i = Y(t).sort(),
						o = Y(n).sort();
						Zn(i, o) ? (e = !0, s = s ? tr(s, t) : t) : (0 === r ? In(i[0], n) && In(i[1], n) : on(n, i[0]).properties.dist <= r && on(n, i[1]).properties.dist <= r) ? (e = !0, s = s ? tr(s, t) : t) : (0 === r ? In(o[0], t) && In(o[1], t) : on(t, o[0]).properties.dist <= r && on(t, o[1]).properties.dist <= r) && (s = s ? tr(s, n) : n)
					}
				}),
				!1 === e && s && (i.push(s), s = void 0)
			}),
			s && i.push(s),
			c(i)
		}
		function tr(t, e) {
			var n = Y(e),
			r = Y(t),
			i = r[0],
			o = r[r.length - 1],
			s = t.geometry.coordinates;
			return Zn(n[0], i) ? s.unshift(n[1]) : Zn(n[0], o) ? s.push(n[1]) : Zn(n[1], i) ? s.unshift(n[0]) : Zn(n[1], o) && s.push(n[0]),
			t
		}
		function er(t) {
			var e = t % 360;
			return e < 0 && (e += 360),
			e
		}
		function nr(t, e, n, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			var o = i.units,
			s = i.properties;
			if (!t) throw new Error("origin is required");
			if (void 0 === e || null === e) throw new Error("distance is required");
			if (void 0 === n || null === n) throw new Error("bearing is required");
			if (! (e >= 0)) throw new Error("distance must be greater than 0");
			var a = b(e, o, "meters"),
			u = z(t),
			c = function(t, e, n, r) {
				r = void 0 === r ? ko: Number(r);
				var i = e / r,
				o = t[0] * Math.PI / 180,
				s = w(t[1]),
				a = w(n),
				u = i * Math.cos(a),
				c = s + u;
				Math.abs(c) > Math.PI / 2 && (c = c > 0 ? Math.PI - c: -Math.PI - c);
				var l = Math.log(Math.tan(c / 2 + Math.PI / 4) / Math.tan(s / 2 + Math.PI / 4)),
				h = Math.abs(l) > 1e-11 ? u / l: Math.cos(s);
				return [(180 * (o + i * Math.sin(a) / h) / Math.PI + 540) % 360 - 180, 180 * c / Math.PI]
			} (u, a, n);
			return c[0] += c[0] - u[0] > 180 ? -360 : u[0] - c[0] > 180 ? 360 : 0,
			r(c, s)
		}
		function rr(t, e, n, r, i, o) {
			for (var s = 0; s < t.length; s++) {
				var a = t[s],
				u = t[s + 1];
				s === t.length - 1 && (u = t[0]),
				r = ir(a, u, e),
				n <= 0 && r > 0 ?
				function(t, e, n) {
					return ir(t, e, n) < 0
				} (e, a, i) || (i = a) : n > 0 && r <= 0 && (function(t, e, n) {
					return ir(t, e, n) > 0
				} (e, a, o) || (o = a)),
				n = r
			}
			return [i, o]
		}
		function ir(t, e, n) {
			return (e[0] - t[0]) * (n[1] - t[1]) - (n[0] - t[0]) * (e[1] - t[1])
		}
		function or(t) {
			if (!t) throw new Error("line is required");
			var e = t.geometry ? t.geometry.type: t.type;
			if (!Array.isArray(t) && "LineString" !== e) throw new Error("geometry must be a LineString");
			for (var n, r, i = Y(t), o = 0, s = 1; s < i.length;) n = r || i[0],
			o += ((r = i[s])[0] - n[0]) * (r[1] + n[1]),
			s++;
			return o > 0
		}
		function sr(t, e) {
			switch ("Feature" === t.type ? t.geometry.type: t.type) {
			case "GeometryCollection":
				return R(t,
				function(t) {
					sr(t, e)
				}),
				t;
			case "LineString":
				return ar(Y(t), e),
				t;
			case "Polygon":
				return ur(Y(t), e),
				t;
			case "MultiLineString":
				return Y(t).forEach(function(t) {
					ar(t, e)
				}),
				t;
			case "MultiPolygon":
				return Y(t).forEach(function(t) {
					ur(t, e)
				}),
				t;
			case "Point":
			case "MultiPoint":
				return t
			}
		}
		function ar(t, e) {
			or(t) === e && t.reverse()
		}
		function ur(t, e) {
			or(t[0]) !== e && t[0].reverse();
			for (var n = 1; n < t.length; n++) or(t[n]) === e && t[n].reverse()
		}
		function cr(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.zProperty || "elevation",
			r = e.flip,
			i = e.flags;
			H(t, "Point", "input must contain Points");
			for (var o = function(t, e) {
				var n = {};
				return A(t,
				function(t) {
					var e = Y(t)[1];
					n[e] || (n[e] = []),
					n[e].push(t)
				}),
				Object.keys(n).map(function(t) {
					return n[t].sort(function(t, e) {
						return Y(t)[0] - Y(e)[0]
					})
				}).sort(function(t, n) {
					return e ? Y(t[0])[1] - Y(n[0])[1] : Y(n[0])[1] - Y(t[0])[1]
				})
			} (t, r), s = [], a = 0; a < o.length; a++) {
				for (var u = o[a], c = [], l = 0; l < u.length; l++) {
					var h = u[l];
					h.properties[n] ? c.push(h.properties[n]) : c.push(0),
					!0 === i && (h.properties.matrixPosition = [a, l])
				}
				s.push(c)
			}
			return s
		}
		function lr(t, e, n, r) {
			r = r || {};
			for (var i = Object.keys(Bs), o = 0; o < i.length; o++) {
				var s = i[o],
				a = r[s];
				a = void 0 !== a && null !== a ? a: Bs[s],
				Gs[s] = a
			}
			Gs.verbose && console.log("MarchingSquaresJS-isoBands: computing isobands for [" + e + ":" + (e + n) + "]");
			var u, c = function(t, e, n) {
				for (var r = t.length - 1,
				i = t[0].length - 1, o = {
					rows: r,
					cols: i,
					cells: []
				},
				s = e + Math.abs(n), a = 0; a < r; ++a) {
					o.cells[a] = [];
					for (var u = 0; u < i; ++u) {
						var c = 0,
						l = t[a + 1][u],
						h = t[a + 1][u + 1],
						f = t[a][u + 1],
						p = t[a][u];
						if (! (isNaN(l) || isNaN(h) || isNaN(f) || isNaN(p))) {
							c |= l < e ? 0 : l > s ? 128 : 64,
							c |= h < e ? 0 : h > s ? 32 : 16,
							c |= f < e ? 0 : f > s ? 8 : 4;
							var d = +(c |= p < e ? 0 : p > s ? 2 : 1),
							g = 0;
							if (17 === c || 18 === c || 33 === c || 34 === c || 38 === c || 68 === c || 72 === c || 98 === c || 102 === c || 132 === c || 136 === c || 137 === c || 152 === c || 153 === c) {
								var y = (l + h + f + p) / 4;
								g = y > s ? 2 : y < e ? 0 : 1,
								34 === c ? 1 === g ? c = 35 : 0 === g && (c = 136) : 136 === c ? 1 === g ? (c = 35, g = 4) : 0 === g && (c = 34) : 17 === c ? 1 === g ? (c = 155, g = 4) : 0 === g && (c = 153) : 68 === c ? 1 === g ? (c = 103, g = 4) : 0 === g && (c = 102) : 153 === c ? 1 === g && (c = 155) : 102 === c ? 1 === g && (c = 103) : 152 === c ? g < 2 && (c = 156, g = 1) : 137 === c ? g < 2 && (c = 139, g = 1) : 98 === c ? g < 2 && (c = 99, g = 1) : 38 === c ? g < 2 && (c = 39, g = 1) : 18 === c ? g > 0 ? (c = 156, g = 4) : c = 152 : 33 === c ? g > 0 ? (c = 139, g = 4) : c = 137 : 72 === c ? g > 0 ? (c = 99, g = 4) : c = 98 : 132 === c && (g > 0 ? (c = 39, g = 4) : c = 38)
							}
							if (0 != c && 170 != c) {
								var v, m, _, w, b, x, E, M;
								v = m = _ = w = b = x = E = M = .5;
								var I = [];
								1 === c ? (_ = 1 - hr(e, f, p), M = 1 - hr(e, l, p), I.push(Ca[c])) : 169 === c ? (_ = hr(s, p, f), M = hr(s, p, l), I.push(Ca[c])) : 4 === c ? (x = 1 - hr(e, h, f), w = hr(e, p, f), I.push(Ia[c])) : 166 === c ? (x = hr(s, f, h), w = 1 - hr(s, f, p), I.push(Ia[c])) : 16 === c ? (b = hr(e, f, h), m = hr(e, l, h), I.push(Ma[c])) : 154 === c ? (b = 1 - hr(s, h, f), m = 1 - hr(s, h, l), I.push(Ma[c])) : 64 === c ? (E = hr(e, p, l), v = 1 - hr(e, h, l), I.push(Pa[c])) : 106 === c ? (E = 1 - hr(s, l, p), v = hr(s, l, h), I.push(Pa[c])) : 168 === c ? (w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), I.push(Sa[c]), I.push(Ca[c])) : 2 === c ? (w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), I.push(Sa[c]), I.push(Ca[c])) : 162 === c ? (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), I.push(Sa[c]), I.push(Ca[c])) : 8 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), I.push(Ma[c]), I.push(Ia[c])) : 138 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Ma[c]), I.push(Ia[c])) : 32 === c ? (b = hr(s, f, h), x = hr(e, f, h), v = hr(e, l, h), m = hr(s, l, h), I.push(Ma[c]), I.push(Ia[c])) : 42 === c ? (M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h), I.push(Na[c]), I.push(Pa[c])) : 128 === c && (M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Na[c]), I.push(Pa[c])),
								5 === c ? (x = 1 - hr(e, h, f), M = 1 - hr(e, l, p), I.push(Ia[c])) : 165 === c ? (x = hr(s, f, h), M = hr(s, p, l), I.push(Ia[c])) : 20 === c ? (w = hr(e, p, f), m = hr(e, l, h), I.push(Sa[c])) : 150 === c ? (w = 1 - hr(s, f, p), m = 1 - hr(s, h, l), I.push(Sa[c])) : 80 === c ? (b = hr(e, f, h), E = hr(e, p, l), I.push(Ma[c])) : 90 === c ? (b = 1 - hr(s, h, f), E = 1 - hr(s, l, p), I.push(Ma[c])) : 65 === c ? (_ = 1 - hr(e, f, p), v = 1 - hr(e, h, l), I.push(Ca[c])) : 105 === c ? (_ = hr(s, p, f), v = hr(s, l, h), I.push(Ca[c])) : 160 === c ? (b = hr(s, f, h), x = hr(e, f, h), M = hr(e, p, l), E = hr(s, p, l), I.push(Ma[c]), I.push(Ia[c])) : 10 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), I.push(Ma[c]), I.push(Ia[c])) : 130 === c ? (w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Sa[c]), I.push(Ca[c])) : 40 === c ? (w = hr(s, p, f), _ = hr(e, p, f), v = hr(e, l, h), m = hr(s, l, h), I.push(Sa[c]), I.push(Ca[c])) : 101 === c ? (x = hr(s, f, h), v = hr(s, l, h), I.push(Ia[c])) : 69 === c ? (x = 1 - hr(e, h, f), v = 1 - hr(e, h, l), I.push(Ia[c])) : 149 === c ? (M = hr(s, p, l), m = 1 - hr(s, h, l), I.push(Na[c])) : 21 === c ? (M = 1 - hr(e, l, p), m = hr(e, l, h), I.push(Na[c])) : 86 === c ? (w = 1 - hr(s, f, p), E = 1 - hr(s, l, p), I.push(Sa[c])) : 84 === c ? (w = hr(e, p, f), E = hr(e, p, l), I.push(Sa[c])) : 89 === c ? (b = 1 - hr(s, h, f), _ = hr(s, p, f), I.push(Ca[c])) : 81 === c ? (b = hr(e, f, h), _ = 1 - hr(e, f, p), I.push(Ca[c])) : 96 === c ? (b = hr(s, f, h), x = hr(e, f, h), E = hr(e, p, l), v = hr(s, l, h), I.push(Ma[c]), I.push(Ia[c])) : 74 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), E = 1 - hr(s, l, p), v = 1 - hr(e, h, l), I.push(Ma[c]), I.push(Ia[c])) : 24 === c ? (b = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), m = hr(e, l, h), I.push(Ma[c]), I.push(Ca[c])) : 146 === c ? (b = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), m = 1 - hr(s, h, l), I.push(Ma[c]), I.push(Ca[c])) : 6 === c ? (x = 1 - hr(e, h, f), w = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), I.push(Ia[c]), I.push(Sa[c])) : 164 === c ? (x = hr(s, f, h), w = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), I.push(Ia[c]), I.push(Sa[c])) : 129 === c ? (_ = 1 - hr(e, f, p), M = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Ca[c]), I.push(Na[c])) : 41 === c ? (_ = hr(s, p, f), M = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h), I.push(Ca[c]), I.push(Na[c])) : 66 === c ? (w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = 1 - hr(e, h, l), I.push(Sa[c]), I.push(Ca[c])) : 104 === c ? (w = hr(s, p, f), _ = hr(e, p, f), E = hr(e, p, l), v = hr(s, l, h), I.push(Ca[c]), I.push(La[c])) : 144 === c ? (b = hr(e, f, h), M = hr(e, p, l), E = hr(s, p, l), m = 1 - hr(s, h, l), I.push(Ma[c]), I.push(Pa[c])) : 26 === c ? (b = 1 - hr(s, h, f), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), m = hr(e, l, h), I.push(Ma[c]), I.push(Pa[c])) : 36 === c ? (x = hr(s, f, h), w = hr(e, p, f), v = hr(e, l, h), m = hr(s, l, h), I.push(Ia[c]), I.push(Sa[c])) : 134 === c ? (x = 1 - hr(e, h, f), w = 1 - hr(s, f, p), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Ia[c]), I.push(Sa[c])) : 9 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), _ = hr(s, p, f), M = 1 - hr(e, l, p), I.push(Ma[c]), I.push(Ia[c])) : 161 === c ? (b = hr(s, f, h), x = hr(e, f, h), _ = 1 - hr(e, f, p), M = hr(s, p, l), I.push(Ma[c]), I.push(Ia[c])) : 37 === c ? (x = hr(s, f, h), M = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h), I.push(Ia[c]), I.push(Na[c])) : 133 === c ? (x = 1 - hr(e, h, f), M = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l), I.push(Ia[c]), I.push(Na[c])) : 148 === c ? (w = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), m = 1 - hr(s, h, l), I.push(Sa[c]), I.push(Pa[c])) : 22 === c ? (w = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), m = hr(e, l, h), I.push(Sa[c]), I.push(Pa[c])) : 82 === c ? (b = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), E = 1 - hr(s, l, p), I.push(Ma[c]), I.push(Ca[c])) : 88 === c ? (b = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), E = hr(e, p, l), I.push(Ma[c]), I.push(Ca[c])) : 73 === c ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), _ = hr(s, p, f), v = 1 - hr(e, h, l), I.push(Ma[c]), I.push(Ia[c])) : 97 === c ? (b = hr(s, f, h), x = hr(e, f, h), _ = 1 - hr(e, f, p), v = hr(s, l, h), I.push(Ma[c]), I.push(Ia[c])) : 145 === c ? (b = hr(e, f, h), _ = 1 - hr(e, f, p), M = hr(s, p, l), m = 1 - hr(s, h, l), I.push(Ma[c]), I.push(Na[c])) : 25 === c ? (b = 1 - hr(s, h, f), _ = hr(s, p, f), M = 1 - hr(e, l, p), m = hr(e, l, h), I.push(Ma[c]), I.push(Na[c])) : 70 === c ? (x = 1 - hr(e, h, f), w = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = 1 - hr(e, h, l), I.push(Ia[c]), I.push(Sa[c])) : 100 === c ? (x = hr(s, f, h), w = hr(e, p, f), E = hr(e, p, l), v = hr(s, l, h), I.push(Ia[c]), I.push(Sa[c])) : 34 === c ? (0 === g ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)) : (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)), I.push(Ma[c]), I.push(Ia[c]), I.push(Na[c]), I.push(Pa[c])) : 35 === c ? (4 === g ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)) : (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)), I.push(Ma[c]), I.push(Ia[c]), I.push(Ca[c]), I.push(Pa[c])) : 136 === c ? (0 === g ? (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)) : (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)), I.push(Ma[c]), I.push(Ia[c]), I.push(Na[c]), I.push(Pa[c])) : 153 === c ? (0 === g ? (b = hr(e, f, h), _ = 1 - hr(e, f, p), M = 1 - hr(e, l, p), m = hr(e, l, h)) : (b = 1 - hr(s, h, f), _ = hr(s, p, f), M = hr(s, p, l), m = 1 - hr(s, h, l)), I.push(Ma[c]), I.push(Ca[c])) : 102 === c ? (0 === g ? (x = 1 - hr(e, h, f), w = hr(e, p, f), E = hr(e, p, l), v = 1 - hr(e, h, l)) : (x = hr(s, f, h), w = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = hr(s, l, h)), I.push(Ia[c]), I.push(Pa[c])) : 155 === c ? (4 === g ? (b = hr(e, f, h), _ = 1 - hr(e, f, p), M = 1 - hr(e, l, p), m = hr(e, l, h)) : (b = 1 - hr(s, h, f), _ = hr(s, p, f), M = hr(s, p, l), m = 1 - hr(s, h, l)), I.push(Ma[c]), I.push(Na[c])) : 103 === c ? (4 === g ? (x = 1 - hr(e, h, f), w = hr(e, p, f), E = hr(e, p, l), v = 1 - hr(e, h, l)) : (x = hr(s, f, h), w = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = hr(s, l, h)), I.push(Ia[c]), I.push(Sa[c])) : 152 === c ? (0 === g ? (b = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), m = hr(e, l, h)) : (b = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), m = 1 - hr(s, h, l)), I.push(Ma[c]), I.push(Sa[c]), I.push(Ca[c])) : 156 === c ? (4 === g ? (b = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), m = hr(e, l, h)) : (b = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), m = 1 - hr(s, h, l)), I.push(Ma[c]), I.push(Ca[c]), I.push(Pa[c])) : 137 === c ? (0 === g ? (b = hr(s, f, h), x = hr(e, f, h), _ = 1 - hr(e, f, p), M = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)) : (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), _ = hr(s, p, f), M = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)), I.push(Ma[c]), I.push(Ia[c]), I.push(Ca[c])) : 139 === c ? (4 === g ? (b = hr(s, f, h), x = hr(e, f, h), _ = 1 - hr(e, f, p), M = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)) : (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), _ = hr(s, p, f), M = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)), I.push(Ma[c]), I.push(Ia[c]), I.push(Na[c])) : 98 === c ? (0 === g ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), E = hr(e, p, l), v = 1 - hr(e, h, l)) : (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = hr(s, l, h)), I.push(Ma[c]), I.push(Ia[c]), I.push(Pa[c])) : 99 === c ? (4 === g ? (b = 1 - hr(e, h, f), x = 1 - hr(s, h, f), w = hr(s, p, f), _ = hr(e, p, f), E = hr(e, p, l), v = 1 - hr(e, h, l)) : (b = hr(s, f, h), x = hr(e, f, h), w = 1 - hr(e, f, p), _ = 1 - hr(s, f, p), E = 1 - hr(s, l, p), v = hr(s, l, h)), I.push(Ma[c]), I.push(Ia[c]), I.push(Ca[c])) : 38 === c ? (0 === g ? (x = 1 - hr(e, h, f), w = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)) : (x = hr(s, f, h), w = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)), I.push(Ia[c]), I.push(Na[c]), I.push(Pa[c])) : 39 === c ? (4 === g ? (x = 1 - hr(e, h, f), w = hr(e, p, f), M = hr(e, p, l), E = hr(s, p, l), v = 1 - hr(s, h, l), m = 1 - hr(e, h, l)) : (x = hr(s, f, h), w = 1 - hr(s, f, p), M = 1 - hr(s, l, p), E = 1 - hr(e, l, p), v = hr(e, l, h), m = hr(s, l, h)), I.push(Ia[c]), I.push(Sa[c]), I.push(Pa[c])) : 85 === c && (b = 1, x = 0, w = 1, _ = 0, M = 0, E = 1, v = 0, m = 1),
								(v < 0 || v > 1 || m < 0 || m > 1 || b < 0 || b > 1 || w < 0 || w > 1 || M < 0 || M > 1 || E < 0 || E > 1) && console.log("MarchingSquaresJS-isoBands: " + c + " " + d + " " + l + "," + h + "," + f + "," + p + " " + g + " " + v + " " + m + " " + b + " " + x + " " + w + " " + _ + " " + M + " " + E),
								o.cells[a][u] = {
									cval: c,
									cval_real: d,
									flipped: g,
									topleft: v,
									topright: m,
									righttop: b,
									rightbottom: x,
									bottomright: w,
									bottomleft: _,
									leftbottom: M,
									lefttop: E,
									edges: I
								}
							}
						}
					}
				}
				return o
			} (t, e, n);
			return Gs.polygons ? (Gs.verbose && console.log("MarchingSquaresJS-isoBands: returning single polygons for each grid cell"), u = function(t) {
				var e = [],
				n = 0;
				return t.cells.forEach(function(t, r) {
					t.forEach(function(t, i) {
						if (void 0 !== t) {
							var o = Oa[t.cval](t);
							"object" == typeof o && fr(o) ? "object" == typeof o[0] && fr(o[0]) ? "object" == typeof o[0][0] && fr(o[0][0]) ? o.forEach(function(t) {
								t.forEach(function(t) {
									t[0] += i,
									t[1] += r
								}),
								e[n++] = t
							}) : (o.forEach(function(t) {
								t[0] += i,
								t[1] += r
							}), e[n++] = o) : console.log("MarchingSquaresJS-isoBands: bandcell polygon with malformed coordinates") : console.log("MarchingSquaresJS-isoBands: bandcell polygon with null coordinates")
						}
					})
				}),
				e
			} (c)) : (Gs.verbose && console.log("MarchingSquaresJS-isoBands: returning polygon paths for entire data grid"), u = function(t) {
				for (var e = [], n = t.rows, r = t.cols, i = [], o = 0; o < n; o++) for (var s = 0; s < r; s++) if (void 0 !== t.cells[o][s] && t.cells[o][s].edges.length > 0) {
					var a = t.cells[o][s],
					u = function(t) {
						if (t.edges.length > 0) {
							var e = t.edges[t.edges.length - 1],
							n = t.cval_real;
							switch (e) {
							case 0:
								return n & zs ? {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								}: {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								};
							case 1:
								return n & Ys ? {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								}: {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								};
							case 2:
								return n & Ys ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								};
							case 3:
								return n & Xs ? {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								}: {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								};
							case 4:
								return n & zs ? {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								}: {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								};
							case 5:
								return n & Ys ? {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								}: {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								};
							case 6:
								return n & Ys ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								};
							case 7:
								return n & Xs ? {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								}: {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								};
							case 8:
								return n & Ys ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								};
							case 9:
								return n & Xs ? {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								}: {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								};
							case 10:
								return n & Xs ? {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								}: {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								};
							case 11:
								return n & Us ? {
									p: [1, t.righttop],
									x: -1,
									y: 0,
									o: 1
								}: {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								};
							case 12:
								return n & Ys ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								};
							case 13:
								return n & Xs ? {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								}: {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								};
							case 14:
								return n & Xs ? {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								}: {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								};
							case 15:
								return n & Us ? {
									p: [1, t.rightbottom],
									x: -1,
									y: 0,
									o: 0
								}: {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								};
							case 16:
								return n & Ys ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								};
							case 17:
								return n & Us ? {
									p: [t.bottomright, 0],
									x: 0,
									y: 1,
									o: 1
								}: {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								};
							case 18:
								return n & Xs ? {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								}: {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								};
							case 19:
								return n & Us ? {
									p: [t.bottomleft, 0],
									x: 0,
									y: 1,
									o: 0
								}: {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								};
							case 20:
								return n & Us ? {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								}: {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								};
							case 21:
								return n & zs ? {
									p: [0, t.leftbottom],
									x: 1,
									y: 0,
									o: 0
								}: {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								};
							case 22:
								return n & Us ? {
									p: [t.topleft, 1],
									x: 0,
									y: -1,
									o: 0
								}: {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								};
							case 23:
								return n & zs ? {
									p: [0, t.lefttop],
									x: 1,
									y: 0,
									o: 1
								}: {
									p: [t.topright, 1],
									x: 0,
									y: -1,
									o: 1
								};
							default:
								console.log("MarchingSquaresJS-isoBands: edge index out of range!"),
								console.log(t)
							}
						}
						return null
					} (a),
					c = null,
					l = s,
					h = o;
					null !== u && i.push([u.p[0] + l, u.p[1] + h]);
					do {
						if (null === (c = function(t, e, n, r) {
							var i, o, s, a, u, c = t.cval;
							switch (e) {
							case - 1 : switch (r) {
								case 0:
									i = Ia[c],
									s = ea[c],
									a = na[c],
									u = ra[c];
									break;
								default:
									i = Ma[c],
									s = Ks[c],
									a = $s[c],
									u = ta[c]
								}
								break;
							case 1:
								switch (r) {
								case 0:
									i = Na[c],
									s = pa[c],
									a = da[c],
									u = ga[c];
									break;
								default:
									i = Pa[c],
									s = la[c],
									a = ha[c],
									u = fa[c]
								}
								break;
							default:
								switch (n) {
								case - 1 : switch (r) {
									case 0:
										i = La[c],
										s = Vs[c],
										a = Ws[c],
										u = Hs[c];
										break;
									default:
										i = Aa[c],
										s = Js[c],
										a = Zs[c],
										u = Qs[c]
									}
									break;
								case 1:
									switch (r) {
									case 0:
										i = Ca[c],
										s = ia[c],
										a = oa[c],
										u = sa[c];
										break;
									default:
										i = Sa[c],
										s = aa[c],
										a = ua[c],
										u = ca[c]
									}
								}
							}
							if (o = t.edges.indexOf(i), void 0 === t.edges[o]) return null;
							switch (function(t, e) {
								delete t.edges[e];
								for (var n = e + 1; n < t.edges.length; n++) t.edges[n - 1] = t.edges[n];
								t.edges.pop()
							} (t, o), c = t.cval_real, i) {
							case 0:
								c & zs ? (e = t.topleft, n = 1) : (e = 1, n = t.righttop);
								break;
							case 1:
								c & Ys ? (e = 1, n = t.rightbottom) : (e = t.topleft, n = 1);
								break;
							case 2:
								c & Ys ? (e = t.topleft, n = 1) : (e = t.bottomright, n = 0);
								break;
							case 3:
								c & Xs ? (e = t.bottomleft, n = 0) : (e = t.topleft, n = 1);
								break;
							case 4:
								c & zs ? (e = t.topright, n = 1) : (e = 1, n = t.righttop);
								break;
							case 5:
								c & Ys ? (e = 1, n = t.rightbottom) : (e = t.topright, n = 1);
								break;
							case 6:
								c & Ys ? (e = t.topright, n = 1) : (e = t.bottomright, n = 0);
								break;
							case 7:
								c & Xs ? (e = t.bottomleft, n = 0) : (e = t.topright, n = 1);
								break;
							case 8:
								c & Ys ? (e = 1, n = t.righttop) : (e = t.bottomright, n = 0);
								break;
							case 9:
								c & Xs ? (e = t.bottomleft, n = 0) : (e = 1, n = t.righttop);
								break;
							case 10:
								c & Xs ? (e = 1, n = t.righttop) : (e = 0, n = t.leftbottom);
								break;
							case 11:
								c & Us ? (e = 0, n = t.lefttop) : (e = 1, n = t.righttop);
								break;
							case 12:
								c & Ys ? (e = 1, n = t.rightbottom) : (e = t.bottomright, n = 0);
								break;
							case 13:
								c & Xs ? (e = t.bottomleft, n = 0) : (e = 1, n = t.rightbottom);
								break;
							case 14:
								c & Xs ? (e = 1, n = t.rightbottom) : (e = 0, n = t.leftbottom);
								break;
							case 15:
								c & Us ? (e = 0, n = t.lefttop) : (e = 1, n = t.rightbottom);
								break;
							case 16:
								c & Ys ? (e = 0, n = t.leftbottom) : (e = t.bottomright, n = 0);
								break;
							case 17:
								c & Us ? (e = 0, n = t.lefttop) : (e = t.bottomright, n = 0);
								break;
							case 18:
								c & Xs ? (e = t.bottomleft, n = 0) : (e = 0, n = t.leftbottom);
								break;
							case 19:
								c & Us ? (e = 0, n = t.lefttop) : (e = t.bottomleft, n = 0);
								break;
							case 20:
								c & Us ? (e = 0, n = t.leftbottom) : (e = t.topleft, n = 1);
								break;
							case 21:
								c & zs ? (e = t.topright, n = 1) : (e = 0, n = t.leftbottom);
								break;
							case 22:
								c & Us ? (e = 0, n = t.lefttop) : (e = t.topleft, n = 1);
								break;
							case 23:
								c & zs ? (e = t.topright, n = 1) : (e = 0, n = t.lefttop);
								break;
							default:
								return console.log("MarchingSquaresJS-isoBands: edge index out of range!"),
								console.log(t),
								null
							}
							return void 0 !== e && void 0 !== n && void 0 !== s && void 0 !== a && void 0 !== u || (console.log("MarchingSquaresJS-isoBands: undefined value!"), console.log(t), console.log(e + " " + n + " " + s + " " + a + " " + u)),
							{
								p: [e, n],
								x: s,
								y: a,
								o: u
							}
						} (t.cells[h][l], u.x, u.y, u.o))) break;
						if (i.push([c.p[0] + l, c.p[1] + h]), l += c.x, h += c.y, u = c, h < 0 || h >= n || l < 0 || l >= r || void 0 === t.cells[h][l]) {
							l -= c.x,
							h -= c.y;
							var f = function(t, e, n, r, i, o) {
								for (var s = t.cells[n][e], a = s.cval_real, u = e + r, c = n + i, l = [], h = !1; ! h;) {
									if (void 0 === t.cells[c] || void 0 === t.cells[c][u]) if (c -= i, u -= r, s = t.cells[c][u], a = s.cval_real, -1 === i) if (0 === o) if (a & Xs) l.push([u, c]),
									r = -1,
									i = 0,
									o = 0;
									else {
										if (! (a & Ys)) {
											l.push([u + s.bottomright, c]),
											r = 0,
											i = 1,
											o = 1,
											h = !0;
											break
										}
										l.push([u + 1, c]),
										r = 1,
										i = 0,
										o = 0
									} else {
										if (! (a & Xs)) {
											if (a & Ys) {
												l.push([u + s.bottomright, c]),
												r = 0,
												i = 1,
												o = 1,
												h = !0;
												break
											}
											l.push([u + s.bottomleft, c]),
											r = 0,
											i = 1,
											o = 0,
											h = !0;
											break
										}
										l.push([u, c]),
										r = -1,
										i = 0,
										o = 0
									} else if (1 === i) if (0 === o) {
										if (! (a & zs)) {
											if (a & Us) {
												l.push([u + s.topleft, c + 1]),
												r = 0,
												i = -1,
												o = 0,
												h = !0;
												break
											}
											l.push([u + s.topright, c + 1]),
											r = 0,
											i = -1,
											o = 1,
											h = !0;
											break
										}
										l.push([u + 1, c + 1]),
										r = 1,
										i = 0,
										o = 1
									} else l.push([u + 1, c + 1]),
									r = 1,
									i = 0,
									o = 1;
									else if ( - 1 === r) if (0 === o) {
										if (! (a & Us)) {
											if (a & Xs) {
												l.push([u, c + s.leftbottom]),
												r = 1,
												i = 0,
												o = 0,
												h = !0;
												break
											}
											l.push([u, c + s.lefttop]),
											r = 1,
											i = 0,
											o = 1,
											h = !0;
											break
										}
										l.push([u, c + 1]),
										r = 0,
										i = 1,
										o = 0
									} else {
										if (! (a & Us)) {
											console.log("MarchingSquaresJS-isoBands: wtf");
											break
										}
										l.push([u, c + 1]),
										r = 0,
										i = 1,
										o = 0
									} else {
										if (1 !== r) {
											console.log("MarchingSquaresJS-isoBands: we came from nowhere!");
											break
										}
										if (0 === o) {
											if (! (a & Ys)) {
												l.push([u + 1, c + s.rightbottom]),
												r = -1,
												i = 0,
												o = 0,
												h = !0;
												break
											}
											l.push([u + 1, c]),
											r = 0,
											i = -1,
											o = 1
										} else {
											if (! (a & Ys)) {
												if (a & zs) {
													l.push([u + 1, c + s.righttop]),
													r = -1,
													i = 0,
													o = 1;
													break
												}
												l.push([u + 1, c + s.rightbottom]),
												r = -1,
												i = 0,
												o = 0,
												h = !0;
												break
											}
											l.push([u + 1, c]),
											r = 0,
											i = -1,
											o = 1
										}
									} else if (s = t.cells[c][u], a = s.cval_real, -1 === r) if (0 === o) if (void 0 !== t.cells[c - 1] && void 0 !== t.cells[c - 1][u]) r = 0,
									i = -1,
									o = 1;
									else {
										if (! (a & Xs)) {
											l.push([u + s.bottomright, c]),
											r = 0,
											i = 1,
											o = 1,
											h = !0;
											break
										}
										l.push([u, c])
									} else {
										if (! (a & Us)) {
											console.log("MarchingSquaresJS-isoBands: found entry from top at " + u + "," + c);
											break
										}
										console.log("MarchingSquaresJS-isoBands: proceeding in x-direction!")
									} else if (1 === r) {
										if (0 === o) {
											console.log("MarchingSquaresJS-isoBands: wtf");
											break
										}
										if (void 0 !== t.cells[c + 1] && void 0 !== t.cells[c + 1][u]) r = 0,
										i = 1,
										o = 0;
										else {
											if (! (a & zs)) {
												l.push([u + s.topleft, c + 1]),
												r = 0,
												i = -1,
												o = 0,
												h = !0;
												break
											}
											l.push([u + 1, c + 1]),
											r = 1,
											i = 0,
											o = 1
										}
									} else if ( - 1 === i) {
										if (1 !== o) {
											console.log("MarchingSquaresJS-isoBands: wtf");
											break
										}
										if (void 0 !== t.cells[c][u + 1]) r = 1,
										i = 0,
										o = 1;
										else {
											if (! (a & Ys)) {
												l.push([u + 1, c + s.righttop]),
												r = -1,
												i = 0,
												o = 1,
												h = !0;
												break
											}
											l.push([u + 1, c]),
											r = 0,
											i = -1,
											o = 1
										}
									} else {
										if (1 !== i) {
											console.log("MarchingSquaresJS-isoBands: where did we came from???");
											break
										}
										if (0 !== o) {
											console.log("MarchingSquaresJS-isoBands: wtf");
											break
										}
										if (void 0 !== t.cells[c][u - 1]) r = -1,
										i = 0,
										o = 0;
										else {
											if (! (a & Us)) {
												l.push([u, c + s.leftbottom]),
												r = 1,
												i = 0,
												o = 0,
												h = !0;
												break
											}
											l.push([u, c + 1]),
											r = 0,
											i = 1,
											o = 0
										}
									}
									if (u += r, c += i, u === e && c === n) break
								}
								return {
									path: l,
									i: u,
									j: c,
									x: r,
									y: i,
									o: o
								}
							} (t, l, h, c.x, c.y, c.o);
							if (null === f) break;
							f.path.forEach(function(t) {
								i.push(t)
							}),
							l = f.i,
							h = f.j,
							u = f
						}
					} while ( void 0 !== t . cells [ h ][l] && t.cells[h][l].edges.length > 0);
					e.push(i),
					i = [],
					t.cells[o][s].edges.length > 0 && s--
				}
				return e
			} (c)),
			"function" == typeof Gs.successCallback && Gs.successCallback(u),
			u
		}
		function hr(t, e, n) {
			return (t - e) / (n - e)
		}
		function fr(t) {
			return t.constructor.toString().indexOf("Array") > -1
		}
		function pr(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.pivot,
			i = n.mutate;
			if (!t) throw new Error("geojson is required");
			if (void 0 === e || null === e || isNaN(e)) throw new Error("angle is required");
			return 0 === e ? t: (r || (r = ye(t)), !1 !== i && void 0 !== i || (t = jt(t)), C(t,
			function(t) {
				var n = sn(r, t) + e,
				i = un(r, t),
				o = Y(nr(r, i, n));
				t[0] = o[0],
				t[1] = o[1]
			}), t)
		}
		function dr(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.origin,
			i = n.mutate;
			if (!t) throw new Error("geojson required");
			if ("number" != typeof e || 0 === e) throw new Error("invalid factor");
			var o = Array.isArray(r) || "object" == typeof r;
			return ! 0 !== i && (t = jt(t)),
			"FeatureCollection" !== t.type || o ? gr(t, e, r) : (A(t,
			function(n, i) {
				t.features[i] = gr(n, e, r)
			}), t)
		}
		function gr(t, e, n) {
			var i = "Point" === Q(t);
			return n = function(t, e) {
				if (void 0 !== e && null !== e || (e = "centroid"), Array.isArray(e) || "object" == typeof e) return z(e);
				var n = t.bbox ? t.bbox: U(t),
				i = n[0],
				o = n[1],
				s = n[2],
				a = n[3];
				switch (e) {
				case "sw":
				case "southwest":
				case "westsouth":
				case "bottomleft":
					return r([i, o]);
				case "se":
				case "southeast":
				case "eastsouth":
				case "bottomright":
					return r([s, o]);
				case "nw":
				case "northwest":
				case "westnorth":
				case "topleft":
					return r([i, a]);
				case "ne":
				case "northeast":
				case "eastnorth":
				case "topright":
					return r([s, a]);
				case "center":
					return ge(t);
				case void 0:
				case null:
				case "centroid":
					return ye(t);
				default:
					throw new Error("invalid origin")
				}
			} (t, n),
			1 === e || i ? t: (C(t,
			function(t) {
				var r = un(n, t),
				i = sn(n, t),
				o = Y(nr(n, r * e, i));
				t[0] = o[0],
				t[1] = o[1],
				3 === t.length && (t[2] *= e)
			}), t)
		}
		function yr(t) {
			var e = t[0],
			n = t[1];
			return [n[0] - e[0], n[1] - e[1]]
		}
		function vr(t, e) {
			return t[0] * e[1] - e[0] * t[1]
		}
		function mr(t, e) {
			return !
			function(t, e) {
				return 0 === vr(yr(t), yr(e))
			} (t, e) &&
			function(t, e) {
				var n = t[0],
				r = yr(t),
				i = e[0],
				o = yr(e),
				s = vr(r, o);
				return function(t, e) {
					return [t[0] + e[0], t[1] + e[1]]
				} (n,
				function(t, e) {
					return [t * e[0], t * e[1]]
				} (vr(function(t, e) {
					return [t[0] - e[0], t[1] - e[1]]
				} (i, n), o) / s, r))
			} (t, e)
		}
		function _r(t, e, n) {
			var r = [],
			i = v(e, n),
			o = Y(t),
			s = [];
			return o.forEach(function(t, e) {
				if (e !== o.length - 1) {
					var n = function(t, e, n) {
						var r = Math.sqrt((t[0] - e[0]) * (t[0] - e[0]) + (t[1] - e[1]) * (t[1] - e[1])),
						i = t[0] + n * (e[1] - t[1]) / r,
						o = e[0] + n * (e[1] - t[1]) / r;
						return [[i, t[1] + n * (t[0] - e[0]) / r], [o, e[1] + n * (t[0] - e[0]) / r]]
					} (t, o[e + 1], i);
					if (r.push(n), e > 0) {
						var a = r[e - 1],
						u = mr(n, a); ! 1 !== u && (a[1] = u, n[0] = u),
						s.push(a[0]),
						e === o.length - 2 && (s.push(n[0]), s.push(n[1]))
					}
					2 === o.length && (s.push(n[0]), s.push(n[1]))
				}
			}),
			a(s, t.properties)
		}
		function wr(t, e, n) {
			var r = e[0] - t[0],
			i = e[1] - t[1],
			o = n[0] - e[0],
			s = n[1] - e[1];
			return Math.sign(r * s - o * i)
		}
		function br(t, e) {
			return e.geometry.coordinates[0].every(function(e) {
				return Lt(r(e), t)
			})
		}
		function xr(t, e) {
			for (var n = 0; n < t.coordinates.length - 1; n++) if (function(t, e, n) {
				var r = n[0] - t[0],
				i = n[1] - t[1],
				o = e[0] - t[0],
				s = e[1] - t[1];
				return r * s - i * o == 0 && (Math.abs(o) >= Math.abs(s) ? o > 0 ? t[0] <= n[0] && n[0] <= e[0] : e[0] <= n[0] && n[0] <= t[0] : s > 0 ? t[1] <= n[1] && n[1] <= e[1] : e[1] <= n[1] && n[1] <= t[1])
			} (t.coordinates[n], t.coordinates[n + 1], e.coordinates)) return ! 0;
			return ! 1
		}
		function Er(t, e) {
			return nn(e, Bn(t)).features.length > 0
		}
		function Mr(t, e) {
			return ! (t[0] > e[0] || t[2] < e[2] || t[1] > e[1] || t[3] < e[3])
		}
		function Ir(t, e) {
			return t[0] === e[0] && t[1] === e[1]
		}
		function Sr(t, e) {
			for (var n = !1,
			r = !1,
			i = t.coordinates.length,
			o = 0; o < i && !n && !r;) {
				for (var s = 0; s < e.coordinates.length - 1; s++) {
					var a = !0;
					0 !== s && s !== e.coordinates.length - 2 || (a = !1),
					Pr(e.coordinates[s], e.coordinates[s + 1], t.coordinates[o], a) ? n = !0 : r = !0
				}
				o++
			}
			return n && r
		}
		function Cr(t, e) {
			return nn(t, Bn(e)).features.length > 0
		}
		function Nr(t, e) {
			for (var n = !1,
			i = !1,
			o = t.coordinates[0].length, s = 0; s < o && n && i;) Lt(r(t.coordinates[0][s]), e) ? n = !0 : i = !0,
			s++;
			return i && i
		}
		function Pr(t, e, n, r) {
			var i = n[0] - t[0],
			o = n[1] - t[1],
			s = e[0] - t[0],
			a = e[1] - t[1];
			return 0 == i * a - o * s && (r ? Math.abs(s) >= Math.abs(a) ? s > 0 ? t[0] <= n[0] && n[0] <= e[0] : e[0] <= n[0] && n[0] <= t[0] : a > 0 ? t[1] <= n[1] && n[1] <= e[1] : e[1] <= n[1] && n[1] <= t[1] : Math.abs(s) >= Math.abs(a) ? s > 0 ? t[0] < n[0] && n[0] < e[0] : e[0] < n[0] && n[0] < t[0] : a > 0 ? t[1] < n[1] && n[1] < e[1] : e[1] < n[1] && n[1] < t[1])
		}
		function Lr(t) {
			return t.coordinates.map(function(e) {
				return {
					type: t.type.replace("Multi", ""),
					coordinates: e
				}
			})
		}
		function Ar(t, e) {
			return t.hasOwnProperty("coordinates") ? t.coordinates.length === e.coordinates.length: t.length === e.length
		}
		function Or(t, e) {
			return Ba(t, e, {
				strict: !0
			})
		}
		function Tr(t, e) {
			if (!t) throw new Error("feature1 is required");
			if (!e) throw new Error("feature2 is required");
			var n = Q(t);
			if (n !== Q(e)) throw new Error("features must be of the same type");
			if ("Point" === n) throw new Error("Point geometry not supported");
			if (new Ua({
				precision: 6
			}).compare(t, e)) return ! 1;
			var r = 0;
			switch (n) {
			case "MultiPoint":
				var i = T(t),
				o = T(e);
				i.forEach(function(t) {
					o.forEach(function(e) {
						t[0] === e[0] && t[1] === e[1] && r++
					})
				});
				break;
			case "LineString":
			case "MultiLineString":
				j(t,
				function(t) {
					j(e,
					function(e) {
						$n(t, e).features.length && r++
					})
				});
				break;
			case "Polygon":
			case "MultiPolygon":
				j(t,
				function(t) {
					j(e,
					function(e) {
						nn(t, e).features.length && r++
					})
				})
			}
			return r > 0
		}
		function Rr(t, e, n) {
			n = n || [];
			for (var r = 0; r < t; r++) n[r] = e;
			return n
		}
		function Dr(t, e) {
			if (t.geometry && t.geometry.type) return t.geometry.type;
			if (t.type) return t.type;
			throw new Error("Invalid GeoJSON object for " + e)
		}
		function kr(t) {
			for (var e = t,
			n = []; e.parent;) n.unshift(e),
			e = e.parent;
			return n
		}
		function Fr(t, e) {
			e = e || {},
			this.nodes = [],
			this.diagonal = !!e.diagonal,
			this.grid = [];
			for (var n = 0; n < t.length; n++) {
				this.grid[n] = [];
				for (var r = 0,
				i = t[n]; r < i.length; r++) {
					var o = new jr(n, r, i[r]);
					this.grid[n][r] = o,
					this.nodes.push(o)
				}
			}
			this.init()
		}
		function jr(t, e, n) {
			this.x = t,
			this.y = e,
			this.weight = n
		}
		function qr(t) {
			this.content = [],
			this.scoreFunction = t
		}
		function Br(t) {
			return t[0]
		}
		function Gr(t) {
			return t[1]
		}
		function Ur() {
			this._ = null
		}
		function zr(t) {
			t.U = t.C = t.L = t.R = t.P = t.N = null
		}
		function Yr(t, e) {
			var n = e,
			r = e.R,
			i = n.U;
			i ? i.L === n ? i.L = r: i.R = r: t._ = r,
			r.U = i,
			n.U = r,
			n.R = r.L,
			n.R && (n.R.U = n),
			r.L = n
		}
		function Xr(t, e) {
			var n = e,
			r = e.L,
			i = n.U;
			i ? i.L === n ? i.L = r: i.R = r: t._ = r,
			r.U = i,
			n.U = r,
			n.L = r.R,
			n.L && (n.L.U = n),
			r.R = n
		}
		function Vr(t) {
			for (; t.L;) t = t.L;
			return t
		}
		function Wr(t, e, n, r) {
			var i = [null, null],
			o = au.push(i) - 1;
			return i.left = t,
			i.right = e,
			n && Jr(i, t, e, n),
			r && Jr(i, e, t, r),
			ou[t.index].halfedges.push(o),
			ou[e.index].halfedges.push(o),
			i
		}
		function Hr(t, e, n) {
			var r = [e, n];
			return r.left = t,
			r
		}
		function Jr(t, e, n, r) {
			t[0] || t[1] ? t.left === n ? t[1] = r: t[0] = r: (t[0] = r, t.left = e, t.right = n)
		}
		function Zr(t, e, n, r, i) {
			var o, s = t[0],
			a = t[1],
			u = s[0],
			c = s[1],
			l = 0,
			h = 1,
			f = a[0] - u,
			p = a[1] - c;
			if (o = e - u, f || !(o > 0)) {
				if (o /= f, f < 0) {
					if (o < l) return;
					o < h && (h = o)
				} else if (f > 0) {
					if (o > h) return;
					o > l && (l = o)
				}
				if (o = r - u, f || !(o < 0)) {
					if (o /= f, f < 0) {
						if (o > h) return;
						o > l && (l = o)
					} else if (f > 0) {
						if (o < l) return;
						o < h && (h = o)
					}
					if (o = n - c, p || !(o > 0)) {
						if (o /= p, p < 0) {
							if (o < l) return;
							o < h && (h = o)
						} else if (p > 0) {
							if (o > h) return;
							o > l && (l = o)
						}
						if (o = i - c, p || !(o < 0)) {
							if (o /= p, p < 0) {
								if (o > h) return;
								o > l && (l = o)
							} else if (p > 0) {
								if (o < l) return;
								o < h && (h = o)
							}
							return ! (l > 0 || h < 1) || (l > 0 && (t[0] = [u + l * f, c + l * p]), h < 1 && (t[1] = [u + h * f, c + h * p]), !0)
						}
					}
				}
			}
		}
		function Qr(t, e, n, r, i) {
			var o = t[1];
			if (o) return ! 0;
			var s, a, u = t[0],
			c = t.left,
			l = t.right,
			h = c[0],
			f = c[1],
			p = l[0],
			d = l[1],
			g = (h + p) / 2,
			y = (f + d) / 2;
			if (d === f) {
				if (g < e || g >= r) return;
				if (h > p) {
					if (u) {
						if (u[1] >= i) return
					} else u = [g, n];
					o = [g, i]
				} else {
					if (u) {
						if (u[1] < n) return
					} else u = [g, i];
					o = [g, n]
				}
			} else if (s = (h - p) / (d - f), a = y - s * g, s < -1 || s > 1) if (h > p) {
				if (u) {
					if (u[1] >= i) return
				} else u = [(n - a) / s, n];
				o = [(i - a) / s, i]
			} else {
				if (u) {
					if (u[1] < n) return
				} else u = [(i - a) / s, i];
				o = [(n - a) / s, n]
			} else if (f < d) {
				if (u) {
					if (u[0] >= r) return
				} else u = [e, s * e + a];
				o = [r, s * r + a]
			} else {
				if (u) {
					if (u[0] < e) return
				} else u = [r, s * r + a];
				o = [e, s * e + a]
			}
			return t[0] = u,
			t[1] = o,
			!0
		}
		function Kr(t, e) {
			var n = t.site,
			r = e.left,
			i = e.right;
			return n === i && (i = r, r = n),
			i ? Math.atan2(i[1] - r[1], i[0] - r[0]) : (n === r ? (r = e[1], i = e[0]) : (r = e[0], i = e[1]), Math.atan2(r[0] - i[0], i[1] - r[1]))
		}
		function $r(t, e) {
			return e[ + (e.left !== t.site)]
		}
		function ti(t, e) {
			return e[ + (e.left === t.site)]
		}
		function ei(t) {
			var e = t.P,
			n = t.N;
			if (e && n) {
				var r = e.site,
				i = t.site,
				o = n.site;
				if (r !== o) {
					var s = i[0],
					a = i[1],
					u = r[0] - s,
					c = r[1] - a,
					l = o[0] - s,
					h = o[1] - a,
					f = 2 * (u * h - c * l);
					if (! (f >= -hu)) {
						var p = u * u + c * c,
						d = l * l + h * h,
						g = (h * p - c * d) / f,
						y = (u * d - l * p) / f,
						v = uu.pop() || new
						function() {
							zr(this),
							this.x = this.y = this.arc = this.site = this.cy = null
						};
						v.arc = t,
						v.site = i,
						v.x = g + s,
						v.y = (v.cy = y + a) + Math.sqrt(g * g + y * y),
						t.circle = v;
						for (var m = null,
						_ = su._; _;) if (v.y < _.y || v.y === _.y && v.x <= _.x) {
							if (!_.L) {
								m = _.P;
								break
							}
							_ = _.L
						} else {
							if (!_.R) {
								m = _;
								break
							}
							_ = _.R
						}
						su.insert(m, v),
						m || (ru = v)
					}
				}
			}
		}
		function ni(t) {
			var e = t.circle;
			e && (e.P || (ru = e.N), su.remove(e), uu.push(e), zr(e), t.circle = null)
		}
		function ri(t) {
			var e = cu.pop() || new
			function() {
				zr(this),
				this.edge = this.site = this.circle = null
			};
			return e.site = t,
			e
		}
		function ii(t) {
			ni(t),
			iu.remove(t),
			cu.push(t),
			zr(t)
		}
		function oi(t) {
			var e = t.circle,
			n = e.x,
			r = e.cy,
			i = [n, r],
			o = t.P,
			s = t.N,
			a = [t];
			ii(t);
			for (var u = o; u.circle && Math.abs(n - u.circle.x) < lu && Math.abs(r - u.circle.cy) < lu;) o = u.P,
			a.unshift(u),
			ii(u),
			u = o;
			a.unshift(u),
			ni(u);
			for (var c = s; c.circle && Math.abs(n - c.circle.x) < lu && Math.abs(r - c.circle.cy) < lu;) s = c.N,
			a.push(c),
			ii(c),
			c = s;
			a.push(c),
			ni(c);
			var l, h = a.length;
			for (l = 1; l < h; ++l) c = a[l],
			u = a[l - 1],
			Jr(c.edge, u.site, c.site, i);
			u = a[0],
			(c = a[h - 1]).edge = Wr(u.site, c.site, null, i),
			ei(u),
			ei(c)
		}
		function si(t) {
			for (var e, n, r, i, o = t[0], s = t[1], a = iu._; a;) if ((r = ai(a, s) - o) > lu) a = a.L;
			else {
				if (! ((i = o -
				function(t, e) {
					var n = t.N;
					if (n) return ai(n, e);
					var r = t.site;
					return r[1] === e ? r[0] : 1 / 0
				} (a, s)) > lu)) {
					r > -lu ? (e = a.P, n = a) : i > -lu ? (e = a, n = a.N) : e = n = a;
					break
				}
				if (!a.R) {
					e = a;
					break
				}
				a = a.R
			} !
			function(t) {
				ou[t.index] = {
					site: t,
					halfedges: []
				}
			} (t);
			var u = ri(t);
			if (iu.insert(e, u), e || n) {
				if (e === n) return ni(e),
				n = ri(e.site),
				iu.insert(u, n),
				u.edge = n.edge = Wr(e.site, u.site),
				ei(e),
				void ei(n);
				if (n) {
					ni(e),
					ni(n);
					var c = e.site,
					l = c[0],
					h = c[1],
					f = t[0] - l,
					p = t[1] - h,
					d = n.site,
					g = d[0] - l,
					y = d[1] - h,
					v = 2 * (f * y - p * g),
					m = f * f + p * p,
					_ = g * g + y * y,
					w = [(y * m - p * _) / v + l, (f * _ - g * m) / v + h];
					Jr(n.edge, c, d, w),
					u.edge = Wr(c, t, null, w),
					n.edge = Wr(t, d, null, w),
					ei(e),
					ei(n)
				} else u.edge = Wr(e.site, u.site)
			}
		}
		function ai(t, e) {
			var n = t.site,
			r = n[0],
			i = n[1],
			o = i - e;
			if (!o) return r;
			var s = t.P;
			if (!s) return - 1 / 0;
			var a = (n = s.site)[0],
			u = n[1],
			c = u - e;
			if (!c) return a;
			var l = a - r,
			h = 1 / o - 1 / c,
			f = l / c;
			return h ? ( - f + Math.sqrt(f * f - 2 * h * (l * l / ( - 2 * c) - u + c / 2 + i - o / 2))) / h + r: (r + a) / 2
		}
		function ui(t, e, n) {
			return (t[0] - n[0]) * (e[1] - t[1]) - (t[0] - e[0]) * (n[1] - t[1])
		}
		function ci(t, e) {
			return e[1] - t[1] || e[0] - t[0]
		}
		function li(t, e) {
			var n, r, i, o = t.sort(ci).pop();
			for (au = [], ou = new Array(t.length), iu = new Ur, su = new Ur;;) if (i = ru, o && (!i || o[1] < i.y || o[1] === i.y && o[0] < i.x)) o[0] === n && o[1] === r || (si(o), n = o[0], r = o[1]),
			o = t.pop();
			else {
				if (!i) break;
				oi(i.arc)
			}
			if (function() {
				for (var t, e, n, r, i = 0,
				o = ou.length; i < o; ++i) if ((t = ou[i]) && (r = (e = t.halfedges).length)) {
					var s = new Array(r),
					a = new Array(r);
					for (n = 0; n < r; ++n) s[n] = n,
					a[n] = Kr(t, au[e[n]]);
					for (s.sort(function(t, e) {
						return a[e] - a[t]
					}), n = 0; n < r; ++n) a[n] = e[s[n]];
					for (n = 0; n < r; ++n) e[n] = a[n]
				}
			} (), e) {
				var s = +e[0][0],
				a = +e[0][1],
				u = +e[1][0],
				c = +e[1][1]; !
				function(t, e, n, r) {
					for (var i, o = au.length; o--;) Qr(i = au[o], t, e, n, r) && Zr(i, t, e, n, r) && (Math.abs(i[0][0] - i[1][0]) > lu || Math.abs(i[0][1] - i[1][1]) > lu) || delete au[o]
				} (s, a, u, c),
				function(t, e, n, r) {
					var i, o, s, a, u, c, l, h, f, p, d, g, y = ou.length,
					v = !0;
					for (i = 0; i < y; ++i) if (o = ou[i]) {
						for (s = o.site, a = (u = o.halfedges).length; a--;) au[u[a]] || u.splice(a, 1);
						for (a = 0, c = u.length; a < c;) d = (p = ti(o, au[u[a]]))[0],
						g = p[1],
						h = (l = $r(o, au[u[++a % c]]))[0],
						f = l[1],
						(Math.abs(d - h) > lu || Math.abs(g - f) > lu) && (u.splice(a, 0, au.push(Hr(s, p, Math.abs(d - t) < lu && r - g > lu ? [t, Math.abs(h - t) < lu ? f: r] : Math.abs(g - r) < lu && n - d > lu ? [Math.abs(f - r) < lu ? h: n, r] : Math.abs(d - n) < lu && g - e > lu ? [n, Math.abs(h - n) < lu ? f: e] : Math.abs(g - e) < lu && d - t > lu ? [Math.abs(f - e) < lu ? h: t, e] : null)) - 1), ++c);
						c && (v = !1)
					}
					if (v) {
						var m, _, w, b = 1 / 0;
						for (i = 0, v = null; i < y; ++i)(o = ou[i]) && (w = (m = (s = o.site)[0] - t) * m + (_ = s[1] - e) * _) < b && (b = w, v = o);
						if (v) {
							var x = [t, e],
							E = [t, r],
							M = [n, r],
							I = [n, e];
							v.halfedges.push(au.push(Hr(s = v.site, x, E)) - 1, au.push(Hr(s, E, M)) - 1, au.push(Hr(s, M, I)) - 1, au.push(Hr(s, I, x)) - 1)
						}
					}
					for (i = 0; i < y; ++i)(o = ou[i]) && (o.halfedges.length || delete ou[i])
				} (s, a, u, c)
			}
			this.edges = au,
			this.cells = ou,
			iu = su = au = ou = null
		}
		function hi(t) {
			return (t = t.slice()).push(t[0]),
			o([t])
		}
		function fi(t, e, n, r) {
			var i = (r = r || {}).steps || 64,
			s = r.units || "kilometers",
			a = r.angle || 0,
			u = r.pivot || t,
			c = r.properties || t.properties || {};
			if (!t) throw new Error("center is required");
			if (!e) throw new Error("xSemiAxis is required");
			if (!n) throw new Error("ySemiAxis is required");
			if (!M(r)) throw new Error("options must be an object");
			if (!E(i)) throw new Error("steps must be a number");
			if (!E(a)) throw new Error("angle must be a number");
			var l = z(t);
			if ("degrees" === s) var h = w(a);
			else e = nr(t, e, 90, {
				units: s
			}),
			n = nr(t, n, 0, {
				units: s
			}),
			e = z(e)[0] - l[0],
			n = z(n)[1] - l[1];
			for (var f = [], p = 0; p < i; p += 1) {
				var d = -360 * p / i,
				g = e * n / Math.sqrt(Math.pow(n, 2) + Math.pow(e, 2) * Math.pow(pi(d), 2)),
				y = e * n / Math.sqrt(Math.pow(e, 2) + Math.pow(n, 2) / Math.pow(pi(d), 2));
				if (d < -90 && d >= -270 && (g = -g), d < -180 && d >= -360 && (y = -y), "degrees" === s) {
					var v = g * Math.cos(h) + y * Math.sin(h),
					m = y * Math.cos(h) - g * Math.sin(h);
					g = v,
					y = m
				}
				f.push([g + l[0], y + l[1]])
			}
			return f.push(f[0]),
			"degrees" === s ? o([f], c) : pr(o([f], c), a, {
				pivot: u
			})
		}
		function pi(t) {
			var e = t * Math.PI / 180;
			return Math.tan(e)
		}
		function di(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.properties,
			i = e.weight;
			if (!t) throw new Error("geojson is required");
			var o = 0,
			s = 0,
			a = 0;
			return R(t,
			function(t, e, n) {
				var r = n[i];
				if (r = void 0 === r || null === r ? 1 : r, !E(r)) throw new Error("weight value must be a number for feature index " + e); (r = Number(r)) > 0 && C(t,
				function(t) {
					o += t[0] * r,
					s += t[1] * r,
					a += r
				})
			}),
			r([o / a, s / a], n)
		}
		function gi(t, e, n, i) {
			var o = n.properties.tolerance || .001,
			s = 0,
			a = 0,
			u = 0,
			c = 0;
			if (A(n,
			function(e) {
				var n = e.properties.weight,
				r = void 0 === n || null === n ? 1 : n;
				if (r = Number(r), !E(r)) throw new Error("weight value must be a number");
				if (r > 0) {
					c += 1;
					var i = r * Ft(e, t);
					0 === i && (i = 1);
					var o = r / i;
					s += e.geometry.coordinates[0] * o,
					a += e.geometry.coordinates[1] * o,
					u += o
				}
			}), c < 1) throw new Error("no features to measure");
			var l = s / u,
			h = a / u;
			return 1 === c || 0 === i || Math.abs(l - e[0]) < o && Math.abs(h - e[1]) < o ? r([l, h], {
				medianCandidates: n.properties.medianCandidates
			}) : (n.properties.medianCandidates.push([l, h]), gi([l, h], t, n, i - 1))
		}
		function yi(t, e) {
			return {
				x: t[0] - e[0],
				y: t[1] - e[1]
			}
		}
		function vi(t) {
			if (M(t) && (t = t.bbox), t && !Array.isArray(t)) throw new Error("bbox is invalid");
			return t ?
			function(t) {
				return [Math.random() * (t[2] - t[0]) + t[0], Math.random() * (t[3] - t[1]) + t[1]]
			} (t) : [360 * bi(), 180 * bi()]
		}
		function mi(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.bbox;
			void 0 !== t && null !== t || (t = 1);
			for (var i = [], o = 0; o < t; o++) i.push(r(vi(n)));
			return c(i)
		}
		function _i(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.bbox,
			r = e.num_vertices,
			i = e.max_radial_length;
			void 0 !== t && null !== t || (t = 1),
			E(r) || (r = 10),
			E(i) || (i = 10);
			for (var s = [], a = 0; a < t; a++) {
				var u = [],
				l = Array.apply(null, new Array(r + 1)).map(Math.random);
				l.forEach(function(t, e, n) {
					n[e] = e > 0 ? t + n[e - 1] : t
				}),
				l.forEach(function(t) {
					t = 2 * t * Math.PI / l[l.length - 1];
					var e = Math.random();
					u.push([e * i * Math.sin(t), e * i * Math.cos(t)])
				}),
				u[u.length - 1] = u[0],
				u = u.map(function(t) {
					return function(e) {
						return [e[0] + t[0], e[1] + t[1]]
					}
				} (vi(n))),
				s.push(o([u]))
			}
			return c(s)
		}
		function wi(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.bbox,
			r = e.num_vertices,
			i = e.max_length,
			o = e.max_rotation;
			void 0 !== t && null !== t || (t = 1),
			(!E(r) || r < 2) && (r = 10),
			E(i) || (i = 1e-4),
			E(o) || (o = Math.PI / 8);
			for (var s = [], u = 0; u < t; u++) {
				for (var l = [vi(n)], h = 0; h < r - 1; h++) {
					var f = (0 === h ? 2 * Math.random() * Math.PI: Math.tan((l[h][1] - l[h - 1][1]) / (l[h][0] - l[h - 1][0]))) + (Math.random() - .5) * o * 2,
					p = Math.random() * i;
					l.push([l[h][0] + p * Math.cos(f), l[h][1] + p * Math.sin(f)])
				}
				s.push(a(l))
			}
			return c(s)
		}
		function bi() {
			return Math.random() - .5
		}
		function xi(t, e) {
			if (!t) throw new Error("geojson is required");
			if ("FeatureCollection" !== t.type) throw new Error("geojson must be a FeatureCollection");
			if (void 0 === e || null === e) throw new Error("filter is required");
			var n = [];
			return A(t,
			function(t) {
				Si(t.properties, e) && n.push(t)
			}),
			c(n)
		}
		function Ei(t, e, n) {
			if (!t) throw new Error("geojson is required");
			if ("FeatureCollection" !== t.type) throw new Error("geojson must be a FeatureCollection");
			if (void 0 === e || null === e) throw new Error("property is required");
			for (var r = Ii(t, e), i = Object.keys(r), o = 0; o < i.length; o++) {
				for (var s = i[o], a = r[s], u = [], l = 0; l < a.length; l++) u.push(t.features[a[l]]);
				n(c(u), s, o)
			}
		}
		function Mi(t, e, n, r) {
			var i = r;
			return Ei(t, e,
			function(t, e, o) {
				i = 0 === o && void 0 === r ? t: n(i, t, e, o)
			}),
			i
		}
		function Ii(t, e) {
			var n = {};
			return A(t,
			function(t, r) {
				var i = t.properties || {};
				if (i.hasOwnProperty(e)) {
					var o = i[e];
					n.hasOwnProperty(o) ? n[o].push(r) : n[o] = [r]
				}
			}),
			n
		}
		function Si(t, e) {
			if (void 0 === t) return ! 1;
			var n = typeof e;
			if ("number" === n || "string" === n) return t.hasOwnProperty(e);
			if (Array.isArray(e)) {
				for (var r = 0; r < e.length; r++) if (!Si(t, e[r])) return ! 1;
				return ! 0
			}
			return Ci(t, e)
		}
		function Ci(t, e) {
			for (var n = Object.keys(e), r = 0; r < n.length; r++) {
				var i = n[r];
				if (t[i] !== e[i]) return ! 1
			}
			return ! 0
		}
		function Ni(t, e) {
			if (!e) return {};
			if (!e.length) return {};
			for (var n = {},
			r = 0; r < e.length; r++) {
				var i = e[r];
				t.hasOwnProperty(i) && (n[i] = t[i])
			}
			return n
		}
		function Pi() {}
		function Li(t) {
			this.message = t || ""
		}
		function Ai(t) {
			this.message = t || ""
		}
		function Oi() {}
		function Ti(t) {
			return null === t ? Tc: t.color
		}
		function Ri(t) {
			return null === t ? null: t.parent
		}
		function Di(t, e) {
			null !== t && (t.color = e)
		}
		function ki(t) {
			return null === t ? null: t.left
		}
		function Fi(t) {
			return null === t ? null: t.right
		}
		function ji() {
			this.root_ = null,
			this.size_ = 0
		}
		function qi() {}
		function Bi() {
			this.array_ = [],
			arguments[0] instanceof mc && this.addAll(arguments[0])
		}
		function Gi() {}
		function Ui(t) {
			this.message = t || ""
		}
		function zi() {
			this.array_ = []
		}
		function Yi(t) {
			switch (t.type) {
			case "Polygon":
				return mn(t) > 1 ? t: null;
			case "MultiPolygon":
				var e = [];
				if (k(t,
				function(t) {
					mn(t) > 1 && e.push(t.geometry.coordinates)
				}), e.length) return {
					type: "MultiPolygon",
					coordinates: e
				}
			}
		}
		function Xi() {
			this.reset()
		}
		function Vi(t, e, n) {
			var r = t.s = e + n,
			i = r - e,
			o = r - i;
			t.t = e - o + (n - i)
		}
		function Wi(t) {
			return t > 1 ? qp: t < -1 ? -qp: Math.asin(t)
		}
		function Hi() {}
		function Ji(t, e) {
			t && td.hasOwnProperty(t.type) && td[t.type](t, e)
		}
		function Zi(t, e, n) {
			var r, i = -1,
			o = t.length - n;
			for (e.lineStart(); ++i < o;) r = t[i],
			e.point(r[0], r[1], r[2]);
			e.lineEnd()
		}
		function Qi(t, e) {
			var n = -1,
			r = t.length;
			for (e.polygonStart(); ++n < r;) Zi(t[n], e, 1);
			e.polygonEnd()
		}
		function Ki(t) {
			return [Vp(t[1], t[0]), Wi(t[2])]
		}
		function $i(t) {
			var e = t[0],
			n = t[1],
			r = Wp(n);
			return [r * Wp(e), r * Zp(e), Zp(n)]
		}
		function to(t, e) {
			return t[0] * e[0] + t[1] * e[1] + t[2] * e[2]
		}
		function eo(t, e) {
			return [t[1] * e[2] - t[2] * e[1], t[2] * e[0] - t[0] * e[2], t[0] * e[1] - t[1] * e[0]]
		}
		function no(t, e) {
			t[0] += e[0],
			t[1] += e[1],
			t[2] += e[2]
		}
		function ro(t, e) {
			return [t[0] * e, t[1] * e, t[2] * e]
		}
		function io(t) {
			var e = Qp(t[0] * t[0] + t[1] * t[1] + t[2] * t[2]);
			t[0] /= e,
			t[1] /= e,
			t[2] /= e
		}
		function oo(t, e) {
			return [t > jp ? t - Gp: t < -jp ? t + Gp: t, e]
		}
		function so(t, e, n) {
			return (t %= Gp) ? e || n ? nd(uo(t), co(e, n)) : uo(t) : e || n ? co(e, n) : oo
		}
		function ao(t) {
			return function(e, n) {
				return e += t,
				[e > jp ? e - Gp: e < -jp ? e + Gp: e, n]
			}
		}
		function uo(t) {
			var e = ao(t);
			return e.invert = ao( - t),
			e
		}
		function co(t, e) {
			function n(t, e) {
				var n = Wp(e),
				a = Wp(t) * n,
				u = Zp(t) * n,
				c = Zp(e),
				l = c * r + a * i;
				return [Vp(u * o - l * s, a * r - c * i), Wi(l * o + u * s)]
			}
			var r = Wp(t),
			i = Zp(t),
			o = Wp(e),
			s = Zp(e);
			return n.invert = function(t, e) {
				var n = Wp(e),
				a = Wp(t) * n,
				u = Zp(t) * n,
				c = Zp(e),
				l = c * o - u * s;
				return [Vp(u * o + c * s, a * r + l * i), Wi(l * r - a * i)]
			},
			n
		}
		function lo(t, e) { (e = $i(e))[0] -= t,
			io(e);
			var n = function(t) {
				return t > 1 ? 0 : t < -1 ? jp: Math.acos(t)
			} ( - e[1]);
			return (( - e[2] < 0 ? -n: n) + Gp - Fp) % Gp
		}
		function ho(t, e, n, r) {
			this.x = t,
			this.z = e,
			this.o = n,
			this.e = r,
			this.v = !1,
			this.n = this.p = null
		}
		function fo(t) {
			if (e = t.length) {
				for (var e, n, r = 0,
				i = t[0]; ++r < e;) i.n = n = t[r],
				n.p = i,
				i = n;
				i.n = n = t[0],
				n.p = i
			}
		}
		function po(t, e, n, r) {
			function i(i, o) {
				return t <= i && i <= n && e <= o && o <= r
			}
			function o(i, o, a, c) {
				var l = 0,
				h = 0;
				if (null == i || (l = s(i, a)) !== (h = s(o, a)) || u(i, o) < 0 ^ a > 0) do {
					c.point(0 === l || 3 === l ? t: n, l > 1 ? r: e)
				} while (( l = ( l + a + 4 ) % 4) !== h);
				else c.point(o[0], o[1])
			}
			function s(r, i) {
				return Yp(r[0] - t) < Fp ? i > 0 ? 0 : 3 : Yp(r[0] - n) < Fp ? i > 0 ? 2 : 1 : Yp(r[1] - e) < Fp ? i > 0 ? 1 : 0 : i > 0 ? 3 : 2
			}
			function a(t, e) {
				return u(t.x, e.x)
			}
			function u(t, e) {
				var n = s(t, 1),
				r = s(e, 1);
				return n !== r ? n - r: 0 === n ? e[1] - t[1] : 1 === n ? t[0] - e[0] : 2 === n ? t[1] - e[1] : e[0] - t[0]
			}
			return function(s) {
				function u(t, e) {
					i(t, e) && b.point(t, e)
				}
				function c(o, s) {
					var a = i(o, s);
					if (h && f.push([o, s]), _) p = o,
					d = s,
					g = a,
					_ = !1,
					a && (b.lineStart(), b.point(o, s));
					else if (a && m) b.point(o, s);
					else {
						var u = [y = Math.max(hd, Math.min(ld, y)), v = Math.max(hd, Math.min(ld, v))],
						c = [o = Math.max(hd, Math.min(ld, o)), s = Math.max(hd, Math.min(ld, s))];
						od(u, c, t, e, n, r) ? (m || (b.lineStart(), b.point(u[0], u[1])), b.point(c[0], c[1]), a || b.lineEnd(), w = !1) : a && (b.lineStart(), b.point(o, s), w = !1)
					}
					y = o,
					v = s,
					m = a
				}
				var l, h, f, p, d, g, y, v, m, _, w, b = s,
				x = id(),
				E = {
					point: u,
					lineStart: function() {
						E.point = c,
						h && h.push(f = []),
						_ = !0,
						m = !1,
						y = v = NaN
					},
					lineEnd: function() {
						l && (c(p, d), g && m && x.rejoin(), l.push(x.result())),
						E.point = u,
						m && b.lineEnd()
					},
					polygonStart: function() {
						b = x,
						l = [],
						h = [],
						w = !0
					},
					polygonEnd: function() {
						var e = function() {
							for (var e = 0,
							n = 0,
							i = h.length; n < i; ++n) for (var o, s, a = h[n], u = 1, c = a.length, l = a[0], f = l[0], p = l[1]; u < c; ++u) o = f,
							s = p,
							f = (l = a[u])[0],
							p = l[1],
							s <= r ? p > r && (f - o) * (r - s) > (p - s) * (t - o) && ++e: p <= r && (f - o) * (r - s) < (p - s) * (t - o) && --e;
							return e
						} (),
						n = w && e,
						i = (l = cd(l)).length; (n || i) && (s.polygonStart(), n && (s.lineStart(), o(null, null, 1, s), s.lineEnd()), i && ad(l, a, e, o, s), s.polygonEnd()),
						b = s,
						l = h = f = null
					}
				};
				return E
			}
		}
		function go(t) {
			return t.length > 1
		}
		function yo(t, e) {
			return ((t = t.x)[0] < 0 ? t[1] - qp - Fp: qp - t[1]) - ((e = e.x)[0] < 0 ? e[1] - qp - Fp: qp - e[1])
		}
		function vo(t) {
			return function(e) {
				var n = new mo;
				for (var r in t) n[r] = t[r];
				return n.stream = e,
				n
			}
		}
		function mo() {}
		function _o(t, e, n) {
			var r = e[1][0] - e[0][0],
			i = e[1][1] - e[0][1],
			o = t.clipExtent && t.clipExtent();
			t.scale(150).translate([0, 0]),
			null != o && t.clipExtent(null),
			ed(n, t.stream(md));
			var s = md.result(),
			a = Math.min(r / (s[1][0] - s[0][0]), i / (s[1][1] - s[0][1])),
			u = +e[0][0] + (r - a * (s[1][0] + s[0][0])) / 2,
			c = +e[0][1] + (i - a * (s[1][1] + s[0][1])) / 2;
			return null != o && t.clipExtent(o),
			t.scale(150 * a).translate([u, c])
		}
		function wo(t) {
			return function(t) {
				function e(t) {
					return t = c(t[0] * zp, t[1] * zp),
					[t[0] * g + s, a - t[1] * g]
				}
				function n(t, e) {
					return t = o(t, e),
					[t[0] * g + s, a - t[1] * g]
				}
				function r() {
					c = nd(u = so(w, b, x), o);
					var t = o(m, _);
					return s = y - t[0] * g,
					a = v + t[1] * g,
					i()
				}
				function i() {
					return p = d = null,
					e
				}
				var o, s, a, u, c, l, h, f, p, d, g = 150,
				y = 480,
				v = 250,
				m = 0,
				_ = 0,
				w = 0,
				b = 0,
				x = 0,
				E = null,
				M = wd,
				I = null,
				S = pd,
				C = .5,
				N = Md(n, C);
				return e.stream = function(t) {
					return p && d === t ? p: p = Id(M(u, N(S(d = t))))
				},
				e.clipAngle = function(t) {
					return arguments.length ? (M = +t ? bd(E = t * zp, 6 * zp) : (E = null, wd), i()) : E * Up
				},
				e.clipExtent = function(t) {
					return arguments.length ? (S = null == t ? (I = l = h = f = null, pd) : po(I = +t[0][0], l = +t[0][1], h = +t[1][0], f = +t[1][1]), i()) : null == I ? null: [[I, l], [h, f]]
				},
				e.scale = function(t) {
					return arguments.length ? (g = +t, r()) : g
				},
				e.translate = function(t) {
					return arguments.length ? (y = +t[0], v = +t[1], r()) : [y, v]
				},
				e.center = function(t) {
					return arguments.length ? (m = t[0] % 360 * zp, _ = t[1] % 360 * zp, r()) : [m * Up, _ * Up]
				},
				e.rotate = function(t) {
					return arguments.length ? (w = t[0] % 360 * zp, b = t[1] % 360 * zp, x = t.length > 2 ? t[2] % 360 * zp: 0, r()) : [w * Up, b * Up, x * Up]
				},
				e.precision = function(t) {
					return arguments.length ? (N = Md(n, C = t * t), i()) : Qp(C)
				},
				e.fitExtent = function(t, n) {
					return _o(e, t, n)
				},
				e.fitSize = function(t, n) {
					return function(t, e, n) {
						return _o(t, [[0, 0], e], n)
					} (e, t, n)
				},
				function() {
					return o = t.apply(this, arguments),
					e.invert = o.invert &&
					function(t) {
						return (t = c.invert((t[0] - s) / g, (a - t[1]) / g)) && [t[0] * Up, t[1] * Up]
					},
					r()
				}
			} (function() {
				return t
			})()
		}
		function bo(t, e) {
			return [t, Jp(Kp((qp + e) / 2))]
		}
		function xo(t, e) {
			return [Jp(Kp((qp + e) / 2)), -t]
		}
		function Eo(t, n, r, i) {
			var o = t.properties || {},
			s = "Feature" === t.type ? t.geometry: t;
			if ("GeometryCollection" === s.type) {
				var a = [];
				return R(t,
				function(t) {
					var e = Eo(t, n, r, i);
					e && a.push(e)
				}),
				c(a)
			}
			var u, l = U(t),
			h = l[1] > 50 && l[3] > 50;
			u = h ? {
				type: s.type,
				coordinates: Io(s.coordinates, Co(s))
			}: cn(s);
			var f = (new xl).read(u),
			p = g(y(n, r), "meters"),
			d = df.bufferOp(f, p);
			if (d = (new El).write(d), !Mo(d.coordinates)) {
				var v;
				return (v = h ? {
					type: d.type,
					coordinates: So(d.coordinates, Co(s))
				}: ln(d)).geometry ? v: e(v, o)
			}
		}
		function Mo(t) {
			return Array.isArray(t[0]) ? Mo(t[0]) : isNaN(t[0])
		}
		function Io(t, e) {
			return "object" != typeof t[0] ? e(t) : t.map(function(t) {
				return Io(t, e)
			})
		}
		function So(t, e) {
			return "object" != typeof t[0] ? e.invert(t) : t.map(function(t) {
				return So(t, e)
			})
		}
		function Co(t) {
			var e = ge(t).geometry.coordinates.reverse(),
			n = e.map(function(t) {
				return - t
			});
			return Sd().center(e).rotate(n).scale(ko)
		}
		function No() {
			for (var t = new xl,
			e = t.read(JSON.stringify(arguments[0].geometry)), n = 1; n < arguments.length; n++) e = Rp.union(e, t.read(JSON.stringify(arguments[n].geometry)));
			return e = (new El).write(e),
			{
				type: "Feature",
				geometry: e,
				properties: arguments[0].properties
			}
		}
		function Po(t, n) {
			var r = J(t),
			i = J(n);
			if (te(Ln(i, {
				precision: 4
			})).coordinates[0].length < 4) return null;
			if (te(Ln(r, {
				precision: 4
			})).coordinates[0].length < 4) return null;
			var o = new xl,
			s = o.read(Ln(r)),
			a = o.read(Ln(i)),
			u = Ip.intersection(s, a);
			return u.isEmpty() ? null: e((new El).write(u))
		}
		function Lo(t, e) {
			return function(t, e, n) {
				var r, i;
				if (!Array.isArray(e)) throw new Error("Get closest expects an array as second argument");
				return e.forEach(function(e, o) {
					var s = n(e, t);
					s >= 0 && (void 0 === i || s < i) && (i = s, r = o)
				}),
				r
			} (t, e,
			function(t, e) {
				return t - e
			})
		}
		function Ao(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.properties || {},
			i = n.triangles,
			s = n.mask;
			if (null === e || void 0 === e) throw new Error("cellSide is required");
			if (!E(e)) throw new Error("cellSide is invalid");
			if (!t) throw new Error("bbox is required");
			if (!Array.isArray(t)) throw new Error("bbox must be array");
			if (4 !== t.length) throw new Error("bbox must contain 4 numbers");
			if (s && -1 === ["Polygon", "MultiPolygon"].indexOf(Q(s))) throw new Error("options.mask must be a (Multi)Polygon");
			var a = t[0],
			u = t[1],
			l = t[2],
			h = t[3],
			f = (u + h) / 2,
			p = (a + l) / 2,
			d = 2 * e / Ft([a, f], [l, f], n) * (l - a),
			g = 2 * e / Ft([p, u], [p, h], n) * (h - u),
			y = d / 2,
			v = 2 * y,
			m = Math.sqrt(3) / 2 * g,
			_ = l - a,
			w = h - u,
			b = .75 * v,
			x = m,
			I = (_ - v) / (v - y / 2),
			S = Math.floor(I),
			C = (S * b - y / 2 - _) / 2 - y / 2 + b / 2,
			N = Math.floor((w - m) / m),
			P = (w - N * m) / 2,
			L = N * m - w > m / 2;
			L && (P -= m / 4);
			for (var A = [], O = [], T = 0; T < 6; T++) {
				var R = 2 * Math.PI / 6 * T;
				A.push(Math.cos(R)),
				O.push(Math.sin(R))
			}
			for (var D = [], k = 0; k <= S; k++) for (var F = 0; F <= N; F++) {
				var j = k % 2 == 1;
				if (! (0 === F && j || 0 === F && L)) {
					var q = k * b + a - C,
					B = F * x + u + P;
					if (j && (B -= m / 2), !0 === i)(function(t, e, n, r, i, s) {
						for (var a = [], u = 0; u < 6; u++) {
							var c = [];
							c.push(t),
							c.push([t[0] + e * i[u], t[1] + n * s[u]]),
							c.push([t[0] + e * i[(u + 1) % 6], t[1] + n * s[(u + 1) % 6]]),
							c.push(t),
							a.push(o([c], r))
						}
						return a
					})([q, B], d / 2, g / 2, r, A, O).forEach(function(t) {
						s ? Po(s, t) && D.push(t) : D.push(t)
					});
					else {
						var G = function(t, e, n, r, i, s) {
							for (var a = [], u = 0; u < 6; u++) {
								var c = t[0] + e * i[u],
								l = t[1] + n * s[u];
								a.push([c, l])
							}
							return a.push(a[0].slice()),
							o([a], r)
						} ([q, B], d / 2, g / 2, r, A, O);
						s ? Po(s, G) && D.push(G) : D.push(G)
					}
				}
			}
			return c(D)
		}
		function Oo(t) {
			if (t.features.length <= 1) return t;
			var e = function(t) {
				var e = Vo(),
				n = [];
				return k(t,
				function(t, e) {
					var r = U(t);
					n.push({
						minX: r[0],
						minY: r[1],
						maxX: r[2],
						maxY: r[3],
						geojson: t,
						index: e
					})
				}),
				e.load(n),
				e
			} (t),
			n = [],
			r = {};
			return k(t,
			function(t, i) {
				if (r[i]) return ! 0;
				for (e.remove({
					index: i
				},
				To), r[i] = !0;;) {
					var o = U(t),
					s = e.search({
						minX: o[0],
						minY: o[1],
						maxX: o[2],
						maxY: o[3]
					});
					if (s.length > 0) {
						var a = s.map(function(t) {
							return r[t.index] = !0,
							e.remove({
								index: t.index
							},
							To),
							t.geojson
						});
						a.push(t),
						t = No.apply(this, a)
					}
					if (0 === s.length) break
				}
				n.push(t)
			}),
			c(n)
		}
		function To(t, e) {
			return t.index === e.index
		}
		function Ro(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.properties,
			i = n.mask,
			s = [];
			if (null === e || void 0 === e) throw new Error("cellSide is required");
			if (!E(e)) throw new Error("cellSide is invalid");
			if (!t) throw new Error("bbox is required");
			if (!Array.isArray(t)) throw new Error("bbox must be array");
			if (4 !== t.length) throw new Error("bbox must contain 4 numbers");
			if (i && -1 === ["Polygon", "MultiPolygon"].indexOf(Q(i))) throw new Error("options.mask must be a (Multi)Polygon");
			for (var a = t[0], u = t[1], l = t[2], h = t[3], f = e / Ft([a, u], [l, u], n) * (l - a), p = e / Ft([a, u], [a, h], n) * (h - u), d = l - a, g = h - u, y = Math.floor(d / f), v = Math.floor(g / p), m = (g - v * p) / 2, _ = a + (d - y * f) / 2, w = 0; w < y; w++) {
				for (var b = u + m,
				x = 0; x < v; x++) {
					var I = o([[[_, b], [_, b + p], [_ + f, b + p], [_ + f, b], [_, b]]], r);
					i ? Po(i, I) && s.push(I) : s.push(I),
					b += p
				}
				_ += f
			}
			return c(s)
		}
		function Do(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.properties,
			i = n.mask,
			s = [];
			if (null === e || void 0 === e) throw new Error("cellSide is required");
			if (!E(e)) throw new Error("cellSide is invalid");
			if (!t) throw new Error("bbox is required");
			if (!Array.isArray(t)) throw new Error("bbox must be array");
			if (4 !== t.length) throw new Error("bbox must contain 4 numbers");
			if (i && -1 === ["Polygon", "MultiPolygon"].indexOf(Q(i))) throw new Error("options.mask must be a (Multi)Polygon");
			for (var a = e / Ft([t[0], t[1]], [t[2], t[1]], n) * (t[2] - t[0]), u = e / Ft([t[0], t[1]], [t[0], t[3]], n) * (t[3] - t[1]), l = 0, h = t[0]; h <= t[2];) {
				for (var f = 0,
				p = t[1]; p <= t[3];) {
					var d = null,
					g = null;
					l % 2 == 0 && f % 2 == 0 ? (d = o([[[h, p], [h, p + u], [h + a, p], [h, p]]], r), g = o([[[h, p + u], [h + a, p + u], [h + a, p], [h, p + u]]], r)) : l % 2 == 0 && f % 2 == 1 ? (d = o([[[h, p], [h + a, p + u], [h + a, p], [h, p]]], r), g = o([[[h, p], [h, p + u], [h + a, p + u], [h, p]]], r)) : f % 2 == 0 && l % 2 == 1 ? (d = o([[[h, p], [h, p + u], [h + a, p + u], [h, p]]], r), g = o([[[h, p], [h + a, p + u], [h + a, p], [h, p]]], r)) : f % 2 == 1 && l % 2 == 1 && (d = o([[[h, p], [h, p + u], [h + a, p], [h, p]]], r), g = o([[[h, p + u], [h + a, p + u], [h + a, p], [h, p + u]]], r)),
					i ? (Po(i, d) && s.push(d), Po(i, g) && s.push(g)) : (s.push(d), s.push(g)),
					p += u,
					f++
				}
				l++,
				h += a
			}
			return c(s)
		}
		var ko = 6371008.8,
		Fo = {
			meters: ko,
			metres: ko,
			millimeters: 1e3 * ko,
			millimetres: 1e3 * ko,
			centimeters: 100 * ko,
			centimetres: 100 * ko,
			kilometers: ko / 1e3,
			kilometres: ko / 1e3,
			miles: ko / 1609.344,
			nauticalmiles: ko / 1852,
			inches: 39.37 * ko,
			yards: ko / 1.0936,
			feet: 3.28084 * ko,
			radians: 1,
			degrees: ko / 111325
		},
		jo = {
			meters: 1,
			metres: 1,
			millimeters: 1e3,
			millimetres: 1e3,
			centimeters: 100,
			centimetres: 100,
			kilometers: .001,
			kilometres: .001,
			miles: 1 / 1609.344,
			nauticalmiles: 1 / 1852,
			inches: 39.37,
			yards: 1 / 1.0936,
			feet: 3.28084,
			radians: 1 / ko,
			degrees: 1 / 111325
		},
		qo = {
			meters: 1,
			metres: 1,
			millimeters: 1e6,
			millimetres: 1e6,
			centimeters: 1e4,
			centimetres: 1e4,
			kilometers: 1e-6,
			kilometres: 1e-6,
			acres: 247105e-9,
			miles: 3.86e-7,
			yards: 1.195990046,
			feet: 10.763910417,
			inches: 1550.003100006
		},
		Bo = Object.freeze({
			earthRadius: ko,
			factors: Fo,
			unitsFactors: jo,
			areaFactors: qo,
			feature: e,
			geometry: n,
			point: r,
			points: i,
			polygon: o,
			polygons: s,
			lineString: a,
			lineStrings: u,
			featureCollection: c,
			multiLineString: l,
			multiPoint: h,
			multiPolygon: f,
			geometryCollection: p,
			round: d,
			radiansToLength: g,
			lengthToRadians: y,
			lengthToDegrees: v,
			bearingToAzimuth: m,
			radiansToDegrees: _,
			degreesToRadians: w,
			convertLength: b,
			convertArea: x,
			isNumber: E,
			isObject: M,
			validateBBox: I,
			validateId: S,
			radians2degrees: function() {
				throw new Error("method has been renamed to `radiansToDegrees`")
			},
			degrees2radians: function() {
				throw new Error("method has been renamed to `degreesToRadians`")
			},
			distanceToDegrees: function() {
				throw new Error("method has been renamed to `lengthToDegrees`")
			},
			distanceToRadians: function() {
				throw new Error("method has been renamed to `lengthToRadians`")
			},
			radiansToDistance: function() {
				throw new Error("method has been renamed to `radiansToLength`")
			},
			bearingToAngle: function() {
				throw new Error("method has been renamed to `bearingToAzimuth`")
			},
			convertDistance: function() {
				throw new Error("method has been renamed to `convertLength`")
			}
		}),
		Go = Object.freeze({
			coordEach: C,
			coordReduce: N,
			propEach: P,
			propReduce: L,
			featureEach: A,
			featureReduce: O,
			coordAll: T,
			geomEach: R,
			geomReduce: D,
			flattenEach: k,
			flattenReduce: F,
			segmentEach: j,
			segmentReduce: q,
			lineEach: B,
			lineReduce: G
		}),
		Uo = Object.freeze({
			getCoord: z,
			getCoords: Y,
			containsNumber: X,
			geojsonType: V,
			featureOf: W,
			collectionOf: H,
			getGeom: J,
			getGeomType: Z,
			getType: Q
		}),
		zo = {
			successCallback: null,
			verbose: !1
		},
		Yo = {},
		Xo = it,
		Vo = st;
		st.prototype = {
			all: function() {
				return this._all(this.data, [])
			},
			search: function(t) {
				var e = this.data,
				n = [],
				r = this.toBBox;
				if (!gt(t, e)) return n;
				for (var i, o, s, a, u = []; e;) {
					for (i = 0, o = e.children.length; i < o; i++) s = e.children[i],
					gt(t, a = e.leaf ? r(s) : s) && (e.leaf ? n.push(s) : dt(t, a) ? this._all(s, n) : u.push(s));
					e = u.pop()
				}
				return n
			},
			collides: function(t) {
				var e = this.data,
				n = this.toBBox;
				if (!gt(t, e)) return ! 1;
				for (var r, i, o, s, a = []; e;) {
					for (r = 0, i = e.children.length; r < i; r++) if (o = e.children[r], s = e.leaf ? n(o) : o, gt(t, s)) {
						if (e.leaf || dt(t, s)) return ! 0;
						a.push(o)
					}
					e = a.pop()
				}
				return ! 1
			},
			load: function(t) {
				if (!t || !t.length) return this;
				if (t.length < this._minEntries) {
					for (var e = 0,
					n = t.length; e < n; e++) this.insert(t[e]);
					return this
				}
				var r = this._build(t.slice(), 0, t.length - 1, 0);
				if (this.data.children.length) if (this.data.height === r.height) this._splitRoot(this.data, r);
				else {
					if (this.data.height < r.height) {
						var i = this.data;
						this.data = r,
						r = i
					}
					this._insert(r, this.data.height - r.height - 1, !0)
				} else this.data = r;
				return this
			},
			insert: function(t) {
				return t && this._insert(t, this.data.height - 1),
				this
			},
			clear: function() {
				return this.data = yt([]),
				this
			},
			remove: function(t, e) {
				if (!t) return this;
				for (var n, r, i, o, s = this.data,
				a = this.toBBox(t), u = [], c = []; s || u.length;) {
					if (s || (s = u.pop(), r = u[u.length - 1], n = c.pop(), o = !0), s.leaf && -1 !== (i = function(t, e, n) {
						if (!n) return e.indexOf(t);
						for (var r = 0; r < e.length; r++) if (n(t, e[r])) return r;
						return - 1
					} (t, s.children, e))) return s.children.splice(i, 1),
					u.push(s),
					this._condense(u),
					this;
					o || s.leaf || !dt(s, a) ? r ? (n++, s = r.children[n], o = !1) : s = null: (u.push(s), c.push(n), n = 0, r = s, s = s.children[0])
				}
				return this
			},
			toBBox: function(t) {
				return t
			},
			compareMinX: lt,
			compareMinY: ht,
			toJSON: function() {
				return this.data
			},
			fromJSON: function(t) {
				return this.data = t,
				this
			},
			_all: function(t, e) {
				for (var n = []; t;) t.leaf ? e.push.apply(e, t.children) : n.push.apply(n, t.children),
				t = n.pop();
				return e
			},
			_build: function(t, e, n, r) {
				var i, o = n - e + 1,
				s = this._maxEntries;
				if (o <= s) return i = yt(t.slice(e, n + 1)),
				at(i, this.toBBox),
				i;
				r || (r = Math.ceil(Math.log(o) / Math.log(s)), s = Math.ceil(o / Math.pow(s, r - 1))),
				(i = yt([])).leaf = !1,
				i.height = r;
				var a, u, c, l, h = Math.ceil(o / s),
				f = h * Math.ceil(Math.sqrt(s));
				for (vt(t, e, n, f, this.compareMinX), a = e; a <= n; a += f) for (vt(t, a, c = Math.min(a + f - 1, n), h, this.compareMinY), u = a; u <= c; u += h) l = Math.min(u + h - 1, c),
				i.children.push(this._build(t, u, l, r - 1));
				return at(i, this.toBBox),
				i
			},
			_chooseSubtree: function(t, e, n, r) {
				for (var i, o, s, a, u, c, l, h; r.push(e), !e.leaf && r.length - 1 !== n;) {
					for (l = h = 1 / 0, i = 0, o = e.children.length; i < o; i++) u = ft(s = e.children[i]),
					(c = function(t, e) {
						return (Math.max(e.maxX, t.maxX) - Math.min(e.minX, t.minX)) * (Math.max(e.maxY, t.maxY) - Math.min(e.minY, t.minY))
					} (t, s) - u) < h ? (h = c, l = u < l ? u: l, a = s) : c === h && u < l && (l = u, a = s);
					e = a || e.children[0]
				}
				return e
			},
			_insert: function(t, e, n) {
				var r = this.toBBox,
				i = n ? t: r(t),
				o = [],
				s = this._chooseSubtree(i, this.data, e, o);
				for (s.children.push(t), ct(s, i); e >= 0 && o[e].children.length > this._maxEntries;) this._split(o, e),
				e--;
				this._adjustParentBBoxes(i, o, e)
			},
			_split: function(t, e) {
				var n = t[e],
				r = n.children.length,
				i = this._minEntries;
				this._chooseSplitAxis(n, i, r);
				var o = this._chooseSplitIndex(n, i, r),
				s = yt(n.children.splice(o, n.children.length - o));
				s.height = n.height,
				s.leaf = n.leaf,
				at(n, this.toBBox),
				at(s, this.toBBox),
				e ? t[e - 1].children.push(s) : this._splitRoot(n, s)
			},
			_splitRoot: function(t, e) {
				this.data = yt([t, e]),
				this.data.height = t.height + 1,
				this.data.leaf = !1,
				at(this.data, this.toBBox)
			},
			_chooseSplitIndex: function(t, e, n) {
				var r, i, o, s, a, u, c, l;
				for (u = c = 1 / 0, r = e; r <= n - e; r++) s = function(t, e) {
					var n = Math.max(t.minX, e.minX),
					r = Math.max(t.minY, e.minY),
					i = Math.min(t.maxX, e.maxX),
					o = Math.min(t.maxY, e.maxY);
					return Math.max(0, i - n) * Math.max(0, o - r)
				} (i = ut(t, 0, r, this.toBBox), o = ut(t, r, n, this.toBBox)),
				a = ft(i) + ft(o),
				s < u ? (u = s, l = r, c = a < c ? a: c) : s === u && a < c && (c = a, l = r);
				return l
			},
			_chooseSplitAxis: function(t, e, n) {
				var r = t.leaf ? this.compareMinX: lt,
				i = t.leaf ? this.compareMinY: ht;
				this._allDistMargin(t, e, n, r) < this._allDistMargin(t, e, n, i) && t.children.sort(r)
			},
			_allDistMargin: function(t, e, n, r) {
				t.children.sort(r);
				var i, o, s = this.toBBox,
				a = ut(t, 0, e, s),
				u = ut(t, n - e, n, s),
				c = pt(a) + pt(u);
				for (i = e; i < n - e; i++) o = t.children[i],
				ct(a, t.leaf ? s(o) : o),
				c += pt(a);
				for (i = n - e - 1; i >= e; i--) o = t.children[i],
				ct(u, t.leaf ? s(o) : o),
				c += pt(u);
				return c
			},
			_adjustParentBBoxes: function(t, e, n) {
				for (var r = n; r >= 0; r--) ct(e[r], t)
			},
			_condense: function(t) {
				for (var e, n = t.length - 1; n >= 0; n--) 0 === t[n].children.length ? n > 0 ? (e = t[n - 1].children).splice(e.indexOf(t[n]), 1) : this.clear() : at(t[n], this.toBBox)
			},
			_initFormat: function(t) {
				var e = ["return a", " - b", ";"];
				this.compareMinX = new Function("a", "b", e.join(t[0])),
				this.compareMinY = new Function("a", "b", e.join(t[1])),
				this.toBBox = new Function("a", "return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
			}
		};
		var Wo = function(t, e, n) {
			var r = t * e,
			i = Ho * t,
			o = i - (i - t),
			s = t - o,
			a = Ho * e,
			u = a - (a - e),
			c = e - u,
			l = s * c - (r - o * u - s * u - o * c);
			return n ? (n[0] = l, n[1] = r, n) : [l, r]
		},
		Ho = +(Math.pow(2, 27) + 1),
		Jo = function(t, e) {
			var n = 0 | t.length,
			r = 0 | e.length;
			if (1 === n && 1 === r) return function(t, e) {
				var n = t + e,
				r = n - t,
				i = t - (n - r) + (e - r);
				return i ? [i, n] : [n]
			} (t[0], e[0]);
			var i, o, s = n + r,
			a = new Array(s),
			u = 0,
			c = 0,
			l = 0,
			h = Math.abs,
			f = t[c],
			p = h(f),
			d = e[l],
			g = h(d);
			p < g ? (o = f, (c += 1) < n && (p = h(f = t[c]))) : (o = d, (l += 1) < r && (g = h(d = e[l]))),
			c < n && p < g || l >= r ? (i = f, (c += 1) < n && (p = h(f = t[c]))) : (i = d, (l += 1) < r && (g = h(d = e[l])));
			for (var y, v, m = i + o,
			_ = m - i,
			w = o - _,
			b = w,
			x = m; c < n && l < r;) p < g ? (i = f, (c += 1) < n && (p = h(f = t[c]))) : (i = d, (l += 1) < r && (g = h(d = e[l]))),
			(w = (o = b) - (_ = (m = i + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y;
			for (; c < n;)(w = (o = b) - (_ = (m = (i = f) + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y,
			(c += 1) < n && (f = t[c]);
			for (; l < r;)(w = (o = b) - (_ = (m = (i = d) + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y,
			(l += 1) < r && (d = e[l]);
			return b && (a[u++] = b),
			x && (a[u++] = x),
			u || (a[u++] = 0),
			a.length = u,
			a
		},
		Zo = function(t, e, n) {
			var r = t + e,
			i = r - t,
			o = e - i,
			s = t - (r - i);
			return n ? (n[0] = s + o, n[1] = r, n) : [s + o, r]
		},
		Qo = function(t, e) {
			var n = t.length;
			if (1 === n) {
				var r = Wo(t[0], e);
				return r[0] ? r: [r[1]]
			}
			var i = new Array(2 * n),
			o = [.1, .1],
			s = [.1, .1],
			a = 0;
			Wo(t[0], e, o),
			o[0] && (i[a++] = o[0]);
			for (var u = 1; u < n; ++u) {
				Wo(t[u], e, s);
				var c = o[1];
				Zo(c, s[0], o),
				o[0] && (i[a++] = o[0]);
				var l = s[1],
				h = o[1],
				f = l + h,
				p = h - (f - l);
				o[1] = f,
				p && (i[a++] = p)
			}
			return o[1] && (i[a++] = o[1]),
			0 === a && (i[a++] = 0),
			i.length = a,
			i
		},
		Ko = function(t, e) {
			var n = 0 | t.length,
			r = 0 | e.length;
			if (1 === n && 1 === r) return function(t, e) {
				var n = t + e,
				r = n - t,
				i = t - (n - r) + (e - r);
				return i ? [i, n] : [n]
			} (t[0], -e[0]);
			var i, o, s = n + r,
			a = new Array(s),
			u = 0,
			c = 0,
			l = 0,
			h = Math.abs,
			f = t[c],
			p = h(f),
			d = -e[l],
			g = h(d);
			p < g ? (o = f, (c += 1) < n && (p = h(f = t[c]))) : (o = d, (l += 1) < r && (g = h(d = -e[l]))),
			c < n && p < g || l >= r ? (i = f, (c += 1) < n && (p = h(f = t[c]))) : (i = d, (l += 1) < r && (g = h(d = -e[l])));
			for (var y, v, m = i + o,
			_ = m - i,
			w = o - _,
			b = w,
			x = m; c < n && l < r;) p < g ? (i = f, (c += 1) < n && (p = h(f = t[c]))) : (i = d, (l += 1) < r && (g = h(d = -e[l]))),
			(w = (o = b) - (_ = (m = i + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y;
			for (; c < n;)(w = (o = b) - (_ = (m = (i = f) + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y,
			(c += 1) < n && (f = t[c]);
			for (; l < r;)(w = (o = b) - (_ = (m = (i = d) + o) - i)) && (a[u++] = w),
			b = x - ((y = x + m) - (v = y - x)) + (m - v),
			x = y,
			(l += 1) < r && (d = -e[l]);
			return b && (a[u++] = b),
			x && (a[u++] = x),
			u || (a[u++] = 0),
			a.length = u,
			a
		},
		$o = mt(function(t) {
			function e(t, e) {
				for (var n = new Array(t.length - 1), r = 1; r < t.length; ++r) for (var i = n[r - 1] = new Array(t.length - 1), o = 0, s = 0; o < t.length; ++o) o !== e && (i[s++] = t[r][o]);
				return n
			}
			function n(t) {
				return 1 & t ? "-": ""
			}
			function r(t) {
				if (1 === t.length) return t[0];
				if (2 === t.length) return ["sum(", t[0], ",", t[1], ")"].join("");
				var e = t.length >> 1;
				return ["sum(", r(t.slice(0, e)), ",", r(t.slice(e)), ")"].join("")
			}
			function i(t) {
				if (2 === t.length) return [["sum(prod(", t[0][0], ",", t[1][1], "),prod(-", t[0][1], ",", t[1][0], "))"].join("")];
				for (var o = [], s = 0; s < t.length; ++s) o.push(["scale(", r(i(e(t, s))), ",", n(s), t[0][s], ")"].join(""));
				return o
			}
			function o(t) {
				for (var n = [], o = [], s = function(t) {
					for (var e = new Array(t), n = 0; n < t; ++n) {
						e[n] = new Array(t);
						for (var r = 0; r < t; ++r) e[n][r] = ["m", r, "[", t - n - 1, "]"].join("")
					}
					return e
				} (t), a = [], u = 0; u < t; ++u) 0 == (1 & u) ? n.push.apply(n, i(e(s, u))) : o.push.apply(o, i(e(s, u))),
				a.push("m" + u);
				var c = r(n),
				l = r(o),
				h = "orientation" + t + "Exact",
				f = ["function ", h, "(", a.join(), "){var p=", c, ",n=", l, ",d=sub(p,n);return d[d.length-1];};return ", h].join("");
				return new Function("sum", "prod", "scale", "sub", f)(Jo, Wo, Qo, Ko)
			}
			var s = o(3),
			a = o(4),
			u = [function() {
				return 0
			},
			function() {
				return 0
			},
			function(t, e) {
				return e[0] - t[0]
			},
			function(t, e, n) {
				var r, i = (t[1] - n[1]) * (e[0] - n[0]),
				o = (t[0] - n[0]) * (e[1] - n[1]),
				a = i - o;
				if (i > 0) {
					if (o <= 0) return a;
					r = i + o
				} else {
					if (! (i < 0)) return a;
					if (o >= 0) return a;
					r = -(i + o)
				}
				var u = 3.3306690738754716e-16 * r;
				return a >= u || a <= -u ? a: s(t, e, n)
			},
			function(t, e, n, r) {
				var i = t[0] - r[0],
				o = e[0] - r[0],
				s = n[0] - r[0],
				u = t[1] - r[1],
				c = e[1] - r[1],
				l = n[1] - r[1],
				h = t[2] - r[2],
				f = e[2] - r[2],
				p = n[2] - r[2],
				d = o * l,
				g = s * c,
				y = s * u,
				v = i * l,
				m = i * c,
				_ = o * u,
				w = h * (d - g) + f * (y - v) + p * (m - _),
				b = 7.771561172376103e-16 * ((Math.abs(d) + Math.abs(g)) * Math.abs(h) + (Math.abs(y) + Math.abs(v)) * Math.abs(f) + (Math.abs(m) + Math.abs(_)) * Math.abs(p));
				return w > b || -w > b ? w: a(t, e, n, r)
			}]; !
			function() {
				for (; u.length <= 5;) u.push(o(u.length));
				for (var e = [], n = ["slow"], r = 0; r <= 5; ++r) e.push("a" + r),
				n.push("o" + r);
				var i = ["function getOrientation(", e.join(), "){switch(arguments.length){case 0:case 1:return 0;"];
				for (r = 2; r <= 5; ++r) i.push("case ", r, ":return o", r, "(", e.slice(0, r).join(), ");");
				i.push("}var s=new Array(arguments.length);for(var i=0;i<arguments.length;++i){s[i]=arguments[i]};return slow(s);}return getOrientation"),
				n.push(i.join(""));
				var s = Function.apply(void 0, n);
				for (t.exports = s.apply(void 0, [function(t) {
					var e = u[t.length];
					return e || (e = u[t.length] = o(t.length)),
					e.apply(void 0, t)
				}].concat(u)), r = 0; r <= 5; ++r) t.exports[r] = u[r]
			} ()
		}),
		ts = function(t) {
			var e = t.length;
			if (e < 3) {
				for (var n = new Array(e), r = 0; r < e; ++r) n[r] = r;
				return 2 === e && t[0][0] === t[1][0] && t[0][1] === t[1][1] ? [0] : n
			}
			var i = new Array(e);
			for (r = 0; r < e; ++r) i[r] = r;
			i.sort(function(e, n) {
				return t[e][0] - t[n][0] || t[e][1] - t[n][1]
			});
			var o = [i[0], i[1]],
			s = [i[0], i[1]];
			for (r = 2; r < e; ++r) {
				for (var a = i[r], u = t[a], c = o.length; c > 1 && es(t[o[c - 2]], t[o[c - 1]], u) <= 0;) c -= 1,
				o.pop();
				for (o.push(a), c = s.length; c > 1 && es(t[s[c - 2]], t[s[c - 1]], u) >= 0;) c -= 1,
				s.pop();
				s.push(a)
			}
			n = new Array(s.length + o.length - 2);
			for (var l = 0,
			h = (r = 0, o.length); r < h; ++r) n[l++] = o[r];
			for (var f = s.length - 2; f > 0; --f) n[l++] = s[f];
			return n
		},
		es = $o[3],
		ns = _t,
		rs = _t;
		_t.prototype = {
			push: function(t) {
				this.data.push(t),
				this.length++,
				this._up(this.length - 1)
			},
			pop: function() {
				if (0 !== this.length) {
					var t = this.data[0];
					return this.length--,
					this.length > 0 && (this.data[0] = this.data[this.length], this._down(0)),
					this.data.pop(),
					t
				}
			},
			peek: function() {
				return this.data[0]
			},
			_up: function(t) {
				for (var e = this.data,
				n = this.compare,
				r = e[t]; t > 0;) {
					var i = t - 1 >> 1,
					o = e[i];
					if (n(r, o) >= 0) break;
					e[t] = o,
					t = i
				}
				e[t] = r
			},
			_down: function(t) {
				for (var e = this.data,
				n = this.compare,
				r = this.length >> 1,
				i = e[t]; t < r;) {
					var o = 1 + (t << 1),
					s = o + 1,
					a = e[o];
					if (s < this.length && n(e[s], a) < 0 && (o = s, a = e[s]), n(a, i) >= 0) break;
					e[t] = a,
					t = o
				}
				e[t] = i
			}
		},
		ns.
	default = rs;
		var is = function(t, e) {
			for (var n = t[0], r = t[1], i = !1, o = 0, s = e.length - 1; o < e.length; s = o++) {
				var a = e[o][0],
				u = e[o][1],
				c = e[s][0],
				l = e[s][1];
				u > r != l > r && n < (c - a) * (r - u) / (l - u) + a && (i = !i)
			}
			return i
		},
		os = $o[3],
		ss = wt,
		as = wt;
		ss.
	default = as;
		var us = function(t) {
			return t
		},
		cs = function(t) {
			if (null == t) return us;
			var e, n, r = t.scale[0],
			i = t.scale[1],
			o = t.translate[0],
			s = t.translate[1];
			return function(t, a) {
				a || (e = n = 0);
				var u = 2,
				c = t.length,
				l = new Array(c);
				for (l[0] = (e += t[0]) * r + o, l[1] = (n += t[1]) * i + s; u < c;) l[u] = t[u],
				++u;
				return l
			}
		},
		ls = function(t, e) {
			for (var n, r = t.length,
			i = r - e; i < --r;) n = t[i],
			t[i++] = t[r],
			t[r] = n
		},
		hs = function(t, e) {
			function n(t, e) {
				for (var n in t) {
					var i = t[n];
					delete e[i.start],
					delete i.start,
					delete i.end,
					i.forEach(function(t) {
						r[t < 0 ? ~t: t] = 1
					}),
					s.push(i)
				}
			}
			var r = {},
			i = {},
			o = {},
			s = [],
			a = -1;
			return e.forEach(function(n, r) {
				var i, o = t.arcs[n < 0 ? ~n: n];
				o.length < 3 && !o[1][0] && !o[1][1] && (i = e[++a], e[a] = n, e[r] = i)
			}),
			e.forEach(function(e) {
				var n, r, s = function(e) {
					var n, r = t.arcs[e < 0 ? ~e: e],
					i = r[0];
					return t.transform ? (n = [0, 0], r.forEach(function(t) {
						n[0] += t[0],
						n[1] += t[1]
					})) : n = r[r.length - 1],
					e < 0 ? [n, i] : [i, n]
				} (e),
				a = s[0],
				u = s[1];
				if (n = o[a]) if (delete o[n.end], n.push(e), n.end = u, r = i[u]) {
					delete i[r.start];
					var c = r === n ? n: n.concat(r);
					i[c.start = n.start] = o[c.end = r.end] = c
				} else i[n.start] = o[n.end] = n;
				else if (n = i[u]) if (delete i[n.start], n.unshift(e), n.start = a, r = o[a]) {
					delete o[r.end];
					var l = r === n ? n: r.concat(n);
					i[l.start = r.start] = o[l.end = n.end] = l
				} else i[n.start] = o[n.end] = n;
				else i[(n = [e]).start = a] = o[n.end = u] = n
			}),
			n(o, i),
			n(i, o),
			e.forEach(function(t) {
				r[t < 0 ? ~t: t] || s.push([t])
			}),
			s
		},
		fs = function(t) {
			return zt(t, Yt.apply(this, arguments))
		},
		ps = function(t, e, n, r, i, o) {
			3 === arguments.length && (r = o = Array, i = null);
			for (var s = new r(t = 1 << Math.max(4, Math.ceil(Math.log(t) / Math.LN2))), a = new o(t), u = t - 1, c = 0; c < t; ++c) s[c] = i;
			return {
				set: function(r, o) {
					for (var c = e(r) & u, l = s[c], h = 0; l != i;) {
						if (n(l, r)) return a[c] = o;
						if (++h >= t) throw new Error("full hashmap");
						l = s[c = c + 1 & u]
					}
					return s[c] = r,
					a[c] = o,
					o
				},
				maybeSet: function(r, o) {
					for (var c = e(r) & u, l = s[c], h = 0; l != i;) {
						if (n(l, r)) return a[c];
						if (++h >= t) throw new Error("full hashmap");
						l = s[c = c + 1 & u]
					}
					return s[c] = r,
					a[c] = o,
					o
				},
				get: function(r, o) {
					for (var c = e(r) & u, l = s[c], h = 0; l != i;) {
						if (n(l, r)) return a[c];
						if (++h >= t) break;
						l = s[c = c + 1 & u]
					}
					return o
				},
				keys: function() {
					for (var t = [], e = 0, n = s.length; e < n; ++e) {
						var r = s[e];
						r != i && t.push(r)
					}
					return t
				}
			}
		},
		ds = function(t, e) {
			return t[0] === e[0] && t[1] === e[1]
		},
		gs = new ArrayBuffer(16),
		ys = new Float64Array(gs),
		vs = new Uint32Array(gs),
		ms = function(t) {
			ys[0] = t[0],
			ys[1] = t[1];
			var e = vs[0] ^ vs[1];
			return 2147483647 & (e = e << 5 ^ e >> 7 ^ vs[2] ^ vs[3])
		},
		_s = function(t) {
			function e(t, e, n, r) {
				if (f[n] !== t) {
					f[n] = t;
					var i = p[n];
					if (i >= 0) {
						var o = d[n];
						i === e && o === r || i === r && o === e || (++y, g[n] = 1)
					} else p[n] = e,
					d[n] = r
				}
			}
			function n(t) {
				return ms(u[t])
			}
			function r(t, e) {
				return ds(u[t], u[e])
			}
			var i, o, s, a, u = t.coordinates,
			c = t.lines,
			l = t.rings,
			h = function() {
				for (var t = ps(1.4 * u.length, n, r, Int32Array, -1, Int32Array), e = new Int32Array(u.length), i = 0, o = u.length; i < o; ++i) e[i] = t.maybeSet(i, i);
				return e
			} (),
			f = new Int32Array(u.length),
			p = new Int32Array(u.length),
			d = new Int32Array(u.length),
			g = new Int8Array(u.length),
			y = 0;
			for (i = 0, o = u.length; i < o; ++i) f[i] = p[i] = d[i] = -1;
			for (i = 0, o = c.length; i < o; ++i) {
				var v = c[i],
				m = v[0],
				_ = v[1];
				for (s = h[m], a = h[++m], ++y, g[s] = 1; ++m <= _;) e(i, s, s = a, a = h[m]); ++y,
				g[a] = 1
			}
			for (i = 0, o = u.length; i < o; ++i) f[i] = -1;
			for (i = 0, o = l.length; i < o; ++i) {
				var w = l[i],
				b = w[0] + 1,
				x = w[1];
				for (e(i, h[x - 1], s = h[b - 1], a = h[b]); ++b <= x;) e(i, s, s = a, a = h[b])
			}
			f = p = d = null;
			var E, M = function(t, e, n, r, i) {
				3 === arguments.length && (r = Array, i = null);
				for (var o = new r(t = 1 << Math.max(4, Math.ceil(Math.log(t) / Math.LN2))), s = t - 1, a = 0; a < t; ++a) o[a] = i;
				return {
					add: function(r) {
						for (var a = e(r) & s, u = o[a], c = 0; u != i;) {
							if (n(u, r)) return ! 0;
							if (++c >= t) throw new Error("full hashset");
							u = o[a = a + 1 & s]
						}
						return o[a] = r,
						!0
					},
					has: function(r) {
						for (var a = e(r) & s, u = o[a], c = 0; u != i;) {
							if (n(u, r)) return ! 0;
							if (++c >= t) break;
							u = o[a = a + 1 & s]
						}
						return ! 1
					},
					values: function() {
						for (var t = [], e = 0, n = o.length; e < n; ++e) {
							var r = o[e];
							r != i && t.push(r)
						}
						return t
					}
				}
			} (1.4 * y, ms, ds);
			for (i = 0, o = u.length; i < o; ++i) g[E = h[i]] && M.add(u[E]);
			return M
		},
		ws = function(t) {
			var e, n, r, i = _s(t),
			o = t.coordinates,
			s = t.lines,
			a = t.rings;
			for (n = 0, r = s.length; n < r; ++n) for (var u = s[n], c = u[0], l = u[1]; ++c < l;) i.has(o[c]) && (e = {
				0 : c,
				1 : u[1]
			},
			u[1] = c, u = u.next = e);
			for (n = 0, r = a.length; n < r; ++n) for (var h = a[n], f = h[0], p = f, d = h[1], g = i.has(o[f]); ++p < d;) i.has(o[p]) && (g ? (e = {
				0 : p,
				1 : h[1]
			},
			h[1] = p, h = h.next = e) : (function(t, e, n, r) {
				Xt(t, e, n),
				Xt(t, e, e + r),
				Xt(t, e + r, n)
			} (o, f, d, d - p), o[d] = o[f], g = !0, p = f));
			return t
		},
		bs = function(t) {
			function e(t) {
				var e, n, r, i, o, s, a, u;
				if (r = p.get(e = c[t[0]])) for (a = 0, u = r.length; a < u; ++a) if (i = r[a],
				function(t, e) {
					var n = t[0],
					r = e[0],
					i = t[1];
					if (n - i != r - e[1]) return ! 1;
					for (; n <= i; ++n, ++r) if (!ds(c[n], c[r])) return ! 1;
					return ! 0
				} (i, t)) return t[0] = i[0],
				void(t[1] = i[1]);
				if (o = p.get(n = c[t[1]])) for (a = 0, u = o.length; a < u; ++a) if (s = o[a],
				function(t, e) {
					var n = t[0],
					r = e[0],
					i = t[1],
					o = e[1];
					if (n - i != r - o) return ! 1;
					for (; n <= i; ++n, --o) if (!ds(c[n], c[o])) return ! 1;
					return ! 0
				} (s, t)) return t[1] = s[0],
				void(t[0] = s[1]);
				r ? r.push(t) : p.set(e, [t]),
				o ? o.push(t) : p.set(n, [t]),
				d.push(t)
			}
			function n(t, e) {
				var n = t[0],
				r = e[0],
				o = t[1] - n;
				if (o !== e[1] - r) return ! 1;
				for (var s = i(t), a = i(e), u = 0; u < o; ++u) if (!ds(c[n + (u + s) % o], c[r + (u + a) % o])) return ! 1;
				return ! 0
			}
			function r(t, e) {
				var n = t[0],
				r = e[0],
				o = t[1],
				s = e[1],
				a = o - n;
				if (a !== s - r) return ! 1;
				for (var u = i(t), l = a - i(e), h = 0; h < a; ++h) if (!ds(c[n + (h + u) % a], c[s - (h + l) % a])) return ! 1;
				return ! 0
			}
			function i(t) {
				for (var e = t[0], n = t[1], r = e, i = r, o = c[r]; ++r < n;) {
					var s = c[r]; (s[0] < o[0] || s[0] === o[0] && s[1] < o[1]) && (i = r, o = s)
				}
				return i - e
			}
			var o, s, a, u, c = t.coordinates,
			l = t.lines,
			h = t.rings,
			f = l.length + h.length;
			for (delete t.lines, delete t.rings, a = 0, u = l.length; a < u; ++a) for (o = l[a]; o = o.next;)++f;
			for (a = 0, u = h.length; a < u; ++a) for (s = h[a]; s = s.next;)++f;
			var p = ps(2 * f * 1.4, ms, ds),
			d = t.arcs = [];
			for (a = 0, u = l.length; a < u; ++a) {
				o = l[a];
				do {
					e(o)
				} while ( o = o . next )
			}
			for (a = 0, u = h.length; a < u; ++a) if ((s = h[a]).next) do {
				e(s)
			} while ( s = s . next );
			else !
			function(t) {
				var e, o, s, a, u;
				if (o = p.get(e = c[t[0]])) for (a = 0, u = o.length; a < u; ++a) {
					if (s = o[a], n(s, t)) return t[0] = s[0],
					void(t[1] = s[1]);
					if (r(s, t)) return t[0] = s[1],
					void(t[1] = s[0])
				}
				if (o = p.get(e = c[t[0] + i(t)])) for (a = 0, u = o.length; a < u; ++a) {
					if (s = o[a], n(s, t)) return t[0] = s[0],
					void(t[1] = s[1]);
					if (r(s, t)) return t[0] = s[1],
					void(t[1] = s[0])
				}
				o ? o.push(t) : p.set(e, [t]),
				d.push(t)
			} (s);
			return t
		},
		xs = function(t, e) {
			function n(t) {
				t && l.hasOwnProperty(t.type) && l[t.type](t)
			}
			function r(t) {
				var e = [];
				do {
					var n = c.get(t);
					e.push(t[0] < t[1] ? n: ~n)
				} while ( t = t . next );
				return e
			}
			function i(t) {
				return t.map(r)
			}
			var o = function(t) {
				function e(t) {
					null != t && c.hasOwnProperty(t.type) && c[t.type](t)
				}
				function n(t) {
					var e = t[0],
					n = t[1];
					e < o && (o = e),
					e > a && (a = e),
					n < s && (s = n),
					n > u && (u = n)
				}
				function r(t) {
					t.forEach(n)
				}
				function i(t) {
					t.forEach(r)
				}
				var o = 1 / 0,
				s = 1 / 0,
				a = -1 / 0,
				u = -1 / 0,
				c = {
					GeometryCollection: function(t) {
						t.geometries.forEach(e)
					},
					Point: function(t) {
						n(t.coordinates)
					},
					MultiPoint: function(t) {
						t.coordinates.forEach(n)
					},
					LineString: function(t) {
						r(t.arcs)
					},
					MultiLineString: function(t) {
						t.arcs.forEach(r)
					},
					Polygon: function(t) {
						t.arcs.forEach(r)
					},
					MultiPolygon: function(t) {
						t.arcs.forEach(i)
					}
				};
				for (var l in t) e(t[l]);
				return a >= o && u >= s ? [o, s, a, u] : void 0
			} (t = function(t) {
				var e, n = {};
				for (e in t) n[e] = Vt(t[e]);
				return n
			} (t)),
			s = e > 0 && o &&
			function(t, e, n) {
				function r(t) {
					return [Math.round((t[0] - c) * p), Math.round((t[1] - l) * d)]
				}
				function i(t, e) {
					for (var n, r, i, o, s, a = -1,
					u = 0,
					h = t.length,
					f = new Array(h); ++a < h;) n = t[a],
					o = Math.round((n[0] - c) * p),
					s = Math.round((n[1] - l) * d),
					o === r && s === i || (f[u++] = [r = o, i = s]);
					for (f.length = u; u < e;) u = f.push([f[0][0], f[0][1]]);
					return f
				}
				function o(t) {
					return i(t, 2)
				}
				function s(t) {
					return i(t, 4)
				}
				function a(t) {
					return t.map(s)
				}
				function u(t) {
					null != t && g.hasOwnProperty(t.type) && g[t.type](t)
				}
				var c = e[0],
				l = e[1],
				h = e[2],
				f = e[3],
				p = h - c ? (n - 1) / (h - c) : 1,
				d = f - l ? (n - 1) / (f - l) : 1,
				g = {
					GeometryCollection: function(t) {
						t.geometries.forEach(u)
					},
					Point: function(t) {
						t.coordinates = r(t.coordinates)
					},
					MultiPoint: function(t) {
						t.coordinates = t.coordinates.map(r)
					},
					LineString: function(t) {
						t.arcs = o(t.arcs)
					},
					MultiLineString: function(t) {
						t.arcs = t.arcs.map(o)
					},
					Polygon: function(t) {
						t.arcs = a(t.arcs)
					},
					MultiPolygon: function(t) {
						t.arcs = t.arcs.map(a)
					}
				};
				for (var y in t) u(t[y]);
				return {
					scale: [1 / p, 1 / d],
					translate: [c, l]
				}
			} (t, o, e),
			a = bs(ws(function(t) {
				function e(t) {
					t && c.hasOwnProperty(t.type) && c[t.type](t)
				}
				function n(t) {
					for (var e = 0,
					n = t.length; e < n; ++e) u[++o] = t[e];
					var r = {
						0 : o - n + 1,
						1 : o
					};
					return s.push(r),
					r
				}
				function r(t) {
					for (var e = 0,
					n = t.length; e < n; ++e) u[++o] = t[e];
					var r = {
						0 : o - n + 1,
						1 : o
					};
					return a.push(r),
					r
				}
				function i(t) {
					return t.map(r)
				}
				var o = -1,
				s = [],
				a = [],
				u = [],
				c = {
					GeometryCollection: function(t) {
						t.geometries.forEach(e)
					},
					LineString: function(t) {
						t.arcs = n(t.arcs)
					},
					MultiLineString: function(t) {
						t.arcs = t.arcs.map(n)
					},
					Polygon: function(t) {
						t.arcs = t.arcs.map(r)
					},
					MultiPolygon: function(t) {
						t.arcs = t.arcs.map(i)
					}
				};
				for (var l in t) e(t[l]);
				return {
					type: "Topology",
					coordinates: u,
					lines: s,
					rings: a,
					objects: t
				}
			} (t))),
			u = a.coordinates,
			c = ps(1.4 * a.arcs.length, Jt, Zt);
			t = a.objects,
			a.bbox = o,
			a.arcs = a.arcs.map(function(t, e) {
				return c.set(t, e),
				u.slice(t[0], t[1] + 1)
			}),
			delete a.coordinates,
			u = null;
			var l = {
				GeometryCollection: function(t) {
					t.geometries.forEach(n)
				},
				LineString: function(t) {
					t.arcs = r(t.arcs)
				},
				MultiLineString: function(t) {
					t.arcs = t.arcs.map(r)
				},
				Polygon: function(t) {
					t.arcs = t.arcs.map(r)
				},
				MultiPolygon: function(t) {
					t.arcs = t.arcs.map(i)
				}
			};
			for (var h in t) n(t[h]);
			return s && (a.transform = s, a.arcs = function(t) {
				for (var e = -1,
				n = t.length; ++e < n;) {
					for (var r, i, o = t[e], s = 0, a = 1, u = o.length, c = o[0], l = c[0], h = c[1]; ++s < u;) r = (c = o[s])[0],
					i = c[1],
					r === l && i === h || (o[a++] = [r - l, i - h], l = r, h = i);
					1 === a && (o[a++] = [0, 0]),
					o.length = a
				}
				return t
			} (a.arcs)),
			a
		},
		Es = function(t) {
			this.points = t.points || [],
			this.duration = t.duration || 1e4,
			this.sharpness = t.sharpness || .85,
			this.centers = [],
			this.controls = [],
			this.stepLength = t.stepLength || 60,
			this.length = this.points.length,
			this.delay = 0;
			for (var e = 0; e < this.length; e++) this.points[e].z = this.points[e].z || 0;
			for (e = 0; e < this.length - 1; e++) {
				var n = this.points[e],
				r = this.points[e + 1];
				this.centers.push({
					x: (n.x + r.x) / 2,
					y: (n.y + r.y) / 2,
					z: (n.z + r.z) / 2
				})
			}
			for (this.controls.push([this.points[0], this.points[0]]), e = 0; e < this.centers.length - 1; e++) {
				n = this.centers[e],
				r = this.centers[e + 1];
				var i = this.points[e + 1].x - (this.centers[e].x + this.centers[e + 1].x) / 2,
				o = this.points[e + 1].y - (this.centers[e].y + this.centers[e + 1].y) / 2,
				s = this.points[e + 1].z - (this.centers[e].y + this.centers[e + 1].z) / 2;
				this.controls.push([{
					x: (1 - this.sharpness) * this.points[e + 1].x + this.sharpness * (this.centers[e].x + i),
					y: (1 - this.sharpness) * this.points[e + 1].y + this.sharpness * (this.centers[e].y + o),
					z: (1 - this.sharpness) * this.points[e + 1].z + this.sharpness * (this.centers[e].z + s)
				},
				{
					x: (1 - this.sharpness) * this.points[e + 1].x + this.sharpness * (this.centers[e + 1].x + i),
					y: (1 - this.sharpness) * this.points[e + 1].y + this.sharpness * (this.centers[e + 1].y + o),
					z: (1 - this.sharpness) * this.points[e + 1].z + this.sharpness * (this.centers[e + 1].z + s)
				}])
			}
			return this.controls.push([this.points[this.length - 1], this.points[this.length - 1]]),
			this.steps = this.cacheSteps(this.stepLength),
			this
		};
		Es.prototype.cacheSteps = function(t) {
			var e = [],
			n = this.pos(0);
			e.push(0);
			for (var r = 0; r < this.duration; r += 10) {
				var i = this.pos(r);
				Math.sqrt((i.x - n.x) * (i.x - n.x) + (i.y - n.y) * (i.y - n.y) + (i.z - n.z) * (i.z - n.z)) > t && (e.push(r), n = i)
			}
			return e
		},
		Es.prototype.vector = function(t) {
			var e = this.pos(t + 10),
			n = this.pos(t - 10);
			return {
				angle: 180 * Math.atan2(e.y - n.y, e.x - n.x) / 3.14,
				speed: Math.sqrt((n.x - e.x) * (n.x - e.x) + (n.y - e.y) * (n.y - e.y) + (n.z - e.z) * (n.z - e.z))
			}
		},
		Es.prototype.pos = function(t) {
			var e = t - this.delay;
			e < 0 && (e = 0),
			e > this.duration && (e = this.duration - 1);
			var n = e / this.duration;
			if (n >= 1) return this.points[this.length - 1];
			var r = Math.floor((this.points.length - 1) * n);
			return function(t, e, n, r, i) {
				var o = function(t) {
					var e = t * t;
					return [e * t, 3 * e * (1 - t), 3 * t * (1 - t) * (1 - t), (1 - t) * (1 - t) * (1 - t)]
				} (t);
				return {
					x: i.x * o[0] + r.x * o[1] + n.x * o[2] + e.x * o[3],
					y: i.y * o[0] + r.y * o[1] + n.y * o[2] + e.y * o[3],
					z: i.z * o[0] + r.z * o[1] + n.z * o[2] + e.z * o[3]
				}
			} ((this.length - 1) * n - r, this.points[r], this.controls[r][1], this.controls[r + 1][0], this.points[r + 1])
		};
		var Ms = _e,
		Is = _e;
		_e.deviation = function(t, e, n, r) {
			var i = e && e.length,
			o = i ? e[0] * n: t.length,
			s = Math.abs(Re(t, 0, o, n));
			if (i) for (var a = 0,
			u = e.length; a < u; a++) {
				var c = e[a] * n,
				l = a < u - 1 ? e[a + 1] * n: t.length;
				s -= Math.abs(Re(t, c, l, n))
			}
			var h = 0;
			for (a = 0; a < r.length; a += 3) {
				var f = r[a] * n,
				p = r[a + 1] * n,
				d = r[a + 2] * n;
				h += Math.abs((t[f] - t[d]) * (t[p + 1] - t[f + 1]) - (t[f] - t[p]) * (t[d + 1] - t[f + 1]))
			}
			return 0 === s && 0 === h ? 0 : Math.abs((h - s) / s)
		},
		_e.flatten = function(t) {
			for (var e = t[0][0].length, n = {
				vertices: [],
				holes: [],
				dimensions: e
			},
			r = 0, i = 0; i < t.length; i++) {
				for (var o = 0; o < t[i].length; o++) for (var s = 0; s < e; s++) n.vertices.push(t[i][o][s]);
				i > 0 && (r += t[i - 1].length, n.holes.push(r))
			}
			return n
		},
		Ms.
	default = Is,
		Be.prototype = {
			all: function() {
				return this._all(this.data, [])
			},
			search: function(t) {
				var e = this.data,
				n = [],
				r = this.toBBox;
				if (!Je(t, e)) return n;
				for (var i, o, s, a, u = []; e;) {
					for (i = 0, o = e.children.length; i < o; i++) s = e.children[i],
					Je(t, a = e.leaf ? r(s) : s) && (e.leaf ? n.push(s) : He(t, a) ? this._all(s, n) : u.push(s));
					e = u.pop()
				}
				return n
			},
			collides: function(t) {
				var e = this.data,
				n = this.toBBox;
				if (!Je(t, e)) return ! 1;
				for (var r, i, o, s, a = []; e;) {
					for (r = 0, i = e.children.length; r < i; r++) if (o = e.children[r], s = e.leaf ? n(o) : o, Je(t, s)) {
						if (e.leaf || He(t, s)) return ! 0;
						a.push(o)
					}
					e = a.pop()
				}
				return ! 1
			},
			load: function(t) {
				if (!t || !t.length) return this;
				if (t.length < this._minEntries) {
					for (var e = 0,
					n = t.length; e < n; e++) this.insert(t[e]);
					return this
				}
				var r = this._build(t.slice(), 0, t.length - 1, 0);
				if (this.data.children.length) if (this.data.height === r.height) this._splitRoot(this.data, r);
				else {
					if (this.data.height < r.height) {
						var i = this.data;
						this.data = r,
						r = i
					}
					this._insert(r, this.data.height - r.height - 1, !0)
				} else this.data = r;
				return this
			},
			insert: function(t) {
				return t && this._insert(t, this.data.height - 1),
				this
			},
			clear: function() {
				return this.data = Ze([]),
				this
			},
			remove: function(t, e) {
				if (!t) return this;
				for (var n, r, i, o, s = this.data,
				a = this.toBBox(t), u = [], c = []; s || u.length;) {
					if (s || (s = u.pop(), r = u[u.length - 1], n = c.pop(), o = !0), s.leaf && -1 !== (i = function(t, e, n) {
						if (!n) return e.indexOf(t);
						for (var r = 0; r < e.length; r++) if (n(t, e[r])) return r;
						return - 1
					} (t, s.children, e))) return s.children.splice(i, 1),
					u.push(s),
					this._condense(u),
					this;
					o || s.leaf || !He(s, a) ? r ? (n++, s = r.children[n], o = !1) : s = null: (u.push(s), c.push(n), n = 0, r = s, s = s.children[0])
				}
				return this
			},
			toBBox: function(t) {
				return t
			},
			compareMinX: Ye,
			compareMinY: Xe,
			toJSON: function() {
				return this.data
			},
			fromJSON: function(t) {
				return this.data = t,
				this
			},
			_all: function(t, e) {
				for (var n = []; t;) t.leaf ? e.push.apply(e, t.children) : n.push.apply(n, t.children),
				t = n.pop();
				return e
			},
			_build: function(t, e, n, r) {
				var i, o = n - e + 1,
				s = this._maxEntries;
				if (o <= s) return i = Ze(t.slice(e, n + 1)),
				Ge(i, this.toBBox),
				i;
				r || (r = Math.ceil(Math.log(o) / Math.log(s)), s = Math.ceil(o / Math.pow(s, r - 1))),
				(i = Ze([])).leaf = !1,
				i.height = r;
				var a, u, c, l, h = Math.ceil(o / s),
				f = h * Math.ceil(Math.sqrt(s));
				for (Qe(t, e, n, f, this.compareMinX), a = e; a <= n; a += f) for (Qe(t, a, c = Math.min(a + f - 1, n), h, this.compareMinY), u = a; u <= c; u += h) l = Math.min(u + h - 1, c),
				i.children.push(this._build(t, u, l, r - 1));
				return Ge(i, this.toBBox),
				i
			},
			_chooseSubtree: function(t, e, n, r) {
				for (var i, o, s, a, u, c, l, h; r.push(e), !e.leaf && r.length - 1 !== n;) {
					for (l = h = 1 / 0, i = 0, o = e.children.length; i < o; i++) u = Ve(s = e.children[i]),
					(c = function(t, e) {
						return (Math.max(e.maxX, t.maxX) - Math.min(e.minX, t.minX)) * (Math.max(e.maxY, t.maxY) - Math.min(e.minY, t.minY))
					} (t, s) - u) < h ? (h = c, l = u < l ? u: l, a = s) : c === h && u < l && (l = u, a = s);
					e = a || e.children[0]
				}
				return e
			},
			_insert: function(t, e, n) {
				var r = this.toBBox,
				i = n ? t: r(t),
				o = [],
				s = this._chooseSubtree(i, this.data, e, o);
				for (s.children.push(t), ze(s, i); e >= 0 && o[e].children.length > this._maxEntries;) this._split(o, e),
				e--;
				this._adjustParentBBoxes(i, o, e)
			},
			_split: function(t, e) {
				var n = t[e],
				r = n.children.length,
				i = this._minEntries;
				this._chooseSplitAxis(n, i, r);
				var o = this._chooseSplitIndex(n, i, r),
				s = Ze(n.children.splice(o, n.children.length - o));
				s.height = n.height,
				s.leaf = n.leaf,
				Ge(n, this.toBBox),
				Ge(s, this.toBBox),
				e ? t[e - 1].children.push(s) : this._splitRoot(n, s)
			},
			_splitRoot: function(t, e) {
				this.data = Ze([t, e]),
				this.data.height = t.height + 1,
				this.data.leaf = !1,
				Ge(this.data, this.toBBox)
			},
			_chooseSplitIndex: function(t, e, n) {
				var r, i, o, s, a, u, c, l;
				for (u = c = 1 / 0, r = e; r <= n - e; r++) s = function(t, e) {
					var n = Math.max(t.minX, e.minX),
					r = Math.max(t.minY, e.minY),
					i = Math.min(t.maxX, e.maxX),
					o = Math.min(t.maxY, e.maxY);
					return Math.max(0, i - n) * Math.max(0, o - r)
				} (i = Ue(t, 0, r, this.toBBox), o = Ue(t, r, n, this.toBBox)),
				a = Ve(i) + Ve(o),
				s < u ? (u = s, l = r, c = a < c ? a: c) : s === u && a < c && (c = a, l = r);
				return l
			},
			_chooseSplitAxis: function(t, e, n) {
				var r = t.leaf ? this.compareMinX: Ye,
				i = t.leaf ? this.compareMinY: Xe;
				this._allDistMargin(t, e, n, r) < this._allDistMargin(t, e, n, i) && t.children.sort(r)
			},
			_allDistMargin: function(t, e, n, r) {
				t.children.sort(r);
				var i, o, s = this.toBBox,
				a = Ue(t, 0, e, s),
				u = Ue(t, n - e, n, s),
				c = We(a) + We(u);
				for (i = e; i < n - e; i++) o = t.children[i],
				ze(a, t.leaf ? s(o) : o),
				c += We(a);
				for (i = n - e - 1; i >= e; i--) o = t.children[i],
				ze(u, t.leaf ? s(o) : o),
				c += We(u);
				return c
			},
			_adjustParentBBoxes: function(t, e, n) {
				for (var r = n; r >= 0; r--) ze(e[r], t)
			},
			_condense: function(t) {
				for (var e, n = t.length - 1; n >= 0; n--) 0 === t[n].children.length ? n > 0 ? (e = t[n - 1].children).splice(e.indexOf(t[n]), 1) : this.clear() : Ge(t[n], this.toBBox)
			},
			_initFormat: function(t) {
				var e = ["return a", " - b", ";"];
				this.compareMinX = new Function("a", "b", e.join(t[0])),
				this.compareMinY = new Function("a", "b", e.join(t[1])),
				this.toBBox = new Function("a", "return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
			}
		};
		var Ss = Object.freeze({
			toMercator: cn,
			toWgs84: ln
		}),
		Cs = 6378137,
		Ns = function(t, e, n) {
			function r(t, n, r, i) {
				var u = o[t][n],
				c = o[t][n + 1],
				l = o[r][i],
				h = o[r][i + 1],
				f = function(t, e, n, r) {
					if (An(t, n) || An(t, r) || An(e, n) || An(r, n)) return null;
					var i = t[0],
					o = t[1],
					s = e[0],
					a = e[1],
					u = n[0],
					c = n[1],
					l = r[0],
					h = r[1],
					f = (i - s) * (c - h) - (o - a) * (u - l);
					return 0 === f ? null: [((i * a - o * s) * (u - l) - (i - s) * (u * h - c * l)) / f, ((i * a - o * s) * (c - h) - (o - a) * (u * h - c * l)) / f]
				} (u, c, l, h);
				if (null !== f) {
					var p, d;
					if (p = c[0] !== u[0] ? (f[0] - u[0]) / (c[0] - u[0]) : (f[1] - u[1]) / (c[1] - u[1]), d = h[0] !== l[0] ? (f[0] - l[0]) / (h[0] - l[0]) : (f[1] - l[1]) / (h[1] - l[1]), !(p >= 1 || p <= 0 || d >= 1 || d <= 0)) {
						var g = f,
						y = !a[g];
						y && (a[g] = !0),
						e ? s.push(e(f, t, n, u, c, p, r, i, l, h, d, y)) : s.push(f)
					}
				}
			}
			function i(t, e) {
				var n, r, i, s, a = o[t][e],
				u = o[t][e + 1];
				return a[0] < u[0] ? (n = a[0], r = u[0]) : (n = u[0], r = a[0]),
				a[1] < u[1] ? (i = a[1], s = u[1]) : (i = u[1], s = a[1]),
				{
					minX: n,
					minY: i,
					maxX: r,
					maxY: s,
					ring: t,
					edge: e
				}
			}
			if ("Polygon" !== t.geometry.type) throw new Error("The input feature must be a Polygon");
			void 0 === n && (n = 1);
			var o = t.geometry.coordinates,
			s = [],
			a = {};
			if (n) {
				for (var u = [], c = 0; c < o.length; c++) for (var l = 0; l < o[c].length - 1; l++) u.push(i(c, l));
				var h = Vo();
				h.load(u)
			}
			for (var f = 0; f < o.length; f++) for (var p = 0; p < o[f].length - 1; p++) if (n) h.search(i(f, p)).forEach(function(t) {
				var e = t.ring,
				n = t.edge;
				r(f, p, e, n)
			});
			else for (var d = 0; d < o.length; d++) for (var g = 0; g < o[d].length - 1; g++) r(f, p, d, g);
			return e || (s = {
				type: "Feature",
				geometry: {
					type: "MultiPoint",
					coordinates: s
				}
			}),
			s
		},
		Ps = function(t) {
			function e() {
				for (var t = [], e = 0; e < d.features.length; e++) - 1 == d.features[e].properties.parent && t.push(e);
				if (t.length > 1) for (e = 0; e < t.length; e++) {
					for (var n = -1,
					r = 0; r < d.features.length; r++) t[e] != r && Lt(d.features[t[e]].geometry.coordinates[0][0], d.features[r], {
						ignoreBoundary: !0
					}) && mn(d.features[r]) < 1 / 0 && (n = r);
					d.features[t[e]].properties.parent = n
				}
			}
			function n() {
				for (var t = 0; t < d.features.length; t++) if ( - 1 == d.features[t].properties.parent) {
					var e = d.features[t].properties.winding;
					d.features[t].properties.netWinding = e,
					r(t, e)
				}
			}
			function r(t, e) {
				for (var n = 0; n < d.features.length; n++) if (d.features[n].properties.parent == t) {
					var i = e + d.features[n].properties.winding;
					d.features[n].properties.netWinding = i,
					r(n, i)
				}
			}
			if ("Feature" != t.type) throw new Error("The input must a geojson object of type Feature");
			if (void 0 === t.geometry || null == t.geometry) throw new Error("The input must a geojson object with a non-empty geometry");
			if ("Polygon" != t.geometry.type) throw new Error("The input must be a geojson Polygon");
			for (var i = t.geometry.coordinates.length,
			s = [], a = 0; a < i; a++) {
				var u = t.geometry.coordinates[a];
				Tn(u[0], u[u.length - 1]) || u.push(u[0]),
				s.push.apply(s, u.slice(0, u.length - 1))
			}
			if (!
			function(t) {
				for (var e = {},
				n = 1,
				r = 0,
				i = t.length; r < i; ++r) {
					if (e.hasOwnProperty(t[r])) {
						n = 0;
						break
					}
					e[t[r]] = 1
				}
				return n
			} (s)) throw new Error("The input polygon may not have duplicate vertices (except for the first and last vertex of each ring)");
			var l = s.length,
			h = Ns(t,
			function(t, e, n, r, i, o, s, a, u, c, l, h) {
				return [t, e, n, r, i, o, s, a, u, c, l, h]
			}),
			f = h.length;
			if (0 == f) {
				var p = [];
				for (a = 0; a < i; a++) p.push(o([t.geometry.coordinates[a]], {
					parent: -1,
					winding: function(t) {
						for (var e = 0,
						n = 0; n < t.length - 1; n++) t[n][0] < t[e][0] && (e = n);
						if (On([t[(e - 1).modulo(t.length - 1)], t[e], t[(e + 1).modulo(t.length - 1)]], !0)) var r = 1;
						else r = -1;
						return r
					} (t.geometry.coordinates[a])
				}));
				var d = c(p);
				return e(),
				n(),
				d
			}
			var g = [],
			y = [];
			for (a = 0; a < i; a++) {
				g.push([]);
				for (var v = 0; v < t.geometry.coordinates[a].length - 1; v++) g[a].push([new Ls(t.geometry.coordinates[a][(v + 1).modulo(t.geometry.coordinates[a].length - 1)], 1, [a, v], [a, (v + 1).modulo(t.geometry.coordinates[a].length - 1)], void 0)]),
				y.push(new As(t.geometry.coordinates[a][v], [a, (v - 1).modulo(t.geometry.coordinates[a].length - 1)], [a, v], void 0, void 0, !1, !0))
			}
			for (a = 0; a < f; a++) g[h[a][1]][h[a][2]].push(new Ls(h[a][0], h[a][5], [h[a][1], h[a][2]], [h[a][6], h[a][7]], void 0)),
			h[a][11] && y.push(new As(h[a][0], [h[a][1], h[a][2]], [h[a][6], h[a][7]], void 0, void 0, !0, !0));
			var m = y.length;
			for (a = 0; a < g.length; a++) for (v = 0; v < g[a].length; v++) g[a][v].sort(function(t, e) {
				return t.param < e.param ? -1 : 1
			});
			var _ = [];
			for (a = 0; a < m; a++) _.push({
				minX: y[a].coord[0],
				minY: y[a].coord[1],
				maxX: y[a].coord[0],
				maxY: y[a].coord[1],
				index: a
			});
			var w = Vo();
			for (w.load(_), a = 0; a < g.length; a++) for (v = 0; v < g[a].length; v++) for (var b = 0; b < g[a][v].length; b++) {
				E = b == g[a][v].length - 1 ? g[a][(v + 1).modulo(t.geometry.coordinates[a].length - 1)][0].coord: g[a][v][b + 1].coord;
				var x = w.search({
					minX: E[0],
					minY: E[1],
					maxX: E[0],
					maxY: E[1]
				})[0];
				g[a][v][b].nxtIsectAlongEdgeIn = x.index
			}
			for (a = 0; a < g.length; a++) for (v = 0; v < g[a].length; v++) for (b = 0; b < g[a][v].length; b++) {
				var E = g[a][v][b].coord,
				M = (x = w.search({
					minX: E[0],
					minY: E[1],
					maxX: E[0],
					maxY: E[1]
				})[0]).index;
				M < l ? y[M].nxtIsectAlongRingAndEdge2 = g[a][v][b].nxtIsectAlongEdgeIn: Tn(y[M].ringAndEdge1, g[a][v][b].ringAndEdgeIn) ? y[M].nxtIsectAlongRingAndEdge1 = g[a][v][b].nxtIsectAlongEdgeIn: y[M].nxtIsectAlongRingAndEdge2 = g[a][v][b].nxtIsectAlongEdgeIn
			}
			var I = [];
			for (a = 0, v = 0; v < i; v++) {
				var S = a;
				for (b = 0; b < t.geometry.coordinates[v].length - 1; b++) y[a].coord[0] < y[S].coord[0] && (S = a),
				a++;
				var C = y[S].nxtIsectAlongRingAndEdge2;
				for (b = 0; b < y.length; b++) if (y[b].nxtIsectAlongRingAndEdge1 == S || y[b].nxtIsectAlongRingAndEdge2 == S) {
					var N = b;
					break
				}
				var P = On([y[N].coord, y[S].coord, y[C].coord], !0) ? 1 : -1;
				I.push({
					isect: S,
					parent: -1,
					winding: P
				})
			}
			for (I.sort(function(t, e) {
				return y[t.isect].coord > y[e.isect].coord ? -1 : 1
			}), p = []; I.length > 0;) {
				var L = I.pop(),
				A = L.isect,
				O = L.parent,
				T = L.winding,
				R = p.length,
				D = [y[A].coord],
				k = A;
				if (y[A].ringAndEdge1Walkable) var F = y[A].ringAndEdge1,
				j = y[A].nxtIsectAlongRingAndEdge1;
				else F = y[A].ringAndEdge2,
				j = y[A].nxtIsectAlongRingAndEdge2;
				for (; ! Tn(y[A].coord, y[j].coord);) {
					D.push(y[j].coord);
					var q = void 0;
					for (a = 0; a < I.length; a++) if (I[a].isect == j) {
						q = a;
						break
					}
					if (void 0 != q && I.splice(q, 1), Tn(F, y[j].ringAndEdge1)) {
						if (F = y[j].ringAndEdge2, y[j].ringAndEdge2Walkable = !1, y[j].ringAndEdge1Walkable) {
							var B = {
								isect: j
							};
							On([y[k].coord, y[j].coord, y[y[j].nxtIsectAlongRingAndEdge2].coord], 1 == T) ? (B.parent = O, B.winding = -T) : (B.parent = R, B.winding = T),
							I.push(B)
						}
						k = j,
						j = y[j].nxtIsectAlongRingAndEdge2
					} else F = y[j].ringAndEdge1,
					y[j].ringAndEdge1Walkable = !1,
					y[j].ringAndEdge2Walkable && (B = {
						isect: j
					},
					On([y[k].coord, y[j].coord, y[y[j].nxtIsectAlongRingAndEdge1].coord], 1 == T) ? (B.parent = O, B.winding = -T) : (B.parent = R, B.winding = T), I.push(B)),
					k = j,
					j = y[j].nxtIsectAlongRingAndEdge1
				}
				D.push(y[j].coord),
				p.push(o([D], {
					index: R,
					parent: O,
					winding: T,
					netWinding: void 0
				}))
			}
			return d = c(p),
			e(),
			n(),
			d
		},
		Ls = function(t, e, n, r, i) {
			this.coord = t,
			this.param = e,
			this.ringAndEdgeIn = n,
			this.ringAndEdgeOut = r,
			this.nxtIsectAlongEdgeIn = i
		},
		As = function(t, e, n, r, i, o, s) {
			this.coord = t,
			this.ringAndEdge1 = e,
			this.ringAndEdge2 = n,
			this.nxtIsectAlongRingAndEdge1 = r,
			this.nxtIsectAlongRingAndEdge2 = i,
			this.ringAndEdge1Walkable = o,
			this.ringAndEdge2Walkable = s
		};
		Number.prototype.modulo = function(t) {
			return (this % t + t) % t
		};
		var Os = Math.PI / 180,
		Ts = 180 / Math.PI,
		Rs = function(t, e) {
			this.lon = t,
			this.lat = e,
			this.x = Os * t,
			this.y = Os * e
		};
		Rs.prototype.view = function() {
			return String(this.lon).slice(0, 4) + "," + String(this.lat).slice(0, 4)
		},
		Rs.prototype.antipode = function() {
			var t = -1 * this.lat,
			e = this.lon < 0 ? 180 + this.lon: -1 * (180 - this.lon);
			return new Rs(e, t)
		};
		var Ds = function() {
			this.coords = [],
			this.length = 0
		};
		Ds.prototype.move_to = function(t) {
			this.length++,
			this.coords.push(t)
		};
		var ks = function(t) {
			this.properties = t || {},
			this.geometries = []
		};
		ks.prototype.json = function() {
			if (this.geometries.length <= 0) return {
				geometry: {
					type: "LineString",
					coordinates: null
				},
				type: "Feature",
				properties: this.properties
			};
			if (1 === this.geometries.length) return {
				geometry: {
					type: "LineString",
					coordinates: this.geometries[0].coords
				},
				type: "Feature",
				properties: this.properties
			};
			for (var t = [], e = 0; e < this.geometries.length; e++) t.push(this.geometries[e].coords);
			return {
				geometry: {
					type: "MultiLineString",
					coordinates: t
				},
				type: "Feature",
				properties: this.properties
			}
		},
		ks.prototype.wkt = function() {
			for (var t = "",
			e = "LINESTRING(",
			n = function(t) {
				e += t[0] + " " + t[1] + ","
			},
			r = 0; r < this.geometries.length; r++) {
				if (0 === this.geometries[r].coords.length) return "LINESTRING(empty)";
				this.geometries[r].coords.forEach(n),
				t += e.substring(0, e.length - 1) + ")"
			}
			return t
		};
		var Fs = function(t, e, n) {
			if (!t || void 0 === t.x || void 0 === t.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
			if (!e || void 0 === e.x || void 0 === e.y) throw new Error("GreatCircle constructor expects two args: start and end objects with x and y properties");
			this.start = new Rs(t.x, t.y),
			this.end = new Rs(e.x, e.y),
			this.properties = n || {};
			var r = this.start.x - this.end.x,
			i = this.start.y - this.end.y,
			o = Math.pow(Math.sin(i / 2), 2) + Math.cos(this.start.y) * Math.cos(this.end.y) * Math.pow(Math.sin(r / 2), 2);
			if (this.g = 2 * Math.asin(Math.sqrt(o)), this.g === Math.PI) throw new Error("it appears " + t.view() + " and " + e.view() + " are 'antipodal', e.g diametrically opposite, thus there is no single route but rather infinite");
			if (isNaN(this.g)) throw new Error("could not calculate great circle between " + t + " and " + e)
		};
		Fs.prototype.interpolate = function(t) {
			var e = Math.sin((1 - t) * this.g) / Math.sin(this.g),
			n = Math.sin(t * this.g) / Math.sin(this.g),
			r = e * Math.cos(this.start.y) * Math.cos(this.start.x) + n * Math.cos(this.end.y) * Math.cos(this.end.x),
			i = e * Math.cos(this.start.y) * Math.sin(this.start.x) + n * Math.cos(this.end.y) * Math.sin(this.end.x),
			o = e * Math.sin(this.start.y) + n * Math.sin(this.end.y),
			s = Ts * Math.atan2(o, Math.sqrt(Math.pow(r, 2) + Math.pow(i, 2)));
			return [Ts * Math.atan2(i, r), s]
		},
		Fs.prototype.Arc = function(t, e) {
			var n = [];
			if (!t || t <= 2) n.push([this.start.lon, this.start.lat]),
			n.push([this.end.lon, this.end.lat]);
			else for (var r = 1 / (t - 1), i = 0; i < t; ++i) {
				var o = r * i,
				s = this.interpolate(o);
				n.push(s)
			}
			for (var a = !1,
			u = 0,
			c = e && e.offset ? e.offset: 10, l = 180 - c, h = -180 + c, f = 360 - c, p = 1; p < n.length; ++p) {
				var d = n[p - 1][0],
				g = n[p][0],
				y = Math.abs(g - d);
				y > f && (g > l && d < h || d > l && g < h) ? a = !0 : y > u && (u = y)
			}
			var v = [];
			if (a && u < c) {
				var m = [];
				v.push(m);
				for (var _ = 0; _ < n.length; ++_) {
					var w = parseFloat(n[_][0]);
					if (_ > 0 && Math.abs(w - n[_ - 1][0]) > f) {
						var b = parseFloat(n[_ - 1][0]),
						x = parseFloat(n[_ - 1][1]),
						E = parseFloat(n[_][0]),
						M = parseFloat(n[_][1]);
						if (b > -180 && b < h && 180 === E && _ + 1 < n.length && n[_ - 1][0] > -180 && n[_ - 1][0] < h) {
							m.push([ - 180, n[_][1]]),
							_++,
							m.push([n[_][0], n[_][1]]);
							continue
						}
						if (b > l && b < 180 && -180 === E && _ + 1 < n.length && n[_ - 1][0] > l && n[_ - 1][0] < 180) {
							m.push([180, n[_][1]]),
							_++,
							m.push([n[_][0], n[_][1]]);
							continue
						}
						if (b < h && E > l) {
							var I = b;
							b = E,
							E = I;
							var S = x;
							x = M,
							M = S
						}
						if (b > l && E < h && (E += 360), b <= 180 && E >= 180 && b < E) {
							var C = (180 - b) / (E - b),
							N = C * M + (1 - C) * x;
							m.push([n[_ - 1][0] > l ? 180 : -180, N]),
							(m = []).push([n[_ - 1][0] > l ? -180 : 180, N]),
							v.push(m)
						} else m = [],
						v.push(m);
						m.push([w, n[_][1]])
					} else m.push([n[_][0], n[_][1]])
				}
			} else {
				var P = [];
				v.push(P);
				for (var L = 0; L < n.length; ++L) P.push([n[L][0], n[L][1]])
			}
			for (var A = new ks(this.properties), O = 0; O < v.length; ++O) {
				var T = new Ds;
				A.geometries.push(T);
				for (var R = v[O], D = 0; D < R.length; ++D) T.move_to(R[D])
			}
			return A
		};
		var js = Xn;
		Xn.polyline = Xn,
		Xn.polygon = function(t, e) {
			var n, r, i, o, s, a, u;
			for (r = 1; r <= 8; r *= 2) {
				for (n = [], o = !(Wn(i = t[t.length - 1], e) & r), s = 0; s < t.length; s++)(u = !(Wn(a = t[s], e) & r)) !== o && n.push(Vn(i, a, r, e)),
				u && n.push(a),
				i = a,
				o = u;
				if (! (t = n).length) break
			}
			return n
		};
		var qs = Array.prototype.slice,
		Bs = {
			successCallback: null,
			verbose: !1,
			polygons: !1
		},
		Gs = {},
		Us = 64,
		zs = 16,
		Ys = 4,
		Xs = 1,
		Vs = [],
		Ws = [],
		Hs = [],
		Js = [],
		Zs = [],
		Qs = [],
		Ks = [],
		$s = [],
		ta = [],
		ea = [],
		na = [],
		ra = [],
		ia = [],
		oa = [],
		sa = [],
		aa = [],
		ua = [],
		ca = [],
		la = [],
		ha = [],
		fa = [],
		pa = [],
		da = [],
		ga = [];
		Ks[85] = ea[85] = -1,
		$s[85] = na[85] = 0,
		ta[85] = ra[85] = 1,
		la[85] = pa[85] = 1,
		ha[85] = da[85] = 0,
		fa[85] = ga[85] = 1,
		Vs[85] = Js[85] = 0,
		Ws[85] = Zs[85] = -1,
		Hs[85] = sa[85] = 0,
		aa[85] = ia[85] = 0,
		ua[85] = oa[85] = 1,
		Qs[85] = ca[85] = 1,
		pa[1] = pa[169] = 0,
		da[1] = da[169] = -1,
		ga[1] = ga[169] = 0,
		ia[1] = ia[169] = -1,
		oa[1] = oa[169] = 0,
		sa[1] = sa[169] = 0,
		ea[4] = ea[166] = 0,
		na[4] = na[166] = -1,
		ra[4] = ra[166] = 1,
		aa[4] = aa[166] = 1,
		ua[4] = ua[166] = 0,
		ca[4] = ca[166] = 0,
		Ks[16] = Ks[154] = 0,
		$s[16] = $s[154] = 1,
		ta[16] = ta[154] = 1,
		Js[16] = Js[154] = 1,
		Zs[16] = Zs[154] = 0,
		Qs[16] = Qs[154] = 1,
		la[64] = la[106] = 0,
		ha[64] = ha[106] = 1,
		fa[64] = fa[106] = 0,
		Vs[64] = Vs[106] = -1,
		Ws[64] = Ws[106] = 0,
		Hs[64] = Hs[106] = 1,
		la[2] = la[168] = 0,
		ha[2] = ha[168] = -1,
		fa[2] = fa[168] = 1,
		pa[2] = pa[168] = 0,
		da[2] = da[168] = -1,
		ga[2] = ga[168] = 0,
		ia[2] = ia[168] = -1,
		oa[2] = oa[168] = 0,
		sa[2] = sa[168] = 0,
		aa[2] = aa[168] = -1,
		ua[2] = ua[168] = 0,
		ca[2] = ca[168] = 1,
		Ks[8] = Ks[162] = 0,
		$s[8] = $s[162] = -1,
		ta[8] = ta[162] = 0,
		ea[8] = ea[162] = 0,
		na[8] = na[162] = -1,
		ra[8] = ra[162] = 1,
		ia[8] = ia[162] = 1,
		oa[8] = oa[162] = 0,
		sa[8] = sa[162] = 1,
		aa[8] = aa[162] = 1,
		ua[8] = ua[162] = 0,
		ca[8] = ca[162] = 0,
		Ks[32] = Ks[138] = 0,
		$s[32] = $s[138] = 1,
		ta[32] = ta[138] = 1,
		ea[32] = ea[138] = 0,
		na[32] = na[138] = 1,
		ra[32] = ra[138] = 0,
		Vs[32] = Vs[138] = 1,
		Ws[32] = Ws[138] = 0,
		Hs[32] = Hs[138] = 0,
		Js[32] = Js[138] = 1,
		Zs[32] = Zs[138] = 0,
		Qs[32] = Qs[138] = 1,
		pa[128] = pa[42] = 0,
		da[128] = da[42] = 1,
		ga[128] = ga[42] = 1,
		la[128] = la[42] = 0,
		ha[128] = ha[42] = 1,
		fa[128] = fa[42] = 0,
		Vs[128] = Vs[42] = -1,
		Ws[128] = Ws[42] = 0,
		Hs[128] = Hs[42] = 1,
		Js[128] = Js[42] = -1,
		Zs[128] = Zs[42] = 0,
		Qs[128] = Qs[42] = 0,
		ea[5] = ea[165] = -1,
		na[5] = na[165] = 0,
		ra[5] = ra[165] = 0,
		pa[5] = pa[165] = 1,
		da[5] = da[165] = 0,
		ga[5] = ga[165] = 0,
		aa[20] = aa[150] = 0,
		ua[20] = ua[150] = 1,
		ca[20] = ca[150] = 1,
		Js[20] = Js[150] = 0,
		Zs[20] = Zs[150] = -1,
		Qs[20] = Qs[150] = 1,
		Ks[80] = Ks[90] = -1,
		$s[80] = $s[90] = 0,
		ta[80] = ta[90] = 1,
		la[80] = la[90] = 1,
		ha[80] = ha[90] = 0,
		fa[80] = fa[90] = 1,
		ia[65] = ia[105] = 0,
		oa[65] = oa[105] = 1,
		sa[65] = sa[105] = 0,
		Vs[65] = Vs[105] = 0,
		Ws[65] = Ws[105] = -1,
		Hs[65] = Hs[105] = 0,
		Ks[160] = Ks[10] = -1,
		$s[160] = $s[10] = 0,
		ta[160] = ta[10] = 1,
		ea[160] = ea[10] = -1,
		na[160] = na[10] = 0,
		ra[160] = ra[10] = 0,
		pa[160] = pa[10] = 1,
		da[160] = da[10] = 0,
		ga[160] = ga[10] = 0,
		la[160] = la[10] = 1,
		ha[160] = ha[10] = 0,
		fa[160] = fa[10] = 1,
		aa[130] = aa[40] = 0,
		ua[130] = ua[40] = 1,
		ca[130] = ca[40] = 1,
		ia[130] = ia[40] = 0,
		oa[130] = oa[40] = 1,
		sa[130] = sa[40] = 0,
		Vs[130] = Vs[40] = 0,
		Ws[130] = Ws[40] = -1,
		Hs[130] = Hs[40] = 0,
		Js[130] = Js[40] = 0,
		Zs[130] = Zs[40] = -1,
		Qs[130] = Qs[40] = 1,
		ea[37] = ea[133] = 0,
		na[37] = na[133] = 1,
		ra[37] = ra[133] = 1,
		pa[37] = pa[133] = 0,
		da[37] = da[133] = 1,
		ga[37] = ga[133] = 0,
		Vs[37] = Vs[133] = -1,
		Ws[37] = Ws[133] = 0,
		Hs[37] = Hs[133] = 0,
		Js[37] = Js[133] = 1,
		Zs[37] = Zs[133] = 0,
		Qs[37] = Qs[133] = 0,
		aa[148] = aa[22] = -1,
		ua[148] = ua[22] = 0,
		ca[148] = ca[22] = 0,
		pa[148] = pa[22] = 0,
		da[148] = da[22] = -1,
		ga[148] = ga[22] = 1,
		la[148] = la[22] = 0,
		ha[148] = ha[22] = 1,
		fa[148] = fa[22] = 1,
		Js[148] = Js[22] = -1,
		Zs[148] = Zs[22] = 0,
		Qs[148] = Qs[22] = 1,
		Ks[82] = Ks[88] = 0,
		$s[82] = $s[88] = -1,
		ta[82] = ta[88] = 1,
		aa[82] = aa[88] = 1,
		ua[82] = ua[88] = 0,
		ca[82] = ca[88] = 1,
		ia[82] = ia[88] = -1,
		oa[82] = oa[88] = 0,
		sa[82] = sa[88] = 1,
		la[82] = la[88] = 0,
		ha[82] = ha[88] = -1,
		fa[82] = fa[88] = 0,
		Ks[73] = Ks[97] = 0,
		$s[73] = $s[97] = 1,
		ta[73] = ta[97] = 0,
		ea[73] = ea[97] = 0,
		na[73] = na[97] = -1,
		ra[73] = ra[97] = 0,
		ia[73] = ia[97] = 1,
		oa[73] = oa[97] = 0,
		sa[73] = sa[97] = 0,
		Vs[73] = Vs[97] = 1,
		Ws[73] = Ws[97] = 0,
		Hs[73] = Hs[97] = 1,
		Ks[145] = Ks[25] = 0,
		$s[145] = $s[25] = -1,
		ta[145] = ta[25] = 0,
		ia[145] = ia[25] = 1,
		oa[145] = oa[25] = 0,
		sa[145] = sa[25] = 1,
		pa[145] = pa[25] = 0,
		da[145] = da[25] = 1,
		ga[145] = ga[25] = 1,
		Js[145] = Js[25] = -1,
		Zs[145] = Zs[25] = 0,
		Qs[145] = Qs[25] = 0,
		ea[70] = ea[100] = 0,
		na[70] = na[100] = 1,
		ra[70] = ra[100] = 0,
		aa[70] = aa[100] = -1,
		ua[70] = ua[100] = 0,
		ca[70] = ca[100] = 1,
		la[70] = la[100] = 0,
		ha[70] = ha[100] = -1,
		fa[70] = fa[100] = 1,
		Vs[70] = Vs[100] = 1,
		Ws[70] = Ws[100] = 0,
		Hs[70] = Hs[100] = 0,
		ea[101] = ea[69] = 0,
		na[101] = na[69] = 1,
		ra[101] = ra[69] = 0,
		Vs[101] = Vs[69] = 1,
		Ws[101] = Ws[69] = 0,
		Hs[101] = Hs[69] = 0,
		pa[149] = pa[21] = 0,
		da[149] = da[21] = 1,
		ga[149] = ga[21] = 1,
		Js[149] = Js[21] = -1,
		Zs[149] = Zs[21] = 0,
		Qs[149] = Qs[21] = 0,
		aa[86] = aa[84] = -1,
		ua[86] = ua[84] = 0,
		ca[86] = ca[84] = 1,
		la[86] = la[84] = 0,
		ha[86] = ha[84] = -1,
		fa[86] = fa[84] = 1,
		Ks[89] = Ks[81] = 0,
		$s[89] = $s[81] = -1,
		ta[89] = ta[81] = 0,
		ia[89] = ia[81] = 1,
		oa[89] = oa[81] = 0,
		sa[89] = sa[81] = 1,
		Ks[96] = Ks[74] = 0,
		$s[96] = $s[74] = 1,
		ta[96] = ta[74] = 0,
		ea[96] = ea[74] = -1,
		na[96] = na[74] = 0,
		ra[96] = ra[74] = 1,
		la[96] = la[74] = 1,
		ha[96] = ha[74] = 0,
		fa[96] = fa[74] = 0,
		Vs[96] = Vs[74] = 1,
		Ws[96] = Ws[74] = 0,
		Hs[96] = Hs[74] = 1,
		Ks[24] = Ks[146] = 0,
		$s[24] = $s[146] = -1,
		ta[24] = ta[146] = 1,
		aa[24] = aa[146] = 1,
		ua[24] = ua[146] = 0,
		ca[24] = ca[146] = 1,
		ia[24] = ia[146] = 0,
		oa[24] = oa[146] = 1,
		sa[24] = sa[146] = 1,
		Js[24] = Js[146] = 0,
		Zs[24] = Zs[146] = -1,
		Qs[24] = Qs[146] = 0,
		ea[6] = ea[164] = -1,
		na[6] = na[164] = 0,
		ra[6] = ra[164] = 1,
		aa[6] = aa[164] = -1,
		ua[6] = ua[164] = 0,
		ca[6] = ca[164] = 0,
		pa[6] = pa[164] = 0,
		da[6] = da[164] = -1,
		ga[6] = ga[164] = 1,
		la[6] = la[164] = 1,
		ha[6] = ha[164] = 0,
		fa[6] = fa[164] = 0,
		ia[129] = ia[41] = 0,
		oa[129] = oa[41] = 1,
		sa[129] = sa[41] = 1,
		pa[129] = pa[41] = 0,
		da[129] = da[41] = 1,
		ga[129] = ga[41] = 0,
		Vs[129] = Vs[41] = -1,
		Ws[129] = Ws[41] = 0,
		Hs[129] = Hs[41] = 0,
		Js[129] = Js[41] = 0,
		Zs[129] = Zs[41] = -1,
		Qs[129] = Qs[41] = 0,
		aa[66] = aa[104] = 0,
		ua[66] = ua[104] = 1,
		ca[66] = ca[104] = 0,
		ia[66] = ia[104] = -1,
		oa[66] = oa[104] = 0,
		sa[66] = sa[104] = 1,
		la[66] = la[104] = 0,
		ha[66] = ha[104] = -1,
		fa[66] = fa[104] = 0,
		Vs[66] = Vs[104] = 0,
		Ws[66] = Ws[104] = -1,
		Hs[66] = Hs[104] = 1,
		Ks[144] = Ks[26] = -1,
		$s[144] = $s[26] = 0,
		ta[144] = ta[26] = 0,
		pa[144] = pa[26] = 1,
		da[144] = da[26] = 0,
		ga[144] = ga[26] = 1,
		la[144] = la[26] = 0,
		ha[144] = ha[26] = 1,
		fa[144] = fa[26] = 1,
		Js[144] = Js[26] = -1,
		Zs[144] = Zs[26] = 0,
		Qs[144] = Qs[26] = 1,
		ea[36] = ea[134] = 0,
		na[36] = na[134] = 1,
		ra[36] = ra[134] = 1,
		aa[36] = aa[134] = 0,
		ua[36] = ua[134] = 1,
		ca[36] = ca[134] = 0,
		Vs[36] = Vs[134] = 0,
		Ws[36] = Ws[134] = -1,
		Hs[36] = Hs[134] = 1,
		Js[36] = Js[134] = 1,
		Zs[36] = Zs[134] = 0,
		Qs[36] = Qs[134] = 0,
		Ks[9] = Ks[161] = -1,
		$s[9] = $s[161] = 0,
		ta[9] = ta[161] = 0,
		ea[9] = ea[161] = 0,
		na[9] = na[161] = -1,
		ra[9] = ra[161] = 0,
		ia[9] = ia[161] = 1,
		oa[9] = oa[161] = 0,
		sa[9] = sa[161] = 0,
		pa[9] = pa[161] = 1,
		da[9] = da[161] = 0,
		ga[9] = ga[161] = 1,
		Ks[136] = 0,
		$s[136] = 1,
		ta[136] = 1,
		ea[136] = 0,
		na[136] = 1,
		ra[136] = 0,
		aa[136] = -1,
		ua[136] = 0,
		ca[136] = 1,
		ia[136] = -1,
		oa[136] = 0,
		sa[136] = 0,
		pa[136] = 0,
		da[136] = -1,
		ga[136] = 0,
		la[136] = 0,
		ha[136] = -1,
		fa[136] = 1,
		Vs[136] = 1,
		Ws[136] = 0,
		Hs[136] = 0,
		Js[136] = 1,
		Zs[136] = 0,
		Qs[136] = 1,
		Ks[34] = 0,
		$s[34] = -1,
		ta[34] = 0,
		ea[34] = 0,
		na[34] = -1,
		ra[34] = 1,
		aa[34] = 1,
		ua[34] = 0,
		ca[34] = 0,
		ia[34] = 1,
		oa[34] = 0,
		sa[34] = 1,
		pa[34] = 0,
		da[34] = 1,
		ga[34] = 1,
		la[34] = 0,
		ha[34] = 1,
		fa[34] = 0,
		Vs[34] = -1,
		Ws[34] = 0,
		Hs[34] = 1,
		Js[34] = -1,
		Zs[34] = 0,
		Qs[34] = 0,
		Ks[35] = 0,
		$s[35] = 1,
		ta[35] = 1,
		ea[35] = 0,
		na[35] = -1,
		ra[35] = 1,
		aa[35] = 1,
		ua[35] = 0,
		ca[35] = 0,
		ia[35] = -1,
		oa[35] = 0,
		sa[35] = 0,
		pa[35] = 0,
		da[35] = -1,
		ga[35] = 0,
		la[35] = 0,
		ha[35] = 1,
		fa[35] = 0,
		Vs[35] = -1,
		Ws[35] = 0,
		Hs[35] = 1,
		Js[35] = 1,
		Zs[35] = 0,
		Qs[35] = 1,
		Ks[153] = 0,
		$s[153] = 1,
		ta[153] = 1,
		ia[153] = -1,
		oa[153] = 0,
		sa[153] = 0,
		pa[153] = 0,
		da[153] = -1,
		ga[153] = 0,
		Js[153] = 1,
		Zs[153] = 0,
		Qs[153] = 1,
		ea[102] = 0,
		na[102] = -1,
		ra[102] = 1,
		aa[102] = 1,
		ua[102] = 0,
		ca[102] = 0,
		la[102] = 0,
		ha[102] = 1,
		fa[102] = 0,
		Vs[102] = -1,
		Ws[102] = 0,
		Hs[102] = 1,
		Ks[155] = 0,
		$s[155] = -1,
		ta[155] = 0,
		ia[155] = 1,
		oa[155] = 0,
		sa[155] = 1,
		pa[155] = 0,
		da[155] = 1,
		ga[155] = 1,
		Js[155] = -1,
		Zs[155] = 0,
		Qs[155] = 0,
		ea[103] = 0,
		na[103] = 1,
		ra[103] = 0,
		aa[103] = -1,
		ua[103] = 0,
		ca[103] = 1,
		la[103] = 0,
		ha[103] = -1,
		fa[103] = 1,
		Vs[103] = 1,
		Ws[103] = 0,
		Hs[103] = 0,
		Ks[152] = 0,
		$s[152] = 1,
		ta[152] = 1,
		aa[152] = -1,
		ua[152] = 0,
		ca[152] = 1,
		ia[152] = -1,
		oa[152] = 0,
		sa[152] = 0,
		pa[152] = 0,
		da[152] = -1,
		ga[152] = 0,
		la[152] = 0,
		ha[152] = -1,
		fa[152] = 1,
		Js[152] = 1,
		Zs[152] = 0,
		Qs[152] = 1,
		Ks[156] = 0,
		$s[156] = -1,
		ta[156] = 1,
		aa[156] = 1,
		ua[156] = 0,
		ca[156] = 1,
		ia[156] = -1,
		oa[156] = 0,
		sa[156] = 0,
		pa[156] = 0,
		da[156] = -1,
		ga[156] = 0,
		la[156] = 0,
		ha[156] = 1,
		fa[156] = 1,
		Js[156] = -1,
		Zs[156] = 0,
		Qs[156] = 1,
		Ks[137] = 0,
		$s[137] = 1,
		ta[137] = 1,
		ea[137] = 0,
		na[137] = 1,
		ra[137] = 0,
		ia[137] = -1,
		oa[137] = 0,
		sa[137] = 0,
		pa[137] = 0,
		da[137] = -1,
		ga[137] = 0,
		Vs[137] = 1,
		Ws[137] = 0,
		Hs[137] = 0,
		Js[137] = 1,
		Zs[137] = 0,
		Qs[137] = 1,
		Ks[139] = 0,
		$s[139] = 1,
		ta[139] = 1,
		ea[139] = 0,
		na[139] = -1,
		ra[139] = 0,
		ia[139] = 1,
		oa[139] = 0,
		sa[139] = 0,
		pa[139] = 0,
		da[139] = 1,
		ga[139] = 0,
		Vs[139] = -1,
		Ws[139] = 0,
		Hs[139] = 0,
		Js[139] = 1,
		Zs[139] = 0,
		Qs[139] = 1,
		Ks[98] = 0,
		$s[98] = -1,
		ta[98] = 0,
		ea[98] = 0,
		na[98] = -1,
		ra[98] = 1,
		aa[98] = 1,
		ua[98] = 0,
		ca[98] = 0,
		ia[98] = 1,
		oa[98] = 0,
		sa[98] = 1,
		la[98] = 0,
		ha[98] = 1,
		fa[98] = 0,
		Vs[98] = -1,
		Ws[98] = 0,
		Hs[98] = 1,
		Ks[99] = 0,
		$s[99] = 1,
		ta[99] = 0,
		ea[99] = 0,
		na[99] = -1,
		ra[99] = 1,
		aa[99] = 1,
		ua[99] = 0,
		ca[99] = 0,
		ia[99] = -1,
		oa[99] = 0,
		sa[99] = 1,
		la[99] = 0,
		ha[99] = -1,
		fa[99] = 0,
		Vs[99] = 1,
		Ws[99] = 0,
		Hs[99] = 1,
		ea[38] = 0,
		na[38] = -1,
		ra[38] = 1,
		aa[38] = 1,
		ua[38] = 0,
		ca[38] = 0,
		pa[38] = 0,
		da[38] = 1,
		ga[38] = 1,
		la[38] = 0,
		ha[38] = 1,
		fa[38] = 0,
		Vs[38] = -1,
		Ws[38] = 0,
		Hs[38] = 1,
		Js[38] = -1,
		Zs[38] = 0,
		Qs[38] = 0,
		ea[39] = 0,
		na[39] = 1,
		ra[39] = 1,
		aa[39] = -1,
		ua[39] = 0,
		ca[39] = 0,
		pa[39] = 0,
		da[39] = -1,
		ga[39] = 1,
		la[39] = 0,
		ha[39] = 1,
		fa[39] = 0,
		Vs[39] = -1,
		Ws[39] = 0,
		Hs[39] = 1,
		Js[39] = 1,
		Zs[39] = 0,
		Qs[39] = 0;
		var ya = function(t) {
			return [[t.bottomleft, 0], [0, 0], [0, t.leftbottom]]
		},
		va = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0]]
		},
		ma = function(t) {
			return [[t.topright, 1], [1, 1], [1, t.righttop]]
		},
		_a = function(t) {
			return [[0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		wa = function(t) {
			return [[t.bottomright, 0], [t.bottomleft, 0], [0, t.leftbottom], [0, t.lefttop]]
		},
		ba = function(t) {
			return [[t.bottomright, 0], [t.bottomleft, 0], [1, t.righttop], [1, t.rightbottom]]
		},
		xa = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.topleft, 1], [t.topright, 1]]
		},
		Ea = function(t) {
			return [[0, t.leftbottom], [0, t.lefttop], [t.topleft, 1], [t.topright, 1]]
		},
		Ma = [],
		Ia = [],
		Sa = [],
		Ca = [],
		Na = [],
		Pa = [],
		La = [],
		Aa = [];
		Ca[1] = Na[1] = 18,
		Ca[169] = Na[169] = 18,
		Sa[4] = Ia[4] = 12,
		Sa[166] = Ia[166] = 12,
		Ma[16] = Aa[16] = 4,
		Ma[154] = Aa[154] = 4,
		Pa[64] = La[64] = 22,
		Pa[106] = La[106] = 22,
		Sa[2] = Pa[2] = 17,
		Ca[2] = Na[2] = 18,
		Sa[168] = Pa[168] = 17,
		Ca[168] = Na[168] = 18,
		Ma[8] = Ca[8] = 9,
		Ia[8] = Sa[8] = 12,
		Ma[162] = Ca[162] = 9,
		Ia[162] = Sa[162] = 12,
		Ma[32] = Aa[32] = 4,
		Ia[32] = La[32] = 1,
		Ma[138] = Aa[138] = 4,
		Ia[138] = La[138] = 1,
		Na[128] = Aa[128] = 21,
		Pa[128] = La[128] = 22,
		Na[42] = Aa[42] = 21,
		Pa[42] = La[42] = 22,
		Ia[5] = Na[5] = 14,
		Ia[165] = Na[165] = 14,
		Sa[20] = Aa[20] = 6,
		Sa[150] = Aa[150] = 6,
		Ma[80] = Pa[80] = 11,
		Ma[90] = Pa[90] = 11,
		Ca[65] = La[65] = 3,
		Ca[105] = La[105] = 3,
		Ma[160] = Pa[160] = 11,
		Ia[160] = Na[160] = 14,
		Ma[10] = Pa[10] = 11,
		Ia[10] = Na[10] = 14,
		Sa[130] = Aa[130] = 6,
		Ca[130] = La[130] = 3,
		Sa[40] = Aa[40] = 6,
		Ca[40] = La[40] = 3,
		Ia[101] = La[101] = 1,
		Ia[69] = La[69] = 1,
		Na[149] = Aa[149] = 21,
		Na[21] = Aa[21] = 21,
		Sa[86] = Pa[86] = 17,
		Sa[84] = Pa[84] = 17,
		Ma[89] = Ca[89] = 9,
		Ma[81] = Ca[81] = 9,
		Ma[96] = La[96] = 0,
		Ia[96] = Pa[96] = 15,
		Ma[74] = La[74] = 0,
		Ia[74] = Pa[74] = 15,
		Ma[24] = Sa[24] = 8,
		Ca[24] = Aa[24] = 7,
		Ma[146] = Sa[146] = 8,
		Ca[146] = Aa[146] = 7,
		Ia[6] = Pa[6] = 15,
		Sa[6] = Na[6] = 16,
		Ia[164] = Pa[164] = 15,
		Sa[164] = Na[164] = 16,
		Ca[129] = Aa[129] = 7,
		Na[129] = La[129] = 20,
		Ca[41] = Aa[41] = 7,
		Na[41] = La[41] = 20,
		Sa[66] = La[66] = 2,
		Ca[66] = Pa[66] = 19,
		Sa[104] = La[104] = 2,
		Ca[104] = Pa[104] = 19,
		Ma[144] = Na[144] = 10,
		Pa[144] = Aa[144] = 23,
		Ma[26] = Na[26] = 10,
		Pa[26] = Aa[26] = 23,
		Ia[36] = Aa[36] = 5,
		Sa[36] = La[36] = 2,
		Ia[134] = Aa[134] = 5,
		Sa[134] = La[134] = 2,
		Ma[9] = Na[9] = 10,
		Ia[9] = Ca[9] = 13,
		Ma[161] = Na[161] = 10,
		Ia[161] = Ca[161] = 13,
		Ia[37] = Aa[37] = 5,
		Na[37] = La[37] = 20,
		Ia[133] = Aa[133] = 5,
		Na[133] = La[133] = 20,
		Sa[148] = Na[148] = 16,
		Pa[148] = Aa[148] = 23,
		Sa[22] = Na[22] = 16,
		Pa[22] = Aa[22] = 23,
		Ma[82] = Sa[82] = 8,
		Ca[82] = Pa[82] = 19,
		Ma[88] = Sa[88] = 8,
		Ca[88] = Pa[88] = 19,
		Ma[73] = La[73] = 0,
		Ia[73] = Ca[73] = 13,
		Ma[97] = La[97] = 0,
		Ia[97] = Ca[97] = 13,
		Ma[145] = Ca[145] = 9,
		Na[145] = Aa[145] = 21,
		Ma[25] = Ca[25] = 9,
		Na[25] = Aa[25] = 21,
		Ia[70] = La[70] = 1,
		Sa[70] = Pa[70] = 17,
		Ia[100] = La[100] = 1,
		Sa[100] = Pa[100] = 17,
		Ma[34] = Ca[34] = 9,
		Ia[34] = Sa[34] = 12,
		Na[34] = Aa[34] = 21,
		Pa[34] = La[34] = 22,
		Ma[136] = Aa[136] = 4,
		Ia[136] = La[136] = 1,
		Sa[136] = Pa[136] = 17,
		Ca[136] = Na[136] = 18,
		Ma[35] = Aa[35] = 4,
		Ia[35] = Sa[35] = 12,
		Ca[35] = Na[35] = 18,
		Pa[35] = La[35] = 22,
		Ma[153] = Aa[153] = 4,
		Ca[153] = Na[153] = 18,
		Ia[102] = Sa[102] = 12,
		Pa[102] = La[102] = 22,
		Ma[155] = Ca[155] = 9,
		Na[155] = Aa[155] = 23,
		Ia[103] = La[103] = 1,
		Sa[103] = Pa[103] = 17,
		Ma[152] = Aa[152] = 4,
		Sa[152] = Pa[152] = 17,
		Ca[152] = Na[152] = 18,
		Ma[156] = Sa[156] = 8,
		Ca[156] = Na[156] = 18,
		Pa[156] = Aa[156] = 23,
		Ma[137] = Aa[137] = 4,
		Ia[137] = La[137] = 1,
		Ca[137] = Na[137] = 18,
		Ma[139] = Aa[139] = 4,
		Ia[139] = Ca[139] = 13,
		Na[139] = La[139] = 20,
		Ma[98] = Ca[98] = 9,
		Ia[98] = Sa[98] = 12,
		Pa[98] = La[98] = 22,
		Ma[99] = La[99] = 0,
		Ia[99] = Sa[99] = 12,
		Ca[99] = Pa[99] = 19,
		Ia[38] = Sa[38] = 12,
		Na[38] = Aa[38] = 21,
		Pa[38] = La[38] = 22,
		Ia[39] = Aa[39] = 5,
		Sa[39] = Na[39] = 16,
		Pa[39] = La[39] = 22;
		var Oa = [];
		Oa[1] = Oa[169] = ya,
		Oa[4] = Oa[166] = va,
		Oa[16] = Oa[154] = ma,
		Oa[64] = Oa[106] = _a,
		Oa[168] = Oa[2] = wa,
		Oa[162] = Oa[8] = ba,
		Oa[138] = Oa[32] = xa,
		Oa[42] = Oa[128] = Ea,
		Oa[5] = Oa[165] = function(t) {
			return [[0, 0], [0, t.leftbottom], [1, t.rightbottom], [1, 0]]
		},
		Oa[20] = Oa[150] = function(t) {
			return [[1, 0], [t.bottomright, 0], [t.topright, 1], [1, 1]]
		},
		Oa[80] = Oa[90] = function(t) {
			return [[1, 1], [1, t.righttop], [0, t.lefttop], [0, 1]]
		},
		Oa[65] = Oa[105] = function(t) {
			return [[t.bottomleft, 0], [0, 0], [0, 1], [t.topleft, 1]]
		},
		Oa[160] = Oa[10] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [0, t.leftbottom], [0, t.lefttop]]
		},
		Oa[130] = Oa[40] = function(t) {
			return [[t.topleft, 1], [t.topright, 1], [t.bottomright, 0], [t.bottomleft, 0]]
		},
		Oa[85] = function() {
			return [[0, 0], [0, 1], [1, 1], [1, 0]]
		},
		Oa[101] = Oa[69] = function(t) {
			return [[1, t.rightbottom], [1, 0], [0, 0], [0, 1], [t.topleft, 1]]
		},
		Oa[149] = Oa[21] = function(t) {
			return [[t.topright, 1], [1, 1], [1, 0], [0, 0], [0, t.leftbottom]]
		},
		Oa[86] = Oa[84] = function(t) {
			return [[1, 0], [t.bottomright, 0], [0, t.lefttop], [0, 1], [1, 1]]
		},
		Oa[89] = Oa[81] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomleft, 0], [0, 0], [0, 1]]
		},
		Oa[96] = Oa[74] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		Oa[24] = Oa[146] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomright, 0], [t.bottomleft, 0], [t.topright, 1]]
		},
		Oa[6] = Oa[164] = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0], [0, t.leftbottom], [0, t.lefttop]]
		},
		Oa[129] = Oa[41] = function(t) {
			return [[t.topright, 1], [t.bottomleft, 0], [0, 0], [0, t.leftbottom], [t.topleft, 1]]
		},
		Oa[66] = Oa[104] = function(t) {
			return [[t.bottomright, 0], [t.bottomleft, 0], [0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		Oa[144] = Oa[26] = function(t) {
			return [[1, 1], [1, t.righttop], [0, t.leftbottom], [0, t.lefttop], [t.topright, 1]]
		},
		Oa[36] = Oa[134] = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0], [t.topleft, 1], [t.topright, 1]]
		},
		Oa[9] = Oa[161] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.bottomleft, 0], [0, 0], [0, t.leftbottom]]
		},
		Oa[37] = Oa[133] = function(t) {
			return [[1, t.rightbottom], [1, 0], [0, 0], [0, t.leftbottom], [t.topleft, 1], [t.topright, 1]]
		},
		Oa[148] = Oa[22] = function(t) {
			return [[1, 1], [1, 0], [t.bottomright, 0], [0, t.leftbottom], [0, t.lefttop], [t.topright, 1]]
		},
		Oa[82] = Oa[88] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomright, 0], [t.bottomleft, 0], [0, t.lefttop], [0, 1]]
		},
		Oa[73] = Oa[97] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.bottomleft, 0], [0, 0], [0, 1], [t.topleft, 1]]
		},
		Oa[145] = Oa[25] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomleft, 0], [0, 0], [0, t.leftbottom], [t.topright, 1]]
		},
		Oa[70] = Oa[100] = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0], [0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		Oa[34] = function(t) {
			return [Ea(t), ba(t)]
		},
		Oa[35] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.bottomright, 0], [t.bottomleft, 0], [0, t.leftbottom], [0, t.lefttop], [t.topleft, 1], [t.topright, 1]]
		},
		Oa[136] = function(t) {
			return [xa(t), wa(t)]
		},
		Oa[153] = function(t) {
			return [ma(t), ya(t)]
		},
		Oa[102] = function(t) {
			return [va(t), _a(t)]
		},
		Oa[155] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomleft, 0], [0, 0], [0, t.leftbottom], [t.topright, 1]]
		},
		Oa[103] = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0], [0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		Oa[152] = function(t) {
			return [ma(t), wa(t)]
		},
		Oa[156] = function(t) {
			return [[1, 1], [1, t.righttop], [t.bottomright, 0], [t.bottomleft, 0], [0, t.leftbottom], [0, t.lefttop], [t.topright, 1]]
		},
		Oa[137] = function(t) {
			return [xa(t), ya(t)]
		},
		Oa[139] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.bottomleft, 0], [0, 0], [0, t.leftbottom], [t.topleft, 1], [t.topright, 1]]
		},
		Oa[98] = function(t) {
			return [ba(t), _a(t)]
		},
		Oa[99] = function(t) {
			return [[1, t.righttop], [1, t.rightbottom], [t.bottomright, 0], [t.bottomleft, 0], [0, t.lefttop], [0, 1], [t.topleft, 1]]
		},
		Oa[38] = function(t) {
			return [va(t), Ea(t)]
		},
		Oa[39] = function(t) {
			return [[1, t.rightbottom], [1, 0], [t.bottomright, 0], [0, t.leftbottom], [0, t.lefttop], [t.topleft, 1], [t.topright, 1]]
		};
		var Ta = function t(e) {
			this.id = t.buildId(e),
			this.coordinates = e,
			this.innerEdges = [],
			this.outerEdges = [],
			this.outerEdgesSorted = !1
		};
		Ta.buildId = function(t) {
			return t.join(",")
		},
		Ta.prototype.removeInnerEdge = function(t) {
			this.innerEdges = this.innerEdges.filter(function(e) {
				return e.from.id !== t.from.id
			})
		},
		Ta.prototype.removeOuterEdge = function(t) {
			this.outerEdges = this.outerEdges.filter(function(e) {
				return e.to.id !== t.to.id
			})
		},
		Ta.prototype.addOuterEdge = function(t) {
			this.outerEdges.push(t),
			this.outerEdgesSorted = !1
		},
		Ta.prototype.sortOuterEdges = function() {
			var t = this;
			this.outerEdgesSorted || (this.outerEdges.sort(function(e, n) {
				var r = e.to,
				i = n.to;
				if (r.coordinates[0] - t.coordinates[0] >= 0 && i.coordinates[0] - t.coordinates[0] < 0) return 1;
				if (r.coordinates[0] - t.coordinates[0] < 0 && i.coordinates[0] - t.coordinates[0] >= 0) return - 1;
				if (r.coordinates[0] - t.coordinates[0] == 0 && i.coordinates[0] - t.coordinates[0] == 0) return r.coordinates[1] - t.coordinates[1] >= 0 || i.coordinates[1] - t.coordinates[1] >= 0 ? r.coordinates[1] - i.coordinates[1] : i.coordinates[1] - r.coordinates[1];
				var o = wr(t.coordinates, r.coordinates, i.coordinates);
				return o < 0 ? 1 : o > 0 ? -1 : Math.pow(r.coordinates[0] - t.coordinates[0], 2) + Math.pow(r.coordinates[1] - t.coordinates[1], 2) - (Math.pow(i.coordinates[0] - t.coordinates[0], 2) + Math.pow(i.coordinates[1] - t.coordinates[1], 2))
			}), this.outerEdgesSorted = !0)
		},
		Ta.prototype.getOuterEdges = function() {
			return this.sortOuterEdges(),
			this.outerEdges
		},
		Ta.prototype.getOuterEdge = function(t) {
			return this.sortOuterEdges(),
			this.outerEdges[t]
		},
		Ta.prototype.addInnerEdge = function(t) {
			this.innerEdges.push(t)
		};
		var Ra = function(t, e) {
			this.from = t,
			this.to = e,
			this.next = void 0,
			this.label = void 0,
			this.symetric = void 0,
			this.ring = void 0,
			this.from.addOuterEdge(this),
			this.to.addInnerEdge(this)
		};
		Ra.prototype.getSymetric = function() {
			return this.symetric || (this.symetric = new Ra(this.to, this.from), this.symetric.symetric = this),
			this.symetric
		},
		Ra.prototype.deleteEdge = function() {
			this.from.removeOuterEdge(this),
			this.to.removeInnerEdge(this)
		},
		Ra.prototype.isEqual = function(t) {
			return this.from.id === t.from.id && this.to.id === t.to.id
		},
		Ra.prototype.toString = function() {
			return "Edge { " + this.from.id + " -> " + this.to.id + " }"
		},
		Ra.prototype.toLineString = function() {
			return a([this.from.coordinates, this.to.coordinates])
		},
		Ra.prototype.compareTo = function(t) {
			return wr(t.from.coordinates, t.to.coordinates, this.to.coordinates)
		};
		var Da = function() {
			this.edges = [],
			this.polygon = void 0,
			this.envelope = void 0
		},
		ka = {
			length: {
				configurable: !0
			}
		};
		Da.prototype.push = function(t) {
			this[this.edges.length] = t,
			this.edges.push(t),
			this.polygon = this.envelope = void 0
		},
		Da.prototype.get = function(t) {
			return this.edges[t]
		},
		ka.length.get = function() {
			return this.edges.length
		},
		Da.prototype.forEach = function(t) {
			this.edges.forEach(t)
		},
		Da.prototype.map = function(t) {
			return this.edges.map(t)
		},
		Da.prototype.some = function(t) {
			return this.edges.some(t)
		},
		Da.prototype.isValid = function() {
			return ! 0
		},
		Da.prototype.isHole = function() {
			var t = this,
			e = this.edges.reduce(function(e, n, r) {
				return n.from.coordinates[1] > t.edges[e].from.coordinates[1] && (e = r),
				e
			},
			0),
			n = (0 === e ? this.length: e) - 1,
			r = (e + 1) % this.length,
			i = wr(this.edges[n].from.coordinates, this.edges[e].from.coordinates, this.edges[r].from.coordinates);
			return 0 === i ? this.edges[n].from.coordinates[0] > this.edges[r].from.coordinates[0] : i > 0
		},
		Da.prototype.toMultiPoint = function() {
			return h(this.edges.map(function(t) {
				return t.from.coordinates
			}))
		},
		Da.prototype.toPolygon = function() {
			if (this.polygon) return this.polygon;
			var t = this.edges.map(function(t) {
				return t.from.coordinates
			});
			return t.push(this.edges[0].from.coordinates),
			this.polygon = o([t])
		},
		Da.prototype.getEnvelope = function() {
			return this.envelope ? this.envelope: this.envelope = le(this.toPolygon())
		},
		Da.findEdgeRingContaining = function(t, e) {
			var n, i, o = t.getEnvelope();
			return e.forEach(function(e) {
				var s = e.getEnvelope();
				if (i && (n = i.getEnvelope()), !
				function(t, e) {
					var n = t.geometry.coordinates.map(function(t) {
						return t[0]
					}),
					r = t.geometry.coordinates.map(function(t) {
						return t[1]
					}),
					i = e.geometry.coordinates.map(function(t) {
						return t[0]
					}),
					o = e.geometry.coordinates.map(function(t) {
						return t[1]
					});
					return Math.max(null, n) === Math.max(null, i) && Math.max(null, r) === Math.max(null, o) && Math.min(null, n) === Math.min(null, i) && Math.min(null, r) === Math.min(null, o)
				} (s, o) && br(s, o)) {
					var a = t.map(function(t) {
						return t.from.coordinates
					}).find(function(t) {
						return ! e.some(function(e) {
							return function(t, e) {
								return t[0] === e[0] && t[1] === e[1]
							} (t, e.from.coordinates)
						})
					});
					a && e.inside(r(a)) && (i && !br(n, s) || (i = e))
				}
			}),
			i
		},
		Da.prototype.inside = function(t) {
			return Lt(t, this.toPolygon())
		},
		Object.defineProperties(Da.prototype, ka);
		var Fa = function() {
			this.edges = [],
			this.nodes = {}
		};
		Fa.fromGeoJson = function(t) { !
			function(t) {
				if (!t) throw new Error("No geojson passed");
				if ("FeatureCollection" !== t.type && "GeometryCollection" !== t.type && "MultiLineString" !== t.type && "LineString" !== t.type && "Feature" !== t.type) throw new Error("Invalid input type '" + t.type + "'. Geojson must be FeatureCollection, GeometryCollection, LineString, MultiLineString or Feature")
			} (t);
			var e = new Fa;
			return k(t,
			function(t) {
				W(t, "LineString", "Graph::fromGeoJson"),
				N(t,
				function(t, n) {
					if (t) {
						var r = e.getNode(t),
						i = e.getNode(n);
						e.addEdge(r, i)
					}
					return n
				})
			}),
			e
		},
		Fa.prototype.getNode = function(t) {
			var e = Ta.buildId(t),
			n = this.nodes[e];
			return n || (n = this.nodes[e] = new Ta(t)),
			n
		},
		Fa.prototype.addEdge = function(t, e) {
			var n = new Ra(t, e),
			r = n.getSymetric();
			this.edges.push(n),
			this.edges.push(r)
		},
		Fa.prototype.deleteDangles = function() {
			var t = this;
			Object.keys(this.nodes).map(function(e) {
				return t.nodes[e]
			}).forEach(function(e) {
				return t._removeIfDangle(e)
			})
		},
		Fa.prototype._removeIfDangle = function(t) {
			var e = this;
			if (t.innerEdges.length <= 1) {
				var n = t.getOuterEdges().map(function(t) {
					return t.to
				});
				this.removeNode(t),
				n.forEach(function(t) {
					return e._removeIfDangle(t)
				})
			}
		},
		Fa.prototype.deleteCutEdges = function() {
			var t = this;
			this._computeNextCWEdges(),
			this._findLabeledEdgeRings(),
			this.edges.forEach(function(e) {
				e.label === e.symetric.label && (t.removeEdge(e.symetric), t.removeEdge(e))
			})
		},
		Fa.prototype._computeNextCWEdges = function(t) {
			var e = this;
			void 0 === t ? Object.keys(this.nodes).forEach(function(t) {
				return e._computeNextCWEdges(e.nodes[t])
			}) : t.getOuterEdges().forEach(function(e, n) {
				t.getOuterEdge((0 === n ? t.getOuterEdges().length: n) - 1).symetric.next = e
			})
		},
		Fa.prototype._computeNextCCWEdges = function(t, e) {
			for (var n, r, i = t.getOuterEdges(), o = i.length - 1; o >= 0; --o) {
				var s = i[o],
				a = s.symetric,
				u = void 0,
				c = void 0;
				s.label === e && (u = s),
				a.label === e && (c = a),
				u && c && (c && (r = c), u && (r && (r.next = u, r = void 0), n || (n = u)))
			}
			r && (r.next = n)
		},
		Fa.prototype._findLabeledEdgeRings = function() {
			var t = [],
			e = 0;
			return this.edges.forEach(function(n) {
				if (! (n.label >= 0)) {
					t.push(n);
					var r = n;
					do {
						r.label = e, r = r.next
					} while (! n . isEqual ( r ));
					e++
				}
			}),
			t
		},
		Fa.prototype.getEdgeRings = function() {
			var t = this;
			this._computeNextCWEdges(),
			this.edges.forEach(function(t) {
				t.label = void 0
			}),
			this._findLabeledEdgeRings().forEach(function(e) {
				t._findIntersectionNodes(e).forEach(function(n) {
					t._computeNextCCWEdges(n, e.label)
				})
			});
			var e = [];
			return this.edges.forEach(function(n) {
				n.ring || e.push(t._findEdgeRing(n))
			}),
			e
		},
		Fa.prototype._findIntersectionNodes = function(t) {
			var e = [],
			n = t;
			do { !
				function() {
					var r = 0;
					n.from.getOuterEdges().forEach(function(e) {
						e.label === t.label && ++r
					}),
					r > 1 && e.push(n.from),
					n = n.next
				} ()
			} while (! t . isEqual ( n ));
			return e
		},
		Fa.prototype._findEdgeRing = function(t) {
			var e = t,
			n = new Da;
			do {
				n.push(e), e.ring = n, e = e.next
			} while (! t . isEqual ( e ));
			return n
		},
		Fa.prototype.removeNode = function(t) {
			var e = this;
			t.getOuterEdges().forEach(function(t) {
				return e.removeEdge(t)
			}),
			t.innerEdges.forEach(function(t) {
				return e.removeEdge(t)
			}),
			delete this.nodes[t.id]
		},
		Fa.prototype.removeEdge = function(t) {
			this.edges = this.edges.filter(function(e) {
				return ! e.isEqual(t)
			}),
			t.deleteEdge()
		};
		var ja = mt(function(t, e) {
			function n(t) {
				var e = [];
				for (var n in t) e.push(n);
				return e
			} (t.exports = "function" == typeof Object.keys ? Object.keys: n).shim = n
		}),
		qa = (ja.shim, mt(function(t, e) {
			function n(t) {
				return "[object Arguments]" == Object.prototype.toString.call(t)
			}
			function r(t) {
				return t && "object" == typeof t && "number" == typeof t.length && Object.prototype.hasOwnProperty.call(t, "callee") && !Object.prototype.propertyIsEnumerable.call(t, "callee") || !1
			}
			var i = "[object Arguments]" ==
			function() {
				return Object.prototype.toString.call(arguments)
			} (); (e = t.exports = i ? n: r).supported = n,
			e.unsupported = r
		})),
		Ba = (qa.supported, qa.unsupported, mt(function(t) {
			function e(t) {
				return null === t || void 0 === t
			}
			function n(t) {
				return ! (!t || "object" != typeof t || "number" != typeof t.length || "function" != typeof t.copy || "function" != typeof t.slice || t.length > 0 && "number" != typeof t[0])
			}
			var r = Array.prototype.slice,
			i = t.exports = function(t, o, s) {
				return s || (s = {}),
				t === o || (t instanceof Date && o instanceof Date ? t.getTime() === o.getTime() : !t || !o || "object" != typeof t && "object" != typeof o ? s.strict ? t === o: t == o: function(t, o, s) {
					var a, u;
					if (e(t) || e(o)) return ! 1;
					if (t.prototype !== o.prototype) return ! 1;
					if (qa(t)) return !! qa(o) && (t = r.call(t), o = r.call(o), i(t, o, s));
					if (n(t)) {
						if (!n(o)) return ! 1;
						if (t.length !== o.length) return ! 1;
						for (a = 0; a < t.length; a++) if (t[a] !== o[a]) return ! 1;
						return ! 0
					}
					try {
						var c = ja(t),
						l = ja(o)
					} catch(t) {
						return ! 1
					}
					if (c.length != l.length) return ! 1;
					for (c.sort(), l.sort(), a = c.length - 1; a >= 0; a--) if (c[a] != l[a]) return ! 1;
					for (a = c.length - 1; a >= 0; a--) if (u = c[a], !i(t[u], o[u], s)) return ! 1;
					return typeof t == typeof o
				} (t, o, s))
			}
		})),
		Ga = function(t) {
			this.precision = t && t.precision ? t.precision: 17,
			this.direction = !(!t || !t.direction) && t.direction,
			this.pseudoNode = !(!t || !t.pseudoNode) && t.pseudoNode,
			this.objectComparator = t && t.objectComparator ? t.objectComparator: Or
		};
		Ga.prototype.compare = function(t, e) {
			if (t.type !== e.type || !Ar(t, e)) return ! 1;
			switch (t.type) {
			case "Point":
				return this.compareCoord(t.coordinates, e.coordinates);
			case "LineString":
				return this.compareLine(t.coordinates, e.coordinates, 0, !1);
			case "Polygon":
				return this.comparePolygon(t, e);
			case "Feature":
				return this.compareFeature(t, e);
			default:
				if (0 === t.type.indexOf("Multi")) {
					var n = this,
					r = Lr(t),
					i = Lr(e);
					return r.every(function(t) {
						return this.some(function(e) {
							return n.compare(t, e)
						})
					},
					i)
				}
			}
			return ! 1
		},
		Ga.prototype.compareCoord = function(t, e) {
			if (t.length !== e.length) return ! 1;
			for (var n = 0; n < t.length; n++) if (t[n].toFixed(this.precision) !== e[n].toFixed(this.precision)) return ! 1;
			return ! 0
		},
		Ga.prototype.compareLine = function(t, e, n, r) {
			if (!Ar(t, e)) return ! 1;
			var i = this.pseudoNode ? t: this.removePseudo(t),
			o = this.pseudoNode ? e: this.removePseudo(e);
			if (!r || this.compareCoord(i[0], o[0]) || (o = this.fixStartIndex(o, i))) {
				var s = this.compareCoord(i[n], o[n]);
				return this.direction || s ? this.comparePath(i, o) : !!this.compareCoord(i[n], o[o.length - (1 + n)]) && this.comparePath(i.slice().reverse(), o)
			}
		},
		Ga.prototype.fixStartIndex = function(t, e) {
			for (var n, r = -1,
			i = 0; i < t.length; i++) if (this.compareCoord(t[i], e[0])) {
				r = i;
				break
			}
			return r >= 0 && (n = [].concat(t.slice(r, t.length), t.slice(1, r + 1))),
			n
		},
		Ga.prototype.comparePath = function(t, e) {
			var n = this;
			return t.every(function(t, e) {
				return n.compareCoord(t, this[e])
			},
			e)
		},
		Ga.prototype.comparePolygon = function(t, e) {
			if (this.compareLine(t.coordinates[0], e.coordinates[0], 1, !0)) {
				var n = t.coordinates.slice(1, t.coordinates.length),
				r = e.coordinates.slice(1, e.coordinates.length),
				i = this;
				return n.every(function(t) {
					return this.some(function(e) {
						return i.compareLine(t, e, 1, !0)
					})
				},
				r)
			}
			return ! 1
		},
		Ga.prototype.compareFeature = function(t, e) {
			return ! (t.id !== e.id || !this.objectComparator(t.properties, e.properties) || !this.compareBBox(t, e)) && this.compare(t.geometry, e.geometry)
		},
		Ga.prototype.compareBBox = function(t, e) {
			return !! (!t.bbox && !e.bbox || t.bbox && e.bbox && this.compareCoord(t.bbox, e.bbox))
		},
		Ga.prototype.removePseudo = function(t) {
			return t
		};
		var Ua = Ga,
		za = mt(function(t) {
			function e(t, e, n, r) {
				this.dataset = [],
				this.epsilon = 1,
				this.minPts = 2,
				this.distance = this._euclideanDistance,
				this.clusters = [],
				this.noise = [],
				this._visited = [],
				this._assigned = [],
				this._datasetLength = 0,
				this._init(t, e, n, r)
			}
			e.prototype.run = function(t, e, n, r) {
				this._init(t, e, n, r);
				for (var i = 0; i < this._datasetLength; i++) if (1 !== this._visited[i]) {
					this._visited[i] = 1;
					var o = this._regionQuery(i);
					if (o.length < this.minPts) this.noise.push(i);
					else {
						var s = this.clusters.length;
						this.clusters.push([]),
						this._addToCluster(i, s),
						this._expandCluster(s, o)
					}
				}
				return this.clusters
			},
			e.prototype._init = function(t, e, n, r) {
				if (t) {
					if (! (t instanceof Array)) throw Error("Dataset must be of type array, " + typeof t + " given");
					this.dataset = t,
					this.clusters = [],
					this.noise = [],
					this._datasetLength = t.length,
					this._visited = new Array(this._datasetLength),
					this._assigned = new Array(this._datasetLength)
				}
				e && (this.epsilon = e),
				n && (this.minPts = n),
				r && (this.distance = r)
			},
			e.prototype._expandCluster = function(t, e) {
				for (var n = 0; n < e.length; n++) {
					var r = e[n];
					if (1 !== this._visited[r]) {
						this._visited[r] = 1;
						var i = this._regionQuery(r);
						i.length >= this.minPts && (e = this._mergeArrays(e, i))
					}
					1 !== this._assigned[r] && this._addToCluster(r, t)
				}
			},
			e.prototype._addToCluster = function(t, e) {
				this.clusters[e].push(t),
				this._assigned[t] = 1
			},
			e.prototype._regionQuery = function(t) {
				for (var e = [], n = 0; n < this._datasetLength; n++) this.distance(this.dataset[t], this.dataset[n]) < this.epsilon && e.push(n);
				return e
			},
			e.prototype._mergeArrays = function(t, e) {
				for (var n = e.length,
				r = 0; r < n; r++) {
					var i = e[r];
					t.indexOf(i) < 0 && t.push(i)
				}
				return t
			},
			e.prototype._euclideanDistance = function(t, e) {
				for (var n = 0,
				r = Math.min(t.length, e.length); r--;) n += (t[r] - e[r]) * (t[r] - e[r]);
				return Math.sqrt(n)
			},
			t.exports && (t.exports = e)
		}),
		Ya = mt(function(t) {
			function e(t, e, n) {
				this.k = 3,
				this.dataset = [],
				this.assignments = [],
				this.centroids = [],
				this.init(t, e, n)
			}
			e.prototype.init = function(t, e, n) {
				this.assignments = [],
				this.centroids = [],
				void 0 !== t && (this.dataset = t),
				void 0 !== e && (this.k = e),
				void 0 !== n && (this.distance = n)
			},
			e.prototype.run = function(t, e) {
				this.init(t, e);
				for (var n = this.dataset.length,
				r = 0; r < this.k; r++) this.centroids[r] = this.randomCentroid();
				for (var i = !0; i;) {
					i = this.assign();
					for (var o = 0; o < this.k; o++) {
						for (var s = new Array(l), a = 0, u = 0; u < l; u++) s[u] = 0;
						for (var c = 0; c < n; c++) {
							var l = this.dataset[c].length;
							if (o === this.assignments[c]) {
								for (u = 0; u < l; u++) s[u] += this.dataset[c][u];
								a++
							}
						}
						if (a > 0) {
							for (u = 0; u < l; u++) s[u] /= a;
							this.centroids[o] = s
						} else this.centroids[o] = this.randomCentroid(),
						i = !0
					}
				}
				return this.getClusters()
			},
			e.prototype.randomCentroid = function() {
				var t, e, n = this.dataset.length - 1;
				do {
					e = Math.round(Math.random() * n), t = this.dataset[e]
				} while ( this . centroids . indexOf ( t ) >= 0);
				return t
			},
			e.prototype.assign = function() {
				for (var t, e = !1,
				n = this.dataset.length,
				r = 0; r < n; r++)(t = this.argmin(this.dataset[r], this.centroids, this.distance)) != this.assignments[r] && (this.assignments[r] = t, e = !0);
				return e
			},
			e.prototype.getClusters = function() {
				for (var t, e = new Array(this.k), n = 0; n < this.assignments.length; n++) void 0 === e[t = this.assignments[n]] && (e[t] = []),
				e[t].push(n);
				return e
			},
			e.prototype.argmin = function(t, e, n) {
				for (var r, i = Number.MAX_VALUE,
				o = 0,
				s = e.length,
				a = 0; a < s; a++)(r = n(t, e[a])) < i && (i = r, o = a);
				return o
			},
			e.prototype.distance = function(t, e) {
				for (var n = 0,
				r = Math.min(t.length, e.length); r--;) {
					var i = t[r] - e[r];
					n += i * i
				}
				return Math.sqrt(n)
			},
			t.exports && (t.exports = e)
		}),
		Xa = mt(function(t) {
			function e(t, e, n) {
				this._queue = [],
				this._priorities = [],
				this._sorting = "desc",
				this._init(t, e, n)
			}
			e.prototype.insert = function(t, e) {
				for (var n = this._queue.length,
				r = n; r--;) {
					var i = this._priorities[r];
					"desc" === this._sorting ? e > i && (n = r) : e < i && (n = r)
				}
				this._insertAt(t, e, n)
			},
			e.prototype.remove = function(t) {
				for (var e = this._queue.length; e--;) if (t === this._queue[e]) {
					this._queue.splice(e, 1),
					this._priorities.splice(e, 1);
					break
				}
			},
			e.prototype.forEach = function(t) {
				this._queue.forEach(t)
			},
			e.prototype.getElements = function() {
				return this._queue
			},
			e.prototype.getElementPriority = function(t) {
				return this._priorities[t]
			},
			e.prototype.getPriorities = function() {
				return this._priorities
			},
			e.prototype.getElementsWithPriorities = function() {
				for (var t = [], e = 0, n = this._queue.length; e < n; e++) t.push([this._queue[e], this._priorities[e]]);
				return t
			},
			e.prototype._init = function(t, e, n) {
				if (t && e) {
					if (this._queue = [], this._priorities = [], t.length !== e.length) throw new Error("Arrays must have the same length");
					for (var r = 0; r < t.length; r++) this.insert(t[r], e[r])
				}
				n && (this._sorting = n)
			},
			e.prototype._insertAt = function(t, e, n) {
				this._queue.length === n ? (this._queue.push(t), this._priorities.push(e)) : (this._queue.splice(n, 0, t), this._priorities.splice(n, 0, e))
			},
			t.exports && (t.exports = e)
		}),
		Va = mt(function(t) {
			function e(t, e, n, r) {
				this.epsilon = 1,
				this.minPts = 1,
				this.distance = this._euclideanDistance,
				this._reachability = [],
				this._processed = [],
				this._coreDistance = 0,
				this._orderedList = [],
				this._init(t, e, n, r)
			}
			if (t.exports) var n = Xa;
			e.prototype.run = function(t, e, r, i) {
				this._init(t, e, r, i);
				for (var o = 0,
				s = this.dataset.length; o < s; o++) if (1 !== this._processed[o]) {
					this._processed[o] = 1,
					this.clusters.push([o]);
					var a = this.clusters.length - 1;
					this._orderedList.push(o);
					var u = new n(null, null, "asc"),
					c = this._regionQuery(o);
					void 0 !== this._distanceToCore(o) && (this._updateQueue(o, c, u), this._expandCluster(a, u))
				}
				return this.clusters
			},
			e.prototype.getReachabilityPlot = function() {
				for (var t = [], e = 0, n = this._orderedList.length; e < n; e++) {
					var r = this._orderedList[e],
					i = this._reachability[r];
					t.push([r, i])
				}
				return t
			},
			e.prototype._init = function(t, e, n, r) {
				if (t) {
					if (! (t instanceof Array)) throw Error("Dataset must be of type array, " + typeof t + " given");
					this.dataset = t,
					this.clusters = [],
					this._reachability = new Array(this.dataset.length),
					this._processed = new Array(this.dataset.length),
					this._coreDistance = 0,
					this._orderedList = []
				}
				e && (this.epsilon = e),
				n && (this.minPts = n),
				r && (this.distance = r)
			},
			e.prototype._updateQueue = function(t, e, n) {
				var r = this;
				this._coreDistance = this._distanceToCore(t),
				e.forEach(function(e) {
					if (void 0 === r._processed[e]) {
						var i = r.distance(r.dataset[t], r.dataset[e]),
						o = Math.max(r._coreDistance, i);
						void 0 === r._reachability[e] ? (r._reachability[e] = o, n.insert(e, o)) : o < r._reachability[e] && (r._reachability[e] = o, n.remove(e), n.insert(e, o))
					}
				})
			},
			e.prototype._expandCluster = function(t, e) {
				for (var n = e.getElements(), r = 0, i = n.length; r < i; r++) {
					var o = n[r];
					if (void 0 === this._processed[o]) {
						var s = this._regionQuery(o);
						this._processed[o] = 1,
						this.clusters[t].push(o),
						this._orderedList.push(o),
						void 0 !== this._distanceToCore(o) && (this._updateQueue(o, s, e), this._expandCluster(t, e))
					}
				}
			},
			e.prototype._distanceToCore = function(t) {
				for (var e = this.epsilon,
				n = 0; n < e; n++) if (this._regionQuery(t, n).length >= this.minPts) return n
			},
			e.prototype._regionQuery = function(t, e) {
				e = e || this.epsilon;
				for (var n = [], r = 0, i = this.dataset.length; r < i; r++) this.distance(this.dataset[t], this.dataset[r]) < e && n.push(r);
				return n
			},
			e.prototype._euclideanDistance = function(t, e) {
				for (var n = 0,
				r = Math.min(t.length, e.length); r--;) n += (t[r] - e[r]) * (t[r] - e[r]);
				return Math.sqrt(n)
			},
			t.exports && (t.exports = e)
		}),
		Wa = mt(function(t) {
			t.exports && (t.exports = {
				DBSCAN: za,
				KMEANS: Ya,
				OPTICS: Va,
				PriorityQueue: Xa
			})
		}),
		Ha = (Wa.DBSCAN, Wa.KMEANS, Wa.OPTICS, Wa.PriorityQueue,
		function(t, e, n) {
			for (var r = t.length,
			i = 0,
			o = 0; o < r; o++) {
				var s = (t[o] || 0) - (e[o] || 0);
				i += s * s
			}
			return n ? Math.sqrt(i) : i
		}),
		Ja = Ha,
		Za = function(t, e, n) {
			var r = Math.abs(t - e);
			return n ? r: r * r
		},
		Qa = Ha,
		Ka = function(t, e) {
			for (var n = {},
			r = [], i = e << 2, o = t.length, s = t[0].length > 0; r.length < e && i-->0;) {
				var a = t[Math.floor(Math.random() * o)],
				u = s ? a.join("_") : "" + a;
				n[u] || (n[u] = !0, r.push(a))
			}
			if (r.length < e) throw new Error("Error initializating clusters");
			return r
		},
		$a = function(t, e) {
			var n = t[0].length ? Ja: Za,
			r = [],
			i = t.length,
			o = t[0].length > 0,
			s = t[Math.floor(Math.random() * i)];
			for (o && s.join("_"), r.push(s); r.length < e;) {
				for (var a = [], u = r.length, c = 0, l = [], h = 0; h < i; h++) {
					for (var f = 1 / 0,
					p = 0; p < u; p++) {
						var d = n(t[h], r[p]);
						d <= f && (f = d)
					}
					a[h] = f
				}
				for (var g = 0; g < i; g++) c += a[g];
				for (var y = 0; y < i; y++) l[y] = {
					i: y,
					v: t[y],
					pr: a[y] / c,
					cs: 0
				};
				l.sort(function(t, e) {
					return t.pr - e.pr
				}),
				l[0].cs = l[0].pr;
				for (var v = 1; v < i; v++) l[v].cs = l[v - 1].cs + l[v].pr;
				for (var m = Math.random(), _ = 0; _ < i - 1 && l[_++].cs < m;);
				r.push(l[_ - 1].v)
			}
			return r
		},
		tu = function(t, e, n, r) {
			var i = [],
			o = [],
			s = [],
			a = [],
			u = !1,
			c = r || 1e4,
			l = t.length,
			h = t[0].length,
			f = h > 0,
			p = [];
			if (n) i = "kmrand" == n ? Ka(t, e) : "kmpp" == n ? $a(t, e) : n;
			else for (var d = {}; i.length < e;) {
				var g = Math.floor(Math.random() * l);
				d[g] || (d[g] = !0, i.push(t[g]))
			}
			do {
				Rr(e, 0, p);
				for (var y = 0; y < l; y++) {
					for (var v = 1 / 0,
					m = 0,
					_ = 0; _ < e; _++)(a = f ? Qa(t[y], i[_]) : Math.abs(t[y] - i[_])) <= v && (v = a, m = _);
					s[y] = m,
					p[m]++
				}
				for (var w = [], b = (o = [], 0); b < e; b++) w[b] = f ? Rr(h, 0, w[b]) : 0, o[b] = i[b];
				if (f) {
					for (var x = 0; x < e; x++) i[x] = [];
					for (var E = 0; E < l; E++) for (var M = w[s[E]], I = t[E], S = 0; S < h; S++) M[S] += I[S];
					u = !0;
					for (var C = 0; C < e; C++) {
						for (var N = i[C], P = w[C], L = o[C], A = p[C], O = 0; O < h; O++) N[O] = P[O] / A || 0;
						if (u) for (var T = 0; T < h; T++) if (L[T] != N[T]) {
							u = !1;
							break
						}
					}
				} else {
					for (var R = 0; R < l; R++) w[s[R]] += t[R];
					for (var D = 0; D < e; D++) i[D] = w[D] / p[D] || 0;
					u = !0;
					for (var k = 0; k < e; k++) if (o[k] != i[k]) {
						u = !1;
						break
					}
				}
				u = u || --c <= 0
			} while (! u );
			return {
				it: 1e4 - c,
				k: e,
				idxs: s,
				centroids: i
			}
		},
		eu = {
			search: function(t, e, n, r) {
				t.cleanDirty();
				var i = (r = r || {}).heuristic || eu.heuristics.manhattan,
				o = r.closest || !1,
				s = new qr(function(t) {
					return t.f
				}),
				a = e;
				for (e.h = i(e, n), s.push(e); s.size() > 0;) {
					var u = s.pop();
					if (u === n) return kr(u);
					u.closed = !0;
					for (var c = t.neighbors(u), l = 0, h = c.length; l < h; ++l) {
						var f = c[l];
						if (!f.closed && !f.isWall()) {
							var p = u.g + f.getCost(u),
							d = f.visited; (!d || p < f.g) && (f.visited = !0, f.parent = u, f.h = f.h || i(f, n), f.g = p, f.f = f.g + f.h, t.markDirty(f), o && (f.h < a.h || f.h === a.h && f.g < a.g) && (a = f), d ? s.rescoreElement(f) : s.push(f))
						}
					}
				}
				return o ? kr(a) : []
			},
			heuristics: {
				manhattan: function(t, e) {
					return Math.abs(e.x - t.x) + Math.abs(e.y - t.y)
				},
				diagonal: function(t, e) {
					var n = Math.sqrt(2),
					r = Math.abs(e.x - t.x),
					i = Math.abs(e.y - t.y);
					return 1 * (r + i) + (n - 2) * Math.min(r, i)
				}
			},
			cleanNode: function(t) {
				t.f = 0,
				t.g = 0,
				t.h = 0,
				t.visited = !1,
				t.closed = !1,
				t.parent = null
			}
		};
		Fr.prototype.init = function() {
			this.dirtyNodes = [];
			for (var t = 0; t < this.nodes.length; t++) eu.cleanNode(this.nodes[t])
		},
		Fr.prototype.cleanDirty = function() {
			for (var t = 0; t < this.dirtyNodes.length; t++) eu.cleanNode(this.dirtyNodes[t]);
			this.dirtyNodes = []
		},
		Fr.prototype.markDirty = function(t) {
			this.dirtyNodes.push(t)
		},
		Fr.prototype.neighbors = function(t) {
			var e = [],
			n = t.x,
			r = t.y,
			i = this.grid;
			return i[n - 1] && i[n - 1][r] && e.push(i[n - 1][r]),
			i[n + 1] && i[n + 1][r] && e.push(i[n + 1][r]),
			i[n] && i[n][r - 1] && e.push(i[n][r - 1]),
			i[n] && i[n][r + 1] && e.push(i[n][r + 1]),
			this.diagonal && (i[n - 1] && i[n - 1][r - 1] && e.push(i[n - 1][r - 1]), i[n + 1] && i[n + 1][r - 1] && e.push(i[n + 1][r - 1]), i[n - 1] && i[n - 1][r + 1] && e.push(i[n - 1][r + 1]), i[n + 1] && i[n + 1][r + 1] && e.push(i[n + 1][r + 1])),
			e
		},
		Fr.prototype.toString = function() {
			for (var t, e, n, r, i = [], o = this.grid, s = 0, a = o.length; s < a; s++) {
				for (t = [], n = 0, r = (e = o[s]).length; n < r; n++) t.push(e[n].weight);
				i.push(t.join(" "))
			}
			return i.join("\n")
		},
		jr.prototype.toString = function() {
			return "[" + this.x + " " + this.y + "]"
		},
		jr.prototype.getCost = function(t) {
			return t && t.x !== this.x && t.y !== this.y ? 1.41421 * this.weight: this.weight
		},
		jr.prototype.isWall = function() {
			return 0 === this.weight
		},
		qr.prototype = {
			push: function(t) {
				this.content.push(t),
				this.sinkDown(this.content.length - 1)
			},
			pop: function() {
				var t = this.content[0],
				e = this.content.pop();
				return this.content.length > 0 && (this.content[0] = e, this.bubbleUp(0)),
				t
			},
			remove: function(t) {
				var e = this.content.indexOf(t),
				n = this.content.pop();
				e !== this.content.length - 1 && (this.content[e] = n, this.scoreFunction(n) < this.scoreFunction(t) ? this.sinkDown(e) : this.bubbleUp(e))
			},
			size: function() {
				return this.content.length
			},
			rescoreElement: function(t) {
				this.sinkDown(this.content.indexOf(t))
			},
			sinkDown: function(t) {
				for (var e = this.content[t]; t > 0;) {
					var n = (t + 1 >> 1) - 1,
					r = this.content[n];
					if (! (this.scoreFunction(e) < this.scoreFunction(r))) break;
					this.content[n] = e,
					this.content[t] = r,
					t = n
				}
			},
			bubbleUp: function(t) {
				for (var e = this.content.length,
				n = this.content[t], r = this.scoreFunction(n);;) {
					var i, o = t + 1 << 1,
					s = o - 1,
					a = null;
					if (s < e) {
						var u = this.content[s]; (i = this.scoreFunction(u)) < r && (a = s)
					}
					if (o < e) {
						var c = this.content[o];
						this.scoreFunction(c) < (null === a ? r: i) && (a = o)
					}
					if (null === a) break;
					this.content[t] = this.content[a],
					this.content[a] = n,
					t = a
				}
			}
		};
		var nu = function(t) {
			return function() {
				return t
			}
		};
		Ur.prototype = {
			constructor: Ur,
			insert: function(t, e) {
				var n, r, i;
				if (t) {
					if (e.P = t, e.N = t.N, t.N && (t.N.P = e), t.N = e, t.R) {
						for (t = t.R; t.L;) t = t.L;
						t.L = e
					} else t.R = e;
					n = t
				} else this._ ? (t = Vr(this._), e.P = null, e.N = t, t.P = t.L = e, n = t) : (e.P = e.N = null, this._ = e, n = null);
				for (e.L = e.R = null, e.U = n, e.C = !0, t = e; n && n.C;) n === (r = n.U).L ? (i = r.R) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.R && (Yr(this, n), n = (t = n).U), n.C = !1, r.C = !0, Xr(this, r)) : (i = r.L) && i.C ? (n.C = i.C = !1, r.C = !0, t = r) : (t === n.L && (Xr(this, n), n = (t = n).U), n.C = !1, r.C = !0, Yr(this, r)),
				n = t.U;
				this._.C = !1
			},
			remove: function(t) {
				t.N && (t.N.P = t.P),
				t.P && (t.P.N = t.N),
				t.N = t.P = null;
				var e, n, r, i = t.U,
				o = t.L,
				s = t.R;
				if (n = o ? s ? Vr(s) : o: s, i ? i.L === t ? i.L = n: i.R = n: this._ = n, o && s ? (r = n.C, n.C = t.C, n.L = o, o.U = n, n !== s ? (i = n.U, n.U = t.U, t = n.R, i.L = t, n.R = s, s.U = n) : (n.U = i, i = n, t = n.R)) : (r = t.C, t = n), t && (t.U = i), !r) if (t && t.C) t.C = !1;
				else {
					do {
						if (t === this._) break;
						if (t === i.L) {
							if ((e = i.R).C && (e.C = !1, i.C = !0, Yr(this, i), e = i.R), e.L && e.L.C || e.R && e.R.C) {
								e.R && e.R.C || (e.L.C = !1, e.C = !0, Xr(this, e), e = i.R),
								e.C = i.C,
								i.C = e.R.C = !1,
								Yr(this, i),
								t = this._;
								break
							}
						} else if ((e = i.L).C && (e.C = !1, i.C = !0, Xr(this, i), e = i.L), e.L && e.L.C || e.R && e.R.C) {
							e.L && e.L.C || (e.R.C = !1, e.C = !0, Yr(this, e), e = i.L),
							e.C = i.C,
							i.C = e.L.C = !1,
							Xr(this, i),
							t = this._;
							break
						}
						e.C = !0, t = i, i = i.U
					} while (! t . C );
					t && (t.C = !1)
				}
			}
		};
		var ru, iu, ou, su, au, uu = [],
		cu = [],
		lu = 1e-6,
		hu = 1e-12;
		li.prototype = {
			constructor: li,
			polygons: function() {
				var t = this.edges;
				return this.cells.map(function(e) {
					var n = e.halfedges.map(function(n) {
						return $r(e, t[n])
					});
					return n.data = e.site.data,
					n
				})
			},
			triangles: function() {
				var t = [],
				e = this.edges;
				return this.cells.forEach(function(n, r) {
					if (o = (i = n.halfedges).length) for (var i, o, s, a = n.site,
					u = -1,
					c = e[i[o - 1]], l = c.left === a ? c.right: c.left; ++u < o;) s = l,
					l = (c = e[i[u]]).left === a ? c.right: c.left,
					s && l && r < s.index && r < l.index && ui(a, s, l) < 0 && t.push([a.data, s.data, l.data])
				}),
				t
			},
			links: function() {
				return this.edges.filter(function(t) {
					return t.right
				}).map(function(t) {
					return {
						source: t.left.data,
						target: t.right.data
					}
				})
			},
			find: function(t, e, n) {
				for (var r, i, o = this,
				s = o._found || 0,
				a = o.cells.length; ! (i = o.cells[s]);) if (++s >= a) return null;
				var u = t - i.site[0],
				c = e - i.site[1],
				l = u * u + c * c;
				do {
					i = o.cells[r = s], s = null, i.halfedges.forEach(function(n) {
						var r = o.edges[n],
						a = r.left;
						if (a !== i.site && a || (a = r.right)) {
							var u = t - a[0],
							c = e - a[1],
							h = u * u + c * c;
							h < l && (l = h, s = a.index)
						}
					})
				} while ( null !== s );
				return o._found = r,
				null == n || l <= n * n ? i.site: null
			}
		};
		var fu = function() {
			function t(t) {
				return new li(t.map(function(r, i) {
					var o = [Math.round(e(r, i, t) / lu) * lu, Math.round(n(r, i, t) / lu) * lu];
					return o.index = i,
					o.data = r,
					o
				}), r)
			}
			var e = Br,
			n = Gr,
			r = null;
			return t.polygons = function(e) {
				return t(e).polygons()
			},
			t.links = function(e) {
				return t(e).links()
			},
			t.triangles = function(e) {
				return t(e).triangles()
			},
			t.x = function(n) {
				return arguments.length ? (e = "function" == typeof n ? n: nu( + n), t) : e
			},
			t.y = function(e) {
				return arguments.length ? (n = "function" == typeof e ? e: nu( + e), t) : n
			},
			t.extent = function(e) {
				return arguments.length ? (r = null == e ? null: [[ + e[0][0], +e[0][1]], [ + e[1][0], +e[1][1]]], t) : r && [[r[0][0], r[0][1]], [r[1][0], r[1][1]]]
			},
			t.size = function(e) {
				return arguments.length ? (r = null == e ? null: [[0, 0], [ + e[0], +e[1]]], t) : r && [r[1][0] - r[0][0], r[1][1] - r[0][1]]
			},
			t
		},
		pu = Object.freeze({
			randomPosition: vi,
			randomPoint: mi,
			randomPolygon: _i,
			randomLineString: wi
		}),
		du = Object.freeze({
			getCluster: xi,
			clusterEach: Ei,
			clusterReduce: Mi,
			createBins: Ii,
			applyFilter: Si,
			propertiesContainsFilter: Ci,
			filterProperties: Ni
		});
		"fill" in Array.prototype || Object.defineProperty(Array.prototype, "fill", {
			configurable: !0,
			value: function(t) {
				if (void 0 === this || null === this) throw new TypeError(this + " is not an object");
				var e = Object(this),
				n = Math.max(Math.min(e.length, 9007199254740991), 0) || 0,
				r = 1 in arguments ? parseInt(Number(arguments[1]), 10) || 0 : 0;
				r = r < 0 ? Math.max(n + r, 0) : Math.min(r, n);
				var i = 2 in arguments && void 0 !== arguments[2] ? parseInt(Number(arguments[2]), 10) || 0 : n;
				for (i = i < 0 ? Math.max(n + arguments[2], 0) : Math.min(i, n); r < i;) e[r] = t,
				++r;
				return e
			},
			writable: !0
		}),
		Number.isFinite = Number.isFinite ||
		function(t) {
			return "number" == typeof t && isFinite(t)
		},
		Number.isInteger = Number.isInteger ||
		function(t) {
			return "number" == typeof t && isFinite(t) && Math.floor(t) === t
		},
		Number.parseFloat = Number.parseFloat || parseFloat,
		Number.isNaN = Number.isNaN ||
		function(t) {
			return t != t
		},
		Math.trunc = Math.trunc ||
		function(t) {
			return t < 0 ? Math.ceil(t) : Math.floor(t)
		};
		var gu = function() {};
		gu.prototype.interfaces_ = function() {
			return []
		},
		gu.prototype.getClass = function() {
			return gu
		},
		gu.prototype.equalsWithTolerance = function(t, e, n) {
			return Math.abs(t - e) <= n
		};
		var yu = function() {},
		vu = function() {},
		mu = {
			MAX_VALUE: {
				configurable: !0
			}
		};
		vu.isNaN = function(t) {
			return Number.isNaN(t)
		},
		vu.doubleToLongBits = function(t) {
			return t
		},
		vu.longBitsToDouble = function(t) {
			return t
		},
		vu.isInfinite = function(t) {
			return ! Number.isFinite(t)
		},
		mu.MAX_VALUE.get = function() {
			return Number.MAX_VALUE
		},
		Object.defineProperties(vu, mu);
		var _u = function() {},
		wu = function() {},
		bu = function() {},
		xu = function t() {
			if (this.x = null, this.y = null, this.z = null, 0 === arguments.length) this.x = 0,
			this.y = 0,
			this.z = t.NULL_ORDINATE;
			else if (1 === arguments.length) {
				var e = arguments[0];
				this.x = e.x,
				this.y = e.y,
				this.z = e.z
			} else 2 === arguments.length ? (this.x = arguments[0], this.y = arguments[1], this.z = t.NULL_ORDINATE) : 3 === arguments.length && (this.x = arguments[0], this.y = arguments[1], this.z = arguments[2])
		},
		Eu = {
			DimensionalComparator: {
				configurable: !0
			},
			serialVersionUID: {
				configurable: !0
			},
			NULL_ORDINATE: {
				configurable: !0
			},
			X: {
				configurable: !0
			},
			Y: {
				configurable: !0
			},
			Z: {
				configurable: !0
			}
		};
		xu.prototype.setOrdinate = function(t, e) {
			switch (t) {
			case xu.X:
				this.x = e;
				break;
			case xu.Y:
				this.y = e;
				break;
			case xu.Z:
				this.z = e;
				break;
			default:
				throw new yu("Invalid ordinate index: " + t)
			}
		},
		xu.prototype.equals2D = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this.x === t.x && this.y === t.y
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return !! gu.equalsWithTolerance(this.x, e.x, n) && !!gu.equalsWithTolerance(this.y, e.y, n)
			}
		},
		xu.prototype.getOrdinate = function(t) {
			switch (t) {
			case xu.X:
				return this.x;
			case xu.Y:
				return this.y;
			case xu.Z:
				return this.z
			}
			throw new yu("Invalid ordinate index: " + t)
		},
		xu.prototype.equals3D = function(t) {
			return this.x === t.x && this.y === t.y && (this.z === t.z || vu.isNaN(this.z)) && vu.isNaN(t.z)
		},
		xu.prototype.equals = function(t) {
			return t instanceof xu && this.equals2D(t)
		},
		xu.prototype.equalInZ = function(t, e) {
			return gu.equalsWithTolerance(this.z, t.z, e)
		},
		xu.prototype.compareTo = function(t) {
			var e = t;
			return this.x < e.x ? -1 : this.x > e.x ? 1 : this.y < e.y ? -1 : this.y > e.y ? 1 : 0
		},
		xu.prototype.clone = function() {},
		xu.prototype.copy = function() {
			return new xu(this)
		},
		xu.prototype.toString = function() {
			return "(" + this.x + ", " + this.y + ", " + this.z + ")"
		},
		xu.prototype.distance3D = function(t) {
			var e = this.x - t.x,
			n = this.y - t.y,
			r = this.z - t.z;
			return Math.sqrt(e * e + n * n + r * r)
		},
		xu.prototype.distance = function(t) {
			var e = this.x - t.x,
			n = this.y - t.y;
			return Math.sqrt(e * e + n * n)
		},
		xu.prototype.hashCode = function() {
			var t = 17;
			return t = 37 * t + xu.hashCode(this.x),
			t = 37 * t + xu.hashCode(this.y)
		},
		xu.prototype.setCoordinate = function(t) {
			this.x = t.x,
			this.y = t.y,
			this.z = t.z
		},
		xu.prototype.interfaces_ = function() {
			return [_u, wu, Pi]
		},
		xu.prototype.getClass = function() {
			return xu
		},
		xu.hashCode = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = vu.doubleToLongBits(t);
				return Math.trunc((e ^ e) >>> 32)
			}
		},
		Eu.DimensionalComparator.get = function() {
			return Mu
		},
		Eu.serialVersionUID.get = function() {
			return 0x5cbf2c235c7e5800
		},
		Eu.NULL_ORDINATE.get = function() {
			return vu.NaN
		},
		Eu.X.get = function() {
			return 0
		},
		Eu.Y.get = function() {
			return 1
		},
		Eu.Z.get = function() {
			return 2
		},
		Object.defineProperties(xu, Eu);
		var Mu = function(t) {
			if (this._dimensionsToTest = 2, 0 === arguments.length);
			else if (1 === arguments.length) {
				var e = arguments[0];
				if (2 !== e && 3 !== e) throw new yu("only 2 or 3 dimensions may be specified");
				this._dimensionsToTest = e
			}
		};
		Mu.prototype.compare = function(t, e) {
			var n = t,
			r = e,
			i = Mu.compare(n.x, r.x);
			if (0 !== i) return i;
			var o = Mu.compare(n.y, r.y);
			return 0 !== o ? o: this._dimensionsToTest <= 2 ? 0 : Mu.compare(n.z, r.z)
		},
		Mu.prototype.interfaces_ = function() {
			return [bu]
		},
		Mu.prototype.getClass = function() {
			return Mu
		},
		Mu.compare = function(t, e) {
			return t < e ? -1 : t > e ? 1 : vu.isNaN(t) ? vu.isNaN(e) ? 0 : -1 : vu.isNaN(e) ? 1 : 0
		};
		var Iu = function() {};
		Iu.prototype.create = function() {},
		Iu.prototype.interfaces_ = function() {
			return []
		},
		Iu.prototype.getClass = function() {
			return Iu
		};
		var Su = function() {},
		Cu = {
			INTERIOR: {
				configurable: !0
			},
			BOUNDARY: {
				configurable: !0
			},
			EXTERIOR: {
				configurable: !0
			},
			NONE: {
				configurable: !0
			}
		};
		Su.prototype.interfaces_ = function() {
			return []
		},
		Su.prototype.getClass = function() {
			return Su
		},
		Su.toLocationSymbol = function(t) {
			switch (t) {
			case Su.EXTERIOR:
				return "e";
			case Su.BOUNDARY:
				return "b";
			case Su.INTERIOR:
				return "i";
			case Su.NONE:
				return "-"
			}
			throw new yu("Unknown location value: " + t)
		},
		Cu.INTERIOR.get = function() {
			return 0
		},
		Cu.BOUNDARY.get = function() {
			return 1
		},
		Cu.EXTERIOR.get = function() {
			return 2
		},
		Cu.NONE.get = function() {
			return - 1
		},
		Object.defineProperties(Su, Cu);
		var Nu = function(t, e) {
			return t.interfaces_ && t.interfaces_().indexOf(e) > -1
		},
		Pu = function() {},
		Lu = {
			LOG_10: {
				configurable: !0
			}
		};
		Pu.prototype.interfaces_ = function() {
			return []
		},
		Pu.prototype.getClass = function() {
			return Pu
		},
		Pu.log10 = function(t) {
			var e = Math.log(t);
			return vu.isInfinite(e) ? e: vu.isNaN(e) ? e: e / Pu.LOG_10
		},
		Pu.min = function(t, e, n, r) {
			var i = t;
			return e < i && (i = e),
			n < i && (i = n),
			r < i && (i = r),
			i
		},
		Pu.clamp = function() {
			if ("number" == typeof arguments[2] && "number" == typeof arguments[0] && "number" == typeof arguments[1]) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2];
				return t < e ? e: t > n ? n: t
			}
			if (Number.isInteger(arguments[2]) && Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				return r < i ? i: r > o ? o: r
			}
		},
		Pu.wrap = function(t, e) {
			return t < 0 ? e - -t % e: t % e
		},
		Pu.max = function() {
			if (3 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2],
				r = t;
				return e > r && (r = e),
				n > r && (r = n),
				r
			}
			if (4 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2],
				a = arguments[3],
				u = i;
				return o > u && (u = o),
				s > u && (u = s),
				a > u && (u = a),
				u
			}
		},
		Pu.average = function(t, e) {
			return (t + e) / 2
		},
		Lu.LOG_10.get = function() {
			return Math.log(10)
		},
		Object.defineProperties(Pu, Lu);
		var Au = function(t) {
			this.str = t
		};
		Au.prototype.append = function(t) {
			this.str += t
		},
		Au.prototype.setCharAt = function(t, e) {
			this.str = this.str.substr(0, t) + e + this.str.substr(t + 1)
		},
		Au.prototype.toString = function(t) {
			return this.str
		};
		var Ou = function(t) {
			this.value = t
		};
		Ou.prototype.intValue = function() {
			return this.value
		},
		Ou.prototype.compareTo = function(t) {
			return this.value < t ? -1 : this.value > t ? 1 : 0
		},
		Ou.isNaN = function(t) {
			return Number.isNaN(t)
		};
		var Tu = function() {};
		Tu.isWhitespace = function(t) {
			return t <= 32 && t >= 0 || 127 === t
		},
		Tu.toUpperCase = function(t) {
			return t.toUpperCase()
		};
		var Ru = function t() {
			if (this._hi = 0, this._lo = 0, 0 === arguments.length) this.init(0);
			else if (1 === arguments.length) {
				if ("number" == typeof arguments[0]) {
					var e = arguments[0];
					this.init(e)
				} else if (arguments[0] instanceof t) {
					var n = arguments[0];
					this.init(n)
				} else if ("string" == typeof arguments[0]) {
					var r = arguments[0];
					t.call(this, t.parse(r))
				}
			} else if (2 === arguments.length) {
				var i = arguments[0],
				o = arguments[1];
				this.init(i, o)
			}
		},
		Du = {
			PI: {
				configurable: !0
			},
			TWO_PI: {
				configurable: !0
			},
			PI_2: {
				configurable: !0
			},
			E: {
				configurable: !0
			},
			NaN: {
				configurable: !0
			},
			EPS: {
				configurable: !0
			},
			SPLIT: {
				configurable: !0
			},
			MAX_PRINT_DIGITS: {
				configurable: !0
			},
			TEN: {
				configurable: !0
			},
			ONE: {
				configurable: !0
			},
			SCI_NOT_EXPONENT_CHAR: {
				configurable: !0
			},
			SCI_NOT_ZERO: {
				configurable: !0
			}
		};
		Ru.prototype.le = function(t) {
			return (this._hi < t._hi || this._hi === t._hi) && this._lo <= t._lo
		},
		Ru.prototype.extractSignificantDigits = function(t, e) {
			var n = this.abs(),
			r = Ru.magnitude(n._hi),
			i = Ru.TEN.pow(r); (n = n.divide(i)).gt(Ru.TEN) ? (n = n.divide(Ru.TEN), r += 1) : n.lt(Ru.ONE) && (n = n.multiply(Ru.TEN), r -= 1);
			for (var o = r + 1,
			s = new Au,
			a = Ru.MAX_PRINT_DIGITS - 1,
			u = 0; u <= a; u++) {
				t && u === o && s.append(".");
				var c = Math.trunc(n._hi);
				if (c < 0) break;
				var l = !1,
				h = 0;
				c > 9 ? (l = !0, h = "9") : h = "0" + c,
				s.append(h),
				n = n.subtract(Ru.valueOf(c)).multiply(Ru.TEN),
				l && n.selfAdd(Ru.TEN);
				var f = !0,
				p = Ru.magnitude(n._hi);
				if (p < 0 && Math.abs(p) >= a - u && (f = !1), !f) break
			}
			return e[0] = r,
			s.toString()
		},
		Ru.prototype.sqr = function() {
			return this.multiply(this)
		},
		Ru.prototype.doubleValue = function() {
			return this._hi + this._lo
		},
		Ru.prototype.subtract = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0];
				return this.add(t.negate())
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return this.add( - e)
			}
		},
		Ru.prototype.equals = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this._hi === t._hi && this._lo === t._lo
			}
		},
		Ru.prototype.isZero = function() {
			return 0 === this._hi && 0 === this._lo
		},
		Ru.prototype.selfSubtract = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0];
				return this.isNaN() ? this: this.selfAdd( - t._hi, -t._lo)
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return this.isNaN() ? this: this.selfAdd( - e, 0)
			}
		},
		Ru.prototype.getSpecialNumberString = function() {
			return this.isZero() ? "0.0": this.isNaN() ? "NaN ": null
		},
		Ru.prototype.min = function(t) {
			return this.le(t) ? this: t
		},
		Ru.prototype.selfDivide = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Ru) {
					var t = arguments[0];
					return this.selfDivide(t._hi, t._lo)
				}
				if ("number" == typeof arguments[0]) {
					var e = arguments[0];
					return this.selfDivide(e, 0)
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = null,
				o = null,
				s = null,
				a = null,
				u = null,
				c = null,
				l = null,
				h = null;
				return u = this._hi / n,
				c = Ru.SPLIT * u,
				i = c - u,
				h = Ru.SPLIT * n,
				i = c - i,
				o = u - i,
				s = h - n,
				l = u * n,
				s = h - s,
				a = n - s,
				h = i * s - l + i * a + o * s + o * a,
				c = (this._hi - l - h + this._lo - u * r) / n,
				h = u + c,
				this._hi = h,
				this._lo = u - h + c,
				this
			}
		},
		Ru.prototype.dump = function() {
			return "DD<" + this._hi + ", " + this._lo + ">"
		},
		Ru.prototype.divide = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0],
				e = null,
				n = null,
				r = null,
				i = null,
				o = null,
				s = null,
				a = null,
				u = null;
				return n = (o = this._hi / t._hi) - (e = (s = Ru.SPLIT * o) - (e = s - o)),
				u = e * (r = (u = Ru.SPLIT * t._hi) - (r = u - t._hi)) - (a = o * t._hi) + e * (i = t._hi - r) + n * r + n * i,
				s = (this._hi - a - u + this._lo - o * t._lo) / t._hi,
				new Ru(u = o + s, o - u + s)
			}
			if ("number" == typeof arguments[0]) {
				var c = arguments[0];
				return vu.isNaN(c) ? Ru.createNaN() : Ru.copy(this).selfDivide(c, 0)
			}
		},
		Ru.prototype.ge = function(t) {
			return (this._hi > t._hi || this._hi === t._hi) && this._lo >= t._lo
		},
		Ru.prototype.pow = function(t) {
			if (0 === t) return Ru.valueOf(1);
			var e = new Ru(this),
			n = Ru.valueOf(1),
			r = Math.abs(t);
			if (r > 1) for (; r > 0;) r % 2 == 1 && n.selfMultiply(e),
			(r /= 2) > 0 && (e = e.sqr());
			else n = e;
			return t < 0 ? n.reciprocal() : n
		},
		Ru.prototype.ceil = function() {
			if (this.isNaN()) return Ru.NaN;
			var t = Math.ceil(this._hi),
			e = 0;
			return t === this._hi && (e = Math.ceil(this._lo)),
			new Ru(t, e)
		},
		Ru.prototype.compareTo = function(t) {
			var e = t;
			return this._hi < e._hi ? -1 : this._hi > e._hi ? 1 : this._lo < e._lo ? -1 : this._lo > e._lo ? 1 : 0
		},
		Ru.prototype.rint = function() {
			return this.isNaN() ? this: this.add(.5).floor()
		},
		Ru.prototype.setValue = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0];
				return this.init(t),
				this
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return this.init(e),
				this
			}
		},
		Ru.prototype.max = function(t) {
			return this.ge(t) ? this: t
		},
		Ru.prototype.sqrt = function() {
			if (this.isZero()) return Ru.valueOf(0);
			if (this.isNegative()) return Ru.NaN;
			var t = 1 / Math.sqrt(this._hi),
			e = this._hi * t,
			n = Ru.valueOf(e),
			r = this.subtract(n.sqr())._hi * (.5 * t);
			return n.add(r)
		},
		Ru.prototype.selfAdd = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Ru) {
					var t = arguments[0];
					return this.selfAdd(t._hi, t._lo)
				}
				if ("number" == typeof arguments[0]) {
					var e = arguments[0],
					n = null,
					r = null,
					i = null,
					o = null,
					s = null,
					a = null;
					return i = this._hi + e,
					s = i - this._hi,
					o = i - s,
					o = e - s + (this._hi - o),
					a = o + this._lo,
					n = i + a,
					r = a + (i - n),
					this._hi = n + r,
					this._lo = r + (n - this._hi),
					this
				}
			} else if (2 === arguments.length) {
				var u = arguments[0],
				c = arguments[1],
				l = null,
				h = null,
				f = null,
				p = null,
				d = null,
				g = null,
				y = null;
				p = this._hi + u,
				h = this._lo + c,
				d = p - (g = p - this._hi),
				f = h - (y = h - this._lo);
				var v = (l = p + (g = (d = u - g + (this._hi - d)) + h)) + (g = (f = c - y + (this._lo - f)) + (g + (p - l))),
				m = g + (l - v);
				return this._hi = v,
				this._lo = m,
				this
			}
		},
		Ru.prototype.selfMultiply = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Ru) {
					var t = arguments[0];
					return this.selfMultiply(t._hi, t._lo)
				}
				if ("number" == typeof arguments[0]) {
					var e = arguments[0];
					return this.selfMultiply(e, 0)
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = null,
				o = null,
				s = null,
				a = null,
				u = null,
				c = null;
				i = (u = Ru.SPLIT * this._hi) - this._hi,
				c = Ru.SPLIT * n,
				i = u - i,
				o = this._hi - i,
				s = c - n;
				var l = (u = this._hi * n) + (c = i * (s = c - s) - u + i * (a = n - s) + o * s + o * a + (this._hi * r + this._lo * n)),
				h = c + (i = u - l);
				return this._hi = l,
				this._lo = h,
				this
			}
		},
		Ru.prototype.selfSqr = function() {
			return this.selfMultiply(this)
		},
		Ru.prototype.floor = function() {
			if (this.isNaN()) return Ru.NaN;
			var t = Math.floor(this._hi),
			e = 0;
			return t === this._hi && (e = Math.floor(this._lo)),
			new Ru(t, e)
		},
		Ru.prototype.negate = function() {
			return this.isNaN() ? this: new Ru( - this._hi, -this._lo)
		},
		Ru.prototype.clone = function() {},
		Ru.prototype.multiply = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0];
				return t.isNaN() ? Ru.createNaN() : Ru.copy(this).selfMultiply(t)
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return vu.isNaN(e) ? Ru.createNaN() : Ru.copy(this).selfMultiply(e, 0)
			}
		},
		Ru.prototype.isNaN = function() {
			return vu.isNaN(this._hi)
		},
		Ru.prototype.intValue = function() {
			return Math.trunc(this._hi)
		},
		Ru.prototype.toString = function() {
			var t = Ru.magnitude(this._hi);
			return t >= -3 && t <= 20 ? this.toStandardNotation() : this.toSciNotation()
		},
		Ru.prototype.toStandardNotation = function() {
			var t = this.getSpecialNumberString();
			if (null !== t) return t;
			var e = new Array(1).fill(null),
			n = this.extractSignificantDigits(!0, e),
			r = e[0] + 1,
			i = n;
			if ("." === n.charAt(0)) i = "0" + n;
			else if (r < 0) i = "0." + Ru.stringOfChar("0", -r) + n;
			else if ( - 1 === n.indexOf(".")) {
				var o = r - n.length;
				i = n + Ru.stringOfChar("0", o) + ".0"
			}
			return this.isNegative() ? "-" + i: i
		},
		Ru.prototype.reciprocal = function() {
			var t = null,
			e = null,
			n = null,
			r = null,
			i = null,
			o = null,
			s = null,
			a = null;
			e = (i = 1 / this._hi) - (t = (o = Ru.SPLIT * i) - (t = o - i)),
			n = (a = Ru.SPLIT * this._hi) - this._hi;
			var u = i + (o = (1 - (s = i * this._hi) - (a = t * (n = a - n) - s + t * (r = this._hi - n) + e * n + e * r) - i * this._lo) / this._hi);
			return new Ru(u, i - u + o)
		},
		Ru.prototype.toSciNotation = function() {
			if (this.isZero()) return Ru.SCI_NOT_ZERO;
			var t = this.getSpecialNumberString();
			if (null !== t) return t;
			var e = new Array(1).fill(null),
			n = this.extractSignificantDigits(!1, e),
			r = Ru.SCI_NOT_EXPONENT_CHAR + e[0];
			if ("0" === n.charAt(0)) throw new Error("Found leading zero: " + n);
			var i = "";
			n.length > 1 && (i = n.substring(1));
			var o = n.charAt(0) + "." + i;
			return this.isNegative() ? "-" + o + r: o + r
		},
		Ru.prototype.abs = function() {
			return this.isNaN() ? Ru.NaN: this.isNegative() ? this.negate() : new Ru(this)
		},
		Ru.prototype.isPositive = function() {
			return (this._hi > 0 || 0 === this._hi) && this._lo > 0
		},
		Ru.prototype.lt = function(t) {
			return (this._hi < t._hi || this._hi === t._hi) && this._lo < t._lo
		},
		Ru.prototype.add = function() {
			if (arguments[0] instanceof Ru) {
				var t = arguments[0];
				return Ru.copy(this).selfAdd(t)
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return Ru.copy(this).selfAdd(e)
			}
		},
		Ru.prototype.init = function() {
			if (1 === arguments.length) {
				if ("number" == typeof arguments[0]) {
					var t = arguments[0];
					this._hi = t,
					this._lo = 0
				} else if (arguments[0] instanceof Ru) {
					var e = arguments[0];
					this._hi = e._hi,
					this._lo = e._lo
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				this._hi = n,
				this._lo = r
			}
		},
		Ru.prototype.gt = function(t) {
			return (this._hi > t._hi || this._hi === t._hi) && this._lo > t._lo
		},
		Ru.prototype.isNegative = function() {
			return (this._hi < 0 || 0 === this._hi) && this._lo < 0
		},
		Ru.prototype.trunc = function() {
			return this.isNaN() ? Ru.NaN: this.isPositive() ? this.floor() : this.ceil()
		},
		Ru.prototype.signum = function() {
			return this._hi > 0 ? 1 : this._hi < 0 ? -1 : this._lo > 0 ? 1 : this._lo < 0 ? -1 : 0
		},
		Ru.prototype.interfaces_ = function() {
			return [Pi, _u, wu]
		},
		Ru.prototype.getClass = function() {
			return Ru
		},
		Ru.sqr = function(t) {
			return Ru.valueOf(t).selfMultiply(t)
		},
		Ru.valueOf = function() {
			if ("string" == typeof arguments[0]) {
				var t = arguments[0];
				return Ru.parse(t)
			}
			if ("number" == typeof arguments[0]) {
				var e = arguments[0];
				return new Ru(e)
			}
		},
		Ru.sqrt = function(t) {
			return Ru.valueOf(t).sqrt()
		},
		Ru.parse = function(t) {
			for (var e = 0,
			n = t.length; Tu.isWhitespace(t.charAt(e));) e++;
			var r = !1;
			if (e < n) {
				var i = t.charAt(e);
				"-" !== i && "+" !== i || (e++, "-" === i && (r = !0))
			}
			for (var o = new Ru,
			s = 0,
			a = 0,
			u = 0; ! (e >= n);) {
				var c = t.charAt(e);
				if (e++, Tu.isDigit(c)) {
					var l = c - "0";
					o.selfMultiply(Ru.TEN),
					o.selfAdd(l),
					s++
				} else {
					if ("." !== c) {
						if ("e" === c || "E" === c) {
							var h = t.substring(e);
							try {
								u = Ou.parseInt(h)
							} catch(e) {
								throw e instanceof Error ? new Error("Invalid exponent " + h + " in string " + t) : e
							}
							break
						}
						throw new Error("Unexpected character '" + c + "' at position " + e + " in string " + t)
					}
					a = s
				}
			}
			var f = o,
			p = s - a - u;
			if (0 === p) f = o;
			else if (p > 0) {
				var d = Ru.TEN.pow(p);
				f = o.divide(d)
			} else if (p < 0) {
				var g = Ru.TEN.pow( - p);
				f = o.multiply(g)
			}
			return r ? f.negate() : f
		},
		Ru.createNaN = function() {
			return new Ru(vu.NaN, vu.NaN)
		},
		Ru.copy = function(t) {
			return new Ru(t)
		},
		Ru.magnitude = function(t) {
			var e = Math.abs(t),
			n = Math.log(e) / Math.log(10),
			r = Math.trunc(Math.floor(n));
			return 10 * Math.pow(10, r) <= e && (r += 1),
			r
		},
		Ru.stringOfChar = function(t, e) {
			for (var n = new Au,
			r = 0; r < e; r++) n.append(t);
			return n.toString()
		},
		Du.PI.get = function() {
			return new Ru(3.141592653589793, 1.2246467991473532e-16)
		},
		Du.TWO_PI.get = function() {
			return new Ru(6.283185307179586, 2.4492935982947064e-16)
		},
		Du.PI_2.get = function() {
			return new Ru(1.5707963267948966, 6.123233995736766e-17)
		},
		Du.E.get = function() {
			return new Ru(2.718281828459045, 1.4456468917292502e-16)
		},
		Du.NaN.get = function() {
			return new Ru(vu.NaN, vu.NaN)
		},
		Du.EPS.get = function() {
			return 1.23259516440783e-32
		},
		Du.SPLIT.get = function() {
			return 134217729
		},
		Du.MAX_PRINT_DIGITS.get = function() {
			return 32
		},
		Du.TEN.get = function() {
			return Ru.valueOf(10)
		},
		Du.ONE.get = function() {
			return Ru.valueOf(1)
		},
		Du.SCI_NOT_EXPONENT_CHAR.get = function() {
			return "E"
		},
		Du.SCI_NOT_ZERO.get = function() {
			return "0.0E0"
		},
		Object.defineProperties(Ru, Du);
		var ku = function() {},
		Fu = {
			DP_SAFE_EPSILON: {
				configurable: !0
			}
		};
		ku.prototype.interfaces_ = function() {
			return []
		},
		ku.prototype.getClass = function() {
			return ku
		},
		ku.orientationIndex = function(t, e, n) {
			var r = ku.orientationIndexFilter(t, e, n);
			if (r <= 1) return r;
			var i = Ru.valueOf(e.x).selfAdd( - t.x),
			o = Ru.valueOf(e.y).selfAdd( - t.y),
			s = Ru.valueOf(n.x).selfAdd( - e.x),
			a = Ru.valueOf(n.y).selfAdd( - e.y);
			return i.selfMultiply(a).selfSubtract(o.selfMultiply(s)).signum()
		},
		ku.signOfDet2x2 = function(t, e, n, r) {
			return t.multiply(r).selfSubtract(e.multiply(n)).signum()
		},
		ku.intersection = function(t, e, n, r) {
			var i = Ru.valueOf(r.y).selfSubtract(n.y).selfMultiply(Ru.valueOf(e.x).selfSubtract(t.x)),
			o = Ru.valueOf(r.x).selfSubtract(n.x).selfMultiply(Ru.valueOf(e.y).selfSubtract(t.y)),
			s = i.subtract(o),
			a = Ru.valueOf(r.x).selfSubtract(n.x).selfMultiply(Ru.valueOf(t.y).selfSubtract(n.y)),
			u = Ru.valueOf(r.y).selfSubtract(n.y).selfMultiply(Ru.valueOf(t.x).selfSubtract(n.x)),
			c = a.subtract(u).selfDivide(s).doubleValue(),
			l = Ru.valueOf(t.x).selfAdd(Ru.valueOf(e.x).selfSubtract(t.x).selfMultiply(c)).doubleValue(),
			h = Ru.valueOf(e.x).selfSubtract(t.x).selfMultiply(Ru.valueOf(t.y).selfSubtract(n.y)),
			f = Ru.valueOf(e.y).selfSubtract(t.y).selfMultiply(Ru.valueOf(t.x).selfSubtract(n.x)),
			p = h.subtract(f).selfDivide(s).doubleValue(),
			d = Ru.valueOf(n.y).selfAdd(Ru.valueOf(r.y).selfSubtract(n.y).selfMultiply(p)).doubleValue();
			return new xu(l, d)
		},
		ku.orientationIndexFilter = function(t, e, n) {
			var r = null,
			i = (t.x - n.x) * (e.y - n.y),
			o = (t.y - n.y) * (e.x - n.x),
			s = i - o;
			if (i > 0) {
				if (o <= 0) return ku.signum(s);
				r = i + o
			} else {
				if (! (i < 0)) return ku.signum(s);
				if (o >= 0) return ku.signum(s);
				r = -i - o
			}
			var a = ku.DP_SAFE_EPSILON * r;
			return s >= a || -s >= a ? ku.signum(s) : 2
		},
		ku.signum = function(t) {
			return t > 0 ? 1 : t < 0 ? -1 : 0
		},
		Fu.DP_SAFE_EPSILON.get = function() {
			return 1e-15
		},
		Object.defineProperties(ku, Fu);
		var ju = function() {},
		qu = {
			X: {
				configurable: !0
			},
			Y: {
				configurable: !0
			},
			Z: {
				configurable: !0
			},
			M: {
				configurable: !0
			}
		};
		qu.X.get = function() {
			return 0
		},
		qu.Y.get = function() {
			return 1
		},
		qu.Z.get = function() {
			return 2
		},
		qu.M.get = function() {
			return 3
		},
		ju.prototype.setOrdinate = function(t, e, n) {},
		ju.prototype.size = function() {},
		ju.prototype.getOrdinate = function(t, e) {},
		ju.prototype.getCoordinate = function() {},
		ju.prototype.getCoordinateCopy = function(t) {},
		ju.prototype.getDimension = function() {},
		ju.prototype.getX = function(t) {},
		ju.prototype.clone = function() {},
		ju.prototype.expandEnvelope = function(t) {},
		ju.prototype.copy = function() {},
		ju.prototype.getY = function(t) {},
		ju.prototype.toCoordinateArray = function() {},
		ju.prototype.interfaces_ = function() {
			return [wu]
		},
		ju.prototype.getClass = function() {
			return ju
		},
		Object.defineProperties(ju, qu);
		var Bu = function() {},
		Gu = function(t) {
			function e() {
				t.call(this, "Projective point not representable on the Cartesian plane.")
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Bu),
		Uu = function() {};
		Uu.arraycopy = function(t, e, n, r, i) {
			for (var o = 0,
			s = e; s < e + i; s++) n[r + o] = t[s],
			o++
		},
		Uu.getProperty = function(t) {
			return {
				"line.separator": "\n"
			} [t]
		};
		var zu = function t() {
			if (this.x = null, this.y = null, this.w = null, 0 === arguments.length) this.x = 0,
			this.y = 0,
			this.w = 1;
			else if (1 === arguments.length) {
				var e = arguments[0];
				this.x = e.x,
				this.y = e.y,
				this.w = 1
			} else if (2 === arguments.length) {
				if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
					var n = arguments[0],
					r = arguments[1];
					this.x = n,
					this.y = r,
					this.w = 1
				} else if (arguments[0] instanceof t && arguments[1] instanceof t) {
					var i = arguments[0],
					o = arguments[1];
					this.x = i.y * o.w - o.y * i.w,
					this.y = o.x * i.w - i.x * o.w,
					this.w = i.x * o.y - o.x * i.y
				} else if (arguments[0] instanceof xu && arguments[1] instanceof xu) {
					var s = arguments[0],
					a = arguments[1];
					this.x = s.y - a.y,
					this.y = a.x - s.x,
					this.w = s.x * a.y - a.x * s.y
				}
			} else if (3 === arguments.length) {
				var u = arguments[0],
				c = arguments[1],
				l = arguments[2];
				this.x = u,
				this.y = c,
				this.w = l
			} else if (4 === arguments.length) {
				var h = arguments[0],
				f = arguments[1],
				p = arguments[2],
				d = arguments[3],
				g = h.y - f.y,
				y = f.x - h.x,
				v = h.x * f.y - f.x * h.y,
				m = p.y - d.y,
				_ = d.x - p.x,
				w = p.x * d.y - d.x * p.y;
				this.x = y * w - _ * v,
				this.y = m * v - g * w,
				this.w = g * _ - m * y
			}
		};
		zu.prototype.getY = function() {
			var t = this.y / this.w;
			if (vu.isNaN(t) || vu.isInfinite(t)) throw new Gu;
			return t
		},
		zu.prototype.getX = function() {
			var t = this.x / this.w;
			if (vu.isNaN(t) || vu.isInfinite(t)) throw new Gu;
			return t
		},
		zu.prototype.getCoordinate = function() {
			var t = new xu;
			return t.x = this.getX(),
			t.y = this.getY(),
			t
		},
		zu.prototype.interfaces_ = function() {
			return []
		},
		zu.prototype.getClass = function() {
			return zu
		},
		zu.intersection = function(t, e, n, r) {
			var i = t.y - e.y,
			o = e.x - t.x,
			s = t.x * e.y - e.x * t.y,
			a = n.y - r.y,
			u = r.x - n.x,
			c = n.x * r.y - r.x * n.y,
			l = i * u - a * o,
			h = (o * c - u * s) / l,
			f = (a * s - i * c) / l;
			if (vu.isNaN(h) || vu.isInfinite(h) || vu.isNaN(f) || vu.isInfinite(f)) throw new Gu;
			return new xu(h, f)
		};
		var Yu = function t() {
			if (this._minx = null, this._maxx = null, this._miny = null, this._maxy = null, 0 === arguments.length) this.init();
			else if (1 === arguments.length) {
				if (arguments[0] instanceof xu) {
					var e = arguments[0];
					this.init(e.x, e.x, e.y, e.y)
				} else if (arguments[0] instanceof t) {
					var n = arguments[0];
					this.init(n)
				}
			} else if (2 === arguments.length) {
				var r = arguments[0],
				i = arguments[1];
				this.init(r.x, i.x, r.y, i.y)
			} else if (4 === arguments.length) {
				var o = arguments[0],
				s = arguments[1],
				a = arguments[2],
				u = arguments[3];
				this.init(o, s, a, u)
			}
		},
		Xu = {
			serialVersionUID: {
				configurable: !0
			}
		};
		Yu.prototype.getArea = function() {
			return this.getWidth() * this.getHeight()
		},
		Yu.prototype.equals = function(t) {
			if (! (t instanceof Yu)) return ! 1;
			var e = t;
			return this.isNull() ? e.isNull() : this._maxx === e.getMaxX() && this._maxy === e.getMaxY() && this._minx === e.getMinX() && this._miny === e.getMinY()
		},
		Yu.prototype.intersection = function(t) {
			if (this.isNull() || t.isNull() || !this.intersects(t)) return new Yu;
			var e = this._minx > t._minx ? this._minx: t._minx,
			n = this._miny > t._miny ? this._miny: t._miny,
			r = this._maxx < t._maxx ? this._maxx: t._maxx,
			i = this._maxy < t._maxy ? this._maxy: t._maxy;
			return new Yu(e, r, n, i)
		},
		Yu.prototype.isNull = function() {
			return this._maxx < this._minx
		},
		Yu.prototype.getMaxX = function() {
			return this._maxx
		},
		Yu.prototype.covers = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof xu) {
					var t = arguments[0];
					return this.covers(t.x, t.y)
				}
				if (arguments[0] instanceof Yu) {
					var e = arguments[0];
					return ! this.isNull() && !e.isNull() && e.getMinX() >= this._minx && e.getMaxX() <= this._maxx && e.getMinY() >= this._miny && e.getMaxY() <= this._maxy
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				return ! this.isNull() && n >= this._minx && n <= this._maxx && r >= this._miny && r <= this._maxy
			}
		},
		Yu.prototype.intersects = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Yu) {
					var t = arguments[0];
					return ! this.isNull() && !t.isNull() && !(t._minx > this._maxx || t._maxx < this._minx || t._miny > this._maxy || t._maxy < this._miny)
				}
				if (arguments[0] instanceof xu) {
					var e = arguments[0];
					return this.intersects(e.x, e.y)
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				return ! this.isNull() && !(n > this._maxx || n < this._minx || r > this._maxy || r < this._miny)
			}
		},
		Yu.prototype.getMinY = function() {
			return this._miny
		},
		Yu.prototype.getMinX = function() {
			return this._minx
		},
		Yu.prototype.expandToInclude = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof xu) {
					var t = arguments[0];
					this.expandToInclude(t.x, t.y)
				} else if (arguments[0] instanceof Yu) {
					var e = arguments[0];
					if (e.isNull()) return null;
					this.isNull() ? (this._minx = e.getMinX(), this._maxx = e.getMaxX(), this._miny = e.getMinY(), this._maxy = e.getMaxY()) : (e._minx < this._minx && (this._minx = e._minx), e._maxx > this._maxx && (this._maxx = e._maxx), e._miny < this._miny && (this._miny = e._miny), e._maxy > this._maxy && (this._maxy = e._maxy))
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				this.isNull() ? (this._minx = n, this._maxx = n, this._miny = r, this._maxy = r) : (n < this._minx && (this._minx = n), n > this._maxx && (this._maxx = n), r < this._miny && (this._miny = r), r > this._maxy && (this._maxy = r))
			}
		},
		Yu.prototype.minExtent = function() {
			if (this.isNull()) return 0;
			var t = this.getWidth(),
			e = this.getHeight();
			return t < e ? t: e
		},
		Yu.prototype.getWidth = function() {
			return this.isNull() ? 0 : this._maxx - this._minx
		},
		Yu.prototype.compareTo = function(t) {
			var e = t;
			return this.isNull() ? e.isNull() ? 0 : -1 : e.isNull() ? 1 : this._minx < e._minx ? -1 : this._minx > e._minx ? 1 : this._miny < e._miny ? -1 : this._miny > e._miny ? 1 : this._maxx < e._maxx ? -1 : this._maxx > e._maxx ? 1 : this._maxy < e._maxy ? -1 : this._maxy > e._maxy ? 1 : 0
		},
		Yu.prototype.translate = function(t, e) {
			if (this.isNull()) return null;
			this.init(this.getMinX() + t, this.getMaxX() + t, this.getMinY() + e, this.getMaxY() + e)
		},
		Yu.prototype.toString = function() {
			return "Env[" + this._minx + " : " + this._maxx + ", " + this._miny + " : " + this._maxy + "]"
		},
		Yu.prototype.setToNull = function() {
			this._minx = 0,
			this._maxx = -1,
			this._miny = 0,
			this._maxy = -1
		},
		Yu.prototype.getHeight = function() {
			return this.isNull() ? 0 : this._maxy - this._miny
		},
		Yu.prototype.maxExtent = function() {
			if (this.isNull()) return 0;
			var t = this.getWidth(),
			e = this.getHeight();
			return t > e ? t: e
		},
		Yu.prototype.expandBy = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.expandBy(t, t)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				if (this.isNull()) return null;
				this._minx -= e,
				this._maxx += e,
				this._miny -= n,
				this._maxy += n,
				(this._minx > this._maxx || this._miny > this._maxy) && this.setToNull()
			}
		},
		Yu.prototype.contains = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Yu) {
					var t = arguments[0];
					return this.covers(t)
				}
				if (arguments[0] instanceof xu) {
					var e = arguments[0];
					return this.covers(e)
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				return this.covers(n, r)
			}
		},
		Yu.prototype.centre = function() {
			return this.isNull() ? null: new xu((this.getMinX() + this.getMaxX()) / 2, (this.getMinY() + this.getMaxY()) / 2)
		},
		Yu.prototype.init = function() {
			if (0 === arguments.length) this.setToNull();
			else if (1 === arguments.length) {
				if (arguments[0] instanceof xu) {
					var t = arguments[0];
					this.init(t.x, t.x, t.y, t.y)
				} else if (arguments[0] instanceof Yu) {
					var e = arguments[0];
					this._minx = e._minx,
					this._maxx = e._maxx,
					this._miny = e._miny,
					this._maxy = e._maxy
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				this.init(n.x, r.x, n.y, r.y)
			} else if (4 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2],
				a = arguments[3];
				i < o ? (this._minx = i, this._maxx = o) : (this._minx = o, this._maxx = i),
				s < a ? (this._miny = s, this._maxy = a) : (this._miny = a, this._maxy = s)
			}
		},
		Yu.prototype.getMaxY = function() {
			return this._maxy
		},
		Yu.prototype.distance = function(t) {
			if (this.intersects(t)) return 0;
			var e = 0;
			this._maxx < t._minx ? e = t._minx - this._maxx: this._minx > t._maxx && (e = this._minx - t._maxx);
			var n = 0;
			return this._maxy < t._miny ? n = t._miny - this._maxy: this._miny > t._maxy && (n = this._miny - t._maxy),
			0 === e ? n: 0 === n ? e: Math.sqrt(e * e + n * n)
		},
		Yu.prototype.hashCode = function() {
			var t = 17;
			return t = 37 * t + xu.hashCode(this._minx),
			t = 37 * t + xu.hashCode(this._maxx),
			t = 37 * t + xu.hashCode(this._miny),
			t = 37 * t + xu.hashCode(this._maxy)
		},
		Yu.prototype.interfaces_ = function() {
			return [_u, Pi]
		},
		Yu.prototype.getClass = function() {
			return Yu
		},
		Yu.intersects = function() {
			if (3 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2];
				return n.x >= (t.x < e.x ? t.x: e.x) && n.x <= (t.x > e.x ? t.x: e.x) && n.y >= (t.y < e.y ? t.y: e.y) && n.y <= (t.y > e.y ? t.y: e.y)
			}
			if (4 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2],
				s = arguments[3],
				a = Math.min(o.x, s.x),
				u = Math.max(o.x, s.x),
				c = Math.min(r.x, i.x),
				l = Math.max(r.x, i.x);
				return ! (c > u || l < a || (a = Math.min(o.y, s.y), u = Math.max(o.y, s.y), c = Math.min(r.y, i.y), l = Math.max(r.y, i.y), c > u || l < a))
			}
		},
		Xu.serialVersionUID.get = function() {
			return 0x51845cd552189800
		},
		Object.defineProperties(Yu, Xu);
		var Vu = {
			typeStr: /^\s*(\w+)\s*\(\s*(.*)\s*\)\s*$/,
			emptyTypeStr: /^\s*(\w+)\s*EMPTY\s*$/,
			spaces: /\s+/,
			parenComma: /\)\s*,\s*\(/,
			doubleParenComma: /\)\s*\)\s*,\s*\(\s*\(/,
			trimParens: /^\s*\(?(.*?)\)?\s*$/
		},
		Wu = function(t) {
			this.geometryFactory = t || new yl
		};
		Wu.prototype.read = function(t) {
			var e, n, r;
			t = t.replace(/[\n\r]/g, " ");
			var i = Vu.typeStr.exec(t);
			if ( - 1 !== t.search("EMPTY") && ((i = Vu.emptyTypeStr.exec(t))[2] = void 0), i && (n = i[1].toLowerCase(), r = i[2], Ju[n] && (e = Ju[n].apply(this, [r]))), void 0 === e) throw new Error("Could not parse WKT " + t);
			return e
		},
		Wu.prototype.write = function(t) {
			return this.extractGeometry(t)
		},
		Wu.prototype.extractGeometry = function(t) {
			var e = t.getGeometryType().toLowerCase();
			if (!Hu[e]) return null;
			var n = e.toUpperCase();
			return t.isEmpty() ? n + " EMPTY": n + "(" + Hu[e].apply(this, [t]) + ")"
		};
		var Hu = {
			coordinate: function(t) {
				return t.x + " " + t.y
			},
			point: function(t) {
				return Hu.coordinate.call(this, t._coordinates._coordinates[0])
			},
			multipoint: function(t) {
				for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Hu.point.apply(this, [t._geometries[n]]) + ")");
				return e.join(",")
			},
			linestring: function(t) {
				for (var e = [], n = 0, r = t._points._coordinates.length; n < r; ++n) e.push(Hu.coordinate.apply(this, [t._points._coordinates[n]]));
				return e.join(",")
			},
			linearring: function(t) {
				for (var e = [], n = 0, r = t._points._coordinates.length; n < r; ++n) e.push(Hu.coordinate.apply(this, [t._points._coordinates[n]]));
				return e.join(",")
			},
			multilinestring: function(t) {
				for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Hu.linestring.apply(this, [t._geometries[n]]) + ")");
				return e.join(",")
			},
			polygon: function(t) {
				var e = [];
				e.push("(" + Hu.linestring.apply(this, [t._shell]) + ")");
				for (var n = 0,
				r = t._holes.length; n < r; ++n) e.push("(" + Hu.linestring.apply(this, [t._holes[n]]) + ")");
				return e.join(",")
			},
			multipolygon: function(t) {
				for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push("(" + Hu.polygon.apply(this, [t._geometries[n]]) + ")");
				return e.join(",")
			},
			geometrycollection: function(t) {
				for (var e = [], n = 0, r = t._geometries.length; n < r; ++n) e.push(this.extractGeometry(t._geometries[n]));
				return e.join(",")
			}
		},
		Ju = {
			point: function(t) {
				if (void 0 === t) return this.geometryFactory.createPoint();
				var e = t.trim().split(Vu.spaces);
				return this.geometryFactory.createPoint(new xu(Number.parseFloat(e[0]), Number.parseFloat(e[1])))
			},
			multipoint: function(t) {
				if (void 0 === t) return this.geometryFactory.createMultiPoint();
				for (var e, n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Vu.trimParens, "$1"),
				r.push(Ju.point.apply(this, [e]));
				return this.geometryFactory.createMultiPoint(r)
			},
			linestring: function(t) {
				if (void 0 === t) return this.geometryFactory.createLineString();
				for (var e, n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].trim().split(Vu.spaces),
				r.push(new xu(Number.parseFloat(e[0]), Number.parseFloat(e[1])));
				return this.geometryFactory.createLineString(r)
			},
			linearring: function(t) {
				if (void 0 === t) return this.geometryFactory.createLinearRing();
				for (var e, n = t.trim().split(","), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].trim().split(Vu.spaces),
				r.push(new xu(Number.parseFloat(e[0]), Number.parseFloat(e[1])));
				return this.geometryFactory.createLinearRing(r)
			},
			multilinestring: function(t) {
				if (void 0 === t) return this.geometryFactory.createMultiLineString();
				for (var e, n = t.trim().split(Vu.parenComma), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Vu.trimParens, "$1"),
				r.push(Ju.linestring.apply(this, [e]));
				return this.geometryFactory.createMultiLineString(r)
			},
			polygon: function(t) {
				if (void 0 === t) return this.geometryFactory.createPolygon();
				for (var e, n, r, i, o = t.trim().split(Vu.parenComma), s = [], a = 0, u = o.length; a < u; ++a) e = o[a].replace(Vu.trimParens, "$1"),
				n = Ju.linestring.apply(this, [e]),
				r = this.geometryFactory.createLinearRing(n._points),
				0 === a ? i = r: s.push(r);
				return this.geometryFactory.createPolygon(i, s)
			},
			multipolygon: function(t) {
				if (void 0 === t) return this.geometryFactory.createMultiPolygon();
				for (var e, n = t.trim().split(Vu.doubleParenComma), r = [], i = 0, o = n.length; i < o; ++i) e = n[i].replace(Vu.trimParens, "$1"),
				r.push(Ju.polygon.apply(this, [e]));
				return this.geometryFactory.createMultiPolygon(r)
			},
			geometrycollection: function(t) {
				if (void 0 === t) return this.geometryFactory.createGeometryCollection();
				for (var e = (t = t.replace(/,\s*([A-Za-z])/g, "|$1")).trim().split("|"), n = [], r = 0, i = e.length; r < i; ++r) n.push(this.read(e[r]));
				return this.geometryFactory.createGeometryCollection(n)
			}
		},
		Zu = function(t) {
			this.parser = new Wu(t)
		};
		Zu.prototype.write = function(t) {
			return this.parser.write(t)
		},
		Zu.toLineString = function(t, e) {
			if (2 !== arguments.length) throw new Error("Not implemented");
			return "LINESTRING ( " + t.x + " " + t.y + ", " + e.x + " " + e.y + " )"
		};
		var Qu = function(t) {
			function e(e) {
				t.call(this, e),
				this.name = "RuntimeException",
				this.message = e,
				this.stack = (new t).stack
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e
		} (Error),
		Ku = function(t) {
			function e() {
				if (t.call(this), 0 === arguments.length) t.call(this);
				else if (1 === arguments.length) {
					var e = arguments[0];
					t.call(this, e)
				}
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Qu),
		$u = function() {};
		$u.prototype.interfaces_ = function() {
			return []
		},
		$u.prototype.getClass = function() {
			return $u
		},
		$u.shouldNeverReachHere = function() {
			if (0 === arguments.length) $u.shouldNeverReachHere(null);
			else if (1 === arguments.length) {
				var t = arguments[0];
				throw new Ku("Should never reach here" + (null !== t ? ": " + t: ""))
			}
		},
		$u.isTrue = function() {
			var t, e;
			if (1 === arguments.length) t = arguments[0],
			$u.isTrue(t, null);
			else if (2 === arguments.length && (t = arguments[0], e = arguments[1], !t)) throw null === e ? new Ku: new Ku(e)
		},
		$u.equals = function() {
			var t, e, n;
			if (2 === arguments.length) t = arguments[0],
			e = arguments[1],
			$u.equals(t, e, null);
			else if (3 === arguments.length && (t = arguments[0], e = arguments[1], n = arguments[2], !e.equals(t))) throw new Ku("Expected " + t + " but encountered " + e + (null !== n ? ": " + n: ""))
		};
		var tc = function() {
			this._result = null,
			this._inputLines = Array(2).fill().map(function() {
				return Array(2)
			}),
			this._intPt = new Array(2).fill(null),
			this._intLineIndex = null,
			this._isProper = null,
			this._pa = null,
			this._pb = null,
			this._precisionModel = null,
			this._intPt[0] = new xu,
			this._intPt[1] = new xu,
			this._pa = this._intPt[0],
			this._pb = this._intPt[1],
			this._result = 0
		},
		ec = {
			DONT_INTERSECT: {
				configurable: !0
			},
			DO_INTERSECT: {
				configurable: !0
			},
			COLLINEAR: {
				configurable: !0
			},
			NO_INTERSECTION: {
				configurable: !0
			},
			POINT_INTERSECTION: {
				configurable: !0
			},
			COLLINEAR_INTERSECTION: {
				configurable: !0
			}
		};
		tc.prototype.getIndexAlongSegment = function(t, e) {
			return this.computeIntLineIndex(),
			this._intLineIndex[t][e]
		},
		tc.prototype.getTopologySummary = function() {
			var t = new Au;
			return this.isEndPoint() && t.append(" endpoint"),
			this._isProper && t.append(" proper"),
			this.isCollinear() && t.append(" collinear"),
			t.toString()
		},
		tc.prototype.computeIntersection = function(t, e, n, r) {
			this._inputLines[0][0] = t,
			this._inputLines[0][1] = e,
			this._inputLines[1][0] = n,
			this._inputLines[1][1] = r,
			this._result = this.computeIntersect(t, e, n, r)
		},
		tc.prototype.getIntersectionNum = function() {
			return this._result
		},
		tc.prototype.computeIntLineIndex = function() {
			if (0 === arguments.length) null === this._intLineIndex && (this._intLineIndex = Array(2).fill().map(function() {
				return Array(2)
			}), this.computeIntLineIndex(0), this.computeIntLineIndex(1));
			else if (1 === arguments.length) {
				var t = arguments[0];
				this.getEdgeDistance(t, 0) > this.getEdgeDistance(t, 1) ? (this._intLineIndex[t][0] = 0, this._intLineIndex[t][1] = 1) : (this._intLineIndex[t][0] = 1, this._intLineIndex[t][1] = 0)
			}
		},
		tc.prototype.isProper = function() {
			return this.hasIntersection() && this._isProper
		},
		tc.prototype.setPrecisionModel = function(t) {
			this._precisionModel = t
		},
		tc.prototype.isInteriorIntersection = function() {
			if (0 === arguments.length) return !! this.isInteriorIntersection(0) || !!this.isInteriorIntersection(1);
			if (1 === arguments.length) {
				for (var t = arguments[0], e = 0; e < this._result; e++) if (!this._intPt[e].equals2D(this._inputLines[t][0]) && !this._intPt[e].equals2D(this._inputLines[t][1])) return ! 0;
				return ! 1
			}
		},
		tc.prototype.getIntersection = function(t) {
			return this._intPt[t]
		},
		tc.prototype.isEndPoint = function() {
			return this.hasIntersection() && !this._isProper
		},
		tc.prototype.hasIntersection = function() {
			return this._result !== tc.NO_INTERSECTION
		},
		tc.prototype.getEdgeDistance = function(t, e) {
			return tc.computeEdgeDistance(this._intPt[e], this._inputLines[t][0], this._inputLines[t][1])
		},
		tc.prototype.isCollinear = function() {
			return this._result === tc.COLLINEAR_INTERSECTION
		},
		tc.prototype.toString = function() {
			return Zu.toLineString(this._inputLines[0][0], this._inputLines[0][1]) + " - " + Zu.toLineString(this._inputLines[1][0], this._inputLines[1][1]) + this.getTopologySummary()
		},
		tc.prototype.getEndpoint = function(t, e) {
			return this._inputLines[t][e]
		},
		tc.prototype.isIntersection = function(t) {
			for (var e = 0; e < this._result; e++) if (this._intPt[e].equals2D(t)) return ! 0;
			return ! 1
		},
		tc.prototype.getIntersectionAlongSegment = function(t, e) {
			return this.computeIntLineIndex(),
			this._intPt[this._intLineIndex[t][e]]
		},
		tc.prototype.interfaces_ = function() {
			return []
		},
		tc.prototype.getClass = function() {
			return tc
		},
		tc.computeEdgeDistance = function(t, e, n) {
			var r = Math.abs(n.x - e.x),
			i = Math.abs(n.y - e.y),
			o = -1;
			if (t.equals(e)) o = 0;
			else if (t.equals(n)) o = r > i ? r: i;
			else {
				var s = Math.abs(t.x - e.x),
				a = Math.abs(t.y - e.y);
				0 !== (o = r > i ? s: a) || t.equals(e) || (o = Math.max(s, a))
			}
			return $u.isTrue(!(0 === o && !t.equals(e)), "Bad distance calculation"),
			o
		},
		tc.nonRobustComputeEdgeDistance = function(t, e, n) {
			var r = t.x - e.x,
			i = t.y - e.y,
			o = Math.sqrt(r * r + i * i);
			return $u.isTrue(!(0 === o && !t.equals(e)), "Invalid distance calculation"),
			o
		},
		ec.DONT_INTERSECT.get = function() {
			return 0
		},
		ec.DO_INTERSECT.get = function() {
			return 1
		},
		ec.COLLINEAR.get = function() {
			return 2
		},
		ec.NO_INTERSECTION.get = function() {
			return 0
		},
		ec.POINT_INTERSECTION.get = function() {
			return 1
		},
		ec.COLLINEAR_INTERSECTION.get = function() {
			return 2
		},
		Object.defineProperties(tc, ec);
		var nc = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.isInSegmentEnvelopes = function(t) {
				var e = new Yu(this._inputLines[0][0], this._inputLines[0][1]),
				n = new Yu(this._inputLines[1][0], this._inputLines[1][1]);
				return e.contains(t) && n.contains(t)
			},
			e.prototype.computeIntersection = function() {
				if (3 !== arguments.length) return t.prototype.computeIntersection.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2];
				if (this._isProper = !1, Yu.intersects(n, r, e) && 0 === oc.orientationIndex(n, r, e) && 0 === oc.orientationIndex(r, n, e)) return this._isProper = !0,
				(e.equals(n) || e.equals(r)) && (this._isProper = !1),
				this._result = t.POINT_INTERSECTION,
				null;
				this._result = t.NO_INTERSECTION
			},
			e.prototype.normalizeToMinimum = function(t, e, n, r, i) {
				i.x = this.smallestInAbsValue(t.x, e.x, n.x, r.x),
				i.y = this.smallestInAbsValue(t.y, e.y, n.y, r.y),
				t.x -= i.x,
				t.y -= i.y,
				e.x -= i.x,
				e.y -= i.y,
				n.x -= i.x,
				n.y -= i.y,
				r.x -= i.x,
				r.y -= i.y
			},
			e.prototype.safeHCoordinateIntersection = function(t, n, r, i) {
				var o = null;
				try {
					o = zu.intersection(t, n, r, i)
				} catch(s) {
					if (! (s instanceof Gu)) throw s;
					o = e.nearestEndpoint(t, n, r, i)
				}
				return o
			},
			e.prototype.intersection = function(t, n, r, i) {
				var o = this.intersectionWithNormalization(t, n, r, i);
				return this.isInSegmentEnvelopes(o) || (o = new xu(e.nearestEndpoint(t, n, r, i))),
				null !== this._precisionModel && this._precisionModel.makePrecise(o),
				o
			},
			e.prototype.smallestInAbsValue = function(t, e, n, r) {
				var i = t,
				o = Math.abs(i);
				return Math.abs(e) < o && (i = e, o = Math.abs(e)),
				Math.abs(n) < o && (i = n, o = Math.abs(n)),
				Math.abs(r) < o && (i = r),
				i
			},
			e.prototype.checkDD = function(t, e, n, r, i) {
				var o = ku.intersection(t, e, n, r),
				s = this.isInSegmentEnvelopes(o);
				Uu.out.println("DD in env = " + s + "  --------------------- " + o),
				i.distance(o) > 1e-4 && Uu.out.println("Distance = " + i.distance(o))
			},
			e.prototype.intersectionWithNormalization = function(t, e, n, r) {
				var i = new xu(t),
				o = new xu(e),
				s = new xu(n),
				a = new xu(r),
				u = new xu;
				this.normalizeToEnvCentre(i, o, s, a, u);
				var c = this.safeHCoordinateIntersection(i, o, s, a);
				return c.x += u.x,
				c.y += u.y,
				c
			},
			e.prototype.computeCollinearIntersection = function(e, n, r, i) {
				var o = Yu.intersects(e, n, r),
				s = Yu.intersects(e, n, i),
				a = Yu.intersects(r, i, e),
				u = Yu.intersects(r, i, n);
				return o && s ? (this._intPt[0] = r, this._intPt[1] = i, t.COLLINEAR_INTERSECTION) : a && u ? (this._intPt[0] = e, this._intPt[1] = n, t.COLLINEAR_INTERSECTION) : o && a ? (this._intPt[0] = r, this._intPt[1] = e, !r.equals(e) || s || u ? t.COLLINEAR_INTERSECTION: t.POINT_INTERSECTION) : o && u ? (this._intPt[0] = r, this._intPt[1] = n, !r.equals(n) || s || a ? t.COLLINEAR_INTERSECTION: t.POINT_INTERSECTION) : s && a ? (this._intPt[0] = i, this._intPt[1] = e, !i.equals(e) || o || u ? t.COLLINEAR_INTERSECTION: t.POINT_INTERSECTION) : s && u ? (this._intPt[0] = i, this._intPt[1] = n, !i.equals(n) || o || a ? t.COLLINEAR_INTERSECTION: t.POINT_INTERSECTION) : t.NO_INTERSECTION
			},
			e.prototype.normalizeToEnvCentre = function(t, e, n, r, i) {
				var o = t.x < e.x ? t.x: e.x,
				s = t.y < e.y ? t.y: e.y,
				a = t.x > e.x ? t.x: e.x,
				u = t.y > e.y ? t.y: e.y,
				c = n.x < r.x ? n.x: r.x,
				l = n.y < r.y ? n.y: r.y,
				h = n.x > r.x ? n.x: r.x,
				f = n.y > r.y ? n.y: r.y,
				p = ((o > c ? o: c) + (a < h ? a: h)) / 2,
				d = ((s > l ? s: l) + (u < f ? u: f)) / 2;
				i.x = p,
				i.y = d,
				t.x -= i.x,
				t.y -= i.y,
				e.x -= i.x,
				e.y -= i.y,
				n.x -= i.x,
				n.y -= i.y,
				r.x -= i.x,
				r.y -= i.y
			},
			e.prototype.computeIntersect = function(e, n, r, i) {
				if (this._isProper = !1, !Yu.intersects(e, n, r, i)) return t.NO_INTERSECTION;
				var o = oc.orientationIndex(e, n, r),
				s = oc.orientationIndex(e, n, i);
				if (o > 0 && s > 0 || o < 0 && s < 0) return t.NO_INTERSECTION;
				var a = oc.orientationIndex(r, i, e),
				u = oc.orientationIndex(r, i, n);
				return a > 0 && u > 0 || a < 0 && u < 0 ? t.NO_INTERSECTION: 0 === o && 0 === s && 0 === a && 0 === u ? this.computeCollinearIntersection(e, n, r, i) : (0 === o || 0 === s || 0 === a || 0 === u ? (this._isProper = !1, e.equals2D(r) || e.equals2D(i) ? this._intPt[0] = e: n.equals2D(r) || n.equals2D(i) ? this._intPt[0] = n: 0 === o ? this._intPt[0] = new xu(r) : 0 === s ? this._intPt[0] = new xu(i) : 0 === a ? this._intPt[0] = new xu(e) : 0 === u && (this._intPt[0] = new xu(n))) : (this._isProper = !0, this._intPt[0] = this.intersection(e, n, r, i)), t.POINT_INTERSECTION)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e.nearestEndpoint = function(t, e, n, r) {
				var i = t,
				o = oc.distancePointLine(t, n, r),
				s = oc.distancePointLine(e, n, r);
				return s < o && (o = s, i = e),
				(s = oc.distancePointLine(n, t, e)) < o && (o = s, i = n),
				(s = oc.distancePointLine(r, t, e)) < o && (o = s, i = r),
				i
			},
			e
		} (tc),
		rc = function() {};
		rc.prototype.interfaces_ = function() {
			return []
		},
		rc.prototype.getClass = function() {
			return rc
		},
		rc.orientationIndex = function(t, e, n) {
			var r = e.x - t.x,
			i = e.y - t.y,
			o = n.x - e.x,
			s = n.y - e.y;
			return rc.signOfDet2x2(r, i, o, s)
		},
		rc.signOfDet2x2 = function(t, e, n, r) {
			var i = null,
			o = null,
			s = null;
			if (i = 1, 0 === t || 0 === r) return 0 === e || 0 === n ? 0 : e > 0 ? n > 0 ? -i: i: n > 0 ? i: -i;
			if (0 === e || 0 === n) return r > 0 ? t > 0 ? i: -i: t > 0 ? -i: i;
			if (e > 0 ? r > 0 ? e <= r || (i = -i, o = t, t = n, n = o, o = e, e = r, r = o) : e <= -r ? (i = -i, n = -n, r = -r) : (o = t, t = -n, n = o, o = e, e = -r, r = o) : r > 0 ? -e <= r ? (i = -i, t = -t, e = -e) : (o = -t, t = n, n = o, o = -e, e = r, r = o) : e >= r ? (t = -t, e = -e, n = -n, r = -r) : (i = -i, o = -t, t = -n, n = o, o = -e, e = -r, r = o), t > 0) {
				if (! (n > 0)) return i;
				if (! (t <= n)) return i
			} else {
				if (n > 0) return - i;
				if (! (t >= n)) return - i;
				i = -i,
				t = -t,
				n = -n
			}
			for (;;) {
				if (s = Math.floor(n / t), n -= s * t, (r -= s * e) < 0) return - i;
				if (r > e) return i;
				if (t > n + n) {
					if (e < r + r) return i
				} else {
					if (e > r + r) return - i;
					n = t - n,
					r = e - r,
					i = -i
				}
				if (0 === r) return 0 === n ? 0 : -i;
				if (0 === n) return i;
				if (s = Math.floor(t / n), t -= s * n, (e -= s * r) < 0) return i;
				if (e > r) return - i;
				if (n > t + t) {
					if (r < e + e) return - i
				} else {
					if (r > e + e) return i;
					t = n - t,
					e = r - e,
					i = -i
				}
				if (0 === e) return 0 === t ? 0 : i;
				if (0 === t) return - i
			}
		};
		var ic = function() {
			this._p = null,
			this._crossingCount = 0,
			this._isPointOnSegment = !1;
			var t = arguments[0];
			this._p = t
		};
		ic.prototype.countSegment = function(t, e) {
			if (t.x < this._p.x && e.x < this._p.x) return null;
			if (this._p.x === e.x && this._p.y === e.y) return this._isPointOnSegment = !0,
			null;
			if (t.y === this._p.y && e.y === this._p.y) {
				var n = t.x,
				r = e.x;
				return n > r && (n = e.x, r = t.x),
				this._p.x >= n && this._p.x <= r && (this._isPointOnSegment = !0),
				null
			}
			if (t.y > this._p.y && e.y <= this._p.y || e.y > this._p.y && t.y <= this._p.y) {
				var i = t.x - this._p.x,
				o = t.y - this._p.y,
				s = e.x - this._p.x,
				a = e.y - this._p.y,
				u = rc.signOfDet2x2(i, o, s, a);
				if (0 === u) return this._isPointOnSegment = !0,
				null;
				a < o && (u = -u),
				u > 0 && this._crossingCount++
			}
		},
		ic.prototype.isPointInPolygon = function() {
			return this.getLocation() !== Su.EXTERIOR
		},
		ic.prototype.getLocation = function() {
			return this._isPointOnSegment ? Su.BOUNDARY: this._crossingCount % 2 == 1 ? Su.INTERIOR: Su.EXTERIOR
		},
		ic.prototype.isOnSegment = function() {
			return this._isPointOnSegment
		},
		ic.prototype.interfaces_ = function() {
			return []
		},
		ic.prototype.getClass = function() {
			return ic
		},
		ic.locatePointInRing = function() {
			if (arguments[0] instanceof xu && Nu(arguments[1], ju)) {
				for (var t = arguments[0], e = arguments[1], n = new ic(t), r = new xu, i = new xu, o = 1; o < e.size(); o++) if (e.getCoordinate(o, r), e.getCoordinate(o - 1, i), n.countSegment(r, i), n.isOnSegment()) return n.getLocation();
				return n.getLocation()
			}
			if (arguments[0] instanceof xu && arguments[1] instanceof Array) {
				for (var s = arguments[0], a = arguments[1], u = new ic(s), c = 1; c < a.length; c++) {
					var l = a[c],
					h = a[c - 1];
					if (u.countSegment(l, h), u.isOnSegment()) return u.getLocation()
				}
				return u.getLocation()
			}
		};
		var oc = function() {},
		sc = {
			CLOCKWISE: {
				configurable: !0
			},
			RIGHT: {
				configurable: !0
			},
			COUNTERCLOCKWISE: {
				configurable: !0
			},
			LEFT: {
				configurable: !0
			},
			COLLINEAR: {
				configurable: !0
			},
			STRAIGHT: {
				configurable: !0
			}
		};
		oc.prototype.interfaces_ = function() {
			return []
		},
		oc.prototype.getClass = function() {
			return oc
		},
		oc.orientationIndex = function(t, e, n) {
			return ku.orientationIndex(t, e, n)
		},
		oc.signedArea = function() {
			if (arguments[0] instanceof Array) {
				var t = arguments[0];
				if (t.length < 3) return 0;
				for (var e = 0,
				n = t[0].x, r = 1; r < t.length - 1; r++) {
					var i = t[r].x - n,
					o = t[r + 1].y;
					e += i * (t[r - 1].y - o)
				}
				return e / 2
			}
			if (Nu(arguments[0], ju)) {
				var s = arguments[0],
				a = s.size();
				if (a < 3) return 0;
				var u = new xu,
				c = new xu,
				l = new xu;
				s.getCoordinate(0, c),
				s.getCoordinate(1, l);
				var h = c.x;
				l.x -= h;
				for (var f = 0,
				p = 1; p < a - 1; p++) u.y = c.y,
				c.x = l.x,
				c.y = l.y,
				s.getCoordinate(p + 1, l),
				l.x -= h,
				f += c.x * (u.y - l.y);
				return f / 2
			}
		},
		oc.distanceLineLine = function(t, e, n, r) {
			if (t.equals(e)) return oc.distancePointLine(t, n, r);
			if (n.equals(r)) return oc.distancePointLine(r, t, e);
			var i = !1;
			if (Yu.intersects(t, e, n, r)) {
				var o = (e.x - t.x) * (r.y - n.y) - (e.y - t.y) * (r.x - n.x);
				if (0 === o) i = !0;
				else {
					var s = (t.y - n.y) * (r.x - n.x) - (t.x - n.x) * (r.y - n.y),
					a = ((t.y - n.y) * (e.x - t.x) - (t.x - n.x) * (e.y - t.y)) / o,
					u = s / o; (u < 0 || u > 1 || a < 0 || a > 1) && (i = !0)
				}
			} else i = !0;
			return i ? Pu.min(oc.distancePointLine(t, n, r), oc.distancePointLine(e, n, r), oc.distancePointLine(n, t, e), oc.distancePointLine(r, t, e)) : 0
		},
		oc.isPointInRing = function(t, e) {
			return oc.locatePointInRing(t, e) !== Su.EXTERIOR
		},
		oc.computeLength = function(t) {
			var e = t.size();
			if (e <= 1) return 0;
			var n = 0,
			r = new xu;
			t.getCoordinate(0, r);
			for (var i = r.x,
			o = r.y,
			s = 1; s < e; s++) {
				t.getCoordinate(s, r);
				var a = r.x,
				u = r.y,
				c = a - i,
				l = u - o;
				n += Math.sqrt(c * c + l * l),
				i = a,
				o = u
			}
			return n
		},
		oc.isCCW = function(t) {
			var e = t.length - 1;
			if (e < 3) throw new yu("Ring has fewer than 4 points, so orientation cannot be determined");
			for (var n = t[0], r = 0, i = 1; i <= e; i++) {
				var o = t[i];
				o.y > n.y && (n = o, r = i)
			}
			var s = r;
			do { (s -= 1) < 0 && (s = e)
			} while ( t [ s ].equals2D(n) && s !== r);
			var a = r;
			do {
				a = (a + 1) % e
			} while ( t [ a ].equals2D(n) && a !== r);
			var u = t[s],
			c = t[a];
			if (u.equals2D(n) || c.equals2D(n) || u.equals2D(c)) return ! 1;
			var l = oc.computeOrientation(u, n, c);
			return 0 === l ? u.x > c.x: l > 0
		},
		oc.locatePointInRing = function(t, e) {
			return ic.locatePointInRing(t, e)
		},
		oc.distancePointLinePerpendicular = function(t, e, n) {
			var r = (n.x - e.x) * (n.x - e.x) + (n.y - e.y) * (n.y - e.y),
			i = ((e.y - t.y) * (n.x - e.x) - (e.x - t.x) * (n.y - e.y)) / r;
			return Math.abs(i) * Math.sqrt(r)
		},
		oc.computeOrientation = function(t, e, n) {
			return oc.orientationIndex(t, e, n)
		},
		oc.distancePointLine = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				if (0 === e.length) throw new yu("Line array must contain at least one vertex");
				for (var n = t.distance(e[0]), r = 0; r < e.length - 1; r++) {
					var i = oc.distancePointLine(t, e[r], e[r + 1]);
					i < n && (n = i)
				}
				return n
			}
			if (3 === arguments.length) {
				var o = arguments[0],
				s = arguments[1],
				a = arguments[2];
				if (s.x === a.x && s.y === a.y) return o.distance(s);
				var u = (a.x - s.x) * (a.x - s.x) + (a.y - s.y) * (a.y - s.y),
				c = ((o.x - s.x) * (a.x - s.x) + (o.y - s.y) * (a.y - s.y)) / u;
				if (c <= 0) return o.distance(s);
				if (c >= 1) return o.distance(a);
				var l = ((s.y - o.y) * (a.x - s.x) - (s.x - o.x) * (a.y - s.y)) / u;
				return Math.abs(l) * Math.sqrt(u)
			}
		},
		oc.isOnLine = function(t, e) {
			for (var n = new nc,
			r = 1; r < e.length; r++) {
				var i = e[r - 1],
				o = e[r];
				if (n.computeIntersection(t, i, o), n.hasIntersection()) return ! 0
			}
			return ! 1
		},
		sc.CLOCKWISE.get = function() {
			return - 1
		},
		sc.RIGHT.get = function() {
			return oc.CLOCKWISE
		},
		sc.COUNTERCLOCKWISE.get = function() {
			return 1
		},
		sc.LEFT.get = function() {
			return oc.COUNTERCLOCKWISE
		},
		sc.COLLINEAR.get = function() {
			return 0
		},
		sc.STRAIGHT.get = function() {
			return oc.COLLINEAR
		},
		Object.defineProperties(oc, sc);
		var ac = function() {};
		ac.prototype.filter = function(t) {},
		ac.prototype.interfaces_ = function() {
			return []
		},
		ac.prototype.getClass = function() {
			return ac
		};
		var uc = function() {
			var t = arguments[0];
			this._envelope = null,
			this._factory = null,
			this._SRID = null,
			this._userData = null,
			this._factory = t,
			this._SRID = t.getSRID()
		},
		cc = {
			serialVersionUID: {
				configurable: !0
			},
			SORTINDEX_POINT: {
				configurable: !0
			},
			SORTINDEX_MULTIPOINT: {
				configurable: !0
			},
			SORTINDEX_LINESTRING: {
				configurable: !0
			},
			SORTINDEX_LINEARRING: {
				configurable: !0
			},
			SORTINDEX_MULTILINESTRING: {
				configurable: !0
			},
			SORTINDEX_POLYGON: {
				configurable: !0
			},
			SORTINDEX_MULTIPOLYGON: {
				configurable: !0
			},
			SORTINDEX_GEOMETRYCOLLECTION: {
				configurable: !0
			},
			geometryChangedFilter: {
				configurable: !0
			}
		};
		uc.prototype.isGeometryCollection = function() {
			return this.getSortIndex() === uc.SORTINDEX_GEOMETRYCOLLECTION
		},
		uc.prototype.getFactory = function() {
			return this._factory
		},
		uc.prototype.getGeometryN = function(t) {
			return this
		},
		uc.prototype.getArea = function() {
			return 0
		},
		uc.prototype.isRectangle = function() {
			return ! 1
		},
		uc.prototype.equals = function() {
			if (arguments[0] instanceof uc) {
				var t = arguments[0];
				return null !== t && this.equalsTopo(t)
			}
			if (arguments[0] instanceof Object) {
				var e = arguments[0];
				if (! (e instanceof uc)) return ! 1;
				var n = e;
				return this.equalsExact(n)
			}
		},
		uc.prototype.equalsExact = function(t) {
			return this === t || this.equalsExact(t, 0)
		},
		uc.prototype.geometryChanged = function() {
			this.apply(uc.geometryChangedFilter)
		},
		uc.prototype.geometryChangedAction = function() {
			this._envelope = null
		},
		uc.prototype.equalsNorm = function(t) {
			return null !== t && this.norm().equalsExact(t.norm())
		},
		uc.prototype.getLength = function() {
			return 0
		},
		uc.prototype.getNumGeometries = function() {
			return 1
		},
		uc.prototype.compareTo = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = t;
				return this.getSortIndex() !== e.getSortIndex() ? this.getSortIndex() - e.getSortIndex() : this.isEmpty() && e.isEmpty() ? 0 : this.isEmpty() ? -1 : e.isEmpty() ? 1 : this.compareToSameClass(t)
			}
			if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				return this.getSortIndex() !== n.getSortIndex() ? this.getSortIndex() - n.getSortIndex() : this.isEmpty() && n.isEmpty() ? 0 : this.isEmpty() ? -1 : n.isEmpty() ? 1 : this.compareToSameClass(n, r)
			}
		},
		uc.prototype.getUserData = function() {
			return this._userData
		},
		uc.prototype.getSRID = function() {
			return this._SRID
		},
		uc.prototype.getEnvelope = function() {
			return this.getFactory().toGeometry(this.getEnvelopeInternal())
		},
		uc.prototype.checkNotGeometryCollection = function(t) {
			if (t.getSortIndex() === uc.SORTINDEX_GEOMETRYCOLLECTION) throw new yu("This method does not support GeometryCollection arguments")
		},
		uc.prototype.equal = function(t, e, n) {
			return 0 === n ? t.equals(e) : t.distance(e) <= n
		},
		uc.prototype.norm = function() {
			var t = this.copy();
			return t.normalize(),
			t
		},
		uc.prototype.getPrecisionModel = function() {
			return this._factory.getPrecisionModel()
		},
		uc.prototype.getEnvelopeInternal = function() {
			return null === this._envelope && (this._envelope = this.computeEnvelopeInternal()),
			new Yu(this._envelope)
		},
		uc.prototype.setSRID = function(t) {
			this._SRID = t
		},
		uc.prototype.setUserData = function(t) {
			this._userData = t
		},
		uc.prototype.compare = function(t, e) {
			for (var n = t.iterator(), r = e.iterator(); n.hasNext() && r.hasNext();) {
				var i = n.next(),
				o = r.next(),
				s = i.compareTo(o);
				if (0 !== s) return s
			}
			return n.hasNext() ? 1 : r.hasNext() ? -1 : 0
		},
		uc.prototype.hashCode = function() {
			return this.getEnvelopeInternal().hashCode()
		},
		uc.prototype.isGeometryCollectionOrDerived = function() {
			return this.getSortIndex() === uc.SORTINDEX_GEOMETRYCOLLECTION || this.getSortIndex() === uc.SORTINDEX_MULTIPOINT || this.getSortIndex() === uc.SORTINDEX_MULTILINESTRING || this.getSortIndex() === uc.SORTINDEX_MULTIPOLYGON
		},
		uc.prototype.interfaces_ = function() {
			return [wu, _u, Pi]
		},
		uc.prototype.getClass = function() {
			return uc
		},
		uc.hasNonEmptyElements = function(t) {
			for (var e = 0; e < t.length; e++) if (!t[e].isEmpty()) return ! 0;
			return ! 1
		},
		uc.hasNullElements = function(t) {
			for (var e = 0; e < t.length; e++) if (null === t[e]) return ! 0;
			return ! 1
		},
		cc.serialVersionUID.get = function() {
			return 0x799ea46522854c00
		},
		cc.SORTINDEX_POINT.get = function() {
			return 0
		},
		cc.SORTINDEX_MULTIPOINT.get = function() {
			return 1
		},
		cc.SORTINDEX_LINESTRING.get = function() {
			return 2
		},
		cc.SORTINDEX_LINEARRING.get = function() {
			return 3
		},
		cc.SORTINDEX_MULTILINESTRING.get = function() {
			return 4
		},
		cc.SORTINDEX_POLYGON.get = function() {
			return 5
		},
		cc.SORTINDEX_MULTIPOLYGON.get = function() {
			return 6
		},
		cc.SORTINDEX_GEOMETRYCOLLECTION.get = function() {
			return 7
		},
		cc.geometryChangedFilter.get = function() {
			return lc
		},
		Object.defineProperties(uc, cc);
		var lc = function() {};
		lc.interfaces_ = function() {
			return [ac]
		},
		lc.filter = function(t) {
			t.geometryChangedAction()
		};
		var hc = function() {};
		hc.prototype.filter = function(t) {},
		hc.prototype.interfaces_ = function() {
			return []
		},
		hc.prototype.getClass = function() {
			return hc
		};
		var fc = function() {},
		pc = {
			Mod2BoundaryNodeRule: {
				configurable: !0
			},
			EndPointBoundaryNodeRule: {
				configurable: !0
			},
			MultiValentEndPointBoundaryNodeRule: {
				configurable: !0
			},
			MonoValentEndPointBoundaryNodeRule: {
				configurable: !0
			},
			MOD2_BOUNDARY_RULE: {
				configurable: !0
			},
			ENDPOINT_BOUNDARY_RULE: {
				configurable: !0
			},
			MULTIVALENT_ENDPOINT_BOUNDARY_RULE: {
				configurable: !0
			},
			MONOVALENT_ENDPOINT_BOUNDARY_RULE: {
				configurable: !0
			},
			OGC_SFS_BOUNDARY_RULE: {
				configurable: !0
			}
		};
		fc.prototype.isInBoundary = function(t) {},
		fc.prototype.interfaces_ = function() {
			return []
		},
		fc.prototype.getClass = function() {
			return fc
		},
		pc.Mod2BoundaryNodeRule.get = function() {
			return dc
		},
		pc.EndPointBoundaryNodeRule.get = function() {
			return gc
		},
		pc.MultiValentEndPointBoundaryNodeRule.get = function() {
			return yc
		},
		pc.MonoValentEndPointBoundaryNodeRule.get = function() {
			return vc
		},
		pc.MOD2_BOUNDARY_RULE.get = function() {
			return new dc
		},
		pc.ENDPOINT_BOUNDARY_RULE.get = function() {
			return new gc
		},
		pc.MULTIVALENT_ENDPOINT_BOUNDARY_RULE.get = function() {
			return new yc
		},
		pc.MONOVALENT_ENDPOINT_BOUNDARY_RULE.get = function() {
			return new vc
		},
		pc.OGC_SFS_BOUNDARY_RULE.get = function() {
			return fc.MOD2_BOUNDARY_RULE
		},
		Object.defineProperties(fc, pc);
		var dc = function() {};
		dc.prototype.isInBoundary = function(t) {
			return t % 2 == 1
		},
		dc.prototype.interfaces_ = function() {
			return [fc]
		},
		dc.prototype.getClass = function() {
			return dc
		};
		var gc = function() {};
		gc.prototype.isInBoundary = function(t) {
			return t > 0
		},
		gc.prototype.interfaces_ = function() {
			return [fc]
		},
		gc.prototype.getClass = function() {
			return gc
		};
		var yc = function() {};
		yc.prototype.isInBoundary = function(t) {
			return t > 1
		},
		yc.prototype.interfaces_ = function() {
			return [fc]
		},
		yc.prototype.getClass = function() {
			return yc
		};
		var vc = function() {};
		vc.prototype.isInBoundary = function(t) {
			return 1 === t
		},
		vc.prototype.interfaces_ = function() {
			return [fc]
		},
		vc.prototype.getClass = function() {
			return vc
		};
		var mc = function() {};
		mc.prototype.add = function() {},
		mc.prototype.addAll = function() {},
		mc.prototype.isEmpty = function() {},
		mc.prototype.iterator = function() {},
		mc.prototype.size = function() {},
		mc.prototype.toArray = function() {},
		mc.prototype.remove = function() {};
		var _c = function(t) {
			function e(e) {
				t.call(this),
				this.message = e || ""
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				name: {
					configurable: !0
				}
			};
			return n.name.get = function() {
				return "IndexOutOfBoundsException"
			},
			Object.defineProperties(e, n),
			e
		} (Error),
		wc = function() {};
		wc.prototype.hasNext = function() {},
		wc.prototype.next = function() {},
		wc.prototype.remove = function() {};
		var bc = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.get = function() {},
			e.prototype.set = function() {},
			e.prototype.isEmpty = function() {},
			e
		} (mc); (Li.prototype = new Error).name = "NoSuchElementException";
		var xc = function(t) {
			function e() {
				t.call(this),
				this.array_ = [],
				arguments[0] instanceof mc && this.addAll(arguments[0])
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.ensureCapacity = function() {},
			e.prototype.interfaces_ = function() {
				return [t, mc]
			},
			e.prototype.add = function(t) {
				return 1 === arguments.length ? this.array_.push(t) : this.array_.splice(arguments[0], arguments[1]),
				!0
			},
			e.prototype.clear = function() {
				this.array_ = []
			},
			e.prototype.addAll = function(t) {
				for (var e = t.iterator(); e.hasNext();) this.add(e.next());
				return ! 0
			},
			e.prototype.set = function(t, e) {
				var n = this.array_[t];
				return this.array_[t] = e,
				n
			},
			e.prototype.iterator = function() {
				return new Ec(this)
			},
			e.prototype.get = function(t) {
				if (t < 0 || t >= this.size()) throw new _c;
				return this.array_[t]
			},
			e.prototype.isEmpty = function() {
				return 0 === this.array_.length
			},
			e.prototype.size = function() {
				return this.array_.length
			},
			e.prototype.toArray = function() {
				for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
				return t
			},
			e.prototype.remove = function(t) {
				for (var e = !1,
				n = 0,
				r = this.array_.length; n < r; n++) if (this.array_[n] === t) {
					this.array_.splice(n, 1),
					e = !0;
					break
				}
				return e
			},
			e
		} (bc),
		Ec = function(t) {
			function e(e) {
				t.call(this),
				this.arrayList_ = e,
				this.position_ = 0
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.next = function() {
				if (this.position_ === this.arrayList_.size()) throw new Li;
				return this.arrayList_.get(this.position_++)
			},
			e.prototype.hasNext = function() {
				return this.position_ < this.arrayList_.size()
			},
			e.prototype.set = function(t) {
				return this.arrayList_.set(this.position_ - 1, t)
			},
			e.prototype.remove = function() {
				this.arrayList_.remove(this.arrayList_.get(this.position_))
			},
			e
		} (wc),
		Mc = function(t) {
			function e() {
				if (t.call(this), 0 === arguments.length);
				else if (1 === arguments.length) {
					var e = arguments[0];
					this.ensureCapacity(e.length),
					this.add(e, !0)
				} else if (2 === arguments.length) {
					var n = arguments[0],
					r = arguments[1];
					this.ensureCapacity(n.length),
					this.add(n, r)
				}
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				coordArrayType: {
					configurable: !0
				}
			};
			return n.coordArrayType.get = function() {
				return new Array(0).fill(null)
			},
			e.prototype.getCoordinate = function(t) {
				return this.get(t)
			},
			e.prototype.addAll = function() {
				if (2 === arguments.length) {
					for (var e = arguments[0], n = arguments[1], r = !1, i = e.iterator(); i.hasNext();) this.add(i.next(), n),
					r = !0;
					return r
				}
				return t.prototype.addAll.apply(this, arguments)
			},
			e.prototype.clone = function() {
				for (var e = t.prototype.clone.call(this), n = 0; n < this.size(); n++) e.add(n, this.get(n).copy());
				return e
			},
			e.prototype.toCoordinateArray = function() {
				return this.toArray(e.coordArrayType)
			},
			e.prototype.add = function() {
				if (1 === arguments.length) {
					var e = arguments[0];
					t.prototype.add.call(this, e)
				} else if (2 === arguments.length) {
					if (arguments[0] instanceof Array && "boolean" == typeof arguments[1]) {
						var n = arguments[0],
						r = arguments[1];
						return this.add(n, r, !0),
						!0
					}
					if (arguments[0] instanceof xu && "boolean" == typeof arguments[1]) {
						var i = arguments[0];
						if (!arguments[1] && this.size() >= 1 && this.get(this.size() - 1).equals2D(i)) return null;
						t.prototype.add.call(this, i)
					} else if (arguments[0] instanceof Object && "boolean" == typeof arguments[1]) {
						var o = arguments[0],
						s = arguments[1];
						return this.add(o, s),
						!0
					}
				} else if (3 === arguments.length) {
					if ("boolean" == typeof arguments[2] && arguments[0] instanceof Array && "boolean" == typeof arguments[1]) {
						var a = arguments[0],
						u = arguments[1];
						if (arguments[2]) for (var c = 0; c < a.length; c++) this.add(a[c], u);
						else for (var l = a.length - 1; l >= 0; l--) this.add(a[l], u);
						return ! 0
					}
					if ("boolean" == typeof arguments[2] && Number.isInteger(arguments[0]) && arguments[1] instanceof xu) {
						var h = arguments[0],
						f = arguments[1];
						if (!arguments[2]) {
							var p = this.size();
							if (p > 0) {
								if (h > 0 && this.get(h - 1).equals2D(f)) return null;
								if (h < p && this.get(h).equals2D(f)) return null
							}
						}
						t.prototype.add.call(this, h, f)
					}
				} else if (4 === arguments.length) {
					var d = arguments[0],
					g = arguments[1],
					y = arguments[2],
					v = arguments[3],
					m = 1;
					y > v && (m = -1);
					for (var _ = y; _ !== v; _ += m) this.add(d[_], g);
					return ! 0
				}
			},
			e.prototype.closeRing = function() {
				this.size() > 0 && this.add(new xu(this.get(0)), !1)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			Object.defineProperties(e, n),
			e
		} (xc),
		Ic = function() {},
		Sc = {
			ForwardComparator: {
				configurable: !0
			},
			BidirectionalComparator: {
				configurable: !0
			},
			coordArrayType: {
				configurable: !0
			}
		};
		Sc.ForwardComparator.get = function() {
			return Cc
		},
		Sc.BidirectionalComparator.get = function() {
			return Nc
		},
		Sc.coordArrayType.get = function() {
			return new Array(0).fill(null)
		},
		Ic.prototype.interfaces_ = function() {
			return []
		},
		Ic.prototype.getClass = function() {
			return Ic
		},
		Ic.isRing = function(t) {
			return ! (t.length < 4 || !t[0].equals2D(t[t.length - 1]))
		},
		Ic.ptNotInList = function(t, e) {
			for (var n = 0; n < t.length; n++) {
				var r = t[n];
				if (Ic.indexOf(r, e) < 0) return r
			}
			return null
		},
		Ic.scroll = function(t, e) {
			var n = Ic.indexOf(e, t);
			if (n < 0) return null;
			var r = new Array(t.length).fill(null);
			Uu.arraycopy(t, n, r, 0, t.length - n),
			Uu.arraycopy(t, 0, r, t.length - n, n),
			Uu.arraycopy(r, 0, t, 0, t.length)
		},
		Ic.equals = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				if (t === e) return ! 0;
				if (null === t || null === e) return ! 1;
				if (t.length !== e.length) return ! 1;
				for (var n = 0; n < t.length; n++) if (!t[n].equals(e[n])) return ! 1;
				return ! 0
			}
			if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				if (r === i) return ! 0;
				if (null === r || null === i) return ! 1;
				if (r.length !== i.length) return ! 1;
				for (var s = 0; s < r.length; s++) if (0 !== o.compare(r[s], i[s])) return ! 1;
				return ! 0
			}
		},
		Ic.intersection = function(t, e) {
			for (var n = new Mc,
			r = 0; r < t.length; r++) e.intersects(t[r]) && n.add(t[r], !0);
			return n.toCoordinateArray()
		},
		Ic.hasRepeatedPoints = function(t) {
			for (var e = 1; e < t.length; e++) if (t[e - 1].equals(t[e])) return ! 0;
			return ! 1
		},
		Ic.removeRepeatedPoints = function(t) {
			return Ic.hasRepeatedPoints(t) ? new Mc(t, !1).toCoordinateArray() : t
		},
		Ic.reverse = function(t) {
			for (var e = t.length - 1,
			n = Math.trunc(e / 2), r = 0; r <= n; r++) {
				var i = t[r];
				t[r] = t[e - r],
				t[e - r] = i
			}
		},
		Ic.removeNull = function(t) {
			for (var e = 0,
			n = 0; n < t.length; n++) null !== t[n] && e++;
			var r = new Array(e).fill(null);
			if (0 === e) return r;
			for (var i = 0,
			o = 0; o < t.length; o++) null !== t[o] && (r[i++] = t[o]);
			return r
		},
		Ic.copyDeep = function() {
			if (1 === arguments.length) {
				for (var t = arguments[0], e = new Array(t.length).fill(null), n = 0; n < t.length; n++) e[n] = new xu(t[n]);
				return e
			}
			if (5 === arguments.length) for (var r = arguments[0], i = arguments[1], o = arguments[2], s = arguments[3], a = arguments[4], u = 0; u < a; u++) o[s + u] = new xu(r[i + u])
		},
		Ic.isEqualReversed = function(t, e) {
			for (var n = 0; n < t.length; n++) {
				var r = t[n],
				i = e[t.length - n - 1];
				if (0 !== r.compareTo(i)) return ! 1
			}
			return ! 0
		},
		Ic.envelope = function(t) {
			for (var e = new Yu,
			n = 0; n < t.length; n++) e.expandToInclude(t[n]);
			return e
		},
		Ic.toCoordinateArray = function(t) {
			return t.toArray(Ic.coordArrayType)
		},
		Ic.atLeastNCoordinatesOrNothing = function(t, e) {
			return e.length >= t ? e: []
		},
		Ic.indexOf = function(t, e) {
			for (var n = 0; n < e.length; n++) if (t.equals(e[n])) return n;
			return - 1
		},
		Ic.increasingDirection = function(t) {
			for (var e = 0; e < Math.trunc(t.length / 2); e++) {
				var n = t.length - 1 - e,
				r = t[e].compareTo(t[n]);
				if (0 !== r) return r
			}
			return 1
		},
		Ic.compare = function(t, e) {
			for (var n = 0; n < t.length && n < e.length;) {
				var r = t[n].compareTo(e[n]);
				if (0 !== r) return r;
				n++
			}
			return n < e.length ? -1 : n < t.length ? 1 : 0
		},
		Ic.minCoordinate = function(t) {
			for (var e = null,
			n = 0; n < t.length; n++)(null === e || e.compareTo(t[n]) > 0) && (e = t[n]);
			return e
		},
		Ic.extract = function(t, e, n) {
			e = Pu.clamp(e, 0, t.length);
			var r = (n = Pu.clamp(n, -1, t.length)) - e + 1;
			n < 0 && (r = 0),
			e >= t.length && (r = 0),
			n < e && (r = 0);
			var i = new Array(r).fill(null);
			if (0 === r) return i;
			for (var o = 0,
			s = e; s <= n; s++) i[o++] = t[s];
			return i
		},
		Object.defineProperties(Ic, Sc);
		var Cc = function() {};
		Cc.prototype.compare = function(t, e) {
			return Ic.compare(t, e)
		},
		Cc.prototype.interfaces_ = function() {
			return [bu]
		},
		Cc.prototype.getClass = function() {
			return Cc
		};
		var Nc = function() {};
		Nc.prototype.compare = function(t, e) {
			var n = t,
			r = e;
			if (n.length < r.length) return - 1;
			if (n.length > r.length) return 1;
			if (0 === n.length) return 0;
			var i = Ic.compare(n, r);
			return Ic.isEqualReversed(n, r) ? 0 : i
		},
		Nc.prototype.OLDcompare = function(t, e) {
			var n = t,
			r = e;
			if (n.length < r.length) return - 1;
			if (n.length > r.length) return 1;
			if (0 === n.length) return 0;
			for (var i = Ic.increasingDirection(n), o = Ic.increasingDirection(r), s = i > 0 ? 0 : n.length - 1, a = o > 0 ? 0 : n.length - 1, u = 0; u < n.length; u++) {
				var c = n[s].compareTo(r[a]);
				if (0 !== c) return c;
				s += i,
				a += o
			}
			return 0
		},
		Nc.prototype.interfaces_ = function() {
			return [bu]
		},
		Nc.prototype.getClass = function() {
			return Nc
		};
		var Pc = function() {};
		Pc.prototype.get = function() {},
		Pc.prototype.put = function() {},
		Pc.prototype.size = function() {},
		Pc.prototype.values = function() {},
		Pc.prototype.entrySet = function() {};
		var Lc = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e
		} (Pc); (Ai.prototype = new Error).name = "OperationNotSupported",
		(Oi.prototype = new mc).contains = function() {};
		var Ac = function(t) {
			function e() {
				t.call(this),
				this.array_ = [],
				arguments[0] instanceof mc && this.addAll(arguments[0])
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.contains = function(t) {
				for (var e = 0,
				n = this.array_.length; e < n; e++) if (this.array_[e] === t) return ! 0;
				return ! 1
			},
			e.prototype.add = function(t) {
				return ! this.contains(t) && (this.array_.push(t), !0)
			},
			e.prototype.addAll = function(t) {
				for (var e = t.iterator(); e.hasNext();) this.add(e.next());
				return ! 0
			},
			e.prototype.remove = function(t) {
				throw new Error
			},
			e.prototype.size = function() {
				return this.array_.length
			},
			e.prototype.isEmpty = function() {
				return 0 === this.array_.length
			},
			e.prototype.toArray = function() {
				for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
				return t
			},
			e.prototype.iterator = function() {
				return new Oc(this)
			},
			e
		} (Oi),
		Oc = function(t) {
			function e(e) {
				t.call(this),
				this.hashSet_ = e,
				this.position_ = 0
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.next = function() {
				if (this.position_ === this.hashSet_.size()) throw new Li;
				return this.hashSet_.array_[this.position_++]
			},
			e.prototype.hasNext = function() {
				return this.position_ < this.hashSet_.size()
			},
			e.prototype.remove = function() {
				throw new Ai
			},
			e
		} (wc),
		Tc = 0; (ji.prototype = new Lc).get = function(t) {
			for (var e = this.root_; null !== e;) {
				var n = t.compareTo(e.key);
				if (n < 0) e = e.left;
				else {
					if (! (n > 0)) return e.value;
					e = e.right
				}
			}
			return null
		},
		ji.prototype.put = function(t, e) {
			if (null === this.root_) return this.root_ = {
				key: t,
				value: e,
				left: null,
				right: null,
				parent: null,
				color: Tc,
				getValue: function() {
					return this.value
				},
				getKey: function() {
					return this.key
				}
			},
			this.size_ = 1,
			null;
			var n, r, i = this.root_;
			do {
				if (n = i, (r = t.compareTo(i.key)) < 0) i = i.left;
				else {
					if (! (r > 0)) {
						var o = i.value;
						return i.value = e,
						o
					}
					i = i.right
				}
			} while ( null !== i );
			var s = {
				key: t,
				left: null,
				right: null,
				value: e,
				parent: n,
				color: Tc,
				getValue: function() {
					return this.value
				},
				getKey: function() {
					return this.key
				}
			};
			return r < 0 ? n.left = s: n.right = s,
			this.fixAfterInsertion(s),
			this.size_++,
			null
		},
		ji.prototype.fixAfterInsertion = function(t) {
			for (t.color = 1; null != t && t !== this.root_ && 1 === t.parent.color;) if (Ri(t) === ki(Ri(Ri(t)))) {
				var e = Fi(Ri(Ri(t)));
				1 === Ti(e) ? (Di(Ri(t), Tc), Di(e, Tc), Di(Ri(Ri(t)), 1), t = Ri(Ri(t))) : (t === Fi(Ri(t)) && (t = Ri(t), this.rotateLeft(t)), Di(Ri(t), Tc), Di(Ri(Ri(t)), 1), this.rotateRight(Ri(Ri(t))))
			} else {
				var n = ki(Ri(Ri(t)));
				1 === Ti(n) ? (Di(Ri(t), Tc), Di(n, Tc), Di(Ri(Ri(t)), 1), t = Ri(Ri(t))) : (t === ki(Ri(t)) && (t = Ri(t), this.rotateRight(t)), Di(Ri(t), Tc), Di(Ri(Ri(t)), 1), this.rotateLeft(Ri(Ri(t))))
			}
			this.root_.color = Tc
		},
		ji.prototype.values = function() {
			var t = new xc,
			e = this.getFirstEntry();
			if (null !== e) for (t.add(e.value); null !== (e = ji.successor(e));) t.add(e.value);
			return t
		},
		ji.prototype.entrySet = function() {
			var t = new Ac,
			e = this.getFirstEntry();
			if (null !== e) for (t.add(e); null !== (e = ji.successor(e));) t.add(e);
			return t
		},
		ji.prototype.rotateLeft = function(t) {
			if (null != t) {
				var e = t.right;
				t.right = e.left,
				null != e.left && (e.left.parent = t),
				e.parent = t.parent,
				null === t.parent ? this.root_ = e: t.parent.left === t ? t.parent.left = e: t.parent.right = e,
				e.left = t,
				t.parent = e
			}
		},
		ji.prototype.rotateRight = function(t) {
			if (null != t) {
				var e = t.left;
				t.left = e.right,
				null != e.right && (e.right.parent = t),
				e.parent = t.parent,
				null === t.parent ? this.root_ = e: t.parent.right === t ? t.parent.right = e: t.parent.left = e,
				e.right = t,
				t.parent = e
			}
		},
		ji.prototype.getFirstEntry = function() {
			var t = this.root_;
			if (null != t) for (; null != t.left;) t = t.left;
			return t
		},
		ji.successor = function(t) {
			if (null === t) return null;
			if (null !== t.right) {
				for (var e = t.right; null !== e.left;) e = e.left;
				return e
			}
			for (var n = t.parent,
			r = t; null !== n && r === n.right;) r = n,
			n = n.parent;
			return n
		},
		ji.prototype.size = function() {
			return this.size_
		};
		var Rc = function() {};
		Rc.prototype.interfaces_ = function() {
			return []
		},
		Rc.prototype.getClass = function() {
			return Rc
		},
		qi.prototype = new Oi,
		(Bi.prototype = new qi).contains = function(t) {
			for (var e = 0,
			n = this.array_.length; e < n; e++) if (0 === this.array_[e].compareTo(t)) return ! 0;
			return ! 1
		},
		Bi.prototype.add = function(t) {
			if (this.contains(t)) return ! 1;
			for (var e = 0,
			n = this.array_.length; e < n; e++) if (1 === this.array_[e].compareTo(t)) return this.array_.splice(e, 0, t),
			!0;
			return this.array_.push(t),
			!0
		},
		Bi.prototype.addAll = function(t) {
			for (var e = t.iterator(); e.hasNext();) this.add(e.next());
			return ! 0
		},
		Bi.prototype.remove = function(t) {
			throw new Ai
		},
		Bi.prototype.size = function() {
			return this.array_.length
		},
		Bi.prototype.isEmpty = function() {
			return 0 === this.array_.length
		},
		Bi.prototype.toArray = function() {
			for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
			return t
		},
		Bi.prototype.iterator = function() {
			return new Dc(this)
		};
		var Dc = function(t) {
			this.treeSet_ = t,
			this.position_ = 0
		};
		Dc.prototype.next = function() {
			if (this.position_ === this.treeSet_.size()) throw new Li;
			return this.treeSet_.array_[this.position_++]
		},
		Dc.prototype.hasNext = function() {
			return this.position_ < this.treeSet_.size()
		},
		Dc.prototype.remove = function() {
			throw new Ai
		};
		var kc = function() {};
		kc.sort = function() {
			var t, e, n, r, i = arguments[0];
			if (1 === arguments.length) r = function(t, e) {
				return t.compareTo(e)
			},
			i.sort(r);
			else if (2 === arguments.length) n = arguments[1],
			r = function(t, e) {
				return n.compare(t, e)
			},
			i.sort(r);
			else if (3 === arguments.length) { (e = i.slice(arguments[1], arguments[2])).sort();
				var o = i.slice(0, arguments[1]).concat(e, i.slice(arguments[2], i.length));
				for (i.splice(0, i.length), t = 0; t < o.length; t++) i.push(o[t])
			} else if (4 === arguments.length) for (e = i.slice(arguments[1], arguments[2]), n = arguments[3], r = function(t, e) {
				return n.compare(t, e)
			},
			e.sort(r), o = i.slice(0, arguments[1]).concat(e, i.slice(arguments[2], i.length)), i.splice(0, i.length), t = 0; t < o.length; t++) i.push(o[t])
		},
		kc.asList = function(t) {
			for (var e = new xc,
			n = 0,
			r = t.length; n < r; n++) e.add(t[n]);
			return e
		};
		var Fc = function() {},
		jc = {
			P: {
				configurable: !0
			},
			L: {
				configurable: !0
			},
			A: {
				configurable: !0
			},
			FALSE: {
				configurable: !0
			},
			TRUE: {
				configurable: !0
			},
			DONTCARE: {
				configurable: !0
			},
			SYM_FALSE: {
				configurable: !0
			},
			SYM_TRUE: {
				configurable: !0
			},
			SYM_DONTCARE: {
				configurable: !0
			},
			SYM_P: {
				configurable: !0
			},
			SYM_L: {
				configurable: !0
			},
			SYM_A: {
				configurable: !0
			}
		};
		jc.P.get = function() {
			return 0
		},
		jc.L.get = function() {
			return 1
		},
		jc.A.get = function() {
			return 2
		},
		jc.FALSE.get = function() {
			return - 1
		},
		jc.TRUE.get = function() {
			return - 2
		},
		jc.DONTCARE.get = function() {
			return - 3
		},
		jc.SYM_FALSE.get = function() {
			return "F"
		},
		jc.SYM_TRUE.get = function() {
			return "T"
		},
		jc.SYM_DONTCARE.get = function() {
			return "*"
		},
		jc.SYM_P.get = function() {
			return "0"
		},
		jc.SYM_L.get = function() {
			return "1"
		},
		jc.SYM_A.get = function() {
			return "2"
		},
		Fc.prototype.interfaces_ = function() {
			return []
		},
		Fc.prototype.getClass = function() {
			return Fc
		},
		Fc.toDimensionSymbol = function(t) {
			switch (t) {
			case Fc.FALSE:
				return Fc.SYM_FALSE;
			case Fc.TRUE:
				return Fc.SYM_TRUE;
			case Fc.DONTCARE:
				return Fc.SYM_DONTCARE;
			case Fc.P:
				return Fc.SYM_P;
			case Fc.L:
				return Fc.SYM_L;
			case Fc.A:
				return Fc.SYM_A
			}
			throw new yu("Unknown dimension value: " + t)
		},
		Fc.toDimensionValue = function(t) {
			switch (Tu.toUpperCase(t)) {
			case Fc.SYM_FALSE:
				return Fc.FALSE;
			case Fc.SYM_TRUE:
				return Fc.TRUE;
			case Fc.SYM_DONTCARE:
				return Fc.DONTCARE;
			case Fc.SYM_P:
				return Fc.P;
			case Fc.SYM_L:
				return Fc.L;
			case Fc.SYM_A:
				return Fc.A
			}
			throw new yu("Unknown dimension symbol: " + t)
		},
		Object.defineProperties(Fc, jc);
		var qc = function() {};
		qc.prototype.filter = function(t) {},
		qc.prototype.interfaces_ = function() {
			return []
		},
		qc.prototype.getClass = function() {
			return qc
		};
		var Bc = function() {};
		Bc.prototype.filter = function(t, e) {},
		Bc.prototype.isDone = function() {},
		Bc.prototype.isGeometryChanged = function() {},
		Bc.prototype.interfaces_ = function() {
			return []
		},
		Bc.prototype.getClass = function() {
			return Bc
		};
		var Gc = function(t) {
			function e(e, n) {
				if (t.call(this, n), this._geometries = e || [], t.hasNullElements(this._geometries)) throw new yu("geometries must not contain null elements")
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.computeEnvelopeInternal = function() {
				for (var t = new Yu,
				e = 0; e < this._geometries.length; e++) t.expandToInclude(this._geometries[e].getEnvelopeInternal());
				return t
			},
			e.prototype.getGeometryN = function(t) {
				return this._geometries[t]
			},
			e.prototype.getSortIndex = function() {
				return t.SORTINDEX_GEOMETRYCOLLECTION
			},
			e.prototype.getCoordinates = function() {
				for (var t = new Array(this.getNumPoints()).fill(null), e = -1, n = 0; n < this._geometries.length; n++) for (var r = this._geometries[n].getCoordinates(), i = 0; i < r.length; i++) t[++e] = r[i];
				return t
			},
			e.prototype.getArea = function() {
				for (var t = 0,
				e = 0; e < this._geometries.length; e++) t += this._geometries[e].getArea();
				return t
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					if (!this.isEquivalentClass(e)) return ! 1;
					var r = e;
					if (this._geometries.length !== r._geometries.length) return ! 1;
					for (var i = 0; i < this._geometries.length; i++) if (!this._geometries[i].equalsExact(r._geometries[i], n)) return ! 1;
					return ! 0
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.normalize = function() {
				for (var t = 0; t < this._geometries.length; t++) this._geometries[t].normalize();
				kc.sort(this._geometries)
			},
			e.prototype.getCoordinate = function() {
				return this.isEmpty() ? null: this._geometries[0].getCoordinate()
			},
			e.prototype.getBoundaryDimension = function() {
				for (var t = Fc.FALSE,
				e = 0; e < this._geometries.length; e++) t = Math.max(t, this._geometries[e].getBoundaryDimension());
				return t
			},
			e.prototype.getDimension = function() {
				for (var t = Fc.FALSE,
				e = 0; e < this._geometries.length; e++) t = Math.max(t, this._geometries[e].getDimension());
				return t
			},
			e.prototype.getLength = function() {
				for (var t = 0,
				e = 0; e < this._geometries.length; e++) t += this._geometries[e].getLength();
				return t
			},
			e.prototype.getNumPoints = function() {
				for (var t = 0,
				e = 0; e < this._geometries.length; e++) t += this._geometries[e].getNumPoints();
				return t
			},
			e.prototype.getNumGeometries = function() {
				return this._geometries.length
			},
			e.prototype.reverse = function() {
				for (var t = this._geometries.length,
				e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[n] = this._geometries[n].reverse();
				return this.getFactory().createGeometryCollection(e)
			},
			e.prototype.compareToSameClass = function() {
				if (1 === arguments.length) {
					var t = arguments[0],
					e = new Bi(kc.asList(this._geometries)),
					n = new Bi(kc.asList(t._geometries));
					return this.compare(e, n)
				}
				if (2 === arguments.length) {
					for (var r = arguments[0], i = arguments[1], o = r, s = this.getNumGeometries(), a = o.getNumGeometries(), u = 0; u < s && u < a;) {
						var c = this.getGeometryN(u),
						l = o.getGeometryN(u),
						h = c.compareToSameClass(l, i);
						if (0 !== h) return h;
						u++
					}
					return u < s ? 1 : u < a ? -1 : 0
				}
			},
			e.prototype.apply = function() {
				if (Nu(arguments[0], hc)) for (var t = arguments[0], e = 0; e < this._geometries.length; e++) this._geometries[e].apply(t);
				else if (Nu(arguments[0], Bc)) {
					var n = arguments[0];
					if (0 === this._geometries.length) return null;
					for (var r = 0; r < this._geometries.length && (this._geometries[r].apply(n), !n.isDone()); r++);
					n.isGeometryChanged() && this.geometryChanged()
				} else if (Nu(arguments[0], qc)) {
					var i = arguments[0];
					i.filter(this);
					for (var o = 0; o < this._geometries.length; o++) this._geometries[o].apply(i)
				} else if (Nu(arguments[0], ac)) {
					var s = arguments[0];
					s.filter(this);
					for (var a = 0; a < this._geometries.length; a++) this._geometries[a].apply(s)
				}
			},
			e.prototype.getBoundary = function() {
				return this.checkNotGeometryCollection(this),
				$u.shouldNeverReachHere(),
				null
			},
			e.prototype.clone = function() {
				var e = t.prototype.clone.call(this);
				e._geometries = new Array(this._geometries.length).fill(null);
				for (var n = 0; n < this._geometries.length; n++) e._geometries[n] = this._geometries[n].clone();
				return e
			},
			e.prototype.getGeometryType = function() {
				return "GeometryCollection"
			},
			e.prototype.copy = function() {
				for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
				return new e(t, this._factory)
			},
			e.prototype.isEmpty = function() {
				for (var t = 0; t < this._geometries.length; t++) if (!this._geometries[t].isEmpty()) return ! 1;
				return ! 0
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return - 0x4f07bcb1f857d800
			},
			Object.defineProperties(e, n),
			e
		} (uc),
		Uc = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.getSortIndex = function() {
				return uc.SORTINDEX_MULTILINESTRING
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					return !! this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.getBoundaryDimension = function() {
				return this.isClosed() ? Fc.FALSE: 0
			},
			e.prototype.isClosed = function() {
				if (this.isEmpty()) return ! 1;
				for (var t = 0; t < this._geometries.length; t++) if (!this._geometries[t].isClosed()) return ! 1;
				return ! 0
			},
			e.prototype.getDimension = function() {
				return 1
			},
			e.prototype.reverse = function() {
				for (var t = this._geometries.length,
				e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[t - 1 - n] = this._geometries[n].reverse();
				return this.getFactory().createMultiLineString(e)
			},
			e.prototype.getBoundary = function() {
				return new zc(this).getBoundary()
			},
			e.prototype.getGeometryType = function() {
				return "MultiLineString"
			},
			e.prototype.copy = function() {
				for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
				return new e(t, this._factory)
			},
			e.prototype.interfaces_ = function() {
				return [Rc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return 0x7155d2ab4afa8000
			},
			Object.defineProperties(e, n),
			e
		} (Gc),
		zc = function() {
			if (this._geom = null, this._geomFact = null, this._bnRule = null, this._endpointMap = null, 1 === arguments.length) {
				var t = arguments[0],
				e = fc.MOD2_BOUNDARY_RULE;
				this._geom = t,
				this._geomFact = t.getFactory(),
				this._bnRule = e
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				this._geom = n,
				this._geomFact = n.getFactory(),
				this._bnRule = r
			}
		};
		zc.prototype.boundaryMultiLineString = function(t) {
			if (this._geom.isEmpty()) return this.getEmptyMultiPoint();
			var e = this.computeBoundaryCoordinates(t);
			return 1 === e.length ? this._geomFact.createPoint(e[0]) : this._geomFact.createMultiPointFromCoords(e)
		},
		zc.prototype.getBoundary = function() {
			return this._geom instanceof Hc ? this.boundaryLineString(this._geom) : this._geom instanceof Uc ? this.boundaryMultiLineString(this._geom) : this._geom.getBoundary()
		},
		zc.prototype.boundaryLineString = function(t) {
			return this._geom.isEmpty() ? this.getEmptyMultiPoint() : t.isClosed() ? this._bnRule.isInBoundary(2) ? t.getStartPoint() : this._geomFact.createMultiPoint() : this._geomFact.createMultiPoint([t.getStartPoint(), t.getEndPoint()])
		},
		zc.prototype.getEmptyMultiPoint = function() {
			return this._geomFact.createMultiPoint()
		},
		zc.prototype.computeBoundaryCoordinates = function(t) {
			var e = new xc;
			this._endpointMap = new ji;
			for (var n = 0; n < t.getNumGeometries(); n++) {
				var r = t.getGeometryN(n);
				0 !== r.getNumPoints() && (this.addEndpoint(r.getCoordinateN(0)), this.addEndpoint(r.getCoordinateN(r.getNumPoints() - 1)))
			}
			for (var i = this._endpointMap.entrySet().iterator(); i.hasNext();) {
				var o = i.next(),
				s = o.getValue().count;
				this._bnRule.isInBoundary(s) && e.add(o.getKey())
			}
			return Ic.toCoordinateArray(e)
		},
		zc.prototype.addEndpoint = function(t) {
			var e = this._endpointMap.get(t);
			null === e && (e = new Yc, this._endpointMap.put(t, e)),
			e.count++
		},
		zc.prototype.interfaces_ = function() {
			return []
		},
		zc.prototype.getClass = function() {
			return zc
		},
		zc.getBoundary = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return new zc(t).getBoundary()
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return new zc(e, n).getBoundary()
			}
		};
		var Yc = function() {
			this.count = null
		};
		Yc.prototype.interfaces_ = function() {
			return []
		},
		Yc.prototype.getClass = function() {
			return Yc
		};
		var Xc = function() {},
		Vc = {
			NEWLINE: {
				configurable: !0
			},
			SIMPLE_ORDINATE_FORMAT: {
				configurable: !0
			}
		};
		Xc.prototype.interfaces_ = function() {
			return []
		},
		Xc.prototype.getClass = function() {
			return Xc
		},
		Xc.chars = function(t, e) {
			for (var n = new Array(e).fill(null), r = 0; r < e; r++) n[r] = t;
			return String(n)
		},
		Xc.getStackTrace = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = new
				function() {},
				n = new
				function() {} (e);
				return t.printStackTrace(n),
				e.toString()
			}
			if (2 === arguments.length) {
				for (var r = arguments[0], i = arguments[1], o = "", s = new
				function() {} (new
				function() {} (Xc.getStackTrace(r))), a = 0; a < i; a++) try {
					o += s.readLine() + Xc.NEWLINE
				} catch(t) {
					if (! (t instanceof Gi)) throw t;
					$u.shouldNeverReachHere()
				}
				return o
			}
		},
		Xc.split = function(t, e) {
			for (var n = e.length,
			r = new xc,
			i = "" + t,
			o = i.indexOf(e); o >= 0;) {
				var s = i.substring(0, o);
				r.add(s),
				o = (i = i.substring(o + n)).indexOf(e)
			}
			i.length > 0 && r.add(i);
			for (var a = new Array(r.size()).fill(null), u = 0; u < a.length; u++) a[u] = r.get(u);
			return a
		},
		Xc.toString = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return Xc.SIMPLE_ORDINATE_FORMAT.format(t)
			}
		},
		Xc.spaces = function(t) {
			return Xc.chars(" ", t)
		},
		Vc.NEWLINE.get = function() {
			return Uu.getProperty("line.separator")
		},
		Vc.SIMPLE_ORDINATE_FORMAT.get = function() {
			return new
			function() {} ("0.#")
		},
		Object.defineProperties(Xc, Vc);
		var Wc = function() {};
		Wc.prototype.interfaces_ = function() {
			return []
		},
		Wc.prototype.getClass = function() {
			return Wc
		},
		Wc.copyCoord = function(t, e, n, r) {
			for (var i = Math.min(t.getDimension(), n.getDimension()), o = 0; o < i; o++) n.setOrdinate(r, o, t.getOrdinate(e, o))
		},
		Wc.isRing = function(t) {
			var e = t.size();
			return 0 === e || !(e <= 3) && t.getOrdinate(0, ju.X) === t.getOrdinate(e - 1, ju.X) && t.getOrdinate(0, ju.Y) === t.getOrdinate(e - 1, ju.Y)
		},
		Wc.isEqual = function(t, e) {
			var n = t.size();
			if (n !== e.size()) return ! 1;
			for (var r = Math.min(t.getDimension(), e.getDimension()), i = 0; i < n; i++) for (var o = 0; o < r; o++) {
				var s = t.getOrdinate(i, o),
				a = e.getOrdinate(i, o);
				if (! (t.getOrdinate(i, o) === e.getOrdinate(i, o) || vu.isNaN(s) && vu.isNaN(a))) return ! 1
			}
			return ! 0
		},
		Wc.extend = function(t, e, n) {
			var r = t.create(n, e.getDimension()),
			i = e.size();
			if (Wc.copy(e, 0, r, 0, i), i > 0) for (var o = i; o < n; o++) Wc.copy(e, i - 1, r, o, 1);
			return r
		},
		Wc.reverse = function(t) {
			for (var e = t.size() - 1, n = Math.trunc(e / 2), r = 0; r <= n; r++) Wc.swap(t, r, e - r)
		},
		Wc.swap = function(t, e, n) {
			if (e === n) return null;
			for (var r = 0; r < t.getDimension(); r++) {
				var i = t.getOrdinate(e, r);
				t.setOrdinate(e, r, t.getOrdinate(n, r)),
				t.setOrdinate(n, r, i)
			}
		},
		Wc.copy = function(t, e, n, r, i) {
			for (var o = 0; o < i; o++) Wc.copyCoord(t, e + o, n, r + o)
		},
		Wc.toString = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = t.size();
				if (0 === e) return "()";
				var n = t.getDimension(),
				r = new Au;
				r.append("(");
				for (var i = 0; i < e; i++) {
					i > 0 && r.append(" ");
					for (var o = 0; o < n; o++) o > 0 && r.append(","),
					r.append(Xc.toString(t.getOrdinate(i, o)))
				}
				return r.append(")"),
				r.toString()
			}
		},
		Wc.ensureValidRing = function(t, e) {
			var n = e.size();
			return 0 === n ? e: n <= 3 ? Wc.createClosedRing(t, e, 4) : e.getOrdinate(0, ju.X) === e.getOrdinate(n - 1, ju.X) && e.getOrdinate(0, ju.Y) === e.getOrdinate(n - 1, ju.Y) ? e: Wc.createClosedRing(t, e, n + 1)
		},
		Wc.createClosedRing = function(t, e, n) {
			var r = t.create(n, e.getDimension()),
			i = e.size();
			Wc.copy(e, 0, r, 0, i);
			for (var o = i; o < n; o++) Wc.copy(e, 0, r, o, 1);
			return r
		};
		var Hc = function(t) {
			function e(e, n) {
				t.call(this, n),
				this._points = null,
				this.init(e)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.computeEnvelopeInternal = function() {
				return this.isEmpty() ? new Yu: this._points.expandEnvelope(new Yu)
			},
			e.prototype.isRing = function() {
				return this.isClosed() && this.isSimple()
			},
			e.prototype.getSortIndex = function() {
				return t.SORTINDEX_LINESTRING
			},
			e.prototype.getCoordinates = function() {
				return this._points.toCoordinateArray()
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					if (!this.isEquivalentClass(e)) return ! 1;
					var r = e;
					if (this._points.size() !== r._points.size()) return ! 1;
					for (var i = 0; i < this._points.size(); i++) if (!this.equal(this._points.getCoordinate(i), r._points.getCoordinate(i), n)) return ! 1;
					return ! 0
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.normalize = function() {
				for (var t = 0; t < Math.trunc(this._points.size() / 2); t++) {
					var e = this._points.size() - 1 - t;
					if (!this._points.getCoordinate(t).equals(this._points.getCoordinate(e))) return this._points.getCoordinate(t).compareTo(this._points.getCoordinate(e)) > 0 && Wc.reverse(this._points),
					null
				}
			},
			e.prototype.getCoordinate = function() {
				return this.isEmpty() ? null: this._points.getCoordinate(0)
			},
			e.prototype.getBoundaryDimension = function() {
				return this.isClosed() ? Fc.FALSE: 0
			},
			e.prototype.isClosed = function() {
				return ! this.isEmpty() && this.getCoordinateN(0).equals2D(this.getCoordinateN(this.getNumPoints() - 1))
			},
			e.prototype.getEndPoint = function() {
				return this.isEmpty() ? null: this.getPointN(this.getNumPoints() - 1)
			},
			e.prototype.getDimension = function() {
				return 1
			},
			e.prototype.getLength = function() {
				return oc.computeLength(this._points)
			},
			e.prototype.getNumPoints = function() {
				return this._points.size()
			},
			e.prototype.reverse = function() {
				var t = this._points.copy();
				return Wc.reverse(t),
				this.getFactory().createLineString(t)
			},
			e.prototype.compareToSameClass = function() {
				if (1 === arguments.length) {
					for (var t = arguments[0], e = 0, n = 0; e < this._points.size() && n < t._points.size();) {
						var r = this._points.getCoordinate(e).compareTo(t._points.getCoordinate(n));
						if (0 !== r) return r;
						e++,
						n++
					}
					return e < this._points.size() ? 1 : n < t._points.size() ? -1 : 0
				}
				if (2 === arguments.length) {
					var i = arguments[0];
					return arguments[1].compare(this._points, i._points)
				}
			},
			e.prototype.apply = function() {
				if (Nu(arguments[0], hc)) for (var t = arguments[0], e = 0; e < this._points.size(); e++) t.filter(this._points.getCoordinate(e));
				else if (Nu(arguments[0], Bc)) {
					var n = arguments[0];
					if (0 === this._points.size()) return null;
					for (var r = 0; r < this._points.size() && (n.filter(this._points, r), !n.isDone()); r++);
					n.isGeometryChanged() && this.geometryChanged()
				} else Nu(arguments[0], qc) ? arguments[0].filter(this) : Nu(arguments[0], ac) && arguments[0].filter(this)
			},
			e.prototype.getBoundary = function() {
				return new zc(this).getBoundary()
			},
			e.prototype.isEquivalentClass = function(t) {
				return t instanceof e
			},
			e.prototype.clone = function() {
				var e = t.prototype.clone.call(this);
				return e._points = this._points.clone(),
				e
			},
			e.prototype.getCoordinateN = function(t) {
				return this._points.getCoordinate(t)
			},
			e.prototype.getGeometryType = function() {
				return "LineString"
			},
			e.prototype.copy = function() {
				return new e(this._points.copy(), this._factory)
			},
			e.prototype.getCoordinateSequence = function() {
				return this._points
			},
			e.prototype.isEmpty = function() {
				return 0 === this._points.size()
			},
			e.prototype.init = function(t) {
				if (null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])), 1 === t.size()) throw new yu("Invalid number of points in LineString (found " + t.size() + " - must be 0 or >= 2)");
				this._points = t
			},
			e.prototype.isCoordinate = function(t) {
				for (var e = 0; e < this._points.size(); e++) if (this._points.getCoordinate(e).equals(t)) return ! 0;
				return ! 1
			},
			e.prototype.getStartPoint = function() {
				return this.isEmpty() ? null: this.getPointN(0)
			},
			e.prototype.getPointN = function(t) {
				return this.getFactory().createPoint(this._points.getCoordinate(t))
			},
			e.prototype.interfaces_ = function() {
				return [Rc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return 0x2b2b51ba435c8e00
			},
			Object.defineProperties(e, n),
			e
		} (uc),
		Jc = function() {};
		Jc.prototype.interfaces_ = function() {
			return []
		},
		Jc.prototype.getClass = function() {
			return Jc
		};
		var Zc = function(t) {
			function e(e, n) {
				t.call(this, n),
				this._coordinates = e || null,
				this.init(this._coordinates)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.computeEnvelopeInternal = function() {
				if (this.isEmpty()) return new Yu;
				var t = new Yu;
				return t.expandToInclude(this._coordinates.getX(0), this._coordinates.getY(0)),
				t
			},
			e.prototype.getSortIndex = function() {
				return t.SORTINDEX_POINT
			},
			e.prototype.getCoordinates = function() {
				return this.isEmpty() ? [] : [this.getCoordinate()]
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					return !! this.isEquivalentClass(e) && (!(!this.isEmpty() || !e.isEmpty()) || this.isEmpty() === e.isEmpty() && this.equal(e.getCoordinate(), this.getCoordinate(), n))
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.normalize = function() {},
			e.prototype.getCoordinate = function() {
				return 0 !== this._coordinates.size() ? this._coordinates.getCoordinate(0) : null
			},
			e.prototype.getBoundaryDimension = function() {
				return Fc.FALSE
			},
			e.prototype.getDimension = function() {
				return 0
			},
			e.prototype.getNumPoints = function() {
				return this.isEmpty() ? 0 : 1
			},
			e.prototype.reverse = function() {
				return this.copy()
			},
			e.prototype.getX = function() {
				if (null === this.getCoordinate()) throw new Error("getX called on empty Point");
				return this.getCoordinate().x
			},
			e.prototype.compareToSameClass = function() {
				if (1 === arguments.length) {
					var t = arguments[0];
					return this.getCoordinate().compareTo(t.getCoordinate())
				}
				if (2 === arguments.length) {
					var e = arguments[0];
					return arguments[1].compare(this._coordinates, e._coordinates)
				}
			},
			e.prototype.apply = function() {
				if (Nu(arguments[0], hc)) {
					var t = arguments[0];
					if (this.isEmpty()) return null;
					t.filter(this.getCoordinate())
				} else if (Nu(arguments[0], Bc)) {
					var e = arguments[0];
					if (this.isEmpty()) return null;
					e.filter(this._coordinates, 0),
					e.isGeometryChanged() && this.geometryChanged()
				} else Nu(arguments[0], qc) ? arguments[0].filter(this) : Nu(arguments[0], ac) && arguments[0].filter(this)
			},
			e.prototype.getBoundary = function() {
				return this.getFactory().createGeometryCollection(null)
			},
			e.prototype.clone = function() {
				var e = t.prototype.clone.call(this);
				return e._coordinates = this._coordinates.clone(),
				e
			},
			e.prototype.getGeometryType = function() {
				return "Point"
			},
			e.prototype.copy = function() {
				return new e(this._coordinates.copy(), this._factory)
			},
			e.prototype.getCoordinateSequence = function() {
				return this._coordinates
			},
			e.prototype.getY = function() {
				if (null === this.getCoordinate()) throw new Error("getY called on empty Point");
				return this.getCoordinate().y
			},
			e.prototype.isEmpty = function() {
				return 0 === this._coordinates.size()
			},
			e.prototype.init = function(t) {
				null === t && (t = this.getFactory().getCoordinateSequenceFactory().create([])),
				$u.isTrue(t.size() <= 1),
				this._coordinates = t
			},
			e.prototype.isSimple = function() {
				return ! 0
			},
			e.prototype.interfaces_ = function() {
				return [Jc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return 0x44077bad161cbc00
			},
			Object.defineProperties(e, n),
			e
		} (uc),
		Qc = function() {};
		Qc.prototype.interfaces_ = function() {
			return []
		},
		Qc.prototype.getClass = function() {
			return Qc
		};
		var Kc = function(t) {
			function e(e, n, r) {
				if (t.call(this, r), this._shell = null, this._holes = null, null === e && (e = this.getFactory().createLinearRing()), null === n && (n = []), t.hasNullElements(n)) throw new yu("holes must not contain null elements");
				if (e.isEmpty() && t.hasNonEmptyElements(n)) throw new yu("shell is empty but holes are not");
				this._shell = e,
				this._holes = n
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.computeEnvelopeInternal = function() {
				return this._shell.getEnvelopeInternal()
			},
			e.prototype.getSortIndex = function() {
				return t.SORTINDEX_POLYGON
			},
			e.prototype.getCoordinates = function() {
				if (this.isEmpty()) return [];
				for (var t = new Array(this.getNumPoints()).fill(null), e = -1, n = this._shell.getCoordinates(), r = 0; r < n.length; r++) t[++e] = n[r];
				for (var i = 0; i < this._holes.length; i++) for (var o = this._holes[i].getCoordinates(), s = 0; s < o.length; s++) t[++e] = o[s];
				return t
			},
			e.prototype.getArea = function() {
				var t = 0;
				t += Math.abs(oc.signedArea(this._shell.getCoordinateSequence()));
				for (var e = 0; e < this._holes.length; e++) t -= Math.abs(oc.signedArea(this._holes[e].getCoordinateSequence()));
				return t
			},
			e.prototype.isRectangle = function() {
				if (0 !== this.getNumInteriorRing()) return ! 1;
				if (null === this._shell) return ! 1;
				if (5 !== this._shell.getNumPoints()) return ! 1;
				for (var t = this._shell.getCoordinateSequence(), e = this.getEnvelopeInternal(), n = 0; n < 5; n++) {
					var r = t.getX(n);
					if (r !== e.getMinX() && r !== e.getMaxX()) return ! 1;
					var i = t.getY(n);
					if (i !== e.getMinY() && i !== e.getMaxY()) return ! 1
				}
				for (var o = t.getX(0), s = t.getY(0), a = 1; a <= 4; a++) {
					var u = t.getX(a),
					c = t.getY(a);
					if (u !== o == (c !== s)) return ! 1;
					o = u,
					s = c
				}
				return ! 0
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					if (!this.isEquivalentClass(e)) return ! 1;
					var r = e,
					i = this._shell,
					o = r._shell;
					if (!i.equalsExact(o, n)) return ! 1;
					if (this._holes.length !== r._holes.length) return ! 1;
					for (var s = 0; s < this._holes.length; s++) if (!this._holes[s].equalsExact(r._holes[s], n)) return ! 1;
					return ! 0
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.normalize = function() {
				if (0 === arguments.length) {
					this.normalize(this._shell, !0);
					for (var t = 0; t < this._holes.length; t++) this.normalize(this._holes[t], !1);
					kc.sort(this._holes)
				} else if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					if (e.isEmpty()) return null;
					var r = new Array(e.getCoordinates().length - 1).fill(null);
					Uu.arraycopy(e.getCoordinates(), 0, r, 0, r.length);
					var i = Ic.minCoordinate(e.getCoordinates());
					Ic.scroll(r, i),
					Uu.arraycopy(r, 0, e.getCoordinates(), 0, r.length),
					e.getCoordinates()[r.length] = r[0],
					oc.isCCW(e.getCoordinates()) === n && Ic.reverse(e.getCoordinates())
				}
			},
			e.prototype.getCoordinate = function() {
				return this._shell.getCoordinate()
			},
			e.prototype.getNumInteriorRing = function() {
				return this._holes.length
			},
			e.prototype.getBoundaryDimension = function() {
				return 1
			},
			e.prototype.getDimension = function() {
				return 2
			},
			e.prototype.getLength = function() {
				var t = 0;
				t += this._shell.getLength();
				for (var e = 0; e < this._holes.length; e++) t += this._holes[e].getLength();
				return t
			},
			e.prototype.getNumPoints = function() {
				for (var t = this._shell.getNumPoints(), e = 0; e < this._holes.length; e++) t += this._holes[e].getNumPoints();
				return t
			},
			e.prototype.reverse = function() {
				var t = this.copy();
				t._shell = this._shell.copy().reverse(),
				t._holes = new Array(this._holes.length).fill(null);
				for (var e = 0; e < this._holes.length; e++) t._holes[e] = this._holes[e].copy().reverse();
				return t
			},
			e.prototype.convexHull = function() {
				return this.getExteriorRing().convexHull()
			},
			e.prototype.compareToSameClass = function() {
				if (1 === arguments.length) {
					var t = arguments[0],
					e = this._shell,
					n = t._shell;
					return e.compareToSameClass(n)
				}
				if (2 === arguments.length) {
					var r = arguments[0],
					i = arguments[1],
					o = r,
					s = this._shell,
					a = o._shell,
					u = s.compareToSameClass(a, i);
					if (0 !== u) return u;
					for (var c = this.getNumInteriorRing(), l = o.getNumInteriorRing(), h = 0; h < c && h < l;) {
						var f = this.getInteriorRingN(h),
						p = o.getInteriorRingN(h),
						d = f.compareToSameClass(p, i);
						if (0 !== d) return d;
						h++
					}
					return h < c ? 1 : h < l ? -1 : 0
				}
			},
			e.prototype.apply = function(t) {
				if (Nu(t, hc)) {
					this._shell.apply(t);
					for (var e = 0; e < this._holes.length; e++) this._holes[e].apply(t)
				} else if (Nu(t, Bc)) {
					if (this._shell.apply(t), !t.isDone()) for (var n = 0; n < this._holes.length && (this._holes[n].apply(t), !t.isDone()); n++);
					t.isGeometryChanged() && this.geometryChanged()
				} else if (Nu(t, qc)) t.filter(this);
				else if (Nu(t, ac)) {
					t.filter(this),
					this._shell.apply(t);
					for (var r = 0; r < this._holes.length; r++) this._holes[r].apply(t)
				}
			},
			e.prototype.getBoundary = function() {
				if (this.isEmpty()) return this.getFactory().createMultiLineString();
				var t = new Array(this._holes.length + 1).fill(null);
				t[0] = this._shell;
				for (var e = 0; e < this._holes.length; e++) t[e + 1] = this._holes[e];
				return t.length <= 1 ? this.getFactory().createLinearRing(t[0].getCoordinateSequence()) : this.getFactory().createMultiLineString(t)
			},
			e.prototype.clone = function() {
				var e = t.prototype.clone.call(this);
				e._shell = this._shell.clone(),
				e._holes = new Array(this._holes.length).fill(null);
				for (var n = 0; n < this._holes.length; n++) e._holes[n] = this._holes[n].clone();
				return e
			},
			e.prototype.getGeometryType = function() {
				return "Polygon"
			},
			e.prototype.copy = function() {
				for (var t = this._shell.copy(), n = new Array(this._holes.length).fill(null), r = 0; r < n.length; r++) n[r] = this._holes[r].copy();
				return new e(t, n, this._factory)
			},
			e.prototype.getExteriorRing = function() {
				return this._shell
			},
			e.prototype.isEmpty = function() {
				return this._shell.isEmpty()
			},
			e.prototype.getInteriorRingN = function(t) {
				return this._holes[t]
			},
			e.prototype.interfaces_ = function() {
				return [Qc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return - 0x307ffefd8dc97200
			},
			Object.defineProperties(e, n),
			e
		} (uc),
		$c = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.getSortIndex = function() {
				return uc.SORTINDEX_MULTIPOINT
			},
			e.prototype.isValid = function() {
				return ! 0
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					return !! this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.getCoordinate = function() {
				if (1 === arguments.length) {
					var e = arguments[0];
					return this._geometries[e].getCoordinate()
				}
				return t.prototype.getCoordinate.apply(this, arguments)
			},
			e.prototype.getBoundaryDimension = function() {
				return Fc.FALSE
			},
			e.prototype.getDimension = function() {
				return 0
			},
			e.prototype.getBoundary = function() {
				return this.getFactory().createGeometryCollection(null)
			},
			e.prototype.getGeometryType = function() {
				return "MultiPoint"
			},
			e.prototype.copy = function() {
				for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
				return new e(t, this._factory)
			},
			e.prototype.interfaces_ = function() {
				return [Jc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return - 0x6fb1ed4162e0fc00
			},
			Object.defineProperties(e, n),
			e
		} (Gc),
		tl = function(t) {
			function e(e, n) {
				e instanceof xu && n instanceof yl && (e = n.getCoordinateSequenceFactory().create(e)),
				t.call(this, e, n),
				this.validateConstruction()
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				MINIMUM_VALID_SIZE: {
					configurable: !0
				},
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.getSortIndex = function() {
				return uc.SORTINDEX_LINEARRING
			},
			e.prototype.getBoundaryDimension = function() {
				return Fc.FALSE
			},
			e.prototype.isClosed = function() {
				return !! this.isEmpty() || t.prototype.isClosed.call(this)
			},
			e.prototype.reverse = function() {
				var t = this._points.copy();
				return Wc.reverse(t),
				this.getFactory().createLinearRing(t)
			},
			e.prototype.validateConstruction = function() {
				if (!this.isEmpty() && !t.prototype.isClosed.call(this)) throw new yu("Points of LinearRing do not form a closed linestring");
				if (this.getCoordinateSequence().size() >= 1 && this.getCoordinateSequence().size() < e.MINIMUM_VALID_SIZE) throw new yu("Invalid number of points in LinearRing (found " + this.getCoordinateSequence().size() + " - must be 0 or >= 4)")
			},
			e.prototype.getGeometryType = function() {
				return "LinearRing"
			},
			e.prototype.copy = function() {
				return new e(this._points.copy(), this._factory)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			n.MINIMUM_VALID_SIZE.get = function() {
				return 4
			},
			n.serialVersionUID.get = function() {
				return - 0x3b229e262367a600
			},
			Object.defineProperties(e, n),
			e
		} (Hc),
		el = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				serialVersionUID: {
					configurable: !0
				}
			};
			return e.prototype.getSortIndex = function() {
				return uc.SORTINDEX_MULTIPOLYGON
			},
			e.prototype.equalsExact = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					return !! this.isEquivalentClass(e) && t.prototype.equalsExact.call(this, e, n)
				}
				return t.prototype.equalsExact.apply(this, arguments)
			},
			e.prototype.getBoundaryDimension = function() {
				return 1
			},
			e.prototype.getDimension = function() {
				return 2
			},
			e.prototype.reverse = function() {
				for (var t = this._geometries.length,
				e = new Array(t).fill(null), n = 0; n < this._geometries.length; n++) e[n] = this._geometries[n].reverse();
				return this.getFactory().createMultiPolygon(e)
			},
			e.prototype.getBoundary = function() {
				if (this.isEmpty()) return this.getFactory().createMultiLineString();
				for (var t = new xc,
				e = 0; e < this._geometries.length; e++) for (var n = this._geometries[e].getBoundary(), r = 0; r < n.getNumGeometries(); r++) t.add(n.getGeometryN(r));
				var i = new Array(t.size()).fill(null);
				return this.getFactory().createMultiLineString(t.toArray(i))
			},
			e.prototype.getGeometryType = function() {
				return "MultiPolygon"
			},
			e.prototype.copy = function() {
				for (var t = new Array(this._geometries.length).fill(null), n = 0; n < t.length; n++) t[n] = this._geometries[n].copy();
				return new e(t, this._factory)
			},
			e.prototype.interfaces_ = function() {
				return [Qc]
			},
			e.prototype.getClass = function() {
				return e
			},
			n.serialVersionUID.get = function() {
				return - 0x7a5aa1369171980
			},
			Object.defineProperties(e, n),
			e
		} (Gc),
		nl = function(t) {
			this._factory = t || null,
			this._isUserDataCopied = !1
		},
		rl = {
			NoOpGeometryOperation: {
				configurable: !0
			},
			CoordinateOperation: {
				configurable: !0
			},
			CoordinateSequenceOperation: {
				configurable: !0
			}
		};
		nl.prototype.setCopyUserData = function(t) {
			this._isUserDataCopied = t
		},
		nl.prototype.edit = function(t, e) {
			if (null === t) return null;
			var n = this.editInternal(t, e);
			return this._isUserDataCopied && n.setUserData(t.getUserData()),
			n
		},
		nl.prototype.editInternal = function(t, e) {
			return null === this._factory && (this._factory = t.getFactory()),
			t instanceof Gc ? this.editGeometryCollection(t, e) : t instanceof Kc ? this.editPolygon(t, e) : t instanceof Zc ? e.edit(t, this._factory) : t instanceof Hc ? e.edit(t, this._factory) : ($u.shouldNeverReachHere("Unsupported Geometry class: " + t.getClass().getName()), null)
		},
		nl.prototype.editGeometryCollection = function(t, e) {
			for (var n = e.edit(t, this._factory), r = new xc, i = 0; i < n.getNumGeometries(); i++) {
				var o = this.edit(n.getGeometryN(i), e);
				null === o || o.isEmpty() || r.add(o)
			}
			return n.getClass() === $c ? this._factory.createMultiPoint(r.toArray([])) : n.getClass() === Uc ? this._factory.createMultiLineString(r.toArray([])) : n.getClass() === el ? this._factory.createMultiPolygon(r.toArray([])) : this._factory.createGeometryCollection(r.toArray([]))
		},
		nl.prototype.editPolygon = function(t, e) {
			var n = e.edit(t, this._factory);
			if (null === n && (n = this._factory.createPolygon(null)), n.isEmpty()) return n;
			var r = this.edit(n.getExteriorRing(), e);
			if (null === r || r.isEmpty()) return this._factory.createPolygon();
			for (var i = new xc,
			o = 0; o < n.getNumInteriorRing(); o++) {
				var s = this.edit(n.getInteriorRingN(o), e);
				null === s || s.isEmpty() || i.add(s)
			}
			return this._factory.createPolygon(r, i.toArray([]))
		},
		nl.prototype.interfaces_ = function() {
			return []
		},
		nl.prototype.getClass = function() {
			return nl
		},
		nl.GeometryEditorOperation = function() {},
		rl.NoOpGeometryOperation.get = function() {
			return il
		},
		rl.CoordinateOperation.get = function() {
			return ol
		},
		rl.CoordinateSequenceOperation.get = function() {
			return sl
		},
		Object.defineProperties(nl, rl);
		var il = function() {};
		il.prototype.edit = function(t, e) {
			return t
		},
		il.prototype.interfaces_ = function() {
			return [nl.GeometryEditorOperation]
		},
		il.prototype.getClass = function() {
			return il
		};
		var ol = function() {};
		ol.prototype.edit = function(t, e) {
			var n = this.editCoordinates(t.getCoordinates(), t);
			return null === n ? t: t instanceof tl ? e.createLinearRing(n) : t instanceof Hc ? e.createLineString(n) : t instanceof Zc ? n.length > 0 ? e.createPoint(n[0]) : e.createPoint() : t
		},
		ol.prototype.interfaces_ = function() {
			return [nl.GeometryEditorOperation]
		},
		ol.prototype.getClass = function() {
			return ol
		};
		var sl = function() {};
		sl.prototype.edit = function(t, e) {
			return t instanceof tl ? e.createLinearRing(this.edit(t.getCoordinateSequence(), t)) : t instanceof Hc ? e.createLineString(this.edit(t.getCoordinateSequence(), t)) : t instanceof Zc ? e.createPoint(this.edit(t.getCoordinateSequence(), t)) : t
		},
		sl.prototype.interfaces_ = function() {
			return [nl.GeometryEditorOperation]
		},
		sl.prototype.getClass = function() {
			return sl
		};
		var al = function() {
			if (this._dimension = 3, this._coordinates = null, 1 === arguments.length) {
				if (arguments[0] instanceof Array) this._coordinates = arguments[0],
				this._dimension = 3;
				else if (Number.isInteger(arguments[0])) {
					var t = arguments[0];
					this._coordinates = new Array(t).fill(null);
					for (var e = 0; e < t; e++) this._coordinates[e] = new xu
				} else if (Nu(arguments[0], ju)) {
					var n = arguments[0];
					if (null === n) return this._coordinates = new Array(0).fill(null),
					null;
					this._dimension = n.getDimension(),
					this._coordinates = new Array(n.size()).fill(null);
					for (var r = 0; r < this._coordinates.length; r++) this._coordinates[r] = n.getCoordinateCopy(r)
				}
			} else if (2 === arguments.length) if (arguments[0] instanceof Array && Number.isInteger(arguments[1])) {
				var i = arguments[0],
				o = arguments[1];
				this._coordinates = i,
				this._dimension = o,
				null === i && (this._coordinates = new Array(0).fill(null))
			} else if (Number.isInteger(arguments[0]) && Number.isInteger(arguments[1])) {
				var s = arguments[0],
				a = arguments[1];
				this._coordinates = new Array(s).fill(null),
				this._dimension = a;
				for (var u = 0; u < s; u++) this._coordinates[u] = new xu
			}
		},
		ul = {
			serialVersionUID: {
				configurable: !0
			}
		};
		al.prototype.setOrdinate = function(t, e, n) {
			switch (e) {
			case ju.X:
				this._coordinates[t].x = n;
				break;
			case ju.Y:
				this._coordinates[t].y = n;
				break;
			case ju.Z:
				this._coordinates[t].z = n;
				break;
			default:
				throw new yu("invalid ordinateIndex")
			}
		},
		al.prototype.size = function() {
			return this._coordinates.length
		},
		al.prototype.getOrdinate = function(t, e) {
			switch (e) {
			case ju.X:
				return this._coordinates[t].x;
			case ju.Y:
				return this._coordinates[t].y;
			case ju.Z:
				return this._coordinates[t].z
			}
			return vu.NaN
		},
		al.prototype.getCoordinate = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this._coordinates[t]
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				n.x = this._coordinates[e].x,
				n.y = this._coordinates[e].y,
				n.z = this._coordinates[e].z
			}
		},
		al.prototype.getCoordinateCopy = function(t) {
			return new xu(this._coordinates[t])
		},
		al.prototype.getDimension = function() {
			return this._dimension
		},
		al.prototype.getX = function(t) {
			return this._coordinates[t].x
		},
		al.prototype.clone = function() {
			for (var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++) t[e] = this._coordinates[e].clone();
			return new al(t, this._dimension)
		},
		al.prototype.expandEnvelope = function(t) {
			for (var e = 0; e < this._coordinates.length; e++) t.expandToInclude(this._coordinates[e]);
			return t
		},
		al.prototype.copy = function() {
			for (var t = new Array(this.size()).fill(null), e = 0; e < this._coordinates.length; e++) t[e] = this._coordinates[e].copy();
			return new al(t, this._dimension)
		},
		al.prototype.toString = function() {
			if (this._coordinates.length > 0) {
				var t = new Au(17 * this._coordinates.length);
				t.append("("),
				t.append(this._coordinates[0]);
				for (var e = 1; e < this._coordinates.length; e++) t.append(", "),
				t.append(this._coordinates[e]);
				return t.append(")"),
				t.toString()
			}
			return "()"
		},
		al.prototype.getY = function(t) {
			return this._coordinates[t].y
		},
		al.prototype.toCoordinateArray = function() {
			return this._coordinates
		},
		al.prototype.interfaces_ = function() {
			return [ju, Pi]
		},
		al.prototype.getClass = function() {
			return al
		},
		ul.serialVersionUID.get = function() {
			return - 0xcb44a778db18e00
		},
		Object.defineProperties(al, ul);
		var cl = function() {},
		ll = {
			serialVersionUID: {
				configurable: !0
			},
			instanceObject: {
				configurable: !0
			}
		};
		cl.prototype.readResolve = function() {
			return cl.instance()
		},
		cl.prototype.create = function() {
			if (1 === arguments.length) {
				if (arguments[0] instanceof Array) {
					var t = arguments[0];
					return new al(t)
				}
				if (Nu(arguments[0], ju)) {
					var e = arguments[0];
					return new al(e)
				}
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				return r > 3 && (r = 3),
				r < 2 ? new al(n) : new al(n, r)
			}
		},
		cl.prototype.interfaces_ = function() {
			return [Iu, Pi]
		},
		cl.prototype.getClass = function() {
			return cl
		},
		cl.instance = function() {
			return cl.instanceObject
		},
		ll.serialVersionUID.get = function() {
			return - 0x38e49fa6cf6f2e00
		},
		ll.instanceObject.get = function() {
			return new cl
		},
		Object.defineProperties(cl, ll);
		var hl = function(t) {
			function e() {
				t.call(this),
				this.map_ = new Map
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.get = function(t) {
				return this.map_.get(t) || null
			},
			e.prototype.put = function(t, e) {
				return this.map_.set(t, e),
				e
			},
			e.prototype.values = function() {
				for (var t = new xc,
				e = this.map_.values(), n = e.next(); ! n.done;) t.add(n.value),
				n = e.next();
				return t
			},
			e.prototype.entrySet = function() {
				var t = new Ac;
				return this.map_.entries().forEach(function(e) {
					return t.add(e)
				}),
				t
			},
			e.prototype.size = function() {
				return this.map_.size()
			},
			e
		} (Pc),
		fl = function t() {
			if (this._modelType = null, this._scale = null, 0 === arguments.length) this._modelType = t.FLOATING;
			else if (1 === arguments.length) if (arguments[0] instanceof dl) {
				var e = arguments[0];
				this._modelType = e,
				e === t.FIXED && this.setScale(1)
			} else if ("number" == typeof arguments[0]) {
				var n = arguments[0];
				this._modelType = t.FIXED,
				this.setScale(n)
			} else if (arguments[0] instanceof t) {
				var r = arguments[0];
				this._modelType = r._modelType,
				this._scale = r._scale
			}
		},
		pl = {
			serialVersionUID: {
				configurable: !0
			},
			maximumPreciseValue: {
				configurable: !0
			}
		};
		fl.prototype.equals = function(t) {
			if (! (t instanceof fl)) return ! 1;
			var e = t;
			return this._modelType === e._modelType && this._scale === e._scale
		},
		fl.prototype.compareTo = function(t) {
			var e = t,
			n = this.getMaximumSignificantDigits(),
			r = e.getMaximumSignificantDigits();
			return new Ou(n).compareTo(new Ou(r))
		},
		fl.prototype.getScale = function() {
			return this._scale
		},
		fl.prototype.isFloating = function() {
			return this._modelType === fl.FLOATING || this._modelType === fl.FLOATING_SINGLE
		},
		fl.prototype.getType = function() {
			return this._modelType
		},
		fl.prototype.toString = function() {
			var t = "UNKNOWN";
			return this._modelType === fl.FLOATING ? t = "Floating": this._modelType === fl.FLOATING_SINGLE ? t = "Floating-Single": this._modelType === fl.FIXED && (t = "Fixed (Scale=" + this.getScale() + ")"),
			t
		},
		fl.prototype.makePrecise = function() {
			if ("number" == typeof arguments[0]) {
				var t = arguments[0];
				return vu.isNaN(t) ? t: this._modelType === fl.FLOATING_SINGLE ? t: this._modelType === fl.FIXED ? Math.round(t * this._scale) / this._scale: t
			}
			if (arguments[0] instanceof xu) {
				var e = arguments[0];
				if (this._modelType === fl.FLOATING) return null;
				e.x = this.makePrecise(e.x),
				e.y = this.makePrecise(e.y)
			}
		},
		fl.prototype.getMaximumSignificantDigits = function() {
			var t = 16;
			return this._modelType === fl.FLOATING ? t = 16 : this._modelType === fl.FLOATING_SINGLE ? t = 6 : this._modelType === fl.FIXED && (t = 1 + Math.trunc(Math.ceil(Math.log(this.getScale()) / Math.log(10)))),
			t
		},
		fl.prototype.setScale = function(t) {
			this._scale = Math.abs(t)
		},
		fl.prototype.interfaces_ = function() {
			return [Pi, _u]
		},
		fl.prototype.getClass = function() {
			return fl
		},
		fl.mostPrecise = function(t, e) {
			return t.compareTo(e) >= 0 ? t: e
		},
		pl.serialVersionUID.get = function() {
			return 0x6bee6404e9a25c00
		},
		pl.maximumPreciseValue.get = function() {
			return 9007199254740992
		},
		Object.defineProperties(fl, pl);
		var dl = function t(e) {
			this._name = e || null,
			t.nameToTypeMap.put(e, this)
		},
		gl = {
			serialVersionUID: {
				configurable: !0
			},
			nameToTypeMap: {
				configurable: !0
			}
		};
		dl.prototype.readResolve = function() {
			return dl.nameToTypeMap.get(this._name)
		},
		dl.prototype.toString = function() {
			return this._name
		},
		dl.prototype.interfaces_ = function() {
			return [Pi]
		},
		dl.prototype.getClass = function() {
			return dl
		},
		gl.serialVersionUID.get = function() {
			return - 552860263173159e4
		},
		gl.nameToTypeMap.get = function() {
			return new hl
		},
		Object.defineProperties(dl, gl),
		fl.Type = dl,
		fl.FIXED = new dl("FIXED"),
		fl.FLOATING = new dl("FLOATING"),
		fl.FLOATING_SINGLE = new dl("FLOATING SINGLE");
		var yl = function t() {
			this._precisionModel = new fl,
			this._SRID = 0,
			this._coordinateSequenceFactory = t.getDefaultCoordinateSequenceFactory(),
			0 === arguments.length || (1 === arguments.length ? Nu(arguments[0], Iu) ? this._coordinateSequenceFactory = arguments[0] : arguments[0] instanceof fl && (this._precisionModel = arguments[0]) : 2 === arguments.length ? (this._precisionModel = arguments[0], this._SRID = arguments[1]) : 3 === arguments.length && (this._precisionModel = arguments[0], this._SRID = arguments[1], this._coordinateSequenceFactory = arguments[2]))
		},
		vl = {
			serialVersionUID: {
				configurable: !0
			}
		};
		yl.prototype.toGeometry = function(t) {
			return t.isNull() ? this.createPoint(null) : t.getMinX() === t.getMaxX() && t.getMinY() === t.getMaxY() ? this.createPoint(new xu(t.getMinX(), t.getMinY())) : t.getMinX() === t.getMaxX() || t.getMinY() === t.getMaxY() ? this.createLineString([new xu(t.getMinX(), t.getMinY()), new xu(t.getMaxX(), t.getMaxY())]) : this.createPolygon(this.createLinearRing([new xu(t.getMinX(), t.getMinY()), new xu(t.getMinX(), t.getMaxY()), new xu(t.getMaxX(), t.getMaxY()), new xu(t.getMaxX(), t.getMinY()), new xu(t.getMinX(), t.getMinY())]), null)
		},
		yl.prototype.createLineString = function(t) {
			return t ? t instanceof Array ? new Hc(this.getCoordinateSequenceFactory().create(t), this) : Nu(t, ju) ? new Hc(t, this) : void 0 : new Hc(this.getCoordinateSequenceFactory().create([]), this)
		},
		yl.prototype.createMultiLineString = function() {
			if (0 === arguments.length) return new Uc(null, this);
			if (1 === arguments.length) {
				var t = arguments[0];
				return new Uc(t, this)
			}
		},
		yl.prototype.buildGeometry = function(t) {
			for (var e = null,
			n = !1,
			r = !1,
			i = t.iterator(); i.hasNext();) {
				var o = i.next(),
				s = o.getClass();
				null === e && (e = s),
				s !== e && (n = !0),
				o.isGeometryCollectionOrDerived() && (r = !0)
			}
			if (null === e) return this.createGeometryCollection();
			if (n || r) return this.createGeometryCollection(yl.toGeometryArray(t));
			var a = t.iterator().next();
			if (t.size() > 1) {
				if (a instanceof Kc) return this.createMultiPolygon(yl.toPolygonArray(t));
				if (a instanceof Hc) return this.createMultiLineString(yl.toLineStringArray(t));
				if (a instanceof Zc) return this.createMultiPoint(yl.toPointArray(t));
				$u.shouldNeverReachHere("Unhandled class: " + a.getClass().getName())
			}
			return a
		},
		yl.prototype.createMultiPointFromCoords = function(t) {
			return this.createMultiPoint(null !== t ? this.getCoordinateSequenceFactory().create(t) : null)
		},
		yl.prototype.createPoint = function() {
			if (0 === arguments.length) return this.createPoint(this.getCoordinateSequenceFactory().create([]));
			if (1 === arguments.length) {
				if (arguments[0] instanceof xu) {
					var t = arguments[0];
					return this.createPoint(null !== t ? this.getCoordinateSequenceFactory().create([t]) : null)
				}
				if (Nu(arguments[0], ju)) {
					var e = arguments[0];
					return new Zc(e, this)
				}
			}
		},
		yl.prototype.getCoordinateSequenceFactory = function() {
			return this._coordinateSequenceFactory
		},
		yl.prototype.createPolygon = function() {
			if (0 === arguments.length) return new Kc(null, null, this);
			if (1 === arguments.length) {
				if (Nu(arguments[0], ju)) {
					var t = arguments[0];
					return this.createPolygon(this.createLinearRing(t))
				}
				if (arguments[0] instanceof Array) {
					var e = arguments[0];
					return this.createPolygon(this.createLinearRing(e))
				}
				if (arguments[0] instanceof tl) {
					var n = arguments[0];
					return this.createPolygon(n, null)
				}
			} else if (2 === arguments.length) {
				var r = arguments[0],
				i = arguments[1];
				return new Kc(r, i, this)
			}
		},
		yl.prototype.getSRID = function() {
			return this._SRID
		},
		yl.prototype.createGeometryCollection = function() {
			if (0 === arguments.length) return new Gc(null, this);
			if (1 === arguments.length) {
				var t = arguments[0];
				return new Gc(t, this)
			}
		},
		yl.prototype.createGeometry = function(t) {
			return new nl(this).edit(t, {
				edit: function() {
					if (2 === arguments.length) {
						var t = arguments[0];
						return this._coordinateSequenceFactory.create(t)
					}
				}
			})
		},
		yl.prototype.getPrecisionModel = function() {
			return this._precisionModel
		},
		yl.prototype.createLinearRing = function() {
			if (0 === arguments.length) return this.createLinearRing(this.getCoordinateSequenceFactory().create([]));
			if (1 === arguments.length) {
				if (arguments[0] instanceof Array) {
					var t = arguments[0];
					return this.createLinearRing(null !== t ? this.getCoordinateSequenceFactory().create(t) : null)
				}
				if (Nu(arguments[0], ju)) {
					var e = arguments[0];
					return new tl(e, this)
				}
			}
		},
		yl.prototype.createMultiPolygon = function() {
			if (0 === arguments.length) return new el(null, this);
			if (1 === arguments.length) {
				var t = arguments[0];
				return new el(t, this)
			}
		},
		yl.prototype.createMultiPoint = function() {
			if (0 === arguments.length) return new $c(null, this);
			if (1 === arguments.length) {
				if (arguments[0] instanceof Array) {
					var t = arguments[0];
					return new $c(t, this)
				}
				if (arguments[0] instanceof Array) {
					var e = arguments[0];
					return this.createMultiPoint(null !== e ? this.getCoordinateSequenceFactory().create(e) : null)
				}
				if (Nu(arguments[0], ju)) {
					var n = arguments[0];
					if (null === n) return this.createMultiPoint(new Array(0).fill(null));
					for (var r = new Array(n.size()).fill(null), i = 0; i < n.size(); i++) {
						var o = this.getCoordinateSequenceFactory().create(1, n.getDimension());
						Wc.copy(n, i, o, 0, 1),
						r[i] = this.createPoint(o)
					}
					return this.createMultiPoint(r)
				}
			}
		},
		yl.prototype.interfaces_ = function() {
			return [Pi]
		},
		yl.prototype.getClass = function() {
			return yl
		},
		yl.toMultiPolygonArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toGeometryArray = function(t) {
			if (null === t) return null;
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.getDefaultCoordinateSequenceFactory = function() {
			return cl.instance()
		},
		yl.toMultiLineStringArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toLineStringArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toMultiPointArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toLinearRingArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toPointArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.toPolygonArray = function(t) {
			var e = new Array(t.size()).fill(null);
			return t.toArray(e)
		},
		yl.createPointFromInternalCoord = function(t, e) {
			return e.getPrecisionModel().makePrecise(t),
			e.getFactory().createPoint(t)
		},
		vl.serialVersionUID.get = function() {
			return - 0x5ea75f2051eeb400
		},
		Object.defineProperties(yl, vl);
		var ml = ["Point", "MultiPoint", "LineString", "MultiLineString", "Polygon", "MultiPolygon"],
		_l = function(t) {
			this.geometryFactory = t || new yl
		};
		_l.prototype.read = function(t) {
			var e, n = (e = "string" == typeof t ? JSON.parse(t) : t).type;
			if (!wl[n]) throw new Error("Unknown GeoJSON type: " + e.type);
			return - 1 !== ml.indexOf(n) ? wl[n].apply(this, [e.coordinates]) : "GeometryCollection" === n ? wl[n].apply(this, [e.geometries]) : wl[n].apply(this, [e])
		},
		_l.prototype.write = function(t) {
			var e = t.getGeometryType();
			if (!bl[e]) throw new Error("Geometry is not supported");
			return bl[e].apply(this, [t])
		};
		var wl = {
			Feature: function(t) {
				var e = {};
				for (var n in t) e[n] = t[n];
				if (t.geometry) {
					var r = t.geometry.type;
					if (!wl[r]) throw new Error("Unknown GeoJSON type: " + t.type);
					e.geometry = this.read(t.geometry)
				}
				return t.bbox && (e.bbox = wl.bbox.apply(this, [t.bbox])),
				e
			},
			FeatureCollection: function(t) {
				var e = {};
				if (t.features) {
					e.features = [];
					for (var n = 0; n < t.features.length; ++n) e.features.push(this.read(t.features[n]))
				}
				return t.bbox && (e.bbox = this.parse.bbox.apply(this, [t.bbox])),
				e
			},
			coordinates: function(t) {
				for (var e = [], n = 0; n < t.length; ++n) {
					var r = t[n];
					e.push(new xu(r[0], r[1]))
				}
				return e
			},
			bbox: function(t) {
				return this.geometryFactory.createLinearRing([new xu(t[0], t[1]), new xu(t[2], t[1]), new xu(t[2], t[3]), new xu(t[0], t[3]), new xu(t[0], t[1])])
			},
			Point: function(t) {
				var e = new xu(t[0], t[1]);
				return this.geometryFactory.createPoint(e)
			},
			MultiPoint: function(t) {
				for (var e = [], n = 0; n < t.length; ++n) e.push(wl.Point.apply(this, [t[n]]));
				return this.geometryFactory.createMultiPoint(e)
			},
			LineString: function(t) {
				var e = wl.coordinates.apply(this, [t]);
				return this.geometryFactory.createLineString(e)
			},
			MultiLineString: function(t) {
				for (var e = [], n = 0; n < t.length; ++n) e.push(wl.LineString.apply(this, [t[n]]));
				return this.geometryFactory.createMultiLineString(e)
			},
			Polygon: function(t) {
				for (var e = wl.coordinates.apply(this, [t[0]]), n = this.geometryFactory.createLinearRing(e), r = [], i = 1; i < t.length; ++i) {
					var o = t[i],
					s = wl.coordinates.apply(this, [o]),
					a = this.geometryFactory.createLinearRing(s);
					r.push(a)
				}
				return this.geometryFactory.createPolygon(n, r)
			},
			MultiPolygon: function(t) {
				for (var e = [], n = 0; n < t.length; ++n) {
					var r = t[n];
					e.push(wl.Polygon.apply(this, [r]))
				}
				return this.geometryFactory.createMultiPolygon(e)
			},
			GeometryCollection: function(t) {
				for (var e = [], n = 0; n < t.length; ++n) {
					var r = t[n];
					e.push(this.read(r))
				}
				return this.geometryFactory.createGeometryCollection(e)
			}
		},
		bl = {
			coordinate: function(t) {
				return [t.x, t.y]
			},
			Point: function(t) {
				return {
					type: "Point",
					coordinates: bl.coordinate.apply(this, [t.getCoordinate()])
				}
			},
			MultiPoint: function(t) {
				for (var e = [], n = 0; n < t._geometries.length; ++n) {
					var r = t._geometries[n],
					i = bl.Point.apply(this, [r]);
					e.push(i.coordinates)
				}
				return {
					type: "MultiPoint",
					coordinates: e
				}
			},
			LineString: function(t) {
				for (var e = [], n = t.getCoordinates(), r = 0; r < n.length; ++r) {
					var i = n[r];
					e.push(bl.coordinate.apply(this, [i]))
				}
				return {
					type: "LineString",
					coordinates: e
				}
			},
			MultiLineString: function(t) {
				for (var e = [], n = 0; n < t._geometries.length; ++n) {
					var r = t._geometries[n],
					i = bl.LineString.apply(this, [r]);
					e.push(i.coordinates)
				}
				return {
					type: "MultiLineString",
					coordinates: e
				}
			},
			Polygon: function(t) {
				var e = [],
				n = bl.LineString.apply(this, [t._shell]);
				e.push(n.coordinates);
				for (var r = 0; r < t._holes.length; ++r) {
					var i = t._holes[r],
					o = bl.LineString.apply(this, [i]);
					e.push(o.coordinates)
				}
				return {
					type: "Polygon",
					coordinates: e
				}
			},
			MultiPolygon: function(t) {
				for (var e = [], n = 0; n < t._geometries.length; ++n) {
					var r = t._geometries[n],
					i = bl.Polygon.apply(this, [r]);
					e.push(i.coordinates)
				}
				return {
					type: "MultiPolygon",
					coordinates: e
				}
			},
			GeometryCollection: function(t) {
				for (var e = [], n = 0; n < t._geometries.length; ++n) {
					var r = t._geometries[n],
					i = r.getGeometryType();
					e.push(bl[i].apply(this, [r]))
				}
				return {
					type: "GeometryCollection",
					geometries: e
				}
			}
		},
		xl = function(t) {
			this.geometryFactory = t || new yl,
			this.precisionModel = this.geometryFactory.getPrecisionModel(),
			this.parser = new _l(this.geometryFactory)
		};
		xl.prototype.read = function(t) {
			var e = this.parser.read(t);
			return this.precisionModel.getType() === fl.FIXED && this.reducePrecision(e),
			e
		},
		xl.prototype.reducePrecision = function(t) {
			var e, n;
			if (t.coordinate) this.precisionModel.makePrecise(t.coordinate);
			else if (t.points) for (e = 0, n = t.points.length; e < n; e++) this.precisionModel.makePrecise(t.points[e]);
			else if (t.geometries) for (e = 0, n = t.geometries.length; e < n; e++) this.reducePrecision(t.geometries[e])
		};
		var El = function() {
			this.parser = new _l(this.geometryFactory)
		};
		El.prototype.write = function(t) {
			return this.parser.write(t)
		};
		var Ml = function() {},
		Il = {
			ON: {
				configurable: !0
			},
			LEFT: {
				configurable: !0
			},
			RIGHT: {
				configurable: !0
			}
		};
		Ml.prototype.interfaces_ = function() {
			return []
		},
		Ml.prototype.getClass = function() {
			return Ml
		},
		Ml.opposite = function(t) {
			return t === Ml.LEFT ? Ml.RIGHT: t === Ml.RIGHT ? Ml.LEFT: t
		},
		Il.ON.get = function() {
			return 0
		},
		Il.LEFT.get = function() {
			return 1
		},
		Il.RIGHT.get = function() {
			return 2
		},
		Object.defineProperties(Ml, Il),
		(Ui.prototype = new Error).name = "EmptyStackException",
		(zi.prototype = new bc).add = function(t) {
			return this.array_.push(t),
			!0
		},
		zi.prototype.get = function(t) {
			if (t < 0 || t >= this.size()) throw new Error;
			return this.array_[t]
		},
		zi.prototype.push = function(t) {
			return this.array_.push(t),
			t
		},
		zi.prototype.pop = function(t) {
			if (0 === this.array_.length) throw new Ui;
			return this.array_.pop()
		},
		zi.prototype.peek = function() {
			if (0 === this.array_.length) throw new Ui;
			return this.array_[this.array_.length - 1]
		},
		zi.prototype.empty = function() {
			return 0 === this.array_.length
		},
		zi.prototype.isEmpty = function() {
			return this.empty()
		},
		zi.prototype.search = function(t) {
			return this.array_.indexOf(t)
		},
		zi.prototype.size = function() {
			return this.array_.length
		},
		zi.prototype.toArray = function() {
			for (var t = [], e = 0, n = this.array_.length; e < n; e++) t.push(this.array_[e]);
			return t
		};
		var Sl = function() {
			this._minIndex = -1,
			this._minCoord = null,
			this._minDe = null,
			this._orientedDe = null
		};
		Sl.prototype.getCoordinate = function() {
			return this._minCoord
		},
		Sl.prototype.getRightmostSide = function(t, e) {
			var n = this.getRightmostSideOfSegment(t, e);
			return n < 0 && (n = this.getRightmostSideOfSegment(t, e - 1)),
			n < 0 && (this._minCoord = null, this.checkForRightmostCoordinate(t)),
			n
		},
		Sl.prototype.findRightmostEdgeAtVertex = function() {
			var t = this._minDe.getEdge().getCoordinates();
			$u.isTrue(this._minIndex > 0 && this._minIndex < t.length, "rightmost point expected to be interior vertex of edge");
			var e = t[this._minIndex - 1],
			n = t[this._minIndex + 1],
			r = oc.computeOrientation(this._minCoord, n, e),
			i = !1;
			e.y < this._minCoord.y && n.y < this._minCoord.y && r === oc.COUNTERCLOCKWISE ? i = !0 : e.y > this._minCoord.y && n.y > this._minCoord.y && r === oc.CLOCKWISE && (i = !0),
			i && (this._minIndex = this._minIndex - 1)
		},
		Sl.prototype.getRightmostSideOfSegment = function(t, e) {
			var n = t.getEdge().getCoordinates();
			if (e < 0 || e + 1 >= n.length) return - 1;
			if (n[e].y === n[e + 1].y) return - 1;
			var r = Ml.LEFT;
			return n[e].y < n[e + 1].y && (r = Ml.RIGHT),
			r
		},
		Sl.prototype.getEdge = function() {
			return this._orientedDe
		},
		Sl.prototype.checkForRightmostCoordinate = function(t) {
			for (var e = t.getEdge().getCoordinates(), n = 0; n < e.length - 1; n++)(null === this._minCoord || e[n].x > this._minCoord.x) && (this._minDe = t, this._minIndex = n, this._minCoord = e[n])
		},
		Sl.prototype.findRightmostEdgeAtNode = function() {
			var t = this._minDe.getNode().getEdges();
			this._minDe = t.getRightmostEdge(),
			this._minDe.isForward() || (this._minDe = this._minDe.getSym(), this._minIndex = this._minDe.getEdge().getCoordinates().length - 1)
		},
		Sl.prototype.findEdge = function(t) {
			for (var e = t.iterator(); e.hasNext();) {
				var n = e.next();
				n.isForward() && this.checkForRightmostCoordinate(n)
			}
			$u.isTrue(0 !== this._minIndex || this._minCoord.equals(this._minDe.getCoordinate()), "inconsistency in rightmost processing"),
			0 === this._minIndex ? this.findRightmostEdgeAtNode() : this.findRightmostEdgeAtVertex(),
			this._orientedDe = this._minDe,
			this.getRightmostSide(this._minDe, this._minIndex) === Ml.LEFT && (this._orientedDe = this._minDe.getSym())
		},
		Sl.prototype.interfaces_ = function() {
			return []
		},
		Sl.prototype.getClass = function() {
			return Sl
		};
		var Cl = function(t) {
			function e(n, r) {
				t.call(this, e.msgWithCoord(n, r)),
				this.pt = r ? new xu(r) : null,
				this.name = "TopologyException"
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.getCoordinate = function() {
				return this.pt
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e.msgWithCoord = function(t, e) {
				return e ? t: t + " [ " + e + " ]"
			},
			e
		} (Qu),
		Nl = function() {
			this.array_ = []
		};
		Nl.prototype.addLast = function(t) {
			this.array_.push(t)
		},
		Nl.prototype.removeFirst = function() {
			return this.array_.shift()
		},
		Nl.prototype.isEmpty = function() {
			return 0 === this.array_.length
		};
		var Pl = function() {
			this._finder = null,
			this._dirEdgeList = new xc,
			this._nodes = new xc,
			this._rightMostCoord = null,
			this._env = null,
			this._finder = new Sl
		};
		Pl.prototype.clearVisitedEdges = function() {
			for (var t = this._dirEdgeList.iterator(); t.hasNext();) t.next().setVisited(!1)
		},
		Pl.prototype.getRightmostCoordinate = function() {
			return this._rightMostCoord
		},
		Pl.prototype.computeNodeDepth = function(t) {
			for (var e = null,
			n = t.getEdges().iterator(); n.hasNext();) {
				var r = n.next();
				if (r.isVisited() || r.getSym().isVisited()) {
					e = r;
					break
				}
			}
			if (null === e) throw new Cl("unable to find edge to compute depths at " + t.getCoordinate());
			t.getEdges().computeDepths(e);
			for (var i = t.getEdges().iterator(); i.hasNext();) {
				var o = i.next();
				o.setVisited(!0),
				this.copySymDepths(o)
			}
		},
		Pl.prototype.computeDepth = function(t) {
			this.clearVisitedEdges();
			var e = this._finder.getEdge();
			e.setEdgeDepths(Ml.RIGHT, t),
			this.copySymDepths(e),
			this.computeDepths(e)
		},
		Pl.prototype.create = function(t) {
			this.addReachable(t),
			this._finder.findEdge(this._dirEdgeList),
			this._rightMostCoord = this._finder.getCoordinate()
		},
		Pl.prototype.findResultEdges = function() {
			for (var t = this._dirEdgeList.iterator(); t.hasNext();) {
				var e = t.next();
				e.getDepth(Ml.RIGHT) >= 1 && e.getDepth(Ml.LEFT) <= 0 && !e.isInteriorAreaEdge() && e.setInResult(!0)
			}
		},
		Pl.prototype.computeDepths = function(t) {
			var e = new Ac,
			n = new Nl,
			r = t.getNode();
			for (n.addLast(r), e.add(r), t.setVisited(!0); ! n.isEmpty();) {
				var i = n.removeFirst();
				e.add(i),
				this.computeNodeDepth(i);
				for (var o = i.getEdges().iterator(); o.hasNext();) {
					var s = o.next().getSym();
					if (!s.isVisited()) {
						var a = s.getNode();
						e.contains(a) || (n.addLast(a), e.add(a))
					}
				}
			}
		},
		Pl.prototype.compareTo = function(t) {
			var e = t;
			return this._rightMostCoord.x < e._rightMostCoord.x ? -1 : this._rightMostCoord.x > e._rightMostCoord.x ? 1 : 0
		},
		Pl.prototype.getEnvelope = function() {
			if (null === this._env) {
				for (var t = new Yu,
				e = this._dirEdgeList.iterator(); e.hasNext();) for (var n = e.next().getEdge().getCoordinates(), r = 0; r < n.length - 1; r++) t.expandToInclude(n[r]);
				this._env = t
			}
			return this._env
		},
		Pl.prototype.addReachable = function(t) {
			var e = new zi;
			for (e.add(t); ! e.empty();) {
				var n = e.pop();
				this.add(n, e)
			}
		},
		Pl.prototype.copySymDepths = function(t) {
			var e = t.getSym();
			e.setDepth(Ml.LEFT, t.getDepth(Ml.RIGHT)),
			e.setDepth(Ml.RIGHT, t.getDepth(Ml.LEFT))
		},
		Pl.prototype.add = function(t, e) {
			t.setVisited(!0),
			this._nodes.add(t);
			for (var n = t.getEdges().iterator(); n.hasNext();) {
				var r = n.next();
				this._dirEdgeList.add(r);
				var i = r.getSym().getNode();
				i.isVisited() || e.push(i)
			}
		},
		Pl.prototype.getNodes = function() {
			return this._nodes
		},
		Pl.prototype.getDirectedEdges = function() {
			return this._dirEdgeList
		},
		Pl.prototype.interfaces_ = function() {
			return [_u]
		},
		Pl.prototype.getClass = function() {
			return Pl
		};
		var Ll = function t() {
			if (this.location = null, 1 === arguments.length) {
				if (arguments[0] instanceof Array) {
					var e = arguments[0];
					this.init(e.length)
				} else if (Number.isInteger(arguments[0])) {
					var n = arguments[0];
					this.init(1),
					this.location[Ml.ON] = n
				} else if (arguments[0] instanceof t) {
					var r = arguments[0];
					if (this.init(r.location.length), null !== r) for (var i = 0; i < this.location.length; i++) this.location[i] = r.location[i]
				}
			} else if (3 === arguments.length) {
				var o = arguments[0],
				s = arguments[1],
				a = arguments[2];
				this.init(3),
				this.location[Ml.ON] = o,
				this.location[Ml.LEFT] = s,
				this.location[Ml.RIGHT] = a
			}
		};
		Ll.prototype.setAllLocations = function(t) {
			for (var e = 0; e < this.location.length; e++) this.location[e] = t
		},
		Ll.prototype.isNull = function() {
			for (var t = 0; t < this.location.length; t++) if (this.location[t] !== Su.NONE) return ! 1;
			return ! 0
		},
		Ll.prototype.setAllLocationsIfNull = function(t) {
			for (var e = 0; e < this.location.length; e++) this.location[e] === Su.NONE && (this.location[e] = t)
		},
		Ll.prototype.isLine = function() {
			return 1 === this.location.length
		},
		Ll.prototype.merge = function(t) {
			if (t.location.length > this.location.length) {
				var e = new Array(3).fill(null);
				e[Ml.ON] = this.location[Ml.ON],
				e[Ml.LEFT] = Su.NONE,
				e[Ml.RIGHT] = Su.NONE,
				this.location = e
			}
			for (var n = 0; n < this.location.length; n++) this.location[n] === Su.NONE && n < t.location.length && (this.location[n] = t.location[n])
		},
		Ll.prototype.getLocations = function() {
			return this.location
		},
		Ll.prototype.flip = function() {
			if (this.location.length <= 1) return null;
			var t = this.location[Ml.LEFT];
			this.location[Ml.LEFT] = this.location[Ml.RIGHT],
			this.location[Ml.RIGHT] = t
		},
		Ll.prototype.toString = function() {
			var t = new Au;
			return this.location.length > 1 && t.append(Su.toLocationSymbol(this.location[Ml.LEFT])),
			t.append(Su.toLocationSymbol(this.location[Ml.ON])),
			this.location.length > 1 && t.append(Su.toLocationSymbol(this.location[Ml.RIGHT])),
			t.toString()
		},
		Ll.prototype.setLocations = function(t, e, n) {
			this.location[Ml.ON] = t,
			this.location[Ml.LEFT] = e,
			this.location[Ml.RIGHT] = n
		},
		Ll.prototype.get = function(t) {
			return t < this.location.length ? this.location[t] : Su.NONE
		},
		Ll.prototype.isArea = function() {
			return this.location.length > 1
		},
		Ll.prototype.isAnyNull = function() {
			for (var t = 0; t < this.location.length; t++) if (this.location[t] === Su.NONE) return ! 0;
			return ! 1
		},
		Ll.prototype.setLocation = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setLocation(Ml.ON, t)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this.location[e] = n
			}
		},
		Ll.prototype.init = function(t) {
			this.location = new Array(t).fill(null),
			this.setAllLocations(Su.NONE)
		},
		Ll.prototype.isEqualOnSide = function(t, e) {
			return this.location[e] === t.location[e]
		},
		Ll.prototype.allPositionsEqual = function(t) {
			for (var e = 0; e < this.location.length; e++) if (this.location[e] !== t) return ! 1;
			return ! 0
		},
		Ll.prototype.interfaces_ = function() {
			return []
		},
		Ll.prototype.getClass = function() {
			return Ll
		};
		var Al = function t() {
			if (this.elt = new Array(2).fill(null), 1 === arguments.length) {
				if (Number.isInteger(arguments[0])) {
					var e = arguments[0];
					this.elt[0] = new Ll(e),
					this.elt[1] = new Ll(e)
				} else if (arguments[0] instanceof t) {
					var n = arguments[0];
					this.elt[0] = new Ll(n.elt[0]),
					this.elt[1] = new Ll(n.elt[1])
				}
			} else if (2 === arguments.length) {
				var r = arguments[0],
				i = arguments[1];
				this.elt[0] = new Ll(Su.NONE),
				this.elt[1] = new Ll(Su.NONE),
				this.elt[r].setLocation(i)
			} else if (3 === arguments.length) {
				var o = arguments[0],
				s = arguments[1],
				a = arguments[2];
				this.elt[0] = new Ll(o, s, a),
				this.elt[1] = new Ll(o, s, a)
			} else if (4 === arguments.length) {
				var u = arguments[0],
				c = arguments[1],
				l = arguments[2],
				h = arguments[3];
				this.elt[0] = new Ll(Su.NONE, Su.NONE, Su.NONE),
				this.elt[1] = new Ll(Su.NONE, Su.NONE, Su.NONE),
				this.elt[u].setLocations(c, l, h)
			}
		};
		Al.prototype.getGeometryCount = function() {
			var t = 0;
			return this.elt[0].isNull() || t++,
			this.elt[1].isNull() || t++,
			t
		},
		Al.prototype.setAllLocations = function(t, e) {
			this.elt[t].setAllLocations(e)
		},
		Al.prototype.isNull = function(t) {
			return this.elt[t].isNull()
		},
		Al.prototype.setAllLocationsIfNull = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setAllLocationsIfNull(0, t),
				this.setAllLocationsIfNull(1, t)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this.elt[e].setAllLocationsIfNull(n)
			}
		},
		Al.prototype.isLine = function(t) {
			return this.elt[t].isLine()
		},
		Al.prototype.merge = function(t) {
			for (var e = 0; e < 2; e++) null === this.elt[e] && null !== t.elt[e] ? this.elt[e] = new Ll(t.elt[e]) : this.elt[e].merge(t.elt[e])
		},
		Al.prototype.flip = function() {
			this.elt[0].flip(),
			this.elt[1].flip()
		},
		Al.prototype.getLocation = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this.elt[t].get(Ml.ON)
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return this.elt[e].get(n)
			}
		},
		Al.prototype.toString = function() {
			var t = new Au;
			return null !== this.elt[0] && (t.append("A:"), t.append(this.elt[0].toString())),
			null !== this.elt[1] && (t.append(" B:"), t.append(this.elt[1].toString())),
			t.toString()
		},
		Al.prototype.isArea = function() {
			if (0 === arguments.length) return this.elt[0].isArea() || this.elt[1].isArea();
			if (1 === arguments.length) {
				var t = arguments[0];
				return this.elt[t].isArea()
			}
		},
		Al.prototype.isAnyNull = function(t) {
			return this.elt[t].isAnyNull()
		},
		Al.prototype.setLocation = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this.elt[t].setLocation(Ml.ON, e)
			} else if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2];
				this.elt[n].setLocation(r, i)
			}
		},
		Al.prototype.isEqualOnSide = function(t, e) {
			return this.elt[0].isEqualOnSide(t.elt[0], e) && this.elt[1].isEqualOnSide(t.elt[1], e)
		},
		Al.prototype.allPositionsEqual = function(t, e) {
			return this.elt[t].allPositionsEqual(e)
		},
		Al.prototype.toLine = function(t) {
			this.elt[t].isArea() && (this.elt[t] = new Ll(this.elt[t].location[0]))
		},
		Al.prototype.interfaces_ = function() {
			return []
		},
		Al.prototype.getClass = function() {
			return Al
		},
		Al.toLineLabel = function(t) {
			for (var e = new Al(Su.NONE), n = 0; n < 2; n++) e.setLocation(n, t.getLocation(n));
			return e
		};
		var Ol = function() {
			this._startDe = null,
			this._maxNodeDegree = -1,
			this._edges = new xc,
			this._pts = new xc,
			this._label = new Al(Su.NONE),
			this._ring = null,
			this._isHole = null,
			this._shell = null,
			this._holes = new xc,
			this._geometryFactory = null;
			var t = arguments[0],
			e = arguments[1];
			this._geometryFactory = e,
			this.computePoints(t),
			this.computeRing()
		};
		Ol.prototype.computeRing = function() {
			if (null !== this._ring) return null;
			for (var t = new Array(this._pts.size()).fill(null), e = 0; e < this._pts.size(); e++) t[e] = this._pts.get(e);
			this._ring = this._geometryFactory.createLinearRing(t),
			this._isHole = oc.isCCW(this._ring.getCoordinates())
		},
		Ol.prototype.isIsolated = function() {
			return 1 === this._label.getGeometryCount()
		},
		Ol.prototype.computePoints = function(t) {
			this._startDe = t;
			var e = t,
			n = !0;
			do {
				if (null === e) throw new Cl("Found null DirectedEdge");
				if (e.getEdgeRing() === this) throw new Cl("Directed Edge visited twice during ring-building at " + e.getCoordinate());
				this._edges.add(e);
				var r = e.getLabel();
				$u.isTrue(r.isArea()), this.mergeLabel(r), this.addPoints(e.getEdge(), e.isForward(), n), n = !1, this.setEdgeRing(e, this), e = this.getNext(e)
			} while ( e !== this . _startDe )
		},
		Ol.prototype.getLinearRing = function() {
			return this._ring
		},
		Ol.prototype.getCoordinate = function(t) {
			return this._pts.get(t)
		},
		Ol.prototype.computeMaxNodeDegree = function() {
			this._maxNodeDegree = 0;
			var t = this._startDe;
			do {
				var e = t.getNode().getEdges().getOutgoingDegree(this);
				e > this._maxNodeDegree && (this._maxNodeDegree = e), t = this.getNext(t)
			} while ( t !== this . _startDe );
			this._maxNodeDegree *= 2
		},
		Ol.prototype.addPoints = function(t, e, n) {
			var r = t.getCoordinates();
			if (e) {
				var i = 1;
				n && (i = 0);
				for (var o = i; o < r.length; o++) this._pts.add(r[o])
			} else {
				var s = r.length - 2;
				n && (s = r.length - 1);
				for (var a = s; a >= 0; a--) this._pts.add(r[a])
			}
		},
		Ol.prototype.isHole = function() {
			return this._isHole
		},
		Ol.prototype.setInResult = function() {
			var t = this._startDe;
			do {
				t.getEdge().setInResult(!0), t = t.getNext()
			} while ( t !== this . _startDe )
		},
		Ol.prototype.containsPoint = function(t) {
			var e = this.getLinearRing();
			if (!e.getEnvelopeInternal().contains(t)) return ! 1;
			if (!oc.isPointInRing(t, e.getCoordinates())) return ! 1;
			for (var n = this._holes.iterator(); n.hasNext();) if (n.next().containsPoint(t)) return ! 1;
			return ! 0
		},
		Ol.prototype.addHole = function(t) {
			this._holes.add(t)
		},
		Ol.prototype.isShell = function() {
			return null === this._shell
		},
		Ol.prototype.getLabel = function() {
			return this._label
		},
		Ol.prototype.getEdges = function() {
			return this._edges
		},
		Ol.prototype.getMaxNodeDegree = function() {
			return this._maxNodeDegree < 0 && this.computeMaxNodeDegree(),
			this._maxNodeDegree
		},
		Ol.prototype.getShell = function() {
			return this._shell
		},
		Ol.prototype.mergeLabel = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.mergeLabel(t, 0),
				this.mergeLabel(t, 1)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = e.getLocation(n, Ml.RIGHT);
				if (r === Su.NONE) return null;
				if (this._label.getLocation(n) === Su.NONE) return this._label.setLocation(n, r),
				null
			}
		},
		Ol.prototype.setShell = function(t) {
			this._shell = t,
			null !== t && t.addHole(this)
		},
		Ol.prototype.toPolygon = function(t) {
			for (var e = new Array(this._holes.size()).fill(null), n = 0; n < this._holes.size(); n++) e[n] = this._holes.get(n).getLinearRing();
			return t.createPolygon(this.getLinearRing(), e)
		},
		Ol.prototype.interfaces_ = function() {
			return []
		},
		Ol.prototype.getClass = function() {
			return Ol
		};
		var Tl = function(t) {
			function e() {
				var e = arguments[0],
				n = arguments[1];
				t.call(this, e, n)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.setEdgeRing = function(t, e) {
				t.setMinEdgeRing(e)
			},
			e.prototype.getNext = function(t) {
				return t.getNextMin()
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Ol),
		Rl = function(t) {
			function e() {
				var e = arguments[0],
				n = arguments[1];
				t.call(this, e, n)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.buildMinimalRings = function() {
				var t = new xc,
				e = this._startDe;
				do {
					if (null === e.getMinEdgeRing()) {
						var n = new Tl(e, this._geometryFactory);
						t.add(n)
					}
					e = e.getNext()
				} while ( e !== this . _startDe );
				return t
			},
			e.prototype.setEdgeRing = function(t, e) {
				t.setEdgeRing(e)
			},
			e.prototype.linkDirectedEdgesForMinimalEdgeRings = function() {
				var t = this._startDe;
				do {
					t.getNode().getEdges().linkMinimalDirectedEdges(this), t = t.getNext()
				} while ( t !== this . _startDe )
			},
			e.prototype.getNext = function(t) {
				return t.getNext()
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Ol),
		Dl = function() {
			if (this._label = null, this._isInResult = !1, this._isCovered = !1, this._isCoveredSet = !1, this._isVisited = !1, 0 === arguments.length);
			else if (1 === arguments.length) {
				var t = arguments[0];
				this._label = t
			}
		};
		Dl.prototype.setVisited = function(t) {
			this._isVisited = t
		},
		Dl.prototype.setInResult = function(t) {
			this._isInResult = t
		},
		Dl.prototype.isCovered = function() {
			return this._isCovered
		},
		Dl.prototype.isCoveredSet = function() {
			return this._isCoveredSet
		},
		Dl.prototype.setLabel = function(t) {
			this._label = t
		},
		Dl.prototype.getLabel = function() {
			return this._label
		},
		Dl.prototype.setCovered = function(t) {
			this._isCovered = t,
			this._isCoveredSet = !0
		},
		Dl.prototype.updateIM = function(t) {
			$u.isTrue(this._label.getGeometryCount() >= 2, "found partial label"),
			this.computeIM(t)
		},
		Dl.prototype.isInResult = function() {
			return this._isInResult
		},
		Dl.prototype.isVisited = function() {
			return this._isVisited
		},
		Dl.prototype.interfaces_ = function() {
			return []
		},
		Dl.prototype.getClass = function() {
			return Dl
		};
		var kl = function(t) {
			function e() {
				t.call(this),
				this._coord = null,
				this._edges = null;
				var e = arguments[0],
				n = arguments[1];
				this._coord = e,
				this._edges = n,
				this._label = new Al(0, Su.NONE)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.isIncidentEdgeInResult = function() {
				for (var t = this.getEdges().getEdges().iterator(); t.hasNext();) if (t.next().getEdge().isInResult()) return ! 0;
				return ! 1
			},
			e.prototype.isIsolated = function() {
				return 1 === this._label.getGeometryCount()
			},
			e.prototype.getCoordinate = function() {
				return this._coord
			},
			e.prototype.print = function(t) {
				t.println("node " + this._coord + " lbl: " + this._label)
			},
			e.prototype.computeIM = function(t) {},
			e.prototype.computeMergedLocation = function(t, e) {
				var n = Su.NONE;
				if (n = this._label.getLocation(e), !t.isNull(e)) {
					var r = t.getLocation(e);
					n !== Su.BOUNDARY && (n = r)
				}
				return n
			},
			e.prototype.setLabel = function() {
				if (2 !== arguments.length) return t.prototype.setLabel.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1];
				null === this._label ? this._label = new Al(e, n) : this._label.setLocation(e, n)
			},
			e.prototype.getEdges = function() {
				return this._edges
			},
			e.prototype.mergeLabel = function() {
				if (arguments[0] instanceof e) {
					var t = arguments[0];
					this.mergeLabel(t._label)
				} else if (arguments[0] instanceof Al) for (var n = arguments[0], r = 0; r < 2; r++) {
					var i = this.computeMergedLocation(n, r);
					this._label.getLocation(r) === Su.NONE && this._label.setLocation(r, i)
				}
			},
			e.prototype.add = function(t) {
				this._edges.insert(t),
				t.setNode(this)
			},
			e.prototype.setLabelBoundary = function(t) {
				if (null === this._label) return null;
				var e = Su.NONE;
				null !== this._label && (e = this._label.getLocation(t));
				var n = null;
				switch (e) {
				case Su.BOUNDARY:
					n = Su.INTERIOR;
					break;
				case Su.INTERIOR:
				default:
					n = Su.BOUNDARY
				}
				this._label.setLocation(t, n)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Dl),
		Fl = function() {
			this.nodeMap = new ji,
			this.nodeFact = null;
			var t = arguments[0];
			this.nodeFact = t
		};
		Fl.prototype.find = function(t) {
			return this.nodeMap.get(t)
		},
		Fl.prototype.addNode = function() {
			if (arguments[0] instanceof xu) {
				var t = arguments[0],
				e = this.nodeMap.get(t);
				return null === e && (e = this.nodeFact.createNode(t), this.nodeMap.put(t, e)),
				e
			}
			if (arguments[0] instanceof kl) {
				var n = arguments[0],
				r = this.nodeMap.get(n.getCoordinate());
				return null === r ? (this.nodeMap.put(n.getCoordinate(), n), n) : (r.mergeLabel(n), r)
			}
		},
		Fl.prototype.print = function(t) {
			for (var e = this.iterator(); e.hasNext();) e.next().print(t)
		},
		Fl.prototype.iterator = function() {
			return this.nodeMap.values().iterator()
		},
		Fl.prototype.values = function() {
			return this.nodeMap.values()
		},
		Fl.prototype.getBoundaryNodes = function(t) {
			for (var e = new xc,
			n = this.iterator(); n.hasNext();) {
				var r = n.next();
				r.getLabel().getLocation(t) === Su.BOUNDARY && e.add(r)
			}
			return e
		},
		Fl.prototype.add = function(t) {
			var e = t.getCoordinate();
			this.addNode(e).add(t)
		},
		Fl.prototype.interfaces_ = function() {
			return []
		},
		Fl.prototype.getClass = function() {
			return Fl
		};
		var jl = function() {},
		ql = {
			NE: {
				configurable: !0
			},
			NW: {
				configurable: !0
			},
			SW: {
				configurable: !0
			},
			SE: {
				configurable: !0
			}
		};
		jl.prototype.interfaces_ = function() {
			return []
		},
		jl.prototype.getClass = function() {
			return jl
		},
		jl.isNorthern = function(t) {
			return t === jl.NE || t === jl.NW
		},
		jl.isOpposite = function(t, e) {
			return t !== e && 2 == (t - e + 4) % 4
		},
		jl.commonHalfPlane = function(t, e) {
			if (t === e) return t;
			if (2 == (t - e + 4) % 4) return - 1;
			var n = t < e ? t: e;
			return 0 === n && 3 === (t > e ? t: e) ? 3 : n
		},
		jl.isInHalfPlane = function(t, e) {
			return e === jl.SE ? t === jl.SE || t === jl.SW: t === e || t === e + 1
		},
		jl.quadrant = function() {
			if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
				var t = arguments[0],
				e = arguments[1];
				if (0 === t && 0 === e) throw new yu("Cannot compute the quadrant for point ( " + t + ", " + e + " )");
				return t >= 0 ? e >= 0 ? jl.NE: jl.SE: e >= 0 ? jl.NW: jl.SW
			}
			if (arguments[0] instanceof xu && arguments[1] instanceof xu) {
				var n = arguments[0],
				r = arguments[1];
				if (r.x === n.x && r.y === n.y) throw new yu("Cannot compute the quadrant for two identical points " + n);
				return r.x >= n.x ? r.y >= n.y ? jl.NE: jl.SE: r.y >= n.y ? jl.NW: jl.SW
			}
		},
		ql.NE.get = function() {
			return 0
		},
		ql.NW.get = function() {
			return 1
		},
		ql.SW.get = function() {
			return 2
		},
		ql.SE.get = function() {
			return 3
		},
		Object.defineProperties(jl, ql);
		var Bl = function() {
			if (this._edge = null, this._label = null, this._node = null, this._p0 = null, this._p1 = null, this._dx = null, this._dy = null, this._quadrant = null, 1 === arguments.length) {
				var t = arguments[0];
				this._edge = t
			} else if (3 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2];
				this._edge = e,
				this.init(n, r),
				this._label = null
			} else if (4 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2],
				a = arguments[3];
				this._edge = i,
				this.init(o, s),
				this._label = a
			}
		};
		Bl.prototype.compareDirection = function(t) {
			return this._dx === t._dx && this._dy === t._dy ? 0 : this._quadrant > t._quadrant ? 1 : this._quadrant < t._quadrant ? -1 : oc.computeOrientation(t._p0, t._p1, this._p1)
		},
		Bl.prototype.getDy = function() {
			return this._dy
		},
		Bl.prototype.getCoordinate = function() {
			return this._p0
		},
		Bl.prototype.setNode = function(t) {
			this._node = t
		},
		Bl.prototype.print = function(t) {
			var e = Math.atan2(this._dy, this._dx),
			n = this.getClass().getName(),
			r = n.lastIndexOf("."),
			i = n.substring(r + 1);
			t.print("  " + i + ": " + this._p0 + " - " + this._p1 + " " + this._quadrant + ":" + e + "   " + this._label)
		},
		Bl.prototype.compareTo = function(t) {
			var e = t;
			return this.compareDirection(e)
		},
		Bl.prototype.getDirectedCoordinate = function() {
			return this._p1
		},
		Bl.prototype.getDx = function() {
			return this._dx
		},
		Bl.prototype.getLabel = function() {
			return this._label
		},
		Bl.prototype.getEdge = function() {
			return this._edge
		},
		Bl.prototype.getQuadrant = function() {
			return this._quadrant
		},
		Bl.prototype.getNode = function() {
			return this._node
		},
		Bl.prototype.toString = function() {
			var t = Math.atan2(this._dy, this._dx),
			e = this.getClass().getName(),
			n = e.lastIndexOf(".");
			return "  " + e.substring(n + 1) + ": " + this._p0 + " - " + this._p1 + " " + this._quadrant + ":" + t + "   " + this._label
		},
		Bl.prototype.computeLabel = function(t) {},
		Bl.prototype.init = function(t, e) {
			this._p0 = t,
			this._p1 = e,
			this._dx = e.x - t.x,
			this._dy = e.y - t.y,
			this._quadrant = jl.quadrant(this._dx, this._dy),
			$u.isTrue(!(0 === this._dx && 0 === this._dy), "EdgeEnd with identical endpoints found")
		},
		Bl.prototype.interfaces_ = function() {
			return [_u]
		},
		Bl.prototype.getClass = function() {
			return Bl
		};
		var Gl = function(t) {
			function e() {
				var e = arguments[0],
				n = arguments[1];
				if (t.call(this, e), this._isForward = null, this._isInResult = !1, this._isVisited = !1, this._sym = null, this._next = null, this._nextMin = null, this._edgeRing = null, this._minEdgeRing = null, this._depth = [0, -999, -999], this._isForward = n, n) this.init(e.getCoordinate(0), e.getCoordinate(1));
				else {
					var r = e.getNumPoints() - 1;
					this.init(e.getCoordinate(r), e.getCoordinate(r - 1))
				}
				this.computeDirectedLabel()
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.getNextMin = function() {
				return this._nextMin
			},
			e.prototype.getDepth = function(t) {
				return this._depth[t]
			},
			e.prototype.setVisited = function(t) {
				this._isVisited = t
			},
			e.prototype.computeDirectedLabel = function() {
				this._label = new Al(this._edge.getLabel()),
				this._isForward || this._label.flip()
			},
			e.prototype.getNext = function() {
				return this._next
			},
			e.prototype.setDepth = function(t, e) {
				if ( - 999 !== this._depth[t] && this._depth[t] !== e) throw new Cl("assigned depths do not match", this.getCoordinate());
				this._depth[t] = e
			},
			e.prototype.isInteriorAreaEdge = function() {
				for (var t = !0,
				e = 0; e < 2; e++) this._label.isArea(e) && this._label.getLocation(e, Ml.LEFT) === Su.INTERIOR && this._label.getLocation(e, Ml.RIGHT) === Su.INTERIOR || (t = !1);
				return t
			},
			e.prototype.setNextMin = function(t) {
				this._nextMin = t
			},
			e.prototype.print = function(e) {
				t.prototype.print.call(this, e),
				e.print(" " + this._depth[Ml.LEFT] + "/" + this._depth[Ml.RIGHT]),
				e.print(" (" + this.getDepthDelta() + ")"),
				this._isInResult && e.print(" inResult")
			},
			e.prototype.setMinEdgeRing = function(t) {
				this._minEdgeRing = t
			},
			e.prototype.isLineEdge = function() {
				var t = this._label.isLine(0) || this._label.isLine(1),
				e = !this._label.isArea(0) || this._label.allPositionsEqual(0, Su.EXTERIOR),
				n = !this._label.isArea(1) || this._label.allPositionsEqual(1, Su.EXTERIOR);
				return t && e && n
			},
			e.prototype.setEdgeRing = function(t) {
				this._edgeRing = t
			},
			e.prototype.getMinEdgeRing = function() {
				return this._minEdgeRing
			},
			e.prototype.getDepthDelta = function() {
				var t = this._edge.getDepthDelta();
				return this._isForward || (t = -t),
				t
			},
			e.prototype.setInResult = function(t) {
				this._isInResult = t
			},
			e.prototype.getSym = function() {
				return this._sym
			},
			e.prototype.isForward = function() {
				return this._isForward
			},
			e.prototype.getEdge = function() {
				return this._edge
			},
			e.prototype.printEdge = function(t) {
				this.print(t),
				t.print(" "),
				this._isForward ? this._edge.print(t) : this._edge.printReverse(t)
			},
			e.prototype.setSym = function(t) {
				this._sym = t
			},
			e.prototype.setVisitedEdge = function(t) {
				this.setVisited(t),
				this._sym.setVisited(t)
			},
			e.prototype.setEdgeDepths = function(t, e) {
				var n = this.getEdge().getDepthDelta();
				this._isForward || (n = -n);
				var r = 1;
				t === Ml.LEFT && (r = -1);
				var i = Ml.opposite(t),
				o = e + n * r;
				this.setDepth(t, e),
				this.setDepth(i, o)
			},
			e.prototype.getEdgeRing = function() {
				return this._edgeRing
			},
			e.prototype.isInResult = function() {
				return this._isInResult
			},
			e.prototype.setNext = function(t) {
				this._next = t
			},
			e.prototype.isVisited = function() {
				return this._isVisited
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e.depthFactor = function(t, e) {
				return t === Su.EXTERIOR && e === Su.INTERIOR ? 1 : t === Su.INTERIOR && e === Su.EXTERIOR ? -1 : 0
			},
			e
		} (Bl),
		Ul = function() {};
		Ul.prototype.createNode = function(t) {
			return new kl(t, null)
		},
		Ul.prototype.interfaces_ = function() {
			return []
		},
		Ul.prototype.getClass = function() {
			return Ul
		};
		var zl = function() {
			if (this._edges = new xc, this._nodes = null, this._edgeEndList = new xc, 0 === arguments.length) this._nodes = new Fl(new Ul);
			else if (1 === arguments.length) {
				var t = arguments[0];
				this._nodes = new Fl(t)
			}
		};
		zl.prototype.printEdges = function(t) {
			t.println("Edges:");
			for (var e = 0; e < this._edges.size(); e++) {
				t.println("edge " + e + ":");
				var n = this._edges.get(e);
				n.print(t),
				n.eiList.print(t)
			}
		},
		zl.prototype.find = function(t) {
			return this._nodes.find(t)
		},
		zl.prototype.addNode = function() {
			if (arguments[0] instanceof kl) {
				var t = arguments[0];
				return this._nodes.addNode(t)
			}
			if (arguments[0] instanceof xu) {
				var e = arguments[0];
				return this._nodes.addNode(e)
			}
		},
		zl.prototype.getNodeIterator = function() {
			return this._nodes.iterator()
		},
		zl.prototype.linkResultDirectedEdges = function() {
			for (var t = this._nodes.iterator(); t.hasNext();) t.next().getEdges().linkResultDirectedEdges()
		},
		zl.prototype.debugPrintln = function(t) {
			Uu.out.println(t)
		},
		zl.prototype.isBoundaryNode = function(t, e) {
			var n = this._nodes.find(e);
			if (null === n) return ! 1;
			var r = n.getLabel();
			return null !== r && r.getLocation(t) === Su.BOUNDARY
		},
		zl.prototype.linkAllDirectedEdges = function() {
			for (var t = this._nodes.iterator(); t.hasNext();) t.next().getEdges().linkAllDirectedEdges()
		},
		zl.prototype.matchInSameDirection = function(t, e, n, r) {
			return !! t.equals(n) && oc.computeOrientation(t, e, r) === oc.COLLINEAR && jl.quadrant(t, e) === jl.quadrant(n, r)
		},
		zl.prototype.getEdgeEnds = function() {
			return this._edgeEndList
		},
		zl.prototype.debugPrint = function(t) {
			Uu.out.print(t)
		},
		zl.prototype.getEdgeIterator = function() {
			return this._edges.iterator()
		},
		zl.prototype.findEdgeInSameDirection = function(t, e) {
			for (var n = 0; n < this._edges.size(); n++) {
				var r = this._edges.get(n),
				i = r.getCoordinates();
				if (this.matchInSameDirection(t, e, i[0], i[1])) return r;
				if (this.matchInSameDirection(t, e, i[i.length - 1], i[i.length - 2])) return r
			}
			return null
		},
		zl.prototype.insertEdge = function(t) {
			this._edges.add(t)
		},
		zl.prototype.findEdgeEnd = function(t) {
			for (var e = this.getEdgeEnds().iterator(); e.hasNext();) {
				var n = e.next();
				if (n.getEdge() === t) return n
			}
			return null
		},
		zl.prototype.addEdges = function(t) {
			for (var e = t.iterator(); e.hasNext();) {
				var n = e.next();
				this._edges.add(n);
				var r = new Gl(n, !0),
				i = new Gl(n, !1);
				r.setSym(i),
				i.setSym(r),
				this.add(r),
				this.add(i)
			}
		},
		zl.prototype.add = function(t) {
			this._nodes.add(t),
			this._edgeEndList.add(t)
		},
		zl.prototype.getNodes = function() {
			return this._nodes.values()
		},
		zl.prototype.findEdge = function(t, e) {
			for (var n = 0; n < this._edges.size(); n++) {
				var r = this._edges.get(n),
				i = r.getCoordinates();
				if (t.equals(i[0]) && e.equals(i[1])) return r
			}
			return null
		},
		zl.prototype.interfaces_ = function() {
			return []
		},
		zl.prototype.getClass = function() {
			return zl
		},
		zl.linkResultDirectedEdges = function(t) {
			for (var e = t.iterator(); e.hasNext();) e.next().getEdges().linkResultDirectedEdges()
		};
		var Yl = function() {
			this._geometryFactory = null,
			this._shellList = new xc;
			var t = arguments[0];
			this._geometryFactory = t
		};
		Yl.prototype.sortShellsAndHoles = function(t, e, n) {
			for (var r = t.iterator(); r.hasNext();) {
				var i = r.next();
				i.isHole() ? n.add(i) : e.add(i)
			}
		},
		Yl.prototype.computePolygons = function(t) {
			for (var e = new xc,
			n = t.iterator(); n.hasNext();) {
				var r = n.next().toPolygon(this._geometryFactory);
				e.add(r)
			}
			return e
		},
		Yl.prototype.placeFreeHoles = function(t, e) {
			for (var n = e.iterator(); n.hasNext();) {
				var r = n.next();
				if (null === r.getShell()) {
					var i = this.findEdgeRingContaining(r, t);
					if (null === i) throw new Cl("unable to assign hole to a shell", r.getCoordinate(0));
					r.setShell(i)
				}
			}
		},
		Yl.prototype.buildMinimalEdgeRings = function(t, e, n) {
			for (var r = new xc,
			i = t.iterator(); i.hasNext();) {
				var o = i.next();
				if (o.getMaxNodeDegree() > 2) {
					o.linkDirectedEdgesForMinimalEdgeRings();
					var s = o.buildMinimalRings(),
					a = this.findShell(s);
					null !== a ? (this.placePolygonHoles(a, s), e.add(a)) : n.addAll(s)
				} else r.add(o)
			}
			return r
		},
		Yl.prototype.containsPoint = function(t) {
			for (var e = this._shellList.iterator(); e.hasNext();) if (e.next().containsPoint(t)) return ! 0;
			return ! 1
		},
		Yl.prototype.buildMaximalEdgeRings = function(t) {
			for (var e = new xc,
			n = t.iterator(); n.hasNext();) {
				var r = n.next();
				if (r.isInResult() && r.getLabel().isArea() && null === r.getEdgeRing()) {
					var i = new Rl(r, this._geometryFactory);
					e.add(i),
					i.setInResult()
				}
			}
			return e
		},
		Yl.prototype.placePolygonHoles = function(t, e) {
			for (var n = e.iterator(); n.hasNext();) {
				var r = n.next();
				r.isHole() && r.setShell(t)
			}
		},
		Yl.prototype.getPolygons = function() {
			return this.computePolygons(this._shellList)
		},
		Yl.prototype.findEdgeRingContaining = function(t, e) {
			for (var n = t.getLinearRing(), r = n.getEnvelopeInternal(), i = n.getCoordinateN(0), o = null, s = null, a = e.iterator(); a.hasNext();) {
				var u = a.next(),
				c = u.getLinearRing(),
				l = c.getEnvelopeInternal();
				null !== o && (s = o.getLinearRing().getEnvelopeInternal());
				var h = !1;
				l.contains(r) && oc.isPointInRing(i, c.getCoordinates()) && (h = !0),
				h && (null === o || s.contains(l)) && (o = u)
			}
			return o
		},
		Yl.prototype.findShell = function(t) {
			for (var e = 0,
			n = null,
			r = t.iterator(); r.hasNext();) {
				var i = r.next();
				i.isHole() || (n = i, e++)
			}
			return $u.isTrue(e <= 1, "found two shells in MinimalEdgeRing list"),
			n
		},
		Yl.prototype.add = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.add(t.getEdgeEnds(), t.getNodes())
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				zl.linkResultDirectedEdges(n);
				var r = this.buildMaximalEdgeRings(e),
				i = new xc,
				o = this.buildMinimalEdgeRings(r, this._shellList, i);
				this.sortShellsAndHoles(o, this._shellList, i),
				this.placeFreeHoles(this._shellList, i)
			}
		},
		Yl.prototype.interfaces_ = function() {
			return []
		},
		Yl.prototype.getClass = function() {
			return Yl
		};
		var Xl = function() {};
		Xl.prototype.getBounds = function() {},
		Xl.prototype.interfaces_ = function() {
			return []
		},
		Xl.prototype.getClass = function() {
			return Xl
		};
		var Vl = function() {
			this._bounds = null,
			this._item = null;
			var t = arguments[0],
			e = arguments[1];
			this._bounds = t,
			this._item = e
		};
		Vl.prototype.getItem = function() {
			return this._item
		},
		Vl.prototype.getBounds = function() {
			return this._bounds
		},
		Vl.prototype.interfaces_ = function() {
			return [Xl, Pi]
		},
		Vl.prototype.getClass = function() {
			return Vl
		};
		var Wl = function() {
			this._size = null,
			this._items = null,
			this._size = 0,
			this._items = new xc,
			this._items.add(null)
		};
		Wl.prototype.poll = function() {
			if (this.isEmpty()) return null;
			var t = this._items.get(1);
			return this._items.set(1, this._items.get(this._size)),
			this._size -= 1,
			this.reorder(1),
			t
		},
		Wl.prototype.size = function() {
			return this._size
		},
		Wl.prototype.reorder = function(t) {
			for (var e = null,
			n = this._items.get(t); 2 * t <= this._size && ((e = 2 * t) !== this._size && this._items.get(e + 1).compareTo(this._items.get(e)) < 0 && e++, this._items.get(e).compareTo(n) < 0); t = e) this._items.set(t, this._items.get(e));
			this._items.set(t, n)
		},
		Wl.prototype.clear = function() {
			this._size = 0,
			this._items.clear()
		},
		Wl.prototype.isEmpty = function() {
			return 0 === this._size
		},
		Wl.prototype.add = function(t) {
			this._items.add(null),
			this._size += 1;
			var e = this._size;
			for (this._items.set(0, t); t.compareTo(this._items.get(Math.trunc(e / 2))) < 0; e /= 2) this._items.set(e, this._items.get(Math.trunc(e / 2)));
			this._items.set(e, t)
		},
		Wl.prototype.interfaces_ = function() {
			return []
		},
		Wl.prototype.getClass = function() {
			return Wl
		};
		var Hl = function() {};
		Hl.prototype.visitItem = function(t) {},
		Hl.prototype.interfaces_ = function() {
			return []
		},
		Hl.prototype.getClass = function() {
			return Hl
		};
		var Jl = function() {};
		Jl.prototype.insert = function(t, e) {},
		Jl.prototype.remove = function(t, e) {},
		Jl.prototype.query = function() {},
		Jl.prototype.interfaces_ = function() {
			return []
		},
		Jl.prototype.getClass = function() {
			return Jl
		};
		var Zl = function() {
			if (this._childBoundables = new xc, this._bounds = null, this._level = null, 0 === arguments.length);
			else if (1 === arguments.length) {
				var t = arguments[0];
				this._level = t
			}
		},
		Ql = {
			serialVersionUID: {
				configurable: !0
			}
		};
		Zl.prototype.getLevel = function() {
			return this._level
		},
		Zl.prototype.size = function() {
			return this._childBoundables.size()
		},
		Zl.prototype.getChildBoundables = function() {
			return this._childBoundables
		},
		Zl.prototype.addChildBoundable = function(t) {
			$u.isTrue(null === this._bounds),
			this._childBoundables.add(t)
		},
		Zl.prototype.isEmpty = function() {
			return this._childBoundables.isEmpty()
		},
		Zl.prototype.getBounds = function() {
			return null === this._bounds && (this._bounds = this.computeBounds()),
			this._bounds
		},
		Zl.prototype.interfaces_ = function() {
			return [Xl, Pi]
		},
		Zl.prototype.getClass = function() {
			return Zl
		},
		Ql.serialVersionUID.get = function() {
			return 0x5a1e55ec41369800
		},
		Object.defineProperties(Zl, Ql);
		var Kl = function() {};
		Kl.reverseOrder = function() {
			return {
				compare: function(t, e) {
					return e.compareTo(t)
				}
			}
		},
		Kl.min = function(t) {
			return Kl.sort(t),
			t.get(0)
		},
		Kl.sort = function(t, e) {
			var n = t.toArray();
			e ? kc.sort(n, e) : kc.sort(n);
			for (var r = t.iterator(), i = 0, o = n.length; i < o; i++) r.next(),
			r.set(n[i])
		},
		Kl.singletonList = function(t) {
			var e = new xc;
			return e.add(t),
			e
		};
		var $l = function() {
			this._boundable1 = null,
			this._boundable2 = null,
			this._distance = null,
			this._itemDistance = null;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			this._boundable1 = t,
			this._boundable2 = e,
			this._itemDistance = n,
			this._distance = this.distance()
		};
		$l.prototype.expandToQueue = function(t, e) {
			var n = $l.isComposite(this._boundable1),
			r = $l.isComposite(this._boundable2);
			if (n && r) return $l.area(this._boundable1) > $l.area(this._boundable2) ? (this.expand(this._boundable1, this._boundable2, t, e), null) : (this.expand(this._boundable2, this._boundable1, t, e), null);
			if (n) return this.expand(this._boundable1, this._boundable2, t, e),
			null;
			if (r) return this.expand(this._boundable2, this._boundable1, t, e),
			null;
			throw new yu("neither boundable is composite")
		},
		$l.prototype.isLeaves = function() {
			return ! ($l.isComposite(this._boundable1) || $l.isComposite(this._boundable2))
		},
		$l.prototype.compareTo = function(t) {
			var e = t;
			return this._distance < e._distance ? -1 : this._distance > e._distance ? 1 : 0
		},
		$l.prototype.expand = function(t, e, n, r) {
			for (var i = t.getChildBoundables().iterator(); i.hasNext();) {
				var o = i.next(),
				s = new $l(o, e, this._itemDistance);
				s.getDistance() < r && n.add(s)
			}
		},
		$l.prototype.getBoundable = function(t) {
			return 0 === t ? this._boundable1: this._boundable2
		},
		$l.prototype.getDistance = function() {
			return this._distance
		},
		$l.prototype.distance = function() {
			return this.isLeaves() ? this._itemDistance.distance(this._boundable1, this._boundable2) : this._boundable1.getBounds().distance(this._boundable2.getBounds())
		},
		$l.prototype.interfaces_ = function() {
			return [_u]
		},
		$l.prototype.getClass = function() {
			return $l
		},
		$l.area = function(t) {
			return t.getBounds().getArea()
		},
		$l.isComposite = function(t) {
			return t instanceof Zl
		};
		var th = function t() {
			if (this._root = null, this._built = !1, this._itemBoundables = new xc, this._nodeCapacity = null, 0 === arguments.length) {
				var e = t.DEFAULT_NODE_CAPACITY;
				this._nodeCapacity = e
			} else if (1 === arguments.length) {
				var n = arguments[0];
				$u.isTrue(n > 1, "Node capacity must be greater than 1"),
				this._nodeCapacity = n
			}
		},
		eh = {
			IntersectsOp: {
				configurable: !0
			},
			serialVersionUID: {
				configurable: !0
			},
			DEFAULT_NODE_CAPACITY: {
				configurable: !0
			}
		};
		th.prototype.getNodeCapacity = function() {
			return this._nodeCapacity
		},
		th.prototype.lastNode = function(t) {
			return t.get(t.size() - 1)
		},
		th.prototype.size = function() {
			if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.size(this._root));
			if (1 === arguments.length) {
				for (var t = 0,
				e = arguments[0].getChildBoundables().iterator(); e.hasNext();) {
					var n = e.next();
					n instanceof Zl ? t += this.size(n) : n instanceof Vl && (t += 1)
				}
				return t
			}
		},
		th.prototype.removeItem = function(t, e) {
			for (var n = null,
			r = t.getChildBoundables().iterator(); r.hasNext();) {
				var i = r.next();
				i instanceof Vl && i.getItem() === e && (n = i)
			}
			return null !== n && (t.getChildBoundables().remove(n), !0)
		},
		th.prototype.itemsTree = function() {
			if (0 === arguments.length) {
				this.build();
				var t = this.itemsTree(this._root);
				return null === t ? new xc: t
			}
			if (1 === arguments.length) {
				for (var e = arguments[0], n = new xc, r = e.getChildBoundables().iterator(); r.hasNext();) {
					var i = r.next();
					if (i instanceof Zl) {
						var o = this.itemsTree(i);
						null !== o && n.add(o)
					} else i instanceof Vl ? n.add(i.getItem()) : $u.shouldNeverReachHere()
				}
				return n.size() <= 0 ? null: n
			}
		},
		th.prototype.insert = function(t, e) {
			$u.isTrue(!this._built, "Cannot insert items into an STR packed R-tree after it has been built."),
			this._itemBoundables.add(new Vl(t, e))
		},
		th.prototype.boundablesAtLevel = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = new xc;
				return this.boundablesAtLevel(t, this._root, e),
				e
			}
			if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2];
				if ($u.isTrue(n > -2), r.getLevel() === n) return i.add(r),
				null;
				for (var o = r.getChildBoundables().iterator(); o.hasNext();) {
					var s = o.next();
					s instanceof Zl ? this.boundablesAtLevel(n, s, i) : ($u.isTrue(s instanceof Vl), -1 === n && i.add(s))
				}
				return null
			}
		},
		th.prototype.query = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.build();
				var e = new xc;
				return this.isEmpty() ? e: (this.getIntersectsOp().intersects(this._root.getBounds(), t) && this.query(t, this._root, e), e)
			}
			if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				if (this.build(), this.isEmpty()) return null;
				this.getIntersectsOp().intersects(this._root.getBounds(), n) && this.query(n, this._root, r)
			} else if (3 === arguments.length) if (Nu(arguments[2], Hl) && arguments[0] instanceof Object && arguments[1] instanceof Zl) for (var i = arguments[0], o = arguments[1], s = arguments[2], a = o.getChildBoundables(), u = 0; u < a.size(); u++) {
				var c = a.get(u);
				this.getIntersectsOp().intersects(c.getBounds(), i) && (c instanceof Zl ? this.query(i, c, s) : c instanceof Vl ? s.visitItem(c.getItem()) : $u.shouldNeverReachHere())
			} else if (Nu(arguments[2], bc) && arguments[0] instanceof Object && arguments[1] instanceof Zl) for (var l = arguments[0], h = arguments[1], f = arguments[2], p = h.getChildBoundables(), d = 0; d < p.size(); d++) {
				var g = p.get(d);
				this.getIntersectsOp().intersects(g.getBounds(), l) && (g instanceof Zl ? this.query(l, g, f) : g instanceof Vl ? f.add(g.getItem()) : $u.shouldNeverReachHere())
			}
		},
		th.prototype.build = function() {
			if (this._built) return null;
			this._root = this._itemBoundables.isEmpty() ? this.createNode(0) : this.createHigherLevels(this._itemBoundables, -1),
			this._itemBoundables = null,
			this._built = !0
		},
		th.prototype.getRoot = function() {
			return this.build(),
			this._root
		},
		th.prototype.remove = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				return this.build(),
				!!this.getIntersectsOp().intersects(this._root.getBounds(), t) && this.remove(t, this._root, e)
			}
			if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2],
				o = this.removeItem(r, i);
				if (o) return ! 0;
				for (var s = null,
				a = r.getChildBoundables().iterator(); a.hasNext();) {
					var u = a.next();
					if (this.getIntersectsOp().intersects(u.getBounds(), n) && u instanceof Zl && (o = this.remove(n, u, i))) {
						s = u;
						break
					}
				}
				return null !== s && s.getChildBoundables().isEmpty() && r.getChildBoundables().remove(s),
				o
			}
		},
		th.prototype.createHigherLevels = function(t, e) {
			$u.isTrue(!t.isEmpty());
			var n = this.createParentBoundables(t, e + 1);
			return 1 === n.size() ? n.get(0) : this.createHigherLevels(n, e + 1)
		},
		th.prototype.depth = function() {
			if (0 === arguments.length) return this.isEmpty() ? 0 : (this.build(), this.depth(this._root));
			if (1 === arguments.length) {
				for (var t = 0,
				e = arguments[0].getChildBoundables().iterator(); e.hasNext();) {
					var n = e.next();
					if (n instanceof Zl) {
						var r = this.depth(n);
						r > t && (t = r)
					}
				}
				return t + 1
			}
		},
		th.prototype.createParentBoundables = function(t, e) {
			$u.isTrue(!t.isEmpty());
			var n = new xc;
			n.add(this.createNode(e));
			var r = new xc(t);
			Kl.sort(r, this.getComparator());
			for (var i = r.iterator(); i.hasNext();) {
				var o = i.next();
				this.lastNode(n).getChildBoundables().size() === this.getNodeCapacity() && n.add(this.createNode(e)),
				this.lastNode(n).addChildBoundable(o)
			}
			return n
		},
		th.prototype.isEmpty = function() {
			return this._built ? this._root.isEmpty() : this._itemBoundables.isEmpty()
		},
		th.prototype.interfaces_ = function() {
			return [Pi]
		},
		th.prototype.getClass = function() {
			return th
		},
		th.compareDoubles = function(t, e) {
			return t > e ? 1 : t < e ? -1 : 0
		},
		eh.IntersectsOp.get = function() {
			return nh
		},
		eh.serialVersionUID.get = function() {
			return - 0x35ef64c82d4c5400
		},
		eh.DEFAULT_NODE_CAPACITY.get = function() {
			return 10
		},
		Object.defineProperties(th, eh);
		var nh = function() {},
		rh = function() {};
		rh.prototype.distance = function(t, e) {},
		rh.prototype.interfaces_ = function() {
			return []
		},
		rh.prototype.getClass = function() {
			return rh
		};
		var ih = function(t) {
			function e(n) {
				n = n || e.DEFAULT_NODE_CAPACITY,
				t.call(this, n)
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				STRtreeNode: {
					configurable: !0
				},
				serialVersionUID: {
					configurable: !0
				},
				xComparator: {
					configurable: !0
				},
				yComparator: {
					configurable: !0
				},
				intersectsOp: {
					configurable: !0
				},
				DEFAULT_NODE_CAPACITY: {
					configurable: !0
				}
			};
			return e.prototype.createParentBoundablesFromVerticalSlices = function(t, e) {
				$u.isTrue(t.length > 0);
				for (var n = new xc,
				r = 0; r < t.length; r++) n.addAll(this.createParentBoundablesFromVerticalSlice(t[r], e));
				return n
			},
			e.prototype.createNode = function(t) {
				return new oh(t)
			},
			e.prototype.size = function() {
				return 0 === arguments.length ? t.prototype.size.call(this) : t.prototype.size.apply(this, arguments)
			},
			e.prototype.insert = function() {
				if (2 !== arguments.length) return t.prototype.insert.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1];
				if (e.isNull()) return null;
				t.prototype.insert.call(this, e, n)
			},
			e.prototype.getIntersectsOp = function() {
				return e.intersectsOp
			},
			e.prototype.verticalSlices = function(t, e) {
				for (var n = Math.trunc(Math.ceil(t.size() / e)), r = new Array(e).fill(null), i = t.iterator(), o = 0; o < e; o++) {
					r[o] = new xc;
					for (var s = 0; i.hasNext() && s < n;) {
						var a = i.next();
						r[o].add(a),
						s++
					}
				}
				return r
			},
			e.prototype.query = function() {
				if (1 === arguments.length) {
					var e = arguments[0];
					return t.prototype.query.call(this, e)
				}
				if (2 === arguments.length) {
					var n = arguments[0],
					r = arguments[1];
					t.prototype.query.call(this, n, r)
				} else if (3 === arguments.length) if (Nu(arguments[2], Hl) && arguments[0] instanceof Object && arguments[1] instanceof Zl) {
					var i = arguments[0],
					o = arguments[1],
					s = arguments[2];
					t.prototype.query.call(this, i, o, s)
				} else if (Nu(arguments[2], bc) && arguments[0] instanceof Object && arguments[1] instanceof Zl) {
					var a = arguments[0],
					u = arguments[1],
					c = arguments[2];
					t.prototype.query.call(this, a, u, c)
				}
			},
			e.prototype.getComparator = function() {
				return e.yComparator
			},
			e.prototype.createParentBoundablesFromVerticalSlice = function(e, n) {
				return t.prototype.createParentBoundables.call(this, e, n)
			},
			e.prototype.remove = function() {
				if (2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1];
					return t.prototype.remove.call(this, e, n)
				}
				return t.prototype.remove.apply(this, arguments)
			},
			e.prototype.depth = function() {
				return 0 === arguments.length ? t.prototype.depth.call(this) : t.prototype.depth.apply(this, arguments)
			},
			e.prototype.createParentBoundables = function(t, n) {
				$u.isTrue(!t.isEmpty());
				var r = Math.trunc(Math.ceil(t.size() / this.getNodeCapacity())),
				i = new xc(t);
				Kl.sort(i, e.xComparator);
				var o = this.verticalSlices(i, Math.trunc(Math.ceil(Math.sqrt(r))));
				return this.createParentBoundablesFromVerticalSlices(o, n)
			},
			e.prototype.nearestNeighbour = function() {
				if (1 === arguments.length) {
					if (Nu(arguments[0], rh)) {
						var t = arguments[0],
						n = new $l(this.getRoot(), this.getRoot(), t);
						return this.nearestNeighbour(n)
					}
					if (arguments[0] instanceof $l) {
						var r = arguments[0];
						return this.nearestNeighbour(r, vu.POSITIVE_INFINITY)
					}
				} else if (2 === arguments.length) {
					if (arguments[0] instanceof e && Nu(arguments[1], rh)) {
						var i = arguments[0],
						o = arguments[1],
						s = new $l(this.getRoot(), i.getRoot(), o);
						return this.nearestNeighbour(s)
					}
					if (arguments[0] instanceof $l && "number" == typeof arguments[1]) {
						var a = arguments[0],
						u = arguments[1],
						c = null,
						l = new Wl;
						for (l.add(a); ! l.isEmpty() && u > 0;) {
							var h = l.poll(),
							f = h.getDistance();
							if (f >= u) break;
							h.isLeaves() ? (u = f, c = h) : h.expandToQueue(l, u)
						}
						return [c.getBoundable(0).getItem(), c.getBoundable(1).getItem()]
					}
				} else if (3 === arguments.length) {
					var p = arguments[0],
					d = arguments[1],
					g = arguments[2],
					y = new Vl(p, d),
					v = new $l(this.getRoot(), y, g);
					return this.nearestNeighbour(v)[0]
				}
			},
			e.prototype.interfaces_ = function() {
				return [Jl, Pi]
			},
			e.prototype.getClass = function() {
				return e
			},
			e.centreX = function(t) {
				return e.avg(t.getMinX(), t.getMaxX())
			},
			e.avg = function(t, e) {
				return (t + e) / 2
			},
			e.centreY = function(t) {
				return e.avg(t.getMinY(), t.getMaxY())
			},
			n.STRtreeNode.get = function() {
				return oh
			},
			n.serialVersionUID.get = function() {
				return 0x39920f7d5f261e0
			},
			n.xComparator.get = function() {
				return {
					interfaces_: function() {
						return [bu]
					},
					compare: function(n, r) {
						return t.compareDoubles(e.centreX(n.getBounds()), e.centreX(r.getBounds()))
					}
				}
			},
			n.yComparator.get = function() {
				return {
					interfaces_: function() {
						return [bu]
					},
					compare: function(n, r) {
						return t.compareDoubles(e.centreY(n.getBounds()), e.centreY(r.getBounds()))
					}
				}
			},
			n.intersectsOp.get = function() {
				return {
					interfaces_: function() {
						return [t.IntersectsOp]
					},
					intersects: function(t, e) {
						return t.intersects(e)
					}
				}
			},
			n.DEFAULT_NODE_CAPACITY.get = function() {
				return 10
			},
			Object.defineProperties(e, n),
			e
		} (th),
		oh = function(t) {
			function e() {
				var e = arguments[0];
				t.call(this, e)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.computeBounds = function() {
				for (var t = null,
				e = this.getChildBoundables().iterator(); e.hasNext();) {
					var n = e.next();
					null === t ? t = new Yu(n.getBounds()) : t.expandToInclude(n.getBounds())
				}
				return t
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Zl),
		sh = function() {};
		sh.prototype.interfaces_ = function() {
			return []
		},
		sh.prototype.getClass = function() {
			return sh
		},
		sh.relativeSign = function(t, e) {
			return t < e ? -1 : t > e ? 1 : 0
		},
		sh.compare = function(t, e, n) {
			if (e.equals2D(n)) return 0;
			var r = sh.relativeSign(e.x, n.x),
			i = sh.relativeSign(e.y, n.y);
			switch (t) {
			case 0:
				return sh.compareValue(r, i);
			case 1:
				return sh.compareValue(i, r);
			case 2:
				return sh.compareValue(i, -r);
			case 3:
				return sh.compareValue( - r, i);
			case 4:
				return sh.compareValue( - r, -i);
			case 5:
				return sh.compareValue( - i, -r);
			case 6:
				return sh.compareValue( - i, r);
			case 7:
				return sh.compareValue(r, -i)
			}
			return $u.shouldNeverReachHere("invalid octant value"),
			0
		},
		sh.compareValue = function(t, e) {
			return t < 0 ? -1 : t > 0 ? 1 : e < 0 ? -1 : e > 0 ? 1 : 0
		};
		var ah = function() {
			this._segString = null,
			this.coord = null,
			this.segmentIndex = null,
			this._segmentOctant = null,
			this._isInterior = null;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2],
			r = arguments[3];
			this._segString = t,
			this.coord = new xu(e),
			this.segmentIndex = n,
			this._segmentOctant = r,
			this._isInterior = !e.equals2D(t.getCoordinate(n))
		};
		ah.prototype.getCoordinate = function() {
			return this.coord
		},
		ah.prototype.print = function(t) {
			t.print(this.coord),
			t.print(" seg # = " + this.segmentIndex)
		},
		ah.prototype.compareTo = function(t) {
			var e = t;
			return this.segmentIndex < e.segmentIndex ? -1 : this.segmentIndex > e.segmentIndex ? 1 : this.coord.equals2D(e.coord) ? 0 : sh.compare(this._segmentOctant, this.coord, e.coord)
		},
		ah.prototype.isEndPoint = function(t) {
			return 0 === this.segmentIndex && !this._isInterior || this.segmentIndex === t
		},
		ah.prototype.isInterior = function() {
			return this._isInterior
		},
		ah.prototype.interfaces_ = function() {
			return [_u]
		},
		ah.prototype.getClass = function() {
			return ah
		};
		var uh = function() {
			this._nodeMap = new ji,
			this._edge = null;
			var t = arguments[0];
			this._edge = t
		};
		uh.prototype.getSplitCoordinates = function() {
			var t = new Mc;
			this.addEndpoints();
			for (var e = this.iterator(), n = e.next(); e.hasNext();) {
				var r = e.next();
				this.addEdgeCoordinates(n, r, t),
				n = r
			}
			return t.toCoordinateArray()
		},
		uh.prototype.addCollapsedNodes = function() {
			var t = new xc;
			this.findCollapsesFromInsertedNodes(t),
			this.findCollapsesFromExistingVertices(t);
			for (var e = t.iterator(); e.hasNext();) {
				var n = e.next().intValue();
				this.add(this._edge.getCoordinate(n), n)
			}
		},
		uh.prototype.print = function(t) {
			t.println("Intersections:");
			for (var e = this.iterator(); e.hasNext();) e.next().print(t)
		},
		uh.prototype.findCollapsesFromExistingVertices = function(t) {
			for (var e = 0; e < this._edge.size() - 2; e++) {
				var n = this._edge.getCoordinate(e),
				r = this._edge.getCoordinate(e + 2);
				n.equals2D(r) && t.add(new Ou(e + 1))
			}
		},
		uh.prototype.addEdgeCoordinates = function(t, e, n) {
			var r = this._edge.getCoordinate(e.segmentIndex),
			i = e.isInterior() || !e.coord.equals2D(r);
			n.add(new xu(t.coord), !1);
			for (var o = t.segmentIndex + 1; o <= e.segmentIndex; o++) n.add(this._edge.getCoordinate(o));
			i && n.add(new xu(e.coord))
		},
		uh.prototype.iterator = function() {
			return this._nodeMap.values().iterator()
		},
		uh.prototype.addSplitEdges = function(t) {
			this.addEndpoints(),
			this.addCollapsedNodes();
			for (var e = this.iterator(), n = e.next(); e.hasNext();) {
				var r = e.next(),
				i = this.createSplitEdge(n, r);
				t.add(i),
				n = r
			}
		},
		uh.prototype.findCollapseIndex = function(t, e, n) {
			if (!t.coord.equals2D(e.coord)) return ! 1;
			var r = e.segmentIndex - t.segmentIndex;
			return e.isInterior() || r--,
			1 === r && (n[0] = t.segmentIndex + 1, !0)
		},
		uh.prototype.findCollapsesFromInsertedNodes = function(t) {
			for (var e = new Array(1).fill(null), n = this.iterator(), r = n.next(); n.hasNext();) {
				var i = n.next();
				this.findCollapseIndex(r, i, e) && t.add(new Ou(e[0])),
				r = i
			}
		},
		uh.prototype.getEdge = function() {
			return this._edge
		},
		uh.prototype.addEndpoints = function() {
			var t = this._edge.size() - 1;
			this.add(this._edge.getCoordinate(0), 0),
			this.add(this._edge.getCoordinate(t), t)
		},
		uh.prototype.createSplitEdge = function(t, e) {
			var n = e.segmentIndex - t.segmentIndex + 2,
			r = this._edge.getCoordinate(e.segmentIndex),
			i = e.isInterior() || !e.coord.equals2D(r);
			i || n--;
			var o = new Array(n).fill(null),
			s = 0;
			o[s++] = new xu(t.coord);
			for (var a = t.segmentIndex + 1; a <= e.segmentIndex; a++) o[s++] = this._edge.getCoordinate(a);
			return i && (o[s] = new xu(e.coord)),
			new fh(o, this._edge.getData())
		},
		uh.prototype.add = function(t, e) {
			var n = new ah(this._edge, t, e, this._edge.getSegmentOctant(e)),
			r = this._nodeMap.get(n);
			return null !== r ? ($u.isTrue(r.coord.equals2D(t), "Found equal nodes with different coordinates"), r) : (this._nodeMap.put(n, n), n)
		},
		uh.prototype.checkSplitEdgesCorrectness = function(t) {
			var e = this._edge.getCoordinates(),
			n = t.get(0).getCoordinate(0);
			if (!n.equals2D(e[0])) throw new Qu("bad split edge start point at " + n);
			var r = t.get(t.size() - 1).getCoordinates(),
			i = r[r.length - 1];
			if (!i.equals2D(e[e.length - 1])) throw new Qu("bad split edge end point at " + i)
		},
		uh.prototype.interfaces_ = function() {
			return []
		},
		uh.prototype.getClass = function() {
			return uh
		};
		var ch = function() {};
		ch.prototype.interfaces_ = function() {
			return []
		},
		ch.prototype.getClass = function() {
			return ch
		},
		ch.octant = function() {
			if ("number" == typeof arguments[0] && "number" == typeof arguments[1]) {
				var t = arguments[0],
				e = arguments[1];
				if (0 === t && 0 === e) throw new yu("Cannot compute the octant for point ( " + t + ", " + e + " )");
				var n = Math.abs(t),
				r = Math.abs(e);
				return t >= 0 ? e >= 0 ? n >= r ? 0 : 1 : n >= r ? 7 : 6 : e >= 0 ? n >= r ? 3 : 2 : n >= r ? 4 : 5
			}
			if (arguments[0] instanceof xu && arguments[1] instanceof xu) {
				var i = arguments[0],
				o = arguments[1],
				s = o.x - i.x,
				a = o.y - i.y;
				if (0 === s && 0 === a) throw new yu("Cannot compute the octant for two identical points " + i);
				return ch.octant(s, a)
			}
		};
		var lh = function() {};
		lh.prototype.getCoordinates = function() {},
		lh.prototype.size = function() {},
		lh.prototype.getCoordinate = function(t) {},
		lh.prototype.isClosed = function() {},
		lh.prototype.setData = function(t) {},
		lh.prototype.getData = function() {},
		lh.prototype.interfaces_ = function() {
			return []
		},
		lh.prototype.getClass = function() {
			return lh
		};
		var hh = function() {};
		hh.prototype.addIntersection = function(t, e) {},
		hh.prototype.interfaces_ = function() {
			return [lh]
		},
		hh.prototype.getClass = function() {
			return hh
		};
		var fh = function() {
			this._nodeList = new uh(this),
			this._pts = null,
			this._data = null;
			var t = arguments[0],
			e = arguments[1];
			this._pts = t,
			this._data = e
		};
		fh.prototype.getCoordinates = function() {
			return this._pts
		},
		fh.prototype.size = function() {
			return this._pts.length
		},
		fh.prototype.getCoordinate = function(t) {
			return this._pts[t]
		},
		fh.prototype.isClosed = function() {
			return this._pts[0].equals(this._pts[this._pts.length - 1])
		},
		fh.prototype.getSegmentOctant = function(t) {
			return t === this._pts.length - 1 ? -1 : this.safeOctant(this.getCoordinate(t), this.getCoordinate(t + 1))
		},
		fh.prototype.setData = function(t) {
			this._data = t
		},
		fh.prototype.safeOctant = function(t, e) {
			return t.equals2D(e) ? 0 : ch.octant(t, e)
		},
		fh.prototype.getData = function() {
			return this._data
		},
		fh.prototype.addIntersection = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this.addIntersectionNode(t, e)
			} else if (4 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[3],
				o = new xu(n.getIntersection(i));
				this.addIntersection(o, r)
			}
		},
		fh.prototype.toString = function() {
			return Zu.toLineString(new al(this._pts))
		},
		fh.prototype.getNodeList = function() {
			return this._nodeList
		},
		fh.prototype.addIntersectionNode = function(t, e) {
			var n = e,
			r = n + 1;
			if (r < this._pts.length) {
				var i = this._pts[r];
				t.equals2D(i) && (n = r)
			}
			return this._nodeList.add(t, n)
		},
		fh.prototype.addIntersections = function(t, e, n) {
			for (var r = 0; r < t.getIntersectionNum(); r++) this.addIntersection(t, e, n, r)
		},
		fh.prototype.interfaces_ = function() {
			return [hh]
		},
		fh.prototype.getClass = function() {
			return fh
		},
		fh.getNodedSubstrings = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = new xc;
				return fh.getNodedSubstrings(t, e),
				e
			}
			if (2 === arguments.length) for (var n = arguments[0], r = arguments[1], i = n.iterator(); i.hasNext();) i.next().getNodeList().addSplitEdges(r)
		};
		var ph = function() {
			if (this.p0 = null, this.p1 = null, 0 === arguments.length) this.p0 = new xu,
			this.p1 = new xu;
			else if (1 === arguments.length) {
				var t = arguments[0];
				this.p0 = new xu(t.p0),
				this.p1 = new xu(t.p1)
			} else if (2 === arguments.length) this.p0 = arguments[0],
			this.p1 = arguments[1];
			else if (4 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2],
				i = arguments[3];
				this.p0 = new xu(e, n),
				this.p1 = new xu(r, i)
			}
		},
		dh = {
			serialVersionUID: {
				configurable: !0
			}
		};
		ph.prototype.minX = function() {
			return Math.min(this.p0.x, this.p1.x)
		},
		ph.prototype.orientationIndex = function() {
			if (arguments[0] instanceof ph) {
				var t = arguments[0],
				e = oc.orientationIndex(this.p0, this.p1, t.p0),
				n = oc.orientationIndex(this.p0, this.p1, t.p1);
				return e >= 0 && n >= 0 ? Math.max(e, n) : e <= 0 && n <= 0 ? Math.max(e, n) : 0
			}
			if (arguments[0] instanceof xu) {
				var r = arguments[0];
				return oc.orientationIndex(this.p0, this.p1, r)
			}
		},
		ph.prototype.toGeometry = function(t) {
			return t.createLineString([this.p0, this.p1])
		},
		ph.prototype.isVertical = function() {
			return this.p0.x === this.p1.x
		},
		ph.prototype.equals = function(t) {
			if (! (t instanceof ph)) return ! 1;
			var e = t;
			return this.p0.equals(e.p0) && this.p1.equals(e.p1)
		},
		ph.prototype.intersection = function(t) {
			var e = new nc;
			return e.computeIntersection(this.p0, this.p1, t.p0, t.p1),
			e.hasIntersection() ? e.getIntersection(0) : null
		},
		ph.prototype.project = function() {
			if (arguments[0] instanceof xu) {
				var t = arguments[0];
				if (t.equals(this.p0) || t.equals(this.p1)) return new xu(t);
				var e = this.projectionFactor(t),
				n = new xu;
				return n.x = this.p0.x + e * (this.p1.x - this.p0.x),
				n.y = this.p0.y + e * (this.p1.y - this.p0.y),
				n
			}
			if (arguments[0] instanceof ph) {
				var r = arguments[0],
				i = this.projectionFactor(r.p0),
				o = this.projectionFactor(r.p1);
				if (i >= 1 && o >= 1) return null;
				if (i <= 0 && o <= 0) return null;
				var s = this.project(r.p0);
				i < 0 && (s = this.p0),
				i > 1 && (s = this.p1);
				var a = this.project(r.p1);
				return o < 0 && (a = this.p0),
				o > 1 && (a = this.p1),
				new ph(s, a)
			}
		},
		ph.prototype.normalize = function() {
			this.p1.compareTo(this.p0) < 0 && this.reverse()
		},
		ph.prototype.angle = function() {
			return Math.atan2(this.p1.y - this.p0.y, this.p1.x - this.p0.x)
		},
		ph.prototype.getCoordinate = function(t) {
			return 0 === t ? this.p0: this.p1
		},
		ph.prototype.distancePerpendicular = function(t) {
			return oc.distancePointLinePerpendicular(t, this.p0, this.p1)
		},
		ph.prototype.minY = function() {
			return Math.min(this.p0.y, this.p1.y)
		},
		ph.prototype.midPoint = function() {
			return ph.midPoint(this.p0, this.p1)
		},
		ph.prototype.projectionFactor = function(t) {
			if (t.equals(this.p0)) return 0;
			if (t.equals(this.p1)) return 1;
			var e = this.p1.x - this.p0.x,
			n = this.p1.y - this.p0.y,
			r = e * e + n * n;
			return r <= 0 ? vu.NaN: ((t.x - this.p0.x) * e + (t.y - this.p0.y) * n) / r
		},
		ph.prototype.closestPoints = function(t) {
			var e = this.intersection(t);
			if (null !== e) return [e, e];
			var n = new Array(2).fill(null),
			r = vu.MAX_VALUE,
			i = null,
			o = this.closestPoint(t.p0);
			r = o.distance(t.p0),
			n[0] = o,
			n[1] = t.p0;
			var s = this.closestPoint(t.p1); (i = s.distance(t.p1)) < r && (r = i, n[0] = s, n[1] = t.p1);
			var a = t.closestPoint(this.p0); (i = a.distance(this.p0)) < r && (r = i, n[0] = this.p0, n[1] = a);
			var u = t.closestPoint(this.p1);
			return (i = u.distance(this.p1)) < r && (r = i, n[0] = this.p1, n[1] = u),
			n
		},
		ph.prototype.closestPoint = function(t) {
			var e = this.projectionFactor(t);
			return e > 0 && e < 1 ? this.project(t) : this.p0.distance(t) < this.p1.distance(t) ? this.p0: this.p1
		},
		ph.prototype.maxX = function() {
			return Math.max(this.p0.x, this.p1.x)
		},
		ph.prototype.getLength = function() {
			return this.p0.distance(this.p1)
		},
		ph.prototype.compareTo = function(t) {
			var e = t,
			n = this.p0.compareTo(e.p0);
			return 0 !== n ? n: this.p1.compareTo(e.p1)
		},
		ph.prototype.reverse = function() {
			var t = this.p0;
			this.p0 = this.p1,
			this.p1 = t
		},
		ph.prototype.equalsTopo = function(t) {
			return this.p0.equals(t.p0) && (this.p1.equals(t.p1) || this.p0.equals(t.p1)) && this.p1.equals(t.p0)
		},
		ph.prototype.lineIntersection = function(t) {
			try {
				return zu.intersection(this.p0, this.p1, t.p0, t.p1)
			} catch(t) {
				if (! (t instanceof Gu)) throw t
			}
			return null
		},
		ph.prototype.maxY = function() {
			return Math.max(this.p0.y, this.p1.y)
		},
		ph.prototype.pointAlongOffset = function(t, e) {
			var n = this.p0.x + t * (this.p1.x - this.p0.x),
			r = this.p0.y + t * (this.p1.y - this.p0.y),
			i = this.p1.x - this.p0.x,
			o = this.p1.y - this.p0.y,
			s = Math.sqrt(i * i + o * o),
			a = 0,
			u = 0;
			if (0 !== e) {
				if (s <= 0) throw new Error("Cannot compute offset from zero-length line segment");
				a = e * i / s,
				u = e * o / s
			}
			return new xu(n - u, r + a)
		},
		ph.prototype.setCoordinates = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setCoordinates(t.p0, t.p1)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this.p0.x = e.x,
				this.p0.y = e.y,
				this.p1.x = n.x,
				this.p1.y = n.y
			}
		},
		ph.prototype.segmentFraction = function(t) {
			var e = this.projectionFactor(t);
			return e < 0 ? e = 0 : (e > 1 || vu.isNaN(e)) && (e = 1),
			e
		},
		ph.prototype.toString = function() {
			return "LINESTRING( " + this.p0.x + " " + this.p0.y + ", " + this.p1.x + " " + this.p1.y + ")"
		},
		ph.prototype.isHorizontal = function() {
			return this.p0.y === this.p1.y
		},
		ph.prototype.distance = function() {
			if (arguments[0] instanceof ph) {
				var t = arguments[0];
				return oc.distanceLineLine(this.p0, this.p1, t.p0, t.p1)
			}
			if (arguments[0] instanceof xu) {
				var e = arguments[0];
				return oc.distancePointLine(e, this.p0, this.p1)
			}
		},
		ph.prototype.pointAlong = function(t) {
			var e = new xu;
			return e.x = this.p0.x + t * (this.p1.x - this.p0.x),
			e.y = this.p0.y + t * (this.p1.y - this.p0.y),
			e
		},
		ph.prototype.hashCode = function() {
			var t = vu.doubleToLongBits(this.p0.x);
			t ^= 31 * vu.doubleToLongBits(this.p0.y);
			var e = Math.trunc(t) ^ Math.trunc(t >> 32),
			n = vu.doubleToLongBits(this.p1.x);
			return n ^= 31 * vu.doubleToLongBits(this.p1.y),
			e ^ Math.trunc(n) ^ Math.trunc(n >> 32)
		},
		ph.prototype.interfaces_ = function() {
			return [_u, Pi]
		},
		ph.prototype.getClass = function() {
			return ph
		},
		ph.midPoint = function(t, e) {
			return new xu((t.x + e.x) / 2, (t.y + e.y) / 2)
		},
		dh.serialVersionUID.get = function() {
			return 0x2d2172135f411c00
		},
		Object.defineProperties(ph, dh);
		var gh = function() {
			this.tempEnv1 = new Yu,
			this.tempEnv2 = new Yu,
			this._overlapSeg1 = new ph,
			this._overlapSeg2 = new ph
		};
		gh.prototype.overlap = function() {
			if (2 === arguments.length);
			else if (4 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2],
				r = arguments[3];
				t.getLineSegment(e, this._overlapSeg1),
				n.getLineSegment(r, this._overlapSeg2),
				this.overlap(this._overlapSeg1, this._overlapSeg2)
			}
		},
		gh.prototype.interfaces_ = function() {
			return []
		},
		gh.prototype.getClass = function() {
			return gh
		};
		var yh = function() {
			this._pts = null,
			this._start = null,
			this._end = null,
			this._env = null,
			this._context = null,
			this._id = null;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2],
			r = arguments[3];
			this._pts = t,
			this._start = e,
			this._end = n,
			this._context = r
		};
		yh.prototype.getLineSegment = function(t, e) {
			e.p0 = this._pts[t],
			e.p1 = this._pts[t + 1]
		},
		yh.prototype.computeSelect = function(t, e, n, r) {
			var i = this._pts[e],
			o = this._pts[n];
			if (r.tempEnv1.init(i, o), n - e == 1) return r.select(this, e),
			null;
			if (!t.intersects(r.tempEnv1)) return null;
			var s = Math.trunc((e + n) / 2);
			e < s && this.computeSelect(t, e, s, r),
			s < n && this.computeSelect(t, s, n, r)
		},
		yh.prototype.getCoordinates = function() {
			for (var t = new Array(this._end - this._start + 1).fill(null), e = 0, n = this._start; n <= this._end; n++) t[e++] = this._pts[n];
			return t
		},
		yh.prototype.computeOverlaps = function(t, e) {
			this.computeOverlapsInternal(this._start, this._end, t, t._start, t._end, e)
		},
		yh.prototype.setId = function(t) {
			this._id = t
		},
		yh.prototype.select = function(t, e) {
			this.computeSelect(t, this._start, this._end, e)
		},
		yh.prototype.getEnvelope = function() {
			if (null === this._env) {
				var t = this._pts[this._start],
				e = this._pts[this._end];
				this._env = new Yu(t, e)
			}
			return this._env
		},
		yh.prototype.getEndIndex = function() {
			return this._end
		},
		yh.prototype.getStartIndex = function() {
			return this._start
		},
		yh.prototype.getContext = function() {
			return this._context
		},
		yh.prototype.getId = function() {
			return this._id
		},
		yh.prototype.computeOverlapsInternal = function(t, e, n, r, i, o) {
			var s = this._pts[t],
			a = this._pts[e],
			u = n._pts[r],
			c = n._pts[i];
			if (e - t == 1 && i - r == 1) return o.overlap(this, t, n, r),
			null;
			if (o.tempEnv1.init(s, a), o.tempEnv2.init(u, c), !o.tempEnv1.intersects(o.tempEnv2)) return null;
			var l = Math.trunc((t + e) / 2),
			h = Math.trunc((r + i) / 2);
			t < l && (r < h && this.computeOverlapsInternal(t, l, n, r, h, o), h < i && this.computeOverlapsInternal(t, l, n, h, i, o)),
			l < e && (r < h && this.computeOverlapsInternal(l, e, n, r, h, o), h < i && this.computeOverlapsInternal(l, e, n, h, i, o))
		},
		yh.prototype.interfaces_ = function() {
			return []
		},
		yh.prototype.getClass = function() {
			return yh
		};
		var vh = function() {};
		vh.prototype.interfaces_ = function() {
			return []
		},
		vh.prototype.getClass = function() {
			return vh
		},
		vh.getChainStartIndices = function(t) {
			var e = 0,
			n = new xc;
			n.add(new Ou(e));
			do {
				var r = vh.findChainEnd(t, e);
				n.add(new Ou(r)), e = r
			} while ( e < t . length - 1 );
			return vh.toIntArray(n)
		},
		vh.findChainEnd = function(t, e) {
			for (var n = e; n < t.length - 1 && t[n].equals2D(t[n + 1]);) n++;
			if (n >= t.length - 1) return t.length - 1;
			for (var r = jl.quadrant(t[n], t[n + 1]), i = e + 1; i < t.length && (t[i - 1].equals2D(t[i]) || jl.quadrant(t[i - 1], t[i]) === r);) i++;
			return i - 1
		},
		vh.getChains = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return vh.getChains(t, null)
			}
			if (2 === arguments.length) {
				for (var e = arguments[0], n = arguments[1], r = new xc, i = vh.getChainStartIndices(e), o = 0; o < i.length - 1; o++) {
					var s = new yh(e, i[o], i[o + 1], n);
					r.add(s)
				}
				return r
			}
		},
		vh.toIntArray = function(t) {
			for (var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++) e[n] = t.get(n).intValue();
			return e
		};
		var mh = function() {};
		mh.prototype.computeNodes = function(t) {},
		mh.prototype.getNodedSubstrings = function() {},
		mh.prototype.interfaces_ = function() {
			return []
		},
		mh.prototype.getClass = function() {
			return mh
		};
		var _h = function() {
			if (this._segInt = null, 0 === arguments.length);
			else if (1 === arguments.length) {
				var t = arguments[0];
				this.setSegmentIntersector(t)
			}
		};
		_h.prototype.setSegmentIntersector = function(t) {
			this._segInt = t
		},
		_h.prototype.interfaces_ = function() {
			return [mh]
		},
		_h.prototype.getClass = function() {
			return _h
		};
		var wh = function(t) {
			function e(e) {
				e ? t.call(this, e) : t.call(this),
				this._monoChains = new xc,
				this._index = new ih,
				this._idCounter = 0,
				this._nodedSegStrings = null,
				this._nOverlaps = 0
			}
			t && (e.__proto__ = t),
			(e.prototype = Object.create(t && t.prototype)).constructor = e;
			var n = {
				SegmentOverlapAction: {
					configurable: !0
				}
			};
			return e.prototype.getMonotoneChains = function() {
				return this._monoChains
			},
			e.prototype.getNodedSubstrings = function() {
				return fh.getNodedSubstrings(this._nodedSegStrings)
			},
			e.prototype.getIndex = function() {
				return this._index
			},
			e.prototype.add = function(t) {
				for (var e = vh.getChains(t.getCoordinates(), t).iterator(); e.hasNext();) {
					var n = e.next();
					n.setId(this._idCounter++),
					this._index.insert(n.getEnvelope(), n),
					this._monoChains.add(n)
				}
			},
			e.prototype.computeNodes = function(t) {
				this._nodedSegStrings = t;
				for (var e = t.iterator(); e.hasNext();) this.add(e.next());
				this.intersectChains()
			},
			e.prototype.intersectChains = function() {
				for (var t = new bh(this._segInt), e = this._monoChains.iterator(); e.hasNext();) for (var n = e.next(), r = this._index.query(n.getEnvelope()).iterator(); r.hasNext();) {
					var i = r.next();
					if (i.getId() > n.getId() && (n.computeOverlaps(i, t), this._nOverlaps++), this._segInt.isDone()) return null
				}
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			n.SegmentOverlapAction.get = function() {
				return bh
			},
			Object.defineProperties(e, n),
			e
		} (_h),
		bh = function(t) {
			function e() {
				t.call(this),
				this._si = null;
				var e = arguments[0];
				this._si = e
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.overlap = function() {
				if (4 !== arguments.length) return t.prototype.overlap.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2],
				i = arguments[3],
				o = e.getContext(),
				s = r.getContext();
				this._si.processIntersections(o, n, s, i)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (gh),
		xh = function t() {
			if (this._quadrantSegments = t.DEFAULT_QUADRANT_SEGMENTS, this._endCapStyle = t.CAP_ROUND, this._joinStyle = t.JOIN_ROUND, this._mitreLimit = t.DEFAULT_MITRE_LIMIT, this._isSingleSided = !1, this._simplifyFactor = t.DEFAULT_SIMPLIFY_FACTOR, 0 === arguments.length);
			else if (1 === arguments.length) {
				var e = arguments[0];
				this.setQuadrantSegments(e)
			} else if (2 === arguments.length) {
				var n = arguments[0],
				r = arguments[1];
				this.setQuadrantSegments(n),
				this.setEndCapStyle(r)
			} else if (4 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2],
				a = arguments[3];
				this.setQuadrantSegments(i),
				this.setEndCapStyle(o),
				this.setJoinStyle(s),
				this.setMitreLimit(a)
			}
		},
		Eh = {
			CAP_ROUND: {
				configurable: !0
			},
			CAP_FLAT: {
				configurable: !0
			},
			CAP_SQUARE: {
				configurable: !0
			},
			JOIN_ROUND: {
				configurable: !0
			},
			JOIN_MITRE: {
				configurable: !0
			},
			JOIN_BEVEL: {
				configurable: !0
			},
			DEFAULT_QUADRANT_SEGMENTS: {
				configurable: !0
			},
			DEFAULT_MITRE_LIMIT: {
				configurable: !0
			},
			DEFAULT_SIMPLIFY_FACTOR: {
				configurable: !0
			}
		};
		xh.prototype.getEndCapStyle = function() {
			return this._endCapStyle
		},
		xh.prototype.isSingleSided = function() {
			return this._isSingleSided
		},
		xh.prototype.setQuadrantSegments = function(t) {
			this._quadrantSegments = t,
			0 === this._quadrantSegments && (this._joinStyle = xh.JOIN_BEVEL),
			this._quadrantSegments < 0 && (this._joinStyle = xh.JOIN_MITRE, this._mitreLimit = Math.abs(this._quadrantSegments)),
			t <= 0 && (this._quadrantSegments = 1),
			this._joinStyle !== xh.JOIN_ROUND && (this._quadrantSegments = xh.DEFAULT_QUADRANT_SEGMENTS)
		},
		xh.prototype.getJoinStyle = function() {
			return this._joinStyle
		},
		xh.prototype.setJoinStyle = function(t) {
			this._joinStyle = t
		},
		xh.prototype.setSimplifyFactor = function(t) {
			this._simplifyFactor = t < 0 ? 0 : t
		},
		xh.prototype.getSimplifyFactor = function() {
			return this._simplifyFactor
		},
		xh.prototype.getQuadrantSegments = function() {
			return this._quadrantSegments
		},
		xh.prototype.setEndCapStyle = function(t) {
			this._endCapStyle = t
		},
		xh.prototype.getMitreLimit = function() {
			return this._mitreLimit
		},
		xh.prototype.setMitreLimit = function(t) {
			this._mitreLimit = t
		},
		xh.prototype.setSingleSided = function(t) {
			this._isSingleSided = t
		},
		xh.prototype.interfaces_ = function() {
			return []
		},
		xh.prototype.getClass = function() {
			return xh
		},
		xh.bufferDistanceError = function(t) {
			var e = Math.PI / 2 / t;
			return 1 - Math.cos(e / 2)
		},
		Eh.CAP_ROUND.get = function() {
			return 1
		},
		Eh.CAP_FLAT.get = function() {
			return 2
		},
		Eh.CAP_SQUARE.get = function() {
			return 3
		},
		Eh.JOIN_ROUND.get = function() {
			return 1
		},
		Eh.JOIN_MITRE.get = function() {
			return 2
		},
		Eh.JOIN_BEVEL.get = function() {
			return 3
		},
		Eh.DEFAULT_QUADRANT_SEGMENTS.get = function() {
			return 8
		},
		Eh.DEFAULT_MITRE_LIMIT.get = function() {
			return 5
		},
		Eh.DEFAULT_SIMPLIFY_FACTOR.get = function() {
			return.01
		},
		Object.defineProperties(xh, Eh);
		var Mh = function(t) {
			this._distanceTol = null,
			this._isDeleted = null,
			this._angleOrientation = oc.COUNTERCLOCKWISE,
			this._inputLine = t || null
		},
		Ih = {
			INIT: {
				configurable: !0
			},
			DELETE: {
				configurable: !0
			},
			KEEP: {
				configurable: !0
			},
			NUM_PTS_TO_CHECK: {
				configurable: !0
			}
		};
		Mh.prototype.isDeletable = function(t, e, n, r) {
			var i = this._inputLine[t],
			o = this._inputLine[e],
			s = this._inputLine[n];
			return !! this.isConcave(i, o, s) && !!this.isShallow(i, o, s, r) && this.isShallowSampled(i, o, t, n, r)
		},
		Mh.prototype.deleteShallowConcavities = function() {
			for (var t = 1,
			e = this.findNextNonDeletedIndex(t), n = this.findNextNonDeletedIndex(e), r = !1; n < this._inputLine.length;) {
				var i = !1;
				this.isDeletable(t, e, n, this._distanceTol) && (this._isDeleted[e] = Mh.DELETE, i = !0, r = !0),
				t = i ? n: e,
				e = this.findNextNonDeletedIndex(t),
				n = this.findNextNonDeletedIndex(e)
			}
			return r
		},
		Mh.prototype.isShallowConcavity = function(t, e, n, r) {
			return oc.computeOrientation(t, e, n) === this._angleOrientation && oc.distancePointLine(e, t, n) < r
		},
		Mh.prototype.isShallowSampled = function(t, e, n, r, i) {
			var o = Math.trunc((r - n) / Mh.NUM_PTS_TO_CHECK);
			o <= 0 && (o = 1);
			for (var s = n; s < r; s += o) if (!this.isShallow(t, e, this._inputLine[s], i)) return ! 1;
			return ! 0
		},
		Mh.prototype.isConcave = function(t, e, n) {
			return oc.computeOrientation(t, e, n) === this._angleOrientation
		},
		Mh.prototype.simplify = function(t) {
			this._distanceTol = Math.abs(t),
			t < 0 && (this._angleOrientation = oc.CLOCKWISE),
			this._isDeleted = new Array(this._inputLine.length).fill(null);
			var e = !1;
			do {
				e = this.deleteShallowConcavities()
			} while ( e );
			return this.collapseLine()
		},
		Mh.prototype.findNextNonDeletedIndex = function(t) {
			for (var e = t + 1; e < this._inputLine.length && this._isDeleted[e] === Mh.DELETE;) e++;
			return e
		},
		Mh.prototype.isShallow = function(t, e, n, r) {
			return oc.distancePointLine(e, t, n) < r
		},
		Mh.prototype.collapseLine = function() {
			for (var t = new Mc,
			e = 0; e < this._inputLine.length; e++) this._isDeleted[e] !== Mh.DELETE && t.add(this._inputLine[e]);
			return t.toCoordinateArray()
		},
		Mh.prototype.interfaces_ = function() {
			return []
		},
		Mh.prototype.getClass = function() {
			return Mh
		},
		Mh.simplify = function(t, e) {
			return new Mh(t).simplify(e)
		},
		Ih.INIT.get = function() {
			return 0
		},
		Ih.DELETE.get = function() {
			return 1
		},
		Ih.KEEP.get = function() {
			return 1
		},
		Ih.NUM_PTS_TO_CHECK.get = function() {
			return 10
		},
		Object.defineProperties(Mh, Ih);
		var Sh = function() {
			this._ptList = null,
			this._precisionModel = null,
			this._minimimVertexDistance = 0,
			this._ptList = new xc
		},
		Ch = {
			COORDINATE_ARRAY_TYPE: {
				configurable: !0
			}
		};
		Sh.prototype.getCoordinates = function() {
			return this._ptList.toArray(Sh.COORDINATE_ARRAY_TYPE)
		},
		Sh.prototype.setPrecisionModel = function(t) {
			this._precisionModel = t
		},
		Sh.prototype.addPt = function(t) {
			var e = new xu(t);
			if (this._precisionModel.makePrecise(e), this.isRedundant(e)) return null;
			this._ptList.add(e)
		},
		Sh.prototype.revere = function() {},
		Sh.prototype.addPts = function(t, e) {
			if (e) for (var n = 0; n < t.length; n++) this.addPt(t[n]);
			else for (var r = t.length - 1; r >= 0; r--) this.addPt(t[r])
		},
		Sh.prototype.isRedundant = function(t) {
			if (this._ptList.size() < 1) return ! 1;
			var e = this._ptList.get(this._ptList.size() - 1);
			return t.distance(e) < this._minimimVertexDistance
		},
		Sh.prototype.toString = function() {
			return (new yl).createLineString(this.getCoordinates()).toString()
		},
		Sh.prototype.closeRing = function() {
			if (this._ptList.size() < 1) return null;
			var t = new xu(this._ptList.get(0)),
			e = this._ptList.get(this._ptList.size() - 1);
			if (t.equals(e)) return null;
			this._ptList.add(t)
		},
		Sh.prototype.setMinimumVertexDistance = function(t) {
			this._minimimVertexDistance = t
		},
		Sh.prototype.interfaces_ = function() {
			return []
		},
		Sh.prototype.getClass = function() {
			return Sh
		},
		Ch.COORDINATE_ARRAY_TYPE.get = function() {
			return new Array(0).fill(null)
		},
		Object.defineProperties(Sh, Ch);
		var Nh = function() {},
		Ph = {
			PI_TIMES_2: {
				configurable: !0
			},
			PI_OVER_2: {
				configurable: !0
			},
			PI_OVER_4: {
				configurable: !0
			},
			COUNTERCLOCKWISE: {
				configurable: !0
			},
			CLOCKWISE: {
				configurable: !0
			},
			NONE: {
				configurable: !0
			}
		};
		Nh.prototype.interfaces_ = function() {
			return []
		},
		Nh.prototype.getClass = function() {
			return Nh
		},
		Nh.toDegrees = function(t) {
			return 180 * t / Math.PI
		},
		Nh.normalize = function(t) {
			for (; t > Math.PI;) t -= Nh.PI_TIMES_2;
			for (; t <= -Math.PI;) t += Nh.PI_TIMES_2;
			return t
		},
		Nh.angle = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return Math.atan2(t.y, t.x)
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = n.x - e.x,
				i = n.y - e.y;
				return Math.atan2(i, r)
			}
		},
		Nh.isAcute = function(t, e, n) {
			var r = t.x - e.x,
			i = t.y - e.y;
			return r * (n.x - e.x) + i * (n.y - e.y) > 0
		},
		Nh.isObtuse = function(t, e, n) {
			var r = t.x - e.x,
			i = t.y - e.y;
			return r * (n.x - e.x) + i * (n.y - e.y) < 0
		},
		Nh.interiorAngle = function(t, e, n) {
			var r = Nh.angle(e, t),
			i = Nh.angle(e, n);
			return Math.abs(i - r)
		},
		Nh.normalizePositive = function(t) {
			if (t < 0) {
				for (; t < 0;) t += Nh.PI_TIMES_2;
				t >= Nh.PI_TIMES_2 && (t = 0)
			} else {
				for (; t >= Nh.PI_TIMES_2;) t -= Nh.PI_TIMES_2;
				t < 0 && (t = 0)
			}
			return t
		},
		Nh.angleBetween = function(t, e, n) {
			var r = Nh.angle(e, t),
			i = Nh.angle(e, n);
			return Nh.diff(r, i)
		},
		Nh.diff = function(t, e) {
			var n = null;
			return (n = t < e ? e - t: t - e) > Math.PI && (n = 2 * Math.PI - n),
			n
		},
		Nh.toRadians = function(t) {
			return t * Math.PI / 180
		},
		Nh.getTurn = function(t, e) {
			var n = Math.sin(e - t);
			return n > 0 ? Nh.COUNTERCLOCKWISE: n < 0 ? Nh.CLOCKWISE: Nh.NONE
		},
		Nh.angleBetweenOriented = function(t, e, n) {
			var r = Nh.angle(e, t),
			i = Nh.angle(e, n) - r;
			return i <= -Math.PI ? i + Nh.PI_TIMES_2: i > Math.PI ? i - Nh.PI_TIMES_2: i
		},
		Ph.PI_TIMES_2.get = function() {
			return 2 * Math.PI
		},
		Ph.PI_OVER_2.get = function() {
			return Math.PI / 2
		},
		Ph.PI_OVER_4.get = function() {
			return Math.PI / 4
		},
		Ph.COUNTERCLOCKWISE.get = function() {
			return oc.COUNTERCLOCKWISE
		},
		Ph.CLOCKWISE.get = function() {
			return oc.CLOCKWISE
		},
		Ph.NONE.get = function() {
			return oc.COLLINEAR
		},
		Object.defineProperties(Nh, Ph);
		var Lh = function t() {
			this._maxCurveSegmentError = 0,
			this._filletAngleQuantum = null,
			this._closingSegLengthFactor = 1,
			this._segList = null,
			this._distance = 0,
			this._precisionModel = null,
			this._bufParams = null,
			this._li = null,
			this._s0 = null,
			this._s1 = null,
			this._s2 = null,
			this._seg0 = new ph,
			this._seg1 = new ph,
			this._offset0 = new ph,
			this._offset1 = new ph,
			this._side = 0,
			this._hasNarrowConcaveAngle = !1;
			var e = arguments[0],
			n = arguments[1],
			r = arguments[2];
			this._precisionModel = e,
			this._bufParams = n,
			this._li = new nc,
			this._filletAngleQuantum = Math.PI / 2 / n.getQuadrantSegments(),
			n.getQuadrantSegments() >= 8 && n.getJoinStyle() === xh.JOIN_ROUND && (this._closingSegLengthFactor = t.MAX_CLOSING_SEG_LEN_FACTOR),
			this.init(r)
		},
		Ah = {
			OFFSET_SEGMENT_SEPARATION_FACTOR: {
				configurable: !0
			},
			INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR: {
				configurable: !0
			},
			CURVE_VERTEX_SNAP_DISTANCE_FACTOR: {
				configurable: !0
			},
			MAX_CLOSING_SEG_LEN_FACTOR: {
				configurable: !0
			}
		};
		Lh.prototype.addNextSegment = function(t, e) {
			if (this._s0 = this._s1, this._s1 = this._s2, this._s2 = t, this._seg0.setCoordinates(this._s0, this._s1), this.computeOffsetSegment(this._seg0, this._side, this._distance, this._offset0), this._seg1.setCoordinates(this._s1, this._s2), this.computeOffsetSegment(this._seg1, this._side, this._distance, this._offset1), this._s1.equals(this._s2)) return null;
			var n = oc.computeOrientation(this._s0, this._s1, this._s2),
			r = n === oc.CLOCKWISE && this._side === Ml.LEFT || n === oc.COUNTERCLOCKWISE && this._side === Ml.RIGHT;
			0 === n ? this.addCollinear(e) : r ? this.addOutsideTurn(n, e) : this.addInsideTurn(n, e)
		},
		Lh.prototype.addLineEndCap = function(t, e) {
			var n = new ph(t, e),
			r = new ph;
			this.computeOffsetSegment(n, Ml.LEFT, this._distance, r);
			var i = new ph;
			this.computeOffsetSegment(n, Ml.RIGHT, this._distance, i);
			var o = e.x - t.x,
			s = e.y - t.y,
			a = Math.atan2(s, o);
			switch (this._bufParams.getEndCapStyle()) {
			case xh.CAP_ROUND:
				this._segList.addPt(r.p1),
				this.addFilletArc(e, a + Math.PI / 2, a - Math.PI / 2, oc.CLOCKWISE, this._distance),
				this._segList.addPt(i.p1);
				break;
			case xh.CAP_FLAT:
				this._segList.addPt(r.p1),
				this._segList.addPt(i.p1);
				break;
			case xh.CAP_SQUARE:
				var u = new xu;
				u.x = Math.abs(this._distance) * Math.cos(a),
				u.y = Math.abs(this._distance) * Math.sin(a);
				var c = new xu(r.p1.x + u.x, r.p1.y + u.y),
				l = new xu(i.p1.x + u.x, i.p1.y + u.y);
				this._segList.addPt(c),
				this._segList.addPt(l)
			}
		},
		Lh.prototype.getCoordinates = function() {
			return this._segList.getCoordinates()
		},
		Lh.prototype.addMitreJoin = function(t, e, n, r) {
			var i = !0,
			o = null;
			try {
				o = zu.intersection(e.p0, e.p1, n.p0, n.p1),
				(r <= 0 ? 1 : o.distance(t) / Math.abs(r)) > this._bufParams.getMitreLimit() && (i = !1)
			} catch(t) {
				if (! (t instanceof Gu)) throw t;
				o = new xu(0, 0),
				i = !1
			}
			i ? this._segList.addPt(o) : this.addLimitedMitreJoin(e, n, r, this._bufParams.getMitreLimit())
		},
		Lh.prototype.addFilletCorner = function(t, e, n, r, i) {
			var o = e.x - t.x,
			s = e.y - t.y,
			a = Math.atan2(s, o),
			u = n.x - t.x,
			c = n.y - t.y,
			l = Math.atan2(c, u);
			r === oc.CLOCKWISE ? a <= l && (a += 2 * Math.PI) : a >= l && (a -= 2 * Math.PI),
			this._segList.addPt(e),
			this.addFilletArc(t, a, l, r, i),
			this._segList.addPt(n)
		},
		Lh.prototype.addOutsideTurn = function(t, e) {
			if (this._offset0.p1.distance(this._offset1.p0) < this._distance * Lh.OFFSET_SEGMENT_SEPARATION_FACTOR) return this._segList.addPt(this._offset0.p1),
			null;
			this._bufParams.getJoinStyle() === xh.JOIN_MITRE ? this.addMitreJoin(this._s1, this._offset0, this._offset1, this._distance) : this._bufParams.getJoinStyle() === xh.JOIN_BEVEL ? this.addBevelJoin(this._offset0, this._offset1) : (e && this._segList.addPt(this._offset0.p1), this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, t, this._distance), this._segList.addPt(this._offset1.p0))
		},
		Lh.prototype.createSquare = function(t) {
			this._segList.addPt(new xu(t.x + this._distance, t.y + this._distance)),
			this._segList.addPt(new xu(t.x + this._distance, t.y - this._distance)),
			this._segList.addPt(new xu(t.x - this._distance, t.y - this._distance)),
			this._segList.addPt(new xu(t.x - this._distance, t.y + this._distance)),
			this._segList.closeRing()
		},
		Lh.prototype.addSegments = function(t, e) {
			this._segList.addPts(t, e)
		},
		Lh.prototype.addFirstSegment = function() {
			this._segList.addPt(this._offset1.p0)
		},
		Lh.prototype.addLastSegment = function() {
			this._segList.addPt(this._offset1.p1)
		},
		Lh.prototype.initSideSegments = function(t, e, n) {
			this._s1 = t,
			this._s2 = e,
			this._side = n,
			this._seg1.setCoordinates(t, e),
			this.computeOffsetSegment(this._seg1, n, this._distance, this._offset1)
		},
		Lh.prototype.addLimitedMitreJoin = function(t, e, n, r) {
			var i = this._seg0.p1,
			o = Nh.angle(i, this._seg0.p0),
			s = Nh.angleBetweenOriented(this._seg0.p0, i, this._seg1.p1) / 2,
			a = Nh.normalize(o + s),
			u = Nh.normalize(a + Math.PI),
			c = r * n,
			l = n - c * Math.abs(Math.sin(s)),
			h = i.x + c * Math.cos(u),
			f = i.y + c * Math.sin(u),
			p = new xu(h, f),
			d = new ph(i, p),
			g = d.pointAlongOffset(1, l),
			y = d.pointAlongOffset(1, -l);
			this._side === Ml.LEFT ? (this._segList.addPt(g), this._segList.addPt(y)) : (this._segList.addPt(y), this._segList.addPt(g))
		},
		Lh.prototype.computeOffsetSegment = function(t, e, n, r) {
			var i = e === Ml.LEFT ? 1 : -1,
			o = t.p1.x - t.p0.x,
			s = t.p1.y - t.p0.y,
			a = Math.sqrt(o * o + s * s),
			u = i * n * o / a,
			c = i * n * s / a;
			r.p0.x = t.p0.x - c,
			r.p0.y = t.p0.y + u,
			r.p1.x = t.p1.x - c,
			r.p1.y = t.p1.y + u
		},
		Lh.prototype.addFilletArc = function(t, e, n, r, i) {
			var o = r === oc.CLOCKWISE ? -1 : 1,
			s = Math.abs(e - n),
			a = Math.trunc(s / this._filletAngleQuantum + .5);
			if (a < 1) return null;
			for (var u = s / a,
			c = 0,
			l = new xu; c < s;) {
				var h = e + o * c;
				l.x = t.x + i * Math.cos(h),
				l.y = t.y + i * Math.sin(h),
				this._segList.addPt(l),
				c += u
			}
		},
		Lh.prototype.addInsideTurn = function(t, e) {
			if (this._li.computeIntersection(this._offset0.p0, this._offset0.p1, this._offset1.p0, this._offset1.p1), this._li.hasIntersection()) this._segList.addPt(this._li.getIntersection(0));
			else if (this._hasNarrowConcaveAngle = !0, this._offset0.p1.distance(this._offset1.p0) < this._distance * Lh.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR) this._segList.addPt(this._offset0.p1);
			else {
				if (this._segList.addPt(this._offset0.p1), this._closingSegLengthFactor > 0) {
					var n = new xu((this._closingSegLengthFactor * this._offset0.p1.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset0.p1.y + this._s1.y) / (this._closingSegLengthFactor + 1));
					this._segList.addPt(n);
					var r = new xu((this._closingSegLengthFactor * this._offset1.p0.x + this._s1.x) / (this._closingSegLengthFactor + 1), (this._closingSegLengthFactor * this._offset1.p0.y + this._s1.y) / (this._closingSegLengthFactor + 1));
					this._segList.addPt(r)
				} else this._segList.addPt(this._s1);
				this._segList.addPt(this._offset1.p0)
			}
		},
		Lh.prototype.createCircle = function(t) {
			var e = new xu(t.x + this._distance, t.y);
			this._segList.addPt(e),
			this.addFilletArc(t, 0, 2 * Math.PI, -1, this._distance),
			this._segList.closeRing()
		},
		Lh.prototype.addBevelJoin = function(t, e) {
			this._segList.addPt(t.p1),
			this._segList.addPt(e.p0)
		},
		Lh.prototype.init = function(t) {
			this._distance = t,
			this._maxCurveSegmentError = t * (1 - Math.cos(this._filletAngleQuantum / 2)),
			this._segList = new Sh,
			this._segList.setPrecisionModel(this._precisionModel),
			this._segList.setMinimumVertexDistance(t * Lh.CURVE_VERTEX_SNAP_DISTANCE_FACTOR)
		},
		Lh.prototype.addCollinear = function(t) {
			this._li.computeIntersection(this._s0, this._s1, this._s1, this._s2),
			this._li.getIntersectionNum() >= 2 && (this._bufParams.getJoinStyle() === xh.JOIN_BEVEL || this._bufParams.getJoinStyle() === xh.JOIN_MITRE ? (t && this._segList.addPt(this._offset0.p1), this._segList.addPt(this._offset1.p0)) : this.addFilletCorner(this._s1, this._offset0.p1, this._offset1.p0, oc.CLOCKWISE, this._distance))
		},
		Lh.prototype.closeRing = function() {
			this._segList.closeRing()
		},
		Lh.prototype.hasNarrowConcaveAngle = function() {
			return this._hasNarrowConcaveAngle
		},
		Lh.prototype.interfaces_ = function() {
			return []
		},
		Lh.prototype.getClass = function() {
			return Lh
		},
		Ah.OFFSET_SEGMENT_SEPARATION_FACTOR.get = function() {
			return.001
		},
		Ah.INSIDE_TURN_VERTEX_SNAP_DISTANCE_FACTOR.get = function() {
			return.001
		},
		Ah.CURVE_VERTEX_SNAP_DISTANCE_FACTOR.get = function() {
			return 1e-6
		},
		Ah.MAX_CLOSING_SEG_LEN_FACTOR.get = function() {
			return 80
		},
		Object.defineProperties(Lh, Ah);
		var Oh = function() {
			this._distance = 0,
			this._precisionModel = null,
			this._bufParams = null;
			var t = arguments[0],
			e = arguments[1];
			this._precisionModel = t,
			this._bufParams = e
		};
		Oh.prototype.getOffsetCurve = function(t, e) {
			if (this._distance = e, 0 === e) return null;
			var n = e < 0,
			r = Math.abs(e),
			i = this.getSegGen(r);
			t.length <= 1 ? this.computePointCurve(t[0], i) : this.computeOffsetCurve(t, n, i);
			var o = i.getCoordinates();
			return n && Ic.reverse(o),
			o
		},
		Oh.prototype.computeSingleSidedBufferCurve = function(t, e, n) {
			var r = this.simplifyTolerance(this._distance);
			if (e) {
				n.addSegments(t, !0);
				var i = Mh.simplify(t, -r),
				o = i.length - 1;
				n.initSideSegments(i[o], i[o - 1], Ml.LEFT),
				n.addFirstSegment();
				for (var s = o - 2; s >= 0; s--) n.addNextSegment(i[s], !0)
			} else {
				n.addSegments(t, !1);
				var a = Mh.simplify(t, r),
				u = a.length - 1;
				n.initSideSegments(a[0], a[1], Ml.LEFT),
				n.addFirstSegment();
				for (var c = 2; c <= u; c++) n.addNextSegment(a[c], !0)
			}
			n.addLastSegment(),
			n.closeRing()
		},
		Oh.prototype.computeRingBufferCurve = function(t, e, n) {
			var r = this.simplifyTolerance(this._distance);
			e === Ml.RIGHT && (r = -r);
			var i = Mh.simplify(t, r),
			o = i.length - 1;
			n.initSideSegments(i[o - 1], i[0], e);
			for (var s = 1; s <= o; s++) {
				var a = 1 !== s;
				n.addNextSegment(i[s], a)
			}
			n.closeRing()
		},
		Oh.prototype.computeLineBufferCurve = function(t, e) {
			var n = this.simplifyTolerance(this._distance),
			r = Mh.simplify(t, n),
			i = r.length - 1;
			e.initSideSegments(r[0], r[1], Ml.LEFT);
			for (var o = 2; o <= i; o++) e.addNextSegment(r[o], !0);
			e.addLastSegment(),
			e.addLineEndCap(r[i - 1], r[i]);
			var s = Mh.simplify(t, -n),
			a = s.length - 1;
			e.initSideSegments(s[a], s[a - 1], Ml.LEFT);
			for (var u = a - 2; u >= 0; u--) e.addNextSegment(s[u], !0);
			e.addLastSegment(),
			e.addLineEndCap(s[1], s[0]),
			e.closeRing()
		},
		Oh.prototype.computePointCurve = function(t, e) {
			switch (this._bufParams.getEndCapStyle()) {
			case xh.CAP_ROUND:
				e.createCircle(t);
				break;
			case xh.CAP_SQUARE:
				e.createSquare(t)
			}
		},
		Oh.prototype.getLineCurve = function(t, e) {
			if (this._distance = e, e < 0 && !this._bufParams.isSingleSided()) return null;
			if (0 === e) return null;
			var n = Math.abs(e),
			r = this.getSegGen(n);
			if (t.length <= 1) this.computePointCurve(t[0], r);
			else if (this._bufParams.isSingleSided()) {
				var i = e < 0;
				this.computeSingleSidedBufferCurve(t, i, r)
			} else this.computeLineBufferCurve(t, r);
			return r.getCoordinates()
		},
		Oh.prototype.getBufferParameters = function() {
			return this._bufParams
		},
		Oh.prototype.simplifyTolerance = function(t) {
			return t * this._bufParams.getSimplifyFactor()
		},
		Oh.prototype.getRingCurve = function(t, e, n) {
			if (this._distance = n, t.length <= 2) return this.getLineCurve(t, n);
			if (0 === n) return Oh.copyCoordinates(t);
			var r = this.getSegGen(n);
			return this.computeRingBufferCurve(t, e, r),
			r.getCoordinates()
		},
		Oh.prototype.computeOffsetCurve = function(t, e, n) {
			var r = this.simplifyTolerance(this._distance);
			if (e) {
				var i = Mh.simplify(t, -r),
				o = i.length - 1;
				n.initSideSegments(i[o], i[o - 1], Ml.LEFT),
				n.addFirstSegment();
				for (var s = o - 2; s >= 0; s--) n.addNextSegment(i[s], !0)
			} else {
				var a = Mh.simplify(t, r),
				u = a.length - 1;
				n.initSideSegments(a[0], a[1], Ml.LEFT),
				n.addFirstSegment();
				for (var c = 2; c <= u; c++) n.addNextSegment(a[c], !0)
			}
			n.addLastSegment()
		},
		Oh.prototype.getSegGen = function(t) {
			return new Lh(this._precisionModel, this._bufParams, t)
		},
		Oh.prototype.interfaces_ = function() {
			return []
		},
		Oh.prototype.getClass = function() {
			return Oh
		},
		Oh.copyCoordinates = function(t) {
			for (var e = new Array(t.length).fill(null), n = 0; n < e.length; n++) e[n] = new xu(t[n]);
			return e
		};
		var Th = function() {
			this._subgraphs = null,
			this._seg = new ph,
			this._cga = new oc;
			var t = arguments[0];
			this._subgraphs = t
		},
		Rh = {
			DepthSegment: {
				configurable: !0
			}
		};
		Th.prototype.findStabbedSegments = function() {
			if (1 === arguments.length) {
				for (var t = arguments[0], e = new xc, n = this._subgraphs.iterator(); n.hasNext();) {
					var r = n.next(),
					i = r.getEnvelope();
					t.y < i.getMinY() || t.y > i.getMaxY() || this.findStabbedSegments(t, r.getDirectedEdges(), e)
				}
				return e
			}
			if (3 === arguments.length) if (Nu(arguments[2], bc) && arguments[0] instanceof xu && arguments[1] instanceof Gl) {
				for (var o = arguments[0], s = arguments[1], a = arguments[2], u = s.getEdge().getCoordinates(), c = 0; c < u.length - 1; c++) if (this._seg.p0 = u[c], this._seg.p1 = u[c + 1], this._seg.p0.y > this._seg.p1.y && this._seg.reverse(), !(Math.max(this._seg.p0.x, this._seg.p1.x) < o.x || this._seg.isHorizontal() || o.y < this._seg.p0.y || o.y > this._seg.p1.y || oc.computeOrientation(this._seg.p0, this._seg.p1, o) === oc.RIGHT)) {
					var l = s.getDepth(Ml.LEFT);
					this._seg.p0.equals(u[c]) || (l = s.getDepth(Ml.RIGHT));
					var h = new Dh(this._seg, l);
					a.add(h)
				}
			} else if (Nu(arguments[2], bc) && arguments[0] instanceof xu && Nu(arguments[1], bc)) for (var f = arguments[0], p = arguments[1], d = arguments[2], g = p.iterator(); g.hasNext();) {
				var y = g.next();
				y.isForward() && this.findStabbedSegments(f, y, d)
			}
		},
		Th.prototype.getDepth = function(t) {
			var e = this.findStabbedSegments(t);
			return 0 === e.size() ? 0 : Kl.min(e)._leftDepth
		},
		Th.prototype.interfaces_ = function() {
			return []
		},
		Th.prototype.getClass = function() {
			return Th
		},
		Rh.DepthSegment.get = function() {
			return Dh
		},
		Object.defineProperties(Th, Rh);
		var Dh = function() {
			this._upwardSeg = null,
			this._leftDepth = null;
			var t = arguments[0],
			e = arguments[1];
			this._upwardSeg = new ph(t),
			this._leftDepth = e
		};
		Dh.prototype.compareTo = function(t) {
			var e = t;
			if (this._upwardSeg.minX() >= e._upwardSeg.maxX()) return 1;
			if (this._upwardSeg.maxX() <= e._upwardSeg.minX()) return - 1;
			var n = this._upwardSeg.orientationIndex(e._upwardSeg);
			return 0 !== n ? n: 0 != (n = -1 * e._upwardSeg.orientationIndex(this._upwardSeg)) ? n: this._upwardSeg.compareTo(e._upwardSeg)
		},
		Dh.prototype.compareX = function(t, e) {
			var n = t.p0.compareTo(e.p0);
			return 0 !== n ? n: t.p1.compareTo(e.p1)
		},
		Dh.prototype.toString = function() {
			return this._upwardSeg.toString()
		},
		Dh.prototype.interfaces_ = function() {
			return [_u]
		},
		Dh.prototype.getClass = function() {
			return Dh
		};
		var kh = function(t, e, n) {
			this.p0 = t || null,
			this.p1 = e || null,
			this.p2 = n || null
		};
		kh.prototype.area = function() {
			return kh.area(this.p0, this.p1, this.p2)
		},
		kh.prototype.signedArea = function() {
			return kh.signedArea(this.p0, this.p1, this.p2)
		},
		kh.prototype.interpolateZ = function(t) {
			if (null === t) throw new yu("Supplied point is null.");
			return kh.interpolateZ(t, this.p0, this.p1, this.p2)
		},
		kh.prototype.longestSideLength = function() {
			return kh.longestSideLength(this.p0, this.p1, this.p2)
		},
		kh.prototype.isAcute = function() {
			return kh.isAcute(this.p0, this.p1, this.p2)
		},
		kh.prototype.circumcentre = function() {
			return kh.circumcentre(this.p0, this.p1, this.p2)
		},
		kh.prototype.area3D = function() {
			return kh.area3D(this.p0, this.p1, this.p2)
		},
		kh.prototype.centroid = function() {
			return kh.centroid(this.p0, this.p1, this.p2)
		},
		kh.prototype.inCentre = function() {
			return kh.inCentre(this.p0, this.p1, this.p2)
		},
		kh.prototype.interfaces_ = function() {
			return []
		},
		kh.prototype.getClass = function() {
			return kh
		},
		kh.area = function(t, e, n) {
			return Math.abs(((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2)
		},
		kh.signedArea = function(t, e, n) {
			return ((n.x - t.x) * (e.y - t.y) - (e.x - t.x) * (n.y - t.y)) / 2
		},
		kh.det = function(t, e, n, r) {
			return t * r - e * n
		},
		kh.interpolateZ = function(t, e, n, r) {
			var i = e.x,
			o = e.y,
			s = n.x - i,
			a = r.x - i,
			u = n.y - o,
			c = r.y - o,
			l = s * c - a * u,
			h = t.x - i,
			f = t.y - o,
			p = (c * h - a * f) / l,
			d = ( - u * h + s * f) / l;
			return e.z + p * (n.z - e.z) + d * (r.z - e.z)
		},
		kh.longestSideLength = function(t, e, n) {
			var r = t.distance(e),
			i = e.distance(n),
			o = n.distance(t),
			s = r;
			return i > s && (s = i),
			o > s && (s = o),
			s
		},
		kh.isAcute = function(t, e, n) {
			return !! Nh.isAcute(t, e, n) && !!Nh.isAcute(e, n, t) && !!Nh.isAcute(n, t, e)
		},
		kh.circumcentre = function(t, e, n) {
			var r = n.x,
			i = n.y,
			o = t.x - r,
			s = t.y - i,
			a = e.x - r,
			u = e.y - i,
			c = 2 * kh.det(o, s, a, u),
			l = kh.det(s, o * o + s * s, u, a * a + u * u),
			h = kh.det(o, o * o + s * s, a, a * a + u * u);
			return new xu(r - l / c, i + h / c)
		},
		kh.perpendicularBisector = function(t, e) {
			var n = e.x - t.x,
			r = e.y - t.y,
			i = new zu(t.x + n / 2, t.y + r / 2, 1),
			o = new zu(t.x - r + n / 2, t.y + n + r / 2, 1);
			return new zu(i, o)
		},
		kh.angleBisector = function(t, e, n) {
			var r = e.distance(t),
			i = r / (r + e.distance(n)),
			o = n.x - t.x,
			s = n.y - t.y;
			return new xu(t.x + i * o, t.y + i * s)
		},
		kh.area3D = function(t, e, n) {
			var r = e.x - t.x,
			i = e.y - t.y,
			o = e.z - t.z,
			s = n.x - t.x,
			a = n.y - t.y,
			u = n.z - t.z,
			c = i * u - o * a,
			l = o * s - r * u,
			h = r * a - i * s,
			f = c * c + l * l + h * h;
			return Math.sqrt(f) / 2
		},
		kh.centroid = function(t, e, n) {
			var r = (t.x + e.x + n.x) / 3,
			i = (t.y + e.y + n.y) / 3;
			return new xu(r, i)
		},
		kh.inCentre = function(t, e, n) {
			var r = e.distance(n),
			i = t.distance(n),
			o = t.distance(e),
			s = r + i + o,
			a = (r * t.x + i * e.x + o * n.x) / s,
			u = (r * t.y + i * e.y + o * n.y) / s;
			return new xu(a, u)
		};
		var Fh = function() {
			this._inputGeom = null,
			this._distance = null,
			this._curveBuilder = null,
			this._curveList = new xc;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			this._inputGeom = t,
			this._distance = e,
			this._curveBuilder = n
		};
		Fh.prototype.addPoint = function(t) {
			if (this._distance <= 0) return null;
			var e = t.getCoordinates(),
			n = this._curveBuilder.getLineCurve(e, this._distance);
			this.addCurve(n, Su.EXTERIOR, Su.INTERIOR)
		},
		Fh.prototype.addPolygon = function(t) {
			var e = this._distance,
			n = Ml.LEFT;
			this._distance < 0 && (e = -this._distance, n = Ml.RIGHT);
			var r = t.getExteriorRing(),
			i = Ic.removeRepeatedPoints(r.getCoordinates());
			if (this._distance < 0 && this.isErodedCompletely(r, this._distance)) return null;
			if (this._distance <= 0 && i.length < 3) return null;
			this.addPolygonRing(i, e, n, Su.EXTERIOR, Su.INTERIOR);
			for (var o = 0; o < t.getNumInteriorRing(); o++) {
				var s = t.getInteriorRingN(o),
				a = Ic.removeRepeatedPoints(s.getCoordinates());
				this._distance > 0 && this.isErodedCompletely(s, -this._distance) || this.addPolygonRing(a, e, Ml.opposite(n), Su.INTERIOR, Su.EXTERIOR)
			}
		},
		Fh.prototype.isTriangleErodedCompletely = function(t, e) {
			var n = new kh(t[0], t[1], t[2]),
			r = n.inCentre();
			return oc.distancePointLine(r, n.p0, n.p1) < Math.abs(e)
		},
		Fh.prototype.addLineString = function(t) {
			if (this._distance <= 0 && !this._curveBuilder.getBufferParameters().isSingleSided()) return null;
			var e = Ic.removeRepeatedPoints(t.getCoordinates()),
			n = this._curveBuilder.getLineCurve(e, this._distance);
			this.addCurve(n, Su.EXTERIOR, Su.INTERIOR)
		},
		Fh.prototype.addCurve = function(t, e, n) {
			if (null === t || t.length < 2) return null;
			var r = new fh(t, new Al(0, Su.BOUNDARY, e, n));
			this._curveList.add(r)
		},
		Fh.prototype.getCurves = function() {
			return this.add(this._inputGeom),
			this._curveList
		},
		Fh.prototype.addPolygonRing = function(t, e, n, r, i) {
			if (0 === e && t.length < tl.MINIMUM_VALID_SIZE) return null;
			var o = r,
			s = i;
			t.length >= tl.MINIMUM_VALID_SIZE && oc.isCCW(t) && (o = i, s = r, n = Ml.opposite(n));
			var a = this._curveBuilder.getRingCurve(t, n, e);
			this.addCurve(a, o, s)
		},
		Fh.prototype.add = function(t) {
			if (t.isEmpty()) return null;
			t instanceof Kc ? this.addPolygon(t) : t instanceof Hc ? this.addLineString(t) : t instanceof Zc ? this.addPoint(t) : t instanceof $c ? this.addCollection(t) : t instanceof Uc ? this.addCollection(t) : t instanceof el ? this.addCollection(t) : t instanceof Gc && this.addCollection(t)
		},
		Fh.prototype.isErodedCompletely = function(t, e) {
			var n = t.getCoordinates();
			if (n.length < 4) return e < 0;
			if (4 === n.length) return this.isTriangleErodedCompletely(n, e);
			var r = t.getEnvelopeInternal(),
			i = Math.min(r.getHeight(), r.getWidth());
			return e < 0 && 2 * Math.abs(e) > i
		},
		Fh.prototype.addCollection = function(t) {
			for (var e = 0; e < t.getNumGeometries(); e++) {
				var n = t.getGeometryN(e);
				this.add(n)
			}
		},
		Fh.prototype.interfaces_ = function() {
			return []
		},
		Fh.prototype.getClass = function() {
			return Fh
		};
		var jh = function() {};
		jh.prototype.locate = function(t) {},
		jh.prototype.interfaces_ = function() {
			return []
		},
		jh.prototype.getClass = function() {
			return jh
		};
		var qh = function() {
			this._parent = null,
			this._atStart = null,
			this._max = null,
			this._index = null,
			this._subcollectionIterator = null;
			var t = arguments[0];
			this._parent = t,
			this._atStart = !0,
			this._index = 0,
			this._max = t.getNumGeometries()
		};
		qh.prototype.next = function() {
			if (this._atStart) return this._atStart = !1,
			qh.isAtomic(this._parent) && this._index++,
			this._parent;
			if (null !== this._subcollectionIterator) {
				if (this._subcollectionIterator.hasNext()) return this._subcollectionIterator.next();
				this._subcollectionIterator = null
			}
			if (this._index >= this._max) throw new Li;
			var t = this._parent.getGeometryN(this._index++);
			return t instanceof Gc ? (this._subcollectionIterator = new qh(t), this._subcollectionIterator.next()) : t
		},
		qh.prototype.remove = function() {
			throw new Error(this.getClass().getName())
		},
		qh.prototype.hasNext = function() {
			if (this._atStart) return ! 0;
			if (null !== this._subcollectionIterator) {
				if (this._subcollectionIterator.hasNext()) return ! 0;
				this._subcollectionIterator = null
			}
			return ! (this._index >= this._max)
		},
		qh.prototype.interfaces_ = function() {
			return [wc]
		},
		qh.prototype.getClass = function() {
			return qh
		},
		qh.isAtomic = function(t) {
			return ! (t instanceof Gc)
		};
		var Bh = function() {
			this._geom = null;
			var t = arguments[0];
			this._geom = t
		};
		Bh.prototype.locate = function(t) {
			return Bh.locate(t, this._geom)
		},
		Bh.prototype.interfaces_ = function() {
			return [jh]
		},
		Bh.prototype.getClass = function() {
			return Bh
		},
		Bh.isPointInRing = function(t, e) {
			return !! e.getEnvelopeInternal().intersects(t) && oc.isPointInRing(t, e.getCoordinates())
		},
		Bh.containsPointInPolygon = function(t, e) {
			if (e.isEmpty()) return ! 1;
			var n = e.getExteriorRing();
			if (!Bh.isPointInRing(t, n)) return ! 1;
			for (var r = 0; r < e.getNumInteriorRing(); r++) {
				var i = e.getInteriorRingN(r);
				if (Bh.isPointInRing(t, i)) return ! 1
			}
			return ! 0
		},
		Bh.containsPoint = function(t, e) {
			if (e instanceof Kc) return Bh.containsPointInPolygon(t, e);
			if (e instanceof Gc) for (var n = new qh(e); n.hasNext();) {
				var r = n.next();
				if (r !== e && Bh.containsPoint(t, r)) return ! 0
			}
			return ! 1
		},
		Bh.locate = function(t, e) {
			return e.isEmpty() ? Su.EXTERIOR: Bh.containsPoint(t, e) ? Su.INTERIOR: Su.EXTERIOR
		};
		var Gh = function() {
			this._edgeMap = new ji,
			this._edgeList = null,
			this._ptInAreaLocation = [Su.NONE, Su.NONE]
		};
		Gh.prototype.getNextCW = function(t) {
			this.getEdges();
			var e = this._edgeList.indexOf(t),
			n = e - 1;
			return 0 === e && (n = this._edgeList.size() - 1),
			this._edgeList.get(n)
		},
		Gh.prototype.propagateSideLabels = function(t) {
			for (var e = Su.NONE,
			n = this.iterator(); n.hasNext();) {
				var r = n.next().getLabel();
				r.isArea(t) && r.getLocation(t, Ml.LEFT) !== Su.NONE && (e = r.getLocation(t, Ml.LEFT))
			}
			if (e === Su.NONE) return null;
			for (var i = e,
			o = this.iterator(); o.hasNext();) {
				var s = o.next(),
				a = s.getLabel();
				if (a.getLocation(t, Ml.ON) === Su.NONE && a.setLocation(t, Ml.ON, i), a.isArea(t)) {
					var u = a.getLocation(t, Ml.LEFT),
					c = a.getLocation(t, Ml.RIGHT);
					if (c !== Su.NONE) {
						if (c !== i) throw new Cl("side location conflict", s.getCoordinate());
						u === Su.NONE && $u.shouldNeverReachHere("found single null side (at " + s.getCoordinate() + ")"),
						i = u
					} else $u.isTrue(a.getLocation(t, Ml.LEFT) === Su.NONE, "found single null side"),
					a.setLocation(t, Ml.RIGHT, i),
					a.setLocation(t, Ml.LEFT, i)
				}
			}
		},
		Gh.prototype.getCoordinate = function() {
			var t = this.iterator();
			return t.hasNext() ? t.next().getCoordinate() : null
		},
		Gh.prototype.print = function(t) {
			Uu.out.println("EdgeEndStar:   " + this.getCoordinate());
			for (var e = this.iterator(); e.hasNext();) e.next().print(t)
		},
		Gh.prototype.isAreaLabelsConsistent = function(t) {
			return this.computeEdgeEndLabels(t.getBoundaryNodeRule()),
			this.checkAreaLabelsConsistent(0)
		},
		Gh.prototype.checkAreaLabelsConsistent = function(t) {
			var e = this.getEdges();
			if (e.size() <= 0) return ! 0;
			var n = e.size() - 1,
			r = e.get(n).getLabel().getLocation(t, Ml.LEFT);
			$u.isTrue(r !== Su.NONE, "Found unlabelled area edge");
			for (var i = r,
			o = this.iterator(); o.hasNext();) {
				var s = o.next().getLabel();
				$u.isTrue(s.isArea(t), "Found non-area edge");
				var a = s.getLocation(t, Ml.LEFT),
				u = s.getLocation(t, Ml.RIGHT);
				if (a === u) return ! 1;
				if (u !== i) return ! 1;
				i = a
			}
			return ! 0
		},
		Gh.prototype.findIndex = function(t) {
			this.iterator();
			for (var e = 0; e < this._edgeList.size(); e++) if (this._edgeList.get(e) === t) return e;
			return - 1
		},
		Gh.prototype.iterator = function() {
			return this.getEdges().iterator()
		},
		Gh.prototype.getEdges = function() {
			return null === this._edgeList && (this._edgeList = new xc(this._edgeMap.values())),
			this._edgeList
		},
		Gh.prototype.getLocation = function(t, e, n) {
			return this._ptInAreaLocation[t] === Su.NONE && (this._ptInAreaLocation[t] = Bh.locate(e, n[t].getGeometry())),
			this._ptInAreaLocation[t]
		},
		Gh.prototype.toString = function() {
			var t = new Au;
			t.append("EdgeEndStar:   " + this.getCoordinate()),
			t.append("\n");
			for (var e = this.iterator(); e.hasNext();) {
				var n = e.next();
				t.append(n),
				t.append("\n")
			}
			return t.toString()
		},
		Gh.prototype.computeEdgeEndLabels = function(t) {
			for (var e = this.iterator(); e.hasNext();) e.next().computeLabel(t)
		},
		Gh.prototype.computeLabelling = function(t) {
			this.computeEdgeEndLabels(t[0].getBoundaryNodeRule()),
			this.propagateSideLabels(0),
			this.propagateSideLabels(1);
			for (var e = [!1, !1], n = this.iterator(); n.hasNext();) for (var r = n.next().getLabel(), i = 0; i < 2; i++) r.isLine(i) && r.getLocation(i) === Su.BOUNDARY && (e[i] = !0);
			for (var o = this.iterator(); o.hasNext();) for (var s = o.next(), a = s.getLabel(), u = 0; u < 2; u++) if (a.isAnyNull(u)) {
				var c = Su.NONE;
				if (e[u]) c = Su.EXTERIOR;
				else {
					var l = s.getCoordinate();
					c = this.getLocation(u, l, t)
				}
				a.setAllLocationsIfNull(u, c)
			}
		},
		Gh.prototype.getDegree = function() {
			return this._edgeMap.size()
		},
		Gh.prototype.insertEdgeEnd = function(t, e) {
			this._edgeMap.put(t, e),
			this._edgeList = null
		},
		Gh.prototype.interfaces_ = function() {
			return []
		},
		Gh.prototype.getClass = function() {
			return Gh
		};
		var Uh = function(t) {
			function e() {
				t.call(this),
				this._resultAreaEdgeList = null,
				this._label = null,
				this._SCANNING_FOR_INCOMING = 1,
				this._LINKING_TO_OUTGOING = 2
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.linkResultDirectedEdges = function() {
				this.getResultAreaEdges();
				for (var t = null,
				e = null,
				n = this._SCANNING_FOR_INCOMING,
				r = 0; r < this._resultAreaEdgeList.size(); r++) {
					var i = this._resultAreaEdgeList.get(r),
					o = i.getSym();
					if (i.getLabel().isArea()) switch (null === t && i.isInResult() && (t = i), n) {
					case this._SCANNING_FOR_INCOMING:
						if (!o.isInResult()) continue;
						e = o,
						n = this._LINKING_TO_OUTGOING;
						break;
					case this._LINKING_TO_OUTGOING:
						if (!i.isInResult()) continue;
						e.setNext(i),
						n = this._SCANNING_FOR_INCOMING
					}
				}
				if (n === this._LINKING_TO_OUTGOING) {
					if (null === t) throw new Cl("no outgoing dirEdge found", this.getCoordinate());
					$u.isTrue(t.isInResult(), "unable to link last incoming dirEdge"),
					e.setNext(t)
				}
			},
			e.prototype.insert = function(t) {
				var e = t;
				this.insertEdgeEnd(e, e)
			},
			e.prototype.getRightmostEdge = function() {
				var t = this.getEdges(),
				e = t.size();
				if (e < 1) return null;
				var n = t.get(0);
				if (1 === e) return n;
				var r = t.get(e - 1),
				i = n.getQuadrant(),
				o = r.getQuadrant();
				return jl.isNorthern(i) && jl.isNorthern(o) ? n: jl.isNorthern(i) || jl.isNorthern(o) ? 0 !== n.getDy() ? n: 0 !== r.getDy() ? r: ($u.shouldNeverReachHere("found two horizontal edges incident on node"), null) : r
			},
			e.prototype.print = function(t) {
				Uu.out.println("DirectedEdgeStar: " + this.getCoordinate());
				for (var e = this.iterator(); e.hasNext();) {
					var n = e.next();
					t.print("out "),
					n.print(t),
					t.println(),
					t.print("in "),
					n.getSym().print(t),
					t.println()
				}
			},
			e.prototype.getResultAreaEdges = function() {
				if (null !== this._resultAreaEdgeList) return this._resultAreaEdgeList;
				this._resultAreaEdgeList = new xc;
				for (var t = this.iterator(); t.hasNext();) {
					var e = t.next(); (e.isInResult() || e.getSym().isInResult()) && this._resultAreaEdgeList.add(e)
				}
				return this._resultAreaEdgeList
			},
			e.prototype.updateLabelling = function(t) {
				for (var e = this.iterator(); e.hasNext();) {
					var n = e.next().getLabel();
					n.setAllLocationsIfNull(0, t.getLocation(0)),
					n.setAllLocationsIfNull(1, t.getLocation(1))
				}
			},
			e.prototype.linkAllDirectedEdges = function() {
				this.getEdges();
				for (var t = null,
				e = null,
				n = this._edgeList.size() - 1; n >= 0; n--) {
					var r = this._edgeList.get(n),
					i = r.getSym();
					null === e && (e = i),
					null !== t && i.setNext(t),
					t = r
				}
				e.setNext(t)
			},
			e.prototype.computeDepths = function() {
				if (1 === arguments.length) {
					var t = arguments[0],
					e = this.findIndex(t),
					n = t.getDepth(Ml.LEFT),
					r = t.getDepth(Ml.RIGHT),
					i = this.computeDepths(e + 1, this._edgeList.size(), n);
					if (this.computeDepths(0, e, i) !== r) throw new Cl("depth mismatch at " + t.getCoordinate())
				} else if (3 === arguments.length) {
					for (var o = arguments[0], s = arguments[1], a = arguments[2], u = o; u < s; u++) {
						var c = this._edgeList.get(u);
						c.setEdgeDepths(Ml.RIGHT, a),
						a = c.getDepth(Ml.LEFT)
					}
					return a
				}
			},
			e.prototype.mergeSymLabels = function() {
				for (var t = this.iterator(); t.hasNext();) {
					var e = t.next();
					e.getLabel().merge(e.getSym().getLabel())
				}
			},
			e.prototype.linkMinimalDirectedEdges = function(t) {
				for (var e = null,
				n = null,
				r = this._SCANNING_FOR_INCOMING,
				i = this._resultAreaEdgeList.size() - 1; i >= 0; i--) {
					var o = this._resultAreaEdgeList.get(i),
					s = o.getSym();
					switch (null === e && o.getEdgeRing() === t && (e = o), r) {
					case this._SCANNING_FOR_INCOMING:
						if (s.getEdgeRing() !== t) continue;
						n = s,
						r = this._LINKING_TO_OUTGOING;
						break;
					case this._LINKING_TO_OUTGOING:
						if (o.getEdgeRing() !== t) continue;
						n.setNextMin(o),
						r = this._SCANNING_FOR_INCOMING
					}
				}
				r === this._LINKING_TO_OUTGOING && ($u.isTrue(null !== e, "found null for first outgoing dirEdge"), $u.isTrue(e.getEdgeRing() === t, "unable to link last incoming dirEdge"), n.setNextMin(e))
			},
			e.prototype.getOutgoingDegree = function() {
				if (0 === arguments.length) {
					for (var t = 0,
					e = this.iterator(); e.hasNext();) e.next().isInResult() && t++;
					return t
				}
				if (1 === arguments.length) {
					for (var n = arguments[0], r = 0, i = this.iterator(); i.hasNext();) i.next().getEdgeRing() === n && r++;
					return r
				}
			},
			e.prototype.getLabel = function() {
				return this._label
			},
			e.prototype.findCoveredLineEdges = function() {
				for (var t = Su.NONE,
				e = this.iterator(); e.hasNext();) {
					var n = e.next(),
					r = n.getSym();
					if (!n.isLineEdge()) {
						if (n.isInResult()) {
							t = Su.INTERIOR;
							break
						}
						if (r.isInResult()) {
							t = Su.EXTERIOR;
							break
						}
					}
				}
				if (t === Su.NONE) return null;
				for (var i = t,
				o = this.iterator(); o.hasNext();) {
					var s = o.next(),
					a = s.getSym();
					s.isLineEdge() ? s.getEdge().setCovered(i === Su.INTERIOR) : (s.isInResult() && (i = Su.EXTERIOR), a.isInResult() && (i = Su.INTERIOR))
				}
			},
			e.prototype.computeLabelling = function(e) {
				t.prototype.computeLabelling.call(this, e),
				this._label = new Al(Su.NONE);
				for (var n = this.iterator(); n.hasNext();) for (var r = n.next().getEdge().getLabel(), i = 0; i < 2; i++) {
					var o = r.getLocation(i);
					o !== Su.INTERIOR && o !== Su.BOUNDARY || this._label.setLocation(i, Su.INTERIOR)
				}
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Gh),
		zh = function(t) {
			function e() {
				t.apply(this, arguments)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.createNode = function(t) {
				return new kl(t, new Uh)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Ul),
		Yh = function t() {
			this._pts = null,
			this._orientation = null;
			var e = arguments[0];
			this._pts = e,
			this._orientation = t.orientation(e)
		};
		Yh.prototype.compareTo = function(t) {
			var e = t;
			return Yh.compareOriented(this._pts, this._orientation, e._pts, e._orientation)
		},
		Yh.prototype.interfaces_ = function() {
			return [_u]
		},
		Yh.prototype.getClass = function() {
			return Yh
		},
		Yh.orientation = function(t) {
			return 1 === Ic.increasingDirection(t)
		},
		Yh.compareOriented = function(t, e, n, r) {
			for (var i = e ? 1 : -1, o = r ? 1 : -1, s = e ? t.length: -1, a = r ? n.length: -1, u = e ? 0 : t.length - 1, c = r ? 0 : n.length - 1;;) {
				var l = t[u].compareTo(n[c]);
				if (0 !== l) return l;
				var h = (u += i) === s,
				f = (c += o) === a;
				if (h && !f) return - 1;
				if (!h && f) return 1;
				if (h && f) return 0
			}
		};
		var Xh = function() {
			this._edges = new xc,
			this._ocaMap = new ji
		};
		Xh.prototype.print = function(t) {
			t.print("MULTILINESTRING ( ");
			for (var e = 0; e < this._edges.size(); e++) {
				var n = this._edges.get(e);
				e > 0 && t.print(","),
				t.print("(");
				for (var r = n.getCoordinates(), i = 0; i < r.length; i++) i > 0 && t.print(","),
				t.print(r[i].x + " " + r[i].y);
				t.println(")")
			}
			t.print(")  ")
		},
		Xh.prototype.addAll = function(t) {
			for (var e = t.iterator(); e.hasNext();) this.add(e.next())
		},
		Xh.prototype.findEdgeIndex = function(t) {
			for (var e = 0; e < this._edges.size(); e++) if (this._edges.get(e).equals(t)) return e;
			return - 1
		},
		Xh.prototype.iterator = function() {
			return this._edges.iterator()
		},
		Xh.prototype.getEdges = function() {
			return this._edges
		},
		Xh.prototype.get = function(t) {
			return this._edges.get(t)
		},
		Xh.prototype.findEqualEdge = function(t) {
			var e = new Yh(t.getCoordinates());
			return this._ocaMap.get(e)
		},
		Xh.prototype.add = function(t) {
			this._edges.add(t);
			var e = new Yh(t.getCoordinates());
			this._ocaMap.put(e, t)
		},
		Xh.prototype.interfaces_ = function() {
			return []
		},
		Xh.prototype.getClass = function() {
			return Xh
		};
		var Vh = function() {};
		Vh.prototype.processIntersections = function(t, e, n, r) {},
		Vh.prototype.isDone = function() {},
		Vh.prototype.interfaces_ = function() {
			return []
		},
		Vh.prototype.getClass = function() {
			return Vh
		};
		var Wh = function() {
			this._hasIntersection = !1,
			this._hasProper = !1,
			this._hasProperInterior = !1,
			this._hasInterior = !1,
			this._properIntersectionPoint = null,
			this._li = null,
			this._isSelfIntersection = null,
			this.numIntersections = 0,
			this.numInteriorIntersections = 0,
			this.numProperIntersections = 0,
			this.numTests = 0;
			var t = arguments[0];
			this._li = t
		};
		Wh.prototype.isTrivialIntersection = function(t, e, n, r) {
			if (t === n && 1 === this._li.getIntersectionNum()) {
				if (Wh.isAdjacentSegments(e, r)) return ! 0;
				if (t.isClosed()) {
					var i = t.size() - 1;
					if (0 === e && r === i || 0 === r && e === i) return ! 0
				}
			}
			return ! 1
		},
		Wh.prototype.getProperIntersectionPoint = function() {
			return this._properIntersectionPoint
		},
		Wh.prototype.hasProperInteriorIntersection = function() {
			return this._hasProperInterior
		},
		Wh.prototype.getLineIntersector = function() {
			return this._li
		},
		Wh.prototype.hasProperIntersection = function() {
			return this._hasProper
		},
		Wh.prototype.processIntersections = function(t, e, n, r) {
			if (t === n && e === r) return null;
			this.numTests++;
			var i = t.getCoordinates()[e],
			o = t.getCoordinates()[e + 1],
			s = n.getCoordinates()[r],
			a = n.getCoordinates()[r + 1];
			this._li.computeIntersection(i, o, s, a),
			this._li.hasIntersection() && (this.numIntersections++, this._li.isInteriorIntersection() && (this.numInteriorIntersections++, this._hasInterior = !0), this.isTrivialIntersection(t, e, n, r) || (this._hasIntersection = !0, t.addIntersections(this._li, e, 0), n.addIntersections(this._li, r, 1), this._li.isProper() && (this.numProperIntersections++, this._hasProper = !0, this._hasProperInterior = !0)))
		},
		Wh.prototype.hasIntersection = function() {
			return this._hasIntersection
		},
		Wh.prototype.isDone = function() {
			return ! 1
		},
		Wh.prototype.hasInteriorIntersection = function() {
			return this._hasInterior
		},
		Wh.prototype.interfaces_ = function() {
			return [Vh]
		},
		Wh.prototype.getClass = function() {
			return Wh
		},
		Wh.isAdjacentSegments = function(t, e) {
			return 1 === Math.abs(t - e)
		};
		var Hh = function() {
			this.coord = null,
			this.segmentIndex = null,
			this.dist = null;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			this.coord = new xu(t),
			this.segmentIndex = e,
			this.dist = n
		};
		Hh.prototype.getSegmentIndex = function() {
			return this.segmentIndex
		},
		Hh.prototype.getCoordinate = function() {
			return this.coord
		},
		Hh.prototype.print = function(t) {
			t.print(this.coord),
			t.print(" seg # = " + this.segmentIndex),
			t.println(" dist = " + this.dist)
		},
		Hh.prototype.compareTo = function(t) {
			var e = t;
			return this.compare(e.segmentIndex, e.dist)
		},
		Hh.prototype.isEndPoint = function(t) {
			return 0 === this.segmentIndex && 0 === this.dist || this.segmentIndex === t
		},
		Hh.prototype.toString = function() {
			return this.coord + " seg # = " + this.segmentIndex + " dist = " + this.dist
		},
		Hh.prototype.getDistance = function() {
			return this.dist
		},
		Hh.prototype.compare = function(t, e) {
			return this.segmentIndex < t ? -1 : this.segmentIndex > t ? 1 : this.dist < e ? -1 : this.dist > e ? 1 : 0
		},
		Hh.prototype.interfaces_ = function() {
			return [_u]
		},
		Hh.prototype.getClass = function() {
			return Hh
		};
		var Jh = function() {
			this._nodeMap = new ji,
			this.edge = null;
			var t = arguments[0];
			this.edge = t
		};
		Jh.prototype.print = function(t) {
			t.println("Intersections:");
			for (var e = this.iterator(); e.hasNext();) e.next().print(t)
		},
		Jh.prototype.iterator = function() {
			return this._nodeMap.values().iterator()
		},
		Jh.prototype.addSplitEdges = function(t) {
			this.addEndpoints();
			for (var e = this.iterator(), n = e.next(); e.hasNext();) {
				var r = e.next(),
				i = this.createSplitEdge(n, r);
				t.add(i),
				n = r
			}
		},
		Jh.prototype.addEndpoints = function() {
			var t = this.edge.pts.length - 1;
			this.add(this.edge.pts[0], 0, 0),
			this.add(this.edge.pts[t], t, 0)
		},
		Jh.prototype.createSplitEdge = function(t, e) {
			var n = e.segmentIndex - t.segmentIndex + 2,
			r = this.edge.pts[e.segmentIndex],
			i = e.dist > 0 || !e.coord.equals2D(r);
			i || n--;
			var o = new Array(n).fill(null),
			s = 0;
			o[s++] = new xu(t.coord);
			for (var a = t.segmentIndex + 1; a <= e.segmentIndex; a++) o[s++] = this.edge.pts[a];
			return i && (o[s] = e.coord),
			new tf(o, new Al(this.edge._label))
		},
		Jh.prototype.add = function(t, e, n) {
			var r = new Hh(t, e, n),
			i = this._nodeMap.get(r);
			return null !== i ? i: (this._nodeMap.put(r, r), r)
		},
		Jh.prototype.isIntersection = function(t) {
			for (var e = this.iterator(); e.hasNext();) if (e.next().coord.equals(t)) return ! 0;
			return ! 1
		},
		Jh.prototype.interfaces_ = function() {
			return []
		},
		Jh.prototype.getClass = function() {
			return Jh
		};
		var Zh = function() {};
		Zh.prototype.getChainStartIndices = function(t) {
			var e = 0,
			n = new xc;
			n.add(new Ou(e));
			do {
				var r = this.findChainEnd(t, e);
				n.add(new Ou(r)), e = r
			} while ( e < t . length - 1 );
			return Zh.toIntArray(n)
		},
		Zh.prototype.findChainEnd = function(t, e) {
			for (var n = jl.quadrant(t[e], t[e + 1]), r = e + 1; r < t.length && jl.quadrant(t[r - 1], t[r]) === n;) r++;
			return r - 1
		},
		Zh.prototype.interfaces_ = function() {
			return []
		},
		Zh.prototype.getClass = function() {
			return Zh
		},
		Zh.toIntArray = function(t) {
			for (var e = new Array(t.size()).fill(null), n = 0; n < e.length; n++) e[n] = t.get(n).intValue();
			return e
		};
		var Qh = function() {
			this.e = null,
			this.pts = null,
			this.startIndex = null,
			this.env1 = new Yu,
			this.env2 = new Yu;
			var t = arguments[0];
			this.e = t,
			this.pts = t.getCoordinates();
			var e = new Zh;
			this.startIndex = e.getChainStartIndices(this.pts)
		};
		Qh.prototype.getCoordinates = function() {
			return this.pts
		},
		Qh.prototype.getMaxX = function(t) {
			var e = this.pts[this.startIndex[t]].x,
			n = this.pts[this.startIndex[t + 1]].x;
			return e > n ? e: n
		},
		Qh.prototype.getMinX = function(t) {
			var e = this.pts[this.startIndex[t]].x,
			n = this.pts[this.startIndex[t + 1]].x;
			return e < n ? e: n
		},
		Qh.prototype.computeIntersectsForChain = function() {
			if (4 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2],
				r = arguments[3];
				this.computeIntersectsForChain(this.startIndex[t], this.startIndex[t + 1], e, e.startIndex[n], e.startIndex[n + 1], r)
			} else if (6 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2],
				a = arguments[3],
				u = arguments[4],
				c = arguments[5],
				l = this.pts[i],
				h = this.pts[o],
				f = s.pts[a],
				p = s.pts[u];
				if (o - i == 1 && u - a == 1) return c.addIntersections(this.e, i, s.e, a),
				null;
				if (this.env1.init(l, h), this.env2.init(f, p), !this.env1.intersects(this.env2)) return null;
				var d = Math.trunc((i + o) / 2),
				g = Math.trunc((a + u) / 2);
				i < d && (a < g && this.computeIntersectsForChain(i, d, s, a, g, c), g < u && this.computeIntersectsForChain(i, d, s, g, u, c)),
				d < o && (a < g && this.computeIntersectsForChain(d, o, s, a, g, c), g < u && this.computeIntersectsForChain(d, o, s, g, u, c))
			}
		},
		Qh.prototype.getStartIndexes = function() {
			return this.startIndex
		},
		Qh.prototype.computeIntersects = function(t, e) {
			for (var n = 0; n < this.startIndex.length - 1; n++) for (var r = 0; r < t.startIndex.length - 1; r++) this.computeIntersectsForChain(n, t, r, e)
		},
		Qh.prototype.interfaces_ = function() {
			return []
		},
		Qh.prototype.getClass = function() {
			return Qh
		};
		var Kh = function t() {
			this._depth = Array(2).fill().map(function() {
				return Array(3)
			});
			for (var e = 0; e < 2; e++) for (var n = 0; n < 3; n++) this._depth[e][n] = t.NULL_VALUE
		},
		$h = {
			NULL_VALUE: {
				configurable: !0
			}
		};
		Kh.prototype.getDepth = function(t, e) {
			return this._depth[t][e]
		},
		Kh.prototype.setDepth = function(t, e, n) {
			this._depth[t][e] = n
		},
		Kh.prototype.isNull = function() {
			if (0 === arguments.length) {
				for (var t = 0; t < 2; t++) for (var e = 0; e < 3; e++) if (this._depth[t][e] !== Kh.NULL_VALUE) return ! 1;
				return ! 0
			}
			if (1 === arguments.length) {
				var n = arguments[0];
				return this._depth[n][1] === Kh.NULL_VALUE
			}
			if (2 === arguments.length) {
				var r = arguments[0],
				i = arguments[1];
				return this._depth[r][i] === Kh.NULL_VALUE
			}
		},
		Kh.prototype.normalize = function() {
			for (var t = 0; t < 2; t++) if (!this.isNull(t)) {
				var e = this._depth[t][1];
				this._depth[t][2] < e && (e = this._depth[t][2]),
				e < 0 && (e = 0);
				for (var n = 1; n < 3; n++) {
					var r = 0;
					this._depth[t][n] > e && (r = 1),
					this._depth[t][n] = r
				}
			}
		},
		Kh.prototype.getDelta = function(t) {
			return this._depth[t][Ml.RIGHT] - this._depth[t][Ml.LEFT]
		},
		Kh.prototype.getLocation = function(t, e) {
			return this._depth[t][e] <= 0 ? Su.EXTERIOR: Su.INTERIOR
		},
		Kh.prototype.toString = function() {
			return "A: " + this._depth[0][1] + "," + this._depth[0][2] + " B: " + this._depth[1][1] + "," + this._depth[1][2]
		},
		Kh.prototype.add = function() {
			if (1 === arguments.length) for (var t = arguments[0], e = 0; e < 2; e++) for (var n = 1; n < 3; n++) {
				var r = t.getLocation(e, n);
				r !== Su.EXTERIOR && r !== Su.INTERIOR || (this.isNull(e, n) ? this._depth[e][n] = Kh.depthAtLocation(r) : this._depth[e][n] += Kh.depthAtLocation(r))
			} else if (3 === arguments.length) {
				var i = arguments[0],
				o = arguments[1];
				arguments[2] === Su.INTERIOR && this._depth[i][o]++
			}
		},
		Kh.prototype.interfaces_ = function() {
			return []
		},
		Kh.prototype.getClass = function() {
			return Kh
		},
		Kh.depthAtLocation = function(t) {
			return t === Su.EXTERIOR ? 0 : t === Su.INTERIOR ? 1 : Kh.NULL_VALUE
		},
		$h.NULL_VALUE.get = function() {
			return - 1
		},
		Object.defineProperties(Kh, $h);
		var tf = function(t) {
			function e() {
				if (t.call(this), this.pts = null, this._env = null, this.eiList = new Jh(this), this._name = null, this._mce = null, this._isIsolated = !0, this._depth = new Kh, this._depthDelta = 0, 1 === arguments.length) {
					var n = arguments[0];
					e.call(this, n, null)
				} else if (2 === arguments.length) {
					var r = arguments[0],
					i = arguments[1];
					this.pts = r,
					this._label = i
				}
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.getDepth = function() {
				return this._depth
			},
			e.prototype.getCollapsedEdge = function() {
				var t = new Array(2).fill(null);
				return t[0] = this.pts[0],
				t[1] = this.pts[1],
				new e(t, Al.toLineLabel(this._label))
			},
			e.prototype.isIsolated = function() {
				return this._isIsolated
			},
			e.prototype.getCoordinates = function() {
				return this.pts
			},
			e.prototype.setIsolated = function(t) {
				this._isIsolated = t
			},
			e.prototype.setName = function(t) {
				this._name = t
			},
			e.prototype.equals = function(t) {
				if (! (t instanceof e)) return ! 1;
				var n = t;
				if (this.pts.length !== n.pts.length) return ! 1;
				for (var r = !0,
				i = !0,
				o = this.pts.length,
				s = 0; s < this.pts.length; s++) if (this.pts[s].equals2D(n.pts[s]) || (r = !1), this.pts[s].equals2D(n.pts[--o]) || (i = !1), !r && !i) return ! 1;
				return ! 0
			},
			e.prototype.getCoordinate = function() {
				if (0 === arguments.length) return this.pts.length > 0 ? this.pts[0] : null;
				if (1 === arguments.length) {
					var t = arguments[0];
					return this.pts[t]
				}
			},
			e.prototype.print = function(t) {
				t.print("edge " + this._name + ": "),
				t.print("LINESTRING (");
				for (var e = 0; e < this.pts.length; e++) e > 0 && t.print(","),
				t.print(this.pts[e].x + " " + this.pts[e].y);
				t.print(")  " + this._label + " " + this._depthDelta)
			},
			e.prototype.computeIM = function(t) {
				e.updateIM(this._label, t)
			},
			e.prototype.isCollapsed = function() {
				return !! this._label.isArea() && 3 === this.pts.length && !!this.pts[0].equals(this.pts[2])
			},
			e.prototype.isClosed = function() {
				return this.pts[0].equals(this.pts[this.pts.length - 1])
			},
			e.prototype.getMaximumSegmentIndex = function() {
				return this.pts.length - 1
			},
			e.prototype.getDepthDelta = function() {
				return this._depthDelta
			},
			e.prototype.getNumPoints = function() {
				return this.pts.length
			},
			e.prototype.printReverse = function(t) {
				t.print("edge " + this._name + ": ");
				for (var e = this.pts.length - 1; e >= 0; e--) t.print(this.pts[e] + " ");
				t.println("")
			},
			e.prototype.getMonotoneChainEdge = function() {
				return null === this._mce && (this._mce = new Qh(this)),
				this._mce
			},
			e.prototype.getEnvelope = function() {
				if (null === this._env) {
					this._env = new Yu;
					for (var t = 0; t < this.pts.length; t++) this._env.expandToInclude(this.pts[t])
				}
				return this._env
			},
			e.prototype.addIntersection = function(t, e, n, r) {
				var i = new xu(t.getIntersection(r)),
				o = e,
				s = t.getEdgeDistance(n, r),
				a = o + 1;
				if (a < this.pts.length) {
					var u = this.pts[a];
					i.equals2D(u) && (o = a, s = 0)
				}
				this.eiList.add(i, o, s)
			},
			e.prototype.toString = function() {
				var t = new Au;
				t.append("edge " + this._name + ": "),
				t.append("LINESTRING (");
				for (var e = 0; e < this.pts.length; e++) e > 0 && t.append(","),
				t.append(this.pts[e].x + " " + this.pts[e].y);
				return t.append(")  " + this._label + " " + this._depthDelta),
				t.toString()
			},
			e.prototype.isPointwiseEqual = function(t) {
				if (this.pts.length !== t.pts.length) return ! 1;
				for (var e = 0; e < this.pts.length; e++) if (!this.pts[e].equals2D(t.pts[e])) return ! 1;
				return ! 0
			},
			e.prototype.setDepthDelta = function(t) {
				this._depthDelta = t
			},
			e.prototype.getEdgeIntersectionList = function() {
				return this.eiList
			},
			e.prototype.addIntersections = function(t, e, n) {
				for (var r = 0; r < t.getIntersectionNum(); r++) this.addIntersection(t, e, n, r)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e.updateIM = function() {
				if (2 !== arguments.length) return t.prototype.updateIM.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1];
				n.setAtLeastIfValid(e.getLocation(0, Ml.ON), e.getLocation(1, Ml.ON), 1),
				e.isArea() && (n.setAtLeastIfValid(e.getLocation(0, Ml.LEFT), e.getLocation(1, Ml.LEFT), 2), n.setAtLeastIfValid(e.getLocation(0, Ml.RIGHT), e.getLocation(1, Ml.RIGHT), 2))
			},
			e
		} (Dl),
		ef = function(t) {
			this._workingPrecisionModel = null,
			this._workingNoder = null,
			this._geomFact = null,
			this._graph = null,
			this._edgeList = new Xh,
			this._bufParams = t || null
		};
		ef.prototype.setWorkingPrecisionModel = function(t) {
			this._workingPrecisionModel = t
		},
		ef.prototype.insertUniqueEdge = function(t) {
			var e = this._edgeList.findEqualEdge(t);
			if (null !== e) {
				var n = e.getLabel(),
				r = t.getLabel();
				e.isPointwiseEqual(t) || (r = new Al(t.getLabel())).flip(),
				n.merge(r);
				var i = ef.depthDelta(r),
				o = e.getDepthDelta() + i;
				e.setDepthDelta(o)
			} else this._edgeList.add(t),
			t.setDepthDelta(ef.depthDelta(t.getLabel()))
		},
		ef.prototype.buildSubgraphs = function(t, e) {
			for (var n = new xc,
			r = t.iterator(); r.hasNext();) {
				var i = r.next(),
				o = i.getRightmostCoordinate(),
				s = new Th(n).getDepth(o);
				i.computeDepth(s),
				i.findResultEdges(),
				n.add(i),
				e.add(i.getDirectedEdges(), i.getNodes())
			}
		},
		ef.prototype.createSubgraphs = function(t) {
			for (var e = new xc,
			n = t.getNodes().iterator(); n.hasNext();) {
				var r = n.next();
				if (!r.isVisited()) {
					var i = new Pl;
					i.create(r),
					e.add(i)
				}
			}
			return Kl.sort(e, Kl.reverseOrder()),
			e
		},
		ef.prototype.createEmptyResultGeometry = function() {
			return this._geomFact.createPolygon()
		},
		ef.prototype.getNoder = function(t) {
			if (null !== this._workingNoder) return this._workingNoder;
			var e = new wh,
			n = new nc;
			return n.setPrecisionModel(t),
			e.setSegmentIntersector(new Wh(n)),
			e
		},
		ef.prototype.buffer = function(t, e) {
			var n = this._workingPrecisionModel;
			null === n && (n = t.getPrecisionModel()),
			this._geomFact = t.getFactory();
			var r = new Oh(n, this._bufParams),
			i = new Fh(t, e, r).getCurves();
			if (i.size() <= 0) return this.createEmptyResultGeometry();
			this.computeNodedEdges(i, n),
			this._graph = new zl(new zh),
			this._graph.addEdges(this._edgeList.getEdges());
			var o = this.createSubgraphs(this._graph),
			s = new Yl(this._geomFact);
			this.buildSubgraphs(o, s);
			var a = s.getPolygons();
			return a.size() <= 0 ? this.createEmptyResultGeometry() : this._geomFact.buildGeometry(a)
		},
		ef.prototype.computeNodedEdges = function(t, e) {
			var n = this.getNoder(e);
			n.computeNodes(t);
			for (var r = n.getNodedSubstrings().iterator(); r.hasNext();) {
				var i = r.next(),
				o = i.getCoordinates();
				if (2 !== o.length || !o[0].equals2D(o[1])) {
					var s = i.getData(),
					a = new tf(i.getCoordinates(), new Al(s));
					this.insertUniqueEdge(a)
				}
			}
		},
		ef.prototype.setNoder = function(t) {
			this._workingNoder = t
		},
		ef.prototype.interfaces_ = function() {
			return []
		},
		ef.prototype.getClass = function() {
			return ef
		},
		ef.depthDelta = function(t) {
			var e = t.getLocation(0, Ml.LEFT),
			n = t.getLocation(0, Ml.RIGHT);
			return e === Su.INTERIOR && n === Su.EXTERIOR ? 1 : e === Su.EXTERIOR && n === Su.INTERIOR ? -1 : 0
		},
		ef.convertSegStrings = function(t) {
			for (var e = new yl,
			n = new xc; t.hasNext();) {
				var r = t.next(),
				i = e.createLineString(r.getCoordinates());
				n.add(i)
			}
			return e.buildGeometry(n)
		};
		var nf = function() {
			if (this._noder = null, this._scaleFactor = null, this._offsetX = null, this._offsetY = null, this._isScaled = !1, 2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this._noder = t,
				this._scaleFactor = e,
				this._offsetX = 0,
				this._offsetY = 0,
				this._isScaled = !this.isIntegerPrecision()
			} else if (4 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2],
				o = arguments[3];
				this._noder = n,
				this._scaleFactor = r,
				this._offsetX = i,
				this._offsetY = o,
				this._isScaled = !this.isIntegerPrecision()
			}
		};
		nf.prototype.rescale = function() {
			if (Nu(arguments[0], mc)) for (var t = arguments[0].iterator(); t.hasNext();) {
				var e = t.next();
				this.rescale(e.getCoordinates())
			} else if (arguments[0] instanceof Array) {
				for (var n = arguments[0], r = 0; r < n.length; r++) n[r].x = n[r].x / this._scaleFactor + this._offsetX,
				n[r].y = n[r].y / this._scaleFactor + this._offsetY;
				2 === n.length && n[0].equals2D(n[1]) && Uu.out.println(n)
			}
		},
		nf.prototype.scale = function() {
			if (Nu(arguments[0], mc)) {
				for (var t = arguments[0], e = new xc, n = t.iterator(); n.hasNext();) {
					var r = n.next();
					e.add(new fh(this.scale(r.getCoordinates()), r.getData()))
				}
				return e
			}
			if (arguments[0] instanceof Array) {
				for (var i = arguments[0], o = new Array(i.length).fill(null), s = 0; s < i.length; s++) o[s] = new xu(Math.round((i[s].x - this._offsetX) * this._scaleFactor), Math.round((i[s].y - this._offsetY) * this._scaleFactor), i[s].z);
				return Ic.removeRepeatedPoints(o)
			}
		},
		nf.prototype.isIntegerPrecision = function() {
			return 1 === this._scaleFactor
		},
		nf.prototype.getNodedSubstrings = function() {
			var t = this._noder.getNodedSubstrings();
			return this._isScaled && this.rescale(t),
			t
		},
		nf.prototype.computeNodes = function(t) {
			var e = t;
			this._isScaled && (e = this.scale(t)),
			this._noder.computeNodes(e)
		},
		nf.prototype.interfaces_ = function() {
			return [mh]
		},
		nf.prototype.getClass = function() {
			return nf
		};
		var rf = function() {
			this._li = new nc,
			this._segStrings = null;
			var t = arguments[0];
			this._segStrings = t
		},
		of = {
			fact: {
				configurable: !0
			}
		};
		rf.prototype.checkEndPtVertexIntersections = function() {
			if (0 === arguments.length) for (var t = this._segStrings.iterator(); t.hasNext();) {
				var e = t.next().getCoordinates();
				this.checkEndPtVertexIntersections(e[0], this._segStrings),
				this.checkEndPtVertexIntersections(e[e.length - 1], this._segStrings)
			} else if (2 === arguments.length) for (var n = arguments[0], r = arguments[1].iterator(); r.hasNext();) for (var i = r.next().getCoordinates(), o = 1; o < i.length - 1; o++) if (i[o].equals(n)) throw new Qu("found endpt/interior pt intersection at index " + o + " :pt " + n)
		},
		rf.prototype.checkInteriorIntersections = function() {
			if (0 === arguments.length) for (var t = this._segStrings.iterator(); t.hasNext();) for (var e = t.next(), n = this._segStrings.iterator(); n.hasNext();) {
				var r = n.next();
				this.checkInteriorIntersections(e, r)
			} else if (2 === arguments.length) for (var i = arguments[0], o = arguments[1], s = i.getCoordinates(), a = o.getCoordinates(), u = 0; u < s.length - 1; u++) for (var c = 0; c < a.length - 1; c++) this.checkInteriorIntersections(i, u, o, c);
			else if (4 === arguments.length) {
				var l = arguments[0],
				h = arguments[1],
				f = arguments[2],
				p = arguments[3];
				if (l === f && h === p) return null;
				var d = l.getCoordinates()[h],
				g = l.getCoordinates()[h + 1],
				y = f.getCoordinates()[p],
				v = f.getCoordinates()[p + 1];
				if (this._li.computeIntersection(d, g, y, v), this._li.hasIntersection() && (this._li.isProper() || this.hasInteriorIntersection(this._li, d, g) || this.hasInteriorIntersection(this._li, y, v))) throw new Qu("found non-noded intersection at " + d + "-" + g + " and " + y + "-" + v)
			}
		},
		rf.prototype.checkValid = function() {
			this.checkEndPtVertexIntersections(),
			this.checkInteriorIntersections(),
			this.checkCollapses()
		},
		rf.prototype.checkCollapses = function() {
			if (0 === arguments.length) for (var t = this._segStrings.iterator(); t.hasNext();) {
				var e = t.next();
				this.checkCollapses(e)
			} else if (1 === arguments.length) for (var n = arguments[0].getCoordinates(), r = 0; r < n.length - 2; r++) this.checkCollapse(n[r], n[r + 1], n[r + 2])
		},
		rf.prototype.hasInteriorIntersection = function(t, e, n) {
			for (var r = 0; r < t.getIntersectionNum(); r++) {
				var i = t.getIntersection(r);
				if (!i.equals(e) && !i.equals(n)) return ! 0
			}
			return ! 1
		},
		rf.prototype.checkCollapse = function(t, e, n) {
			if (t.equals(n)) throw new Qu("found non-noded collapse at " + rf.fact.createLineString([t, e, n]))
		},
		rf.prototype.interfaces_ = function() {
			return []
		},
		rf.prototype.getClass = function() {
			return rf
		},
		of.fact.get = function() {
			return new yl
		},
		Object.defineProperties(rf, of);
		var sf = function() {
			this._li = null,
			this._pt = null,
			this._originalPt = null,
			this._ptScaled = null,
			this._p0Scaled = null,
			this._p1Scaled = null,
			this._scaleFactor = null,
			this._minx = null,
			this._maxx = null,
			this._miny = null,
			this._maxy = null,
			this._corner = new Array(4).fill(null),
			this._safeEnv = null;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			if (this._originalPt = t, this._pt = t, this._scaleFactor = e, this._li = n, e <= 0) throw new yu("Scale factor must be non-zero");
			1 !== e && (this._pt = new xu(this.scale(t.x), this.scale(t.y)), this._p0Scaled = new xu, this._p1Scaled = new xu),
			this.initCorners(this._pt)
		},
		af = {
			SAFE_ENV_EXPANSION_FACTOR: {
				configurable: !0
			}
		};
		sf.prototype.intersectsScaled = function(t, e) {
			var n = Math.min(t.x, e.x),
			r = Math.max(t.x, e.x),
			i = Math.min(t.y, e.y),
			o = Math.max(t.y, e.y),
			s = this._maxx < n || this._minx > r || this._maxy < i || this._miny > o;
			if (s) return ! 1;
			var a = this.intersectsToleranceSquare(t, e);
			return $u.isTrue(!(s && a), "Found bad envelope test"),
			a
		},
		sf.prototype.initCorners = function(t) {
			this._minx = t.x - .5,
			this._maxx = t.x + .5,
			this._miny = t.y - .5,
			this._maxy = t.y + .5,
			this._corner[0] = new xu(this._maxx, this._maxy),
			this._corner[1] = new xu(this._minx, this._maxy),
			this._corner[2] = new xu(this._minx, this._miny),
			this._corner[3] = new xu(this._maxx, this._miny)
		},
		sf.prototype.intersects = function(t, e) {
			return 1 === this._scaleFactor ? this.intersectsScaled(t, e) : (this.copyScaled(t, this._p0Scaled), this.copyScaled(e, this._p1Scaled), this.intersectsScaled(this._p0Scaled, this._p1Scaled))
		},
		sf.prototype.scale = function(t) {
			return Math.round(t * this._scaleFactor)
		},
		sf.prototype.getCoordinate = function() {
			return this._originalPt
		},
		sf.prototype.copyScaled = function(t, e) {
			e.x = this.scale(t.x),
			e.y = this.scale(t.y)
		},
		sf.prototype.getSafeEnvelope = function() {
			if (null === this._safeEnv) {
				var t = sf.SAFE_ENV_EXPANSION_FACTOR / this._scaleFactor;
				this._safeEnv = new Yu(this._originalPt.x - t, this._originalPt.x + t, this._originalPt.y - t, this._originalPt.y + t)
			}
			return this._safeEnv
		},
		sf.prototype.intersectsPixelClosure = function(t, e) {
			return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]),
			!!(this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), this._li.hasIntersection() || (this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), this._li.hasIntersection()))))
		},
		sf.prototype.intersectsToleranceSquare = function(t, e) {
			var n = !1,
			r = !1;
			return this._li.computeIntersection(t, e, this._corner[0], this._corner[1]),
			!!(this._li.isProper() || (this._li.computeIntersection(t, e, this._corner[1], this._corner[2]), this._li.isProper() || (this._li.hasIntersection() && (n = !0), this._li.computeIntersection(t, e, this._corner[2], this._corner[3]), this._li.isProper() || (this._li.hasIntersection() && (r = !0), this._li.computeIntersection(t, e, this._corner[3], this._corner[0]), this._li.isProper() || n && r || t.equals(this._pt) || e.equals(this._pt)))))
		},
		sf.prototype.addSnappedNode = function(t, e) {
			var n = t.getCoordinate(e),
			r = t.getCoordinate(e + 1);
			return !! this.intersects(n, r) && (t.addIntersection(this.getCoordinate(), e), !0)
		},
		sf.prototype.interfaces_ = function() {
			return []
		},
		sf.prototype.getClass = function() {
			return sf
		},
		af.SAFE_ENV_EXPANSION_FACTOR.get = function() {
			return.75
		},
		Object.defineProperties(sf, af);
		var uf = function() {
			this.tempEnv1 = new Yu,
			this.selectedSegment = new ph
		};
		uf.prototype.select = function() {
			if (1 === arguments.length);
			else if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				t.getLineSegment(e, this.selectedSegment),
				this.select(this.selectedSegment)
			}
		},
		uf.prototype.interfaces_ = function() {
			return []
		},
		uf.prototype.getClass = function() {
			return uf
		};
		var cf = function() {
			this._index = null;
			var t = arguments[0];
			this._index = t
		},
		lf = {
			HotPixelSnapAction: {
				configurable: !0
			}
		};
		cf.prototype.snap = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this.snap(t, null, -1)
			}
			if (3 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2],
				i = e.getSafeEnvelope(),
				o = new hf(e, n, r);
				return this._index.query(i, {
					interfaces_: function() {
						return [Hl]
					},
					visitItem: function(t) {
						t.select(i, o)
					}
				}),
				o.isNodeAdded()
			}
		},
		cf.prototype.interfaces_ = function() {
			return []
		},
		cf.prototype.getClass = function() {
			return cf
		},
		lf.HotPixelSnapAction.get = function() {
			return hf
		},
		Object.defineProperties(cf, lf);
		var hf = function(t) {
			function e() {
				t.call(this),
				this._hotPixel = null,
				this._parentEdge = null,
				this._hotPixelVertexIndex = null,
				this._isNodeAdded = !1;
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2];
				this._hotPixel = e,
				this._parentEdge = n,
				this._hotPixelVertexIndex = r
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.isNodeAdded = function() {
				return this._isNodeAdded
			},
			e.prototype.select = function() {
				if (2 !== arguments.length) return t.prototype.select.apply(this, arguments);
				var e = arguments[0],
				n = arguments[1],
				r = e.getContext();
				if (null !== this._parentEdge && r === this._parentEdge && n === this._hotPixelVertexIndex) return null;
				this._isNodeAdded = this._hotPixel.addSnappedNode(r, n)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (uf),
		ff = function() {
			this._li = null,
			this._interiorIntersections = null;
			var t = arguments[0];
			this._li = t,
			this._interiorIntersections = new xc
		};
		ff.prototype.processIntersections = function(t, e, n, r) {
			if (t === n && e === r) return null;
			var i = t.getCoordinates()[e],
			o = t.getCoordinates()[e + 1],
			s = n.getCoordinates()[r],
			a = n.getCoordinates()[r + 1];
			if (this._li.computeIntersection(i, o, s, a), this._li.hasIntersection() && this._li.isInteriorIntersection()) {
				for (var u = 0; u < this._li.getIntersectionNum(); u++) this._interiorIntersections.add(this._li.getIntersection(u));
				t.addIntersections(this._li, e, 0),
				n.addIntersections(this._li, r, 1)
			}
		},
		ff.prototype.isDone = function() {
			return ! 1
		},
		ff.prototype.getInteriorIntersections = function() {
			return this._interiorIntersections
		},
		ff.prototype.interfaces_ = function() {
			return [Vh]
		},
		ff.prototype.getClass = function() {
			return ff
		};
		var pf = function() {
			this._pm = null,
			this._li = null,
			this._scaleFactor = null,
			this._noder = null,
			this._pointSnapper = null,
			this._nodedSegStrings = null;
			var t = arguments[0];
			this._pm = t,
			this._li = new nc,
			this._li.setPrecisionModel(t),
			this._scaleFactor = t.getScale()
		};
		pf.prototype.checkCorrectness = function(t) {
			var e = fh.getNodedSubstrings(t),
			n = new rf(e);
			try {
				n.checkValid()
			} catch(t) {
				if (! (t instanceof Bu)) throw t;
				t.printStackTrace()
			}
		},
		pf.prototype.getNodedSubstrings = function() {
			return fh.getNodedSubstrings(this._nodedSegStrings)
		},
		pf.prototype.snapRound = function(t, e) {
			var n = this.findInteriorIntersections(t, e);
			this.computeIntersectionSnaps(n),
			this.computeVertexSnaps(t)
		},
		pf.prototype.findInteriorIntersections = function(t, e) {
			var n = new ff(e);
			return this._noder.setSegmentIntersector(n),
			this._noder.computeNodes(t),
			n.getInteriorIntersections()
		},
		pf.prototype.computeVertexSnaps = function() {
			if (Nu(arguments[0], mc)) for (var t = arguments[0].iterator(); t.hasNext();) {
				var e = t.next();
				this.computeVertexSnaps(e)
			} else if (arguments[0] instanceof fh) for (var n = arguments[0], r = n.getCoordinates(), i = 0; i < r.length; i++) {
				var o = new sf(r[i], this._scaleFactor, this._li);
				this._pointSnapper.snap(o, n, i) && n.addIntersection(r[i], i)
			}
		},
		pf.prototype.computeNodes = function(t) {
			this._nodedSegStrings = t,
			this._noder = new wh,
			this._pointSnapper = new cf(this._noder.getIndex()),
			this.snapRound(t, this._li)
		},
		pf.prototype.computeIntersectionSnaps = function(t) {
			for (var e = t.iterator(); e.hasNext();) {
				var n = e.next(),
				r = new sf(n, this._scaleFactor, this._li);
				this._pointSnapper.snap(r)
			}
		},
		pf.prototype.interfaces_ = function() {
			return [mh]
		},
		pf.prototype.getClass = function() {
			return pf
		};
		var df = function() {
			if (this._argGeom = null, this._distance = null, this._bufParams = new xh, this._resultGeometry = null, this._saveException = null, 1 === arguments.length) {
				var t = arguments[0];
				this._argGeom = t
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this._argGeom = e,
				this._bufParams = n
			}
		},
		gf = {
			CAP_ROUND: {
				configurable: !0
			},
			CAP_BUTT: {
				configurable: !0
			},
			CAP_FLAT: {
				configurable: !0
			},
			CAP_SQUARE: {
				configurable: !0
			},
			MAX_PRECISION_DIGITS: {
				configurable: !0
			}
		};
		df.prototype.bufferFixedPrecision = function(t) {
			var e = new nf(new pf(new fl(1)), t.getScale()),
			n = new ef(this._bufParams);
			n.setWorkingPrecisionModel(t),
			n.setNoder(e),
			this._resultGeometry = n.buffer(this._argGeom, this._distance)
		},
		df.prototype.bufferReducedPrecision = function() {
			var t = this;
			if (0 === arguments.length) {
				for (var e = df.MAX_PRECISION_DIGITS; e >= 0; e--) {
					try {
						t.bufferReducedPrecision(e)
					} catch(e) {
						if (! (e instanceof Cl)) throw e;
						t._saveException = e
					}
					if (null !== t._resultGeometry) return null
				}
				throw this._saveException
			}
			if (1 === arguments.length) {
				var n = arguments[0],
				r = df.precisionScaleFactor(this._argGeom, this._distance, n),
				i = new fl(r);
				this.bufferFixedPrecision(i)
			}
		},
		df.prototype.computeGeometry = function() {
			if (this.bufferOriginalPrecision(), null !== this._resultGeometry) return null;
			var t = this._argGeom.getFactory().getPrecisionModel();
			t.getType() === fl.FIXED ? this.bufferFixedPrecision(t) : this.bufferReducedPrecision()
		},
		df.prototype.setQuadrantSegments = function(t) {
			this._bufParams.setQuadrantSegments(t)
		},
		df.prototype.bufferOriginalPrecision = function() {
			try {
				var t = new ef(this._bufParams);
				this._resultGeometry = t.buffer(this._argGeom, this._distance)
			} catch(t) {
				if (! (t instanceof Qu)) throw t;
				this._saveException = t
			}
		},
		df.prototype.getResultGeometry = function(t) {
			return this._distance = t,
			this.computeGeometry(),
			this._resultGeometry
		},
		df.prototype.setEndCapStyle = function(t) {
			this._bufParams.setEndCapStyle(t)
		},
		df.prototype.interfaces_ = function() {
			return []
		},
		df.prototype.getClass = function() {
			return df
		},
		df.bufferOp = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				return new df(t).getResultGeometry(e)
			}
			if (3 === arguments.length) {
				if (Number.isInteger(arguments[2]) && arguments[0] instanceof uc && "number" == typeof arguments[1]) {
					var n = arguments[0],
					r = arguments[1],
					i = arguments[2],
					o = new df(n);
					return o.setQuadrantSegments(i),
					o.getResultGeometry(r)
				}
				if (arguments[2] instanceof xh && arguments[0] instanceof uc && "number" == typeof arguments[1]) {
					var s = arguments[0],
					a = arguments[1],
					u = arguments[2];
					return new df(s, u).getResultGeometry(a)
				}
			} else if (4 === arguments.length) {
				var c = arguments[0],
				l = arguments[1],
				h = arguments[2],
				f = arguments[3],
				p = new df(c);
				return p.setQuadrantSegments(h),
				p.setEndCapStyle(f),
				p.getResultGeometry(l)
			}
		},
		df.precisionScaleFactor = function(t, e, n) {
			var r = t.getEnvelopeInternal(),
			i = Pu.max(Math.abs(r.getMaxX()), Math.abs(r.getMaxY()), Math.abs(r.getMinX()), Math.abs(r.getMinY())) + 2 * (e > 0 ? e: 0),
			o = n - Math.trunc(Math.log(i) / Math.log(10) + 1);
			return Math.pow(10, o)
		},
		gf.CAP_ROUND.get = function() {
			return xh.CAP_ROUND
		},
		gf.CAP_BUTT.get = function() {
			return xh.CAP_FLAT
		},
		gf.CAP_FLAT.get = function() {
			return xh.CAP_FLAT
		},
		gf.CAP_SQUARE.get = function() {
			return xh.CAP_SQUARE
		},
		gf.MAX_PRECISION_DIGITS.get = function() {
			return 12
		},
		Object.defineProperties(df, gf);
		var yf = function() {
			this._pt = [new xu, new xu],
			this._distance = vu.NaN,
			this._isNull = !0
		};
		yf.prototype.getCoordinates = function() {
			return this._pt
		},
		yf.prototype.getCoordinate = function(t) {
			return this._pt[t]
		},
		yf.prototype.setMinimum = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setMinimum(t._pt[0], t._pt[1])
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				if (this._isNull) return this.initialize(e, n),
				null;
				var r = e.distance(n);
				r < this._distance && this.initialize(e, n, r)
			}
		},
		yf.prototype.initialize = function() {
			if (0 === arguments.length) this._isNull = !0;
			else if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this._pt[0].setCoordinate(t),
				this._pt[1].setCoordinate(e),
				this._distance = t.distance(e),
				this._isNull = !1
			} else if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2];
				this._pt[0].setCoordinate(n),
				this._pt[1].setCoordinate(r),
				this._distance = i,
				this._isNull = !1
			}
		},
		yf.prototype.getDistance = function() {
			return this._distance
		},
		yf.prototype.setMaximum = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setMaximum(t._pt[0], t._pt[1])
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				if (this._isNull) return this.initialize(e, n),
				null;
				var r = e.distance(n);
				r > this._distance && this.initialize(e, n, r)
			}
		},
		yf.prototype.interfaces_ = function() {
			return []
		},
		yf.prototype.getClass = function() {
			return yf
		};
		var vf = function() {};
		vf.prototype.interfaces_ = function() {
			return []
		},
		vf.prototype.getClass = function() {
			return vf
		},
		vf.computeDistance = function() {
			if (arguments[2] instanceof yf && arguments[0] instanceof Hc && arguments[1] instanceof xu) for (var t = arguments[0], e = arguments[1], n = arguments[2], r = t.getCoordinates(), i = new ph, o = 0; o < r.length - 1; o++) {
				i.setCoordinates(r[o], r[o + 1]);
				var s = i.closestPoint(e);
				n.setMinimum(s, e)
			} else if (arguments[2] instanceof yf && arguments[0] instanceof Kc && arguments[1] instanceof xu) {
				var a = arguments[0],
				u = arguments[1],
				c = arguments[2];
				vf.computeDistance(a.getExteriorRing(), u, c);
				for (var l = 0; l < a.getNumInteriorRing(); l++) vf.computeDistance(a.getInteriorRingN(l), u, c)
			} else if (arguments[2] instanceof yf && arguments[0] instanceof uc && arguments[1] instanceof xu) {
				var h = arguments[0],
				f = arguments[1],
				p = arguments[2];
				if (h instanceof Hc) vf.computeDistance(h, f, p);
				else if (h instanceof Kc) vf.computeDistance(h, f, p);
				else if (h instanceof Gc) for (var d = h,
				g = 0; g < d.getNumGeometries(); g++) {
					var y = d.getGeometryN(g);
					vf.computeDistance(y, f, p)
				} else p.setMinimum(h.getCoordinate(), f)
			} else if (arguments[2] instanceof yf && arguments[0] instanceof ph && arguments[1] instanceof xu) {
				var v = arguments[0],
				m = arguments[1],
				_ = arguments[2],
				w = v.closestPoint(m);
				_.setMinimum(w, m)
			}
		};
		var mf = function(t) {
			this._maxPtDist = new yf,
			this._inputGeom = t || null
		},
		_f = {
			MaxPointDistanceFilter: {
				configurable: !0
			},
			MaxMidpointDistanceFilter: {
				configurable: !0
			}
		};
		mf.prototype.computeMaxMidpointDistance = function(t) {
			var e = new bf(this._inputGeom);
			t.apply(e),
			this._maxPtDist.setMaximum(e.getMaxPointDistance())
		},
		mf.prototype.computeMaxVertexDistance = function(t) {
			var e = new wf(this._inputGeom);
			t.apply(e),
			this._maxPtDist.setMaximum(e.getMaxPointDistance())
		},
		mf.prototype.findDistance = function(t) {
			return this.computeMaxVertexDistance(t),
			this.computeMaxMidpointDistance(t),
			this._maxPtDist.getDistance()
		},
		mf.prototype.getDistancePoints = function() {
			return this._maxPtDist
		},
		mf.prototype.interfaces_ = function() {
			return []
		},
		mf.prototype.getClass = function() {
			return mf
		},
		_f.MaxPointDistanceFilter.get = function() {
			return wf
		},
		_f.MaxMidpointDistanceFilter.get = function() {
			return bf
		},
		Object.defineProperties(mf, _f);
		var wf = function(t) {
			this._maxPtDist = new yf,
			this._minPtDist = new yf,
			this._geom = t || null
		};
		wf.prototype.filter = function(t) {
			this._minPtDist.initialize(),
			vf.computeDistance(this._geom, t, this._minPtDist),
			this._maxPtDist.setMaximum(this._minPtDist)
		},
		wf.prototype.getMaxPointDistance = function() {
			return this._maxPtDist
		},
		wf.prototype.interfaces_ = function() {
			return [hc]
		},
		wf.prototype.getClass = function() {
			return wf
		};
		var bf = function(t) {
			this._maxPtDist = new yf,
			this._minPtDist = new yf,
			this._geom = t || null
		};
		bf.prototype.filter = function(t, e) {
			if (0 === e) return null;
			var n = t.getCoordinate(e - 1),
			r = t.getCoordinate(e),
			i = new xu((n.x + r.x) / 2, (n.y + r.y) / 2);
			this._minPtDist.initialize(),
			vf.computeDistance(this._geom, i, this._minPtDist),
			this._maxPtDist.setMaximum(this._minPtDist)
		},
		bf.prototype.isDone = function() {
			return ! 1
		},
		bf.prototype.isGeometryChanged = function() {
			return ! 1
		},
		bf.prototype.getMaxPointDistance = function() {
			return this._maxPtDist
		},
		bf.prototype.interfaces_ = function() {
			return [Bc]
		},
		bf.prototype.getClass = function() {
			return bf
		};
		var xf = function(t) {
			this._comps = t || null
		};
		xf.prototype.filter = function(t) {
			t instanceof Kc && this._comps.add(t)
		},
		xf.prototype.interfaces_ = function() {
			return [qc]
		},
		xf.prototype.getClass = function() {
			return xf
		},
		xf.getPolygons = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return xf.getPolygons(t, new xc)
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return e instanceof Kc ? n.add(e) : e instanceof Gc && e.apply(new xf(n)),
				n
			}
		};
		var Ef = function() {
			if (this._lines = null, this._isForcedToLineString = !1, 1 === arguments.length) {
				var t = arguments[0];
				this._lines = t
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this._lines = e,
				this._isForcedToLineString = n
			}
		};
		Ef.prototype.filter = function(t) {
			if (this._isForcedToLineString && t instanceof tl) {
				var e = t.getFactory().createLineString(t.getCoordinateSequence());
				return this._lines.add(e),
				null
			}
			t instanceof Hc && this._lines.add(t)
		},
		Ef.prototype.setForceToLineString = function(t) {
			this._isForcedToLineString = t
		},
		Ef.prototype.interfaces_ = function() {
			return [ac]
		},
		Ef.prototype.getClass = function() {
			return Ef
		},
		Ef.getGeometry = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return t.getFactory().buildGeometry(Ef.getLines(t))
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return e.getFactory().buildGeometry(Ef.getLines(e, n))
			}
		},
		Ef.getLines = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return Ef.getLines(t, !1)
			}
			if (2 === arguments.length) {
				if (Nu(arguments[0], mc) && Nu(arguments[1], mc)) {
					for (var e = arguments[0], n = arguments[1], r = e.iterator(); r.hasNext();) {
						var i = r.next();
						Ef.getLines(i, n)
					}
					return n
				}
				if (arguments[0] instanceof uc && "boolean" == typeof arguments[1]) {
					var o = arguments[0],
					s = arguments[1],
					a = new xc;
					return o.apply(new Ef(a, s)),
					a
				}
				if (arguments[0] instanceof uc && Nu(arguments[1], mc)) {
					var u = arguments[0],
					c = arguments[1];
					return u instanceof Hc ? c.add(u) : u.apply(new Ef(c)),
					c
				}
			} else if (3 === arguments.length) {
				if ("boolean" == typeof arguments[2] && Nu(arguments[0], mc) && Nu(arguments[1], mc)) {
					for (var l = arguments[0], h = arguments[1], f = arguments[2], p = l.iterator(); p.hasNext();) {
						var d = p.next();
						Ef.getLines(d, h, f)
					}
					return h
				}
				if ("boolean" == typeof arguments[2] && arguments[0] instanceof uc && Nu(arguments[1], mc)) {
					var g = arguments[0],
					y = arguments[1],
					v = arguments[2];
					return g.apply(new Ef(y, v)),
					y
				}
			}
		};
		var Mf = function() {
			if (this._boundaryRule = fc.OGC_SFS_BOUNDARY_RULE, this._isIn = null, this._numBoundaries = null, 0 === arguments.length);
			else if (1 === arguments.length) {
				var t = arguments[0];
				if (null === t) throw new yu("Rule must be non-null");
				this._boundaryRule = t
			}
		};
		Mf.prototype.locateInternal = function() {
			if (arguments[0] instanceof xu && arguments[1] instanceof Kc) {
				var t = arguments[0],
				e = arguments[1];
				if (e.isEmpty()) return Su.EXTERIOR;
				var n = e.getExteriorRing(),
				r = this.locateInPolygonRing(t, n);
				if (r === Su.EXTERIOR) return Su.EXTERIOR;
				if (r === Su.BOUNDARY) return Su.BOUNDARY;
				for (var i = 0; i < e.getNumInteriorRing(); i++) {
					var o = e.getInteriorRingN(i),
					s = this.locateInPolygonRing(t, o);
					if (s === Su.INTERIOR) return Su.EXTERIOR;
					if (s === Su.BOUNDARY) return Su.BOUNDARY
				}
				return Su.INTERIOR
			}
			if (arguments[0] instanceof xu && arguments[1] instanceof Hc) {
				var a = arguments[0],
				u = arguments[1];
				if (!u.getEnvelopeInternal().intersects(a)) return Su.EXTERIOR;
				var c = u.getCoordinates();
				return u.isClosed() || !a.equals(c[0]) && !a.equals(c[c.length - 1]) ? oc.isOnLine(a, c) ? Su.INTERIOR: Su.EXTERIOR: Su.BOUNDARY
			}
			if (arguments[0] instanceof xu && arguments[1] instanceof Zc) {
				var l = arguments[0];
				return arguments[1].getCoordinate().equals2D(l) ? Su.INTERIOR: Su.EXTERIOR
			}
		},
		Mf.prototype.locateInPolygonRing = function(t, e) {
			return e.getEnvelopeInternal().intersects(t) ? oc.locatePointInRing(t, e.getCoordinates()) : Su.EXTERIOR
		},
		Mf.prototype.intersects = function(t, e) {
			return this.locate(t, e) !== Su.EXTERIOR
		},
		Mf.prototype.updateLocationInfo = function(t) {
			t === Su.INTERIOR && (this._isIn = !0),
			t === Su.BOUNDARY && this._numBoundaries++
		},
		Mf.prototype.computeLocation = function(t, e) {
			if (e instanceof Zc && this.updateLocationInfo(this.locateInternal(t, e)), e instanceof Hc) this.updateLocationInfo(this.locateInternal(t, e));
			else if (e instanceof Kc) this.updateLocationInfo(this.locateInternal(t, e));
			else if (e instanceof Uc) for (var n = e,
			r = 0; r < n.getNumGeometries(); r++) {
				var i = n.getGeometryN(r);
				this.updateLocationInfo(this.locateInternal(t, i))
			} else if (e instanceof el) for (var o = e,
			s = 0; s < o.getNumGeometries(); s++) {
				var a = o.getGeometryN(s);
				this.updateLocationInfo(this.locateInternal(t, a))
			} else if (e instanceof Gc) for (var u = new qh(e); u.hasNext();) {
				var c = u.next();
				c !== e && this.computeLocation(t, c)
			}
		},
		Mf.prototype.locate = function(t, e) {
			return e.isEmpty() ? Su.EXTERIOR: e instanceof Hc ? this.locateInternal(t, e) : e instanceof Kc ? this.locateInternal(t, e) : (this._isIn = !1, this._numBoundaries = 0, this.computeLocation(t, e), this._boundaryRule.isInBoundary(this._numBoundaries) ? Su.BOUNDARY: this._numBoundaries > 0 || this._isIn ? Su.INTERIOR: Su.EXTERIOR)
		},
		Mf.prototype.interfaces_ = function() {
			return []
		},
		Mf.prototype.getClass = function() {
			return Mf
		};
		var If = function t() {
			if (this._component = null, this._segIndex = null, this._pt = null, 2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				t.call(this, e, t.INSIDE_AREA, n)
			} else if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				this._component = r,
				this._segIndex = i,
				this._pt = o
			}
		},
		Sf = {
			INSIDE_AREA: {
				configurable: !0
			}
		};
		If.prototype.isInsideArea = function() {
			return this._segIndex === If.INSIDE_AREA
		},
		If.prototype.getCoordinate = function() {
			return this._pt
		},
		If.prototype.getGeometryComponent = function() {
			return this._component
		},
		If.prototype.getSegmentIndex = function() {
			return this._segIndex
		},
		If.prototype.interfaces_ = function() {
			return []
		},
		If.prototype.getClass = function() {
			return If
		},
		Sf.INSIDE_AREA.get = function() {
			return - 1
		},
		Object.defineProperties(If, Sf);
		var Cf = function(t) {
			this._pts = t || null
		};
		Cf.prototype.filter = function(t) {
			t instanceof Zc && this._pts.add(t)
		},
		Cf.prototype.interfaces_ = function() {
			return [qc]
		},
		Cf.prototype.getClass = function() {
			return Cf
		},
		Cf.getPoints = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return t instanceof Zc ? Kl.singletonList(t) : Cf.getPoints(t, new xc)
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return e instanceof Zc ? n.add(e) : e instanceof Gc && e.apply(new Cf(n)),
				n
			}
		};
		var Nf = function() {
			this._locations = null;
			var t = arguments[0];
			this._locations = t
		};
		Nf.prototype.filter = function(t) { (t instanceof Zc || t instanceof Hc || t instanceof Kc) && this._locations.add(new If(t, 0, t.getCoordinate()))
		},
		Nf.prototype.interfaces_ = function() {
			return [qc]
		},
		Nf.prototype.getClass = function() {
			return Nf
		},
		Nf.getLocations = function(t) {
			var e = new xc;
			return t.apply(new Nf(e)),
			e
		};
		var Pf = function() {
			if (this._geom = null, this._terminateDistance = 0, this._ptLocator = new Mf, this._minDistanceLocation = null, this._minDistance = vu.MAX_VALUE, 2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this._geom = [t, e],
				this._terminateDistance = 0
			} else if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2];
				this._geom = new Array(2).fill(null),
				this._geom[0] = n,
				this._geom[1] = r,
				this._terminateDistance = i
			}
		};
		Pf.prototype.computeContainmentDistance = function() {
			if (0 === arguments.length) {
				var t = new Array(2).fill(null);
				if (this.computeContainmentDistance(0, t), this._minDistance <= this._terminateDistance) return null;
				this.computeContainmentDistance(1, t)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = 1 - e,
				i = xf.getPolygons(this._geom[e]);
				if (i.size() > 0) {
					var o = Nf.getLocations(this._geom[r]);
					if (this.computeContainmentDistance(o, i, n), this._minDistance <= this._terminateDistance) return this._minDistanceLocation[r] = n[0],
					this._minDistanceLocation[e] = n[1],
					null
				}
			} else if (3 === arguments.length) if (arguments[2] instanceof Array && Nu(arguments[0], bc) && Nu(arguments[1], bc)) {
				for (var s = arguments[0], a = arguments[1], u = arguments[2], c = 0; c < s.size(); c++) for (var l = s.get(c), h = 0; h < a.size(); h++) if (this.computeContainmentDistance(l, a.get(h), u), this._minDistance <= this._terminateDistance) return null
			} else if (arguments[2] instanceof Array && arguments[0] instanceof If && arguments[1] instanceof Kc) {
				var f = arguments[0],
				p = arguments[1],
				d = arguments[2],
				g = f.getCoordinate();
				if (Su.EXTERIOR !== this._ptLocator.locate(g, p)) return this._minDistance = 0,
				d[0] = f,
				d[1] = new If(p, g),
				null
			}
		},
		Pf.prototype.computeMinDistanceLinesPoints = function(t, e, n) {
			for (var r = 0; r < t.size(); r++) for (var i = t.get(r), o = 0; o < e.size(); o++) {
				var s = e.get(o);
				if (this.computeMinDistance(i, s, n), this._minDistance <= this._terminateDistance) return null
			}
		},
		Pf.prototype.computeFacetDistance = function() {
			var t = new Array(2).fill(null),
			e = Ef.getLines(this._geom[0]),
			n = Ef.getLines(this._geom[1]),
			r = Cf.getPoints(this._geom[0]),
			i = Cf.getPoints(this._geom[1]);
			return this.computeMinDistanceLines(e, n, t),
			this.updateMinDistance(t, !1),
			this._minDistance <= this._terminateDistance ? null: (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(e, i, t), this.updateMinDistance(t, !1), this._minDistance <= this._terminateDistance ? null: (t[0] = null, t[1] = null, this.computeMinDistanceLinesPoints(n, r, t), this.updateMinDistance(t, !0), this._minDistance <= this._terminateDistance ? null: (t[0] = null, t[1] = null, this.computeMinDistancePoints(r, i, t), void this.updateMinDistance(t, !1))))
		},
		Pf.prototype.nearestLocations = function() {
			return this.computeMinDistance(),
			this._minDistanceLocation
		},
		Pf.prototype.updateMinDistance = function(t, e) {
			if (null === t[0]) return null;
			e ? (this._minDistanceLocation[0] = t[1], this._minDistanceLocation[1] = t[0]) : (this._minDistanceLocation[0] = t[0], this._minDistanceLocation[1] = t[1])
		},
		Pf.prototype.nearestPoints = function() {
			return this.computeMinDistance(),
			[this._minDistanceLocation[0].getCoordinate(), this._minDistanceLocation[1].getCoordinate()]
		},
		Pf.prototype.computeMinDistance = function() {
			if (0 === arguments.length) {
				if (null !== this._minDistanceLocation) return null;
				if (this._minDistanceLocation = new Array(2).fill(null), this.computeContainmentDistance(), this._minDistance <= this._terminateDistance) return null;
				this.computeFacetDistance()
			} else if (3 === arguments.length) if (arguments[2] instanceof Array && arguments[0] instanceof Hc && arguments[1] instanceof Zc) {
				var t = arguments[0],
				e = arguments[1],
				n = arguments[2];
				if (t.getEnvelopeInternal().distance(e.getEnvelopeInternal()) > this._minDistance) return null;
				for (var r = t.getCoordinates(), i = e.getCoordinate(), o = 0; o < r.length - 1; o++) {
					var s = oc.distancePointLine(i, r[o], r[o + 1]);
					if (s < this._minDistance) {
						this._minDistance = s;
						var a = new ph(r[o], r[o + 1]).closestPoint(i);
						n[0] = new If(t, o, a),
						n[1] = new If(e, 0, i)
					}
					if (this._minDistance <= this._terminateDistance) return null
				}
			} else if (arguments[2] instanceof Array && arguments[0] instanceof Hc && arguments[1] instanceof Hc) {
				var u = arguments[0],
				c = arguments[1],
				l = arguments[2];
				if (u.getEnvelopeInternal().distance(c.getEnvelopeInternal()) > this._minDistance) return null;
				for (var h = u.getCoordinates(), f = c.getCoordinates(), p = 0; p < h.length - 1; p++) for (var d = 0; d < f.length - 1; d++) {
					var g = oc.distanceLineLine(h[p], h[p + 1], f[d], f[d + 1]);
					if (g < this._minDistance) {
						this._minDistance = g;
						var y = new ph(h[p], h[p + 1]),
						v = new ph(f[d], f[d + 1]),
						m = y.closestPoints(v);
						l[0] = new If(u, p, m[0]),
						l[1] = new If(c, d, m[1])
					}
					if (this._minDistance <= this._terminateDistance) return null
				}
			}
		},
		Pf.prototype.computeMinDistancePoints = function(t, e, n) {
			for (var r = 0; r < t.size(); r++) for (var i = t.get(r), o = 0; o < e.size(); o++) {
				var s = e.get(o),
				a = i.getCoordinate().distance(s.getCoordinate());
				if (a < this._minDistance && (this._minDistance = a, n[0] = new If(i, 0, i.getCoordinate()), n[1] = new If(s, 0, s.getCoordinate())), this._minDistance <= this._terminateDistance) return null
			}
		},
		Pf.prototype.distance = function() {
			if (null === this._geom[0] || null === this._geom[1]) throw new yu("null geometries are not supported");
			return this._geom[0].isEmpty() || this._geom[1].isEmpty() ? 0 : (this.computeMinDistance(), this._minDistance)
		},
		Pf.prototype.computeMinDistanceLines = function(t, e, n) {
			for (var r = 0; r < t.size(); r++) for (var i = t.get(r), o = 0; o < e.size(); o++) {
				var s = e.get(o);
				if (this.computeMinDistance(i, s, n), this._minDistance <= this._terminateDistance) return null
			}
		},
		Pf.prototype.interfaces_ = function() {
			return []
		},
		Pf.prototype.getClass = function() {
			return Pf
		},
		Pf.distance = function(t, e) {
			return new Pf(t, e).distance()
		},
		Pf.isWithinDistance = function(t, e, n) {
			return new Pf(t, e, n).distance() <= n
		},
		Pf.nearestPoints = function(t, e) {
			return new Pf(t, e).nearestPoints()
		};
		var Lf = function() {
			this._pt = [new xu, new xu],
			this._distance = vu.NaN,
			this._isNull = !0
		};
		Lf.prototype.getCoordinates = function() {
			return this._pt
		},
		Lf.prototype.getCoordinate = function(t) {
			return this._pt[t]
		},
		Lf.prototype.setMinimum = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setMinimum(t._pt[0], t._pt[1])
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				if (this._isNull) return this.initialize(e, n),
				null;
				var r = e.distance(n);
				r < this._distance && this.initialize(e, n, r)
			}
		},
		Lf.prototype.initialize = function() {
			if (0 === arguments.length) this._isNull = !0;
			else if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				this._pt[0].setCoordinate(t),
				this._pt[1].setCoordinate(e),
				this._distance = t.distance(e),
				this._isNull = !1
			} else if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2];
				this._pt[0].setCoordinate(n),
				this._pt[1].setCoordinate(r),
				this._distance = i,
				this._isNull = !1
			}
		},
		Lf.prototype.toString = function() {
			return Zu.toLineString(this._pt[0], this._pt[1])
		},
		Lf.prototype.getDistance = function() {
			return this._distance
		},
		Lf.prototype.setMaximum = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				this.setMaximum(t._pt[0], t._pt[1])
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				if (this._isNull) return this.initialize(e, n),
				null;
				var r = e.distance(n);
				r > this._distance && this.initialize(e, n, r)
			}
		},
		Lf.prototype.interfaces_ = function() {
			return []
		},
		Lf.prototype.getClass = function() {
			return Lf
		};
		var Af = function() {};
		Af.prototype.interfaces_ = function() {
			return []
		},
		Af.prototype.getClass = function() {
			return Af
		},
		Af.computeDistance = function() {
			if (arguments[2] instanceof Lf && arguments[0] instanceof Hc && arguments[1] instanceof xu) for (var t = arguments[0], e = arguments[1], n = arguments[2], r = new ph, i = t.getCoordinates(), o = 0; o < i.length - 1; o++) {
				r.setCoordinates(i[o], i[o + 1]);
				var s = r.closestPoint(e);
				n.setMinimum(s, e)
			} else if (arguments[2] instanceof Lf && arguments[0] instanceof Kc && arguments[1] instanceof xu) {
				var a = arguments[0],
				u = arguments[1],
				c = arguments[2];
				Af.computeDistance(a.getExteriorRing(), u, c);
				for (var l = 0; l < a.getNumInteriorRing(); l++) Af.computeDistance(a.getInteriorRingN(l), u, c)
			} else if (arguments[2] instanceof Lf && arguments[0] instanceof uc && arguments[1] instanceof xu) {
				var h = arguments[0],
				f = arguments[1],
				p = arguments[2];
				if (h instanceof Hc) Af.computeDistance(h, f, p);
				else if (h instanceof Kc) Af.computeDistance(h, f, p);
				else if (h instanceof Gc) for (var d = h,
				g = 0; g < d.getNumGeometries(); g++) {
					var y = d.getGeometryN(g);
					Af.computeDistance(y, f, p)
				} else p.setMinimum(h.getCoordinate(), f)
			} else if (arguments[2] instanceof Lf && arguments[0] instanceof ph && arguments[1] instanceof xu) {
				var v = arguments[0],
				m = arguments[1],
				_ = arguments[2],
				w = v.closestPoint(m);
				_.setMinimum(w, m)
			}
		};
		var Of = function() {
			this._g0 = null,
			this._g1 = null,
			this._ptDist = new Lf,
			this._densifyFrac = 0;
			var t = arguments[0],
			e = arguments[1];
			this._g0 = t,
			this._g1 = e
		},
		Tf = {
			MaxPointDistanceFilter: {
				configurable: !0
			},
			MaxDensifiedByFractionDistanceFilter: {
				configurable: !0
			}
		};
		Of.prototype.getCoordinates = function() {
			return this._ptDist.getCoordinates()
		},
		Of.prototype.setDensifyFraction = function(t) {
			if (t > 1 || t <= 0) throw new yu("Fraction is not in range (0.0 - 1.0]");
			this._densifyFrac = t
		},
		Of.prototype.compute = function(t, e) {
			this.computeOrientedDistance(t, e, this._ptDist),
			this.computeOrientedDistance(e, t, this._ptDist)
		},
		Of.prototype.distance = function() {
			return this.compute(this._g0, this._g1),
			this._ptDist.getDistance()
		},
		Of.prototype.computeOrientedDistance = function(t, e, n) {
			var r = new Rf(e);
			if (t.apply(r), n.setMaximum(r.getMaxPointDistance()), this._densifyFrac > 0) {
				var i = new Df(e, this._densifyFrac);
				t.apply(i),
				n.setMaximum(i.getMaxPointDistance())
			}
		},
		Of.prototype.orientedDistance = function() {
			return this.computeOrientedDistance(this._g0, this._g1, this._ptDist),
			this._ptDist.getDistance()
		},
		Of.prototype.interfaces_ = function() {
			return []
		},
		Of.prototype.getClass = function() {
			return Of
		},
		Of.distance = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1];
				return new Of(t, e).distance()
			}
			if (3 === arguments.length) {
				var n = arguments[0],
				r = arguments[1],
				i = arguments[2],
				o = new Of(n, r);
				return o.setDensifyFraction(i),
				o.distance()
			}
		},
		Tf.MaxPointDistanceFilter.get = function() {
			return Rf
		},
		Tf.MaxDensifiedByFractionDistanceFilter.get = function() {
			return Df
		},
		Object.defineProperties(Of, Tf);
		var Rf = function() {
			this._maxPtDist = new Lf,
			this._minPtDist = new Lf,
			this._euclideanDist = new Af,
			this._geom = null;
			var t = arguments[0];
			this._geom = t
		};
		Rf.prototype.filter = function(t) {
			this._minPtDist.initialize(),
			Af.computeDistance(this._geom, t, this._minPtDist),
			this._maxPtDist.setMaximum(this._minPtDist)
		},
		Rf.prototype.getMaxPointDistance = function() {
			return this._maxPtDist
		},
		Rf.prototype.interfaces_ = function() {
			return [hc]
		},
		Rf.prototype.getClass = function() {
			return Rf
		};
		var Df = function() {
			this._maxPtDist = new Lf,
			this._minPtDist = new Lf,
			this._geom = null,
			this._numSubSegs = 0;
			var t = arguments[0],
			e = arguments[1];
			this._geom = t,
			this._numSubSegs = Math.trunc(Math.round(1 / e))
		};
		Df.prototype.filter = function(t, e) {
			if (0 === e) return null;
			for (var n = t.getCoordinate(e - 1), r = t.getCoordinate(e), i = (r.x - n.x) / this._numSubSegs, o = (r.y - n.y) / this._numSubSegs, s = 0; s < this._numSubSegs; s++) {
				var a = n.x + s * i,
				u = n.y + s * o,
				c = new xu(a, u);
				this._minPtDist.initialize(),
				Af.computeDistance(this._geom, c, this._minPtDist),
				this._maxPtDist.setMaximum(this._minPtDist)
			}
		},
		Df.prototype.isDone = function() {
			return ! 1
		},
		Df.prototype.isGeometryChanged = function() {
			return ! 1
		},
		Df.prototype.getMaxPointDistance = function() {
			return this._maxPtDist
		},
		Df.prototype.interfaces_ = function() {
			return [Bc]
		},
		Df.prototype.getClass = function() {
			return Df
		};
		var kf = function(t, e, n) {
			this._minValidDistance = null,
			this._maxValidDistance = null,
			this._minDistanceFound = null,
			this._maxDistanceFound = null,
			this._isValid = !0,
			this._errMsg = null,
			this._errorLocation = null,
			this._errorIndicator = null,
			this._input = t || null,
			this._bufDistance = e || null,
			this._result = n || null
		},
		Ff = {
			VERBOSE: {
				configurable: !0
			},
			MAX_DISTANCE_DIFF_FRAC: {
				configurable: !0
			}
		};
		kf.prototype.checkMaximumDistance = function(t, e, n) {
			var r = new Of(e, t);
			if (r.setDensifyFraction(.25), this._maxDistanceFound = r.orientedDistance(), this._maxDistanceFound > n) {
				this._isValid = !1;
				var i = r.getCoordinates();
				this._errorLocation = i[1],
				this._errorIndicator = t.getFactory().createLineString(i),
				this._errMsg = "Distance between buffer curve and input is too large (" + this._maxDistanceFound + " at " + Zu.toLineString(i[0], i[1]) + ")"
			}
		},
		kf.prototype.isValid = function() {
			var t = Math.abs(this._bufDistance),
			e = kf.MAX_DISTANCE_DIFF_FRAC * t;
			return this._minValidDistance = t - e,
			this._maxValidDistance = t + e,
			!(!this._input.isEmpty() && !this._result.isEmpty()) || (this._bufDistance > 0 ? this.checkPositiveValid() : this.checkNegativeValid(), kf.VERBOSE && Uu.out.println("Min Dist= " + this._minDistanceFound + "  err= " + (1 - this._minDistanceFound / this._bufDistance) + "  Max Dist= " + this._maxDistanceFound + "  err= " + (this._maxDistanceFound / this._bufDistance - 1)), this._isValid)
		},
		kf.prototype.checkNegativeValid = function() {
			if (! (this._input instanceof Kc || this._input instanceof el || this._input instanceof Gc)) return null;
			var t = this.getPolygonLines(this._input);
			if (this.checkMinimumDistance(t, this._result, this._minValidDistance), !this._isValid) return null;
			this.checkMaximumDistance(t, this._result, this._maxValidDistance)
		},
		kf.prototype.getErrorIndicator = function() {
			return this._errorIndicator
		},
		kf.prototype.checkMinimumDistance = function(t, e, n) {
			var r = new Pf(t, e, n);
			if (this._minDistanceFound = r.distance(), this._minDistanceFound < n) {
				this._isValid = !1;
				var i = r.nearestPoints();
				this._errorLocation = r.nearestPoints()[1],
				this._errorIndicator = t.getFactory().createLineString(i),
				this._errMsg = "Distance between buffer curve and input is too small (" + this._minDistanceFound + " at " + Zu.toLineString(i[0], i[1]) + " )"
			}
		},
		kf.prototype.checkPositiveValid = function() {
			var t = this._result.getBoundary();
			if (this.checkMinimumDistance(this._input, t, this._minValidDistance), !this._isValid) return null;
			this.checkMaximumDistance(this._input, t, this._maxValidDistance)
		},
		kf.prototype.getErrorLocation = function() {
			return this._errorLocation
		},
		kf.prototype.getPolygonLines = function(t) {
			for (var e = new xc,
			n = new Ef(e), r = xf.getPolygons(t).iterator(); r.hasNext();) r.next().apply(n);
			return t.getFactory().buildGeometry(e)
		},
		kf.prototype.getErrorMessage = function() {
			return this._errMsg
		},
		kf.prototype.interfaces_ = function() {
			return []
		},
		kf.prototype.getClass = function() {
			return kf
		},
		Ff.VERBOSE.get = function() {
			return ! 1
		},
		Ff.MAX_DISTANCE_DIFF_FRAC.get = function() {
			return.012
		},
		Object.defineProperties(kf, Ff);
		var jf = function(t, e, n) {
			this._isValid = !0,
			this._errorMsg = null,
			this._errorLocation = null,
			this._errorIndicator = null,
			this._input = t || null,
			this._distance = e || null,
			this._result = n || null
		},
		qf = {
			VERBOSE: {
				configurable: !0
			},
			MAX_ENV_DIFF_FRAC: {
				configurable: !0
			}
		};
		jf.prototype.isValid = function() {
			return this.checkPolygonal(),
			this._isValid ? (this.checkExpectedEmpty(), this._isValid ? (this.checkEnvelope(), this._isValid ? (this.checkArea(), this._isValid ? (this.checkDistance(), this._isValid) : this._isValid) : this._isValid) : this._isValid) : this._isValid
		},
		jf.prototype.checkEnvelope = function() {
			if (this._distance < 0) return null;
			var t = this._distance * jf.MAX_ENV_DIFF_FRAC;
			0 === t && (t = .001);
			var e = new Yu(this._input.getEnvelopeInternal());
			e.expandBy(this._distance);
			var n = new Yu(this._result.getEnvelopeInternal());
			n.expandBy(t),
			n.contains(e) || (this._isValid = !1, this._errorMsg = "Buffer envelope is incorrect", this._errorIndicator = this._input.getFactory().toGeometry(n)),
			this.report("Envelope")
		},
		jf.prototype.checkDistance = function() {
			var t = new kf(this._input, this._distance, this._result);
			t.isValid() || (this._isValid = !1, this._errorMsg = t.getErrorMessage(), this._errorLocation = t.getErrorLocation(), this._errorIndicator = t.getErrorIndicator()),
			this.report("Distance")
		},
		jf.prototype.checkArea = function() {
			var t = this._input.getArea(),
			e = this._result.getArea();
			this._distance > 0 && t > e && (this._isValid = !1, this._errorMsg = "Area of positive buffer is smaller than input", this._errorIndicator = this._result),
			this._distance < 0 && t < e && (this._isValid = !1, this._errorMsg = "Area of negative buffer is larger than input", this._errorIndicator = this._result),
			this.report("Area")
		},
		jf.prototype.checkPolygonal = function() {
			this._result instanceof Kc || this._result instanceof el || (this._isValid = !1),
			this._errorMsg = "Result is not polygonal",
			this._errorIndicator = this._result,
			this.report("Polygonal")
		},
		jf.prototype.getErrorIndicator = function() {
			return this._errorIndicator
		},
		jf.prototype.getErrorLocation = function() {
			return this._errorLocation
		},
		jf.prototype.checkExpectedEmpty = function() {
			return this._input.getDimension() >= 2 ? null: this._distance > 0 ? null: (this._result.isEmpty() || (this._isValid = !1, this._errorMsg = "Result is non-empty", this._errorIndicator = this._result), void this.report("ExpectedEmpty"))
		},
		jf.prototype.report = function(t) {
			if (!jf.VERBOSE) return null;
			Uu.out.println("Check " + t + ": " + (this._isValid ? "passed": "FAILED"))
		},
		jf.prototype.getErrorMessage = function() {
			return this._errorMsg
		},
		jf.prototype.interfaces_ = function() {
			return []
		},
		jf.prototype.getClass = function() {
			return jf
		},
		jf.isValidMsg = function(t, e, n) {
			var r = new jf(t, e, n);
			return r.isValid() ? null: r.getErrorMessage()
		},
		jf.isValid = function(t, e, n) {
			return !! new jf(t, e, n).isValid()
		},
		qf.VERBOSE.get = function() {
			return ! 1
		},
		qf.MAX_ENV_DIFF_FRAC.get = function() {
			return.012
		},
		Object.defineProperties(jf, qf);
		var Bf = function() {
			this._pts = null,
			this._data = null;
			var t = arguments[0],
			e = arguments[1];
			this._pts = t,
			this._data = e
		};
		Bf.prototype.getCoordinates = function() {
			return this._pts
		},
		Bf.prototype.size = function() {
			return this._pts.length
		},
		Bf.prototype.getCoordinate = function(t) {
			return this._pts[t]
		},
		Bf.prototype.isClosed = function() {
			return this._pts[0].equals(this._pts[this._pts.length - 1])
		},
		Bf.prototype.getSegmentOctant = function(t) {
			return t === this._pts.length - 1 ? -1 : ch.octant(this.getCoordinate(t), this.getCoordinate(t + 1))
		},
		Bf.prototype.setData = function(t) {
			this._data = t
		},
		Bf.prototype.getData = function() {
			return this._data
		},
		Bf.prototype.toString = function() {
			return Zu.toLineString(new al(this._pts))
		},
		Bf.prototype.interfaces_ = function() {
			return [lh]
		},
		Bf.prototype.getClass = function() {
			return Bf
		};
		var Gf = function() {
			this._findAllIntersections = !1,
			this._isCheckEndSegmentsOnly = !1,
			this._li = null,
			this._interiorIntersection = null,
			this._intSegments = null,
			this._intersections = new xc,
			this._intersectionCount = 0,
			this._keepIntersections = !0;
			var t = arguments[0];
			this._li = t,
			this._interiorIntersection = null
		};
		Gf.prototype.getInteriorIntersection = function() {
			return this._interiorIntersection
		},
		Gf.prototype.setCheckEndSegmentsOnly = function(t) {
			this._isCheckEndSegmentsOnly = t
		},
		Gf.prototype.getIntersectionSegments = function() {
			return this._intSegments
		},
		Gf.prototype.count = function() {
			return this._intersectionCount
		},
		Gf.prototype.getIntersections = function() {
			return this._intersections
		},
		Gf.prototype.setFindAllIntersections = function(t) {
			this._findAllIntersections = t
		},
		Gf.prototype.setKeepIntersections = function(t) {
			this._keepIntersections = t
		},
		Gf.prototype.processIntersections = function(t, e, n, r) {
			if (!this._findAllIntersections && this.hasIntersection()) return null;
			if (t === n && e === r) return null;
			if (this._isCheckEndSegmentsOnly && !this.isEndSegment(t, e) && !this.isEndSegment(n, r)) return null;
			var i = t.getCoordinates()[e],
			o = t.getCoordinates()[e + 1],
			s = n.getCoordinates()[r],
			a = n.getCoordinates()[r + 1];
			this._li.computeIntersection(i, o, s, a),
			this._li.hasIntersection() && this._li.isInteriorIntersection() && (this._intSegments = new Array(4).fill(null), this._intSegments[0] = i, this._intSegments[1] = o, this._intSegments[2] = s, this._intSegments[3] = a, this._interiorIntersection = this._li.getIntersection(0), this._keepIntersections && this._intersections.add(this._interiorIntersection), this._intersectionCount++)
		},
		Gf.prototype.isEndSegment = function(t, e) {
			return 0 === e || e >= t.size() - 2
		},
		Gf.prototype.hasIntersection = function() {
			return null !== this._interiorIntersection
		},
		Gf.prototype.isDone = function() {
			return ! this._findAllIntersections && null !== this._interiorIntersection
		},
		Gf.prototype.interfaces_ = function() {
			return [Vh]
		},
		Gf.prototype.getClass = function() {
			return Gf
		},
		Gf.createAllIntersectionsFinder = function(t) {
			var e = new Gf(t);
			return e.setFindAllIntersections(!0),
			e
		},
		Gf.createAnyIntersectionFinder = function(t) {
			return new Gf(t)
		},
		Gf.createIntersectionCounter = function(t) {
			var e = new Gf(t);
			return e.setFindAllIntersections(!0),
			e.setKeepIntersections(!1),
			e
		};
		var Uf = function() {
			this._li = new nc,
			this._segStrings = null,
			this._findAllIntersections = !1,
			this._segInt = null,
			this._isValid = !0;
			var t = arguments[0];
			this._segStrings = t
		};
		Uf.prototype.execute = function() {
			if (null !== this._segInt) return null;
			this.checkInteriorIntersections()
		},
		Uf.prototype.getIntersections = function() {
			return this._segInt.getIntersections()
		},
		Uf.prototype.isValid = function() {
			return this.execute(),
			this._isValid
		},
		Uf.prototype.setFindAllIntersections = function(t) {
			this._findAllIntersections = t
		},
		Uf.prototype.checkInteriorIntersections = function() {
			this._isValid = !0,
			this._segInt = new Gf(this._li),
			this._segInt.setFindAllIntersections(this._findAllIntersections);
			var t = new wh;
			if (t.setSegmentIntersector(this._segInt), t.computeNodes(this._segStrings), this._segInt.hasIntersection()) return this._isValid = !1,
			null
		},
		Uf.prototype.checkValid = function() {
			if (this.execute(), !this._isValid) throw new Cl(this.getErrorMessage(), this._segInt.getInteriorIntersection())
		},
		Uf.prototype.getErrorMessage = function() {
			if (this._isValid) return "no intersections found";
			var t = this._segInt.getIntersectionSegments();
			return "found non-noded intersection between " + Zu.toLineString(t[0], t[1]) + " and " + Zu.toLineString(t[2], t[3])
		},
		Uf.prototype.interfaces_ = function() {
			return []
		},
		Uf.prototype.getClass = function() {
			return Uf
		},
		Uf.computeIntersections = function(t) {
			var e = new Uf(t);
			return e.setFindAllIntersections(!0),
			e.isValid(),
			e.getIntersections()
		};
		var zf = function t() {
			this._nv = null;
			var e = arguments[0];
			this._nv = new Uf(t.toSegmentStrings(e))
		};
		zf.prototype.checkValid = function() {
			this._nv.checkValid()
		},
		zf.prototype.interfaces_ = function() {
			return []
		},
		zf.prototype.getClass = function() {
			return zf
		},
		zf.toSegmentStrings = function(t) {
			for (var e = new xc,
			n = t.iterator(); n.hasNext();) {
				var r = n.next();
				e.add(new Bf(r.getCoordinates(), r))
			}
			return e
		},
		zf.checkValid = function(t) {
			new zf(t).checkValid()
		};
		var Yf = function(t) {
			this._mapOp = t
		};
		Yf.prototype.map = function(t) {
			for (var e = new xc,
			n = 0; n < t.getNumGeometries(); n++) {
				var r = this._mapOp.map(t.getGeometryN(n));
				r.isEmpty() || e.add(r)
			}
			return t.getFactory().createGeometryCollection(yl.toGeometryArray(e))
		},
		Yf.prototype.interfaces_ = function() {
			return []
		},
		Yf.prototype.getClass = function() {
			return Yf
		},
		Yf.map = function(t, e) {
			return new Yf(e).map(t)
		};
		var Xf = function() {
			this._op = null,
			this._geometryFactory = null,
			this._ptLocator = null,
			this._lineEdgesList = new xc,
			this._resultLineList = new xc;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			this._op = t,
			this._geometryFactory = e,
			this._ptLocator = n
		};
		Xf.prototype.collectLines = function(t) {
			for (var e = this._op.getGraph().getEdgeEnds().iterator(); e.hasNext();) {
				var n = e.next();
				this.collectLineEdge(n, t, this._lineEdgesList),
				this.collectBoundaryTouchEdge(n, t, this._lineEdgesList)
			}
		},
		Xf.prototype.labelIsolatedLine = function(t, e) {
			var n = this._ptLocator.locate(t.getCoordinate(), this._op.getArgGeometry(e));
			t.getLabel().setLocation(e, n)
		},
		Xf.prototype.build = function(t) {
			return this.findCoveredLineEdges(),
			this.collectLines(t),
			this.buildLines(t),
			this._resultLineList
		},
		Xf.prototype.collectLineEdge = function(t, e, n) {
			var r = t.getLabel(),
			i = t.getEdge();
			t.isLineEdge() && (t.isVisited() || !Ip.isResultOfOp(r, e) || i.isCovered() || (n.add(i), t.setVisitedEdge(!0)))
		},
		Xf.prototype.findCoveredLineEdges = function() {
			for (var t = this._op.getGraph().getNodes().iterator(); t.hasNext();) t.next().getEdges().findCoveredLineEdges();
			for (var e = this._op.getGraph().getEdgeEnds().iterator(); e.hasNext();) {
				var n = e.next(),
				r = n.getEdge();
				if (n.isLineEdge() && !r.isCoveredSet()) {
					var i = this._op.isCoveredByA(n.getCoordinate());
					r.setCovered(i)
				}
			}
		},
		Xf.prototype.labelIsolatedLines = function(t) {
			for (var e = t.iterator(); e.hasNext();) {
				var n = e.next(),
				r = n.getLabel();
				n.isIsolated() && (r.isNull(0) ? this.labelIsolatedLine(n, 0) : this.labelIsolatedLine(n, 1))
			}
		},
		Xf.prototype.buildLines = function(t) {
			for (var e = this._lineEdgesList.iterator(); e.hasNext();) {
				var n = e.next(),
				r = this._geometryFactory.createLineString(n.getCoordinates());
				this._resultLineList.add(r),
				n.setInResult(!0)
			}
		},
		Xf.prototype.collectBoundaryTouchEdge = function(t, e, n) {
			var r = t.getLabel();
			return t.isLineEdge() ? null: t.isVisited() ? null: t.isInteriorAreaEdge() ? null: t.getEdge().isInResult() ? null: ($u.isTrue(!(t.isInResult() || t.getSym().isInResult()) || !t.getEdge().isInResult()), void(Ip.isResultOfOp(r, e) && e === Ip.INTERSECTION && (n.add(t.getEdge()), t.setVisitedEdge(!0))))
		},
		Xf.prototype.interfaces_ = function() {
			return []
		},
		Xf.prototype.getClass = function() {
			return Xf
		};
		var Vf = function() {
			this._op = null,
			this._geometryFactory = null,
			this._resultPointList = new xc;
			var t = arguments[0],
			e = arguments[1];
			this._op = t,
			this._geometryFactory = e
		};
		Vf.prototype.filterCoveredNodeToPoint = function(t) {
			var e = t.getCoordinate();
			if (!this._op.isCoveredByLA(e)) {
				var n = this._geometryFactory.createPoint(e);
				this._resultPointList.add(n)
			}
		},
		Vf.prototype.extractNonCoveredResultNodes = function(t) {
			for (var e = this._op.getGraph().getNodes().iterator(); e.hasNext();) {
				var n = e.next();
				if (! (n.isInResult() || n.isIncidentEdgeInResult() || 0 !== n.getEdges().getDegree() && t !== Ip.INTERSECTION)) {
					var r = n.getLabel();
					Ip.isResultOfOp(r, t) && this.filterCoveredNodeToPoint(n)
				}
			}
		},
		Vf.prototype.build = function(t) {
			return this.extractNonCoveredResultNodes(t),
			this._resultPointList
		},
		Vf.prototype.interfaces_ = function() {
			return []
		},
		Vf.prototype.getClass = function() {
			return Vf
		};
		var Wf = function() {
			this._inputGeom = null,
			this._factory = null,
			this._pruneEmptyGeometry = !0,
			this._preserveGeometryCollectionType = !0,
			this._preserveCollections = !1,
			this._preserveType = !1
		};
		Wf.prototype.transformPoint = function(t, e) {
			return this._factory.createPoint(this.transformCoordinates(t.getCoordinateSequence(), t))
		},
		Wf.prototype.transformPolygon = function(t, e) {
			var n = !0,
			r = this.transformLinearRing(t.getExteriorRing(), t);
			null !== r && r instanceof tl && !r.isEmpty() || (n = !1);
			for (var i = new xc,
			o = 0; o < t.getNumInteriorRing(); o++) {
				var s = this.transformLinearRing(t.getInteriorRingN(o), t);
				null === s || s.isEmpty() || (s instanceof tl || (n = !1), i.add(s))
			}
			if (n) return this._factory.createPolygon(r, i.toArray([]));
			var a = new xc;
			return null !== r && a.add(r),
			a.addAll(i),
			this._factory.buildGeometry(a)
		},
		Wf.prototype.createCoordinateSequence = function(t) {
			return this._factory.getCoordinateSequenceFactory().create(t)
		},
		Wf.prototype.getInputGeometry = function() {
			return this._inputGeom
		},
		Wf.prototype.transformMultiLineString = function(t, e) {
			for (var n = new xc,
			r = 0; r < t.getNumGeometries(); r++) {
				var i = this.transformLineString(t.getGeometryN(r), t);
				null !== i && (i.isEmpty() || n.add(i))
			}
			return this._factory.buildGeometry(n)
		},
		Wf.prototype.transformCoordinates = function(t, e) {
			return this.copy(t)
		},
		Wf.prototype.transformLineString = function(t, e) {
			return this._factory.createLineString(this.transformCoordinates(t.getCoordinateSequence(), t))
		},
		Wf.prototype.transformMultiPoint = function(t, e) {
			for (var n = new xc,
			r = 0; r < t.getNumGeometries(); r++) {
				var i = this.transformPoint(t.getGeometryN(r), t);
				null !== i && (i.isEmpty() || n.add(i))
			}
			return this._factory.buildGeometry(n)
		},
		Wf.prototype.transformMultiPolygon = function(t, e) {
			for (var n = new xc,
			r = 0; r < t.getNumGeometries(); r++) {
				var i = this.transformPolygon(t.getGeometryN(r), t);
				null !== i && (i.isEmpty() || n.add(i))
			}
			return this._factory.buildGeometry(n)
		},
		Wf.prototype.copy = function(t) {
			return t.copy()
		},
		Wf.prototype.transformGeometryCollection = function(t, e) {
			for (var n = new xc,
			r = 0; r < t.getNumGeometries(); r++) {
				var i = this.transform(t.getGeometryN(r));
				null !== i && (this._pruneEmptyGeometry && i.isEmpty() || n.add(i))
			}
			return this._preserveGeometryCollectionType ? this._factory.createGeometryCollection(yl.toGeometryArray(n)) : this._factory.buildGeometry(n)
		},
		Wf.prototype.transform = function(t) {
			if (this._inputGeom = t, this._factory = t.getFactory(), t instanceof Zc) return this.transformPoint(t, null);
			if (t instanceof $c) return this.transformMultiPoint(t, null);
			if (t instanceof tl) return this.transformLinearRing(t, null);
			if (t instanceof Hc) return this.transformLineString(t, null);
			if (t instanceof Uc) return this.transformMultiLineString(t, null);
			if (t instanceof Kc) return this.transformPolygon(t, null);
			if (t instanceof el) return this.transformMultiPolygon(t, null);
			if (t instanceof Gc) return this.transformGeometryCollection(t, null);
			throw new yu("Unknown Geometry subtype: " + t.getClass().getName())
		},
		Wf.prototype.transformLinearRing = function(t, e) {
			var n = this.transformCoordinates(t.getCoordinateSequence(), t);
			if (null === n) return this._factory.createLinearRing(null);
			var r = n.size();
			return r > 0 && r < 4 && !this._preserveType ? this._factory.createLineString(n) : this._factory.createLinearRing(n)
		},
		Wf.prototype.interfaces_ = function() {
			return []
		},
		Wf.prototype.getClass = function() {
			return Wf
		};
		var Hf = function t() {
			if (this._snapTolerance = 0, this._srcPts = null, this._seg = new ph, this._allowSnappingToSourceVertices = !1, this._isClosed = !1, arguments[0] instanceof Hc && "number" == typeof arguments[1]) {
				var e = arguments[0],
				n = arguments[1];
				t.call(this, e.getCoordinates(), n)
			} else if (arguments[0] instanceof Array && "number" == typeof arguments[1]) {
				var r = arguments[0],
				i = arguments[1];
				this._srcPts = r,
				this._isClosed = t.isClosed(r),
				this._snapTolerance = i
			}
		};
		Hf.prototype.snapVertices = function(t, e) {
			for (var n = this._isClosed ? t.size() - 1 : t.size(), r = 0; r < n; r++) {
				var i = t.get(r),
				o = this.findSnapForVertex(i, e);
				null !== o && (t.set(r, new xu(o)), 0 === r && this._isClosed && t.set(t.size() - 1, new xu(o)))
			}
		},
		Hf.prototype.findSnapForVertex = function(t, e) {
			for (var n = 0; n < e.length; n++) {
				if (t.equals2D(e[n])) return null;
				if (t.distance(e[n]) < this._snapTolerance) return e[n]
			}
			return null
		},
		Hf.prototype.snapTo = function(t) {
			var e = new Mc(this._srcPts);
			return this.snapVertices(e, t),
			this.snapSegments(e, t),
			e.toCoordinateArray()
		},
		Hf.prototype.snapSegments = function(t, e) {
			if (0 === e.length) return null;
			var n = e.length;
			e[0].equals2D(e[e.length - 1]) && (n = e.length - 1);
			for (var r = 0; r < n; r++) {
				var i = e[r],
				o = this.findSegmentIndexToSnap(i, t);
				o >= 0 && t.add(o + 1, new xu(i), !1)
			}
		},
		Hf.prototype.findSegmentIndexToSnap = function(t, e) {
			for (var n = vu.MAX_VALUE,
			r = -1,
			i = 0; i < e.size() - 1; i++) {
				if (this._seg.p0 = e.get(i), this._seg.p1 = e.get(i + 1), this._seg.p0.equals2D(t) || this._seg.p1.equals2D(t)) {
					if (this._allowSnappingToSourceVertices) continue;
					return - 1
				}
				var o = this._seg.distance(t);
				o < this._snapTolerance && o < n && (n = o, r = i)
			}
			return r
		},
		Hf.prototype.setAllowSnappingToSourceVertices = function(t) {
			this._allowSnappingToSourceVertices = t
		},
		Hf.prototype.interfaces_ = function() {
			return []
		},
		Hf.prototype.getClass = function() {
			return Hf
		},
		Hf.isClosed = function(t) {
			return ! (t.length <= 1) && t[0].equals2D(t[t.length - 1])
		};
		var Jf = function(t) {
			this._srcGeom = t || null
		},
		Zf = {
			SNAP_PRECISION_FACTOR: {
				configurable: !0
			}
		};
		Jf.prototype.snapTo = function(t, e) {
			var n = this.extractTargetCoordinates(t);
			return new Qf(e, n).transform(this._srcGeom)
		},
		Jf.prototype.snapToSelf = function(t, e) {
			var n = this.extractTargetCoordinates(this._srcGeom),
			r = new Qf(t, n, !0).transform(this._srcGeom),
			i = r;
			return e && Nu(i, Qc) && (i = r.buffer(0)),
			i
		},
		Jf.prototype.computeSnapTolerance = function(t) {
			return this.computeMinimumSegmentLength(t) / 10
		},
		Jf.prototype.extractTargetCoordinates = function(t) {
			for (var e = new Bi,
			n = t.getCoordinates(), r = 0; r < n.length; r++) e.add(n[r]);
			return e.toArray(new Array(0).fill(null))
		},
		Jf.prototype.computeMinimumSegmentLength = function(t) {
			for (var e = vu.MAX_VALUE,
			n = 0; n < t.length - 1; n++) {
				var r = t[n].distance(t[n + 1]);
				r < e && (e = r)
			}
			return e
		},
		Jf.prototype.interfaces_ = function() {
			return []
		},
		Jf.prototype.getClass = function() {
			return Jf
		},
		Jf.snap = function(t, e, n) {
			var r = new Array(2).fill(null),
			i = new Jf(t);
			r[0] = i.snapTo(e, n);
			var o = new Jf(e);
			return r[1] = o.snapTo(r[0], n),
			r
		},
		Jf.computeOverlaySnapTolerance = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = Jf.computeSizeBasedSnapTolerance(t),
				n = t.getPrecisionModel();
				if (n.getType() === fl.FIXED) {
					var r = 1 / n.getScale() * 2 / 1.415;
					r > e && (e = r)
				}
				return e
			}
			if (2 === arguments.length) {
				var i = arguments[0],
				o = arguments[1];
				return Math.min(Jf.computeOverlaySnapTolerance(i), Jf.computeOverlaySnapTolerance(o))
			}
		},
		Jf.computeSizeBasedSnapTolerance = function(t) {
			var e = t.getEnvelopeInternal();
			return Math.min(e.getHeight(), e.getWidth()) * Jf.SNAP_PRECISION_FACTOR
		},
		Jf.snapToSelf = function(t, e, n) {
			return new Jf(t).snapToSelf(e, n)
		},
		Zf.SNAP_PRECISION_FACTOR.get = function() {
			return 1e-9
		},
		Object.defineProperties(Jf, Zf);
		var Qf = function(t) {
			function e(e, n, r) {
				t.call(this),
				this._snapTolerance = e || null,
				this._snapPts = n || null,
				this._isSelfSnap = void 0 !== r && r
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.snapLine = function(t, e) {
				var n = new Hf(t, this._snapTolerance);
				return n.setAllowSnappingToSourceVertices(this._isSelfSnap),
				n.snapTo(e)
			},
			e.prototype.transformCoordinates = function(t, e) {
				var n = t.toCoordinateArray(),
				r = this.snapLine(n, this._snapPts);
				return this._factory.getCoordinateSequenceFactory().create(r)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Wf),
		Kf = function() {
			this._isFirst = !0,
			this._commonMantissaBitsCount = 53,
			this._commonBits = 0,
			this._commonSignExp = null
		};
		Kf.prototype.getCommon = function() {
			return vu.longBitsToDouble(this._commonBits)
		},
		Kf.prototype.add = function(t) {
			var e = vu.doubleToLongBits(t);
			return this._isFirst ? (this._commonBits = e, this._commonSignExp = Kf.signExpBits(this._commonBits), this._isFirst = !1, null) : Kf.signExpBits(e) !== this._commonSignExp ? (this._commonBits = 0, null) : (this._commonMantissaBitsCount = Kf.numCommonMostSigMantissaBits(this._commonBits, e), void(this._commonBits = Kf.zeroLowerBits(this._commonBits, 64 - (12 + this._commonMantissaBitsCount))))
		},
		Kf.prototype.toString = function() {
			if (1 === arguments.length) {
				var t = arguments[0],
				e = vu.longBitsToDouble(t),
				n = "0000000000000000000000000000000000000000000000000000000000000000" + vu.toBinaryString(t),
				r = n.substring(n.length - 64);
				return r.substring(0, 1) + "  " + r.substring(1, 12) + "(exp) " + r.substring(12) + " [ " + e + " ]"
			}
		},
		Kf.prototype.interfaces_ = function() {
			return []
		},
		Kf.prototype.getClass = function() {
			return Kf
		},
		Kf.getBit = function(t, e) {
			return 0 != (t & 1 << e) ? 1 : 0
		},
		Kf.signExpBits = function(t) {
			return t >> 52
		},
		Kf.zeroLowerBits = function(t, e) {
			return t & ~ ((1 << e) - 1)
		},
		Kf.numCommonMostSigMantissaBits = function(t, e) {
			for (var n = 0,
			r = 52; r >= 0; r--) {
				if (Kf.getBit(t, r) !== Kf.getBit(e, r)) return n;
				n++
			}
			return 52
		};
		var $f = function() {
			this._commonCoord = null,
			this._ccFilter = new ep
		},
		tp = {
			CommonCoordinateFilter: {
				configurable: !0
			},
			Translater: {
				configurable: !0
			}
		};
		$f.prototype.addCommonBits = function(t) {
			var e = new np(this._commonCoord);
			t.apply(e),
			t.geometryChanged()
		},
		$f.prototype.removeCommonBits = function(t) {
			if (0 === this._commonCoord.x && 0 === this._commonCoord.y) return t;
			var e = new xu(this._commonCoord);
			e.x = -e.x,
			e.y = -e.y;
			var n = new np(e);
			return t.apply(n),
			t.geometryChanged(),
			t
		},
		$f.prototype.getCommonCoordinate = function() {
			return this._commonCoord
		},
		$f.prototype.add = function(t) {
			t.apply(this._ccFilter),
			this._commonCoord = this._ccFilter.getCommonCoordinate()
		},
		$f.prototype.interfaces_ = function() {
			return []
		},
		$f.prototype.getClass = function() {
			return $f
		},
		tp.CommonCoordinateFilter.get = function() {
			return ep
		},
		tp.Translater.get = function() {
			return np
		},
		Object.defineProperties($f, tp);
		var ep = function() {
			this._commonBitsX = new Kf,
			this._commonBitsY = new Kf
		};
		ep.prototype.filter = function(t) {
			this._commonBitsX.add(t.x),
			this._commonBitsY.add(t.y)
		},
		ep.prototype.getCommonCoordinate = function() {
			return new xu(this._commonBitsX.getCommon(), this._commonBitsY.getCommon())
		},
		ep.prototype.interfaces_ = function() {
			return [hc]
		},
		ep.prototype.getClass = function() {
			return ep
		};
		var np = function() {
			this.trans = null;
			var t = arguments[0];
			this.trans = t
		};
		np.prototype.filter = function(t, e) {
			var n = t.getOrdinate(e, 0) + this.trans.x,
			r = t.getOrdinate(e, 1) + this.trans.y;
			t.setOrdinate(e, 0, n),
			t.setOrdinate(e, 1, r)
		},
		np.prototype.isDone = function() {
			return ! 1
		},
		np.prototype.isGeometryChanged = function() {
			return ! 0
		},
		np.prototype.interfaces_ = function() {
			return [Bc]
		},
		np.prototype.getClass = function() {
			return np
		};
		var rp = function(t, e) {
			this._geom = new Array(2).fill(null),
			this._snapTolerance = null,
			this._cbr = null,
			this._geom[0] = t,
			this._geom[1] = e,
			this.computeSnapTolerance()
		};
		rp.prototype.selfSnap = function(t) {
			return new Jf(t).snapTo(t, this._snapTolerance)
		},
		rp.prototype.removeCommonBits = function(t) {
			this._cbr = new $f,
			this._cbr.add(t[0]),
			this._cbr.add(t[1]);
			var e = new Array(2).fill(null);
			return e[0] = this._cbr.removeCommonBits(t[0].copy()),
			e[1] = this._cbr.removeCommonBits(t[1].copy()),
			e
		},
		rp.prototype.prepareResult = function(t) {
			return this._cbr.addCommonBits(t),
			t
		},
		rp.prototype.getResultGeometry = function(t) {
			var e = this.snap(this._geom),
			n = Ip.overlayOp(e[0], e[1], t);
			return this.prepareResult(n)
		},
		rp.prototype.checkValid = function(t) {
			t.isValid() || Uu.out.println("Snapped geometry is invalid")
		},
		rp.prototype.computeSnapTolerance = function() {
			this._snapTolerance = Jf.computeOverlaySnapTolerance(this._geom[0], this._geom[1])
		},
		rp.prototype.snap = function(t) {
			var e = this.removeCommonBits(t);
			return Jf.snap(e[0], e[1], this._snapTolerance)
		},
		rp.prototype.interfaces_ = function() {
			return []
		},
		rp.prototype.getClass = function() {
			return rp
		},
		rp.overlayOp = function(t, e, n) {
			return new rp(t, e).getResultGeometry(n)
		},
		rp.union = function(t, e) {
			return rp.overlayOp(t, e, Ip.UNION)
		},
		rp.intersection = function(t, e) {
			return rp.overlayOp(t, e, Ip.INTERSECTION)
		},
		rp.symDifference = function(t, e) {
			return rp.overlayOp(t, e, Ip.SYMDIFFERENCE)
		},
		rp.difference = function(t, e) {
			return rp.overlayOp(t, e, Ip.DIFFERENCE)
		};
		var ip = function(t, e) {
			this._geom = new Array(2).fill(null),
			this._geom[0] = t,
			this._geom[1] = e
		};
		ip.prototype.getResultGeometry = function(t) {
			var e = null,
			n = !1,
			r = null;
			try {
				e = Ip.overlayOp(this._geom[0], this._geom[1], t),
				n = !0
			} catch(t) {
				if (! (t instanceof Qu)) throw t;
				r = t
			}
			if (!n) try {
				e = rp.overlayOp(this._geom[0], this._geom[1], t)
			} catch(t) {
				throw t instanceof Qu ? r: t
			}
			return e
		},
		ip.prototype.interfaces_ = function() {
			return []
		},
		ip.prototype.getClass = function() {
			return ip
		},
		ip.overlayOp = function(t, e, n) {
			return new ip(t, e).getResultGeometry(n)
		},
		ip.union = function(t, e) {
			return ip.overlayOp(t, e, Ip.UNION)
		},
		ip.intersection = function(t, e) {
			return ip.overlayOp(t, e, Ip.INTERSECTION)
		},
		ip.symDifference = function(t, e) {
			return ip.overlayOp(t, e, Ip.SYMDIFFERENCE)
		},
		ip.difference = function(t, e) {
			return ip.overlayOp(t, e, Ip.DIFFERENCE)
		};
		var op = function() {
			this.mce = null,
			this.chainIndex = null;
			var t = arguments[0],
			e = arguments[1];
			this.mce = t,
			this.chainIndex = e
		};
		op.prototype.computeIntersections = function(t, e) {
			this.mce.computeIntersectsForChain(this.chainIndex, t.mce, t.chainIndex, e)
		},
		op.prototype.interfaces_ = function() {
			return []
		},
		op.prototype.getClass = function() {
			return op
		};
		var sp = function t() {
			if (this._label = null, this._xValue = null, this._eventType = null, this._insertEvent = null, this._deleteEventIndex = null, this._obj = null, 2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				this._eventType = t.DELETE,
				this._xValue = e,
				this._insertEvent = n
			} else if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				this._eventType = t.INSERT,
				this._label = r,
				this._xValue = i,
				this._obj = o
			}
		},
		ap = {
			INSERT: {
				configurable: !0
			},
			DELETE: {
				configurable: !0
			}
		};
		sp.prototype.isDelete = function() {
			return this._eventType === sp.DELETE
		},
		sp.prototype.setDeleteEventIndex = function(t) {
			this._deleteEventIndex = t
		},
		sp.prototype.getObject = function() {
			return this._obj
		},
		sp.prototype.compareTo = function(t) {
			var e = t;
			return this._xValue < e._xValue ? -1 : this._xValue > e._xValue ? 1 : this._eventType < e._eventType ? -1 : this._eventType > e._eventType ? 1 : 0
		},
		sp.prototype.getInsertEvent = function() {
			return this._insertEvent
		},
		sp.prototype.isInsert = function() {
			return this._eventType === sp.INSERT
		},
		sp.prototype.isSameLabel = function(t) {
			return null !== this._label && this._label === t._label
		},
		sp.prototype.getDeleteEventIndex = function() {
			return this._deleteEventIndex
		},
		sp.prototype.interfaces_ = function() {
			return [_u]
		},
		sp.prototype.getClass = function() {
			return sp
		},
		ap.INSERT.get = function() {
			return 1
		},
		ap.DELETE.get = function() {
			return 2
		},
		Object.defineProperties(sp, ap);
		var up = function() {};
		up.prototype.interfaces_ = function() {
			return []
		},
		up.prototype.getClass = function() {
			return up
		};
		var cp = function() {
			this._hasIntersection = !1,
			this._hasProper = !1,
			this._hasProperInterior = !1,
			this._properIntersectionPoint = null,
			this._li = null,
			this._includeProper = null,
			this._recordIsolated = null,
			this._isSelfIntersection = null,
			this._numIntersections = 0,
			this.numTests = 0,
			this._bdyNodes = null,
			this._isDone = !1,
			this._isDoneWhenProperInt = !1;
			var t = arguments[0],
			e = arguments[1],
			n = arguments[2];
			this._li = t,
			this._includeProper = e,
			this._recordIsolated = n
		};
		cp.prototype.isTrivialIntersection = function(t, e, n, r) {
			if (t === n && 1 === this._li.getIntersectionNum()) {
				if (cp.isAdjacentSegments(e, r)) return ! 0;
				if (t.isClosed()) {
					var i = t.getNumPoints() - 1;
					if (0 === e && r === i || 0 === r && e === i) return ! 0
				}
			}
			return ! 1
		},
		cp.prototype.getProperIntersectionPoint = function() {
			return this._properIntersectionPoint
		},
		cp.prototype.setIsDoneIfProperInt = function(t) {
			this._isDoneWhenProperInt = t
		},
		cp.prototype.hasProperInteriorIntersection = function() {
			return this._hasProperInterior
		},
		cp.prototype.isBoundaryPointInternal = function(t, e) {
			for (var n = e.iterator(); n.hasNext();) {
				var r = n.next().getCoordinate();
				if (t.isIntersection(r)) return ! 0
			}
			return ! 1
		},
		cp.prototype.hasProperIntersection = function() {
			return this._hasProper
		},
		cp.prototype.hasIntersection = function() {
			return this._hasIntersection
		},
		cp.prototype.isDone = function() {
			return this._isDone
		},
		cp.prototype.isBoundaryPoint = function(t, e) {
			return ! (null === e || !this.isBoundaryPointInternal(t, e[0]) && !this.isBoundaryPointInternal(t, e[1]))
		},
		cp.prototype.setBoundaryNodes = function(t, e) {
			this._bdyNodes = new Array(2).fill(null),
			this._bdyNodes[0] = t,
			this._bdyNodes[1] = e
		},
		cp.prototype.addIntersections = function(t, e, n, r) {
			if (t === n && e === r) return null;
			this.numTests++;
			var i = t.getCoordinates()[e],
			o = t.getCoordinates()[e + 1],
			s = n.getCoordinates()[r],
			a = n.getCoordinates()[r + 1];
			this._li.computeIntersection(i, o, s, a),
			this._li.hasIntersection() && (this._recordIsolated && (t.setIsolated(!1), n.setIsolated(!1)), this._numIntersections++, this.isTrivialIntersection(t, e, n, r) || (this._hasIntersection = !0, !this._includeProper && this._li.isProper() || (t.addIntersections(this._li, e, 0), n.addIntersections(this._li, r, 1)), this._li.isProper() && (this._properIntersectionPoint = this._li.getIntersection(0).copy(), this._hasProper = !0, this._isDoneWhenProperInt && (this._isDone = !0), this.isBoundaryPoint(this._li, this._bdyNodes) || (this._hasProperInterior = !0))))
		},
		cp.prototype.interfaces_ = function() {
			return []
		},
		cp.prototype.getClass = function() {
			return cp
		},
		cp.isAdjacentSegments = function(t, e) {
			return 1 === Math.abs(t - e)
		};
		var lp = function(t) {
			function e() {
				t.call(this),
				this.events = new xc,
				this.nOverlaps = null
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.prepareEvents = function() {
				Kl.sort(this.events);
				for (var t = 0; t < this.events.size(); t++) {
					var e = this.events.get(t);
					e.isDelete() && e.getInsertEvent().setDeleteEventIndex(t)
				}
			},
			e.prototype.computeIntersections = function() {
				if (1 === arguments.length) {
					var t = arguments[0];
					this.nOverlaps = 0,
					this.prepareEvents();
					for (var e = 0; e < this.events.size(); e++) {
						var n = this.events.get(e);
						if (n.isInsert() && this.processOverlaps(e, n.getDeleteEventIndex(), n, t), t.isDone()) break
					}
				} else if (3 === arguments.length) if (arguments[2] instanceof cp && Nu(arguments[0], bc) && Nu(arguments[1], bc)) {
					var r = arguments[0],
					i = arguments[1],
					o = arguments[2];
					this.addEdges(r, r),
					this.addEdges(i, i),
					this.computeIntersections(o)
				} else if ("boolean" == typeof arguments[2] && Nu(arguments[0], bc) && arguments[1] instanceof cp) {
					var s = arguments[0],
					a = arguments[1];
					arguments[2] ? this.addEdges(s, null) : this.addEdges(s),
					this.computeIntersections(a)
				}
			},
			e.prototype.addEdge = function(t, e) {
				for (var n = t.getMonotoneChainEdge(), r = n.getStartIndexes(), i = 0; i < r.length - 1; i++) {
					var o = new op(n, i),
					s = new sp(e, n.getMinX(i), o);
					this.events.add(s),
					this.events.add(new sp(n.getMaxX(i), s))
				}
			},
			e.prototype.processOverlaps = function(t, e, n, r) {
				for (var i = n.getObject(), o = t; o < e; o++) {
					var s = this.events.get(o);
					if (s.isInsert()) {
						var a = s.getObject();
						n.isSameLabel(s) || (i.computeIntersections(a, r), this.nOverlaps++)
					}
				}
			},
			e.prototype.addEdges = function() {
				if (1 === arguments.length) for (var t = arguments[0].iterator(); t.hasNext();) {
					var e = t.next();
					this.addEdge(e, e)
				} else if (2 === arguments.length) for (var n = arguments[0], r = arguments[1], i = n.iterator(); i.hasNext();) {
					var o = i.next();
					this.addEdge(o, r)
				}
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (up),
		hp = function() {
			this._min = vu.POSITIVE_INFINITY,
			this._max = vu.NEGATIVE_INFINITY
		},
		fp = {
			NodeComparator: {
				configurable: !0
			}
		};
		hp.prototype.getMin = function() {
			return this._min
		},
		hp.prototype.intersects = function(t, e) {
			return ! (this._min > e || this._max < t)
		},
		hp.prototype.getMax = function() {
			return this._max
		},
		hp.prototype.toString = function() {
			return Zu.toLineString(new xu(this._min, 0), new xu(this._max, 0))
		},
		hp.prototype.interfaces_ = function() {
			return []
		},
		hp.prototype.getClass = function() {
			return hp
		},
		fp.NodeComparator.get = function() {
			return pp
		},
		Object.defineProperties(hp, fp);
		var pp = function() {};
		pp.prototype.compare = function(t, e) {
			var n = t,
			r = e,
			i = (n._min + n._max) / 2,
			o = (r._min + r._max) / 2;
			return i < o ? -1 : i > o ? 1 : 0
		},
		pp.prototype.interfaces_ = function() {
			return [bu]
		},
		pp.prototype.getClass = function() {
			return pp
		};
		var dp = function(t) {
			function e() {
				t.call(this),
				this._item = null;
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2];
				this._min = e,
				this._max = n,
				this._item = r
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.query = function(t, e, n) {
				if (!this.intersects(t, e)) return null;
				n.visitItem(this._item)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (hp),
		gp = function(t) {
			function e() {
				t.call(this),
				this._node1 = null,
				this._node2 = null;
				var e = arguments[0],
				n = arguments[1];
				this._node1 = e,
				this._node2 = n,
				this.buildExtent(this._node1, this._node2)
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.buildExtent = function(t, e) {
				this._min = Math.min(t._min, e._min),
				this._max = Math.max(t._max, e._max)
			},
			e.prototype.query = function(t, e, n) {
				if (!this.intersects(t, e)) return null;
				null !== this._node1 && this._node1.query(t, e, n),
				null !== this._node2 && this._node2.query(t, e, n)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (hp),
		yp = function() {
			this._leaves = new xc,
			this._root = null,
			this._level = 0
		};
		yp.prototype.buildTree = function() {
			Kl.sort(this._leaves, new hp.NodeComparator);
			for (var t = this._leaves,
			e = null,
			n = new xc;;) {
				if (this.buildLevel(t, n), 1 === n.size()) return n.get(0);
				e = t,
				t = n,
				n = e
			}
		},
		yp.prototype.insert = function(t, e, n) {
			if (null !== this._root) throw new Error("Index cannot be added to once it has been queried");
			this._leaves.add(new dp(t, e, n))
		},
		yp.prototype.query = function(t, e, n) {
			this.init(),
			this._root.query(t, e, n)
		},
		yp.prototype.buildRoot = function() {
			if (null !== this._root) return null;
			this._root = this.buildTree()
		},
		yp.prototype.printNode = function(t) {
			Uu.out.println(Zu.toLineString(new xu(t._min, this._level), new xu(t._max, this._level)))
		},
		yp.prototype.init = function() {
			if (null !== this._root) return null;
			this.buildRoot()
		},
		yp.prototype.buildLevel = function(t, e) {
			this._level++,
			e.clear();
			for (var n = 0; n < t.size(); n += 2) {
				var r = t.get(n);
				if (null === (n + 1 < t.size() ? t.get(n) : null)) e.add(r);
				else {
					var i = new gp(t.get(n), t.get(n + 1));
					e.add(i)
				}
			}
		},
		yp.prototype.interfaces_ = function() {
			return []
		},
		yp.prototype.getClass = function() {
			return yp
		};
		var vp = function() {
			this._items = new xc
		};
		vp.prototype.visitItem = function(t) {
			this._items.add(t)
		},
		vp.prototype.getItems = function() {
			return this._items
		},
		vp.prototype.interfaces_ = function() {
			return [Hl]
		},
		vp.prototype.getClass = function() {
			return vp
		};
		var mp = function() {
			this._index = null;
			var t = arguments[0];
			if (!Nu(t, Qc)) throw new yu("Argument must be Polygonal");
			this._index = new bp(t)
		},
		_p = {
			SegmentVisitor: {
				configurable: !0
			},
			IntervalIndexedGeometry: {
				configurable: !0
			}
		};
		mp.prototype.locate = function(t) {
			var e = new ic(t),
			n = new wp(e);
			return this._index.query(t.y, t.y, n),
			e.getLocation()
		},
		mp.prototype.interfaces_ = function() {
			return [jh]
		},
		mp.prototype.getClass = function() {
			return mp
		},
		_p.SegmentVisitor.get = function() {
			return wp
		},
		_p.IntervalIndexedGeometry.get = function() {
			return bp
		},
		Object.defineProperties(mp, _p);
		var wp = function() {
			this._counter = null;
			var t = arguments[0];
			this._counter = t
		};
		wp.prototype.visitItem = function(t) {
			var e = t;
			this._counter.countSegment(e.getCoordinate(0), e.getCoordinate(1))
		},
		wp.prototype.interfaces_ = function() {
			return [Hl]
		},
		wp.prototype.getClass = function() {
			return wp
		};
		var bp = function() {
			this._index = new yp;
			var t = arguments[0];
			this.init(t)
		};
		bp.prototype.init = function(t) {
			for (var e = Ef.getLines(t).iterator(); e.hasNext();) {
				var n = e.next().getCoordinates();
				this.addLine(n)
			}
		},
		bp.prototype.addLine = function(t) {
			for (var e = 1; e < t.length; e++) {
				var n = new ph(t[e - 1], t[e]),
				r = Math.min(n.p0.y, n.p1.y),
				i = Math.max(n.p0.y, n.p1.y);
				this._index.insert(r, i, n)
			}
		},
		bp.prototype.query = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = new vp;
				return this._index.query(t, e, n),
				n.getItems()
			}
			if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				this._index.query(r, i, o)
			}
		},
		bp.prototype.interfaces_ = function() {
			return []
		},
		bp.prototype.getClass = function() {
			return bp
		};
		var xp = function(t) {
			function e() {
				if (t.call(this), this._parentGeom = null, this._lineEdgeMap = new hl, this._boundaryNodeRule = null, this._useBoundaryDeterminationRule = !0, this._argIndex = null, this._boundaryNodes = null, this._hasTooFewPoints = !1, this._invalidPoint = null, this._areaPtLocator = null, this._ptLocator = new Mf, 2 === arguments.length) {
					var e = arguments[0],
					n = arguments[1],
					r = fc.OGC_SFS_BOUNDARY_RULE;
					this._argIndex = e,
					this._parentGeom = n,
					this._boundaryNodeRule = r,
					null !== n && this.add(n)
				} else if (3 === arguments.length) {
					var i = arguments[0],
					o = arguments[1],
					s = arguments[2];
					this._argIndex = i,
					this._parentGeom = o,
					this._boundaryNodeRule = s,
					null !== o && this.add(o)
				}
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.insertBoundaryPoint = function(t, n) {
				var r = this._nodes.addNode(n).getLabel(),
				i = 1;
				Su.NONE,
				r.getLocation(t, Ml.ON) === Su.BOUNDARY && i++;
				var o = e.determineBoundary(this._boundaryNodeRule, i);
				r.setLocation(t, o)
			},
			e.prototype.computeSelfNodes = function() {
				if (2 === arguments.length) {
					var t = arguments[0],
					e = arguments[1];
					return this.computeSelfNodes(t, e, !1)
				}
				if (3 === arguments.length) {
					var n = arguments[0],
					r = arguments[1],
					i = arguments[2],
					o = new cp(n, !0, !1);
					o.setIsDoneIfProperInt(i);
					var s = this.createEdgeSetIntersector(),
					a = this._parentGeom instanceof tl || this._parentGeom instanceof Kc || this._parentGeom instanceof el,
					u = r || !a;
					return s.computeIntersections(this._edges, o, u),
					this.addSelfIntersectionNodes(this._argIndex),
					o
				}
			},
			e.prototype.computeSplitEdges = function(t) {
				for (var e = this._edges.iterator(); e.hasNext();) e.next().eiList.addSplitEdges(t)
			},
			e.prototype.computeEdgeIntersections = function(t, e, n) {
				var r = new cp(e, n, !0);
				return r.setBoundaryNodes(this.getBoundaryNodes(), t.getBoundaryNodes()),
				this.createEdgeSetIntersector().computeIntersections(this._edges, t._edges, r),
				r
			},
			e.prototype.getGeometry = function() {
				return this._parentGeom
			},
			e.prototype.getBoundaryNodeRule = function() {
				return this._boundaryNodeRule
			},
			e.prototype.hasTooFewPoints = function() {
				return this._hasTooFewPoints
			},
			e.prototype.addPoint = function() {
				if (arguments[0] instanceof Zc) {
					var t = arguments[0].getCoordinate();
					this.insertPoint(this._argIndex, t, Su.INTERIOR)
				} else if (arguments[0] instanceof xu) {
					var e = arguments[0];
					this.insertPoint(this._argIndex, e, Su.INTERIOR)
				}
			},
			e.prototype.addPolygon = function(t) {
				this.addPolygonRing(t.getExteriorRing(), Su.EXTERIOR, Su.INTERIOR);
				for (var e = 0; e < t.getNumInteriorRing(); e++) {
					var n = t.getInteriorRingN(e);
					this.addPolygonRing(n, Su.INTERIOR, Su.EXTERIOR)
				}
			},
			e.prototype.addEdge = function(t) {
				this.insertEdge(t);
				var e = t.getCoordinates();
				this.insertPoint(this._argIndex, e[0], Su.BOUNDARY),
				this.insertPoint(this._argIndex, e[e.length - 1], Su.BOUNDARY)
			},
			e.prototype.addLineString = function(t) {
				var e = Ic.removeRepeatedPoints(t.getCoordinates());
				if (e.length < 2) return this._hasTooFewPoints = !0,
				this._invalidPoint = e[0],
				null;
				var n = new tf(e, new Al(this._argIndex, Su.INTERIOR));
				this._lineEdgeMap.put(t, n),
				this.insertEdge(n),
				$u.isTrue(e.length >= 2, "found LineString with single point"),
				this.insertBoundaryPoint(this._argIndex, e[0]),
				this.insertBoundaryPoint(this._argIndex, e[e.length - 1])
			},
			e.prototype.getInvalidPoint = function() {
				return this._invalidPoint
			},
			e.prototype.getBoundaryPoints = function() {
				for (var t = this.getBoundaryNodes(), e = new Array(t.size()).fill(null), n = 0, r = t.iterator(); r.hasNext();) {
					var i = r.next();
					e[n++] = i.getCoordinate().copy()
				}
				return e
			},
			e.prototype.getBoundaryNodes = function() {
				return null === this._boundaryNodes && (this._boundaryNodes = this._nodes.getBoundaryNodes(this._argIndex)),
				this._boundaryNodes
			},
			e.prototype.addSelfIntersectionNode = function(t, e, n) {
				if (this.isBoundaryNode(t, e)) return null;
				n === Su.BOUNDARY && this._useBoundaryDeterminationRule ? this.insertBoundaryPoint(t, e) : this.insertPoint(t, e, n)
			},
			e.prototype.addPolygonRing = function(t, e, n) {
				if (t.isEmpty()) return null;
				var r = Ic.removeRepeatedPoints(t.getCoordinates());
				if (r.length < 4) return this._hasTooFewPoints = !0,
				this._invalidPoint = r[0],
				null;
				var i = e,
				o = n;
				oc.isCCW(r) && (i = n, o = e);
				var s = new tf(r, new Al(this._argIndex, Su.BOUNDARY, i, o));
				this._lineEdgeMap.put(t, s),
				this.insertEdge(s),
				this.insertPoint(this._argIndex, r[0], Su.BOUNDARY)
			},
			e.prototype.insertPoint = function(t, e, n) {
				var r = this._nodes.addNode(e),
				i = r.getLabel();
				null === i ? r._label = new Al(t, n) : i.setLocation(t, n)
			},
			e.prototype.createEdgeSetIntersector = function() {
				return new lp
			},
			e.prototype.addSelfIntersectionNodes = function(t) {
				for (var e = this._edges.iterator(); e.hasNext();) for (var n = e.next(), r = n.getLabel().getLocation(t), i = n.eiList.iterator(); i.hasNext();) {
					var o = i.next();
					this.addSelfIntersectionNode(t, o.coord, r)
				}
			},
			e.prototype.add = function() {
				if (1 !== arguments.length) return t.prototype.add.apply(this, arguments);
				var e = arguments[0];
				if (e.isEmpty()) return null;
				if (e instanceof el && (this._useBoundaryDeterminationRule = !1), e instanceof Kc) this.addPolygon(e);
				else if (e instanceof Hc) this.addLineString(e);
				else if (e instanceof Zc) this.addPoint(e);
				else if (e instanceof $c) this.addCollection(e);
				else if (e instanceof Uc) this.addCollection(e);
				else if (e instanceof el) this.addCollection(e);
				else {
					if (! (e instanceof Gc)) throw new Error(e.getClass().getName());
					this.addCollection(e)
				}
			},
			e.prototype.addCollection = function(t) {
				for (var e = 0; e < t.getNumGeometries(); e++) {
					var n = t.getGeometryN(e);
					this.add(n)
				}
			},
			e.prototype.locate = function(t) {
				return Nu(this._parentGeom, Qc) && this._parentGeom.getNumGeometries() > 50 ? (null === this._areaPtLocator && (this._areaPtLocator = new mp(this._parentGeom)), this._areaPtLocator.locate(t)) : this._ptLocator.locate(t, this._parentGeom)
			},
			e.prototype.findEdge = function() {
				if (1 === arguments.length) {
					var e = arguments[0];
					return this._lineEdgeMap.get(e)
				}
				return t.prototype.findEdge.apply(this, arguments)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e.determineBoundary = function(t, e) {
				return t.isInBoundary(e) ? Su.BOUNDARY: Su.INTERIOR
			},
			e
		} (zl),
		Ep = function() {
			if (this._li = new nc, this._resultPrecisionModel = null, this._arg = null, 1 === arguments.length) {
				var t = arguments[0];
				this.setComputationPrecision(t.getPrecisionModel()),
				this._arg = new Array(1).fill(null),
				this._arg[0] = new xp(0, t)
			} else if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = fc.OGC_SFS_BOUNDARY_RULE;
				e.getPrecisionModel().compareTo(n.getPrecisionModel()) >= 0 ? this.setComputationPrecision(e.getPrecisionModel()) : this.setComputationPrecision(n.getPrecisionModel()),
				this._arg = new Array(2).fill(null),
				this._arg[0] = new xp(0, e, r),
				this._arg[1] = new xp(1, n, r)
			} else if (3 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2];
				i.getPrecisionModel().compareTo(o.getPrecisionModel()) >= 0 ? this.setComputationPrecision(i.getPrecisionModel()) : this.setComputationPrecision(o.getPrecisionModel()),
				this._arg = new Array(2).fill(null),
				this._arg[0] = new xp(0, i, s),
				this._arg[1] = new xp(1, o, s)
			}
		};
		Ep.prototype.getArgGeometry = function(t) {
			return this._arg[t].getGeometry()
		},
		Ep.prototype.setComputationPrecision = function(t) {
			this._resultPrecisionModel = t,
			this._li.setPrecisionModel(this._resultPrecisionModel)
		},
		Ep.prototype.interfaces_ = function() {
			return []
		},
		Ep.prototype.getClass = function() {
			return Ep
		};
		var Mp = function() {};
		Mp.prototype.interfaces_ = function() {
			return []
		},
		Mp.prototype.getClass = function() {
			return Mp
		},
		Mp.map = function() {
			if (arguments[0] instanceof uc && Nu(arguments[1], Mp.MapOp)) {
				for (var t = arguments[0], e = arguments[1], n = new xc, r = 0; r < t.getNumGeometries(); r++) {
					var i = e.map(t.getGeometryN(r));
					null !== i && n.add(i)
				}
				return t.getFactory().buildGeometry(n)
			}
			if (Nu(arguments[0], mc) && Nu(arguments[1], Mp.MapOp)) {
				for (var o = arguments[0], s = arguments[1], a = new xc, u = o.iterator(); u.hasNext();) {
					var c = u.next(),
					l = s.map(c);
					null !== l && a.add(l)
				}
				return a
			}
		},
		Mp.MapOp = function() {};
		var Ip = function(t) {
			function e() {
				var e = arguments[0],
				n = arguments[1];
				t.call(this, e, n),
				this._ptLocator = new Mf,
				this._geomFact = null,
				this._resultGeom = null,
				this._graph = null,
				this._edgeList = new Xh,
				this._resultPolyList = new xc,
				this._resultLineList = new xc,
				this._resultPointList = new xc,
				this._graph = new zl(new zh),
				this._geomFact = e.getFactory()
			}
			return t && (e.__proto__ = t),
			e.prototype = Object.create(t && t.prototype),
			e.prototype.constructor = e,
			e.prototype.insertUniqueEdge = function(t) {
				var e = this._edgeList.findEqualEdge(t);
				if (null !== e) {
					var n = e.getLabel(),
					r = t.getLabel();
					e.isPointwiseEqual(t) || (r = new Al(t.getLabel())).flip();
					var i = e.getDepth();
					i.isNull() && i.add(n),
					i.add(r),
					n.merge(r)
				} else this._edgeList.add(t)
			},
			e.prototype.getGraph = function() {
				return this._graph
			},
			e.prototype.cancelDuplicateResultEdges = function() {
				for (var t = this._graph.getEdgeEnds().iterator(); t.hasNext();) {
					var e = t.next(),
					n = e.getSym();
					e.isInResult() && n.isInResult() && (e.setInResult(!1), n.setInResult(!1))
				}
			},
			e.prototype.isCoveredByLA = function(t) {
				return !! this.isCovered(t, this._resultLineList) || !!this.isCovered(t, this._resultPolyList)
			},
			e.prototype.computeGeometry = function(t, n, r, i) {
				var o = new xc;
				return o.addAll(t),
				o.addAll(n),
				o.addAll(r),
				o.isEmpty() ? e.createEmptyResult(i, this._arg[0].getGeometry(), this._arg[1].getGeometry(), this._geomFact) : this._geomFact.buildGeometry(o)
			},
			e.prototype.mergeSymLabels = function() {
				for (var t = this._graph.getNodes().iterator(); t.hasNext();) t.next().getEdges().mergeSymLabels()
			},
			e.prototype.isCovered = function(t, e) {
				for (var n = e.iterator(); n.hasNext();) {
					var r = n.next();
					if (this._ptLocator.locate(t, r) !== Su.EXTERIOR) return ! 0
				}
				return ! 1
			},
			e.prototype.replaceCollapsedEdges = function() {
				for (var t = new xc,
				e = this._edgeList.iterator(); e.hasNext();) {
					var n = e.next();
					n.isCollapsed() && (e.remove(), t.add(n.getCollapsedEdge()))
				}
				this._edgeList.addAll(t)
			},
			e.prototype.updateNodeLabelling = function() {
				for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
					var e = t.next(),
					n = e.getEdges().getLabel();
					e.getLabel().merge(n)
				}
			},
			e.prototype.getResultGeometry = function(t) {
				return this.computeOverlay(t),
				this._resultGeom
			},
			e.prototype.insertUniqueEdges = function(t) {
				for (var e = t.iterator(); e.hasNext();) {
					var n = e.next();
					this.insertUniqueEdge(n)
				}
			},
			e.prototype.computeOverlay = function(t) {
				this.copyPoints(0),
				this.copyPoints(1),
				this._arg[0].computeSelfNodes(this._li, !1),
				this._arg[1].computeSelfNodes(this._li, !1),
				this._arg[0].computeEdgeIntersections(this._arg[1], this._li, !0);
				var e = new xc;
				this._arg[0].computeSplitEdges(e),
				this._arg[1].computeSplitEdges(e),
				this.insertUniqueEdges(e),
				this.computeLabelsFromDepths(),
				this.replaceCollapsedEdges(),
				zf.checkValid(this._edgeList.getEdges()),
				this._graph.addEdges(this._edgeList.getEdges()),
				this.computeLabelling(),
				this.labelIncompleteNodes(),
				this.findResultAreaEdges(t),
				this.cancelDuplicateResultEdges();
				var n = new Yl(this._geomFact);
				n.add(this._graph),
				this._resultPolyList = n.getPolygons();
				var r = new Xf(this, this._geomFact, this._ptLocator);
				this._resultLineList = r.build(t);
				var i = new Vf(this, this._geomFact, this._ptLocator);
				this._resultPointList = i.build(t),
				this._resultGeom = this.computeGeometry(this._resultPointList, this._resultLineList, this._resultPolyList, t)
			},
			e.prototype.labelIncompleteNode = function(t, e) {
				var n = this._ptLocator.locate(t.getCoordinate(), this._arg[e].getGeometry());
				t.getLabel().setLocation(e, n)
			},
			e.prototype.copyPoints = function(t) {
				for (var e = this._arg[t].getNodeIterator(); e.hasNext();) {
					var n = e.next();
					this._graph.addNode(n.getCoordinate()).setLabel(t, n.getLabel().getLocation(t))
				}
			},
			e.prototype.findResultAreaEdges = function(t) {
				for (var n = this._graph.getEdgeEnds().iterator(); n.hasNext();) {
					var r = n.next(),
					i = r.getLabel();
					i.isArea() && !r.isInteriorAreaEdge() && e.isResultOfOp(i.getLocation(0, Ml.RIGHT), i.getLocation(1, Ml.RIGHT), t) && r.setInResult(!0)
				}
			},
			e.prototype.computeLabelsFromDepths = function() {
				for (var t = this._edgeList.iterator(); t.hasNext();) {
					var e = t.next(),
					n = e.getLabel(),
					r = e.getDepth();
					if (!r.isNull()) {
						r.normalize();
						for (var i = 0; i < 2; i++) n.isNull(i) || !n.isArea() || r.isNull(i) || (0 === r.getDelta(i) ? n.toLine(i) : ($u.isTrue(!r.isNull(i, Ml.LEFT), "depth of LEFT side has not been initialized"), n.setLocation(i, Ml.LEFT, r.getLocation(i, Ml.LEFT)), $u.isTrue(!r.isNull(i, Ml.RIGHT), "depth of RIGHT side has not been initialized"), n.setLocation(i, Ml.RIGHT, r.getLocation(i, Ml.RIGHT))))
					}
				}
			},
			e.prototype.computeLabelling = function() {
				for (var t = this._graph.getNodes().iterator(); t.hasNext();) t.next().getEdges().computeLabelling(this._arg);
				this.mergeSymLabels(),
				this.updateNodeLabelling()
			},
			e.prototype.labelIncompleteNodes = function() {
				for (var t = this._graph.getNodes().iterator(); t.hasNext();) {
					var e = t.next(),
					n = e.getLabel();
					e.isIsolated() && (n.isNull(0) ? this.labelIncompleteNode(e, 0) : this.labelIncompleteNode(e, 1)),
					e.getEdges().updateLabelling(n)
				}
			},
			e.prototype.isCoveredByA = function(t) {
				return !! this.isCovered(t, this._resultPolyList)
			},
			e.prototype.interfaces_ = function() {
				return []
			},
			e.prototype.getClass = function() {
				return e
			},
			e
		} (Ep);
		Ip.overlayOp = function(t, e, n) {
			return new Ip(t, e).getResultGeometry(n)
		},
		Ip.intersection = function(t, e) {
			if (t.isEmpty() || e.isEmpty()) return Ip.createEmptyResult(Ip.INTERSECTION, t, e, t.getFactory());
			if (t.isGeometryCollection()) {
				var n = e;
				return Yf.map(t, {
					interfaces_: function() {
						return [Mp.MapOp]
					},
					map: function(t) {
						return t.intersection(n)
					}
				})
			}
			return t.checkNotGeometryCollection(t),
			t.checkNotGeometryCollection(e),
			ip.overlayOp(t, e, Ip.INTERSECTION)
		},
		Ip.symDifference = function(t, e) {
			if (t.isEmpty() || e.isEmpty()) {
				if (t.isEmpty() && e.isEmpty()) return Ip.createEmptyResult(Ip.SYMDIFFERENCE, t, e, t.getFactory());
				if (t.isEmpty()) return e.copy();
				if (e.isEmpty()) return t.copy()
			}
			return t.checkNotGeometryCollection(t),
			t.checkNotGeometryCollection(e),
			ip.overlayOp(t, e, Ip.SYMDIFFERENCE)
		},
		Ip.resultDimension = function(t, e, n) {
			var r = e.getDimension(),
			i = n.getDimension(),
			o = -1;
			switch (t) {
			case Ip.INTERSECTION:
				o = Math.min(r, i);
				break;
			case Ip.UNION:
				o = Math.max(r, i);
				break;
			case Ip.DIFFERENCE:
				o = r;
				break;
			case Ip.SYMDIFFERENCE:
				o = Math.max(r, i)
			}
			return o
		},
		Ip.createEmptyResult = function(t, e, n, r) {
			var i = null;
			switch (Ip.resultDimension(t, e, n)) {
			case - 1 : i = r.createGeometryCollection(new Array(0).fill(null));
				break;
			case 0:
				i = r.createPoint();
				break;
			case 1:
				i = r.createLineString();
				break;
			case 2:
				i = r.createPolygon()
			}
			return i
		},
		Ip.difference = function(t, e) {
			return t.isEmpty() ? Ip.createEmptyResult(Ip.DIFFERENCE, t, e, t.getFactory()) : e.isEmpty() ? t.copy() : (t.checkNotGeometryCollection(t), t.checkNotGeometryCollection(e), ip.overlayOp(t, e, Ip.DIFFERENCE))
		},
		Ip.isResultOfOp = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = t.getLocation(0),
				r = t.getLocation(1);
				return Ip.isResultOfOp(n, r, e)
			}
			if (3 === arguments.length) {
				var i = arguments[0],
				o = arguments[1],
				s = arguments[2];
				switch (i === Su.BOUNDARY && (i = Su.INTERIOR), o === Su.BOUNDARY && (o = Su.INTERIOR), s) {
				case Ip.INTERSECTION:
					return i === Su.INTERIOR && o === Su.INTERIOR;
				case Ip.UNION:
					return i === Su.INTERIOR || o === Su.INTERIOR;
				case Ip.DIFFERENCE:
					return i === Su.INTERIOR && o !== Su.INTERIOR;
				case Ip.SYMDIFFERENCE:
					return i === Su.INTERIOR && o !== Su.INTERIOR || i !== Su.INTERIOR && o === Su.INTERIOR
				}
				return ! 1
			}
		},
		Ip.INTERSECTION = 1,
		Ip.UNION = 2,
		Ip.DIFFERENCE = 3,
		Ip.SYMDIFFERENCE = 4;
		var Sp = function() {
			this._g = null,
			this._boundaryDistanceTolerance = null,
			this._linework = null,
			this._ptLocator = new Mf,
			this._seg = new ph;
			var t = arguments[0],
			e = arguments[1];
			this._g = t,
			this._boundaryDistanceTolerance = e,
			this._linework = this.extractLinework(t)
		};
		Sp.prototype.isWithinToleranceOfBoundary = function(t) {
			for (var e = 0; e < this._linework.getNumGeometries(); e++) for (var n = this._linework.getGeometryN(e).getCoordinateSequence(), r = 0; r < n.size() - 1; r++) if (n.getCoordinate(r, this._seg.p0), n.getCoordinate(r + 1, this._seg.p1), this._seg.distance(t) <= this._boundaryDistanceTolerance) return ! 0;
			return ! 1
		},
		Sp.prototype.getLocation = function(t) {
			return this.isWithinToleranceOfBoundary(t) ? Su.BOUNDARY: this._ptLocator.locate(t, this._g)
		},
		Sp.prototype.extractLinework = function(t) {
			var e = new Cp;
			t.apply(e);
			var n = e.getLinework(),
			r = yl.toLineStringArray(n);
			return t.getFactory().createMultiLineString(r)
		},
		Sp.prototype.interfaces_ = function() {
			return []
		},
		Sp.prototype.getClass = function() {
			return Sp
		};
		var Cp = function() {
			this._linework = null,
			this._linework = new xc
		};
		Cp.prototype.getLinework = function() {
			return this._linework
		},
		Cp.prototype.filter = function(t) {
			if (t instanceof Kc) {
				var e = t;
				this._linework.add(e.getExteriorRing());
				for (var n = 0; n < e.getNumInteriorRing(); n++) this._linework.add(e.getInteriorRingN(n))
			}
		},
		Cp.prototype.interfaces_ = function() {
			return [qc]
		},
		Cp.prototype.getClass = function() {
			return Cp
		};
		var Np = function() {
			this._g = null,
			this._doLeft = !0,
			this._doRight = !0;
			var t = arguments[0];
			this._g = t
		};
		Np.prototype.extractPoints = function(t, e, n) {
			for (var r = t.getCoordinates(), i = 0; i < r.length - 1; i++) this.computeOffsetPoints(r[i], r[i + 1], e, n)
		},
		Np.prototype.setSidesToGenerate = function(t, e) {
			this._doLeft = t,
			this._doRight = e
		},
		Np.prototype.getPoints = function(t) {
			for (var e = new xc,
			n = Ef.getLines(this._g).iterator(); n.hasNext();) {
				var r = n.next();
				this.extractPoints(r, t, e)
			}
			return e
		},
		Np.prototype.computeOffsetPoints = function(t, e, n, r) {
			var i = e.x - t.x,
			o = e.y - t.y,
			s = Math.sqrt(i * i + o * o),
			a = n * i / s,
			u = n * o / s,
			c = (e.x + t.x) / 2,
			l = (e.y + t.y) / 2;
			if (this._doLeft) {
				var h = new xu(c - u, l + a);
				r.add(h)
			}
			if (this._doRight) {
				var f = new xu(c + u, l - a);
				r.add(f)
			}
		},
		Np.prototype.interfaces_ = function() {
			return []
		},
		Np.prototype.getClass = function() {
			return Np
		};
		var Pp = function t() {
			this._geom = null,
			this._locFinder = null,
			this._location = new Array(3).fill(null),
			this._invalidLocation = null,
			this._boundaryDistanceTolerance = t.TOLERANCE,
			this._testCoords = new xc;
			var e = arguments[0],
			n = arguments[1],
			r = arguments[2];
			this._boundaryDistanceTolerance = t.computeBoundaryDistanceTolerance(e, n),
			this._geom = [e, n, r],
			this._locFinder = [new Sp(this._geom[0], this._boundaryDistanceTolerance), new Sp(this._geom[1], this._boundaryDistanceTolerance), new Sp(this._geom[2], this._boundaryDistanceTolerance)]
		},
		Lp = {
			TOLERANCE: {
				configurable: !0
			}
		};
		Pp.prototype.reportResult = function(t, e, n) {
			Uu.out.println("Overlay result invalid - A:" + Su.toLocationSymbol(e[0]) + " B:" + Su.toLocationSymbol(e[1]) + " expected:" + (n ? "i": "e") + " actual:" + Su.toLocationSymbol(e[2]))
		},
		Pp.prototype.isValid = function(t) {
			return this.addTestPts(this._geom[0]),
			this.addTestPts(this._geom[1]),
			this.checkValid(t)
		},
		Pp.prototype.checkValid = function() {
			if (1 === arguments.length) {
				for (var t = arguments[0], e = 0; e < this._testCoords.size(); e++) {
					var n = this._testCoords.get(e);
					if (!this.checkValid(t, n)) return this._invalidLocation = n,
					!1
				}
				return ! 0
			}
			if (2 === arguments.length) {
				var r = arguments[0],
				i = arguments[1];
				return this._location[0] = this._locFinder[0].getLocation(i),
				this._location[1] = this._locFinder[1].getLocation(i),
				this._location[2] = this._locFinder[2].getLocation(i),
				!!Pp.hasLocation(this._location, Su.BOUNDARY) || this.isValidResult(r, this._location)
			}
		},
		Pp.prototype.addTestPts = function(t) {
			var e = new Np(t);
			this._testCoords.addAll(e.getPoints(5 * this._boundaryDistanceTolerance))
		},
		Pp.prototype.isValidResult = function(t, e) {
			var n = Ip.isResultOfOp(e[0], e[1], t),
			r = !(n ^ e[2] === Su.INTERIOR);
			return r || this.reportResult(t, e, n),
			r
		},
		Pp.prototype.getInvalidLocation = function() {
			return this._invalidLocation
		},
		Pp.prototype.interfaces_ = function() {
			return []
		},
		Pp.prototype.getClass = function() {
			return Pp
		},
		Pp.hasLocation = function(t, e) {
			for (var n = 0; n < 3; n++) if (t[n] === e) return ! 0;
			return ! 1
		},
		Pp.computeBoundaryDistanceTolerance = function(t, e) {
			return Math.min(Jf.computeSizeBasedSnapTolerance(t), Jf.computeSizeBasedSnapTolerance(e))
		},
		Pp.isValid = function(t, e, n, r) {
			return new Pp(t, e, r).isValid(n)
		},
		Lp.TOLERANCE.get = function() {
			return 1e-6
		},
		Object.defineProperties(Pp, Lp);
		var Ap = function t(e) {
			this._geomFactory = null,
			this._skipEmpty = !1,
			this._inputGeoms = null,
			this._geomFactory = t.extractFactory(e),
			this._inputGeoms = e
		};
		Ap.prototype.extractElements = function(t, e) {
			if (null === t) return null;
			for (var n = 0; n < t.getNumGeometries(); n++) {
				var r = t.getGeometryN(n);
				this._skipEmpty && r.isEmpty() || e.add(r)
			}
		},
		Ap.prototype.combine = function() {
			for (var t = new xc,
			e = this._inputGeoms.iterator(); e.hasNext();) {
				var n = e.next();
				this.extractElements(n, t)
			}
			return 0 === t.size() ? null !== this._geomFactory ? this._geomFactory.createGeometryCollection(null) : null: this._geomFactory.buildGeometry(t)
		},
		Ap.prototype.interfaces_ = function() {
			return []
		},
		Ap.prototype.getClass = function() {
			return Ap
		},
		Ap.combine = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return new Ap(t).combine()
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return new Ap(Ap.createList(e, n)).combine()
			}
			if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2];
				return new Ap(Ap.createList(r, i, o)).combine()
			}
		},
		Ap.extractFactory = function(t) {
			return t.isEmpty() ? null: t.iterator().next().getFactory()
		},
		Ap.createList = function() {
			if (2 === arguments.length) {
				var t = arguments[0],
				e = arguments[1],
				n = new xc;
				return n.add(t),
				n.add(e),
				n
			}
			if (3 === arguments.length) {
				var r = arguments[0],
				i = arguments[1],
				o = arguments[2],
				s = new xc;
				return s.add(r),
				s.add(i),
				s.add(o),
				s
			}
		};
		var Op = function() {
			this._inputPolys = null,
			this._geomFactory = null;
			var t = arguments[0];
			this._inputPolys = t,
			null === this._inputPolys && (this._inputPolys = new xc)
		},
		Tp = {
			STRTREE_NODE_CAPACITY: {
				configurable: !0
			}
		};
		Op.prototype.reduceToGeometries = function(t) {
			for (var e = new xc,
			n = t.iterator(); n.hasNext();) {
				var r = n.next(),
				i = null;
				Nu(r, bc) ? i = this.unionTree(r) : r instanceof uc && (i = r),
				e.add(i)
			}
			return e
		},
		Op.prototype.extractByEnvelope = function(t, e, n) {
			for (var r = new xc,
			i = 0; i < e.getNumGeometries(); i++) {
				var o = e.getGeometryN(i);
				o.getEnvelopeInternal().intersects(t) ? r.add(o) : n.add(o)
			}
			return this._geomFactory.buildGeometry(r)
		},
		Op.prototype.unionOptimized = function(t, e) {
			var n = t.getEnvelopeInternal(),
			r = e.getEnvelopeInternal();
			if (!n.intersects(r)) return Ap.combine(t, e);
			if (t.getNumGeometries() <= 1 && e.getNumGeometries() <= 1) return this.unionActual(t, e);
			var i = n.intersection(r);
			return this.unionUsingEnvelopeIntersection(t, e, i)
		},
		Op.prototype.union = function() {
			if (null === this._inputPolys) throw new Error("union() method cannot be called twice");
			if (this._inputPolys.isEmpty()) return null;
			this._geomFactory = this._inputPolys.iterator().next().getFactory();
			for (var t = new ih(Op.STRTREE_NODE_CAPACITY), e = this._inputPolys.iterator(); e.hasNext();) {
				var n = e.next();
				t.insert(n.getEnvelopeInternal(), n)
			}
			this._inputPolys = null;
			var r = t.itemsTree();
			return this.unionTree(r)
		},
		Op.prototype.binaryUnion = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return this.binaryUnion(t, 0, t.size())
			}
			if (3 === arguments.length) {
				var e = arguments[0],
				n = arguments[1],
				r = arguments[2];
				if (r - n <= 1) {
					var i = Op.getGeometry(e, n);
					return this.unionSafe(i, null)
				}
				if (r - n == 2) return this.unionSafe(Op.getGeometry(e, n), Op.getGeometry(e, n + 1));
				var o = Math.trunc((r + n) / 2),
				s = this.binaryUnion(e, n, o),
				a = this.binaryUnion(e, o, r);
				return this.unionSafe(s, a)
			}
		},
		Op.prototype.repeatedUnion = function(t) {
			for (var e = null,
			n = t.iterator(); n.hasNext();) {
				var r = n.next();
				e = null === e ? r.copy() : e.union(r)
			}
			return e
		},
		Op.prototype.unionSafe = function(t, e) {
			return null === t && null === e ? null: null === t ? e.copy() : null === e ? t.copy() : this.unionOptimized(t, e)
		},
		Op.prototype.unionActual = function(t, e) {
			return Op.restrictToPolygons(t.union(e))
		},
		Op.prototype.unionTree = function(t) {
			var e = this.reduceToGeometries(t);
			return this.binaryUnion(e)
		},
		Op.prototype.unionUsingEnvelopeIntersection = function(t, e, n) {
			var r = new xc,
			i = this.extractByEnvelope(n, t, r),
			o = this.extractByEnvelope(n, e, r),
			s = this.unionActual(i, o);
			return r.add(s),
			Ap.combine(r)
		},
		Op.prototype.bufferUnion = function() {
			if (1 === arguments.length) {
				var t = arguments[0];
				return t.get(0).getFactory().buildGeometry(t).buffer(0)
			}
			if (2 === arguments.length) {
				var e = arguments[0],
				n = arguments[1];
				return e.getFactory().createGeometryCollection([e, n]).buffer(0)
			}
		},
		Op.prototype.interfaces_ = function() {
			return []
		},
		Op.prototype.getClass = function() {
			return Op
		},
		Op.restrictToPolygons = function(t) {
			if (Nu(t, Qc)) return t;
			var e = xf.getPolygons(t);
			return 1 === e.size() ? e.get(0) : t.getFactory().createMultiPolygon(yl.toPolygonArray(e))
		},
		Op.getGeometry = function(t, e) {
			return e >= t.size() ? null: t.get(e)
		},
		Op.union = function(t) {
			return new Op(t).union()
		},
		Tp.STRTREE_NODE_CAPACITY.get = function() {
			return 4
		},
		Object.defineProperties(Op, Tp);
		var Rp = function() {};
		Rp.prototype.interfaces_ = function() {
			return []
		},
		Rp.prototype.getClass = function() {
			return Rp
		},
		Rp.union = function(t, e) {
			if (t.isEmpty() || e.isEmpty()) {
				if (t.isEmpty() && e.isEmpty()) return Ip.createEmptyResult(Ip.UNION, t, e, t.getFactory());
				if (t.isEmpty()) return e.copy();
				if (e.isEmpty()) return t.copy()
			}
			return t.checkNotGeometryCollection(t),
			t.checkNotGeometryCollection(e),
			ip.overlayOp(t, e, Ip.UNION)
		};
		var Dp = function() {
			return new Xi
		};
		Xi.prototype = {
			constructor: Xi,
			reset: function() {
				this.s = this.t = 0
			},
			add: function(t) {
				Vi(kp, t, this.t),
				Vi(this, kp.s, this.s),
				this.s ? this.t += kp.t: this.s = kp.t
			},
			valueOf: function() {
				return this.s
			}
		};
		var kp = new Xi,
		Fp = 1e-6,
		jp = Math.PI,
		qp = jp / 2,
		Bp = jp / 4,
		Gp = 2 * jp,
		Up = 180 / jp,
		zp = jp / 180,
		Yp = Math.abs,
		Xp = Math.atan,
		Vp = Math.atan2,
		Wp = Math.cos,
		Hp = Math.exp,
		Jp = Math.log,
		Zp = Math.sin,
		Qp = Math.sqrt,
		Kp = Math.tan,
		$p = {
			Feature: function(t, e) {
				Ji(t.geometry, e)
			},
			FeatureCollection: function(t, e) {
				for (var n = t.features,
				r = -1,
				i = n.length; ++r < i;) Ji(n[r].geometry, e)
			}
		},
		td = {
			Sphere: function(t, e) {
				e.sphere()
			},
			Point: function(t, e) {
				t = t.coordinates,
				e.point(t[0], t[1], t[2])
			},
			MultiPoint: function(t, e) {
				for (var n = t.coordinates,
				r = -1,
				i = n.length; ++r < i;) t = n[r],
				e.point(t[0], t[1], t[2])
			},
			LineString: function(t, e) {
				Zi(t.coordinates, e, 0)
			},
			MultiLineString: function(t, e) {
				for (var n = t.coordinates,
				r = -1,
				i = n.length; ++r < i;) Zi(n[r], e, 0)
			},
			Polygon: function(t, e) {
				Qi(t.coordinates, e)
			},
			MultiPolygon: function(t, e) {
				for (var n = t.coordinates,
				r = -1,
				i = n.length; ++r < i;) Qi(n[r], e)
			},
			GeometryCollection: function(t, e) {
				for (var n = t.geometries,
				r = -1,
				i = n.length; ++r < i;) Ji(n[r], e)
			}
		},
		ed = function(t, e) {
			t && $p.hasOwnProperty(t.type) ? $p[t.type](t, e) : Ji(t, e)
		},
		nd = (Dp(), Dp(), Dp(),
		function(t, e) {
			function n(n, r) {
				return n = t(n, r),
				e(n[0], n[1])
			}
			return t.invert && e.invert && (n.invert = function(n, r) {
				return (n = e.invert(n, r)) && t.invert(n[0], n[1])
			}),
			n
		});
		oo.invert = oo;
		var rd = function(t) {
			function e(e) {
				return e = t(e[0] * zp, e[1] * zp),
				e[0] *= Up,
				e[1] *= Up,
				e
			}
			return t = so(t[0] * zp, t[1] * zp, t.length > 2 ? t[2] * zp: 0),
			e.invert = function(e) {
				return e = t.invert(e[0] * zp, e[1] * zp),
				e[0] *= Up,
				e[1] *= Up,
				e
			},
			e
		},
		id = function() {
			var t, e = [];
			return {
				point: function(e, n) {
					t.push([e, n])
				},
				lineStart: function() {
					e.push(t = [])
				},
				lineEnd: Hi,
				rejoin: function() {
					e.length > 1 && e.push(e.pop().concat(e.shift()))
				},
				result: function() {
					var n = e;
					return e = [],
					t = null,
					n
				}
			}
		},
		od = function(t, e, n, r, i, o) {
			var s, a = t[0],
			u = t[1],
			c = 0,
			l = 1,
			h = e[0] - a,
			f = e[1] - u;
			if (s = n - a, h || !(s > 0)) {
				if (s /= h, h < 0) {
					if (s < c) return;
					s < l && (l = s)
				} else if (h > 0) {
					if (s > l) return;
					s > c && (c = s)
				}
				if (s = i - a, h || !(s < 0)) {
					if (s /= h, h < 0) {
						if (s > l) return;
						s > c && (c = s)
					} else if (h > 0) {
						if (s < c) return;
						s < l && (l = s)
					}
					if (s = r - u, f || !(s > 0)) {
						if (s /= f, f < 0) {
							if (s < c) return;
							s < l && (l = s)
						} else if (f > 0) {
							if (s > l) return;
							s > c && (c = s)
						}
						if (s = o - u, f || !(s < 0)) {
							if (s /= f, f < 0) {
								if (s > l) return;
								s > c && (c = s)
							} else if (f > 0) {
								if (s < c) return;
								s < l && (l = s)
							}
							return c > 0 && (t[0] = a + c * h, t[1] = u + c * f),
							l < 1 && (e[0] = a + l * h, e[1] = u + l * f),
							!0
						}
					}
				}
			}
		},
		sd = function(t, e) {
			return Yp(t[0] - e[0]) < Fp && Yp(t[1] - e[1]) < Fp
		},
		ad = function(t, e, n, r, i) {
			var o, s, a = [],
			u = [];
			if (t.forEach(function(t) {
				if (! ((e = t.length - 1) <= 0)) {
					var e, n, r = t[0],
					s = t[e];
					if (sd(r, s)) {
						for (i.lineStart(), o = 0; o < e; ++o) i.point((r = t[o])[0], r[1]);
						i.lineEnd()
					} else a.push(n = new ho(r, t, null, !0)),
					u.push(n.o = new ho(r, null, n, !1)),
					a.push(n = new ho(s, t, null, !1)),
					u.push(n.o = new ho(s, null, n, !0))
				}
			}), a.length) {
				for (u.sort(e), fo(a), fo(u), o = 0, s = u.length; o < s; ++o) u[o].e = n = !n;
				for (var c, l, h = a[0];;) {
					for (var f = h,
					p = !0; f.v;) if ((f = f.n) === h) return;
					c = f.z,
					i.lineStart();
					do {
						if (f.v = f.o.v = !0, f.e) {
							if (p) for (o = 0, s = c.length; o < s; ++o) i.point((l = c[o])[0], l[1]);
							else r(f.x, f.n.x, 1, i);
							f = f.n
						} else {
							if (p) for (c = f.p.z, o = c.length - 1; o >= 0; --o) i.point((l = c[o])[0], l[1]);
							else r(f.x, f.p.x, -1, i);
							f = f.p
						}
						c = (f = f.o).z, p = !p
					} while (! f . v );
					i.lineEnd()
				}
			}
		},
		ud = function(t, e) {
			return t < e ? -1 : t > e ? 1 : t >= e ? 0 : NaN
		},
		cd = (function(t) {
			1 === t.length && (t = function(t) {
				return function(e, n) {
					return ud(t(e), n)
				}
			} (t))
		} (ud),
		function(t) {
			for (var e, n, r, i = t.length,
			o = -1,
			s = 0; ++o < i;) s += t[o].length;
			for (n = new Array(s); --i >= 0;) for (e = (r = t[i]).length; --e >= 0;) n[--s] = r[e];
			return n
		}),
		ld = 1e9,
		hd = -ld,
		fd = Dp(),
		pd = (Dp(),
		function(t) {
			return t
		}),
		dd = (Dp(), Dp(), 1 / 0),
		gd = dd,
		yd = -dd,
		vd = yd,
		md = {
			point: function(t, e) {
				t < dd && (dd = t),
				t > yd && (yd = t),
				e < gd && (gd = e),
				e > vd && (vd = e)
			},
			lineStart: Hi,
			lineEnd: Hi,
			polygonStart: Hi,
			polygonEnd: Hi,
			result: function() {
				var t = [[dd, gd], [yd, vd]];
				return yd = vd = -(gd = dd = 1 / 0),
				t
			}
		},
		_d = (Dp(),
		function(t, e, n, r) {
			return function(i, o) {
				function s(e, n) {
					var r = i(e, n);
					t(e = r[0], n = r[1]) && o.point(e, n)
				}
				function a(t, e) {
					var n = i(t, e);
					y.point(n[0], n[1])
				}
				function u() {
					b.point = a,
					y.lineStart()
				}
				function c() {
					b.point = s,
					y.lineEnd()
				}
				function l(t, e) {
					g.push([t, e]);
					var n = i(t, e);
					_.point(n[0], n[1])
				}
				function h() {
					_.lineStart(),
					g = []
				}
				function f() {
					l(g[0][0], g[0][1]),
					_.lineEnd();
					var t, e, n, r, i = _.clean(),
					s = m.result(),
					a = s.length;
					if (g.pop(), p.push(g), g = null, a) if (1 & i) {
						if (n = s[0], (e = n.length - 1) > 0) {
							for (w || (o.polygonStart(), w = !0), o.lineStart(), t = 0; t < e; ++t) o.point((r = n[t])[0], r[1]);
							o.lineEnd()
						}
					} else a > 1 && 2 & i && s.push(s.pop().concat(s.shift())),
					d.push(s.filter(go))
				}
				var p, d, g, y = e(o),
				v = i.invert(r[0], r[1]),
				m = id(),
				_ = e(m),
				w = !1,
				b = {
					point: s,
					lineStart: u,
					lineEnd: c,
					polygonStart: function() {
						b.point = l,
						b.lineStart = h,
						b.lineEnd = f,
						d = [],
						p = []
					},
					polygonEnd: function() {
						b.point = s,
						b.lineStart = u,
						b.lineEnd = c,
						d = cd(d);
						var t = function(t, e) {
							var n = e[0],
							r = e[1],
							i = [Zp(n), -Wp(n), 0],
							o = 0,
							s = 0;
							fd.reset();
							for (var a = 0,
							u = t.length; a < u; ++a) if (l = (c = t[a]).length) for (var c, l, h = c[l - 1], f = h[0], p = h[1] / 2 + Bp, d = Zp(p), g = Wp(p), y = 0; y < l; ++y, f = m, d = w, g = b, h = v) {
								var v = c[y],
								m = v[0],
								_ = v[1] / 2 + Bp,
								w = Zp(_),
								b = Wp(_),
								x = m - f,
								E = x >= 0 ? 1 : -1,
								M = E * x,
								I = M > jp,
								S = d * w;
								if (fd.add(Vp(S * E * Zp(M), g * b + S * Wp(M))), o += I ? x + E * Gp: x, I ^ f >= n ^ m >= n) {
									var C = eo($i(h), $i(v));
									io(C);
									var N = eo(i, C);
									io(N);
									var P = (I ^ x >= 0 ? -1 : 1) * Wi(N[2]); (r > P || r === P && (C[0] || C[1])) && (s += I ^ x >= 0 ? 1 : -1)
								}
							}
							return (o < -Fp || o < Fp && fd < -Fp) ^ 1 & s
						} (p, v);
						d.length ? (w || (o.polygonStart(), w = !0), ad(d, yo, t, n, o)) : t && (w || (o.polygonStart(), w = !0), o.lineStart(), n(null, null, 1, o), o.lineEnd()),
						w && (o.polygonEnd(), w = !1),
						d = p = null
					},
					sphere: function() {
						o.polygonStart(),
						o.lineStart(),
						n(null, null, 1, o),
						o.lineEnd(),
						o.polygonEnd()
					}
				};
				return b
			}
		}),
		wd = _d(function() {
			return ! 0
		},
		function(t) {
			var e, n = NaN,
			r = NaN,
			i = NaN;
			return {
				lineStart: function() {
					t.lineStart(),
					e = 1
				},
				point: function(o, s) {
					var a = o > 0 ? jp: -jp,
					u = Yp(o - n);
					Yp(u - jp) < Fp ? (t.point(n, r = (r + s) / 2 > 0 ? qp: -qp), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), t.point(o, r), e = 0) : i !== a && u >= jp && (Yp(n - i) < Fp && (n -= i * Fp), Yp(o - a) < Fp && (o -= a * Fp), r = function(t, e, n, r) {
						var i, o, s = Zp(t - n);
						return Yp(s) > Fp ? Xp((Zp(e) * (o = Wp(r)) * Zp(n) - Zp(r) * (i = Wp(e)) * Zp(t)) / (i * o * s)) : (e + r) / 2
					} (n, r, o, s), t.point(i, r), t.lineEnd(), t.lineStart(), t.point(a, r), e = 0),
					t.point(n = o, r = s),
					i = a
				},
				lineEnd: function() {
					t.lineEnd(),
					n = r = NaN
				},
				clean: function() {
					return 2 - e
				}
			}
		},
		function(t, e, n, r) {
			var i;
			if (null == t) i = n * qp,
			r.point( - jp, i),
			r.point(0, i),
			r.point(jp, i),
			r.point(jp, 0),
			r.point(jp, -i),
			r.point(0, -i),
			r.point( - jp, -i),
			r.point( - jp, 0),
			r.point( - jp, i);
			else if (Yp(t[0] - e[0]) > Fp) {
				var o = t[0] < e[0] ? jp: -jp;
				i = n * o / 2,
				r.point( - o, i),
				r.point(0, i),
				r.point(o, i)
			} else r.point(e[0], e[1])
		},
		[ - jp, -qp]),
		bd = function(t, e) {
			function n(t, e) {
				return Wp(t) * Wp(e) > o
			}
			function r(t, e, n) {
				var r = [1, 0, 0],
				i = eo($i(t), $i(e)),
				s = to(i, i),
				a = i[0],
				u = s - a * a;
				if (!u) return ! n && t;
				var c = o * s / u,
				l = -o * a / u,
				h = eo(r, i),
				f = ro(r, c);
				no(f, ro(i, l));
				var p = h,
				d = to(f, p),
				g = to(p, p),
				y = d * d - g * (to(f, f) - 1);
				if (! (y < 0)) {
					var v = Qp(y),
					m = ro(p, ( - d - v) / g);
					if (no(m, f), m = Ki(m), !n) return m;
					var _, w = t[0],
					b = e[0],
					x = t[1],
					E = e[1];
					b < w && (_ = w, w = b, b = _);
					var M = b - w,
					I = Yp(M - jp) < Fp;
					if (!I && E < x && (_ = x, x = E, E = _), I || M < Fp ? I ? x + E > 0 ^ m[1] < (Yp(m[0] - w) < Fp ? x: E) : x <= m[1] && m[1] <= E: M > jp ^ (w <= m[0] && m[0] <= b)) {
						var S = ro(p, ( - d + v) / g);
						return no(S, f),
						[m, Ki(S)]
					}
				}
			}
			function i(e, n) {
				var r = s ? t: jp - t,
				i = 0;
				return e < -r ? i |= 1 : e > r && (i |= 2),
				n < -r ? i |= 4 : n > r && (i |= 8),
				i
			}
			var o = Wp(t),
			s = o > 0,
			a = Yp(o) > Fp;
			return _d(n,
			function(t) {
				var e, o, u, c, l;
				return {
					lineStart: function() {
						c = u = !1,
						l = 1
					},
					point: function(h, f) {
						var p, d = [h, f],
						g = n(h, f),
						y = s ? g ? 0 : i(h, f) : g ? i(h + (h < 0 ? jp: -jp), f) : 0;
						if (!e && (c = u = g) && t.lineStart(), g !== u && (!(p = r(e, d)) || sd(e, p) || sd(d, p)) && (d[0] += Fp, d[1] += Fp, g = n(d[0], d[1])), g !== u) l = 0,
						g ? (t.lineStart(), p = r(d, e), t.point(p[0], p[1])) : (p = r(e, d), t.point(p[0], p[1]), t.lineEnd()),
						e = p;
						else if (a && e && s ^ g) {
							var v;
							y & o || !(v = r(d, e, !0)) || (l = 0, s ? (t.lineStart(), t.point(v[0][0], v[0][1]), t.point(v[1][0], v[1][1]), t.lineEnd()) : (t.point(v[1][0], v[1][1]), t.lineEnd(), t.lineStart(), t.point(v[0][0], v[0][1])))
						} ! g || e && sd(e, d) || t.point(d[0], d[1]),
						e = d,
						u = g,
						o = y
					},
					lineEnd: function() {
						u && t.lineEnd(),
						e = null
					},
					clean: function() {
						return l | (c && u) << 1
					}
				}
			},
			function(n, r, i, o) { !
				function(t, e, n, r, i, o) {
					if (n) {
						var s = Wp(e),
						a = Zp(e),
						u = r * n;
						null == i ? (i = e + r * Gp, o = e - u / 2) : (i = lo(s, i), o = lo(s, o), (r > 0 ? i < o: i > o) && (i += r * Gp));
						for (var c, l = i; r > 0 ? l > o: l < o; l -= u) c = Ki([s, -a * Wp(l), -a * Zp(l)]),
						t.point(c[0], c[1])
					}
				} (o, t, e, i, n, r)
			},
			s ? [0, -t] : [ - jp, t - jp])
		};
		mo.prototype = {
			constructor: mo,
			point: function(t, e) {
				this.stream.point(t, e)
			},
			sphere: function() {
				this.stream.sphere()
			},
			lineStart: function() {
				this.stream.lineStart()
			},
			lineEnd: function() {
				this.stream.lineEnd()
			},
			polygonStart: function() {
				this.stream.polygonStart()
			},
			polygonEnd: function() {
				this.stream.polygonEnd()
			}
		};
		var xd = 16,
		Ed = Wp(30 * zp),
		Md = function(t, e) {
			return + e ?
			function(t, e) {
				function n(r, i, o, s, a, u, c, l, h, f, p, d, g, y) {
					var v = c - r,
					m = l - i,
					_ = v * v + m * m;
					if (_ > 4 * e && g--) {
						var w = s + f,
						b = a + p,
						x = u + d,
						E = Qp(w * w + b * b + x * x),
						M = Wi(x /= E),
						I = Yp(Yp(x) - 1) < Fp || Yp(o - h) < Fp ? (o + h) / 2 : Vp(b, w),
						S = t(I, M),
						C = S[0],
						N = S[1],
						P = C - r,
						L = N - i,
						A = m * P - v * L; (A * A / _ > e || Yp((v * P + m * L) / _ - .5) > .3 || s * f + a * p + u * d < Ed) && (n(r, i, o, s, a, u, C, N, I, w /= E, b /= E, x, g, y), y.point(C, N), n(C, N, I, w, b, x, c, l, h, f, p, d, g, y))
					}
				}
				return function(e) {
					function r(n, r) {
						n = t(n, r),
						e.point(n[0], n[1])
					}
					function i() {
						v = NaN,
						x.point = o,
						e.lineStart()
					}
					function o(r, i) {
						var o = $i([r, i]),
						s = t(r, i);
						n(v, m, y, _, w, b, v = s[0], m = s[1], y = r, _ = o[0], w = o[1], b = o[2], xd, e),
						e.point(v, m)
					}
					function s() {
						x.point = r,
						e.lineEnd()
					}
					function a() {
						i(),
						x.point = u,
						x.lineEnd = c
					}
					function u(t, e) {
						o(l = t, e),
						h = v,
						f = m,
						p = _,
						d = w,
						g = b,
						x.point = o
					}
					function c() {
						n(v, m, y, _, w, b, h, f, l, p, d, g, xd, e),
						x.lineEnd = s,
						s()
					}
					var l, h, f, p, d, g, y, v, m, _, w, b, x = {
						point: r,
						lineStart: i,
						lineEnd: s,
						polygonStart: function() {
							e.polygonStart(),
							x.lineStart = a
						},
						polygonEnd: function() {
							e.polygonEnd(),
							x.lineStart = i
						}
					};
					return x
				}
			} (t, e) : function(t) {
				return vo({
					point: function(e, n) {
						e = t(e, n),
						this.stream.point(e[0], e[1])
					}
				})
			} (t)
		},
		Id = vo({
			point: function(t, e) {
				this.stream.point(t * zp, e * zp)
			}
		});
		bo.invert = function(t, e) {
			return [t, 2 * Xp(Hp(e)) - qp]
		},
		xo.invert = function(t, e) {
			return [ - e, 2 * Xp(Hp(t)) - qp]
		};
		var Sd = function() {
			var t = function(t) {
				function e() {
					var e = jp * a(),
					s = o(rd(o.rotate()).invert([0, 0]));
					return c(null == l ? [[s[0] - e, s[1] - e], [s[0] + e, s[1] + e]] : t === bo ? [[Math.max(s[0] - e, l), n], [Math.min(s[0] + e, r), i]] : [[l, Math.max(s[1] - e, n)], [r, Math.min(s[1] + e, i)]])
				}
				var n, r, i, o = wo(t),
				s = o.center,
				a = o.scale,
				u = o.translate,
				c = o.clipExtent,
				l = null;
				return o.scale = function(t) {
					return arguments.length ? (a(t), e()) : a()
				},
				o.translate = function(t) {
					return arguments.length ? (u(t), e()) : u()
				},
				o.center = function(t) {
					return arguments.length ? (s(t), e()) : s()
				},
				o.clipExtent = function(t) {
					return arguments.length ? (null == t ? l = n = r = i = null: (l = +t[0][0], n = +t[0][1], r = +t[1][0], i = +t[1][1]), e()) : null == l ? null: [[l, n], [r, i]]
				},
				e()
			} (xo),
			e = t.center,
			n = t.rotate;
			return t.center = function(t) {
				return arguments.length ? e([ - t[1], t[0]]) : (t = e(), [t[1], -t[0]])
			},
			t.rotate = function(t) {
				return arguments.length ? n([t[0], t[1], t.length > 2 ? t[2] + 90 : 90]) : (t = n(), [t[0], t[1], t[2] - 90])
			},
			n([0, 0, 90]).scale(159.155)
		};
		t.projection = Ss,
		t.random = pu,
		t.clusters = du,
		t.helpers = Bo,
		t.invariant = Uo,
		t.meta = Go,
		t.isolines = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.zProperty || "elevation",
			i = n.commonProperties || {},
			o = n.breaksProperties || [];
			if (H(t, "Point", "Input must contain Points"), !e) throw new Error("breaks is required");
			if (!Array.isArray(e)) throw new Error("breaks must be an Array");
			if (!M(i)) throw new Error("commonProperties must be an Object");
			if (!Array.isArray(o)) throw new Error("breaksProperties must be an Array");
			var s = rt(t, {
				zProperty: r,
				flip: !0
			});
			return c(function(t, e, n) {
				var r = U(n),
				i = r[2] - r[0],
				o = r[3] - r[1],
				s = r[0],
				a = r[1],
				u = e[0].length - 1,
				c = e.length - 1,
				l = i / u,
				h = o / c,
				f = function(t) {
					t[0] = t[0] * l + s,
					t[1] = t[1] * h + a
				};
				return t.forEach(function(t) {
					C(t, f)
				}),
				t
			} (function(t, e, n, r, i) {
				for (var o = [], s = 1; s < e.length; s++) {
					var a = +e[s],
					u = Object.assign({},
					r, i[s]);
					u[n] = a;
					var c = l(K(t, a), u);
					o.push(c)
				}
				return o
			} (s, e, r, i, o), s, t))
		},
		t.convex = Pt,
		t.pointsWithinPolygon = Ot,
		t.concave = function(t, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			if (!t) throw new Error("points is required");
			var r = n.maxEdge || 1 / 0;
			if (!E(r)) throw new Error("maxEdge is invalid");
			var i = Tt(function(t) {
				var e = [],
				n = {};
				return A(t,
				function(t) {
					if (t.geometry) {
						var r = t.geometry.coordinates.join("-");
						n.hasOwnProperty(r) || (e.push(t), n[r] = !0)
					}
				}),
				c(e)
			} (t));
			if (i.features = i.features.filter(function(t) {
				var e = t.geometry.coordinates[0][0],
				i = t.geometry.coordinates[0][1],
				o = t.geometry.coordinates[0][2],
				s = Ft(e, i, n),
				a = Ft(i, o, n),
				u = Ft(e, o, n);
				return s <= r && a <= r && u <= r
			}), i.features.length < 1) return null;
			var o = $t(i, n);
			return 1 === o.coordinates.length && (o.coordinates = o.coordinates[0], o.type = "Polygon"),
			e(o)
		},
		t.collect = function(t, e, n, r) {
			var i = Vo(6),
			o = e.features.map(function(t) {
				return {
					minX: t.geometry.coordinates[0],
					minY: t.geometry.coordinates[1],
					maxX: t.geometry.coordinates[0],
					maxY: t.geometry.coordinates[1],
					property: t.properties[n]
				}
			});
			return i.load(o),
			t.features.forEach(function(t) {
				t.properties || (t.properties = {});
				var e = U(t),
				n = [];
				i.search({
					minX: e[0],
					minY: e[1],
					maxX: e[2],
					maxY: e[3]
				}).forEach(function(e) {
					Lt([e.minX, e.minY], t) && n.push(e.property)
				}),
				t.properties[r] = n
			}),
			t
		},
		t.flip = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.mutate;
			if (!t) throw new Error("geojson is required");
			return ! 1 !== n && void 0 !== n || (t = jt(t)),
			C(t,
			function(t) {
				var e = t[0],
				n = t[1];
				t[0] = n,
				t[1] = e
			}),
			t
		},
		t.simplify = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = void 0 !== e.tolerance ? e.tolerance: 1,
			r = e.highQuality || !1,
			i = e.mutate || !1;
			if (!t) throw new Error("geojson is required");
			if (n && n < 0) throw new Error("invalid tolerance");
			return ! 0 !== i && (t = jt(t)),
			R(t,
			function(t) { !
				function(t, e, n) {
					var r = t.type;
					if ("Point" === r || "MultiPoint" === r) return t;
					te(t, !0);
					var i = t.coordinates;
					switch (r) {
					case "LineString":
						t.coordinates = se(i, e, n);
						break;
					case "MultiLineString":
						t.coordinates = i.map(function(t) {
							return se(t, e, n)
						});
						break;
					case "Polygon":
						t.coordinates = ae(i, e, n);
						break;
					case "MultiPolygon":
						t.coordinates = i.map(function(t) {
							return ae(t, e, n)
						})
					}
				} (t, n, r)
			}),
			t
		},
		t.bezierSpline = ue,
		t.tag = function(t, e, n, r) {
			return t = jt(t),
			e = jt(e),
			A(t,
			function(t) {
				t.properties || (t.properties = {}),
				A(e,
				function(e) {
					void 0 === t.properties[r] && Lt(t, e) && (t.properties[r] = e.properties[n])
				})
			}),
			t
		},
		t.sample = function(t, e) {
			if (!t) throw new Error("featurecollection is required");
			if (null === e || void 0 === e) throw new Error("num is required");
			if ("number" != typeof e) throw new Error("num must be a number");
			return c(function(t, e) {
				for (var n, r, i = t.slice(0), o = t.length, s = o - e; o-->s;) r = Math.floor((o + 1) * Math.random()),
				n = i[r],
				i[r] = i[o],
				i[o] = n;
				return i.slice(s)
			} (t.features, e))
		},
		t.envelope = le,
		t.square = he,
		t.circle = pe,
		t.midpoint = function(t, e) {
			return fe(t, Ft(t, e) / 2, de(t, e))
		},
		t.center = ge,
		t.centerOfMass = ve,
		t.centroid = ye,
		t.combine = function(t) {
			function n(t, e, n) {
				n ? r[e].coordinates = r[e].coordinates.concat(t.geometry.coordinates) : r[e].coordinates.push(t.geometry.coordinates),
				r[e].properties.push(t.properties)
			}
			var r = {
				MultiPoint: {
					coordinates: [],
					properties: []
				},
				MultiLineString: {
					coordinates: [],
					properties: []
				},
				MultiPolygon: {
					coordinates: [],
					properties: []
				}
			},
			i = Object.keys(r).reduce(function(t, e) {
				return t[e.replace("Multi", "")] = e,
				t
			},
			{});
			return A(t,
			function(t) {
				t.geometry && (r[t.geometry.type] ? n(t, t.geometry.type, !0) : i[t.geometry.type] && n(t, i[t.geometry.type], !1))
			}),
			c(Object.keys(r).filter(function(t) {
				return r[t].coordinates.length
			}).sort().map(function(t) {
				return e({
					type: t,
					coordinates: r[t].coordinates
				},
				{
					collectedProperties: r[t].properties
				})
			}))
		},
		t.distance = Ft,
		t.explode = me,
		t.bbox = U,
		t.tesselate = function(t) {
			if (!t.geometry || "Polygon" !== t.geometry.type && "MultiPolygon" !== t.geometry.type) throw new Error("input must be a Polygon or MultiPolygon");
			var e = {
				type: "FeatureCollection",
				features: []
			};
			return "Polygon" === t.geometry.type ? e.features = De(t.geometry.coordinates) : t.geometry.coordinates.forEach(function(t) {
				e.features = e.features.concat(De(t))
			}),
			e
		},
		t.bboxPolygon = ce,
		t.booleanPointInPolygon = Lt,
		t.nearestPoint = ke,
		t.nearestPointOnLine = on,
		t.nearestPointToLine = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.units,
			i = n.properties || {};
			if (!t) throw new Error("points is required");
			if (! (t = function(t) {
				var e = [];
				switch (t.geometry ? t.geometry.type: t.type) {
				case "GeometryCollection":
					return R(t,
					function(t) {
						"Point" === t.type && e.push({
							type: "Feature",
							properties: {},
							geometry: t
						})
					}),
					{
						type: "FeatureCollection",
						features: e
					};
				case "FeatureCollection":
					return t.features = t.features.filter(function(t) {
						return "Point" === t.geometry.type
					}),
					t;
				default:
					throw new Error("points must be a Point Collection")
				}
			} (t)).features.length) throw new Error("points must contain features");
			if (!e) throw new Error("line is required");
			if ("LineString" !== Q(e)) throw new Error("line must be a LineString");
			var o = 1 / 0,
			s = null;
			return A(t,
			function(t) {
				var n = dn(t, e, {
					units: r
				});
				n < o && (o = n, s = t)
			}),
			s && (s.properties = Object.assign({
				dist: o
			},
			s.properties, i)),
			s
		},
		t.planepoint = function(t, e) {
			var n = z(t),
			r = J(e).coordinates[0];
			if (r.length < 4) throw new Error("OuterRing of a Polygon must have 4 or more Positions.");
			var i = e.properties || {},
			o = i.a,
			s = i.b,
			a = i.c,
			u = n[0],
			c = n[1],
			l = r[0][0],
			h = r[0][1],
			f = void 0 !== o ? o: r[0][2],
			p = r[1][0],
			d = r[1][1],
			g = void 0 !== s ? s: r[1][2],
			y = r[2][0],
			v = r[2][1],
			m = void 0 !== a ? a: r[2][2];
			return (m * (u - l) * (c - d) + f * (u - p) * (c - v) + g * (u - y) * (c - h) - g * (u - l) * (c - v) - m * (u - p) * (c - h) - f * (u - y) * (c - d)) / ((u - l) * (c - d) + (u - p) * (c - v) + (u - y) * (c - h) - (u - l) * (c - v) - (u - p) * (c - h) - (u - y) * (c - d))
		},
		t.tin = Tt,
		t.bearing = de,
		t.destination = fe,
		t.kinks = function(t) {
			var e, n, i = {
				type: "FeatureCollection",
				features: []
			};
			if ("LineString" === (n = "Feature" === t.type ? t.geometry: t).type) e = [n.coordinates];
			else if ("MultiLineString" === n.type) e = n.coordinates;
			else if ("MultiPolygon" === n.type) e = [].concat.apply([], n.coordinates);
			else {
				if ("Polygon" !== n.type) throw new Error("Input must be a LineString, MultiLineString, Polygon, or MultiPolygon Feature or Geometry");
				e = n.coordinates
			}
			return e.forEach(function(t) {
				e.forEach(function(e) {
					for (var n = 0; n < t.length - 1; n++) for (var o = n; o < e.length - 1; o++) {
						if (t === e) {
							if (1 === Math.abs(n - o)) continue;
							if (0 === n && o === t.length - 2 && t[n][0] === t[t.length - 1][0] && t[n][1] === t[t.length - 1][1]) continue
						}
						var s = function(t, e, n, r, i, o, s, a) {
							var u, c, l, h, f, p = {
								x: null,
								y: null,
								onLine1: !1,
								onLine2: !1
							};
							return 0 == (u = (a - o) * (n - t) - (s - i) * (r - e)) ? null !== p.x && null !== p.y && p: (c = e - o, l = t - i, h = (s - i) * c - (a - o) * l, f = (n - t) * c - (r - e) * l, c = h / u, l = f / u, p.x = t + c * (n - t), p.y = e + c * (r - e), c >= 0 && c <= 1 && (p.onLine1 = !0), l >= 0 && l <= 1 && (p.onLine2 = !0), !(!p.onLine1 || !p.onLine2) && [p.x, p.y])
						} (t[n][0], t[n][1], t[n + 1][0], t[n + 1][1], e[o][0], e[o][1], e[o + 1][0], e[o + 1][1]);
						s && i.features.push(r([s[0], s[1]]))
					}
				})
			}),
			i
		},
		t.pointOnFeature = yn,
		t.area = mn,
		t.along = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var i;
			if ("Feature" === t.type) i = t.geometry.coordinates;
			else {
				if ("LineString" !== t.type) throw new Error("input must be a LineString Feature or Geometry");
				i = t.coordinates
			}
			if (!E(e)) throw new Error("distance must be a number");
			for (var o = 0,
			s = 0; s < i.length && !(e >= o && s === i.length - 1); s++) {
				if (o >= e) {
					var a = e - o;
					if (a) {
						var u = de(i[s], i[s - 1]) - 180;
						return fe(i[s], a, u, n)
					}
					return r(i[s])
				}
				o += Ft(i[s], i[s + 1], n)
			}
			return r(i[i.length - 1])
		},
		t.length = En,
		t.lineSlice = function(t, e, n) {
			var r = Y(n);
			if ("LineString" !== Q(n)) throw new Error("line must be a LineString");
			for (var i, o = on(n, t), s = on(n, e), u = [(i = o.properties.index <= s.properties.index ? [o, s] : [s, o])[0].geometry.coordinates], c = i[0].properties.index + 1; c < i[1].properties.index + 1; c++) u.push(r[c]);
			return u.push(i[1].geometry.coordinates),
			a(u, n.properties)
		},
		t.lineSliceAlong = Mn,
		t.pointGrid = Pn,
		t.truncate = Ln,
		t.flatten = function(t) {
			if (!t) throw new Error("geojson is required");
			var e = [];
			return k(t,
			function(t) {
				e.push(t)
			}),
			c(e)
		},
		t.lineIntersect = nn,
		t.lineChunk = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.units,
			i = n.reverse;
			if (!t) throw new Error("geojson is required");
			if (e <= 0) throw new Error("segmentLength must be greater than 0");
			var o = [];
			return k(t,
			function(t) {
				i && (t.geometry.coordinates = t.geometry.coordinates.reverse()),
				function(t, e, n, r) {
					var i = En(t, {
						units: n
					});
					if (i <= e) return r(t);
					var o = i / e;
					Number.isInteger(o) || (o = Math.floor(o) + 1);
					for (var s = 0; s < o; s++) {
						r(Mn(t, e * s, e * (s + 1), {
							units: n
						}))
					}
				} (t, e, r,
				function(t) {
					o.push(t)
				})
			}),
			c(o)
		},
		t.unkinkPolygon = function(t) {
			var e = [];
			return k(t,
			function(t) {
				"Polygon" === t.geometry.type && A(Ps(t),
				function(n) {
					e.push(o(n.geometry.coordinates, t.properties))
				})
			}),
			c(e)
		},
		t.greatCircle = function(t, e, n) {
			if ("object" != typeof(n = n || {})) throw new Error("options is invalid");
			var r = n.properties,
			i = n.npoints,
			o = n.offset;
			return t = z(t),
			e = z(e),
			r = r || {},
			i = i || 100,
			o = o || 10,
			new Fs({
				x: t[0],
				y: t[1]
			},
			{
				x: e[0],
				y: e[1]
			},
			r).Arc(i, {
				offset: o
			}).json()
		},
		t.lineSegment = en,
		t.lineSplit = function(t, e) {
			if (!t) throw new Error("line is required");
			if (!e) throw new Error("splitter is required");
			var n = Q(t),
			r = Q(e);
			if ("LineString" !== n) throw new Error("line must be LineString");
			if ("FeatureCollection" === r) throw new Error("splitter cannot be a FeatureCollection");
			if ("GeometryCollection" === r) throw new Error("splitter cannot be a GeometryCollection");
			var i = Ln(e, {
				precision: 7
			});
			switch (r) {
			case "Point":
				return Dn(t, i);
			case "MultiPoint":
				return Rn(t, i);
			case "LineString":
			case "MultiLineString":
			case "Polygon":
			case "MultiPolygon":
				return Rn(t, nn(t, i))
			}
		},
		t.lineArc = jn,
		t.polygonToLine = Bn,
		t.lineToPolygon = Un,
		t.bboxClip = function(t, e) {
			var n = function(t) {
				return t.geometry ? t.geometry.type: t.type
			} (t),
			r = Y(t),
			i = t.properties;
			switch (n) {
			case "LineString":
			case "MultiLineString":
				var s = [];
				return "LineString" === n && (r = [r]),
				r.forEach(function(t) {
					js(t, e, s)
				}),
				1 === s.length ? a(s[0], i) : l(s, i);
			case "Polygon":
				return o(Hn(r, e), i);
			case "MultiPolygon":
				return f(r.map(function(t) {
					return Hn(t, e)
				}), i);
			default:
				throw new Error("geometry " + n + " not supported")
			}
		},
		t.lineOverlap = $n,
		t.sector = function(t, e, n, r, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			if (!t) throw new Error("center is required");
			if (void 0 === n || null === n) throw new Error("bearing1 is required");
			if (void 0 === r || null === r) throw new Error("bearing2 is required");
			if (!e) throw new Error("radius is required");
			if ("object" != typeof i) throw new Error("options must be an object");
			if (er(n) === er(r)) return pe(t, e, i);
			var s = Y(t),
			a = [[s]];
			return C(jn(t, e, n, r, i),
			function(t) {
				a[0].push(t)
			}),
			a[0].push(s),
			o(a)
		},
		t.rhumbBearing = sn,
		t.rhumbDistance = un,
		t.rhumbDestination = nr,
		t.polygonTangents = function(t, e) {
			var n, i, o, s = Y(t),
			a = Y(e);
			switch (Q(e)) {
			case "Polygon":
				n = a[0][0],
				i = a[0][0],
				o = ir(a[0][0], a[0][a[0].length - 1], s);
				var u = rr(a[0], s, o, void 0, n, i);
				n = u[0],
				i = u[1];
				break;
			case "MultiPolygon":
				n = a[0][0][0],
				i = a[0][0][0],
				o = ir(a[0][0][0], a[0][0][a[0][0].length - 1], s),
				a.forEach(function(t) {
					var e = rr(t[0], s, o, void 0, n, i);
					n = e[0],
					i = e[1]
				})
			}
			return c([r(n), r(i)])
		},
		t.rewind = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.reverse || !1,
			r = e.mutate || !1;
			if (!t) throw new Error("<geojson> is required");
			if ("boolean" != typeof n) throw new Error("<reverse> must be a boolean");
			if ("boolean" != typeof r) throw new Error("<mutate> must be a boolean"); ! 1 === r && (t = jt(t));
			var i = [];
			switch (t.type) {
			case "GeometryCollection":
				return R(t,
				function(t) {
					sr(t, n)
				}),
				t;
			case "FeatureCollection":
				return A(t,
				function(t) {
					A(sr(t, n),
					function(t) {
						i.push(t)
					})
				}),
				c(i)
			}
			return sr(t, n)
		},
		t.isobands = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.zProperty || "elevation",
			i = n.commonProperties || {},
			s = n.breaksProperties || [];
			if (H(t, "Point", "Input must contain Points"), !e) throw new Error("breaks is required");
			if (!Array.isArray(e)) throw new Error("breaks is not an Array");
			if (!M(i)) throw new Error("commonProperties is not an Object");
			if (!Array.isArray(s)) throw new Error("breaksProperties is not an Array");
			var a = cr(t, {
				zProperty: r,
				flip: !0
			}),
			u = function(t, e, n) {
				for (var r = [], i = 1; i < e.length; i++) {
					var s = +e[i - 1],
					a = +e[i],
					u = lr(t, s, a - s),
					c = function(t) {
						var e = [],
						n = [];
						t.forEach(function(t) {
							var r = mn(o([t]));
							n.push(r),
							e.push({
								ring: t,
								area: r
							})
						}),
						n.sort(function(t, e) {
							return e - t
						});
						var r = [];
						return n.forEach(function(t) {
							for (var n = 0; n < e.length; n++) if (e[n].area === t) {
								r.push(e[n].ring),
								e.splice(n, 1);
								break
							}
						}),
						r
					} (u),
					l = function(t) {
						for (var e = t.map(function(t) {
							return {
								lrCoordinates: t,
								grouped: !1
							}
						}), n = []; !
						function(t) {
							for (var e = 0; e < t.length; e++) if (!1 === t[e].grouped) return ! 1;
							return ! 0
						} (e);) for (var r = 0; r < e.length; r++) if (!e[r].grouped) {
							var i = [];
							i.push(e[r].lrCoordinates),
							e[r].grouped = !0;
							for (var s = o([e[r].lrCoordinates]), a = r + 1; a < e.length; a++) if (!e[a].grouped) {
								var u = o([e[a].lrCoordinates]); (function(t, e) {
									for (var n = me(t), r = 0; r < n.features.length; r++) if (!Lt(n.features[r], e)) return ! 1;
									return ! 0
								})(u, s) && (i.push(e[a].lrCoordinates), e[a].grouped = !0)
							}
							n.push(i)
						}
						return n
					} (c),
					h = {};
					h.groupedRings = l,
					h[n] = s + "-" + a,
					r.push(h)
				}
				return r
			} (a, e, r);
			return c((u = function(t, e, n) {
				var r = U(n),
				i = r[2] - r[0],
				o = r[3] - r[1],
				s = r[0],
				a = r[1],
				u = e[0].length - 1,
				c = e.length - 1,
				l = i / u,
				h = o / c,
				f = function(t) {
					t[0] = t[0] * l + s,
					t[1] = t[1] * h + a
				};
				return t.forEach(function(t) {
					t.groupedRings.forEach(function(t) {
						t.forEach(function(t) {
							t.forEach(f)
						})
					})
				}),
				t
			} (u, a, t)).map(function(t, e) {
				if (s[e] && !M(s[e])) throw new Error("Each mappedProperty is required to be an Object");
				var n = Object.assign({},
				i, s[e]);
				return n[r] = t[r],
				f(t.groupedRings, n)
			}))
		},
		t.transformRotate = pr,
		t.transformScale = dr,
		t.transformTranslate = function(t, e, n, r) {
			if (r = r || {},
			!M(r)) throw new Error("options is invalid");
			var i = r.units,
			o = r.zTranslation,
			s = r.mutate;
			if (!t) throw new Error("geojson is required");
			if (void 0 === e || null === e || isNaN(e)) throw new Error("distance is required");
			if (o && "number" != typeof o && isNaN(o)) throw new Error("zTranslation is not a number");
			if (o = void 0 !== o ? o: 0, 0 === e && 0 === o) return t;
			if (void 0 === n || null === n || isNaN(n)) throw new Error("direction is required");
			return e < 0 && (e = -e, n = -n),
			!1 !== s && void 0 !== s || (t = jt(t)),
			C(t,
			function(t) {
				var r = Y(nr(t, e, n, {
					units: i
				}));
				t[0] = r[0],
				t[1] = r[1],
				o && 3 === t.length && (t[2] += o)
			}),
			t
		},
		t.lineOffset = function(t, e, n) {
			if (n = n || {},
			!M(n)) throw new Error("options is invalid");
			var r = n.units;
			if (!t) throw new Error("geojson is required");
			if (void 0 === e || null === e || isNaN(e)) throw new Error("distance is required");
			var i = Q(t),
			o = t.properties;
			switch (i) {
			case "LineString":
				return _r(t, e, r);
			case "MultiLineString":
				var s = [];
				return k(t,
				function(t) {
					s.push(_r(t, e, r).geometry.coordinates)
				}),
				l(s, o);
			default:
				throw new Error("geometry " + i + " is not supported")
			}
		},
		t.polygonize = function(t) {
			var e = Fa.fromGeoJson(t);
			e.deleteDangles(),
			e.deleteCutEdges();
			var n = [],
			r = [];
			return e.getEdgeRings().filter(function(t) {
				return t.isValid()
			}).forEach(function(t) {
				t.isHole() ? n.push(t) : r.push(t)
			}),
			n.forEach(function(t) {
				Da.findEdgeRingContaining(t, r) && r.push(t)
			}),
			c(r.map(function(t) {
				return t.toPolygon()
			}))
		},
		t.booleanDisjoint = function(t, e) {
			var n;
			return k(t,
			function(t) {
				k(e,
				function(e) {
					if (!1 === n) return ! 1;
					n = function(t, e) {
						switch (t.type) {
						case "Point":
							switch (e.type) {
							case "Point":
								return !
								function(t, e) {
									return t[0] === e[0] && t[1] === e[1]
								} (t.coordinates, e.coordinates);
							case "LineString":
								return ! xr(e, t);
							case "Polygon":
								return ! Lt(t, e)
							}
							break;
						case "LineString":
							switch (e.type) {
							case "Point":
								return ! xr(t, e);
							case "LineString":
								return !
								function(t, e) {
									return nn(t, e).features.length > 0
								} (t, e);
							case "Polygon":
								return ! Er(e, t)
							}
							break;
						case "Polygon":
							switch (e.type) {
							case "Point":
								return ! Lt(e, t);
							case "LineString":
								return ! Er(t, e);
							case "Polygon":
								return !
								function(t, e) {
									for (var n = 0; n < t.coordinates[0].length; n++) if (Lt(t.coordinates[0][n], e)) return ! 0;
									for (var r = 0; r < e.coordinates[0].length; r++) if (Lt(e.coordinates[0][r], t)) return ! 0;
									return ! 1
								} (e, t)
							}
						}
					} (t.geometry, e.geometry)
				})
			}),
			n
		},
		t.booleanContains = function(t, e) {
			var n = Q(t),
			r = Q(e),
			i = J(t),
			o = J(e),
			s = Y(t),
			a = Y(e);
			switch (n) {
			case "Point":
				switch (r) {
				case "Point":
					return Ir(s, a);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "MultiPoint":
				switch (r) {
				case "Point":
					return function(t, e) {
						var n, r = !1;
						for (n = 0; n < t.coordinates.length; n++) if (Ir(t.coordinates[n], e.coordinates)) {
							r = !0;
							break
						}
						return r
					} (i, o);
				case "MultiPoint":
					return function(t, e) {
						for (var n = 0; n < e.coordinates.length; n++) {
							for (var r = !1,
							i = 0; i < t.coordinates.length; i++) if (Ir(e.coordinates[n], t.coordinates[i])) {
								r = !0;
								break
							}
							if (!r) return ! 1
						}
						return ! 0
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "LineString":
				switch (r) {
				case "Point":
					return In(o, i, {
						ignoreEndVertices: !0
					});
				case "LineString":
					return function(t, e) {
						for (var n = !1,
						r = 0; r < e.coordinates.length; r++) if (In({
							type: "Point",
							coordinates: e.coordinates[r]
						},
						t, {
							ignoreEndVertices: !0
						}) && (n = !0), !In({
							type: "Point",
							coordinates: e.coordinates[r]
						},
						t, {
							ignoreEndVertices: !1
						})) return ! 1;
						return n
					} (i, o);
				case "MultiPoint":
					return function(t, e) {
						for (var n = !1,
						r = 0; r < e.coordinates.length; r++) if (In(e.coordinates[r], t, {
							ignoreEndVertices: !0
						}) && (n = !0), !In(e.coordinates[r], t)) return ! 1;
						return !! n
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "Polygon":
				switch (r) {
				case "Point":
					return Lt(o, i, {
						ignoreBoundary: !0
					});
				case "LineString":
					return function(t, e) {
						var n = !1,
						r = 0;
						if (!Mr(U(t), U(e))) return ! 1;
						for (; r < e.coordinates.length - 1; r++) {
							if (Lt({
								type: "Point",
								coordinates: function(t, e) {
									return [(t[0] + e[0]) / 2, (t[1] + e[1]) / 2]
								} (e.coordinates[r], e.coordinates[r + 1])
							},
							t, {
								ignoreBoundary: !0
							})) {
								n = !0;
								break
							}
						}
						return n
					} (i, o);
				case "Polygon":
					return function(t, e) {
						if (!Mr(U(t), U(e))) return ! 1;
						for (var n = 0; n < e.coordinates[0].length; n++) if (!Lt(e.coordinates[0][n], t)) return ! 1;
						return ! 0
					} (i, o);
				case "MultiPoint":
					return function(t, e) {
						for (var n = 0; n < e.coordinates.length; n++) if (!Lt(e.coordinates[n], t, {
							ignoreBoundary: !0
						})) return ! 1;
						return ! 0
					} (i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			default:
				throw new Error("feature1 " + n + " geometry not supported")
			}
		},
		t.booleanCrosses = function(t, e) {
			var n = Q(t),
			r = Q(e),
			i = J(t),
			o = J(e);
			switch (n) {
			case "MultiPoint":
				switch (r) {
				case "LineString":
					return Sr(i, o);
				case "Polygon":
					return Nr(i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "LineString":
				switch (r) {
				case "MultiPoint":
					return Sr(o, i);
				case "LineString":
					return function(t, e) {
						if (nn(t, e).features.length > 0) for (var n = 0; n < t.coordinates.length - 1; n++) for (var r = 0; r < e.coordinates.length - 1; r++) {
							var i = !0;
							if (0 !== r && r !== e.coordinates.length - 2 || (i = !1), Pr(t.coordinates[n], t.coordinates[n + 1], e.coordinates[r], i)) return ! 0
						}
						return ! 1
					} (i, o);
				case "Polygon":
					return Cr(i, o);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			case "Polygon":
				switch (r) {
				case "MultiPoint":
					return Nr(o, i);
				case "LineString":
					return Cr(o, i);
				default:
					throw new Error("feature2 " + r + " geometry not supported")
				}
			default:
				throw new Error("feature1 " + n + " geometry not supported")
			}
		},
		t.booleanClockwise = or,
		t.booleanOverlap = Tr,
		t.booleanPointOnLine = In,
		t.booleanEqual = function(t, e) {
			if (!t) throw new Error("feature1 is required");
			if (!e) throw new Error("feature2 is required");
			return Q(t) === Q(e) && new Ua({
				precision: 6
			}).compare(te(t), te(e))
		},
		t.booleanWithin = Sn,
		t.clone = jt,
		t.cleanCoords = te,
		t.clustersDbscan = function(t, e, n) {
			if ("object" != typeof(n = n || {})) throw new Error("options is invalid");
			var r = n.minPoints,
			i = n.units;
			if (H(t, "Point", "Input must contain Points"), null === e || void 0 === e) throw new Error("maxDistance is required");
			if (! (Math.sign(e) > 0)) throw new Error("Invalid maxDistance");
			if (! (void 0 === r || null === r || Math.sign(r) > 0)) throw new Error("Invalid minPoints");
			t = jt(t),
			r = r || 3;
			var o = new Wa.DBSCAN,
			s = -1;
			return o.run(T(t), b(e, i), r, Ft).forEach(function(e) {
				s++,
				e.forEach(function(e) {
					var n = t.features[e];
					n.properties || (n.properties = {}),
					n.properties.cluster = s,
					n.properties.dbscan = "core"
				})
			}),
			o.noise.forEach(function(e) {
				var n = t.features[e];
				n.properties || (n.properties = {}),
				n.properties.cluster ? n.properties.dbscan = "edge": n.properties.dbscan = "noise"
			}),
			t
		},
		t.clustersKmeans = function(t, e) {
			if ("object" != typeof(e = e || {})) throw new Error("options is invalid");
			var n = e.numberOfClusters,
			r = e.mutate;
			H(t, "Point", "Input must contain Points");
			var i = t.features.length; (n = n || Math.round(Math.sqrt(i / 2))) > i && (n = i),
			!1 !== r && void 0 !== r || (t = jt(t));
			var o = T(t),
			s = o.slice(0, n),
			a = tu(o, n, s),
			u = {};
			return a.centroids.forEach(function(t, e) {
				u[e] = t
			}),
			A(t,
			function(t, e) {
				var n = a.idxs[e];
				t.properties.cluster = n,
				t.properties.centroid = u[n]
			}),
			t
		},
		t.pointToLineDistance = dn,
		t.booleanParallel = function(t, e) {
			if (!t) throw new Error("line1 is required");
			if (!e) throw new Error("line2 is required");
			if ("LineString" !== Dr(t, "line1")) throw new Error("line1 must be a LineString");
			if ("LineString" !== Dr(e, "line2")) throw new Error("line2 must be a LineString");
			for (var n = en(te(t)).features, r = en(te(e)).features, i = 0; i < n.length; i++) {
				var o = n[i].geometry.coordinates;
				if (!r[i]) break;
				if (!
				function(t, e) {
					return m(sn(t[0], t[1])) === m(sn(e[0], e[1]))
				} (o, r[i].geometry.coordinates)) return ! 1
			}
			return ! 0
		},
		t.shortestPath = function(t, n, i) {
			if (i = i || {},
			!M(i)) throw new Error("options is invalid");
			var o = i.resolution,
			s = i.minDistance,
			u = i.obstacles || c([]);
			if (!t) throw new Error("start is required");
			if (!n) throw new Error("end is required");
			if (o && !E(o) || o <= 0) throw new Error("options.resolution must be a number, greater than 0");
			if (s) throw new Error("options.minDistance is not yet implemented");
			var l = z(t),
			h = z(n);
			switch (t = r(l), n = r(h), Q(u)) {
			case "FeatureCollection":
				if (0 === u.features.length) return a([l, h]);
				break;
			case "Polygon":
				u = c([e(J(u))]);
				break;
			default:
				throw new Error("invalid obstacles")
			}
			var f = u;
			f.features.push(t),
			f.features.push(n);
			var p = U(dr(ce(U(f)), 1.15));
			o || (o = Ft([p[0], p[1]], [p[2], p[1]], i) / 100),
			f.features.pop(),
			f.features.pop();
			for (var d = p[0], g = p[1], y = p[2], v = p[3], m = o / Ft([d, g], [y, g], i) * (y - d), _ = o / Ft([d, g], [d, v], i) * (v - g), w = y - d, b = v - g, x = (w - Math.floor(w / m) * m) / 2, I = [], S = [], C = [], N = [], P = 1 / 0, L = 1 / 0, A = v - (b - Math.floor(b / _) * _) / 2, O = 0; A >= g;) {
				for (var T = [], R = [], D = d + x, k = 0; D <= y;) {
					var F = r([D, A]),
					j = function(t, e) {
						for (var n = 0; n < e.features.length; n++) if (Lt(t, e.features[n])) return ! 0;
						return ! 1
					} (F, u);
					T.push(j ? 0 : 1),
					R.push(D + "|" + A);
					var q = Ft(F, t); ! j && q < P && (P = q, C = {
						x: k,
						y: O
					});
					var B = Ft(F, n); ! j && B < L && (L = B, N = {
						x: k,
						y: O
					}),
					D += m,
					k++
				}
				S.push(T),
				I.push(R),
				A -= _,
				O++
			}
			var G = new Fr(S, {
				diagonal: !0
			}),
			Y = G.grid[C.y][C.x],
			X = G.grid[N.y][N.x],
			V = [l];
			return eu.search(G, Y, X).forEach(function(t) {
				var e = I[t.x][t.y].split("|");
				V.push([ + e[0], +e[1]])
			}),
			V.push(h),
			te(a(V))
		},
		t.voronoi = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.bbox || [ - 180, -85, 180, 85];
			if (!t) throw new Error("points is required");
			if (!Array.isArray(n)) throw new Error("bbox is invalid");
			return H(t, "Point", "points"),
			c(fu().x(function(t) {
				return t.geometry.coordinates[0]
			}).y(function(t) {
				return t.geometry.coordinates[1]
			}).extent([[n[0], n[1]], [n[2], n[3]]]).polygons(t.features).map(hi))
		},
		t.ellipse = fi,
		t.centerMean = di,
		t.centerMedian = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.counter || 10;
			if (!E(n)) throw new Error("counter must be a number");
			var r = e.weight,
			i = di(t, {
				weight: e.weight
			}),
			o = c([]);
			return A(t,
			function(t) {
				o.features.push(ye(t, {
					weight: t.properties[r]
				}))
			}),
			o.properties = {
				tolerance: e.tolerance,
				medianCandidates: []
			},
			gi(i.geometry.coordinates, [0, 0], o, n)
		},
		t.standardDeviationalEllipse = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.steps || 64,
			r = e.weight,
			i = e.properties || {};
			if (!E(n)) throw new Error("steps must be a number");
			if (!M(i)) throw new Error("properties must be a number");
			var o = T(t).length,
			s = di(t, {
				weight: r
			}),
			a = 0,
			u = 0,
			l = 0;
			A(t,
			function(t) {
				var e = t.properties[r] || 1,
				n = yi(Y(t), Y(s));
				a += Math.pow(n.x, 2) * e,
				u += Math.pow(n.y, 2) * e,
				l += n.x * n.y * e
			});
			var h = a - u,
			f = Math.sqrt(Math.pow(h, 2) + 4 * Math.pow(l, 2)),
			p = 2 * l,
			d = Math.atan((h + f) / p),
			g = 180 * d / Math.PI,
			y = 0,
			v = 0,
			m = 0;
			A(t,
			function(t) {
				var e = t.properties[r] || 1,
				n = yi(Y(t), Y(s));
				y += Math.pow(n.x * Math.cos(d) - n.y * Math.sin(d), 2) * e,
				v += Math.pow(n.x * Math.sin(d) + n.y * Math.cos(d), 2) * e,
				m += e
			});
			var _ = Math.sqrt(2 * y / m),
			w = Math.sqrt(2 * v / m),
			b = fi(s, _, w, {
				units: "degrees",
				angle: g,
				steps: n,
				properties: i
			}),
			x = Ot(t, c([b])),
			I = {
				meanCenterCoordinates: Y(s),
				semiMajorAxis: _,
				semiMinorAxis: w,
				numberOfFeatures: o,
				angle: g,
				percentageWithinEllipse: 100 * T(x).length / o
			};
			return b.properties.standardDeviationalEllipse = I,
			b
		},
		t.difference = function(t, n) {
			var r = J(t),
			i = J(n),
			o = t.properties || {};
			if (r = Yi(r), i = Yi(i), !r) return null;
			if (!i) return e(r, o);
			var s = new xl,
			a = s.read(r),
			u = s.read(i),
			c = Ip.difference(a, u);
			return c.isEmpty() ? null: e((new El).write(c), o)
		},
		t.buffer = function(t, e, n) {
			var r = (n = n || {}).units,
			i = n.steps || 64;
			if (!t) throw new Error("geojson is required");
			if ("object" != typeof n) throw new Error("options must be an object");
			if ("number" != typeof i) throw new Error("steps must be an number");
			if (void 0 === e) throw new Error("radius is required");
			if (i <= 0) throw new Error("steps must be greater than 0");
			i = i || 64,
			r = r || "kilometers";
			var o = [];
			switch (t.type) {
			case "GeometryCollection":
				return R(t,
				function(t) {
					var n = Eo(t, e, r, i);
					n && o.push(n)
				}),
				c(o);
			case "FeatureCollection":
				return A(t,
				function(t) {
					var n = Eo(t, e, r, i);
					n && A(n,
					function(t) {
						t && o.push(t)
					})
				}),
				c(o)
			}
			return Eo(t, e, r, i)
		},
		t.union = No,
		t.intersect = Po,
		t.dissolve = function(t, e) {
			if (e = e || {},
			!M(e)) throw new Error("options is invalid");
			var n = e.propertyName;
			H(t, "Polygon", "dissolve");
			var r = jt(t),
			i = r.features,
			o = [];
			i.forEach(function(t, e) {
				t.properties.origIndexPosition = e
			});
			var s = Ke();
			s.load(r);
			for (var u in i) {
				var c = i[u],
				l = !1;
				if (s.search(c).features.forEach(function(t) {
					c = i[u];
					var e = t.properties.origIndexPosition;
					if (o.length > 0 && 0 !== e) if (e > o[o.length - 1]) e -= o.length;
					else {
						var r = Lo(e, o);
						0 !== r && (e -= r)
					}
					if (e !== +u) {
						var h = i[e];
						h && c && (void 0 !== n && h.properties[n] !== c.properties[n] || Tr(c, h) &&
						function(t, e) {
							return nn(a(T(t)), a(T(e))).features.length > 0
						} (c, h) && (i[u] = No(c, h), o.push(t.properties.origIndexPosition), o.sort(function(t, e) {
							return t - e
						}), s.remove(t), i.splice(e, 1), c.properties.origIndexPosition = u, s.remove(c,
						function(t, e) {
							return t.properties.origIndexPosition === e.properties.origIndexPosition
						}), l = !0))
					}
				}), l) {
					if (!c) continue;
					c.properties.origIndexPosition = u,
					s.insert(c),
					u--
				}
			}
			return i.forEach(function(t) {
				delete t.properties.origIndexPosition,
				delete t.bbox
			}),
			r
		},
		t.hexGrid = Ao,
		t.mask = function(t, e) {
			var n = function(t) {
				return o(t && t.geometry.coordinates || [[[180, 90], [ - 180, 90], [ - 180, -90], [180, -90], [180, 90]]])
			} (e),
			r = function(t) {
				var e = [],
				n = [];
				return k(t,
				function(t) {
					var r = t.geometry.coordinates,
					i = r[0],
					s = r.slice(1);
					e.push(o([i])),
					s.forEach(function(t) {
						n.push(o([t]))
					})
				}),
				[c(e), c(n)]
			} (t),
			i = r[0],
			s = r[1];
			return function(t, e, n) {
				var r = [];
				return r.push(t.geometry.coordinates[0]),
				k(e,
				function(t) {
					r.push(t.geometry.coordinates[0])
				}),
				k(n,
				function(t) {
					r.push(t.geometry.coordinates[0])
				}),
				o(r)
			} (n, i = Oo(i), s = Oo(s))
		},
		t.squareGrid = Ro,
		t.triangleGrid = Do,
		t.interpolate = function(t, e, n) {
			if ("object" != typeof(n = n || {})) throw new Error("options is invalid");
			var r = n.gridType,
			i = n.property,
			o = n.weight;
			if (!t) throw new Error("points is required");
			if (H(t, "Point", "input must contain Points"), !e) throw new Error("cellSize is required");
			if (void 0 !== o && "number" != typeof o) throw new Error("weight must be a number");
			i = i || "elevation",
			r = r || "square",
			o = o || 1;
			var s, a = U(t);
			switch (r) {
			case "point":
			case "points":
				s = Pn(a, e, n);
				break;
			case "square":
			case "squares":
				s = Ro(a, e, n);
				break;
			case "hex":
			case "hexes":
				s = Ao(a, e, n);
				break;
			case "triangle":
			case "triangles":
				s = Do(a, e, n);
				break;
			default:
				throw new Error("invalid gridType")
			}
			var u = [];
			return A(s,
			function(e) {
				var s = 0,
				a = 0;
				A(t,
				function(t) {
					var u, c = Ft("point" === r ? e: ye(e), t, n);
					if (void 0 !== i && (u = t.properties[i]), void 0 === u && (u = t.geometry.coordinates[2]), void 0 === u) throw new Error("zValue is missing");
					0 === c && (s = u);
					var l = 1 / Math.pow(c, o);
					a += l,
					s += l * u
				});
				var c = jt(e);
				c.properties[i] = s / a,
				u.push(c)
			}),
			c(u)
		},
		t.pointOnSurface = yn,
		t.polygonToLineString = Bn,
		t.lineStringToPolygon = Un,
		t.inside = Lt,
		t.within = Ot,
		t.bezier = ue,
		t.nearest = ke,
		t.pointOnLine = on,
		t.lineDistance = En,
		t.radians2degrees = _,
		t.degrees2radians = w,
		t.distanceToDegrees = v,
		t.distanceToRadians = y,
		t.radiansToDistance = g,
		t.bearingToAngle = m,
		t.convertDistance = b,
		t.toMercator = cn,
		t.toWgs84 = ln,
		t.randomPosition = vi,
		t.randomPoint = mi,
		t.randomPolygon = _i,
		t.randomLineString = wi,
		t.getCluster = xi,
		t.clusterEach = Ei,
		t.clusterReduce = Mi,
		t.createBins = Ii,
		t.applyFilter = Si,
		t.propertiesContainsFilter = Ci,
		t.filterProperties = Ni,
		t.earthRadius = ko,
		t.factors = Fo,
		t.unitsFactors = jo,
		t.areaFactors = qo,
		t.feature = e,
		t.geometry = n,
		t.point = r,
		t.points = i,
		t.polygon = o,
		t.polygons = s,
		t.lineString = a,
		t.lineStrings = u,
		t.featureCollection = c,
		t.multiLineString = l,
		t.multiPoint = h,
		t.multiPolygon = f,
		t.geometryCollection = p,
		t.round = d,
		t.radiansToLength = g,
		t.lengthToRadians = y,
		t.lengthToDegrees = v,
		t.bearingToAzimuth = m,
		t.radiansToDegrees = _,
		t.degreesToRadians = w,
		t.convertLength = b,
		t.convertArea = x,
		t.isNumber = E,
		t.isObject = M,
		t.validateBBox = I,
		t.validateId = S,
		t.getCoord = z,
		t.getCoords = Y,
		t.containsNumber = X,
		t.geojsonType = V,
		t.featureOf = W,
		t.collectionOf = H,
		t.getGeom = J,
		t.getGeomType = Z,
		t.getType = Q,
		t.coordEach = C,
		t.coordReduce = N,
		t.propEach = P,
		t.propReduce = L,
		t.featureEach = A,
		t.featureReduce = O,
		t.coordAll = T,
		t.geomEach = R,
		t.geomReduce = D,
		t.flattenEach = k,
		t.flattenReduce = F,
		t.segmentEach = j,
		t.segmentReduce = q,
		t.lineEach = B,
		t.lineReduce = G,
		Object.defineProperty(t, "__esModule", {
			value: !0
		})
	})
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		for (var n = new Array(e + 1), r = 0; r < t.length; ++r) n[r] = t[r];
		for (var r = 0; r <= t.length; ++r) {
			for (var i = t.length; i <= e; ++i) {
				for (var s = new Array(e), a = 0; a < e; ++a) s[a] = Math.pow(i + 1 - r, a);
				n[i] = s
			}
			if (o.apply(void 0, n)) return ! 0
		}
		return ! 1
	}
	function i(t) {
		var e = t.length;
		if (0 === e) return [];
		if (1 === e) return [0];
		for (var n = t[0].length, i = [t[0]], o = [0], s = 1; s < e; ++s) if (i.push(t[s]), r(i, n)) {
			if (o.push(s), o.length === n + 1) return o
		} else i.pop();
		return o
	}
	t.exports = i;
	var o = n(274)
},
,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(32),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = function() {
		function t(e, n) { (0, a.
		default)(this, t),
			this.p0 = e,
			this.p1 = n
		}
		return (0, c.
	default)(t, [{
			key: "getXYCoefficient",
			value: function() {
				var t = (0, o.
			default)(this.p0.elements, 3),
				e = t[0],
				n = t[1],
				r = t[2],
				i = (0, o.
			default)(this.p1.elements, 3),
				s = i[0],
				a = i[1],
				u = i[2];
				return [(s - e) / (u - r), (e * u - s * r) / (u - r), (a - n) / (u - r), (n * u - a * r) / (u - r)]
			}
		}]),
		t
	} ();
	e.
default = l
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(32),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(107),
	h = function() {
		function t(e, n) { (0, a.
		default)(this, t),
			this.center = e,
			this.radius = n
		}
		return (0, c.
	default)(t, [{
			key: "intersectWithLine",
			value: function(t) {
				var e = t.getXYCoefficient(),
				n = (0, o.
			default)(e, 4),
				r = n[0],
				i = n[1],
				s = n[2],
				a = n[3],
				u = (0, o.
			default)(this.center.elements, 3),
				c = u[0],
				h = u[1],
				f = u[2],
				p = this.radius,
				d = i - c,
				g = a - h,
				y = -f,
				v = r * r + s * s + 1,
				m = 2 * (r * d + s * g + y),
				_ = d * d + g * g + y * y - p * p,
				w = m * m - 4 * v * _;
				if (w < 0) return [];
				var b = ( - m + Math.sqrt(w)) / (2 * v),
				x = ( - m - Math.sqrt(w)) / (2 * v),
				E = r * b + i,
				M = s * b + a,
				I = r * x + i,
				S = s * x + a;
				return [new l.Vector3(E, M, b), new l.Vector3(I, S, x)]
			}
		}]),
		t
	} ();
	e.
default = h
},
, , , , , , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.styleNameConfig = {
		regionTag: {
			airportsarea: [196832],
			building: [196619, 197120, 197121, 197122, 197123],
			commercial: [196890],
			grass: [196614, 196615, 196616, 196833],
			hospital: [196774],
			land: [196609, 196612, 196613, 196617],
			otherarea: [196775, 196831, 196856, 196857, 196858, 196859, 196860, 196861, 196862, 196863, 196864, 196865, 196866, 196867, 196868, 196869, 196877, 196894, 196895, 196934],
			park: [196622],
			parkinglots: [196629, 196787],
			resident: [196621, 196627, 196630, 196632],
			school: [196773],
			sportsfield: [196626, 196789, 196790, 196791, 196792, 196793, 196794, 196795, 196796, 196798],
			subwayarea: [196634, 196635, 196636, 196637, 196638, 196639, 196640, 196641, 196642, 196643, 196644, 196645, 196646, 196647, 196648, 196649, 196684, 196685, 196686, 196687, 196688, 196689, 196690, 196651, 196652, 196653, 196654, 196655, 196656, 196657, 196658, 196659, 196660, 196691, 196692, 196693, 196694, 196695, 196696, 196697, 196698, 196661, 196662, 196663, 196664, 196665, 196666, 196667, 196668, 196669, 196670, 196671, 196672, 196673, 196674, 196675, 196676, 196677, 196678, 196679, 196680, 196681, 196682, 196683, 196699, 196700, 196701, 196702, 196703, 196704, 196705, 196706, 196707, 196708, 196709, 196710, 196711, 196712, 196713, 196714, 196715, 196716, 196717, 196718, 196719, 196720, 196721, 196722, 196723, 196724, 196725, 196726, 196727, 196728, 196729, 196730, 196731, 196732, 196733, 196734, 196735, 196736, 196737, 196738, 196739, 196650, 196740, 196741, 196742, 196743, 196744, 196745, 196746, 196747, 196748, 196749, 196750, 196753, 196754, 196755, 196756, 196757, 196758, 196759, 196760, 196761, 196762, 196763, 196764, 196765, 196766, 196767, 196768, 196769, 196770, 196771, 196772, 196776, 196777, 196778, 196779, 196780, 196781, 196782, 196783, 196784, 196785, 196786, 196799, 196800, 196801, 196802, 196803, 196815, 196816, 196817, 196818, 196819, 196820, 196821, 196822, 196823, 196824, 196825, 196826, 196827, 196828, 196829, 196830, 196834, 196835, 196836, 196837, 196838, 196839, 196840, 196841, 196842, 196843, 196844, 196845, 196846, 196847, 196848, 196849, 196850, 196851, 196852, 196853, 196854, 196855, 196870, 196871, 196872, 196874, 196875, 196876, 196881, 196878, 196879, 196880, 196882, 196883, 196884, 196885, 196886, 196887, 196888, 196889, 196891, 196892, 196893, 196896, 196897, 196898, 196899, 196900, 196901, 196902, 196903, 196904, 196905, 196906, 196907, 196908, 196909, 196910, 196911, 196912, 196913, 196914, 196915, 196916, 196917, 196918, 196919, 196920, 196921, 196922, 196923, 196924, 196925, 196926, 196927, 196928, 196929, 196930, 196931, 196932, 196933, 196935, 196936, 196938, 196939, 196940, 196941, 196942, 196944, 196945, 196946, 196947],
			water: [196610, 196611, 196618]
		},
		labelTag: {
			aoi: [262149, 262150, 262404, 262405, 262406, 262482, 262483, 262484, 262153, 262952],
			autoservice: [262864],
			bridge: [262154, 262953, 262946, 262947, 262948, 262949, 262950],
			building: [262145, 262409, 262487, 262708, 262713, 262494, 262506, 262954],
			business: [262493, 262515],
			city: [262157, 262158, 262159, 262160],
			commercial: [262942],
			continent: [262395, 262426],
			country: [262402, 262865],
			district: [262155],
			education: [262453, 262488],
			entertainment: [262486],
			ferry: [262162, 262801],
			government: [262869],
			highway: [262166, 262418, 262425, 262792, 262799, 262812, 262813],
			highwaynum: [262164, 262165, 262169, 262170, 262783, 262784],
			hospital: [262407],
			hotel: [262452],
			island: [262146],
			lifeservice: [262866, 262867, 262868],
			mainroad: [262178, 262179, 262185, 262186, 262415, 262416, 262419, 262420, 262790, 262791, 262797, 262798, 262802, 262803, 262810, 262811],
			motorway: [262173, 262417, 262424, 262793, 262800],
			nationalnum: [262163, 262168, 262785],
			ocean: [262147, 262396, 262707],
			other: [262151, 262496, 262497, 262498, 262499, 262500, 262501, 262502, 262503, 262504, 262505, 262507, 262508, 262509, 262510, 262511, 262512, 262514],
			path: [262903],
			province: [262533],
			railway: [262908, 263057],
			restrant: [262450, 262495],
			roadnum: [262167, 262176, 262786],
			scenic: [262288, 262489, 262870, 262941],
			secondaryroad: [262180, 262181, 262187, 262188, 262413, 262414, 262421, 262422, 262788, 262789, 262795, 262796, 262804, 262805, 262808, 262809],
			shopping: [262451, 262945],
			street: [262182, 262189, 262412, 262423, 262787, 262794, 262806, 262807],
			subwaygate: [262454, 262455, 262456, 262457, 262458, 262459, 262460, 262461, 262462, 262463, 262464, 262465, 262466, 262467, 262468, 262469, 262470, 262471, 262472, 262473, 262474, 262475, 262476, 262477, 262478, 262479, 262480, 262481, 262492, 262485, 262691, 262696, 262750, 262818, 262841, 262842, 262853, 262921, 262922, 262927, 262940, 263016],
			subwayline: [262544, 262545, 262546, 262547, 262548, 262549, 262550, 262551, 262552, 262553, 262554, 262555, 262556, 262557, 262558, 262559, 262560, 262561, 262564, 262565, 262566, 262567, 262568, 262569, 262570, 262571, 262572, 262573, 262574, 262575, 262576, 262577, 262578, 262579, 262580, 262581, 262582, 262583, 262584, 262585, 262586, 262587, 262588, 262589, 262590, 262591, 262592, 262593, 262594, 262595, 262596, 262597, 262598, 262599, 262600, 262601, 262602, 262603, 262604, 262605, 262606, 262607, 262608, 262609, 262610, 262611, 262612, 262613, 262614, 262615, 262616, 262617, 262618, 262619, 262620, 262621, 262622, 262623, 262624, 262625, 262626, 262627, 262628, 262629, 262630, 262631, 262632, 262633, 262634, 262635, 262636, 262637, 262638, 262639, 262640, 262641, 262642, 262643, 262644, 262645, 262646, 262647, 262648, 262649, 262650, 262651, 262652, 262653, 262654, 262655, 262656, 262657, 262658, 262659, 262660, 262661, 262662, 262663, 262664, 262665, 262666, 262667, 262668, 262669, 262670, 262671, 262672, 262673, 262674, 262675, 262676, 262677, 262678, 262679, 262680, 262681, 262682, 262684, 262686, 262688, 262690, 262693, 262695, 262698, 262700, 262702, 262704, 262706, 262710, 262712, 262715, 262717, 262719, 262721, 262723, 262725, 262727, 262729, 262731, 262733, 262735, 262737, 262739, 262741, 262743, 262745, 262747, 262749, 262752, 262762, 262767, 262768, 262769, 262770, 262771, 262772, 262773, 262774, 262775, 262776, 262777, 262778, 262779, 262780, 262781, 262782, 262815, 262817, 262820, 262822, 262824, 262826, 262828, 262830, 262832, 262834, 262836, 262838, 262840, 262844, 262846, 262848, 262850, 262852, 262855, 262857, 262859, 262861, 262863, 262905, 262907, 262910, 262909, 262912, 262914, 262916, 262918, 262920, 262924, 262926, 262929, 262931, 262933, 262935, 262937, 262939, 262944, 262973, 262975, 262977, 262979, 262981, 262983, 262985, 262987, 262989, 262991, 262993, 262995, 262997, 262999, 263001, 263003, 263005, 263007, 263009, 263011, 263013, 263015, 263018, 263020, 263022, 263024, 263026, 263028, 263030, 263032, 263034, 263036, 263038, 263040, 263042, 263044, 263046, 263048, 263050, 263052, 263054, 263056, 263061, 263063, 263065, 263067, 263069, 263073, 263075, 263077, 263079],
			subwaystation: [262287],
			town: [262156],
			transport: [262410, 262871],
			village: [262152]
		},
		lineTag: {
			ferry: [131115],
			guojie: [131073, 131074, 131075],
			highway: [131082, 131088, 131335, 131337, 131090, 131396, 131406],
			mainroad: [131084, 131085, 131105, 131106, 131107, 131333, 131342, 131108, 131109, 131110, 131111, 131334, 131344, 131112, 131398, 131399, 131408, 131409],
			motorway: [131083, 131089, 131329, 131338, 131091, 131397, 131407],
			path: [131336, 131483, 131484, 131405, 131453, 131454, 131455, 131456, 131457, 131506],
			pfurniture: [131352, 131353, 131354, 131355, 131511, 131512],
			railway: [131086, 131087, 131489],
			secondaryroad: [131208, 131097, 131098, 131099, 131331, 131340, 131100, 131101, 131102, 131103, 131332, 131341, 131104, 131400, 131401, 131410, 131411, 131507],
			shengjie: [131078, 131079, 131080, 131486],
			street: [131092, 131093, 131094, 131330, 131339, 131095, 131096, 131345, 131412, 131505],
			subwayline: [131117, 131118, 131119, 131120, 131121, 131122, 131123, 131124, 131125, 131126, 131127, 131128, 131129, 131130, 131131, 131132, 131133, 131134, 131135, 131136, 131137, 131138, 131139, 131140, 131141, 131142, 131143, 131144, 131145, 131146, 131147, 131148, 131149, 131150, 131151, 131152, 131153, 131154, 131155, 131156, 131157, 131158, 131159, 131160, 131161, 131162, 131163, 131164, 131165, 131166, 131167, 131168, 131169, 131170, 131171, 131172, 131173, 131174, 131175, 131176, 131177, 131178, 131179, 131180, 131181, 131182, 131183, 131184, 131185, 131186, 131187, 131188, 131189, 131190, 131191, 131192, 131193, 131194, 131195, 131196, 131197, 131198, 131199, 131200, 131201, 131202, 131203, 131204, 131205, 131206, 131207, 131209, 131210, 131211, 131212, 131213, 131214, 131215, 131216, 131217, 131218, 131219, 131220, 131221, 131222, 131223, 131224, 131225, 131226, 131227, 131228, 131229, 131230, 131231, 131232, 131233, 131234, 131235, 131236, 131237, 131238, 131239, 131240, 131241, 131242, 131243, 131244, 131245, 131246, 131247, 131248, 131249, 131250, 131251, 131252, 131253, 131254, 131255, 131256, 131257, 131258, 131259, 131260, 131261, 131262, 131263, 131264, 131265, 131266, 131267, 131268, 131269, 131270, 131271, 131272, 131273, 131274, 131275, 131276, 131277, 131278, 131279, 131280, 131281, 131282, 131283, 131284, 131285, 131286, 131287, 131288, 131289, 131290, 131291, 131292, 131293, 131294, 131295, 131296, 131297, 131298, 131299, 131300, 131301, 131302, 131303, 131304, 131305, 131306, 131307, 131308, 131309, 131310, 131311, 131312, 131313, 131314, 131315, 131316, 131317, 131318, 131319, 131320, 131321, 131322, 131323, 131324, 131325, 131326, 131327, 131346, 131347, 131348, 131349, 131350, 131351, 131356, 131357, 131358, 131359, 131360, 131361, 131362, 131363, 131364, 131365, 131366, 131367, 131368, 131369, 131370, 131371, 131384, 131385, 131386, 131387, 131388, 131389, 131390, 131391, 131392, 131393, 131394, 131395, 131402, 131403, 131404, 131413, 131414, 131415, 131416, 131417, 131437, 131438, 131439, 131440, 131441, 131442, 131443, 131444, 131445, 131446, 131447, 131448, 131449, 131450, 131451, 131452, 131458, 131459, 131460, 131461, 131462, 131463, 131464, 131465, 131466, 131467, 131468, 131469, 131470, 131471, 131472, 131473, 131474, 131475, 131476, 131477, 131478, 131479, 131480, 131481, 131482, 131487, 131488, 131491, 131492, 131493, 131494, 131495, 131496, 131497, 131498, 131499, 131500, 131501, 131502, 131503, 131504, 131508, 131509, 131510, 131513, 131514, 131515, 131516, 131517, 131518, 131519, 131520, 131521, 131522, 131523, 131524, 131525, 131526, 131527, 131528, 131529, 131530, 131531, 131532, 131533, 131534, 131535, 131536, 131537, 131538, 131539, 131540, 131541, 131542, 131543, 131544, 131545, 131546, 131547, 131548, 131549, 131550, 131551, 131552, 131554, 131555, 131556, 131557, 131558, 131560, 131561, 131562, 131563],
			water: [131081]
		},
		pointTag: {
			aoi: [65546, 65550, 65686, 65687, 65688, 65755, 65756, 65757, 65554, 66202, 66618],
			autoservice: [65606, 66173, 66174, 66175, 66176, 66177],
			bridge: [65547, 66612, 66613, 66614, 66615, 66616, 66617],
			building: [65568, 65574, 65577, 65587, 65592, 65594, 65600, 65602, 65603, 65604, 65608, 65619, 65620, 65621, 65622, 65623, 65624, 65625, 65626, 65627, 65628, 65629, 65630, 65632, 65703, 66092, 66098, 66099, 66100, 66101, 66102, 66103, 66096, 66105, 66106, 66107, 66108, 66109, 66110, 66111, 66112, 66113, 66114, 66115, 66116, 66120, 66132, 66133, 66134, 66135, 66136, 66137, 66138, 66139, 66140, 66141, 66142, 66178, 66179, 66180, 66181, 66183, 66184, 66186, 66187, 66189, 66190, 66191, 66192, 66193, 66194, 66224, 66414, 66415, 66416, 66417, 66418, 66419, 66420, 66421, 66422, 66423, 66424, 66425, 66426, 66427, 66428, 66429, 66430, 66431, 66432, 66433, 66434, 66435, 66634, 66684, 66685, 66686, 66850],
			business: [65578, 65618, 66582],
			carpark: [65607, 66526, 66527],
			city: [65543, 65555, 65557, 65558, 65559, 65693],
			commercial: [65758],
			continent: [65537],
			country: [65541, 65556],
			district: [65542],
			education: [65562, 65571, 65583, 65584, 65701, 65702, 65741, 65742, 66227, 66849],
			entertainment: [65569, 65593, 65613, 65743, 66199, 66200, 66226],
			government: [65579],
			hospital: [65581, 65598, 65705, 66852],
			hotel: [65582, 65733, 65734, 65735, 66123, 66124, 66125, 66126, 66127, 66128, 66163, 66164, 66165, 66166, 66167, 66168, 66169, 66170, 66171, 66172, 66188, 66222, 66490, 66541],
			island: [65539],
			lifeservice: [65586, 65596, 65597, 65599, 65617, 65738, 65739, 65740, 66118, 66119, 66129, 66182, 66185, 66221],
			ocean: [65538, 65540, 65549],
			other: [65553, 65616, 65631, 65700, 65706, 65707, 65708, 65709, 66196, 66564, 66565, 66577],
			province: [66572],
			restrant: [65591, 65595, 65601, 65729, 65730, 65731, 65732, 65704, 66223, 66851],
			scenic: [65552, 65563, 65564, 65565, 65566, 65567, 65573, 65585, 65744, 66198, 66201, 66491, 66492, 66493, 66494, 66495, 66496, 66497, 66498, 66499, 66500, 66501, 66502, 66503, 66504, 66505, 66506, 66507, 66508, 66509, 66510, 66511, 66512, 66513, 66514, 66515, 66516, 66517, 66518, 66519, 66520, 66521, 66522, 66523, 66524, 66525, 66528, 66529, 66530, 66531, 66532, 66533, 66534, 66535, 66536, 66537, 66538, 66539, 66540, 66542, 66543, 66544, 66545, 66546, 66547, 66548, 66549, 66550, 66551, 66552, 66553, 66554, 66555, 66556, 66557, 66558, 66559, 66560, 66561, 66562, 66563],
			shopping: [65588, 65589, 65736, 65737, 66619],
			subwaygate: [65836, 65837, 65838, 65839, 65840, 65841, 65842, 65843, 65844, 65845, 65745, 65846, 65847, 65848, 65849, 65850, 65851, 65852, 65853, 65854, 65855, 65856, 65857, 65858, 65859, 65860, 65861, 65862, 65863, 65864, 65894, 66080, 66086, 66160, 66233, 66398, 66402, 66413, 66590, 66594, 66600, 66610, 66679, 66682, 66775, 66844],
			subwayline: [65936, 65937, 65938, 65939, 65940, 65941, 65942, 65943, 65944, 65945, 65946, 65947, 65948, 65949, 65950, 65951, 65952, 65953, 65954, 65955, 65956, 65957, 65958, 65959, 65960, 65961, 65962, 65963, 65964, 65965, 65966, 65967, 65968, 65969, 65970, 65971, 65972, 65973, 65974, 65975, 65976, 65978, 65979, 65980, 65981, 65982, 65983, 65984, 65985, 65986, 65987, 65988, 65989, 65990, 65991, 65992, 65993, 65994, 65995, 65996, 65997, 65998, 65999, 66e3, 66001, 66002, 66003, 66004, 66005, 66006, 66007, 66008, 66009, 66010, 66011, 66012, 66013, 66014, 66015, 66016, 66017, 66018, 66019, 66020, 66021, 66022, 66023, 66024, 66025, 66026, 66027, 66028, 66029, 66030, 66031, 66032, 66033, 66034, 66035, 66036, 66037, 66038, 66039, 66040, 66041, 66042, 66043, 66044, 66045, 66046, 66047, 66048, 66049, 66050, 66051, 66052, 66053, 66054, 66055, 66056, 66057, 66058, 66059, 66060, 66061, 66062, 66063, 66064, 66065, 66066, 66067, 66068, 66069, 66070, 66071, 66072, 66073, 66074, 66075, 66076, 66081, 66082, 66087, 66088, 66089, 66090, 66091, 66097, 66104, 66117, 66130, 66131, 66143, 66144, 66145, 66146, 66147, 66148, 66149, 66150, 66151, 66152, 66153, 66154, 66155, 66156, 66161, 66162, 66195, 66203, 66206, 66207, 66208, 66209, 66210, 66211, 66212, 66213, 66214, 66215, 66216, 66217, 66218, 66219, 66220, 66228, 66229, 66234, 66377, 66378, 66380, 66382, 66385, 66387, 66389, 66390, 66391, 66392, 66403, 66404, 66405, 66406, 66409, 66486, 66487, 66566, 66568, 66569, 66573, 66574, 66579, 66581, 66583, 66584, 66585, 66586, 66595, 66596, 66601, 66602, 66603, 66604, 66605, 66606, 66611, 66638, 66639, 66640, 66641, 66642, 66643, 66644, 66645, 66646, 66647, 66648, 66649, 66650, 66651, 66652, 66653, 66654, 66655, 66656, 66657, 66658, 66659, 66660, 66661, 66662, 66663, 66664, 66665, 66666, 66667, 66668, 66669, 66670, 66671, 66672, 66673, 66674, 66675, 66676, 66683, 66687, 66688, 66834, 66835, 66836, 66837, 66838, 66840, 66841, 66845, 66848],
			subwaystation: [65635, 65637, 65639, 65641, 65643, 65645, 65647, 65649, 65651, 65653, 65654, 65655, 65657, 65659, 65661, 65663, 65665, 65667, 65669, 65673, 65675, 65677, 65681, 65683, 65684, 65689, 65691, 65694, 65696, 65698, 65710, 66077, 66083, 66157, 66204, 66205, 66230, 66375, 66235, 66236, 66237, 66238, 66239, 66240, 66241, 66242, 66243, 66244, 66245, 66246, 66247, 66248, 66249, 66250, 66251, 66252, 66253, 66254, 66255, 66256, 66257, 66258, 66259, 66260, 66261, 66262, 66263, 66264, 66265, 66266, 66267, 66268, 66269, 66270, 66271, 66272, 66273, 66274, 66275, 66276, 66277, 66278, 66279, 66280, 66281, 66282, 66283, 66284, 66285, 66286, 66287, 66288, 66289, 66290, 66291, 66292, 66293, 66294, 66295, 66296, 66297, 66298, 66299, 66300, 66301, 66302, 66303, 66304, 66305, 66306, 66307, 66308, 66309, 66310, 66311, 66312, 66313, 66314, 66315, 66316, 66317, 66318, 66319, 66320, 66321, 66322, 66323, 66324, 66325, 66326, 66327, 66328, 66329, 66330, 66331, 66332, 66333, 66334, 66335, 66336, 66337, 66338, 66339, 66340, 66342, 66343, 66344, 66345, 66346, 66347, 66348, 66349, 66350, 66351, 66352, 66353, 66354, 66355, 66356, 66357, 66358, 66359, 66360, 66361, 66362, 66363, 66364, 66365, 66366, 66367, 66368, 66369, 66370, 66371, 66372, 66373, 66374, 66376, 66379, 66381, 66383, 66384, 66386, 66388, 66393, 66394, 66395, 66399, 66407, 66408, 66410, 66411, 66488, 66489, 66567, 66570, 66571, 66575, 66576, 66580, 66587, 66588, 66591, 66592, 66597, 66598, 66607, 66608, 66677, 66678, 66680, 66681, 66773, 66774, 66842, 66843],
			town: [65544],
			transport: [65560, 65570, 65572, 65576, 65605, 65609, 65610, 65611, 65614, 65615, 66093, 66094, 66095, 66121, 66122, 66225],
			village: [65545, 65551, 65580, 66578]
		}
	}
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = (0, o.
	default)(t.getLat()),
		r = (0, o.
	default)(e.getLat());
		return 2 * Math.asin(Math.sqrt(Math.pow(Math.sin((n - r) / 2), 2) + Math.cos(n) * Math.cos(r) * Math.pow(Math.sin(((0, o.
	default)(t.getLng()) - (0, o.
	default)(e.getLng())) / 2), 2)))
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(124),
	o = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (i);
	e.
default = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e, n) {
		return (0, s.
	default)(t, e) * (n || u.
	default)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(387),
	s = r(o),
	a = n(295),
	u = r(a);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(35),
	p = r(f),
	d = n(4),
	g = r(d),
	y = n(335),
	v = r(y),
	m = n(711),
	_ = r(m),
	w = n(716),
	b = r(w),
	x = n(279),
	E = function(t) {
		function e(t) {
			return (0, a.
		default)(this, e),
			(0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).call(this, t))
		}
		return (0, g.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, p.
			default)(e.prototype.__proto__ || (0, o.
			default)(e.prototype), "onInit", this).call(this, t),
				this.setPath(t.path),
				this.iconInfo = t.iconInfo
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this._shape && this.map) {
					var t = this._updatePoints(),
					e = new _.
				default;
					t.forEach(function(t) {
						e.extend(t)
					});
					var n = e.getSize(),
					r = n.width,
					i = n.height,
					o = e.getMin(),
					s = o.x,
					a = o.y;
					r += 40,
					i += 40,
					s -= 20,
					a -= 20,
					this.dom.setAttribute("viewBox", [s, a, r, i].join(" ")),
					this.dom.setAttribute("width", r),
					this.dom.setAttribute("height", i),
					this.dom.style.transform = "translate3d(" + s + "px, " + a + "px, 0px)"
				}
			}
		},
		{
			key: "setPath",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : [];
				this.path = t,
				this.updateDOM()
			}
		},
		{
			key: "getPath",
			value: function() {
				return this.path
			}
		},
		{
			key: "_updatePoints",
			value: function() {
				return []
			}
		},
		{
			key: "_createShape",
			value: function() {}
		},
		{
			key: "setEditable",
			value: function(t) {
				var e = this;
				if (t !== this.editable) {
					if (t) {
						var n = this.style,
						r = n.borderWidth,
						i = n.borderColor;
						this.closed && r && (n.width = r, n.color = i);
						var o = (0, x.flatPaths)(this.path),
						s = o.map(function(t) {
							var r = t.length;
							r && t[r - 1].equals(t[0]) && t.pop();
							var i = new b.
						default({
								map:
								e.map,
								coords: t,
								closed: e.closed,
								style: n,
								correctHandler: e.correctHandler,
								iconInfo: e.iconInfo
							});
							return i.on("edit_end",
							function() {
								e.setPath(e.getPath()),
								e.emit("edit_end")
							}),
							i.on("editing",
							function(t) {
								e.emit("editing", t)
							}),
							i
						});
						this.editPathList = s
					} else this.editPathList && (this.editPathList.forEach(function(t) {
						t.destroy()
					}), this.editPathList = null);
					this.editable = !!t
				}
			}
		}]),
		e
	} (v.
default);
	e.
default = E
},
, , , , , , , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.HEX_REG = /^#([0-9a-fA-f]{3}|[0-9a-fA-f]{6})$/,
	e.RGB_REG = /^rgb\((\d+,?\s*){3}\)$/,
	e.RGBA_REG = /^rgba\((\d+,?\s*){3},\s*[0-9.]+\)$/
},
, ,
function(t, e, n) {
	t.exports = {
	default:
		n(410),
		__esModule: !0
	}
},
function(t, e, n) {
	var r = function() {
		return this
	} () || Function("return this")(),
	i = r.regeneratorRuntime && Object.getOwnPropertyNames(r).indexOf("regeneratorRuntime") >= 0,
	o = i && r.regeneratorRuntime;
	if (r.regeneratorRuntime = void 0, t.exports = n(403), i) r.regeneratorRuntime = o;
	else try {
		delete r.regeneratorRuntime
	} catch(t) {
		r.regeneratorRuntime = void 0
	}
},
function(t, e) { !
	function(e) {
		"use strict";
		function n(t, e, n, r) {
			var o = e && e.prototype instanceof i ? e: i,
			s = Object.create(o.prototype),
			a = new p(r || []);
			return s._invoke = c(t, n, a),
			s
		}
		function r(t, e, n) {
			try {
				return {
					type: "normal",
					arg: t.call(e, n)
				}
			} catch(t) {
				return {
					type: "throw",
					arg: t
				}
			}
		}
		function i() {}
		function o() {}
		function s() {}
		function a(t) { ["next", "throw", "return"].forEach(function(e) {
				t[e] = function(t) {
					return this._invoke(e, t)
				}
			})
		}
		function u(t) {
			function e(n, i, o, s) {
				var a = r(t[n], t, i);
				if ("throw" !== a.type) {
					var u = a.arg,
					c = u.value;
					return c && "object" == typeof c && m.call(c, "__await") ? Promise.resolve(c.__await).then(function(t) {
						e("next", t, o, s)
					},
					function(t) {
						e("throw", t, o, s)
					}) : Promise.resolve(c).then(function(t) {
						u.value = t,
						o(u)
					},
					s)
				}
				s(a.arg)
			}
			function n(t, n) {
				function r() {
					return new Promise(function(r, i) {
						e(t, n, r, i)
					})
				}
				return i = i ? i.then(r, r) : r()
			}
			var i;
			this._invoke = n
		}
		function c(t, e, n) {
			var i = I;
			return function(o, s) {
				if (i === C) throw new Error("Generator is already running");
				if (i === N) {
					if ("throw" === o) throw s;
					return g()
				}
				for (n.method = o, n.arg = s;;) {
					var a = n.delegate;
					if (a) {
						var u = l(a, n);
						if (u) {
							if (u === P) continue;
							return u
						}
					}
					if ("next" === n.method) n.sent = n._sent = n.arg;
					else if ("throw" === n.method) {
						if (i === I) throw i = N,
						n.arg;
						n.dispatchException(n.arg)
					} else "return" === n.method && n.abrupt("return", n.arg);
					i = C;
					var c = r(t, e, n);
					if ("normal" === c.type) {
						if (i = n.done ? N: S, c.arg === P) continue;
						return {
							value: c.arg,
							done: n.done
						}
					}
					"throw" === c.type && (i = N, n.method = "throw", n.arg = c.arg)
				}
			}
		}
		function l(t, e) {
			var n = t.iterator[e.method];
			if (n === y) {
				if (e.delegate = null, "throw" === e.method) {
					if (t.iterator.
					return && (e.method = "return", e.arg = y, l(t, e), "throw" === e.method)) return P;
					e.method = "throw",
					e.arg = new TypeError("The iterator does not provide a 'throw' method")
				}
				return P
			}
			var i = r(n, t.iterator, e.arg);
			if ("throw" === i.type) return e.method = "throw",
			e.arg = i.arg,
			e.delegate = null,
			P;
			var o = i.arg;
			return o ? o.done ? (e[t.resultName] = o.value, e.next = t.nextLoc, "return" !== e.method && (e.method = "next", e.arg = y), e.delegate = null, P) : o: (e.method = "throw", e.arg = new TypeError("iterator result is not an object"), e.delegate = null, P)
		}
		function h(t) {
			var e = {
				tryLoc: t[0]
			};
			1 in t && (e.catchLoc = t[1]),
			2 in t && (e.finallyLoc = t[2], e.afterLoc = t[3]),
			this.tryEntries.push(e)
		}
		function f(t) {
			var e = t.completion || {};
			e.type = "normal",
			delete e.arg,
			t.completion = e
		}
		function p(t) {
			this.tryEntries = [{
				tryLoc: "root"
			}],
			t.forEach(h, this),
			this.reset(!0)
		}
		function d(t) {
			if (t) {
				var e = t[w];
				if (e) return e.call(t);
				if ("function" == typeof t.next) return t;
				if (!isNaN(t.length)) {
					var n = -1,
					r = function e() {
						for (; ++n < t.length;) if (m.call(t, n)) return e.value = t[n],
						e.done = !1,
						e;
						return e.value = y,
						e.done = !0,
						e
					};
					return r.next = r
				}
			}
			return {
				next: g
			}
		}
		function g() {
			return {
				value: y,
				done: !0
			}
		}
		var y, v = Object.prototype,
		m = v.hasOwnProperty,
		_ = "function" == typeof Symbol ? Symbol: {},
		w = _.iterator || "@@iterator",
		b = _.asyncIterator || "@@asyncIterator",
		x = _.toStringTag || "@@toStringTag",
		E = "object" == typeof t,
		M = e.regeneratorRuntime;
		if (M) return void(E && (t.exports = M));
		M = e.regeneratorRuntime = E ? t.exports: {},
		M.wrap = n;
		var I = "suspendedStart",
		S = "suspendedYield",
		C = "executing",
		N = "completed",
		P = {},
		L = {};
		L[w] = function() {
			return this
		};
		var A = Object.getPrototypeOf,
		O = A && A(A(d([])));
		O && O !== v && m.call(O, w) && (L = O);
		var T = s.prototype = i.prototype = Object.create(L);
		o.prototype = T.constructor = s,
		s.constructor = o,
		s[x] = o.displayName = "GeneratorFunction",
		M.isGeneratorFunction = function(t) {
			var e = "function" == typeof t && t.constructor;
			return !! e && (e === o || "GeneratorFunction" === (e.displayName || e.name))
		},
		M.mark = function(t) {
			return Object.setPrototypeOf ? Object.setPrototypeOf(t, s) : (t.__proto__ = s, x in t || (t[x] = "GeneratorFunction")),
			t.prototype = Object.create(T),
			t
		},
		M.awrap = function(t) {
			return {
				__await: t
			}
		},
		a(u.prototype),
		u.prototype[b] = function() {
			return this
		},
		M.AsyncIterator = u,
		M.async = function(t, e, r, i) {
			var o = new u(n(t, e, r, i));
			return M.isGeneratorFunction(e) ? o: o.next().then(function(t) {
				return t.done ? t.value: o.next()
			})
		},
		a(T),
		T[x] = "Generator",
		T[w] = function() {
			return this
		},
		T.toString = function() {
			return "[object Generator]"
		},
		M.keys = function(t) {
			var e = [];
			for (var n in t) e.push(n);
			return e.reverse(),
			function n() {
				for (; e.length;) {
					var r = e.pop();
					if (r in t) return n.value = r,
					n.done = !1,
					n
				}
				return n.done = !0,
				n
			}
		},
		M.values = d,
		p.prototype = {
			constructor: p,
			reset: function(t) {
				if (this.prev = 0, this.next = 0, this.sent = this._sent = y, this.done = !1, this.delegate = null, this.method = "next", this.arg = y, this.tryEntries.forEach(f), !t) for (var e in this)"t" === e.charAt(0) && m.call(this, e) && !isNaN( + e.slice(1)) && (this[e] = y)
			},
			stop: function() {
				this.done = !0;
				var t = this.tryEntries[0],
				e = t.completion;
				if ("throw" === e.type) throw e.arg;
				return this.rval
			},
			dispatchException: function(t) {
				function e(e, r) {
					return o.type = "throw",
					o.arg = t,
					n.next = e,
					r && (n.method = "next", n.arg = y),
					!!r
				}
				if (this.done) throw t;
				for (var n = this,
				r = this.tryEntries.length - 1; r >= 0; --r) {
					var i = this.tryEntries[r],
					o = i.completion;
					if ("root" === i.tryLoc) return e("end");
					if (i.tryLoc <= this.prev) {
						var s = m.call(i, "catchLoc"),
						a = m.call(i, "finallyLoc");
						if (s && a) {
							if (this.prev < i.catchLoc) return e(i.catchLoc, !0);
							if (this.prev < i.finallyLoc) return e(i.finallyLoc)
						} else if (s) {
							if (this.prev < i.catchLoc) return e(i.catchLoc, !0)
						} else {
							if (!a) throw new Error("try statement without catch or finally");
							if (this.prev < i.finallyLoc) return e(i.finallyLoc)
						}
					}
				}
			},
			abrupt: function(t, e) {
				for (var n = this.tryEntries.length - 1; n >= 0; --n) {
					var r = this.tryEntries[n];
					if (r.tryLoc <= this.prev && m.call(r, "finallyLoc") && this.prev < r.finallyLoc) {
						var i = r;
						break
					}
				}
				i && ("break" === t || "continue" === t) && i.tryLoc <= e && e <= i.finallyLoc && (i = null);
				var o = i ? i.completion: {};
				return o.type = t,
				o.arg = e,
				i ? (this.method = "next", this.next = i.finallyLoc, P) : this.complete(o)
			},
			complete: function(t, e) {
				if ("throw" === t.type) throw t.arg;
				return "break" === t.type || "continue" === t.type ? this.next = t.arg: "return" === t.type ? (this.rval = this.arg = t.arg, this.method = "return", this.next = "end") : "normal" === t.type && e && (this.next = e),
				P
			},
			finish: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.finallyLoc === t) return this.complete(n.completion, n.afterLoc),
					f(n),
					P
				}
			},
			catch: function(t) {
				for (var e = this.tryEntries.length - 1; e >= 0; --e) {
					var n = this.tryEntries[e];
					if (n.tryLoc === t) {
						var r = n.completion;
						if ("throw" === r.type) {
							var i = r.arg;
							f(n)
						}
						return i
					}
				}
				throw new Error("illegal catch attempt")
			},
			delegateYield: function(t, e, n) {
				return this.delegate = {
					iterator: d(t),
					resultName: e,
					nextLoc: n
				},
				"next" === this.method && (this.arg = y),
				P
			}
		}
	} (function() {
		return this
	} () || Function("return this")())
},
function(t, e, n) {
	"use strict";
	"use restrict";
	function r(t) {
		var e = 32;
		return t &= -t,
		t && e--,
		65535 & t && (e -= 16),
		16711935 & t && (e -= 8),
		252645135 & t && (e -= 4),
		858993459 & t && (e -= 2),
		1431655765 & t && (e -= 1),
		e
	}
	e.INT_BITS = 32,
	e.INT_MAX = 2147483647,
	e.INT_MIN = -1 << 31,
	e.sign = function(t) {
		return (t > 0) - (t < 0)
	},
	e.abs = function(t) {
		var e = t >> 31;
		return (t ^ e) - e
	},
	e.min = function(t, e) {
		return e ^ (t ^ e) & -(t < e)
	},
	e.max = function(t, e) {
		return t ^ (t ^ e) & -(t < e)
	},
	e.isPow2 = function(t) {
		return ! (t & t - 1 || !t)
	},
	e.log2 = function(t) {
		var e, n;
		return e = (t > 65535) << 4,
		t >>>= e,
		n = (t > 255) << 3,
		t >>>= n,
		e |= n,
		n = (t > 15) << 2,
		t >>>= n,
		e |= n,
		n = (t > 3) << 1,
		t >>>= n,
		(e |= n) | t >> 1
	},
	e.log10 = function(t) {
		return t >= 1e9 ? 9 : t >= 1e8 ? 8 : t >= 1e7 ? 7 : t >= 1e6 ? 6 : t >= 1e5 ? 5 : t >= 1e4 ? 4 : t >= 1e3 ? 3 : t >= 100 ? 2 : t >= 10 ? 1 : 0
	},
	e.popCount = function(t) {
		return t -= t >>> 1 & 1431655765,
		16843009 * ((t = (858993459 & t) + (t >>> 2 & 858993459)) + (t >>> 4) & 252645135) >>> 24
	},
	e.countTrailingZeros = r,
	e.nextPow2 = function(t) {
		return t += 0 === t,
		--t,
		t |= t >>> 1,
		t |= t >>> 2,
		t |= t >>> 4,
		t |= t >>> 8,
		(t |= t >>> 16) + 1
	},
	e.prevPow2 = function(t) {
		return t |= t >>> 1,
		t |= t >>> 2,
		t |= t >>> 4,
		t |= t >>> 8,
		(t |= t >>> 16) - (t >>> 1)
	},
	e.parity = function(t) {
		return t ^= t >>> 16,
		t ^= t >>> 8,
		t ^= t >>> 4,
		27030 >>> (t &= 15) & 1
	};
	var i = new Array(256); !
	function(t) {
		for (var e = 0; e < 256; ++e) {
			var n = e,
			r = e,
			i = 7;
			for (n >>>= 1; n; n >>>= 1) r <<= 1,
			r |= 1 & n,
			--i;
			t[e] = r << i & 255
		}
	} (i),
	e.reverse = function(t) {
		return i[255 & t] << 24 | i[t >>> 8 & 255] << 16 | i[t >>> 16 & 255] << 8 | i[t >>> 24 & 255]
	},
	e.interleave2 = function(t, e) {
		return t &= 65535,
		t = 16711935 & (t | t << 8),
		t = 252645135 & (t | t << 4),
		t = 858993459 & (t | t << 2),
		t = 1431655765 & (t | t << 1),
		e &= 65535,
		e = 16711935 & (e | e << 8),
		e = 252645135 & (e | e << 4),
		e = 858993459 & (e | e << 2),
		e = 1431655765 & (e | e << 1),
		t | e << 1
	},
	e.deinterleave2 = function(t, e) {
		return t = t >>> e & 1431655765,
		t = 858993459 & (t | t >>> 1),
		t = 252645135 & (t | t >>> 2),
		t = 16711935 & (t | t >>> 4),
		(t = 65535 & (t | t >>> 16)) << 16 >> 16
	},
	e.interleave3 = function(t, e, n) {
		return t &= 1023,
		t = 4278190335 & (t | t << 16),
		t = 251719695 & (t | t << 8),
		t = 3272356035 & (t | t << 4),
		t = 1227133513 & (t | t << 2),
		e &= 1023,
		e = 4278190335 & (e | e << 16),
		e = 251719695 & (e | e << 8),
		e = 3272356035 & (e | e << 4),
		e = 1227133513 & (e | e << 2),
		t |= e << 1,
		n &= 1023,
		n = 4278190335 & (n | n << 16),
		n = 251719695 & (n | n << 8),
		n = 3272356035 & (n | n << 4),
		n = 1227133513 & (n | n << 2),
		t | n << 2
	},
	e.deinterleave3 = function(t, e) {
		return t = t >>> e & 1227133513,
		t = 3272356035 & (t | t >>> 2),
		t = 251719695 & (t | t >>> 4),
		t = 4278190335 & (t | t >>> 8),
		(t = 1023 & (t | t >>> 16)) << 22 >> 22
	},
	e.nextCombination = function(t) {
		var e = t | t - 1;
		return e + 1 | (~e & -~e) - 1 >>> r(t) + 1
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = t.length;
		if (0 === e) return [];
		if (1 === e) return [[0]];
		var n = t[0].length;
		return 0 === n ? [] : 1 === n ? i(t) : 2 === n ? o(t) : s(t, n)
	}
	var i = n(406),
	o = n(407),
	s = n(408);
	t.exports = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		for (var e = 0,
		n = 0,
		r = 1; r < t.length; ++r) t[r][0] < t[e][0] && (e = r),
		t[r][0] > t[n][0] && (n = r);
		return e < n ? [[e], [n]] : e > n ? [[n], [e]] : [[e]]
	}
	t.exports = r
},
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = i(t),
		n = e.length;
		if (n <= 2) return [];
		for (var r = new Array(n), o = e[n - 1], s = 0; s < n; ++s) {
			var a = e[s];
			r[s] = [o, a],
			o = a
		}
		return r
	}
	t.exports = r;
	var i = n(450)
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		for (var n = t.length,
		r = new Array(n), i = 0; i < e.length; ++i) r[i] = t[e[i]];
		for (var o = e.length,
		i = 0; i < n; ++i) e.indexOf(i) < 0 && (r[o++] = t[i]);
		return r
	}
	function i(t, e) {
		for (var n = t.length,
		r = e.length,
		i = 0; i < n; ++i) for (var o = t[i], s = 0; s < o.length; ++s) {
			var a = o[s];
			if (a < r) o[s] = e[a];
			else {
				a -= r;
				for (var u = 0; u < r; ++u) a >= e[u] && (a += 1);
				o[s] = a
			}
		}
		return t
	}
	function o(t, e) {
		try {
			return s(t, !0)
		} catch(c) {
			var n = a(t);
			if (n.length <= e) return [];
			var o = r(t, n),
			u = s(o, !0);
			return i(u, n)
		}
	}
	t.exports = o;
	var s = n(449),
	a = n(375)
},
,
function(t, e, n) {
	n(414),
	t.exports = n(2).Math.fround
},
function(t, e, n) {
	n(415),
	t.exports = n(2).Number.isFinite
},
function(t, e, n) {
	n(73),
	n(33),
	n(39),
	n(416),
	n(419),
	n(418),
	n(417),
	t.exports = n(2).Set
},
function(t, e, n) {
	var r = n(313),
	i = Math.pow,
	o = i(2, -52),
	s = i(2, -23),
	a = i(2, 127) * (2 - s),
	u = i(2, -126),
	c = function(t) {
		return t + 1 / o - 1 / o
	};
	t.exports = Math.fround ||
	function(t) {
		var e, n, i = Math.abs(t),
		l = r(t);
		return i < u ? l * c(i / u / s) * u * s: (e = (1 + s / o) * i, n = e - (e - i), n > a || n != n ? l * (1 / 0) : l * n)
	}
},
function(t, e, n) {
	var r = n(6);
	r(r.S, "Math", {
		fround: n(413)
	})
},
function(t, e, n) {
	var r = n(6),
	i = n(8).isFinite;
	r(r.S, "Number", {
		isFinite: function(t) {
			return "number" == typeof t && i(t)
		}
	})
},
function(t, e, n) {
	"use strict";
	var r = n(260),
	i = n(183);
	t.exports = n(250)("Set",
	function(t) {
		return function() {
			return t(this, arguments.length > 0 ? arguments[0] : void 0)
		}
	},
	{
		add: function(t) {
			return r.def(i(this, "Set"), t = 0 === t ? 0 : t, t)
		}
	},
	r)
},
function(t, e, n) {
	n(251)("Set")
},
function(t, e, n) {
	n(252)("Set")
},
function(t, e, n) {
	var r = n(6);
	r(r.P + r.R, "Set", {
		toJSON: n(261)("Set")
	})
},
, , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t, e, n, r, o) {
		i(t, e, n || 0, r || t.length - 1, o || s)
	}
	function i(t, e, n, r, s) {
		for (; r > n;) {
			if (r - n > 600) {
				var a = r - n + 1,
				u = e - n + 1,
				c = Math.log(a),
				l = .5 * Math.exp(2 * c / 3),
				h = .5 * Math.sqrt(c * l * (a - l) / a) * (u - a / 2 < 0 ? -1 : 1);
				i(t, e, Math.max(n, Math.floor(e - u * l / a + h)), Math.min(r, Math.floor(e + (a - u) * l / a + h)), s)
			}
			var f = t[e],
			p = n,
			d = r;
			for (o(t, n, e), s(t[r], f) > 0 && o(t, n, r); p < d;) {
				for (o(t, p, d), p++, d--; s(t[p], f) < 0;) p++;
				for (; s(t[d], f) > 0;) d--
			}
			0 === s(t[n], f) ? o(t, n, d) : (d++, o(t, d, r)),
			d <= e && (n = d + 1),
			e <= d && (r = d - 1)
		}
	}
	function o(t, e, n) {
		var r = t[e];
		t[e] = t[n],
		t[n] = r
	}
	function s(t, e) {
		return t < e ? -1 : t > e ? 1 : 0
	}
	e.a = r
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		if (! (this instanceof r)) return new r(t, e);
		this._maxEntries = Math.max(4, t || 9),
		this._minEntries = Math.max(2, Math.ceil(.4 * this._maxEntries)),
		e && this._initFormat(e),
		this.clear()
	}
	function i(t, e, n) {
		if (!n) return e.indexOf(t);
		for (var r = 0; r < e.length; r++) if (n(t, e[r])) return r;
		return - 1
	}
	function o(t, e) {
		s(t, 0, t.children.length, e, t)
	}
	function s(t, e, n, r, i) {
		i || (i = y(null)),
		i.minX = 1 / 0,
		i.minY = 1 / 0,
		i.maxX = -1 / 0,
		i.maxY = -1 / 0;
		for (var o, s = e; s < n; s++) o = t.children[s],
		a(i, t.leaf ? r(o) : o);
		return i
	}
	function a(t, e) {
		return t.minX = Math.min(t.minX, e.minX),
		t.minY = Math.min(t.minY, e.minY),
		t.maxX = Math.max(t.maxX, e.maxX),
		t.maxY = Math.max(t.maxY, e.maxY),
		t
	}
	function u(t, e) {
		return t.minX - e.minX
	}
	function c(t, e) {
		return t.minY - e.minY
	}
	function l(t) {
		return (t.maxX - t.minX) * (t.maxY - t.minY)
	}
	function h(t) {
		return t.maxX - t.minX + (t.maxY - t.minY)
	}
	function f(t, e) {
		return (Math.max(e.maxX, t.maxX) - Math.min(e.minX, t.minX)) * (Math.max(e.maxY, t.maxY) - Math.min(e.minY, t.minY))
	}
	function p(t, e) {
		var n = Math.max(t.minX, e.minX),
		r = Math.max(t.minY, e.minY),
		i = Math.min(t.maxX, e.maxX),
		o = Math.min(t.maxY, e.maxY);
		return Math.max(0, i - n) * Math.max(0, o - r)
	}
	function d(t, e) {
		return t.minX <= e.minX && t.minY <= e.minY && e.maxX <= t.maxX && e.maxY <= t.maxY
	}
	function g(t, e) {
		return e.minX <= t.maxX && e.minY <= t.maxY && e.maxX >= t.minX && e.maxY >= t.minY
	}
	function y(t) {
		return {
			children: t,
			height: 1,
			leaf: !0,
			minX: 1 / 0,
			minY: 1 / 0,
			maxX: -1 / 0,
			maxY: -1 / 0
		}
	}
	function v(t, e, r, i, o) {
		for (var s, a = [e, r]; a.length;) r = a.pop(),
		e = a.pop(),
		r - e <= i || (s = e + Math.ceil((r - e) / i / 2) * i, n.i(m.a)(t, s, e, r, o), a.push(e, s, s, r))
	}
	var m = n(447);
	r.prototype = {
		all: function() {
			return this._all(this.data, [])
		},
		search: function(t) {
			var e = this.data,
			n = [],
			r = this.toBBox;
			if (!g(t, e)) return n;
			for (var i, o, s, a, u = []; e;) {
				for (i = 0, o = e.children.length; i < o; i++) s = e.children[i],
				a = e.leaf ? r(s) : s,
				g(t, a) && (e.leaf ? n.push(s) : d(t, a) ? this._all(s, n) : u.push(s));
				e = u.pop()
			}
			return n
		},
		collides: function(t) {
			var e = this.data,
			n = this.toBBox;
			if (!g(t, e)) return ! 1;
			for (var r, i, o, s, a = []; e;) {
				for (r = 0, i = e.children.length; r < i; r++) if (o = e.children[r], s = e.leaf ? n(o) : o, g(t, s)) {
					if (e.leaf || d(t, s)) return ! 0;
					a.push(o)
				}
				e = a.pop()
			}
			return ! 1
		},
		load: function(t) {
			if (!t || !t.length) return this;
			if (t.length < this._minEntries) {
				for (var e = 0,
				n = t.length; e < n; e++) this.insert(t[e]);
				return this
			}
			var r = this._build(t.slice(), 0, t.length - 1, 0);
			if (this.data.children.length) if (this.data.height === r.height) this._splitRoot(this.data, r);
			else {
				if (this.data.height < r.height) {
					var i = this.data;
					this.data = r,
					r = i
				}
				this._insert(r, this.data.height - r.height - 1, !0)
			} else this.data = r;
			return this
		},
		insert: function(t) {
			return t && this._insert(t, this.data.height - 1),
			this
		},
		clear: function() {
			return this.data = y([]),
			this
		},
		remove: function(t, e) {
			if (!t) return this;
			for (var n, r, o, s, a = this.data,
			u = this.toBBox(t), c = [], l = []; a || c.length;) {
				if (a || (a = c.pop(), r = c[c.length - 1], n = l.pop(), s = !0), a.leaf && -1 !== (o = i(t, a.children, e))) return a.children.splice(o, 1),
				c.push(a),
				this._condense(c),
				this;
				s || a.leaf || !d(a, u) ? r ? (n++, a = r.children[n], s = !1) : a = null: (c.push(a), l.push(n), n = 0, r = a, a = a.children[0])
			}
			return this
		},
		toBBox: function(t) {
			return t
		},
		compareMinX: u,
		compareMinY: c,
		toJSON: function() {
			return this.data
		},
		fromJSON: function(t) {
			return this.data = t,
			this
		},
		_all: function(t, e) {
			for (var n = []; t;) t.leaf ? e.push.apply(e, t.children) : n.push.apply(n, t.children),
			t = n.pop();
			return e
		},
		_build: function(t, e, n, r) {
			var i, s = n - e + 1,
			a = this._maxEntries;
			if (s <= a) return i = y(t.slice(e, n + 1)),
			o(i, this.toBBox),
			i;
			r || (r = Math.ceil(Math.log(s) / Math.log(a)), a = Math.ceil(s / Math.pow(a, r - 1))),
			i = y([]),
			i.leaf = !1,
			i.height = r;
			var u, c, l, h, f = Math.ceil(s / a),
			p = f * Math.ceil(Math.sqrt(a));
			for (v(t, e, n, p, this.compareMinX), u = e; u <= n; u += p) for (l = Math.min(u + p - 1, n), v(t, u, l, f, this.compareMinY), c = u; c <= l; c += f) h = Math.min(c + f - 1, l),
			i.children.push(this._build(t, c, h, r - 1));
			return o(i, this.toBBox),
			i
		},
		_chooseSubtree: function(t, e, n, r) {
			for (var i, o, s, a, u, c, h, p;;) {
				if (r.push(e), e.leaf || r.length - 1 === n) break;
				for (h = p = 1 / 0, i = 0, o = e.children.length; i < o; i++) s = e.children[i],
				u = l(s),
				c = f(t, s) - u,
				c < p ? (p = c, h = u < h ? u: h, a = s) : c === p && u < h && (h = u, a = s);
				e = a || e.children[0]
			}
			return e
		},
		_insert: function(t, e, n) {
			var r = this.toBBox,
			i = n ? t: r(t),
			o = [],
			s = this._chooseSubtree(i, this.data, e, o);
			for (s.children.push(t), a(s, i); e >= 0 && o[e].children.length > this._maxEntries;) this._split(o, e),
			e--;
			this._adjustParentBBoxes(i, o, e)
		},
		_split: function(t, e) {
			var n = t[e],
			r = n.children.length,
			i = this._minEntries;
			this._chooseSplitAxis(n, i, r);
			var s = this._chooseSplitIndex(n, i, r),
			a = y(n.children.splice(s, n.children.length - s));
			a.height = n.height,
			a.leaf = n.leaf,
			o(n, this.toBBox),
			o(a, this.toBBox),
			e ? t[e - 1].children.push(a) : this._splitRoot(n, a)
		},
		_splitRoot: function(t, e) {
			this.data = y([t, e]),
			this.data.height = t.height + 1,
			this.data.leaf = !1,
			o(this.data, this.toBBox)
		},
		_chooseSplitIndex: function(t, e, n) {
			var r, i, o, a, u, c, h, f;
			for (c = h = 1 / 0, r = e; r <= n - e; r++) i = s(t, 0, r, this.toBBox),
			o = s(t, r, n, this.toBBox),
			a = p(i, o),
			u = l(i) + l(o),
			a < c ? (c = a, f = r, h = u < h ? u: h) : a === c && u < h && (h = u, f = r);
			return f
		},
		_chooseSplitAxis: function(t, e, n) {
			var r = t.leaf ? this.compareMinX: u,
			i = t.leaf ? this.compareMinY: c;
			this._allDistMargin(t, e, n, r) < this._allDistMargin(t, e, n, i) && t.children.sort(r)
		},
		_allDistMargin: function(t, e, n, r) {
			t.children.sort(r);
			var i, o, u = this.toBBox,
			c = s(t, 0, e, u),
			l = s(t, n - e, n, u),
			f = h(c) + h(l);
			for (i = e; i < n - e; i++) o = t.children[i],
			a(c, t.leaf ? u(o) : o),
			f += h(c);
			for (i = n - e - 1; i >= e; i--) o = t.children[i],
			a(l, t.leaf ? u(o) : o),
			f += h(l);
			return f
		},
		_adjustParentBBoxes: function(t, e, n) {
			for (var r = n; r >= 0; r--) a(e[r], t)
		},
		_condense: function(t) {
			for (var e, n = t.length - 1; n >= 0; n--) 0 === t[n].children.length ? n > 0 ? (e = t[n - 1].children, e.splice(e.indexOf(t[n]), 1)) : this.clear() : o(t[n], this.toBBox)
		},
		_initFormat: function(t) {
			var e = ["return a", " - b", ";"];
			this.compareMinX = new Function("a", "b", e.join(t[0])),
			this.compareMinY = new Function("a", "b", e.join(t[1])),
			this.toBBox = new Function("a", "return {minX: a" + t[0] + ", minY: a" + t[1] + ", maxX: a" + t[2] + ", maxY: a" + t[3] + "};")
		}
	},
	e.a = r
},
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		this.vertices = t,
		this.adjacent = e,
		this.boundary = n,
		this.lastVisited = -1
	}
	function i(t, e, n) {
		this.vertices = t,
		this.cell = e,
		this.index = n
	}
	function o(t, e) {
		return l(t.vertices, e.vertices)
	}
	function s(t) {
		for (var e = ["function orient(){var tuple=this.tuple;return test("], n = 0; n <= t; ++n) n > 0 && e.push(","),
		e.push("tuple[", n, "]");
		e.push(")}return orient");
		var r = new Function("test", e.join("")),
		i = c[t + 1];
		return i || (i = c),
		r(i)
	}
	function a(t, e, n) {
		this.dimension = t,
		this.vertices = e,
		this.simplices = n,
		this.interior = n.filter(function(t) {
			return ! t.boundary
		}),
		this.tuple = new Array(t + 1);
		for (var r = 0; r <= t; ++r) this.tuple[r] = this.vertices[r];
		var i = h[t];
		i || (i = h[t] = s(t)),
		this.orient = i
	}
	function u(t, e) {
		var n = t.length;
		if (0 === n) throw new Error("Must have at least d+1 points");
		var i = t[0].length;
		if (n <= i) throw new Error("Must input at least d+1 points");
		var o = t.slice(0, i + 1),
		s = c.apply(void 0, o);
		if (0 === s) throw new Error("Input not in general position");
		for (var u = new Array(i + 1), l = 0; l <= i; ++l) u[l] = l;
		s < 0 && (u[0] = 1, u[1] = 0);
		for (var h = new r(u, new Array(i + 1), !1), f = h.adjacent, p = new Array(i + 2), l = 0; l <= i; ++l) {
			for (var d = u.slice(), g = 0; g <= i; ++g) g === l && (d[g] = -1);
			var y = d[0];
			d[0] = d[1],
			d[1] = y;
			var v = new r(d, new Array(i + 1), !0);
			f[l] = v,
			p[l] = v
		}
		p[i + 1] = h;
		for (var l = 0; l <= i; ++l) for (var d = f[l].vertices, m = f[l].adjacent, g = 0; g <= i; ++g) {
			var _ = d[g];
			if (_ < 0) m[g] = h;
			else for (var w = 0; w <= i; ++w) f[w].vertices.indexOf(_) < 0 && (m[g] = f[w])
		}
		for (var b = new a(i, o, p), x = !!e, l = i + 1; l < n; ++l) b.insert(t[l], x);
		return b.boundary()
	}
	t.exports = u;
	var c = n(274),
	l = n(455).compareCells;
	r.prototype.flip = function() {
		var t = this.vertices[0];
		this.vertices[0] = this.vertices[1],
		this.vertices[1] = t;
		var e = this.adjacent[0];
		this.adjacent[0] = this.adjacent[1],
		this.adjacent[1] = e
	};
	var h = [],
	f = a.prototype;
	f.handleBoundaryDegeneracy = function(t, e) {
		var n = this.dimension,
		r = this.vertices.length - 1,
		i = this.tuple,
		o = this.vertices,
		s = [t];
		for (t.lastVisited = -r; s.length > 0;) {
			t = s.pop();
			for (var a = (t.vertices, t.adjacent), u = 0; u <= n; ++u) {
				var c = a[u];
				if (c.boundary && !(c.lastVisited <= -r)) {
					for (var l = c.vertices,
					h = 0; h <= n; ++h) {
						var f = l[h];
						i[h] = f < 0 ? e: o[f]
					}
					var p = this.orient();
					if (p > 0) return c;
					c.lastVisited = -r,
					0 === p && s.push(c)
				}
			}
		}
		return null
	},
	f.walk = function(t, e) {
		var n = this.vertices.length - 1,
		r = this.dimension,
		i = this.vertices,
		o = this.tuple,
		s = e ? this.interior.length * Math.random() | 0 : this.interior.length - 1,
		a = this.interior[s];
		t: for (; ! a.boundary;) {
			for (var u = a.vertices,
			c = a.adjacent,
			l = 0; l <= r; ++l) o[l] = i[u[l]];
			a.lastVisited = n;
			for (var l = 0; l <= r; ++l) {
				var h = c[l];
				if (! (h.lastVisited >= n)) {
					var f = o[l];
					o[l] = t;
					var p = this.orient();
					if (o[l] = f, p < 0) {
						a = h;
						continue t
					}
					h.boundary ? h.lastVisited = -n: h.lastVisited = n
				}
			}
			return
		}
		return a
	},
	f.addPeaks = function(t, e) {
		var n = this.vertices.length - 1,
		s = this.dimension,
		a = this.vertices,
		u = this.tuple,
		c = this.interior,
		l = this.simplices,
		h = [e];
		e.lastVisited = n,
		e.vertices[e.vertices.indexOf( - 1)] = n,
		e.boundary = !1,
		c.push(e);
		for (var f = []; h.length > 0;) {
			var e = h.pop(),
			p = e.vertices,
			d = e.adjacent,
			g = p.indexOf(n);
			if (! (g < 0)) for (var y = 0; y <= s; ++y) if (y !== g) {
				var v = d[y];
				if (v.boundary && !(v.lastVisited >= n)) {
					var m = v.vertices;
					if (v.lastVisited !== -n) {
						for (var _ = 0,
						w = 0; w <= s; ++w) m[w] < 0 ? (_ = w, u[w] = t) : u[w] = a[m[w]];
						var b = this.orient();
						if (b > 0) {
							m[_] = n,
							v.boundary = !1,
							c.push(v),
							h.push(v),
							v.lastVisited = n;
							continue
						}
						v.lastVisited = -n
					}
					var x = v.adjacent,
					E = p.slice(),
					M = d.slice(),
					I = new r(E, M, !0);
					l.push(I);
					var S = x.indexOf(e);
					if (! (S < 0)) {
						x[S] = I,
						M[g] = v,
						E[y] = -1,
						M[y] = e,
						d[y] = I,
						I.flip();
						for (var w = 0; w <= s; ++w) {
							var C = E[w];
							if (! (C < 0 || C === n)) {
								for (var N = new Array(s - 1), P = 0, L = 0; L <= s; ++L) {
									var A = E[L];
									A < 0 || L === w || (N[P++] = A)
								}
								f.push(new i(N, I, w))
							}
						}
					}
				}
			}
		}
		f.sort(o);
		for (var y = 0; y + 1 < f.length; y += 2) {
			var O = f[y],
			T = f[y + 1],
			R = O.index,
			D = T.index;
			R < 0 || D < 0 || (O.cell.adjacent[O.index] = T.cell, T.cell.adjacent[T.index] = O.cell)
		}
	},
	f.insert = function(t, e) {
		var n = this.vertices;
		n.push(t);
		var r = this.walk(t, e);
		if (r) {
			for (var i = this.dimension,
			o = this.tuple,
			s = 0; s <= i; ++s) {
				var a = r.vertices[s];
				o[s] = a < 0 ? t: n[a]
			}
			var u = this.orient(o);
			u < 0 || (0 !== u || (r = this.handleBoundaryDegeneracy(r, t))) && this.addPeaks(t, r)
		}
	},
	f.boundary = function() {
		for (var t = this.dimension,
		e = [], n = this.simplices, r = n.length, i = 0; i < r; ++i) {
			var o = n[i];
			if (o.boundary) {
				for (var s = new Array(t), a = o.vertices, u = 0, c = 0, l = 0; l <= t; ++l) a[l] >= 0 ? s[u++] = a[l] : c = 1 & l;
				if (c === (1 & t)) {
					var h = s[0];
					s[0] = s[1],
					s[1] = h
				}
				e.push(s)
			}
		}
		return e
	}
},
function(t, e, n) {
	"use strict";
	function r(t) {
		var e = t.length;
		if (e < 3) {
			for (var n = new Array(e), r = 0; r < e; ++r) n[r] = r;
			return 2 === e && t[0][0] === t[1][0] && t[0][1] === t[1][1] ? [0] : n
		}
		for (var o = new Array(e), r = 0; r < e; ++r) o[r] = r;
		o.sort(function(e, n) {
			var r = t[e][0] - t[n][0];
			return r || t[e][1] - t[n][1]
		});
		for (var s = [o[0], o[1]], a = [o[0], o[1]], r = 2; r < e; ++r) {
			for (var u = o[r], c = t[u], l = s.length; l > 1 && i(t[s[l - 2]], t[s[l - 1]], c) <= 0;) l -= 1,
			s.pop();
			for (s.push(u), l = a.length; l > 1 && i(t[a[l - 2]], t[a[l - 1]], c) >= 0;) l -= 1,
			a.pop();
			a.push(u)
		}
		for (var n = new Array(a.length + s.length - 2), h = 0, r = 0, f = s.length; r < f; ++r) n[h++] = s[r];
		for (var p = a.length - 2; p > 0; --p) n[h++] = a[p];
		return n
	}
	t.exports = r;
	var i = n(274)[3]
},
,
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = t.length;
		if (1 === n) {
			var r = i(t[0], e);
			return r[0] ? r: [r[1]]
		}
		var s = new Array(2 * n),
		a = [.1, .1],
		u = [.1, .1],
		c = 0;
		i(t[0], e, a),
		a[0] && (s[c++] = a[0]);
		for (var l = 1; l < n; ++l) {
			i(t[l], e, u);
			var h = a[1];
			o(h, u[0], a),
			a[0] && (s[c++] = a[0]);
			var f = u[1],
			p = a[1],
			d = f + p,
			g = d - f,
			y = p - g;
			a[1] = d,
			y && (s[c++] = y)
		}
		return a[1] && (s[c++] = a[1]),
		0 === c && (s[c++] = 0),
		s.length = c,
		s
	}
	var i = n(324),
	o = n(456);
	t.exports = r
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = t + e,
		r = n - t,
		i = n - r,
		o = e - r,
		s = t - i,
		a = s + o;
		return a ? [a, n] : [n]
	}
	function i(t, e) {
		var n = 0 | t.length,
		i = 0 | e.length;
		if (1 === n && 1 === i) return r(t[0], -e[0]);
		var o, s, a = n + i,
		u = new Array(a),
		c = 0,
		l = 0,
		h = 0,
		f = Math.abs,
		p = t[l],
		d = f(p),
		g = -e[h],
		y = f(g);
		d < y ? (s = p, (l += 1) < n && (p = t[l], d = f(p))) : (s = g, (h += 1) < i && (g = -e[h], y = f(g))),
		l < n && d < y || h >= i ? (o = p, (l += 1) < n && (p = t[l], d = f(p))) : (o = g, (h += 1) < i && (g = -e[h], y = f(g)));
		for (var v, m, _, w, b, x = o + s,
		E = x - o,
		M = s - E,
		I = M,
		S = x; l < n && h < i;) d < y ? (o = p, (l += 1) < n && (p = t[l], d = f(p))) : (o = g, (h += 1) < i && (g = -e[h], y = f(g))),
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v;
		for (; l < n;) o = p,
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v,
		(l += 1) < n && (p = t[l]);
		for (; h < i;) o = g,
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v,
		(h += 1) < i && (g = -e[h]);
		return I && (u[c++] = I),
		S && (u[c++] = S),
		c || (u[c++] = 0),
		u.length = c,
		u
	}
	t.exports = i
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = t + e,
		r = n - t,
		i = n - r,
		o = e - r,
		s = t - i,
		a = s + o;
		return a ? [a, n] : [n]
	}
	function i(t, e) {
		var n = 0 | t.length,
		i = 0 | e.length;
		if (1 === n && 1 === i) return r(t[0], e[0]);
		var o, s, a = n + i,
		u = new Array(a),
		c = 0,
		l = 0,
		h = 0,
		f = Math.abs,
		p = t[l],
		d = f(p),
		g = e[h],
		y = f(g);
		d < y ? (s = p, (l += 1) < n && (p = t[l], d = f(p))) : (s = g, (h += 1) < i && (g = e[h], y = f(g))),
		l < n && d < y || h >= i ? (o = p, (l += 1) < n && (p = t[l], d = f(p))) : (o = g, (h += 1) < i && (g = e[h], y = f(g)));
		for (var v, m, _, w, b, x = o + s,
		E = x - o,
		M = s - E,
		I = M,
		S = x; l < n && h < i;) d < y ? (o = p, (l += 1) < n && (p = t[l], d = f(p))) : (o = g, (h += 1) < i && (g = e[h], y = f(g))),
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v;
		for (; l < n;) o = p,
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v,
		(l += 1) < n && (p = t[l]);
		for (; h < i;) o = g,
		s = I,
		x = o + s,
		E = x - o,
		M = s - E,
		M && (u[c++] = M),
		v = S + x,
		m = v - S,
		_ = v - m,
		w = x - m,
		b = S - _,
		I = b + w,
		S = v,
		(h += 1) < i && (g = e[h]);
		return I && (u[c++] = I),
		S && (u[c++] = S),
		c || (u[c++] = 0),
		u.length = c,
		u
	}
	t.exports = i
},
function(t, e, n) {
	"use strict";
	"use restrict";
	function r(t) {
		for (var e = 0,
		n = Math.max,
		r = 0,
		i = t.length; r < i; ++r) e = n(e, t[r].length);
		return e - 1
	}
	function i(t) {
		for (var e = -1,
		n = Math.max,
		r = 0,
		i = t.length; r < i; ++r) for (var o = t[r], s = 0, a = o.length; s < a; ++s) e = n(e, o[s]);
		return e + 1
	}
	function o(t) {
		for (var e = new Array(t.length), n = 0, r = t.length; n < r; ++n) e[n] = t[n].slice(0);
		return e
	}
	function s(t, e) {
		var n = t.length,
		r = t.length - e.length,
		i = Math.min;
		if (r) return r;
		switch (n) {
		case 0:
			return 0;
		case 1:
			return t[0] - e[0];
		case 2:
			var o = t[0] + t[1] - e[0] - e[1];
			return o || i(t[0], t[1]) - i(e[0], e[1]);
		case 3:
			var s = t[0] + t[1],
			a = e[0] + e[1];
			if (o = s + t[2] - (a + e[2])) return o;
			var u = i(t[0], t[1]),
			c = i(e[0], e[1]),
			o = i(u, t[2]) - i(c, e[2]);
			return o || i(u + t[2], s) - i(c + e[2], a);
		default:
			var l = t.slice(0);
			l.sort();
			var h = e.slice(0);
			h.sort();
			for (var f = 0; f < n; ++f) if (r = l[f] - h[f]) return r;
			return 0
		}
	}
	function a(t, e) {
		return s(t[0], e[0])
	}
	function u(t, e) {
		if (e) {
			for (var n = t.length,
			r = new Array(n), i = 0; i < n; ++i) r[i] = [t[i], e[i]];
			r.sort(a);
			for (var i = 0; i < n; ++i) t[i] = r[i][0],
			e[i] = r[i][1];
			return t
		}
		return t.sort(s),
		t
	}
	function c(t) {
		if (0 === t.length) return [];
		for (var e = 1,
		n = t.length,
		r = 1; r < n; ++r) {
			var i = t[r];
			if (s(i, t[r - 1])) {
				if (r === e) {
					e++;
					continue
				}
				t[e++] = i
			}
		}
		return t.length = e,
		t
	}
	function l(t, e) {
		for (var n = 0,
		r = t.length - 1,
		i = -1; n <= r;) {
			var o = n + r >> 1,
			a = s(t[o], e);
			a <= 0 ? (0 === a && (i = o), n = o + 1) : a > 0 && (r = o - 1)
		}
		return i
	}
	function h(t, e) {
		for (var n = new Array(t.length), r = 0, i = n.length; r < i; ++r) n[r] = [];
		for (var o = [], r = 0, a = e.length; r < a; ++r) for (var u = e[r], c = u.length, h = 1, f = 1 << c; h < f; ++h) {
			o.length = _.popCount(h);
			for (var p = 0,
			d = 0; d < c; ++d) h & 1 << d && (o[p++] = u[d]);
			var g = l(t, o);
			if (! (g < 0)) for (;;) if (n[g++].push(r), g >= t.length || 0 !== s(t[g], o)) break
		}
		return n
	}
	function f(t, e) {
		if (!e) return h(c(d(t, 0)), t, 0);
		for (var n = new Array(e), r = 0; r < e; ++r) n[r] = [];
		for (var r = 0,
		i = t.length; r < i; ++r) for (var o = t[r], s = 0, a = o.length; s < a; ++s) n[o[s]].push(r);
		return n
	}
	function p(t) {
		for (var e = [], n = 0, r = t.length; n < r; ++n) for (var i = t[n], o = 0 | i.length, s = 1, a = 1 << o; s < a; ++s) {
			for (var c = [], l = 0; l < o; ++l) s >>> l & 1 && c.push(i[l]);
			e.push(c)
		}
		return u(e)
	}
	function d(t, e) {
		if (e < 0) return [];
		for (var n = [], r = (1 << e + 1) - 1, i = 0; i < t.length; ++i) for (var o = t[i], s = r; s < 1 << o.length; s = _.nextCombination(s)) {
			for (var a = new Array(e + 1), c = 0, l = 0; l < o.length; ++l) s & 1 << l && (a[c++] = o[l]);
			n.push(a)
		}
		return u(n)
	}
	function g(t) {
		for (var e = [], n = 0, r = t.length; n < r; ++n) for (var i = t[n], o = 0, s = i.length; o < s; ++o) {
			for (var a = new Array(i.length - 1), c = 0, l = 0; c < s; ++c) c !== o && (a[l++] = i[c]);
			e.push(a)
		}
		return u(e)
	}
	function y(t, e) {
		for (var n = new w(e), r = 0; r < t.length; ++r) for (var i = t[r], o = 0; o < i.length; ++o) for (var s = o + 1; s < i.length; ++s) n.link(i[o], i[s]);
		for (var a = [], u = n.ranks, r = 0; r < u.length; ++r) u[r] = -1;
		for (var r = 0; r < t.length; ++r) {
			var c = n.find(t[r][0]);
			u[c] < 0 ? (u[c] = a.length, a.push([t[r].slice(0)])) : a[u[c]].push(t[r].slice(0))
		}
		return a
	}
	function v(t) {
		for (var e = c(u(d(t, 0))), n = new w(e.length), r = 0; r < t.length; ++r) for (var i = t[r], o = 0; o < i.length; ++o) for (var s = l(e, [i[o]]), a = o + 1; a < i.length; ++a) n.link(s, l(e, [i[a]]));
		for (var h = [], f = n.ranks, r = 0; r < f.length; ++r) f[r] = -1;
		for (var r = 0; r < t.length; ++r) {
			var p = n.find(l(e, [t[r][0]]));
			f[p] < 0 ? (f[p] = h.length, h.push([t[r].slice(0)])) : h[f[p]].push(t[r].slice(0))
		}
		return h
	}
	function m(t, e) {
		return e ? y(t, e) : v(t)
	}
	var _ = n(404),
	w = n(457);
	e.dimension = r,
	e.countVertices = i,
	e.cloneCells = o,
	e.compareCells = s,
	e.normalize = u,
	e.unique = c,
	e.findCell = l,
	e.incidence = h,
	e.dual = f,
	e.explode = p,
	e.skeleton = d,
	e.boundary = g,
	e.connectedComponents = m
},
function(t, e, n) {
	"use strict";
	function r(t, e, n) {
		var r = t + e,
		i = r - t,
		o = r - i,
		s = e - i,
		a = t - o;
		return n ? (n[0] = a + s, n[1] = r, n) : [a + s, r]
	}
	t.exports = r
},
function(t, e, n) {
	"use strict";
	"use restrict";
	function r(t) {
		this.roots = new Array(t),
		this.ranks = new Array(t);
		for (var e = 0; e < t; ++e) this.roots[e] = e,
		this.ranks[e] = 0
	}
	t.exports = r;
	var i = r.prototype;
	Object.defineProperty(i, "length", {
		get: function() {
			return this.roots.length
		}
	}),
	i.makeSet = function() {
		var t = this.roots.length;
		return this.roots.push(t),
		this.ranks.push(0),
		t
	},
	i.find = function(t) {
		for (var e = t,
		n = this.roots; n[t] !== t;) t = n[t];
		for (; n[e] !== t;) {
			var r = n[e];
			n[e] = t,
			e = r
		}
		return t
	},
	i.link = function(t, e) {
		var n = this.find(t),
		r = this.find(e);
		if (n !== r) {
			var i = this.ranks,
			o = this.roots,
			s = i[n],
			a = i[r];
			s < a ? o[n] = r: a < s ? o[r] = n: (o[r] = n, ++i[n])
		}
	}
},
, , ,
function(t, e, n) {
	"use strict";
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	e.EDITOR_ACTION = {
		INTERACT: 1,
		DRAW: 2
	}
},
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(4),
	p = r(f),
	d = TMap,
	g = d.Map,
	y = TMap,
	v = y.Event,
	m = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, a.
		default)(this, e);
			var n = (0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).call(this)),
			r = t.map,
			i = void 0 === r ? null: r,
			s = t.active,
			u = void 0 === s || s;
			return n._onInit(t),
			n.control = n._createControl(),
			n.setMap(i),
			u ? n.enable() : n.disable(),
			n
		}
		return (0, p.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "setMap",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : null;
				return this.map === t ? this: !t || t instanceof g ? (this._removeFromMap(), this.map = t, this._addToMap(), this.control && this.control.setMap(this.map), this) : (console.error("类型错误: map参数类型错误，应为TMap.Map。"), this)
			}
		},
		{
			key: "getMap",
			value: function() {
				return this.map
			}
		},
		{
			key: "getControl",
			value: function() {
				return this.control
			}
		},
		{
			key: "enable",
			value: function() {
				return this.active = !0,
				this.control && this.control.enable(),
				this
			}
		},
		{
			key: "disable",
			value: function() {
				return this.active = !1,
				this.control && this.control.disable(),
				this
			}
		},
		{
			key: "isActive",
			value: function() {
				return this.active
			}
		},
		{
			key: "destroy",
			value: function() {
				return this.disable(),
				this.setMap(null),
				this._onDestroy(),
				this.removeAllListeners(),
				this
			}
		},
		{
			key: "_onInit",
			value: function() {}
		},
		{
			key: "_onDestroy",
			value: function() {}
		},
		{
			key: "_addToMap",
			value: function() {}
		},
		{
			key: "_removeFromMap",
			value: function() {}
		},
		{
			key: "_createControl",
			value: function() {}
		}]),
		e
	} (v);
	e.
default = m
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		var n = ["fill:" + e.color, "stroke:" + e.borderColor, "stroke-width:" + e.borderWidth],
		r = document.createElementNS(t, "ellipse");
		return r.setAttribute("style", n.join(";")),
		r
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(16),
	s = r(o),
	a = n(3),
	u = r(a),
	c = n(0),
	l = r(c),
	h = n(1),
	f = r(h),
	p = n(5),
	d = r(p),
	g = n(35),
	y = r(g),
	v = n(4),
	m = r(v),
	_ = n(335),
	w = r(_),
	b = n(336),
	x = r(b),
	E = n(258),
	M = TMap,
	I = M.Point,
	S = M.LatLng,
	C = {
		color: "rgba(55,119,255,0.16)",
		borderWidth: 2,
		borderColor: "#3777FF"
	},
	N = function(t) {
		function e(t) { (0, l.
		default)(this, e);
			var n = (0, d.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return n.iconInfo = t.iconInfo,
			n
		}
		return (0, m.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, y.
			default)(e.prototype.__proto__ || (0, u.
			default)(e.prototype), "onInit", this).call(this, t),
				this.setCenter(t.center),
				this.setMajorRadius(t.majorRadius),
				this.setMinorRadius(t.minorRadius)
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this._shape && this.map) {
					var t = this.map._getSpatialResolution(),
					e = this.majorRadius / t,
					n = this.minorRadius / t;
					e === this._shapeMajorRadius && n === this._shapeMinorRadius || this._updateShape(e, n);
					var r = this.map.projectToContainer(this.center),
					i = r.x - this.dom.clientWidth / 2,
					o = r.y - this.dom.clientHeight / 2;
					this.dom.style.transform = "translate3d(" + i + "px, " + o + "px, 0px)"
				}
			}
		},
		{
			key: "setStyle",
			value: function(t) {
				this.style = (0, s.
			default)({},
				C, t)
			}
		},
		{
			key: "setCenter",
			value: function(t) {
				this.center = t,
				this.updateDOM()
			}
		},
		{
			key: "getCenter",
			value: function() {
				return this.center
			}
		},
		{
			key: "setMajorRadius",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 5;
				this.majorRadius = t,
				this.updateDOM()
			}
		},
		{
			key: "getMajorRadius",
			value: function() {
				return this.majorRadius
			}
		},
		{
			key: "setMinorRadius",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 5;
				this.minorRadius = t,
				this.updateDOM()
			}
		},
		{
			key: "getMinorRadius",
			value: function() {
				return this.minorRadius
			}
		},
		{
			key: "_updateShape",
			value: function(t, e) {
				if (this._shape) {
					this._shape.setAttribute("cx", t),
					this._shape.setAttribute("cy", e),
					this._shape.setAttribute("rx", t),
					this._shape.setAttribute("ry", e);
					var n = 0,
					r = 0,
					i = 2 * t,
					o = 2 * e;
					i += 40,
					o += 40,
					n -= 20,
					r -= 20,
					this.dom.setAttribute("viewBox", [n, r, i, o].join(" ")),
					this.dom.setAttribute("width", i),
					this.dom.setAttribute("height", o),
					this._shapeMajorRadius = t,
					this._shapeMinorRadius = e
				}
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this.style)
			}
		},
		{
			key: "setEditable",
			value: function(t) {
				var e = this;
				if (t !== this.editable) {
					if (t) {
						var n = this.map,
						r = new x.
					default({
							map:
							n,
							position: this.center,
							correctHandler: this.correctHandler,
							iconStyle: this.iconInfo.actual || {}
						}),
						i = new x.
					default({
							map:
							n,
							position: this._getRadiusPos("major"),
							correctHandler: function(t) {
								return new S(e.center.getLat(), e.correctHandler(t).getLng())
							},
							light: !0,
							iconStyle: this.iconInfo.virtual || {}
						}),
						o = new x.
					default({
							map:
							n,
							position: this._getRadiusPos("minor"),
							correctHandler: function(t) {
								return new S(e.correctHandler(t).getLat(), e.center.getLng())
							},
							light: !0,
							iconStyle: this.iconInfo.virtual || {}
						});
						r.on("editing",
						function(t) {
							e.setCenter(r.getPosition()),
							i.setPosition(e._getRadiusPos("major")),
							o.setPosition(e._getRadiusPos("minor")),
							e.emit("editing", t)
						}),
						r.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						i.on("editing",
						function(t) {
							e.setMajorRadius((0, E.computeMeterDist)(n, e.getCenter(), t)),
							e.emit("editing", t)
						}),
						i.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						o.on("editing",
						function(t) {
							e.setMinorRadius((0, E.computeMeterDist)(n, e.getCenter(), t)),
							e.emit("editing", t)
						}),
						o.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						this.centerEditPoint = r,
						this.majorRadiusEditPoint = i,
						this.minorRadiusEditPoint = o
					} else this.centerEditPoint.destroy(),
					this.majorRadiusEditPoint.destroy(),
					this.minorRadiusEditPoint.destroy(),
					this.centerEditPoint = null,
					this.majorRadiusEditPoint = null,
					this.minorRadiusEditPoint = null;
					this.editable = !!t
				}
			}
		},
		{
			key: "_getRadiusPos",
			value: function(t) {
				var e = this.map,
				n = this.center,
				r = this.majorRadius,
				i = this.minorRadius,
				o = "major" === t,
				s = o ? r: i,
				a = e.projectToContainer(n),
				u = s / e._getSpatialResolution(),
				c = a.add(o ? new I(u, 0) : new I(0, -u));
				return e.unprojectFromContainer(c)
			}
		}]),
		e
	} (w.
default);
	e.
default = N
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		var n = ["fill:" + e.color, "stroke:" + e.borderColor, "stroke-width:" + e.borderWidth],
		r = document.createElementNS(t, "path");
		return r.setAttribute("style", n.join(";")),
		r
	}
	function o(t) {
		if ((0, S.isCombinedPolygon)(t)) return t.map(function(t) {
			return o(t)
		}).join(" ");
		if ((0, S.isHoleyPolygon)(t)) {
			var e = !1;
			return t.map(function(t, n) {
				if (n) {
					return (0, S.isClockwise)(t) === e && t.reverse(),
					o(t)
				}
				return e = (0, S.isClockwise)(t),
				o(t)
			}).join(" ")
		}
		return t.map(function(t, e) {
			return (e ? "": "M") + t.x + "," + t.y
		}).join(" ") + " z"
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var s = n(16),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(35),
	v = r(y),
	m = n(4),
	_ = r(m),
	w = n(336),
	b = r(w),
	x = n(258),
	E = n(331),
	M = n(389),
	I = r(M),
	S = n(279),
	C = n(112),
	N = TMap,
	P = N.LatLng,
	L = {
		color: "rgba(55,119,255,0.16)",
		borderWidth: 2,
		borderColor: "#3777FF"
	},
	A = function(t) {
		function e(t) { (0, h.
		default)(this, e);
			var n = (0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t));
			return n.iconInfo = t.iconInfo,
			n
		}
		return (0, _.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "onInit",
			value: function(t) { (0, v.
			default)(e.prototype.__proto__ || (0, c.
			default)(e.prototype), "onInit", this).call(this, t),
				this.setCenter(t.center),
				this.setWidth(t.width),
				this.setHeight(t.height)
			}
		},
		{
			key: "_updatePoints",
			value: function() {
				var t = (0, E.getRectanglePath)(this.center, this.width, this.height);
				this.path = t.map(function(t) {
					return new TMap.LatLng(t.getLat(), t.getLng())
				});
				var e = this.path,
				n = this.map,
				r = (0, S.projectPath)(n, e),
				i = o(r);
				return this._shape.setAttribute("d", i),
				r.flat(1 / 0)
			}
		},
		{
			key: "setStyle",
			value: function(t) {
				this.style = (0, a.
			default)({},
				L, t)
			}
		},
		{
			key: "setCenter",
			value: function(t) {
				this.center = t,
				this.updateDOM()
			}
		},
		{
			key: "getCenter",
			value: function() {
				return this.center
			}
		},
		{
			key: "setWidth",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 5;
				this.width = t,
				this.updateDOM()
			}
		},
		{
			key: "getWidth",
			value: function() {
				return this.width
			}
		},
		{
			key: "setHeight",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : 5;
				this.height = t,
				this.updateDOM()
			}
		},
		{
			key: "getHeight",
			value: function() {
				return this.height
			}
		},
		{
			key: "_createShape",
			value: function() {
				return i(this._ns, this.style)
			}
		},
		{
			key: "setEditable",
			value: function(t) {
				var e = this;
				if (t !== this.editable) {
					if (t) {
						var n = this.map,
						r = new b.
					default({
							map:
							n,
							position: (0, x.computeMidPoint)(n, this.path[0], this.path[3]),
							correctHandler: function(t) {
								return new P(e.correctHandler(t).getLat(), e.center.getLng())
							},
							iconStyle: this.iconInfo.virtual || {}
						}),
						i = new b.
					default({
							map:
							n,
							position: (0, x.computeMidPoint)(n, this.path[0], this.path[1]),
							correctHandler: function(t) {
								return new P(e.center.getLat(), e.correctHandler(t).getLng())
							},
							iconStyle: this.iconInfo.virtual || {}
						}),
						o = new b.
					default({
							map:
							n,
							position: this.center,
							correctHandler: this.correctHandler,
							iconStyle: this.iconInfo.actual || {}
						}),
						s = this;
						o.on("editing",
						function(t) {
							e.setCenter(t),
							o.setPosition(t),
							r.setPosition((0, x.computeMidPoint)(n, s.path[0], s.path[3])),
							i.setPosition((0, x.computeMidPoint)(n, s.path[0], s.path[1])),
							e.emit("editing", t)
						}),
						o.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						r.on("editing",
						function(t) {
							var i = (0, C.latLngToMercator)(e.center),
							o = (0, C.latLngToMercator)(t),
							a = Math.abs(i.y - o.y);
							e.setHeight(2 * a),
							r.setPosition((0, x.computeMidPoint)(n, s.path[0], s.path[3])),
							e.emit("editing", t)
						}),
						r.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						i.on("editing",
						function(t) {
							var r = (0, C.latLngToMercator)(e.center),
							o = (0, C.latLngToMercator)(t),
							a = Math.abs(r.x - o.x);
							e.setWidth(2 * a),
							i.setPosition((0, x.computeMidPoint)(n, s.path[0], s.path[1])),
							e.emit("editing", t)
						}),
						i.on("edit_end",
						function() {
							e.emit("edit_end")
						}),
						this.centerEditPoint = o,
						this.topEditPoint = r,
						this.rightEditPoint = i
					} else this.centerEditPoint.destroy(),
					this.topEditPoint.destroy(),
					this.rightEditPoint.destroy(),
					this.centerEditPoint = null,
					this.topEditPoint = null,
					this.rightEditPoint = null;
					this.editable = !!t
				}
			}
		},
		{
			key: "_reCalcFeature",
			value: function() {}
		}]),
		e
	} (I.
default);
	e.
default = A
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(4),
	p = r(f),
	d = n(210),
	g = n(297),
	y = n(296),
	v = n(1029);
	n(1033);
	var m = TMap,
	_ = m.DOMOverlay,
	w = function(t) {
		function e() {
			return (0, a.
		default)(this, e),
			(0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).apply(this, arguments))
		}
		return (0, p.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "onInit",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
				this.instance = t.instance,
				this.position = t.position,
				this._handlers = [],
				this.visible = !0
			}
		},
		{
			key: "createDOM",
			value: function() {
				var t = this,
				e = (0, d.toDom)((0, g.Template)(v, this.instance)),
				n = e.querySelector(".tip-close");
				return n && (this.finger = new y.Finger(n, {
					preventDefaultMove: !0,
					preventDefaultEnd: !0
				}), this.finger.on("tap",
				function() {
					t.emit("remove")
				})),
				e.querySelector(".measure-tool-tip")
			}
		},
		{
			key: "enablePointerEvents",
			value: function() {
				this.dom.style.pointerEvents = ""
			}
		},
		{
			key: "disablePointerEvents",
			value: function() {
				this.dom.style.pointerEvents = "none"
			}
		},
		{
			key: "updateContent",
			value: function(t) {
				var e = this.dom.querySelector(".tip-total");
				if (e) e.innerHTML = t.distance;
				else {
					this.dom.querySelector(".tip-node").innerHTML = "" + t.distance + t.unit
				}
			}
		},
		{
			key: "updateDOM",
			value: function() {
				if (this.map && this.visible) {
					var t = this.map.projectToContainer(this.position),
					e = t.getX() - this.dom.offsetWidth / 2 + "px",
					n = t.getY() - this.dom.offsetHeight / 2 + "px";
					this.dom.style.transform = "translate3d(" + e + ", " + n + ", 0px)"
				}
			}
		},
		{
			key: "setVisible",
			value: function(t) {
				return this.visible = !!t,
				this.dom.style.display = this.visible ? "": "none",
				this
			}
		},
		{
			key: "onDestroy",
			value: function() {
				this._handlers.forEach(function(t) {
					return t.remove()
				}),
				this.finger && this.finger.destroy(),
				this.instance = null,
				this.visible = null
			}
		}]),
		e
	} (_);
	e.
default = w
},
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		var e = t.type,
		n = t.styleId,
		r = t.data,
		i = null;
		switch (e) {
		case H.POINT:
			i = {
				styleId: n,
				position: r.position
			};
			break;
		case H.CIRCLE:
			i = {
				styleId: n,
				center: r.center,
				radius: r.radius
			};
			break;
		case H.RECTANGLE:
			i = {
				styleId: n,
				center: r.center,
				width: r.width,
				height: r.height
			};
			break;
		case H.ELLIPSE:
			i = {
				styleId: n,
				center: r.center,
				majorRadius: r.majorRadius,
				minorRadius: r.minorRadius
			};
			break;
		case H.POLYLINE:
			r.path.length > 1 && (i = {
				styleId: n,
				paths: r.path
			});
		case H.POLYGON:
		default:
			r.path.length > 2 && (i = {
				styleId: n,
				paths: r.path
			})
		}
		return i
	}
	function o(t) {
		var e = t.src,
		n = t.width,
		r = t.height,
		i = t.anchor;
		if (Q(e) || (!Z(e) && new z.BaseTypeError("src", "String", e).warn(), delete t.src), Z(n) || s("width", n) || delete t.width, Z(r) || s("height", r) || delete t.height, J(i)) {
			var o = i.x,
			u = i.y;
			K(o) || (!Z(o) && new z.BaseTypeError("x", "Number", o).warn(), t.anchor.x = a(t.width)),
			K(u) || (!Z(o) && new z.BaseTypeError("y", "Number", u).warn(), t.anchor.y = a(t.height))
		} else t.anchor = {
			x: a(t.width),
			y: a(t.height)
		},
		!Z(i) && new z.BaseTypeError("anchor", "Object", i).warn();
		return t
	}
	function s(t, e) {
		return K(e) ? !(e < 0) || (console.warn("传入的iconstyle的" + t + "属性小于0"), !1) : (new z.BaseTypeError(t, "Number", e).warn(), !1)
	}
	function a(t) {
		return Z(t) ? tt: t / 2
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var u = n(241),
	c = r(u),
	l = n(24),
	h = r(l),
	f = n(221),
	p = r(f),
	d = n(223),
	g = r(d),
	y = n(3),
	v = r(y),
	m = n(0),
	_ = r(m),
	w = n(1),
	b = r(w),
	x = n(5),
	E = r(x),
	M = n(35),
	I = r(M),
	S = n(4),
	C = r(S),
	N = n(500),
	P = r(N),
	L = n(712),
	A = r(L),
	O = n(714),
	T = r(O),
	R = n(461),
	D = n(715),
	k = r(D),
	F = n(713),
	j = r(F),
	q = n(258),
	B = n(279),
	G = n(41),
	U = r(G),
	z = n(29),
	Y = n(43),
	X = TMap,
	V = X.LatLngBounds,
	W = X.Point,
	H = TMap.constants.GEOMETRY_TYPES,
	J = U.
default.isObject,
	Z = U.
default.isUndefined,
	Q = U.
default.isString,
	K = U.
default.isNumber,
	$ = {
		actual: {},
		virtual: {}
	},
	tt = 5,
	et = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, _.
		default)(this, e);
			var n = (0, E.
		default)(this, (e.__proto__ || (0, v.
		default)(e)).call(this, t));
			return (0, Y.statCn)("GeometryEditor"),
			n
		}
		return (0, C.
	default)(e, t),
		(0, b.
	default)(e, [{
			key: "_onInit",
			value: function() {
				var t = this,
				e = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				n = e.overlayList,
				r = void 0 === n ? [] : n,
				i = e.activeOverlayId,
				s = void 0 === i ? void 0 : i,
				a = e.actionMode,
				u = void 0 === a ? R.EDITOR_ACTION.INTERACT: a,
				c = e.snappable,
				l = void 0 !== c && c,
				h = e.snapDist,
				f = e.selectable,
				p = void 0 !== f && f,
				d = e.iconInfo,
				y = void 0 === d ? $: d;
				if (this.setSnappable(l, h), this.setSelectable(p), J(y) ? (y.actual = J(y.actual) ? o(y.actual) : {},
				y.virtual = J(y.virtual) ? o(y.virtual) : {},
				this._iconInfo = (0, g.
			default)({},
				$, y)) : (console.warn("GeometryEditorOptions中的iconInfo参数有误"), this._iconInfo = $), this._overlayMgr = new A.
			default(this), r.forEach(function(e) {
					t.addOverlay(e)
				}), !s) {
					var v = this.getOverlayList();
					s = v[0] && v[0].id
				}
				this.setActiveOverlay(s),
				this.setActionMode(u),
				this._overlayMgr.on("active_changed",
				function() {
					t._stopAction(),
					t._startAction(),
					t.emit("active_changed")
				})
			}
		},
		{
			key: "_onDestroy",
			value: function() {
				this._overlayMgr && (this.clearOverlay(), this._overlayMgr.removeAllListeners()),
				this._overlayMgr = null
			}
		},
		{
			key: "_addToMap",
			value: function() {
				this.map && (this._painter = new T.
			default({
					map:
					this.map,
					correctHandler: this._correctPoint.bind(this)
				}), this._modifier = new j.
			default({
					map:
					this.map,
					correctHandler: this._correctPoint.bind(this),
					iconInfo: this._iconInfo
				}), this._selector = new k.
			default)
			}
		},
		{
			key: "_removeFromMap",
			value: function() {
				this.disable(),
				this._painter && (this._painter.disable(), this._painter.removeAllListeners(), this._painter = null),
				this._modifier && (this._modifier.restore(), this._modifier.disable(), this._modifier.removeAllListeners(), this._modifier = null),
				this._selector && (this._selector.disable(), this._selector.removeAllListeners(), this._selector = null)
			}
		},
		{
			key: "_createControl",
			value: function() {
				return null
			}
		},
		{
			key: "addOverlay",
			value: function(t) {
				if (!J(t)) return new z.BaseTypeError("editableOverlay", "Object", t).error(),
				this;
				if (this._overlayMgr.add(t), !this.getActiveOverlay()) {
					var e = this.getOverlayList(),
					n = e[0] && e[0].id;
					this.setActiveOverlay(n)
				}
				return this
			}
		},
		{
			key: "removeOverlay",
			value: function(t) {
				return this._overlayMgr.remove(t),
				this
			}
		},
		{
			key: "clearOverlay",
			value: function() {
				return this._overlayMgr.clear(),
				this
			}
		},
		{
			key: "getOverlayList",
			value: function() {
				return this._overlayMgr.getMemberList()
			}
		},
		{
			key: "setActiveOverlay",
			value: function(t) {
				return this._overlayMgr.activate(t),
				this
			}
		},
		{
			key: "getActiveOverlay",
			value: function() {
				return this._overlayMgr.getActiveMember()
			}
		},
		{
			key: "setActionMode",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : R.EDITOR_ACTION.INTERACT;
				if (t === this.actionMode) return this;
				var e = (0, p.
			default)(R.EDITOR_ACTION);
				if (e.indexOf(t) < 0) {
					if (new z.EnumError("actionMode", e, t).error(), !Z(this.actionMode)) return this;
					t = R.EDITOR_ACTION.INTERACT
				}
				return this._stopAction(),
				this.actionMode = t,
				this._startAction(),
				this.emit("mode_changed"),
				this
			}
		},
		{
			key: "getActionMode",
			value: function() {
				return this.actionMode
			}
		},
		{
			key: "getSelectedList",
			value: function() {
				return [].concat((0, h.
			default)(this._selectedSet))
			}
		},
		{
			key: "setSnappable",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0],
				e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : 10;
				return this._snappable = !!t,
				this._snapDist = e,
				this
			}
		},
		{
			key: "setSelectable",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] && arguments[0];
				return t = !!t,
				this._selectable !== t && (this._selectable = t, this._selectedSet || (this._selectedSet = new c.
			default), this.actionMode === R.EDITOR_ACTION.INTERACT && (t ? this._startInteract() : this._stopInteract())),
				this
			}
		},
		{
			key: "enable",
			value: function() {
				return this.isActive() || ((0, I.
			default)(e.prototype.__proto__ || (0, v.
			default)(e.prototype), "enable", this).call(this), this._mapViewMode = this.map.getViewMode(), this.map.setViewMode("2D"), this._startAction()),
				this
			}
		},
		{
			key: "disable",
			value: function() {
				return this.isActive() && ((0, I.
			default)(e.prototype.__proto__ || (0, v.
			default)(e.prototype), "disable", this).call(this), this.map.setViewMode(this._mapViewMode), this._stopAction()),
				this
			}
		},
		{
			key: "split",
			value: function() {
				var t = this,
				e = this.getActionMode() === R.EDITOR_ACTION.INTERACT,
				n = 1 === this.getSelectedList().length;
				if (!e || !n) return console.warn("拆分失败：无选中图形或选中多个图形。"),
				this.emit("split_fail", {
					message: "拆分失败：无选中图形或选中多个图形。"
				}),
				this;
				var r = this.getSelectedList()[0],
				i = this.getActiveOverlay();
				if (i.overlay._geometryType !== H.POLYLINE && i.overlay._geometryType !== H.POLYGON) return console.warn("拆分失败：暂只支持多边形拆分。"),
				this.emit("split_fail", {
					message: "拆分失败：暂只支持多边形拆分。"
				}),
				this;
				if ((0, B.isCombinedPolygon)(r.paths)) return console.warn("拆分失败：暂不支持飞地形式的多边形拆分。"),
				this.emit("split_fail", {
					message: "拆分失败：暂不支持飞地形式的多边形拆分。"
				}),
				this;
				this._pauseInteract();
				var o = this._painter;
				return o.enable(H.POLYLINE, {
					color: "#FF0000",
					dash: [10, 5]
				}),
				o.on("draw_complete",
				function(e) {
					var n = null;
					try {
						n = (0, q.split)(r, e.path, t.map)
					} catch(e) {
						return console.warn(e),
						void t.emit("split_fail", {
							message: "拆分失败：不满足拆分的几何条件。"
						})
					}
					if (t._stopDraw(), t._restoreInteract(), n) {
						var o = t._modifier,
						s = t._selectedSet;
						o.setLayer(i),
						s.clear(),
						i.overlay.remove([r.id]),
						i.overlay.add(n),
						n.forEach(function(t) {
							o.add(t),
							s.add(t)
						}),
						t.emit("split_complete", n)
					} else console.warn("拆分失败：不满足拆分的几何条件。"),
					t.emit("split_fail", {
						message: "拆分失败：不满足拆分的几何条件。"
					})
				}),
				this
			}
		},
		{
			key: "union",
			value: function() {
				var t = this.getActionMode() === R.EDITOR_ACTION.INTERACT,
				e = this.getSelectedList().length > 1;
				if (!t || !e) return console.warn("合并失败：无选中图形或仅选中一个图形。"),
				this.emit("union_fail", {
					message: "合并失败：无选中图形或仅选中一个图形。"
				}),
				this;
				var n = this.getSelectedList(),
				r = this.getActiveOverlay();
				if (! (r.overlay instanceof window.TMap.MultiPolygon) || r.overlay instanceof window.TMap.MultiCircle) return console.warn("拆分失败：暂只支持多边形合并。"),
				this.emit("split_fail", {
					message: "拆分失败：暂只支持多边形合并。"
				}),
				this;
				for (var i = 0; i < n.length; i++) {
					var o = n[i];
					if ((0, B.isCombinedPolygon)(o.paths)) return console.warn("合并失败：暂不支持飞地形式的多边形进行合并。"),
					this.emit("union_fail", {
						message: "合并失败：暂不支持飞地形式的多边形进行合并。"
					}),
					this
				}
				var s = null;
				try {
					s = (0, q.union)(n, this.map)
				} catch(t) {
					return console.warn(t),
					void this.emit("union_fail", {
						message: "拆分失败：不满足合并的几何条件。"
					})
				}
				if (s) {
					var a = this._modifier,
					u = this._selectedSet;
					a.setLayer(r),
					u.clear(),
					r.overlay.remove(n.map(function(t) {
						return t.id
					})),
					r.overlay.add([s]),
					a.add(s),
					u.add(s),
					this.emit("union_complete", s)
				} else console.warn("合并失败：不满足合并的几何条件。"),
				this.emit("union_fail", {
					message: "合并失败：不满足合并的几何条件。"
				});
				return this
			}
		},
		{
			key: "stop",
			value: function() {
				this.actionMode === R.EDITOR_ACTION.DRAW ? this._painter.stop() : this._selector.stop()
			}
		},
		{
			key: "delete",
			value: function() {
				var t = this.getActionMode() === R.EDITOR_ACTION.INTERACT,
				e = this.getSelectedList().length > 0;
				return t && e && this._modifier.delete(),
				this
			}
		},
		{
			key: "select",
			value: function(t) {
				if (!Array.isArray(t)) return new z.BaseTypeError("idList", "Array", t).error(),
				this;
				if (this.actionMode === R.EDITOR_ACTION.DRAW) return console.warn("编辑器当前处于绘制模式，无法选中图形"),
				this;
				var e = this.getActiveOverlay();
				if (!e) return console.warn("编辑器没有处于编辑状态的图层，无法选中图形"),
				this;
				var n = this._selectedSet,
				r = this._modifier;
				if (this._selector.disable(), this._selector.stop(), this._selector.enable(this.getOverlayList(), e.id), r.setLayer(e), t.length > 0) {
					var i = e.overlay && e.overlay.getGeometries(),
					o = !1;
					i.forEach(function(e) {
						t.includes(e.id) && (n.has(e) || (r.add(e), n.add(e), o = !0))
					}),
					o && this.emit("select")
				}
				return this
			}
		},
		{
			key: "_startAction",
			value: function() {
				if (this.isActive()) switch (this.actionMode) {
				case R.EDITOR_ACTION.DRAW:
					this._startDraw();
					break;
				default:
					this._startInteract()
				}
			}
		},
		{
			key: "_startDraw",
			value: function() {
				var t = this,
				e = this.getActiveOverlay();
				if (this.map && e) {
					var n = this._painter,
					r = e.overlay,
					o = e.drawingStyleId,
					s = r.getGeometryType(),
					a = r.getStyles(),
					u = a[o] || a.
				default;
					n.enable(s, u),
					n.on("drawing",
					function(e, n) {
						var r = i({
							type: s,
							styleId: o,
							data: e
						});
						t.emit("drawing", {
							position: n,
							geometry: r
						})
					}),
					n.on("draw_complete",
					function(e) {
						var n = i({
							type: s,
							styleId: o,
							data: e
						});
						n && (r.add([n]), t.emit("draw_complete", n))
					})
				}
			}
		},
		{
			key: "_startInteract",
			value: function() {
				var t = this.getOverlayList(),
				e = this.getActiveOverlay();
				if (this._selectable && t.length && e) {
					var n = this._selector,
					r = this._modifier;
					n.enable(t, this.getActiveOverlay().id),
					n.on("single", this._onSingleSelect.bind(this)),
					n.on("multiple", this._onMultipleSelect.bind(this)),
					n.on("clear", this._onClearSelected.bind(this)),
					r.on("delete", this._onDelete.bind(this)),
					r.on("adjust", this._onAdjust.bind(this)),
					r.on("adjusting", this._onAdjusting.bind(this))
				}
			}
		},
		{
			key: "_onSingleSelect",
			value: function(t) {
				var e = t.layerId,
				n = t.geometry,
				r = this._modifier,
				i = this._selectedSet;
				this.setActiveOverlay(e),
				r.setLayer(this.getActiveOverlay()),
				r.add(n),
				i.clear(),
				i.add(n),
				this.emit("select")
			}
		},
		{
			key: "_onMultipleSelect",
			value: function(t) {
				var e = t.geometry,
				n = this._modifier,
				r = this._selectedSet;
				r.has(e) || (n.add(e), r.add(e), this.emit("select"))
			}
		},
		{
			key: "_onClearSelected",
			value: function() {
				this._modifier.restore(),
				this._selectedSet.clear()
			}
		},
		{
			key: "_onDelete",
			value: function(t) {
				this._selectedSet.clear(),
				this.emit("delete_complete", t.geometryList)
			}
		},
		{
			key: "_onAdjust",
			value: function(t) {
				this.emit("adjust_complete", t)
			}
		},
		{
			key: "_onAdjusting",
			value: function(t) {
				this.emit("adjusting", t)
			}
		},
		{
			key: "_stopAction",
			value: function() {
				switch (this.actionMode) {
				case R.EDITOR_ACTION.DRAW:
					this._stopDraw();
					break;
				default:
					this._stopInteract()
				}
			}
		},
		{
			key: "_stopDraw",
			value: function() {
				this._painter && (this._painter.disable(), this._painter.removeAllListeners())
			}
		},
		{
			key: "_stopInteract",
			value: function() {
				var t = this._selector,
				e = this._modifier;
				t && e && (t.disable(), t.removeAllListeners(), e.restore(), e.removeAllListeners(), this._selectedSet.clear())
			}
		},
		{
			key: "_pauseInteract",
			value: function() {
				var t = this._selector,
				e = this._modifier;
				t && e && (t.disable(), e.disable())
			}
		},
		{
			key: "_restoreInteract",
			value: function() {
				var t = this._selector,
				e = this._modifier;
				t && e && (t.enable(this.getOverlayList(), this.getActiveOverlay().id), e.enable())
			}
		},
		{
			key: "_correctPoint",
			value: function(t) {
				return this._snap(t)
			}
		},
		{
			key: "_snap",
			value: function(t) {
				if (this._snappable) {
					var e = this.map,
					n = this._snapDist,
					r = e.projectToContainer(t),
					i = e.unprojectFromContainer(r.add(new W( - n, n))),
					o = e.unprojectFromContainer(r.add(new W(n, -n))),
					s = new V(i, o),
					a = this.getOverlayList().filter(function(t) {
						return t.isSnapTarget
					}),
					u = t;
					return a.forEach(function(e) {
						var r = e.overlay.snap(t, n, s);
						r && r.dist < 1 / 0 && (u = r.latLng)
					}),
					u
				}
				return t
			}
		}]),
		e
	} (P.
default);
	e.
default = et
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(283),
	o = r(i),
	s = n(282),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(4),
	v = r(y),
	m = n(500),
	_ = r(m),
	w = n(722),
	b = r(w),
	x = n(721),
	E = r(x),
	M = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {};
			return (0, h.
		default)(this, e),
			(0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this, t))
		}
		return (0, v.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "measureDistance",
			value: function() {
				function t() {
					return e.apply(this, arguments)
				}
				var e = (0, a.
			default)(o.
			default.mark(function t() {
					return o.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							return this.isActive() || console.warn("测量工具尚未启用!"),
							this.map || console.warn("测量工具尚未添加到地图中!"),
							t.next = 4,
							this.abortCurrentMeasurement();
						case 4:
							return this._currentMeasurement = this._polylineMeasurement,
							t.next = 7,
							this._polylineMeasurement.measureDistance();
						case 7:
							return this._measurementInfoPromise = t.sent,
							this._currentMeasurement = null,
							t.abrupt("return", this._measurementInfoPromise);
						case 10:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "measureArea",
			value: function() {
				function t() {
					return e.apply(this, arguments)
				}
				var e = (0, a.
			default)(o.
			default.mark(function t() {
					return o.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							return this.isActive() || console.warn("测量工具尚未启用!"),
							this.map || console.warn("测量工具尚未添加到地图中!"),
							t.next = 4,
							this.abortCurrentMeasurement();
						case 4:
							return this._currentMeasurement = this._polygonMeasurement,
							t.next = 7,
							this._polygonMeasurement.measureArea();
						case 7:
							return this._measurementInfoPromise = t.sent,
							this._currentMeasurement = null,
							t.abrupt("return", this._measurementInfoPromise);
						case 10:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "abortCurrentMeasurement",
			value: function() {
				function t() {
					return e.apply(this, arguments)
				}
				var e = (0, a.
			default)(o.
			default.mark(function t() {
					return o.
				default.wrap(function(t) {
						for (;;) switch (t.prev = t.next) {
						case 0:
							if (!this._currentMeasurement) {
								t.next = 7;
								break
							}
							if (this._currentMeasurement.abort(), !this._measurementInfoPromise) {
								t.next = 7;
								break
							}
							return t.next = 5,
							this._measurementInfoPromise;
						case 5:
							this._measurementInfoPromise = null,
							this._currentMeasurement = null;
						case 7:
						case "end":
							return t.stop()
						}
					},
					t, this)
				}));
				return t
			} ()
		},
		{
			key: "currentMeasurement",
			value: function() {
				return this._currentMeasurement
			}
		},
		{
			key: "isMeasuring",
			value: function() {
				return !! this._currentMeasurement
			}
		},
		{
			key: "_onInit",
			value: function() {
				this._polylineMeasurement = new b.
			default({
					measureTool:
					this
				}),
				this._polygonMeasurement = new E.
			default({
					measureTool:
					this
				}),
				this._currentMeasurement = null
			}
		},
		{
			key: "_addToMap",
			value: function() {
				this._polylineMeasurement.addToMap(this.map),
				this._polygonMeasurement.addToMap(this.map)
			}
		},
		{
			key: "_removeFromMap",
			value: function() {
				this._polylineMeasurement.removeFromMap(),
				this._polygonMeasurement.removeFromMap()
			}
		}]),
		e
	} (_.
default);
	e.
default = M
},
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t, e, r, s) {
		if (s = s || {},
		!n.i(o.isObject)(s)) throw new Error("options is invalid");
		var a = s.units,
		u = s.properties,
		c = n.i(i.getCoord)(t),
		l = n.i(o.degreesToRadians)(c[0]),
		h = n.i(o.degreesToRadians)(c[1]),
		f = n.i(o.degreesToRadians)(r),
		p = n.i(o.lengthToRadians)(e, a),
		d = Math.asin(Math.sin(h) * Math.cos(p) + Math.cos(h) * Math.sin(p) * Math.cos(f)),
		g = l + Math.atan2(Math.sin(f) * Math.sin(p) * Math.cos(h), Math.cos(p) - Math.sin(h) * Math.sin(d)),
		y = n.i(o.radiansToDegrees)(g),
		v = n.i(o.radiansToDegrees)(d);
		return n.i(o.point)([y, v], u)
	}
	var i = n(109),
	o = n(48);
	e.a = r
},
, ,
function(t, e, n) {
	"use strict";
	function r(t, e, r) {
		if (r = r || {},
		!n.i(c.isObject)(r)) throw new Error("options is invalid");
		var h = t.geometry ? t.geometry.type: t.type;
		if ("LineString" !== h && "MultiLineString" !== h) throw new Error("lines must be LineString or MultiLineString");
		var f = n.i(c.point)([1 / 0, 1 / 0], {
			dist: 1 / 0
		}),
		p = 0;
		return n.i(u.flattenEach)(t,
		function(t) {
			for (var u = n.i(l.getCoords)(t), h = 0; h < u.length - 1; h++) {
				var d = n.i(c.point)(u[h]);
				d.properties.dist = n.i(o.
			default)(e, d, r);
				var g = n.i(c.point)(u[h + 1]);
				g.properties.dist = n.i(o.
			default)(e, g, r);
				var y = n.i(o.
			default)(d, g, r),
				v = Math.max(d.properties.dist, g.properties.dist),
				m = n.i(i.
			default)(d, g),
				_ = n.i(s.a)(e, v, m + 90, r),
				w = n.i(s.a)(e, v, m - 90, r),
				b = n.i(a.
			default)(n.i(c.lineString)([_.geometry.coordinates, w.geometry.coordinates]), n.i(c.lineString)([d.geometry.coordinates, g.geometry.coordinates])),
				x = null;
				b.features.length > 0 && (x = b.features[0], x.properties.dist = n.i(o.
			default)(e, x, r), x.properties.location = p + n.i(o.
			default)(d, x, r)),
				d.properties.dist < f.properties.dist && (f = d, f.properties.index = h, f.properties.location = p),
				g.properties.dist < f.properties.dist && (f = g, f.properties.index = h + 1, f.properties.location = p + y),
				x && x.properties.dist < f.properties.dist && (f = x, f.properties.index = h),
				p += y
			}
		}),
		f
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(366),
	o = n(327),
	s = n(612),
	a = n(328),
	u = n(121),
	c = n(48),
	l = n(109);
	e.
default = r
},
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		return "[object Number]" === Object.prototype.toString.call(t)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(0),
	s = r(o),
	a = n(1),
	u = r(a),
	c = n(74),
	l = function() {
		function t(e, n, r, o) { (0, s.
		default)(this, t),
			this.minX = 1 / 0,
			this.minY = 1 / 0,
			this.maxX = -1 / 0,
			this.maxY = -1 / 0,
			i(e) && i(n) && this.extend(new c.Point(e, n)),
			i(r) && i(o) && this.extend(new c.Point(r, o))
		}
		return (0, u.
	default)(t, [{
			key: "extend",
			value: function(t) {
				t && (this.minX = Math.min(this.minX, t.x), this.maxX = Math.max(this.maxX, t.x), this.minY = Math.min(this.minY, t.y), this.maxY = Math.max(this.maxY, t.y))
			}
		},
		{
			key: "getMin",
			value: function() {
				return {
					x: this.minX,
					y: this.minY
				}
			}
		},
		{
			key: "getMax",
			value: function() {
				return {
					x: this.maxX,
					y: this.maxY
				}
			}
		},
		{
			key: "getSize",
			value: function() {
				return {
					width: this.maxX - this.minX,
					height: this.maxY - this.minY
				}
			}
		}]),
		t
	} ();
	e.
default = l
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(24),
	o = r(i),
	s = n(148),
	a = r(s),
	u = n(3),
	c = r(u),
	l = n(0),
	h = r(l),
	f = n(1),
	p = r(f),
	d = n(5),
	g = r(d),
	y = n(4),
	v = r(y),
	m = TMap,
	_ = m.Event,
	w = TMap,
	b = w.GeometryOverlay,
	x = function(t) {
		function e(t) { (0, h.
		default)(this, e);
			var n = (0, g.
		default)(this, (e.__proto__ || (0, c.
		default)(e)).call(this));
			return n.editor = t,
			n.members = new a.
		default,
			n.activeMemberId = null,
			n
		}
		return (0, v.
	default)(e, t),
		(0, p.
	default)(e, [{
			key: "add",
			value: function() {
				var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {},
				e = t.id,
				n = void 0 === e ? "": e,
				r = t.overlay,
				i = void 0 === r ? null: r,
				o = t.name,
				s = void 0 === o ? "": o,
				a = t.isSnapTarget,
				u = void 0 === a || a,
				c = t.drawingStyleId,
				l = void 0 === c ? "default": c,
				h = t.selectedStyleId,
				f = void 0 === h ? null: h;
				if (! (i instanceof b)) return void console.warn("类型错误：EditorOverlay.overlay类型错误，应为GeometryOverlay。");
				n || (n = i.id),
				this.members.has(n) ? console.warn("EditorOverlay: id已存在，请勿重复添加。") : this.members.set(n, {
					id: n,
					overlay: i,
					name: s,
					isSnapTarget: u,
					drawingStyleId: l,
					selectedStyleId: f
				})
			}
		},
		{
			key: "remove",
			value: function(t) {
				if (this.members.has(t)) {
					if (this.activeMemberId === t) {
						var e = [].concat((0, o.
					default)(this.members.keys())),
						n = e.find(function(e) {
							return e !== t
						});
						this.activate(n)
					}
					this.members.delete(t)
				}
			}
		},
		{
			key: "getMemberList",
			value: function() {
				return [].concat((0, o.
			default)(this.members.values()))
			}
		},
		{
			key: "activate",
			value: function(t) {
				this.activeMemberId !== t && (this.activeMemberId = null, this.members.has(t) && (this.activeMemberId = t), this.emit("active_changed"))
			}
		},
		{
			key: "getActiveMember",
			value: function() {
				return this.activeMemberId && this.members.get(this.activeMemberId)
			}
		},
		{
			key: "clear",
			value: function() {
				this.members.clear(),
				this.activate(null)
			}
		}]),
		e
	} (_);
	e.
default = x
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(16),
	o = r(i),
	s = n(27),
	a = r(s),
	u = n(241),
	c = r(u),
	l = n(3),
	h = r(l),
	f = n(0),
	p = r(f),
	d = n(1),
	g = r(d),
	y = n(5),
	v = r(y),
	m = n(4),
	_ = r(m),
	w = n(363),
	b = r(w),
	x = n(362),
	E = r(x),
	M = n(325),
	I = r(M),
	S = n(361),
	C = r(S),
	N = n(501),
	P = r(N),
	L = n(502),
	A = r(L),
	O = TMap,
	T = O.Event,
	R = TMap.constants.GEOMETRY_TYPES,
	D = function(t) {
		function e(t) {
			var n = t.map,
			r = t.correctHandler,
			i = t.iconInfo; (0, p.
		default)(this, e);
			var o = (0, v.
		default)(this, (e.__proto__ || (0, h.
		default)(e)).call(this));
			return o.map = n,
			o.correctHandler = r,
			o.overlay = null,
			o.shapeSet = new c.
		default,
			o.iconInfo = i,
			o.enable(),
			o
		}
		return (0, _.
	default)(e, t),
		(0, g.
	default)(e, [{
			key: "enable",
			value: function() {
				if (!this.active) {
					this._onKeyDown = this._onKeyDown.bind(this),
					document.addEventListener("keydown", this._onKeyDown);
					var t = !0,
					e = !1,
					n = void 0;
					try {
						for (var r, i = (0, a.
					default)(this.shapeSet); ! (t = (r = i.next()).done); t = !0) {
							r.value.enable()
						}
					} catch(t) {
						e = !0,
						n = t
					} finally {
						try { ! t && i.
							return && i.
							return ()
						} finally {
							if (e) throw n
						}
					}
					this.active = !0
				}
			}
		},
		{
			key: "disable",
			value: function() {
				if (this.active) {
					document.removeEventListener("keydown", this._onKeyDown);
					var t = !0,
					e = !1,
					n = void 0;
					try {
						for (var r, i = (0, a.
					default)(this.shapeSet); ! (t = (r = i.next()).done); t = !0) {
							r.value.disable()
						}
					} catch(t) {
						e = !0,
						n = t
					} finally {
						try { ! t && i.
							return && i.
							return ()
						} finally {
							if (e) throw n
						}
					}
					this.active = !1
				}
			}
		},
		{
			key: "setLayer",
			value: function(t) {
				this.restore(),
				this.overlay = t.overlay,
				this.selectedStyle = this.overlay.getStyles()[t.selectedStyleId]
			}
		},
		{
			key: "add",
			value: function(t) {
				var e = this;
				this.overlay.remove([t.id]);
				var n = new k({
					type: this.overlay.getGeometryType(),
					style: this.selectedStyle || this.overlay.getStyles()[t.styleId],
					geometry: t,
					map: this.map,
					correctHandler: this.correctHandler,
					iconInfo: this.iconInfo
				});
				n.on("adjust",
				function(t) {
					e.emit("adjust", t)
				}),
				n.on("adjusting",
				function(t) {
					e.emit("adjusting", t)
				}),
				this.shapeSet.add(n)
			}
		},
		{
			key: "restore",
			value: function() {
				var t = this._getAllGeometries();
				this.overlay && this.overlay.add(t)
			}
		},
		{
			key: "delete",
			value: function() {
				var t = this._getAllGeometries();
				t.length && this.emit("delete", {
					geometryList: t
				})
			}
		},
		{
			key: "_onKeyDown",
			value: function(t) {
				8 !== t.keyCode && 46 !== t.keyCode || this.delete()
			}
		},
		{
			key: "_getAllGeometries",
			value: function() {
				var t = [],
				e = this.shapeSet,
				n = !0,
				r = !1,
				i = void 0;
				try {
					for (var o, s = (0, a.
				default)(e); ! (n = (o = s.next()).done); n = !0) {
						var u = o.value;
						t.push(u.geometry),
						u.delete()
					}
				} catch(t) {
					r = !0,
					i = t
				} finally {
					try { ! n && s.
						return && s.
						return ()
					} finally {
						if (r) throw i
					}
				}
				return e.clear(),
				t
			}
		}]),
		e
	} (T);
	e.
default = D;
	var k = function(t) {
		function e(t) {
			var n = t.type,
			r = t.geometry,
			i = t.style,
			s = t.map,
			a = t.correctHandler,
			u = t.iconInfo; (0, p.
		default)(this, e);
			var c = (0, v.
		default)(this, (e.__proto__ || (0, h.
		default)(e)).call(this)),
			l = null,
			f = {
				map: s,
				style: i,
				correctHandler: a,
				iconInfo: u
			};
			switch (n) {
			case R.POINT:
				l = new E.
			default((0, o.
			default)(f, {
					position: r.position
				}));
				break;
			case R.POLYGON:
				l = new b.
			default((0, o.
			default)(f, {
					path: r.paths
				}));
				break;
			case R.POLYLINE:
				l = new I.
			default((0, o.
			default)(f, {
					path: r.paths
				}));
				break;
			case R.CIRCLE:
				l = new C.
			default((0, o.
			default)(f, {
					center: r.center,
					radius: r.radius
				}));
				break;
			case R.RECTANGLE:
				l = new A.
			default((0, o.
			default)(f, {
					center: r.center,
					width: r.width,
					height: r.height
				}));
				break;
			case R.ELLIPSE:
				l = new P.
			default((0, o.
			default)(f, {
					center: r.center,
					majorRadius: r.majorRadius,
					minorRadius: r.minorRadius
				}))
			}
			return c.type = n,
			c.shape = l,
			c.geometry = r,
			c.enable(),
			c
		}
		return (0, _.
	default)(e, t),
		(0, g.
	default)(e, [{
			key: "enable",
			value: function() {
				var t = this;
				if (!this.active) {
					var e = this.shape;
					e.setEditable(!0),
					e.on("editing",
					function(e) {
						t.emit("adjusting", {
							position: e,
							geometry: t._getShapeGeometry()
						})
					}),
					e.on("edit_end",
					function() {
						t.emit("adjust", t._getShapeGeometry())
					}),
					this.active = !0
				}
			}
		},
		{
			key: "_getShapeGeometry",
			value: function() {
				var t = this.shape,
				e = this.type,
				n = this.geometry,
				r = {};
				switch (e) {
				case R.POINT:
					r = {
						position: t.getPosition()
					};
					break;
				case R.CIRCLE:
					r = {
						center: t.getCenter(),
						radius: t.getRadius()
					};
					break;
				case R.ELLIPSE:
					r = {
						center: t.getCenter(),
						majorRadius: t.getMajorRadius(),
						minorRadius: t.getMinorRadius()
					};
					break;
				case R.RECTANGLE:
					r = {
						center: t.getCenter(),
						width: t.getWidth(),
						height: t.getHeight()
					}
				}
				return (0, o.
			default)(n, r)
			}
		},
		{
			key: "disable",
			value: function() {
				this.active && (this.shape.setEditable(!1), this.shape.removeAllListeners(), this.active = !1)
			}
		},
		{
			key: "delete",
			value: function() {
				this.shape && this.shape.destroy(),
				this.removeAllListeners()
			}
		}]),
		e
	} (T)
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(4),
	p = r(f),
	d = n(325),
	g = r(d),
	y = n(363),
	v = r(y),
	m = n(361),
	_ = r(m),
	w = n(258),
	b = n(112),
	x = n(501),
	E = r(x),
	M = n(502),
	I = r(M),
	S = TMap,
	C = S.Event,
	N = S.LatLng,
	P = TMap.constants.GEOMETRY_TYPES,
	L = function(t) {
		function e(t) {
			var n = t.map,
			r = t.correctHandler; (0, a.
		default)(this, e);
			var i = (0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).call(this));
			return i.map = n,
			i.correctHandler = r,
			i.type = null,
			i.style = null,
			i.status = "disabled",
			i
		}
		return (0, p.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "enable",
			value: function(t, e) {
				this._isActive() || (this.status = "enabled", this.type = t, this.style = e, this._onKeyDown = this._onKeyDown.bind(this), document.addEventListener("keydown", this._onKeyDown), this._preDraw())
			}
		},
		{
			key: "disable",
			value: function() {
				if (this._isActive()) {
					switch (this.status) {
					case "enabled":
						this.map.off("click", this._onFirstClick);
						break;
					case "drawing":
					default:
						this._abortDraw()
					}
					document.removeEventListener("keydown", this._onKeyDown),
					this.status = "disabled",
					this.type = null,
					this.style = null
				}
			}
		},
		{
			key: "_isActive",
			value: function() {
				return "disabled" !== this.status
			}
		},
		{
			key: "_preDraw",
			value: function() {
				var t = this;
				this._onFirstClick = function(e) {
					t._draw(e)
				},
				this.map.once("click", this._onFirstClick)
			}
		},
		{
			key: "_abortDraw",
			value: function() {
				this.status = "enabled",
				this.emit("abort")
			}
		},
		{
			key: "_endDraw",
			value: function(t) {
				this.status = "enabled",
				this._preDraw(),
				this.emit("draw_complete", t)
			}
		},
		{
			key: "_onKeyDown",
			value: function(t) {
				27 === t.keyCode && "drawing" === this.status && (this._abortDraw(), this._preDraw())
			}
		},
		{
			key: "stop",
			value: function() {
				"drawing" === this.status && (this._abortDraw(), this._preDraw())
			}
		},
		{
			key: "_draw",
			value: function(t) {
				this.status = "drawing";
				var e = this.correctHandler(t.latLng);
				switch (this.type) {
				case P.POINT:
					this._drawMarker(e);
					break;
				case P.CIRCLE:
					this._drawCircle(e);
					break;
				case P.RECTANGLE:
					this._drawRectangle(e);
					break;
				case P.ELLIPSE:
					this._drawEllipse(e);
					break;
				case P.POLYGON:
				case P.POLYLINE:
				default:
					this._drawPoly(e)
				}
			}
		},
		{
			key: "_drawMarker",
			value: function(t) {
				this._endDraw({
					position: t
				})
			}
		},
		{
			key: "_drawPoly",
			value: function(t) {
				var e = this,
				n = this.map,
				r = this.style,
				i = this.type,
				o = this.correctHandler,
				s = [t],
				a = [];
				i === P.POLYLINE ? a.push(new g.
			default({
					map:
					n,
					path: s,
					style: r
				})) : (a.push(new v.
			default({
					map:
					n,
					path: s,
					style: {
						color: r.color,
						borderWidth: 0
					}
				})), r.showBorder && a.push(new g.
			default({
					map:
					n,
					path: s,
					style: {
						color: r.borderColor,
						width: r.borderWidth || 1
					}
				})));
				var u = (0, w.throttle)(function(t) {
					var n = o(t.latLng),
					r = s.concat([n]);
					a.forEach(function(t) {
						t.setPath(r)
					}),
					e.emit("drawing", {
						path: r
					},
					n)
				},
				20),
				c = function(t) {
					s.push(o(t.latLng)),
					a.forEach(function(t) {
						t.setPath(s)
					})
				},
				l = function t(r) {
					n._doubleClickZoom && (n.doubleClickZoom.enable(), n._doubleClickZoom = null),
					n.off("mousemove", u),
					n.off("click", c),
					n.off("dblclick", t),
					e.off("abort", t),
					a.forEach(function(t) {
						t.setMap(null),
						t = null
					}),
					r && (s.pop(), e._endDraw({
						path: s
					}))
				};
				n.doubleClickZoom.isEnabled() && (n._doubleClickZoom = !0, n.doubleClickZoom.disable()),
				n.on("mousemove", u),
				n.on("click", c),
				n.on("dblclick", l),
				this.on("abort", l)
			}
		},
		{
			key: "_drawCircle",
			value: function(t) {
				var e = this,
				n = this.map,
				r = this.style,
				i = this.correctHandler,
				o = t,
				s = new _.
			default({
					map:
					n,
					center: o,
					radius: 0,
					style: {
						color: r.color,
						borderWidth: r.showBorder ? r.borderWidth: 0,
						borderColor: r.borderColor
					}
				}),
				a = (0, w.throttle)(function(t) {
					var r = i(t.latLng),
					a = (0, w.computeMeterDist)(n, o, r);
					s.setRadius(a),
					e.emit("drawing", {
						center: o,
						radius: a
					},
					r)
				},
				20),
				u = function t(r) {
					if (n.off("mousemove", a), n.off("click", t), e.off("abort", t), s.setMap(null), s = null, r) {
						var u = (0, w.computeMeterDist)(n, o, i(r.latLng));
						e._endDraw({
							center: o,
							radius: u
						})
					}
				};
				n.on("mousemove", a),
				n.on("click", u),
				this.on("abort", u)
			}
		},
		{
			key: "genPathByTwoPoints",
			value: function(t, e) {
				var n = Math.min(t.getLat(), e.getLat()),
				r = Math.max(t.getLat(), e.getLat()),
				i = Math.min(t.getLng(), e.getLng()),
				o = Math.max(t.getLng(), e.getLng());
				return [new TMap.LatLng(r, i), new TMap.LatLng(r, o), new TMap.LatLng(n, o), new TMap.LatLng(n, i)]
			}
		},
		{
			key: "calcRectangleFeatureByTwoPoints",
			value: function(t, e) {
				var n = (0, b.latLngToMercator)(t),
				r = (0, b.latLngToMercator)(e);
				return {
					width: Math.abs(n.getX() - r.getX()),
					height: Math.abs(n.getY() - r.getY()),
					center: (0, w.computeMidPoint)(this.map, t, e)
				}
			}
		},
		{
			key: "_drawRectangle",
			value: function(t) {
				var e = this,
				n = this.map,
				r = this.style,
				i = this.correctHandler,
				o = [t],
				s = [],
				a = t;
				s.push(new I.
			default({
					map:
					n,
					center: a,
					width: 1,
					height: 1,
					style: {
						color: r.color,
						borderWidth: 0
					}
				})),
				r.showBorder && s.push(new g.
			default({
					map:
					n,
					path: o,
					style: {
						color: r.borderColor,
						width: r.borderWidth || 1
					}
				}));
				var u = (0, w.throttle)(function(n) {
					var r = i(n.latLng),
					o = e.genPathByTwoPoints(t, r),
					a = e.calcRectangleFeatureByTwoPoints(t, r),
					u = a.center,
					c = a.width,
					l = a.height;
					s.forEach(function(t, e) {
						1 === e ? t.setPath(o.concat([o[0]])) : (t.setCenter(u), t.setWidth(c), t.setHeight(l))
					}),
					e.emit("drawing", {
						center: u,
						width: c,
						height: l
					},
					r)
				},
				20),
				c = function r(o) {
					if (n.off("mousemove", u), n.off("click", r), e.off("abort", r), s.forEach(function(t) {
						t.setMap(null),
						t = null
					}), o) {
						var a = i(o.latLng),
						c = e.calcRectangleFeatureByTwoPoints(t, a),
						l = c.center,
						h = c.width,
						f = c.height;
						e._endDraw({
							center: l,
							width: h,
							height: f
						})
					}
				};
				n.on("mousemove", u),
				n.on("click", c),
				this.on("abort", c)
			}
		},
		{
			key: "_drawEllipse",
			value: function(t) {
				var e = this,
				n = this.map,
				r = this.style,
				i = this.correctHandler,
				o = t,
				s = new E.
			default({
					map:
					n,
					center: o,
					majorRadius: 1,
					minorRadius: 1,
					style: {
						color: r.color,
						borderWidth: r.showBorder ? r.borderWidth: 0,
						borderColor: r.borderColor
					}
				}),
				a = void 0,
				u = (0, w.throttle)(function(t) {
					var r = i(t.latLng);
					if (a) {
						var u = new N(r.getLat(), o.getLng()),
						c = (0, w.computeMeterDist)(n, o, u);
						s.setMinorRadius(c),
						e.emit("drawing", {
							center: o,
							majorRadius: a,
							minorRadius: c
						},
						r)
					} else {
						var l = new N(o.getLat(), r.getLng()),
						h = (0, w.computeMeterDist)(n, o, l);
						s.setMajorRadius(h),
						e.emit("drawing", {
							center: o,
							majorRadius: h,
							minorRadius: 1
						},
						r)
					}
				},
				20),
				c = function t(r) {
					if (a || !r) {
						if (n.off("mousemove", u), n.off("click", t), e.off("abort", t), s.setMap(null), s = null, r) {
							var c = new N(i(r.latLng).getLat(), o.getLng()),
							l = (0, w.computeMeterDist)(n, o, c);
							e._endDraw({
								center: o,
								majorRadius: a,
								minorRadius: l
							})
						}
					} else {
						var h = i(r.latLng),
						f = new N(o.getLat(), h.getLng()),
						p = (0, w.computeMeterDist)(n, o, f);
						s.setMajorRadius(p),
						e.emit("drawing", {
							center: o,
							majorRadius: p,
							minorRadius: 0
						},
						h),
						a = p
					}
				};
				n.on("mousemove", u),
				n.on("click", c),
				this.on("abort", c)
			}
		}]),
		e
	} (C);
	e.
default = L
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(3),
	o = r(i),
	s = n(0),
	a = r(s),
	u = n(1),
	c = r(u),
	l = n(5),
	h = r(l),
	f = n(4),
	p = r(f),
	d = TMap,
	g = d.Event,
	y = function(t) {
		function e() { (0, a.
		default)(this, e);
			var t = (0, h.
		default)(this, (e.__proto__ || (0, o.
		default)(e)).call(this));
			return t._active = !1,
			t._selectedLayerId = null,
			t
		}
		return (0, p.
	default)(e, t),
		(0, c.
	default)(e, [{
			key: "enable",
			value: function(t, e) {
				var n = this;
				this._active || (t.forEach(function(t) {
					t._listener = function(e) {
						e.geometry && n._onClick(t.id, e.geometry)
					},
					t.overlay.on("click", t._listener)
				}), this._listenKeyboard(!0), this.layers = t, this._active = !0, this._selectedLayerId = e)
			}
		},
		{
			key: "disable",
			value: function() {
				this._active && (this.layers.forEach(function(t) {
					t.overlay.off("click", t._listener),
					t._listener = null
				}), this._listenKeyboard(!1), this.layers = [], this._active = !1, this._selectedLayerId = null)
			}
		},
		{
			key: "_onClick",
			value: function(t, e) {
				var n = {
					layerId: t,
					geometry: e
				};
				this._selectedLayerId !== t ? (this._selectedLayerId = t, this.emit("single", n)) : this._ctrlKeyStatus ? this.emit("multiple", n) : this.emit("single", n)
			}
		},
		{
			key: "_clear",
			value: function() {
				this._selectedLayerId = null,
				this.emit("clear")
			}
		},
		{
			key: "_listenKeyboard",
			value: function() {
				arguments.length > 0 && void 0 !== arguments[0] && arguments[0] ? (this._onKeyDown = this._onKeyDown.bind(this), this._onKeyUp = this._onKeyUp.bind(this), document.addEventListener("keydown", this._onKeyDown), document.addEventListener("keyup", this._onKeyUp)) : (document.removeEventListener("keydown", this._onKeyDown), document.removeEventListener("keyup", this._onKeyUp))
			}
		},
		{
			key: "_onKeyDown",
			value: function(t) {
				17 === t.keyCode || 91 === t.keyCode || 93 === t.keyCode ? this._ctrlKeyStatus = !0 : 27 === t.keyCode && this._clear()
			}
		},
		{
			key: "_onKeyUp",
			value: function(t) {
				17 !== t.keyCode && 91 !== t.keyCode && 93 !== t.keyCode || (this._ctrlKeyStatus = !1)
			}
		},
		{
			key: "stop",
			value: function() {
				this._clear()
			}
		}]),
		e
	} (g);
	e.
default = y
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(16),
	o = r(i),
	s = n(3),
	a = r(s),
	u = n(0),
	c = r(u),
	l = n(1),
	h = r(l),
	f = n(5),
	p = r(f),
	d = n(4),
	g = r(d),
	y = n(336),
	v = r(y),
	m = n(258),
	_ = n(325),
	w = r(_),
	b = TMap,
	x = b.Event,
	E = "side",
	M = function(t) {
		function e(t) {
			var n = t.map,
			r = t.coords,
			i = t.closed,
			s = t.style,
			u = t.correctHandler,
			l = t.iconInfo; (0, c.
		default)(this, e);
			var h = (0, p.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this));
			h.map = n,
			h.coords = r,
			h.closed = i,
			h.style = (0, o.
		default)({},
			s, {
				borderWidth: 0,
				dash: [10, 5]
			}),
			h.correctHandler = u,
			h.iconInfo = l;
			var f = [],
			d = [];
			return h.coords.forEach(function(t, e) {
				f.push(h.createEditPoint(t));
				var i = h.getAt(e + 1, r);
				if (i) {
					var o = (0, m.computeMidPoint)(n, t, i);
					d.push(h.createEditPoint(o, E))
				}
			}),
			h.vertexPoints = f,
			h.sidePoints = d,
			h.updatePoints(),
			h
		}
		return (0, g.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "getAt",
			value: function(t, e) {
				var n = this.closed,
				r = this.coords,
				i = r.length;
				switch (t) {
				case - 1 : return n ? e[i - 1] : null;
				case i:
					return n ? e[0] : null;
				default:
					return e[t]
				}
			}
		},
		{
			key: "destroy",
			value: function() {
				this.onEditEnd(),
				this.vertexPoints.forEach(function(t) {
					return t.destroy()
				}),
				this.sidePoints.forEach(function(t) {
					return t.destroy()
				}),
				this.removeAllListeners()
			}
		},
		{
			key: "updatePoints",
			value: function() {
				this.vertexPoints.forEach(function(t, e) {
					t.index = e,
					t.type = "vertex"
				}),
				this.sidePoints.forEach(function(t, e) {
					t.index = e,
					t.type = E
				})
			}
		},
		{
			key: "createEditPoint",
			value: function(t) {
				var e = this,
				n = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : "vertex",
				r = n === E ? this.iconInfo.virtual: this.iconInfo.actual,
				i = new v.
			default({
					map:
					this.map,
					position: t,
					light: n === E,
					correctHandler: this.correctHandler,
					iconStyle: r
				});
				return i.on("edit_start",
				function() {
					e.onEditStart(i)
				}),
				i.on("editing", this.onEditing.bind(this)),
				i.on("edit_end", this.onEditEnd.bind(this)),
				"vertex" === n && i.on("dblclick",
				function() {
					e.onDblClick(i)
				}),
				i
			}
		},
		{
			key: "onEditStart",
			value: function(t) {
				var e = this.map,
				n = this.style,
				r = this.coords,
				i = this.sidePoints,
				o = [],
				s = {
					map: e,
					style: n
				},
				a = t.getPosition(),
				u = t.index,
				c = "vertex" === t.type ? u - 1 : u,
				l = this.getAt(c, r);
				l && (s.path = [a, l], o.push(new w.
			default(s)));
				var h = this.getAt(u + 1, r);
				if (h && (s.path = [a, h], o.push(new w.
			default(s))), "vertex" === t.type) {
					var f = this.getAt(u - 1, i);
					f && f.setMap(null);
					var p = this.getAt(u, i);
					p && p.setMap(null)
				}
				this.editingInfo = {
					point: t,
					lines: o,
					preCoord: l,
					nextCoord: h
				}
			}
		},
		{
			key: "onEditing",
			value: function() {
				var t = this.editingInfo,
				e = t.point;
				t.lines.forEach(function(t) {
					var n = t.getPath();
					n[0] = e.getPosition(),
					t.setPath(n)
				}),
				this.emit("editing", e.getPosition())
			}
		},
		{
			key: "onEditEnd",
			value: function() {
				if (this.editingInfo) {
					var t = this.map,
					e = this.coords,
					n = this.vertexPoints,
					r = this.sidePoints,
					i = this.editingInfo,
					o = i.point,
					s = i.lines,
					a = i.preCoord,
					u = i.nextCoord,
					c = o.getPosition(),
					l = o.index;
					if ("vertex" === o.type) {
						e[l] = c;
						var h = this.getAt(l - 1, r);
						if (h) {
							var f = (0, m.computeMidPoint)(t, a, c);
							h.setPosition(f).setMap(t)
						}
						var p = this.getAt(l, r);
						if (p) {
							var d = (0, m.computeMidPoint)(t, u, c);
							p.setPosition(d).setMap(t)
						}
					} else {
						e.splice(l + 1, 0, c),
						o.setPosition((0, m.computeMidPoint)(t, a, c));
						var g = this.createEditPoint(c),
						y = this.createEditPoint((0, m.computeMidPoint)(t, c, u), E);
						n.splice(l + 1, 0, g),
						r.splice(l + 1, 0, y),
						this.updatePoints()
					}
					s.forEach(function(t) {
						t.destroy()
					}),
					this.editingInfo = null,
					this.emit("edit_end")
				}
			}
		},
		{
			key: "onDblClick",
			value: function(t) {
				var e = this.map,
				n = this.coords,
				r = this.vertexPoints,
				i = this.sidePoints,
				o = t.index;
				n.splice(o, 1),
				r.splice(o, 1),
				t.destroy();
				var s = i.splice(o, 1)[0];
				s && s.destroy();
				var a = this.getAt(o - 1, n),
				u = this.getAt(o, n),
				c = this.getAt(o - 1, i);
				a && u ? c.setPosition((0, m.computeMidPoint)(e, a, u)) : c && (c.destroy(), i.splice(o - 1, 1)),
				this.updatePoints(),
				this.emit("edit_end")
			}
		}]),
		e
	} (x);
	e.
default = M
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t, e) {
		if (!t) throw new Error("line is required");
		if (!e) throw new Error("splitter is required");
		var n = (0, x.getType)(t),
		r = (0, x.getType)(e);
		if ("LineString" !== n) throw new Error("line must be LineString");
		if ("FeatureCollection" === r) throw new Error("splitter cannot be a FeatureCollection");
		if ("GeometryCollection" === r) throw new Error("splitter cannot be a GeometryCollection");
		var i = (0, g.
	default)(e, {
			precision: 7
		});
		switch (r) {
		case "Point":
			return s(t, i);
		case "MultiPoint":
			return o(t, i);
		case "LineString":
		case "MultiLineString":
		case "Polygon":
		case "MultiPolygon":
			return o(t, (0, _.
		default)(t, i))
		}
	}
	function o(t, e) {
		var n = [],
		r = (0, h.
	default)();
		return (0, E.flattenEach)(e,
		function(e) {
			if (n.forEach(function(t, e) {
				t.id = e
			}), n.length) {
				var i = r.search(e);
				if (i.features.length) {
					var o = a(e, i);
					n = n.filter(function(t) {
						return t.id !== o.id
					}),
					r.remove(o),
					(0, E.featureEach)(s(o, e),
					function(t) {
						n.push(t),
						r.insert(t)
					})
				}
			} else n = s(t, e).features,
			n.forEach(function(t) {
				t.bbox || (t.bbox = c((0, p.
			default)(t)))
			}),
			r.load((0, M.featureCollection)(n))
		}),
		(0, M.featureCollection)(n)
	}
	function s(t, e) {
		var n = [],
		r = (0, x.getCoords)(t)[0],
		i = (0, x.getCoords)(t)[t.geometry.coordinates.length - 1];
		if (u(r, (0, x.getCoord)(e)) || u(i, (0, x.getCoord)(e))) return (0, M.featureCollection)([t]);
		var o = (0, h.
	default)(),
		s = (0, v.
	default)(t);
		o.load(s);
		var c = o.search(e);
		if (!c.features.length) return (0, M.featureCollection)([t]);
		var l = a(e, c),
		f = [r],
		p = (0, E.featureReduce)(s,
		function(t, r, i) {
			var o = (0, x.getCoords)(r)[1],
			s = (0, x.getCoord)(e);
			return i === l.id ? (t.push(s), n.push((0, M.lineString)(t)), u(s, o) ? [s] : [s, o]) : (t.push(o), t)
		},
		f);
		return p.length > 1 && n.push((0, M.lineString)(p)),
		(0, M.featureCollection)(n)
	}
	function a(t, e) {
		if (!e.features.length) throw new Error("lines must contain features");
		if (1 === e.features.length) return e.features[0];
		var n = void 0,
		r = 1 / 0;
		return (0, E.featureEach)(e,
		function(e) {
			var i = (0, b.
		default)(e, t),
			o = i.properties.dist;
			o < r && (n = e, r = o)
		}),
		n
	}
	function u(t, e) {
		return t[0] === e[0] && t[1] === e[1]
	}
	function c(t) {
		var e = t[0],
		n = t[1],
		r = t[2],
		i = t[3],
		o = r - e,
		s = i - n;
		if (o >= s) {
			var a = (n + i) / 2;
			return [e, a - s / 2, r, a + s / 2]
		}
		var u = (e + r) / 2;
		return [u - o / 2, n, u + o / 2, i]
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var l = n(357),
	h = r(l),
	f = n(365),
	p = r(f),
	d = n(373),
	g = r(d),
	y = n(329),
	v = r(y),
	m = n(328),
	_ = r(m),
	w = n(615),
	b = r(w),
	x = n(109),
	E = n(121),
	M = n(48);
	e.
default = i
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = l(t),
		r = p([n[0]]),
		s = o(t),
		a = d(n[0]),
		u = h(e, {
			precision: 7
		}),
		y = g(a, u);
		if (y.features.length < 2) return null;
		y.features = i(a, y.features);
		var E = b(y).features[0],
		M = (0, c.
	default)(a, E),
		I = (0, c.
	default)(u, E),
		S = f(M.features.concat(I.features)),
		C = v(S),
		N = C.features.filter(function(t) {
			var e = m(t);
			return ! w(e, t) || w(e, r)
		}),
		P = N.map(function(t) {
			var e = t;
			return x(s,
			function(t) {
				e = _(e, t)
			}),
			e
		});
		return f(P)
	}
	function i(t, e) {
		var n = y(t),
		r = e.map(function(t) {
			var e = null,
			r = null;
			return n.features.some(function(n, i) {
				var o = n.geometry.coordinates[0],
				s = n.geometry.coordinates[1],
				a = s[0] - o[0],
				u = s[1] - o[1],
				c = t.geometry.coordinates,
				l = c[0] - o[0],
				h = c[1] - o[1];
				if (a * h - l * u <= .001) return e = i,
				r = Math.pow(l, 2) + Math.pow(h, 2),
				!0
			}),
			{
				point: t,
				idx: e,
				disSq: r
			}
		});
		return r.sort(function(t, e) {
			return t.idx === e.idx ? t.disSq - e.disSq: t.idx - e.idx
		}),
		r.map(function(t) {
			return t.point
		})
	}
	function o(t) {
		var e = [],
		n = l(t);
		return n.slice(1, n.length).forEach(function(t) {
			e.push(p([t]))
		}),
		f(e)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = r;
	var s = n(374),
	a = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (s),
	u = n(717),
	c = function(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	} (u),
	l = a.getCoords,
	h = a.truncate,
	f = a.featureCollection,
	p = a.polygon,
	d = a.lineString,
	g = a.lineIntersect,
	y = a.lineSegment,
	v = a.polygonize,
	m = a.centroid,
	_ = a.difference,
	w = a.booleanWithin,
	b = a.combine,
	x = a.featureEach
},
function(t, e, n) {
	"use strict";
	function r(t, e) {
		var n = v(t),
		r = v(e),
		o = m(t);
		return i(n, m(e)),
		i(r, o),
		y(t, e)
	}
	function i(t, e) {
		if ("MultiLineString" === g(t)) f(o(t),
		function(t) {
			i(t, e)
		});
		else {
			var n = d(t);
			f(e,
			function(e) {
				var r = s(e, t, {
					ignoreVertices: !0
				});
				r.bool && n.splice(r.index + 1, 0, p(e))
			})
		}
	}
	function o(t) {
		var e = [];
		return d(t).forEach(function(t) {
			e.push(h(t))
		}),
		l(e)
	}
	function s(t, e) {
		for (var n = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {},
		r = p(t), i = d(e), o = 0; o < i.length - 1; o++) if (a({
			start: i[o],
			end: i[o + 1],
			pt: r,
			precision: 5,
			ignoreVertices: n.ignoreVertices
		})) return {
			bool: !0,
			index: o
		};
		return {
			bool: !1
		}
	}
	function a(t) {
		var e = t.start,
		n = t.end,
		r = t.pt,
		i = t.precision,
		o = t.ignoreVertices,
		s = r[0],
		a = r[1],
		u = e[0],
		c = e[1],
		l = n[0],
		h = n[1],
		f = s - u,
		p = a - c,
		d = l - u,
		g = h - c;
		return ! (Math.abs(f * g - p * d) > i) && (o ? Math.abs(d) >= Math.abs(g) ? d > 0 ? u < s && s < l: l < s && s < u: g > 0 ? c < a && a < h: h < a && a < c: Math.abs(d) >= Math.abs(g) ? d > 0 ? u <= s && s <= l: l <= s && s <= u: g > 0 ? c <= a && a <= h: h <= a && a <= c)
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	}),
	e.
default = r;
	var u = n(374),
	c = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (u),
	l = c.featureCollection,
	h = c.lineString,
	f = c.featureEach,
	p = c.getCoord,
	d = c.getCoords,
	g = c.getType,
	y = c.union,
	v = c.polygonToLine,
	m = c.explode
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	var i = n(56),
	o = r(i),
	s = n(578),
	a = r(s),
	u = n(461),
	c = function(t) {
		if (t && t.__esModule) return t;
		var e = {};
		if (null != t) for (var n in t) Object.prototype.hasOwnProperty.call(t, n) && (e[n] = t[n]);
		return e.
	default = t,
		e
	} (u),
	l = n(325),
	h = r(l),
	f = n(363),
	p = r(f),
	d = n(361),
	g = r(d),
	y = n(362),
	v = r(y),
	m = n(579),
	_ = r(m);
	window.TMap || (window.TMap = window[o.
default] || {});
	var w = {
		GeometryEditor: a.
	default,
		Polyline: h.
	default,
		Polygon: p.
	default,
		Circle: g.
	default,
		Image: v.
	default,
		constants: c,
		MeasureTool: _.
	default
	};
	window.TMap.tools = w
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	function i(t) {
		var e = O.find(function(e) {
			return e.max > t * (e.snap || 1)
		}),
		n = e.base,
		r = e.unit,
		i = e.decimal;
		return {
			value: (0, M.round)(t / n, i || 0),
			unit: r
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var o = n(25),
	s = r(o),
	a = n(3),
	u = r(a),
	c = n(0),
	l = r(c),
	h = n(1),
	f = r(h),
	p = n(5),
	d = r(p),
	g = n(4),
	y = r(g),
	v = n(241),
	m = r(v),
	_ = n(358),
	w = r(_),
	b = n(359),
	x = r(b),
	E = n(28),
	M = n(10),
	I = n(503),
	S = r(I),
	C = TMap,
	N = C.Event,
	P = 0,
	L = new m.
default,
	A = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, l.
		default)(this, e);
			var n = (0, d.
		default)(this, (e.__proto__ || (0, u.
		default)(e)).call(this, t));
			return n.onInit(t.measureTool),
			n
		}
		return (0, y.
	default)(e, t),
		(0, f.
	default)(e, [{
			key: "measureArea",
			value: function() {
				var t = this;
				return new s.
			default(function(e, n) {
					t._areaResolveFun = e,
					t._areaRejectFun = n,
					t._measureArea = {
						id: "MeasureTool_polygon_" + P,
						styleId: "measure",
						paths: [],
						properties: {}
					},
					P += 1,
					t._measureAreaTips = [],
					L.add(t._measureAreaTips)
				})
			}
		},
		{
			key: "_updateGeometries",
			value: function(t, e) {
				t.length >= 3 ? (3 === t.length && this._polylineLayer.remove([this._measureArea.id]), this._polygonLayer.updateGeometries([this._measureArea])) : e ? (this._polylineLayer.remove([this._measureArea.id]), this._polygonLayer.remove([this._measureArea.id])) : 2 === t.length && this._polylineLayer.updateGeometries([this._measureArea])
			}
		},
		{
			key: "_computeArea",
			value: function(t) {
				return t.length < 3 ? 0 : (0, w.
			default)(t.slice())
			}
		},
		{
			key: "_computeCenter",
			value: function(t) {
				if (t.length >= 3) return (0, x.
			default)(t.slice());
				var e = new TMap.LatLng(0, 0);
				return t.forEach(function(t) {
					e.lat += t.lat,
					e.lng += t.lng
				}),
				e.lat /= t.length,
				e.lng /= t.length,
				e
			}
		},
		{
			key: "_onMapClick",
			value: function(t) {
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					var e = this._measureArea.paths;
					null === this._mapDoubleClickZoomState && (this._mapDoubleClickZoomState = this.map.getDoubleClickZoom()),
					this.map.setDoubleClickZoom(!1),
					e.length > 1 && e.pop(),
					e.push(t.latLng),
					this._updateGeometries(e),
					this._isClicked = !0
				}
			}
		},
		{
			key: "_onMapMouseMove",
			value: function(t) {
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					var e = this._measureArea.paths;
					0 !== e.length && (e.length > 1 && !this._isClicked && e.pop(), e.push(t.latLng), e.length >= 3 && (this._measureAreaTips.length > 0 && this._measureAreaTips.pop().destroy(), this._measureAreaTips.push(this._createTipOverlay({
						area: this._computeArea(e),
						position: this._computeCenter(e),
						isArea: !0
					}))), this._updateGeometries(e), this._isClicked = !1, this._isMousemoving = !0)
				}
			}
		},
		{
			key: "_onMapDblClick",
			value: function() {
				var t = this;
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					if (this._measureArea.paths.length < 3) return this._measureArea.paths.splice(0),
					this._measureAreaTips.forEach(function(t) {
						return t.destroy()
					}),
					L.delete(this._measureAreaTips),
					this._updateGeometries(this._measureArea.paths, !0),
					this._isMousemoving = !1,
					this._isClicked = !1,
					this._measureArea = null,
					this._measureAreaTips = [],
					this._areaRejectFun && this._areaRejectFun(new Error("测量面积失败：顶点数量不足3个。")),
					void(this.measureTool._currentMeasurement = null);
					this.map.setDoubleClickZoom(this._mapDoubleClickZoomState),
					this._mapDoubleClickZoomState = null,
					this._isMousemoving = !1,
					this._isClicked = !1;
					var e = this._measureArea,
					n = this._measureAreaTips;
					this._measureArea = null,
					this._measureAreaTips = [],
					L.add(this._measureAreaTips);
					var r = this._computeArea(e.paths),
					i = this._computeCenter(e.paths),
					o = {
						polygon: e.paths,
						area: (0, M.round)(r, 1),
						remove: function() {
							e && (n.forEach(function(t) {
								return t.destroy()
							}), L.delete(n), t._polygonLayer.remove(e.id), t._polylineLayer.remove(e.id), e = null)
						}
					},
					s = this._createTipOverlay({
						enableClick: !0,
						area: r,
						position: i,
						isArea: !0
					});
					s.on("remove",
					function() {
						return o.remove()
					}),
					n.length > 0 && n.pop().destroy(),
					n.push(s),
					this._areaResolveFun && this._areaResolveFun(o)
				}
			}
		},
		{
			key: "_createTipOverlay",
			value: function(t) {
				var e = t.area,
				n = i(e),
				r = n.value,
				o = n.unit,
				s = new S.
			default({
					position:
					t.position,
					instance: {
						isArea: t.isArea,
						area: r,
						unit: o
					},
					map: this.map
				});
				return t.enableClick || s.disablePointerEvents(),
				s
			}
		},
		{
			key: "onInit",
			value: function(t) {
				this.measureTool = t,
				this._onMapClick = this._onMapClick.bind(this),
				this._onMapMouseMove = (0, E.throttle)(this._onMapMouseMove.bind(this), 25),
				this._onMapDblClick = this._onMapDblClick.bind(this),
				this._polygonLayer = new TMap.MultiPolygon({
					map: this.map || null,
					styles: {
						measure: new TMap.PolygonStyle({
							color: "rgba(55,119,255,0.16)"
						})
					},
					zIndex: 1
				}),
				this._polylineLayer = new TMap.MultiPolyline({
					map: this.map || null,
					styles: {
						measure: new TMap.PolylineStyle({
							color: "#3875ff",
							width: 3,
							borderWidth: 0,
							dashArray: [10, 4],
							lineCap: "butt"
						})
					},
					zIndex: 1
				}),
				this._isClicked = !1,
				this._isMousemoving = !1,
				this._measureArea = null,
				this._areaResolveFun = null,
				this._areaRejectFun = null,
				this._mapDoubleClickZoomState = null
			}
		},
		{
			key: "addToMap",
			value: function(t) {
				this.map = t,
				this.map && (this.map.on("click", this._onMapClick), this.map.on("mousemove", this._onMapMouseMove), this.map.on("dblclick", this._onMapDblClick)),
				this._polygonLayer.setMap(this.map),
				this._polylineLayer.setMap(this.map)
			}
		},
		{
			key: "removeFromMap",
			value: function() {
				this.map && (this.map.off("click", this._onMapClick), this.map.off("mousemove", this._onMapMouseMove), this.map.off("dblclick", this._onMapDblClick), this._onMapDblClick(), L.forEach(function(t) {
					return t.forEach(function(t) {
						return t.destroy()
					})
				}), L.clear(), this._polygonLayer.setGeometries([]), this._polygonLayer.setMap(null), this._polylineLayer.setGeometries([]), this._polylineLayer.setMap(null)),
				this.map = null
			}
		},
		{
			key: "abort",
			value: function() {
				if (this.measureTool.currentMeasurement() === this) {
					var t = this._measureArea.paths; ! this._isClicked && t.length > 0 && (t.pop(), this._updateGeometries(this._measureArea.paths, !0), this._onMapDblClick(t))
				}
			}
		}]),
		e
	} (N);
	e.
default = A;
	var O = [{
		base: 1,
		max: 1e6,
		unit: "平方米",
		snap: 10,
		decimal: 1
	},
	{
		base: 1e6,
		max: 1e10,
		unit: "平方公里",
		snap: 1,
		decimal: 2
	},
	{
		base: 1e10,
		max: 1 / 0,
		unit: "万平方公里",
		snap: 10,
		decimal: 2
	}]
},
function(t, e, n) {
	"use strict";
	function r(t) {
		return t && t.__esModule ? t: {
		default:
			t
		}
	}
	Object.defineProperty(e, "__esModule", {
		value: !0
	});
	var i = n(25),
	o = r(i),
	s = n(3),
	a = r(s),
	u = n(0),
	c = r(u),
	l = n(1),
	h = r(l),
	f = n(5),
	p = r(f),
	d = n(4),
	g = r(d),
	y = n(241),
	v = r(y),
	m = n(388),
	_ = r(m),
	w = n(28),
	b = n(10),
	x = n(503),
	E = r(x),
	M = TMap,
	I = M.Event,
	S = 0,
	C = new v.
default,
	N = function(t) {
		function e() {
			var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}; (0, c.
		default)(this, e);
			var n = (0, p.
		default)(this, (e.__proto__ || (0, a.
		default)(e)).call(this, t));
			return n.onInit(t.measureTool),
			n
		}
		return (0, g.
	default)(e, t),
		(0, h.
	default)(e, [{
			key: "measureDistance",
			value: function() {
				var t = this;
				return new o.
			default(function(e, n) {
					t._distanceResolveFun = e,
					t._distanceRejectFun = n,
					t._measureLine = {
						id: "MeasureTool_polyline_" + S,
						styleId: "measure",
						paths: [],
						properties: {
							segmentDistanceList: []
						}
					},
					S += 1,
					t._measureLineTips = [],
					C.add(t._measureLineTips)
				})
			}
		},
		{
			key: "_updateGeometries",
			value: function(t) {
				this._measureLine.paths.length >= 2 ? this._polylineLayer.updateGeometries([this._measureLine]) : t && this._polylineLayer.remove([this._measureLine.id])
			}
		},
		{
			key: "_computeDistanceBetween",
			value: function(t, e) {
				return t && e ? (0, _.
			default)(t, e) : 0
			}
		},
		{
			key: "_onMapClick",
			value: function(t) {
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					var e = this._measureLine.paths;
					null === this._mapDoubleClickZoomState && (this._mapDoubleClickZoomState = this.map.getDoubleClickZoom()),
					this.map.setDoubleClickZoom(!1);
					var n = this._measureLine.properties.segmentDistanceList;
					if (e.length > 1 && (e.pop(), n.pop(), this._measureLineTips.pop().destroy()), e.push(t.latLng), e.length > 1) {
						var r = this._computeDistanceBetween(e[e.length - 2], e[e.length - 1]);
						n.push((0, b.round)(r, 1)),
						this._measureLineTips.push(this._createTipOverlay({
							distance: r,
							position: t.latLng,
							isInterim: !0
						})),
						this._updateGeometries()
					} else 1 === e.length && this._measureLineTips.push(this._createTipOverlay({
						distance: null,
						position: e[e.length - 1],
						isStart: !0
					}));
					this._isClicked = !0
				}
			}
		},
		{
			key: "_onMapMouseMove",
			value: function(t) {
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					var e = this._measureLine.paths,
					n = this._measureLine.properties.segmentDistanceList;
					if (0 !== e.length) {
						if (e.length > 1 && !this._isClicked && (e.pop(), n.pop(), this._measureLineTips.pop().destroy()), e.push(t.latLng), e.length > 1) {
							var r = this._computeDistanceBetween(e[e.length - 2], e[e.length - 1]);
							n.push((0, b.round)(r, 1)),
							this._measureLineTips.push(this._createTipOverlay({
								distance: n.reduce(function(t, e) {
									return t + e
								},
								0),
								position: t.latLng,
								isEnd: !0
							})),
							this._updateGeometries()
						}
						this._isClicked = !1,
						this._isMousemoving = !0
					}
				}
			}
		},
		{
			key: "_onMapDblClick",
			value: function() {
				var t = this;
				if (this.measureTool.isActive() && this.measureTool.currentMeasurement() === this) {
					if (this._measureLine.paths.length < 2) return this._measureLine.paths.pop(),
					this._measureLine.properties.segmentDistanceList.pop(),
					this._measureLineTips.pop().destroy(),
					this._updateGeometries(!0),
					void(this._distanceRejectFun && this._distanceRejectFun(new Error("测量距离失败：顶点数量不足2个。")));
					this.map.setDoubleClickZoom(this._mapDoubleClickZoomState),
					this._mapDoubleClickZoomState = null,
					this._isMousemoving = !1,
					this._isClicked = !1;
					var e = this._measureLine,
					n = this._measureLineTips;
					this._measureLine = null,
					this._measureLineTips = [],
					C.add(this._measureLineTips);
					var r = e.properties.segmentDistanceList,
					i = e.properties.segmentDistanceList.reduce(function(t, e) {
						return t + e
					},
					0),
					o = {
						path: e.paths,
						totalDistance: (0, b.round)(i, 1),
						segmentDistanceList: r,
						remove: function() {
							e && (n.forEach(function(t) {
								return t.destroy()
							}), C.delete(n), t._polylineLayer.remove(e.id), e = null)
						}
					},
					s = this._createTipOverlay({
						enableClick: !0,
						distance: i,
						position: e.paths[e.paths.length - 1],
						isEnd: !0
					});
					s.on("remove",
					function() {
						return o.remove()
					}),
					n.pop().destroy(),
					n.push(s),
					this._distanceResolveFun && this._distanceResolveFun(o)
				}
			}
		},
		{
			key: "_createTipOverlay",
			value: function(t) {
				var e = t.distance,
				n = new E.
			default({
					position:
					t.position,
					instance: {
						isStart: t.isStart,
						isInterim: t.isInterim,
						isEnd: t.isEnd,
						distance: e > 1e3 ? (0, b.round)(e / 1e3, 1) : (0, b.round)(e, 1),
						unit: e > 1e3 ? "公里": "米"
					},
					map: this.map
				});
				return t.enableClick || n.disablePointerEvents(),
				n
			}
		},
		{
			key: "onInit",
			value: function(t) {
				this.measureTool = t,
				this._onMapClick = this._onMapClick.bind(this),
				this._onMapMouseMove = (0, w.throttle)(this._onMapMouseMove.bind(this), 25),
				this._onMapDblClick = this._onMapDblClick.bind(this),
				this._polylineLayer = new TMap.MultiPolyline({
					map: this.map || null,
					styles: {
						measure: new TMap.PolylineStyle({
							color: "#3875ff",
							width: 3,
							borderWidth: 0,
							dashArray: [10, 4],
							lineCap: "butt"
						})
					},
					zIndex: 1
				}),
				this._isClicked = !1,
				this._isMousemoving = !1,
				this._measureLine = null,
				this._distanceResolveFun = null,
				this._distanceRejectFun = null,
				this._mapDoubleClickZoomState = null
			}
		},
		{
			key: "addToMap",
			value: function(t) {
				this.map = t,
				this.map && (this.map.on("click", this._onMapClick), this.map.on("mousemove", this._onMapMouseMove), this.map.on("dblclick", this._onMapDblClick)),
				this._polylineLayer.setMap(this.map)
			}
		},
		{
			key: "removeFromMap",
			value: function() {
				this.map && (this.map.off("click", this._onMapClick), this.map.off("mousemove", this._onMapMouseMove), this.map.off("dblclick", this._onMapDblClick), this._onMapDblClick(), C.forEach(function(t) {
					return t.forEach(function(t) {
						return t.destroy()
					})
				}), C.clear(), this._polylineLayer.setGeometries([]), this._polylineLayer.setMap(null)),
				this.map = null
			}
		},
		{
			key: "abort",
			value: function() {
				this.measureTool.currentMeasurement() === this && !this._isClicked && this._measureLine.paths.length > 0 && (this._measureLine.paths.pop(), this._measureLine.properties.segmentDistanceList.pop(), this._measureLineTips.pop().destroy(), this._updateGeometries(this._measureLine.paths, !0), this._onMapDblClick())
			}
		}]),
		e
	} (I);
	e.
default = N
},
, , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , ,
function(t, e, n) {
	e = t.exports = n(273)(),
	e.push([t.i, '.measure-tool-tip{position:absolute;background:#fff;border:2px solid #3875ff;box-sizing:border-box;width:8px;height:8px;border-radius:8px;color:#000;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.measure-tool-tip .tip-node{position:absolute;padding:0 6px;top:-8px;left:14px;text-align:center;font-size:12px;line-height:20px;background:#fff;box-shadow:0 2px 8px 0 rgba(0,0,0,.3);border-radius:3px;white-space:nowrap}.measure-tool-tip .tip-end .tip-close{position:absolute;left:12px;top:-15px;width:20px;height:20px;background-color:rgba(0,0,0,.3);border-radius:3px}.measure-tool-tip .tip-end .tip-close:before{transform:rotate(45deg)}.measure-tool-tip .tip-end .tip-close:after,.measure-tool-tip .tip-end .tip-close:before{content:"";width:15px;height:2px;position:absolute;top:0;left:0;right:0;bottom:0;margin:auto;background-color:#fff}.measure-tool-tip .tip-end .tip-close:after{transform:rotate(-45deg)}.measure-tool-tip .tip-end .tip-node{line-height:28px;font-size:14px;left:0;top:9px}.measure-tool-tip .tip-end .tip-node .tip-total{color:#3875ff}', ""])
},
, , , , , , , , , , , , , , , , , ,
function(t, e) {
	t.exports = '<div class="measure-tool-tip">\t<% if (obj.isEnd) {%>\t\t<div class="tip-end">\t\t\t<div class="tip-close"></div>\t\t\t<div class="tip-node">总长：<span class="tip-total"><%= obj.distance %></span><%= obj.unit %></div>\t\t</div>\t<% } else if (obj.isStart) {%>\t\t<div class="tip-node">起点</div>\t<% } else if (obj.isInterim) {%>\t\t<div class="tip-node">\t\t\t<%= obj.distance %><%= obj.unit %>\t\t</div>\t<% } else if (obj.isArea) {%>\t\t<div class="tip-end">\t\t\t<div class="tip-close"></div>\t\t\t<div class="tip-node">面积：<span class="tip-total"><%= obj.area %></span><%= obj.unit %></div>\t\t</div>\t<% } %></div>  '
},
, , ,
function(t, e, n) {
	var r = n(1010);
	"string" == typeof r && (r = [[t.i, r, ""]]);
	n(275)(r, {});
	r.locals && (t.exports = r.locals)
},
, , , , , , , , , , ,
function(t, e) {
	t.exports = "data:image/png;base64, "
},
function(t, e) {
	t.exports = "data:image/png;base64, "
},
function(t, e) {
	t.exports = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEQAAABkCAMAAAAIYWa2AAAC8VBMVEVHcEwAAAAAAAAAAAAAAAAzMzPQRUXlSUnnS0vqS0vrTEzhSEgAAADFRUXmS0vtTk7xTU3yTk7yTk6vPz/oTEzvTk7yTk7MRETrS0vyT0/FQUHFPj7uTU3yTk7sTExVKiroS0vyTk5IJCS4QEDuTU3SRETxTU0AAADhSkreSUkAAADoSkryTk7pSkoAAADoTEzmTEziSUndSEjMRETDQUFtJCTwTU3vTExfHx/mSUkAAADFPz/yTk68PDztTEwAAADMRUXBQUHsTEzqTEyzPj7yTk6lOTnjSUnfSEjuTk7yUVH2iYn6wMD95OT+9vYAAADBPT32hob95ub///+2OTkAAADfSUnyT0/5ra3aR0cAAADqS0vwTU3vTU0AAABmKChbJCTBPT24OjrQQkIAAADXRUXRQ0PVRUUAAADcR0fYRkYAAADXRETQQkLNRETIQkLDQUG9Pj6qNzegNTUhCwvxTk4cCQkAAADrTEwAAAAAAADkSkriSEgAAADLQUFnIiLyTk5gHx/oS0vnSkoAAAAAAADOQ0NLHh7wTk4/FRXaRkbXRUVuJSXxTU1vKCgAAADfSEjZRkYAAADwTU3vTU1XHBzSRETIQEAmDw/rTEzoSkoIBQWhNDSMLS3NQkIAAAAAAAAlDw/oSkrnSkqBKyvwTU3vTU1lISG5PT2qODgAAADURUXKQkIBAQHjSUncRkYAAAAAAAA1FBTkSkoYCgpjISHsS0s/FxcAAABtJSXsTU3pS0tTGhp0JibsTExYHR1bHBzsTExpIyOVMzPuTU19KyujNjbxTk7uTU2MLS2xOTnxTk6bMTHCPj60OTniSEjcR0fuTU07FxefNDTbR0fTRUXpS0uiNDThSEiDKyvXRkZ6JyfhSUmSLi7pS0vIQUFQGBjmSkrGQUGCKSntTEzrTEzdSEjbR0edMzOYMTHZR0eTLy8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA6Ei6pAAAA+3RSTlMAAQIDBAUhRVhlcUYFFlSTzvX/EGC6/B6P8h8YmPiZBmvtBxe7MNwGVlcHhf6PCHx8WlwtLw7T1BCDCSz3LrQLNzqwsSX9KICC2///////DjL///81CnP//3UMtOPkERkcPkFcDWdqdg98fhBvcmFjUlY8Phf4GxTRFxKlqBZsJfopwMIaE3ci7iSRky/5MhimnBvy7C2DeiHVzSBIQoceFSLQxTvw6zVnWx2Qgh+3qSEZJsAkMtssHDbh1jE73zQ14jpL6UFU9e9IXfRScma0p+crU56T0k2vOpQ0rULLdCm4cTHY1JeWPD6aQC42PDkwKCsvMjQsKSUnKiijw/sAAAUASURBVHgB1M8DcoRBEIbhNNbutW3EtnP/E2V/rDUzKeUpo9/q7+gfATA/tSAiORARpjQLiMTs8fr8gWAw4A95PWEmO6SRII5EY/GEzCXisWgkzIodu5BMpTOyIZNOJZmsjEIim8vLDvlcIXwgYw3hYqkse5QrRTuz741qrS4H1GsN3lmx3mimRUGrGabtkwAo3O6Ikk67u3USIIV7eVGU7w82JwEgdYcjUTYablasRk60jCdrFQDqHoumk3ll3jgVbWfWokUDw+d50Za/GND8FUC+vBID1zddt2KNGdyKkdu7MLoR7N4/iJGHR3cQIN89iaGnZ+cVoO7LSAyNXicMYD/yJsben7sI1iMfn2Ls82vC0wjffcsf/DyH8ZdUskbLIIyBcJCSag+BQ4+36+7uisv58d+T6pt23ic6sH1wJ5CEKMmKqiqyJJKIoB3vwM6xTgKGaf3LNEjIdnZh99IlXM+3luR7BBaEB7B3FxGub63IJ7BIO4ZjLSZ2sdZEbJSkl3Ce4UkTzfUipojnLXfgssAbSNaGJJwsQ3Aq3JI3i8g4WdVw1+CWsllEwclWgzDALXWziIqTXQ/1wFpknKC+Z13n4bvII+thn1Kon1lf/DJB/cqxhY17myB8v2aL/cdXKWYNHLcWheGlcmt3r32URP2E1FeqQoatDJrRpI0sJTIzyTEzoxIzY9gMYWY0M1fRXWXOsizdvf18c/6Dv3SNNpBspH8DGMlRhgv8df9WwQ0h1HDaFuXfUopiSQNBR8f4sx5jYvkLhn9ChTh/FnV8AkPImy0xyR9IEidvNstpJjkFn5GSypJWeduHCmn4kPQE5rTFYJL1ZGTiMjKzhFD57hgtBC1m40Ju5vAXrCbkTgLZjFw8Rl4+RxFm+RbLoTBiAR6kMIdXDIo9lKJiHEZJqYACsUPkrHBlMRhmqzzBdsEeCKJYST4nXT+korIqVPFsinsMraqu0cuoLRWZ02CHkeNixLp6fYyGxhweeS2jw5XLgpp02b+AZskhBgSx0i09kNstHA1i0FMqJLS0ame0tXfYKwMQ5RPhAiN2lmhldHUn8IH/gBjntHT09Gpj1PT1s6GODxXntAQm5gwMamEMDUtVFOHCgLTIyc0ZGdXAuCMJNPq+8ISg5Iay/SMhxzF671Z6ZQCFquovb1Bn3LtfydEXrJBUD4oVUR6otu7DRy0c450BlNNUlTQ27psxMYkYUFxfFFqQpnzu3OmZFlGdAZTKWV+QuVLRRqow4K/DaYZrmffOeNzewasygIIGIP+JN8bo05zEwP/NJnUGDEDClJe9EPBMgmZXeTAAbP9zT8iLFoEmjmfAXqCETo9ZfNkN06+JYr1g63jlJihgsj/RY/rV0xKY2P/arTItAkyudkFvXFpufKCDgT8D2gUluOT2rcTqEOM4Re9inK5dj0jrEQOnqOO9A5Ldn2j/oNf1UG6ryoBx8gMKRIcYCMWW8BFOpqQnEHgoKwL4yk8djM5AoEB87F9/0vq5KlBnIBAKxX1RIPM5NjiZekMh2asK5CtHybcb63+5nNpvSm2yWMWaYer5jiA/kBojHsT0D8n+RJBfeGqgVRam5RW/yGLVBlqlanFpaRm8GVYoTPvK6tra+ka7TbcagEibW9s7q6u7G3v7lbgQy8Hh/tbe9vbK1tHhgcWA+Yj+w839o62j/cN+ApeBskIyPM8EQlaxQcd32W/E9Jewb6BBFAAAAABJRU5ErkJggg=="
}]);