import { a as tickStep, n as precisionPrefix_default, r as precisionFixed_default, s as bisector, t as precisionRound_default } from "./precisionRound-CnHPY_5v.js";
import { i as formatSpecifier, n as formatPrefix, r as locale_default, t as format$1 } from "./defaultLocale-BpsHxBd7.js";
import { C as timeMinute, N as millisecond, S as utcHour, T as second, _ as utcSunday, a as formatLocale, b as utcDay, c as timeMonth, i as utcParse, l as utcMonth, n as timeParse, o as timeYear, p as timeSunday, r as utcFormat, s as utcYear, t as timeFormat, v as timeDay, w as utcMinute, x as timeHour } from "./defaultLocale-DoeErsX2.js";
function accessor(o, P, F) {
  return o.fields = P || [], o.fname = F, o;
}
function accessorName(o) {
  return o == null ? null : o.fname;
}
function accessorFields(o) {
  return o == null ? null : o.fields;
}
function getter(o) {
  return o.length === 1 ? get1(o[0]) : getN(o);
}
var get1 = (o) => function(P) {
  return P[o];
}, getN = (o) => {
  let P = o.length;
  return function(F) {
    for (let I = 0; I < P; ++I) F = F[o[I]];
    return F;
  };
};
function error(o) {
  throw Error(o);
}
function splitAccessPath(o) {
  let P = [], F = o.length, I = null, L = 0, R = "", z, B, V;
  o += "";
  function H() {
    P.push(R + o.substring(z, B)), R = "", z = B + 1;
  }
  for (z = B = 0; B < F; ++B) if (V = o[B], V === "\\") R += o.substring(z, B++), z = B;
  else if (V === I) H(), I = null, L = -1;
  else if (I) continue;
  else z === L && V === '"' || z === L && V === "'" ? (z = B + 1, I = V) : V === "." && !L ? B > z ? H() : z = B + 1 : V === "[" ? (B > z && H(), L = z = B + 1) : V === "]" && (L || error("Access path missing open bracket: " + o), L > 0 && H(), L = 0, z = B + 1);
  return L && error("Access path missing closing bracket: " + o), I && error("Access path missing closing quote: " + o), B > z && (B++, H()), P;
}
function field(o, P, F) {
  let I = splitAccessPath(o);
  return o = I.length === 1 ? I[0] : o, accessor((F && F.get || getter)(I), [o], P || o);
}
var id = field("id"), identity = accessor((o) => o, [], "identity"), zero = accessor(() => 0, [], "zero"), one = accessor(() => 1, [], "one"), truthy = accessor(() => true, [], "true"), falsy = accessor(() => false, [], "false"), DisallowedObjectProperties = /* @__PURE__ */ new Set([...Object.getOwnPropertyNames(Object.prototype).filter((o) => typeof Object.prototype[o] == "function"), "__proto__"]);
function log$1(o, P, F) {
  let I = [P].concat([].slice.call(F));
  console[o].apply(console, I);
}
var None = 0, Error$1 = 1, Warn = 2, Info = 3, Debug = 4;
function logger(o, P, F = log$1) {
  let I = o || 0;
  return {
    level(o2) {
      return arguments.length ? (I = +o2, this) : I;
    },
    error() {
      return I >= 1 && F(P || "error", "ERROR", arguments), this;
    },
    warn() {
      return I >= 2 && F(P || "warn", "WARN", arguments), this;
    },
    info() {
      return I >= 3 && F(P || "log", "INFO", arguments), this;
    },
    debug() {
      return I >= 4 && F(P || "log", "DEBUG", arguments), this;
    }
  };
}
var isArray = Array.isArray;
function isObject(o) {
  return o === Object(o);
}
var isLegalKey = (o) => o !== "__proto__";
function mergeConfig(...o) {
  return o.reduce((o2, P) => {
    for (let F in P) if (F === "signals") o2.signals = mergeNamed(o2.signals, P.signals);
    else {
      let I = F === "legend" ? { layout: 1 } : F === "style" ? true : null;
      writeConfig(o2, F, P[F], I);
    }
    return o2;
  }, {});
}
function writeConfig(o, P, F, I) {
  if (!isLegalKey(P)) return;
  let L, R;
  if (isObject(F) && !isArray(F)) for (L in R = isObject(o[P]) ? o[P] : o[P] = {}, F) I && (I === true || I[L]) ? writeConfig(R, L, F[L]) : isLegalKey(L) && (R[L] = F[L]);
  else o[P] = F;
}
function mergeNamed(o, P) {
  if (o == null) return P;
  let F = {}, I = [];
  function L(o2) {
    F[o2.name] || (F[o2.name] = 1, I.push(o2));
  }
  return P.forEach(L), o.forEach(L), I;
}
function peek(o) {
  return o[o.length - 1];
}
function toNumber(o) {
  return o == null || o === "" ? null : +o;
}
var exp = (o) => (P) => o * Math.exp(P), log = (o) => (P) => Math.log(o * P), symlog = (o) => (P) => Math.sign(P) * Math.log1p(Math.abs(P / o)), symexp = (o) => (P) => Math.sign(P) * Math.expm1(Math.abs(P)) * o, pow = (o) => (P) => P < 0 ? -((-P) ** +o) : P ** +o;
function pan(o, P, F, I) {
  let L = F(o[0]), R = F(peek(o)), z = (R - L) * P;
  return [I(L - z), I(R - z)];
}
function panLinear(o, P) {
  return pan(o, P, toNumber, identity);
}
function panLog(o, P) {
  var F = Math.sign(o[0]);
  return pan(o, P, log(F), exp(F));
}
function panPow(o, P, F) {
  return pan(o, P, pow(F), pow(1 / F));
}
function panSymlog(o, P, F) {
  return pan(o, P, symlog(F), symexp(F));
}
function zoom(o, P, F, I, L) {
  let R = I(o[0]), z = I(peek(o)), B = P == null ? (R + z) / 2 : I(P);
  return [L(B + (R - B) * F), L(B + (z - B) * F)];
}
function zoomLinear(o, P, F) {
  return zoom(o, P, F, toNumber, identity);
}
function zoomLog(o, P, F) {
  let I = Math.sign(o[0]);
  return zoom(o, P, F, log(I), exp(I));
}
function zoomPow(o, P, F, I) {
  return zoom(o, P, F, pow(I), pow(1 / I));
}
function zoomSymlog(o, P, F, I) {
  return zoom(o, P, F, symlog(I), symexp(I));
}
function quarter(o) {
  return 1 + ~~(new Date(o).getMonth() / 3);
}
function utcquarter(o) {
  return 1 + ~~(new Date(o).getUTCMonth() / 3);
}
function array(o) {
  return o == null ? [] : isArray(o) ? o : [o];
}
function clampRange(o, P, F) {
  let I = o[0], L = o[1], R;
  return L < I && (R = L, L = I, I = R), R = L - I, R >= F - P ? [P, F] : [I = Math.min(Math.max(I, P), F - R), I + R];
}
function isFunction(o) {
  return typeof o == "function";
}
var DESCENDING = "descending";
function compare(o, P, F) {
  F || (F = {}), P = array(P) || [];
  let I = [], L = [], R = {}, z = F.comparator || comparator;
  return array(o).forEach((o2, z2) => {
    o2 != null && (I.push(P[z2] === DESCENDING ? -1 : 1), L.push(o2 = isFunction(o2) ? o2 : field(o2, null, F)), (accessorFields(o2) || []).forEach((o3) => R[o3] = 1));
  }), L.length === 0 ? null : accessor(z(L, I), Object.keys(R));
}
var ascending = (o, P) => (o < P || o == null) && P != null ? -1 : (o > P || P == null) && o != null ? 1 : (P = P instanceof Date ? +P : P, o = o instanceof Date ? +o : o) !== o && P === P ? -1 : P !== P && o === o ? 1 : 0, comparator = (o, P) => o.length === 1 ? compare1(o[0], P[0]) : compareN(o, P, o.length), compare1 = (o, P) => function(F, I) {
  return ascending(o(F), o(I)) * P;
}, compareN = (o, P, F) => (P.push(0), function(I, L) {
  let R, z = 0, B = -1;
  for (; z === 0 && ++B < F; ) R = o[B], z = ascending(R(I), R(L));
  return z * P[B];
});
function constant(o) {
  return isFunction(o) ? o : () => o;
}
function debounce(o, P) {
  let F;
  return (I) => {
    F && clearTimeout(F), F = setTimeout(() => (P(I), F = null), o);
  };
}
function extend(o) {
  for (let P, F, I = 1, L = arguments.length; I < L; ++I) for (F in P = arguments[I], P) o[F] = P[F];
  return o;
}
function extent(o, P) {
  let F = 0, I, L, R, z;
  if (o && (I = o.length)) if (P == null) {
    for (L = o[F]; F < I && (L == null || L !== L); L = o[++F]) ;
    for (R = z = L; F < I; ++F) L = o[F], L != null && (L < R && (R = L), L > z && (z = L));
  } else {
    for (L = P(o[F]); F < I && (L == null || L !== L); L = P(o[++F])) ;
    for (R = z = L; F < I; ++F) L = P(o[F]), L != null && (L < R && (R = L), L > z && (z = L));
  }
  return [R, z];
}
function extentIndex(o, P) {
  let F = o.length, I = -1, L, R, z, B, V;
  if (P == null) {
    for (; ++I < F; ) if (R = o[I], R != null && R >= R) {
      L = z = R;
      break;
    }
    if (I === F) return [-1, -1];
    for (B = V = I; ++I < F; ) R = o[I], R != null && (L > R && (L = R, B = I), z < R && (z = R, V = I));
  } else {
    for (; ++I < F; ) if (R = P(o[I], I, o), R != null && R >= R) {
      L = z = R;
      break;
    }
    if (I === F) return [-1, -1];
    for (B = V = I; ++I < F; ) R = P(o[I], I, o), R != null && (L > R && (L = R, B = I), z < R && (z = R, V = I));
  }
  return [B, V];
}
function has(o, P) {
  return Object.hasOwn(o, P);
}
var NULL = {};
function fastmap(o) {
  let P = {}, F;
  function I(o2) {
    return has(P, o2) && P[o2] !== NULL;
  }
  let L = {
    size: 0,
    empty: 0,
    object: P,
    has: I,
    get(o2) {
      return I(o2) ? P[o2] : void 0;
    },
    set(o2, F2) {
      return I(o2) || (++L.size, P[o2] === NULL && --L.empty), P[o2] = F2, this;
    },
    delete(o2) {
      return I(o2) && (--L.size, ++L.empty, P[o2] = NULL), this;
    },
    clear() {
      L.size = L.empty = 0, L.object = P = {};
    },
    test(o2) {
      return arguments.length ? (F = o2, L) : F;
    },
    clean() {
      let o2 = {}, I2 = 0;
      for (let L2 in P) {
        let R = P[L2];
        R !== NULL && (!F || !F(R)) && (o2[L2] = R, ++I2);
      }
      L.size = I2, L.empty = 0, L.object = P = o2;
    }
  };
  return o && Object.keys(o).forEach((P2) => {
    L.set(P2, o[P2]);
  }), L;
}
function flush(o, P, F, I, L, R) {
  if (!F && F !== 0) return R;
  let z = +F, B = o[0], V = peek(o), H;
  V < B && (H = B, B = V, V = H), H = Math.abs(P - B);
  let U = Math.abs(V - P);
  return H < U && H <= z ? I : U <= z ? L : R;
}
function inherits(o, P, F) {
  let I = o.prototype = Object.create(P.prototype);
  return Object.defineProperty(I, "constructor", {
    value: o,
    writable: true,
    enumerable: true,
    configurable: true
  }), extend(I, F);
}
function inrange(o, P, F, I) {
  let L = P[0], R = P[P.length - 1], z;
  return L > R && (z = L, L = R, R = z), F = F === void 0 || F, I = I === void 0 || I, (F ? L <= o : L < o) && (I ? o <= R : o < R);
}
function isBoolean$1(o) {
  return typeof o == "boolean";
}
function isDate$1(o) {
  return Object.prototype.toString.call(o) === "[object Date]";
}
function isIterable(o) {
  return o && isFunction(o[Symbol.iterator]);
}
function isNumber$1(o) {
  return typeof o == "number";
}
function isRegExp(o) {
  return Object.prototype.toString.call(o) === "[object RegExp]";
}
function isString(o) {
  return typeof o == "string";
}
function key(o, P, F) {
  o && (o = P ? array(o).map((o2) => o2.replace(/\\(.)/g, "$1")) : array(o));
  let I = o && o.length, L = F && F.get || getter, R = (o2) => L(P ? [o2] : splitAccessPath(o2)), z;
  if (!I) z = function() {
    return "";
  };
  else if (I === 1) {
    let P2 = R(o[0]);
    z = function(o2) {
      return "" + P2(o2);
    };
  } else {
    let P2 = o.map(R);
    z = function(o2) {
      let F2 = "" + P2[0](o2), L2 = 0;
      for (; ++L2 < I; ) F2 += "|" + P2[L2](o2);
      return F2;
    };
  }
  return accessor(z, o, "key");
}
function lerp(o, P) {
  let F = o[0], I = peek(o), L = +P;
  return L ? L === 1 ? I : F + L * (I - F) : F;
}
var DEFAULT_MAX_SIZE = 1e4;
function lruCache(o) {
  o = +o || DEFAULT_MAX_SIZE;
  let P, F, I, L = () => {
    P = {}, F = {}, I = 0;
  }, R = (L2, R2) => (++I > o && (F = P, P = {}, I = 1), P[L2] = R2);
  return L(), {
    clear: L,
    has: (o2) => has(P, o2) || has(F, o2),
    get: (o2) => has(P, o2) ? P[o2] : has(F, o2) ? R(o2, F[o2]) : void 0,
    set: (o2, F2) => has(P, o2) ? P[o2] = F2 : R(o2, F2)
  };
}
function merge(o, P, F, I) {
  let L = P.length, R = F.length;
  if (!R) return P;
  if (!L) return F;
  let z = I || new P.constructor(L + R), B = 0, V = 0, H = 0;
  for (; B < L && V < R; ++H) z[H] = o(P[B], F[V]) > 0 ? F[V++] : P[B++];
  for (; B < L; ++B, ++H) z[H] = P[B];
  for (; V < R; ++V, ++H) z[H] = F[V];
  return z;
}
function repeat(o, P) {
  let F = "";
  for (; --P >= 0; ) F += o;
  return F;
}
function pad$1(o, P, F, I) {
  let L = F || " ", R = o + "", z = P - R.length;
  return z <= 0 ? R : I === "left" ? repeat(L, z) + R : I === "center" ? repeat(L, ~~(z / 2)) + R + repeat(L, Math.ceil(z / 2)) : R + repeat(L, z);
}
function span(o) {
  return o && peek(o) - o[0] || 0;
}
function $(o) {
  return isArray(o) ? `[${o.map((o2) => o2 === null ? "null" : $(o2))}]` : isObject(o) || isString(o) ? JSON.stringify(o).replaceAll("\u2028", "\\u2028").replaceAll("\u2029", "\\u2029") : o;
}
function toBoolean(o) {
  return o == null || o === "" ? null : !o || o === "false" || o === "0" ? false : !!o;
}
var defaultParser = (o) => isNumber$1(o) || isDate$1(o) ? o : Date.parse(o);
function toDate(o, P) {
  return P || (P = defaultParser), o == null || o === "" ? null : P(o);
}
function toString(o) {
  return o == null || o === "" ? null : o + "";
}
function toSet(o) {
  let P = {}, F = o.length;
  for (let I = 0; I < F; ++I) P[o[I]] = true;
  return P;
}
function truncate(o, P, F, I) {
  let L = I ?? "\u2026", R = o + "", z = R.length, B = Math.max(0, P - L.length);
  return z <= P ? R : F === "left" ? L + R.slice(z - B) : F === "center" ? R.slice(0, Math.ceil(B / 2)) + L + R.slice(z - ~~(B / 2)) : R.slice(0, B) + L;
}
function visitArray(o, P, F) {
  if (o) if (P) {
    let I = o.length;
    for (let L = 0; L < I; ++L) {
      let I2 = P(o[L]);
      I2 && F(I2, L, o);
    }
  } else o.forEach(F);
}
var EOL = {}, EOF = {}, QUOTE = 34, NEWLINE = 10, RETURN = 13;
function objectConverter(o) {
  return Function("d", "return {" + o.map(function(o2, P) {
    return JSON.stringify(o2) + ": d[" + P + '] || ""';
  }).join(",") + "}");
}
function customConverter(o, P) {
  var F = objectConverter(o);
  return function(I, L) {
    return P(F(I), L, o);
  };
}
function inferColumns(o) {
  var P = /* @__PURE__ */ Object.create(null), F = [];
  return o.forEach(function(o2) {
    for (var I in o2) I in P || F.push(P[I] = I);
  }), F;
}
function pad(o, P) {
  var F = o + "", I = F.length;
  return I < P ? Array(P - I + 1).join(0) + F : F;
}
function formatYear(o) {
  return o < 0 ? "-" + pad(-o, 6) : o > 9999 ? "+" + pad(o, 6) : pad(o, 4);
}
function formatDate(o) {
  var P = o.getUTCHours(), F = o.getUTCMinutes(), I = o.getUTCSeconds(), L = o.getUTCMilliseconds();
  return isNaN(o) ? "Invalid Date" : formatYear(o.getUTCFullYear(), 4) + "-" + pad(o.getUTCMonth() + 1, 2) + "-" + pad(o.getUTCDate(), 2) + (L ? "T" + pad(P, 2) + ":" + pad(F, 2) + ":" + pad(I, 2) + "." + pad(L, 3) + "Z" : I ? "T" + pad(P, 2) + ":" + pad(F, 2) + ":" + pad(I, 2) + "Z" : F || P ? "T" + pad(P, 2) + ":" + pad(F, 2) + "Z" : "");
}
function dsv_default(o) {
  var P = /* @__PURE__ */ RegExp('["' + o + "\n\r]"), F = o.charCodeAt(0);
  function I(o2, P2) {
    var F2, I2, R2 = L(o2, function(o3, L2) {
      if (F2) return F2(o3, L2 - 1);
      I2 = o3, F2 = P2 ? customConverter(o3, P2) : objectConverter(o3);
    });
    return R2.columns = I2 || [], R2;
  }
  function L(o2, P2) {
    var I2 = [], L2 = o2.length, R2 = 0, z2 = 0, B2, V2 = L2 <= 0, H2 = false;
    o2.charCodeAt(L2 - 1) === NEWLINE && --L2, o2.charCodeAt(L2 - 1) === RETURN && --L2;
    function U2() {
      if (V2) return EOF;
      if (H2) return H2 = false, EOL;
      var P3, I3 = R2, z3;
      if (o2.charCodeAt(I3) === QUOTE) {
        for (; R2++ < L2 && o2.charCodeAt(R2) !== QUOTE || o2.charCodeAt(++R2) === QUOTE; ) ;
        return (P3 = R2) >= L2 ? V2 = true : (z3 = o2.charCodeAt(R2++)) === NEWLINE ? H2 = true : z3 === RETURN && (H2 = true, o2.charCodeAt(R2) === NEWLINE && ++R2), o2.slice(I3 + 1, P3 - 1).replace(/""/g, '"');
      }
      for (; R2 < L2; ) {
        if ((z3 = o2.charCodeAt(P3 = R2++)) === NEWLINE) H2 = true;
        else if (z3 === RETURN) H2 = true, o2.charCodeAt(R2) === NEWLINE && ++R2;
        else if (z3 !== F) continue;
        return o2.slice(I3, P3);
      }
      return V2 = true, o2.slice(I3, L2);
    }
    for (; (B2 = U2()) !== EOF; ) {
      for (var W = []; B2 !== EOL && B2 !== EOF; ) W.push(B2), B2 = U2();
      P2 && (W = P2(W, z2++)) == null || I2.push(W);
    }
    return I2;
  }
  function R(P2, F2) {
    return P2.map(function(P3) {
      return F2.map(function(o2) {
        return U(P3[o2]);
      }).join(o);
    });
  }
  function z(P2, F2) {
    return F2 ?? (F2 = inferColumns(P2)), [F2.map(U).join(o)].concat(R(P2, F2)).join("\n");
  }
  function B(o2, P2) {
    return P2 ?? (P2 = inferColumns(o2)), R(o2, P2).join("\n");
  }
  function V(o2) {
    return o2.map(H).join("\n");
  }
  function H(P2) {
    return P2.map(U).join(o);
  }
  function U(o2) {
    return o2 == null ? "" : o2 instanceof Date ? formatDate(o2) : P.test(o2 += "") ? '"' + o2.replace(/"/g, '""') + '"' : o2;
  }
  return {
    parse: I,
    parseRows: L,
    format: z,
    formatBody: B,
    formatRows: V,
    formatRow: H,
    formatValue: U
  };
}
function identity_default(o) {
  return o;
}
function transform_default(o) {
  if (o == null) return identity_default;
  var P, F, I = o.scale[0], L = o.scale[1], R = o.translate[0], z = o.translate[1];
  return function(o2, B) {
    B || (P = F = 0);
    var V = 2, H = o2.length, U = Array(H);
    for (U[0] = (P += o2[0]) * I + R, U[1] = (F += o2[1]) * L + z; V < H; ) U[V] = o2[V], ++V;
    return U;
  };
}
function reverse_default(o, P) {
  for (var F, I = o.length, L = I - P; L < --I; ) F = o[L], o[L++] = o[I], o[I] = F;
}
function feature_default(o, P) {
  return typeof P == "string" && (P = o.objects[P]), P.type === "GeometryCollection" ? {
    type: "FeatureCollection",
    features: P.geometries.map(function(P2) {
      return feature(o, P2);
    })
  } : feature(o, P);
}
function feature(o, P) {
  var F = P.id, I = P.bbox, L = P.properties == null ? {} : P.properties, R = object(o, P);
  return F == null && I == null ? {
    type: "Feature",
    properties: L,
    geometry: R
  } : I == null ? {
    type: "Feature",
    id: F,
    properties: L,
    geometry: R
  } : {
    type: "Feature",
    id: F,
    bbox: I,
    properties: L,
    geometry: R
  };
}
function object(o, P) {
  var F = transform_default(o.transform), I = o.arcs;
  function L(o2, P2) {
    P2.length && P2.pop();
    for (var L2 = I[o2 < 0 ? ~o2 : o2], R2 = 0, z2 = L2.length; R2 < z2; ++R2) P2.push(F(L2[R2], R2));
    o2 < 0 && reverse_default(P2, z2);
  }
  function R(o2) {
    return F(o2);
  }
  function z(o2) {
    for (var P2 = [], F2 = 0, I2 = o2.length; F2 < I2; ++F2) L(o2[F2], P2);
    return P2.length < 2 && P2.push(P2[0]), P2;
  }
  function B(o2) {
    for (var P2 = z(o2); P2.length < 4; ) P2.push(P2[0]);
    return P2;
  }
  function V(o2) {
    return o2.map(B);
  }
  function H(o2) {
    var P2 = o2.type, F2;
    switch (P2) {
      case "GeometryCollection":
        return {
          type: P2,
          geometries: o2.geometries.map(H)
        };
      case "Point":
        F2 = R(o2.coordinates);
        break;
      case "MultiPoint":
        F2 = o2.coordinates.map(R);
        break;
      case "LineString":
        F2 = z(o2.arcs);
        break;
      case "MultiLineString":
        F2 = o2.arcs.map(z);
        break;
      case "Polygon":
        F2 = V(o2.arcs);
        break;
      case "MultiPolygon":
        F2 = o2.arcs.map(V);
        break;
      default:
        return null;
    }
    return {
      type: P2,
      coordinates: F2
    };
  }
  return H(P);
}
function stitch_default(o, P) {
  var F = {}, I = {}, L = {}, R = [], z = -1;
  P.forEach(function(F2, I2) {
    var L2 = o.arcs[F2 < 0 ? ~F2 : F2], R2;
    L2.length < 3 && !L2[1][0] && !L2[1][1] && (R2 = P[++z], P[z] = F2, P[I2] = R2);
  }), P.forEach(function(o2) {
    var P2 = B(o2), F2 = P2[0], R2 = P2[1], z2, V2;
    if (z2 = L[F2]) if (delete L[z2.end], z2.push(o2), z2.end = R2, V2 = I[R2]) {
      delete I[V2.start];
      var H = V2 === z2 ? z2 : z2.concat(V2);
      I[H.start = z2.start] = L[H.end = V2.end] = H;
    } else I[z2.start] = L[z2.end] = z2;
    else if (z2 = I[R2]) if (delete I[z2.start], z2.unshift(o2), z2.start = F2, V2 = L[F2]) {
      delete L[V2.end];
      var U = V2 === z2 ? z2 : V2.concat(z2);
      I[U.start = V2.start] = L[U.end = z2.end] = U;
    } else I[z2.start] = L[z2.end] = z2;
    else z2 = [o2], I[z2.start = F2] = L[z2.end = R2] = z2;
  });
  function B(P2) {
    var F2 = o.arcs[P2 < 0 ? ~P2 : P2], I2 = F2[0], L2;
    return o.transform ? (L2 = [0, 0], F2.forEach(function(o2) {
      L2[0] += o2[0], L2[1] += o2[1];
    })) : L2 = F2[F2.length - 1], P2 < 0 ? [L2, I2] : [I2, L2];
  }
  function V(o2, P2) {
    for (var I2 in o2) {
      var L2 = o2[I2];
      delete P2[L2.start], delete L2.start, delete L2.end, L2.forEach(function(o3) {
        F[o3 < 0 ? ~o3 : o3] = 1;
      }), R.push(L2);
    }
  }
  return V(L, I), V(I, L), P.forEach(function(o2) {
    F[o2 < 0 ? ~o2 : o2] || R.push([o2]);
  }), R;
}
function mesh_default(o) {
  return object(o, meshArcs.apply(this, arguments));
}
function meshArcs(o, P, F) {
  var I, L, R;
  if (arguments.length > 1) I = extractArcs(o, P, F);
  else for (L = 0, I = Array(R = o.arcs.length); L < R; ++L) I[L] = L;
  return {
    type: "MultiLineString",
    arcs: stitch_default(o, I)
  };
}
function extractArcs(o, P, F) {
  var I = [], L = [], R;
  function z(o2) {
    var P2 = o2 < 0 ? ~o2 : o2;
    (L[P2] || (L[P2] = [])).push({
      i: o2,
      g: R
    });
  }
  function B(o2) {
    o2.forEach(z);
  }
  function V(o2) {
    o2.forEach(B);
  }
  function H(o2) {
    o2.forEach(V);
  }
  function U(o2) {
    switch (R = o2, o2.type) {
      case "GeometryCollection":
        o2.geometries.forEach(U);
        break;
      case "LineString":
        B(o2.arcs);
        break;
      case "MultiLineString":
      case "Polygon":
        V(o2.arcs);
        break;
      case "MultiPolygon":
        H(o2.arcs);
        break;
    }
  }
  return U(P), L.forEach(F == null ? function(o2) {
    I.push(o2[0].i);
  } : function(o2) {
    F(o2[0].g, o2[o2.length - 1].g) && I.push(o2[0].i);
  }), I;
}
var YEAR = "year", QUARTER = "quarter", MONTH = "month", WEEK = "week", DATE = "date", DAY = "day", DAYOFYEAR = "dayofyear", HOURS = "hours", MINUTES = "minutes", SECONDS = "seconds", MILLISECONDS = "milliseconds", TIME_UNITS = [
  YEAR,
  QUARTER,
  MONTH,
  WEEK,
  DATE,
  "day",
  DAYOFYEAR,
  HOURS,
  MINUTES,
  SECONDS,
  MILLISECONDS
], UNITS = TIME_UNITS.reduce((o, P, F) => (o[P] = 1 + F, o), {});
function timeUnits(o) {
  let P = array(o).slice(), F = {};
  return P.length || error("Missing time unit."), P.forEach((o2) => {
    has(UNITS, o2) ? F[o2] = 1 : error(`Invalid time unit: ${o2}.`);
  }), (F.week || F.day ? 1 : 0) + (F.quarter || F.month || F.date ? 1 : 0) + (F.dayofyear ? 1 : 0) > 1 && error(`Incompatible time units: ${o}`), P.sort((o2, P2) => UNITS[o2] - UNITS[P2]), P;
}
var defaultSpecifiers = {
  [YEAR]: "%Y ",
  [QUARTER]: "Q%q ",
  [MONTH]: "%b ",
  [DATE]: "%d ",
  [WEEK]: "W%U ",
  day: "%a ",
  [DAYOFYEAR]: "%j ",
  [HOURS]: "%H:00",
  [MINUTES]: "00:%M",
  [SECONDS]: ":%S",
  [MILLISECONDS]: ".%L",
  [`${YEAR}-${MONTH}`]: "%Y-%m ",
  [`${YEAR}-${MONTH}-${DATE}`]: "%Y-%m-%d ",
  [`${HOURS}-${MINUTES}`]: "%H:%M"
};
function timeUnitSpecifier(o, P) {
  let F = extend({}, defaultSpecifiers, P), I = timeUnits(o), L = I.length, R = "", z = 0, B, V;
  for (z = 0; z < L; ) for (B = I.length; B > z; --B) if (V = I.slice(z, B).join("-"), F[V] != null) {
    R += F[V], z = B;
    break;
  }
  return R.trim();
}
var t0 = /* @__PURE__ */ new Date();
function localYear(o) {
  return t0.setFullYear(o), t0.setMonth(0), t0.setDate(1), t0.setHours(0, 0, 0, 0), t0;
}
function dayofyear(o) {
  return localDayOfYear(new Date(o));
}
function week(o) {
  return localWeekNum(new Date(o));
}
function localDayOfYear(o) {
  return timeDay.count(localYear(o.getFullYear()) - 1, o);
}
function localWeekNum(o) {
  return timeSunday.count(localYear(o.getFullYear()) - 1, o);
}
function localFirst(o) {
  return localYear(o).getDay();
}
function localDate(o, P, F, I, L, R, z) {
  if (0 <= o && o < 100) {
    let B = new Date(-1, P, F, I, L, R, z);
    return B.setFullYear(o), B;
  }
  return new Date(o, P, F, I, L, R, z);
}
function utcdayofyear(o) {
  return utcDayOfYear(new Date(o));
}
function utcweek(o) {
  return utcWeekNum(new Date(o));
}
function utcDayOfYear(o) {
  let P = Date.UTC(o.getUTCFullYear(), 0, 1);
  return utcDay.count(P - 1, o);
}
function utcWeekNum(o) {
  let P = Date.UTC(o.getUTCFullYear(), 0, 1);
  return utcSunday.count(P - 1, o);
}
function utcFirst(o) {
  return t0.setTime(Date.UTC(o, 0, 1)), t0.getUTCDay();
}
function utcDate(o, P, F, I, L, R, z) {
  if (0 <= o && o < 100) {
    let o2 = new Date(Date.UTC(-1, P, F, I, L, R, z));
    return o2.setUTCFullYear(F.y), o2;
  }
  return new Date(Date.UTC(o, P, F, I, L, R, z));
}
function floor(o, P, F, I, L) {
  let R = P || 1, z = peek(o), B = (o2, P2, L2) => (L2 || (L2 = o2), getUnit(F[L2], I[L2], o2 === z && R, P2)), V = /* @__PURE__ */ new Date(), H = toSet(o), U = H.year ? B(YEAR) : constant(2012), W = H.month ? B(MONTH) : H.quarter ? B(QUARTER) : zero, G = H.week && H.day ? B("day", 1, WEEK + "day") : H.week ? B(WEEK, 1) : H.day ? B("day", 1) : H.date ? B(DATE, 1) : H.dayofyear ? B(DAYOFYEAR, 1) : one, K = H.hours ? B(HOURS) : zero, q = H.minutes ? B(MINUTES) : zero, J = H.seconds ? B(SECONDS) : zero, Y = H.milliseconds ? B(MILLISECONDS) : zero;
  return function(o2) {
    V.setTime(+o2);
    let P2 = U(V);
    return L(P2, W(V), G(V, P2), K(V), q(V), J(V), Y(V));
  };
}
function getUnit(o, P, F, I) {
  let L = F <= 1 ? o : I ? (P2, L2) => I + F * Math.floor((o(P2, L2) - I) / F) : (P2, I2) => F * Math.floor(o(P2, I2) / F);
  return P ? (o2, F2) => P(L(o2, F2), F2) : L;
}
function weekday(o, P, F) {
  return P + o * 7 - (F + 6) % 7;
}
var localGet = {
  [YEAR]: (o) => o.getFullYear(),
  [QUARTER]: (o) => Math.floor(o.getMonth() / 3),
  [MONTH]: (o) => o.getMonth(),
  [DATE]: (o) => o.getDate(),
  [HOURS]: (o) => o.getHours(),
  [MINUTES]: (o) => o.getMinutes(),
  [SECONDS]: (o) => o.getSeconds(),
  [MILLISECONDS]: (o) => o.getMilliseconds(),
  [DAYOFYEAR]: (o) => localDayOfYear(o),
  [WEEK]: (o) => localWeekNum(o),
  [WEEK + "day"]: (o, P) => weekday(localWeekNum(o), o.getDay(), localFirst(P)),
  day: (o, P) => weekday(1, o.getDay(), localFirst(P))
}, localInv = {
  [QUARTER]: (o) => 3 * o,
  [WEEK]: (o, P) => weekday(o, 0, localFirst(P))
};
function timeFloor(o, P) {
  return floor(o, P || 1, localGet, localInv, localDate);
}
var utcGet = {
  [YEAR]: (o) => o.getUTCFullYear(),
  [QUARTER]: (o) => Math.floor(o.getUTCMonth() / 3),
  [MONTH]: (o) => o.getUTCMonth(),
  [DATE]: (o) => o.getUTCDate(),
  [HOURS]: (o) => o.getUTCHours(),
  [MINUTES]: (o) => o.getUTCMinutes(),
  [SECONDS]: (o) => o.getUTCSeconds(),
  [MILLISECONDS]: (o) => o.getUTCMilliseconds(),
  [DAYOFYEAR]: (o) => utcDayOfYear(o),
  [WEEK]: (o) => utcWeekNum(o),
  day: (o, P) => weekday(1, o.getUTCDay(), utcFirst(P)),
  [WEEK + "day"]: (o, P) => weekday(utcWeekNum(o), o.getUTCDay(), utcFirst(P))
}, utcInv = {
  [QUARTER]: (o) => 3 * o,
  [WEEK]: (o, P) => weekday(o, 0, utcFirst(P))
};
function utcFloor(o, P) {
  return floor(o, P || 1, utcGet, utcInv, utcDate);
}
var timeIntervals = {
  [YEAR]: timeYear,
  [QUARTER]: timeMonth.every(3),
  [MONTH]: timeMonth,
  [WEEK]: timeSunday,
  [DATE]: timeDay,
  day: timeDay,
  [DAYOFYEAR]: timeDay,
  [HOURS]: timeHour,
  [MINUTES]: timeMinute,
  [SECONDS]: second,
  [MILLISECONDS]: millisecond
}, utcIntervals = {
  [YEAR]: utcYear,
  [QUARTER]: utcMonth.every(3),
  [MONTH]: utcMonth,
  [WEEK]: utcSunday,
  [DATE]: utcDay,
  day: utcDay,
  [DAYOFYEAR]: utcDay,
  [HOURS]: utcHour,
  [MINUTES]: utcMinute,
  [SECONDS]: second,
  [MILLISECONDS]: millisecond
};
function timeInterval(o) {
  return timeIntervals[o];
}
function utcInterval(o) {
  return utcIntervals[o];
}
function offset(o, P, F) {
  return o ? o.offset(P, F) : void 0;
}
function timeOffset(o, P, F) {
  return offset(timeInterval(o), P, F);
}
function utcOffset(o, P, F) {
  return offset(utcInterval(o), P, F);
}
function sequence(o, P, F, I) {
  return o ? o.range(P, F, I) : void 0;
}
function timeSequence(o, P, F, I) {
  return sequence(timeInterval(o), P, F, I);
}
function utcSequence(o, P, F, I) {
  return sequence(utcInterval(o), P, F, I);
}
var durationSecond = 1e3, durationMinute = durationSecond * 60, durationHour = durationMinute * 60, durationDay = durationHour * 24, durationWeek = durationDay * 7, durationMonth = durationDay * 30, durationYear = durationDay * 365, Milli = [
  YEAR,
  MONTH,
  DATE,
  HOURS,
  MINUTES,
  SECONDS,
  MILLISECONDS
], Seconds = Milli.slice(0, -1), Minutes = Seconds.slice(0, -1), Hours = Minutes.slice(0, -1), Day = Hours.slice(0, -1), Week = [YEAR, WEEK], Month = [YEAR, MONTH], Year = [YEAR], intervals = [
  [
    Seconds,
    1,
    durationSecond
  ],
  [
    Seconds,
    5,
    5 * durationSecond
  ],
  [
    Seconds,
    15,
    15 * durationSecond
  ],
  [
    Seconds,
    30,
    30 * durationSecond
  ],
  [
    Minutes,
    1,
    durationMinute
  ],
  [
    Minutes,
    5,
    5 * durationMinute
  ],
  [
    Minutes,
    15,
    15 * durationMinute
  ],
  [
    Minutes,
    30,
    30 * durationMinute
  ],
  [
    Hours,
    1,
    durationHour
  ],
  [
    Hours,
    3,
    3 * durationHour
  ],
  [
    Hours,
    6,
    6 * durationHour
  ],
  [
    Hours,
    12,
    12 * durationHour
  ],
  [
    Day,
    1,
    durationDay
  ],
  [
    Week,
    1,
    durationWeek
  ],
  [
    Month,
    1,
    durationMonth
  ],
  [
    Month,
    3,
    3 * durationMonth
  ],
  [
    Year,
    1,
    durationYear
  ]
];
function bin(P) {
  let F = P.extent, L = P.maxbins || 40, R = Math.abs(span(F)) / L, z = bisector((o) => o[2]).right(intervals, R), B, V;
  return z === intervals.length ? (B = Year, V = tickStep(F[0] / durationYear, F[1] / durationYear, L)) : z ? (z = intervals[R / intervals[z - 1][2] < intervals[z][2] / R ? z - 1 : z], B = z[0], V = z[1]) : (B = Milli, V = Math.max(tickStep(F[0], F[1], L), 1)), {
    units: B,
    step: V
  };
}
function memoize(o) {
  let P = {};
  return (F) => P[F] || (P[F] = o(F));
}
function trimZeroes(o, P) {
  return (F) => {
    let I = o(F), L = I.indexOf(P);
    if (L < 0) return I;
    let R = rightmostDigit(I, L), z = R < I.length ? I.slice(R) : "";
    for (; --R > L; ) if (I[R] !== "0") {
      ++R;
      break;
    }
    return I.slice(0, R) + z;
  };
}
function rightmostDigit(o, P) {
  let F = o.lastIndexOf("e"), I;
  if (F > 0) return F;
  for (F = o.length; --F > P; ) if (I = o.charCodeAt(F), I >= 48 && I <= 57) return F + 1;
}
function numberLocale(I) {
  let z = memoize(I.format), B = I.formatPrefix;
  return {
    format: z,
    formatPrefix: B,
    formatFloat(o) {
      let P = formatSpecifier(o || ",");
      if (P.precision == null) {
        switch (P.precision = 12, P.type) {
          case "%":
            P.precision -= 2;
            break;
          case "e":
            --P.precision;
            break;
        }
        return trimZeroes(z(P), z(".1f")(1)[1]);
      } else return z(P);
    },
    formatSpan(I2, V, H, U) {
      U = formatSpecifier(U ?? ",f");
      let W = tickStep(I2, V, H), G = Math.max(Math.abs(I2), Math.abs(V)), K;
      if (U.precision == null) switch (U.type) {
        case "s":
          return isNaN(K = precisionPrefix_default(W, G)) || (U.precision = K), B(U, G);
        case "":
        case "e":
        case "g":
        case "p":
        case "r":
          isNaN(K = precisionRound_default(W, G)) || (U.precision = K - (U.type === "e"));
          break;
        case "f":
        case "%":
          isNaN(K = precisionFixed_default(W)) || (U.precision = K - (U.type === "%") * 2);
          break;
      }
      return z(U);
    }
  };
}
var defaultNumberLocale;
resetNumberFormatDefaultLocale();
function resetNumberFormatDefaultLocale() {
  return defaultNumberLocale = numberLocale({
    format: format$1,
    formatPrefix
  });
}
function numberFormatLocale(o) {
  return numberLocale(locale_default(o));
}
function numberFormatDefaultLocale(o) {
  return arguments.length ? defaultNumberLocale = numberFormatLocale(o) : defaultNumberLocale;
}
function timeMultiFormat(o, P, F) {
  F || (F = {}), isObject(F) || error(`Invalid time multi-format specifier: ${F}`);
  let I = P(SECONDS), L = P(MINUTES), R = P(HOURS), z = P(DATE), B = P(WEEK), V = P(MONTH), H = P(QUARTER), U = P(YEAR), W = o(F.milliseconds || ".%L"), G = o(F.seconds || ":%S"), K = o(F.minutes || "%I:%M"), q = o(F.hours || "%I %p"), J = o(F.date || F.day || "%a %d"), Y = o(F.week || "%b %d"), X = o(F.month || "%B"), Z = o(F.quarter || "%B"), Q = o(F.year || "%Y");
  return (o2) => (I(o2) < o2 ? W : L(o2) < o2 ? G : R(o2) < o2 ? K : z(o2) < o2 ? q : V(o2) < o2 ? B(o2) < o2 ? J : Y : U(o2) < o2 ? H(o2) < o2 ? X : Z : Q)(o2);
}
function timeLocale(o) {
  let P = memoize(o.format), F = memoize(o.utcFormat);
  return {
    timeFormat: (o2) => isString(o2) ? P(o2) : timeMultiFormat(P, timeInterval, o2),
    utcFormat: (o2) => isString(o2) ? F(o2) : timeMultiFormat(F, utcInterval, o2),
    timeParse: memoize(o.parse),
    utcParse: memoize(o.utcParse)
  };
}
var defaultTimeLocale;
resetTimeFormatDefaultLocale();
function resetTimeFormatDefaultLocale() {
  return defaultTimeLocale = timeLocale({
    format: timeFormat,
    parse: timeParse,
    utcFormat,
    utcParse
  });
}
function timeFormatLocale(o) {
  return timeLocale(formatLocale(o));
}
function timeFormatDefaultLocale(o) {
  return arguments.length ? defaultTimeLocale = timeFormatLocale(o) : defaultTimeLocale;
}
var createLocale = (o, P) => extend({}, o, P);
function locale(o, P) {
  return createLocale(o ? numberFormatLocale(o) : numberFormatDefaultLocale(), P ? timeFormatLocale(P) : timeFormatDefaultLocale());
}
function defaultLocale(o, P) {
  let F = arguments.length;
  return F && F !== 2 && error("defaultLocale expects either zero or two arguments."), F ? createLocale(numberFormatDefaultLocale(o), timeFormatDefaultLocale(P)) : createLocale(numberFormatDefaultLocale(), timeFormatDefaultLocale());
}
function resetDefaultLocale() {
  return resetNumberFormatDefaultLocale(), resetTimeFormatDefaultLocale(), defaultLocale();
}
var protocol_re = /^(data:|([A-Za-z]+:)?\/\/)/, allowed_re = /^(?:(?:(?:f|ht)tps?|mailto|tel|callto|cid|xmpp|file|data):|[^a-z]|[a-z+.\-]+(?:[^a-z+.\-:]|$))/i, whitespace_re = /[\u0000-\u0020\u00A0\u1680\u180E\u2000-\u2029\u205f\u3000]/g, fileProtocol = "file://";
function loaderFactory(o) {
  return (o2) => ({
    options: o2 || {},
    sanitize,
    load,
    fileAccess: false,
    file: fileLoader(),
    http: httpLoader
  });
}
async function load(o, P) {
  let F = await this.sanitize(o, P), I = F.href;
  return F.localFile ? this.file(I) : this.http(I, P == null ? void 0 : P.http);
}
async function sanitize(o, P) {
  P = extend({}, this.options, P);
  let F = this.fileAccess, I = { href: null }, L, R, z, B = allowed_re.test(o.replace(whitespace_re, ""));
  (o == null || typeof o != "string" || !B) && error("Sanitize failure, invalid URI: " + $(o));
  let V = protocol_re.test(o);
  return (z = P.baseURL) && !V && (!o.startsWith("/") && !z.endsWith("/") && (o = "/" + o), o = z + o), R = (L = o.startsWith(fileProtocol)) || P.mode === "file" || P.mode !== "http" && !V && F, L ? o = o.slice(7) : o.startsWith("//") && (P.defaultProtocol === "file" ? (o = o.slice(2), R = true) : o = (P.defaultProtocol || "http") + ":" + o), Object.defineProperty(I, "localFile", { value: !!R }), I.href = o, P.target && (I.target = P.target + ""), P.rel && (I.rel = P.rel + ""), P.context === "image" && P.crossOrigin && (I.crossOrigin = P.crossOrigin + ""), I;
}
function fileLoader(o) {
  return fileReject;
}
async function fileReject() {
  error("No file system access.");
}
async function httpLoader(o, P) {
  let F = extend({}, this.options.http, P), I = P && P.response, L = await fetch(o, F);
  return L.ok ? isFunction(L[I]) ? L[I]() : L.text() : error(L.status + "" + L.statusText);
}
var isValid = (o) => o != null && o === o, isBoolean = (o) => o === "true" || o === "false" || o === true || o === false, isDate = (o) => !Number.isNaN(Date.parse(o)), isNumber = (o) => !Number.isNaN(+o) && !(o instanceof Date), isInteger = (o) => isNumber(o) && Number.isInteger(+o), typeParsers = {
  boolean: toBoolean,
  integer: toNumber,
  number: toNumber,
  date: toDate,
  string: toString,
  unknown: identity
}, typeTests = [
  isBoolean,
  isInteger,
  isNumber,
  isDate
], typeList = [
  "boolean",
  "integer",
  "number",
  "date"
];
function inferType(o, P) {
  if (!o || !o.length) return "unknown";
  let F = o.length, I = typeTests.length, L = typeTests.map((o2, P2) => P2 + 1);
  for (let R = 0, z = 0, B, V; R < F; ++R) for (V = P ? o[R][P] : o[R], B = 0; B < I; ++B) if (L[B] && isValid(V) && !typeTests[B](V) && (L[B] = 0, ++z, z === typeTests.length)) return "string";
  return typeList[L.reduce((o2, P2) => o2 === 0 ? P2 : o2, 0) - 1];
}
function inferTypes(o, P) {
  return P.reduce((P2, F) => (P2[F] = inferType(o, F), P2), {});
}
function delimitedFormat(o) {
  let P = function(P2, F) {
    let I = { delimiter: o };
    return dsv(P2, F ? extend(F, I) : I);
  };
  return P.responseType = "text", P;
}
function dsv(o, P) {
  return P.header && (o = P.header.map($).join(P.delimiter) + "\n" + o), dsv_default(P.delimiter).parse(o + "");
}
dsv.responseType = "text";
function isBuffer(o) {
  return typeof Buffer == "function" && isFunction(Buffer.isBuffer) ? Buffer.isBuffer(o) : false;
}
function json(o, P) {
  let F = P && P.property ? field(P.property) : identity;
  return isObject(o) && !isBuffer(o) ? parseJSON(F(o), P) : F(JSON.parse(o));
}
json.responseType = "json";
function parseJSON(o, P) {
  return !isArray(o) && isIterable(o) && (o = [...o]), P && P.copy ? JSON.parse(JSON.stringify(o)) : o;
}
var filters = {
  interior: (o, P) => o !== P,
  exterior: (o, P) => o === P
};
function topojson(o, P) {
  let F, I, L, R;
  return o = json(o, P), P && P.feature ? (F = feature_default, L = P.feature) : P && P.mesh ? (F = mesh_default, L = P.mesh, R = filters[P.filter]) : error("Missing TopoJSON feature or mesh parameter."), I = (I = o.objects[L]) ? F(o, I, R) : error("Invalid TopoJSON object: " + L), I && I.features || [I];
}
topojson.responseType = "json";
var format = {
  dsv,
  csv: delimitedFormat(","),
  tsv: delimitedFormat("	"),
  json,
  topojson
};
function formats(o, P) {
  return arguments.length > 1 ? (format[o] = P, this) : has(format, o) ? format[o] : null;
}
function responseType(o) {
  let P = formats(o);
  return P && P.responseType || "text";
}
function read(o, P, F, I) {
  P || (P = {});
  let L = formats(P.type || "json");
  return L || error("Unknown data format type: " + P.type), o = L(o, P), P.parse && parse(o, P.parse, F, I), has(o, "columns") && delete o.columns, o;
}
function parse(o, P, F, I) {
  if (!o.length) return;
  let L = timeFormatDefaultLocale();
  F || (F = L.timeParse), I || (I = L.utcParse);
  let R = o.columns || Object.keys(o[0]), z, B, V, H, U, W;
  P === "auto" && (P = inferTypes(o, R)), R = Object.keys(P);
  let G = R.map((o2) => {
    let L2 = P[o2], R2, z2;
    if (L2 && (L2.startsWith("date:") || L2.startsWith("utc:"))) return R2 = L2.split(/:(.+)?/, 2), z2 = R2[1], (z2[0] === "'" && z2[z2.length - 1] === "'" || z2[0] === '"' && z2[z2.length - 1] === '"') && (z2 = z2.slice(1, -1)), (R2[0] === "utc" ? I : F)(z2);
    if (!typeParsers[L2]) throw Error("Illegal format pattern: " + o2 + ":" + L2);
    return typeParsers[L2];
  });
  for (V = 0, U = o.length, W = R.length; V < U; ++V) for (z = o[V], H = 0; H < W; ++H) B = R[H], z[B] = G[H](z[B]);
}
var loader = loaderFactory();
export {
  clampRange as $,
  zoomLinear as $t,
  timeOffset as A,
  mergeConfig as At,
  week as B,
  span as Bt,
  TIME_UNITS as C,
  isRegExp as Ct,
  dayofyear as D,
  logger as Dt,
  bin as E,
  lerp as Et,
  utcInterval as F,
  panPow as Ft,
  Info as G,
  toSet as Gt,
  Debug as H,
  toBoolean as Ht,
  utcOffset as I,
  panSymlog as It,
  accessor as J,
  truthy as Jt,
  None as K,
  toString as Kt,
  utcSequence as L,
  peek as Lt,
  timeUnitSpecifier as M,
  pad$1 as Mt,
  timeUnits as N,
  panLinear as Nt,
  timeFloor as O,
  lruCache as Ot,
  utcFloor as P,
  panLog as Pt,
  ascending as Q,
  zero as Qt,
  utcdayofyear as R,
  quarter as Rt,
  SECONDS as S,
  isObject as St,
  YEAR as T,
  key as Tt,
  DisallowedObjectProperties as U,
  toDate as Ut,
  $ as V,
  splitAccessPath as Vt,
  Error$1 as W,
  toNumber as Wt,
  accessorName as X,
  visitArray as Xt,
  accessorFields as Y,
  utcquarter as Yt,
  array as Z,
  writeConfig as Zt,
  HOURS as _,
  isBoolean$1 as _t,
  loader as a,
  extent as at,
  MONTH as b,
  isIterable as bt,
  typeParsers as c,
  fastmap as ct,
  numberFormatDefaultLocale as d,
  has as dt,
  zoomLog as en,
  compare as et,
  resetDefaultLocale as f,
  id as ft,
  DAYOFYEAR as g,
  isArray as gt,
  DAY as h,
  inrange as ht,
  inferTypes as i,
  extend as it,
  timeSequence as j,
  one as jt,
  timeInterval as k,
  merge as kt,
  defaultLocale as l,
  field as lt,
  DATE as m,
  inherits as mt,
  formats as n,
  zoomSymlog as nn,
  debounce as nt,
  read as o,
  extentIndex as ot,
  timeFormatDefaultLocale as p,
  identity as pt,
  Warn as q,
  truncate as qt,
  inferType as r,
  error as rt,
  responseType as s,
  falsy as st,
  format as t,
  zoomPow as tn,
  constant as tt,
  locale as u,
  flush as ut,
  MILLISECONDS as v,
  isDate$1 as vt,
  WEEK as w,
  isString as wt,
  QUARTER as x,
  isNumber$1 as xt,
  MINUTES as y,
  isFunction as yt,
  utcweek as z,
  repeat as zt
};
