(self.webpackChunkRemoteClient = self.webpackChunkRemoteClient || []).push([
  [9884],
  {
    59884: (e, t, i) => {
      'use strict';
      i.r(t),
        i.d(t, {
          default: () => k,
          csvLatitudeFieldNames: () => E,
          csvLongitudeFieldNames: () => T,
        }),
        i(74569);
      var n = i(82058),
        s = i(60991),
        r = i(76506),
        o = i(56240),
        a = i(32101),
        l = i(72334),
        d = i(77314),
        u = i(60947),
        c = i(35132),
        h = i(85674),
        f = i(56761),
        p = i(24251),
        m = i(50815),
        g = i(4571),
        y = i(1709);
      i(91306),
        i(92143),
        i(31450),
        i(71552),
        i(40642),
        i(21801),
        i(34250),
        i(86656),
        i(22723),
        i(17533),
        i(81172),
        i(73796),
        i(74673),
        i(21972),
        i(23639),
        i(91055),
        i(27794),
        i(6906),
        i(50406),
        i(26341),
        i(97714),
        i(2906),
        i(91597),
        i(86787),
        i(89623),
        i(84069),
        i(44567),
        i(98380),
        i(92896),
        i(22781),
        i(57251),
        i(32422),
        i(88762),
        i(3482),
        i(82426),
        i(53785),
        i(95587),
        i(65775),
        i(12381),
        i(73173),
        i(92482),
        i(92624),
        i(76996),
        i(53326),
        i(40267),
        i(88994),
        i(98576),
        i(44722),
        i(91700),
        i(95533),
        i(94751),
        i(30831),
        i(72274),
        i(5777),
        i(89219),
        i(71435),
        i(19124),
        i(14249),
        i(9801),
        i(53523),
        i(59465),
        i(42911),
        i(46826),
        i(45433),
        i(60217),
        i(7176),
        i(14172),
        i(20438),
        i(40705),
        i(60599),
        i(15324),
        i(10401),
        i(22739),
        i(20543),
        i(91162),
        i(41864),
        i(49900),
        i(66284),
        i(33921),
        i(67477),
        i(78533),
        i(74653),
        i(91091),
        i(58943),
        i(56420),
        i(74742),
        i(28239),
        i(88610),
        i(6941);
      const x = /^\s*"([\S\s]*)"\s*$/,
        _ = /""/g,
        I = [',', ' ', ';', '|', '\t'];
      function b(e, t) {
        const i = {},
          n = e.length;
        for (let s = 0; s < n; s++) i[e[s]] = t[s];
        return i;
      }
      function* F(e, t, i) {
        let n = 0;
        for (; n <= e.length; ) {
          const s = e.indexOf(t, n),
            r = e.substring(n, s > -1 ? s : void 0);
          (n += r.length + t.length), (i && !r.trim()) || (yield r);
        }
      }
      function S(e) {
        const t = e.includes('\r\n') ? '\r\n' : '\n';
        return F(e, t, !0);
      }
      function B(e, t) {
        return F(e, t, !1);
      }
      function* w(e, t, i) {
        let n = '',
          s = '',
          r = 0,
          o = [];
        e: for (;;) {
          const { value: a, done: l } = e.next();
          if (l) return;
          const d = B(a, i);
          t: for (;;) {
            const { value: e, done: t } = d.next();
            if (t) break t;
            if (((n += s + e), (s = ''), (r += v(e)), r % 2 == 0)) {
              if (r > 0) {
                const e = x.exec(n);
                if (!e) {
                  (o = []), (n = ''), (r = 0);
                  continue e;
                }
                o.push(e[1].replace(_, '"'));
              } else o.push(n);
              (n = ''), (r = 0);
            } else s = i;
          }
          0 === r ? (yield b(t, o), (o = [])) : (s = '\n');
        }
      }
      function v(e) {
        let t = 0,
          i = 0;
        for (i = e.indexOf('"', i); i >= 0; ) t++, (i = e.indexOf('"', i + 1));
        return t;
      }
      const N = (0, g.a)('esriGeometryPoint'),
        M = [
          'esriFieldTypeSmallInteger',
          'esriFieldTypeInteger',
          'esriFieldTypeSingle',
          'esriFieldTypeDouble',
          'esriFieldTypeLong',
        ],
        E = ['lat', 'latitude', 'latitude83', 'latdecdeg', 'lat_dd', 'y', 'ycenter', 'point-y'],
        T = [
          'lon',
          'lng',
          'long',
          'longitude',
          'longitude83',
          'longdecdeg',
          'long_dd',
          'x',
          'xcenter',
          'point-x',
        ],
        Y = /^((jan(uary)?)|(feb(ruary)?)|(mar(ch)?)|(apr(il)?)|(may)|(jun(e)?)|(jul(y)?)|(aug(ust)?)|(sep(tember)?)|(oct(ober)?)|(nov(ember)?)|(dec(ember)?)|(am)|(pm)|(gmt)|(utc))$/i,
        X = ['csv'],
        O = [0, 0];
      class D {
        constructor(e, t) {
          (this.x = e), (this.y = t);
        }
      }
      const C = (function () {
          const e = (0, o._)(),
            t = new RegExp('^' + e.regexp + '$'),
            i = new RegExp('[' + e.group + '\\s\\xa0]', 'g'),
            n = e.factor;
          return function (s) {
            const r = t.exec(s);
            if (((e.factor = n), !r)) return NaN;
            let o = r[1];
            if (!r[1]) {
              if (!r[2]) return NaN;
              (o = r[2]), (e.factor *= -1);
            }
            return (o = o.replace(i, '').replace(e.decimal, '.')), +o * e.factor;
          };
        })(),
        j =
          'isInteger' in Number
            ? Number.isInteger
            : (e) => 'number' == typeof e && isFinite(e) && Math.floor(e) === e,
        k = class {
          constructor() {
            (this._fieldsIndex = null), (this._queryEngine = null);
          }
          destroy() {
            this._queryEngine && this._queryEngine && this._queryEngine.destroy(),
              (this._queryEngine = null),
              (this._fieldsIndex = null);
          }
          async load(e, t = {}) {
            const [i] = await Promise.all([
                this._fetch(e.url, t),
                this._checkProjection(t && e.parsing && e.parsing.spatialReference),
              ]),
              n = this._parse(i, e);
            if (
              ((this._queryEngine = this._createQueryEngine(i, n)),
              (n.layerDefinition.extent = this._queryEngine.fullExtent),
              n.layerDefinition.timeInfo)
            ) {
              const { start: e, end: t } = this._queryEngine.timeExtent;
              n.layerDefinition.timeInfo.timeExtent = [e, t];
            }
            return n;
          }
          async applyEdits() {
            throw new s.Z(
              'csv-source:editing-not-supported',
              'applyEdits() is not supported on CSVLayer',
            );
          }
          queryFeatures(e = {}, t = {}) {
            return this._queryEngine.executeQuery(e, t.signal);
          }
          queryFeatureCount(e = {}, t = {}) {
            return this._queryEngine.executeQueryForCount(e, t.signal);
          }
          queryObjectIds(e = {}, t = {}) {
            return this._queryEngine.executeQueryForIds(e, t.signal);
          }
          queryExtent(e = {}, t = {}) {
            return this._queryEngine.executeQueryForExtent(e, t.signal);
          }
          querySnapping(e, t = {}) {
            return this._queryEngine.executeQueryForSnapping(e, t.signal);
          }
          async _fetch(e, t) {
            if (!e) throw new s.Z('csv-source:invalid-source', 'url not defined');
            const i = (0, a.mN)(e);
            return (
              await (0, n.default)(i.path, {
                query: i.query,
                responseType: 'text',
                signal: t.signal,
              })
            ).data;
          }
          _parse(e, t) {
            const i = t.parsing || {},
              n = {
                columnDelimiter: i.columnDelimiter,
                layerDefinition: null,
                locationInfo: {
                  latitudeFieldName: i.latitudeField,
                  longitudeFieldName: i.longitudeField,
                },
              },
              r = S(e);
            let { value: o } = r.next();
            if (!o) throw new s.Z('csv', 'CSV is empty', { csv: e });
            if (((o = o.trim()), !i.columnDelimiter)) {
              const e = (function (e) {
                const t = e.trim();
                let i = 0,
                  n = '';
                for (const e of I) {
                  const s = t.split(e).length;
                  s > i && ((i = s), (n = e));
                }
                return '' === n ? null : n;
              })(o);
              if (!e)
                throw new s.Z(
                  'csv-source:invalid-delimiter',
                  'Unable to detect the delimiter from CSV',
                );
              n.columnDelimiter = e;
            }
            const l = o.split(n.columnDelimiter),
              d = (n.layerDefinition = {
                name: (0, a.vt)(t.url, X) || 'csv',
                drawingInfo: N,
                geometryType: 'esriGeometryPoint',
                objectIdField: null,
                fields: [],
                timeInfo: i.timeInfo,
                extent: {
                  xmin: Number.POSITIVE_INFINITY,
                  ymin: Number.POSITIVE_INFINITY,
                  xmax: Number.NEGATIVE_INFINITY,
                  ymax: Number.NEGATIVE_INFINITY,
                  spatialReference: i.spatialReference || { wkid: 102100 },
                },
              });
            if (!i.latitudeField || !i.longitudeField) {
              const e = this._inferLocationInfo(l);
              if (
                (!i.longitudeField && !e.longitudeFieldName) ||
                (!i.latitudeField && !e.latitudeFieldName)
              )
                throw new s.Z(
                  'csv',
                  'Unable to identify latitudeField and/or longitudeField from CSV',
                );
              n.locationInfo = {
                longitudeFieldName: i.longitudeField || e.longitudeFieldName,
                latitudeFieldName: i.latitudeField || e.latitudeFieldName,
              };
            }
            const u = this._inferFields(r, n.columnDelimiter, l, n.locationInfo);
            if (i.fields && i.fields.length) {
              const e = new Map();
              for (const t of i.fields) e.set(t.name.toLowerCase(), t);
              for (const t of u) {
                const i = e.get(t.name.toLowerCase());
                if (i) {
                  const e = t.name;
                  Object.assign(t, i), (t.name = e);
                }
              }
            }
            if (
              ((d.fields = u),
              !d.fields.some(
                (e) => 'esriFieldTypeOID' === e.type && ((d.objectIdField = e.name), !0),
              ))
            ) {
              const e = {
                name: '__OBJECTID',
                alias: '__OBJECTID',
                type: 'esriFieldTypeOID',
                editable: !1,
                nullable: !1,
              };
              (d.objectIdField = e.name), d.fields.unshift(e);
            }
            if (((this._fieldsIndex = new y.Z(d.fields)), d.timeInfo)) {
              const e = d.timeInfo;
              if (e.startTimeField) {
                const t = this._fieldsIndex.get(e.startTimeField);
                t
                  ? ((e.startTimeField = t.name), (t.type = 'esriFieldTypeDate'))
                  : (e.startTimeField = null);
              }
              if (e.endTimeField) {
                const t = this._fieldsIndex.get(e.endTimeField);
                t
                  ? ((e.endTimeField = t.name), (t.type = 'esriFieldTypeDate'))
                  : (e.endTimeField = null);
              }
              if (e.trackIdField) {
                const t = this._fieldsIndex.get(e.trackIdField);
                e.trackIdField = t ? t.name : null;
              }
              e.startTimeField || e.endTimeField || (d.timeInfo = null);
            }
            return n;
          }
          _inferLocationInfo(e) {
            let t = null,
              i = null;
            const n = (t) => e.find((e) => e.toLowerCase() === t);
            return (
              T.some((e) => ((t = n(e)), !!t)),
              E.some((e) => ((i = n(e)), !!i)),
              { longitudeFieldName: t, latitudeFieldName: i }
            );
          }
          _inferFields(e, t, i, n) {
            const s = [],
              r = w(e, i, t),
              o = [];
            e: for (; o.length < 10; ) {
              const { value: e, done: t } = r.next();
              if (t) break e;
              o.push(e);
            }
            for (const e of i)
              if (e === n.longitudeFieldName || e === n.latitudeFieldName)
                s.push({ name: e, type: 'esriFieldTypeDouble', alias: e });
              else {
                const t = o.map((t) => t[e]),
                  i = this._inferFieldType(t),
                  n = { name: e, type: null, alias: e };
                switch (i) {
                  case 'integer':
                    n.type = 'esriFieldTypeInteger';
                    break;
                  case 'double':
                    n.type = 'esriFieldTypeDouble';
                    break;
                  case 'date':
                    (n.type = 'esriFieldTypeDate'), (n.length = 36);
                    break;
                  default:
                    (n.type = 'esriFieldTypeString'), (n.length = 255);
                }
                s.push(n);
              }
            return s;
          }
          _inferFieldType(e) {
            if (!e.length) return 'string';
            const t = /[^+-.,0-9]/;
            return e
              .map((e) => {
                let i = !1;
                if ('' !== e) {
                  if (t.test(e)) i = !0;
                  else {
                    let t = C(e);
                    if (!isNaN(t))
                      return /[.,]/.test(e) || !j(t) || t > 214783647 || t < -214783648
                        ? 'double'
                        : 'integer';
                    if (-1 === e.indexOf('E')) i = !0;
                    else {
                      if (((t = Number(e)), !isNaN(t))) return 'double';
                      if (-1 === e.indexOf(',')) i = !0;
                      else {
                        if (((e = e.replace(',', '.')), (t = Number(e)), !isNaN(t)))
                          return 'double';
                        i = !0;
                      }
                    }
                  }
                  if (i) {
                    if (!/^[-]?\d*[.,]?\d*$/.test(e)) {
                      const t = new Date(e);
                      return this._isValidDate(t, e) ? 'date' : 'string';
                    }
                    return 'string';
                  }
                  return 'string';
                }
              })
              .reduce((e, t) =>
                void 0 === e || e === t
                  ? t
                  : 'string' === e || 'string' === t
                  ? 'string'
                  : 'double' === e || 'double' === t
                  ? 'double'
                  : void 0,
              );
          }
          _isValidDate(e, t) {
            if (!e || '[object Date]' !== Object.prototype.toString.call(e) || isNaN(e.getTime()))
              return !1;
            let i = !0;
            if ((0, r.h)('chrome') && /\d+\W*$/.test(t)) {
              const e = t.match(/[a-zA-Z]{2,}/);
              if (e) {
                let t = !1,
                  n = 0;
                for (; !t && n <= e.length; ) (t = !Y.test(e[n])), n++;
                i = !t;
              }
            }
            return i;
          }
          _createQueryEngine(e, t) {
            const { latitudeFieldName: i, longitudeFieldName: n } = t.locationInfo,
              { objectIdField: s, fields: r, extent: o, timeInfo: a } = t.layerDefinition;
            let p = [];
            const g = [],
              y = new Set(),
              x = new Set(),
              _ = [];
            for (const { name: e, type: t } of r)
              'esriFieldTypeDate' === t ? y.add(e) : M.indexOf(t) > -1 && x.add(e),
                e !== s && _.push(e);
            let I = 0;
            const b = S(e);
            b.next();
            const F = w(b, _, t.columnDelimiter);
            e: for (;;) {
              const { value: e, done: t } = F.next();
              if (t) break e;
              const r = this._parseCoordinateValue(e[i]),
                o = this._parseCoordinateValue(e[n]);
              if (null != o && null != r && !isNaN(r) && !isNaN(o)) {
                (e[i] = r), (e[n] = o);
                for (const t in e)
                  if (t !== i && t !== n)
                    if (y.has(t)) {
                      const i = new Date(e[t]);
                      e[t] = this._isValidDate(i, e[t]) ? i.getTime() : null;
                    } else if (x.has(t)) {
                      const i = C(e[t]);
                      isNaN(i) ? (e[t] = null) : (e[t] = i);
                    }
                (e[s] = I), I++, p.push(new D(o, r)), g.push(e);
              }
            }
            if (!(0, u.e)({ wkid: 4326 }, o.spatialReference))
              if ((0, u.i)(o.spatialReference))
                for (const e of p) [e.x, e.y] = (0, c.hG)(e.x, e.y, O);
              else p = (0, l.oj)(d.j, p, u.Z.WGS84, o.spatialReference, null);
            const B = new f.F({ geometryType: 'esriGeometryPoint', hasM: !1, hasZ: !1 }),
              v = new m.Q({
                fields: t.layerDefinition.fields,
                geometryType: 'esriGeometryPoint',
                hasM: !1,
                hasZ: !1,
                timeInfo: a,
                objectIdField: s,
                spatialReference: o.spatialReference || { wkid: 4326 },
                cacheSpatialQueries: !0,
                featureStore: B,
              }),
              N = [];
            for (let e = 0; e < p.length; e++) {
              const { x: t, y: i } = p[e],
                n = g[e];
              (n[s] = e + 1), N.push(new h.O(new h.a([], [t, i]), n, null, n[s]));
            }
            return B.addMany(N), v;
          }
          _parseCoordinateValue(e) {
            if (null == e || '' === e) return null;
            let t = C(e);
            return (isNaN(t) || Math.abs(t) > 181) && (t = parseFloat(e)), t;
          }
          async _checkProjection(e) {
            try {
              await (0, p.c)(u.W, e);
            } catch {
              throw new s.Z('csv-layer', 'Projection not supported');
            }
          }
        };
    },
    56761: (e, t, i) => {
      'use strict';
      i.d(t, { B: () => f, F: () => p });
      var n = i(60991),
        s = i(76996),
        r = i(92143),
        o = i(76506),
        a = i(53326),
        l = i(92482),
        d = i(40267),
        u = i(88994),
        c = i(44722);
      const h = { minX: 0, minY: 0, maxX: 0, maxY: 0 };
      class f {
        constructor() {
          (this._indexInvalid = !1),
            (this._boundsToLoad = []),
            (this._boundsById = new Map()),
            (this._idByBounds = new Map()),
            (this._index = new u.P(
              9,
              (0, o.h)('csp-restrictions')
                ? (e) => ({ minX: e[0], minY: e[1], maxX: e[2], maxY: e[3] })
                : ['[0]', '[1]', '[2]', '[3]'],
            )),
            (this._loadIndex = () => {
              if (this._indexInvalid) {
                const e = new Array(this._idByBounds.size);
                let t = 0;
                this._idByBounds.forEach((i, n) => {
                  e[t++] = n;
                }),
                  (this._indexInvalid = !1),
                  this._index.clear(),
                  this._index.load(e);
              } else
                this._boundsToLoad.length &&
                  (this._index.load(this._boundsToLoad.filter((e) => this._idByBounds.has(e))),
                  (this._boundsToLoad.length = 0));
            });
        }
        clear() {
          (this._indexInvalid = !1),
            (this._boundsToLoad.length = 0),
            this._boundsById.clear(),
            this._idByBounds.clear(),
            this._index.clear();
        }
        delete(e) {
          const t = this._boundsById.get(e);
          this._boundsById.delete(e),
            t && (this._idByBounds.delete(t), this._indexInvalid || this._index.remove(t));
        }
        forEachInBounds(e, t) {
          this._loadIndex(),
            (function (e, t, i) {
              (h.minX = t[0]), (h.minY = t[1]), (h.maxX = t[2]), (h.maxY = t[3]), e.search(h, i);
            })(this._index, e, (e) => t(this._idByBounds.get(e)));
        }
        get(e) {
          return this._boundsById.get(e);
        }
        has(e) {
          return this._boundsById.has(e);
        }
        invalidateIndex() {
          this._indexInvalid || ((this._indexInvalid = !0), (this._boundsToLoad.length = 0));
        }
        set(e, t) {
          if (!this._indexInvalid) {
            const t = this._boundsById.get(e);
            t && (this._index.remove(t), this._idByBounds.delete(t));
          }
          this._boundsById.set(e, t),
            t &&
              (this._idByBounds.set(t, e),
              this._indexInvalid ||
                (this._boundsToLoad.push(t), this._boundsToLoad.length > 5e4 && this._loadIndex()));
        }
      }
      class p {
        constructor(e) {
          (this.geometryInfo = e),
            (this._boundsStore = new f()),
            (this._featuresById = new Map()),
            (this._markedIds = new Set()),
            (this.events = new s.E()),
            (this.featureAdapter = c.o);
        }
        get geometryType() {
          return this.geometryInfo.geometryType;
        }
        get hasM() {
          return this.geometryInfo.hasM;
        }
        get hasZ() {
          return this.geometryInfo.hasZ;
        }
        get numFeatures() {
          return this._featuresById.size;
        }
        get fullBounds() {
          if (!this.numFeatures) return null;
          const e = (0, l.a)(l.N);
          return (
            this._featuresById.forEach((t) => {
              const i = this._boundsStore.get(t.objectId);
              i &&
                ((e[0] = Math.min(i[0], e[0])),
                (e[1] = Math.min(i[1], e[1])),
                (e[2] = Math.max(i[2], e[2])),
                (e[3] = Math.max(i[3], e[3])));
            }),
            e
          );
        }
        get storeStatistics() {
          let e = 0;
          return (
            this._featuresById.forEach((t) => {
              t.geometry && t.geometry.coords && (e += t.geometry.coords.length);
            }),
            {
              featureCount: this._featuresById.size,
              vertexCount: e / (this.hasZ ? (this.hasM ? 4 : 3) : this.hasM ? 3 : 2),
            }
          );
        }
        add(e) {
          this._add(e), this._emitChanged();
        }
        addMany(e) {
          for (const t of e) this._add(t);
          this._emitChanged();
        }
        clear() {
          this._featuresById.clear(), this._boundsStore.clear(), this._emitChanged();
        }
        removeById(e) {
          const t = this._featuresById.get(e);
          return t ? (this._remove(t), this._emitChanged(), t) : null;
        }
        removeManyById(e) {
          this._boundsStore.invalidateIndex();
          for (const t of e) {
            const e = this._featuresById.get(t);
            e && this._remove(e);
          }
          this._emitChanged();
        }
        forEachBounds(e, t, i) {
          for (const n of e) {
            const e = this._boundsStore.get(n.objectId);
            e && t((0, a.C)(i, e));
          }
        }
        getFeature(e) {
          return this._featuresById.get(e);
        }
        has(e) {
          return this._featuresById.has(e);
        }
        forEach(e) {
          this._featuresById.forEach((t) => e(t));
        }
        forEachInBounds(e, t) {
          this._boundsStore.forEachInBounds(e, (e) => {
            t(this._featuresById.get(e));
          });
        }
        startMarkingUsedFeatures() {
          this._boundsStore.invalidateIndex(), this._markedIds.clear();
        }
        sweep() {
          let e = !1;
          this._featuresById.forEach((t, i) => {
            this._markedIds.has(i) || ((e = !0), this._remove(t));
          }),
            this._markedIds.clear(),
            e && this._emitChanged();
        }
        _emitChanged() {
          this.events.emit('changed', void 0);
        }
        _add(e) {
          if (!e) return;
          const t = e.objectId;
          if (null == t)
            return void r.L.getLogger('esri.layers.graphics.data.FeatureStore').error(
              new n.Z('featurestore:invalid-feature', 'feature id is missing', { feature: e }),
            );
          const i = this._featuresById.get(t);
          let s;
          if (
            (this._markedIds.add(t),
            i
              ? ((e.displayId = i.displayId),
                (s = this._boundsStore.get(t)),
                this._boundsStore.delete(t))
              : (0, o.i)(this.onFeatureAdd) && this.onFeatureAdd(e),
            !e.geometry || !e.geometry.coords || !e.geometry.coords.length)
          )
            return this._boundsStore.set(t, null), void this._featuresById.set(t, e);
          (s = (0, d.g)(
            s || (0, l.a)(),
            e.geometry,
            this.geometryInfo.hasZ,
            this.geometryInfo.hasM,
          )),
            this._boundsStore.set(t, s),
            this._featuresById.set(t, e);
        }
        _remove(e) {
          return (
            (0, o.i)(this.onFeatureRemove) && this.onFeatureRemove(e),
            this._markedIds.delete(e.objectId),
            this._boundsStore.delete(e.objectId),
            this._featuresById.delete(e.objectId),
            e
          );
        }
      }
    },
    88994: (e, t, i) => {
      'use strict';
      i.d(t, { P: () => a });
      var n = i(27794),
        s = i(76506),
        r = i(6906),
        o = i(98576);
      class a {
        constructor(e = 9, t) {
          (this.compareMinX = c),
            (this.compareMinY = h),
            (this.toBBox = function (e) {
              return e;
            }),
            (this._maxEntries = Math.max(4, e || 9)),
            (this._minEntries = Math.max(2, Math.ceil(0.4 * this._maxEntries))),
            t && ('function' == typeof t ? (this.toBBox = t) : this._initFormat(t)),
            this.clear();
        }
        destroy() {
          this.clear(), _.prune(), I.prune(), b.prune(), F.prune();
        }
        all(e) {
          this._all(this.data, e);
        }
        search(e, t) {
          let i = this.data;
          const n = this.toBBox;
          if (y(e, i))
            for (_.clear(); i; ) {
              for (let s = 0, r = i.children.length; s < r; s++) {
                const r = i.children[s],
                  o = i.leaf ? n(r) : r;
                y(e, o) && (i.leaf ? t(r) : g(e, o) ? this._all(r, t) : _.push(r));
              }
              i = _.pop();
            }
        }
        collides(e) {
          let t = this.data;
          const i = this.toBBox;
          if (!y(e, t)) return !1;
          for (_.clear(); t; ) {
            for (let n = 0, s = t.children.length; n < s; n++) {
              const s = t.children[n],
                r = t.leaf ? i(s) : s;
              if (y(e, r)) {
                if (t.leaf || g(e, r)) return !0;
                _.push(s);
              }
            }
            t = _.pop();
          }
          return !1;
        }
        load(e) {
          if (!e.length) return this;
          if (e.length < this._minEntries) {
            for (let t = 0, i = e.length; t < i; t++) this.insert(e[t]);
            return this;
          }
          let t = this._build(e.slice(0, e.length), 0, e.length - 1, 0);
          if (this.data.children.length)
            if (this.data.height === t.height) this._splitRoot(this.data, t);
            else {
              if (this.data.height < t.height) {
                const e = this.data;
                (this.data = t), (t = e);
              }
              this._insert(t, this.data.height - t.height - 1, !0);
            }
          else this.data = t;
          return this;
        }
        insert(e) {
          return e && this._insert(e, this.data.height - 1), this;
        }
        clear() {
          return (this.data = new B([])), this;
        }
        remove(e) {
          if (!e) return this;
          let t,
            i = this.data,
            r = null,
            o = 0,
            a = !1;
          const l = this.toBBox(e);
          for (b.clear(), F.clear(); i || b.length > 0; ) {
            var d;
            if (
              (i ||
                ((i = (0, s.a)(b.pop())),
                (r = b.data[b.length - 1]),
                (o = null != (d = F.pop()) ? d : 0),
                (a = !0)),
              i.leaf && ((t = (0, n.i)(i.children, e, i.children.length, i.indexHint)), -1 !== t))
            )
              return i.children.splice(t, 1), b.push(i), this._condense(b), this;
            a || i.leaf || !g(i, l)
              ? r
                ? (o++, (i = r.children[o]), (a = !1))
                : (i = null)
              : (b.push(i), F.push(o), (o = 0), (r = i), (i = i.children[0]));
          }
          return this;
        }
        toJSON() {
          return this.data;
        }
        fromJSON(e) {
          return (this.data = e), this;
        }
        _all(e, t) {
          let i = e;
          for (I.clear(); i; ) {
            var n;
            if (!0 === i.leaf) for (const e of i.children) t(e);
            else I.pushArray(i.children);
            i = null != (n = I.pop()) ? n : null;
          }
        }
        _build(e, t, i, n) {
          const s = i - t + 1;
          let r = this._maxEntries;
          if (s <= r) {
            const n = new B(e.slice(t, i + 1));
            return l(n, this.toBBox), n;
          }
          n || ((n = Math.ceil(Math.log(s) / Math.log(r))), (r = Math.ceil(s / r ** (n - 1))));
          const o = new w([]);
          o.height = n;
          const a = Math.ceil(s / r),
            d = a * Math.ceil(Math.sqrt(r));
          x(e, t, i, d, this.compareMinX);
          for (let s = t; s <= i; s += d) {
            const t = Math.min(s + d - 1, i);
            x(e, s, t, a, this.compareMinY);
            for (let i = s; i <= t; i += a) {
              const s = Math.min(i + a - 1, t);
              o.children.push(this._build(e, i, s, n - 1));
            }
          }
          return l(o, this.toBBox), o;
        }
        _chooseSubtree(e, t, i, n) {
          for (; n.push(t), !0 !== t.leaf && n.length - 1 !== i; ) {
            let i,
              n = 1 / 0,
              o = 1 / 0;
            for (let a = 0, l = t.children.length; a < l; a++) {
              const l = t.children[a],
                d = f(l),
                u =
                  ((s = e),
                  (r = l),
                  (Math.max(r.maxX, s.maxX) - Math.min(r.minX, s.minX)) *
                    (Math.max(r.maxY, s.maxY) - Math.min(r.minY, s.minY)) -
                    d);
              u < o
                ? ((o = u), (n = d < n ? d : n), (i = l))
                : u === o && d < n && ((n = d), (i = l));
            }
            t = i || t.children[0];
          }
          var s, r;
          return t;
        }
        _insert(e, t, i) {
          const n = this.toBBox,
            s = i ? e : n(e);
          b.clear();
          const r = this._chooseSubtree(s, this.data, t, b);
          for (
            r.children.push(e), u(r, s);
            t >= 0 && b.data[t].children.length > this._maxEntries;

          )
            this._split(b, t), t--;
          this._adjustParentBBoxes(s, b, t);
        }
        _split(e, t) {
          const i = e.data[t],
            n = i.children.length,
            s = this._minEntries;
          this._chooseSplitAxis(i, s, n);
          const r = this._chooseSplitIndex(i, s, n);
          if (!r)
            return void console.log(
              '  Error: assertion failed at PooledRBush._split: no valid split index',
            );
          const o = i.children.splice(r, i.children.length - r),
            a = i.leaf ? new B(o) : new w(o);
          (a.height = i.height),
            l(i, this.toBBox),
            l(a, this.toBBox),
            t ? e.data[t - 1].children.push(a) : this._splitRoot(i, a);
        }
        _splitRoot(e, t) {
          (this.data = new w([e, t])), (this.data.height = e.height + 1), l(this.data, this.toBBox);
        }
        _chooseSplitIndex(e, t, i) {
          let n, s, r;
          n = s = 1 / 0;
          for (let o = t; o <= i - t; o++) {
            const t = d(e, 0, o, this.toBBox),
              a = d(e, o, i, this.toBBox),
              l = m(t, a),
              u = f(t) + f(a);
            l < n
              ? ((n = l), (r = o), (s = u < s ? u : s))
              : l === n && u < s && ((s = u), (r = o));
          }
          return r;
        }
        _chooseSplitAxis(e, t, i) {
          const n = e.leaf ? this.compareMinX : c,
            s = e.leaf ? this.compareMinY : h;
          this._allDistMargin(e, t, i, n) < this._allDistMargin(e, t, i, s) && e.children.sort(n);
        }
        _allDistMargin(e, t, i, n) {
          e.children.sort(n);
          const s = this.toBBox,
            r = d(e, 0, t, s),
            o = d(e, i - t, i, s);
          let a = p(r) + p(o);
          for (let n = t; n < i - t; n++) {
            const t = e.children[n];
            u(r, e.leaf ? s(t) : t), (a += p(r));
          }
          for (let n = i - t - 1; n >= t; n--) {
            const t = e.children[n];
            u(o, e.leaf ? s(t) : t), (a += p(o));
          }
          return a;
        }
        _adjustParentBBoxes(e, t, i) {
          for (let n = i; n >= 0; n--) u(t.data[n], e);
        }
        _condense(e) {
          for (let t = e.length - 1; t >= 0; t--) {
            const i = e.data[t];
            if (0 === i.children.length)
              if (t > 0) {
                const s = e.data[t - 1],
                  r = s.children;
                r.splice((0, n.i)(r, i, r.length, s.indexHint), 1);
              } else this.clear();
            else l(i, this.toBBox);
          }
        }
        _initFormat(e) {
          const t = ['return a', ' - b', ';'];
          (this.compareMinX = new Function('a', 'b', t.join(e[0]))),
            (this.compareMinY = new Function('a', 'b', t.join(e[1]))),
            (this.toBBox = new Function(
              'a',
              'return {minX: a' +
                e[0] +
                ', minY: a' +
                e[1] +
                ', maxX: a' +
                e[2] +
                ', maxY: a' +
                e[3] +
                '};',
            ));
        }
      }
      function l(e, t) {
        d(e, 0, e.children.length, t, e);
      }
      function d(e, t, i, n, s) {
        s || (s = new B([])),
          (s.minX = 1 / 0),
          (s.minY = 1 / 0),
          (s.maxX = -1 / 0),
          (s.maxY = -1 / 0);
        for (let r, o = t; o < i; o++) (r = e.children[o]), u(s, e.leaf ? n(r) : r);
        return s;
      }
      function u(e, t) {
        (e.minX = Math.min(e.minX, t.minX)),
          (e.minY = Math.min(e.minY, t.minY)),
          (e.maxX = Math.max(e.maxX, t.maxX)),
          (e.maxY = Math.max(e.maxY, t.maxY));
      }
      function c(e, t) {
        return e.minX - t.minX;
      }
      function h(e, t) {
        return e.minY - t.minY;
      }
      function f(e) {
        return (e.maxX - e.minX) * (e.maxY - e.minY);
      }
      function p(e) {
        return e.maxX - e.minX + (e.maxY - e.minY);
      }
      function m(e, t) {
        const i = Math.max(e.minX, t.minX),
          n = Math.max(e.minY, t.minY),
          s = Math.min(e.maxX, t.maxX),
          r = Math.min(e.maxY, t.maxY);
        return Math.max(0, s - i) * Math.max(0, r - n);
      }
      function g(e, t) {
        return e.minX <= t.minX && e.minY <= t.minY && t.maxX <= e.maxX && t.maxY <= e.maxY;
      }
      function y(e, t) {
        return t.minX <= e.maxX && t.minY <= e.maxY && t.maxX >= e.minX && t.maxY >= e.minY;
      }
      function x(e, t, i, n, r) {
        const a = [t, i];
        for (; a.length; ) {
          const t = (0, s.a)(a.pop()),
            i = (0, s.a)(a.pop());
          if (t - i <= n) continue;
          const l = i + Math.ceil((t - i) / n / 2) * n;
          (0, o.q)(e, l, i, t, r), a.push(i, l, l, t);
        }
      }
      const _ = new r.P(),
        I = new r.P(),
        b = new r.P(),
        F = new r.P({ deallocator: void 0 });
      class S extends class {
        constructor() {
          (this.minX = 1 / 0), (this.minY = 1 / 0), (this.maxX = -1 / 0), (this.maxY = -1 / 0);
        }
      } {
        constructor() {
          super(...arguments), (this.height = 1), (this.indexHint = new n.P());
        }
      }
      class B extends S {
        constructor(e) {
          super(), (this.children = e), (this.leaf = !0);
        }
      }
      class w extends S {
        constructor(e) {
          super(), (this.children = e), (this.leaf = !1);
        }
      }
    },
    4571: (e, t, i) => {
      'use strict';
      i.d(t, { a: () => o, b: () => l, c: () => d, d: () => a });
      var n = i(76506),
        s = i(89219),
        r = i(6941);
      function o(e) {
        return {
          renderer: {
            type: 'simple',
            symbol:
              'esriGeometryPoint' === e || 'esriGeometryMultipoint' === e
                ? r.d
                : 'esriGeometryPolyline' === e
                ? r.a
                : r.b,
          },
        };
      }
      function a(e, t) {
        if ((0, n.h)('csp-restrictions')) return () => ({ [t]: null, ...e });
        try {
          let i = `this.${t} = null;`;
          for (const t in e)
            i += `this${t.indexOf('.') ? `["${t}"]` : `.${t}`} = ${JSON.stringify(e[t])};`;
          const n = new Function(i);
          return () => new n();
        } catch (i) {
          return () => ({ [t]: null, ...e });
        }
      }
      function l(e = {}) {
        return [{ name: 'New Feature', description: '', prototype: { attributes: (0, n.d9)(e) } }];
      }
      function d(e, t) {
        return {
          attachment: null,
          data: { isVersioned: !1, supportsAttachment: !1, supportsM: !1, supportsZ: e },
          metadata: { supportsAdvancedFieldProperties: !1 },
          operations: {
            supportsCalculate: !1,
            supportsTruncate: !1,
            supportsValidateSql: !1,
            supportsAdd: t,
            supportsDelete: t,
            supportsEditing: t,
            supportsChangeTracking: !1,
            supportsQuery: !0,
            supportsQueryAttachments: !1,
            supportsResizeAttachments: !1,
            supportsSync: !1,
            supportsUpdate: t,
            supportsExceedsLimitStatistics: !0,
          },
          query: s.q,
          queryRelated: { supportsCount: !0, supportsOrderBy: !0, supportsPagination: !0 },
          editing: {
            supportsGeometryUpdate: t,
            supportsGlobalId: !1,
            supportsReturnServiceEditsInSourceSpatialReference: !1,
            supportsRollbackOnFailure: !1,
            supportsUpdateWithoutM: !1,
            supportsUploadWithItemId: !1,
            supportsDeleteByAnonymous: !1,
            supportsDeleteByOthers: !1,
            supportsUpdateByAnonymous: !1,
            supportsUpdateByOthers: !1,
          },
        };
      }
    },
    6941: (e, t, i) => {
      'use strict';
      i.d(t, {
        a: () => r,
        b: () => o,
        c: () => a,
        d: () => s,
        e: () => l,
        f: () => d,
        g: () => u,
      });
      const n = [252, 146, 31, 255],
        s = {
          type: 'esriSMS',
          style: 'esriSMSCircle',
          size: 6,
          color: n,
          outline: {
            type: 'esriSLS',
            style: 'esriSLSSolid',
            width: 0.75,
            color: [153, 153, 153, 255],
          },
        },
        r = { type: 'esriSLS', style: 'esriSLSSolid', width: 0.75, color: n },
        o = {
          type: 'esriSFS',
          style: 'esriSFSSolid',
          color: [252, 146, 31, 196],
          outline: {
            type: 'esriSLS',
            style: 'esriSLSSolid',
            width: 0.75,
            color: [255, 255, 255, 191],
          },
        },
        a = {
          type: 'esriTS',
          color: [255, 255, 255, 255],
          font: { family: 'arial-unicode-ms', size: 10, weight: 'bold' },
          horizontalAlignment: 'center',
          kerning: !0,
          haloColor: [0, 0, 0, 255],
          haloSize: 1,
          rotated: !1,
          text: '',
          xoffset: 0,
          yoffset: 0,
          angle: 0,
        },
        l = {
          type: 'esriSMS',
          style: 'esriSMSCircle',
          color: [0, 0, 0, 255],
          outline: null,
          size: 10.5,
        },
        d = { type: 'esriSLS', style: 'esriSLSSolid', color: [0, 0, 0, 255], width: 1.5 },
        u = { type: 'esriSFS', style: 'esriSFSSolid', color: [0, 0, 0, 255], outline: null };
    },
    56240: (e, t, i) => {
      'use strict';
      i.d(t, { _: () => d, f: () => a, p: () => u });
      var n = i(40642),
        s = i(3482);
      const r = {
        ar: ['.', ','],
        bs: [',', '.'],
        ca: [',', '.'],
        cs: [',', ' '],
        da: [',', '.'],
        de: [',', '.'],
        'de-ch': ['.', '’'],
        el: [',', '.'],
        en: ['.', ','],
        'en-au': ['.', ','],
        es: [',', '.'],
        'es-mx': ['.', ','],
        et: [',', ' '],
        fi: [',', ' '],
        fr: [',', ' '],
        'fr-ch': [',', ' '],
        he: ['.', ','],
        hi: ['.', ',', '#,##,##0.###'],
        hr: [',', '.'],
        hu: [',', ' '],
        id: [',', '.'],
        it: [',', '.'],
        'it-ch': ['.', '’'],
        ja: ['.', ','],
        ko: ['.', ','],
        lt: [',', ' '],
        lv: [',', ' '],
        mk: [',', '.'],
        nb: [',', ' '],
        nl: [',', '.'],
        pl: [',', ' '],
        pt: [',', '.'],
        'pt-pt': [',', ' '],
        ro: [',', '.'],
        ru: [',', ' '],
        sk: [',', ' '],
        sl: [',', '.'],
        sr: [',', '.'],
        sv: [',', ' '],
        th: ['.', ','],
        tr: [',', '.'],
        uk: [',', ' '],
        vi: [',', '.'],
        zh: ['.', ','],
      };
      function o(e) {
        e || (e = (0, s.g)());
        let t = e in r;
        if (!t) {
          const i = e.split('-');
          i.length > 1 && i[0] in r && ((e = i[0]), (t = !0)), t || (e = 'en');
        }
        const [i, n, o = '#,##0.###'] = r[e];
        return { decimal: i, group: n, pattern: o };
      }
      function a(e, t) {
        const i = o((t = { ...t }).locale);
        t.customs = i;
        const n = t.pattern || i.pattern;
        return isNaN(e) || Math.abs(e) === 1 / 0
          ? null
          : (function (e, t, i) {
              const n = (i = i || {}).customs.group,
                s = i.customs.decimal,
                r = t.split(';'),
                o = r[0];
              if (-1 !== (t = r[e < 0 ? 1 : 0] || '-' + o).indexOf('%')) e *= 100;
              else if (-1 !== t.indexOf('‰')) e *= 1e3;
              else {
                if (-1 !== t.indexOf('¤')) throw new Error('currency notation not supported');
                if (-1 !== t.indexOf('E')) throw new Error('exponential notation not supported');
              }
              const a = l,
                d = o.match(a);
              if (!d) throw new Error('unable to find a number expression in pattern: ' + t);
              return (
                !1 === i.fractional && (i.places = 0),
                t.replace(
                  a,
                  (function (e, t, i) {
                    !0 === (i = i || {}).places && (i.places = 0),
                      i.places === 1 / 0 && (i.places = 6);
                    const n = t.split('.'),
                      s = 'string' == typeof i.places && i.places.indexOf(',');
                    let r = i.places;
                    s ? (r = i.places.substring(s + 1)) : r >= 0 || (r = (n[1] || []).length),
                      i.round < 0 || (e = Number(e.toFixed(Number(r))));
                    const o = String(Math.abs(e)).split('.'),
                      a = o[1] || '';
                    if (n[1] || i.places) {
                      s && (i.places = i.places.substring(0, s));
                      const e = void 0 !== i.places ? i.places : n[1] && n[1].lastIndexOf('0') + 1;
                      e > a.length && (o[1] = a.padEnd(Number(e), '0')),
                        r < a.length && (o[1] = a.substr(0, Number(r)));
                    } else o[1] && o.pop();
                    const l = n[0].replace(',', '');
                    let d = l.indexOf('0');
                    -1 !== d &&
                      ((d = l.length - d),
                      d > o[0].length && (o[0] = o[0].padStart(d, '0')),
                      -1 === l.indexOf('#') && (o[0] = o[0].substr(o[0].length - d)));
                    let u,
                      c,
                      h = n[0].lastIndexOf(',');
                    if (-1 !== h) {
                      u = n[0].length - h - 1;
                      const e = n[0].substr(0, h);
                      (h = e.lastIndexOf(',')), -1 !== h && (c = e.length - h - 1);
                    }
                    const f = [];
                    for (let e = o[0]; e; ) {
                      const t = e.length - u;
                      f.push(t > 0 ? e.substr(t) : e),
                        (e = t > 0 ? e.slice(0, t) : ''),
                        c && ((u = c), (c = void 0));
                    }
                    return (o[0] = f.reverse().join(i.group || ',')), o.join(i.decimal || '.');
                  })(e, d[0], { decimal: s, group: n, places: i.places, round: i.round }),
                )
              );
            })(e, n, t);
      }
      const l = /[#0,]*[#0](?:\.0*#*)?/;
      function d(e) {
        const t = o((e = e || {}).locale),
          i = e.pattern || t.pattern,
          s = t.group,
          r = t.decimal;
        let a = 1;
        if (-1 !== i.indexOf('%')) a /= 100;
        else if (-1 !== i.indexOf('‰')) a /= 1e3;
        else if (-1 !== i.indexOf('¤')) throw new Error('currency notation not supported');
        const d = i.split(';');
        return (
          1 === d.length && d.push('-' + d[0]),
          {
            regexp: h(
              d,
              function (t) {
                return (t = '(?:' + (0, n.e)(t, '.') + ')').replace(l, function (t) {
                  const i = {
                      signed: !1,
                      separator: e.strict ? s : [s, ''],
                      fractional: e.fractional,
                      decimal: r,
                      exponent: !1,
                    },
                    n = t.split('.');
                  let o = e.places;
                  1 === n.length && 1 !== a && (n[1] = '###'),
                    1 === n.length || 0 === o
                      ? (i.fractional = !1)
                      : (void 0 === o && (o = e.pattern ? n[1].lastIndexOf('0') + 1 : 1 / 0),
                        o && null == e.fractional && (i.fractional = !0),
                        !e.places && o < n[1].length && (o += ',' + n[1].length),
                        (i.places = o));
                  const l = n[0].split(',');
                  return (
                    l.length > 1 &&
                      ((i.groupSize = l.pop().length),
                      l.length > 1 && (i.groupSize2 = l.pop().length)),
                    '(' +
                      (function (e) {
                        'places' in (e = e || {}) || (e.places = 1 / 0),
                          'string' != typeof e.decimal && (e.decimal = '.'),
                          ('fractional' in e && !/^0/.test(String(e.places))) ||
                            (e.fractional = [!0, !1]),
                          'exponent' in e || (e.exponent = [!0, !1]),
                          'eSigned' in e || (e.eSigned = [!0, !1]);
                        const t = c(e),
                          i = h(
                            e.fractional,
                            function (t) {
                              let i = '';
                              return (
                                t &&
                                  0 !== e.places &&
                                  ((i = '\\' + e.decimal),
                                  e.places === 1 / 0
                                    ? (i = '(?:' + i + '\\d+)?')
                                    : (i += '\\d{' + e.places + '}')),
                                i
                              );
                            },
                            !0,
                          );
                        let n = t + i;
                        return (
                          i && (n = '(?:(?:' + n + ')|(?:' + i + '))'),
                          n +
                            h(e.exponent, function (t) {
                              return t ? '([eE]' + c({ signed: e.eSigned }) + ')' : '';
                            })
                        );
                      })(i) +
                      ')'
                  );
                });
              },
              !0,
            ).replace(/[\xa0 ]/g, '[\\s\\xa0]'),
            group: s,
            decimal: r,
            factor: a,
          }
        );
      }
      function u(e, t) {
        const i = d(t),
          n = new RegExp('^' + i.regexp + '$').exec(e);
        if (!n) return NaN;
        let s = n[1];
        if (!n[1]) {
          if (!n[2]) return NaN;
          (s = n[2]), (i.factor *= -1);
        }
        return (
          (s = s.replace(new RegExp('[' + i.group + '\\s\\xa0]', 'g'), '').replace(i.decimal, '.')),
          Number(s) * i.factor
        );
      }
      function c(e) {
        return (
          'signed' in (e = e || {}) || (e.signed = [!0, !1]),
          'separator' in e ? 'groupSize' in e || (e.groupSize = 3) : (e.separator = ''),
          h(
            e.signed,
            function (e) {
              return e ? '[-+]' : '';
            },
            !0,
          ) +
            h(
              e.separator,
              function (t) {
                if (!t) return '(?:\\d+)';
                ' ' === (t = (0, n.e)(t)) ? (t = '\\s') : ' ' === t && (t = '\\s\\xa0');
                const i = e.groupSize,
                  s = e.groupSize2;
                if (s) {
                  const e =
                    '(?:0|[1-9]\\d{0,' +
                    (s - 1) +
                    '}(?:[' +
                    t +
                    ']\\d{' +
                    s +
                    '})*[' +
                    t +
                    ']\\d{' +
                    i +
                    '})';
                  return i - s > 0 ? '(?:' + e + '|(?:0|[1-9]\\d{0,' + (i - 1) + '}))' : e;
                }
                return '(?:0|[1-9]\\d{0,' + (i - 1) + '}(?:[' + t + ']\\d{' + i + '})*)';
              },
              !0,
            )
        );
      }
      const h = function (e, t, i) {
          if (!(e instanceof Array)) return t(e);
          const n = [];
          for (let i = 0; i < e.length; i++) n.push(t(e[i]));
          return f(n.join('|'), i);
        },
        f = function (e, t) {
          return '(' + (t ? '?:' : '') + e + ')';
        };
    },
    44722: (e, t, i) => {
      'use strict';
      i.d(t, { o: () => r });
      var n = i(71331),
        s = i(85674);
      const r = {
        getObjectId: (e) => e.objectId,
        getAttributes: (e) => e.attributes,
        getAttribute: (e, t) => e.attributes[t],
        cloneWithGeometry: (e, t) => new s.O(t, e.attributes, null, e.objectId),
        getGeometry: (e) => e.geometry,
        getCentroid: (e, t) => (
          e.centroid || (e.centroid = (0, n.g)(new s.a(), e.geometry, t.hasZ, t.hasM)), e.centroid
        ),
      };
    },
  },
]);
