coronamap/dist/js/bundle.js
2022-08-06 08:09:54 -07:00

12 lines
1.2 MiB
Raw Blame History

!function (e) { var a = {}; function n(o) { if (a[o]) return a[o].exports; var r = a[o] = { i: o, l: !1, exports: {} }; return e[o].call(r.exports, r, r.exports, n), r.l = !0, r.exports } n.m = e, n.c = a, n.d = function (e, a, o) { n.o(e, a) || Object.defineProperty(e, a, { enumerable: !0, get: o }) }, n.r = function (e) { "undefined" != typeof Symbol && Symbol.toStringTag && Object.defineProperty(e, Symbol.toStringTag, { value: "Module" }), Object.defineProperty(e, "__esModule", { value: !0 }) }, n.t = function (e, a) { if (1 & a && (e = n(e)), 8 & a) return e; if (4 & a && "object" == typeof e && e && e.__esModule) return e; var o = Object.create(null); if (n.r(o), Object.defineProperty(o, "default", { enumerable: !0, value: e }), 2 & a && "string" != typeof e) for (var r in e) n.d(o, r, function (a) { return e[a] }.bind(null, r)); return o }, n.n = function (e) { var a = e && e.__esModule ? function () { return e.default } : function () { return e }; return n.d(a, "a", a), a }, n.o = function (e, a) { return Object.prototype.hasOwnProperty.call(e, a) }, n.p = "", n(n.s = 40) }([function (e, a, n) { "use strict"; var o = n(6), r = Object.keys || function (e) { var a = []; for (var n in e) a.push(n); return a }; e.exports = m; var t = Object.create(n(4)); t.inherits = n(2); var i = n(12), l = n(10); t.inherits(m, i); for (var _ = r(l.prototype), s = 0; s < _.length; s++) { var u = _[s]; m.prototype[u] || (m.prototype[u] = l.prototype[u]) } function m(e) { if (!(this instanceof m)) return new m(e); i.call(this, e), l.call(this, e), e && !1 === e.readable && (this.readable = !1), e && !1 === e.writable && (this.writable = !1), this.allowHalfOpen = !0, e && !1 === e.allowHalfOpen && (this.allowHalfOpen = !1), this.once("end", p) } function p() { this.allowHalfOpen || this._writableState.ended || o.nextTick(d, this) } function d(e) { e.end() } Object.defineProperty(m.prototype, "writableHighWaterMark", { enumerable: !1, get: function () { return this._writableState.highWaterMark } }), Object.defineProperty(m.prototype, "destroyed", { get: function () { return void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed && this._writableState.destroyed) }, set: function (e) { void 0 !== this._readableState && void 0 !== this._writableState && (this._readableState.destroyed = e, this._writableState.destroyed = e) } }), m.prototype._destroy = function (e, a) { this.push(null), this.end(), o.nextTick(a, e) } }, function (e, a) { var n; n = function () { return this }(); try { n = n || new Function("return this")() } catch (e) { "object" == typeof window && (n = window) } e.exports = n }, function (e, a) { "function" == typeof Object.create ? e.exports = function (e, a) { a && (e.super_ = a, e.prototype = Object.create(a.prototype, { constructor: { value: e, enumerable: !1, writable: !0, configurable: !0 } })) } : e.exports = function (e, a) { if (a) { e.super_ = a; var n = function () { }; n.prototype = a.prototype, e.prototype = new n, e.prototype.constructor = e } } }, function (e, a) { var n, o, r = e.exports = {}; function t() { throw new Error("setTimeout has not been defined") } function i() { throw new Error("clearTimeout has not been defined") } function l(e) { if (n === setTimeout) return setTimeout(e, 0); if ((n === t || !n) && setTimeout) return n = setTimeout, setTimeout(e, 0); try { return n(e, 0) } catch (a) { try { return n.call(null, e, 0) } catch (a) { return n.call(this, e, 0) } } } !function () { try { n = "function" == typeof setTimeout ? setTimeout : t } catch (e) { n = t } try { o = "function" == typeof clearTimeout ? clearTimeout : i } catch (e) { o = i } }(); var _, s = [], u = !1, m = -1; function p() { u && _ && (u = !1, _.length ? s = _.concat(s) : m = -1, s.length && d()) } function d() { if (!u) { var e = l(p); u = !0; for (var a = s.length; a;) { for (_ = s, s = []; ++m < a;)_ && _[m].run(); m = -1, a = s.length } _ = null, u = !1, function (e) { if (o === clearTimeout) return clearTimeout(e); if ((o === i || !o) && clearTimeout) return o = clearTimeout, clearTimeout(e); try { o(e) } catch (a) { try { return o.call(null, e) } catch (a) { return o.call(this, e) } } }(e) } } function c(e, a) { this.fun = e, this.array = a } function g() { } r.nextTick = function (e) { var a = new Array(arguments.length - 1); if (arguments.length > 1) for (var n = 1; n < arguments.length; n++)a[n - 1] = arguments[n]; s.push(new c(e, a)), 1 !== s.length || u || l(d) }, c.prototype.run = function () { this.fun.apply(null, this.array) }, r.title = "browser", r.browser = !0, r.env = {}, r.argv = [], r.version = "", r.versions = {}, r.on = g, r.addListener = g, r.once = g, r.off = g, r.removeListener = g, r.removeAllListeners = g, r.emit = g, r.prependListener = g, r.prependOnceListener = g, r.listeners = function (e) { return [] }, r.binding = function (e) { throw new Error("process.binding is not supported") }, r.cwd = function () { return "/" }, r.chdir = function (e) { throw new Error("process.chdir is not supported") }, r.umask = function () { return 0 } }, function (e, a, n) { (function (e) { function n(e) { return Object.prototype.toString.call(e) } a.isArray = function (e) { return Array.isArray ? Array.isArray(e) : "[object Array]" === n(e) }, a.isBoolean = function (e) { return "boolean" == typeof e }, a.isNull = function (e) { return null === e }, a.isNullOrUndefined = function (e) { return null == e }, a.isNumber = function (e) { return "number" == typeof e }, a.isString = function (e) { return "string" == typeof e }, a.isSymbol = function (e) { return "symbol" == typeof e }, a.isUndefined = function (e) { return void 0 === e }, a.isRegExp = function (e) { return "[object RegExp]" === n(e) }, a.isObject = function (e) { return "object" == typeof e && null !== e }, a.isDate = function (e) { return "[object Date]" === n(e) }, a.isError = function (e) { return "[object Error]" === n(e) || e instanceof Error }, a.isFunction = function (e) { return "function" == typeof e }, a.isPrimitive = function (e) { return null === e || "boolean" == typeof e || "number" == typeof e || "string" == typeof e || "symbol" == typeof e || void 0 === e }, a.isBuffer = e.isBuffer }).call(this, n(5).Buffer) }, function (e, a, n) {
"use strict"; (function (e) {
/*!
* The buffer module from node.js, for the browser.
*
* @author Feross Aboukhadijeh <http://feross.org>
* @license MIT
*/
var o = n(23), r = n(24), t = n(11); function i() { return _.TYPED_ARRAY_SUPPORT ? 2147483647 : 1073741823 } function l(e, a) { if (i() < a) throw new RangeError("Invalid typed array length"); return _.TYPED_ARRAY_SUPPORT ? (e = new Uint8Array(a)).__proto__ = _.prototype : (null === e && (e = new _(a)), e.length = a), e } function _(e, a, n) { if (!(_.TYPED_ARRAY_SUPPORT || this instanceof _)) return new _(e, a, n); if ("number" == typeof e) { if ("string" == typeof a) throw new Error("If encoding is specified then the first argument must be a string"); return m(this, e) } return s(this, e, a, n) } function s(e, a, n, o) { if ("number" == typeof a) throw new TypeError('"value" argument must not be a number'); return "undefined" != typeof ArrayBuffer && a instanceof ArrayBuffer ? function (e, a, n, o) { if (a.byteLength, n < 0 || a.byteLength < n) throw new RangeError("'offset' is out of bounds"); if (a.byteLength < n + (o || 0)) throw new RangeError("'length' is out of bounds"); a = void 0 === n && void 0 === o ? new Uint8Array(a) : void 0 === o ? new Uint8Array(a, n) : new Uint8Array(a, n, o); _.TYPED_ARRAY_SUPPORT ? (e = a).__proto__ = _.prototype : e = p(e, a); return e }(e, a, n, o) : "string" == typeof a ? function (e, a, n) { "string" == typeof n && "" !== n || (n = "utf8"); if (!_.isEncoding(n)) throw new TypeError('"encoding" must be a valid string encoding'); var o = 0 | c(a, n), r = (e = l(e, o)).write(a, n); r !== o && (e = e.slice(0, r)); return e }(e, a, n) : function (e, a) { if (_.isBuffer(a)) { var n = 0 | d(a.length); return 0 === (e = l(e, n)).length || a.copy(e, 0, 0, n), e } if (a) { if ("undefined" != typeof ArrayBuffer && a.buffer instanceof ArrayBuffer || "length" in a) return "number" != typeof a.length || (o = a.length) != o ? l(e, 0) : p(e, a); if ("Buffer" === a.type && t(a.data)) return p(e, a.data) } var o; throw new TypeError("First argument must be a string, Buffer, ArrayBuffer, Array, or array-like object.") }(e, a) } function u(e) { if ("number" != typeof e) throw new TypeError('"size" argument must be a number'); if (e < 0) throw new RangeError('"size" argument must not be negative') } function m(e, a) { if (u(a), e = l(e, a < 0 ? 0 : 0 | d(a)), !_.TYPED_ARRAY_SUPPORT) for (var n = 0; n < a; ++n)e[n] = 0; return e } function p(e, a) { var n = a.length < 0 ? 0 : 0 | d(a.length); e = l(e, n); for (var o = 0; o < n; o += 1)e[o] = 255 & a[o]; return e } function d(e) { if (e >= i()) throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x" + i().toString(16) + " bytes"); return 0 | e } function c(e, a) { if (_.isBuffer(e)) return e.length; if ("undefined" != typeof ArrayBuffer && "function" == typeof ArrayBuffer.isView && (ArrayBuffer.isView(e) || e instanceof ArrayBuffer)) return e.byteLength; "string" != typeof e && (e = "" + e); var n = e.length; if (0 === n) return 0; for (var o = !1; ;)switch (a) { case "ascii": case "latin1": case "binary": return n; case "utf8": case "utf-8": case void 0: return j(e).length; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return 2 * n; case "hex": return n >>> 1; case "base64": return K(e).length; default: if (o) return j(e).length; a = ("" + a).toLowerCase(), o = !0 } } function g(e, a, n) { var o = !1; if ((void 0 === a || a < 0) && (a = 0), a > this.length) return ""; if ((void 0 === n || n > this.length) && (n = this.length), n <= 0) return ""; if ((n >>>= 0) <= (a >>>= 0)) return ""; for (e || (e = "utf8"); ;)switch (e) { case "hex": return N(this, a, n); case "utf8": case "utf-8": return R(this, a, n); case "ascii": return C(this, a, n); case "latin1": case "binary": return L(this, a, n); case "base64": return E(this, a, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return T(this, a, n); default: if (o) throw new TypeError("Unknown encoding: " + e); e = (e + "").toLowerCase(), o = !0 } } function f(e, a, n) { var o = e[a]; e[a] = e[n], e[n] = o } function b(e, a, n, o, r) { if (0 === e.length) return -1; if ("string" == typeof n ? (o = n, n = 0) : n > 2147483647 ? n = 2147483647 : n < -2147483648 && (n = -2147483648), n = +n, isNaN(n) && (n = r ? 0 : e.length - 1), n < 0 && (n = e.length + n), n >= e.length) { if (r) return -1; n = e.length - 1 } else if (n < 0) { if (!r) return -1; n = 0 } if ("string" == typeof a && (a = _.from(a, o)), _.isBuffer(a)) return 0 === a.length ? -1 : y(e, a, n, o, r); if ("number" == typeof a) return a &= 255, _.TYPED_ARRAY_SUPPORT && "function" == typeof Uint8Array.prototype.indexOf ? r ? Uint8Array.prototype.indexOf.call(e, a, n) : Uint8Array.prototype.lastIndexOf.call(e, a, n) : y(e, [a], n, o, r); throw new TypeError("val must be string, number or Buffer") } function y(e, a, n, o, r) { var t, i = 1, l = e.length, _ = a.length; if (void 0 !== o && ("ucs2" === (o = String(o).toLowerCase()) || "ucs-2" === o || "utf16le" === o || "utf-16le" === o)) { if (e.length < 2 || a.length < 2) return -1; i = 2, l /= 2, _ /= 2, n /= 2 } function s(e, a) { return 1 === i ? e[a] : e.readUInt16BE(a * i) } if (r) { var u = -1; for (t = n; t < l; t++)if (s(e, t) === s(a, -1 === u ? 0 : t - u)) { if (-1 === u && (u = t), t - u + 1 === _) return u * i } else -1 !== u && (t -= t - u), u = -1 } else for (n + _ > l && (n = l - _), t = n; t >= 0; t--) { for (var m = !0, p = 0; p < _; p++)if (s(e, t + p) !== s(a, p)) { m = !1; break } if (m) return t } return -1 } function h(e, a, n, o) { n = Number(n) || 0; var r = e.length - n; o ? (o = Number(o)) > r && (o = r) : o = r; var t = a.length; if (t % 2 != 0) throw new TypeError("Invalid hex string"); o > t / 2 && (o = t / 2); for (var i = 0; i < o; ++i) { var l = parseInt(a.substr(2 * i, 2), 16); if (isNaN(l)) return i; e[n + i] = l } return i } function v(e, a, n, o) { return H(j(a, e.length - n), e, n, o) } function w(e, a, n, o) { return H(function (e) { for (var a = [], n = 0; n < e.length; ++n)a.push(255 & e.charCodeAt(n)); return a }(a), e, n, o) } function k(e, a, n, o) { return w(e, a, n, o) } function A(e, a, n, o) { return H(K(a), e, n, o) } function S(e, a, n, o) { return H(function (e, a) { for (var n, o, r, t = [], i = 0; i < e.length && !((a -= 2) < 0); ++i)n = e.charCodeAt(i), o = n >> 8, r = n % 256, t.push(r), t.push(o); return t }(a, e.length - n), e, n, o) } function E(e, a, n) { return 0 === a && n === e.length ? o.fromByteArray(e) : o.fromByteArray(e.slice(a, n)) } function R(e, a, n) { n = Math.min(e.length, n); for (var o = [], r = a; r < n;) { var t, i, l, _, s = e[r], u = null, m = s > 239 ? 4 : s > 223 ? 3 : s > 191 ? 2 : 1; if (r + m <= n) switch (m) { case 1: s < 128 && (u = s); break; case 2: 128 == (192 & (t = e[r + 1])) && (_ = (31 & s) << 6 | 63 & t) > 127 && (u = _); break; case 3: t = e[r + 1], i = e[r + 2], 128 == (192 & t) && 128 == (192 & i) && (_ = (15 & s) << 12 | (63 & t) << 6 | 63 & i) > 2047 && (_ < 55296 || _ > 57343) && (u = _); break; case 4: t = e[r + 1], i = e[r + 2], l = e[r + 3], 128 == (192 & t) && 128 == (192 & i) && 128 == (192 & l) && (_ = (15 & s) << 18 | (63 & t) << 12 | (63 & i) << 6 | 63 & l) > 65535 && _ < 1114112 && (u = _) }null === u ? (u = 65533, m = 1) : u > 65535 && (u -= 65536, o.push(u >>> 10 & 1023 | 55296), u = 56320 | 1023 & u), o.push(u), r += m } return function (e) { var a = e.length; if (a <= 4096) return String.fromCharCode.apply(String, e); var n = "", o = 0; for (; o < a;)n += String.fromCharCode.apply(String, e.slice(o, o += 4096)); return n }(o) } a.Buffer = _, a.SlowBuffer = function (e) { +e != e && (e = 0); return _.alloc(+e) }, a.INSPECT_MAX_BYTES = 50, _.TYPED_ARRAY_SUPPORT = void 0 !== e.TYPED_ARRAY_SUPPORT ? e.TYPED_ARRAY_SUPPORT : function () { try { var e = new Uint8Array(1); return e.__proto__ = { __proto__: Uint8Array.prototype, foo: function () { return 42 } }, 42 === e.foo() && "function" == typeof e.subarray && 0 === e.subarray(1, 1).byteLength } catch (e) { return !1 } }(), a.kMaxLength = i(), _.poolSize = 8192, _._augment = function (e) { return e.__proto__ = _.prototype, e }, _.from = function (e, a, n) { return s(null, e, a, n) }, _.TYPED_ARRAY_SUPPORT && (_.prototype.__proto__ = Uint8Array.prototype, _.__proto__ = Uint8Array, "undefined" != typeof Symbol && Symbol.species && _[Symbol.species] === _ && Object.defineProperty(_, Symbol.species, { value: null, configurable: !0 })), _.alloc = function (e, a, n) { return function (e, a, n, o) { return u(a), a <= 0 ? l(e, a) : void 0 !== n ? "string" == typeof o ? l(e, a).fill(n, o) : l(e, a).fill(n) : l(e, a) }(null, e, a, n) }, _.allocUnsafe = function (e) { return m(null, e) }, _.allocUnsafeSlow = function (e) { return m(null, e) }, _.isBuffer = function (e) { return !(null == e || !e._isBuffer) }, _.compare = function (e, a) { if (!_.isBuffer(e) || !_.isBuffer(a)) throw new TypeError("Arguments must be Buffers"); if (e === a) return 0; for (var n = e.length, o = a.length, r = 0, t = Math.min(n, o); r < t; ++r)if (e[r] !== a[r]) { n = e[r], o = a[r]; break } return n < o ? -1 : o < n ? 1 : 0 }, _.isEncoding = function (e) { switch (String(e).toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "latin1": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return !0; default: return !1 } }, _.concat = function (e, a) { if (!t(e)) throw new TypeError('"list" argument must be an Array of Buffers'); if (0 === e.length) return _.alloc(0); var n; if (void 0 === a) for (a = 0, n = 0; n < e.length; ++n)a += e[n].length; var o = _.allocUnsafe(a), r = 0; for (n = 0; n < e.length; ++n) { var i = e[n]; if (!_.isBuffer(i)) throw new TypeError('"list" argument must be an Array of Buffers'); i.copy(o, r), r += i.length } return o }, _.byteLength = c, _.prototype._isBuffer = !0, _.prototype.swap16 = function () { var e = this.length; if (e % 2 != 0) throw new RangeError("Buffer size must be a multiple of 16-bits"); for (var a = 0; a < e; a += 2)f(this, a, a + 1); return this }, _.prototype.swap32 = function () { var e = this.length; if (e % 4 != 0) throw new RangeError("Buffer size must be a multiple of 32-bits"); for (var a = 0; a < e; a += 4)f(this, a, a + 3), f(this, a + 1, a + 2); return this }, _.prototype.swap64 = function () { var e = this.length; if (e % 8 != 0) throw new RangeError("Buffer size must be a multiple of 64-bits"); for (var a = 0; a < e; a += 8)f(this, a, a + 7), f(this, a + 1, a + 6), f(this, a + 2, a + 5), f(this, a + 3, a + 4); return this }, _.prototype.toString = function () { var e = 0 | this.length; return 0 === e ? "" : 0 === arguments.length ? R(this, 0, e) : g.apply(this, arguments) }, _.prototype.equals = function (e) { if (!_.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); return this === e || 0 === _.compare(this, e) }, _.prototype.inspect = function () { var e = "", n = a.INSPECT_MAX_BYTES; return this.length > 0 && (e = this.toString("hex", 0, n).match(/.{2}/g).join(" "), this.length > n && (e += " ... ")), "<Buffer " + e + ">" }, _.prototype.compare = function (e, a, n, o, r) { if (!_.isBuffer(e)) throw new TypeError("Argument must be a Buffer"); if (void 0 === a && (a = 0), void 0 === n && (n = e ? e.length : 0), void 0 === o && (o = 0), void 0 === r && (r = this.length), a < 0 || n > e.length || o < 0 || r > this.length) throw new RangeError("out of range index"); if (o >= r && a >= n) return 0; if (o >= r) return -1; if (a >= n) return 1; if (this === e) return 0; for (var t = (r >>>= 0) - (o >>>= 0), i = (n >>>= 0) - (a >>>= 0), l = Math.min(t, i), s = this.slice(o, r), u = e.slice(a, n), m = 0; m < l; ++m)if (s[m] !== u[m]) { t = s[m], i = u[m]; break } return t < i ? -1 : i < t ? 1 : 0 }, _.prototype.includes = function (e, a, n) { return -1 !== this.indexOf(e, a, n) }, _.prototype.indexOf = function (e, a, n) { return b(this, e, a, n, !0) }, _.prototype.lastIndexOf = function (e, a, n) { return b(this, e, a, n, !1) }, _.prototype.write = function (e, a, n, o) { if (void 0 === a) o = "utf8", n = this.length, a = 0; else if (void 0 === n && "string" == typeof a) o = a, n = this.length, a = 0; else { if (!isFinite(a)) throw new Error("Buffer.write(string, encoding, offset[, length]) is no longer supported"); a |= 0, isFinite(n) ? (n |= 0, void 0 === o && (o = "utf8")) : (o = n, n = void 0) } var r = this.length - a; if ((void 0 === n || n > r) && (n = r), e.length > 0 && (n < 0 || a < 0) || a > this.length) throw new RangeError("Attempt to write outside buffer bounds"); o || (o = "utf8"); for (var t = !1; ;)switch (o) { case "hex": return h(this, e, a, n); case "utf8": case "utf-8": return v(this, e, a, n); case "ascii": return w(this, e, a, n); case "latin1": case "binary": return k(this, e, a, n); case "base64": return A(this, e, a, n); case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return S(this, e, a, n); default: if (t) throw new TypeError("Unknown encoding: " + o); o = ("" + o).toLowerCase(), t = !0 } }, _.prototype.toJSON = function () { return { type: "Buffer", data: Array.prototype.slice.call(this._arr || this, 0) } }; function C(e, a, n) { var o = ""; n = Math.min(e.length, n); for (var r = a; r < n; ++r)o += String.fromCharCode(127 & e[r]); return o } function L(e, a, n) { var o = ""; n = Math.min(e.length, n); for (var r = a; r < n; ++r)o += String.fromCharCode(e[r]); return o } function N(e, a, n) { var o = e.length; (!a || a < 0) && (a = 0), (!n || n < 0 || n > o) && (n = o); for (var r = "", t = a; t < n; ++t)r += U(e[t]); return r } function T(e, a, n) { for (var o = e.slice(a, n), r = "", t = 0; t < o.length; t += 2)r += String.fromCharCode(o[t] + 256 * o[t + 1]); return r } function M(e, a, n) { if (e % 1 != 0 || e < 0) throw new RangeError("offset is not uint"); if (e + a > n) throw new RangeError("Trying to access beyond buffer length") } function P(e, a, n, o, r, t) { if (!_.isBuffer(e)) throw new TypeError('"buffer" argument must be a Buffer instance'); if (a > r || a < t) throw new RangeError('"value" argument is out of bounds'); if (n + o > e.length) throw new RangeError("Index out of range") } function B(e, a, n, o) { a < 0 && (a = 65535 + a + 1); for (var r = 0, t = Math.min(e.length - n, 2); r < t; ++r)e[n + r] = (a & 255 << 8 * (o ? r : 1 - r)) >>> 8 * (o ? r : 1 - r) } function I(e, a, n, o) { a < 0 && (a = 4294967295 + a + 1); for (var r = 0, t = Math.min(e.length - n, 4); r < t; ++r)e[n + r] = a >>> 8 * (o ? r : 3 - r) & 255 } function D(e, a, n, o, r, t) { if (n + o > e.length) throw new RangeError("Index out of range"); if (n < 0) throw new RangeError("Index out of range") } function G(e, a, n, o, t) { return t || D(e, 0, n, 4), r.write(e, a, n, o, 23, 4), n + 4 } function O(e, a, n, o, t) { return t || D(e, 0, n, 8), r.write(e, a, n, o, 52, 8), n + 8 } _.prototype.slice = function (e, a) { var n, o = this.length; if ((e = ~~e) < 0 ? (e += o) < 0 && (e = 0) : e > o && (e = o), (a = void 0 === a ? o : ~~a) < 0 ? (a += o) < 0 && (a = 0) : a > o && (a = o), a < e && (a = e), _.TYPED_ARRAY_SUPPORT) (n = this.subarray(e, a)).__proto__ = _.prototype; else { var r = a - e; n = new _(r, void 0); for (var t = 0; t < r; ++t)n[t] = this[t + e] } return n }, _.prototype.readUIntLE = function (e, a, n) { e |= 0, a |= 0, n || M(e, a, this.length); for (var o = this[e], r = 1, t = 0; ++t < a && (r *= 256);)o += this[e + t] * r; return o }, _.prototype.readUIntBE = function (e, a, n) { e |= 0, a |= 0, n || M(e, a, this.length); for (var o = this[e + --a], r = 1; a > 0 && (r *= 256);)o += this[e + --a] * r; return o }, _.prototype.readUInt8 = function (e, a) { return a || M(e, 1, this.length), this[e] }, _.prototype.readUInt16LE = function (e, a) { return a || M(e, 2, this.length), this[e] | this[e + 1] << 8 }, _.prototype.readUInt16BE = function (e, a) { return a || M(e, 2, this.length), this[e] << 8 | this[e + 1] }, _.prototype.readUInt32LE = function (e, a) { return a || M(e, 4, this.length), (this[e] | this[e + 1] << 8 | this[e + 2] << 16) + 16777216 * this[e + 3] }, _.prototype.readUInt32BE = function (e, a) { return a || M(e, 4, this.length), 16777216 * this[e] + (this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3]) }, _.prototype.readIntLE = function (e, a, n) { e |= 0, a |= 0, n || M(e, a, this.length); for (var o = this[e], r = 1, t = 0; ++t < a && (r *= 256);)o += this[e + t] * r; return o >= (r *= 128) && (o -= Math.pow(2, 8 * a)), o }, _.prototype.readIntBE = function (e, a, n) { e |= 0, a |= 0, n || M(e, a, this.length); for (var o = a, r = 1, t = this[e + --o]; o > 0 && (r *= 256);)t += this[e + --o] * r; return t >= (r *= 128) && (t -= Math.pow(2, 8 * a)), t }, _.prototype.readInt8 = function (e, a) { return a || M(e, 1, this.length), 128 & this[e] ? -1 * (255 - this[e] + 1) : this[e] }, _.prototype.readInt16LE = function (e, a) { a || M(e, 2, this.length); var n = this[e] | this[e + 1] << 8; return 32768 & n ? 4294901760 | n : n }, _.prototype.readInt16BE = function (e, a) { a || M(e, 2, this.length); var n = this[e + 1] | this[e] << 8; return 32768 & n ? 4294901760 | n : n }, _.prototype.readInt32LE = function (e, a) { return a || M(e, 4, this.length), this[e] | this[e + 1] << 8 | this[e + 2] << 16 | this[e + 3] << 24 }, _.prototype.readInt32BE = function (e, a) { return a || M(e, 4, this.length), this[e] << 24 | this[e + 1] << 16 | this[e + 2] << 8 | this[e + 3] }, _.prototype.readFloatLE = function (e, a) { return a || M(e, 4, this.length), r.read(this, e, !0, 23, 4) }, _.prototype.readFloatBE = function (e, a) { return a || M(e, 4, this.length), r.read(this, e, !1, 23, 4) }, _.prototype.readDoubleLE = function (e, a) { return a || M(e, 8, this.length), r.read(this, e, !0, 52, 8) }, _.prototype.readDoubleBE = function (e, a) { return a || M(e, 8, this.length), r.read(this, e, !1, 52, 8) }, _.prototype.writeUIntLE = function (e, a, n, o) { (e = +e, a |= 0, n |= 0, o) || P(this, e, a, n, Math.pow(2, 8 * n) - 1, 0); var r = 1, t = 0; for (this[a] = 255 & e; ++t < n && (r *= 256);)this[a + t] = e / r & 255; return a + n }, _.prototype.writeUIntBE = function (e, a, n, o) { (e = +e, a |= 0, n |= 0, o) || P(this, e, a, n, Math.pow(2, 8 * n) - 1, 0); var r = n - 1, t = 1; for (this[a + r] = 255 & e; --r >= 0 && (t *= 256);)this[a + r] = e / t & 255; return a + n }, _.prototype.writeUInt8 = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 1, 255, 0), _.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), this[a] = 255 & e, a + 1 }, _.prototype.writeUInt16LE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 2, 65535, 0), _.TYPED_ARRAY_SUPPORT ? (this[a] = 255 & e, this[a + 1] = e >>> 8) : B(this, e, a, !0), a + 2 }, _.prototype.writeUInt16BE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 2, 65535, 0), _.TYPED_ARRAY_SUPPORT ? (this[a] = e >>> 8, this[a + 1] = 255 & e) : B(this, e, a, !1), a + 2 }, _.prototype.writeUInt32LE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 4, 4294967295, 0), _.TYPED_ARRAY_SUPPORT ? (this[a + 3] = e >>> 24, this[a + 2] = e >>> 16, this[a + 1] = e >>> 8, this[a] = 255 & e) : I(this, e, a, !0), a + 4 }, _.prototype.writeUInt32BE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 4, 4294967295, 0), _.TYPED_ARRAY_SUPPORT ? (this[a] = e >>> 24, this[a + 1] = e >>> 16, this[a + 2] = e >>> 8, this[a + 3] = 255 & e) : I(this, e, a, !1), a + 4 }, _.prototype.writeIntLE = function (e, a, n, o) { if (e = +e, a |= 0, !o) { var r = Math.pow(2, 8 * n - 1); P(this, e, a, n, r - 1, -r) } var t = 0, i = 1, l = 0; for (this[a] = 255 & e; ++t < n && (i *= 256);)e < 0 && 0 === l && 0 !== this[a + t - 1] && (l = 1), this[a + t] = (e / i >> 0) - l & 255; return a + n }, _.prototype.writeIntBE = function (e, a, n, o) { if (e = +e, a |= 0, !o) { var r = Math.pow(2, 8 * n - 1); P(this, e, a, n, r - 1, -r) } var t = n - 1, i = 1, l = 0; for (this[a + t] = 255 & e; --t >= 0 && (i *= 256);)e < 0 && 0 === l && 0 !== this[a + t + 1] && (l = 1), this[a + t] = (e / i >> 0) - l & 255; return a + n }, _.prototype.writeInt8 = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 1, 127, -128), _.TYPED_ARRAY_SUPPORT || (e = Math.floor(e)), e < 0 && (e = 255 + e + 1), this[a] = 255 & e, a + 1 }, _.prototype.writeInt16LE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 2, 32767, -32768), _.TYPED_ARRAY_SUPPORT ? (this[a] = 255 & e, this[a + 1] = e >>> 8) : B(this, e, a, !0), a + 2 }, _.prototype.writeInt16BE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 2, 32767, -32768), _.TYPED_ARRAY_SUPPORT ? (this[a] = e >>> 8, this[a + 1] = 255 & e) : B(this, e, a, !1), a + 2 }, _.prototype.writeInt32LE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 4, 2147483647, -2147483648), _.TYPED_ARRAY_SUPPORT ? (this[a] = 255 & e, this[a + 1] = e >>> 8, this[a + 2] = e >>> 16, this[a + 3] = e >>> 24) : I(this, e, a, !0), a + 4 }, _.prototype.writeInt32BE = function (e, a, n) { return e = +e, a |= 0, n || P(this, e, a, 4, 2147483647, -2147483648), e < 0 && (e = 4294967295 + e + 1), _.TYPED_ARRAY_SUPPORT ? (this[a] = e >>> 24, this[a + 1] = e >>> 16, this[a + 2] = e >>> 8, this[a + 3] = 255 & e) : I(this, e, a, !1), a + 4 }, _.prototype.writeFloatLE = function (e, a, n) { return G(this, e, a, !0, n) }, _.prototype.writeFloatBE = function (e, a, n) { return G(this, e, a, !1, n) }, _.prototype.writeDoubleLE = function (e, a, n) { return O(this, e, a, !0, n) }, _.prototype.writeDoubleBE = function (e, a, n) { return O(this, e, a, !1, n) }, _.prototype.copy = function (e, a, n, o) { if (n || (n = 0), o || 0 === o || (o = this.length), a >= e.length && (a = e.length), a || (a = 0), o > 0 && o < n && (o = n), o === n) return 0; if (0 === e.length || 0 === this.length) return 0; if (a < 0) throw new RangeError("targetStart out of bounds"); if (n < 0 || n >= this.length) throw new RangeError("sourceStart out of bounds"); if (o < 0) throw new RangeError("sourceEnd out of bounds"); o > this.length && (o = this.length), e.length - a < o - n && (o = e.length - a + n); var r, t = o - n; if (this === e && n < a && a < o) for (r = t - 1; r >= 0; --r)e[r + a] = this[r + n]; else if (t < 1e3 || !_.TYPED_ARRAY_SUPPORT) for (r = 0; r < t; ++r)e[r + a] = this[r + n]; else Uint8Array.prototype.set.call(e, this.subarray(n, n + t), a); return t }, _.prototype.fill = function (e, a, n, o) { if ("string" == typeof e) { if ("string" == typeof a ? (o = a, a = 0, n = this.length) : "string" == typeof n && (o = n, n = this.length), 1 === e.length) { var r = e.charCodeAt(0); r < 256 && (e = r) } if (void 0 !== o && "string" != typeof o) throw new TypeError("encoding must be a string"); if ("string" == typeof o && !_.isEncoding(o)) throw new TypeError("Unknown encoding: " + o) } else "number" == typeof e && (e &= 255); if (a < 0 || this.length < a || this.length < n) throw new RangeError("Out of range index"); if (n <= a) return this; var t; if (a >>>= 0, n = void 0 === n ? this.length : n >>> 0, e || (e = 0), "number" == typeof e) for (t = a; t < n; ++t)this[t] = e; else { var i = _.isBuffer(e) ? e : j(new _(e, o).toString()), l = i.length; for (t = 0; t < n - a; ++t)this[t + a] = i[t % l] } return this }; var F = /[^+\/0-9A-Za-z-_]/g; function U(e) { return e < 16 ? "0" + e.toString(16) : e.toString(16) } function j(e, a) { var n; a = a || 1 / 0; for (var o = e.length, r = null, t = [], i = 0; i < o; ++i) { if ((n = e.charCodeAt(i)) > 55295 && n < 57344) { if (!r) { if (n > 56319) { (a -= 3) > -1 && t.push(239, 191, 189); continue } if (i + 1 === o) { (a -= 3) > -1 && t.push(239, 191, 189); continue } r = n; continue } if (n < 56320) { (a -= 3) > -1 && t.push(239, 191, 189), r = n; continue } n = 65536 + (r - 55296 << 10 | n - 56320) } else r && (a -= 3) > -1 && t.push(239, 191, 189); if (r = null, n < 128) { if ((a -= 1) < 0) break; t.push(n) } else if (n < 2048) { if ((a -= 2) < 0) break; t.push(n >> 6 | 192, 63 & n | 128) } else if (n < 65536) { if ((a -= 3) < 0) break; t.push(n >> 12 | 224, n >> 6 & 63 | 128, 63 & n | 128) } else { if (!(n < 1114112)) throw new Error("Invalid code point"); if ((a -= 4) < 0) break; t.push(n >> 18 | 240, n >> 12 & 63 | 128, n >> 6 & 63 | 128, 63 & n | 128) } } return t } function K(e) { return o.toByteArray(function (e) { if ((e = function (e) { return e.trim ? e.trim() : e.replace(/^\s+|\s+$/g, "") }(e).replace(F, "")).length < 2) return ""; for (; e.length % 4 != 0;)e += "="; return e }(e)) } function H(e, a, n, o) { for (var r = 0; r < o && !(r + n >= a.length || r >= e.length); ++r)a[r + n] = e[r]; return r }
}).call(this, n(1))
}, function (e, a, n) { "use strict"; (function (a) { void 0 === a || !a.version || 0 === a.version.indexOf("v0.") || 0 === a.version.indexOf("v1.") && 0 !== a.version.indexOf("v1.8.") ? e.exports = { nextTick: function (e, n, o, r) { if ("function" != typeof e) throw new TypeError('"callback" argument must be a function'); var t, i, l = arguments.length; switch (l) { case 0: case 1: return a.nextTick(e); case 2: return a.nextTick((function () { e.call(null, n) })); case 3: return a.nextTick((function () { e.call(null, n, o) })); case 4: return a.nextTick((function () { e.call(null, n, o, r) })); default: for (t = new Array(l - 1), i = 0; i < t.length;)t[i++] = arguments[i]; return a.nextTick((function () { e.apply(null, t) })) } } } : e.exports = a }).call(this, n(3)) }, function (e, a, n) { var o = n(5), r = o.Buffer; function t(e, a) { for (var n in e) a[n] = e[n] } function i(e, a, n) { return r(e, a, n) } r.from && r.alloc && r.allocUnsafe && r.allocUnsafeSlow ? e.exports = o : (t(o, a), a.Buffer = i), t(r, i), i.from = function (e, a, n) { if ("number" == typeof e) throw new TypeError("Argument must not be a number"); return r(e, a, n) }, i.alloc = function (e, a, n) { if ("number" != typeof e) throw new TypeError("Argument must be a number"); var o = r(e); return void 0 !== a ? "string" == typeof n ? o.fill(a, n) : o.fill(a) : o.fill(0), o }, i.allocUnsafe = function (e) { if ("number" != typeof e) throw new TypeError("Argument must be a number"); return r(e) }, i.allocUnsafeSlow = function (e) { if ("number" != typeof e) throw new TypeError("Argument must be a number"); return o.SlowBuffer(e) } }, function (e, a, n) { "use strict"; var o, r = "object" == typeof Reflect ? Reflect : null, t = r && "function" == typeof r.apply ? r.apply : function (e, a, n) { return Function.prototype.apply.call(e, a, n) }; o = r && "function" == typeof r.ownKeys ? r.ownKeys : Object.getOwnPropertySymbols ? function (e) { return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e)) } : function (e) { return Object.getOwnPropertyNames(e) }; var i = Number.isNaN || function (e) { return e != e }; function l() { l.init.call(this) } e.exports = l, l.EventEmitter = l, l.prototype._events = void 0, l.prototype._eventsCount = 0, l.prototype._maxListeners = void 0; var _ = 10; function s(e) { if ("function" != typeof e) throw new TypeError('The "listener" argument must be of type Function. Received type ' + typeof e) } function u(e) { return void 0 === e._maxListeners ? l.defaultMaxListeners : e._maxListeners } function m(e, a, n, o) { var r, t, i, l; if (s(n), void 0 === (t = e._events) ? (t = e._events = Object.create(null), e._eventsCount = 0) : (void 0 !== t.newListener && (e.emit("newListener", a, n.listener ? n.listener : n), t = e._events), i = t[a]), void 0 === i) i = t[a] = n, ++e._eventsCount; else if ("function" == typeof i ? i = t[a] = o ? [n, i] : [i, n] : o ? i.unshift(n) : i.push(n), (r = u(e)) > 0 && i.length > r && !i.warned) { i.warned = !0; var _ = new Error("Possible EventEmitter memory leak detected. " + i.length + " " + String(a) + " listeners added. Use emitter.setMaxListeners() to increase limit"); _.name = "MaxListenersExceededWarning", _.emitter = e, _.type = a, _.count = i.length, l = _, console && console.warn && console.warn(l) } return e } function p() { if (!this.fired) return this.target.removeListener(this.type, this.wrapFn), this.fired = !0, 0 === arguments.length ? this.listener.call(this.target) : this.listener.apply(this.target, arguments) } function d(e, a, n) { var o = { fired: !1, wrapFn: void 0, target: e, type: a, listener: n }, r = p.bind(o); return r.listener = n, o.wrapFn = r, r } function c(e, a, n) { var o = e._events; if (void 0 === o) return []; var r = o[a]; return void 0 === r ? [] : "function" == typeof r ? n ? [r.listener || r] : [r] : n ? function (e) { for (var a = new Array(e.length), n = 0; n < a.length; ++n)a[n] = e[n].listener || e[n]; return a }(r) : f(r, r.length) } function g(e) { var a = this._events; if (void 0 !== a) { var n = a[e]; if ("function" == typeof n) return 1; if (void 0 !== n) return n.length } return 0 } function f(e, a) { for (var n = new Array(a), o = 0; o < a; ++o)n[o] = e[o]; return n } Object.defineProperty(l, "defaultMaxListeners", { enumerable: !0, get: function () { return _ }, set: function (e) { if ("number" != typeof e || e < 0 || i(e)) throw new RangeError('The value of "defaultMaxListeners" is out of range. It must be a non-negative number. Received ' + e + "."); _ = e } }), l.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 }, l.prototype.setMaxListeners = function (e) { if ("number" != typeof e || e < 0 || i(e)) throw new RangeError('The value of "n" is out of range. It must be a non-negative number. Received ' + e + "."); return this._maxListeners = e, this }, l.prototype.getMaxListeners = function () { return u(this) }, l.prototype.emit = function (e) { for (var a = [], n = 1; n < arguments.length; n++)a.push(arguments[n]); var o = "error" === e, r = this._events; if (void 0 !== r) o = o && void 0 === r.error; else if (!o) return !1; if (o) { var i; if (a.length > 0 && (i = a[0]), i instanceof Error) throw i; var l = new Error("Unhandled error." + (i ? " (" + i.message + ")" : "")); throw l.context = i, l } var _ = r[e]; if (void 0 === _) return !1; if ("function" == typeof _) t(_, this, a); else { var s = _.length, u = f(_, s); for (n = 0; n < s; ++n)t(u[n], this, a) } return !0 }, l.prototype.addListener = function (e, a) { return m(this, e, a, !1) }, l.prototype.on = l.prototype.addListener, l.prototype.prependListener = function (e, a) { return m(this, e, a, !0) }, l.prototype.once = function (e, a) { return s(a), this.on(e, d(this, e, a)), this }, l.prototype.prependOnceListener = function (e, a) { return s(a), this.prependListener(e, d(this, e, a)), this }, l.prototype.removeListener = function (e, a) { var n, o, r, t, i; if (s(a), void 0 === (o = this._events)) return this; if (void 0 === (n = o[e])) return this; if (n === a || n.listener === a) 0 == --this._eventsCount ? this._events = Object.create(null) : (delete o[e], o.removeListener && this.emit("removeListener", e, n.listener || a)); else if ("function" != typeof n) { for (r = -1, t = n.length - 1; t >= 0; t--)if (n[t] === a || n[t].listener === a) { i = n[t].listener, r = t; break } if (r < 0) return this; 0 === r ? n.shift() : function (e, a) { for (; a + 1 < e.length; a++)e[a] = e[a + 1]; e.pop() }(n, r), 1 === n.length && (o[e] = n[0]), void 0 !== o.removeListener && this.emit("removeListener", e, i || a) } return this }, l.prototype.off = l.prototype.removeListener, l.prototype.removeAllListeners = function (e) { var a, n, o; 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[e] && (0 == --this._eventsCount ? this._events = Object.create(null) : delete n[e]), this; if (0 === arguments.length) { var r, t = Object.keys(n); for (o = 0; o < t.length; ++o)"removeListener" !== (r = t[o]) && this.removeAllListeners(r); return this.removeAllListeners("removeListener"), this._events = Object.create(null), this._eventsCount = 0, this } if ("function" == typeof (a = n[e])) this.removeListener(e, a); else if (void 0 !== a) for (o = a.length - 1; o >= 0; o--)this.removeListener(e, a[o]); return this }, l.prototype.listeners = function (e) { return c(this, e, !0) }, l.prototype.rawListeners = function (e) { return c(this, e, !1) }, l.listenerCount = function (e, a) { return "function" == typeof e.listenerCount ? e.listenerCount(a) : g.call(e, a) }, l.prototype.listenerCount = g, l.prototype.eventNames = function () { return this._eventsCount > 0 ? o(this._events) : [] } }, function (e, a, n) { (a = e.exports = n(12)).Stream = a, a.Readable = a, a.Writable = n(10), a.Duplex = n(0), a.Transform = n(16), a.PassThrough = n(34) }, function (e, a, n) { "use strict"; (function (a, o, r) { var t = n(6); function i(e) { var a = this; this.next = null, this.entry = null, this.finish = function () { !function (e, a, n) { var o = e.entry; e.entry = null; for (; o;) { var r = o.callback; a.pendingcb--, r(n), o = o.next } a.corkedRequestsFree ? a.corkedRequestsFree.next = e : a.corkedRequestsFree = e }(a, e) } } e.exports = y; var l, _ = !a.browser && ["v0.10", "v0.9."].indexOf(a.version.slice(0, 5)) > -1 ? o : t.nextTick; y.WritableState = b; var s = Object.create(n(4)); s.inherits = n(2); var u = { deprecate: n(33) }, m = n(13), p = n(7).Buffer, d = r.Uint8Array || function () { }; var c, g = n(14); function f() { } function b(e, a) { l = l || n(0), e = e || {}; var o = a instanceof l; this.objectMode = !!e.objectMode, o && (this.objectMode = this.objectMode || !!e.writableObjectMode); var r = e.highWaterMark, s = e.writableHighWaterMark, u = this.objectMode ? 16 : 16384; this.highWaterMark = r || 0 === r ? r : o && (s || 0 === s) ? s : u, this.highWaterMark = Math.floor(this.highWaterMark), this.finalCalled = !1, this.needDrain = !1, this.ending = !1, this.ended = !1, this.finished = !1, this.destroyed = !1; var m = !1 === e.decodeStrings; this.decodeStrings = !m, this.defaultEncoding = e.defaultEncoding || "utf8", this.length = 0, this.writing = !1, this.corked = 0, this.sync = !0, this.bufferProcessing = !1, this.onwrite = function (e) { !function (e, a) { var n = e._writableState, o = n.sync, r = n.writecb; if (function (e) { e.writing = !1, e.writecb = null, e.length -= e.writelen, e.writelen = 0 }(n), a) !function (e, a, n, o, r) { --a.pendingcb, n ? (t.nextTick(r, o), t.nextTick(S, e, a), e._writableState.errorEmitted = !0, e.emit("error", o)) : (r(o), e._writableState.errorEmitted = !0, e.emit("error", o), S(e, a)) }(e, n, o, a, r); else { var i = k(n); i || n.corked || n.bufferProcessing || !n.bufferedRequest || w(e, n), o ? _(v, e, n, i, r) : v(e, n, i, r) } }(a, e) }, this.writecb = null, this.writelen = 0, this.bufferedRequest = null, this.lastBufferedRequest = null, this.pendingcb = 0, this.prefinished = !1, this.errorEmitted = !1, this.bufferedRequestCount = 0, this.corkedRequestsFree = new i(this) } function y(e) { if (l = l || n(0), !(c.call(y, this) || this instanceof l)) return new y(e); this._writableState = new b(e, this), this.writable = !0, e && ("function" == typeof e.write && (this._write = e.write), "function" == typeof e.writev && (this._writev = e.writev), "function" == typeof e.destroy && (this._destroy = e.destroy), "function" == typeof e.final && (this._final = e.final)), m.call(this) } function h(e, a, n, o, r, t, i) { a.writelen = o, a.writecb = i, a.writing = !0, a.sync = !0, n ? e._writev(r, a.onwrite) : e._write(r, t, a.onwrite), a.sync = !1 } function v(e, a, n, o) { n || function (e, a) { 0 === a.length && a.needDrain && (a.needDrain = !1, e.emit("drain")) }(e, a), a.pendingcb--, o(), S(e, a) } function w(e, a) { a.bufferProcessing = !0; var n = a.bufferedRequest; if (e._writev && n && n.next) { var o = a.bufferedRequestCount, r = new Array(o), t = a.corkedRequestsFree; t.entry = n; for (var l = 0, _ = !0; n;)r[l] = n, n.isBuf || (_ = !1), n = n.next, l += 1; r.allBuffers = _, h(e, a, !0, a.length, r, "", t.finish), a.pendingcb++, a.lastBufferedRequest = null, t.next ? (a.corkedRequestsFree = t.next, t.next = null) : a.corkedRequestsFree = new i(a), a.bufferedRequestCount = 0 } else { for (; n;) { var s = n.chunk, u = n.encoding, m = n.callback; if (h(e, a, !1, a.objectMode ? 1 : s.length, s, u, m), n = n.next, a.bufferedRequestCount--, a.writing) break } null === n && (a.lastBufferedRequest = null) } a.bufferedRequest = n, a.bufferProcessing = !1 } function k(e) { return e.ending && 0 === e.length && null === e.bufferedRequest && !e.finished && !e.writing } function A(e, a) { e._final((function (n) { a.pendingcb--, n && e.emit("error", n), a.prefinished = !0, e.emit("prefinish"), S(e, a) })) } function S(e, a) { var n = k(a); return n && (!function (e, a) { a.prefinished || a.finalCalled || ("function" == typeof e._final ? (a.pendingcb++, a.finalCalled = !0, t.nextTick(A, e, a)) : (a.prefinished = !0, e.emit("prefinish"))) }(e, a), 0 === a.pendingcb && (a.finished = !0, e.emit("finish"))), n } s.inherits(y, m), b.prototype.getBuffer = function () { for (var e = this.bufferedRequest, a = []; e;)a.push(e), e = e.next; return a }, function () { try { Object.defineProperty(b.prototype, "buffer", { get: u.deprecate((function () { return this.getBuffer() }), "_writableState.buffer is deprecated. Use _writableState.getBuffer instead.", "DEP0003") }) } catch (e) { } }(), "function" == typeof Symbol && Symbol.hasInstance && "function" == typeof Function.prototype[Symbol.hasInstance] ? (c = Function.prototype[Symbol.hasInstance], Object.defineProperty(y, Symbol.hasInstance, { value: function (e) { return !!c.call(this, e) || this === y && (e && e._writableState instanceof b) } })) : c = function (e) { return e instanceof this }, y.prototype.pipe = function () { this.emit("error", new Error("Cannot pipe, not readable")) }, y.prototype.write = function (e, a, n) { var o, r = this._writableState, i = !1, l = !r.objectMode && (o = e, p.isBuffer(o) || o instanceof d); return l && !p.isBuffer(e) && (e = function (e) { return p.from(e) }(e)), "function" == typeof a && (n = a, a = null), l ? a = "buffer" : a || (a = r.defaultEncoding), "function" != typeof n && (n = f), r.ended ? function (e, a) { var n = new Error("write after end"); e.emit("error", n), t.nextTick(a, n) }(this, n) : (l || function (e, a, n, o) { var r = !0, i = !1; return null === n ? i = new TypeError("May not write null values to stream") : "string" == typeof n || void 0 === n || a.objectMode || (i = new TypeError("Invalid non-string/buffer chunk")), i && (e.emit("error", i), t.nextTick(o, i), r = !1), r }(this, r, e, n)) && (r.pendingcb++, i = function (e, a, n, o, r, t) { if (!n) { var i = function (e, a, n) { e.objectMode || !1 === e.decodeStrings || "string" != typeof a || (a = p.from(a, n)); return a }(a, o, r); o !== i && (n = !0, r = "buffer", o = i) } var l = a.objectMode ? 1 : o.length; a.length += l; var _ = a.length < a.highWaterMark; _ || (a.needDrain = !0); if (a.writing || a.corked) { var s = a.lastBufferedRequest; a.lastBufferedRequest = { chunk: o, encoding: r, isBuf: n, callback: t, next: null }, s ? s.next = a.lastBufferedRequest : a.bufferedRequest = a.lastBufferedRequest, a.bufferedRequestCount += 1 } else h(e, a, !1, l, o, r, t); return _ }(this, r, l, e, a, n)), i }, y.prototype.cork = function () { this._writableState.corked++ }, y.prototype.uncork = function () { var e = this._writableState; e.corked && (e.corked--, e.writing || e.corked || e.finished || e.bufferProcessing || !e.bufferedRequest || w(this, e)) }, y.prototype.setDefaultEncoding = function (e) { if ("string" == typeof e && (e = e.toLowerCase()), !(["hex", "utf8", "utf-8", "ascii", "binary", "base64", "ucs2", "ucs-2", "utf16le", "utf-16le", "raw"].indexOf((e + "").toLowerCase()) > -1)) throw new TypeError("Unknown encoding: " + e); return this._writableState.defaultEncoding = e, this }, Object.defineProperty(y.prototype, "writableHighWaterMark", { enumerable: !1, get: function () { return this._writableState.highWaterMark } }), y.prototype._write = function (e, a, n) { n(new Error("_write() is not implemented")) }, y.prototype._writev = null, y.prototype.end = function (e, a, n) { var o = this._writableState; "function" == typeof e ? (n = e, e = null, a = null) : "function" == typeof a && (n = a, a = null), null != e && this.write(e, a), o.corked && (o.corked = 1, this.uncork()), o.ending || o.finished || function (e, a, n) { a.ending = !0, S(e, a), n && (a.finished ? t.nextTick(n) : e.once("finish", n)); a.ended = !0, e.writable = !1 }(this, o, n) }, Object.defineProperty(y.prototype, "destroyed", { get: function () { return void 0 !== this._writableState && this._writableState.destroyed }, set: function (e) { this._writableState && (this._writableState.destroyed = e) } }), y.prototype.destroy = g.destroy, y.prototype._undestroy = g.undestroy, y.prototype._destroy = function (e, a) { this.end(), a(e) } }).call(this, n(3), n(31).setImmediate, n(1)) }, function (e, a) { var n = {}.toString; e.exports = Array.isArray || function (e) { return "[object Array]" == n.call(e) } }, function (e, a, n) { "use strict"; (function (a, o) { var r = n(6); e.exports = h; var t, i = n(11); h.ReadableState = y; n(8).EventEmitter; var l = function (e, a) { return e.listeners(a).length }, _ = n(13), s = n(7).Buffer, u = a.Uint8Array || function () { }; var m = Object.create(n(4)); m.inherits = n(2); var p = n(28), d = void 0; d = p && p.debuglog ? p.debuglog("stream") : function () { }; var c, g = n(29), f = n(14); m.inherits(h, _); var b = ["error", "close", "destroy", "pause", "resume"]; function y(e, a) { e = e || {}; var o = a instanceof (t = t || n(0)); this.objectMode = !!e.objectMode, o && (this.objectMode = this.objectMode || !!e.readableObjectMode); var r = e.highWaterMark, i = e.readableHighWaterMark, l = this.objectMode ? 16 : 16384; this.highWaterMark = r || 0 === r ? r : o && (i || 0 === i) ? i : l, this.highWaterMark = Math.floor(this.highWaterMark), this.buffer = new g, this.length = 0, this.pipes = null, this.pipesCount = 0, this.flowing = null, this.ended = !1, this.endEmitted = !1, this.reading = !1, this.sync = !0, this.needReadable = !1, this.emittedReadable = !1, this.readableListening = !1, this.resumeScheduled = !1, this.destroyed = !1, this.defaultEncoding = e.defaultEncoding || "utf8", this.awaitDrain = 0, this.readingMore = !1, this.decoder = null, this.encoding = null, e.encoding && (c || (c = n(15).StringDecoder), this.decoder = new c(e.encoding), this.encoding = e.encoding) } function h(e) { if (t = t || n(0), !(this instanceof h)) return new h(e); this._readableState = new y(e, this), this.readable = !0, e && ("function" == typeof e.read && (this._read = e.read), "function" == typeof e.destroy && (this._destroy = e.destroy)), _.call(this) } function v(e, a, n, o, r) { var t, i = e._readableState; null === a ? (i.reading = !1, function (e, a) { if (a.ended) return; if (a.decoder) { var n = a.decoder.end(); n && n.length && (a.buffer.push(n), a.length += a.objectMode ? 1 : n.length) } a.ended = !0, A(e) }(e, i)) : (r || (t = function (e, a) { var n; o = a, s.isBuffer(o) || o instanceof u || "string" == typeof a || void 0 === a || e.objectMode || (n = new TypeError("Invalid non-string/buffer chunk")); var o; return n }(i, a)), t ? e.emit("error", t) : i.objectMode || a && a.length > 0 ? ("string" == typeof a || i.objectMode || Object.getPrototypeOf(a) === s.prototype || (a = function (e) { return s.from(e) }(a)), o ? i.endEmitted ? e.emit("error", new Error("stream.unshift() after end event")) : w(e, i, a, !0) : i.ended ? e.emit("error", new Error("stream.push() after EOF")) : (i.reading = !1, i.decoder && !n ? (a = i.decoder.write(a), i.objectMode || 0 !== a.length ? w(e, i, a, !1) : E(e, i)) : w(e, i, a, !1))) : o || (i.reading = !1)); return function (e) { return !e.ended && (e.needReadable || e.length < e.highWaterMark || 0 === e.length) }(i) } function w(e, a, n, o) { a.flowing && 0 === a.length && !a.sync ? (e.emit("data", n), e.read(0)) : (a.length += a.objectMode ? 1 : n.length, o ? a.buffer.unshift(n) : a.buffer.push(n), a.needReadable && A(e)), E(e, a) } Object.defineProperty(h.prototype, "destroyed", { get: function () { return void 0 !== this._readableState && this._readableState.destroyed }, set: function (e) { this._readableState && (this._readableState.destroyed = e) } }), h.prototype.destroy = f.destroy, h.prototype._undestroy = f.undestroy, h.prototype._destroy = function (e, a) { this.push(null), a(e) }, h.prototype.push = function (e, a) { var n, o = this._readableState; return o.objectMode ? n = !0 : "string" == typeof e && ((a = a || o.defaultEncoding) !== o.encoding && (e = s.from(e, a), a = ""), n = !0), v(this, e, a, !1, n) }, h.prototype.unshift = function (e) { return v(this, e, null, !0, !1) }, h.prototype.isPaused = function () { return !1 === this._readableState.flowing }, h.prototype.setEncoding = function (e) { return c || (c = n(15).StringDecoder), this._readableState.decoder = new c(e), this._readableState.encoding = e, this }; function k(e, a) { return e <= 0 || 0 === a.length && a.ended ? 0 : a.objectMode ? 1 : e != e ? a.flowing && a.length ? a.buffer.head.data.length : a.length : (e > a.highWaterMark && (a.highWaterMark = function (e) { return e >= 8388608 ? e = 8388608 : (e--, e |= e >>> 1, e |= e >>> 2, e |= e >>> 4, e |= e >>> 8, e |= e >>> 16, e++), e }(e)), e <= a.length ? e : a.ended ? a.length : (a.needReadable = !0, 0)) } function A(e) { var a = e._readableState; a.needReadable = !1, a.emittedReadable || (d("emitReadable", a.flowing), a.emittedReadable = !0, a.sync ? r.nextTick(S, e) : S(e)) } function S(e) { d("emit readable"), e.emit("readable"), N(e) } function E(e, a) { a.readingMore || (a.readingMore = !0, r.nextTick(R, e, a)) } function R(e, a) { for (var n = a.length; !a.reading && !a.flowing && !a.ended && a.length < a.highWaterMark && (d("maybeReadMore read 0"), e.read(0), n !== a.length);)n = a.length; a.readingMore = !1 } function C(e) { d("readable nexttick read 0"), e.read(0) } function L(e, a) { a.reading || (d("resume read 0"), e.read(0)), a.resumeScheduled = !1, a.awaitDrain = 0, e.emit("resume"), N(e), a.flowing && !a.reading && e.read(0) } function N(e) { var a = e._readableState; for (d("flow", a.flowing); a.flowing && null !== e.read();); } function T(e, a) { return 0 === a.length ? null : (a.objectMode ? n = a.buffer.shift() : !e || e >= a.length ? (n = a.decoder ? a.buffer.join("") : 1 === a.buffer.length ? a.buffer.head.data : a.buffer.concat(a.length), a.buffer.clear()) : n = function (e, a, n) { var o; e < a.head.data.length ? (o = a.head.data.slice(0, e), a.head.data = a.head.data.slice(e)) : o = e === a.head.data.length ? a.shift() : n ? function (e, a) { var n = a.head, o = 1, r = n.data; e -= r.length; for (; n = n.next;) { var t = n.data, i = e > t.length ? t.length : e; if (i === t.length ? r += t : r += t.slice(0, e), 0 === (e -= i)) { i === t.length ? (++o, n.next ? a.head = n.next : a.head = a.tail = null) : (a.head = n, n.data = t.slice(i)); break } ++o } return a.length -= o, r }(e, a) : function (e, a) { var n = s.allocUnsafe(e), o = a.head, r = 1; o.data.copy(n), e -= o.data.length; for (; o = o.next;) { var t = o.data, i = e > t.length ? t.length : e; if (t.copy(n, n.length - e, 0, i), 0 === (e -= i)) { i === t.length ? (++r, o.next ? a.head = o.next : a.head = a.tail = null) : (a.head = o, o.data = t.slice(i)); break } ++r } return a.length -= r, n }(e, a); return o }(e, a.buffer, a.decoder), n); var n } function M(e) { var a = e._readableState; if (a.length > 0) throw new Error('"endReadable()" called on non-empty stream'); a.endEmitted || (a.ended = !0, r.nextTick(P, a, e)) } function P(e, a) { e.endEmitted || 0 !== e.length || (e.endEmitted = !0, a.readable = !1, a.emit("end")) } function B(e, a) { for (var n = 0, o = e.length; n < o; n++)if (e[n] === a) return n; return -1 } h.prototype.read = function (e) { d("read", e), e = parseInt(e, 10); var a = this._readableState, n = e; if (0 !== e && (a.emittedReadable = !1), 0 === e && a.needReadable && (a.length >= a.highWaterMark || a.ended)) return d("read: emitReadable", a.length, a.ended), 0 === a.length && a.ended ? M(this) : A(this), null; if (0 === (e = k(e, a)) && a.ended) return 0 === a.length && M(this), null; var o, r = a.needReadable; return d("need readable", r), (0 === a.length || a.length - e < a.highWaterMark) && d("length less than watermark", r = !0), a.ended || a.reading ? d("reading or ended", r = !1) : r && (d("do read"), a.reading = !0, a.sync = !0, 0 === a.length && (a.needReadable = !0), this._read(a.highWaterMark), a.sync = !1, a.reading || (e = k(n, a))), null === (o = e > 0 ? T(e, a) : null) ? (a.needReadable = !0, e = 0) : a.length -= e, 0 === a.length && (a.ended || (a.needReadable = !0), n !== e && a.ended && M(this)), null !== o && this.emit("data", o), o }, h.prototype._read = function (e) { this.emit("error", new Error("_read() is not implemented")) }, h.prototype.pipe = function (e, a) { var n = this, t = this._readableState; switch (t.pipesCount) { case 0: t.pipes = e; break; case 1: t.pipes = [t.pipes, e]; break; default: t.pipes.push(e) }t.pipesCount += 1, d("pipe count=%d opts=%j", t.pipesCount, a); var _ = (!a || !1 !== a.end) && e !== o.stdout && e !== o.stderr ? u : h; function s(a, o) { d("onunpipe"), a === n && o && !1 === o.hasUnpiped && (o.hasUnpiped = !0, d("cleanup"), e.removeListener("close", b), e.removeListener("finish", y), e.removeListener("drain", m), e.removeListener("error", f), e.removeListener("unpipe", s), n.removeListener("end", u), n.removeListener("end", h), n.removeListener("data", g), p = !0, !t.awaitDrain || e._writableState && !e._writableState.needDrain || m()) } function u() { d("onend"), e.end() } t.endEmitted ? r.nextTick(_) : n.once("end", _), e.on("unpipe", s); var m = function (e) { return function () { var a = e._readableState; d("pipeOnDrain", a.awaitDrain), a.awaitDrain && a.awaitDrain--, 0 === a.awaitDrain && l(e, "data") && (a.flowing = !0, N(e)) } }(n); e.on("drain", m); var p = !1; var c = !1; function g(a) { d("ondata"), c = !1, !1 !== e.write(a) || c || ((1 === t.pipesCount && t.pipes === e || t.pipesCount > 1 && -1 !== B(t.pipes, e)) && !p && (d("false write response, pause", n._readableState.awaitDrain), n._readableState.awaitDrain++, c = !0), n.pause()) } function f(a) { d("onerror", a), h(), e.removeListener("error", f), 0 === l(e, "error") && e.emit("error", a) } function b() { e.removeListener("finish", y), h() } function y() { d("onfinish"), e.removeListener("close", b), h() } function h() { d("unpipe"), n.unpipe(e) } return n.on("data", g), function (e, a, n) { if ("function" == typeof e.prependListener) return e.prependListener(a, n); e._events && e._events[a] ? i(e._events[a]) ? e._events[a].unshift(n) : e._events[a] = [n, e._events[a]] : e.on(a, n) }(e, "error", f), e.once("close", b), e.once("finish", y), e.emit("pipe", n), t.flowing || (d("pipe resume"), n.resume()), e }, h.prototype.unpipe = function (e) { var a = this._readableState, n = { hasUnpiped: !1 }; if (0 === a.pipesCount) return this; if (1 === a.pipesCount) return e && e !== a.pipes || (e || (e = a.pipes), a.pipes = null, a.pipesCount = 0, a.flowing = !1, e && e.emit("unpipe", this, n)), this; if (!e) { var o = a.pipes, r = a.pipesCount; a.pipes = null, a.pipesCount = 0, a.flowing = !1; for (var t = 0; t < r; t++)o[t].emit("unpipe", this, n); return this } var i = B(a.pipes, e); return -1 === i || (a.pipes.splice(i, 1), a.pipesCount -= 1, 1 === a.pipesCount && (a.pipes = a.pipes[0]), e.emit("unpipe", this, n)), this }, h.prototype.on = function (e, a) { var n = _.prototype.on.call(this, e, a); if ("data" === e) !1 !== this._readableState.flowing && this.resume(); else if ("readable" === e) { var o = this._readableState; o.endEmitted || o.readableListening || (o.readableListening = o.needReadable = !0, o.emittedReadable = !1, o.reading ? o.length && A(this) : r.nextTick(C, this)) } return n }, h.prototype.addListener = h.prototype.on, h.prototype.resume = function () { var e = this._readableState; return e.flowing || (d("resume"), e.flowing = !0, function (e, a) { a.resumeScheduled || (a.resumeScheduled = !0, r.nextTick(L, e, a)) }(this, e)), this }, h.prototype.pause = function () { return d("call pause flowing=%j", this._readableState.flowing), !1 !== this._readableState.flowing && (d("pause"), this._readableState.flowing = !1, this.emit("pause")), this }, h.prototype.wrap = function (e) { var a = this, n = this._readableState, o = !1; for (var r in e.on("end", (function () { if (d("wrapped end"), n.decoder && !n.ended) { var e = n.decoder.end(); e && e.length && a.push(e) } a.push(null) })), e.on("data", (function (r) { (d("wrapped data"), n.decoder && (r = n.decoder.write(r)), n.objectMode && null == r) || (n.objectMode || r && r.length) && (a.push(r) || (o = !0, e.pause())) })), e) void 0 === this[r] && "function" == typeof e[r] && (this[r] = function (a) { return function () { return e[a].apply(e, arguments) } }(r)); for (var t = 0; t < b.length; t++)e.on(b[t], this.emit.bind(this, b[t])); return this._read = function (a) { d("wrapped _read", a), o && (o = !1, e.resume()) }, this }, Object.defineProperty(h.prototype, "readableHighWaterMark", { enumerable: !1, get: function () { return this._readableState.highWaterMark } }), h._fromList = T }).call(this, n(1), n(3)) }, function (e, a, n) { e.exports = n(8).EventEmitter }, function (e, a, n) { "use strict"; var o = n(6); function r(e, a) { e.emit("error", a) } e.exports = { destroy: function (e, a) { var n = this, t = this._readableState && this._readableState.destroyed, i = this._writableState && this._writableState.destroyed; return t || i ? (a ? a(e) : !e || this._writableState && this._writableState.errorEmitted || o.nextTick(r, this, e), this) : (this._readableState && (this._readableState.destroyed = !0), this._writableState && (this._writableState.destroyed = !0), this._destroy(e || null, (function (e) { !a && e ? (o.nextTick(r, n, e), n._writableState && (n._writableState.errorEmitted = !0)) : a && a(e) })), this) }, undestroy: function () { this._readableState && (this._readableState.destroyed = !1, this._readableState.reading = !1, this._readableState.ended = !1, this._readableState.endEmitted = !1), this._writableState && (this._writableState.destroyed = !1, this._writableState.ended = !1, this._writableState.ending = !1, this._writableState.finished = !1, this._writableState.errorEmitted = !1) } } }, function (e, a, n) { "use strict"; var o = n(7).Buffer, r = o.isEncoding || function (e) { switch ((e = "" + e) && e.toLowerCase()) { case "hex": case "utf8": case "utf-8": case "ascii": case "binary": case "base64": case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": case "raw": return !0; default: return !1 } }; function t(e) { var a; switch (this.encoding = function (e) { var a = function (e) { if (!e) return "utf8"; for (var a; ;)switch (e) { case "utf8": case "utf-8": return "utf8"; case "ucs2": case "ucs-2": case "utf16le": case "utf-16le": return "utf16le"; case "latin1": case "binary": return "latin1"; case "base64": case "ascii": case "hex": return e; default: if (a) return; e = ("" + e).toLowerCase(), a = !0 } }(e); if ("string" != typeof a && (o.isEncoding === r || !r(e))) throw new Error("Unknown encoding: " + e); return a || e }(e), this.encoding) { case "utf16le": this.text = _, this.end = s, a = 4; break; case "utf8": this.fillLast = l, a = 4; break; case "base64": this.text = u, this.end = m, a = 3; break; default: return this.write = p, void (this.end = d) }this.lastNeed = 0, this.lastTotal = 0, this.lastChar = o.allocUnsafe(a) } function i(e) { return e <= 127 ? 0 : e >> 5 == 6 ? 2 : e >> 4 == 14 ? 3 : e >> 3 == 30 ? 4 : e >> 6 == 2 ? -1 : -2 } function l(e) { var a = this.lastTotal - this.lastNeed, n = function (e, a, n) { if (128 != (192 & a[0])) return e.lastNeed = 0, "<22>"; if (e.lastNeed > 1 && a.length > 1) { if (128 != (192 & a[1])) return e.lastNeed = 1, "<22>"; if (e.lastNeed > 2 && a.length > 2 && 128 != (192 & a[2])) return e.lastNeed = 2, "<22>" } }(this, e); return void 0 !== n ? n : this.lastNeed <= e.length ? (e.copy(this.lastChar, a, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal)) : (e.copy(this.lastChar, a, 0, e.length), void (this.lastNeed -= e.length)) } function _(e, a) { if ((e.length - a) % 2 == 0) { var n = e.toString("utf16le", a); if (n) { var o = n.charCodeAt(n.length - 1); if (o >= 55296 && o <= 56319) return this.lastNeed = 2, this.lastTotal = 4, this.lastChar[0] = e[e.length - 2], this.lastChar[1] = e[e.length - 1], n.slice(0, -1) } return n } return this.lastNeed = 1, this.lastTotal = 2, this.lastChar[0] = e[e.length - 1], e.toString("utf16le", a, e.length - 1) } function s(e) { var a = e && e.length ? this.write(e) : ""; if (this.lastNeed) { var n = this.lastTotal - this.lastNeed; return a + this.lastChar.toString("utf16le", 0, n) } return a } function u(e, a) { var n = (e.length - a) % 3; return 0 === n ? e.toString("base64", a) : (this.lastNeed = 3 - n, this.lastTotal = 3, 1 === n ? this.lastChar[0] = e[e.length - 1] : (this.lastChar[0] = e[e.length - 2], this.lastChar[1] = e[e.length - 1]), e.toString("base64", a, e.length - n)) } function m(e) { var a = e && e.length ? this.write(e) : ""; return this.lastNeed ? a + this.lastChar.toString("base64", 0, 3 - this.lastNeed) : a } function p(e) { return e.toString(this.encoding) } function d(e) { return e && e.length ? this.write(e) : "" } a.StringDecoder = t, t.prototype.write = function (e) { if (0 === e.length) return ""; var a, n; if (this.lastNeed) { if (void 0 === (a = this.fillLast(e))) return ""; n = this.lastNeed, this.lastNeed = 0 } else n = 0; return n < e.length ? a ? a + this.text(e, n) : this.text(e, n) : a || "" }, t.prototype.end = function (e) { var a = e && e.length ? this.write(e) : ""; return this.lastNeed ? a + "<22>" : a }, t.prototype.text = function (e, a) { var n = function (e, a, n) { var o = a.length - 1; if (o < n) return 0; var r = i(a[o]); if (r >= 0) return r > 0 && (e.lastNeed = r - 1), r; if (--o < n || -2 === r) return 0; if ((r = i(a[o])) >= 0) return r > 0 && (e.lastNeed = r - 2), r; if (--o < n || -2 === r) return 0; if ((r = i(a[o])) >= 0) return r > 0 && (2 === r ? r = 0 : e.lastNeed = r - 3), r; return 0 }(this, e, a); if (!this.lastNeed) return e.toString("utf8", a); this.lastTotal = n; var o = e.length - (n - this.lastNeed); return e.copy(this.lastChar, 0, o), e.toString("utf8", a, o) }, t.prototype.fillLast = function (e) { if (this.lastNeed <= e.length) return e.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, this.lastNeed), this.lastChar.toString(this.encoding, 0, this.lastTotal); e.copy(this.lastChar, this.lastTotal - this.lastNeed, 0, e.length), this.lastNeed -= e.length } }, function (e, a, n) { "use strict"; e.exports = i; var o = n(0), r = Object.create(n(4)); function t(e, a) { var n = this._transformState; n.transforming = !1; var o = n.writecb; if (!o) return this.emit("error", new Error("write callback called multiple times")); n.writechunk = null, n.writecb = null, null != a && this.push(a), o(e); var r = this._readableState; r.reading = !1, (r.needReadable || r.length < r.highWaterMark) && this._read(r.highWaterMark) } function i(e) { if (!(this instanceof i)) return new i(e); o.call(this, e), this._transformState = { afterTransform: t.bind(this), needTransform: !1, transforming: !1, writecb: null, writechunk: null, writeencoding: null }, this._readableState.needReadable = !0, this._readableState.sync = !1, e && ("function" == typeof e.transform && (this._transform = e.transform), "function" == typeof e.flush && (this._flush = e.flush)), this.on("prefinish", l) } function l() { var e = this; "function" == typeof this._flush ? this._flush((function (a, n) { _(e, a, n) })) : _(this, null, null) } function _(e, a, n) { if (a) return e.emit("error", a); if (null != n && e.push(n), e._writableState.length) throw new Error("Calling transform done when ws.length != 0"); if (e._transformState.transforming) throw new Error("Calling transform done when still transforming"); return e.push(null) } r.inherits = n(2), r.inherits(i, o), i.prototype.push = function (e, a) { return this._transformState.needTransform = !1, o.prototype.push.call(this, e, a) }, i.prototype._transform = function (e, a, n) { throw new Error("_transform() is not implemented") }, i.prototype._write = function (e, a, n) { var o = this._transformState; if (o.writecb = n, o.writechunk = e, o.writeencoding = a, !o.transforming) { var r = this._readableState; (o.needTransform || r.needReadable || r.length < r.highWaterMark) && this._read(r.highWaterMark) } }, i.prototype._read = function (e) { var a = this._transformState; null !== a.writechunk && a.writecb && !a.transforming ? (a.transforming = !0, this._transform(a.writechunk, a.writeencoding, a.afterTransform)) : a.needTransform = !0 }, i.prototype._destroy = function (e, a) { var n = this; o.prototype._destroy.call(this, e, (function (e) { a(e), n.emit("close") })) } }, function (e) { e.exports = JSON.parse('{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"The Bahamas","sov_a3":"BHS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"The Bahamas","adm0_a3":"BHS","geou_dif":0,"geounit":"The Bahamas","gu_a3":"BHS","su_dif":0,"subunit":"The Bahamas","su_a3":"BHS","brk_diff":0,"name":"Bahamas","name_long":"Bahamas","brk_a3":"BHS","brk_name":"Bahamas","brk_group":null,"abbrev":"Bhs.","postal":"BS","formal_en":"Commonwealth of the Bahamas","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bahamas, The","name_alt":null,"mapcolor7":1,"mapcolor8":1,"mapcolor9":2,"mapcolor13":5,"pop_est":309156,"gdp_md_est":9093,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"BS","iso_a3":"BHS","iso_n3":"044","un_a3":"044","wb_a2":"BS","wb_a3":"BHS","woe_id":-99,"adm0_a3_is":"BHS","adm0_a3_us":"BHS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"BHS.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-77.53466,23.75975],[-77.78,23.71],[-78.03405,24.28615],[-78.40848,24.57564],[-78.19087,25.2103],[-77.89,25.17],[-77.54,24.34],[-77.53466,23.75975]]],[[[-77.82,26.58],[-78.91,26.42],[-78.98,26.79],[-78.51,26.87],[-77.85,26.84],[-77.82,26.58]]],[[[-77,26.59],[-77.17255,25.87918],[-77.35641,26.00735],[-77.34,26.53],[-77.78802,26.92516],[-77.79,27.04],[-77,26.59]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Belize","sov_a3":"BLZ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Belize","adm0_a3":"BLZ","geou_dif":0,"geounit":"Belize","gu_a3":"BLZ","su_dif":0,"subunit":"Belize","su_a3":"BLZ","brk_diff":0,"name":"Belize","name_long":"Belize","brk_a3":"BLZ","brk_name":"Belize","brk_group":null,"abbrev":"Belize","postal":"BZ","formal_en":"Belize","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Belize","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":5,"mapcolor13":7,"pop_est":307899,"gdp_md_est":2536,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BZ","iso_a3":"BLZ","iso_n3":"084","un_a3":"084","wb_a2":"BZ","wb_a3":"BLZ","woe_id":-99,"adm0_a3_is":"BLZ","adm0_a3_us":"BLZ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"BLZ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-89.14308041050332,17.80831899664932],[-89.15090938999553,17.95546763760042],[-89.02985734735182,18.001511338772488],[-88.84834387892661,17.883198147040233],[-88.49012285027935,18.486830552641603],[-88.3000310940937,18.4999822046599],[-88.29633622918482,18.35327281338327],[-88.10681291375437,18.348673610909287],[-88.1234785631685,18.07667470954101],[-88.2853549873228,17.644142971258034],[-88.19786678745265,17.489475409408456],[-88.30264075392444,17.131693630435663],[-88.23951799187991,17.036066392479555],[-88.35542822951057,16.530774237529627],[-88.55182451043585,16.265467434143147],[-88.73243364129594,16.233634751851355],[-88.93061275913527,15.887273464415074],[-89.22912167026928,15.88693756760517],[-89.15080603713095,17.015576687075836],[-89.14308041050332,17.80831899664932]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Canada","sov_a3":"CAN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Canada","adm0_a3":"CAN","geou_dif":0,"geounit":"Canada","gu_a3":"CAN","su_dif":0,"subunit":"Canada","su_a3":"CAN","brk_diff":0,"name":"Canada","name_long":"Canada","brk_a3":"CAN","brk_name":"Canada","brk_group":null,"abbrev":"Can.","postal":"CA","formal_en":"Canada","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Canada","name_alt":null,"mapcolor7":6,"mapcolor8":6,"mapcolor9":2,"mapcolor13":2,"pop_est":33487208,"gdp_md_est":1300000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"CA","iso_a3":"CAN","iso_n3":"124","un_a3":"124","wb_a2":"CA","wb_a3":"CAN","woe_id":-99,"adm0_a3_is":"CAN","adm0_a3_us":"CAN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Northern America","region_wb":"North America","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CAN.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-63.6645,46.55001],[-62.9393,46.41587],[-62.01208,46.44314],[-62.50391,46.03339],[-62.87433,45.96818],[-64.1428,46.39265],[-64.39261,46.72747],[-64.01486,47.03601],[-63.6645,46.55001]]],[[[-61.806305,49.10506],[-62.29318,49.08717],[-63.58926,49.40069],[-64.51912,49.87304],[-64.17322,49.95718],[-62.85829,49.70641],[-61.835585,49.28855],[-61.806305,49.10506]]],[[[-123.51000158755114,48.51001089130344],[-124.0128907883995,48.370846259141416],[-125.65501277733837,48.8250045843385],[-125.95499446679275,49.179995835967645],[-126.85000443587187,49.53000031188043],[-127.0299934495444,49.81499583597008],[-128.05933630436624,49.9949590114266],[-128.44458410710217,50.539137681676124],[-128.35841365625544,50.770648098343685],[-127.3085810960299,50.55257355407195],[-126.69500097721232,50.400903225295394],[-125.75500667382319,50.29501821552938],[-125.4150015875588,49.95000051533261],[-124.92076818911934,49.475274970083404],[-123.92250870832102,49.06248362893581],[-123.51000158755114,48.51001089130344]]],[[[-56.13403581401712,50.6870097926793],[-56.795881720595276,49.81230866149096],[-56.1431050278843,50.150117499382844],[-55.471492275602934,49.93581533466846],[-55.82240108908093,49.58712860777911],[-54.935142584845664,49.31301097268684],[-54.47377539734378,49.55669118915918],[-53.476549445191324,49.24913890237405],[-53.78601375997124,48.51678050393363],[-53.086133999226256,48.687803656603535],[-52.958648240762244,48.157164211614486],[-52.64809872090419,47.5355484075755],[-53.069158291218336,46.65549876564495],[-53.52145626485304,46.61829173439483],[-54.17893551290254,46.80706574155701],[-53.961868659060485,47.62520701760192],[-54.24048214376214,47.75227936460763],[-55.4007730780115,46.884993801453135],[-55.99748084168584,46.9197203639533],[-55.29121904155278,47.389562486351],[-56.25079871278052,47.63254507098739],[-57.3252292547771,47.572807115258],[-59.26601518414677,47.603347886742505],[-59.419494188053704,47.899453843774864],[-58.796586473207405,48.25152537697949],[-59.231624518456535,48.52318838153781],[-58.39180497906523,49.12558055276418],[-57.35868974468604,50.718274034215845],[-56.73865007183201,51.28743825947853],[-55.870976935435294,51.632094224649194],[-55.406974249886616,51.58827261006573],[-55.60021826844209,51.31707469339793],[-56.13403581401712,50.6870097926793]]],[[[-133.1800040417117,54.16997549093531],[-132.71000788443132,54.040009315423525],[-131.74998958400326,54.12000438090922],[-132.049480347351,52.984621487024526],[-131.1790425218266,52.180432847698285],[-131.57782954982292,52.18237071390925],[-132.18042842677855,52.639707139692405],[-132.54999243231387,53.100014960332146],[-133.05461117875552,53.41146881775537],[-133.2396644827927,53.8510802272624],[-133.1800040417117,54.16997549093531]]],[[[-79.26582,62.158675],[-79.65752,61.63308],[-80.09956,61.7181],[-80.36215,62.01649],[-80.315395,62.085565],[-79.92939,62.3856],[-79.52002,62.36371],[-79.26582,62.158675]]],[[[-81.89825,62.7108],[-83.06857,62.15922],[-83.77462,62.18231],[-83.99367,62.4528],[-83.25048,62.91409],[-81.87699,62.90458],[-81.89825,62.7108]]],[[[-85.16130794954985,65.65728465439281],[-84.97576371940596,65.217518215589],[-84.4640120104195,65.37177236598018],[-83.88262630891975,65.10961782496355],[-82.78757687043877,64.76669302027469],[-81.64201371939254,64.45513580998696],[-81.55344031444425,63.979609280037145],[-80.81736121287886,64.05748566350101],[-80.10345130076661,63.725981350348604],[-80.99101986359568,63.41124603947497],[-82.54717810741701,63.65172231714524],[-83.10879757356506,64.10187571883972],[-84.10041663281388,63.56971181909802],[-85.52340471061902,63.05237905542409],[-85.86676876498237,63.637252916103556],[-87.22198320183674,63.541238104905226],[-86.35275977247127,64.03583323837071],[-86.22488644076513,64.82291697860826],[-85.88384782585487,65.73877838811705],[-85.16130794954985,65.65728465439281]]],[[[-75.86588,67.14886],[-76.98687,67.09873],[-77.2364,67.58809],[-76.81166,68.14856],[-75.89521,68.28721],[-75.1145,68.01036],[-75.10333,67.58202],[-75.21597,67.44425],[-75.86588,67.14886]]],[[[-95.64768120380052,69.10769035832178],[-96.2695212038006,68.75704035832175],[-97.61740120380057,69.0600303583218],[-98.43180120380052,68.9507003583218],[-99.79740120380053,69.4000303583218],[-98.91740120380055,69.7100303583218],[-98.2182612038005,70.14354035832176],[-97.15740120380056,69.86003035832181],[-96.55740120380054,69.68003035832176],[-96.25740120380053,69.49003035832177],[-95.64768120380052,69.10769035832178]]],[[[-90.5471,69.49766],[-90.55151,68.47499],[-89.21515,69.25873],[-88.01966,68.61508],[-88.31749,67.87338],[-87.35017,67.19872],[-86.30607,67.92146],[-85.57664,68.78456],[-85.52197,69.88211],[-84.10081,69.80539],[-82.62258,69.65826],[-81.28043,69.16202],[-81.2202,68.66567],[-81.96436,68.13253],[-81.25928,67.59716],[-81.38653,67.11078],[-83.34456,66.41154],[-84.73542,66.2573],[-85.76943,66.55833],[-86.0676,66.05625],[-87.03143,65.21297],[-87.32324,64.77563],[-88.48296,64.09897],[-89.91444,64.03273],[-90.70398,63.61017],[-90.77004,62.96021],[-91.93342,62.83508],[-93.15698,62.02469],[-94.24153,60.89865],[-94.62931,60.11021],[-94.6846,58.94882],[-93.21502,58.78212],[-92.76462,57.84571],[-92.29703,57.08709],[-90.89769,57.28468],[-89.03953,56.85172],[-88.03978,56.47162],[-87.32421,55.99914],[-86.07121,55.72383],[-85.01181,55.3026],[-83.36055,55.24489],[-82.27285,55.14832],[-82.4362,54.28227],[-82.12502,53.27703],[-81.40075,52.15788],[-79.91289,51.20842],[-79.14301,51.53393],[-78.60191,52.56208],[-79.12421,54.14145],[-79.82958,54.66772],[-78.22874,55.13645],[-77.0956,55.83741],[-76.54137,56.53423],[-76.62319,57.20263],[-77.30226,58.05209],[-78.51688,58.80458],[-77.33676,59.85261],[-77.77272,60.75788],[-78.10687,62.31964],[-77.41067,62.55053],[-75.69621,62.2784],[-74.6682,62.18111],[-73.83988,62.4438],[-72.90853,62.10507],[-71.67708,61.52535],[-71.37369,61.13717],[-69.59042,61.06141],[-69.62033,60.22125],[-69.2879,58.95736],[-68.37455,58.80106],[-67.64976,58.21206],[-66.20178,58.76731],[-65.24517,59.87071],[-64.58352,60.33558],[-63.80475,59.4426],[-62.50236,58.16708],[-61.39655,56.96745],[-61.79866,56.33945],[-60.46853,55.77548],[-59.56962,55.20407],[-57.97508,54.94549],[-57.3332,54.6265],[-56.93689,53.78032],[-56.15811,53.64749],[-55.75632,53.27036],[-55.68338,52.14664],[-56.40916,51.7707],[-57.12691,51.41972],[-58.77482,51.0643],[-60.03309,50.24277],[-61.72366,50.08046],[-63.86251,50.29099],[-65.36331,50.2982],[-66.39905,50.22897],[-67.23631,49.51156],[-68.51114,49.06836],[-69.95362,47.74488],[-71.10458,46.82171],[-70.25522,46.98606],[-68.65,48.3],[-66.55243,49.1331],[-65.05626,49.23278],[-64.17099,48.74248],[-65.11545,48.07085],[-64.79854,46.99297],[-64.47219,46.23849],[-63.17329,45.73902],[-61.52072,45.88377],[-60.51815,47.00793],[-60.4486,46.28264],[-59.80287,45.9204],[-61.03988,45.26525],[-63.25471,44.67014],[-64.24656,44.26553],[-65.36406,43.54523],[-66.1234,43.61867],[-66.16173,44.46512],[-64.42549,45.29204],[-66.02605,45.25931],[-67.13741,45.13753],[-67.79134,45.70281],[-67.79046,47.06636],[-68.23444,47.35486],[-68.905,47.185],[-69.237216,47.447781],[-69.99997,46.69307],[-70.305,45.915],[-70.66,45.46],[-71.08482,45.30524],[-71.405,45.255],[-71.50506,45.0082],[-73.34783,45.00738],[-74.867,45.00048],[-75.31821,44.81645],[-76.375,44.09631],[-76.5,44.01845889375872],[-76.82003414580558,43.628784288093755],[-77.7378850979577,43.629055589363304],[-78.72027991404238,43.625089423184875],[-79.17167355011188,43.46633942318422],[-79.01,43.27],[-78.92,42.965],[-78.9393621487437,42.86361135514804],[-80.24744767934794,42.36619985612259],[-81.27774654816716,42.20902598730686],[-82.43927771679162,41.675105088867156],[-82.69008928092018,41.675105088867156],[-83.02981014680694,41.83279572200584],[-83.14199968131256,41.975681057292825],[-83.12,42.08],[-82.9,42.43],[-82.43,42.98],[-82.1376423815039,43.571087551439916],[-82.33776312543108,44.44],[-82.55092464875818,45.347516587905375],[-83.59285071484308,45.81689362241237],[-83.46955074739463,45.99468638771259],[-83.61613094759059,46.11692698829907],[-83.89076534700575,46.11692698829907],[-84.09185126416148,46.275418606138174],[-84.14211951367338,46.51222585711574],[-84.3367,46.40877],[-84.6049,46.4396],[-84.54374874544587,46.538684190449146],[-84.77923824739992,46.637101955749046],[-84.87607988151485,46.90008331968238],[-85.65236324740343,47.22021881773051],[-86.46199083122826,47.55333801939204],[-87.43979262330024,47.94],[-88.37811418328673,48.302917588893735],[-89.27291744663668,48.019808254582664],[-89.6,48.01],[-90.83,48.27],[-91.64,48.14],[-92.61,48.45],[-93.63087,48.60926],[-94.32914,48.67074],[-94.64,48.84],[-94.81758,49.38905],[-95.15609,49.38425],[-95.15906950917204,49],[-97.22872000000481,49.0007],[-100.65,49],[-104.04826,48.99986],[-107.05,49],[-110.05,49],[-113,49],[-116.04818,49],[-117.03121,49],[-120,49],[-122.84,49],[-122.97421,49.0025377777778],[-124.91024,49.98456],[-125.62461,50.41656],[-127.43561,50.83061],[-127.99276,51.71583],[-127.85032,52.32961],[-129.12979,52.75538],[-129.30523,53.56159],[-130.51497,54.28757],[-130.53611,54.80278],[-129.98,55.285],[-130.00778,55.91583],[-131.70781,56.55212],[-132.73042,57.69289],[-133.35556,58.41028],[-134.27111,58.86111],[-134.945,59.27056],[-135.47583,59.78778],[-136.47972,59.46389],[-137.4525,58.905],[-138.34089,59.56211],[-139.039,60],[-140.013,60.27682],[-140.99778,60.30639],[-140.9925,66.00003],[-140.986,69.712],[-139.12052,69.47102],[-137.54636,68.99002],[-136.50358,68.89804],[-135.62576,69.31512],[-134.41464,69.62743],[-132.92925,69.50534],[-131.43136,69.94451],[-129.79471,70.19369],[-129.10773,69.77927],[-128.36156,70.01286],[-128.13817,70.48384],[-127.44712,70.37721],[-125.75632,69.48058],[-124.42483,70.1584],[-124.28968,69.39969],[-123.06108,69.56372],[-122.6835,69.85553],[-121.47226,69.79778],[-119.94288,69.37786],[-117.60268,69.01128],[-116.22643,68.84151],[-115.2469,68.90591],[-113.89794,68.3989],[-115.30489,67.90261],[-113.49727,67.68815],[-110.798,67.80612],[-109.94619,67.98104],[-108.8802,67.38144],[-107.79239,67.88736],[-108.81299,68.31164],[-108.16721,68.65392],[-106.95,68.7],[-106.15,68.8],[-105.34282,68.56122],[-104.33791,68.018],[-103.22115,68.09775],[-101.45433,67.64689],[-99.90195,67.80566],[-98.4432,67.78165],[-98.5586,68.40394],[-97.66948,68.57864],[-96.11991,68.23939],[-96.12588,67.29338],[-95.48943,68.0907],[-94.685,68.06383],[-94.23282,69.06903],[-95.30408,69.68571],[-96.47131,70.08976],[-96.39115,71.19482],[-95.2088,71.92053],[-93.88997,71.76015],[-92.87818,71.31869],[-91.51964,70.19129],[-92.40692,69.69997],[-90.5471,69.49766]]],[[[-114.1671699999999,73.12145],[-114.66634,72.65277],[-112.44101999999988,72.95540000000011],[-111.05039,72.4504],[-109.92034999999989,72.96113],[-109.00654,72.63335],[-108.18835,71.65089],[-107.68599,72.06548],[-108.39639,73.08953000000011],[-107.51645,73.23598],[-106.52259,73.07601],[-105.40246,72.67259],[-104.77484,71.6984],[-104.46475999999984,70.99297],[-102.78537,70.49776],[-100.9807799999999,70.02432],[-101.08929,69.58447000000012],[-102.73116,69.50402],[-102.09329,69.11962000000011],[-102.43024,68.75282],[-104.24,68.91],[-105.96,69.18000000000015],[-107.12254,69.11922],[-109,68.78],[-111.53414887520013,68.63005915681794],[-113.3132,68.53554],[-113.85495999999983,69.00744000000012],[-115.22,69.28],[-116.10794,69.16821],[-117.34,69.96000000000012],[-116.67472999999988,70.06655],[-115.13112,70.2373],[-113.72141,70.19237],[-112.4161,70.36638],[-114.35,70.6],[-116.48684,70.52045],[-117.9048,70.54056000000014],[-118.43238,70.9092],[-116.11311,71.30918],[-117.65568,71.2952],[-119.40199,71.55859],[-118.56267,72.30785],[-117.86642,72.70594],[-115.18909,73.31459000000012],[-114.1671699999999,73.12145]]],[[[-104.5,73.42],[-105.38,72.76],[-106.94,73.46],[-106.6,73.6],[-105.26,73.64],[-104.5,73.42]]],[[[-76.34,73.10268498995302],[-76.25140380859375,72.82638549804688],[-77.31443786621091,72.85554504394527],[-78.39167022705081,72.87665557861328],[-79.48625183105466,72.74220275878909],[-79.77583312988284,72.80290222167974],[-80.87609863281253,73.3331832885742],[-80.83388519287105,73.69318389892578],[-80.35305786132812,73.75971984863278],[-78.06443786621094,73.65193176269534],[-76.34,73.10268498995302]]],[[[-86.56217851433414,73.15744700793846],[-85.77437130404454,72.53412588163383],[-84.85011247428824,73.34027822538712],[-82.31559017610098,73.75095083281059],[-80.60008765330764,72.71654368762421],[-80.7489416165244,72.06190664335077],[-78.77063859731078,72.35217316353416],[-77.82462398955958,72.74961660429105],[-75.60584469267573,72.24367849393741],[-74.22861609566499,71.7671442735579],[-74.09914079455771,71.33084015571765],[-72.24222571479766,71.5569245469945],[-71.20001542833519,70.92001251899723],[-68.7860542466849,70.52502370877426],[-67.91497046575694,70.12194753689761],[-66.96903337265417,69.18608734809189],[-68.80512285020055,68.72019847276442],[-66.44986609563387,68.06716339789202],[-64.86231441919522,67.84753856065163],[-63.42493445499676,66.92847321234066],[-61.85198137068058,66.86212067327784],[-62.1631768459423,66.16025136988961],[-63.918444383384184,64.99866852483284],[-65.14886023625363,65.42603261988668],[-66.72121904159854,66.3880410834322],[-68.01501603867396,66.26272573512439],[-68.14128740097917,65.68978913030438],[-67.08964616562339,65.108455105237],[-65.73208045109976,64.64840566675863],[-65.32016760930128,64.38273712834606],[-64.66940629744968,63.39292674422748],[-65.01380388045891,62.67418508569599],[-66.27504472519047,62.945098781986076],[-68.78318620469273,63.74567007105181],[-67.36968075221304,62.883965562584876],[-66.3282972886672,62.280074774822054],[-66.16556820338016,61.93089712182589],[-68.87736650254465,62.33014923771282],[-71.02343705919384,62.91070811629584],[-72.235378587519,63.39783600529517],[-71.8862784491713,63.67998932560885],[-73.37830624051838,64.19396312118383],[-74.8344189114226,64.67907562932379],[-74.81850257027673,64.38909332951798],[-77.70997982452005,64.22954234481679],[-78.55594885935417,64.57290639918014],[-77.89728105336192,65.30919220647479],[-76.0182742987972,65.32696889918316],[-73.95979529488272,65.45476471624089],[-74.29388342964964,65.8117713487294],[-73.94491248238265,66.31057811142672],[-72.65116716173941,67.28457550726387],[-72.92605994331609,67.72692576768239],[-73.31161780464575,68.06943716091291],[-74.84330725777681,68.55462718370129],[-76.86910091826674,68.89473562283027],[-76.22864905465735,69.14776927354742],[-77.28736996123712,69.76954010688328],[-78.1686339993266,69.82648753526891],[-78.95724219431673,70.16688019477542],[-79.49245500356366,69.87180776638891],[-81.30547095409176,69.74318512641435],[-84.94470618359847,69.9666340196444],[-87.06000342481789,70.26000112576537],[-88.6817132230015,70.41074127876081],[-89.51341956252304,70.76203766548099],[-88.46772111688075,71.21818553332133],[-89.8881512112875,71.22255219184996],[-90.20516028518202,72.2350743679608],[-89.43657670770494,73.12946421985237],[-88.40824154331281,73.53788890247121],[-85.82615108920092,73.80381582304521],[-86.56217851433414,73.15744700793846]]],[[[-100.35642,73.84389],[-99.16387,73.63339],[-97.38,73.76],[-97.12,73.47],[-98.05359,72.99052],[-96.54,72.56],[-96.72,71.66],[-98.35966,71.27285],[-99.32286,71.35639],[-100.01482,71.73827],[-102.5,72.51],[-102.48,72.83],[-100.43836,72.70588],[-101.54,73.36],[-100.35642,73.84389]]],[[[-93.19629553910022,72.77199249947336],[-94.26904659704726,72.02459625923598],[-95.40985551632266,72.06188080513459],[-96.03374508338246,72.94027680123182],[-96.01826799191099,73.4374299180958],[-95.49579342322403,73.86241689726418],[-94.50365759965234,74.1349067247392],[-92.42001217321177,74.10002513294219],[-90.50979285354259,73.85673248971203],[-92.0039652168299,72.9662442084585],[-93.19629553910022,72.77199249947336]]],[[[-120.46,71.38360179308759],[-123.09219,70.90164],[-123.62,71.34],[-125.92894873747335,71.86868846301141],[-125.5,72.29226081179502],[-124.80729,73.02256],[-123.9399999999999,73.68000000000015],[-124.91775,74.29275000000013],[-121.53788,74.44893],[-120.10978,74.24135],[-117.55563999999987,74.18577],[-116.58442,73.89607],[-115.51081,73.47519],[-116.76793999999988,73.22292],[-119.22,72.52],[-120.46,71.82],[-120.46,71.38360179308759]]],[[[-93.61275590694049,74.97999726022445],[-94.15690873897384,74.59234650338686],[-95.60868058956561,74.66686391875177],[-96.82093217648458,74.92762319609658],[-96.2885874092298,75.37782827422335],[-94.85081987178913,75.6472175157609],[-93.97774654821794,75.29648956979597],[-93.61275590694049,74.97999726022445]]],[[[-98.5,76.72],[-97.735585,76.25656],[-97.704415,75.74344],[-98.16,75],[-99.80874,74.89744],[-100.88366,75.05736],[-100.86292,75.64075],[-102.50209,75.5638],[-102.56552,76.3366],[-101.48973,76.30537],[-99.98349,76.64634],[-98.57699,76.58859],[-98.5,76.72]]],[[[-108.21141,76.20168],[-107.81943,75.84552],[-106.92893,76.01282],[-105.881,75.9694],[-105.70498,75.47951],[-106.31347,75.00527],[-109.7,74.85],[-112.22307,74.41696],[-113.74381,74.39427],[-113.87135,74.72029],[-111.79421,75.1625],[-116.31221,75.04343],[-117.7104,75.2222],[-116.34602,76.19903],[-115.40487,76.47887],[-112.59056,76.14134],[-110.81422,75.54919],[-109.0671,75.47321],[-110.49726,76.42982],[-109.5811,76.79417],[-108.54859,76.67832],[-108.21141,76.20168]]],[[[-94.68408586299947,77.09787832305838],[-93.57392106807313,76.77629588490609],[-91.60502315953661,76.77851797149461],[-90.74184587274922,76.44959747995681],[-90.96966142450799,76.07401317005946],[-89.82223792189927,75.84777374948563],[-89.18708289259979,75.61016551380763],[-87.83827633334963,75.56618886992723],[-86.37919226758868,75.48242137318218],[-84.78962521029061,75.69920400664651],[-82.75344458691006,75.78431509063125],[-81.12853084992437,75.71398346628203],[-80.05751095245915,75.33684886341588],[-79.83393286814832,74.92312734648719],[-80.45777075877584,74.65730377877779],[-81.94884253612554,74.44245901152433],[-83.22889360221143,74.56402781849096],[-86.0974523587333,74.41003205026115],[-88.15035030796022,74.39230703398499],[-89.76472205275837,74.51555532500115],[-92.42244096552943,74.837757880341],[-92.7682854886428,75.38681997344216],[-92.88990597204173,75.88265534128266],[-93.893824022176,76.31924367950054],[-95.96245744503582,76.44138092722247],[-97.12137895382949,76.75107778594761],[-96.74512285031236,77.16138865834515],[-94.68408586299947,77.09787832305838]]],[[[-116.19858659550734,77.64528677032621],[-116.33581336145838,76.87696157501055],[-117.10605058476878,76.53003184681913],[-118.04041215703813,76.4811717800871],[-119.89931758688569,76.05321340606199],[-121.4999950771265,75.9000186225328],[-122.85492448615896,76.11654287383568],[-122.8549252936032,76.11654287383568],[-121.15753536032825,76.86450755482835],[-119.10393897182104,77.51221995717464],[-117.57013078496597,77.4983189968881],[-116.19858659550734,77.64528677032621]]],[[[-93.84000301794399,77.5199972602345],[-94.29560828324526,77.4913426785287],[-96.16965410031008,77.5551113959769],[-96.43630449093612,77.83462921824362],[-94.42257727738638,77.82000478790499],[-93.72065629756588,77.63433136668033],[-93.84000301794399,77.5199972602345]]],[[[-110.18693803591297,77.6970148790503],[-112.05119116905848,77.40922882761686],[-113.53427893761906,77.73220652944116],[-112.72458675825384,78.05105011668195],[-111.26444332563085,78.15295604116156],[-109.8544518705471,77.99632477488484],[-110.18693803591297,77.6970148790503]]],[[[-109.66314571820259,78.60197256134569],[-110.88131425661886,78.40691986766001],[-112.54209143761517,78.4079017198735],[-112.5258908760916,78.55055451121522],[-111.5000103422334,78.84999359813057],[-110.96366065147602,78.80444082306522],[-109.66314571820259,78.60197256134569]]],[[[-95.83029496944934,78.05694122996326],[-97.30984290239799,77.85059723582178],[-98.12428931353396,78.08285696075758],[-98.55286780474664,78.4581053738451],[-98.63198442258552,78.87193024363839],[-97.33723141151262,78.83198436147677],[-96.75439876990879,78.765812689927],[-95.55927792029458,78.41831452098029],[-95.83029496944934,78.05694122996326]]],[[[-100.06019182005214,78.3247543403159],[-99.67093909381362,77.9075446642074],[-101.30394019245301,78.01898489044481],[-102.94980872273305,78.34322866486022],[-105.17613277873154,78.38033234324574],[-104.21042945027716,78.6774201524918],[-105.41958045125854,78.91833567983645],[-105.49228919149316,79.30159393992919],[-103.52928239623793,79.16534902619165],[-100.82515804726881,78.80046173777869],[-100.06019182005214,78.3247543403159]]],[[[-87.02,79.66],[-85.81435,79.3369],[-87.18756,79.0393],[-89.03535,78.28723],[-90.80436,78.21533],[-92.87669,78.34333],[-93.95116,78.75099],[-93.93574,79.11373],[-93.14524,79.3801],[-94.974,79.37248],[-96.07614,79.70502],[-96.70972,80.15777],[-96.01644,80.60233],[-95.32345,80.90729],[-94.29843,80.97727],[-94.73542,81.20646],[-92.40984,81.25739],[-91.13289,80.72345],[-89.45,80.50932203389829],[-87.81,80.32],[-87.02,79.66]]],[[[-68.5,83.10632151676575],[-65.82735,83.02801],[-63.68,82.9],[-61.85,82.6286],[-61.89388,82.36165],[-64.334,81.92775],[-66.75342,81.72527],[-67.65755,81.50141],[-65.48031,81.50657],[-67.84,80.9],[-69.4697,80.61683],[-71.18,79.8],[-73.2428,79.63415],[-73.88,79.43016220480207],[-76.90773,79.32309],[-75.52924,79.19766],[-76.22046,79.01907],[-75.39345,78.52581],[-76.34354,78.18296],[-77.88851,77.89991],[-78.36269,77.50859],[-79.75951,77.20968],[-79.61965,76.98336],[-77.91089,77.022045],[-77.88911,76.777955],[-80.56125,76.17812],[-83.17439,76.45403],[-86.11184,76.29901],[-87.6,76.42],[-89.49068,76.47239],[-89.6161,76.95213],[-87.76739,77.17833],[-88.26,77.9],[-87.65,77.97022222222222],[-84.97634,77.53873],[-86.34,78.18],[-87.96192,78.37181],[-87.15198,78.75867],[-85.37868,78.9969],[-85.09495,79.34543],[-86.50734,79.73624],[-86.93179,80.25145],[-84.19844,80.20836],[-83.40869565217383,80.1],[-81.84823,80.46442],[-84.1,80.58],[-87.59895,80.51627],[-89.36663,80.85569],[-90.2,81.26],[-91.36786,81.5531],[-91.58702,81.89429],[-90.1,82.085],[-88.93227,82.11751],[-86.97024,82.27961],[-85.5,82.65227345805704],[-84.260005,82.6],[-83.18,82.32],[-82.42,82.86],[-81.1,83.02],[-79.30664,83.13056],[-76.25,83.1720588235294],[-75.71878,83.06404],[-72.83153,83.23324],[-70.665765,83.16978075838284],[-68.5,83.10632151676575]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Costa Rica","sov_a3":"CRI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Costa Rica","adm0_a3":"CRI","geou_dif":0,"geounit":"Costa Rica","gu_a3":"CRI","su_dif":0,"subunit":"Costa Rica","su_a3":"CRI","brk_diff":0,"name":"Costa Rica","name_long":"Costa Rica","brk_a3":"CRI","brk_name":"Costa Rica","brk_group":null,"abbrev":"C.R.","postal":"CR","formal_en":"Republic of Costa Rica","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Costa Rica","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":4,"mapcolor13":2,"pop_est":4253877,"gdp_md_est":48320,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CR","iso_a3":"CRI","iso_n3":"188","un_a3":"188","wb_a2":"CR","wb_a3":"CRI","woe_id":-99,"adm0_a3_is":"CRI","adm0_a3_us":"CRI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CRI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-82.96578304719736,8.225027980985985],[-83.50843726269431,8.446926581247283],[-83.71147396516908,8.656836249216866],[-83.59631303580665,8.830443223501419],[-83.63264156770784,9.051385809765321],[-83.90988562695372,9.29080272057358],[-84.30340165885636,9.487354030795714],[-84.64764421256866,9.615537421095707],[-84.71335079622777,9.908051866083852],[-84.97566036654133,10.086723130733006],[-84.91137488477024,9.795991522658923],[-85.11092342806532,9.55703969974131],[-85.33948828809227,9.83454214114866],[-85.66078650586698,9.933347479690724],[-85.79744483106285,10.134885565629034],[-85.79170874707843,10.439337266476613],[-85.65931372754666,10.75433095951172],[-85.94172543002176,10.895278428587801],[-85.7125404528073,11.088444932494824],[-85.56185197624418,11.217119248901597],[-84.90300330273895,10.952303371621896],[-84.67306901725627,11.082657172078143],[-84.35593075228104,10.999225572142905],[-84.19017859570485,10.793450018756674],[-83.89505449088595,10.726839097532446],[-83.65561174186158,10.938764146361422],[-83.40231970898296,10.395438137244652],[-83.01567664257517,9.992982082555555],[-82.54619625520348,9.566134751824677],[-82.93289099804358,9.476812038608173],[-82.92715491405916,9.074330145702916],[-82.71918311230053,8.925708726431495],[-82.86865719270477,8.807266343618522],[-82.82977067740516,8.62629547773237],[-82.91317643912421,8.42351715741907],[-82.96578304719736,8.225027980985985]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Cuba","sov_a3":"CUB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Cuba","adm0_a3":"CUB","geou_dif":0,"geounit":"Cuba","gu_a3":"CUB","su_dif":0,"subunit":"Cuba","su_a3":"CUB","brk_diff":0,"name":"Cuba","name_long":"Cuba","brk_a3":"CUB","brk_name":"Cuba","brk_group":null,"abbrev":"Cuba","postal":"CU","formal_en":"Republic of Cuba","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Cuba","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":3,"mapcolor13":4,"pop_est":11451652,"gdp_md_est":108200,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CU","iso_a3":"CUB","iso_n3":"192","un_a3":"192","wb_a2":"CU","wb_a3":"CUB","woe_id":-99,"adm0_a3_is":"CUB","adm0_a3_us":"CUB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CUB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-82.26815121125706,23.188610744717703],[-81.40445716014683,23.11727142993878],[-80.6187686835812,23.105980129483],[-79.67952368846025,22.76530324959883],[-79.28148596873207,22.399201565027056],[-78.34743445505649,22.512166246017088],[-77.99329586456028,22.277193508385935],[-77.14642249216105,21.657851467367834],[-76.52382483590856,21.206819566324373],[-76.19462012399319,21.220565497314013],[-75.59822241891267,21.016624457274133],[-75.67106035022806,20.735091254148],[-74.9338960435845,20.693905137611385],[-74.17802486845126,20.28462779385974],[-74.29664811877724,20.05037852628068],[-74.96159461129294,19.92343537035569],[-75.63468014189459,19.873774318923196],[-76.323656175426,19.95289093676206],[-77.75548092315306,19.855480861891873],[-77.08510840524674,20.413353786698792],[-77.49265458851661,20.67310537361389],[-78.13729224314159,20.73994883878343],[-78.48282670766119,21.02861338956585],[-78.71986650258401,21.598113511638434],[-79.28499996612794,21.5591753199065],[-80.21747534861865,21.827324327069036],[-80.51753455272141,22.03707896574176],[-81.82094336620318,22.19205658618507],[-82.16999182811864,22.38710927987075],[-81.79500179719267,22.636964830001958],[-82.77589799674084,22.688150336187064],[-83.49445878775936,22.16851797127613],[-83.90880042187563,22.154565334557333],[-84.05215084505326,21.910575059491254],[-84.54703019889638,21.801227728761642],[-84.97491105827311,21.89602814380109],[-84.44706214062776,22.204949856041907],[-84.23035702181178,22.565754706303764],[-83.7782399156902,22.788118394455694],[-83.26754757356575,22.983041897060644],[-82.51043616405751,23.078746649665188],[-82.26815121125706,23.188610744717703]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Denmark","sov_a3":"DN1","adm0_dif":1,"level":2,"type":"Country","admin":"Greenland","adm0_a3":"GRL","geou_dif":0,"geounit":"Greenland","gu_a3":"GRL","su_dif":0,"subunit":"Greenland","su_a3":"GRL","brk_diff":0,"name":"Greenland","name_long":"Greenland","brk_a3":"GRL","brk_name":"Greenland","brk_group":null,"abbrev":"Grlnd.","postal":"GL","formal_en":"Greenland","formal_fr":null,"note_adm0":"Den.","note_brk":null,"name_sort":"Greenland","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":3,"mapcolor13":12,"pop_est":57600,"gdp_md_est":1100,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"GL","iso_a3":"GRL","iso_n3":"304","un_a3":"304","wb_a2":"GL","wb_a3":"GRL","woe_id":-99,"adm0_a3_is":"GRL","adm0_a3_us":"GRL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Northern America","region_wb":"Europe & Central Asia","name_len":9,"long_len":9,"abbrev_len":6,"tiny":-99,"homepart":-99,"filename":"GRL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-46.76379,82.62796],[-43.40644,83.22516],[-39.89753,83.18018],[-38.62214,83.54905],[-35.08787,83.64513],[-27.10046,83.51966],[-20.84539,82.72669],[-22.69182,82.34165],[-26.51753,82.29765],[-31.9,82.2],[-31.39646,82.02154],[-27.85666,82.13178],[-24.84448,81.78697],[-22.90328,82.09317],[-22.07175,81.73449],[-23.16961,81.15271],[-20.62363,81.52462],[-15.76818,81.91245],[-12.77018,81.71885],[-12.20855,81.29154],[-16.28533,80.58004],[-16.85,80.35],[-20.04624,80.17708],[-17.73035,80.12912],[-18.9,79.4],[-19.70499,78.75128],[-19.67353,77.63859],[-18.47285,76.98565],[-20.03503,76.94434],[-21.67944,76.62795],[-19.83407,76.09808],[-19.59896,75.24838],[-20.66818,75.15585],[-19.37281,74.29561],[-21.59422,74.22382],[-20.43454,73.81713],[-20.76234,73.46436],[-22.17221,73.30955],[-23.56593,73.30663],[-22.31311,72.62928],[-22.29954,72.18409],[-24.27834,72.59788],[-24.79296,72.3302],[-23.44296,72.08016],[-22.13281,71.46898],[-21.75356,70.66369],[-23.53603,70.471],[-24.30702,70.85649],[-25.54341,71.43094],[-25.20135,70.75226],[-26.36276,70.22646],[-23.72742,70.18401],[-22.34902,70.12946],[-25.02927,69.2588],[-27.74737,68.47046],[-30.67371,68.12503],[-31.77665,68.12078],[-32.81105,67.73547],[-34.20196,66.67974],[-36.35284,65.9789],[-37.04378,65.93768],[-38.37505,65.69213],[-39.81222,65.45848],[-40.66899,64.83997],[-40.68281,64.13902],[-41.1887,63.48246],[-42.81938,62.68233],[-42.41666,61.90093],[-42.86619,61.07404],[-43.3784,60.09772],[-44.7875,60.03676],[-46.26364,60.85328],[-48.26294,60.85843],[-49.23308,61.40681],[-49.90039,62.38336],[-51.63325,63.62691],[-52.14014,64.27842],[-52.27659,65.1767],[-53.66166,66.09957],[-53.30161,66.8365],[-53.96911,67.18899],[-52.9804,68.35759],[-51.47536,68.72958],[-51.08041,69.14781],[-50.87122,69.9291],[-52.013585,69.574925],[-52.55792,69.42616],[-53.45629,69.283625],[-54.68336,69.61003],[-54.75001,70.28932],[-54.35884,70.821315],[-53.431315,70.835755],[-51.39014,70.56978],[-53.10937,71.20485],[-54.00422,71.54719],[-55,71.40653696727257],[-55.83468,71.65444],[-54.71819,72.58625],[-55.32634,72.95861],[-56.12003,73.64977],[-57.32363,74.71026],[-58.59679,75.09861],[-58.58516,75.51727],[-61.26861,76.10238],[-63.39165,76.1752],[-66.06427,76.13486],[-68.50438,76.06141],[-69.66485,76.37975],[-71.40257,77.00857],[-68.77671,77.32312],[-66.76397,77.37595],[-71.04293,77.63595],[-73.297,78.04419],[-73.15938,78.43271],[-69.37345,78.91388],[-65.7107,79.39436],[-65.3239,79.75814],[-68.02298,80.11721],[-67.15129,80.51582],[-63.68925,81.21396],[-62.23444,81.3211],[-62.65116,81.77042],[-60.28249,82.03363],[-57.20744,82.19074],[-54.13442,82.19962],[-53.04328,81.88833],[-50.39061,82.43883],[-48.00386,82.06481],[-46.59984,81.985945],[-44.523,81.6607],[-46.9007,82.19979],[-46.76379,82.62796]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Guatemala","sov_a3":"GTM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Guatemala","adm0_a3":"GTM","geou_dif":0,"geounit":"Guatemala","gu_a3":"GTM","su_dif":0,"subunit":"Guatemala","su_a3":"GTM","brk_diff":0,"name":"Guatemala","name_long":"Guatemala","brk_a3":"GTM","brk_name":"Guatemala","brk_group":null,"abbrev":"Guat.","postal":"GT","formal_en":"Republic of Guatemala","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Guatemala","name_alt":null,"mapcolor7":3,"mapcolor8":3,"mapcolor9":3,"mapcolor13":6,"pop_est":13276517,"gdp_md_est":68580,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"GT","iso_a3":"GTM","iso_n3":"320","un_a3":"320","wb_a2":"GT","wb_a3":"GTM","woe_id":-99,"adm0_a3_is":"GTM","adm0_a3_us":"GTM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":9,"long_len":9,"abbrev_len":5,"tiny":4,"homepart":1,"filename":"GTM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-90.09555457229098,13.735337632700734],[-90.60862403030085,13.909771429901951],[-91.23241024449605,13.927832342987957],[-91.68974667027912,14.126218166556455],[-92.22775000686983,14.538828640190928],[-92.20322953974731,14.830102850804069],[-92.08721594925207,15.06458466232844],[-92.22924862340628,15.25144664149586],[-91.74796017125591,16.066564846251723],[-90.46447262242265,16.069562079324655],[-90.43886695022204,16.410109768128095],[-90.60084672724092,16.47077789963876],[-90.71182186558772,16.687483018454728],[-91.08167009150065,16.918476670799404],[-91.45392127151516,17.252177232324172],[-91.0022692532842,17.25465770107418],[-91.00151994501596,17.81759491624571],[-90.06793351923098,17.819326076727474],[-89.14308041050332,17.80831899664932],[-89.15080603713095,17.015576687075836],[-89.22912167026928,15.88693756760517],[-88.93061275913527,15.887273464415074],[-88.60458614780583,15.70638011317736],[-88.51836402052686,15.855389105690975],[-88.22502275262202,15.727722479713902],[-88.68067969435563,15.346247056535304],[-89.15481096063357,15.06641917567481],[-89.22522009963127,14.874286200413621],[-89.14553504103718,14.678019110569084],[-89.35332597528279,14.424132798719116],[-89.58734269891654,14.362586167859488],[-89.53421932652051,14.244815578666305],[-89.72193396682073,14.134228013561694],[-90.0646779039966,13.881969509328924],[-90.09555457229098,13.735337632700734]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Honduras","sov_a3":"HND","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Honduras","adm0_a3":"HND","geou_dif":0,"geounit":"Honduras","gu_a3":"HND","su_dif":0,"subunit":"Honduras","su_a3":"HND","brk_diff":0,"name":"Honduras","name_long":"Honduras","brk_a3":"HND","brk_name":"Honduras","brk_group":null,"abbrev":"Hond.","postal":"HN","formal_en":"Republic of Honduras","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Honduras","name_alt":null,"mapcolor7":2,"mapcolor8":5,"mapcolor9":2,"mapcolor13":5,"pop_est":7792854,"gdp_md_est":33720,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"HN","iso_a3":"HND","iso_n3":"340","un_a3":"340","wb_a2":"HN","wb_a3":"HND","woe_id":-99,"adm0_a3_is":"HND","adm0_a3_us":"HND","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"HND.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-87.31665442579549,12.984685777229004],[-87.48940873894713,13.297534898323931],[-87.79311113152653,13.384480495655168],[-87.72350297722932,13.785050360565606],[-87.85951534702161,13.893312486217097],[-88.06534257684012,13.96462596277979],[-88.50399797234962,13.845485948130943],[-88.54123084181595,13.980154730683523],[-88.84307288283276,14.140506700085211],[-89.05851192905766,14.340029405164215],[-89.35332597528281,14.424132798719086],[-89.14553504103719,14.678019110569153],[-89.22522009963124,14.874286200413678],[-89.15481096063353,15.066419175674866],[-88.6806796943556,15.34624705653539],[-88.22502275262195,15.72772247971403],[-88.12115312371537,15.688655096901359],[-87.90181250685241,15.864458319558196],[-87.61568010125234,15.8787985295192],[-87.52292090528846,15.797278957578783],[-87.36776241733213,15.84694000901129],[-86.90319129102818,15.756712958229569],[-86.44094560417739,15.78283539475319],[-86.11923397494434,15.893448798073962],[-86.00195431185784,16.00540578863439],[-85.68331743034628,15.953651841693953],[-85.44400387240256,15.885749009662446],[-85.18244361035721,15.90915843349063],[-84.98372188997882,15.995923163308701],[-84.52697974316715,15.857223619037427],[-84.36825558138258,15.835157782448732],[-84.06305457226682,15.648244126849136],[-83.77397661002612,15.42407176356687],[-83.41038123242036,15.270902818253774],[-83.14721900097413,14.99582916916421],[-83.48998877636602,15.016267198135663],[-83.62858496777288,14.880073960830371],[-83.97572140169359,14.749435939996486],[-84.22834164095241,14.74876414637663],[-84.4493359036486,14.621614284722511],[-84.64958207877963,14.666805324761867],[-84.8200367906943,14.81958669683263],[-84.92450069857233,14.790492865452336],[-85.05278744173688,14.551541042534723],[-85.14875057650288,14.560196844943619],[-85.16536454948482,14.35436961512505],[-85.51441301140028,14.079011745657908],[-85.69866533073696,13.960078436738002],[-85.8012947252685,13.836054999237604],[-86.09626380079061,14.038187364147234],[-86.31214209668985,13.771356106008225],[-86.52070817741992,13.778487453664468],[-86.75508663607962,13.75484548589094],[-86.73382178419149,13.263092556201398],[-86.88055701368438,13.254204209847217],[-87.00576900912743,13.025794379117258],[-87.31665442579549,12.984685777229004]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Dominican Republic","sov_a3":"DOM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Dominican Republic","adm0_a3":"DOM","geou_dif":0,"geounit":"Dominican Republic","gu_a3":"DOM","su_dif":0,"subunit":"Dominican Republic","su_a3":"DOM","brk_diff":0,"name":"Dominican Republic","name_long":"Dominican Republic","brk_a3":"DOM","brk_name":"Dominican Rep.","brk_group":null,"abbrev":"Dom. Rep.","postal":"DO","formal_en":"Dominican Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Dominican Republic","name_alt":null,"mapcolor7":5,"mapcolor8":2,"mapcolor9":5,"mapcolor13":7,"pop_est":9650054,"gdp_md_est":78000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"DO","iso_a3":"DOM","iso_n3":"214","un_a3":"214","wb_a2":"DO","wb_a3":"DOM","woe_id":-99,"adm0_a3_is":"DOM","adm0_a3_us":"DOM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":14,"long_len":18,"abbrev_len":9,"tiny":-99,"homepart":1,"filename":"DOM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-71.71236141629296,19.714455878167357],[-71.58730445014663,19.8849105900821],[-70.80670610216174,19.880285549391985],[-70.21436499701613,19.62288524014616],[-69.95081519232758,19.647999986240006],[-69.76925004747008,19.293267116772437],[-69.22212582057988,19.313214219637103],[-69.25434607611385,19.015196234609874],[-68.80941199408083,18.979074408437853],[-68.31794328476897,18.612197577381693],[-68.68931596543452,18.205142320218613],[-69.16494584824892,18.42264842373511],[-69.62398759629764,18.380712998930246],[-69.95293392605154,18.42830699307106],[-70.1332329983179,18.245915025296895],[-70.51713721381422,18.184290879788833],[-70.66929846869763,18.426885891183034],[-70.99995012071719,18.283328762276213],[-71.4002099270339,17.5985643579766],[-71.65766191271202,17.7575727401387],[-71.70830481635805,18.04499705654609],[-71.68773759630587,18.31666006110447],[-71.94511206733556,18.61690013272026],[-71.70130265978248,18.78541697842405],[-71.62487321642283,19.169837958243306],[-71.71236141629296,19.714455878167357]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Jamaica","sov_a3":"JAM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Jamaica","adm0_a3":"JAM","geou_dif":0,"geounit":"Jamaica","gu_a3":"JAM","su_dif":0,"subunit":"Jamaica","su_a3":"JAM","brk_diff":0,"name":"Jamaica","name_long":"Jamaica","brk_a3":"JAM","brk_name":"Jamaica","brk_group":null,"abbrev":"Jam.","postal":"J","formal_en":"Jamaica","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Jamaica","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":4,"mapcolor13":10,"pop_est":2825928,"gdp_md_est":20910,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"JM","iso_a3":"JAM","iso_n3":"388","un_a3":"388","wb_a2":"JM","wb_a3":"JAM","woe_id":-99,"adm0_a3_is":"JAM","adm0_a3_us":"JAM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"JAM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-77.56960079619921,18.490525417550487],[-76.89661861846211,18.400866807524082],[-76.36535905628554,18.160700588447597],[-76.19965857614164,17.886867173732966],[-76.9025614081757,17.868237819891746],[-77.20634131540348,17.70111623785982],[-77.76602291534061,17.86159739834224],[-78.33771928578561,18.225967922432233],[-78.21772661000388,18.454532782459193],[-77.79736467152563,18.524218451404778],[-77.56960079619921,18.490525417550487]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Haiti","sov_a3":"HTI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Haiti","adm0_a3":"HTI","geou_dif":0,"geounit":"Haiti","gu_a3":"HTI","su_dif":0,"subunit":"Haiti","su_a3":"HTI","brk_diff":0,"name":"Haiti","name_long":"Haiti","brk_a3":"HTI","brk_name":"Haiti","brk_group":null,"abbrev":"Haiti","postal":"HT","formal_en":"Republic of Haiti","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Haiti","name_alt":null,"mapcolor7":2,"mapcolor8":1,"mapcolor9":7,"mapcolor13":2,"pop_est":9035536,"gdp_md_est":11500,"pop_year":-99,"lastcensus":2003,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"HT","iso_a3":"HTI","iso_n3":"332","un_a3":"332","wb_a2":"HT","wb_a3":"HTI","woe_id":-99,"adm0_a3_is":"HTI","adm0_a3_us":"HTI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"HTI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-73.18979061551762,19.915683905511912],[-72.57967281766362,19.871500555902358],[-71.71236141629296,19.714455878167357],[-71.62487321642283,19.169837958243306],[-71.70130265978248,18.78541697842405],[-71.94511206733556,18.61690013272026],[-71.68773759630587,18.31666006110447],[-71.70830481635805,18.04499705654609],[-72.37247616238935,18.21496084235406],[-72.84441118029488,18.14561107021836],[-73.45455481636503,18.217906398994696],[-73.92243323433566,18.030992743395004],[-74.45803361682478,18.342549953682706],[-74.36992529976713,18.66490753831941],[-73.44954220243272,18.526052964751145],[-72.69493709989064,18.445799465401862],[-72.334881557897,18.668421535715254],[-72.79164954292489,19.10162506761803],[-72.78410478381028,19.48359141690341],[-73.41502234566175,19.639550889560283],[-73.18979061551762,19.915683905511912]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Nicaragua","sov_a3":"NIC","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Nicaragua","adm0_a3":"NIC","geou_dif":0,"geounit":"Nicaragua","gu_a3":"NIC","su_dif":0,"subunit":"Nicaragua","su_a3":"NIC","brk_diff":0,"name":"Nicaragua","name_long":"Nicaragua","brk_a3":"NIC","brk_name":"Nicaragua","brk_group":null,"abbrev":"Nic.","postal":"NI","formal_en":"Republic of Nicaragua","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Nicaragua","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":9,"pop_est":5891199,"gdp_md_est":16790,"pop_year":-99,"lastcensus":2005,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"NI","iso_a3":"NIC","iso_n3":"558","un_a3":"558","wb_a2":"NI","wb_a3":"NIC","woe_id":-99,"adm0_a3_is":"NIC","adm0_a3_us":"NIC","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"NIC.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-85.7125404528073,11.088444932494824],[-86.05848832878526,11.403438625529944],[-86.52584998243296,11.806876532432597],[-86.74599158399633,12.143961900272487],[-87.16751624220116,12.458257961471656],[-87.66849341505471,12.909909979702633],[-87.5574666002756,13.064551703336065],[-87.39238623731923,12.914018256069838],[-87.31665442579549,12.984685777228975],[-87.00576900912756,13.025794379117157],[-86.88055701368437,13.254204209847245],[-86.7338217841916,13.263092556201443],[-86.7550866360797,13.754845485890913],[-86.5207081774199,13.77848745366444],[-86.31214209668993,13.77135610600817],[-86.0962638007906,14.038187364147248],[-85.80129472526859,13.83605499923759],[-85.69866533073693,13.960078436738087],[-85.51441301140025,14.079011745657837],[-85.1653645494848,14.354369615125078],[-85.14875057650296,14.560196844943619],[-85.05278744173692,14.551541042534723],[-84.9245006985724,14.790492865452352],[-84.82003679069435,14.819586696832669],[-84.64958207877962,14.666805324761754],[-84.4493359036486,14.621614284722495],[-84.22834164095241,14.748764146376658],[-83.97572140169359,14.749435939996461],[-83.62858496777292,14.880073960830302],[-83.48998877636612,15.016267198135536],[-83.14721900097413,14.99582916916411],[-83.23323442252394,14.899866034398102],[-83.2841615465476,14.6766238468972],[-83.18212643098728,14.31070302983845],[-83.41249996614445,13.970077826386557],[-83.51983191601468,13.567699286345883],[-83.55220720084554,13.127054348193086],[-83.49851538769427,12.869292303921227],[-83.47332312695198,12.419087225794428],[-83.62610449902292,12.320850328007566],[-83.71961300325506,11.893124497927726],[-83.65085751009072,11.629032090700118],[-83.8554703437504,11.373311265503787],[-83.80893571647155,11.103043524617274],[-83.65561174186158,10.938764146361422],[-83.89505449088595,10.726839097532446],[-84.19017859570485,10.793450018756674],[-84.35593075228104,10.999225572142905],[-84.67306901725627,11.082657172078143],[-84.90300330273895,10.952303371621896],[-85.56185197624418,11.217119248901597],[-85.7125404528073,11.088444932494824]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Panama","sov_a3":"PAN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Panama","adm0_a3":"PAN","geou_dif":0,"geounit":"Panama","gu_a3":"PAN","su_dif":0,"subunit":"Panama","su_a3":"PAN","brk_diff":0,"name":"Panama","name_long":"Panama","brk_a3":"PAN","brk_name":"Panama","brk_group":null,"abbrev":"Pan.","postal":"PA","formal_en":"Republic of Panama","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Panama","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":6,"mapcolor13":3,"pop_est":3360474,"gdp_md_est":38830,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PA","iso_a3":"PAN","iso_n3":"591","un_a3":"591","wb_a2":"PA","wb_a3":"PAN","woe_id":-99,"adm0_a3_is":"PAN","adm0_a3_us":"PAN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"PAN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-77.88157141794525,7.223771267114785],[-78.21493608266012,7.512254950384161],[-78.42916073272607,8.052041123888927],[-78.18209570993864,8.319182440621773],[-78.4354652574657,8.38770538984079],[-78.62212053090394,8.718124497915028],[-79.12030717641375,8.996092027213022],[-79.55787736684519,8.932374986197146],[-79.76057817251004,8.5845150822244],[-80.16448116730334,8.333315944853595],[-80.38265906443961,8.298408514840432],[-80.4806892564973,8.09030752200107],[-80.00368994822716,7.547524115423371],[-80.276670701809,7.419754136581715],[-80.42115800649708,7.271571966984764],[-80.8864009264208,7.220541490096537],[-81.05954281281473,7.817921047390596],[-81.18971574575795,7.647905585150339],[-81.51951473664468,7.706610012233909],[-81.72131120474445,8.108962714058435],[-82.13144120962892,8.175392767769635],[-82.39093441438257,8.29236237226229],[-82.82008134635042,8.290863755725823],[-82.85095801464482,8.073822740099956],[-82.96578304719736,8.225027980985985],[-82.91317643912421,8.42351715741907],[-82.82977067740516,8.62629547773237],[-82.86865719270477,8.807266343618522],[-82.71918311230053,8.925708726431495],[-82.92715491405916,9.074330145702916],[-82.93289099804358,9.476812038608173],[-82.54619625520348,9.566134751824677],[-82.18712256542341,9.20744863528678],[-82.20758643261095,8.9955752628901],[-81.80856686066929,8.950616766796173],[-81.71415401887204,9.031955471223583],[-81.43928707551154,8.786234035675719],[-80.94730160187676,8.858503526235905],[-80.52190121125008,9.111072089062432],[-79.91459977895599,9.31276520429762],[-79.57330278188431,9.611610012241526],[-79.02119177927793,9.552931423374105],[-79.05845048696037,9.454565334506526],[-78.50088762074719,9.420458889193881],[-78.05592770049802,9.2477304142583],[-77.72951351592641,8.946844387238869],[-77.35336076527385,8.67050466555807],[-77.47472286651133,8.524286200388218],[-77.24256649444008,7.935278225125444],[-77.43110795765699,7.638061224798735],[-77.75341386586139,7.709839789252142],[-77.88157141794525,7.223771267114785]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"United States of America","sov_a3":"US1","adm0_dif":1,"level":2,"type":"Dependency","admin":"Puerto Rico","adm0_a3":"PRI","geou_dif":0,"geounit":"Puerto Rico","gu_a3":"PRI","su_dif":0,"subunit":"Puerto Rico","su_a3":"PRI","brk_diff":0,"name":"Puerto Rico","name_long":"Puerto Rico","brk_a3":"PRI","brk_name":"Puerto Rico","brk_group":null,"abbrev":"P.R.","postal":"PR","formal_en":"Commonwealth of Puerto Rico","formal_fr":null,"note_adm0":"Commonwealth of U.S.A.","note_brk":null,"name_sort":"Puerto Rico","name_alt":null,"mapcolor7":4,"mapcolor8":5,"mapcolor9":1,"mapcolor13":1,"pop_est":3971020,"gdp_md_est":70230,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"PR","iso_a3":"PRI","iso_n3":"630","un_a3":"630","wb_a2":"PR","wb_a3":"PRI","woe_id":-99,"adm0_a3_is":"PRI","adm0_a3_us":"PRI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":11,"long_len":11,"abbrev_len":4,"tiny":-99,"homepart":-99,"filename":"PRI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-66.28243445500821,18.514761664295364],[-65.7713028632093,18.426679185453878],[-65.59100379094295,18.228034979723915],[-65.84716386581377,17.97590566657186],[-66.59993445500949,17.981822618069273],[-67.18416236028527,17.946553453030077],[-67.24242753769435,18.374460150622937],[-67.10067908391774,18.52060110114435],[-66.28243445500821,18.514761664295364]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Mexico","sov_a3":"MEX","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Mexico","adm0_a3":"MEX","geou_dif":0,"geounit":"Mexico","gu_a3":"MEX","su_dif":0,"subunit":"Mexico","su_a3":"MEX","brk_diff":0,"name":"Mexico","name_long":"Mexico","brk_a3":"MEX","brk_name":"Mexico","brk_group":null,"abbrev":"Mex.","postal":"MX","formal_en":"United Mexican States","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Mexico","name_alt":null,"mapcolor7":6,"mapcolor8":1,"mapcolor9":7,"mapcolor13":3,"pop_est":111211789,"gdp_md_est":1563000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"4. Emerging region: MIKT","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MX","iso_a3":"MEX","iso_n3":"484","un_a3":"484","wb_a2":"MX","wb_a3":"MEX","woe_id":-99,"adm0_a3_is":"MEX","adm0_a3_us":"MEX","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MEX.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-97.14000830767071,25.869997463478395],[-97.52807247596655,24.992144069920297],[-97.70294552284223,24.272343044526735],[-97.77604183631905,22.932579860927657],[-97.87236670611111,22.44421173755336],[-97.69904395220419,21.898689480064263],[-97.38895952023677,21.411018988525825],[-97.18933346229329,20.635433254473128],[-96.52557552772032,19.890930894444068],[-96.29212724484177,19.320371405509547],[-95.90088497595995,18.82802419684873],[-94.83906348344271,18.562717393462208],[-94.4257295397562,18.144370835843347],[-93.5486512926824,18.423836981677937],[-92.7861138577835,18.52483856859226],[-92.0373481920904,18.704569200103432],[-91.40790340855926,18.87608327888023],[-90.77186987991087,19.28412038825678],[-90.53358985061305,19.8674181177513],[-90.45147599970124,20.707521877520435],[-90.27861833368489,20.99985545499555],[-89.60132117385149,21.26172577563449],[-88.54386633986284,21.49367544197662],[-87.65841651075772,21.458845526611977],[-87.05189022494807,21.543543199138295],[-86.81198238803296,21.331514797444754],[-86.84590796583262,20.849864610268355],[-87.38329118523586,20.25540477139873],[-87.62105445021075,19.64655304613592],[-87.43675045444176,19.47240346931227],[-87.58656043165593,19.04013011319074],[-87.83719112827151,18.25981598558343],[-88.09066402866318,18.51664785407405],[-88.30003109409364,18.49998220466],[-88.4901228502793,18.48683055264172],[-88.84834387892658,17.883198147040332],[-89.02985734735176,18.00151133877256],[-89.15090938999549,17.955467637600407],[-89.14308041050333,17.808318996649405],[-90.0679335192309,17.81932607672752],[-91.00151994501596,17.817594916245696],[-91.00226925328417,17.25465770107428],[-91.45392127151511,17.252177232324186],[-91.0816700915006,16.91847667079952],[-90.71182186558764,16.687483018454767],[-90.60084672724093,16.47077789963879],[-90.438866950222,16.41010976812811],[-90.46447262242265,16.069562079324726],[-91.74796017125595,16.066564846251765],[-92.2292486234063,15.251446641495873],[-92.08721594925203,15.064584662328512],[-92.20322953974727,14.83010285080411],[-92.22775000686983,14.538828640190957],[-93.35946387406176,15.615429592343672],[-93.87516883011851,15.940164292865914],[-94.69165646033014,16.200975246642884],[-95.25022701697304,16.128318182840644],[-96.05338212765331,15.752087917539596],[-96.55743404822829,15.65351512294279],[-97.26359249549665,15.917064927631316],[-98.01302995480961,16.107311713113912],[-98.94767574745651,16.566043402568763],[-99.69739742714705,16.70616404872817],[-100.82949886758131,17.17107107184205],[-101.66608862995446,17.649026394109626],[-101.91852800170022,17.916090196193977],[-102.47813208698891,17.975750637275098],[-103.50098954955808,18.29229462327885],[-103.91752743204682,18.74857168220001],[-104.9920096504755,19.316133938061682],[-105.49303849976144,19.946767279535436],[-105.73139604370766,20.434101874264115],[-105.39777299683135,20.531718654863425],[-105.50066077352443,20.81689504646613],[-105.27075232625793,21.07628489835514],[-105.26581722697402,21.42210358325235],[-105.6031609769754,21.871145941652568],[-105.69341386597313,22.269080308516152],[-106.02871639689897,22.773752346278627],[-106.90998043498837,23.767774359628902],[-107.91544877809139,24.54891531015295],[-108.40190487347098,25.17231395110593],[-109.26019873740665,25.58060944264406],[-109.44408932171734,25.824883938087677],[-109.29164384645627,26.442934068298428],[-109.80145768923182,26.676175645447927],[-110.3917317370857,27.16211497650454],[-110.64101884646163,27.859876003525528],[-111.17891883018785,27.941240546169066],[-111.75960689985163,28.46795258230395],[-112.2282346260904,28.95440867768349],[-112.27182369672869,29.266844387320074],[-112.80959448937398,30.021113593052345],[-113.16381059451868,30.78688080496943],[-113.14866939985717,31.17096588797892],[-113.87188106978186,31.567608344035193],[-114.2057366606035,31.52404511161313],[-114.77645117883503,31.799532172161147],[-114.93669979537212,31.3934846054276],[-114.77123185917351,30.913617255165267],[-114.67389929895177,30.162681179315992],[-114.33097449426292,29.75043244070741],[-113.58887508833544,29.061611436473015],[-113.42405310754054,28.82617361095123],[-113.27196936730553,28.7547826197399],[-113.14003943566439,28.411289374295958],[-112.9622983467965,28.42519033458251],[-112.76158708377488,27.780216783147523],[-112.45791052941166,27.52581370697476],[-112.2449519519368,27.17172679291076],[-111.6164890206192,26.662817287700477],[-111.28467464887302,25.732589830014433],[-110.98781938357239,25.294606228124564],[-110.71000688357134,24.82600434010186],[-110.65504899782887,24.298594672131117],[-110.17285620811343,24.265547593680424],[-109.77184709352855,23.811182562754198],[-109.4091043770557,23.36467234953625],[-109.43339230023292,23.1855876734287],[-109.85421932660171,22.818271592698068],[-110.03139197471444,22.823077500901206],[-110.29507097048366,23.43097321216669],[-110.94950130902805,24.00096426034599],[-111.67056840701268,24.484423122652515],[-112.18203589562147,24.738412787367167],[-112.14898881717085,25.47012523040405],[-112.3007108223797,26.012004299416613],[-112.77729671919155,26.32195954030317],[-113.46467078332194,26.768185533143424],[-113.59672990604383,26.639459540304472],[-113.84893673384424,26.90006378835244],[-114.46574662968003,27.142090358991368],[-115.055142178185,27.72272675222291],[-114.98225257043741,27.798200181585116],[-114.57036556685495,27.74148529714489],[-114.19932878299925,28.115002549750553],[-114.16201839888463,28.566111965442303],[-114.93184221073663,29.279479275015486],[-115.518653937627,29.556361599235398],[-115.88736528202958,30.180793768834178],[-116.25835038945293,30.83646434175358],[-116.72152625208498,31.635743720012044],[-117.12775999999985,32.53534],[-115.99135,32.61239000000012],[-114.72139,32.72083],[-114.815,32.52528],[-113.30498,32.03914],[-111.02361,31.33472],[-109.035,31.341940000000136],[-108.24194,31.34222],[-108.24,31.75485371816637],[-106.50759,31.75452],[-106.1429,31.39995],[-105.63159,31.08383],[-105.03737,30.64402],[-104.70575,30.12173],[-104.4569699999999,29.57196],[-103.94,29.27],[-103.11,28.97],[-102.48,29.76],[-101.6624,29.7793],[-100.9576,29.380710000000132],[-100.45584,28.696120000000118],[-100.11,28.110000000000127],[-99.52,27.54],[-99.3,26.84],[-99.02,26.37],[-98.24,26.06],[-97.53,25.84],[-97.14000830767071,25.869997463478395]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Trinidad and Tobago","sov_a3":"TTO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Trinidad and Tobago","adm0_a3":"TTO","geou_dif":0,"geounit":"Trinidad and Tobago","gu_a3":"TTO","su_dif":0,"subunit":"Trinidad and Tobago","su_a3":"TTO","brk_diff":0,"name":"Trinidad and Tobago","name_long":"Trinidad and Tobago","brk_a3":"TTO","brk_name":"Trinidad and Tobago","brk_group":null,"abbrev":"Tr.T.","postal":"TT","formal_en":"Republic of Trinidad and Tobago","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Trinidad and Tobago","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":2,"mapcolor13":5,"pop_est":1310000,"gdp_md_est":29010,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"TT","iso_a3":"TTO","iso_n3":"780","un_a3":"780","wb_a2":"TT","wb_a3":"TTO","woe_id":-99,"adm0_a3_is":"TTO","adm0_a3_us":"TTO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Caribbean","region_wb":"Latin America & Caribbean","name_len":19,"long_len":19,"abbrev_len":5,"tiny":2,"homepart":1,"filename":"TTO.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-61.68,10.76],[-61.105,10.89],[-60.895,10.855],[-60.935,10.11],[-61.77,10],[-61.95,10.09],[-61.66,10.365],[-61.68,10.76]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"El Salvador","sov_a3":"SLV","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"El Salvador","adm0_a3":"SLV","geou_dif":0,"geounit":"El Salvador","gu_a3":"SLV","su_dif":0,"subunit":"El Salvador","su_a3":"SLV","brk_diff":0,"name":"El Salvador","name_long":"El Salvador","brk_a3":"SLV","brk_name":"El Salvador","brk_group":null,"abbrev":"El. S.","postal":"SV","formal_en":"Republic of El Salvador","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"El Salvador","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":6,"mapcolor13":8,"pop_est":7185218,"gdp_md_est":43630,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SV","iso_a3":"SLV","iso_n3":"222","un_a3":"222","wb_a2":"SV","wb_a3":"SLV","woe_id":-99,"adm0_a3_is":"SLV","adm0_a3_us":"SLV","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"North America","region_un":"Americas","subregion":"Central America","region_wb":"Latin America & Caribbean","name_len":11,"long_len":11,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"SLV.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-87.79311113152657,13.384480495655055],[-87.90411210808952,13.149016831917137],[-88.48330156121682,13.163951320849492],[-88.8432279121297,13.259733588102478],[-89.2567427233293,13.458532823129303],[-89.81239356154767,13.520622056527998],[-90.09555457229098,13.735337632700734],[-90.0646779039966,13.881969509328924],[-89.72193396682073,14.134228013561694],[-89.53421932652051,14.244815578666305],[-89.58734269891654,14.362586167859488],[-89.35332597528279,14.424132798719116],[-89.05851192905766,14.340029405164085],[-88.84307288283284,14.140506700085169],[-88.541230841816,13.980154730683479],[-88.50399797234971,13.845485948130857],[-88.06534257684012,13.964625962779778],[-87.8595153470216,13.893312486216983],[-87.72350297722939,13.785050360565506],[-87.79311113152657,13.384480495655055]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Bolivia","sov_a3":"BOL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Bolivia","adm0_a3":"BOL","geou_dif":0,"geounit":"Bolivia","gu_a3":"BOL","su_dif":0,"subunit":"Bolivia","su_a3":"BOL","brk_diff":0,"name":"Bolivia","name_long":"Bolivia","brk_a3":"BOL","brk_name":"Bolivia","brk_group":null,"abbrev":"Bolivia","postal":"BO","formal_en":"Plurinational State of Bolivia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bolivia","name_alt":null,"mapcolor7":1,"mapcolor8":5,"mapcolor9":2,"mapcolor13":3,"pop_est":9775246,"gdp_md_est":43270,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BO","iso_a3":"BOL","iso_n3":"068","un_a3":"068","wb_a2":"BO","wb_a3":"BOL","woe_id":-99,"adm0_a3_is":"BOL","adm0_a3_us":"BOL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":7,"long_len":7,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"BOL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-62.846468471921554,-22.03498544686945],[-63.98683814152247,-21.99364430103595],[-64.37702104354226,-22.79809132252354],[-64.9648921372946,-22.075861504812327],[-66.27333940292485,-21.83231047942072],[-67.1066735500636,-22.735924574476414],[-67.82817989772273,-22.872918796482175],[-68.21991309271128,-21.494346612231865],[-68.75716712103375,-20.372657972904463],[-68.44222510443092,-19.40506845467143],[-68.96681840684187,-18.981683444904107],[-69.10024695501949,-18.260125420812674],[-69.59042375352405,-17.580011895419332],[-68.9596353827533,-16.50069793057127],[-69.38976416693471,-15.660129082911654],[-69.16034664577495,-15.323973890853019],[-69.33953467474701,-14.953195489158832],[-68.9488866848366,-14.453639418193283],[-68.92922380234954,-13.602683607643007],[-68.88007951523997,-12.899729099176653],[-68.66507971868961,-12.561300144097173],[-69.52967810736496,-10.951734307502194],[-68.78615759954948,-11.03638030359628],[-68.27125362819326,-11.01452117273682],[-68.04819230820539,-10.712059014532485],[-67.17380123561074,-10.30681243249961],[-66.64690833196279,-9.931331475466862],[-65.33843522811642,-9.76198780684639],[-65.44483700220539,-10.511451104375432],[-65.32189876978302,-10.895872084194679],[-65.40228146021303,-11.566270440317153],[-64.3163529120316,-12.461978041232191],[-63.19649878605057,-12.627032565972433],[-62.80306026879638,-13.000653171442686],[-62.127080857986385,-13.198780612849724],[-61.71320431176078,-13.489202162330052],[-61.08412126325565,-13.479383640194598],[-60.503304002511136,-13.775954685117659],[-60.45919816755003,-14.354007256734555],[-60.26432634137736,-14.64597909918364],[-60.251148851142936,-15.077218926659322],[-60.542965664295146,-15.093910414289596],[-60.158389655179036,-16.258283786690082],[-58.24121985536669,-16.299573256091293],[-58.38805843772404,-16.877109063385276],[-58.28080400250226,-17.271710300366017],[-57.734558274961,-17.55246835700777],[-57.498371141170985,-18.174187513911292],[-57.67600887717431,-18.961839694904025],[-57.949997321185826,-19.40000416430682],[-57.85380164247451,-19.969995212486186],[-58.166392381408045,-20.176700941653678],[-58.183471442280506,-19.868399346600363],[-59.115042487206104,-19.356906019775398],[-60.04356462262649,-19.342746677327426],[-61.786326463453776,-19.633736667562964],[-62.26596126977079,-20.513734633061276],[-62.29117936872922,-21.05163461678739],[-62.685057135657885,-22.249029229422387],[-62.846468471921554,-22.03498544686945]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Brazil","sov_a3":"BRA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Brazil","adm0_a3":"BRA","geou_dif":0,"geounit":"Brazil","gu_a3":"BRA","su_dif":0,"subunit":"Brazil","su_a3":"BRA","brk_diff":0,"name":"Brazil","name_long":"Brazil","brk_a3":"BRA","brk_name":"Brazil","brk_group":null,"abbrev":"Brazil","postal":"BR","formal_en":"Federative Republic of Brazil","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Brazil","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":5,"mapcolor13":7,"pop_est":198739269,"gdp_md_est":1993000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"3. Emerging region: BRIC","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BR","iso_a3":"BRA","iso_n3":"076","un_a3":"076","wb_a2":"BR","wb_a3":"BRA","woe_id":-99,"adm0_a3_is":"BRA","adm0_a3_us":"BRA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"BRA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.29089962423908,-28.85276051200089],[-55.16228634298457,-27.881915378533463],[-54.490725267135524,-27.47475676850579],[-53.648735317587885,-26.923472588816086],[-53.62834896504874,-26.124865004177472],[-54.13004960795439,-25.547639255477254],[-54.625290696823576,-25.73925546641551],[-54.42894609233059,-25.162184747012166],[-54.29347632507745,-24.570799655863965],[-54.29295956075451,-24.02101409271073],[-54.652834235235126,-23.83957813893396],[-55.02790178080954,-24.001273695575225],[-55.40074723979542,-23.956935316668805],[-55.517639329639636,-23.571997572526634],[-55.610682745981144,-22.655619398694842],[-55.79795813660691,-22.356929620047822],[-56.47331743022939,-22.086300144135283],[-56.8815095689029,-22.28215382252148],[-57.937155727761294,-22.090175876557172],[-57.87067399761779,-20.73268767668195],[-58.166392381408045,-20.176700941653678],[-57.85380164247451,-19.969995212486186],[-57.949997321185826,-19.40000416430682],[-57.67600887717431,-18.961839694904025],[-57.498371141170985,-18.174187513911292],[-57.734558274961,-17.55246835700777],[-58.28080400250226,-17.271710300366017],[-58.38805843772404,-16.877109063385276],[-58.24121985536669,-16.299573256091293],[-60.158389655179036,-16.258283786690082],[-60.542965664295146,-15.093910414289596],[-60.251148851142936,-15.077218926659322],[-60.26432634137736,-14.64597909918364],[-60.45919816755003,-14.354007256734555],[-60.503304002511136,-13.775954685117659],[-61.08412126325565,-13.479383640194598],[-61.71320431176078,-13.489202162330052],[-62.127080857986385,-13.198780612849724],[-62.80306026879638,-13.000653171442686],[-63.19649878605057,-12.627032565972433],[-64.3163529120316,-12.461978041232191],[-65.40228146021303,-11.566270440317153],[-65.32189876978302,-10.895872084194679],[-65.44483700220539,-10.511451104375432],[-65.33843522811642,-9.76198780684639],[-66.64690833196279,-9.931331475466862],[-67.17380123561074,-10.30681243249961],[-68.04819230820539,-10.712059014532485],[-68.27125362819326,-11.01452117273682],[-68.78615759954948,-11.03638030359628],[-69.52967810736496,-10.951734307502194],[-70.0937522040469,-11.123971856331012],[-70.54868567572841,-11.009146823778465],[-70.48189388699117,-9.490118096558845],[-71.30241227892154,-10.079436130415374],[-72.18489071316984,-10.053597914269432],[-72.56303300646564,-9.520193780152717],[-73.22671342639016,-9.462212823121234],[-73.01538265653254,-9.03283334720806],[-73.57105933296707,-8.424446709835834],[-73.98723548042966,-7.523829847853064],[-73.7234014553635,-7.340998630404414],[-73.72448666044164,-6.91859547285064],[-73.1200274319236,-6.629930922068239],[-73.21971126981461,-6.089188734566078],[-72.96450720894119,-5.741251315944893],[-72.89192765978726,-5.274561455916981],[-71.74840572781655,-4.593982842633011],[-70.92884334988358,-4.401591485210368],[-70.7947688463023,-4.251264743673303],[-69.89363521999663,-4.298186944194327],[-69.44410193548961,-1.556287123219818],[-69.42048580593223,-1.122618503426409],[-69.5770653957766,-0.549991957200163],[-70.02065589057005,-0.185156345219539],[-70.0155657619893,0.541414292804205],[-69.45239600287246,0.706158758950693],[-69.25243404811906,0.602650865070075],[-69.21863766140018,0.985676581217433],[-69.80459672715773,1.089081122233466],[-69.81697323269162,1.714805202639624],[-67.86856502955884,1.692455145673392],[-67.53781002467468,2.03716278727633],[-67.25999752467358,1.719998684084956],[-67.0650481838525,1.130112209473225],[-66.87632585312258,1.253360500489336],[-66.32576514348496,0.724452215982012],[-65.54826738143757,0.78925446207603],[-65.35471330428837,1.0952822941085],[-64.61101192895985,1.328730576987042],[-64.19930579289051,1.49285492594602],[-64.08308549666609,1.91636912679408],[-63.36878801131166,2.200899562993129],[-63.42286739770512,2.411067613124174],[-64.26999915226578,2.497005520025567],[-64.40882788761792,3.126786200366624],[-64.36849443221409,3.797210394705246],[-64.81606401229402,4.056445217297423],[-64.62865943058755,4.14848094320925],[-63.88834286157416,4.020530096854571],[-63.0931975978991,3.770571193858785],[-62.804533047116706,4.006965033377952],[-62.08542965355914,4.162123521334308],[-60.96689327660153,4.536467596856639],[-60.60117916527194,4.91809804933213],[-60.73357418480372,5.200277207861901],[-60.21368343773133,5.244486395687602],[-59.98095862490488,5.014061184098139],[-60.11100236676737,4.574966538914083],[-59.767405768458715,4.423502915866607],[-59.53803992373123,3.958802598481938],[-59.81541317405786,3.606498521332085],[-59.97452490908456,2.755232652188056],[-59.71854570172674,2.24963043864436],[-59.64604366722126,1.786893825686789],[-59.03086157900265,1.317697658692722],[-58.5400129868783,1.268088283692521],[-58.42947709820596,1.463941962078721],[-58.11344987652502,1.507195135907025],[-57.66097103537737,1.682584947105639],[-57.335822923396904,1.94853770589576],[-56.78270423036083,1.863710842288654],[-56.539385748914555,1.899522609866921],[-55.99569800477175,1.817667141116601],[-55.905600145070885,2.02199575439866],[-56.0733418442903,2.220794989425499],[-55.973322109589375,2.510363877773017],[-55.569755011606,2.421506252447131],[-55.09758744975514,2.523748073736613],[-54.52475419779971,2.311848863123785],[-54.08806250671724,2.105556545414629],[-53.77852067728892,2.376702785650082],[-53.55483924011354,2.334896551925951],[-53.4184651352953,2.053389187015981],[-52.939657151894956,2.124857692875636],[-52.55642473001842,2.504705308437053],[-52.249337531123956,3.241094468596245],[-51.65779741067888,4.156232408053029],[-51.31714636901086,4.203490505383954],[-51.069771287629656,3.650397650564031],[-50.508875291533656,1.901563828942457],[-49.97407589374506,1.736483465986069],[-49.947100796088705,1.046189683431223],[-50.699251268096916,0.222984117021682],[-50.38821082213214,-0.078444512536819],[-48.62056677915631,-0.235489190271821],[-48.58449662941659,-1.237805271005001],[-47.824956427590635,-0.5816179337628],[-46.566583624851226,-0.941027520352776],[-44.905703090990414,-1.551739597178134],[-44.417619187993665,-2.137750339367976],[-44.58158850765578,-2.691308282078524],[-43.418791266440195,-2.383110039889793],[-41.47265682632825,-2.912018324397116],[-39.97866533055404,-2.873054294449041],[-38.50038347019657,-3.700652357603395],[-37.2232521225352,-4.820945733258917],[-36.45293738457639,-5.109403578312153],[-35.59779578301047,-5.149504489770648],[-35.23538896334756,-5.464937432480247],[-34.89602983248683,-6.738193047719711],[-34.729993455533034,-7.343220716992966],[-35.12821204277422,-8.996401462442286],[-35.636966518687714,-9.649281508017815],[-37.046518724097,-11.040721123908801],[-37.68361161960736,-12.171194756725823],[-38.42387651218844,-13.038118584854288],[-38.673887091616514,-13.057652276260619],[-38.953275722802545,-13.793369642800023],[-38.88229814304965,-15.667053724838768],[-39.16109249526431,-17.208406670808472],[-39.2673392400564,-17.867746270420483],[-39.58352149103423,-18.262295830968938],[-39.76082333022764,-19.59911345792741],[-40.77474077001034,-20.904511814052423],[-40.94475623225061,-21.937316989837807],[-41.754164191238225,-22.370675551037458],[-41.98828426773655,-22.970070489190892],[-43.07470374202475,-22.96769337330547],[-44.64781185563781,-23.351959323827842],[-45.35213578955991,-23.796841729428582],[-46.47209326840554,-24.08896860117454],[-47.64897233742066,-24.885199069927722],[-48.4954581365777,-25.877024834905654],[-48.64100480812774,-26.623697605090932],[-48.47473588722865,-27.17591196056189],[-48.661520351747626,-28.186134535435716],[-48.88845740415739,-28.674115085567884],[-49.587329474472675,-29.224469089476337],[-50.696874152211485,-30.984465020472957],[-51.576226162306156,-31.77769825615321],[-52.256081305538046,-32.24536996839466],[-52.712099982297694,-33.19657805759118],[-53.373661668498244,-33.768377780900764],[-53.6505439927181,-33.20200408298183],[-53.209588995971544,-32.727666110974724],[-53.787951626182185,-32.047242526987624],[-54.57245154480512,-31.494511407193748],[-55.601510179249345,-30.853878676071393],[-55.97324459494093,-30.883075860316303],[-56.97602576356473,-30.109686374636127],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Chile","sov_a3":"CHL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Chile","adm0_a3":"CHL","geou_dif":0,"geounit":"Chile","gu_a3":"CHL","su_dif":0,"subunit":"Chile","su_a3":"CHL","brk_diff":0,"name":"Chile","name_long":"Chile","brk_a3":"CHL","brk_name":"Chile","brk_group":null,"abbrev":"Chile","postal":"CL","formal_en":"Republic of Chile","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Chile","name_alt":null,"mapcolor7":5,"mapcolor8":1,"mapcolor9":5,"mapcolor13":9,"pop_est":16601707,"gdp_md_est":244500,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CL","iso_a3":"CHL","iso_n3":"152","un_a3":"152","wb_a2":"CL","wb_a3":"CHL","woe_id":-99,"adm0_a3_is":"CHL","adm0_a3_us":"CHL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"CHL.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-68.63401022758316,-52.63637045887437],[-68.6333499999999,-54.8695],[-67.56244,-54.87001],[-66.95992,-54.89681],[-67.29102999999989,-55.30124],[-68.14862999999986,-55.61183],[-68.63999081081181,-55.58001799908689],[-69.2321,-55.49906],[-69.95809,-55.19843],[-71.00568,-55.05383],[-72.2639,-54.49514],[-73.2852,-53.95751999999989],[-74.66253,-52.83749],[-73.8381,-53.04743],[-72.43418,-53.7154],[-71.10773,-54.07433],[-70.59177999999979,-53.61583],[-70.26748,-52.93123],[-69.34564999999989,-52.5183],[-68.63401022758316,-52.63637045887437]]],[[[-68.21991309271124,-21.494346612231837],[-67.82817989772266,-22.87291879648218],[-67.10667355006362,-22.7359245744764],[-66.98523393417764,-22.98634856536283],[-67.32844295924414,-24.02530323659091],[-68.41765296087613,-24.518554782816878],[-68.38600114609736,-26.185016371365233],[-68.59479977077268,-26.506908868111267],[-68.2955415513704,-26.89933969493579],[-69.00123491074828,-27.52121388113613],[-69.65613033718314,-28.459141127233693],[-70.01355038112987,-29.36792286551855],[-69.91900834825192,-30.336339206668313],[-70.53506893581945,-31.365010267870286],[-70.07439938015364,-33.09120981214803],[-69.81477698431921,-33.27388600029985],[-69.81730912950147,-34.193571465798286],[-70.38804948594908,-35.16968759535944],[-70.36476925320167,-36.005088799789945],[-71.1218806627098,-36.65812387466234],[-71.11862504747543,-37.5768274879472],[-70.81466427273472,-38.55299529394074],[-71.41351660834904,-38.916022230791114],[-71.68076127794646,-39.80816415787807],[-71.91573401557756,-40.83233936947073],[-71.74680375841547,-42.051386407235995],[-72.14889807807853,-42.25488819760139],[-71.91542395698391,-43.40856454851742],[-71.46405615913051,-43.78761117937833],[-71.79362260607195,-44.20717213315611],[-71.32980078803621,-44.40752166115169],[-71.22277889675973,-44.784242852559416],[-71.65931555854533,-44.97368865334144],[-71.55200944689125,-45.56073292417713],[-71.91725847033021,-46.8848381487918],[-72.44735531278027,-47.73853281025353],[-72.33116085477195,-48.244238376661826],[-72.64824744331494,-48.87861825947679],[-73.41543575712004,-49.31843637471296],[-73.32805091011448,-50.37878508890987],[-72.97574683296463,-50.74145029073431],[-72.30997351753237,-50.677009779666356],[-72.32940385607404,-51.42595631287241],[-71.91480383979635,-52.009022305865926],[-69.49836218939609,-52.14276091263725],[-68.57154537624135,-52.29944385534626],[-69.46128434922664,-52.29195077266393],[-69.94277950710614,-52.53793059037325],[-70.84510169135453,-52.899200528525725],[-71.00633216010525,-53.83325204220135],[-71.42979468452094,-53.85645476030039],[-72.55794287788486,-53.531410001184454],[-73.70275672066288,-52.83506926860725],[-73.70275672066288,-52.8350700760515],[-74.94676347522515,-52.26275358841903],[-75.2600260077785,-51.629354750373224],[-74.9766324530898,-51.04339568461569],[-75.4797541978835,-50.37837167745156],[-75.60801510283196,-48.6737728818718],[-75.18276974150213,-47.71191944762316],[-74.1265809801047,-46.9392534319951],[-75.64439531116545,-46.64764332457203],[-74.69215369332306,-45.76397633238098],[-74.35170935738427,-44.103044122087894],[-73.2403560045152,-44.454960625995625],[-72.71780392117978,-42.383355808278985],[-73.38889990913825,-42.11753224056957],[-73.70133561877486,-43.365776462579745],[-74.33194312203258,-43.22495818458441],[-74.01795711942717,-41.794812920906836],[-73.67709937202997,-39.942212823243125],[-73.21759253609068,-39.258688653318515],[-73.50555945503706,-38.28288258235107],[-73.58806087919109,-37.156284681956016],[-73.1667170884993,-37.12378020604435],[-72.55313696968173,-35.508840020491036],[-71.86173214383257,-33.90909270603153],[-71.43845048692992,-32.41889942803083],[-71.66872066922244,-30.92064462659252],[-71.37008256700773,-30.095682061485004],[-71.48989437527646,-28.861442152625912],[-70.90512386746158,-27.6403797340012],[-70.72495398627598,-25.70592416758721],[-70.40396582709505,-23.628996677344542],[-70.09124589708067,-21.393319187101223],[-70.16441972520599,-19.756468194256186],[-70.37257239447774,-18.347975355708883],[-69.85844356960581,-18.092693780187034],[-69.590423753524,-17.58001189541929],[-69.10024695501943,-18.260125420812656],[-68.96681840684184,-18.981683444904093],[-68.44222510443095,-19.405068454671422],[-68.75716712103372,-20.372657972904477],[-68.21991309271124,-21.494346612231837]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Colombia","sov_a3":"COL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Colombia","adm0_a3":"COL","geou_dif":0,"geounit":"Colombia","gu_a3":"COL","su_dif":0,"subunit":"Colombia","su_a3":"COL","brk_diff":0,"name":"Colombia","name_long":"Colombia","brk_a3":"COL","brk_name":"Colombia","brk_group":null,"abbrev":"Col.","postal":"CO","formal_en":"Republic of Colombia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Colombia","name_alt":null,"mapcolor7":2,"mapcolor8":1,"mapcolor9":3,"mapcolor13":1,"pop_est":45644023,"gdp_md_est":395400,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CO","iso_a3":"COL","iso_n3":"170","un_a3":"170","wb_a2":"CO","wb_a3":"COL","woe_id":-99,"adm0_a3_is":"COL","adm0_a3_us":"COL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"COL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-75.37322323271385,-0.15203175212045],[-75.80146582711659,0.084801337073202],[-76.29231441924097,0.416047268064119],[-76.57637976754938,0.256935533037435],[-77.4249843004304,0.395686753741117],[-77.66861284047044,0.825893052570961],[-77.85506140817952,0.809925034992773],[-78.85525875518871,1.380923773601822],[-78.99093522817103,1.691369940595251],[-78.61783138702371,1.766404120283056],[-78.66211808949785,2.267355454920477],[-78.42761043975732,2.629555568854215],[-77.93154252797149,2.696605739752926],[-77.51043128122501,3.325016994638247],[-77.12768978545526,3.849636135265357],[-77.49627193877703,4.087606105969428],[-77.3076012844794,4.667984117039452],[-77.53322058786573,5.582811997902496],[-77.31881507028675,5.84535411216136],[-77.47666073272228,6.691116441266303],[-77.88157141794525,7.223771267114785],[-77.75341386586139,7.709839789252142],[-77.43110795765699,7.638061224798735],[-77.24256649444008,7.935278225125444],[-77.47472286651133,8.524286200388218],[-77.35336076527385,8.67050466555807],[-76.83667395700357,8.638749497914716],[-76.08638383655786,9.336820583529487],[-75.67460018584005,9.443248195834599],[-75.66470414905618,9.774003200718738],[-75.48042599150335,10.618990383339309],[-74.90689510771197,11.083044745320322],[-74.27675269234489,11.102035834187587],[-74.1972226630477,11.310472723836865],[-73.41476396350029,11.22701528568548],[-72.62783525255963,11.731971543825523],[-72.23819495307892,11.955549628136326],[-71.75409013536864,12.437303168177309],[-71.3998223537917,12.376040757695293],[-71.13746110704588,12.112981879113505],[-71.3315836249503,11.776284084515808],[-71.97392167833829,11.60867157637712],[-72.22757544624294,11.10870209395324],[-72.61465776232521,10.821975409381778],[-72.9052860175347,10.450344346554772],[-73.02760413276957,9.736770331252444],[-73.30495154488005,9.151999823437606],[-72.7887298245004,9.085027167187334],[-72.6604947577681,8.625287787302682],[-72.43986223009796,8.405275376820029],[-72.36090064155596,8.002638454617895],[-72.47967892117885,7.632506008327354],[-72.44448727078807,7.423784898300481],[-72.19835242378188,7.340430813013682],[-71.96017574734864,6.991614895043538],[-70.67423356798152,7.087784735538719],[-70.09331295437242,6.96037649172311],[-69.38947994655712,6.099860541198836],[-68.98531856960236,6.206804917826858],[-68.26505245631823,6.153268133972475],[-67.69508724635502,6.267318020040647],[-67.34143958196557,6.095468044454023],[-67.52153194850275,5.556870428891969],[-67.74469662135522,5.221128648291668],[-67.82301225449355,4.503937282728899],[-67.62183590358127,3.839481716319994],[-67.33756384954368,3.542342230641722],[-67.30317318385345,3.31845408773718],[-67.8099381171237,2.820655015469569],[-67.44709204778631,2.600280869960869],[-67.18129431829307,2.250638129074062],[-66.87632585312258,1.253360500489336],[-67.0650481838525,1.130112209473225],[-67.25999752467358,1.719998684084956],[-67.53781002467468,2.03716278727633],[-67.86856502955884,1.692455145673392],[-69.81697323269162,1.714805202639624],[-69.80459672715773,1.089081122233466],[-69.21863766140018,0.985676581217433],[-69.25243404811906,0.602650865070075],[-69.45239600287246,0.706158758950693],[-70.0155657619893,0.541414292804205],[-70.02065589057005,-0.185156345219539],[-69.5770653957766,-0.549991957200163],[-69.42048580593223,-1.122618503426409],[-69.44410193548961,-1.556287123219818],[-69.89363521999663,-4.298186944194327],[-70.39404395209499,-3.766591485207825],[-70.69268205430971,-3.742872002785859],[-70.04770850287485,-2.725156345229699],[-70.81347571479196,-2.256864515800743],[-71.41364579942979,-2.342802422702128],[-71.7747607082854,-2.169789727388938],[-72.32578650581365,-2.434218031426454],[-73.07039221870724,-2.308954359550953],[-73.6595035468346,-1.260491224781134],[-74.12239518908906,-1.002832533373848],[-74.44160051135597,-0.530820000819887],[-75.10662451852008,-0.05720549886486],[-75.37322323271385,-0.15203175212045]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Argentina","sov_a3":"ARG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Argentina","adm0_a3":"ARG","geou_dif":0,"geounit":"Argentina","gu_a3":"ARG","su_dif":0,"subunit":"Argentina","su_a3":"ARG","brk_diff":0,"name":"Argentina","name_long":"Argentina","brk_a3":"ARG","brk_name":"Argentina","brk_group":null,"abbrev":"Arg.","postal":"AR","formal_en":"Argentine Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Argentina","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":3,"mapcolor13":13,"pop_est":40913584,"gdp_md_est":573900,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"AR","iso_a3":"ARG","iso_n3":"032","un_a3":"032","wb_a2":"AR","wb_a3":"ARG","woe_id":-99,"adm0_a3_is":"ARG","adm0_a3_us":"ARG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ARG.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-65.5,-55.2],[-66.45,-55.25],[-66.95992,-54.89681],[-67.56244,-54.87001],[-68.63335,-54.8695],[-68.63401022758316,-52.63637045887445],[-68.25,-53.1],[-67.75,-53.85],[-66.45,-54.45],[-65.05,-54.7],[-65.5,-55.2]]],[[[-64.96489213729458,-22.075861504812348],[-64.37702104354227,-22.798091322523547],[-63.98683814152247,-21.993644301035957],[-62.846468471921554,-22.034985446869456],[-62.6850571356579,-22.249029229422405],[-60.84656470400994,-23.8807125790383],[-60.02896603050399,-24.032796319273245],[-58.80712846539495,-24.771459242453275],[-57.77721716981796,-25.16233977630904],[-57.63366004091114,-25.60365650808167],[-58.61817359071972,-27.12371876394712],[-57.60975969097615,-27.395898532828426],[-56.48670162619299,-27.54849903738625],[-55.6958455063982,-27.38783700939082],[-54.78879492859505,-26.621785577096087],[-54.625290696823555,-25.739255466415486],[-54.13004960795441,-25.54763925547725],[-53.62834896504873,-26.124865004177437],[-53.648735317587885,-26.92347258881611],[-54.49072526713553,-27.474756768505767],[-55.1622863429846,-27.88191537853342],[-56.2908996242391,-28.852760512000852],[-57.62513342958291,-30.216294854454244],[-57.87493730328191,-31.016556084926165],[-58.14244035504075,-32.04450367607619],[-58.13264767112142,-33.040566908502015],[-58.34961117209883,-33.263188978815435],[-58.42707414410438,-33.90945444105755],[-58.49544206402654,-34.43148976007011],[-57.225829637263644,-35.28802662530789],[-57.362358771378744,-35.977390232081504],[-56.73748735210546,-36.41312590916658],[-56.78828528504834,-36.901571547189334],[-57.74915686708343,-38.183870538079915],[-59.231857062401865,-38.720220228837206],[-61.23744523786561,-38.928424574541154],[-62.33595699731015,-38.82770720800437],[-62.12576310896293,-39.424104913084875],[-62.330530971919444,-40.17258635840032],[-62.14599443220524,-40.67689666113674],[-62.745802781816984,-41.02876148861209],[-63.77049475773253,-41.166789239263665],[-64.73208980981971,-40.802677097335135],[-65.11803524439159,-41.06431487402888],[-64.97856055363584,-42.05800099056932],[-64.30340796574248,-42.359016208669495],[-63.75594784204235,-42.04368661882451],[-63.45805904809589,-42.563138116222355],[-64.3788038804563,-42.87355844499964],[-65.1818039618397,-43.495380954767796],[-65.32882341171013,-44.501366062193696],[-65.5652689276616,-45.03678557716979],[-66.50996578638936,-45.03962778094584],[-67.29379391139244,-45.5518962542552],[-67.58054643418009,-46.30177296324254],[-66.59706641301726,-47.03392465595381],[-65.64102657740145,-47.236134535511894],[-65.98508826360074,-48.13328907653114],[-67.16617896184766,-48.697337334996945],[-67.81608761256646,-49.86966887797042],[-68.72874508327317,-50.26421843851887],[-69.1385391913478,-50.7325102679478],[-68.81556148952353,-51.771104011594105],[-68.14999487982041,-52.3499834061277],[-68.57154537624135,-52.29944385534626],[-69.49836218939609,-52.14276091263725],[-71.91480383979635,-52.009022305865926],[-72.32940385607404,-51.42595631287241],[-72.30997351753237,-50.677009779666356],[-72.97574683296463,-50.74145029073431],[-73.32805091011448,-50.37878508890987],[-73.41543575712004,-49.31843637471296],[-72.64824744331494,-48.87861825947679],[-72.33116085477195,-48.244238376661826],[-72.44735531278027,-47.73853281025353],[-71.91725847033021,-46.8848381487918],[-71.55200944689125,-45.56073292417713],[-71.65931555854533,-44.97368865334144],[-71.22277889675973,-44.784242852559416],[-71.32980078803621,-44.40752166115169],[-71.79362260607195,-44.20717213315611],[-71.46405615913051,-43.78761117937833],[-71.91542395698391,-43.40856454851742],[-72.14889807807853,-42.25488819760139],[-71.74680375841547,-42.051386407235995],[-71.91573401557756,-40.83233936947073],[-71.68076127794646,-39.80816415787807],[-71.41351660834904,-38.916022230791114],[-70.81466427273472,-38.55299529394074],[-71.11862504747543,-37.5768274879472],[-71.1218806627098,-36.65812387466234],[-70.36476925320167,-36.005088799789945],[-70.38804948594908,-35.16968759535944],[-69.81730912950147,-34.193571465798286],[-69.81477698431921,-33.27388600029985],[-70.07439938015364,-33.09120981214803],[-70.53506893581945,-31.365010267870286],[-69.91900834825192,-30.336339206668313],[-70.01355038112987,-29.36792286551855],[-69.65613033718314,-28.459141127233693],[-69.00123491074828,-27.52121388113613],[-68.2955415513704,-26.89933969493579],[-68.59479977077268,-26.506908868111267],[-68.38600114609736,-26.185016371365233],[-68.41765296087613,-24.518554782816878],[-67.32844295924414,-24.02530323659091],[-66.98523393417764,-22.98634856536283],[-67.10667355006362,-22.7359245744764],[-66.27333940292485,-21.832310479420684],[-64.96489213729458,-22.075861504812348]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Peru","sov_a3":"PER","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Peru","adm0_a3":"PER","geou_dif":0,"geounit":"Peru","gu_a3":"PER","su_dif":0,"subunit":"Peru","su_a3":"PER","brk_diff":0,"name":"Peru","name_long":"Peru","brk_a3":"PER","brk_name":"Peru","brk_group":null,"abbrev":"Peru","postal":"PE","formal_en":"Republic of Peru","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Peru","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":4,"mapcolor13":11,"pop_est":29546963,"gdp_md_est":247300,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PE","iso_a3":"PER","iso_n3":"604","un_a3":"604","wb_a2":"PE","wb_a3":"PER","woe_id":-99,"adm0_a3_is":"PER","adm0_a3_us":"PER","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"PER.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-69.59042375352405,-17.580011895419332],[-69.85844356960587,-18.092693780187012],[-70.37257239447771,-18.34797535570887],[-71.37525021023691,-17.773798516513857],[-71.46204077827112,-17.363487644116383],[-73.44452958850042,-16.359362888252996],[-75.23788265654144,-15.265682875227782],[-76.00920508492995,-14.649286390850321],[-76.42346920439775,-13.82318694423243],[-76.25924150257416,-13.535039157772943],[-77.10619238962184,-12.22271615972082],[-78.09215287953464,-10.377712497604065],[-79.03695309112695,-8.386567884965892],[-79.44592037628485,-7.93083342858386],[-79.76057817251004,-7.194340915560083],[-80.53748165558608,-6.541667575713717],[-81.24999630402642,-6.136834405139183],[-80.92634680858244,-5.690556735866565],[-81.41094255239946,-4.736764825055459],[-81.09966956248937,-4.036394138203697],[-80.30256059438722,-3.404856459164713],[-80.18401485870967,-3.821161797708044],[-80.46929460317695,-4.059286797708999],[-80.44224199087216,-4.425724379090674],[-80.02890804718561,-4.346090996928893],[-79.62497921417618,-4.454198093283494],[-79.20528906931771,-4.959128513207389],[-78.63989722361234,-4.547784112164074],[-78.45068396677564,-3.873096612161376],[-77.83790483265861,-3.003020521663103],[-76.63539425322672,-2.608677666843818],[-75.54499569365204,-1.56160979574588],[-75.23372270374193,-0.911416924649529],[-75.37322323271385,-0.15203175212045],[-75.10662451852008,-0.05720549886486],[-74.44160051135597,-0.530820000819887],[-74.12239518908906,-1.002832533373848],[-73.6595035468346,-1.260491224781134],[-73.07039221870724,-2.308954359550953],[-72.32578650581365,-2.434218031426454],[-71.7747607082854,-2.169789727388938],[-71.41364579942979,-2.342802422702128],[-70.81347571479196,-2.256864515800743],[-70.04770850287485,-2.725156345229699],[-70.69268205430971,-3.742872002785859],[-70.39404395209499,-3.766591485207825],[-69.89363521999663,-4.298186944194327],[-70.7947688463023,-4.251264743673303],[-70.92884334988358,-4.401591485210368],[-71.74840572781655,-4.593982842633011],[-72.89192765978726,-5.274561455916981],[-72.96450720894119,-5.741251315944893],[-73.21971126981461,-6.089188734566078],[-73.1200274319236,-6.629930922068239],[-73.72448666044164,-6.91859547285064],[-73.7234014553635,-7.340998630404414],[-73.98723548042966,-7.523829847853064],[-73.57105933296707,-8.424446709835834],[-73.01538265653254,-9.03283334720806],[-73.22671342639016,-9.462212823121234],[-72.56303300646564,-9.520193780152717],[-72.18489071316984,-10.053597914269432],[-71.30241227892154,-10.079436130415374],[-70.48189388699117,-9.490118096558845],[-70.54868567572841,-11.009146823778465],[-70.0937522040469,-11.123971856331012],[-69.52967810736496,-10.951734307502194],[-68.66507971868961,-12.561300144097173],[-68.88007951523997,-12.899729099176653],[-68.92922380234954,-13.602683607643007],[-68.9488866848366,-14.453639418193283],[-69.33953467474701,-14.953195489158832],[-69.16034664577495,-15.323973890853019],[-69.38976416693471,-15.660129082911654],[-68.9596353827533,-16.50069793057127],[-69.59042375352405,-17.580011895419332]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Paraguay","sov_a3":"PRY","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Paraguay","adm0_a3":"PRY","geou_dif":0,"geounit":"Paraguay","gu_a3":"PRY","su_dif":0,"subunit":"Paraguay","su_a3":"PRY","brk_diff":0,"name":"Paraguay","name_long":"Paraguay","brk_a3":"PRY","brk_name":"Paraguay","brk_group":null,"abbrev":"Para.","postal":"PY","formal_en":"Republic of Paraguay","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Paraguay","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":6,"mapcolor13":2,"pop_est":6995655,"gdp_md_est":28890,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PY","iso_a3":"PRY","iso_n3":"600","un_a3":"600","wb_a2":"PY","wb_a3":"PRY","woe_id":-99,"adm0_a3_is":"PRY","adm0_a3_us":"PRY","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"PRY.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-62.685057135657885,-22.249029229422387],[-62.29117936872922,-21.05163461678739],[-62.26596126977079,-20.513734633061276],[-61.786326463453776,-19.633736667562964],[-60.04356462262649,-19.342746677327426],[-59.115042487206104,-19.356906019775398],[-58.183471442280506,-19.868399346600363],[-58.166392381408045,-20.176700941653678],[-57.87067399761779,-20.73268767668195],[-57.937155727761294,-22.090175876557172],[-56.8815095689029,-22.28215382252148],[-56.47331743022939,-22.086300144135283],[-55.79795813660691,-22.356929620047822],[-55.610682745981144,-22.655619398694842],[-55.517639329639636,-23.571997572526634],[-55.40074723979542,-23.956935316668805],[-55.02790178080954,-24.001273695575225],[-54.652834235235126,-23.83957813893396],[-54.29295956075451,-24.02101409271073],[-54.29347632507745,-24.570799655863965],[-54.42894609233059,-25.162184747012166],[-54.625290696823576,-25.73925546641551],[-54.78879492859505,-26.621785577096134],[-55.69584550639816,-27.38783700939086],[-56.48670162619299,-27.548499037386293],[-57.60975969097615,-27.395898532828387],[-58.61817359071974,-27.123718763947096],[-57.633660040911124,-25.60365650808164],[-57.77721716981794,-25.16233977630904],[-58.80712846539498,-24.77145924245331],[-60.02896603050402,-24.032796319273274],[-60.84656470400991,-23.880712579038292],[-62.685057135657885,-22.249029229422387]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Suriname","sov_a3":"SUR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Suriname","adm0_a3":"SUR","geou_dif":0,"geounit":"Suriname","gu_a3":"SUR","su_dif":0,"subunit":"Suriname","su_a3":"SUR","brk_diff":0,"name":"Suriname","name_long":"Suriname","brk_a3":"SUR","brk_name":"Suriname","brk_group":null,"abbrev":"Sur.","postal":"SR","formal_en":"Republic of Suriname","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Suriname","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":7,"mapcolor13":6,"pop_est":481267,"gdp_md_est":4254,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SR","iso_a3":"SUR","iso_n3":"740","un_a3":"740","wb_a2":"SR","wb_a3":"SUR","woe_id":-99,"adm0_a3_is":"SUR","adm0_a3_us":"SUR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SUR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-57.14743648947688,5.973149929219161],[-55.9493184067898,5.772877915872002],[-55.841779751190415,5.953125311706059],[-55.033250291551774,6.025291449401664],[-53.958044603070896,5.756548163267765],[-54.47863298197923,4.896755682795586],[-54.399542202356514,4.212611395683466],[-54.00693050801901,3.620037746592558],[-54.181726040246275,3.189779771330421],[-54.2697051662232,2.732391669115046],[-54.52475419779971,2.311848863123785],[-55.09758744975514,2.523748073736613],[-55.569755011606,2.421506252447131],[-55.973322109589375,2.510363877773017],[-56.0733418442903,2.220794989425499],[-55.905600145070885,2.02199575439866],[-55.99569800477175,1.817667141116601],[-56.539385748914555,1.899522609866921],[-57.150097825739905,2.768926906745406],[-57.2814334784097,3.333491929534119],[-57.60156897645786,3.334654649260685],[-58.04469438336068,4.060863552258382],[-57.86020952007869,4.57680105226045],[-57.91428890647214,4.812626451024414],[-57.307245856339506,5.073566595882227],[-57.14743648947688,5.973149929219161]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Uruguay","sov_a3":"URY","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Uruguay","adm0_a3":"URY","geou_dif":0,"geounit":"Uruguay","gu_a3":"URY","su_dif":0,"subunit":"Uruguay","su_a3":"URY","brk_diff":0,"name":"Uruguay","name_long":"Uruguay","brk_a3":"URY","brk_name":"Uruguay","brk_group":null,"abbrev":"Ury.","postal":"UY","formal_en":"Oriental Republic of Uruguay","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Uruguay","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":2,"mapcolor13":10,"pop_est":3494382,"gdp_md_est":43160,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"UY","iso_a3":"URY","iso_n3":"858","un_a3":"858","wb_a2":"UY","wb_a3":"URY","woe_id":-99,"adm0_a3_is":"URY","adm0_a3_us":"URY","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"URY.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-57.62513342958296,-30.216294854454258],[-56.97602576356473,-30.109686374636127],[-55.97324459494093,-30.883075860316303],[-55.601510179249345,-30.853878676071393],[-54.57245154480512,-31.494511407193748],[-53.787951626182185,-32.047242526987624],[-53.209588995971544,-32.727666110974724],[-53.6505439927181,-33.20200408298183],[-53.373661668498244,-33.768377780900764],[-53.806425950726535,-34.396814874002224],[-54.93586605489773,-34.952646579733624],[-55.67408972840329,-34.75265878676407],[-56.21529700379607,-34.85983570733742],[-57.139685024633096,-34.430456231424245],[-57.8178606838155,-34.4625472958775],[-58.42707414410439,-33.90945444105757],[-58.34961117209887,-33.26318897881541],[-58.13264767112144,-33.040566908502015],[-58.14244035504076,-32.044503676076154],[-57.87493730328188,-31.016556084926208],[-57.62513342958296,-30.216294854454258]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Ecuador","sov_a3":"ECU","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ecuador","adm0_a3":"ECU","geou_dif":0,"geounit":"Ecuador","gu_a3":"ECU","su_dif":0,"subunit":"Ecuador","su_a3":"ECU","brk_diff":0,"name":"Ecuador","name_long":"Ecuador","brk_a3":"ECU","brk_name":"Ecuador","brk_group":null,"abbrev":"Ecu.","postal":"EC","formal_en":"Republic of Ecuador","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Ecuador","name_alt":null,"mapcolor7":1,"mapcolor8":5,"mapcolor9":2,"mapcolor13":12,"pop_est":14573101,"gdp_md_est":107700,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"EC","iso_a3":"ECU","iso_n3":"218","un_a3":"218","wb_a2":"EC","wb_a3":"ECU","woe_id":-99,"adm0_a3_is":"ECU","adm0_a3_us":"ECU","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ECU.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-80.30256059438722,-3.404856459164713],[-79.77029334178093,-2.65751189535964],[-79.98655921092241,-2.220794366061014],[-80.36878394236925,-2.685158786635788],[-80.96776546906436,-2.246942640800704],[-80.76480628123804,-1.965047702648533],[-80.9336590237517,-1.057454522306358],[-80.58337032746127,-0.906662692878683],[-80.39932471385376,-0.283703301600141],[-80.02089820018037,0.360340074053468],[-80.09060970734211,0.768428859862397],[-79.54276201039978,0.982937730305963],[-78.85525875518871,1.380923773601822],[-77.85506140817952,0.809925034992773],[-77.66861284047044,0.825893052570961],[-77.4249843004304,0.395686753741117],[-76.57637976754938,0.256935533037435],[-76.29231441924097,0.416047268064119],[-75.80146582711659,0.084801337073202],[-75.37322323271385,-0.15203175212045],[-75.23372270374193,-0.911416924649529],[-75.54499569365204,-1.56160979574588],[-76.63539425322672,-2.608677666843818],[-77.83790483265861,-3.003020521663103],[-78.45068396677564,-3.873096612161376],[-78.63989722361234,-4.547784112164074],[-79.20528906931771,-4.959128513207389],[-79.62497921417618,-4.454198093283494],[-80.02890804718561,-4.346090996928893],[-80.44224199087216,-4.425724379090674],[-80.46929460317695,-4.059286797708999],[-80.18401485870967,-3.821161797708044],[-80.30256059438722,-3.404856459164713]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"United Kingdom","sov_a3":"GB1","adm0_dif":1,"level":2,"type":"Dependency","admin":"Falkland Islands","adm0_a3":"FLK","geou_dif":0,"geounit":"Falkland Islands","gu_a3":"FLK","su_dif":0,"subunit":"Falkland Islands","su_a3":"FLK","brk_diff":1,"name":"Falkland Islands","name_long":"Falkland Islands","brk_a3":"B12","brk_name":"Falkland Is.","brk_group":null,"abbrev":"Flk. Is.","postal":"FK","formal_en":"Falkland Islands","formal_fr":null,"note_adm0":"U.K.","note_brk":"Admin. by U.K.; Claimed by Argentina","name_sort":"Falkland Islands","name_alt":"Islas Malvinas","mapcolor7":6,"mapcolor8":6,"mapcolor9":6,"mapcolor13":3,"pop_est":3140,"gdp_md_est":105.1,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"FK","iso_a3":"FLK","iso_n3":"238","un_a3":"238","wb_a2":"-99","wb_a3":"-99","woe_id":-99,"adm0_a3_is":"FLK","adm0_a3_us":"FLK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":12,"long_len":16,"abbrev_len":8,"tiny":-99,"homepart":-99,"filename":"FLK.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-61.2,-51.85],[-60,-51.25],[-59.15,-51.5],[-58.55,-51.1],[-57.75,-51.55],[-58.05,-51.9],[-59.4,-52.2],[-59.85,-51.85],[-60.7,-52.3],[-61.2,-51.85]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Guyana","sov_a3":"GUY","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Guyana","adm0_a3":"GUY","geou_dif":0,"geounit":"Guyana","gu_a3":"GUY","su_dif":0,"subunit":"Guyana","su_a3":"GUY","brk_diff":0,"name":"Guyana","name_long":"Guyana","brk_a3":"GUY","brk_name":"Guyana","brk_group":null,"abbrev":"Guy.","postal":"GY","formal_en":"Co-operative Republic of Guyana","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Guyana","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":4,"mapcolor13":8,"pop_est":772298,"gdp_md_est":2966,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"GY","iso_a3":"GUY","iso_n3":"328","un_a3":"328","wb_a2":"GY","wb_a3":"GUY","woe_id":-99,"adm0_a3_is":"GUY","adm0_a3_us":"GUY","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"GUY.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-59.758284878159195,8.367034816924047],[-59.101684129458654,7.999201971870492],[-58.482962205628056,7.347691351750697],[-58.45487606467743,6.832787380394463],[-58.07810319683737,6.809093736188643],[-57.542218593970645,6.321268215353356],[-57.14743648947688,5.973149929219161],[-57.307245856339506,5.073566595882227],[-57.91428890647214,4.812626451024414],[-57.86020952007869,4.57680105226045],[-58.04469438336068,4.060863552258382],[-57.60156897645786,3.334654649260685],[-57.2814334784097,3.333491929534119],[-57.150097825739905,2.768926906745406],[-56.539385748914555,1.899522609866921],[-56.78270423036083,1.863710842288654],[-57.335822923396904,1.94853770589576],[-57.66097103537737,1.682584947105639],[-58.11344987652502,1.507195135907025],[-58.42947709820596,1.463941962078721],[-58.5400129868783,1.268088283692521],[-59.03086157900265,1.317697658692722],[-59.64604366722126,1.786893825686789],[-59.71854570172674,2.24963043864436],[-59.97452490908456,2.755232652188056],[-59.81541317405786,3.606498521332085],[-59.53803992373123,3.958802598481938],[-59.767405768458715,4.423502915866607],[-60.11100236676737,4.574966538914083],[-59.98095862490488,5.014061184098139],[-60.21368343773133,5.244486395687602],[-60.73357418480372,5.200277207861901],[-61.410302903881956,5.959068101419618],[-61.13941504580795,6.234296779806144],[-61.15933631045648,6.696077378766319],[-60.54399919294098,6.856584377464883],[-60.29566809756239,7.043911444522919],[-60.637972785063766,7.414999904810855],[-60.55058793805819,7.779602972846178],[-59.758284878159195,8.367034816924047]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Angola","sov_a3":"AGO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Angola","adm0_a3":"AGO","geou_dif":0,"geounit":"Angola","gu_a3":"AGO","su_dif":0,"subunit":"Angola","su_a3":"AGO","brk_diff":0,"name":"Angola","name_long":"Angola","brk_a3":"AGO","brk_name":"Angola","brk_group":null,"abbrev":"Ang.","postal":"AO","formal_en":"People\'s Republic of Angola","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Angola","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":6,"mapcolor13":1,"pop_est":12799293,"gdp_md_est":110300,"pop_year":-99,"lastcensus":1970,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"AO","iso_a3":"AGO","iso_n3":"024","un_a3":"024","wb_a2":"AO","wb_a3":"AGO","woe_id":-99,"adm0_a3_is":"AGO","adm0_a3_us":"AGO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"AGO.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[16.326528354567046,-5.877470391466218],[16.57317996589614,-6.622644545115094],[16.86019087084523,-7.222297865429979],[17.08999596524717,-7.545688978712476],[17.472970004962292,-8.068551120641656],[18.13422163256905,-7.987677504104866],[18.464175652752687,-7.847014255406477],[19.01675174324967,-7.98824594486014],[19.166613396896082,-7.738183688999725],[19.417502475673217,-7.155428562044278],[20.037723016040218,-7.11636117923166],[20.09162153492062,-6.943090101756951],[20.601822950938327,-6.939317722199689],[20.51474816252653,-7.299605808138665],[21.728110792739756,-7.290872491081316],[21.746455926203367,-7.920084730667114],[21.94913089365204,-8.305900974158305],[21.801801385187957,-8.908706556842986],[21.875181919042404,-9.523707777548566],[22.208753289486424,-9.89479623783653],[22.155268182064333,-11.084801120653779],[22.402798292742432,-10.99307545333569],[22.83734541188477,-11.017621758674338],[23.456790805767465,-10.867863457892483],[23.912215203555746,-10.926826267137542],[24.017893507592614,-11.237298272347118],[23.90415368011824,-11.722281589406336],[24.079905226342902,-12.191296888887308],[23.930922072045377,-12.565847670138822],[24.016136508894704,-12.911046237848552],[21.933886346125945,-12.898437188369357],[21.887842644953878,-16.080310153876894],[22.56247846852429,-16.898451429921835],[23.215048455506093,-17.523116143465952],[21.377176141045595,-17.93063648851971],[18.95618696460363,-17.789094740472237],[18.26330936043422,-17.309950860262006],[14.209706658595051,-17.353100681225712],[14.058501417709039,-17.423380629142656],[13.462362094789967,-16.97121184658874],[12.814081251688407,-16.941342868724078],[12.215461460019384,-17.111668389558062],[11.734198846085148,-17.3018893368245],[11.64009606288161,-16.67314218512921],[11.778537224991567,-15.79381601325069],[12.123580763404448,-14.878316338767931],[12.175618930722266,-14.449143568583892],[12.500095249083017,-13.547699883684402],[12.738478631245442,-13.137905775609935],[13.312913852601838,-12.483630466362513],[13.633721144269828,-12.038644707897191],[13.738727654686926,-11.297863050993143],[13.686379428775297,-10.731075941615842],[13.38732791510216,-10.373578383020728],[13.120987583069875,-9.766897067914115],[12.875369500386569,-9.166933689005488],[12.929061313537801,-8.959091078327575],[13.236432732809874,-8.562629489784342],[12.933040398824316,-7.596538588087753],[12.72829837408392,-6.927122084178805],[12.227347039446443,-6.294447523629372],[12.322431674863566,-6.100092461779653],[12.735171339578699,-5.965682061388478],[13.02486941900699,-5.984388929878108],[13.375597364971895,-5.864241224799557],[16.326528354567046,-5.877470391466218]]],[[[12.436688266660923,-5.684303887559224],[12.18233686692028,-5.789930515163803],[11.914963006242116,-5.037986748884734],[12.318607618873926,-4.606230157086158],[12.62075971848455,-4.438023369976121],[12.995517205465205,-4.781103203961919],[12.631611769265845,-4.991271254092936],[12.468004184629763,-5.248361504744992],[12.436688266660923,-5.684303887559224]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Burundi","sov_a3":"BDI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Burundi","adm0_a3":"BDI","geou_dif":0,"geounit":"Burundi","gu_a3":"BDI","su_dif":0,"subunit":"Burundi","su_a3":"BDI","brk_diff":0,"name":"Burundi","name_long":"Burundi","brk_a3":"BDI","brk_name":"Burundi","brk_group":null,"abbrev":"Bur.","postal":"BI","formal_en":"Republic of Burundi","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Burundi","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":5,"mapcolor13":8,"pop_est":8988091,"gdp_md_est":3102,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"BI","iso_a3":"BDI","iso_n3":"108","un_a3":"108","wb_a2":"BI","wb_a3":"BDI","woe_id":-99,"adm0_a3_is":"BDI","adm0_a3_us":"BDI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"BDI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[29.339997592900346,-4.499983412294092],[29.276383904749053,-3.293907159034063],[29.024926385216787,-2.839257907730158],[29.632176141078588,-2.917857761246097],[29.938359002407942,-2.348486830254238],[30.469696079232985,-2.413857517103458],[30.527677036264464,-2.807631931167535],[30.7430127296247,-3.034284763199686],[30.75226281100495,-3.35932952231557],[30.505559523243566,-3.568567396665365],[30.116332635221173,-4.090137627787243],[29.753512404099922,-4.452389418153281],[29.339997592900346,-4.499983412294092]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Benin","sov_a3":"BEN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Benin","adm0_a3":"BEN","geou_dif":0,"geounit":"Benin","gu_a3":"BEN","su_dif":0,"subunit":"Benin","su_a3":"BEN","brk_diff":0,"name":"Benin","name_long":"Benin","brk_a3":"BEN","brk_name":"Benin","brk_group":null,"abbrev":"Benin","postal":"BJ","formal_en":"Republic of Benin","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Benin","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":2,"mapcolor13":12,"pop_est":8791832,"gdp_md_est":12830,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"BJ","iso_a3":"BEN","iso_n3":"204","un_a3":"204","wb_a2":"BJ","wb_a3":"BEN","woe_id":-99,"adm0_a3_is":"BEN","adm0_a3_us":"BEN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"BEN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[2.691701694356254,6.258817246928629],[1.865240512712319,6.142157701029731],[1.618950636409238,6.832038072126237],[1.664477573258381,9.12859039960938],[1.46304284018467,9.334624335157088],[1.425060662450136,9.825395412633],[1.077795037448738,10.175606594275024],[0.772335646171484,10.470808213742359],[0.899563022474069,10.99733938236426],[1.243469679376489,11.110510769083461],[1.447178175471066,11.547719224488858],[1.935985548519881,11.641150214072553],[2.154473504249921,11.940150051313337],[2.49016360841793,12.233052069543675],[2.848643019226671,12.235635891158267],[3.611180454125559,11.660167141155966],[3.572216424177469,11.327939357951518],[3.797112257511714,10.734745591673105],[3.600070021182801,10.332186184119408],[3.705438266625919,10.063210354040208],[3.220351596702101,9.4441525333997],[2.912308383810256,9.13760793704432],[2.723792758809509,8.50684540448971],[2.74906253420022,7.870734361192888],[2.691701694356254,6.258817246928629]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Venezuela","sov_a3":"VEN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Venezuela","adm0_a3":"VEN","geou_dif":0,"geounit":"Venezuela","gu_a3":"VEN","su_dif":0,"subunit":"Venezuela","su_a3":"VEN","brk_diff":0,"name":"Venezuela","name_long":"Venezuela","brk_a3":"VEN","brk_name":"Venezuela","brk_group":null,"abbrev":"Ven.","postal":"VE","formal_en":"Bolivarian Republic of Venezuela","formal_fr":"República Bolivariana de Venezuela","note_adm0":null,"note_brk":null,"name_sort":"Venezuela, RB","name_alt":null,"mapcolor7":1,"mapcolor8":3,"mapcolor9":1,"mapcolor13":4,"pop_est":26814843,"gdp_md_est":357400,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"VE","iso_a3":"VEN","iso_n3":"862","un_a3":"862","wb_a2":"VE","wb_a3":"VEN","woe_id":-99,"adm0_a3_is":"VEN","adm0_a3_us":"VEN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"South America","region_un":"Americas","subregion":"South America","region_wb":"Latin America & Caribbean","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"VEN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-71.3315836249503,11.776284084515808],[-71.36000566271082,11.53999359786121],[-71.94704993354651,11.423282375530022],[-71.62086829292019,10.969459947142795],[-71.63306393094108,10.446494452349027],[-72.07417395698451,9.865651353388373],[-71.69564409044654,9.072263088411248],[-71.26455929226773,9.137194525585983],[-71.03999935574339,9.859992784052407],[-71.35008378771079,10.211935126176215],[-71.40062333849224,10.968969021036015],[-70.1552988349065,11.37548167566004],[-70.29384334988103,11.846822414594214],[-69.94324459499683,12.162307033736099],[-69.58430009629747,11.459610907431212],[-68.88299923366445,11.443384507691563],[-68.23327145045873,10.885744126829946],[-68.19412655299763,10.554653225135922],[-67.29624854192633,10.54586823164631],[-66.227864142508,10.648626817258688],[-65.65523759628175,10.200798855017323],[-64.89045223657817,10.0772146671913],[-64.32947872583374,10.38959870039568],[-64.31800655786495,10.64141795495398],[-63.07932247582874,10.7017243514386],[-61.880946010980196,10.715625311725104],[-62.73011898461641,10.420268662960906],[-62.388511928950976,9.94820445397464],[-61.58876746280193,9.873066921422264],[-60.83059668643172,9.38133982994894],[-60.67125240745973,8.580174261911878],[-60.15009558779618,8.602756862823426],[-59.758284878159195,8.367034816924047],[-60.55058793805819,7.779602972846178],[-60.637972785063766,7.414999904810855],[-60.29566809756239,7.043911444522919],[-60.54399919294098,6.856584377464883],[-61.15933631045648,6.696077378766319],[-61.13941504580795,6.234296779806144],[-61.410302903881956,5.959068101419618],[-60.73357418480372,5.200277207861901],[-60.60117916527194,4.91809804933213],[-60.96689327660153,4.536467596856639],[-62.08542965355914,4.162123521334308],[-62.804533047116706,4.006965033377952],[-63.0931975978991,3.770571193858785],[-63.88834286157416,4.020530096854571],[-64.62865943058755,4.14848094320925],[-64.81606401229402,4.056445217297423],[-64.36849443221409,3.797210394705246],[-64.40882788761792,3.126786200366624],[-64.26999915226578,2.497005520025567],[-63.42286739770512,2.411067613124174],[-63.36878801131166,2.200899562993129],[-64.08308549666609,1.91636912679408],[-64.19930579289051,1.49285492594602],[-64.61101192895985,1.328730576987042],[-65.35471330428837,1.0952822941085],[-65.54826738143757,0.78925446207603],[-66.32576514348496,0.724452215982012],[-66.87632585312258,1.253360500489336],[-67.18129431829307,2.250638129074062],[-67.44709204778631,2.600280869960869],[-67.8099381171237,2.820655015469569],[-67.30317318385345,3.31845408773718],[-67.33756384954368,3.542342230641722],[-67.62183590358127,3.839481716319994],[-67.82301225449355,4.503937282728899],[-67.74469662135522,5.221128648291668],[-67.52153194850275,5.556870428891969],[-67.34143958196557,6.095468044454023],[-67.69508724635502,6.267318020040647],[-68.26505245631823,6.153268133972475],[-68.98531856960236,6.206804917826858],[-69.38947994655712,6.099860541198836],[-70.09331295437242,6.96037649172311],[-70.67423356798152,7.087784735538719],[-71.96017574734864,6.991614895043538],[-72.19835242378188,7.340430813013682],[-72.44448727078807,7.423784898300481],[-72.47967892117885,7.632506008327354],[-72.36090064155596,8.002638454617895],[-72.43986223009796,8.405275376820029],[-72.6604947577681,8.625287787302682],[-72.7887298245004,9.085027167187334],[-73.30495154488005,9.151999823437606],[-73.02760413276957,9.736770331252444],[-72.9052860175347,10.450344346554772],[-72.61465776232521,10.821975409381778],[-72.22757544624294,11.10870209395324],[-71.97392167833829,11.60867157637712],[-71.3315836249503,11.776284084515808]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Ivory Coast","sov_a3":"CIV","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ivory Coast","adm0_a3":"CIV","geou_dif":0,"geounit":"Ivory Coast","gu_a3":"CIV","su_dif":0,"subunit":"Ivory Coast","su_a3":"CIV","brk_diff":0,"name":"Cote d\'Ivoire","name_long":"Côte d\'Ivoire","brk_a3":"CIV","brk_name":"Côte d\'Ivoire","brk_group":null,"abbrev":"I.C.","postal":"CI","formal_en":"Republic of Ivory Coast","formal_fr":"Republic of Cote D\'Ivoire","note_adm0":null,"note_brk":null,"name_sort":"Côte d\'Ivoire","name_alt":null,"mapcolor7":4,"mapcolor8":6,"mapcolor9":3,"mapcolor13":3,"pop_est":20617068,"gdp_md_est":33850,"pop_year":-99,"lastcensus":1998,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CI","iso_a3":"CIV","iso_n3":"384","un_a3":"384","wb_a2":"CI","wb_a3":"CIV","woe_id":-99,"adm0_a3_is":"CIV","adm0_a3_us":"CIV","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":13,"long_len":13,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CIV.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-2.856125047202397,4.994475816259509],[-3.311084357100071,4.984295559098015],[-4.008819545904942,5.179813340674315],[-4.649917364917911,5.168263658057086],[-5.834496222344526,4.993700669775137],[-6.528769090185847,4.705087795425015],[-7.518941209330436,4.338288479017308],[-7.71215938966975,4.364565944837722],[-7.63536821128403,5.188159084489456],[-7.539715135111762,5.313345241716519],[-7.570152553731688,5.707352199725904],[-7.993692592795881,6.126189683451543],[-8.311347622094019,6.193033148621083],[-8.60288021486862,6.46756419517166],[-8.385451626000574,6.911800645368742],[-8.48544552248535,7.39520783124307],[-8.439298468448698,7.686042792181738],[-8.280703497744938,7.687179673692156],[-8.221792364932199,8.123328762235573],[-8.299048631208564,8.316443589710303],[-8.20349890790088,8.455453192575447],[-7.832100389019188,8.575704250518626],[-8.079113735374348,9.376223863152035],[-8.30961646161225,9.789531968622441],[-8.229337124046822,10.1290202905639],[-8.029943610048619,10.206534939001713],[-7.899589809592372,10.297382106970828],[-7.622759161804809,10.147236232946796],[-6.850506557635057,10.138993841996239],[-6.666460944027548,10.430810655148447],[-6.493965013037267,10.411302801958271],[-6.205222947606431,10.524060777219134],[-6.050452032892267,10.096360785355444],[-5.816926235365287,10.222554633012194],[-5.404341599946974,10.370736802609146],[-4.954653286143099,10.152713934769736],[-4.779883592131966,9.821984768101743],[-4.330246954760383,9.61083486575714],[-3.980449184576685,9.8623440617217],[-3.511898972986273,9.90032623945622],[-2.827496303712707,9.642460842319778],[-2.562189500326241,8.219627793811483],[-2.983584967450327,7.379704901555512],[-3.244370083011262,6.250471503113502],[-2.81070146321784,5.38905121502411],[-2.856125047202397,4.994475816259509]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Cameroon","sov_a3":"CMR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Cameroon","adm0_a3":"CMR","geou_dif":0,"geounit":"Cameroon","gu_a3":"CMR","su_dif":0,"subunit":"Cameroon","su_a3":"CMR","brk_diff":0,"name":"Cameroon","name_long":"Cameroon","brk_a3":"CMR","brk_name":"Cameroon","brk_group":null,"abbrev":"Cam.","postal":"CM","formal_en":"Republic of Cameroon","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Cameroon","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":3,"pop_est":18879301,"gdp_md_est":42750,"pop_year":-99,"lastcensus":2005,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CM","iso_a3":"CMR","iso_n3":"120","un_a3":"120","wb_a2":"CM","wb_a3":"CMR","woe_id":-99,"adm0_a3_is":"CMR","adm0_a3_us":"CMR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CMR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[13.075822381246752,2.267097072759015],[12.951333855855609,2.32161570882694],[12.359380323952221,2.19281220133945],[11.75166548019979,2.326757513839993],[11.276449008843713,2.261050930180872],[9.649158155972628,2.283866075037736],[9.795195753629457,3.073404445809117],[9.404366896206,3.734526882335202],[8.948115675501072,3.904128933117136],[8.744923943729418,4.35221527751996],[8.488815545290889,4.495617377129918],[8.500287713259695,4.771982937026849],[8.757532993208628,5.479665839047911],[9.233162876023044,6.444490668153334],[9.522705926154401,6.453482367372117],[10.118276808318257,7.038769639509879],[10.497375115611417,7.055357774275564],[11.05878787603035,6.644426784690594],[11.74577436691851,6.981382961449753],[11.839308709366803,7.397042344589436],[12.063946160539558,7.799808457872302],[12.218872104550599,8.305824082874324],[12.753671502339214,8.717762762888995],[12.955467970438974,9.417771714714704],[13.167599724997103,9.640626328973411],[13.308676385153918,10.160362046748928],[13.572949659894562,10.798565985553566],[14.415378859116686,11.572368882692075],[14.468192172918975,11.904751695193411],[14.577177768622533,12.085360826053503],[14.181336297266792,12.483656927943116],[14.213530714584634,12.802035427293347],[14.495787387762844,12.85939626713733],[14.893385857816526,12.219047756392584],[14.9601518083376,11.555574042197224],[14.923564894274959,10.891325181517473],[15.467872755605269,9.98233673750343],[14.909353875394716,9.99212942142273],[14.62720055508106,9.920919297724538],[14.171466098699028,10.021378282099931],[13.954218377344006,9.549494940626685],[14.544466586981768,8.965861314322268],[14.97999555833769,8.796104234243472],[15.120865512765334,8.382150173369423],[15.436091749745769,7.692812404811973],[15.279460483469109,7.421924546737969],[14.776545444404576,6.408498033062045],[14.536560092841112,6.22695872642069],[14.459407179429348,5.4517605656103],[14.558935988023505,5.03059764243153],[14.478372430080467,4.732605495620447],[14.950953403389661,4.210389309094921],[15.036219516671252,3.851367295747124],[15.405395948964383,3.33530060466434],[15.86273237474748,3.013537298998983],[15.907380812247652,2.557389431158612],[16.012852410555354,2.267639675298085],[15.940918816805064,1.727672634280295],[15.146341993885244,1.964014797367184],[14.33781253424658,2.227874660649491],[13.075822381246752,2.267097072759015]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Democratic Republic of the Congo","sov_a3":"COD","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Democratic Republic of the Congo","adm0_a3":"COD","geou_dif":0,"geounit":"Democratic Republic of the Congo","gu_a3":"COD","su_dif":0,"subunit":"Democratic Republic of the Congo","su_a3":"COD","brk_diff":0,"name":"Democratic Republic of the Congo","name_long":"Democratic Republic of the Congo","brk_a3":"COD","brk_name":"Democratic Republic of the Congo","brk_group":null,"abbrev":"D.R.C.","postal":"DRC","formal_en":"Democratic Republic of the Congo","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Congo, Dem. Rep.","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":4,"mapcolor13":7,"pop_est":68692542,"gdp_md_est":20640,"pop_year":-99,"lastcensus":1984,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"CD","iso_a3":"COD","iso_n3":"180","un_a3":"180","wb_a2":"ZR","wb_a3":"ZAR","woe_id":-99,"adm0_a3_is":"COD","adm0_a3_us":"COD","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":15,"long_len":32,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"COD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[30.833859897593808,3.509165961110341],[30.773346795380043,2.339883327642127],[31.174149204235814,2.204465236821264],[30.852670118948055,1.849396470543809],[30.468507521290295,1.58380544677972],[30.086153598762703,1.062312730306289],[29.875778842902495,0.597379868976304],[29.819503208136638,-0.205310153813372],[29.58783776217217,-0.587405694179481],[29.579466180140884,-1.341313164885626],[29.29188683443661,-1.620055840667987],[29.25483483248334,-2.215109958508911],[29.117478875451553,-2.292211195488385],[29.024926385216787,-2.839257907730158],[29.276383904749053,-3.293907159034063],[29.339997592900346,-4.499983412294092],[29.519986606572925,-5.419978936386314],[29.419992710088167,-5.939998874539433],[29.62003217949001,-6.520015150583426],[30.199996779101696,-7.079980970898163],[30.740015496551788,-8.340007419470915],[30.346086053190813,-8.238256524288218],[29.002912225060467,-8.407031752153472],[28.7348665707625,-8.526559340044578],[28.449871046672826,-9.164918308146085],[28.67368167492893,-9.605924981324932],[28.49606977714177,-10.789883721564044],[28.372253045370428,-11.793646742401393],[28.642417433392353,-11.971568698782315],[29.34154788586909,-12.360743910372413],[29.61600141777123,-12.178894545137311],[29.69961388521949,-13.257226657771831],[28.934285922976837,-13.248958428605135],[28.523561639121027,-12.698604424696683],[28.155108676879987,-12.272480564017897],[27.38879886242378,-12.132747491100666],[27.164419793412463,-11.608748467661075],[26.553087599399618,-11.924439792532127],[25.752309604604733,-11.784965101776358],[25.418118116973204,-11.330935967659961],[24.78316979340295,-11.238693536018964],[24.31451622894795,-11.26282642989927],[24.25715538910399,-10.951992689663657],[23.912215203555718,-10.926826267137514],[23.45679080576744,-10.867863457892483],[22.83734541188474,-11.01762175867433],[22.402798292742375,-10.99307545333569],[22.155268182064308,-11.084801120653772],[22.208753289486395,-9.894796237836509],[21.875181919042348,-9.523707777548566],[21.8018013851879,-8.908706556842978],[21.949130893652043,-8.305900974158277],[21.74645592620331,-7.920084730667149],[21.7281107927397,-7.290872491081302],[20.514748162526498,-7.299605808138629],[20.6018229509383,-6.939317722199682],[20.091621534920648,-6.943090101756993],[20.037723016040218,-7.116361179231646],[19.417502475673157,-7.155428562044298],[19.16661339689611,-7.738183688999754],[19.01675174324967,-7.988245944860132],[18.464175652752687,-7.847014255406444],[18.13422163256905,-7.987677504104922],[17.472970004962235,-8.0685511206417],[17.08999596524717,-7.545688978712526],[16.8601908708452,-7.222297865429986],[16.57317996589614,-6.622644545115087],[16.326528354567046,-5.877470391466267],[13.375597364971895,-5.864241224799549],[13.02486941900696,-5.984388929878157],[12.735171339578699,-5.965682061388499],[12.32243167486351,-6.10009246177966],[12.182336866920252,-5.789930515163839],[12.436688266660868,-5.684303887559246],[12.468004184629736,-5.248361504745005],[12.63161176926579,-4.991271254092936],[12.995517205465177,-4.781103203961884],[13.258240187237048,-4.882957452009165],[13.600234816144678,-4.50013844159097],[14.144956088933299,-4.510008640158715],[14.209034864975223,-4.793092136253598],[14.58260379401318,-4.97023894615014],[15.170991652088444,-4.343507175314301],[15.75354007331475,-3.855164890156096],[16.0062895036543,-3.535132744972529],[15.972803175529151,-2.712392266453612],[16.407091912510054,-1.740927015798682],[16.865306837642123,-1.225816338713287],[17.523716261472856,-0.743830254726987],[17.638644646889986,-0.424831638189247],[17.66355268725468,-0.058083998213817],[17.826540154703252,0.288923244626105],[17.774191928791566,0.855658677571085],[17.898835483479587,1.741831976728278],[18.094275750407434,2.365721543788055],[18.39379235197114,2.90044342692822],[18.45306521980993,3.504385891123349],[18.54298221199778,4.201785183118318],[18.93231245288476,4.709506130385975],[19.467783644293146,5.03152781821278],[20.290679152108936,4.691677761245288],[20.927591180106276,4.322785549329737],[21.659122755630023,4.22434194581372],[22.405123732195538,4.029160061047321],[22.70412356943629,4.633050848810157],[22.841479526468106,4.710126247573484],[23.29721398285014,4.609693101414223],[24.410531040146253,5.108784084489129],[24.805028924262416,4.89724660890235],[25.12883344900328,4.927244777847789],[25.278798455514302,5.170408229997192],[25.650455356557472,5.256087754737123],[26.402760857862543,5.150874538590871],[27.04406538260471,5.127852688004836],[27.37422610851749,5.233944403500061],[27.979977247842807,4.408413397637375],[28.428993768026913,4.287154649264494],[28.696677687298802,4.455077215996937],[29.1590784034465,4.389267279473231],[29.71599531425602,4.600804755060025],[29.953500197069474,4.173699042167683],[30.833859897593808,3.509165961110341]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Republic of Congo","sov_a3":"COG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Republic of Congo","adm0_a3":"COG","geou_dif":0,"geounit":"Republic of Congo","gu_a3":"COG","su_dif":0,"subunit":"Republic of Congo","su_a3":"COG","brk_diff":0,"name":"Republic of the Congo","name_long":"Republic of Congo","brk_a3":"COG","brk_name":"Republic of Congo","brk_group":null,"abbrev":"Rep. Congo","postal":"CG","formal_en":"Republic of Congo","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Congo, Rep.","name_alt":null,"mapcolor7":2,"mapcolor8":1,"mapcolor9":3,"mapcolor13":10,"pop_est":4012809,"gdp_md_est":15350,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CG","iso_a3":"COG","iso_n3":"178","un_a3":"178","wb_a2":"CG","wb_a3":"COG","woe_id":-99,"adm0_a3_is":"COG","adm0_a3_us":"COG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":17,"abbrev_len":10,"tiny":-99,"homepart":1,"filename":"COG.geojson"},"geometry":{"type":"Polygon","coordinates":[[[12.995517205465177,-4.781103203961884],[12.620759718484491,-4.438023369976136],[12.318607618873926,-4.606230157086188],[11.91496300624209,-5.037986748884791],[11.093772820691925,-3.978826592630547],[11.855121697648114,-3.426870619321051],[11.478038771214303,-2.765618991714241],[11.820963575903193,-2.514161472181982],[12.495702752338161,-2.391688327650243],[12.575284458067642,-1.948511244315135],[13.109618767965628,-2.428740329603514],[13.99240726080771,-2.4708049454891],[14.299210239324564,-1.998275648612214],[14.425455763413593,-1.333406670744971],[14.316418491277743,-0.552627455247048],[13.843320753645655,0.038757635901149],[14.276265903386957,1.196929836426619],[14.026668735417218,1.395677395021153],[13.282631463278818,1.31418366129688],[13.003113641012078,1.83089630778332],[13.075822381246752,2.267097072759015],[14.33781253424658,2.227874660649491],[15.146341993885244,1.964014797367184],[15.940918816805064,1.727672634280295],[16.012852410555354,2.267639675298085],[16.537058139724135,3.198254706226279],[17.133042433346304,3.728196519379452],[17.809900343505262,3.56019643799857],[18.45306521980993,3.504385891123349],[18.39379235197114,2.90044342692822],[18.094275750407434,2.365721543788055],[17.898835483479587,1.741831976728278],[17.774191928791566,0.855658677571085],[17.826540154703252,0.288923244626105],[17.66355268725468,-0.058083998213817],[17.638644646889986,-0.424831638189247],[17.523716261472856,-0.743830254726987],[16.865306837642123,-1.225816338713287],[16.407091912510054,-1.740927015798682],[15.972803175529151,-2.712392266453612],[16.0062895036543,-3.535132744972529],[15.75354007331475,-3.855164890156096],[15.170991652088444,-4.343507175314301],[14.58260379401318,-4.97023894615014],[14.209034864975223,-4.793092136253598],[14.144956088933299,-4.510008640158715],[13.600234816144678,-4.50013844159097],[13.258240187237048,-4.882957452009165],[12.995517205465177,-4.781103203961884]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Burkina Faso","sov_a3":"BFA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Burkina Faso","adm0_a3":"BFA","geou_dif":0,"geounit":"Burkina Faso","gu_a3":"BFA","su_dif":0,"subunit":"Burkina Faso","su_a3":"BFA","brk_diff":0,"name":"Burkina Faso","name_long":"Burkina Faso","brk_a3":"BFA","brk_name":"Burkina Faso","brk_group":null,"abbrev":"B.F.","postal":"BF","formal_en":"Burkina Faso","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Burkina Faso","name_alt":null,"mapcolor7":2,"mapcolor8":1,"mapcolor9":5,"mapcolor13":11,"pop_est":15746232,"gdp_md_est":17820,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"BF","iso_a3":"BFA","iso_n3":"854","un_a3":"854","wb_a2":"BF","wb_a3":"BFA","woe_id":-99,"adm0_a3_is":"BFA","adm0_a3_us":"BFA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":12,"long_len":12,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"BFA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-2.827496303712707,9.642460842319778],[-3.511898972986273,9.90032623945622],[-3.980449184576685,9.8623440617217],[-4.330246954760383,9.61083486575714],[-4.779883592131966,9.821984768101743],[-4.954653286143099,10.152713934769736],[-5.404341599946974,10.370736802609146],[-5.470564947929006,10.951269842976048],[-5.197842576508648,11.37514577885014],[-5.220941941743121,11.713858954307227],[-4.427166103523803,12.542645575404295],[-4.28040503581488,13.228443508349741],[-4.006390753587226,13.472485459848116],[-3.522802700199861,13.337661647998615],[-3.10370683431276,13.541266791228594],[-2.967694464520577,13.79815033615151],[-2.191824510090385,14.246417548067356],[-2.001035122068771,14.559008287000891],[-1.066363491205664,14.973815009007765],[-0.515854458000348,15.116157741755726],[-0.26625729003058,14.924308986872148],[0.374892205414682,14.928908189346132],[0.295646396495101,14.444234930880654],[0.429927605805517,13.988733018443924],[0.993045688490071,13.335749620003824],[1.024103224297477,12.851825669806574],[2.177107781593776,12.625017808477534],[2.154473504249921,11.940150051313337],[1.935985548519881,11.641150214072553],[1.447178175471066,11.547719224488858],[1.243469679376489,11.110510769083461],[0.899563022474069,10.99733938236426],[0.023802524423701,11.018681748900804],[-0.438701544588582,11.09834096927872],[-0.761575893548183,10.936929633015055],[-1.203357713211431,11.009819240762738],[-2.940409308270461,10.962690334512558],[-2.963896246747112,10.395334784380083],[-2.827496303712707,9.642460842319778]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Botswana","sov_a3":"BWA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Botswana","adm0_a3":"BWA","geou_dif":0,"geounit":"Botswana","gu_a3":"BWA","su_dif":0,"subunit":"Botswana","su_a3":"BWA","brk_diff":0,"name":"Botswana","name_long":"Botswana","brk_a3":"BWA","brk_name":"Botswana","brk_group":null,"abbrev":"Bwa.","postal":"BW","formal_en":"Republic of Botswana","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Botswana","name_alt":null,"mapcolor7":6,"mapcolor8":5,"mapcolor9":7,"mapcolor13":3,"pop_est":1990876,"gdp_md_est":27060,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BW","iso_a3":"BWA","iso_n3":"072","un_a3":"072","wb_a2":"BW","wb_a3":"BWA","woe_id":-99,"adm0_a3_is":"BWA","adm0_a3_us":"BWA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Southern Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"BWA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[25.649163445750162,-18.53602589281899],[25.85039147309473,-18.714412937090536],[26.164790887158485,-19.29308562589494],[27.296504754350508,-20.391519870691],[27.724747348753255,-20.499058526290387],[27.72722781750326,-20.851801853114715],[28.021370070108617,-21.485975030200585],[28.794656202924212,-21.63945403410745],[29.43218834810904,-22.091312758067588],[28.01723595552525,-22.827753594659075],[27.119409620886245,-23.574323011979775],[26.786406691197413,-24.240690606383485],[26.4857532081233,-24.616326592713104],[25.94165205252216,-24.69637338633322],[25.76584882986521,-25.174845472923675],[25.66466637543772,-25.486816094669713],[25.025170525825786,-25.7196700985769],[24.211266717228792,-25.670215752873574],[23.73356977712271,-25.390129489851613],[23.312096795350186,-25.26868987396572],[22.8242712745149,-25.500458672794768],[22.57953169118059,-25.979447523708146],[22.105968865657868,-26.280256036079138],[21.60589603036939,-26.726533705351756],[20.88960900237174,-26.828542982695915],[20.66647016773544,-26.477453301704923],[20.758609246511835,-25.86813648855145],[20.165725538827186,-24.917961928000768],[19.895767856534434,-24.767790215760588],[19.89545779794068,-21.84915699634787],[20.881134067475866,-21.814327080983148],[20.910641310314535,-18.252218926672022],[21.655040317478978,-18.219146010005225],[23.1968583513393,-17.869038181227786],[23.579005568137717,-18.28126108162006],[24.217364536239213,-17.88934701911849],[24.520705193792537,-17.887124932529936],[25.08444339366457,-17.661815687737374],[25.264225701608012,-17.736539808831417],[25.649163445750162,-18.53602589281899]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Central African Republic","sov_a3":"CAF","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Central African Republic","adm0_a3":"CAF","geou_dif":0,"geounit":"Central African Republic","gu_a3":"CAF","su_dif":0,"subunit":"Central African Republic","su_a3":"CAF","brk_diff":0,"name":"Central African Republic","name_long":"Central African Republic","brk_a3":"CAF","brk_name":"Central African Rep.","brk_group":null,"abbrev":"C.A.R.","postal":"CF","formal_en":"Central African Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Central African Republic","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":6,"mapcolor13":9,"pop_est":4511488,"gdp_md_est":3198,"pop_year":-99,"lastcensus":2003,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"CF","iso_a3":"CAF","iso_n3":"140","un_a3":"140","wb_a2":"CF","wb_a3":"CAF","woe_id":-99,"adm0_a3_is":"CAF","adm0_a3_us":"CAF","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":20,"long_len":24,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"CAF.geojson"},"geometry":{"type":"Polygon","coordinates":[[[15.279460483469109,7.421924546737969],[16.10623172370677,7.497087917506505],[16.290561557691888,7.754307359239306],[16.456184523187346,7.734773667832968],[16.705988396886255,7.508327541529979],[17.964929640380888,7.890914008002866],[18.38955488452322,8.281303615751824],[18.911021762780507,8.630894680206353],[18.81200971850927,8.982914536978598],[19.09400800952602,9.07484691002584],[20.05968549976427,9.012706000194854],[21.000868361096167,9.475985215691509],[21.723821648859452,10.567055568885976],[22.231129184668788,10.97188873946051],[22.864165480244225,11.142395127807546],[22.97754357269261,10.71446259199854],[23.554304233502194,10.089255275915308],[23.557249790142826,9.681218166538684],[23.394779087017184,9.265067857292223],[23.459012892355986,8.954285793488893],[23.805813429466752,8.666318874542426],[24.567369012152085,8.229187933785468],[25.11493248871679,7.825104071479174],[25.124130893664727,7.500085150579436],[25.79664798351118,6.979315904158071],[26.213418409945117,6.546603298362072],[26.46590945812323,5.94671743410187],[27.21340905122517,5.550953477394557],[27.37422610851749,5.233944403500061],[27.04406538260471,5.127852688004836],[26.402760857862543,5.150874538590871],[25.650455356557472,5.256087754737123],[25.278798455514302,5.170408229997192],[25.12883344900328,4.927244777847789],[24.805028924262416,4.89724660890235],[24.410531040146253,5.108784084489129],[23.29721398285014,4.609693101414223],[22.841479526468106,4.710126247573484],[22.70412356943629,4.633050848810157],[22.405123732195538,4.029160061047321],[21.659122755630023,4.22434194581372],[20.927591180106276,4.322785549329737],[20.290679152108936,4.691677761245288],[19.467783644293146,5.03152781821278],[18.93231245288476,4.709506130385975],[18.54298221199778,4.201785183118318],[18.45306521980993,3.504385891123349],[17.809900343505262,3.56019643799857],[17.133042433346304,3.728196519379452],[16.537058139724135,3.198254706226279],[16.012852410555354,2.267639675298085],[15.907380812247652,2.557389431158612],[15.86273237474748,3.013537298998983],[15.405395948964383,3.33530060466434],[15.036219516671252,3.851367295747124],[14.950953403389661,4.210389309094921],[14.478372430080467,4.732605495620447],[14.558935988023505,5.03059764243153],[14.459407179429348,5.4517605656103],[14.536560092841112,6.22695872642069],[14.776545444404576,6.408498033062045],[15.279460483469109,7.421924546737969]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Djibouti","sov_a3":"DJI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Djibouti","adm0_a3":"DJI","geou_dif":0,"geounit":"Djibouti","gu_a3":"DJI","su_dif":0,"subunit":"Djibouti","su_a3":"DJI","brk_diff":0,"name":"Djibouti","name_long":"Djibouti","brk_a3":"DJI","brk_name":"Djibouti","brk_group":null,"abbrev":"Dji.","postal":"DJ","formal_en":"Republic of Djibouti","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Djibouti","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":4,"mapcolor13":8,"pop_est":516055,"gdp_md_est":1885,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"DJ","iso_a3":"DJI","iso_n3":"262","un_a3":"262","wb_a2":"DJ","wb_a3":"DJI","woe_id":-99,"adm0_a3_is":"DJI","adm0_a3_us":"DJI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Middle East & North Africa","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"DJI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[43.08122602720015,12.699638576707116],[43.31785241066467,12.390148423711025],[43.286381463398925,11.974928290245884],[42.715873650896526,11.735640570518342],[43.14530480324214,11.462039699748857],[42.77685184100096,10.92687856693442],[42.55493000000013,11.105110000000195],[42.31414000000012,11.0342],[41.755570000000205,11.050910000000101],[41.73959000000019,11.355110000000138],[41.66176000000013,11.6312],[42.000000000000114,12.100000000000136],[42.35156000000012,12.542230000000131],[42.77964236834475,12.455415757695675],[43.08122602720015,12.699638576707116]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Algeria","sov_a3":"DZA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Algeria","adm0_a3":"DZA","geou_dif":0,"geounit":"Algeria","gu_a3":"DZA","su_dif":0,"subunit":"Algeria","su_a3":"DZA","brk_diff":0,"name":"Algeria","name_long":"Algeria","brk_a3":"DZA","brk_name":"Algeria","brk_group":null,"abbrev":"Alg.","postal":"DZ","formal_en":"People\'s Democratic Republic of Algeria","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Algeria","name_alt":null,"mapcolor7":5,"mapcolor8":1,"mapcolor9":6,"mapcolor13":3,"pop_est":34178188,"gdp_md_est":232900,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"DZ","iso_a3":"DZA","iso_n3":"012","un_a3":"012","wb_a2":"DZ","wb_a3":"DZA","woe_id":-99,"adm0_a3_is":"DZA","adm0_a3_us":"DZA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"DZA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[11.999505649471613,23.47166840259645],[8.572893100629784,21.565660712159143],[5.677565952180686,19.601206976799716],[4.267419467800039,19.155265204337],[3.158133172222705,19.057364203360038],[3.1466610042539,19.69357859952144],[2.683588494486429,19.856230170160114],[2.06099083823392,20.142233384679486],[1.823227573259032,20.610809434486043],[-1.550054897457613,22.792665920497384],[-4.92333736817423,24.974574082941],[-8.68439978680905,27.395744126896005],[-8.665124477564191,27.589479071558227],[-8.665589565454809,27.656425889592356],[-8.674116176782974,28.84128896739658],[-7.059227667661928,29.57922842052453],[-6.060632290053774,29.731699734001694],[-5.242129278982787,30.000443020135588],[-4.859646165374471,30.501187649043842],[-3.690441046554696,30.896951605751152],[-3.647497931320146,31.63729401298067],[-3.068980271812648,31.724497992473214],[-2.616604783529567,32.09434621838615],[-1.30789913573787,32.2628889023061],[-1.124551153966308,32.65152151135713],[-1.388049282222568,32.86401500094131],[-1.733454555661467,33.919712836231994],[-1.792985805661687,34.527918606091205],[-2.169913702798624,35.16839630791668],[-1.208602871089056,35.7148487411871],[-0.127454392894606,35.888662421200806],[0.503876580415209,36.30127289483528],[1.466918572606545,36.605647081034405],[3.161698846050825,36.78390493422522],[4.81575809084913,36.86503693292346],[5.320120070017793,36.71651886651662],[6.261819695672613,37.11065501560674],[7.33038496260397,37.118380642234364],[7.737078484741004,36.885707505840216],[8.420964389691676,36.94642731378316],[8.217824334352315,36.433176988260286],[8.376367628623768,35.47987600355594],[8.140981479534304,34.65514598239379],[7.524481642292244,34.09737641045146],[7.612641635782182,33.34411489514896],[8.430472853233368,32.74833730725595],[8.439102817426118,32.50628489840082],[9.055602654668148,32.10269196220129],[9.482139926805274,30.307556057246188],[9.805634392952411,29.42463837332339],[9.859997999723447,28.959989732371014],[9.683884718472767,28.1441738957792],[9.756128370816782,27.68825857188415],[9.629056023811074,27.14095347748092],[9.716285841519749,26.512206325785698],[9.319410841518163,26.094324856057455],[9.910692579801776,25.36545461679674],[9.94826134607797,24.936953640232517],[10.303846876678362,24.379313259370917],[10.771363559622927,24.56253205006175],[11.560669386449005,24.097909247325518],[11.999505649471613,23.47166840259645]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Ethiopia","sov_a3":"ETH","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ethiopia","adm0_a3":"ETH","geou_dif":0,"geounit":"Ethiopia","gu_a3":"ETH","su_dif":0,"subunit":"Ethiopia","su_a3":"ETH","brk_diff":0,"name":"Ethiopia","name_long":"Ethiopia","brk_a3":"ETH","brk_name":"Ethiopia","brk_group":null,"abbrev":"Eth.","postal":"ET","formal_en":"Federal Democratic Republic of Ethiopia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Ethiopia","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":1,"mapcolor13":13,"pop_est":85237338,"gdp_md_est":68770,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"ET","iso_a3":"ETH","iso_n3":"231","un_a3":"231","wb_a2":"ET","wb_a3":"ETH","woe_id":-99,"adm0_a3_is":"ETH","adm0_a3_us":"ETH","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ETH.geojson"},"geometry":{"type":"Polygon","coordinates":[[[37.90607000000011,14.959430000000168],[38.51295,14.50547],[39.0994,14.74064],[39.34061,14.53155],[40.02625000000012,14.51959],[40.8966,14.118640000000141],[41.1552,13.77333],[41.59856,13.452090000000112],[42.00975,12.86582],[42.35156000000012,12.542230000000131],[42.000000000000114,12.100000000000136],[41.66176000000013,11.6312],[41.73959000000019,11.355110000000138],[41.755570000000205,11.050910000000101],[42.31414000000012,11.0342],[42.55493000000013,11.105110000000195],[42.77685184100096,10.92687856693442],[42.55876,10.57258000000013],[42.92812,10.021940000000143],[43.29699000000011,9.540480000000173],[43.67875,9.18358000000012],[46.94834,7.99688],[47.78942,8.003],[44.9636,5.001620000000116],[43.66087,4.95755],[42.76967000000013,4.252590000000225],[42.12861,4.234130000000164],[41.85508309264412,3.918911920483765],[41.17180000000013,3.91909],[40.76848000000012,4.257020000000125],[39.85494000000011,3.838790000000131],[39.55938425876593,3.422060000000215],[38.89251,3.50074],[38.67114,3.61607],[38.436970000000144,3.58851],[38.12091500000014,3.598605],[36.85509323800824,4.447864127672858],[36.15907863285565,4.447864127672858],[35.81744766235362,4.776965663462022],[35.81744766235362,5.338232082790853],[35.298007118233095,5.506],[34.70702,6.59422000000012],[34.25032,6.82607],[34.07510000000019,7.22595],[33.568290000000104,7.71334],[32.954180000000235,7.784970000000102],[33.29480000000012,8.35458],[33.82550000000015,8.37916],[33.97498,8.684560000000147],[33.96162,9.58358],[34.25745,10.63009],[34.73115000000013,10.910170000000107],[34.83163000000013,11.318960000000118],[35.26049,12.08286],[35.863630000000164,12.57828],[36.27022,13.563330000000121],[36.42951,14.42211],[37.59377,14.2131],[37.90607000000011,14.959430000000168]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Gabon","sov_a3":"GAB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Gabon","adm0_a3":"GAB","geou_dif":0,"geounit":"Gabon","gu_a3":"GAB","su_dif":0,"subunit":"Gabon","su_a3":"GAB","brk_diff":0,"name":"Gabon","name_long":"Gabon","brk_a3":"GAB","brk_name":"Gabon","brk_group":null,"abbrev":"Gabon","postal":"GA","formal_en":"Gabonese Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Gabon","name_alt":null,"mapcolor7":6,"mapcolor8":2,"mapcolor9":5,"mapcolor13":5,"pop_est":1514993,"gdp_md_est":21110,"pop_year":-99,"lastcensus":2003,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"GA","iso_a3":"GAB","iso_n3":"266","un_a3":"266","wb_a2":"GA","wb_a3":"GAB","woe_id":-99,"adm0_a3_is":"GAB","adm0_a3_us":"GAB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":3,"homepart":1,"filename":"GAB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[11.093772820691925,-3.978826592630547],[10.06613528813574,-2.969482517105681],[9.40524539555497,-2.144313246269043],[8.79799563969317,-1.111301364754496],[8.830086704146423,-0.779073581550037],[9.048419630579588,-0.459351494960217],[9.29135053878369,0.268666083167687],[9.492888624721985,1.010119533691494],[9.830284051155644,1.067893784993799],[11.285078973036462,1.057661851400013],[11.276449008843713,2.261050930180872],[11.75166548019979,2.326757513839993],[12.359380323952221,2.19281220133945],[12.951333855855609,2.32161570882694],[13.075822381246752,2.267097072759015],[13.003113641012078,1.83089630778332],[13.282631463278818,1.31418366129688],[14.026668735417218,1.395677395021153],[14.276265903386957,1.196929836426619],[13.843320753645655,0.038757635901149],[14.316418491277743,-0.552627455247048],[14.425455763413593,-1.333406670744971],[14.299210239324564,-1.998275648612214],[13.99240726080771,-2.4708049454891],[13.109618767965628,-2.428740329603514],[12.575284458067642,-1.948511244315135],[12.495702752338161,-2.391688327650243],[11.820963575903193,-2.514161472181982],[11.478038771214303,-2.765618991714241],[11.855121697648114,-3.426870619321051],[11.093772820691925,-3.978826592630547]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Ghana","sov_a3":"GHA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ghana","adm0_a3":"GHA","geou_dif":0,"geounit":"Ghana","gu_a3":"GHA","su_dif":0,"subunit":"Ghana","su_a3":"GHA","brk_diff":0,"name":"Ghana","name_long":"Ghana","brk_a3":"GHA","brk_name":"Ghana","brk_group":null,"abbrev":"Ghana","postal":"GH","formal_en":"Republic of Ghana","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Ghana","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":1,"mapcolor13":4,"pop_est":23832495,"gdp_md_est":34200,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"GH","iso_a3":"GHA","iso_n3":"288","un_a3":"288","wb_a2":"GH","wb_a3":"GHA","woe_id":-99,"adm0_a3_is":"GHA","adm0_a3_us":"GHA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"GHA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[1.060121697604927,5.928837388528876],[-0.507637905265938,5.343472601742675],[-1.063624640294194,5.000547797053812],[-1.964706590167594,4.710462144383371],[-2.856125047202397,4.994475816259509],[-2.81070146321784,5.38905121502411],[-3.244370083011262,6.250471503113502],[-2.983584967450327,7.379704901555512],[-2.562189500326241,8.219627793811483],[-2.827496303712707,9.642460842319778],[-2.963896246747112,10.395334784380083],[-2.940409308270461,10.962690334512558],[-1.203357713211431,11.009819240762738],[-0.761575893548183,10.936929633015055],[-0.438701544588582,11.09834096927872],[0.023802524423701,11.018681748900804],[-0.049784715159944,10.706917832883931],[0.367579990245389,10.19121287682718],[0.365900506195885,9.465003973829482],[0.461191847342121,8.677222601756014],[0.712029249686878,8.31246450442383],[0.490957472342245,7.411744289576475],[0.570384148774849,6.914358628767189],[0.836931186536333,6.279978745952149],[1.060121697604927,5.928837388528876]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Egypt","sov_a3":"EGY","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Egypt","adm0_a3":"EGY","geou_dif":0,"geounit":"Egypt","gu_a3":"EGY","su_dif":0,"subunit":"Egypt","su_a3":"EGY","brk_diff":0,"name":"Egypt","name_long":"Egypt","brk_a3":"EGY","brk_name":"Egypt","brk_group":null,"abbrev":"Egypt","postal":"EG","formal_en":"Arab Republic of Egypt","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Egypt, Arab Rep.","name_alt":null,"mapcolor7":4,"mapcolor8":6,"mapcolor9":7,"mapcolor13":2,"pop_est":83082869,"gdp_md_est":443700,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"EG","iso_a3":"EGY","iso_n3":"818","un_a3":"818","wb_a2":"EG","wb_a3":"EGY","woe_id":-99,"adm0_a3_is":"EGY","adm0_a3_us":"EGY","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"EGY.geojson"},"geometry":{"type":"Polygon","coordinates":[[[34.9226,29.50133],[34.64174,29.09942],[34.42655,28.34399],[34.15451,27.8233],[33.92136,27.6487],[33.58811,27.97136],[33.13676,28.41765],[32.42323,29.85108],[32.32046,29.76043],[32.73482,28.70523],[33.34876,27.69989],[34.10455,26.14227],[34.47387,25.59856],[34.79507,25.03375],[35.69241,23.92671],[35.49372,23.75237],[35.52598,23.10244],[36.69069,22.20485],[36.86623,22],[32.9,22],[29.02,22],[25,22],[25,25.682499996361],[25,29.23865452953346],[24.70007,30.04419],[24.95762,30.6616],[24.80287,31.08929],[25.16482,31.56915],[26.49533,31.58568],[27.45762,31.32126],[28.45048,31.02577],[28.91353,30.87005],[29.68342,31.18686],[30.09503,31.4734],[30.97693,31.55586],[31.68796,31.4296],[31.96041,30.9336],[32.19247,31.26034],[32.99392,31.02407],[33.7734,30.96746],[34.26544,31.21936],[34.9226,29.50133]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Guinea","sov_a3":"GIN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Guinea","adm0_a3":"GIN","geou_dif":0,"geounit":"Guinea","gu_a3":"GIN","su_dif":0,"subunit":"Guinea","su_a3":"GIN","brk_diff":0,"name":"Guinea","name_long":"Guinea","brk_a3":"GIN","brk_name":"Guinea","brk_group":null,"abbrev":"Gin.","postal":"GN","formal_en":"Republic of Guinea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Guinea","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":7,"mapcolor13":2,"pop_est":10057975,"gdp_md_est":10600,"pop_year":-99,"lastcensus":1996,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"GN","iso_a3":"GIN","iso_n3":"324","un_a3":"324","wb_a2":"GN","wb_a3":"GIN","woe_id":-99,"adm0_a3_is":"GIN","adm0_a3_us":"GIN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"GIN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-8.439298468448698,7.686042792181738],[-8.722123582382123,7.71167430259851],[-8.926064622422004,7.309037380396375],[-9.208786383490844,7.313920803247953],[-9.40334815106975,7.526905218938907],[-9.337279832384581,7.928534450711353],[-9.755342169625834,8.541055202666925],[-10.016566534861255,8.42850393313523],[-10.23009355309128,8.406205552601293],[-10.505477260774668,8.348896389189605],[-10.494315151399633,8.715540676300435],[-10.654770473665891,8.977178452994194],[-10.622395188835041,9.267910061068278],[-10.8391519840833,9.688246161330369],[-11.117481248407328,10.045872911006285],[-11.917277390988659,10.046983954300558],[-12.150338100625005,9.858571682164381],[-12.425928514037565,9.835834051955956],[-12.59671912276221,9.62018830000197],[-12.71195756677308,9.342711696810767],[-13.246550258832515,8.903048610871508],[-13.685153977909792,9.49474376061346],[-14.074044969122282,9.886166897008252],[-14.33007585291237,10.015719712763966],[-14.579698859098258,10.214467271358515],[-14.693231980843505,10.656300767454042],[-14.839553798877944,10.876571560098139],[-15.130311245168171,11.040411688679526],[-14.685687221728898,11.527823798056488],[-14.382191534878729,11.509271958863692],[-14.121406419317779,11.677117010947697],[-13.900799729863776,11.678718980348748],[-13.743160773157411,11.811269029177412],[-13.828271857142125,12.142644151249044],[-13.718743658899513,12.24718557377551],[-13.700476040084325,12.586182969610194],[-13.217818162478238,12.575873521367967],[-12.499050665730564,12.332089952031057],[-12.278599005573438,12.354440008997285],[-12.203564825885634,12.465647691289405],[-11.65830095055793,12.386582749882834],[-11.51394283695059,12.442987575729418],[-11.456168585648271,12.076834214725338],[-11.29757361494451,12.077971096235771],[-11.036555955438258,12.211244615116515],[-10.870829637078215,12.17788747807211],[-10.593223842806282,11.92397532800598],[-10.165213792348837,11.844083563682744],[-9.890992804392013,12.060478623904972],[-9.567911749703214,12.194243068892476],[-9.327616339546012,12.334286200403454],[-9.127473517279583,12.308060411015331],[-8.90526485842453,12.088358059126437],[-8.786099005559464,11.812560939984706],[-8.376304897484914,11.393645941610629],[-8.581305304386774,11.136245632364805],[-8.620321010767128,10.810890814655183],[-8.407310756860028,10.909256903522762],[-8.282357143578281,10.792597357623846],[-8.33537716310974,10.494811916541934],[-8.029943610048619,10.206534939001713],[-8.229337124046822,10.1290202905639],[-8.30961646161225,9.789531968622441],[-8.079113735374348,9.376223863152035],[-7.832100389019188,8.575704250518626],[-8.20349890790088,8.455453192575447],[-8.299048631208564,8.316443589710303],[-8.221792364932199,8.123328762235573],[-8.280703497744938,7.687179673692156],[-8.439298468448698,7.686042792181738]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Eritrea","sov_a3":"ERI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Eritrea","adm0_a3":"ERI","geou_dif":0,"geounit":"Eritrea","gu_a3":"ERI","su_dif":0,"subunit":"Eritrea","su_a3":"ERI","brk_diff":0,"name":"Eritrea","name_long":"Eritrea","brk_a3":"ERI","brk_name":"Eritrea","brk_group":null,"abbrev":"Erit.","postal":"ER","formal_en":"State of Eritrea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Eritrea","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":2,"mapcolor13":12,"pop_est":5647168,"gdp_md_est":3945,"pop_year":-99,"lastcensus":1984,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"ER","iso_a3":"ERI","iso_n3":"232","un_a3":"232","wb_a2":"ER","wb_a3":"ERI","woe_id":-99,"adm0_a3_is":"ERI","adm0_a3_us":"ERI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"ERI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[42.35156000000012,12.542230000000131],[42.00975,12.86582],[41.59856,13.452090000000112],[41.15519371924984,13.773319810435224],[40.8966,14.118640000000141],[40.026218702969175,14.519579169162284],[39.34061,14.53155],[39.0994,14.74064],[38.51295,14.50547],[37.90607000000011,14.959430000000168],[37.59377,14.2131],[36.42951,14.42211],[36.32318891779812,14.82248057704106],[36.75386030451858,16.29187409104429],[36.852530000000115,16.95655],[37.16747,17.263140000000135],[37.90400000000011,17.42754],[38.410089959473225,17.99830739997031],[38.990622999840014,16.84062612555169],[39.26611006038803,15.922723496967249],[39.814293654140215,15.435647284400318],[41.17927493669765,14.491079616753211],[41.73495161313235,13.921036892141558],[42.27683068214486,13.343992010954423],[42.58957645037526,13.000421250861905],[43.08122602720015,12.699638576707116],[42.77964236834475,12.455415757695675],[42.35156000000012,12.542230000000131]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Gambia","sov_a3":"GMB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Gambia","adm0_a3":"GMB","geou_dif":0,"geounit":"Gambia","gu_a3":"GMB","su_dif":0,"subunit":"Gambia","su_a3":"GMB","brk_diff":0,"name":"Gambia","name_long":"The Gambia","brk_a3":"GMB","brk_name":"Gambia","brk_group":null,"abbrev":"Gambia","postal":"GM","formal_en":"Republic of the Gambia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Gambia, The","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":8,"pop_est":1782893,"gdp_md_est":2272,"pop_year":-99,"lastcensus":2003,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"GM","iso_a3":"GMB","iso_n3":"270","un_a3":"270","wb_a2":"GM","wb_a3":"GMB","woe_id":-99,"adm0_a3_is":"GMB","adm0_a3_us":"GMB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":10,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"GMB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-16.841524624081273,13.15139394780256],[-16.713728807023468,13.594958604379853],[-15.62459632003994,13.62358734786956],[-15.39877031092446,13.86036876063092],[-15.08173539881382,13.876491807505984],[-14.687030808968487,13.630356960499784],[-14.376713833055788,13.625680243377372],[-14.046992356817482,13.79406789800045],[-13.844963344772408,13.505041612192002],[-14.277701788784553,13.280585028532242],[-14.712197231494626,13.298206691943777],[-15.141163295949466,13.509511623585238],[-15.511812506562935,13.278569647672867],[-15.691000535534995,13.270353094938455],[-15.931295945692211,13.130284125211332],[-16.841524624081273,13.15139394780256]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Guinea Bissau","sov_a3":"GNB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Guinea Bissau","adm0_a3":"GNB","geou_dif":0,"geounit":"Guinea Bissau","gu_a3":"GNB","su_dif":0,"subunit":"Guinea Bissau","su_a3":"GNB","brk_diff":0,"name":"Guinea-Bissau","name_long":"Guinea-Bissau","brk_a3":"GNB","brk_name":"Guinea-Bissau","brk_group":null,"abbrev":"GnB.","postal":"GW","formal_en":"Republic of Guinea-Bissau","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Guinea-Bissau","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":3,"mapcolor13":4,"pop_est":1533964,"gdp_md_est":904.2,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"GW","iso_a3":"GNB","iso_n3":"624","un_a3":"624","wb_a2":"GW","wb_a3":"GNB","woe_id":-99,"adm0_a3_is":"GNB","adm0_a3_us":"GNB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":13,"long_len":13,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"GNB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-15.130311245168171,11.040411688679526],[-15.664180467175527,11.458474025920795],[-16.085214199273565,11.52459402103824],[-16.314786749730203,11.806514797406548],[-16.30894731288123,11.95870189050612],[-16.613838263403277,12.170911159712702],[-16.677451951554573,12.384851589401052],[-16.147716844130585,12.547761542201187],[-15.816574266004254,12.515567124883345],[-15.548476935274008,12.628170070847347],[-13.700476040084325,12.586182969610194],[-13.718743658899513,12.24718557377551],[-13.828271857142125,12.142644151249044],[-13.743160773157411,11.811269029177412],[-13.900799729863776,11.678718980348748],[-14.121406419317779,11.677117010947697],[-14.382191534878729,11.509271958863692],[-14.685687221728898,11.527823798056488],[-15.130311245168171,11.040411688679526]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Equatorial Guinea","sov_a3":"GNQ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Equatorial Guinea","adm0_a3":"GNQ","geou_dif":0,"geounit":"Equatorial Guinea","gu_a3":"GNQ","su_dif":0,"subunit":"Equatorial Guinea","su_a3":"GNQ","brk_diff":0,"name":"Equatorial Guinea","name_long":"Equatorial Guinea","brk_a3":"GNQ","brk_name":"Eq. Guinea","brk_group":null,"abbrev":"Eq. G.","postal":"GQ","formal_en":"Republic of Equatorial Guinea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Equatorial Guinea","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":4,"mapcolor13":8,"pop_est":650702,"gdp_md_est":14060,"pop_year":0,"lastcensus":2002,"gdp_year":0,"economy":"7. Least developed region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"GQ","iso_a3":"GNQ","iso_n3":"226","un_a3":"226","wb_a2":"GQ","wb_a3":"GNQ","woe_id":-99,"adm0_a3_is":"GNQ","adm0_a3_us":"GNQ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":10,"long_len":17,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"GNQ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[9.492888624721985,1.010119533691494],[9.305613234096256,1.160911363119183],[9.649158155972628,2.283866075037736],[11.276449008843713,2.261050930180872],[11.285078973036462,1.057661851400013],[9.830284051155644,1.067893784993799],[9.492888624721985,1.010119533691494]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Kenya","sov_a3":"KEN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Kenya","adm0_a3":"KEN","geou_dif":0,"geounit":"Kenya","gu_a3":"KEN","su_dif":0,"subunit":"Kenya","su_a3":"KEN","brk_diff":0,"name":"Kenya","name_long":"Kenya","brk_a3":"KEN","brk_name":"Kenya","brk_group":null,"abbrev":"Ken.","postal":"KE","formal_en":"Republic of Kenya","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Kenya","name_alt":null,"mapcolor7":5,"mapcolor8":2,"mapcolor9":7,"mapcolor13":3,"pop_est":39002772,"gdp_md_est":61510,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"KE","iso_a3":"KEN","iso_n3":"404","un_a3":"404","wb_a2":"KE","wb_a3":"KEN","woe_id":-99,"adm0_a3_is":"KEN","adm0_a3_us":"KEN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KEN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[40.993,-0.85829],[41.58513,-1.68325],[40.88477,-2.08255],[40.63785,-2.49979],[40.26304,-2.57309],[40.12119,-3.27768],[39.80006,-3.68116],[39.60489,-4.34653],[39.20222,-4.67677],[37.7669,-3.67712],[37.69869,-3.09699],[34.07262,-1.05982],[33.90371119710453,-0.95],[33.89356896966694,0.109813537861896],[34.18,0.515],[34.6721,1.17694],[35.03599,1.90584],[34.59607,3.05374],[34.47913,3.5556],[34.005,4.249884947362048],[34.62019626785388,4.847122742081988],[35.298007118232974,5.506],[35.817447662353516,5.338232082790797],[35.817447662353516,4.77696566346189],[36.159078632855646,4.447864127672769],[36.85509323800812,4.447864127672769],[38.120915,3.598605],[38.43697,3.58851],[38.67114,3.61607],[38.89251,3.50074],[39.55938425876585,3.42206],[39.85494,3.83879],[40.76848,4.25702],[41.1718,3.91909],[41.85508309264397,3.918911920483727],[40.98105,2.78452],[40.993,-0.85829]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Liberia","sov_a3":"LBR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Liberia","adm0_a3":"LBR","geou_dif":0,"geounit":"Liberia","gu_a3":"LBR","su_dif":0,"subunit":"Liberia","su_a3":"LBR","brk_diff":0,"name":"Liberia","name_long":"Liberia","brk_a3":"LBR","brk_name":"Liberia","brk_group":null,"abbrev":"Liberia","postal":"LR","formal_en":"Republic of Liberia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Liberia","name_alt":null,"mapcolor7":2,"mapcolor8":3,"mapcolor9":4,"mapcolor13":9,"pop_est":3441790,"gdp_md_est":1526,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"LR","iso_a3":"LBR","iso_n3":"430","un_a3":"430","wb_a2":"LR","wb_a3":"LBR","woe_id":-99,"adm0_a3_is":"LBR","adm0_a3_us":"LBR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"LBR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-7.71215938966975,4.364565944837722],[-7.974107224957251,4.355755113131963],[-9.004793667018674,4.8324185245922],[-9.913420376006684,5.593560695819207],[-10.765383876986643,6.140710760925558],[-11.438779466182055,6.785916856305747],[-11.19980180504828,7.105845648624737],[-11.146704270868383,7.396706447779536],[-10.69559485517648,7.939464016141087],[-10.23009355309128,8.406205552601293],[-10.016566534861255,8.42850393313523],[-9.755342169625834,8.541055202666925],[-9.337279832384581,7.928534450711353],[-9.40334815106975,7.526905218938907],[-9.208786383490844,7.313920803247953],[-8.926064622422004,7.309037380396375],[-8.722123582382123,7.71167430259851],[-8.439298468448698,7.686042792181738],[-8.48544552248535,7.39520783124307],[-8.385451626000574,6.911800645368742],[-8.60288021486862,6.46756419517166],[-8.311347622094019,6.193033148621083],[-7.993692592795881,6.126189683451543],[-7.570152553731688,5.707352199725904],[-7.539715135111762,5.313345241716519],[-7.63536821128403,5.188159084489456],[-7.71215938966975,4.364565944837722]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Madagascar","sov_a3":"MDG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Madagascar","adm0_a3":"MDG","geou_dif":0,"geounit":"Madagascar","gu_a3":"MDG","su_dif":0,"subunit":"Madagascar","su_a3":"MDG","brk_diff":0,"name":"Madagascar","name_long":"Madagascar","brk_a3":"MDG","brk_name":"Madagascar","brk_group":null,"abbrev":"Mad.","postal":"MG","formal_en":"Republic of Madagascar","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Madagascar","name_alt":null,"mapcolor7":6,"mapcolor8":5,"mapcolor9":2,"mapcolor13":3,"pop_est":20653556,"gdp_md_est":20130,"pop_year":-99,"lastcensus":1993,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"MG","iso_a3":"MDG","iso_n3":"450","un_a3":"450","wb_a2":"MG","wb_a3":"MDG","woe_id":-99,"adm0_a3_is":"MDG","adm0_a3_us":"MDG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MDG.geojson"},"geometry":{"type":"Polygon","coordinates":[[[49.54351891459575,-12.469832858940554],[49.80898074727909,-12.895284925999555],[50.056510857957164,-13.555761407121985],[50.21743126811407,-14.758788750876795],[50.47653689962553,-15.226512139550541],[50.377111443895956,-15.706069431219126],[50.20027469259318,-16.000263360256767],[49.86060550313868,-15.414252618066916],[49.67260664246086,-15.710203545802479],[49.863344354050156,-16.451036879138776],[49.77456424337271,-16.875042006093597],[49.49861209493412,-17.106035658438273],[49.435618523970305,-17.953064060134366],[49.041792433473944,-19.118781019774445],[48.54854088724801,-20.496888116134127],[47.93074913919867,-22.391501153251085],[47.54772342305131,-23.781958916928517],[47.095761346226595,-24.941629733990453],[46.282477654817086,-25.178462823184105],[45.409507684110444,-25.60143442149309],[44.83357384621755,-25.34610116953894],[44.03972049334976,-24.988345228782308],[43.76376834491117,-24.460677178649988],[43.697777540874455,-23.574116306250602],[43.345654331237625,-22.776903985283873],[43.254187046081,-22.057413018484123],[43.43329756040464,-21.336475111580185],[43.893682895692926,-21.163307386970125],[43.896370070172104,-20.830459486578174],[44.37432539243966,-20.07236622485639],[44.46439741392439,-19.435454196859048],[44.23242190936617,-18.961994724200906],[44.04297610858415,-18.33138722094317],[43.96308434426091,-17.409944756746782],[44.31246870298628,-16.850495700754955],[44.4465173683514,-16.216219170804507],[44.94493655780653,-16.1793738745804],[45.50273196796499,-15.97437346767854],[45.87299360533626,-15.793454278224685],[46.31224327981721,-15.780018405828798],[46.882182651564285,-15.210182386946313],[47.70512983581235,-14.594302666891764],[48.005214878131255,-14.091232598530375],[47.869047479042166,-13.663868503476586],[48.29382775248138,-13.784067884987486],[48.84506025573878,-13.089174899958664],[48.86350874206698,-12.48786793381042],[49.194651320193316,-12.04055673589197],[49.54351891459575,-12.469832858940554]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Mali","sov_a3":"MLI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Mali","adm0_a3":"MLI","geou_dif":0,"geounit":"Mali","gu_a3":"MLI","su_dif":0,"subunit":"Mali","su_a3":"MLI","brk_diff":0,"name":"Mali","name_long":"Mali","brk_a3":"MLI","brk_name":"Mali","brk_group":null,"abbrev":"Mali","postal":"ML","formal_en":"Republic of Mali","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Mali","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":7,"pop_est":12666987,"gdp_md_est":14590,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"ML","iso_a3":"MLI","iso_n3":"466","un_a3":"466","wb_a2":"ML","wb_a3":"MLI","woe_id":-99,"adm0_a3_is":"MLI","adm0_a3_us":"MLI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MLI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-11.834207526079467,14.79909699142894],[-11.666078253617854,15.388208319556298],[-11.349095017939504,15.411256008358478],[-10.650791388379417,15.132745876521426],[-10.086846482778212,15.330485744686273],[-9.700255092802706,15.264107367407362],[-9.55023840985939,15.486496893775437],[-5.537744309908447,15.501689764869257],[-5.315277268891933,16.20185374599184],[-5.488522508150438,16.325102037007966],[-5.971128709324248,20.64083344164763],[-6.453786586930335,24.956590684503425],[-4.92333736817423,24.974574082941],[-1.550054897457613,22.792665920497384],[1.823227573259032,20.610809434486043],[2.06099083823392,20.142233384679486],[2.683588494486429,19.856230170160114],[3.1466610042539,19.69357859952144],[3.158133172222705,19.057364203360038],[4.267419467800039,19.155265204337],[4.270209995143801,16.852227484601215],[3.723421665063483,16.184283759012615],[3.638258904646477,15.568119818580454],[2.749992709981484,15.409524847876696],[1.385528191746858,15.323561102759172],[1.01578331869851,14.968182277887948],[0.374892205414682,14.928908189346132],[-0.26625729003058,14.924308986872148],[-0.515854458000348,15.116157741755726],[-1.066363491205664,14.973815009007765],[-2.001035122068771,14.559008287000891],[-2.191824510090385,14.246417548067356],[-2.967694464520577,13.79815033615151],[-3.10370683431276,13.541266791228594],[-3.522802700199861,13.337661647998615],[-4.006390753587226,13.472485459848116],[-4.28040503581488,13.228443508349741],[-4.427166103523803,12.542645575404295],[-5.220941941743121,11.713858954307227],[-5.197842576508648,11.37514577885014],[-5.470564947929006,10.951269842976048],[-5.404341599946974,10.370736802609146],[-5.816926235365287,10.222554633012194],[-6.050452032892267,10.096360785355444],[-6.205222947606431,10.524060777219134],[-6.493965013037267,10.411302801958271],[-6.666460944027548,10.430810655148447],[-6.850506557635057,10.138993841996239],[-7.622759161804809,10.147236232946796],[-7.899589809592372,10.297382106970828],[-8.029943610048619,10.206534939001713],[-8.33537716310974,10.494811916541934],[-8.282357143578281,10.792597357623846],[-8.407310756860028,10.909256903522762],[-8.620321010767128,10.810890814655183],[-8.581305304386774,11.136245632364805],[-8.376304897484914,11.393645941610629],[-8.786099005559464,11.812560939984706],[-8.90526485842453,12.088358059126437],[-9.127473517279583,12.308060411015331],[-9.327616339546012,12.334286200403454],[-9.567911749703214,12.194243068892476],[-9.890992804392013,12.060478623904972],[-10.165213792348837,11.844083563682744],[-10.593223842806282,11.92397532800598],[-10.870829637078215,12.17788747807211],[-11.036555955438258,12.211244615116515],[-11.29757361494451,12.077971096235771],[-11.456168585648271,12.076834214725338],[-11.51394283695059,12.442987575729418],[-11.467899135778524,12.754518947800975],[-11.55339779300543,13.141213690641067],[-11.927716030311615,13.422075100147394],[-12.12488745772126,13.994727484589788],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Mozambique","sov_a3":"MOZ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Mozambique","adm0_a3":"MOZ","geou_dif":0,"geounit":"Mozambique","gu_a3":"MOZ","su_dif":0,"subunit":"Mozambique","su_a3":"MOZ","brk_diff":0,"name":"Mozambique","name_long":"Mozambique","brk_a3":"MOZ","brk_name":"Mozambique","brk_group":null,"abbrev":"Moz.","postal":"MZ","formal_en":"Republic of Mozambique","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Mozambique","name_alt":null,"mapcolor7":4,"mapcolor8":2,"mapcolor9":1,"mapcolor13":4,"pop_est":21669278,"gdp_md_est":18940,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"MZ","iso_a3":"MOZ","iso_n3":"508","un_a3":"508","wb_a2":"MZ","wb_a3":"MOZ","woe_id":-99,"adm0_a3_is":"MOZ","adm0_a3_us":"MOZ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MOZ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[35.31239790216904,-11.439146416879147],[36.51408165868426,-11.720938002166733],[36.775150994622805,-11.594537448780805],[37.47128421402661,-11.56875090906716],[37.82764489111139,-11.268769219612835],[38.42755659358775,-11.285202325081656],[39.521029900883775,-10.896853936408226],[40.31658857601719,-10.317096042525698],[40.47838748552303,-10.765440769089993],[40.437253045418686,-11.761710707245015],[40.56081139502857,-12.639176527561027],[40.59962039567975,-14.201975192931862],[40.775475294768995,-14.691764418194241],[40.4772506040126,-15.406294447493972],[40.08926395036522,-16.10077402106446],[39.45255862809705,-16.72089120856694],[38.53835086442152,-17.101023044505958],[37.41113284683888,-17.586368096591237],[36.28127933120936,-18.65968759529345],[35.89649661636406,-18.842260430580634],[35.198399692533144,-19.552811374593894],[34.78638349787005,-19.784011732667736],[34.70189253107284,-20.49704314543101],[35.176127150215365,-21.25436126066841],[35.37342776870574,-21.840837090748877],[35.385848253705404,-22.14],[35.562545536369086,-22.09],[35.533934767404304,-23.070787855727758],[35.37177412287238,-23.5353589820317],[35.60747033055563,-23.706563002214683],[35.45874555841962,-24.12260995859655],[35.04073489761066,-24.478350518493805],[34.21582400893547,-24.81631438568266],[33.01321007663901,-25.357573337507738],[32.574632195777866,-25.72731821055609],[32.66036339695009,-26.148584486599443],[32.91595503106569,-26.215867201443466],[32.830120477028885,-26.742191664336197],[32.07166548028107,-26.73382008230491],[31.98577924981197,-26.291779880480227],[31.837777947728064,-25.84333180105135],[31.75240848158188,-25.484283949487413],[31.93058882012425,-24.369416599222536],[31.670397983534652,-23.658969008073864],[31.191409132621285,-22.2515096981724],[32.244988234188014,-21.116488539313693],[32.50869306817344,-20.395292250248307],[32.65974327976258,-20.304290052982317],[32.772707960752626,-19.715592136313298],[32.61199425632489,-19.419382826416275],[32.65488569512715,-18.672089939043495],[32.84986087416439,-17.97905730557718],[32.847638787575846,-16.713398125884616],[32.32823896661022,-16.392074069893752],[31.8520406430406,-16.319417006091378],[31.636498243951195,-16.071990248277885],[31.173063999157677,-15.860943698797872],[30.338954705534544,-15.880839125230244],[30.274255812305107,-15.507786960515212],[30.17948123548183,-14.796099134991527],[33.214024692525214,-13.971860039936153],[33.789700148256685,-14.451830743063072],[34.064825473778626,-14.359950046448121],[34.45963341648854,-14.613009535381424],[34.51766604995231,-15.013708591372612],[34.307291294092096,-15.478641452702595],[34.38129194513405,-16.183559665596043],[35.033810255683534,-16.801299737213093],[35.33906294123164,-16.10744028083011],[35.77190473810836,-15.896858819240725],[35.68684533055594,-14.611045830954332],[35.26795617039801,-13.887834161029566],[34.907151320136165,-13.565424899960568],[34.55998904799935,-13.579997653866876],[34.28000613784198,-12.280025323132504],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Mauritania","sov_a3":"MRT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Mauritania","adm0_a3":"MRT","geou_dif":0,"geounit":"Mauritania","gu_a3":"MRT","su_dif":0,"subunit":"Mauritania","su_a3":"MRT","brk_diff":0,"name":"Mauritania","name_long":"Mauritania","brk_a3":"MRT","brk_name":"Mauritania","brk_group":null,"abbrev":"Mrt.","postal":"MR","formal_en":"Islamic Republic of Mauritania","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Mauritania","name_alt":null,"mapcolor7":3,"mapcolor8":3,"mapcolor9":2,"mapcolor13":1,"pop_est":3129486,"gdp_md_est":6308,"pop_year":-99,"lastcensus":2000,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"MR","iso_a3":"MRT","iso_n3":"478","un_a3":"478","wb_a2":"MR","wb_a3":"MRT","woe_id":-99,"adm0_a3_is":"MRT","adm0_a3_us":"MRT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MRT.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-12.170750291380301,14.616834214735505],[-12.830658331747516,15.303691514542946],[-13.43573767745306,16.03938304286619],[-14.099521450242179,16.304302273010492],[-14.577347581428981,16.59826365810281],[-15.135737270558817,16.587282416240782],[-15.62366614425869,16.369337063049812],[-16.12069007004193,16.455662543193384],[-16.463098110407884,16.13503611903846],[-16.549707810929064,16.67389211676196],[-16.270551723688357,17.166962795474873],[-16.14634741867485,18.108481553616656],[-16.256883307347167,19.096715806550307],[-16.37765112961327,19.593817246981985],[-16.277838100641517,20.0925206568147],[-16.536323614965468,20.567866319251493],[-17.063423224342568,20.999752102130827],[-16.845193650773993,21.33332347257488],[-12.929101935263532,21.32707062426756],[-13.118754441774712,22.771220201096256],[-12.874221564169575,23.284832261645178],[-11.937224493853321,23.374594224536168],[-11.96941891117116,25.933352769468268],[-8.6872936670174,25.881056219988906],[-8.68439978680905,27.395744126896005],[-4.92333736817423,24.974574082941],[-6.453786586930335,24.956590684503425],[-5.971128709324248,20.64083344164763],[-5.488522508150438,16.325102037007966],[-5.315277268891933,16.20185374599184],[-5.537744309908447,15.501689764869257],[-9.55023840985939,15.486496893775437],[-9.700255092802706,15.264107367407362],[-10.086846482778212,15.330485744686273],[-10.650791388379417,15.132745876521426],[-11.349095017939504,15.411256008358478],[-11.666078253617854,15.388208319556298],[-11.834207526079467,14.79909699142894],[-12.170750291380301,14.616834214735505]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Libya","sov_a3":"LBY","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Libya","adm0_a3":"LBY","geou_dif":0,"geounit":"Libya","gu_a3":"LBY","su_dif":0,"subunit":"Libya","su_a3":"LBY","brk_diff":0,"name":"Libya","name_long":"Libya","brk_a3":"LBY","brk_name":"Libya","brk_group":null,"abbrev":"Libya","postal":"LY","formal_en":"Libya","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Libya","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":2,"mapcolor13":11,"pop_est":6310434,"gdp_md_est":88830,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LY","iso_a3":"LBY","iso_n3":"434","un_a3":"434","wb_a2":"LY","wb_a3":"LBY","woe_id":-99,"adm0_a3_is":"LBY","adm0_a3_us":"LBY","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"LBY.geojson"},"geometry":{"type":"Polygon","coordinates":[[[14.8513,22.862950000000126],[14.143870883855243,22.49128896737113],[13.581424594790462,23.04050608976928],[11.9995056494717,23.471668402596432],[11.560669386449035,24.097909247325617],[10.771363559622955,24.562532050061748],[10.303846876678449,24.379313259370974],[9.948261346078027,24.936953640232616],[9.910692579801776,25.365454616796796],[9.31941084151822,26.094324856057483],[9.716285841519664,26.51220632578565],[9.629056023811074,27.140953477481048],[9.756128370816782,27.688258571884205],[9.683884718472882,28.144173895779314],[9.859997999723475,28.95998973237107],[9.805634392952356,29.424638373323376],[9.482139926805417,30.307556057246188],[9.970017124072967,30.539324856075382],[10.056575148161699,30.961831366493524],[9.950225050505196,31.376069647745283],[10.636901482799487,31.761420803345683],[10.944789666394513,32.081814683555365],[11.432253452203781,32.36890310315283],[11.48878746913101,33.13699575452324],[12.66331,32.79278],[13.08326,32.87882],[13.91868,32.71196],[15.24563,32.26508],[15.71394,31.37626],[16.61162,31.18218],[18.02109,30.76357],[19.08641,30.26639],[19.57404,30.52582],[20.05335,30.98576],[19.82033,31.75179000000014],[20.13397,32.2382],[20.85452,32.7068],[21.54298,32.8432],[22.89576,32.63858],[23.2368,32.19149],[23.609130000000107,32.18726],[23.9275,32.01667],[24.92114,31.89936],[25.16482,31.56915],[24.80287,31.08929],[24.95762,30.6616],[24.70007,30.04419],[25.00000000000011,29.23865452953356],[25.00000000000011,25.682499996361003],[25.00000000000011,22],[25.00000000000011,20.00304],[23.850000000000136,20],[23.837660000000138,19.580470000000105],[19.84926,21.49509],[15.86085,23.40972],[14.8513,22.862950000000126]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Lesotho","sov_a3":"LSO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Lesotho","adm0_a3":"LSO","geou_dif":0,"geounit":"Lesotho","gu_a3":"LSO","su_dif":0,"subunit":"Lesotho","su_a3":"LSO","brk_diff":0,"name":"Lesotho","name_long":"Lesotho","brk_a3":"LSO","brk_name":"Lesotho","brk_group":null,"abbrev":"Les.","postal":"LS","formal_en":"Kingdom of Lesotho","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Lesotho","name_alt":null,"mapcolor7":1,"mapcolor8":5,"mapcolor9":2,"mapcolor13":8,"pop_est":2130819,"gdp_md_est":3293,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LS","iso_a3":"LSO","iso_n3":"426","un_a3":"426","wb_a2":"LS","wb_a3":"LSO","woe_id":-99,"adm0_a3_is":"LSO","adm0_a3_us":"LSO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Southern Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"LSO.geojson"},"geometry":{"type":"Polygon","coordinates":[[[28.97826256685724,-28.955596612261715],[29.325166456832587,-29.257386976846252],[29.018415154748023,-29.74376555757737],[28.84839969250774,-30.070050551068253],[28.29106937023991,-30.2262167294543],[28.107204624145425,-30.54573211031495],[27.749397006956485,-30.64510588961222],[26.999261915807637,-29.875953871379984],[27.532511020627478,-29.24271087007536],[28.07433841320778,-28.851468601193588],[28.541700066855498,-28.64750172293757],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Morocco","sov_a3":"MAR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Morocco","adm0_a3":"MAR","geou_dif":0,"geounit":"Morocco","gu_a3":"MAR","su_dif":0,"subunit":"Morocco","su_a3":"MAR","brk_diff":0,"name":"Morocco","name_long":"Morocco","brk_a3":"MAR","brk_name":"Morocco","brk_group":null,"abbrev":"Mor.","postal":"MA","formal_en":"Kingdom of Morocco","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Morocco","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":3,"mapcolor13":9,"pop_est":34859364,"gdp_md_est":136600,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MA","iso_a3":"MAR","iso_n3":"504","un_a3":"504","wb_a2":"MA","wb_a3":"MAR","woe_id":-99,"adm0_a3_is":"MAR","adm0_a3_us":"MAR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MAR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-5.193863491222032,35.75518219659085],[-4.591006232105143,35.33071198174565],[-3.640056525070008,35.39985504815198],[-2.604305792644112,35.17909332940112],[-2.169913702798624,35.16839630791671],[-1.792985805661658,34.527918606091305],[-1.73345455566141,33.91971283623212],[-1.388049282222596,32.86401500094137],[-1.124551153966195,32.6515215113572],[-1.30789913573787,32.26288890230603],[-2.616604783529567,32.094346218386164],[-3.068980271812649,31.72449799247329],[-3.647497931320146,31.63729401298082],[-3.690441046554667,30.896951605751152],[-4.859646165374443,30.50118764904388],[-5.242129278982787,30.000443020135574],[-6.060632290053746,29.731699734001808],[-7.059227667661901,29.579228420524657],[-8.674116176782832,28.84128896739665],[-8.665589565454836,27.65642588959247],[-8.817809007940525,27.65642588959247],[-8.817828334986643,27.65642588959247],[-8.794883999049034,27.12069631602256],[-9.413037482124508,27.088476060488546],[-9.735343390328751,26.860944729107416],[-10.189424200877452,26.860944729107416],[-10.55126257978526,26.990807603456886],[-11.392554897496948,26.883423977154393],[-11.718219773800342,26.104091701760808],[-12.030758836301658,26.03086619720312],[-12.50096269372537,24.770116278578143],[-13.891110398809047,23.691009019459386],[-14.221167771857154,22.310163072188345],[-14.630832688850946,21.860939846274874],[-14.750954555713404,21.500600083903805],[-17.00296179856107,21.420734157796687],[-17.020428432675768,21.422310288981635],[-16.973247849993186,21.885744533774954],[-16.58913692876763,22.15823436125009],[-16.261921759495664,22.679339504481277],[-16.3264139469959,23.017768459560898],[-15.982610642958063,23.723358466074103],[-15.426003790742186,24.35913361256104],[-15.089331834360733,24.52026072844697],[-14.824645148161691,25.103532619725314],[-14.800925665739667,25.63626496022229],[-14.439939947964831,26.254418443297652],[-13.773804897506464,26.618892320252286],[-13.139941779014292,27.640147813420494],[-13.121613369914712,27.654147671719812],[-12.618836635783111,28.038185533148663],[-11.688919236690765,28.148643907172584],[-10.900956997104402,28.83214223888092],[-10.399592251008642,29.098585923777787],[-9.564811163765626,29.933573716749862],[-9.814718390329174,31.17773550060906],[-9.434793260119363,32.038096421836485],[-9.300692918321829,32.564679266890636],[-8.65747636558504,33.2402452662424],[-7.654178432638218,33.69706492770251],[-6.91254411460136,34.11047638603745],[-6.244342006851411,35.145865383437524],[-5.929994269219833,35.75998810479399],[-5.193863491222032,35.75518219659085]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Malawi","sov_a3":"MWI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Malawi","adm0_a3":"MWI","geou_dif":0,"geounit":"Malawi","gu_a3":"MWI","su_dif":0,"subunit":"Malawi","su_a3":"MWI","brk_diff":0,"name":"Malawi","name_long":"Malawi","brk_a3":"MWI","brk_name":"Malawi","brk_group":null,"abbrev":"Mal.","postal":"MW","formal_en":"Republic of Malawi","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Malawi","name_alt":null,"mapcolor7":1,"mapcolor8":3,"mapcolor9":4,"mapcolor13":5,"pop_est":14268711,"gdp_md_est":11810,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"MW","iso_a3":"MWI","iso_n3":"454","un_a3":"454","wb_a2":"MW","wb_a3":"MWI","woe_id":-99,"adm0_a3_is":"MWI","adm0_a3_us":"MWI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MWI.geojson"},"geometry":{"type":"Polygon","coordinates":[[[34.55998904799935,-11.520020033415925],[34.28000613784198,-12.280025323132504],[34.55998904799935,-13.579997653866876],[34.907151320136165,-13.565424899960568],[35.26795617039801,-13.887834161029566],[35.68684533055594,-14.611045830954332],[35.77190473810836,-15.896858819240725],[35.33906294123164,-16.10744028083011],[35.033810255683534,-16.801299737213093],[34.38129194513405,-16.183559665596043],[34.307291294092096,-15.478641452702595],[34.51766604995231,-15.013708591372612],[34.45963341648854,-14.613009535381424],[34.064825473778626,-14.359950046448121],[33.789700148256685,-14.451830743063072],[33.214024692525214,-13.971860039936153],[32.68816531752313,-13.712857761289275],[32.991764357237884,-12.783870537978272],[33.306422153463075,-12.435778090060218],[33.11428917820191,-11.607198174692314],[33.315310499817286,-10.796549981329697],[33.48568769708359,-10.525558770391115],[33.2313879737753,-9.6767216935648],[32.75937544122132,-9.230599053589058],[33.73972903823045,-9.417150974162723],[33.94083772409653,-9.693673841980294],[34.28000613784198,-10.159999688358404],[34.55998904799935,-11.520020033415925]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Niger","sov_a3":"NER","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Niger","adm0_a3":"NER","geou_dif":0,"geounit":"Niger","gu_a3":"NER","su_dif":0,"subunit":"Niger","su_a3":"NER","brk_diff":0,"name":"Niger","name_long":"Niger","brk_a3":"NER","brk_name":"Niger","brk_group":null,"abbrev":"Niger","postal":"NE","formal_en":"Republic of Niger","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Niger","name_alt":null,"mapcolor7":4,"mapcolor8":5,"mapcolor9":3,"mapcolor13":13,"pop_est":15306252,"gdp_md_est":10040,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"NE","iso_a3":"NER","iso_n3":"562","un_a3":"562","wb_a2":"NE","wb_a3":"NER","woe_id":-99,"adm0_a3_is":"NER","adm0_a3_us":"NER","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"NER.geojson"},"geometry":{"type":"Polygon","coordinates":[[[2.15447350424995,11.940150051313424],[2.177107781593918,12.625017808477537],[1.024103224297619,12.851825669806601],[0.993045688490156,13.335749620003865],[0.429927605805517,13.988733018443893],[0.295646396495215,14.444234930880667],[0.374892205414767,14.928908189346147],[1.015783318698482,14.968182277887989],[1.385528191746971,15.32356110275924],[2.749992709981541,15.409524847876753],[3.638258904646591,15.568119818580442],[3.723421665063597,16.184283759012658],[4.270209995143887,16.852227484601315],[4.267419467800096,19.155265204337127],[5.677565952180714,19.6012069767998],[8.57289310062987,21.565660712159225],[11.9995056494717,23.471668402596432],[13.581424594790462,23.04050608976928],[14.143870883855243,22.49128896737113],[14.8513,22.862950000000126],[15.096887648181848,21.30851878507491],[15.471076694407316,21.048457139565983],[15.487148064850146,20.730414537025638],[15.903246697664313,20.387618923417506],[15.685740594147774,19.957180080642384],[15.30044111497972,17.927949937405003],[15.247731154041846,16.627305813050782],[13.972201775781684,15.684365953021143],[13.540393507550789,14.367133693901222],[13.956698846094127,13.996691189016929],[13.95447675950561,13.353448798063766],[14.595781284247607,13.330426947477859],[14.495787387762903,12.859396267137356],[14.21353071458475,12.802035427293333],[14.18133629726691,12.483656927943171],[13.995352817448293,12.461565253138303],[13.318701613018561,13.556356309457954],[13.083987257548813,13.596147162322495],[12.30207116054055,13.037189032437539],[11.527803175511508,13.32898000737356],[10.989593133191532,13.387322699431195],[10.701031935273818,13.246917832894042],[10.114814487354748,13.277251898649467],[9.52492801274309,12.851102199754564],[9.014933302454438,12.826659247280418],[7.804671258178871,13.343526923063735],[7.330746697630047,13.098038031461215],[6.820441928747812,13.115091254117601],[6.445426059605722,13.492768459522722],[5.443058302440135,13.865923977102225],[4.368343540066007,13.747481594289411],[4.107945997747379,13.531215725147945],[3.967282749048934,12.956108710171577],[3.680633579125925,12.55290334721417],[3.611180454125587,11.660167141155966],[2.848643019226586,12.23563589115821],[2.490163608418015,12.233052069543588],[2.15447350424995,11.940150051313424]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Nigeria","sov_a3":"NGA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Nigeria","adm0_a3":"NGA","geou_dif":0,"geounit":"Nigeria","gu_a3":"NGA","su_dif":0,"subunit":"Nigeria","su_a3":"NGA","brk_diff":0,"name":"Nigeria","name_long":"Nigeria","brk_a3":"NGA","brk_name":"Nigeria","brk_group":null,"abbrev":"Nigeria","postal":"NG","formal_en":"Federal Republic of Nigeria","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Nigeria","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":5,"mapcolor13":2,"pop_est":149229090,"gdp_md_est":335400,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"NG","iso_a3":"NGA","iso_n3":"566","un_a3":"566","wb_a2":"NG","wb_a3":"NGA","woe_id":-99,"adm0_a3_is":"NGA","adm0_a3_us":"NGA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"NGA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[8.500287713259695,4.771982937026849],[7.46210818851594,4.412108262546241],[7.082596469764439,4.464689032403228],[6.6980721370806,4.240594183769517],[5.898172641634687,4.262453314628985],[5.362804803090881,4.887970689305959],[5.033574252959368,5.611802476418234],[4.325607130560683,6.270651149923467],[3.574180128604553,6.258300482605719],[2.691701694356254,6.258817246928629],[2.74906253420022,7.870734361192888],[2.723792758809509,8.50684540448971],[2.912308383810256,9.13760793704432],[3.220351596702101,9.4441525333997],[3.705438266625919,10.063210354040208],[3.600070021182801,10.332186184119408],[3.797112257511714,10.734745591673105],[3.572216424177469,11.327939357951518],[3.611180454125559,11.660167141155966],[3.680633579125811,12.552903347214226],[3.967282749048849,12.956108710171575],[4.107945997747322,13.531215725147831],[4.368343540066064,13.747481594289324],[5.443058302440164,13.865923977102298],[6.445426059605637,13.492768459522678],[6.820441928747754,13.115091254117518],[7.330746697630018,13.0980380314612],[7.804671258178786,13.343526923063745],[9.014933302454466,12.82665924728043],[9.524928012742945,12.851102199754479],[10.114814487354693,13.27725189864941],[10.701031935273704,13.246917832894084],[10.989593133191535,13.38732269943111],[11.527803175511394,13.328980007373588],[12.302071160540523,13.037189032437524],[13.08398725754887,13.596147162322566],[13.318701613018561,13.556356309457826],[13.99535281744835,12.461565253138346],[14.181336297266792,12.483656927943116],[14.577177768622533,12.085360826053503],[14.468192172918975,11.904751695193411],[14.415378859116686,11.572368882692075],[13.572949659894562,10.798565985553566],[13.308676385153918,10.160362046748928],[13.167599724997103,9.640626328973411],[12.955467970438974,9.417771714714704],[12.753671502339214,8.717762762888995],[12.218872104550599,8.305824082874324],[12.063946160539558,7.799808457872302],[11.839308709366803,7.397042344589436],[11.74577436691851,6.981382961449753],[11.05878787603035,6.644426784690594],[10.497375115611417,7.055357774275564],[10.118276808318257,7.038769639509879],[9.522705926154401,6.453482367372117],[9.233162876023044,6.444490668153334],[8.757532993208628,5.479665839047911],[8.500287713259695,4.771982937026849]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Namibia","sov_a3":"NAM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Namibia","adm0_a3":"NAM","geou_dif":0,"geounit":"Namibia","gu_a3":"NAM","su_dif":0,"subunit":"Namibia","su_a3":"NAM","brk_diff":0,"name":"Namibia","name_long":"Namibia","brk_a3":"NAM","brk_name":"Namibia","brk_group":null,"abbrev":"Nam.","postal":"NA","formal_en":"Republic of Namibia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Namibia","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":1,"mapcolor13":7,"pop_est":2108665,"gdp_md_est":13250,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"NA","iso_a3":"NAM","iso_n3":"516","un_a3":"516","wb_a2":"NA","wb_a3":"NAM","woe_id":-99,"adm0_a3_is":"NAM","adm0_a3_us":"NAM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Southern Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"NAM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[16.344976840895242,-28.576705010697697],[15.601818068105814,-27.8212472470228],[15.21047244635946,-27.090955905874047],[14.989710727608552,-26.117371921495156],[14.743214145576331,-25.39292001719538],[14.408144158595833,-23.853014011329847],[14.385716586981149,-22.65665292734069],[14.257714064194175,-22.111208184499954],[13.86864220546866,-21.699036960539978],[13.35249799973744,-20.872834161057504],[12.826845330464492,-19.673165785401665],[12.608564080463621,-19.0453488094877],[11.794918654028066,-18.069129327061916],[11.734198846085121,-17.301889336824473],[12.215461460019355,-17.111668389558083],[12.814081251688407,-16.94134286872407],[13.462362094789967,-16.971211846588773],[14.05850141770901,-17.423380629142663],[14.209706658595024,-17.35310068122572],[18.26330936043416,-17.309950860262006],[18.956186964603603,-17.789094740472258],[21.377176141045567,-17.930636488519696],[23.215048455506064,-17.52311614346598],[24.033861525170778,-17.295843194246324],[24.682349074001507,-17.353410739819473],[25.07695031098226,-17.57882333747662],[25.08444339366457,-17.661815687737374],[24.520705193792537,-17.887124932529936],[24.217364536239213,-17.88934701911849],[23.579005568137717,-18.28126108162006],[23.1968583513393,-17.869038181227786],[21.655040317478978,-18.219146010005225],[20.910641310314535,-18.252218926672022],[20.881134067475866,-21.814327080983148],[19.89545779794068,-21.84915699634787],[19.895767856534434,-24.767790215760588],[19.894734327888614,-28.461104831660776],[19.002127312911085,-28.972443129188864],[18.464899122804752,-29.04546192801728],[17.83615197110953,-28.85637786226132],[17.387497185951503,-28.78351409272978],[17.218928663815404,-28.35594329194681],[16.824017368240902,-28.082161553664466],[16.344976840895242,-28.576705010697697]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"South Sudan","sov_a3":"SDS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"South Sudan","adm0_a3":"SDS","geou_dif":0,"geounit":"South Sudan","gu_a3":"SDS","su_dif":0,"subunit":"South Sudan","su_a3":"SDS","brk_diff":0,"name":"South Sudan","name_long":"South Sudan","brk_a3":"SDS","brk_name":"S. Sudan","brk_group":null,"abbrev":"S. Sud.","postal":"SS","formal_en":"Republic of South Sudan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"South Sudan","name_alt":null,"mapcolor7":1,"mapcolor8":3,"mapcolor9":3,"mapcolor13":5,"pop_est":10625176,"gdp_md_est":13227,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"SS","iso_a3":"SSD","iso_n3":"728","un_a3":"728","wb_a2":"SS","wb_a3":"SSD","woe_id":-99,"adm0_a3_is":"SSD","adm0_a3_us":"SDS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":11,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"SSD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.97498,8.68456],[33.82550000000015,8.37916],[33.29480000000012,8.35458],[32.95418,7.784970000000102],[33.568290000000104,7.71334],[34.0751,7.22595],[34.25032,6.82607],[34.70702,6.59422000000012],[35.298007118233095,5.506],[34.62019626785394,4.847122742082036],[34.005,4.249884947362147],[33.3900000000001,3.79],[32.68642,3.79232],[31.881450000000143,3.55827],[31.24556,3.7819],[30.83385,3.50917],[29.95349,4.1737],[29.71599531425602,4.600804755060153],[29.159078403446642,4.389267279473245],[28.696677687298802,4.455077215996994],[28.428993768027,4.287154649264608],[27.979977247842953,4.408413397637388],[27.374226108517632,5.233944403500175],[27.213409051225256,5.550953477394614],[26.465909458123292,5.946717434101856],[26.21341840994512,6.546603298362129],[25.796647983511264,6.97931590415817],[25.124130893664812,7.500085150579424],[25.114932488716875,7.825104071479245],[24.5673690121522,8.229187933785454],[23.886979580860665,8.619729712933065],[24.19406772118765,8.728696472403897],[24.53741516360202,8.91753756573172],[24.794925745412684,9.810240916008695],[25.069603699343986,10.273759963267992],[25.790633328413946,10.411098940233728],[25.962307049621018,10.136420986302424],[26.477328213242515,9.552730334198088],[26.752006167173818,9.466893473594496],[27.112520981708883,9.638567194801624],[27.833550610778783,9.60423245056029],[27.970889587744352,9.398223985111654],[28.966597170745782,9.398223985111654],[29.000931914987174,9.60423245056029],[29.515953078608614,9.793073543888056],[29.61895731133285,10.084918869940225],[29.99663949798855,10.290927335388687],[30.83784073190338,9.70723668328452],[31.35286189552488,9.810240916008695],[31.850715687025517,10.531270545078826],[32.400071594888345,11.080626452941488],[32.31423473428475,11.68148447716652],[32.073891524594785,11.973329803218519],[32.67474954881965,12.02483191958072],[32.743419037302544,12.248007757149992],[33.20693808456178,12.179338268667093],[33.086766479716744,11.441141267476496],[33.20693808456178,10.720111638406593],[33.72195924818311,10.325262079630193],[33.842130853028145,9.981914637215993],[33.82496348090751,9.484060845715362],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Rwanda","sov_a3":"RWA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Rwanda","adm0_a3":"RWA","geou_dif":0,"geounit":"Rwanda","gu_a3":"RWA","su_dif":0,"subunit":"Rwanda","su_a3":"RWA","brk_diff":0,"name":"Rwanda","name_long":"Rwanda","brk_a3":"RWA","brk_name":"Rwanda","brk_group":null,"abbrev":"Rwa.","postal":"RW","formal_en":"Republic of Rwanda","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Rwanda","name_alt":null,"mapcolor7":5,"mapcolor8":2,"mapcolor9":3,"mapcolor13":10,"pop_est":10473282,"gdp_md_est":9706,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"RW","iso_a3":"RWA","iso_n3":"646","un_a3":"646","wb_a2":"RW","wb_a3":"RWA","woe_id":-99,"adm0_a3_is":"RWA","adm0_a3_us":"RWA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"RWA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[30.41910485201924,-1.134659112150416],[30.81613488131771,-1.698914076345389],[30.75830895358311,-2.287250257988369],[30.469696079232985,-2.413857517103458],[29.938359002407942,-2.348486830254238],[29.632176141078588,-2.917857761246097],[29.024926385216787,-2.839257907730158],[29.117478875451553,-2.292211195488385],[29.25483483248334,-2.215109958508911],[29.29188683443661,-1.620055840667987],[29.579466180140884,-1.341313164885626],[29.82151858899601,-1.443322442229785],[30.41910485201924,-1.134659112150416]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":7,"sovereignty":"Western Sahara","sov_a3":"SAH","adm0_dif":0,"level":2,"type":"Indeterminate","admin":"Western Sahara","adm0_a3":"SAH","geou_dif":0,"geounit":"Western Sahara","gu_a3":"SAH","su_dif":0,"subunit":"Western Sahara","su_a3":"SAH","brk_diff":1,"name":"Western Sahara","name_long":"Western Sahara","brk_a3":"B28","brk_name":"W. Sahara","brk_group":null,"abbrev":"W. Sah.","postal":"WS","formal_en":"Sahrawi Arab Democratic Republic","formal_fr":null,"note_adm0":"Self admin.","note_brk":"Self admin.; Claimed by Morocco","name_sort":"Western Sahara","name_alt":null,"mapcolor7":4,"mapcolor8":7,"mapcolor9":4,"mapcolor13":4,"pop_est":-99,"gdp_md_est":-99,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"EH","iso_a3":"ESH","iso_n3":"732","un_a3":"732","wb_a2":"-99","wb_a3":"-99","woe_id":-99,"adm0_a3_is":"MAR","adm0_a3_us":"SAH","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":9,"long_len":14,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"ESH.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-8.794883999049077,27.120696316022503],[-8.817828334986672,27.656425889592356],[-8.665589565454809,27.656425889592356],[-8.665124477564191,27.589479071558227],[-8.68439978680905,27.395744126896005],[-8.6872936670174,25.881056219988906],[-11.96941891117116,25.933352769468268],[-11.937224493853321,23.374594224536168],[-12.874221564169575,23.284832261645178],[-13.118754441774712,22.771220201096256],[-12.929101935263532,21.32707062426756],[-16.845193650773993,21.33332347257488],[-17.063423224342568,20.999752102130827],[-17.020428432675743,21.42231028898148],[-17.00296179856109,21.420734157796577],[-14.750954555713534,21.500600083903663],[-14.630832688851072,21.8609398462749],[-14.221167771857251,22.31016307218816],[-13.891110398809047,23.691009019459305],[-12.50096269372537,24.7701162785782],[-12.030758836301615,26.030866197203043],[-11.718219773800357,26.104091701760623],[-11.392554897496979,26.883423977154365],[-10.551262579785273,26.990807603456886],[-10.189424200877582,26.860944729107405],[-9.735343390328879,26.860944729107405],[-9.413037482124466,27.088476060488517],[-8.794883999049077,27.120696316022503]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Sudan","sov_a3":"SDN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Sudan","adm0_a3":"SDN","geou_dif":0,"geounit":"Sudan","gu_a3":"SDN","su_dif":0,"subunit":"Sudan","su_a3":"SDN","brk_diff":0,"name":"Sudan","name_long":"Sudan","brk_a3":"SDN","brk_name":"Sudan","brk_group":null,"abbrev":"Sudan","postal":"SD","formal_en":"Republic of the Sudan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Sudan","name_alt":null,"mapcolor7":2,"mapcolor8":6,"mapcolor9":4,"mapcolor13":1,"pop_est":25946220,"gdp_md_est":88080,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SD","iso_a3":"SDN","iso_n3":"729","un_a3":"729","wb_a2":"SD","wb_a3":"SDN","woe_id":-99,"adm0_a3_is":"SDN","adm0_a3_us":"SDN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Sub-Saharan Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"SDN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[33.963392794971185,9.464285229420625],[33.82496348090751,9.484060845715362],[33.842130853028145,9.981914637215993],[33.72195924818311,10.325262079630193],[33.20693808456178,10.720111638406593],[33.086766479716744,11.441141267476496],[33.20693808456178,12.179338268667093],[32.743419037302544,12.248007757149992],[32.67474954881965,12.02483191958072],[32.073891524594785,11.973329803218519],[32.31423473428475,11.68148447716652],[32.400071594888345,11.080626452941488],[31.850715687025517,10.531270545078826],[31.35286189552488,9.810240916008695],[30.83784073190338,9.70723668328452],[29.99663949798855,10.290927335388687],[29.61895731133285,10.084918869940225],[29.515953078608614,9.793073543888056],[29.000931914987174,9.60423245056029],[28.966597170745782,9.398223985111654],[27.970889587744352,9.398223985111654],[27.833550610778783,9.60423245056029],[27.112520981708883,9.638567194801624],[26.752006167173818,9.466893473594496],[26.477328213242515,9.552730334198088],[25.962307049621018,10.136420986302424],[25.790633328413946,10.411098940233728],[25.069603699343986,10.273759963267992],[24.794925745412684,9.810240916008695],[24.53741516360202,8.91753756573172],[24.19406772118765,8.728696472403897],[23.886979580860665,8.619729712933065],[23.805813429466752,8.666318874542526],[23.459012892355986,8.95428579348902],[23.394779087017298,9.26506785729225],[23.55724979014292,9.68121816653877],[23.554304233502194,10.08925527591532],[22.97754357269275,10.71446259199854],[22.864165480244253,11.142395127807617],[22.87622,11.384610000000123],[22.50869,11.67936],[22.49762,12.26024],[22.28801,12.64605],[21.93681,12.588180000000136],[22.03759,12.95546],[22.29658,13.37232],[22.18329,13.78648],[22.51202,14.09318],[22.30351,14.32682],[22.56795000000011,14.944290000000137],[23.024590000000103,15.68072],[23.886890000000108,15.61084],[23.837660000000138,19.580470000000105],[23.850000000000136,20],[25.00000000000011,20.00304],[25.00000000000011,22],[29.02,22],[32.9,22],[36.86623,22],[37.1887200000001,21.01885],[36.96941,20.83744000000013],[37.11470000000014,19.80796],[37.4817900000001,18.61409],[37.86276,18.36786],[38.410089959473225,17.99830739997031],[37.90400000000011,17.42754],[37.16747,17.263140000000135],[36.852530000000115,16.95655],[36.75389,16.29186],[36.32322,14.82249],[36.42951,14.42211],[36.27022,13.563330000000121],[35.86363,12.57828],[35.26049,12.08286],[34.83163000000013,11.318960000000118],[34.73115000000013,10.910170000000107],[34.25745,10.63009],[33.96162,9.58358],[33.963392794971185,9.464285229420625]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Sierra Leone","sov_a3":"SLE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Sierra Leone","adm0_a3":"SLE","geou_dif":0,"geounit":"Sierra Leone","gu_a3":"SLE","su_dif":0,"subunit":"Sierra Leone","su_a3":"SLE","brk_diff":0,"name":"Sierra Leone","name_long":"Sierra Leone","brk_a3":"SLE","brk_name":"Sierra Leone","brk_group":null,"abbrev":"S.L.","postal":"SL","formal_en":"Republic of Sierra Leone","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Sierra Leone","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":7,"pop_est":6440053,"gdp_md_est":4285,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"SL","iso_a3":"SLE","iso_n3":"694","un_a3":"694","wb_a2":"SL","wb_a3":"SLE","woe_id":-99,"adm0_a3_is":"SLE","adm0_a3_us":"SLE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":12,"long_len":12,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SLE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-11.438779466182055,6.785916856305747],[-11.70819454593574,6.860098374860726],[-12.428098924193819,7.26294200279203],[-12.949049038128194,7.798645738145738],[-13.124025437868482,8.163946438016978],[-13.246550258832515,8.903048610871508],[-12.71195756677308,9.342711696810767],[-12.59671912276221,9.62018830000197],[-12.425928514037565,9.835834051955956],[-12.150338100625005,9.858571682164381],[-11.917277390988659,10.046983954300558],[-11.117481248407328,10.045872911006285],[-10.8391519840833,9.688246161330369],[-10.622395188835041,9.267910061068278],[-10.654770473665891,8.977178452994194],[-10.494315151399633,8.715540676300435],[-10.505477260774668,8.348896389189605],[-10.23009355309128,8.406205552601293],[-10.69559485517648,7.939464016141087],[-11.146704270868383,7.396706447779536],[-11.19980180504828,7.105845648624737],[-11.438779466182055,6.785916856305747]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Senegal","sov_a3":"SEN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Senegal","adm0_a3":"SEN","geou_dif":0,"geounit":"Senegal","gu_a3":"SEN","su_dif":0,"subunit":"Senegal","su_a3":"SEN","brk_diff":0,"name":"Senegal","name_long":"Senegal","brk_a3":"SEN","brk_name":"Senegal","brk_group":null,"abbrev":"Sen.","postal":"SN","formal_en":"Republic of Senegal","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Senegal","name_alt":null,"mapcolor7":2,"mapcolor8":6,"mapcolor9":5,"mapcolor13":5,"pop_est":13711597,"gdp_md_est":21980,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SN","iso_a3":"SEN","iso_n3":"686","un_a3":"686","wb_a2":"SN","wb_a3":"SEN","woe_id":-99,"adm0_a3_is":"SEN","adm0_a3_us":"SEN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SEN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-16.713728807023468,13.594958604379853],[-17.126106736712615,14.373515733289224],[-17.62504269049066,14.729540513564071],[-17.18517289882223,14.919477240452863],[-16.700706346085923,15.621527411354108],[-16.463098110407884,16.13503611903846],[-16.12069007004193,16.455662543193384],[-15.62366614425869,16.369337063049812],[-15.135737270558817,16.587282416240782],[-14.577347581428981,16.59826365810281],[-14.099521450242179,16.304302273010492],[-13.43573767745306,16.03938304286619],[-12.830658331747516,15.303691514542946],[-12.170750291380301,14.616834214735505],[-12.12488745772126,13.994727484589788],[-11.927716030311615,13.422075100147394],[-11.55339779300543,13.141213690641067],[-11.467899135778524,12.754518947800975],[-11.51394283695059,12.442987575729418],[-11.65830095055793,12.386582749882834],[-12.203564825885634,12.465647691289405],[-12.278599005573438,12.354440008997285],[-12.499050665730564,12.332089952031057],[-13.217818162478238,12.575873521367967],[-13.700476040084325,12.586182969610194],[-15.548476935274008,12.628170070847347],[-15.816574266004254,12.515567124883345],[-16.147716844130585,12.547761542201187],[-16.677451951554573,12.384851589401052],[-16.841524624081273,13.15139394780256],[-15.931295945692211,13.130284125211332],[-15.691000535534995,13.270353094938455],[-15.511812506562935,13.278569647672867],[-15.141163295949466,13.509511623585238],[-14.712197231494626,13.298206691943777],[-14.277701788784553,13.280585028532242],[-13.844963344772408,13.505041612192002],[-14.046992356817482,13.79406789800045],[-14.376713833055788,13.625680243377372],[-14.687030808968487,13.630356960499784],[-15.08173539881382,13.876491807505984],[-15.39877031092446,13.86036876063092],[-15.62459632003994,13.62358734786956],[-16.713728807023468,13.594958604379853]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Somaliland","sov_a3":"SOL","adm0_dif":0,"level":2,"type":"Indeterminate","admin":"Somaliland","adm0_a3":"SOL","geou_dif":0,"geounit":"Somaliland","gu_a3":"SOL","su_dif":0,"subunit":"Somaliland","su_a3":"SOL","brk_diff":1,"name":"Somaliland","name_long":"Somaliland","brk_a3":"B30","brk_name":"Somaliland","brk_group":null,"abbrev":"Solnd.","postal":"SL","formal_en":"Republic of Somaliland","formal_fr":null,"note_adm0":"Self admin.","note_brk":"Self admin.; Claimed by Somalia","name_sort":"Somaliland","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":5,"mapcolor13":2,"pop_est":3500000,"gdp_md_est":12250,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"-99","iso_a3":"-99","iso_n3":"-99","un_a3":"-099","wb_a2":"-99","wb_a3":"-99","woe_id":-99,"adm0_a3_is":"SOM","adm0_a3_us":"SOM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":10,"long_len":10,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"somaliland.geojson"},"geometry":{"type":"Polygon","coordinates":[[[48.938129510296505,9.451748968946674],[48.48673587422701,8.83762624758998],[47.78942,8.003],[46.94832848489796,7.996876532417388],[43.67875,9.18358000000012],[43.29697513201876,9.540477403191744],[42.92812,10.021940000000143],[42.55876,10.57258000000013],[42.77685184100096,10.92687856693442],[43.14530480324214,11.462039699748857],[43.470659620951665,11.27770986576388],[43.66666832863484,10.864169216348158],[44.11780358254282,10.445538438351605],[44.614259067570856,10.442205308468942],[45.55694054543915,10.698029486529776],[46.645401238803004,10.816549383991173],[47.525657586462785,11.12722809492999],[48.02159630716778,11.193063869669743],[48.37878380716927,11.375481675660126],[48.94820641459347,11.41062164961852],[48.94200524271844,11.394266058798166],[48.93849124532261,10.982327378783452],[48.93823286316109,9.973500067581483],[48.938129510296505,9.451748968946674]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Somalia","sov_a3":"SOM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Somalia","adm0_a3":"SOM","geou_dif":0,"geounit":"Somalia","gu_a3":"SOM","su_dif":0,"subunit":"Somalia","su_a3":"SOM","brk_diff":0,"name":"Somalia","name_long":"Somalia","brk_a3":"SOM","brk_name":"Somalia","brk_group":null,"abbrev":"Som.","postal":"SO","formal_en":"Federal Republic of Somalia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Somalia","name_alt":null,"mapcolor7":2,"mapcolor8":8,"mapcolor9":6,"mapcolor13":7,"pop_est":9832017,"gdp_md_est":5524,"pop_year":-99,"lastcensus":1987,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"SO","iso_a3":"SOM","iso_n3":"706","un_a3":"706","wb_a2":"SO","wb_a3":"SOM","woe_id":-99,"adm0_a3_is":"SOM","adm0_a3_us":"SOM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SOM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[49.72862,11.5789],[50.25878,11.67957],[50.73202,12.0219],[51.1112,12.02464],[51.13387,11.74815],[51.04153,11.16651],[51.04531,10.6409],[50.83418,10.27972],[50.55239,9.19874],[50.07092,8.08173],[49.4527,6.80466],[48.59455,5.33911],[47.74079,4.2194],[46.56476,2.85529],[45.56399,2.04576],[44.06815,1.05283],[43.13597,0.2922],[42.04157,-0.91916],[41.81095,-1.44647],[41.58513,-1.68325],[40.993,-0.85829],[40.98105,2.78452],[41.85508309264397,3.918911920483727],[42.12861,4.23413],[42.76967,4.25259],[43.66087,4.95755],[44.9636,5.00162],[47.78942,8.003],[48.48673587422695,8.837626247589995],[48.93812951029645,9.451748968946617],[48.93823286316103,9.973500067581512],[48.938491245322496,10.982327378783467],[48.94200524271835,11.394266058798138],[48.94820475850974,11.410617281697963],[49.26776,11.43033],[49.72862,11.5789]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Swaziland","sov_a3":"SWZ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Swaziland","adm0_a3":"SWZ","geou_dif":0,"geounit":"Swaziland","gu_a3":"SWZ","su_dif":0,"subunit":"Swaziland","su_a3":"SWZ","brk_diff":0,"name":"Swaziland","name_long":"Swaziland","brk_a3":"SWZ","brk_name":"Swaziland","brk_group":null,"abbrev":"Swz.","postal":"SW","formal_en":"Kingdom of Swaziland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Swaziland","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":2,"mapcolor13":5,"pop_est":1123913,"gdp_md_est":5702,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SZ","iso_a3":"SWZ","iso_n3":"748","un_a3":"748","wb_a2":"SZ","wb_a3":"SWZ","woe_id":-99,"adm0_a3_is":"SWZ","adm0_a3_us":"SWZ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Southern Africa","region_wb":"Sub-Saharan Africa","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SWZ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[32.07166548028107,-26.73382008230491],[31.868060337051077,-27.177927341421277],[31.282773064913325,-27.285879408478998],[30.68596194837448,-26.74384531016953],[30.676608514129637,-26.398078301704608],[30.949666782359913,-26.022649021104147],[31.04407962415715,-25.731452325139443],[31.333157586397906,-25.66019052500895],[31.837777947728064,-25.84333180105135],[31.98577924981197,-26.291779880480227],[32.07166548028107,-26.73382008230491]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Chad","sov_a3":"TCD","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Chad","adm0_a3":"TCD","geou_dif":0,"geounit":"Chad","gu_a3":"TCD","su_dif":0,"subunit":"Chad","su_a3":"TCD","brk_diff":0,"name":"Chad","name_long":"Chad","brk_a3":"TCD","brk_name":"Chad","brk_group":null,"abbrev":"Chad","postal":"TD","formal_en":"Republic of Chad","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Chad","name_alt":null,"mapcolor7":6,"mapcolor8":1,"mapcolor9":8,"mapcolor13":6,"pop_est":10329208,"gdp_md_est":15860,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"TD","iso_a3":"TCD","iso_n3":"148","un_a3":"148","wb_a2":"TD","wb_a3":"TCD","woe_id":-99,"adm0_a3_is":"TCD","adm0_a3_us":"TCD","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Middle Africa","region_wb":"Sub-Saharan Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TCD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[14.495787387762903,12.859396267137356],[14.595781284247607,13.330426947477859],[13.95447675950561,13.353448798063766],[13.956698846094127,13.996691189016929],[13.540393507550789,14.367133693901222],[13.97217,15.68437],[15.247731154041846,16.627305813050782],[15.30044111497972,17.927949937405003],[15.685740594147774,19.957180080642384],[15.903246697664313,20.387618923417506],[15.487148064850146,20.730414537025638],[15.47106,21.04845],[15.096887648181848,21.30851878507491],[14.8513,22.862950000000126],[15.86085,23.40972],[19.84926,21.49509],[23.837660000000138,19.580470000000105],[23.886890000000108,15.61084],[23.024590000000103,15.68072],[22.56795000000011,14.944290000000137],[22.30351,14.32682],[22.51202,14.09318],[22.18329,13.78648],[22.29658,13.37232],[22.03759,12.95546],[21.93681,12.588180000000136],[22.28801,12.64605],[22.49762,12.26024],[22.50869,11.67936],[22.87622,11.384610000000123],[22.864165480244253,11.142395127807617],[22.23112918466876,10.97188873946061],[21.72382164885954,10.567055568885962],[21.00086836109631,9.47598521569148],[20.05968549976427,9.01270600019484],[19.09400800952608,9.07484691002577],[18.81200971850927,8.982914536978626],[18.911021762780592,8.630894680206438],[18.389554884523303,8.281303615751881],[17.964929640380888,7.890914008002994],[16.70598839688637,7.508327541529979],[16.456184523187403,7.734773667832939],[16.290561557691888,7.754307359239418],[16.106231723706742,7.497087917506462],[15.279460483469164,7.421924546738012],[15.43609174974574,7.692812404811889],[15.120865512765306,8.382150173369437],[14.97999555833769,8.796104234243444],[14.544466586981855,8.96586131432224],[13.954218377344091,9.549494940626685],[14.171466098699113,10.021378282100045],[14.62720055508106,9.920919297724595],[14.9093538753948,9.99212942142276],[15.467872755605244,9.982336737503543],[14.923564894275046,10.891325181517516],[14.960151808337683,11.555574042197236],[14.89336,12.21905],[14.495787387762903,12.859396267137356]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Togo","sov_a3":"TGO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Togo","adm0_a3":"TGO","geou_dif":0,"geounit":"Togo","gu_a3":"TGO","su_dif":0,"subunit":"Togo","su_a3":"TGO","brk_diff":0,"name":"Togo","name_long":"Togo","brk_a3":"TGO","brk_name":"Togo","brk_group":null,"abbrev":"Togo","postal":"TG","formal_en":"Togolese Republic","formal_fr":"République Togolaise","note_adm0":null,"note_brk":null,"name_sort":"Togo","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":3,"mapcolor13":5,"pop_est":6019877,"gdp_md_est":5118,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"TG","iso_a3":"TGO","iso_n3":"768","un_a3":"768","wb_a2":"TG","wb_a3":"TGO","woe_id":-99,"adm0_a3_is":"TGO","adm0_a3_us":"TGO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Western Africa","region_wb":"Sub-Saharan Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TGO.geojson"},"geometry":{"type":"Polygon","coordinates":[[[1.865240512712319,6.142157701029731],[1.060121697604927,5.928837388528876],[0.836931186536333,6.279978745952149],[0.570384148774849,6.914358628767189],[0.490957472342245,7.411744289576475],[0.712029249686878,8.31246450442383],[0.461191847342121,8.677222601756014],[0.365900506195885,9.465003973829482],[0.367579990245389,10.19121287682718],[-0.049784715159944,10.706917832883931],[0.023802524423701,11.018681748900804],[0.899563022474069,10.99733938236426],[0.772335646171484,10.470808213742359],[1.077795037448738,10.175606594275024],[1.425060662450136,9.825395412633],[1.46304284018467,9.334624335157088],[1.664477573258381,9.12859039960938],[1.618950636409238,6.832038072126237],[1.865240512712319,6.142157701029731]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Tunisia","sov_a3":"TUN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Tunisia","adm0_a3":"TUN","geou_dif":0,"geounit":"Tunisia","gu_a3":"TUN","su_dif":0,"subunit":"Tunisia","su_a3":"TUN","brk_diff":0,"name":"Tunisia","name_long":"Tunisia","brk_a3":"TUN","brk_name":"Tunisia","brk_group":null,"abbrev":"Tun.","postal":"TN","formal_en":"Republic of Tunisia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Tunisia","name_alt":null,"mapcolor7":4,"mapcolor8":3,"mapcolor9":3,"mapcolor13":2,"pop_est":10486339,"gdp_md_est":81710,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"TN","iso_a3":"TUN","iso_n3":"788","un_a3":"788","wb_a2":"TN","wb_a3":"TUN","woe_id":-99,"adm0_a3_is":"TUN","adm0_a3_us":"TUN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Northern Africa","region_wb":"Middle East & North Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TUN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[9.482139926805274,30.307556057246188],[9.055602654668148,32.10269196220129],[8.439102817426118,32.50628489840082],[8.430472853233368,32.74833730725595],[7.612641635782182,33.34411489514896],[7.524481642292244,34.09737641045146],[8.140981479534304,34.65514598239379],[8.376367628623768,35.47987600355594],[8.217824334352315,36.433176988260286],[8.420964389691676,36.94642731378316],[9.509993523810607,37.349994411766545],[10.210002475636317,37.230001735984814],[10.18065026209453,36.724037787415085],[11.028867221733348,37.09210317641396],[11.100025668999251,36.899996039368915],[10.600004510143094,36.410000108377375],[10.593286573945136,35.94744436293281],[10.939518670300687,35.698984076473494],[10.807847120821009,34.83350718844919],[10.149592726287125,34.3307730168977],[10.339658644256616,33.78574168551532],[10.856836378633687,33.76874013929128],[11.108500603895122,33.293342800422195],[11.48878746913101,33.13699575452314],[11.432253452203696,32.368903103152874],[10.944789666394456,32.081814683555365],[10.636901482799487,31.761420803345754],[9.950225050505082,31.376069647745254],[10.056575148161755,30.9618313664936],[9.970017124072854,30.539324856075243],[9.482139926805274,30.307556057246188]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"United Republic of Tanzania","sov_a3":"TZA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"United Republic of Tanzania","adm0_a3":"TZA","geou_dif":0,"geounit":"Tanzania","gu_a3":"TZA","su_dif":0,"subunit":"Tanzania","su_a3":"TZA","brk_diff":0,"name":"Tanzania","name_long":"Tanzania","brk_a3":"TZA","brk_name":"Tanzania","brk_group":null,"abbrev":"Tanz.","postal":"TZ","formal_en":"United Republic of Tanzania","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Tanzania","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":2,"mapcolor13":2,"pop_est":41048532,"gdp_md_est":54250,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"TZ","iso_a3":"TZA","iso_n3":"834","un_a3":"834","wb_a2":"TZ","wb_a3":"TZA","woe_id":-99,"adm0_a3_is":"TZA","adm0_a3_us":"TZA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"TZA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[33.9037111971046,-0.95],[34.07262,-1.05982],[37.69869,-3.09699],[37.7669,-3.67712],[39.20222,-4.67677],[38.74054,-5.90895],[38.79977,-6.47566],[39.44,-6.839999999999861],[39.470000000000134,-7.1],[39.19469,-7.7039],[39.25203,-8.00781],[39.18652,-8.48551],[39.53574,-9.112369999999883],[39.9496,-10.0984],[40.31659,-10.317099999999868],[39.521,-10.89688],[38.42755659358778,-11.285202325081627],[37.82764,-11.26879],[37.47129,-11.56876],[36.77515099462289,-11.594537448780784],[36.514081658684404,-11.720938002166747],[35.31239790216915,-11.439146416879169],[34.559989047999466,-11.520020033415847],[34.28,-10.16],[33.940837724096525,-9.693673841980285],[33.73972,-9.41715],[32.75937544122138,-9.230599053589003],[32.19186486179194,-8.930358981973257],[31.556348097466635,-8.762048841998647],[31.15775133695007,-8.594578747317314],[30.74,-8.34],[30.2,-7.08],[29.62,-6.52],[29.419992710088305,-5.939998874539299],[29.51998660657307,-5.419978936386258],[29.33999759290037,-4.499983412294114],[29.753512404099865,-4.452389418153302],[30.11632,-4.09012],[30.50554,-3.56858],[30.75224,-3.35931],[30.74301,-3.03431],[30.52766,-2.80762],[30.46967,-2.41383],[30.758308953583136,-2.287250257988376],[30.81613488131785,-1.698914076345375],[30.4191048520193,-1.134659112150416],[30.769860000000108,-1.01455],[31.86617,-1.02736],[33.9037111971046,-0.95]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Uganda","sov_a3":"UGA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Uganda","adm0_a3":"UGA","geou_dif":0,"geounit":"Uganda","gu_a3":"UGA","su_dif":0,"subunit":"Uganda","su_a3":"UGA","brk_diff":0,"name":"Uganda","name_long":"Uganda","brk_a3":"UGA","brk_name":"Uganda","brk_group":null,"abbrev":"Uga.","postal":"UG","formal_en":"Republic of Uganda","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Uganda","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":6,"mapcolor13":4,"pop_est":32369558,"gdp_md_est":39380,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"UG","iso_a3":"UGA","iso_n3":"800","un_a3":"800","wb_a2":"UG","wb_a3":"UGA","woe_id":-99,"adm0_a3_is":"UGA","adm0_a3_us":"UGA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"UGA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[31.86617,-1.02736],[30.769860000000108,-1.01455],[30.4191048520193,-1.134659112150416],[29.821518588996124,-1.443322442229771],[29.579466180141022,-1.341313164885605],[29.58783776217217,-0.587405694179381],[29.8195,-0.2053],[29.875778842902434,0.597379868976361],[30.08615359876279,1.062312730306417],[30.46850752129029,1.583805446779706],[30.852670118948136,1.849396470543752],[31.17414920423596,2.204465236821306],[30.77332,2.339890000000139],[30.83385,3.50917],[31.24556,3.7819],[31.88145,3.55827],[32.68642,3.79232],[33.3900000000001,3.79],[34.005,4.249884947362147],[34.47913,3.5556],[34.59607,3.053740000000118],[35.03599,1.90584],[34.6721,1.17694],[34.18,0.515],[33.893568969666994,0.109813537861839],[33.9037111971046,-0.95],[31.86617,-1.02736]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"South Africa","sov_a3":"ZAF","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"South Africa","adm0_a3":"ZAF","geou_dif":0,"geounit":"South Africa","gu_a3":"ZAF","su_dif":0,"subunit":"South Africa","su_a3":"ZAF","brk_diff":0,"name":"South Africa","name_long":"South Africa","brk_a3":"ZAF","brk_name":"South Africa","brk_group":null,"abbrev":"S.Af.","postal":"ZA","formal_en":"Republic of South Africa","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"South Africa","name_alt":null,"mapcolor7":2,"mapcolor8":3,"mapcolor9":4,"mapcolor13":2,"pop_est":49052489,"gdp_md_est":491000,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"ZA","iso_a3":"ZAF","iso_n3":"710","un_a3":"710","wb_a2":"ZA","wb_a3":"ZAF","woe_id":-99,"adm0_a3_is":"ZAF","adm0_a3_us":"ZAF","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Southern Africa","region_wb":"Sub-Saharan Africa","name_len":12,"long_len":12,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"ZAF.geojson"},"geometry":{"type":"Polygon","coordinates":[[[31.521001417778876,-29.257386976846252],[31.325561150851,-29.401977634398914],[30.901762729625343,-29.90995696382804],[30.622813348113823,-30.42377573010613],[30.05571618014278,-31.140269463832958],[28.925552605919535,-32.17204111097249],[28.2197558936771,-32.771952813448856],[27.464608188595975,-33.2269637997788],[26.419452345492825,-33.61495045342619],[25.90966434093349,-33.6670402971764],[25.780628289500697,-33.944646091448334],[25.172861769315972,-33.796851495093584],[24.677853224392123,-33.98717579522455],[23.594043409934642,-33.794474379208154],[22.988188917744733,-33.91643075941698],[22.574157342222236,-33.864082533505304],[21.542799106541025,-34.258838799782936],[20.689052768647002,-34.417175388325234],[20.071261020597632,-34.79513681410799],[19.61640506356457,-34.81916635512371],[19.193278435958717,-34.46259897230979],[18.85531456876987,-34.444305515278465],[18.42464318204938,-33.99787281670896],[18.377410922934615,-34.13652068454807],[18.244499139079917,-33.86775156019802],[18.250080193767445,-33.28143075941444],[17.92519046394844,-32.61129078545343],[18.247909783611192,-32.42913136162456],[18.22176150887148,-31.66163298922567],[17.56691775886887,-30.725721123987547],[17.064416131262703,-29.87864104585916],[17.062917514726223,-29.875953871379984],[16.344976840895242,-28.576705010697697],[16.824017368240902,-28.082161553664466],[17.218928663815404,-28.35594329194681],[17.387497185951503,-28.78351409272978],[17.83615197110953,-28.85637786226132],[18.464899122804752,-29.04546192801728],[19.002127312911085,-28.972443129188864],[19.894734327888614,-28.461104831660776],[19.895767856534434,-24.767790215760588],[20.165725538827186,-24.917961928000768],[20.758609246511835,-25.86813648855145],[20.66647016773544,-26.477453301704923],[20.88960900237174,-26.828542982695915],[21.60589603036939,-26.726533705351756],[22.105968865657868,-26.280256036079138],[22.57953169118059,-25.979447523708146],[22.8242712745149,-25.500458672794768],[23.312096795350186,-25.26868987396572],[23.73356977712271,-25.390129489851613],[24.211266717228792,-25.670215752873574],[25.025170525825786,-25.7196700985769],[25.66466637543772,-25.486816094669713],[25.76584882986521,-25.174845472923675],[25.94165205252216,-24.69637338633322],[26.4857532081233,-24.616326592713104],[26.786406691197413,-24.240690606383485],[27.119409620886245,-23.574323011979775],[28.01723595552525,-22.827753594659075],[29.43218834810904,-22.091312758067588],[29.839036899542972,-22.102216485281176],[30.322883335091774,-22.27161183033393],[30.65986535006709,-22.151567478119915],[31.191409132621285,-22.2515096981724],[31.670397983534652,-23.658969008073864],[31.93058882012425,-24.369416599222536],[31.75240848158188,-25.484283949487413],[31.837777947728064,-25.84333180105135],[31.333157586397906,-25.66019052500895],[31.04407962415715,-25.731452325139443],[30.949666782359913,-26.022649021104147],[30.676608514129637,-26.398078301704608],[30.68596194837448,-26.74384531016953],[31.282773064913325,-27.285879408478998],[31.868060337051077,-27.177927341421277],[32.07166548028107,-26.73382008230491],[32.830120477028885,-26.742191664336197],[32.580264926897684,-27.470157566031816],[32.46213260267845,-28.301011244420557],[32.20338870619304,-28.752404880490072],[31.521001417778876,-29.257386976846252]],[[28.97826256685724,-28.955596612261715],[28.541700066855498,-28.64750172293757],[28.07433841320778,-28.851468601193588],[27.532511020627478,-29.24271087007536],[26.999261915807637,-29.875953871379984],[27.749397006956485,-30.64510588961222],[28.107204624145425,-30.54573211031495],[28.29106937023991,-30.2262167294543],[28.84839969250774,-30.070050551068253],[29.018415154748023,-29.74376555757737],[29.325166456832587,-29.257386976846252],[28.97826256685724,-28.955596612261715]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Zimbabwe","sov_a3":"ZWE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Zimbabwe","adm0_a3":"ZWE","geou_dif":0,"geounit":"Zimbabwe","gu_a3":"ZWE","su_dif":0,"subunit":"Zimbabwe","su_a3":"ZWE","brk_diff":0,"name":"Zimbabwe","name_long":"Zimbabwe","brk_a3":"ZWE","brk_name":"Zimbabwe","brk_group":null,"abbrev":"Zimb.","postal":"ZW","formal_en":"Republic of Zimbabwe","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Zimbabwe","name_alt":null,"mapcolor7":1,"mapcolor8":5,"mapcolor9":3,"mapcolor13":9,"pop_est":12619600,"gdp_md_est":9323,"pop_year":0,"lastcensus":2002,"gdp_year":0,"economy":"5. Emerging region: G20","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"ZW","iso_a3":"ZWE","iso_n3":"716","un_a3":"716","wb_a2":"ZW","wb_a3":"ZWE","woe_id":-99,"adm0_a3_is":"ZWE","adm0_a3_us":"ZWE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"ZWE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[31.191409132621285,-22.2515096981724],[30.65986535006709,-22.151567478119915],[30.322883335091774,-22.27161183033393],[29.839036899542972,-22.102216485281176],[29.43218834810904,-22.091312758067588],[28.794656202924212,-21.63945403410745],[28.021370070108617,-21.485975030200585],[27.72722781750326,-20.851801853114715],[27.724747348753255,-20.499058526290387],[27.296504754350508,-20.391519870691],[26.164790887158485,-19.29308562589494],[25.85039147309473,-18.714412937090536],[25.649163445750162,-18.53602589281899],[25.264225701608012,-17.736539808831417],[26.381935255648926,-17.8460421688579],[26.70677330903564,-17.961228936436484],[27.04442711763073,-17.938026218337434],[27.598243442502756,-17.290830580314008],[28.467906121542683,-16.468400160388846],[28.825868768028496,-16.389748630440614],[28.947463413211263,-16.04305144619444],[29.516834344203147,-15.644677829656388],[30.274255812305107,-15.507786960515212],[30.338954705534544,-15.880839125230244],[31.173063999157677,-15.860943698797872],[31.636498243951195,-16.071990248277885],[31.8520406430406,-16.319417006091378],[32.32823896661022,-16.392074069893752],[32.847638787575846,-16.713398125884616],[32.84986087416439,-17.97905730557718],[32.65488569512715,-18.672089939043495],[32.61199425632489,-19.419382826416275],[32.772707960752626,-19.715592136313298],[32.65974327976258,-20.304290052982317],[32.50869306817344,-20.395292250248307],[32.244988234188014,-21.116488539313693],[31.191409132621285,-22.2515096981724]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Afghanistan","sov_a3":"AFG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Afghanistan","adm0_a3":"AFG","geou_dif":0,"geounit":"Afghanistan","gu_a3":"AFG","su_dif":0,"subunit":"Afghanistan","su_a3":"AFG","brk_diff":0,"name":"Afghanistan","name_long":"Afghanistan","brk_a3":"AFG","brk_name":"Afghanistan","brk_group":null,"abbrev":"Afg.","postal":"AF","formal_en":"Islamic State of Afghanistan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Afghanistan","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":8,"mapcolor13":7,"pop_est":28400000,"gdp_md_est":22270,"pop_year":-99,"lastcensus":1979,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"AF","iso_a3":"AFG","iso_n3":"004","un_a3":"004","wb_a2":"AF","wb_a3":"AFG","woe_id":-99,"adm0_a3_is":"AFG","adm0_a3_us":"AFG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":11,"long_len":11,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"AFG.geojson"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[62.230651483005886,35.270663967422294],[62.9846623065766,35.40404083916762],[63.19353844590035,35.857165635718914],[63.9828959491587,36.0079574651466],[64.5464791197339,36.31207326918427],[64.7461051776774,37.111817735333304],[65.58894778835784,37.30521678318564],[65.74563073106681,37.66116404881207],[66.21738488145932,37.39379018813392],[66.51860680528867,37.36278432875879],[67.07578209825962,37.35614390720929],[67.82999962755952,37.14499400486468],[68.13556237170138,37.0231151393043],[68.85944583524594,37.344335842430596],[69.19627282092438,37.15114350030743],[69.51878543485796,37.60899669041341],[70.11657840361033,37.58822276463209],[70.27057417184014,37.735164699854025],[70.3763041523093,38.13839590102752],[70.80682050973289,38.486281643216415],[71.34813113799026,38.258905341132156],[71.23940392444817,37.95326508234188],[71.54191775908478,37.905774441065645],[71.44869347523024,37.06564484308051],[71.8446382994506,36.73817129164692],[72.1930408059624,36.948287665345674],[72.63688968291729,37.047558091778356],[73.26005577992501,37.495256862939],[73.9486959166465,37.4215662704908],[74.98000247589542,37.419990139305895],[75.15802778514092,37.13303091078912],[74.57589277537298,37.02084137628346],[74.06755171091783,36.83617564548845],[72.92002485544447,36.72000702569632],[71.84629194528392,36.50994232842986],[71.26234826038575,36.074387518857804],[71.49876793812109,35.650563259416],[71.6130762063507,35.153203436822864],[71.11501875192162,34.733125718722235],[71.15677330921346,34.34891144463215],[70.8818030129884,33.98885590263851],[69.9305432473596,34.02012014417511],[70.3235941913716,33.35853261975839],[69.68714725126485,33.105498969041236],[69.26252200712256,32.5019440780883],[69.31776411324255,31.90141225842444],[68.92667687365767,31.620189113892064],[68.55693200060932,31.713310044882018],[67.79268924344478,31.58293040620963],[67.68339358914747,31.30315420178142],[66.93889122911847,31.304911200479353],[66.38145755398602,30.73889923758645],[66.34647260932442,29.887943427036177],[65.0468620136161,29.472180691031905],[64.35041873561852,29.560030625928093],[64.14800215033125,29.340819200145972],[63.55026085801117,29.468330796826162],[62.54985680527278,29.31857249604431],[60.874248488208785,29.829238999952604],[61.781221551363444,30.735850328081234],[61.699314406180825,31.37950613049267],[60.94194461451113,31.548074652628753],[60.863654819588966,32.18291962333443],[60.536077915290775,32.98126882581157],[60.963700392506006,33.52883230237625],[60.52842980331158,33.676446031218006],[60.80319339380745,34.40410187431986],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"United Arab Emirates","sov_a3":"ARE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"United Arab Emirates","adm0_a3":"ARE","geou_dif":0,"geounit":"United Arab Emirates","gu_a3":"ARE","su_dif":0,"subunit":"United Arab Emirates","su_a3":"ARE","brk_diff":0,"name":"United Arab Emirates","name_long":"United Arab Emirates","brk_a3":"ARE","brk_name":"United Arab Emirates","brk_group":null,"abbrev":"U.A.E.","postal":"AE","formal_en":"United Arab Emirates","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"United Arab Emirates","name_alt":null,"mapcolor7":2,"mapcolor8":1,"mapcolor9":3,"mapcolor13":3,"pop_est":4798491,"gdp_md_est":184300,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"AE","iso_a3":"ARE","iso_n3":"784","un_a3":"784","wb_a2":"AE","wb_a3":"ARE","woe_id":-99,"adm0_a3_is":"ARE","adm0_a3_us":"ARE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":20,"long_len":20,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"ARE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[51.57951867046327,24.245497137951105],[51.757440626844186,24.29407298430547],[51.794389275932865,24.019826158132506],[52.57708051942561,24.177439276622707],[53.404006788960146,24.15131684009917],[54.00800092958758,24.121757920828212],[54.69302371604863,24.79789236093509],[55.43902469261414,25.43914520924494],[56.07082075381456,26.055464178973978],[56.261041701080956,25.71460643157677],[56.396847365144005,24.924732163995486],[55.88623253766801,24.920830593357444],[55.804118686756226,24.269604193615265],[55.981213820220454,24.130542914317825],[55.52863162620823,23.933604030853502],[55.525841098864475,23.524869289640932],[55.234489373602884,23.11099274341532],[55.20834109886319,22.708329982997046],[55.0068030129249,22.496947536707136],[52.000733270074335,23.00115448657894],[51.61770755392698,24.014219265228828],[51.57951867046327,24.245497137951105]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Armenia","sov_a3":"ARM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Armenia","adm0_a3":"ARM","geou_dif":0,"geounit":"Armenia","gu_a3":"ARM","su_dif":0,"subunit":"Armenia","su_a3":"ARM","brk_diff":0,"name":"Armenia","name_long":"Armenia","brk_a3":"ARM","brk_name":"Armenia","brk_group":null,"abbrev":"Arm.","postal":"ARM","formal_en":"Republic of Armenia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Armenia","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":2,"mapcolor13":10,"pop_est":2967004,"gdp_md_est":18770,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"AM","iso_a3":"ARM","iso_n3":"051","un_a3":"051","wb_a2":"AM","wb_a3":"ARM","woe_id":-99,"adm0_a3_is":"ARM","adm0_a3_us":"ARM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ARM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[43.582745802592726,41.09214325618257],[44.97248009621808,41.248128567055595],[45.17949588397934,40.98535390885141],[45.56035118997045,40.812289537105926],[45.35917483905817,40.56150381119346],[45.89190717955509,40.21847565364],[45.61001224140293,39.89999380142518],[46.034534132680676,39.628020738273065],[46.48349897643246,39.464154771475535],[46.50571984231797,38.770605373686294],[46.14362308124881,38.74120148371222],[45.73537926614301,39.31971914321974],[45.73997846861698,39.47399913182713],[45.298144972521456,39.471751207022436],[45.00198733905674,39.740003567049555],[44.79398969908195,39.71300263117705],[44.4000085792887,40.00500031184228],[43.65643639504094,40.253563951166186],[43.75265791196841,40.74020091405876],[43.582745802592726,41.09214325618257]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Azerbaijan","sov_a3":"AZE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Azerbaijan","adm0_a3":"AZE","geou_dif":0,"geounit":"Azerbaijan","gu_a3":"AZE","su_dif":0,"subunit":"Azerbaijan","su_a3":"AZE","brk_diff":0,"name":"Azerbaijan","name_long":"Azerbaijan","brk_a3":"AZE","brk_name":"Azerbaijan","brk_group":null,"abbrev":"Aze.","postal":"AZ","formal_en":"Republic of Azerbaijan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Azerbaijan","name_alt":null,"mapcolor7":1,"mapcolor8":6,"mapcolor9":5,"mapcolor13":8,"pop_est":8238672,"gdp_md_est":77610,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"AZ","iso_a3":"AZE","iso_n3":"031","un_a3":"031","wb_a2":"AZ","wb_a3":"AZE","woe_id":-99,"adm0_a3_is":"AZE","adm0_a3_us":"AZE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"AZE.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[45.0019873390568,39.7400035670496],[45.29814497252144,39.471751207022436],[45.739978468617004,39.473999131827156],[45.73537926614309,39.3197191432198],[46.14362308124881,38.74120148371222],[45.457721795438744,38.874139105783115],[44.95268802265028,39.33576467544643],[44.793989699082005,39.713002631177034],[45.0019873390568,39.7400035670496]]],[[[47.373315464066216,41.219732367511256],[47.81566572448472,41.151416124021345],[47.98728315612604,41.40581920019423],[48.58435265482629,41.808869533854676],[49.11026370626067,41.282286688800525],[49.6189148293096,40.57292430272997],[50.0848295428531,40.52615713150578],[50.39282107931271,40.256561184239104],[49.5692021014448,40.17610097916071],[49.39525923035043,39.39948171646225],[49.223228387250714,39.04921885838792],[48.85653242370759,38.81548635513178],[48.88324913920255,38.32024526626264],[48.634375441284845,38.27037750910094],[48.010744256386516,38.794014797514535],[48.355529412637935,39.28876496027689],[48.06009524922527,39.582235419262446],[47.685079380083124,39.50836395930119],[46.50571984231797,38.770605373686266],[46.48349897643246,39.464154771475535],[46.034534132680704,39.62802073827305],[45.61001224140293,39.89999380142518],[45.89190717955515,40.218475653639985],[45.35917483905817,40.56150381119349],[45.560351189970476,40.81228953710595],[45.1794958839794,40.98535390885143],[44.972480096218156,41.24812856705562],[45.21742638528164,41.41145193131405],[45.962600538930445,41.1238725856098],[46.501637404166985,41.06444468847411],[46.637908156120574,41.181672675128226],[46.14543175637899,41.72280243587264],[46.404950799348825,41.86067515722735],[46.68607059101666,41.827137152669906],[47.373315464066216,41.219732367511256]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Bangladesh","sov_a3":"BGD","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Bangladesh","adm0_a3":"BGD","geou_dif":0,"geounit":"Bangladesh","gu_a3":"BGD","su_dif":0,"subunit":"Bangladesh","su_a3":"BGD","brk_diff":0,"name":"Bangladesh","name_long":"Bangladesh","brk_a3":"BGD","brk_name":"Bangladesh","brk_group":null,"abbrev":"Bang.","postal":"BD","formal_en":"People\'s Republic of Bangladesh","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bangladesh","name_alt":null,"mapcolor7":3,"mapcolor8":4,"mapcolor9":7,"mapcolor13":7,"pop_est":156050883,"gdp_md_est":224000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"BD","iso_a3":"BGD","iso_n3":"050","un_a3":"050","wb_a2":"BD","wb_a3":"BGD","woe_id":-99,"adm0_a3_is":"BGD","adm0_a3_us":"BGD","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":10,"long_len":10,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"BGD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[92.67272098182556,22.041238918541254],[92.65225711463799,21.324047552978485],[92.30323449093868,21.47548533780982],[92.36855350135562,20.670883287025347],[92.08288618364612,21.19219513598577],[92.02521528520839,21.701569729086767],[91.83489098507744,22.18293569588556],[91.41708702999766,22.76501902922122],[90.49600630082728,22.80501658781513],[90.58695682166098,22.392793687422866],[90.27297081905554,21.83636770272011],[89.84746707556428,22.039146023033425],[89.70204959509493,21.857115790285306],[89.41886274613549,21.9661789006373],[89.03196129756623,22.055708319582976],[88.87631188350309,22.879146429937826],[88.52976972855377,23.631141872649163],[88.69994022009092,24.23371491138856],[88.08442223506242,24.501657212821925],[88.30637251175602,24.866079413344206],[88.93155398962308,25.238692328384776],[88.2097892598025,25.76806570078271],[88.56304935094977,26.44652558034272],[89.35509402868729,26.014407253518073],[89.83248091019962,25.96508209889548],[89.92069258012185,25.26974986419218],[90.8722107279121,25.132600612889547],[91.79959598182207,25.147431748957317],[92.37620161333481,24.976692816664965],[91.91509280799443,24.13041372323711],[91.46772993364367,24.072639471934792],[91.15896325069971,23.50352692310439],[91.70647505083211,22.985263983649183],[91.86992760617132,23.624346421802784],[92.14603478390681,23.627498684172593],[92.67272098182556,22.041238918541254]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Zambia","sov_a3":"ZMB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Zambia","adm0_a3":"ZMB","geou_dif":0,"geounit":"Zambia","gu_a3":"ZMB","su_dif":0,"subunit":"Zambia","su_a3":"ZMB","brk_diff":0,"name":"Zambia","name_long":"Zambia","brk_a3":"ZMB","brk_name":"Zambia","brk_group":null,"abbrev":"Zambia","postal":"ZM","formal_en":"Republic of Zambia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Zambia","name_alt":null,"mapcolor7":5,"mapcolor8":8,"mapcolor9":5,"mapcolor13":13,"pop_est":11862740,"gdp_md_est":17500,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"ZM","iso_a3":"ZMB","iso_n3":"894","un_a3":"894","wb_a2":"ZM","wb_a3":"ZMB","woe_id":-99,"adm0_a3_is":"ZMB","adm0_a3_us":"ZMB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Africa","region_un":"Africa","subregion":"Eastern Africa","region_wb":"Sub-Saharan Africa","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"ZMB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[32.75937544122132,-9.230599053589058],[33.2313879737753,-9.6767216935648],[33.48568769708359,-10.525558770391115],[33.315310499817286,-10.796549981329697],[33.11428917820191,-11.607198174692314],[33.306422153463075,-12.435778090060218],[32.991764357237884,-12.783870537978272],[32.68816531752313,-13.712857761289275],[33.214024692525214,-13.971860039936153],[30.17948123548183,-14.796099134991527],[30.274255812305107,-15.507786960515212],[29.516834344203147,-15.644677829656388],[28.947463413211263,-16.04305144619444],[28.825868768028496,-16.389748630440614],[28.467906121542683,-16.468400160388846],[27.598243442502756,-17.290830580314008],[27.04442711763073,-17.938026218337434],[26.70677330903564,-17.961228936436484],[26.381935255648926,-17.8460421688579],[25.264225701608012,-17.736539808831417],[25.08444339366457,-17.661815687737374],[25.07695031098226,-17.57882333747662],[24.682349074001507,-17.353410739819473],[24.033861525170778,-17.295843194246324],[23.215048455506064,-17.52311614346598],[22.56247846852426,-16.898451429921813],[21.887842644953874,-16.08031015387688],[21.933886346125917,-12.898437188369359],[24.016136508894675,-12.911046237848574],[23.930922072045377,-12.565847670138854],[24.079905226342845,-12.191296888887365],[23.904153680118185,-11.722281589406322],[24.017893507592586,-11.23729827234709],[23.912215203555718,-10.926826267137514],[24.25715538910399,-10.951992689663657],[24.31451622894795,-11.26282642989927],[24.78316979340295,-11.238693536018964],[25.418118116973204,-11.330935967659961],[25.752309604604733,-11.784965101776358],[26.553087599399618,-11.924439792532127],[27.164419793412463,-11.608748467661075],[27.38879886242378,-12.132747491100666],[28.155108676879987,-12.272480564017897],[28.523561639121027,-12.698604424696683],[28.934285922976837,-13.248958428605135],[29.69961388521949,-13.257226657771831],[29.61600141777123,-12.178894545137311],[29.34154788586909,-12.360743910372413],[28.642417433392353,-11.971568698782315],[28.372253045370428,-11.793646742401393],[28.49606977714177,-10.789883721564044],[28.67368167492893,-9.605924981324932],[28.449871046672826,-9.164918308146085],[28.7348665707625,-8.526559340044578],[29.002912225060467,-8.407031752153472],[30.346086053190813,-8.238256524288218],[30.740015496551788,-8.340007419470915],[31.15775133695005,-8.594578747317366],[31.556348097466497,-8.762048841998642],[32.19186486179197,-8.930358981973278],[32.75937544122132,-9.230599053589058]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Brunei","sov_a3":"BRN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Brunei","adm0_a3":"BRN","geou_dif":0,"geounit":"Brunei","gu_a3":"BRN","su_dif":0,"subunit":"Brunei","su_a3":"BRN","brk_diff":0,"name":"Brunei","name_long":"Brunei Darussalam","brk_a3":"BRN","brk_name":"Brunei","brk_group":null,"abbrev":"Brunei","postal":"BN","formal_en":"Negara Brunei Darussalam","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Brunei","name_alt":null,"mapcolor7":4,"mapcolor8":6,"mapcolor9":6,"mapcolor13":12,"pop_est":388190,"gdp_md_est":20250,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"BN","iso_a3":"BRN","iso_n3":"096","un_a3":"096","wb_a2":"BN","wb_a3":"BRN","woe_id":-99,"adm0_a3_is":"BRN","adm0_a3_us":"BRN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":6,"long_len":17,"abbrev_len":6,"tiny":2,"homepart":1,"filename":"BRN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[114.20401655482837,4.525873928236805],[114.59996137904872,4.900011298029966],[115.45071048386981,5.447729803891534],[115.4057003113436,4.955227565933839],[115.34746097215067,4.316636053887009],[114.8695573263154,4.348313706881925],[114.65959598191353,4.007636826997754],[114.20401655482837,4.525873928236805]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Bhutan","sov_a3":"BTN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Bhutan","adm0_a3":"BTN","geou_dif":0,"geounit":"Bhutan","gu_a3":"BTN","su_dif":0,"subunit":"Bhutan","su_a3":"BTN","brk_diff":0,"name":"Bhutan","name_long":"Bhutan","brk_a3":"BTN","brk_name":"Bhutan","brk_group":null,"abbrev":"Bhutan","postal":"BT","formal_en":"Kingdom of Bhutan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bhutan","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":1,"mapcolor13":8,"pop_est":691141,"gdp_md_est":3524,"pop_year":-99,"lastcensus":2005,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BT","iso_a3":"BTN","iso_n3":"064","un_a3":"064","wb_a2":"BT","wb_a3":"BTN","woe_id":-99,"adm0_a3_is":"BTN","adm0_a3_us":"BTN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"BTN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[91.69665652869668,27.77174184825166],[92.10371178585973,27.452614040633208],[92.03348351437509,26.83831045176356],[91.21751264848643,26.808648179628022],[90.37327477413407,26.87572418874288],[89.74452762243884,26.719402981059957],[88.83564253128938,27.098966376243762],[88.81424848832054,27.29931590423936],[89.47581017452111,28.042758897406397],[90.01582889197118,28.296438503527217],[90.7305139505678,28.064953925075756],[91.25885379431992,28.040614325466294],[91.69665652869668,27.77174184825166]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"China","sov_a3":"CH1","adm0_dif":1,"level":2,"type":"Country","admin":"China","adm0_a3":"CHN","geou_dif":0,"geounit":"China","gu_a3":"CHN","su_dif":0,"subunit":"China","su_a3":"CHN","brk_diff":0,"name":"China","name_long":"China","brk_a3":"CHN","brk_name":"China","brk_group":null,"abbrev":"China","postal":"CN","formal_en":"People\'s Republic of China","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"China","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":4,"mapcolor13":3,"pop_est":1338612970,"gdp_md_est":7973000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"3. Emerging region: BRIC","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"CN","iso_a3":"CHN","iso_n3":"156","un_a3":"156","wb_a2":"CN","wb_a3":"CHN","woe_id":-99,"adm0_a3_is":"CHN","adm0_a3_us":"CHN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"CHN.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[110.33918786015154,18.678395087147607],[109.4752095886637,18.197700913968614],[108.65520796105616,18.5076819930714],[108.62621748254045,19.367887885001977],[109.11905561730802,19.821038519769385],[110.21159874882285,20.101253973872076],[110.78655073450223,20.07753449145008],[111.01005130416465,19.695929877190736],[110.57064660038682,19.255879218009312],[110.33918786015154,18.678395087147607]]],[[[127.6574072612624,49.76027049417294],[129.39781782442046,49.44060008401544],[130.5822933289824,48.72968740497612],[130.98728152885386,47.790132351261406],[132.50667199109952,47.78896963153488],[133.37359581922803,48.18344167743493],[135.02631147678673,48.47822988544391],[134.50081383681064,47.57843984637785],[134.11236209527263,47.21246735288673],[133.7696439963129,46.11692698829907],[133.09712690646646,45.14406647397217],[131.8834542176596,45.32116160743644],[131.0252120301561,44.96795319272157],[131.28855512911557,44.111519680348266],[131.14468794161488,42.92998973242695],[130.6338664084098,42.90301463477056],[130.64001590385246,42.39500946712528],[129.99426720593326,42.98538686784379],[129.5966687358795,42.42498179785459],[128.05221520397234,41.99428457291799],[128.20843305879075,41.46677155208254],[127.34378299368305,41.50315176041596],[126.86908328664988,41.81656932226616],[126.18204511932946,41.10733612727637],[125.07994184784062,40.569823716792456],[124.26562462778534,39.92849335383414],[122.86757042856104,39.63778758397626],[122.13138797413094,39.17045176854464],[121.05455447803288,38.89747101496291],[121.5859949077225,39.36085358332414],[121.37675703337267,39.750261338859524],[122.16859500538104,40.422442531896046],[121.64035851449356,40.94638987890332],[120.76862877816197,40.5933881699176],[119.63960208544907,39.89805593521421],[119.02346398323304,39.2523330755111],[118.04274865119793,39.20427399347969],[117.53270226447708,38.7376358098841],[118.0596985209897,38.06147553156105],[118.87814985562838,37.8973253443859],[118.91163618375353,37.44846385349874],[119.70280236214207,37.15638865818508],[120.82345747282366,37.87042776137798],[121.71125857959797,37.48112335870718],[122.35793745329848,37.45448415786069],[122.51999474496584,36.930614325501836],[121.10416385303303,36.65132904718044],[120.6370089051146,36.111439520811125],[119.6645618022461,35.609790554337735],[119.1512081238586,34.909859117160465],[120.22752485563375,34.36033193616862],[120.6203690939166,33.37672272392513],[121.22901411345023,32.46031871187719],[121.90814578663006,31.69217438407469],[121.89191938689035,30.949351508095102],[121.26425744027331,30.67626740164872],[121.50351932178475,30.142914943964257],[122.09211388558911,29.832520453403163],[121.93842817595308,29.018022365834806],[121.68443851123847,28.225512600206685],[121.12566124886645,28.135673122667185],[120.39547326058234,27.053206895449392],[119.58549686083958,25.740780544532612],[118.65687137255453,24.547390855400238],[117.28160647997086,23.624501451099718],[115.89073530483515,22.782873236578098],[114.76382734584624,22.66807404224167],[114.15254682826568,22.223760077396207],[113.80677981980075,22.54833974862143],[113.24107791550162,22.05136749927047],[111.84359215703248,21.550493679281512],[110.78546552942414,21.397143866455334],[110.44403934127169,20.341032619706397],[109.88986128137357,20.282457383703445],[109.62765506392466,21.008227037026728],[109.86448815311834,21.395050970947523],[108.52281294152444,21.71521230721183],[108.050180291783,21.552379869060104],[107.04342003787266,21.811898912029903],[106.56727339073537,22.218204860924743],[106.7254032735485,22.79426788989838],[105.81124718630521,22.976892401617903],[105.32920942588666,23.352063300056983],[104.4768583516645,22.81915009204692],[103.50451460166053,22.70375661873922],[102.70699222210018,22.708795070887703],[102.17043582561355,22.464753119389343],[101.65201785686158,22.31819875740956],[101.80311974488292,21.174366766845054],[101.27002566936002,21.20165192309517],[101.18000532430759,21.43657298429406],[101.15003299357826,21.84998444262902],[100.41653771362738,21.558839423096657],[99.98348921102158,21.74293671313646],[99.24089887898722,22.118314317304566],[99.53199222208744,22.949038804612595],[98.89874922078283,23.142722072842588],[98.6602624857558,24.063286037690006],[97.60471967976203,23.897404690033056],[97.72460900267916,25.083637193293043],[98.67183800658924,25.918702500913497],[98.71209394734458,26.74353587494025],[98.68269005737054,27.50881216075066],[98.24623091023338,27.74722138112918],[97.91198774616944,28.335945136014374],[97.32711388549004,28.26158274994634],[96.24883344928784,28.411030992134467],[96.58659061074755,28.83097951915437],[96.11767866413103,29.452802028922516],[95.40480228066465,29.031716620392164],[94.56599043170294,29.277438055939964],[93.41334760943268,28.640629380807237],[92.50311893104364,27.89687632904645],[91.6966565286967,27.771741848251622],[91.25885379431989,28.04061432546635],[90.73051395056783,28.064953925075738],[90.01582889197121,28.296438503527185],[89.47581017452116,28.042758897406372],[88.8142484883206,27.299315904239393],[88.73032596227856,28.08686473236756],[88.12044070836994,27.876541652939576],[86.95451704300065,27.97426178640353],[85.82331994013154,28.20357595469875],[85.01163821812307,28.642773952747376],[84.23457970575018,28.839893703724698],[83.89899295444675,29.32022614187764],[83.33711510613719,29.463731594352193],[82.32751264845089,30.115268052688208],[81.5258044778748,30.422716986608663],[81.11125613802928,30.18348094331341],[79.72136681510712,30.882714748654735],[78.73889448437401,31.51590607352705],[78.45844648632604,32.61816437431273],[79.17612877799556,32.483779812137755],[79.20889163606856,32.99439463961374],[78.81108646028574,33.506198025032404],[78.91226891471322,34.32193634697577],[77.83745079947462,35.49400950778781],[76.19284834178572,35.89840342868786],[75.89689741405019,36.66680613865188],[75.158027785141,37.13303091078916],[74.98000247589542,37.419990139305895],[74.82998579295216,37.99000702570146],[74.8648157083168,38.3788463404816],[74.2575142760227,38.60650686294349],[73.9288521666464,38.50581533462272],[73.67537926625485,39.43123688410557],[73.96001305531846,39.660008449861714],[73.82224368682833,39.89397349706314],[74.77686242055606,40.36642527929163],[75.46782799673073,40.56207225194868],[76.52636803579745,40.42794607193513],[76.90448449087712,41.06648590754966],[78.18719689322606,41.185315863604814],[78.54366092317528,41.58224254003871],[80.11943037305142,42.123940741538235],[80.25999026888533,42.34999929459909],[80.18015018099439,42.92006785742686],[80.86620649610123,43.180362046881015],[79.96610639844144,44.91751699480462],[81.9470707539181,45.31702749285316],[82.45892581576905,45.539649563166506],[83.18048383986054,47.33003123635075],[85.16429039911324,47.00095571551611],[85.7204838398707,47.45296946877309],[85.76823286330838,48.4557506373969],[86.59877648310336,48.54918162698061],[87.35997033076269,49.21498078062916],[87.75126427607668,49.29719798440547],[88.0138322285517,48.5994627956006],[88.85429772334678,48.069081732773014],[90.28082563676392,47.693549099307916],[90.97080936072499,46.888146063822944],[90.58576826371834,45.7197160914875],[90.94553958533433,45.28607330991025],[92.13389082231825,45.115075995456436],[93.48073367714133,44.975472113620015],[94.68892866412537,44.35233185482846],[95.30687544147153,44.24133087826547],[95.7624548685567,43.31944916439462],[96.34939578652782,42.72563528092866],[97.451757440178,42.74888967546008],[99.51581749878002,42.524691473961695],[100.8458655131083,42.663804429691425],[101.83304039917995,42.51487295182628],[103.31227827353482,41.90746816666763],[104.52228193564903,41.90834666601663],[104.96499393109346,41.59740957291635],[106.12931562706169,42.1343277044289],[107.744772576938,42.481515814781915],[109.24359581913146,42.51944631608416],[110.4121033061153,42.87123362891103],[111.12968224492023,43.40683401140018],[111.8295878438814,43.74311839453949],[111.66773725794323,44.07317576758771],[111.34837690637946,44.45744171811006],[111.87330610560028,45.10207937273512],[112.43606245325887,45.01164561622426],[113.46390669154422,44.80889313412711],[114.46033165899607,45.33981679949389],[115.98509647020013,45.72723501238602],[116.71786828009888,46.388202419615254],[117.42170128791425,46.67273285581421],[118.87432579963873,46.80541209572365],[119.66326989143877,46.69267995867895],[119.77282392789756,47.04805878355015],[118.86657433479498,47.74706004494621],[118.06414269416675,48.06673045510374],[117.29550744025747,47.6977090521074],[116.30895267137325,47.853410142602826],[115.74283735561575,47.72654450132629],[115.48528201707305,48.135382595403456],[116.19180219936761,49.13459809019906],[116.67880089728621,49.888531399121405],[117.87924441942639,49.51098338479696],[119.28846072802585,50.14288279886205],[119.27936567594239,50.582907619827296],[120.18204959521695,51.64356639261803],[120.738191359542,51.964115302124554],[120.725789015792,52.516226304730814],[120.1770886577169,52.75388621684121],[121.00308475147024,53.25140106873124],[122.24574791879289,53.43172597921369],[123.57150678924087,53.45880442973464],[125.06821129771045,53.161044826868846],[125.94634891164618,52.79279857035695],[126.56439904185699,51.7842554795327],[126.93915652883769,51.3538941514059],[127.28745568248493,50.73979726826545],[127.6574072612624,49.76027049417294]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Georgia","sov_a3":"GEO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Georgia","adm0_a3":"GEO","geou_dif":0,"geounit":"Georgia","gu_a3":"GEO","su_dif":0,"subunit":"Georgia","su_a3":"GEO","brk_diff":0,"name":"Georgia","name_long":"Georgia","brk_a3":"GEO","brk_name":"Georgia","brk_group":null,"abbrev":"Geo.","postal":"GE","formal_en":"Georgia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Georgia","name_alt":null,"mapcolor7":5,"mapcolor8":1,"mapcolor9":3,"mapcolor13":2,"pop_est":4615807,"gdp_md_est":21510,"pop_year":-99,"lastcensus":2002,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"GE","iso_a3":"GEO","iso_n3":"268","un_a3":"268","wb_a2":"GE","wb_a3":"GEO","woe_id":-99,"adm0_a3_is":"GEO","adm0_a3_us":"GEO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"GEO.geojson"},"geometry":{"type":"Polygon","coordinates":[[[41.55408410011065,41.53565623632757],[41.70317060727271,41.96294281673292],[41.45347008643839,42.64512339941794],[40.87546919125379,43.013628038091284],[40.32139448422032,43.128633938156845],[39.955008579270924,43.43499766699922],[40.07696495947977,43.55310415300231],[40.922184686045625,43.38215851498079],[42.39439456560882,43.22030792904263],[43.75601688006739,42.74082815202249],[43.931199985536836,42.55497386328477],[44.537622918481986,42.71199270280363],[45.47027916848572,42.50278066666998],[45.77641035338277,42.09244395605636],[46.404950799348825,41.860675157227305],[46.14543175637902,41.72280243587258],[46.63790815612058,41.181672675128226],[46.50163740416693,41.06444468847411],[45.96260053893039,41.123872585609774],[45.217426385281584,41.41145193131405],[44.97248009621808,41.248128567055595],[43.582745802592726,41.09214325618257],[42.61954878110449,41.58317271581994],[41.55408410011065,41.53565623632757]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Indonesia","sov_a3":"IDN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Indonesia","adm0_a3":"IDN","geou_dif":0,"geounit":"Indonesia","gu_a3":"IDN","su_dif":0,"subunit":"Indonesia","su_a3":"IDN","brk_diff":0,"name":"Indonesia","name_long":"Indonesia","brk_a3":"IDN","brk_name":"Indonesia","brk_group":null,"abbrev":"Indo.","postal":"INDO","formal_en":"Republic of Indonesia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Indonesia","name_alt":null,"mapcolor7":6,"mapcolor8":6,"mapcolor9":6,"mapcolor13":11,"pop_est":240271522,"gdp_md_est":914600,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"4. Emerging region: MIKT","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"ID","iso_a3":"IDN","iso_n3":"360","un_a3":"360","wb_a2":"ID","wb_a3":"IDN","woe_id":-99,"adm0_a3_is":"IDN","adm0_a3_us":"IDN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":9,"long_len":9,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"IDN.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[120.71560875863044,-10.239581394087864],[120.2950142762069,-10.258649997603525],[118.96780846565471,-9.557969252158031],[119.90030968636161,-9.361340427287516],[120.42575564990543,-9.665921319215798],[120.77550174365675,-9.969675388227456],[120.71560875863044,-10.239581394087864]]],[[[124.43595014861941,-10.140000909061442],[123.57998172413673,-10.359987481327963],[123.45998904835503,-10.239994805546175],[123.55000939340746,-9.90001555749798],[123.98000898650811,-9.290026950724695],[124.96868248911622,-8.892790215697048],[125.07001997284064,-9.089987481322837],[125.08852013560109,-9.393173109579322],[124.43595014861941,-10.140000909061442]]],[[[117.90001834520777,-8.095681247594925],[118.2606164897405,-8.362383314653329],[118.87845991422215,-8.28068287519983],[119.12650678922309,-8.705824883665073],[117.9704016459893,-8.906639499551261],[117.27773074754903,-9.040894870645559],[116.74014082241663,-9.03293670007264],[117.08373742072533,-8.457157891476541],[117.63202436734215,-8.449303073768192],[117.90001834520777,-8.095681247594925]]],[[[122.90353722543611,-8.094234307490737],[122.75698286345632,-8.64980763106064],[121.25449059457013,-8.933666273639943],[119.9243909038096,-8.810417982623875],[119.92092858284613,-8.444858900591072],[120.71509199430757,-8.236964613480865],[121.34166873584658,-8.536739597206022],[122.00736453663043,-8.460620212440162],[122.90353722543611,-8.094234307490737]]],[[[108.62347863162894,-6.777673841990676],[110.53922732955331,-6.877357679881683],[110.75957563684594,-6.465186455921752],[112.61481123255638,-6.946035658397591],[112.97876834518812,-7.59421314863458],[114.47893517462117,-7.776527601760279],[115.70552697150109,-8.370806573116866],[114.56451134649652,-8.751816908404834],[113.4647335144609,-8.348947442257426],[112.55967247930103,-8.376180922075164],[111.52206139531248,-8.302128594600957],[110.58614953007432,-8.122604668819022],[109.4276672709552,-7.740664157749761],[108.69365522668133,-7.641600437046221],[108.27776329959632,-7.766657403192581],[106.45410200401615,-7.354899590690947],[106.28062422081231,-6.924899997590202],[105.36548628135554,-6.85141611087117],[106.05164594932707,-5.8959188777945],[107.2650085795402,-5.954985039904059],[108.0720910990747,-6.345762220895239],[108.48684614464926,-6.421984958525768],[108.62347863162894,-6.777673841990676]]],[[[134.72462446506668,-6.214400730009287],[134.21013390516893,-6.895237725454706],[134.112775506731,-6.142467136259014],[134.2903357280858,-5.783057549669039],[134.49962527886788,-5.445042006047899],[134.72700158095213,-5.73758228925216],[134.72462446506668,-6.214400730009287]]],[[[127.24921512258892,-3.45906503663889],[126.87492272349888,-3.79098276124958],[126.18380211802733,-3.607376397316556],[125.98903364471929,-3.177273451351325],[127.00065148326499,-3.12931772218441],[127.24921512258892,-3.45906503663889]]],[[[130.4713440288518,-3.09376433676762],[130.8348360535928,-3.858472181822762],[129.99054650280814,-3.446300957862817],[129.15524865124243,-3.362636813982249],[128.59068362845366,-3.428679294451257],[127.89889122936236,-3.393435967628193],[128.1358793478528,-2.843650404474914],[129.37099775606092,-2.802154229344552],[130.4713440288518,-3.09376433676762]]],[[[134.1433679546478,-1.151867364103595],[134.42262739475305,-2.769184665542383],[135.4576029806947,-3.367752780779114],[136.2933142437188,-2.30704233155609],[137.44073774632753,-1.703513278819372],[138.3297274110448,-1.70268645590265],[139.18492068904297,-2.051295668143638],[139.92668419816042,-2.409051608900284],[141.00021040259188,-2.600151055515624],[141.01705691951904,-5.859021905138022],[141.0338517600139,-9.117892754760419],[140.14341515519257,-8.297167657100957],[139.12776655492812,-8.096042982620942],[138.88147667862498,-8.380935153846096],[137.61447391169284,-8.411682631059762],[138.0390991558352,-7.597882175327356],[138.6686214540148,-7.320224704623072],[138.40791385310237,-6.232849216337484],[137.92783979711086,-5.393365573756],[135.98925011611348,-4.546543877789048],[135.16459760959972,-4.462931410340772],[133.6628804871979,-3.538853448097527],[133.3677047059468,-4.024818617370315],[132.98395551974735,-4.112978610860281],[132.756940952689,-3.74628264731713],[132.75378869031923,-3.311787204607072],[131.9898043153162,-2.820551039240456],[133.0668445171435,-2.460417982598443],[133.78003095920351,-2.47984832114021],[133.69621178602614,-2.214541517753688],[132.23237348849423,-2.212526136894326],[131.8362219585447,-1.617161960459597],[130.94283979708283,-1.432522067880797],[130.51955814018007,-0.937720228686075],[131.86753787651364,-0.695461114101818],[132.3801164084168,-0.369537855636977],[133.98554813042844,-0.780210463060442],[134.1433679546478,-1.151867364103595]]],[[[125.24050052297159,1.419836127117605],[124.43703535369737,0.427881171058971],[123.68550499887672,0.235593166500877],[122.72308312387288,0.431136786293337],[121.0567248881891,0.381217352699451],[120.18308312386276,0.23724681233422],[120.04086958219548,-0.519657891444851],[120.93590538949073,-1.408905938323372],[121.4758207540762,-0.955962009285116],[123.34056481332848,-0.615672702643081],[123.2583992859845,-1.076213067228338],[122.82271528533161,-0.930950616055881],[122.38852990121539,-1.516858005381124],[121.50827355355548,-1.904482924002423],[122.4545723816843,-3.186058444840882],[122.27189619353257,-3.529500013852697],[123.17096276254657,-4.683693129091708],[123.16233279835379,-5.340603936385961],[122.62851525277871,-5.634591159694494],[122.23639448454806,-5.282933037948283],[122.71956912647707,-4.46417164471579],[121.73823367725439,-4.8513314754465],[121.48946333220127,-4.574552504091216],[121.61917117725388,-4.188477878438674],[120.89818159391771,-3.602105401222829],[120.97238895068877,-2.62764291749491],[120.30545291552991,-2.931603692235726],[120.39004723519176,-4.097579034037224],[120.43071658740539,-5.528241062037779],[119.79654341031952,-5.673400160345651],[119.36690555224496,-5.379878024927805],[119.65360639860013,-4.459417412944958],[119.49883548388597,-3.49441171632651],[119.078344354327,-3.487021986508765],[118.7677689962529,-2.801999200047689],[119.18097374885869,-2.147103773612798],[119.32339399625508,-1.353147067880471],[119.82599897672586,0.154254462073496],[120.03570193896637,0.566477362465804],[120.8857792501677,1.309222723796836],[121.666816847827,1.013943589681077],[122.92756676645185,0.875192368977466],[124.07752241424285,0.917101955566139],[125.06598921112183,1.643259182131558],[125.24050052297159,1.419836127117605]]],[[[128.68824873262074,1.132385972494106],[128.63595218314137,0.258485826006179],[128.12016971243617,0.356412665199286],[127.96803429576887,-0.252077325037533],[128.37999881399972,-0.780003757331286],[128.10001590384232,-0.899996433112975],[127.69647464407504,-0.266598402511505],[127.39949018769377,1.011721503092573],[127.60051150930907,1.810690822757181],[127.93237755748751,2.174596258956555],[128.00415612194084,1.628531398928331],[128.59455936087548,1.540810655112864],[128.68824873262074,1.132385972494106]]],[[[117.87562706916603,1.827640692548911],[118.99674726773819,0.902219143066048],[117.81185835171779,0.784241848143722],[117.47833865770608,0.102474676917026],[117.52164350796662,-0.803723239753211],[116.56004845587952,-1.487660821136231],[116.53379682827519,-2.483517347832901],[116.14808393764864,-4.012726332214015],[116.0008577820491,-3.657037448749008],[114.86480309454454,-4.106984144714417],[114.46865156459509,-3.495703627133821],[113.75567182826413,-3.43916961020652],[113.25699425664757,-3.118775729996855],[112.06812625534067,-3.478392022316072],[111.70329064336002,-2.994442233902632],[111.04824018762824,-3.049425957861189],[110.223846063276,-2.934032484553484],[110.07093550012436,-1.592874037282414],[109.57194786991406,-1.314906507984489],[109.09187381392253,-0.459506524257051],[108.95265750532816,0.415375474444346],[109.06913618371404,1.341933905437642],[109.66326012577375,2.006466986494985],[109.83022667850886,1.338135687664192],[110.51406090702713,0.773131415200993],[111.15913781132659,0.976478176269509],[111.79754845586044,0.904441229654651],[112.38025190638368,1.410120957846758],[112.8598091980522,1.497790025229946],[113.80584964401956,1.217548732911041],[114.6213554220175,1.430688177898887],[115.13403730678523,2.821481838386219],[115.51907840379201,3.169238389494396],[115.86551720587677,4.306559149590157],[117.01521447150637,4.306094061699469],[117.88203494677019,4.137551377779488],[117.31323245653354,3.234428208830579],[118.04832970588538,2.287690131027361],[117.87562706916603,1.827640692548911]]],[[[105.81765506390936,-5.852355645372413],[104.71038414919151,-5.873284600450646],[103.86821333213074,-5.037314955264975],[102.58426069540693,-4.220258884298204],[102.15617313030103,-3.614146009946765],[101.39911339722508,-2.799777113459172],[100.90250288290017,-2.05026213949786],[100.14198082886062,-0.650347588710957],[99.26373986206025,0.183141587724663],[98.97001102091333,1.042882391764536],[98.60135135294311,1.823506577965617],[97.6995976094499,2.453183905442117],[97.1769421732499,3.30879059489861],[96.42401655475734,3.868859768077911],[95.38087609251347,4.970782172053673],[95.29302615761733,5.479820868344817],[95.93686282754176,5.439513251157109],[97.4848820332771,5.246320909034011],[98.36916914265569,4.268370266126368],[99.14255862833582,3.590349636240916],[99.69399783732243,3.174328518075157],[100.64143354696168,2.099381211755798],[101.65801232300734,2.083697414555189],[102.49827111207324,1.398700466310217],[103.07684044801303,0.561361395668854],[103.83839603069835,0.104541734208667],[103.43764529827497,-0.711945896002845],[104.01078860882402,-1.059211521004229],[104.3699914896849,-1.084843031421016],[104.53949018760218,-1.782371514496716],[104.88789269411402,-2.340425306816655],[105.622111444117,-2.42884368246807],[106.10859337771271,-3.06177662517895],[105.85744591677414,-4.305524997579724],[105.81765506390936,-5.852355645372413]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"India","sov_a3":"IND","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"India","adm0_a3":"IND","geou_dif":0,"geounit":"India","gu_a3":"IND","su_dif":0,"subunit":"India","su_a3":"IND","brk_diff":0,"name":"India","name_long":"India","brk_a3":"IND","brk_name":"India","brk_group":null,"abbrev":"India","postal":"IND","formal_en":"Republic of India","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"India","name_alt":null,"mapcolor7":1,"mapcolor8":3,"mapcolor9":2,"mapcolor13":2,"pop_est":1166079220,"gdp_md_est":3297000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"3. Emerging region: BRIC","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"IN","iso_a3":"IND","iso_n3":"356","un_a3":"356","wb_a2":"IN","wb_a3":"IND","woe_id":-99,"adm0_a3_is":"IND","adm0_a3_us":"IND","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"IND.geojson"},"geometry":{"type":"Polygon","coordinates":[[[77.83745079947457,35.494009507787766],[78.91226891471322,34.32193634697579],[78.81108646028574,33.50619802503242],[79.20889163606857,32.994394639613716],[79.17612877799553,32.48377981213771],[78.45844648632601,32.61816437431273],[78.73889448437401,31.515906073527063],[79.7213668151071,30.882714748654728],[81.11125613802932,30.183480943313402],[80.4767212259174,29.72986522065534],[80.08842451367627,28.79447011974014],[81.05720258985203,28.416095282499043],[81.99998742058497,27.925479234319994],[83.30424889519955,27.36450572357556],[84.6750179381738,27.234901231387536],[85.25177859898338,26.72619843190634],[86.02439293817918,26.63098460540857],[87.22747195836628,26.397898057556077],[88.06023766474982,26.41461538340249],[88.17480431514092,26.81040517832595],[88.04313276566123,27.445818589786825],[88.12044070836987,27.876541652939594],[88.73032596227856,28.086864732367516],[88.81424848832054,27.29931590423936],[88.83564253128938,27.098966376243762],[89.74452762243884,26.719402981059957],[90.37327477413407,26.87572418874288],[91.21751264848643,26.808648179628022],[92.03348351437509,26.83831045176356],[92.10371178585973,27.452614040633208],[91.69665652869668,27.77174184825166],[92.50311893104364,27.89687632904645],[93.41334760943268,28.640629380807226],[94.56599043170294,29.277438055939985],[95.40480228066464,29.03171662039213],[96.11767866413103,29.452802028922466],[96.58659061074749,28.830979519154344],[96.24883344928779,28.41103099213444],[97.32711388549004,28.26158274994634],[97.40256147663612,27.88253611908544],[97.0519885599681,27.69905894623315],[97.1339990580153,27.083773505149964],[96.41936567585097,27.264589341739224],[95.12476769407496,26.5735720891323],[95.1551534362626,26.001307277932085],[94.60324913938538,25.162495428970402],[94.55265791217164,24.675238348890332],[94.10674197792505,23.85074087167348],[93.3251876159428,24.078556423432204],[93.28632693885928,23.043658352139005],[93.06029422401463,22.70311066333557],[93.16612755734836,22.278459580977103],[92.67272098182556,22.041238918541254],[92.14603478390681,23.627498684172593],[91.86992760617132,23.624346421802784],[91.70647505083211,22.985263983649183],[91.15896325069971,23.50352692310439],[91.46772993364367,24.072639471934792],[91.91509280799443,24.13041372323711],[92.37620161333481,24.976692816664965],[91.79959598182207,25.147431748957317],[90.8722107279121,25.132600612889547],[89.92069258012185,25.26974986419218],[89.83248091019962,25.96508209889548],[89.35509402868729,26.014407253518073],[88.56304935094977,26.44652558034272],[88.2097892598025,25.76806570078271],[88.93155398962308,25.238692328384776],[88.30637251175602,24.866079413344206],[88.08442223506242,24.501657212821925],[88.69994022009092,24.23371491138856],[88.52976972855377,23.631141872649163],[88.87631188350309,22.879146429937826],[89.03196129756623,22.055708319582976],[88.88876590368542,21.690588487224748],[88.20849734899521,21.703171698487807],[86.97570438024027,21.49556163175521],[87.03316857294887,20.743307806882413],[86.49935102737378,20.151638495356607],[85.0602657409097,19.4785788029711],[83.94100589390001,18.302009792549725],[83.18921715691785,17.67122142177898],[82.19279218946592,17.016636053937813],[82.19124189649719,16.556664130107848],[81.69271935417748,16.310219224507904],[80.79199913933014,15.951972357644491],[80.32489586784388,15.899184882058348],[80.02506920768644,15.136414903214147],[80.2332735533904,13.835770778859981],[80.28629357292186,13.006260687710833],[79.8625468281285,12.056215318240888],[79.85799930208682,10.35727509199711],[79.340511509116,10.30885427493962],[78.88534549348918,9.546135972527722],[79.18971967968828,9.216543687370148],[78.2779407083305,8.933046779816934],[77.94116539908435,8.252959092639742],[77.53989790233794,7.965534776232333],[76.59297895702167,8.89927623131419],[76.13006147655108,10.299630031775521],[75.74646731964849,11.308250637248307],[75.39610110870957,11.781245022015824],[74.86481570831681,12.741935736537897],[74.61671715688354,13.99258291264968],[74.44385949086723,14.617221787977696],[73.5341992532334,15.99065216721496],[73.11990929554943,17.928570054592498],[72.82090945830865,19.208233547436166],[72.8244751321368,20.419503282141534],[72.6305334817454,21.356009426351008],[71.17527347197395,20.757441311114235],[70.4704586119451,20.877330634031384],[69.16413008003883,22.0892980005727],[69.64492760608239,22.450774644454338],[69.34959679553435,22.84317963306269],[68.1766451353734,23.69196503345671],[68.84259931831878,24.35913361256094],[71.04324018746823,24.3565239527302],[70.84469933460284,25.21510203704352],[70.28287316272558,25.72222870533983],[70.16892662952202,26.491871649678842],[69.51439293811312,26.940965684511372],[70.61649620960193,27.989196275335868],[71.77766564320032,27.913180243434525],[72.8237516620847,28.961591701772054],[73.45063846221743,29.97641347911987],[74.42138024282026,30.979814764931177],[74.40592898956501,31.69263947196528],[75.25864179881322,32.2711054550405],[74.45155927927871,32.7648996038055],[74.10429365427734,33.44147329358685],[73.74994835805195,34.31769887952785],[74.24020267120497,34.74888703057125],[75.75706098826834,34.50492259372132],[76.87172163280403,34.65354401299274],[77.83745079947457,35.494009507787766]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Northern Cyprus","sov_a3":"CYN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Northern Cyprus","adm0_a3":"CYN","geou_dif":0,"geounit":"Northern Cyprus","gu_a3":"CYN","su_dif":0,"subunit":"Northern Cyprus","su_a3":"CYN","brk_diff":1,"name":"Northern Cyprus","name_long":"Northern Cyprus","brk_a3":"B20","brk_name":"N. Cyprus","brk_group":null,"abbrev":"N. Cy.","postal":"CN","formal_en":"Turkish Republic of Northern Cyprus","formal_fr":null,"note_adm0":"Self admin.","note_brk":"Self admin.; Claimed by Cyprus","name_sort":"Cyprus, Northern","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":4,"mapcolor13":8,"pop_est":265100,"gdp_md_est":3600,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"-99","iso_a3":"-99","iso_n3":"-99","un_a3":"-099","wb_a2":"-99","wb_a3":"-99","woe_id":-99,"adm0_a3_is":"CYP","adm0_a3_us":"CYP","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":9,"long_len":15,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"CYN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[32.73178022637745,35.14002594658844],[32.80247358575275,35.14550364841138],[32.946960890440806,35.3867033961337],[33.667227003724946,35.37321584730551],[34.57647382990046,35.67159556735879],[33.900804477684204,35.245755927057616],[33.97361657078346,35.058506374648],[33.86643965021011,35.09359467217419],[33.675391880027064,35.01786286065045],[33.5256852556775,35.03868846286407],[33.475817498515845,35.000344550103506],[33.45592207208347,35.10142365166641],[33.3838334490363,35.16271190036457],[33.19097700372305,35.17312470147138],[32.919572381326134,35.08783274997364],[32.73178022637745,35.14002594658844]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Cyprus","sov_a3":"CYP","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Cyprus","adm0_a3":"CYP","geou_dif":0,"geounit":"Cyprus","gu_a3":"CYP","su_dif":0,"subunit":"Cyprus","su_a3":"CYP","brk_diff":0,"name":"Cyprus","name_long":"Cyprus","brk_a3":"CYP","brk_name":"Cyprus","brk_group":null,"abbrev":"Cyp.","postal":"CY","formal_en":"Republic of Cyprus","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Cyprus","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":3,"mapcolor13":7,"pop_est":531640,"gdp_md_est":22700,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"CY","iso_a3":"CYP","iso_n3":"196","un_a3":"196","wb_a2":"CY","wb_a3":"CYP","woe_id":-99,"adm0_a3_is":"CYP","adm0_a3_us":"CYP","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"CYP.geojson"},"geometry":{"type":"Polygon","coordinates":[[[33.97361657078346,35.058506374648],[34.00488081232004,34.97809784600186],[32.97982710137845,34.57186941175544],[32.49029625827753,34.701654771456475],[32.25666710788596,35.10323232679663],[32.73178022637745,35.14002594658844],[32.919572381326134,35.08783274997364],[33.19097700372305,35.17312470147138],[33.3838334490363,35.16271190036457],[33.45592207208347,35.10142365166641],[33.475817498515845,35.000344550103506],[33.5256852556775,35.03868846286407],[33.675391880027064,35.01786286065045],[33.86643965021011,35.09359467217419],[33.97361657078346,35.058506374648]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Iraq","sov_a3":"IRQ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Iraq","adm0_a3":"IRQ","geou_dif":0,"geounit":"Iraq","gu_a3":"IRQ","su_dif":0,"subunit":"Iraq","su_a3":"IRQ","brk_diff":0,"name":"Iraq","name_long":"Iraq","brk_a3":"IRQ","brk_name":"Iraq","brk_group":null,"abbrev":"Iraq","postal":"IRQ","formal_en":"Republic of Iraq","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Iraq","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":3,"mapcolor13":1,"pop_est":31129225,"gdp_md_est":103900,"pop_year":-99,"lastcensus":1997,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"IQ","iso_a3":"IRQ","iso_n3":"368","un_a3":"368","wb_a2":"IQ","wb_a3":"IRQ","woe_id":-99,"adm0_a3_is":"IRQ","adm0_a3_us":"IRQ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"IRQ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[45.4206181170532,35.97754588474282],[46.0763403664048,35.67738332777549],[46.15178795755093,35.09325877536429],[45.64845950702809,34.748137722303014],[45.41669070819904,33.967797756479584],[46.10936160663932,33.017287299119005],[47.3346614927119,32.469155381799105],[47.8492037290421,31.70917593029867],[47.68528608581227,30.98485321707963],[48.004698113808324,30.985137437457244],[48.0145683123761,30.452456773392598],[48.567971225789755,29.926778265903522],[47.974519077349896,29.9758192001485],[47.30262210469096,30.05906993257072],[46.568713413281756,29.09902517345229],[44.70949873228474,29.178891099559383],[41.889980910007836,31.190008653278365],[40.399994337736246,31.889991766887935],[39.19546837744497,32.16100881604267],[38.792340529136084,33.378686428352225],[41.006158888519934,34.41937226006212],[41.383965285005814,35.628316555314356],[41.289707472505455,36.35881460219227],[41.83706424334096,36.605853786763575],[42.34959109881177,37.2298725449041],[42.77912560402182,37.385263576805755],[43.9422587420473,37.25622752537295],[44.29345177590286,37.0015143906063],[44.772699008977696,37.170444647768434],[45.4206181170532,35.97754588474282]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Iran","sov_a3":"IRN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Iran","adm0_a3":"IRN","geou_dif":0,"geounit":"Iran","gu_a3":"IRN","su_dif":0,"subunit":"Iran","su_a3":"IRN","brk_diff":0,"name":"Iran","name_long":"Iran","brk_a3":"IRN","brk_name":"Iran","brk_group":null,"abbrev":"Iran","postal":"IRN","formal_en":"Islamic Republic of Iran","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Iran, Islamic Rep.","name_alt":null,"mapcolor7":4,"mapcolor8":3,"mapcolor9":4,"mapcolor13":13,"pop_est":66429284,"gdp_md_est":841700,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"IR","iso_a3":"IRN","iso_n3":"364","un_a3":"364","wb_a2":"IR","wb_a3":"IRN","woe_id":-99,"adm0_a3_is":"IRN","adm0_a3_us":"IRN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"Middle East & North Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"IRN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[53.92159793479556,37.19891836196126],[54.800303989486565,37.392420762678185],[55.51157840355191,37.96411713312317],[56.18037479027333,37.93512665460742],[56.61936608259282,38.121394354803485],[57.33043379092898,38.02922943781094],[58.4361544126782,37.522309475243794],[59.23476199731681,37.412987982730336],[60.37763797388387,36.52738312432837],[61.123070509694145,36.49159719496624],[61.21081709172574,35.650072333309225],[60.80319339380745,34.40410187431986],[60.52842980331158,33.676446031218006],[60.963700392506006,33.52883230237625],[60.536077915290775,32.98126882581157],[60.863654819588966,32.18291962333443],[60.94194461451113,31.548074652628753],[61.699314406180825,31.37950613049267],[61.781221551363444,30.735850328081234],[60.874248488208785,29.829238999952604],[61.36930870956494,29.303276272085924],[61.77186811711863,28.699333807890795],[62.72783043808598,28.25964488373539],[62.755425652929866,27.378923448184985],[63.233897739520295,27.21704702403071],[63.31663170761959,26.756532497661667],[61.87418745305655,26.239974880472104],[61.49736290878419,25.0782370061185],[59.61613406763084,25.380156561783778],[58.5257613462723,25.60996165618573],[57.397251417882394,25.73990204518364],[56.970765822177555,26.96610626882136],[56.492138706290206,27.143304755150197],[55.72371015811006,26.96463349050104],[54.71508955263727,26.480657863871514],[53.49309695823135,26.81236888275305],[52.48359785340961,27.580849107365495],[51.52076256694741,27.865689602158298],[50.85294803243954,28.814520575469384],[50.115008579311585,30.147772528599717],[49.576850213423995,29.985715236932407],[48.94133344909855,30.317090359004037],[48.567971225789755,29.926778265903522],[48.0145683123761,30.452456773392598],[48.004698113808324,30.985137437457244],[47.68528608581227,30.98485321707963],[47.8492037290421,31.70917593029867],[47.3346614927119,32.469155381799105],[46.10936160663932,33.017287299119005],[45.41669070819904,33.967797756479584],[45.64845950702809,34.748137722303014],[46.15178795755093,35.09325877536429],[46.0763403664048,35.67738332777549],[45.4206181170532,35.97754588474282],[44.77267,37.17045],[44.22575564960053,37.97158437758935],[44.421402622257546,38.28128123631454],[44.10922529478234,39.4281362981681],[44.79398969908195,39.71300263117705],[44.95268802265031,39.33576467544637],[45.45772179543877,38.87413910578306],[46.14362308124881,38.74120148371222],[46.50571984231797,38.770605373686294],[47.685079380083096,39.508363959301214],[48.06009524922524,39.58223541926246],[48.35552941263788,39.28876496027691],[48.01074425638648,38.79401479751452],[48.63437544128481,38.27037750910097],[48.88324913920249,38.32024526626262],[49.19961225769334,37.58287425388988],[50.14777143738462,37.37456655532134],[50.84235436381971,36.8728142359834],[52.264024692601424,36.7004216578577],[53.82578982932642,36.965030829408235],[53.92159793479556,37.19891836196126]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Jordan","sov_a3":"JOR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Jordan","adm0_a3":"JOR","geou_dif":0,"geounit":"Jordan","gu_a3":"JOR","su_dif":0,"subunit":"Jordan","su_a3":"JOR","brk_diff":0,"name":"Jordan","name_long":"Jordan","brk_a3":"JOR","brk_name":"Jordan","brk_group":null,"abbrev":"Jord.","postal":"J","formal_en":"Hashemite Kingdom of Jordan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Jordan","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":4,"mapcolor13":4,"pop_est":6342948,"gdp_md_est":31610,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"JO","iso_a3":"JOR","iso_n3":"400","un_a3":"400","wb_a2":"JO","wb_a3":"JOR","woe_id":-99,"adm0_a3_is":"JOR","adm0_a3_us":"JOR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":6,"long_len":6,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"JOR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.71991824722275,32.709192409794866],[36.834062127435544,32.312937526980775],[38.792340529136084,33.378686428352225],[39.19546837744497,32.16100881604267],[39.00488569515255,32.01021698661498],[37.00216556168101,31.508412990844743],[37.998848911294374,30.50849986421313],[37.66811974462638,30.3386652694859],[37.503581984209035,30.003776150018403],[36.74052778498725,29.86528331147619],[36.50121422704358,29.5052536076987],[36.06894087092206,29.197494615184457],[34.95603722508426,29.35655467377884],[34.92260257339142,29.501326198844524],[35.420918409981965,31.100065822874356],[35.397560662586045,31.48908600516758],[35.5452519060762,31.78250478772084],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Israel","sov_a3":"ISR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Israel","adm0_a3":"ISR","geou_dif":0,"geounit":"Israel","gu_a3":"ISR","su_dif":0,"subunit":"Israel","su_a3":"ISR","brk_diff":0,"name":"Israel","name_long":"Israel","brk_a3":"ISR","brk_name":"Israel","brk_group":null,"abbrev":"Isr.","postal":"IS","formal_en":"State of Israel","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Israel","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":5,"mapcolor13":9,"pop_est":7233701,"gdp_md_est":201400,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"IL","iso_a3":"ISR","iso_n3":"376","un_a3":"376","wb_a2":"IL","wb_a3":"ISR","woe_id":-99,"adm0_a3_is":"ISR","adm0_a3_us":"ISR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ISR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[35.71991824722275,32.709192409794866],[35.54566531753454,32.393992011030576],[35.183930291491436,32.53251068778894],[34.97464074070933,31.86658234305972],[35.22589155451242,31.754341132121766],[34.970506626125996,31.616778469360806],[34.92740848159457,31.353435370401414],[35.397560662586045,31.48908600516758],[35.420918409981965,31.100065822874356],[34.92260257339142,29.501326198844524],[34.26543338393568,31.219360866820153],[34.55637169773891,31.548823960896996],[34.48810713068136,31.60553884533732],[34.752587111151165,32.07292633720117],[34.95541710789677,32.82737641044638],[35.098457472480675,33.080539252244265],[35.126052687324545,33.09090037691878],[35.460709262846706,33.08904002535628],[35.55279666519081,33.26427480725802],[35.82110070165024,33.2774264592763],[35.836396925608625,32.86812327730851],[35.700797967274745,32.71601369885738],[35.71991824722275,32.709192409794866]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Japan","sov_a3":"JPN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Japan","adm0_a3":"JPN","geou_dif":0,"geounit":"Japan","gu_a3":"JPN","su_dif":0,"subunit":"Japan","su_a3":"JPN","brk_diff":0,"name":"Japan","name_long":"Japan","brk_a3":"JPN","brk_name":"Japan","brk_group":null,"abbrev":"Japan","postal":"J","formal_en":"Japan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Japan","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":5,"mapcolor13":4,"pop_est":127078679,"gdp_md_est":4329000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"JP","iso_a3":"JPN","iso_n3":"392","un_a3":"392","wb_a2":"JP","wb_a3":"JPN","woe_id":-99,"adm0_a3_is":"JPN","adm0_a3_us":"JPN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"JPN.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[134.63842817600388,34.14923371025642],[134.7663790223585,33.80633474378368],[134.20341596897086,33.20117788342964],[133.7929500672765,33.5219851750976],[133.28026818250888,33.28957042086495],[133.01485802625788,32.70456736910478],[132.3631148621927,32.98938202568137],[132.37117638563018,33.46364248304007],[132.9243725933148,34.06029857028204],[133.49296837782222,33.9446208765967],[133.90410607313638,34.36493113864262],[134.63842817600388,34.14923371025642]]],[[[140.9763875673053,37.14207428644016],[140.59976972876214,36.343983466124534],[140.77407433488264,35.84287710219024],[140.25327925024513,35.13811391859365],[138.97552778539622,34.66760000257611],[137.21759891169123,34.60628591566186],[135.7929830262689,33.46480520276663],[135.12098270074543,33.84907115328906],[135.07943484918272,34.59654490817482],[133.340316196832,34.37593821872076],[132.15677086805132,33.90493337659652],[130.98614464734348,33.88576142021628],[132.00003624891005,33.149992377244615],[131.33279015515737,31.450354519164843],[130.68631798718596,31.029579169228242],[130.20241987520498,31.418237616495418],[130.44767622286216,32.319474595665724],[129.8146916037189,32.61030955660439],[129.40846316947258,33.29605581311759],[130.35393517468466,33.6041507024417],[130.87845096244715,34.232742824840045],[131.88422936414392,34.74971385348791],[132.61767296766251,35.43339305270942],[134.6083008159778,35.73161774346582],[135.67753787652893,35.527134100886826],[136.72383060114245,37.30498423924038],[137.3906116070045,36.827390651998826],[138.85760216690628,37.82748464614346],[139.4264046571429,38.21596222589764],[140.0547900738121,39.438807481436385],[139.88337934789988,40.563312486323696],[140.30578250545372,41.19500519465956],[141.3689734234267,41.37855988216029],[141.91426313697048,39.99161611587868],[141.884600864835,39.180864569651504],[140.9594893739458,38.17400096287658],[140.9763875673053,37.14207428644016]]],[[[143.9101619813795,44.17409983985373],[144.61342654843963,43.960882880217525],[145.3208252300831,44.38473297787544],[145.54313724180278,43.262088324550604],[144.0596618999999,42.98835826270056],[143.18384972551732,41.9952147486992],[141.61149092017249,42.67879059505608],[141.06728641170665,41.58459381770799],[139.95510623592108,41.569555975911044],[139.81754357315995,42.5637588567744],[140.31208703019323,43.33327261003265],[141.38054894426003,43.388824774746496],[141.67195234595394,44.77212535255148],[141.967644891528,45.55148346616135],[143.14287031470982,44.510358384776964],[143.9101619813795,44.17409983985373]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Kazakhstan","sov_a3":"KAZ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Kazakhstan","adm0_a3":"KAZ","geou_dif":0,"geounit":"Kazakhstan","gu_a3":"KAZ","su_dif":0,"subunit":"Kazakhstan","su_a3":"KAZ","brk_diff":0,"name":"Kazakhstan","name_long":"Kazakhstan","brk_a3":"KAZ","brk_name":"Kazakhstan","brk_group":null,"abbrev":"Kaz.","postal":"KZ","formal_en":"Republic of Kazakhstan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Kazakhstan","name_alt":null,"mapcolor7":6,"mapcolor8":1,"mapcolor9":6,"mapcolor13":1,"pop_est":15399437,"gdp_md_est":175800,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"KZ","iso_a3":"KAZ","iso_n3":"398","un_a3":"398","wb_a2":"KZ","wb_a3":"KAZ","woe_id":-99,"adm0_a3_is":"KAZ","adm0_a3_us":"KAZ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Central Asia","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KAZ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449929,42.26615428320554],[70.3889648782208,42.081307684897524],[69.07002729683524,41.38424428971234],[68.63248294462005,40.66868073176687],[68.25989586779565,40.6623245305949],[67.98585574735182,41.135990708982206],[66.7140470722166,41.168443508461564],[66.51064863471572,41.987644151368556],[66.02339155463562,41.99464630794404],[66.0980123228652,42.99766002051308],[64.90082441595933,43.728080552742654],[63.185786981056594,43.650074978198006],[62.01330040878628,43.50447663021566],[61.0583199400325,44.40581696225058],[60.23997195825847,44.784036770194746],[58.6899890480958,45.50001373959873],[58.50312706892844,45.586804307632974],[55.92891727074118,44.99585846615918],[55.968191359283026,41.30864166926938],[55.45525109235381,41.25985911718584],[54.75534549339267,42.04397146256662],[54.07941775901497,42.32410940202084],[52.94429324729174,42.11603424739758],[52.50245975119628,41.78331553808647],[52.44633914572722,42.027150783855575],[52.692112257707265,42.44389537207337],[52.50142622255032,42.7922978785852],[51.342427199108215,43.132974758469345],[50.89129194520024,44.03103363705378],[50.339129266161365,44.284015611338475],[50.305642938036264,44.609835516938915],[51.278503452363225,44.51485423438646],[51.316899041556034,45.2459982366679],[52.16738976421573,45.40839142514511],[53.0408764992452,45.25904653582177],[53.220865512917726,46.234645901059935],[53.042736850807785,46.853006089864486],[52.04202273947561,46.80463694923924],[51.191945428274266,47.048704738953916],[50.03408328634248,46.60898997658222],[49.10116000000011,46.399330000000134],[48.593241001180495,46.56103424741547],[48.694733514201744,47.07562816017793],[48.05725304544927,47.74375275327952],[47.31523115417024,47.715847479841955],[46.46644575377627,48.39415233010493],[47.043671502476506,49.152038886097614],[46.75159630716274,49.35600576435377],[47.5494804217493,50.454698391311126],[48.57784142435752,49.87475962991567],[48.70238162618102,50.60512848571284],[50.76664839051215,51.6927623561599],[52.32872358583097,51.718652248738124],[54.532878452376224,51.02623973245932],[55.716940545479815,50.62171662047853],[56.777961053296565,51.04355133727705],[58.36329064314674,51.06365346943858],[59.6422823423706,50.545442206415714],[59.93280724471549,50.842194118851864],[61.337424350840934,50.79907013610426],[61.58800337102417,51.272658799843214],[59.96753380721554,51.9604204372157],[60.92726850774027,52.44754832621504],[60.73999311711459,52.71998647725775],[61.6999861998006,52.97999644633427],[60.97806644068316,53.66499339457914],[61.436591424409066,54.00626455343479],[65.17853356309593,54.35422781027211],[65.666875848254,54.60126699484345],[68.16910037625883,54.97039175070432],[69.06816694527288,55.38525014914353],[70.86526655465514,55.169733588270105],[71.18013105660941,54.133285224008254],[72.22415001820218,54.376655381886735],[73.5085160663844,54.035616766976595],[73.42567874542043,53.489810289109755],[74.38484500519007,53.54686107036008],[76.89110029491343,54.49052440044193],[76.52517947785473,54.177003485727134],[77.80091556184425,53.404414984747575],[80.03555952344169,50.86475088154725],[80.56844689323549,51.38833649352847],[81.94598554883993,50.81219594990637],[83.38300377801238,51.069182847693924],[83.93511478061885,50.88924551045358],[84.41637739455308,50.311399644565824],[85.11555952346203,50.11730296487763],[85.54126997268247,49.69285858824816],[86.82935672398963,49.82667470966817],[87.35997033076268,49.21498078062916],[86.59877648310339,48.54918162698061],[85.7682328633083,48.45575063739698],[85.72048383987072,47.45296946877312],[85.16429039911338,47.00095571551611],[83.18048383986047,47.330031236350855],[82.45892581576913,45.539649563166506],[81.94707075391813,45.31702749285324],[79.96610639844141,44.91751699480466],[80.86620649610137,43.18036204688104],[80.1801501809943,42.92006785742694],[80.25999026888536,42.349999294599115],[79.64364546094015,42.496682847659656],[79.1421773619798,42.856092434249604],[77.6583919615832,42.960685533208334],[76.00035363149857,42.98802236589063],[75.6369649596221,42.87789988867678],[74.21286583852259,43.29833934180351],[73.64530358266092,43.09127187760987],[73.48975752146237,42.50089447689129],[71.84463829945065,42.845395412765185],[71.18628055205227,42.70429291439223],[70.96231489449929,42.26615428320554]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Kyrgyzstan","sov_a3":"KGZ","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Kyrgyzstan","adm0_a3":"KGZ","geou_dif":0,"geounit":"Kyrgyzstan","gu_a3":"KGZ","su_dif":0,"subunit":"Kyrgyzstan","su_a3":"KGZ","brk_diff":0,"name":"Kyrgyzstan","name_long":"Kyrgyzstan","brk_a3":"KGZ","brk_name":"Kyrgyzstan","brk_group":null,"abbrev":"Kgz.","postal":"KG","formal_en":"Kyrgyz Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Kyrgyz Republic","name_alt":null,"mapcolor7":5,"mapcolor8":7,"mapcolor9":7,"mapcolor13":6,"pop_est":5431747,"gdp_md_est":11610,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"6. Developing region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"KG","iso_a3":"KGZ","iso_n3":"417","un_a3":"417","wb_a2":"KG","wb_a3":"KGZ","woe_id":-99,"adm0_a3_is":"KGZ","adm0_a3_us":"KGZ","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Central Asia","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KGZ.geojson"},"geometry":{"type":"Polygon","coordinates":[[[70.96231489449914,42.26615428320549],[71.18628055205212,42.70429291439214],[71.8446382994506,42.84539541276509],[73.48975752146237,42.50089447689132],[73.64530358266092,43.09127187760982],[74.21286583852256,43.29833934180337],[75.636964959622,42.87789988867668],[76.00035363149846,42.98802236589067],[77.6583919615832,42.96068553320826],[79.14217736197978,42.85609243424952],[79.64364546094012,42.49668284765953],[80.2599902688853,42.34999929459906],[80.11943037305139,42.12394074153825],[78.54366092317531,41.58224254003869],[78.18719689322597,41.18531586360481],[76.90448449087708,41.06648590754964],[76.52636803579745,40.42794607193512],[75.4678279967307,40.56207225194867],[74.77686242055606,40.36642527929163],[73.8222436868283,39.893973497063186],[73.96001305531843,39.660008449861735],[73.6753792662548,39.4312368841056],[71.784693637992,39.27946320246437],[70.54916181832562,39.6041979029865],[69.46488691597753,39.5266832545487],[69.55960981636852,40.10321137141298],[70.64801883329997,39.93575389257117],[71.01419803252017,40.24436554621823],[71.77487511585656,40.14584442805378],[73.05541710804917,40.866033026689465],[71.87011478057047,41.392900092121266],[71.1578585142916,41.14358714452912],[70.42002241402821,41.51999827734314],[71.25924767444822,42.16771067968946],[70.96231489449914,42.26615428320549]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Cambodia","sov_a3":"KHM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Cambodia","adm0_a3":"KHM","geou_dif":0,"geounit":"Cambodia","gu_a3":"KHM","su_dif":0,"subunit":"Cambodia","su_a3":"KHM","brk_diff":0,"name":"Cambodia","name_long":"Cambodia","brk_a3":"KHM","brk_name":"Cambodia","brk_group":null,"abbrev":"Camb.","postal":"KH","formal_en":"Kingdom of Cambodia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Cambodia","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":6,"mapcolor13":5,"pop_est":14494293,"gdp_md_est":27940,"pop_year":-99,"lastcensus":2008,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"KH","iso_a3":"KHM","iso_n3":"116","un_a3":"116","wb_a2":"KH","wb_a3":"KHM","woe_id":-99,"adm0_a3_is":"KHM","adm0_a3_us":"KHM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"KHM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[103.4972799011397,10.632555446815928],[103.09068973186724,11.153660590047165],[102.5849324890267,12.186594956913282],[102.348099399833,13.394247341358223],[102.98842207236163,14.225721136934467],[104.28141808473661,14.416743068901367],[105.21877689007887,14.273211778210694],[106.04394616091552,13.881091009979954],[106.49637332563087,14.570583807834282],[107.38272749230109,14.202440904186972],[107.61454796756243,13.535530707244206],[107.49140302941089,12.337205918827946],[105.81052371625313,11.567614650921227],[106.24967003786946,10.961811835163587],[105.19991499229235,10.889309800658097],[104.33433475140347,10.48654368737523],[103.4972799011397,10.632555446815928]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"South Korea","sov_a3":"KOR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"South Korea","adm0_a3":"KOR","geou_dif":0,"geounit":"South Korea","gu_a3":"KOR","su_dif":0,"subunit":"South Korea","su_a3":"KOR","brk_diff":0,"name":"South Korea","name_long":"Republic of Korea","brk_a3":"KOR","brk_name":"Republic of Korea","brk_group":null,"abbrev":"S.K.","postal":"KR","formal_en":"Republic of Korea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Korea, Rep.","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":1,"mapcolor13":5,"pop_est":48508972,"gdp_md_est":1335000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"4. Emerging region: MIKT","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"KR","iso_a3":"KOR","iso_n3":"410","un_a3":"410","wb_a2":"KR","wb_a3":"KOR","woe_id":-99,"adm0_a3_is":"KOR","adm0_a3_us":"KOR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":5,"long_len":17,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KOR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[128.34971642467661,38.61224294692785],[129.21291954968007,37.43239248305595],[129.46044966035817,36.78418915460282],[129.4683044780665,35.63214061130395],[129.0913765809296,35.082484239231434],[128.1858504578791,34.89037710218639],[127.38651940318839,34.47567373304412],[126.48574751190874,34.39004588473648],[126.37391971242913,34.934560451795946],[126.5592313986278,35.6845405136479],[126.11739790253229,36.72548472751926],[126.86014326386339,36.893924058574626],[126.17475874237624,37.74968577732804],[126.23733890188176,37.84037791600028],[126.68371992401892,37.80477285415118],[127.07330854706737,38.2561148137884],[127.780035435091,38.30453563084589],[128.20574588431145,38.37039724380189],[128.34971642467661,38.61224294692785]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Laos","sov_a3":"LAO","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Laos","adm0_a3":"LAO","geou_dif":0,"geounit":"Laos","gu_a3":"LAO","su_dif":0,"subunit":"Laos","su_a3":"LAO","brk_diff":0,"name":"Laos","name_long":"Lao PDR","brk_a3":"LAO","brk_name":"Laos","brk_group":null,"abbrev":"Laos","postal":"LA","formal_en":"Lao People\'s Democratic Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Lao PDR","name_alt":null,"mapcolor7":1,"mapcolor8":1,"mapcolor9":1,"mapcolor13":9,"pop_est":6834942,"gdp_md_est":13980,"pop_year":-99,"lastcensus":2005,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LA","iso_a3":"LAO","iso_n3":"418","un_a3":"418","wb_a2":"LA","wb_a3":"LAO","woe_id":-99,"adm0_a3_is":"LAO","adm0_a3_us":"LAO","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"LAO.geojson"},"geometry":{"type":"Polygon","coordinates":[[[105.21877689007887,14.273211778210694],[105.54433841351769,14.723933620660416],[105.58903852745016,15.570316066952858],[104.7793205098688,16.44186493577145],[104.7169470560925,17.42885895433008],[103.95647667848529,18.24095408779688],[103.20019209189373,18.309632066312773],[102.9987056823877,17.9616946476916],[102.41300499879162,17.932781683824288],[102.11359175009248,18.109101670804165],[101.05954756063517,17.51249725999449],[101.03593143107777,18.408928330961615],[101.2820146016517,19.462584947176765],[100.60629357300316,19.508344427971224],[100.54888105672688,20.109237982661128],[100.11598758341783,20.417849636308187],[100.32910119018952,20.786121731036232],[101.18000532430754,21.436572984294024],[101.27002566935997,21.201651923095184],[101.80311974488292,21.17436676684507],[101.65201785686152,22.318198757409547],[102.17043582561358,22.464753119389304],[102.75489627483466,21.675137233969465],[103.20386111858645,20.766562201413745],[104.43500044150805,20.75873322192153],[104.8225736836971,19.886641750563882],[104.18338789267894,19.62466807706022],[103.8965320170267,19.265180975821806],[105.09459842328152,18.66697459561108],[105.92576216026403,17.48531545660896],[106.55600792849569,16.604283962464805],[107.3127059265456,15.90853831630318],[107.5645251811039,15.202173163305558],[107.38272749230109,14.202440904186972],[106.49637332563087,14.570583807834282],[106.04394616091552,13.881091009979954],[105.21877689007887,14.273211778210694]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Lebanon","sov_a3":"LBN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Lebanon","adm0_a3":"LBN","geou_dif":0,"geounit":"Lebanon","gu_a3":"LBN","su_dif":0,"subunit":"Lebanon","su_a3":"LBN","brk_diff":0,"name":"Lebanon","name_long":"Lebanon","brk_a3":"LBN","brk_name":"Lebanon","brk_group":null,"abbrev":"Leb.","postal":"LB","formal_en":"Lebanese Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Lebanon","name_alt":null,"mapcolor7":4,"mapcolor8":4,"mapcolor9":4,"mapcolor13":12,"pop_est":4017095,"gdp_md_est":44060,"pop_year":-99,"lastcensus":1970,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LB","iso_a3":"LBN","iso_n3":"422","un_a3":"422","wb_a2":"LB","wb_a3":"LBN","woe_id":-99,"adm0_a3_is":"LBN","adm0_a3_us":"LBN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":7,"long_len":7,"abbrev_len":4,"tiny":4,"homepart":1,"filename":"LBN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[35.82110070165024,33.2774264592763],[35.55279666519081,33.26427480725802],[35.460709262846706,33.08904002535628],[35.126052687324545,33.09090037691878],[35.48220665868013,33.90545014091944],[35.9795923194894,34.61005829521913],[35.99840254084364,34.644914048800004],[36.4481942075121,34.59393524834407],[36.61175011571589,34.201788641897174],[36.066460402172055,33.82491242119255],[35.82110070165024,33.2774264592763]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Sri Lanka","sov_a3":"LKA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Sri Lanka","adm0_a3":"LKA","geou_dif":0,"geounit":"Sri Lanka","gu_a3":"LKA","su_dif":0,"subunit":"Sri Lanka","su_a3":"LKA","brk_diff":0,"name":"Sri Lanka","name_long":"Sri Lanka","brk_a3":"LKA","brk_name":"Sri Lanka","brk_group":null,"abbrev":"Sri L.","postal":"LK","formal_en":"Democratic Socialist Republic of Sri Lanka","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Sri Lanka","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":4,"mapcolor13":9,"pop_est":21324791,"gdp_md_est":91870,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LK","iso_a3":"LKA","iso_n3":"144","un_a3":"144","wb_a2":"LK","wb_a3":"LKA","woe_id":-99,"adm0_a3_is":"LKA","adm0_a3_us":"LKA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":9,"long_len":9,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"LKA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[81.7879590188914,7.523055324733164],[81.63732221876059,6.481775214051921],[81.21801964714433,6.197141424988288],[80.34835696810441,5.968369859232155],[79.87246870312853,6.76346344647493],[79.69516686393513,8.200843410673386],[80.14780073437964,9.824077663609557],[80.83881798698656,9.268426825391188],[81.30431928907177,8.56420624433369],[81.7879590188914,7.523055324733164]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Kuwait","sov_a3":"KWT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Kuwait","adm0_a3":"KWT","geou_dif":0,"geounit":"Kuwait","gu_a3":"KWT","su_dif":0,"subunit":"Kuwait","su_a3":"KWT","brk_diff":0,"name":"Kuwait","name_long":"Kuwait","brk_a3":"KWT","brk_name":"Kuwait","brk_group":null,"abbrev":"Kwt.","postal":"KW","formal_en":"State of Kuwait","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Kuwait","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":2,"mapcolor13":2,"pop_est":2691158,"gdp_md_est":149100,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"KW","iso_a3":"KWT","iso_n3":"414","un_a3":"414","wb_a2":"KW","wb_a3":"KWT","woe_id":-99,"adm0_a3_is":"KWT","adm0_a3_us":"KWT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KWT.geojson"},"geometry":{"type":"Polygon","coordinates":[[[47.974519077349896,29.9758192001485],[48.18318851094448,29.534476630159766],[48.09394331237642,29.306299343375002],[48.416094191283946,28.55200429942667],[47.708850538937384,28.526062730416143],[47.45982181172283,29.002519436147224],[46.568713413281756,29.09902517345229],[47.30262210469096,30.05906993257072],[47.974519077349896,29.9758192001485]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Myanmar","sov_a3":"MMR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Myanmar","adm0_a3":"MMR","geou_dif":0,"geounit":"Myanmar","gu_a3":"MMR","su_dif":0,"subunit":"Myanmar","su_a3":"MMR","brk_diff":0,"name":"Myanmar","name_long":"Myanmar","brk_a3":"MMR","brk_name":"Myanmar","brk_group":null,"abbrev":"Myan.","postal":"MM","formal_en":"Republic of the Union of Myanmar","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Myanmar","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":5,"mapcolor13":13,"pop_est":48137741,"gdp_md_est":55130,"pop_year":-99,"lastcensus":1983,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"MM","iso_a3":"MMR","iso_n3":"104","un_a3":"104","wb_a2":"MM","wb_a3":"MMR","woe_id":-99,"adm0_a3_is":"MMR","adm0_a3_us":"MMR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":7,"long_len":7,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"MMR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[99.54330936075931,20.186597601802063],[98.95967573445488,19.752980658440947],[98.25372399291561,19.708203029860044],[97.7977828308044,18.627080389881755],[97.37589643757354,18.445437730375815],[97.85912275593486,17.567946071843664],[98.49376102091135,16.83783559820793],[98.90334842325676,16.177824204976115],[98.53737592976572,15.308497422746084],[98.1920740091914,15.12370250087035],[98.43081912637987,14.622027696180835],[99.09775516153876,13.827502549693278],[99.21201175333609,13.269293728076464],[99.19635379435167,12.80474843998867],[99.58728600463972,11.892762762901697],[99.03812055867398,10.960545762572437],[98.55355065307305,9.932959906448545],[98.45717410684871,10.67526601810515],[98.76454552612077,11.441291612183749],[98.42833865762985,12.032986761925683],[98.50957400919268,13.122377631070677],[98.1036039571077,13.640459703012851],[97.77773237507517,14.837285874892642],[97.59707156778276,16.10056793869977],[97.1645398294998,16.928734442609336],[96.505768670643,16.42724050543285],[95.3693522481124,15.7143899601826],[94.80840457558412,15.80345429123764],[94.18880415240454,16.037936102762018],[94.53348595579135,17.277240301985728],[94.32481652219674,18.2135139022499],[93.54098839719364,19.36649262133002],[93.66325483599621,19.726961574781996],[93.07827762245219,19.855144965081976],[92.36855350135562,20.670883287025347],[92.30323449093868,21.47548533780982],[92.65225711463799,21.324047552978485],[92.67272098182556,22.041238918541254],[93.16612755734836,22.278459580977103],[93.06029422401463,22.70311066333557],[93.28632693885928,23.043658352139005],[93.3251876159428,24.078556423432204],[94.10674197792505,23.85074087167348],[94.55265791217164,24.675238348890332],[94.60324913938538,25.162495428970402],[95.1551534362626,26.001307277932085],[95.12476769407496,26.5735720891323],[96.41936567585097,27.264589341739224],[97.1339990580153,27.083773505149964],[97.0519885599681,27.69905894623315],[97.40256147663612,27.88253611908544],[97.32711388549004,28.26158274994634],[97.91198774616944,28.335945136014345],[98.2462309102333,27.74722138112918],[98.68269005737046,27.50881216075062],[98.71209394734451,26.743535874940264],[98.67183800658916,25.918702500913525],[97.72460900267914,25.083637193293],[97.60471967976198,23.897404690033042],[98.66026248575577,24.063286037689966],[98.89874922078276,23.14272207284253],[99.5319922220874,22.94903880461258],[99.24089887898725,22.11831431730458],[99.98348921102149,21.7429367131364],[100.41653771362738,21.558839423096614],[101.15003299357825,21.84998444262902],[101.18000532430754,21.436572984294024],[100.32910119018952,20.786121731036232],[100.11598758341783,20.417849636308187],[99.54330936075931,20.186597601802063]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Mongolia","sov_a3":"MNG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Mongolia","adm0_a3":"MNG","geou_dif":0,"geounit":"Mongolia","gu_a3":"MNG","su_dif":0,"subunit":"Mongolia","su_a3":"MNG","brk_diff":0,"name":"Mongolia","name_long":"Mongolia","brk_a3":"MNG","brk_name":"Mongolia","brk_group":null,"abbrev":"Mong.","postal":"MN","formal_en":"Mongolia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Mongolia","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":5,"mapcolor13":6,"pop_est":3041142,"gdp_md_est":9476,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MN","iso_a3":"MNG","iso_n3":"496","un_a3":"496","wb_a2":"MN","wb_a3":"MNG","woe_id":-99,"adm0_a3_is":"MNG","adm0_a3_us":"MNG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"MNG.geojson"},"geometry":{"type":"Polygon","coordinates":[[[87.7512642760767,49.29719798440548],[88.80556684769552,49.47052073831242],[90.71366743364067,50.33181183532109],[92.23471154171968,50.80217072204172],[93.10421919146269,50.49529022887643],[94.14756635943561,50.48053660745709],[94.81594933469873,50.01343333597085],[95.81402794798399,49.977466539095715],[97.25972781778141,49.72606069599574],[98.23176150919156,50.422400621128745],[97.8257397806743,51.01099518493318],[98.86149051310034,52.047366034546684],[99.98173221232354,51.63400625264399],[100.88948042196262,51.51685578063832],[102.06522260946733,51.259920559283124],[102.25590864462431,50.51056061461868],[103.67654544476022,50.089966132195116],[104.6215523620817,50.275329494826074],[105.88659142458675,50.406019192092224],[106.88880415245534,50.27429596618023],[107.86817589725094,49.793705145865815],[108.47516727095127,49.28254771585074],[109.40244917199666,49.29296051695755],[110.66201053267876,49.13012807880587],[111.58123091028662,49.37796824807769],[112.89773969935439,49.54356537535699],[114.36245649623527,50.24830272073741],[114.96210981655018,50.140247300815126],[115.48569542853141,49.805177313834605],[116.67880089728618,49.88853139912139],[116.19180219936757,49.134598090199106],[115.48528201707305,48.13538259540344],[115.74283735561578,47.72654450132629],[116.30895267137323,47.85341014260284],[117.29550744025741,47.69770905210743],[118.06414269416672,48.06673045510368],[118.86657433479495,47.74706004494617],[119.7728239278975,47.048058783550125],[119.66326989143874,46.69267995867892],[118.87432579963873,46.80541209572365],[117.42170128791419,46.67273285581426],[116.71786828009886,46.38820241961521],[115.98509647020008,45.727235012386004],[114.46033165899607,45.339816799493825],[113.46390669154417,44.80889313412711],[112.43606245325881,45.01164561622429],[111.87330610560029,45.10207937273506],[111.34837690637946,44.45744171811009],[111.66773725794323,44.07317576758771],[111.82958784388137,43.743118394539515],[111.12968224492022,43.40683401140015],[110.41210330611528,42.87123362891103],[109.24359581913146,42.5194463160841],[107.74477257693795,42.48151581478187],[106.12931562706169,42.13432770442891],[104.96499393109347,41.59740957291635],[104.52228193564899,41.908346666016556],[103.31227827353482,41.9074681666676],[101.83304039917994,42.51487295182628],[100.84586551310827,42.66380442969145],[99.51581749878004,42.52469147396172],[97.45175744017801,42.74888967546002],[96.34939578652781,42.725635280928685],[95.76245486855669,43.319449164394605],[95.30687544147153,44.24133087826547],[94.68892866412533,44.352331854828414],[93.4807336771413,44.975472113619965],[92.13389082231822,45.11507599545646],[90.9455395853343,45.28607330991028],[90.58576826371828,45.71971609148753],[90.97080936072501,46.88814606382293],[90.28082563676392,47.69354909930793],[88.85429772334676,48.06908173277296],[88.01383222855173,48.599462795600616],[87.7512642760767,49.29719798440548]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Malaysia","sov_a3":"MYS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Malaysia","adm0_a3":"MYS","geou_dif":0,"geounit":"Malaysia","gu_a3":"MYS","su_dif":0,"subunit":"Malaysia","su_a3":"MYS","brk_diff":0,"name":"Malaysia","name_long":"Malaysia","brk_a3":"MYS","brk_name":"Malaysia","brk_group":null,"abbrev":"Malay.","postal":"MY","formal_en":"Malaysia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Malaysia","name_alt":null,"mapcolor7":2,"mapcolor8":4,"mapcolor9":3,"mapcolor13":6,"pop_est":25715819,"gdp_md_est":384300,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MY","iso_a3":"MYS","iso_n3":"458","un_a3":"458","wb_a2":"MY","wb_a3":"MYS","woe_id":-99,"adm0_a3_is":"MYS","adm0_a3_us":"MYS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":8,"long_len":8,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"MYS.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[101.07551557821333,6.204867051615892],[101.15421878459384,5.691384182147715],[101.81428185425804,5.810808417174228],[102.14118696493645,6.221636053894656],[102.37114708863524,6.12820506431096],[102.9617053568667,5.524495144061078],[103.38121463421217,4.855001125503748],[103.4385754740562,4.181605536308382],[103.33212202353488,3.726697902842971],[103.42942874554055,3.38286876058902],[103.50244754436889,2.791018581550205],[103.85467410687036,2.515454006353763],[104.24793175661151,1.631141058759056],[104.22881147666354,1.293048000489534],[103.51970747275443,1.226333726400682],[102.57361535035479,1.967115383304744],[101.39063846232918,2.760813706875624],[101.27353966675585,3.270291652841181],[100.6954354187067,3.93913971599487],[100.55740766805509,4.76728038168828],[100.19670617065773,5.31249258058368],[100.30626020711652,6.040561835143876],[100.08575687052709,6.46448944745029],[100.25959638875692,6.642824815289572],[101.07551557821333,6.204867051615892]]],[[[118.61832075406485,4.478202419447541],[117.88203494677019,4.137551377779488],[117.01521447150637,4.306094061699469],[115.86551720587677,4.306559149590157],[115.51907840379201,3.169238389494396],[115.13403730678523,2.821481838386219],[114.6213554220175,1.430688177898887],[113.80584964401956,1.217548732911041],[112.8598091980522,1.497790025229946],[112.38025190638368,1.410120957846758],[111.79754845586044,0.904441229654651],[111.15913781132659,0.976478176269509],[110.51406090702713,0.773131415200993],[109.83022667850886,1.338135687664192],[109.66326012577375,2.006466986494985],[110.39613528853707,1.663774725751395],[111.1688529805975,1.850636704918784],[111.3700810079421,2.697303371588873],[111.79692833867287,2.885896511238073],[112.99561486211527,3.102394924324869],[113.71293541875873,3.893509426281128],[114.20401655482843,4.52587392823682],[114.65959598191355,4.00763682699781],[114.8695573263154,4.348313706881952],[115.34746097215069,4.316636053887009],[115.40570031134362,4.955227565933825],[115.45071048386981,5.447729803891561],[116.22074100145099,6.143191229675621],[116.72510298061978,6.924771429873998],[117.12962609260049,6.928052883324567],[117.64339318244633,6.422166449403306],[117.68907514859237,5.987490139180181],[118.3476912781522,5.708695786965464],[119.18190392463994,5.407835598162251],[119.11069380094172,5.016128241389865],[118.43972700406411,4.96651886638962],[118.61832075406485,4.478202419447541]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Nepal","sov_a3":"NPL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Nepal","adm0_a3":"NPL","geou_dif":0,"geounit":"Nepal","gu_a3":"NPL","su_dif":0,"subunit":"Nepal","su_a3":"NPL","brk_diff":0,"name":"Nepal","name_long":"Nepal","brk_a3":"NPL","brk_name":"Nepal","brk_group":null,"abbrev":"Nepal","postal":"NP","formal_en":"Nepal","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Nepal","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":3,"mapcolor13":12,"pop_est":28563377,"gdp_md_est":31080,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"NP","iso_a3":"NPL","iso_n3":"524","un_a3":"524","wb_a2":"NP","wb_a3":"NPL","woe_id":-99,"adm0_a3_is":"NPL","adm0_a3_us":"NPL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"NPL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[88.12044070836987,27.876541652939594],[88.04313276566123,27.445818589786825],[88.17480431514092,26.81040517832595],[88.06023766474982,26.41461538340249],[87.22747195836628,26.397898057556077],[86.02439293817918,26.63098460540857],[85.25177859898338,26.72619843190634],[84.6750179381738,27.234901231387536],[83.30424889519955,27.36450572357556],[81.99998742058497,27.925479234319994],[81.05720258985203,28.416095282499043],[80.08842451367627,28.79447011974014],[80.4767212259174,29.72986522065534],[81.11125613802932,30.183480943313402],[81.52580447787474,30.42271698660863],[82.32751264845088,30.115268052688133],[83.33711510613719,29.463731594352193],[83.89899295444673,29.320226141877658],[84.23457970575015,28.839893703724698],[85.01163821812304,28.642773952747344],[85.82331994013151,28.203575954698703],[86.9545170430006,27.974261786403517],[88.12044070836987,27.876541652939594]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Oman","sov_a3":"OMN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Oman","adm0_a3":"OMN","geou_dif":0,"geounit":"Oman","gu_a3":"OMN","su_dif":0,"subunit":"Oman","su_a3":"OMN","brk_diff":0,"name":"Oman","name_long":"Oman","brk_a3":"OMN","brk_name":"Oman","brk_group":null,"abbrev":"Oman","postal":"OM","formal_en":"Sultanate of Oman","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Oman","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":6,"pop_est":3418085,"gdp_md_est":66980,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"OM","iso_a3":"OMN","iso_n3":"512","un_a3":"512","wb_a2":"OM","wb_a3":"OMN","woe_id":-99,"adm0_a3_is":"OMN","adm0_a3_us":"OMN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"OMN.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[58.86114139184659,21.114034532144302],[58.48798587426696,20.42898590746711],[58.034318475176605,20.48143748624335],[57.82637251163411,20.24300242764863],[57.665762160070955,19.736004950433113],[57.788700392493375,19.06757029873765],[57.69439090356068,18.944709580963803],[57.234263950433814,18.947991034414258],[56.609650913321985,18.57426707607948],[56.512189162019496,18.087113348863937],[56.28352094912801,17.87606679938395],[55.6614917336307,17.88412832282154],[55.2699394061552,17.632309068263197],[55.274900343655105,17.228354397037663],[54.79100223167413,16.950696926333364],[54.239252964093765,17.044980577049984],[53.570508253804604,16.707662665264678],[53.10857262554751,16.65105113368898],[52.78218427919207,17.349742336491232],[52.00000980002224,19.000003363516072],[54.99998172386242,19.99999400479612],[55.66665937685988,22.00000112557231],[55.2083410988632,22.70832998299701],[55.234489373602884,23.11099274341535],[55.5258410988645,23.524869289640918],[55.52863162620829,23.933604030853502],[55.98121382022052,24.130542914317854],[55.80411868675625,24.269604193615294],[55.886232537668064,24.920830593357493],[56.396847365144,24.924732163995515],[56.84514041527606,24.241673081961494],[57.40345258975744,23.87859446867884],[58.13694786970834,23.74793060962884],[58.72921146020544,23.565667832935418],[59.18050174341036,22.99239533130546],[59.45009769067703,22.6602709009656],[59.80806033716286,22.533611965418203],[59.8061483091681,22.31052480721419],[59.44219119653641,21.714540513592084],[59.282407667889885,21.433885809814882],[58.86114139184659,21.114034532144302]]],[[[56.39142133975341,25.89599070892126],[56.26104170108093,25.71460643157675],[56.07082075381456,26.05546417897395],[56.36201744977936,26.395934353128947],[56.48567915225382,26.309117946878672],[56.39142133975341,25.89599070892126]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Pakistan","sov_a3":"PAK","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Pakistan","adm0_a3":"PAK","geou_dif":0,"geounit":"Pakistan","gu_a3":"PAK","su_dif":0,"subunit":"Pakistan","su_a3":"PAK","brk_diff":0,"name":"Pakistan","name_long":"Pakistan","brk_a3":"PAK","brk_name":"Pakistan","brk_group":null,"abbrev":"Pak.","postal":"PK","formal_en":"Islamic Republic of Pakistan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Pakistan","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":3,"mapcolor13":11,"pop_est":176242949,"gdp_md_est":427300,"pop_year":-99,"lastcensus":1998,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PK","iso_a3":"PAK","iso_n3":"586","un_a3":"586","wb_a2":"PK","wb_a3":"PAK","woe_id":-99,"adm0_a3_is":"PAK","adm0_a3_us":"PAK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Southern Asia","region_wb":"South Asia","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"PAK.geojson"},"geometry":{"type":"Polygon","coordinates":[[[75.15802778514092,37.13303091078912],[75.89689741405013,36.666806138651836],[76.19284834178569,35.89840342868782],[77.83745079947457,35.494009507787766],[76.87172163280403,34.65354401299274],[75.75706098826834,34.50492259372132],[74.24020267120497,34.74888703057125],[73.74994835805195,34.31769887952785],[74.10429365427734,33.44147329358685],[74.45155927927871,32.7648996038055],[75.25864179881322,32.2711054550405],[74.40592898956501,31.69263947196528],[74.42138024282026,30.979814764931177],[73.45063846221743,29.97641347911987],[72.8237516620847,28.961591701772054],[71.77766564320032,27.913180243434525],[70.61649620960193,27.989196275335868],[69.51439293811312,26.940965684511372],[70.16892662952202,26.491871649678842],[70.28287316272558,25.72222870533983],[70.84469933460284,25.21510203704352],[71.04324018746823,24.3565239527302],[68.84259931831878,24.35913361256094],[68.1766451353734,23.69196503345671],[67.44366661974547,23.94484365487699],[67.14544192898907,24.663611151624647],[66.37282758979326,25.425140896093847],[64.53040774929113,25.23703868255143],[62.9057007180346,25.21840932871021],[61.49736290878419,25.0782370061185],[61.87418745305655,26.239974880472104],[63.31663170761959,26.756532497661667],[63.233897739520295,27.21704702403071],[62.755425652929866,27.378923448184985],[62.72783043808598,28.25964488373539],[61.77186811711863,28.699333807890795],[61.36930870956494,29.303276272085924],[60.874248488208785,29.829238999952604],[62.54985680527278,29.31857249604431],[63.55026085801117,29.468330796826162],[64.14800215033125,29.340819200145972],[64.35041873561852,29.560030625928093],[65.0468620136161,29.472180691031905],[66.34647260932442,29.887943427036177],[66.38145755398602,30.73889923758645],[66.93889122911847,31.304911200479353],[67.68339358914747,31.30315420178142],[67.79268924344478,31.58293040620963],[68.55693200060932,31.713310044882018],[68.92667687365767,31.620189113892064],[69.31776411324255,31.90141225842444],[69.26252200712256,32.5019440780883],[69.68714725126485,33.105498969041236],[70.3235941913716,33.35853261975839],[69.9305432473596,34.02012014417511],[70.8818030129884,33.98885590263851],[71.15677330921346,34.34891144463215],[71.11501875192162,34.733125718722235],[71.6130762063507,35.153203436822864],[71.49876793812109,35.650563259416],[71.26234826038575,36.074387518857804],[71.84629194528392,36.50994232842986],[72.92002485544447,36.72000702569632],[74.06755171091783,36.83617564548845],[74.57589277537298,37.02084137628346],[75.15802778514092,37.13303091078912]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Israel","sov_a3":"ISR","adm0_dif":1,"level":2,"type":"Disputed","admin":"Palestine","adm0_a3":"PSX","geou_dif":0,"geounit":"Palestine","gu_a3":"PSX","su_dif":0,"subunit":"Palestine","su_a3":"PSX","brk_diff":0,"name":"Palestine","name_long":"Palestine","brk_a3":"PSX","brk_name":"Palestine","brk_group":null,"abbrev":"Pal.","postal":"PAL","formal_en":"West Bank and Gaza","formal_fr":null,"note_adm0":"Partial self-admin.","note_brk":"Partial self-admin.","name_sort":"Palestine (West Bank and Gaza)","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":5,"mapcolor13":8,"pop_est":4119083,"gdp_md_est":11950.77,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PS","iso_a3":"PSE","iso_n3":"275","un_a3":"275","wb_a2":"GZ","wb_a3":"WBG","woe_id":-99,"adm0_a3_is":"PSE","adm0_a3_us":"PSX","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":-99,"filename":"PSE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[35.54566531753454,32.393992011030576],[35.5452519060762,31.78250478772084],[35.397560662586045,31.48908600516758],[34.92740848159457,31.353435370401414],[34.970506626125996,31.616778469360806],[35.22589155451242,31.754341132121766],[34.97464074070933,31.86658234305972],[35.183930291491436,32.53251068778894],[35.54566531753454,32.393992011030576]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"North Korea","sov_a3":"PRK","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"North Korea","adm0_a3":"PRK","geou_dif":0,"geounit":"North Korea","gu_a3":"PRK","su_dif":0,"subunit":"North Korea","su_a3":"PRK","brk_diff":0,"name":"North Korea","name_long":"Dem. Rep. Korea","brk_a3":"PRK","brk_name":"Dem. Rep. Korea","brk_group":null,"abbrev":"N.K.","postal":"KP","formal_en":"Democratic People\'s Republic of Korea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Korea, Dem. Rep.","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":3,"mapcolor13":9,"pop_est":22665345,"gdp_md_est":40000,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"KP","iso_a3":"PRK","iso_n3":"408","un_a3":"408","wb_a2":"KP","wb_a3":"PRK","woe_id":-99,"adm0_a3_is":"PRK","adm0_a3_us":"PRK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":15,"long_len":15,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"PRK.geojson"},"geometry":{"type":"Polygon","coordinates":[[[130.6400159038524,42.39500946712528],[130.78000735893113,42.22000722916885],[130.40003055228902,42.28000356705971],[129.96594852103726,41.94136790625105],[129.66736209525482,41.60110443782523],[129.70518924369247,40.88282786718433],[129.18811486218,40.66180776627199],[129.01039961152821,40.485436102859815],[128.63336836152672,40.18984691015031],[127.96741417858135,40.02541250259756],[127.53343550019417,39.7568500839767],[127.5021195822253,39.32393077245153],[127.38543419811029,39.213472398427655],[127.78334272675772,39.05089834243742],[128.34971642467661,38.61224294692785],[128.20574588431145,38.37039724380189],[127.780035435091,38.30453563084589],[127.07330854706737,38.2561148137884],[126.68371992401892,37.80477285415118],[126.23733890188176,37.84037791600028],[126.17475874237624,37.74968577732804],[125.6891036316972,37.940010077459014],[125.56843916229569,37.75208873142962],[125.2753304383362,37.669070542952724],[125.24008711151315,37.85722443292744],[124.98103315643398,37.94882090916478],[124.71216067921938,38.10834605564979],[124.98599409393398,38.54847422947968],[125.2219486837787,38.66585724543067],[125.13285851450752,38.84855927179859],[125.3865897970606,39.387957872061165],[125.3211157573468,39.5513845891842],[124.7374821310424,39.66034434667162],[124.26562462778531,39.928493353834156],[125.07994184784063,40.56982371679245],[126.18204511932943,41.10733612727637],[126.86908328664985,41.81656932226619],[127.34378299368302,41.50315176041597],[128.20843305879066,41.46677155208249],[128.0522152039723,41.99428457291795],[129.59666873587952,42.42498179785456],[129.99426720593323,42.985386867843786],[130.6400159038524,42.39500946712528]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Qatar","sov_a3":"QAT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Qatar","adm0_a3":"QAT","geou_dif":0,"geounit":"Qatar","gu_a3":"QAT","su_dif":0,"subunit":"Qatar","su_a3":"QAT","brk_diff":0,"name":"Qatar","name_long":"Qatar","brk_a3":"QAT","brk_name":"Qatar","brk_group":null,"abbrev":"Qatar","postal":"QA","formal_en":"State of Qatar","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Qatar","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":2,"mapcolor13":4,"pop_est":833285,"gdp_md_est":91330,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"QA","iso_a3":"QAT","iso_n3":"634","un_a3":"634","wb_a2":"QA","wb_a3":"QAT","woe_id":-99,"adm0_a3_is":"QAT","adm0_a3_us":"QAT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"QAT.geojson"},"geometry":{"type":"Polygon","coordinates":[[[50.81010827006958,24.754742539971378],[50.74391076030369,25.482424221289396],[51.01335167827349,26.00699168548419],[51.28646162293606,26.11458201751587],[51.58907881043726,25.80111277923338],[51.60670047384881,25.21567047779874],[51.38960778179063,24.62738597258806],[51.11241539897702,24.556330878186724],[50.81010827006958,24.754742539971378]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Saudi Arabia","sov_a3":"SAU","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Saudi Arabia","adm0_a3":"SAU","geou_dif":0,"geounit":"Saudi Arabia","gu_a3":"SAU","su_dif":0,"subunit":"Saudi Arabia","su_a3":"SAU","brk_diff":0,"name":"Saudi Arabia","name_long":"Saudi Arabia","brk_a3":"SAU","brk_name":"Saudi Arabia","brk_group":null,"abbrev":"Saud.","postal":"SA","formal_en":"Kingdom of Saudi Arabia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Saudi Arabia","name_alt":null,"mapcolor7":6,"mapcolor8":1,"mapcolor9":6,"mapcolor13":7,"pop_est":28686633,"gdp_md_est":576500,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"SA","iso_a3":"SAU","iso_n3":"682","un_a3":"682","wb_a2":"SA","wb_a3":"SAU","woe_id":-99,"adm0_a3_is":"SAU","adm0_a3_us":"SAU","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":12,"long_len":12,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"SAU.geojson"},"geometry":{"type":"Polygon","coordinates":[[[42.77933230975097,16.347891343648683],[42.649572788266084,16.774635321514964],[42.347989129410706,17.075805568912003],[42.270887892431226,17.474721787989125],[41.75438195167396,17.833046169500975],[41.22139122901558,18.671599636301206],[40.93934126156654,19.486485297111756],[40.247652215339826,20.17463450772649],[39.80168460466095,20.338862209550054],[39.139399448408284,21.29190481209293],[39.023695916506796,21.986875311770195],[39.06632897314759,22.57965566659027],[38.49277225114008,23.688451036060854],[38.02386030452362,24.07868561451293],[37.483634881344386,24.285494696545015],[37.154817742671185,24.85848297779731],[37.209491408036,25.084541530858104],[36.93162723160259,25.602959499610176],[36.63960371272122,25.82622752532722],[36.249136590323815,26.57013560638488],[35.64018151219639,27.37652049408342],[35.13018680190788,28.06335195567472],[34.63233605320798,28.058546047471566],[34.787778761541944,28.6074272730597],[34.832220493312946,28.957483425404845],[34.95603722508426,29.35655467377884],[36.06894087092206,29.197494615184457],[36.50121422704358,29.5052536076987],[36.74052778498725,29.86528331147619],[37.503581984209035,30.003776150018403],[37.66811974462638,30.3386652694859],[37.998848911294374,30.50849986421313],[37.00216556168101,31.508412990844743],[39.00488569515255,32.01021698661498],[39.19546837744497,32.16100881604267],[40.399994337736246,31.889991766887935],[41.889980910007836,31.190008653278365],[44.70949873228474,29.178891099559383],[46.568713413281756,29.09902517345229],[47.45982181172283,29.002519436147224],[47.708850538937384,28.526062730416143],[48.416094191283946,28.55200429942667],[48.80759484232718,27.689627997339883],[49.29955447774582,27.46121816660981],[49.470913527225655,27.10999929453808],[50.15242231629088,26.689663194275997],[50.212935418504685,26.277026882425375],[50.11330325704594,25.943972276304248],[50.239858839728754,25.608049628190926],[50.52738650900073,25.3278083358721],[50.66055667501689,24.99989553476402],[50.81010827006958,24.754742539971378],[51.11241539897702,24.556330878186724],[51.38960778179063,24.62738597258806],[51.57951867046327,24.245497137951105],[51.61770755392698,24.014219265228828],[52.000733270074335,23.00115448657894],[55.0068030129249,22.496947536707136],[55.20834109886319,22.708329982997046],[55.666659376859826,22.00000112557234],[54.99998172386236,19.999994004796108],[52.00000980002224,19.000003363516058],[49.11667158386487,18.616667588774945],[48.18334354024134,18.166669216377315],[47.46669477721763,17.116681626854884],[47.000004917189756,16.949999294497445],[46.74999433776165,17.283338120996177],[46.366658563020536,17.233315334537636],[45.39999922056875,17.333335069238558],[45.21665123879718,17.43332896572333],[44.06261315285508,17.410358791569593],[43.79151858905192,17.31997671149111],[43.380794305196105,17.57998668056767],[43.11579756040335,17.088440456607373],[43.21837527850275,16.66688996018641],[42.77933230975097,16.347891343648683]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Philippines","sov_a3":"PHL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Philippines","adm0_a3":"PHL","geou_dif":0,"geounit":"Philippines","gu_a3":"PHL","su_dif":0,"subunit":"Philippines","su_a3":"PHL","brk_diff":0,"name":"Philippines","name_long":"Philippines","brk_a3":"PHL","brk_name":"Philippines","brk_group":null,"abbrev":"Phil.","postal":"PH","formal_en":"Republic of the Philippines","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Philippines","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":2,"mapcolor13":8,"pop_est":97976603,"gdp_md_est":317500,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PH","iso_a3":"PHL","iso_n3":"608","un_a3":"608","wb_a2":"PH","wb_a3":"PHL","woe_id":-99,"adm0_a3_is":"PHL","adm0_a3_us":"PHL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":11,"long_len":11,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"PHL.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[126.37681359263748,8.414706325713354],[126.4785128113879,7.750354112168978],[126.53742394420063,7.189380601424574],[126.19677290253256,6.27429433840004],[125.83142052622911,7.293715318221857],[125.3638521668523,6.786485297060992],[125.68316084198372,6.049656887227258],[125.39651167206064,5.58100332277229],[124.21978763234236,6.161355495626182],[123.93871951710695,6.885135606306122],[124.24366214406135,7.360610459823661],[123.61021243702757,7.833527329942754],[123.2960714051252,7.418875637232787],[122.82550581267542,7.457374579290217],[122.08549930225577,6.899424139834849],[121.91992801319263,7.192119452336072],[122.31235884001714,8.034962063016508],[122.94239790251966,8.316236883981174],[123.48768761606352,8.693009751821194],[123.84115441293984,8.240324204944386],[124.60146976125023,8.514157619659017],[124.76461225799564,8.96040945071546],[125.47139082245157,8.986996975129642],[125.41211795461278,9.760334784377548],[126.22271447154318,9.28607432701885],[126.3066369975851,8.782487494334575],[126.37681359263748,8.414706325713354]]],[[[123.98243777882583,10.278778591345812],[123.62318322153278,9.950090643753299],[123.30992068897936,9.318268744336676],[122.99588300994164,9.0221886255204],[122.38005496631948,9.713360907424203],[122.5860889018671,9.981044826696104],[122.83708133350873,10.261156927934238],[122.94741051645192,10.881868394408029],[123.49884972543848,10.940624497923949],[123.33777428598475,10.267383938025446],[124.07793582570125,11.23272553145371],[123.98243777882583,10.278778591345812]]],[[[118.50458092659035,9.31638255455809],[117.1742745301007,8.367499904814665],[117.66447716682138,9.066888739452935],[118.38691369026175,9.684499619989225],[118.98734215706108,10.376292019080509],[119.51149620979756,11.369668077027214],[119.68967654833992,10.554291490109875],[119.029458449379,10.003653265823871],[118.50458092659035,9.31638255455809]]],[[[121.88354780485913,11.89175507247198],[122.48382124236147,11.582187404827508],[123.12021650603597,11.58366018314787],[123.10083784392647,11.16593374271649],[122.6377136577267,10.741308498574227],[122.00261030485957,10.441016750526087],[121.96736697803655,10.905691229694623],[122.03837039600555,11.41584096928004],[121.88354780485913,11.89175507247198]]],[[[125.50255171112352,12.162694606978349],[125.78346479706218,11.046121934447768],[125.01188398651229,11.31145457605038],[125.03276126515814,10.975816148314706],[125.27744917206027,10.358722032101312],[124.80181928924573,10.134678859899893],[124.76016808481849,10.837995103392302],[124.45910119028606,10.889929917845635],[124.30252160044172,11.495370998577227],[124.8910128113816,11.415582587118593],[124.87799035044398,11.79418996830499],[124.26676150929572,12.557760931849685],[125.22711632700785,12.535720933477194],[125.50255171112352,12.162694606978349]]],[[[121.52739383350351,13.06959015548452],[121.26219038298157,12.205560207564403],[120.83389611214656,12.70449616134242],[120.3234363139675,13.46641347905387],[121.18012820850217,13.429697373910443],[121.52739383350351,13.06959015548452]]],[[[121.32130822152358,18.504064642811016],[121.9376013530364,18.218552354398383],[122.24600630095429,18.478949896717097],[122.336956821788,18.224882717354177],[122.1742794129332,17.810282701076375],[122.51565392465336,17.093504746971973],[122.2523108256939,16.262444362854126],[121.66278608610828,15.931017564350128],[121.5050696147534,15.124813544164622],[121.72882856657728,14.328376369682246],[122.25892540902734,14.218202216035976],[122.70127566944566,14.33654124598442],[123.95029503794026,13.78213064214107],[123.85510704965863,13.237771104378467],[124.1812886902849,12.997527370653472],[124.07741906137825,12.536676947474575],[123.29803510955227,13.027525539598981],[122.92865197152993,13.552919826710408],[122.67135501514869,13.185836289925135],[122.03464969288055,13.784481919810347],[121.1263847189186,13.63668732345556],[120.62863732308331,13.857655747935652],[120.67938357959385,14.271015529838323],[120.99181928923055,14.525392767795083],[120.69333621631272,14.756670640517285],[120.564145135583,14.396279201713822],[120.0704285014664,14.970869452367097],[119.92092858284613,15.406346747290739],[119.88377322802826,16.363704331929966],[120.28648766487882,16.03462881109533],[120.39004723519176,17.59908112229951],[120.71586714079191,18.50522736253754],[121.32130822152358,18.504064642811016]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Syria","sov_a3":"SYR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Syria","adm0_a3":"SYR","geou_dif":0,"geounit":"Syria","gu_a3":"SYR","su_dif":0,"subunit":"Syria","su_a3":"SYR","brk_diff":0,"name":"Syria","name_long":"Syria","brk_a3":"SYR","brk_name":"Syria","brk_group":null,"abbrev":"Syria","postal":"SYR","formal_en":"Syrian Arab Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Syrian Arab Republic","name_alt":null,"mapcolor7":2,"mapcolor8":6,"mapcolor9":2,"mapcolor13":6,"pop_est":20178485,"gdp_md_est":98830,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SY","iso_a3":"SYR","iso_n3":"760","un_a3":"760","wb_a2":"SY","wb_a3":"SYR","woe_id":-99,"adm0_a3_is":"SYR","adm0_a3_us":"SYR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"SYR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[38.792340529136084,33.378686428352225],[36.834062127435544,32.312937526980775],[35.71991824722275,32.709192409794866],[35.700797967274745,32.71601369885738],[35.836396925608625,32.86812327730851],[35.82110070165024,33.2774264592763],[36.066460402172055,33.82491242119255],[36.61175011571589,34.201788641897174],[36.4481942075121,34.59393524834407],[35.99840254084364,34.644914048800004],[35.905023227692226,35.410009467097325],[36.149762811026534,35.82153473565367],[36.417550083163036,36.04061697035506],[36.6853890317318,36.25969920505646],[36.7394942563414,36.81752045343109],[37.06676110204583,36.62303620050062],[38.1677274920242,36.90121043552777],[38.6998913917659,36.71292735447234],[39.52258019385255,36.71605377862599],[40.67325931169569,37.09127635349729],[41.21208947120305,37.074352321921694],[42.34959109881177,37.2298725449041],[41.83706424334096,36.605853786763575],[41.289707472505455,36.35881460219227],[41.383965285005814,35.628316555314356],[41.006158888519934,34.41937226006212],[38.792340529136084,33.378686428352225]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Thailand","sov_a3":"THA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Thailand","adm0_a3":"THA","geou_dif":0,"geounit":"Thailand","gu_a3":"THA","su_dif":0,"subunit":"Thailand","su_a3":"THA","brk_diff":0,"name":"Thailand","name_long":"Thailand","brk_a3":"THA","brk_name":"Thailand","brk_group":null,"abbrev":"Thai.","postal":"TH","formal_en":"Kingdom of Thailand","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Thailand","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":8,"mapcolor13":1,"pop_est":65905410,"gdp_md_est":547400,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"TH","iso_a3":"THA","iso_n3":"764","un_a3":"764","wb_a2":"TH","wb_a3":"THA","woe_id":-99,"adm0_a3_is":"THA","adm0_a3_us":"THA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"THA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[102.5849324890267,12.186594956913282],[101.68715783081996,12.645740057826572],[100.83180952352487,12.627084865769206],[100.9784672383692,13.412721665902566],[100.0977974792511,13.406856390837433],[100.01873253784456,12.307001044153354],[99.47892052612363,10.846366685423547],[99.15377241414316,9.963061428258554],[99.22239871622676,9.239255479362427],[99.87383182169813,9.20786204674512],[100.27964684448622,8.295152899606052],[100.45927412313276,7.429572658717177],[101.01732791545273,6.856868597842478],[101.62307905477806,6.74062246340192],[102.14118696493638,6.221636053894628],[101.81428185425798,5.810808417174242],[101.15421878459387,5.691384182147715],[101.07551557821336,6.204867051615921],[100.25959638875696,6.642824815289543],[100.0857568705271,6.46448944745029],[99.69069054565574,6.848212795433597],[99.51964155476963,7.34345388430276],[98.9882528015123,7.907993068875327],[98.503786248776,8.382305202666288],[98.339661899817,7.794511623562386],[98.15000939330581,8.350007432483878],[98.25915001830624,8.973922837759801],[98.55355065307305,9.932959906448545],[99.03812055867398,10.960545762572437],[99.58728600463972,11.892762762901697],[99.19635379435167,12.80474843998867],[99.21201175333609,13.269293728076464],[99.09775516153876,13.827502549693278],[98.43081912637987,14.622027696180835],[98.1920740091914,15.12370250087035],[98.53737592976572,15.308497422746084],[98.90334842325676,16.177824204976115],[98.49376102091135,16.83783559820793],[97.85912275593486,17.567946071843664],[97.37589643757354,18.445437730375815],[97.7977828308044,18.627080389881755],[98.25372399291561,19.708203029860044],[98.95967573445488,19.752980658440947],[99.54330936075931,20.186597601802063],[100.11598758341783,20.417849636308187],[100.54888105672688,20.109237982661128],[100.60629357300316,19.508344427971224],[101.2820146016517,19.462584947176765],[101.03593143107777,18.408928330961615],[101.05954756063517,17.51249725999449],[102.11359175009248,18.109101670804165],[102.41300499879162,17.932781683824288],[102.9987056823877,17.9616946476916],[103.20019209189373,18.309632066312773],[103.95647667848529,18.24095408779688],[104.7169470560925,17.42885895433008],[104.7793205098688,16.44186493577145],[105.58903852745016,15.570316066952858],[105.54433841351769,14.723933620660416],[105.21877689007887,14.273211778210694],[104.28141808473661,14.416743068901367],[102.98842207236163,14.225721136934467],[102.348099399833,13.394247341358223],[102.5849324890267,12.186594956913282]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Tajikistan","sov_a3":"TJK","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Tajikistan","adm0_a3":"TJK","geou_dif":0,"geounit":"Tajikistan","gu_a3":"TJK","su_dif":0,"subunit":"Tajikistan","su_a3":"TJK","brk_diff":0,"name":"Tajikistan","name_long":"Tajikistan","brk_a3":"TJK","brk_name":"Tajikistan","brk_group":null,"abbrev":"Tjk.","postal":"TJ","formal_en":"Republic of Tajikistan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Tajikistan","name_alt":null,"mapcolor7":3,"mapcolor8":6,"mapcolor9":2,"mapcolor13":5,"pop_est":7349145,"gdp_md_est":13160,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"5. Low income","wikipedia":-99,"fips_10":null,"iso_a2":"TJ","iso_a3":"TJK","iso_n3":"762","un_a3":"762","wb_a2":"TJ","wb_a3":"TJK","woe_id":-99,"adm0_a3_is":"TJK","adm0_a3_us":"TJK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Central Asia","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TJK.geojson"},"geometry":{"type":"Polygon","coordinates":[[[71.01419803252017,40.24436554621823],[70.64801883329997,39.93575389257117],[69.55960981636852,40.10321137141298],[69.46488691597753,39.5266832545487],[70.54916181832562,39.6041979029865],[71.784693637992,39.27946320246437],[73.6753792662548,39.4312368841056],[73.92885216664644,38.50581533462274],[74.25751427602273,38.60650686294345],[74.86481570831681,38.3788463404816],[74.8299857929521,37.9900070257014],[74.98000247589542,37.419990139305895],[73.9486959166465,37.4215662704908],[73.26005577992501,37.495256862939],[72.63688968291729,37.047558091778356],[72.1930408059624,36.948287665345674],[71.8446382994506,36.73817129164692],[71.44869347523024,37.06564484308051],[71.54191775908478,37.905774441065645],[71.23940392444817,37.95326508234188],[71.34813113799026,38.258905341132156],[70.80682050973289,38.486281643216415],[70.3763041523093,38.13839590102752],[70.27057417184014,37.735164699854025],[70.11657840361033,37.58822276463209],[69.51878543485796,37.60899669041341],[69.19627282092438,37.15114350030743],[68.85944583524594,37.344335842430596],[68.13556237170138,37.0231151393043],[67.82999962755952,37.14499400486468],[68.39203250516596,38.157025254868735],[68.17602501818592,38.901553453113905],[67.44221967964131,39.140143541005486],[67.70142866401736,39.58047842056453],[68.53641645698941,39.53345286717894],[69.0116329283455,40.08615814875666],[69.32949466337283,40.72782440852485],[70.66662234892505,40.96021332454141],[70.45815962105962,40.49649485937029],[70.60140669137269,40.21852733007229],[71.01419803252017,40.24436554621823]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Turkmenistan","sov_a3":"TKM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Turkmenistan","adm0_a3":"TKM","geou_dif":0,"geounit":"Turkmenistan","gu_a3":"TKM","su_dif":0,"subunit":"Turkmenistan","su_a3":"TKM","brk_diff":0,"name":"Turkmenistan","name_long":"Turkmenistan","brk_a3":"TKM","brk_name":"Turkmenistan","brk_group":null,"abbrev":"Turkm.","postal":"TM","formal_en":"Turkmenistan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Turkmenistan","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":1,"mapcolor13":9,"pop_est":4884887,"gdp_md_est":29780,"pop_year":-99,"lastcensus":1995,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"TM","iso_a3":"TKM","iso_n3":"795","un_a3":"795","wb_a2":"TM","wb_a3":"TKM","woe_id":-99,"adm0_a3_is":"TKM","adm0_a3_us":"TKM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Central Asia","region_wb":"Europe & Central Asia","name_len":12,"long_len":12,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"TKM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[61.21081709172574,35.650072333309225],[61.123070509694145,36.49159719496624],[60.37763797388387,36.52738312432837],[59.23476199731681,37.412987982730336],[58.4361544126782,37.522309475243794],[57.33043379092898,38.02922943781094],[56.61936608259282,38.121394354803485],[56.18037479027333,37.93512665460742],[55.51157840355191,37.96411713312317],[54.800303989486565,37.392420762678185],[53.92159793479556,37.19891836196126],[53.73551110211252,37.90613617609169],[53.880928582581845,38.95209300389536],[53.101027866432894,39.29057363540713],[53.35780805849123,39.97528636327445],[52.69397260926982,40.03362905533197],[52.915251092343624,40.87652334244473],[53.858139275941134,40.63103445084218],[54.73684533063215,40.95101491959346],[54.008310988181314,41.55121084244742],[53.72171349469059,42.12319143327003],[52.916749708880076,41.86811656347733],[52.81468875510361,41.13537059179471],[52.50245975119615,41.78331553808637],[52.944293247291654,42.11603424739759],[54.07941775901495,42.32410940202083],[54.75534549339263,42.043971462566574],[55.45525109235377,41.25985911718584],[55.96819135928291,41.30864166926936],[57.0963912290791,41.32231008561057],[56.932215203687804,41.826026109375604],[57.78652998233708,42.17055288346552],[58.62901085799146,42.75155101172305],[59.97642215356978,42.22308197689021],[60.08334069198167,41.425146185871405],[60.46595299667069,41.22032664648255],[61.54717898951356,41.266370347654615],[61.88271406438469,41.084856879229406],[62.374260288345,40.05388621679039],[63.51801476426103,39.36325653742564],[64.17022301621677,38.892406724598246],[65.2159989765074,38.40269501398429],[66.54615034370022,37.97468496352687],[66.51860680528867,37.36278432875879],[66.21738488145932,37.39379018813392],[65.74563073106681,37.66116404881207],[65.58894778835784,37.30521678318564],[64.7461051776774,37.111817735333304],[64.5464791197339,36.31207326918427],[63.9828959491587,36.0079574651466],[63.19353844590035,35.857165635718914],[62.9846623065766,35.40404083916762],[62.230651483005886,35.270663967422294],[61.21081709172574,35.650072333309225]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"East Timor","sov_a3":"TLS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"East Timor","adm0_a3":"TLS","geou_dif":0,"geounit":"East Timor","gu_a3":"TLS","su_dif":0,"subunit":"East Timor","su_a3":"TLS","brk_diff":0,"name":"Timor-Leste","name_long":"Timor-Leste","brk_a3":"TLS","brk_name":"Timor-Leste","brk_group":null,"abbrev":"T.L.","postal":"TL","formal_en":"Democratic Republic of Timor-Leste","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Timor-Leste","name_alt":"East Timor","mapcolor7":2,"mapcolor8":2,"mapcolor9":4,"mapcolor13":3,"pop_est":1131612,"gdp_md_est":2520,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"TL","iso_a3":"TLS","iso_n3":"626","un_a3":"626","wb_a2":"TP","wb_a3":"TMP","woe_id":-99,"adm0_a3_is":"TLS","adm0_a3_us":"TLS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":11,"long_len":11,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TLS.geojson"},"geometry":{"type":"Polygon","coordinates":[[[124.96868248911622,-8.892790215697083],[125.08624637258026,-8.65688730228468],[125.94707238169826,-8.432094821815035],[126.64470421763855,-8.398246758663852],[126.95724328013982,-8.273344821814398],[127.33592817597464,-8.397316582882603],[126.96799197805655,-8.668256117388893],[125.9258850444586,-9.106007175333351],[125.08852013560109,-9.393173109579294],[125.07001997284061,-9.089987481322872],[124.96868248911622,-8.892790215697083]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Turkey","sov_a3":"TUR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Turkey","adm0_a3":"TUR","geou_dif":0,"geounit":"Turkey","gu_a3":"TUR","su_dif":0,"subunit":"Turkey","su_a3":"TUR","brk_diff":0,"name":"Turkey","name_long":"Turkey","brk_a3":"TUR","brk_name":"Turkey","brk_group":null,"abbrev":"Tur.","postal":"TR","formal_en":"Republic of Turkey","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Turkey","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":8,"mapcolor13":4,"pop_est":76805524,"gdp_md_est":902700,"pop_year":-99,"lastcensus":2000,"gdp_year":-99,"economy":"4. Emerging region: MIKT","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"TR","iso_a3":"TUR","iso_n3":"792","un_a3":"792","wb_a2":"TR","wb_a3":"TUR","woe_id":-99,"adm0_a3_is":"TUR","adm0_a3_us":"TUR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"TUR.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[36.91312706884215,41.335358384764305],[38.34766482926452,40.94858612727572],[39.51260664242025,41.102762763018575],[40.373432651538245,41.01367259374734],[41.554084100110714,41.53565623632761],[42.619548781104555,41.58317271581993],[43.58274580259271,41.09214325618257],[43.7526579119685,40.74020091405882],[43.65643639504096,40.25356395116617],[44.400008579288766,40.00500031184231],[44.793989699082005,39.713002631177034],[44.109225294782355,39.428136298168056],[44.4214026222576,38.28128123631453],[44.22575564960053,37.97158437758935],[44.77269900897775,37.17044464776845],[44.29345177590286,37.00151439060635],[43.94225874204736,37.256227525372935],[42.77912560402186,37.38526357680581],[42.34959109881177,37.22987254490411],[41.21208947120303,37.07435232192173],[40.673259311695716,37.09127635349736],[39.52258019385252,36.71605377862602],[38.69989139176593,36.71292735447233],[38.16772749202416,36.90121043552779],[37.06676110204583,36.62303620050062],[36.739494256341374,36.817520453431115],[36.68538903173183,36.259699205056506],[36.41755008316309,36.0406169703551],[36.14976281102659,35.82153473565367],[35.782084995269855,36.274995429014915],[36.160821567537056,36.650605577128374],[35.55093631362834,36.56544281671134],[34.714553256984374,36.795532131490916],[34.02689497247647,36.21996002862397],[32.5091581560641,36.1075637883892],[31.699595167779567,36.64427521417261],[30.62162479017107,36.677864895162315],[30.39109622571712,36.26298065850698],[29.699975620245567,36.144357408181],[28.73290286633539,36.67683136651644],[27.64118655773737,36.658822129862756],[27.048767937943296,37.65336090753601],[26.318218214633045,38.208133246405396],[26.804700148228733,38.98576019953356],[26.17078535330438,39.463612168936464],[27.280019972449395,40.42001373957831],[28.819977654747216,40.46001129817221],[29.24000369641558,41.21999074967269],[31.145933872204434,41.08762156835706],[32.34797936374579,41.73626414648464],[33.51328291192752,42.018960069337304],[35.16770389175187,42.04022492122544],[36.91312706884215,41.335358384764305]]],[[[27.192376743282406,40.690565700842455],[26.35800906749779,40.15199392349649],[26.04335127127254,40.61775360774317],[26.056942172965336,40.82412344010075],[26.29460208507569,40.93626129817417],[26.604195590936282,41.56211456966102],[26.117041863720825,41.82690460872456],[27.135739373490505,42.14148489030131],[27.996720411905414,42.00735871028777],[28.115524529744444,41.622886054036286],[28.988442824018787,41.29993419042819],[28.80643842948675,41.05496206314854],[27.61901736828412,40.99982330989312],[27.192376743282406,40.690565700842455]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Taiwan","sov_a3":"TWN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Taiwan","adm0_a3":"TWN","geou_dif":0,"geounit":"Taiwan","gu_a3":"TWN","su_dif":0,"subunit":"Taiwan","su_a3":"TWN","brk_diff":1,"name":"Taiwan","name_long":"Taiwan","brk_a3":"B77","brk_name":"Taiwan","brk_group":null,"abbrev":"Taiwan","postal":"TW","formal_en":null,"formal_fr":null,"note_adm0":null,"note_brk":"Self admin.; Claimed by China","name_sort":"Taiwan","name_alt":null,"mapcolor7":1,"mapcolor8":5,"mapcolor9":7,"mapcolor13":2,"pop_est":22974347,"gdp_md_est":712000,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"TW","iso_a3":"TWN","iso_n3":"158","un_a3":"-099","wb_a2":"-99","wb_a3":"-99","woe_id":-99,"adm0_a3_is":"TWN","adm0_a3_us":"TWN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Eastern Asia","region_wb":"East Asia & Pacific","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"TWN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[121.77781782438993,24.3942735865194],[121.17563235889274,22.790857245367167],[120.74707970589621,21.970571397382113],[120.22008344938367,22.81486094816674],[120.1061885926124,23.556262722258236],[120.69467980355225,24.538450832613737],[121.49504438688876,25.295458889257386],[121.95124393116144,24.997595933527034],[121.77781782438993,24.3942735865194]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Uzbekistan","sov_a3":"UZB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Uzbekistan","adm0_a3":"UZB","geou_dif":0,"geounit":"Uzbekistan","gu_a3":"UZB","su_dif":0,"subunit":"Uzbekistan","su_a3":"UZB","brk_diff":0,"name":"Uzbekistan","name_long":"Uzbekistan","brk_a3":"UZB","brk_name":"Uzbekistan","brk_group":null,"abbrev":"Uzb.","postal":"UZ","formal_en":"Republic of Uzbekistan","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Uzbekistan","name_alt":null,"mapcolor7":2,"mapcolor8":3,"mapcolor9":5,"mapcolor13":4,"pop_est":27606007,"gdp_md_est":71670,"pop_year":-99,"lastcensus":1989,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"UZ","iso_a3":"UZB","iso_n3":"860","un_a3":"860","wb_a2":"UZ","wb_a3":"UZB","woe_id":-99,"adm0_a3_is":"UZB","adm0_a3_us":"UZB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Central Asia","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":5,"homepart":1,"filename":"UZB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[66.51860680528867,37.36278432875879],[66.54615034370022,37.97468496352687],[65.2159989765074,38.40269501398429],[64.17022301621677,38.892406724598246],[63.51801476426103,39.36325653742564],[62.374260288345,40.05388621679039],[61.88271406438469,41.084856879229406],[61.54717898951356,41.266370347654615],[60.46595299667069,41.22032664648255],[60.08334069198167,41.425146185871405],[59.97642215356978,42.22308197689021],[58.62901085799146,42.75155101172305],[57.78652998233708,42.17055288346552],[56.932215203687804,41.826026109375604],[57.0963912290791,41.32231008561057],[55.96819135928291,41.30864166926936],[55.928917270741096,44.99585846615911],[58.50312706892847,45.586804307632825],[58.689989048095896,45.50001373959862],[60.23997195825833,44.78403677019473],[61.05831994003245,44.40581696225051],[62.01330040878625,43.50447663021565],[63.18578698105657,43.650074978198006],[64.90082441595928,43.72808055274258],[66.09801232286509,42.99766002051309],[66.02339155463562,41.99464630794398],[66.51064863471572,41.987644151368436],[66.7140470722165,41.1684435084615],[67.98585574735182,41.13599070898222],[68.25989586779562,40.6623245305949],[68.63248294462001,40.66868073176681],[69.07002729683532,41.38424428971237],[70.3889648782208,42.08130768489745],[70.96231489449914,42.26615428320549],[71.25924767444822,42.16771067968946],[70.42002241402821,41.51999827734314],[71.1578585142916,41.14358714452912],[71.87011478057047,41.392900092121266],[73.05541710804917,40.866033026689465],[71.77487511585656,40.14584442805378],[71.01419803252017,40.24436554621823],[70.60140669137269,40.21852733007229],[70.45815962105962,40.49649485937029],[70.66662234892505,40.96021332454141],[69.32949466337283,40.72782440852485],[69.0116329283455,40.08615814875666],[68.53641645698941,39.53345286717894],[67.70142866401736,39.58047842056453],[67.44221967964131,39.140143541005486],[68.17602501818592,38.901553453113905],[68.39203250516596,38.157025254868735],[67.82999962755952,37.14499400486468],[67.07578209825962,37.35614390720929],[66.51860680528867,37.36278432875879]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Vietnam","sov_a3":"VNM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Vietnam","adm0_a3":"VNM","geou_dif":0,"geounit":"Vietnam","gu_a3":"VNM","su_dif":0,"subunit":"Vietnam","su_a3":"VNM","brk_diff":0,"name":"Vietnam","name_long":"Vietnam","brk_a3":"VNM","brk_name":"Vietnam","brk_group":null,"abbrev":"Viet.","postal":"VN","formal_en":"Socialist Republic of Vietnam","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Vietnam","name_alt":null,"mapcolor7":5,"mapcolor8":6,"mapcolor9":5,"mapcolor13":4,"pop_est":86967524,"gdp_md_est":241700,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"5. Emerging region: G20","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"VN","iso_a3":"VNM","iso_n3":"704","un_a3":"704","wb_a2":"VN","wb_a3":"VNM","woe_id":-99,"adm0_a3_is":"VNM","adm0_a3_us":"VNM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"South-Eastern Asia","region_wb":"East Asia & Pacific","name_len":7,"long_len":7,"abbrev_len":5,"tiny":2,"homepart":1,"filename":"VNM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[108.05018029178294,21.55237986906012],[106.7150679870901,20.69685069425202],[105.88168216351903,19.752050482659698],[105.66200564984631,19.05816518806057],[106.426816847766,18.004120998603227],[107.36195356651974,16.69745656988705],[108.26949507042963,16.07974233648615],[108.87710656131748,15.27669057867044],[109.33526981001721,13.426028347217722],[109.20013593957398,11.666859239137764],[108.36612999881545,11.008320624226272],[107.22092858279524,10.364483954301832],[106.40511274620343,9.53083974856932],[105.15826378786511,8.599759629750494],[104.79518517458237,9.241038316276502],[105.0762016133856,9.918490505406808],[104.33433475140347,10.48654368737523],[105.19991499229235,10.889309800658097],[106.24967003786946,10.961811835163587],[105.81052371625313,11.567614650921227],[107.49140302941089,12.337205918827946],[107.61454796756243,13.535530707244206],[107.38272749230109,14.202440904186972],[107.5645251811039,15.202173163305558],[107.3127059265456,15.90853831630318],[106.55600792849569,16.604283962464805],[105.92576216026403,17.48531545660896],[105.09459842328152,18.66697459561108],[103.8965320170267,19.265180975821806],[104.18338789267894,19.62466807706022],[104.8225736836971,19.886641750563882],[104.43500044150805,20.75873322192153],[103.20386111858645,20.766562201413745],[102.75489627483466,21.675137233969465],[102.17043582561358,22.464753119389304],[102.7069922221001,22.708795070887675],[103.50451460166056,22.70375661873921],[104.47685835166448,22.819150092046968],[105.32920942588663,23.352063300056912],[105.81124718630521,22.976892401617903],[106.72540327354845,22.79426788989842],[106.56727339073532,22.21820486092477],[107.04342003787262,21.811898912029914],[108.05018029178294,21.55237986906012]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Yemen","sov_a3":"YEM","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Yemen","adm0_a3":"YEM","geou_dif":0,"geounit":"Yemen","gu_a3":"YEM","su_dif":0,"subunit":"Yemen","su_a3":"YEM","brk_diff":0,"name":"Yemen","name_long":"Yemen","brk_a3":"YEM","brk_name":"Yemen","brk_group":null,"abbrev":"Yem.","postal":"YE","formal_en":"Republic of Yemen","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Yemen, Rep.","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":3,"mapcolor13":11,"pop_est":23822783,"gdp_md_est":55280,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"YE","iso_a3":"YEM","iso_n3":"887","un_a3":"887","wb_a2":"RY","wb_a3":"YEM","woe_id":-99,"adm0_a3_is":"YEM","adm0_a3_us":"YEM","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Asia","region_un":"Asia","subregion":"Western Asia","region_wb":"Middle East & North Africa","name_len":5,"long_len":5,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"YEM.geojson"},"geometry":{"type":"Polygon","coordinates":[[[53.10857262554751,16.65105113368895],[52.38520592632588,16.382411200419654],[52.19172936382509,15.93843313238402],[52.1681649107,15.597420355689948],[51.172515089732485,15.175249742081492],[49.57457645040315,14.70876658778275],[48.67923058451416,14.00320241948566],[48.23894738138742,13.948089504446372],[47.938914015500785,14.007233181204427],[47.354453566279716,13.592219753468383],[46.717076450391744,13.39969920496502],[45.87759280781027,13.347764390511685],[45.62505008319987,13.290946153206763],[45.406458774605255,13.026905422411433],[45.14435591002086,12.95393830001531],[44.98953331887441,12.699586900274708],[44.49457645038285,12.721652736863346],[44.175112745954486,12.585950425664876],[43.48295861183713,12.636800035040084],[43.22287112811213,13.220950425667425],[43.25144819516953,13.767583726450852],[43.08794396339806,14.06263031662131],[42.89224531430872,14.802249253798749],[42.60487267433362,15.213335272680595],[42.80501549660005,15.261962795467255],[42.70243777850066,15.718885809791999],[42.823670688657415,15.911742255105265],[42.77933230975097,16.347891343648683],[43.21837527850275,16.66688996018641],[43.11579756040335,17.088440456607373],[43.380794305196105,17.57998668056767],[43.79151858905192,17.31997671149111],[44.06261315285508,17.410358791569593],[45.21665123879718,17.43332896572333],[45.39999922056875,17.333335069238558],[46.366658563020536,17.233315334537636],[46.74999433776165,17.283338120996177],[47.000004917189756,16.949999294497445],[47.46669477721763,17.116681626854884],[48.18334354024134,18.166669216377315],[49.11667158386487,18.616667588774945],[52.00000980002224,19.000003363516058],[52.78218427919205,17.349742336491232],[53.10857262554751,16.65105113368895]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Albania","sov_a3":"ALB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Albania","adm0_a3":"ALB","geou_dif":0,"geounit":"Albania","gu_a3":"ALB","su_dif":0,"subunit":"Albania","su_a3":"ALB","brk_diff":0,"name":"Albania","name_long":"Albania","brk_a3":"ALB","brk_name":"Albania","brk_group":null,"abbrev":"Alb.","postal":"AL","formal_en":"Republic of Albania","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Albania","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":6,"pop_est":3639453,"gdp_md_est":21810,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"AL","iso_a3":"ALB","iso_n3":"008","un_a3":"008","wb_a2":"AL","wb_a3":"ALB","woe_id":-99,"adm0_a3_is":"ALB","adm0_a3_us":"ALB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ALB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[20.590247430104906,41.855404161133606],[20.463175083099202,41.51508901627533],[20.605181919037364,41.08622630468522],[21.0200403174764,40.84272695572588],[20.999989861747224,40.58000397395397],[20.674996779063633,40.43499990494303],[20.615000441172754,40.11000682225938],[20.15001590341052,39.62499766698397],[19.980000441170144,39.69499339452341],[19.960001661873207,39.91500580500605],[19.406081984136733,40.250773423822466],[19.319058872157143,40.72723012955356],[19.40354983895429,41.40956574153546],[19.540027296637106,41.71998607031276],[19.37176883309496,41.877547512370654],[19.304486118250793,42.19574514420782],[19.738051385179627,42.688247382165564],[19.801613396898688,42.50009349219084],[20.0707,42.58863],[20.283754510181893,42.32025950781508],[20.52295,42.21787],[20.590247430104906,41.855404161133606]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Belgium","sov_a3":"BEL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Belgium","adm0_a3":"BEL","geou_dif":0,"geounit":"Belgium","gu_a3":"BEL","su_dif":0,"subunit":"Belgium","su_a3":"BEL","brk_diff":0,"name":"Belgium","name_long":"Belgium","brk_a3":"BEL","brk_name":"Belgium","brk_group":null,"abbrev":"Belg.","postal":"B","formal_en":"Kingdom of Belgium","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Belgium","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":1,"mapcolor13":8,"pop_est":10414336,"gdp_md_est":389300,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"BE","iso_a3":"BEL","iso_n3":"056","un_a3":"056","wb_a2":"BE","wb_a3":"BEL","woe_id":-99,"adm0_a3_is":"BEL","adm0_a3_us":"BEL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"BEL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[3.314971144228537,51.345780951536085],[4.047071160507527,51.26725861266857],[4.973991326526914,51.475023708698124],[5.606975945670001,51.037298488969775],[6.156658155958779,50.80372101501058],[6.043073357781111,50.128051662794235],[5.782417433300906,50.09032786722122],[5.674051954784829,49.529483547557504],[4.799221632515809,49.985373033236385],[4.286022983425084,49.907496649772554],[3.588184441755686,50.37899241800358],[3.123251580425801,50.780363267614575],[2.658422071960274,50.79684804951574],[2.513573032246143,51.14850617126183],[3.314971144228537,51.345780951536085]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Austria","sov_a3":"AUT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Austria","adm0_a3":"AUT","geou_dif":0,"geounit":"Austria","gu_a3":"AUT","su_dif":0,"subunit":"Austria","su_a3":"AUT","brk_diff":0,"name":"Austria","name_long":"Austria","brk_a3":"AUT","brk_name":"Austria","brk_group":null,"abbrev":"Aust.","postal":"A","formal_en":"Republic of Austria","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Austria","name_alt":null,"mapcolor7":3,"mapcolor8":1,"mapcolor9":3,"mapcolor13":4,"pop_est":8210281,"gdp_md_est":329500,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"AT","iso_a3":"AUT","iso_n3":"040","un_a3":"040","wb_a2":"AT","wb_a3":"AUT","woe_id":-99,"adm0_a3_is":"AUT","adm0_a3_us":"AUT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"AUT.geojson"},"geometry":{"type":"Polygon","coordinates":[[[16.979666782304037,48.123497015976305],[16.90375410326726,47.71486562762833],[16.340584344150415,47.71290192320123],[16.534267612380376,47.49617096616912],[16.202298211337364,46.85238597267696],[16.011663852612656,46.6836107448117],[15.137091912504985,46.65870270444703],[14.63247155117483,46.43181732846955],[13.806475457421527,46.509306138691215],[12.376485223040817,46.76755910906985],[12.153088006243054,47.11539317482645],[11.16482791509327,46.94157949481273],[11.048555942436536,46.75135854754634],[10.44270145024663,46.89354625099743],[9.932448357796659,46.92072805438296],[9.479969516649021,47.10280996356337],[9.632931756232978,47.34760122332999],[9.59422610844635,47.52505809182027],[9.896068149463188,47.580196845075704],[10.402083774465211,47.30248769793916],[10.544504021861627,47.56639923765377],[11.426414015354737,47.523766181012974],[12.141357456112788,47.703083401065776],[12.620759718484491,47.67238760028441],[12.932626987365948,47.467645575544],[13.02585127122049,47.637583523135824],[12.884102817443903,48.28914581968792],[13.243357374737,48.416114813829054],[13.595945672264437,48.87717194273715],[14.33889773932472,48.5553052842072],[14.901447381254057,48.964401760445824],[15.253415561593982,49.039074205107575],[16.02964725105022,48.73389903420793],[16.49928266771877,48.78580801044511],[16.960288120194576,48.5969823268506],[16.879982944413,48.47001333270947],[16.979666782304037,48.123497015976305]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Bulgaria","sov_a3":"BGR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Bulgaria","adm0_a3":"BGR","geou_dif":0,"geounit":"Bulgaria","gu_a3":"BGR","su_dif":0,"subunit":"Bulgaria","su_a3":"BGR","brk_diff":0,"name":"Bulgaria","name_long":"Bulgaria","brk_a3":"BGR","brk_name":"Bulgaria","brk_group":null,"abbrev":"Bulg.","postal":"BG","formal_en":"Republic of Bulgaria","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bulgaria","name_alt":null,"mapcolor7":4,"mapcolor8":5,"mapcolor9":1,"mapcolor13":8,"pop_est":7204687,"gdp_md_est":93750,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BG","iso_a3":"BGR","iso_n3":"100","un_a3":"100","wb_a2":"BG","wb_a3":"BGR","woe_id":-99,"adm0_a3_is":"BGR","adm0_a3_us":"BGR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"BGR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[22.65714969248299,44.23492300066128],[22.944832391051847,43.82378530534713],[23.33230228037632,43.89701080990471],[24.100679152124172,43.74105133724785],[25.569271681426926,43.68844472917472],[26.065158725699746,43.94349376075126],[27.242399529740908,44.175986029632405],[27.970107049275075,43.81246816667521],[28.558081495891997,43.70746165625813],[28.03909508638472,43.293171698574184],[27.67389773937805,42.577892361006214],[27.99672041190539,42.00735871028779],[27.135739373490477,42.14148489030134],[26.117041863720797,41.82690460872456],[26.106138136507212,41.32889883072778],[25.197201368925445,41.23448598893053],[24.49264489105803,41.583896185872035],[23.692073601992348,41.30908091894385],[22.952377150166452,41.33799388281115],[22.88137373219743,41.99929718685026],[22.380525750424592,42.32025950781509],[22.54501183440962,42.46136200618804],[22.43659467946128,42.580321153323936],[22.60480146657133,42.898518785161144],[22.986018507588483,43.211161200526966],[22.50015669118028,43.64281443946099],[22.410446404721597,44.00806346289995],[22.65714969248299,44.23492300066128]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Belarus","sov_a3":"BLR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Belarus","adm0_a3":"BLR","geou_dif":0,"geounit":"Belarus","gu_a3":"BLR","su_dif":0,"subunit":"Belarus","su_a3":"BLR","brk_diff":0,"name":"Belarus","name_long":"Belarus","brk_a3":"BLR","brk_name":"Belarus","brk_group":null,"abbrev":"Bela.","postal":"BY","formal_en":"Republic of Belarus","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Belarus","name_alt":null,"mapcolor7":1,"mapcolor8":1,"mapcolor9":5,"mapcolor13":11,"pop_est":9648533,"gdp_md_est":114100,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BY","iso_a3":"BLR","iso_n3":"112","un_a3":"112","wb_a2":"BY","wb_a3":"BLR","woe_id":-99,"adm0_a3_is":"BLR","adm0_a3_us":"BLR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"BLR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[23.48412763844985,53.91249766704114],[24.450683628037037,53.905702216194754],[25.536353794056993,54.28242340760253],[25.7684326514798,54.84696259217509],[26.58827924979039,55.16717560487167],[26.494331495883753,55.615106919977634],[27.10245975109453,55.783313707087686],[28.176709425577993,56.16912995057881],[29.229513380660308,55.918344224666356],[29.371571893030673,55.670090643936184],[29.896294386522356,55.78946320253041],[30.873909132620007,55.55097646750341],[30.971835971813135,55.08154775656404],[30.757533807098717,54.81177094178432],[31.38447228366374,54.157056382862436],[31.79142418796224,53.97463857687212],[31.731272820774507,53.79402944601202],[32.405598585751164,53.618045355842035],[32.69364301934604,53.35142080343212],[32.304519484188226,53.1327261419729],[31.49764367038293,53.1674268662569],[31.305200636528014,53.07399587667321],[31.54001834486226,52.74205231384636],[31.785998162571587,52.101677964885454],[30.927549269338982,52.04235342061438],[30.619454380014844,51.822806098022376],[30.555117221811457,51.31950348571566],[30.157363722460897,51.41613841410147],[29.254938185347925,51.368234361366895],[28.99283532076353,51.602044379271476],[28.61761274589225,51.42771393493484],[28.24161502453657,51.57222707783907],[27.454066196408434,51.59230337178447],[26.337958611768556,51.83228872334793],[25.327787713327005,51.91065603291855],[24.553106316839518,51.888461005249184],[24.00507775238421,51.61744395609446],[23.52707075368437,51.57845408793023],[23.508002150168693,52.02364655212473],[23.199493849386187,52.486977444053664],[23.799198846133375,52.69109935160657],[23.80493493011778,53.089731350306074],[23.527535841575002,53.470121568406555],[23.48412763844985,53.91249766704114]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Bosnia and Herzegovina","sov_a3":"BIH","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Bosnia and Herzegovina","adm0_a3":"BIH","geou_dif":0,"geounit":"Bosnia and Herzegovina","gu_a3":"BIH","su_dif":0,"subunit":"Bosnia and Herzegovina","su_a3":"BIH","brk_diff":0,"name":"Bosnia and Herzegovina","name_long":"Bosnia and Herzegovina","brk_a3":"BIH","brk_name":"Bosnia and Herz.","brk_group":null,"abbrev":"B.H.","postal":"BiH","formal_en":"Bosnia and Herzegovina","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Bosnia and Herzegovina","name_alt":null,"mapcolor7":1,"mapcolor8":1,"mapcolor9":1,"mapcolor13":2,"pop_est":4613414,"gdp_md_est":29700,"pop_year":-99,"lastcensus":1991,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"BA","iso_a3":"BIH","iso_n3":"070","un_a3":"070","wb_a2":"BA","wb_a3":"BIH","woe_id":-99,"adm0_a3_is":"BIH","adm0_a3_us":"BIH","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":16,"long_len":22,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"BIH.geojson"},"geometry":{"type":"Polygon","coordinates":[[[19.00548628101012,44.86023366960916],[19.36803,44.863],[19.11761,44.42307000000011],[19.59976,44.03847],[19.454,43.56810000000013],[19.21852,43.52384],[19.03165,43.43253],[18.70648,43.20011],[18.56,42.65],[17.674921502358984,43.02856252702361],[17.297373488034452,43.44634064388736],[16.91615644701733,43.66772247982567],[16.456442905348865,44.04123973243128],[16.23966027188453,44.35114329688571],[15.750026075918981,44.81871165626256],[15.959367303133376,45.233776760430935],[16.318156772535872,45.00412669532591],[16.534939406000206,45.21160757097772],[17.002146030351014,45.233776760430935],[17.861783481526402,45.067740383477144],[18.553214145591653,45.08158966733145],[19.00548628101012,44.86023366960916]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Switzerland","sov_a3":"CHE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Switzerland","adm0_a3":"CHE","geou_dif":0,"geounit":"Switzerland","gu_a3":"CHE","su_dif":0,"subunit":"Switzerland","su_a3":"CHE","brk_diff":0,"name":"Switzerland","name_long":"Switzerland","brk_a3":"CHE","brk_name":"Switzerland","brk_group":null,"abbrev":"Switz.","postal":"CH","formal_en":"Swiss Confederation","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Switzerland","name_alt":null,"mapcolor7":5,"mapcolor8":2,"mapcolor9":7,"mapcolor13":3,"pop_est":7604467,"gdp_md_est":316700,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"CH","iso_a3":"CHE","iso_n3":"756","un_a3":"756","wb_a2":"CH","wb_a3":"CHE","woe_id":-99,"adm0_a3_is":"CHE","adm0_a3_us":"CHE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":11,"long_len":11,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"CHE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[9.59422610844635,47.52505809182027],[9.632931756232978,47.34760122332999],[9.479969516649021,47.10280996356337],[9.932448357796659,46.92072805438296],[10.44270145024663,46.89354625099743],[10.363378126678612,46.48357127540986],[9.92283654139038,46.31489940040919],[9.182881707403055,46.44021474871698],[8.966305779667806,46.036931871111186],[8.489952426801324,46.005150865251686],[8.31662967289438,46.16364248309086],[7.755992058959833,45.82449005795931],[7.273850945676656,45.776947740250776],[6.843592970414504,45.99114655210061],[6.500099724970425,46.42967275652944],[6.022609490593537,46.27298981382047],[6.037388950229001,46.725778713561866],[6.768713820023606,47.2877082383037],[6.736571079138059,47.541801255882845],[7.192202182655507,47.44976552997102],[7.46675906742223,47.62058197691181],[8.317301466514152,47.61357982033626],[8.522611932009765,47.830827541691285],[9.59422610844635,47.52505809182027]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Czech Republic","sov_a3":"CZE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Czech Republic","adm0_a3":"CZE","geou_dif":0,"geounit":"Czech Republic","gu_a3":"CZE","su_dif":0,"subunit":"Czech Republic","su_a3":"CZE","brk_diff":0,"name":"Czech Republic","name_long":"Czech Republic","brk_a3":"CZE","brk_name":"Czech Rep.","brk_group":null,"abbrev":"Cz. Rep.","postal":"CZ","formal_en":"Czech Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Czech Republic","name_alt":null,"mapcolor7":1,"mapcolor8":1,"mapcolor9":2,"mapcolor13":6,"pop_est":10211904,"gdp_md_est":265200,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"CZ","iso_a3":"CZE","iso_n3":"203","un_a3":"203","wb_a2":"CZ","wb_a3":"CZE","woe_id":-99,"adm0_a3_is":"CZE","adm0_a3_us":"CZE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":10,"long_len":14,"abbrev_len":8,"tiny":-99,"homepart":1,"filename":"CZE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[16.960288120194576,48.5969823268506],[16.49928266771877,48.78580801044511],[16.02964725105022,48.73389903420793],[15.253415561593982,49.039074205107575],[14.901447381254057,48.964401760445824],[14.33889773932472,48.5553052842072],[13.595945672264437,48.87717194273715],[13.031328973043431,49.30706818297324],[12.521024204161192,49.547415269562734],[12.415190870827445,49.96912079528057],[12.240111118222558,50.266337795607285],[12.966836785543194,50.484076443069085],[13.338131951560285,50.73323436136435],[14.056227654688172,50.92691762959429],[14.307013380600637,51.117267767941414],[14.570718214586066,51.002339382524276],[15.01699588385867,51.10667409932158],[15.490972120839727,50.78472992614321],[16.23862674323857,50.69773265237984],[16.176253289462267,50.42260732685791],[16.719475945714436,50.21574656839354],[16.868769158605655,50.47397370055603],[17.55456709155112,50.36214590107641],[17.64944502123899,50.049038397819956],[18.392913852622172,49.98862864847075],[18.853144158613617,49.49622976337764],[18.554971144289482,49.49501536721878],[18.399993523846177,49.31500051533004],[18.170498488037964,49.271514797556435],[18.104972771891852,49.04398346617531],[17.913511590250465,48.996492824899086],[17.88648481616181,48.90347524677371],[17.545006951577108,48.80001902932537],[17.101984897538898,48.81696889911711],[16.960288120194576,48.5969823268506]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Germany","sov_a3":"DEU","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Germany","adm0_a3":"DEU","geou_dif":0,"geounit":"Germany","gu_a3":"DEU","su_dif":0,"subunit":"Germany","su_a3":"DEU","brk_diff":0,"name":"Germany","name_long":"Germany","brk_a3":"DEU","brk_name":"Germany","brk_group":null,"abbrev":"Ger.","postal":"D","formal_en":"Federal Republic of Germany","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Germany","name_alt":null,"mapcolor7":2,"mapcolor8":5,"mapcolor9":5,"mapcolor13":1,"pop_est":82329758,"gdp_md_est":2918000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"DE","iso_a3":"DEU","iso_n3":"276","un_a3":"276","wb_a2":"DE","wb_a3":"DEU","woe_id":-99,"adm0_a3_is":"DEU","adm0_a3_us":"DEU","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"DEU.geojson"},"geometry":{"type":"Polygon","coordinates":[[[9.921906365609232,54.983104153048025],[9.9395797054529,54.596641954153256],[10.950112338920519,54.363607082733154],[10.939466993868448,54.00869334575258],[11.956252475643282,54.19648550070116],[12.518440382546714,54.47037059184799],[13.647467075259499,54.0755109727059],[14.119686313542559,53.75702912049103],[14.353315463934168,53.248171291713106],[14.074521111719434,52.98126251892535],[14.4375997250022,52.624850165408304],[14.685026482815713,52.089947414755216],[14.607098422919648,51.745188096719964],[15.016995883858781,51.10667409932171],[14.570718214586122,51.00233938252438],[14.307013380600665,51.11726776794137],[14.056227654688314,50.92691762959435],[13.338131951560397,50.73323436136428],[12.96683678554325,50.48407644306917],[12.240111118222671,50.26633779560723],[12.415190870827473,49.96912079528062],[12.521024204161336,49.54741526956275],[13.031328973043514,49.30706818297324],[13.595945672264577,48.877171942737164],[13.243357374737116,48.41611481382903],[12.884102817443873,48.28914581968786],[13.025851271220517,47.63758352313595],[12.932626987366064,47.467645575544],[12.620759718484521,47.672387600284424],[12.141357456112871,47.70308340106578],[11.426414015354851,47.52376618101306],[10.544504021861597,47.5663992376538],[10.402083774465325,47.30248769793916],[9.896068149463188,47.580196845075704],[9.594226108446376,47.5250580918202],[8.522611932009795,47.83082754169135],[8.317301466514095,47.61357982033627],[7.466759067422288,47.62058197691192],[7.593676385131062,48.33301911070373],[8.099278598674855,49.01778351500343],[6.658229607783709,49.20195831969164],[6.186320428094177,49.463802802114515],[6.242751092156993,49.90222565367873],[6.043073357781111,50.128051662794235],[6.156658155958779,50.80372101501058],[5.988658074577813,51.851615709025054],[6.589396599970826,51.852029120483394],[6.842869500362383,52.22844025329755],[7.092053256873896,53.14404328064489],[6.905139601274129,53.48216217713064],[7.100424838905268,53.69393219666267],[7.936239454793962,53.74829580343379],[8.121706170289485,53.52779246684429],[8.800734490604668,54.020785630908904],[8.572117954145368,54.39564647075405],[8.526229282270208,54.96274363872516],[9.282048780971136,54.83086538351631],[9.921906365609232,54.983104153048025]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Denmark","sov_a3":"DN1","adm0_dif":1,"level":2,"type":"Country","admin":"Denmark","adm0_a3":"DNK","geou_dif":0,"geounit":"Denmark","gu_a3":"DNK","su_dif":0,"subunit":"Denmark","su_a3":"DNK","brk_diff":0,"name":"Denmark","name_long":"Denmark","brk_a3":"DNK","brk_name":"Denmark","brk_group":null,"abbrev":"Den.","postal":"DK","formal_en":"Kingdom of Denmark","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Denmark","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":3,"mapcolor13":12,"pop_est":5500510,"gdp_md_est":203600,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"DK","iso_a3":"DNK","iso_n3":"208","un_a3":"208","wb_a2":"DK","wb_a3":"DNK","woe_id":-99,"adm0_a3_is":"DNK","adm0_a3_us":"DNK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"DNK.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[12.69000613775563,55.609990953180784],[12.089991082414741,54.80001455343793],[11.043543328504228,55.364863796604254],[10.903913608451631,55.77995473898875],[12.370904168353292,56.111407375708836],[12.69000613775563,55.609990953180784]]],[[[10.912181837618363,56.458621324277914],[10.667803989309988,56.08138336854722],[10.369992710011985,56.19000722922473],[9.649984978889307,55.469999498102055],[9.921906365609175,54.98310415304806],[9.282048780971136,54.83086538351616],[8.526229282270236,54.96274363872499],[8.120310906617588,55.517722683323626],[8.08997684086225,56.540011705137594],[8.256581658571264,56.8099693874303],[8.543437534223386,57.110002753316905],[9.42446902836761,57.17206614849948],[9.775558709358563,57.447940782289656],[10.580005730846153,57.73001658795485],[10.546105991262692,57.215732733786155],[10.250000034230226,56.89001618105047],[10.369992710011985,56.609981594460834],[10.912181837618363,56.458621324277914]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Spain","sov_a3":"ESP","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Spain","adm0_a3":"ESP","geou_dif":0,"geounit":"Spain","gu_a3":"ESP","su_dif":0,"subunit":"Spain","su_a3":"ESP","brk_diff":0,"name":"Spain","name_long":"Spain","brk_a3":"ESP","brk_name":"Spain","brk_group":null,"abbrev":"Sp.","postal":"E","formal_en":"Kingdom of Spain","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Spain","name_alt":null,"mapcolor7":4,"mapcolor8":5,"mapcolor9":5,"mapcolor13":5,"pop_est":40525002,"gdp_md_est":1403000,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"ES","iso_a3":"ESP","iso_n3":"724","un_a3":"724","wb_a2":"ES","wb_a3":"ESP","woe_id":-99,"adm0_a3_is":"ESP","adm0_a3_us":"ESP","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":5,"long_len":5,"abbrev_len":3,"tiny":-99,"homepart":1,"filename":"ESP.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.984433152695672,42.59277517350627],[-9.392883673530648,43.0266246608127],[-7.978189663108309,43.748337714200986],[-6.754491746436756,43.567909450853925],[-5.411886359061596,43.574239813809676],[-4.347842779955783,43.40344920508504],[-3.51753170410609,43.4559007838613],[-1.901351284177764,43.42280202897834],[-1.502770961910528,43.03401439063043],[0.338046909190581,42.57954600683954],[0.701590610363894,42.7957343613326],[1.826793247087153,42.34338471126569],[2.985998976258458,42.47301504166986],[3.039484083680549,41.892120266276905],[2.091841668312185,41.22608856868309],[0.810524529635188,41.01473196060934],[0.721331007499401,40.678318386389236],[0.106691521819869,40.12393362076202],[-0.278711310212941,39.30997813573272],[0.111290724293838,38.73851430923303],[-0.467123582349103,38.29236583104115],[-0.683389451490598,37.642353827457825],[-1.438382127274849,37.443063666324214],[-2.146452602538119,36.67414419203728],[-3.415780808923387,36.65889964451118],[-4.368900926114719,36.677839056946155],[-4.995219285492211,36.32470815687964],[-5.377159796561457,35.946850083961465],[-5.866432257500904,36.02981659600606],[-6.236693894872175,36.367677110330334],[-6.520190802425404,36.94291331638732],[-7.453725551778092,37.09778758396607],[-7.537105475281024,37.42890432387623],[-7.166507941099865,37.803894354802225],[-7.029281175148796,38.07576406508977],[-7.374092169616318,38.37305858006492],[-7.098036668313128,39.03007274022378],[-7.498632371439725,39.62957103124181],[-7.066591559263529,39.71189158788277],[-7.026413133156595,40.184524237624245],[-6.864019944679385,40.33087189387483],[-6.851126674822552,41.11108266861753],[-6.389087693700915,41.381815497394655],[-6.668605515967656,41.883386949219584],[-7.251308966490824,41.91834605566505],[-7.422512986673795,41.79207469335983],[-8.013174607769912,41.790886135417125],[-8.263856980817792,42.28046865495034],[-8.67194576662672,42.13468943945496],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Estonia","sov_a3":"EST","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Estonia","adm0_a3":"EST","geou_dif":0,"geounit":"Estonia","gu_a3":"EST","su_dif":0,"subunit":"Estonia","su_a3":"EST","brk_diff":0,"name":"Estonia","name_long":"Estonia","brk_a3":"EST","brk_name":"Estonia","brk_group":null,"abbrev":"Est.","postal":"EST","formal_en":"Republic of Estonia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Estonia","name_alt":null,"mapcolor7":3,"mapcolor8":2,"mapcolor9":1,"mapcolor13":10,"pop_est":1299371,"gdp_md_est":27410,"pop_year":-99,"lastcensus":2000,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"EE","iso_a3":"EST","iso_n3":"233","un_a3":"233","wb_a2":"EE","wb_a3":"EST","woe_id":-99,"adm0_a3_is":"EST","adm0_a3_us":"EST","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"EST.geojson"},"geometry":{"type":"Polygon","coordinates":[[[24.312862583114622,57.79342357037698],[24.42892785004216,58.38341339785328],[24.061198357853186,58.25737457949341],[23.42656009287668,58.612753404364625],[23.339795363058645,59.18724030215338],[24.604214308376182,59.46585378685502],[25.86418908051664,59.61109039981134],[26.949135776484525,59.445803331125774],[27.981114129353244,59.47538808861287],[28.13169925305175,59.30082510033092],[27.42016645682494,58.72458120384424],[27.71668582531572,57.79189911562437],[27.28818484875151,57.47452830670383],[26.463532342237787,57.47638865826633],[25.602809685984365,57.84752879498657],[25.16459354014927,57.97015696881519],[24.312862583114622,57.79342357037698]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Finland","sov_a3":"FI1","adm0_dif":1,"level":2,"type":"Country","admin":"Finland","adm0_a3":"FIN","geou_dif":0,"geounit":"Finland","gu_a3":"FIN","su_dif":0,"subunit":"Finland","su_a3":"FIN","brk_diff":0,"name":"Finland","name_long":"Finland","brk_a3":"FIN","brk_name":"Finland","brk_group":null,"abbrev":"Fin.","postal":"FIN","formal_en":"Republic of Finland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Finland","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":4,"mapcolor13":6,"pop_est":5250275,"gdp_md_est":193500,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"FI","iso_a3":"FIN","iso_n3":"246","un_a3":"246","wb_a2":"FI","wb_a3":"FIN","woe_id":-99,"adm0_a3_is":"FIN","adm0_a3_us":"FIN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"FIN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[28.591929559043194,69.06477692328666],[28.445943637818658,68.36461294216404],[29.977426385220607,67.69829702419266],[29.054588657352326,66.94428620062193],[30.21765,65.80598],[29.544429559046986,64.94867157659048],[30.44468468600371,64.20445343693909],[30.035872430142714,63.55281362573855],[31.51609215671112,62.86768748641288],[31.139991082490894,62.35769277612441],[30.211107212044446,61.78002777774969],[28.069997592895277,60.503516547275844],[26.25517296723697,60.4239606797625],[24.496623976344523,60.05731639265165],[22.869694858499457,59.846373196036225],[22.290763787533592,60.39192129174154],[21.322244093519316,60.72016998965952],[21.544866163832694,61.7053294948718],[21.05921105315369,62.60739329695874],[21.536029493910803,63.18973501245587],[22.442744174903993,63.81781037053129],[24.730511508897536,64.90234365504082],[25.398067661243942,65.11142650009373],[25.294043003040404,65.53434642197045],[23.903378533633802,66.00692739527962],[23.565879754335583,66.39605093043743],[23.53947309743444,67.93600861273525],[21.978534783626117,68.6168456081807],[20.645592889089528,69.10624726020087],[21.244936150810673,69.37044302029307],[22.356237827247412,68.84174144151491],[23.66204959483076,68.89124746365054],[24.735679152126725,68.64955678982146],[25.68921268077636,69.09211375596904],[26.17962202322624,69.82529897732614],[27.732292107867863,70.16419302029625],[29.01557295097197,69.76649119737799],[28.591929559043194,69.06477692328666]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"France","sov_a3":"FR1","adm0_dif":1,"level":2,"type":"Country","admin":"France","adm0_a3":"FRA","geou_dif":0,"geounit":"France","gu_a3":"FRA","su_dif":0,"subunit":"France","su_a3":"FRA","brk_diff":0,"name":"France","name_long":"France","brk_a3":"FRA","brk_name":"France","brk_group":null,"abbrev":"Fr.","postal":"F","formal_en":"French Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"France","name_alt":null,"mapcolor7":7,"mapcolor8":5,"mapcolor9":9,"mapcolor13":11,"pop_est":64057792,"gdp_md_est":2128000,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"FR","iso_a3":"FRA","iso_n3":"250","un_a3":"250","wb_a2":"FR","wb_a3":"FRA","woe_id":-99,"adm0_a3_is":"FRA","adm0_a3_us":"FRA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":3,"tiny":-99,"homepart":1,"filename":"FRA.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-52.55642473001839,2.504705308437053],[-52.93965715189498,2.124857692875622],[-53.418465135295264,2.053389187016037],[-53.554839240113495,2.334896551925965],[-53.77852067728889,2.376702785650053],[-54.08806250671728,2.105556545414629],[-54.52475419779975,2.311848863123785],[-54.27122962097578,2.738747870286943],[-54.18428402364474,3.194172268075235],[-54.01150387227682,3.622569891774858],[-54.399542202356514,4.212611395683481],[-54.47863298197922,4.896755682795643],[-53.95804460307093,5.756548163267809],[-53.618452928264844,5.646529038918402],[-52.88214128275408,5.409850979021599],[-51.82334286152593,4.565768133966145],[-51.65779741067888,4.156232408053029],[-52.24933753112398,3.241094468596287],[-52.55642473001839,2.504705308437053]]],[[[9.560016310269134,42.15249197037957],[9.229752231491773,41.38000682226445],[8.77572309737536,41.58361196549444],[8.54421268070783,42.25651662858308],[8.746009148807588,42.62812185319396],[9.390000848028905,43.00998484961474],[9.560016310269134,42.15249197037957]]],[[[3.588184441755715,50.37899241800358],[4.28602298342514,49.907496649772554],[4.799221632515753,49.98537303323633],[5.674051954784885,49.52948354755745],[5.897759230176376,49.44266714130717],[6.186320428094206,49.46380280211446],[6.658229607783539,49.20195831969155],[8.099278598674772,49.01778351500337],[7.593676385131062,48.33301911070373],[7.46675906742223,47.620581976911865],[7.192202182655535,47.44976552997099],[6.736571079138088,47.54180125588289],[6.768713820023634,47.28770823830368],[6.037388950228972,46.72577871356191],[6.022609490593567,46.272989813820516],[6.500099724970454,46.42967275652944],[6.843592970414562,45.99114655210067],[6.802355177445662,45.70857982032867],[7.096652459347837,45.333098863295874],[6.749955275101711,45.02851797136759],[7.007562290076663,44.25476675066139],[7.549596388386163,44.12790110938482],[7.435184767291843,43.69384491634918],[6.529245232783068,43.12889232031836],[4.556962517931396,43.39965098731158],[3.10041059735272,43.075200507167125],[2.985998976258486,42.47301504166989],[1.826793247087181,42.34338471126566],[0.701590610363922,42.79573436133265],[0.338046909190581,42.579546006839564],[-1.502770961910471,43.03401439063049],[-1.901351284177735,43.42280202897834],[-1.384225226232957,44.02261037859017],[-1.193797573237362,46.014917710954876],[-2.225724249673789,47.06436269793821],[-2.963276129559574,47.570326646507965],[-4.491554938159481,47.95495433205642],[-4.592349819344747,48.68416046812695],[-3.295813971357745,48.901692409859635],[-1.616510789384932,48.644421291694584],[-1.933494025063254,49.776341864615766],[-0.98946895995536,49.347375800160876],[1.338761020522753,50.12717316344526],[1.6390010921385,50.946606350297515],[2.513573032246171,51.14850617126185],[2.658422071960331,50.79684804951566],[3.123251580425716,50.78036326761452],[3.588184441755715,50.37899241800358]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"United Kingdom","sov_a3":"GB1","adm0_dif":1,"level":2,"type":"Country","admin":"United Kingdom","adm0_a3":"GBR","geou_dif":0,"geounit":"United Kingdom","gu_a3":"GBR","su_dif":0,"subunit":"United Kingdom","su_a3":"GBR","brk_diff":0,"name":"United Kingdom","name_long":"United Kingdom","brk_a3":"GBR","brk_name":"United Kingdom","brk_group":null,"abbrev":"U.K.","postal":"GB","formal_en":"United Kingdom of Great Britain and Northern Ireland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"United Kingdom","name_alt":null,"mapcolor7":6,"mapcolor8":6,"mapcolor9":6,"mapcolor13":3,"pop_est":62262000,"gdp_md_est":1977704,"pop_year":0,"lastcensus":2011,"gdp_year":2009,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"GB","iso_a3":"GBR","iso_n3":"826","un_a3":"826","wb_a2":"GB","wb_a3":"GBR","woe_id":-99,"adm0_a3_is":"GBR","adm0_a3_us":"GBR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":14,"long_len":14,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"GBR.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-5.661948614921897,54.55460317648385],[-6.197884894220977,53.86756500916334],[-6.953730231137996,54.073702297575636],[-7.572167934591079,54.05995636658599],[-7.366030646178785,54.595840969452695],[-7.572167934591079,55.1316222194549],[-6.733847011736145,55.1728600124238],[-5.661948614921897,54.55460317648385]]],[[[-3.005004848635281,58.63500010846633],[-4.073828497728016,57.55302480735525],[-3.055001796877661,57.69001902936095],[-1.959280564776918,57.68479970969951],[-2.219988165689301,56.87001740175353],[-3.119003058271118,55.973793036515474],[-2.085009324543023,55.90999848085127],[-2.005675679673857,55.80490285035023],[-1.11499101399221,54.62498647726539],[-0.4304849918542,54.46437612570216],[0.184981316742039,53.32501414653103],[0.469976840831777,52.92999949809197],[1.681530795914739,52.739520168664],[1.559987827164377,52.09999848083601],[1.050561557630914,51.806760565795685],[1.449865349950301,51.28942780212196],[0.550333693045502,50.765738837275876],[-0.78751746255864,50.77498891865622],[-2.489997524414377,50.50001862243124],[-2.956273972984036,50.696879991247016],[-3.617448085942328,50.22835561787272],[-4.542507900399244,50.34183706318566],[-5.245023159191135,49.95999990498108],[-5.776566941745301,50.15967763935682],[-4.309989793301838,51.21000112568916],[-3.414850633142123,51.42600861266925],[-3.422719467108323,51.42684816740609],[-4.984367234710874,51.593466091510976],[-5.267295701508885,51.99140045837458],[-4.222346564134853,52.301355699261364],[-4.770013393564113,52.840004991255626],[-4.579999152026915,53.49500377055517],[-3.093830673788659,53.404547400669685],[-3.092079637047106,53.404440822963544],[-2.945008510744344,53.984999701546684],[-3.614700825433034,54.600936773292574],[-3.63000545898933,54.615012925833014],[-4.844169073903004,54.790971177786844],[-5.082526617849226,55.06160065369937],[-4.719112107756644,55.50847260194348],[-5.047980922862109,55.78398550070752],[-5.586397670911139,55.31114614523682],[-5.644998745130181,56.275014960344805],[-6.149980841486354,56.78500967063354],[-5.786824713555291,57.81884837506465],[-5.009998745127575,58.63001333275005],[-4.211494513353557,58.55084503847917],[-3.005004848635281,58.63500010846633]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Greece","sov_a3":"GRC","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Greece","adm0_a3":"GRC","geou_dif":0,"geounit":"Greece","gu_a3":"GRC","su_dif":0,"subunit":"Greece","su_a3":"GRC","brk_diff":0,"name":"Greece","name_long":"Greece","brk_a3":"GRC","brk_name":"Greece","brk_group":null,"abbrev":"Greece","postal":"GR","formal_en":"Hellenic Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Greece","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":2,"mapcolor13":9,"pop_est":10737428,"gdp_md_est":343000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"GR","iso_a3":"GRC","iso_n3":"300","un_a3":"300","wb_a2":"GR","wb_a3":"GRC","woe_id":-99,"adm0_a3_is":"GRC","adm0_a3_us":"GRC","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"GRC.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[23.699980096133004,35.70500438083553],[24.24666507334868,35.368022365860156],[25.02501549652888,35.42499563246198],[25.769207797964185,35.35401805270908],[25.745023227651586,35.179997666966216],[26.290002882601723,35.29999034274792],[26.16499759288766,35.004995429009796],[24.724982130642303,34.91998769788961],[24.735007358506945,35.08499054619759],[23.51497846852811,35.27999156345098],[23.699980096133004,35.70500438083553]]],[[[26.604195590936282,41.562114569661105],[26.29460208507578,40.93626129817426],[26.056942172965506,40.824123440100834],[25.447677036244187,40.85254547786147],[24.92584842296094,40.94706167252323],[23.714811232200816,40.687129218095116],[24.407998894964066,40.1249929876241],[23.899967889102584,39.96200552017558],[23.3429993018608,39.96099782974579],[22.81398766448896,40.476005153966554],[22.62629886240478,40.25656118423919],[22.849747755634805,39.65931081802577],[23.3500272966526,39.19001129816726],[22.973099399515547,38.97090322524966],[23.530016310324953,38.51000112563847],[24.025024855248944,38.21999298761645],[24.040011020613605,37.655014553369426],[23.115002882589152,37.92001129816222],[23.409971958111072,37.409990749657396],[22.774971958108633,37.30501007745656],[23.15422529469862,36.422505804992056],[22.490028110451107,36.41000010837746],[21.670026482843696,36.8449864771942],[21.295010613701574,37.644989325504696],[21.120034213961333,38.31032339126273],[20.730032179454582,38.769985256498785],[20.217712029712857,39.340234686839636],[20.15001590341052,39.62499766698403],[20.615000441172782,40.11000682225943],[20.674996779063633,40.434999904943055],[20.99998986174728,40.58000397395397],[21.02004031747643,40.84272695572588],[21.674160597426976,40.93127452245798],[22.05537763844427,41.14986583105269],[22.597308383889015,41.130487168943205],[22.76177,41.3048],[22.952377150166566,41.33799388281122],[23.692073601992462,41.30908091894386],[24.49264489105803,41.58389618587205],[25.197201368925533,41.23448598893066],[26.106138136507184,41.32889883072784],[26.117041863720914,41.82690460872473],[26.604195590936282,41.562114569661105]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Italy","sov_a3":"ITA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Italy","adm0_a3":"ITA","geou_dif":0,"geounit":"Italy","gu_a3":"ITA","su_dif":0,"subunit":"Italy","su_a3":"ITA","brk_diff":0,"name":"Italy","name_long":"Italy","brk_a3":"ITA","brk_name":"Italy","brk_group":null,"abbrev":"Italy","postal":"I","formal_en":"Italian Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Italy","name_alt":null,"mapcolor7":6,"mapcolor8":7,"mapcolor9":8,"mapcolor13":7,"pop_est":58126212,"gdp_md_est":1823000,"pop_year":-99,"lastcensus":2012,"gdp_year":-99,"economy":"1. Developed region: G7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"IT","iso_a3":"ITA","iso_n3":"380","un_a3":"380","wb_a2":"IT","wb_a3":"ITA","woe_id":-99,"adm0_a3_is":"ITA","adm0_a3_us":"ITA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":5,"long_len":5,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"ITA.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[15.520376010813834,38.23115509699147],[15.160242954171736,37.44404551853782],[15.309897902089006,37.1342194687318],[15.099988234119449,36.6199872909954],[14.335228712632016,36.996630967754754],[13.826732618879928,37.10453135838019],[12.431003859108813,37.61294993748381],[12.570943637755136,38.12638113051968],[13.741156447004585,38.03496552179536],[14.76124922044616,38.143873602850505],[15.520376010813834,38.23115509699147]]],[[[9.210011834356266,41.20999136002422],[9.809975213264977,40.5000088567661],[9.669518670295673,39.177376410471794],[9.21481774255949,39.240473334300134],[8.80693566247973,38.90661774347847],[8.428302443077115,39.17184703221662],[8.38825320805094,40.378310858718805],[8.15999840661766,40.95000722916379],[8.709990675500109,40.89998444270523],[9.210011834356266,41.20999136002422]]],[[[12.376485223040843,46.76755910906987],[13.806475457421556,46.50930613869119],[13.698109978905478,46.016778062517375],[13.937630242578335,45.591015936864665],[13.141606479554298,45.73669179949541],[12.328581170306306,45.38177806251485],[12.383874952858605,44.88537425391908],[12.261453484759159,44.600482082694015],[12.589237094786483,44.091365871754476],[13.526905958722494,43.5877273626379],[14.029820997787027,42.76100779883248],[15.142569614327956,41.955139675456905],[15.926191033601896,41.96131500911574],[16.169897088290412,41.74029490820342],[15.889345737377797,41.5410822617182],[16.785001661860576,41.179605617836586],[17.519168735431208,40.87714345963224],[18.376687452882575,40.35562490494266],[18.4802470231954,40.168866278639825],[18.293385044028096,39.81077444107325],[17.738380161213286,40.2776710068303],[16.869595981522338,40.44223460546385],[16.448743116937322,39.79540070246648],[17.1714896989715,39.42469981542072],[17.05284061042934,38.9028712021373],[16.635088331781844,38.8435724960824],[16.100960727613057,37.98589874933418],[15.684086948314501,37.90884918878703],[15.687962680736321,38.214592800441864],[15.891981235424707,38.750942491199226],[16.109332309644312,38.96454702407769],[15.718813510814641,39.544072374014945],[15.413612501698822,40.04835683853517],[14.998495721098237,40.17294871679093],[14.70326826341477,40.604550279292624],[14.060671827865264,40.78634796809544],[13.627985060285397,41.188287258461656],[12.88808190273042,41.25308950455562],[12.10668257004491,41.70453481705741],[11.191906365614187,42.35542531998967],[10.511947869517797,42.931462510747224],[10.200028924204048,43.920006822274615],[9.702488234097814,44.03627879493132],[8.88894616052687,44.36633616797954],[8.428560825238577,44.23122813575242],[7.850766635783201,43.76714793555524],[7.435184767291843,43.69384491634918],[7.549596388386163,44.12790110938482],[7.007562290076663,44.25476675066139],[6.749955275101711,45.02851797136759],[7.096652459347837,45.333098863295874],[6.802355177445662,45.70857982032867],[6.843592970414562,45.99114655210067],[7.273850945676685,45.77694774025076],[7.755992058959833,45.82449005795928],[8.31662967289438,46.163642483090854],[8.489952426801295,46.00515086525175],[8.966305779667834,46.036931871111165],[9.182881707403112,46.44021474871698],[9.922836541390353,46.31489940040919],[10.363378126678668,46.483571275409844],[10.442701450246602,46.893546250997446],[11.048555942436508,46.7513585475464],[11.164827915093326,46.94157949481274],[12.153088006243081,47.11539317482644],[12.376485223040843,46.76755910906987]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Croatia","sov_a3":"HRV","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Croatia","adm0_a3":"HRV","geou_dif":0,"geounit":"Croatia","gu_a3":"HRV","su_dif":0,"subunit":"Croatia","su_a3":"HRV","brk_diff":0,"name":"Croatia","name_long":"Croatia","brk_a3":"HRV","brk_name":"Croatia","brk_group":null,"abbrev":"Cro.","postal":"HR","formal_en":"Republic of Croatia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Croatia","name_alt":null,"mapcolor7":5,"mapcolor8":4,"mapcolor9":5,"mapcolor13":1,"pop_est":4489409,"gdp_md_est":82390,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"HR","iso_a3":"HRV","iso_n3":"191","un_a3":"191","wb_a2":"HR","wb_a3":"HRV","woe_id":-99,"adm0_a3_is":"HRV","adm0_a3_us":"HRV","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"HRV.geojson"},"geometry":{"type":"Polygon","coordinates":[[[18.829838087650046,45.908877671891844],[19.072768995854176,45.52151113543209],[19.39047570158459,45.236515611342384],[19.00548628101012,44.86023366960916],[18.553214145591653,45.08158966733145],[17.861783481526402,45.067740383477144],[17.002146030351014,45.233776760430935],[16.534939406000206,45.21160757097772],[16.318156772535872,45.00412669532591],[15.959367303133376,45.233776760430935],[15.750026075918981,44.81871165626256],[16.23966027188453,44.35114329688571],[16.456442905348865,44.04123973243128],[16.91615644701733,43.66772247982567],[17.297373488034452,43.44634064388736],[17.674921502358984,43.02856252702361],[18.56,42.65],[18.450016310304818,42.47999136002932],[17.509970330483327,42.849994615239154],[16.930005730871642,43.20999848080038],[16.015384555737683,43.50721548112722],[15.174453973052096,44.243191229827914],[15.376250441151795,44.31791535092208],[14.920309279040508,44.73848399512946],[14.901602410550877,45.07606028907611],[14.258747592839995,45.233776760430935],[13.952254672917034,44.80212352149687],[13.656975538801191,45.13693512631596],[13.67940311041582,45.48414907488501],[13.715059848697251,45.500323798192426],[14.4119682145855,45.46616567644742],[14.595109490627918,45.63494090431282],[14.935243767972963,45.471695054702764],[15.327674594797427,45.452316392593325],[15.323953891672431,45.731782538427694],[15.671529575267641,45.8341535507979],[15.768732944408612,46.23810822202353],[16.564808383864943,46.50375092221981],[16.882515089595415,46.38063182228444],[17.630066359129557,45.9517691106941],[18.45606245288286,45.75948110613615],[18.829838087650046,45.908877671891844]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Hungary","sov_a3":"HUN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Hungary","adm0_a3":"HUN","geou_dif":0,"geounit":"Hungary","gu_a3":"HUN","su_dif":0,"subunit":"Hungary","su_a3":"HUN","brk_diff":0,"name":"Hungary","name_long":"Hungary","brk_a3":"HUN","brk_name":"Hungary","brk_group":null,"abbrev":"Hun.","postal":"HU","formal_en":"Republic of Hungary","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Hungary","name_alt":null,"mapcolor7":4,"mapcolor8":6,"mapcolor9":1,"mapcolor13":5,"pop_est":9905596,"gdp_md_est":196600,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"HU","iso_a3":"HUN","iso_n3":"348","un_a3":"348","wb_a2":"HU","wb_a3":"HUN","woe_id":-99,"adm0_a3_is":"HUN","adm0_a3_us":"HUN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"HUN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[16.202298211337364,46.85238597267696],[16.534267612380376,47.49617096616912],[16.340584344150415,47.71290192320123],[16.90375410326726,47.71486562762833],[16.979666782304037,48.123497015976305],[17.48847293464982,47.86746613218621],[17.857132602620027,47.758428860050365],[18.696512892336926,47.880953681014404],[18.77702477384767,48.081768296900634],[19.17436486173989,48.11137889260387],[19.661363559658497,48.26661489520866],[19.769470656013112,48.202691148463614],[20.239054396249347,48.32756724709692],[20.473562045989866,48.56285004332181],[20.801293979584926,48.623854071642384],[21.872236362401736,48.31997081155002],[22.08560835133485,48.42226430927179],[22.640819939878753,48.15023956968735],[22.710531447040495,47.88219391538941],[22.099767693782834,47.6724392767167],[21.62651492685387,46.99423777931816],[21.02195234547125,46.3160879583519],[20.220192498462836,46.127468980486555],[19.596044549241583,46.17172984474454],[18.82983808764996,45.90887767189193],[18.45606245288286,45.759481106136136],[17.630066359129557,45.95176911069419],[16.8825150895953,46.38063182228444],[16.564808383864857,46.50375092221983],[16.370504998447416,46.8413272161665],[16.202298211337364,46.85238597267696]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Kosovo","sov_a3":"KOS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Kosovo","adm0_a3":"KOS","geou_dif":0,"geounit":"Kosovo","gu_a3":"KOS","su_dif":0,"subunit":"Kosovo","su_a3":"KOS","brk_diff":1,"name":"Kosovo","name_long":"Kosovo","brk_a3":"B57","brk_name":"Kosovo","brk_group":null,"abbrev":"Kos.","postal":"KO","formal_en":"Republic of Kosovo","formal_fr":null,"note_adm0":null,"note_brk":"Self admin.; Claimed by Serbia","name_sort":"Kosovo","name_alt":null,"mapcolor7":2,"mapcolor8":2,"mapcolor9":3,"mapcolor13":11,"pop_est":1804838,"gdp_md_est":5352,"pop_year":-99,"lastcensus":1981,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"-99","iso_a3":"-99","iso_n3":"-99","un_a3":"-099","wb_a2":"KV","wb_a3":"KSV","woe_id":-99,"adm0_a3_is":"SRB","adm0_a3_us":"KOS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"KOS.geojson"},"geometry":{"type":"Polygon","coordinates":[[[20.76216,42.05186],[20.71731000000011,41.84711],[20.59023,41.85541],[20.52295,42.21787],[20.28374,42.3202500000001],[20.0707,42.58863],[20.25758,42.81275000000011],[20.49679,42.88469],[20.63508,43.21671],[20.81448,43.27205],[20.95651,43.13094],[21.143395,43.06868500000012],[21.27421,42.90959],[21.43866,42.86255],[21.63302,42.67717],[21.77505,42.6827],[21.66292,42.43922],[21.54332,42.3202500000001],[21.57663598940212,42.24522439706186],[21.35270000000014,42.2068],[20.76216,42.05186]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Ireland","sov_a3":"IRL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ireland","adm0_a3":"IRL","geou_dif":0,"geounit":"Ireland","gu_a3":"IRL","su_dif":0,"subunit":"Ireland","su_a3":"IRL","brk_diff":0,"name":"Ireland","name_long":"Ireland","brk_a3":"IRL","brk_name":"Ireland","brk_group":null,"abbrev":"Ire.","postal":"IRL","formal_en":"Ireland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Ireland","name_alt":null,"mapcolor7":2,"mapcolor8":3,"mapcolor9":2,"mapcolor13":2,"pop_est":4203200,"gdp_md_est":188400,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"IE","iso_a3":"IRL","iso_n3":"372","un_a3":"372","wb_a2":"IE","wb_a3":"IRL","woe_id":-99,"adm0_a3_is":"IRL","adm0_a3_us":"IRL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"IRL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-6.197884894220991,53.86756500916336],[-6.03298539877761,53.15316417094435],[-6.788856573910849,52.260117906292336],[-8.56161658368356,51.669301255899356],[-9.977085740590269,51.82045482035307],[-9.16628251793078,52.86462881124268],[-9.688524542672454,53.8813626165853],[-8.327987433292009,54.66451894796863],[-7.572167934591064,55.13162221945487],[-7.366030646178785,54.59584096945272],[-7.572167934591064,54.059956366586],[-6.953730231138067,54.073702297575636],[-6.197884894220991,53.86756500916336]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Iceland","sov_a3":"ISL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Iceland","adm0_a3":"ISL","geou_dif":0,"geounit":"Iceland","gu_a3":"ISL","su_dif":0,"subunit":"Iceland","su_a3":"ISL","brk_diff":0,"name":"Iceland","name_long":"Iceland","brk_a3":"ISL","brk_name":"Iceland","brk_group":null,"abbrev":"Iceland","postal":"IS","formal_en":"Republic of Iceland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Iceland","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":4,"mapcolor13":9,"pop_est":306694,"gdp_md_est":12710,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"IS","iso_a3":"ISL","iso_n3":"352","un_a3":"352","wb_a2":"IS","wb_a3":"ISL","woe_id":-99,"adm0_a3_is":"ISL","adm0_a3_us":"ISL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":7,"tiny":-99,"homepart":1,"filename":"ISL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-14.508695441129236,66.45589223903141],[-14.739637417041605,65.8087482774403],[-13.60973222497981,65.12667104761987],[-14.909833746794902,64.36408193628868],[-17.794438035543422,63.67874909123385],[-18.656245896874992,63.49638296167582],[-19.97275468594276,63.64363495549153],[-22.762971971110158,63.960178941495386],[-21.778484259517683,64.40211579045551],[-23.95504391121911,64.89112986923348],[-22.184402635170358,65.0849681667603],[-22.227423265053332,65.37859365504272],[-24.326184047939336,65.61118927678847],[-23.65051469572309,66.26251902939522],[-22.134922451250883,66.41046865504687],[-20.57628373867955,65.73211212835143],[-19.05684160000159,66.27660085719477],[-17.79862382655905,65.99385325790978],[-16.167818976292125,66.52679230413587],[-14.508695441129236,66.45589223903141]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Lithuania","sov_a3":"LTU","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Lithuania","adm0_a3":"LTU","geou_dif":0,"geounit":"Lithuania","gu_a3":"LTU","su_dif":0,"subunit":"Lithuania","su_a3":"LTU","brk_diff":0,"name":"Lithuania","name_long":"Lithuania","brk_a3":"LTU","brk_name":"Lithuania","brk_group":null,"abbrev":"Lith.","postal":"LT","formal_en":"Republic of Lithuania","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Lithuania","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":3,"mapcolor13":9,"pop_est":3555179,"gdp_md_est":63330,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LT","iso_a3":"LTU","iso_n3":"440","un_a3":"440","wb_a2":"LT","wb_a3":"LTU","woe_id":-99,"adm0_a3_is":"LTU","adm0_a3_us":"LTU","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":9,"long_len":9,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"LTU.geojson"},"geometry":{"type":"Polygon","coordinates":[[[22.731098667092652,54.327536932993326],[22.65105187347254,54.582740993866736],[22.75776370615526,54.85657440858138],[22.315723504330577,55.015298570365864],[21.268448927503467,55.190481675835315],[21.055800408622414,56.03107636171106],[22.201156853939494,56.33780182557948],[23.878263787539964,56.273671373105266],[24.860684441840757,56.37252838807963],[25.000934279080894,56.16453074810484],[25.533046502390334,56.10029694276603],[26.494331495883753,55.615106919977634],[26.58827924979039,55.16717560487167],[25.7684326514798,54.84696259217509],[25.536353794056993,54.28242340760253],[24.450683628037037,53.905702216194754],[23.48412763844985,53.91249766704114],[23.24398725758951,54.22056671814914],[22.731098667092652,54.327536932993326]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Luxembourg","sov_a3":"LUX","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Luxembourg","adm0_a3":"LUX","geou_dif":0,"geounit":"Luxembourg","gu_a3":"LUX","su_dif":0,"subunit":"Luxembourg","su_a3":"LUX","brk_diff":0,"name":"Luxembourg","name_long":"Luxembourg","brk_a3":"LUX","brk_name":"Luxembourg","brk_group":null,"abbrev":"Lux.","postal":"L","formal_en":"Grand Duchy of Luxembourg","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Luxembourg","name_alt":null,"mapcolor7":1,"mapcolor8":7,"mapcolor9":3,"mapcolor13":7,"pop_est":491775,"gdp_md_est":39370,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"LU","iso_a3":"LUX","iso_n3":"442","un_a3":"442","wb_a2":"LU","wb_a3":"LUX","woe_id":-99,"adm0_a3_is":"LUX","adm0_a3_us":"LUX","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":4,"tiny":5,"homepart":1,"filename":"LUX.geojson"},"geometry":{"type":"Polygon","coordinates":[[[6.043073357781111,50.128051662794235],[6.242751092156993,49.90222565367873],[6.186320428094177,49.463802802114515],[5.897759230176405,49.44266714130703],[5.674051954784829,49.529483547557504],[5.782417433300906,50.09032786722122],[6.043073357781111,50.128051662794235]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Latvia","sov_a3":"LVA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Latvia","adm0_a3":"LVA","geou_dif":0,"geounit":"Latvia","gu_a3":"LVA","su_dif":0,"subunit":"Latvia","su_a3":"LVA","brk_diff":0,"name":"Latvia","name_long":"Latvia","brk_a3":"LVA","brk_name":"Latvia","brk_group":null,"abbrev":"Lat.","postal":"LV","formal_en":"Republic of Latvia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Latvia","name_alt":null,"mapcolor7":4,"mapcolor8":7,"mapcolor9":6,"mapcolor13":13,"pop_est":2231503,"gdp_md_est":38860,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"LV","iso_a3":"LVA","iso_n3":"428","un_a3":"428","wb_a2":"LV","wb_a3":"LVA","woe_id":-99,"adm0_a3_is":"LVA","adm0_a3_us":"LVA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"LVA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[21.055800408622414,56.03107636171106],[21.09042361825797,56.78387278912293],[21.581866489353672,57.41187063254993],[22.524341261492875,57.75337433535076],[23.318452996522097,57.00623647727487],[24.12072960785343,57.02569265403277],[24.312862583114622,57.79342357037698],[25.16459354014927,57.97015696881519],[25.602809685984365,57.84752879498657],[26.463532342237787,57.47638865826633],[27.28818484875151,57.47452830670383],[27.77001590344093,57.24425812441123],[27.855282016722526,56.75932648378429],[28.176709425577993,56.16912995057881],[27.10245975109453,55.783313707087686],[26.494331495883753,55.615106919977634],[25.533046502390334,56.10029694276603],[25.000934279080894,56.16453074810484],[24.860684441840757,56.37252838807963],[23.878263787539964,56.273671373105266],[22.201156853939494,56.33780182557948],[21.055800408622414,56.03107636171106]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Montenegro","sov_a3":"MNE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Montenegro","adm0_a3":"MNE","geou_dif":0,"geounit":"Montenegro","gu_a3":"MNE","su_dif":0,"subunit":"Montenegro","su_a3":"MNE","brk_diff":0,"name":"Montenegro","name_long":"Montenegro","brk_a3":"MNE","brk_name":"Montenegro","brk_group":null,"abbrev":"Mont.","postal":"ME","formal_en":"Montenegro","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Montenegro","name_alt":null,"mapcolor7":4,"mapcolor8":1,"mapcolor9":4,"mapcolor13":5,"pop_est":672180,"gdp_md_est":6816,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"ME","iso_a3":"MNE","iso_n3":"499","un_a3":"499","wb_a2":"ME","wb_a3":"MNE","woe_id":-99,"adm0_a3_is":"MNE","adm0_a3_us":"MNE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":10,"long_len":10,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"MNE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[19.801613396898688,42.50009349219084],[19.738051385179627,42.688247382165564],[19.3044900000001,42.19574],[19.37177000000014,41.87755],[19.16246,41.95502],[18.88214,42.28151],[18.45,42.48],[18.56,42.65],[18.70648,43.20011],[19.03165,43.43253],[19.21852,43.52384],[19.48389,43.35229],[19.63,43.21377997027054],[19.95857,43.10604],[20.3398,42.89852],[20.25758,42.81275000000011],[20.0707,42.58863],[19.801613396898688,42.50009349219084]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Netherlands","sov_a3":"NL1","adm0_dif":1,"level":2,"type":"Country","admin":"Netherlands","adm0_a3":"NLD","geou_dif":0,"geounit":"Netherlands","gu_a3":"NLD","su_dif":0,"subunit":"Netherlands","su_a3":"NLD","brk_diff":0,"name":"Netherlands","name_long":"Netherlands","brk_a3":"NLD","brk_name":"Netherlands","brk_group":null,"abbrev":"Neth.","postal":"NL","formal_en":"Kingdom of the Netherlands","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Netherlands","name_alt":null,"mapcolor7":4,"mapcolor8":2,"mapcolor9":2,"mapcolor13":9,"pop_est":16715999,"gdp_md_est":672000,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"NL","iso_a3":"NLD","iso_n3":"528","un_a3":"528","wb_a2":"NL","wb_a3":"NLD","woe_id":-99,"adm0_a3_is":"NLD","adm0_a3_us":"NLD","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Western Europe","region_wb":"Europe & Central Asia","name_len":11,"long_len":11,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"NLD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[6.074182570020923,53.510403347378144],[6.905139601274129,53.48216217713064],[7.092053256873896,53.14404328064489],[6.842869500362383,52.22844025329755],[6.589396599970826,51.852029120483394],[5.988658074577813,51.851615709025054],[6.156658155958779,50.80372101501058],[5.606975945670001,51.037298488969775],[4.973991326526914,51.475023708698124],[4.047071160507527,51.26725861266857],[3.314971144228537,51.34575511331991],[3.830288527043137,51.62054454203195],[4.705997348661185,53.09179840759776],[6.074182570020923,53.510403347378144]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Moldova","sov_a3":"MDA","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Moldova","adm0_a3":"MDA","geou_dif":0,"geounit":"Moldova","gu_a3":"MDA","su_dif":0,"subunit":"Moldova","su_a3":"MDA","brk_diff":0,"name":"Moldova","name_long":"Moldova","brk_a3":"MDA","brk_name":"Moldova","brk_group":null,"abbrev":"Mda.","postal":"MD","formal_en":"Republic of Moldova","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Moldova","name_alt":null,"mapcolor7":3,"mapcolor8":5,"mapcolor9":4,"mapcolor13":12,"pop_est":4320748,"gdp_md_est":10670,"pop_year":-99,"lastcensus":2004,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MD","iso_a3":"MDA","iso_n3":"498","un_a3":"498","wb_a2":"MD","wb_a3":"MDA","woe_id":-99,"adm0_a3_is":"MDA","adm0_a3_us":"MDA","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MDA.geojson"},"geometry":{"type":"Polygon","coordinates":[[[26.619336785597795,48.22072622333347],[26.857823520624805,48.368210761094495],[27.522537469195154,48.467119452501116],[28.259546746541844,48.15556224221342],[28.670891147585163,48.1181485052341],[29.12269819511303,47.84909516050646],[29.05086795422733,47.51022695575249],[29.41513512545274,47.34664520933257],[29.559674106573112,46.928582872091326],[29.908851759569302,46.67436066343146],[29.838210076626297,46.52532583270169],[30.02465864433537,46.42393667254503],[29.75997195813639,46.34998769793536],[29.170653924279886,46.3792623968287],[29.072106967899295,46.517677720722496],[28.862972446414062,46.43788930926383],[28.93371748222162,46.2588304713725],[28.659987420371575,45.93998688413164],[28.485269402792767,45.5969070501459],[28.233553501099042,45.48828318946837],[28.0544429867754,45.944586086605625],[28.160017937947714,46.37156260841722],[28.128030226359044,46.810476386088254],[27.551166212684848,47.40511709247083],[27.233872918412743,47.82677094175638],[26.924176059687568,48.123264472030996],[26.619336785597795,48.22072622333347]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Macedonia","sov_a3":"MKD","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Macedonia","adm0_a3":"MKD","geou_dif":0,"geounit":"Macedonia","gu_a3":"MKD","su_dif":0,"subunit":"Macedonia","su_a3":"MKD","brk_diff":0,"name":"North Macedonia","name_long":"Macedonia","brk_a3":"MKD","brk_name":"Macedonia","brk_group":null,"abbrev":"Mkd.","postal":"MK","formal_en":"Former Yugoslav Republic of Macedonia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Macedonia, FYR","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":7,"mapcolor13":3,"pop_est":2066718,"gdp_md_est":18780,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"MK","iso_a3":"MKD","iso_n3":"807","un_a3":"807","wb_a2":"MK","wb_a3":"MKD","woe_id":-99,"adm0_a3_is":"MKD","adm0_a3_us":"MKD","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"MKD.geojson"},"geometry":{"type":"Polygon","coordinates":[[[20.59023,41.85541],[20.71731000000011,41.84711],[20.76216,42.05186],[21.35270000000014,42.2068],[21.57663598940212,42.24522439706186],[21.917080000000112,42.30364],[22.38052575042468,42.32025950781508],[22.881373732197346,41.999297186850356],[22.952377150166512,41.33799388281119],[22.76177,41.3048],[22.597308383889015,41.130487168943205],[22.05537763844427,41.14986583105269],[21.674160597426976,40.93127452245795],[21.0200403174764,40.84272695572588],[20.60518,41.08622],[20.46315,41.5150900000001],[20.59023,41.85541]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Norway","sov_a3":"NOR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Norway","adm0_a3":"NOR","geou_dif":0,"geounit":"Norway","gu_a3":"NOR","su_dif":0,"subunit":"Norway","su_a3":"NOR","brk_diff":0,"name":"Norway","name_long":"Norway","brk_a3":"NOR","brk_name":"Norway","brk_group":null,"abbrev":"Nor.","postal":"N","formal_en":"Kingdom of Norway","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Norway","name_alt":null,"mapcolor7":5,"mapcolor8":3,"mapcolor9":8,"mapcolor13":12,"pop_est":4676305,"gdp_md_est":276400,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"NO","iso_a3":"NOR","iso_n3":"578","un_a3":"578","wb_a2":"NO","wb_a3":"NOR","woe_id":-99,"adm0_a3_is":"NOR","adm0_a3_us":"NOR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"NOR.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[28.165547316202915,71.18547435168051],[31.29341840996548,70.45378774685992],[30.005435011522792,70.1862588568849],[31.10107872897512,69.55808014594486],[29.399580519332886,69.15691600206307],[28.591929559043194,69.0647769232867],[29.01557295097197,69.76649119737797],[27.73229210786789,70.16419302029628],[26.1796220232263,69.82529897732616],[25.68921268077639,69.09211375596902],[24.73567915212672,68.64955678982145],[23.662049594830762,68.89124746365053],[22.356237827247412,68.84174144151494],[21.24493615081073,69.37044302029312],[20.64559288908958,69.10624726020085],[20.025268995857914,69.06513865831272],[19.878559604581255,68.40719432237262],[17.99386844246439,68.56739126247734],[17.729181756265348,68.01055186631623],[16.76887861498554,68.01393667263139],[16.108712192456835,67.3024555528369],[15.108411492583059,66.19386688909543],[13.55568973150909,64.78702769638147],[13.919905226302205,64.44542064071611],[13.57191613124877,64.04911408146967],[12.57993533697393,64.06621898055835],[11.93056928879423,63.128317572676984],[11.992064243221535,61.800362453856565],[12.631146681375242,61.29357168237009],[12.3003658382749,60.11793284773006],[11.468271925511175,59.432393296946],[11.027368605196926,58.856149400459394],[10.356556837616097,59.46980703392538],[8.382000359743643,58.31328847923328],[7.048748406613299,58.07888418235728],[5.665835402050419,58.58815542259367],[5.308234490590735,59.66323191999382],[4.992078077829007,61.970998033284275],[5.912900424837885,62.614472968182696],[8.553411085655766,63.45400828719647],[10.527709181366788,64.48603831649748],[12.358346795306375,65.87972585719316],[14.761145867581604,67.81064158799515],[16.43592736172897,68.56320547146169],[19.184028354578516,69.81744415961782],[21.378416375420613,70.25516937934606],[23.023742303161583,70.20207184516626],[24.546543409938522,71.03049673123724],[26.370049676221807,70.98626170519537],[28.165547316202915,71.18547435168051]]],[[[24.72412,77.85385],[22.49032,77.44493],[20.72601,77.67704],[21.41611,77.93504],[20.8119,78.25463],[22.88426,78.45494],[23.28134,78.07954],[24.72412,77.85385]]],[[[18.25183,79.70175],[21.54383,78.95611],[19.02737,78.5626],[18.47172,77.82669],[17.59441,77.63796],[17.1182,76.80941],[15.91315,76.77045],[13.76259,77.38035],[14.66956,77.73565],[13.1706,78.02493],[11.22231,78.8693],[10.44453,79.65239],[13.17077,80.01046],[13.71852,79.66039],[15.14282,79.67431],[15.52255,80.01608],[16.99085,80.05086],[18.25183,79.70175]]],[[[25.447625359811894,80.40734039989451],[27.4075057309135,80.05640574820046],[25.92465050629818,79.51783397085455],[23.02446577321362,79.4000117052291],[20.075188429451885,79.56682322866726],[19.897266473070914,79.84236196564751],[18.462263624757924,79.85988027619442],[17.368015170977458,80.31889618602702],[20.455992059010697,80.59815562613224],[21.9079447771154,80.35767934846209],[22.919252557067438,80.65714427359349],[25.447625359811894,80.40734039989451]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Poland","sov_a3":"POL","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Poland","adm0_a3":"POL","geou_dif":0,"geounit":"Poland","gu_a3":"POL","su_dif":0,"subunit":"Poland","su_a3":"POL","brk_diff":0,"name":"Poland","name_long":"Poland","brk_a3":"POL","brk_name":"Poland","brk_group":null,"abbrev":"Pol.","postal":"PL","formal_en":"Republic of Poland","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Poland","name_alt":null,"mapcolor7":3,"mapcolor8":7,"mapcolor9":1,"mapcolor13":2,"pop_est":38482919,"gdp_md_est":667900,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"PL","iso_a3":"POL","iso_n3":"616","un_a3":"616","wb_a2":"PL","wb_a3":"POL","woe_id":-99,"adm0_a3_is":"POL","adm0_a3_us":"POL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"POL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[15.01699588385867,51.10667409932158],[14.607098422919535,51.745188096719964],[14.685026482815688,52.0899474147552],[14.4375997250022,52.62485016540838],[14.074521111719491,52.98126251892543],[14.353315463934138,53.24817129171297],[14.119686313542587,53.75702912049103],[14.802900424873458,54.05070628520575],[16.36347700365573,54.513158677785725],[17.622831658608675,54.85153595643291],[18.62085859546164,54.68260569927078],[18.696254510175464,54.43871877706929],[19.660640089606403,54.42608388937393],[20.892244500418624,54.31252492941253],[22.731098667092652,54.327536932993326],[23.24398725758951,54.22056671814914],[23.48412763844985,53.91249766704114],[23.527535841575002,53.470121568406555],[23.80493493011778,53.089731350306074],[23.799198846133375,52.69109935160657],[23.199493849386187,52.486977444053664],[23.508002150168693,52.02364655212473],[23.52707075368437,51.57845408793023],[24.029985792748903,50.70540660257518],[23.922757195743262,50.42488108987875],[23.426508416444392,50.30850576435745],[22.518450148211603,49.47677358661974],[22.776418898212626,49.02739533140962],[22.558137648211755,49.085738023467144],[21.607808058364213,49.47010732685409],[20.887955356538413,49.32877228453583],[20.41583947111985,49.43145335549977],[19.825022820726872,49.21712535256923],[19.320712517990472,49.571574001659194],[18.909574822676316,49.435845852244576],[18.853144158613617,49.49622976337764],[18.392913852622172,49.98862864847075],[17.64944502123899,50.049038397819956],[17.55456709155112,50.36214590107641],[16.868769158605655,50.47397370055603],[16.719475945714436,50.21574656839354],[16.176253289462267,50.42260732685791],[16.23862674323857,50.69773265237984],[15.490972120839727,50.78472992614321],[15.01699588385867,51.10667409932158]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Portugal","sov_a3":"PRT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Portugal","adm0_a3":"PRT","geou_dif":0,"geounit":"Portugal","gu_a3":"PRT","su_dif":1,"subunit":"Portugal","su_a3":"PR1","brk_diff":0,"name":"Portugal","name_long":"Portugal","brk_a3":"PR1","brk_name":"Portugal","brk_group":null,"abbrev":"Port.","postal":"P","formal_en":"Portuguese Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Portugal","name_alt":null,"mapcolor7":1,"mapcolor8":7,"mapcolor9":1,"mapcolor13":4,"pop_est":10707924,"gdp_md_est":208627,"pop_year":-99,"lastcensus":2011,"gdp_year":0,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"PT","iso_a3":"PRT","iso_n3":"620","un_a3":"620","wb_a2":"PT","wb_a3":"PRT","woe_id":-99,"adm0_a3_is":"PRT","adm0_a3_us":"PRT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":8,"long_len":8,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"PRT.geojson"},"geometry":{"type":"Polygon","coordinates":[[[-9.034817674180246,41.88057058365967],[-8.67194576662672,42.13468943945496],[-8.263856980817792,42.28046865495034],[-8.013174607769912,41.790886135417125],[-7.422512986673795,41.79207469335983],[-7.251308966490824,41.91834605566505],[-6.668605515967656,41.883386949219584],[-6.389087693700915,41.381815497394655],[-6.851126674822552,41.11108266861753],[-6.864019944679385,40.33087189387483],[-7.026413133156595,40.184524237624245],[-7.066591559263529,39.71189158788277],[-7.498632371439725,39.62957103124181],[-7.098036668313128,39.03007274022378],[-7.374092169616318,38.37305858006492],[-7.029281175148796,38.07576406508977],[-7.166507941099865,37.803894354802225],[-7.537105475281024,37.42890432387623],[-7.453725551778092,37.09778758396607],[-7.855613165711985,36.83826854099627],[-8.382816127953689,36.97888011326246],[-8.898856980820327,36.86880931248078],[-8.746101446965554,37.65134552667661],[-8.839997524439879,38.26624339451761],[-9.287463751655224,38.3584858261586],[-9.526570603869715,38.73742910415491],[-9.446988898140232,39.39206614842837],[-9.048305223008427,39.75509308527877],[-8.977353481471681,40.15930613866581],[-8.768684047877102,40.76063894303019],[-8.79085323733031,41.18433401139126],[-8.99078935386757,41.54345937760364],[-9.034817674180246,41.88057058365967]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Romania","sov_a3":"ROU","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Romania","adm0_a3":"ROU","geou_dif":0,"geounit":"Romania","gu_a3":"ROU","su_dif":0,"subunit":"Romania","su_a3":"ROU","brk_diff":0,"name":"Romania","name_long":"Romania","brk_a3":"ROU","brk_name":"Romania","brk_group":null,"abbrev":"Rom.","postal":"RO","formal_en":"Romania","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Romania","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":3,"mapcolor13":13,"pop_est":22215421,"gdp_md_est":271400,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"RO","iso_a3":"ROU","iso_n3":"642","un_a3":"642","wb_a2":"RO","wb_a3":"ROM","woe_id":-99,"adm0_a3_is":"ROU","adm0_a3_us":"ROU","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"ROU.geojson"},"geometry":{"type":"Polygon","coordinates":[[[22.710531447040495,47.88219391538941],[23.142236362406802,48.09634105080695],[23.76095828623741,47.985598456405455],[24.40205610525038,47.98187775328042],[24.866317172960578,47.73752574318831],[25.20774336111299,47.89105642352747],[25.9459411964024,47.987148749374214],[26.19745039236693,48.22088125263035],[26.619336785597795,48.22072622333347],[26.924176059687568,48.123264472030996],[27.233872918412743,47.82677094175638],[27.551166212684848,47.40511709247083],[28.128030226359044,46.810476386088254],[28.160017937947714,46.37156260841722],[28.0544429867754,45.944586086605625],[28.233553501099042,45.48828318946837],[28.679779493939378,45.304030870131704],[29.149724969201653,45.46492544207245],[29.603289015427432,45.293308010431126],[29.626543409958767,45.03539093686239],[29.141611769331835,44.82021027279904],[28.837857700320203,44.913873806328056],[28.558081495891997,43.70746165625813],[27.970107049275075,43.81246816667521],[27.242399529740908,44.175986029632405],[26.065158725699746,43.94349376075126],[25.569271681426926,43.68844472917472],[24.100679152124172,43.74105133724785],[23.33230228037632,43.89701080990471],[22.944832391051847,43.82378530534713],[22.65714969248299,44.23492300066128],[22.4740084164406,44.40922760678177],[22.705725538837356,44.57800283464702],[22.459022251075936,44.7025171982543],[22.14508792490281,44.47842234962059],[21.562022739353605,44.7689472519655],[21.483526238702233,45.18117015235778],[20.874312778413355,45.416375433934235],[20.762174920339987,45.734573065771436],[20.220192498462836,46.127468980486555],[21.02195234547125,46.3160879583519],[21.62651492685387,46.99423777931816],[22.099767693782834,47.6724392767167],[22.710531447040495,47.88219391538941]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Russia","sov_a3":"RUS","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Russia","adm0_a3":"RUS","geou_dif":0,"geounit":"Russia","gu_a3":"RUS","su_dif":0,"subunit":"Russia","su_a3":"RUS","brk_diff":0,"name":"Russia","name_long":"Russian Federation","brk_a3":"RUS","brk_name":"Russia","brk_group":null,"abbrev":"Rus.","postal":"RUS","formal_en":"Russian Federation","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Russian Federation","name_alt":null,"mapcolor7":2,"mapcolor8":5,"mapcolor9":7,"mapcolor13":7,"pop_est":140041247,"gdp_md_est":2266000,"pop_year":-99,"lastcensus":2010,"gdp_year":-99,"economy":"3. Emerging region: BRIC","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"RU","iso_a3":"RUS","iso_n3":"643","un_a3":"643","wb_a2":"RU","wb_a3":"RUS","woe_id":-99,"adm0_a3_is":"RUS","adm0_a3_us":"RUS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":18,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"RUS.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[143.64800744036287,50.74760040954151],[144.65414757708564,48.976390692737596],[143.17392785051723,49.30655141865037],[142.5586682476501,47.861575018904915],[143.53349246640406,46.83672801369249],[143.5052771343726,46.13790761980948],[142.74770063697392,46.74076487892657],[142.0920300640545,45.96675527605879],[141.90692508358504,46.80592886004655],[142.0184428244709,47.780132961612935],[141.90444461483506,48.85918854429956],[142.13580000220568,49.61516307229746],[142.1799833518153,50.95234243428192],[141.59407596249002,51.93543488220254],[141.68254601457366,53.30196645772878],[142.60693403541075,53.762145087287905],[142.2097489768154,54.22547597921687],[142.654786411713,54.36588084575388],[142.91461551327657,53.704577541714734],[143.26084760963207,52.74076040303905],[143.23526777564766,51.75666026468875],[143.64800744036287,50.74760040954151]]],[[[22.731098667092652,54.327536932993326],[20.892244500418652,54.312524929412575],[19.660640089606403,54.426083889373984],[19.888481479581344,54.8661603867715],[21.2684489275035,55.19048167583528],[22.315723504330606,55.0152985703659],[22.757763706155288,54.85657440858142],[22.651051873472568,54.58274099386671],[22.731098667092652,54.327536932993326]]],[[[-175.01425,66.58435],[-174.33983,66.33556],[-174.57182,67.06219],[-171.85731,66.91308],[-169.89958,65.97724],[-170.89107,65.54139],[-172.53025,65.43791],[-172.555,64.46079],[-172.95533,64.25269],[-173.89184,64.2826],[-174.65392,64.63125],[-175.98353,64.92288],[-176.20716,65.35667],[-177.22266,65.52024],[-178.35993,65.39052],[-178.90332,65.74044],[-178.68611,66.11211],[-179.88377,65.87456],[-179.43268,65.40411],[-180,64.97970870219837],[-180,68.96363636363635],[-177.55,68.2],[-174.92825,67.20589],[-175.01425,66.58435]]],[[[180.00000000000014,70.83219920854668],[178.9034250000001,70.78114],[178.7253,71.0988],[180.00000000000014,71.51571433642826],[180.00000000000014,70.83219920854668]]],[[[-178.69378,70.89302],[-180,70.83219920854668],[-180,71.51571433642826],[-179.871875,71.55762],[-179.02433,71.55553],[-177.577945,71.26948],[-177.663575,71.13277],[-178.69378,70.89302]]],[[[143.60385,73.21244],[142.08763,73.20544],[140.038155,73.31692],[139.86312,73.36983],[140.81171,73.76506],[142.06207,73.85758],[143.48283,73.47525],[143.60385,73.21244]]],[[[150.73167,75.08406],[149.575925,74.68892],[147.977465,74.778355],[146.11919,75.17298],[146.358485,75.49682],[148.22223,75.345845],[150.73167,75.08406]]],[[[145.086285,75.562625],[144.3,74.82],[140.61381,74.84768],[138.95544,74.61148],[136.97439,75.26167],[137.51176,75.94917],[138.831075,76.13676],[141.471615,76.09289],[145.086285,75.562625]]],[[[57.5356925799924,70.72046397570216],[56.94497928246395,70.63274323188668],[53.6773751157842,70.76265778266847],[53.41201663596539,71.2066616889202],[51.60189456564572,71.47475901965049],[51.45575361512422,72.01488108996514],[52.47827518088357,72.22944163684096],[52.444168735570855,72.77473135038485],[54.42761355979766,73.62754751249759],[53.50828982932515,73.74981395130015],[55.90245893740766,74.62748647734533],[55.631932814359715,75.08141225859717],[57.86864383324885,75.60939036732321],[61.170044386647504,76.25188345000814],[64.49836836127022,76.43905548776928],[66.2109770038551,76.80978221303124],[68.15705976753483,76.93969676381292],[68.85221113472512,76.54481130645462],[68.18057254422766,76.23364166940911],[64.637326287703,75.73775462513623],[61.58350752141476,75.2608845079468],[58.47708214705338,74.30905630156283],[56.98678551618801,73.33304352486624],[55.419335971910954,72.37126760526598],[55.622837762276305,71.54059479439033],[57.5356925799924,70.72046397570216]]],[[[106.97013000000013,76.97419],[107.24000000000015,76.48],[108.1538,76.72335000000015],[111.07726000000017,76.71],[113.33151,76.22224],[114.13417,75.84764],[113.88539,75.32779000000014],[112.77918,75.03186],[110.1512500000002,74.47673],[109.4,74.18],[110.64,74.04],[112.11919,73.78774000000011],[113.01954000000026,73.97693000000015],[113.52958000000032,73.33505000000011],[113.96881,73.59488],[115.56782,73.75285],[118.77633000000023,73.58772],[119.02,73.12],[123.20066000000011,72.97122],[123.25777000000018,73.73503000000011],[125.38000000000018,73.56],[126.97644,73.56549],[128.59126,73.03871],[129.05157,72.39872],[128.46000000000012,71.98],[129.7159900000002,71.19304],[131.28858000000028,70.78699000000012],[132.25350000000017,71.83630000000011],[133.85766000000032,71.38642000000016],[135.56193,71.65525000000014],[137.49755,71.34763],[138.23409000000018,71.62803],[139.86983000000012,71.48783000000014],[139.14791,72.4161900000001],[140.46817,72.84941000000013],[149.5,72.2],[150.3511800000002,71.60643],[152.96890000000022,70.84222],[157.00688,71.03141],[158.99779,70.86672],[159.83031000000025,70.45324],[159.70866,69.72198],[160.94053000000034,69.4372800000001],[162.27907000000013,69.64204],[164.05248000000014,69.66823],[165.94037000000023,69.47199],[167.83567,69.58269],[169.5776300000002,68.6938],[170.81688000000028,69.01363],[170.0082000000002,69.65276],[170.4534500000003,70.09703],[173.64391000000026,69.81743],[175.72403000000023,69.87725000000023],[178.6,69.4],[180.00000000000014,68.96363636363657],[180.00000000000014,64.97970870219848],[179.99281,64.97433],[178.70720000000026,64.53493],[177.41128000000018,64.60821],[178.31300000000024,64.07593],[178.9082500000002,63.251970000000135],[179.37034,62.982620000000104],[179.48636,62.56894],[179.22825000000014,62.30410000000015],[177.3643,62.5219],[174.56929000000022,61.76915],[173.68013,61.65261],[172.15,60.95],[170.6985000000001,60.33618],[170.3308500000003,59.88177],[168.90046,60.57355],[166.29498000000032,59.788550000000214],[165.84000000000023,60.16],[164.87674,59.7316],[163.53929000000014,59.86871],[163.21711000000025,59.21101],[162.0173300000001,58.24328],[162.05297,57.83912],[163.19191,57.61503000000011],[163.05794000000017,56.159240000000125],[162.12958000000023,56.12219],[161.70146,55.285680000000156],[162.11749000000017,54.85514],[160.36877000000032,54.34433],[160.02173000000022,53.20257],[158.5309400000002,52.958680000000236],[158.23118,51.94269],[156.7897900000003,51.01105],[156.42000000000016,51.7],[155.99182,53.15895],[155.43366000000012,55.38103000000012],[155.91442000000032,56.767920000000146],[156.75815,57.3647],[156.8103500000001,57.83204],[158.3643300000002,58.05575],[160.15064000000012,59.31477000000012],[161.87204,60.34300000000013],[163.66969,61.1409],[164.47355000000013,62.55061],[163.2584200000002,62.46627],[162.65791,61.6425],[160.1214800000001,60.54423],[159.30232,61.77396],[156.7206800000001,61.43442],[154.21806000000035,59.75818000000013],[155.04375,59.14495],[152.81185,58.88385],[151.26573000000025,58.78089],[151.33815000000013,59.50396],[149.78371,59.65573000000014],[148.54481,59.16448],[145.48722,59.33637],[142.19782000000018,59.03998],[138.95848000000032,57.08805],[135.12619,54.72959],[136.70171,54.603550000000126],[137.19342,53.97732],[138.1647,53.755010000000254],[138.80463,54.25455000000011],[139.90151,54.18968000000018],[141.34531,53.08957000000012],[141.37923,52.23877],[140.5974200000002,51.2396700000001],[140.51308,50.04553000000013],[140.06193000000022,48.44671000000017],[138.5547200000002,46.99965],[138.21971,46.30795],[136.86232,45.14350000000019],[135.5153500000002,43.989],[134.86939000000027,43.39821],[133.53687000000028,42.81147],[132.90627000000015,42.79849],[132.27807000000027,43.28456000000011],[130.93587000000014,42.55274],[130.78,42.22000000000019],[130.64000000000019,42.395],[130.6338664084098,42.90301463477056],[131.144687941615,42.92998973242695],[131.28855512911562,44.111519680348266],[131.02519000000026,44.96796],[131.8834542176596,45.32116160743652],[133.09712000000022,45.14409],[133.7696439963132,46.116926988299156],[134.1123500000002,47.21248000000014],[134.50081,47.578450000000146],[135.0263114767868,48.47822988544391],[133.37359581922803,48.18344167743484],[132.50669000000013,47.78896],[130.98726000000013,47.79013],[130.58229332898267,48.729687404976204],[129.3978178244205,49.440600084015614],[127.65740000000038,49.76027],[127.28745568248493,50.73979726826545],[126.93915652883786,51.3538941514059],[126.56439904185699,51.7842554795327],[125.94634891164647,52.79279857035695],[125.06821129771045,53.161044826868924],[123.57147,53.4588],[122.24574791879307,53.43172597921369],[121.00308475147037,53.25140106873124],[120.1770886577169,52.75388621684121],[120.725789015792,52.51622630473091],[120.7382,51.96411],[120.18208000000018,51.64355],[119.27939,50.58292],[119.28846072802585,50.14288279886196],[117.8792444194265,49.51098338479704],[116.67880089728621,49.888531399121405],[115.48569542853144,49.80517731383475],[114.96210981655038,50.14024730081513],[114.36245649623534,50.248302720737485],[112.89773969935439,49.54356537535699],[111.58123091028668,49.37796824807767],[110.66201053267886,49.13012807880585],[109.40244917199672,49.29296051695769],[108.47516727095127,49.28254771585071],[107.86817589725112,49.79370514586588],[106.88880415245532,50.27429596618029],[105.8865914245869,50.406019192092174],[104.62158,50.275320000000164],[103.67654544476036,50.089966132195144],[102.25589000000011,50.51056000000011],[102.06521,51.25991],[100.88948042196265,51.51685578063842],[99.98173221232356,51.63400625264395],[98.8614905131005,52.04736603454671],[97.82573978067452,51.01099518493325],[98.23176150919173,50.42240062112873],[97.25976000000023,49.72605],[95.81402000000017,49.977460000000114],[94.81594933469879,50.01343333597088],[94.14756635943561,50.48053660745716],[93.10421,50.49529],[92.23471154171969,50.80217072204175],[90.71366743364078,50.331811835321105],[88.80556684769559,49.47052073831247],[87.75126427607685,49.29719798440556],[87.35997033076269,49.21498078062916],[86.82935672398966,49.82667470966813],[85.5412699726825,49.69285858824816],[85.11555952346211,50.11730296487763],[84.41637739455304,50.311399644565824],[83.93511478061893,50.88924551045358],[83.38300377801247,51.069182847693895],[81.94598554883994,50.81219594990633],[80.56844689323546,51.38833649352844],[80.03555952344172,50.864750881547224],[77.80091556184433,53.40441498474754],[76.52517947785478,54.177003485727134],[76.89110029491346,54.49052440044193],[74.38482000000013,53.54685000000011],[73.42567874542053,53.489810289109755],[73.50851606638437,54.035616766976595],[72.22415001820221,54.37665538188679],[71.1801310566095,54.133285224008254],[70.86526655465516,55.169733588270105],[69.06816694527289,55.3852501491435],[68.1691003762589,54.97039175070438],[65.6668700000001,54.601250000000164],[65.17853356309595,54.35422781027208],[61.43660000000013,54.00625],[60.97806644068325,53.66499339457914],[61.699986199800634,52.97999644633427],[60.739993117114544,52.71998647725775],[60.92726850774025,52.447548326215006],[59.96753380721557,51.960420437215674],[61.58800337102414,51.272658799843185],[61.33742435084101,50.79907013610426],[59.93280724471557,50.842194118851836],[59.64228234237057,50.545442206415714],[58.36332000000013,51.06364],[56.77798,51.04355],[55.71694000000011,50.62171000000015],[54.532878452376195,51.02623973245937],[52.32872358583106,51.718652248738096],[50.76664839051219,51.69276235615987],[48.702381626181044,50.60512848571284],[48.577841424357615,49.874759629915644],[47.549480421749394,50.454698391311126],[46.75159630716277,49.35600576435374],[47.0436715024766,49.152038886097586],[46.46644575377629,48.39415233010493],[47.31524000000016,47.71585],[48.05725,47.74377],[48.694733514201886,47.0756281601779],[48.593250000000154,46.561040000000105],[49.101160000000135,46.39933],[48.64541000000011,45.80629],[47.67591,45.64149000000012],[46.68201,44.6092000000001],[47.59094,43.66016000000013],[47.49252,42.98658],[48.58437000000018,41.80888],[47.98728315612604,41.4058192001944],[47.81566572448466,41.151416124021345],[47.373315464066394,41.21973236751114],[46.686070591016716,41.827137152669906],[46.40495079934894,41.860675157227426],[45.7764,42.09244000000024],[45.470279168485916,42.50278066667005],[44.53762291848207,42.711992702803684],[43.93121000000011,42.5549600000001],[43.755990000000196,42.74083],[42.39440000000016,43.2203],[40.92219000000014,43.38215000000014],[40.07696495947985,43.553104153002494],[39.955008579271095,43.434997666999294],[38.68,44.28],[37.53912000000011,44.65721],[36.67546000000013,45.24469],[37.40317,45.4045100000001],[38.23295,46.24087],[37.67372,46.63657],[39.14767,47.04475000000013],[39.12120000000013,47.26336],[38.22353803889948,47.10218984637598],[38.25511233902981,47.54640045835697],[38.77057,47.82562000000024],[39.738277622238996,47.89893707945208],[39.89562000000015,48.23241],[39.67465,48.783820000000134],[40.08078901546949,49.30742991799937],[40.069040000000115,49.60105],[38.59498823421356,49.92646190042373],[38.010631137857075,49.91566152607473],[37.39345950699524,50.38395335550368],[36.626167840325394,50.225590928745135],[35.35611616388812,50.57719737405915],[35.37791,50.77394],[35.02218305841794,51.2075723333715],[34.2248157081544,51.255993150428935],[34.14197838719061,51.566413479206204],[34.39173058445723,51.768881740925906],[33.75269982273588,52.33507457133166],[32.71576053236716,52.23846548116216],[32.41205813978777,52.28869497334977],[32.15944000000022,52.061250000000115],[31.78597,52.10168],[31.54001834486226,52.74205231384644],[31.30520063652798,53.0739958766733],[31.49764,53.16743000000014],[32.304519484188376,53.132726141972846],[32.693643019346126,53.35142080343214],[32.405598585751164,53.618045355842014],[31.731272820774592,53.79402944601202],[31.791424187962406,53.974638576872195],[31.384472283663822,54.15705638286238],[30.75753380709878,54.811770941784395],[30.971835971813245,55.081547756564134],[30.87390913262007,55.55097646750351],[29.89629438652244,55.7894632025305],[29.37157189303079,55.67009064393628],[29.22951338066039,55.91834422466641],[28.17670942557794,56.16912995057879],[27.855282016722526,56.75932648378438],[27.770015903440992,57.244258124411196],[27.288184848751655,57.47452830670392],[27.71668582531578,57.79189911562445],[27.420150000000202,58.72457000000014],[28.131699253051863,59.300825100331],[27.98112,59.47537],[29.1177,60.02805000000012],[28.07,60.50352000000015],[30.211107212044652,61.78002777774969],[31.139991082491036,62.357692776124445],[31.51609215671127,62.867687486412905],[30.035872430142803,63.552813625738565],[30.444684686003736,64.20445343693908],[29.544429559047018,64.94867157659056],[30.21765,65.80598],[29.054588657352383,66.94428620062203],[29.977426385220696,67.69829702419275],[28.44594363781877,68.36461294216399],[28.591929559043365,69.0647769232867],[29.39955,69.15692000000018],[31.10108000000011,69.55811],[32.13272000000026,69.90595000000025],[33.77547,69.30142000000012],[36.51396,69.06342],[40.292340000000166,67.9324],[41.059870000000124,67.4571300000001],[41.12595000000019,66.79158000000012],[40.01583,66.26618000000013],[38.38295,65.9995300000001],[33.918710000000175,66.75961],[33.18444,66.63253],[34.81477,65.90015000000014],[34.87857425307877,65.4362128770482],[34.94391000000015,64.41437000000016],[36.23129,64.10945],[37.01273000000012,63.84983000000011],[37.14197000000016,64.33471],[36.539579035089815,64.76446],[37.17604000000014,65.14322000000013],[39.59345,64.52079000000018],[40.43560000000011,64.76446],[39.76260000000016,65.49682],[42.0930900000001,66.47623],[43.01604000000012,66.41858],[43.94975000000014,66.06908],[44.53226,66.75634000000014],[43.69839,67.35245],[44.18795000000014,67.95051],[43.45282,68.57079],[46.25000000000014,68.25],[46.82134000000016,67.68997],[45.55517,67.56652],[45.5620200000001,67.01005000000019],[46.34915000000015,66.6676700000001],[47.894160000000255,66.88455000000016],[48.13876,67.52238],[50.22766000000016,67.99867000000013],[53.71743000000018,68.85738000000012],[54.47171,68.80815],[53.48582000000013,68.20131],[54.72628,68.09702],[55.44268000000014,68.43866],[57.317020000000156,68.46628],[58.80200000000021,68.88082],[59.94142000000019,68.2784400000001],[61.07784000000018,68.94069],[60.03,69.52],[60.55,69.85],[63.50400000000016,69.54739],[64.888115,69.23483500000013],[68.51216000000014,68.09233000000017],[69.18068,68.61563000000012],[68.16444,69.14436],[68.13522,69.35649],[66.93008000000012,69.45461000000012],[67.25976,69.92873],[66.72492000000014,70.70889000000014],[66.69466,71.02897000000024],[68.54006000000011,71.93450000000024],[69.19636000000011,72.84336000000016],[69.94,73.04000000000013],[72.58754,72.7762900000001],[72.79603,72.22006],[71.8481100000001,71.40898],[72.47011,71.09019],[72.79188,70.39114],[72.56470000000022,69.02085],[73.66787,68.4079],[73.2387,67.7404],[71.28000000000011,66.32000000000016],[72.42301000000018,66.17267000000018],[72.82077,66.53267],[73.92099000000016,66.78946000000013],[74.1865100000002,67.28429],[75.052,67.76047000000017],[74.46926000000016,68.32899],[74.93584000000013,68.98918],[73.84236,69.07146],[73.60187000000022,69.62763],[74.3998,70.63175],[73.1011,71.44717000000026],[74.89082000000022,72.12119],[74.65926,72.83227],[75.15801000000019,72.85497000000011],[75.68351,72.30056000000013],[75.28898000000012,71.33556],[76.35911,71.15287000000015],[75.90313000000017,71.87401],[77.57665000000011,72.26717],[79.65202000000014,72.32011],[81.5,71.75],[80.61071000000013,72.58285000000012],[80.51109,73.6482],[82.25,73.85000000000011],[84.65526,73.80591000000018],[86.82230000000024,73.93688],[86.00956,74.45967000000014],[87.16682000000017,75.11643],[88.31571000000011,75.14393],[90.26,75.64],[92.90058,75.77333],[93.23421000000016,76.0472],[95.86000000000016,76.14],[96.67821,75.91548],[98.92254000000023,76.44689],[100.75967000000023,76.43028],[101.03532,76.86189],[101.99084000000013,77.2875400000002],[104.3516000000001,77.69792],[106.06664000000013,77.37389],[104.70500000000024,77.1274],[106.97013000000013,76.97419]]],[[[105.07547,78.30689],[99.43814,77.921],[101.2649,79.23399],[102.08635,79.34641],[102.837815,79.28129],[105.37243,78.71334],[105.07547,78.30689]]],[[[51.13618655783128,80.54728017854093],[49.79368452332071,80.4154277615482],[48.89441124857754,80.3395667589437],[48.754936557821765,80.17546824820084],[47.586119012244154,80.01018117951533],[46.502825962109654,80.24724681265437],[47.07245527526291,80.55942414012945],[44.846958042181114,80.58980988231718],[46.79913862487123,80.77191762971364],[48.318477410684665,80.78400991486996],[48.522806023966695,80.51456899690015],[49.09718956889091,80.75398590770843],[50.03976769389462,80.91888540315182],[51.52293297710369,80.6997256538019],[51.13618655783128,80.54728017854093]]],[[[99.93976,78.88094],[97.75794,78.7562],[94.97259,79.044745],[93.31288,79.4265],[92.5454,80.14379],[91.18107,80.34146],[93.77766,81.0246],[95.940895,81.2504],[97.88385,80.746975],[100.186655,79.780135],[99.93976,78.88094]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":5,"sovereignty":"Republic of Serbia","sov_a3":"SRB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Republic of Serbia","adm0_a3":"SRB","geou_dif":0,"geounit":"Republic of Serbia","gu_a3":"SRB","su_dif":0,"subunit":"Republic of Serbia","su_a3":"SRB","brk_diff":0,"name":"Serbia","name_long":"Serbia","brk_a3":"SRB","brk_name":"Serbia","brk_group":null,"abbrev":"Serb.","postal":"RS","formal_en":"Republic of Serbia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Serbia","name_alt":null,"mapcolor7":3,"mapcolor8":3,"mapcolor9":2,"mapcolor13":10,"pop_est":7379339,"gdp_md_est":80340,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"6. Developing region","income_grp":"3. Upper middle income","wikipedia":-99,"fips_10":null,"iso_a2":"RS","iso_a3":"SRB","iso_n3":"688","un_a3":"688","wb_a2":"YF","wb_a3":"SRB","woe_id":-99,"adm0_a3_is":"SRB","adm0_a3_us":"SRB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":5,"tiny":-99,"homepart":1,"filename":"SRB.geojson"},"geometry":{"type":"Polygon","coordinates":[[[20.87431277841341,45.41637543393432],[21.48352623870221,45.18117015235788],[21.562022739353722,44.76894725196564],[22.145087924902896,44.47842234962059],[22.459022251075965,44.70251719825444],[22.70572553883744,44.57800283464701],[22.474008416440654,44.40922760678177],[22.657149692483074,44.234923000661354],[22.410446404721597,44.008063462900054],[22.500156691180223,43.642814439461006],[22.986018507588483,43.2111612005271],[22.60480146657136,42.898518785161116],[22.43659467946139,42.58032115332394],[22.54501183440965,42.46136200618804],[22.38052575042468,42.32025950781508],[21.917080000000112,42.30364],[21.57663598940212,42.24522439706186],[21.54332,42.3202500000001],[21.66292,42.43922],[21.77505,42.6827],[21.63302,42.67717],[21.43866,42.86255],[21.27421,42.90959],[21.143395,43.06868500000012],[20.95651,43.13094],[20.81448,43.27205],[20.63508,43.21671],[20.49679,42.88469],[20.25758,42.81275000000011],[20.3398,42.89852],[19.95857,43.10604],[19.63,43.21377997027054],[19.48389,43.35229],[19.21852,43.52384],[19.454,43.56810000000013],[19.59976,44.03847],[19.11761,44.42307000000011],[19.36803,44.863],[19.00548,44.86023],[19.39047570158459,45.236515611342384],[19.072768995854176,45.52151113543209],[18.82982,45.90888],[19.59604454924164,46.171729844744554],[20.220192498462893,46.12746898048658],[20.762174920339987,45.734573065771485],[20.87431277841341,45.41637543393432]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Slovakia","sov_a3":"SVK","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Slovakia","adm0_a3":"SVK","geou_dif":0,"geounit":"Slovakia","gu_a3":"SVK","su_dif":0,"subunit":"Slovakia","su_a3":"SVK","brk_diff":0,"name":"Slovakia","name_long":"Slovakia","brk_a3":"SVK","brk_name":"Slovakia","brk_group":null,"abbrev":"Svk.","postal":"SK","formal_en":"Slovak Republic","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Slovak Republic","name_alt":null,"mapcolor7":2,"mapcolor8":4,"mapcolor9":4,"mapcolor13":9,"pop_est":5463046,"gdp_md_est":119500,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"SK","iso_a3":"SVK","iso_n3":"703","un_a3":"703","wb_a2":"SK","wb_a3":"SVK","woe_id":-99,"adm0_a3_is":"SVK","adm0_a3_us":"SVK","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SVK.geojson"},"geometry":{"type":"Polygon","coordinates":[[[18.853144158613617,49.49622976337764],[18.909574822676316,49.435845852244576],[19.320712517990472,49.571574001659194],[19.825022820726872,49.21712535256923],[20.41583947111985,49.43145335549977],[20.887955356538413,49.32877228453583],[21.607808058364213,49.47010732685409],[22.558137648211755,49.085738023467144],[22.28084191253356,48.82539215758067],[22.08560835133485,48.42226430927179],[21.872236362401736,48.31997081155002],[20.801293979584926,48.623854071642384],[20.473562045989866,48.56285004332181],[20.239054396249347,48.32756724709692],[19.769470656013112,48.202691148463614],[19.661363559658497,48.26661489520866],[19.17436486173989,48.11137889260387],[18.77702477384767,48.081768296900634],[18.696512892336926,47.880953681014404],[17.857132602620027,47.758428860050365],[17.48847293464982,47.86746613218621],[16.979666782304037,48.123497015976305],[16.879982944413,48.47001333270947],[16.960288120194576,48.5969823268506],[17.101984897538898,48.81696889911711],[17.545006951577108,48.80001902932537],[17.88648481616181,48.90347524677371],[17.913511590250465,48.996492824899086],[18.104972771891852,49.04398346617531],[18.170498488037964,49.271514797556435],[18.399993523846177,49.31500051533004],[18.554971144289482,49.49501536721878],[18.853144158613617,49.49622976337764]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Slovenia","sov_a3":"SVN","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Slovenia","adm0_a3":"SVN","geou_dif":0,"geounit":"Slovenia","gu_a3":"SVN","su_dif":0,"subunit":"Slovenia","su_a3":"SVN","brk_diff":0,"name":"Slovenia","name_long":"Slovenia","brk_a3":"SVN","brk_name":"Slovenia","brk_group":null,"abbrev":"Slo.","postal":"SLO","formal_en":"Republic of Slovenia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Slovenia","name_alt":null,"mapcolor7":2,"mapcolor8":3,"mapcolor9":2,"mapcolor13":12,"pop_est":2005692,"gdp_md_est":59340,"pop_year":-99,"lastcensus":2011,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"SI","iso_a3":"SVN","iso_n3":"705","un_a3":"705","wb_a2":"SI","wb_a3":"SVN","woe_id":-99,"adm0_a3_is":"SVN","adm0_a3_us":"SVN","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Southern Europe","region_wb":"Europe & Central Asia","name_len":8,"long_len":8,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SVN.geojson"},"geometry":{"type":"Polygon","coordinates":[[[13.806475457421527,46.509306138691215],[14.63247155117483,46.43181732846955],[15.137091912504985,46.65870270444703],[16.011663852612656,46.6836107448117],[16.202298211337364,46.85238597267696],[16.370504998447416,46.8413272161665],[16.564808383864857,46.50375092221983],[15.768732944408551,46.23810822202345],[15.671529575267556,45.83415355079788],[15.323953891672403,45.73178253842768],[15.327674594797427,45.45231639259323],[14.935243767972935,45.471695054702685],[14.595109490627804,45.634940904312714],[14.411968214585414,45.46616567644746],[13.715059848697221,45.50032379819237],[13.937630242578306,45.59101593686462],[13.698109978905478,46.01677806251735],[13.806475457421527,46.509306138691215]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Sweden","sov_a3":"SWE","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Sweden","adm0_a3":"SWE","geou_dif":0,"geounit":"Sweden","gu_a3":"SWE","su_dif":0,"subunit":"Sweden","su_a3":"SWE","brk_diff":0,"name":"Sweden","name_long":"Sweden","brk_a3":"SWE","brk_name":"Sweden","brk_group":null,"abbrev":"Swe.","postal":"S","formal_en":"Kingdom of Sweden","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Sweden","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":2,"mapcolor13":4,"pop_est":9059651,"gdp_md_est":344300,"pop_year":-99,"lastcensus":-99,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"SE","iso_a3":"SWE","iso_n3":"752","un_a3":"752","wb_a2":"SE","wb_a3":"SWE","woe_id":-99,"adm0_a3_is":"SWE","adm0_a3_us":"SWE","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Northern Europe","region_wb":"Europe & Central Asia","name_len":6,"long_len":6,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"SWE.geojson"},"geometry":{"type":"Polygon","coordinates":[[[22.183173455501926,65.72374054632017],[21.21351687997722,65.02600535751527],[21.369631381930958,64.41358795842429],[19.77887576669022,63.60955434839504],[17.84777916837521,62.74940013289681],[17.119554884518124,61.34116567651097],[17.83134606290639,60.63658336042741],[18.78772179533209,60.081914374422595],[17.86922488777634,58.9537661810587],[16.829185011470088,58.71982697207339],[16.447709588291474,57.041118069071885],[15.879785597403783,56.10430186626866],[14.666681349352075,56.200885118222175],[14.100721062891465,55.40778107362265],[12.942910597392057,55.36173737245058],[12.625100538797028,56.30708018658197],[11.787942335668674,57.44181712506307],[11.027368605196866,58.85614940045936],[11.468271925511146,59.43239329694604],[12.3003658382749,60.11793284773003],[12.631146681375183,61.293571682370136],[11.992064243221563,61.80036245385656],[11.93056928879423,63.12831757267698],[12.579935336973932,64.06621898055833],[13.571916131248711,64.04911408146971],[13.919905226302204,64.44542064071608],[13.55568973150909,64.78702769638151],[15.108411492583002,66.19386688909547],[16.108712192456778,67.30245555283689],[16.768878614985482,68.01393667263139],[17.729181756265348,68.01055186631628],[17.993868442464333,68.56739126247736],[19.878559604581255,68.40719432237258],[20.025268995857886,69.0651386583127],[20.645592889089528,69.10624726020087],[21.978534783626117,68.6168456081807],[23.53947309743444,67.93600861273525],[23.565879754335583,66.39605093043743],[23.903378533633802,66.00692739527962],[22.183173455501926,65.72374054632017]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Ukraine","sov_a3":"UKR","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Ukraine","adm0_a3":"UKR","geou_dif":0,"geounit":"Ukraine","gu_a3":"UKR","su_dif":0,"subunit":"Ukraine","su_a3":"UKR","brk_diff":0,"name":"Ukraine","name_long":"Ukraine","brk_a3":"UKR","brk_name":"Ukraine","brk_group":null,"abbrev":"Ukr.","postal":"UA","formal_en":"Ukraine","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Ukraine","name_alt":null,"mapcolor7":5,"mapcolor8":1,"mapcolor9":6,"mapcolor13":3,"pop_est":45700395,"gdp_md_est":339800,"pop_year":-99,"lastcensus":2001,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"UA","iso_a3":"UKR","iso_n3":"804","un_a3":"804","wb_a2":"UA","wb_a3":"UKR","woe_id":-99,"adm0_a3_is":"UKR","adm0_a3_us":"UKR","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Europe","region_un":"Europe","subregion":"Eastern Europe","region_wb":"Europe & Central Asia","name_len":7,"long_len":7,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"UKR.geojson"},"geometry":{"type":"Polygon","coordinates":[[[31.785998162571587,52.101677964885454],[32.15941206231267,52.06126699483322],[32.41205813978763,52.28869497334975],[32.71576053236697,52.23846548116205],[33.7526998227357,52.335074571331695],[34.39173058445701,51.76888174092579],[34.14197838719039,51.56641347920623],[34.22481570815427,51.25599315042895],[35.02218305841788,51.20757233337145],[35.37792361831512,50.77395539001034],[35.35611616388795,50.577197374059054],[36.62616784032534,50.225590928745135],[37.39345950699507,50.38395335550359],[38.010631137856905,49.91566152607463],[38.59498823421342,49.92646190042363],[40.06905846533911,49.6010554062817],[40.08078901546935,49.307429917999286],[39.67466393408753,48.78381846780187],[39.89563235856758,48.23240509703143],[39.738277622238826,47.89893707945198],[38.7705847511412,47.825608222029814],[38.25511233902975,47.546400458356814],[38.22353803889942,47.10218984637588],[37.42513715998999,47.022220567404204],[36.75985477066439,46.698700263040934],[35.82368452326483,46.64596446388707],[34.96234174982388,46.27319651954964],[35.020787794745985,45.65121898048466],[35.51000857925317,45.40999339454619],[36.52999799983016,45.46998973243706],[36.33471276219916,45.113215643893966],[35.23999922052812,44.939996242851606],[33.882511020652885,44.36147858334407],[33.326420932760044,44.56487702084489],[33.54692426934946,45.03477081967489],[32.4541744321055,45.32746613217608],[32.630804477679135,45.519185695978905],[33.58816206231839,45.85156850848024],[33.29856733575471,46.080598456397844],[31.74414025241518,46.333347886737386],[31.675307244602408,46.70624502215554],[30.748748813609097,46.583100084004],[30.377608676888883,46.03241018328567],[29.603289015427432,45.293308010431126],[29.149724969201653,45.46492544207245],[28.679779493939378,45.304030870131704],[28.233553501099042,45.48828318946837],[28.485269402792767,45.5969070501459],[28.659987420371575,45.93998688413164],[28.93371748222162,46.2588304713725],[28.862972446414062,46.43788930926383],[29.072106967899295,46.517677720722496],[29.170653924279886,46.3792623968287],[29.75997195813639,46.34998769793536],[30.02465864433537,46.42393667254503],[29.838210076626297,46.52532583270169],[29.908851759569302,46.67436066343146],[29.559674106573112,46.928582872091326],[29.41513512545274,47.34664520933257],[29.05086795422733,47.51022695575249],[29.12269819511303,47.84909516050646],[28.670891147585163,48.1181485052341],[28.259546746541844,48.15556224221342],[27.522537469195154,48.467119452501116],[26.857823520624805,48.368210761094495],[26.619336785597795,48.22072622333347],[26.19745039236693,48.22088125263035],[25.9459411964024,47.987148749374214],[25.20774336111299,47.89105642352747],[24.866317172960578,47.73752574318831],[24.40205610525038,47.98187775328042],[23.76095828623741,47.985598456405455],[23.142236362406802,48.09634105080695],[22.710531447040495,47.88219391538941],[22.640819939878753,48.15023956968735],[22.08560835133485,48.42226430927179],[22.28084191253356,48.82539215758067],[22.558137648211755,49.085738023467144],[22.776418898212626,49.02739533140962],[22.518450148211603,49.47677358661974],[23.426508416444392,50.30850576435745],[23.922757195743262,50.42488108987875],[24.029985792748903,50.70540660257518],[23.52707075368437,51.57845408793023],[24.00507775238421,51.61744395609446],[24.553106316839518,51.888461005249184],[25.327787713327005,51.91065603291855],[26.337958611768556,51.83228872334793],[27.454066196408434,51.59230337178447],[28.24161502453657,51.57222707783907],[28.61761274589225,51.42771393493484],[28.99283532076353,51.602044379271476],[29.254938185347925,51.368234361366895],[30.157363722460897,51.41613841410147],[30.555117221811457,51.31950348571566],[30.619454380014844,51.822806098022376],[30.927549269338982,52.04235342061438],[31.785998162571587,52.101677964885454]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Australia","sov_a3":"AU1","adm0_dif":1,"level":2,"type":"Country","admin":"Australia","adm0_a3":"AUS","geou_dif":0,"geounit":"Australia","gu_a3":"AUS","su_dif":0,"subunit":"Australia","su_a3":"AUS","brk_diff":0,"name":"Australia","name_long":"Australia","brk_a3":"AUS","brk_name":"Australia","brk_group":null,"abbrev":"Auz.","postal":"AU","formal_en":"Commonwealth of Australia","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Australia","name_alt":null,"mapcolor7":1,"mapcolor8":2,"mapcolor9":2,"mapcolor13":7,"pop_est":21262641,"gdp_md_est":800200,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"AU","iso_a3":"AUS","iso_n3":"036","un_a3":"036","wb_a2":"AU","wb_a3":"AUS","woe_id":-99,"adm0_a3_is":"AUS","adm0_a3_us":"AUS","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Australia and New Zealand","region_wb":"East Asia & Pacific","name_len":9,"long_len":9,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"AUS.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[145.39797814349484,-40.79254851660589],[146.36412072162372,-41.13769540788334],[146.90858361225085,-41.00054615658068],[147.68925947488415,-40.80825815202269],[148.28906782449602,-40.87543751400213],[148.35986453673584,-42.06244516374644],[148.0173014670731,-42.407023614268624],[147.9140519553538,-43.211522312188485],[147.564564243764,-42.93768889747386],[146.87034305235494,-43.634597263362096],[146.66332726459368,-43.58085377377856],[146.04837772032042,-43.54974456153889],[145.43192955951056,-42.69377613705627],[145.2950903668017,-42.03360971452756],[144.71807132383063,-41.162551771815714],[144.74375451067968,-40.70397511165771],[145.39797814349484,-40.79254851660589]]],[[[143.56181115129996,-13.763655694232213],[143.92209923723894,-14.548310642152003],[144.56371382057486,-14.171176039285882],[144.89490807513354,-14.594457696188625],[145.37472374896348,-14.984976495018286],[145.27199100156727,-15.428205254785695],[145.48525963763578,-16.285672295804773],[145.63703331927695,-16.784918308176614],[145.88890425026767,-16.90692636481765],[146.1603088726645,-17.761654554925244],[146.0636739442787,-18.28007252367732],[146.3874784690196,-18.95827402107591],[147.47108157774792,-19.48072275154668],[148.1776017600425,-19.95593922290277],[148.84841352762322,-20.39120981209726],[148.7174654481956,-20.633468926681516],[149.28942020080206,-21.260510756111103],[149.67833703023067,-22.342511895438392],[150.07738244038862,-22.12278370533332],[150.48293908101516,-22.556142266533012],[150.72726525289121,-22.40240488046466],[150.89955447815228,-23.462236830338682],[151.60917524638424,-24.076256198830762],[152.07353966695908,-24.457886651306197],[152.85519738180594,-25.267501316023015],[153.13616214417678,-26.07117319102619],[153.16194868389042,-26.641319268502443],[153.0929089703486,-27.26029957449451],[153.5694690289442,-28.1100668271021],[153.51210818910022,-28.995077406532758],[153.33909549378706,-29.458201592732447],[153.06924116435889,-30.350240166954816],[153.0896016786818,-30.923641859665448],[152.8915775901394,-31.640445651985956],[152.45000247620536,-32.550002536755244],[151.70911746643682,-33.041342054986345],[151.34397179586242,-33.81602345147385],[151.01055545471516,-34.310360202777886],[150.71413943908905,-35.17345997491681],[150.32821984273326,-35.67187916437193],[150.07521203023228,-36.42020558039051],[149.94612430236717,-37.10905242284123],[149.99728397033616,-37.42526051203514],[149.42388227762555,-37.77268116633346],[148.30462243061592,-37.80906137466688],[147.3817330263153,-38.21921721776755],[146.92212283751135,-38.60653207779512],[146.3179219911548,-39.03575652441144],[145.48965213438058,-38.59376799901905],[144.87697635312816,-38.41744801203912],[145.03221235573298,-37.896187839510986],[144.48568240781404,-38.08532358169927],[143.6099735861961,-38.80946542740533],[142.745426873953,-38.538267510737526],[142.178329705982,-38.38003427505984],[141.6065816591047,-38.30851409276788],[140.63857872941324,-38.019332777662555],[139.99215823787435,-37.40293629328511],[139.80658816951407,-36.64360279718828],[139.57414757706525,-36.13836231867067],[139.0828080588341,-35.73275400161178],[138.12074791885632,-35.612296237939404],[138.44946170466503,-35.127261244447894],[138.2075643251067,-34.38472258884593],[137.71917036351616,-35.07682504653103],[136.82940555231474,-35.26053476332862],[137.3523710471085,-34.70733855564409],[137.50388634658836,-34.130267836240776],[137.89011600153768,-33.640478610978334],[137.81032759007914,-32.90000701266811],[136.99683719294038,-33.752771498348636],[136.37206912653167,-34.09476612725619],[135.98904341038437,-34.89011809666049],[135.20821251845413,-34.47867034275261],[135.23921837782916,-33.94795338311498],[134.6134167827746,-33.22277800876314],[134.08590376193914,-32.848072198214766],[134.27390262261704,-32.61723357516696],[132.99077680880984,-32.011224053680195],[132.2880806825049,-31.98264698662277],[131.32633060112093,-31.495803318001048],[129.5357938986397,-31.590422865527483],[128.24093753470223,-31.948488864877856],[127.10286746633831,-32.28226694105105],[126.14871382050116,-32.21596607842061],[125.08862348846561,-32.728751316052836],[124.22164798390494,-32.95948658623607],[124.02894656788854,-33.483847344701715],[123.65966678273072,-33.89017913181273],[122.81103641163364,-33.91446705498984],[122.18306440642286,-34.003402194964224],[121.2991907085026,-33.82103606540613],[120.58026818245814,-33.930176690406626],[119.89369510302824,-33.976065362281815],[119.2988993673488,-34.50936614353397],[119.007340936358,-34.464149265278536],[118.5057178081008,-34.7468193499151],[118.02497195848953,-35.064732761374714],[117.29550744025747,-35.02545867283287],[116.62510908413495,-35.02509693780683],[115.56434695847972,-34.386427911111554],[115.02680870977954,-34.196517022438925],[115.04861616420679,-33.62342538832203],[115.5451233256671,-33.48725798923296],[115.71467370001668,-33.25957162855495],[115.6793786967614,-32.90036874769413],[115.80164513556397,-32.20506235120703],[115.68961063035513,-31.61243702568379],[115.16090905157697,-30.60159433362246],[114.99704308477945,-30.030724786094165],[115.04003787644628,-29.461095472940798],[114.64197431850201,-28.810230808224713],[114.61649783738217,-28.516398614213042],[114.17357913620847,-28.11807667410733],[114.04888390508816,-27.334765313427127],[113.4774975932369,-26.543134047147902],[113.3389530782625,-26.116545098578484],[113.77835778204026,-26.54902516042918],[113.44096235560662,-25.621278171493156],[113.93690107631167,-25.911234633082884],[114.23285200404732,-26.298446140245872],[114.21616051641703,-25.786281019801105],[113.72125532435771,-24.998938897402127],[113.62534386602405,-24.683971042583153],[113.39352339076267,-24.38476449961327],[113.50204389857564,-23.806350192970257],[113.70699262904517,-23.560215345964068],[113.8434184102957,-23.059987481378737],[113.7365515483161,-22.47547535572538],[114.1497563009219,-21.755881036061012],[114.22530724493268,-22.517488295178634],[114.64776207891869,-21.829519952076904],[115.46016727097933,-21.495173435148544],[115.94737267462702,-21.06868783944371],[116.71161543179156,-20.70168181730682],[117.16631635952771,-20.623598728113805],[117.44154503791427,-20.746898695562162],[118.22955895393298,-20.374208265873236],[118.83608523974273,-20.26331064217483],[118.98780724495177,-20.044202569257322],[119.25249393115065,-19.95294198982984],[119.80522505094457,-19.976506442954985],[120.85622033089666,-19.68370777758919],[121.39985639860723,-19.239755547769732],[121.65513797412909,-18.705317885007133],[122.24166548064177,-18.19764861417177],[122.28662397673567,-17.798603204013915],[122.31277225147544,-17.25496713630345],[123.01257449757193,-16.405199883695857],[123.43378909718304,-17.268558037996225],[123.85934451710662,-17.069035332917252],[123.50324222218326,-16.596506036040367],[123.81707319549193,-16.111316013251994],[124.25828657439988,-16.327943617419564],[124.37972619028582,-15.567059828353976],[124.92615278534005,-15.075100192935324],[125.16727501841389,-14.680395603090004],[125.67008670461385,-14.510070082256021],[125.6857963400305,-14.230655612853838],[126.12514936737611,-14.347340996968953],[126.14282270721989,-14.095986830301213],[126.58258914602376,-13.95279143642041],[127.06586714081735,-13.817967624570926],[127.80463341686195,-14.276906019755046],[128.35968997610897,-14.869169610252257],[128.98554324759593,-14.875990899314742],[129.62147342337963,-14.969783623924556],[129.409600050983,-14.420669854391035],[129.88864057832862,-13.618703301653483],[130.33946577364296,-13.357375583553477],[130.183506300986,-13.107520033422304],[130.617795037967,-12.536392103732467],[131.22349450086003,-12.183648776908115],[131.73509118054952,-12.302452894747162],[132.57529829318312,-12.114040622611014],[132.55721154188106,-11.603012383676685],[131.82469811414367,-11.273781833545101],[132.35722374891142,-11.128519382372644],[133.01956058159644,-11.376411228076847],[133.55084598198906,-11.786515394745138],[134.393068475482,-12.042365411022175],[134.67863244032705,-11.9411829565947],[135.29849124566803,-12.248606052299051],[135.88269331272764,-11.962266940969798],[136.25838097548947,-12.04934172938161],[136.49247521377166,-11.857208754120393],[136.95162031468502,-12.351958916882737],[136.68512495335577,-12.887223402562057],[136.30540652887512,-13.291229750219898],[135.96175825413414,-13.324509372615893],[136.07761681533256,-13.724278252825783],[135.78383629775325,-14.223989353088214],[135.42866417861123,-14.7154322241839],[135.50018436090318,-14.99774057379443],[136.29517459528137,-15.550264987859123],[137.0653601421595,-15.870762220933356],[137.58047081924482,-16.215082289294084],[138.303217401279,-16.807604261952658],[138.5851640158634,-16.806622409739177],[139.1085429221155,-17.06267913174537],[139.26057498591823,-17.371600843986187],[140.2152453960783,-17.710804945550066],[140.87546349503927,-17.369068698803943],[141.0711104676963,-16.832047214426723],[141.27409549373883,-16.388870131091608],[141.3982222841038,-15.840531508042588],[141.70218305884467,-15.04492115647693],[141.5633801617087,-14.56133310308951],[141.63552046118812,-14.270394789286284],[141.51986860571898,-13.698078301653808],[141.650920038011,-12.944687595270565],[141.84269127824624,-12.74154753993119],[141.6869901877508,-12.407614434461138],[141.92862918514757,-11.87746591557878],[142.118488397388,-11.32804208745162],[142.14370649634637,-11.042736504768143],[142.51526004452498,-10.668185723516643],[142.79731001197408,-11.157354831591519],[142.8667631369743,-11.784706719614931],[143.1159468934857,-11.905629571177911],[143.1586316265588,-12.325655612846191],[143.5221236512999,-12.834358412327433],[143.5971578309877,-13.400422051652598],[143.56181115129996,-13.763655694232213]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":6,"sovereignty":"Fiji","sov_a3":"FJI","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Fiji","adm0_a3":"FJI","geou_dif":0,"geounit":"Fiji","gu_a3":"FJI","su_dif":0,"subunit":"Fiji","su_a3":"FJI","brk_diff":0,"name":"Fiji","name_long":"Fiji","brk_a3":"FJI","brk_name":"Fiji","brk_group":null,"abbrev":"Fiji","postal":"FJ","formal_en":"Republic of Fiji","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Fiji","name_alt":null,"mapcolor7":5,"mapcolor8":1,"mapcolor9":2,"mapcolor13":2,"pop_est":944720,"gdp_md_est":3579,"pop_year":-99,"lastcensus":2007,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"FJ","iso_a3":"FJI","iso_n3":"242","un_a3":"242","wb_a2":"FJ","wb_a3":"FJI","woe_id":-99,"adm0_a3_is":"FJI","adm0_a3_us":"FJI","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Melanesia","region_wb":"East Asia & Pacific","name_len":4,"long_len":4,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"FJI.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[178.3736,-17.33992],[178.71806,-17.62846],[178.55271,-18.15059],[177.93266,-18.28799],[177.38146,-18.16432],[177.28504,-17.72465],[177.67087,-17.38114],[178.12557,-17.50481],[178.3736,-17.33992]]],[[[179.36414266196428,-16.80135407694685],[178.7250593629971,-17.01204167436802],[178.59683859511708,-16.63915],[179.09660936299716,-16.43398427754742],[179.41350936299713,-16.379054277547397],[180.00000000000014,-16.06713266364244],[180.00000000000014,-16.55521656663916],[179.36414266196428,-16.80135407694685]]],[[[-179.91736938476524,-16.50178313564936],[-180,-16.55521656663916],[-180,-16.06713266364244],[-179.79332010904858,-16.02088225674123],[-179.91736938476524,-16.50178313564936]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"France","sov_a3":"FR1","adm0_dif":1,"level":2,"type":"Dependency","admin":"New Caledonia","adm0_a3":"NCL","geou_dif":0,"geounit":"New Caledonia","gu_a3":"NCL","su_dif":0,"subunit":"New Caledonia","su_a3":"NCL","brk_diff":0,"name":"New Caledonia","name_long":"New Caledonia","brk_a3":"NCL","brk_name":"New Caledonia","brk_group":null,"abbrev":"New C.","postal":"NC","formal_en":"New Caledonia","formal_fr":"Nouvelle-Calédonie","note_adm0":"Fr.","note_brk":null,"name_sort":"New Caledonia","name_alt":null,"mapcolor7":7,"mapcolor8":5,"mapcolor9":9,"mapcolor13":11,"pop_est":227436,"gdp_md_est":3158,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"6. Developing region","income_grp":"2. High income: nonOECD","wikipedia":-99,"fips_10":null,"iso_a2":"NC","iso_a3":"NCL","iso_n3":"540","un_a3":"540","wb_a2":"NC","wb_a3":"NCL","woe_id":-99,"adm0_a3_is":"NCL","adm0_a3_us":"NCL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Melanesia","region_wb":"East Asia & Pacific","name_len":13,"long_len":13,"abbrev_len":6,"tiny":-99,"homepart":-99,"filename":"NCL.geojson"},"geometry":{"type":"Polygon","coordinates":[[[165.77998986232637,-21.08000497811563],[166.59999148993384,-21.700018812753523],[167.1200114280869,-22.159990736583488],[166.74003462144478,-22.39997608814695],[166.18973229396866,-22.12970834726045],[165.47437544175222,-21.679606621998232],[164.82981530177568,-21.14981983814195],[164.16799523341365,-20.444746595951628],[164.029605747736,-20.105645847252354],[164.45996707586272,-20.1200118954295],[165.02003624904205,-20.45999114347773],[165.46000939357512,-20.80002206795826],[165.77998986232637,-21.08000497811563]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"New Zealand","sov_a3":"NZ1","adm0_dif":1,"level":2,"type":"Country","admin":"New Zealand","adm0_a3":"NZL","geou_dif":0,"geounit":"New Zealand","gu_a3":"NZL","su_dif":0,"subunit":"New Zealand","su_a3":"NZL","brk_diff":0,"name":"New Zealand","name_long":"New Zealand","brk_a3":"NZL","brk_name":"New Zealand","brk_group":null,"abbrev":"N.Z.","postal":"NZ","formal_en":"New Zealand","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"New Zealand","name_alt":null,"mapcolor7":3,"mapcolor8":3,"mapcolor9":4,"mapcolor13":4,"pop_est":4213418,"gdp_md_est":116700,"pop_year":-99,"lastcensus":2006,"gdp_year":-99,"economy":"2. Developed region: nonG7","income_grp":"1. High income: OECD","wikipedia":-99,"fips_10":null,"iso_a2":"NZ","iso_a3":"NZL","iso_n3":"554","un_a3":"554","wb_a2":"NZ","wb_a3":"NZL","woe_id":-99,"adm0_a3_is":"NZL","adm0_a3_us":"NZL","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Australia and New Zealand","region_wb":"East Asia & Pacific","name_len":11,"long_len":11,"abbrev_len":4,"tiny":-99,"homepart":1,"filename":"NZL.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[173.02037479074076,-40.919052422856424],[173.24723432850206,-41.331998793300784],[173.95840538970288,-40.92670053483562],[174.24758670480813,-41.34915536882167],[174.2485168805895,-41.770008233406756],[173.8764465680879,-42.233184096038826],[173.22273969959568,-42.970038344088564],[172.71124637277077,-43.372287693048506],[173.0801127464702,-43.85334360125358],[172.30858361235252,-43.865694268571346],[171.45292524646365,-44.24251881284372],[171.18513797432726,-44.89710418068489],[170.61669721911662,-45.90892872495971],[169.8314221540093,-46.3557748349876],[169.33233117093428,-46.641235446967855],[168.41135379462858,-46.61994475686359],[167.76374474514685,-46.29019744240921],[166.67688602118423,-46.21991749449224],[166.5091443219647,-45.85270476662622],[167.04642418850327,-45.11094125750867],[168.3037634625969,-44.12397307716613],[168.94940880765157,-43.93581918719142],[169.66781456937318,-43.55532561622634],[170.52491987536618,-43.03168832781283],[171.125089960004,-42.51275359473778],[171.56971398344322,-41.767424411792135],[171.94870893787194,-41.51441659929115],[172.09722700427878,-40.95610442480968],[172.798579543344,-40.493962090823466],[173.02037479074076,-40.919052422856424]]],[[[174.61200890533055,-36.156397393540544],[175.3366158389272,-37.20909799575826],[175.35759647043753,-36.52619394302113],[175.8088867536425,-36.79894215265769],[175.9584900251275,-37.55538176854606],[176.76319542877658,-37.8812533505787],[177.4388131045605,-37.961248467766495],[178.0103544457087,-37.57982472102013],[178.51709354076283,-37.6953732236248],[178.27473107331386,-38.58281259537309],[177.97046023997936,-39.166342868812976],[177.20699262929915,-39.145775648760846],[176.93998050364704,-39.44973642350158],[177.0329464053401,-39.87994272233148],[176.88582360260526,-40.065977878582174],[176.50801720611938,-40.60480803808959],[176.0124402204403,-41.28962411882151],[175.239567499083,-41.68830779395324],[175.0678983910094,-41.42589487077508],[174.65097293527847,-41.28182097754545],[175.22763024322367,-40.459235528323404],[174.90015669179,-39.90893320084723],[173.82404666574402,-39.50885426204351],[173.85226199777534,-39.14660247167746],[174.5748018740804,-38.797683200842755],[174.74347374908106,-38.027807712558385],[174.69701663645063,-37.38112883885796],[174.29202843657922,-36.71109221776144],[174.31900353423555,-36.53482390721389],[173.84099653553582,-36.121980889634116],[173.0541711774596,-35.23712533950034],[172.63600548735374,-34.52910654066939],[173.00704227120949,-34.45066171645034],[173.55129845610747,-35.006183363587965],[174.3293904971263,-35.26549570082862],[174.61200890533055,-36.156397393540544]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":2,"sovereignty":"Papua New Guinea","sov_a3":"PNG","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Papua New Guinea","adm0_a3":"PNG","geou_dif":0,"geounit":"Papua New Guinea","gu_a3":"PNG","su_dif":1,"subunit":"Papua New Guinea","su_a3":"PN1","brk_diff":0,"name":"Papua New Guinea","name_long":"Papua New Guinea","brk_a3":"PN1","brk_name":"Papua New Guinea","brk_group":null,"abbrev":"P.N.G.","postal":"PG","formal_en":"Independent State of Papua New Guinea","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Papua New Guinea","name_alt":null,"mapcolor7":4,"mapcolor8":2,"mapcolor9":3,"mapcolor13":1,"pop_est":6057263,"gdp_md_est":13210,"pop_year":-99,"lastcensus":2000,"gdp_year":-99,"economy":"6. Developing region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"PG","iso_a3":"PNG","iso_n3":"598","un_a3":"598","wb_a2":"PG","wb_a3":"PNG","woe_id":-99,"adm0_a3_is":"PNG","adm0_a3_us":"PNG","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Melanesia","region_wb":"East Asia & Pacific","name_len":16,"long_len":16,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"PNG.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[155.88002566957843,-6.81999684003776],[155.5999910829888,-6.919990736522493],[155.16699425681512,-6.535931491729301],[154.72919152243836,-5.900828138862209],[154.51411421123967,-5.139117526880014],[154.65250369691736,-5.042430922061839],[154.7599906760844,-5.339983819198494],[155.06291792217937,-5.566791680527487],[155.54774620994172,-6.200654799019659],[156.01996544822478,-6.540013929880388],[155.88002566957843,-6.81999684003776]]],[[[151.9827958518545,-5.478063246282346],[151.45910688700866,-5.56028045005874],[151.3013904156539,-5.840728448106702],[150.7544470562767,-6.083762709175389],[150.24119673075384,-6.317753594592986],[149.70996300679332,-6.316513360218053],[148.89006473205046,-6.026040134305433],[148.31893680236075,-5.74714242922613],[148.4018257997569,-5.437755629094724],[149.29841190002082,-5.583741550319217],[149.84556196512725,-5.505503431829339],[149.9962504416903,-5.026101169457675],[150.13975589416495,-5.001348158389789],[150.23690758687349,-5.532220147324281],[150.8074670758081,-5.455842380396888],[151.089672072554,-5.113692722192368],[151.64788089417087,-4.757073662946169],[151.53786176982155,-4.16780730552189],[152.13679162008438,-4.14879037843852],[152.33874311748102,-4.312966403829762],[152.31869266175178,-4.86766122805075],[151.9827958518545,-5.478063246282346]]],[[[147.19187381407494,-7.38802418378998],[148.0846358583494,-8.044108168167611],[148.7341052593936,-9.104663588093757],[149.30683515848446,-9.07143564213007],[149.26663089416135,-9.514406019736027],[150.03872846903434,-9.684318129111702],[149.73879845601226,-9.872937106977005],[150.80162763895916,-10.293686618697421],[150.69057498596388,-10.582712904505868],[150.02839318257585,-10.652476088099931],[149.782310012002,-10.393267103723943],[148.92313764871722,-10.280922539921363],[147.91301842670802,-10.130440769087471],[147.13544315001226,-9.492443536012019],[146.56788089415062,-8.942554619994155],[146.04848107318494,-8.06741423913131],[144.74416792213802,-7.630128269077473],[143.8970878440097,-7.915330498896281],[143.2863757671843,-8.245491224809056],[143.4139132020807,-8.983068942910947],[142.62843143124422,-9.326820570516503],[142.06825890520022,-9.159595635620036],[141.0338517600139,-9.117892754760419],[141.01705691951904,-5.859021905138022],[141.00021040259188,-2.600151055515624],[142.7352466167915,-3.289152927263217],[144.58397098203326,-3.861417738463401],[145.27317955951,-4.373737888205028],[145.82978641172568,-4.876497897972683],[145.98192182839298,-5.465609226100014],[147.6480733583476,-6.083659356310804],[147.8911076194162,-6.614014580922315],[146.9709053895949,-6.721656589386257],[147.19187381407494,-7.38802418378998]]],[[[153.14003787659877,-4.499983412294114],[152.8272921083683,-4.766427097190999],[152.638673130503,-4.176127211120928],[152.40602583232496,-3.789742526874562],[151.95323693258356,-3.462062269711822],[151.38427941305005,-3.035421644710112],[150.66204959533886,-2.741486097833956],[150.93996544820456,-2.500002129734028],[151.4799841656545,-2.779985039891386],[151.82001509013512,-2.999971612157907],[152.2399894553711,-3.240008640153661],[152.64001671774253,-3.659983005389648],[153.01999352438466,-3.980015150573294],[153.14003787659877,-4.499983412294114]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":3,"sovereignty":"Solomon Islands","sov_a3":"SLB","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Solomon Islands","adm0_a3":"SLB","geou_dif":0,"geounit":"Solomon Islands","gu_a3":"SLB","su_dif":0,"subunit":"Solomon Islands","su_a3":"SLB","brk_diff":0,"name":"Solomon Islands","name_long":"Solomon Islands","brk_a3":"SLB","brk_name":"Solomon Is.","brk_group":null,"abbrev":"S. Is.","postal":"SB","formal_en":null,"formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Solomon Islands","name_alt":null,"mapcolor7":1,"mapcolor8":4,"mapcolor9":1,"mapcolor13":6,"pop_est":595613,"gdp_md_est":1078,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"SB","iso_a3":"SLB","iso_n3":"090","un_a3":"090","wb_a2":"SB","wb_a3":"SLB","woe_id":-99,"adm0_a3_is":"SLB","adm0_a3_us":"SLB","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Melanesia","region_wb":"East Asia & Pacific","name_len":11,"long_len":15,"abbrev_len":6,"tiny":-99,"homepart":1,"filename":"SLB.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[162.11902469304087,-10.482719008021135],[162.39864586817222,-10.82636728276212],[161.70003218001838,-10.820011081590224],[161.31979699121476,-10.204751478723125],[161.917383254238,-10.446700534713656],[162.11902469304087,-10.482719008021135]]],[[[160.85222863183796,-9.872937106977005],[160.46258833235729,-9.895209649294841],[159.8494474632142,-9.794027194867368],[159.64000288313517,-9.63997975020527],[159.70294477766666,-9.242949720906779],[160.36295617089846,-9.400304457235533],[160.6885176943372,-9.610162448772812],[160.85222863183796,-9.872937106977005]]],[[[161.67998172428915,-9.599982191611375],[161.52939660059053,-9.784312025596435],[160.78825320866056,-8.91754322676492],[160.57999718652437,-8.320008640173967],[160.92002811100494,-8.320008640173967],[161.28000613835,-9.120011488484451],[161.67998172428915,-9.599982191611375]]],[[[159.8750272971986,-8.337320244991716],[159.917401971678,-8.538289890174866],[159.1336771995394,-8.114181410355398],[158.58611372297472,-7.754823500197715],[158.21114953026486,-7.421872246941149],[158.35997765526545,-7.320017998893917],[158.82000125552773,-7.560003350457392],[159.64000288313517,-8.020026950719569],[159.8750272971986,-8.337320244991716]]],[[[157.5384257346893,-7.34781991946693],[157.33941979393327,-7.404767347852555],[156.9020304710148,-7.176874281445392],[156.49135786359133,-6.765943291860395],[156.54282759015396,-6.59933847415148],[157.1400004417189,-7.021638278840655],[157.5384257346893,-7.34781991946693]]]]}},{"type":"Feature","properties":{"scalerank":1,"featurecla":"Admin-0 country","labelrank":4,"sovereignty":"Vanuatu","sov_a3":"VUT","adm0_dif":0,"level":2,"type":"Sovereign country","admin":"Vanuatu","adm0_a3":"VUT","geou_dif":0,"geounit":"Vanuatu","gu_a3":"VUT","su_dif":0,"subunit":"Vanuatu","su_a3":"VUT","brk_diff":0,"name":"Vanuatu","name_long":"Vanuatu","brk_a3":"VUT","brk_name":"Vanuatu","brk_group":null,"abbrev":"Van.","postal":"VU","formal_en":"Republic of Vanuatu","formal_fr":null,"note_adm0":null,"note_brk":null,"name_sort":"Vanuatu","name_alt":null,"mapcolor7":6,"mapcolor8":3,"mapcolor9":7,"mapcolor13":3,"pop_est":218519,"gdp_md_est":988.5,"pop_year":-99,"lastcensus":2009,"gdp_year":-99,"economy":"7. Least developed region","income_grp":"4. Lower middle income","wikipedia":-99,"fips_10":null,"iso_a2":"VU","iso_a3":"VUT","iso_n3":"548","un_a3":"548","wb_a2":"VU","wb_a3":"VUT","woe_id":-99,"adm0_a3_is":"VUT","adm0_a3_us":"VUT","adm0_a3_un":-99,"adm0_a3_wb":-99,"continent":"Oceania","region_un":"Oceania","subregion":"Melanesia","region_wb":"East Asia & Pacific","name_len":7,"long_len":7,"abbrev_len":4,"tiny":2,"homepart":1,"filename":"VUT.geojson"},"geometry":{"type":"MultiPolygon","coordinates":[[[[167.8448767438451,-16.466333103097156],[167.5151811058229,-16.597849623279966],[167.18000776597782,-16.15999521247096],[167.21680138576963,-15.891846205308452],[167.8448767438451,-16.466333103097156]]],[[[167.10771243720149,-14.933920179913954],[167.27002811103026,-15.740020847234874],[167.00120731024796,-15.614602146062495],[166.79315799384088,-15.668810723536723],[166.64985924709558,-15.392703545801195],[166.62913699774649,-14.626497084209603],[167.10771243720149,-14.933920179913954]]]]}}]}') }, function (e) { e.exports = JSON.parse('{"type":"FeatureCollection","features":[{"type":"Feature","id":"AL","properties":{"name":"Alabama"},"geometry":{"type":"Polygon","coordinates":[[[-87.359296,35.00118],[-85.606675,34.984749],[-85.431413,34.124869],[-85.184951,32.859696],[-85.069935,32.580372],[-84.960397,32.421541],[-85.004212,32.322956],[-84.889196,32.262709],[-85.058981,32.13674],[-85.053504,32.01077],[-85.141136,31.840985],[-85.042551,31.539753],[-85.113751,31.27686],[-85.004212,31.003013],[-85.497137,30.997536],[-87.600282,30.997536],[-87.633143,30.86609],[-87.408589,30.674397],[-87.446927,30.510088],[-87.37025,30.427934],[-87.518128,30.280057],[-87.655051,30.247195],[-87.90699,30.411504],[-87.934375,30.657966],[-88.011052,30.685351],[-88.10416,30.499135],[-88.137022,30.318396],[-88.394438,30.367688],[-88.471115,31.895754],[-88.241084,33.796253],[-88.098683,34.891641],[-88.202745,34.995703],[-87.359296,35.00118]]]}},{"type":"Feature","id":"AK","properties":{"name":"Alaska"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-131.602021,55.117982],[-131.569159,55.28229],[-131.355558,55.183705],[-131.38842,55.01392],[-131.645836,55.035827],[-131.602021,55.117982]]],[[[-131.832052,55.42469],[-131.645836,55.304197],[-131.749898,55.128935],[-131.832052,55.189182],[-131.832052,55.42469]]],[[[-132.976733,56.437924],[-132.735747,56.459832],[-132.631685,56.421493],[-132.664547,56.273616],[-132.878148,56.240754],[-133.069841,56.333862],[-132.976733,56.437924]]],[[[-133.595627,56.350293],[-133.162949,56.317431],[-133.05341,56.125739],[-132.620732,55.912138],[-132.472854,55.780691],[-132.4619,55.671152],[-132.357838,55.649245],[-132.341408,55.506844],[-132.166146,55.364444],[-132.144238,55.238474],[-132.029222,55.276813],[-131.97993,55.178228],[-131.958022,54.789365],[-132.029222,54.701734],[-132.308546,54.718165],[-132.385223,54.915335],[-132.483808,54.898904],[-132.686455,55.046781],[-132.746701,54.997489],[-132.916486,55.046781],[-132.889102,54.898904],[-132.73027,54.937242],[-132.626209,54.882473],[-132.675501,54.679826],[-132.867194,54.701734],[-133.157472,54.95915],[-133.239626,55.090597],[-133.223195,55.22752],[-133.453227,55.216566],[-133.453227,55.320628],[-133.277964,55.331582],[-133.102702,55.42469],[-133.17938,55.588998],[-133.387503,55.62186],[-133.420365,55.884753],[-133.497042,56.0162],[-133.639442,55.923092],[-133.694212,56.070969],[-133.546335,56.142169],[-133.666827,56.311955],[-133.595627,56.350293]]],[[[-133.738027,55.556137],[-133.546335,55.490413],[-133.414888,55.572568],[-133.283441,55.534229],[-133.420365,55.386352],[-133.633966,55.430167],[-133.738027,55.556137]]],[[[-133.907813,56.930849],[-134.050213,57.029434],[-133.885905,57.095157],[-133.343688,57.002049],[-133.102702,57.007526],[-132.932917,56.82131],[-132.620732,56.667956],[-132.653593,56.55294],[-132.817901,56.492694],[-133.042456,56.520078],[-133.201287,56.448878],[-133.420365,56.492694],[-133.66135,56.448878],[-133.710643,56.684386],[-133.688735,56.837741],[-133.869474,56.843218],[-133.907813,56.930849]]],[[[-134.115936,56.48174],[-134.25286,56.558417],[-134.400737,56.722725],[-134.417168,56.848695],[-134.296675,56.908941],[-134.170706,56.848695],[-134.143321,56.952757],[-133.748981,56.772017],[-133.710643,56.596755],[-133.847566,56.574848],[-133.935197,56.377678],[-133.836612,56.322908],[-133.957105,56.092877],[-134.110459,56.142169],[-134.132367,55.999769],[-134.230952,56.070969],[-134.291198,56.350293],[-134.115936,56.48174]]],[[[-134.636246,56.28457],[-134.669107,56.169554],[-134.806031,56.235277],[-135.178463,56.67891],[-135.413971,56.810356],[-135.331817,56.914418],[-135.424925,57.166357],[-135.687818,57.369004],[-135.419448,57.566174],[-135.298955,57.48402],[-135.063447,57.418296],[-134.849846,57.407343],[-134.844369,57.248511],[-134.636246,56.728202],[-134.636246,56.28457]]],[[[-134.712923,58.223407],[-134.373353,58.14673],[-134.176183,58.157683],[-134.187137,58.081006],[-133.902336,57.807159],[-134.099505,57.850975],[-134.148798,57.757867],[-133.935197,57.615466],[-133.869474,57.363527],[-134.083075,57.297804],[-134.154275,57.210173],[-134.499322,57.029434],[-134.603384,57.034911],[-134.6472,57.226604],[-134.575999,57.341619],[-134.608861,57.511404],[-134.729354,57.719528],[-134.707446,57.829067],[-134.784123,58.097437],[-134.91557,58.212453],[-134.953908,58.409623],[-134.712923,58.223407]]],[[[-135.857603,57.330665],[-135.715203,57.330665],[-135.567326,57.149926],[-135.633049,57.023957],[-135.857603,56.996572],[-135.824742,57.193742],[-135.857603,57.330665]]],[[[-136.279328,58.206976],[-135.978096,58.201499],[-135.780926,58.28913],[-135.496125,58.168637],[-135.64948,58.037191],[-135.59471,57.987898],[-135.45231,58.135776],[-135.107263,58.086483],[-134.91557,57.976944],[-135.025108,57.779775],[-134.937477,57.763344],[-134.822462,57.500451],[-135.085355,57.462112],[-135.572802,57.675713],[-135.556372,57.456635],[-135.709726,57.369004],[-135.890465,57.407343],[-136.000004,57.544266],[-136.208128,57.637374],[-136.366959,57.829067],[-136.569606,57.916698],[-136.558652,58.075529],[-136.421728,58.130299],[-136.377913,58.267222],[-136.279328,58.206976]]],[[[-147.079854,60.200582],[-147.501579,59.948643],[-147.53444,59.850058],[-147.874011,59.784335],[-147.80281,59.937689],[-147.435855,60.09652],[-147.205824,60.271782],[-147.079854,60.200582]]],[[[-147.561825,60.578491],[-147.616594,60.370367],[-147.758995,60.156767],[-147.956165,60.227967],[-147.791856,60.474429],[-147.561825,60.578491]]],[[[-147.786379,70.245291],[-147.682318,70.201475],[-147.162008,70.15766],[-146.888161,70.185044],[-146.510252,70.185044],[-146.099482,70.146706],[-145.858496,70.168614],[-145.622988,70.08646],[-145.195787,69.993352],[-144.620708,69.971444],[-144.461877,70.026213],[-144.078491,70.059075],[-143.914183,70.130275],[-143.497935,70.141229],[-143.503412,70.091936],[-143.25695,70.119321],[-142.747594,70.042644],[-142.402547,69.916674],[-142.079408,69.856428],[-142.008207,69.801659],[-141.712453,69.790705],[-141.433129,69.697597],[-141.378359,69.63735],[-141.208574,69.686643],[-141.00045,69.648304],[-141.00045,60.304644],[-140.53491,60.22249],[-140.474664,60.310121],[-139.987216,60.184151],[-139.696939,60.342983],[-139.088998,60.359413],[-139.198537,60.091043],[-139.045183,59.997935],[-138.700135,59.910304],[-138.623458,59.767904],[-137.604747,59.242118],[-137.445916,58.908024],[-137.265177,59.001132],[-136.827022,59.159963],[-136.580559,59.16544],[-136.465544,59.285933],[-136.476498,59.466672],[-136.301236,59.466672],[-136.25742,59.625503],[-135.945234,59.663842],[-135.479694,59.800766],[-135.025108,59.565257],[-135.068924,59.422857],[-134.959385,59.280456],[-134.701969,59.247595],[-134.378829,59.033994],[-134.400737,58.973748],[-134.25286,58.858732],[-133.842089,58.727285],[-133.173903,58.152206],[-133.075318,57.998852],[-132.867194,57.845498],[-132.560485,57.505928],[-132.253777,57.21565],[-132.368792,57.095157],[-132.05113,57.051341],[-132.127807,56.876079],[-131.870391,56.804879],[-131.837529,56.602232],[-131.580113,56.613186],[-131.087188,56.405062],[-130.78048,56.366724],[-130.621648,56.268139],[-130.468294,56.240754],[-130.424478,56.142169],[-130.101339,56.114785],[-130.002754,55.994292],[-130.150631,55.769737],[-130.128724,55.583521],[-129.986323,55.276813],[-130.095862,55.200136],[-130.336847,54.920812],[-130.687372,54.718165],[-130.785957,54.822227],[-130.917403,54.789365],[-131.010511,54.997489],[-130.983126,55.08512],[-131.092665,55.189182],[-130.862634,55.298721],[-130.928357,55.337059],[-131.158389,55.200136],[-131.284358,55.287767],[-131.426759,55.238474],[-131.843006,55.457552],[-131.700606,55.698537],[-131.963499,55.616383],[-131.974453,55.49589],[-132.182576,55.588998],[-132.226392,55.704014],[-132.083991,55.829984],[-132.127807,55.955953],[-132.324977,55.851892],[-132.522147,56.076446],[-132.642639,56.032631],[-132.719317,56.218847],[-132.527624,56.339339],[-132.341408,56.339339],[-132.396177,56.487217],[-132.297592,56.67891],[-132.450946,56.673433],[-132.768609,56.837741],[-132.993164,57.034911],[-133.51895,57.177311],[-133.507996,57.577128],[-133.677781,57.62642],[-133.639442,57.790728],[-133.814705,57.834544],[-134.072121,58.053622],[-134.143321,58.168637],[-134.586953,58.206976],[-135.074401,58.502731],[-135.282525,59.192825],[-135.38111,59.033994],[-135.337294,58.891593],[-135.140124,58.617746],[-135.189417,58.573931],[-135.05797,58.349376],[-135.085355,58.201499],[-135.277048,58.234361],[-135.430402,58.398669],[-135.633049,58.426053],[-135.91785,58.382238],[-135.912373,58.617746],[-136.087635,58.814916],[-136.246466,58.75467],[-136.876314,58.962794],[-136.931084,58.902547],[-136.586036,58.836824],[-136.317666,58.672516],[-136.213604,58.667039],[-136.180743,58.535592],[-136.043819,58.382238],[-136.388867,58.294607],[-136.591513,58.349376],[-136.59699,58.212453],[-136.859883,58.316515],[-136.947514,58.393192],[-137.111823,58.393192],[-137.566409,58.590362],[-137.900502,58.765624],[-137.933364,58.869686],[-138.11958,59.02304],[-138.634412,59.132579],[-138.919213,59.247595],[-139.417615,59.379041],[-139.746231,59.505011],[-139.718846,59.641934],[-139.625738,59.598119],[-139.5162,59.68575],[-139.625738,59.88292],[-139.488815,59.992458],[-139.554538,60.041751],[-139.801,59.833627],[-140.315833,59.696704],[-140.92925,59.745996],[-141.444083,59.871966],[-141.46599,59.970551],[-141.706976,59.948643],[-141.964392,60.019843],[-142.539471,60.085566],[-142.873564,60.091043],[-143.623905,60.036274],[-143.892275,59.997935],[-144.231845,60.140336],[-144.65357,60.206059],[-144.785016,60.29369],[-144.834309,60.441568],[-145.124586,60.430614],[-145.223171,60.299167],[-145.738004,60.474429],[-145.820158,60.551106],[-146.351421,60.408706],[-146.608837,60.238921],[-146.718376,60.397752],[-146.608837,60.485383],[-146.455483,60.463475],[-145.951604,60.578491],[-146.017328,60.666122],[-146.252836,60.622307],[-146.345944,60.737322],[-146.565022,60.753753],[-146.784099,61.044031],[-146.866253,60.972831],[-147.172962,60.934492],[-147.271547,60.972831],[-147.375609,60.879723],[-147.758995,60.912584],[-147.775426,60.808523],[-148.032842,60.781138],[-148.153334,60.819476],[-148.065703,61.005692],[-148.175242,61.000215],[-148.350504,60.803046],[-148.109519,60.737322],[-148.087611,60.594922],[-147.939734,60.441568],[-148.027365,60.277259],[-148.219058,60.332029],[-148.273827,60.249875],[-148.087611,60.217013],[-147.983549,59.997935],[-148.251919,59.95412],[-148.399797,59.997935],[-148.635305,59.937689],[-148.755798,59.986981],[-149.067984,59.981505],[-149.05703,60.063659],[-149.204907,60.008889],[-149.287061,59.904827],[-149.418508,59.997935],[-149.582816,59.866489],[-149.511616,59.806242],[-149.741647,59.729565],[-149.949771,59.718611],[-150.031925,59.61455],[-150.25648,59.521442],[-150.409834,59.554303],[-150.579619,59.444764],[-150.716543,59.450241],[-151.001343,59.225687],[-151.308052,59.209256],[-151.406637,59.280456],[-151.592853,59.159963],[-151.976239,59.253071],[-151.888608,59.422857],[-151.636669,59.483103],[-151.47236,59.472149],[-151.423068,59.537872],[-151.127313,59.669319],[-151.116359,59.778858],[-151.505222,59.63098],[-151.828361,59.718611],[-151.8667,59.778858],[-151.702392,60.030797],[-151.423068,60.211536],[-151.379252,60.359413],[-151.297098,60.386798],[-151.264237,60.545629],[-151.406637,60.720892],[-151.06159,60.786615],[-150.404357,61.038554],[-150.245526,60.939969],[-150.042879,60.912584],[-149.741647,61.016646],[-150.075741,61.15357],[-150.207187,61.257632],[-150.47008,61.246678],[-150.656296,61.29597],[-150.711066,61.252155],[-151.023251,61.180954],[-151.165652,61.044031],[-151.477837,61.011169],[-151.800977,60.852338],[-151.833838,60.748276],[-152.080301,60.693507],[-152.13507,60.578491],[-152.310332,60.507291],[-152.392486,60.304644],[-152.732057,60.173197],[-152.567748,60.069136],[-152.704672,59.915781],[-153.022334,59.888397],[-153.049719,59.691227],[-153.345474,59.620026],[-153.438582,59.702181],[-153.586459,59.548826],[-153.761721,59.543349],[-153.72886,59.433811],[-154.117723,59.368087],[-154.1944,59.066856],[-153.750768,59.050425],[-153.400243,58.968271],[-153.301658,58.869686],[-153.444059,58.710854],[-153.679567,58.612269],[-153.898645,58.606793],[-153.920553,58.519161],[-154.062953,58.4863],[-153.99723,58.376761],[-154.145107,58.212453],[-154.46277,58.059098],[-154.643509,58.059098],[-154.818771,58.004329],[-154.988556,58.015283],[-155.120003,57.955037],[-155.081664,57.872883],[-155.328126,57.829067],[-155.377419,57.708574],[-155.547204,57.785251],[-155.73342,57.549743],[-156.045606,57.566174],[-156.023698,57.440204],[-156.209914,57.473066],[-156.34136,57.418296],[-156.34136,57.248511],[-156.549484,56.985618],[-156.883577,56.952757],[-157.157424,56.832264],[-157.20124,56.766541],[-157.376502,56.859649],[-157.672257,56.607709],[-157.754411,56.67891],[-157.918719,56.657002],[-157.957058,56.514601],[-158.126843,56.459832],[-158.32949,56.48174],[-158.488321,56.339339],[-158.208997,56.295524],[-158.510229,55.977861],[-159.375585,55.873799],[-159.616571,55.594475],[-159.676817,55.654722],[-159.643955,55.829984],[-159.813741,55.857368],[-160.027341,55.791645],[-160.060203,55.720445],[-160.394296,55.605429],[-160.536697,55.473983],[-160.580512,55.567091],[-160.668143,55.457552],[-160.865313,55.528752],[-161.232268,55.358967],[-161.506115,55.364444],[-161.467776,55.49589],[-161.588269,55.62186],[-161.697808,55.517798],[-161.686854,55.408259],[-162.053809,55.074166],[-162.179779,55.15632],[-162.218117,55.03035],[-162.470057,55.052258],[-162.508395,55.249428],[-162.661749,55.293244],[-162.716519,55.222043],[-162.579595,55.134412],[-162.645319,54.997489],[-162.847965,54.926289],[-163.00132,55.079643],[-163.187536,55.090597],[-163.220397,55.03035],[-163.034181,54.942719],[-163.373752,54.800319],[-163.14372,54.76198],[-163.138243,54.696257],[-163.329936,54.74555],[-163.587352,54.614103],[-164.085754,54.61958],[-164.332216,54.531949],[-164.354124,54.466226],[-164.638925,54.389548],[-164.847049,54.416933],[-164.918249,54.603149],[-164.710125,54.663395],[-164.551294,54.88795],[-164.34317,54.893427],[-163.894061,55.041304],[-163.532583,55.046781],[-163.39566,54.904381],[-163.291598,55.008443],[-163.313505,55.128935],[-163.105382,55.183705],[-162.880827,55.183705],[-162.579595,55.446598],[-162.245502,55.682106],[-161.807347,55.89023],[-161.292514,55.983338],[-161.078914,55.939523],[-160.87079,55.999769],[-160.816021,55.912138],[-160.931036,55.813553],[-160.805067,55.736876],[-160.766728,55.857368],[-160.509312,55.868322],[-160.438112,55.791645],[-160.27928,55.76426],[-160.273803,55.857368],[-160.536697,55.939523],[-160.558604,55.994292],[-160.383342,56.251708],[-160.147834,56.399586],[-159.830171,56.541986],[-159.326293,56.667956],[-158.959338,56.848695],[-158.784076,56.782971],[-158.641675,56.810356],[-158.701922,56.925372],[-158.658106,57.034911],[-158.378782,57.264942],[-157.995396,57.41282],[-157.688688,57.609989],[-157.705118,57.719528],[-157.458656,58.497254],[-157.07527,58.705377],[-157.119086,58.869686],[-158.039212,58.634177],[-158.32949,58.661562],[-158.40069,58.760147],[-158.564998,58.803962],[-158.619768,58.913501],[-158.767645,58.864209],[-158.860753,58.694424],[-158.701922,58.480823],[-158.893615,58.387715],[-159.0634,58.420577],[-159.392016,58.760147],[-159.616571,58.929932],[-159.731586,58.929932],[-159.808264,58.803962],[-159.906848,58.782055],[-160.054726,58.886116],[-160.235465,58.902547],[-160.317619,59.072332],[-160.854359,58.88064],[-161.33633,58.743716],[-161.374669,58.667039],[-161.752577,58.552023],[-161.938793,58.656085],[-161.769008,58.776578],[-161.829255,59.061379],[-161.955224,59.36261],[-161.703285,59.48858],[-161.911409,59.740519],[-162.092148,59.88292],[-162.234548,60.091043],[-162.448149,60.178674],[-162.502918,59.997935],[-162.760334,59.959597],[-163.171105,59.844581],[-163.66403,59.795289],[-163.9324,59.806242],[-164.162431,59.866489],[-164.189816,60.02532],[-164.386986,60.074613],[-164.699171,60.29369],[-164.962064,60.337506],[-165.268773,60.578491],[-165.060649,60.68803],[-165.016834,60.890677],[-165.175665,60.846861],[-165.197573,60.972831],[-165.120896,61.076893],[-165.323543,61.170001],[-165.34545,61.071416],[-165.591913,61.109754],[-165.624774,61.279539],[-165.816467,61.301447],[-165.920529,61.416463],[-165.915052,61.558863],[-166.106745,61.49314],[-166.139607,61.630064],[-165.904098,61.662925],[-166.095791,61.81628],[-165.756221,61.827233],[-165.756221,62.013449],[-165.674067,62.139419],[-165.044219,62.539236],[-164.912772,62.659728],[-164.819664,62.637821],[-164.874433,62.807606],[-164.633448,63.097884],[-164.425324,63.212899],[-164.036462,63.262192],[-163.73523,63.212899],[-163.313505,63.037637],[-163.039658,63.059545],[-162.661749,63.22933],[-162.272887,63.486746],[-162.075717,63.514131],[-162.026424,63.448408],[-161.555408,63.448408],[-161.13916,63.503177],[-160.766728,63.771547],[-160.766728,63.837271],[-160.952944,64.08921],[-160.974852,64.237087],[-161.26513,64.395918],[-161.374669,64.532842],[-161.078914,64.494503],[-160.79959,64.609519],[-160.783159,64.719058],[-161.144637,64.921705],[-161.413007,64.762873],[-161.664946,64.790258],[-161.900455,64.702627],[-162.168825,64.680719],[-162.234548,64.620473],[-162.541257,64.532842],[-162.634365,64.384965],[-162.787719,64.324718],[-162.858919,64.49998],[-163.045135,64.538319],[-163.176582,64.401395],[-163.253259,64.467119],[-163.598306,64.565704],[-164.304832,64.560227],[-164.80871,64.450688],[-165.000403,64.434257],[-165.411174,64.49998],[-166.188899,64.576658],[-166.391546,64.636904],[-166.484654,64.735489],[-166.413454,64.872412],[-166.692778,64.987428],[-166.638008,65.113398],[-166.462746,65.179121],[-166.517516,65.337952],[-166.796839,65.337952],[-167.026871,65.381768],[-167.47598,65.414629],[-167.711489,65.496784],[-168.072967,65.578938],[-168.105828,65.682999],[-167.541703,65.819923],[-166.829701,66.049954],[-166.3313,66.186878],[-166.046499,66.110201],[-165.756221,66.09377],[-165.690498,66.203309],[-165.86576,66.21974],[-165.88219,66.312848],[-165.186619,66.466202],[-164.403417,66.581218],[-163.981692,66.592172],[-163.751661,66.553833],[-163.872153,66.389525],[-163.828338,66.274509],[-163.915969,66.192355],[-163.768091,66.060908],[-163.494244,66.082816],[-163.149197,66.060908],[-162.749381,66.088293],[-162.634365,66.039001],[-162.371472,66.028047],[-162.14144,66.077339],[-161.840208,66.02257],[-161.549931,66.241647],[-161.341807,66.252601],[-161.199406,66.208786],[-161.128206,66.334755],[-161.528023,66.395002],[-161.911409,66.345709],[-161.87307,66.510017],[-162.174302,66.68528],[-162.502918,66.740049],[-162.601503,66.89888],[-162.344087,66.937219],[-162.015471,66.778388],[-162.075717,66.652418],[-161.916886,66.553833],[-161.571838,66.438817],[-161.489684,66.55931],[-161.884024,66.718141],[-161.714239,67.002942],[-161.851162,67.052235],[-162.240025,66.991988],[-162.639842,67.008419],[-162.700088,67.057712],[-162.902735,67.008419],[-163.740707,67.128912],[-163.757138,67.254881],[-164.009077,67.534205],[-164.211724,67.638267],[-164.534863,67.725898],[-165.192096,67.966884],[-165.493328,68.059992],[-165.794559,68.081899],[-166.243668,68.246208],[-166.681824,68.339316],[-166.703731,68.372177],[-166.375115,68.42147],[-166.227238,68.574824],[-166.216284,68.881533],[-165.329019,68.859625],[-164.255539,68.930825],[-163.976215,68.985595],[-163.532583,69.138949],[-163.110859,69.374457],[-163.023228,69.609966],[-162.842489,69.812613],[-162.470057,69.982398],[-162.311225,70.108367],[-161.851162,70.311014],[-161.779962,70.256245],[-161.396576,70.239814],[-160.837928,70.343876],[-160.487404,70.453415],[-159.649432,70.792985],[-159.33177,70.809416],[-159.298908,70.760123],[-158.975769,70.798462],[-158.658106,70.787508],[-158.033735,70.831323],[-157.420318,70.979201],[-156.812377,71.285909],[-156.565915,71.351633],[-156.522099,71.296863],[-155.585543,71.170894],[-155.508865,71.083263],[-155.832005,70.968247],[-155.979882,70.96277],[-155.974405,70.809416],[-155.503388,70.858708],[-155.476004,70.940862],[-155.262403,71.017539],[-155.191203,70.973724],[-155.032372,71.148986],[-154.566832,70.990155],[-154.643509,70.869662],[-154.353231,70.8368],[-154.183446,70.7656],[-153.931507,70.880616],[-153.487874,70.886093],[-153.235935,70.924431],[-152.589656,70.886093],[-152.26104,70.842277],[-152.419871,70.606769],[-151.817408,70.546523],[-151.773592,70.486276],[-151.187559,70.382214],[-151.182082,70.431507],[-150.760358,70.49723],[-150.355064,70.491753],[-150.349588,70.436984],[-150.114079,70.431507],[-149.867617,70.508184],[-149.462323,70.519138],[-149.177522,70.486276],[-148.78866,70.404122],[-148.607921,70.420553],[-148.350504,70.305537],[-148.202627,70.349353],[-147.961642,70.316491],[-147.786379,70.245291]]],[[[-152.94018,58.026237],[-152.945657,57.982421],[-153.290705,58.048145],[-153.044242,58.305561],[-152.819688,58.327469],[-152.666333,58.562977],[-152.496548,58.354853],[-152.354148,58.426053],[-152.080301,58.311038],[-152.080301,58.152206],[-152.480117,58.130299],[-152.655379,58.059098],[-152.94018,58.026237]]],[[[-153.958891,57.538789],[-153.67409,57.670236],[-153.931507,57.69762],[-153.936983,57.812636],[-153.723383,57.889313],[-153.570028,57.834544],[-153.548121,57.719528],[-153.46049,57.796205],[-153.455013,57.96599],[-153.268797,57.889313],[-153.235935,57.998852],[-153.071627,57.933129],[-152.874457,57.933129],[-152.721103,57.993375],[-152.469163,57.889313],[-152.469163,57.599035],[-152.151501,57.620943],[-152.359625,57.42925],[-152.74301,57.505928],[-152.60061,57.379958],[-152.710149,57.275896],[-152.907319,57.325188],[-152.912796,57.128019],[-153.214027,57.073249],[-153.312612,56.991095],[-153.498828,57.067772],[-153.695998,56.859649],[-153.849352,56.837741],[-154.013661,56.744633],[-154.073907,56.969187],[-154.303938,56.848695],[-154.314892,56.919895],[-154.523016,56.991095],[-154.539447,57.193742],[-154.742094,57.275896],[-154.627078,57.511404],[-154.227261,57.659282],[-153.980799,57.648328],[-153.958891,57.538789]]],[[[-154.53397,56.602232],[-154.742094,56.399586],[-154.807817,56.432447],[-154.53397,56.602232]]],[[[-155.634835,55.923092],[-155.476004,55.912138],[-155.530773,55.704014],[-155.793666,55.731399],[-155.837482,55.802599],[-155.634835,55.923092]]],[[[-159.890418,55.28229],[-159.950664,55.068689],[-160.257373,54.893427],[-160.109495,55.161797],[-160.005433,55.134412],[-159.890418,55.28229]]],[[[-160.520266,55.358967],[-160.33405,55.358967],[-160.339527,55.249428],[-160.525743,55.128935],[-160.690051,55.211089],[-160.794113,55.134412],[-160.854359,55.320628],[-160.79959,55.380875],[-160.520266,55.358967]]],[[[-162.256456,54.981058],[-162.234548,54.893427],[-162.349564,54.838658],[-162.437195,54.931766],[-162.256456,54.981058]]],[[[-162.415287,63.634624],[-162.563165,63.536039],[-162.612457,63.62367],[-162.415287,63.634624]]],[[[-162.80415,54.488133],[-162.590549,54.449795],[-162.612457,54.367641],[-162.782242,54.373118],[-162.80415,54.488133]]],[[[-165.548097,54.29644],[-165.476897,54.181425],[-165.630251,54.132132],[-165.685021,54.252625],[-165.548097,54.29644]]],[[[-165.73979,54.15404],[-166.046499,54.044501],[-166.112222,54.121178],[-165.980775,54.219763],[-165.73979,54.15404]]],[[[-166.364161,60.359413],[-166.13413,60.397752],[-166.084837,60.326552],[-165.88219,60.342983],[-165.685021,60.277259],[-165.646682,59.992458],[-165.750744,59.89935],[-166.00816,59.844581],[-166.062929,59.745996],[-166.440838,59.855535],[-166.6161,59.850058],[-166.994009,59.992458],[-167.125456,59.992458],[-167.344534,60.074613],[-167.421211,60.206059],[-167.311672,60.238921],[-166.93924,60.206059],[-166.763978,60.310121],[-166.577762,60.321075],[-166.495608,60.392275],[-166.364161,60.359413]]],[[[-166.375115,54.01164],[-166.210807,53.934962],[-166.5449,53.748746],[-166.539423,53.715885],[-166.117699,53.852808],[-166.112222,53.776131],[-166.282007,53.683023],[-166.555854,53.622777],[-166.583239,53.529669],[-166.878994,53.431084],[-167.13641,53.425607],[-167.306195,53.332499],[-167.623857,53.250345],[-167.793643,53.337976],[-167.459549,53.442038],[-167.355487,53.425607],[-167.103548,53.513238],[-167.163794,53.611823],[-167.021394,53.715885],[-166.807793,53.666592],[-166.785886,53.732316],[-167.015917,53.754223],[-167.141887,53.825424],[-167.032348,53.945916],[-166.643485,54.017116],[-166.561331,53.880193],[-166.375115,54.01164]]],[[[-168.790446,53.157237],[-168.40706,53.34893],[-168.385152,53.431084],[-168.237275,53.524192],[-168.007243,53.568007],[-167.886751,53.518715],[-167.842935,53.387268],[-168.270136,53.244868],[-168.500168,53.036744],[-168.686384,52.965544],[-168.790446,53.157237]]],[[[-169.74891,52.894344],[-169.705095,52.795759],[-169.962511,52.790282],[-169.989896,52.856005],[-169.74891,52.894344]]],[[[-170.148727,57.221127],[-170.28565,57.128019],[-170.313035,57.221127],[-170.148727,57.221127]]],[[[-170.669036,52.697174],[-170.603313,52.604066],[-170.789529,52.538343],[-170.816914,52.636928],[-170.669036,52.697174]]],[[[-171.742517,63.716778],[-170.94836,63.5689],[-170.488297,63.69487],[-170.280174,63.683916],[-170.093958,63.612716],[-170.044665,63.492223],[-169.644848,63.4265],[-169.518879,63.366254],[-168.99857,63.338869],[-168.686384,63.295053],[-168.856169,63.147176],[-169.108108,63.180038],[-169.376478,63.152653],[-169.513402,63.08693],[-169.639372,62.939052],[-169.831064,63.075976],[-170.055619,63.169084],[-170.263743,63.180038],[-170.362328,63.2841],[-170.866206,63.415546],[-171.101715,63.421023],[-171.463193,63.306007],[-171.73704,63.366254],[-171.852055,63.486746],[-171.742517,63.716778]]],[[[-172.432611,52.390465],[-172.41618,52.275449],[-172.607873,52.253542],[-172.569535,52.352127],[-172.432611,52.390465]]],[[[-173.626584,52.14948],[-173.495138,52.105664],[-173.122706,52.111141],[-173.106275,52.07828],[-173.549907,52.028987],[-173.626584,52.14948]]],[[[-174.322156,52.280926],[-174.327632,52.379511],[-174.185232,52.41785],[-173.982585,52.319265],[-174.059262,52.226157],[-174.179755,52.231634],[-174.141417,52.127572],[-174.333109,52.116618],[-174.738403,52.007079],[-174.968435,52.039941],[-174.902711,52.116618],[-174.656249,52.105664],[-174.322156,52.280926]]],[[[-176.469116,51.853725],[-176.288377,51.870156],[-176.288377,51.744186],[-176.518409,51.760617],[-176.80321,51.61274],[-176.912748,51.80991],[-176.792256,51.815386],[-176.775825,51.963264],[-176.627947,51.968741],[-176.627947,51.859202],[-176.469116,51.853725]]],[[[-177.153734,51.946833],[-177.044195,51.897541],[-177.120872,51.727755],[-177.274226,51.678463],[-177.279703,51.782525],[-177.153734,51.946833]]],[[[-178.123152,51.919448],[-177.953367,51.913971],[-177.800013,51.793479],[-177.964321,51.651078],[-178.123152,51.919448]]],[[[173.107557,52.992929],[173.293773,52.927205],[173.304726,52.823143],[172.90491,52.762897],[172.642017,52.927205],[172.642017,53.003883],[173.107557,52.992929]]]]}},{"type":"Feature","id":"AZ","properties":{"name":"Arizona"},"geometry":{"type":"Polygon","coordinates":[[[-109.042503,37.000263],[-109.04798,31.331629],[-111.074448,31.331629],[-112.246513,31.704061],[-114.815198,32.492741],[-114.72209,32.717295],[-114.524921,32.755634],[-114.470151,32.843265],[-114.524921,33.029481],[-114.661844,33.034958],[-114.727567,33.40739],[-114.524921,33.54979],[-114.497536,33.697668],[-114.535874,33.933176],[-114.415382,34.108438],[-114.256551,34.174162],[-114.136058,34.305608],[-114.333228,34.448009],[-114.470151,34.710902],[-114.634459,34.87521],[-114.634459,35.00118],[-114.574213,35.138103],[-114.596121,35.324319],[-114.678275,35.516012],[-114.738521,36.102045],[-114.371566,36.140383],[-114.251074,36.01989],[-114.152489,36.025367],[-114.048427,36.195153],[-114.048427,37.000263],[-110.499369,37.00574],[-109.042503,37.000263]]]}},{"type":"Feature","id":"AR","properties":{"name":"Arkansas"},"geometry":{"type":"Polygon","coordinates":[[[-94.473842,36.501861],[-90.152536,36.496384],[-90.064905,36.304691],[-90.218259,36.184199],[-90.377091,35.997983],[-89.730812,35.997983],[-89.763673,35.811767],[-89.911551,35.756997],[-89.944412,35.603643],[-90.130628,35.439335],[-90.114197,35.198349],[-90.212782,35.023087],[-90.311367,34.995703],[-90.251121,34.908072],[-90.409952,34.831394],[-90.481152,34.661609],[-90.585214,34.617794],[-90.568783,34.420624],[-90.749522,34.365854],[-90.744046,34.300131],[-90.952169,34.135823],[-90.891923,34.026284],[-91.072662,33.867453],[-91.231493,33.560744],[-91.056231,33.429298],[-91.143862,33.347144],[-91.089093,33.13902],[-91.16577,33.002096],[-93.608485,33.018527],[-94.041164,33.018527],[-94.041164,33.54979],[-94.183564,33.593606],[-94.380734,33.544313],[-94.484796,33.637421],[-94.430026,35.395519],[-94.616242,36.501861],[-94.473842,36.501861]]]}},{"type":"Feature","id":"CA","properties":{"name":"California"},"geometry":{"type":"Polygon","coordinates":[[[-123.233256,42.006186],[-122.378853,42.011663],[-121.037003,41.995232],[-120.001861,41.995232],[-119.996384,40.264519],[-120.001861,38.999346],[-118.71478,38.101128],[-117.498899,37.21934],[-116.540435,36.501861],[-115.85034,35.970598],[-114.634459,35.00118],[-114.634459,34.87521],[-114.470151,34.710902],[-114.333228,34.448009],[-114.136058,34.305608],[-114.256551,34.174162],[-114.415382,34.108438],[-114.535874,33.933176],[-114.497536,33.697668],[-114.524921,33.54979],[-114.727567,33.40739],[-114.661844,33.034958],[-114.524921,33.029481],[-114.470151,32.843265],[-114.524921,32.755634],[-114.72209,32.717295],[-116.04751,32.624187],[-117.126467,32.536556],[-117.24696,32.668003],[-117.252437,32.876127],[-117.329114,33.122589],[-117.471515,33.297851],[-117.7837,33.538836],[-118.183517,33.763391],[-118.260194,33.703145],[-118.413548,33.741483],[-118.391641,33.840068],[-118.566903,34.042715],[-118.802411,33.998899],[-119.218659,34.146777],[-119.278905,34.26727],[-119.558229,34.415147],[-119.875891,34.40967],[-120.138784,34.475393],[-120.472878,34.448009],[-120.64814,34.579455],[-120.609801,34.858779],[-120.670048,34.902595],[-120.631709,35.099764],[-120.894602,35.247642],[-120.905556,35.450289],[-121.004141,35.461243],[-121.168449,35.636505],[-121.283465,35.674843],[-121.332757,35.784382],[-121.716143,36.195153],[-121.896882,36.315645],[-121.935221,36.638785],[-121.858544,36.6114],[-121.787344,36.803093],[-121.929744,36.978355],[-122.105006,36.956447],[-122.335038,37.115279],[-122.417192,37.241248],[-122.400761,37.361741],[-122.515777,37.520572],[-122.515777,37.783465],[-122.329561,37.783465],[-122.406238,38.15042],[-122.488392,38.112082],[-122.504823,37.931343],[-122.701993,37.893004],[-122.937501,38.029928],[-122.97584,38.265436],[-123.129194,38.451652],[-123.331841,38.566668],[-123.44138,38.698114],[-123.737134,38.95553],[-123.687842,39.032208],[-123.824765,39.366301],[-123.764519,39.552517],[-123.85215,39.831841],[-124.109566,40.105688],[-124.361506,40.259042],[-124.410798,40.439781],[-124.158859,40.877937],[-124.109566,41.025814],[-124.158859,41.14083],[-124.065751,41.442061],[-124.147905,41.715908],[-124.257444,41.781632],[-124.213628,42.000709],[-123.233256,42.006186]]]}},{"type":"Feature","id":"CO","properties":{"name":"Colorado"},"geometry":{"type":"Polygon","coordinates":[[[-107.919731,41.003906],[-105.728954,40.998429],[-104.053011,41.003906],[-102.053927,41.003906],[-102.053927,40.001626],[-102.042974,36.994786],[-103.001438,37.000263],[-104.337812,36.994786],[-106.868158,36.994786],[-107.421329,37.000263],[-109.042503,37.000263],[-109.042503,38.166851],[-109.058934,38.27639],[-109.053457,39.125316],[-109.04798,40.998429],[-107.919731,41.003906]]]}},{"type":"Feature","id":"CT","properties":{"name":"Connecticut"},"geometry":{"type":"Polygon","coordinates":[[[-73.053528,42.039048],[-71.799309,42.022617],[-71.799309,42.006186],[-71.799309,41.414677],[-71.859555,41.321569],[-71.947186,41.338],[-72.385341,41.261322],[-72.905651,41.28323],[-73.130205,41.146307],[-73.371191,41.102491],[-73.655992,40.987475],[-73.727192,41.102491],[-73.48073,41.21203],[-73.55193,41.294184],[-73.486206,42.050002],[-73.053528,42.039048]]]}},{"type":"Feature","id":"DE","properties":{"name":"Delaware"},"geometry":{"type":"Polygon","coordinates":[[[-75.414089,39.804456],[-75.507197,39.683964],[-75.611259,39.61824],[-75.589352,39.459409],[-75.441474,39.311532],[-75.403136,39.065069],[-75.189535,38.807653],[-75.09095,38.796699],[-75.047134,38.451652],[-75.693413,38.462606],[-75.786521,39.722302],[-75.616736,39.831841],[-75.414089,39.804456]]]}},{"type":"Feature","id":"FL","properties":{"name":"Florida"},"geometry":{"type":"Polygon","coordinates":[[[-85.497137,30.997536],[-85.004212,31.003013],[-84.867289,30.712735],[-83.498053,30.647012],[-82.216449,30.570335],[-82.167157,30.356734],[-82.046664,30.362211],[-82.002849,30.564858],[-82.041187,30.751074],[-81.948079,30.827751],[-81.718048,30.745597],[-81.444201,30.707258],[-81.383954,30.27458],[-81.257985,29.787132],[-80.967707,29.14633],[-80.524075,28.461713],[-80.589798,28.41242],[-80.56789,28.094758],[-80.381674,27.738757],[-80.091397,27.021277],[-80.03115,26.796723],[-80.036627,26.566691],[-80.146166,25.739673],[-80.239274,25.723243],[-80.337859,25.465826],[-80.304997,25.383672],[-80.49669,25.197456],[-80.573367,25.241272],[-80.759583,25.164595],[-81.077246,25.120779],[-81.170354,25.224841],[-81.126538,25.378195],[-81.351093,25.821827],[-81.526355,25.903982],[-81.679709,25.843735],[-81.800202,26.090198],[-81.833064,26.292844],[-82.041187,26.517399],[-82.09048,26.665276],[-82.057618,26.878877],[-82.172634,26.917216],[-82.145249,26.791246],[-82.249311,26.758384],[-82.566974,27.300601],[-82.692943,27.437525],[-82.391711,27.837342],[-82.588881,27.815434],[-82.720328,27.689464],[-82.851774,27.886634],[-82.676512,28.434328],[-82.643651,28.888914],[-82.764143,28.998453],[-82.802482,29.14633],[-82.994175,29.179192],[-83.218729,29.420177],[-83.399469,29.518762],[-83.410422,29.66664],[-83.536392,29.721409],[-83.640454,29.885717],[-84.02384,30.104795],[-84.357933,30.055502],[-84.341502,29.902148],[-84.451041,29.929533],[-84.867289,29.743317],[-85.310921,29.699501],[-85.299967,29.80904],[-85.404029,29.940487],[-85.924338,30.236241],[-86.29677,30.362211],[-86.630863,30.395073],[-86.910187,30.373165],[-87.518128,30.280057],[-87.37025,30.427934],[-87.446927,30.510088],[-87.408589,30.674397],[-87.633143,30.86609],[-87.600282,30.997536],[-85.497137,30.997536]]]}},{"type":"Feature","id":"GA","properties":{"name":"Georgia"},"geometry":{"type":"Polygon","coordinates":[[[-83.109191,35.00118],[-83.322791,34.787579],[-83.339222,34.683517],[-83.005129,34.469916],[-82.901067,34.486347],[-82.747713,34.26727],[-82.714851,34.152254],[-82.55602,33.94413],[-82.325988,33.81816],[-82.194542,33.631944],[-81.926172,33.462159],[-81.937125,33.347144],[-81.761863,33.160928],[-81.493493,33.007573],[-81.42777,32.843265],[-81.416816,32.629664],[-81.279893,32.558464],[-81.121061,32.290094],[-81.115584,32.120309],[-80.885553,32.032678],[-81.132015,31.693108],[-81.175831,31.517845],[-81.279893,31.364491],[-81.290846,31.20566],[-81.400385,31.13446],[-81.444201,30.707258],[-81.718048,30.745597],[-81.948079,30.827751],[-82.041187,30.751074],[-82.002849,30.564858],[-82.046664,30.362211],[-82.167157,30.356734],[-82.216449,30.570335],[-83.498053,30.647012],[-84.867289,30.712735],[-85.004212,31.003013],[-85.113751,31.27686],[-85.042551,31.539753],[-85.141136,31.840985],[-85.053504,32.01077],[-85.058981,32.13674],[-84.889196,32.262709],[-85.004212,32.322956],[-84.960397,32.421541],[-85.069935,32.580372],[-85.184951,32.859696],[-85.431413,34.124869],[-85.606675,34.984749],[-84.319594,34.990226],[-83.618546,34.984749],[-83.109191,35.00118]]]}},{"type":"Feature","id":"HI","properties":{"name":"Hawaii"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-155.634835,18.948267],[-155.881297,19.035898],[-155.919636,19.123529],[-155.886774,19.348084],[-156.062036,19.73147],[-155.925113,19.857439],[-155.826528,20.032702],[-155.897728,20.147717],[-155.87582,20.26821],[-155.596496,20.12581],[-155.284311,20.021748],[-155.092618,19.868393],[-155.092618,19.736947],[-154.807817,19.523346],[-154.983079,19.348084],[-155.295265,19.26593],[-155.514342,19.134483],[-155.634835,18.948267]]],[[[-156.587823,21.029505],[-156.472807,20.892581],[-156.324929,20.952827],[-156.00179,20.793996],[-156.051082,20.651596],[-156.379699,20.580396],[-156.445422,20.60778],[-156.461853,20.783042],[-156.631638,20.821381],[-156.697361,20.919966],[-156.587823,21.029505]]],[[[-156.982162,21.210244],[-157.080747,21.106182],[-157.310779,21.106182],[-157.239579,21.221198],[-156.982162,21.210244]]],[[[-157.951581,21.697691],[-157.842042,21.462183],[-157.896811,21.325259],[-158.110412,21.303352],[-158.252813,21.582676],[-158.126843,21.588153],[-157.951581,21.697691]]],[[[-159.468693,22.228955],[-159.353678,22.218001],[-159.298908,22.113939],[-159.33177,21.966061],[-159.446786,21.872953],[-159.764448,21.987969],[-159.726109,22.152277],[-159.468693,22.228955]]]]}},{"type":"Feature","id":"ID","properties":{"name":"Idaho"},"geometry":{"type":"Polygon","coordinates":[[[-116.04751,49.000239],[-116.04751,47.976051],[-115.724371,47.696727],[-115.718894,47.42288],[-115.527201,47.302388],[-115.324554,47.258572],[-115.302646,47.187372],[-114.930214,46.919002],[-114.886399,46.809463],[-114.623506,46.705401],[-114.612552,46.639678],[-114.322274,46.645155],[-114.464674,46.272723],[-114.492059,46.037214],[-114.387997,45.88386],[-114.568736,45.774321],[-114.497536,45.670259],[-114.546828,45.560721],[-114.333228,45.456659],[-114.086765,45.593582],[-113.98818,45.703121],[-113.807441,45.604536],[-113.834826,45.522382],[-113.736241,45.330689],[-113.571933,45.128042],[-113.45144,45.056842],[-113.456917,44.865149],[-113.341901,44.782995],[-113.133778,44.772041],[-113.002331,44.448902],[-112.887315,44.394132],[-112.783254,44.48724],[-112.471068,44.481763],[-112.241036,44.569394],[-112.104113,44.520102],[-111.868605,44.563917],[-111.819312,44.509148],[-111.616665,44.547487],[-111.386634,44.75561],[-111.227803,44.580348],[-111.047063,44.476286],[-111.047063,42.000709],[-112.164359,41.995232],[-114.04295,41.995232],[-117.027882,42.000709],[-117.027882,43.830007],[-116.896436,44.158624],[-116.97859,44.240778],[-117.170283,44.257209],[-117.241483,44.394132],[-117.038836,44.750133],[-116.934774,44.782995],[-116.830713,44.930872],[-116.847143,45.02398],[-116.732128,45.144473],[-116.671881,45.319735],[-116.463758,45.61549],[-116.545912,45.752413],[-116.78142,45.823614],[-116.918344,45.993399],[-116.92382,46.168661],[-117.055267,46.343923],[-117.038836,46.426077],[-117.044313,47.762451],[-117.033359,49.000239],[-116.04751,49.000239]]]}},{"type":"Feature","id":"IL","properties":{"name":"Illinois"},"geometry":{"type":"Polygon","coordinates":[[[-90.639984,42.510065],[-88.788778,42.493634],[-87.802929,42.493634],[-87.83579,42.301941],[-87.682436,42.077386],[-87.523605,41.710431],[-87.529082,39.34987],[-87.63862,39.169131],[-87.512651,38.95553],[-87.49622,38.780268],[-87.62219,38.637868],[-87.655051,38.506421],[-87.83579,38.292821],[-87.950806,38.27639],[-87.923421,38.15042],[-88.000098,38.101128],[-88.060345,37.865619],[-88.027483,37.799896],[-88.15893,37.657496],[-88.065822,37.482234],[-88.476592,37.389126],[-88.514931,37.285064],[-88.421823,37.153617],[-88.547792,37.071463],[-88.914747,37.224817],[-89.029763,37.213863],[-89.183118,37.038601],[-89.133825,36.983832],[-89.292656,36.994786],[-89.517211,37.279587],[-89.435057,37.34531],[-89.517211,37.537003],[-89.517211,37.690357],[-89.84035,37.903958],[-89.949889,37.88205],[-90.059428,38.013497],[-90.355183,38.216144],[-90.349706,38.374975],[-90.179921,38.632391],[-90.207305,38.725499],[-90.10872,38.845992],[-90.251121,38.917192],[-90.470199,38.961007],[-90.585214,38.867899],[-90.661891,38.928146],[-90.727615,39.256762],[-91.061708,39.470363],[-91.368417,39.727779],[-91.494386,40.034488],[-91.50534,40.237135],[-91.417709,40.379535],[-91.401278,40.560274],[-91.121954,40.669813],[-91.09457,40.823167],[-90.963123,40.921752],[-90.946692,41.097014],[-91.111001,41.239415],[-91.045277,41.414677],[-90.656414,41.463969],[-90.344229,41.589939],[-90.311367,41.743293],[-90.179921,41.809016],[-90.141582,42.000709],[-90.168967,42.126679],[-90.393521,42.225264],[-90.420906,42.329326],[-90.639984,42.510065]]]}},{"type":"Feature","id":"IN","properties":{"name":"Indiana"},"geometry":{"type":"Polygon","coordinates":[[[-85.990061,41.759724],[-84.807042,41.759724],[-84.807042,41.694001],[-84.801565,40.500028],[-84.817996,39.103408],[-84.894673,39.059592],[-84.812519,38.785745],[-84.987781,38.780268],[-85.173997,38.68716],[-85.431413,38.730976],[-85.42046,38.533806],[-85.590245,38.451652],[-85.655968,38.325682],[-85.83123,38.27639],[-85.924338,38.024451],[-86.039354,37.958727],[-86.263908,38.051835],[-86.302247,38.166851],[-86.521325,38.040881],[-86.504894,37.931343],[-86.729448,37.893004],[-86.795172,37.991589],[-87.047111,37.893004],[-87.129265,37.788942],[-87.381204,37.93682],[-87.512651,37.903958],[-87.600282,37.975158],[-87.682436,37.903958],[-87.934375,37.893004],[-88.027483,37.799896],[-88.060345,37.865619],[-88.000098,38.101128],[-87.923421,38.15042],[-87.950806,38.27639],[-87.83579,38.292821],[-87.655051,38.506421],[-87.62219,38.637868],[-87.49622,38.780268],[-87.512651,38.95553],[-87.63862,39.169131],[-87.529082,39.34987],[-87.523605,41.710431],[-87.42502,41.644708],[-87.118311,41.644708],[-86.822556,41.759724],[-85.990061,41.759724]]]}},{"type":"Feature","id":"IA","properties":{"name":"Iowa"},"geometry":{"type":"Polygon","coordinates":[[[-91.368417,43.501391],[-91.215062,43.501391],[-91.204109,43.353514],[-91.056231,43.254929],[-91.176724,43.134436],[-91.143862,42.909881],[-91.067185,42.75105],[-90.711184,42.636034],[-90.639984,42.510065],[-90.420906,42.329326],[-90.393521,42.225264],[-90.168967,42.126679],[-90.141582,42.000709],[-90.179921,41.809016],[-90.311367,41.743293],[-90.344229,41.589939],[-90.656414,41.463969],[-91.045277,41.414677],[-91.111001,41.239415],[-90.946692,41.097014],[-90.963123,40.921752],[-91.09457,40.823167],[-91.121954,40.669813],[-91.401278,40.560274],[-91.417709,40.379535],[-91.527248,40.412397],[-91.729895,40.615043],[-91.833957,40.609566],[-93.257961,40.582182],[-94.632673,40.571228],[-95.7664,40.587659],[-95.881416,40.719105],[-95.826646,40.976521],[-95.925231,41.201076],[-95.919754,41.453015],[-96.095016,41.540646],[-96.122401,41.67757],[-96.062155,41.798063],[-96.127878,41.973325],[-96.264801,42.039048],[-96.44554,42.488157],[-96.631756,42.707235],[-96.544125,42.855112],[-96.511264,43.052282],[-96.434587,43.123482],[-96.560556,43.222067],[-96.527695,43.397329],[-96.582464,43.479483],[-96.451017,43.501391],[-91.368417,43.501391]]]}},{"type":"Feature","id":"KS","properties":{"name":"Kansas"},"geometry":{"type":"Polygon","coordinates":[[[-101.90605,40.001626],[-95.306337,40.001626],[-95.207752,39.908518],[-94.884612,39.831841],[-95.109167,39.541563],[-94.983197,39.442978],[-94.824366,39.20747],[-94.610765,39.158177],[-94.616242,37.000263],[-100.087706,37.000263],[-102.042974,36.994786],[-102.053927,40.001626],[-101.90605,40.001626]]]}},{"type":"Feature","id":"KY","properties":{"name":"Kentucky"},"geometry":{"type":"Polygon","coordinates":[[[-83.903347,38.769315],[-83.678792,38.632391],[-83.519961,38.703591],[-83.142052,38.626914],[-83.032514,38.725499],[-82.890113,38.758361],[-82.846298,38.588575],[-82.731282,38.561191],[-82.594358,38.424267],[-82.621743,38.123036],[-82.50125,37.931343],[-82.342419,37.783465],[-82.293127,37.668449],[-82.101434,37.553434],[-81.969987,37.537003],[-82.353373,37.268633],[-82.720328,37.120755],[-82.720328,37.044078],[-82.868205,36.978355],[-82.879159,36.890724],[-83.070852,36.852385],[-83.136575,36.742847],[-83.673316,36.600446],[-83.689746,36.584015],[-84.544149,36.594969],[-85.289013,36.627831],[-85.486183,36.616877],[-86.592525,36.655216],[-87.852221,36.633308],[-88.071299,36.677123],[-88.054868,36.496384],[-89.298133,36.507338],[-89.418626,36.496384],[-89.363857,36.622354],[-89.215979,36.578538],[-89.133825,36.983832],[-89.183118,37.038601],[-89.029763,37.213863],[-88.914747,37.224817],[-88.547792,37.071463],[-88.421823,37.153617],[-88.514931,37.285064],[-88.476592,37.389126],[-88.065822,37.482234],[-88.15893,37.657496],[-88.027483,37.799896],[-87.934375,37.893004],[-87.682436,37.903958],[-87.600282,37.975158],[-87.512651,37.903958],[-87.381204,37.93682],[-87.129265,37.788942],[-87.047111,37.893004],[-86.795172,37.991589],[-86.729448,37.893004],[-86.504894,37.931343],[-86.521325,38.040881],[-86.302247,38.166851],[-86.263908,38.051835],[-86.039354,37.958727],[-85.924338,38.024451],[-85.83123,38.27639],[-85.655968,38.325682],[-85.590245,38.451652],[-85.42046,38.533806],[-85.431413,38.730976],[-85.173997,38.68716],[-84.987781,38.780268],[-84.812519,38.785745],[-84.894673,39.059592],[-84.817996,39.103408],[-84.43461,39.103408],[-84.231963,38.895284],[-84.215533,38.807653],[-83.903347,38.769315]]]}},{"type":"Feature","id":"LA","properties":{"name":"Louisiana"},"geometry":{"type":"Polygon","coordinates":[[[-93.608485,33.018527],[-91.16577,33.002096],[-91.072662,32.887081],[-91.143862,32.843265],[-91.154816,32.640618],[-91.006939,32.514649],[-90.985031,32.218894],[-91.105524,31.988862],[-91.341032,31.846462],[-91.401278,31.621907],[-91.499863,31.643815],[-91.516294,31.27686],[-91.636787,31.265906],[-91.565587,31.068736],[-91.636787,30.997536],[-89.747242,30.997536],[-89.845827,30.66892],[-89.681519,30.449842],[-89.643181,30.285534],[-89.522688,30.181472],[-89.818443,30.044549],[-89.84035,29.945964],[-89.599365,29.88024],[-89.495303,30.039072],[-89.287179,29.88024],[-89.30361,29.754271],[-89.424103,29.699501],[-89.648657,29.748794],[-89.621273,29.655686],[-89.69795,29.513285],[-89.506257,29.387316],[-89.199548,29.348977],[-89.09001,29.2011],[-89.002379,29.179192],[-89.16121,29.009407],[-89.336472,29.042268],[-89.484349,29.217531],[-89.851304,29.310638],[-89.851304,29.480424],[-90.032043,29.425654],[-90.021089,29.283254],[-90.103244,29.151807],[-90.23469,29.129899],[-90.333275,29.277777],[-90.563307,29.283254],[-90.645461,29.129899],[-90.798815,29.086084],[-90.963123,29.179192],[-91.09457,29.190146],[-91.220539,29.436608],[-91.445094,29.546147],[-91.532725,29.529716],[-91.620356,29.73784],[-91.883249,29.710455],[-91.888726,29.836425],[-92.146142,29.715932],[-92.113281,29.622824],[-92.31045,29.535193],[-92.617159,29.579009],[-92.97316,29.715932],[-93.2251,29.776178],[-93.767317,29.726886],[-93.838517,29.688547],[-93.926148,29.787132],[-93.690639,30.143133],[-93.767317,30.334826],[-93.696116,30.438888],[-93.728978,30.575812],[-93.630393,30.679874],[-93.526331,30.93729],[-93.542762,31.15089],[-93.816609,31.556184],[-93.822086,31.775262],[-94.041164,31.994339],[-94.041164,33.018527],[-93.608485,33.018527]]]}},{"type":"Feature","id":"ME","properties":{"name":"Maine"},"geometry":{"type":"Polygon","coordinates":[[[-70.703921,43.057759],[-70.824413,43.128959],[-70.807983,43.227544],[-70.966814,43.34256],[-71.032537,44.657025],[-71.08183,45.303304],[-70.649151,45.440228],[-70.720352,45.511428],[-70.556043,45.664782],[-70.386258,45.735983],[-70.41912,45.796229],[-70.260289,45.889337],[-70.309581,46.064599],[-70.210996,46.327492],[-70.057642,46.415123],[-69.997395,46.694447],[-69.225147,47.461219],[-69.044408,47.428357],[-69.033454,47.242141],[-68.902007,47.176418],[-68.578868,47.285957],[-68.376221,47.285957],[-68.233821,47.357157],[-67.954497,47.198326],[-67.790188,47.066879],[-67.779235,45.944106],[-67.801142,45.675736],[-67.456095,45.604536],[-67.505388,45.48952],[-67.417757,45.379982],[-67.488957,45.281397],[-67.346556,45.128042],[-67.16034,45.160904],[-66.979601,44.804903],[-67.187725,44.646072],[-67.308218,44.706318],[-67.406803,44.596779],[-67.549203,44.624164],[-67.565634,44.531056],[-67.75185,44.54201],[-68.047605,44.328409],[-68.118805,44.476286],[-68.222867,44.48724],[-68.173574,44.328409],[-68.403606,44.251732],[-68.458375,44.377701],[-68.567914,44.311978],[-68.82533,44.311978],[-68.830807,44.459856],[-68.984161,44.426994],[-68.956777,44.322932],[-69.099177,44.103854],[-69.071793,44.043608],[-69.258008,43.923115],[-69.444224,43.966931],[-69.553763,43.840961],[-69.707118,43.82453],[-69.833087,43.720469],[-69.986442,43.742376],[-70.030257,43.851915],[-70.254812,43.676653],[-70.194565,43.567114],[-70.358873,43.528776],[-70.369827,43.435668],[-70.556043,43.320652],[-70.703921,43.057759]]]}},{"type":"Feature","id":"MD","properties":{"name":"Maryland"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.994645,37.95325],[-76.016553,37.95325],[-76.043938,37.95325],[-75.994645,37.95325]]],[[[-79.477979,39.722302],[-75.786521,39.722302],[-75.693413,38.462606],[-75.047134,38.451652],[-75.244304,38.029928],[-75.397659,38.013497],[-75.671506,37.95325],[-75.885106,37.909435],[-75.879629,38.073743],[-75.961783,38.139466],[-75.846768,38.210667],[-76.000122,38.374975],[-76.049415,38.303775],[-76.257538,38.320205],[-76.328738,38.500944],[-76.263015,38.500944],[-76.257538,38.736453],[-76.191815,38.829561],[-76.279446,39.147223],[-76.169907,39.333439],[-76.000122,39.366301],[-75.972737,39.557994],[-76.098707,39.536086],[-76.104184,39.437501],[-76.367077,39.311532],[-76.443754,39.196516],[-76.460185,38.906238],[-76.55877,38.769315],[-76.514954,38.539283],[-76.383508,38.380452],[-76.399939,38.259959],[-76.317785,38.139466],[-76.3616,38.057312],[-76.591632,38.216144],[-76.920248,38.292821],[-77.018833,38.446175],[-77.205049,38.358544],[-77.276249,38.479037],[-77.128372,38.632391],[-77.040741,38.791222],[-76.909294,38.895284],[-77.035264,38.993869],[-77.117418,38.933623],[-77.248864,39.026731],[-77.456988,39.076023],[-77.456988,39.223901],[-77.566527,39.306055],[-77.719881,39.322485],[-77.834897,39.601809],[-78.004682,39.601809],[-78.174467,39.694917],[-78.267575,39.61824],[-78.431884,39.623717],[-78.470222,39.514178],[-78.765977,39.585379],[-78.963147,39.437501],[-79.094593,39.470363],[-79.291763,39.300578],[-79.488933,39.20747],[-79.477979,39.722302]]]]}},{"type":"Feature","id":"MA","properties":{"name":"Massachusetts"},"geometry":{"type":"Polygon","coordinates":[[[-70.917521,42.887974],[-70.818936,42.871543],[-70.780598,42.696281],[-70.824413,42.55388],[-70.983245,42.422434],[-70.988722,42.269079],[-70.769644,42.247172],[-70.638197,42.08834],[-70.660105,41.962371],[-70.550566,41.929509],[-70.539613,41.814493],[-70.260289,41.715908],[-69.937149,41.809016],[-70.008349,41.672093],[-70.484843,41.5516],[-70.660105,41.546123],[-70.764167,41.639231],[-70.928475,41.611847],[-70.933952,41.540646],[-71.120168,41.496831],[-71.196845,41.67757],[-71.22423,41.710431],[-71.328292,41.781632],[-71.383061,42.01714],[-71.530939,42.01714],[-71.799309,42.006186],[-71.799309,42.022617],[-73.053528,42.039048],[-73.486206,42.050002],[-73.508114,42.08834],[-73.267129,42.745573],[-72.456542,42.729142],[-71.29543,42.696281],[-71.185891,42.789389],[-70.917521,42.887974]]]}},{"type":"Feature","id":"MI","properties":{"name":"Michigan"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-83.454238,41.732339],[-84.807042,41.694001],[-84.807042,41.759724],[-85.990061,41.759724],[-86.822556,41.759724],[-86.619909,41.891171],[-86.482986,42.115725],[-86.357016,42.252649],[-86.263908,42.444341],[-86.209139,42.718189],[-86.231047,43.013943],[-86.526801,43.594499],[-86.433693,43.813577],[-86.499417,44.07647],[-86.269385,44.34484],[-86.220093,44.569394],[-86.252954,44.689887],[-86.088646,44.73918],[-86.066738,44.903488],[-85.809322,44.947303],[-85.612152,45.128042],[-85.628583,44.766564],[-85.524521,44.750133],[-85.393075,44.930872],[-85.387598,45.237581],[-85.305444,45.314258],[-85.031597,45.363551],[-85.119228,45.577151],[-84.938489,45.75789],[-84.713934,45.768844],[-84.461995,45.653829],[-84.215533,45.637398],[-84.09504,45.494997],[-83.908824,45.484043],[-83.596638,45.352597],[-83.4871,45.358074],[-83.317314,45.144473],[-83.454238,45.029457],[-83.322791,44.88158],[-83.273499,44.711795],[-83.333745,44.339363],[-83.536392,44.246255],[-83.585684,44.054562],[-83.82667,43.988839],[-83.958116,43.758807],[-83.908824,43.671176],[-83.667839,43.589022],[-83.481623,43.714992],[-83.262545,43.972408],[-82.917498,44.070993],[-82.747713,43.994316],[-82.643651,43.851915],[-82.539589,43.435668],[-82.523158,43.227544],[-82.413619,42.975605],[-82.517681,42.614127],[-82.681989,42.559357],[-82.687466,42.690804],[-82.797005,42.652465],[-82.922975,42.351234],[-83.125621,42.236218],[-83.185868,42.006186],[-83.437807,41.814493],[-83.454238,41.732339]]],[[[-85.508091,45.730506],[-85.49166,45.610013],[-85.623106,45.588105],[-85.568337,45.75789],[-85.508091,45.730506]]],[[[-87.589328,45.095181],[-87.742682,45.199243],[-87.649574,45.341643],[-87.885083,45.363551],[-87.791975,45.500474],[-87.781021,45.675736],[-87.989145,45.796229],[-88.10416,45.922199],[-88.531362,46.020784],[-88.662808,45.987922],[-89.09001,46.135799],[-90.119674,46.338446],[-90.229213,46.508231],[-90.415429,46.568478],[-90.026566,46.672539],[-89.851304,46.793032],[-89.413149,46.842325],[-89.128348,46.990202],[-88.996902,46.995679],[-88.887363,47.099741],[-88.575177,47.247618],[-88.416346,47.373588],[-88.180837,47.455742],[-87.956283,47.384542],[-88.350623,47.077833],[-88.443731,46.973771],[-88.438254,46.787555],[-88.246561,46.929956],[-87.901513,46.908048],[-87.633143,46.809463],[-87.392158,46.535616],[-87.260711,46.486323],[-87.008772,46.530139],[-86.948526,46.469893],[-86.696587,46.437031],[-86.159846,46.667063],[-85.880522,46.68897],[-85.508091,46.678016],[-85.256151,46.754694],[-85.064458,46.760171],[-85.02612,46.480847],[-84.82895,46.442508],[-84.63178,46.486323],[-84.549626,46.4206],[-84.418179,46.502754],[-84.127902,46.530139],[-84.122425,46.179615],[-83.990978,46.031737],[-83.793808,45.993399],[-83.7719,46.091984],[-83.580208,46.091984],[-83.476146,45.987922],[-83.563777,45.911245],[-84.111471,45.976968],[-84.374364,45.933153],[-84.659165,46.053645],[-84.741319,45.944106],[-84.70298,45.850998],[-84.82895,45.872906],[-85.015166,46.00983],[-85.338305,46.091984],[-85.502614,46.097461],[-85.661445,45.966014],[-85.924338,45.933153],[-86.209139,45.960537],[-86.324155,45.905768],[-86.351539,45.796229],[-86.663725,45.703121],[-86.647294,45.834568],[-86.784218,45.861952],[-86.838987,45.725029],[-87.069019,45.719552],[-87.17308,45.659305],[-87.326435,45.423797],[-87.611236,45.122565],[-87.589328,45.095181]]],[[[-88.805209,47.976051],[-89.057148,47.850082],[-89.188594,47.833651],[-89.177641,47.937713],[-88.547792,48.173221],[-88.668285,48.008913],[-88.805209,47.976051]]]]}},{"type":"Feature","id":"MN","properties":{"name":"Minnesota"},"geometry":{"type":"Polygon","coordinates":[[[-92.014696,46.705401],[-92.091373,46.749217],[-92.29402,46.667063],[-92.29402,46.075553],[-92.354266,46.015307],[-92.639067,45.933153],[-92.869098,45.719552],[-92.885529,45.577151],[-92.770513,45.566198],[-92.644544,45.440228],[-92.75956,45.286874],[-92.737652,45.117088],[-92.808852,44.750133],[-92.545959,44.569394],[-92.337835,44.552964],[-92.233773,44.443425],[-91.927065,44.333886],[-91.877772,44.202439],[-91.592971,44.032654],[-91.43414,43.994316],[-91.242447,43.775238],[-91.269832,43.616407],[-91.215062,43.501391],[-91.368417,43.501391],[-96.451017,43.501391],[-96.451017,45.297827],[-96.681049,45.412843],[-96.856311,45.604536],[-96.582464,45.818137],[-96.560556,45.933153],[-96.598895,46.332969],[-96.719387,46.437031],[-96.801542,46.656109],[-96.785111,46.924479],[-96.823449,46.968294],[-96.856311,47.609096],[-97.053481,47.948667],[-97.130158,48.140359],[-97.16302,48.545653],[-97.097296,48.682577],[-97.228743,49.000239],[-95.152983,49.000239],[-95.152983,49.383625],[-94.955813,49.372671],[-94.824366,49.295994],[-94.69292,48.775685],[-94.588858,48.715438],[-94.260241,48.699007],[-94.221903,48.649715],[-93.838517,48.627807],[-93.794701,48.518268],[-93.466085,48.545653],[-93.466085,48.589469],[-93.208669,48.644238],[-92.984114,48.62233],[-92.726698,48.540176],[-92.655498,48.436114],[-92.50762,48.447068],[-92.370697,48.222514],[-92.304974,48.315622],[-92.053034,48.359437],[-92.009219,48.266329],[-91.713464,48.200606],[-91.713464,48.112975],[-91.565587,48.041775],[-91.264355,48.080113],[-91.083616,48.178698],[-90.837154,48.238944],[-90.749522,48.091067],[-90.579737,48.123929],[-90.377091,48.091067],[-90.141582,48.112975],[-89.873212,47.987005],[-89.615796,48.008913],[-89.637704,47.954144],[-89.971797,47.828174],[-90.437337,47.729589],[-90.738569,47.625527],[-91.171247,47.368111],[-91.357463,47.20928],[-91.642264,47.028541],[-92.091373,46.787555],[-92.014696,46.705401]]]}},{"type":"Feature","id":"MS","properties":{"name":"Mississippi"},"geometry":{"type":"Polygon","coordinates":[[[-88.471115,34.995703],[-88.202745,34.995703],[-88.098683,34.891641],[-88.241084,33.796253],[-88.471115,31.895754],[-88.394438,30.367688],[-88.503977,30.323872],[-88.744962,30.34578],[-88.843547,30.411504],[-89.084533,30.367688],[-89.418626,30.252672],[-89.522688,30.181472],[-89.643181,30.285534],[-89.681519,30.449842],[-89.845827,30.66892],[-89.747242,30.997536],[-91.636787,30.997536],[-91.565587,31.068736],[-91.636787,31.265906],[-91.516294,31.27686],[-91.499863,31.643815],[-91.401278,31.621907],[-91.341032,31.846462],[-91.105524,31.988862],[-90.985031,32.218894],[-91.006939,32.514649],[-91.154816,32.640618],[-91.143862,32.843265],[-91.072662,32.887081],[-91.16577,33.002096],[-91.089093,33.13902],[-91.143862,33.347144],[-91.056231,33.429298],[-91.231493,33.560744],[-91.072662,33.867453],[-90.891923,34.026284],[-90.952169,34.135823],[-90.744046,34.300131],[-90.749522,34.365854],[-90.568783,34.420624],[-90.585214,34.617794],[-90.481152,34.661609],[-90.409952,34.831394],[-90.251121,34.908072],[-90.311367,34.995703],[-88.471115,34.995703]]]}},{"type":"Feature","id":"MO","properties":{"name":"Missouri"},"geometry":{"type":"Polygon","coordinates":[[[-91.833957,40.609566],[-91.729895,40.615043],[-91.527248,40.412397],[-91.417709,40.379535],[-91.50534,40.237135],[-91.494386,40.034488],[-91.368417,39.727779],[-91.061708,39.470363],[-90.727615,39.256762],[-90.661891,38.928146],[-90.585214,38.867899],[-90.470199,38.961007],[-90.251121,38.917192],[-90.10872,38.845992],[-90.207305,38.725499],[-90.179921,38.632391],[-90.349706,38.374975],[-90.355183,38.216144],[-90.059428,38.013497],[-89.949889,37.88205],[-89.84035,37.903958],[-89.517211,37.690357],[-89.517211,37.537003],[-89.435057,37.34531],[-89.517211,37.279587],[-89.292656,36.994786],[-89.133825,36.983832],[-89.215979,36.578538],[-89.363857,36.622354],[-89.418626,36.496384],[-89.484349,36.496384],[-89.539119,36.496384],[-89.533642,36.249922],[-89.730812,35.997983],[-90.377091,35.997983],[-90.218259,36.184199],[-90.064905,36.304691],[-90.152536,36.496384],[-94.473842,36.501861],[-94.616242,36.501861],[-94.616242,37.000263],[-94.610765,39.158177],[-94.824366,39.20747],[-94.983197,39.442978],[-95.109167,39.541563],[-94.884612,39.831841],[-95.207752,39.908518],[-95.306337,40.001626],[-95.552799,40.264519],[-95.7664,40.587659],[-94.632673,40.571228],[-93.257961,40.582182],[-91.833957,40.609566]]]}},{"type":"Feature","id":"MT","properties":{"name":"Montana"},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,49.000239],[-104.042057,47.861036],[-104.047534,45.944106],[-104.042057,44.996596],[-104.058488,44.996596],[-105.91517,45.002073],[-109.080842,45.002073],[-111.05254,45.002073],[-111.047063,44.476286],[-111.227803,44.580348],[-111.386634,44.75561],[-111.616665,44.547487],[-111.819312,44.509148],[-111.868605,44.563917],[-112.104113,44.520102],[-112.241036,44.569394],[-112.471068,44.481763],[-112.783254,44.48724],[-112.887315,44.394132],[-113.002331,44.448902],[-113.133778,44.772041],[-113.341901,44.782995],[-113.456917,44.865149],[-113.45144,45.056842],[-113.571933,45.128042],[-113.736241,45.330689],[-113.834826,45.522382],[-113.807441,45.604536],[-113.98818,45.703121],[-114.086765,45.593582],[-114.333228,45.456659],[-114.546828,45.560721],[-114.497536,45.670259],[-114.568736,45.774321],[-114.387997,45.88386],[-114.492059,46.037214],[-114.464674,46.272723],[-114.322274,46.645155],[-114.612552,46.639678],[-114.623506,46.705401],[-114.886399,46.809463],[-114.930214,46.919002],[-115.302646,47.187372],[-115.324554,47.258572],[-115.527201,47.302388],[-115.718894,47.42288],[-115.724371,47.696727],[-116.04751,47.976051],[-116.04751,49.000239],[-111.50165,48.994762],[-109.453274,49.000239],[-104.047534,49.000239]]]}},{"type":"Feature","id":"NE","properties":{"name":"Nebraska"},"geometry":{"type":"Polygon","coordinates":[[[-103.324578,43.002989],[-101.626726,42.997512],[-98.499393,42.997512],[-98.466531,42.94822],[-97.951699,42.767481],[-97.831206,42.866066],[-97.688806,42.844158],[-97.217789,42.844158],[-96.692003,42.657942],[-96.626279,42.515542],[-96.44554,42.488157],[-96.264801,42.039048],[-96.127878,41.973325],[-96.062155,41.798063],[-96.122401,41.67757],[-96.095016,41.540646],[-95.919754,41.453015],[-95.925231,41.201076],[-95.826646,40.976521],[-95.881416,40.719105],[-95.7664,40.587659],[-95.552799,40.264519],[-95.306337,40.001626],[-101.90605,40.001626],[-102.053927,40.001626],[-102.053927,41.003906],[-104.053011,41.003906],[-104.053011,43.002989],[-103.324578,43.002989]]]}},{"type":"Feature","id":"NV","properties":{"name":"Nevada"},"geometry":{"type":"Polygon","coordinates":[[[-117.027882,42.000709],[-114.04295,41.995232],[-114.048427,37.000263],[-114.048427,36.195153],[-114.152489,36.025367],[-114.251074,36.01989],[-114.371566,36.140383],[-114.738521,36.102045],[-114.678275,35.516012],[-114.596121,35.324319],[-114.574213,35.138103],[-114.634459,35.00118],[-115.85034,35.970598],[-116.540435,36.501861],[-117.498899,37.21934],[-118.71478,38.101128],[-120.001861,38.999346],[-119.996384,40.264519],[-120.001861,41.995232],[-118.698349,41.989755],[-117.027882,42.000709]]]}},{"type":"Feature","id":"NH","properties":{"name":"New Hampshire"},"geometry":{"type":"Polygon","coordinates":[[[-71.08183,45.303304],[-71.032537,44.657025],[-70.966814,43.34256],[-70.807983,43.227544],[-70.824413,43.128959],[-70.703921,43.057759],[-70.818936,42.871543],[-70.917521,42.887974],[-71.185891,42.789389],[-71.29543,42.696281],[-72.456542,42.729142],[-72.544173,42.80582],[-72.533219,42.953697],[-72.445588,43.008466],[-72.456542,43.150867],[-72.379864,43.572591],[-72.204602,43.769761],[-72.116971,43.994316],[-72.02934,44.07647],[-72.034817,44.322932],[-71.700724,44.41604],[-71.536416,44.585825],[-71.629524,44.750133],[-71.4926,44.914442],[-71.503554,45.013027],[-71.361154,45.270443],[-71.131122,45.243058],[-71.08183,45.303304]]]}},{"type":"Feature","id":"NJ","properties":{"name":"New Jersey"},"geometry":{"type":"Polygon","coordinates":[[[-74.236547,41.14083],[-73.902454,40.998429],[-74.022947,40.708151],[-74.187255,40.642428],[-74.274886,40.489074],[-74.001039,40.412397],[-73.979131,40.297381],[-74.099624,39.760641],[-74.411809,39.360824],[-74.614456,39.245808],[-74.795195,38.993869],[-74.888303,39.158177],[-75.178581,39.240331],[-75.534582,39.459409],[-75.55649,39.607286],[-75.561967,39.629194],[-75.507197,39.683964],[-75.414089,39.804456],[-75.145719,39.88661],[-75.129289,39.963288],[-74.82258,40.127596],[-74.773287,40.215227],[-75.058088,40.417874],[-75.069042,40.543843],[-75.195012,40.576705],[-75.205966,40.691721],[-75.052611,40.866983],[-75.134765,40.971045],[-74.882826,41.179168],[-74.828057,41.288707],[-74.69661,41.359907],[-74.236547,41.14083]]]}},{"type":"Feature","id":"NM","properties":{"name":"New Mexico"},"geometry":{"type":"Polygon","coordinates":[[[-107.421329,37.000263],[-106.868158,36.994786],[-104.337812,36.994786],[-103.001438,37.000263],[-103.001438,36.501861],[-103.039777,36.501861],[-103.045254,34.01533],[-103.067161,33.002096],[-103.067161,31.999816],[-106.616219,31.999816],[-106.643603,31.901231],[-106.528588,31.786216],[-108.210008,31.786216],[-108.210008,31.331629],[-109.04798,31.331629],[-109.042503,37.000263],[-107.421329,37.000263]]]}},{"type":"Feature","id":"NY","properties":{"name":"New York"},"geometry":{"type":"Polygon","coordinates":[[[-73.343806,45.013027],[-73.332852,44.804903],[-73.387622,44.618687],[-73.294514,44.437948],[-73.321898,44.246255],[-73.436914,44.043608],[-73.349283,43.769761],[-73.404052,43.687607],[-73.245221,43.523299],[-73.278083,42.833204],[-73.267129,42.745573],[-73.508114,42.08834],[-73.486206,42.050002],[-73.55193,41.294184],[-73.48073,41.21203],[-73.727192,41.102491],[-73.655992,40.987475],[-73.22879,40.905321],[-73.141159,40.965568],[-72.774204,40.965568],[-72.587988,40.998429],[-72.28128,41.157261],[-72.259372,41.042245],[-72.100541,40.992952],[-72.467496,40.845075],[-73.239744,40.625997],[-73.562884,40.582182],[-73.776484,40.593136],[-73.935316,40.543843],[-74.022947,40.708151],[-73.902454,40.998429],[-74.236547,41.14083],[-74.69661,41.359907],[-74.740426,41.431108],[-74.89378,41.436584],[-75.074519,41.60637],[-75.052611,41.754247],[-75.173104,41.869263],[-75.249781,41.863786],[-75.35932,42.000709],[-79.76278,42.000709],[-79.76278,42.252649],[-79.76278,42.269079],[-79.149363,42.55388],[-79.050778,42.690804],[-78.853608,42.783912],[-78.930285,42.953697],[-79.012439,42.986559],[-79.072686,43.260406],[-78.486653,43.375421],[-77.966344,43.369944],[-77.75822,43.34256],[-77.533665,43.233021],[-77.391265,43.276836],[-76.958587,43.271359],[-76.695693,43.34256],[-76.41637,43.523299],[-76.235631,43.528776],[-76.230154,43.802623],[-76.137046,43.961454],[-76.3616,44.070993],[-76.312308,44.196962],[-75.912491,44.366748],[-75.764614,44.514625],[-75.282643,44.848718],[-74.828057,45.018503],[-74.148916,44.991119],[-73.343806,45.013027]]]}},{"type":"Feature","id":"NC","properties":{"name":"North Carolina"},"geometry":{"type":"Polygon","coordinates":[[[-80.978661,36.562108],[-80.294043,36.545677],[-79.510841,36.5402],[-75.868676,36.551154],[-75.75366,36.151337],[-76.032984,36.189676],[-76.071322,36.140383],[-76.410893,36.080137],[-76.460185,36.025367],[-76.68474,36.008937],[-76.673786,35.937736],[-76.399939,35.987029],[-76.3616,35.943213],[-76.060368,35.992506],[-75.961783,35.899398],[-75.781044,35.937736],[-75.715321,35.696751],[-75.775568,35.581735],[-75.89606,35.570781],[-76.147999,35.324319],[-76.482093,35.313365],[-76.536862,35.14358],[-76.394462,34.973795],[-76.279446,34.940933],[-76.493047,34.661609],[-76.673786,34.694471],[-76.991448,34.667086],[-77.210526,34.60684],[-77.555573,34.415147],[-77.82942,34.163208],[-77.971821,33.845545],[-78.179944,33.916745],[-78.541422,33.851022],[-79.675149,34.80401],[-80.797922,34.820441],[-80.781491,34.935456],[-80.934845,35.105241],[-81.038907,35.044995],[-81.044384,35.149057],[-82.276696,35.198349],[-82.550543,35.160011],[-82.764143,35.066903],[-83.109191,35.00118],[-83.618546,34.984749],[-84.319594,34.990226],[-84.29221,35.225734],[-84.09504,35.247642],[-84.018363,35.41195],[-83.7719,35.559827],[-83.498053,35.565304],[-83.251591,35.718659],[-82.994175,35.773428],[-82.775097,35.997983],[-82.638174,36.063706],[-82.610789,35.965121],[-82.216449,36.156814],[-82.03571,36.118475],[-81.909741,36.304691],[-81.723525,36.353984],[-81.679709,36.589492],[-80.978661,36.562108]]]}},{"type":"Feature","id":"ND","properties":{"name":"North Dakota"},"geometry":{"type":"Polygon","coordinates":[[[-97.228743,49.000239],[-97.097296,48.682577],[-97.16302,48.545653],[-97.130158,48.140359],[-97.053481,47.948667],[-96.856311,47.609096],[-96.823449,46.968294],[-96.785111,46.924479],[-96.801542,46.656109],[-96.719387,46.437031],[-96.598895,46.332969],[-96.560556,45.933153],[-104.047534,45.944106],[-104.042057,47.861036],[-104.047534,49.000239],[-97.228743,49.000239]]]}},{"type":"Feature","id":"OH","properties":{"name":"Ohio"},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,41.978802],[-80.518598,40.636951],[-80.666475,40.582182],[-80.595275,40.472643],[-80.600752,40.319289],[-80.737675,40.078303],[-80.830783,39.711348],[-81.219646,39.388209],[-81.345616,39.344393],[-81.455155,39.410117],[-81.57017,39.267716],[-81.685186,39.273193],[-81.811156,39.0815],[-81.783771,38.966484],[-81.887833,38.873376],[-82.03571,39.026731],[-82.221926,38.785745],[-82.172634,38.632391],[-82.293127,38.577622],[-82.331465,38.446175],[-82.594358,38.424267],[-82.731282,38.561191],[-82.846298,38.588575],[-82.890113,38.758361],[-83.032514,38.725499],[-83.142052,38.626914],[-83.519961,38.703591],[-83.678792,38.632391],[-83.903347,38.769315],[-84.215533,38.807653],[-84.231963,38.895284],[-84.43461,39.103408],[-84.817996,39.103408],[-84.801565,40.500028],[-84.807042,41.694001],[-83.454238,41.732339],[-83.065375,41.595416],[-82.933929,41.513262],[-82.835344,41.589939],[-82.616266,41.431108],[-82.479343,41.381815],[-82.013803,41.513262],[-81.739956,41.485877],[-81.444201,41.672093],[-81.011523,41.852832],[-80.518598,41.978802],[-80.518598,41.978802]]]}},{"type":"Feature","id":"OK","properties":{"name":"Oklahoma"},"geometry":{"type":"Polygon","coordinates":[[[-100.087706,37.000263],[-94.616242,37.000263],[-94.616242,36.501861],[-94.430026,35.395519],[-94.484796,33.637421],[-94.868182,33.74696],[-94.966767,33.861976],[-95.224183,33.960561],[-95.289906,33.87293],[-95.547322,33.878407],[-95.602092,33.933176],[-95.8376,33.834591],[-95.936185,33.889361],[-96.149786,33.840068],[-96.346956,33.686714],[-96.423633,33.774345],[-96.631756,33.845545],[-96.850834,33.845545],[-96.922034,33.960561],[-97.173974,33.736006],[-97.256128,33.861976],[-97.371143,33.823637],[-97.458774,33.905791],[-97.694283,33.982469],[-97.869545,33.851022],[-97.946222,33.987946],[-98.088623,34.004376],[-98.170777,34.113915],[-98.36247,34.157731],[-98.488439,34.064623],[-98.570593,34.146777],[-98.767763,34.135823],[-98.986841,34.223454],[-99.189488,34.2125],[-99.260688,34.404193],[-99.57835,34.415147],[-99.698843,34.382285],[-99.923398,34.573978],[-100.000075,34.563024],[-100.000075,36.501861],[-101.812942,36.501861],[-103.001438,36.501861],[-103.001438,37.000263],[-102.042974,36.994786],[-100.087706,37.000263]]]}},{"type":"Feature","id":"OR","properties":{"name":"Oregon"},"geometry":{"type":"Polygon","coordinates":[[[-123.211348,46.174138],[-123.11824,46.185092],[-122.904639,46.08103],[-122.811531,45.960537],[-122.762239,45.659305],[-122.247407,45.549767],[-121.809251,45.708598],[-121.535404,45.725029],[-121.217742,45.670259],[-121.18488,45.604536],[-120.637186,45.746937],[-120.505739,45.697644],[-120.209985,45.725029],[-119.963522,45.823614],[-119.525367,45.911245],[-119.125551,45.933153],[-118.988627,45.998876],[-116.918344,45.993399],[-116.78142,45.823614],[-116.545912,45.752413],[-116.463758,45.61549],[-116.671881,45.319735],[-116.732128,45.144473],[-116.847143,45.02398],[-116.830713,44.930872],[-116.934774,44.782995],[-117.038836,44.750133],[-117.241483,44.394132],[-117.170283,44.257209],[-116.97859,44.240778],[-116.896436,44.158624],[-117.027882,43.830007],[-117.027882,42.000709],[-118.698349,41.989755],[-120.001861,41.995232],[-121.037003,41.995232],[-122.378853,42.011663],[-123.233256,42.006186],[-124.213628,42.000709],[-124.356029,42.115725],[-124.432706,42.438865],[-124.416275,42.663419],[-124.553198,42.838681],[-124.454613,43.002989],[-124.383413,43.271359],[-124.235536,43.55616],[-124.169813,43.8081],[-124.060274,44.657025],[-124.076705,44.772041],[-123.97812,45.144473],[-123.939781,45.659305],[-123.994551,45.944106],[-123.945258,46.113892],[-123.545441,46.261769],[-123.370179,46.146753],[-123.211348,46.174138]]]}},{"type":"Feature","id":"PA","properties":{"name":"Pennsylvania"},"geometry":{"type":"Polygon","coordinates":[[[-79.76278,42.252649],[-79.76278,42.000709],[-75.35932,42.000709],[-75.249781,41.863786],[-75.173104,41.869263],[-75.052611,41.754247],[-75.074519,41.60637],[-74.89378,41.436584],[-74.740426,41.431108],[-74.69661,41.359907],[-74.828057,41.288707],[-74.882826,41.179168],[-75.134765,40.971045],[-75.052611,40.866983],[-75.205966,40.691721],[-75.195012,40.576705],[-75.069042,40.543843],[-75.058088,40.417874],[-74.773287,40.215227],[-74.82258,40.127596],[-75.129289,39.963288],[-75.145719,39.88661],[-75.414089,39.804456],[-75.616736,39.831841],[-75.786521,39.722302],[-79.477979,39.722302],[-80.518598,39.722302],[-80.518598,40.636951],[-80.518598,41.978802],[-80.518598,41.978802],[-80.332382,42.033571],[-79.76278,42.269079],[-79.76278,42.252649]]]}},{"type":"Feature","id":"RI","properties":{"name":"Rhode Island"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-71.196845,41.67757],[-71.120168,41.496831],[-71.317338,41.474923],[-71.196845,41.67757]]],[[[-71.530939,42.01714],[-71.383061,42.01714],[-71.328292,41.781632],[-71.22423,41.710431],[-71.344723,41.726862],[-71.448785,41.578985],[-71.481646,41.370861],[-71.859555,41.321569],[-71.799309,41.414677],[-71.799309,42.006186],[-71.530939,42.01714]]]]}},{"type":"Feature","id":"SC","properties":{"name":"South Carolina"},"geometry":{"type":"Polygon","coordinates":[[[-82.764143,35.066903],[-82.550543,35.160011],[-82.276696,35.198349],[-81.044384,35.149057],[-81.038907,35.044995],[-80.934845,35.105241],[-80.781491,34.935456],[-80.797922,34.820441],[-79.675149,34.80401],[-78.541422,33.851022],[-78.716684,33.80173],[-78.935762,33.637421],[-79.149363,33.380005],[-79.187701,33.171881],[-79.357487,33.007573],[-79.582041,33.007573],[-79.631334,32.887081],[-79.866842,32.755634],[-79.998289,32.613234],[-80.206412,32.552987],[-80.430967,32.399633],[-80.452875,32.328433],[-80.660998,32.246279],[-80.885553,32.032678],[-81.115584,32.120309],[-81.121061,32.290094],[-81.279893,32.558464],[-81.416816,32.629664],[-81.42777,32.843265],[-81.493493,33.007573],[-81.761863,33.160928],[-81.937125,33.347144],[-81.926172,33.462159],[-82.194542,33.631944],[-82.325988,33.81816],[-82.55602,33.94413],[-82.714851,34.152254],[-82.747713,34.26727],[-82.901067,34.486347],[-83.005129,34.469916],[-83.339222,34.683517],[-83.322791,34.787579],[-83.109191,35.00118],[-82.764143,35.066903]]]}},{"type":"Feature","id":"SD","properties":{"name":"South Dakota"},"geometry":{"type":"Polygon","coordinates":[[[-104.047534,45.944106],[-96.560556,45.933153],[-96.582464,45.818137],[-96.856311,45.604536],[-96.681049,45.412843],[-96.451017,45.297827],[-96.451017,43.501391],[-96.582464,43.479483],[-96.527695,43.397329],[-96.560556,43.222067],[-96.434587,43.123482],[-96.511264,43.052282],[-96.544125,42.855112],[-96.631756,42.707235],[-96.44554,42.488157],[-96.626279,42.515542],[-96.692003,42.657942],[-97.217789,42.844158],[-97.688806,42.844158],[-97.831206,42.866066],[-97.951699,42.767481],[-98.466531,42.94822],[-98.499393,42.997512],[-101.626726,42.997512],[-103.324578,43.002989],[-104.053011,43.002989],[-104.058488,44.996596],[-104.042057,44.996596],[-104.047534,45.944106]]]}},{"type":"Feature","id":"TN","properties":{"name":"Tennessee"},"geometry":{"type":"Polygon","coordinates":[[[-88.054868,36.496384],[-88.071299,36.677123],[-87.852221,36.633308],[-86.592525,36.655216],[-85.486183,36.616877],[-85.289013,36.627831],[-84.544149,36.594969],[-83.689746,36.584015],[-83.673316,36.600446],[-81.679709,36.589492],[-81.723525,36.353984],[-81.909741,36.304691],[-82.03571,36.118475],[-82.216449,36.156814],[-82.610789,35.965121],[-82.638174,36.063706],[-82.775097,35.997983],[-82.994175,35.773428],[-83.251591,35.718659],[-83.498053,35.565304],[-83.7719,35.559827],[-84.018363,35.41195],[-84.09504,35.247642],[-84.29221,35.225734],[-84.319594,34.990226],[-85.606675,34.984749],[-87.359296,35.00118],[-88.202745,34.995703],[-88.471115,34.995703],[-90.311367,34.995703],[-90.212782,35.023087],[-90.114197,35.198349],[-90.130628,35.439335],[-89.944412,35.603643],[-89.911551,35.756997],[-89.763673,35.811767],[-89.730812,35.997983],[-89.533642,36.249922],[-89.539119,36.496384],[-89.484349,36.496384],[-89.418626,36.496384],[-89.298133,36.507338],[-88.054868,36.496384]]]}},{"type":"Feature","id":"TX","properties":{"name":"Texas"},"geometry":{"type":"Polygon","coordinates":[[[-101.812942,36.501861],[-100.000075,36.501861],[-100.000075,34.563024],[-99.923398,34.573978],[-99.698843,34.382285],[-99.57835,34.415147],[-99.260688,34.404193],[-99.189488,34.2125],[-98.986841,34.223454],[-98.767763,34.135823],[-98.570593,34.146777],[-98.488439,34.064623],[-98.36247,34.157731],[-98.170777,34.113915],[-98.088623,34.004376],[-97.946222,33.987946],[-97.869545,33.851022],[-97.694283,33.982469],[-97.458774,33.905791],[-97.371143,33.823637],[-97.256128,33.861976],[-97.173974,33.736006],[-96.922034,33.960561],[-96.850834,33.845545],[-96.631756,33.845545],[-96.423633,33.774345],[-96.346956,33.686714],[-96.149786,33.840068],[-95.936185,33.889361],[-95.8376,33.834591],[-95.602092,33.933176],[-95.547322,33.878407],[-95.289906,33.87293],[-95.224183,33.960561],[-94.966767,33.861976],[-94.868182,33.74696],[-94.484796,33.637421],[-94.380734,33.544313],[-94.183564,33.593606],[-94.041164,33.54979],[-94.041164,33.018527],[-94.041164,31.994339],[-93.822086,31.775262],[-93.816609,31.556184],[-93.542762,31.15089],[-93.526331,30.93729],[-93.630393,30.679874],[-93.728978,30.575812],[-93.696116,30.438888],[-93.767317,30.334826],[-93.690639,30.143133],[-93.926148,29.787132],[-93.838517,29.688547],[-94.002825,29.68307],[-94.523134,29.546147],[-94.70935,29.622824],[-94.742212,29.787132],[-94.873659,29.672117],[-94.966767,29.699501],[-95.016059,29.557101],[-94.911997,29.496854],[-94.895566,29.310638],[-95.081782,29.113469],[-95.383014,28.867006],[-95.985477,28.604113],[-96.045724,28.647929],[-96.226463,28.582205],[-96.23194,28.642452],[-96.478402,28.598636],[-96.593418,28.724606],[-96.664618,28.697221],[-96.401725,28.439805],[-96.593418,28.357651],[-96.774157,28.406943],[-96.801542,28.226204],[-97.026096,28.039988],[-97.256128,27.694941],[-97.404005,27.333463],[-97.513544,27.360848],[-97.540929,27.229401],[-97.425913,27.262263],[-97.480682,26.99937],[-97.557359,26.988416],[-97.562836,26.840538],[-97.469728,26.758384],[-97.442344,26.457153],[-97.332805,26.353091],[-97.30542,26.161398],[-97.217789,25.991613],[-97.524498,25.887551],[-97.650467,26.018997],[-97.885976,26.06829],[-98.198161,26.057336],[-98.466531,26.221644],[-98.669178,26.238075],[-98.822533,26.369522],[-99.030656,26.413337],[-99.173057,26.539307],[-99.266165,26.840538],[-99.446904,27.021277],[-99.424996,27.174632],[-99.50715,27.33894],[-99.479765,27.48134],[-99.605735,27.640172],[-99.709797,27.656603],[-99.879582,27.799003],[-99.934351,27.979742],[-100.082229,28.14405],[-100.29583,28.280974],[-100.399891,28.582205],[-100.498476,28.66436],[-100.629923,28.905345],[-100.673738,29.102515],[-100.799708,29.244915],[-101.013309,29.370885],[-101.062601,29.458516],[-101.259771,29.535193],[-101.413125,29.754271],[-101.851281,29.803563],[-102.114174,29.792609],[-102.338728,29.869286],[-102.388021,29.765225],[-102.629006,29.732363],[-102.809745,29.524239],[-102.919284,29.190146],[-102.97953,29.184669],[-103.116454,28.987499],[-103.280762,28.982022],[-103.527224,29.135376],[-104.146119,29.381839],[-104.266611,29.513285],[-104.507597,29.639255],[-104.677382,29.924056],[-104.688336,30.181472],[-104.858121,30.389596],[-104.896459,30.570335],[-105.005998,30.685351],[-105.394861,30.855136],[-105.602985,31.085167],[-105.77277,31.167321],[-105.953509,31.364491],[-106.205448,31.468553],[-106.38071,31.731446],[-106.528588,31.786216],[-106.643603,31.901231],[-106.616219,31.999816],[-103.067161,31.999816],[-103.067161,33.002096],[-103.045254,34.01533],[-103.039777,36.501861],[-103.001438,36.501861],[-101.812942,36.501861]]]}},{"type":"Feature","id":"UT","properties":{"name":"Utah"},"geometry":{"type":"Polygon","coordinates":[[[-112.164359,41.995232],[-111.047063,42.000709],[-111.047063,40.998429],[-109.04798,40.998429],[-109.053457,39.125316],[-109.058934,38.27639],[-109.042503,38.166851],[-109.042503,37.000263],[-110.499369,37.00574],[-114.048427,37.000263],[-114.04295,41.995232],[-112.164359,41.995232]]]}},{"type":"Feature","id":"VT","properties":{"name":"Vermont"},"geometry":{"type":"Polygon","coordinates":[[[-71.503554,45.013027],[-71.4926,44.914442],[-71.629524,44.750133],[-71.536416,44.585825],[-71.700724,44.41604],[-72.034817,44.322932],[-72.02934,44.07647],[-72.116971,43.994316],[-72.204602,43.769761],[-72.379864,43.572591],[-72.456542,43.150867],[-72.445588,43.008466],[-72.533219,42.953697],[-72.544173,42.80582],[-72.456542,42.729142],[-73.267129,42.745573],[-73.278083,42.833204],[-73.245221,43.523299],[-73.404052,43.687607],[-73.349283,43.769761],[-73.436914,44.043608],[-73.321898,44.246255],[-73.294514,44.437948],[-73.387622,44.618687],[-73.332852,44.804903],[-73.343806,45.013027],[-72.308664,45.002073],[-71.503554,45.013027]]]}},{"type":"Feature","id":"VA","properties":{"name":"Virginia"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-75.397659,38.013497],[-75.244304,38.029928],[-75.375751,37.860142],[-75.512674,37.799896],[-75.594828,37.569865],[-75.802952,37.197433],[-75.972737,37.120755],[-76.027507,37.257679],[-75.939876,37.564388],[-75.671506,37.95325],[-75.397659,38.013497]]],[[[-76.016553,37.95325],[-75.994645,37.95325],[-76.043938,37.95325],[-76.016553,37.95325]]],[[[-78.349729,39.464886],[-77.82942,39.130793],[-77.719881,39.322485],[-77.566527,39.306055],[-77.456988,39.223901],[-77.456988,39.076023],[-77.248864,39.026731],[-77.117418,38.933623],[-77.040741,38.791222],[-77.128372,38.632391],[-77.248864,38.588575],[-77.325542,38.446175],[-77.281726,38.342113],[-77.013356,38.374975],[-76.964064,38.216144],[-76.613539,38.15042],[-76.514954,38.024451],[-76.235631,37.887527],[-76.3616,37.608203],[-76.246584,37.389126],[-76.383508,37.285064],[-76.399939,37.159094],[-76.273969,37.082417],[-76.410893,36.961924],[-76.619016,37.120755],[-76.668309,37.065986],[-76.48757,36.95097],[-75.994645,36.923586],[-75.868676,36.551154],[-79.510841,36.5402],[-80.294043,36.545677],[-80.978661,36.562108],[-81.679709,36.589492],[-83.673316,36.600446],[-83.136575,36.742847],[-83.070852,36.852385],[-82.879159,36.890724],[-82.868205,36.978355],[-82.720328,37.044078],[-82.720328,37.120755],[-82.353373,37.268633],[-81.969987,37.537003],[-81.986418,37.454849],[-81.849494,37.285064],[-81.679709,37.20291],[-81.55374,37.208387],[-81.362047,37.339833],[-81.225123,37.235771],[-80.967707,37.290541],[-80.513121,37.482234],[-80.474782,37.421987],[-80.29952,37.509618],[-80.294043,37.690357],[-80.184505,37.849189],[-79.998289,37.997066],[-79.921611,38.177805],[-79.724442,38.364021],[-79.647764,38.594052],[-79.477979,38.457129],[-79.313671,38.413313],[-79.209609,38.495467],[-78.996008,38.851469],[-78.870039,38.763838],[-78.404499,39.169131],[-78.349729,39.464886]]]]}},{"type":"Feature","id":"WA","properties":{"name":"Washington"},"geometry":{"type":"MultiPolygon","coordinates":[[[[-117.033359,49.000239],[-117.044313,47.762451],[-117.038836,46.426077],[-117.055267,46.343923],[-116.92382,46.168661],[-116.918344,45.993399],[-118.988627,45.998876],[-119.125551,45.933153],[-119.525367,45.911245],[-119.963522,45.823614],[-120.209985,45.725029],[-120.505739,45.697644],[-120.637186,45.746937],[-121.18488,45.604536],[-121.217742,45.670259],[-121.535404,45.725029],[-121.809251,45.708598],[-122.247407,45.549767],[-122.762239,45.659305],[-122.811531,45.960537],[-122.904639,46.08103],[-123.11824,46.185092],[-123.211348,46.174138],[-123.370179,46.146753],[-123.545441,46.261769],[-123.72618,46.300108],[-123.874058,46.239861],[-124.065751,46.327492],[-124.027412,46.464416],[-123.895966,46.535616],[-124.098612,46.74374],[-124.235536,47.285957],[-124.31769,47.357157],[-124.427229,47.740543],[-124.624399,47.88842],[-124.706553,48.184175],[-124.597014,48.381345],[-124.394367,48.288237],[-123.983597,48.162267],[-123.704273,48.167744],[-123.424949,48.118452],[-123.162056,48.167744],[-123.036086,48.080113],[-122.800578,48.08559],[-122.636269,47.866512],[-122.515777,47.882943],[-122.493869,47.587189],[-122.422669,47.318818],[-122.324084,47.346203],[-122.422669,47.576235],[-122.395284,47.800789],[-122.230976,48.030821],[-122.362422,48.123929],[-122.373376,48.288237],[-122.471961,48.468976],[-122.422669,48.600422],[-122.488392,48.753777],[-122.647223,48.775685],[-122.795101,48.8907],[-122.756762,49.000239],[-117.033359,49.000239]]],[[[-122.718423,48.310145],[-122.586977,48.35396],[-122.608885,48.151313],[-122.767716,48.227991],[-122.718423,48.310145]]],[[[-123.025132,48.583992],[-122.915593,48.715438],[-122.767716,48.556607],[-122.811531,48.419683],[-123.041563,48.458022],[-123.025132,48.583992]]]]}},{"type":"Feature","id":"WV","properties":{"name":"West Virginia"},"geometry":{"type":"Polygon","coordinates":[[[-80.518598,40.636951],[-80.518598,39.722302],[-79.477979,39.722302],[-79.488933,39.20747],[-79.291763,39.300578],[-79.094593,39.470363],[-78.963147,39.437501],[-78.765977,39.585379],[-78.470222,39.514178],[-78.431884,39.623717],[-78.267575,39.61824],[-78.174467,39.694917],[-78.004682,39.601809],[-77.834897,39.601809],[-77.719881,39.322485],[-77.82942,39.130793],[-78.349729,39.464886],[-78.404499,39.169131],[-78.870039,38.763838],[-78.996008,38.851469],[-79.209609,38.495467],[-79.313671,38.413313],[-79.477979,38.457129],[-79.647764,38.594052],[-79.724442,38.364021],[-79.921611,38.177805],[-79.998289,37.997066],[-80.184505,37.849189],[-80.294043,37.690357],[-80.29952,37.509618],[-80.474782,37.421987],[-80.513121,37.482234],[-80.967707,37.290541],[-81.225123,37.235771],[-81.362047,37.339833],[-81.55374,37.208387],[-81.679709,37.20291],[-81.849494,37.285064],[-81.986418,37.454849],[-81.969987,37.537003],[-82.101434,37.553434],[-82.293127,37.668449],[-82.342419,37.783465],[-82.50125,37.931343],[-82.621743,38.123036],[-82.594358,38.424267],[-82.331465,38.446175],[-82.293127,38.577622],[-82.172634,38.632391],[-82.221926,38.785745],[-82.03571,39.026731],[-81.887833,38.873376],[-81.783771,38.966484],[-81.811156,39.0815],[-81.685186,39.273193],[-81.57017,39.267716],[-81.455155,39.410117],[-81.345616,39.344393],[-81.219646,39.388209],[-80.830783,39.711348],[-80.737675,40.078303],[-80.600752,40.319289],[-80.595275,40.472643],[-80.666475,40.582182],[-80.518598,40.636951]]]}},{"type":"Feature","id":"WI","properties":{"name":"Wisconsin"},"geometry":{"type":"Polygon","coordinates":[[[-90.415429,46.568478],[-90.229213,46.508231],[-90.119674,46.338446],[-89.09001,46.135799],[-88.662808,45.987922],[-88.531362,46.020784],[-88.10416,45.922199],[-87.989145,45.796229],[-87.781021,45.675736],[-87.791975,45.500474],[-87.885083,45.363551],[-87.649574,45.341643],[-87.742682,45.199243],[-87.589328,45.095181],[-87.627666,44.974688],[-87.819359,44.95278],[-87.983668,44.722749],[-88.043914,44.563917],[-87.928898,44.536533],[-87.775544,44.640595],[-87.611236,44.837764],[-87.403112,44.914442],[-87.238804,45.166381],[-87.03068,45.22115],[-87.047111,45.089704],[-87.189511,44.969211],[-87.468835,44.552964],[-87.545512,44.322932],[-87.540035,44.158624],[-87.644097,44.103854],[-87.737205,43.8793],[-87.704344,43.687607],[-87.791975,43.561637],[-87.912467,43.249452],[-87.885083,43.002989],[-87.76459,42.783912],[-87.802929,42.493634],[-88.788778,42.493634],[-90.639984,42.510065],[-90.711184,42.636034],[-91.067185,42.75105],[-91.143862,42.909881],[-91.176724,43.134436],[-91.056231,43.254929],[-91.204109,43.353514],[-91.215062,43.501391],[-91.269832,43.616407],[-91.242447,43.775238],[-91.43414,43.994316],[-91.592971,44.032654],[-91.877772,44.202439],[-91.927065,44.333886],[-92.233773,44.443425],[-92.337835,44.552964],[-92.545959,44.569394],[-92.808852,44.750133],[-92.737652,45.117088],[-92.75956,45.286874],[-92.644544,45.440228],[-92.770513,45.566198],[-92.885529,45.577151],[-92.869098,45.719552],[-92.639067,45.933153],[-92.354266,46.015307],[-92.29402,46.075553],[-92.29402,46.667063],[-92.091373,46.749217],[-92.014696,46.705401],[-91.790141,46.694447],[-91.09457,46.864232],[-90.837154,46.95734],[-90.749522,46.88614],[-90.886446,46.754694],[-90.55783,46.584908],[-90.415429,46.568478]]]}},{"type":"Feature","id":"WY","properties":{"name":"Wyoming"},"geometry":{"type":"Polygon","coordinates":[[[-109.080842,45.002073],[-105.91517,45.002073],[-104.058488,44.996596],[-104.053011,43.002989],[-104.053011,41.003906],[-105.728954,40.998429],[-107.919731,41.003906],[-109.04798,40.998429],[-111.047063,40.998429],[-111.047063,42.000709],[-111.047063,44.476286],[-111.05254,45.002073],[-109.080842,45.002073]]]}}]}') }, function (e, a, n) { var o = n(20), r = n(21), t = n(39); e.exports.merge = function (e) { for (var a = { type: "FeatureCollection", features: [] }, n = 0; n < e.length; n++)for (var r = o(e[n]), t = 0; t < r.features.length; t++)a.features.push(r.features[t]); return a }, e.exports.mergeFeatureCollectionStream = function (e) { var a = r.stringify(); return e.forEach((function (e) { t.createReadStream(e).pipe(r.parse()).pipe(a) })), a } }, function (e, a) { e.exports = function (e) { if (!e || !e.type) return null; var a = n[e.type]; if (!a) return null; if ("geometry" === a) return { type: "FeatureCollection", features: [{ type: "Feature", properties: {}, geometry: e }] }; if ("feature" === a) return { type: "FeatureCollection", features: [e] }; if ("featurecollection" === a) return e }; var n = { Point: "geometry", MultiPoint: "geometry", LineString: "geometry", MultiLineString: "geometry", Polygon: "geometry", MultiPolygon: "geometry", GeometryCollection: "geometry", Feature: "feature", FeatureCollection: "featurecollection" } }, function (e, a, n) { var o = n(22); e.exports.parse = function () { return o.parse("features.*") }, e.exports.stringify = function () { return o.stringify('{"type":"FeatureCollection","features":[', "\n,\n", "]}") } }, function (e, a, n) { "use strict"; (function (e) { var o = n(25), r = n(26), t = e.from && e.from !== Uint8Array.from; function i(e, a) { return "string" == typeof e ? a == e : e && "function" == typeof e.exec ? e.exec(a) : "boolean" == typeof e || "object" == typeof e ? e : "function" == typeof e && e(a) } a.parse = function (a, n) { var l, _, s = new o, u = r((function (a) { "string" == typeof a && (a = t ? e.from(a) : new e(a)), s.write(a) }), (function (e) { e && u.write(e), l && u.emit("header", l), _ && u.emit("footer", _), u.queue(null) })); "string" == typeof a && (a = a.split(".").map((function (e) { return "$*" === e ? { emitKey: !0 } : "*" === e || ("" === e ? { recurse: !0 } : e) }))); return a && a.length || (a = null), s.onValue = function (e) { if (this.root || (u.root = e), a) { for (var o = 0, r = 0, t = !1, _ = !1; o < a.length;) { var s, p = a[o]; if (r++, p && !p.recurse) { if (!(s = r === this.stack.length ? this : this.stack[r])) return; if (!i(p, s.key)) return void m(s.key, e); t = !!p.emitKey, _ = !!p.emitPath, o++ } else { o++; var d = a[o]; if (!d) return; for (; ;) { if (!(s = r === this.stack.length ? this : this.stack[r])) return; if (i(d, s.key)) { o++, Object.isFrozen(this.stack[r]) || (this.stack[r].value = null); break } m(s.key, e), r++ } } } if (l && (u.emit("header", l), l = !1), r === this.stack.length) { 0; var c = this.stack.slice(1).map((function (e) { return e.key })).concat([this.key]), g = e; for (var f in null != g && null != (g = n ? n(g, c) : g) && ((t || _) && (g = { value: g }, t && (g.key = this.key), _ && (g.path = c)), u.queue(g)), this.value && delete this.value[this.key], this.stack) Object.isFrozen(this.stack[f]) || (this.stack[f].value = null) } } }, s._onToken = s.onToken, s.onToken = function (e, n) { s._onToken(e, n), 0 === this.stack.length && u.root && (a || u.queue(u.root), 0, u.root = null) }, s.onError = function (e) { e.message.indexOf("at position") > -1 && (e.message = "Invalid JSON (" + e.message + ")"), u.emit("error", e) }, u; function m(e, a) { !1 !== l && ((l = l || {})[e] = a), !1 !== _ && !1 === l && ((_ = _ || {})[e] = a) } }, a.stringify = function (e, a, n, o) { o = o || 0, !1 === e ? (e = "", a = "\n", n = "") : null == e && (e = "[\n", a = "\n,\n", n = "\n]\n"); var t, i = !0, l = !1; return t = r((function (n) { l = !0; try { var r = JSON.stringify(n, null, o) } catch (e) { return t.emit("error", e) } i ? (i = !1, t.queue(e + r)) : t.queue(a + r) }), (function (a) { l || t.queue(e), t.queue(n), t.queue(null) })) }, a.stringifyObject = function (e, a, n, o) { o = o || 0, !1 === e ? (e = "", a = "\n", n = "") : null == e && (e = "{\n", a = "\n,\n", n = "\n}\n"); var t = !0, i = !1; return r((function (n) { i = !0; var r = JSON.stringify(n[0]) + ":" + JSON.stringify(n[1], null, o); t ? (t = !1, this.queue(e + r)) : this.queue(a + r) }), (function (a) { i || this.queue(e), this.queue(n), this.queue(null) })) } }).call(this, n(5).Buffer) }, function (e, a, n) { "use strict"; a.byteLength = function (e) { var a = s(e), n = a[0], o = a[1]; return 3 * (n + o) / 4 - o }, a.toByteArray = function (e) { var a, n, o = s(e), i = o[0], l = o[1], _ = new t(function (e, a, n) { return 3 * (a + n) / 4 - n }(0, i, l)), u = 0, m = l > 0 ? i - 4 : i; for (n = 0; n < m; n += 4)a = r[e.charCodeAt(n)] << 18 | r[e.charCodeAt(n + 1)] << 12 | r[e.charCodeAt(n + 2)] << 6 | r[e.charCodeAt(n + 3)], _[u++] = a >> 16 & 255, _[u++] = a >> 8 & 255, _[u++] = 255 & a; 2 === l && (a = r[e.charCodeAt(n)] << 2 | r[e.charCodeAt(n + 1)] >> 4, _[u++] = 255 & a); 1 === l && (a = r[e.charCodeAt(n)] << 10 | r[e.charCodeAt(n + 1)] << 4 | r[e.charCodeAt(n + 2)] >> 2, _[u++] = a >> 8 & 255, _[u++] = 255 & a); return _ }, a.fromByteArray = function (e) { for (var a, n = e.length, r = n % 3, t = [], i = 0, l = n - r; i < l; i += 16383)t.push(u(e, i, i + 16383 > l ? l : i + 16383)); 1 === r ? (a = e[n - 1], t.push(o[a >> 2] + o[a << 4 & 63] + "==")) : 2 === r && (a = (e[n - 2] << 8) + e[n - 1], t.push(o[a >> 10] + o[a >> 4 & 63] + o[a << 2 & 63] + "=")); return t.join("") }; for (var o = [], r = [], t = "undefined" != typeof Uint8Array ? Uint8Array : Array, i = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/", l = 0, _ = i.length; l < _; ++l)o[l] = i[l], r[i.charCodeAt(l)] = l; function s(e) { var a = e.length; if (a % 4 > 0) throw new Error("Invalid string. Length must be a multiple of 4"); var n = e.indexOf("="); return -1 === n && (n = a), [n, n === a ? 0 : 4 - n % 4] } function u(e, a, n) { for (var r, t, i = [], l = a; l < n; l += 3)r = (e[l] << 16 & 16711680) + (e[l + 1] << 8 & 65280) + (255 & e[l + 2]), i.push(o[(t = r) >> 18 & 63] + o[t >> 12 & 63] + o[t >> 6 & 63] + o[63 & t]); return i.join("") } r["-".charCodeAt(0)] = 62, r["_".charCodeAt(0)] = 63 }, function (e, a) { a.read = function (e, a, n, o, r) { var t, i, l = 8 * r - o - 1, _ = (1 << l) - 1, s = _ >> 1, u = -7, m = n ? r - 1 : 0, p = n ? -1 : 1, d = e[a + m]; for (m += p, t = d & (1 << -u) - 1, d >>= -u, u += l; u > 0; t = 256 * t + e[a + m], m += p, u -= 8); for (i = t & (1 << -u) - 1, t >>= -u, u += o; u > 0; i = 256 * i + e[a + m], m += p, u -= 8); if (0 === t) t = 1 - s; else { if (t === _) return i ? NaN : 1 / 0 * (d ? -1 : 1); i += Math.pow(2, o), t -= s } return (d ? -1 : 1) * i * Math.pow(2, t - o) }, a.write = function (e, a, n, o, r, t) { var i, l, _, s = 8 * t - r - 1, u = (1 << s) - 1, m = u >> 1, p = 23 === r ? Math.pow(2, -24) - Math.pow(2, -77) : 0, d = o ? 0 : t - 1, c = o ? 1 : -1, g = a < 0 || 0 === a && 1 / a < 0 ? 1 : 0; for (a = Math.abs(a), isNaN(a) || a === 1 / 0 ? (l = isNaN(a) ? 1 : 0, i = u) : (i = Math.floor(Math.log(a) / Math.LN2), a * (_ = Math.pow(2, -i)) < 1 && (i--, _ *= 2), (a += i + m >= 1 ? p / _ : p * Math.pow(2, 1 - m)) * _ >= 2 && (i++, _ /= 2), i + m >= u ? (l = 0, i = u) : i + m >= 1 ? (l = (a * _ - 1) * Math.pow(2, r), i += m) : (l = a * Math.pow(2, m - 1) * Math.pow(2, r), i = 0)); r >= 8; e[n + d] = 255 & l, d += c, l /= 256, r -= 8); for (i = i << r | l, s += r; s > 0; e[n + d] = 255 & i, d += c, i /= 256, s -= 8); e[n + d - c] |= 128 * g } }, function (e, a, n) { (function (a) { var n = {}, o = n.LEFT_BRACE = 1, r = n.RIGHT_BRACE = 2, t = n.LEFT_BRACKET = 3, i = n.RIGHT_BRACKET = 4, l = n.COLON = 5, _ = n.COMMA = 6, s = n.TRUE = 7, u = n.FALSE = 8, m = n.NULL = 9, p = n.STRING = 10, d = n.NUMBER = 11, c = n.START = 17, g = n.STOP = 18, f = n.TRUE1 = 33, b = n.TRUE2 = 34, y = n.TRUE3 = 35, h = n.FALSE1 = 49, v = n.FALSE2 = 50, w = n.FALSE3 = 51, k = n.FALSE4 = 52, A = n.NULL1 = 65, S = n.NULL2 = 66, E = n.NULL3 = 67, R = n.NUMBER1 = 81, C = n.NUMBER3 = 83, L = n.STRING1 = 97, N = n.STRING2 = 98, T = n.STRING3 = 99, M = n.STRING4 = 100, P = n.STRING5 = 101, B = n.STRING6 = 102, I = n.VALUE = 113, D = n.KEY = 114, G = n.OBJECT = 129, O = n.ARRAY = 130, F = "\\".charCodeAt(0), U = "/".charCodeAt(0), j = "\b".charCodeAt(0), K = "\f".charCodeAt(0), H = "\n".charCodeAt(0), Z = "\r".charCodeAt(0), Y = "\t".charCodeAt(0); function W() { this.tState = c, this.value = void 0, this.string = void 0, this.stringBuffer = a.alloc ? a.alloc(65536) : new a(65536), this.stringBufferOffset = 0, this.unicode = void 0, this.highSurrogate = void 0, this.key = void 0, this.mode = void 0, this.stack = [], this.state = I, this.bytes_remaining = 0, this.bytes_in_sequence = 0, this.temp_buffs = { 2: new a(2), 3: new a(3), 4: new a(4) }, this.offset = -1 } W.toknam = function (e) { for (var a = Object.keys(n), o = 0, r = a.length; o < r; o++) { var t = a[o]; if (n[t] === e) return t } return e && "0x" + e.toString(16) }; var x = W.prototype; x.onError = function (e) { throw e }, x.charError = function (e, a) { this.tState = g, this.onError(new Error("Unexpected " + JSON.stringify(String.fromCharCode(e[a])) + " at position " + a + " in state " + W.toknam(this.tState))) }, x.appendStringChar = function (e) { this.stringBufferOffset >= 65536 && (this.string += this.stringBuffer.toString("utf8"), this.stringBufferOffset = 0), this.stringBuffer[this.stringBufferOffset++] = e }, x.appendStringBuf = function (e, a, n) { var o = e.length; "number" == typeof a && (o = "number" == typeof n ? n < 0 ? e.length - a + n : n - a : e.length - a), o < 0 && (o = 0), this.stringBufferOffset + o > 65536 && (this.string += this.stringBuffer.toString("utf8", 0, this.stringBufferOffset), this.stringBufferOffset = 0), e.copy(this.stringBuffer, this.stringBufferOffset, a, n), this.stringBufferOffset += o }, x.write = function (e) { var n; "string" == typeof e && (e = new a(e)); for (var g = 0, I = e.length; g < I; g++)if (this.tState === c) { if (n = e[g], this.offset++, 123 === n) this.onToken(o, "{"); else if (125 === n) this.onToken(r, "}"); else if (91 === n) this.onToken(t, "["); else if (93 === n) this.onToken(i, "]"); else if (58 === n) this.onToken(l, ":"); else if (44 === n) this.onToken(_, ","); else if (116 === n) this.tState = f; else if (102 === n) this.tState = h; else if (110 === n) this.tState = A; else if (34 === n) this.string = "", this.stringBufferOffset = 0, this.tState = L; else if (45 === n) this.string = "-", this.tState = R; else if (n >= 48 && n < 64) this.string = String.fromCharCode(n), this.tState = C; else if (32 !== n && 9 !== n && 10 !== n && 13 !== n) return this.charError(e, g) } else if (this.tState === L) if (n = e[g], this.bytes_remaining > 0) { for (var D = 0; D < this.bytes_remaining; D++)this.temp_buffs[this.bytes_in_sequence][this.bytes_in_sequence - this.bytes_remaining + D] = e[D]; this.appendStringBuf(this.temp_buffs[this.bytes_in_sequence]), this.bytes_in_sequence = this.bytes_remaining = 0, g = g + D - 1 } else if (0 === this.bytes_remaining && n >= 128) { if (n <= 193 || n > 244) return this.onError(new Error("Invalid UTF-8 character at position " + g + " in state " + W.toknam(this.tState))); if (n >= 194 && n <= 223 && (this.bytes_in_sequence = 2), n >= 224 && n <= 239 && (this.bytes_in_sequence = 3), n >= 240 && n <= 244 && (this.bytes_in_sequence = 4), this.bytes_in_sequence + g > e.length) { for (var G = 0; G <= e.length - 1 - g; G++)this.temp_buffs[this.bytes_in_sequence][G] = e[g + G]; this.bytes_remaining = g + this.bytes_in_sequence - e.length, g = e.length - 1 } else this.appendStringBuf(e, g, g + this.bytes_in_sequence), g = g + this.bytes_in_sequence - 1 } else if (34 === n) this.tState = c, this.string += this.stringBuffer.toString("utf8", 0, this.stringBufferOffset), this.stringBufferOffset = 0, this.onToken(p, this.string), this.offset += a.byteLength(this.string, "utf8") + 1, this.string = void 0; else if (92 === n) this.tState = N; else { if (!(n >= 32)) return this.charError(e, g); this.appendStringChar(n) } else if (this.tState === N) if (34 === (n = e[g])) this.appendStringChar(n), this.tState = L; else if (92 === n) this.appendStringChar(F), this.tState = L; else if (47 === n) this.appendStringChar(U), this.tState = L; else if (98 === n) this.appendStringChar(j), this.tState = L; else if (102 === n) this.appendStringChar(K), this.tState = L; else if (110 === n) this.appendStringChar(H), this.tState = L; else if (114 === n) this.appendStringChar(Z), this.tState = L; else if (116 === n) this.appendStringChar(Y), this.tState = L; else { if (117 !== n) return this.charError(e, g); this.unicode = "", this.tState = T } else if (this.tState === T || this.tState === M || this.tState === P || this.tState === B) { if (!((n = e[g]) >= 48 && n < 64 || n > 64 && n <= 70 || n > 96 && n <= 102)) return this.charError(e, g); if (this.unicode += String.fromCharCode(n), this.tState++ === B) { var O = parseInt(this.unicode, 16); this.unicode = void 0, void 0 !== this.highSurrogate && O >= 56320 && O < 57344 ? (this.appendStringBuf(new a(String.fromCharCode(this.highSurrogate, O))), this.highSurrogate = void 0) : void 0 === this.highSurrogate && O >= 55296 && O < 56320 ? this.highSurrogate = O : (void 0 !== this.highSurrogate && (this.appendStringBuf(new a(String.fromCharCode(this.highSurrogate))), this.highSurrogate = void 0), this.appendStringBuf(new a(String.fromCharCode(O)))), this.tState = L } } else if (this.tState === R || this.tState === C) switch (n = e[g]) { case 48: case 49: case 50: case 51: case 52: case 53: case 54: case 55: case 56: case 57: case 46: case 101: case 69: case 43: case 45: this.string += String.fromCharCode(n), this.tState = C; break; default: this.tState = c; var x = Number(this.string); if (isNaN(x)) return this.charError(e, g); this.string.match(/[0-9]+/) == this.string && x.toString() != this.string ? this.onToken(p, this.string) : this.onToken(d, x), this.offset += this.string.length - 1, this.string = void 0, g-- } else if (this.tState === f) { if (114 !== e[g]) return this.charError(e, g); this.tState = b } else if (this.tState === b) { if (117 !== e[g]) return this.charError(e, g); this.tState = y } else if (this.tState === y) { if (101 !== e[g]) return this.charError(e, g); this.tState = c, this.onToken(s, !0), this.offset += 3 } else if (this.tState === h) { if (97 !== e[g]) return this.charError(e, g); this.tState = v } else if (this.tState === v) { if (108 !== e[g]) return this.charError(e, g); this.tState = w } else if (this.tState === w) { if (115 !== e[g]) return this.charError(e, g); this.tState = k } else if (this.tState === k) { if (101 !== e[g]) return this.charError(e, g); this.tState = c, this.onToken(u, !1), this.offset += 4 } else if (this.tState === A) { if (117 !== e[g]) return this.charError(e, g); this.tState = S } else if (this.tState === S) { if (108 !== e[g]) return this.charError(e, g); this.tState = E } else if (this.tState === E) { if (108 !== e[g]) return this.charError(e, g); this.tState = c, this.onToken(m, null), this.offset += 3 } }, x.onToken = function (e, a) { }, x.parseError = function (e, a) { this.tState = g, this.onError(new Error("Unexpected " + W.toknam(e) + (a ? "(" + JSON.stringify(a) + ")" : "") + " in state " + W.toknam(this.state))) }, x.push = function () { this.stack.push({ value: this.value, key: this.key, mode: this.mode }) }, x.pop = function () { var e = this.value, a = this.stack.pop(); this.value = a.value, this.key = a.key, this.mode = a.mode, this.emit(e), this.mode || (this.state = I) }, x.emit = function (e) { this.mode && (this.state = _), this.onValue(e) }, x.onValue = function (e) { }, x.onToken = function (e, a) { if (this.state === I) if (e === p || e === d || e === s || e === u || e === m) this.value && (this.value[this.key] = a), this.emit(a); else if (e === o) this.push(), this.value ? this.value = this.value[this.key] = {} : this.value = {}, this.key = void 0, this.state = D, this.mode = G; else if (e === t) this.push(), this.value ? this.value = this.value[this.key] = [] : this.value = [], this.key = 0, this.mode = O, this.state = I; else if (e === r) { if (this.mode !== G) return this.parseError(e, a); this.pop() } else { if (e !== i) return this.parseError(e, a); if (this.mode !== O) return this.parseError(e, a); this.pop() } else if (this.state === D) if (e === p) this.key = a, this.state = l; else { if (e !== r) return this.parseError(e, a); this.pop() } else if (this.state === l) { if (e !== l) return this.parseError(e, a); this.state = I } else { if (this.state !== _) return this.parseError(e, a); if (e === _) this.mode === O ? (this.key++, this.state = I) : this.mode === G && (this.state = D); else { if (!(e === i && this.mode === O || e === r && this.mode === G)) return this.parseError(e, a); this.pop() } } }, W.C = n, e.exports = W }).call(this, n(5).Buffer) }, function (e, a, n) { (function (a) { var o = n(27); function r(e, n, r) { e = e || function (e) { this.queue(e) }, n = n || function () { this.queue(null) }; var t = !1, i = !1, l = [], _ = !1, s = new o; function u() { for (; l.length && !s.paused;) { var e = l.shift(); if (null === e) return s.emit("end"); s.emit("data", e) } } function m() { s.writable = !1, n.call(s), !s.readable && s.autoDestroy && s.destroy() } return s.readable = s.writable = !0, s.paused = !1, s.autoDestroy = !(r && !1 === r.autoDestroy), s.write = function (a) { return e.call(this, a), !s.paused }, s.queue = s.push = function (e) { return _ || (null === e && (_ = !0), l.push(e), u()), s }, s.on("end", (function () { s.readable = !1, !s.writable && s.autoDestroy && a.nextTick((function () { s.destroy() })) })), s.end = function (e) { if (!t) return t = !0, arguments.length && s.write(e), m(), s }, s.destroy = function () { if (!i) return i = !0, t = !0, l.length = 0, s.writable = s.readable = !1, s.emit("close"), s }, s.pause = function () { if (!s.paused) return s.paused = !0, s }, s.resume = function () { return s.paused && (s.paused = !1, s.emit("resume")), u(), s.paused || s.emit("drain"), s }, s } e.exports = r, r.through = r }).call(this, n(3)) }, function (e, a, n) { e.exports = r; var o = n(8).EventEmitter; function r() { o.call(this) } n(2)(r, o), r.Readable = n(9), r.Writable = n(35), r.Duplex = n(36), r.Transform = n(37), r.PassThrough = n(38), r.Stream = r, r.prototype.pipe = function (e, a) { var n = this; function r(a) { e.writable && !1 === e.write(a) && n.pause && n.pause() } function t() { n.readable && n.resume && n.resume() } n.on("data", r), e.on("drain", t), e._isStdio || a && !1 === a.end || (n.on("end", l), n.on("close", _)); var i = !1; function l() { i || (i = !0, e.end()) } function _() { i || (i = !0, "function" == typeof e.destroy && e.destroy()) } function s(e) { if (u(), 0 === o.listenerCount(this, "error")) throw e } function u() { n.removeListener("data", r), e.removeListener("drain", t), n.removeListener("end", l), n.removeListener("close", _), n.removeListener("error", s), e.removeListener("error", s), n.removeListener("end", u), n.removeListener("close", u), e.removeListener("close", u) } return n.on("error", s), e.on("error", s), n.on("end", u), n.on("close", u), e.on("close", u), e.emit("pipe", n), e } }, function (e, a) { }, function (e, a, n) { "use strict"; var o = n(7).Buffer, r = n(30); e.exports = function () { function e() { !function (e, a) { if (!(e instanceof a)) throw new TypeError("Cannot call a class as a function") }(this, e), this.head = null, this.tail = null, this.length = 0 } return e.prototype.push = function (e) { var a = { data: e, next: null }; this.length > 0 ? this.tail.next = a : this.head = a, this.tail = a, ++this.length }, e.prototype.unshift = function (e) { var a = { data: e, next: this.head }; 0 === this.length && (this.tail = a), this.head = a, ++this.length }, e.prototype.shift = function () { if (0 !== this.length) { var e = this.head.data; return 1 === this.length ? this.head = this.tail = null : this.head = this.head.next, --this.length, e } }, e.prototype.clear = function () { this.head = this.tail = null, this.length = 0 }, e.prototype.join = function (e) { if (0 === this.length) return ""; for (var a = this.head, n = "" + a.data; a = a.next;)n += e + a.data; return n }, e.prototype.concat = function (e) { if (0 === this.length) return o.alloc(0); if (1 === this.length) return this.head.data; for (var a, n, r, t = o.allocUnsafe(e >>> 0), i = this.head, l = 0; i;)a = i.data, n = t, r = l, a.copy(n, r), l += i.data.length, i = i.next; return t }, e }(), r && r.inspect && r.inspect.custom && (e.exports.prototype[r.inspect.custom] = function () { var e = r.inspect({ length: this.length }); return this.constructor.name + " " + e }) }, function (e, a) { }, function (e, a, n) { (function (e) { var o = void 0 !== e && e || "undefined" != typeof self && self || window, r = Function.prototype.apply; function t(e, a) { this._id = e, this._clearFn = a } a.setTimeout = function () { return new t(r.call(setTimeout, o, arguments), clearTimeout) }, a.setInterval = function () { return new t(r.call(setInterval, o, arguments), clearInterval) }, a.clearTimeout = a.clearInterval = function (e) { e && e.close() }, t.prototype.unref = t.prototype.ref = function () { }, t.prototype.close = function () { this._clearFn.call(o, this._id) }, a.enroll = function (e, a) { clearTimeout(e._idleTimeoutId), e._idleTimeout = a }, a.unenroll = function (e) { clearTimeout(e._idleTimeoutId), e._idleTimeout = -1 }, a._unrefActive = a.active = function (e) { clearTimeout(e._idleTimeoutId); var a = e._idleTimeout; a >= 0 && (e._idleTimeoutId = setTimeout((function () { e._onTimeout && e._onTimeout() }), a)) }, n(32), a.setImmediate = "undefined" != typeof self && self.setImmediate || void 0 !== e && e.setImmediate || this && this.setImmediate, a.clearImmediate = "undefined" != typeof self && self.clearImmediate || void 0 !== e && e.clearImmediate || this && this.clearImmediate }).call(this, n(1)) }, function (e, a, n) { (function (e, a) { !function (e, n) { "use strict"; if (!e.setImmediate) { var o, r, t, i, l, _ = 1, s = {}, u = !1, m = e.document, p = Object.getPrototypeOf && Object.getPrototypeOf(e); p = p && p.setTimeout ? p : e, "[object process]" === {}.toString.call(e.process) ? o = function (e) { a.nextTick((function () { c(e) })) } : !function () { if (e.postMessage && !e.importScripts) { var a = !0, n = e.onmessage; return e.onmessage = function () { a = !1 }, e.postMessage("", "*"), e.onmessage = n, a } }() ? e.MessageChannel ? ((t = new MessageChannel).port1.onmessage = function (e) { c(e.data) }, o = function (e) { t.port2.postMessage(e) }) : m && "onreadystatechange" in m.createElement("script") ? (r = m.documentElement, o = function (e) { var a = m.createElement("script"); a.onreadystatechange = function () { c(e), a.onreadystatechange = null, r.removeChild(a), a = null }, r.appendChild(a) }) : o = function (e) { setTimeout(c, 0, e) } : (i = "setImmediate$" + Math.random() + "$", l = function (a) { a.source === e && "string" == typeof a.data && 0 === a.data.indexOf(i) && c(+a.data.slice(i.length)) }, e.addEventListener ? e.addEventListener("message", l, !1) : e.attachEvent("onmessage", l), o = function (a) { e.postMessage(i + a, "*") }), p.setImmediate = function (e) { "function" != typeof e && (e = new Function("" + e)); for (var a = new Array(arguments.length - 1), n = 0; n < a.length; n++)a[n] = arguments[n + 1]; var r = { callback: e, args: a }; return s[_] = r, o(_), _++ }, p.clearImmediate = d } function d(e) { delete s[e] } function c(e) { if (u) setTimeout(c, 0, e); else { var a = s[e]; if (a) { u = !0; try { !function (e) { var a = e.callback, n = e.args; switch (n.length) { case 0: a(); break; case 1: a(n[0]); break; case 2: a(n[0], n[1]); break; case 3: a(n[0], n[1], n[2]); break; default: a.apply(void 0, n) } }(a) } finally { d(e), u = !1 } } } } }("undefined" == typeof self ? void 0 === e ? this : e : self) }).call(this, n(1), n(3)) }, function (e, a, n) { (function (a) { function n(e) { try { if (!a.localStorage) return !1 } catch (e) { return !1 } var n = a.localStorage[e]; return null != n && "true" === String(n).toLowerCase() } e.exports = function (e, a) { if (n("noDeprecation")) return e; var o = !1; return function () { if (!o) { if (n("throwDeprecation")) throw new Error(a); n("traceDeprecation") ? console.trace(a) : console.warn(a), o = !0 } return e.apply(this, arguments) } } }).call(this, n(1)) }, function (e, a, n) { "use strict"; e.exports = t; var o = n(16), r = Object.create(n(4)); function t(e) { if (!(this instanceof t)) return new t(e); o.call(this, e) } r.inherits = n(2), r.inherits(t, o), t.prototype._transform = function (e, a, n) { n(null, e) } }, function (e, a, n) { e.exports = n(10) }, function (e, a, n) { e.exports = n(0) }, function (e, a, n) { e.exports = n(9).Transform }, function (e, a, n) { e.exports = n(9).PassThrough }, function (e, a) { }, function (e, a, n) { "use strict"; n.r(a); var o, r, t = function () { function e() { } return e.getInstance = function () { return null === this.instance && (this.instance = new e), this.instance }, e.prototype.init = function () { this.map = L.map("map", { zoomControl: !0, zoomDelta: .5, zoomSnap: 0, minZoom: 1.5, maxZoom: 6, worldCopyJump: !0, timeDimension: !0, timeDimensionOptions: { timeInterval: "2020-01-22/" + new Date(Date.now() - 864e5).toJSON().slice(0, 10), period: "P1D", buffer: 1 } }).setView([30, 0], 2), L.control.scale({ position: e.SCALE_CONTROL_POSITION, metric: !1 }).addTo(this.map), this.createTimeDimensionControl(); L.tileLayer("https://{s}.tile.osm.org/{z}/{x}/{y}.png", { attribution: 'Disease data &copy; <a href="https://systems.jhu.edu/">Johns Hopkins CSSE</a> Map &copy; <a href="https://osm.org/copyright">OpenStreetMap</a> contributors, <a href="https://leafletjs.com">Leaflet</a>', tileSize: 512, zoomOffset: -1 }).addTo(this.map); this.map.attributionControl.setPrefix('<a href="' + e.LINK_VIEW_SOURCE + '">View Source</a>'), this.createFullscreenControl(e.BUTTON_CONTROL_POSITION) }, e.prototype.createFullscreenControl = function (e) { this.map.zoomControl.setPosition(e), L.control.fullscreen({ position: e, forceSeparateButton: !1 }).addTo(this.map) }, e.prototype.createTimeDimensionControl = function () { L.Control.TimeDimensionCustom = L.Control.TimeDimension.extend({ _getDisplayDateFormat: function (e) { return moment(e).add(1, "days").format("dddd, LL") } }); var a = new L.Control.TimeDimensionCustom({ position: e.TIMEDIMENSION_POSITION, minSpeed: .25, maxSpeed: 2, speedStep: .25, timeSliderDragUpdate: !0, autoPlay: !1, loopButton: !0, playReverseButton: !0, timeZones: ["Local"], playerOptions: { loop: !0, startOver: !0 } }); this.map.addControl(a) }, e.prototype.getMap = function () { return this.map }, e.prototype.attachTimeDimension = function (e) { this.timeDimension = e }, e.prototype.dettachTimeDimension = function () { this.timeDimension = null }, e.prototype.getTimeDimension = function () { return this.timeDimension }, e.BUTTON_CONTROL_POSITION = "bottomright", e.TIMEDIMENSION_POSITION = "topright", e.SCALE_CONTROL_POSITION = "bottomright", e.LINK_VIEW_SOURCE = "https://github.com/7ae/coronamap", e.instance = null, e }(), i = function (e, a, n, o) { return new (n || (n = Promise))((function (r, t) { function i(e) { try { _(o.next(e)) } catch (e) { t(e) } } function l(e) { try { _(o.throw(e)) } catch (e) { t(e) } } function _(e) { var a; e.done ? r(e.value) : (a = e.value, a instanceof n ? a : new n((function (e) { e(a) }))).then(i, l) } _((o = o.apply(e, a || [])).next()) })) }, l = function (e, a) { var n, o, r, t, i = { label: 0, sent: function () { if (1 & r[0]) throw r[1]; return r[1] }, trys: [], ops: [] }; return t = { next: l(0), throw: l(1), return: l(2) }, "function" == typeof Symbol && (t[Symbol.iterator] = function () { return this }), t; function l(t) { return function (l) { return function (t) { if (n) throw new TypeError("Generator is already executing."); for (; i;)try { if (n = 1, o && (r = 2 & t[0] ? o.return : t[0] ? o.throw || ((r = o.return) && r.call(o), 0) : o.next) && !(r = r.call(o, t[1])).done) return r; switch (o = 0, r && (t = [2 & t[0], r.value]), t[0]) { case 0: case 1: r = t; break; case 4: return i.label++, { value: t[1], done: !1 }; case 5: i.label++, o = t[1], t = [0]; continue; case 7: t = i.ops.pop(), i.trys.pop(); continue; default: if (!(r = i.trys, (r = r.length > 0 && r[r.length - 1]) || 6 !== t[0] && 2 !== t[0])) { i = 0; continue } if (3 === t[0] && (!r || t[1] > r[0] && t[1] < r[3])) { i.label = t[1]; break } if (6 === t[0] && i.label < r[1]) { i.label = r[1], r = t; break } if (r && i.label < r[2]) { i.label = r[2], i.ops.push(t); break } r[2] && i.ops.pop(), i.trys.pop(); continue }t = a.call(e, i) } catch (e) { t = [6, e], o = 0 } finally { n = r = 0 } if (5 & t[0]) throw t[1]; return { value: t[0] ? t[1] : void 0, done: !0 } }([t, l]) } } }, _ = function () { function e() { localforage.config({ driver: localforage.INDEXEDDB, name: e.DB_NAME }) } return e.prototype.setItem = function (a, n) { e.hasLocalStorage ? localforage.setItem(a, n) : e.temporaryStorage[a] = n }, e.prototype.getItem = function (a) { return i(this, void 0, void 0, (function () { return l(this, (function (n) { return e.hasLocalStorage ? [2, localforage.getItem(a).then((function (e) { if (e) return e })).catch((function (a) { e.hasLocalStorage = !1 }))] : [2, e.temporaryStorage[a]] })) })) }, e.prototype.clear = function () { e.hasLocalStorage ? localforage.clear() : e.temporaryStorage = new Object }, e.prototype.supports = function () { return localforage.supports(localforage.INDEXEDDB) }, e.prototype.isExpired = function () { return i(this, void 0, void 0, (function () { var a; return l(this, (function (n) { switch (n.label) { case 0: return e.hasLocalStorage ? [4, this.getItem(e.KEY_EXPIRY_TIME)] : [3, 2]; case 1: a = n.sent(), n.label = 2; case 2: return a ? [2, (new Date).getTime() > a] : [2, !0] } })) })) }, e.prototype.setExpiryTime = function (a) { e.hasLocalStorage && this.isExpired().then((function (n) { n && localforage.setItem(e.KEY_EXPIRY_TIME, a || e.DEFAULT_EXPIRY_TIME) })) }, e.prototype.getStorage = function () { return e.hasLocalStorage ? localforage._dbInfo : e.temporaryStorage }, e.DB_NAME = "CoronamapStorage", e.KEY_EXPIRY_TIME = "Expiry Time", e.KEY_CONFIRMED_GEOJSON = "Confirmed Json", e.KEY_DEATHS_GEOJSON = "Deaths Json", e.DEFAULT_EXPIRY_TIME = (new Date).setUTCHours(27, 0, 0, 0), e.hasLocalStorage = !0, e.temporaryStorage = {}, e }(), s = function () { function e(e) { this.map = t.getInstance(), this.temporal = e, this.layerGroup = L.layerGroup().addTo(this.map.getMap()), this.layers = {}, this.hasTimeChanged = !1 } return e.prototype.update = function (e) { var a = this; void 0 === e && (e = null), setInterval((function () { if (a.hasTimeChanged = a.currentTime !== a.getCurrentTime(), a.currentTime = a.getCurrentTime(), a.hasTimeChanged) { a.clearLayerGroup(); for (var n = 0, o = a.temporal; n < o.length; n++) { var r = o[n].update(e).addTo(a.layerGroup), t = L.stamp(r) < Number.MAX_VALUE ? L.stamp(r) : 0; a.layers[t] = r } } }), 0) }, e.prototype.getLayers = function () { return this.layers }, e.prototype.clearLayerGroup = function () { if (this.layers) { for (var e in this.layerGroup._layers) this.layerGroup.hasLayer(e) && this.layerGroup.removeLayer(e); this.layers = {} } }, e.prototype.getCurrentTime = function () { var a = this.map.getMap().timeDimension.getCurrentTime(), n = this.millisecondToDate(a); return moment(n).format(e.DATE_FORMAT) }, e.prototype.millisecondToDate = function (e) { return new Date(e).toJSON().slice(0, 10) }, e.DATE_FORMAT = "M/D/YY", e.WAIT_ON_LOAD_TIMER = 2, e }(), u = n(19), m = function () { function e() { } return e.prototype.readCsv = function (e) { var a; return $.ajax({ url: e, async: !1, success: function (e) { a = e }, dataType: "text" }), a }, e.prototype.csvToObject = function (e) { return $.csv.toObjects(e) }, e.prototype.replaceColumnKeys = function (e, a) { for (var n = e.split("\n")[0], o = 0, r = Object.keys(a); o < r.length; o++) { var t = r[o]; n = n.replace(t, a[t]) } return n + "\r\n" + e.split("\n").slice(1).join("\n") }, e.prototype.replaceColumnValues = function (e, a, n) { var o = new RegExp("^" + Object.keys(a).map((function (e) { return e.replace(/[+?^*${}()|[\]\\]/gi, "\\$&") })).join("$|^") + "$", "gi"); return $(e).each((function (e, r) { r[n] = r[n].replace(o, (function (e) { return a[e] })) })), e }, e.prototype.comparePropertyValues = function (e, a, n, o) { return $(e.map((function (e) { return e[n] }))).not(a).get().filter((function (e, a, n) { return n.indexOf(e) >= a })) }, e.prototype.setPropertyValues = function (e, a, n, o) { for (var r = 0, t = a.features; r < t.length; r++) { var i = t[r], l = 0; for (var _ in e) i.properties[o] == e[_][n] && (i.properties[l] = e[_], l++) } return this.pushTotalNumberOfCaseToProperties(a), a }, e.getProperty = function (e, a) { var n = []; for (var o in Object.values(e)) if (e[o].properties["Country/Region"]) for (var r = 0, t = a; r < t.length; r++) { var i = t[r]; n[i] || (n[i] = []), n[i].push(e[o].properties[i]) } return n }, e.mergeGeoJsons = function (e, a) { return u.merge([e, a]) }, e.prototype.setConfirmedGeoJson = function (e) { this.confirmedGeoJson = e }, e.prototype.getConfirmedGeoJson = function () { return this.confirmedGeoJson }, e.prototype.setDeathsGeoJson = function (e) { this.deathsGeoJson = e }, e.prototype.getDeathsGeoJson = function () { return this.deathsGeoJson }, e.prototype.setRecoveredGeoJson = function (e) { this.recoveredGeoJson = e }, e.prototype.getRecoveredGeoJson = function () { return this.recoveredGeoJson }, e.prototype.replaceText = function (e, a, n, o) { return void 0 === o && (o = !1), e.replace(o ? "/" + a + "/g" : a, n) }, e.prototype.getNumberOfCase = function (e, a, n) { for (var o = 0, r = Object.keys(e).length; o < r; o++) { var t = e[o].properties; if (t.Lat == n[0] && t.Long == n[1]) return t[a]; for (var i = 0, l = Object.keys(t).length; i < l; i++)if (t[i] && t[i].Lat == n[0] && t[i].Long == n[1]) return t[i][a] } }, e.prototype.subtractRecoveredFromConfirmed = function (e, a) { for (var n = e, o = 0, r = Object.values(n); o < r.length; o++)for (var t = r[o], i = 0, l = Object.values(a); i < l.length; i++)for (var _ = l[i], s = 0, u = Object.keys(t); s < u.length; s++) { var m = u[s]; t["Province/State"] === _["Province/State"] && t["Country/Region"] === _["Country/Region"] && moment(m).isValid() && (t[m] -= _[m]) } return n }, e.prototype.pushTotalNumberOfCaseToProperties = function (e) { for (var a = 0, n = Object.keys(e.features).length; a < n; a++) { for (var o = {}, r = 0, t = Object.keys(e.features[a].properties).length; r < t; r++) { var i = Object.keys(e.features[a].properties)[r]; if (e.features[a].properties[i] && "object" == typeof e.features[a].properties[i]) for (var l = 0, _ = Object.keys(e.features[a].properties[i]); l < _.length; l++) { var u = _[l]; if (moment(u).isValid()) { var m = moment(u).format(s.DATE_FORMAT); o[m] ? o[m] > 0 && (o[m] += parseInt(e.features[a].properties[i][u])) : o[m] = parseInt(e.features[a].properties[i][u]) } else "Country/Region" === u && (o[u] = e.features[a].properties[i][u]) } } for (var p in o) e.features[a].properties[p] = o[p] } }, e.BASE_URL = "https://raw.githubusercontent.com/CSSEGISandData/COVID-19/master/csse_covid_19_data/csse_covid_19_time_series/", e }(), p = n(17), d = (o = function (e, a) { return (o = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, a) { e.__proto__ = a } || function (e, a) { for (var n in a) a.hasOwnProperty(n) && (e[n] = a[n]) })(e, a) }, function (e, a) { function n() { this.constructor = e } o(e, a), e.prototype = null === a ? Object.create(a) : (n.prototype = a.prototype, new n) }), c = function (e) { function a() { return e.call(this) || this } return d(a, e), a.prototype.init = function () { var n = this.readCsv(m.BASE_URL + a.CONFIRMED_FILE_SCOPE), o = this.readCsv(m.BASE_URL + a.DEATHS_FILE_SCOPE), r = this.readCsv(m.BASE_URL + a.RECOVERED_FILE_SCOPE); n = this.replaceText(n, "Greenland,Denmark", "Greenland,Greenland"), o = this.replaceText(o, "Greenland,Denmark", "Greenland,Greenland"), r = this.replaceText(r, "Greenland,Denmark", "Greenland,Greenland"), n = this.csvToObject(n), o = this.csvToObject(o), r = this.csvToObject(r), n = this.replaceColumnValues(n), o = this.replaceColumnValues(o), r = this.replaceColumnValues(r), n = this.subtractRecoveredFromConfirmed(n, r), e.prototype.setConfirmedGeoJson.call(this, this.setPropertyValues(n, this.loadGeoJsonFile())), e.prototype.setDeathsGeoJson.call(this, this.setPropertyValues(o, this.loadGeoJsonFile())), e.prototype.setRecoveredGeoJson.call(this, this.setPropertyValues(r, this.loadGeoJsonFile())) }, a.prototype.loadGeoJsonFile = function () { return JSON.parse(JSON.stringify(p)) }, a.prototype.replaceColumnValues = function (a) { return e.prototype.replaceColumnValues.call(this, a, { Burma: "Myanmar", Czechia: "Czech Republic", "Korea, South": "South Korea", "Congo (Kinshasa)": "Democratic Republic of the Congo", "Congo (Brazzaville)": "Republic of the Congo", "Taiwan*": "Taiwan", "occupied Palestinian territory": "Palestine", "Bahamas, The": "Bahamas", "Gambia, The": "Gambia" }, "Country/Region") }, a.prototype.setPropertyValues = function (a, n) { return e.prototype.setPropertyValues.call(this, a, n, "Country/Region", "name") }, a.CONFIRMED_FILE_SCOPE = "time_series_covid19_confirmed_global.csv", a.DEATHS_FILE_SCOPE = "time_series_covid19_deaths_global.csv", a.RECOVERED_FILE_SCOPE = "time_series_covid19_recovered_global.csv", a }(m), g = n(18), f = function () { var e = function (a, n) { return (e = Object.setPrototypeOf || { __proto__: [] } instanceof Array && function (e, a) { e.__proto__ = a } || function (e, a) { for (var n in a) a.hasOwnProperty(n) && (e[n] = a[n]) })(a, n) }; return function (a, n) { function o() { this.constructor = a } e(a, n), a.prototype = null === n ? Object.create(n) : (o.prototype = n.prototype, new o) } }(), b = function (e) { function a() { return e.call(this) || this } return f(a, e), a.prototype.init = function () { var n = this.readCsv("https://raw.githubusercontent.com/7ae/coronamap/master/dist/src/states.csv"), o = this.readCsv(m.BASE_URL + a.CONFIRMED_FILE_SCOPE), r = this.readCsv(m.BASE_URL + a.DEATHS_FILE_SCOPE); o = this.replaceColumnKeys(o), r = this.replaceColumnKeys(r), o = this.csvToObject(o), r = this.csvToObject(r), o = this.replaceColumnValues(o), r = this.replaceColumnValues(r), e.prototype.setConfirmedGeoJson.call(this, this.setPropertyValues(o, this.loadGeoJsonFile())), e.prototype.setDeathsGeoJson.call(this, this.setPropertyValues(r, this.loadGeoJsonFile())), this.setConfirmedGeoJson(this.addCenterOfCordinates(this.csvToObject(n), this.getConfirmedGeoJson())), this.setDeathsGeoJson(this.addCenterOfCordinates(this.csvToObject(n), this.getDeathsGeoJson())) }, a.prototype.loadGeoJsonFile = function () { return JSON.parse(JSON.stringify(g)) }, a.prototype.replaceColumnKeys = function (a) { return e.prototype.replaceColumnKeys.call(this, a, { Province_State: "Province/State", Country_Region: "Country/Region", Long_: "Long" }) }, a.prototype.replaceColumnValues = function (a) { return e.prototype.replaceColumnValues.call(this, a, {}, "Province/State") }, a.prototype.setPropertyValues = function (a, n) { return e.prototype.setPropertyValues.call(this, a, n, "Province/State", "name") }, a.prototype.addCenterOfCordinates = function (e, n) { for (var o = 0, r = n.features; o < r.length; o++)for (var t = r[o], i = 0, l = e; i < l.length; i++) { var _ = l[i]; t.id == _.state && (t.properties[a.CENTER_OF_LAT_KEY] = _.latitude, t.properties[a.CENTER_OF_LONG_KEY] = _.longitude) } return n }, a.CONFIRMED_FILE_SCOPE = "time_series_covid19_confirmed_US.csv", a.DEATHS_FILE_SCOPE = "time_series_covid19_deaths_US.csv", a.CENTER_OF_LAT_KEY = "Lat", a.CENTER_OF_LONG_KEY = "Long", a }(m); !function (e) { e.Quantile = "q", e.Equidistant = "e", e.Kmeans = "k" }(r || (r = {})); var y = function () { function e(a, n, o, r) { this.scale = !a || a.length < 1 ? e.DEFAULT_SCALE : a, this.borderColor = n || e.DEFAULT_BORDER_COLOR, this.fillOpacity = o || e.DEFAULT_FILL_OPACITY, this.mode = r || e.DEFAULT_MODE } return e.prototype.update = function (e) { var a = L.choropleth(e, { valueProperty: t.getInstance().getTimeDimension().getCurrentTime(), scale: this.scale, mode: this.mode, step: this.scale.length, style: { color: this.borderColor, weight: 1, fillOpacity: this.fillOpacity }, onEachFeature: h }); return this.createLegend(a), a }, e.prototype.createLegend = function (a) { var n = L.control({ position: e.LEGEND_CONTROL_POSITION }); n.onAdd = function () { var n; n = $("div." + e.LEGEND_ELEMENT_CLASS).length > 0 ? document.querySelectorAll("div." + e.LEGEND_ELEMENT_CLASS)[0] : L.DomUtil.create("div", e.LEGEND_ELEMENT_CLASS); var o = e.pushAverageOfEveryElement(a.options.limits); o[0] = 0, a.options.limits = o; var r = e.DEFAULT_SCALE; r = r.slice(1, r.length), a.options.colors = r; var t = []; return n.innerHTML = '<div class="min"><span>Cases:</span> ' + o[0] + '</div><div class="max">' + o[o.length - 1] + "</div></div>", o.forEach((function (a, n) { t.push('<li style="background-color:' + r[n] + ";width:" + e.LEGEND_COLOR_WIDTHS[n] + 'vw;"></li>') })), n.innerHTML += "<ul>" + t.join("") + "</ul>", n }, n.addTo(t.getInstance().getMap()) }, e.prototype.setScale = function (e) { this.scale = e }, e.prototype.getScale = function () { return this.scale }, e.prototype.setBorderColor = function (e) { this.borderColor = e }, e.prototype.getBorderColor = function () { return this.borderColor }, e.prototype.setFillOpacity = function (e) { this.fillOpacity = e }, e.prototype.getFillOpacity = function () { return this.fillOpacity }, e.prototype.setMode = function (e) { this.mode = e }, e.prototype.getMode = function () { return this.mode }, e.pushAverageOfEveryElement = function (e) { var a = []; for (var n in e) { var o = parseInt(n); a.push(e[o]), a.push((e[o] + e[o + 1]) / 2) } return a.pop(), a }, e.DEFAULT_SCALE = ["#fff", "#ffefac", "#fbc750", "#f6b340", "#f09e33", "#e98828", "#e1731e", "#d95b17", "#d14211", "#c81e0d"], e.DEFAULT_BORDER_COLOR = "#666", e.DEFAULT_FILL_OPACITY = .6, e.HIGHLIGHT_FILL_OPACITY = .65, e.DEFAULT_MODE = r.Quantile, e.DEFAULT_WEIGHT = 1, e.HIGHLIGHT_WEIGHT = 1.75, e.LEGEND_CONTROL_POSITION = "bottomleft", e.LEGEND_ELEMENT_CLASS = "choropleth-legend", e.LEGEND_COLOR_WIDTHS = [1, 1, 1.5, 1.5, 1.5, 2, 2.5, 3, 5], e }(); function h(e, a) { a.on({ mouseover: k, mouseout: v, click: w }) } function v(e) { $.each(t.getInstance().getTimeDimension().getLayers(), (function (a, n) { try { var o = e.target; o.setStyle({ weight: y.DEFAULT_WEIGHT, color: y.DEFAULT_BORDER_COLOR, fillOpacity: y.DEFAULT_FILL_OPACITY }), L.Browser.ie || L.Browser.opera || L.Browser.edge || o.bringToFront() } catch (e) { } })) } function w(e) { t.getInstance().getMap().fitBounds(e.target.getBounds()) } function k(e) { var a = e.target; a.setStyle({ weight: y.HIGHLIGHT_WEIGHT, fillOpacity: y.HIGHLIGHT_FILL_OPACITY }), L.Browser.ie || L.Browser.opera || L.Browser.edge || a.bringToFront() } var A = function () { function e(e, a) { this.fileReader = e, this.confirmedFeatures = a } return e.prototype.update = function (a) { var n; return t.getInstance().getMap().createPane(e.PANE_NAME), this.circles = [], n = a.features.slice(1).slice(-50), this.createCircleMarkers(n, !1), n = a.features.slice(0, -50), this.createCircleMarkers(n, !0), L.layerGroup(this.circles).addTo(t.getInstance().getMap()) }, e.prototype.getCircles = function () { return this.circles }, e.prototype.createTooltip = function (e, a, n) { var o = L.tooltip(n).setContent(a); return e.bindTooltip(o).openPopup(), o }, e.prototype.createCircleMarkers = function (a, n) { if (void 0 === n && (n = !1), a && 0 !== a.length) if (n) { var o = [], r = 0; for (s = Object.keys(a).length; r < s; r++) { _ = 0; for (var i = Object.keys(a[r].properties).length; _ < i; _++) { if ((u = a[r].properties[_]) && "object" == typeof u) { var l = {}; l.properties = u, o.push(l) } } } this.createCircleMarkers(o, !1) } else for (var _ = 0, s = Object.keys(a).length; _ < s; _++) { var u = a[_].properties, m = t.getInstance().getTimeDimension().getCurrentTime(), p = u[m]; if (p && p > 0) try { var d = L.circleMarker([u.Lat, u.Long], { radius: this.setRadius(p * e.RADIUS_NOISE), color: e.COLOR, fillOpacity: e.OPACITY, weight: e.BORDER_WEIGHT, pane: e.PANE_NAME }), c = u["Country/Region"] ? u["Country/Region"] : "", g = u["Province/State"] ? u["Province/State"] : u.name; g ? c && (g += ", ") : g = ""; var f = this.fileReader.getNumberOfCase(this.confirmedFeatures, m, [u.Lat, u.Long]); this.createTooltip(d, "<b>" + g + c + "</b><br/>Confirmed: " + f + "<br/>Deaths: " + p, { opacity: 1 }), this.circles.push(d) } catch (e) { } } }, e.prototype.setRadius = function (a) { return a > e.RADIUS_MAX ? e.RADIUS_MAX : a < e.RADIUS_MIN ? e.RADIUS_MIN : a }, e.PANE_NAME = "circle-marker-pane", e.COLOR = "#a80808", e.OPACITY = .27, e.BORDER_WEIGHT = .4, e.RADIUS_NOISE = .0015, e.RADIUS_MAX = 20, e.RADIUS_MIN = 2.5, e }(), S = function () { function e(e, a) { document.getElementById("table").style.visibility = "visible", this.confirmedWorldFeatures = e.features.slice(0, -50), this.deathsWorldFeatures = a.features.slice(0, -50), this.confirmedUSFeatures = e.features.slice(1).slice(-50), this.deathsUSFeatures = a.features.slice(1).slice(-50) } return e.prototype.init = function () { this.table = $("#datatables").DataTable({ autoWidth: !1, columnDefs: [{ targets: -1, className: "all" }], paging: !1, columns: [{ data: "country" }, { data: "confirmed" }, { data: "death" }], dom: "Bfrtip", buttons: [{ extend: "csvHtml5", text: '<i class="far fa-file-alt"></i>', titleAttr: "CSV" }, { extend: "excelHtml5", text: '<i class="far fa-file-excel"></i>', titleAttr: "Excel" }, { extend: "pdfHtml5", text: '<i class="far fa-file-pdf"></i>', titleAttr: "PDF" }] }) }, e.prototype.update = function () { return this.table.clear().draw(), this.createRows(this.confirmedWorldFeatures, this.deathsWorldFeatures), this.createRows(this.confirmedUSFeatures, this.deathsUSFeatures, !0), L.layerGroup().addTo(t.getInstance().getMap()) }, e.prototype.createRows = function (e, a, n) { void 0 === n && (n = !1); var o = t.getInstance().getTimeDimension().getCurrentTime(), r = m.getProperty(e, ["Country/Region", o]), i = m.getProperty(a, [o]); if (n) this.createOneRow([{ country: r["Country/Region"][0], confirmed: this.sumArrayItems(r[o]).toLocaleString(), death: this.sumArrayItems(i[o]).toLocaleString() }]); else { var l = []; for (var _ in r["Country/Region"]) try { l.push({ country: r["Country/Region"][_], confirmed: r[o][_].toLocaleString(), death: i[o][_].toLocaleString() }) } catch (e) { console.log(e) } this.createOneRow(l) } }, e.prototype.createOneRow = function (e) { this.table.rows.add(e).draw() }, e.prototype.sumArrayItems = function (e) { var a = 0; for (var n in e) a += e[n]; return a }, e }(); moment.suppressDeprecationWarnings = !0; var E = performance.now(), R = t.getInstance(); R.init(); var C = new c, N = new b, T = new _; T.isExpired().then((function (e) { e && (C.init(), N.init(), T.clear(), T.setExpiryTime(), T.setItem(_.KEY_CONFIRMED_GEOJSON, m.mergeGeoJsons(C.getConfirmedGeoJson(), N.getConfirmedGeoJson())), T.setItem(_.KEY_DEATHS_GEOJSON, m.mergeGeoJsons(C.getDeathsGeoJson(), N.getDeathsGeoJson()))) })).then((function () { T.getItem(_.KEY_CONFIRMED_GEOJSON).then((function (e) { var a = new y, n = new s(Array(a)); R.attachTimeDimension(n), n.update(e), T.getItem(_.KEY_DEATHS_GEOJSON).then((function (a) { var o = new A(C, e.features); n = new s(Array(o)), R.attachTimeDimension(n), n.update(a); var r = new S(e, a); r.init(), n = new s(Array(r)), R.attachTimeDimension(n), n.update(), document.getElementById("spinner").outerHTML = "", console.log("Performance: " + (performance.now() - E) + " milliseconds.") })) })) })) }]);
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly8vd2VicGFjay9ib290c3RyYXAiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9kdXBsZXguanMiLCJ3ZWJwYWNrOi8vLyh3ZWJwYWNrKS9idWlsZGluL2dsb2JhbC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvaW5oZXJpdHMvaW5oZXJpdHNfYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy9icm93c2VyLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9jb3JlLXV0aWwtaXMvbGliL3V0aWwuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL2J1ZmZlci9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcHJvY2Vzcy1uZXh0aWNrLWFyZ3MvaW5kZXguanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NhZmUtYnVmZmVyL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9ldmVudHMvZXZlbnRzLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vcmVhZGFibGUtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3dyaXRhYmxlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9pc2FycmF5L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9yZWFkYWJsZS1zdHJlYW0vbGliL19zdHJlYW1fcmVhZGFibGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0tYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3kuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3N0cmluZ19kZWNvZGVyL2xpYi9zdHJpbmdfZGVjb2Rlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvQG1hcGJveC9nZW9qc29uLW1lcmdlL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9AbWFwYm94L2dlb2pzb24tbm9ybWFsaXplL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9nZW9qc29uLXN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvSlNPTlN0cmVhbS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvYmFzZTY0LWpzL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9pZWVlNzU0L2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9qc29ucGFyc2UvanNvbnBhcnNlLmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy90aHJvdWdoL2luZGV4LmpzIiwid2VicGFjazovLy8uL25vZGVfbW9kdWxlcy9zdHJlYW0tYnJvd3NlcmlmeS9pbmRleC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL2xpYi9pbnRlcm5hbC9zdHJlYW1zL0J1ZmZlckxpc3QuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3RpbWVycy1icm93c2VyaWZ5L21haW4uanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3NldGltbWVkaWF0ZS9zZXRJbW1lZGlhdGUuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3V0aWwtZGVwcmVjYXRlL2Jyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9saWIvX3N0cmVhbV9wYXNzdGhyb3VnaC5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLWJyb3dzZXIuanMiLCJ3ZWJwYWNrOi8vLy4vbm9kZV9tb2R1bGVzL3JlYWRhYmxlLXN0cmVhbS9kdXBsZXgtYnJvd3Nlci5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3RyYW5zZm9ybS5qcyIsIndlYnBhY2s6Ly8vLi9ub2RlX21vZHVsZXMvcmVhZGFibGUtc3RyZWFtL3Bhc3N0aHJvdWdoLmpzIiwid2VicGFjazovLy8uL3NyYy9NYXAudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0Nob3JvcGxldGgudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL0RhdGFiYXNlLnRzIiwid2VicGFjazovLy8uL3NyYy9UaW1lRGltZW5zaW9uLnRzIiwid2VicGFjazovLy8uL3NyYy9BYnN0cmFjdFJlYWRlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvV29ybGRSZWFkZXIudHMiLCJ3ZWJwYWNrOi8vLy4vc3JjL1N0YXRlc1JlYWRlci50cyIsIndlYnBhY2s6Ly8vLi9zcmMvQ2lyY2xlTWFya2VyLnRzIiwid2VicGFjazovLy8uL3NyYy9WaWV3LnRzIiwid2VicGFjazovLy8uL3NyYy9Db3JvbmFtYXAudHMiXSwibmFtZXMiOlsiaW5zdGFsbGVkTW9kdWxlcyIsIl9fd2VicGFja19yZXF1aXJlX18iLCJtb2R1bGVJZCIsImV4cG9ydHMiLCJtb2R1bGUiLCJpIiwibCIsIm1vZHVsZXMiLCJjYWxsIiwibSIsImMiLCJkIiwibmFtZSIsImdldHRlciIsIm8iLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImVudW1lcmFibGUiLCJnZXQiLCJyIiwiU3ltYm9sIiwidG9TdHJpbmdUYWciLCJ2YWx1ZSIsInQiLCJtb2RlIiwiX19lc01vZHVsZSIsIm5zIiwiY3JlYXRlIiwia2V5IiwiYmluZCIsIm4iLCJvYmplY3QiLCJwcm9wZXJ0eSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwicCIsInMiLCJwbmEiLCJvYmplY3RLZXlzIiwia2V5cyIsIm9iaiIsInB1c2giLCJEdXBsZXgiLCJ1dGlsIiwiaW5oZXJpdHMiLCJSZWFkYWJsZSIsIldyaXRhYmxlIiwidiIsImxlbmd0aCIsIm1ldGhvZCIsIm9wdGlvbnMiLCJ0aGlzIiwicmVhZGFibGUiLCJ3cml0YWJsZSIsImFsbG93SGFsZk9wZW4iLCJvbmNlIiwib25lbmQiLCJfd3JpdGFibGVTdGF0ZSIsImVuZGVkIiwibmV4dFRpY2siLCJvbkVuZE5UIiwic2VsZiIsImVuZCIsImhpZ2hXYXRlck1hcmsiLCJ1bmRlZmluZWQiLCJfcmVhZGFibGVTdGF0ZSIsImRlc3Ryb3llZCIsInNldCIsIl9kZXN0cm95IiwiZXJyIiwiY2IiLCJnIiwiRnVuY3Rpb24iLCJlIiwid2luZG93IiwiY3RvciIsInN1cGVyQ3RvciIsInN1cGVyXyIsImNvbnN0cnVjdG9yIiwiY29uZmlndXJhYmxlIiwiVGVtcEN0b3IiLCJjYWNoZWRTZXRUaW1lb3V0IiwiY2FjaGVkQ2xlYXJUaW1lb3V0IiwicHJvY2VzcyIsImRlZmF1bHRTZXRUaW1vdXQiLCJFcnJvciIsImRlZmF1bHRDbGVhclRpbWVvdXQiLCJydW5UaW1lb3V0IiwiZnVuIiwic2V0VGltZW91dCIsImNsZWFyVGltZW91dCIsImN1cnJlbnRRdWV1ZSIsInF1ZXVlIiwiZHJhaW5pbmciLCJxdWV1ZUluZGV4IiwiY2xlYW5VcE5leHRUaWNrIiwiY29uY2F0IiwiZHJhaW5RdWV1ZSIsInRpbWVvdXQiLCJsZW4iLCJydW4iLCJtYXJrZXIiLCJydW5DbGVhclRpbWVvdXQiLCJJdGVtIiwiYXJyYXkiLCJub29wIiwiYXJncyIsIkFycmF5IiwiYXJndW1lbnRzIiwiYXBwbHkiLCJ0aXRsZSIsImJyb3dzZXIiLCJlbnYiLCJhcmd2IiwidmVyc2lvbiIsInZlcnNpb25zIiwib24iLCJhZGRMaXN0ZW5lciIsIm9mZiIsInJlbW92ZUxpc3RlbmVyIiwicmVtb3ZlQWxsTGlzdGVuZXJzIiwiZW1pdCIsInByZXBlbmRMaXN0ZW5lciIsInByZXBlbmRPbmNlTGlzdGVuZXIiLCJsaXN0ZW5lcnMiLCJiaW5kaW5nIiwiY3dkIiwiY2hkaXIiLCJkaXIiLCJ1bWFzayIsIm9iamVjdFRvU3RyaW5nIiwidG9TdHJpbmciLCJpc0FycmF5IiwiYXJnIiwiaXNCb29sZWFuIiwiaXNOdWxsIiwiaXNOdWxsT3JVbmRlZmluZWQiLCJpc051bWJlciIsImlzU3RyaW5nIiwiaXNTeW1ib2wiLCJpc1VuZGVmaW5lZCIsImlzUmVnRXhwIiwicmUiLCJpc09iamVjdCIsImlzRGF0ZSIsImlzRXJyb3IiLCJpc0Z1bmN0aW9uIiwiaXNQcmltaXRpdmUiLCJpc0J1ZmZlciIsIkJ1ZmZlciIsImJhc2U2NCIsImllZWU3NTQiLCJrTWF4TGVuZ3RoIiwiVFlQRURfQVJSQVlfU1VQUE9SVCIsImNyZWF0ZUJ1ZmZlciIsInRoYXQiLCJSYW5nZUVycm9yIiwiVWludDhBcnJheSIsIl9fcHJvdG9fXyIsImVuY29kaW5nT3JPZmZzZXQiLCJhbGxvY1Vuc2FmZSIsImZyb20iLCJUeXBlRXJyb3IiLCJBcnJheUJ1ZmZlciIsImJ5dGVPZmZzZXQiLCJieXRlTGVuZ3RoIiwiZnJvbUFycmF5TGlrZSIsImZyb21BcnJheUJ1ZmZlciIsInN0cmluZyIsImVuY29kaW5nIiwiaXNFbmNvZGluZyIsImFjdHVhbCIsIndyaXRlIiwic2xpY2UiLCJmcm9tU3RyaW5nIiwiY2hlY2tlZCIsImNvcHkiLCJidWZmZXIiLCJ2YWwiLCJ0eXBlIiwiZGF0YSIsImZyb21PYmplY3QiLCJhc3NlcnRTaXplIiwic2l6ZSIsImlzVmlldyIsImxvd2VyZWRDYXNlIiwidXRmOFRvQnl0ZXMiLCJiYXNlNjRUb0J5dGVzIiwidG9Mb3dlckNhc2UiLCJzbG93VG9TdHJpbmciLCJzdGFydCIsImhleFNsaWNlIiwidXRmOFNsaWNlIiwiYXNjaWlTbGljZSIsImxhdGluMVNsaWNlIiwiYmFzZTY0U2xpY2UiLCJ1dGYxNmxlU2xpY2UiLCJzd2FwIiwiYiIsImJpZGlyZWN0aW9uYWxJbmRleE9mIiwiaXNOYU4iLCJhcnJheUluZGV4T2YiLCJpbmRleE9mIiwibGFzdEluZGV4T2YiLCJhcnIiLCJpbmRleFNpemUiLCJhcnJMZW5ndGgiLCJ2YWxMZW5ndGgiLCJTdHJpbmciLCJyZWFkIiwiYnVmIiwicmVhZFVJbnQxNkJFIiwiZm91bmRJbmRleCIsImZvdW5kIiwiaiIsImhleFdyaXRlIiwib2Zmc2V0IiwiTnVtYmVyIiwicmVtYWluaW5nIiwic3RyTGVuIiwicGFyc2VkIiwicGFyc2VJbnQiLCJzdWJzdHIiLCJ1dGY4V3JpdGUiLCJibGl0QnVmZmVyIiwiYXNjaWlXcml0ZSIsInN0ciIsImJ5dGVBcnJheSIsImNoYXJDb2RlQXQiLCJhc2NpaVRvQnl0ZXMiLCJsYXRpbjFXcml0ZSIsImJhc2U2NFdyaXRlIiwidWNzMldyaXRlIiwidW5pdHMiLCJoaSIsImxvIiwidXRmMTZsZVRvQnl0ZXMiLCJmcm9tQnl0ZUFycmF5IiwiTWF0aCIsIm1pbiIsInJlcyIsInNlY29uZEJ5dGUiLCJ0aGlyZEJ5dGUiLCJmb3VydGhCeXRlIiwidGVtcENvZGVQb2ludCIsImZpcnN0Qnl0ZSIsImNvZGVQb2ludCIsImJ5dGVzUGVyU2VxdWVuY2UiLCJjb2RlUG9pbnRzIiwiZnJvbUNoYXJDb2RlIiwiZGVjb2RlQ29kZVBvaW50c0FycmF5IiwiU2xvd0J1ZmZlciIsImFsbG9jIiwiSU5TUEVDVF9NQVhfQllURVMiLCJnbG9iYWwiLCJmb28iLCJzdWJhcnJheSIsInR5cGVkQXJyYXlTdXBwb3J0IiwicG9vbFNpemUiLCJfYXVnbWVudCIsInNwZWNpZXMiLCJmaWxsIiwiYWxsb2NVbnNhZmVTbG93IiwiX2lzQnVmZmVyIiwiY29tcGFyZSIsImEiLCJ4IiwieSIsImxpc3QiLCJwb3MiLCJzd2FwMTYiLCJzd2FwMzIiLCJzd2FwNjQiLCJlcXVhbHMiLCJpbnNwZWN0IiwibWF4IiwibWF0Y2giLCJqb2luIiwidGFyZ2V0IiwidGhpc1N0YXJ0IiwidGhpc0VuZCIsInRoaXNDb3B5IiwidGFyZ2V0Q29weSIsImluY2x1ZGVzIiwiaXNGaW5pdGUiLCJ0b0pTT04iLCJfYXJyIiwicmV0Iiwib3V0IiwidG9IZXgiLCJieXRlcyIsImNoZWNrT2Zmc2V0IiwiZXh0IiwiY2hlY2tJbnQiLCJvYmplY3RXcml0ZVVJbnQxNiIsImxpdHRsZUVuZGlhbiIsIm9iamVjdFdyaXRlVUludDMyIiwiY2hlY2tJRUVFNzU0Iiwid3JpdGVGbG9hdCIsIm5vQXNzZXJ0Iiwid3JpdGVEb3VibGUiLCJuZXdCdWYiLCJzbGljZUxlbiIsInJlYWRVSW50TEUiLCJtdWwiLCJyZWFkVUludEJFIiwicmVhZFVJbnQ4IiwicmVhZFVJbnQxNkxFIiwicmVhZFVJbnQzMkxFIiwicmVhZFVJbnQzMkJFIiwicmVhZEludExFIiwicG93IiwicmVhZEludEJFIiwicmVhZEludDgiLCJyZWFkSW50MTZMRSIsInJlYWRJbnQxNkJFIiwicmVhZEludDMyTEUiLCJyZWFkSW50MzJCRSIsInJlYWRGbG9hdExFIiwicmVhZEZsb2F0QkUiLCJyZWFkRG91YmxlTEUiLCJyZWFkRG91YmxlQkUiLCJ3cml0ZVVJbnRMRSIsIndyaXRlVUludEJFIiwid3JpdGVVSW50OCIsImZsb29yIiwid3JpdGVVSW50MTZMRSIsIndyaXRlVUludDE2QkUiLCJ3cml0ZVVJbnQzMkxFIiwid3JpdGVVSW50MzJCRSIsIndyaXRlSW50TEUiLCJsaW1pdCIsInN1YiIsIndyaXRlSW50QkUiLCJ3cml0ZUludDgiLCJ3cml0ZUludDE2TEUiLCJ3cml0ZUludDE2QkUiLCJ3cml0ZUludDMyTEUiLCJ3cml0ZUludDMyQkUiLCJ3cml0ZUZsb2F0TEUiLCJ3cml0ZUZsb2F0QkUiLCJ3cml0ZURvdWJsZUxFIiwid3JpdGVEb3VibGVCRSIsInRhcmdldFN0YXJ0IiwiY29kZSIsIklOVkFMSURfQkFTRTY0X1JFIiwiSW5maW5pdHkiLCJsZWFkU3Vycm9nYXRlIiwidG9CeXRlQXJyYXkiLCJ0cmltIiwicmVwbGFjZSIsInN0cmluZ3RyaW0iLCJiYXNlNjRjbGVhbiIsInNyYyIsImRzdCIsImZuIiwiYXJnMSIsImFyZzIiLCJhcmczIiwiY29weVByb3BzIiwiU2FmZUJ1ZmZlciIsIlJlZmxlY3RPd25LZXlzIiwiUiIsIlJlZmxlY3QiLCJSZWZsZWN0QXBwbHkiLCJyZWNlaXZlciIsIm93bktleXMiLCJnZXRPd25Qcm9wZXJ0eVN5bWJvbHMiLCJnZXRPd25Qcm9wZXJ0eU5hbWVzIiwiTnVtYmVySXNOYU4iLCJFdmVudEVtaXR0ZXIiLCJpbml0IiwiX2V2ZW50cyIsIl9ldmVudHNDb3VudCIsIl9tYXhMaXN0ZW5lcnMiLCJkZWZhdWx0TWF4TGlzdGVuZXJzIiwiY2hlY2tMaXN0ZW5lciIsImxpc3RlbmVyIiwiX2dldE1heExpc3RlbmVycyIsIl9hZGRMaXN0ZW5lciIsInByZXBlbmQiLCJldmVudHMiLCJleGlzdGluZyIsIndhcm5pbmciLCJuZXdMaXN0ZW5lciIsInVuc2hpZnQiLCJ3YXJuZWQiLCJ3IiwiZW1pdHRlciIsImNvdW50IiwiY29uc29sZSIsIndhcm4iLCJvbmNlV3JhcHBlciIsImZpcmVkIiwid3JhcEZuIiwiX29uY2VXcmFwIiwic3RhdGUiLCJ3cmFwcGVkIiwiX2xpc3RlbmVycyIsInVud3JhcCIsImV2bGlzdGVuZXIiLCJ1bndyYXBMaXN0ZW5lcnMiLCJhcnJheUNsb25lIiwibGlzdGVuZXJDb3VudCIsImdldFByb3RvdHlwZU9mIiwic2V0TWF4TGlzdGVuZXJzIiwiZ2V0TWF4TGlzdGVuZXJzIiwiZG9FcnJvciIsImVycm9yIiwiZXIiLCJtZXNzYWdlIiwiY29udGV4dCIsImhhbmRsZXIiLCJwb3NpdGlvbiIsIm9yaWdpbmFsTGlzdGVuZXIiLCJzaGlmdCIsImluZGV4IiwicG9wIiwic3BsaWNlT25lIiwicmF3TGlzdGVuZXJzIiwiZXZlbnROYW1lcyIsIlN0cmVhbSIsIlRyYW5zZm9ybSIsIlBhc3NUaHJvdWdoIiwiQ29ya2VkUmVxdWVzdCIsIl90aGlzIiwibmV4dCIsImVudHJ5IiwiZmluaXNoIiwiY29ya1JlcSIsImNhbGxiYWNrIiwicGVuZGluZ2NiIiwiY29ya2VkUmVxdWVzdHNGcmVlIiwib25Db3JrZWRGaW5pc2giLCJhc3luY1dyaXRlIiwic2V0SW1tZWRpYXRlIiwiV3JpdGFibGVTdGF0ZSIsImludGVybmFsVXRpbCIsImRlcHJlY2F0ZSIsIk91clVpbnQ4QXJyYXkiLCJyZWFsSGFzSW5zdGFuY2UiLCJkZXN0cm95SW1wbCIsIm5vcCIsInN0cmVhbSIsImlzRHVwbGV4Iiwib2JqZWN0TW9kZSIsIndyaXRhYmxlT2JqZWN0TW9kZSIsImh3bSIsIndyaXRhYmxlSHdtIiwid3JpdGFibGVIaWdoV2F0ZXJNYXJrIiwiZGVmYXVsdEh3bSIsImZpbmFsQ2FsbGVkIiwibmVlZERyYWluIiwiZW5kaW5nIiwiZmluaXNoZWQiLCJub0RlY29kZSIsImRlY29kZVN0cmluZ3MiLCJkZWZhdWx0RW5jb2RpbmciLCJ3cml0aW5nIiwiY29ya2VkIiwic3luYyIsImJ1ZmZlclByb2Nlc3NpbmciLCJvbndyaXRlIiwid3JpdGVjYiIsIndyaXRlbGVuIiwib253cml0ZVN0YXRlVXBkYXRlIiwiZmluaXNoTWF5YmUiLCJlcnJvckVtaXR0ZWQiLCJvbndyaXRlRXJyb3IiLCJuZWVkRmluaXNoIiwiYnVmZmVyZWRSZXF1ZXN0IiwiY2xlYXJCdWZmZXIiLCJhZnRlcldyaXRlIiwibGFzdEJ1ZmZlcmVkUmVxdWVzdCIsInByZWZpbmlzaGVkIiwiYnVmZmVyZWRSZXF1ZXN0Q291bnQiLCJfd3JpdGUiLCJ3cml0ZXYiLCJfd3JpdGV2IiwiZGVzdHJveSIsImZpbmFsIiwiX2ZpbmFsIiwiZG9Xcml0ZSIsImNodW5rIiwib253cml0ZURyYWluIiwiaG9sZGVyIiwiYWxsQnVmZmVycyIsImlzQnVmIiwiY2FsbEZpbmFsIiwibmVlZCIsInByZWZpbmlzaCIsImdldEJ1ZmZlciIsImN1cnJlbnQiLCJfIiwiaGFzSW5zdGFuY2UiLCJwaXBlIiwiX3VpbnQ4QXJyYXlUb0J1ZmZlciIsIndyaXRlQWZ0ZXJFbmQiLCJ2YWxpZCIsInZhbGlkQ2h1bmsiLCJuZXdDaHVuayIsImRlY29kZUNodW5rIiwibGFzdCIsIndyaXRlT3JCdWZmZXIiLCJjb3JrIiwidW5jb3JrIiwic2V0RGVmYXVsdEVuY29kaW5nIiwiZW5kV3JpdGFibGUiLCJfdW5kZXN0cm95IiwidW5kZXN0cm95IiwiUmVhZGFibGVTdGF0ZSIsIkVFbGlzdGVuZXJDb3VudCIsImRlYnVnVXRpbCIsImRlYnVnIiwiZGVidWdsb2ciLCJTdHJpbmdEZWNvZGVyIiwiQnVmZmVyTGlzdCIsImtQcm94eUV2ZW50cyIsInJlYWRhYmxlT2JqZWN0TW9kZSIsInJlYWRhYmxlSHdtIiwicmVhZGFibGVIaWdoV2F0ZXJNYXJrIiwicGlwZXMiLCJwaXBlc0NvdW50IiwiZmxvd2luZyIsImVuZEVtaXR0ZWQiLCJyZWFkaW5nIiwibmVlZFJlYWRhYmxlIiwiZW1pdHRlZFJlYWRhYmxlIiwicmVhZGFibGVMaXN0ZW5pbmciLCJyZXN1bWVTY2hlZHVsZWQiLCJhd2FpdERyYWluIiwicmVhZGluZ01vcmUiLCJkZWNvZGVyIiwiX3JlYWQiLCJyZWFkYWJsZUFkZENodW5rIiwiYWRkVG9Gcm9udCIsInNraXBDaHVua0NoZWNrIiwiZW1pdFJlYWRhYmxlIiwib25Fb2ZDaHVuayIsImNodW5rSW52YWxpZCIsImFkZENodW5rIiwibWF5YmVSZWFkTW9yZSIsIm5lZWRNb3JlRGF0YSIsImlzUGF1c2VkIiwic2V0RW5jb2RpbmciLCJlbmMiLCJob3dNdWNoVG9SZWFkIiwiaGVhZCIsImNvbXB1dGVOZXdIaWdoV2F0ZXJNYXJrIiwiZW1pdFJlYWRhYmxlXyIsImZsb3ciLCJtYXliZVJlYWRNb3JlXyIsIm5SZWFkaW5nTmV4dFRpY2siLCJyZXN1bWVfIiwiZnJvbUxpc3QiLCJjbGVhciIsImhhc1N0cmluZ3MiLCJuYiIsInRhaWwiLCJjb3B5RnJvbUJ1ZmZlclN0cmluZyIsImNvcHlGcm9tQnVmZmVyIiwiZnJvbUxpc3RQYXJ0aWFsIiwiZW5kUmVhZGFibGUiLCJlbmRSZWFkYWJsZU5UIiwieHMiLCJuT3JpZyIsImRvUmVhZCIsImRlc3QiLCJwaXBlT3B0cyIsImVuZEZuIiwic3Rkb3V0Iiwic3RkZXJyIiwidW5waXBlIiwib251bnBpcGUiLCJ1bnBpcGVJbmZvIiwiaGFzVW5waXBlZCIsIm9uY2xvc2UiLCJvbmZpbmlzaCIsIm9uZHJhaW4iLCJvbmVycm9yIiwib25kYXRhIiwiY2xlYW5lZFVwIiwicGlwZU9uRHJhaW4iLCJpbmNyZWFzZWRBd2FpdERyYWluIiwicGF1c2UiLCJldmVudCIsInJlc3VtZSIsImRlc3RzIiwic3BsaWNlIiwiZXYiLCJ3cmFwIiwicGF1c2VkIiwiX2Zyb21MaXN0IiwiZW1pdEVycm9yTlQiLCJyZWFkYWJsZURlc3Ryb3llZCIsIndyaXRhYmxlRGVzdHJveWVkIiwibmVuYyIsInJldHJpZWQiLCJfbm9ybWFsaXplRW5jb2RpbmciLCJub3JtYWxpemVFbmNvZGluZyIsInRleHQiLCJ1dGYxNlRleHQiLCJ1dGYxNkVuZCIsImZpbGxMYXN0IiwidXRmOEZpbGxMYXN0IiwiYmFzZTY0VGV4dCIsImJhc2U2NEVuZCIsInNpbXBsZVdyaXRlIiwic2ltcGxlRW5kIiwibGFzdE5lZWQiLCJsYXN0VG90YWwiLCJsYXN0Q2hhciIsInV0ZjhDaGVja0J5dGUiLCJieXRlIiwidXRmOENoZWNrRXh0cmFCeXRlcyIsInRvdGFsIiwidXRmOENoZWNrSW5jb21wbGV0ZSIsImFmdGVyVHJhbnNmb3JtIiwidHMiLCJfdHJhbnNmb3JtU3RhdGUiLCJ0cmFuc2Zvcm1pbmciLCJ3cml0ZWNodW5rIiwicnMiLCJuZWVkVHJhbnNmb3JtIiwid3JpdGVlbmNvZGluZyIsInRyYW5zZm9ybSIsIl90cmFuc2Zvcm0iLCJmbHVzaCIsIl9mbHVzaCIsImRvbmUiLCJfdGhpczIiLCJlcnIyIiwibm9ybWFsaXplIiwiZ2VvanNvblN0cmVhbSIsImZzIiwibWVyZ2UiLCJpbnB1dHMiLCJvdXRwdXQiLCJmZWF0dXJlcyIsIm5vcm1hbGl6ZWQiLCJtZXJnZUZlYXR1cmVDb2xsZWN0aW9uU3RyZWFtIiwic3RyaW5naWZ5IiwiZm9yRWFjaCIsImZpbGUiLCJjcmVhdGVSZWFkU3RyZWFtIiwicGFyc2UiLCJnaiIsInR5cGVzIiwicHJvcGVydGllcyIsImdlb21ldHJ5IiwiUG9pbnQiLCJNdWx0aVBvaW50IiwiTGluZVN0cmluZyIsIk11bHRpTGluZVN0cmluZyIsIlBvbHlnb24iLCJNdWx0aVBvbHlnb24iLCJHZW9tZXRyeUNvbGxlY3Rpb24iLCJGZWF0dXJlIiwiRmVhdHVyZUNvbGxlY3Rpb24iLCJKU09OU3RyZWFtIiwiUGFyc2VyIiwidGhyb3VnaCIsImJ1ZmZlckZyb20iLCJjaGVjayIsImV4ZWMiLCJwYXRoIiwibWFwIiwiaGVhZGVyIiwiZm9vdGVyIiwicGFyc2VyIiwic3BsaXQiLCJlbWl0S2V5IiwicmVjdXJzZSIsIm9uVmFsdWUiLCJyb290IiwiZW1pdFBhdGgiLCJzdGFjayIsInNldEhlYWRlckZvb3RlciIsIm5leHRLZXkiLCJpc0Zyb3plbiIsImFjdHVhbFBhdGgiLCJlbGVtZW50IiwiayIsIl9vblRva2VuIiwib25Ub2tlbiIsInRva2VuIiwib25FcnJvciIsIm9wIiwic2VwIiwiY2wiLCJpbmRlbnQiLCJmaXJzdCIsImFueURhdGEiLCJqc29uIiwiSlNPTiIsInN0cmluZ2lmeU9iamVjdCIsImI2NCIsImxlbnMiLCJnZXRMZW5zIiwidmFsaWRMZW4iLCJwbGFjZUhvbGRlcnNMZW4iLCJ0bXAiLCJBcnIiLCJfYnl0ZUxlbmd0aCIsImN1ckJ5dGUiLCJyZXZMb29rdXAiLCJ1aW50OCIsImV4dHJhQnl0ZXMiLCJwYXJ0cyIsImxlbjIiLCJlbmNvZGVDaHVuayIsImxvb2t1cCIsIm51bSIsImlzTEUiLCJtTGVuIiwibkJ5dGVzIiwiZUxlbiIsImVNYXgiLCJlQmlhcyIsIm5CaXRzIiwiTmFOIiwicnQiLCJhYnMiLCJsb2ciLCJMTjIiLCJDIiwiTEVGVF9CUkFDRSIsIlJJR0hUX0JSQUNFIiwiTEVGVF9CUkFDS0VUIiwiUklHSFRfQlJBQ0tFVCIsIkNPTE9OIiwiQ09NTUEiLCJUUlVFIiwiRkFMU0UiLCJOVUxMIiwiU1RSSU5HIiwiTlVNQkVSIiwiU1RBUlQiLCJTVE9QIiwiVFJVRTEiLCJUUlVFMiIsIlRSVUUzIiwiRkFMU0UxIiwiRkFMU0UyIiwiRkFMU0UzIiwiRkFMU0U0IiwiTlVMTDEiLCJOVUxMMiIsIk5VTEwzIiwiTlVNQkVSMSIsIk5VTUJFUjMiLCJTVFJJTkcxIiwiU1RSSU5HMiIsIlNUUklORzMiLCJTVFJJTkc0IiwiU1RSSU5HNSIsIlNUUklORzYiLCJWQUxVRSIsIktFWSIsIk9CSkVDVCIsIkFSUkFZIiwiQkFDS19TTEFTSCIsIkZPUldBUkRfU0xBU0giLCJCQUNLU1BBQ0UiLCJGT1JNX0ZFRUQiLCJORVdMSU5FIiwiQ0FSUklBR0VfUkVUVVJOIiwiVEFCIiwidFN0YXRlIiwic3RyaW5nQnVmZmVyIiwic3RyaW5nQnVmZmVyT2Zmc2V0IiwidW5pY29kZSIsImhpZ2hTdXJyb2dhdGUiLCJieXRlc19yZW1haW5pbmciLCJieXRlc19pbl9zZXF1ZW5jZSIsInRlbXBfYnVmZnMiLCJ0b2tuYW0iLCJwcm90byIsImNoYXJFcnJvciIsImFwcGVuZFN0cmluZ0NoYXIiLCJjaGFyIiwiYXBwZW5kU3RyaW5nQnVmIiwiaW50VmFsIiwicmVzdWx0IiwicGFyc2VFcnJvciIsInBhcmVudCIsIm9wdHMiLCJfZW5kZWQiLCJkcmFpbiIsIl9lbmQiLCJhdXRvRGVzdHJveSIsIkVFIiwic291cmNlIiwiX2lzU3RkaW8iLCJkaWRPbkVuZCIsImNsZWFudXAiLCJpbnN0YW5jZSIsIkNvbnN0cnVjdG9yIiwiX2NsYXNzQ2FsbENoZWNrIiwiY3VzdG9tIiwiVGltZW91dCIsImlkIiwiY2xlYXJGbiIsIl9pZCIsIl9jbGVhckZuIiwic2NvcGUiLCJzZXRJbnRlcnZhbCIsImNsZWFySW50ZXJ2YWwiLCJjbG9zZSIsInVucmVmIiwicmVmIiwiZW5yb2xsIiwiaXRlbSIsIm1zZWNzIiwiX2lkbGVUaW1lb3V0SWQiLCJfaWRsZVRpbWVvdXQiLCJ1bmVucm9sbCIsIl91bnJlZkFjdGl2ZSIsImFjdGl2ZSIsIl9vblRpbWVvdXQiLCJjbGVhckltbWVkaWF0ZSIsInJlZ2lzdGVySW1tZWRpYXRlIiwiaHRtbCIsImNoYW5uZWwiLCJtZXNzYWdlUHJlZml4Iiwib25HbG9iYWxNZXNzYWdlIiwibmV4dEhhbmRsZSIsInRhc2tzQnlIYW5kbGUiLCJjdXJyZW50bHlSdW5uaW5nQVRhc2siLCJkb2MiLCJkb2N1bWVudCIsImF0dGFjaFRvIiwiaGFuZGxlIiwicnVuSWZQcmVzZW50IiwicG9zdE1lc3NhZ2UiLCJpbXBvcnRTY3JpcHRzIiwicG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyIsIm9sZE9uTWVzc2FnZSIsIm9ubWVzc2FnZSIsImNhblVzZVBvc3RNZXNzYWdlIiwiTWVzc2FnZUNoYW5uZWwiLCJwb3J0MSIsInBvcnQyIiwiY3JlYXRlRWxlbWVudCIsImRvY3VtZW50RWxlbWVudCIsInNjcmlwdCIsIm9ucmVhZHlzdGF0ZWNoYW5nZSIsInJlbW92ZUNoaWxkIiwiYXBwZW5kQ2hpbGQiLCJyYW5kb20iLCJhZGRFdmVudExpc3RlbmVyIiwiYXR0YWNoRXZlbnQiLCJ0YXNrIiwiY29uZmlnIiwibG9jYWxTdG9yYWdlIiwibXNnIiwidHJhY2UiLCJDaG9yb3BsZXRoTW9kZSIsImdldEluc3RhbmNlIiwiTWFwIiwiTCIsInpvb21Db250cm9sIiwiem9vbURlbHRhIiwiem9vbVNuYXAiLCJtaW5ab29tIiwibWF4Wm9vbSIsIndvcmxkQ29weUp1bXAiLCJ0aW1lRGltZW5zaW9uIiwidGltZURpbWVuc2lvbk9wdGlvbnMiLCJ0aW1lSW50ZXJ2YWwiLCJEYXRlIiwibm93IiwicGVyaW9kIiwic2V0VmlldyIsImNvbnRyb2wiLCJzY2FsZSIsIlNDQUxFX0NPTlRST0xfUE9TSVRJT04iLCJtZXRyaWMiLCJhZGRUbyIsImNyZWF0ZVRpbWVEaW1lbnNpb25Db250cm9sIiwidGlsZUxheWVyIiwiYXR0cmlidXRpb24iLCJ0aWxlU2l6ZSIsInpvb21PZmZzZXQiLCJhdHRyaWJ1dGlvbkNvbnRyb2wiLCJzZXRQcmVmaXgiLCJMSU5LX1ZJRVdfU09VUkNFIiwiY3JlYXRlRnVsbHNjcmVlbkNvbnRyb2wiLCJCVVRUT05fQ09OVFJPTF9QT1NJVElPTiIsImNvbnRyb2xQb3NpdGlvbiIsInNldFBvc2l0aW9uIiwiZnVsbHNjcmVlbiIsImZvcmNlU2VwYXJhdGVCdXR0b24iLCJDb250cm9sIiwiVGltZURpbWVuc2lvbkN1c3RvbSIsIlRpbWVEaW1lbnNpb24iLCJleHRlbmQiLCJfZ2V0RGlzcGxheURhdGVGb3JtYXQiLCJkYXRlIiwibW9tZW50IiwiYWRkIiwiZm9ybWF0IiwidGltZURpbWVuc2lvbkNvbnRyb2wiLCJUSU1FRElNRU5TSU9OX1BPU0lUSU9OIiwibWluU3BlZWQiLCJtYXhTcGVlZCIsInNwZWVkU3RlcCIsInRpbWVTbGlkZXJEcmFnVXBkYXRlIiwiYXV0b1BsYXkiLCJsb29wQnV0dG9uIiwicGxheVJldmVyc2VCdXR0b24iLCJ0aW1lWm9uZXMiLCJwbGF5ZXJPcHRpb25zIiwibG9vcCIsInN0YXJ0T3ZlciIsImFkZENvbnRyb2wiLCJnZXRNYXAiLCJhdHRhY2hUaW1lRGltZW5zaW9uIiwidGQiLCJkZXR0YWNoVGltZURpbWVuc2lvbiIsImdldFRpbWVEaW1lbnNpb24iLCJsb2NhbGZvcmFnZSIsImRyaXZlciIsIklOREVYRUREQiIsIkRhdGFiYXNlIiwiREJfTkFNRSIsInNldEl0ZW0iLCJoYXNMb2NhbFN0b3JhZ2UiLCJ0ZW1wb3JhcnlTdG9yYWdlIiwiZ2V0SXRlbSIsInRoZW4iLCJjYXRjaCIsInN1cHBvcnRzIiwiaXNFeHBpcmVkIiwiS0VZX0VYUElSWV9USU1FIiwiZXh0aW1lIiwiZ2V0VGltZSIsInNldEV4cGlyeVRpbWUiLCJERUZBVUxUX0VYUElSWV9USU1FIiwiZ2V0U3RvcmFnZSIsIl9kYkluZm8iLCJLRVlfQ09ORklSTUVEX0dFT0pTT04iLCJLRVlfREVBVEhTX0dFT0pTT04iLCJzZXRVVENIb3VycyIsInRlbXBvcmFsIiwibGF5ZXJHcm91cCIsImxheWVycyIsImhhc1RpbWVDaGFuZ2VkIiwidXBkYXRlIiwiZ2VvSnNvbiIsImN1cnJlbnRUaW1lIiwiZ2V0Q3VycmVudFRpbWUiLCJjbGVhckxheWVyR3JvdXAiLCJsYXllciIsImxheWVySWQiLCJzdGFtcCIsIk1BWF9WQUxVRSIsImdldExheWVycyIsIl9sYXllcnMiLCJoYXNMYXllciIsInJlbW92ZUxheWVyIiwiY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kIiwibWlsbGlzZWNvbmRUb0RhdGUiLCJEQVRFX0ZPUk1BVCIsIm1pbGxpc2Vjb25kIiwiV0FJVF9PTl9MT0FEX1RJTUVSIiwiZ2VvanNvbk1lcmdlIiwicmVhZENzdiIsInJlc3BvbnNlIiwiJCIsImFqYXgiLCJ1cmwiLCJhc3luYyIsInN1Y2Nlc3MiLCJkYXRhVHlwZSIsImNzdlRvT2JqZWN0IiwiY3N2IiwidG9PYmplY3RzIiwicmVwbGFjZUNvbHVtbktleXMiLCJkaWN0IiwicmVwbGFjZUNvbHVtblZhbHVlcyIsImNvbE5hbWUiLCJyZWdleCIsIlJlZ0V4cCIsImVhY2giLCJjb21wYXJlUHJvcGVydHlWYWx1ZXMiLCJwcm9wZXJ0eUtleSIsIm5vdCIsImZpbHRlciIsInNldFByb3BlcnR5VmFsdWVzIiwiZ2VvSnNvbktleSIsImNzdklkeCIsInB1c2hUb3RhbE51bWJlck9mQ2FzZVRvUHJvcGVydGllcyIsImdldFByb3BlcnR5IiwicHJvcGVydHlOYW1lcyIsInZhbHVlcyIsInBuYW1lIiwibWVyZ2VHZW9Kc29ucyIsIm90aGVyR2VvSnNvbiIsInNldENvbmZpcm1lZEdlb0pzb24iLCJjb25maXJtZWRHZW9Kc29uIiwiZ2V0Q29uZmlybWVkR2VvSnNvbiIsInNldERlYXRoc0dlb0pzb24iLCJkZWF0aHNHZW9Kc29uIiwiZ2V0RGVhdGhzR2VvSnNvbiIsInNldFJlY292ZXJlZEdlb0pzb24iLCJyZWNvdmVyZWRHZW9Kc29uIiwiZ2V0UmVjb3ZlcmVkR2VvSnNvbiIsInJlcGxhY2VUZXh0IiwidG8iLCJyZXBlYXQiLCJnZXROdW1iZXJPZkNhc2UiLCJ0aW1lIiwibGF0bG9uZyIsImZlYXRJZHgiLCJwcm9wIiwiTGF0IiwiTG9uZyIsInByb3BJZHgiLCJzdWJ0cmFjdFJlY292ZXJlZEZyb21Db25maXJtZWQiLCJjbG9uZWRDb25maXJtZWRHZW9Kc29uIiwiY29uZmlybWVkQ291bnRyeSIsInJlY292ZXJlZENvdW50cnkiLCJpc1ZhbGlkIiwidG90YWxDYXNlQnlEYXRlIiwia2V5SWR4Iiwib2JqZWN0S2V5IiwiY291bnRyeSIsIkJBU0VfVVJMIiwiY29uZmlybWVkIiwiV29ybGRGaWxlUmVhZGVyIiwiQ09ORklSTUVEX0ZJTEVfU0NPUEUiLCJkZWF0aHMiLCJERUFUSFNfRklMRV9TQ09QRSIsInJlY292ZXJlZCIsIlJFQ09WRVJFRF9GSUxFX1NDT1BFIiwibG9hZEdlb0pzb25GaWxlIiwiY2VudGVyT2ZMYXRMb25nIiwiU3RhdGVzRmlsZVJlYWRlciIsImFkZENlbnRlck9mQ29yZGluYXRlcyIsImZlYXR1cmUiLCJjc3ZSb3ciLCJDRU5URVJfT0ZfTEFUX0tFWSIsImxhdGl0dWRlIiwiQ0VOVEVSX09GX0xPTkdfS0VZIiwibG9uZ2l0dWRlIiwiYm9yZGVyQ29sb3IiLCJmaWxsT3BhY2l0eSIsIkNob3JvcGxldGgiLCJERUZBVUxUX1NDQUxFIiwiREVGQVVMVF9CT1JERVJfQ09MT1IiLCJERUZBVUxUX0ZJTExfT1BBQ0lUWSIsIkRFRkFVTFRfTU9ERSIsImNob3JvcGxldGhMYXllciIsImNob3JvcGxldGgiLCJ2YWx1ZVByb3BlcnR5Iiwic3RlcCIsInN0eWxlIiwiY29sb3IiLCJ3ZWlnaHQiLCJvbkVhY2hGZWF0dXJlIiwiY3JlYXRlTGVnZW5kIiwibGVnZW5kIiwiTEVHRU5EX0NPTlRST0xfUE9TSVRJT04iLCJvbkFkZCIsImRpdiIsIkxFR0VORF9FTEVNRU5UX0NMQVNTIiwicXVlcnlTZWxlY3RvckFsbCIsIkRvbVV0aWwiLCJsaW1pdHMiLCJwdXNoQXZlcmFnZU9mRXZlcnlFbGVtZW50IiwiY29sb3JzIiwibGFiZWxzIiwiaW5uZXJIVE1MIiwiTEVHRU5EX0NPTE9SX1dJRFRIUyIsInNldFNjYWxlIiwiZ2V0U2NhbGUiLCJzZXRCb3JkZXJDb2xvciIsImdldEJvcmRlckNvbG9yIiwic2V0RmlsbE9wYWNpdHkiLCJnZXRGaWxsT3BhY2l0eSIsInNldE1vZGUiLCJnZXRNb2RlIiwibmV3QXJyYXkiLCJISUdITElHSFRfRklMTF9PUEFDSVRZIiwiUXVhbnRpbGUiLCJERUZBVUxUX1dFSUdIVCIsIkhJR0hMSUdIVF9XRUlHSFQiLCJtb3VzZW92ZXIiLCJoaWdobGlnaHRGZWF0dXJlIiwibW91c2VvdXQiLCJyZXNldEhpZ2hsaWdodCIsImNsaWNrIiwiem9vbVRvRmVhdHVyZSIsInNldFN0eWxlIiwiQnJvd3NlciIsImllIiwib3BlcmEiLCJlZGdlIiwiYnJpbmdUb0Zyb250IiwiZml0Qm91bmRzIiwiZ2V0Qm91bmRzIiwiZmlsZVJlYWRlciIsImNvbmZpcm1lZEZlYXR1cmVzIiwiY3JlYXRlUGFuZSIsIkNpcmNsZU1hcmtlciIsIlBBTkVfTkFNRSIsImNpcmNsZXMiLCJjcmVhdGVDaXJjbGVNYXJrZXJzIiwiZ2V0Q2lyY2xlcyIsImNyZWF0ZVRvb2x0aXAiLCJjb250ZW50VGV4dCIsInRvb2x0aXAiLCJzZXRDb250ZW50IiwiYmluZFRvb2x0aXAiLCJvcGVuUG9wdXAiLCJyZWN1cnNpdmUiLCJjb3VudHJ5RmVhdHVyZXMiLCJjb3VudHJ5SWR4Iiwic3RhdGVJZHgiLCJudW1PZkRlYXRoc0F0Q3VycmVudFRpbWUiLCJjaXJjbGVNYXJrZXIiLCJyYWRpdXMiLCJzZXRSYWRpdXMiLCJSQURJVVNfTk9JU0UiLCJDT0xPUiIsIk9QQUNJVFkiLCJCT1JERVJfV0VJR0hUIiwicGFuZSIsImNvdW50cnlOYW1lIiwic3RhdGVOYW1lIiwibnVtT2ZDb25maXJtZWRDYXNlcyIsIm9wYWNpdHkiLCJSQURJVVNfTUFYIiwiUkFESVVTX01JTiIsImdldEVsZW1lbnRCeUlkIiwidmlzaWJpbGl0eSIsImNvbmZpcm1lZFdvcmxkRmVhdHVyZXMiLCJkZWF0aHNXb3JsZEZlYXR1cmVzIiwiY29uZmlybWVkVVNGZWF0dXJlcyIsImRlYXRoc1VTRmVhdHVyZXMiLCJ0YWJsZSIsIkRhdGFUYWJsZSIsImF1dG9XaWR0aCIsImNvbHVtbkRlZnMiLCJ0YXJnZXRzIiwiY2xhc3NOYW1lIiwicGFnaW5nIiwiZG9tIiwiYnV0dG9ucyIsInRpdGxlQXR0ciIsImRyYXciLCJjcmVhdGVSb3dzIiwiZGVhdGhzRmVhdHVyZXMiLCJpc1N0YXRlcyIsImNyZWF0ZU9uZVJvdyIsInN1bUFycmF5SXRlbXMiLCJ0b0xvY2FsZVN0cmluZyIsImRhdGFzZXQiLCJyb3dzIiwic3VtIiwic3VwcHJlc3NEZXByZWNhdGlvbldhcm5pbmdzIiwidDAiLCJwZXJmb3JtYW5jZSIsIndvcmxkRnIiLCJ1c0ZyIiwiZGIiLCJtZXJnZWRDb25maXJtZWRHZW9Kc29uIiwidGltZWRpbWVuc2lvbiIsIm1lcmdlZERlYXRoc0dlb0pzb24iLCJ2aWV3Iiwib3V0ZXJIVE1MIl0sIm1hcHBpbmdzIjoiYUFDRSxJQUFJQSxFQUFtQixHQUd2QixTQUFTQyxFQUFvQkMsR0FHNUIsR0FBR0YsRUFBaUJFLEdBQ25CLE9BQU9GLEVBQWlCRSxHQUFVQyxRQUduQyxJQUFJQyxFQUFTSixFQUFpQkUsR0FBWSxDQUN6Q0csRUFBR0gsRUFDSEksR0FBRyxFQUNISCxRQUFTLElBVVYsT0FOQUksRUFBUUwsR0FBVU0sS0FBS0osRUFBT0QsUUFBU0MsRUFBUUEsRUFBT0QsUUFBU0YsR0FHL0RHLEVBQU9FLEdBQUksRUFHSkYsRUFBT0QsUUFLZkYsRUFBb0JRLEVBQUlGLEVBR3hCTixFQUFvQlMsRUFBSVYsRUFHeEJDLEVBQW9CVSxFQUFJLFNBQVNSLEVBQVNTLEVBQU1DLEdBQzNDWixFQUFvQmEsRUFBRVgsRUFBU1MsSUFDbENHLE9BQU9DLGVBQWViLEVBQVNTLEVBQU0sQ0FBRUssWUFBWSxFQUFNQyxJQUFLTCxLQUtoRVosRUFBb0JrQixFQUFJLFNBQVNoQixHQUNYLG9CQUFYaUIsUUFBMEJBLE9BQU9DLGFBQzFDTixPQUFPQyxlQUFlYixFQUFTaUIsT0FBT0MsWUFBYSxDQUFFQyxNQUFPLFdBRTdEUCxPQUFPQyxlQUFlYixFQUFTLGFBQWMsQ0FBRW1CLE9BQU8sS0FRdkRyQixFQUFvQnNCLEVB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QW9CMlAsR0FDeEJBLEVBQWM1TixTQUdkdEgsU0FBU2lULGVBQWUsV0FBV29DLFVBQVksR0FFL0M3d0IsUUFBUTZVLElBQUksaUJBQWdCd2IsWUFBWXBTLE1BQVFtUyxHQUFFIiwiZmlsZSI6ImJ1bmRsZS5qcyIsInNvdXJjZXNDb250ZW50IjpbIiBcdC8vIFRoZSBtb2R1bGUgY2FjaGVcbiBcdHZhciBpbnN0YWxsZWRNb2R1bGVzID0ge307XG5cbiBcdC8vIFRoZSByZXF1aXJlIGZ1bmN0aW9uXG4gXHRmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7XG5cbiBcdFx0Ly8gQ2hlY2sgaWYgbW9kdWxlIGlzIGluIGNhY2hlXG4gXHRcdGlmKGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdKSB7XG4gXHRcdFx0cmV0dXJuIGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdLmV4cG9ydHM7XG4gXHRcdH1cbiBcdFx0Ly8gQ3JlYXRlIGEgbmV3IG1vZHVsZSAoYW5kIHB1dCBpdCBpbnRvIHRoZSBjYWNoZSlcbiBcdFx0dmFyIG1vZHVsZSA9IGluc3RhbGxlZE1vZHVsZXNbbW9kdWxlSWRdID0ge1xuIFx0XHRcdGk6IG1vZHVsZUlkLFxuIFx0XHRcdGw6IGZhbHNlLFxuIFx0XHRcdGV4cG9ydHM6IHt9XG4gXHRcdH07XG5cbiBcdFx0Ly8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uXG4gXHRcdG1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pO1xuXG4gXHRcdC8vIEZsYWcgdGhlIG1vZHVsZSBhcyBsb2FkZWRcbiBcdFx0bW9kdWxlLmwgPSB0cnVlO1xuXG4gXHRcdC8vIFJldHVybiB0aGUgZXhwb3J0cyBvZiB0aGUgbW9kdWxlXG4gXHRcdHJldHVybiBtb2R1bGUuZXhwb3J0cztcbiBcdH1cblxuXG4gXHQvLyBleHBvc2UgdGhlIG1vZHVsZXMgb2JqZWN0IChfX3dlYnBhY2tfbW9kdWxlc19fKVxuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5tID0gbW9kdWxlcztcblxuIFx0Ly8gZXhwb3NlIHRoZSBtb2R1bGUgY2FjaGVcbiBcdF9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7XG5cbiBcdC8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5kID0gZnVuY3Rpb24oZXhwb3J0cywgbmFtZSwgZ2V0dGVyKSB7XG4gXHRcdGlmKCFfX3dlYnBhY2tfcmVxdWlyZV9fLm8oZXhwb3J0cywgbmFtZSkpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgeyBlbnVtZXJhYmxlOiB0cnVlLCBnZXQ6IGdldHRlciB9KTtcbiBcdFx0fVxuIFx0fTtcblxuIFx0Ly8gZGVmaW5lIF9fZXNNb2R1bGUgb24gZXhwb3J0c1xuIFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yID0gZnVuY3Rpb24oZXhwb3J0cykge1xuIFx0XHRpZih0eXBlb2YgU3ltYm9sICE9PSAndW5kZWZpbmVkJyAmJiBTeW1ib2wudG9TdHJpbmdUYWcpIHtcbiBcdFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgU3ltYm9sLnRvU3RyaW5nVGFnLCB7IHZhbHVlOiAnTW9kdWxlJyB9KTtcbiBcdFx0fVxuIFx0XHRPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgJ19fZXNNb2R1bGUnLCB7IHZhbHVlOiB0cnVlIH0pO1xuIFx0fTtcblxuIFx0Ly8gY3JlYXRlIGEgZmFrZSBuYW1lc3BhY2Ugb2JqZWN0XG4gXHQvLyBtb2RlICYgMTogdmFsdWUgaXMgYSBtb2R1bGUgaWQsIHJlcXVpcmUgaXRcbiBcdC8vIG1vZGUgJiAyOiBtZXJnZSBhbGwgcHJvcGVydGllcyBvZiB2YWx1ZSBpbnRvIHRoZSBuc1xuIFx0Ly8gbW9kZSAmIDQ6IHJldHVybiB2YWx1ZSB3aGVuIGFscmVhZHkgbnMgb2JqZWN0XG4gXHQvLyBtb2RlICYgOHwxOiBiZWhhdmUgbGlrZSByZXF1aXJlXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLnQgPSBmdW5jdGlvbih2YWx1ZSwgbW9kZSkge1xuIFx0XHRpZihtb2RlICYgMSkgdmFsdWUgPSBfX3dlYnBhY2tfcmVxdWlyZV9fKHZhbHVlKTtcbiBcdFx0aWYobW9kZSAmIDgpIHJldHVybiB2YWx1ZTtcbiBcdFx0aWYoKG1vZGUgJiA0KSAmJiB0eXBlb2YgdmFsdWUgPT09ICdvYmplY3QnICYmIHZhbHVlICYmIHZhbHVlLl9fZXNNb2R1bGUpIHJldHVybiB2YWx1ZTtcbiBcdFx0dmFyIG5zID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiBcdFx0X193ZWJwYWNrX3JlcXVpcmVfXy5yKG5zKTtcbiBcdFx0T2JqZWN0LmRlZmluZVByb3BlcnR5KG5zLCAnZGVmYXVsdCcsIHsgZW51bWVyYWJsZTogdHJ1ZSwgdmFsdWU6IHZhbHVlIH0pO1xuIFx0XHRpZihtb2RlICYgMiAmJiB0eXBlb2YgdmFsdWUgIT0gJ3N0cmluZycpIGZvcih2YXIga2V5IGluIHZhbHVlKSBfX3dlYnBhY2tfcmVxdWlyZV9fLmQobnMsIGtleSwgZnVuY3Rpb24oa2V5KSB7IHJldHVybiB2YWx1ZVtrZXldOyB9LmJpbmQobnVsbCwga2V5KSk7XG4gXHRcdHJldHVybiBucztcbiBcdH07XG5cbiBcdC8vIGdldERlZmF1bHRFeHBvcnQgZnVuY3Rpb24gZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBub24taGFybW9ueSBtb2R1bGVzXG4gXHRfX3dlYnBhY2tfcmVxdWlyZV9fLm4gPSBmdW5jdGlvbihtb2R1bGUpIHtcbiBcdFx0dmFyIGdldHRlciA9IG1vZHVsZSAmJiBtb2R1bGUuX19lc01vZHVsZSA/XG4gXHRcdFx0ZnVuY3Rpb24gZ2V0RGVmYXVsdCgpIHsgcmV0dXJuIG1vZHVsZVsnZGVmYXVsdCddOyB9IDpcbiBcdFx0XHRmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9O1xuIFx0XHRfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7XG4gXHRcdHJldHVybiBnZXR0ZXI7XG4gXHR9O1xuXG4gXHQvLyBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGxcbiBcdF9fd2VicGFja19yZXF1aXJlX18ubyA9IGZ1bmN0aW9uKG9iamVjdCwgcHJvcGVydHkpIHsgcmV0dXJuIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChvYmplY3QsIHByb3BlcnR5KTsgfTtcblxuIFx0Ly8gX193ZWJwYWNrX3B1YmxpY19wYXRoX19cbiBcdF9fd2VicGFja19yZXF1aXJlX18ucCA9IFwiXCI7XG5cblxuIFx0Ly8gTG9hZCBlbnRyeSBtb2R1bGUgYW5kIHJldHVybiBleHBvcnRzXG4gXHRyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSA0MCk7XG4iLCIvLyBDb3B5cmlnaHQgSm95ZW50LCBJbmMuIGFuZCBvdGhlciBOb2RlIGNvbnRyaWJ1dG9ycy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYVxuLy8gY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZVxuLy8gXCJTb2Z0d2FyZVwiKSwgdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nXG4vLyB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsXG4vLyBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLCBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0XG4vLyBwZXJzb25zIHRvIHdob20gdGhlIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGVcbi8vIGZvbGxvd2luZyBjb25kaXRpb25zOlxuLy9cbi8vIFRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIHNoYWxsIGJlIGluY2x1ZGVkXG4vLyBpbiBhbGwgY29waWVzIG9yIHN1YnN0YW50aWFsIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS5cbi8vXG4vLyBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgXCJBUyBJU1wiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTXG4vLyBPUiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GXG4vLyBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOXG4vLyBOTyBFVkVOVCBTSEFMTCBUSEUgQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSxcbi8vIERBTUFHRVMgT1IgT1RIRVIgTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUlxuLy8gT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRVxuLy8gVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS5cblxuLy8gYSBkdXBsZXggc3RyZWFtIGlzIGp1c3QgYSBzdHJlYW0gdGhhdCBpcyBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZS5cbi8vIFNpbmNlIEpTIGRvZXNuJ3QgaGF2ZSBtdWx0aXBsZSBwcm90b3R5cGFsIGluaGVyaXRhbmNlLCB0aGlzIGNsYXNzXG4vLyBwcm90b3R5cGFsbHkgaW5oZXJpdHMgZnJvbSBSZWFkYWJsZSwgYW5kIHRoZW4gcGFyYXNpdGljYWxseSBmcm9tXG4vLyBXcml0YWJsZS5cblxuJ3VzZSBzdHJpY3QnO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgcG5hID0gcmVxdWlyZSgncHJvY2Vzcy1uZXh0aWNrLWFyZ3MnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIG9iamVjdEtleXMgPSBPYmplY3Qua2V5cyB8fCBmdW5jdGlvbiAob2JqKSB7XG4gIHZhciBrZXlzID0gW107XG4gIGZvciAodmFyIGtleSBpbiBvYmopIHtcbiAgICBrZXlzLnB1c2goa2V5KTtcbiAgfXJldHVybiBrZXlzO1xufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG5tb2R1bGUuZXhwb3J0cyA9IER1cGxleDtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gT2JqZWN0LmNyZWF0ZShyZXF1aXJlKCdjb3JlLXV0aWwtaXMnKSk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgUmVhZGFibGUgPSByZXF1aXJlKCcuL19zdHJlYW1fcmVhZGFibGUnKTtcbnZhciBXcml0YWJsZSA9IHJlcXVpcmUoJy4vX3N0cmVhbV93cml0YWJsZScpO1xuXG51dGlsLmluaGVyaXRzKER1cGxleCwgUmVhZGFibGUpO1xuXG57XG4gIC8vIGF2b2lkIHNjb3BlIGNyZWVwLCB0aGUga2V5cyBhcnJheSBjYW4gdGhlbiBiZSBjb2xsZWN0ZWRcbiAgdmFyIGtleXMgPSBvYmplY3RLZXlzKFdyaXRhYmxlLnByb3RvdHlwZSk7XG4gIGZvciAodmFyIHYgPSAwOyB2IDwga2V5cy5sZW5ndGg7IHYrKykge1xuICAgIHZhciBtZXRob2QgPSBrZXlzW3ZdO1xuICAgIGlmICghRHVwbGV4LnByb3RvdHlwZVttZXRob2RdKSBEdXBsZXgucHJvdG90eXBlW21ldGhvZF0gPSBXcml0YWJsZS5wcm90b3R5cGVbbWV0aG9kXTtcbiAgfVxufVxuXG5mdW5jdGlvbiBEdXBsZXgob3B0aW9ucykge1xuICBpZiAoISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkgcmV0dXJuIG5ldyBEdXBsZXgob3B0aW9ucyk7XG5cbiAgUmVhZGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcbiAgV3JpdGFibGUuY2FsbCh0aGlzLCBvcHRpb25zKTtcblxuICBpZiAob3B0aW9ucyAmJiBvcHRpb25zLnJlYWRhYmxlID09PSBmYWxzZSkgdGhpcy5yZWFkYWJsZSA9IGZhbHNlO1xuXG4gIGlmIChvcHRpb25zICYmIG9wdGlvbnMud3JpdGFibGUgPT09IGZhbHNlKSB0aGlzLndyaXRhYmxlID0gZmFsc2U7XG5cbiAgdGhpcy5hbGxvd0hhbGZPcGVuID0gdHJ1ZTtcbiAgaWYgKG9wdGlvbnMgJiYgb3B0aW9ucy5hbGxvd0hhbGZPcGVuID09PSBmYWxzZSkgdGhpcy5hbGxvd0hhbGZPcGVuID0gZmFsc2U7XG5cbiAgdGhpcy5vbmNlKCdlbmQnLCBvbmVuZCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gdGhlIG5vLWhhbGYtb3BlbiBlbmZvcmNlclxuZnVuY3Rpb24gb25lbmQoKSB7XG4gIC8vIGlmIHdlIGFsbG93IGhhbGYtb3BlbiBzdGF0ZSwgb3IgaWYgdGhlIHdyaXRhYmxlIHNpZGUgZW5kZWQsXG4gIC8vIHRoZW4gd2UncmUgb2suXG4gIGlmICh0aGlzLmFsbG93SGFsZk9wZW4gfHwgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCkgcmV0dXJuO1xuXG4gIC8vIG5vIG1vcmUgZGF0YSBjYW4gYmUgd3JpdHRlbi5cbiAgLy8gQnV0IGFsbG93IG1vcmUgd3JpdGVzIHRvIGhhcHBlbiBpbiB0aGlzIHRpY2suXG4gIHBuYS5uZXh0VGljayhvbkVuZE5ULCB0aGlzKTtcbn1cblxuZnVuY3Rpb24gb25FbmROVChzZWxmKSB7XG4gIHNlbGYuZW5kKCk7XG59XG5cbk9iamVjdC5kZWZpbmVQcm9wZXJ0eShEdXBsZXgucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkIHx8IHRoaXMuX3dyaXRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgJiYgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlID09PSB1bmRlZmluZWQgfHwgdGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3JlYWRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB2YWx1ZTtcbiAgfVxufSk7XG5cbkR1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIHRoaXMuZW5kKCk7XG5cbiAgcG5hLm5leHRUaWNrKGNiLCBlcnIpO1xufTsiLCJ2YXIgZztcblxuLy8gVGhpcyB3b3JrcyBpbiBub24tc3RyaWN0IG1vZGVcbmcgPSAoZnVuY3Rpb24oKSB7XG5cdHJldHVybiB0aGlzO1xufSkoKTtcblxudHJ5IHtcblx0Ly8gVGhpcyB3b3JrcyBpZiBldmFsIGlzIGFsbG93ZWQgKHNlZSBDU1ApXG5cdGcgPSBnIHx8IG5ldyBGdW5jdGlvbihcInJldHVybiB0aGlzXCIpKCk7XG59IGNhdGNoIChlKSB7XG5cdC8vIFRoaXMgd29ya3MgaWYgdGhlIHdpbmRvdyByZWZlcmVuY2UgaXMgYXZhaWxhYmxlXG5cdGlmICh0eXBlb2Ygd2luZG93ID09PSBcIm9iamVjdFwiKSBnID0gd2luZG93O1xufVxuXG4vLyBnIGNhbiBzdGlsbCBiZSB1bmRlZmluZWQsIGJ1dCBub3RoaW5nIHRvIGRvIGFib3V0IGl0Li4uXG4vLyBXZSByZXR1cm4gdW5kZWZpbmVkLCBpbnN0ZWFkIG9mIG5vdGhpbmcgaGVyZSwgc28gaXQnc1xuLy8gZWFzaWVyIHRvIGhhbmRsZSB0aGlzIGNhc2UuIGlmKCFnbG9iYWwpIHsgLi4ufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGc7XG4iLCJpZiAodHlwZW9mIE9iamVjdC5jcmVhdGUgPT09ICdmdW5jdGlvbicpIHtcbiAgLy8gaW1wbGVtZW50YXRpb24gZnJvbSBzdGFuZGFyZCBub2RlLmpzICd1dGlsJyBtb2R1bGVcbiAgbW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBpbmhlcml0cyhjdG9yLCBzdXBlckN0b3IpIHtcbiAgICBpZiAoc3VwZXJDdG9yKSB7XG4gICAgICBjdG9yLnN1cGVyXyA9IHN1cGVyQ3RvclxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBPYmplY3QuY3JlYXRlKHN1cGVyQ3Rvci5wcm90b3R5cGUsIHtcbiAgICAgICAgY29uc3RydWN0b3I6IHtcbiAgICAgICAgICB2YWx1ZTogY3RvcixcbiAgICAgICAgICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgICAgICAgICB3cml0YWJsZTogdHJ1ZSxcbiAgICAgICAgICBjb25maWd1cmFibGU6IHRydWVcbiAgICAgICAgfVxuICAgICAgfSlcbiAgICB9XG4gIH07XG59IGVsc2Uge1xuICAvLyBvbGQgc2Nob29sIHNoaW0gZm9yIG9sZCBicm93c2Vyc1xuICBtb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uIGluaGVyaXRzKGN0b3IsIHN1cGVyQ3Rvcikge1xuICAgIGlmIChzdXBlckN0b3IpIHtcbiAgICAgIGN0b3Iuc3VwZXJfID0gc3VwZXJDdG9yXG4gICAgICB2YXIgVGVtcEN0b3IgPSBmdW5jdGlvbiAoKSB7fVxuICAgICAgVGVtcEN0b3IucHJvdG90eXBlID0gc3VwZXJDdG9yLnByb3RvdHlwZVxuICAgICAgY3Rvci5wcm90b3R5cGUgPSBuZXcgVGVtcEN0b3IoKVxuICAgICAgY3Rvci5wcm90b3R5cGUuY29uc3RydWN0b3IgPSBjdG9yXG4gICAgfVxuICB9XG59XG4iLCIvLyBzaGltIGZvciB1c2luZyBwcm9jZXNzIGluIGJyb3dzZXJcbnZhciBwcm9jZXNzID0gbW9kdWxlLmV4cG9ydHMgPSB7fTtcblxuLy8gY2FjaGVkIGZyb20gd2hhdGV2ZXIgZ2xvYmFsIGlzIHByZXNlbnQgc28gdGhhdCB0ZXN0IHJ1bm5lcnMgdGhhdCBzdHViIGl0XG4vLyBkb24ndCBicmVhayB0aGluZ3MuICBCdXQgd2UgbmVlZCB0byB3cmFwIGl0IGluIGEgdHJ5IGNhdGNoIGluIGNhc2UgaXQgaXNcbi8vIHdyYXBwZWQgaW4gc3RyaWN0IG1vZGUgY29kZSB3aGljaCBkb2Vzbid0IGRlZmluZSBhbnkgZ2xvYmFscy4gIEl0J3MgaW5zaWRlIGFcbi8vIGZ1bmN0aW9uIGJlY2F1c2UgdHJ5L2NhdGNoZXMgZGVvcHRpbWl6ZSBpbiBjZXJ0YWluIGVuZ2luZXMuXG5cbnZhciBjYWNoZWRTZXRUaW1lb3V0O1xudmFyIGNhY2hlZENsZWFyVGltZW91dDtcblxuZnVuY3Rpb24gZGVmYXVsdFNldFRpbW91dCgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ3NldFRpbWVvdXQgaGFzIG5vdCBiZWVuIGRlZmluZWQnKTtcbn1cbmZ1bmN0aW9uIGRlZmF1bHRDbGVhclRpbWVvdXQgKCkge1xuICAgIHRocm93IG5ldyBFcnJvcignY2xlYXJUaW1lb3V0IGhhcyBub3QgYmVlbiBkZWZpbmVkJyk7XG59XG4oZnVuY3Rpb24gKCkge1xuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2Ygc2V0VGltZW91dCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IHNldFRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gZGVmYXVsdFNldFRpbW91dDtcbiAgICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY2FjaGVkU2V0VGltZW91dCA9IGRlZmF1bHRTZXRUaW1vdXQ7XG4gICAgfVxuICAgIHRyeSB7XG4gICAgICAgIGlmICh0eXBlb2YgY2xlYXJUaW1lb3V0ID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBjbGVhclRpbWVvdXQ7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgICAgICB9XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgICBjYWNoZWRDbGVhclRpbWVvdXQgPSBkZWZhdWx0Q2xlYXJUaW1lb3V0O1xuICAgIH1cbn0gKCkpXG5mdW5jdGlvbiBydW5UaW1lb3V0KGZ1bikge1xuICAgIGlmIChjYWNoZWRTZXRUaW1lb3V0ID09PSBzZXRUaW1lb3V0KSB7XG4gICAgICAgIC8vbm9ybWFsIGVudmlyb21lbnRzIGluIHNhbmUgc2l0dWF0aW9uc1xuICAgICAgICByZXR1cm4gc2V0VGltZW91dChmdW4sIDApO1xuICAgIH1cbiAgICAvLyBpZiBzZXRUaW1lb3V0IHdhc24ndCBhdmFpbGFibGUgYnV0IHdhcyBsYXR0ZXIgZGVmaW5lZFxuICAgIGlmICgoY2FjaGVkU2V0VGltZW91dCA9PT0gZGVmYXVsdFNldFRpbW91dCB8fCAhY2FjaGVkU2V0VGltZW91dCkgJiYgc2V0VGltZW91dCkge1xuICAgICAgICBjYWNoZWRTZXRUaW1lb3V0ID0gc2V0VGltZW91dDtcbiAgICAgICAgcmV0dXJuIHNldFRpbWVvdXQoZnVuLCAwKTtcbiAgICB9XG4gICAgdHJ5IHtcbiAgICAgICAgLy8gd2hlbiB3aGVuIHNvbWVib2R5IGhhcyBzY3Jld2VkIHdpdGggc2V0VGltZW91dCBidXQgbm8gSS5FLiBtYWRkbmVzc1xuICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dChmdW4sIDApO1xuICAgIH0gY2F0Y2goZSl7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICAvLyBXaGVuIHdlIGFyZSBpbiBJLkUuIGJ1dCB0aGUgc2NyaXB0IGhhcyBiZWVuIGV2YWxlZCBzbyBJLkUuIGRvZXNuJ3QgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRTZXRUaW1lb3V0LmNhbGwobnVsbCwgZnVuLCAwKTtcbiAgICAgICAgfSBjYXRjaChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yXG4gICAgICAgICAgICByZXR1cm4gY2FjaGVkU2V0VGltZW91dC5jYWxsKHRoaXMsIGZ1biwgMCk7XG4gICAgICAgIH1cbiAgICB9XG5cblxufVxuZnVuY3Rpb24gcnVuQ2xlYXJUaW1lb3V0KG1hcmtlcikge1xuICAgIGlmIChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGNsZWFyVGltZW91dCkge1xuICAgICAgICAvL25vcm1hbCBlbnZpcm9tZW50cyBpbiBzYW5lIHNpdHVhdGlvbnNcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICAvLyBpZiBjbGVhclRpbWVvdXQgd2Fzbid0IGF2YWlsYWJsZSBidXQgd2FzIGxhdHRlciBkZWZpbmVkXG4gICAgaWYgKChjYWNoZWRDbGVhclRpbWVvdXQgPT09IGRlZmF1bHRDbGVhclRpbWVvdXQgfHwgIWNhY2hlZENsZWFyVGltZW91dCkgJiYgY2xlYXJUaW1lb3V0KSB7XG4gICAgICAgIGNhY2hlZENsZWFyVGltZW91dCA9IGNsZWFyVGltZW91dDtcbiAgICAgICAgcmV0dXJuIGNsZWFyVGltZW91dChtYXJrZXIpO1xuICAgIH1cbiAgICB0cnkge1xuICAgICAgICAvLyB3aGVuIHdoZW4gc29tZWJvZHkgaGFzIHNjcmV3ZWQgd2l0aCBzZXRUaW1lb3V0IGJ1dCBubyBJLkUuIG1hZGRuZXNzXG4gICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQobWFya2VyKTtcbiAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIFdoZW4gd2UgYXJlIGluIEkuRS4gYnV0IHRoZSBzY3JpcHQgaGFzIGJlZW4gZXZhbGVkIHNvIEkuRS4gZG9lc24ndCAgdHJ1c3QgdGhlIGdsb2JhbCBvYmplY3Qgd2hlbiBjYWxsZWQgbm9ybWFsbHlcbiAgICAgICAgICAgIHJldHVybiBjYWNoZWRDbGVhclRpbWVvdXQuY2FsbChudWxsLCBtYXJrZXIpO1xuICAgICAgICB9IGNhdGNoIChlKXtcbiAgICAgICAgICAgIC8vIHNhbWUgYXMgYWJvdmUgYnV0IHdoZW4gaXQncyBhIHZlcnNpb24gb2YgSS5FLiB0aGF0IG11c3QgaGF2ZSB0aGUgZ2xvYmFsIG9iamVjdCBmb3IgJ3RoaXMnLCBob3BmdWxseSBvdXIgY29udGV4dCBjb3JyZWN0IG90aGVyd2lzZSBpdCB3aWxsIHRocm93IGEgZ2xvYmFsIGVycm9yLlxuICAgICAgICAgICAgLy8gU29tZSB2ZXJzaW9ucyBvZiBJLkUuIGhhdmUgZGlmZmVyZW50IHJ1bGVzIGZvciBjbGVhclRpbWVvdXQgdnMgc2V0VGltZW91dFxuICAgICAgICAgICAgcmV0dXJuIGNhY2hlZENsZWFyVGltZW91dC5jYWxsKHRoaXMsIG1hcmtlcik7XG4gICAgICAgIH1cbiAgICB9XG5cblxuXG59XG52YXIgcXVldWUgPSBbXTtcbnZhciBkcmFpbmluZyA9IGZhbHNlO1xudmFyIGN1cnJlbnRRdWV1ZTtcbnZhciBxdWV1ZUluZGV4ID0gLTE7XG5cbmZ1bmN0aW9uIGNsZWFuVXBOZXh0VGljaygpIHtcbiAgICBpZiAoIWRyYWluaW5nIHx8ICFjdXJyZW50UXVldWUpIHtcbiAgICAgICAgcmV0dXJuO1xuICAgIH1cbiAgICBkcmFpbmluZyA9IGZhbHNlO1xuICAgIGlmIChjdXJyZW50UXVldWUubGVuZ3RoKSB7XG4gICAgICAgIHF1ZXVlID0gY3VycmVudFF1ZXVlLmNvbmNhdChxdWV1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgIH1cbiAgICBpZiAocXVldWUubGVuZ3RoKSB7XG4gICAgICAgIGRyYWluUXVldWUoKTtcbiAgICB9XG59XG5cbmZ1bmN0aW9uIGRyYWluUXVldWUoKSB7XG4gICAgaWYgKGRyYWluaW5nKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG4gICAgdmFyIHRpbWVvdXQgPSBydW5UaW1lb3V0KGNsZWFuVXBOZXh0VGljayk7XG4gICAgZHJhaW5pbmcgPSB0cnVlO1xuXG4gICAgdmFyIGxlbiA9IHF1ZXVlLmxlbmd0aDtcbiAgICB3aGlsZShsZW4pIHtcbiAgICAgICAgY3VycmVudFF1ZXVlID0gcXVldWU7XG4gICAgICAgIHF1ZXVlID0gW107XG4gICAgICAgIHdoaWxlICgrK3F1ZXVlSW5kZXggPCBsZW4pIHtcbiAgICAgICAgICAgIGlmIChjdXJyZW50UXVldWUpIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50UXVldWVbcXVldWVJbmRleF0ucnVuKCk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgICAgcXVldWVJbmRleCA9IC0xO1xuICAgICAgICBsZW4gPSBxdWV1ZS5sZW5ndGg7XG4gICAgfVxuICAgIGN1cnJlbnRRdWV1ZSA9IG51bGw7XG4gICAgZHJhaW5pbmcgPSBmYWxzZTtcbiAgICBydW5DbGVhclRpbWVvdXQodGltZW91dCk7XG59XG5cbnByb2Nlc3MubmV4dFRpY2sgPSBmdW5jdGlvbiAoZnVuKSB7XG4gICAgdmFyIGFyZ3MgPSBuZXcgQXJyYXkoYXJndW1lbnRzLmxlbmd0aCAtIDEpO1xuICAgIGlmIChhcmd1bWVudHMubGVuZ3RoID4gMSkge1xuICAgICAgICBmb3IgKHZhciBpID0gMTsgaSA8IGFyZ3VtZW50cy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgICAgYXJnc1tpIC0gMV0gPSBhcmd1bWVudHNbaV07XG4gICAgICAgIH1cbiAgICB9XG4gICAgcXVldWUucHVzaChuZXcgSXRlbShmdW4sIGFyZ3MpKTtcbiAgICBpZiAocXVldWUubGVuZ3RoID09PSAxICYmICFkcmFpbmluZykge1xuICAgICAgICBydW5UaW1lb3V0KGRyYWluUXVldWUpO1xuICAgIH1cbn07XG5cbi8vIHY4IGxpa2VzIHByZWRpY3RpYmxlIG9iamVjdHNcbmZ1bmN0aW9uIEl0ZW0oZnVuLCBhcnJheSkge1xuICAgIHRoaXMuZnVuID0gZnVuO1xuICAgIHRoaXMuYXJyYXkgPSBhcnJheTtcbn1cbkl0ZW0ucHJvdG90eXBlLnJ1biA9IGZ1bmN0aW9uICgpIHtcbiAgICB0aGlzLmZ1bi5hcHBseShudWxsLCB0aGlzLmFycmF5KTtcbn07XG5wcm9jZXNzLnRpdGxlID0gJ2Jyb3dzZXInO1xucHJvY2Vzcy5icm93c2VyID0gdHJ1ZTtcbnByb2Nlc3MuZW52ID0ge307XG5wcm9jZXNzLmFyZ3YgPSBbXTtcbnByb2Nlc3MudmVyc2lvbiA9ICcnOyAvLyBlbXB0eSBzdHJpbmcgdG8gYXZvaWQgcmVnZXhwIGlzc3Vlc1xucHJvY2Vzcy52ZXJzaW9ucyA9IHt9O1xuXG5mdW5jdGlvbiBub29wKCkge31cblxucHJvY2Vzcy5vbiA9IG5vb3A7XG5wcm9jZXNzLmFkZExpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3Mub25jZSA9IG5vb3A7XG5wcm9jZXNzLm9mZiA9IG5vb3A7XG5wcm9jZXNzLnJlbW92ZUxpc3RlbmVyID0gbm9vcDtcbnByb2Nlc3MucmVtb3ZlQWxsTGlzdGVuZXJzID0gbm9vcDtcbnByb2Nlc3MuZW1pdCA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRMaXN0ZW5lciA9IG5vb3A7XG5wcm9jZXNzLnByZXBlbmRPbmNlTGlzdGVuZXIgPSBub29wO1xuXG5wcm9jZXNzLmxpc3RlbmVycyA9IGZ1bmN0aW9uIChuYW1lKSB7IHJldHVybiBbXSB9XG5cbnByb2Nlc3MuYmluZGluZyA9IGZ1bmN0aW9uIChuYW1lKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmJpbmRpbmcgaXMgbm90IHN1cHBvcnRlZCcpO1xufTtcblxucHJvY2Vzcy5jd2QgPSBmdW5jdGlvbiAoKSB7IHJldHVybiAnLycgfTtcbnByb2Nlc3MuY2hkaXIgPSBmdW5jdGlvbiAoZGlyKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdwcm9jZXNzLmNoZGlyIGlzIG5vdCBzdXBwb3J0ZWQnKTtcbn07XG5wcm9jZXNzLnVtYXNrID0gZnVuY3Rpb24oKSB7IHJldHVybiAwOyB9O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIE5PVEU6IFRoZXNlIHR5cGUgY2hlY2tpbmcgZnVuY3Rpb25zIGludGVudGlvbmFsbHkgZG9uJ3QgdXNlIGBpbnN0YW5jZW9mYFxuLy8gYmVjYXVzZSBpdCBpcyBmcmFnaWxlIGFuZCBjYW4gYmUgZWFzaWx5IGZha2VkIHdpdGggYE9iamVjdC5jcmVhdGUoKWAuXG5cbmZ1bmN0aW9uIGlzQXJyYXkoYXJnKSB7XG4gIGlmIChBcnJheS5pc0FycmF5KSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkoYXJnKTtcbiAgfVxuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoYXJnKSA9PT0gJ1tvYmplY3QgQXJyYXldJztcbn1cbmV4cG9ydHMuaXNBcnJheSA9IGlzQXJyYXk7XG5cbmZ1bmN0aW9uIGlzQm9vbGVhbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdib29sZWFuJztcbn1cbmV4cG9ydHMuaXNCb29sZWFuID0gaXNCb29sZWFuO1xuXG5mdW5jdGlvbiBpc051bGwoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IG51bGw7XG59XG5leHBvcnRzLmlzTnVsbCA9IGlzTnVsbDtcblxuZnVuY3Rpb24gaXNOdWxsT3JVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT0gbnVsbDtcbn1cbmV4cG9ydHMuaXNOdWxsT3JVbmRlZmluZWQgPSBpc051bGxPclVuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNOdW1iZXIoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnbnVtYmVyJztcbn1cbmV4cG9ydHMuaXNOdW1iZXIgPSBpc051bWJlcjtcblxuZnVuY3Rpb24gaXNTdHJpbmcoYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3RyaW5nJztcbn1cbmV4cG9ydHMuaXNTdHJpbmcgPSBpc1N0cmluZztcblxuZnVuY3Rpb24gaXNTeW1ib2woYXJnKSB7XG4gIHJldHVybiB0eXBlb2YgYXJnID09PSAnc3ltYm9sJztcbn1cbmV4cG9ydHMuaXNTeW1ib2wgPSBpc1N5bWJvbDtcblxuZnVuY3Rpb24gaXNVbmRlZmluZWQoYXJnKSB7XG4gIHJldHVybiBhcmcgPT09IHZvaWQgMDtcbn1cbmV4cG9ydHMuaXNVbmRlZmluZWQgPSBpc1VuZGVmaW5lZDtcblxuZnVuY3Rpb24gaXNSZWdFeHAocmUpIHtcbiAgcmV0dXJuIG9iamVjdFRvU3RyaW5nKHJlKSA9PT0gJ1tvYmplY3QgUmVnRXhwXSc7XG59XG5leHBvcnRzLmlzUmVnRXhwID0gaXNSZWdFeHA7XG5cbmZ1bmN0aW9uIGlzT2JqZWN0KGFyZykge1xuICByZXR1cm4gdHlwZW9mIGFyZyA9PT0gJ29iamVjdCcgJiYgYXJnICE9PSBudWxsO1xufVxuZXhwb3J0cy5pc09iamVjdCA9IGlzT2JqZWN0O1xuXG5mdW5jdGlvbiBpc0RhdGUoZCkge1xuICByZXR1cm4gb2JqZWN0VG9TdHJpbmcoZCkgPT09ICdbb2JqZWN0IERhdGVdJztcbn1cbmV4cG9ydHMuaXNEYXRlID0gaXNEYXRlO1xuXG5mdW5jdGlvbiBpc0Vycm9yKGUpIHtcbiAgcmV0dXJuIChvYmplY3RUb1N0cmluZyhlKSA9PT0gJ1tvYmplY3QgRXJyb3JdJyB8fCBlIGluc3RhbmNlb2YgRXJyb3IpO1xufVxuZXhwb3J0cy5pc0Vycm9yID0gaXNFcnJvcjtcblxuZnVuY3Rpb24gaXNGdW5jdGlvbihhcmcpIHtcbiAgcmV0dXJuIHR5cGVvZiBhcmcgPT09ICdmdW5jdGlvbic7XG59XG5leHBvcnRzLmlzRnVuY3Rpb24gPSBpc0Z1bmN0aW9uO1xuXG5mdW5jdGlvbiBpc1ByaW1pdGl2ZShhcmcpIHtcbiAgcmV0dXJuIGFyZyA9PT0gbnVsbCB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ2Jvb2xlYW4nIHx8XG4gICAgICAgICB0eXBlb2YgYXJnID09PSAnbnVtYmVyJyB8fFxuICAgICAgICAgdHlwZW9mIGFyZyA9PT0gJ3N0cmluZycgfHxcbiAgICAgICAgIHR5cGVvZiBhcmcgPT09ICdzeW1ib2wnIHx8ICAvLyBFUzYgc3ltYm9sXG4gICAgICAgICB0eXBlb2YgYXJnID09PSAndW5kZWZpbmVkJztcbn1cbmV4cG9ydHMuaXNQcmltaXRpdmUgPSBpc1ByaW1pdGl2ZTtcblxuZXhwb3J0cy5pc0J1ZmZlciA9IEJ1ZmZlci5pc0J1ZmZlcjtcblxuZnVuY3Rpb24gb2JqZWN0VG9TdHJpbmcobykge1xuICByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZy5jYWxsKG8pO1xufVxuIiwiLyohXG4gKiBUaGUgYnVmZmVyIG1vZHVsZSBmcm9tIG5vZGUuanMsIGZvciB0aGUgYnJvd3Nlci5cbiAqXG4gKiBAYXV0aG9yICAgRmVyb3NzIEFib3VraGFkaWplaCA8aHR0cDovL2Zlcm9zcy5vcmc+XG4gKiBAbGljZW5zZSAgTUlUXG4gKi9cbi8qIGVzbGludC1kaXNhYmxlIG5vLXByb3RvICovXG5cbid1c2Ugc3RyaWN0J1xuXG52YXIgYmFzZTY0ID0gcmVxdWlyZSgnYmFzZTY0LWpzJylcbnZhciBpZWVlNzU0ID0gcmVxdWlyZSgnaWVlZTc1NCcpXG52YXIgaXNBcnJheSA9IHJlcXVpcmUoJ2lzYXJyYXknKVxuXG5leHBvcnRzLkJ1ZmZlciA9IEJ1ZmZlclxuZXhwb3J0cy5TbG93QnVmZmVyID0gU2xvd0J1ZmZlclxuZXhwb3J0cy5JTlNQRUNUX01BWF9CWVRFUyA9IDUwXG5cbi8qKlxuICogSWYgYEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUYDpcbiAqICAgPT09IHRydWUgICAgVXNlIFVpbnQ4QXJyYXkgaW1wbGVtZW50YXRpb24gKGZhc3Rlc3QpXG4gKiAgID09PSBmYWxzZSAgIFVzZSBPYmplY3QgaW1wbGVtZW50YXRpb24gKG1vc3QgY29tcGF0aWJsZSwgZXZlbiBJRTYpXG4gKlxuICogQnJvd3NlcnMgdGhhdCBzdXBwb3J0IHR5cGVkIGFycmF5cyBhcmUgSUUgMTArLCBGaXJlZm94IDQrLCBDaHJvbWUgNyssIFNhZmFyaSA1LjErLFxuICogT3BlcmEgMTEuNissIGlPUyA0LjIrLlxuICpcbiAqIER1ZSB0byB2YXJpb3VzIGJyb3dzZXIgYnVncywgc29tZXRpbWVzIHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24gd2lsbCBiZSB1c2VkIGV2ZW5cbiAqIHdoZW4gdGhlIGJyb3dzZXIgc3VwcG9ydHMgdHlwZWQgYXJyYXlzLlxuICpcbiAqIE5vdGU6XG4gKlxuICogICAtIEZpcmVmb3ggNC0yOSBsYWNrcyBzdXBwb3J0IGZvciBhZGRpbmcgbmV3IHByb3BlcnRpZXMgdG8gYFVpbnQ4QXJyYXlgIGluc3RhbmNlcyxcbiAqICAgICBTZWU6IGh0dHBzOi8vYnVnemlsbGEubW96aWxsYS5vcmcvc2hvd19idWcuY2dpP2lkPTY5NTQzOC5cbiAqXG4gKiAgIC0gQ2hyb21lIDktMTAgaXMgbWlzc2luZyB0aGUgYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbi5cbiAqXG4gKiAgIC0gSUUxMCBoYXMgYSBicm9rZW4gYFR5cGVkQXJyYXkucHJvdG90eXBlLnN1YmFycmF5YCBmdW5jdGlvbiB3aGljaCByZXR1cm5zIGFycmF5cyBvZlxuICogICAgIGluY29ycmVjdCBsZW5ndGggaW4gc29tZSBzaXR1YXRpb25zLlxuXG4gKiBXZSBkZXRlY3QgdGhlc2UgYnVnZ3kgYnJvd3NlcnMgYW5kIHNldCBgQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlRgIHRvIGBmYWxzZWAgc28gdGhleVxuICogZ2V0IHRoZSBPYmplY3QgaW1wbGVtZW50YXRpb24sIHdoaWNoIGlzIHNsb3dlciBidXQgYmVoYXZlcyBjb3JyZWN0bHkuXG4gKi9cbkJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUID0gZ2xvYmFsLlRZUEVEX0FSUkFZX1NVUFBPUlQgIT09IHVuZGVmaW5lZFxuICA/IGdsb2JhbC5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gIDogdHlwZWRBcnJheVN1cHBvcnQoKVxuXG4vKlxuICogRXhwb3J0IGtNYXhMZW5ndGggYWZ0ZXIgdHlwZWQgYXJyYXkgc3VwcG9ydCBpcyBkZXRlcm1pbmVkLlxuICovXG5leHBvcnRzLmtNYXhMZW5ndGggPSBrTWF4TGVuZ3RoKClcblxuZnVuY3Rpb24gdHlwZWRBcnJheVN1cHBvcnQgKCkge1xuICB0cnkge1xuICAgIHZhciBhcnIgPSBuZXcgVWludDhBcnJheSgxKVxuICAgIGFyci5fX3Byb3RvX18gPSB7X19wcm90b19fOiBVaW50OEFycmF5LnByb3RvdHlwZSwgZm9vOiBmdW5jdGlvbiAoKSB7IHJldHVybiA0MiB9fVxuICAgIHJldHVybiBhcnIuZm9vKCkgPT09IDQyICYmIC8vIHR5cGVkIGFycmF5IGluc3RhbmNlcyBjYW4gYmUgYXVnbWVudGVkXG4gICAgICAgIHR5cGVvZiBhcnIuc3ViYXJyYXkgPT09ICdmdW5jdGlvbicgJiYgLy8gY2hyb21lIDktMTAgbGFjayBgc3ViYXJyYXlgXG4gICAgICAgIGFyci5zdWJhcnJheSgxLCAxKS5ieXRlTGVuZ3RoID09PSAwIC8vIGllMTAgaGFzIGJyb2tlbiBgc3ViYXJyYXlgXG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXR1cm4gZmFsc2VcbiAgfVxufVxuXG5mdW5jdGlvbiBrTWF4TGVuZ3RoICgpIHtcbiAgcmV0dXJuIEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUXG4gICAgPyAweDdmZmZmZmZmXG4gICAgOiAweDNmZmZmZmZmXG59XG5cbmZ1bmN0aW9uIGNyZWF0ZUJ1ZmZlciAodGhhdCwgbGVuZ3RoKSB7XG4gIGlmIChrTWF4TGVuZ3RoKCkgPCBsZW5ndGgpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW52YWxpZCB0eXBlZCBhcnJheSBsZW5ndGgnKVxuICB9XG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBuZXcgVWludDhBcnJheShsZW5ndGgpXG4gICAgdGhhdC5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgLy8gRmFsbGJhY2s6IFJldHVybiBhbiBvYmplY3QgaW5zdGFuY2Ugb2YgdGhlIEJ1ZmZlciBjbGFzc1xuICAgIGlmICh0aGF0ID09PSBudWxsKSB7XG4gICAgICB0aGF0ID0gbmV3IEJ1ZmZlcihsZW5ndGgpXG4gICAgfVxuICAgIHRoYXQubGVuZ3RoID0gbGVuZ3RoXG4gIH1cblxuICByZXR1cm4gdGhhdFxufVxuXG4vKipcbiAqIFRoZSBCdWZmZXIgY29uc3RydWN0b3IgcmV0dXJucyBpbnN0YW5jZXMgb2YgYFVpbnQ4QXJyYXlgIHRoYXQgaGF2ZSB0aGVpclxuICogcHJvdG90eXBlIGNoYW5nZWQgdG8gYEJ1ZmZlci5wcm90b3R5cGVgLiBGdXJ0aGVybW9yZSwgYEJ1ZmZlcmAgaXMgYSBzdWJjbGFzcyBvZlxuICogYFVpbnQ4QXJyYXlgLCBzbyB0aGUgcmV0dXJuZWQgaW5zdGFuY2VzIHdpbGwgaGF2ZSBhbGwgdGhlIG5vZGUgYEJ1ZmZlcmAgbWV0aG9kc1xuICogYW5kIHRoZSBgVWludDhBcnJheWAgbWV0aG9kcy4gU3F1YXJlIGJyYWNrZXQgbm90YXRpb24gd29ya3MgYXMgZXhwZWN0ZWQgLS0gaXRcbiAqIHJldHVybnMgYSBzaW5nbGUgb2N0ZXQuXG4gKlxuICogVGhlIGBVaW50OEFycmF5YCBwcm90b3R5cGUgcmVtYWlucyB1bm1vZGlmaWVkLlxuICovXG5cbmZ1bmN0aW9uIEJ1ZmZlciAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKCFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCAmJiAhKHRoaXMgaW5zdGFuY2VvZiBCdWZmZXIpKSB7XG4gICAgcmV0dXJuIG5ldyBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICAvLyBDb21tb24gY2FzZS5cbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZ09yT2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICAnSWYgZW5jb2RpbmcgaXMgc3BlY2lmaWVkIHRoZW4gdGhlIGZpcnN0IGFyZ3VtZW50IG11c3QgYmUgYSBzdHJpbmcnXG4gICAgICApXG4gICAgfVxuICAgIHJldHVybiBhbGxvY1Vuc2FmZSh0aGlzLCBhcmcpXG4gIH1cbiAgcmV0dXJuIGZyb20odGhpcywgYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cbkJ1ZmZlci5wb29sU2l6ZSA9IDgxOTIgLy8gbm90IHVzZWQgYnkgdGhpcyBpbXBsZW1lbnRhdGlvblxuXG4vLyBUT0RPOiBMZWdhY3ksIG5vdCBuZWVkZWQgYW55bW9yZS4gUmVtb3ZlIGluIG5leHQgbWFqb3IgdmVyc2lvbi5cbkJ1ZmZlci5fYXVnbWVudCA9IGZ1bmN0aW9uIChhcnIpIHtcbiAgYXJyLl9fcHJvdG9fXyA9IEJ1ZmZlci5wcm90b3R5cGVcbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiBmcm9tICh0aGF0LCB2YWx1ZSwgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKSB7XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJ2YWx1ZVwiIGFyZ3VtZW50IG11c3Qgbm90IGJlIGEgbnVtYmVyJylcbiAgfVxuXG4gIGlmICh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmIHZhbHVlIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpIHtcbiAgICByZXR1cm4gZnJvbUFycmF5QnVmZmVyKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG4gIH1cblxuICBpZiAodHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJykge1xuICAgIHJldHVybiBmcm9tU3RyaW5nKHRoYXQsIHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0KVxuICB9XG5cbiAgcmV0dXJuIGZyb21PYmplY3QodGhhdCwgdmFsdWUpXG59XG5cbi8qKlxuICogRnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gQnVmZmVyKGFyZywgZW5jb2RpbmcpIGJ1dCB0aHJvd3MgYSBUeXBlRXJyb3JcbiAqIGlmIHZhbHVlIGlzIGEgbnVtYmVyLlxuICogQnVmZmVyLmZyb20oc3RyWywgZW5jb2RpbmddKVxuICogQnVmZmVyLmZyb20oYXJyYXkpXG4gKiBCdWZmZXIuZnJvbShidWZmZXIpXG4gKiBCdWZmZXIuZnJvbShhcnJheUJ1ZmZlclssIGJ5dGVPZmZzZXRbLCBsZW5ndGhdXSlcbiAqKi9cbkJ1ZmZlci5mcm9tID0gZnVuY3Rpb24gKHZhbHVlLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGZyb20obnVsbCwgdmFsdWUsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aClcbn1cblxuaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gIEJ1ZmZlci5wcm90b3R5cGUuX19wcm90b19fID0gVWludDhBcnJheS5wcm90b3R5cGVcbiAgQnVmZmVyLl9fcHJvdG9fXyA9IFVpbnQ4QXJyYXlcbiAgaWYgKHR5cGVvZiBTeW1ib2wgIT09ICd1bmRlZmluZWQnICYmIFN5bWJvbC5zcGVjaWVzICYmXG4gICAgICBCdWZmZXJbU3ltYm9sLnNwZWNpZXNdID09PSBCdWZmZXIpIHtcbiAgICAvLyBGaXggc3ViYXJyYXkoKSBpbiBFUzIwMTYuIFNlZTogaHR0cHM6Ly9naXRodWIuY29tL2Zlcm9zcy9idWZmZXIvcHVsbC85N1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShCdWZmZXIsIFN5bWJvbC5zcGVjaWVzLCB7XG4gICAgICB2YWx1ZTogbnVsbCxcbiAgICAgIGNvbmZpZ3VyYWJsZTogdHJ1ZVxuICAgIH0pXG4gIH1cbn1cblxuZnVuY3Rpb24gYXNzZXJ0U2l6ZSAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH0gZWxzZSBpZiAoc2l6ZSA8IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXCJzaXplXCIgYXJndW1lbnQgbXVzdCBub3QgYmUgbmVnYXRpdmUnKVxuICB9XG59XG5cbmZ1bmN0aW9uIGFsbG9jICh0aGF0LCBzaXplLCBmaWxsLCBlbmNvZGluZykge1xuICBhc3NlcnRTaXplKHNpemUpXG4gIGlmIChzaXplIDw9IDApIHtcbiAgICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG4gIH1cbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIC8vIE9ubHkgcGF5IGF0dGVudGlvbiB0byBlbmNvZGluZyBpZiBpdCdzIGEgc3RyaW5nLiBUaGlzXG4gICAgLy8gcHJldmVudHMgYWNjaWRlbnRhbGx5IHNlbmRpbmcgaW4gYSBudW1iZXIgdGhhdCB3b3VsZFxuICAgIC8vIGJlIGludGVycHJldHRlZCBhcyBhIHN0YXJ0IG9mZnNldC5cbiAgICByZXR1cm4gdHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJ1xuICAgICAgPyBjcmVhdGVCdWZmZXIodGhhdCwgc2l6ZSkuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICAgIDogY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpLmZpbGwoZmlsbClcbiAgfVxuICByZXR1cm4gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUpXG59XG5cbi8qKlxuICogQ3JlYXRlcyBhIG5ldyBmaWxsZWQgQnVmZmVyIGluc3RhbmNlLlxuICogYWxsb2Moc2l6ZVssIGZpbGxbLCBlbmNvZGluZ11dKVxuICoqL1xuQnVmZmVyLmFsbG9jID0gZnVuY3Rpb24gKHNpemUsIGZpbGwsIGVuY29kaW5nKSB7XG4gIHJldHVybiBhbGxvYyhudWxsLCBzaXplLCBmaWxsLCBlbmNvZGluZylcbn1cblxuZnVuY3Rpb24gYWxsb2NVbnNhZmUgKHRoYXQsIHNpemUpIHtcbiAgYXNzZXJ0U2l6ZShzaXplKVxuICB0aGF0ID0gY3JlYXRlQnVmZmVyKHRoYXQsIHNpemUgPCAwID8gMCA6IGNoZWNrZWQoc2l6ZSkgfCAwKVxuICBpZiAoIUJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzaXplOyArK2kpIHtcbiAgICAgIHRoYXRbaV0gPSAwXG4gICAgfVxuICB9XG4gIHJldHVybiB0aGF0XG59XG5cbi8qKlxuICogRXF1aXZhbGVudCB0byBCdWZmZXIobnVtKSwgYnkgZGVmYXVsdCBjcmVhdGVzIGEgbm9uLXplcm8tZmlsbGVkIEJ1ZmZlciBpbnN0YW5jZS5cbiAqICovXG5CdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cbi8qKlxuICogRXF1aXZhbGVudCB0byBTbG93QnVmZmVyKG51bSksIGJ5IGRlZmF1bHQgY3JlYXRlcyBhIG5vbi16ZXJvLWZpbGxlZCBCdWZmZXIgaW5zdGFuY2UuXG4gKi9cbkJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICByZXR1cm4gYWxsb2NVbnNhZmUobnVsbCwgc2l6ZSlcbn1cblxuZnVuY3Rpb24gZnJvbVN0cmluZyAodGhhdCwgc3RyaW5nLCBlbmNvZGluZykge1xuICBpZiAodHlwZW9mIGVuY29kaW5nICE9PSAnc3RyaW5nJyB8fCBlbmNvZGluZyA9PT0gJycpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICB9XG5cbiAgaWYgKCFCdWZmZXIuaXNFbmNvZGluZyhlbmNvZGluZykpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImVuY29kaW5nXCIgbXVzdCBiZSBhIHZhbGlkIHN0cmluZyBlbmNvZGluZycpXG4gIH1cblxuICB2YXIgbGVuZ3RoID0gYnl0ZUxlbmd0aChzdHJpbmcsIGVuY29kaW5nKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG5cbiAgdmFyIGFjdHVhbCA9IHRoYXQud3JpdGUoc3RyaW5nLCBlbmNvZGluZylcblxuICBpZiAoYWN0dWFsICE9PSBsZW5ndGgpIHtcbiAgICAvLyBXcml0aW5nIGEgaGV4IHN0cmluZywgZm9yIGV4YW1wbGUsIHRoYXQgY29udGFpbnMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpbGxcbiAgICAvLyBjYXVzZSBldmVyeXRoaW5nIGFmdGVyIHRoZSBmaXJzdCBpbnZhbGlkIGNoYXJhY3RlciB0byBiZSBpZ25vcmVkLiAoZS5nLlxuICAgIC8vICdhYnh4Y2QnIHdpbGwgYmUgdHJlYXRlZCBhcyAnYWInKVxuICAgIHRoYXQgPSB0aGF0LnNsaWNlKDAsIGFjdHVhbClcbiAgfVxuXG4gIHJldHVybiB0aGF0XG59XG5cbmZ1bmN0aW9uIGZyb21BcnJheUxpa2UgKHRoYXQsIGFycmF5KSB7XG4gIHZhciBsZW5ndGggPSBhcnJheS5sZW5ndGggPCAwID8gMCA6IGNoZWNrZWQoYXJyYXkubGVuZ3RoKSB8IDBcbiAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW5ndGgpXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyBpICs9IDEpIHtcbiAgICB0aGF0W2ldID0gYXJyYXlbaV0gJiAyNTVcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tQXJyYXlCdWZmZXIgKHRoYXQsIGFycmF5LCBieXRlT2Zmc2V0LCBsZW5ndGgpIHtcbiAgYXJyYXkuYnl0ZUxlbmd0aCAvLyB0aGlzIHRocm93cyBpZiBgYXJyYXlgIGlzIG5vdCBhIHZhbGlkIEFycmF5QnVmZmVyXG5cbiAgaWYgKGJ5dGVPZmZzZXQgPCAwIHx8IGFycmF5LmJ5dGVMZW5ndGggPCBieXRlT2Zmc2V0KSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1xcJ29mZnNldFxcJyBpcyBvdXQgb2YgYm91bmRzJylcbiAgfVxuXG4gIGlmIChhcnJheS5ieXRlTGVuZ3RoIDwgYnl0ZU9mZnNldCArIChsZW5ndGggfHwgMCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignXFwnbGVuZ3RoXFwnIGlzIG91dCBvZiBib3VuZHMnKVxuICB9XG5cbiAgaWYgKGJ5dGVPZmZzZXQgPT09IHVuZGVmaW5lZCAmJiBsZW5ndGggPT09IHVuZGVmaW5lZCkge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXkpXG4gIH0gZWxzZSBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBhcnJheSA9IG5ldyBVaW50OEFycmF5KGFycmF5LCBieXRlT2Zmc2V0KVxuICB9IGVsc2Uge1xuICAgIGFycmF5ID0gbmV3IFVpbnQ4QXJyYXkoYXJyYXksIGJ5dGVPZmZzZXQsIGxlbmd0aClcbiAgfVxuXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIFJldHVybiBhbiBhdWdtZW50ZWQgYFVpbnQ4QXJyYXlgIGluc3RhbmNlLCBmb3IgYmVzdCBwZXJmb3JtYW5jZVxuICAgIHRoYXQgPSBhcnJheVxuICAgIHRoYXQuX19wcm90b19fID0gQnVmZmVyLnByb3RvdHlwZVxuICB9IGVsc2Uge1xuICAgIC8vIEZhbGxiYWNrOiBSZXR1cm4gYW4gb2JqZWN0IGluc3RhbmNlIG9mIHRoZSBCdWZmZXIgY2xhc3NcbiAgICB0aGF0ID0gZnJvbUFycmF5TGlrZSh0aGF0LCBhcnJheSlcbiAgfVxuICByZXR1cm4gdGhhdFxufVxuXG5mdW5jdGlvbiBmcm9tT2JqZWN0ICh0aGF0LCBvYmopIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihvYmopKSB7XG4gICAgdmFyIGxlbiA9IGNoZWNrZWQob2JqLmxlbmd0aCkgfCAwXG4gICAgdGhhdCA9IGNyZWF0ZUJ1ZmZlcih0aGF0LCBsZW4pXG5cbiAgICBpZiAodGhhdC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiB0aGF0XG4gICAgfVxuXG4gICAgb2JqLmNvcHkodGhhdCwgMCwgMCwgbGVuKVxuICAgIHJldHVybiB0aGF0XG4gIH1cblxuICBpZiAob2JqKSB7XG4gICAgaWYgKCh0eXBlb2YgQXJyYXlCdWZmZXIgIT09ICd1bmRlZmluZWQnICYmXG4gICAgICAgIG9iai5idWZmZXIgaW5zdGFuY2VvZiBBcnJheUJ1ZmZlcikgfHwgJ2xlbmd0aCcgaW4gb2JqKSB7XG4gICAgICBpZiAodHlwZW9mIG9iai5sZW5ndGggIT09ICdudW1iZXInIHx8IGlzbmFuKG9iai5sZW5ndGgpKSB7XG4gICAgICAgIHJldHVybiBjcmVhdGVCdWZmZXIodGhhdCwgMClcbiAgICAgIH1cbiAgICAgIHJldHVybiBmcm9tQXJyYXlMaWtlKHRoYXQsIG9iailcbiAgICB9XG5cbiAgICBpZiAob2JqLnR5cGUgPT09ICdCdWZmZXInICYmIGlzQXJyYXkob2JqLmRhdGEpKSB7XG4gICAgICByZXR1cm4gZnJvbUFycmF5TGlrZSh0aGF0LCBvYmouZGF0YSlcbiAgICB9XG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCdGaXJzdCBhcmd1bWVudCBtdXN0IGJlIGEgc3RyaW5nLCBCdWZmZXIsIEFycmF5QnVmZmVyLCBBcnJheSwgb3IgYXJyYXktbGlrZSBvYmplY3QuJylcbn1cblxuZnVuY3Rpb24gY2hlY2tlZCAobGVuZ3RoKSB7XG4gIC8vIE5vdGU6IGNhbm5vdCB1c2UgYGxlbmd0aCA8IGtNYXhMZW5ndGgoKWAgaGVyZSBiZWNhdXNlIHRoYXQgZmFpbHMgd2hlblxuICAvLyBsZW5ndGggaXMgTmFOICh3aGljaCBpcyBvdGhlcndpc2UgY29lcmNlZCB0byB6ZXJvLilcbiAgaWYgKGxlbmd0aCA+PSBrTWF4TGVuZ3RoKCkpIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQXR0ZW1wdCB0byBhbGxvY2F0ZSBCdWZmZXIgbGFyZ2VyIHRoYW4gbWF4aW11bSAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAnc2l6ZTogMHgnICsga01heExlbmd0aCgpLnRvU3RyaW5nKDE2KSArICcgYnl0ZXMnKVxuICB9XG4gIHJldHVybiBsZW5ndGggfCAwXG59XG5cbmZ1bmN0aW9uIFNsb3dCdWZmZXIgKGxlbmd0aCkge1xuICBpZiAoK2xlbmd0aCAhPSBsZW5ndGgpIHsgLy8gZXNsaW50LWRpc2FibGUtbGluZSBlcWVxZXFcbiAgICBsZW5ndGggPSAwXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlci5hbGxvYygrbGVuZ3RoKVxufVxuXG5CdWZmZXIuaXNCdWZmZXIgPSBmdW5jdGlvbiBpc0J1ZmZlciAoYikge1xuICByZXR1cm4gISEoYiAhPSBudWxsICYmIGIuX2lzQnVmZmVyKVxufVxuXG5CdWZmZXIuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKGEsIGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYSkgfHwgIUJ1ZmZlci5pc0J1ZmZlcihiKSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50cyBtdXN0IGJlIEJ1ZmZlcnMnKVxuICB9XG5cbiAgaWYgKGEgPT09IGIpIHJldHVybiAwXG5cbiAgdmFyIHggPSBhLmxlbmd0aFxuICB2YXIgeSA9IGIubGVuZ3RoXG5cbiAgZm9yICh2YXIgaSA9IDAsIGxlbiA9IE1hdGgubWluKHgsIHkpOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAoYVtpXSAhPT0gYltpXSkge1xuICAgICAgeCA9IGFbaV1cbiAgICAgIHkgPSBiW2ldXG4gICAgICBicmVha1xuICAgIH1cbiAgfVxuXG4gIGlmICh4IDwgeSkgcmV0dXJuIC0xXG4gIGlmICh5IDwgeCkgcmV0dXJuIDFcbiAgcmV0dXJuIDBcbn1cblxuQnVmZmVyLmlzRW5jb2RpbmcgPSBmdW5jdGlvbiBpc0VuY29kaW5nIChlbmNvZGluZykge1xuICBzd2l0Y2ggKFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKSkge1xuICAgIGNhc2UgJ2hleCc6XG4gICAgY2FzZSAndXRmOCc6XG4gICAgY2FzZSAndXRmLTgnOlxuICAgIGNhc2UgJ2FzY2lpJzpcbiAgICBjYXNlICdsYXRpbjEnOlxuICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgY2FzZSAnYmFzZTY0JzpcbiAgICBjYXNlICd1Y3MyJzpcbiAgICBjYXNlICd1Y3MtMic6XG4gICAgY2FzZSAndXRmMTZsZSc6XG4gICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgcmV0dXJuIHRydWVcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlXG4gIH1cbn1cblxuQnVmZmVyLmNvbmNhdCA9IGZ1bmN0aW9uIGNvbmNhdCAobGlzdCwgbGVuZ3RoKSB7XG4gIGlmICghaXNBcnJheShsaXN0KSkge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wibGlzdFwiIGFyZ3VtZW50IG11c3QgYmUgYW4gQXJyYXkgb2YgQnVmZmVycycpXG4gIH1cblxuICBpZiAobGlzdC5sZW5ndGggPT09IDApIHtcbiAgICByZXR1cm4gQnVmZmVyLmFsbG9jKDApXG4gIH1cblxuICB2YXIgaVxuICBpZiAobGVuZ3RoID09PSB1bmRlZmluZWQpIHtcbiAgICBsZW5ndGggPSAwXG4gICAgZm9yIChpID0gMDsgaSA8IGxpc3QubGVuZ3RoOyArK2kpIHtcbiAgICAgIGxlbmd0aCArPSBsaXN0W2ldLmxlbmd0aFxuICAgIH1cbiAgfVxuXG4gIHZhciBidWZmZXIgPSBCdWZmZXIuYWxsb2NVbnNhZmUobGVuZ3RoKVxuICB2YXIgcG9zID0gMFxuICBmb3IgKGkgPSAwOyBpIDwgbGlzdC5sZW5ndGg7ICsraSkge1xuICAgIHZhciBidWYgPSBsaXN0W2ldXG4gICAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYnVmKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignXCJsaXN0XCIgYXJndW1lbnQgbXVzdCBiZSBhbiBBcnJheSBvZiBCdWZmZXJzJylcbiAgICB9XG4gICAgYnVmLmNvcHkoYnVmZmVyLCBwb3MpXG4gICAgcG9zICs9IGJ1Zi5sZW5ndGhcbiAgfVxuICByZXR1cm4gYnVmZmVyXG59XG5cbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKHN0cmluZywgZW5jb2RpbmcpIHtcbiAgaWYgKEJ1ZmZlci5pc0J1ZmZlcihzdHJpbmcpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5sZW5ndGhcbiAgfVxuICBpZiAodHlwZW9mIEFycmF5QnVmZmVyICE9PSAndW5kZWZpbmVkJyAmJiB0eXBlb2YgQXJyYXlCdWZmZXIuaXNWaWV3ID09PSAnZnVuY3Rpb24nICYmXG4gICAgICAoQXJyYXlCdWZmZXIuaXNWaWV3KHN0cmluZykgfHwgc3RyaW5nIGluc3RhbmNlb2YgQXJyYXlCdWZmZXIpKSB7XG4gICAgcmV0dXJuIHN0cmluZy5ieXRlTGVuZ3RoXG4gIH1cbiAgaWYgKHR5cGVvZiBzdHJpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgc3RyaW5nID0gJycgKyBzdHJpbmdcbiAgfVxuXG4gIHZhciBsZW4gPSBzdHJpbmcubGVuZ3RoXG4gIGlmIChsZW4gPT09IDApIHJldHVybiAwXG5cbiAgLy8gVXNlIGEgZm9yIGxvb3AgdG8gYXZvaWQgcmVjdXJzaW9uXG4gIHZhciBsb3dlcmVkQ2FzZSA9IGZhbHNlXG4gIGZvciAoOzspIHtcbiAgICBzd2l0Y2ggKGVuY29kaW5nKSB7XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdsYXRpbjEnOlxuICAgICAgY2FzZSAnYmluYXJ5JzpcbiAgICAgICAgcmV0dXJuIGxlblxuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICBjYXNlIHVuZGVmaW5lZDpcbiAgICAgICAgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoXG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gbGVuICogMlxuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGxlbiA+Pj4gMVxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgcmV0dXJuIGJhc2U2NFRvQnl0ZXMoc3RyaW5nKS5sZW5ndGhcbiAgICAgIGRlZmF1bHQ6XG4gICAgICAgIGlmIChsb3dlcmVkQ2FzZSkgcmV0dXJuIHV0ZjhUb0J5dGVzKHN0cmluZykubGVuZ3RoIC8vIGFzc3VtZSB1dGY4XG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5CdWZmZXIuYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGhcblxuZnVuY3Rpb24gc2xvd1RvU3RyaW5nIChlbmNvZGluZywgc3RhcnQsIGVuZCkge1xuICB2YXIgbG93ZXJlZENhc2UgPSBmYWxzZVxuXG4gIC8vIE5vIG5lZWQgdG8gdmVyaWZ5IHRoYXQgXCJ0aGlzLmxlbmd0aCA8PSBNQVhfVUlOVDMyXCIgc2luY2UgaXQncyBhIHJlYWQtb25seVxuICAvLyBwcm9wZXJ0eSBvZiBhIHR5cGVkIGFycmF5LlxuXG4gIC8vIFRoaXMgYmVoYXZlcyBuZWl0aGVyIGxpa2UgU3RyaW5nIG5vciBVaW50OEFycmF5IGluIHRoYXQgd2Ugc2V0IHN0YXJ0L2VuZFxuICAvLyB0byB0aGVpciB1cHBlci9sb3dlciBib3VuZHMgaWYgdGhlIHZhbHVlIHBhc3NlZCBpcyBvdXQgb2YgcmFuZ2UuXG4gIC8vIHVuZGVmaW5lZCBpcyBoYW5kbGVkIHNwZWNpYWxseSBhcyBwZXIgRUNNQS0yNjIgNnRoIEVkaXRpb24sXG4gIC8vIFNlY3Rpb24gMTMuMy4zLjcgUnVudGltZSBTZW1hbnRpY3M6IEtleWVkQmluZGluZ0luaXRpYWxpemF0aW9uLlxuICBpZiAoc3RhcnQgPT09IHVuZGVmaW5lZCB8fCBzdGFydCA8IDApIHtcbiAgICBzdGFydCA9IDBcbiAgfVxuICAvLyBSZXR1cm4gZWFybHkgaWYgc3RhcnQgPiB0aGlzLmxlbmd0aC4gRG9uZSBoZXJlIHRvIHByZXZlbnQgcG90ZW50aWFsIHVpbnQzMlxuICAvLyBjb2VyY2lvbiBmYWlsIGJlbG93LlxuICBpZiAoc3RhcnQgPiB0aGlzLmxlbmd0aCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkIHx8IGVuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgZW5kID0gdGhpcy5sZW5ndGhcbiAgfVxuXG4gIGlmIChlbmQgPD0gMCkge1xuICAgIHJldHVybiAnJ1xuICB9XG5cbiAgLy8gRm9yY2UgY29lcnNpb24gdG8gdWludDMyLiBUaGlzIHdpbGwgYWxzbyBjb2VyY2UgZmFsc2V5L05hTiB2YWx1ZXMgdG8gMC5cbiAgZW5kID4+Pj0gMFxuICBzdGFydCA+Pj49IDBcblxuICBpZiAoZW5kIDw9IHN0YXJ0KSB7XG4gICAgcmV0dXJuICcnXG4gIH1cblxuICBpZiAoIWVuY29kaW5nKSBlbmNvZGluZyA9ICd1dGY4J1xuXG4gIHdoaWxlICh0cnVlKSB7XG4gICAgc3dpdGNoIChlbmNvZGluZykge1xuICAgICAgY2FzZSAnaGV4JzpcbiAgICAgICAgcmV0dXJuIGhleFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgY2FzZSAndXRmLTgnOlxuICAgICAgICByZXR1cm4gdXRmOFNsaWNlKHRoaXMsIHN0YXJ0LCBlbmQpXG5cbiAgICAgIGNhc2UgJ2FzY2lpJzpcbiAgICAgICAgcmV0dXJuIGFzY2lpU2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiBsYXRpbjFTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBjYXNlICdiYXNlNjQnOlxuICAgICAgICByZXR1cm4gYmFzZTY0U2xpY2UodGhpcywgc3RhcnQsIGVuZClcblxuICAgICAgY2FzZSAndWNzMic6XG4gICAgICBjYXNlICd1Y3MtMic6XG4gICAgICBjYXNlICd1dGYxNmxlJzpcbiAgICAgIGNhc2UgJ3V0Zi0xNmxlJzpcbiAgICAgICAgcmV0dXJuIHV0ZjE2bGVTbGljZSh0aGlzLCBzdGFydCwgZW5kKVxuXG4gICAgICBkZWZhdWx0OlxuICAgICAgICBpZiAobG93ZXJlZENhc2UpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1Vua25vd24gZW5jb2Rpbmc6ICcgKyBlbmNvZGluZylcbiAgICAgICAgZW5jb2RpbmcgPSAoZW5jb2RpbmcgKyAnJykudG9Mb3dlckNhc2UoKVxuICAgICAgICBsb3dlcmVkQ2FzZSA9IHRydWVcbiAgICB9XG4gIH1cbn1cblxuLy8gVGhlIHByb3BlcnR5IGlzIHVzZWQgYnkgYEJ1ZmZlci5pc0J1ZmZlcmAgYW5kIGBpcy1idWZmZXJgIChpbiBTYWZhcmkgNS03KSB0byBkZXRlY3Rcbi8vIEJ1ZmZlciBpbnN0YW5jZXMuXG5CdWZmZXIucHJvdG90eXBlLl9pc0J1ZmZlciA9IHRydWVcblxuZnVuY3Rpb24gc3dhcCAoYiwgbiwgbSkge1xuICB2YXIgaSA9IGJbbl1cbiAgYltuXSA9IGJbbV1cbiAgYlttXSA9IGlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zd2FwMTYgPSBmdW5jdGlvbiBzd2FwMTYgKCkge1xuICB2YXIgbGVuID0gdGhpcy5sZW5ndGhcbiAgaWYgKGxlbiAlIDIgIT09IDApIHtcbiAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignQnVmZmVyIHNpemUgbXVzdCBiZSBhIG11bHRpcGxlIG9mIDE2LWJpdHMnKVxuICB9XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpICs9IDIpIHtcbiAgICBzd2FwKHRoaXMsIGksIGkgKyAxKVxuICB9XG4gIHJldHVybiB0aGlzXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuc3dhcDMyID0gZnVuY3Rpb24gc3dhcDMyICgpIHtcbiAgdmFyIGxlbiA9IHRoaXMubGVuZ3RoXG4gIGlmIChsZW4gJSA0ICE9PSAwKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0J1ZmZlciBzaXplIG11c3QgYmUgYSBtdWx0aXBsZSBvZiAzMi1iaXRzJylcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbjsgaSArPSA0KSB7XG4gICAgc3dhcCh0aGlzLCBpLCBpICsgMylcbiAgICBzd2FwKHRoaXMsIGkgKyAxLCBpICsgMilcbiAgfVxuICByZXR1cm4gdGhpc1xufVxuXG5CdWZmZXIucHJvdG90eXBlLnN3YXA2NCA9IGZ1bmN0aW9uIHN3YXA2NCAoKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBpZiAobGVuICUgOCAhPT0gMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdCdWZmZXIgc2l6ZSBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNjQtYml0cycpXG4gIH1cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47IGkgKz0gOCkge1xuICAgIHN3YXAodGhpcywgaSwgaSArIDcpXG4gICAgc3dhcCh0aGlzLCBpICsgMSwgaSArIDYpXG4gICAgc3dhcCh0aGlzLCBpICsgMiwgaSArIDUpXG4gICAgc3dhcCh0aGlzLCBpICsgMywgaSArIDQpXG4gIH1cbiAgcmV0dXJuIHRoaXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS50b1N0cmluZyA9IGZ1bmN0aW9uIHRvU3RyaW5nICgpIHtcbiAgdmFyIGxlbmd0aCA9IHRoaXMubGVuZ3RoIHwgMFxuICBpZiAobGVuZ3RoID09PSAwKSByZXR1cm4gJydcbiAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHJldHVybiB1dGY4U2xpY2UodGhpcywgMCwgbGVuZ3RoKVxuICByZXR1cm4gc2xvd1RvU3RyaW5nLmFwcGx5KHRoaXMsIGFyZ3VtZW50cylcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5lcXVhbHMgPSBmdW5jdGlvbiBlcXVhbHMgKGIpIHtcbiAgaWYgKCFCdWZmZXIuaXNCdWZmZXIoYikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBCdWZmZXInKVxuICBpZiAodGhpcyA9PT0gYikgcmV0dXJuIHRydWVcbiAgcmV0dXJuIEJ1ZmZlci5jb21wYXJlKHRoaXMsIGIpID09PSAwXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuaW5zcGVjdCA9IGZ1bmN0aW9uIGluc3BlY3QgKCkge1xuICB2YXIgc3RyID0gJydcbiAgdmFyIG1heCA9IGV4cG9ydHMuSU5TUEVDVF9NQVhfQllURVNcbiAgaWYgKHRoaXMubGVuZ3RoID4gMCkge1xuICAgIHN0ciA9IHRoaXMudG9TdHJpbmcoJ2hleCcsIDAsIG1heCkubWF0Y2goLy57Mn0vZykuam9pbignICcpXG4gICAgaWYgKHRoaXMubGVuZ3RoID4gbWF4KSBzdHIgKz0gJyAuLi4gJ1xuICB9XG4gIHJldHVybiAnPEJ1ZmZlciAnICsgc3RyICsgJz4nXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUuY29tcGFyZSA9IGZ1bmN0aW9uIGNvbXBhcmUgKHRhcmdldCwgc3RhcnQsIGVuZCwgdGhpc1N0YXJ0LCB0aGlzRW5kKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKHRhcmdldCkpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgQnVmZmVyJylcbiAgfVxuXG4gIGlmIChzdGFydCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgc3RhcnQgPSAwXG4gIH1cbiAgaWYgKGVuZCA9PT0gdW5kZWZpbmVkKSB7XG4gICAgZW5kID0gdGFyZ2V0ID8gdGFyZ2V0Lmxlbmd0aCA6IDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID09PSB1bmRlZmluZWQpIHtcbiAgICB0aGlzU3RhcnQgPSAwXG4gIH1cbiAgaWYgKHRoaXNFbmQgPT09IHVuZGVmaW5lZCkge1xuICAgIHRoaXNFbmQgPSB0aGlzLmxlbmd0aFxuICB9XG5cbiAgaWYgKHN0YXJ0IDwgMCB8fCBlbmQgPiB0YXJnZXQubGVuZ3RoIHx8IHRoaXNTdGFydCA8IDAgfHwgdGhpc0VuZCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ291dCBvZiByYW5nZSBpbmRleCcpXG4gIH1cblxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQgJiYgc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDBcbiAgfVxuICBpZiAodGhpc1N0YXJ0ID49IHRoaXNFbmQpIHtcbiAgICByZXR1cm4gLTFcbiAgfVxuICBpZiAoc3RhcnQgPj0gZW5kKSB7XG4gICAgcmV0dXJuIDFcbiAgfVxuXG4gIHN0YXJ0ID4+Pj0gMFxuICBlbmQgPj4+PSAwXG4gIHRoaXNTdGFydCA+Pj49IDBcbiAgdGhpc0VuZCA+Pj49IDBcblxuICBpZiAodGhpcyA9PT0gdGFyZ2V0KSByZXR1cm4gMFxuXG4gIHZhciB4ID0gdGhpc0VuZCAtIHRoaXNTdGFydFxuICB2YXIgeSA9IGVuZCAtIHN0YXJ0XG4gIHZhciBsZW4gPSBNYXRoLm1pbih4LCB5KVxuXG4gIHZhciB0aGlzQ29weSA9IHRoaXMuc2xpY2UodGhpc1N0YXJ0LCB0aGlzRW5kKVxuICB2YXIgdGFyZ2V0Q29weSA9IHRhcmdldC5zbGljZShzdGFydCwgZW5kKVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICBpZiAodGhpc0NvcHlbaV0gIT09IHRhcmdldENvcHlbaV0pIHtcbiAgICAgIHggPSB0aGlzQ29weVtpXVxuICAgICAgeSA9IHRhcmdldENvcHlbaV1cbiAgICAgIGJyZWFrXG4gICAgfVxuICB9XG5cbiAgaWYgKHggPCB5KSByZXR1cm4gLTFcbiAgaWYgKHkgPCB4KSByZXR1cm4gMVxuICByZXR1cm4gMFxufVxuXG4vLyBGaW5kcyBlaXRoZXIgdGhlIGZpcnN0IGluZGV4IG9mIGB2YWxgIGluIGBidWZmZXJgIGF0IG9mZnNldCA+PSBgYnl0ZU9mZnNldGAsXG4vLyBPUiB0aGUgbGFzdCBpbmRleCBvZiBgdmFsYCBpbiBgYnVmZmVyYCBhdCBvZmZzZXQgPD0gYGJ5dGVPZmZzZXRgLlxuLy9cbi8vIEFyZ3VtZW50czpcbi8vIC0gYnVmZmVyIC0gYSBCdWZmZXIgdG8gc2VhcmNoXG4vLyAtIHZhbCAtIGEgc3RyaW5nLCBCdWZmZXIsIG9yIG51bWJlclxuLy8gLSBieXRlT2Zmc2V0IC0gYW4gaW5kZXggaW50byBgYnVmZmVyYDsgd2lsbCBiZSBjbGFtcGVkIHRvIGFuIGludDMyXG4vLyAtIGVuY29kaW5nIC0gYW4gb3B0aW9uYWwgZW5jb2RpbmcsIHJlbGV2YW50IGlzIHZhbCBpcyBhIHN0cmluZ1xuLy8gLSBkaXIgLSB0cnVlIGZvciBpbmRleE9mLCBmYWxzZSBmb3IgbGFzdEluZGV4T2ZcbmZ1bmN0aW9uIGJpZGlyZWN0aW9uYWxJbmRleE9mIChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcsIGRpcikge1xuICAvLyBFbXB0eSBidWZmZXIgbWVhbnMgbm8gbWF0Y2hcbiAgaWYgKGJ1ZmZlci5sZW5ndGggPT09IDApIHJldHVybiAtMVxuXG4gIC8vIE5vcm1hbGl6ZSBieXRlT2Zmc2V0XG4gIGlmICh0eXBlb2YgYnl0ZU9mZnNldCA9PT0gJ3N0cmluZycpIHtcbiAgICBlbmNvZGluZyA9IGJ5dGVPZmZzZXRcbiAgICBieXRlT2Zmc2V0ID0gMFxuICB9IGVsc2UgaWYgKGJ5dGVPZmZzZXQgPiAweDdmZmZmZmZmKSB7XG4gICAgYnl0ZU9mZnNldCA9IDB4N2ZmZmZmZmZcbiAgfSBlbHNlIGlmIChieXRlT2Zmc2V0IDwgLTB4ODAwMDAwMDApIHtcbiAgICBieXRlT2Zmc2V0ID0gLTB4ODAwMDAwMDBcbiAgfVxuICBieXRlT2Zmc2V0ID0gK2J5dGVPZmZzZXQgIC8vIENvZXJjZSB0byBOdW1iZXIuXG4gIGlmIChpc05hTihieXRlT2Zmc2V0KSkge1xuICAgIC8vIGJ5dGVPZmZzZXQ6IGl0IGl0J3MgdW5kZWZpbmVkLCBudWxsLCBOYU4sIFwiZm9vXCIsIGV0Yywgc2VhcmNoIHdob2xlIGJ1ZmZlclxuICAgIGJ5dGVPZmZzZXQgPSBkaXIgPyAwIDogKGJ1ZmZlci5sZW5ndGggLSAxKVxuICB9XG5cbiAgLy8gTm9ybWFsaXplIGJ5dGVPZmZzZXQ6IG5lZ2F0aXZlIG9mZnNldHMgc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBidWZmZXJcbiAgaWYgKGJ5dGVPZmZzZXQgPCAwKSBieXRlT2Zmc2V0ID0gYnVmZmVyLmxlbmd0aCArIGJ5dGVPZmZzZXRcbiAgaWYgKGJ5dGVPZmZzZXQgPj0gYnVmZmVyLmxlbmd0aCkge1xuICAgIGlmIChkaXIpIHJldHVybiAtMVxuICAgIGVsc2UgYnl0ZU9mZnNldCA9IGJ1ZmZlci5sZW5ndGggLSAxXG4gIH0gZWxzZSBpZiAoYnl0ZU9mZnNldCA8IDApIHtcbiAgICBpZiAoZGlyKSBieXRlT2Zmc2V0ID0gMFxuICAgIGVsc2UgcmV0dXJuIC0xXG4gIH1cblxuICAvLyBOb3JtYWxpemUgdmFsXG4gIGlmICh0eXBlb2YgdmFsID09PSAnc3RyaW5nJykge1xuICAgIHZhbCA9IEJ1ZmZlci5mcm9tKHZhbCwgZW5jb2RpbmcpXG4gIH1cblxuICAvLyBGaW5hbGx5LCBzZWFyY2ggZWl0aGVyIGluZGV4T2YgKGlmIGRpciBpcyB0cnVlKSBvciBsYXN0SW5kZXhPZlxuICBpZiAoQnVmZmVyLmlzQnVmZmVyKHZhbCkpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2U6IGxvb2tpbmcgZm9yIGVtcHR5IHN0cmluZy9idWZmZXIgYWx3YXlzIGZhaWxzXG4gICAgaWYgKHZhbC5sZW5ndGggPT09IDApIHtcbiAgICAgIHJldHVybiAtMVxuICAgIH1cbiAgICByZXR1cm4gYXJyYXlJbmRleE9mKGJ1ZmZlciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKVxuICB9IGVsc2UgaWYgKHR5cGVvZiB2YWwgPT09ICdudW1iZXInKSB7XG4gICAgdmFsID0gdmFsICYgMHhGRiAvLyBTZWFyY2ggZm9yIGEgYnl0ZSB2YWx1ZSBbMC0yNTVdXG4gICAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUICYmXG4gICAgICAgIHR5cGVvZiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBpZiAoZGlyKSB7XG4gICAgICAgIHJldHVybiBVaW50OEFycmF5LnByb3RvdHlwZS5pbmRleE9mLmNhbGwoYnVmZmVyLCB2YWwsIGJ5dGVPZmZzZXQpXG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gVWludDhBcnJheS5wcm90b3R5cGUubGFzdEluZGV4T2YuY2FsbChidWZmZXIsIHZhbCwgYnl0ZU9mZnNldClcbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGFycmF5SW5kZXhPZihidWZmZXIsIFsgdmFsIF0sIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBkaXIpXG4gIH1cblxuICB0aHJvdyBuZXcgVHlwZUVycm9yKCd2YWwgbXVzdCBiZSBzdHJpbmcsIG51bWJlciBvciBCdWZmZXInKVxufVxuXG5mdW5jdGlvbiBhcnJheUluZGV4T2YgKGFyciwgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgZGlyKSB7XG4gIHZhciBpbmRleFNpemUgPSAxXG4gIHZhciBhcnJMZW5ndGggPSBhcnIubGVuZ3RoXG4gIHZhciB2YWxMZW5ndGggPSB2YWwubGVuZ3RoXG5cbiAgaWYgKGVuY29kaW5nICE9PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9IFN0cmluZyhlbmNvZGluZykudG9Mb3dlckNhc2UoKVxuICAgIGlmIChlbmNvZGluZyA9PT0gJ3VjczInIHx8IGVuY29kaW5nID09PSAndWNzLTInIHx8XG4gICAgICAgIGVuY29kaW5nID09PSAndXRmMTZsZScgfHwgZW5jb2RpbmcgPT09ICd1dGYtMTZsZScpIHtcbiAgICAgIGlmIChhcnIubGVuZ3RoIDwgMiB8fCB2YWwubGVuZ3RoIDwgMikge1xuICAgICAgICByZXR1cm4gLTFcbiAgICAgIH1cbiAgICAgIGluZGV4U2l6ZSA9IDJcbiAgICAgIGFyckxlbmd0aCAvPSAyXG4gICAgICB2YWxMZW5ndGggLz0gMlxuICAgICAgYnl0ZU9mZnNldCAvPSAyXG4gICAgfVxuICB9XG5cbiAgZnVuY3Rpb24gcmVhZCAoYnVmLCBpKSB7XG4gICAgaWYgKGluZGV4U2l6ZSA9PT0gMSkge1xuICAgICAgcmV0dXJuIGJ1ZltpXVxuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gYnVmLnJlYWRVSW50MTZCRShpICogaW5kZXhTaXplKVxuICAgIH1cbiAgfVxuXG4gIHZhciBpXG4gIGlmIChkaXIpIHtcbiAgICB2YXIgZm91bmRJbmRleCA9IC0xXG4gICAgZm9yIChpID0gYnl0ZU9mZnNldDsgaSA8IGFyckxlbmd0aDsgaSsrKSB7XG4gICAgICBpZiAocmVhZChhcnIsIGkpID09PSByZWFkKHZhbCwgZm91bmRJbmRleCA9PT0gLTEgPyAwIDogaSAtIGZvdW5kSW5kZXgpKSB7XG4gICAgICAgIGlmIChmb3VuZEluZGV4ID09PSAtMSkgZm91bmRJbmRleCA9IGlcbiAgICAgICAgaWYgKGkgLSBmb3VuZEluZGV4ICsgMSA9PT0gdmFsTGVuZ3RoKSByZXR1cm4gZm91bmRJbmRleCAqIGluZGV4U2l6ZVxuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaWYgKGZvdW5kSW5kZXggIT09IC0xKSBpIC09IGkgLSBmb3VuZEluZGV4XG4gICAgICAgIGZvdW5kSW5kZXggPSAtMVxuICAgICAgfVxuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBpZiAoYnl0ZU9mZnNldCArIHZhbExlbmd0aCA+IGFyckxlbmd0aCkgYnl0ZU9mZnNldCA9IGFyckxlbmd0aCAtIHZhbExlbmd0aFxuICAgIGZvciAoaSA9IGJ5dGVPZmZzZXQ7IGkgPj0gMDsgaS0tKSB7XG4gICAgICB2YXIgZm91bmQgPSB0cnVlXG4gICAgICBmb3IgKHZhciBqID0gMDsgaiA8IHZhbExlbmd0aDsgaisrKSB7XG4gICAgICAgIGlmIChyZWFkKGFyciwgaSArIGopICE9PSByZWFkKHZhbCwgaikpIHtcbiAgICAgICAgICBmb3VuZCA9IGZhbHNlXG4gICAgICAgICAgYnJlYWtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgaWYgKGZvdW5kKSByZXR1cm4gaVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiAtMVxufVxuXG5CdWZmZXIucHJvdG90eXBlLmluY2x1ZGVzID0gZnVuY3Rpb24gaW5jbHVkZXMgKHZhbCwgYnl0ZU9mZnNldCwgZW5jb2RpbmcpIHtcbiAgcmV0dXJuIHRoaXMuaW5kZXhPZih2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSAhPT0gLTFcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5pbmRleE9mID0gZnVuY3Rpb24gaW5kZXhPZiAodmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZykge1xuICByZXR1cm4gYmlkaXJlY3Rpb25hbEluZGV4T2YodGhpcywgdmFsLCBieXRlT2Zmc2V0LCBlbmNvZGluZywgdHJ1ZSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5sYXN0SW5kZXhPZiA9IGZ1bmN0aW9uIGxhc3RJbmRleE9mICh2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nKSB7XG4gIHJldHVybiBiaWRpcmVjdGlvbmFsSW5kZXhPZih0aGlzLCB2YWwsIGJ5dGVPZmZzZXQsIGVuY29kaW5nLCBmYWxzZSlcbn1cblxuZnVuY3Rpb24gaGV4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICBvZmZzZXQgPSBOdW1iZXIob2Zmc2V0KSB8fCAwXG4gIHZhciByZW1haW5pbmcgPSBidWYubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmICghbGVuZ3RoKSB7XG4gICAgbGVuZ3RoID0gcmVtYWluaW5nXG4gIH0gZWxzZSB7XG4gICAgbGVuZ3RoID0gTnVtYmVyKGxlbmd0aClcbiAgICBpZiAobGVuZ3RoID4gcmVtYWluaW5nKSB7XG4gICAgICBsZW5ndGggPSByZW1haW5pbmdcbiAgICB9XG4gIH1cblxuICAvLyBtdXN0IGJlIGFuIGV2ZW4gbnVtYmVyIG9mIGRpZ2l0c1xuICB2YXIgc3RyTGVuID0gc3RyaW5nLmxlbmd0aFxuICBpZiAoc3RyTGVuICUgMiAhPT0gMCkgdGhyb3cgbmV3IFR5cGVFcnJvcignSW52YWxpZCBoZXggc3RyaW5nJylcblxuICBpZiAobGVuZ3RoID4gc3RyTGVuIC8gMikge1xuICAgIGxlbmd0aCA9IHN0ckxlbiAvIDJcbiAgfVxuICBmb3IgKHZhciBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7XG4gICAgdmFyIHBhcnNlZCA9IHBhcnNlSW50KHN0cmluZy5zdWJzdHIoaSAqIDIsIDIpLCAxNilcbiAgICBpZiAoaXNOYU4ocGFyc2VkKSkgcmV0dXJuIGlcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSBwYXJzZWRcbiAgfVxuICByZXR1cm4gaVxufVxuXG5mdW5jdGlvbiB1dGY4V3JpdGUgKGJ1Ziwgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gYmxpdEJ1ZmZlcih1dGY4VG9CeXRlcyhzdHJpbmcsIGJ1Zi5sZW5ndGggLSBvZmZzZXQpLCBidWYsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBhc2NpaVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIoYXNjaWlUb0J5dGVzKHN0cmluZyksIGJ1Ziwgb2Zmc2V0LCBsZW5ndGgpXG59XG5cbmZ1bmN0aW9uIGxhdGluMVdyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGFzY2lpV3JpdGUoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxufVxuXG5mdW5jdGlvbiBiYXNlNjRXcml0ZSAoYnVmLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIHJldHVybiBibGl0QnVmZmVyKGJhc2U2NFRvQnl0ZXMoc3RyaW5nKSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuZnVuY3Rpb24gdWNzMldyaXRlIChidWYsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpIHtcbiAgcmV0dXJuIGJsaXRCdWZmZXIodXRmMTZsZVRvQnl0ZXMoc3RyaW5nLCBidWYubGVuZ3RoIC0gb2Zmc2V0KSwgYnVmLCBvZmZzZXQsIGxlbmd0aClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIHdyaXRlIChzdHJpbmcsIG9mZnNldCwgbGVuZ3RoLCBlbmNvZGluZykge1xuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nKVxuICBpZiAob2Zmc2V0ID09PSB1bmRlZmluZWQpIHtcbiAgICBlbmNvZGluZyA9ICd1dGY4J1xuICAgIGxlbmd0aCA9IHRoaXMubGVuZ3RoXG4gICAgb2Zmc2V0ID0gMFxuICAvLyBCdWZmZXIjd3JpdGUoc3RyaW5nLCBlbmNvZGluZylcbiAgfSBlbHNlIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygb2Zmc2V0ID09PSAnc3RyaW5nJykge1xuICAgIGVuY29kaW5nID0gb2Zmc2V0XG4gICAgbGVuZ3RoID0gdGhpcy5sZW5ndGhcbiAgICBvZmZzZXQgPSAwXG4gIC8vIEJ1ZmZlciN3cml0ZShzdHJpbmcsIG9mZnNldFssIGxlbmd0aF1bLCBlbmNvZGluZ10pXG4gIH0gZWxzZSBpZiAoaXNGaW5pdGUob2Zmc2V0KSkge1xuICAgIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgICBpZiAoaXNGaW5pdGUobGVuZ3RoKSkge1xuICAgICAgbGVuZ3RoID0gbGVuZ3RoIHwgMFxuICAgICAgaWYgKGVuY29kaW5nID09PSB1bmRlZmluZWQpIGVuY29kaW5nID0gJ3V0ZjgnXG4gICAgfSBlbHNlIHtcbiAgICAgIGVuY29kaW5nID0gbGVuZ3RoXG4gICAgICBsZW5ndGggPSB1bmRlZmluZWRcbiAgICB9XG4gIC8vIGxlZ2FjeSB3cml0ZShzdHJpbmcsIGVuY29kaW5nLCBvZmZzZXQsIGxlbmd0aCkgLSByZW1vdmUgaW4gdjAuMTNcbiAgfSBlbHNlIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnQnVmZmVyLndyaXRlKHN0cmluZywgZW5jb2RpbmcsIG9mZnNldFssIGxlbmd0aF0pIGlzIG5vIGxvbmdlciBzdXBwb3J0ZWQnXG4gICAgKVxuICB9XG5cbiAgdmFyIHJlbWFpbmluZyA9IHRoaXMubGVuZ3RoIC0gb2Zmc2V0XG4gIGlmIChsZW5ndGggPT09IHVuZGVmaW5lZCB8fCBsZW5ndGggPiByZW1haW5pbmcpIGxlbmd0aCA9IHJlbWFpbmluZ1xuXG4gIGlmICgoc3RyaW5nLmxlbmd0aCA+IDAgJiYgKGxlbmd0aCA8IDAgfHwgb2Zmc2V0IDwgMCkpIHx8IG9mZnNldCA+IHRoaXMubGVuZ3RoKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ0F0dGVtcHQgdG8gd3JpdGUgb3V0c2lkZSBidWZmZXIgYm91bmRzJylcbiAgfVxuXG4gIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gJ3V0ZjgnXG5cbiAgdmFyIGxvd2VyZWRDYXNlID0gZmFsc2VcbiAgZm9yICg7Oykge1xuICAgIHN3aXRjaCAoZW5jb2RpbmcpIHtcbiAgICAgIGNhc2UgJ2hleCc6XG4gICAgICAgIHJldHVybiBoZXhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICd1dGY4JzpcbiAgICAgIGNhc2UgJ3V0Zi04JzpcbiAgICAgICAgcmV0dXJuIHV0ZjhXcml0ZSh0aGlzLCBzdHJpbmcsIG9mZnNldCwgbGVuZ3RoKVxuXG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICAgIHJldHVybiBhc2NpaVdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ2xhdGluMSc6XG4gICAgICBjYXNlICdiaW5hcnknOlxuICAgICAgICByZXR1cm4gbGF0aW4xV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgY2FzZSAnYmFzZTY0JzpcbiAgICAgICAgLy8gV2FybmluZzogbWF4TGVuZ3RoIG5vdCB0YWtlbiBpbnRvIGFjY291bnQgaW4gYmFzZTY0V3JpdGVcbiAgICAgICAgcmV0dXJuIGJhc2U2NFdyaXRlKHRoaXMsIHN0cmluZywgb2Zmc2V0LCBsZW5ndGgpXG5cbiAgICAgIGNhc2UgJ3VjczInOlxuICAgICAgY2FzZSAndWNzLTInOlxuICAgICAgY2FzZSAndXRmMTZsZSc6XG4gICAgICBjYXNlICd1dGYtMTZsZSc6XG4gICAgICAgIHJldHVybiB1Y3MyV3JpdGUodGhpcywgc3RyaW5nLCBvZmZzZXQsIGxlbmd0aClcblxuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKGxvd2VyZWRDYXNlKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpXG4gICAgICAgIGVuY29kaW5nID0gKCcnICsgZW5jb2RpbmcpLnRvTG93ZXJDYXNlKClcbiAgICAgICAgbG93ZXJlZENhc2UgPSB0cnVlXG4gICAgfVxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUudG9KU09OID0gZnVuY3Rpb24gdG9KU09OICgpIHtcbiAgcmV0dXJuIHtcbiAgICB0eXBlOiAnQnVmZmVyJyxcbiAgICBkYXRhOiBBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbCh0aGlzLl9hcnIgfHwgdGhpcywgMClcbiAgfVxufVxuXG5mdW5jdGlvbiBiYXNlNjRTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIGlmIChzdGFydCA9PT0gMCAmJiBlbmQgPT09IGJ1Zi5sZW5ndGgpIHtcbiAgICByZXR1cm4gYmFzZTY0LmZyb21CeXRlQXJyYXkoYnVmKVxuICB9IGVsc2Uge1xuICAgIHJldHVybiBiYXNlNjQuZnJvbUJ5dGVBcnJheShidWYuc2xpY2Uoc3RhcnQsIGVuZCkpXG4gIH1cbn1cblxuZnVuY3Rpb24gdXRmOFNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgZW5kID0gTWF0aC5taW4oYnVmLmxlbmd0aCwgZW5kKVxuICB2YXIgcmVzID0gW11cblxuICB2YXIgaSA9IHN0YXJ0XG4gIHdoaWxlIChpIDwgZW5kKSB7XG4gICAgdmFyIGZpcnN0Qnl0ZSA9IGJ1ZltpXVxuICAgIHZhciBjb2RlUG9pbnQgPSBudWxsXG4gICAgdmFyIGJ5dGVzUGVyU2VxdWVuY2UgPSAoZmlyc3RCeXRlID4gMHhFRikgPyA0XG4gICAgICA6IChmaXJzdEJ5dGUgPiAweERGKSA/IDNcbiAgICAgIDogKGZpcnN0Qnl0ZSA+IDB4QkYpID8gMlxuICAgICAgOiAxXG5cbiAgICBpZiAoaSArIGJ5dGVzUGVyU2VxdWVuY2UgPD0gZW5kKSB7XG4gICAgICB2YXIgc2Vjb25kQnl0ZSwgdGhpcmRCeXRlLCBmb3VydGhCeXRlLCB0ZW1wQ29kZVBvaW50XG5cbiAgICAgIHN3aXRjaCAoYnl0ZXNQZXJTZXF1ZW5jZSkge1xuICAgICAgICBjYXNlIDE6XG4gICAgICAgICAgaWYgKGZpcnN0Qnl0ZSA8IDB4ODApIHtcbiAgICAgICAgICAgIGNvZGVQb2ludCA9IGZpcnN0Qnl0ZVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDI6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweDFGKSA8PCAweDYgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4N0YpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDM6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgaWYgKChzZWNvbmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKHRoaXJkQnl0ZSAmIDB4QzApID09PSAweDgwKSB7XG4gICAgICAgICAgICB0ZW1wQ29kZVBvaW50ID0gKGZpcnN0Qnl0ZSAmIDB4RikgPDwgMHhDIHwgKHNlY29uZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAodGhpcmRCeXRlICYgMHgzRilcbiAgICAgICAgICAgIGlmICh0ZW1wQ29kZVBvaW50ID4gMHg3RkYgJiYgKHRlbXBDb2RlUG9pbnQgPCAweEQ4MDAgfHwgdGVtcENvZGVQb2ludCA+IDB4REZGRikpIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgICBicmVha1xuICAgICAgICBjYXNlIDQ6XG4gICAgICAgICAgc2Vjb25kQnl0ZSA9IGJ1ZltpICsgMV1cbiAgICAgICAgICB0aGlyZEJ5dGUgPSBidWZbaSArIDJdXG4gICAgICAgICAgZm91cnRoQnl0ZSA9IGJ1ZltpICsgM11cbiAgICAgICAgICBpZiAoKHNlY29uZEJ5dGUgJiAweEMwKSA9PT0gMHg4MCAmJiAodGhpcmRCeXRlICYgMHhDMCkgPT09IDB4ODAgJiYgKGZvdXJ0aEJ5dGUgJiAweEMwKSA9PT0gMHg4MCkge1xuICAgICAgICAgICAgdGVtcENvZGVQb2ludCA9IChmaXJzdEJ5dGUgJiAweEYpIDw8IDB4MTIgfCAoc2Vjb25kQnl0ZSAmIDB4M0YpIDw8IDB4QyB8ICh0aGlyZEJ5dGUgJiAweDNGKSA8PCAweDYgfCAoZm91cnRoQnl0ZSAmIDB4M0YpXG4gICAgICAgICAgICBpZiAodGVtcENvZGVQb2ludCA+IDB4RkZGRiAmJiB0ZW1wQ29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgICAgICAgICAgY29kZVBvaW50ID0gdGVtcENvZGVQb2ludFxuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAoY29kZVBvaW50ID09PSBudWxsKSB7XG4gICAgICAvLyB3ZSBkaWQgbm90IGdlbmVyYXRlIGEgdmFsaWQgY29kZVBvaW50IHNvIGluc2VydCBhXG4gICAgICAvLyByZXBsYWNlbWVudCBjaGFyIChVK0ZGRkQpIGFuZCBhZHZhbmNlIG9ubHkgMSBieXRlXG4gICAgICBjb2RlUG9pbnQgPSAweEZGRkRcbiAgICAgIGJ5dGVzUGVyU2VxdWVuY2UgPSAxXG4gICAgfSBlbHNlIGlmIChjb2RlUG9pbnQgPiAweEZGRkYpIHtcbiAgICAgIC8vIGVuY29kZSB0byB1dGYxNiAoc3Vycm9nYXRlIHBhaXIgZGFuY2UpXG4gICAgICBjb2RlUG9pbnQgLT0gMHgxMDAwMFxuICAgICAgcmVzLnB1c2goY29kZVBvaW50ID4+PiAxMCAmIDB4M0ZGIHwgMHhEODAwKVxuICAgICAgY29kZVBvaW50ID0gMHhEQzAwIHwgY29kZVBvaW50ICYgMHgzRkZcbiAgICB9XG5cbiAgICByZXMucHVzaChjb2RlUG9pbnQpXG4gICAgaSArPSBieXRlc1BlclNlcXVlbmNlXG4gIH1cblxuICByZXR1cm4gZGVjb2RlQ29kZVBvaW50c0FycmF5KHJlcylcbn1cblxuLy8gQmFzZWQgb24gaHR0cDovL3N0YWNrb3ZlcmZsb3cuY29tL2EvMjI3NDcyNzIvNjgwNzQyLCB0aGUgYnJvd3NlciB3aXRoXG4vLyB0aGUgbG93ZXN0IGxpbWl0IGlzIENocm9tZSwgd2l0aCAweDEwMDAwIGFyZ3MuXG4vLyBXZSBnbyAxIG1hZ25pdHVkZSBsZXNzLCBmb3Igc2FmZXR5XG52YXIgTUFYX0FSR1VNRU5UU19MRU5HVEggPSAweDEwMDBcblxuZnVuY3Rpb24gZGVjb2RlQ29kZVBvaW50c0FycmF5IChjb2RlUG9pbnRzKSB7XG4gIHZhciBsZW4gPSBjb2RlUG9pbnRzLmxlbmd0aFxuICBpZiAobGVuIDw9IE1BWF9BUkdVTUVOVFNfTEVOR1RIKSB7XG4gICAgcmV0dXJuIFN0cmluZy5mcm9tQ2hhckNvZGUuYXBwbHkoU3RyaW5nLCBjb2RlUG9pbnRzKSAvLyBhdm9pZCBleHRyYSBzbGljZSgpXG4gIH1cblxuICAvLyBEZWNvZGUgaW4gY2h1bmtzIHRvIGF2b2lkIFwiY2FsbCBzdGFjayBzaXplIGV4Y2VlZGVkXCIuXG4gIHZhciByZXMgPSAnJ1xuICB2YXIgaSA9IDBcbiAgd2hpbGUgKGkgPCBsZW4pIHtcbiAgICByZXMgKz0gU3RyaW5nLmZyb21DaGFyQ29kZS5hcHBseShcbiAgICAgIFN0cmluZyxcbiAgICAgIGNvZGVQb2ludHMuc2xpY2UoaSwgaSArPSBNQVhfQVJHVU1FTlRTX0xFTkdUSClcbiAgICApXG4gIH1cbiAgcmV0dXJuIHJlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVNsaWNlIChidWYsIHN0YXJ0LCBlbmQpIHtcbiAgdmFyIHJldCA9ICcnXG4gIGVuZCA9IE1hdGgubWluKGJ1Zi5sZW5ndGgsIGVuZClcblxuICBmb3IgKHZhciBpID0gc3RhcnQ7IGkgPCBlbmQ7ICsraSkge1xuICAgIHJldCArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZltpXSAmIDB4N0YpXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBsYXRpbjFTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciByZXQgPSAnJ1xuICBlbmQgPSBNYXRoLm1pbihidWYubGVuZ3RoLCBlbmQpXG5cbiAgZm9yICh2YXIgaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICByZXQgKz0gU3RyaW5nLmZyb21DaGFyQ29kZShidWZbaV0pXG4gIH1cbiAgcmV0dXJuIHJldFxufVxuXG5mdW5jdGlvbiBoZXhTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSBidWYubGVuZ3RoXG5cbiAgaWYgKCFzdGFydCB8fCBzdGFydCA8IDApIHN0YXJ0ID0gMFxuICBpZiAoIWVuZCB8fCBlbmQgPCAwIHx8IGVuZCA+IGxlbikgZW5kID0gbGVuXG5cbiAgdmFyIG91dCA9ICcnXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgKytpKSB7XG4gICAgb3V0ICs9IHRvSGV4KGJ1ZltpXSlcbiAgfVxuICByZXR1cm4gb3V0XG59XG5cbmZ1bmN0aW9uIHV0ZjE2bGVTbGljZSAoYnVmLCBzdGFydCwgZW5kKSB7XG4gIHZhciBieXRlcyA9IGJ1Zi5zbGljZShzdGFydCwgZW5kKVxuICB2YXIgcmVzID0gJydcbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBieXRlcy5sZW5ndGg7IGkgKz0gMikge1xuICAgIHJlcyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKGJ5dGVzW2ldICsgYnl0ZXNbaSArIDFdICogMjU2KVxuICB9XG4gIHJldHVybiByZXNcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5zbGljZSA9IGZ1bmN0aW9uIHNsaWNlIChzdGFydCwgZW5kKSB7XG4gIHZhciBsZW4gPSB0aGlzLmxlbmd0aFxuICBzdGFydCA9IH5+c3RhcnRcbiAgZW5kID0gZW5kID09PSB1bmRlZmluZWQgPyBsZW4gOiB+fmVuZFxuXG4gIGlmIChzdGFydCA8IDApIHtcbiAgICBzdGFydCArPSBsZW5cbiAgICBpZiAoc3RhcnQgPCAwKSBzdGFydCA9IDBcbiAgfSBlbHNlIGlmIChzdGFydCA+IGxlbikge1xuICAgIHN0YXJ0ID0gbGVuXG4gIH1cblxuICBpZiAoZW5kIDwgMCkge1xuICAgIGVuZCArPSBsZW5cbiAgICBpZiAoZW5kIDwgMCkgZW5kID0gMFxuICB9IGVsc2UgaWYgKGVuZCA+IGxlbikge1xuICAgIGVuZCA9IGxlblxuICB9XG5cbiAgaWYgKGVuZCA8IHN0YXJ0KSBlbmQgPSBzdGFydFxuXG4gIHZhciBuZXdCdWZcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgbmV3QnVmID0gdGhpcy5zdWJhcnJheShzdGFydCwgZW5kKVxuICAgIG5ld0J1Zi5fX3Byb3RvX18gPSBCdWZmZXIucHJvdG90eXBlXG4gIH0gZWxzZSB7XG4gICAgdmFyIHNsaWNlTGVuID0gZW5kIC0gc3RhcnRcbiAgICBuZXdCdWYgPSBuZXcgQnVmZmVyKHNsaWNlTGVuLCB1bmRlZmluZWQpXG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzbGljZUxlbjsgKytpKSB7XG4gICAgICBuZXdCdWZbaV0gPSB0aGlzW2kgKyBzdGFydF1cbiAgICB9XG4gIH1cblxuICByZXR1cm4gbmV3QnVmXG59XG5cbi8qXG4gKiBOZWVkIHRvIG1ha2Ugc3VyZSB0aGF0IGJ1ZmZlciBpc24ndCB0cnlpbmcgdG8gd3JpdGUgb3V0IG9mIGJvdW5kcy5cbiAqL1xuZnVuY3Rpb24gY2hlY2tPZmZzZXQgKG9mZnNldCwgZXh0LCBsZW5ndGgpIHtcbiAgaWYgKChvZmZzZXQgJSAxKSAhPT0gMCB8fCBvZmZzZXQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignb2Zmc2V0IGlzIG5vdCB1aW50JylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGxlbmd0aCkgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RyeWluZyB0byBhY2Nlc3MgYmV5b25kIGJ1ZmZlciBsZW5ndGgnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50TEUgPSBmdW5jdGlvbiByZWFkVUludExFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgYnl0ZUxlbmd0aCwgdGhpcy5sZW5ndGgpXG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0XVxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgd2hpbGUgKCsraSA8IGJ5dGVMZW5ndGggJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyBpXSAqIG11bFxuICB9XG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50QkUgPSBmdW5jdGlvbiByZWFkVUludEJFIChvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuICB9XG5cbiAgdmFyIHZhbCA9IHRoaXNbb2Zmc2V0ICsgLS1ieXRlTGVuZ3RoXVxuICB2YXIgbXVsID0gMVxuICB3aGlsZSAoYnl0ZUxlbmd0aCA+IDAgJiYgKG11bCAqPSAweDEwMCkpIHtcbiAgICB2YWwgKz0gdGhpc1tvZmZzZXQgKyAtLWJ5dGVMZW5ndGhdICogbXVsXG4gIH1cblxuICByZXR1cm4gdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQ4ID0gZnVuY3Rpb24gcmVhZFVJbnQ4IChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMSwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiB0aGlzW29mZnNldF1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDE2TEUgPSBmdW5jdGlvbiByZWFkVUludDE2TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAyLCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIHRoaXNbb2Zmc2V0XSB8ICh0aGlzW29mZnNldCArIDFdIDw8IDgpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZFVJbnQxNkJFID0gZnVuY3Rpb24gcmVhZFVJbnQxNkJFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHJldHVybiAodGhpc1tvZmZzZXRdIDw8IDgpIHwgdGhpc1tvZmZzZXQgKyAxXVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRVSW50MzJMRSA9IGZ1bmN0aW9uIHJlYWRVSW50MzJMRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDQsIHRoaXMubGVuZ3RoKVxuXG4gIHJldHVybiAoKHRoaXNbb2Zmc2V0XSkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMV0gPDwgOCkgfFxuICAgICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgMTYpKSArXG4gICAgICAodGhpc1tvZmZzZXQgKyAzXSAqIDB4MTAwMDAwMClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkVUludDMyQkUgPSBmdW5jdGlvbiByZWFkVUludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSAqIDB4MTAwMDAwMCkgK1xuICAgICgodGhpc1tvZmZzZXQgKyAxXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDJdIDw8IDgpIHxcbiAgICB0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRMRSA9IGZ1bmN0aW9uIHJlYWRJbnRMRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF1cbiAgdmFyIG11bCA9IDFcbiAgdmFyIGkgPSAwXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdmFsICs9IHRoaXNbb2Zmc2V0ICsgaV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnRCRSA9IGZ1bmN0aW9uIHJlYWRJbnRCRSAob2Zmc2V0LCBieXRlTGVuZ3RoLCBub0Fzc2VydCkge1xuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoIHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIGJ5dGVMZW5ndGgsIHRoaXMubGVuZ3RoKVxuXG4gIHZhciBpID0gYnl0ZUxlbmd0aFxuICB2YXIgbXVsID0gMVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAtLWldXG4gIHdoaWxlIChpID4gMCAmJiAobXVsICo9IDB4MTAwKSkge1xuICAgIHZhbCArPSB0aGlzW29mZnNldCArIC0taV0gKiBtdWxcbiAgfVxuICBtdWwgKj0gMHg4MFxuXG4gIGlmICh2YWwgPj0gbXVsKSB2YWwgLT0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGgpXG5cbiAgcmV0dXJuIHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQ4ID0gZnVuY3Rpb24gcmVhZEludDggKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCAxLCB0aGlzLmxlbmd0aClcbiAgaWYgKCEodGhpc1tvZmZzZXRdICYgMHg4MCkpIHJldHVybiAodGhpc1tvZmZzZXRdKVxuICByZXR1cm4gKCgweGZmIC0gdGhpc1tvZmZzZXRdICsgMSkgKiAtMSlcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkSW50MTZMRSA9IGZ1bmN0aW9uIHJlYWRJbnQxNkxFIChvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrT2Zmc2V0KG9mZnNldCwgMiwgdGhpcy5sZW5ndGgpXG4gIHZhciB2YWwgPSB0aGlzW29mZnNldF0gfCAodGhpc1tvZmZzZXQgKyAxXSA8PCA4KVxuICByZXR1cm4gKHZhbCAmIDB4ODAwMCkgPyB2YWwgfCAweEZGRkYwMDAwIDogdmFsXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUucmVhZEludDE2QkUgPSBmdW5jdGlvbiByZWFkSW50MTZCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDIsIHRoaXMubGVuZ3RoKVxuICB2YXIgdmFsID0gdGhpc1tvZmZzZXQgKyAxXSB8ICh0aGlzW29mZnNldF0gPDwgOClcbiAgcmV0dXJuICh2YWwgJiAweDgwMDApID8gdmFsIHwgMHhGRkZGMDAwMCA6IHZhbFxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkxFID0gZnVuY3Rpb24gcmVhZEludDMyTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDgpIHxcbiAgICAodGhpc1tvZmZzZXQgKyAyXSA8PCAxNikgfFxuICAgICh0aGlzW29mZnNldCArIDNdIDw8IDI0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRJbnQzMkJFID0gZnVuY3Rpb24gcmVhZEludDMyQkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcblxuICByZXR1cm4gKHRoaXNbb2Zmc2V0XSA8PCAyNCkgfFxuICAgICh0aGlzW29mZnNldCArIDFdIDw8IDE2KSB8XG4gICAgKHRoaXNbb2Zmc2V0ICsgMl0gPDwgOCkgfFxuICAgICh0aGlzW29mZnNldCArIDNdKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdExFID0gZnVuY3Rpb24gcmVhZEZsb2F0TEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDIzLCA0KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWRGbG9hdEJFID0gZnVuY3Rpb24gcmVhZEZsb2F0QkUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA0LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIGZhbHNlLCAyMywgNClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS5yZWFkRG91YmxlTEUgPSBmdW5jdGlvbiByZWFkRG91YmxlTEUgKG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tPZmZzZXQob2Zmc2V0LCA4LCB0aGlzLmxlbmd0aClcbiAgcmV0dXJuIGllZWU3NTQucmVhZCh0aGlzLCBvZmZzZXQsIHRydWUsIDUyLCA4KVxufVxuXG5CdWZmZXIucHJvdG90eXBlLnJlYWREb3VibGVCRSA9IGZ1bmN0aW9uIHJlYWREb3VibGVCRSAob2Zmc2V0LCBub0Fzc2VydCkge1xuICBpZiAoIW5vQXNzZXJ0KSBjaGVja09mZnNldChvZmZzZXQsIDgsIHRoaXMubGVuZ3RoKVxuICByZXR1cm4gaWVlZTc1NC5yZWFkKHRoaXMsIG9mZnNldCwgZmFsc2UsIDUyLCA4KVxufVxuXG5mdW5jdGlvbiBjaGVja0ludCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmICghQnVmZmVyLmlzQnVmZmVyKGJ1ZikpIHRocm93IG5ldyBUeXBlRXJyb3IoJ1wiYnVmZmVyXCIgYXJndW1lbnQgbXVzdCBiZSBhIEJ1ZmZlciBpbnN0YW5jZScpXG4gIGlmICh2YWx1ZSA+IG1heCB8fCB2YWx1ZSA8IG1pbikgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1widmFsdWVcIiBhcmd1bWVudCBpcyBvdXQgb2YgYm91bmRzJylcbiAgaWYgKG9mZnNldCArIGV4dCA+IGJ1Zi5sZW5ndGgpIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludExFID0gZnVuY3Rpb24gd3JpdGVVSW50TEUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgbXVsID0gMVxuICB2YXIgaSA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludEJFID0gZnVuY3Rpb24gd3JpdGVVSW50QkUgKHZhbHVlLCBvZmZzZXQsIGJ5dGVMZW5ndGgsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgYnl0ZUxlbmd0aCA9IGJ5dGVMZW5ndGggfCAwXG4gIGlmICghbm9Bc3NlcnQpIHtcbiAgICB2YXIgbWF4Qnl0ZXMgPSBNYXRoLnBvdygyLCA4ICogYnl0ZUxlbmd0aCkgLSAxXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbWF4Qnl0ZXMsIDApXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICh2YWx1ZSAvIG11bCkgJiAweEZGXG4gIH1cblxuICByZXR1cm4gb2Zmc2V0ICsgYnl0ZUxlbmd0aFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlVUludDggPSBmdW5jdGlvbiB3cml0ZVVJbnQ4ICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDEsIDB4ZmYsIDApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgcmV0dXJuIG9mZnNldCArIDFcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MTYgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmICsgdmFsdWUgKyAxXG4gIGZvciAodmFyIGkgPSAwLCBqID0gTWF0aC5taW4oYnVmLmxlbmd0aCAtIG9mZnNldCwgMik7IGkgPCBqOyArK2kpIHtcbiAgICBidWZbb2Zmc2V0ICsgaV0gPSAodmFsdWUgJiAoMHhmZiA8PCAoOCAqIChsaXR0bGVFbmRpYW4gPyBpIDogMSAtIGkpKSkpID4+PlxuICAgICAgKGxpdHRsZUVuZGlhbiA/IGkgOiAxIC0gaSkgKiA4XG4gIH1cbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVVSW50MTZMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCAyLCAweGZmZmYsIDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQxNih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyAyXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MTZCRSA9IGZ1bmN0aW9uIHdyaXRlVUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHhmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuZnVuY3Rpb24gb2JqZWN0V3JpdGVVSW50MzIgKGJ1ZiwgdmFsdWUsIG9mZnNldCwgbGl0dGxlRW5kaWFuKSB7XG4gIGlmICh2YWx1ZSA8IDApIHZhbHVlID0gMHhmZmZmZmZmZiArIHZhbHVlICsgMVxuICBmb3IgKHZhciBpID0gMCwgaiA9IE1hdGgubWluKGJ1Zi5sZW5ndGggLSBvZmZzZXQsIDQpOyBpIDwgajsgKytpKSB7XG4gICAgYnVmW29mZnNldCArIGldID0gKHZhbHVlID4+PiAobGl0dGxlRW5kaWFuID8gaSA6IDMgLSBpKSAqIDgpICYgMHhmZlxuICB9XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVVSW50MzJMRSA9IGZ1bmN0aW9uIHdyaXRlVUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHhmZmZmZmZmZiwgMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSA+Pj4gMjQpXG4gICAgdGhpc1tvZmZzZXQgKyAyXSA9ICh2YWx1ZSA+Pj4gMTYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZVVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVVSW50MzJCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSBjaGVja0ludCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCA0LCAweGZmZmZmZmZmLCAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDI0KVxuICAgIHRoaXNbb2Zmc2V0ICsgMV0gPSAodmFsdWUgPj4+IDE2KVxuICAgIHRoaXNbb2Zmc2V0ICsgMl0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAzXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MzIodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDRcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludExFID0gZnVuY3Rpb24gd3JpdGVJbnRMRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IDBcbiAgdmFyIG11bCA9IDFcbiAgdmFyIHN1YiA9IDBcbiAgdGhpc1tvZmZzZXRdID0gdmFsdWUgJiAweEZGXG4gIHdoaWxlICgrK2kgPCBieXRlTGVuZ3RoICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpIC0gMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludEJFID0gZnVuY3Rpb24gd3JpdGVJbnRCRSAodmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbm9Bc3NlcnQpIHtcbiAgdmFsdWUgPSArdmFsdWVcbiAgb2Zmc2V0ID0gb2Zmc2V0IHwgMFxuICBpZiAoIW5vQXNzZXJ0KSB7XG4gICAgdmFyIGxpbWl0ID0gTWF0aC5wb3coMiwgOCAqIGJ5dGVMZW5ndGggLSAxKVxuXG4gICAgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgYnl0ZUxlbmd0aCwgbGltaXQgLSAxLCAtbGltaXQpXG4gIH1cblxuICB2YXIgaSA9IGJ5dGVMZW5ndGggLSAxXG4gIHZhciBtdWwgPSAxXG4gIHZhciBzdWIgPSAwXG4gIHRoaXNbb2Zmc2V0ICsgaV0gPSB2YWx1ZSAmIDB4RkZcbiAgd2hpbGUgKC0taSA+PSAwICYmIChtdWwgKj0gMHgxMDApKSB7XG4gICAgaWYgKHZhbHVlIDwgMCAmJiBzdWIgPT09IDAgJiYgdGhpc1tvZmZzZXQgKyBpICsgMV0gIT09IDApIHtcbiAgICAgIHN1YiA9IDFcbiAgICB9XG4gICAgdGhpc1tvZmZzZXQgKyBpXSA9ICgodmFsdWUgLyBtdWwpID4+IDApIC0gc3ViICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIG9mZnNldCArIGJ5dGVMZW5ndGhcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDggPSBmdW5jdGlvbiB3cml0ZUludDggKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMSwgMHg3ZiwgLTB4ODApXG4gIGlmICghQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHZhbHVlID0gTWF0aC5mbG9vcih2YWx1ZSlcbiAgaWYgKHZhbHVlIDwgMCkgdmFsdWUgPSAweGZmICsgdmFsdWUgKyAxXG4gIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIHJldHVybiBvZmZzZXQgKyAxXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQxNkxFID0gZnVuY3Rpb24gd3JpdGVJbnQxNkxFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDIsIDB4N2ZmZiwgLTB4ODAwMClcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlICYgMHhmZilcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiA4KVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDE2KHRoaXMsIHZhbHVlLCBvZmZzZXQsIHRydWUpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDE2QkUgPSBmdW5jdGlvbiB3cml0ZUludDE2QkUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgMiwgMHg3ZmZmLCAtMHg4MDAwKVxuICBpZiAoQnVmZmVyLlRZUEVEX0FSUkFZX1NVUFBPUlQpIHtcbiAgICB0aGlzW29mZnNldF0gPSAodmFsdWUgPj4+IDgpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSAmIDB4ZmYpXG4gIH0gZWxzZSB7XG4gICAgb2JqZWN0V3JpdGVVSW50MTYodGhpcywgdmFsdWUsIG9mZnNldCwgZmFsc2UpXG4gIH1cbiAgcmV0dXJuIG9mZnNldCArIDJcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZUludDMyTEUgPSBmdW5jdGlvbiB3cml0ZUludDMyTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHZhbHVlID0gK3ZhbHVlXG4gIG9mZnNldCA9IG9mZnNldCB8IDBcbiAgaWYgKCFub0Fzc2VydCkgY2hlY2tJbnQodGhpcywgdmFsdWUsIG9mZnNldCwgNCwgMHg3ZmZmZmZmZiwgLTB4ODAwMDAwMDApXG4gIGlmIChCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIHRoaXNbb2Zmc2V0XSA9ICh2YWx1ZSAmIDB4ZmYpXG4gICAgdGhpc1tvZmZzZXQgKyAxXSA9ICh2YWx1ZSA+Pj4gOClcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDNdID0gKHZhbHVlID4+PiAyNClcbiAgfSBlbHNlIHtcbiAgICBvYmplY3RXcml0ZVVJbnQzMih0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVJbnQzMkJFID0gZnVuY3Rpb24gd3JpdGVJbnQzMkJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICB2YWx1ZSA9ICt2YWx1ZVxuICBvZmZzZXQgPSBvZmZzZXQgfCAwXG4gIGlmICghbm9Bc3NlcnQpIGNoZWNrSW50KHRoaXMsIHZhbHVlLCBvZmZzZXQsIDQsIDB4N2ZmZmZmZmYsIC0weDgwMDAwMDAwKVxuICBpZiAodmFsdWUgPCAwKSB2YWx1ZSA9IDB4ZmZmZmZmZmYgKyB2YWx1ZSArIDFcbiAgaWYgKEJ1ZmZlci5UWVBFRF9BUlJBWV9TVVBQT1JUKSB7XG4gICAgdGhpc1tvZmZzZXRdID0gKHZhbHVlID4+PiAyNClcbiAgICB0aGlzW29mZnNldCArIDFdID0gKHZhbHVlID4+PiAxNilcbiAgICB0aGlzW29mZnNldCArIDJdID0gKHZhbHVlID4+PiA4KVxuICAgIHRoaXNbb2Zmc2V0ICsgM10gPSAodmFsdWUgJiAweGZmKVxuICB9IGVsc2Uge1xuICAgIG9iamVjdFdyaXRlVUludDMyKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlKVxuICB9XG4gIHJldHVybiBvZmZzZXQgKyA0XG59XG5cbmZ1bmN0aW9uIGNoZWNrSUVFRTc1NCAoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBleHQsIG1heCwgbWluKSB7XG4gIGlmIChvZmZzZXQgKyBleHQgPiBidWYubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignSW5kZXggb3V0IG9mIHJhbmdlJylcbiAgaWYgKG9mZnNldCA8IDApIHRocm93IG5ldyBSYW5nZUVycm9yKCdJbmRleCBvdXQgb2YgcmFuZ2UnKVxufVxuXG5mdW5jdGlvbiB3cml0ZUZsb2F0IChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDQsIDMuNDAyODIzNDY2Mzg1Mjg4NmUrMzgsIC0zLjQwMjgyMzQ2NjM4NTI4ODZlKzM4KVxuICB9XG4gIGllZWU3NTQud3JpdGUoYnVmLCB2YWx1ZSwgb2Zmc2V0LCBsaXR0bGVFbmRpYW4sIDIzLCA0KVxuICByZXR1cm4gb2Zmc2V0ICsgNFxufVxuXG5CdWZmZXIucHJvdG90eXBlLndyaXRlRmxvYXRMRSA9IGZ1bmN0aW9uIHdyaXRlRmxvYXRMRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRmxvYXQodGhpcywgdmFsdWUsIG9mZnNldCwgdHJ1ZSwgbm9Bc3NlcnQpXG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVGbG9hdEJFID0gZnVuY3Rpb24gd3JpdGVGbG9hdEJFICh2YWx1ZSwgb2Zmc2V0LCBub0Fzc2VydCkge1xuICByZXR1cm4gd3JpdGVGbG9hdCh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCBmYWxzZSwgbm9Bc3NlcnQpXG59XG5cbmZ1bmN0aW9uIHdyaXRlRG91YmxlIChidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgbm9Bc3NlcnQpIHtcbiAgaWYgKCFub0Fzc2VydCkge1xuICAgIGNoZWNrSUVFRTc1NChidWYsIHZhbHVlLCBvZmZzZXQsIDgsIDEuNzk3NjkzMTM0ODYyMzE1N0UrMzA4LCAtMS43OTc2OTMxMzQ4NjIzMTU3RSszMDgpXG4gIH1cbiAgaWVlZTc1NC53cml0ZShidWYsIHZhbHVlLCBvZmZzZXQsIGxpdHRsZUVuZGlhbiwgNTIsIDgpXG4gIHJldHVybiBvZmZzZXQgKyA4XG59XG5cbkJ1ZmZlci5wcm90b3R5cGUud3JpdGVEb3VibGVMRSA9IGZ1bmN0aW9uIHdyaXRlRG91YmxlTEUgKHZhbHVlLCBvZmZzZXQsIG5vQXNzZXJ0KSB7XG4gIHJldHVybiB3cml0ZURvdWJsZSh0aGlzLCB2YWx1ZSwgb2Zmc2V0LCB0cnVlLCBub0Fzc2VydClcbn1cblxuQnVmZmVyLnByb3RvdHlwZS53cml0ZURvdWJsZUJFID0gZnVuY3Rpb24gd3JpdGVEb3VibGVCRSAodmFsdWUsIG9mZnNldCwgbm9Bc3NlcnQpIHtcbiAgcmV0dXJuIHdyaXRlRG91YmxlKHRoaXMsIHZhbHVlLCBvZmZzZXQsIGZhbHNlLCBub0Fzc2VydClcbn1cblxuLy8gY29weSh0YXJnZXRCdWZmZXIsIHRhcmdldFN0YXJ0PTAsIHNvdXJjZVN0YXJ0PTAsIHNvdXJjZUVuZD1idWZmZXIubGVuZ3RoKVxuQnVmZmVyLnByb3RvdHlwZS5jb3B5ID0gZnVuY3Rpb24gY29weSAodGFyZ2V0LCB0YXJnZXRTdGFydCwgc3RhcnQsIGVuZCkge1xuICBpZiAoIXN0YXJ0KSBzdGFydCA9IDBcbiAgaWYgKCFlbmQgJiYgZW5kICE9PSAwKSBlbmQgPSB0aGlzLmxlbmd0aFxuICBpZiAodGFyZ2V0U3RhcnQgPj0gdGFyZ2V0Lmxlbmd0aCkgdGFyZ2V0U3RhcnQgPSB0YXJnZXQubGVuZ3RoXG4gIGlmICghdGFyZ2V0U3RhcnQpIHRhcmdldFN0YXJ0ID0gMFxuICBpZiAoZW5kID4gMCAmJiBlbmQgPCBzdGFydCkgZW5kID0gc3RhcnRcblxuICAvLyBDb3B5IDAgYnl0ZXM7IHdlJ3JlIGRvbmVcbiAgaWYgKGVuZCA9PT0gc3RhcnQpIHJldHVybiAwXG4gIGlmICh0YXJnZXQubGVuZ3RoID09PSAwIHx8IHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gMFxuXG4gIC8vIEZhdGFsIGVycm9yIGNvbmRpdGlvbnNcbiAgaWYgKHRhcmdldFN0YXJ0IDwgMCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCd0YXJnZXRTdGFydCBvdXQgb2YgYm91bmRzJylcbiAgfVxuICBpZiAoc3RhcnQgPCAwIHx8IHN0YXJ0ID49IHRoaXMubGVuZ3RoKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlU3RhcnQgb3V0IG9mIGJvdW5kcycpXG4gIGlmIChlbmQgPCAwKSB0aHJvdyBuZXcgUmFuZ2VFcnJvcignc291cmNlRW5kIG91dCBvZiBib3VuZHMnKVxuXG4gIC8vIEFyZSB3ZSBvb2I/XG4gIGlmIChlbmQgPiB0aGlzLmxlbmd0aCkgZW5kID0gdGhpcy5sZW5ndGhcbiAgaWYgKHRhcmdldC5sZW5ndGggLSB0YXJnZXRTdGFydCA8IGVuZCAtIHN0YXJ0KSB7XG4gICAgZW5kID0gdGFyZ2V0Lmxlbmd0aCAtIHRhcmdldFN0YXJ0ICsgc3RhcnRcbiAgfVxuXG4gIHZhciBsZW4gPSBlbmQgLSBzdGFydFxuICB2YXIgaVxuXG4gIGlmICh0aGlzID09PSB0YXJnZXQgJiYgc3RhcnQgPCB0YXJnZXRTdGFydCAmJiB0YXJnZXRTdGFydCA8IGVuZCkge1xuICAgIC8vIGRlc2NlbmRpbmcgY29weSBmcm9tIGVuZFxuICAgIGZvciAoaSA9IGxlbiAtIDE7IGkgPj0gMDsgLS1pKSB7XG4gICAgICB0YXJnZXRbaSArIHRhcmdldFN0YXJ0XSA9IHRoaXNbaSArIHN0YXJ0XVxuICAgIH1cbiAgfSBlbHNlIGlmIChsZW4gPCAxMDAwIHx8ICFCdWZmZXIuVFlQRURfQVJSQVlfU1VQUE9SVCkge1xuICAgIC8vIGFzY2VuZGluZyBjb3B5IGZyb20gc3RhcnRcbiAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHtcbiAgICAgIHRhcmdldFtpICsgdGFyZ2V0U3RhcnRdID0gdGhpc1tpICsgc3RhcnRdXG4gICAgfVxuICB9IGVsc2Uge1xuICAgIFVpbnQ4QXJyYXkucHJvdG90eXBlLnNldC5jYWxsKFxuICAgICAgdGFyZ2V0LFxuICAgICAgdGhpcy5zdWJhcnJheShzdGFydCwgc3RhcnQgKyBsZW4pLFxuICAgICAgdGFyZ2V0U3RhcnRcbiAgICApXG4gIH1cblxuICByZXR1cm4gbGVuXG59XG5cbi8vIFVzYWdlOlxuLy8gICAgYnVmZmVyLmZpbGwobnVtYmVyWywgb2Zmc2V0WywgZW5kXV0pXG4vLyAgICBidWZmZXIuZmlsbChidWZmZXJbLCBvZmZzZXRbLCBlbmRdXSlcbi8vICAgIGJ1ZmZlci5maWxsKHN0cmluZ1ssIG9mZnNldFssIGVuZF1dWywgZW5jb2RpbmddKVxuQnVmZmVyLnByb3RvdHlwZS5maWxsID0gZnVuY3Rpb24gZmlsbCAodmFsLCBzdGFydCwgZW5kLCBlbmNvZGluZykge1xuICAvLyBIYW5kbGUgc3RyaW5nIGNhc2VzOlxuICBpZiAodHlwZW9mIHZhbCA9PT0gJ3N0cmluZycpIHtcbiAgICBpZiAodHlwZW9mIHN0YXJ0ID09PSAnc3RyaW5nJykge1xuICAgICAgZW5jb2RpbmcgPSBzdGFydFxuICAgICAgc3RhcnQgPSAwXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH0gZWxzZSBpZiAodHlwZW9mIGVuZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgIGVuY29kaW5nID0gZW5kXG4gICAgICBlbmQgPSB0aGlzLmxlbmd0aFxuICAgIH1cbiAgICBpZiAodmFsLmxlbmd0aCA9PT0gMSkge1xuICAgICAgdmFyIGNvZGUgPSB2YWwuY2hhckNvZGVBdCgwKVxuICAgICAgaWYgKGNvZGUgPCAyNTYpIHtcbiAgICAgICAgdmFsID0gY29kZVxuICAgICAgfVxuICAgIH1cbiAgICBpZiAoZW5jb2RpbmcgIT09IHVuZGVmaW5lZCAmJiB0eXBlb2YgZW5jb2RpbmcgIT09ICdzdHJpbmcnKSB7XG4gICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdlbmNvZGluZyBtdXN0IGJlIGEgc3RyaW5nJylcbiAgICB9XG4gICAgaWYgKHR5cGVvZiBlbmNvZGluZyA9PT0gJ3N0cmluZycgJiYgIUJ1ZmZlci5pc0VuY29kaW5nKGVuY29kaW5nKSkge1xuICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignVW5rbm93biBlbmNvZGluZzogJyArIGVuY29kaW5nKVxuICAgIH1cbiAgfSBlbHNlIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIHZhbCA9IHZhbCAmIDI1NVxuICB9XG5cbiAgLy8gSW52YWxpZCByYW5nZXMgYXJlIG5vdCBzZXQgdG8gYSBkZWZhdWx0LCBzbyBjYW4gcmFuZ2UgY2hlY2sgZWFybHkuXG4gIGlmIChzdGFydCA8IDAgfHwgdGhpcy5sZW5ndGggPCBzdGFydCB8fCB0aGlzLmxlbmd0aCA8IGVuZCkge1xuICAgIHRocm93IG5ldyBSYW5nZUVycm9yKCdPdXQgb2YgcmFuZ2UgaW5kZXgnKVxuICB9XG5cbiAgaWYgKGVuZCA8PSBzdGFydCkge1xuICAgIHJldHVybiB0aGlzXG4gIH1cblxuICBzdGFydCA9IHN0YXJ0ID4+PiAwXG4gIGVuZCA9IGVuZCA9PT0gdW5kZWZpbmVkID8gdGhpcy5sZW5ndGggOiBlbmQgPj4+IDBcblxuICBpZiAoIXZhbCkgdmFsID0gMFxuXG4gIHZhciBpXG4gIGlmICh0eXBlb2YgdmFsID09PSAnbnVtYmVyJykge1xuICAgIGZvciAoaSA9IHN0YXJ0OyBpIDwgZW5kOyArK2kpIHtcbiAgICAgIHRoaXNbaV0gPSB2YWxcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgdmFyIGJ5dGVzID0gQnVmZmVyLmlzQnVmZmVyKHZhbClcbiAgICAgID8gdmFsXG4gICAgICA6IHV0ZjhUb0J5dGVzKG5ldyBCdWZmZXIodmFsLCBlbmNvZGluZykudG9TdHJpbmcoKSlcbiAgICB2YXIgbGVuID0gYnl0ZXMubGVuZ3RoXG4gICAgZm9yIChpID0gMDsgaSA8IGVuZCAtIHN0YXJ0OyArK2kpIHtcbiAgICAgIHRoaXNbaSArIHN0YXJ0XSA9IGJ5dGVzW2kgJSBsZW5dXG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRoaXNcbn1cblxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PVxuXG52YXIgSU5WQUxJRF9CQVNFNjRfUkUgPSAvW14rXFwvMC05QS1aYS16LV9dL2dcblxuZnVuY3Rpb24gYmFzZTY0Y2xlYW4gKHN0cikge1xuICAvLyBOb2RlIHN0cmlwcyBvdXQgaW52YWxpZCBjaGFyYWN0ZXJzIGxpa2UgXFxuIGFuZCBcXHQgZnJvbSB0aGUgc3RyaW5nLCBiYXNlNjQtanMgZG9lcyBub3RcbiAgc3RyID0gc3RyaW5ndHJpbShzdHIpLnJlcGxhY2UoSU5WQUxJRF9CQVNFNjRfUkUsICcnKVxuICAvLyBOb2RlIGNvbnZlcnRzIHN0cmluZ3Mgd2l0aCBsZW5ndGggPCAyIHRvICcnXG4gIGlmIChzdHIubGVuZ3RoIDwgMikgcmV0dXJuICcnXG4gIC8vIE5vZGUgYWxsb3dzIGZvciBub24tcGFkZGVkIGJhc2U2NCBzdHJpbmdzIChtaXNzaW5nIHRyYWlsaW5nID09PSksIGJhc2U2NC1qcyBkb2VzIG5vdFxuICB3aGlsZSAoc3RyLmxlbmd0aCAlIDQgIT09IDApIHtcbiAgICBzdHIgPSBzdHIgKyAnPSdcbiAgfVxuICByZXR1cm4gc3RyXG59XG5cbmZ1bmN0aW9uIHN0cmluZ3RyaW0gKHN0cikge1xuICBpZiAoc3RyLnRyaW0pIHJldHVybiBzdHIudHJpbSgpXG4gIHJldHVybiBzdHIucmVwbGFjZSgvXlxccyt8XFxzKyQvZywgJycpXG59XG5cbmZ1bmN0aW9uIHRvSGV4IChuKSB7XG4gIGlmIChuIDwgMTYpIHJldHVybiAnMCcgKyBuLnRvU3RyaW5nKDE2KVxuICByZXR1cm4gbi50b1N0cmluZygxNilcbn1cblxuZnVuY3Rpb24gdXRmOFRvQnl0ZXMgKHN0cmluZywgdW5pdHMpIHtcbiAgdW5pdHMgPSB1bml0cyB8fCBJbmZpbml0eVxuICB2YXIgY29kZVBvaW50XG4gIHZhciBsZW5ndGggPSBzdHJpbmcubGVuZ3RoXG4gIHZhciBsZWFkU3Vycm9nYXRlID0gbnVsbFxuICB2YXIgYnl0ZXMgPSBbXVxuXG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBjb2RlUG9pbnQgPSBzdHJpbmcuY2hhckNvZGVBdChpKVxuXG4gICAgLy8gaXMgc3Vycm9nYXRlIGNvbXBvbmVudFxuICAgIGlmIChjb2RlUG9pbnQgPiAweEQ3RkYgJiYgY29kZVBvaW50IDwgMHhFMDAwKSB7XG4gICAgICAvLyBsYXN0IGNoYXIgd2FzIGEgbGVhZFxuICAgICAgaWYgKCFsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAgIC8vIG5vIGxlYWQgeWV0XG4gICAgICAgIGlmIChjb2RlUG9pbnQgPiAweERCRkYpIHtcbiAgICAgICAgICAvLyB1bmV4cGVjdGVkIHRyYWlsXG4gICAgICAgICAgaWYgKCh1bml0cyAtPSAzKSA+IC0xKSBieXRlcy5wdXNoKDB4RUYsIDB4QkYsIDB4QkQpXG4gICAgICAgICAgY29udGludWVcbiAgICAgICAgfSBlbHNlIGlmIChpICsgMSA9PT0gbGVuZ3RoKSB7XG4gICAgICAgICAgLy8gdW5wYWlyZWQgbGVhZFxuICAgICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICAgIGNvbnRpbnVlXG4gICAgICAgIH1cblxuICAgICAgICAvLyB2YWxpZCBsZWFkXG4gICAgICAgIGxlYWRTdXJyb2dhdGUgPSBjb2RlUG9pbnRcblxuICAgICAgICBjb250aW51ZVxuICAgICAgfVxuXG4gICAgICAvLyAyIGxlYWRzIGluIGEgcm93XG4gICAgICBpZiAoY29kZVBvaW50IDwgMHhEQzAwKSB7XG4gICAgICAgIGlmICgodW5pdHMgLT0gMykgPiAtMSkgYnl0ZXMucHVzaCgweEVGLCAweEJGLCAweEJEKVxuICAgICAgICBsZWFkU3Vycm9nYXRlID0gY29kZVBvaW50XG4gICAgICAgIGNvbnRpbnVlXG4gICAgICB9XG5cbiAgICAgIC8vIHZhbGlkIHN1cnJvZ2F0ZSBwYWlyXG4gICAgICBjb2RlUG9pbnQgPSAobGVhZFN1cnJvZ2F0ZSAtIDB4RDgwMCA8PCAxMCB8IGNvZGVQb2ludCAtIDB4REMwMCkgKyAweDEwMDAwXG4gICAgfSBlbHNlIGlmIChsZWFkU3Vycm9nYXRlKSB7XG4gICAgICAvLyB2YWxpZCBibXAgY2hhciwgYnV0IGxhc3QgY2hhciB3YXMgYSBsZWFkXG4gICAgICBpZiAoKHVuaXRzIC09IDMpID4gLTEpIGJ5dGVzLnB1c2goMHhFRiwgMHhCRiwgMHhCRClcbiAgICB9XG5cbiAgICBsZWFkU3Vycm9nYXRlID0gbnVsbFxuXG4gICAgLy8gZW5jb2RlIHV0ZjhcbiAgICBpZiAoY29kZVBvaW50IDwgMHg4MCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAxKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKGNvZGVQb2ludClcbiAgICB9IGVsc2UgaWYgKGNvZGVQb2ludCA8IDB4ODAwKSB7XG4gICAgICBpZiAoKHVuaXRzIC09IDIpIDwgMCkgYnJlYWtcbiAgICAgIGJ5dGVzLnB1c2goXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgfCAweEMwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMDAwMCkge1xuICAgICAgaWYgKCh1bml0cyAtPSAzKSA8IDApIGJyZWFrXG4gICAgICBieXRlcy5wdXNoKFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDIHwgMHhFMCxcbiAgICAgICAgY29kZVBvaW50ID4+IDB4NiAmIDB4M0YgfCAweDgwLFxuICAgICAgICBjb2RlUG9pbnQgJiAweDNGIHwgMHg4MFxuICAgICAgKVxuICAgIH0gZWxzZSBpZiAoY29kZVBvaW50IDwgMHgxMTAwMDApIHtcbiAgICAgIGlmICgodW5pdHMgLT0gNCkgPCAwKSBicmVha1xuICAgICAgYnl0ZXMucHVzaChcbiAgICAgICAgY29kZVBvaW50ID4+IDB4MTIgfCAweEYwLFxuICAgICAgICBjb2RlUG9pbnQgPj4gMHhDICYgMHgzRiB8IDB4ODAsXG4gICAgICAgIGNvZGVQb2ludCA+PiAweDYgJiAweDNGIHwgMHg4MCxcbiAgICAgICAgY29kZVBvaW50ICYgMHgzRiB8IDB4ODBcbiAgICAgIClcbiAgICB9IGVsc2Uge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdJbnZhbGlkIGNvZGUgcG9pbnQnKVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiBieXRlc1xufVxuXG5mdW5jdGlvbiBhc2NpaVRvQnl0ZXMgKHN0cikge1xuICB2YXIgYnl0ZUFycmF5ID0gW11cbiAgZm9yICh2YXIgaSA9IDA7IGkgPCBzdHIubGVuZ3RoOyArK2kpIHtcbiAgICAvLyBOb2RlJ3MgY29kZSBzZWVtcyB0byBiZSBkb2luZyB0aGlzIGFuZCBub3QgJiAweDdGLi5cbiAgICBieXRlQXJyYXkucHVzaChzdHIuY2hhckNvZGVBdChpKSAmIDB4RkYpXG4gIH1cbiAgcmV0dXJuIGJ5dGVBcnJheVxufVxuXG5mdW5jdGlvbiB1dGYxNmxlVG9CeXRlcyAoc3RyLCB1bml0cykge1xuICB2YXIgYywgaGksIGxvXG4gIHZhciBieXRlQXJyYXkgPSBbXVxuICBmb3IgKHZhciBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xuICAgIGlmICgodW5pdHMgLT0gMikgPCAwKSBicmVha1xuXG4gICAgYyA9IHN0ci5jaGFyQ29kZUF0KGkpXG4gICAgaGkgPSBjID4+IDhcbiAgICBsbyA9IGMgJSAyNTZcbiAgICBieXRlQXJyYXkucHVzaChsbylcbiAgICBieXRlQXJyYXkucHVzaChoaSlcbiAgfVxuXG4gIHJldHVybiBieXRlQXJyYXlcbn1cblxuZnVuY3Rpb24gYmFzZTY0VG9CeXRlcyAoc3RyKSB7XG4gIHJldHVybiBiYXNlNjQudG9CeXRlQXJyYXkoYmFzZTY0Y2xlYW4oc3RyKSlcbn1cblxuZnVuY3Rpb24gYmxpdEJ1ZmZlciAoc3JjLCBkc3QsIG9mZnNldCwgbGVuZ3RoKSB7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHtcbiAgICBpZiAoKGkgKyBvZmZzZXQgPj0gZHN0Lmxlbmd0aCkgfHwgKGkgPj0gc3JjLmxlbmd0aCkpIGJyZWFrXG4gICAgZHN0W2kgKyBvZmZzZXRdID0gc3JjW2ldXG4gIH1cbiAgcmV0dXJuIGlcbn1cblxuZnVuY3Rpb24gaXNuYW4gKHZhbCkge1xuICByZXR1cm4gdmFsICE9PSB2YWwgLy8gZXNsaW50LWRpc2FibGUtbGluZSBuby1zZWxmLWNvbXBhcmVcbn1cbiIsIid1c2Ugc3RyaWN0JztcblxuaWYgKHR5cGVvZiBwcm9jZXNzID09PSAndW5kZWZpbmVkJyB8fFxuICAgICFwcm9jZXNzLnZlcnNpb24gfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjAuJykgPT09IDAgfHxcbiAgICBwcm9jZXNzLnZlcnNpb24uaW5kZXhPZigndjEuJykgPT09IDAgJiYgcHJvY2Vzcy52ZXJzaW9uLmluZGV4T2YoJ3YxLjguJykgIT09IDApIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSB7IG5leHRUaWNrOiBuZXh0VGljayB9O1xufSBlbHNlIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBwcm9jZXNzXG59XG5cbmZ1bmN0aW9uIG5leHRUaWNrKGZuLCBhcmcxLCBhcmcyLCBhcmczKSB7XG4gIGlmICh0eXBlb2YgZm4gIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdcImNhbGxiYWNrXCIgYXJndW1lbnQgbXVzdCBiZSBhIGZ1bmN0aW9uJyk7XG4gIH1cbiAgdmFyIGxlbiA9IGFyZ3VtZW50cy5sZW5ndGg7XG4gIHZhciBhcmdzLCBpO1xuICBzd2l0Y2ggKGxlbikge1xuICBjYXNlIDA6XG4gIGNhc2UgMTpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmbik7XG4gIGNhc2UgMjpcbiAgICByZXR1cm4gcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiBhZnRlclRpY2tPbmUoKSB7XG4gICAgICBmbi5jYWxsKG51bGwsIGFyZzEpO1xuICAgIH0pO1xuICBjYXNlIDM6XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrVHdvKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyKTtcbiAgICB9KTtcbiAgY2FzZSA0OlxuICAgIHJldHVybiBwcm9jZXNzLm5leHRUaWNrKGZ1bmN0aW9uIGFmdGVyVGlja1RocmVlKCkge1xuICAgICAgZm4uY2FsbChudWxsLCBhcmcxLCBhcmcyLCBhcmczKTtcbiAgICB9KTtcbiAgZGVmYXVsdDpcbiAgICBhcmdzID0gbmV3IEFycmF5KGxlbiAtIDEpO1xuICAgIGkgPSAwO1xuICAgIHdoaWxlIChpIDwgYXJncy5sZW5ndGgpIHtcbiAgICAgIGFyZ3NbaSsrXSA9IGFyZ3VtZW50c1tpXTtcbiAgICB9XG4gICAgcmV0dXJuIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gYWZ0ZXJUaWNrKCkge1xuICAgICAgZm4uYXBwbHkobnVsbCwgYXJncyk7XG4gICAgfSk7XG4gIH1cbn1cblxuIiwiLyogZXNsaW50LWRpc2FibGUgbm9kZS9uby1kZXByZWNhdGVkLWFwaSAqL1xudmFyIGJ1ZmZlciA9IHJlcXVpcmUoJ2J1ZmZlcicpXG52YXIgQnVmZmVyID0gYnVmZmVyLkJ1ZmZlclxuXG4vLyBhbHRlcm5hdGl2ZSB0byB1c2luZyBPYmplY3Qua2V5cyBmb3Igb2xkIGJyb3dzZXJzXG5mdW5jdGlvbiBjb3B5UHJvcHMgKHNyYywgZHN0KSB7XG4gIGZvciAodmFyIGtleSBpbiBzcmMpIHtcbiAgICBkc3Rba2V5XSA9IHNyY1trZXldXG4gIH1cbn1cbmlmIChCdWZmZXIuZnJvbSAmJiBCdWZmZXIuYWxsb2MgJiYgQnVmZmVyLmFsbG9jVW5zYWZlICYmIEJ1ZmZlci5hbGxvY1Vuc2FmZVNsb3cpIHtcbiAgbW9kdWxlLmV4cG9ydHMgPSBidWZmZXJcbn0gZWxzZSB7XG4gIC8vIENvcHkgcHJvcGVydGllcyBmcm9tIHJlcXVpcmUoJ2J1ZmZlcicpXG4gIGNvcHlQcm9wcyhidWZmZXIsIGV4cG9ydHMpXG4gIGV4cG9ydHMuQnVmZmVyID0gU2FmZUJ1ZmZlclxufVxuXG5mdW5jdGlvbiBTYWZlQnVmZmVyIChhcmcsIGVuY29kaW5nT3JPZmZzZXQsIGxlbmd0aCkge1xuICByZXR1cm4gQnVmZmVyKGFyZywgZW5jb2RpbmdPck9mZnNldCwgbGVuZ3RoKVxufVxuXG4vLyBDb3B5IHN0YXRpYyBtZXRob2RzIGZyb20gQnVmZmVyXG5jb3B5UHJvcHMoQnVmZmVyLCBTYWZlQnVmZmVyKVxuXG5TYWZlQnVmZmVyLmZyb20gPSBmdW5jdGlvbiAoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpIHtcbiAgaWYgKHR5cGVvZiBhcmcgPT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBub3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHJldHVybiBCdWZmZXIoYXJnLCBlbmNvZGluZ09yT2Zmc2V0LCBsZW5ndGgpXG59XG5cblNhZmVCdWZmZXIuYWxsb2MgPSBmdW5jdGlvbiAoc2l6ZSwgZmlsbCwgZW5jb2RpbmcpIHtcbiAgaWYgKHR5cGVvZiBzaXplICE9PSAnbnVtYmVyJykge1xuICAgIHRocm93IG5ldyBUeXBlRXJyb3IoJ0FyZ3VtZW50IG11c3QgYmUgYSBudW1iZXInKVxuICB9XG4gIHZhciBidWYgPSBCdWZmZXIoc2l6ZSlcbiAgaWYgKGZpbGwgIT09IHVuZGVmaW5lZCkge1xuICAgIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdzdHJpbmcnKSB7XG4gICAgICBidWYuZmlsbChmaWxsLCBlbmNvZGluZylcbiAgICB9IGVsc2Uge1xuICAgICAgYnVmLmZpbGwoZmlsbClcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgYnVmLmZpbGwoMClcbiAgfVxuICByZXR1cm4gYnVmXG59XG5cblNhZmVCdWZmZXIuYWxsb2NVbnNhZmUgPSBmdW5jdGlvbiAoc2l6ZSkge1xuICBpZiAodHlwZW9mIHNpemUgIT09ICdudW1iZXInKSB7XG4gICAgdGhyb3cgbmV3IFR5cGVFcnJvcignQXJndW1lbnQgbXVzdCBiZSBhIG51bWJlcicpXG4gIH1cbiAgcmV0dXJuIEJ1ZmZlcihzaXplKVxufVxuXG5TYWZlQnVmZmVyLmFsbG9jVW5zYWZlU2xvdyA9IGZ1bmN0aW9uIChzaXplKSB7XG4gIGlmICh0eXBlb2Ygc2l6ZSAhPT0gJ251bWJlcicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdBcmd1bWVudCBtdXN0IGJlIGEgbnVtYmVyJylcbiAgfVxuICByZXR1cm4gYnVmZmVyLlNsb3dCdWZmZXIoc2l6ZSlcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4ndXNlIHN0cmljdCc7XG5cbnZhciBSID0gdHlwZW9mIFJlZmxlY3QgPT09ICdvYmplY3QnID8gUmVmbGVjdCA6IG51bGxcbnZhciBSZWZsZWN0QXBwbHkgPSBSICYmIHR5cGVvZiBSLmFwcGx5ID09PSAnZnVuY3Rpb24nXG4gID8gUi5hcHBseVxuICA6IGZ1bmN0aW9uIFJlZmxlY3RBcHBseSh0YXJnZXQsIHJlY2VpdmVyLCBhcmdzKSB7XG4gICAgcmV0dXJuIEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseS5jYWxsKHRhcmdldCwgcmVjZWl2ZXIsIGFyZ3MpO1xuICB9XG5cbnZhciBSZWZsZWN0T3duS2V5c1xuaWYgKFIgJiYgdHlwZW9mIFIub3duS2V5cyA9PT0gJ2Z1bmN0aW9uJykge1xuICBSZWZsZWN0T3duS2V5cyA9IFIub3duS2V5c1xufSBlbHNlIGlmIChPYmplY3QuZ2V0T3duUHJvcGVydHlTeW1ib2xzKSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldClcbiAgICAgIC5jb25jYXQoT2JqZWN0LmdldE93blByb3BlcnR5U3ltYm9scyh0YXJnZXQpKTtcbiAgfTtcbn0gZWxzZSB7XG4gIFJlZmxlY3RPd25LZXlzID0gZnVuY3Rpb24gUmVmbGVjdE93bktleXModGFyZ2V0KSB7XG4gICAgcmV0dXJuIE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKHRhcmdldCk7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFByb2Nlc3NFbWl0V2FybmluZyh3YXJuaW5nKSB7XG4gIGlmIChjb25zb2xlICYmIGNvbnNvbGUud2FybikgY29uc29sZS53YXJuKHdhcm5pbmcpO1xufVxuXG52YXIgTnVtYmVySXNOYU4gPSBOdW1iZXIuaXNOYU4gfHwgZnVuY3Rpb24gTnVtYmVySXNOYU4odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlICE9PSB2YWx1ZTtcbn1cblxuZnVuY3Rpb24gRXZlbnRFbWl0dGVyKCkge1xuICBFdmVudEVtaXR0ZXIuaW5pdC5jYWxsKHRoaXMpO1xufVxubW9kdWxlLmV4cG9ydHMgPSBFdmVudEVtaXR0ZXI7XG5cbi8vIEJhY2t3YXJkcy1jb21wYXQgd2l0aCBub2RlIDAuMTAueFxuRXZlbnRFbWl0dGVyLkV2ZW50RW1pdHRlciA9IEV2ZW50RW1pdHRlcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzID0gdW5kZWZpbmVkO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fZXZlbnRzQ291bnQgPSAwO1xuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5fbWF4TGlzdGVuZXJzID0gdW5kZWZpbmVkO1xuXG4vLyBCeSBkZWZhdWx0IEV2ZW50RW1pdHRlcnMgd2lsbCBwcmludCBhIHdhcm5pbmcgaWYgbW9yZSB0aGFuIDEwIGxpc3RlbmVycyBhcmVcbi8vIGFkZGVkIHRvIGl0LiBUaGlzIGlzIGEgdXNlZnVsIGRlZmF1bHQgd2hpY2ggaGVscHMgZmluZGluZyBtZW1vcnkgbGVha3MuXG52YXIgZGVmYXVsdE1heExpc3RlbmVycyA9IDEwO1xuXG5mdW5jdGlvbiBjaGVja0xpc3RlbmVyKGxpc3RlbmVyKSB7XG4gIGlmICh0eXBlb2YgbGlzdGVuZXIgIT09ICdmdW5jdGlvbicpIHtcbiAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdUaGUgXCJsaXN0ZW5lclwiIGFyZ3VtZW50IG11c3QgYmUgb2YgdHlwZSBGdW5jdGlvbi4gUmVjZWl2ZWQgdHlwZSAnICsgdHlwZW9mIGxpc3RlbmVyKTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoRXZlbnRFbWl0dGVyLCAnZGVmYXVsdE1heExpc3RlbmVycycsIHtcbiAgZW51bWVyYWJsZTogdHJ1ZSxcbiAgZ2V0OiBmdW5jdGlvbigpIHtcbiAgICByZXR1cm4gZGVmYXVsdE1heExpc3RlbmVycztcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbihhcmcpIHtcbiAgICBpZiAodHlwZW9mIGFyZyAhPT0gJ251bWJlcicgfHwgYXJnIDwgMCB8fCBOdW1iZXJJc05hTihhcmcpKSB7XG4gICAgICB0aHJvdyBuZXcgUmFuZ2VFcnJvcignVGhlIHZhbHVlIG9mIFwiZGVmYXVsdE1heExpc3RlbmVyc1wiIGlzIG91dCBvZiByYW5nZS4gSXQgbXVzdCBiZSBhIG5vbi1uZWdhdGl2ZSBudW1iZXIuIFJlY2VpdmVkICcgKyBhcmcgKyAnLicpO1xuICAgIH1cbiAgICBkZWZhdWx0TWF4TGlzdGVuZXJzID0gYXJnO1xuICB9XG59KTtcblxuRXZlbnRFbWl0dGVyLmluaXQgPSBmdW5jdGlvbigpIHtcblxuICBpZiAodGhpcy5fZXZlbnRzID09PSB1bmRlZmluZWQgfHxcbiAgICAgIHRoaXMuX2V2ZW50cyA9PT0gT2JqZWN0LmdldFByb3RvdHlwZU9mKHRoaXMpLl9ldmVudHMpIHtcbiAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgIHRoaXMuX2V2ZW50c0NvdW50ID0gMDtcbiAgfVxuXG4gIHRoaXMuX21heExpc3RlbmVycyA9IHRoaXMuX21heExpc3RlbmVycyB8fCB1bmRlZmluZWQ7XG59O1xuXG4vLyBPYnZpb3VzbHkgbm90IGFsbCBFbWl0dGVycyBzaG91bGQgYmUgbGltaXRlZCB0byAxMC4gVGhpcyBmdW5jdGlvbiBhbGxvd3Ncbi8vIHRoYXQgdG8gYmUgaW5jcmVhc2VkLiBTZXQgdG8gemVybyBmb3IgdW5saW1pdGVkLlxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5zZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBzZXRNYXhMaXN0ZW5lcnMobikge1xuICBpZiAodHlwZW9mIG4gIT09ICdudW1iZXInIHx8IG4gPCAwIHx8IE51bWJlcklzTmFOKG4pKSB7XG4gICAgdGhyb3cgbmV3IFJhbmdlRXJyb3IoJ1RoZSB2YWx1ZSBvZiBcIm5cIiBpcyBvdXQgb2YgcmFuZ2UuIEl0IG11c3QgYmUgYSBub24tbmVnYXRpdmUgbnVtYmVyLiBSZWNlaXZlZCAnICsgbiArICcuJyk7XG4gIH1cbiAgdGhpcy5fbWF4TGlzdGVuZXJzID0gbjtcbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBfZ2V0TWF4TGlzdGVuZXJzKHRoYXQpIHtcbiAgaWYgKHRoYXQuX21heExpc3RlbmVycyA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBFdmVudEVtaXR0ZXIuZGVmYXVsdE1heExpc3RlbmVycztcbiAgcmV0dXJuIHRoYXQuX21heExpc3RlbmVycztcbn1cblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5nZXRNYXhMaXN0ZW5lcnMgPSBmdW5jdGlvbiBnZXRNYXhMaXN0ZW5lcnMoKSB7XG4gIHJldHVybiBfZ2V0TWF4TGlzdGVuZXJzKHRoaXMpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5lbWl0ID0gZnVuY3Rpb24gZW1pdCh0eXBlKSB7XG4gIHZhciBhcmdzID0gW107XG4gIGZvciAodmFyIGkgPSAxOyBpIDwgYXJndW1lbnRzLmxlbmd0aDsgaSsrKSBhcmdzLnB1c2goYXJndW1lbnRzW2ldKTtcbiAgdmFyIGRvRXJyb3IgPSAodHlwZSA9PT0gJ2Vycm9yJyk7XG5cbiAgdmFyIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgaWYgKGV2ZW50cyAhPT0gdW5kZWZpbmVkKVxuICAgIGRvRXJyb3IgPSAoZG9FcnJvciAmJiBldmVudHMuZXJyb3IgPT09IHVuZGVmaW5lZCk7XG4gIGVsc2UgaWYgKCFkb0Vycm9yKVxuICAgIHJldHVybiBmYWxzZTtcblxuICAvLyBJZiB0aGVyZSBpcyBubyAnZXJyb3InIGV2ZW50IGxpc3RlbmVyIHRoZW4gdGhyb3cuXG4gIGlmIChkb0Vycm9yKSB7XG4gICAgdmFyIGVyO1xuICAgIGlmIChhcmdzLmxlbmd0aCA+IDApXG4gICAgICBlciA9IGFyZ3NbMF07XG4gICAgaWYgKGVyIGluc3RhbmNlb2YgRXJyb3IpIHtcbiAgICAgIC8vIE5vdGU6IFRoZSBjb21tZW50cyBvbiB0aGUgYHRocm93YCBsaW5lcyBhcmUgaW50ZW50aW9uYWwsIHRoZXkgc2hvd1xuICAgICAgLy8gdXAgaW4gTm9kZSdzIG91dHB1dCBpZiB0aGlzIHJlc3VsdHMgaW4gYW4gdW5oYW5kbGVkIGV4Y2VwdGlvbi5cbiAgICAgIHRocm93IGVyOyAvLyBVbmhhbmRsZWQgJ2Vycm9yJyBldmVudFxuICAgIH1cbiAgICAvLyBBdCBsZWFzdCBnaXZlIHNvbWUga2luZCBvZiBjb250ZXh0IHRvIHRoZSB1c2VyXG4gICAgdmFyIGVyciA9IG5ldyBFcnJvcignVW5oYW5kbGVkIGVycm9yLicgKyAoZXIgPyAnICgnICsgZXIubWVzc2FnZSArICcpJyA6ICcnKSk7XG4gICAgZXJyLmNvbnRleHQgPSBlcjtcbiAgICB0aHJvdyBlcnI7IC8vIFVuaGFuZGxlZCAnZXJyb3InIGV2ZW50XG4gIH1cblxuICB2YXIgaGFuZGxlciA9IGV2ZW50c1t0eXBlXTtcblxuICBpZiAoaGFuZGxlciA9PT0gdW5kZWZpbmVkKVxuICAgIHJldHVybiBmYWxzZTtcblxuICBpZiAodHlwZW9mIGhhbmRsZXIgPT09ICdmdW5jdGlvbicpIHtcbiAgICBSZWZsZWN0QXBwbHkoaGFuZGxlciwgdGhpcywgYXJncyk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGxlbiA9IGhhbmRsZXIubGVuZ3RoO1xuICAgIHZhciBsaXN0ZW5lcnMgPSBhcnJheUNsb25lKGhhbmRsZXIsIGxlbik7XG4gICAgZm9yICh2YXIgaSA9IDA7IGkgPCBsZW47ICsraSlcbiAgICAgIFJlZmxlY3RBcHBseShsaXN0ZW5lcnNbaV0sIHRoaXMsIGFyZ3MpO1xuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59O1xuXG5mdW5jdGlvbiBfYWRkTGlzdGVuZXIodGFyZ2V0LCB0eXBlLCBsaXN0ZW5lciwgcHJlcGVuZCkge1xuICB2YXIgbTtcbiAgdmFyIGV2ZW50cztcbiAgdmFyIGV4aXN0aW5nO1xuXG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpIHtcbiAgICBldmVudHMgPSB0YXJnZXQuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgdGFyZ2V0Ll9ldmVudHNDb3VudCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgLy8gVG8gYXZvaWQgcmVjdXJzaW9uIGluIHRoZSBjYXNlIHRoYXQgdHlwZSA9PT0gXCJuZXdMaXN0ZW5lclwiISBCZWZvcmVcbiAgICAvLyBhZGRpbmcgaXQgdG8gdGhlIGxpc3RlbmVycywgZmlyc3QgZW1pdCBcIm5ld0xpc3RlbmVyXCIuXG4gICAgaWYgKGV2ZW50cy5uZXdMaXN0ZW5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICB0YXJnZXQuZW1pdCgnbmV3TGlzdGVuZXInLCB0eXBlLFxuICAgICAgICAgICAgICAgICAgbGlzdGVuZXIubGlzdGVuZXIgPyBsaXN0ZW5lci5saXN0ZW5lciA6IGxpc3RlbmVyKTtcblxuICAgICAgLy8gUmUtYXNzaWduIGBldmVudHNgIGJlY2F1c2UgYSBuZXdMaXN0ZW5lciBoYW5kbGVyIGNvdWxkIGhhdmUgY2F1c2VkIHRoZVxuICAgICAgLy8gdGhpcy5fZXZlbnRzIHRvIGJlIGFzc2lnbmVkIHRvIGEgbmV3IG9iamVjdFxuICAgICAgZXZlbnRzID0gdGFyZ2V0Ll9ldmVudHM7XG4gICAgfVxuICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdO1xuICB9XG5cbiAgaWYgKGV4aXN0aW5nID09PSB1bmRlZmluZWQpIHtcbiAgICAvLyBPcHRpbWl6ZSB0aGUgY2FzZSBvZiBvbmUgbGlzdGVuZXIuIERvbid0IG5lZWQgdGhlIGV4dHJhIGFycmF5IG9iamVjdC5cbiAgICBleGlzdGluZyA9IGV2ZW50c1t0eXBlXSA9IGxpc3RlbmVyO1xuICAgICsrdGFyZ2V0Ll9ldmVudHNDb3VudDtcbiAgfSBlbHNlIHtcbiAgICBpZiAodHlwZW9mIGV4aXN0aW5nID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAvLyBBZGRpbmcgdGhlIHNlY29uZCBlbGVtZW50LCBuZWVkIHRvIGNoYW5nZSB0byBhcnJheS5cbiAgICAgIGV4aXN0aW5nID0gZXZlbnRzW3R5cGVdID1cbiAgICAgICAgcHJlcGVuZCA/IFtsaXN0ZW5lciwgZXhpc3RpbmddIDogW2V4aXN0aW5nLCBsaXN0ZW5lcl07XG4gICAgICAvLyBJZiB3ZSd2ZSBhbHJlYWR5IGdvdCBhbiBhcnJheSwganVzdCBhcHBlbmQuXG4gICAgfSBlbHNlIGlmIChwcmVwZW5kKSB7XG4gICAgICBleGlzdGluZy51bnNoaWZ0KGxpc3RlbmVyKTtcbiAgICB9IGVsc2Uge1xuICAgICAgZXhpc3RpbmcucHVzaChsaXN0ZW5lcik7XG4gICAgfVxuXG4gICAgLy8gQ2hlY2sgZm9yIGxpc3RlbmVyIGxlYWtcbiAgICBtID0gX2dldE1heExpc3RlbmVycyh0YXJnZXQpO1xuICAgIGlmIChtID4gMCAmJiBleGlzdGluZy5sZW5ndGggPiBtICYmICFleGlzdGluZy53YXJuZWQpIHtcbiAgICAgIGV4aXN0aW5nLndhcm5lZCA9IHRydWU7XG4gICAgICAvLyBObyBlcnJvciBjb2RlIGZvciB0aGlzIHNpbmNlIGl0IGlzIGEgV2FybmluZ1xuICAgICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIG5vLXJlc3RyaWN0ZWQtc3ludGF4XG4gICAgICB2YXIgdyA9IG5ldyBFcnJvcignUG9zc2libGUgRXZlbnRFbWl0dGVyIG1lbW9yeSBsZWFrIGRldGVjdGVkLiAnICtcbiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcubGVuZ3RoICsgJyAnICsgU3RyaW5nKHR5cGUpICsgJyBsaXN0ZW5lcnMgJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdhZGRlZC4gVXNlIGVtaXR0ZXIuc2V0TWF4TGlzdGVuZXJzKCkgdG8gJyArXG4gICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNyZWFzZSBsaW1pdCcpO1xuICAgICAgdy5uYW1lID0gJ01heExpc3RlbmVyc0V4Y2VlZGVkV2FybmluZyc7XG4gICAgICB3LmVtaXR0ZXIgPSB0YXJnZXQ7XG4gICAgICB3LnR5cGUgPSB0eXBlO1xuICAgICAgdy5jb3VudCA9IGV4aXN0aW5nLmxlbmd0aDtcbiAgICAgIFByb2Nlc3NFbWl0V2FybmluZyh3KTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdGFyZ2V0O1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmFkZExpc3RlbmVyID0gZnVuY3Rpb24gYWRkTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgcmV0dXJuIF9hZGRMaXN0ZW5lcih0aGlzLCB0eXBlLCBsaXN0ZW5lciwgZmFsc2UpO1xufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5vbiA9IEV2ZW50RW1pdHRlci5wcm90b3R5cGUuYWRkTGlzdGVuZXI7XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZExpc3RlbmVyID1cbiAgICBmdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIodHlwZSwgbGlzdGVuZXIpIHtcbiAgICAgIHJldHVybiBfYWRkTGlzdGVuZXIodGhpcywgdHlwZSwgbGlzdGVuZXIsIHRydWUpO1xuICAgIH07XG5cbmZ1bmN0aW9uIG9uY2VXcmFwcGVyKCkge1xuICBpZiAoIXRoaXMuZmlyZWQpIHtcbiAgICB0aGlzLnRhcmdldC5yZW1vdmVMaXN0ZW5lcih0aGlzLnR5cGUsIHRoaXMud3JhcEZuKTtcbiAgICB0aGlzLmZpcmVkID0gdHJ1ZTtcbiAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMClcbiAgICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmNhbGwodGhpcy50YXJnZXQpO1xuICAgIHJldHVybiB0aGlzLmxpc3RlbmVyLmFwcGx5KHRoaXMudGFyZ2V0LCBhcmd1bWVudHMpO1xuICB9XG59XG5cbmZ1bmN0aW9uIF9vbmNlV3JhcCh0YXJnZXQsIHR5cGUsIGxpc3RlbmVyKSB7XG4gIHZhciBzdGF0ZSA9IHsgZmlyZWQ6IGZhbHNlLCB3cmFwRm46IHVuZGVmaW5lZCwgdGFyZ2V0OiB0YXJnZXQsIHR5cGU6IHR5cGUsIGxpc3RlbmVyOiBsaXN0ZW5lciB9O1xuICB2YXIgd3JhcHBlZCA9IG9uY2VXcmFwcGVyLmJpbmQoc3RhdGUpO1xuICB3cmFwcGVkLmxpc3RlbmVyID0gbGlzdGVuZXI7XG4gIHN0YXRlLndyYXBGbiA9IHdyYXBwZWQ7XG4gIHJldHVybiB3cmFwcGVkO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLm9uY2UgPSBmdW5jdGlvbiBvbmNlKHR5cGUsIGxpc3RlbmVyKSB7XG4gIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuICB0aGlzLm9uKHR5cGUsIF9vbmNlV3JhcCh0aGlzLCB0eXBlLCBsaXN0ZW5lcikpO1xuICByZXR1cm4gdGhpcztcbn07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUucHJlcGVuZE9uY2VMaXN0ZW5lciA9XG4gICAgZnVuY3Rpb24gcHJlcGVuZE9uY2VMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgY2hlY2tMaXN0ZW5lcihsaXN0ZW5lcik7XG4gICAgICB0aGlzLnByZXBlbmRMaXN0ZW5lcih0eXBlLCBfb25jZVdyYXAodGhpcywgdHlwZSwgbGlzdGVuZXIpKTtcbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbi8vIEVtaXRzIGEgJ3JlbW92ZUxpc3RlbmVyJyBldmVudCBpZiBhbmQgb25seSBpZiB0aGUgbGlzdGVuZXIgd2FzIHJlbW92ZWQuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJlbW92ZUxpc3RlbmVyID1cbiAgICBmdW5jdGlvbiByZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcikge1xuICAgICAgdmFyIGxpc3QsIGV2ZW50cywgcG9zaXRpb24sIGksIG9yaWdpbmFsTGlzdGVuZXI7XG5cbiAgICAgIGNoZWNrTGlzdGVuZXIobGlzdGVuZXIpO1xuXG4gICAgICBldmVudHMgPSB0aGlzLl9ldmVudHM7XG4gICAgICBpZiAoZXZlbnRzID09PSB1bmRlZmluZWQpXG4gICAgICAgIHJldHVybiB0aGlzO1xuXG4gICAgICBsaXN0ID0gZXZlbnRzW3R5cGVdO1xuICAgICAgaWYgKGxpc3QgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIGlmIChsaXN0ID09PSBsaXN0ZW5lciB8fCBsaXN0Lmxpc3RlbmVyID09PSBsaXN0ZW5lcikge1xuICAgICAgICBpZiAoLS10aGlzLl9ldmVudHNDb3VudCA9PT0gMClcbiAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICBlbHNlIHtcbiAgICAgICAgICBkZWxldGUgZXZlbnRzW3R5cGVdO1xuICAgICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIpXG4gICAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgbGlzdC5saXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAodHlwZW9mIGxpc3QgIT09ICdmdW5jdGlvbicpIHtcbiAgICAgICAgcG9zaXRpb24gPSAtMTtcblxuICAgICAgICBmb3IgKGkgPSBsaXN0Lmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgaWYgKGxpc3RbaV0gPT09IGxpc3RlbmVyIHx8IGxpc3RbaV0ubGlzdGVuZXIgPT09IGxpc3RlbmVyKSB7XG4gICAgICAgICAgICBvcmlnaW5hbExpc3RlbmVyID0gbGlzdFtpXS5saXN0ZW5lcjtcbiAgICAgICAgICAgIHBvc2l0aW9uID0gaTtcbiAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChwb3NpdGlvbiA8IDApXG4gICAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgICAgaWYgKHBvc2l0aW9uID09PSAwKVxuICAgICAgICAgIGxpc3Quc2hpZnQoKTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgc3BsaWNlT25lKGxpc3QsIHBvc2l0aW9uKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmIChsaXN0Lmxlbmd0aCA9PT0gMSlcbiAgICAgICAgICBldmVudHNbdHlwZV0gPSBsaXN0WzBdO1xuXG4gICAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgIT09IHVuZGVmaW5lZClcbiAgICAgICAgICB0aGlzLmVtaXQoJ3JlbW92ZUxpc3RlbmVyJywgdHlwZSwgb3JpZ2luYWxMaXN0ZW5lciB8fCBsaXN0ZW5lcik7XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUub2ZmID0gRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVMaXN0ZW5lcjtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5yZW1vdmVBbGxMaXN0ZW5lcnMgPVxuICAgIGZ1bmN0aW9uIHJlbW92ZUFsbExpc3RlbmVycyh0eXBlKSB7XG4gICAgICB2YXIgbGlzdGVuZXJzLCBldmVudHMsIGk7XG5cbiAgICAgIGV2ZW50cyA9IHRoaXMuX2V2ZW50cztcbiAgICAgIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICAgICAgcmV0dXJuIHRoaXM7XG5cbiAgICAgIC8vIG5vdCBsaXN0ZW5pbmcgZm9yIHJlbW92ZUxpc3RlbmVyLCBubyBuZWVkIHRvIGVtaXRcbiAgICAgIGlmIChldmVudHMucmVtb3ZlTGlzdGVuZXIgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICBpZiAoYXJndW1lbnRzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICAgIHRoaXMuX2V2ZW50cyA9IE9iamVjdC5jcmVhdGUobnVsbCk7XG4gICAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICB9IGVsc2UgaWYgKGV2ZW50c1t0eXBlXSAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgaWYgKC0tdGhpcy5fZXZlbnRzQ291bnQgPT09IDApXG4gICAgICAgICAgICB0aGlzLl9ldmVudHMgPSBPYmplY3QuY3JlYXRlKG51bGwpO1xuICAgICAgICAgIGVsc2VcbiAgICAgICAgICAgIGRlbGV0ZSBldmVudHNbdHlwZV07XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHRoaXM7XG4gICAgICB9XG5cbiAgICAgIC8vIGVtaXQgcmVtb3ZlTGlzdGVuZXIgZm9yIGFsbCBsaXN0ZW5lcnMgb24gYWxsIGV2ZW50c1xuICAgICAgaWYgKGFyZ3VtZW50cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgdmFyIGtleXMgPSBPYmplY3Qua2V5cyhldmVudHMpO1xuICAgICAgICB2YXIga2V5O1xuICAgICAgICBmb3IgKGkgPSAwOyBpIDwga2V5cy5sZW5ndGg7ICsraSkge1xuICAgICAgICAgIGtleSA9IGtleXNbaV07XG4gICAgICAgICAgaWYgKGtleSA9PT0gJ3JlbW92ZUxpc3RlbmVyJykgY29udGludWU7XG4gICAgICAgICAgdGhpcy5yZW1vdmVBbGxMaXN0ZW5lcnMoa2V5KTtcbiAgICAgICAgfVxuICAgICAgICB0aGlzLnJlbW92ZUFsbExpc3RlbmVycygncmVtb3ZlTGlzdGVuZXInKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzID0gT2JqZWN0LmNyZWF0ZShudWxsKTtcbiAgICAgICAgdGhpcy5fZXZlbnRzQ291bnQgPSAwO1xuICAgICAgICByZXR1cm4gdGhpcztcbiAgICAgIH1cblxuICAgICAgbGlzdGVuZXJzID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgICBpZiAodHlwZW9mIGxpc3RlbmVycyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICB0aGlzLnJlbW92ZUxpc3RlbmVyKHR5cGUsIGxpc3RlbmVycyk7XG4gICAgICB9IGVsc2UgaWYgKGxpc3RlbmVycyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIC8vIExJRk8gb3JkZXJcbiAgICAgICAgZm9yIChpID0gbGlzdGVuZXJzLmxlbmd0aCAtIDE7IGkgPj0gMDsgaS0tKSB7XG4gICAgICAgICAgdGhpcy5yZW1vdmVMaXN0ZW5lcih0eXBlLCBsaXN0ZW5lcnNbaV0pO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIHJldHVybiB0aGlzO1xuICAgIH07XG5cbmZ1bmN0aW9uIF9saXN0ZW5lcnModGFyZ2V0LCB0eXBlLCB1bndyYXApIHtcbiAgdmFyIGV2ZW50cyA9IHRhcmdldC5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgPT09IHVuZGVmaW5lZClcbiAgICByZXR1cm4gW107XG5cbiAgdmFyIGV2bGlzdGVuZXIgPSBldmVudHNbdHlwZV07XG4gIGlmIChldmxpc3RlbmVyID09PSB1bmRlZmluZWQpXG4gICAgcmV0dXJuIFtdO1xuXG4gIGlmICh0eXBlb2YgZXZsaXN0ZW5lciA9PT0gJ2Z1bmN0aW9uJylcbiAgICByZXR1cm4gdW53cmFwID8gW2V2bGlzdGVuZXIubGlzdGVuZXIgfHwgZXZsaXN0ZW5lcl0gOiBbZXZsaXN0ZW5lcl07XG5cbiAgcmV0dXJuIHVud3JhcCA/XG4gICAgdW53cmFwTGlzdGVuZXJzKGV2bGlzdGVuZXIpIDogYXJyYXlDbG9uZShldmxpc3RlbmVyLCBldmxpc3RlbmVyLmxlbmd0aCk7XG59XG5cbkV2ZW50RW1pdHRlci5wcm90b3R5cGUubGlzdGVuZXJzID0gZnVuY3Rpb24gbGlzdGVuZXJzKHR5cGUpIHtcbiAgcmV0dXJuIF9saXN0ZW5lcnModGhpcywgdHlwZSwgdHJ1ZSk7XG59O1xuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLnJhd0xpc3RlbmVycyA9IGZ1bmN0aW9uIHJhd0xpc3RlbmVycyh0eXBlKSB7XG4gIHJldHVybiBfbGlzdGVuZXJzKHRoaXMsIHR5cGUsIGZhbHNlKTtcbn07XG5cbkV2ZW50RW1pdHRlci5saXN0ZW5lckNvdW50ID0gZnVuY3Rpb24oZW1pdHRlciwgdHlwZSkge1xuICBpZiAodHlwZW9mIGVtaXR0ZXIubGlzdGVuZXJDb3VudCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHJldHVybiBlbWl0dGVyLmxpc3RlbmVyQ291bnQodHlwZSk7XG4gIH0gZWxzZSB7XG4gICAgcmV0dXJuIGxpc3RlbmVyQ291bnQuY2FsbChlbWl0dGVyLCB0eXBlKTtcbiAgfVxufTtcblxuRXZlbnRFbWl0dGVyLnByb3RvdHlwZS5saXN0ZW5lckNvdW50ID0gbGlzdGVuZXJDb3VudDtcbmZ1bmN0aW9uIGxpc3RlbmVyQ291bnQodHlwZSkge1xuICB2YXIgZXZlbnRzID0gdGhpcy5fZXZlbnRzO1xuXG4gIGlmIChldmVudHMgIT09IHVuZGVmaW5lZCkge1xuICAgIHZhciBldmxpc3RlbmVyID0gZXZlbnRzW3R5cGVdO1xuXG4gICAgaWYgKHR5cGVvZiBldmxpc3RlbmVyID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICByZXR1cm4gMTtcbiAgICB9IGVsc2UgaWYgKGV2bGlzdGVuZXIgIT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGV2bGlzdGVuZXIubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiAwO1xufVxuXG5FdmVudEVtaXR0ZXIucHJvdG90eXBlLmV2ZW50TmFtZXMgPSBmdW5jdGlvbiBldmVudE5hbWVzKCkge1xuICByZXR1cm4gdGhpcy5fZXZlbnRzQ291bnQgPiAwID8gUmVmbGVjdE93bktleXModGhpcy5fZXZlbnRzKSA6IFtdO1xufTtcblxuZnVuY3Rpb24gYXJyYXlDbG9uZShhcnIsIG4pIHtcbiAgdmFyIGNvcHkgPSBuZXcgQXJyYXkobik7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgbjsgKytpKVxuICAgIGNvcHlbaV0gPSBhcnJbaV07XG4gIHJldHVybiBjb3B5O1xufVxuXG5mdW5jdGlvbiBzcGxpY2VPbmUobGlzdCwgaW5kZXgpIHtcbiAgZm9yICg7IGluZGV4ICsgMSA8IGxpc3QubGVuZ3RoOyBpbmRleCsrKVxuICAgIGxpc3RbaW5kZXhdID0gbGlzdFtpbmRleCArIDFdO1xuICBsaXN0LnBvcCgpO1xufVxuXG5mdW5jdGlvbiB1bndyYXBMaXN0ZW5lcnMoYXJyKSB7XG4gIHZhciByZXQgPSBuZXcgQXJyYXkoYXJyLmxlbmd0aCk7XG4gIGZvciAodmFyIGkgPSAwOyBpIDwgcmV0Lmxlbmd0aDsgKytpKSB7XG4gICAgcmV0W2ldID0gYXJyW2ldLmxpc3RlbmVyIHx8IGFycltpXTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIiwiZXhwb3J0cyA9IG1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV9yZWFkYWJsZS5qcycpO1xuZXhwb3J0cy5TdHJlYW0gPSBleHBvcnRzO1xuZXhwb3J0cy5SZWFkYWJsZSA9IGV4cG9ydHM7XG5leHBvcnRzLldyaXRhYmxlID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuZXhwb3J0cy5EdXBsZXggPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuZXhwb3J0cy5UcmFuc2Zvcm0gPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX3RyYW5zZm9ybS5qcycpO1xuZXhwb3J0cy5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJy4vbGliL19zdHJlYW1fcGFzc3Rocm91Z2guanMnKTtcbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBBIGJpdCBzaW1wbGVyIHRoYW4gcmVhZGFibGUgc3RyZWFtcy5cbi8vIEltcGxlbWVudCBhbiBhc3luYyAuX3dyaXRlKGNodW5rLCBlbmNvZGluZywgY2IpLCBhbmQgaXQnbGwgaGFuZGxlIGFsbFxuLy8gdGhlIGRyYWluIGV2ZW50IGVtaXNzaW9uIGFuZCBidWZmZXJpbmcuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBXcml0YWJsZTtcblxuLyogPHJlcGxhY2VtZW50PiAqL1xuZnVuY3Rpb24gV3JpdGVSZXEoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB0aGlzLmNodW5rID0gY2h1bms7XG4gIHRoaXMuZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgdGhpcy5jYWxsYmFjayA9IGNiO1xuICB0aGlzLm5leHQgPSBudWxsO1xufVxuXG4vLyBJdCBzZWVtcyBhIGxpbmtlZCBsaXN0IGJ1dCBpdCBpcyBub3Rcbi8vIHRoZXJlIHdpbGwgYmUgb25seSAyIG9mIHRoZXNlIGZvciBlYWNoIHN0cmVhbVxuZnVuY3Rpb24gQ29ya2VkUmVxdWVzdChzdGF0ZSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHRoaXMubmV4dCA9IG51bGw7XG4gIHRoaXMuZW50cnkgPSBudWxsO1xuICB0aGlzLmZpbmlzaCA9IGZ1bmN0aW9uICgpIHtcbiAgICBvbkNvcmtlZEZpbmlzaChfdGhpcywgc3RhdGUpO1xuICB9O1xufVxuLyogPC9yZXBsYWNlbWVudD4gKi9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBhc3luY1dyaXRlID0gIXByb2Nlc3MuYnJvd3NlciAmJiBbJ3YwLjEwJywgJ3YwLjkuJ10uaW5kZXhPZihwcm9jZXNzLnZlcnNpb24uc2xpY2UoMCwgNSkpID4gLTEgPyBzZXRJbW1lZGlhdGUgOiBwbmEubmV4dFRpY2s7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBEdXBsZXg7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuV3JpdGFibGUuV3JpdGFibGVTdGF0ZSA9IFdyaXRhYmxlU3RhdGU7XG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgdXRpbCA9IE9iamVjdC5jcmVhdGUocmVxdWlyZSgnY29yZS11dGlsLWlzJykpO1xudXRpbC5pbmhlcml0cyA9IHJlcXVpcmUoJ2luaGVyaXRzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpbnRlcm5hbFV0aWwgPSB7XG4gIGRlcHJlY2F0ZTogcmVxdWlyZSgndXRpbC1kZXByZWNhdGUnKVxufTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIFN0cmVhbSA9IHJlcXVpcmUoJy4vaW50ZXJuYWwvc3RyZWFtcy9zdHJlYW0nKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xuXG52YXIgQnVmZmVyID0gcmVxdWlyZSgnc2FmZS1idWZmZXInKS5CdWZmZXI7XG52YXIgT3VyVWludDhBcnJheSA9IGdsb2JhbC5VaW50OEFycmF5IHx8IGZ1bmN0aW9uICgpIHt9O1xuZnVuY3Rpb24gX3VpbnQ4QXJyYXlUb0J1ZmZlcihjaHVuaykge1xuICByZXR1cm4gQnVmZmVyLmZyb20oY2h1bmspO1xufVxuZnVuY3Rpb24gX2lzVWludDhBcnJheShvYmopIHtcbiAgcmV0dXJuIEJ1ZmZlci5pc0J1ZmZlcihvYmopIHx8IG9iaiBpbnN0YW5jZW9mIE91clVpbnQ4QXJyYXk7XG59XG5cbi8qPC9yZXBsYWNlbWVudD4qL1xuXG52YXIgZGVzdHJveUltcGwgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvZGVzdHJveScpO1xuXG51dGlsLmluaGVyaXRzKFdyaXRhYmxlLCBTdHJlYW0pO1xuXG5mdW5jdGlvbiBub3AoKSB7fVxuXG5mdW5jdGlvbiBXcml0YWJsZVN0YXRlKG9wdGlvbnMsIHN0cmVhbSkge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIG9wdGlvbnMgPSBvcHRpb25zIHx8IHt9O1xuXG4gIC8vIER1cGxleCBzdHJlYW1zIGFyZSBib3RoIHJlYWRhYmxlIGFuZCB3cml0YWJsZSwgYnV0IHNoYXJlXG4gIC8vIHRoZSBzYW1lIG9wdGlvbnMgb2JqZWN0LlxuICAvLyBIb3dldmVyLCBzb21lIGNhc2VzIHJlcXVpcmUgc2V0dGluZyBvcHRpb25zIHRvIGRpZmZlcmVudFxuICAvLyB2YWx1ZXMgZm9yIHRoZSByZWFkYWJsZSBhbmQgdGhlIHdyaXRhYmxlIHNpZGVzIG9mIHRoZSBkdXBsZXggc3RyZWFtLlxuICAvLyBUaGVzZSBvcHRpb25zIGNhbiBiZSBwcm92aWRlZCBzZXBhcmF0ZWx5IGFzIHJlYWRhYmxlWFhYIGFuZCB3cml0YWJsZVhYWC5cbiAgdmFyIGlzRHVwbGV4ID0gc3RyZWFtIGluc3RhbmNlb2YgRHVwbGV4O1xuXG4gIC8vIG9iamVjdCBzdHJlYW0gZmxhZyB0byBpbmRpY2F0ZSB3aGV0aGVyIG9yIG5vdCB0aGlzIHN0cmVhbVxuICAvLyBjb250YWlucyBidWZmZXJzIG9yIG9iamVjdHMuXG4gIHRoaXMub2JqZWN0TW9kZSA9ICEhb3B0aW9ucy5vYmplY3RNb2RlO1xuXG4gIGlmIChpc0R1cGxleCkgdGhpcy5vYmplY3RNb2RlID0gdGhpcy5vYmplY3RNb2RlIHx8ICEhb3B0aW9ucy53cml0YWJsZU9iamVjdE1vZGU7XG5cbiAgLy8gdGhlIHBvaW50IGF0IHdoaWNoIHdyaXRlKCkgc3RhcnRzIHJldHVybmluZyBmYWxzZVxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIHRoYXQgd2UgYWx3YXlzIHJldHVybiBmYWxzZSBpZlxuICAvLyB0aGUgZW50aXJlIGJ1ZmZlciBpcyBub3QgZmx1c2hlZCBpbW1lZGlhdGVseSBvbiB3cml0ZSgpXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciB3cml0YWJsZUh3bSA9IG9wdGlvbnMud3JpdGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHdyaXRhYmxlSHdtIHx8IHdyaXRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gd3JpdGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIGlmIF9maW5hbCBoYXMgYmVlbiBjYWxsZWRcbiAgdGhpcy5maW5hbENhbGxlZCA9IGZhbHNlO1xuXG4gIC8vIGRyYWluIGV2ZW50IGZsYWcuXG4gIHRoaXMubmVlZERyYWluID0gZmFsc2U7XG4gIC8vIGF0IHRoZSBzdGFydCBvZiBjYWxsaW5nIGVuZCgpXG4gIHRoaXMuZW5kaW5nID0gZmFsc2U7XG4gIC8vIHdoZW4gZW5kKCkgaGFzIGJlZW4gY2FsbGVkLCBhbmQgcmV0dXJuZWRcbiAgdGhpcy5lbmRlZCA9IGZhbHNlO1xuICAvLyB3aGVuICdmaW5pc2gnIGlzIGVtaXR0ZWRcbiAgdGhpcy5maW5pc2hlZCA9IGZhbHNlO1xuXG4gIC8vIGhhcyBpdCBiZWVuIGRlc3Ryb3llZFxuICB0aGlzLmRlc3Ryb3llZCA9IGZhbHNlO1xuXG4gIC8vIHNob3VsZCB3ZSBkZWNvZGUgc3RyaW5ncyBpbnRvIGJ1ZmZlcnMgYmVmb3JlIHBhc3NpbmcgdG8gX3dyaXRlP1xuICAvLyB0aGlzIGlzIGhlcmUgc28gdGhhdCBzb21lIG5vZGUtY29yZSBzdHJlYW1zIGNhbiBvcHRpbWl6ZSBzdHJpbmdcbiAgLy8gaGFuZGxpbmcgYXQgYSBsb3dlciBsZXZlbC5cbiAgdmFyIG5vRGVjb2RlID0gb3B0aW9ucy5kZWNvZGVTdHJpbmdzID09PSBmYWxzZTtcbiAgdGhpcy5kZWNvZGVTdHJpbmdzID0gIW5vRGVjb2RlO1xuXG4gIC8vIENyeXB0byBpcyBraW5kIG9mIG9sZCBhbmQgY3J1c3R5LiAgSGlzdG9yaWNhbGx5LCBpdHMgZGVmYXVsdCBzdHJpbmdcbiAgLy8gZW5jb2RpbmcgaXMgJ2JpbmFyeScgc28gd2UgaGF2ZSB0byBtYWtlIHRoaXMgY29uZmlndXJhYmxlLlxuICAvLyBFdmVyeXRoaW5nIGVsc2UgaW4gdGhlIHVuaXZlcnNlIHVzZXMgJ3V0ZjgnLCB0aG91Z2guXG4gIHRoaXMuZGVmYXVsdEVuY29kaW5nID0gb3B0aW9ucy5kZWZhdWx0RW5jb2RpbmcgfHwgJ3V0ZjgnO1xuXG4gIC8vIG5vdCBhbiBhY3R1YWwgYnVmZmVyIHdlIGtlZXAgdHJhY2sgb2YsIGJ1dCBhIG1lYXN1cmVtZW50XG4gIC8vIG9mIGhvdyBtdWNoIHdlJ3JlIHdhaXRpbmcgdG8gZ2V0IHB1c2hlZCB0byBzb21lIHVuZGVybHlpbmdcbiAgLy8gc29ja2V0IG9yIGZpbGUuXG4gIHRoaXMubGVuZ3RoID0gMDtcblxuICAvLyBhIGZsYWcgdG8gc2VlIHdoZW4gd2UncmUgaW4gdGhlIG1pZGRsZSBvZiBhIHdyaXRlLlxuICB0aGlzLndyaXRpbmcgPSBmYWxzZTtcblxuICAvLyB3aGVuIHRydWUgYWxsIHdyaXRlcyB3aWxsIGJlIGJ1ZmZlcmVkIHVudGlsIC51bmNvcmsoKSBjYWxsXG4gIHRoaXMuY29ya2VkID0gMDtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBvbndyaXRlIGNiIGlzIGNhbGxlZCBpbW1lZGlhdGVseSxcbiAgLy8gb3Igb24gYSBsYXRlciB0aWNrLiAgV2Ugc2V0IHRoaXMgdG8gdHJ1ZSBhdCBmaXJzdCwgYmVjYXVzZSBhbnlcbiAgLy8gYWN0aW9ucyB0aGF0IHNob3VsZG4ndCBoYXBwZW4gdW50aWwgXCJsYXRlclwiIHNob3VsZCBnZW5lcmFsbHkgYWxzb1xuICAvLyBub3QgaGFwcGVuIGJlZm9yZSB0aGUgZmlyc3Qgd3JpdGUgY2FsbC5cbiAgdGhpcy5zeW5jID0gdHJ1ZTtcblxuICAvLyBhIGZsYWcgdG8ga25vdyBpZiB3ZSdyZSBwcm9jZXNzaW5nIHByZXZpb3VzbHkgYnVmZmVyZWQgaXRlbXMsIHdoaWNoXG4gIC8vIG1heSBjYWxsIHRoZSBfd3JpdGUoKSBjYWxsYmFjayBpbiB0aGUgc2FtZSB0aWNrLCBzbyB0aGF0IHdlIGRvbid0XG4gIC8vIGVuZCB1cCBpbiBhbiBvdmVybGFwcGVkIG9ud3JpdGUgc2l0dWF0aW9uLlxuICB0aGlzLmJ1ZmZlclByb2Nlc3NpbmcgPSBmYWxzZTtcblxuICAvLyB0aGUgY2FsbGJhY2sgdGhhdCdzIHBhc3NlZCB0byBfd3JpdGUoY2h1bmssY2IpXG4gIHRoaXMub253cml0ZSA9IGZ1bmN0aW9uIChlcikge1xuICAgIG9ud3JpdGUoc3RyZWFtLCBlcik7XG4gIH07XG5cbiAgLy8gdGhlIGNhbGxiYWNrIHRoYXQgdGhlIHVzZXIgc3VwcGxpZXMgdG8gd3JpdGUoY2h1bmssZW5jb2RpbmcsY2IpXG4gIHRoaXMud3JpdGVjYiA9IG51bGw7XG5cbiAgLy8gdGhlIGFtb3VudCB0aGF0IGlzIGJlaW5nIHdyaXR0ZW4gd2hlbiBfd3JpdGUgaXMgY2FsbGVkLlxuICB0aGlzLndyaXRlbGVuID0gMDtcblxuICB0aGlzLmJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG4gIHRoaXMubGFzdEJ1ZmZlcmVkUmVxdWVzdCA9IG51bGw7XG5cbiAgLy8gbnVtYmVyIG9mIHBlbmRpbmcgdXNlci1zdXBwbGllZCB3cml0ZSBjYWxsYmFja3NcbiAgLy8gdGhpcyBtdXN0IGJlIDAgYmVmb3JlICdmaW5pc2gnIGNhbiBiZSBlbWl0dGVkXG4gIHRoaXMucGVuZGluZ2NiID0gMDtcblxuICAvLyBlbWl0IHByZWZpbmlzaCBpZiB0aGUgb25seSB0aGluZyB3ZSdyZSB3YWl0aW5nIGZvciBpcyBfd3JpdGUgY2JzXG4gIC8vIFRoaXMgaXMgcmVsZXZhbnQgZm9yIHN5bmNocm9ub3VzIFRyYW5zZm9ybSBzdHJlYW1zXG4gIHRoaXMucHJlZmluaXNoZWQgPSBmYWxzZTtcblxuICAvLyBUcnVlIGlmIHRoZSBlcnJvciB3YXMgYWxyZWFkeSBlbWl0dGVkIGFuZCBzaG91bGQgbm90IGJlIHRocm93biBhZ2FpblxuICB0aGlzLmVycm9yRW1pdHRlZCA9IGZhbHNlO1xuXG4gIC8vIGNvdW50IGJ1ZmZlcmVkIHJlcXVlc3RzXG4gIHRoaXMuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuXG4gIC8vIGFsbG9jYXRlIHRoZSBmaXJzdCBDb3JrZWRSZXF1ZXN0LCB0aGVyZSBpcyBhbHdheXNcbiAgLy8gb25lIGFsbG9jYXRlZCBhbmQgZnJlZSB0byB1c2UsIGFuZCB3ZSBtYWludGFpbiBhdCBtb3N0IHR3b1xuICB0aGlzLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHRoaXMpO1xufVxuXG5Xcml0YWJsZVN0YXRlLnByb3RvdHlwZS5nZXRCdWZmZXIgPSBmdW5jdGlvbiBnZXRCdWZmZXIoKSB7XG4gIHZhciBjdXJyZW50ID0gdGhpcy5idWZmZXJlZFJlcXVlc3Q7XG4gIHZhciBvdXQgPSBbXTtcbiAgd2hpbGUgKGN1cnJlbnQpIHtcbiAgICBvdXQucHVzaChjdXJyZW50KTtcbiAgICBjdXJyZW50ID0gY3VycmVudC5uZXh0O1xuICB9XG4gIHJldHVybiBvdXQ7XG59O1xuXG4oZnVuY3Rpb24gKCkge1xuICB0cnkge1xuICAgIE9iamVjdC5kZWZpbmVQcm9wZXJ0eShXcml0YWJsZVN0YXRlLnByb3RvdHlwZSwgJ2J1ZmZlcicsIHtcbiAgICAgIGdldDogaW50ZXJuYWxVdGlsLmRlcHJlY2F0ZShmdW5jdGlvbiAoKSB7XG4gICAgICAgIHJldHVybiB0aGlzLmdldEJ1ZmZlcigpO1xuICAgICAgfSwgJ193cml0YWJsZVN0YXRlLmJ1ZmZlciBpcyBkZXByZWNhdGVkLiBVc2UgX3dyaXRhYmxlU3RhdGUuZ2V0QnVmZmVyICcgKyAnaW5zdGVhZC4nLCAnREVQMDAwMycpXG4gICAgfSk7XG4gIH0gY2F0Y2ggKF8pIHt9XG59KSgpO1xuXG4vLyBUZXN0IF93cml0YWJsZVN0YXRlIGZvciBpbmhlcml0YW5jZSB0byBhY2NvdW50IGZvciBEdXBsZXggc3RyZWFtcyxcbi8vIHdob3NlIHByb3RvdHlwZSBjaGFpbiBvbmx5IHBvaW50cyB0byBSZWFkYWJsZS5cbnZhciByZWFsSGFzSW5zdGFuY2U7XG5pZiAodHlwZW9mIFN5bWJvbCA9PT0gJ2Z1bmN0aW9uJyAmJiBTeW1ib2wuaGFzSW5zdGFuY2UgJiYgdHlwZW9mIEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdID09PSAnZnVuY3Rpb24nKSB7XG4gIHJlYWxIYXNJbnN0YW5jZSA9IEZ1bmN0aW9uLnByb3RvdHlwZVtTeW1ib2wuaGFzSW5zdGFuY2VdO1xuICBPYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUsIFN5bWJvbC5oYXNJbnN0YW5jZSwge1xuICAgIHZhbHVlOiBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgICBpZiAocmVhbEhhc0luc3RhbmNlLmNhbGwodGhpcywgb2JqZWN0KSkgcmV0dXJuIHRydWU7XG4gICAgICBpZiAodGhpcyAhPT0gV3JpdGFibGUpIHJldHVybiBmYWxzZTtcblxuICAgICAgcmV0dXJuIG9iamVjdCAmJiBvYmplY3QuX3dyaXRhYmxlU3RhdGUgaW5zdGFuY2VvZiBXcml0YWJsZVN0YXRlO1xuICAgIH1cbiAgfSk7XG59IGVsc2Uge1xuICByZWFsSGFzSW5zdGFuY2UgPSBmdW5jdGlvbiAob2JqZWN0KSB7XG4gICAgcmV0dXJuIG9iamVjdCBpbnN0YW5jZW9mIHRoaXM7XG4gIH07XG59XG5cbmZ1bmN0aW9uIFdyaXRhYmxlKG9wdGlvbnMpIHtcbiAgRHVwbGV4ID0gRHVwbGV4IHx8IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuICAvLyBXcml0YWJsZSBjdG9yIGlzIGFwcGxpZWQgdG8gRHVwbGV4ZXMsIHRvby5cbiAgLy8gYHJlYWxIYXNJbnN0YW5jZWAgaXMgbmVjZXNzYXJ5IGJlY2F1c2UgdXNpbmcgcGxhaW4gYGluc3RhbmNlb2ZgXG4gIC8vIHdvdWxkIHJldHVybiBmYWxzZSwgYXMgbm8gYF93cml0YWJsZVN0YXRlYCBwcm9wZXJ0eSBpcyBhdHRhY2hlZC5cblxuICAvLyBUcnlpbmcgdG8gdXNlIHRoZSBjdXN0b20gYGluc3RhbmNlb2ZgIGZvciBXcml0YWJsZSBoZXJlIHdpbGwgYWxzbyBicmVhayB0aGVcbiAgLy8gTm9kZS5qcyBMYXp5VHJhbnNmb3JtIGltcGxlbWVudGF0aW9uLCB3aGljaCBoYXMgYSBub24tdHJpdmlhbCBnZXR0ZXIgZm9yXG4gIC8vIGBfd3JpdGFibGVTdGF0ZWAgdGhhdCB3b3VsZCBsZWFkIHRvIGluZmluaXRlIHJlY3Vyc2lvbi5cbiAgaWYgKCFyZWFsSGFzSW5zdGFuY2UuY2FsbChXcml0YWJsZSwgdGhpcykgJiYgISh0aGlzIGluc3RhbmNlb2YgRHVwbGV4KSkge1xuICAgIHJldHVybiBuZXcgV3JpdGFibGUob3B0aW9ucyk7XG4gIH1cblxuICB0aGlzLl93cml0YWJsZVN0YXRlID0gbmV3IFdyaXRhYmxlU3RhdGUob3B0aW9ucywgdGhpcyk7XG5cbiAgLy8gbGVnYWN5LlxuICB0aGlzLndyaXRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy53cml0ZSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGUgPSBvcHRpb25zLndyaXRlO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLndyaXRldiA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fd3JpdGV2ID0gb3B0aW9ucy53cml0ZXY7XG5cbiAgICBpZiAodHlwZW9mIG9wdGlvbnMuZGVzdHJveSA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZGVzdHJveSA9IG9wdGlvbnMuZGVzdHJveTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5maW5hbCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmluYWwgPSBvcHRpb25zLmZpbmFsO1xuICB9XG5cbiAgU3RyZWFtLmNhbGwodGhpcyk7XG59XG5cbi8vIE90aGVyd2lzZSBwZW9wbGUgY2FuIHBpcGUgV3JpdGFibGUgc3RyZWFtcywgd2hpY2ggaXMganVzdCB3cm9uZy5cbldyaXRhYmxlLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24gKCkge1xuICB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCdDYW5ub3QgcGlwZSwgbm90IHJlYWRhYmxlJykpO1xufTtcblxuZnVuY3Rpb24gd3JpdGVBZnRlckVuZChzdHJlYW0sIGNiKSB7XG4gIHZhciBlciA9IG5ldyBFcnJvcignd3JpdGUgYWZ0ZXIgZW5kJyk7XG4gIC8vIFRPRE86IGRlZmVyIGVycm9yIGV2ZW50cyBjb25zaXN0ZW50bHkgZXZlcnl3aGVyZSwgbm90IGp1c3QgdGhlIGNiXG4gIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG59XG5cbi8vIENoZWNrcyB0aGF0IGEgdXNlci1zdXBwbGllZCBjaHVuayBpcyB2YWxpZCwgZXNwZWNpYWxseSBmb3IgdGhlIHBhcnRpY3VsYXJcbi8vIG1vZGUgdGhlIHN0cmVhbSBpcyBpbi4gQ3VycmVudGx5IHRoaXMgbWVhbnMgdGhhdCBgbnVsbGAgaXMgbmV2ZXIgYWNjZXB0ZWRcbi8vIGFuZCB1bmRlZmluZWQvbm9uLXN0cmluZyB2YWx1ZXMgYXJlIG9ubHkgYWxsb3dlZCBpbiBvYmplY3QgbW9kZS5cbmZ1bmN0aW9uIHZhbGlkQ2h1bmsoc3RyZWFtLCBzdGF0ZSwgY2h1bmssIGNiKSB7XG4gIHZhciB2YWxpZCA9IHRydWU7XG4gIHZhciBlciA9IGZhbHNlO1xuXG4gIGlmIChjaHVuayA9PT0gbnVsbCkge1xuICAgIGVyID0gbmV3IFR5cGVFcnJvcignTWF5IG5vdCB3cml0ZSBudWxsIHZhbHVlcyB0byBzdHJlYW0nKTtcbiAgfSBlbHNlIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmIGNodW5rICE9PSB1bmRlZmluZWQgJiYgIXN0YXRlLm9iamVjdE1vZGUpIHtcbiAgICBlciA9IG5ldyBUeXBlRXJyb3IoJ0ludmFsaWQgbm9uLXN0cmluZy9idWZmZXIgY2h1bmsnKTtcbiAgfVxuICBpZiAoZXIpIHtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgcG5hLm5leHRUaWNrKGNiLCBlcik7XG4gICAgdmFsaWQgPSBmYWxzZTtcbiAgfVxuICByZXR1cm4gdmFsaWQ7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS53cml0ZSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG4gIHZhciByZXQgPSBmYWxzZTtcbiAgdmFyIGlzQnVmID0gIXN0YXRlLm9iamVjdE1vZGUgJiYgX2lzVWludDhBcnJheShjaHVuayk7XG5cbiAgaWYgKGlzQnVmICYmICFCdWZmZXIuaXNCdWZmZXIoY2h1bmspKSB7XG4gICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgfVxuXG4gIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChpc0J1ZikgZW5jb2RpbmcgPSAnYnVmZmVyJztlbHNlIGlmICghZW5jb2RpbmcpIGVuY29kaW5nID0gc3RhdGUuZGVmYXVsdEVuY29kaW5nO1xuXG4gIGlmICh0eXBlb2YgY2IgIT09ICdmdW5jdGlvbicpIGNiID0gbm9wO1xuXG4gIGlmIChzdGF0ZS5lbmRlZCkgd3JpdGVBZnRlckVuZCh0aGlzLCBjYik7ZWxzZSBpZiAoaXNCdWYgfHwgdmFsaWRDaHVuayh0aGlzLCBzdGF0ZSwgY2h1bmssIGNiKSkge1xuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHJldCA9IHdyaXRlT3JCdWZmZXIodGhpcywgc3RhdGUsIGlzQnVmLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuY29yayA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fd3JpdGFibGVTdGF0ZTtcblxuICBzdGF0ZS5jb3JrZWQrKztcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS51bmNvcmsgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZC0tO1xuXG4gICAgaWYgKCFzdGF0ZS53cml0aW5nICYmICFzdGF0ZS5jb3JrZWQgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS5idWZmZXJQcm9jZXNzaW5nICYmIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCkgY2xlYXJCdWZmZXIodGhpcywgc3RhdGUpO1xuICB9XG59O1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuc2V0RGVmYXVsdEVuY29kaW5nID0gZnVuY3Rpb24gc2V0RGVmYXVsdEVuY29kaW5nKGVuY29kaW5nKSB7XG4gIC8vIG5vZGU6OlBhcnNlRW5jb2RpbmcoKSByZXF1aXJlcyBsb3dlciBjYXNlLlxuICBpZiAodHlwZW9mIGVuY29kaW5nID09PSAnc3RyaW5nJykgZW5jb2RpbmcgPSBlbmNvZGluZy50b0xvd2VyQ2FzZSgpO1xuICBpZiAoIShbJ2hleCcsICd1dGY4JywgJ3V0Zi04JywgJ2FzY2lpJywgJ2JpbmFyeScsICdiYXNlNjQnLCAndWNzMicsICd1Y3MtMicsICd1dGYxNmxlJywgJ3V0Zi0xNmxlJywgJ3JhdyddLmluZGV4T2YoKGVuY29kaW5nICsgJycpLnRvTG93ZXJDYXNlKCkpID4gLTEpKSB0aHJvdyBuZXcgVHlwZUVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jb2RpbmcpO1xuICB0aGlzLl93cml0YWJsZVN0YXRlLmRlZmF1bHRFbmNvZGluZyA9IGVuY29kaW5nO1xuICByZXR1cm4gdGhpcztcbn07XG5cbmZ1bmN0aW9uIGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpIHtcbiAgaWYgKCFzdGF0ZS5vYmplY3RNb2RlICYmIHN0YXRlLmRlY29kZVN0cmluZ3MgIT09IGZhbHNlICYmIHR5cGVvZiBjaHVuayA9PT0gJ3N0cmluZycpIHtcbiAgICBjaHVuayA9IEJ1ZmZlci5mcm9tKGNodW5rLCBlbmNvZGluZyk7XG4gIH1cbiAgcmV0dXJuIGNodW5rO1xufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnd3JpdGFibGVIaWdoV2F0ZXJNYXJrJywge1xuICAvLyBtYWtpbmcgaXQgZXhwbGljaXQgdGhpcyBwcm9wZXJ0eSBpcyBub3QgZW51bWVyYWJsZVxuICAvLyBiZWNhdXNlIG90aGVyd2lzZSBzb21lIHByb3RvdHlwZSBtYW5pcHVsYXRpb24gaW5cbiAgLy8gdXNlcmxhbmQgd2lsbCBmYWlsXG4gIGVudW1lcmFibGU6IGZhbHNlLFxuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICByZXR1cm4gdGhpcy5fd3JpdGFibGVTdGF0ZS5oaWdoV2F0ZXJNYXJrO1xuICB9XG59KTtcblxuLy8gaWYgd2UncmUgYWxyZWFkeSB3cml0aW5nIHNvbWV0aGluZywgdGhlbiBqdXN0IHB1dCB0aGlzXG4vLyBpbiB0aGUgcXVldWUsIGFuZCB3YWl0IG91ciB0dXJuLiAgT3RoZXJ3aXNlLCBjYWxsIF93cml0ZVxuLy8gSWYgd2UgcmV0dXJuIGZhbHNlLCB0aGVuIHdlIG5lZWQgYSBkcmFpbiBldmVudCwgc28gc2V0IHRoYXQgZmxhZy5cbmZ1bmN0aW9uIHdyaXRlT3JCdWZmZXIoc3RyZWFtLCBzdGF0ZSwgaXNCdWYsIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgaWYgKCFpc0J1Zikge1xuICAgIHZhciBuZXdDaHVuayA9IGRlY29kZUNodW5rKHN0YXRlLCBjaHVuaywgZW5jb2RpbmcpO1xuICAgIGlmIChjaHVuayAhPT0gbmV3Q2h1bmspIHtcbiAgICAgIGlzQnVmID0gdHJ1ZTtcbiAgICAgIGVuY29kaW5nID0gJ2J1ZmZlcic7XG4gICAgICBjaHVuayA9IG5ld0NodW5rO1xuICAgIH1cbiAgfVxuICB2YXIgbGVuID0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG5cbiAgc3RhdGUubGVuZ3RoICs9IGxlbjtcblxuICB2YXIgcmV0ID0gc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgLy8gd2UgbXVzdCBlbnN1cmUgdGhhdCBwcmV2aW91cyBuZWVkRHJhaW4gd2lsbCBub3QgYmUgcmVzZXQgdG8gZmFsc2UuXG4gIGlmICghcmV0KSBzdGF0ZS5uZWVkRHJhaW4gPSB0cnVlO1xuXG4gIGlmIChzdGF0ZS53cml0aW5nIHx8IHN0YXRlLmNvcmtlZCkge1xuICAgIHZhciBsYXN0ID0gc3RhdGUubGFzdEJ1ZmZlcmVkUmVxdWVzdDtcbiAgICBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0ge1xuICAgICAgY2h1bms6IGNodW5rLFxuICAgICAgZW5jb2Rpbmc6IGVuY29kaW5nLFxuICAgICAgaXNCdWY6IGlzQnVmLFxuICAgICAgY2FsbGJhY2s6IGNiLFxuICAgICAgbmV4dDogbnVsbFxuICAgIH07XG4gICAgaWYgKGxhc3QpIHtcbiAgICAgIGxhc3QubmV4dCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3Q7XG4gICAgfVxuICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50ICs9IDE7XG4gIH0gZWxzZSB7XG4gICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgfVxuXG4gIHJldHVybiByZXQ7XG59XG5cbmZ1bmN0aW9uIGRvV3JpdGUoc3RyZWFtLCBzdGF0ZSwgd3JpdGV2LCBsZW4sIGNodW5rLCBlbmNvZGluZywgY2IpIHtcbiAgc3RhdGUud3JpdGVsZW4gPSBsZW47XG4gIHN0YXRlLndyaXRlY2IgPSBjYjtcbiAgc3RhdGUud3JpdGluZyA9IHRydWU7XG4gIHN0YXRlLnN5bmMgPSB0cnVlO1xuICBpZiAod3JpdGV2KSBzdHJlYW0uX3dyaXRldihjaHVuaywgc3RhdGUub253cml0ZSk7ZWxzZSBzdHJlYW0uX3dyaXRlKGNodW5rLCBlbmNvZGluZywgc3RhdGUub253cml0ZSk7XG4gIHN0YXRlLnN5bmMgPSBmYWxzZTtcbn1cblxuZnVuY3Rpb24gb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYikge1xuICAtLXN0YXRlLnBlbmRpbmdjYjtcblxuICBpZiAoc3luYykge1xuICAgIC8vIGRlZmVyIHRoZSBjYWxsYmFjayBpZiB3ZSBhcmUgYmVpbmcgY2FsbGVkIHN5bmNocm9ub3VzbHlcbiAgICAvLyB0byBhdm9pZCBwaWxpbmcgdXAgdGhpbmdzIG9uIHRoZSBzdGFja1xuICAgIHBuYS5uZXh0VGljayhjYiwgZXIpO1xuICAgIC8vIHRoaXMgY2FuIGVtaXQgZmluaXNoLCBhbmQgaXQgd2lsbCBhbHdheXMgaGFwcGVuXG4gICAgLy8gYWZ0ZXIgZXJyb3JcbiAgICBwbmEubmV4dFRpY2soZmluaXNoTWF5YmUsIHN0cmVhbSwgc3RhdGUpO1xuICAgIHN0cmVhbS5fd3JpdGFibGVTdGF0ZS5lcnJvckVtaXR0ZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB0aGUgY2FsbGVyIGV4cGVjdCB0aGlzIHRvIGhhcHBlbiBiZWZvcmUgaWZcbiAgICAvLyBpdCBpcyBhc3luY1xuICAgIGNiKGVyKTtcbiAgICBzdHJlYW0uX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gdHJ1ZTtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgLy8gdGhpcyBjYW4gZW1pdCBmaW5pc2gsIGJ1dCBmaW5pc2ggbXVzdFxuICAgIC8vIGFsd2F5cyBmb2xsb3cgZXJyb3JcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpIHtcbiAgc3RhdGUud3JpdGluZyA9IGZhbHNlO1xuICBzdGF0ZS53cml0ZWNiID0gbnVsbDtcbiAgc3RhdGUubGVuZ3RoIC09IHN0YXRlLndyaXRlbGVuO1xuICBzdGF0ZS53cml0ZWxlbiA9IDA7XG59XG5cbmZ1bmN0aW9uIG9ud3JpdGUoc3RyZWFtLCBlcikge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3dyaXRhYmxlU3RhdGU7XG4gIHZhciBzeW5jID0gc3RhdGUuc3luYztcbiAgdmFyIGNiID0gc3RhdGUud3JpdGVjYjtcblxuICBvbndyaXRlU3RhdGVVcGRhdGUoc3RhdGUpO1xuXG4gIGlmIChlcikgb253cml0ZUVycm9yKHN0cmVhbSwgc3RhdGUsIHN5bmMsIGVyLCBjYik7ZWxzZSB7XG4gICAgLy8gQ2hlY2sgaWYgd2UncmUgYWN0dWFsbHkgcmVhZHkgdG8gZmluaXNoLCBidXQgZG9uJ3QgZW1pdCB5ZXRcbiAgICB2YXIgZmluaXNoZWQgPSBuZWVkRmluaXNoKHN0YXRlKTtcblxuICAgIGlmICghZmluaXNoZWQgJiYgIXN0YXRlLmNvcmtlZCAmJiAhc3RhdGUuYnVmZmVyUHJvY2Vzc2luZyAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QpIHtcbiAgICAgIGNsZWFyQnVmZmVyKHN0cmVhbSwgc3RhdGUpO1xuICAgIH1cblxuICAgIGlmIChzeW5jKSB7XG4gICAgICAvKjxyZXBsYWNlbWVudD4qL1xuICAgICAgYXN5bmNXcml0ZShhZnRlcldyaXRlLCBzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpO1xuICAgICAgLyo8L3JlcGxhY2VtZW50PiovXG4gICAgfSBlbHNlIHtcbiAgICAgIGFmdGVyV3JpdGUoc3RyZWFtLCBzdGF0ZSwgZmluaXNoZWQsIGNiKTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gYWZ0ZXJXcml0ZShzdHJlYW0sIHN0YXRlLCBmaW5pc2hlZCwgY2IpIHtcbiAgaWYgKCFmaW5pc2hlZCkgb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpO1xuICBzdGF0ZS5wZW5kaW5nY2ItLTtcbiAgY2IoKTtcbiAgZmluaXNoTWF5YmUoc3RyZWFtLCBzdGF0ZSk7XG59XG5cbi8vIE11c3QgZm9yY2UgY2FsbGJhY2sgdG8gYmUgY2FsbGVkIG9uIG5leHRUaWNrLCBzbyB0aGF0IHdlIGRvbid0XG4vLyBlbWl0ICdkcmFpbicgYmVmb3JlIHRoZSB3cml0ZSgpIGNvbnN1bWVyIGdldHMgdGhlICdmYWxzZScgcmV0dXJuXG4vLyB2YWx1ZSwgYW5kIGhhcyBhIGNoYW5jZSB0byBhdHRhY2ggYSAnZHJhaW4nIGxpc3RlbmVyLlxuZnVuY3Rpb24gb253cml0ZURyYWluKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5uZWVkRHJhaW4pIHtcbiAgICBzdGF0ZS5uZWVkRHJhaW4gPSBmYWxzZTtcbiAgICBzdHJlYW0uZW1pdCgnZHJhaW4nKTtcbiAgfVxufVxuXG4vLyBpZiB0aGVyZSdzIHNvbWV0aGluZyBpbiB0aGUgYnVmZmVyIHdhaXRpbmcsIHRoZW4gcHJvY2VzcyBpdFxuZnVuY3Rpb24gY2xlYXJCdWZmZXIoc3RyZWFtLCBzdGF0ZSkge1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gdHJ1ZTtcbiAgdmFyIGVudHJ5ID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0O1xuXG4gIGlmIChzdHJlYW0uX3dyaXRldiAmJiBlbnRyeSAmJiBlbnRyeS5uZXh0KSB7XG4gICAgLy8gRmFzdCBjYXNlLCB3cml0ZSBldmVyeXRoaW5nIHVzaW5nIF93cml0ZXYoKVxuICAgIHZhciBsID0gc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQ7XG4gICAgdmFyIGJ1ZmZlciA9IG5ldyBBcnJheShsKTtcbiAgICB2YXIgaG9sZGVyID0gc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlO1xuICAgIGhvbGRlci5lbnRyeSA9IGVudHJ5O1xuXG4gICAgdmFyIGNvdW50ID0gMDtcbiAgICB2YXIgYWxsQnVmZmVycyA9IHRydWU7XG4gICAgd2hpbGUgKGVudHJ5KSB7XG4gICAgICBidWZmZXJbY291bnRdID0gZW50cnk7XG4gICAgICBpZiAoIWVudHJ5LmlzQnVmKSBhbGxCdWZmZXJzID0gZmFsc2U7XG4gICAgICBlbnRyeSA9IGVudHJ5Lm5leHQ7XG4gICAgICBjb3VudCArPSAxO1xuICAgIH1cbiAgICBidWZmZXIuYWxsQnVmZmVycyA9IGFsbEJ1ZmZlcnM7XG5cbiAgICBkb1dyaXRlKHN0cmVhbSwgc3RhdGUsIHRydWUsIHN0YXRlLmxlbmd0aCwgYnVmZmVyLCAnJywgaG9sZGVyLmZpbmlzaCk7XG5cbiAgICAvLyBkb1dyaXRlIGlzIGFsbW9zdCBhbHdheXMgYXN5bmMsIGRlZmVyIHRoZXNlIHRvIHNhdmUgYSBiaXQgb2YgdGltZVxuICAgIC8vIGFzIHRoZSBob3QgcGF0aCBlbmRzIHdpdGggZG9Xcml0ZVxuICAgIHN0YXRlLnBlbmRpbmdjYisrO1xuICAgIHN0YXRlLmxhc3RCdWZmZXJlZFJlcXVlc3QgPSBudWxsO1xuICAgIGlmIChob2xkZXIubmV4dCkge1xuICAgICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gaG9sZGVyLm5leHQ7XG4gICAgICBob2xkZXIubmV4dCA9IG51bGw7XG4gICAgfSBlbHNlIHtcbiAgICAgIHN0YXRlLmNvcmtlZFJlcXVlc3RzRnJlZSA9IG5ldyBDb3JrZWRSZXF1ZXN0KHN0YXRlKTtcbiAgICB9XG4gICAgc3RhdGUuYnVmZmVyZWRSZXF1ZXN0Q291bnQgPSAwO1xuICB9IGVsc2Uge1xuICAgIC8vIFNsb3cgY2FzZSwgd3JpdGUgY2h1bmtzIG9uZS1ieS1vbmVcbiAgICB3aGlsZSAoZW50cnkpIHtcbiAgICAgIHZhciBjaHVuayA9IGVudHJ5LmNodW5rO1xuICAgICAgdmFyIGVuY29kaW5nID0gZW50cnkuZW5jb2Rpbmc7XG4gICAgICB2YXIgY2IgPSBlbnRyeS5jYWxsYmFjaztcbiAgICAgIHZhciBsZW4gPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcblxuICAgICAgZG9Xcml0ZShzdHJlYW0sIHN0YXRlLCBmYWxzZSwgbGVuLCBjaHVuaywgZW5jb2RpbmcsIGNiKTtcbiAgICAgIGVudHJ5ID0gZW50cnkubmV4dDtcbiAgICAgIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdENvdW50LS07XG4gICAgICAvLyBpZiB3ZSBkaWRuJ3QgY2FsbCB0aGUgb253cml0ZSBpbW1lZGlhdGVseSwgdGhlblxuICAgICAgLy8gaXQgbWVhbnMgdGhhdCB3ZSBuZWVkIHRvIHdhaXQgdW50aWwgaXQgZG9lcy5cbiAgICAgIC8vIGFsc28sIHRoYXQgbWVhbnMgdGhhdCB0aGUgY2h1bmsgYW5kIGNiIGFyZSBjdXJyZW50bHlcbiAgICAgIC8vIGJlaW5nIHByb2Nlc3NlZCwgc28gbW92ZSB0aGUgYnVmZmVyIGNvdW50ZXIgcGFzdCB0aGVtLlxuICAgICAgaWYgKHN0YXRlLndyaXRpbmcpIHtcbiAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKGVudHJ5ID09PSBudWxsKSBzdGF0ZS5sYXN0QnVmZmVyZWRSZXF1ZXN0ID0gbnVsbDtcbiAgfVxuXG4gIHN0YXRlLmJ1ZmZlcmVkUmVxdWVzdCA9IGVudHJ5O1xuICBzdGF0ZS5idWZmZXJQcm9jZXNzaW5nID0gZmFsc2U7XG59XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihuZXcgRXJyb3IoJ193cml0ZSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpKTtcbn07XG5cbldyaXRhYmxlLnByb3RvdHlwZS5fd3JpdGV2ID0gbnVsbDtcblxuV3JpdGFibGUucHJvdG90eXBlLmVuZCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3dyaXRhYmxlU3RhdGU7XG5cbiAgaWYgKHR5cGVvZiBjaHVuayA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGNiID0gY2h1bms7XG4gICAgY2h1bmsgPSBudWxsO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfSBlbHNlIGlmICh0eXBlb2YgZW5jb2RpbmcgPT09ICdmdW5jdGlvbicpIHtcbiAgICBjYiA9IGVuY29kaW5nO1xuICAgIGVuY29kaW5nID0gbnVsbDtcbiAgfVxuXG4gIGlmIChjaHVuayAhPT0gbnVsbCAmJiBjaHVuayAhPT0gdW5kZWZpbmVkKSB0aGlzLndyaXRlKGNodW5rLCBlbmNvZGluZyk7XG5cbiAgLy8gLmVuZCgpIGZ1bGx5IHVuY29ya3NcbiAgaWYgKHN0YXRlLmNvcmtlZCkge1xuICAgIHN0YXRlLmNvcmtlZCA9IDE7XG4gICAgdGhpcy51bmNvcmsoKTtcbiAgfVxuXG4gIC8vIGlnbm9yZSB1bm5lY2Vzc2FyeSBlbmQoKSBjYWxscy5cbiAgaWYgKCFzdGF0ZS5lbmRpbmcgJiYgIXN0YXRlLmZpbmlzaGVkKSBlbmRXcml0YWJsZSh0aGlzLCBzdGF0ZSwgY2IpO1xufTtcblxuZnVuY3Rpb24gbmVlZEZpbmlzaChzdGF0ZSkge1xuICByZXR1cm4gc3RhdGUuZW5kaW5nICYmIHN0YXRlLmxlbmd0aCA9PT0gMCAmJiBzdGF0ZS5idWZmZXJlZFJlcXVlc3QgPT09IG51bGwgJiYgIXN0YXRlLmZpbmlzaGVkICYmICFzdGF0ZS53cml0aW5nO1xufVxuZnVuY3Rpb24gY2FsbEZpbmFsKHN0cmVhbSwgc3RhdGUpIHtcbiAgc3RyZWFtLl9maW5hbChmdW5jdGlvbiAoZXJyKSB7XG4gICAgc3RhdGUucGVuZGluZ2NiLS07XG4gICAgaWYgKGVycikge1xuICAgICAgc3RyZWFtLmVtaXQoJ2Vycm9yJywgZXJyKTtcbiAgICB9XG4gICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgIHN0cmVhbS5lbWl0KCdwcmVmaW5pc2gnKTtcbiAgICBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKTtcbiAgfSk7XG59XG5mdW5jdGlvbiBwcmVmaW5pc2goc3RyZWFtLCBzdGF0ZSkge1xuICBpZiAoIXN0YXRlLnByZWZpbmlzaGVkICYmICFzdGF0ZS5maW5hbENhbGxlZCkge1xuICAgIGlmICh0eXBlb2Ygc3RyZWFtLl9maW5hbCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgc3RhdGUucGVuZGluZ2NiKys7XG4gICAgICBzdGF0ZS5maW5hbENhbGxlZCA9IHRydWU7XG4gICAgICBwbmEubmV4dFRpY2soY2FsbEZpbmFsLCBzdHJlYW0sIHN0YXRlKTtcbiAgICB9IGVsc2Uge1xuICAgICAgc3RhdGUucHJlZmluaXNoZWQgPSB0cnVlO1xuICAgICAgc3RyZWFtLmVtaXQoJ3ByZWZpbmlzaCcpO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBmaW5pc2hNYXliZShzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBuZWVkID0gbmVlZEZpbmlzaChzdGF0ZSk7XG4gIGlmIChuZWVkKSB7XG4gICAgcHJlZmluaXNoKHN0cmVhbSwgc3RhdGUpO1xuICAgIGlmIChzdGF0ZS5wZW5kaW5nY2IgPT09IDApIHtcbiAgICAgIHN0YXRlLmZpbmlzaGVkID0gdHJ1ZTtcbiAgICAgIHN0cmVhbS5lbWl0KCdmaW5pc2gnKTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG5lZWQ7XG59XG5cbmZ1bmN0aW9uIGVuZFdyaXRhYmxlKHN0cmVhbSwgc3RhdGUsIGNiKSB7XG4gIHN0YXRlLmVuZGluZyA9IHRydWU7XG4gIGZpbmlzaE1heWJlKHN0cmVhbSwgc3RhdGUpO1xuICBpZiAoY2IpIHtcbiAgICBpZiAoc3RhdGUuZmluaXNoZWQpIHBuYS5uZXh0VGljayhjYik7ZWxzZSBzdHJlYW0ub25jZSgnZmluaXNoJywgY2IpO1xuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2U7XG59XG5cbmZ1bmN0aW9uIG9uQ29ya2VkRmluaXNoKGNvcmtSZXEsIHN0YXRlLCBlcnIpIHtcbiAgdmFyIGVudHJ5ID0gY29ya1JlcS5lbnRyeTtcbiAgY29ya1JlcS5lbnRyeSA9IG51bGw7XG4gIHdoaWxlIChlbnRyeSkge1xuICAgIHZhciBjYiA9IGVudHJ5LmNhbGxiYWNrO1xuICAgIHN0YXRlLnBlbmRpbmdjYi0tO1xuICAgIGNiKGVycik7XG4gICAgZW50cnkgPSBlbnRyeS5uZXh0O1xuICB9XG4gIGlmIChzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUpIHtcbiAgICBzdGF0ZS5jb3JrZWRSZXF1ZXN0c0ZyZWUubmV4dCA9IGNvcmtSZXE7XG4gIH0gZWxzZSB7XG4gICAgc3RhdGUuY29ya2VkUmVxdWVzdHNGcmVlID0gY29ya1JlcTtcbiAgfVxufVxuXG5PYmplY3QuZGVmaW5lUHJvcGVydHkoV3JpdGFibGUucHJvdG90eXBlLCAnZGVzdHJveWVkJywge1xuICBnZXQ6IGZ1bmN0aW9uICgpIHtcbiAgICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSA9PT0gdW5kZWZpbmVkKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICAgIHJldHVybiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgfSxcbiAgc2V0OiBmdW5jdGlvbiAodmFsdWUpIHtcbiAgICAvLyB3ZSBpZ25vcmUgdGhlIHZhbHVlIGlmIHRoZSBzdHJlYW1cbiAgICAvLyBoYXMgbm90IGJlZW4gaW5pdGlhbGl6ZWQgeWV0XG4gICAgaWYgKCF0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuXG4gICAgLy8gYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgdGhlIHVzZXIgaXMgZXhwbGljaXRseVxuICAgIC8vIG1hbmFnaW5nIGRlc3Ryb3llZFxuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gdmFsdWU7XG4gIH1cbn0pO1xuXG5Xcml0YWJsZS5wcm90b3R5cGUuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLmRlc3Ryb3k7XG5Xcml0YWJsZS5wcm90b3R5cGUuX3VuZGVzdHJveSA9IGRlc3Ryb3lJbXBsLnVuZGVzdHJveTtcbldyaXRhYmxlLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHRoaXMuZW5kKCk7XG4gIGNiKGVycik7XG59OyIsInZhciB0b1N0cmluZyA9IHt9LnRvU3RyaW5nO1xuXG5tb2R1bGUuZXhwb3J0cyA9IEFycmF5LmlzQXJyYXkgfHwgZnVuY3Rpb24gKGFycikge1xuICByZXR1cm4gdG9TdHJpbmcuY2FsbChhcnIpID09ICdbb2JqZWN0IEFycmF5XSc7XG59O1xuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxubW9kdWxlLmV4cG9ydHMgPSBSZWFkYWJsZTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBpc0FycmF5ID0gcmVxdWlyZSgnaXNhcnJheScpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbi8qPHJlcGxhY2VtZW50PiovXG52YXIgRHVwbGV4O1xuLyo8L3JlcGxhY2VtZW50PiovXG5cblJlYWRhYmxlLlJlYWRhYmxlU3RhdGUgPSBSZWFkYWJsZVN0YXRlO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIEVFID0gcmVxdWlyZSgnZXZlbnRzJykuRXZlbnRFbWl0dGVyO1xuXG52YXIgRUVsaXN0ZW5lckNvdW50ID0gZnVuY3Rpb24gKGVtaXR0ZXIsIHR5cGUpIHtcbiAgcmV0dXJuIGVtaXR0ZXIubGlzdGVuZXJzKHR5cGUpLmxlbmd0aDtcbn07XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciBTdHJlYW0gPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvc3RyZWFtJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xudmFyIE91clVpbnQ4QXJyYXkgPSBnbG9iYWwuVWludDhBcnJheSB8fCBmdW5jdGlvbiAoKSB7fTtcbmZ1bmN0aW9uIF91aW50OEFycmF5VG9CdWZmZXIoY2h1bmspIHtcbiAgcmV0dXJuIEJ1ZmZlci5mcm9tKGNodW5rKTtcbn1cbmZ1bmN0aW9uIF9pc1VpbnQ4QXJyYXkob2JqKSB7XG4gIHJldHVybiBCdWZmZXIuaXNCdWZmZXIob2JqKSB8fCBvYmogaW5zdGFuY2VvZiBPdXJVaW50OEFycmF5O1xufVxuXG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gT2JqZWN0LmNyZWF0ZShyZXF1aXJlKCdjb3JlLXV0aWwtaXMnKSk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIGRlYnVnVXRpbCA9IHJlcXVpcmUoJ3V0aWwnKTtcbnZhciBkZWJ1ZyA9IHZvaWQgMDtcbmlmIChkZWJ1Z1V0aWwgJiYgZGVidWdVdGlsLmRlYnVnbG9nKSB7XG4gIGRlYnVnID0gZGVidWdVdGlsLmRlYnVnbG9nKCdzdHJlYW0nKTtcbn0gZWxzZSB7XG4gIGRlYnVnID0gZnVuY3Rpb24gKCkge307XG59XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlckxpc3QgPSByZXF1aXJlKCcuL2ludGVybmFsL3N0cmVhbXMvQnVmZmVyTGlzdCcpO1xudmFyIGRlc3Ryb3lJbXBsID0gcmVxdWlyZSgnLi9pbnRlcm5hbC9zdHJlYW1zL2Rlc3Ryb3knKTtcbnZhciBTdHJpbmdEZWNvZGVyO1xuXG51dGlsLmluaGVyaXRzKFJlYWRhYmxlLCBTdHJlYW0pO1xuXG52YXIga1Byb3h5RXZlbnRzID0gWydlcnJvcicsICdjbG9zZScsICdkZXN0cm95JywgJ3BhdXNlJywgJ3Jlc3VtZSddO1xuXG5mdW5jdGlvbiBwcmVwZW5kTGlzdGVuZXIoZW1pdHRlciwgZXZlbnQsIGZuKSB7XG4gIC8vIFNhZGx5IHRoaXMgaXMgbm90IGNhY2hlYWJsZSBhcyBzb21lIGxpYnJhcmllcyBidW5kbGUgdGhlaXIgb3duXG4gIC8vIGV2ZW50IGVtaXR0ZXIgaW1wbGVtZW50YXRpb24gd2l0aCB0aGVtLlxuICBpZiAodHlwZW9mIGVtaXR0ZXIucHJlcGVuZExpc3RlbmVyID09PSAnZnVuY3Rpb24nKSByZXR1cm4gZW1pdHRlci5wcmVwZW5kTGlzdGVuZXIoZXZlbnQsIGZuKTtcblxuICAvLyBUaGlzIGlzIGEgaGFjayB0byBtYWtlIHN1cmUgdGhhdCBvdXIgZXJyb3IgaGFuZGxlciBpcyBhdHRhY2hlZCBiZWZvcmUgYW55XG4gIC8vIHVzZXJsYW5kIG9uZXMuICBORVZFUiBETyBUSElTLiBUaGlzIGlzIGhlcmUgb25seSBiZWNhdXNlIHRoaXMgY29kZSBuZWVkc1xuICAvLyB0byBjb250aW51ZSB0byB3b3JrIHdpdGggb2xkZXIgdmVyc2lvbnMgb2YgTm9kZS5qcyB0aGF0IGRvIG5vdCBpbmNsdWRlXG4gIC8vIHRoZSBwcmVwZW5kTGlzdGVuZXIoKSBtZXRob2QuIFRoZSBnb2FsIGlzIHRvIGV2ZW50dWFsbHkgcmVtb3ZlIHRoaXMgaGFjay5cbiAgaWYgKCFlbWl0dGVyLl9ldmVudHMgfHwgIWVtaXR0ZXIuX2V2ZW50c1tldmVudF0pIGVtaXR0ZXIub24oZXZlbnQsIGZuKTtlbHNlIGlmIChpc0FycmF5KGVtaXR0ZXIuX2V2ZW50c1tldmVudF0pKSBlbWl0dGVyLl9ldmVudHNbZXZlbnRdLnVuc2hpZnQoZm4pO2Vsc2UgZW1pdHRlci5fZXZlbnRzW2V2ZW50XSA9IFtmbiwgZW1pdHRlci5fZXZlbnRzW2V2ZW50XV07XG59XG5cbmZ1bmN0aW9uIFJlYWRhYmxlU3RhdGUob3B0aW9ucywgc3RyZWFtKSB7XG4gIER1cGxleCA9IER1cGxleCB8fCByZXF1aXJlKCcuL19zdHJlYW1fZHVwbGV4Jyk7XG5cbiAgb3B0aW9ucyA9IG9wdGlvbnMgfHwge307XG5cbiAgLy8gRHVwbGV4IHN0cmVhbXMgYXJlIGJvdGggcmVhZGFibGUgYW5kIHdyaXRhYmxlLCBidXQgc2hhcmVcbiAgLy8gdGhlIHNhbWUgb3B0aW9ucyBvYmplY3QuXG4gIC8vIEhvd2V2ZXIsIHNvbWUgY2FzZXMgcmVxdWlyZSBzZXR0aW5nIG9wdGlvbnMgdG8gZGlmZmVyZW50XG4gIC8vIHZhbHVlcyBmb3IgdGhlIHJlYWRhYmxlIGFuZCB0aGUgd3JpdGFibGUgc2lkZXMgb2YgdGhlIGR1cGxleCBzdHJlYW0uXG4gIC8vIFRoZXNlIG9wdGlvbnMgY2FuIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkgYXMgcmVhZGFibGVYWFggYW5kIHdyaXRhYmxlWFhYLlxuICB2YXIgaXNEdXBsZXggPSBzdHJlYW0gaW5zdGFuY2VvZiBEdXBsZXg7XG5cbiAgLy8gb2JqZWN0IHN0cmVhbSBmbGFnLiBVc2VkIHRvIG1ha2UgcmVhZChuKSBpZ25vcmUgbiBhbmQgdG9cbiAgLy8gbWFrZSBhbGwgdGhlIGJ1ZmZlciBtZXJnaW5nIGFuZCBsZW5ndGggY2hlY2tzIGdvIGF3YXlcbiAgdGhpcy5vYmplY3RNb2RlID0gISFvcHRpb25zLm9iamVjdE1vZGU7XG5cbiAgaWYgKGlzRHVwbGV4KSB0aGlzLm9iamVjdE1vZGUgPSB0aGlzLm9iamVjdE1vZGUgfHwgISFvcHRpb25zLnJlYWRhYmxlT2JqZWN0TW9kZTtcblxuICAvLyB0aGUgcG9pbnQgYXQgd2hpY2ggaXQgc3RvcHMgY2FsbGluZyBfcmVhZCgpIHRvIGZpbGwgdGhlIGJ1ZmZlclxuICAvLyBOb3RlOiAwIGlzIGEgdmFsaWQgdmFsdWUsIG1lYW5zIFwiZG9uJ3QgY2FsbCBfcmVhZCBwcmVlbXB0aXZlbHkgZXZlclwiXG4gIHZhciBod20gPSBvcHRpb25zLmhpZ2hXYXRlck1hcms7XG4gIHZhciByZWFkYWJsZUh3bSA9IG9wdGlvbnMucmVhZGFibGVIaWdoV2F0ZXJNYXJrO1xuICB2YXIgZGVmYXVsdEh3bSA9IHRoaXMub2JqZWN0TW9kZSA/IDE2IDogMTYgKiAxMDI0O1xuXG4gIGlmIChod20gfHwgaHdtID09PSAwKSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBod207ZWxzZSBpZiAoaXNEdXBsZXggJiYgKHJlYWRhYmxlSHdtIHx8IHJlYWRhYmxlSHdtID09PSAwKSkgdGhpcy5oaWdoV2F0ZXJNYXJrID0gcmVhZGFibGVId207ZWxzZSB0aGlzLmhpZ2hXYXRlck1hcmsgPSBkZWZhdWx0SHdtO1xuXG4gIC8vIGNhc3QgdG8gaW50cy5cbiAgdGhpcy5oaWdoV2F0ZXJNYXJrID0gTWF0aC5mbG9vcih0aGlzLmhpZ2hXYXRlck1hcmspO1xuXG4gIC8vIEEgbGlua2VkIGxpc3QgaXMgdXNlZCB0byBzdG9yZSBkYXRhIGNodW5rcyBpbnN0ZWFkIG9mIGFuIGFycmF5IGJlY2F1c2UgdGhlXG4gIC8vIGxpbmtlZCBsaXN0IGNhbiByZW1vdmUgZWxlbWVudHMgZnJvbSB0aGUgYmVnaW5uaW5nIGZhc3RlciB0aGFuXG4gIC8vIGFycmF5LnNoaWZ0KClcbiAgdGhpcy5idWZmZXIgPSBuZXcgQnVmZmVyTGlzdCgpO1xuICB0aGlzLmxlbmd0aCA9IDA7XG4gIHRoaXMucGlwZXMgPSBudWxsO1xuICB0aGlzLnBpcGVzQ291bnQgPSAwO1xuICB0aGlzLmZsb3dpbmcgPSBudWxsO1xuICB0aGlzLmVuZGVkID0gZmFsc2U7XG4gIHRoaXMuZW5kRW1pdHRlZCA9IGZhbHNlO1xuICB0aGlzLnJlYWRpbmcgPSBmYWxzZTtcblxuICAvLyBhIGZsYWcgdG8gYmUgYWJsZSB0byB0ZWxsIGlmIHRoZSBldmVudCAncmVhZGFibGUnLydkYXRhJyBpcyBlbWl0dGVkXG4gIC8vIGltbWVkaWF0ZWx5LCBvciBvbiBhIGxhdGVyIHRpY2suICBXZSBzZXQgdGhpcyB0byB0cnVlIGF0IGZpcnN0LCBiZWNhdXNlXG4gIC8vIGFueSBhY3Rpb25zIHRoYXQgc2hvdWxkbid0IGhhcHBlbiB1bnRpbCBcImxhdGVyXCIgc2hvdWxkIGdlbmVyYWxseSBhbHNvXG4gIC8vIG5vdCBoYXBwZW4gYmVmb3JlIHRoZSBmaXJzdCByZWFkIGNhbGwuXG4gIHRoaXMuc3luYyA9IHRydWU7XG5cbiAgLy8gd2hlbmV2ZXIgd2UgcmV0dXJuIG51bGwsIHRoZW4gd2Ugc2V0IGEgZmxhZyB0byBzYXlcbiAgLy8gdGhhdCB3ZSdyZSBhd2FpdGluZyBhICdyZWFkYWJsZScgZXZlbnQgZW1pc3Npb24uXG4gIHRoaXMubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gIHRoaXMucmVhZGFibGVMaXN0ZW5pbmcgPSBmYWxzZTtcbiAgdGhpcy5yZXN1bWVTY2hlZHVsZWQgPSBmYWxzZTtcblxuICAvLyBoYXMgaXQgYmVlbiBkZXN0cm95ZWRcbiAgdGhpcy5kZXN0cm95ZWQgPSBmYWxzZTtcblxuICAvLyBDcnlwdG8gaXMga2luZCBvZiBvbGQgYW5kIGNydXN0eS4gIEhpc3RvcmljYWxseSwgaXRzIGRlZmF1bHQgc3RyaW5nXG4gIC8vIGVuY29kaW5nIGlzICdiaW5hcnknIHNvIHdlIGhhdmUgdG8gbWFrZSB0aGlzIGNvbmZpZ3VyYWJsZS5cbiAgLy8gRXZlcnl0aGluZyBlbHNlIGluIHRoZSB1bml2ZXJzZSB1c2VzICd1dGY4JywgdGhvdWdoLlxuICB0aGlzLmRlZmF1bHRFbmNvZGluZyA9IG9wdGlvbnMuZGVmYXVsdEVuY29kaW5nIHx8ICd1dGY4JztcblxuICAvLyB0aGUgbnVtYmVyIG9mIHdyaXRlcnMgdGhhdCBhcmUgYXdhaXRpbmcgYSBkcmFpbiBldmVudCBpbiAucGlwZSgpc1xuICB0aGlzLmF3YWl0RHJhaW4gPSAwO1xuXG4gIC8vIGlmIHRydWUsIGEgbWF5YmVSZWFkTW9yZSBoYXMgYmVlbiBzY2hlZHVsZWRcbiAgdGhpcy5yZWFkaW5nTW9yZSA9IGZhbHNlO1xuXG4gIHRoaXMuZGVjb2RlciA9IG51bGw7XG4gIHRoaXMuZW5jb2RpbmcgPSBudWxsO1xuICBpZiAob3B0aW9ucy5lbmNvZGluZykge1xuICAgIGlmICghU3RyaW5nRGVjb2RlcikgU3RyaW5nRGVjb2RlciA9IHJlcXVpcmUoJ3N0cmluZ19kZWNvZGVyLycpLlN0cmluZ0RlY29kZXI7XG4gICAgdGhpcy5kZWNvZGVyID0gbmV3IFN0cmluZ0RlY29kZXIob3B0aW9ucy5lbmNvZGluZyk7XG4gICAgdGhpcy5lbmNvZGluZyA9IG9wdGlvbnMuZW5jb2Rpbmc7XG4gIH1cbn1cblxuZnVuY3Rpb24gUmVhZGFibGUob3B0aW9ucykge1xuICBEdXBsZXggPSBEdXBsZXggfHwgcmVxdWlyZSgnLi9fc3RyZWFtX2R1cGxleCcpO1xuXG4gIGlmICghKHRoaXMgaW5zdGFuY2VvZiBSZWFkYWJsZSkpIHJldHVybiBuZXcgUmVhZGFibGUob3B0aW9ucyk7XG5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZSA9IG5ldyBSZWFkYWJsZVN0YXRlKG9wdGlvbnMsIHRoaXMpO1xuXG4gIC8vIGxlZ2FjeVxuICB0aGlzLnJlYWRhYmxlID0gdHJ1ZTtcblxuICBpZiAob3B0aW9ucykge1xuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5yZWFkID09PSAnZnVuY3Rpb24nKSB0aGlzLl9yZWFkID0gb3B0aW9ucy5yZWFkO1xuXG4gICAgaWYgKHR5cGVvZiBvcHRpb25zLmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIHRoaXMuX2Rlc3Ryb3kgPSBvcHRpb25zLmRlc3Ryb3k7XG4gIH1cblxuICBTdHJlYW0uY2FsbCh0aGlzKTtcbn1cblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ2Rlc3Ryb3llZCcsIHtcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQ7XG4gIH0sXG4gIHNldDogZnVuY3Rpb24gKHZhbHVlKSB7XG4gICAgLy8gd2UgaWdub3JlIHRoZSB2YWx1ZSBpZiB0aGUgc3RyZWFtXG4gICAgLy8gaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkIHlldFxuICAgIGlmICghdGhpcy5fcmVhZGFibGVTdGF0ZSkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxpdHksIHRoZSB1c2VyIGlzIGV4cGxpY2l0bHlcbiAgICAvLyBtYW5hZ2luZyBkZXN0cm95ZWRcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHZhbHVlO1xuICB9XG59KTtcblxuUmVhZGFibGUucHJvdG90eXBlLmRlc3Ryb3kgPSBkZXN0cm95SW1wbC5kZXN0cm95O1xuUmVhZGFibGUucHJvdG90eXBlLl91bmRlc3Ryb3kgPSBkZXN0cm95SW1wbC51bmRlc3Ryb3k7XG5SZWFkYWJsZS5wcm90b3R5cGUuX2Rlc3Ryb3kgPSBmdW5jdGlvbiAoZXJyLCBjYikge1xuICB0aGlzLnB1c2gobnVsbCk7XG4gIGNiKGVycik7XG59O1xuXG4vLyBNYW51YWxseSBzaG92ZSBzb21ldGhpbmcgaW50byB0aGUgcmVhZCgpIGJ1ZmZlci5cbi8vIFRoaXMgcmV0dXJucyB0cnVlIGlmIHRoZSBoaWdoV2F0ZXJNYXJrIGhhcyBub3QgYmVlbiBoaXQgeWV0LFxuLy8gc2ltaWxhciB0byBob3cgV3JpdGFibGUud3JpdGUoKSByZXR1cm5zIHRydWUgaWYgeW91IHNob3VsZFxuLy8gd3JpdGUoKSBzb21lIG1vcmUuXG5SZWFkYWJsZS5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcpIHtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIHNraXBDaHVua0NoZWNrO1xuXG4gIGlmICghc3RhdGUub2JqZWN0TW9kZSkge1xuICAgIGlmICh0eXBlb2YgY2h1bmsgPT09ICdzdHJpbmcnKSB7XG4gICAgICBlbmNvZGluZyA9IGVuY29kaW5nIHx8IHN0YXRlLmRlZmF1bHRFbmNvZGluZztcbiAgICAgIGlmIChlbmNvZGluZyAhPT0gc3RhdGUuZW5jb2RpbmcpIHtcbiAgICAgICAgY2h1bmsgPSBCdWZmZXIuZnJvbShjaHVuaywgZW5jb2RpbmcpO1xuICAgICAgICBlbmNvZGluZyA9ICcnO1xuICAgICAgfVxuICAgICAgc2tpcENodW5rQ2hlY2sgPSB0cnVlO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBza2lwQ2h1bmtDaGVjayA9IHRydWU7XG4gIH1cblxuICByZXR1cm4gcmVhZGFibGVBZGRDaHVuayh0aGlzLCBjaHVuaywgZW5jb2RpbmcsIGZhbHNlLCBza2lwQ2h1bmtDaGVjayk7XG59O1xuXG4vLyBVbnNoaWZ0IHNob3VsZCAqYWx3YXlzKiBiZSBzb21ldGhpbmcgZGlyZWN0bHkgb3V0IG9mIHJlYWQoKVxuUmVhZGFibGUucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiAoY2h1bmspIHtcbiAgcmV0dXJuIHJlYWRhYmxlQWRkQ2h1bmsodGhpcywgY2h1bmssIG51bGwsIHRydWUsIGZhbHNlKTtcbn07XG5cbmZ1bmN0aW9uIHJlYWRhYmxlQWRkQ2h1bmsoc3RyZWFtLCBjaHVuaywgZW5jb2RpbmcsIGFkZFRvRnJvbnQsIHNraXBDaHVua0NoZWNrKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgaWYgKGNodW5rID09PSBudWxsKSB7XG4gICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIG9uRW9mQ2h1bmsoc3RyZWFtLCBzdGF0ZSk7XG4gIH0gZWxzZSB7XG4gICAgdmFyIGVyO1xuICAgIGlmICghc2tpcENodW5rQ2hlY2spIGVyID0gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuayk7XG4gICAgaWYgKGVyKSB7XG4gICAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcik7XG4gICAgfSBlbHNlIGlmIChzdGF0ZS5vYmplY3RNb2RlIHx8IGNodW5rICYmIGNodW5rLmxlbmd0aCA+IDApIHtcbiAgICAgIGlmICh0eXBlb2YgY2h1bmsgIT09ICdzdHJpbmcnICYmICFzdGF0ZS5vYmplY3RNb2RlICYmIE9iamVjdC5nZXRQcm90b3R5cGVPZihjaHVuaykgIT09IEJ1ZmZlci5wcm90b3R5cGUpIHtcbiAgICAgICAgY2h1bmsgPSBfdWludDhBcnJheVRvQnVmZmVyKGNodW5rKTtcbiAgICAgIH1cblxuICAgICAgaWYgKGFkZFRvRnJvbnQpIHtcbiAgICAgICAgaWYgKHN0YXRlLmVuZEVtaXR0ZWQpIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnVuc2hpZnQoKSBhZnRlciBlbmQgZXZlbnQnKSk7ZWxzZSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgdHJ1ZSk7XG4gICAgICB9IGVsc2UgaWYgKHN0YXRlLmVuZGVkKSB7XG4gICAgICAgIHN0cmVhbS5lbWl0KCdlcnJvcicsIG5ldyBFcnJvcignc3RyZWFtLnB1c2goKSBhZnRlciBFT0YnKSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzdGF0ZS5yZWFkaW5nID0gZmFsc2U7XG4gICAgICAgIGlmIChzdGF0ZS5kZWNvZGVyICYmICFlbmNvZGluZykge1xuICAgICAgICAgIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG4gICAgICAgICAgaWYgKHN0YXRlLm9iamVjdE1vZGUgfHwgY2h1bmsubGVuZ3RoICE9PSAwKSBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO2Vsc2UgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgZmFsc2UpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSBlbHNlIGlmICghYWRkVG9Gcm9udCkge1xuICAgICAgc3RhdGUucmVhZGluZyA9IGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBuZWVkTW9yZURhdGEoc3RhdGUpO1xufVxuXG5mdW5jdGlvbiBhZGRDaHVuayhzdHJlYW0sIHN0YXRlLCBjaHVuaywgYWRkVG9Gcm9udCkge1xuICBpZiAoc3RhdGUuZmxvd2luZyAmJiBzdGF0ZS5sZW5ndGggPT09IDAgJiYgIXN0YXRlLnN5bmMpIHtcbiAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGNodW5rKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfSBlbHNlIHtcbiAgICAvLyB1cGRhdGUgdGhlIGJ1ZmZlciBpbmZvLlxuICAgIHN0YXRlLmxlbmd0aCArPSBzdGF0ZS5vYmplY3RNb2RlID8gMSA6IGNodW5rLmxlbmd0aDtcbiAgICBpZiAoYWRkVG9Gcm9udCkgc3RhdGUuYnVmZmVyLnVuc2hpZnQoY2h1bmspO2Vsc2Ugc3RhdGUuYnVmZmVyLnB1c2goY2h1bmspO1xuXG4gICAgaWYgKHN0YXRlLm5lZWRSZWFkYWJsZSkgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG4gIH1cbiAgbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKTtcbn1cblxuZnVuY3Rpb24gY2h1bmtJbnZhbGlkKHN0YXRlLCBjaHVuaykge1xuICB2YXIgZXI7XG4gIGlmICghX2lzVWludDhBcnJheShjaHVuaykgJiYgdHlwZW9mIGNodW5rICE9PSAnc3RyaW5nJyAmJiBjaHVuayAhPT0gdW5kZWZpbmVkICYmICFzdGF0ZS5vYmplY3RNb2RlKSB7XG4gICAgZXIgPSBuZXcgVHlwZUVycm9yKCdJbnZhbGlkIG5vbi1zdHJpbmcvYnVmZmVyIGNodW5rJyk7XG4gIH1cbiAgcmV0dXJuIGVyO1xufVxuXG4vLyBpZiBpdCdzIHBhc3QgdGhlIGhpZ2ggd2F0ZXIgbWFyaywgd2UgY2FuIHB1c2ggaW4gc29tZSBtb3JlLlxuLy8gQWxzbywgaWYgd2UgaGF2ZSBubyBkYXRhIHlldCwgd2UgY2FuIHN0YW5kIHNvbWVcbi8vIG1vcmUgYnl0ZXMuICBUaGlzIGlzIHRvIHdvcmsgYXJvdW5kIGNhc2VzIHdoZXJlIGh3bT0wLFxuLy8gc3VjaCBhcyB0aGUgcmVwbC4gIEFsc28sIGlmIHRoZSBwdXNoKCkgdHJpZ2dlcmVkIGFcbi8vIHJlYWRhYmxlIGV2ZW50LCBhbmQgdGhlIHVzZXIgY2FsbGVkIHJlYWQobGFyZ2VOdW1iZXIpIHN1Y2ggdGhhdFxuLy8gbmVlZFJlYWRhYmxlIHdhcyBzZXQsIHRoZW4gd2Ugb3VnaHQgdG8gcHVzaCBtb3JlLCBzbyB0aGF0IGFub3RoZXJcbi8vICdyZWFkYWJsZScgZXZlbnQgd2lsbCBiZSB0cmlnZ2VyZWQuXG5mdW5jdGlvbiBuZWVkTW9yZURhdGEoc3RhdGUpIHtcbiAgcmV0dXJuICFzdGF0ZS5lbmRlZCAmJiAoc3RhdGUubmVlZFJlYWRhYmxlIHx8IHN0YXRlLmxlbmd0aCA8IHN0YXRlLmhpZ2hXYXRlck1hcmsgfHwgc3RhdGUubGVuZ3RoID09PSAwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLmlzUGF1c2VkID0gZnVuY3Rpb24gKCkge1xuICByZXR1cm4gdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nID09PSBmYWxzZTtcbn07XG5cbi8vIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuUmVhZGFibGUucHJvdG90eXBlLnNldEVuY29kaW5nID0gZnVuY3Rpb24gKGVuYykge1xuICBpZiAoIVN0cmluZ0RlY29kZXIpIFN0cmluZ0RlY29kZXIgPSByZXF1aXJlKCdzdHJpbmdfZGVjb2Rlci8nKS5TdHJpbmdEZWNvZGVyO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlY29kZXIgPSBuZXcgU3RyaW5nRGVjb2RlcihlbmMpO1xuICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuY29kaW5nID0gZW5jO1xuICByZXR1cm4gdGhpcztcbn07XG5cbi8vIERvbid0IHJhaXNlIHRoZSBod20gPiA4TUJcbnZhciBNQVhfSFdNID0gMHg4MDAwMDA7XG5mdW5jdGlvbiBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKSB7XG4gIGlmIChuID49IE1BWF9IV00pIHtcbiAgICBuID0gTUFYX0hXTTtcbiAgfSBlbHNlIHtcbiAgICAvLyBHZXQgdGhlIG5leHQgaGlnaGVzdCBwb3dlciBvZiAyIHRvIHByZXZlbnQgaW5jcmVhc2luZyBod20gZXhjZXNzaXZlbHkgaW5cbiAgICAvLyB0aW55IGFtb3VudHNcbiAgICBuLS07XG4gICAgbiB8PSBuID4+PiAxO1xuICAgIG4gfD0gbiA+Pj4gMjtcbiAgICBuIHw9IG4gPj4+IDQ7XG4gICAgbiB8PSBuID4+PiA4O1xuICAgIG4gfD0gbiA+Pj4gMTY7XG4gICAgbisrO1xuICB9XG4gIHJldHVybiBuO1xufVxuXG4vLyBUaGlzIGZ1bmN0aW9uIGlzIGRlc2lnbmVkIHRvIGJlIGlubGluYWJsZSwgc28gcGxlYXNlIHRha2UgY2FyZSB3aGVuIG1ha2luZ1xuLy8gY2hhbmdlcyB0byB0aGUgZnVuY3Rpb24gYm9keS5cbmZ1bmN0aW9uIGhvd011Y2hUb1JlYWQobiwgc3RhdGUpIHtcbiAgaWYgKG4gPD0gMCB8fCBzdGF0ZS5sZW5ndGggPT09IDAgJiYgc3RhdGUuZW5kZWQpIHJldHVybiAwO1xuICBpZiAoc3RhdGUub2JqZWN0TW9kZSkgcmV0dXJuIDE7XG4gIGlmIChuICE9PSBuKSB7XG4gICAgLy8gT25seSBmbG93IG9uZSBidWZmZXIgYXQgYSB0aW1lXG4gICAgaWYgKHN0YXRlLmZsb3dpbmcgJiYgc3RhdGUubGVuZ3RoKSByZXR1cm4gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YS5sZW5ndGg7ZWxzZSByZXR1cm4gc3RhdGUubGVuZ3RoO1xuICB9XG4gIC8vIElmIHdlJ3JlIGFza2luZyBmb3IgbW9yZSB0aGFuIHRoZSBjdXJyZW50IGh3bSwgdGhlbiByYWlzZSB0aGUgaHdtLlxuICBpZiAobiA+IHN0YXRlLmhpZ2hXYXRlck1hcmspIHN0YXRlLmhpZ2hXYXRlck1hcmsgPSBjb21wdXRlTmV3SGlnaFdhdGVyTWFyayhuKTtcbiAgaWYgKG4gPD0gc3RhdGUubGVuZ3RoKSByZXR1cm4gbjtcbiAgLy8gRG9uJ3QgaGF2ZSBlbm91Z2hcbiAgaWYgKCFzdGF0ZS5lbmRlZCkge1xuICAgIHN0YXRlLm5lZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgcmV0dXJuIDA7XG4gIH1cbiAgcmV0dXJuIHN0YXRlLmxlbmd0aDtcbn1cblxuLy8geW91IGNhbiBvdmVycmlkZSBlaXRoZXIgdGhpcyBtZXRob2QsIG9yIHRoZSBhc3luYyBfcmVhZChuKSBiZWxvdy5cblJlYWRhYmxlLnByb3RvdHlwZS5yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgZGVidWcoJ3JlYWQnLCBuKTtcbiAgbiA9IHBhcnNlSW50KG4sIDEwKTtcbiAgdmFyIHN0YXRlID0gdGhpcy5fcmVhZGFibGVTdGF0ZTtcbiAgdmFyIG5PcmlnID0gbjtcblxuICBpZiAobiAhPT0gMCkgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG5cbiAgLy8gaWYgd2UncmUgZG9pbmcgcmVhZCgwKSB0byB0cmlnZ2VyIGEgcmVhZGFibGUgZXZlbnQsIGJ1dCB3ZVxuICAvLyBhbHJlYWR5IGhhdmUgYSBidW5jaCBvZiBkYXRhIGluIHRoZSBidWZmZXIsIHRoZW4ganVzdCB0cmlnZ2VyXG4gIC8vIHRoZSAncmVhZGFibGUnIGV2ZW50IGFuZCBtb3ZlIG9uLlxuICBpZiAobiA9PT0gMCAmJiBzdGF0ZS5uZWVkUmVhZGFibGUgJiYgKHN0YXRlLmxlbmd0aCA+PSBzdGF0ZS5oaWdoV2F0ZXJNYXJrIHx8IHN0YXRlLmVuZGVkKSkge1xuICAgIGRlYnVnKCdyZWFkOiBlbWl0UmVhZGFibGUnLCBzdGF0ZS5sZW5ndGgsIHN0YXRlLmVuZGVkKTtcbiAgICBpZiAoc3RhdGUubGVuZ3RoID09PSAwICYmIHN0YXRlLmVuZGVkKSBlbmRSZWFkYWJsZSh0aGlzKTtlbHNlIGVtaXRSZWFkYWJsZSh0aGlzKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIG4gPSBob3dNdWNoVG9SZWFkKG4sIHN0YXRlKTtcblxuICAvLyBpZiB3ZSd2ZSBlbmRlZCwgYW5kIHdlJ3JlIG5vdyBjbGVhciwgdGhlbiBmaW5pc2ggaXQgdXAuXG4gIGlmIChuID09PSAwICYmIHN0YXRlLmVuZGVkKSB7XG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgZW5kUmVhZGFibGUodGhpcyk7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICAvLyBBbGwgdGhlIGFjdHVhbCBjaHVuayBnZW5lcmF0aW9uIGxvZ2ljIG5lZWRzIHRvIGJlXG4gIC8vICpiZWxvdyogdGhlIGNhbGwgdG8gX3JlYWQuICBUaGUgcmVhc29uIGlzIHRoYXQgaW4gY2VydGFpblxuICAvLyBzeW50aGV0aWMgc3RyZWFtIGNhc2VzLCBzdWNoIGFzIHBhc3N0aHJvdWdoIHN0cmVhbXMsIF9yZWFkXG4gIC8vIG1heSBiZSBhIGNvbXBsZXRlbHkgc3luY2hyb25vdXMgb3BlcmF0aW9uIHdoaWNoIG1heSBjaGFuZ2VcbiAgLy8gdGhlIHN0YXRlIG9mIHRoZSByZWFkIGJ1ZmZlciwgcHJvdmlkaW5nIGVub3VnaCBkYXRhIHdoZW5cbiAgLy8gYmVmb3JlIHRoZXJlIHdhcyAqbm90KiBlbm91Z2guXG4gIC8vXG4gIC8vIFNvLCB0aGUgc3RlcHMgYXJlOlxuICAvLyAxLiBGaWd1cmUgb3V0IHdoYXQgdGhlIHN0YXRlIG9mIHRoaW5ncyB3aWxsIGJlIGFmdGVyIHdlIGRvXG4gIC8vIGEgcmVhZCBmcm9tIHRoZSBidWZmZXIuXG4gIC8vXG4gIC8vIDIuIElmIHRoYXQgcmVzdWx0aW5nIHN0YXRlIHdpbGwgdHJpZ2dlciBhIF9yZWFkLCB0aGVuIGNhbGwgX3JlYWQuXG4gIC8vIE5vdGUgdGhhdCB0aGlzIG1heSBiZSBhc3luY2hyb25vdXMsIG9yIHN5bmNocm9ub3VzLiAgWWVzLCBpdCBpc1xuICAvLyBkZWVwbHkgdWdseSB0byB3cml0ZSBBUElzIHRoaXMgd2F5LCBidXQgdGhhdCBzdGlsbCBkb2Vzbid0IG1lYW5cbiAgLy8gdGhhdCB0aGUgUmVhZGFibGUgY2xhc3Mgc2hvdWxkIGJlaGF2ZSBpbXByb3Blcmx5LCBhcyBzdHJlYW1zIGFyZVxuICAvLyBkZXNpZ25lZCB0byBiZSBzeW5jL2FzeW5jIGFnbm9zdGljLlxuICAvLyBUYWtlIG5vdGUgaWYgdGhlIF9yZWFkIGNhbGwgaXMgc3luYyBvciBhc3luYyAoaWUsIGlmIHRoZSByZWFkIGNhbGxcbiAgLy8gaGFzIHJldHVybmVkIHlldCksIHNvIHRoYXQgd2Uga25vdyB3aGV0aGVyIG9yIG5vdCBpdCdzIHNhZmUgdG8gZW1pdFxuICAvLyAncmVhZGFibGUnIGV0Yy5cbiAgLy9cbiAgLy8gMy4gQWN0dWFsbHkgcHVsbCB0aGUgcmVxdWVzdGVkIGNodW5rcyBvdXQgb2YgdGhlIGJ1ZmZlciBhbmQgcmV0dXJuLlxuXG4gIC8vIGlmIHdlIG5lZWQgYSByZWFkYWJsZSBldmVudCwgdGhlbiB3ZSBuZWVkIHRvIGRvIHNvbWUgcmVhZGluZy5cbiAgdmFyIGRvUmVhZCA9IHN0YXRlLm5lZWRSZWFkYWJsZTtcbiAgZGVidWcoJ25lZWQgcmVhZGFibGUnLCBkb1JlYWQpO1xuXG4gIC8vIGlmIHdlIGN1cnJlbnRseSBoYXZlIGxlc3MgdGhhbiB0aGUgaGlnaFdhdGVyTWFyaywgdGhlbiBhbHNvIHJlYWQgc29tZVxuICBpZiAoc3RhdGUubGVuZ3RoID09PSAwIHx8IHN0YXRlLmxlbmd0aCAtIG4gPCBzdGF0ZS5oaWdoV2F0ZXJNYXJrKSB7XG4gICAgZG9SZWFkID0gdHJ1ZTtcbiAgICBkZWJ1ZygnbGVuZ3RoIGxlc3MgdGhhbiB3YXRlcm1hcmsnLCBkb1JlYWQpO1xuICB9XG5cbiAgLy8gaG93ZXZlciwgaWYgd2UndmUgZW5kZWQsIHRoZW4gdGhlcmUncyBubyBwb2ludCwgYW5kIGlmIHdlJ3JlIGFscmVhZHlcbiAgLy8gcmVhZGluZywgdGhlbiBpdCdzIHVubmVjZXNzYXJ5LlxuICBpZiAoc3RhdGUuZW5kZWQgfHwgc3RhdGUucmVhZGluZykge1xuICAgIGRvUmVhZCA9IGZhbHNlO1xuICAgIGRlYnVnKCdyZWFkaW5nIG9yIGVuZGVkJywgZG9SZWFkKTtcbiAgfSBlbHNlIGlmIChkb1JlYWQpIHtcbiAgICBkZWJ1ZygnZG8gcmVhZCcpO1xuICAgIHN0YXRlLnJlYWRpbmcgPSB0cnVlO1xuICAgIHN0YXRlLnN5bmMgPSB0cnVlO1xuICAgIC8vIGlmIHRoZSBsZW5ndGggaXMgY3VycmVudGx5IHplcm8sIHRoZW4gd2UgKm5lZWQqIGEgcmVhZGFibGUgZXZlbnQuXG4gICAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkgc3RhdGUubmVlZFJlYWRhYmxlID0gdHJ1ZTtcbiAgICAvLyBjYWxsIGludGVybmFsIHJlYWQgbWV0aG9kXG4gICAgdGhpcy5fcmVhZChzdGF0ZS5oaWdoV2F0ZXJNYXJrKTtcbiAgICBzdGF0ZS5zeW5jID0gZmFsc2U7XG4gICAgLy8gSWYgX3JlYWQgcHVzaGVkIGRhdGEgc3luY2hyb25vdXNseSwgdGhlbiBgcmVhZGluZ2Agd2lsbCBiZSBmYWxzZSxcbiAgICAvLyBhbmQgd2UgbmVlZCB0byByZS1ldmFsdWF0ZSBob3cgbXVjaCBkYXRhIHdlIGNhbiByZXR1cm4gdG8gdGhlIHVzZXIuXG4gICAgaWYgKCFzdGF0ZS5yZWFkaW5nKSBuID0gaG93TXVjaFRvUmVhZChuT3JpZywgc3RhdGUpO1xuICB9XG5cbiAgdmFyIHJldDtcbiAgaWYgKG4gPiAwKSByZXQgPSBmcm9tTGlzdChuLCBzdGF0ZSk7ZWxzZSByZXQgPSBudWxsO1xuXG4gIGlmIChyZXQgPT09IG51bGwpIHtcbiAgICBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgIG4gPSAwO1xuICB9IGVsc2Uge1xuICAgIHN0YXRlLmxlbmd0aCAtPSBuO1xuICB9XG5cbiAgaWYgKHN0YXRlLmxlbmd0aCA9PT0gMCkge1xuICAgIC8vIElmIHdlIGhhdmUgbm90aGluZyBpbiB0aGUgYnVmZmVyLCB0aGVuIHdlIHdhbnQgdG8ga25vd1xuICAgIC8vIGFzIHNvb24gYXMgd2UgKmRvKiBnZXQgc29tZXRoaW5nIGludG8gdGhlIGJ1ZmZlci5cbiAgICBpZiAoIXN0YXRlLmVuZGVkKSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gICAgLy8gSWYgd2UgdHJpZWQgdG8gcmVhZCgpIHBhc3QgdGhlIEVPRiwgdGhlbiBlbWl0IGVuZCBvbiB0aGUgbmV4dCB0aWNrLlxuICAgIGlmIChuT3JpZyAhPT0gbiAmJiBzdGF0ZS5lbmRlZCkgZW5kUmVhZGFibGUodGhpcyk7XG4gIH1cblxuICBpZiAocmV0ICE9PSBudWxsKSB0aGlzLmVtaXQoJ2RhdGEnLCByZXQpO1xuXG4gIHJldHVybiByZXQ7XG59O1xuXG5mdW5jdGlvbiBvbkVvZkNodW5rKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKHN0YXRlLmVuZGVkKSByZXR1cm47XG4gIGlmIChzdGF0ZS5kZWNvZGVyKSB7XG4gICAgdmFyIGNodW5rID0gc3RhdGUuZGVjb2Rlci5lbmQoKTtcbiAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSB7XG4gICAgICBzdGF0ZS5idWZmZXIucHVzaChjaHVuayk7XG4gICAgICBzdGF0ZS5sZW5ndGggKz0gc3RhdGUub2JqZWN0TW9kZSA/IDEgOiBjaHVuay5sZW5ndGg7XG4gICAgfVxuICB9XG4gIHN0YXRlLmVuZGVkID0gdHJ1ZTtcblxuICAvLyBlbWl0ICdyZWFkYWJsZScgbm93IHRvIG1ha2Ugc3VyZSBpdCBnZXRzIHBpY2tlZCB1cC5cbiAgZW1pdFJlYWRhYmxlKHN0cmVhbSk7XG59XG5cbi8vIERvbid0IGVtaXQgcmVhZGFibGUgcmlnaHQgYXdheSBpbiBzeW5jIG1vZGUsIGJlY2F1c2UgdGhpcyBjYW4gdHJpZ2dlclxuLy8gYW5vdGhlciByZWFkKCkgY2FsbCA9PiBzdGFjayBvdmVyZmxvdy4gIFRoaXMgd2F5LCBpdCBtaWdodCB0cmlnZ2VyXG4vLyBhIG5leHRUaWNrIHJlY3Vyc2lvbiB3YXJuaW5nLCBidXQgdGhhdCdzIG5vdCBzbyBiYWQuXG5mdW5jdGlvbiBlbWl0UmVhZGFibGUoc3RyZWFtKSB7XG4gIHZhciBzdGF0ZSA9IHN0cmVhbS5fcmVhZGFibGVTdGF0ZTtcbiAgc3RhdGUubmVlZFJlYWRhYmxlID0gZmFsc2U7XG4gIGlmICghc3RhdGUuZW1pdHRlZFJlYWRhYmxlKSB7XG4gICAgZGVidWcoJ2VtaXRSZWFkYWJsZScsIHN0YXRlLmZsb3dpbmcpO1xuICAgIHN0YXRlLmVtaXR0ZWRSZWFkYWJsZSA9IHRydWU7XG4gICAgaWYgKHN0YXRlLnN5bmMpIHBuYS5uZXh0VGljayhlbWl0UmVhZGFibGVfLCBzdHJlYW0pO2Vsc2UgZW1pdFJlYWRhYmxlXyhzdHJlYW0pO1xuICB9XG59XG5cbmZ1bmN0aW9uIGVtaXRSZWFkYWJsZV8oc3RyZWFtKSB7XG4gIGRlYnVnKCdlbWl0IHJlYWRhYmxlJyk7XG4gIHN0cmVhbS5lbWl0KCdyZWFkYWJsZScpO1xuICBmbG93KHN0cmVhbSk7XG59XG5cbi8vIGF0IHRoaXMgcG9pbnQsIHRoZSB1c2VyIGhhcyBwcmVzdW1hYmx5IHNlZW4gdGhlICdyZWFkYWJsZScgZXZlbnQsXG4vLyBhbmQgY2FsbGVkIHJlYWQoKSB0byBjb25zdW1lIHNvbWUgZGF0YS4gIHRoYXQgbWF5IGhhdmUgdHJpZ2dlcmVkXG4vLyBpbiB0dXJuIGFub3RoZXIgX3JlYWQobikgY2FsbCwgaW4gd2hpY2ggY2FzZSByZWFkaW5nID0gdHJ1ZSBpZlxuLy8gaXQncyBpbiBwcm9ncmVzcy5cbi8vIEhvd2V2ZXIsIGlmIHdlJ3JlIG5vdCBlbmRlZCwgb3IgcmVhZGluZywgYW5kIHRoZSBsZW5ndGggPCBod20sXG4vLyB0aGVuIGdvIGFoZWFkIGFuZCB0cnkgdG8gcmVhZCBzb21lIG1vcmUgcHJlZW1wdGl2ZWx5LlxuZnVuY3Rpb24gbWF5YmVSZWFkTW9yZShzdHJlYW0sIHN0YXRlKSB7XG4gIGlmICghc3RhdGUucmVhZGluZ01vcmUpIHtcbiAgICBzdGF0ZS5yZWFkaW5nTW9yZSA9IHRydWU7XG4gICAgcG5hLm5leHRUaWNrKG1heWJlUmVhZE1vcmVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBtYXliZVJlYWRNb3JlXyhzdHJlYW0sIHN0YXRlKSB7XG4gIHZhciBsZW4gPSBzdGF0ZS5sZW5ndGg7XG4gIHdoaWxlICghc3RhdGUucmVhZGluZyAmJiAhc3RhdGUuZmxvd2luZyAmJiAhc3RhdGUuZW5kZWQgJiYgc3RhdGUubGVuZ3RoIDwgc3RhdGUuaGlnaFdhdGVyTWFyaykge1xuICAgIGRlYnVnKCdtYXliZVJlYWRNb3JlIHJlYWQgMCcpO1xuICAgIHN0cmVhbS5yZWFkKDApO1xuICAgIGlmIChsZW4gPT09IHN0YXRlLmxlbmd0aClcbiAgICAgIC8vIGRpZG4ndCBnZXQgYW55IGRhdGEsIHN0b3Agc3Bpbm5pbmcuXG4gICAgICBicmVhaztlbHNlIGxlbiA9IHN0YXRlLmxlbmd0aDtcbiAgfVxuICBzdGF0ZS5yZWFkaW5nTW9yZSA9IGZhbHNlO1xufVxuXG4vLyBhYnN0cmFjdCBtZXRob2QuICB0byBiZSBvdmVycmlkZGVuIGluIHNwZWNpZmljIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyBjYWxsIGNiKGVyLCBkYXRhKSB3aGVyZSBkYXRhIGlzIDw9IG4gaW4gbGVuZ3RoLlxuLy8gZm9yIHZpcnR1YWwgKG5vbi1zdHJpbmcsIG5vbi1idWZmZXIpIHN0cmVhbXMsIFwibGVuZ3RoXCIgaXMgc29tZXdoYXRcbi8vIGFyYml0cmFyeSwgYW5kIHBlcmhhcHMgbm90IHZlcnkgbWVhbmluZ2Z1bC5cblJlYWRhYmxlLnByb3RvdHlwZS5fcmVhZCA9IGZ1bmN0aW9uIChuKSB7XG4gIHRoaXMuZW1pdCgnZXJyb3InLCBuZXcgRXJyb3IoJ19yZWFkKCkgaXMgbm90IGltcGxlbWVudGVkJykpO1xufTtcblxuUmVhZGFibGUucHJvdG90eXBlLnBpcGUgPSBmdW5jdGlvbiAoZGVzdCwgcGlwZU9wdHMpIHtcbiAgdmFyIHNyYyA9IHRoaXM7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG5cbiAgc3dpdGNoIChzdGF0ZS5waXBlc0NvdW50KSB7XG4gICAgY2FzZSAwOlxuICAgICAgc3RhdGUucGlwZXMgPSBkZXN0O1xuICAgICAgYnJlYWs7XG4gICAgY2FzZSAxOlxuICAgICAgc3RhdGUucGlwZXMgPSBbc3RhdGUucGlwZXMsIGRlc3RdO1xuICAgICAgYnJlYWs7XG4gICAgZGVmYXVsdDpcbiAgICAgIHN0YXRlLnBpcGVzLnB1c2goZGVzdCk7XG4gICAgICBicmVhaztcbiAgfVxuICBzdGF0ZS5waXBlc0NvdW50ICs9IDE7XG4gIGRlYnVnKCdwaXBlIGNvdW50PSVkIG9wdHM9JWonLCBzdGF0ZS5waXBlc0NvdW50LCBwaXBlT3B0cyk7XG5cbiAgdmFyIGRvRW5kID0gKCFwaXBlT3B0cyB8fCBwaXBlT3B0cy5lbmQgIT09IGZhbHNlKSAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZG91dCAmJiBkZXN0ICE9PSBwcm9jZXNzLnN0ZGVycjtcblxuICB2YXIgZW5kRm4gPSBkb0VuZCA/IG9uZW5kIDogdW5waXBlO1xuICBpZiAoc3RhdGUuZW5kRW1pdHRlZCkgcG5hLm5leHRUaWNrKGVuZEZuKTtlbHNlIHNyYy5vbmNlKCdlbmQnLCBlbmRGbik7XG5cbiAgZGVzdC5vbigndW5waXBlJywgb251bnBpcGUpO1xuICBmdW5jdGlvbiBvbnVucGlwZShyZWFkYWJsZSwgdW5waXBlSW5mbykge1xuICAgIGRlYnVnKCdvbnVucGlwZScpO1xuICAgIGlmIChyZWFkYWJsZSA9PT0gc3JjKSB7XG4gICAgICBpZiAodW5waXBlSW5mbyAmJiB1bnBpcGVJbmZvLmhhc1VucGlwZWQgPT09IGZhbHNlKSB7XG4gICAgICAgIHVucGlwZUluZm8uaGFzVW5waXBlZCA9IHRydWU7XG4gICAgICAgIGNsZWFudXAoKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBmdW5jdGlvbiBvbmVuZCgpIHtcbiAgICBkZWJ1Zygnb25lbmQnKTtcbiAgICBkZXN0LmVuZCgpO1xuICB9XG5cbiAgLy8gd2hlbiB0aGUgZGVzdCBkcmFpbnMsIGl0IHJlZHVjZXMgdGhlIGF3YWl0RHJhaW4gY291bnRlclxuICAvLyBvbiB0aGUgc291cmNlLiAgVGhpcyB3b3VsZCBiZSBtb3JlIGVsZWdhbnQgd2l0aCBhIC5vbmNlKClcbiAgLy8gaGFuZGxlciBpbiBmbG93KCksIGJ1dCBhZGRpbmcgYW5kIHJlbW92aW5nIHJlcGVhdGVkbHkgaXNcbiAgLy8gdG9vIHNsb3cuXG4gIHZhciBvbmRyYWluID0gcGlwZU9uRHJhaW4oc3JjKTtcbiAgZGVzdC5vbignZHJhaW4nLCBvbmRyYWluKTtcblxuICB2YXIgY2xlYW5lZFVwID0gZmFsc2U7XG4gIGZ1bmN0aW9uIGNsZWFudXAoKSB7XG4gICAgZGVidWcoJ2NsZWFudXAnKTtcbiAgICAvLyBjbGVhbnVwIGV2ZW50IGhhbmRsZXJzIG9uY2UgdGhlIHBpcGUgaXMgYnJva2VuXG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuICAgIGRlc3QucmVtb3ZlTGlzdGVuZXIoJ3VucGlwZScsIG9udW5waXBlKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIG9uZW5kKTtcbiAgICBzcmMucmVtb3ZlTGlzdGVuZXIoJ2VuZCcsIHVucGlwZSk7XG4gICAgc3JjLnJlbW92ZUxpc3RlbmVyKCdkYXRhJywgb25kYXRhKTtcblxuICAgIGNsZWFuZWRVcCA9IHRydWU7XG5cbiAgICAvLyBpZiB0aGUgcmVhZGVyIGlzIHdhaXRpbmcgZm9yIGEgZHJhaW4gZXZlbnQgZnJvbSB0aGlzXG4gICAgLy8gc3BlY2lmaWMgd3JpdGVyLCB0aGVuIGl0IHdvdWxkIGNhdXNlIGl0IHRvIG5ldmVyIHN0YXJ0XG4gICAgLy8gZmxvd2luZyBhZ2Fpbi5cbiAgICAvLyBTbywgaWYgdGhpcyBpcyBhd2FpdGluZyBhIGRyYWluLCB0aGVuIHdlIGp1c3QgY2FsbCBpdCBub3cuXG4gICAgLy8gSWYgd2UgZG9uJ3Qga25vdywgdGhlbiBhc3N1bWUgdGhhdCB3ZSBhcmUgd2FpdGluZyBmb3Igb25lLlxuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluICYmICghZGVzdC5fd3JpdGFibGVTdGF0ZSB8fCBkZXN0Ll93cml0YWJsZVN0YXRlLm5lZWREcmFpbikpIG9uZHJhaW4oKTtcbiAgfVxuXG4gIC8vIElmIHRoZSB1c2VyIHB1c2hlcyBtb3JlIGRhdGEgd2hpbGUgd2UncmUgd3JpdGluZyB0byBkZXN0IHRoZW4gd2UnbGwgZW5kIHVwXG4gIC8vIGluIG9uZGF0YSBhZ2Fpbi4gSG93ZXZlciwgd2Ugb25seSB3YW50IHRvIGluY3JlYXNlIGF3YWl0RHJhaW4gb25jZSBiZWNhdXNlXG4gIC8vIGRlc3Qgd2lsbCBvbmx5IGVtaXQgb25lICdkcmFpbicgZXZlbnQgZm9yIHRoZSBtdWx0aXBsZSB3cml0ZXMuXG4gIC8vID0+IEludHJvZHVjZSBhIGd1YXJkIG9uIGluY3JlYXNpbmcgYXdhaXREcmFpbi5cbiAgdmFyIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgc3JjLm9uKCdkYXRhJywgb25kYXRhKTtcbiAgZnVuY3Rpb24gb25kYXRhKGNodW5rKSB7XG4gICAgZGVidWcoJ29uZGF0YScpO1xuICAgIGluY3JlYXNlZEF3YWl0RHJhaW4gPSBmYWxzZTtcbiAgICB2YXIgcmV0ID0gZGVzdC53cml0ZShjaHVuayk7XG4gICAgaWYgKGZhbHNlID09PSByZXQgJiYgIWluY3JlYXNlZEF3YWl0RHJhaW4pIHtcbiAgICAgIC8vIElmIHRoZSB1c2VyIHVucGlwZWQgZHVyaW5nIGBkZXN0LndyaXRlKClgLCBpdCBpcyBwb3NzaWJsZVxuICAgICAgLy8gdG8gZ2V0IHN0dWNrIGluIGEgcGVybWFuZW50bHkgcGF1c2VkIHN0YXRlIGlmIHRoYXQgd3JpdGVcbiAgICAgIC8vIGFsc28gcmV0dXJuZWQgZmFsc2UuXG4gICAgICAvLyA9PiBDaGVjayB3aGV0aGVyIGBkZXN0YCBpcyBzdGlsbCBhIHBpcGluZyBkZXN0aW5hdGlvbi5cbiAgICAgIGlmICgoc3RhdGUucGlwZXNDb3VudCA9PT0gMSAmJiBzdGF0ZS5waXBlcyA9PT0gZGVzdCB8fCBzdGF0ZS5waXBlc0NvdW50ID4gMSAmJiBpbmRleE9mKHN0YXRlLnBpcGVzLCBkZXN0KSAhPT0gLTEpICYmICFjbGVhbmVkVXApIHtcbiAgICAgICAgZGVidWcoJ2ZhbHNlIHdyaXRlIHJlc3BvbnNlLCBwYXVzZScsIHNyYy5fcmVhZGFibGVTdGF0ZS5hd2FpdERyYWluKTtcbiAgICAgICAgc3JjLl9yZWFkYWJsZVN0YXRlLmF3YWl0RHJhaW4rKztcbiAgICAgICAgaW5jcmVhc2VkQXdhaXREcmFpbiA9IHRydWU7XG4gICAgICB9XG4gICAgICBzcmMucGF1c2UoKTtcbiAgICB9XG4gIH1cblxuICAvLyBpZiB0aGUgZGVzdCBoYXMgYW4gZXJyb3IsIHRoZW4gc3RvcCBwaXBpbmcgaW50byBpdC5cbiAgLy8gaG93ZXZlciwgZG9uJ3Qgc3VwcHJlc3MgdGhlIHRocm93aW5nIGJlaGF2aW9yIGZvciB0aGlzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgZGVidWcoJ29uZXJyb3InLCBlcik7XG4gICAgdW5waXBlKCk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBpZiAoRUVsaXN0ZW5lckNvdW50KGRlc3QsICdlcnJvcicpID09PSAwKSBkZXN0LmVtaXQoJ2Vycm9yJywgZXIpO1xuICB9XG5cbiAgLy8gTWFrZSBzdXJlIG91ciBlcnJvciBoYW5kbGVyIGlzIGF0dGFjaGVkIGJlZm9yZSB1c2VybGFuZCBvbmVzLlxuICBwcmVwZW5kTGlzdGVuZXIoZGVzdCwgJ2Vycm9yJywgb25lcnJvcik7XG5cbiAgLy8gQm90aCBjbG9zZSBhbmQgZmluaXNoIHNob3VsZCB0cmlnZ2VyIHVucGlwZSwgYnV0IG9ubHkgb25jZS5cbiAgZnVuY3Rpb24gb25jbG9zZSgpIHtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdmaW5pc2gnLCBvbmZpbmlzaCk7XG4gICAgdW5waXBlKCk7XG4gIH1cbiAgZGVzdC5vbmNlKCdjbG9zZScsIG9uY2xvc2UpO1xuICBmdW5jdGlvbiBvbmZpbmlzaCgpIHtcbiAgICBkZWJ1Zygnb25maW5pc2gnKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIG9uY2xvc2UpO1xuICAgIHVucGlwZSgpO1xuICB9XG4gIGRlc3Qub25jZSgnZmluaXNoJywgb25maW5pc2gpO1xuXG4gIGZ1bmN0aW9uIHVucGlwZSgpIHtcbiAgICBkZWJ1ZygndW5waXBlJyk7XG4gICAgc3JjLnVucGlwZShkZXN0KTtcbiAgfVxuXG4gIC8vIHRlbGwgdGhlIGRlc3QgdGhhdCBpdCdzIGJlaW5nIHBpcGVkIHRvXG4gIGRlc3QuZW1pdCgncGlwZScsIHNyYyk7XG5cbiAgLy8gc3RhcnQgdGhlIGZsb3cgaWYgaXQgaGFzbid0IGJlZW4gc3RhcnRlZCBhbHJlYWR5LlxuICBpZiAoIXN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGlwZSByZXN1bWUnKTtcbiAgICBzcmMucmVzdW1lKCk7XG4gIH1cblxuICByZXR1cm4gZGVzdDtcbn07XG5cbmZ1bmN0aW9uIHBpcGVPbkRyYWluKHNyYykge1xuICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgIHZhciBzdGF0ZSA9IHNyYy5fcmVhZGFibGVTdGF0ZTtcbiAgICBkZWJ1ZygncGlwZU9uRHJhaW4nLCBzdGF0ZS5hd2FpdERyYWluKTtcbiAgICBpZiAoc3RhdGUuYXdhaXREcmFpbikgc3RhdGUuYXdhaXREcmFpbi0tO1xuICAgIGlmIChzdGF0ZS5hd2FpdERyYWluID09PSAwICYmIEVFbGlzdGVuZXJDb3VudChzcmMsICdkYXRhJykpIHtcbiAgICAgIHN0YXRlLmZsb3dpbmcgPSB0cnVlO1xuICAgICAgZmxvdyhzcmMpO1xuICAgIH1cbiAgfTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnVucGlwZSA9IGZ1bmN0aW9uIChkZXN0KSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciB1bnBpcGVJbmZvID0geyBoYXNVbnBpcGVkOiBmYWxzZSB9O1xuXG4gIC8vIGlmIHdlJ3JlIG5vdCBwaXBpbmcgYW55d2hlcmUsIHRoZW4gZG8gbm90aGluZy5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDApIHJldHVybiB0aGlzO1xuXG4gIC8vIGp1c3Qgb25lIGRlc3RpbmF0aW9uLiAgbW9zdCBjb21tb24gY2FzZS5cbiAgaWYgKHN0YXRlLnBpcGVzQ291bnQgPT09IDEpIHtcbiAgICAvLyBwYXNzZWQgaW4gb25lLCBidXQgaXQncyBub3QgdGhlIHJpZ2h0IG9uZS5cbiAgICBpZiAoZGVzdCAmJiBkZXN0ICE9PSBzdGF0ZS5waXBlcykgcmV0dXJuIHRoaXM7XG5cbiAgICBpZiAoIWRlc3QpIGRlc3QgPSBzdGF0ZS5waXBlcztcblxuICAgIC8vIGdvdCBhIG1hdGNoLlxuICAgIHN0YXRlLnBpcGVzID0gbnVsbDtcbiAgICBzdGF0ZS5waXBlc0NvdW50ID0gMDtcbiAgICBzdGF0ZS5mbG93aW5nID0gZmFsc2U7XG4gICAgaWYgKGRlc3QpIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyBzbG93IGNhc2UuIG11bHRpcGxlIHBpcGUgZGVzdGluYXRpb25zLlxuXG4gIGlmICghZGVzdCkge1xuICAgIC8vIHJlbW92ZSBhbGwuXG4gICAgdmFyIGRlc3RzID0gc3RhdGUucGlwZXM7XG4gICAgdmFyIGxlbiA9IHN0YXRlLnBpcGVzQ291bnQ7XG4gICAgc3RhdGUucGlwZXMgPSBudWxsO1xuICAgIHN0YXRlLnBpcGVzQ291bnQgPSAwO1xuICAgIHN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcblxuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgbGVuOyBpKyspIHtcbiAgICAgIGRlc3RzW2ldLmVtaXQoJ3VucGlwZScsIHRoaXMsIHVucGlwZUluZm8pO1xuICAgIH1yZXR1cm4gdGhpcztcbiAgfVxuXG4gIC8vIHRyeSB0byBmaW5kIHRoZSByaWdodCBvbmUuXG4gIHZhciBpbmRleCA9IGluZGV4T2Yoc3RhdGUucGlwZXMsIGRlc3QpO1xuICBpZiAoaW5kZXggPT09IC0xKSByZXR1cm4gdGhpcztcblxuICBzdGF0ZS5waXBlcy5zcGxpY2UoaW5kZXgsIDEpO1xuICBzdGF0ZS5waXBlc0NvdW50IC09IDE7XG4gIGlmIChzdGF0ZS5waXBlc0NvdW50ID09PSAxKSBzdGF0ZS5waXBlcyA9IHN0YXRlLnBpcGVzWzBdO1xuXG4gIGRlc3QuZW1pdCgndW5waXBlJywgdGhpcywgdW5waXBlSW5mbyk7XG5cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG4vLyBzZXQgdXAgZGF0YSBldmVudHMgaWYgdGhleSBhcmUgYXNrZWQgZm9yXG4vLyBFbnN1cmUgcmVhZGFibGUgbGlzdGVuZXJzIGV2ZW50dWFsbHkgZ2V0IHNvbWV0aGluZ1xuUmVhZGFibGUucHJvdG90eXBlLm9uID0gZnVuY3Rpb24gKGV2LCBmbikge1xuICB2YXIgcmVzID0gU3RyZWFtLnByb3RvdHlwZS5vbi5jYWxsKHRoaXMsIGV2LCBmbik7XG5cbiAgaWYgKGV2ID09PSAnZGF0YScpIHtcbiAgICAvLyBTdGFydCBmbG93aW5nIG9uIG5leHQgdGljayBpZiBzdHJlYW0gaXNuJ3QgZXhwbGljaXRseSBwYXVzZWRcbiAgICBpZiAodGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nICE9PSBmYWxzZSkgdGhpcy5yZXN1bWUoKTtcbiAgfSBlbHNlIGlmIChldiA9PT0gJ3JlYWRhYmxlJykge1xuICAgIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gICAgaWYgKCFzdGF0ZS5lbmRFbWl0dGVkICYmICFzdGF0ZS5yZWFkYWJsZUxpc3RlbmluZykge1xuICAgICAgc3RhdGUucmVhZGFibGVMaXN0ZW5pbmcgPSBzdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuICAgICAgc3RhdGUuZW1pdHRlZFJlYWRhYmxlID0gZmFsc2U7XG4gICAgICBpZiAoIXN0YXRlLnJlYWRpbmcpIHtcbiAgICAgICAgcG5hLm5leHRUaWNrKG5SZWFkaW5nTmV4dFRpY2ssIHRoaXMpO1xuICAgICAgfSBlbHNlIGlmIChzdGF0ZS5sZW5ndGgpIHtcbiAgICAgICAgZW1pdFJlYWRhYmxlKHRoaXMpO1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIHJldHVybiByZXM7XG59O1xuUmVhZGFibGUucHJvdG90eXBlLmFkZExpc3RlbmVyID0gUmVhZGFibGUucHJvdG90eXBlLm9uO1xuXG5mdW5jdGlvbiBuUmVhZGluZ05leHRUaWNrKHNlbGYpIHtcbiAgZGVidWcoJ3JlYWRhYmxlIG5leHR0aWNrIHJlYWQgMCcpO1xuICBzZWxmLnJlYWQoMCk7XG59XG5cbi8vIHBhdXNlKCkgYW5kIHJlc3VtZSgpIGFyZSByZW1uYW50cyBvZiB0aGUgbGVnYWN5IHJlYWRhYmxlIHN0cmVhbSBBUElcbi8vIElmIHRoZSB1c2VyIHVzZXMgdGhlbSwgdGhlbiBzd2l0Y2ggaW50byBvbGQgbW9kZS5cblJlYWRhYmxlLnByb3RvdHlwZS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIGlmICghc3RhdGUuZmxvd2luZykge1xuICAgIGRlYnVnKCdyZXN1bWUnKTtcbiAgICBzdGF0ZS5mbG93aW5nID0gdHJ1ZTtcbiAgICByZXN1bWUodGhpcywgc3RhdGUpO1xuICB9XG4gIHJldHVybiB0aGlzO1xufTtcblxuZnVuY3Rpb24gcmVzdW1lKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZXN1bWVTY2hlZHVsZWQpIHtcbiAgICBzdGF0ZS5yZXN1bWVTY2hlZHVsZWQgPSB0cnVlO1xuICAgIHBuYS5uZXh0VGljayhyZXN1bWVfLCBzdHJlYW0sIHN0YXRlKTtcbiAgfVxufVxuXG5mdW5jdGlvbiByZXN1bWVfKHN0cmVhbSwgc3RhdGUpIHtcbiAgaWYgKCFzdGF0ZS5yZWFkaW5nKSB7XG4gICAgZGVidWcoJ3Jlc3VtZSByZWFkIDAnKTtcbiAgICBzdHJlYW0ucmVhZCgwKTtcbiAgfVxuXG4gIHN0YXRlLnJlc3VtZVNjaGVkdWxlZCA9IGZhbHNlO1xuICBzdGF0ZS5hd2FpdERyYWluID0gMDtcbiAgc3RyZWFtLmVtaXQoJ3Jlc3VtZScpO1xuICBmbG93KHN0cmVhbSk7XG4gIGlmIChzdGF0ZS5mbG93aW5nICYmICFzdGF0ZS5yZWFkaW5nKSBzdHJlYW0ucmVhZCgwKTtcbn1cblxuUmVhZGFibGUucHJvdG90eXBlLnBhdXNlID0gZnVuY3Rpb24gKCkge1xuICBkZWJ1ZygnY2FsbCBwYXVzZSBmbG93aW5nPSVqJywgdGhpcy5fcmVhZGFibGVTdGF0ZS5mbG93aW5nKTtcbiAgaWYgKGZhbHNlICE9PSB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcpIHtcbiAgICBkZWJ1ZygncGF1c2UnKTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmZsb3dpbmcgPSBmYWxzZTtcbiAgICB0aGlzLmVtaXQoJ3BhdXNlJyk7XG4gIH1cbiAgcmV0dXJuIHRoaXM7XG59O1xuXG5mdW5jdGlvbiBmbG93KHN0cmVhbSkge1xuICB2YXIgc3RhdGUgPSBzdHJlYW0uX3JlYWRhYmxlU3RhdGU7XG4gIGRlYnVnKCdmbG93Jywgc3RhdGUuZmxvd2luZyk7XG4gIHdoaWxlIChzdGF0ZS5mbG93aW5nICYmIHN0cmVhbS5yZWFkKCkgIT09IG51bGwpIHt9XG59XG5cbi8vIHdyYXAgYW4gb2xkLXN0eWxlIHN0cmVhbSBhcyB0aGUgYXN5bmMgZGF0YSBzb3VyY2UuXG4vLyBUaGlzIGlzICpub3QqIHBhcnQgb2YgdGhlIHJlYWRhYmxlIHN0cmVhbSBpbnRlcmZhY2UuXG4vLyBJdCBpcyBhbiB1Z2x5IHVuZm9ydHVuYXRlIG1lc3Mgb2YgaGlzdG9yeS5cblJlYWRhYmxlLnByb3RvdHlwZS53cmFwID0gZnVuY3Rpb24gKHN0cmVhbSkge1xuICB2YXIgX3RoaXMgPSB0aGlzO1xuXG4gIHZhciBzdGF0ZSA9IHRoaXMuX3JlYWRhYmxlU3RhdGU7XG4gIHZhciBwYXVzZWQgPSBmYWxzZTtcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBlbmQnKTtcbiAgICBpZiAoc3RhdGUuZGVjb2RlciAmJiAhc3RhdGUuZW5kZWQpIHtcbiAgICAgIHZhciBjaHVuayA9IHN0YXRlLmRlY29kZXIuZW5kKCk7XG4gICAgICBpZiAoY2h1bmsgJiYgY2h1bmsubGVuZ3RoKSBfdGhpcy5wdXNoKGNodW5rKTtcbiAgICB9XG5cbiAgICBfdGhpcy5wdXNoKG51bGwpO1xuICB9KTtcblxuICBzdHJlYW0ub24oJ2RhdGEnLCBmdW5jdGlvbiAoY2h1bmspIHtcbiAgICBkZWJ1Zygnd3JhcHBlZCBkYXRhJyk7XG4gICAgaWYgKHN0YXRlLmRlY29kZXIpIGNodW5rID0gc3RhdGUuZGVjb2Rlci53cml0ZShjaHVuayk7XG5cbiAgICAvLyBkb24ndCBza2lwIG92ZXIgZmFsc3kgdmFsdWVzIGluIG9iamVjdE1vZGVcbiAgICBpZiAoc3RhdGUub2JqZWN0TW9kZSAmJiAoY2h1bmsgPT09IG51bGwgfHwgY2h1bmsgPT09IHVuZGVmaW5lZCkpIHJldHVybjtlbHNlIGlmICghc3RhdGUub2JqZWN0TW9kZSAmJiAoIWNodW5rIHx8ICFjaHVuay5sZW5ndGgpKSByZXR1cm47XG5cbiAgICB2YXIgcmV0ID0gX3RoaXMucHVzaChjaHVuayk7XG4gICAgaWYgKCFyZXQpIHtcbiAgICAgIHBhdXNlZCA9IHRydWU7XG4gICAgICBzdHJlYW0ucGF1c2UoKTtcbiAgICB9XG4gIH0pO1xuXG4gIC8vIHByb3h5IGFsbCB0aGUgb3RoZXIgbWV0aG9kcy5cbiAgLy8gaW1wb3J0YW50IHdoZW4gd3JhcHBpbmcgZmlsdGVycyBhbmQgZHVwbGV4ZXMuXG4gIGZvciAodmFyIGkgaW4gc3RyZWFtKSB7XG4gICAgaWYgKHRoaXNbaV0gPT09IHVuZGVmaW5lZCAmJiB0eXBlb2Ygc3RyZWFtW2ldID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICB0aGlzW2ldID0gZnVuY3Rpb24gKG1ldGhvZCkge1xuICAgICAgICByZXR1cm4gZnVuY3Rpb24gKCkge1xuICAgICAgICAgIHJldHVybiBzdHJlYW1bbWV0aG9kXS5hcHBseShzdHJlYW0sIGFyZ3VtZW50cyk7XG4gICAgICAgIH07XG4gICAgICB9KGkpO1xuICAgIH1cbiAgfVxuXG4gIC8vIHByb3h5IGNlcnRhaW4gaW1wb3J0YW50IGV2ZW50cy5cbiAgZm9yICh2YXIgbiA9IDA7IG4gPCBrUHJveHlFdmVudHMubGVuZ3RoOyBuKyspIHtcbiAgICBzdHJlYW0ub24oa1Byb3h5RXZlbnRzW25dLCB0aGlzLmVtaXQuYmluZCh0aGlzLCBrUHJveHlFdmVudHNbbl0pKTtcbiAgfVxuXG4gIC8vIHdoZW4gd2UgdHJ5IHRvIGNvbnN1bWUgc29tZSBtb3JlIGJ5dGVzLCBzaW1wbHkgdW5wYXVzZSB0aGVcbiAgLy8gdW5kZXJseWluZyBzdHJlYW0uXG4gIHRoaXMuX3JlYWQgPSBmdW5jdGlvbiAobikge1xuICAgIGRlYnVnKCd3cmFwcGVkIF9yZWFkJywgbik7XG4gICAgaWYgKHBhdXNlZCkge1xuICAgICAgcGF1c2VkID0gZmFsc2U7XG4gICAgICBzdHJlYW0ucmVzdW1lKCk7XG4gICAgfVxuICB9O1xuXG4gIHJldHVybiB0aGlzO1xufTtcblxuT2JqZWN0LmRlZmluZVByb3BlcnR5KFJlYWRhYmxlLnByb3RvdHlwZSwgJ3JlYWRhYmxlSGlnaFdhdGVyTWFyaycsIHtcbiAgLy8gbWFraW5nIGl0IGV4cGxpY2l0IHRoaXMgcHJvcGVydHkgaXMgbm90IGVudW1lcmFibGVcbiAgLy8gYmVjYXVzZSBvdGhlcndpc2Ugc29tZSBwcm90b3R5cGUgbWFuaXB1bGF0aW9uIGluXG4gIC8vIHVzZXJsYW5kIHdpbGwgZmFpbFxuICBlbnVtZXJhYmxlOiBmYWxzZSxcbiAgZ2V0OiBmdW5jdGlvbiAoKSB7XG4gICAgcmV0dXJuIHRoaXMuX3JlYWRhYmxlU3RhdGUuaGlnaFdhdGVyTWFyaztcbiAgfVxufSk7XG5cbi8vIGV4cG9zZWQgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS5cblJlYWRhYmxlLl9mcm9tTGlzdCA9IGZyb21MaXN0O1xuXG4vLyBQbHVjayBvZmYgbiBieXRlcyBmcm9tIGFuIGFycmF5IG9mIGJ1ZmZlcnMuXG4vLyBMZW5ndGggaXMgdGhlIGNvbWJpbmVkIGxlbmd0aHMgb2YgYWxsIHRoZSBidWZmZXJzIGluIHRoZSBsaXN0LlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdChuLCBzdGF0ZSkge1xuICAvLyBub3RoaW5nIGJ1ZmZlcmVkXG4gIGlmIChzdGF0ZS5sZW5ndGggPT09IDApIHJldHVybiBudWxsO1xuXG4gIHZhciByZXQ7XG4gIGlmIChzdGF0ZS5vYmplY3RNb2RlKSByZXQgPSBzdGF0ZS5idWZmZXIuc2hpZnQoKTtlbHNlIGlmICghbiB8fCBuID49IHN0YXRlLmxlbmd0aCkge1xuICAgIC8vIHJlYWQgaXQgYWxsLCB0cnVuY2F0ZSB0aGUgbGlzdFxuICAgIGlmIChzdGF0ZS5kZWNvZGVyKSByZXQgPSBzdGF0ZS5idWZmZXIuam9pbignJyk7ZWxzZSBpZiAoc3RhdGUuYnVmZmVyLmxlbmd0aCA9PT0gMSkgcmV0ID0gc3RhdGUuYnVmZmVyLmhlYWQuZGF0YTtlbHNlIHJldCA9IHN0YXRlLmJ1ZmZlci5jb25jYXQoc3RhdGUubGVuZ3RoKTtcbiAgICBzdGF0ZS5idWZmZXIuY2xlYXIoKTtcbiAgfSBlbHNlIHtcbiAgICAvLyByZWFkIHBhcnQgb2YgbGlzdFxuICAgIHJldCA9IGZyb21MaXN0UGFydGlhbChuLCBzdGF0ZS5idWZmZXIsIHN0YXRlLmRlY29kZXIpO1xuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gRXh0cmFjdHMgb25seSBlbm91Z2ggYnVmZmVyZWQgZGF0YSB0byBzYXRpc2Z5IHRoZSBhbW91bnQgcmVxdWVzdGVkLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBmcm9tTGlzdFBhcnRpYWwobiwgbGlzdCwgaGFzU3RyaW5ncykge1xuICB2YXIgcmV0O1xuICBpZiAobiA8IGxpc3QuaGVhZC5kYXRhLmxlbmd0aCkge1xuICAgIC8vIHNsaWNlIGlzIHRoZSBzYW1lIGZvciBidWZmZXJzIGFuZCBzdHJpbmdzXG4gICAgcmV0ID0gbGlzdC5oZWFkLmRhdGEuc2xpY2UoMCwgbik7XG4gICAgbGlzdC5oZWFkLmRhdGEgPSBsaXN0LmhlYWQuZGF0YS5zbGljZShuKTtcbiAgfSBlbHNlIGlmIChuID09PSBsaXN0LmhlYWQuZGF0YS5sZW5ndGgpIHtcbiAgICAvLyBmaXJzdCBjaHVuayBpcyBhIHBlcmZlY3QgbWF0Y2hcbiAgICByZXQgPSBsaXN0LnNoaWZ0KCk7XG4gIH0gZWxzZSB7XG4gICAgLy8gcmVzdWx0IHNwYW5zIG1vcmUgdGhhbiBvbmUgYnVmZmVyXG4gICAgcmV0ID0gaGFzU3RyaW5ncyA/IGNvcHlGcm9tQnVmZmVyU3RyaW5nKG4sIGxpc3QpIDogY29weUZyb21CdWZmZXIobiwgbGlzdCk7XG4gIH1cbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBjaGFyYWN0ZXJzIGZyb20gdGhlIGxpc3Qgb2YgYnVmZmVyZWQgZGF0YVxuLy8gY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlclN0cmluZyhuLCBsaXN0KSB7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHZhciByZXQgPSBwLmRhdGE7XG4gIG4gLT0gcmV0Lmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgc3RyID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBzdHIubGVuZ3RoID8gc3RyLmxlbmd0aCA6IG47XG4gICAgaWYgKG5iID09PSBzdHIubGVuZ3RoKSByZXQgKz0gc3RyO2Vsc2UgcmV0ICs9IHN0ci5zbGljZSgwLCBuKTtcbiAgICBuIC09IG5iO1xuICAgIGlmIChuID09PSAwKSB7XG4gICAgICBpZiAobmIgPT09IHN0ci5sZW5ndGgpIHtcbiAgICAgICAgKytjO1xuICAgICAgICBpZiAocC5uZXh0KSBsaXN0LmhlYWQgPSBwLm5leHQ7ZWxzZSBsaXN0LmhlYWQgPSBsaXN0LnRhaWwgPSBudWxsO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbGlzdC5oZWFkID0gcDtcbiAgICAgICAgcC5kYXRhID0gc3RyLnNsaWNlKG5iKTtcbiAgICAgIH1cbiAgICAgIGJyZWFrO1xuICAgIH1cbiAgICArK2M7XG4gIH1cbiAgbGlzdC5sZW5ndGggLT0gYztcbiAgcmV0dXJuIHJldDtcbn1cblxuLy8gQ29waWVzIGEgc3BlY2lmaWVkIGFtb3VudCBvZiBieXRlcyBmcm9tIHRoZSBsaXN0IG9mIGJ1ZmZlcmVkIGRhdGEgY2h1bmtzLlxuLy8gVGhpcyBmdW5jdGlvbiBpcyBkZXNpZ25lZCB0byBiZSBpbmxpbmFibGUsIHNvIHBsZWFzZSB0YWtlIGNhcmUgd2hlbiBtYWtpbmdcbi8vIGNoYW5nZXMgdG8gdGhlIGZ1bmN0aW9uIGJvZHkuXG5mdW5jdGlvbiBjb3B5RnJvbUJ1ZmZlcihuLCBsaXN0KSB7XG4gIHZhciByZXQgPSBCdWZmZXIuYWxsb2NVbnNhZmUobik7XG4gIHZhciBwID0gbGlzdC5oZWFkO1xuICB2YXIgYyA9IDE7XG4gIHAuZGF0YS5jb3B5KHJldCk7XG4gIG4gLT0gcC5kYXRhLmxlbmd0aDtcbiAgd2hpbGUgKHAgPSBwLm5leHQpIHtcbiAgICB2YXIgYnVmID0gcC5kYXRhO1xuICAgIHZhciBuYiA9IG4gPiBidWYubGVuZ3RoID8gYnVmLmxlbmd0aCA6IG47XG4gICAgYnVmLmNvcHkocmV0LCByZXQubGVuZ3RoIC0gbiwgMCwgbmIpO1xuICAgIG4gLT0gbmI7XG4gICAgaWYgKG4gPT09IDApIHtcbiAgICAgIGlmIChuYiA9PT0gYnVmLmxlbmd0aCkge1xuICAgICAgICArK2M7XG4gICAgICAgIGlmIChwLm5leHQpIGxpc3QuaGVhZCA9IHAubmV4dDtlbHNlIGxpc3QuaGVhZCA9IGxpc3QudGFpbCA9IG51bGw7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBsaXN0LmhlYWQgPSBwO1xuICAgICAgICBwLmRhdGEgPSBidWYuc2xpY2UobmIpO1xuICAgICAgfVxuICAgICAgYnJlYWs7XG4gICAgfVxuICAgICsrYztcbiAgfVxuICBsaXN0Lmxlbmd0aCAtPSBjO1xuICByZXR1cm4gcmV0O1xufVxuXG5mdW5jdGlvbiBlbmRSZWFkYWJsZShzdHJlYW0pIHtcbiAgdmFyIHN0YXRlID0gc3RyZWFtLl9yZWFkYWJsZVN0YXRlO1xuXG4gIC8vIElmIHdlIGdldCBoZXJlIGJlZm9yZSBjb25zdW1pbmcgYWxsIHRoZSBieXRlcywgdGhlbiB0aGF0IGlzIGFcbiAgLy8gYnVnIGluIG5vZGUuICBTaG91bGQgbmV2ZXIgaGFwcGVuLlxuICBpZiAoc3RhdGUubGVuZ3RoID4gMCkgdGhyb3cgbmV3IEVycm9yKCdcImVuZFJlYWRhYmxlKClcIiBjYWxsZWQgb24gbm9uLWVtcHR5IHN0cmVhbScpO1xuXG4gIGlmICghc3RhdGUuZW5kRW1pdHRlZCkge1xuICAgIHN0YXRlLmVuZGVkID0gdHJ1ZTtcbiAgICBwbmEubmV4dFRpY2soZW5kUmVhZGFibGVOVCwgc3RhdGUsIHN0cmVhbSk7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW5kUmVhZGFibGVOVChzdGF0ZSwgc3RyZWFtKSB7XG4gIC8vIENoZWNrIHRoYXQgd2UgZGlkbid0IGdldCBvbmUgbGFzdCB1bnNoaWZ0LlxuICBpZiAoIXN0YXRlLmVuZEVtaXR0ZWQgJiYgc3RhdGUubGVuZ3RoID09PSAwKSB7XG4gICAgc3RhdGUuZW5kRW1pdHRlZCA9IHRydWU7XG4gICAgc3RyZWFtLnJlYWRhYmxlID0gZmFsc2U7XG4gICAgc3RyZWFtLmVtaXQoJ2VuZCcpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGluZGV4T2YoeHMsIHgpIHtcbiAgZm9yICh2YXIgaSA9IDAsIGwgPSB4cy5sZW5ndGg7IGkgPCBsOyBpKyspIHtcbiAgICBpZiAoeHNbaV0gPT09IHgpIHJldHVybiBpO1xuICB9XG4gIHJldHVybiAtMTtcbn0iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJ2V2ZW50cycpLkV2ZW50RW1pdHRlcjtcbiIsIid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIHBuYSA9IHJlcXVpcmUoJ3Byb2Nlc3MtbmV4dGljay1hcmdzJyk7XG4vKjwvcmVwbGFjZW1lbnQ+Ki9cblxuLy8gdW5kb2N1bWVudGVkIGNiKCkgQVBJLCBuZWVkZWQgZm9yIGNvcmUsIG5vdCBmb3IgcHVibGljIEFQSVxuZnVuY3Rpb24gZGVzdHJveShlcnIsIGNiKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgdmFyIHJlYWRhYmxlRGVzdHJveWVkID0gdGhpcy5fcmVhZGFibGVTdGF0ZSAmJiB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZDtcbiAgdmFyIHdyaXRhYmxlRGVzdHJveWVkID0gdGhpcy5fd3JpdGFibGVTdGF0ZSAmJiB0aGlzLl93cml0YWJsZVN0YXRlLmRlc3Ryb3llZDtcblxuICBpZiAocmVhZGFibGVEZXN0cm95ZWQgfHwgd3JpdGFibGVEZXN0cm95ZWQpIHtcbiAgICBpZiAoY2IpIHtcbiAgICAgIGNiKGVycik7XG4gICAgfSBlbHNlIGlmIChlcnIgJiYgKCF0aGlzLl93cml0YWJsZVN0YXRlIHx8ICF0aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCkpIHtcbiAgICAgIHBuYS5uZXh0VGljayhlbWl0RXJyb3JOVCwgdGhpcywgZXJyKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXM7XG4gIH1cblxuICAvLyB3ZSBzZXQgZGVzdHJveWVkIHRvIHRydWUgYmVmb3JlIGZpcmluZyBlcnJvciBjYWxsYmFja3MgaW4gb3JkZXJcbiAgLy8gdG8gbWFrZSBpdCByZS1lbnRyYW5jZSBzYWZlIGluIGNhc2UgZGVzdHJveSgpIGlzIGNhbGxlZCB3aXRoaW4gY2FsbGJhY2tzXG5cbiAgaWYgKHRoaXMuX3JlYWRhYmxlU3RhdGUpIHtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmRlc3Ryb3llZCA9IHRydWU7XG4gIH1cblxuICAvLyBpZiB0aGlzIGlzIGEgZHVwbGV4IHN0cmVhbSBtYXJrIHRoZSB3cml0YWJsZSBwYXJ0IGFzIGRlc3Ryb3llZCBhcyB3ZWxsXG4gIGlmICh0aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5kZXN0cm95ZWQgPSB0cnVlO1xuICB9XG5cbiAgdGhpcy5fZGVzdHJveShlcnIgfHwgbnVsbCwgZnVuY3Rpb24gKGVycikge1xuICAgIGlmICghY2IgJiYgZXJyKSB7XG4gICAgICBwbmEubmV4dFRpY2soZW1pdEVycm9yTlQsIF90aGlzLCBlcnIpO1xuICAgICAgaWYgKF90aGlzLl93cml0YWJsZVN0YXRlKSB7XG4gICAgICAgIF90aGlzLl93cml0YWJsZVN0YXRlLmVycm9yRW1pdHRlZCA9IHRydWU7XG4gICAgICB9XG4gICAgfSBlbHNlIGlmIChjYikge1xuICAgICAgY2IoZXJyKTtcbiAgICB9XG4gIH0pO1xuXG4gIHJldHVybiB0aGlzO1xufVxuXG5mdW5jdGlvbiB1bmRlc3Ryb3koKSB7XG4gIGlmICh0aGlzLl9yZWFkYWJsZVN0YXRlKSB7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5kZXN0cm95ZWQgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLnJlYWRpbmcgPSBmYWxzZTtcbiAgICB0aGlzLl9yZWFkYWJsZVN0YXRlLmVuZGVkID0gZmFsc2U7XG4gICAgdGhpcy5fcmVhZGFibGVTdGF0ZS5lbmRFbWl0dGVkID0gZmFsc2U7XG4gIH1cblxuICBpZiAodGhpcy5fd3JpdGFibGVTdGF0ZSkge1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZGVzdHJveWVkID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5lbmRlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZW5kaW5nID0gZmFsc2U7XG4gICAgdGhpcy5fd3JpdGFibGVTdGF0ZS5maW5pc2hlZCA9IGZhbHNlO1xuICAgIHRoaXMuX3dyaXRhYmxlU3RhdGUuZXJyb3JFbWl0dGVkID0gZmFsc2U7XG4gIH1cbn1cblxuZnVuY3Rpb24gZW1pdEVycm9yTlQoc2VsZiwgZXJyKSB7XG4gIHNlbGYuZW1pdCgnZXJyb3InLCBlcnIpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IHtcbiAgZGVzdHJveTogZGVzdHJveSxcbiAgdW5kZXN0cm95OiB1bmRlc3Ryb3lcbn07IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbid1c2Ugc3RyaWN0JztcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cblxudmFyIEJ1ZmZlciA9IHJlcXVpcmUoJ3NhZmUtYnVmZmVyJykuQnVmZmVyO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnZhciBpc0VuY29kaW5nID0gQnVmZmVyLmlzRW5jb2RpbmcgfHwgZnVuY3Rpb24gKGVuY29kaW5nKSB7XG4gIGVuY29kaW5nID0gJycgKyBlbmNvZGluZztcbiAgc3dpdGNoIChlbmNvZGluZyAmJiBlbmNvZGluZy50b0xvd2VyQ2FzZSgpKSB7XG4gICAgY2FzZSAnaGV4JzpjYXNlICd1dGY4JzpjYXNlICd1dGYtOCc6Y2FzZSAnYXNjaWknOmNhc2UgJ2JpbmFyeSc6Y2FzZSAnYmFzZTY0JzpjYXNlICd1Y3MyJzpjYXNlICd1Y3MtMic6Y2FzZSAndXRmMTZsZSc6Y2FzZSAndXRmLTE2bGUnOmNhc2UgJ3Jhdyc6XG4gICAgICByZXR1cm4gdHJ1ZTtcbiAgICBkZWZhdWx0OlxuICAgICAgcmV0dXJuIGZhbHNlO1xuICB9XG59O1xuXG5mdW5jdGlvbiBfbm9ybWFsaXplRW5jb2RpbmcoZW5jKSB7XG4gIGlmICghZW5jKSByZXR1cm4gJ3V0ZjgnO1xuICB2YXIgcmV0cmllZDtcbiAgd2hpbGUgKHRydWUpIHtcbiAgICBzd2l0Y2ggKGVuYykge1xuICAgICAgY2FzZSAndXRmOCc6XG4gICAgICBjYXNlICd1dGYtOCc6XG4gICAgICAgIHJldHVybiAndXRmOCc7XG4gICAgICBjYXNlICd1Y3MyJzpcbiAgICAgIGNhc2UgJ3Vjcy0yJzpcbiAgICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgY2FzZSAndXRmLTE2bGUnOlxuICAgICAgICByZXR1cm4gJ3V0ZjE2bGUnO1xuICAgICAgY2FzZSAnbGF0aW4xJzpcbiAgICAgIGNhc2UgJ2JpbmFyeSc6XG4gICAgICAgIHJldHVybiAnbGF0aW4xJztcbiAgICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICBjYXNlICdhc2NpaSc6XG4gICAgICBjYXNlICdoZXgnOlxuICAgICAgICByZXR1cm4gZW5jO1xuICAgICAgZGVmYXVsdDpcbiAgICAgICAgaWYgKHJldHJpZWQpIHJldHVybjsgLy8gdW5kZWZpbmVkXG4gICAgICAgIGVuYyA9ICgnJyArIGVuYykudG9Mb3dlckNhc2UoKTtcbiAgICAgICAgcmV0cmllZCA9IHRydWU7XG4gICAgfVxuICB9XG59O1xuXG4vLyBEbyBub3QgY2FjaGUgYEJ1ZmZlci5pc0VuY29kaW5nYCB3aGVuIGNoZWNraW5nIGVuY29kaW5nIG5hbWVzIGFzIHNvbWVcbi8vIG1vZHVsZXMgbW9ua2V5LXBhdGNoIGl0IHRvIHN1cHBvcnQgYWRkaXRpb25hbCBlbmNvZGluZ3NcbmZ1bmN0aW9uIG5vcm1hbGl6ZUVuY29kaW5nKGVuYykge1xuICB2YXIgbmVuYyA9IF9ub3JtYWxpemVFbmNvZGluZyhlbmMpO1xuICBpZiAodHlwZW9mIG5lbmMgIT09ICdzdHJpbmcnICYmIChCdWZmZXIuaXNFbmNvZGluZyA9PT0gaXNFbmNvZGluZyB8fCAhaXNFbmNvZGluZyhlbmMpKSkgdGhyb3cgbmV3IEVycm9yKCdVbmtub3duIGVuY29kaW5nOiAnICsgZW5jKTtcbiAgcmV0dXJuIG5lbmMgfHwgZW5jO1xufVxuXG4vLyBTdHJpbmdEZWNvZGVyIHByb3ZpZGVzIGFuIGludGVyZmFjZSBmb3IgZWZmaWNpZW50bHkgc3BsaXR0aW5nIGEgc2VyaWVzIG9mXG4vLyBidWZmZXJzIGludG8gYSBzZXJpZXMgb2YgSlMgc3RyaW5ncyB3aXRob3V0IGJyZWFraW5nIGFwYXJ0IG11bHRpLWJ5dGVcbi8vIGNoYXJhY3RlcnMuXG5leHBvcnRzLlN0cmluZ0RlY29kZXIgPSBTdHJpbmdEZWNvZGVyO1xuZnVuY3Rpb24gU3RyaW5nRGVjb2RlcihlbmNvZGluZykge1xuICB0aGlzLmVuY29kaW5nID0gbm9ybWFsaXplRW5jb2RpbmcoZW5jb2RpbmcpO1xuICB2YXIgbmI7XG4gIHN3aXRjaCAodGhpcy5lbmNvZGluZykge1xuICAgIGNhc2UgJ3V0ZjE2bGUnOlxuICAgICAgdGhpcy50ZXh0ID0gdXRmMTZUZXh0O1xuICAgICAgdGhpcy5lbmQgPSB1dGYxNkVuZDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ3V0ZjgnOlxuICAgICAgdGhpcy5maWxsTGFzdCA9IHV0ZjhGaWxsTGFzdDtcbiAgICAgIG5iID0gNDtcbiAgICAgIGJyZWFrO1xuICAgIGNhc2UgJ2Jhc2U2NCc6XG4gICAgICB0aGlzLnRleHQgPSBiYXNlNjRUZXh0O1xuICAgICAgdGhpcy5lbmQgPSBiYXNlNjRFbmQ7XG4gICAgICBuYiA9IDM7XG4gICAgICBicmVhaztcbiAgICBkZWZhdWx0OlxuICAgICAgdGhpcy53cml0ZSA9IHNpbXBsZVdyaXRlO1xuICAgICAgdGhpcy5lbmQgPSBzaW1wbGVFbmQ7XG4gICAgICByZXR1cm47XG4gIH1cbiAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIHRoaXMubGFzdFRvdGFsID0gMDtcbiAgdGhpcy5sYXN0Q2hhciA9IEJ1ZmZlci5hbGxvY1Vuc2FmZShuYik7XG59XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLndyaXRlID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAoYnVmLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICB2YXIgcjtcbiAgdmFyIGk7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSB7XG4gICAgciA9IHRoaXMuZmlsbExhc3QoYnVmKTtcbiAgICBpZiAociA9PT0gdW5kZWZpbmVkKSByZXR1cm4gJyc7XG4gICAgaSA9IHRoaXMubGFzdE5lZWQ7XG4gICAgdGhpcy5sYXN0TmVlZCA9IDA7XG4gIH0gZWxzZSB7XG4gICAgaSA9IDA7XG4gIH1cbiAgaWYgKGkgPCBidWYubGVuZ3RoKSByZXR1cm4gciA/IHIgKyB0aGlzLnRleHQoYnVmLCBpKSA6IHRoaXMudGV4dChidWYsIGkpO1xuICByZXR1cm4gciB8fCAnJztcbn07XG5cblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmVuZCA9IHV0ZjhFbmQ7XG5cbi8vIFJldHVybnMgb25seSBjb21wbGV0ZSBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyXG5TdHJpbmdEZWNvZGVyLnByb3RvdHlwZS50ZXh0ID0gdXRmOFRleHQ7XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgcGFydGlhbCBub24tVVRGLTggY2hhcmFjdGVyIHVzaW5nIGJ5dGVzIGZyb20gYSBCdWZmZXJcblN0cmluZ0RlY29kZXIucHJvdG90eXBlLmZpbGxMYXN0ID0gZnVuY3Rpb24gKGJ1Zikge1xuICBpZiAodGhpcy5sYXN0TmVlZCA8PSBidWYubGVuZ3RoKSB7XG4gICAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCB0aGlzLmxhc3ROZWVkKTtcbiAgICByZXR1cm4gdGhpcy5sYXN0Q2hhci50b1N0cmluZyh0aGlzLmVuY29kaW5nLCAwLCB0aGlzLmxhc3RUb3RhbCk7XG4gIH1cbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufTtcblxuLy8gQ2hlY2tzIHRoZSB0eXBlIG9mIGEgVVRGLTggYnl0ZSwgd2hldGhlciBpdCdzIEFTQ0lJLCBhIGxlYWRpbmcgYnl0ZSwgb3IgYVxuLy8gY29udGludWF0aW9uIGJ5dGUuIElmIGFuIGludmFsaWQgYnl0ZSBpcyBkZXRlY3RlZCwgLTIgaXMgcmV0dXJuZWQuXG5mdW5jdGlvbiB1dGY4Q2hlY2tCeXRlKGJ5dGUpIHtcbiAgaWYgKGJ5dGUgPD0gMHg3RikgcmV0dXJuIDA7ZWxzZSBpZiAoYnl0ZSA+PiA1ID09PSAweDA2KSByZXR1cm4gMjtlbHNlIGlmIChieXRlID4+IDQgPT09IDB4MEUpIHJldHVybiAzO2Vsc2UgaWYgKGJ5dGUgPj4gMyA9PT0gMHgxRSkgcmV0dXJuIDQ7XG4gIHJldHVybiBieXRlID4+IDYgPT09IDB4MDIgPyAtMSA6IC0yO1xufVxuXG4vLyBDaGVja3MgYXQgbW9zdCAzIGJ5dGVzIGF0IHRoZSBlbmQgb2YgYSBCdWZmZXIgaW4gb3JkZXIgdG8gZGV0ZWN0IGFuXG4vLyBpbmNvbXBsZXRlIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyLiBUaGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVzICgyLCAzLCBvciA0KVxuLy8gbmVlZGVkIHRvIGNvbXBsZXRlIHRoZSBVVEYtOCBjaGFyYWN0ZXIgKGlmIGFwcGxpY2FibGUpIGFyZSByZXR1cm5lZC5cbmZ1bmN0aW9uIHV0ZjhDaGVja0luY29tcGxldGUoc2VsZiwgYnVmLCBpKSB7XG4gIHZhciBqID0gYnVmLmxlbmd0aCAtIDE7XG4gIGlmIChqIDwgaSkgcmV0dXJuIDA7XG4gIHZhciBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAxO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSBzZWxmLmxhc3ROZWVkID0gbmIgLSAyO1xuICAgIHJldHVybiBuYjtcbiAgfVxuICBpZiAoLS1qIDwgaSB8fCBuYiA9PT0gLTIpIHJldHVybiAwO1xuICBuYiA9IHV0ZjhDaGVja0J5dGUoYnVmW2pdKTtcbiAgaWYgKG5iID49IDApIHtcbiAgICBpZiAobmIgPiAwKSB7XG4gICAgICBpZiAobmIgPT09IDIpIG5iID0gMDtlbHNlIHNlbGYubGFzdE5lZWQgPSBuYiAtIDM7XG4gICAgfVxuICAgIHJldHVybiBuYjtcbiAgfVxuICByZXR1cm4gMDtcbn1cblxuLy8gVmFsaWRhdGVzIGFzIG1hbnkgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIG11bHRpLWJ5dGUgVVRGLTggY2hhcmFjdGVyIGFzXG4vLyBuZWVkZWQgb3IgYXJlIGF2YWlsYWJsZS4gSWYgd2Ugc2VlIGEgbm9uLWNvbnRpbnVhdGlvbiBieXRlIHdoZXJlIHdlIGV4cGVjdFxuLy8gb25lLCB3ZSBcInJlcGxhY2VcIiB0aGUgdmFsaWRhdGVkIGNvbnRpbnVhdGlvbiBieXRlcyB3ZSd2ZSBzZWVuIHNvIGZhciB3aXRoXG4vLyBhIHNpbmdsZSBVVEYtOCByZXBsYWNlbWVudCBjaGFyYWN0ZXIgKCdcXHVmZmZkJyksIHRvIG1hdGNoIHY4J3MgVVRGLTggZGVjb2Rpbmdcbi8vIGJlaGF2aW9yLiBUaGUgY29udGludWF0aW9uIGJ5dGUgY2hlY2sgaXMgaW5jbHVkZWQgdGhyZWUgdGltZXMgaW4gdGhlIGNhc2Vcbi8vIHdoZXJlIGFsbCBvZiB0aGUgY29udGludWF0aW9uIGJ5dGVzIGZvciBhIGNoYXJhY3RlciBleGlzdCBpbiB0aGUgc2FtZSBidWZmZXIuXG4vLyBJdCBpcyBhbHNvIGRvbmUgdGhpcyB3YXkgYXMgYSBzbGlnaHQgcGVyZm9ybWFuY2UgaW5jcmVhc2UgaW5zdGVhZCBvZiB1c2luZyBhXG4vLyBsb29wLlxuZnVuY3Rpb24gdXRmOENoZWNrRXh0cmFCeXRlcyhzZWxmLCBidWYsIHApIHtcbiAgaWYgKChidWZbMF0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgIHNlbGYubGFzdE5lZWQgPSAwO1xuICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gIH1cbiAgaWYgKHNlbGYubGFzdE5lZWQgPiAxICYmIGJ1Zi5sZW5ndGggPiAxKSB7XG4gICAgaWYgKChidWZbMV0gJiAweEMwKSAhPT0gMHg4MCkge1xuICAgICAgc2VsZi5sYXN0TmVlZCA9IDE7XG4gICAgICByZXR1cm4gJ1xcdWZmZmQnO1xuICAgIH1cbiAgICBpZiAoc2VsZi5sYXN0TmVlZCA+IDIgJiYgYnVmLmxlbmd0aCA+IDIpIHtcbiAgICAgIGlmICgoYnVmWzJdICYgMHhDMCkgIT09IDB4ODApIHtcbiAgICAgICAgc2VsZi5sYXN0TmVlZCA9IDI7XG4gICAgICAgIHJldHVybiAnXFx1ZmZmZCc7XG4gICAgICB9XG4gICAgfVxuICB9XG59XG5cbi8vIEF0dGVtcHRzIHRvIGNvbXBsZXRlIGEgbXVsdGktYnl0ZSBVVEYtOCBjaGFyYWN0ZXIgdXNpbmcgYnl0ZXMgZnJvbSBhIEJ1ZmZlci5cbmZ1bmN0aW9uIHV0ZjhGaWxsTGFzdChidWYpIHtcbiAgdmFyIHAgPSB0aGlzLmxhc3RUb3RhbCAtIHRoaXMubGFzdE5lZWQ7XG4gIHZhciByID0gdXRmOENoZWNrRXh0cmFCeXRlcyh0aGlzLCBidWYsIHApO1xuICBpZiAociAhPT0gdW5kZWZpbmVkKSByZXR1cm4gcjtcbiAgaWYgKHRoaXMubGFzdE5lZWQgPD0gYnVmLmxlbmd0aCkge1xuICAgIGJ1Zi5jb3B5KHRoaXMubGFzdENoYXIsIHAsIDAsIHRoaXMubGFzdE5lZWQpO1xuICAgIHJldHVybiB0aGlzLmxhc3RDaGFyLnRvU3RyaW5nKHRoaXMuZW5jb2RpbmcsIDAsIHRoaXMubGFzdFRvdGFsKTtcbiAgfVxuICBidWYuY29weSh0aGlzLmxhc3RDaGFyLCBwLCAwLCBidWYubGVuZ3RoKTtcbiAgdGhpcy5sYXN0TmVlZCAtPSBidWYubGVuZ3RoO1xufVxuXG4vLyBSZXR1cm5zIGFsbCBjb21wbGV0ZSBVVEYtOCBjaGFyYWN0ZXJzIGluIGEgQnVmZmVyLiBJZiB0aGUgQnVmZmVyIGVuZGVkIG9uIGFcbi8vIHBhcnRpYWwgY2hhcmFjdGVyLCB0aGUgY2hhcmFjdGVyJ3MgYnl0ZXMgYXJlIGJ1ZmZlcmVkIHVudGlsIHRoZSByZXF1aXJlZFxuLy8gbnVtYmVyIG9mIGJ5dGVzIGFyZSBhdmFpbGFibGUuXG5mdW5jdGlvbiB1dGY4VGV4dChidWYsIGkpIHtcbiAgdmFyIHRvdGFsID0gdXRmOENoZWNrSW5jb21wbGV0ZSh0aGlzLCBidWYsIGkpO1xuICBpZiAoIXRoaXMubGFzdE5lZWQpIHJldHVybiBidWYudG9TdHJpbmcoJ3V0ZjgnLCBpKTtcbiAgdGhpcy5sYXN0VG90YWwgPSB0b3RhbDtcbiAgdmFyIGVuZCA9IGJ1Zi5sZW5ndGggLSAodG90YWwgLSB0aGlzLmxhc3ROZWVkKTtcbiAgYnVmLmNvcHkodGhpcy5sYXN0Q2hhciwgMCwgZW5kKTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmOCcsIGksIGVuZCk7XG59XG5cbi8vIEZvciBVVEYtOCwgYSByZXBsYWNlbWVudCBjaGFyYWN0ZXIgaXMgYWRkZWQgd2hlbiBlbmRpbmcgb24gYSBwYXJ0aWFsXG4vLyBjaGFyYWN0ZXIuXG5mdW5jdGlvbiB1dGY4RW5kKGJ1Zikge1xuICB2YXIgciA9IGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG4gIGlmICh0aGlzLmxhc3ROZWVkKSByZXR1cm4gciArICdcXHVmZmZkJztcbiAgcmV0dXJuIHI7XG59XG5cbi8vIFVURi0xNkxFIHR5cGljYWxseSBuZWVkcyB0d28gYnl0ZXMgcGVyIGNoYXJhY3RlciwgYnV0IGV2ZW4gaWYgd2UgaGF2ZSBhbiBldmVuXG4vLyBudW1iZXIgb2YgYnl0ZXMgYXZhaWxhYmxlLCB3ZSBuZWVkIHRvIGNoZWNrIGlmIHdlIGVuZCBvbiBhIGxlYWRpbmcvaGlnaFxuLy8gc3Vycm9nYXRlLiBJbiB0aGF0IGNhc2UsIHdlIG5lZWQgdG8gd2FpdCBmb3IgdGhlIG5leHQgdHdvIGJ5dGVzIGluIG9yZGVyIHRvXG4vLyBkZWNvZGUgdGhlIGxhc3QgY2hhcmFjdGVyIHByb3Blcmx5LlxuZnVuY3Rpb24gdXRmMTZUZXh0KGJ1ZiwgaSkge1xuICBpZiAoKGJ1Zi5sZW5ndGggLSBpKSAlIDIgPT09IDApIHtcbiAgICB2YXIgciA9IGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGkpO1xuICAgIGlmIChyKSB7XG4gICAgICB2YXIgYyA9IHIuY2hhckNvZGVBdChyLmxlbmd0aCAtIDEpO1xuICAgICAgaWYgKGMgPj0gMHhEODAwICYmIGMgPD0gMHhEQkZGKSB7XG4gICAgICAgIHRoaXMubGFzdE5lZWQgPSAyO1xuICAgICAgICB0aGlzLmxhc3RUb3RhbCA9IDQ7XG4gICAgICAgIHRoaXMubGFzdENoYXJbMF0gPSBidWZbYnVmLmxlbmd0aCAtIDJdO1xuICAgICAgICB0aGlzLmxhc3RDaGFyWzFdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgICAgICAgcmV0dXJuIHIuc2xpY2UoMCwgLTEpO1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gcjtcbiAgfVxuICB0aGlzLmxhc3ROZWVkID0gMTtcbiAgdGhpcy5sYXN0VG90YWwgPSAyO1xuICB0aGlzLmxhc3RDaGFyWzBdID0gYnVmW2J1Zi5sZW5ndGggLSAxXTtcbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygndXRmMTZsZScsIGksIGJ1Zi5sZW5ndGggLSAxKTtcbn1cblxuLy8gRm9yIFVURi0xNkxFIHdlIGRvIG5vdCBleHBsaWNpdGx5IGFwcGVuZCBzcGVjaWFsIHJlcGxhY2VtZW50IGNoYXJhY3RlcnMgaWYgd2Vcbi8vIGVuZCBvbiBhIHBhcnRpYWwgY2hhcmFjdGVyLCB3ZSBzaW1wbHkgbGV0IHY4IGhhbmRsZSB0aGF0LlxuZnVuY3Rpb24gdXRmMTZFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHtcbiAgICB2YXIgZW5kID0gdGhpcy5sYXN0VG90YWwgLSB0aGlzLmxhc3ROZWVkO1xuICAgIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygndXRmMTZsZScsIDAsIGVuZCk7XG4gIH1cbiAgcmV0dXJuIHI7XG59XG5cbmZ1bmN0aW9uIGJhc2U2NFRleHQoYnVmLCBpKSB7XG4gIHZhciBuID0gKGJ1Zi5sZW5ndGggLSBpKSAlIDM7XG4gIGlmIChuID09PSAwKSByZXR1cm4gYnVmLnRvU3RyaW5nKCdiYXNlNjQnLCBpKTtcbiAgdGhpcy5sYXN0TmVlZCA9IDMgLSBuO1xuICB0aGlzLmxhc3RUb3RhbCA9IDM7XG4gIGlmIChuID09PSAxKSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH0gZWxzZSB7XG4gICAgdGhpcy5sYXN0Q2hhclswXSA9IGJ1ZltidWYubGVuZ3RoIC0gMl07XG4gICAgdGhpcy5sYXN0Q2hhclsxXSA9IGJ1ZltidWYubGVuZ3RoIC0gMV07XG4gIH1cbiAgcmV0dXJuIGJ1Zi50b1N0cmluZygnYmFzZTY0JywgaSwgYnVmLmxlbmd0aCAtIG4pO1xufVxuXG5mdW5jdGlvbiBiYXNlNjRFbmQoYnVmKSB7XG4gIHZhciByID0gYnVmICYmIGJ1Zi5sZW5ndGggPyB0aGlzLndyaXRlKGJ1ZikgOiAnJztcbiAgaWYgKHRoaXMubGFzdE5lZWQpIHJldHVybiByICsgdGhpcy5sYXN0Q2hhci50b1N0cmluZygnYmFzZTY0JywgMCwgMyAtIHRoaXMubGFzdE5lZWQpO1xuICByZXR1cm4gcjtcbn1cblxuLy8gUGFzcyBieXRlcyBvbiB0aHJvdWdoIGZvciBzaW5nbGUtYnl0ZSBlbmNvZGluZ3MgKGUuZy4gYXNjaWksIGxhdGluMSwgaGV4KVxuZnVuY3Rpb24gc2ltcGxlV3JpdGUoYnVmKSB7XG4gIHJldHVybiBidWYudG9TdHJpbmcodGhpcy5lbmNvZGluZyk7XG59XG5cbmZ1bmN0aW9uIHNpbXBsZUVuZChidWYpIHtcbiAgcmV0dXJuIGJ1ZiAmJiBidWYubGVuZ3RoID8gdGhpcy53cml0ZShidWYpIDogJyc7XG59IiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbi8vIGEgdHJhbnNmb3JtIHN0cmVhbSBpcyBhIHJlYWRhYmxlL3dyaXRhYmxlIHN0cmVhbSB3aGVyZSB5b3UgZG9cbi8vIHNvbWV0aGluZyB3aXRoIHRoZSBkYXRhLiAgU29tZXRpbWVzIGl0J3MgY2FsbGVkIGEgXCJmaWx0ZXJcIixcbi8vIGJ1dCB0aGF0J3Mgbm90IGEgZ3JlYXQgbmFtZSBmb3IgaXQsIHNpbmNlIHRoYXQgaW1wbGllcyBhIHRoaW5nIHdoZXJlXG4vLyBzb21lIGJpdHMgcGFzcyB0aHJvdWdoLCBhbmQgb3RoZXJzIGFyZSBzaW1wbHkgaWdub3JlZC4gIChUaGF0IHdvdWxkXG4vLyBiZSBhIHZhbGlkIGV4YW1wbGUgb2YgYSB0cmFuc2Zvcm0sIG9mIGNvdXJzZS4pXG4vL1xuLy8gV2hpbGUgdGhlIG91dHB1dCBpcyBjYXVzYWxseSByZWxhdGVkIHRvIHRoZSBpbnB1dCwgaXQncyBub3QgYVxuLy8gbmVjZXNzYXJpbHkgc3ltbWV0cmljIG9yIHN5bmNocm9ub3VzIHRyYW5zZm9ybWF0aW9uLiAgRm9yIGV4YW1wbGUsXG4vLyBhIHpsaWIgc3RyZWFtIG1pZ2h0IHRha2UgbXVsdGlwbGUgcGxhaW4tdGV4dCB3cml0ZXMoKSwgYW5kIHRoZW5cbi8vIGVtaXQgYSBzaW5nbGUgY29tcHJlc3NlZCBjaHVuayBzb21lIHRpbWUgaW4gdGhlIGZ1dHVyZS5cbi8vXG4vLyBIZXJlJ3MgaG93IHRoaXMgd29ya3M6XG4vL1xuLy8gVGhlIFRyYW5zZm9ybSBzdHJlYW0gaGFzIGFsbCB0aGUgYXNwZWN0cyBvZiB0aGUgcmVhZGFibGUgYW5kIHdyaXRhYmxlXG4vLyBzdHJlYW0gY2xhc3Nlcy4gIFdoZW4geW91IHdyaXRlKGNodW5rKSwgdGhhdCBjYWxscyBfd3JpdGUoY2h1bmssY2IpXG4vLyBpbnRlcm5hbGx5LCBhbmQgcmV0dXJucyBmYWxzZSBpZiB0aGVyZSdzIGEgbG90IG9mIHBlbmRpbmcgd3JpdGVzXG4vLyBidWZmZXJlZCB1cC4gIFdoZW4geW91IGNhbGwgcmVhZCgpLCB0aGF0IGNhbGxzIF9yZWFkKG4pIHVudGlsXG4vLyB0aGVyZSdzIGVub3VnaCBwZW5kaW5nIHJlYWRhYmxlIGRhdGEgYnVmZmVyZWQgdXAuXG4vL1xuLy8gSW4gYSB0cmFuc2Zvcm0gc3RyZWFtLCB0aGUgd3JpdHRlbiBkYXRhIGlzIHBsYWNlZCBpbiBhIGJ1ZmZlci4gIFdoZW5cbi8vIF9yZWFkKG4pIGlzIGNhbGxlZCwgaXQgdHJhbnNmb3JtcyB0aGUgcXVldWVkIHVwIGRhdGEsIGNhbGxpbmcgdGhlXG4vLyBidWZmZXJlZCBfd3JpdGUgY2IncyBhcyBpdCBjb25zdW1lcyBjaHVua3MuICBJZiBjb25zdW1pbmcgYSBzaW5nbGVcbi8vIHdyaXR0ZW4gY2h1bmsgd291bGQgcmVzdWx0IGluIG11bHRpcGxlIG91dHB1dCBjaHVua3MsIHRoZW4gdGhlIGZpcnN0XG4vLyBvdXRwdXR0ZWQgYml0IGNhbGxzIHRoZSByZWFkY2IsIGFuZCBzdWJzZXF1ZW50IGNodW5rcyBqdXN0IGdvIGludG9cbi8vIHRoZSByZWFkIGJ1ZmZlciwgYW5kIHdpbGwgY2F1c2UgaXQgdG8gZW1pdCAncmVhZGFibGUnIGlmIG5lY2Vzc2FyeS5cbi8vXG4vLyBUaGlzIHdheSwgYmFjay1wcmVzc3VyZSBpcyBhY3R1YWxseSBkZXRlcm1pbmVkIGJ5IHRoZSByZWFkaW5nIHNpZGUsXG4vLyBzaW5jZSBfcmVhZCBoYXMgdG8gYmUgY2FsbGVkIHRvIHN0YXJ0IHByb2Nlc3NpbmcgYSBuZXcgY2h1bmsuICBIb3dldmVyLFxuLy8gYSBwYXRob2xvZ2ljYWwgaW5mbGF0ZSB0eXBlIG9mIHRyYW5zZm9ybSBjYW4gY2F1c2UgZXhjZXNzaXZlIGJ1ZmZlcmluZ1xuLy8gaGVyZS4gIEZvciBleGFtcGxlLCBpbWFnaW5lIGEgc3RyZWFtIHdoZXJlIGV2ZXJ5IGJ5dGUgb2YgaW5wdXQgaXNcbi8vIGludGVycHJldGVkIGFzIGFuIGludGVnZXIgZnJvbSAwLTI1NSwgYW5kIHRoZW4gcmVzdWx0cyBpbiB0aGF0IG1hbnlcbi8vIGJ5dGVzIG9mIG91dHB1dC4gIFdyaXRpbmcgdGhlIDQgYnl0ZXMge2ZmLGZmLGZmLGZmfSB3b3VsZCByZXN1bHQgaW5cbi8vIDFrYiBvZiBkYXRhIGJlaW5nIG91dHB1dC4gIEluIHRoaXMgY2FzZSwgeW91IGNvdWxkIHdyaXRlIGEgdmVyeSBzbWFsbFxuLy8gYW1vdW50IG9mIGlucHV0LCBhbmQgZW5kIHVwIHdpdGggYSB2ZXJ5IGxhcmdlIGFtb3VudCBvZiBvdXRwdXQuICBJblxuLy8gc3VjaCBhIHBhdGhvbG9naWNhbCBpbmZsYXRpbmcgbWVjaGFuaXNtLCB0aGVyZSdkIGJlIG5vIHdheSB0byB0ZWxsXG4vLyB0aGUgc3lzdGVtIHRvIHN0b3AgZG9pbmcgdGhlIHRyYW5zZm9ybS4gIEEgc2luZ2xlIDRNQiB3cml0ZSBjb3VsZFxuLy8gY2F1c2UgdGhlIHN5c3RlbSB0byBydW4gb3V0IG9mIG1lbW9yeS5cbi8vXG4vLyBIb3dldmVyLCBldmVuIGluIHN1Y2ggYSBwYXRob2xvZ2ljYWwgY2FzZSwgb25seSBhIHNpbmdsZSB3cml0dGVuIGNodW5rXG4vLyB3b3VsZCBiZSBjb25zdW1lZCwgYW5kIHRoZW4gdGhlIHJlc3Qgd291bGQgd2FpdCAodW4tdHJhbnNmb3JtZWQpIHVudGlsXG4vLyB0aGUgcmVzdWx0cyBvZiB0aGUgcHJldmlvdXMgdHJhbnNmb3JtZWQgY2h1bmsgd2VyZSBjb25zdW1lZC5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFRyYW5zZm9ybTtcblxudmFyIER1cGxleCA9IHJlcXVpcmUoJy4vX3N0cmVhbV9kdXBsZXgnKTtcblxuLyo8cmVwbGFjZW1lbnQ+Ki9cbnZhciB1dGlsID0gT2JqZWN0LmNyZWF0ZShyZXF1aXJlKCdjb3JlLXV0aWwtaXMnKSk7XG51dGlsLmluaGVyaXRzID0gcmVxdWlyZSgnaW5oZXJpdHMnKTtcbi8qPC9yZXBsYWNlbWVudD4qL1xuXG51dGlsLmluaGVyaXRzKFRyYW5zZm9ybSwgRHVwbGV4KTtcblxuZnVuY3Rpb24gYWZ0ZXJUcmFuc2Zvcm0oZXIsIGRhdGEpIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG4gIHRzLnRyYW5zZm9ybWluZyA9IGZhbHNlO1xuXG4gIHZhciBjYiA9IHRzLndyaXRlY2I7XG5cbiAgaWYgKCFjYikge1xuICAgIHJldHVybiB0aGlzLmVtaXQoJ2Vycm9yJywgbmV3IEVycm9yKCd3cml0ZSBjYWxsYmFjayBjYWxsZWQgbXVsdGlwbGUgdGltZXMnKSk7XG4gIH1cblxuICB0cy53cml0ZWNodW5rID0gbnVsbDtcbiAgdHMud3JpdGVjYiA9IG51bGw7XG5cbiAgaWYgKGRhdGEgIT0gbnVsbCkgLy8gc2luZ2xlIGVxdWFscyBjaGVjayBmb3IgYm90aCBgbnVsbGAgYW5kIGB1bmRlZmluZWRgXG4gICAgdGhpcy5wdXNoKGRhdGEpO1xuXG4gIGNiKGVyKTtcblxuICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICBycy5yZWFkaW5nID0gZmFsc2U7XG4gIGlmIChycy5uZWVkUmVhZGFibGUgfHwgcnMubGVuZ3RoIDwgcnMuaGlnaFdhdGVyTWFyaykge1xuICAgIHRoaXMuX3JlYWQocnMuaGlnaFdhdGVyTWFyayk7XG4gIH1cbn1cblxuZnVuY3Rpb24gVHJhbnNmb3JtKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFRyYW5zZm9ybSkpIHJldHVybiBuZXcgVHJhbnNmb3JtKG9wdGlvbnMpO1xuXG4gIER1cGxleC5jYWxsKHRoaXMsIG9wdGlvbnMpO1xuXG4gIHRoaXMuX3RyYW5zZm9ybVN0YXRlID0ge1xuICAgIGFmdGVyVHJhbnNmb3JtOiBhZnRlclRyYW5zZm9ybS5iaW5kKHRoaXMpLFxuICAgIG5lZWRUcmFuc2Zvcm06IGZhbHNlLFxuICAgIHRyYW5zZm9ybWluZzogZmFsc2UsXG4gICAgd3JpdGVjYjogbnVsbCxcbiAgICB3cml0ZWNodW5rOiBudWxsLFxuICAgIHdyaXRlZW5jb2Rpbmc6IG51bGxcbiAgfTtcblxuICAvLyBzdGFydCBvdXQgYXNraW5nIGZvciBhIHJlYWRhYmxlIGV2ZW50IG9uY2UgZGF0YSBpcyB0cmFuc2Zvcm1lZC5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5uZWVkUmVhZGFibGUgPSB0cnVlO1xuXG4gIC8vIHdlIGhhdmUgaW1wbGVtZW50ZWQgdGhlIF9yZWFkIG1ldGhvZCwgYW5kIGRvbmUgdGhlIG90aGVyIHRoaW5nc1xuICAvLyB0aGF0IFJlYWRhYmxlIHdhbnRzIGJlZm9yZSB0aGUgZmlyc3QgX3JlYWQgY2FsbCwgc28gdW5zZXQgdGhlXG4gIC8vIHN5bmMgZ3VhcmQgZmxhZy5cbiAgdGhpcy5fcmVhZGFibGVTdGF0ZS5zeW5jID0gZmFsc2U7XG5cbiAgaWYgKG9wdGlvbnMpIHtcbiAgICBpZiAodHlwZW9mIG9wdGlvbnMudHJhbnNmb3JtID09PSAnZnVuY3Rpb24nKSB0aGlzLl90cmFuc2Zvcm0gPSBvcHRpb25zLnRyYW5zZm9ybTtcblxuICAgIGlmICh0eXBlb2Ygb3B0aW9ucy5mbHVzaCA9PT0gJ2Z1bmN0aW9uJykgdGhpcy5fZmx1c2ggPSBvcHRpb25zLmZsdXNoO1xuICB9XG5cbiAgLy8gV2hlbiB0aGUgd3JpdGFibGUgc2lkZSBmaW5pc2hlcywgdGhlbiBmbHVzaCBvdXQgYW55dGhpbmcgcmVtYWluaW5nLlxuICB0aGlzLm9uKCdwcmVmaW5pc2gnLCBwcmVmaW5pc2gpO1xufVxuXG5mdW5jdGlvbiBwcmVmaW5pc2goKSB7XG4gIHZhciBfdGhpcyA9IHRoaXM7XG5cbiAgaWYgKHR5cGVvZiB0aGlzLl9mbHVzaCA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIHRoaXMuX2ZsdXNoKGZ1bmN0aW9uIChlciwgZGF0YSkge1xuICAgICAgZG9uZShfdGhpcywgZXIsIGRhdGEpO1xuICAgIH0pO1xuICB9IGVsc2Uge1xuICAgIGRvbmUodGhpcywgbnVsbCwgbnVsbCk7XG4gIH1cbn1cblxuVHJhbnNmb3JtLnByb3RvdHlwZS5wdXNoID0gZnVuY3Rpb24gKGNodW5rLCBlbmNvZGluZykge1xuICB0aGlzLl90cmFuc2Zvcm1TdGF0ZS5uZWVkVHJhbnNmb3JtID0gZmFsc2U7XG4gIHJldHVybiBEdXBsZXgucHJvdG90eXBlLnB1c2guY2FsbCh0aGlzLCBjaHVuaywgZW5jb2RpbmcpO1xufTtcblxuLy8gVGhpcyBpcyB0aGUgcGFydCB3aGVyZSB5b3UgZG8gc3R1ZmYhXG4vLyBvdmVycmlkZSB0aGlzIGZ1bmN0aW9uIGluIGltcGxlbWVudGF0aW9uIGNsYXNzZXMuXG4vLyAnY2h1bmsnIGlzIGFuIGlucHV0IGNodW5rLlxuLy9cbi8vIENhbGwgYHB1c2gobmV3Q2h1bmspYCB0byBwYXNzIGFsb25nIHRyYW5zZm9ybWVkIG91dHB1dFxuLy8gdG8gdGhlIHJlYWRhYmxlIHNpZGUuICBZb3UgbWF5IGNhbGwgJ3B1c2gnIHplcm8gb3IgbW9yZSB0aW1lcy5cbi8vXG4vLyBDYWxsIGBjYihlcnIpYCB3aGVuIHlvdSBhcmUgZG9uZSB3aXRoIHRoaXMgY2h1bmsuICBJZiB5b3UgcGFzc1xuLy8gYW4gZXJyb3IsIHRoZW4gdGhhdCdsbCBwdXQgdGhlIGh1cnQgb24gdGhlIHdob2xlIG9wZXJhdGlvbi4gIElmIHlvdVxuLy8gbmV2ZXIgY2FsbCBjYigpLCB0aGVuIHlvdSdsbCBuZXZlciBnZXQgYW5vdGhlciBjaHVuay5cblRyYW5zZm9ybS5wcm90b3R5cGUuX3RyYW5zZm9ybSA9IGZ1bmN0aW9uIChjaHVuaywgZW5jb2RpbmcsIGNiKSB7XG4gIHRocm93IG5ldyBFcnJvcignX3RyYW5zZm9ybSgpIGlzIG5vdCBpbXBsZW1lbnRlZCcpO1xufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fd3JpdGUgPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICB2YXIgdHMgPSB0aGlzLl90cmFuc2Zvcm1TdGF0ZTtcbiAgdHMud3JpdGVjYiA9IGNiO1xuICB0cy53cml0ZWNodW5rID0gY2h1bms7XG4gIHRzLndyaXRlZW5jb2RpbmcgPSBlbmNvZGluZztcbiAgaWYgKCF0cy50cmFuc2Zvcm1pbmcpIHtcbiAgICB2YXIgcnMgPSB0aGlzLl9yZWFkYWJsZVN0YXRlO1xuICAgIGlmICh0cy5uZWVkVHJhbnNmb3JtIHx8IHJzLm5lZWRSZWFkYWJsZSB8fCBycy5sZW5ndGggPCBycy5oaWdoV2F0ZXJNYXJrKSB0aGlzLl9yZWFkKHJzLmhpZ2hXYXRlck1hcmspO1xuICB9XG59O1xuXG4vLyBEb2Vzbid0IG1hdHRlciB3aGF0IHRoZSBhcmdzIGFyZSBoZXJlLlxuLy8gX3RyYW5zZm9ybSBkb2VzIGFsbCB0aGUgd29yay5cbi8vIFRoYXQgd2UgZ290IGhlcmUgbWVhbnMgdGhhdCB0aGUgcmVhZGFibGUgc2lkZSB3YW50cyBtb3JlIGRhdGEuXG5UcmFuc2Zvcm0ucHJvdG90eXBlLl9yZWFkID0gZnVuY3Rpb24gKG4pIHtcbiAgdmFyIHRzID0gdGhpcy5fdHJhbnNmb3JtU3RhdGU7XG5cbiAgaWYgKHRzLndyaXRlY2h1bmsgIT09IG51bGwgJiYgdHMud3JpdGVjYiAmJiAhdHMudHJhbnNmb3JtaW5nKSB7XG4gICAgdHMudHJhbnNmb3JtaW5nID0gdHJ1ZTtcbiAgICB0aGlzLl90cmFuc2Zvcm0odHMud3JpdGVjaHVuaywgdHMud3JpdGVlbmNvZGluZywgdHMuYWZ0ZXJUcmFuc2Zvcm0pO1xuICB9IGVsc2Uge1xuICAgIC8vIG1hcmsgdGhhdCB3ZSBuZWVkIGEgdHJhbnNmb3JtLCBzbyB0aGF0IGFueSBkYXRhIHRoYXQgY29tZXMgaW5cbiAgICAvLyB3aWxsIGdldCBwcm9jZXNzZWQsIG5vdyB0aGF0IHdlJ3ZlIGFza2VkIGZvciBpdC5cbiAgICB0cy5uZWVkVHJhbnNmb3JtID0gdHJ1ZTtcbiAgfVxufTtcblxuVHJhbnNmb3JtLnByb3RvdHlwZS5fZGVzdHJveSA9IGZ1bmN0aW9uIChlcnIsIGNiKSB7XG4gIHZhciBfdGhpczIgPSB0aGlzO1xuXG4gIER1cGxleC5wcm90b3R5cGUuX2Rlc3Ryb3kuY2FsbCh0aGlzLCBlcnIsIGZ1bmN0aW9uIChlcnIyKSB7XG4gICAgY2IoZXJyMik7XG4gICAgX3RoaXMyLmVtaXQoJ2Nsb3NlJyk7XG4gIH0pO1xufTtcblxuZnVuY3Rpb24gZG9uZShzdHJlYW0sIGVyLCBkYXRhKSB7XG4gIGlmIChlcikgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVyKTtcblxuICBpZiAoZGF0YSAhPSBudWxsKSAvLyBzaW5nbGUgZXF1YWxzIGNoZWNrIGZvciBib3RoIGBudWxsYCBhbmQgYHVuZGVmaW5lZGBcbiAgICBzdHJlYW0ucHVzaChkYXRhKTtcblxuICAvLyBpZiB0aGVyZSdzIG5vdGhpbmcgaW4gdGhlIHdyaXRlIGJ1ZmZlciwgdGhlbiB0aGF0IG1lYW5zXG4gIC8vIHRoYXQgbm90aGluZyBtb3JlIHdpbGwgZXZlciBiZSBwcm92aWRlZFxuICBpZiAoc3RyZWFtLl93cml0YWJsZVN0YXRlLmxlbmd0aCkgdGhyb3cgbmV3IEVycm9yKCdDYWxsaW5nIHRyYW5zZm9ybSBkb25lIHdoZW4gd3MubGVuZ3RoICE9IDAnKTtcblxuICBpZiAoc3RyZWFtLl90cmFuc2Zvcm1TdGF0ZS50cmFuc2Zvcm1pbmcpIHRocm93IG5ldyBFcnJvcignQ2FsbGluZyB0cmFuc2Zvcm0gZG9uZSB3aGVuIHN0aWxsIHRyYW5zZm9ybWluZycpO1xuXG4gIHJldHVybiBzdHJlYW0ucHVzaChudWxsKTtcbn0iLCJ2YXIgbm9ybWFsaXplID0gcmVxdWlyZSgnQG1hcGJveC9nZW9qc29uLW5vcm1hbGl6ZScpO1xudmFyIGdlb2pzb25TdHJlYW0gPSByZXF1aXJlKCdnZW9qc29uLXN0cmVhbScpO1xudmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcblxuLyoqXG4gKiBNZXJnZSBhIHNlcmllcyBvZiBHZW9KU09OIG9iamVjdHMgaW50byBvbmUgRmVhdHVyZUNvbGxlY3Rpb24gY29udGFpbmluZyBhbGxcbiAqIGZlYXR1cmVzIGluIGFsbCBmaWxlcy4gIFRoZSBvYmplY3RzIGNhbiBiZSBhbnkgdmFsaWQgR2VvSlNPTiByb290IG9iamVjdCxcbiAqIGluY2x1ZGluZyBGZWF0dXJlQ29sbGVjdGlvbiwgRmVhdHVyZSwgYW5kIEdlb21ldHJ5IHR5cGVzLlxuICpcbiAqIEBwYXJhbSB7QXJyYXk8T2JqZWN0Pn0gaW5wdXRzIGEgbGlzdCBvZiBHZW9KU09OIG9iamVjdHMgb2YgYW55IHR5cGVcbiAqIEByZXR1cm4ge09iamVjdH0gYSBnZW9qc29uIEZlYXR1cmVDb2xsZWN0aW9uLlxuICogQGV4YW1wbGVcbiAqIHZhciBnZW9qc29uTWVyZ2UgPSByZXF1aXJlKCdAbWFwYm94L2dlb2pzb24tbWVyZ2UnKTtcbiAqXG4gKiB2YXIgbWVyZ2VkR2VvSlNPTiA9IGdlb2pzb25NZXJnZS5tZXJnZShbXG4gKiAgIHsgdHlwZTogJ1BvaW50JywgY29vcmRpbmF0ZXM6IFswLCAxXSB9LFxuICogICB7IHR5cGU6ICdGZWF0dXJlJywgZ2VvbWV0cnk6IHsgdHlwZTogJ1BvaW50JywgY29vcmRpbmF0ZXM6IFswLCAxXSB9LCBwcm9wZXJ0aWVzOiB7fSB9XG4gKiBdKTtcbiAqXG4gKiBjb25zb2xlLmxvZyhKU09OLnN0cmluZ2lmeShtZXJnZWRHZW9KU09OKSk7XG4gKi9cbmZ1bmN0aW9uIG1lcmdlIChpbnB1dHMpIHtcbiAgICB2YXIgb3V0cHV0ID0ge1xuICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICBmZWF0dXJlczogW11cbiAgICB9O1xuICAgIGZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIHZhciBub3JtYWxpemVkID0gbm9ybWFsaXplKGlucHV0c1tpXSk7XG4gICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwgbm9ybWFsaXplZC5mZWF0dXJlcy5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgb3V0cHV0LmZlYXR1cmVzLnB1c2gobm9ybWFsaXplZC5mZWF0dXJlc1tqXSk7XG4gICAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIG91dHB1dDtcbn1cblxuLyoqXG4gKiBNZXJnZSBHZW9KU09OIGZpbGVzIGNvbnRhaW5pbmcgR2VvSlNPTiBGZWF0dXJlQ29sbGVjdGlvbnNcbiAqIGludG8gYSBzaW5nbGUgc3RyZWFtIG9mIGEgRmVhdHVyZUNvbGxlY3Rpb24gYXMgYSBKU09OIHN0cmluZy5cbiAqXG4gKiBUaGlzIGlzIG1vcmUgbGltaXRlZCB0aGFuIG1lcmdlIC0gaXQgb25seSBzdXBwb3J0cyBGZWF0dXJlQ29sbGVjdGlvbnNcbiAqIGFzIGlucHV0IC0gYnV0IG1vcmUgcGVyZm9ybWFudCwgc2luY2UgaXQgY2FuIG9wZXJhdGUgb24gR2VvSlNPTiBmaWxlc1xuICogbGFyZ2VyIHRoYW4gd2hhdCB5b3UgY2FuIGtlZXAgaW4gbWVtb3J5IGF0IG9uZSB0aW1lLlxuICogQHBhcmFtIHtBcnJheTxzdHJpbmc+fSBpbnB1dHMgYSBsaXN0IG9mIGZpbGVuYW1lcyBvZiBHZW9KU09OIGZpbGVzXG4gKiBAcmV0dXJucyB7U3RyZWFtfSBvdXRwdXQ6IGEgc3RyaW5naWZpZWQgSlNPTiBvZiBhIEZlYXR1cmVDb2xsZWN0aW9uLlxuICogQGV4YW1wbGVcbiAqIHZhciBnZW9qc29uTWVyZ2UgPSByZXF1aXJlKCdAbWFwYm94L2dlb2pzb24tbWVyZ2UnKTtcbiAqXG4gKiB2YXIgbWVyZ2VkU3RyZWFtID0gZ2VvanNvbk1lcmdlLm1lcmdlRmVhdHVyZUNvbGxlY3Rpb25TdHJlYW0oW1xuICogICAnZmVhdHVyZXMuZ2VvanNvbicsXG4gKiAgICdvdGhlckZlYXR1cmVzLmdlb2pzb24nXSlcbiAqXG4gKiBtZXJnZWRTdHJlYW0ucGlwZShwcm9jZXNzLnN0ZG91dCk7XG4gKi9cbmZ1bmN0aW9uIG1lcmdlRmVhdHVyZUNvbGxlY3Rpb25TdHJlYW0gKGlucHV0cykge1xuICAgIHZhciBvdXQgPSBnZW9qc29uU3RyZWFtLnN0cmluZ2lmeSgpO1xuICAgIGlucHV0cy5mb3JFYWNoKGZ1bmN0aW9uKGZpbGUpIHtcbiAgICAgICAgZnMuY3JlYXRlUmVhZFN0cmVhbShmaWxlKVxuICAgICAgICAgICAgLnBpcGUoZ2VvanNvblN0cmVhbS5wYXJzZSgpKVxuICAgICAgICAgICAgLnBpcGUob3V0KTtcbiAgICB9KTtcbiAgICByZXR1cm4gb3V0O1xufVxuXG5tb2R1bGUuZXhwb3J0cy5tZXJnZSA9IG1lcmdlO1xubW9kdWxlLmV4cG9ydHMubWVyZ2VGZWF0dXJlQ29sbGVjdGlvblN0cmVhbSA9IG1lcmdlRmVhdHVyZUNvbGxlY3Rpb25TdHJlYW07XG4iLCJtb2R1bGUuZXhwb3J0cyA9IG5vcm1hbGl6ZTtcblxudmFyIHR5cGVzID0ge1xuICAgIFBvaW50OiAnZ2VvbWV0cnknLFxuICAgIE11bHRpUG9pbnQ6ICdnZW9tZXRyeScsXG4gICAgTGluZVN0cmluZzogJ2dlb21ldHJ5JyxcbiAgICBNdWx0aUxpbmVTdHJpbmc6ICdnZW9tZXRyeScsXG4gICAgUG9seWdvbjogJ2dlb21ldHJ5JyxcbiAgICBNdWx0aVBvbHlnb246ICdnZW9tZXRyeScsXG4gICAgR2VvbWV0cnlDb2xsZWN0aW9uOiAnZ2VvbWV0cnknLFxuICAgIEZlYXR1cmU6ICdmZWF0dXJlJyxcbiAgICBGZWF0dXJlQ29sbGVjdGlvbjogJ2ZlYXR1cmVjb2xsZWN0aW9uJ1xufTtcblxuLyoqXG4gKiBOb3JtYWxpemUgYSBHZW9KU09OIGZlYXR1cmUgaW50byBhIEZlYXR1cmVDb2xsZWN0aW9uLlxuICpcbiAqIEBwYXJhbSB7b2JqZWN0fSBnaiBnZW9qc29uIGRhdGFcbiAqIEByZXR1cm5zIHtvYmplY3R9IG5vcm1hbGl6ZWQgZ2VvanNvbiBkYXRhXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZShnaikge1xuICAgIGlmICghZ2ogfHwgIWdqLnR5cGUpIHJldHVybiBudWxsO1xuICAgIHZhciB0eXBlID0gdHlwZXNbZ2oudHlwZV07XG4gICAgaWYgKCF0eXBlKSByZXR1cm4gbnVsbDtcblxuICAgIGlmICh0eXBlID09PSAnZ2VvbWV0cnknKSB7XG4gICAgICAgIHJldHVybiB7XG4gICAgICAgICAgICB0eXBlOiAnRmVhdHVyZUNvbGxlY3Rpb24nLFxuICAgICAgICAgICAgZmVhdHVyZXM6IFt7XG4gICAgICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmUnLFxuICAgICAgICAgICAgICAgIHByb3BlcnRpZXM6IHt9LFxuICAgICAgICAgICAgICAgIGdlb21ldHJ5OiBnalxuICAgICAgICAgICAgfV1cbiAgICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKHR5cGUgPT09ICdmZWF0dXJlJykge1xuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgICAgdHlwZTogJ0ZlYXR1cmVDb2xsZWN0aW9uJyxcbiAgICAgICAgICAgIGZlYXR1cmVzOiBbZ2pdXG4gICAgICAgIH07XG4gICAgfSBlbHNlIGlmICh0eXBlID09PSAnZmVhdHVyZWNvbGxlY3Rpb24nKSB7XG4gICAgICAgIHJldHVybiBnajtcbiAgICB9XG59XG4iLCJ2YXIgSlNPTlN0cmVhbSA9IHJlcXVpcmUoJ0pTT05TdHJlYW0nKTtcblxudmFyIG9wZW4gPSAne1widHlwZVwiOlwiRmVhdHVyZUNvbGxlY3Rpb25cIixcImZlYXR1cmVzXCI6WycsXG4gICAgY2xvc2UgPSAnXX0nO1xuXG5tb2R1bGUuZXhwb3J0cy5wYXJzZSA9IGZ1bmN0aW9uKCkge1xuICAgIHZhciBqc29uc3RyZWFtID0gSlNPTlN0cmVhbS5wYXJzZSgnZmVhdHVyZXMuKicpO1xuICAgIHJldHVybiBqc29uc3RyZWFtO1xufTtcblxubW9kdWxlLmV4cG9ydHMuc3RyaW5naWZ5ID0gZnVuY3Rpb24oKSB7XG4gICAgdmFyIGpzb25zdHJlYW0gPSBKU09OU3RyZWFtLnN0cmluZ2lmeShvcGVuLCAnXFxuLFxcbicsIGNsb3NlKTtcbiAgICByZXR1cm4ganNvbnN0cmVhbTtcbn07XG4iLCIndXNlIHN0cmljdCdcblxudmFyIFBhcnNlciA9IHJlcXVpcmUoJ2pzb25wYXJzZScpXG4gICwgdGhyb3VnaCA9IHJlcXVpcmUoJ3Rocm91Z2gnKVxuXG52YXIgYnVmZmVyRnJvbSA9IEJ1ZmZlci5mcm9tICYmIEJ1ZmZlci5mcm9tICE9PSBVaW50OEFycmF5LmZyb21cblxuLypcblxuICB0aGUgdmFsdWUgb2YgdGhpcy5zdGFjayB0aGF0IGNyZWF0aW9uaXgncyBqc29ucGFyc2UgaGFzIGlzIHdlaXJkLlxuXG4gIGl0IG1ha2VzIHRoaXMgY29kZSB1Z2x5LCBidXQgaGlzIHByb2JsZW0gaXMgd2F5IGhhcmRlciB0aGF0IG1pbmUsXG4gIHNvIGknbGwgZm9yZ2l2ZSBoaW0uXG5cbiovXG5cbmV4cG9ydHMucGFyc2UgPSBmdW5jdGlvbiAocGF0aCwgbWFwKSB7XG4gIHZhciBoZWFkZXIsIGZvb3RlclxuICB2YXIgcGFyc2VyID0gbmV3IFBhcnNlcigpXG4gIHZhciBzdHJlYW0gPSB0aHJvdWdoKGZ1bmN0aW9uIChjaHVuaykge1xuICAgIGlmKCdzdHJpbmcnID09PSB0eXBlb2YgY2h1bmspXG4gICAgICBjaHVuayA9IGJ1ZmZlckZyb20gPyBCdWZmZXIuZnJvbShjaHVuaykgOiBuZXcgQnVmZmVyKGNodW5rKVxuICAgIHBhcnNlci53cml0ZShjaHVuaylcbiAgfSxcbiAgZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBpZihkYXRhKVxuICAgICAgc3RyZWFtLndyaXRlKGRhdGEpXG4gICAgaWYgKGhlYWRlcilcbiAgICAgICAgc3RyZWFtLmVtaXQoJ2hlYWRlcicsIGhlYWRlcilcbiAgICBpZiAoZm9vdGVyKVxuICAgICAgc3RyZWFtLmVtaXQoJ2Zvb3RlcicsIGZvb3RlcilcbiAgICBzdHJlYW0ucXVldWUobnVsbClcbiAgfSlcblxuICBpZignc3RyaW5nJyA9PT0gdHlwZW9mIHBhdGgpXG4gICAgcGF0aCA9IHBhdGguc3BsaXQoJy4nKS5tYXAoZnVuY3Rpb24gKGUpIHtcbiAgICAgIGlmIChlID09PSAnJConKVxuICAgICAgICByZXR1cm4ge2VtaXRLZXk6IHRydWV9XG4gICAgICBlbHNlIGlmIChlID09PSAnKicpXG4gICAgICAgIHJldHVybiB0cnVlXG4gICAgICBlbHNlIGlmIChlID09PSAnJykgLy8gJy4uJy5zcGxpdCgnLicpIHJldHVybnMgYW4gZW1wdHkgc3RyaW5nXG4gICAgICAgIHJldHVybiB7cmVjdXJzZTogdHJ1ZX1cbiAgICAgIGVsc2VcbiAgICAgICAgcmV0dXJuIGVcbiAgICB9KVxuXG5cbiAgdmFyIGNvdW50ID0gMCwgX2tleVxuICBpZighcGF0aCB8fCAhcGF0aC5sZW5ndGgpXG4gICAgcGF0aCA9IG51bGxcblxuICBwYXJzZXIub25WYWx1ZSA9IGZ1bmN0aW9uICh2YWx1ZSkge1xuICAgIGlmICghdGhpcy5yb290KVxuICAgICAgc3RyZWFtLnJvb3QgPSB2YWx1ZVxuXG4gICAgaWYoISBwYXRoKSByZXR1cm5cblxuICAgIHZhciBpID0gMCAvLyBpdGVyYXRlcyBvbiBwYXRoXG4gICAgdmFyIGogID0gMCAvLyBpdGVyYXRlcyBvbiBzdGFja1xuICAgIHZhciBlbWl0S2V5ID0gZmFsc2U7XG4gICAgdmFyIGVtaXRQYXRoID0gZmFsc2U7XG4gICAgd2hpbGUgKGkgPCBwYXRoLmxlbmd0aCkge1xuICAgICAgdmFyIGtleSA9IHBhdGhbaV1cbiAgICAgIHZhciBjXG4gICAgICBqKytcblxuICAgICAgaWYgKGtleSAmJiAha2V5LnJlY3Vyc2UpIHtcbiAgICAgICAgYyA9IChqID09PSB0aGlzLnN0YWNrLmxlbmd0aCkgPyB0aGlzIDogdGhpcy5zdGFja1tqXVxuICAgICAgICBpZiAoIWMpIHJldHVyblxuICAgICAgICBpZiAoISBjaGVjayhrZXksIGMua2V5KSkge1xuICAgICAgICAgIHNldEhlYWRlckZvb3RlcihjLmtleSwgdmFsdWUpXG4gICAgICAgICAgcmV0dXJuXG4gICAgICAgIH1cbiAgICAgICAgZW1pdEtleSA9ICEha2V5LmVtaXRLZXk7XG4gICAgICAgIGVtaXRQYXRoID0gISFrZXkuZW1pdFBhdGg7XG4gICAgICAgIGkrK1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgaSsrXG4gICAgICAgIHZhciBuZXh0S2V5ID0gcGF0aFtpXVxuICAgICAgICBpZiAoISBuZXh0S2V5KSByZXR1cm5cbiAgICAgICAgd2hpbGUgKHRydWUpIHtcbiAgICAgICAgICBjID0gKGogPT09IHRoaXMuc3RhY2subGVuZ3RoKSA/IHRoaXMgOiB0aGlzLnN0YWNrW2pdXG4gICAgICAgICAgaWYgKCFjKSByZXR1cm5cbiAgICAgICAgICBpZiAoY2hlY2sobmV4dEtleSwgYy5rZXkpKSB7XG4gICAgICAgICAgICBpKys7XG4gICAgICAgICAgICBpZiAoIU9iamVjdC5pc0Zyb3plbih0aGlzLnN0YWNrW2pdKSlcbiAgICAgICAgICAgICAgdGhpcy5zdGFja1tqXS52YWx1ZSA9IG51bGxcbiAgICAgICAgICAgIGJyZWFrXG4gICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHNldEhlYWRlckZvb3RlcihjLmtleSwgdmFsdWUpXG4gICAgICAgICAgfVxuICAgICAgICAgIGorK1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICB9XG5cbiAgICAvLyBlbWl0IGhlYWRlclxuICAgIGlmIChoZWFkZXIpIHtcbiAgICAgIHN0cmVhbS5lbWl0KCdoZWFkZXInLCBoZWFkZXIpO1xuICAgICAgaGVhZGVyID0gZmFsc2U7XG4gICAgfVxuICAgIGlmIChqICE9PSB0aGlzLnN0YWNrLmxlbmd0aCkgcmV0dXJuXG5cbiAgICBjb3VudCArK1xuICAgIHZhciBhY3R1YWxQYXRoID0gdGhpcy5zdGFjay5zbGljZSgxKS5tYXAoZnVuY3Rpb24oZWxlbWVudCkgeyByZXR1cm4gZWxlbWVudC5rZXkgfSkuY29uY2F0KFt0aGlzLmtleV0pXG4gICAgdmFyIGRhdGEgPSB2YWx1ZVxuICAgIGlmKG51bGwgIT0gZGF0YSlcbiAgICAgIGlmKG51bGwgIT0gKGRhdGEgPSBtYXAgPyBtYXAoZGF0YSwgYWN0dWFsUGF0aCkgOiBkYXRhKSkge1xuICAgICAgICBpZiAoZW1pdEtleSB8fCBlbWl0UGF0aCkge1xuICAgICAgICAgIGRhdGEgPSB7IHZhbHVlOiBkYXRhIH07XG4gICAgICAgICAgaWYgKGVtaXRLZXkpXG4gICAgICAgICAgICBkYXRhW1wia2V5XCJdID0gdGhpcy5rZXk7XG4gICAgICAgICAgaWYgKGVtaXRQYXRoKVxuICAgICAgICAgICAgZGF0YVtcInBhdGhcIl0gPSBhY3R1YWxQYXRoO1xuICAgICAgICB9XG5cbiAgICAgICAgc3RyZWFtLnF1ZXVlKGRhdGEpXG4gICAgICB9XG4gICAgaWYgKHRoaXMudmFsdWUpIGRlbGV0ZSB0aGlzLnZhbHVlW3RoaXMua2V5XVxuICAgIGZvcih2YXIgayBpbiB0aGlzLnN0YWNrKVxuICAgICAgaWYgKCFPYmplY3QuaXNGcm96ZW4odGhpcy5zdGFja1trXSkpXG4gICAgICAgIHRoaXMuc3RhY2tba10udmFsdWUgPSBudWxsXG4gIH1cbiAgcGFyc2VyLl9vblRva2VuID0gcGFyc2VyLm9uVG9rZW47XG5cbiAgcGFyc2VyLm9uVG9rZW4gPSBmdW5jdGlvbiAodG9rZW4sIHZhbHVlKSB7XG4gICAgcGFyc2VyLl9vblRva2VuKHRva2VuLCB2YWx1ZSk7XG4gICAgaWYgKHRoaXMuc3RhY2subGVuZ3RoID09PSAwKSB7XG4gICAgICBpZiAoc3RyZWFtLnJvb3QpIHtcbiAgICAgICAgaWYoIXBhdGgpXG4gICAgICAgICAgc3RyZWFtLnF1ZXVlKHN0cmVhbS5yb290KVxuICAgICAgICBjb3VudCA9IDA7XG4gICAgICAgIHN0cmVhbS5yb290ID0gbnVsbDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICBwYXJzZXIub25FcnJvciA9IGZ1bmN0aW9uIChlcnIpIHtcbiAgICBpZihlcnIubWVzc2FnZS5pbmRleE9mKFwiYXQgcG9zaXRpb25cIikgPiAtMSlcbiAgICAgIGVyci5tZXNzYWdlID0gXCJJbnZhbGlkIEpTT04gKFwiICsgZXJyLm1lc3NhZ2UgKyBcIilcIjtcbiAgICBzdHJlYW0uZW1pdCgnZXJyb3InLCBlcnIpXG4gIH1cblxuICByZXR1cm4gc3RyZWFtXG5cbiAgZnVuY3Rpb24gc2V0SGVhZGVyRm9vdGVyKGtleSwgdmFsdWUpIHtcbiAgICAvLyBoZWFkZXIgaGFzIG5vdCBiZWVuIGVtaXR0ZWQgeWV0XG4gICAgaWYgKGhlYWRlciAhPT0gZmFsc2UpIHtcbiAgICAgIGhlYWRlciA9IGhlYWRlciB8fCB7fVxuICAgICAgaGVhZGVyW2tleV0gPSB2YWx1ZVxuICAgIH1cblxuICAgIC8vIGZvb3RlciBoYXMgbm90IGJlZW4gZW1pdHRlZCB5ZXQgYnV0IGhlYWRlciBoYXNcbiAgICBpZiAoZm9vdGVyICE9PSBmYWxzZSAmJiBoZWFkZXIgPT09IGZhbHNlKSB7XG4gICAgICBmb290ZXIgPSBmb290ZXIgfHwge31cbiAgICAgIGZvb3RlcltrZXldID0gdmFsdWVcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gY2hlY2sgKHgsIHkpIHtcbiAgaWYgKCdzdHJpbmcnID09PSB0eXBlb2YgeClcbiAgICByZXR1cm4geSA9PSB4XG4gIGVsc2UgaWYgKHggJiYgJ2Z1bmN0aW9uJyA9PT0gdHlwZW9mIHguZXhlYylcbiAgICByZXR1cm4geC5leGVjKHkpXG4gIGVsc2UgaWYgKCdib29sZWFuJyA9PT0gdHlwZW9mIHggfHwgJ29iamVjdCcgPT09IHR5cGVvZiB4KVxuICAgIHJldHVybiB4XG4gIGVsc2UgaWYgKCdmdW5jdGlvbicgPT09IHR5cGVvZiB4KVxuICAgIHJldHVybiB4KHkpXG4gIHJldHVybiBmYWxzZVxufVxuXG5leHBvcnRzLnN0cmluZ2lmeSA9IGZ1bmN0aW9uIChvcCwgc2VwLCBjbCwgaW5kZW50KSB7XG4gIGluZGVudCA9IGluZGVudCB8fCAwXG4gIGlmIChvcCA9PT0gZmFsc2Upe1xuICAgIG9wID0gJydcbiAgICBzZXAgPSAnXFxuJ1xuICAgIGNsID0gJydcbiAgfSBlbHNlIGlmIChvcCA9PSBudWxsKSB7XG5cbiAgICBvcCA9ICdbXFxuJ1xuICAgIHNlcCA9ICdcXG4sXFxuJ1xuICAgIGNsID0gJ1xcbl1cXG4nXG5cbiAgfVxuXG4gIC8vZWxzZSwgd2hhdCBldmVyIHlvdSBsaWtlXG5cbiAgdmFyIHN0cmVhbVxuICAgICwgZmlyc3QgPSB0cnVlXG4gICAgLCBhbnlEYXRhID0gZmFsc2VcbiAgc3RyZWFtID0gdGhyb3VnaChmdW5jdGlvbiAoZGF0YSkge1xuICAgIGFueURhdGEgPSB0cnVlXG4gICAgdHJ5IHtcbiAgICAgIHZhciBqc29uID0gSlNPTi5zdHJpbmdpZnkoZGF0YSwgbnVsbCwgaW5kZW50KVxuICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgcmV0dXJuIHN0cmVhbS5lbWl0KCdlcnJvcicsIGVycilcbiAgICB9XG4gICAgaWYoZmlyc3QpIHsgZmlyc3QgPSBmYWxzZSA7IHN0cmVhbS5xdWV1ZShvcCArIGpzb24pfVxuICAgIGVsc2Ugc3RyZWFtLnF1ZXVlKHNlcCArIGpzb24pXG4gIH0sXG4gIGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgaWYoIWFueURhdGEpXG4gICAgICBzdHJlYW0ucXVldWUob3ApXG4gICAgc3RyZWFtLnF1ZXVlKGNsKVxuICAgIHN0cmVhbS5xdWV1ZShudWxsKVxuICB9KVxuXG4gIHJldHVybiBzdHJlYW1cbn1cblxuZXhwb3J0cy5zdHJpbmdpZnlPYmplY3QgPSBmdW5jdGlvbiAob3AsIHNlcCwgY2wsIGluZGVudCkge1xuICBpbmRlbnQgPSBpbmRlbnQgfHwgMFxuICBpZiAob3AgPT09IGZhbHNlKXtcbiAgICBvcCA9ICcnXG4gICAgc2VwID0gJ1xcbidcbiAgICBjbCA9ICcnXG4gIH0gZWxzZSBpZiAob3AgPT0gbnVsbCkge1xuXG4gICAgb3AgPSAne1xcbidcbiAgICBzZXAgPSAnXFxuLFxcbidcbiAgICBjbCA9ICdcXG59XFxuJ1xuXG4gIH1cblxuICAvL2Vsc2UsIHdoYXQgZXZlciB5b3UgbGlrZVxuXG4gIHZhciBmaXJzdCA9IHRydWVcbiAgdmFyIGFueURhdGEgPSBmYWxzZVxuICB2YXIgc3RyZWFtID0gdGhyb3VnaChmdW5jdGlvbiAoZGF0YSkge1xuICAgIGFueURhdGEgPSB0cnVlXG4gICAgdmFyIGpzb24gPSBKU09OLnN0cmluZ2lmeShkYXRhWzBdKSArICc6JyArIEpTT04uc3RyaW5naWZ5KGRhdGFbMV0sIG51bGwsIGluZGVudClcbiAgICBpZihmaXJzdCkgeyBmaXJzdCA9IGZhbHNlIDsgdGhpcy5xdWV1ZShvcCArIGpzb24pfVxuICAgIGVsc2UgdGhpcy5xdWV1ZShzZXAgKyBqc29uKVxuICB9LFxuICBmdW5jdGlvbiAoZGF0YSkge1xuICAgIGlmKCFhbnlEYXRhKSB0aGlzLnF1ZXVlKG9wKVxuICAgIHRoaXMucXVldWUoY2wpXG5cbiAgICB0aGlzLnF1ZXVlKG51bGwpXG4gIH0pXG5cbiAgcmV0dXJuIHN0cmVhbVxufVxuXG5cbiIsIid1c2Ugc3RyaWN0J1xuXG5leHBvcnRzLmJ5dGVMZW5ndGggPSBieXRlTGVuZ3RoXG5leHBvcnRzLnRvQnl0ZUFycmF5ID0gdG9CeXRlQXJyYXlcbmV4cG9ydHMuZnJvbUJ5dGVBcnJheSA9IGZyb21CeXRlQXJyYXlcblxudmFyIGxvb2t1cCA9IFtdXG52YXIgcmV2TG9va3VwID0gW11cbnZhciBBcnIgPSB0eXBlb2YgVWludDhBcnJheSAhPT0gJ3VuZGVmaW5lZCcgPyBVaW50OEFycmF5IDogQXJyYXlcblxudmFyIGNvZGUgPSAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODkrLydcbmZvciAodmFyIGkgPSAwLCBsZW4gPSBjb2RlLmxlbmd0aDsgaSA8IGxlbjsgKytpKSB7XG4gIGxvb2t1cFtpXSA9IGNvZGVbaV1cbiAgcmV2TG9va3VwW2NvZGUuY2hhckNvZGVBdChpKV0gPSBpXG59XG5cbi8vIFN1cHBvcnQgZGVjb2RpbmcgVVJMLXNhZmUgYmFzZTY0IHN0cmluZ3MsIGFzIE5vZGUuanMgZG9lcy5cbi8vIFNlZTogaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQmFzZTY0I1VSTF9hcHBsaWNhdGlvbnNcbnJldkxvb2t1cFsnLScuY2hhckNvZGVBdCgwKV0gPSA2MlxucmV2TG9va3VwWydfJy5jaGFyQ29kZUF0KDApXSA9IDYzXG5cbmZ1bmN0aW9uIGdldExlbnMgKGI2NCkge1xuICB2YXIgbGVuID0gYjY0Lmxlbmd0aFxuXG4gIGlmIChsZW4gJSA0ID4gMCkge1xuICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBzdHJpbmcuIExlbmd0aCBtdXN0IGJlIGEgbXVsdGlwbGUgb2YgNCcpXG4gIH1cblxuICAvLyBUcmltIG9mZiBleHRyYSBieXRlcyBhZnRlciBwbGFjZWhvbGRlciBieXRlcyBhcmUgZm91bmRcbiAgLy8gU2VlOiBodHRwczovL2dpdGh1Yi5jb20vYmVhdGdhbW1pdC9iYXNlNjQtanMvaXNzdWVzLzQyXG4gIHZhciB2YWxpZExlbiA9IGI2NC5pbmRleE9mKCc9JylcbiAgaWYgKHZhbGlkTGVuID09PSAtMSkgdmFsaWRMZW4gPSBsZW5cblxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gdmFsaWRMZW4gPT09IGxlblxuICAgID8gMFxuICAgIDogNCAtICh2YWxpZExlbiAlIDQpXG5cbiAgcmV0dXJuIFt2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuXVxufVxuXG4vLyBiYXNlNjQgaXMgNC8zICsgdXAgdG8gdHdvIGNoYXJhY3RlcnMgb2YgdGhlIG9yaWdpbmFsIGRhdGFcbmZ1bmN0aW9uIGJ5dGVMZW5ndGggKGI2NCkge1xuICB2YXIgbGVucyA9IGdldExlbnMoYjY0KVxuICB2YXIgdmFsaWRMZW4gPSBsZW5zWzBdXG4gIHZhciBwbGFjZUhvbGRlcnNMZW4gPSBsZW5zWzFdXG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiBfYnl0ZUxlbmd0aCAoYjY0LCB2YWxpZExlbiwgcGxhY2VIb2xkZXJzTGVuKSB7XG4gIHJldHVybiAoKHZhbGlkTGVuICsgcGxhY2VIb2xkZXJzTGVuKSAqIDMgLyA0KSAtIHBsYWNlSG9sZGVyc0xlblxufVxuXG5mdW5jdGlvbiB0b0J5dGVBcnJheSAoYjY0KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbnMgPSBnZXRMZW5zKGI2NClcbiAgdmFyIHZhbGlkTGVuID0gbGVuc1swXVxuICB2YXIgcGxhY2VIb2xkZXJzTGVuID0gbGVuc1sxXVxuXG4gIHZhciBhcnIgPSBuZXcgQXJyKF9ieXRlTGVuZ3RoKGI2NCwgdmFsaWRMZW4sIHBsYWNlSG9sZGVyc0xlbikpXG5cbiAgdmFyIGN1ckJ5dGUgPSAwXG5cbiAgLy8gaWYgdGhlcmUgYXJlIHBsYWNlaG9sZGVycywgb25seSBnZXQgdXAgdG8gdGhlIGxhc3QgY29tcGxldGUgNCBjaGFyc1xuICB2YXIgbGVuID0gcGxhY2VIb2xkZXJzTGVuID4gMFxuICAgID8gdmFsaWRMZW4gLSA0XG4gICAgOiB2YWxpZExlblxuXG4gIHZhciBpXG4gIGZvciAoaSA9IDA7IGkgPCBsZW47IGkgKz0gNCkge1xuICAgIHRtcCA9XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkpXSA8PCAxOCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldIDw8IDEyKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAyKV0gPDwgNikgfFxuICAgICAgcmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAzKV1cbiAgICBhcnJbY3VyQnl0ZSsrXSA9ICh0bXAgPj4gMTYpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gKHRtcCA+PiA4KSAmIDB4RkZcbiAgICBhcnJbY3VyQnl0ZSsrXSA9IHRtcCAmIDB4RkZcbiAgfVxuXG4gIGlmIChwbGFjZUhvbGRlcnNMZW4gPT09IDIpIHtcbiAgICB0bXAgPVxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpKV0gPDwgMikgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMSldID4+IDQpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSB0bXAgJiAweEZGXG4gIH1cblxuICBpZiAocGxhY2VIb2xkZXJzTGVuID09PSAxKSB7XG4gICAgdG1wID1cbiAgICAgIChyZXZMb29rdXBbYjY0LmNoYXJDb2RlQXQoaSldIDw8IDEwKSB8XG4gICAgICAocmV2TG9va3VwW2I2NC5jaGFyQ29kZUF0KGkgKyAxKV0gPDwgNCkgfFxuICAgICAgKHJldkxvb2t1cFtiNjQuY2hhckNvZGVBdChpICsgMildID4+IDIpXG4gICAgYXJyW2N1ckJ5dGUrK10gPSAodG1wID4+IDgpICYgMHhGRlxuICAgIGFycltjdXJCeXRlKytdID0gdG1wICYgMHhGRlxuICB9XG5cbiAgcmV0dXJuIGFyclxufVxuXG5mdW5jdGlvbiB0cmlwbGV0VG9CYXNlNjQgKG51bSkge1xuICByZXR1cm4gbG9va3VwW251bSA+PiAxOCAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtID4+IDEyICYgMHgzRl0gK1xuICAgIGxvb2t1cFtudW0gPj4gNiAmIDB4M0ZdICtcbiAgICBsb29rdXBbbnVtICYgMHgzRl1cbn1cblxuZnVuY3Rpb24gZW5jb2RlQ2h1bmsgKHVpbnQ4LCBzdGFydCwgZW5kKSB7XG4gIHZhciB0bXBcbiAgdmFyIG91dHB1dCA9IFtdXG4gIGZvciAodmFyIGkgPSBzdGFydDsgaSA8IGVuZDsgaSArPSAzKSB7XG4gICAgdG1wID1cbiAgICAgICgodWludDhbaV0gPDwgMTYpICYgMHhGRjAwMDApICtcbiAgICAgICgodWludDhbaSArIDFdIDw8IDgpICYgMHhGRjAwKSArXG4gICAgICAodWludDhbaSArIDJdICYgMHhGRilcbiAgICBvdXRwdXQucHVzaCh0cmlwbGV0VG9CYXNlNjQodG1wKSlcbiAgfVxuICByZXR1cm4gb3V0cHV0LmpvaW4oJycpXG59XG5cbmZ1bmN0aW9uIGZyb21CeXRlQXJyYXkgKHVpbnQ4KSB7XG4gIHZhciB0bXBcbiAgdmFyIGxlbiA9IHVpbnQ4Lmxlbmd0aFxuICB2YXIgZXh0cmFCeXRlcyA9IGxlbiAlIDMgLy8gaWYgd2UgaGF2ZSAxIGJ5dGUgbGVmdCwgcGFkIDIgYnl0ZXNcbiAgdmFyIHBhcnRzID0gW11cbiAgdmFyIG1heENodW5rTGVuZ3RoID0gMTYzODMgLy8gbXVzdCBiZSBtdWx0aXBsZSBvZiAzXG5cbiAgLy8gZ28gdGhyb3VnaCB0aGUgYXJyYXkgZXZlcnkgdGhyZWUgYnl0ZXMsIHdlJ2xsIGRlYWwgd2l0aCB0cmFpbGluZyBzdHVmZiBsYXRlclxuICBmb3IgKHZhciBpID0gMCwgbGVuMiA9IGxlbiAtIGV4dHJhQnl0ZXM7IGkgPCBsZW4yOyBpICs9IG1heENodW5rTGVuZ3RoKSB7XG4gICAgcGFydHMucHVzaChlbmNvZGVDaHVuayhcbiAgICAgIHVpbnQ4LCBpLCAoaSArIG1heENodW5rTGVuZ3RoKSA+IGxlbjIgPyBsZW4yIDogKGkgKyBtYXhDaHVua0xlbmd0aClcbiAgICApKVxuICB9XG5cbiAgLy8gcGFkIHRoZSBlbmQgd2l0aCB6ZXJvcywgYnV0IG1ha2Ugc3VyZSB0byBub3QgZm9yZ2V0IHRoZSBleHRyYSBieXRlc1xuICBpZiAoZXh0cmFCeXRlcyA9PT0gMSkge1xuICAgIHRtcCA9IHVpbnQ4W2xlbiAtIDFdXG4gICAgcGFydHMucHVzaChcbiAgICAgIGxvb2t1cFt0bXAgPj4gMl0gK1xuICAgICAgbG9va3VwWyh0bXAgPDwgNCkgJiAweDNGXSArXG4gICAgICAnPT0nXG4gICAgKVxuICB9IGVsc2UgaWYgKGV4dHJhQnl0ZXMgPT09IDIpIHtcbiAgICB0bXAgPSAodWludDhbbGVuIC0gMl0gPDwgOCkgKyB1aW50OFtsZW4gLSAxXVxuICAgIHBhcnRzLnB1c2goXG4gICAgICBsb29rdXBbdG1wID4+IDEwXSArXG4gICAgICBsb29rdXBbKHRtcCA+PiA0KSAmIDB4M0ZdICtcbiAgICAgIGxvb2t1cFsodG1wIDw8IDIpICYgMHgzRl0gK1xuICAgICAgJz0nXG4gICAgKVxuICB9XG5cbiAgcmV0dXJuIHBhcnRzLmpvaW4oJycpXG59XG4iLCJleHBvcnRzLnJlYWQgPSBmdW5jdGlvbiAoYnVmZmVyLCBvZmZzZXQsIGlzTEUsIG1MZW4sIG5CeXRlcykge1xuICB2YXIgZSwgbVxuICB2YXIgZUxlbiA9IChuQnl0ZXMgKiA4KSAtIG1MZW4gLSAxXG4gIHZhciBlTWF4ID0gKDEgPDwgZUxlbikgLSAxXG4gIHZhciBlQmlhcyA9IGVNYXggPj4gMVxuICB2YXIgbkJpdHMgPSAtN1xuICB2YXIgaSA9IGlzTEUgPyAobkJ5dGVzIC0gMSkgOiAwXG4gIHZhciBkID0gaXNMRSA/IC0xIDogMVxuICB2YXIgcyA9IGJ1ZmZlcltvZmZzZXQgKyBpXVxuXG4gIGkgKz0gZFxuXG4gIGUgPSBzICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIHMgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IGVMZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgZSA9IChlICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIG0gPSBlICYgKCgxIDw8ICgtbkJpdHMpKSAtIDEpXG4gIGUgPj49ICgtbkJpdHMpXG4gIG5CaXRzICs9IG1MZW5cbiAgZm9yICg7IG5CaXRzID4gMDsgbSA9IChtICogMjU2KSArIGJ1ZmZlcltvZmZzZXQgKyBpXSwgaSArPSBkLCBuQml0cyAtPSA4KSB7fVxuXG4gIGlmIChlID09PSAwKSB7XG4gICAgZSA9IDEgLSBlQmlhc1xuICB9IGVsc2UgaWYgKGUgPT09IGVNYXgpIHtcbiAgICByZXR1cm4gbSA/IE5hTiA6ICgocyA/IC0xIDogMSkgKiBJbmZpbml0eSlcbiAgfSBlbHNlIHtcbiAgICBtID0gbSArIE1hdGgucG93KDIsIG1MZW4pXG4gICAgZSA9IGUgLSBlQmlhc1xuICB9XG4gIHJldHVybiAocyA/IC0xIDogMSkgKiBtICogTWF0aC5wb3coMiwgZSAtIG1MZW4pXG59XG5cbmV4cG9ydHMud3JpdGUgPSBmdW5jdGlvbiAoYnVmZmVyLCB2YWx1ZSwgb2Zmc2V0LCBpc0xFLCBtTGVuLCBuQnl0ZXMpIHtcbiAgdmFyIGUsIG0sIGNcbiAgdmFyIGVMZW4gPSAobkJ5dGVzICogOCkgLSBtTGVuIC0gMVxuICB2YXIgZU1heCA9ICgxIDw8IGVMZW4pIC0gMVxuICB2YXIgZUJpYXMgPSBlTWF4ID4+IDFcbiAgdmFyIHJ0ID0gKG1MZW4gPT09IDIzID8gTWF0aC5wb3coMiwgLTI0KSAtIE1hdGgucG93KDIsIC03NykgOiAwKVxuICB2YXIgaSA9IGlzTEUgPyAwIDogKG5CeXRlcyAtIDEpXG4gIHZhciBkID0gaXNMRSA/IDEgOiAtMVxuICB2YXIgcyA9IHZhbHVlIDwgMCB8fCAodmFsdWUgPT09IDAgJiYgMSAvIHZhbHVlIDwgMCkgPyAxIDogMFxuXG4gIHZhbHVlID0gTWF0aC5hYnModmFsdWUpXG5cbiAgaWYgKGlzTmFOKHZhbHVlKSB8fCB2YWx1ZSA9PT0gSW5maW5pdHkpIHtcbiAgICBtID0gaXNOYU4odmFsdWUpID8gMSA6IDBcbiAgICBlID0gZU1heFxuICB9IGVsc2Uge1xuICAgIGUgPSBNYXRoLmZsb29yKE1hdGgubG9nKHZhbHVlKSAvIE1hdGguTE4yKVxuICAgIGlmICh2YWx1ZSAqIChjID0gTWF0aC5wb3coMiwgLWUpKSA8IDEpIHtcbiAgICAgIGUtLVxuICAgICAgYyAqPSAyXG4gICAgfVxuICAgIGlmIChlICsgZUJpYXMgPj0gMSkge1xuICAgICAgdmFsdWUgKz0gcnQgLyBjXG4gICAgfSBlbHNlIHtcbiAgICAgIHZhbHVlICs9IHJ0ICogTWF0aC5wb3coMiwgMSAtIGVCaWFzKVxuICAgIH1cbiAgICBpZiAodmFsdWUgKiBjID49IDIpIHtcbiAgICAgIGUrK1xuICAgICAgYyAvPSAyXG4gICAgfVxuXG4gICAgaWYgKGUgKyBlQmlhcyA+PSBlTWF4KSB7XG4gICAgICBtID0gMFxuICAgICAgZSA9IGVNYXhcbiAgICB9IGVsc2UgaWYgKGUgKyBlQmlhcyA+PSAxKSB7XG4gICAgICBtID0gKCh2YWx1ZSAqIGMpIC0gMSkgKiBNYXRoLnBvdygyLCBtTGVuKVxuICAgICAgZSA9IGUgKyBlQmlhc1xuICAgIH0gZWxzZSB7XG4gICAgICBtID0gdmFsdWUgKiBNYXRoLnBvdygyLCBlQmlhcyAtIDEpICogTWF0aC5wb3coMiwgbUxlbilcbiAgICAgIGUgPSAwXG4gICAgfVxuICB9XG5cbiAgZm9yICg7IG1MZW4gPj0gODsgYnVmZmVyW29mZnNldCArIGldID0gbSAmIDB4ZmYsIGkgKz0gZCwgbSAvPSAyNTYsIG1MZW4gLT0gOCkge31cblxuICBlID0gKGUgPDwgbUxlbikgfCBtXG4gIGVMZW4gKz0gbUxlblxuICBmb3IgKDsgZUxlbiA+IDA7IGJ1ZmZlcltvZmZzZXQgKyBpXSA9IGUgJiAweGZmLCBpICs9IGQsIGUgLz0gMjU2LCBlTGVuIC09IDgpIHt9XG5cbiAgYnVmZmVyW29mZnNldCArIGkgLSBkXSB8PSBzICogMTI4XG59XG4iLCIvKmdsb2JhbCBCdWZmZXIqL1xuLy8gTmFtZWQgY29uc3RhbnRzIHdpdGggdW5pcXVlIGludGVnZXIgdmFsdWVzXG52YXIgQyA9IHt9O1xuLy8gVG9rZW5zXG52YXIgTEVGVF9CUkFDRSAgICA9IEMuTEVGVF9CUkFDRSAgICA9IDB4MTtcbnZhciBSSUdIVF9CUkFDRSAgID0gQy5SSUdIVF9CUkFDRSAgID0gMHgyO1xudmFyIExFRlRfQlJBQ0tFVCAgPSBDLkxFRlRfQlJBQ0tFVCAgPSAweDM7XG52YXIgUklHSFRfQlJBQ0tFVCA9IEMuUklHSFRfQlJBQ0tFVCA9IDB4NDtcbnZhciBDT0xPTiAgICAgICAgID0gQy5DT0xPTiAgICAgICAgID0gMHg1O1xudmFyIENPTU1BICAgICAgICAgPSBDLkNPTU1BICAgICAgICAgPSAweDY7XG52YXIgVFJVRSAgICAgICAgICA9IEMuVFJVRSAgICAgICAgICA9IDB4NztcbnZhciBGQUxTRSAgICAgICAgID0gQy5GQUxTRSAgICAgICAgID0gMHg4O1xudmFyIE5VTEwgICAgICAgICAgPSBDLk5VTEwgICAgICAgICAgPSAweDk7XG52YXIgU1RSSU5HICAgICAgICA9IEMuU1RSSU5HICAgICAgICA9IDB4YTtcbnZhciBOVU1CRVIgICAgICAgID0gQy5OVU1CRVIgICAgICAgID0gMHhiO1xuLy8gVG9rZW5pemVyIFN0YXRlc1xudmFyIFNUQVJUICAgPSBDLlNUQVJUICAgPSAweDExO1xudmFyIFNUT1AgICAgPSBDLlNUT1AgICAgPSAweDEyO1xudmFyIFRSVUUxICAgPSBDLlRSVUUxICAgPSAweDIxO1xudmFyIFRSVUUyICAgPSBDLlRSVUUyICAgPSAweDIyO1xudmFyIFRSVUUzICAgPSBDLlRSVUUzICAgPSAweDIzO1xudmFyIEZBTFNFMSAgPSBDLkZBTFNFMSAgPSAweDMxO1xudmFyIEZBTFNFMiAgPSBDLkZBTFNFMiAgPSAweDMyO1xudmFyIEZBTFNFMyAgPSBDLkZBTFNFMyAgPSAweDMzO1xudmFyIEZBTFNFNCAgPSBDLkZBTFNFNCAgPSAweDM0O1xudmFyIE5VTEwxICAgPSBDLk5VTEwxICAgPSAweDQxO1xudmFyIE5VTEwyICAgPSBDLk5VTEwyICAgPSAweDQyO1xudmFyIE5VTEwzICAgPSBDLk5VTEwzICAgPSAweDQzO1xudmFyIE5VTUJFUjEgPSBDLk5VTUJFUjEgPSAweDUxO1xudmFyIE5VTUJFUjMgPSBDLk5VTUJFUjMgPSAweDUzO1xudmFyIFNUUklORzEgPSBDLlNUUklORzEgPSAweDYxO1xudmFyIFNUUklORzIgPSBDLlNUUklORzIgPSAweDYyO1xudmFyIFNUUklORzMgPSBDLlNUUklORzMgPSAweDYzO1xudmFyIFNUUklORzQgPSBDLlNUUklORzQgPSAweDY0O1xudmFyIFNUUklORzUgPSBDLlNUUklORzUgPSAweDY1O1xudmFyIFNUUklORzYgPSBDLlNUUklORzYgPSAweDY2O1xuLy8gUGFyc2VyIFN0YXRlc1xudmFyIFZBTFVFICAgPSBDLlZBTFVFICAgPSAweDcxO1xudmFyIEtFWSAgICAgPSBDLktFWSAgICAgPSAweDcyO1xuLy8gUGFyc2VyIE1vZGVzXG52YXIgT0JKRUNUICA9IEMuT0JKRUNUICA9IDB4ODE7XG52YXIgQVJSQVkgICA9IEMuQVJSQVkgICA9IDB4ODI7XG4vLyBDaGFyYWN0ZXIgY29uc3RhbnRzXG52YXIgQkFDS19TTEFTSCA9ICAgICAgXCJcXFxcXCIuY2hhckNvZGVBdCgwKTtcbnZhciBGT1JXQVJEX1NMQVNIID0gICBcIlxcL1wiLmNoYXJDb2RlQXQoMCk7XG52YXIgQkFDS1NQQUNFID0gICAgICAgXCJcXGJcIi5jaGFyQ29kZUF0KDApO1xudmFyIEZPUk1fRkVFRCA9ICAgICAgIFwiXFxmXCIuY2hhckNvZGVBdCgwKTtcbnZhciBORVdMSU5FID0gICAgICAgICBcIlxcblwiLmNoYXJDb2RlQXQoMCk7XG52YXIgQ0FSUklBR0VfUkVUVVJOID0gXCJcXHJcIi5jaGFyQ29kZUF0KDApO1xudmFyIFRBQiA9ICAgICAgICAgICAgIFwiXFx0XCIuY2hhckNvZGVBdCgwKTtcblxudmFyIFNUUklOR19CVUZGRVJfU0laRSA9IDY0ICogMTAyNDtcblxuZnVuY3Rpb24gUGFyc2VyKCkge1xuICB0aGlzLnRTdGF0ZSA9IFNUQVJUO1xuICB0aGlzLnZhbHVlID0gdW5kZWZpbmVkO1xuXG4gIHRoaXMuc3RyaW5nID0gdW5kZWZpbmVkOyAvLyBzdHJpbmcgZGF0YVxuICB0aGlzLnN0cmluZ0J1ZmZlciA9IEJ1ZmZlci5hbGxvYyA/IEJ1ZmZlci5hbGxvYyhTVFJJTkdfQlVGRkVSX1NJWkUpIDogbmV3IEJ1ZmZlcihTVFJJTkdfQlVGRkVSX1NJWkUpO1xuICB0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCA9IDA7XG4gIHRoaXMudW5pY29kZSA9IHVuZGVmaW5lZDsgLy8gdW5pY29kZSBlc2NhcGVzXG4gIHRoaXMuaGlnaFN1cnJvZ2F0ZSA9IHVuZGVmaW5lZDtcblxuICB0aGlzLmtleSA9IHVuZGVmaW5lZDtcbiAgdGhpcy5tb2RlID0gdW5kZWZpbmVkO1xuICB0aGlzLnN0YWNrID0gW107XG4gIHRoaXMuc3RhdGUgPSBWQUxVRTtcbiAgdGhpcy5ieXRlc19yZW1haW5pbmcgPSAwOyAvLyBudW1iZXIgb2YgYnl0ZXMgcmVtYWluaW5nIGluIG11bHRpIGJ5dGUgdXRmOCBjaGFyIHRvIHJlYWQgYWZ0ZXIgc3BsaXQgYm91bmRhcnlcbiAgdGhpcy5ieXRlc19pbl9zZXF1ZW5jZSA9IDA7IC8vIGJ5dGVzIGluIG11bHRpIGJ5dGUgdXRmOCBjaGFyIHRvIHJlYWRcbiAgdGhpcy50ZW1wX2J1ZmZzID0geyBcIjJcIjogbmV3IEJ1ZmZlcigyKSwgXCIzXCI6IG5ldyBCdWZmZXIoMyksIFwiNFwiOiBuZXcgQnVmZmVyKDQpIH07IC8vIGZvciByZWJ1aWxkaW5nIGNoYXJzIHNwbGl0IGJlZm9yZSBib3VuZGFyeSBpcyByZWFjaGVkXG5cbiAgLy8gU3RyZWFtIG9mZnNldFxuICB0aGlzLm9mZnNldCA9IC0xO1xufVxuXG4vLyBTbG93IGNvZGUgdG8gc3RyaW5nIGNvbnZlcnRlciAob25seSB1c2VkIHdoZW4gdGhyb3dpbmcgc3ludGF4IGVycm9ycylcblBhcnNlci50b2tuYW0gPSBmdW5jdGlvbiAoY29kZSkge1xuICB2YXIga2V5cyA9IE9iamVjdC5rZXlzKEMpO1xuICBmb3IgKHZhciBpID0gMCwgbCA9IGtleXMubGVuZ3RoOyBpIDwgbDsgaSsrKSB7XG4gICAgdmFyIGtleSA9IGtleXNbaV07XG4gICAgaWYgKENba2V5XSA9PT0gY29kZSkgeyByZXR1cm4ga2V5OyB9XG4gIH1cbiAgcmV0dXJuIGNvZGUgJiYgKFwiMHhcIiArIGNvZGUudG9TdHJpbmcoMTYpKTtcbn07XG5cbnZhciBwcm90byA9IFBhcnNlci5wcm90b3R5cGU7XG5wcm90by5vbkVycm9yID0gZnVuY3Rpb24gKGVycikgeyB0aHJvdyBlcnI7IH07XG5wcm90by5jaGFyRXJyb3IgPSBmdW5jdGlvbiAoYnVmZmVyLCBpKSB7XG4gIHRoaXMudFN0YXRlID0gU1RPUDtcbiAgdGhpcy5vbkVycm9yKG5ldyBFcnJvcihcIlVuZXhwZWN0ZWQgXCIgKyBKU09OLnN0cmluZ2lmeShTdHJpbmcuZnJvbUNoYXJDb2RlKGJ1ZmZlcltpXSkpICsgXCIgYXQgcG9zaXRpb24gXCIgKyBpICsgXCIgaW4gc3RhdGUgXCIgKyBQYXJzZXIudG9rbmFtKHRoaXMudFN0YXRlKSkpO1xufTtcbnByb3RvLmFwcGVuZFN0cmluZ0NoYXIgPSBmdW5jdGlvbiAoY2hhcikge1xuICBpZiAodGhpcy5zdHJpbmdCdWZmZXJPZmZzZXQgPj0gU1RSSU5HX0JVRkZFUl9TSVpFKSB7XG4gICAgdGhpcy5zdHJpbmcgKz0gdGhpcy5zdHJpbmdCdWZmZXIudG9TdHJpbmcoJ3V0ZjgnKTtcbiAgICB0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCA9IDA7XG4gIH1cblxuICB0aGlzLnN0cmluZ0J1ZmZlclt0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCsrXSA9IGNoYXI7XG59O1xucHJvdG8uYXBwZW5kU3RyaW5nQnVmID0gZnVuY3Rpb24gKGJ1Ziwgc3RhcnQsIGVuZCkge1xuICB2YXIgc2l6ZSA9IGJ1Zi5sZW5ndGg7XG4gIGlmICh0eXBlb2Ygc3RhcnQgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKHR5cGVvZiBlbmQgPT09ICdudW1iZXInKSB7XG4gICAgICBpZiAoZW5kIDwgMCkge1xuICAgICAgICAvLyBhZGRpbmcgYSBuZWdhdGl2ZSBlbmQgZGVjcmVlc2VzIHRoZSBzaXplXG4gICAgICAgIHNpemUgPSBidWYubGVuZ3RoIC0gc3RhcnQgKyBlbmQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBzaXplID0gZW5kIC0gc3RhcnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIHNpemUgPSBidWYubGVuZ3RoIC0gc3RhcnQ7XG4gICAgfVxuICB9XG5cbiAgaWYgKHNpemUgPCAwKSB7XG4gICAgc2l6ZSA9IDA7XG4gIH1cblxuICBpZiAodGhpcy5zdHJpbmdCdWZmZXJPZmZzZXQgKyBzaXplID4gU1RSSU5HX0JVRkZFUl9TSVpFKSB7XG4gICAgdGhpcy5zdHJpbmcgKz0gdGhpcy5zdHJpbmdCdWZmZXIudG9TdHJpbmcoJ3V0ZjgnLCAwLCB0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCk7XG4gICAgdGhpcy5zdHJpbmdCdWZmZXJPZmZzZXQgPSAwO1xuICB9XG5cbiAgYnVmLmNvcHkodGhpcy5zdHJpbmdCdWZmZXIsIHRoaXMuc3RyaW5nQnVmZmVyT2Zmc2V0LCBzdGFydCwgZW5kKTtcbiAgdGhpcy5zdHJpbmdCdWZmZXJPZmZzZXQgKz0gc2l6ZTtcbn07XG5wcm90by53cml0ZSA9IGZ1bmN0aW9uIChidWZmZXIpIHtcbiAgaWYgKHR5cGVvZiBidWZmZXIgPT09IFwic3RyaW5nXCIpIGJ1ZmZlciA9IG5ldyBCdWZmZXIoYnVmZmVyKTtcbiAgdmFyIG47XG4gIGZvciAodmFyIGkgPSAwLCBsID0gYnVmZmVyLmxlbmd0aDsgaSA8IGw7IGkrKykge1xuICAgIGlmICh0aGlzLnRTdGF0ZSA9PT0gU1RBUlQpe1xuICAgICAgbiA9IGJ1ZmZlcltpXTtcbiAgICAgIHRoaXMub2Zmc2V0Kys7XG4gICAgICBpZihuID09PSAweDdiKXsgdGhpcy5vblRva2VuKExFRlRfQlJBQ0UsIFwie1wiKTsgLy8ge1xuICAgICAgfWVsc2UgaWYobiA9PT0gMHg3ZCl7IHRoaXMub25Ub2tlbihSSUdIVF9CUkFDRSwgXCJ9XCIpOyAvLyB9XG4gICAgICB9ZWxzZSBpZihuID09PSAweDViKXsgdGhpcy5vblRva2VuKExFRlRfQlJBQ0tFVCwgXCJbXCIpOyAvLyBbXG4gICAgICB9ZWxzZSBpZihuID09PSAweDVkKXsgdGhpcy5vblRva2VuKFJJR0hUX0JSQUNLRVQsIFwiXVwiKTsgLy8gXVxuICAgICAgfWVsc2UgaWYobiA9PT0gMHgzYSl7IHRoaXMub25Ub2tlbihDT0xPTiwgXCI6XCIpOyAgLy8gOlxuICAgICAgfWVsc2UgaWYobiA9PT0gMHgyYyl7IHRoaXMub25Ub2tlbihDT01NQSwgXCIsXCIpOyAvLyAsXG4gICAgICB9ZWxzZSBpZihuID09PSAweDc0KXsgdGhpcy50U3RhdGUgPSBUUlVFMTsgIC8vIHRcbiAgICAgIH1lbHNlIGlmKG4gPT09IDB4NjYpeyB0aGlzLnRTdGF0ZSA9IEZBTFNFMTsgIC8vIGZcbiAgICAgIH1lbHNlIGlmKG4gPT09IDB4NmUpeyB0aGlzLnRTdGF0ZSA9IE5VTEwxOyAvLyBuXG4gICAgICB9ZWxzZSBpZihuID09PSAweDIyKXsgLy8gXCJcbiAgICAgICAgdGhpcy5zdHJpbmcgPSBcIlwiO1xuICAgICAgICB0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCA9IDA7XG4gICAgICAgIHRoaXMudFN0YXRlID0gU1RSSU5HMTtcbiAgICAgIH1lbHNlIGlmKG4gPT09IDB4MmQpeyB0aGlzLnN0cmluZyA9IFwiLVwiOyB0aGlzLnRTdGF0ZSA9IE5VTUJFUjE7IC8vIC1cbiAgICAgIH1lbHNle1xuICAgICAgICBpZiAobiA+PSAweDMwICYmIG4gPCAweDQwKSB7IC8vIDEtOVxuICAgICAgICAgIHRoaXMuc3RyaW5nID0gU3RyaW5nLmZyb21DaGFyQ29kZShuKTsgdGhpcy50U3RhdGUgPSBOVU1CRVIzO1xuICAgICAgICB9IGVsc2UgaWYgKG4gPT09IDB4MjAgfHwgbiA9PT0gMHgwOSB8fCBuID09PSAweDBhIHx8IG4gPT09IDB4MGQpIHtcbiAgICAgICAgICAvLyB3aGl0ZXNwYWNlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgcmV0dXJuIHRoaXMuY2hhckVycm9yKGJ1ZmZlciwgaSk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IFNUUklORzEpeyAvLyBBZnRlciBvcGVuIHF1b3RlXG4gICAgICBuID0gYnVmZmVyW2ldOyAvLyBnZXQgY3VycmVudCBieXRlIGZyb20gYnVmZmVyXG4gICAgICAvLyBjaGVjayBmb3IgY2Fycnkgb3ZlciBvZiBhIG11bHRpIGJ5dGUgY2hhciBzcGxpdCBiZXR3ZWVuIGRhdGEgY2h1bmtzXG4gICAgICAvLyAmIGZpbGwgdGVtcCBidWZmZXIgaXQgd2l0aCBzdGFydCBvZiB0aGlzIGRhdGEgY2h1bmsgdXAgdG8gdGhlIGJvdW5kYXJ5IGxpbWl0IHNldCBpbiB0aGUgbGFzdCBpdGVyYXRpb25cbiAgICAgIGlmICh0aGlzLmJ5dGVzX3JlbWFpbmluZyA+IDApIHtcbiAgICAgICAgZm9yICh2YXIgaiA9IDA7IGogPCB0aGlzLmJ5dGVzX3JlbWFpbmluZzsgaisrKSB7XG4gICAgICAgICAgdGhpcy50ZW1wX2J1ZmZzW3RoaXMuYnl0ZXNfaW5fc2VxdWVuY2VdW3RoaXMuYnl0ZXNfaW5fc2VxdWVuY2UgLSB0aGlzLmJ5dGVzX3JlbWFpbmluZyArIGpdID0gYnVmZmVyW2pdO1xuICAgICAgICB9XG5cbiAgICAgICAgdGhpcy5hcHBlbmRTdHJpbmdCdWYodGhpcy50ZW1wX2J1ZmZzW3RoaXMuYnl0ZXNfaW5fc2VxdWVuY2VdKTtcbiAgICAgICAgdGhpcy5ieXRlc19pbl9zZXF1ZW5jZSA9IHRoaXMuYnl0ZXNfcmVtYWluaW5nID0gMDtcbiAgICAgICAgaSA9IGkgKyBqIC0gMTtcbiAgICAgIH0gZWxzZSBpZiAodGhpcy5ieXRlc19yZW1haW5pbmcgPT09IDAgJiYgbiA+PSAxMjgpIHsgLy8gZWxzZSBpZiBubyByZW1haW5kZXIgYnl0ZXMgY2FycmllZCBvdmVyLCBwYXJzZSBtdWx0aSBieXRlICg+PTEyOCkgY2hhcnMgb25lIGF0IGEgdGltZVxuICAgICAgICBpZiAobiA8PSAxOTMgfHwgbiA+IDI0NCkge1xuICAgICAgICAgIHJldHVybiB0aGlzLm9uRXJyb3IobmV3IEVycm9yKFwiSW52YWxpZCBVVEYtOCBjaGFyYWN0ZXIgYXQgcG9zaXRpb24gXCIgKyBpICsgXCIgaW4gc3RhdGUgXCIgKyBQYXJzZXIudG9rbmFtKHRoaXMudFN0YXRlKSkpO1xuICAgICAgICB9XG4gICAgICAgIGlmICgobiA+PSAxOTQpICYmIChuIDw9IDIyMykpIHRoaXMuYnl0ZXNfaW5fc2VxdWVuY2UgPSAyO1xuICAgICAgICBpZiAoKG4gPj0gMjI0KSAmJiAobiA8PSAyMzkpKSB0aGlzLmJ5dGVzX2luX3NlcXVlbmNlID0gMztcbiAgICAgICAgaWYgKChuID49IDI0MCkgJiYgKG4gPD0gMjQ0KSkgdGhpcy5ieXRlc19pbl9zZXF1ZW5jZSA9IDQ7XG4gICAgICAgIGlmICgodGhpcy5ieXRlc19pbl9zZXF1ZW5jZSArIGkpID4gYnVmZmVyLmxlbmd0aCkgeyAvLyBpZiBieXRlcyBuZWVkZWQgdG8gY29tcGxldGUgY2hhciBmYWxsIG91dHNpZGUgYnVmZmVyIGxlbmd0aCwgd2UgaGF2ZSBhIGJvdW5kYXJ5IHNwbGl0XG4gICAgICAgICAgZm9yICh2YXIgayA9IDA7IGsgPD0gKGJ1ZmZlci5sZW5ndGggLSAxIC0gaSk7IGsrKykge1xuICAgICAgICAgICAgdGhpcy50ZW1wX2J1ZmZzW3RoaXMuYnl0ZXNfaW5fc2VxdWVuY2VdW2tdID0gYnVmZmVyW2kgKyBrXTsgLy8gZmlsbCB0ZW1wIGJ1ZmZlciBvZiBjb3JyZWN0IHNpemUgd2l0aCBieXRlcyBhdmFpbGFibGUgaW4gdGhpcyBjaHVua1xuICAgICAgICAgIH1cbiAgICAgICAgICB0aGlzLmJ5dGVzX3JlbWFpbmluZyA9IChpICsgdGhpcy5ieXRlc19pbl9zZXF1ZW5jZSkgLSBidWZmZXIubGVuZ3RoO1xuICAgICAgICAgIGkgPSBidWZmZXIubGVuZ3RoIC0gMTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICB0aGlzLmFwcGVuZFN0cmluZ0J1ZihidWZmZXIsIGksIGkgKyB0aGlzLmJ5dGVzX2luX3NlcXVlbmNlKTtcbiAgICAgICAgICBpID0gaSArIHRoaXMuYnl0ZXNfaW5fc2VxdWVuY2UgLSAxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2UgaWYgKG4gPT09IDB4MjIpIHtcbiAgICAgICAgdGhpcy50U3RhdGUgPSBTVEFSVDtcbiAgICAgICAgdGhpcy5zdHJpbmcgKz0gdGhpcy5zdHJpbmdCdWZmZXIudG9TdHJpbmcoJ3V0ZjgnLCAwLCB0aGlzLnN0cmluZ0J1ZmZlck9mZnNldCk7XG4gICAgICAgIHRoaXMuc3RyaW5nQnVmZmVyT2Zmc2V0ID0gMDtcbiAgICAgICAgdGhpcy5vblRva2VuKFNUUklORywgdGhpcy5zdHJpbmcpO1xuICAgICAgICB0aGlzLm9mZnNldCArPSBCdWZmZXIuYnl0ZUxlbmd0aCh0aGlzLnN0cmluZywgJ3V0ZjgnKSArIDE7XG4gICAgICAgIHRoaXMuc3RyaW5nID0gdW5kZWZpbmVkO1xuICAgICAgfVxuICAgICAgZWxzZSBpZiAobiA9PT0gMHg1Yykge1xuICAgICAgICB0aGlzLnRTdGF0ZSA9IFNUUklORzI7XG4gICAgICB9XG4gICAgICBlbHNlIGlmIChuID49IDB4MjApIHsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKG4pOyB9XG4gICAgICBlbHNlIHtcbiAgICAgICAgICByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTtcbiAgICAgIH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IFNUUklORzIpeyAvLyBBZnRlciBiYWNrc2xhc2hcbiAgICAgIG4gPSBidWZmZXJbaV07XG4gICAgICBpZihuID09PSAweDIyKXsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKG4pOyB0aGlzLnRTdGF0ZSA9IFNUUklORzE7XG4gICAgICB9ZWxzZSBpZihuID09PSAweDVjKXsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKEJBQ0tfU0xBU0gpOyB0aGlzLnRTdGF0ZSA9IFNUUklORzE7XG4gICAgICB9ZWxzZSBpZihuID09PSAweDJmKXsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKEZPUldBUkRfU0xBU0gpOyB0aGlzLnRTdGF0ZSA9IFNUUklORzE7XG4gICAgICB9ZWxzZSBpZihuID09PSAweDYyKXsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKEJBQ0tTUEFDRSk7IHRoaXMudFN0YXRlID0gU1RSSU5HMTtcbiAgICAgIH1lbHNlIGlmKG4gPT09IDB4NjYpeyB0aGlzLmFwcGVuZFN0cmluZ0NoYXIoRk9STV9GRUVEKTsgdGhpcy50U3RhdGUgPSBTVFJJTkcxO1xuICAgICAgfWVsc2UgaWYobiA9PT0gMHg2ZSl7IHRoaXMuYXBwZW5kU3RyaW5nQ2hhcihORVdMSU5FKTsgdGhpcy50U3RhdGUgPSBTVFJJTkcxO1xuICAgICAgfWVsc2UgaWYobiA9PT0gMHg3Mil7IHRoaXMuYXBwZW5kU3RyaW5nQ2hhcihDQVJSSUFHRV9SRVRVUk4pOyB0aGlzLnRTdGF0ZSA9IFNUUklORzE7XG4gICAgICB9ZWxzZSBpZihuID09PSAweDc0KXsgdGhpcy5hcHBlbmRTdHJpbmdDaGFyKFRBQik7IHRoaXMudFN0YXRlID0gU1RSSU5HMTtcbiAgICAgIH1lbHNlIGlmKG4gPT09IDB4NzUpeyB0aGlzLnVuaWNvZGUgPSBcIlwiOyB0aGlzLnRTdGF0ZSA9IFNUUklORzM7XG4gICAgICB9ZWxzZXtcbiAgICAgICAgcmV0dXJuIHRoaXMuY2hhckVycm9yKGJ1ZmZlciwgaSk7XG4gICAgICB9XG4gICAgfWVsc2UgaWYgKHRoaXMudFN0YXRlID09PSBTVFJJTkczIHx8IHRoaXMudFN0YXRlID09PSBTVFJJTkc0IHx8IHRoaXMudFN0YXRlID09PSBTVFJJTkc1IHx8IHRoaXMudFN0YXRlID09PSBTVFJJTkc2KXsgLy8gdW5pY29kZSBoZXggY29kZXNcbiAgICAgIG4gPSBidWZmZXJbaV07XG4gICAgICAvLyAwLTkgQS1GIGEtZlxuICAgICAgaWYgKChuID49IDB4MzAgJiYgbiA8IDB4NDApIHx8IChuID4gMHg0MCAmJiBuIDw9IDB4NDYpIHx8IChuID4gMHg2MCAmJiBuIDw9IDB4NjYpKSB7XG4gICAgICAgIHRoaXMudW5pY29kZSArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG4pO1xuICAgICAgICBpZiAodGhpcy50U3RhdGUrKyA9PT0gU1RSSU5HNikge1xuICAgICAgICAgIHZhciBpbnRWYWwgPSBwYXJzZUludCh0aGlzLnVuaWNvZGUsIDE2KTtcbiAgICAgICAgICB0aGlzLnVuaWNvZGUgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgaWYgKHRoaXMuaGlnaFN1cnJvZ2F0ZSAhPT0gdW5kZWZpbmVkICYmIGludFZhbCA+PSAweERDMDAgJiYgaW50VmFsIDwgKDB4REZGRiArIDEpKSB7IC8vPDU2MzIwLDU3MzQzPiAtIGxvd1N1cnJvZ2F0ZVxuICAgICAgICAgICAgdGhpcy5hcHBlbmRTdHJpbmdCdWYobmV3IEJ1ZmZlcihTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuaGlnaFN1cnJvZ2F0ZSwgaW50VmFsKSkpO1xuICAgICAgICAgICAgdGhpcy5oaWdoU3Vycm9nYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICAgIH0gZWxzZSBpZiAodGhpcy5oaWdoU3Vycm9nYXRlID09PSB1bmRlZmluZWQgJiYgaW50VmFsID49IDB4RDgwMCAmJiBpbnRWYWwgPCAoMHhEQkZGICsgMSkpIHsgLy88NTUyOTYsNTYzMTk+IC0gaGlnaFN1cnJvZ2F0ZVxuICAgICAgICAgICAgdGhpcy5oaWdoU3Vycm9nYXRlID0gaW50VmFsO1xuICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBpZiAodGhpcy5oaWdoU3Vycm9nYXRlICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgICAgICAgdGhpcy5hcHBlbmRTdHJpbmdCdWYobmV3IEJ1ZmZlcihTdHJpbmcuZnJvbUNoYXJDb2RlKHRoaXMuaGlnaFN1cnJvZ2F0ZSkpKTtcbiAgICAgICAgICAgICAgdGhpcy5oaWdoU3Vycm9nYXRlID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgdGhpcy5hcHBlbmRTdHJpbmdCdWYobmV3IEJ1ZmZlcihTdHJpbmcuZnJvbUNoYXJDb2RlKGludFZhbCkpKTtcbiAgICAgICAgICB9XG4gICAgICAgICAgdGhpcy50U3RhdGUgPSBTVFJJTkcxO1xuICAgICAgICB9XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTtcbiAgICAgIH1cbiAgICB9IGVsc2UgaWYgKHRoaXMudFN0YXRlID09PSBOVU1CRVIxIHx8IHRoaXMudFN0YXRlID09PSBOVU1CRVIzKSB7XG4gICAgICAgIG4gPSBidWZmZXJbaV07XG5cbiAgICAgICAgc3dpdGNoIChuKSB7XG4gICAgICAgICAgY2FzZSAweDMwOiAvLyAwXG4gICAgICAgICAgY2FzZSAweDMxOiAvLyAxXG4gICAgICAgICAgY2FzZSAweDMyOiAvLyAyXG4gICAgICAgICAgY2FzZSAweDMzOiAvLyAzXG4gICAgICAgICAgY2FzZSAweDM0OiAvLyA0XG4gICAgICAgICAgY2FzZSAweDM1OiAvLyA1XG4gICAgICAgICAgY2FzZSAweDM2OiAvLyA2XG4gICAgICAgICAgY2FzZSAweDM3OiAvLyA3XG4gICAgICAgICAgY2FzZSAweDM4OiAvLyA4XG4gICAgICAgICAgY2FzZSAweDM5OiAvLyA5XG4gICAgICAgICAgY2FzZSAweDJlOiAvLyAuXG4gICAgICAgICAgY2FzZSAweDY1OiAvLyBlXG4gICAgICAgICAgY2FzZSAweDQ1OiAvLyBFXG4gICAgICAgICAgY2FzZSAweDJiOiAvLyArXG4gICAgICAgICAgY2FzZSAweDJkOiAvLyAtXG4gICAgICAgICAgICB0aGlzLnN0cmluZyArPSBTdHJpbmcuZnJvbUNoYXJDb2RlKG4pO1xuICAgICAgICAgICAgdGhpcy50U3RhdGUgPSBOVU1CRVIzO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICAgIHRoaXMudFN0YXRlID0gU1RBUlQ7XG4gICAgICAgICAgICB2YXIgcmVzdWx0ID0gTnVtYmVyKHRoaXMuc3RyaW5nKTtcblxuICAgICAgICAgICAgaWYgKGlzTmFOKHJlc3VsdCkpe1xuICAgICAgICAgICAgICByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgaWYgKCh0aGlzLnN0cmluZy5tYXRjaCgvWzAtOV0rLykgPT0gdGhpcy5zdHJpbmcpICYmIChyZXN1bHQudG9TdHJpbmcoKSAhPSB0aGlzLnN0cmluZykpIHtcbiAgICAgICAgICAgICAgLy8gTG9uZyBzdHJpbmcgb2YgZGlnaXRzIHdoaWNoIGlzIGFuIElEIHN0cmluZyBhbmQgbm90IHZhbGlkIGFuZC9vciBzYWZlIEphdmFTY3JpcHQgaW50ZWdlciBOdW1iZXJcbiAgICAgICAgICAgICAgdGhpcy5vblRva2VuKFNUUklORywgdGhpcy5zdHJpbmcpO1xuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgdGhpcy5vblRva2VuKE5VTUJFUiwgcmVzdWx0KTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhpcy5vZmZzZXQgKz0gdGhpcy5zdHJpbmcubGVuZ3RoIC0gMTtcbiAgICAgICAgICAgIHRoaXMuc3RyaW5nID0gdW5kZWZpbmVkO1xuICAgICAgICAgICAgaS0tO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IFRSVUUxKXsgLy8gclxuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gMHg3MikgeyB0aGlzLnRTdGF0ZSA9IFRSVUUyOyB9XG4gICAgICBlbHNlIHsgcmV0dXJuIHRoaXMuY2hhckVycm9yKGJ1ZmZlciwgaSk7IH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IFRSVUUyKXsgLy8gdVxuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gMHg3NSkgeyB0aGlzLnRTdGF0ZSA9IFRSVUUzOyB9XG4gICAgICBlbHNlIHsgcmV0dXJuIHRoaXMuY2hhckVycm9yKGJ1ZmZlciwgaSk7IH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IFRSVUUzKXsgLy8gZVxuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gMHg2NSkgeyB0aGlzLnRTdGF0ZSA9IFNUQVJUOyB0aGlzLm9uVG9rZW4oVFJVRSwgdHJ1ZSk7IHRoaXMub2Zmc2V0Kz0gMzsgfVxuICAgICAgZWxzZSB7IHJldHVybiB0aGlzLmNoYXJFcnJvcihidWZmZXIsIGkpOyB9XG4gICAgfWVsc2UgaWYgKHRoaXMudFN0YXRlID09PSBGQUxTRTEpeyAvLyBhXG4gICAgICBpZiAoYnVmZmVyW2ldID09PSAweDYxKSB7IHRoaXMudFN0YXRlID0gRkFMU0UyOyB9XG4gICAgICBlbHNlIHsgcmV0dXJuIHRoaXMuY2hhckVycm9yKGJ1ZmZlciwgaSk7IH1cbiAgICB9ZWxzZSBpZiAodGhpcy50U3RhdGUgPT09IEZBTFNFMil7IC8vIGxcbiAgICAgIGlmIChidWZmZXJbaV0gPT09IDB4NmMpIHsgdGhpcy50U3RhdGUgPSBGQUxTRTM7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTsgfVxuICAgIH1lbHNlIGlmICh0aGlzLnRTdGF0ZSA9PT0gRkFMU0UzKXsgLy8gc1xuICAgICAgaWYgKGJ1ZmZlcltpXSA9PT0gMHg3MykgeyB0aGlzLnRTdGF0ZSA9IEZBTFNFNDsgfVxuICAgICAgZWxzZSB7IHJldHVybiB0aGlzLmNoYXJFcnJvcihidWZmZXIsIGkpOyB9XG4gICAgfWVsc2UgaWYgKHRoaXMudFN0YXRlID09PSBGQUxTRTQpeyAvLyBlXG4gICAgICBpZiAoYnVmZmVyW2ldID09PSAweDY1KSB7IHRoaXMudFN0YXRlID0gU1RBUlQ7IHRoaXMub25Ub2tlbihGQUxTRSwgZmFsc2UpOyB0aGlzLm9mZnNldCs9IDQ7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTsgfVxuICAgIH1lbHNlIGlmICh0aGlzLnRTdGF0ZSA9PT0gTlVMTDEpeyAvLyB1XG4gICAgICBpZiAoYnVmZmVyW2ldID09PSAweDc1KSB7IHRoaXMudFN0YXRlID0gTlVMTDI7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTsgfVxuICAgIH1lbHNlIGlmICh0aGlzLnRTdGF0ZSA9PT0gTlVMTDIpeyAvLyBsXG4gICAgICBpZiAoYnVmZmVyW2ldID09PSAweDZjKSB7IHRoaXMudFN0YXRlID0gTlVMTDM7IH1cbiAgICAgIGVsc2UgeyByZXR1cm4gdGhpcy5jaGFyRXJyb3IoYnVmZmVyLCBpKTsgfVxuICAgIH1lbHNlIGlmICh0aGlzLnRTdGF0ZSA9PT0gTlVMTDMpeyAvLyBsXG4gICAgICBpZiAoYnVmZmVyW2ldID09PSAweDZjKSB7IHRoaXMudFN0YXRlID0gU1RBUlQ7IHRoaXMub25Ub2tlbihOVUxMLCBudWxsKTsgdGhpcy5vZmZzZXQgKz0gMzsgfVxuICAgICAgZWxzZSB7IHJldHVybiB0aGlzLmNoYXJFcnJvcihidWZmZXIsIGkpOyB9XG4gICAgfVxuICB9XG59O1xucHJvdG8ub25Ub2tlbiA9IGZ1bmN0aW9uICh0b2tlbiwgdmFsdWUpIHtcbiAgLy8gT3ZlcnJpZGUgdGhpcyB0byBnZXQgZXZlbnRzXG59O1xuXG5wcm90by5wYXJzZUVycm9yID0gZnVuY3Rpb24gKHRva2VuLCB2YWx1ZSkge1xuICB0aGlzLnRTdGF0ZSA9IFNUT1A7XG4gIHRoaXMub25FcnJvcihuZXcgRXJyb3IoXCJVbmV4cGVjdGVkIFwiICsgUGFyc2VyLnRva25hbSh0b2tlbikgKyAodmFsdWUgPyAoXCIoXCIgKyBKU09OLnN0cmluZ2lmeSh2YWx1ZSkgKyBcIilcIikgOiBcIlwiKSArIFwiIGluIHN0YXRlIFwiICsgUGFyc2VyLnRva25hbSh0aGlzLnN0YXRlKSkpO1xufTtcbnByb3RvLnB1c2ggPSBmdW5jdGlvbiAoKSB7XG4gIHRoaXMuc3RhY2sucHVzaCh7dmFsdWU6IHRoaXMudmFsdWUsIGtleTogdGhpcy5rZXksIG1vZGU6IHRoaXMubW9kZX0pO1xufTtcbnByb3RvLnBvcCA9IGZ1bmN0aW9uICgpIHtcbiAgdmFyIHZhbHVlID0gdGhpcy52YWx1ZTtcbiAgdmFyIHBhcmVudCA9IHRoaXMuc3RhY2sucG9wKCk7XG4gIHRoaXMudmFsdWUgPSBwYXJlbnQudmFsdWU7XG4gIHRoaXMua2V5ID0gcGFyZW50LmtleTtcbiAgdGhpcy5tb2RlID0gcGFyZW50Lm1vZGU7XG4gIHRoaXMuZW1pdCh2YWx1ZSk7XG4gIGlmICghdGhpcy5tb2RlKSB7IHRoaXMuc3RhdGUgPSBWQUxVRTsgfVxufTtcbnByb3RvLmVtaXQgPSBmdW5jdGlvbiAodmFsdWUpIHtcbiAgaWYgKHRoaXMubW9kZSkgeyB0aGlzLnN0YXRlID0gQ09NTUE7IH1cbiAgdGhpcy5vblZhbHVlKHZhbHVlKTtcbn07XG5wcm90by5vblZhbHVlID0gZnVuY3Rpb24gKHZhbHVlKSB7XG4gIC8vIE92ZXJyaWRlIG1lXG59O1xucHJvdG8ub25Ub2tlbiA9IGZ1bmN0aW9uICh0b2tlbiwgdmFsdWUpIHtcbiAgaWYodGhpcy5zdGF0ZSA9PT0gVkFMVUUpe1xuICAgIGlmKHRva2VuID09PSBTVFJJTkcgfHwgdG9rZW4gPT09IE5VTUJFUiB8fCB0b2tlbiA9PT0gVFJVRSB8fCB0b2tlbiA9PT0gRkFMU0UgfHwgdG9rZW4gPT09IE5VTEwpe1xuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZVt0aGlzLmtleV0gPSB2YWx1ZTtcbiAgICAgIH1cbiAgICAgIHRoaXMuZW1pdCh2YWx1ZSk7XG4gICAgfWVsc2UgaWYodG9rZW4gPT09IExFRlRfQlJBQ0Upe1xuICAgICAgdGhpcy5wdXNoKCk7XG4gICAgICBpZiAodGhpcy52YWx1ZSkge1xuICAgICAgICB0aGlzLnZhbHVlID0gdGhpcy52YWx1ZVt0aGlzLmtleV0gPSB7fTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHRoaXMudmFsdWUgPSB7fTtcbiAgICAgIH1cbiAgICAgIHRoaXMua2V5ID0gdW5kZWZpbmVkO1xuICAgICAgdGhpcy5zdGF0ZSA9IEtFWTtcbiAgICAgIHRoaXMubW9kZSA9IE9CSkVDVDtcbiAgICB9ZWxzZSBpZih0b2tlbiA9PT0gTEVGVF9CUkFDS0VUKXtcbiAgICAgIHRoaXMucHVzaCgpO1xuICAgICAgaWYgKHRoaXMudmFsdWUpIHtcbiAgICAgICAgdGhpcy52YWx1ZSA9IHRoaXMudmFsdWVbdGhpcy5rZXldID0gW107XG4gICAgICB9IGVsc2Uge1xuICAgICAgICB0aGlzLnZhbHVlID0gW107XG4gICAgICB9XG4gICAgICB0aGlzLmtleSA9IDA7XG4gICAgICB0aGlzLm1vZGUgPSBBUlJBWTtcbiAgICAgIHRoaXMuc3RhdGUgPSBWQUxVRTtcbiAgICB9ZWxzZSBpZih0b2tlbiA9PT0gUklHSFRfQlJBQ0Upe1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gT0JKRUNUKSB7XG4gICAgICAgIHRoaXMucG9wKCk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICByZXR1cm4gdGhpcy5wYXJzZUVycm9yKHRva2VuLCB2YWx1ZSk7XG4gICAgICB9XG4gICAgfWVsc2UgaWYodG9rZW4gPT09IFJJR0hUX0JSQUNLRVQpe1xuICAgICAgaWYgKHRoaXMubW9kZSA9PT0gQVJSQVkpIHtcbiAgICAgICAgdGhpcy5wb3AoKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IodG9rZW4sIHZhbHVlKTtcbiAgICAgIH1cbiAgICB9ZWxzZXtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IodG9rZW4sIHZhbHVlKTtcbiAgICB9XG4gIH1lbHNlIGlmKHRoaXMuc3RhdGUgPT09IEtFWSl7XG4gICAgaWYgKHRva2VuID09PSBTVFJJTkcpIHtcbiAgICAgIHRoaXMua2V5ID0gdmFsdWU7XG4gICAgICB0aGlzLnN0YXRlID0gQ09MT047XG4gICAgfSBlbHNlIGlmICh0b2tlbiA9PT0gUklHSFRfQlJBQ0UpIHtcbiAgICAgIHRoaXMucG9wKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiB0aGlzLnBhcnNlRXJyb3IodG9rZW4sIHZhbHVlKTtcbiAgICB9XG4gIH1lbHNlIGlmKHRoaXMuc3RhdGUgPT09IENPTE9OKXtcbiAgICBpZiAodG9rZW4gPT09IENPTE9OKSB7IHRoaXMuc3RhdGUgPSBWQUxVRTsgfVxuICAgIGVsc2UgeyByZXR1cm4gdGhpcy5wYXJzZUVycm9yKHRva2VuLCB2YWx1ZSk7IH1cbiAgfWVsc2UgaWYodGhpcy5zdGF0ZSA9PT0gQ09NTUEpe1xuICAgIGlmICh0b2tlbiA9PT0gQ09NTUEpIHtcbiAgICAgIGlmICh0aGlzLm1vZGUgPT09IEFSUkFZKSB7IHRoaXMua2V5Kys7IHRoaXMuc3RhdGUgPSBWQUxVRTsgfVxuICAgICAgZWxzZSBpZiAodGhpcy5tb2RlID09PSBPQkpFQ1QpIHsgdGhpcy5zdGF0ZSA9IEtFWTsgfVxuXG4gICAgfSBlbHNlIGlmICh0b2tlbiA9PT0gUklHSFRfQlJBQ0tFVCAmJiB0aGlzLm1vZGUgPT09IEFSUkFZIHx8IHRva2VuID09PSBSSUdIVF9CUkFDRSAmJiB0aGlzLm1vZGUgPT09IE9CSkVDVCkge1xuICAgICAgdGhpcy5wb3AoKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcih0b2tlbiwgdmFsdWUpO1xuICAgIH1cbiAgfWVsc2V7XG4gICAgcmV0dXJuIHRoaXMucGFyc2VFcnJvcih0b2tlbiwgdmFsdWUpO1xuICB9XG59O1xuXG5QYXJzZXIuQyA9IEM7XG5cbm1vZHVsZS5leHBvcnRzID0gUGFyc2VyO1xuIiwidmFyIFN0cmVhbSA9IHJlcXVpcmUoJ3N0cmVhbScpXG5cbi8vIHRocm91Z2hcbi8vXG4vLyBhIHN0cmVhbSB0aGF0IGRvZXMgbm90aGluZyBidXQgcmUtZW1pdCB0aGUgaW5wdXQuXG4vLyB1c2VmdWwgZm9yIGFnZ3JlZ2F0aW5nIGEgc2VyaWVzIG9mIGNoYW5naW5nIGJ1dCBub3QgZW5kaW5nIHN0cmVhbXMgaW50byBvbmUgc3RyZWFtKVxuXG5leHBvcnRzID0gbW9kdWxlLmV4cG9ydHMgPSB0aHJvdWdoXG50aHJvdWdoLnRocm91Z2ggPSB0aHJvdWdoXG5cbi8vY3JlYXRlIGEgcmVhZGFibGUgd3JpdGFibGUgc3RyZWFtLlxuXG5mdW5jdGlvbiB0aHJvdWdoICh3cml0ZSwgZW5kLCBvcHRzKSB7XG4gIHdyaXRlID0gd3JpdGUgfHwgZnVuY3Rpb24gKGRhdGEpIHsgdGhpcy5xdWV1ZShkYXRhKSB9XG4gIGVuZCA9IGVuZCB8fCBmdW5jdGlvbiAoKSB7IHRoaXMucXVldWUobnVsbCkgfVxuXG4gIHZhciBlbmRlZCA9IGZhbHNlLCBkZXN0cm95ZWQgPSBmYWxzZSwgYnVmZmVyID0gW10sIF9lbmRlZCA9IGZhbHNlXG4gIHZhciBzdHJlYW0gPSBuZXcgU3RyZWFtKClcbiAgc3RyZWFtLnJlYWRhYmxlID0gc3RyZWFtLndyaXRhYmxlID0gdHJ1ZVxuICBzdHJlYW0ucGF1c2VkID0gZmFsc2VcblxuLy8gIHN0cmVhbS5hdXRvUGF1c2UgICA9ICEob3B0cyAmJiBvcHRzLmF1dG9QYXVzZSAgID09PSBmYWxzZSlcbiAgc3RyZWFtLmF1dG9EZXN0cm95ID0gIShvcHRzICYmIG9wdHMuYXV0b0Rlc3Ryb3kgPT09IGZhbHNlKVxuXG4gIHN0cmVhbS53cml0ZSA9IGZ1bmN0aW9uIChkYXRhKSB7XG4gICAgd3JpdGUuY2FsbCh0aGlzLCBkYXRhKVxuICAgIHJldHVybiAhc3RyZWFtLnBhdXNlZFxuICB9XG5cbiAgZnVuY3Rpb24gZHJhaW4oKSB7XG4gICAgd2hpbGUoYnVmZmVyLmxlbmd0aCAmJiAhc3RyZWFtLnBhdXNlZCkge1xuICAgICAgdmFyIGRhdGEgPSBidWZmZXIuc2hpZnQoKVxuICAgICAgaWYobnVsbCA9PT0gZGF0YSlcbiAgICAgICAgcmV0dXJuIHN0cmVhbS5lbWl0KCdlbmQnKVxuICAgICAgZWxzZVxuICAgICAgICBzdHJlYW0uZW1pdCgnZGF0YScsIGRhdGEpXG4gICAgfVxuICB9XG5cbiAgc3RyZWFtLnF1ZXVlID0gc3RyZWFtLnB1c2ggPSBmdW5jdGlvbiAoZGF0YSkge1xuLy8gICAgY29uc29sZS5lcnJvcihlbmRlZClcbiAgICBpZihfZW5kZWQpIHJldHVybiBzdHJlYW1cbiAgICBpZihkYXRhID09PSBudWxsKSBfZW5kZWQgPSB0cnVlXG4gICAgYnVmZmVyLnB1c2goZGF0YSlcbiAgICBkcmFpbigpXG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG5cbiAgLy90aGlzIHdpbGwgYmUgcmVnaXN0ZXJlZCBhcyB0aGUgZmlyc3QgJ2VuZCcgbGlzdGVuZXJcbiAgLy9tdXN0IGNhbGwgZGVzdHJveSBuZXh0IHRpY2ssIHRvIG1ha2Ugc3VyZSB3ZSdyZSBhZnRlciBhbnlcbiAgLy9zdHJlYW0gcGlwZWQgZnJvbSBoZXJlLlxuICAvL3RoaXMgaXMgb25seSBhIHByb2JsZW0gaWYgZW5kIGlzIG5vdCBlbWl0dGVkIHN5bmNocm9ub3VzbHkuXG4gIC8vYSBuaWNlciB3YXkgdG8gZG8gdGhpcyBpcyB0byBtYWtlIHN1cmUgdGhpcyBpcyB0aGUgbGFzdCBsaXN0ZW5lciBmb3IgJ2VuZCdcblxuICBzdHJlYW0ub24oJ2VuZCcsIGZ1bmN0aW9uICgpIHtcbiAgICBzdHJlYW0ucmVhZGFibGUgPSBmYWxzZVxuICAgIGlmKCFzdHJlYW0ud3JpdGFibGUgJiYgc3RyZWFtLmF1dG9EZXN0cm95KVxuICAgICAgcHJvY2Vzcy5uZXh0VGljayhmdW5jdGlvbiAoKSB7XG4gICAgICAgIHN0cmVhbS5kZXN0cm95KClcbiAgICAgIH0pXG4gIH0pXG5cbiAgZnVuY3Rpb24gX2VuZCAoKSB7XG4gICAgc3RyZWFtLndyaXRhYmxlID0gZmFsc2VcbiAgICBlbmQuY2FsbChzdHJlYW0pXG4gICAgaWYoIXN0cmVhbS5yZWFkYWJsZSAmJiBzdHJlYW0uYXV0b0Rlc3Ryb3kpXG4gICAgICBzdHJlYW0uZGVzdHJveSgpXG4gIH1cblxuICBzdHJlYW0uZW5kID0gZnVuY3Rpb24gKGRhdGEpIHtcbiAgICBpZihlbmRlZCkgcmV0dXJuXG4gICAgZW5kZWQgPSB0cnVlXG4gICAgaWYoYXJndW1lbnRzLmxlbmd0aCkgc3RyZWFtLndyaXRlKGRhdGEpXG4gICAgX2VuZCgpIC8vIHdpbGwgZW1pdCBvciBxdWV1ZVxuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuXG4gIHN0cmVhbS5kZXN0cm95ID0gZnVuY3Rpb24gKCkge1xuICAgIGlmKGRlc3Ryb3llZCkgcmV0dXJuXG4gICAgZGVzdHJveWVkID0gdHJ1ZVxuICAgIGVuZGVkID0gdHJ1ZVxuICAgIGJ1ZmZlci5sZW5ndGggPSAwXG4gICAgc3RyZWFtLndyaXRhYmxlID0gc3RyZWFtLnJlYWRhYmxlID0gZmFsc2VcbiAgICBzdHJlYW0uZW1pdCgnY2xvc2UnKVxuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuXG4gIHN0cmVhbS5wYXVzZSA9IGZ1bmN0aW9uICgpIHtcbiAgICBpZihzdHJlYW0ucGF1c2VkKSByZXR1cm5cbiAgICBzdHJlYW0ucGF1c2VkID0gdHJ1ZVxuICAgIHJldHVybiBzdHJlYW1cbiAgfVxuXG4gIHN0cmVhbS5yZXN1bWUgPSBmdW5jdGlvbiAoKSB7XG4gICAgaWYoc3RyZWFtLnBhdXNlZCkge1xuICAgICAgc3RyZWFtLnBhdXNlZCA9IGZhbHNlXG4gICAgICBzdHJlYW0uZW1pdCgncmVzdW1lJylcbiAgICB9XG4gICAgZHJhaW4oKVxuICAgIC8vbWF5IGhhdmUgYmVjb21lIHBhdXNlZCBhZ2FpbixcbiAgICAvL2FzIGRyYWluIGVtaXRzICdkYXRhJy5cbiAgICBpZighc3RyZWFtLnBhdXNlZClcbiAgICAgIHN0cmVhbS5lbWl0KCdkcmFpbicpXG4gICAgcmV0dXJuIHN0cmVhbVxuICB9XG4gIHJldHVybiBzdHJlYW1cbn1cblxuIiwiLy8gQ29weXJpZ2h0IEpveWVudCwgSW5jLiBhbmQgb3RoZXIgTm9kZSBjb250cmlidXRvcnMuXG4vL1xuLy8gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGFcbi8vIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGVcbi8vIFwiU29mdHdhcmVcIiksIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZ1xuLy8gd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLFxuLy8gZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvIHBlcm1pdFxuLy8gcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8gc28sIHN1YmplY3QgdG8gdGhlXG4vLyBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZFxuLy8gaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTU1xuLy8gT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRlxuLy8gTUVSQ0hBTlRBQklMSVRZLCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTlxuLy8gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sXG4vLyBEQU1BR0VTIE9SIE9USEVSIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1Jcbi8vIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEVcbi8vIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUgU09GVFdBUkUuXG5cbm1vZHVsZS5leHBvcnRzID0gU3RyZWFtO1xuXG52YXIgRUUgPSByZXF1aXJlKCdldmVudHMnKS5FdmVudEVtaXR0ZXI7XG52YXIgaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuXG5pbmhlcml0cyhTdHJlYW0sIEVFKTtcblN0cmVhbS5SZWFkYWJsZSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9yZWFkYWJsZS5qcycpO1xuU3RyZWFtLldyaXRhYmxlID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL3dyaXRhYmxlLmpzJyk7XG5TdHJlYW0uRHVwbGV4ID0gcmVxdWlyZSgncmVhZGFibGUtc3RyZWFtL2R1cGxleC5qcycpO1xuU3RyZWFtLlRyYW5zZm9ybSA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS90cmFuc2Zvcm0uanMnKTtcblN0cmVhbS5QYXNzVGhyb3VnaCA9IHJlcXVpcmUoJ3JlYWRhYmxlLXN0cmVhbS9wYXNzdGhyb3VnaC5qcycpO1xuXG4vLyBCYWNrd2FyZHMtY29tcGF0IHdpdGggbm9kZSAwLjQueFxuU3RyZWFtLlN0cmVhbSA9IFN0cmVhbTtcblxuXG5cbi8vIG9sZC1zdHlsZSBzdHJlYW1zLiAgTm90ZSB0aGF0IHRoZSBwaXBlIG1ldGhvZCAodGhlIG9ubHkgcmVsZXZhbnRcbi8vIHBhcnQgb2YgdGhpcyBjbGFzcykgaXMgb3ZlcnJpZGRlbiBpbiB0aGUgUmVhZGFibGUgY2xhc3MuXG5cbmZ1bmN0aW9uIFN0cmVhbSgpIHtcbiAgRUUuY2FsbCh0aGlzKTtcbn1cblxuU3RyZWFtLnByb3RvdHlwZS5waXBlID0gZnVuY3Rpb24oZGVzdCwgb3B0aW9ucykge1xuICB2YXIgc291cmNlID0gdGhpcztcblxuICBmdW5jdGlvbiBvbmRhdGEoY2h1bmspIHtcbiAgICBpZiAoZGVzdC53cml0YWJsZSkge1xuICAgICAgaWYgKGZhbHNlID09PSBkZXN0LndyaXRlKGNodW5rKSAmJiBzb3VyY2UucGF1c2UpIHtcbiAgICAgICAgc291cmNlLnBhdXNlKCk7XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgc291cmNlLm9uKCdkYXRhJywgb25kYXRhKTtcblxuICBmdW5jdGlvbiBvbmRyYWluKCkge1xuICAgIGlmIChzb3VyY2UucmVhZGFibGUgJiYgc291cmNlLnJlc3VtZSkge1xuICAgICAgc291cmNlLnJlc3VtZSgpO1xuICAgIH1cbiAgfVxuXG4gIGRlc3Qub24oJ2RyYWluJywgb25kcmFpbik7XG5cbiAgLy8gSWYgdGhlICdlbmQnIG9wdGlvbiBpcyBub3Qgc3VwcGxpZWQsIGRlc3QuZW5kKCkgd2lsbCBiZSBjYWxsZWQgd2hlblxuICAvLyBzb3VyY2UgZ2V0cyB0aGUgJ2VuZCcgb3IgJ2Nsb3NlJyBldmVudHMuICBPbmx5IGRlc3QuZW5kKCkgb25jZS5cbiAgaWYgKCFkZXN0Ll9pc1N0ZGlvICYmICghb3B0aW9ucyB8fCBvcHRpb25zLmVuZCAhPT0gZmFsc2UpKSB7XG4gICAgc291cmNlLm9uKCdlbmQnLCBvbmVuZCk7XG4gICAgc291cmNlLm9uKCdjbG9zZScsIG9uY2xvc2UpO1xuICB9XG5cbiAgdmFyIGRpZE9uRW5kID0gZmFsc2U7XG4gIGZ1bmN0aW9uIG9uZW5kKCkge1xuICAgIGlmIChkaWRPbkVuZCkgcmV0dXJuO1xuICAgIGRpZE9uRW5kID0gdHJ1ZTtcblxuICAgIGRlc3QuZW5kKCk7XG4gIH1cblxuXG4gIGZ1bmN0aW9uIG9uY2xvc2UoKSB7XG4gICAgaWYgKGRpZE9uRW5kKSByZXR1cm47XG4gICAgZGlkT25FbmQgPSB0cnVlO1xuXG4gICAgaWYgKHR5cGVvZiBkZXN0LmRlc3Ryb3kgPT09ICdmdW5jdGlvbicpIGRlc3QuZGVzdHJveSgpO1xuICB9XG5cbiAgLy8gZG9uJ3QgbGVhdmUgZGFuZ2xpbmcgcGlwZXMgd2hlbiB0aGVyZSBhcmUgZXJyb3JzLlxuICBmdW5jdGlvbiBvbmVycm9yKGVyKSB7XG4gICAgY2xlYW51cCgpO1xuICAgIGlmIChFRS5saXN0ZW5lckNvdW50KHRoaXMsICdlcnJvcicpID09PSAwKSB7XG4gICAgICB0aHJvdyBlcjsgLy8gVW5oYW5kbGVkIHN0cmVhbSBlcnJvciBpbiBwaXBlLlxuICAgIH1cbiAgfVxuXG4gIHNvdXJjZS5vbignZXJyb3InLCBvbmVycm9yKTtcbiAgZGVzdC5vbignZXJyb3InLCBvbmVycm9yKTtcblxuICAvLyByZW1vdmUgYWxsIHRoZSBldmVudCBsaXN0ZW5lcnMgdGhhdCB3ZXJlIGFkZGVkLlxuICBmdW5jdGlvbiBjbGVhbnVwKCkge1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZGF0YScsIG9uZGF0YSk7XG4gICAgZGVzdC5yZW1vdmVMaXN0ZW5lcignZHJhaW4nLCBvbmRyYWluKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZW5kJywgb25lbmQpO1xuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignY2xvc2UnLCBvbmNsb3NlKTtcblxuICAgIHNvdXJjZS5yZW1vdmVMaXN0ZW5lcignZXJyb3InLCBvbmVycm9yKTtcbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdlcnJvcicsIG9uZXJyb3IpO1xuXG4gICAgc291cmNlLnJlbW92ZUxpc3RlbmVyKCdlbmQnLCBjbGVhbnVwKTtcbiAgICBzb3VyY2UucmVtb3ZlTGlzdGVuZXIoJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgICBkZXN0LnJlbW92ZUxpc3RlbmVyKCdjbG9zZScsIGNsZWFudXApO1xuICB9XG5cbiAgc291cmNlLm9uKCdlbmQnLCBjbGVhbnVwKTtcbiAgc291cmNlLm9uKCdjbG9zZScsIGNsZWFudXApO1xuXG4gIGRlc3Qub24oJ2Nsb3NlJywgY2xlYW51cCk7XG5cbiAgZGVzdC5lbWl0KCdwaXBlJywgc291cmNlKTtcblxuICAvLyBBbGxvdyBmb3IgdW5peC1saWtlIHVzYWdlOiBBLnBpcGUoQikucGlwZShDKVxuICByZXR1cm4gZGVzdDtcbn07XG4iLCIndXNlIHN0cmljdCc7XG5cbmZ1bmN0aW9uIF9jbGFzc0NhbGxDaGVjayhpbnN0YW5jZSwgQ29uc3RydWN0b3IpIHsgaWYgKCEoaW5zdGFuY2UgaW5zdGFuY2VvZiBDb25zdHJ1Y3RvcikpIHsgdGhyb3cgbmV3IFR5cGVFcnJvcihcIkNhbm5vdCBjYWxsIGEgY2xhc3MgYXMgYSBmdW5jdGlvblwiKTsgfSB9XG5cbnZhciBCdWZmZXIgPSByZXF1aXJlKCdzYWZlLWJ1ZmZlcicpLkJ1ZmZlcjtcbnZhciB1dGlsID0gcmVxdWlyZSgndXRpbCcpO1xuXG5mdW5jdGlvbiBjb3B5QnVmZmVyKHNyYywgdGFyZ2V0LCBvZmZzZXQpIHtcbiAgc3JjLmNvcHkodGFyZ2V0LCBvZmZzZXQpO1xufVxuXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcbiAgZnVuY3Rpb24gQnVmZmVyTGlzdCgpIHtcbiAgICBfY2xhc3NDYWxsQ2hlY2sodGhpcywgQnVmZmVyTGlzdCk7XG5cbiAgICB0aGlzLmhlYWQgPSBudWxsO1xuICAgIHRoaXMudGFpbCA9IG51bGw7XG4gICAgdGhpcy5sZW5ndGggPSAwO1xuICB9XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUucHVzaCA9IGZ1bmN0aW9uIHB1c2godikge1xuICAgIHZhciBlbnRyeSA9IHsgZGF0YTogdiwgbmV4dDogbnVsbCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA+IDApIHRoaXMudGFpbC5uZXh0ID0gZW50cnk7ZWxzZSB0aGlzLmhlYWQgPSBlbnRyeTtcbiAgICB0aGlzLnRhaWwgPSBlbnRyeTtcbiAgICArK3RoaXMubGVuZ3RoO1xuICB9O1xuXG4gIEJ1ZmZlckxpc3QucHJvdG90eXBlLnVuc2hpZnQgPSBmdW5jdGlvbiB1bnNoaWZ0KHYpIHtcbiAgICB2YXIgZW50cnkgPSB7IGRhdGE6IHYsIG5leHQ6IHRoaXMuaGVhZCB9O1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgdGhpcy50YWlsID0gZW50cnk7XG4gICAgdGhpcy5oZWFkID0gZW50cnk7XG4gICAgKyt0aGlzLmxlbmd0aDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5zaGlmdCA9IGZ1bmN0aW9uIHNoaWZ0KCkge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuO1xuICAgIHZhciByZXQgPSB0aGlzLmhlYWQuZGF0YTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHRoaXMuaGVhZCA9IHRoaXMudGFpbCA9IG51bGw7ZWxzZSB0aGlzLmhlYWQgPSB0aGlzLmhlYWQubmV4dDtcbiAgICAtLXRoaXMubGVuZ3RoO1xuICAgIHJldHVybiByZXQ7XG4gIH07XG5cbiAgQnVmZmVyTGlzdC5wcm90b3R5cGUuY2xlYXIgPSBmdW5jdGlvbiBjbGVhcigpIHtcbiAgICB0aGlzLmhlYWQgPSB0aGlzLnRhaWwgPSBudWxsO1xuICAgIHRoaXMubGVuZ3RoID0gMDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5qb2luID0gZnVuY3Rpb24gam9pbihzKSB7XG4gICAgaWYgKHRoaXMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gICAgdmFyIHAgPSB0aGlzLmhlYWQ7XG4gICAgdmFyIHJldCA9ICcnICsgcC5kYXRhO1xuICAgIHdoaWxlIChwID0gcC5uZXh0KSB7XG4gICAgICByZXQgKz0gcyArIHAuZGF0YTtcbiAgICB9cmV0dXJuIHJldDtcbiAgfTtcblxuICBCdWZmZXJMaXN0LnByb3RvdHlwZS5jb25jYXQgPSBmdW5jdGlvbiBjb25jYXQobikge1xuICAgIGlmICh0aGlzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIEJ1ZmZlci5hbGxvYygwKTtcbiAgICBpZiAodGhpcy5sZW5ndGggPT09IDEpIHJldHVybiB0aGlzLmhlYWQuZGF0YTtcbiAgICB2YXIgcmV0ID0gQnVmZmVyLmFsbG9jVW5zYWZlKG4gPj4+IDApO1xuICAgIHZhciBwID0gdGhpcy5oZWFkO1xuICAgIHZhciBpID0gMDtcbiAgICB3aGlsZSAocCkge1xuICAgICAgY29weUJ1ZmZlcihwLmRhdGEsIHJldCwgaSk7XG4gICAgICBpICs9IHAuZGF0YS5sZW5ndGg7XG4gICAgICBwID0gcC5uZXh0O1xuICAgIH1cbiAgICByZXR1cm4gcmV0O1xuICB9O1xuXG4gIHJldHVybiBCdWZmZXJMaXN0O1xufSgpO1xuXG5pZiAodXRpbCAmJiB1dGlsLmluc3BlY3QgJiYgdXRpbC5pbnNwZWN0LmN1c3RvbSkge1xuICBtb2R1bGUuZXhwb3J0cy5wcm90b3R5cGVbdXRpbC5pbnNwZWN0LmN1c3RvbV0gPSBmdW5jdGlvbiAoKSB7XG4gICAgdmFyIG9iaiA9IHV0aWwuaW5zcGVjdCh7IGxlbmd0aDogdGhpcy5sZW5ndGggfSk7XG4gICAgcmV0dXJuIHRoaXMuY29uc3RydWN0b3IubmFtZSArICcgJyArIG9iajtcbiAgfTtcbn0iLCJ2YXIgc2NvcGUgPSAodHlwZW9mIGdsb2JhbCAhPT0gXCJ1bmRlZmluZWRcIiAmJiBnbG9iYWwpIHx8XG4gICAgICAgICAgICAodHlwZW9mIHNlbGYgIT09IFwidW5kZWZpbmVkXCIgJiYgc2VsZikgfHxcbiAgICAgICAgICAgIHdpbmRvdztcbnZhciBhcHBseSA9IEZ1bmN0aW9uLnByb3RvdHlwZS5hcHBseTtcblxuLy8gRE9NIEFQSXMsIGZvciBjb21wbGV0ZW5lc3NcblxuZXhwb3J0cy5zZXRUaW1lb3V0ID0gZnVuY3Rpb24oKSB7XG4gIHJldHVybiBuZXcgVGltZW91dChhcHBseS5jYWxsKHNldFRpbWVvdXQsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhclRpbWVvdXQpO1xufTtcbmV4cG9ydHMuc2V0SW50ZXJ2YWwgPSBmdW5jdGlvbigpIHtcbiAgcmV0dXJuIG5ldyBUaW1lb3V0KGFwcGx5LmNhbGwoc2V0SW50ZXJ2YWwsIHNjb3BlLCBhcmd1bWVudHMpLCBjbGVhckludGVydmFsKTtcbn07XG5leHBvcnRzLmNsZWFyVGltZW91dCA9XG5leHBvcnRzLmNsZWFySW50ZXJ2YWwgPSBmdW5jdGlvbih0aW1lb3V0KSB7XG4gIGlmICh0aW1lb3V0KSB7XG4gICAgdGltZW91dC5jbG9zZSgpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBUaW1lb3V0KGlkLCBjbGVhckZuKSB7XG4gIHRoaXMuX2lkID0gaWQ7XG4gIHRoaXMuX2NsZWFyRm4gPSBjbGVhckZuO1xufVxuVGltZW91dC5wcm90b3R5cGUudW5yZWYgPSBUaW1lb3V0LnByb3RvdHlwZS5yZWYgPSBmdW5jdGlvbigpIHt9O1xuVGltZW91dC5wcm90b3R5cGUuY2xvc2UgPSBmdW5jdGlvbigpIHtcbiAgdGhpcy5fY2xlYXJGbi5jYWxsKHNjb3BlLCB0aGlzLl9pZCk7XG59O1xuXG4vLyBEb2VzIG5vdCBzdGFydCB0aGUgdGltZSwganVzdCBzZXRzIHVwIHRoZSBtZW1iZXJzIG5lZWRlZC5cbmV4cG9ydHMuZW5yb2xsID0gZnVuY3Rpb24oaXRlbSwgbXNlY3MpIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IG1zZWNzO1xufTtcblxuZXhwb3J0cy51bmVucm9sbCA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuICBpdGVtLl9pZGxlVGltZW91dCA9IC0xO1xufTtcblxuZXhwb3J0cy5fdW5yZWZBY3RpdmUgPSBleHBvcnRzLmFjdGl2ZSA9IGZ1bmN0aW9uKGl0ZW0pIHtcbiAgY2xlYXJUaW1lb3V0KGl0ZW0uX2lkbGVUaW1lb3V0SWQpO1xuXG4gIHZhciBtc2VjcyA9IGl0ZW0uX2lkbGVUaW1lb3V0O1xuICBpZiAobXNlY3MgPj0gMCkge1xuICAgIGl0ZW0uX2lkbGVUaW1lb3V0SWQgPSBzZXRUaW1lb3V0KGZ1bmN0aW9uIG9uVGltZW91dCgpIHtcbiAgICAgIGlmIChpdGVtLl9vblRpbWVvdXQpXG4gICAgICAgIGl0ZW0uX29uVGltZW91dCgpO1xuICAgIH0sIG1zZWNzKTtcbiAgfVxufTtcblxuLy8gc2V0aW1tZWRpYXRlIGF0dGFjaGVzIGl0c2VsZiB0byB0aGUgZ2xvYmFsIG9iamVjdFxucmVxdWlyZShcInNldGltbWVkaWF0ZVwiKTtcbi8vIE9uIHNvbWUgZXhvdGljIGVudmlyb25tZW50cywgaXQncyBub3QgY2xlYXIgd2hpY2ggb2JqZWN0IGBzZXRpbW1lZGlhdGVgIHdhc1xuLy8gYWJsZSB0byBpbnN0YWxsIG9udG8uICBTZWFyY2ggZWFjaCBwb3NzaWJpbGl0eSBpbiB0aGUgc2FtZSBvcmRlciBhcyB0aGVcbi8vIGBzZXRpbW1lZGlhdGVgIGxpYnJhcnkuXG5leHBvcnRzLnNldEltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHR5cGVvZiBnbG9iYWwgIT09IFwidW5kZWZpbmVkXCIgJiYgZ2xvYmFsLnNldEltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgKHRoaXMgJiYgdGhpcy5zZXRJbW1lZGlhdGUpO1xuZXhwb3J0cy5jbGVhckltbWVkaWF0ZSA9ICh0eXBlb2Ygc2VsZiAhPT0gXCJ1bmRlZmluZWRcIiAmJiBzZWxmLmNsZWFySW1tZWRpYXRlKSB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgICh0eXBlb2YgZ2xvYmFsICE9PSBcInVuZGVmaW5lZFwiICYmIGdsb2JhbC5jbGVhckltbWVkaWF0ZSkgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgICAodGhpcyAmJiB0aGlzLmNsZWFySW1tZWRpYXRlKTtcbiIsIihmdW5jdGlvbiAoZ2xvYmFsLCB1bmRlZmluZWQpIHtcbiAgICBcInVzZSBzdHJpY3RcIjtcblxuICAgIGlmIChnbG9iYWwuc2V0SW1tZWRpYXRlKSB7XG4gICAgICAgIHJldHVybjtcbiAgICB9XG5cbiAgICB2YXIgbmV4dEhhbmRsZSA9IDE7IC8vIFNwZWMgc2F5cyBncmVhdGVyIHRoYW4gemVyb1xuICAgIHZhciB0YXNrc0J5SGFuZGxlID0ge307XG4gICAgdmFyIGN1cnJlbnRseVJ1bm5pbmdBVGFzayA9IGZhbHNlO1xuICAgIHZhciBkb2MgPSBnbG9iYWwuZG9jdW1lbnQ7XG4gICAgdmFyIHJlZ2lzdGVySW1tZWRpYXRlO1xuXG4gICAgZnVuY3Rpb24gc2V0SW1tZWRpYXRlKGNhbGxiYWNrKSB7XG4gICAgICAvLyBDYWxsYmFjayBjYW4gZWl0aGVyIGJlIGEgZnVuY3Rpb24gb3IgYSBzdHJpbmdcbiAgICAgIGlmICh0eXBlb2YgY2FsbGJhY2sgIT09IFwiZnVuY3Rpb25cIikge1xuICAgICAgICBjYWxsYmFjayA9IG5ldyBGdW5jdGlvbihcIlwiICsgY2FsbGJhY2spO1xuICAgICAgfVxuICAgICAgLy8gQ29weSBmdW5jdGlvbiBhcmd1bWVudHNcbiAgICAgIHZhciBhcmdzID0gbmV3IEFycmF5KGFyZ3VtZW50cy5sZW5ndGggLSAxKTtcbiAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYXJncy5sZW5ndGg7IGkrKykge1xuICAgICAgICAgIGFyZ3NbaV0gPSBhcmd1bWVudHNbaSArIDFdO1xuICAgICAgfVxuICAgICAgLy8gU3RvcmUgYW5kIHJlZ2lzdGVyIHRoZSB0YXNrXG4gICAgICB2YXIgdGFzayA9IHsgY2FsbGJhY2s6IGNhbGxiYWNrLCBhcmdzOiBhcmdzIH07XG4gICAgICB0YXNrc0J5SGFuZGxlW25leHRIYW5kbGVdID0gdGFzaztcbiAgICAgIHJlZ2lzdGVySW1tZWRpYXRlKG5leHRIYW5kbGUpO1xuICAgICAgcmV0dXJuIG5leHRIYW5kbGUrKztcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBjbGVhckltbWVkaWF0ZShoYW5kbGUpIHtcbiAgICAgICAgZGVsZXRlIHRhc2tzQnlIYW5kbGVbaGFuZGxlXTtcbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW4odGFzaykge1xuICAgICAgICB2YXIgY2FsbGJhY2sgPSB0YXNrLmNhbGxiYWNrO1xuICAgICAgICB2YXIgYXJncyA9IHRhc2suYXJncztcbiAgICAgICAgc3dpdGNoIChhcmdzLmxlbmd0aCkge1xuICAgICAgICBjYXNlIDA6XG4gICAgICAgICAgICBjYWxsYmFjaygpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMTpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMjpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgMzpcbiAgICAgICAgICAgIGNhbGxiYWNrKGFyZ3NbMF0sIGFyZ3NbMV0sIGFyZ3NbMl0pO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgICBjYWxsYmFjay5hcHBseSh1bmRlZmluZWQsIGFyZ3MpO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBydW5JZlByZXNlbnQoaGFuZGxlKSB7XG4gICAgICAgIC8vIEZyb20gdGhlIHNwZWM6IFwiV2FpdCB1bnRpbCBhbnkgaW52b2NhdGlvbnMgb2YgdGhpcyBhbGdvcml0aG0gc3RhcnRlZCBiZWZvcmUgdGhpcyBvbmUgaGF2ZSBjb21wbGV0ZWQuXCJcbiAgICAgICAgLy8gU28gaWYgd2UncmUgY3VycmVudGx5IHJ1bm5pbmcgYSB0YXNrLCB3ZSdsbCBuZWVkIHRvIGRlbGF5IHRoaXMgaW52b2NhdGlvbi5cbiAgICAgICAgaWYgKGN1cnJlbnRseVJ1bm5pbmdBVGFzaykge1xuICAgICAgICAgICAgLy8gRGVsYXkgYnkgZG9pbmcgYSBzZXRUaW1lb3V0LiBzZXRJbW1lZGlhdGUgd2FzIHRyaWVkIGluc3RlYWQsIGJ1dCBpbiBGaXJlZm94IDcgaXQgZ2VuZXJhdGVkIGFcbiAgICAgICAgICAgIC8vIFwidG9vIG11Y2ggcmVjdXJzaW9uXCIgZXJyb3IuXG4gICAgICAgICAgICBzZXRUaW1lb3V0KHJ1bklmUHJlc2VudCwgMCwgaGFuZGxlKTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgIHZhciB0YXNrID0gdGFza3NCeUhhbmRsZVtoYW5kbGVdO1xuICAgICAgICAgICAgaWYgKHRhc2spIHtcbiAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSB0cnVlO1xuICAgICAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgICAgIHJ1bih0YXNrKTtcbiAgICAgICAgICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgICAgICAgICBjbGVhckltbWVkaWF0ZShoYW5kbGUpO1xuICAgICAgICAgICAgICAgICAgICBjdXJyZW50bHlSdW5uaW5nQVRhc2sgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICB9XG5cbiAgICBmdW5jdGlvbiBpbnN0YWxsTmV4dFRpY2tJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHByb2Nlc3MubmV4dFRpY2soZnVuY3Rpb24gKCkgeyBydW5JZlByZXNlbnQoaGFuZGxlKTsgfSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gY2FuVXNlUG9zdE1lc3NhZ2UoKSB7XG4gICAgICAgIC8vIFRoZSB0ZXN0IGFnYWluc3QgYGltcG9ydFNjcmlwdHNgIHByZXZlbnRzIHRoaXMgaW1wbGVtZW50YXRpb24gZnJvbSBiZWluZyBpbnN0YWxsZWQgaW5zaWRlIGEgd2ViIHdvcmtlcixcbiAgICAgICAgLy8gd2hlcmUgYGdsb2JhbC5wb3N0TWVzc2FnZWAgbWVhbnMgc29tZXRoaW5nIGNvbXBsZXRlbHkgZGlmZmVyZW50IGFuZCBjYW4ndCBiZSB1c2VkIGZvciB0aGlzIHB1cnBvc2UuXG4gICAgICAgIGlmIChnbG9iYWwucG9zdE1lc3NhZ2UgJiYgIWdsb2JhbC5pbXBvcnRTY3JpcHRzKSB7XG4gICAgICAgICAgICB2YXIgcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cyA9IHRydWU7XG4gICAgICAgICAgICB2YXIgb2xkT25NZXNzYWdlID0gZ2xvYmFsLm9ubWVzc2FnZTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBmdW5jdGlvbigpIHtcbiAgICAgICAgICAgICAgICBwb3N0TWVzc2FnZUlzQXN5bmNocm9ub3VzID0gZmFsc2U7XG4gICAgICAgICAgICB9O1xuICAgICAgICAgICAgZ2xvYmFsLnBvc3RNZXNzYWdlKFwiXCIsIFwiKlwiKTtcbiAgICAgICAgICAgIGdsb2JhbC5vbm1lc3NhZ2UgPSBvbGRPbk1lc3NhZ2U7XG4gICAgICAgICAgICByZXR1cm4gcG9zdE1lc3NhZ2VJc0FzeW5jaHJvbm91cztcbiAgICAgICAgfVxuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICAvLyBJbnN0YWxscyBhbiBldmVudCBoYW5kbGVyIG9uIGBnbG9iYWxgIGZvciB0aGUgYG1lc3NhZ2VgIGV2ZW50OiBzZWVcbiAgICAgICAgLy8gKiBodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi9ET00vd2luZG93LnBvc3RNZXNzYWdlXG4gICAgICAgIC8vICogaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQtd29yay9tdWx0aXBhZ2UvY29tbXMuaHRtbCNjcm9zc0RvY3VtZW50TWVzc2FnZXNcblxuICAgICAgICB2YXIgbWVzc2FnZVByZWZpeCA9IFwic2V0SW1tZWRpYXRlJFwiICsgTWF0aC5yYW5kb20oKSArIFwiJFwiO1xuICAgICAgICB2YXIgb25HbG9iYWxNZXNzYWdlID0gZnVuY3Rpb24oZXZlbnQpIHtcbiAgICAgICAgICAgIGlmIChldmVudC5zb3VyY2UgPT09IGdsb2JhbCAmJlxuICAgICAgICAgICAgICAgIHR5cGVvZiBldmVudC5kYXRhID09PSBcInN0cmluZ1wiICYmXG4gICAgICAgICAgICAgICAgZXZlbnQuZGF0YS5pbmRleE9mKG1lc3NhZ2VQcmVmaXgpID09PSAwKSB7XG4gICAgICAgICAgICAgICAgcnVuSWZQcmVzZW50KCtldmVudC5kYXRhLnNsaWNlKG1lc3NhZ2VQcmVmaXgubGVuZ3RoKSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgaWYgKGdsb2JhbC5hZGRFdmVudExpc3RlbmVyKSB7XG4gICAgICAgICAgICBnbG9iYWwuYWRkRXZlbnRMaXN0ZW5lcihcIm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlLCBmYWxzZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBnbG9iYWwuYXR0YWNoRXZlbnQoXCJvbm1lc3NhZ2VcIiwgb25HbG9iYWxNZXNzYWdlKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBnbG9iYWwucG9zdE1lc3NhZ2UobWVzc2FnZVByZWZpeCArIGhhbmRsZSwgXCIqXCIpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIGZ1bmN0aW9uIGluc3RhbGxNZXNzYWdlQ2hhbm5lbEltcGxlbWVudGF0aW9uKCkge1xuICAgICAgICB2YXIgY2hhbm5lbCA9IG5ldyBNZXNzYWdlQ2hhbm5lbCgpO1xuICAgICAgICBjaGFubmVsLnBvcnQxLm9ubWVzc2FnZSA9IGZ1bmN0aW9uKGV2ZW50KSB7XG4gICAgICAgICAgICB2YXIgaGFuZGxlID0gZXZlbnQuZGF0YTtcbiAgICAgICAgICAgIHJ1bklmUHJlc2VudChoYW5kbGUpO1xuICAgICAgICB9O1xuXG4gICAgICAgIHJlZ2lzdGVySW1tZWRpYXRlID0gZnVuY3Rpb24oaGFuZGxlKSB7XG4gICAgICAgICAgICBjaGFubmVsLnBvcnQyLnBvc3RNZXNzYWdlKGhhbmRsZSk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgdmFyIGh0bWwgPSBkb2MuZG9jdW1lbnRFbGVtZW50O1xuICAgICAgICByZWdpc3RlckltbWVkaWF0ZSA9IGZ1bmN0aW9uKGhhbmRsZSkge1xuICAgICAgICAgICAgLy8gQ3JlYXRlIGEgPHNjcmlwdD4gZWxlbWVudDsgaXRzIHJlYWR5c3RhdGVjaGFuZ2UgZXZlbnQgd2lsbCBiZSBmaXJlZCBhc3luY2hyb25vdXNseSBvbmNlIGl0IGlzIGluc2VydGVkXG4gICAgICAgICAgICAvLyBpbnRvIHRoZSBkb2N1bWVudC4gRG8gc28sIHRodXMgcXVldWluZyB1cCB0aGUgdGFzay4gUmVtZW1iZXIgdG8gY2xlYW4gdXAgb25jZSBpdCdzIGJlZW4gY2FsbGVkLlxuICAgICAgICAgICAgdmFyIHNjcmlwdCA9IGRvYy5jcmVhdGVFbGVtZW50KFwic2NyaXB0XCIpO1xuICAgICAgICAgICAgc2NyaXB0Lm9ucmVhZHlzdGF0ZWNoYW5nZSA9IGZ1bmN0aW9uICgpIHtcbiAgICAgICAgICAgICAgICBydW5JZlByZXNlbnQoaGFuZGxlKTtcbiAgICAgICAgICAgICAgICBzY3JpcHQub25yZWFkeXN0YXRlY2hhbmdlID0gbnVsbDtcbiAgICAgICAgICAgICAgICBodG1sLnJlbW92ZUNoaWxkKHNjcmlwdCk7XG4gICAgICAgICAgICAgICAgc2NyaXB0ID0gbnVsbDtcbiAgICAgICAgICAgIH07XG4gICAgICAgICAgICBodG1sLmFwcGVuZENoaWxkKHNjcmlwdCk7XG4gICAgICAgIH07XG4gICAgfVxuXG4gICAgZnVuY3Rpb24gaW5zdGFsbFNldFRpbWVvdXRJbXBsZW1lbnRhdGlvbigpIHtcbiAgICAgICAgcmVnaXN0ZXJJbW1lZGlhdGUgPSBmdW5jdGlvbihoYW5kbGUpIHtcbiAgICAgICAgICAgIHNldFRpbWVvdXQocnVuSWZQcmVzZW50LCAwLCBoYW5kbGUpO1xuICAgICAgICB9O1xuICAgIH1cblxuICAgIC8vIElmIHN1cHBvcnRlZCwgd2Ugc2hvdWxkIGF0dGFjaCB0byB0aGUgcHJvdG90eXBlIG9mIGdsb2JhbCwgc2luY2UgdGhhdCBpcyB3aGVyZSBzZXRUaW1lb3V0IGV0IGFsLiBsaXZlLlxuICAgIHZhciBhdHRhY2hUbyA9IE9iamVjdC5nZXRQcm90b3R5cGVPZiAmJiBPYmplY3QuZ2V0UHJvdG90eXBlT2YoZ2xvYmFsKTtcbiAgICBhdHRhY2hUbyA9IGF0dGFjaFRvICYmIGF0dGFjaFRvLnNldFRpbWVvdXQgPyBhdHRhY2hUbyA6IGdsb2JhbDtcblxuICAgIC8vIERvbid0IGdldCBmb29sZWQgYnkgZS5nLiBicm93c2VyaWZ5IGVudmlyb25tZW50cy5cbiAgICBpZiAoe30udG9TdHJpbmcuY2FsbChnbG9iYWwucHJvY2VzcykgPT09IFwiW29iamVjdCBwcm9jZXNzXVwiKSB7XG4gICAgICAgIC8vIEZvciBOb2RlLmpzIGJlZm9yZSAwLjlcbiAgICAgICAgaW5zdGFsbE5leHRUaWNrSW1wbGVtZW50YXRpb24oKTtcblxuICAgIH0gZWxzZSBpZiAoY2FuVXNlUG9zdE1lc3NhZ2UoKSkge1xuICAgICAgICAvLyBGb3Igbm9uLUlFMTAgbW9kZXJuIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxQb3N0TWVzc2FnZUltcGxlbWVudGF0aW9uKCk7XG5cbiAgICB9IGVsc2UgaWYgKGdsb2JhbC5NZXNzYWdlQ2hhbm5lbCkge1xuICAgICAgICAvLyBGb3Igd2ViIHdvcmtlcnMsIHdoZXJlIHN1cHBvcnRlZFxuICAgICAgICBpbnN0YWxsTWVzc2FnZUNoYW5uZWxJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIGlmIChkb2MgJiYgXCJvbnJlYWR5c3RhdGVjaGFuZ2VcIiBpbiBkb2MuY3JlYXRlRWxlbWVudChcInNjcmlwdFwiKSkge1xuICAgICAgICAvLyBGb3IgSUUgNuKAkzhcbiAgICAgICAgaW5zdGFsbFJlYWR5U3RhdGVDaGFuZ2VJbXBsZW1lbnRhdGlvbigpO1xuXG4gICAgfSBlbHNlIHtcbiAgICAgICAgLy8gRm9yIG9sZGVyIGJyb3dzZXJzXG4gICAgICAgIGluc3RhbGxTZXRUaW1lb3V0SW1wbGVtZW50YXRpb24oKTtcbiAgICB9XG5cbiAgICBhdHRhY2hUby5zZXRJbW1lZGlhdGUgPSBzZXRJbW1lZGlhdGU7XG4gICAgYXR0YWNoVG8uY2xlYXJJbW1lZGlhdGUgPSBjbGVhckltbWVkaWF0ZTtcbn0odHlwZW9mIHNlbGYgPT09IFwidW5kZWZpbmVkXCIgPyB0eXBlb2YgZ2xvYmFsID09PSBcInVuZGVmaW5lZFwiID8gdGhpcyA6IGdsb2JhbCA6IHNlbGYpKTtcbiIsIlxuLyoqXG4gKiBNb2R1bGUgZXhwb3J0cy5cbiAqL1xuXG5tb2R1bGUuZXhwb3J0cyA9IGRlcHJlY2F0ZTtcblxuLyoqXG4gKiBNYXJrIHRoYXQgYSBtZXRob2Qgc2hvdWxkIG5vdCBiZSB1c2VkLlxuICogUmV0dXJucyBhIG1vZGlmaWVkIGZ1bmN0aW9uIHdoaWNoIHdhcm5zIG9uY2UgYnkgZGVmYXVsdC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLm5vRGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gaXQgaXMgYSBuby1vcC5cbiAqXG4gKiBJZiBgbG9jYWxTdG9yYWdlLnRocm93RGVwcmVjYXRpb24gPSB0cnVlYCBpcyBzZXQsIHRoZW4gZGVwcmVjYXRlZCBmdW5jdGlvbnNcbiAqIHdpbGwgdGhyb3cgYW4gRXJyb3Igd2hlbiBpbnZva2VkLlxuICpcbiAqIElmIGBsb2NhbFN0b3JhZ2UudHJhY2VEZXByZWNhdGlvbiA9IHRydWVgIGlzIHNldCwgdGhlbiBkZXByZWNhdGVkIGZ1bmN0aW9uc1xuICogd2lsbCBpbnZva2UgYGNvbnNvbGUudHJhY2UoKWAgaW5zdGVhZCBvZiBgY29uc29sZS5lcnJvcigpYC5cbiAqXG4gKiBAcGFyYW0ge0Z1bmN0aW9ufSBmbiAtIHRoZSBmdW5jdGlvbiB0byBkZXByZWNhdGVcbiAqIEBwYXJhbSB7U3RyaW5nfSBtc2cgLSB0aGUgc3RyaW5nIHRvIHByaW50IHRvIHRoZSBjb25zb2xlIHdoZW4gYGZuYCBpcyBpbnZva2VkXG4gKiBAcmV0dXJucyB7RnVuY3Rpb259IGEgbmV3IFwiZGVwcmVjYXRlZFwiIHZlcnNpb24gb2YgYGZuYFxuICogQGFwaSBwdWJsaWNcbiAqL1xuXG5mdW5jdGlvbiBkZXByZWNhdGUgKGZuLCBtc2cpIHtcbiAgaWYgKGNvbmZpZygnbm9EZXByZWNhdGlvbicpKSB7XG4gICAgcmV0dXJuIGZuO1xuICB9XG5cbiAgdmFyIHdhcm5lZCA9IGZhbHNlO1xuICBmdW5jdGlvbiBkZXByZWNhdGVkKCkge1xuICAgIGlmICghd2FybmVkKSB7XG4gICAgICBpZiAoY29uZmlnKCd0aHJvd0RlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKG1zZyk7XG4gICAgICB9IGVsc2UgaWYgKGNvbmZpZygndHJhY2VEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIGNvbnNvbGUudHJhY2UobXNnKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnNvbGUud2Fybihtc2cpO1xuICAgICAgfVxuICAgICAgd2FybmVkID0gdHJ1ZTtcbiAgICB9XG4gICAgcmV0dXJuIGZuLmFwcGx5KHRoaXMsIGFyZ3VtZW50cyk7XG4gIH1cblxuICByZXR1cm4gZGVwcmVjYXRlZDtcbn1cblxuLyoqXG4gKiBDaGVja3MgYGxvY2FsU3RvcmFnZWAgZm9yIGJvb2xlYW4gdmFsdWVzIGZvciB0aGUgZ2l2ZW4gYG5hbWVgLlxuICpcbiAqIEBwYXJhbSB7U3RyaW5nfSBuYW1lXG4gKiBAcmV0dXJucyB7Qm9vbGVhbn1cbiAqIEBhcGkgcHJpdmF0ZVxuICovXG5cbmZ1bmN0aW9uIGNvbmZpZyAobmFtZSkge1xuICAvLyBhY2Nlc3NpbmcgZ2xvYmFsLmxvY2FsU3RvcmFnZSBjYW4gdHJpZ2dlciBhIERPTUV4Y2VwdGlvbiBpbiBzYW5kYm94ZWQgaWZyYW1lc1xuICB0cnkge1xuICAgIGlmICghZ2xvYmFsLmxvY2FsU3RvcmFnZSkgcmV0dXJuIGZhbHNlO1xuICB9IGNhdGNoIChfKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHZhciB2YWwgPSBnbG9iYWwubG9jYWxTdG9yYWdlW25hbWVdO1xuICBpZiAobnVsbCA9PSB2YWwpIHJldHVybiBmYWxzZTtcbiAgcmV0dXJuIFN0cmluZyh2YWwpLnRvTG93ZXJDYXNlKCkgPT09ICd0cnVlJztcbn1cbiIsIi8vIENvcHlyaWdodCBKb3llbnQsIEluYy4gYW5kIG90aGVyIE5vZGUgY29udHJpYnV0b3JzLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhXG4vLyBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlXG4vLyBcIlNvZnR3YXJlXCIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmdcbi8vIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCxcbi8vIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXRcbi8vIHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZVxuLy8gZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWRcbi8vIGluIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1Ncbi8vIE9SIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0Zcbi8vIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU5cbi8vIE5PIEVWRU5UIFNIQUxMIFRIRSBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLFxuLy8gREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SXG4vLyBPVEhFUldJU0UsIEFSSVNJTkcgRlJPTSwgT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFXG4vLyBVU0UgT1IgT1RIRVIgREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLlxuXG4vLyBhIHBhc3N0aHJvdWdoIHN0cmVhbS5cbi8vIGJhc2ljYWxseSBqdXN0IHRoZSBtb3N0IG1pbmltYWwgc29ydCBvZiBUcmFuc2Zvcm0gc3RyZWFtLlxuLy8gRXZlcnkgd3JpdHRlbiBjaHVuayBnZXRzIG91dHB1dCBhcy1pcy5cblxuJ3VzZSBzdHJpY3QnO1xuXG5tb2R1bGUuZXhwb3J0cyA9IFBhc3NUaHJvdWdoO1xuXG52YXIgVHJhbnNmb3JtID0gcmVxdWlyZSgnLi9fc3RyZWFtX3RyYW5zZm9ybScpO1xuXG4vKjxyZXBsYWNlbWVudD4qL1xudmFyIHV0aWwgPSBPYmplY3QuY3JlYXRlKHJlcXVpcmUoJ2NvcmUtdXRpbC1pcycpKTtcbnV0aWwuaW5oZXJpdHMgPSByZXF1aXJlKCdpbmhlcml0cycpO1xuLyo8L3JlcGxhY2VtZW50PiovXG5cbnV0aWwuaW5oZXJpdHMoUGFzc1Rocm91Z2gsIFRyYW5zZm9ybSk7XG5cbmZ1bmN0aW9uIFBhc3NUaHJvdWdoKG9wdGlvbnMpIHtcbiAgaWYgKCEodGhpcyBpbnN0YW5jZW9mIFBhc3NUaHJvdWdoKSkgcmV0dXJuIG5ldyBQYXNzVGhyb3VnaChvcHRpb25zKTtcblxuICBUcmFuc2Zvcm0uY2FsbCh0aGlzLCBvcHRpb25zKTtcbn1cblxuUGFzc1Rocm91Z2gucHJvdG90eXBlLl90cmFuc2Zvcm0gPSBmdW5jdGlvbiAoY2h1bmssIGVuY29kaW5nLCBjYikge1xuICBjYihudWxsLCBjaHVuayk7XG59OyIsIm1vZHVsZS5leHBvcnRzID0gcmVxdWlyZSgnLi9saWIvX3N0cmVhbV93cml0YWJsZS5qcycpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL2xpYi9fc3RyZWFtX2R1cGxleC5qcycpO1xuIiwibW9kdWxlLmV4cG9ydHMgPSByZXF1aXJlKCcuL3JlYWRhYmxlJykuVHJhbnNmb3JtXG4iLCJtb2R1bGUuZXhwb3J0cyA9IHJlcXVpcmUoJy4vcmVhZGFibGUnKS5QYXNzVGhyb3VnaFxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IFRpbWVEaW1lbnNpb24gfSBmcm9tIFwiLi9UaW1lRGltZW5zaW9uXCI7XG5cbmV4cG9ydCBjbGFzcyBNYXAge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEJVVFRPTl9DT05UUk9MX1BPU0lUSU9OOiBzdHJpbmcgPSAnYm90dG9tcmlnaHQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFRJTUVESU1FTlNJT05fUE9TSVRJT046IHN0cmluZyA9ICd0b3ByaWdodCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgU0NBTEVfQ09OVFJPTF9QT1NJVElPTjogc3RyaW5nID0gJ2JvdHRvbXJpZ2h0JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMSU5LX1ZJRVdfU09VUkNFOiBzdHJpbmcgPSAnaHR0cHM6Ly9naXRodWIuY29tLzdhZS9jb3JvbmFtYXAnO1xuICBwcml2YXRlIHN0YXRpYyBpbnN0YW5jZTogTWFwID0gbnVsbDtcbiAgcHJpdmF0ZSBtYXA6IGFueTtcbiAgcHJpdmF0ZSB0aW1lRGltZW5zaW9uOiBhbnk7XG5cbiAgcHJpdmF0ZSBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHB1YmxpYyBzdGF0aWMgZ2V0SW5zdGFuY2UoKTogTWFwIHtcbiAgICBpZiAodGhpcy5pbnN0YW5jZSA9PT0gbnVsbCkge1xuICAgICAgdGhpcy5pbnN0YW5jZSA9IG5ldyBNYXAoKTtcbiAgICB9XG4gICAgcmV0dXJuIHRoaXMuaW5zdGFuY2U7XG4gIH1cblxuICBwdWJsaWMgaW5pdCgpOiB2b2lkIHtcbiAgICB0aGlzLm1hcCA9IEwubWFwKCdtYXAnLCB7XG4gICAgICB6b29tQ29udHJvbDogdHJ1ZSxcbiAgICAgIHpvb21EZWx0YTogMC41LFxuICAgICAgem9vbVNuYXA6IDAsXG4gICAgICBtaW5ab29tOiAxLjUsXG4gICAgICBtYXhab29tOiA2LFxuICAgICAgd29ybGRDb3B5SnVtcDogdHJ1ZSxcbiAgICAgIHRpbWVEaW1lbnNpb246IHRydWUsXG4gICAgICB0aW1lRGltZW5zaW9uT3B0aW9uczoge1xuICAgICAgICB0aW1lSW50ZXJ2YWw6ICcyMDIwLTAxLTIyLycgKyBuZXcgRGF0ZShEYXRlLm5vdygpIC0gODY0ZTUpLnRvSlNPTigpLnNsaWNlKDAsIDEwKSxcbiAgICAgICAgcGVyaW9kOiAnUDFEJyxcbiAgICAgICAgYnVmZmVyOiAxLFxuICAgICAgfSxcbiAgICB9KS5zZXRWaWV3KFszMCwgMF0sIDIuMCk7XG4gICAgXG4gICAgLy8gQWRkIHNjYWxlIHRvIG1hcFxuICAgIEwuY29udHJvbC5zY2FsZSh7cG9zaXRpb246IE1hcC5TQ0FMRV9DT05UUk9MX1BPU0lUSU9OLCBtZXRyaWM6IGZhbHNlfSkuYWRkVG8odGhpcy5tYXApO1xuXG4gICAgdGhpcy5jcmVhdGVUaW1lRGltZW5zaW9uQ29udHJvbCgpO1xuXG4gICAgLy8gTG9hZCBtYXAgdGlsZXNcbiAgICB2YXIgb3NtTGF5ZXIgPSBMLnRpbGVMYXllcignaHR0cHM6Ly97c30udGlsZS5vc20ub3JnL3t6fS97eH0ve3l9LnBuZycsIHtcbiAgICAgIGF0dHJpYnV0aW9uOiAnRGlzZWFzZSBkYXRhICZjb3B5OyA8YSBocmVmPVwiaHR0cHM6Ly9zeXN0ZW1zLmpodS5lZHUvXCI+Sm9obnMgSG9wa2lucyBDU1NFPC9hPiBNYXAgJmNvcHk7IDxhIGhyZWY9XCJodHRwczovL29zbS5vcmcvY29weXJpZ2h0XCI+T3BlblN0cmVldE1hcDwvYT4gY29udHJpYnV0b3JzLCA8YSBocmVmPVwiaHR0cHM6Ly9sZWFmbGV0anMuY29tXCI+TGVhZmxldDwvYT4nLFxuICAgICAgdGlsZVNpemU6IDUxMixcbiAgICAgIHpvb21PZmZzZXQ6IC0xXG4gICAgfSkuYWRkVG8odGhpcy5tYXApO1xuICAgIHRoaXMubWFwLmF0dHJpYnV0aW9uQ29udHJvbC5zZXRQcmVmaXgoJzxhIGhyZWY9XCInICsgTWFwLkxJTktfVklFV19TT1VSQ0UgKyAnXCI+VmlldyBTb3VyY2U8L2E+Jyk7XG4gICAgdGhpcy5jcmVhdGVGdWxsc2NyZWVuQ29udHJvbChNYXAuQlVUVE9OX0NPTlRST0xfUE9TSVRJT04pO1xuICB9XG5cbiAgLy8gQXR0YWNoIGZ1bGxzY3JlZW4gY29udHJvbCB0byB6b29tIGJ1dHRvbnNcbiAgcHJpdmF0ZSBjcmVhdGVGdWxsc2NyZWVuQ29udHJvbChjb250cm9sUG9zaXRpb246IHN0cmluZyk6IHZvaWQge1xuICAgIC8vIE1vdmUgem9vbSBidXR0b25zXG4gICAgdGhpcy5tYXAuem9vbUNvbnRyb2wuc2V0UG9zaXRpb24oY29udHJvbFBvc2l0aW9uKTtcbiAgICAvLyBBdHRhY2ggZnVsbHNjcmVlbiBjb250cm9sIHRvIHpvb20gYnV0dG9uc1xuICAgIEwuY29udHJvbC5mdWxsc2NyZWVuKHtcbiAgICAgIHBvc2l0aW9uOiBjb250cm9sUG9zaXRpb24sXG4gICAgICBmb3JjZVNlcGFyYXRlQnV0dG9uOiBmYWxzZVxuICAgIH0pLmFkZFRvKHRoaXMubWFwKTtcbiAgfVxuXG4gIC8vIEF0dGFjaCB0aW1lZGltZW5zaW9uIGNvbnRyb2wgdG8gdGhlIG1hcFxuICBwcml2YXRlIGNyZWF0ZVRpbWVEaW1lbnNpb25Db250cm9sKCk6IHZvaWQge1xuICAgIEwuQ29udHJvbC5UaW1lRGltZW5zaW9uQ3VzdG9tID0gTC5Db250cm9sLlRpbWVEaW1lbnNpb24uZXh0ZW5kKHtcbiAgICAgIC8vQG92ZXJyaWRlXG4gICAgICBfZ2V0RGlzcGxheURhdGVGb3JtYXQ6IGZ1bmN0aW9uKGRhdGU6IGFueSkge1xuICAgICAgICByZXR1cm4gbW9tZW50KGRhdGUpLmFkZCgxLCAnZGF5cycpLmZvcm1hdCgnZGRkZCwgTEwnKTtcbiAgICAgIH1cbiAgICB9KTtcbiAgICB2YXIgdGltZURpbWVuc2lvbkNvbnRyb2wgPSBuZXcgTC5Db250cm9sLlRpbWVEaW1lbnNpb25DdXN0b20oe1xuICAgICAgcG9zaXRpb246IE1hcC5USU1FRElNRU5TSU9OX1BPU0lUSU9OLFxuICAgICAgbWluU3BlZWQ6IDAuMjUsXG4gICAgICBtYXhTcGVlZDogMixcbiAgICAgIHNwZWVkU3RlcDogMC4yNSxcbiAgICAgIHRpbWVTbGlkZXJEcmFnVXBkYXRlOiB0cnVlLFxuICAgICAgYXV0b1BsYXk6IGZhbHNlLFxuICAgICAgbG9vcEJ1dHRvbjogdHJ1ZSxcbiAgICAgIHBsYXlSZXZlcnNlQnV0dG9uOiB0cnVlLFxuICAgICAgdGltZVpvbmVzOiBbJ0xvY2FsJ10sXG4gICAgICBwbGF5ZXJPcHRpb25zOiB7XG4gICAgICAgIGxvb3A6IHRydWUsXG4gICAgICAgIHN0YXJ0T3ZlcjogdHJ1ZSxcbiAgICAgIH1cbiAgICB9KTtcbiAgICB0aGlzLm1hcC5hZGRDb250cm9sKHRpbWVEaW1lbnNpb25Db250cm9sKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNYXAoKTogYW55IHtcbiAgICByZXR1cm4gdGhpcy5tYXA7XG4gIH1cblxuICBwdWJsaWMgYXR0YWNoVGltZURpbWVuc2lvbih0ZDogVGltZURpbWVuc2lvbik6IHZvaWQge1xuICAgIHRoaXMudGltZURpbWVuc2lvbiA9IHRkO1xuICB9XG5cbiAgcHVibGljIGRldHRhY2hUaW1lRGltZW5zaW9uKCk6IHZvaWQge1xuICAgIHRoaXMudGltZURpbWVuc2lvbiA9IG51bGw7XG4gIH1cblxuICBwdWJsaWMgZ2V0VGltZURpbWVuc2lvbigpOiBUaW1lRGltZW5zaW9uIHtcbiAgICByZXR1cm4gdGhpcy50aW1lRGltZW5zaW9uO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTWFwIH0gZnJvbSBcIi4vTWFwXCI7XG5pbXBvcnQgeyBJVGVtcG9yYWwgfSBmcm9tIFwiLi9JVGVtcG9yYWxcIjtcblxuZXhwb3J0IGVudW0gQ2hvcm9wbGV0aE1vZGUge1xuICBRdWFudGlsZSA9IFwicVwiLFxuICBFcXVpZGlzdGFudCA9IFwiZVwiLFxuICBLbWVhbnMgPSBcImtcIlxufVxuXG5leHBvcnQgY2xhc3MgQ2hvcm9wbGV0aCBpbXBsZW1lbnRzIElUZW1wb3JhbCB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9TQ0FMRTogc3RyaW5nW10gPSBbJyNmZmYnLCAnI2ZmZWZhYycsICcjZmJjNzUwJywgJyNmNmIzNDAnLCAnI2YwOWUzMycsICcjZTk4ODI4JywgJyNlMTczMWUnLCAnI2Q5NWIxNycsICcjZDE0MjExJywgJyNjODFlMGQnXTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX0JPUkRFUl9DT0xPUjogc3RyaW5nID0gJyM2NjYnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRklMTF9PUEFDSVRZOiBudW1iZXIgPSAwLjY7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSElHSExJR0hUX0ZJTExfT1BBQ0lUWTogbnVtYmVyID0gMC42NTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUZBVUxUX01PREU6IENob3JvcGxldGhNb2RlID0gQ2hvcm9wbGV0aE1vZGUuUXVhbnRpbGU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVGQVVMVF9XRUlHSFQ6IG51bWJlciA9IDE7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgSElHSExJR0hUX1dFSUdIVDogbnVtYmVyID0gMS43NTtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBMRUdFTkRfQ09OVFJPTF9QT1NJVElPTjogc3RyaW5nID0gJ2JvdHRvbWxlZnQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExFR0VORF9FTEVNRU5UX0NMQVNTOiBzdHJpbmcgPSAnY2hvcm9wbGV0aC1sZWdlbmQnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IExFR0VORF9DT0xPUl9XSURUSFM6IG51bWJlcltdID0gWzEsIDEsIDEuNSwgMS41LCAxLjUsIDIsIDIuNSwgMywgNV07XG4gIHByaXZhdGUgc2NhbGU6IHN0cmluZ1tdO1xuICBwcml2YXRlIGJvcmRlckNvbG9yOiBzdHJpbmc7XG4gIHByaXZhdGUgZmlsbE9wYWNpdHk6IG51bWJlcjtcbiAgcHJpdmF0ZSBtb2RlOiBDaG9yb3BsZXRoTW9kZTtcblxuICBwdWJsaWMgY29uc3RydWN0b3Ioc2NhbGU/OiBzdHJpbmdbXSwgYm9yZGVyQ29sb3I/OiBzdHJpbmcsIGZpbGxPcGFjaXR5PzogbnVtYmVyLCBtb2RlPzogQ2hvcm9wbGV0aE1vZGUpIHtcbiAgICB0aGlzLnNjYWxlID0gIXNjYWxlIHx8IHNjYWxlLmxlbmd0aCA8IDEgPyBDaG9yb3BsZXRoLkRFRkFVTFRfU0NBTEUgOiBzY2FsZTtcbiAgICB0aGlzLmJvcmRlckNvbG9yID0gIWJvcmRlckNvbG9yID8gQ2hvcm9wbGV0aC5ERUZBVUxUX0JPUkRFUl9DT0xPUiA6IGJvcmRlckNvbG9yO1xuICAgIHRoaXMuZmlsbE9wYWNpdHkgPSAhZmlsbE9wYWNpdHkgPyBDaG9yb3BsZXRoLkRFRkFVTFRfRklMTF9PUEFDSVRZIDogZmlsbE9wYWNpdHk7XG4gICAgdGhpcy5tb2RlID0gIW1vZGUgPyBDaG9yb3BsZXRoLkRFRkFVTFRfTU9ERSA6IG1vZGU7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGdlb0pzb246IG9iamVjdCk6IGFueSB7XG4gICAgdmFyIGNob3JvcGxldGhMYXllciA9IEwuY2hvcm9wbGV0aChnZW9Kc29uLCB7XG4gICAgICAvLyBTZXQgcHJvcGVydGllcyB0byB1c2VcbiAgICAgIHZhbHVlUHJvcGVydHk6IE1hcC5nZXRJbnN0YW5jZSgpLmdldFRpbWVEaW1lbnNpb24oKS5nZXRDdXJyZW50VGltZSgpLFxuICAgICAgc2NhbGU6IHRoaXMuc2NhbGUsXG4gICAgICBtb2RlOiB0aGlzLm1vZGUsXG4gICAgICBzdGVwOiB0aGlzLnNjYWxlLmxlbmd0aCxcbiAgICAgIHN0eWxlOiB7XG4gICAgICAgIGNvbG9yOiB0aGlzLmJvcmRlckNvbG9yLFxuICAgICAgICB3ZWlnaHQ6IDEsXG4gICAgICAgIGZpbGxPcGFjaXR5OiB0aGlzLmZpbGxPcGFjaXR5XG4gICAgICB9LFxuICAgICAgb25FYWNoRmVhdHVyZTogb25FYWNoRmVhdHVyZVxuICAgIH0pO1xuXG4gICAgdGhpcy5jcmVhdGVMZWdlbmQoY2hvcm9wbGV0aExheWVyKTtcblxuICAgIHJldHVybiBjaG9yb3BsZXRoTGF5ZXI7XG4gIH1cblxuICBwdWJsaWMgY3JlYXRlTGVnZW5kKGNob3JvcGxldGhMYXllcjogYW55KTogdm9pZCB7XG4gICAgLy8gQWRhcHRlZCBmcm9tIFRpbSBXaXNuaWV3c2tpJ3MgZXhhbXBsZTogaHR0cHM6Ly9naXRodWIuY29tL3RpbXdpcy9sZWFmbGV0LWNob3JvcGxldGgvYmxvYi9naC1wYWdlcy9leGFtcGxlcy9sZWdlbmQvZGVtby5qcyByZXRyaWV2ZWQgaW4gTWFyY2ggMjAyMC5cbiAgICB2YXIgbGVnZW5kID0gTC5jb250cm9sKHsgcG9zaXRpb246IENob3JvcGxldGguTEVHRU5EX0NPTlRST0xfUE9TSVRJT04gfSk7XG4gICAgbGVnZW5kLm9uQWRkID0gZnVuY3Rpb24oKSB7XG4gICAgICB2YXIgZGl2OiBFbGVtZW50O1xuICAgICAgaWYgKCQoJ2Rpdi4nICsgQ2hvcm9wbGV0aC5MRUdFTkRfRUxFTUVOVF9DTEFTUykubGVuZ3RoID4gMCkge1xuICAgICAgICBkaXYgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCdkaXYuJyArIENob3JvcGxldGguTEVHRU5EX0VMRU1FTlRfQ0xBU1MpWzBdO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgZGl2ID0gTC5Eb21VdGlsLmNyZWF0ZSgnZGl2JywgQ2hvcm9wbGV0aC5MRUdFTkRfRUxFTUVOVF9DTEFTUyk7XG4gICAgICB9XG5cbiAgICAgIHZhciBsaW1pdHMgPSBDaG9yb3BsZXRoLnB1c2hBdmVyYWdlT2ZFdmVyeUVsZW1lbnQoY2hvcm9wbGV0aExheWVyLm9wdGlvbnMubGltaXRzKTtcbiAgICAgIGxpbWl0c1swXSA9IDA7XG4gICAgICBjaG9yb3BsZXRoTGF5ZXIub3B0aW9ucy5saW1pdHMgPSBsaW1pdHM7XG5cbiAgICAgIHZhciBjb2xvcnMgPSBDaG9yb3BsZXRoLkRFRkFVTFRfU0NBTEU7XG4gICAgICBjb2xvcnMgPSBjb2xvcnMuc2xpY2UoMSwgY29sb3JzLmxlbmd0aCk7XG4gICAgICBjaG9yb3BsZXRoTGF5ZXIub3B0aW9ucy5jb2xvcnMgPSBjb2xvcnM7XG4gICAgICBcbiAgICAgIHZhciBsYWJlbHMgPSBbXTtcblxuICAgICAgLy8gQWRkIG1pbiBhbmQgbWF4IGxhYmVsc1xuICAgICAgZGl2LmlubmVySFRNTCA9ICc8ZGl2IGNsYXNzPVwibWluXCI+PHNwYW4+Q2FzZXM6PC9zcGFuPiAnICsgbGltaXRzWzBdICsgJzwvZGl2PjxkaXYgY2xhc3M9XCJtYXhcIj4nICsgbGltaXRzW2xpbWl0cy5sZW5ndGggLSAxXSArICc8L2Rpdj48L2Rpdj4nO1xuICAgICAgLy8gU3R5bGVcbiAgICAgIGxpbWl0cy5mb3JFYWNoKGZ1bmN0aW9uIChsaW1pdCwgaW5kZXgpIHtcbiAgICAgICAgbGFiZWxzLnB1c2goJzxsaSBzdHlsZT1cImJhY2tncm91bmQtY29sb3I6JyArIGNvbG9yc1tpbmRleF1cbiAgICAgICAgICArICc7d2lkdGg6JyArIENob3JvcGxldGguTEVHRU5EX0NPTE9SX1dJRFRIU1tpbmRleF0gKyAndnc7XCI+PC9saT4nKTtcbiAgICAgIH0pO1xuICAgICAgZGl2LmlubmVySFRNTCArPSAnPHVsPicgKyBsYWJlbHMuam9pbignJykgKyAnPC91bD4nO1xuICAgICAgXG4gICAgICByZXR1cm4gZGl2O1xuICAgIH1cbiAgICBsZWdlbmQuYWRkVG8oTWFwLmdldEluc3RhbmNlKCkuZ2V0TWFwKCkpO1xuICB9XG5cbiAgcHVibGljIHNldFNjYWxlKHNjYWxlOiBzdHJpbmdbXSk6IHZvaWQge1xuICAgIHRoaXMuc2NhbGUgPSBzY2FsZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRTY2FsZSgpOiBzdHJpbmdbXSB7XG4gICAgcmV0dXJuIHRoaXMuc2NhbGU7XG4gIH1cbiAgXG4gIHB1YmxpYyBzZXRCb3JkZXJDb2xvcihib3JkZXJDb2xvcjogc3RyaW5nKTogdm9pZCB7XG4gICAgdGhpcy5ib3JkZXJDb2xvciA9IGJvcmRlckNvbG9yO1xuICB9XG5cbiAgcHVibGljIGdldEJvcmRlckNvbG9yKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuYm9yZGVyQ29sb3I7XG4gIH1cbiAgXG4gIHB1YmxpYyBzZXRGaWxsT3BhY2l0eShmaWxsT3BhY2l0eTogbnVtYmVyKTogdm9pZCB7XG4gICAgdGhpcy5maWxsT3BhY2l0eSA9IGZpbGxPcGFjaXR5O1xuICB9XG5cbiAgcHVibGljIGdldEZpbGxPcGFjaXR5KCk6IG51bWJlciB7XG4gICAgcmV0dXJuIHRoaXMuZmlsbE9wYWNpdHk7XG4gIH1cbiAgXG4gIHB1YmxpYyBzZXRNb2RlKG1vZGU6IENob3JvcGxldGhNb2RlKTogdm9pZCB7XG4gICAgdGhpcy5tb2RlID0gbW9kZTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRNb2RlKCk6IENob3JvcGxldGhNb2RlIHtcbiAgICByZXR1cm4gdGhpcy5tb2RlO1xuICB9XG5cbiAgcHJpdmF0ZSBzdGF0aWMgcHVzaEF2ZXJhZ2VPZkV2ZXJ5RWxlbWVudChhcnJheTogbnVtYmVyW10pOiBudW1iZXJbXSB7XG4gICAgdmFyIG5ld0FycmF5ID0gW107XG4gICAgZm9yIChsZXQgZWxlbWVudCBpbiBhcnJheSkge1xuICAgICAgICB2YXIgaW5kZXggPSBwYXJzZUludChlbGVtZW50KTtcbiAgICAgICAgbmV3QXJyYXkucHVzaChhcnJheVtpbmRleF0pO1xuICAgICAgICBuZXdBcnJheS5wdXNoKChhcnJheVtpbmRleF0gKyBhcnJheVtpbmRleCArIDFdKSAvIDIpO1xuICAgIH1cbiAgICBuZXdBcnJheS5wb3AoKTtcbiAgICByZXR1cm4gbmV3QXJyYXk7XG4gIH1cbn1cblxuLy8gQWRhcHRlZCBmcm9tIExlYWZsZXQncyBleGFtcGxlOiBodHRwczovL2xlYWZsZXRqcy5jb20vZXhhbXBsZXMvY2hvcm9wbGV0aCByZXRyaWV2ZWQgaW4gTWFyY2ggMjAyMC5cbmV4cG9ydCBmdW5jdGlvbiBvbkVhY2hGZWF0dXJlKF8sIGxheWVyKSB7XG4gIGxheWVyLm9uKHtcbiAgICBtb3VzZW92ZXI6IGhpZ2hsaWdodEZlYXR1cmUsXG4gICAgbW91c2VvdXQ6IHJlc2V0SGlnaGxpZ2h0LFxuICAgIGNsaWNrOiB6b29tVG9GZWF0dXJlXG4gIH0pO1xufVxuXG5mdW5jdGlvbiByZXNldEhpZ2hsaWdodChlKSB7XG4gIC8vIEl0ZXJhdGUgZWFjaCBtYXAgbGF5ZXIgYW5kIHJ1biByZXNldFN0eWxlKCkgZnVuY3Rpb25cbiAgJC5lYWNoKE1hcC5nZXRJbnN0YW5jZSgpLmdldFRpbWVEaW1lbnNpb24oKS5nZXRMYXllcnMoKSwgZnVuY3Rpb24oaW5kZXgsIHZhbHVlKSB7XG4gICAgdHJ5IHtcbiAgICAgIHZhciBsYXllciA9IGUudGFyZ2V0O1xuICAgICAgbGF5ZXIuc2V0U3R5bGUoe1xuICAgICAgICB3ZWlnaHQ6IENob3JvcGxldGguREVGQVVMVF9XRUlHSFQsXG4gICAgICAgIGNvbG9yOiBDaG9yb3BsZXRoLkRFRkFVTFRfQk9SREVSX0NPTE9SLFxuICAgICAgICBmaWxsT3BhY2l0eTogQ2hvcm9wbGV0aC5ERUZBVUxUX0ZJTExfT1BBQ0lUWSxcbiAgICAgIH0pO1xuICAgICAgaWYgKCFMLkJyb3dzZXIuaWUgJiYgIUwuQnJvd3Nlci5vcGVyYSAmJiAhTC5Ccm93c2VyLmVkZ2UpIHtcbiAgICAgICAgbGF5ZXIuYnJpbmdUb0Zyb250KCk7XG4gICAgICB9XG4gICAgfSBjYXRjaChlKSB7IH1cbiAgfSk7XG59XG5cbmZ1bmN0aW9uIHpvb21Ub0ZlYXR1cmUoZSkge1xuICBNYXAuZ2V0SW5zdGFuY2UoKS5nZXRNYXAoKS5maXRCb3VuZHMoZS50YXJnZXQuZ2V0Qm91bmRzKCkpO1xufVxuXG5mdW5jdGlvbiBoaWdobGlnaHRGZWF0dXJlKGUpIHtcbiAgdmFyIGxheWVyID0gZS50YXJnZXQ7XG4gIGxheWVyLnNldFN0eWxlKHtcbiAgICB3ZWlnaHQ6IENob3JvcGxldGguSElHSExJR0hUX1dFSUdIVCxcbiAgICBmaWxsT3BhY2l0eTogQ2hvcm9wbGV0aC5ISUdITElHSFRfRklMTF9PUEFDSVRZLFxuICB9KTtcblxuICBpZiAoIUwuQnJvd3Nlci5pZSAmJiAhTC5Ccm93c2VyLm9wZXJhICYmICFMLkJyb3dzZXIuZWRnZSkge1xuICAgIGxheWVyLmJyaW5nVG9Gcm9udCgpO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuZXhwb3J0IGNsYXNzIERhdGFiYXNlIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBEQl9OQU1FOiBzdHJpbmcgPSAnQ29yb25hbWFwU3RvcmFnZSc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgS0VZX0VYUElSWV9USU1FOiBzdHJpbmcgPSAnRXhwaXJ5IFRpbWUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IEtFWV9DT05GSVJNRURfR0VPSlNPTjogc3RyaW5nID0gJ0NvbmZpcm1lZCBKc29uJztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBLRVlfREVBVEhTX0dFT0pTT046IHN0cmluZyA9ICdEZWF0aHMgSnNvbic7XG4gIC8vIFN0b3JlZCBkYXRhIGV4cGlyZXMgbmV4dCBkYXkgM2FtIFVUQyB3aGVuIHRoZSBhdXRvbWF0ZWQgdXBkYXRlIGlzIGF2YWlsYWJsZSBieSBwdWJsaWMgZGF0YVxuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IERFRkFVTFRfRVhQSVJZX1RJTUU6IG51bWJlciA9IG5ldyBEYXRlKCkuc2V0VVRDSG91cnMoMjQgKyAzLCAwLCAwLCAwKTtcbiAgLy8gVXNlIHRlbXBvcmFyeSBzdG9yYWdlIGlmIGZhbHNlXG4gIHByaXZhdGUgc3RhdGljIGhhc0xvY2FsU3RvcmFnZTogYm9vbGVhbiA9IHRydWU7XG4gIC8vIFRlbXBvcmFyeSBzdG9yYWdlIGV4cGlyZXMgYWZ0ZXIgcGFnZSByZWZyZXNoXG4gIHByaXZhdGUgc3RhdGljIHRlbXBvcmFyeVN0b3JhZ2U6IE9iamVjdCA9IHt9O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHtcbiAgICBsb2NhbGZvcmFnZS5jb25maWcoe1xuICAgICAgZHJpdmVyOiBsb2NhbGZvcmFnZS5JTkRFWEVEREIsXG4gICAgICBuYW1lOiBEYXRhYmFzZS5EQl9OQU1FXG4gICAgfSk7XG4gIH1cblxuICBwdWJsaWMgc2V0SXRlbShrZXk6IHN0cmluZywgdmFsdWU6IGFueSk6IHZvaWQge1xuICAgIGlmIChEYXRhYmFzZS5oYXNMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGxvY2FsZm9yYWdlLnNldEl0ZW0oa2V5LCB2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERhdGFiYXNlLnRlbXBvcmFyeVN0b3JhZ2Vba2V5XSA9IHZhbHVlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRJdGVtKGtleTogc3RyaW5nKTogUHJvbWlzZTxhbnk+IHtcbiAgICBpZiAoRGF0YWJhc2UuaGFzTG9jYWxTdG9yYWdlKSB7XG4gICAgICByZXR1cm4gbG9jYWxmb3JhZ2UuZ2V0SXRlbShrZXkpLnRoZW4oKHZhbHVlKSA9PiB7XG4gICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgICAgfVxuICAgICAgfSkuY2F0Y2goKGVycikgPT4ge1xuICAgICAgICBEYXRhYmFzZS5oYXNMb2NhbFN0b3JhZ2UgPSBmYWxzZTtcbiAgICAgIH0pO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRGF0YWJhc2UudGVtcG9yYXJ5U3RvcmFnZVtrZXldO1xuICAgIH1cbiAgfVxuICBcbiAgcHVibGljIGNsZWFyKCk6IHZvaWQge1xuICAgIGlmIChEYXRhYmFzZS5oYXNMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIGxvY2FsZm9yYWdlLmNsZWFyKCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIERhdGFiYXNlLnRlbXBvcmFyeVN0b3JhZ2UgPSBuZXcgT2JqZWN0KCk7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIHN1cHBvcnRzKCk6IGJvb2xlYW4ge1xuICAgIHJldHVybiBsb2NhbGZvcmFnZS5zdXBwb3J0cyhsb2NhbGZvcmFnZS5JTkRFWEVEREIpO1xuICB9XG5cbiAgcHVibGljIGFzeW5jIGlzRXhwaXJlZCgpOiBQcm9taXNlPGFueT4ge1xuICAgIHZhciBleHRpbWU7XG4gICAgaWYgKERhdGFiYXNlLmhhc0xvY2FsU3RvcmFnZSkge1xuICAgICAgZXh0aW1lID0gYXdhaXQgdGhpcy5nZXRJdGVtKERhdGFiYXNlLktFWV9FWFBJUllfVElNRSk7XG4gICAgfVxuICAgIGlmIChleHRpbWUpIHtcbiAgICAgIHJldHVybiBuZXcgRGF0ZSgpLmdldFRpbWUoKSA+IGV4dGltZTtcbiAgICB9XG4gICAgLy8gRXhwaXJlIGlmIGRhdGFiYXNlIGRvZXMgbm90IGNvbnRhaW4gZXhwaXJ5IHRpbWVcbiAgICByZXR1cm4gdHJ1ZTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRFeHBpcnlUaW1lKGV4dGltZT86IGFueSk6IHZvaWQge1xuICAgIGlmIChEYXRhYmFzZS5oYXNMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHRoaXMuaXNFeHBpcmVkKCkudGhlbihmdW5jdGlvbih2YWx1ZSkge1xuICAgICAgICBpZiAodmFsdWUpIHtcbiAgICAgICAgICBsb2NhbGZvcmFnZS5zZXRJdGVtKERhdGFiYXNlLktFWV9FWFBJUllfVElNRSwgIWV4dGltZSA/IERhdGFiYXNlLkRFRkFVTFRfRVhQSVJZX1RJTUUgOiBleHRpbWUpO1xuICAgICAgICB9XG4gICAgICB9KTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0U3RvcmFnZSgpOiBvYmplY3Qge1xuICAgIGlmIChEYXRhYmFzZS5oYXNMb2NhbFN0b3JhZ2UpIHtcbiAgICAgIHJldHVybiBsb2NhbGZvcmFnZS5fZGJJbmZvO1xuICAgIH0gZWxzZSB7XG4gICAgICByZXR1cm4gRGF0YWJhc2UudGVtcG9yYXJ5U3RvcmFnZTtcbiAgICB9XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBNYXAgfSBmcm9tIFwiLi9NYXBcIjtcbmltcG9ydCB7IElUZW1wb3JhbCB9IGZyb20gXCIuL0lUZW1wb3JhbFwiO1xuXG5leHBvcnQgY2xhc3MgVGltZURpbWVuc2lvbiB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREFURV9GT1JNQVQ6IHN0cmluZyA9ICdNL0QvWVknO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IFdBSVRfT05fTE9BRF9USU1FUjogbnVtYmVyID0gMjtcbiAgcHJpdmF0ZSBtYXA6IE1hcDtcbiAgcHJpdmF0ZSB0ZW1wb3JhbDogQXJyYXk8SVRlbXBvcmFsPjtcbiAgcHJpdmF0ZSBsYXllckdyb3VwOiBhbnk7XG4gIHByaXZhdGUgbGF5ZXJzOiB7W2tleTogbnVtYmVyXTogYW55fTtcbiAgcHJpdmF0ZSBoYXNUaW1lQ2hhbmdlZDogYm9vbGVhbjtcbiAgcHJpdmF0ZSBjdXJyZW50VGltZTogc3RyaW5nO1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3Rvcih0ZW1wb3JhbDogSVRlbXBvcmFsW10pIHtcbiAgICB0aGlzLm1hcCA9IE1hcC5nZXRJbnN0YW5jZSgpO1xuICAgIHRoaXMudGVtcG9yYWwgPSB0ZW1wb3JhbDtcbiAgICB0aGlzLmxheWVyR3JvdXAgPSBMLmxheWVyR3JvdXAoKS5hZGRUbyh0aGlzLm1hcC5nZXRNYXAoKSk7XG4gICAgdGhpcy5sYXllcnMgPSB7fTtcbiAgICB0aGlzLmhhc1RpbWVDaGFuZ2VkID0gZmFsc2U7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGdlb0pzb246IG9iamVjdCA9IG51bGwpIHtcbiAgICBzZXRJbnRlcnZhbCgoKSA9PiB7XG4gICAgICB0aGlzLmhhc1RpbWVDaGFuZ2VkID0gdGhpcy5jdXJyZW50VGltZSAhPT0gdGhpcy5nZXRDdXJyZW50VGltZSgpO1xuICAgICAgdGhpcy5jdXJyZW50VGltZSA9IHRoaXMuZ2V0Q3VycmVudFRpbWUoKTtcbiAgICAgIGlmICghdGhpcy5oYXNUaW1lQ2hhbmdlZCkge1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICB0aGlzLmNsZWFyTGF5ZXJHcm91cCgpO1xuICAgICAgXG4gICAgICBmb3IgKGxldCBzaW5nbGVUZW1wb3JhbCBvZiB0aGlzLnRlbXBvcmFsKSB7XG4gICAgICAgIGxldCBsYXllciA9IHNpbmdsZVRlbXBvcmFsLnVwZGF0ZShnZW9Kc29uKS5hZGRUbyh0aGlzLmxheWVyR3JvdXApO1xuICAgICAgICBsZXQgbGF5ZXJJZCA9IEwuc3RhbXAobGF5ZXIpIDwgTnVtYmVyLk1BWF9WQUxVRSA/IEwuc3RhbXAobGF5ZXIpIDogMDtcbiAgICAgICAgdGhpcy5sYXllcnNbbGF5ZXJJZF0gPSBsYXllcjtcbiAgICAgIH1cbiAgICB9LCAwKTtcbiAgfVxuXG4gIHB1YmxpYyBnZXRMYXllcnMoKToge1trZXk6IG51bWJlcl06IGFueX0ge1xuICAgIHJldHVybiB0aGlzLmxheWVycztcbiAgfVxuXG4gIHB1YmxpYyBjbGVhckxheWVyR3JvdXAoKTogdm9pZCB7XG4gICAgaWYodGhpcy5sYXllcnMpIHtcbiAgICAgIGZvciAobGV0IGkgaW4gdGhpcy5sYXllckdyb3VwLl9sYXllcnMpIHtcbiAgICAgICAgaWYgKHRoaXMubGF5ZXJHcm91cC5oYXNMYXllcihpKSkge1xuICAgICAgICAgIHRoaXMubGF5ZXJHcm91cC5yZW1vdmVMYXllcihpKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgdGhpcy5sYXllcnMgPSB7fTtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgZ2V0Q3VycmVudFRpbWUoKTogc3RyaW5nIHtcbiAgICB2YXIgY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kID0gdGhpcy5tYXAuZ2V0TWFwKCkudGltZURpbWVuc2lvbi5nZXRDdXJyZW50VGltZSgpO1xuICAgIHZhciBjdXJyZW50VGltZSA9IHRoaXMubWlsbGlzZWNvbmRUb0RhdGUoY3VycmVudFRpbWVJbk1pbGxpc2Vjb25kKTtcbiAgICByZXR1cm4gbW9tZW50KGN1cnJlbnRUaW1lKS5mb3JtYXQoVGltZURpbWVuc2lvbi5EQVRFX0ZPUk1BVCk7XG4gIH1cblxuICBwcml2YXRlIG1pbGxpc2Vjb25kVG9EYXRlKG1pbGxpc2Vjb25kOiBudW1iZXIpOiBzdHJpbmcge1xuICAgIHJldHVybiBuZXcgRGF0ZShtaWxsaXNlY29uZCkudG9KU09OKCkuc2xpY2UoMCwgMTApO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgVGltZURpbWVuc2lvbiB9IGZyb20gXCIuL1RpbWVEaW1lbnNpb25cIjtcbnZhciBnZW9qc29uTWVyZ2UgPSByZXF1aXJlKCdAbWFwYm94L2dlb2pzb24tbWVyZ2UnKTtcblxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIEFic3RyYWN0UmVhZGVyIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCQVNFX1VSTDogc3RyaW5nID0gXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vQ1NTRUdJU2FuZERhdGEvQ09WSUQtMTkvbWFzdGVyL2Nzc2VfY292aWRfMTlfZGF0YS9jc3NlX2NvdmlkXzE5X3RpbWVfc2VyaWVzL1wiO1xuICBwcml2YXRlIGNvbmZpcm1lZEdlb0pzb246IG9iamVjdDtcbiAgcHJpdmF0ZSBkZWF0aHNHZW9Kc29uOiBvYmplY3Q7XG4gIHByaXZhdGUgcmVjb3ZlcmVkR2VvSnNvbjogb2JqZWN0O1xuXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcigpIHsgfVxuXG4gIHB1YmxpYyBhYnN0cmFjdCBpbml0KCk6IHZvaWQ7XG5cbiAgcHVibGljIGFic3RyYWN0IGxvYWRHZW9Kc29uRmlsZSgpOiBvYmplY3Q7XG5cbiAgLy8gUmV0cmlldmUgY3N2IGRhdGEgZnJvbSB1cmxcbiAgcHVibGljIHJlYWRDc3Yoc2NvcGU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgdmFyIHJlc3BvbnNlO1xuICAgICQuYWpheCh7XG4gICAgICB1cmw6IHNjb3BlLFxuICAgICAgYXN5bmM6IGZhbHNlLFxuICAgICAgc3VjY2VzczogZnVuY3Rpb24gKGRhdGEpIHtcbiAgICAgICAgcmVzcG9uc2UgPSBkYXRhO1xuICAgICAgfSxcbiAgICAgIGRhdGFUeXBlOiAndGV4dCdcbiAgICB9KTtcbiAgICByZXR1cm4gcmVzcG9uc2U7XG4gIH07XG5cbiAgcHVibGljIGNzdlRvT2JqZWN0KGNzdjogc3RyaW5nKTogb2JqZWN0IHtcbiAgICByZXR1cm4gJC5jc3YudG9PYmplY3RzKGNzdik7XG4gIH1cblxuICBwdWJsaWMgcmVwbGFjZUNvbHVtbktleXMoY3N2OiBhbnksIGRpY3Q6IG9iamVjdCk6IHN0cmluZyB7XG4gICAgdmFyIGhlYWRlciA9IGNzdi5zcGxpdChcIlxcblwiKVswXTtcbiAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoZGljdCkpIHtcbiAgICAgIGhlYWRlciA9IGhlYWRlci5yZXBsYWNlKGtleSwgZGljdFtrZXldKTtcbiAgICB9XG4gICAgcmV0dXJuIGhlYWRlciArICdcXHJcXG4nICsgY3N2LnNwbGl0KFwiXFxuXCIpLnNsaWNlKDEpLmpvaW4oXCJcXG5cIik7XG4gIH1cblxuICAvLyBGaW5kIGRpZmZlcmVudCBkYXRhIGJldHdlZW4gZ2VvanNvbiBhbmQgY3N2LCBhbmQgZXF1YWxpemUgZGlmZmVyZW50IHJlZ2lvbiBuYW1lcyBiZXR3ZWVuIGdlb2pzb24gYW5kIGNzdiBkYXRhXG4gIHB1YmxpYyByZXBsYWNlQ29sdW1uVmFsdWVzKGNzdjogYW55LCBkaWN0OiBvYmplY3QsIGNvbE5hbWU6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgdmFyIHJlZ2V4ID0gbmV3IFJlZ0V4cCgnXicgKyBPYmplY3Qua2V5cyhkaWN0KS5tYXAoXyA9PiBfLnJlcGxhY2UoL1srP14qJHt9KCl8W1xcXVxcXFxdL2lnLCAnXFxcXCQmJykpLmpvaW4oJyR8XicpICsgJyQnLCAnZ2knKTtcbiAgICBcbiAgICAkKGNzdikuZWFjaChmdW5jdGlvbihpbmRleCwgdmFsdWUpIHtcbiAgICAgIHZhbHVlW2NvbE5hbWVdID0gdmFsdWVbY29sTmFtZV0ucmVwbGFjZShyZWdleCwgZnVuY3Rpb24obWF0Y2gpIHsgcmV0dXJuIGRpY3RbbWF0Y2hdOyB9KTtcbiAgICB9KTtcbiAgICBcbiAgICByZXR1cm4gY3N2O1xuICB9XG5cbiAgLy8gUmV0dXJuIHByb3BlcnR5IHZhbHVlcyBpbiBjc3YsIG5vdCBpbiBnZW9qc29uLCBvciBlbXB0eSBvYmplY3QgaWYgdGhlcmUgaXMgbm8gZGlmZmVyZW50IHZhbHVlcyBiZXR3ZWVuIGdlb2pzb24gYW5kIGNzdlxuICBwdWJsaWMgY29tcGFyZVByb3BlcnR5VmFsdWVzKGNzdjogYW55LCBnZW9Kc29uOiBvYmplY3QsIGNvbE5hbWU6IHN0cmluZywgcHJvcGVydHlLZXk6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgcmV0dXJuICQoY3N2Lm1hcChfID0+IF9bY29sTmFtZV0pKS5ub3QoZ2VvSnNvbikuZ2V0KCkuZmlsdGVyKGZ1bmN0aW9uKHYsIGksIF8pIHsgcmV0dXJuIF8uaW5kZXhPZih2KSA+PSBpOyB9KTtcbiAgfVxuXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eVZhbHVlcyhjc3Y6IGFueSwgZ2VvSnNvbjogYW55LCBjb2xOYW1lOiBzdHJpbmcsIGdlb0pzb25LZXk6IHN0cmluZyk6IG9iamVjdCB7XG4gICAgZm9yIChsZXQgdmFsdWUgb2YgZ2VvSnNvbi5mZWF0dXJlcykge1xuICAgICAgdmFyIGlkID0gMDtcbiAgICAgIGZvciAobGV0IGNzdklkeCBpbiBjc3YpIHtcbiAgICAgICAgLy8gSWYgZ2VvanNvbiBwcm9wZXJ0aWVzIG5hbWUgdmFsdWUgbWF0Y2hlcyB0byBjc3YgY29sdW1uIHZhbHVlXG4gICAgICAgIGlmICh2YWx1ZS5wcm9wZXJ0aWVzW2dlb0pzb25LZXldID09IGNzdltjc3ZJZHhdW2NvbE5hbWVdKSB7XG4gICAgICAgICAgLy8gU2V0IHByb3BlcnRpZXMgaW4gZ2VvanNvbiB3aXRoIG5ldyB2YWx1ZXNcbiAgICAgICAgICB2YWx1ZS5wcm9wZXJ0aWVzW2lkXSA9IGNzdltjc3ZJZHhdO1xuICAgICAgICAgIGlkKys7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9O1xuICAgIHRoaXMucHVzaFRvdGFsTnVtYmVyT2ZDYXNlVG9Qcm9wZXJ0aWVzKGdlb0pzb24pO1xuICAgIHJldHVybiBnZW9Kc29uO1xuICB9XG5cbiAgcHVibGljIHN0YXRpYyBnZXRQcm9wZXJ0eShmZWF0dXJlczogYW55LCBwcm9wZXJ0eU5hbWVzOiBzdHJpbmdbXSk6IGFueVtdIHtcbiAgICB2YXIgdmFsdWVzID0gW107XG4gICAgZm9yIChsZXQgaSBpbiBPYmplY3QudmFsdWVzKGZlYXR1cmVzKSkge1xuICAgICAgaWYgKGZlYXR1cmVzW2ldLnByb3BlcnRpZXNbJ0NvdW50cnkvUmVnaW9uJ10pIHtcbiAgICAgICAgZm9yIChsZXQgcG5hbWUgb2YgcHJvcGVydHlOYW1lcykge1xuICAgICAgICAgIGlmICghdmFsdWVzW3BuYW1lXSkge1xuICAgICAgICAgICAgdmFsdWVzW3BuYW1lXSA9IFtdO1xuICAgICAgICAgIH1cbiAgICAgICAgICB2YWx1ZXNbcG5hbWVdLnB1c2goZmVhdHVyZXNbaV0ucHJvcGVydGllc1twbmFtZV0pO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB2YWx1ZXM7XG4gIH1cblxuICBwdWJsaWMgc3RhdGljIG1lcmdlR2VvSnNvbnMoZ2VvSnNvbjogb2JqZWN0LCBvdGhlckdlb0pzb246IG9iamVjdCk6IG9iamVjdCB7XG4gICAgdmFyIG1lcmdlZEdlb0pzb24gPSBnZW9qc29uTWVyZ2UubWVyZ2UoW1xuICAgICAgZ2VvSnNvbixcbiAgICAgIG90aGVyR2VvSnNvblxuICAgIF0pO1xuICAgIHJldHVybiBtZXJnZWRHZW9Kc29uO1xuICB9XG5cbiAgcHVibGljIHNldENvbmZpcm1lZEdlb0pzb24oZ2VvSnNvbjogb2JqZWN0KTogdm9pZCB7XG4gICAgdGhpcy5jb25maXJtZWRHZW9Kc29uID0gZ2VvSnNvbjtcbiAgfVxuXG4gIHB1YmxpYyBnZXRDb25maXJtZWRHZW9Kc29uKCk6IG9iamVjdCB7XG4gICAgcmV0dXJuIHRoaXMuY29uZmlybWVkR2VvSnNvbjtcbiAgfVxuXG4gIHB1YmxpYyBzZXREZWF0aHNHZW9Kc29uKGdlb0pzb246IG9iamVjdCk6IHZvaWQge1xuICAgIHRoaXMuZGVhdGhzR2VvSnNvbiA9IGdlb0pzb247XG4gIH1cblxuICBwdWJsaWMgZ2V0RGVhdGhzR2VvSnNvbigpOiBvYmplY3Qge1xuICAgIHJldHVybiB0aGlzLmRlYXRoc0dlb0pzb247XG4gIH1cblxuICBwdWJsaWMgc2V0UmVjb3ZlcmVkR2VvSnNvbihnZW9Kc29uOiBvYmplY3QpOiB2b2lkIHtcbiAgICB0aGlzLnJlY292ZXJlZEdlb0pzb24gPSBnZW9Kc29uO1xuICB9XG5cbiAgcHVibGljIGdldFJlY292ZXJlZEdlb0pzb24oKTogb2JqZWN0IHtcbiAgICByZXR1cm4gdGhpcy5yZWNvdmVyZWRHZW9Kc29uO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VUZXh0KHRleHQ6IHN0cmluZywgZnJvbTogc3RyaW5nLCB0bzogc3RyaW5nLCByZXBlYXQ6IGJvb2xlYW4gPSBmYWxzZSk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRleHQucmVwbGFjZShyZXBlYXQgPyAnXFwvJyArIGZyb20gKyAnXFwvZycgOiBmcm9tLCB0byk7IFxuICB9XG5cbiAgcHVibGljIGdldE51bWJlck9mQ2FzZShmZWF0dXJlczogYW55LCB0aW1lOiBzdHJpbmcsIGxhdGxvbmc6IFtudW1iZXIsIG51bWJlcl0pOiBudW1iZXIge1xuICAgIGZvciAobGV0IGZlYXRJZHggPSAwLCBsZW4gPSBPYmplY3Qua2V5cyhmZWF0dXJlcykubGVuZ3RoOyBmZWF0SWR4IDwgbGVuOyBmZWF0SWR4KyspIHtcbiAgICAgIHZhciBwcm9wID0gZmVhdHVyZXNbZmVhdElkeF1bJ3Byb3BlcnRpZXMnXTtcblxuICAgICAgaWYgKHByb3AuTGF0ID09IGxhdGxvbmdbMF0gJiYgcHJvcC5Mb25nID09IGxhdGxvbmdbMV0pIHtcbiAgICAgICAgcmV0dXJuIHByb3BbdGltZV07XG4gICAgICB9XG4gICAgICBcbiAgICAgIGZvciAobGV0IHByb3BJZHggPSAwLCBsZW4gPSBPYmplY3Qua2V5cyhwcm9wKS5sZW5ndGg7IHByb3BJZHggPCBsZW47IHByb3BJZHgrKykge1xuICAgICAgICBpZiAocHJvcFtwcm9wSWR4XSkge1xuICAgICAgICAgIGlmIChwcm9wW3Byb3BJZHhdLkxhdCA9PSBsYXRsb25nWzBdICYmIHByb3BbcHJvcElkeF0uTG9uZyA9PSBsYXRsb25nWzFdKSB7XG4gICAgICAgICAgICByZXR1cm4gcHJvcFtwcm9wSWR4XVt0aW1lXTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuO1xuICB9XG5cbiAgcHVibGljIHN1YnRyYWN0UmVjb3ZlcmVkRnJvbUNvbmZpcm1lZChjb25maXJtZWRHZW9Kc29uOiBhbnksIHJlY292ZXJlZEdlb0pzb246IGFueSk6IG9iamVjdCB7XG4gICAgdmFyIGNsb25lZENvbmZpcm1lZEdlb0pzb24gPSBjb25maXJtZWRHZW9Kc29uO1xuICAgIC8vIEl0ZXJhdGUgZWFjaCBjb3VudHJ5IGluIGNvbmZpcm1lZCBnZW9qc29uXG4gICAgZm9yIChsZXQgY29uZmlybWVkQ291bnRyeSBvZiBPYmplY3QudmFsdWVzKGNsb25lZENvbmZpcm1lZEdlb0pzb24pKSB7XG4gICAgICAvLyBJdGVyYXRlIGVhY2ggY291bnRyeSBpbiByZWNvdmVyZWQgZ2VvanNvblxuICAgICAgZm9yIChsZXQgcmVjb3ZlcmVkQ291bnRyeSBvZiBPYmplY3QudmFsdWVzKHJlY292ZXJlZEdlb0pzb24pKSB7XG4gICAgICAgIC8vIEZvciBlYWNoIGtleSBmcm9tIGVhY2ggY291bnRyeVxuICAgICAgICBmb3IgKGxldCBrZXkgb2YgT2JqZWN0LmtleXMoY29uZmlybWVkQ291bnRyeSkpIHtcbiAgICAgICAgICAvLyBGaW5kIHRoZSBleGFjdCBzYW1lIGNvdW50cnkgYW5kIHN0YXRlIG5hbWVzIGluIHR3byBnZW9qc29uc1xuICAgICAgICAgIGlmIChjb25maXJtZWRDb3VudHJ5WydQcm92aW5jZS9TdGF0ZSddID09PSByZWNvdmVyZWRDb3VudHJ5WydQcm92aW5jZS9TdGF0ZSddICYmIGNvbmZpcm1lZENvdW50cnlbJ0NvdW50cnkvUmVnaW9uJ10gPT09IHJlY292ZXJlZENvdW50cnlbJ0NvdW50cnkvUmVnaW9uJ10pIHtcbiAgICAgICAgICAgIC8vIElmIGtleSBpcyBkYXRlXG4gICAgICAgICAgICBpZiAobW9tZW50KGtleSkuaXNWYWxpZCgpKSB7XG4gICAgICAgICAgICAgIC8vIFN1YnRyYWN0IG51bWJlciBvZiByZWNvdmVyZWQgY2FzZXMgZnJvbSBudW1iZXIgb2YgY29uZmlybWVkIGNhc2VzIG9uIHRoZSBkYXRlXG4gICAgICAgICAgICAgIGNvbmZpcm1lZENvdW50cnlba2V5XSAtPSByZWNvdmVyZWRDb3VudHJ5W2tleV07XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiBjbG9uZWRDb25maXJtZWRHZW9Kc29uO1xuICB9XG5cbiAgcHJpdmF0ZSBwdXNoVG90YWxOdW1iZXJPZkNhc2VUb1Byb3BlcnRpZXMoZ2VvSnNvbjogYW55KTogdm9pZCB7XG4gICAgLy8gSXRlcmF0ZSBnZW9qc29uXG4gICAgZm9yIChsZXQgZmVhdElkeCA9IDAsIGxlbiA9IE9iamVjdC5rZXlzKGdlb0pzb24uZmVhdHVyZXMpLmxlbmd0aDsgZmVhdElkeCA8IGxlbjsgZmVhdElkeCsrKSB7XG4gICAgICB2YXIgdG90YWxDYXNlQnlEYXRlID0ge307XG4gICAgICAvLyBJdGVyYXRlIHByb3BlcnRpZXNcbiAgICAgIGZvciAobGV0IGtleUlkeCA9IDAsIGxlbiA9IE9iamVjdC5rZXlzKGdlb0pzb24uZmVhdHVyZXNbZmVhdElkeF0ucHJvcGVydGllcykubGVuZ3RoOyBrZXlJZHggPCBsZW47IGtleUlkeCsrKSB7XG4gICAgICAgIHZhciBrZXkgPSBPYmplY3Qua2V5cyhnZW9Kc29uLmZlYXR1cmVzW2ZlYXRJZHhdLnByb3BlcnRpZXMpW2tleUlkeF07XG4gICAgICAgIC8vIENpdGllcyBhbmQgY291bnRpZXMgYXJlIG9iamVjdFxuICAgICAgICBpZihnZW9Kc29uLmZlYXR1cmVzW2ZlYXRJZHhdLnByb3BlcnRpZXNba2V5XSAmJiB0eXBlb2YgZ2VvSnNvbi5mZWF0dXJlc1tmZWF0SWR4XS5wcm9wZXJ0aWVzW2tleV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgLy8gSXRlcmF0ZSBrZXlzIGluIGVhY2ggb2JqZWN0XG4gICAgICAgICAgZm9yIChsZXQgb2JqZWN0S2V5IG9mIE9iamVjdC5rZXlzKGdlb0pzb24uZmVhdHVyZXNbZmVhdElkeF0ucHJvcGVydGllc1trZXldKSkge1xuICAgICAgICAgICAgLy8gSWYga2V5IGlzIGRhdGVcbiAgICAgICAgICAgIGlmIChtb21lbnQob2JqZWN0S2V5KS5pc1ZhbGlkKCkpIHtcbiAgICAgICAgICAgICAgdmFyIGRhdGUgPSBtb21lbnQob2JqZWN0S2V5KS5mb3JtYXQoVGltZURpbWVuc2lvbi5EQVRFX0ZPUk1BVCk7XG4gICAgICAgICAgICAgIC8vIFN0YWNrIG51bWJlciBvZiBjYXNlcyBpbiB0aGlzIGNpdHkgb3IgY291bnR5XG4gICAgICAgICAgICAgIGlmICghdG90YWxDYXNlQnlEYXRlW2RhdGVdKSB7XG4gICAgICAgICAgICAgICAgdG90YWxDYXNlQnlEYXRlW2RhdGVdID0gcGFyc2VJbnQoZ2VvSnNvbi5mZWF0dXJlc1tmZWF0SWR4XS5wcm9wZXJ0aWVzW2tleV1bb2JqZWN0S2V5XSk7XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAodG90YWxDYXNlQnlEYXRlW2RhdGVdID4gMCkge1xuICAgICAgICAgICAgICAgIHRvdGFsQ2FzZUJ5RGF0ZVtkYXRlXSArPSBwYXJzZUludChnZW9Kc29uLmZlYXR1cmVzW2ZlYXRJZHhdLnByb3BlcnRpZXNba2V5XVtvYmplY3RLZXldKTtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChvYmplY3RLZXkgPT09ICdDb3VudHJ5L1JlZ2lvbicpIHtcbiAgICAgICAgICAgICAgdG90YWxDYXNlQnlEYXRlW29iamVjdEtleV0gPSBnZW9Kc29uLmZlYXR1cmVzW2ZlYXRJZHhdLnByb3BlcnRpZXNba2V5XVtvYmplY3RLZXldO1xuICAgICAgICAgICAgfVxuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gQWRkIHRvdGFsIG51bWJlciBvZiBjYXNlcyBpbiBzY29wZSBvZiBwcm9wZXJ0aWVzXG4gICAgICBmb3IgKGxldCBjb3VudHJ5IGluIHRvdGFsQ2FzZUJ5RGF0ZSkge1xuICAgICAgICBnZW9Kc29uLmZlYXR1cmVzW2ZlYXRJZHhdLnByb3BlcnRpZXNbY291bnRyeV0gPSB0b3RhbENhc2VCeURhdGVbY291bnRyeV07XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQWJzdHJhY3RSZWFkZXIgfSBmcm9tIFwiLi9BYnN0cmFjdFJlYWRlclwiO1xuaW1wb3J0ICogYXMgd29ybGRDb3VudHJpZXNHZW9KU09ORmlsZSBmcm9tICcuLi9kaXN0L3NyYy93b3JsZC1jb3VudHJpZXMuanNvbic7XG5cbmV4cG9ydCBjbGFzcyBXb3JsZEZpbGVSZWFkZXIgZXh0ZW5kcyBBYnN0cmFjdFJlYWRlciB7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ09ORklSTUVEX0ZJTEVfU0NPUEUgPSAndGltZV9zZXJpZXNfY292aWQxOV9jb25maXJtZWRfZ2xvYmFsLmNzdic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgREVBVEhTX0ZJTEVfU0NPUEUgPSAndGltZV9zZXJpZXNfY292aWQxOV9kZWF0aHNfZ2xvYmFsLmNzdic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkVDT1ZFUkVEX0ZJTEVfU0NPUEUgPSAndGltZV9zZXJpZXNfY292aWQxOV9yZWNvdmVyZWRfZ2xvYmFsLmNzdic7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKCkge1xuICAgIHN1cGVyKCk7XG4gIH1cblxuICBwdWJsaWMgaW5pdCgpOiB2b2lkIHtcbiAgICB2YXIgY29uZmlybWVkOiBhbnkgPSB0aGlzLnJlYWRDc3YoQWJzdHJhY3RSZWFkZXIuQkFTRV9VUkwgKyBXb3JsZEZpbGVSZWFkZXIuQ09ORklSTUVEX0ZJTEVfU0NPUEUpO1xuICAgIHZhciBkZWF0aHM6IGFueSA9IHRoaXMucmVhZENzdihBYnN0cmFjdFJlYWRlci5CQVNFX1VSTCArIFdvcmxkRmlsZVJlYWRlci5ERUFUSFNfRklMRV9TQ09QRSk7XG4gICAgdmFyIHJlY292ZXJlZDogYW55ID0gdGhpcy5yZWFkQ3N2KEFic3RyYWN0UmVhZGVyLkJBU0VfVVJMICsgV29ybGRGaWxlUmVhZGVyLlJFQ09WRVJFRF9GSUxFX1NDT1BFKTtcbiAgICBcbiAgICBjb25maXJtZWQgPSB0aGlzLnJlcGxhY2VUZXh0KGNvbmZpcm1lZCwgJ0dyZWVubGFuZCxEZW5tYXJrJywgJ0dyZWVubGFuZCxHcmVlbmxhbmQnKTtcbiAgICBkZWF0aHMgPSB0aGlzLnJlcGxhY2VUZXh0KGRlYXRocywgJ0dyZWVubGFuZCxEZW5tYXJrJywgJ0dyZWVubGFuZCxHcmVlbmxhbmQnKTtcbiAgICByZWNvdmVyZWQgPSB0aGlzLnJlcGxhY2VUZXh0KHJlY292ZXJlZCwgJ0dyZWVubGFuZCxEZW5tYXJrJywgJ0dyZWVubGFuZCxHcmVlbmxhbmQnKTtcblxuICAgIGNvbmZpcm1lZCA9IHRoaXMuY3N2VG9PYmplY3QoY29uZmlybWVkKTtcbiAgICBkZWF0aHMgPSB0aGlzLmNzdlRvT2JqZWN0KGRlYXRocyk7XG4gICAgcmVjb3ZlcmVkID0gdGhpcy5jc3ZUb09iamVjdChyZWNvdmVyZWQpO1xuICAgIFxuICAgIGNvbmZpcm1lZCA9IHRoaXMucmVwbGFjZUNvbHVtblZhbHVlcyhjb25maXJtZWQpO1xuICAgIGRlYXRocyA9IHRoaXMucmVwbGFjZUNvbHVtblZhbHVlcyhkZWF0aHMpO1xuICAgIHJlY292ZXJlZCA9IHRoaXMucmVwbGFjZUNvbHVtblZhbHVlcyhyZWNvdmVyZWQpO1xuXG4gICAgY29uZmlybWVkID0gdGhpcy5zdWJ0cmFjdFJlY292ZXJlZEZyb21Db25maXJtZWQoY29uZmlybWVkLCByZWNvdmVyZWQpO1xuICAgIFxuICAgIHN1cGVyLnNldENvbmZpcm1lZEdlb0pzb24odGhpcy5zZXRQcm9wZXJ0eVZhbHVlcyhjb25maXJtZWQsIHRoaXMubG9hZEdlb0pzb25GaWxlKCkpKTtcbiAgICBzdXBlci5zZXREZWF0aHNHZW9Kc29uKHRoaXMuc2V0UHJvcGVydHlWYWx1ZXMoZGVhdGhzLCB0aGlzLmxvYWRHZW9Kc29uRmlsZSgpKSk7XG4gICAgc3VwZXIuc2V0UmVjb3ZlcmVkR2VvSnNvbih0aGlzLnNldFByb3BlcnR5VmFsdWVzKHJlY292ZXJlZCwgdGhpcy5sb2FkR2VvSnNvbkZpbGUoKSkpO1xuICB9XG5cbiAgcHVibGljIGxvYWRHZW9Kc29uRmlsZSgpOiBvYmplY3Qge1xuICAgIHJldHVybiBKU09OLnBhcnNlKEpTT04uc3RyaW5naWZ5KHdvcmxkQ291bnRyaWVzR2VvSlNPTkZpbGUuZGVmYXVsdCkpO1xuICB9XG5cbiAgcHVibGljIHJlcGxhY2VDb2x1bW5WYWx1ZXMoY3N2OiBhbnkpOiBvYmplY3Qge1xuICAgIGNvbnN0IGRpY3QgPSB7XG4gICAgICBcIkJ1cm1hXCI6IFwiTXlhbm1hclwiLFxuICAgICAgXCJDemVjaGlhXCI6IFwiQ3plY2ggUmVwdWJsaWNcIixcbiAgICAgIFwiS29yZWEsIFNvdXRoXCI6IFwiU291dGggS29yZWFcIixcbiAgICAgIFwiQ29uZ28gKEtpbnNoYXNhKVwiOiBcIkRlbW9jcmF0aWMgUmVwdWJsaWMgb2YgdGhlIENvbmdvXCIsXG4gICAgICBcIkNvbmdvIChCcmF6emF2aWxsZSlcIjogXCJSZXB1YmxpYyBvZiB0aGUgQ29uZ29cIixcbiAgICAgIFwiVGFpd2FuKlwiOiAnVGFpd2FuJyxcbiAgICAgIFwib2NjdXBpZWQgUGFsZXN0aW5pYW4gdGVycml0b3J5XCI6IFwiUGFsZXN0aW5lXCIsXG4gICAgICBcIkJhaGFtYXMsIFRoZVwiOiBcIkJhaGFtYXNcIixcbiAgICAgIFwiR2FtYmlhLCBUaGVcIjogXCJHYW1iaWFcIixcbiAgICB9XG4gICAgcmV0dXJuIHN1cGVyLnJlcGxhY2VDb2x1bW5WYWx1ZXMoY3N2LCBkaWN0LCAnQ291bnRyeS9SZWdpb24nKTtcbiAgfVxuXG4gIC8vIEFwcGVuZCBjc3YgZGF0YSB0byBnZW9qc29uXG4gIHB1YmxpYyBzZXRQcm9wZXJ0eVZhbHVlcyhjc3Y6IGFueSwgZ2VvSnNvbjogb2JqZWN0KTogb2JqZWN0IHtcbiAgICByZXR1cm4gc3VwZXIuc2V0UHJvcGVydHlWYWx1ZXMoY3N2LCBnZW9Kc29uLCAnQ291bnRyeS9SZWdpb24nLCAnbmFtZScpO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgQWJzdHJhY3RSZWFkZXIgfSBmcm9tIFwiLi9BYnN0cmFjdFJlYWRlclwiO1xuaW1wb3J0ICogYXMgdXNTdGF0ZXNHZW9KU09ORmlsZSBmcm9tICcuLi9kaXN0L3NyYy91cy1zdGF0ZXMuanNvbic7XG5cbmV4cG9ydCBjbGFzcyBTdGF0ZXNGaWxlUmVhZGVyIGV4dGVuZHMgQWJzdHJhY3RSZWFkZXIge1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTkZJUk1FRF9GSUxFX1NDT1BFOiBzdHJpbmcgPSAndGltZV9zZXJpZXNfY292aWQxOV9jb25maXJtZWRfVVMuY3N2JztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBERUFUSFNfRklMRV9TQ09QRTogc3RyaW5nID0gJ3RpbWVfc2VyaWVzX2NvdmlkMTlfZGVhdGhzX1VTLmNzdic7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0VOVEVSX09GX0xBVF9LRVk6IHN0cmluZyA9IFwiTGF0XCI7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgQ0VOVEVSX09GX0xPTkdfS0VZOiBzdHJpbmcgPSBcIkxvbmdcIjtcblxuICBwdWJsaWMgY29uc3RydWN0b3IoKSB7XG4gICAgc3VwZXIoKTtcbiAgfVxuXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHZhciBjZW50ZXJPZkxhdExvbmcgPSB0aGlzLnJlYWRDc3YoXCJodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vamF5aW5zZi9jb3JvbmFtYXAvbWFzdGVyL2Rpc3Qvc3JjL3N0YXRlcy5jc3ZcIik7XG4gICAgXG4gICAgdmFyIGNvbmZpcm1lZDogYW55ID0gdGhpcy5yZWFkQ3N2KEFic3RyYWN0UmVhZGVyLkJBU0VfVVJMICsgU3RhdGVzRmlsZVJlYWRlci5DT05GSVJNRURfRklMRV9TQ09QRSk7XG4gICAgdmFyIGRlYXRoczogYW55ID0gdGhpcy5yZWFkQ3N2KEFic3RyYWN0UmVhZGVyLkJBU0VfVVJMICsgU3RhdGVzRmlsZVJlYWRlci5ERUFUSFNfRklMRV9TQ09QRSk7XG4gICAgXG4gICAgY29uZmlybWVkID0gdGhpcy5yZXBsYWNlQ29sdW1uS2V5cyhjb25maXJtZWQpO1xuICAgIGRlYXRocyA9IHRoaXMucmVwbGFjZUNvbHVtbktleXMoZGVhdGhzKTtcblxuICAgIGNvbmZpcm1lZCA9IHRoaXMuY3N2VG9PYmplY3QoY29uZmlybWVkKTtcbiAgICBkZWF0aHMgPSB0aGlzLmNzdlRvT2JqZWN0KGRlYXRocyk7XG4gICAgXG4gICAgY29uZmlybWVkID0gdGhpcy5yZXBsYWNlQ29sdW1uVmFsdWVzKGNvbmZpcm1lZCk7XG4gICAgZGVhdGhzID0gdGhpcy5yZXBsYWNlQ29sdW1uVmFsdWVzKGRlYXRocyk7XG4gICAgXG4gICAgc3VwZXIuc2V0Q29uZmlybWVkR2VvSnNvbih0aGlzLnNldFByb3BlcnR5VmFsdWVzKGNvbmZpcm1lZCwgdGhpcy5sb2FkR2VvSnNvbkZpbGUoKSkpO1xuICAgIHN1cGVyLnNldERlYXRoc0dlb0pzb24odGhpcy5zZXRQcm9wZXJ0eVZhbHVlcyhkZWF0aHMsIHRoaXMubG9hZEdlb0pzb25GaWxlKCkpKTtcblxuICAgIHRoaXMuc2V0Q29uZmlybWVkR2VvSnNvbih0aGlzLmFkZENlbnRlck9mQ29yZGluYXRlcyh0aGlzLmNzdlRvT2JqZWN0KGNlbnRlck9mTGF0TG9uZyksIHRoaXMuZ2V0Q29uZmlybWVkR2VvSnNvbigpKSk7XG4gICAgdGhpcy5zZXREZWF0aHNHZW9Kc29uKHRoaXMuYWRkQ2VudGVyT2ZDb3JkaW5hdGVzKHRoaXMuY3N2VG9PYmplY3QoY2VudGVyT2ZMYXRMb25nKSwgdGhpcy5nZXREZWF0aHNHZW9Kc29uKCkpKTtcbiAgfVxuICBcbiAgLy8gTG9hZCBnZW9qc29uIGZpbGUgYW5kIHJldHVybiBjb3B5IG9mIGdlb2pzb24gb2JqZWN0XG4gIHB1YmxpYyBsb2FkR2VvSnNvbkZpbGUoKTogb2JqZWN0IHtcbiAgICByZXR1cm4gSlNPTi5wYXJzZShKU09OLnN0cmluZ2lmeSh1c1N0YXRlc0dlb0pTT05GaWxlLmRlZmF1bHQpKTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlQ29sdW1uS2V5cyhjc3Y6IGFueSk6IHN0cmluZyB7XG4gICAgY29uc3QgZGljdCA9IHtcbiAgICAgIFwiUHJvdmluY2VfU3RhdGVcIjogXCJQcm92aW5jZS9TdGF0ZVwiLFxuICAgICAgXCJDb3VudHJ5X1JlZ2lvblwiOiBcIkNvdW50cnkvUmVnaW9uXCIsXG4gICAgICBcIkxvbmdfXCI6IFwiTG9uZ1wiLFxuICAgIH1cbiAgICByZXR1cm4gc3VwZXIucmVwbGFjZUNvbHVtbktleXMoY3N2LCBkaWN0KTtcbiAgfVxuXG4gIHB1YmxpYyByZXBsYWNlQ29sdW1uVmFsdWVzKGNzdjogYW55KTogb2JqZWN0IHtcbiAgICBjb25zdCBkaWN0ID0ge31cbiAgICByZXR1cm4gc3VwZXIucmVwbGFjZUNvbHVtblZhbHVlcyhjc3YsIGRpY3QsICdQcm92aW5jZS9TdGF0ZScpO1xuICB9XG5cbiAgcHVibGljIHNldFByb3BlcnR5VmFsdWVzKGNzdjogYW55LCBnZW9Kc29uOiBvYmplY3QpOiBvYmplY3Qge1xuICAgIHJldHVybiBzdXBlci5zZXRQcm9wZXJ0eVZhbHVlcyhjc3YsIGdlb0pzb24sICdQcm92aW5jZS9TdGF0ZScsICduYW1lJyk7XG4gIH1cblxuICBwdWJsaWMgYWRkQ2VudGVyT2ZDb3JkaW5hdGVzKGNzdjogYW55LCBnZW9Kc29uOiBhbnkpOiBvYmplY3Qge1xuICAgIGZvciAobGV0IGZlYXR1cmUgb2YgZ2VvSnNvbi5mZWF0dXJlcykge1xuICAgICAgZm9yIChsZXQgY3N2Um93IG9mIGNzdikge1xuICAgICAgICBpZiAoZmVhdHVyZS5pZCA9PSBjc3ZSb3cuc3RhdGUpIHtcbiAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXNbU3RhdGVzRmlsZVJlYWRlci5DRU5URVJfT0ZfTEFUX0tFWV0gPSBjc3ZSb3cubGF0aXR1ZGU7XG4gICAgICAgICAgZmVhdHVyZS5wcm9wZXJ0aWVzW1N0YXRlc0ZpbGVSZWFkZXIuQ0VOVEVSX09GX0xPTkdfS0VZXSA9IGNzdlJvdy5sb25naXR1ZGU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmV0dXJuIGdlb0pzb247XG4gIH1cbn1cbiIsIlwidXNlIHN0cmljdFwiO1xuXG5pbXBvcnQgeyBNYXAgfSBmcm9tIFwiLi9NYXBcIjtcbmltcG9ydCB7IElUZW1wb3JhbCB9IGZyb20gXCIuL0lUZW1wb3JhbFwiO1xuaW1wb3J0IHsgQWJzdHJhY3RSZWFkZXIgfSBmcm9tIFwiLi9BYnN0cmFjdFJlYWRlclwiO1xuXG5leHBvcnQgY2xhc3MgQ2lyY2xlTWFya2VyIGltcGxlbWVudHMgSVRlbXBvcmFsIHtcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBQQU5FX05BTUU6IHN0cmluZyA9ICdjaXJjbGUtbWFya2VyLXBhbmUnO1xuICBwdWJsaWMgc3RhdGljIHJlYWRvbmx5IENPTE9SOiBzdHJpbmcgPSAnI2E4MDgwOCc7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgT1BBQ0lUWTogbnVtYmVyID0gMC4yNztcbiAgcHVibGljIHN0YXRpYyByZWFkb25seSBCT1JERVJfV0VJR0hUOiBudW1iZXIgPSAwLjQ7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkFESVVTX05PSVNFOiBudW1iZXIgPSAwLjAwMTU7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkFESVVTX01BWDogbnVtYmVyID0gMjA7XG4gIHB1YmxpYyBzdGF0aWMgcmVhZG9ubHkgUkFESVVTX01JTjogbnVtYmVyID0gMi41O1xuICBwcml2YXRlIGNpcmNsZXM6IG9iamVjdFtdO1xuICBwcml2YXRlIGZpbGVSZWFkZXI6IEFic3RyYWN0UmVhZGVyO1xuICBwcml2YXRlIGNvbmZpcm1lZEZlYXR1cmVzOiBvYmplY3Q7XG5cbiAgcHVibGljIGNvbnN0cnVjdG9yKGZpbGVSZWFkZXI6IEFic3RyYWN0UmVhZGVyLCBjb25maXJtZWRGZWF0dXJlczogb2JqZWN0KSB7XG4gICAgdGhpcy5maWxlUmVhZGVyID0gZmlsZVJlYWRlcjtcbiAgICB0aGlzLmNvbmZpcm1lZEZlYXR1cmVzID0gY29uZmlybWVkRmVhdHVyZXM7XG4gIH1cblxuICBwdWJsaWMgdXBkYXRlKGdlb0pzb246IGFueSkge1xuICAgIE1hcC5nZXRJbnN0YW5jZSgpLmdldE1hcCgpLmNyZWF0ZVBhbmUoQ2lyY2xlTWFya2VyLlBBTkVfTkFNRSk7XG5cbiAgICAvLyBDbGVhciBhbGwgY2lyY2xlc1xuICAgIHRoaXMuY2lyY2xlcyA9IFtdO1xuXG4gICAgLy8gQ3JlYXRlIGNpcmNsZXNcbiAgICB2YXIgZmVhdHVyZXM6IG9iamVjdFtdO1xuICAgIC8vIEV4dHJhY3QgYSBwb3J0aW9uIG9mIHN0YXRlcyBmcm9tIGVuZCBvZiBnZW9qc29uXG4gICAgZmVhdHVyZXMgPSBnZW9Kc29uLmZlYXR1cmVzLnNsaWNlKDEpLnNsaWNlKC01MCk7XG4gICAgdGhpcy5jcmVhdGVDaXJjbGVNYXJrZXJzKGZlYXR1cmVzLCBmYWxzZSk7XG4gICAgXG4gICAgLy8gRXh0cmFjdCBhbGwgZXhjZXB0IHN0YXRlcyBhdCB0aGUgZW5kIG9mIGdlb2pzb25cbiAgICBmZWF0dXJlcyA9IGdlb0pzb24uZmVhdHVyZXMuc2xpY2UoMCwgLTUwKTtcbiAgICB0aGlzLmNyZWF0ZUNpcmNsZU1hcmtlcnMoZmVhdHVyZXMsIHRydWUpO1xuICAgIFxuICAgIHJldHVybiBMLmxheWVyR3JvdXAodGhpcy5jaXJjbGVzKS5hZGRUbyhNYXAuZ2V0SW5zdGFuY2UoKS5nZXRNYXAoKSk7XG4gIH1cblxuICBwdWJsaWMgZ2V0Q2lyY2xlcygpOiBhbnlbXSB7XG4gICAgcmV0dXJuIHRoaXMuY2lyY2xlcztcbiAgfVxuXG4gIHB1YmxpYyBjcmVhdGVUb29sdGlwKG1hcmtlcjogYW55LCBjb250ZW50VGV4dDogc3RyaW5nLCBvcHRpb25zPzoge30pOiBhbnkge1xuICAgIHZhciB0b29sdGlwID0gTC50b29sdGlwKG9wdGlvbnMpLnNldENvbnRlbnQoY29udGVudFRleHQpO1xuICAgIC8vIEF0dGFjaCB0b29sdGlwIHRvIGNpcmNsZSBtYXJrZXJcbiAgICBtYXJrZXIuYmluZFRvb2x0aXAodG9vbHRpcCkub3BlblBvcHVwKCk7XG4gICAgcmV0dXJuIHRvb2x0aXA7XG4gIH1cblxuICBwcml2YXRlIGNyZWF0ZUNpcmNsZU1hcmtlcnMoZmVhdHVyZXM6IGFueSwgcmVjdXJzaXZlOiBib29sZWFuID0gZmFsc2UpOiB2b2lkIHtcbiAgICBpZiAoIWZlYXR1cmVzIHx8IGZlYXR1cmVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIGlmICghcmVjdXJzaXZlKSB7XG4gICAgICBmb3IgKGxldCBzdGF0ZUlkeCA9IDAsIGxlbiA9IE9iamVjdC5rZXlzKGZlYXR1cmVzKS5sZW5ndGg7IHN0YXRlSWR4IDwgbGVuOyBzdGF0ZUlkeCsrKSB7XG4gICAgICAgIHZhciBzdGF0ZSA9IGZlYXR1cmVzW3N0YXRlSWR4XS5wcm9wZXJ0aWVzO1xuICAgICAgICB2YXIgY3VycmVudFRpbWUgPSBNYXAuZ2V0SW5zdGFuY2UoKS5nZXRUaW1lRGltZW5zaW9uKCkuZ2V0Q3VycmVudFRpbWUoKTtcbiAgICAgICAgdmFyIG51bU9mRGVhdGhzQXRDdXJyZW50VGltZSA9IHN0YXRlW2N1cnJlbnRUaW1lXTtcbiAgICAgICAgaWYgKG51bU9mRGVhdGhzQXRDdXJyZW50VGltZSAmJiBudW1PZkRlYXRoc0F0Q3VycmVudFRpbWUgPiAwKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIC8vIENyZWF0ZSBjaXJjbGUgbWFya2VyXG4gICAgICAgICAgICB2YXIgY2lyY2xlTWFya2VyID0gTC5jaXJjbGVNYXJrZXIoW3N0YXRlWydMYXQnXSwgc3RhdGVbJ0xvbmcnXV0sIHtcbiAgICAgICAgICAgICAgICByYWRpdXM6IHRoaXMuc2V0UmFkaXVzKG51bU9mRGVhdGhzQXRDdXJyZW50VGltZSAqIENpcmNsZU1hcmtlci5SQURJVVNfTk9JU0UpLFxuICAgICAgICAgICAgICAgIGNvbG9yOiBDaXJjbGVNYXJrZXIuQ09MT1IsXG4gICAgICAgICAgICAgICAgZmlsbE9wYWNpdHk6IENpcmNsZU1hcmtlci5PUEFDSVRZLFxuICAgICAgICAgICAgICAgIHdlaWdodDogQ2lyY2xlTWFya2VyLkJPUkRFUl9XRUlHSFQsXG4gICAgICAgICAgICAgICAgcGFuZTogQ2lyY2xlTWFya2VyLlBBTkVfTkFNRSxcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgKTtcbiAgICAgICAgICAgIC8vIEdldCBnZW9ncmFwaGljIG5hbWVcbiAgICAgICAgICAgIHZhciBjb3VudHJ5TmFtZSA9IHN0YXRlWydDb3VudHJ5L1JlZ2lvbiddID8gc3RhdGVbJ0NvdW50cnkvUmVnaW9uJ10gOiAnJztcbiAgICAgICAgICAgIHZhciBzdGF0ZU5hbWUgPSBzdGF0ZVsnUHJvdmluY2UvU3RhdGUnXSA/IHN0YXRlWydQcm92aW5jZS9TdGF0ZSddIDogc3RhdGVbJ25hbWUnXTtcbiAgICAgICAgICAgIGlmICghc3RhdGVOYW1lKSB7XG4gICAgICAgICAgICAgIHN0YXRlTmFtZSA9ICcnO1xuICAgICAgICAgICAgfSBlbHNlIGlmIChjb3VudHJ5TmFtZSkge1xuICAgICAgICAgICAgICAvLyBBZGQgYSBjb21tYSBiZXR3ZWVuIGNvdW50cnkgbmFtZSBhbmQgc3RhdGUgbmFtZSBpZiBhIGdlb2dyYXBoaWNhbCBhcmVhIGhhcyBib3RoXG4gICAgICAgICAgICAgIHN0YXRlTmFtZSArPSAnLCAnO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgLy8gU2hvdyBudW1iZXIgb2YgY29uZmlybWVkIGNhc2VzXG4gICAgICAgICAgICB2YXIgbnVtT2ZDb25maXJtZWRDYXNlcyA9IHRoaXMuZmlsZVJlYWRlci5nZXROdW1iZXJPZkNhc2UodGhpcy5jb25maXJtZWRGZWF0dXJlcywgY3VycmVudFRpbWUsIFtzdGF0ZVsnTGF0J10sIHN0YXRlWydMb25nJ11dKTtcblxuICAgICAgICAgICAgdGhpcy5jcmVhdGVUb29sdGlwKGNpcmNsZU1hcmtlcixcbiAgICAgICAgICAgICAgJzxiPicgKyBzdGF0ZU5hbWUgKyBjb3VudHJ5TmFtZSArICc8L2I+PGJyLz4nICtcbiAgICAgICAgICAgICAgJ0NvbmZpcm1lZDogJyArIG51bU9mQ29uZmlybWVkQ2FzZXMgKyAnPGJyLz4nICtcbiAgICAgICAgICAgICAgJ0RlYXRoczogJyArIG51bU9mRGVhdGhzQXRDdXJyZW50VGltZVxuICAgICAgICAgICAgLCB7XG4gICAgICAgICAgICAgIG9wYWNpdHk6IDFcbiAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgdGhpcy5jaXJjbGVzLnB1c2goY2lyY2xlTWFya2VyKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7IH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICB2YXIgY291bnRyeUZlYXR1cmVzID0gW107XG4gICAgICBmb3IgKGxldCBjb3VudHJ5SWR4ID0gMCwgbGVuID0gT2JqZWN0LmtleXMoZmVhdHVyZXMpLmxlbmd0aDsgY291bnRyeUlkeCA8IGxlbjsgY291bnRyeUlkeCsrKSB7XG4gICAgICAgIGZvciAobGV0IHN0YXRlSWR4ID0gMCwgbGVuID0gT2JqZWN0LmtleXMoZmVhdHVyZXNbY291bnRyeUlkeF0ucHJvcGVydGllcykubGVuZ3RoOyBzdGF0ZUlkeCA8IGxlbjsgc3RhdGVJZHgrKykge1xuICAgICAgICAgIHZhciBzdGF0ZSA9IGZlYXR1cmVzW2NvdW50cnlJZHhdLnByb3BlcnRpZXNbc3RhdGVJZHhdO1xuICAgICAgICAgIGlmIChzdGF0ZSAmJiB0eXBlb2Ygc3RhdGUgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgICB2YXIgZmVhdHVyZTogYW55ID0ge307XG4gICAgICAgICAgICBmZWF0dXJlLnByb3BlcnRpZXMgPSBzdGF0ZTtcbiAgICAgICAgICAgIGNvdW50cnlGZWF0dXJlcy5wdXNoKGZlYXR1cmUpO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICB0aGlzLmNyZWF0ZUNpcmNsZU1hcmtlcnMoY291bnRyeUZlYXR1cmVzLCBmYWxzZSk7XG4gICAgfVxuICB9XG5cbiAgcHJpdmF0ZSBzZXRSYWRpdXMocmFkaXVzOiBudW1iZXIpOiBudW1iZXIge1xuICAgIGlmIChyYWRpdXMgPiBDaXJjbGVNYXJrZXIuUkFESVVTX01BWCkge1xuICAgICAgcmV0dXJuIENpcmNsZU1hcmtlci5SQURJVVNfTUFYO1xuICAgIH0gZWxzZSBpZiAocmFkaXVzIDwgQ2lyY2xlTWFya2VyLlJBRElVU19NSU4pIHtcbiAgICAgIHJldHVybiBDaXJjbGVNYXJrZXIuUkFESVVTX01JTjtcbiAgICB9XG4gICAgcmV0dXJuIHJhZGl1cztcbiAgfVxufVxuIiwiXCJ1c2Ugc3RyaWN0XCI7XG5cbmltcG9ydCB7IE1hcCB9IGZyb20gXCIuL01hcFwiO1xuaW1wb3J0IHsgQWJzdHJhY3RSZWFkZXIgfSBmcm9tIFwiLi9BYnN0cmFjdFJlYWRlclwiO1xuXG5leHBvcnQgY2xhc3MgVmlldyB7XG4gIHByaXZhdGUgdGFibGU6IGFueTtcbiAgcHJpdmF0ZSBjb25maXJtZWRXb3JsZEZlYXR1cmVzOiBhbnk7XG4gIHByaXZhdGUgZGVhdGhzV29ybGRGZWF0dXJlczogYW55O1xuICBwcml2YXRlIGNvbmZpcm1lZFVTRmVhdHVyZXM6IGFueTtcbiAgcHJpdmF0ZSBkZWF0aHNVU0ZlYXR1cmVzOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlybWVkR2VvSnNvbjogYW55LCBkZWF0aHNHZW9Kc29uOiBhbnkpIHtcbiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGFibGUnKS5zdHlsZS52aXNpYmlsaXR5ID0gJ3Zpc2libGUnO1xuXG4gICAgdGhpcy5jb25maXJtZWRXb3JsZEZlYXR1cmVzID0gY29uZmlybWVkR2VvSnNvbi5mZWF0dXJlcy5zbGljZSgwLCAtNTApO1xuICAgIHRoaXMuZGVhdGhzV29ybGRGZWF0dXJlcyA9IGRlYXRoc0dlb0pzb24uZmVhdHVyZXMuc2xpY2UoMCwgLTUwKTtcblxuICAgIHRoaXMuY29uZmlybWVkVVNGZWF0dXJlcyA9IGNvbmZpcm1lZEdlb0pzb24uZmVhdHVyZXMuc2xpY2UoMSkuc2xpY2UoLTUwKTtcbiAgICB0aGlzLmRlYXRoc1VTRmVhdHVyZXMgPSBkZWF0aHNHZW9Kc29uLmZlYXR1cmVzLnNsaWNlKDEpLnNsaWNlKC01MCk7XG4gIH1cbiAgXG4gIHB1YmxpYyBpbml0KCk6IHZvaWQge1xuICAgIHRoaXMudGFibGUgPSAkKCcjZGF0YXRhYmxlcycpLkRhdGFUYWJsZSh7XG4gICAgICBhdXRvV2lkdGg6IGZhbHNlLFxuICAgICAgY29sdW1uRGVmczogW3tcbiAgICAgICAgdGFyZ2V0czogLTEsXG4gICAgICAgIGNsYXNzTmFtZTogJ2FsbCdcbiAgICAgIH1dLFxuICAgICAgcGFnaW5nOiBmYWxzZSxcbiAgICAgIFxuICAgICAgXCJjb2x1bW5zXCI6IFtcdFxuICAgICAgICB7IFwiZGF0YVwiOiBcImNvdW50cnlcIiB9LFxuICAgICAgICB7IFwiZGF0YVwiOiBcImNvbmZpcm1lZFwiIH0sXG4gICAgICAgIHsgXCJkYXRhXCI6IFwiZGVhdGhcIiB9LFxuICAgICAgXSxcblxuICAgICAgLy9hZGRzIGljb25zXG4gICAgICBkb206ICdCZnJ0aXAnLFxuICAgICAgYnV0dG9uczogW1xuICAgICAgICB7IGV4dGVuZDogJ2Nzdkh0bWw1JywgdGV4dDogJzxpIGNsYXNzPVwiZmFyIGZhLWZpbGUtYWx0XCI+PC9pPicsIHRpdGxlQXR0cjogJ0NTVicgfSxcbiAgICAgICAgeyBleHRlbmQ6ICdleGNlbEh0bWw1JywgdGV4dDogJzxpIGNsYXNzPVwiZmFyIGZhLWZpbGUtZXhjZWxcIj48L2k+JywgdGl0bGVBdHRyOiAnRXhjZWwnIH0sXG4gICAgICAgIHsgZXh0ZW5kOiAncGRmSHRtbDUnLCB0ZXh0OiAnPGkgY2xhc3M9XCJmYXIgZmEtZmlsZS1wZGZcIj48L2k+JywgdGl0bGVBdHRyOiAnUERGJyB9LFxuICAgICAgXVxuICAgIH0pO1xuICB9XG4gIFxuICBwdWJsaWMgdXBkYXRlKCk6IG9iamVjdCB7XG4gICAgdGhpcy50YWJsZS5jbGVhcigpLmRyYXcoKTtcbiAgICAvL2V4dHJhY3RzIGFsbCBleGNlcHQgc3RhdGVzIGF0IHRoZSBlbmQgb2YgZ2VvanNvblxuICAgIHRoaXMuY3JlYXRlUm93cyh0aGlzLmNvbmZpcm1lZFdvcmxkRmVhdHVyZXMsIHRoaXMuZGVhdGhzV29ybGRGZWF0dXJlcyk7XG4gICAgdGhpcy5jcmVhdGVSb3dzKHRoaXMuY29uZmlybWVkVVNGZWF0dXJlcywgdGhpcy5kZWF0aHNVU0ZlYXR1cmVzLCB0cnVlKTtcbiAgICByZXR1cm4gTC5sYXllckdyb3VwKCkuYWRkVG8oTWFwLmdldEluc3RhbmNlKCkuZ2V0TWFwKCkpO1xuICB9XG5cbiAgcHVibGljIGNyZWF0ZVJvd3MoY29uZmlybWVkRmVhdHVyZXM6IG9iamVjdCwgZGVhdGhzRmVhdHVyZXM6IG9iamVjdCwgaXNTdGF0ZXM6IGJvb2xlYW4gPSBmYWxzZSk6IGFueSB7XG4gICAgdmFyIGN1cnJlbnRUaW1lID0gTWFwLmdldEluc3RhbmNlKCkuZ2V0VGltZURpbWVuc2lvbigpLmdldEN1cnJlbnRUaW1lKCk7XG4gICAgdmFyIGNvbmZpcm1lZCA9IEFic3RyYWN0UmVhZGVyLmdldFByb3BlcnR5KGNvbmZpcm1lZEZlYXR1cmVzLCBbJ0NvdW50cnkvUmVnaW9uJywgY3VycmVudFRpbWVdKTtcbiAgICB2YXIgZGVhdGhzID0gQWJzdHJhY3RSZWFkZXIuZ2V0UHJvcGVydHkoZGVhdGhzRmVhdHVyZXMsIFtjdXJyZW50VGltZV0pO1xuXG4gICAgaWYgKGlzU3RhdGVzKSB7XG4gICAgICB0aGlzLmNyZWF0ZU9uZVJvdyhbXG4gICAgICAgIHtcbiAgICAgICAgICAnY291bnRyeSc6IGNvbmZpcm1lZFsnQ291bnRyeS9SZWdpb24nXVswXSxcbiAgICAgICAgICAnY29uZmlybWVkJzogdGhpcy5zdW1BcnJheUl0ZW1zKGNvbmZpcm1lZFtjdXJyZW50VGltZV0pLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgICAgJ2RlYXRoJzogdGhpcy5zdW1BcnJheUl0ZW1zKGRlYXRoc1tjdXJyZW50VGltZV0pLnRvTG9jYWxlU3RyaW5nKCksXG4gICAgICAgIH1cbiAgICAgIF0pO1xuICAgICAgcmV0dXJuO1xuICAgIH1cblxuICAgIHZhciBkYXRhc2V0OiBvYmplY3RbXSA9IFtdO1xuICAgIGZvciAobGV0IGkgaW4gY29uZmlybWVkWydDb3VudHJ5L1JlZ2lvbiddKSB7XG4gICAgICAvLyBGaXggRGF0YVRhYmxlcyB3YXJuaW5nOiB0YWJsZSBpZD1kYXRhdGFibGVzIC0gUmVxdWVzdGVkIHVua25vd24gcGFyYW1ldGVyICdjb25maXJtZWQnIGZvciByb3cgMCwgY29sdW1uIDEuIEZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IHRoaXMgZXJyb3IsIHBsZWFzZSBzZWUgaHR0cDovL2RhdGF0YWJsZXMubmV0L3RuLzRcbiAgICAgIHRyeSB7XG4gICAgICAgIGRhdGFzZXQucHVzaCh7XG4gICAgICAgICAgJ2NvdW50cnknOiBjb25maXJtZWRbJ0NvdW50cnkvUmVnaW9uJ11baV0sXG4gICAgICAgICAgJ2NvbmZpcm1lZCc6IGNvbmZpcm1lZFtjdXJyZW50VGltZV1baV0udG9Mb2NhbGVTdHJpbmcoKSxcbiAgICAgICAgICAnZGVhdGgnOiBkZWF0aHNbY3VycmVudFRpbWVdW2ldLnRvTG9jYWxlU3RyaW5nKClcbiAgICAgICAgfSk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIC8vIFRocm93IGV4Y2VwdGlvbiBpZiB0b2RheSdzIGRpc2Vhc2UgZGF0YSBpcyBub3QgZm91bmQgb24gcHVibGljXG4gICAgICAgIGNvbnNvbGUubG9nKGUpO1xuICAgICAgfVxuICAgIH1cbiAgICB0aGlzLmNyZWF0ZU9uZVJvdyhkYXRhc2V0KTtcbiAgfVxuXG4gIHByaXZhdGUgY3JlYXRlT25lUm93KGRhdGFzZXQ6IG9iamVjdFtdKTogdm9pZCB7IFxuICAgIHRoaXMudGFibGUucm93cy5hZGQoZGF0YXNldCkuZHJhdygpO1xuICB9XG5cbiAgcHJpdmF0ZSBzdW1BcnJheUl0ZW1zKGFycjogbnVtYmVyW10pOiBudW1iZXIge1xuICAgIHZhciBzdW0gPSAwO1xuICAgIGZvciAobGV0IGkgaW4gYXJyKSB7XG4gICAgICBzdW0gKz0gYXJyW2ldO1xuICAgIH1cbiAgICByZXR1cm4gc3VtO1xuICB9XG59XG4iLCJcInVzZSBzdHJpY3RcIjtcblxuaW1wb3J0IHsgTWFwIH0gZnJvbSBcIi4vTWFwXCI7XG5pbXBvcnQgeyBEYXRhYmFzZSB9IGZyb20gXCIuL0RhdGFiYXNlXCI7XG5pbXBvcnQgeyBBYnN0cmFjdFJlYWRlciB9IGZyb20gXCIuL0Fic3RyYWN0UmVhZGVyXCI7XG5pbXBvcnQgeyBXb3JsZEZpbGVSZWFkZXIgfSBmcm9tIFwiLi9Xb3JsZFJlYWRlclwiO1xuaW1wb3J0IHsgU3RhdGVzRmlsZVJlYWRlciB9IGZyb20gXCIuL1N0YXRlc1JlYWRlclwiO1xuaW1wb3J0IHsgVGltZURpbWVuc2lvbiB9IGZyb20gXCIuL1RpbWVEaW1lbnNpb25cIjtcbmltcG9ydCB7IElUZW1wb3JhbCB9IGZyb20gXCIuL0lUZW1wb3JhbFwiO1xuaW1wb3J0IHsgQ2hvcm9wbGV0aCB9IGZyb20gXCIuL0Nob3JvcGxldGhcIjtcbmltcG9ydCB7IENpcmNsZU1hcmtlciB9IGZyb20gXCIuL0NpcmNsZU1hcmtlclwiO1xuaW1wb3J0IHsgVmlldyB9IGZyb20gXCIuL1ZpZXdcIjtcbm1vbWVudC5zdXBwcmVzc0RlcHJlY2F0aW9uV2FybmluZ3MgPSB0cnVlO1xuXG4vLyBNZWFzdXJlIHRoZSB0aW1lIGl0IHRha2VzIHRvIGZ1bGx5IGxvYWQgcGFnZVxuY29uc3QgdDAgPSBwZXJmb3JtYW5jZS5ub3coKTtcblxudmFyIG1hcCA9IE1hcC5nZXRJbnN0YW5jZSgpO1xubWFwLmluaXQoKTtcbnZhciB3b3JsZEZyOiBBYnN0cmFjdFJlYWRlciA9IG5ldyBXb3JsZEZpbGVSZWFkZXIoKTtcbnZhciB1c0ZyOiBBYnN0cmFjdFJlYWRlciA9IG5ldyBTdGF0ZXNGaWxlUmVhZGVyKCk7XG52YXIgZGIgPSBuZXcgRGF0YWJhc2UoKTtcbmRiLmlzRXhwaXJlZCgpLnRoZW4oZnVuY3Rpb24odmFsdWUpIHtcbiAgaWYgKHZhbHVlKSB7XG4gICAgd29ybGRGci5pbml0KCk7XG4gICAgdXNGci5pbml0KCk7XG4gICAgZGIuY2xlYXIoKTtcbiAgICBkYi5zZXRFeHBpcnlUaW1lKCk7XG4gICAgZGIuc2V0SXRlbShEYXRhYmFzZS5LRVlfQ09ORklSTUVEX0dFT0pTT04sIEFic3RyYWN0UmVhZGVyLm1lcmdlR2VvSnNvbnMod29ybGRGci5nZXRDb25maXJtZWRHZW9Kc29uKCksIHVzRnIuZ2V0Q29uZmlybWVkR2VvSnNvbigpKSk7XG4gICAgZGIuc2V0SXRlbShEYXRhYmFzZS5LRVlfREVBVEhTX0dFT0pTT04sIEFic3RyYWN0UmVhZGVyLm1lcmdlR2VvSnNvbnMod29ybGRGci5nZXREZWF0aHNHZW9Kc29uKCksIHVzRnIuZ2V0RGVhdGhzR2VvSnNvbigpKSk7XG4gIH1cbn0pLnRoZW4oKCkgPT4ge1xuICBkYi5nZXRJdGVtKERhdGFiYXNlLktFWV9DT05GSVJNRURfR0VPSlNPTikudGhlbihmdW5jdGlvbihtZXJnZWRDb25maXJtZWRHZW9Kc29uKSB7XG4gICAgdmFyIGNob3JvcGxldGggPSBuZXcgQ2hvcm9wbGV0aCgpO1xuICAgIHZhciB0aW1lZGltZW5zaW9uID0gbmV3IFRpbWVEaW1lbnNpb24oQXJyYXk8SVRlbXBvcmFsPihjaG9yb3BsZXRoKSk7XG4gICAgbWFwLmF0dGFjaFRpbWVEaW1lbnNpb24odGltZWRpbWVuc2lvbik7XG4gICAgdGltZWRpbWVuc2lvbi51cGRhdGUobWVyZ2VkQ29uZmlybWVkR2VvSnNvbik7XG5cbiAgICBkYi5nZXRJdGVtKERhdGFiYXNlLktFWV9ERUFUSFNfR0VPSlNPTikudGhlbihmdW5jdGlvbihtZXJnZWREZWF0aHNHZW9Kc29uKSB7XG4gICAgICB2YXIgY2lyY2xlTWFya2VyID0gbmV3IENpcmNsZU1hcmtlcih3b3JsZEZyLCBtZXJnZWRDb25maXJtZWRHZW9Kc29uLmZlYXR1cmVzKTtcbiAgICAgIHRpbWVkaW1lbnNpb24gPSBuZXcgVGltZURpbWVuc2lvbihBcnJheTxJVGVtcG9yYWw+KGNpcmNsZU1hcmtlcikpO1xuICAgICAgbWFwLmF0dGFjaFRpbWVEaW1lbnNpb24odGltZWRpbWVuc2lvbik7XG4gICAgICB0aW1lZGltZW5zaW9uLnVwZGF0ZShtZXJnZWREZWF0aHNHZW9Kc29uKTtcblxuICAgICAgdmFyIHZpZXcgPSBuZXcgVmlldyhtZXJnZWRDb25maXJtZWRHZW9Kc29uLCBtZXJnZWREZWF0aHNHZW9Kc29uKTtcbiAgICAgIHZpZXcuaW5pdCgpO1xuICAgICAgdGltZWRpbWVuc2lvbiA9IG5ldyBUaW1lRGltZW5zaW9uKEFycmF5PElUZW1wb3JhbD4odmlldykpO1xuICAgICAgbWFwLmF0dGFjaFRpbWVEaW1lbnNpb24odGltZWRpbWVuc2lvbik7XG4gICAgICB0aW1lZGltZW5zaW9uLnVwZGF0ZSgpO1xuICAgICAgXG4gICAgICAvLyBSZW1vdmUgc3Bpbm5lciB3aGVuIHRoZSBwYWdlIGlzIGZ1bGx5IGxvYWRlZFxuICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3NwaW5uZXInKS5vdXRlckhUTUwgPSAnJztcblxuICAgICAgY29uc29sZS5sb2coYFBlcmZvcm1hbmNlOiAke3BlcmZvcm1hbmNlLm5vdygpIC0gdDB9IG1pbGxpc2Vjb25kcy5gKTtcbiAgICB9KTtcbiAgfSk7XG59KTtcbiJdLCJzb3VyY2VSb290IjoiIn0=