PageSourceSearch

https://moma.vn/js/index.js

js moma.vn collected 2026-09-27 21:02:56 UTC 2,597,370 bytes, 68,208 lines download raw bytes

vendor: 78 bytes, lines 1-3
1/******/ (() => { // webpackBootstrap
2/******/ 	var __webpack_modules__ = ({
3
vendor: 198,400 bytes, lines 4-5067
4/***/ "./node_modules/@remix-run/router/dist/router.js":
5/*!*******************************************************!*\
6  !*** ./node_modules/@remix-run/router/dist/router.js ***!
7  \*******************************************************/
8/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
9
10"use strict";
11__webpack_require__.r(__webpack_exports__);
12/* harmony export */ __webpack_require__.d(__webpack_exports__, {
13/* harmony export */   AbortedDeferredError: () => (/* binding */ AbortedDeferredError),
14/* harmony export */   Action: () => (/* binding */ Action),
15/* harmony export */   IDLE_BLOCKER: () => (/* binding */ IDLE_BLOCKER),
16/* harmony export */   IDLE_FETCHER: () => (/* binding */ IDLE_FETCHER),
17/* harmony export */   IDLE_NAVIGATION: () => (/* binding */ IDLE_NAVIGATION),
18/* harmony export */   UNSAFE_DEFERRED_SYMBOL: () => (/* binding */ UNSAFE_DEFERRED_SYMBOL),
19/* harmony export */   UNSAFE_DeferredData: () => (/* binding */ DeferredData),
20/* harmony export */   UNSAFE_ErrorResponseImpl: () => (/* binding */ ErrorResponseImpl),
21/* harmony export */   UNSAFE_convertRouteMatchToUiMatch: () => (/* binding */ convertRouteMatchToUiMatch),
22/* harmony export */   UNSAFE_convertRoutesToDataRoutes: () => (/* binding */ convertRoutesToDataRoutes),
23/* harmony export */   UNSAFE_decodePath: () => (/* binding */ decodePath),
24/* harmony export */   UNSAFE_getResolveToMatches: () => (/* binding */ getResolveToMatches),
25/* harmony export */   UNSAFE_invariant: () => (/* binding */ invariant),
26/* harmony export */   UNSAFE_warning: () => (/* binding */ warning),
27/* harmony export */   createBrowserHistory: () => (/* binding */ createBrowserHistory),
28/* harmony export */   createHashHistory: () => (/* binding */ createHashHistory),
29/* harmony export */   createMemoryHistory: () => (/* binding */ createMemoryHistory),
30/* harmony export */   createPath: () => (/* binding */ createPath),
31/* harmony export */   createRouter: () => (/* binding */ createRouter),
32/* harmony export */   createStaticHandler: () => (/* binding */ createStaticHandler),
33/* harmony export */   data: () => (/* binding */ data),
34/* harmony export */   defer: () => (/* binding */ defer),
35/* harmony export */   generatePath: () => (/* binding */ generatePath),
36/* harmony export */   getStaticContextFromError: () => (/* binding */ getStaticContextFromError),
37/* harmony export */   getToPathname: () => (/* binding */ getToPathname),
38/* harmony export */   isDataWithResponseInit: () => (/* binding */ isDataWithResponseInit),
39/* harmony export */   isDeferredData: () => (/* binding */ isDeferredData),
40/* harmony export */   isRouteErrorResponse: () => (/* binding */ isRouteErrorResponse),
41/* harmony export */   joinPaths: () => (/* binding */ joinPaths),
42/* harmony export */   json: () => (/* binding */ json),
43/* harmony export */   matchPath: () => (/* binding */ matchPath),
44/* harmony export */   matchRoutes: () => (/* binding */ matchRoutes),
45/* harmony export */   normalizePathname: () => (/* binding */ normalizePathname),
46/* harmony export */   parsePath: () => (/* binding */ parsePath),
47/* harmony export */   redirect: () => (/* binding */ redirect),
48/* harmony export */   redirectDocument: () => (/* binding */ redirectDocument),
49/* harmony export */   replace: () => (/* binding */ replace),
50/* harmony export */   resolvePath: () => (/* binding */ resolvePath),
51/* harmony export */   resolveTo: () => (/* binding */ resolveTo),
52/* harmony export */   stripBasename: () => (/* binding */ stripBasename)
53/* harmony export */ });
54/**
55 * @remix-run/router v1.21.0
56 *
57 * Copyright (c) Remix Software Inc.
58 *
59 * This source code is licensed under the MIT license found in the
60 * LICENSE.md file in the root directory of this source tree.
61 *
62 * @license MIT
63 */
64function _extends() {
65  _extends = Object.assign ? Object.assign.bind() : function (target) {
66    for (var i = 1; i < arguments.length; i++) {
67      var source = arguments[i];
68      for (var key in source) {
69        if (Object.prototype.hasOwnProperty.call(source, key)) {
70          target[key] = source[key];
71        }
72      }
73    }
74    return target;
75  };
76  return _extends.apply(this, arguments);
77}
78
79////////////////////////////////////////////////////////////////////////////////
80//#region Types and Constants
81////////////////////////////////////////////////////////////////////////////////
82/**
83 * Actions represent the type of change to a location value.
84 */
85var Action;
86(function (Action) {
87  /**
88   * A POP indicates a change to an arbitrary index in the history stack, such
89   * as a back or forward navigation. It does not describe the direction of the
90   * navigation, only that the current index changed.
91   *
92   * Note: This is the default action for newly created history objects.
93   */
94  Action["Pop"] = "POP";
95  /**
96   * A PUSH indicates a new entry being added to the history stack, such as when
97   * a link is clicked and a new page loads. When this happens, all subsequent
98   * entries in the stack are lost.
99   */
100  Action["Push"] = "PUSH";
101  /**
102   * A REPLACE indicates the entry at the current index in the history stack
103   * being replaced by a new one.
104   */
105  Action["Replace"] = "REPLACE";
106})(Action || (Action = {}));
107const PopStateEventType = "popstate";
108/**
109 * Memory history stores the current location in memory. It is designed for use
110 * in stateful non-browser environments like tests and React Native.
111 */
112function createMemoryHistory(options) {
113  if (options === void 0) {
114    options = {};
115  }
116  let {
117    initialEntries = ["/"],
118    initialIndex,
119    v5Compat = false
120  } = options;
121  let entries; // Declare so we can access from createMemoryLocation
122  entries = initialEntries.map((entry, index) => createMemoryLocation(entry, typeof entry === "string" ? null : entry.state, index === 0 ? "default" : undefined));
123  let index = clampIndex(initialIndex == null ? entries.length - 1 : initialIndex);
124  let action = Action.Pop;
125  let listener = null;
126  function clampIndex(n) {
127    return Math.min(Math.max(n, 0), entries.length - 1);
128  }
129  function getCurrentLocation() {
130    return entries[index];
131  }
132  function createMemoryLocation(to, state, key) {
133    if (state === void 0) {
134      state = null;
135    }
136    let location = createLocation(entries ? getCurrentLocation().pathname : "/", to, state, key);
137    warning(location.pathname.charAt(0) === "/", "relative pathnames are not supported in memory history: " + JSON.stringify(to));
138    return location;
139  }
140  function createHref(to) {
141    return typeof to === "string" ? to : createPath(to);
142  }
143  let history = {
144    get index() {
145      return index;
146    },
147    get action() {
148      return action;
149    },
150    get location() {
151      return getCurrentLocation();
152    },
153    createHref,
154    createURL(to) {
155      return new URL(createHref(to), "http://localhost");
156    },
157    encodeLocation(to) {
158      let path = typeof to === "string" ? parsePath(to) : to;
159      return {
160        pathname: path.pathname || "",
161        search: path.search || "",
162        hash: path.hash || ""
163      };
164    },
165    push(to, state) {
166      action = Action.Push;
167      let nextLocation = createMemoryLocation(to, state);
168      index += 1;
169      entries.splice(index, entries.length, nextLocation);
170      if (v5Compat && listener) {
171        listener({
172          action,
173          location: nextLocation,
174          delta: 1
175        });
176      }
177    },
178    replace(to, state) {
179      action = Action.Replace;
180      let nextLocation = createMemoryLocation(to, state);
181      entries[index] = nextLocation;
182      if (v5Compat && listener) {
183        listener({
184          action,
185          location: nextLocation,
186          delta: 0
187        });
188      }
189    },
190    go(delta) {
191      action = Action.Pop;
192      let nextIndex = clampIndex(index + delta);
193      let nextLocation = entries[nextIndex];
194      index = nextIndex;
195      if (listener) {
196        listener({
197          action,
198          location: nextLocation,
199          delta
200        });
201      }
202    },
203    listen(fn) {
204      listener = fn;
205      return () => {
206        listener = null;
207      };
208    }
209  };
210  return history;
211}
212/**
213 * Browser history stores the location in regular URLs. This is the standard for
214 * most web apps, but it requires some configuration on the server to ensure you
215 * serve the same app at multiple URLs.
216 *
217 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory
218 */
219function createBrowserHistory(options) {
220  if (options === void 0) {
221    options = {};
222  }
223  function createBrowserLocation(window, globalHistory) {
224    let {
225      pathname,
226      search,
227      hash
228    } = window.location;
229    return createLocation("", {
230      pathname,
231      search,
232      hash
233    },
234    // state defaults to `null` because `window.history.state` does
235    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || "default");
236  }
237  function createBrowserHref(window, to) {
238    return typeof to === "string" ? to : createPath(to);
239  }
240  return getUrlBasedHistory(createBrowserLocation, createBrowserHref, null, options);
241}
242/**
243 * Hash history stores the location in window.location.hash. This makes it ideal
244 * for situations where you don't want to send the location to the server for
245 * some reason, either because you do cannot configure it or the URL space is
246 * reserved for something else.
247 *
248 * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory
249 */
250function createHashHistory(options) {
251  if (options === void 0) {
252    options = {};
253  }
254  function createHashLocation(window, globalHistory) {
255    let {
256      pathname = "/",
257      search = "",
258      hash = ""
259    } = parsePath(window.location.hash.substr(1));
260    // Hash URL should always have a leading / just like window.location.pathname
261    // does, so if an app ends up at a route like /#something then we add a
262    // leading slash so all of our path-matching behaves the same as if it would
263    // in a browser router.  This is particularly important when there exists a
264    // root splat route (<Route path="*">) since that matches internally against
265    // "/*" and we'd expect /#something to 404 in a hash router app.
266    if (!pathname.startsWith("/") && !pathname.startsWith(".")) {
267      pathname = "/" + pathname;
268    }
269    return createLocation("", {
270      pathname,
271      search,
272      hash
273    },
274    // state defaults to `null` because `window.history.state` does
275    globalHistory.state && globalHistory.state.usr || null, globalHistory.state && globalHistory.state.key || "default");
276  }
277  function createHashHref(window, to) {
278    let base = window.document.querySelector("base");
279    let href = "";
280    if (base && base.getAttribute("href")) {
281      let url = window.location.href;
282      let hashIndex = url.indexOf("#");
283      href = hashIndex === -1 ? url : url.slice(0, hashIndex);
284    }
285    return href + "#" + (typeof to === "string" ? to : createPath(to));
286  }
287  function validateHashLocation(location, to) {
288    warning(location.pathname.charAt(0) === "/", "relative pathnames are not supported in hash history.push(" + JSON.stringify(to) + ")");
289  }
290  return getUrlBasedHistory(createHashLocation, createHashHref, validateHashLocation, options);
291}
292function invariant(value, message) {
293  if (value === false || value === null || typeof value === "undefined") {
294    throw new Error(message);
295  }
296}
297function warning(cond, message) {
298  if (!cond) {
299    // eslint-disable-next-line no-console
300    if (typeof console !== "undefined") console.warn(message);
301    try {
302      // Welcome to debugging history!
303      //
304      // This error is thrown as a convenience, so you can more easily
305      // find the source for a warning that appears in the console by
306      // enabling "pause on exceptions" in your JavaScript debugger.
307      throw new Error(message);
308      // eslint-disable-next-line no-empty
309    } catch (e) {}
310  }
311}
312function createKey() {
313  return Math.random().toString(36).substr(2, 8);
314}
315/**
316 * For browser-based histories, we combine the state and key into an object
317 */
318function getHistoryState(location, index) {
319  return {
320    usr: location.state,
321    key: location.key,
322    idx: index
323  };
324}
325/**
326 * Creates a Location object with a unique key from the given Path
327 */
328function createLocation(current, to, state, key) {
329  if (state === void 0) {
330    state = null;
331  }
332  let location = _extends({
333    pathname: typeof current === "string" ? current : current.pathname,
334    search: "",
335    hash: ""
336  }, typeof to === "string" ? parsePath(to) : to, {
337    state,
338    // TODO: This could be cleaned up.  push/replace should probably just take
339    // full Locations now and avoid the need to run through this flow at all
340    // But that's a pretty big refactor to the current test suite so going to
341    // keep as is for the time being and just let any incoming keys take precedence
342    key: to && to.key || key || createKey()
343  });
344  return location;
345}
346/**
347 * Creates a string URL path from the given pathname, search, and hash components.
348 */
349function createPath(_ref) {
350  let {
351    pathname = "/",
352    search = "",
353    hash = ""
354  } = _ref;
355  if (search && search !== "?") pathname += search.charAt(0) === "?" ? search : "?" + search;
356  if (hash && hash !== "#") pathname += hash.charAt(0) === "#" ? hash : "#" + hash;
357  return pathname;
358}
359/**
360 * Parses a string URL path into its separate pathname, search, and hash components.
361 */
362function parsePath(path) {
363  let parsedPath = {};
364  if (path) {
365    let hashIndex = path.indexOf("#");
366    if (hashIndex >= 0) {
367      parsedPath.hash = path.substr(hashIndex);
368      path = path.substr(0, hashIndex);
369    }
370    let searchIndex = path.indexOf("?");
371    if (searchIndex >= 0) {
372      parsedPath.search = path.substr(searchIndex);
373      path = path.substr(0, searchIndex);
374    }
375    if (path) {
376      parsedPath.pathname = path;
377    }
378  }
379  return parsedPath;
380}
381function getUrlBasedHistory(getLocation, createHref, validateLocation, options) {
382  if (options === void 0) {
383    options = {};
384  }
385  let {
386    window = document.defaultView,
387    v5Compat = false
388  } = options;
389  let globalHistory = window.history;
390  let action = Action.Pop;
391  let listener = null;
392  let index = getIndex();
393  // Index should only be null when we initialize. If not, it's because the
394  // user called history.pushState or history.replaceState directly, in which
395  // case we should log a warning as it will result in bugs.
396  if (index == null) {
397    index = 0;
398    globalHistory.replaceState(_extends({}, globalHistory.state, {
399      idx: index
400    }), "");
401  }
402  function getIndex() {
403    let state = globalHistory.state || {
404      idx: null
405    };
406    return state.idx;
407  }
408  function handlePop() {
409    action = Action.Pop;
410    let nextIndex = getIndex();
411    let delta = nextIndex == null ? null : nextIndex - index;
412    index = nextIndex;
413    if (listener) {
414      listener({
415        action,
416        location: history.location,
417        delta
418      });
419    }
420  }
421  function push(to, state) {
422    action = Action.Push;
423    let location = createLocation(history.location, to, state);
424    if (validateLocation) validateLocation(location, to);
425    index = getIndex() + 1;
426    let historyState = getHistoryState(location, index);
427    let url = history.createHref(location);
428    // try...catch because iOS limits us to 100 pushState calls :/
429    try {
430      globalHistory.pushState(historyState, "", url);
431    } catch (error) {
432      // If the exception is because `state` can't be serialized, let that throw
433      // outwards just like a replace call would so the dev knows the cause
434      // https://html.spec.whatwg.org/multipage/nav-history-apis.html#shared-history-push/replace-state-steps
435      // https://html.spec.whatwg.org/multipage/structured-data.html#structuredserializeinternal
436      if (error instanceof DOMException && error.name === "DataCloneError") {
437        throw error;
438      }
439      // They are going to lose state here, but there is no real
440      // way to warn them about it since the page will refresh...
441      window.location.assign(url);
442    }
443    if (v5Compat && listener) {
444      listener({
445        action,
446        location: history.location,
447        delta: 1
448      });
449    }
450  }
451  function replace(to, state) {
452    action = Action.Replace;
453    let location = createLocation(history.location, to, state);
454    if (validateLocation) validateLocation(location, to);
455    index = getIndex();
456    let historyState = getHistoryState(location, index);
457    let url = history.createHref(location);
458    globalHistory.replaceState(historyState, "", url);
459    if (v5Compat && listener) {
460      listener({
461        action,
462        location: history.location,
463        delta: 0
464      });
465    }
466  }
467  function createURL(to) {
468    // window.location.origin is "null" (the literal string value) in Firefox
469    // under certain conditions, notably when serving from a local HTML file
470    // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297
471    let base = window.location.origin !== "null" ? window.location.origin : window.location.href;
472    let href = typeof to === "string" ? to : createPath(to);
473    // Treating this as a full URL will strip any trailing spaces so we need to
474    // pre-encode them since they might be part of a matching splat param from
475    // an ancestor route
476    href = href.replace(/ $/, "%20");
477    invariant(base, "No window.location.(origin|href) available to create URL for href: " + href);
478    return new URL(href, base);
479  }
480  let history = {
481    get action() {
482      return action;
483    },
484    get location() {
485      return getLocation(window, globalHistory);
486    },
487    listen(fn) {
488      if (listener) {
489        throw new Error("A history only accepts one active listener");
490      }
491      window.addEventListener(PopStateEventType, handlePop);
492      listener = fn;
493      return () => {
494        window.removeEventListener(PopStateEventType, handlePop);
495        listener = null;
496      };
497    },
498    createHref(to) {
499      return createHref(window, to);
500    },
501    createURL,
502    encodeLocation(to) {
503      // Encode a Location the same way window.location would
504      let url = createURL(to);
505      return {
506        pathname: url.pathname,
507        search: url.search,
508        hash: url.hash
509      };
510    },
511    push,
512    replace,
513    go(n) {
514      return globalHistory.go(n);
515    }
516  };
517  return history;
518}
519//#endregion
520
521var ResultType;
522(function (ResultType) {
523  ResultType["data"] = "data";
524  ResultType["deferred"] = "deferred";
525  ResultType["redirect"] = "redirect";
526  ResultType["error"] = "error";
527})(ResultType || (ResultType = {}));
528const immutableRouteKeys = new Set(["lazy", "caseSensitive", "path", "id", "index", "children"]);
529function isIndexRoute(route) {
530  return route.index === true;
531}
532// Walk the route tree generating unique IDs where necessary, so we are working
533// solely with AgnosticDataRouteObject's within the Router
534function convertRoutesToDataRoutes(routes, mapRouteProperties, parentPath, manifest) {
535  if (parentPath === void 0) {
536    parentPath = [];
537  }
538  if (manifest === void 0) {
539    manifest = {};
540  }
541  return routes.map((route, index) => {
542    let treePath = [...parentPath, String(index)];
543    let id = typeof route.id === "string" ? route.id : treePath.join("-");
544    invariant(route.index !== true || !route.children, "Cannot specify children on an index route");
545    invariant(!manifest[id], "Found a route id collision on id \"" + id + "\".  Route " + "id's must be globally unique within Data Router usages");
546    if (isIndexRoute(route)) {
547      let indexRoute = _extends({}, route, mapRouteProperties(route), {
548        id
549      });
550      manifest[id] = indexRoute;
551      return indexRoute;
552    } else {
553      let pathOrLayoutRoute = _extends({}, route, mapRouteProperties(route), {
554        id,
555        children: undefined
556      });
557      manifest[id] = pathOrLayoutRoute;
558      if (route.children) {
559        pathOrLayoutRoute.children = convertRoutesToDataRoutes(route.children, mapRouteProperties, treePath, manifest);
560      }
561      return pathOrLayoutRoute;
562    }
563  });
564}
565/**
566 * Matches the given routes to a location and returns the match data.
567 *
568 * @see https://reactrouter.com/v6/utils/match-routes
569 */
570function matchRoutes(routes, locationArg, basename) {
571  if (basename === void 0) {
572    basename = "/";
573  }
574  return matchRoutesImpl(routes, locationArg, basename, false);
575}
576function matchRoutesImpl(routes, locationArg, basename, allowPartial) {
577  let location = typeof locationArg === "string" ? parsePath(locationArg) : locationArg;
578  let pathname = stripBasename(location.pathname || "/", basename);
579  if (pathname == null) {
580    return null;
581  }
582  let branches = flattenRoutes(routes);
583  rankRouteBranches(branches);
584  let matches = null;
585  for (let i = 0; matches == null && i < branches.length; ++i) {
586    // Incoming pathnames are generally encoded from either window.location
587    // or from router.navigate, but we want to match against the unencoded
588    // paths in the route definitions.  Memory router locations won't be
589    // encoded here but there also shouldn't be anything to decode so this
590    // should be a safe operation.  This avoids needing matchRoutes to be
591    // history-aware.
592    let decoded = decodePath(pathname);
593    matches = matchRouteBranch(branches[i], decoded, allowPartial);
594  }
595  return matches;
596}
597function convertRouteMatchToUiMatch(match, loaderData) {
598  let {
599    route,
600    pathname,
601    params
602  } = match;
603  return {
604    id: route.id,
605    pathname,
606    params,
607    data: loaderData[route.id],
608    handle: route.handle
609  };
610}
611function flattenRoutes(routes, branches, parentsMeta, parentPath) {
612  if (branches === void 0) {
613    branches = [];
614  }
615  if (parentsMeta === void 0) {
616    parentsMeta = [];
617  }
618  if (parentPath === void 0) {
619    parentPath = "";
620  }
621  let flattenRoute = (route, index, relativePath) => {
622    let meta = {
623      relativePath: relativePath === undefined ? route.path || "" : relativePath,
624      caseSensitive: route.caseSensitive === true,
625      childrenIndex: index,
626      route
627    };
628    if (meta.relativePath.startsWith("/")) {
629      invariant(meta.relativePath.startsWith(parentPath), "Absolute route path \"" + meta.relativePath + "\" nested under path " + ("\"" + parentPath + "\" is not valid. An absolute child route path ") + "must start with the combined path of all its parent routes.");
630      meta.relativePath = meta.relativePath.slice(parentPath.length);
631    }
632    let path = joinPaths([parentPath, meta.relativePath]);
633    let routesMeta = parentsMeta.concat(meta);
634    // Add the children before adding this route to the array, so we traverse the
635    // route tree depth-first and child routes appear before their parents in
636    // the "flattened" version.
637    if (route.children && route.children.length > 0) {
638      invariant(
639      // Our types know better, but runtime JS may not!
640      // @ts-expect-error
641      route.index !== true, "Index routes must not have child routes. Please remove " + ("all child routes from route path \"" + path + "\"."));
642      flattenRoutes(route.children, branches, routesMeta, path);
643    }
644    // Routes without a path shouldn't ever match by themselves unless they are
645    // index routes, so don't add them to the list of possible branches.
646    if (route.path == null && !route.index) {
647      return;
648    }
649    branches.push({
650      path,
651      score: computeScore(path, route.index),
652      routesMeta
653    });
654  };
655  routes.forEach((route, index) => {
656    var _route$path;
657    // coarse-grain check for optional params
658    if (route.path === "" || !((_route$path = route.path) != null && _route$path.includes("?"))) {
659      flattenRoute(route, index);
660    } else {
661      for (let exploded of explodeOptionalSegments(route.path)) {
662        flattenRoute(route, index, exploded);
663      }
664    }
665  });
666  return branches;
667}
668/**
669 * Computes all combinations of optional path segments for a given path,
670 * excluding combinations that are ambiguous and of lower priority.
671 *
672 * For example, `/one/:two?/three/:four?/:five?` explodes to:
673 * - `/one/three`
674 * - `/one/:two/three`
675 * - `/one/three/:four`
676 * - `/one/three/:five`
677 * - `/one/:two/three/:four`
678 * - `/one/:two/three/:five`
679 * - `/one/three/:four/:five`
680 * - `/one/:two/three/:four/:five`
681 */
682function explodeOptionalSegments(path) {
683  let segments = path.split("/");
684  if (segments.length === 0) return [];
685  let [first, ...rest] = segments;
686  // Optional path segments are denoted by a trailing `?`
687  let isOptional = first.endsWith("?");
688  // Compute the corresponding required segment: `foo?` -> `foo`
689  let required = first.replace(/\?$/, "");
690  if (rest.length === 0) {
691    // Intepret empty string as omitting an optional segment
692    // `["one", "", "three"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`
693    return isOptional ? [required, ""] : [required];
694  }
695  let restExploded = explodeOptionalSegments(rest.join("/"));
696  let result = [];
697  // All child paths with the prefix.  Do this for all children before the
698  // optional version for all children, so we get consistent ordering where the
699  // parent optional aspect is preferred as required.  Otherwise, we can get
700  // child sections interspersed where deeper optional segments are higher than
701  // parent optional segments, where for example, /:two would explode _earlier_
702  // then /:one.  By always including the parent as required _for all children_
703  // first, we avoid this issue
704  result.push(...restExploded.map(subpath => subpath === "" ? required : [required, subpath].join("/")));
705  // Then, if this is an optional value, add all child versions without
706  if (isOptional) {
707    result.push(...restExploded);
708  }
709  // for absolute paths, ensure `/` instead of empty segment
710  return result.map(exploded => path.startsWith("/") && exploded === "" ? "/" : exploded);
711}
712function rankRouteBranches(branches) {
713  branches.sort((a, b) => a.score !== b.score ? b.score - a.score // Higher score first
714  : compareIndexes(a.routesMeta.map(meta => meta.childrenIndex), b.routesMeta.map(meta => meta.childrenIndex)));
715}
716const paramRe = /^:[\w-]+$/;
717const dynamicSegmentValue = 3;
718const indexRouteValue = 2;
719const emptySegmentValue = 1;
720const staticSegmentValue = 10;
721const splatPenalty = -2;
722const isSplat = s => s === "*";
723function computeScore(path, index) {
724  let segments = path.split("/");
725  let initialScore = segments.length;
726  if (segments.some(isSplat)) {
727    initialScore += splatPenalty;
728  }
729  if (index) {
730    initialScore += indexRouteValue;
731  }
732  return segments.filter(s => !isSplat(s)).reduce((score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === "" ? emptySegmentValue : staticSegmentValue), initialScore);
733}
734function compareIndexes(a, b) {
735  let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);
736  return siblings ?
737  // If two routes are siblings, we should try to match the earlier sibling
738  // first. This allows people to have fine-grained control over the matching
739  // behavior by simply putting routes with identical paths in the order they
740  // want them tried.
741  a[a.length - 1] - b[b.length - 1] :
742  // Otherwise, it doesn't really make sense to rank non-siblings by index,
743  // so they sort equally.
744  0;
745}
746function matchRouteBranch(branch, pathname, allowPartial) {
747  if (allowPartial === void 0) {
748    allowPartial = false;
749  }
750  let {
751    routesMeta
752  } = branch;
753  let matchedParams = {};
754  let matchedPathname = "/";
755  let matches = [];
756  for (let i = 0; i < routesMeta.length; ++i) {
757    let meta = routesMeta[i];
758    let end = i === routesMeta.length - 1;
759    let remainingPathname = matchedPathname === "/" ? pathname : pathname.slice(matchedPathname.length) || "/";
760    let match = matchPath({
761      path: meta.relativePath,
762      caseSensitive: meta.caseSensitive,
763      end
764    }, remainingPathname);
765    let route = meta.route;
766    if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {
767      match = matchPath({
768        path: meta.relativePath,
769        caseSensitive: meta.caseSensitive,
770        end: false
771      }, remainingPathname);
772    }
773    if (!match) {
774      return null;
775    }
776    Object.assign(matchedParams, match.params);
777    matches.push({
778      // TODO: Can this as be avoided?
779      params: matchedParams,
780      pathname: joinPaths([matchedPathname, match.pathname]),
781      pathnameBase: normalizePathname(joinPaths([matchedPathname, match.pathnameBase])),
782      route
783    });
784    if (match.pathnameBase !== "/") {
785      matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);
786    }
787  }
788  return matches;
789}
790/**
791 * Returns a path with params interpolated.
792 *
793 * @see https://reactrouter.com/v6/utils/generate-path
794 */
795function generatePath(originalPath, params) {
796  if (params === void 0) {
797    params = {};
798  }
799  let path = originalPath;
800  if (path.endsWith("*") && path !== "*" && !path.endsWith("/*")) {
801    warning(false, "Route path \"" + path + "\" will be treated as if it were " + ("\"" + path.replace(/\*$/, "/*") + "\" because the `*` character must ") + "always follow a `/` in the pattern. To get rid of this warning, " + ("please change the route path to \"" + path.replace(/\*$/, "/*") + "\"."));
802    path = path.replace(/\*$/, "/*");
803  }
804  // ensure `/` is added at the beginning if the path is absolute
805  const prefix = path.startsWith("/") ? "/" : "";
806  const stringify = p => p == null ? "" : typeof p === "string" ? p : String(p);
807  const segments = path.split(/\/+/).map((segment, index, array) => {
808    const isLastSegment = index === array.length - 1;
809    // only apply the splat if it's the last segment
810    if (isLastSegment && segment === "*") {
811      const star = "*";
812      // Apply the splat
813      return stringify(params[star]);
814    }
815    const keyMatch = segment.match(/^:([\w-]+)(\??)$/);
816    if (keyMatch) {
817      const [, key, optional] = keyMatch;
818      let param = params[key];
819      invariant(optional === "?" || param != null, "Missing \":" + key + "\" param");
820      return stringify(param);
821    }
822    // Remove any optional markers from optional static segments
823    return segment.replace(/\?$/g, "");
824  })
825  // Remove empty segments
826  .filter(segment => !!segment);
827  return prefix + segments.join("/");
828}
829/**
830 * Performs pattern matching on a URL pathname and returns information about
831 * the match.
832 *
833 * @see https://reactrouter.com/v6/utils/match-path
834 */
835function matchPath(pattern, pathname) {
836  if (typeof pattern === "string") {
837    pattern = {
838      path: pattern,
839      caseSensitive: false,
840      end: true
841    };
842  }
843  let [matcher, compiledParams] = compilePath(pattern.path, pattern.caseSensitive, pattern.end);
844  let match = pathname.match(matcher);
845  if (!match) return null;
846  let matchedPathname = match[0];
847  let pathnameBase = matchedPathname.replace(/(.)\/+$/, "$1");
848  let captureGroups = match.slice(1);
849  let params = compiledParams.reduce((memo, _ref, index) => {
850    let {
851      paramName,
852      isOptional
853    } = _ref;
854    // We need to compute the pathnameBase here using the raw splat value
855    // instead of using params["*"] later because it will be decoded then
856    if (paramName === "*") {
857      let splatValue = captureGroups[index] || "";
858      pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\/+$/, "$1");
859    }
860    const value = captureGroups[index];
861    if (isOptional && !value) {
862      memo[paramName] = undefined;
863    } else {
864      memo[paramName] = (value || "").replace(/%2F/g, "/");
865    }
866    return memo;
867  }, {});
868  return {
869    params,
870    pathname: matchedPathname,
871    pathnameBase,
872    pattern
873  };
874}
875function compilePath(path, caseSensitive, end) {
876  if (caseSensitive === void 0) {
877    caseSensitive = false;
878  }
879  if (end === void 0) {
880    end = true;
881  }
882  warning(path === "*" || !path.endsWith("*") || path.endsWith("/*"), "Route path \"" + path + "\" will be treated as if it were " + ("\"" + path.replace(/\*$/, "/*") + "\" because the `*` character must ") + "always follow a `/` in the pattern. To get rid of this warning, " + ("please change the route path to \"" + path.replace(/\*$/, "/*") + "\"."));
883  let params = [];
884  let regexpSource = "^" + path.replace(/\/*\*?$/, "") // Ignore trailing / and /*, we'll handle it below
885  .replace(/^\/*/, "/") // Make sure it has a leading /
886  .replace(/[\\.*+^${}|()[\]]/g, "\\$&") // Escape special regex chars
887  .replace(/\/:([\w-]+)(\?)?/g, (_, paramName, isOptional) => {
888    params.push({
889      paramName,
890      isOptional: isOptional != null
891    });
892    return isOptional ? "/?([^\\/]+)?" : "/([^\\/]+)";
893  });
894  if (path.endsWith("*")) {
895    params.push({
896      paramName: "*"
897    });
898    regexpSource += path === "*" || path === "/*" ? "(.*)$" // Already matched the initial /, just match the rest
899    : "(?:\\/(.+)|\\/*)$"; // Don't include the / in params["*"]
900  } else if (end) {
901    // When matching to the end, ignore trailing slashes
902    regexpSource += "\\/*$";
903  } else if (path !== "" && path !== "/") {
904    // If our path is non-empty and contains anything beyond an initial slash,
905    // then we have _some_ form of path in our regex, so we should expect to
906    // match only if we find the end of this path segment.  Look for an optional
907    // non-captured trailing slash (to match a portion of the URL) or the end
908    // of the path (if we've matched to the end).  We used to do this with a
909    // word boundary but that gives false positives on routes like
910    // /user-preferences since `-` counts as a word boundary.
911    regexpSource += "(?:(?=\\/|$))";
912  } else ;
913  let matcher = new RegExp(regexpSource, caseSensitive ? undefined : "i");
914  return [matcher, params];
915}
916function decodePath(value) {
917  try {
918    return value.split("/").map(v => decodeURIComponent(v).replace(/\//g, "%2F")).join("/");
919  } catch (error) {
920    warning(false, "The URL path \"" + value + "\" could not be decoded because it is is a " + "malformed URL segment. This is probably due to a bad percent " + ("encoding (" + error + ")."));
921    return value;
922  }
923}
924/**
925 * @private
926 */
927function stripBasename(pathname, basename) {
928  if (basename === "/") return pathname;
929  if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {
930    return null;
931  }
932  // We want to leave trailing slash behavior in the user's control, so if they
933  // specify a basename with a trailing slash, we should support it
934  let startIndex = basename.endsWith("/") ? basename.length - 1 : basename.length;
935  let nextChar = pathname.charAt(startIndex);
936  if (nextChar && nextChar !== "/") {
937    // pathname does not start with basename/
938    return null;
939  }
940  return pathname.slice(startIndex) || "/";
941}
942/**
943 * Returns a resolved path object relative to the given pathname.
944 *
945 * @see https://reactrouter.com/v6/utils/resolve-path
946 */
947function resolvePath(to, fromPathname) {
948  if (fromPathname === void 0) {
949    fromPathname = "/";
950  }
951  let {
952    pathname: toPathname,
953    search = "",
954    hash = ""
955  } = typeof to === "string" ? parsePath(to) : to;
956  let pathname = toPathname ? toPathname.startsWith("/") ? toPathname : resolvePathname(toPathname, fromPathname) : fromPathname;
957  return {
958    pathname,
959    search: normalizeSearch(search),
960    hash: normalizeHash(hash)
961  };
962}
963function resolvePathname(relativePath, fromPathname) {
964  let segments = fromPathname.replace(/\/+$/, "").split("/");
965  let relativeSegments = relativePath.split("/");
966  relativeSegments.forEach(segment => {
967    if (segment === "..") {
968      // Keep the root "" segment so the pathname starts at /
969      if (segments.length > 1) segments.pop();
970    } else if (segment !== ".") {
971      segments.push(segment);
972    }
973  });
974  return segments.length > 1 ? segments.join("/") : "/";
975}
976function getInvalidPathError(char, field, dest, path) {
977  return "Cannot include a '" + char + "' character in a manually specified " + ("`to." + field + "` field [" + JSON.stringify(path) + "].  Please separate it out to the ") + ("`to." + dest + "` field. Alternatively you may provide the full path as ") + "a string in <Link to=\"...\"> and the router will parse it for you.";
978}
979/**
980 * @private
981 *
982 * When processing relative navigation we want to ignore ancestor routes that
983 * do not contribute to the path, such that index/pathless layout routes don't
984 * interfere.
985 *
986 * For example, when moving a route element into an index route and/or a
987 * pathless layout route, relative link behavior contained within should stay
988 * the same.  Both of the following examples should link back to the root:
989 *
990 *   <Route path="/">
991 *     <Route path="accounts" element={<Link to=".."}>
992 *   </Route>
993 *
994 *   <Route path="/">
995 *     <Route path="accounts">
996 *       <Route element={<AccountsLayout />}>       // <-- Does not contribute
997 *         <Route index element={<Link to=".."} />  // <-- Does not contribute
998 *       </Route
999 *     </Route>
1000 *   </Route>
1001 */
1002function getPathContributingMatches(matches) {
1003  return matches.filter((match, index) => index === 0 || match.route.path && match.route.path.length > 0);
1004}
1005// Return the array of pathnames for the current route matches - used to
1006// generate the routePathnames input for resolveTo()
1007function getResolveToMatches(matches, v7_relativeSplatPath) {
1008  let pathMatches = getPathContributingMatches(matches);
1009  // When v7_relativeSplatPath is enabled, use the full pathname for the leaf
1010  // match so we include splat values for "." links.  See:
1011  // https://github.com/remix-run/react-router/issues/11052#issuecomment-1836589329
1012  if (v7_relativeSplatPath) {
1013    return pathMatches.map((match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase);
1014  }
1015  return pathMatches.map(match => match.pathnameBase);
1016}
1017/**
1018 * @private
1019 */
1020function resolveTo(toArg, routePathnames, locationPathname, isPathRelative) {
1021  if (isPathRelative === void 0) {
1022    isPathRelative = false;
1023  }
1024  let to;
1025  if (typeof toArg === "string") {
1026    to = parsePath(toArg);
1027  } else {
1028    to = _extends({}, toArg);
1029    invariant(!to.pathname || !to.pathname.includes("?"), getInvalidPathError("?", "pathname", "search", to));
1030    invariant(!to.pathname || !to.pathname.includes("#"), getInvalidPathError("#", "pathname", "hash", to));
1031    invariant(!to.search || !to.search.includes("#"), getInvalidPathError("#", "search", "hash", to));
1032  }
1033  let isEmptyPath = toArg === "" || to.pathname === "";
1034  let toPathname = isEmptyPath ? "/" : to.pathname;
1035  let from;
1036  // Routing is relative to the current pathname if explicitly requested.
1037  //
1038  // If a pathname is explicitly provided in `to`, it should be relative to the
1039  // route context. This is explained in `Note on `<Link to>` values` in our
1040  // migration guide from v5 as a means of disambiguation between `to` values
1041  // that begin with `/` and those that do not. However, this is problematic for
1042  // `to` values that do not provide a pathname. `to` can simply be a search or
1043  // hash string, in which case we should assume that the navigation is relative
1044  // to the current location's pathname and *not* the route pathname.
1045  if (toPathname == null) {
1046    from = locationPathname;
1047  } else {
1048    let routePathnameIndex = routePathnames.length - 1;
1049    // With relative="route" (the default), each leading .. segment means
1050    // "go up one route" instead of "go up one URL segment".  This is a key
1051    // difference from how <a href> works and a major reason we call this a
1052    // "to" value instead of a "href".
1053    if (!isPathRelative && toPathname.startsWith("..")) {
1054      let toSegments = toPathname.split("/");
1055      while (toSegments[0] === "..") {
1056        toSegments.shift();
1057        routePathnameIndex -= 1;
1058      }
1059      to.pathname = toSegments.join("/");
1060    }
1061    from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : "/";
1062  }
1063  let path = resolvePath(to, from);
1064  // Ensure the pathname has a trailing slash if the original "to" had one
1065  let hasExplicitTrailingSlash = toPathname && toPathname !== "/" && toPathname.endsWith("/");
1066  // Or if this was a link to the current path which has a trailing slash
1067  let hasCurrentTrailingSlash = (isEmptyPath || toPathname === ".") && locationPathname.endsWith("/");
1068  if (!path.pathname.endsWith("/") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {
1069    path.pathname += "/";
1070  }
1071  return path;
1072}
1073/**
1074 * @private
1075 */
1076function getToPathname(to) {
1077  // Empty strings should be treated the same as / paths
1078  return to === "" || to.pathname === "" ? "/" : typeof to === "string" ? parsePath(to).pathname : to.pathname;
1079}
1080/**
1081 * @private
1082 */
1083const joinPaths = paths => paths.join("/").replace(/\/\/+/g, "/");
1084/**
1085 * @private
1086 */
1087const normalizePathname = pathname => pathname.replace(/\/+$/, "").replace(/^\/*/, "/");
1088/**
1089 * @private
1090 */
1091const normalizeSearch = search => !search || search === "?" ? "" : search.startsWith("?") ? search : "?" + search;
1092/**
1093 * @private
1094 */
1095const normalizeHash = hash => !hash || hash === "#" ? "" : hash.startsWith("#") ? hash : "#" + hash;
1096/**
1097 * This is a shortcut for creating `application/json` responses. Converts `data`
1098 * to JSON and sets the `Content-Type` header.
1099 *
1100 * @deprecated The `json` method is deprecated in favor of returning raw objects.
1101 * This method will be removed in v7.
1102 */
1103const json = function json(data, init) {
1104  if (init === void 0) {
1105    init = {};
1106  }
1107  let responseInit = typeof init === "number" ? {
1108    status: init
1109  } : init;
1110  let headers = new Headers(responseInit.headers);
1111  if (!headers.has("Content-Type")) {
1112    headers.set("Content-Type", "application/json; charset=utf-8");
1113  }
1114  return new Response(JSON.stringify(data), _extends({}, responseInit, {
1115    headers
1116  }));
1117};
1118class DataWithResponseInit {
1119  constructor(data, init) {
1120    this.type = "DataWithResponseInit";
1121    this.data = data;
1122    this.init = init || null;
1123  }
1124}
1125/**
1126 * Create "responses" that contain `status`/`headers` without forcing
1127 * serialization into an actual `Response` - used by Remix single fetch
1128 */
1129function data(data, init) {
1130  return new DataWithResponseInit(data, typeof init === "number" ? {
1131    status: init
1132  } : init);
1133}
1134class AbortedDeferredError extends Error {}
1135class DeferredData {
1136  constructor(data, responseInit) {
1137    this.pendingKeysSet = new Set();
1138    this.subscribers = new Set();
1139    this.deferredKeys = [];
1140    invariant(data && typeof data === "object" && !Array.isArray(data), "defer() only accepts plain objects");
1141    // Set up an AbortController + Promise we can race against to exit early
1142    // cancellation
1143    let reject;
1144    this.abortPromise = new Promise((_, r) => reject = r);
1145    this.controller = new AbortController();
1146    let onAbort = () => reject(new AbortedDeferredError("Deferred data aborted"));
1147    this.unlistenAbortSignal = () => this.controller.signal.removeEventListener("abort", onAbort);
1148    this.controller.signal.addEventListener("abort", onAbort);
1149    this.data = Object.entries(data).reduce((acc, _ref2) => {
1150      let [key, value] = _ref2;
1151      return Object.assign(acc, {
1152        [key]: this.trackPromise(key, value)
1153      });
1154    }, {});
1155    if (this.done) {
1156      // All incoming values were resolved
1157      this.unlistenAbortSignal();
1158    }
1159    this.init = responseInit;
1160  }
1161  trackPromise(key, value) {
1162    if (!(value instanceof Promise)) {
1163      return value;
1164    }
1165    this.deferredKeys.push(key);
1166    this.pendingKeysSet.add(key);
1167    // We store a little wrapper promise that will be extended with
1168    // _data/_error props upon resolve/reject
1169    let promise = Promise.race([value, this.abortPromise]).then(data => this.onSettle(promise, key, undefined, data), error => this.onSettle(promise, key, error));
1170    // Register rejection listeners to avoid uncaught promise rejections on
1171    // errors or aborted deferred values
1172    promise.catch(() => {});
1173    Object.defineProperty(promise, "_tracked", {
1174      get: () => true
1175    });
1176    return promise;
1177  }
1178  onSettle(promise, key, error, data) {
1179    if (this.controller.signal.aborted && error instanceof AbortedDeferredError) {
1180      this.unlistenAbortSignal();
1181      Object.defineProperty(promise, "_error", {
1182        get: () => error
1183      });
1184      return Promise.reject(error);
1185    }
1186    this.pendingKeysSet.delete(key);
1187    if (this.done) {
1188      // Nothing left to abort!
1189      this.unlistenAbortSignal();
1190    }
1191    // If the promise was resolved/rejected with undefined, we'll throw an error as you
1192    // should always resolve with a value or null
1193    if (error === undefined && data === undefined) {
1194      let undefinedError = new Error("Deferred data for key \"" + key + "\" resolved/rejected with `undefined`, " + "you must resolve/reject with a value or `null`.");
1195      Object.defineProperty(promise, "_error", {
1196        get: () => undefinedError
1197      });
1198      this.emit(false, key);
1199      return Promise.reject(undefinedError);
1200    }
1201    if (data === undefined) {
1202      Object.defineProperty(promise, "_error", {
1203        get: () => error
1204      });
1205      this.emit(false, key);
1206      return Promise.reject(error);
1207    }
1208    Object.defineProperty(promise, "_data", {
1209      get: () => data
1210    });
1211    this.emit(false, key);
1212    return data;
1213  }
1214  emit(aborted, settledKey) {
1215    this.subscribers.forEach(subscriber => subscriber(aborted, settledKey));
1216  }
1217  subscribe(fn) {
1218    this.subscribers.add(fn);
1219    return () => this.subscribers.delete(fn);
1220  }
1221  cancel() {
1222    this.controller.abort();
1223    this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));
1224    this.emit(true);
1225  }
1226  async resolveData(signal) {
1227    let aborted = false;
1228    if (!this.done) {
1229      let onAbort = () => this.cancel();
1230      signal.addEventListener("abort", onAbort);
1231      aborted = await new Promise(resolve => {
1232        this.subscribe(aborted => {
1233          signal.removeEventListener("abort", onAbort);
1234          if (aborted || this.done) {
1235            resolve(aborted);
1236          }
1237        });
1238      });
1239    }
1240    return aborted;
1241  }
1242  get done() {
1243    return this.pendingKeysSet.size === 0;
1244  }
1245  get unwrappedData() {
1246    invariant(this.data !== null && this.done, "Can only unwrap data on initialized and settled deferreds");
1247    return Object.entries(this.data).reduce((acc, _ref3) => {
1248      let [key, value] = _ref3;
1249      return Object.assign(acc, {
1250        [key]: unwrapTrackedPromise(value)
1251      });
1252    }, {});
1253  }
1254  get pendingKeys() {
1255    return Array.from(this.pendingKeysSet);
1256  }
1257}
1258function isTrackedPromise(value) {
1259  return value instanceof Promise && value._tracked === true;
1260}
1261function unwrapTrackedPromise(value) {
1262  if (!isTrackedPromise(value)) {
1263    return value;
1264  }
1265  if (value._error) {
1266    throw value._error;
1267  }
1268  return value._data;
1269}
1270/**
1271 * @deprecated The `defer` method is deprecated in favor of returning raw
1272 * objects. This method will be removed in v7.
1273 */
1274const defer = function defer(data, init) {
1275  if (init === void 0) {
1276    init = {};
1277  }
1278  let responseInit = typeof init === "number" ? {
1279    status: init
1280  } : init;
1281  return new DeferredData(data, responseInit);
1282};
1283/**
1284 * A redirect response. Sets the status code and the `Location` header.
1285 * Defaults to "302 Found".
1286 */
1287const redirect = function redirect(url, init) {
1288  if (init === void 0) {
1289    init = 302;
1290  }
1291  let responseInit = init;
1292  if (typeof responseInit === "number") {
1293    responseInit = {
1294      status: responseInit
1295    };
1296  } else if (typeof responseInit.status === "undefined") {
1297    responseInit.status = 302;
1298  }
1299  let headers = new Headers(responseInit.headers);
1300  headers.set("Location", url);
1301  return new Response(null, _extends({}, responseInit, {
1302    headers
1303  }));
1304};
1305/**
1306 * A redirect response that will force a document reload to the new location.
1307 * Sets the status code and the `Location` header.
1308 * Defaults to "302 Found".
1309 */
1310const redirectDocument = (url, init) => {
1311  let response = redirect(url, init);
1312  response.headers.set("X-Remix-Reload-Document", "true");
1313  return response;
1314};
1315/**
1316 * A redirect response that will perform a `history.replaceState` instead of a
1317 * `history.pushState` for client-side navigation redirects.
1318 * Sets the status code and the `Location` header.
1319 * Defaults to "302 Found".
1320 */
1321const replace = (url, init) => {
1322  let response = redirect(url, init);
1323  response.headers.set("X-Remix-Replace", "true");
1324  return response;
1325};
1326/**
1327 * @private
1328 * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies
1329 *
1330 * We don't export the class for public use since it's an implementation
1331 * detail, but we export the interface above so folks can build their own
1332 * abstractions around instances via isRouteErrorResponse()
1333 */
1334class ErrorResponseImpl {
1335  constructor(status, statusText, data, internal) {
1336    if (internal === void 0) {
1337      internal = false;
1338    }
1339    this.status = status;
1340    this.statusText = statusText || "";
1341    this.internal = internal;
1342    if (data instanceof Error) {
1343      this.data = data.toString();
1344      this.error = data;
1345    } else {
1346      this.data = data;
1347    }
1348  }
1349}
1350/**
1351 * Check if the given error is an ErrorResponse generated from a 4xx/5xx
1352 * Response thrown from an action/loader
1353 */
1354function isRouteErrorResponse(error) {
1355  return error != null && typeof error.status === "number" && typeof error.statusText === "string" && typeof error.internal === "boolean" && "data" in error;
1356}
1357
1358const validMutationMethodsArr = ["post", "put", "patch", "delete"];
1359const validMutationMethods = new Set(validMutationMethodsArr);
1360const validRequestMethodsArr = ["get", ...validMutationMethodsArr];
1361const validRequestMethods = new Set(validRequestMethodsArr);
1362const redirectStatusCodes = new Set([301, 302, 303, 307, 308]);
1363const redirectPreserveMethodStatusCodes = new Set([307, 308]);
1364const IDLE_NAVIGATION = {
1365  state: "idle",
1366  location: undefined,
1367  formMethod: undefined,
1368  formAction: undefined,
1369  formEncType: undefined,
1370  formData: undefined,
1371  json: undefined,
1372  text: undefined
1373};
1374const IDLE_FETCHER = {
1375  state: "idle",
1376  data: undefined,
1377  formMethod: undefined,
1378  formAction: undefined,
1379  formEncType: undefined,
1380  formData: undefined,
1381  json: undefined,
1382  text: undefined
1383};
1384const IDLE_BLOCKER = {
1385  state: "unblocked",
1386  proceed: undefined,
1387  reset: undefined,
1388  location: undefined
1389};
1390const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
1391const defaultMapRouteProperties = route => ({
1392  hasErrorBoundary: Boolean(route.hasErrorBoundary)
1393});
1394const TRANSITIONS_STORAGE_KEY = "remix-router-transitions";
1395//#endregion
1396////////////////////////////////////////////////////////////////////////////////
1397//#region createRouter
1398////////////////////////////////////////////////////////////////////////////////
1399/**
1400 * Create a router and listen to history POP navigations
1401 */
1402function createRouter(init) {
1403  const routerWindow = init.window ? init.window : typeof window !== "undefined" ? window : undefined;
1404  const isBrowser = typeof routerWindow !== "undefined" && typeof routerWindow.document !== "undefined" && typeof routerWindow.document.createElement !== "undefined";
1405  const isServer = !isBrowser;
1406  invariant(init.routes.length > 0, "You must provide a non-empty routes array to createRouter");
1407  let mapRouteProperties;
1408  if (init.mapRouteProperties) {
1409    mapRouteProperties = init.mapRouteProperties;
1410  } else if (init.detectErrorBoundary) {
1411    // If they are still using the deprecated version, wrap it with the new API
1412    let detectErrorBoundary = init.detectErrorBoundary;
1413    mapRouteProperties = route => ({
1414      hasErrorBoundary: detectErrorBoundary(route)
1415    });
1416  } else {
1417    mapRouteProperties = defaultMapRouteProperties;
1418  }
1419  // Routes keyed by ID
1420  let manifest = {};
1421  // Routes in tree format for matching
1422  let dataRoutes = convertRoutesToDataRoutes(init.routes, mapRouteProperties, undefined, manifest);
1423  let inFlightDataRoutes;
1424  let basename = init.basename || "/";
1425  let dataStrategyImpl = init.dataStrategy || defaultDataStrategy;
1426  let patchRoutesOnNavigationImpl = init.patchRoutesOnNavigation;
1427  // Config driven behavior flags
1428  let future = _extends({
1429    v7_fetcherPersist: false,
1430    v7_normalizeFormMethod: false,
1431    v7_partialHydration: false,
1432    v7_prependBasename: false,
1433    v7_relativeSplatPath: false,
1434    v7_skipActionErrorRevalidation: false
1435  }, init.future);
1436  // Cleanup function for history
1437  let unlistenHistory = null;
1438  // Externally-provided functions to call on all state changes
1439  let subscribers = new Set();
1440  // Externally-provided object to hold scroll restoration locations during routing
1441  let savedScrollPositions = null;
1442  // Externally-provided function to get scroll restoration keys
1443  let getScrollRestorationKey = null;
1444  // Externally-provided function to get current scroll position
1445  let getScrollPosition = null;
1446  // One-time flag to control the initial hydration scroll restoration.  Because
1447  // we don't get the saved positions from <ScrollRestoration /> until _after_
1448  // the initial render, we need to manually trigger a separate updateState to
1449  // send along the restoreScrollPosition
1450  // Set to true if we have `hydrationData` since we assume we were SSR'd and that
1451  // SSR did the initial scroll restoration.
1452  let initialScrollRestored = init.hydrationData != null;
1453  let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);
1454  let initialErrors = null;
1455  if (initialMatches == null && !patchRoutesOnNavigationImpl) {
1456    // If we do not match a user-provided-route, fall back to the root
1457    // to allow the error boundary to take over
1458    let error = getInternalRouterError(404, {
1459      pathname: init.history.location.pathname
1460    });
1461    let {
1462      matches,
1463      route
1464    } = getShortCircuitMatches(dataRoutes);
1465    initialMatches = matches;
1466    initialErrors = {
1467      [route.id]: error
1468    };
1469  }
1470  // In SPA apps, if the user provided a patchRoutesOnNavigation implementation and
1471  // our initial match is a splat route, clear them out so we run through lazy
1472  // discovery on hydration in case there's a more accurate lazy route match.
1473  // In SSR apps (with `hydrationData`), we expect that the server will send
1474  // up the proper matched routes so we don't want to run lazy discovery on
1475  // initial hydration and want to hydrate into the splat route.
1476  if (initialMatches && !init.hydrationData) {
1477    let fogOfWar = checkFogOfWar(initialMatches, dataRoutes, init.history.location.pathname);
1478    if (fogOfWar.active) {
1479      initialMatches = null;
1480    }
1481  }
1482  let initialized;
1483  if (!initialMatches) {
1484    initialized = false;
1485    initialMatches = [];
1486    // If partial hydration and fog of war is enabled, we will be running
1487    // `patchRoutesOnNavigation` during hydration so include any partial matches as
1488    // the initial matches so we can properly render `HydrateFallback`'s
1489    if (future.v7_partialHydration) {
1490      let fogOfWar = checkFogOfWar(null, dataRoutes, init.history.location.pathname);
1491      if (fogOfWar.active && fogOfWar.matches) {
1492        initialMatches = fogOfWar.matches;
1493      }
1494    }
1495  } else if (initialMatches.some(m => m.route.lazy)) {
1496    // All initialMatches need to be loaded before we're ready.  If we have lazy
1497    // functions around still then we'll need to run them in initialize()
1498    initialized = false;
1499  } else if (!initialMatches.some(m => m.route.loader)) {
1500    // If we've got no loaders to run, then we're good to go
1501    initialized = true;
1502  } else if (future.v7_partialHydration) {
1503    // If partial hydration is enabled, we're initialized so long as we were
1504    // provided with hydrationData for every route with a loader, and no loaders
1505    // were marked for explicit hydration
1506    let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;
1507    let errors = init.hydrationData ? init.hydrationData.errors : null;
1508    // If errors exist, don't consider routes below the boundary
1509    if (errors) {
1510      let idx = initialMatches.findIndex(m => errors[m.route.id] !== undefined);
1511      initialized = initialMatches.slice(0, idx + 1).every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));
1512    } else {
1513      initialized = initialMatches.every(m => !shouldLoadRouteOnHydration(m.route, loaderData, errors));
1514    }
1515  } else {
1516    // Without partial hydration - we're initialized if we were provided any
1517    // hydrationData - which is expected to be complete
1518    initialized = init.hydrationData != null;
1519  }
1520  let router;
1521  let state = {
1522    historyAction: init.history.action,
1523    location: init.history.location,
1524    matches: initialMatches,
1525    initialized,
1526    navigation: IDLE_NAVIGATION,
1527    // Don't restore on initial updateState() if we were SSR'd
1528    restoreScrollPosition: init.hydrationData != null ? false : null,
1529    preventScrollReset: false,
1530    revalidation: "idle",
1531    loaderData: init.hydrationData && init.hydrationData.loaderData || {},
1532    actionData: init.hydrationData && init.hydrationData.actionData || null,
1533    errors: init.hydrationData && init.hydrationData.errors || initialErrors,
1534    fetchers: new Map(),
1535    blockers: new Map()
1536  };
1537  // -- Stateful internal variables to manage navigations --
1538  // Current navigation in progress (to be committed in completeNavigation)
1539  let pendingAction = Action.Pop;
1540  // Should the current navigation prevent the scroll reset if scroll cannot
1541  // be restored?
1542  let pendingPreventScrollReset = false;
1543  // AbortController for the active navigation
1544  let pendingNavigationController;
1545  // Should the current navigation enable document.startViewTransition?
1546  let pendingViewTransitionEnabled = false;
1547  // Store applied view transitions so we can apply them on POP
1548  let appliedViewTransitions = new Map();
1549  // Cleanup function for persisting applied transitions to sessionStorage
1550  let removePageHideEventListener = null;
1551  // We use this to avoid touching history in completeNavigation if a
1552  // revalidation is entirely uninterrupted
1553  let isUninterruptedRevalidation = false;
1554  // Use this internal flag to force revalidation of all loaders:
1555  //  - submissions (completed or interrupted)
1556  //  - useRevalidator()
1557  //  - X-Remix-Revalidate (from redirect)
1558  let isRevalidationRequired = false;
1559  // Use this internal array to capture routes that require revalidation due
1560  // to a cancelled deferred on action submission
1561  let cancelledDeferredRoutes = [];
1562  // Use this internal array to capture fetcher loads that were cancelled by an
1563  // action navigation and require revalidation
1564  let cancelledFetcherLoads = new Set();
1565  // AbortControllers for any in-flight fetchers
1566  let fetchControllers = new Map();
1567  // Track loads based on the order in which they started
1568  let incrementingLoadId = 0;
1569  // Track the outstanding pending navigation data load to be compared against
1570  // the globally incrementing load when a fetcher load lands after a completed
1571  // navigation
1572  let pendingNavigationLoadId = -1;
1573  // Fetchers that triggered data reloads as a result of their actions
1574  let fetchReloadIds = new Map();
1575  // Fetchers that triggered redirect navigations
1576  let fetchRedirectIds = new Set();
1577  // Most recent href/match for fetcher.load calls for fetchers
1578  let fetchLoadMatches = new Map();
1579  // Ref-count mounted fetchers so we know when it's ok to clean them up
1580  let activeFetchers = new Map();
1581  // Fetchers that have requested a delete when using v7_fetcherPersist,
1582  // they'll be officially removed after they return to idle
1583  let deletedFetchers = new Set();
1584  // Store DeferredData instances for active route matches.  When a
1585  // route loader returns defer() we stick one in here.  Then, when a nested
1586  // promise resolves we update loaderData.  If a new navigation starts we
1587  // cancel active deferreds for eliminated routes.
1588  let activeDeferreds = new Map();
1589  // Store blocker functions in a separate Map outside of router state since
1590  // we don't need to update UI state if they change
1591  let blockerFunctions = new Map();
1592  // Flag to ignore the next history update, so we can revert the URL change on
1593  // a POP navigation that was blocked by the user without touching router state
1594  let unblockBlockerHistoryUpdate = undefined;
1595  // Initialize the router, all side effects should be kicked off from here.
1596  // Implemented as a Fluent API for ease of:
1597  //   let router = createRouter(init).initialize();
1598  function initialize() {
1599    // If history informs us of a POP navigation, start the navigation but do not update
1600    // state.  We'll update our own state once the navigation completes
1601    unlistenHistory = init.history.listen(_ref => {
1602      let {
1603        action: historyAction,
1604        location,
1605        delta
1606      } = _ref;
1607      // Ignore this event if it was just us resetting the URL from a
1608      // blocked POP navigation
1609      if (unblockBlockerHistoryUpdate) {
1610        unblockBlockerHistoryUpdate();
1611        unblockBlockerHistoryUpdate = undefined;
1612        return;
1613      }
1614      warning(blockerFunctions.size === 0 || delta != null, "You are trying to use a blocker on a POP navigation to a location " + "that was not created by @remix-run/router. This will fail silently in " + "production. This can happen if you are navigating outside the router " + "via `window.history.pushState`/`window.location.hash` instead of using " + "router navigation APIs.  This can also happen if you are using " + "createHashRouter and the user manually changes the URL.");
1615      let blockerKey = shouldBlockNavigation({
1616        currentLocation: state.location,
1617        nextLocation: location,
1618        historyAction
1619      });
1620      if (blockerKey && delta != null) {
1621        // Restore the URL to match the current UI, but don't update router state
1622        let nextHistoryUpdatePromise = new Promise(resolve => {
1623          unblockBlockerHistoryUpdate = resolve;
1624        });
1625        init.history.go(delta * -1);
1626        // Put the blocker into a blocked state
1627        updateBlocker(blockerKey, {
1628          state: "blocked",
1629          location,
1630          proceed() {
1631            updateBlocker(blockerKey, {
1632              state: "proceeding",
1633              proceed: undefined,
1634              reset: undefined,
1635              location
1636            });
1637            // Re-do the same POP navigation we just blocked, after the url
1638            // restoration is also complete.  See:
1639            // https://github.com/remix-run/react-router/issues/11613
1640            nextHistoryUpdatePromise.then(() => init.history.go(delta));
1641          },
1642          reset() {
1643            let blockers = new Map(state.blockers);
1644            blockers.set(blockerKey, IDLE_BLOCKER);
1645            updateState({
1646              blockers
1647            });
1648          }
1649        });
1650        return;
1651      }
1652      return startNavigation(historyAction, location);
1653    });
1654    if (isBrowser) {
1655      // FIXME: This feels gross.  How can we cleanup the lines between
1656      // scrollRestoration/appliedTransitions persistance?
1657      restoreAppliedTransitions(routerWindow, appliedViewTransitions);
1658      let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);
1659      routerWindow.addEventListener("pagehide", _saveAppliedTransitions);
1660      removePageHideEventListener = () => routerWindow.removeEventListener("pagehide", _saveAppliedTransitions);
1661    }
1662    // Kick off initial data load if needed.  Use Pop to avoid modifying history
1663    // Note we don't do any handling of lazy here.  For SPA's it'll get handled
1664    // in the normal navigation flow.  For SSR it's expected that lazy modules are
1665    // resolved prior to router creation since we can't go into a fallbackElement
1666    // UI for SSR'd apps
1667    if (!state.initialized) {
1668      startNavigation(Action.Pop, state.location, {
1669        initialHydration: true
1670      });
1671    }
1672    return router;
1673  }
1674  // Clean up a router and it's side effects
1675  function dispose() {
1676    if (unlistenHistory) {
1677      unlistenHistory();
1678    }
1679    if (removePageHideEventListener) {
1680      removePageHideEventListener();
1681    }
1682    subscribers.clear();
1683    pendingNavigationController && pendingNavigationController.abort();
1684    state.fetchers.forEach((_, key) => deleteFetcher(key));
1685    state.blockers.forEach((_, key) => deleteBlocker(key));
1686  }
1687  // Subscribe to state updates for the router
1688  function subscribe(fn) {
1689    subscribers.add(fn);
1690    return () => subscribers.delete(fn);
1691  }
1692  // Update our state and notify the calling context of the change
1693  function updateState(newState, opts) {
1694    if (opts === void 0) {
1695      opts = {};
1696    }
1697    state = _extends({}, state, newState);
1698    // Prep fetcher cleanup so we can tell the UI which fetcher data entries
1699    // can be removed
1700    let completedFetchers = [];
1701    let deletedFetchersKeys = [];
1702    if (future.v7_fetcherPersist) {
1703      state.fetchers.forEach((fetcher, key) => {
1704        if (fetcher.state === "idle") {
1705          if (deletedFetchers.has(key)) {
1706            // Unmounted from the UI and can be totally removed
1707            deletedFetchersKeys.push(key);
1708          } else {
1709            // Returned to idle but still mounted in the UI, so semi-remains for
1710            // revalidations and such
1711            completedFetchers.push(key);
1712          }
1713        }
1714      });
1715    }
1716    // Iterate over a local copy so that if flushSync is used and we end up
1717    // removing and adding a new subscriber due to the useCallback dependencies,
1718    // we don't get ourselves into a loop calling the new subscriber immediately
1719    [...subscribers].forEach(subscriber => subscriber(state, {
1720      deletedFetchers: deletedFetchersKeys,
1721      viewTransitionOpts: opts.viewTransitionOpts,
1722      flushSync: opts.flushSync === true
1723    }));
1724    // Remove idle fetchers from state since we only care about in-flight fetchers.
1725    if (future.v7_fetcherPersist) {
1726      completedFetchers.forEach(key => state.fetchers.delete(key));
1727      deletedFetchersKeys.forEach(key => deleteFetcher(key));
1728    }
1729  }
1730  // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION
1731  // and setting state.[historyAction/location/matches] to the new route.
1732  // - Location is a required param
1733  // - Navigation will always be set to IDLE_NAVIGATION
1734  // - Can pass any other state in newState
1735  function completeNavigation(location, newState, _temp) {
1736    var _location$state, _location$state2;
1737    let {
1738      flushSync
1739    } = _temp === void 0 ? {} : _temp;
1740    // Deduce if we're in a loading/actionReload state:
1741    // - We have committed actionData in the store
1742    // - The current navigation was a mutation submission
1743    // - We're past the submitting state and into the loading state
1744    // - The location being loaded is not the result of a redirect
1745    let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === "loading" && ((_location$state = location.state) == null ? void 0 : _location$state._isRedirect) !== true;
1746    let actionData;
1747    if (newState.actionData) {
1748      if (Object.keys(newState.actionData).length > 0) {
1749        actionData = newState.actionData;
1750      } else {
1751        // Empty actionData -> clear prior actionData due to an action error
1752        actionData = null;
1753      }
1754    } else if (isActionReload) {
1755      // Keep the current data if we're wrapping up the action reload
1756      actionData = state.actionData;
1757    } else {
1758      // Clear actionData on any other completed navigations
1759      actionData = null;
1760    }
1761    // Always preserve any existing loaderData from re-used routes
1762    let loaderData = newState.loaderData ? mergeLoaderData(state.loaderData, newState.loaderData, newState.matches || [], newState.errors) : state.loaderData;
1763    // On a successful navigation we can assume we got through all blockers
1764    // so we can start fresh
1765    let blockers = state.blockers;
1766    if (blockers.size > 0) {
1767      blockers = new Map(blockers);
1768      blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));
1769    }
1770    // Always respect the user flag.  Otherwise don't reset on mutation
1771    // submission navigations unless they redirect
1772    let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && ((_location$state2 = location.state) == null ? void 0 : _location$state2._isRedirect) !== true;
1773    // Commit any in-flight routes at the end of the HMR revalidation "navigation"
1774    if (inFlightDataRoutes) {
1775      dataRoutes = inFlightDataRoutes;
1776      inFlightDataRoutes = undefined;
1777    }
1778    if (isUninterruptedRevalidation) ; else if (pendingAction === Action.Pop) ; else if (pendingAction === Action.Push) {
1779      init.history.push(location, location.state);
1780    } else if (pendingAction === Action.Replace) {
1781      init.history.replace(location, location.state);
1782    }
1783    let viewTransitionOpts;
1784    // On POP, enable transitions if they were enabled on the original navigation
1785    if (pendingAction === Action.Pop) {
1786      // Forward takes precedence so they behave like the original navigation
1787      let priorPaths = appliedViewTransitions.get(state.location.pathname);
1788      if (priorPaths && priorPaths.has(location.pathname)) {
1789        viewTransitionOpts = {
1790          currentLocation: state.location,
1791          nextLocation: location
1792        };
1793      } else if (appliedViewTransitions.has(location.pathname)) {
1794        // If we don't have a previous forward nav, assume we're popping back to
1795        // the new location and enable if that location previously enabled
1796        viewTransitionOpts = {
1797          currentLocation: location,
1798          nextLocation: state.location
1799        };
1800      }
1801    } else if (pendingViewTransitionEnabled) {
1802      // Store the applied transition on PUSH/REPLACE
1803      let toPaths = appliedViewTransitions.get(state.location.pathname);
1804      if (toPaths) {
1805        toPaths.add(location.pathname);
1806      } else {
1807        toPaths = new Set([location.pathname]);
1808        appliedViewTransitions.set(state.location.pathname, toPaths);
1809      }
1810      viewTransitionOpts = {
1811        currentLocation: state.location,
1812        nextLocation: location
1813      };
1814    }
1815    updateState(_extends({}, newState, {
1816      actionData,
1817      loaderData,
1818      historyAction: pendingAction,
1819      location,
1820      initialized: true,
1821      navigation: IDLE_NAVIGATION,
1822      revalidation: "idle",
1823      restoreScrollPosition: getSavedScrollPosition(location, newState.matches || state.matches),
1824      preventScrollReset,
1825      blockers
1826    }), {
1827      viewTransitionOpts,
1828      flushSync: flushSync === true
1829    });
1830    // Reset stateful navigation vars
1831    pendingAction = Action.Pop;
1832    pendingPreventScrollReset = false;
1833    pendingViewTransitionEnabled = false;
1834    isUninterruptedRevalidation = false;
1835    isRevalidationRequired = false;
1836    cancelledDeferredRoutes = [];
1837  }
1838  // Trigger a navigation event, which can either be a numerical POP or a PUSH
1839  // replace with an optional submission
1840  async function navigate(to, opts) {
1841    if (typeof to === "number") {
1842      init.history.go(to);
1843      return;
1844    }
1845    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, to, future.v7_relativeSplatPath, opts == null ? void 0 : opts.fromRouteId, opts == null ? void 0 : opts.relative);
1846    let {
1847      path,
1848      submission,
1849      error
1850    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, false, normalizedPath, opts);
1851    let currentLocation = state.location;
1852    let nextLocation = createLocation(state.location, path, opts && opts.state);
1853    // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded
1854    // URL from window.location, so we need to encode it here so the behavior
1855    // remains the same as POP and non-data-router usages.  new URL() does all
1856    // the same encoding we'd get from a history.pushState/window.location read
1857    // without having to touch history
1858    nextLocation = _extends({}, nextLocation, init.history.encodeLocation(nextLocation));
1859    let userReplace = opts && opts.replace != null ? opts.replace : undefined;
1860    let historyAction = Action.Push;
1861    if (userReplace === true) {
1862      historyAction = Action.Replace;
1863    } else if (userReplace === false) ; else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {
1864      // By default on submissions to the current location we REPLACE so that
1865      // users don't have to double-click the back button to get to the prior
1866      // location.  If the user redirects to a different location from the
1867      // action/loader this will be ignored and the redirect will be a PUSH
1868      historyAction = Action.Replace;
1869    }
1870    let preventScrollReset = opts && "preventScrollReset" in opts ? opts.preventScrollReset === true : undefined;
1871    let flushSync = (opts && opts.flushSync) === true;
1872    let blockerKey = shouldBlockNavigation({
1873      currentLocation,
1874      nextLocation,
1875      historyAction
1876    });
1877    if (blockerKey) {
1878      // Put the blocker into a blocked state
1879      updateBlocker(blockerKey, {
1880        state: "blocked",
1881        location: nextLocation,
1882        proceed() {
1883          updateBlocker(blockerKey, {
1884            state: "proceeding",
1885            proceed: undefined,
1886            reset: undefined,
1887            location: nextLocation
1888          });
1889          // Send the same navigation through
1890          navigate(to, opts);
1891        },
1892        reset() {
1893          let blockers = new Map(state.blockers);
1894          blockers.set(blockerKey, IDLE_BLOCKER);
1895          updateState({
1896            blockers
1897          });
1898        }
1899      });
1900      return;
1901    }
1902    return await startNavigation(historyAction, nextLocation, {
1903      submission,
1904      // Send through the formData serialization error if we have one so we can
1905      // render at the right error boundary after we match routes
1906      pendingError: error,
1907      preventScrollReset,
1908      replace: opts && opts.replace,
1909      enableViewTransition: opts && opts.viewTransition,
1910      flushSync
1911    });
1912  }
1913  // Revalidate all current loaders.  If a navigation is in progress or if this
1914  // is interrupted by a navigation, allow this to "succeed" by calling all
1915  // loaders during the next loader round
1916  function revalidate() {
1917    interruptActiveLoads();
1918    updateState({
1919      revalidation: "loading"
1920    });
1921    // If we're currently submitting an action, we don't need to start a new
1922    // navigation, we'll just let the follow up loader execution call all loaders
1923    if (state.navigation.state === "submitting") {
1924      return;
1925    }
1926    // If we're currently in an idle state, start a new navigation for the current
1927    // action/location and mark it as uninterrupted, which will skip the history
1928    // update in completeNavigation
1929    if (state.navigation.state === "idle") {
1930      startNavigation(state.historyAction, state.location, {
1931        startUninterruptedRevalidation: true
1932      });
1933      return;
1934    }
1935    // Otherwise, if we're currently in a loading state, just start a new
1936    // navigation to the navigation.location but do not trigger an uninterrupted
1937    // revalidation so that history correctly updates once the navigation completes
1938    startNavigation(pendingAction || state.historyAction, state.navigation.location, {
1939      overrideNavigation: state.navigation,
1940      // Proxy through any rending view transition
1941      enableViewTransition: pendingViewTransitionEnabled === true
1942    });
1943  }
1944  // Start a navigation to the given action/location.  Can optionally provide a
1945  // overrideNavigation which will override the normalLoad in the case of a redirect
1946  // navigation
1947  async function startNavigation(historyAction, location, opts) {
1948    // Abort any in-progress navigations and start a new one. Unset any ongoing
1949    // uninterrupted revalidations unless told otherwise, since we want this
1950    // new navigation to update history normally
1951    pendingNavigationController && pendingNavigationController.abort();
1952    pendingNavigationController = null;
1953    pendingAction = historyAction;
1954    isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;
1955    // Save the current scroll position every time we start a new navigation,
1956    // and track whether we should reset scroll on completion
1957    saveScrollPosition(state.location, state.matches);
1958    pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;
1959    pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;
1960    let routesToUse = inFlightDataRoutes || dataRoutes;
1961    let loadingNavigation = opts && opts.overrideNavigation;
1962    let matches = matchRoutes(routesToUse, location, basename);
1963    let flushSync = (opts && opts.flushSync) === true;
1964    let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);
1965    if (fogOfWar.active && fogOfWar.matches) {
1966      matches = fogOfWar.matches;
1967    }
1968    // Short circuit with a 404 on the root error boundary if we match nothing
1969    if (!matches) {
1970      let {
1971        error,
1972        notFoundMatches,
1973        route
1974      } = handleNavigational404(location.pathname);
1975      completeNavigation(location, {
1976        matches: notFoundMatches,
1977        loaderData: {},
1978        errors: {
1979          [route.id]: error
1980        }
1981      }, {
1982        flushSync
1983      });
1984      return;
1985    }
1986    // Short circuit if it's only a hash change and not a revalidation or
1987    // mutation submission.
1988    //
1989    // Ignore on initial page loads because since the initial hydration will always
1990    // be "same hash".  For example, on /page#hash and submit a <Form method="post">
1991    // which will default to a navigation to /page
1992    if (state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {
1993      completeNavigation(location, {
1994        matches
1995      }, {
1996        flushSync
1997      });
1998      return;
1999    }
2000    // Create a controller/Request for this navigation
2001    pendingNavigationController = new AbortController();
2002    let request = createClientSideRequest(init.history, location, pendingNavigationController.signal, opts && opts.submission);
2003    let pendingActionResult;
2004    if (opts && opts.pendingError) {
2005      // If we have a pendingError, it means the user attempted a GET submission
2006      // with binary FormData so assign here and skip to handleLoaders.  That
2007      // way we handle calling loaders above the boundary etc.  It's not really
2008      // different from an actionError in that sense.
2009      pendingActionResult = [findNearestBoundary(matches).route.id, {
2010        type: ResultType.error,
2011        error: opts.pendingError
2012      }];
2013    } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {
2014      // Call action if we received an action submission
2015      let actionResult = await handleAction(request, location, opts.submission, matches, fogOfWar.active, {
2016        replace: opts.replace,
2017        flushSync
2018      });
2019      if (actionResult.shortCircuited) {
2020        return;
2021      }
2022      // If we received a 404 from handleAction, it's because we couldn't lazily
2023      // discover the destination route so we don't want to call loaders
2024      if (actionResult.pendingActionResult) {
2025        let [routeId, result] = actionResult.pendingActionResult;
2026        if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {
2027          pendingNavigationController = null;
2028          completeNavigation(location, {
2029            matches: actionResult.matches,
2030            loaderData: {},
2031            errors: {
2032              [routeId]: result.error
2033            }
2034          });
2035          return;
2036        }
2037      }
2038      matches = actionResult.matches || matches;
2039      pendingActionResult = actionResult.pendingActionResult;
2040      loadingNavigation = getLoadingNavigation(location, opts.submission);
2041      flushSync = false;
2042      // No need to do fog of war matching again on loader execution
2043      fogOfWar.active = false;
2044      // Create a GET request for the loaders
2045      request = createClientSideRequest(init.history, request.url, request.signal);
2046    }
2047    // Call loaders
2048    let {
2049      shortCircuited,
2050      matches: updatedMatches,
2051      loaderData,
2052      errors
2053    } = await handleLoaders(request, location, matches, fogOfWar.active, loadingNavigation, opts && opts.submission, opts && opts.fetcherSubmission, opts && opts.replace, opts && opts.initialHydration === true, flushSync, pendingActionResult);
2054    if (shortCircuited) {
2055      return;
2056    }
2057    // Clean up now that the action/loaders have completed.  Don't clean up if
2058    // we short circuited because pendingNavigationController will have already
2059    // been assigned to a new controller for the next navigation
2060    pendingNavigationController = null;
2061    completeNavigation(location, _extends({
2062      matches: updatedMatches || matches
2063    }, getActionDataForCommit(pendingActionResult), {
2064      loaderData,
2065      errors
2066    }));
2067  }
2068  // Call the action matched by the leaf route for this navigation and handle
2069  // redirects/errors
2070  async function handleAction(request, location, submission, matches, isFogOfWar, opts) {
2071    if (opts === void 0) {
2072      opts = {};
2073    }
2074    interruptActiveLoads();
2075    // Put us in a submitting state
2076    let navigation = getSubmittingNavigation(location, submission);
2077    updateState({
2078      navigation
2079    }, {
2080      flushSync: opts.flushSync === true
2081    });
2082    if (isFogOfWar) {
2083      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);
2084      if (discoverResult.type === "aborted") {
2085        return {
2086          shortCircuited: true
2087        };
2088      } else if (discoverResult.type === "error") {
2089        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;
2090        return {
2091          matches: discoverResult.partialMatches,
2092          pendingActionResult: [boundaryId, {
2093            type: ResultType.error,
2094            error: discoverResult.error
2095          }]
2096        };
2097      } else if (!discoverResult.matches) {
2098        let {
2099          notFoundMatches,
2100          error,
2101          route
2102        } = handleNavigational404(location.pathname);
2103        return {
2104          matches: notFoundMatches,
2105          pendingActionResult: [route.id, {
2106            type: ResultType.error,
2107            error
2108          }]
2109        };
2110      } else {
2111        matches = discoverResult.matches;
2112      }
2113    }
2114    // Call our action and get the result
2115    let result;
2116    let actionMatch = getTargetMatch(matches, location);
2117    if (!actionMatch.route.action && !actionMatch.route.lazy) {
2118      result = {
2119        type: ResultType.error,
2120        error: getInternalRouterError(405, {
2121          method: request.method,
2122          pathname: location.pathname,
2123          routeId: actionMatch.route.id
2124        })
2125      };
2126    } else {
2127      let results = await callDataStrategy("action", state, request, [actionMatch], matches, null);
2128      result = results[actionMatch.route.id];
2129      if (request.signal.aborted) {
2130        return {
2131          shortCircuited: true
2132        };
2133      }
2134    }
2135    if (isRedirectResult(result)) {
2136      let replace;
2137      if (opts && opts.replace != null) {
2138        replace = opts.replace;
2139      } else {
2140        // If the user didn't explicity indicate replace behavior, replace if
2141        // we redirected to the exact same location we're currently at to avoid
2142        // double back-buttons
2143        let location = normalizeRedirectLocation(result.response.headers.get("Location"), new URL(request.url), basename);
2144        replace = location === state.location.pathname + state.location.search;
2145      }
2146      await startRedirectNavigation(request, result, true, {
2147        submission,
2148        replace
2149      });
2150      return {
2151        shortCircuited: true
2152      };
2153    }
2154    if (isDeferredResult(result)) {
2155      throw getInternalRouterError(400, {
2156        type: "defer-action"
2157      });
2158    }
2159    if (isErrorResult(result)) {
2160      // Store off the pending error - we use it to determine which loaders
2161      // to call and will commit it when we complete the navigation
2162      let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);
2163      // By default, all submissions to the current location are REPLACE
2164      // navigations, but if the action threw an error that'll be rendered in
2165      // an errorElement, we fall back to PUSH so that the user can use the
2166      // back button to get back to the pre-submission form location to try
2167      // again
2168      if ((opts && opts.replace) !== true) {
2169        pendingAction = Action.Push;
2170      }
2171      return {
2172        matches,
2173        pendingActionResult: [boundaryMatch.route.id, result]
2174      };
2175    }
2176    return {
2177      matches,
2178      pendingActionResult: [actionMatch.route.id, result]
2179    };
2180  }
2181  // Call all applicable loaders for the given matches, handling redirects,
2182  // errors, etc.
2183  async function handleLoaders(request, location, matches, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace, initialHydration, flushSync, pendingActionResult) {
2184    // Figure out the right navigation we want to use for data loading
2185    let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);
2186    // If this was a redirect from an action we don't have a "submission" but
2187    // we have it on the loading navigation so use that if available
2188    let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);
2189    // If this is an uninterrupted revalidation, we remain in our current idle
2190    // state.  If not, we need to switch to our loading state and load data,
2191    // preserving any new action data or existing action data (in the case of
2192    // a revalidation interrupting an actionReload)
2193    // If we have partialHydration enabled, then don't update the state for the
2194    // initial data load since it's not a "navigation"
2195    let shouldUpdateNavigationState = !isUninterruptedRevalidation && (!future.v7_partialHydration || !initialHydration);
2196    // When fog of war is enabled, we enter our `loading` state earlier so we
2197    // can discover new routes during the `loading` state.  We skip this if
2198    // we've already run actions since we would have done our matching already.
2199    // If the children() function threw then, we want to proceed with the
2200    // partial matches it discovered.
2201    if (isFogOfWar) {
2202      if (shouldUpdateNavigationState) {
2203        let actionData = getUpdatedActionData(pendingActionResult);
2204        updateState(_extends({
2205          navigation: loadingNavigation
2206        }, actionData !== undefined ? {
2207          actionData
2208        } : {}), {
2209          flushSync
2210        });
2211      }
2212      let discoverResult = await discoverRoutes(matches, location.pathname, request.signal);
2213      if (discoverResult.type === "aborted") {
2214        return {
2215          shortCircuited: true
2216        };
2217      } else if (discoverResult.type === "error") {
2218        let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;
2219        return {
2220          matches: discoverResult.partialMatches,
2221          loaderData: {},
2222          errors: {
2223            [boundaryId]: discoverResult.error
2224          }
2225        };
2226      } else if (!discoverResult.matches) {
2227        let {
2228          error,
2229          notFoundMatches,
2230          route
2231        } = handleNavigational404(location.pathname);
2232        return {
2233          matches: notFoundMatches,
2234          loaderData: {},
2235          errors: {
2236            [route.id]: error
2237          }
2238        };
2239      } else {
2240        matches = discoverResult.matches;
2241      }
2242    }
2243    let routesToUse = inFlightDataRoutes || dataRoutes;
2244    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, activeSubmission, location, future.v7_partialHydration && initialHydration === true, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult);
2245    // Cancel pending deferreds for no-longer-matched routes or routes we're
2246    // about to reload.  Note that if this is an action reload we would have
2247    // already cancelled all pending deferreds so this would be a no-op
2248    cancelActiveDeferreds(routeId => !(matches && matches.some(m => m.route.id === routeId)) || matchesToLoad && matchesToLoad.some(m => m.route.id === routeId));
2249    pendingNavigationLoadId = ++incrementingLoadId;
2250    // Short circuit if we have no loaders to run
2251    if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {
2252      let updatedFetchers = markFetchRedirectsDone();
2253      completeNavigation(location, _extends({
2254        matches,
2255        loaderData: {},
2256        // Commit pending error if we're short circuiting
2257        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {
2258          [pendingActionResult[0]]: pendingActionResult[1].error
2259        } : null
2260      }, getActionDataForCommit(pendingActionResult), updatedFetchers ? {
2261        fetchers: new Map(state.fetchers)
2262      } : {}), {
2263        flushSync
2264      });
2265      return {
2266        shortCircuited: true
2267      };
2268    }
2269    if (shouldUpdateNavigationState) {
2270      let updates = {};
2271      if (!isFogOfWar) {
2272        // Only update navigation/actionNData if we didn't already do it above
2273        updates.navigation = loadingNavigation;
2274        let actionData = getUpdatedActionData(pendingActionResult);
2275        if (actionData !== undefined) {
2276          updates.actionData = actionData;
2277        }
2278      }
2279      if (revalidatingFetchers.length > 0) {
2280        updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);
2281      }
2282      updateState(updates, {
2283        flushSync
2284      });
2285    }
2286    revalidatingFetchers.forEach(rf => {
2287      abortFetcher(rf.key);
2288      if (rf.controller) {
2289        // Fetchers use an independent AbortController so that aborting a fetcher
2290        // (via deleteFetcher) does not abort the triggering navigation that
2291        // triggered the revalidation
2292        fetchControllers.set(rf.key, rf.controller);
2293      }
2294    });
2295    // Proxy navigation abort through to revalidation fetchers
2296    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(f => abortFetcher(f.key));
2297    if (pendingNavigationController) {
2298      pendingNavigationController.signal.addEventListener("abort", abortPendingFetchRevalidations);
2299    }
2300    let {
2301      loaderResults,
2302      fetcherResults
2303    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, request);
2304    if (request.signal.aborted) {
2305      return {
2306        shortCircuited: true
2307      };
2308    }
2309    // Clean up _after_ loaders have completed.  Don't clean up if we short
2310    // circuited because fetchControllers would have been aborted and
2311    // reassigned to new controllers for the next navigation
2312    if (pendingNavigationController) {
2313      pendingNavigationController.signal.removeEventListener("abort", abortPendingFetchRevalidations);
2314    }
2315    revalidatingFetchers.forEach(rf => fetchControllers.delete(rf.key));
2316    // If any loaders returned a redirect Response, start a new REPLACE navigation
2317    let redirect = findRedirect(loaderResults);
2318    if (redirect) {
2319      await startRedirectNavigation(request, redirect.result, true, {
2320        replace
2321      });
2322      return {
2323        shortCircuited: true
2324      };
2325    }
2326    redirect = findRedirect(fetcherResults);
2327    if (redirect) {
2328      // If this redirect came from a fetcher make sure we mark it in
2329      // fetchRedirectIds so it doesn't get revalidated on the next set of
2330      // loader executions
2331      fetchRedirectIds.add(redirect.key);
2332      await startRedirectNavigation(request, redirect.result, true, {
2333        replace
2334      });
2335      return {
2336        shortCircuited: true
2337      };
2338    }
2339    // Process and commit output from loaders
2340    let {
2341      loaderData,
2342      errors
2343    } = processLoaderData(state, matches, loaderResults, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds);
2344    // Wire up subscribers to update loaderData as promises settle
2345    activeDeferreds.forEach((deferredData, routeId) => {
2346      deferredData.subscribe(aborted => {
2347        // Note: No need to updateState here since the TrackedPromise on
2348        // loaderData is stable across resolve/reject
2349        // Remove this instance if we were aborted or if promises have settled
2350        if (aborted || deferredData.done) {
2351          activeDeferreds.delete(routeId);
2352        }
2353      });
2354    });
2355    // Preserve SSR errors during partial hydration
2356    if (future.v7_partialHydration && initialHydration && state.errors) {
2357      errors = _extends({}, state.errors, errors);
2358    }
2359    let updatedFetchers = markFetchRedirectsDone();
2360    let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);
2361    let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;
2362    return _extends({
2363      matches,
2364      loaderData,
2365      errors
2366    }, shouldUpdateFetchers ? {
2367      fetchers: new Map(state.fetchers)
2368    } : {});
2369  }
2370  function getUpdatedActionData(pendingActionResult) {
2371    if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {
2372      // This is cast to `any` currently because `RouteData`uses any and it
2373      // would be a breaking change to use any.
2374      // TODO: v7 - change `RouteData` to use `unknown` instead of `any`
2375      return {
2376        [pendingActionResult[0]]: pendingActionResult[1].data
2377      };
2378    } else if (state.actionData) {
2379      if (Object.keys(state.actionData).length === 0) {
2380        return null;
2381      } else {
2382        return state.actionData;
2383      }
2384    }
2385  }
2386  function getUpdatedRevalidatingFetchers(revalidatingFetchers) {
2387    revalidatingFetchers.forEach(rf => {
2388      let fetcher = state.fetchers.get(rf.key);
2389      let revalidatingFetcher = getLoadingFetcher(undefined, fetcher ? fetcher.data : undefined);
2390      state.fetchers.set(rf.key, revalidatingFetcher);
2391    });
2392    return new Map(state.fetchers);
2393  }
2394  // Trigger a fetcher load/submit for the given fetcher key
2395  function fetch(key, routeId, href, opts) {
2396    if (isServer) {
2397      throw new Error("router.fetch() was called during the server render, but it shouldn't be. " + "You are likely calling a useFetcher() method in the body of your component. " + "Try moving it to a useEffect or a callback.");
2398    }
2399    abortFetcher(key);
2400    let flushSync = (opts && opts.flushSync) === true;
2401    let routesToUse = inFlightDataRoutes || dataRoutes;
2402    let normalizedPath = normalizeTo(state.location, state.matches, basename, future.v7_prependBasename, href, future.v7_relativeSplatPath, routeId, opts == null ? void 0 : opts.relative);
2403    let matches = matchRoutes(routesToUse, normalizedPath, basename);
2404    let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);
2405    if (fogOfWar.active && fogOfWar.matches) {
2406      matches = fogOfWar.matches;
2407    }
2408    if (!matches) {
2409      setFetcherError(key, routeId, getInternalRouterError(404, {
2410        pathname: normalizedPath
2411      }), {
2412        flushSync
2413      });
2414      return;
2415    }
2416    let {
2417      path,
2418      submission,
2419      error
2420    } = normalizeNavigateOptions(future.v7_normalizeFormMethod, true, normalizedPath, opts);
2421    if (error) {
2422      setFetcherError(key, routeId, error, {
2423        flushSync
2424      });
2425      return;
2426    }
2427    let match = getTargetMatch(matches, path);
2428    let preventScrollReset = (opts && opts.preventScrollReset) === true;
2429    if (submission && isMutationMethod(submission.formMethod)) {
2430      handleFetcherAction(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);
2431      return;
2432    }
2433    // Store off the match so we can call it's shouldRevalidate on subsequent
2434    // revalidations
2435    fetchLoadMatches.set(key, {
2436      routeId,
2437      path
2438    });
2439    handleFetcherLoader(key, routeId, path, match, matches, fogOfWar.active, flushSync, preventScrollReset, submission);
2440  }
2441  // Call the action for the matched fetcher.submit(), and then handle redirects,
2442  // errors, and revalidation
2443  async function handleFetcherAction(key, routeId, path, match, requestMatches, isFogOfWar, flushSync, preventScrollReset, submission) {
2444    interruptActiveLoads();
2445    fetchLoadMatches.delete(key);
2446    function detectAndHandle405Error(m) {
2447      if (!m.route.action && !m.route.lazy) {
2448        let error = getInternalRouterError(405, {
2449          method: submission.formMethod,
2450          pathname: path,
2451          routeId: routeId
2452        });
2453        setFetcherError(key, routeId, error, {
2454          flushSync
2455        });
2456        return true;
2457      }
2458      return false;
2459    }
2460    if (!isFogOfWar && detectAndHandle405Error(match)) {
2461      return;
2462    }
2463    // Put this fetcher into it's submitting state
2464    let existingFetcher = state.fetchers.get(key);
2465    updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {
2466      flushSync
2467    });
2468    let abortController = new AbortController();
2469    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal, submission);
2470    if (isFogOfWar) {
2471      let discoverResult = await discoverRoutes(requestMatches, path, fetchRequest.signal);
2472      if (discoverResult.type === "aborted") {
2473        return;
2474      } else if (discoverResult.type === "error") {
2475        setFetcherError(key, routeId, discoverResult.error, {
2476          flushSync
2477        });
2478        return;
2479      } else if (!discoverResult.matches) {
2480        setFetcherError(key, routeId, getInternalRouterError(404, {
2481          pathname: path
2482        }), {
2483          flushSync
2484        });
2485        return;
2486      } else {
2487        requestMatches = discoverResult.matches;
2488        match = getTargetMatch(requestMatches, path);
2489        if (detectAndHandle405Error(match)) {
2490          return;
2491        }
2492      }
2493    }
2494    // Call the action for the fetcher
2495    fetchControllers.set(key, abortController);
2496    let originatingLoadId = incrementingLoadId;
2497    let actionResults = await callDataStrategy("action", state, fetchRequest, [match], requestMatches, key);
2498    let actionResult = actionResults[match.route.id];
2499    if (fetchRequest.signal.aborted) {
2500      // We can delete this so long as we weren't aborted by our own fetcher
2501      // re-submit which would have put _new_ controller is in fetchControllers
2502      if (fetchControllers.get(key) === abortController) {
2503        fetchControllers.delete(key);
2504      }
2505      return;
2506    }
2507    // When using v7_fetcherPersist, we don't want errors bubbling up to the UI
2508    // or redirects processed for unmounted fetchers so we just revert them to
2509    // idle
2510    if (future.v7_fetcherPersist && deletedFetchers.has(key)) {
2511      if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {
2512        updateFetcherState(key, getDoneFetcher(undefined));
2513        return;
2514      }
2515      // Let SuccessResult's fall through for revalidation
2516    } else {
2517      if (isRedirectResult(actionResult)) {
2518        fetchControllers.delete(key);
2519        if (pendingNavigationLoadId > originatingLoadId) {
2520          // A new navigation was kicked off after our action started, so that
2521          // should take precedence over this redirect navigation.  We already
2522          // set isRevalidationRequired so all loaders for the new route should
2523          // fire unless opted out via shouldRevalidate
2524          updateFetcherState(key, getDoneFetcher(undefined));
2525          return;
2526        } else {
2527          fetchRedirectIds.add(key);
2528          updateFetcherState(key, getLoadingFetcher(submission));
2529          return startRedirectNavigation(fetchRequest, actionResult, false, {
2530            fetcherSubmission: submission,
2531            preventScrollReset
2532          });
2533        }
2534      }
2535      // Process any non-redirect errors thrown
2536      if (isErrorResult(actionResult)) {
2537        setFetcherError(key, routeId, actionResult.error);
2538        return;
2539      }
2540    }
2541    if (isDeferredResult(actionResult)) {
2542      throw getInternalRouterError(400, {
2543        type: "defer-action"
2544      });
2545    }
2546    // Start the data load for current matches, or the next location if we're
2547    // in the middle of a navigation
2548    let nextLocation = state.navigation.location || state.location;
2549    let revalidationRequest = createClientSideRequest(init.history, nextLocation, abortController.signal);
2550    let routesToUse = inFlightDataRoutes || dataRoutes;
2551    let matches = state.navigation.state !== "idle" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;
2552    invariant(matches, "Didn't find any matches after fetcher action");
2553    let loadId = ++incrementingLoadId;
2554    fetchReloadIds.set(key, loadId);
2555    let loadFetcher = getLoadingFetcher(submission, actionResult.data);
2556    state.fetchers.set(key, loadFetcher);
2557    let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(init.history, state, matches, submission, nextLocation, false, future.v7_skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, [match.route.id, actionResult]);
2558    // Put all revalidating fetchers into the loading state, except for the
2559    // current fetcher which we want to keep in it's current loading state which
2560    // contains it's action submission info + action data
2561    revalidatingFetchers.filter(rf => rf.key !== key).forEach(rf => {
2562      let staleKey = rf.key;
2563      let existingFetcher = state.fetchers.get(staleKey);
2564      let revalidatingFetcher = getLoadingFetcher(undefined, existingFetcher ? existingFetcher.data : undefined);
2565      state.fetchers.set(staleKey, revalidatingFetcher);
2566      abortFetcher(staleKey);
2567      if (rf.controller) {
2568        fetchControllers.set(staleKey, rf.controller);
2569      }
2570    });
2571    updateState({
2572      fetchers: new Map(state.fetchers)
2573    });
2574    let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach(rf => abortFetcher(rf.key));
2575    abortController.signal.addEventListener("abort", abortPendingFetchRevalidations);
2576    let {
2577      loaderResults,
2578      fetcherResults
2579    } = await callLoadersAndMaybeResolveData(state, matches, matchesToLoad, revalidatingFetchers, revalidationRequest);
2580    if (abortController.signal.aborted) {
2581      return;
2582    }
2583    abortController.signal.removeEventListener("abort", abortPendingFetchRevalidations);
2584    fetchReloadIds.delete(key);
2585    fetchControllers.delete(key);
2586    revalidatingFetchers.forEach(r => fetchControllers.delete(r.key));
2587    let redirect = findRedirect(loaderResults);
2588    if (redirect) {
2589      return startRedirectNavigation(revalidationRequest, redirect.result, false, {
2590        preventScrollReset
2591      });
2592    }
2593    redirect = findRedirect(fetcherResults);
2594    if (redirect) {
2595      // If this redirect came from a fetcher make sure we mark it in
2596      // fetchRedirectIds so it doesn't get revalidated on the next set of
2597      // loader executions
2598      fetchRedirectIds.add(redirect.key);
2599      return startRedirectNavigation(revalidationRequest, redirect.result, false, {
2600        preventScrollReset
2601      });
2602    }
2603    // Process and commit output from loaders
2604    let {
2605      loaderData,
2606      errors
2607    } = processLoaderData(state, matches, loaderResults, undefined, revalidatingFetchers, fetcherResults, activeDeferreds);
2608    // Since we let revalidations complete even if the submitting fetcher was
2609    // deleted, only put it back to idle if it hasn't been deleted
2610    if (state.fetchers.has(key)) {
2611      let doneFetcher = getDoneFetcher(actionResult.data);
2612      state.fetchers.set(key, doneFetcher);
2613    }
2614    abortStaleFetchLoads(loadId);
2615    // If we are currently in a navigation loading state and this fetcher is
2616    // more recent than the navigation, we want the newer data so abort the
2617    // navigation and complete it with the fetcher data
2618    if (state.navigation.state === "loading" && loadId > pendingNavigationLoadId) {
2619      invariant(pendingAction, "Expected pending action");
2620      pendingNavigationController && pendingNavigationController.abort();
2621      completeNavigation(state.navigation.location, {
2622        matches,
2623        loaderData,
2624        errors,
2625        fetchers: new Map(state.fetchers)
2626      });
2627    } else {
2628      // otherwise just update with the fetcher data, preserving any existing
2629      // loaderData for loaders that did not need to reload.  We have to
2630      // manually merge here since we aren't going through completeNavigation
2631      updateState({
2632        errors,
2633        loaderData: mergeLoaderData(state.loaderData, loaderData, matches, errors),
2634        fetchers: new Map(state.fetchers)
2635      });
2636      isRevalidationRequired = false;
2637    }
2638  }
2639  // Call the matched loader for fetcher.load(), handling redirects, errors, etc.
2640  async function handleFetcherLoader(key, routeId, path, match, matches, isFogOfWar, flushSync, preventScrollReset, submission) {
2641    let existingFetcher = state.fetchers.get(key);
2642    updateFetcherState(key, getLoadingFetcher(submission, existingFetcher ? existingFetcher.data : undefined), {
2643      flushSync
2644    });
2645    let abortController = new AbortController();
2646    let fetchRequest = createClientSideRequest(init.history, path, abortController.signal);
2647    if (isFogOfWar) {
2648      let discoverResult = await discoverRoutes(matches, path, fetchRequest.signal);
2649      if (discoverResult.type === "aborted") {
2650        return;
2651      } else if (discoverResult.type === "error") {
2652        setFetcherError(key, routeId, discoverResult.error, {
2653          flushSync
2654        });
2655        return;
2656      } else if (!discoverResult.matches) {
2657        setFetcherError(key, routeId, getInternalRouterError(404, {
2658          pathname: path
2659        }), {
2660          flushSync
2661        });
2662        return;
2663      } else {
2664        matches = discoverResult.matches;
2665        match = getTargetMatch(matches, path);
2666      }
2667    }
2668    // Call the loader for this fetcher route match
2669    fetchControllers.set(key, abortController);
2670    let originatingLoadId = incrementingLoadId;
2671    let results = await callDataStrategy("loader", state, fetchRequest, [match], matches, key);
2672    let result = results[match.route.id];
2673    // Deferred isn't supported for fetcher loads, await everything and treat it
2674    // as a normal load.  resolveDeferredData will return undefined if this
2675    // fetcher gets aborted, so we just leave result untouched and short circuit
2676    // below if that happens
2677    if (isDeferredResult(result)) {
2678      result = (await resolveDeferredData(result, fetchRequest.signal, true)) || result;
2679    }
2680    // We can delete this so long as we weren't aborted by our our own fetcher
2681    // re-load which would have put _new_ controller is in fetchControllers
2682    if (fetchControllers.get(key) === abortController) {
2683      fetchControllers.delete(key);
2684    }
2685    if (fetchRequest.signal.aborted) {
2686      return;
2687    }
2688    // We don't want errors bubbling up or redirects followed for unmounted
2689    // fetchers, so short circuit here if it was removed from the UI
2690    if (deletedFetchers.has(key)) {
2691      updateFetcherState(key, getDoneFetcher(undefined));
2692      return;
2693    }
2694    // If the loader threw a redirect Response, start a new REPLACE navigation
2695    if (isRedirectResult(result)) {
2696      if (pendingNavigationLoadId > originatingLoadId) {
2697        // A new navigation was kicked off after our loader started, so that
2698        // should take precedence over this redirect navigation
2699        updateFetcherState(key, getDoneFetcher(undefined));
2700        return;
2701      } else {
2702        fetchRedirectIds.add(key);
2703        await startRedirectNavigation(fetchRequest, result, false, {
2704          preventScrollReset
2705        });
2706        return;
2707      }
2708    }
2709    // Process any non-redirect errors thrown
2710    if (isErrorResult(result)) {
2711      setFetcherError(key, routeId, result.error);
2712      return;
2713    }
2714    invariant(!isDeferredResult(result), "Unhandled fetcher deferred data");
2715    // Put the fetcher back into an idle state
2716    updateFetcherState(key, getDoneFetcher(result.data));
2717  }
2718  /**
2719   * Utility function to handle redirects returned from an action or loader.
2720   * Normally, a redirect "replaces" the navigation that triggered it.  So, for
2721   * example:
2722   *
2723   *  - user is on /a
2724   *  - user clicks a link to /b
2725   *  - loader for /b redirects to /c
2726   *
2727   * In a non-JS app the browser would track the in-flight navigation to /b and
2728   * then replace it with /c when it encountered the redirect response.  In
2729   * the end it would only ever update the URL bar with /c.
2730   *
2731   * In client-side routing using pushState/replaceState, we aim to emulate
2732   * this behavior and we also do not update history until the end of the
2733   * navigation (including processed redirects).  This means that we never
2734   * actually touch history until we've processed redirects, so we just use
2735   * the history action from the original navigation (PUSH or REPLACE).
2736   */
2737  async function startRedirectNavigation(request, redirect, isNavigation, _temp2) {
2738    let {
2739      submission,
2740      fetcherSubmission,
2741      preventScrollReset,
2742      replace
2743    } = _temp2 === void 0 ? {} : _temp2;
2744    if (redirect.response.headers.has("X-Remix-Revalidate")) {
2745      isRevalidationRequired = true;
2746    }
2747    let location = redirect.response.headers.get("Location");
2748    invariant(location, "Expected a Location header on the redirect Response");
2749    location = normalizeRedirectLocation(location, new URL(request.url), basename);
2750    let redirectLocation = createLocation(state.location, location, {
2751      _isRedirect: true
2752    });
2753    if (isBrowser) {
2754      let isDocumentReload = false;
2755      if (redirect.response.headers.has("X-Remix-Reload-Document")) {
2756        // Hard reload if the response contained X-Remix-Reload-Document
2757        isDocumentReload = true;
2758      } else if (ABSOLUTE_URL_REGEX.test(location)) {
2759        const url = init.history.createURL(location);
2760        isDocumentReload =
2761        // Hard reload if it's an absolute URL to a new origin
2762        url.origin !== routerWindow.location.origin ||
2763        // Hard reload if it's an absolute URL that does not match our basename
2764        stripBasename(url.pathname, basename) == null;
2765      }
2766      if (isDocumentReload) {
2767        if (replace) {
2768          routerWindow.location.replace(location);
2769        } else {
2770          routerWindow.location.assign(location);
2771        }
2772        return;
2773      }
2774    }
2775    // There's no need to abort on redirects, since we don't detect the
2776    // redirect until the action/loaders have settled
2777    pendingNavigationController = null;
2778    let redirectHistoryAction = replace === true || redirect.response.headers.has("X-Remix-Replace") ? Action.Replace : Action.Push;
2779    // Use the incoming submission if provided, fallback on the active one in
2780    // state.navigation
2781    let {
2782      formMethod,
2783      formAction,
2784      formEncType
2785    } = state.navigation;
2786    if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {
2787      submission = getSubmissionFromNavigation(state.navigation);
2788    }
2789    // If this was a 307/308 submission we want to preserve the HTTP method and
2790    // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the
2791    // redirected location
2792    let activeSubmission = submission || fetcherSubmission;
2793    if (redirectPreserveMethodStatusCodes.has(redirect.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {
2794      await startNavigation(redirectHistoryAction, redirectLocation, {
2795        submission: _extends({}, activeSubmission, {
2796          formAction: location
2797        }),
2798        // Preserve these flags across redirects
2799        preventScrollReset: preventScrollReset || pendingPreventScrollReset,
2800        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined
2801      });
2802    } else {
2803      // If we have a navigation submission, we will preserve it through the
2804      // redirect navigation
2805      let overrideNavigation = getLoadingNavigation(redirectLocation, submission);
2806      await startNavigation(redirectHistoryAction, redirectLocation, {
2807        overrideNavigation,
2808        // Send fetcher submissions through for shouldRevalidate
2809        fetcherSubmission,
2810        // Preserve these flags across redirects
2811        preventScrollReset: preventScrollReset || pendingPreventScrollReset,
2812        enableViewTransition: isNavigation ? pendingViewTransitionEnabled : undefined
2813      });
2814    }
2815  }
2816  // Utility wrapper for calling dataStrategy client-side without having to
2817  // pass around the manifest, mapRouteProperties, etc.
2818  async function callDataStrategy(type, state, request, matchesToLoad, matches, fetcherKey) {
2819    let results;
2820    let dataResults = {};
2821    try {
2822      results = await callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties);
2823    } catch (e) {
2824      // If the outer dataStrategy method throws, just return the error for all
2825      // matches - and it'll naturally bubble to the root
2826      matchesToLoad.forEach(m => {
2827        dataResults[m.route.id] = {
2828          type: ResultType.error,
2829          error: e
2830        };
2831      });
2832      return dataResults;
2833    }
2834    for (let [routeId, result] of Object.entries(results)) {
2835      if (isRedirectDataStrategyResultResult(result)) {
2836        let response = result.result;
2837        dataResults[routeId] = {
2838          type: ResultType.redirect,
2839          response: normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, future.v7_relativeSplatPath)
2840        };
2841      } else {
2842        dataResults[routeId] = await convertDataStrategyResultToDataResult(result);
2843      }
2844    }
2845    return dataResults;
2846  }
2847  async function callLoadersAndMaybeResolveData(state, matches, matchesToLoad, fetchersToLoad, request) {
2848    let currentMatches = state.matches;
2849    // Kick off loaders and fetchers in parallel
2850    let loaderResultsPromise = callDataStrategy("loader", state, request, matchesToLoad, matches, null);
2851    let fetcherResultsPromise = Promise.all(fetchersToLoad.map(async f => {
2852      if (f.matches && f.match && f.controller) {
2853        let results = await callDataStrategy("loader", state, createClientSideRequest(init.history, f.path, f.controller.signal), [f.match], f.matches, f.key);
2854        let result = results[f.match.route.id];
2855        // Fetcher results are keyed by fetcher key from here on out, not routeId
2856        return {
2857          [f.key]: result
2858        };
2859      } else {
2860        return Promise.resolve({
2861          [f.key]: {
2862            type: ResultType.error,
2863            error: getInternalRouterError(404, {
2864              pathname: f.path
2865            })
2866          }
2867        });
2868      }
2869    }));
2870    let loaderResults = await loaderResultsPromise;
2871    let fetcherResults = (await fetcherResultsPromise).reduce((acc, r) => Object.assign(acc, r), {});
2872    await Promise.all([resolveNavigationDeferredResults(matches, loaderResults, request.signal, currentMatches, state.loaderData), resolveFetcherDeferredResults(matches, fetcherResults, fetchersToLoad)]);
2873    return {
2874      loaderResults,
2875      fetcherResults
2876    };
2877  }
2878  function interruptActiveLoads() {
2879    // Every interruption triggers a revalidation
2880    isRevalidationRequired = true;
2881    // Cancel pending route-level deferreds and mark cancelled routes for
2882    // revalidation
2883    cancelledDeferredRoutes.push(...cancelActiveDeferreds());
2884    // Abort in-flight fetcher loads
2885    fetchLoadMatches.forEach((_, key) => {
2886      if (fetchControllers.has(key)) {
2887        cancelledFetcherLoads.add(key);
2888      }
2889      abortFetcher(key);
2890    });
2891  }
2892  function updateFetcherState(key, fetcher, opts) {
2893    if (opts === void 0) {
2894      opts = {};
2895    }
2896    state.fetchers.set(key, fetcher);
2897    updateState({
2898      fetchers: new Map(state.fetchers)
2899    }, {
2900      flushSync: (opts && opts.flushSync) === true
2901    });
2902  }
2903  function setFetcherError(key, routeId, error, opts) {
2904    if (opts === void 0) {
2905      opts = {};
2906    }
2907    let boundaryMatch = findNearestBoundary(state.matches, routeId);
2908    deleteFetcher(key);
2909    updateState({
2910      errors: {
2911        [boundaryMatch.route.id]: error
2912      },
2913      fetchers: new Map(state.fetchers)
2914    }, {
2915      flushSync: (opts && opts.flushSync) === true
2916    });
2917  }
2918  function getFetcher(key) {
2919    if (future.v7_fetcherPersist) {
2920      activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);
2921      // If this fetcher was previously marked for deletion, unmark it since we
2922      // have a new instance
2923      if (deletedFetchers.has(key)) {
2924        deletedFetchers.delete(key);
2925      }
2926    }
2927    return state.fetchers.get(key) || IDLE_FETCHER;
2928  }
2929  function deleteFetcher(key) {
2930    let fetcher = state.fetchers.get(key);
2931    // Don't abort the controller if this is a deletion of a fetcher.submit()
2932    // in it's loading phase since - we don't want to abort the corresponding
2933    // revalidation and want them to complete and land
2934    if (fetchControllers.has(key) && !(fetcher && fetcher.state === "loading" && fetchReloadIds.has(key))) {
2935      abortFetcher(key);
2936    }
2937    fetchLoadMatches.delete(key);
2938    fetchReloadIds.delete(key);
2939    fetchRedirectIds.delete(key);
2940    deletedFetchers.delete(key);
2941    cancelledFetcherLoads.delete(key);
2942    state.fetchers.delete(key);
2943  }
2944  function deleteFetcherAndUpdateState(key) {
2945    if (future.v7_fetcherPersist) {
2946      let count = (activeFetchers.get(key) || 0) - 1;
2947      if (count <= 0) {
2948        activeFetchers.delete(key);
2949        deletedFetchers.add(key);
2950      } else {
2951        activeFetchers.set(key, count);
2952      }
2953    } else {
2954      deleteFetcher(key);
2955    }
2956    updateState({
2957      fetchers: new Map(state.fetchers)
2958    });
2959  }
2960  function abortFetcher(key) {
2961    let controller = fetchControllers.get(key);
2962    if (controller) {
2963      controller.abort();
2964      fetchControllers.delete(key);
2965    }
2966  }
2967  function markFetchersDone(keys) {
2968    for (let key of keys) {
2969      let fetcher = getFetcher(key);
2970      let doneFetcher = getDoneFetcher(fetcher.data);
2971      state.fetchers.set(key, doneFetcher);
2972    }
2973  }
2974  function markFetchRedirectsDone() {
2975    let doneKeys = [];
2976    let updatedFetchers = false;
2977    for (let key of fetchRedirectIds) {
2978      let fetcher = state.fetchers.get(key);
2979      invariant(fetcher, "Expected fetcher: " + key);
2980      if (fetcher.state === "loading") {
2981        fetchRedirectIds.delete(key);
2982        doneKeys.push(key);
2983        updatedFetchers = true;
2984      }
2985    }
2986    markFetchersDone(doneKeys);
2987    return updatedFetchers;
2988  }
2989  function abortStaleFetchLoads(landedId) {
2990    let yeetedKeys = [];
2991    for (let [key, id] of fetchReloadIds) {
2992      if (id < landedId) {
2993        let fetcher = state.fetchers.get(key);
2994        invariant(fetcher, "Expected fetcher: " + key);
2995        if (fetcher.state === "loading") {
2996          abortFetcher(key);
2997          fetchReloadIds.delete(key);
2998          yeetedKeys.push(key);
2999        }
3000      }
3001    }
3002    markFetchersDone(yeetedKeys);
3003    return yeetedKeys.length > 0;
3004  }
3005  function getBlocker(key, fn) {
3006    let blocker = state.blockers.get(key) || IDLE_BLOCKER;
3007    if (blockerFunctions.get(key) !== fn) {
3008      blockerFunctions.set(key, fn);
3009    }
3010    return blocker;
3011  }
3012  function deleteBlocker(key) {
3013    state.blockers.delete(key);
3014    blockerFunctions.delete(key);
3015  }
3016  // Utility function to update blockers, ensuring valid state transitions
3017  function updateBlocker(key, newBlocker) {
3018    let blocker = state.blockers.get(key) || IDLE_BLOCKER;
3019    // Poor mans state machine :)
3020    // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM
3021    invariant(blocker.state === "unblocked" && newBlocker.state === "blocked" || blocker.state === "blocked" && newBlocker.state === "blocked" || blocker.state === "blocked" && newBlocker.state === "proceeding" || blocker.state === "blocked" && newBlocker.state === "unblocked" || blocker.state === "proceeding" && newBlocker.state === "unblocked", "Invalid blocker state transition: " + blocker.state + " -> " + newBlocker.state);
3022    let blockers = new Map(state.blockers);
3023    blockers.set(key, newBlocker);
3024    updateState({
3025      blockers
3026    });
3027  }
3028  function shouldBlockNavigation(_ref2) {
3029    let {
3030      currentLocation,
3031      nextLocation,
3032      historyAction
3033    } = _ref2;
3034    if (blockerFunctions.size === 0) {
3035      return;
3036    }
3037    // We ony support a single active blocker at the moment since we don't have
3038    // any compelling use cases for multi-blocker yet
3039    if (blockerFunctions.size > 1) {
3040      warning(false, "A router only supports one blocker at a time");
3041    }
3042    let entries = Array.from(blockerFunctions.entries());
3043    let [blockerKey, blockerFunction] = entries[entries.length - 1];
3044    let blocker = state.blockers.get(blockerKey);
3045    if (blocker && blocker.state === "proceeding") {
3046      // If the blocker is currently proceeding, we don't need to re-check
3047      // it and can let this navigation continue
3048      return;
3049    }
3050    // At this point, we know we're unblocked/blocked so we need to check the
3051    // user-provided blocker function
3052    if (blockerFunction({
3053      currentLocation,
3054      nextLocation,
3055      historyAction
3056    })) {
3057      return blockerKey;
3058    }
3059  }
3060  function handleNavigational404(pathname) {
3061    let error = getInternalRouterError(404, {
3062      pathname
3063    });
3064    let routesToUse = inFlightDataRoutes || dataRoutes;
3065    let {
3066      matches,
3067      route
3068    } = getShortCircuitMatches(routesToUse);
3069    // Cancel all pending deferred on 404s since we don't keep any routes
3070    cancelActiveDeferreds();
3071    return {
3072      notFoundMatches: matches,
3073      route,
3074      error
3075    };
3076  }
3077  function cancelActiveDeferreds(predicate) {
3078    let cancelledRouteIds = [];
3079    activeDeferreds.forEach((dfd, routeId) => {
3080      if (!predicate || predicate(routeId)) {
3081        // Cancel the deferred - but do not remove from activeDeferreds here -
3082        // we rely on the subscribers to do that so our tests can assert proper
3083        // cleanup via _internalActiveDeferreds
3084        dfd.cancel();
3085        cancelledRouteIds.push(routeId);
3086        activeDeferreds.delete(routeId);
3087      }
3088    });
3089    return cancelledRouteIds;
3090  }
3091  // Opt in to capturing and reporting scroll positions during navigations,
3092  // used by the <ScrollRestoration> component
3093  function enableScrollRestoration(positions, getPosition, getKey) {
3094    savedScrollPositions = positions;
3095    getScrollPosition = getPosition;
3096    getScrollRestorationKey = getKey || null;
3097    // Perform initial hydration scroll restoration, since we miss the boat on
3098    // the initial updateState() because we've not yet rendered <ScrollRestoration/>
3099    // and therefore have no savedScrollPositions available
3100    if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {
3101      initialScrollRestored = true;
3102      let y = getSavedScrollPosition(state.location, state.matches);
3103      if (y != null) {
3104        updateState({
3105          restoreScrollPosition: y
3106        });
3107      }
3108    }
3109    return () => {
3110      savedScrollPositions = null;
3111      getScrollPosition = null;
3112      getScrollRestorationKey = null;
3113    };
3114  }
3115  function getScrollKey(location, matches) {
3116    if (getScrollRestorationKey) {
3117      let key = getScrollRestorationKey(location, matches.map(m => convertRouteMatchToUiMatch(m, state.loaderData)));
3118      return key || location.key;
3119    }
3120    return location.key;
3121  }
3122  function saveScrollPosition(location, matches) {
3123    if (savedScrollPositions && getScrollPosition) {
3124      let key = getScrollKey(location, matches);
3125      savedScrollPositions[key] = getScrollPosition();
3126    }
3127  }
3128  function getSavedScrollPosition(location, matches) {
3129    if (savedScrollPositions) {
3130      let key = getScrollKey(location, matches);
3131      let y = savedScrollPositions[key];
3132      if (typeof y === "number") {
3133        return y;
3134      }
3135    }
3136    return null;
3137  }
3138  function checkFogOfWar(matches, routesToUse, pathname) {
3139    if (patchRoutesOnNavigationImpl) {
3140      if (!matches) {
3141        let fogMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
3142        return {
3143          active: true,
3144          matches: fogMatches || []
3145        };
3146      } else {
3147        if (Object.keys(matches[0].params).length > 0) {
3148          // If we matched a dynamic param or a splat, it might only be because
3149          // we haven't yet discovered other routes that would match with a
3150          // higher score.  Call patchRoutesOnNavigation just to be sure
3151          let partialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
3152          return {
3153            active: true,
3154            matches: partialMatches
3155          };
3156        }
3157      }
3158    }
3159    return {
3160      active: false,
3161      matches: null
3162    };
3163  }
3164  async function discoverRoutes(matches, pathname, signal) {
3165    if (!patchRoutesOnNavigationImpl) {
3166      return {
3167        type: "success",
3168        matches
3169      };
3170    }
3171    let partialMatches = matches;
3172    while (true) {
3173      let isNonHMR = inFlightDataRoutes == null;
3174      let routesToUse = inFlightDataRoutes || dataRoutes;
3175      let localManifest = manifest;
3176      try {
3177        await patchRoutesOnNavigationImpl({
3178          path: pathname,
3179          matches: partialMatches,
3180          patch: (routeId, children) => {
3181            if (signal.aborted) return;
3182            patchRoutesImpl(routeId, children, routesToUse, localManifest, mapRouteProperties);
3183          }
3184        });
3185      } catch (e) {
3186        return {
3187          type: "error",
3188          error: e,
3189          partialMatches
3190        };
3191      } finally {
3192        // If we are not in the middle of an HMR revalidation and we changed the
3193        // routes, provide a new identity so when we `updateState` at the end of
3194        // this navigation/fetch `router.routes` will be a new identity and
3195        // trigger a re-run of memoized `router.routes` dependencies.
3196        // HMR will already update the identity and reflow when it lands
3197        // `inFlightDataRoutes` in `completeNavigation`
3198        if (isNonHMR && !signal.aborted) {
3199          dataRoutes = [...dataRoutes];
3200        }
3201      }
3202      if (signal.aborted) {
3203        return {
3204          type: "aborted"
3205        };
3206      }
3207      let newMatches = matchRoutes(routesToUse, pathname, basename);
3208      if (newMatches) {
3209        return {
3210          type: "success",
3211          matches: newMatches
3212        };
3213      }
3214      let newPartialMatches = matchRoutesImpl(routesToUse, pathname, basename, true);
3215      // Avoid loops if the second pass results in the same partial matches
3216      if (!newPartialMatches || partialMatches.length === newPartialMatches.length && partialMatches.every((m, i) => m.route.id === newPartialMatches[i].route.id)) {
3217        return {
3218          type: "success",
3219          matches: null
3220        };
3221      }
3222      partialMatches = newPartialMatches;
3223    }
3224  }
3225  function _internalSetRoutes(newRoutes) {
3226    manifest = {};
3227    inFlightDataRoutes = convertRoutesToDataRoutes(newRoutes, mapRouteProperties, undefined, manifest);
3228  }
3229  function patchRoutes(routeId, children) {
3230    let isNonHMR = inFlightDataRoutes == null;
3231    let routesToUse = inFlightDataRoutes || dataRoutes;
3232    patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties);
3233    // If we are not in the middle of an HMR revalidation and we changed the
3234    // routes, provide a new identity and trigger a reflow via `updateState`
3235    // to re-run memoized `router.routes` dependencies.
3236    // HMR will already update the identity and reflow when it lands
3237    // `inFlightDataRoutes` in `completeNavigation`
3238    if (isNonHMR) {
3239      dataRoutes = [...dataRoutes];
3240      updateState({});
3241    }
3242  }
3243  router = {
3244    get basename() {
3245      return basename;
3246    },
3247    get future() {
3248      return future;
3249    },
3250    get state() {
3251      return state;
3252    },
3253    get routes() {
3254      return dataRoutes;
3255    },
3256    get window() {
3257      return routerWindow;
3258    },
3259    initialize,
3260    subscribe,
3261    enableScrollRestoration,
3262    navigate,
3263    fetch,
3264    revalidate,
3265    // Passthrough to history-aware createHref used by useHref so we get proper
3266    // hash-aware URLs in DOM paths
3267    createHref: to => init.history.createHref(to),
3268    encodeLocation: to => init.history.encodeLocation(to),
3269    getFetcher,
3270    deleteFetcher: deleteFetcherAndUpdateState,
3271    dispose,
3272    getBlocker,
3273    deleteBlocker,
3274    patchRoutes,
3275    _internalFetchControllers: fetchControllers,
3276    _internalActiveDeferreds: activeDeferreds,
3277    // TODO: Remove setRoutes, it's temporary to avoid dealing with
3278    // updating the tree while validating the update algorithm.
3279    _internalSetRoutes
3280  };
3281  return router;
3282}
3283//#endregion
3284////////////////////////////////////////////////////////////////////////////////
3285//#region createStaticHandler
3286////////////////////////////////////////////////////////////////////////////////
3287const UNSAFE_DEFERRED_SYMBOL = Symbol("deferred");
3288function createStaticHandler(routes, opts) {
3289  invariant(routes.length > 0, "You must provide a non-empty routes array to createStaticHandler");
3290  let manifest = {};
3291  let basename = (opts ? opts.basename : null) || "/";
3292  let mapRouteProperties;
3293  if (opts != null && opts.mapRouteProperties) {
3294    mapRouteProperties = opts.mapRouteProperties;
3295  } else if (opts != null && opts.detectErrorBoundary) {
3296    // If they are still using the deprecated version, wrap it with the new API
3297    let detectErrorBoundary = opts.detectErrorBoundary;
3298    mapRouteProperties = route => ({
3299      hasErrorBoundary: detectErrorBoundary(route)
3300    });
3301  } else {
3302    mapRouteProperties = defaultMapRouteProperties;
3303  }
3304  // Config driven behavior flags
3305  let future = _extends({
3306    v7_relativeSplatPath: false,
3307    v7_throwAbortReason: false
3308  }, opts ? opts.future : null);
3309  let dataRoutes = convertRoutesToDataRoutes(routes, mapRouteProperties, undefined, manifest);
3310  /**
3311   * The query() method is intended for document requests, in which we want to
3312   * call an optional action and potentially multiple loaders for all nested
3313   * routes.  It returns a StaticHandlerContext object, which is very similar
3314   * to the router state (location, loaderData, actionData, errors, etc.) and
3315   * also adds SSR-specific information such as the statusCode and headers
3316   * from action/loaders Responses.
3317   *
3318   * It _should_ never throw and should report all errors through the
3319   * returned context.errors object, properly associating errors to their error
3320   * boundary.  Additionally, it tracks _deepestRenderedBoundaryId which can be
3321   * used to emulate React error boundaries during SSr by performing a second
3322   * pass only down to the boundaryId.
3323   *
3324   * The one exception where we do not return a StaticHandlerContext is when a
3325   * redirect response is returned or thrown from any action/loader.  We
3326   * propagate that out and return the raw Response so the HTTP server can
3327   * return it directly.
3328   *
3329   * - `opts.requestContext` is an optional server context that will be passed
3330   *   to actions/loaders in the `context` parameter
3331   * - `opts.skipLoaderErrorBubbling` is an optional parameter that will prevent
3332   *   the bubbling of errors which allows single-fetch-type implementations
3333   *   where the client will handle the bubbling and we may need to return data
3334   *   for the handling route
3335   */
3336  async function query(request, _temp3) {
3337    let {
3338      requestContext,
3339      skipLoaderErrorBubbling,
3340      dataStrategy
3341    } = _temp3 === void 0 ? {} : _temp3;
3342    let url = new URL(request.url);
3343    let method = request.method;
3344    let location = createLocation("", createPath(url), null, "default");
3345    let matches = matchRoutes(dataRoutes, location, basename);
3346    // SSR supports HEAD requests while SPA doesn't
3347    if (!isValidMethod(method) && method !== "HEAD") {
3348      let error = getInternalRouterError(405, {
3349        method
3350      });
3351      let {
3352        matches: methodNotAllowedMatches,
3353        route
3354      } = getShortCircuitMatches(dataRoutes);
3355      return {
3356        basename,
3357        location,
3358        matches: methodNotAllowedMatches,
3359        loaderData: {},
3360        actionData: null,
3361        errors: {
3362          [route.id]: error
3363        },
3364        statusCode: error.status,
3365        loaderHeaders: {},
3366        actionHeaders: {},
3367        activeDeferreds: null
3368      };
3369    } else if (!matches) {
3370      let error = getInternalRouterError(404, {
3371        pathname: location.pathname
3372      });
3373      let {
3374        matches: notFoundMatches,
3375        route
3376      } = getShortCircuitMatches(dataRoutes);
3377      return {
3378        basename,
3379        location,
3380        matches: notFoundMatches,
3381        loaderData: {},
3382        actionData: null,
3383        errors: {
3384          [route.id]: error
3385        },
3386        statusCode: error.status,
3387        loaderHeaders: {},
3388        actionHeaders: {},
3389        activeDeferreds: null
3390      };
3391    }
3392    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, skipLoaderErrorBubbling === true, null);
3393    if (isResponse(result)) {
3394      return result;
3395    }
3396    // When returning StaticHandlerContext, we patch back in the location here
3397    // since we need it for React Context.  But this helps keep our submit and
3398    // loadRouteData operating on a Request instead of a Location
3399    return _extends({
3400      location,
3401      basename
3402    }, result);
3403  }
3404  /**
3405   * The queryRoute() method is intended for targeted route requests, either
3406   * for fetch ?_data requests or resource route requests.  In this case, we
3407   * are only ever calling a single action or loader, and we are returning the
3408   * returned value directly.  In most cases, this will be a Response returned
3409   * from the action/loader, but it may be a primitive or other value as well -
3410   * and in such cases the calling context should handle that accordingly.
3411   *
3412   * We do respect the throw/return differentiation, so if an action/loader
3413   * throws, then this method will throw the value.  This is important so we
3414   * can do proper boundary identification in Remix where a thrown Response
3415   * must go to the Catch Boundary but a returned Response is happy-path.
3416   *
3417   * One thing to note is that any Router-initiated Errors that make sense
3418   * to associate with a status code will be thrown as an ErrorResponse
3419   * instance which include the raw Error, such that the calling context can
3420   * serialize the error as they see fit while including the proper response
3421   * code.  Examples here are 404 and 405 errors that occur prior to reaching
3422   * any user-defined loaders.
3423   *
3424   * - `opts.routeId` allows you to specify the specific route handler to call.
3425   *   If not provided the handler will determine the proper route by matching
3426   *   against `request.url`
3427   * - `opts.requestContext` is an optional server context that will be passed
3428   *    to actions/loaders in the `context` parameter
3429   */
3430  async function queryRoute(request, _temp4) {
3431    let {
3432      routeId,
3433      requestContext,
3434      dataStrategy
3435    } = _temp4 === void 0 ? {} : _temp4;
3436    let url = new URL(request.url);
3437    let method = request.method;
3438    let location = createLocation("", createPath(url), null, "default");
3439    let matches = matchRoutes(dataRoutes, location, basename);
3440    // SSR supports HEAD requests while SPA doesn't
3441    if (!isValidMethod(method) && method !== "HEAD" && method !== "OPTIONS") {
3442      throw getInternalRouterError(405, {
3443        method
3444      });
3445    } else if (!matches) {
3446      throw getInternalRouterError(404, {
3447        pathname: location.pathname
3448      });
3449    }
3450    let match = routeId ? matches.find(m => m.route.id === routeId) : getTargetMatch(matches, location);
3451    if (routeId && !match) {
3452      throw getInternalRouterError(403, {
3453        pathname: location.pathname,
3454        routeId
3455      });
3456    } else if (!match) {
3457      // This should never hit I don't think?
3458      throw getInternalRouterError(404, {
3459        pathname: location.pathname
3460      });
3461    }
3462    let result = await queryImpl(request, location, matches, requestContext, dataStrategy || null, false, match);
3463    if (isResponse(result)) {
3464      return result;
3465    }
3466    let error = result.errors ? Object.values(result.errors)[0] : undefined;
3467    if (error !== undefined) {
3468      // If we got back result.errors, that means the loader/action threw
3469      // _something_ that wasn't a Response, but it's not guaranteed/required
3470      // to be an `instanceof Error` either, so we have to use throw here to
3471      // preserve the "error" state outside of queryImpl.
3472      throw error;
3473    }
3474    // Pick off the right state value to return
3475    if (result.actionData) {
3476      return Object.values(result.actionData)[0];
3477    }
3478    if (result.loaderData) {
3479      var _result$activeDeferre;
3480      let data = Object.values(result.loaderData)[0];
3481      if ((_result$activeDeferre = result.activeDeferreds) != null && _result$activeDeferre[match.route.id]) {
3482        data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];
3483      }
3484      return data;
3485    }
3486    return undefined;
3487  }
3488  async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch) {
3489    invariant(request.signal, "query()/queryRoute() requests must contain an AbortController signal");
3490    try {
3491      if (isMutationMethod(request.method.toLowerCase())) {
3492        let result = await submit(request, matches, routeMatch || getTargetMatch(matches, location), requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch != null);
3493        return result;
3494      }
3495      let result = await loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch);
3496      return isResponse(result) ? result : _extends({}, result, {
3497        actionData: null,
3498        actionHeaders: {}
3499      });
3500    } catch (e) {
3501      // If the user threw/returned a Response in callLoaderOrAction for a
3502      // `queryRoute` call, we throw the `DataStrategyResult` to bail out early
3503      // and then return or throw the raw Response here accordingly
3504      if (isDataStrategyResult(e) && isResponse(e.result)) {
3505        if (e.type === ResultType.error) {
3506          throw e.result;
3507        }
3508        return e.result;
3509      }
3510      // Redirects are always returned since they don't propagate to catch
3511      // boundaries
3512      if (isRedirectResponse(e)) {
3513        return e;
3514      }
3515      throw e;
3516    }
3517  }
3518  async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest) {
3519    let result;
3520    if (!actionMatch.route.action && !actionMatch.route.lazy) {
3521      let error = getInternalRouterError(405, {
3522        method: request.method,
3523        pathname: new URL(request.url).pathname,
3524        routeId: actionMatch.route.id
3525      });
3526      if (isRouteRequest) {
3527        throw error;
3528      }
3529      result = {
3530        type: ResultType.error,
3531        error
3532      };
3533    } else {
3534      let results = await callDataStrategy("action", request, [actionMatch], matches, isRouteRequest, requestContext, dataStrategy);
3535      result = results[actionMatch.route.id];
3536      if (request.signal.aborted) {
3537        throwStaticHandlerAbortedError(request, isRouteRequest, future);
3538      }
3539    }
3540    if (isRedirectResult(result)) {
3541      // Uhhhh - this should never happen, we should always throw these from
3542      // callLoaderOrAction, but the type narrowing here keeps TS happy and we
3543      // can get back on the "throw all redirect responses" train here should
3544      // this ever happen :/
3545      throw new Response(null, {
3546        status: result.response.status,
3547        headers: {
3548          Location: result.response.headers.get("Location")
3549        }
3550      });
3551    }
3552    if (isDeferredResult(result)) {
3553      let error = getInternalRouterError(400, {
3554        type: "defer-action"
3555      });
3556      if (isRouteRequest) {
3557        throw error;
3558      }
3559      result = {
3560        type: ResultType.error,
3561        error
3562      };
3563    }
3564    if (isRouteRequest) {
3565      // Note: This should only be non-Response values if we get here, since
3566      // isRouteRequest should throw any Response received in callLoaderOrAction
3567      if (isErrorResult(result)) {
3568        throw result.error;
3569      }
3570      return {
3571        matches: [actionMatch],
3572        loaderData: {},
3573        actionData: {
3574          [actionMatch.route.id]: result.data
3575        },
3576        errors: null,
3577        // Note: statusCode + headers are unused here since queryRoute will
3578        // return the raw Response or value
3579        statusCode: 200,
3580        loaderHeaders: {},
3581        actionHeaders: {},
3582        activeDeferreds: null
3583      };
3584    }
3585    // Create a GET request for the loaders
3586    let loaderRequest = new Request(request.url, {
3587      headers: request.headers,
3588      redirect: request.redirect,
3589      signal: request.signal
3590    });
3591    if (isErrorResult(result)) {
3592      // Store off the pending error - we use it to determine which loaders
3593      // to call and will commit it when we complete the navigation
3594      let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);
3595      let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null, [boundaryMatch.route.id, result]);
3596      // action status codes take precedence over loader status codes
3597      return _extends({}, context, {
3598        statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,
3599        actionData: null,
3600        actionHeaders: _extends({}, result.headers ? {
3601          [actionMatch.route.id]: result.headers
3602        } : {})
3603      });
3604    }
3605    let context = await loadRouteData(loaderRequest, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, null);
3606    return _extends({}, context, {
3607      actionData: {
3608        [actionMatch.route.id]: result.data
3609      }
3610    }, result.statusCode ? {
3611      statusCode: result.statusCode
3612    } : {}, {
3613      actionHeaders: result.headers ? {
3614        [actionMatch.route.id]: result.headers
3615      } : {}
3616    });
3617  }
3618  async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, pendingActionResult) {
3619    let isRouteRequest = routeMatch != null;
3620    // Short circuit if we have no loaders to run (queryRoute())
3621    if (isRouteRequest && !(routeMatch != null && routeMatch.route.loader) && !(routeMatch != null && routeMatch.route.lazy)) {
3622      throw getInternalRouterError(400, {
3623        method: request.method,
3624        pathname: new URL(request.url).pathname,
3625        routeId: routeMatch == null ? void 0 : routeMatch.route.id
3626      });
3627    }
3628    let requestMatches = routeMatch ? [routeMatch] : pendingActionResult && isErrorResult(pendingActionResult[1]) ? getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]) : matches;
3629    let matchesToLoad = requestMatches.filter(m => m.route.loader || m.route.lazy);
3630    // Short circuit if we have no loaders to run (query())
3631    if (matchesToLoad.length === 0) {
3632      return {
3633        matches,
3634        // Add a null for all matched routes for proper revalidation on the client
3635        loaderData: matches.reduce((acc, m) => Object.assign(acc, {
3636          [m.route.id]: null
3637        }), {}),
3638        errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {
3639          [pendingActionResult[0]]: pendingActionResult[1].error
3640        } : null,
3641        statusCode: 200,
3642        loaderHeaders: {},
3643        activeDeferreds: null
3644      };
3645    }
3646    let results = await callDataStrategy("loader", request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy);
3647    if (request.signal.aborted) {
3648      throwStaticHandlerAbortedError(request, isRouteRequest, future);
3649    }
3650    // Process and commit output from loaders
3651    let activeDeferreds = new Map();
3652    let context = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling);
3653    // Add a null for any non-loader matches for proper revalidation on the client
3654    let executedLoaders = new Set(matchesToLoad.map(match => match.route.id));
3655    matches.forEach(match => {
3656      if (!executedLoaders.has(match.route.id)) {
3657        context.loaderData[match.route.id] = null;
3658      }
3659    });
3660    return _extends({}, context, {
3661      matches,
3662      activeDeferreds: activeDeferreds.size > 0 ? Object.fromEntries(activeDeferreds.entries()) : null
3663    });
3664  }
3665  // Utility wrapper for calling dataStrategy server-side without having to
3666  // pass around the manifest, mapRouteProperties, etc.
3667  async function callDataStrategy(type, request, matchesToLoad, matches, isRouteRequest, requestContext, dataStrategy) {
3668    let results = await callDataStrategyImpl(dataStrategy || defaultDataStrategy, type, null, request, matchesToLoad, matches, null, manifest, mapRouteProperties, requestContext);
3669    let dataResults = {};
3670    await Promise.all(matches.map(async match => {
3671      if (!(match.route.id in results)) {
3672        return;
3673      }
3674      let result = results[match.route.id];
3675      if (isRedirectDataStrategyResultResult(result)) {
3676        let response = result.result;
3677        // Throw redirects and let the server handle them with an HTTP redirect
3678        throw normalizeRelativeRoutingRedirectResponse(response, request, match.route.id, matches, basename, future.v7_relativeSplatPath);
3679      }
3680      if (isResponse(result.result) && isRouteRequest) {
3681        // For SSR single-route requests, we want to hand Responses back
3682        // directly without unwrapping
3683        throw result;
3684      }
3685      dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);
3686    }));
3687    return dataResults;
3688  }
3689  return {
3690    dataRoutes,
3691    query,
3692    queryRoute
3693  };
3694}
3695//#endregion
3696////////////////////////////////////////////////////////////////////////////////
3697//#region Helpers
3698////////////////////////////////////////////////////////////////////////////////
3699/**
3700 * Given an existing StaticHandlerContext and an error thrown at render time,
3701 * provide an updated StaticHandlerContext suitable for a second SSR render
3702 */
3703function getStaticContextFromError(routes, context, error) {
3704  let newContext = _extends({}, context, {
3705    statusCode: isRouteErrorResponse(error) ? error.status : 500,
3706    errors: {
3707      [context._deepestRenderedBoundaryId || routes[0].id]: error
3708    }
3709  });
3710  return newContext;
3711}
3712function throwStaticHandlerAbortedError(request, isRouteRequest, future) {
3713  if (future.v7_throwAbortReason && request.signal.reason !== undefined) {
3714    throw request.signal.reason;
3715  }
3716  let method = isRouteRequest ? "queryRoute" : "query";
3717  throw new Error(method + "() call aborted: " + request.method + " " + request.url);
3718}
3719function isSubmissionNavigation(opts) {
3720  return opts != null && ("formData" in opts && opts.formData != null || "body" in opts && opts.body !== undefined);
3721}
3722function normalizeTo(location, matches, basename, prependBasename, to, v7_relativeSplatPath, fromRouteId, relative) {
3723  let contextualMatches;
3724  let activeRouteMatch;
3725  if (fromRouteId) {
3726    // Grab matches up to the calling route so our route-relative logic is
3727    // relative to the correct source route
3728    contextualMatches = [];
3729    for (let match of matches) {
3730      contextualMatches.push(match);
3731      if (match.route.id === fromRouteId) {
3732        activeRouteMatch = match;
3733        break;
3734      }
3735    }
3736  } else {
3737    contextualMatches = matches;
3738    activeRouteMatch = matches[matches.length - 1];
3739  }
3740  // Resolve the relative path
3741  let path = resolveTo(to ? to : ".", getResolveToMatches(contextualMatches, v7_relativeSplatPath), stripBasename(location.pathname, basename) || location.pathname, relative === "path");
3742  // When `to` is not specified we inherit search/hash from the current
3743  // location, unlike when to="." and we just inherit the path.
3744  // See https://github.com/remix-run/remix/issues/927
3745  if (to == null) {
3746    path.search = location.search;
3747    path.hash = location.hash;
3748  }
3749  // Account for `?index` params when routing to the current location
3750  if ((to == null || to === "" || to === ".") && activeRouteMatch) {
3751    let nakedIndex = hasNakedIndexQuery(path.search);
3752    if (activeRouteMatch.route.index && !nakedIndex) {
3753      // Add one when we're targeting an index route
3754      path.search = path.search ? path.search.replace(/^\?/, "?index&") : "?index";
3755    } else if (!activeRouteMatch.route.index && nakedIndex) {
3756      // Remove existing ones when we're not
3757      let params = new URLSearchParams(path.search);
3758      let indexValues = params.getAll("index");
3759      params.delete("index");
3760      indexValues.filter(v => v).forEach(v => params.append("index", v));
3761      let qs = params.toString();
3762      path.search = qs ? "?" + qs : "";
3763    }
3764  }
3765  // If we're operating within a basename, prepend it to the pathname.  If
3766  // this is a root navigation, then just use the raw basename which allows
3767  // the basename to have full control over the presence of a trailing slash
3768  // on root actions
3769  if (prependBasename && basename !== "/") {
3770    path.pathname = path.pathname === "/" ? basename : joinPaths([basename, path.pathname]);
3771  }
3772  return createPath(path);
3773}
3774// Normalize navigation options by converting formMethod=GET formData objects to
3775// URLSearchParams so they behave identically to links with query params
3776function normalizeNavigateOptions(normalizeFormMethod, isFetcher, path, opts) {
3777  // Return location verbatim on non-submission navigations
3778  if (!opts || !isSubmissionNavigation(opts)) {
3779    return {
3780      path
3781    };
3782  }
3783  if (opts.formMethod && !isValidMethod(opts.formMethod)) {
3784    return {
3785      path,
3786      error: getInternalRouterError(405, {
3787        method: opts.formMethod
3788      })
3789    };
3790  }
3791  let getInvalidBodyError = () => ({
3792    path,
3793    error: getInternalRouterError(400, {
3794      type: "invalid-body"
3795    })
3796  });
3797  // Create a Submission on non-GET navigations
3798  let rawFormMethod = opts.formMethod || "get";
3799  let formMethod = normalizeFormMethod ? rawFormMethod.toUpperCase() : rawFormMethod.toLowerCase();
3800  let formAction = stripHashFromPath(path);
3801  if (opts.body !== undefined) {
3802    if (opts.formEncType === "text/plain") {
3803      // text only support POST/PUT/PATCH/DELETE submissions
3804      if (!isMutationMethod(formMethod)) {
3805        return getInvalidBodyError();
3806      }
3807      let text = typeof opts.body === "string" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ?
3808      // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data
3809      Array.from(opts.body.entries()).reduce((acc, _ref3) => {
3810        let [name, value] = _ref3;
3811        return "" + acc + name + "=" + value + "\n";
3812      }, "") : String(opts.body);
3813      return {
3814        path,
3815        submission: {
3816          formMethod,
3817          formAction,
3818          formEncType: opts.formEncType,
3819          formData: undefined,
3820          json: undefined,
3821          text
3822        }
3823      };
3824    } else if (opts.formEncType === "application/json") {
3825      // json only supports POST/PUT/PATCH/DELETE submissions
3826      if (!isMutationMethod(formMethod)) {
3827        return getInvalidBodyError();
3828      }
3829      try {
3830        let json = typeof opts.body === "string" ? JSON.parse(opts.body) : opts.body;
3831        return {
3832          path,
3833          submission: {
3834            formMethod,
3835            formAction,
3836            formEncType: opts.formEncType,
3837            formData: undefined,
3838            json,
3839            text: undefined
3840          }
3841        };
3842      } catch (e) {
3843        return getInvalidBodyError();
3844      }
3845    }
3846  }
3847  invariant(typeof FormData === "function", "FormData is not available in this environment");
3848  let searchParams;
3849  let formData;
3850  if (opts.formData) {
3851    searchParams = convertFormDataToSearchParams(opts.formData);
3852    formData = opts.formData;
3853  } else if (opts.body instanceof FormData) {
3854    searchParams = convertFormDataToSearchParams(opts.body);
3855    formData = opts.body;
3856  } else if (opts.body instanceof URLSearchParams) {
3857    searchParams = opts.body;
3858    formData = convertSearchParamsToFormData(searchParams);
3859  } else if (opts.body == null) {
3860    searchParams = new URLSearchParams();
3861    formData = new FormData();
3862  } else {
3863    try {
3864      searchParams = new URLSearchParams(opts.body);
3865      formData = convertSearchParamsToFormData(searchParams);
3866    } catch (e) {
3867      return getInvalidBodyError();
3868    }
3869  }
3870  let submission = {
3871    formMethod,
3872    formAction,
3873    formEncType: opts && opts.formEncType || "application/x-www-form-urlencoded",
3874    formData,
3875    json: undefined,
3876    text: undefined
3877  };
3878  if (isMutationMethod(submission.formMethod)) {
3879    return {
3880      path,
3881      submission
3882    };
3883  }
3884  // Flatten submission onto URLSearchParams for GET submissions
3885  let parsedPath = parsePath(path);
3886  // On GET navigation submissions we can drop the ?index param from the
3887  // resulting location since all loaders will run.  But fetcher GET submissions
3888  // only run a single loader so we need to preserve any incoming ?index params
3889  if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {
3890    searchParams.append("index", "");
3891  }
3892  parsedPath.search = "?" + searchParams;
3893  return {
3894    path: createPath(parsedPath),
3895    submission
3896  };
3897}
3898// Filter out all routes at/below any caught error as they aren't going to
3899// render so we don't need to load them
3900function getLoaderMatchesUntilBoundary(matches, boundaryId, includeBoundary) {
3901  if (includeBoundary === void 0) {
3902    includeBoundary = false;
3903  }
3904  let index = matches.findIndex(m => m.route.id === boundaryId);
3905  if (index >= 0) {
3906    return matches.slice(0, includeBoundary ? index + 1 : index);
3907  }
3908  return matches;
3909}
3910function getMatchesToLoad(history, state, matches, submission, location, initialHydration, skipActionErrorRevalidation, isRevalidationRequired, cancelledDeferredRoutes, cancelledFetcherLoads, deletedFetchers, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, pendingActionResult) {
3911  let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : undefined;
3912  let currentUrl = history.createURL(state.location);
3913  let nextUrl = history.createURL(location);
3914  // Pick navigation matches that are net-new or qualify for revalidation
3915  let boundaryMatches = matches;
3916  if (initialHydration && state.errors) {
3917    // On initial hydration, only consider matches up to _and including_ the boundary.
3918    // This is inclusive to handle cases where a server loader ran successfully,
3919    // a child server loader bubbled up to this route, but this route has
3920    // `clientLoader.hydrate` so we want to still run the `clientLoader` so that
3921    // we have a complete version of `loaderData`
3922    boundaryMatches = getLoaderMatchesUntilBoundary(matches, Object.keys(state.errors)[0], true);
3923  } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {
3924    // If an action threw an error, we call loaders up to, but not including the
3925    // boundary
3926    boundaryMatches = getLoaderMatchesUntilBoundary(matches, pendingActionResult[0]);
3927  }
3928  // Don't revalidate loaders by default after action 4xx/5xx responses
3929  // when the flag is enabled.  They can still opt-into revalidation via
3930  // `shouldRevalidate` via `actionResult`
3931  let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : undefined;
3932  let shouldSkipRevalidation = skipActionErrorRevalidation && actionStatus && actionStatus >= 400;
3933  let navigationMatches = boundaryMatches.filter((match, index) => {
3934    let {
3935      route
3936    } = match;
3937    if (route.lazy) {
3938      // We haven't loaded this route yet so we don't know if it's got a loader!
3939      return true;
3940    }
3941    if (route.loader == null) {
3942      return false;
3943    }
3944    if (initialHydration) {
3945      return shouldLoadRouteOnHydration(route, state.loaderData, state.errors);
3946    }
3947    // Always call the loader on new route instances and pending defer cancellations
3948    if (isNewLoader(state.loaderData, state.matches[index], match) || cancelledDeferredRoutes.some(id => id === match.route.id)) {
3949      return true;
3950    }
3951    // This is the default implementation for when we revalidate.  If the route
3952    // provides it's own implementation, then we give them full control but
3953    // provide this value so they can leverage it if needed after they check
3954    // their own specific use cases
3955    let currentRouteMatch = state.matches[index];
3956    let nextRouteMatch = match;
3957    return shouldRevalidateLoader(match, _extends({
3958      currentUrl,
3959      currentParams: currentRouteMatch.params,
3960      nextUrl,
3961      nextParams: nextRouteMatch.params
3962    }, submission, {
3963      actionResult,
3964      actionStatus,
3965      defaultShouldRevalidate: shouldSkipRevalidation ? false :
3966      // Forced revalidation due to submission, useRevalidator, or X-Remix-Revalidate
3967      isRevalidationRequired || currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search ||
3968      // Search params affect all loaders
3969      currentUrl.search !== nextUrl.search || isNewRouteInstance(currentRouteMatch, nextRouteMatch)
3970    }));
3971  });
3972  // Pick fetcher.loads that need to be revalidated
3973  let revalidatingFetchers = [];
3974  fetchLoadMatches.forEach((f, key) => {
3975    // Don't revalidate:
3976    //  - on initial hydration (shouldn't be any fetchers then anyway)
3977    //  - if fetcher won't be present in the subsequent render
3978    //    - no longer matches the URL (v7_fetcherPersist=false)
3979    //    - was unmounted but persisted due to v7_fetcherPersist=true
3980    if (initialHydration || !matches.some(m => m.route.id === f.routeId) || deletedFetchers.has(key)) {
3981      return;
3982    }
3983    let fetcherMatches = matchRoutes(routesToUse, f.path, basename);
3984    // If the fetcher path no longer matches, push it in with null matches so
3985    // we can trigger a 404 in callLoadersAndMaybeResolveData.  Note this is
3986    // currently only a use-case for Remix HMR where the route tree can change
3987    // at runtime and remove a route previously loaded via a fetcher
3988    if (!fetcherMatches) {
3989      revalidatingFetchers.push({
3990        key,
3991        routeId: f.routeId,
3992        path: f.path,
3993        matches: null,
3994        match: null,
3995        controller: null
3996      });
3997      return;
3998    }
3999    // Revalidating fetchers are decoupled from the route matches since they
4000    // load from a static href.  They revalidate based on explicit revalidation
4001    // (submission, useRevalidator, or X-Remix-Revalidate)
4002    let fetcher = state.fetchers.get(key);
4003    let fetcherMatch = getTargetMatch(fetcherMatches, f.path);
4004    let shouldRevalidate = false;
4005    if (fetchRedirectIds.has(key)) {
4006      // Never trigger a revalidation of an actively redirecting fetcher
4007      shouldRevalidate = false;
4008    } else if (cancelledFetcherLoads.has(key)) {
4009      // Always mark for revalidation if the fetcher was cancelled
4010      cancelledFetcherLoads.delete(key);
4011      shouldRevalidate = true;
4012    } else if (fetcher && fetcher.state !== "idle" && fetcher.data === undefined) {
4013      // If the fetcher hasn't ever completed loading yet, then this isn't a
4014      // revalidation, it would just be a brand new load if an explicit
4015      // revalidation is required
4016      shouldRevalidate = isRevalidationRequired;
4017    } else {
4018      // Otherwise fall back on any user-defined shouldRevalidate, defaulting
4019      // to explicit revalidations only
4020      shouldRevalidate = shouldRevalidateLoader(fetcherMatch, _extends({
4021        currentUrl,
4022        currentParams: state.matches[state.matches.length - 1].params,
4023        nextUrl,
4024        nextParams: matches[matches.length - 1].params
4025      }, submission, {
4026        actionResult,
4027        actionStatus,
4028        defaultShouldRevalidate: shouldSkipRevalidation ? false : isRevalidationRequired
4029      }));
4030    }
4031    if (shouldRevalidate) {
4032      revalidatingFetchers.push({
4033        key,
4034        routeId: f.routeId,
4035        path: f.path,
4036        matches: fetcherMatches,
4037        match: fetcherMatch,
4038        controller: new AbortController()
4039      });
4040    }
4041  });
4042  return [navigationMatches, revalidatingFetchers];
4043}
4044function shouldLoadRouteOnHydration(route, loaderData, errors) {
4045  // We dunno if we have a loader - gotta find out!
4046  if (route.lazy) {
4047    return true;
4048  }
4049  // No loader, nothing to initialize
4050  if (!route.loader) {
4051    return false;
4052  }
4053  let hasData = loaderData != null && loaderData[route.id] !== undefined;
4054  let hasError = errors != null && errors[route.id] !== undefined;
4055  // Don't run if we error'd during SSR
4056  if (!hasData && hasError) {
4057    return false;
4058  }
4059  // Explicitly opting-in to running on hydration
4060  if (typeof route.loader === "function" && route.loader.hydrate === true) {
4061    return true;
4062  }
4063  // Otherwise, run if we're not yet initialized with anything
4064  return !hasData && !hasError;
4065}
4066function isNewLoader(currentLoaderData, currentMatch, match) {
4067  let isNew =
4068  // [a] -> [a, b]
4069  !currentMatch ||
4070  // [a, b] -> [a, c]
4071  match.route.id !== currentMatch.route.id;
4072  // Handle the case that we don't have data for a re-used route, potentially
4073  // from a prior error or from a cancelled pending deferred
4074  let isMissingData = currentLoaderData[match.route.id] === undefined;
4075  // Always load if this is a net-new route or we don't yet have data
4076  return isNew || isMissingData;
4077}
4078function isNewRouteInstance(currentMatch, match) {
4079  let currentPath = currentMatch.route.path;
4080  return (
4081    // param change for this match, /users/123 -> /users/456
4082    currentMatch.pathname !== match.pathname ||
4083    // splat param changed, which is not present in match.path
4084    // e.g. /files/images/avatar.jpg -> files/finances.xls
4085    currentPath != null && currentPath.endsWith("*") && currentMatch.params["*"] !== match.params["*"]
4086  );
4087}
4088function shouldRevalidateLoader(loaderMatch, arg) {
4089  if (loaderMatch.route.shouldRevalidate) {
4090    let routeChoice = loaderMatch.route.shouldRevalidate(arg);
4091    if (typeof routeChoice === "boolean") {
4092      return routeChoice;
4093    }
4094  }
4095  return arg.defaultShouldRevalidate;
4096}
4097function patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties) {
4098  var _childrenToPatch;
4099  let childrenToPatch;
4100  if (routeId) {
4101    let route = manifest[routeId];
4102    invariant(route, "No route found to patch children into: routeId = " + routeId);
4103    if (!route.children) {
4104      route.children = [];
4105    }
4106    childrenToPatch = route.children;
4107  } else {
4108    childrenToPatch = routesToUse;
4109  }
4110  // Don't patch in routes we already know about so that `patch` is idempotent
4111  // to simplify user-land code. This is useful because we re-call the
4112  // `patchRoutesOnNavigation` function for matched routes with params.
4113  let uniqueChildren = children.filter(newRoute => !childrenToPatch.some(existingRoute => isSameRoute(newRoute, existingRoute)));
4114  let newRoutes = convertRoutesToDataRoutes(uniqueChildren, mapRouteProperties, [routeId || "_", "patch", String(((_childrenToPatch = childrenToPatch) == null ? void 0 : _childrenToPatch.length) || "0")], manifest);
4115  childrenToPatch.push(...newRoutes);
4116}
4117function isSameRoute(newRoute, existingRoute) {
4118  // Most optimal check is by id
4119  if ("id" in newRoute && "id" in existingRoute && newRoute.id === existingRoute.id) {
4120    return true;
4121  }
4122  // Second is by pathing differences
4123  if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {
4124    return false;
4125  }
4126  // Pathless layout routes are trickier since we need to check children.
4127  // If they have no children then they're the same as far as we can tell
4128  if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {
4129    return true;
4130  }
4131  // Otherwise, we look to see if every child in the new route is already
4132  // represented in the existing route's children
4133  return newRoute.children.every((aChild, i) => {
4134    var _existingRoute$childr;
4135    return (_existingRoute$childr = existingRoute.children) == null ? void 0 : _existingRoute$childr.some(bChild => isSameRoute(aChild, bChild));
4136  });
4137}
4138/**
4139 * Execute route.lazy() methods to lazily load route modules (loader, action,
4140 * shouldRevalidate) and update the routeManifest in place which shares objects
4141 * with dataRoutes so those get updated as well.
4142 */
4143async function loadLazyRouteModule(route, mapRouteProperties, manifest) {
4144  if (!route.lazy) {
4145    return;
4146  }
4147  let lazyRoute = await route.lazy();
4148  // If the lazy route function was executed and removed by another parallel
4149  // call then we can return - first lazy() to finish wins because the return
4150  // value of lazy is expected to be static
4151  if (!route.lazy) {
4152    return;
4153  }
4154  let routeToUpdate = manifest[route.id];
4155  invariant(routeToUpdate, "No route found in manifest");
4156  // Update the route in place.  This should be safe because there's no way
4157  // we could yet be sitting on this route as we can't get there without
4158  // resolving lazy() first.
4159  //
4160  // This is different than the HMR "update" use-case where we may actively be
4161  // on the route being updated.  The main concern boils down to "does this
4162  // mutation affect any ongoing navigations or any current state.matches
4163  // values?".  If not, it should be safe to update in place.
4164  let routeUpdates = {};
4165  for (let lazyRouteProperty in lazyRoute) {
4166    let staticRouteValue = routeToUpdate[lazyRouteProperty];
4167    let isPropertyStaticallyDefined = staticRouteValue !== undefined &&
4168    // This property isn't static since it should always be updated based
4169    // on the route updates
4170    lazyRouteProperty !== "hasErrorBoundary";
4171    warning(!isPropertyStaticallyDefined, "Route \"" + routeToUpdate.id + "\" has a static property \"" + lazyRouteProperty + "\" " + "defined but its lazy function is also returning a value for this property. " + ("The lazy route property \"" + lazyRouteProperty + "\" will be ignored."));
4172    if (!isPropertyStaticallyDefined && !immutableRouteKeys.has(lazyRouteProperty)) {
4173      routeUpdates[lazyRouteProperty] = lazyRoute[lazyRouteProperty];
4174    }
4175  }
4176  // Mutate the route with the provided updates.  Do this first so we pass
4177  // the updated version to mapRouteProperties
4178  Object.assign(routeToUpdate, routeUpdates);
4179  // Mutate the `hasErrorBoundary` property on the route based on the route
4180  // updates and remove the `lazy` function so we don't resolve the lazy
4181  // route again.
4182  Object.assign(routeToUpdate, _extends({}, mapRouteProperties(routeToUpdate), {
4183    lazy: undefined
4184  }));
4185}
4186// Default implementation of `dataStrategy` which fetches all loaders in parallel
4187async function defaultDataStrategy(_ref4) {
4188  let {
4189    matches
4190  } = _ref4;
4191  let matchesToLoad = matches.filter(m => m.shouldLoad);
4192  let results = await Promise.all(matchesToLoad.map(m => m.resolve()));
4193  return results.reduce((acc, result, i) => Object.assign(acc, {
4194    [matchesToLoad[i].route.id]: result
4195  }), {});
4196}
4197async function callDataStrategyImpl(dataStrategyImpl, type, state, request, matchesToLoad, matches, fetcherKey, manifest, mapRouteProperties, requestContext) {
4198  let loadRouteDefinitionsPromises = matches.map(m => m.route.lazy ? loadLazyRouteModule(m.route, mapRouteProperties, manifest) : undefined);
4199  let dsMatches = matches.map((match, i) => {
4200    let loadRoutePromise = loadRouteDefinitionsPromises[i];
4201    let shouldLoad = matchesToLoad.some(m => m.route.id === match.route.id);
4202    // `resolve` encapsulates route.lazy(), executing the loader/action,
4203    // and mapping return values/thrown errors to a `DataStrategyResult`.  Users
4204    // can pass a callback to take fine-grained control over the execution
4205    // of the loader/action
4206    let resolve = async handlerOverride => {
4207      if (handlerOverride && request.method === "GET" && (match.route.lazy || match.route.loader)) {
4208        shouldLoad = true;
4209      }
4210      return shouldLoad ? callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, requestContext) : Promise.resolve({
4211        type: ResultType.data,
4212        result: undefined
4213      });
4214    };
4215    return _extends({}, match, {
4216      shouldLoad,
4217      resolve
4218    });
4219  });
4220  // Send all matches here to allow for a middleware-type implementation.
4221  // handler will be a no-op for unneeded routes and we filter those results
4222  // back out below.
4223  let results = await dataStrategyImpl({
4224    matches: dsMatches,
4225    request,
4226    params: matches[0].params,
4227    fetcherKey,
4228    context: requestContext
4229  });
4230  // Wait for all routes to load here but 'swallow the error since we want
4231  // it to bubble up from the `await loadRoutePromise` in `callLoaderOrAction` -
4232  // called from `match.resolve()`
4233  try {
4234    await Promise.all(loadRouteDefinitionsPromises);
4235  } catch (e) {
4236    // No-op
4237  }
4238  return results;
4239}
4240// Default logic for calling a loader/action is the user has no specified a dataStrategy
4241async function callLoaderOrAction(type, request, match, loadRoutePromise, handlerOverride, staticContext) {
4242  let result;
4243  let onReject;
4244  let runHandler = handler => {
4245    // Setup a promise we can race against so that abort signals short circuit
4246    let reject;
4247    // This will never resolve so safe to type it as Promise<DataStrategyResult> to
4248    // satisfy the function return value
4249    let abortPromise = new Promise((_, r) => reject = r);
4250    onReject = () => reject();
4251    request.signal.addEventListener("abort", onReject);
4252    let actualHandler = ctx => {
4253      if (typeof handler !== "function") {
4254        return Promise.reject(new Error("You cannot call the handler for a route which defines a boolean " + ("\"" + type + "\" [routeId: " + match.route.id + "]")));
4255      }
4256      return handler({
4257        request,
4258        params: match.params,
4259        context: staticContext
4260      }, ...(ctx !== undefined ? [ctx] : []));
4261    };
4262    let handlerPromise = (async () => {
4263      try {
4264        let val = await (handlerOverride ? handlerOverride(ctx => actualHandler(ctx)) : actualHandler());
4265        return {
4266          type: "data",
4267          result: val
4268        };
4269      } catch (e) {
4270        return {
4271          type: "error",
4272          result: e
4273        };
4274      }
4275    })();
4276    return Promise.race([handlerPromise, abortPromise]);
4277  };
4278  try {
4279    let handler = match.route[type];
4280    // If we have a route.lazy promise, await that first
4281    if (loadRoutePromise) {
4282      if (handler) {
4283        // Run statically defined handler in parallel with lazy()
4284        let handlerError;
4285        let [value] = await Promise.all([
4286        // If the handler throws, don't let it immediately bubble out,
4287        // since we need to let the lazy() execution finish so we know if this
4288        // route has a boundary that can handle the error
4289        runHandler(handler).catch(e => {
4290          handlerError = e;
4291        }), loadRoutePromise]);
4292        if (handlerError !== undefined) {
4293          throw handlerError;
4294        }
4295        result = value;
4296      } else {
4297        // Load lazy route module, then run any returned handler
4298        await loadRoutePromise;
4299        handler = match.route[type];
4300        if (handler) {
4301          // Handler still runs even if we got interrupted to maintain consistency
4302          // with un-abortable behavior of handler execution on non-lazy or
4303          // previously-lazy-loaded routes
4304          result = await runHandler(handler);
4305        } else if (type === "action") {
4306          let url = new URL(request.url);
4307          let pathname = url.pathname + url.search;
4308          throw getInternalRouterError(405, {
4309            method: request.method,
4310            pathname,
4311            routeId: match.route.id
4312          });
4313        } else {
4314          // lazy() route has no loader to run.  Short circuit here so we don't
4315          // hit the invariant below that errors on returning undefined.
4316          return {
4317            type: ResultType.data,
4318            result: undefined
4319          };
4320        }
4321      }
4322    } else if (!handler) {
4323      let url = new URL(request.url);
4324      let pathname = url.pathname + url.search;
4325      throw getInternalRouterError(404, {
4326        pathname
4327      });
4328    } else {
4329      result = await runHandler(handler);
4330    }
4331    invariant(result.result !== undefined, "You defined " + (type === "action" ? "an action" : "a loader") + " for route " + ("\"" + match.route.id + "\" but didn't return anything from your `" + type + "` ") + "function. Please return a value or `null`.");
4332  } catch (e) {
4333    // We should already be catching and converting normal handler executions to
4334    // DataStrategyResults and returning them, so anything that throws here is an
4335    // unexpected error we still need to wrap
4336    return {
4337      type: ResultType.error,
4338      result: e
4339    };
4340  } finally {
4341    if (onReject) {
4342      request.signal.removeEventListener("abort", onReject);
4343    }
4344  }
4345  return result;
4346}
4347async function convertDataStrategyResultToDataResult(dataStrategyResult) {
4348  let {
4349    result,
4350    type
4351  } = dataStrategyResult;
4352  if (isResponse(result)) {
4353    let data;
4354    try {
4355      let contentType = result.headers.get("Content-Type");
4356      // Check between word boundaries instead of startsWith() due to the last
4357      // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type
4358      if (contentType && /\bapplication\/json\b/.test(contentType)) {
4359        if (result.body == null) {
4360          data = null;
4361        } else {
4362          data = await result.json();
4363        }
4364      } else {
4365        data = await result.text();
4366      }
4367    } catch (e) {
4368      return {
4369        type: ResultType.error,
4370        error: e
4371      };
4372    }
4373    if (type === ResultType.error) {
4374      return {
4375        type: ResultType.error,
4376        error: new ErrorResponseImpl(result.status, result.statusText, data),
4377        statusCode: result.status,
4378        headers: result.headers
4379      };
4380    }
4381    return {
4382      type: ResultType.data,
4383      data,
4384      statusCode: result.status,
4385      headers: result.headers
4386    };
4387  }
4388  if (type === ResultType.error) {
4389    if (isDataWithResponseInit(result)) {
4390      var _result$init2;
4391      if (result.data instanceof Error) {
4392        var _result$init;
4393        return {
4394          type: ResultType.error,
4395          error: result.data,
4396          statusCode: (_result$init = result.init) == null ? void 0 : _result$init.status
4397        };
4398      }
4399      // Convert thrown data() to ErrorResponse instances
4400      result = new ErrorResponseImpl(((_result$init2 = result.init) == null ? void 0 : _result$init2.status) || 500, undefined, result.data);
4401    }
4402    return {
4403      type: ResultType.error,
4404      error: result,
4405      statusCode: isRouteErrorResponse(result) ? result.status : undefined
4406    };
4407  }
4408  if (isDeferredData(result)) {
4409    var _result$init3, _result$init4;
4410    return {
4411      type: ResultType.deferred,
4412      deferredData: result,
4413      statusCode: (_result$init3 = result.init) == null ? void 0 : _result$init3.status,
4414      headers: ((_result$init4 = result.init) == null ? void 0 : _result$init4.headers) && new Headers(result.init.headers)
4415    };
4416  }
4417  if (isDataWithResponseInit(result)) {
4418    var _result$init5, _result$init6;
4419    return {
4420      type: ResultType.data,
4421      data: result.data,
4422      statusCode: (_result$init5 = result.init) == null ? void 0 : _result$init5.status,
4423      headers: (_result$init6 = result.init) != null && _result$init6.headers ? new Headers(result.init.headers) : undefined
4424    };
4425  }
4426  return {
4427    type: ResultType.data,
4428    data: result
4429  };
4430}
4431// Support relative routing in internal redirects
4432function normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename, v7_relativeSplatPath) {
4433  let location = response.headers.get("Location");
4434  invariant(location, "Redirects returned/thrown from loaders/actions must have a Location header");
4435  if (!ABSOLUTE_URL_REGEX.test(location)) {
4436    let trimmedMatches = matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1);
4437    location = normalizeTo(new URL(request.url), trimmedMatches, basename, true, location, v7_relativeSplatPath);
4438    response.headers.set("Location", location);
4439  }
4440  return response;
4441}
4442function normalizeRedirectLocation(location, currentUrl, basename) {
4443  if (ABSOLUTE_URL_REGEX.test(location)) {
4444    // Strip off the protocol+origin for same-origin + same-basename absolute redirects
4445    let normalizedLocation = location;
4446    let url = normalizedLocation.startsWith("//") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);
4447    let isSameBasename = stripBasename(url.pathname, basename) != null;
4448    if (url.origin === currentUrl.origin && isSameBasename) {
4449      return url.pathname + url.search + url.hash;
4450    }
4451  }
4452  return location;
4453}
4454// Utility method for creating the Request instances for loaders/actions during
4455// client-side navigations and fetches.  During SSR we will always have a
4456// Request instance from the static handler (query/queryRoute)
4457function createClientSideRequest(history, location, signal, submission) {
4458  let url = history.createURL(stripHashFromPath(location)).toString();
4459  let init = {
4460    signal
4461  };
4462  if (submission && isMutationMethod(submission.formMethod)) {
4463    let {
4464      formMethod,
4465      formEncType
4466    } = submission;
4467    // Didn't think we needed this but it turns out unlike other methods, patch
4468    // won't be properly normalized to uppercase and results in a 405 error.
4469    // See: https://fetch.spec.whatwg.org/#concept-method
4470    init.method = formMethod.toUpperCase();
4471    if (formEncType === "application/json") {
4472      init.headers = new Headers({
4473        "Content-Type": formEncType
4474      });
4475      init.body = JSON.stringify(submission.json);
4476    } else if (formEncType === "text/plain") {
4477      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
4478      init.body = submission.text;
4479    } else if (formEncType === "application/x-www-form-urlencoded" && submission.formData) {
4480      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
4481      init.body = convertFormDataToSearchParams(submission.formData);
4482    } else {
4483      // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)
4484      init.body = submission.formData;
4485    }
4486  }
4487  return new Request(url, init);
4488}
4489function convertFormDataToSearchParams(formData) {
4490  let searchParams = new URLSearchParams();
4491  for (let [key, value] of formData.entries()) {
4492    // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs
4493    searchParams.append(key, typeof value === "string" ? value : value.name);
4494  }
4495  return searchParams;
4496}
4497function convertSearchParamsToFormData(searchParams) {
4498  let formData = new FormData();
4499  for (let [key, value] of searchParams.entries()) {
4500    formData.append(key, value);
4501  }
4502  return formData;
4503}
4504function processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, skipLoaderErrorBubbling) {
4505  // Fill in loaderData/errors from our loaders
4506  let loaderData = {};
4507  let errors = null;
4508  let statusCode;
4509  let foundError = false;
4510  let loaderHeaders = {};
4511  let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : undefined;
4512  // Process loader results into state.loaderData/state.errors
4513  matches.forEach(match => {
4514    if (!(match.route.id in results)) {
4515      return;
4516    }
4517    let id = match.route.id;
4518    let result = results[id];
4519    invariant(!isRedirectResult(result), "Cannot handle redirect results in processLoaderData");
4520    if (isErrorResult(result)) {
4521      let error = result.error;
4522      // If we have a pending action error, we report it at the highest-route
4523      // that throws a loader error, and then clear it out to indicate that
4524      // it was consumed
4525      if (pendingError !== undefined) {
4526        error = pendingError;
4527        pendingError = undefined;
4528      }
4529      errors = errors || {};
4530      if (skipLoaderErrorBubbling) {
4531        errors[id] = error;
4532      } else {
4533        // Look upwards from the matched route for the closest ancestor error
4534        // boundary, defaulting to the root match.  Prefer higher error values
4535        // if lower errors bubble to the same boundary
4536        let boundaryMatch = findNearestBoundary(matches, id);
4537        if (errors[boundaryMatch.route.id] == null) {
4538          errors[boundaryMatch.route.id] = error;
4539        }
4540      }
4541      // Clear our any prior loaderData for the throwing route
4542      loaderData[id] = undefined;
4543      // Once we find our first (highest) error, we set the status code and
4544      // prevent deeper status codes from overriding
4545      if (!foundError) {
4546        foundError = true;
4547        statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;
4548      }
4549      if (result.headers) {
4550        loaderHeaders[id] = result.headers;
4551      }
4552    } else {
4553      if (isDeferredResult(result)) {
4554        activeDeferreds.set(id, result.deferredData);
4555        loaderData[id] = result.deferredData.data;
4556        // Error status codes always override success status codes, but if all
4557        // loaders are successful we take the deepest status code.
4558        if (result.statusCode != null && result.statusCode !== 200 && !foundError) {
4559          statusCode = result.statusCode;
4560        }
4561        if (result.headers) {
4562          loaderHeaders[id] = result.headers;
4563        }
4564      } else {
4565        loaderData[id] = result.data;
4566        // Error status codes always override success status codes, but if all
4567        // loaders are successful we take the deepest status code.
4568        if (result.statusCode && result.statusCode !== 200 && !foundError) {
4569          statusCode = result.statusCode;
4570        }
4571        if (result.headers) {
4572          loaderHeaders[id] = result.headers;
4573        }
4574      }
4575    }
4576  });
4577  // If we didn't consume the pending action error (i.e., all loaders
4578  // resolved), then consume it here.  Also clear out any loaderData for the
4579  // throwing route
4580  if (pendingError !== undefined && pendingActionResult) {
4581    errors = {
4582      [pendingActionResult[0]]: pendingError
4583    };
4584    loaderData[pendingActionResult[0]] = undefined;
4585  }
4586  return {
4587    loaderData,
4588    errors,
4589    statusCode: statusCode || 200,
4590    loaderHeaders
4591  };
4592}
4593function processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults, activeDeferreds) {
4594  let {
4595    loaderData,
4596    errors
4597  } = processRouteLoaderData(matches, results, pendingActionResult, activeDeferreds, false // This method is only called client side so we always want to bubble
4598  );
4599  // Process results from our revalidating fetchers
4600  revalidatingFetchers.forEach(rf => {
4601    let {
4602      key,
4603      match,
4604      controller
4605    } = rf;
4606    let result = fetcherResults[key];
4607    invariant(result, "Did not find corresponding fetcher result");
4608    // Process fetcher non-redirect errors
4609    if (controller && controller.signal.aborted) {
4610      // Nothing to do for aborted fetchers
4611      return;
4612    } else if (isErrorResult(result)) {
4613      let boundaryMatch = findNearestBoundary(state.matches, match == null ? void 0 : match.route.id);
4614      if (!(errors && errors[boundaryMatch.route.id])) {
4615        errors = _extends({}, errors, {
4616          [boundaryMatch.route.id]: result.error
4617        });
4618      }
4619      state.fetchers.delete(key);
4620    } else if (isRedirectResult(result)) {
4621      // Should never get here, redirects should get processed above, but we
4622      // keep this to type narrow to a success result in the else
4623      invariant(false, "Unhandled fetcher revalidation redirect");
4624    } else if (isDeferredResult(result)) {
4625      // Should never get here, deferred data should be awaited for fetchers
4626      // in resolveDeferredResults
4627      invariant(false, "Unhandled fetcher deferred data");
4628    } else {
4629      let doneFetcher = getDoneFetcher(result.data);
4630      state.fetchers.set(key, doneFetcher);
4631    }
4632  });
4633  return {
4634    loaderData,
4635    errors
4636  };
4637}
4638function mergeLoaderData(loaderData, newLoaderData, matches, errors) {
4639  let mergedLoaderData = _extends({}, newLoaderData);
4640  for (let match of matches) {
4641    let id = match.route.id;
4642    if (newLoaderData.hasOwnProperty(id)) {
4643      if (newLoaderData[id] !== undefined) {
4644        mergedLoaderData[id] = newLoaderData[id];
4645      }
4646    } else if (loaderData[id] !== undefined && match.route.loader) {
4647      // Preserve existing keys not included in newLoaderData and where a loader
4648      // wasn't removed by HMR
4649      mergedLoaderData[id] = loaderData[id];
4650    }
4651    if (errors && errors.hasOwnProperty(id)) {
4652      // Don't keep any loader data below the boundary
4653      break;
4654    }
4655  }
4656  return mergedLoaderData;
4657}
4658function getActionDataForCommit(pendingActionResult) {
4659  if (!pendingActionResult) {
4660    return {};
4661  }
4662  return isErrorResult(pendingActionResult[1]) ? {
4663    // Clear out prior actionData on errors
4664    actionData: {}
4665  } : {
4666    actionData: {
4667      [pendingActionResult[0]]: pendingActionResult[1].data
4668    }
4669  };
4670}
4671// Find the nearest error boundary, looking upwards from the leaf route (or the
4672// route specified by routeId) for the closest ancestor error boundary,
4673// defaulting to the root match
4674function findNearestBoundary(matches, routeId) {
4675  let eligibleMatches = routeId ? matches.slice(0, matches.findIndex(m => m.route.id === routeId) + 1) : [...matches];
4676  return eligibleMatches.reverse().find(m => m.route.hasErrorBoundary === true) || matches[0];
4677}
4678function getShortCircuitMatches(routes) {
4679  // Prefer a root layout route if present, otherwise shim in a route object
4680  let route = routes.length === 1 ? routes[0] : routes.find(r => r.index || !r.path || r.path === "/") || {
4681    id: "__shim-error-route__"
4682  };
4683  return {
4684    matches: [{
4685      params: {},
4686      pathname: "",
4687      pathnameBase: "",
4688      route
4689    }],
4690    route
4691  };
4692}
4693function getInternalRouterError(status, _temp5) {
4694  let {
4695    pathname,
4696    routeId,
4697    method,
4698    type,
4699    message
4700  } = _temp5 === void 0 ? {} : _temp5;
4701  let statusText = "Unknown Server Error";
4702  let errorMessage = "Unknown @remix-run/router error";
4703  if (status === 400) {
4704    statusText = "Bad Request";
4705    if (method && pathname && routeId) {
4706      errorMessage = "You made a " + method + " request to \"" + pathname + "\" but " + ("did not provide a `loader` for route \"" + routeId + "\", ") + "so there is no way to handle the request.";
4707    } else if (type === "defer-action") {
4708      errorMessage = "defer() is not supported in actions";
4709    } else if (type === "invalid-body") {
4710      errorMessage = "Unable to encode submission body";
4711    }
4712  } else if (status === 403) {
4713    statusText = "Forbidden";
4714    errorMessage = "Route \"" + routeId + "\" does not match URL \"" + pathname + "\"";
4715  } else if (status === 404) {
4716    statusText = "Not Found";
4717    errorMessage = "No route matches URL \"" + pathname + "\"";
4718  } else if (status === 405) {
4719    statusText = "Method Not Allowed";
4720    if (method && pathname && routeId) {
4721      errorMessage = "You made a " + method.toUpperCase() + " request to \"" + pathname + "\" but " + ("did not provide an `action` for route \"" + routeId + "\", ") + "so there is no way to handle the request.";
4722    } else if (method) {
4723      errorMessage = "Invalid request method \"" + method.toUpperCase() + "\"";
4724    }
4725  }
4726  return new ErrorResponseImpl(status || 500, statusText, new Error(errorMessage), true);
4727}
4728// Find any returned redirect errors, starting from the lowest match
4729function findRedirect(results) {
4730  let entries = Object.entries(results);
4731  for (let i = entries.length - 1; i >= 0; i--) {
4732    let [key, result] = entries[i];
4733    if (isRedirectResult(result)) {
4734      return {
4735        key,
4736        result
4737      };
4738    }
4739  }
4740}
4741function stripHashFromPath(path) {
4742  let parsedPath = typeof path === "string" ? parsePath(path) : path;
4743  return createPath(_extends({}, parsedPath, {
4744    hash: ""
4745  }));
4746}
4747function isHashChangeOnly(a, b) {
4748  if (a.pathname !== b.pathname || a.search !== b.search) {
4749    return false;
4750  }
4751  if (a.hash === "") {
4752    // /page -> /page#hash
4753    return b.hash !== "";
4754  } else if (a.hash === b.hash) {
4755    // /page#hash -> /page#hash
4756    return true;
4757  } else if (b.hash !== "") {
4758    // /page#hash -> /page#other
4759    return true;
4760  }
4761  // If the hash is removed the browser will re-perform a request to the server
4762  // /page#hash -> /page
4763  return false;
4764}
4765function isDataStrategyResult(result) {
4766  return result != null && typeof result === "object" && "type" in result && "result" in result && (result.type === ResultType.data || result.type === ResultType.error);
4767}
4768function isRedirectDataStrategyResultResult(result) {
4769  return isResponse(result.result) && redirectStatusCodes.has(result.result.status);
4770}
4771function isDeferredResult(result) {
4772  return result.type === ResultType.deferred;
4773}
4774function isErrorResult(result) {
4775  return result.type === ResultType.error;
4776}
4777function isRedirectResult(result) {
4778  return (result && result.type) === ResultType.redirect;
4779}
4780function isDataWithResponseInit(value) {
4781  return typeof value === "object" && value != null && "type" in value && "data" in value && "init" in value && value.type === "DataWithResponseInit";
4782}
4783function isDeferredData(value) {
4784  let deferred = value;
4785  return deferred && typeof deferred === "object" && typeof deferred.data === "object" && typeof deferred.subscribe === "function" && typeof deferred.cancel === "function" && typeof deferred.resolveData === "function";
4786}
4787function isResponse(value) {
4788  return value != null && typeof value.status === "number" && typeof value.statusText === "string" && typeof value.headers === "object" && typeof value.body !== "undefined";
4789}
4790function isRedirectResponse(result) {
4791  if (!isResponse(result)) {
4792    return false;
4793  }
4794  let status = result.status;
4795  let location = result.headers.get("Location");
4796  return status >= 300 && status <= 399 && location != null;
4797}
4798function isValidMethod(method) {
4799  return validRequestMethods.has(method.toLowerCase());
4800}
4801function isMutationMethod(method) {
4802  return validMutationMethods.has(method.toLowerCase());
4803}
4804async function resolveNavigationDeferredResults(matches, results, signal, currentMatches, currentLoaderData) {
4805  let entries = Object.entries(results);
4806  for (let index = 0; index < entries.length; index++) {
4807    let [routeId, result] = entries[index];
4808    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);
4809    // If we don't have a match, then we can have a deferred result to do
4810    // anything with.  This is for revalidating fetchers where the route was
4811    // removed during HMR
4812    if (!match) {
4813      continue;
4814    }
4815    let currentMatch = currentMatches.find(m => m.route.id === match.route.id);
4816    let isRevalidatingLoader = currentMatch != null && !isNewRouteInstance(currentMatch, match) && (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;
4817    if (isDeferredResult(result) && isRevalidatingLoader) {
4818      // Note: we do not have to touch activeDeferreds here since we race them
4819      // against the signal in resolveDeferredData and they'll get aborted
4820      // there if needed
4821      await resolveDeferredData(result, signal, false).then(result => {
4822        if (result) {
4823          results[routeId] = result;
4824        }
4825      });
4826    }
4827  }
4828}
4829async function resolveFetcherDeferredResults(matches, results, revalidatingFetchers) {
4830  for (let index = 0; index < revalidatingFetchers.length; index++) {
4831    let {
4832      key,
4833      routeId,
4834      controller
4835    } = revalidatingFetchers[index];
4836    let result = results[key];
4837    let match = matches.find(m => (m == null ? void 0 : m.route.id) === routeId);
4838    // If we don't have a match, then we can have a deferred result to do
4839    // anything with.  This is for revalidating fetchers where the route was
4840    // removed during HMR
4841    if (!match) {
4842      continue;
4843    }
4844    if (isDeferredResult(result)) {
4845      // Note: we do not have to touch activeDeferreds here since we race them
4846      // against the signal in resolveDeferredData and they'll get aborted
4847      // there if needed
4848      invariant(controller, "Expected an AbortController for revalidating fetcher deferred result");
4849      await resolveDeferredData(result, controller.signal, true).then(result => {
4850        if (result) {
4851          results[key] = result;
4852        }
4853      });
4854    }
4855  }
4856}
4857async function resolveDeferredData(result, signal, unwrap) {
4858  if (unwrap === void 0) {
4859    unwrap = false;
4860  }
4861  let aborted = await result.deferredData.resolveData(signal);
4862  if (aborted) {
4863    return;
4864  }
4865  if (unwrap) {
4866    try {
4867      return {
4868        type: ResultType.data,
4869        data: result.deferredData.unwrappedData
4870      };
4871    } catch (e) {
4872      // Handle any TrackedPromise._error values encountered while unwrapping
4873      return {
4874        type: ResultType.error,
4875        error: e
4876      };
4877    }
4878  }
4879  return {
4880    type: ResultType.data,
4881    data: result.deferredData.data
4882  };
4883}
4884function hasNakedIndexQuery(search) {
4885  return new URLSearchParams(search).getAll("index").some(v => v === "");
4886}
4887function getTargetMatch(matches, location) {
4888  let search = typeof location === "string" ? parsePath(location).search : location.search;
4889  if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || "")) {
4890    // Return the leaf index route when index is present
4891    return matches[matches.length - 1];
4892  }
4893  // Otherwise grab the deepest "path contributing" match (ignoring index and
4894  // pathless layout routes)
4895  let pathMatches = getPathContributingMatches(matches);
4896  return pathMatches[pathMatches.length - 1];
4897}
4898function getSubmissionFromNavigation(navigation) {
4899  let {
4900    formMethod,
4901    formAction,
4902    formEncType,
4903    text,
4904    formData,
4905    json
4906  } = navigation;
4907  if (!formMethod || !formAction || !formEncType) {
4908    return;
4909  }
4910  if (text != null) {
4911    return {
4912      formMethod,
4913      formAction,
4914      formEncType,
4915      formData: undefined,
4916      json: undefined,
4917      text
4918    };
4919  } else if (formData != null) {
4920    return {
4921      formMethod,
4922      formAction,
4923      formEncType,
4924      formData,
4925      json: undefined,
4926      text: undefined
4927    };
4928  } else if (json !== undefined) {
4929    return {
4930      formMethod,
4931      formAction,
4932      formEncType,
4933      formData: undefined,
4934      json,
4935      text: undefined
4936    };
4937  }
4938}
4939function getLoadingNavigation(location, submission) {
4940  if (submission) {
4941    let navigation = {
4942      state: "loading",
4943      location,
4944      formMethod: submission.formMethod,
4945      formAction: submission.formAction,
4946      formEncType: submission.formEncType,
4947      formData: submission.formData,
4948      json: submission.json,
4949      text: submission.text
4950    };
4951    return navigation;
4952  } else {
4953    let navigation = {
4954      state: "loading",
4955      location,
4956      formMethod: undefined,
4957      formAction: undefined,
4958      formEncType: undefined,
4959      formData: undefined,
4960      json: undefined,
4961      text: undefined
4962    };
4963    return navigation;
4964  }
4965}
4966function getSubmittingNavigation(location, submission) {
4967  let navigation = {
4968    state: "submitting",
4969    location,
4970    formMethod: submission.formMethod,
4971    formAction: submission.formAction,
4972    formEncType: submission.formEncType,
4973    formData: submission.formData,
4974    json: submission.json,
4975    text: submission.text
4976  };
4977  return navigation;
4978}
4979function getLoadingFetcher(submission, data) {
4980  if (submission) {
4981    let fetcher = {
4982      state: "loading",
4983      formMethod: submission.formMethod,
4984      formAction: submission.formAction,
4985      formEncType: submission.formEncType,
4986      formData: submission.formData,
4987      json: submission.json,
4988      text: submission.text,
4989      data
4990    };
4991    return fetcher;
4992  } else {
4993    let fetcher = {
4994      state: "loading",
4995      formMethod: undefined,
4996      formAction: undefined,
4997      formEncType: undefined,
4998      formData: undefined,
4999      json: undefined,
5000      text: undefined,
5001      data
5002    };
5003    return fetcher;
5004  }
5005}
5006function getSubmittingFetcher(submission, existingFetcher) {
5007  let fetcher = {
5008    state: "submitting",
5009    formMethod: submission.formMethod,
5010    formAction: submission.formAction,
5011    formEncType: submission.formEncType,
5012    formData: submission.formData,
5013    json: submission.json,
5014    text: submission.text,
5015    data: existingFetcher ? existingFetcher.data : undefined
5016  };
5017  return fetcher;
5018}
5019function getDoneFetcher(data) {
5020  let fetcher = {
5021    state: "idle",
5022    formMethod: undefined,
5023    formAction: undefined,
5024    formEncType: undefined,
5025    formData: undefined,
5026    json: undefined,
5027    text: undefined,
5028    data
5029  };
5030  return fetcher;
5031}
5032function restoreAppliedTransitions(_window, transitions) {
5033  try {
5034    let sessionPositions = _window.sessionStorage.getItem(TRANSITIONS_STORAGE_KEY);
5035    if (sessionPositions) {
5036      let json = JSON.parse(sessionPositions);
5037      for (let [k, v] of Object.entries(json || {})) {
5038        if (v && Array.isArray(v)) {
5039          transitions.set(k, new Set(v || []));
5040        }
5041      }
5042    }
5043  } catch (e) {
5044    // no-op, use default empty object
5045  }
5046}
5047function persistAppliedTransitions(_window, transitions) {
5048  if (transitions.size > 0) {
5049    let json = {};
5050    for (let [k, v] of transitions) {
5051      json[k] = [...v];
5052    }
5053    try {
5054      _window.sessionStorage.setItem(TRANSITIONS_STORAGE_KEY, JSON.stringify(json));
5055    } catch (error) {
5056      warning(false, "Failed to save applied view transitions in sessionStorage (" + error + ").");
5057    }
5058  }
5059}
5060//#endregion
5061
5062
5063//# sourceMappingURL=router.js.map
5064
5065
5066/***/ }),
5067
vendor: 342 bytes, lines 5068-5077
5068/***/ "./node_modules/axios/index.js":
5069/*!*************************************!*\
5070  !*** ./node_modules/axios/index.js ***!
5071  \*************************************/
5072/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5073
5074module.exports = __webpack_require__(/*! ./lib/axios */ "./node_modules/axios/lib/axios.js");
5075
5076/***/ }),
5077
vendor: 7,873 bytes, lines 5078-5300
5078/***/ "./node_modules/axios/lib/adapters/xhr.js":
5079/*!************************************************!*\
5080  !*** ./node_modules/axios/lib/adapters/xhr.js ***!
5081  \************************************************/
5082/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5083
5084"use strict";
5085
5086
5087var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
5088var settle = __webpack_require__(/*! ./../core/settle */ "./node_modules/axios/lib/core/settle.js");
5089var cookies = __webpack_require__(/*! ./../helpers/cookies */ "./node_modules/axios/lib/helpers/cookies.js");
5090var buildURL = __webpack_require__(/*! ./../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
5091var buildFullPath = __webpack_require__(/*! ../core/buildFullPath */ "./node_modules/axios/lib/core/buildFullPath.js");
5092var parseHeaders = __webpack_require__(/*! ./../helpers/parseHeaders */ "./node_modules/axios/lib/helpers/parseHeaders.js");
5093var isURLSameOrigin = __webpack_require__(/*! ./../helpers/isURLSameOrigin */ "./node_modules/axios/lib/helpers/isURLSameOrigin.js");
5094var createError = __webpack_require__(/*! ../core/createError */ "./node_modules/axios/lib/core/createError.js");
5095var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js");
5096var Cancel = __webpack_require__(/*! ../cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
5097
5098module.exports = function xhrAdapter(config) {
5099  return new Promise(function dispatchXhrRequest(resolve, reject) {
5100    var requestData = config.data;
5101    var requestHeaders = config.headers;
5102    var responseType = config.responseType;
5103    var onCanceled;
5104    function done() {
5105      if (config.cancelToken) {
5106        config.cancelToken.unsubscribe(onCanceled);
5107      }
5108
5109      if (config.signal) {
5110        config.signal.removeEventListener('abort', onCanceled);
5111      }
5112    }
5113
5114    if (utils.isFormData(requestData)) {
5115      delete requestHeaders['Content-Type']; // Let the browser set it
5116    }
5117
5118    var request = new XMLHttpRequest();
5119
5120    // HTTP basic authentication
5121    if (config.auth) {
5122      var username = config.auth.username || '';
5123      var password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';
5124      requestHeaders.Authorization = 'Basic ' + btoa(username + ':' + password);
5125    }
5126
5127    var fullPath = buildFullPath(config.baseURL, config.url);
5128    request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);
5129
5130    // Set the request timeout in MS
5131    request.timeout = config.timeout;
5132
5133    function onloadend() {
5134      if (!request) {
5135        return;
5136      }
5137      // Prepare the response
5138      var responseHeaders = 'getAllResponseHeaders' in request ? parseHeaders(request.getAllResponseHeaders()) : null;
5139      var responseData = !responseType || responseType === 'text' ||  responseType === 'json' ?
5140        request.responseText : request.response;
5141      var response = {
5142        data: responseData,
5143        status: request.status,
5144        statusText: request.statusText,
5145        headers: responseHeaders,
5146        config: config,
5147        request: request
5148      };
5149
5150      settle(function _resolve(value) {
5151        resolve(value);
5152        done();
5153      }, function _reject(err) {
5154        reject(err);
5155        done();
5156      }, response);
5157
5158      // Clean up request
5159      request = null;
5160    }
5161
5162    if ('onloadend' in request) {
5163      // Use onloadend if available
5164      request.onloadend = onloadend;
5165    } else {
5166      // Listen for ready state to emulate onloadend
5167      request.onreadystatechange = function handleLoad() {
5168        if (!request || request.readyState !== 4) {
5169          return;
5170        }
5171
5172        // The request errored out and we didn't get a response, this will be
5173        // handled by onerror instead
5174        // With one exception: request that using file: protocol, most browsers
5175        // will return status as 0 even though it's a successful request
5176        if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {
5177          return;
5178        }
5179        // readystate handler is calling before onerror or ontimeout handlers,
5180        // so we should call onloadend on the next 'tick'
5181        setTimeout(onloadend);
5182      };
5183    }
5184
5185    // Handle browser request cancellation (as opposed to a manual cancellation)
5186    request.onabort = function handleAbort() {
5187      if (!request) {
5188        return;
5189      }
5190
5191      reject(createError('Request aborted', config, 'ECONNABORTED', request));
5192
5193      // Clean up request
5194      request = null;
5195    };
5196
5197    // Handle low level network errors
5198    request.onerror = function handleError() {
5199      // Real errors are hidden from us by the browser
5200      // onerror should only fire if it's a network error
5201      reject(createError('Network Error', config, null, request));
5202
5203      // Clean up request
5204      request = null;
5205    };
5206
5207    // Handle timeout
5208    request.ontimeout = function handleTimeout() {
5209      var timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';
5210      var transitional = config.transitional || defaults.transitional;
5211      if (config.timeoutErrorMessage) {
5212        timeoutErrorMessage = config.timeoutErrorMessage;
5213      }
5214      reject(createError(
5215        timeoutErrorMessage,
5216        config,
5217        transitional.clarifyTimeoutError ? 'ETIMEDOUT' : 'ECONNABORTED',
5218        request));
5219
5220      // Clean up request
5221      request = null;
5222    };
5223
5224    // Add xsrf header
5225    // This is only done if running in a standard browser environment.
5226    // Specifically not if we're in a web worker, or react-native.
5227    if (utils.isStandardBrowserEnv()) {
5228      // Add xsrf header
5229      var xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath)) && config.xsrfCookieName ?
5230        cookies.read(config.xsrfCookieName) :
5231        undefined;
5232
5233      if (xsrfValue) {
5234        requestHeaders[config.xsrfHeaderName] = xsrfValue;
5235      }
5236    }
5237
5238    // Add headers to the request
5239    if ('setRequestHeader' in request) {
5240      utils.forEach(requestHeaders, function setRequestHeader(val, key) {
5241        if (typeof requestData === 'undefined' && key.toLowerCase() === 'content-type') {
5242          // Remove Content-Type if data is undefined
5243          delete requestHeaders[key];
5244        } else {
5245          // Otherwise add header to the request
5246          request.setRequestHeader(key, val);
5247        }
5248      });
5249    }
5250
5251    // Add withCredentials to request if needed
5252    if (!utils.isUndefined(config.withCredentials)) {
5253      request.withCredentials = !!config.withCredentials;
5254    }
5255
5256    // Add responseType to request if needed
5257    if (responseType && responseType !== 'json') {
5258      request.responseType = config.responseType;
5259    }
5260
5261    // Handle progress if needed
5262    if (typeof config.onDownloadProgress === 'function') {
5263      request.addEventListener('progress', config.onDownloadProgress);
5264    }
5265
5266    // Not all browsers support upload events
5267    if (typeof config.onUploadProgress === 'function' && request.upload) {
5268      request.upload.addEventListener('progress', config.onUploadProgress);
5269    }
5270
5271    if (config.cancelToken || config.signal) {
5272      // Handle cancellation
5273      // eslint-disable-next-line func-names
5274      onCanceled = function(cancel) {
5275        if (!request) {
5276          return;
5277        }
5278        reject(!cancel || (cancel && cancel.type) ? new Cancel('canceled') : cancel);
5279        request.abort();
5280        request = null;
5281      };
5282
5283      config.cancelToken && config.cancelToken.subscribe(onCanceled);
5284      if (config.signal) {
5285        config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);
5286      }
5287    }
5288
5289    if (!requestData) {
5290      requestData = null;
5291    }
5292
5293    // Send the request
5294    request.send(requestData);
5295  });
5296};
5297
5298
5299/***/ }),
5300
vendor: 2,498 bytes, lines 5301-5368
5301/***/ "./node_modules/axios/lib/axios.js":
5302/*!*****************************************!*\
5303  !*** ./node_modules/axios/lib/axios.js ***!
5304  \*****************************************/
5305/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5306
5307"use strict";
5308
5309
5310var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
5311var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
5312var Axios = __webpack_require__(/*! ./core/Axios */ "./node_modules/axios/lib/core/Axios.js");
5313var mergeConfig = __webpack_require__(/*! ./core/mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
5314var defaults = __webpack_require__(/*! ./defaults */ "./node_modules/axios/lib/defaults.js");
5315
5316/**
5317 * Create an instance of Axios
5318 *
5319 * @param {Object} defaultConfig The default config for the instance
5320 * @return {Axios} A new instance of Axios
5321 */
5322function createInstance(defaultConfig) {
5323  var context = new Axios(defaultConfig);
5324  var instance = bind(Axios.prototype.request, context);
5325
5326  // Copy axios.prototype to instance
5327  utils.extend(instance, Axios.prototype, context);
5328
5329  // Copy context to instance
5330  utils.extend(instance, context);
5331
5332  // Factory for creating new instances
5333  instance.create = function create(instanceConfig) {
5334    return createInstance(mergeConfig(defaultConfig, instanceConfig));
5335  };
5336
5337  return instance;
5338}
5339
5340// Create the default instance to be exported
5341var axios = createInstance(defaults);
5342
5343// Expose Axios class to allow class inheritance
5344axios.Axios = Axios;
5345
5346// Expose Cancel & CancelToken
5347axios.Cancel = __webpack_require__(/*! ./cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
5348axios.CancelToken = __webpack_require__(/*! ./cancel/CancelToken */ "./node_modules/axios/lib/cancel/CancelToken.js");
5349axios.isCancel = __webpack_require__(/*! ./cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
5350axios.VERSION = (__webpack_require__(/*! ./env/data */ "./node_modules/axios/lib/env/data.js").version);
5351
5352// Expose all/spread
5353axios.all = function all(promises) {
5354  return Promise.all(promises);
5355};
5356axios.spread = __webpack_require__(/*! ./helpers/spread */ "./node_modules/axios/lib/helpers/spread.js");
5357
5358// Expose isAxiosError
5359axios.isAxiosError = __webpack_require__(/*! ./helpers/isAxiosError */ "./node_modules/axios/lib/helpers/isAxiosError.js");
5360
5361module.exports = axios;
5362
5363// Allow use of default import syntax in TypeScript
5364module.exports["default"] = axios;
5365
5366
5367/***/ }),
5368
vendor: 636 bytes, lines 5369-5398
5369/***/ "./node_modules/axios/lib/cancel/Cancel.js":
5370/*!*************************************************!*\
5371  !*** ./node_modules/axios/lib/cancel/Cancel.js ***!
5372  \*************************************************/
5373/***/ ((module) => {
5374
5375"use strict";
5376
5377
5378/**
5379 * A `Cancel` is an object that is thrown when an operation is canceled.
5380 *
5381 * @class
5382 * @param {string=} message The message.
5383 */
5384function Cancel(message) {
5385  this.message = message;
5386}
5387
5388Cancel.prototype.toString = function toString() {
5389  return 'Cancel' + (this.message ? ': ' + this.message : '');
5390};
5391
5392Cancel.prototype.__CANCEL__ = true;
5393
5394module.exports = Cancel;
5395
5396
5397/***/ }),
5398
vendor: 2,848 bytes, lines 5399-5528
5399/***/ "./node_modules/axios/lib/cancel/CancelToken.js":
5400/*!******************************************************!*\
5401  !*** ./node_modules/axios/lib/cancel/CancelToken.js ***!
5402  \******************************************************/
5403/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5404
5405"use strict";
5406
5407
5408var Cancel = __webpack_require__(/*! ./Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
5409
5410/**
5411 * A `CancelToken` is an object that can be used to request cancellation of an operation.
5412 *
5413 * @class
5414 * @param {Function} executor The executor function.
5415 */
5416function CancelToken(executor) {
5417  if (typeof executor !== 'function') {
5418    throw new TypeError('executor must be a function.');
5419  }
5420
5421  var resolvePromise;
5422
5423  this.promise = new Promise(function promiseExecutor(resolve) {
5424    resolvePromise = resolve;
5425  });
5426
5427  var token = this;
5428
5429  // eslint-disable-next-line func-names
5430  this.promise.then(function(cancel) {
5431    if (!token._listeners) return;
5432
5433    var i;
5434    var l = token._listeners.length;
5435
5436    for (i = 0; i < l; i++) {
5437      token._listeners[i](cancel);
5438    }
5439    token._listeners = null;
5440  });
5441
5442  // eslint-disable-next-line func-names
5443  this.promise.then = function(onfulfilled) {
5444    var _resolve;
5445    // eslint-disable-next-line func-names
5446    var promise = new Promise(function(resolve) {
5447      token.subscribe(resolve);
5448      _resolve = resolve;
5449    }).then(onfulfilled);
5450
5451    promise.cancel = function reject() {
5452      token.unsubscribe(_resolve);
5453    };
5454
5455    return promise;
5456  };
5457
5458  executor(function cancel(message) {
5459    if (token.reason) {
5460      // Cancellation has already been requested
5461      return;
5462    }
5463
5464    token.reason = new Cancel(message);
5465    resolvePromise(token.reason);
5466  });
5467}
5468
5469/**
5470 * Throws a `Cancel` if cancellation has been requested.
5471 */
5472CancelToken.prototype.throwIfRequested = function throwIfRequested() {
5473  if (this.reason) {
5474    throw this.reason;
5475  }
5476};
5477
5478/**
5479 * Subscribe to the cancel signal
5480 */
5481
5482CancelToken.prototype.subscribe = function subscribe(listener) {
5483  if (this.reason) {
5484    listener(this.reason);
5485    return;
5486  }
5487
5488  if (this._listeners) {
5489    this._listeners.push(listener);
5490  } else {
5491    this._listeners = [listener];
5492  }
5493};
5494
5495/**
5496 * Unsubscribe from the cancel signal
5497 */
5498
5499CancelToken.prototype.unsubscribe = function unsubscribe(listener) {
5500  if (!this._listeners) {
5501    return;
5502  }
5503  var index = this._listeners.indexOf(listener);
5504  if (index !== -1) {
5505    this._listeners.splice(index, 1);
5506  }
5507};
5508
5509/**
5510 * Returns an object that contains a new `CancelToken` and a function that, when called,
5511 * cancels the `CancelToken`.
5512 */
5513CancelToken.source = function source() {
5514  var cancel;
5515  var token = new CancelToken(function executor(c) {
5516    cancel = c;
5517  });
5518  return {
5519    token: token,
5520    cancel: cancel
5521  };
5522};
5523
5524module.exports = CancelToken;
5525
5526
5527/***/ }),
5528
vendor: 361 bytes, lines 5529-5544
5529/***/ "./node_modules/axios/lib/cancel/isCancel.js":
5530/*!***************************************************!*\
5531  !*** ./node_modules/axios/lib/cancel/isCancel.js ***!
5532  \***************************************************/
5533/***/ ((module) => {
5534
5535"use strict";
5536
5537
5538module.exports = function isCancel(value) {
5539  return !!(value && value.__CANCEL__);
5540};
5541
5542
5543/***/ }),
5544
vendor: 4,892 bytes, lines 5545-5703
5545/***/ "./node_modules/axios/lib/core/Axios.js":
5546/*!**********************************************!*\
5547  !*** ./node_modules/axios/lib/core/Axios.js ***!
5548  \**********************************************/
5549/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5550
5551"use strict";
5552
5553
5554var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
5555var buildURL = __webpack_require__(/*! ../helpers/buildURL */ "./node_modules/axios/lib/helpers/buildURL.js");
5556var InterceptorManager = __webpack_require__(/*! ./InterceptorManager */ "./node_modules/axios/lib/core/InterceptorManager.js");
5557var dispatchRequest = __webpack_require__(/*! ./dispatchRequest */ "./node_modules/axios/lib/core/dispatchRequest.js");
5558var mergeConfig = __webpack_require__(/*! ./mergeConfig */ "./node_modules/axios/lib/core/mergeConfig.js");
5559var validator = __webpack_require__(/*! ../helpers/validator */ "./node_modules/axios/lib/helpers/validator.js");
5560
5561var validators = validator.validators;
5562/**
5563 * Create a new instance of Axios
5564 *
5565 * @param {Object} instanceConfig The default config for the instance
5566 */
5567function Axios(instanceConfig) {
5568  this.defaults = instanceConfig;
5569  this.interceptors = {
5570    request: new InterceptorManager(),
5571    response: new InterceptorManager()
5572  };
5573}
5574
5575/**
5576 * Dispatch a request
5577 *
5578 * @param {Object} config The config specific for this request (merged with this.defaults)
5579 */
5580Axios.prototype.request = function request(config) {
5581  /*eslint no-param-reassign:0*/
5582  // Allow for axios('example/url'[, config]) a la fetch API
5583  if (typeof config === 'string') {
5584    config = arguments[1] || {};
5585    config.url = arguments[0];
5586  } else {
5587    config = config || {};
5588  }
5589
5590  config = mergeConfig(this.defaults, config);
5591
5592  // Set config.method
5593  if (config.method) {
5594    config.method = config.method.toLowerCase();
5595  } else if (this.defaults.method) {
5596    config.method = this.defaults.method.toLowerCase();
5597  } else {
5598    config.method = 'get';
5599  }
5600
5601  var transitional = config.transitional;
5602
5603  if (transitional !== undefined) {
5604    validator.assertOptions(transitional, {
5605      silentJSONParsing: validators.transitional(validators.boolean),
5606      forcedJSONParsing: validators.transitional(validators.boolean),
5607      clarifyTimeoutError: validators.transitional(validators.boolean)
5608    }, false);
5609  }
5610
5611  // filter out skipped interceptors
5612  var requestInterceptorChain = [];
5613  var synchronousRequestInterceptors = true;
5614  this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {
5615    if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {
5616      return;
5617    }
5618
5619    synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;
5620
5621    requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);
5622  });
5623
5624  var responseInterceptorChain = [];
5625  this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {
5626    responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);
5627  });
5628
5629  var promise;
5630
5631  if (!synchronousRequestInterceptors) {
5632    var chain = [dispatchRequest, undefined];
5633
5634    Array.prototype.unshift.apply(chain, requestInterceptorChain);
5635    chain = chain.concat(responseInterceptorChain);
5636
5637    promise = Promise.resolve(config);
5638    while (chain.length) {
5639      promise = promise.then(chain.shift(), chain.shift());
5640    }
5641
5642    return promise;
5643  }
5644
5645
5646  var newConfig = config;
5647  while (requestInterceptorChain.length) {
5648    var onFulfilled = requestInterceptorChain.shift();
5649    var onRejected = requestInterceptorChain.shift();
5650    try {
5651      newConfig = onFulfilled(newConfig);
5652    } catch (error) {
5653      onRejected(error);
5654      break;
5655    }
5656  }
5657
5658  try {
5659    promise = dispatchRequest(newConfig);
5660  } catch (error) {
5661    return Promise.reject(error);
5662  }
5663
5664  while (responseInterceptorChain.length) {
5665    promise = promise.then(responseInterceptorChain.shift(), responseInterceptorChain.shift());
5666  }
5667
5668  return promise;
5669};
5670
5671Axios.prototype.getUri = function getUri(config) {
5672  config = mergeConfig(this.defaults, config);
5673  return buildURL(config.url, config.params, config.paramsSerializer).replace(/^\?/, '');
5674};
5675
5676// Provide aliases for supported request methods
5677utils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {
5678  /*eslint func-names:0*/
5679  Axios.prototype[method] = function(url, config) {
5680    return this.request(mergeConfig(config || {}, {
5681      method: method,
5682      url: url,
5683      data: (config || {}).data
5684    }));
5685  };
5686});
5687
5688utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
5689  /*eslint func-names:0*/
5690  Axios.prototype[method] = function(url, data, config) {
5691    return this.request(mergeConfig(config || {}, {
5692      method: method,
5693      url: url,
5694      data: data
5695    }));
5696  };
5697});
5698
5699module.exports = Axios;
5700
5701
5702/***/ }),
5703
vendor: 1,754 bytes, lines 5704-5768
5704/***/ "./node_modules/axios/lib/core/InterceptorManager.js":
5705/*!***********************************************************!*\
5706  !*** ./node_modules/axios/lib/core/InterceptorManager.js ***!
5707  \***********************************************************/
5708/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5709
5710"use strict";
5711
5712
5713var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
5714
5715function InterceptorManager() {
5716  this.handlers = [];
5717}
5718
5719/**
5720 * Add a new interceptor to the stack
5721 *
5722 * @param {Function} fulfilled The function to handle `then` for a `Promise`
5723 * @param {Function} rejected The function to handle `reject` for a `Promise`
5724 *
5725 * @return {Number} An ID used to remove interceptor later
5726 */
5727InterceptorManager.prototype.use = function use(fulfilled, rejected, options) {
5728  this.handlers.push({
5729    fulfilled: fulfilled,
5730    rejected: rejected,
5731    synchronous: options ? options.synchronous : false,
5732    runWhen: options ? options.runWhen : null
5733  });
5734  return this.handlers.length - 1;
5735};
5736
5737/**
5738 * Remove an interceptor from the stack
5739 *
5740 * @param {Number} id The ID that was returned by `use`
5741 */
5742InterceptorManager.prototype.eject = function eject(id) {
5743  if (this.handlers[id]) {
5744    this.handlers[id] = null;
5745  }
5746};
5747
5748/**
5749 * Iterate over all the registered interceptors
5750 *
5751 * This method is particularly useful for skipping over any
5752 * interceptors that may have become `null` calling `eject`.
5753 *
5754 * @param {Function} fn The function to call for each interceptor
5755 */
5756InterceptorManager.prototype.forEach = function forEach(fn) {
5757  utils.forEach(this.handlers, function forEachHandler(h) {
5758    if (h !== null) {
5759      fn(h);
5760    }
5761  });
5762};
5763
5764module.exports = InterceptorManager;
5765
5766
5767/***/ }),
5768
vendor: 1,149 bytes, lines 5769-5799
5769/***/ "./node_modules/axios/lib/core/buildFullPath.js":
5770/*!******************************************************!*\
5771  !*** ./node_modules/axios/lib/core/buildFullPath.js ***!
5772  \******************************************************/
5773/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5774
5775"use strict";
5776
5777
5778var isAbsoluteURL = __webpack_require__(/*! ../helpers/isAbsoluteURL */ "./node_modules/axios/lib/helpers/isAbsoluteURL.js");
5779var combineURLs = __webpack_require__(/*! ../helpers/combineURLs */ "./node_modules/axios/lib/helpers/combineURLs.js");
5780
5781/**
5782 * Creates a new URL by combining the baseURL with the requestedURL,
5783 * only when the requestedURL is not already an absolute URL.
5784 * If the requestURL is absolute, this function returns the requestedURL untouched.
5785 *
5786 * @param {string} baseURL The base URL
5787 * @param {string} requestedURL Absolute or relative URL to combine
5788 * @returns {string} The combined full path
5789 */
5790module.exports = function buildFullPath(baseURL, requestedURL) {
5791  if (baseURL && !isAbsoluteURL(requestedURL)) {
5792    return combineURLs(baseURL, requestedURL);
5793  }
5794  return requestedURL;
5795};
5796
5797
5798/***/ }),
5799
vendor: 1,000 bytes, lines 5800-5828
5800/***/ "./node_modules/axios/lib/core/createError.js":
5801/*!****************************************************!*\
5802  !*** ./node_modules/axios/lib/core/createError.js ***!
5803  \****************************************************/
5804/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5805
5806"use strict";
5807
5808
5809var enhanceError = __webpack_require__(/*! ./enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
5810
5811/**
5812 * Create an Error with the specified message, config, error code, request and response.
5813 *
5814 * @param {string} message The error message.
5815 * @param {Object} config The config.
5816 * @param {string} [code] The error code (for example, 'ECONNABORTED').
5817 * @param {Object} [request] The request.
5818 * @param {Object} [response] The response.
5819 * @returns {Error} The created error.
5820 */
5821module.exports = function createError(message, config, code, request, response) {
5822  var error = new Error(message);
5823  return enhanceError(error, config, code, request, response);
5824};
5825
5826
5827/***/ }),
5828
vendor: 2,747 bytes, lines 5829-5926
5829/***/ "./node_modules/axios/lib/core/dispatchRequest.js":
5830/*!********************************************************!*\
5831  !*** ./node_modules/axios/lib/core/dispatchRequest.js ***!
5832  \********************************************************/
5833/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5834
5835"use strict";
5836
5837
5838var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
5839var transformData = __webpack_require__(/*! ./transformData */ "./node_modules/axios/lib/core/transformData.js");
5840var isCancel = __webpack_require__(/*! ../cancel/isCancel */ "./node_modules/axios/lib/cancel/isCancel.js");
5841var defaults = __webpack_require__(/*! ../defaults */ "./node_modules/axios/lib/defaults.js");
5842var Cancel = __webpack_require__(/*! ../cancel/Cancel */ "./node_modules/axios/lib/cancel/Cancel.js");
5843
5844/**
5845 * Throws a `Cancel` if cancellation has been requested.
5846 */
5847function throwIfCancellationRequested(config) {
5848  if (config.cancelToken) {
5849    config.cancelToken.throwIfRequested();
5850  }
5851
5852  if (config.signal && config.signal.aborted) {
5853    throw new Cancel('canceled');
5854  }
5855}
5856
5857/**
5858 * Dispatch a request to the server using the configured adapter.
5859 *
5860 * @param {object} config The config that is to be used for the request
5861 * @returns {Promise} The Promise to be fulfilled
5862 */
5863module.exports = function dispatchRequest(config) {
5864  throwIfCancellationRequested(config);
5865
5866  // Ensure headers exist
5867  config.headers = config.headers || {};
5868
5869  // Transform request data
5870  config.data = transformData.call(
5871    config,
5872    config.data,
5873    config.headers,
5874    config.transformRequest
5875  );
5876
5877  // Flatten headers
5878  config.headers = utils.merge(
5879    config.headers.common || {},
5880    config.headers[config.method] || {},
5881    config.headers
5882  );
5883
5884  utils.forEach(
5885    ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],
5886    function cleanHeaderConfig(method) {
5887      delete config.headers[method];
5888    }
5889  );
5890
5891  var adapter = config.adapter || defaults.adapter;
5892
5893  return adapter(config).then(function onAdapterResolution(response) {
5894    throwIfCancellationRequested(config);
5895
5896    // Transform response data
5897    response.data = transformData.call(
5898      config,
5899      response.data,
5900      response.headers,
5901      config.transformResponse
5902    );
5903
5904    return response;
5905  }, function onAdapterRejection(reason) {
5906    if (!isCancel(reason)) {
5907      throwIfCancellationRequested(config);
5908
5909      // Transform response data
5910      if (reason && reason.response) {
5911        reason.response.data = transformData.call(
5912          config,
5913          reason.response.data,
5914          reason.response.headers,
5915          config.transformResponse
5916        );
5917      }
5918    }
5919
5920    return Promise.reject(reason);
5921  });
5922};
5923
5924
5925/***/ }),
5926
vendor: 1,399 bytes, lines 5927-5980
5927/***/ "./node_modules/axios/lib/core/enhanceError.js":
5928/*!*****************************************************!*\
5929  !*** ./node_modules/axios/lib/core/enhanceError.js ***!
5930  \*****************************************************/
5931/***/ ((module) => {
5932
5933"use strict";
5934
5935
5936/**
5937 * Update an Error with the specified config, error code, and response.
5938 *
5939 * @param {Error} error The error to update.
5940 * @param {Object} config The config.
5941 * @param {string} [code] The error code (for example, 'ECONNABORTED').
5942 * @param {Object} [request] The request.
5943 * @param {Object} [response] The response.
5944 * @returns {Error} The error.
5945 */
5946module.exports = function enhanceError(error, config, code, request, response) {
5947  error.config = config;
5948  if (code) {
5949    error.code = code;
5950  }
5951
5952  error.request = request;
5953  error.response = response;
5954  error.isAxiosError = true;
5955
5956  error.toJSON = function toJSON() {
5957    return {
5958      // Standard
5959      message: this.message,
5960      name: this.name,
5961      // Microsoft
5962      description: this.description,
5963      number: this.number,
5964      // Mozilla
5965      fileName: this.fileName,
5966      lineNumber: this.lineNumber,
5967      columnNumber: this.columnNumber,
5968      stack: this.stack,
5969      // Axios
5970      config: this.config,
5971      code: this.code,
5972      status: this.response && this.response.status ? this.response.status : null
5973    };
5974  };
5975  return error;
5976};
5977
5978
5979/***/ }),
5980
vendor: 3,558 bytes, lines 5981-6090
5981/***/ "./node_modules/axios/lib/core/mergeConfig.js":
5982/*!****************************************************!*\
5983  !*** ./node_modules/axios/lib/core/mergeConfig.js ***!
5984  \****************************************************/
5985/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
5986
5987"use strict";
5988
5989
5990var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
5991
5992/**
5993 * Config-specific merge-function which creates a new config-object
5994 * by merging two configuration objects together.
5995 *
5996 * @param {Object} config1
5997 * @param {Object} config2
5998 * @returns {Object} New object resulting from merging config2 to config1
5999 */
6000module.exports = function mergeConfig(config1, config2) {
6001  // eslint-disable-next-line no-param-reassign
6002  config2 = config2 || {};
6003  var config = {};
6004
6005  function getMergedValue(target, source) {
6006    if (utils.isPlainObject(target) && utils.isPlainObject(source)) {
6007      return utils.merge(target, source);
6008    } else if (utils.isPlainObject(source)) {
6009      return utils.merge({}, source);
6010    } else if (utils.isArray(source)) {
6011      return source.slice();
6012    }
6013    return source;
6014  }
6015
6016  // eslint-disable-next-line consistent-return
6017  function mergeDeepProperties(prop) {
6018    if (!utils.isUndefined(config2[prop])) {
6019      return getMergedValue(config1[prop], config2[prop]);
6020    } else if (!utils.isUndefined(config1[prop])) {
6021      return getMergedValue(undefined, config1[prop]);
6022    }
6023  }
6024
6025  // eslint-disable-next-line consistent-return
6026  function valueFromConfig2(prop) {
6027    if (!utils.isUndefined(config2[prop])) {
6028      return getMergedValue(undefined, config2[prop]);
6029    }
6030  }
6031
6032  // eslint-disable-next-line consistent-return
6033  function defaultToConfig2(prop) {
6034    if (!utils.isUndefined(config2[prop])) {
6035      return getMergedValue(undefined, config2[prop]);
6036    } else if (!utils.isUndefined(config1[prop])) {
6037      return getMergedValue(undefined, config1[prop]);
6038    }
6039  }
6040
6041  // eslint-disable-next-line consistent-return
6042  function mergeDirectKeys(prop) {
6043    if (prop in config2) {
6044      return getMergedValue(config1[prop], config2[prop]);
6045    } else if (prop in config1) {
6046      return getMergedValue(undefined, config1[prop]);
6047    }
6048  }
6049
6050  var mergeMap = {
6051    'url': valueFromConfig2,
6052    'method': valueFromConfig2,
6053    'data': valueFromConfig2,
6054    'baseURL': defaultToConfig2,
6055    'transformRequest': defaultToConfig2,
6056    'transformResponse': defaultToConfig2,
6057    'paramsSerializer': defaultToConfig2,
6058    'timeout': defaultToConfig2,
6059    'timeoutMessage': defaultToConfig2,
6060    'withCredentials': defaultToConfig2,
6061    'adapter': defaultToConfig2,
6062    'responseType': defaultToConfig2,
6063    'xsrfCookieName': defaultToConfig2,
6064    'xsrfHeaderName': defaultToConfig2,
6065    'onUploadProgress': defaultToConfig2,
6066    'onDownloadProgress': defaultToConfig2,
6067    'decompress': defaultToConfig2,
6068    'maxContentLength': defaultToConfig2,
6069    'maxBodyLength': defaultToConfig2,
6070    'transport': defaultToConfig2,
6071    'httpAgent': defaultToConfig2,
6072    'httpsAgent': defaultToConfig2,
6073    'cancelToken': defaultToConfig2,
6074    'socketPath': defaultToConfig2,
6075    'responseEncoding': defaultToConfig2,
6076    'validateStatus': mergeDirectKeys
6077  };
6078
6079  utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {
6080    var merge = mergeMap[prop] || mergeDeepProperties;
6081    var configValue = merge(prop);
6082    (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
6083  });
6084
6085  return config;
6086};
6087
6088
6089/***/ }),
6090
vendor: 1,060 bytes, lines 6091-6126
6091/***/ "./node_modules/axios/lib/core/settle.js":
6092/*!***********************************************!*\
6093  !*** ./node_modules/axios/lib/core/settle.js ***!
6094  \***********************************************/
6095/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6096
6097"use strict";
6098
6099
6100var createError = __webpack_require__(/*! ./createError */ "./node_modules/axios/lib/core/createError.js");
6101
6102/**
6103 * Resolve or reject a Promise based on response status.
6104 *
6105 * @param {Function} resolve A function that resolves the promise.
6106 * @param {Function} reject A function that rejects the promise.
6107 * @param {object} response The response.
6108 */
6109module.exports = function settle(resolve, reject, response) {
6110  var validateStatus = response.config.validateStatus;
6111  if (!response.status || !validateStatus || validateStatus(response.status)) {
6112    resolve(response);
6113  } else {
6114    reject(createError(
6115      'Request failed with status code ' + response.status,
6116      response.config,
6117      null,
6118      response.request,
6119      response
6120    ));
6121  }
6122};
6123
6124
6125/***/ }),
6126
vendor: 1,066 bytes, lines 6127-6159
6127/***/ "./node_modules/axios/lib/core/transformData.js":
6128/*!******************************************************!*\
6129  !*** ./node_modules/axios/lib/core/transformData.js ***!
6130  \******************************************************/
6131/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6132
6133"use strict";
6134
6135
6136var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
6137var defaults = __webpack_require__(/*! ./../defaults */ "./node_modules/axios/lib/defaults.js");
6138
6139/**
6140 * Transform the data for a request or a response
6141 *
6142 * @param {Object|String} data The data to be transformed
6143 * @param {Array} headers The headers for the request or response
6144 * @param {Array|Function} fns A single function or Array of functions
6145 * @returns {*} The resulting transformed data
6146 */
6147module.exports = function transformData(data, headers, fns) {
6148  var context = this || defaults;
6149  /*eslint no-param-reassign:0*/
6150  utils.forEach(fns, function transform(fn) {
6151    data = fn.call(context, data, headers);
6152  });
6153
6154  return data;
6155};
6156
6157
6158/***/ }),
6159
vendor: 4,297 bytes, lines 6160-6305
6160/***/ "./node_modules/axios/lib/defaults.js":
6161/*!********************************************!*\
6162  !*** ./node_modules/axios/lib/defaults.js ***!
6163  \********************************************/
6164/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6165
6166"use strict";
6167/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js");
6168
6169
6170var utils = __webpack_require__(/*! ./utils */ "./node_modules/axios/lib/utils.js");
6171var normalizeHeaderName = __webpack_require__(/*! ./helpers/normalizeHeaderName */ "./node_modules/axios/lib/helpers/normalizeHeaderName.js");
6172var enhanceError = __webpack_require__(/*! ./core/enhanceError */ "./node_modules/axios/lib/core/enhanceError.js");
6173
6174var DEFAULT_CONTENT_TYPE = {
6175  'Content-Type': 'application/x-www-form-urlencoded'
6176};
6177
6178function setContentTypeIfUnset(headers, value) {
6179  if (!utils.isUndefined(headers) && utils.isUndefined(headers['Content-Type'])) {
6180    headers['Content-Type'] = value;
6181  }
6182}
6183
6184function getDefaultAdapter() {
6185  var adapter;
6186  if (typeof XMLHttpRequest !== 'undefined') {
6187    // For browsers use XHR adapter
6188    adapter = __webpack_require__(/*! ./adapters/xhr */ "./node_modules/axios/lib/adapters/xhr.js");
6189  } else if (typeof process !== 'undefined' && Object.prototype.toString.call(process) === '[object process]') {
6190    // For node use HTTP adapter
6191    adapter = __webpack_require__(/*! ./adapters/http */ "./node_modules/axios/lib/adapters/xhr.js");
6192  }
6193  return adapter;
6194}
6195
6196function stringifySafely(rawValue, parser, encoder) {
6197  if (utils.isString(rawValue)) {
6198    try {
6199      (parser || JSON.parse)(rawValue);
6200      return utils.trim(rawValue);
6201    } catch (e) {
6202      if (e.name !== 'SyntaxError') {
6203        throw e;
6204      }
6205    }
6206  }
6207
6208  return (encoder || JSON.stringify)(rawValue);
6209}
6210
6211var defaults = {
6212
6213  transitional: {
6214    silentJSONParsing: true,
6215    forcedJSONParsing: true,
6216    clarifyTimeoutError: false
6217  },
6218
6219  adapter: getDefaultAdapter(),
6220
6221  transformRequest: [function transformRequest(data, headers) {
6222    normalizeHeaderName(headers, 'Accept');
6223    normalizeHeaderName(headers, 'Content-Type');
6224
6225    if (utils.isFormData(data) ||
6226      utils.isArrayBuffer(data) ||
6227      utils.isBuffer(data) ||
6228      utils.isStream(data) ||
6229      utils.isFile(data) ||
6230      utils.isBlob(data)
6231    ) {
6232      return data;
6233    }
6234    if (utils.isArrayBufferView(data)) {
6235      return data.buffer;
6236    }
6237    if (utils.isURLSearchParams(data)) {
6238      setContentTypeIfUnset(headers, 'application/x-www-form-urlencoded;charset=utf-8');
6239      return data.toString();
6240    }
6241    if (utils.isObject(data) || (headers && headers['Content-Type'] === 'application/json')) {
6242      setContentTypeIfUnset(headers, 'application/json');
6243      return stringifySafely(data);
6244    }
6245    return data;
6246  }],
6247
6248  transformResponse: [function transformResponse(data) {
6249    var transitional = this.transitional || defaults.transitional;
6250    var silentJSONParsing = transitional && transitional.silentJSONParsing;
6251    var forcedJSONParsing = transitional && transitional.forcedJSONParsing;
6252    var strictJSONParsing = !silentJSONParsing && this.responseType === 'json';
6253
6254    if (strictJSONParsing || (forcedJSONParsing && utils.isString(data) && data.length)) {
6255      try {
6256        return JSON.parse(data);
6257      } catch (e) {
6258        if (strictJSONParsing) {
6259          if (e.name === 'SyntaxError') {
6260            throw enhanceError(e, this, 'E_JSON_PARSE');
6261          }
6262          throw e;
6263        }
6264      }
6265    }
6266
6267    return data;
6268  }],
6269
6270  /**
6271   * A timeout in milliseconds to abort a request. If set to 0 (default) a
6272   * timeout is not created.
6273   */
6274  timeout: 0,
6275
6276  xsrfCookieName: 'XSRF-TOKEN',
6277  xsrfHeaderName: 'X-XSRF-TOKEN',
6278
6279  maxContentLength: -1,
6280  maxBodyLength: -1,
6281
6282  validateStatus: function validateStatus(status) {
6283    return status >= 200 && status < 300;
6284  },
6285
6286  headers: {
6287    common: {
6288      'Accept': 'application/json, text/plain, */*'
6289    }
6290  }
6291};
6292
6293utils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {
6294  defaults.headers[method] = {};
6295});
6296
6297utils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {
6298  defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);
6299});
6300
6301module.exports = defaults;
6302
6303
6304/***/ }),
6305
vendor: 273 bytes, lines 6306-6317
6306/***/ "./node_modules/axios/lib/env/data.js":
6307/*!********************************************!*\
6308  !*** ./node_modules/axios/lib/env/data.js ***!
6309  \********************************************/
6310/***/ ((module) => {
6311
6312module.exports = {
6313  "version": "0.24.0"
6314};
6315
6316/***/ }),
6317
vendor: 503 bytes, lines 6318-6339
6318/***/ "./node_modules/axios/lib/helpers/bind.js":
6319/*!************************************************!*\
6320  !*** ./node_modules/axios/lib/helpers/bind.js ***!
6321  \************************************************/
6322/***/ ((module) => {
6323
6324"use strict";
6325
6326
6327module.exports = function bind(fn, thisArg) {
6328  return function wrap() {
6329    var args = new Array(arguments.length);
6330    for (var i = 0; i < args.length; i++) {
6331      args[i] = arguments[i];
6332    }
6333    return fn.apply(thisArg, args);
6334  };
6335};
6336
6337
6338/***/ }),
6339
vendor: 2,007 bytes, lines 6340-6420
6340/***/ "./node_modules/axios/lib/helpers/buildURL.js":
6341/*!****************************************************!*\
6342  !*** ./node_modules/axios/lib/helpers/buildURL.js ***!
6343  \****************************************************/
6344/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6345
6346"use strict";
6347
6348
6349var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
6350
6351function encode(val) {
6352  return encodeURIComponent(val).
6353    replace(/%3A/gi, ':').
6354    replace(/%24/g, '$').
6355    replace(/%2C/gi, ',').
6356    replace(/%20/g, '+').
6357    replace(/%5B/gi, '[').
6358    replace(/%5D/gi, ']');
6359}
6360
6361/**
6362 * Build a URL by appending params to the end
6363 *
6364 * @param {string} url The base of the url (e.g., http://www.google.com)
6365 * @param {object} [params] The params to be appended
6366 * @returns {string} The formatted url
6367 */
6368module.exports = function buildURL(url, params, paramsSerializer) {
6369  /*eslint no-param-reassign:0*/
6370  if (!params) {
6371    return url;
6372  }
6373
6374  var serializedParams;
6375  if (paramsSerializer) {
6376    serializedParams = paramsSerializer(params);
6377  } else if (utils.isURLSearchParams(params)) {
6378    serializedParams = params.toString();
6379  } else {
6380    var parts = [];
6381
6382    utils.forEach(params, function serialize(val, key) {
6383      if (val === null || typeof val === 'undefined') {
6384        return;
6385      }
6386
6387      if (utils.isArray(val)) {
6388        key = key + '[]';
6389      } else {
6390        val = [val];
6391      }
6392
6393      utils.forEach(val, function parseValue(v) {
6394        if (utils.isDate(v)) {
6395          v = v.toISOString();
6396        } else if (utils.isObject(v)) {
6397          v = JSON.stringify(v);
6398        }
6399        parts.push(encode(key) + '=' + encode(v));
6400      });
6401    });
6402
6403    serializedParams = parts.join('&');
6404  }
6405
6406  if (serializedParams) {
6407    var hashmarkIndex = url.indexOf('#');
6408    if (hashmarkIndex !== -1) {
6409      url = url.slice(0, hashmarkIndex);
6410    }
6411
6412    url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;
6413  }
6414
6415  return url;
6416};
6417
6418
6419/***/ }),
6420
vendor: 655 bytes, lines 6421-6445
6421/***/ "./node_modules/axios/lib/helpers/combineURLs.js":
6422/*!*******************************************************!*\
6423  !*** ./node_modules/axios/lib/helpers/combineURLs.js ***!
6424  \*******************************************************/
6425/***/ ((module) => {
6426
6427"use strict";
6428
6429
6430/**
6431 * Creates a new URL by combining the specified URLs
6432 *
6433 * @param {string} baseURL The base URL
6434 * @param {string} relativeURL The relative URL
6435 * @returns {string} The combined URL
6436 */
6437module.exports = function combineURLs(baseURL, relativeURL) {
6438  return relativeURL
6439    ? baseURL.replace(/\/+$/, '') + '/' + relativeURL.replace(/^\/+/, '')
6440    : baseURL;
6441};
6442
6443
6444/***/ }),
6445
vendor: 1,794 bytes, lines 6446-6509
6446/***/ "./node_modules/axios/lib/helpers/cookies.js":
6447/*!***************************************************!*\
6448  !*** ./node_modules/axios/lib/helpers/cookies.js ***!
6449  \***************************************************/
6450/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6451
6452"use strict";
6453
6454
6455var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
6456
6457module.exports = (
6458  utils.isStandardBrowserEnv() ?
6459
6460  // Standard browser envs support document.cookie
6461    (function standardBrowserEnv() {
6462      return {
6463        write: function write(name, value, expires, path, domain, secure) {
6464          var cookie = [];
6465          cookie.push(name + '=' + encodeURIComponent(value));
6466
6467          if (utils.isNumber(expires)) {
6468            cookie.push('expires=' + new Date(expires).toGMTString());
6469          }
6470
6471          if (utils.isString(path)) {
6472            cookie.push('path=' + path);
6473          }
6474
6475          if (utils.isString(domain)) {
6476            cookie.push('domain=' + domain);
6477          }
6478
6479          if (secure === true) {
6480            cookie.push('secure');
6481          }
6482
6483          document.cookie = cookie.join('; ');
6484        },
6485
6486        read: function read(name) {
6487          var match = document.cookie.match(new RegExp('(^|;\\s*)(' + name + ')=([^;]*)'));
6488          return (match ? decodeURIComponent(match[3]) : null);
6489        },
6490
6491        remove: function remove(name) {
6492          this.write(name, '', Date.now() - 86400000);
6493        }
6494      };
6495    })() :
6496
6497  // Non standard browser env (web workers, react-native) lack needed support.
6498    (function nonStandardBrowserEnv() {
6499      return {
6500        write: function write() {},
6501        read: function read() { return null; },
6502        remove: function remove() {}
6503      };
6504    })()
6505);
6506
6507
6508/***/ }),
6509
vendor: 846 bytes, lines 6510-6534
6510/***/ "./node_modules/axios/lib/helpers/isAbsoluteURL.js":
6511/*!*********************************************************!*\
6512  !*** ./node_modules/axios/lib/helpers/isAbsoluteURL.js ***!
6513  \*********************************************************/
6514/***/ ((module) => {
6515
6516"use strict";
6517
6518
6519/**
6520 * Determines whether the specified URL is absolute
6521 *
6522 * @param {string} url The URL to test
6523 * @returns {boolean} True if the specified URL is absolute, otherwise false
6524 */
6525module.exports = function isAbsoluteURL(url) {
6526  // A URL is considered absolute if it begins with "<scheme>://" or "//" (protocol-relative URL).
6527  // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed
6528  // by any combination of letters, digits, plus, period, or hyphen.
6529  return /^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(url);
6530};
6531
6532
6533/***/ }),
6534
vendor: 622 bytes, lines 6535-6556
6535/***/ "./node_modules/axios/lib/helpers/isAxiosError.js":
6536/*!********************************************************!*\
6537  !*** ./node_modules/axios/lib/helpers/isAxiosError.js ***!
6538  \********************************************************/
6539/***/ ((module) => {
6540
6541"use strict";
6542
6543
6544/**
6545 * Determines whether the payload is an error thrown by Axios
6546 *
6547 * @param {*} payload The value to test
6548 * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false
6549 */
6550module.exports = function isAxiosError(payload) {
6551  return (typeof payload === 'object') && (payload.isAxiosError === true);
6552};
6553
6554
6555/***/ }),
6556
vendor: 2,696 bytes, lines 6557-6635
6557/***/ "./node_modules/axios/lib/helpers/isURLSameOrigin.js":
6558/*!***********************************************************!*\
6559  !*** ./node_modules/axios/lib/helpers/isURLSameOrigin.js ***!
6560  \***********************************************************/
6561/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6562
6563"use strict";
6564
6565
6566var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
6567
6568module.exports = (
6569  utils.isStandardBrowserEnv() ?
6570
6571  // Standard browser envs have full support of the APIs needed to test
6572  // whether the request URL is of the same origin as current location.
6573    (function standardBrowserEnv() {
6574      var msie = /(msie|trident)/i.test(navigator.userAgent);
6575      var urlParsingNode = document.createElement('a');
6576      var originURL;
6577
6578      /**
6579    * Parse a URL to discover it's components
6580    *
6581    * @param {String} url The URL to be parsed
6582    * @returns {Object}
6583    */
6584      function resolveURL(url) {
6585        var href = url;
6586
6587        if (msie) {
6588        // IE needs attribute set twice to normalize properties
6589          urlParsingNode.setAttribute('href', href);
6590          href = urlParsingNode.href;
6591        }
6592
6593        urlParsingNode.setAttribute('href', href);
6594
6595        // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils
6596        return {
6597          href: urlParsingNode.href,
6598          protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',
6599          host: urlParsingNode.host,
6600          search: urlParsingNode.search ? urlParsingNode.search.replace(/^\?/, '') : '',
6601          hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',
6602          hostname: urlParsingNode.hostname,
6603          port: urlParsingNode.port,
6604          pathname: (urlParsingNode.pathname.charAt(0) === '/') ?
6605            urlParsingNode.pathname :
6606            '/' + urlParsingNode.pathname
6607        };
6608      }
6609
6610      originURL = resolveURL(window.location.href);
6611
6612      /**
6613    * Determine if a URL shares the same origin as the current location
6614    *
6615    * @param {String} requestURL The URL to test
6616    * @returns {boolean} True if URL shares the same origin, otherwise false
6617    */
6618      return function isURLSameOrigin(requestURL) {
6619        var parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;
6620        return (parsed.protocol === originURL.protocol &&
6621            parsed.host === originURL.host);
6622      };
6623    })() :
6624
6625  // Non standard browser envs (web workers, react-native) lack needed support.
6626    (function nonStandardBrowserEnv() {
6627      return function isURLSameOrigin() {
6628        return true;
6629      };
6630    })()
6631);
6632
6633
6634/***/ }),
6635
vendor: 764 bytes, lines 6636-6658
6636/***/ "./node_modules/axios/lib/helpers/normalizeHeaderName.js":
6637/*!***************************************************************!*\
6638  !*** ./node_modules/axios/lib/helpers/normalizeHeaderName.js ***!
6639  \***************************************************************/
6640/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6641
6642"use strict";
6643
6644
6645var utils = __webpack_require__(/*! ../utils */ "./node_modules/axios/lib/utils.js");
6646
6647module.exports = function normalizeHeaderName(headers, normalizedName) {
6648  utils.forEach(headers, function processHeader(value, name) {
6649    if (name !== normalizedName && name.toUpperCase() === normalizedName.toUpperCase()) {
6650      headers[normalizedName] = value;
6651      delete headers[name];
6652    }
6653  });
6654};
6655
6656
6657/***/ }),
6658
vendor: 1,772 bytes, lines 6659-6722
6659/***/ "./node_modules/axios/lib/helpers/parseHeaders.js":
6660/*!********************************************************!*\
6661  !*** ./node_modules/axios/lib/helpers/parseHeaders.js ***!
6662  \********************************************************/
6663/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6664
6665"use strict";
6666
6667
6668var utils = __webpack_require__(/*! ./../utils */ "./node_modules/axios/lib/utils.js");
6669
6670// Headers whose duplicates are ignored by node
6671// c.f. https://nodejs.org/api/http.html#http_message_headers
6672var ignoreDuplicateOf = [
6673  'age', 'authorization', 'content-length', 'content-type', 'etag',
6674  'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',
6675  'last-modified', 'location', 'max-forwards', 'proxy-authorization',
6676  'referer', 'retry-after', 'user-agent'
6677];
6678
6679/**
6680 * Parse headers into an object
6681 *
6682 * ```
6683 * Date: Wed, 27 Aug 2014 08:58:49 GMT
6684 * Content-Type: application/json
6685 * Connection: keep-alive
6686 * Transfer-Encoding: chunked
6687 * ```
6688 *
6689 * @param {String} headers Headers needing to be parsed
6690 * @returns {Object} Headers parsed into an object
6691 */
6692module.exports = function parseHeaders(headers) {
6693  var parsed = {};
6694  var key;
6695  var val;
6696  var i;
6697
6698  if (!headers) { return parsed; }
6699
6700  utils.forEach(headers.split('\n'), function parser(line) {
6701    i = line.indexOf(':');
6702    key = utils.trim(line.substr(0, i)).toLowerCase();
6703    val = utils.trim(line.substr(i + 1));
6704
6705    if (key) {
6706      if (parsed[key] && ignoreDuplicateOf.indexOf(key) >= 0) {
6707        return;
6708      }
6709      if (key === 'set-cookie') {
6710        parsed[key] = (parsed[key] ? parsed[key] : []).concat([val]);
6711      } else {
6712        parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;
6713      }
6714    }
6715  });
6716
6717  return parsed;
6718};
6719
6720
6721/***/ }),
6722
vendor: 819 bytes, lines 6723-6760
6723/***/ "./node_modules/axios/lib/helpers/spread.js":
6724/*!**************************************************!*\
6725  !*** ./node_modules/axios/lib/helpers/spread.js ***!
6726  \**************************************************/
6727/***/ ((module) => {
6728
6729"use strict";
6730
6731
6732/**
6733 * Syntactic sugar for invoking a function and expanding an array for arguments.
6734 *
6735 * Common use case would be to use `Function.prototype.apply`.
6736 *
6737 *  ```js
6738 *  function f(x, y, z) {}
6739 *  var args = [1, 2, 3];
6740 *  f.apply(null, args);
6741 *  ```
6742 *
6743 * With `spread` this example can be re-written.
6744 *
6745 *  ```js
6746 *  spread(function(x, y, z) {})([1, 2, 3]);
6747 *  ```
6748 *
6749 * @param {Function} callback
6750 * @returns {Function}
6751 */
6752module.exports = function spread(callback) {
6753  return function wrap(arr) {
6754    return callback.apply(null, arr);
6755  };
6756};
6757
6758
6759/***/ }),
6760
vendor: 2,719 bytes, lines 6761-6853
6761/***/ "./node_modules/axios/lib/helpers/validator.js":
6762/*!*****************************************************!*\
6763  !*** ./node_modules/axios/lib/helpers/validator.js ***!
6764  \*****************************************************/
6765/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6766
6767"use strict";
6768
6769
6770var VERSION = (__webpack_require__(/*! ../env/data */ "./node_modules/axios/lib/env/data.js").version);
6771
6772var validators = {};
6773
6774// eslint-disable-next-line func-names
6775['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach(function(type, i) {
6776  validators[type] = function validator(thing) {
6777    return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;
6778  };
6779});
6780
6781var deprecatedWarnings = {};
6782
6783/**
6784 * Transitional option validator
6785 * @param {function|boolean?} validator - set to false if the transitional option has been removed
6786 * @param {string?} version - deprecated version / removed since version
6787 * @param {string?} message - some message with additional info
6788 * @returns {function}
6789 */
6790validators.transitional = function transitional(validator, version, message) {
6791  function formatMessage(opt, desc) {
6792    return '[Axios v' + VERSION + '] Transitional option \'' + opt + '\'' + desc + (message ? '. ' + message : '');
6793  }
6794
6795  // eslint-disable-next-line func-names
6796  return function(value, opt, opts) {
6797    if (validator === false) {
6798      throw new Error(formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')));
6799    }
6800
6801    if (version && !deprecatedWarnings[opt]) {
6802      deprecatedWarnings[opt] = true;
6803      // eslint-disable-next-line no-console
6804      console.warn(
6805        formatMessage(
6806          opt,
6807          ' has been deprecated since v' + version + ' and will be removed in the near future'
6808        )
6809      );
6810    }
6811
6812    return validator ? validator(value, opt, opts) : true;
6813  };
6814};
6815
6816/**
6817 * Assert object's properties type
6818 * @param {object} options
6819 * @param {object} schema
6820 * @param {boolean?} allowUnknown
6821 */
6822
6823function assertOptions(options, schema, allowUnknown) {
6824  if (typeof options !== 'object') {
6825    throw new TypeError('options must be an object');
6826  }
6827  var keys = Object.keys(options);
6828  var i = keys.length;
6829  while (i-- > 0) {
6830    var opt = keys[i];
6831    var validator = schema[opt];
6832    if (validator) {
6833      var value = options[opt];
6834      var result = value === undefined || validator(value, opt, options);
6835      if (result !== true) {
6836        throw new TypeError('option ' + opt + ' must be ' + result);
6837      }
6838      continue;
6839    }
6840    if (allowUnknown !== true) {
6841      throw Error('Unknown option ' + opt);
6842    }
6843  }
6844}
6845
6846module.exports = {
6847  assertOptions: assertOptions,
6848  validators: validators
6849};
6850
6851
6852/***/ }),
6853
vendor: 9,257 bytes, lines 6854-7213
6854/***/ "./node_modules/axios/lib/utils.js":
6855/*!*****************************************!*\
6856  !*** ./node_modules/axios/lib/utils.js ***!
6857  \*****************************************/
6858/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
6859
6860"use strict";
6861
6862
6863var bind = __webpack_require__(/*! ./helpers/bind */ "./node_modules/axios/lib/helpers/bind.js");
6864
6865// utils is a library of generic helper functions non-specific to axios
6866
6867var toString = Object.prototype.toString;
6868
6869/**
6870 * Determine if a value is an Array
6871 *
6872 * @param {Object} val The value to test
6873 * @returns {boolean} True if value is an Array, otherwise false
6874 */
6875function isArray(val) {
6876  return toString.call(val) === '[object Array]';
6877}
6878
6879/**
6880 * Determine if a value is undefined
6881 *
6882 * @param {Object} val The value to test
6883 * @returns {boolean} True if the value is undefined, otherwise false
6884 */
6885function isUndefined(val) {
6886  return typeof val === 'undefined';
6887}
6888
6889/**
6890 * Determine if a value is a Buffer
6891 *
6892 * @param {Object} val The value to test
6893 * @returns {boolean} True if value is a Buffer, otherwise false
6894 */
6895function isBuffer(val) {
6896  return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)
6897    && typeof val.constructor.isBuffer === 'function' && val.constructor.isBuffer(val);
6898}
6899
6900/**
6901 * Determine if a value is an ArrayBuffer
6902 *
6903 * @param {Object} val The value to test
6904 * @returns {boolean} True if value is an ArrayBuffer, otherwise false
6905 */
6906function isArrayBuffer(val) {
6907  return toString.call(val) === '[object ArrayBuffer]';
6908}
6909
6910/**
6911 * Determine if a value is a FormData
6912 *
6913 * @param {Object} val The value to test
6914 * @returns {boolean} True if value is an FormData, otherwise false
6915 */
6916function isFormData(val) {
6917  return (typeof FormData !== 'undefined') && (val instanceof FormData);
6918}
6919
6920/**
6921 * Determine if a value is a view on an ArrayBuffer
6922 *
6923 * @param {Object} val The value to test
6924 * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false
6925 */
6926function isArrayBufferView(val) {
6927  var result;
6928  if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {
6929    result = ArrayBuffer.isView(val);
6930  } else {
6931    result = (val) && (val.buffer) && (val.buffer instanceof ArrayBuffer);
6932  }
6933  return result;
6934}
6935
6936/**
6937 * Determine if a value is a String
6938 *
6939 * @param {Object} val The value to test
6940 * @returns {boolean} True if value is a String, otherwise false
6941 */
6942function isString(val) {
6943  return typeof val === 'string';
6944}
6945
6946/**
6947 * Determine if a value is a Number
6948 *
6949 * @param {Object} val The value to test
6950 * @returns {boolean} True if value is a Number, otherwise false
6951 */
6952function isNumber(val) {
6953  return typeof val === 'number';
6954}
6955
6956/**
6957 * Determine if a value is an Object
6958 *
6959 * @param {Object} val The value to test
6960 * @returns {boolean} True if value is an Object, otherwise false
6961 */
6962function isObject(val) {
6963  return val !== null && typeof val === 'object';
6964}
6965
6966/**
6967 * Determine if a value is a plain Object
6968 *
6969 * @param {Object} val The value to test
6970 * @return {boolean} True if value is a plain Object, otherwise false
6971 */
6972function isPlainObject(val) {
6973  if (toString.call(val) !== '[object Object]') {
6974    return false;
6975  }
6976
6977  var prototype = Object.getPrototypeOf(val);
6978  return prototype === null || prototype === Object.prototype;
6979}
6980
6981/**
6982 * Determine if a value is a Date
6983 *
6984 * @param {Object} val The value to test
6985 * @returns {boolean} True if value is a Date, otherwise false
6986 */
6987function isDate(val) {
6988  return toString.call(val) === '[object Date]';
6989}
6990
6991/**
6992 * Determine if a value is a File
6993 *
6994 * @param {Object} val The value to test
6995 * @returns {boolean} True if value is a File, otherwise false
6996 */
6997function isFile(val) {
6998  return toString.call(val) === '[object File]';
6999}
7000
7001/**
7002 * Determine if a value is a Blob
7003 *
7004 * @param {Object} val The value to test
7005 * @returns {boolean} True if value is a Blob, otherwise false
7006 */
7007function isBlob(val) {
7008  return toString.call(val) === '[object Blob]';
7009}
7010
7011/**
7012 * Determine if a value is a Function
7013 *
7014 * @param {Object} val The value to test
7015 * @returns {boolean} True if value is a Function, otherwise false
7016 */
7017function isFunction(val) {
7018  return toString.call(val) === '[object Function]';
7019}
7020
7021/**
7022 * Determine if a value is a Stream
7023 *
7024 * @param {Object} val The value to test
7025 * @returns {boolean} True if value is a Stream, otherwise false
7026 */
7027function isStream(val) {
7028  return isObject(val) && isFunction(val.pipe);
7029}
7030
7031/**
7032 * Determine if a value is a URLSearchParams object
7033 *
7034 * @param {Object} val The value to test
7035 * @returns {boolean} True if value is a URLSearchParams object, otherwise false
7036 */
7037function isURLSearchParams(val) {
7038  return typeof URLSearchParams !== 'undefined' && val instanceof URLSearchParams;
7039}
7040
7041/**
7042 * Trim excess whitespace off the beginning and end of a string
7043 *
7044 * @param {String} str The String to trim
7045 * @returns {String} The String freed of excess whitespace
7046 */
7047function trim(str) {
7048  return str.trim ? str.trim() : str.replace(/^\s+|\s+$/g, '');
7049}
7050
7051/**
7052 * Determine if we're running in a standard browser environment
7053 *
7054 * This allows axios to run in a web worker, and react-native.
7055 * Both environments support XMLHttpRequest, but not fully standard globals.
7056 *
7057 * web workers:
7058 *  typeof window -> undefined
7059 *  typeof document -> undefined
7060 *
7061 * react-native:
7062 *  navigator.product -> 'ReactNative'
7063 * nativescript
7064 *  navigator.product -> 'NativeScript' or 'NS'
7065 */
7066function isStandardBrowserEnv() {
7067  if (typeof navigator !== 'undefined' && (navigator.product === 'ReactNative' ||
7068                                           navigator.product === 'NativeScript' ||
7069                                           navigator.product === 'NS')) {
7070    return false;
7071  }
7072  return (
7073    typeof window !== 'undefined' &&
7074    typeof document !== 'undefined'
7075  );
7076}
7077
7078/**
7079 * Iterate over an Array or an Object invoking a function for each item.
7080 *
7081 * If `obj` is an Array callback will be called passing
7082 * the value, index, and complete array for each item.
7083 *
7084 * If 'obj' is an Object callback will be called passing
7085 * the value, key, and complete object for each property.
7086 *
7087 * @param {Object|Array} obj The object to iterate
7088 * @param {Function} fn The callback to invoke for each item
7089 */
7090function forEach(obj, fn) {
7091  // Don't bother if no value provided
7092  if (obj === null || typeof obj === 'undefined') {
7093    return;
7094  }
7095
7096  // Force an array if not already something iterable
7097  if (typeof obj !== 'object') {
7098    /*eslint no-param-reassign:0*/
7099    obj = [obj];
7100  }
7101
7102  if (isArray(obj)) {
7103    // Iterate over array values
7104    for (var i = 0, l = obj.length; i < l; i++) {
7105      fn.call(null, obj[i], i, obj);
7106    }
7107  } else {
7108    // Iterate over object keys
7109    for (var key in obj) {
7110      if (Object.prototype.hasOwnProperty.call(obj, key)) {
7111        fn.call(null, obj[key], key, obj);
7112      }
7113    }
7114  }
7115}
7116
7117/**
7118 * Accepts varargs expecting each argument to be an object, then
7119 * immutably merges the properties of each object and returns result.
7120 *
7121 * When multiple objects contain the same key the later object in
7122 * the arguments list will take precedence.
7123 *
7124 * Example:
7125 *
7126 * ```js
7127 * var result = merge({foo: 123}, {foo: 456});
7128 * console.log(result.foo); // outputs 456
7129 * ```
7130 *
7131 * @param {Object} obj1 Object to merge
7132 * @returns {Object} Result of all merge properties
7133 */
7134function merge(/* obj1, obj2, obj3, ... */) {
7135  var result = {};
7136  function assignValue(val, key) {
7137    if (isPlainObject(result[key]) && isPlainObject(val)) {
7138      result[key] = merge(result[key], val);
7139    } else if (isPlainObject(val)) {
7140      result[key] = merge({}, val);
7141    } else if (isArray(val)) {
7142      result[key] = val.slice();
7143    } else {
7144      result[key] = val;
7145    }
7146  }
7147
7148  for (var i = 0, l = arguments.length; i < l; i++) {
7149    forEach(arguments[i], assignValue);
7150  }
7151  return result;
7152}
7153
7154/**
7155 * Extends object a by mutably adding to it the properties of object b.
7156 *
7157 * @param {Object} a The object to be extended
7158 * @param {Object} b The object to copy properties from
7159 * @param {Object} thisArg The object to bind function to
7160 * @return {Object} The resulting value of object a
7161 */
7162function extend(a, b, thisArg) {
7163  forEach(b, function assignValue(val, key) {
7164    if (thisArg && typeof val === 'function') {
7165      a[key] = bind(val, thisArg);
7166    } else {
7167      a[key] = val;
7168    }
7169  });
7170  return a;
7171}
7172
7173/**
7174 * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)
7175 *
7176 * @param {string} content with BOM
7177 * @return {string} content value without BOM
7178 */
7179function stripBOM(content) {
7180  if (content.charCodeAt(0) === 0xFEFF) {
7181    content = content.slice(1);
7182  }
7183  return content;
7184}
7185
7186module.exports = {
7187  isArray: isArray,
7188  isArrayBuffer: isArrayBuffer,
7189  isBuffer: isBuffer,
7190  isFormData: isFormData,
7191  isArrayBufferView: isArrayBufferView,
7192  isString: isString,
7193  isNumber: isNumber,
7194  isObject: isObject,
7195  isPlainObject: isPlainObject,
7196  isUndefined: isUndefined,
7197  isDate: isDate,
7198  isFile: isFile,
7199  isBlob: isBlob,
7200  isFunction: isFunction,
7201  isStream: isStream,
7202  isURLSearchParams: isURLSearchParams,
7203  isStandardBrowserEnv: isStandardBrowserEnv,
7204  forEach: forEach,
7205  merge: merge,
7206  extend: extend,
7207  trim: trim,
7208  stripBOM: stripBOM
7209};
7210
7211
7212/***/ }),
7213
7214/***/ "./resources/js/app/app.tsx":
7215/*!**********************************!*\
7216  !*** ./resources/js/app/app.tsx ***!
7217  \**********************************/
7218/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7219
7220"use strict";
7221
7222
7223var __importDefault = this && this.__importDefault || function (mod) {
7224  return mod && mod.__esModule ? mod : {
7225    "default": mod
7226  };
7227};
7228Object.defineProperty(exports, "__esModule", ({
7229  value: true
7230}));
7231exports.App = void 0;
7232var react_1 = __importDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
7233var react_router_dom_1 = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
7234__webpack_require__(/*! ../bootstrap */ "./resources/js/bootstrap.ts");
7235var category_product_1 = __webpack_require__(/*! ../scence/category-product */ "./resources/js/scence/category-product.tsx");
7236var home_1 = __webpack_require__(/*! ../scence/home */ "./resources/js/scence/home.tsx");
7237var product_detail_1 = __webpack_require__(/*! ../scence/product-detail */ "./resources/js/scence/product-detail.tsx");
7238var App = function App() {
7239  return react_1["default"].createElement(react_router_dom_1.Routes, null, react_1["default"].createElement(react_router_dom_1.Route, {
7240    path: "/",
7241    element: react_1["default"].createElement(home_1.Home, null)
7242  }), react_1["default"].createElement(react_router_dom_1.Route, {
7243    path: "/chi-tiet-san-pham/:slug",
7244    element: react_1["default"].createElement(product_detail_1.ProductDetail, null)
7245  }), react_1["default"].createElement(react_router_dom_1.Route, {
7246    path: "/danh-muc-san-pham/:slug",
7247    element: react_1["default"].createElement(category_product_1.CategoryProduct, null)
7248  }));
7249};
7250exports.App = App;
7251
7252/***/ }),
7253
7254/***/ "./resources/js/app/index.ts":
7255/*!***********************************!*\
7256  !*** ./resources/js/app/index.ts ***!
7257  \***********************************/
7258/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7259
7260"use strict";
7261
7262
7263var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7264  if (k2 === undefined) k2 = k;
7265  var desc = Object.getOwnPropertyDescriptor(m, k);
7266  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7267    desc = {
7268      enumerable: true,
7269      get: function get() {
7270        return m[k];
7271      }
7272    };
7273  }
7274  Object.defineProperty(o, k2, desc);
7275} : function (o, m, k, k2) {
7276  if (k2 === undefined) k2 = k;
7277  o[k2] = m[k];
7278});
7279var __exportStar = this && this.__exportStar || function (m, exports) {
7280  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
7281};
7282Object.defineProperty(exports, "__esModule", ({
7283  value: true
7284}));
7285__webpack_require__(/*! ./app.style.scss */ "./resources/js/app/app.style.scss");
7286__exportStar(__webpack_require__(/*! ./app */ "./resources/js/app/app.tsx"), exports);
7287
7288/***/ }),
7289
7290/***/ "./resources/js/bootstrap.ts":
7291/*!***********************************!*\
7292  !*** ./resources/js/bootstrap.ts ***!
7293  \***********************************/
7294/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7295
7296"use strict";
7297
7298
7299/**
7300 * We'll load the axios HTTP library which allows us to easily issue requests
7301 * to our Laravel back-end. This library automatically handles sending the
7302 * CSRF token as a header based on the value of the "XSRF" token cookie.
7303 */
7304var __importDefault = this && this.__importDefault || function (mod) {
7305  return mod && mod.__esModule ? mod : {
7306    "default": mod
7307  };
7308};
7309Object.defineProperty(exports, "__esModule", ({
7310  value: true
7311}));
7312var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
7313axios_1["default"].defaults.headers.common["X-Requested-With"] = "XMLHttpRequest";
7314window.axios = axios_1["default"];
7315/**
7316 * Echo exposes an expressive API for subscribing to channels and listening
7317 * for events that are broadcast by Laravel. Echo and event broadcasting
7318 * allows your team to easily build robust real-time web applications.
7319 */
7320// import Echo from 'laravel-echo';
7321// window.Pusher = require('pusher-js');
7322// window.Echo = new Echo({
7323//     broadcaster: 'pusher',
7324//     key: process.env.MIX_PUSHER_APP_KEY,
7325//     cluster: process.env.MIX_PUSHER_APP_CLUSTER,
7326//     forceTLS: true
7327// });
7328
7329/***/ }),
7330
7331/***/ "./resources/js/components/buy/buy.tsx":
7332/*!*********************************************!*\
7333  !*** ./resources/js/components/buy/buy.tsx ***!
7334  \*********************************************/
7335/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7336
7337"use strict";
7338
7339
7340var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7341  if (k2 === undefined) k2 = k;
7342  var desc = Object.getOwnPropertyDescriptor(m, k);
7343  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7344    desc = {
7345      enumerable: true,
7346      get: function get() {
7347        return m[k];
7348      }
7349    };
7350  }
7351  Object.defineProperty(o, k2, desc);
7352} : function (o, m, k, k2) {
7353  if (k2 === undefined) k2 = k;
7354  o[k2] = m[k];
7355});
7356var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
7357  Object.defineProperty(o, "default", {
7358    enumerable: true,
7359    value: v
7360  });
7361} : function (o, v) {
7362  o["default"] = v;
7363});
7364var __importStar = this && this.__importStar || function (mod) {
7365  if (mod && mod.__esModule) return mod;
7366  var result = {};
7367  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
7368  __setModuleDefault(result, mod);
7369  return result;
7370};
7371var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
7372  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
7373    if (ar || !(i in from)) {
7374      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
7375      ar[i] = from[i];
7376    }
7377  }
7378  return to.concat(ar || Array.prototype.slice.call(from));
7379};
7380var __importDefault = this && this.__importDefault || function (mod) {
7381  return mod && mod.__esModule ? mod : {
7382    "default": mod
7383  };
7384};
7385Object.defineProperty(exports, "__esModule", ({
7386  value: true
7387}));
7388exports.Buy = void 0;
7389var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
7390var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
7391var Buy = function Buy(props) {
7392  var _a = (0, react_1.useState)([]),
7393    products = _a[0],
7394    setProducts = _a[1];
7395  var _b = (0, react_1.useState)(12),
7396    limit = _b[0],
7397    setLimit = _b[1];
7398  var _c = (0, react_1.useState)(0),
7399    offset = _c[0],
7400    setOffset = _c[1];
7401  (0, react_1.useEffect)(function () {
7402    axios_1["default"].get("/data/danh-sach-san-pham-tai-trang-chu?buy=1&limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
7403      console.log(res.data, 'BUY');
7404      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
7405    });
7406  }, [limit, offset]);
7407  var viewMore = function viewMore() {
7408    setOffset(offset + limit);
7409  };
7410  return react_1["default"].createElement("div", {
7411    className: "section-content relative"
7412  }, react_1["default"].createElement("div", {
7413    className: "gap-element",
7414    style: {
7415      display: 'block',
7416      height: 'auto',
7417      paddingTop: '30px'
7418    }
7419  }), react_1["default"].createElement("div", {
7420    className: "row row-collapse",
7421    id: "row-1258137080"
7422  }, react_1["default"].createElement("div", {
7423    className: "col medium-12 small-12 large-12"
7424  }, react_1["default"].createElement("div", {
7425    className: "col-inner",
7426    style: {
7427      margin: '0px 0px -10px 0px'
7428    }
7429  }, react_1["default"].createElement("h3", {
7430    className: "orange"
7431  }, "S\u1EA3n ph\u1EA9m b\xE1n ch\u1EA1y"))), react_1["default"].createElement("div", {
7432    className: "col small-12 large-12"
7433  }, react_1["default"].createElement("div", {
7434    className: "col-inner"
7435  }, react_1["default"].createElement("div", {
7436    className: "is-divider divider clearfix",
7437    style: {
7438      marginTop: '0.0em',
7439      marginBottom: '0.0em',
7440      maxWidth: '100%',
7441      backgroundColor: 'rgb(255, 83, 29)'
7442    }
7443  })))), react_1["default"].createElement("div", {
7444    className: "row row-collapse",
7445    id: "row-1557720083"
7446  }, react_1["default"].createElement("div", {
7447    className: "col small-12 large-12"
7448  }, react_1["default"].createElement("div", {
7449    className: "col-inner"
7450  }, react_1["default"].createElement("div", {
7451    className: "gap-element",
7452    style: {
7453      display: 'block',
7454      height: 'auto',
7455      paddingTop: '10px'
7456    }
7457  }), react_1["default"].createElement("div", {
7458    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-sha
7458dow-1",
7459    style: {
7460      marginLeft: '0px',
7461      marginRight: '0px'
7462    }
7463  }, products.map(function (product, index) {
7464    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
7465    if (product.image_list) {
7466      productImage = product.image_list.split(',')[0];
7467    } else if (product.image) {
7468      productImage = product.image;
7469    }
7470    return react_1["default"].createElement("div", {
7471      className: "col",
7472      key: index
7473    }, react_1["default"].createElement("div", {
7474      className: "col-inner"
7475    }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
7476      className: "badge-container absolute left top z-1"
7477    }, react_1["default"].createElement("div", {
7478      className: "callout badge badge-square"
7479    }, react_1["default"].createElement("div", {
7480      className: "badge-inner secondary on-sale"
7481    }, react_1["default"].createElement("span", {
7482      className: "onsale"
7483    }, "-", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
7484      className: "product-small box has-hover box-normal box-text-bottom"
7485    }, react_1["default"].createElement("div", {
7486      className: "box-image"
7487    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
7488      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
7489    }, react_1["default"].createElement("img", {
7490      width: 300,
7491      height: 300,
7492      src: productImage
7493    }))), react_1["default"].createElement("div", {
7494      className: "image-tools z-top top right show-on-hover"
7495    }), react_1["default"].createElement("div", {
7496      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
7497    })), react_1["default"].createElement("div", {
7498      className: "box-text"
7499    }, react_1["default"].createElement("div", {
7500      className: "title-wrapper"
7501    }, react_1["default"].createElement("p", {
7502      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
7503    }, product.category_string), react_1["default"].createElement("p", {
7504      className: "name product-title"
7505    }, react_1["default"].createElement("a", {
7506      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
7507    }, product.title)), react_1["default"].createElement("p", {
7508      className: ""
7509    }, react_1["default"].createElement("i", {
7510      className: "star fa fa-star",
7511      "aria-hidden": "true"
7512    }), product.star > 1 ? react_1["default"].createElement("i", {
7513      className: "star fa fa-star",
7514      "aria-hidden": "true"
7515    }) : react_1["default"].createElement("i", {
7516      className: "fa fa-star",
7517      "aria-hidden": "true"
7518    }), product.star > 2 ? react_1["default"].createElement("i", {
7519      className: "star fa fa-star",
7520      "aria-hidden": "true"
7521    }) : react_1["default"].createElement("i", {
7522      className: "fa fa-star",
7523      "aria-hidden": "true"
7524    }), product.star > 3 ? react_1["default"].createElement("i", {
7525      className: "star fa fa-star",
7526      "aria-hidden": "true"
7527    }) : react_1["default"].createElement("i", {
7528      className: "fa fa-star",
7529      "aria-hidden": "true"
7530    }), product.star > 4 ? react_1["default"].createElement("i", {
7531      className: "star fa fa-star",
7532      "aria-hidden": "true"
7533    }) : react_1["default"].createElement("i", {
7534      className: "fa fa-star",
7535      "aria-hidden": "true"
7536    })), react_1["default"].createElement("div", {
7537      className: "price-wrapper"
7538    }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("span", {
7539      className: "price"
7540    }, react_1["default"].createElement("del", {
7541      style: {
7542        "float": "left"
7543      }
7544    }, react_1["default"].createElement("span", {
7545      className: "woocommerce-Price-amount amount"
7546    }, new Intl.NumberFormat('vi-VN', {
7547      maximumSignificantDigits: 3
7548    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
7549      className: "woocommerce-Price-currencySymbol"
7550    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
7551      style: {
7552        "float": "right"
7553      }
7554    }, react_1["default"].createElement("span", {
7555      className: "woocommerce-Price-amount amount",
7556      style: {
7557        color: "#f00",
7558        fontWeight: "bold"
7559      }
7560    }, new Intl.NumberFormat('vi-VN', {
7561      maximumSignificantDigits: 3
7562    }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
7563      className: "woocommerce-Price-currencySymbol"
7564    }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("span", {
7565      className: "price"
7566    }, react_1["default"].createElement("del", {
7567      style: {
7568        "float": "left"
7569      }
7570    }, react_1["default"].createElement("span", {
7571      className: "woocommerce-Price-amount amount"
7572    }, new Intl.NumberFormat('vi-VN', {
7573      maximumSignificantDigits: 3
7574    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
7575      className: "woocommerce-Price-currencySymbol"
7576    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
7577      style: {
7578        "float": "right"
7579      }
7580    }, react_1["default"].createElement("span", {
7581      className: "woocommerce-Price-amount amount",
7582      style: {
7583        color: "#f00",
7584        fontWeight: "bold"
7585      }
7586    }, new Intl.NumberFormat('vi-VN', {
7587      maximumSignificantDigits: 3
7588    }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
7589      className: "woocommerce-Price-currencySymbol"
7590    }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("span", {
7591      className: "price"
7592    }, react_1["default"].createElement("ins", {
7593      style: {
7594        "float": "left"
7595      }
7596    }, react_1["default"].createElement("span", {
7597      className: "woocommerce-Price-amount amount"
7598    }, new Intl.NumberFormat('vi-VN', {
7599      maximumSignificantDigits: 3
7600    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
7601      className: "woocommerce-Price-currencySymbol"
7602    }, "\u20AB"))))))))));
7603  }), ",")))), react_1["default"].createElement("div", {
7604    className: "row row-collapse",
7605    id: "row-1309925252"
7606  }, react_1["default"].createElement("div", {
7607    className: "col medium-4 small-12 large-4"
7608  }, react_1["default"].createElement("div", {
7609    className: "col-inner"
7610  })), react_1["default"].createElement("div", {
7611    className: "col medium-4 small-12 large-4"
7612  }, react_1["default"].createElement("div", {
7613    className: "col-inner text-center"
7614  }, react_1["default"].createElement("div", {
7615    className: "gap-element",
7616    style: {
7617      display: 'block',
7618      height: 'auto',
7619      paddingTop: '20px'
7620    }
7621  }), react_1["default"].createElement("button", {
7622    onClick: viewMore,
7623    className: "btn btn-outline btn-primary w-25"
7624  }, react_1["default"].createElement("span", null, "Xem th\xEAm")))
7624), react_1["default"].createElement("div", {
7625    className: "col medium-4 small-12 large-4"
7626  }, react_1["default"].createElement("div", {
7627    className: "col-inner"
7628  }))), react_1["default"].createElement("div", {
7629    className: "gap-element",
7630    style: {
7631      display: 'block',
7632      height: 'auto',
7633      paddingTop: '50px'
7634    }
7635  }));
7636};
7637exports.Buy = Buy;
7638
7639/***/ }),
7640
7641/***/ "./resources/js/components/buy/index.ts":
7642/*!**********************************************!*\
7643  !*** ./resources/js/components/buy/index.ts ***!
7644  \**********************************************/
7645/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7646
7647"use strict";
7648
7649
7650var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7651  if (k2 === undefined) k2 = k;
7652  var desc = Object.getOwnPropertyDescriptor(m, k);
7653  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7654    desc = {
7655      enumerable: true,
7656      get: function get() {
7657        return m[k];
7658      }
7659    };
7660  }
7661  Object.defineProperty(o, k2, desc);
7662} : function (o, m, k, k2) {
7663  if (k2 === undefined) k2 = k;
7664  o[k2] = m[k];
7665});
7666var __exportStar = this && this.__exportStar || function (m, exports) {
7667  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
7668};
7669Object.defineProperty(exports, "__esModule", ({
7670  value: true
7671}));
7672__exportStar(__webpack_require__(/*! ./buy */ "./resources/js/components/buy/buy.tsx"), exports);
7673
7674/***/ }),
7675
7676/***/ "./resources/js/components/category-list/category-list.tsx":
7677/*!*****************************************************************!*\
7678  !*** ./resources/js/components/category-list/category-list.tsx ***!
7679  \*****************************************************************/
7680/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7681
7682"use strict";
7683
7684
7685var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7686  if (k2 === undefined) k2 = k;
7687  var desc = Object.getOwnPropertyDescriptor(m, k);
7688  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7689    desc = {
7690      enumerable: true,
7691      get: function get() {
7692        return m[k];
7693      }
7694    };
7695  }
7696  Object.defineProperty(o, k2, desc);
7697} : function (o, m, k, k2) {
7698  if (k2 === undefined) k2 = k;
7699  o[k2] = m[k];
7700});
7701var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
7702  Object.defineProperty(o, "default", {
7703    enumerable: true,
7704    value: v
7705  });
7706} : function (o, v) {
7707  o["default"] = v;
7708});
7709var __importStar = this && this.__importStar || function (mod) {
7710  if (mod && mod.__esModule) return mod;
7711  var result = {};
7712  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
7713  __setModuleDefault(result, mod);
7714  return result;
7715};
7716var __importDefault = this && this.__importDefault || function (mod) {
7717  return mod && mod.__esModule ? mod : {
7718    "default": mod
7719  };
7720};
7721Object.defineProperty(exports, "__esModule", ({
7722  value: true
7723}));
7724exports.CategoryList = void 0;
7725var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
7726var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
7727var CategoryList = function CategoryList(props) {
7728  var _a = (0, react_1.useState)([]),
7729    categories = _a[0],
7730    setCategories = _a[1];
7731  var _b = (0, react_1.useState)(16),
7732    limit = _b[0],
7733    setLimit = _b[1];
7734  var _c = (0, react_1.useState)(0),
7735    offset = _c[0],
7736    setOffset = _c[1];
7737  (0, react_1.useEffect)(function () {
7738    __webpack_require__(/*! ./category-list.style.scss */ "./resources/js/components/category-list/category-list.style.scss");
7739  }, []);
7740  (0, react_1.useEffect)(function () {
7741    axios_1["default"].get("/data/danh-sach-loai-san-pham?limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
7742      setCategories(res.data);
7743    });
7744  }, [limit, offset]);
7745  var goBack = function goBack() {
7746    if (offset - limit < 0) return;
7747    setOffset(offset - limit);
7748  };
7749  var goNext = function goNext() {
7750    setOffset(offset + limit);
7751  };
7752  return react_1["default"].createElement("div", {
7753    className: "section-content relative"
7754  }, react_1["default"].createElement("div", {
7755    className: "gap-element",
7756    style: {
7757      display: 'block',
7758      height: 'auto',
7759      paddingTop: '30px'
7760    }
7761  }), react_1["default"].createElement("div", {
7762    className: "row row-collapse"
7763  }, react_1["default"].createElement("div", {
7764    className: "col small-12 large-12"
7765  }, react_1["default"].createElement("div", {
7766    className: "col-inner"
7767  }, react_1["default"].createElement("h3", null, "DANH M\u1EE4C"), react_1["default"].createElement("div", {
7768    className: "slider-wrapper relative "
7769  }, react_1["default"].createElement("div", {
7770    className: "slider slider-nav-circle slider-nav-large slider-nav-light slider-style-normal flickity-enabled is-draggable"
7771  }, react_1["default"].createElement("div", {
7772    className: "flickity-viewport",
7773    style: {
7774      height: '258.333px'
7775    }
7776  }, react_1["default"].createElement("div", {
7777    className: "flickity-slider",
7778    style: {
7779      left: '0px',
7780      transform: 'translate3d(-99.99%, 0px, 0px)'
7781    }
7782  }, react_1["default"].createElement("div", {
7783    className: "row row-collapse is-selected",
7784    id: "row-1555778584",
7785    style: {
7786      position: 'absolute',
7787      left: '100%'
7788    }
7789  }, react_1["default"].createElement("div", {
7790    className: "col small-12 large-12",
7791    style: {
7792      background: '#fff'
7793    }
7794  }, react_1["default"].createElement("div", {
7795    className: "col-inner"
7796  }, react_1["default"].createElement("div", {
7797    className: "row large-columns-8 medium-columns-3 small-columns-2 row-collapse has-shadow row-box-sha
7797dow-1"
7798  }, categories.map(function (category, index) {
7799    if (index % 2 === 0) {
7800      return react_1["default"].createElement("div", {
7801        key: index,
7802        className: "product-category col"
7803      }, react_1["default"].createElement("div", {
7804        className: "col-inner"
7805      }, react_1["default"].createElement("a", {
7806        href: "/danh-muc-san-pham/" + category.slug
7807      }, react_1["default"].createElement("div", {
7808        className: "box box-category has-hover box-normal"
7809      }, react_1["default"].createElement("div", {
7810        className: "box-image",
7811        style: {
7812          width: '50%'
7813        }
7814      }, react_1["default"].createElement("div", null, react_1["default"].createElement("img", {
7815        width: 300,
7816        height: 300,
7817        src: category.image || '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg'
7818      }))), react_1["default"].createElement("div", {
7819        className: "box-text text-center"
7820      }, react_1["default"].createElement("div", {
7821        className: "box-text-inner"
7822      }, react_1["default"].createElement("h5", {
7823        className: "uppercase header-title"
7824      }, category.title)))))));
7825    } else return null;
7826  })), react_1["default"].createElement("div", {
7827    className: "row large-columns-8 medium-columns-3 small-columns-2 row-collapse has-shadow row-box-shadow-1"
7828  }, categories.map(function (category, index) {
7829    if (index % 2 === 1) {
7830      return react_1["default"].createElement("div", {
7831        key: index,
7832        className: "product-category col"
7833      }, react_1["default"].createElement("div", {
7834        className: "col-inner"
7835      }, react_1["default"].createElement("a", {
7836        href: "/danh-muc-san-pham/" + category.slug
7837      }, react_1["default"].createElement("div", {
7838        className: "box box-category has-hover box-normal"
7839      }, react_1["default"].createElement("div", {
7840        className: "box-image",
7841        style: {
7842          width: '50%'
7843        }
7844      }, react_1["default"].createElement("div", null, react_1["default"].createElement("img", {
7845        width: 300,
7846        height: 300,
7847        src: category.image || '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg'
7848      }))), react_1["default"].createElement("div", {
7849        className: "box-text text-center"
7850      }, react_1["default"].createElement("div", {
7851        className: "box-text-inner"
7852      }, react_1["default"].createElement("h5", {
7853        className: "uppercase header-title"
7854      }, category.title)))))));
7855    } else return null;
7856  }))))))), react_1["default"].createElement("button", {
7857    onClick: goBack,
7858    className: "flickity-prev-next-button previous",
7859    type: "button",
7860    "aria-label": "previous"
7861  }, react_1["default"].createElement("svg", {
7862    viewBox: "0 0 100 100"
7863  }, react_1["default"].createElement("path", {
7864    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
7865    className: "arrow"
7866  }))), react_1["default"].createElement("button", {
7867    onClick: goNext,
7868    className: "flickity-prev-next-button next",
7869    type: "button",
7870    "aria-label": "next"
7871  }, react_1["default"].createElement("svg", {
7872    viewBox: "0 0 100 100"
7873  }, react_1["default"].createElement("path", {
7874    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
7875    className: "arrow",
7876    transform: "translate(100, 100) rotate(180) "
7877  })))), react_1["default"].createElement("div", {
7878    className: "loading-spin dark large centered",
7879    style: {
7880      display: 'none'
7881    }
7882  }))))));
7883};
7884exports.CategoryList = CategoryList;
7885
7886/***/ }),
7887
7888/***/ "./resources/js/components/category-list/index.ts":
7889/*!********************************************************!*\
7890  !*** ./resources/js/components/category-list/index.ts ***!
7891  \********************************************************/
7892/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7893
7894"use strict";
7895
7896
7897var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7898  if (k2 === undefined) k2 = k;
7899  var desc = Object.getOwnPropertyDescriptor(m, k);
7900  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7901    desc = {
7902      enumerable: true,
7903      get: function get() {
7904        return m[k];
7905      }
7906    };
7907  }
7908  Object.defineProperty(o, k2, desc);
7909} : function (o, m, k, k2) {
7910  if (k2 === undefined) k2 = k;
7911  o[k2] = m[k];
7912});
7913var __exportStar = this && this.__exportStar || function (m, exports) {
7914  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
7915};
7916Object.defineProperty(exports, "__esModule", ({
7917  value: true
7918}));
7919__exportStar(__webpack_require__(/*! ./category-list */ "./resources/js/components/category-list/category-list.tsx"), exports);
7920
7921/***/ }),
7922
7923/***/ "./resources/js/components/every/every.tsx":
7924/*!*************************************************!*\
7925  !*** ./resources/js/components/every/every.tsx ***!
7926  \*************************************************/
7927/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
7928
7929"use strict";
7930
7931
7932var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
7933  if (k2 === undefined) k2 = k;
7934  var desc = Object.getOwnPropertyDescriptor(m, k);
7935  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7936    desc = {
7937      enumerable: true,
7938      get: function get() {
7939        return m[k];
7940      }
7941    };
7942  }
7943  Object.defineProperty(o, k2, desc);
7944} : function (o, m, k, k2) {
7945  if (k2 === undefined) k2 = k;
7946  o[k2] = m[k];
7947});
7948var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
7949  Object.defineProperty(o, "default", {
7950    enumerable: true,
7951    value: v
7952  });
7953} : function (o, v) {
7954  o["default"] = v;
7955});
7956var __importStar = this && this.__importStar || function (mod) {
7957  if (mod && mod.__esModule) return mod;
7958  var result = {};
7959  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
7960  __setModuleDefault(result, mod);
7961  return result;
7962};
7963var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
7964  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
7965    if (ar || !(i in from)) {
7966      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
7967      ar[i] = from[i];
7968    }
7969  }
7970  return to.concat(ar || Array.prototype.slice.call(from));
7971};
7972var __importDefault = this && this.__importDefault || function (mod) {
7973  return mod && mod.__esModule ? mod : {
7974    "default": mod
7975  };
7976};
7977Object.defineProperty(exports, "__esModule", ({
7978  value: true
7979}));
7980exports.Every = void 0;
7981var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
7982var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
7983var Every = function Every(props) {
7984  var _a = (0, react_1.useState)([]),
7985    products = _a[0],
7986    setProducts = _a[1];
7987  var _b = (0, react_1.useState)(12),
7988    limit = _b[0],
7989    setLimit = _b[1];
7990  var _c = (0, react_1.useState)(0),
7991    offset = _c[0],
7992    setOffset = _c[1];
7993  (0, react_1.useEffect)(function () {
7994    axios_1["default"].get("/data/danh-sach-san-pham-tai-trang-chu?every=1&limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
7995      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
7996    });
7997  }, [limit, offset]);
7998  var viewMore = function viewMore() {
7999    setOffset(offset + limit);
8000  };
8001  return react_1["default"].createElement("div", {
8002    className: "section-content relative"
8003  }, react_1["default"].createElement("div", {
8004    className: "gap-element",
8005    style: {
8006      display: 'block',
8007      height: 'auto',
8008      paddingTop: '30px'
8009    }
8010  }), react_1["default"].createElement("div", {
8011    className: "row row-collapse",
8012    id: "row-1258137080"
8013  }, react_1["default"].createElement("div", {
8014    className: "col medium-12 small-12 large-12"
8015  }, react_1["default"].createElement("div", {
8016    className: "col-inner",
8017    style: {
8018      margin: '0px 0px -10px 0px'
8019    }
8020  }, react_1["default"].createElement("h3", {
8021    className: "orange"
8022  }, "Mua g\xEC b\xE1n \u0111\u1EA5y"))), react_1["default"].createElement("div", {
8023    className: "col small-12 large-12"
8024  }, react_1["default"].createElement("div", {
8025    className: "col-inner"
8026  }, react_1["default"].createElement("div", {
8027    className: "is-divider divider clearfix",
8028    style: {
8029      marginTop: '0.0em',
8030      marginBottom: '0.0em',
8031      maxWidth: '100%',
8032      backgroundColor: 'rgb(255, 83, 29)'
8033    }
8034  })))), react_1["default"].createElement("div", {
8035    className: "row row-collapse",
8036    id: "row-1557720083"
8037  }, react_1["default"].createElement("div", {
8038    className: "col small-12 large-12"
8039  }, react_1["default"].createElement("div", {
8040    className: "col-inner"
8041  }, react_1["default"].createElement("div", {
8042    className: "gap-element",
8043    style: {
8044      display: 'block',
8045      height: 'auto',
8046      paddingTop: '10px'
8047    }
8048  }), react_1["default"].createElement("div", {
8049    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-sha
8049dow-1",
8050    style: {
8051      marginLeft: '0px',
8052      marginRight: '0px'
8053    }
8054  }, products.map(function (product, index) {
8055    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
8056    if (product.image_list) {
8057      productImage = product.image_list.split(',')[0];
8058    } else if (product.image) {
8059      productImage = product.image;
8060    }
8061    return react_1["default"].createElement("div", {
8062      className: "col",
8063      key: index
8064    }, react_1["default"].createElement("div", {
8065      className: "col-inner"
8066    }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
8067      className: "badge-container absolute left top z-1"
8068    }, react_1["default"].createElement("div", {
8069      className: "callout badge badge-square"
8070    }, react_1["default"].createElement("div", {
8071      className: "badge-inner secondary on-sale"
8072    }, react_1["default"].createElement("span", {
8073      className: "onsale"
8074    }, "-", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
8075      className: "product-small box has-hover box-normal box-text-bottom"
8076    }, react_1["default"].createElement("div", {
8077      className: "box-image"
8078    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
8079      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
8080    }, react_1["default"].createElement("img", {
8081      width: 300,
8082      height: 300,
8083      src: productImage
8084    }))), react_1["default"].createElement("div", {
8085      className: "image-tools z-top top right show-on-hover"
8086    }), react_1["default"].createElement("div", {
8087      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
8088    })), react_1["default"].createElement("div", {
8089      className: "box-text"
8090    }, react_1["default"].createElement("div", {
8091      className: "title-wrapper"
8092    }, react_1["default"].createElement("p", {
8093      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
8094    }, product.category_string), react_1["default"].createElement("p", {
8095      className: "name product-title"
8096    }, react_1["default"].createElement("a", {
8097      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
8098    }, product.title)), react_1["default"].createElement("p", {
8099      className: ""
8100    }, react_1["default"].createElement("i", {
8101      className: "star fa fa-star",
8102      "aria-hidden": "true"
8103    }), product.star > 1 ? react_1["default"].createElement("i", {
8104      className: "star fa fa-star",
8105      "aria-hidden": "true"
8106    }) : react_1["default"].createElement("i", {
8107      className: "fa fa-star",
8108      "aria-hidden": "true"
8109    }), product.star > 2 ? react_1["default"].createElement("i", {
8110      className: "star fa fa-star",
8111      "aria-hidden": "true"
8112    }) : react_1["default"].createElement("i", {
8113      className: "fa fa-star",
8114      "aria-hidden": "true"
8115    }), product.star > 3 ? react_1["default"].createElement("i", {
8116      className: "star fa fa-star",
8117      "aria-hidden": "true"
8118    }) : react_1["default"].createElement("i", {
8119      className: "fa fa-star",
8120      "aria-hidden": "true"
8121    }), product.star > 4 ? react_1["default"].createElement("i", {
8122      className: "star fa fa-star",
8123      "aria-hidden": "true"
8124    }) : react_1["default"].createElement("i", {
8125      className: "fa fa-star",
8126      "aria-hidden": "true"
8127    })), react_1["default"].createElement("div", {
8128      className: "price-wrapper"
8129    }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("span", {
8130      className: "price"
8131    }, react_1["default"].createElement("del", {
8132      style: {
8133        "float": "left"
8134      }
8135    }, react_1["default"].createElement("span", {
8136      className: "woocommerce-Price-amount amount"
8137    }, new Intl.NumberFormat('vi-VN', {
8138      maximumSignificantDigits: 3
8139    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8140      className: "woocommerce-Price-currencySymbol"
8141    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
8142      style: {
8143        "float": "right"
8144      }
8145    }, react_1["default"].createElement("span", {
8146      className: "woocommerce-Price-amount amount",
8147      style: {
8148        color: "#f00",
8149        fontWeight: "bold"
8150      }
8151    }, new Intl.NumberFormat('vi-VN', {
8152      maximumSignificantDigits: 3
8153    }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
8154      className: "woocommerce-Price-currencySymbol"
8155    }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("span", {
8156      className: "price"
8157    }, react_1["default"].createElement("del", {
8158      style: {
8159        "float": "left"
8160      }
8161    }, react_1["default"].createElement("span", {
8162      className: "woocommerce-Price-amount amount"
8163    }, new Intl.NumberFormat('vi-VN', {
8164      maximumSignificantDigits: 3
8165    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8166      className: "woocommerce-Price-currencySymbol"
8167    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
8168      style: {
8169        "float": "right"
8170      }
8171    }, react_1["default"].createElement("span", {
8172      className: "woocommerce-Price-amount amount",
8173      style: {
8174        color: "#f00",
8175        fontWeight: "bold"
8176      }
8177    }, new Intl.NumberFormat('vi-VN', {
8178      maximumSignificantDigits: 3
8179    }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
8180      className: "woocommerce-Price-currencySymbol"
8181    }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("span", {
8182      className: "price"
8183    }, react_1["default"].createElement("ins", {
8184      style: {
8185        "float": "left"
8186      }
8187    }, react_1["default"].createElement("span", {
8188      className: "woocommerce-Price-amount amount"
8189    }, new Intl.NumberFormat('vi-VN', {
8190      maximumSignificantDigits: 3
8191    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8192      className: "woocommerce-Price-currencySymbol"
8193    }, "\u20AB"))))))))));
8194  }), ",")))), react_1["default"].createElement("div", {
8195    className: "row row-collapse",
8196    id: "row-1309925252"
8197  }, react_1["default"].createElement("div", {
8198    className: "col medium-4 small-12 large-4"
8199  }, react_1["default"].createElement("div", {
8200    className: "col-inner"
8201  })), react_1["default"].createElement("div", {
8202    className: "col medium-4 small-12 large-4"
8203  }, react_1["default"].createElement("div", {
8204    className: "col-inner text-center"
8205  }, react_1["default"].createElement("div", {
8206    className: "gap-element",
8207    style: {
8208      display: 'block',
8209      height: 'auto',
8210      paddingTop: '20px'
8211    }
8212  }), react_1["default"].createElement("button", {
8213    onClick: viewMore,
8214    className: "btn btn-outline btn-primary w-25"
8215  }, react_1["default"].createElement("span", null, "Xem th\xEAm")))
8215), react_1["default"].createElement("div", {
8216    className: "col medium-4 small-12 large-4"
8217  }, react_1["default"].createElement("div", {
8218    className: "col-inner"
8219  }))), react_1["default"].createElement("div", {
8220    className: "gap-element",
8221    style: {
8222      display: 'block',
8223      height: 'auto',
8224      paddingTop: '50px'
8225    }
8226  }));
8227};
8228exports.Every = Every;
8229
8230/***/ }),
8231
8232/***/ "./resources/js/components/every/index.ts":
8233/*!************************************************!*\
8234  !*** ./resources/js/components/every/index.ts ***!
8235  \************************************************/
8236/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8237
8238"use strict";
8239
8240
8241var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8242  if (k2 === undefined) k2 = k;
8243  var desc = Object.getOwnPropertyDescriptor(m, k);
8244  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8245    desc = {
8246      enumerable: true,
8247      get: function get() {
8248        return m[k];
8249      }
8250    };
8251  }
8252  Object.defineProperty(o, k2, desc);
8253} : function (o, m, k, k2) {
8254  if (k2 === undefined) k2 = k;
8255  o[k2] = m[k];
8256});
8257var __exportStar = this && this.__exportStar || function (m, exports) {
8258  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
8259};
8260Object.defineProperty(exports, "__esModule", ({
8261  value: true
8262}));
8263__exportStar(__webpack_require__(/*! ./every */ "./resources/js/components/every/every.tsx"), exports);
8264
8265/***/ }),
8266
8267/***/ "./resources/js/components/flash-sale/flash-sale.tsx":
8268/*!***********************************************************!*\
8269  !*** ./resources/js/components/flash-sale/flash-sale.tsx ***!
8270  \***********************************************************/
8271/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8272
8273"use strict";
8274
8275
8276var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8277  if (k2 === undefined) k2 = k;
8278  var desc = Object.getOwnPropertyDescriptor(m, k);
8279  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8280    desc = {
8281      enumerable: true,
8282      get: function get() {
8283        return m[k];
8284      }
8285    };
8286  }
8287  Object.defineProperty(o, k2, desc);
8288} : function (o, m, k, k2) {
8289  if (k2 === undefined) k2 = k;
8290  o[k2] = m[k];
8291});
8292var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
8293  Object.defineProperty(o, "default", {
8294    enumerable: true,
8295    value: v
8296  });
8297} : function (o, v) {
8298  o["default"] = v;
8299});
8300var __importStar = this && this.__importStar || function (mod) {
8301  if (mod && mod.__esModule) return mod;
8302  var result = {};
8303  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
8304  __setModuleDefault(result, mod);
8305  return result;
8306};
8307Object.defineProperty(exports, "__esModule", ({
8308  value: true
8309}));
8310exports.FlashSale = void 0;
8311var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
8312var ramda_1 = __webpack_require__(/*! ramda */ "./node_modules/ramda/src/index.js");
8313var FlashSale = function FlashSale(props) {
8314  (0, react_1.useEffect)(function () {
8315    __webpack_require__(/*! ./flash-sale.style.scss */ "./resources/js/components/flash-sale/flash-sale.style.scss");
8316  }, []);
8317  return react_1["default"].createElement("div", {
8318    className: "section-content relative"
8319  }, react_1["default"].createElement("div", {
8320    className: "gap-element",
8321    style: {
8322      display: 'block',
8323      height: 'auto',
8324      paddingTop: '30px'
8325    }
8326  }), react_1["default"].createElement("div", {
8327    className: "row row-collapse align-middle",
8328    id: "row-2086499104"
8329  }, react_1["default"].createElement("div", {
8330    className: "col medium-2 small-12 large-2"
8331  }, react_1["default"].createElement("div", {
8332    className: "col-inner"
8333  }, react_1["default"].createElement("div", {
8334    className: "img has-hover x md-x lg-x y md-y lg-y",
8335    style: {
8336      width: '70%'
8337    }
8338  }, react_1["default"].createElement("div", {
8339    className: "img-inner dark"
8340  }, react_1["default"].createElement("img", {
8341    width: 480,
8342    height: 92,
8343    src: "https://moma.com.vn/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg"
8344  }))))), react_1["default"].createElement("div", {
8345    className: "col medium-2 small-12 large-2"
8346  }, react_1["default"].createElement("div", {
8347    className: "col-inner",
8348    style: {
8349      padding: '0px 0px 0px 0px'
8350    }
8351  }, react_1["default"].createElement("div", {
8352    id: "timer-657285294",
8353    className: "ux-timer dark",
8354    "data-text-plural": "s",
8355    "data-text-hour": "hour",
8356    "data-text-day": "day",
8357    "data-text-week": "week",
8358    "data-text-min": "min",
8359    "data-text-sec": "sec",
8360    "data-text-hour-p": true,
8361    "data-text-day-p": true,
8362    "data-text-week-p": true,
8363    "data-text-min-p": true,
8364    "data-text-sec-p": true,
8365    "data-countdown": "2017/10/28 18:00"
8366  }, react_1["default"].createElement("span", null, "0", react_1["default"].createElement("strong", null, "hours")), react_1["default"].createElement("span", null, "0", react_1["default"].createElement("strong", null, "min")), react_1["default"].createElement("span", null, "0", react_1["default"].createElement("strong", null, "sec"))))), react_1["default"].createElement("div", {
8367    className: "col medium-8 small-12 large-8"
8368  }, react_1["default"].createElement("div", {
8369    className: "col-inner text-right"
8370  }, react_1["default"].createElement("p", {
8371    className: "orange"
8372  }, react_1["default"].createElement("a", {
8373    href: "/san-pham/demo"
8374  }, "Xem T\u1EA5t C\u1EA3 >"))))), react_1["default"].createElement("div", {
8375    className: "row row-collapse",
8376    id: "row-739879242"
8377  }, react_1["default"].createElement("div", {
8378    className: "col small-12 large-12"
8379  }, react_1["default"].createElement("div", {
8380    className: "col-inner"
8381  }, react_1["default"].createElement("div", {
8382    className: "row large-columns-6 medium-columns-3 small-columns-2 row-collapse slider row-slider slider-nav-reveal slider-nav-push flickity-enabled is-draggable",
8383    "data-flickity-options": "{\"imagesLoaded\": true, \"groupCells\": \"100%\", \"dragThreshold\" : 5, \"cellAlign\": \"left\",\"wrapAround\": true,\"prevNextButtons\": true,\"percentPosition\": true,\"pageDots\": false, \"rightToLeft\": false, \"autoPlay\" : false}",
8384    tabIndex: 0
8385  }, react_1["default"].createElement("div", {
8386    className: "flickity-viewport",
8387    style: {
8388      height: '350px'
8389    }
8390  }, react_1["default"].createElement("div", {
8391    className: "flickity-slider"
8392  }, (0, ramda_1.times)(function () {
8393    return react_1["default"].createElement("div", {
8394      className: "col is-selected"
8395    }, react_1["default"].createElement("div", {
8396      className: "col-inner"
8397    }, react_1["default"].createElement("div", {
8398      className: "badge-container absolute left top z-1"
8399    }, react_1["default"].createElement("div", {
8400      className: "callout badge badge-square"
8401    }, react_1["default"].createElement("div", {
8402      className: "badge-inner secondary on-sale"
8403    }, react_1["default"].createElement("span", {
8404      className: "onsale"
8405    }, "-10%")))), react_1["default"].createElement("div", {
8406      className: "product-small box has-hover box-normal box-text-bottom"
8407    }, react_1["default"].createElement("div", {
8408      className: "box-image"
8409    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
8410      href: "/san-pham/demo"
8411    }, react_1["default"].createElement("img", {
8412      width: 300,
8413      height: 300,
8414      src: "https://moma.com.vn/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg",
8415      sizes: "(max-width: 300px) 100vw, 300px"
8416    }), "\t\t\t\t\t\t\t\t\t")), react_1["default"].createElement("div", {
8417      className: "image-tools z-top top right show-on-hover"
8418    }), react_1["default"].createElement("div", {
8419      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
8420    })), react_1["default"].createElement("div", {
8421      className: "box-text text-center",
8422      style: {
8423        backgroundColor: 'rgb(255, 255, 255)'
8424      }
8425    }, react_1["default"].createElement("div", {
8426      className: "title-wrapper"
8427    }, react_1["default"].createElement("p", {
8428      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
8429    }, "\u0110i\u1EC7n tho\u1EA1i"), react_1["default"].createElement("p", {
8430      className: "name product-title"
8431    }, react_1["default"].createElement("a", {
8432      href: "/san-pham/demo"
8433    }, "\u0110i\u1EC7n tho\u1EA1i samsung S5 active ch\u1ED1ng n\u01B0\u1EDBc")), react_1["default"].createElement("span", {
8434      className: "price"
8435    }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
8436      className: "woocommerce-Price-amount amount"
8437    }, "3,000,000\xA0", react_1["default"].createElement("span", {
8438      className: "woocommerce-Price-currencySymbol"
8439    }, "\u20AB"))), " ", react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
8440      className: "woocommerce-Price-amount amount"
8441    }, "2,690,000\xA0", react_1["default"].createElement("span", {
8442      className: "woocommerce-Price-currencySymbol"
8443    }, "\u20AB")))))))));
8444  }, 16)))), react_1["default"].createElement("button", {
8445    className: "flickity-prev-next-button previous",
8446    type: "button",
8447    "aria-label": "previous"
8448  }, react_1["default"].createElement("svg", {
8449    viewBox: "0 0 100 100"
8450  }, react_1["default"].createElement("path", {
8451    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
8452    className: "arrow"
8453  }))), react_1["default"].createElement("button", {
8454    className: "flickity-prev-next-button next",
8455    type: "button",
8456    "aria-label": "next"
8457  }, react_1["default"].createElement("svg", {
8458    viewBox: "0 0 100 100"
8459  }, react_1["default"].createElement("path", {
8460    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
8461    className: "arrow",
8462    transform: "translate(100, 100) rotate(180) "
8463  })))))));
8464};
8465exports.FlashSale = FlashSale;
8466
8467/***/ }),
8468
8469/***/ "./resources/js/components/flash-sale/index.ts":
8470/*!*****************************************************!*\
8471  !*** ./resources/js/components/flash-sale/index.ts ***!
8472  \*****************************************************/
8473/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8474
8475"use strict";
8476
8477
8478var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8479  if (k2 === undefined) k2 = k;
8480  var desc = Object.getOwnPropertyDescriptor(m, k);
8481  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8482    desc = {
8483      enumerable: true,
8484      get: function get() {
8485        return m[k];
8486      }
8487    };
8488  }
8489  Object.defineProperty(o, k2, desc);
8490} : function (o, m, k, k2) {
8491  if (k2 === undefined) k2 = k;
8492  o[k2] = m[k];
8493});
8494var __exportStar = this && this.__exportStar || function (m, exports) {
8495  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
8496};
8497Object.defineProperty(exports, "__esModule", ({
8498  value: true
8499}));
8500__exportStar(__webpack_require__(/*! ./flash-sale */ "./resources/js/components/flash-sale/flash-sale.tsx"), exports);
8501
8502/***/ }),
8503
8504/***/ "./resources/js/components/free/free.tsx":
8505/*!***********************************************!*\
8506  !*** ./resources/js/components/free/free.tsx ***!
8507  \***********************************************/
8508/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8509
8510"use strict";
8511
8512
8513var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8514  if (k2 === undefined) k2 = k;
8515  var desc = Object.getOwnPropertyDescriptor(m, k);
8516  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8517    desc = {
8518      enumerable: true,
8519      get: function get() {
8520        return m[k];
8521      }
8522    };
8523  }
8524  Object.defineProperty(o, k2, desc);
8525} : function (o, m, k, k2) {
8526  if (k2 === undefined) k2 = k;
8527  o[k2] = m[k];
8528});
8529var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
8530  Object.defineProperty(o, "default", {
8531    enumerable: true,
8532    value: v
8533  });
8534} : function (o, v) {
8535  o["default"] = v;
8536});
8537var __importStar = this && this.__importStar || function (mod) {
8538  if (mod && mod.__esModule) return mod;
8539  var result = {};
8540  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
8541  __setModuleDefault(result, mod);
8542  return result;
8543};
8544var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
8545  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
8546    if (ar || !(i in from)) {
8547      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
8548      ar[i] = from[i];
8549    }
8550  }
8551  return to.concat(ar || Array.prototype.slice.call(from));
8552};
8553var __importDefault = this && this.__importDefault || function (mod) {
8554  return mod && mod.__esModule ? mod : {
8555    "default": mod
8556  };
8557};
8558Object.defineProperty(exports, "__esModule", ({
8559  value: true
8560}));
8561exports.Free = void 0;
8562var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
8563var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
8564var Free = function Free(props) {
8565  var _a = (0, react_1.useState)([]),
8566    products = _a[0],
8567    setProducts = _a[1];
8568  var _b = (0, react_1.useState)(12),
8569    limit = _b[0],
8570    setLimit = _b[1];
8571  var _c = (0, react_1.useState)(0),
8572    offset = _c[0],
8573    setOffset = _c[1];
8574  (0, react_1.useEffect)(function () {
8575    axios_1["default"].get("/data/danh-sach-san-pham-tai-trang-chu?free=1&limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
8576      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
8577    });
8578  }, [limit, offset]);
8579  var viewMore = function viewMore() {
8580    setOffset(offset + limit);
8581  };
8582  return react_1["default"].createElement("div", {
8583    className: "section-content relative"
8584  }, react_1["default"].createElement("div", {
8585    className: "gap-element",
8586    style: {
8587      display: 'block',
8588      height: 'auto',
8589      paddingTop: '30px'
8590    }
8591  }), react_1["default"].createElement("div", {
8592    className: "row row-collapse",
8593    id: "row-1258137080"
8594  }, react_1["default"].createElement("div", {
8595    className: "col medium-12 small-12 large-12"
8596  }, react_1["default"].createElement("div", {
8597    className: "col-inner",
8598    style: {
8599      margin: '0px 0px -10px 0px'
8600    }
8601  }, react_1["default"].createElement("h3", {
8602    className: "orange"
8603  }, "S\u1EA3n ph\u1EA9m mi\u1EC5n ph\xED"))), react_1["default"].createElement("div", {
8604    className: "col small-12 large-12"
8605  }, react_1["default"].createElement("div", {
8606    className: "col-inner"
8607  }, react_1["default"].createElement("div", {
8608    className: "is-divider divider clearfix",
8609    style: {
8610      marginTop: '0.0em',
8611      marginBottom: '0.0em',
8612      maxWidth: '100%',
8613      backgroundColor: 'rgb(255, 83, 29)'
8614    }
8615  })))), react_1["default"].createElement("div", {
8616    className: "row row-collapse",
8617    id: "row-1557720083"
8618  }, react_1["default"].createElement("div", {
8619    className: "col small-12 large-12"
8620  }, react_1["default"].createElement("div", {
8621    className: "col-inner"
8622  }, react_1["default"].createElement("div", {
8623    className: "gap-element",
8624    style: {
8625      display: 'block',
8626      height: 'auto',
8627      paddingTop: '10px'
8628    }
8629  }), react_1["default"].createElement("div", {
8630    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-sha
8630dow-1",
8631    style: {
8632      marginLeft: '0px',
8633      marginRight: '0px'
8634    }
8635  }, products.map(function (product, index) {
8636    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
8637    if (product.image_list) {
8638      productImage = product.image_list.split(',')[0];
8639    } else if (product.image) {
8640      productImage = product.image;
8641    }
8642    return react_1["default"].createElement("div", {
8643      className: "col",
8644      key: index
8645    }, react_1["default"].createElement("div", {
8646      className: "col-inner"
8647    }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
8648      className: "badge-container absolute left top z-1"
8649    }, react_1["default"].createElement("div", {
8650      className: "callout badge badge-square"
8651    }, react_1["default"].createElement("div", {
8652      className: "badge-inner secondary on-sale"
8653    }, react_1["default"].createElement("span", {
8654      className: "onsale"
8655    }, "-", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
8656      className: "product-small box has-hover box-normal box-text-bottom"
8657    }, react_1["default"].createElement("div", {
8658      className: "box-image"
8659    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
8660      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
8661    }, react_1["default"].createElement("img", {
8662      width: 300,
8663      height: 300,
8664      src: productImage
8665    }))), react_1["default"].createElement("div", {
8666      className: "image-tools z-top top right show-on-hover"
8667    }), react_1["default"].createElement("div", {
8668      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
8669    })), react_1["default"].createElement("div", {
8670      className: "box-text"
8671    }, react_1["default"].createElement("div", {
8672      className: "title-wrapper"
8673    }, react_1["default"].createElement("p", {
8674      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
8675    }, product.category_string), react_1["default"].createElement("p", {
8676      className: "name product-title"
8677    }, react_1["default"].createElement("a", {
8678      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
8679    }, product.title)), react_1["default"].createElement("p", {
8680      className: ""
8681    }, react_1["default"].createElement("i", {
8682      className: "star fa fa-star",
8683      "aria-hidden": "true"
8684    }), product.star > 1 ? react_1["default"].createElement("i", {
8685      className: "star fa fa-star",
8686      "aria-hidden": "true"
8687    }) : react_1["default"].createElement("i", {
8688      className: "fa fa-star",
8689      "aria-hidden": "true"
8690    }), product.star > 2 ? react_1["default"].createElement("i", {
8691      className: "star fa fa-star",
8692      "aria-hidden": "true"
8693    }) : react_1["default"].createElement("i", {
8694      className: "fa fa-star",
8695      "aria-hidden": "true"
8696    }), product.star > 3 ? react_1["default"].createElement("i", {
8697      className: "star fa fa-star",
8698      "aria-hidden": "true"
8699    }) : react_1["default"].createElement("i", {
8700      className: "fa fa-star",
8701      "aria-hidden": "true"
8702    }), product.star > 4 ? react_1["default"].createElement("i", {
8703      className: "star fa fa-star",
8704      "aria-hidden": "true"
8705    }) : react_1["default"].createElement("i", {
8706      className: "fa fa-star",
8707      "aria-hidden": "true"
8708    })), react_1["default"].createElement("div", {
8709      className: "price-wrapper"
8710    }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("span", {
8711      className: "price"
8712    }, react_1["default"].createElement("del", {
8713      style: {
8714        "float": "left"
8715      }
8716    }, react_1["default"].createElement("span", {
8717      className: "woocommerce-Price-amount amount"
8718    }, new Intl.NumberFormat('vi-VN', {
8719      maximumSignificantDigits: 3
8720    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8721      className: "woocommerce-Price-currencySymbol"
8722    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
8723      style: {
8724        "float": "right"
8725      }
8726    }, react_1["default"].createElement("span", {
8727      className: "woocommerce-Price-amount amount",
8728      style: {
8729        color: "#f00",
8730        fontWeight: "bold"
8731      }
8732    }, new Intl.NumberFormat('vi-VN', {
8733      maximumSignificantDigits: 3
8734    }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
8735      className: "woocommerce-Price-currencySymbol"
8736    }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("span", {
8737      className: "price"
8738    }, react_1["default"].createElement("del", {
8739      style: {
8740        "float": "left"
8741      }
8742    }, react_1["default"].createElement("span", {
8743      className: "woocommerce-Price-amount amount"
8744    }, new Intl.NumberFormat('vi-VN', {
8745      maximumSignificantDigits: 3
8746    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8747      className: "woocommerce-Price-currencySymbol"
8748    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
8749      style: {
8750        "float": "right"
8751      }
8752    }, react_1["default"].createElement("span", {
8753      className: "woocommerce-Price-amount amount",
8754      style: {
8755        color: "#f00",
8756        fontWeight: "bold"
8757      }
8758    }, new Intl.NumberFormat('vi-VN', {
8759      maximumSignificantDigits: 3
8760    }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
8761      className: "woocommerce-Price-currencySymbol"
8762    }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("span", {
8763      className: "price"
8764    }, react_1["default"].createElement("ins", {
8765      style: {
8766        "float": "left"
8767      }
8768    }, react_1["default"].createElement("span", {
8769      className: "woocommerce-Price-amount amount"
8770    }, new Intl.NumberFormat('vi-VN', {
8771      maximumSignificantDigits: 3
8772    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
8773      className: "woocommerce-Price-currencySymbol"
8774    }, "\u20AB"))))))))));
8775  }), ",")))), react_1["default"].createElement("div", {
8776    className: "row row-collapse",
8777    id: "row-1309925252"
8778  }, react_1["default"].createElement("div", {
8779    className: "col medium-4 small-12 large-4"
8780  }, react_1["default"].createElement("div", {
8781    className: "col-inner"
8782  })), react_1["default"].createElement("div", {
8783    className: "col medium-4 small-12 large-4"
8784  }, react_1["default"].createElement("div", {
8785    className: "col-inner text-center"
8786  }, react_1["default"].createElement("div", {
8787    className: "gap-element",
8788    style: {
8789      display: 'block',
8790      height: 'auto',
8791      paddingTop: '20px'
8792    }
8793  }), react_1["default"].createElement("button", {
8794    onClick: viewMore,
8795    className: "btn btn-outline btn-primary w-25"
8796  }, react_1["default"].createElement("span", null, "Xem th\xEAm")))
8796), react_1["default"].createElement("div", {
8797    className: "col medium-4 small-12 large-4"
8798  }, react_1["default"].createElement("div", {
8799    className: "col-inner"
8800  }))), react_1["default"].createElement("div", {
8801    className: "gap-element",
8802    style: {
8803      display: 'block',
8804      height: 'auto',
8805      paddingTop: '50px'
8806    }
8807  }));
8808};
8809exports.Free = Free;
8810
8811/***/ }),
8812
8813/***/ "./resources/js/components/free/index.ts":
8814/*!***********************************************!*\
8815  !*** ./resources/js/components/free/index.ts ***!
8816  \***********************************************/
8817/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8818
8819"use strict";
8820
8821
8822var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8823  if (k2 === undefined) k2 = k;
8824  var desc = Object.getOwnPropertyDescriptor(m, k);
8825  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8826    desc = {
8827      enumerable: true,
8828      get: function get() {
8829        return m[k];
8830      }
8831    };
8832  }
8833  Object.defineProperty(o, k2, desc);
8834} : function (o, m, k, k2) {
8835  if (k2 === undefined) k2 = k;
8836  o[k2] = m[k];
8837});
8838var __exportStar = this && this.__exportStar || function (m, exports) {
8839  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
8840};
8841Object.defineProperty(exports, "__esModule", ({
8842  value: true
8843}));
8844__exportStar(__webpack_require__(/*! ./free */ "./resources/js/components/free/free.tsx"), exports);
8845
8846/***/ }),
8847
vendor: 1,899 bytes, lines 8848-8889
8848/***/ "./resources/js/components/index.ts":
8849/*!******************************************!*\
8850  !*** ./resources/js/components/index.ts ***!
8851  \******************************************/
8852/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8853
8854"use strict";
8855
8856
8857var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8858  if (k2 === undefined) k2 = k;
8859  var desc = Object.getOwnPropertyDescriptor(m, k);
8860  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8861    desc = {
8862      enumerable: true,
8863      get: function get() {
8864        return m[k];
8865      }
8866    };
8867  }
8868  Object.defineProperty(o, k2, desc);
8869} : function (o, m, k, k2) {
8870  if (k2 === undefined) k2 = k;
8871  o[k2] = m[k];
8872});
8873var __exportStar = this && this.__exportStar || function (m, exports) {
8874  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
8875};
8876Object.defineProperty(exports, "__esModule", ({
8877  value: true
8878}));
8879__exportStar(__webpack_require__(/*! ./category-list */ "./resources/js/components/category-list/index.ts"), exports);
8880__exportStar(__webpack_require__(/*! ./flash-sale */ "./resources/js/components/flash-sale/index.ts"), exports);
8881__exportStar(__webpack_require__(/*! ./top-sale */ "./resources/js/components/top-sale/index.ts"), exports);
8882__exportStar(__webpack_require__(/*! ./products */ "./resources/js/components/products/index.ts"), exports);
8883__exportStar(__webpack_require__(/*! ./free */ "./resources/js/components/free/index.ts"), exports);
8884__exportStar(__webpack_require__(/*! ./new */ "./resources/js/components/new/index.ts"), exports);
8885__exportStar(__webpack_require__(/*! ./buy */ "./resources/js/components/buy/index.ts"), exports);
8886__exportStar(__webpack_require__(/*! ./every */ "./resources/js/components/every/index.ts"), exports);
8887
8888/***/ }),
8889
8890/***/ "./resources/js/components/new/index.ts":
8891/*!**********************************************!*\
8892  !*** ./resources/js/components/new/index.ts ***!
8893  \**********************************************/
8894/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8895
8896"use strict";
8897
8898
8899var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8900  if (k2 === undefined) k2 = k;
8901  var desc = Object.getOwnPropertyDescriptor(m, k);
8902  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8903    desc = {
8904      enumerable: true,
8905      get: function get() {
8906        return m[k];
8907      }
8908    };
8909  }
8910  Object.defineProperty(o, k2, desc);
8911} : function (o, m, k, k2) {
8912  if (k2 === undefined) k2 = k;
8913  o[k2] = m[k];
8914});
8915var __exportStar = this && this.__exportStar || function (m, exports) {
8916  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
8917};
8918Object.defineProperty(exports, "__esModule", ({
8919  value: true
8920}));
8921__exportStar(__webpack_require__(/*! ./new */ "./resources/js/components/new/new.tsx"), exports);
8922
8923/***/ }),
8924
8925/***/ "./resources/js/components/new/new.tsx":
8926/*!*********************************************!*\
8927  !*** ./resources/js/components/new/new.tsx ***!
8928  \*********************************************/
8929/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
8930
8931"use strict";
8932
8933
8934var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
8935  if (k2 === undefined) k2 = k;
8936  var desc = Object.getOwnPropertyDescriptor(m, k);
8937  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
8938    desc = {
8939      enumerable: true,
8940      get: function get() {
8941        return m[k];
8942      }
8943    };
8944  }
8945  Object.defineProperty(o, k2, desc);
8946} : function (o, m, k, k2) {
8947  if (k2 === undefined) k2 = k;
8948  o[k2] = m[k];
8949});
8950var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
8951  Object.defineProperty(o, "default", {
8952    enumerable: true,
8953    value: v
8954  });
8955} : function (o, v) {
8956  o["default"] = v;
8957});
8958var __importStar = this && this.__importStar || function (mod) {
8959  if (mod && mod.__esModule) return mod;
8960  var result = {};
8961  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
8962  __setModuleDefault(result, mod);
8963  return result;
8964};
8965var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
8966  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
8967    if (ar || !(i in from)) {
8968      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
8969      ar[i] = from[i];
8970    }
8971  }
8972  return to.concat(ar || Array.prototype.slice.call(from));
8973};
8974var __importDefault = this && this.__importDefault || function (mod) {
8975  return mod && mod.__esModule ? mod : {
8976    "default": mod
8977  };
8978};
8979Object.defineProperty(exports, "__esModule", ({
8980  value: true
8981}));
8982exports.New = void 0;
8983var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
8984var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
8985var New = function New(props) {
8986  var _a = (0, react_1.useState)([]),
8987    products = _a[0],
8988    setProducts = _a[1];
8989  var _b = (0, react_1.useState)(12),
8990    limit = _b[0],
8991    setLimit = _b[1];
8992  var _c = (0, react_1.useState)(0),
8993    offset = _c[0],
8994    setOffset = _c[1];
8995  (0, react_1.useEffect)(function () {
8996    axios_1["default"].get("/data/danh-sach-san-pham-tai-trang-chu?new=1&limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
8997      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
8998    });
8999  }, [limit, offset]);
9000  var viewMore = function viewMore() {
9001    setOffset(offset + limit);
9002  };
9003  return react_1["default"].createElement("div", {
9004    className: "section-content relative"
9005  }, react_1["default"].createElement("div", {
9006    className: "gap-element",
9007    style: {
9008      display: 'block',
9009      height: 'auto',
9010      paddingTop: '30px'
9011    }
9012  }), react_1["default"].createElement("div", {
9013    className: "row row-collapse",
9014    id: "row-1258137080"
9015  }, react_1["default"].createElement("div", {
9016    className: "col medium-12 small-12 large-12"
9017  }, react_1["default"].createElement("div", {
9018    className: "col-inner",
9019    style: {
9020      margin: '0px 0px -10px 0px'
9021    }
9022  }, react_1["default"].createElement("h3", {
9023    className: "orange"
9024  }, "S\u1EA3n ph\u1EA9m m\u1EDBi"))), react_1["default"].createElement("div", {
9025    className: "col small-12 large-12"
9026  }, react_1["default"].createElement("div", {
9027    className: "col-inner"
9028  }, react_1["default"].createElement("div", {
9029    className: "is-divider divider clearfix",
9030    style: {
9031      marginTop: '0.0em',
9032      marginBottom: '0.0em',
9033      maxWidth: '100%',
9034      backgroundColor: 'rgb(255, 83, 29)'
9035    }
9036  })))), react_1["default"].createElement("div", {
9037    className: "row row-collapse",
9038    id: "row-1557720083"
9039  }, react_1["default"].createElement("div", {
9040    className: "col small-12 large-12"
9041  }, react_1["default"].createElement("div", {
9042    className: "col-inner"
9043  }, react_1["default"].createElement("div", {
9044    className: "gap-element",
9045    style: {
9046      display: 'block',
9047      height: 'auto',
9048      paddingTop: '10px'
9049    }
9050  }), react_1["default"].createElement("div", {
9051    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-sha
9051dow-1",
9052    style: {
9053      marginLeft: '0px',
9054      marginRight: '0px'
9055    }
9056  }, products.map(function (product, index) {
9057    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
9058    if (product.image_list) {
9059      productImage = product.image_list.split(',')[0];
9060    } else if (product.image) {
9061      productImage = product.image;
9062    }
9063    return react_1["default"].createElement("div", {
9064      className: "col",
9065      key: index
9066    }, react_1["default"].createElement("div", {
9067      className: "col-inner"
9068    }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
9069      className: "badge-container absolute left top z-1"
9070    }, react_1["default"].createElement("div", {
9071      className: "callout badge badge-square"
9072    }, react_1["default"].createElement("div", {
9073      className: "badge-inner secondary on-sale"
9074    }, react_1["default"].createElement("span", {
9075      className: "onsale"
9076    }, "-", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
9077      className: "product-small box has-hover box-normal box-text-bottom"
9078    }, react_1["default"].createElement("div", {
9079      className: "box-image"
9080    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
9081      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
9082    }, react_1["default"].createElement("img", {
9083      width: 300,
9084      height: 300,
9085      src: productImage
9086    }))), react_1["default"].createElement("div", {
9087      className: "image-tools z-top top right show-on-hover"
9088    }), react_1["default"].createElement("div", {
9089      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
9090    })), react_1["default"].createElement("div", {
9091      className: "box-text"
9092    }, react_1["default"].createElement("div", {
9093      className: "title-wrapper"
9094    }, react_1["default"].createElement("p", {
9095      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
9096    }, product.category_string), react_1["default"].createElement("p", {
9097      className: "name product-title"
9098    }, react_1["default"].createElement("a", {
9099      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
9100    }, product.title)), react_1["default"].createElement("p", {
9101      className: ""
9102    }, react_1["default"].createElement("i", {
9103      className: "star fa fa-star",
9104      "aria-hidden": "true"
9105    }), product.star > 1 ? react_1["default"].createElement("i", {
9106      className: "star fa fa-star",
9107      "aria-hidden": "true"
9108    }) : react_1["default"].createElement("i", {
9109      className: "fa fa-star",
9110      "aria-hidden": "true"
9111    }), product.star > 2 ? react_1["default"].createElement("i", {
9112      className: "star fa fa-star",
9113      "aria-hidden": "true"
9114    }) : react_1["default"].createElement("i", {
9115      className: "fa fa-star",
9116      "aria-hidden": "true"
9117    }), product.star > 3 ? react_1["default"].createElement("i", {
9118      className: "star fa fa-star",
9119      "aria-hidden": "true"
9120    }) : react_1["default"].createElement("i", {
9121      className: "fa fa-star",
9122      "aria-hidden": "true"
9123    }), product.star > 4 ? react_1["default"].createElement("i", {
9124      className: "star fa fa-star",
9125      "aria-hidden": "true"
9126    }) : react_1["default"].createElement("i", {
9127      className: "fa fa-star",
9128      "aria-hidden": "true"
9129    })), react_1["default"].createElement("div", {
9130      className: "price-wrapper"
9131    }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("span", {
9132      className: "price"
9133    }, react_1["default"].createElement("del", {
9134      style: {
9135        "float": "left"
9136      }
9137    }, react_1["default"].createElement("span", {
9138      className: "woocommerce-Price-amount amount"
9139    }, new Intl.NumberFormat('vi-VN', {
9140      maximumSignificantDigits: 3
9141    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9142      className: "woocommerce-Price-currencySymbol"
9143    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
9144      style: {
9145        "float": "right"
9146      }
9147    }, react_1["default"].createElement("span", {
9148      className: "woocommerce-Price-amount amount",
9149      style: {
9150        color: "#f00",
9151        fontWeight: "bold"
9152      }
9153    }, new Intl.NumberFormat('vi-VN', {
9154      maximumSignificantDigits: 3
9155    }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
9156      className: "woocommerce-Price-currencySymbol"
9157    }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("span", {
9158      className: "price"
9159    }, react_1["default"].createElement("del", {
9160      style: {
9161        "float": "left"
9162      }
9163    }, react_1["default"].createElement("span", {
9164      className: "woocommerce-Price-amount amount"
9165    }, new Intl.NumberFormat('vi-VN', {
9166      maximumSignificantDigits: 3
9167    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9168      className: "woocommerce-Price-currencySymbol"
9169    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
9170      style: {
9171        "float": "right"
9172      }
9173    }, react_1["default"].createElement("span", {
9174      className: "woocommerce-Price-amount amount",
9175      style: {
9176        color: "#f00",
9177        fontWeight: "bold"
9178      }
9179    }, new Intl.NumberFormat('vi-VN', {
9180      maximumSignificantDigits: 3
9181    }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
9182      className: "woocommerce-Price-currencySymbol"
9183    }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("span", {
9184      className: "price"
9185    }, react_1["default"].createElement("ins", {
9186      style: {
9187        "float": "left"
9188      }
9189    }, react_1["default"].createElement("span", {
9190      className: "woocommerce-Price-amount amount"
9191    }, new Intl.NumberFormat('vi-VN', {
9192      maximumSignificantDigits: 3
9193    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9194      className: "woocommerce-Price-currencySymbol"
9195    }, "\u20AB"))))))))));
9196  }), ",")))), react_1["default"].createElement("div", {
9197    className: "row row-collapse",
9198    id: "row-1309925252"
9199  }, react_1["default"].createElement("div", {
9200    className: "col medium-4 small-12 large-4"
9201  }, react_1["default"].createElement("div", {
9202    className: "col-inner"
9203  })), react_1["default"].createElement("div", {
9204    className: "col medium-4 small-12 large-4"
9205  }, react_1["default"].createElement("div", {
9206    className: "col-inner text-center"
9207  }, react_1["default"].createElement("div", {
9208    className: "gap-element",
9209    style: {
9210      display: 'block',
9211      height: 'auto',
9212      paddingTop: '20px'
9213    }
9214  }), react_1["default"].createElement("button", {
9215    onClick: viewMore,
9216    className: "btn btn-outline btn-primary w-25"
9217  }, react_1["default"].createElement("span", null, "Xem th\xEAm")))
9217), react_1["default"].createElement("div", {
9218    className: "col medium-4 small-12 large-4"
9219  }, react_1["default"].createElement("div", {
9220    className: "col-inner"
9221  }))), react_1["default"].createElement("div", {
9222    className: "gap-element",
9223    style: {
9224      display: 'block',
9225      height: 'auto',
9226      paddingTop: '50px'
9227    }
9228  }));
9229};
9230exports.New = New;
9231
9232/***/ }),
9233
9234/***/ "./resources/js/components/products/index.ts":
9235/*!***************************************************!*\
9236  !*** ./resources/js/components/products/index.ts ***!
9237  \***************************************************/
9238/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9239
9240"use strict";
9241
9242
9243var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9244  if (k2 === undefined) k2 = k;
9245  var desc = Object.getOwnPropertyDescriptor(m, k);
9246  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9247    desc = {
9248      enumerable: true,
9249      get: function get() {
9250        return m[k];
9251      }
9252    };
9253  }
9254  Object.defineProperty(o, k2, desc);
9255} : function (o, m, k, k2) {
9256  if (k2 === undefined) k2 = k;
9257  o[k2] = m[k];
9258});
9259var __exportStar = this && this.__exportStar || function (m, exports) {
9260  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
9261};
9262Object.defineProperty(exports, "__esModule", ({
9263  value: true
9264}));
9265__exportStar(__webpack_require__(/*! ./products */ "./resources/js/components/products/products.tsx"), exports);
9266
9267/***/ }),
9268
9269/***/ "./resources/js/components/products/products.tsx":
9270/*!*******************************************************!*\
9271  !*** ./resources/js/components/products/products.tsx ***!
9272  \*******************************************************/
9273/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9274
9275"use strict";
9276
9277
9278var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9279  if (k2 === undefined) k2 = k;
9280  var desc = Object.getOwnPropertyDescriptor(m, k);
9281  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9282    desc = {
9283      enumerable: true,
9284      get: function get() {
9285        return m[k];
9286      }
9287    };
9288  }
9289  Object.defineProperty(o, k2, desc);
9290} : function (o, m, k, k2) {
9291  if (k2 === undefined) k2 = k;
9292  o[k2] = m[k];
9293});
9294var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
9295  Object.defineProperty(o, "default", {
9296    enumerable: true,
9297    value: v
9298  });
9299} : function (o, v) {
9300  o["default"] = v;
9301});
9302var __importStar = this && this.__importStar || function (mod) {
9303  if (mod && mod.__esModule) return mod;
9304  var result = {};
9305  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
9306  __setModuleDefault(result, mod);
9307  return result;
9308};
9309var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
9310  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
9311    if (ar || !(i in from)) {
9312      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
9313      ar[i] = from[i];
9314    }
9315  }
9316  return to.concat(ar || Array.prototype.slice.call(from));
9317};
9318var __importDefault = this && this.__importDefault || function (mod) {
9319  return mod && mod.__esModule ? mod : {
9320    "default": mod
9321  };
9322};
9323Object.defineProperty(exports, "__esModule", ({
9324  value: true
9325}));
9326exports.Products = void 0;
9327var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
9328var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
9329var Products = function Products(props) {
9330  var _a = (0, react_1.useState)([]),
9331    products = _a[0],
9332    setProducts = _a[1];
9333  var _b = (0, react_1.useState)(12),
9334    limit = _b[0],
9335    setLimit = _b[1];
9336  var _c = (0, react_1.useState)(0),
9337    offset = _c[0],
9338    setOffset = _c[1];
9339  (0, react_1.useEffect)(function () {
9340    __webpack_require__(/*! ./products.style.scss */ "./resources/js/components/products/products.style.scss");
9341  }, []);
9342  (0, react_1.useEffect)(function () {
9343    axios_1["default"].get("/data/danh-sach-san-pham-tai-trang-chu?limit=".concat(limit, "&offset=").concat(offset)).then(function (res) {
9344      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
9345    });
9346  }, [limit, offset]);
9347  var viewMore = function viewMore() {
9348    setOffset(offset + limit);
9349  };
9350  return react_1["default"].createElement("div", {
9351    className: "section-content relative"
9352  }, react_1["default"].createElement("div", {
9353    className: "gap-element",
9354    style: {
9355      display: 'block',
9356      height: 'auto',
9357      paddingTop: '30px'
9358    }
9359  }), react_1["default"].createElement("div", {
9360    className: "row row-collapse",
9361    id: "row-1258137080"
9362  }, react_1["default"].createElement("div", {
9363    className: "col medium-12 small-12 large-12"
9364  }, react_1["default"].createElement("div", {
9365    className: "col-inner",
9366    style: {
9367      margin: '0px 0px -10px 0px'
9368    }
9369  }, react_1["default"].createElement("h3", {
9370    className: "orange"
9371  }, "G\u1EE2I \xDD H\xD4M NAY"))), react_1["default"].createElement("div", {
9372    className: "col small-12 large-12"
9373  }, react_1["default"].createElement("div", {
9374    className: "col-inner"
9375  }, react_1["default"].createElement("div", {
9376    className: "is-divider divider clearfix",
9377    style: {
9378      marginTop: '0.0em',
9379      marginBottom: '0.0em',
9380      maxWidth: '100%',
9381      backgroundColor: 'rgb(255, 83, 29)'
9382    }
9383  })))), react_1["default"].createElement("div", {
9384    className: "row row-collapse",
9385    id: "row-1557720083"
9386  }, react_1["default"].createElement("div", {
9387    className: "col small-12 large-12"
9388  }, react_1["default"].createElement("div", {
9389    className: "col-inner"
9390  }, react_1["default"].createElement("div", {
9391    className: "gap-element",
9392    style: {
9393      display: 'block',
9394      height: 'auto',
9395      paddingTop: '10px'
9396    }
9397  }), react_1["default"].createElement("div", {
9398    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-sha
9398dow-1",
9399    style: {
9400      marginLeft: '0px',
9401      marginRight: '0px'
9402    }
9403  }, products.map(function (product, index) {
9404    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
9405    if (product.image_list) {
9406      productImage = product.image_list.split(',')[0];
9407    } else if (product.image) {
9408      productImage = product.image;
9409    }
9410    return react_1["default"].createElement("div", {
9411      className: "col",
9412      key: index
9413    }, react_1["default"].createElement("div", {
9414      className: "col-inner"
9415    }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
9416      className: "badge-container absolute left top z-1"
9417    }, react_1["default"].createElement("div", {
9418      className: "callout badge badge-square"
9419    }, react_1["default"].createElement("div", {
9420      className: "badge-inner secondary on-sale"
9421    }, react_1["default"].createElement("span", {
9422      className: "onsale"
9423    }, "-", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
9424      className: "product-small box has-hover box-normal box-text-bottom"
9425    }, react_1["default"].createElement("div", {
9426      className: "box-image"
9427    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
9428      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
9429    }, react_1["default"].createElement("img", {
9430      width: 300,
9431      height: 300,
9432      src: productImage
9433    }))), react_1["default"].createElement("div", {
9434      className: "image-tools z-top top right show-on-hover"
9435    }), react_1["default"].createElement("div", {
9436      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
9437    })), react_1["default"].createElement("div", {
9438      className: "box-text"
9439    }, react_1["default"].createElement("div", {
9440      className: "title-wrapper"
9441    }, react_1["default"].createElement("p", {
9442      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
9443    }, product.category_string), react_1["default"].createElement("p", {
9444      className: "name product-title"
9445    }, react_1["default"].createElement("a", {
9446      href: '/chi-tiet-san-pham/' + product.slug + '?user_email=' + product.user_email
9447    }, product.title)), react_1["default"].createElement("p", {
9448      className: ""
9449    }, react_1["default"].createElement("i", {
9450      className: "star fa fa-star",
9451      "aria-hidden": "true"
9452    }), product.star > 1 ? react_1["default"].createElement("i", {
9453      className: "star fa fa-star",
9454      "aria-hidden": "true"
9455    }) : react_1["default"].createElement("i", {
9456      className: "fa fa-star",
9457      "aria-hidden": "true"
9458    }), product.star > 2 ? react_1["default"].createElement("i", {
9459      className: "star fa fa-star",
9460      "aria-hidden": "true"
9461    }) : react_1["default"].createElement("i", {
9462      className: "fa fa-star",
9463      "aria-hidden": "true"
9464    }), product.star > 3 ? react_1["default"].createElement("i", {
9465      className: "star fa fa-star",
9466      "aria-hidden": "true"
9467    }) : react_1["default"].createElement("i", {
9468      className: "fa fa-star",
9469      "aria-hidden": "true"
9470    }), product.star > 4 ? react_1["default"].createElement("i", {
9471      className: "star fa fa-star",
9472      "aria-hidden": "true"
9473    }) : react_1["default"].createElement("i", {
9474      className: "fa fa-star",
9475      "aria-hidden": "true"
9476    })), react_1["default"].createElement("div", {
9477      className: "price-wrapper"
9478    }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("span", {
9479      className: "price"
9480    }, react_1["default"].createElement("del", {
9481      style: {
9482        "float": "left"
9483      }
9484    }, react_1["default"].createElement("span", {
9485      className: "woocommerce-Price-amount amount"
9486    }, new Intl.NumberFormat('vi-VN', {
9487      maximumSignificantDigits: 3
9488    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9489      className: "woocommerce-Price-currencySymbol"
9490    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
9491      style: {
9492        "float": "right"
9493      }
9494    }, react_1["default"].createElement("span", {
9495      className: "woocommerce-Price-amount amount",
9496      style: {
9497        color: "#f00",
9498        fontWeight: "bold"
9499      }
9500    }, new Intl.NumberFormat('vi-VN', {
9501      maximumSignificantDigits: 3
9502    }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
9503      className: "woocommerce-Price-currencySymbol"
9504    }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("span", {
9505      className: "price"
9506    }, react_1["default"].createElement("del", {
9507      style: {
9508        "float": "left"
9509      }
9510    }, react_1["default"].createElement("span", {
9511      className: "woocommerce-Price-amount amount"
9512    }, new Intl.NumberFormat('vi-VN', {
9513      maximumSignificantDigits: 3
9514    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9515      className: "woocommerce-Price-currencySymbol"
9516    }, "\u20AB"))), " ", react_1["default"].createElement("ins", {
9517      style: {
9518        "float": "right"
9519      }
9520    }, react_1["default"].createElement("span", {
9521      className: "woocommerce-Price-amount amount",
9522      style: {
9523        color: "#f00",
9524        fontWeight: "bold"
9525      }
9526    }, new Intl.NumberFormat('vi-VN', {
9527      maximumSignificantDigits: 3
9528    }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
9529      className: "woocommerce-Price-currencySymbol"
9530    }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("span", {
9531      className: "price"
9532    }, react_1["default"].createElement("ins", {
9533      style: {
9534        "float": "left"
9535      }
9536    }, react_1["default"].createElement("span", {
9537      className: "woocommerce-Price-amount amount"
9538    }, new Intl.NumberFormat('vi-VN', {
9539      maximumSignificantDigits: 3
9540    }).format(product.price), "\xA0", react_1["default"].createElement("span", {
9541      className: "woocommerce-Price-currencySymbol"
9542    }, "\u20AB"))))))))));
9543  }), ",")))), react_1["default"].createElement("div", {
9544    className: "row row-collapse",
9545    id: "row-1309925252"
9546  }, react_1["default"].createElement("div", {
9547    className: "col medium-4 small-12 large-4"
9548  }, react_1["default"].createElement("div", {
9549    className: "col-inner"
9550  })), react_1["default"].createElement("div", {
9551    className: "col medium-4 small-12 large-4"
9552  }, react_1["default"].createElement("div", {
9553    className: "col-inner text-center"
9554  }, react_1["default"].createElement("div", {
9555    className: "gap-element",
9556    style: {
9557      display: 'block',
9558      height: 'auto',
9559      paddingTop: '20px'
9560    }
9561  }), react_1["default"].createElement("button", {
9562    onClick: viewMore,
9563    className: "btn btn-outline btn-primary w-25"
9564  }, react_1["default"].createElement("span", null, "Xem th\xEAm")))
9564), react_1["default"].createElement("div", {
9565    className: "col medium-4 small-12 large-4"
9566  }, react_1["default"].createElement("div", {
9567    className: "col-inner"
9568  }))), react_1["default"].createElement("div", {
9569    className: "gap-element",
9570    style: {
9571      display: 'block',
9572      height: 'auto',
9573      paddingTop: '50px'
9574    }
9575  }));
9576};
9577exports.Products = Products;
9578
9579/***/ }),
9580
9581/***/ "./resources/js/components/quick-action-shop/index.ts":
9582/*!************************************************************!*\
9583  !*** ./resources/js/components/quick-action-shop/index.ts ***!
9584  \************************************************************/
9585/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9586
9587"use strict";
9588
9589
9590var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9591  if (k2 === undefined) k2 = k;
9592  var desc = Object.getOwnPropertyDescriptor(m, k);
9593  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9594    desc = {
9595      enumerable: true,
9596      get: function get() {
9597        return m[k];
9598      }
9599    };
9600  }
9601  Object.defineProperty(o, k2, desc);
9602} : function (o, m, k, k2) {
9603  if (k2 === undefined) k2 = k;
9604  o[k2] = m[k];
9605});
9606var __exportStar = this && this.__exportStar || function (m, exports) {
9607  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
9608};
9609Object.defineProperty(exports, "__esModule", ({
9610  value: true
9611}));
9612__exportStar(__webpack_require__(/*! ./quick-action */ "./resources/js/components/quick-action-shop/quick-action.tsx"), exports);
9613
9614/***/ }),
9615
9616/***/ "./resources/js/components/quick-action-shop/quick-action.tsx":
9617/*!********************************************************************!*\
9618  !*** ./resources/js/components/quick-action-shop/quick-action.tsx ***!
9619  \********************************************************************/
9620/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9621
9622"use strict";
9623
9624
9625var __importDefault = this && this.__importDefault || function (mod) {
9626  return mod && mod.__esModule ? mod : {
9627    "default": mod
9628  };
9629};
9630Object.defineProperty(exports, "__esModule", ({
9631  value: true
9632}));
9633exports.QuickAction = void 0;
9634var react_1 = __importDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
9635var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
9636// import stylesheet
9637__webpack_require__(/*! ./quick-action.scss */ "./resources/js/components/quick-action-shop/quick-action.scss");
9638var QuickAction = function QuickAction(props) {
9639  var addToCart = function addToCart(event) {
9640    event.preventDefault();
9641    axios_1["default"].get("/them-vao-gio-hang/".concat(props.slug, "?product_id=").concat(props.product_id, "&price=").concat(props.product_price, "&amount=").concat(props.amount, "&source=moma")).then(function (resp) {
9642      var _a;
9643      var msg = null;
9644      if (!isNaN(resp.data.qty)) {
9645        var cartBadge = (_a = document.getElementById('cart-btn')) === null || _a === void 0 ? void 0 : _a.firstElementChild;
9646        if (cartBadge) cartBadge.innerHTML = resp.data.qty;
9647      }
9648      msg = resp.data.msg;
9649      if (msg) {
9650        alert(msg);
9651      }
9652      location.reload();
9653    });
9654  };
9655  var addToCartNow = function addToCartNow(event) {
9656    event.preventDefault();
9657    axios_1["default"].get("/them-vao-gio-hang/".concat(props.slug, "?product_id=").concat(props.product_id, "&price=").concat(props.product_price, "&amount=").concat(props.amount, "&source=moma")).then(function (resp) {
9658      var _a;
9659      var msg = null;
9660      console.log(resp.data, 'resp.data');
9661      if (!isNaN(resp.data.qty)) {
9662        var cartBadge = (_a = document.getElementById('cart-btn')) === null || _a === void 0 ? void 0 : _a.firstElementChild;
9663        if (cartBadge) cartBadge.innerHTML = resp.data.qty;
9664      }
9665      msg = resp.data.msg;
9666      if (msg) {
9667        alert(msg);
9668      }
9669      console.log(msg, 'msg');
9670      location.href = '/kiem-tra-gio-hang';
9671    });
9672  };
9673  return react_1["default"].createElement("section", {
9674    id: "shop_quick_action",
9675    className: 'showMb'
9676  }, react_1["default"].createElement("div", {
9677    className: "quick-action-content"
9678  }, react_1["default"].createElement("div", {
9679    className: "add-to-cart",
9680    onClick: addToCart
9681  }, react_1["default"].createElement("i", {
9682    className: "fa fa-shopping-cart"
9683  })), react_1["default"].createElement("div", {
9684    className: "buy-now",
9685    onClick: addToCartNow
9686  }, react_1["default"].createElement("span", null, "Mua ngay"))));
9687};
9688exports.QuickAction = QuickAction;
9689
9690/***/ }),
9691
9692/***/ "./resources/js/components/top-sale/index.ts":
9693/*!***************************************************!*\
9694  !*** ./resources/js/components/top-sale/index.ts ***!
9695  \***************************************************/
9696/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9697
9698"use strict";
9699
9700
9701var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9702  if (k2 === undefined) k2 = k;
9703  var desc = Object.getOwnPropertyDescriptor(m, k);
9704  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9705    desc = {
9706      enumerable: true,
9707      get: function get() {
9708        return m[k];
9709      }
9710    };
9711  }
9712  Object.defineProperty(o, k2, desc);
9713} : function (o, m, k, k2) {
9714  if (k2 === undefined) k2 = k;
9715  o[k2] = m[k];
9716});
9717var __exportStar = this && this.__exportStar || function (m, exports) {
9718  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
9719};
9720Object.defineProperty(exports, "__esModule", ({
9721  value: true
9722}));
9723__exportStar(__webpack_require__(/*! ./top-sale */ "./resources/js/components/top-sale/top-sale.tsx"), exports);
9724
9725/***/ }),
9726
9727/***/ "./resources/js/components/top-sale/top-sale.tsx":
9728/*!*******************************************************!*\
9729  !*** ./resources/js/components/top-sale/top-sale.tsx ***!
9730  \*******************************************************/
9731/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9732
9733"use strict";
9734
9735
9736var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9737  if (k2 === undefined) k2 = k;
9738  var desc = Object.getOwnPropertyDescriptor(m, k);
9739  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9740    desc = {
9741      enumerable: true,
9742      get: function get() {
9743        return m[k];
9744      }
9745    };
9746  }
9747  Object.defineProperty(o, k2, desc);
9748} : function (o, m, k, k2) {
9749  if (k2 === undefined) k2 = k;
9750  o[k2] = m[k];
9751});
9752var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
9753  Object.defineProperty(o, "default", {
9754    enumerable: true,
9755    value: v
9756  });
9757} : function (o, v) {
9758  o["default"] = v;
9759});
9760var __importStar = this && this.__importStar || function (mod) {
9761  if (mod && mod.__esModule) return mod;
9762  var result = {};
9763  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
9764  __setModuleDefault(result, mod);
9765  return result;
9766};
9767Object.defineProperty(exports, "__esModule", ({
9768  value: true
9769}));
9770exports.TopSale = void 0;
9771var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
9772var ramda_1 = __webpack_require__(/*! ramda */ "./node_modules/ramda/src/index.js");
9773var TopSale = function TopSale(props) {
9774  (0, react_1.useEffect)(function () {
9775    __webpack_require__(/*! ./top-sale.style.scss */ "./resources/js/components/top-sale/top-sale.style.scss");
9776  }, []);
9777  return react_1["default"].createElement("section", {
9778    className: "section san_pham_pho_bien",
9779    id: "section_1404511622"
9780  }, react_1["default"].createElement("div", {
9781    className: "bg section-bg fill bg-fill  bg-loaded"
9782  }), react_1["default"].createElement("div", {
9783    className: "section-content relative"
9784  }, react_1["default"].createElement("div", {
9785    className: "gap-element",
9786    style: {
9787      display: 'block',
9788      height: 'auto',
9789      paddingTop: '30px'
9790    }
9791  }), react_1["default"].createElement("div", {
9792    className: "row row-collapse",
9793    id: "row-312335120"
9794  }, react_1["default"].createElement("div", {
9795    className: "col medium-2 small-12 large-2"
9796  }, react_1["default"].createElement("div", {
9797    className: "col-inner"
9798  }, react_1["default"].createElement("h3", null, "S\u1EA2N PH\u1EA8M PH\u1ED4 BI\u1EBEN"))), react_1["default"].createElement("div", {
9799    className: "col medium-6 small-12 large-6"
9800  }, react_1["default"].createElement("div", {
9801    className: "col-inner"
9802  }, react_1["default"].createElement("p", null, "\u0110\xE3 c\u1EADp nh\u1EADt 11AM"))), react_1["default"].createElement("div", {
9803    className: "col medium-4 small-12 large-4"
9804  }, react_1["default"].createElement("div", {
9805    className: "col-inner text-right"
9806  }, react_1["default"].createElement("p", {
9807    className: "orange"
9808  }, react_1["default"].createElement("a", {
9809    href: "/san-pham/demo"
9810  }, "Xem T\u1EA5t C\u1EA3 >"))))), react_1["default"].createElement("div", {
9811    className: "row row-collapse",
9812    id: "row-699400869"
9813  }, react_1["default"].createElement("div", {
9814    className: "col small-12 large-12"
9815  }, react_1["default"].createElement("div", {
9816    className: "col-inner"
9817  }, react_1["default"].createElement("div", {
9818    className: "row large-columns-6 medium-columns-3 small-columns-2 row-xsmall row-full-width has-shadow row-box-shadow-1 slider row-slider slider-nav-reveal slider-nav-push flickity-enabled is-draggable",
9819    "data-flickity-options": "{\"imagesLoaded\": true, \"groupCells\": \"100%\", \"dragThreshold\" : 5, \"cellAlign\": \"left\",\"wrapAround\": true,\"prevNextButtons\": true,\"percentPosition\": true,\"pageDots\": false, \"rightToLeft\": false, \"autoPlay\" : false}",
9820    tabIndex: 0
9821  }, react_1["default"].createElement("div", {
9822    className: "flickity-viewport",
9823    style: {
9824      height: '349px'
9825    }
9826  }, react_1["default"].createElement("div", {
9827    className: "flickity-slider"
9828  }, (0, ramda_1.times)(function () {
9829    return react_1["default"].createElement("div", {
9830      className: "col is-selected"
9831    }, react_1["default"].createElement("div", {
9832      className: "col-inner"
9833    }, react_1["default"].createElement("div", {
9834      className: "badge-container absolute left top z-1"
9835    }, react_1["default"].createElement("div", {
9836      className: "callout badge badge-square"
9837    }, react_1["default"].createElement("div", {
9838      className: "badge-inner secondary on-sale"
9839    }, react_1["default"].createElement("span", {
9840      className: "onsale"
9841    }, "-50%")))), react_1["default"].createElement("div", {
9842      className: "product-small box has-hover box-normal box-text-bottom"
9843    }, react_1["default"].createElement("div", {
9844      className: "box-image"
9845    }, react_1["default"].createElement("div", null, react_1["default"].createElement("a", {
9846      href: "/san-pham/demo"
9847    }, react_1["default"].createElement("img", {
9848      width: 300,
9849      height: 300,
9850      src: "https://moma.com.vn/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg",
9851      sizes: "(max-width: 960px) 100vw, 960px"
9852    }), "\t\t\t\t\t\t\t\t\t")), react_1["default"].createElement("div", {
9853      className: "image-tools z-top top right show-on-hover"
9854    }), react_1["default"].createElement("div", {
9855      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
9856    })), react_1["default"].createElement("div", {
9857      className: "box-text text-center"
9858    }, react_1["default"].createElement("div", {
9859      className: "title-wrapper"
9860    }, react_1["default"].createElement("p", {
9861      className: "category uppercase is-smaller no-text-overflow product-cat op-7"
9862    }, "\xC1o"), react_1["default"].createElement("p", {
9863      className: "name product-title"
9864    }, react_1["default"].createElement("a", {
9865      href: "/san-pham/demo"
9866    }, "\xC1o s\u01A1 mi caro k\xE8m belt")), react_1["default"].createElement("span", {
9867      className: "price"
9868    }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
9869      className: "woocommerce-Price-amount amount"
9870    }, "290,000\xA0", react_1["default"].createElement("span", {
9871      className: "woocommerce-Price-currencySymbol"
9872    }, "\u20AB"))), react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
9873      className: "woocommerce-Price-amount amount"
9874    }, "145,000\xA0", react_1["default"].createElement("span", {
9875      className: "woocommerce-Price-currencySymbol"
9876    }, "\u20AB")))))))));
9877  }, 18)))), react_1["default"].createElement("button", {
9878    className: "flickity-prev-next-button previous",
9879    type: "button",
9880    "aria-label": "previous"
9881  }, react_1["default"].createElement("svg", {
9882    viewBox: "0 0 100 100"
9883  }, react_1["default"].createElement("path", {
9884    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
9885    className: "arrow"
9886  }))), react_1["default"].createElement("button", {
9887    className: "flickity-prev-next-button next",
9888    type: "button",
9889    "aria-label": "next"
9890  }, react_1["default"].createElement("svg", {
9891    viewBox: "0 0 100 100"
9892  }, react_1["default"].createElement("path", {
9893    d: "M 10,50 L 60,100 L 70,90 L 30,50  L 70,10 L 60,0 Z",
9894    className: "arrow",
9895    transform: "translate(100, 100) rotate(180) "
9896  }))))))));
9897};
9898exports.TopSale = TopSale;
9899
9900/***/ }),
9901
9902/***/ "./resources/js/index.tsx":
9903/*!********************************!*\
9904  !*** ./resources/js/index.tsx ***!
9905  \********************************/
9906/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9907
9908"use strict";
9909
9910
9911var __importDefault = this && this.__importDefault || function (mod) {
9912  return mod && mod.__esModule ? mod : {
9913    "default": mod
9914  };
9915};
9916Object.defineProperty(exports, "__esModule", ({
9917  value: true
9918}));
9919var react_1 = __importDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
9920var react_dom_1 = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js");
9921var react_router_dom_1 = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
9922// import ReactShadowRoot from "react-shadow-root";
9923var app_1 = __webpack_require__(/*! ./app */ "./resources/js/app/index.ts");
9924__webpack_require__(/*! ../sass/index.scss */ "./resources/sass/index.scss");
9925(0, react_dom_1.render)(
9926// <ReactShadowRoot>
9927// <BrowserRouter>
9928//   <App />
9929// </BrowserRouter>
9930// </ReactShadowRoot>,
9931react_1["default"].createElement(react_router_dom_1.BrowserRouter, null, react_1["default"].createElement(app_1.App, null)), document.getElementById("root-app"));
9932
9933/***/ }),
9934
9935/***/ "./resources/js/scence/category-product.tsx":
9936/*!**************************************************!*\
9937  !*** ./resources/js/scence/category-product.tsx ***!
9938  \**************************************************/
9939/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
9940
9941"use strict";
9942
9943
9944var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
9945  if (k2 === undefined) k2 = k;
9946  var desc = Object.getOwnPropertyDescriptor(m, k);
9947  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
9948    desc = {
9949      enumerable: true,
9950      get: function get() {
9951        return m[k];
9952      }
9953    };
9954  }
9955  Object.defineProperty(o, k2, desc);
9956} : function (o, m, k, k2) {
9957  if (k2 === undefined) k2 = k;
9958  o[k2] = m[k];
9959});
9960var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
9961  Object.defineProperty(o, "default", {
9962    enumerable: true,
9963    value: v
9964  });
9965} : function (o, v) {
9966  o["default"] = v;
9967});
9968var __importStar = this && this.__importStar || function (mod) {
9969  if (mod && mod.__esModule) return mod;
9970  var result = {};
9971  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
9972  __setModuleDefault(result, mod);
9973  return result;
9974};
9975var __spreadArray = this && this.__spreadArray || function (to, from, pack) {
9976  if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
9977    if (ar || !(i in from)) {
9978      if (!ar) ar = Array.prototype.slice.call(from, 0, i);
9979      ar[i] = from[i];
9980    }
9981  }
9982  return to.concat(ar || Array.prototype.slice.call(from));
9983};
9984var __importDefault = this && this.__importDefault || function (mod) {
9985  return mod && mod.__esModule ? mod : {
9986    "default": mod
9987  };
9988};
9989Object.defineProperty(exports, "__esModule", ({
9990  value: true
9991}));
9992exports.CategoryProduct = void 0;
9993var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
9994var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
9995var react_router_dom_1 = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
9996var CategoryProduct = function CategoryProduct() {
9997  var params = (0, react_router_dom_1.useParams)();
9998  var _a = (0, react_1.useState)({}),
9999    category = _a[0],
10000    setCategory = _a[1];
10001  var _b = (0, react_1.useState)([]),
10002    products = _b[0],
10003    setProducts = _b[1];
10004  var _c = (0, react_1.useState)(16),
10005    limit = _c[0],
10006    setLimit = _c[1];
10007  var _d = (0, react_1.useState)(0),
10008    offset = _d[0],
10009    setOffset = _d[1];
10010  (0, react_1.useEffect)(function () {
10011    axios_1["default"].get("/data/chi-tiet-loai-san-pham/".concat(params.slug)).then(function (res) {
10012      setCategory(res.data);
10013    });
10014    axios_1["default"].get("/data/danh-sach-san-pham-theo-loai-san-pham/".concat(params.slug, "?limit=").concat(limit, "&offset=").concat(offset)).then(function (res) {
10015      setProducts(__spreadArray(__spreadArray([], products, true), res.data, true));
10016    });
10017  }, [limit, offset]);
10018  var viewMore = function viewMore() {
10019    setOffset(offset + limit);
10020  };
10021  return react_1["default"].createElement("div", {
10022    className: "shop-container container"
10023  }, react_1["default"].createElement("main", {
10024    id: "main"
10025  }, react_1["default"].createElement("h1", null, category.title), react_1["default"].createElement("div", {
10026    className: "row category-page-row"
10027  }, react_1["default"].createElement("div", {
10028    className: "col large-12"
10029  }, react_1["default"].createElement("div", {
10030    className: "products row row-small large-columns-4 medium-columns-3 small-columns-2 has-shadow row-box-shadow-1"
10031  }, products.map(function (product, index) {
10032    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
10033    if (product.image_list) {
10034      productImage = product.image_list.split(',')[0];
10035    } else if (product.image) {
10036      productImage = product.image;
10037    }
10038    return react_1["default"].createElement("div", {
10039      key: index,
10040      className: "product-small col has-hover post-135 product type-product status-publish has-post-thumbnail product_cat-ao-thun product_cat-thoi-trang-nam first instock shipping-taxable purchasable product-type-simple"
10041    }, react_1["default"].createElement("div", {
10042      className: "col-inner"
10043    }, react_1["default"].createElement("div", {
10044      className: "badge-container absolute left top z-1"
10045    }), react_1["default"].createElement("div", {
10046      className: "product-small box "
10047    }, react_1["default"].createElement("div", {
10048      className: "box-image"
10049    }, react_1["default"].createElement("div", {
10050      className: "image-fade_in_back"
10051    }, react_1["default"].createElement("a", {
10052      href: '/chi-tiet-san-pham/' + product.slug
10053    }, react_1["default"].createElement("img", {
10054      width: 300,
10055      height: 300,
10056      src: productImage
10057    }
10057))), react_1["default"].createElement("div", {
10058      className: "image-tools is-small top right show-on-hover"
10059    }), react_1["default"].createElement("div", {
10060      className: "image-tools is-small hide-for-small bottom left show-on-hover"
10061    }), react_1["default"].createElement("div", {
10062      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
10063    })), react_1["default"].createElement("div", {
10064      className: "box-text box-text-products text-center grid-style-2"
10065    }, react_1["default"].createElement("p", null, product.category_string), react_1["default"].createElement("div", {
10066      className: "title-wrapper"
10067    }, react_1["default"].createElement("p", {
10068      className: "name product-title"
10069    }, react_1["default"].createElement("a", {
10070      href: '/chi-tiet-san-pham/' + product.slug
10071    }, product.title))), react_1["default"].createElement("div", {
10072      className: "price-wrapper"
10073    }, product.discount > 0 && react_1["default"].createElement("span", {
10074      className: "price"
10075    }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
10076      className: "woocommerce-Price-amount amount"
10077    }, product.price, "\xA0", react_1["default"].createElement("span", {
10078      className: "woocommerce-Price-currencySymbol"
10079    }, "\u20AB"))), " ", react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10080      className: "woocommerce-Price-amount amount"
10081    }, product.discount, "\xA0", react_1["default"].createElement("span", {
10082      className: "woocommerce-Price-currencySymbol"
10083    }, "\u20AB")))), product.discount <= 0 && react_1["default"].createElement("span", {
10084      className: "price"
10085    }, react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10086      className: "woocommerce-Price-amount amount"
10087    }, product.price, "\xA0", react_1["default"].createElement("span", {
10088      className: "woocommerce-Price-currencySymbol"
10089    }, "\u20AB")))))))));
10090  })))), react_1["default"].createElement("div", {
10091    className: 'd-flex justify-content-end'
10092  }, react_1["default"].createElement("button", {
10093    onClick: viewMore
10094  }, "Xem th\xEAm"))));
10095};
10096exports.CategoryProduct = CategoryProduct;
10097
10098/***/ }),
10099
10100/***/ "./resources/js/scence/home.tsx":
10101/*!**************************************!*\
10102  !*** ./resources/js/scence/home.tsx ***!
10103  \**************************************/
10104/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
10105
10106"use strict";
10107
10108
10109var __importDefault = this && this.__importDefault || function (mod) {
10110  return mod && mod.__esModule ? mod : {
10111    "default": mod
10112  };
10113};
10114Object.defineProperty(exports, "__esModule", ({
10115  value: true
10116}));
10117exports.Home = void 0;
10118var react_1 = __importDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
10119var components_1 = __webpack_require__(/*! ../components */ "./resources/js/components/index.ts");
10120var Home = function Home() {
10121  return react_1["default"].createElement("div", {
10122    className: "shop-container"
10123  }, react_1["default"].createElement(components_1.CategoryList, null), react_1["default"].createElement(components_1.Products, null), react_1["default"].createElement(components_1.Free, null), react_1["default"].createElement(components_1.New, null), react_1["default"].createElement(components_1.Buy, null), react_1["default"].createElement(components_1.Every, null));
10124};
10125exports.Home = Home;
10126
10127/***/ }),
10128
10129/***/ "./resources/js/scence/product-detail.tsx":
10130/*!************************************************!*\
10131  !*** ./resources/js/scence/product-detail.tsx ***!
10132  \************************************************/
10133/***/ (function(__unused_webpack_module, exports, __webpack_require__) {
10134
10135"use strict";
10136
10137
10138var __createBinding = this && this.__createBinding || (Object.create ? function (o, m, k, k2) {
10139  if (k2 === undefined) k2 = k;
10140  var desc = Object.getOwnPropertyDescriptor(m, k);
10141  if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
10142    desc = {
10143      enumerable: true,
10144      get: function get() {
10145        return m[k];
10146      }
10147    };
10148  }
10149  Object.defineProperty(o, k2, desc);
10150} : function (o, m, k, k2) {
10151  if (k2 === undefined) k2 = k;
10152  o[k2] = m[k];
10153});
10154var __setModuleDefault = this && this.__setModuleDefault || (Object.create ? function (o, v) {
10155  Object.defineProperty(o, "default", {
10156    enumerable: true,
10157    value: v
10158  });
10159} : function (o, v) {
10160  o["default"] = v;
10161});
10162var __importStar = this && this.__importStar || function (mod) {
10163  if (mod && mod.__esModule) return mod;
10164  var result = {};
10165  if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
10166  __setModuleDefault(result, mod);
10167  return result;
10168};
10169var __importDefault = this && this.__importDefault || function (mod) {
10170  return mod && mod.__esModule ? mod : {
10171    "default": mod
10172  };
10173};
10174Object.defineProperty(exports, "__esModule", ({
10175  value: true
10176}));
10177exports.ProductDetail = void 0;
10178var react_1 = __importStar(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
10179var axios_1 = __importDefault(__webpack_require__(/*! axios */ "./node_modules/axios/index.js"));
10180var react_router_dom_1 = __webpack_require__(/*! react-router-dom */ "./node_modules/react-router-dom/dist/index.js");
10181var react_share_1 = __webpack_require__(/*! react-share */ "./node_modules/react-share/es/index.js");
10182var react_helmet_1 = __webpack_require__(/*! react-helmet */ "./node_modules/react-helmet/es/Helmet.js");
10183var react_copy_to_clipboard_1 = __webpack_require__(/*! react-copy-to-clipboard */ "./node_modules/react-copy-to-clipboard/lib/index.js");
10184var quick_action_shop_1 = __webpack_require__(/*! ../components/quick-action-shop */ "./resources/js/components/quick-action-shop/index.ts");
10185var ProductDetail = function ProductDetail() {
10186  var params = (0, react_router_dom_1.useParams)();
10187  var _a = (0, react_1.useState)({}),
10188    product = _a[0],
10189    setProduct = _a[1];
10190  var _b = (0, react_1.useState)([]),
10191    categories = _b[0],
10192    setCategories = _b[1];
10193  var _c = (0, react_1.useState)([]),
10194    images = _c[0],
10195    setImages = _c[1];
10196  var _d = (0, react_1.useState)(0),
10197    selectedImage = _d[0],
10198    setSelectedImage = _d[1];
10199  var _e = (0, react_1.useState)([]),
10200    similarProducts = _e[0],
10201    setSimilarProducts = _e[1];
10202  var _f = (0, react_1.useState)(null),
10203    affiliateContact = _f[0],
10204    setAffiliateContact = _f[1];
10205  var _g = (0, react_1.useState)('Copy'),
10206    textCP = _g[0],
10207    setTextCP = _g[1];
10208  (0, react_1.useEffect)(function () {
10209    axios_1["default"].get("/data/chi-tiet-san-pham/".concat(params.slug)).then(function (res) {
10210      console.log(res.data.product);
10211      setProduct(res.data.product);
10212      setCategories(res.data.categories);
10213      setSimilarProducts(res.data.similarProducts);
10214      setAffiliateContact(res.data.affiliateContact);
10215      if (res.data.product.image_list) {
10216        setImages(res.data.product.image_list.split(','));
10217      } else if (res.data.product.image) {
10218        setImages([res.data.product.image]);
10219      } else {
10220        setImages(['/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg']);
10221      }
10222    });
10223  }, []);
10224  var _h = (0, react_1.useState)(1),
10225    amount = _h[0],
10226    setAmount = _h[1];
10227  var addMore = function addMore(num) {
10228    return function () {
10229      if (amount + num < 1) return;
10230      setAmount(amount + num);
10231    };
10232  };
10233  var addToCart = function addToCart(event) {
10234    event.preventDefault();
10235    axios_1["default"].get("/them-vao-gio-hang/".concat(params.slug, "?product_id=").concat(product.product_id, "&price=").concat(product.price, "&amount=").concat(amount, "&source=moma")).then(function (resp) {
10236      var _a;
10237      var msg = null;
10238      if (!isNaN(resp.data.qty)) {
10239        var cartBadge = (_a = document.getElementById('cart-btn')) === null || _a === void 0 ? void 0 : _a.firstElementChild;
10240        if (cartBadge) cartBadge.innerHTML = resp.data.qty;
10241      }
10242      msg = resp.data.msg;
10243      if (msg) {
10244        alert(msg);
10245      }
10246      location.reload();
10247    });
10248  };
10249  var addToCartNow = function addToCartNow(event) {
10250    event.preventDefault();
10251    axios_1["default"].get("/them-vao-gio-hang/".concat(params.slug, "?product_id=").concat(product.product_id, "&price=").concat(product.price, "&amount=").concat(amount, "&source=moma")).then(function (resp) {
10252      var _a;
10253      var msg = null;
10254      console.log(resp.data, 'resp.data');
10255      if (!isNaN(resp.data.qty)) {
10256        var cartBadge = (_a = document.getElementById('cart-btn')) === null || _a === void 0 ? void 0 : _a.firstElementChild;
10257        if (cartBadge) cartBadge.innerHTML = resp.data.qty;
10258      }
10259      msg = resp.data.msg;
10260      if (msg) {
10261        alert(msg);
10262      }
10263      console.log(msg, 'msg');
10264      location.href = '/kiem-tra-gio-hang';
10265    });
10266  };
10267  function copyright() {
10268    setTextCP('copied!');
10269  }
10270  return react_1["default"].createElement(react_1["default"].Fragment, null, react_1["default"].createElement(quick_action_shop_1.QuickAction, {
10271    slug: params.slug,
10272    product_id: product.product_id,
10273    product_price: product.price,
10274    amount: amount
10275  }), react_1["default"].createElement("main", {
10276    id: "main"
10277  }, react_1["default"].createElement("div", {
10278    className: "shop-container"
10279  }, react_1["default"].createElement("div", {
10280    id: "product-139",
10281    className: "post-139 product type-product status-publish has-post-thumbnail product_cat-ao product_cat-thoi-trang-nu first instock sale shipping-taxable purchasable product-type-simple"
10282  }, react_1["default"].createElement("div", {
10283    className: "product-container"
10284  }, react_1["default"].createElement("div", {
10285    className: "container",
10286    style: {
10287      background: '#fff'
10288    }
10289  }, react_1["default"].createElement("div", {
10290    className: "product-main"
10291  }, react_1["default"].createElement("div", {
10292    className: "row content-row mb-0"
10293  }, react_1["default"].createElement("div", {
10294    className: "product-gallery large-6 col"
10295  }, react_1["default"].createElement("div", {
10296    className: "product-images relative mb-half has-hover woocommerce-product-gallery w
10296oocommerce-product-gallery--with-images woocommerce-product-gallery--columns-4 images",
10297    "data-columns": 4,
10298    style: {
10299      opacity: 1
10300    }
10301  }, product.price > 0 && product.discount > 0 && react_1["default"].createElement("div", {
10302    className: "badge-container is-larger absolute left top z-1"
10303  }, react_1["default"].createElement("div", {
10304    className: "callout badge badge-square"
10305  }, react_1["default"].createElement("div", {
10306    className: "badge-inner secondary on-sale"
10307  }, react_1["default"].createElement("span", {
10308    className: "onsale"
10309  }, "--", 100 - Math.ceil(product.discount / product.price * 100), "%")))), react_1["default"].createElement("div", {
10310    className: "image-tools absolute top show-on-hover right z-3"
10311  }), react_1["default"].createElement("figure", {
10312    className: "woocommerce-product-gallery__wrapper product-gallery-slider slider slider-nav-small mb-half flickity-enabled is-draggable",
10313    tabIndex: 0
10314  }, react_1["default"].createElement("div", {
10315    className: "flickity-viewport",
10316    style: {
10317      height: '640px'
10318    }
10319  }, react_1["default"].createElement("div", {
10320    className: "flickity-slider",
10321    style: {
10322      left: '0px',
10323      transform: 'translateX(0%)'
10324    }
10325  }, react_1["default"].createElement("div", {
10326    className: "first slide woocommerce-product-gallery__image is-selected",
10327    style: {
10328      position: 'absolute',
10329      left: '0%'
10330    }
10331  }, react_1["default"].createElement("a", {
10332    href: images[selectedImage],
10333    target: "_blank"
10334  }, react_1["default"].createElement("img", {
10335    width: 600,
10336    height: 600,
10337    src: images[selectedImage],
10338    className: "attachment-shop_single size-shop_single wp-post-image",
10339    alt: ""
10340  })))))), react_1["default"].createElement("div", {
10341    className: "image-tools absolute bottom left z-3"
10342  }, react_1["default"].createElement("a", {
10343    href: "#product-zoom",
10344    className: "zoom-button button is-outline circle icon tooltip hide-for-small tooltipstered"
10345  }, react_1["default"].createElement("i", {
10346    className: "icon-expand"
10347  }), " ")))), react_1["default"].createElement("div", {
10348    className: "product-info summary col-fit col entry-summary product-summary text-left"
10349  }, react_1["default"].createElement("h1", {
10350    className: "product-title entry-title",
10351    style: {
10352      color: '#000'
10353    }
10354  }, product.title), react_1["default"].createElement("p", {
10355    className: "mgb5"
10356  }, "M\xE3: ", product.code), react_1["default"].createElement("p", {
10357    className: ""
10358  }, react_1["default"].createElement("i", {
10359    className: "star fa fa-star",
10360    "aria-hidden": "true"
10361  }), product.star > 1 ? react_1["default"].createElement("i", {
10362    className: "star fa fa-star",
10363    "aria-hidden": "true"
10364  }) : react_1["default"].createElement("i", {
10365    className: "fa fa-star",
10366    "aria-hidden": "true"
10367  }), product.star > 2 ? react_1["default"].createElement("i", {
10368    className: "star fa fa-star",
10369    "aria-hidden": "true"
10370  }) : react_1["default"].createElement("i", {
10371    className: "fa fa-star",
10372    "aria-hidden": "true"
10373  }), product.star > 3 ? react_1["default"].createElement("i", {
10374    className: "star fa fa-star",
10375    "aria-hidden": "true"
10376  }) : react_1["default"].createElement("i", {
10377    className: "fa fa-star",
10378    "aria-hidden": "true"
10379  }), product.star > 4 ? react_1["default"].createElement("i", {
10380    className: "star fa fa-star",
10381    "aria-hidden": "true"
10382  }) : react_1["default"].createElement("i", {
10383    className: "fa fa-star",
10384    "aria-hidden": "true"
10385  }), "\xA0\xA0|", "\xA0", product.views, " L\u01B0\u1EE3t mua"), react_1["default"].createElement("div", {
10386    className: "price-wrapper",
10387    style: {
10388      background: 'rgb(238, 232, 232)',
10389      padding: "10px",
10390      fontSize: '18px',
10391      marginBottom: '10px'
10392    }
10393  }, product.discount > 0 && product.price_moma < 0 && react_1["default"].createElement("p", {
10394    className: "price product-page-price price-on-sale"
10395  }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
10396    className: "woocommerce-Price-amount amount"
10397  }, new Intl.NumberFormat('vi-VN', {
10398    maximumSignificantDigits: 3
10399  }).format(product.price), "\xA0", react_1["default"].createElement("span", {
10400    className: "woocommerce-Price-currencySymbol"
10401  }, "\u20AB"))), react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10402    className: "woocommerce-Price-amount amount"
10403  }, new Intl.NumberFormat('vi-VN', {
10404    maximumSignificantDigits: 3
10405  }).format(product.discount), "\xA0", react_1["default"].createElement("span", {
10406    className: "woocommerce-Price-currencySymbol"
10407  }, "\u20AB")))), product.price_moma > 0 && react_1["default"].createElement("p", {
10408    className: "price product-page-price price-on-sale"
10409  }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
10410    className: "woocommerce-Price-amount amount"
10411  }, new Intl.NumberFormat('vi-VN', {
10412    maximumSignificantDigits: 3
10413  }).format(product.price), "\xA0", react_1["default"].createElement("span", {
10414    className: "woocommerce-Price-currencySymbol"
10415  }, "\u20AB"))), react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10416    className: "woocommerce-Price-amount amount"
10417  }, new Intl.NumberFormat('vi-VN', {
10418    maximumSignificantDigits: 3
10419  }).format(product.price_moma), "\xA0", react_1["default"].createElement("span", {
10420    className: "woocommerce-Price-currencySymbol"
10421  }, "\u20AB")))), product.discount <= 0 && product.price_moma <= 0 && react_1["default"].createElement("p", {
10422    className: "price product-page-price price-on-sale"
10423  }, react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10424    className: "woocommerce-Price-amount amount"
10425  }, new Intl.NumberFormat('vi-VN', {
10426    maximumSignificantDigits: 3
10427  }).format(product.price), "\xA0", react_1["default"].createElement("span", {
10428    className: "woocommerce-Price-currencySymbol"
10429  }, "\u20AB"))))), react_1["default"].createElement("form", {
10430    className: "cart",
10431    method: "post",
10432    encType: "multipart/form-data"
10433  }, react_1["default"].createElement("div", {
10434    className: "quantity buttons_added"
10435  }, react_1["default"].createElement("input", {
10436    type: "button",
10437    defaultValue: "-",
10438    className: "minus button is-form",
10439    onClick: addMore(-1)
10440  }), react_1["default"].createElement("input", {
10441    type: "number",
10442    className: "input-text qty text",
10443    step: 1,
10444    min: 1,
10445    max: 9999,
10446    name: "quantity",
10447    defaultValue: 1,
10448    title: "SL",
10449    size: 4,
10450    pattern: "[0-9]*",
10451    inputMode: "numeric",
10452    value: amount
10453  }), react_1["default"].createElement("input", {
10454    type: "button",
10455    defaultValue: "+",
10456    className: "plus button is-form",
10457    onClick: addMore(1)
10458  })), react_1["default"].createElement("button", {
10459    type: "button",
10460    name: "add-to-cart",
10461    value: 139,
10462    className: "single_add_to_cart_button button alt",
10463    onClick: addToCart
10464  }, "Th\xEAm v\xE0o gi\u1ECF"), react_1["default"].createElement("button", {
10465    type: "button",
10466    name: "add-to-cart",
10467    value: 139,
10468    className: "alt button btn btn-primary",
10469    style: {
10470      padding: "0 1.2em",
10471      background: "#0b5ed7"
10472    },
10473    onClick: addToCartNow
10474  }, "Mua ngay")), react_1["default"].createElement("div", {
10475    className: "row row-collapse row-full-width",
10476    id: "row-334734891"
10477  }, react_1["default"].createElement("div", {
10478    dangerouslySetInnerHTML: {
10479      __html: product.description
10480    }
10481  })), react_1["default"].createElement("div", {
10482    className: "row row-collapse row-full-width",
10483    style: {
10484      marginTop: '20px'
10485    }
10486  }, react_1["default"].createElement("div", {
10487    className: "col medium-12 small-12 large-12"
10488  }, react_1["default"].createElement(react_share_1.FacebookShareButton, {
10489    url: window.location.href + '?affiliate_contact=' + affiliateContact,
10490    className: "Demo__some-network__share-button"
10491  }, react_1["default"].createElement(react_share_1.FacebookIcon, {
10492    size: 20,
10493    round: true
10494  }), " Facebook"), react_1["default"].createElement(react_share_1.TelegramShareButton, {
10495    url: window.location.href + '?affiliate_contact=' + affiliateContact,
10496    className: "Demo__some-network__share-button"
10497  }, react_1["default"].createElement(react_share_1.TelegramIcon, {
10498    size: 20,
10499    round: true
10500  }), " Telegram"), react_1["default"].createElement("div", {
10501    style: {
10502      "float": 'left',
10503      paddingRight: "12px",
10504      paddingTop: '8px'
10505    },
10506    className: "react-share__ShareButton Demo__some-network__share-button"
10507  }, react_1["default"].createElement(react_helmet_1.Helmet, null, react_1["default"].createElement("script", {
10508    src: "https://sp.zalo.me/plugins/sdk.js"
10509  })), react_1["default"].createElement("div", {
10510    style: {
10511      position: "initial"
10512    },
10513    className: "zalo-share-button",
10514    "data-href": window.location.href + '?affiliate_contact=' + affiliateContact,
10515    "data-oaid": 579745863508352884,
10516    "data-layout": 1,
10517    "data-color": "blue",
10518    "data-customize": false
10519  })))), affiliateContact && react_1["default"].createElement("div", {
10520    className: "row row-collapse row-full-width",
10521    style: {
10522      marginTop: '20px'
10523    }
10524  }, react_1["default"].createElement("div", {
10525    style: {
10526      width: '70%'
10527    }
10528  }, react_1["default"].createElement("input", {
10529    style: {
10530      "float": 'left',
10531      width: '60%'
10532    },
10533    className: "form-control",
10534    type: "text",
10535    defaultValue: window.location.href + '?affiliate_contact=' + affiliateContact
10536  }), react_1["default"].createElement("button", {
10537    style: {
10538      "float": 'left',
10539      width: '20%'
10540    },
10541    className: "form-control btn btn-success"
10542  }, react_1["default"].createElement(react_copy_to_clipboard_1.CopyToClipboard, {
10543    text: window.location.href + '?affiliate_contact=' + affiliateContact,
10544    onCopy: copyright
10545  }, react_1["default"].createElement("span", null, textCP))))))))), react_1["default"].createElement("div", {
10546    className: "product-footer"
10547  }, react_1["default"].createElement("div", {
10548    className: "container"
10549  }, react_1["default"].createElement("div", {
10550    className: "woocommerce-tabs tabbed-content"
10551  }, react_1["default"].createElement("ul", {
10552    className: "product-tabs nav small-nav-collapse tabs nav nav-uppercase nav-tabs nav-normal nav-left"
10553  }, react_1["default"].createElement("li", {
10554    className: "description_tab active"
10555  }, react_1["default"].createElement("a", {
10556    href: "#tab-description",
10557    className: 'px-3'
10558  }, "M\xF4 t\u1EA3"))), react_1["default"].createElement("div", {
10559    className: "tab-panels"
10560  }, react_1["default"].createElement("div", {
10561    className: "panel entry-content active",
10562    id: "tab-description",
10563    dangerouslySetInnerHTML: {
10564      __html: product.content
10565    }
10566  }), react_1["default"].createElement("div", {
10567    className: "panel entry-content",
10568    id: "tab-reviews"
10569  }, react_1["default"].createElement("div", {
10570    className: "row",
10571    id: "reviews"
10572  }, react_1["default"].createElement("div", {
10573    className: "col large-7",
10574    id: "comments"
10575  }, react_1["default"].createElement("h3", {
10576    className: "normal"
10577  }, "1 \u0111\xE1nh gi\xE1 cho ", react_1["default"].createElement("span", null, "\xC1o s\u01A1 mi caro k\xE8m belt")), react_1["default"].createElement("ol", {
10578    className: "commentlist"
10579  }, react_1["default"].createElement("li", {
10580    className: "comment byuser comment-author-admin bypostauthor even thread-even depth-1",
10581    id: "li-comment-2"
10582  }, react_1["default"].createElement("div", {
10583    id: "comment-2",
10584    className: "comment_container review-item flex-row align-top"
10585  }, react_1["default"].createElement("div", {
10586    className: "flex-col"
10587  }, react_1["default"].createElement("img", {
10588    alt: "",
10589    src: "https://0.gravatar.com/avatar/c6b3d31539b5f51e68dc08bbde85fcec?s=60&d=mm&r=g",
10590    srcSet: "http://0.gravatar.com/avatar/c6b3d31539b5f51e68dc08bbde85fcec?s=120&d=mm&r=g 2x",
10591    className: "avatar avatar-60 photo",
10592    height: 60,
10593    width: 60
10594  })), react_1["default"].createElement("div", {
10595    className: "comment-text flex-col flex-grow"
10596  }, react_1["default"].createElement("div", {
10597    className: "star-rating"
10598  }, react_1["default"].createElement("span", {
10599    style: {
10600      width: '100%'
10601    }
10602  }, "\u0110\u01B0\u1EE3c x\u1EBFp h\u1EA1ng ", react_1["default"].createElement("strong", {
10603    className: "rating"
10604  }, "5"), " 5 sao")), react_1["default"].createElement("p", {
10605    className: "meta"
10606  }, react_1["default"].createElement("strong", {
10607    className: "woocommerce-review__author"
10608  }, "Admin"), " ", react_1["default"].createElement("span", {
10609    className: "woocommerce-review__dash"
10610  }, "\u2013"), react_1["default"].createElement("time", {
10611    className: "woocommerce-review__published-date",
10612    dateTime: "2017-10-27T16:31:24+00:00"
10613  }, "27 Th\xE1ng M\u01B0\u1EDDi, 2017")), react_1["default"].createElement("div", {
10614    className: "description"
10615  }, react_1["default"].createElement("p", null, "R\u1EA5t h\u1EE3p v\u1EDBi d\xE1ng em \uD83D\uDE42"))))))), react_1["default"].createElement("div", {
10616    id: "review_form_wrapper",
10617    className: "large-5 col"
10618  }, react_1["default"].createElement("div", {
10619    id: "review_form",
10620    className: "col-inner"
10621  }, react_1["default"].createElement("div", {
10622    className: "review-form-inner has-border"
10623  }, react_1["default"].createElement("div", {
10624    id: "respond",
10625    className: "comment-respond"
10626  }, react_1["default"].createElement("h3", {
10627    id: "reply-title",
10628    className: "comment-reply-title"
10629  }, "Th\xEAm \u0111\xE1nh gi\xE1 ", react_1["default"].createElement("small", null, react_1["default"].createElement("a", {
10630    rel: "nofollow",
10631    id: "cancel-comment-reply-link",
10632    href: "/shopee/san-pham/ao-so-mi-caro-kem-belt/#respond",
10633    style: {
10634      display: 'none'
10635    }
10636  }, "H\u1EE7y"))), react_1["default"].createElement("form", {
10637    action: "http://mauweb.monamedia.net/shopee/wp-comments-post.php",
10638    method: "post",
10639    id: "commentform",
10640    className: "comment-form",
10641    noValidate: true
10642  }, react_1["default"].createElement("p", {
10643    className: "comment-form-rating"
10644  }, react_1["default"].createElement("label", {
10645    htmlFor: "rating"
10646  }, "\u0110\xE1nh gi\xE1 c\u1EE7a b\u1EA1n")), react_1["default"].createElement("p", {
10647    className: "stars"
10648  }, react_1["default"].createElement("span", null, react_1["default"].createElement("a", {
10649    className: "star-1",
10650    href: "#"
10651  }, "1"), react_1["default"].createElement("a", {
10652    className: "star-2",
10653    href: "#"
10654  }, "2"), react_1["default"].createElement("a", {
10655    className: "star-3",
10656    href: "#"
10657  }, "3"), react_1["default"].createElement("a", {
10658    className: "star-4",
10659    href: "#"
10660  }, "4"), react_1["default"].createElement("a", {
10661    className: "star-5",
10662    href: "#"
10663  }, "5"))), react_1["default"].createElement("select", {
10664    name: "rating",
10665    id: "rating",
10666    style: {
10667      display: 'none'
10668    }
10669  }, react_1["default"].createElement("option", null, "X\u1EBFp h\u1EA1ng\u2026"), react_1["default"].createElement("option", {
10670    value: 5
10671  }, "R\u1EA5t t\u1ED1t"), react_1["default"].createElement("option", {
10672    value: 4
10673  }, "T\u1ED1t"), react_1["default"].createElement("option", {
10674    value: 3
10675  }, "Trung b\xECnh"), react_1["default"].createElement("option", {
10676    value: 2
10677  }, "Kh\xF4ng t\u1EC7"), react_1["default"].createElement("option", {
10678    value: 1
10679  }, "Very Poor")), react_1["default"].createElement("p", null), react_1["default"].createElement("p", {
10680    className: "comment-form-comment"
10681  }, react_1["default"].createElement("label", {
10682    htmlFor: "comment"
10683  }, "Nh\u1EADn x\xE9t c\u1EE7a b\u1EA1n"), react_1["default"].createElement("textarea", {
10684    id: "comment",
10685    name: "comment",
10686    cols: 45,
10687    rows: 8,
10688    "aria-required": "true",
10689    defaultValue: ""
10690  })), react_1["default"].createElement("p", {
10691    className: "comment-form-author"
10692  }, react_1["default"].createElement("label", {
10693    htmlFor: "author"
10694  }, "T\xEAn ", react_1["default"].createElement("span", {
10695    className: "required"
10696  }, "*")), " ", react_1["default"].createElement("input", {
10697    id: "author",
10698    name: "author",
10699    type: "text",
10700    size: 30,
10701    "aria-required": "true"
10702  })), react_1["default"].createElement("p", {
10703    className: "comment-form-email"
10704  }, react_1["default"].createElement("label", {
10705    htmlFor: "email"
10706  }, "Email ", react_1["default"].createElement("span", {
10707    className: "required"
10708  }, "*")), " ", react_1["default"].createElement("input", {
10709    id: "email",
10710    name: "email",
10711    type: "text",
10712    size: 30,
10713    "aria-required": "true"
10714  })), react_1["default"].createElement("p", {
10715    className: "form-submit"
10716  }, react_1["default"].createElement("input", {
10717    name: "submit",
10718    type: "submit",
10719    id: "submit",
10720    className: "submit",
10721    defaultValue: "G\u1EEDi \u0111i"
10722  }), react_1["default"].createElement("input", {
10723    type: "hidden",
10724    name: "comment_post_ID",
10725    defaultValue: 139,
10726    id: "comment_post_ID"
10727  }), react_1["default"].createElement("input", {
10728    type: "hidden",
10729    name: "comment_parent",
10730    id: "comment_parent",
10731    defaultValue: 0
10732  }))))))))))), react_1["default"].createElement("div", {
10733    className: "related related-products-wrapper product-section"
10734  }, react_1["default"].createElement("h3", {
10735    className: "product-section-title product-section-title-related pt-half pb-half uppercase"
10736  }, "S\u1EA3n ph\u1EA9m t\u01B0\u01A1ng t\u1EF1 "), react_1["default"].createElement("div", {
10737    className: "row large-columns-4 medium-columns- small-columns-2 row-small"
10738  }, similarProducts.map(function (similarProduct, index) {
10739    var productImage = '/libraries/libraryxhome-3888/images/76693220_1666972563440263_7492540632209031168_n.jpg';
10740    if (similarProduct.image_list) {
10741      productImage = similarProduct.image_list.split(',')[0];
10742    } else if (similarProduct.image) {
10743      productImage = similarProduct.image;
10744    }
10745    return react_1["default"].createElement("div", {
10746      key: index,
10747      className: "product-small col has-hover post-135 product type-product status-publish has-post-thumbnail product_cat-ao-thun product_cat-thoi-trang-nam first instock shipping-taxable purchasable product-type-simple"
10748    }, react_1["default"].createElement("div", {
10749      className: "col-inner"
10750    }, react_1["default"].createElement("div", {
10751      className: "badge-container absolute left top z-1"
10752    }), react_1["default"].createElement("div", {
10753      className: "product-small box "
10754    }, react_1["default"].createElement("div", {
10755      className: "box-image"
10756    }, react_1["default"].createElement("div", {
10757      className: "image-fade_in_back"
10758    }, react_1["default"].createElement("a", {
10759      href: '/chi-tiet-san-pham/' + similarProduct.slug + '?user_email=' + similarProduct.user_email
10760    }, react_1["default"].createElement("img", {
10761      width: 300,
10762      height: 300,
10763      src: productImage
10764    }
10764))), react_1["default"].createElement("div", {
10765      className: "image-tools is-small top right show-on-hover"
10766    }), react_1["default"].createElement("div", {
10767      className: "image-tools is-small hide-for-small bottom left show-on-hover"
10768    }), react_1["default"].createElement("div", {
10769      className: "image-tools grid-tools text-center hide-for-small bottom hover-slide-in show-on-hover"
10770    })), react_1["default"].createElement("div", {
10771      className: "box-text box-text-products text-center grid-style-2"
10772    }, react_1["default"].createElement("p", null, similarProduct.category_string), react_1["default"].createElement("div", {
10773      className: "title-wrapper"
10774    }, react_1["default"].createElement("p", {
10775      className: "name product-title"
10776    }, react_1["default"].createElement("a", {
10777      href: '/chi-tiet-san-pham/' + similarProduct.slug + '?user_email=' + similarProduct.user_email
10778    }, similarProduct.title))), react_1["default"].createElement("div", {
10779      className: "price-wrapper"
10780    }, similarProduct.discount > 0 && react_1["default"].createElement("span", {
10781      className: "price"
10782    }, react_1["default"].createElement("del", null, react_1["default"].createElement("span", {
10783      className: "woocommerce-Price-amount amount"
10784    }, similarProduct.price, "\xA0", react_1["default"].createElement("span", {
10785      className: "woocommerce-Price-currencySymbol"
10786    }, "\u20AB"))), " ", react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10787      className: "woocommerce-Price-amount amount"
10788    }, similarProduct.discount, "\xA0", react_1["default"].createElement("span", {
10789      className: "woocommerce-Price-currencySymbol"
10790    }, "\u20AB")))), similarProduct.discount <= 0 && react_1["default"].createElement("span", {
10791      className: "price"
10792    }, react_1["default"].createElement("ins", null, react_1["default"].createElement("span", {
10793      className: "woocommerce-Price-amount amount"
10794    }, similarProduct.price, "\xA0", react_1["default"].createElement("span", {
10795      className: "woocommerce-Price-currencySymbol"
10796    }, "\u20AB")))))))));
10797  }))))))))));
10798};
10799exports.ProductDetail = ProductDetail;
10800
10801/***/ }),
10802
vendor: 249,624 bytes, lines 10803-11096
10803/***/ "./node_modules/copy-to-clipboard/index.js":
10804/*!*************************************************!*\
10805  !*** ./node_modules/copy-to-clipboard/index.js ***!
10806  \*************************************************/
10807/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
10808
10809"use strict";
10810
10811
10812var deselectCurrent = __webpack_require__(/*! toggle-selection */ "./node_modules/toggle-selection/index.js");
10813
10814var clipboardToIE11Formatting = {
10815  "text/plain": "Text",
10816  "text/html": "Url",
10817  "default": "Text"
10818}
10819
10820var defaultMessage = "Copy to clipboard: #{key}, Enter";
10821
10822function format(message) {
10823  var copyKey = (/mac os x/i.test(navigator.userAgent) ? "⌘" : "Ctrl") + "+C";
10824  return message.replace(/#{\s*key\s*}/g, copyKey);
10825}
10826
10827function copy(text, options) {
10828  var debug,
10829    message,
10830    reselectPrevious,
10831    range,
10832    selection,
10833    mark,
10834    success = false;
10835  if (!options) {
10836    options = {};
10837  }
10838  debug = options.debug || false;
10839  try {
10840    reselectPrevious = deselectCurrent();
10841
10842    range = document.createRange();
10843    selection = document.getSelection();
10844
10845    mark = document.createElement("span");
10846    mark.textContent = text;
10847    // avoid screen readers from reading out loud the text
10848    mark.ariaHidden = "true"
10849    // reset user styles for span element
10850    mark.style.all = "unset";
10851    // prevents scrolling to the end of the page
10852    mark.style.position = "fixed";
10853    mark.style.top = 0;
10854    mark.style.clip = "rect(0, 0, 0, 0)";
10855    // used to preserve spaces and line breaks
10856    mark.style.whiteSpace = "pre";
10857    // do not inherit user-select (it may be `none`)
10858    mark.style.webkitUserSelect = "text";
10859    mark.style.MozUserSelect = "text";
10860    mark.style.msUserSelect = "text";
10861    mark.style.userSelect = "text";
10862    mark.addEventListener("copy", function(e) {
10863      e.stopPropagation();
10864      if (options.format) {
10865        e.preventDefault();
10866        if (typeof e.clipboardData === "undefined") { // IE 11
10867          debug && console.warn("unable to use e.clipboardData");
10868          debug && console.warn("trying IE specific stuff");
10869          window.clipboardData.clearData();
10870          var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting["default"]
10871          window.clipboardData.setData(format, text);
10872        } else { // all other browsers
10873          e.clipboardData.clearData();
10874          e.clipboardData.setData(options.format, text);
10875        }
10876      }
10877      if (options.onCopy) {
10878        e.preventDefault();
10879        options.onCopy(e.clipboardData);
10880      }
10881    });
10882
10883    document.body.appendChild(mark);
10884
10885    range.selectNodeContents(mark);
10886    selection.addRange(range);
10887
10888    var successful = document.execCommand("copy");
10889    if (!successful) {
10890      throw new Error("copy command was unsuccessful");
10891    }
10892    success = true;
10893  } catch (err) {
10894    debug && console.error("unable to copy using execCommand: ", err);
10895    debug && console.warn("trying IE specific stuff");
10896    try {
10897      window.clipboardData.setData(options.format || "text", text);
10898      options.onCopy && options.onCopy(window.clipboardData);
10899      success = true;
10900    } catch (err) {
10901      debug && console.error("unable to copy using clipboardData: ", err);
10902      debug && console.error("falling back to prompt");
10903      message = format("message" in options ? options.message : defaultMessage);
10904      window.prompt(message, text);
10905    }
10906  } finally {
10907    if (selection) {
10908      if (typeof selection.removeRange == "function") {
10909        selection.removeRange(range);
10910      } else {
10911        selection.removeAllRanges();
10912      }
10913    }
10914
10915    if (mark) {
10916      document.body.removeChild(mark);
10917    }
10918    reselectPrevious();
10919  }
10920
10921  return success;
10922}
10923
10924module.exports = copy;
10925
10926
10927/***/ }),
10928
10929/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/app/app.style.scss":
10930/*!*******************************************************************************************************************************************************************************************************************************************************************************!*\
10931  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/app/app.style.scss ***!
10932  \*******************************************************************************************************************************************************************************************************************************************************************************/
10933/***/ ((module, __webpack_exports__, __webpack_require__) => {
10934
10935"use strict";
10936__webpack_require__.r(__webpack_exports__);
10937/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10938/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
10939/* harmony export */ });
10940/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
10941/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
10942// Imports
10943
10944var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
10945// Module
10946___CSS_LOADER_EXPORT___.push([module.id, "", ""]);
10947// Exports
10948/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
10949
10950
10951/***/ }),
10952
10953/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/category-list/category-list.style.scss":
10954/*!**************************************************************************************************************************************************************************************************************************************************************************************************************!*\
10955  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/category-list/category-list.style.scss ***!
10956  \**************************************************************************************************************************************************************************************************************************************************************************************************************/
10957/***/ ((module, __webpack_exports__, __webpack_require__) => {
10958
10959"use strict";
10960__webpack_require__.r(__webpack_exports__);
10961/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10962/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
10963/* harmony export */ });
10964/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
10965/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
10966// Imports
10967
10968var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
10969// Module
10970___CSS_LOADER_EXPORT___.push([module.id, ".product-category .col {\n  max-width: 100% !important;\n}", ""]);
10971// Exports
10972/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
10973
10974
10975/***/ }),
10976
10977/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/flash-sale/flash-sale.style.scss":
10978/*!********************************************************************************************************************************************************************************************************************************************************************************************************!*\
10979  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/flash-sale/flash-sale.style.scss ***!
10980  \********************************************************************************************************************************************************************************************************************************************************************************************************/
10981/***/ ((module, __webpack_exports__, __webpack_require__) => {
10982
10983"use strict";
10984__webpack_require__.r(__webpack_exports__);
10985/* harmony export */ __webpack_require__.d(__webpack_exports__, {
10986/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
10987/* harmony export */ });
10988/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
10989/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
10990// Imports
10991
10992var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
10993// Module
10994___CSS_LOADER_EXPORT___.push([module.id, ".flash_sale .box-text.text-center, .san_pham_pho_bien .box-text.text-center {\n  padding-left: 10px;\n  padding-right: 10px;\n  height: 150px;\n}", ""]);
10995// Exports
10996/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
10997
10998
10999/***/ }),
11000
11001/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/products/products.style.scss":
11002/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
11003  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/products/products.style.scss ***!
11004  \****************************************************************************************************************************************************************************************************************************************************************************************************/
11005/***/ ((module, __webpack_exports__, __webpack_require__) => {
11006
11007"use strict";
11008__webpack_require__.r(__webpack_exports__);
11009/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11010/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
11011/* harmony export */ });
11012/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
11013/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
11014// Imports
11015
11016var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
11017// Module
11018___CSS_LOADER_EXPORT___.push([module.id, "", ""]);
11019// Exports
11020/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
11021
11022
11023/***/ }),
11024
11025/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/quick-action-shop/quick-action.scss":
11026/*!***********************************************************************************************************************************************************************************************************************************************************************************************************!*\
11027  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/quick-action-shop/quick-action.scss ***!
11028  \***********************************************************************************************************************************************************************************************************************************************************************************************************/
11029/***/ ((module, __webpack_exports__, __webpack_require__) => {
11030
11031"use strict";
11032__webpack_require__.r(__webpack_exports__);
11033/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11034/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
11035/* harmony export */ });
11036/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
11037/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
11038// Imports
11039
11040var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
11041// Module
11042___CSS_LOADER_EXPORT___.push([module.id, "#shop_quick_action {\n  position: fixed;\n  width: 100%;\n  bottom: 0;\n  z-index: 1049;\n}\n\n.quick-action-content {\n  width: 100%;\n  height: 30px;\n  display: flex;\n  flex-direction: row;\n  background-color: white;\n  justify-content: space-around;\n  align-items: center;\n}\n.quick-action-content .add-to-cart {\n  display: flex;\n  flex: 1 1;\n  justify-content: space-around;\n  align-items: center;\n}\n.quick-action-content .add-to-cart i {\n  font-size: 24px;\n  color: #f4921d;\n}\n.quick-action-content .buy-now {\n  display: flex;\n  justify-content: space-around;\n  align-items: center;\n  flex: 1 1;\n  margin: 0;\n  padding: 0;\n  background-color: #0aa07d;\n  height: 30px;\n}\n.quick-action-content .buy-now span {\n  font-size: 14px;\n  font-weight: 600;\n  color: white;\n}\n\n.showMb {\n  display: none;\n}\n\n@media (max-width: 768px) {\n  .showMb {\n    display: block;\n    position: fixed;\n    bottom: 24px;\n    width: 100%;\n    z-index: 1049;\n  }\n}", ""]);
11043// Exports
11044/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
11045
11046
11047/***/ }),
11048
11049/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/top-sale/top-sale.style.scss":
11050/*!****************************************************************************************************************************************************************************************************************************************************************************************************!*\
11051  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/top-sale/top-sale.style.scss ***!
11052  \****************************************************************************************************************************************************************************************************************************************************************************************************/
11053/***/ ((module, __webpack_exports__, __webpack_require__) => {
11054
11055"use strict";
11056__webpack_require__.r(__webpack_exports__);
11057/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11058/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
11059/* harmony export */ });
11060/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
11061/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
11062// Imports
11063
11064var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
11065// Module
11066___CSS_LOADER_EXPORT___.push([module.id, "", ""]);
11067// Exports
11068/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
11069
11070
11071/***/ }),
11072
11073/***/ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/sass/index.scss":
11074/*!*************************************************************************************************************************************************************************************************************************************************************************!*\
11075  !*** ./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/sass/index.scss ***!
11076  \*************************************************************************************************************************************************************************************************************************************************************************/
11077/***/ ((module, __webpack_exports__, __webpack_require__) => {
11078
11079"use strict";
11080__webpack_require__.r(__webpack_exports__);
11081/* harmony export */ __webpack_require__.d(__webpack_exports__, {
11082/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
11083/* harmony export */ });
11084/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ../../node_modules/css-loader/dist/runtime/api.js */ "./node_modules/css-loader/dist/runtime/api.js");
11085/* harmony import */ var _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0__);
11086// Imports
11087
11088var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
11089// Module
11090___CSS_LOADER_EXPORT___.push([module.id, "@charset \"UTF-8\";\n.shop-container {\n  /*!\n   * Bootstrap v5.1.3 (https://getbootstrap.com/)\n   * Copyright 2011-2021 The Bootstrap Authors\n   * Copyright 2011-2021 Twitter, Inc.\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n   */\n  /*!\n   * Bootstrap v3.4.1 (https://getbootstrap.com/)\n   * Copyright 2011-2019 Twitter, Inc.\n   * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)\n   */\n  /*! normalize.css v3.0.3 | MIT License | github.com/necolas/normalize.css */\n  /*! Source: https://github.com/h5bp/html5-boilerplate/blob/master/src/css/main.css */\n}\n.shop-container html {\n  font-family: sans-serif;\n  -ms-text-size-adjust: 100%;\n  -webkit-text-size-adjust: 100%;\n}\n.shop-container body {\n  margin: 0;\n}\n.shop-container article,\n.shop-container aside,\n.shop-container details,\n.shop-container figcaption,\n.shop-container figure,\n.shop-container footer,\n.shop-container header,\n.shop-container hgroup,\n.shop-container main,\n.shop-container menu,\n.shop-container nav,\n.shop-container section,\n.shop-container summary {\n  display: block;\n}\n.shop-container audio,\n.shop-container canvas,\n.shop-container progress,\n.shop-container video {\n  display: inline-block;\n  vertical-align: baseline;\n}\n.shop-container audio:not([controls]) {\n  display: none;\n  height: 0;\n}\n.shop-container [hidden],\n.shop-container template {\n  display: none;\n}\n.shop-container a {\n  background-color: transparent;\n}\n.shop-container a:active,\n.shop-container a:hover {\n  outline: 0;\n}\n.shop-container abbr[title] {\n  border-bottom: none;\n  text-decoration: underline;\n  -webkit-text-decoration: underline dotted;\n          text-decoration: underline dotted;\n}\n.shop-container b,\n.shop-container strong {\n  font-weight: bold;\n}\n.shop-container dfn {\n  font-style: italic;\n}\n.shop-container h1 {\n  font-size: 2em;\n  margin: 0.67em 0;\n}\n.shop-container mark {\n  background: #ff0;\n  color: #000;\n}\n.shop-container small {\n  font-size: 80%;\n}\n.shop-container sub,\n.shop-container sup {\n  font-size: 75%;\n  line-height: 0;\n  position: relative;\n  vertical-align: baseline;\n}\n.shop-container sup {\n  top: -0.5em;\n}\n.shop-container sub {\n  bottom: -0.25em;\n}\n.shop-container img {\n  border: 0;\n}\n.shop-container svg:not(:root) {\n  overflow: hidden;\n}\n.shop-container figure {\n  margin: 1em 40px;\n}\n.shop-container hr {\n  box-sizing: content-box;\n  height: 0;\n}\n.shop-container pre {\n  overflow: auto;\n}\n.shop-container code,\n.shop-container kbd,\n.shop-container pre,\n.shop-container samp {\n  font-family: monospace, monospace;\n  font-size: 1em;\n}\n.shop-container button,\n.shop-container input,\n.shop-container optgroup,\n.shop-container select,\n.shop-container textarea {\n  color: inherit;\n  font: inherit;\n  margin: 0;\n}\n.shop-container button {\n  overflow: visible;\n}\n.shop-container button,\n.shop-container select {\n  text-transform: none;\n}\n.shop-container button,\n.shop-container html input[type=button],\n.shop-container input[type=reset],\n.shop-container input[type=submit] {\n  -webkit-appearance: button;\n  cursor: pointer;\n}\n.shop-container button[disabled],\n.shop-container html input[disabled] {\n  cursor: default;\n}\n.shop-container button::-moz-focus-inner,\n.shop-container input::-moz-focus-inner {\n  border: 0;\n  padding: 0;\n}\n.shop-container input {\n  line-height: normal;\n}\n.shop-container input[type=checkbox],\n.shop-container input[type=radio] {\n  box-sizing: border-box;\n  padding: 0;\n}\n.shop-container input[type=number]::-webkit-inner-spin-button,\n.shop-container input[type=number]::-webkit-outer-spin-button {\n  height: auto;\n}\n.shop-container input[type=search] {\n  -webkit-appearance: textfield;\n  box-sizing: content-box;\n}\n.shop-container input[type=search]::-webkit-search-cancel-button,\n.shop-container input[type=search]::-webkit-search-decoration {\n  -webkit-appearance: none;\n}\n.shop-container fieldset {\n  border: 1px solid #c0c0c0;\n  margin: 0 2px;\n  padding: 0.35em 0.625em 0.75em;\n}\n.shop-container legend {\n  border: 0;\n  padding: 0;\n}\n.shop-container textarea {\n  overflow: auto;\n}\n.shop-container optgroup {\n  font-weight: bold;\n}\n.shop-container table {\n  border-collapse: collapse;\n  border-spacing: 0;\n}\n.shop-container td,\n.shop-container th {\n  padding: 0;\n}\n@media print {\n  .shop-container *,\n  .shop-container *:before,\n  .shop-container *:after {\n    color: #000 !important;\n    text-shadow: none !important;\n    background: transparent !important;\n    box-shadow: none !important;\n  }\n  .shop-container a,\n  .shop-container a:visited {\n    text-decoration: underline;\n  }\n  .shop-container a[href]:after {\n    content: \" (\" attr(href) \")\";\n  }\n  .shop-container abbr[title]:after {\n    content: \" (\" attr(title) \")\";\n  }\n  .shop-container a[href^=\"#\"]:after,\n  .shop-container a[href^=\"javascript:\"]:after {\n    content: \"\";\n  }\n  .shop-container pre,\n  .shop-container blockquote {\n    border: 1px solid #999;\n    page-break-inside: avoid;\n  }\n  .shop-container thead {\n    display: table-header-group;\n  }\n  .shop-container tr,\n  .shop-container img {\n    page-break-inside: avoid;\n  }\n  .shop-container img {\n    max-width: 100% !important;\n  }\n  .shop-container p,\n  .shop-container h2,\n  .shop-container h3 {\n    orphans: 3;\n    widows: 3;\n  }\n  .shop-container h2,\n  .shop-container h3 {\n    page-break-after: avoid;\n  }\n  .shop-container .navbar {\n    display: none;\n  }\n  .shop-container .btn > .caret,\n  .shop-container .dropup > .btn > .caret {\n    border-top-color: #000 !important;\n  }\n  .shop-container .label {\n    border: 1px solid #000;\n  }\n  .shop-container .table {\n    border-collapse: collapse !important;\n  }\n  .shop-container .table td,\n  .shop-container .table th {\n    background-color: #fff !important;\n  }\n  .shop-container .table-bordered th,\n  .shop-container .table-bordered td {\n    border: 1px solid #ddd !important;\n  }\n}\n@font-face {\n  font-family: \"Glyphicons Halflings\";\n  src: url(\"../fonts/bootstrap/glyphicons-halflings-regular.eot\");\n  src: url(\"../fonts/bootstrap/glyphicons-halflings-regular.eot?#iefix\") format(\"embedded-opentype\"), url(\"../fonts/bootstrap/glyphicons-halflings-regular.woff2\") format(\"woff2\"), url(\"../fonts/bootstrap/glyphicons-halflings-regular.woff\") format(\"woff\"), url(\"../fonts/bootstrap/glyphicons-halflings-regular.ttf\") format(\"truetype\"), url(\"../fonts/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular\") format(\"svg\");\n}\n.shop-container .glyphicon {\n  position: relative;\n  top: 1px;\n  display: inline-block;\n  font-family: \"Glyphicons Halflings\";\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.shop-container .glyphicon-asterisk:before {\n  content: \"*\";\n}\n.shop-container .glyphicon-plus:before {\n  content: \"+\";\n}\n.shop-container .glyphicon-euro:before,\n.shop-container .glyphicon-eur:before {\n  content: \"€\";\n}\n.shop-container .glyphicon-minus:before {\n  content: \"−\";\n}\n.shop-container .glyphicon-cloud:before {\n  content: \"☁\";\n}\n.shop-container .glyphicon-envelope:before {\n  content: \"✉\";\n}\n.shop-container .glyphicon-pencil:before {\n  content: \"✏\";\n}\n.shop-container .glyphicon-glass:before {\n  content: \"\\e001\";\n}\n.shop-container .glyphicon-music:before {\n  content: \"\\e002\";\n}\n.shop-container .glyphicon-search:before {\n  content: \"\\e003\";\n}\n.shop-container .glyphicon-heart:before {\n  content: \"\\e005\";\n}\n.shop-container .glyphicon-star:before {\n  content: \"\\e006\";\n}\n.shop-container .glyphicon-star-empty:before {\n  content: \"\\e007\";\n}\n.shop-container .glyphicon-user:before {\n  content: \"\\e008\";\n}\n.shop-container .glyphicon-film:before {\n  content: \"\\e009\";\n}\n.shop-container .glyphicon-th-large:before {\n  content: \"\\e010\";\n}\n.shop-container .glyphicon-th:before {\n  content: \"\\e011\";\n}\n.shop-container .glyphicon-th-list:before {\n  content: \"\\e012\";\n}\n.shop-container .glyphicon-ok:before {\n  content: \"\\e013\";\n}\n.shop-container .glyphicon-remove:before {\n  content: \"\\e014\";\n}\n.shop-container .glyphicon-zoom-in:before {\n  content: \"\\e015\";\n}\n.shop-container .glyphicon-zoom-out:before {\n  content: \"\\e016\";\n}\n.shop-container .glyphicon-off:before {\n  content: \"\\e017\";\n}\n.shop-container .glyphicon-signal:before {\n  content: \"\\e018\";\n}\n.shop-container .glyphicon-cog:before {\n  content: \"\\e019\";\n}\n.shop-container .glyphicon-trash:before {\n  content: \"\\e020\";\n}\n.shop-container .glyphicon-home:before {\n  content: \"\\e021\";\n}\n.shop-container .glyphicon-file:before {\n  content: \"\\e022\";\n}\n.shop-container .glyphicon-time:before {\n  content: \"\\e023\";\n}\n.shop-container .glyphicon-road:before {\n  content: \"\\e024\";\n}\n.shop-container .glyphicon-download-alt:before {\n  content: \"\\e025\";\n}\n.shop-container .glyphicon-download:before {\n  content: \"\\e026\";\n}\n.shop-container .glyphicon-upload:before {\n  content: \"\\e027\";\n}\n.shop-container .glyphicon-inbox:before {\n  content: \"\\e028\";\n}\n.shop-container .glyphicon-play-circle:before {\n  content: \"\\e029\";\n}\n.shop-container .glyphicon-repeat:before {\n  content: \"\\e030\";\n}\n.shop-container .glyphicon-refresh:before {\n  content: \"\\e031\";\n}\n.shop-container .glyphicon-list-alt:before {\n  content: \"\\e032\";\n}\n.shop-container .glyphicon-lock:before {\n  content: \"\\e033\";\n}\n.shop-container .glyphicon-flag:before {\n  content: \"\\e034\";\n}\n.shop-container .glyphicon-headphones:before {\n  content: \"\\e035\";\n}\n.shop-container .glyphicon-volume-off:before {\n  content: \"\\e036\";\n}\n.shop-container .glyphicon-volume-down:before {\n  content: \"\\e037\";\n}\n.shop-container .glyphicon-volume-up:before {\n  content: \"\\e038\";\n}\n.shop-container .glyphicon-qrcode:before {\n  content: \"\\e039\";\n}\n.shop-container .glyphicon-barcode:before {\n  content: \"\\e040\";\n}\n.shop-container .glyphicon-tag:before {\n  content: \"\\e041\";\n}\n.shop-container .glyphicon-tags:before {\n  content: \"\\e042\";\n}\n.shop-container .glyphicon-book:before {\n  content: \"\\e043\";\n}\n.shop-container .glyphicon-bookmark:before {\n  content: \"\\e044\";\n}\n.shop-container .glyphicon-print:before {\n  content: \"\\e045\";\n}\n.shop-container .glyphicon-camera:before {\n  content: \"\\e046\";\n}\n.shop-container .glyphicon-font:before {\n  content: \"\\e047\";\n}\n.shop-container .glyphicon-bold:before {\n  content: \"\\e048\";\n}\n.shop-container .glyphicon-italic:before {\n  content: \"\\e049\";\n}\n.shop-container .glyphicon-text-height:before {\n  content: \"\\e050\";\n}\n.shop-container .glyphicon-text-width:before {\n  content: \"\\e051\";\n}\n.shop-container .glyphicon-align-left:before {\n  content: \"\\e052\";\n}\n.shop-container .glyphicon-align-center:before {\n  content: \"\\e053\";\n}\n.shop-container .glyphicon-align-right:before {\n  content: \"\\e054\";\n}\n.shop-container .glyphicon-align-justify:before {\n  content: \"\\e055\";\n}\n.shop-container .glyphicon-list:before {\n  content: \"\\e056\";\n}\n.shop-container .glyphicon-indent-left:before {\n  content: \"\\e057\";\n}\n.shop-container .glyphicon-indent-right:before {\n  content: \"\\e058\";\n}\n.shop-container .glyphicon-facetime-video:before {\n  content: \"\\e059\";\n}\n.shop-container .glyphicon-picture:before {\n  content: \"\\e060\";\n}\n.shop-container .glyphicon-map-marker:before {\n  content: \"\\e062\";\n}\n.shop-container .glyphicon-adjust:before {\n  content: \"\\e063\";\n}\n.shop-container .glyphicon-tint:before {\n  content: \"\\e064\";\n}\n.shop-container .glyphicon-edit:before {\n  content: \"\\e065\";\n}\n.shop-container .glyphicon-share:before {\n  content: \"\\e066\";\n}\n.shop-container .glyphicon-check:before {\n  content: \"\\e067\";\n}\n.shop-container .glyphicon-move:before {\n  content: \"\\e068\";\n}\n.shop-container .glyphicon-step-backward:before {\n  content: \"\\e069\";\n}\n.shop-container .glyphicon-fast-backward:before {\n  content: \"\\e070\";\n}\n.shop-container .glyphicon-backward:before {\n  content: \"\\e071\";\n}\n.shop-container .glyphicon-play:before {\n  content: \"\\e072\";\n}\n.shop-container .glyphicon-pause:before {\n  content: \"\\e073\";\n}\n.shop-container .glyphicon-stop:before {\n  content: \"\\e074\";\n}\n.shop-container .glyphicon-forward:before {\n  content: \"\\e075\";\n}\n.shop-container .glyphicon-fast-forward:before {\n  content: \"\\e076\";\n}\n.shop-container .glyphicon-step-forward:before {\n  content: \"\\e077\";\n}\n.shop-container .glyphicon-eject:before {\n  content: \"\\e078\";\n}\n.shop-container .glyphicon-chevron-left:before {\n  content: \"\\e079\";\n}\n.shop-container .glyphicon-chevron-right:before {\n  content: \"\\e080\";\n}\n.shop-container .glyphicon-plus-sign:before {\n  content: \"\\e081\";\n}\n.shop-container .glyphicon-minus-sign:before {\n  content: \"\\e082\";\n}\n.shop-container .glyphicon-remove-sign:before {\n  content: \"\\e083\";\n}\n.shop-container .glyphicon-ok-sign:before {\n  content: \"\\e084\";\n}\n.shop-container .glyphicon-question-sign:before {\n  content: \"\\e085\";\n}\n.shop-container .glyphicon-info-sign:before {\n  content: \"\\e086\";\n}\n.shop-container .glyphicon-screenshot:before {\n  content: \"\\e087\";\n}\n.shop-container .glyphicon-remove-circle:before {\n  content: \"\\e088\";\n}\n.shop-container .glyphicon-ok-circle:before {\n  content: \"\\e089\";\n}\n.shop-container .glyphicon-ban-circle:before {\n  content: \"\\e090\";\n}\n.shop-container .glyphicon-arrow-left:before {\n  content: \"\\e091\";\n}\n.shop-container .glyphicon-arrow-right:before {\n  content: \"\\e092\";\n}\n.shop-container .glyphicon-arrow-up:before {\n  content: \"\\e093\";\n}\n.shop-container .glyphicon-arrow-down:before {\n  content: \"\\e094\";\n}\n.shop-container .glyphicon-share-alt:before {\n  content: \"\\e095\";\n}\n.shop-container .glyphicon-resize-full:before {\n  content: \"\\e096\";\n}\n.shop-container .glyphicon-resize-small:before {\n  content: \"\\e097\";\n}\n.shop-container .glyphicon-exclamation-sign:before {\n  content: \"\\e101\";\n}\n.shop-container .glyphicon-gift:before {\n  content: \"\\e102\";\n}\n.shop-container .glyphicon-leaf:before {\n  content: \"\\e103\";\n}\n.shop-container .glyphicon-fire:before {\n  content: \"\\e104\";\n}\n.shop-container .glyphicon-eye-open:before {\n  content: \"\\e105\";\n}\n.shop-container .glyphicon-eye-close:before {\n  content: \"\\e106\";\n}\n.shop-container .glyphicon-warning-sign:before {\n  content: \"\\e107\";\n}\n.shop-container .glyphicon-plane:before {\n  content: \"\\e108\";\n}\n.shop-container .glyphicon-calendar:before {\n  content: \"\\e109\";\n}\n.shop-container .glyphicon-random:before {\n  content: \"\\e110\";\n}\n.shop-container .glyphicon-comment:before {\n  content: \"\\e111\";\n}\n.shop-container .glyphicon-magnet:before {\n  content: \"\\e112\";\n}\n.shop-container .glyphicon-chevron-up:before {\n  content: \"\\e113\";\n}\n.shop-container .glyphicon-chevron-down:before {\n  content: \"\\e114\";\n}\n.shop-container .glyphicon-retweet:before {\n  content: \"\\e115\";\n}\n.shop-container .glyphicon-shopping-cart:before {\n  content: \"\\e116\";\n}\n.shop-container .glyphicon-folder-close:before {\n  content: \"\\e117\";\n}\n.shop-container .glyphicon-folder-open:before {\n  content: \"\\e118\";\n}\n.shop-container .glyphicon-resize-vertical:before {\n  content: \"\\e119\";\n}\n.shop-container .glyphicon-resize-horizontal:before {\n  content: \"\\e120\";\n}\n.shop-container .glyphicon-hdd:before {\n  content: \"\\e121\";\n}\n.shop-container .glyphicon-bullhorn:before {\n  content: \"\\e122\";\n}\n.shop-container .glyphicon-bell:before {\n  content: \"\\e123\";\n}\n.shop-container .glyphicon-certificate:before {\n  content: \"\\e124\";\n}\n.shop-container .glyphicon-thumbs-up:before {\n  content: \"\\e125\";\n}\n.shop-container .glyphicon-thumbs-down:before {\n  content: \"\\e126\";\n}\n.shop-container .glyphicon-hand-right:before {\n  content: \"\\e127\";\n}\n.shop-container .glyphicon-hand-left:before {\n  content: \"\\e128\";\n}\n.shop-container .glyphicon-hand-up:before {\n  content: \"\\e129\";\n}\n.shop-container .glyphicon-hand-down:before {\n  content: \"\\e130\";\n}\n.shop-container .glyphicon-circle-arrow-right:before {\n  content: \"\\e131\";\n}\n.shop-container .glyphicon-circle-arrow-left:before {\n  content: \"\\e132\";\n}\n.shop-container .glyphicon-circle-arrow-up:before {\n  content: \"\\e133\";\n}\n.shop-container .glyphicon-circle-arrow-down:before {\n  content: \"\\e134\";\n}\n.shop-container .glyphicon-globe:before {\n  content: \"\\e135\";\n}\n.shop-container .glyphicon-wrench:before {\n  content: \"\\e136\";\n}\n.shop-container .glyphicon-tasks:before {\n  content: \"\\e137\";\n}\n.shop-container .glyphicon-filter:before {\n  content: \"\\e138\";\n}\n.shop-container .glyphicon-briefcase:before {\n  content: \"\\e139\";\n}\n.shop-container .glyphicon-fullscreen:before {\n  content: \"\\e140\";\n}\n.shop-container .glyphicon-dashboard:before {\n  content: \"\\e141\";\n}\n.shop-container .glyphicon-paperclip:before {\n  content: \"\\e142\";\n}\n.shop-container .glyphicon-heart-empty:before {\n  content: \"\\e143\";\n}\n.shop-container .glyphicon-link:before {\n  content: \"\\e144\";\n}\n.shop-container .glyphicon-phone:before {\n  content: \"\\e145\";\n}\n.shop-container .glyphicon-pushpin:before {\n  content: \"\\e146\";\n}\n.shop-container .glyphicon-usd:before {\n  content: \"\\e148\";\n}\n.shop-container .glyphicon-gbp:before {\n  content: \"\\e149\";\n}\n.shop-container .glyphicon-sort:before {\n  content: \"\\e150\";\n}\n.shop-container .glyphicon-sort-by-alphabet:before {\n  content: \"\\e151\";\n}\n.shop-container .glyphicon-sort-by-alphabet-alt:before {\n  content: \"\\e152\";\n}\n.shop-container .glyphicon-sort-by-order:before {\n  content: \"\\e153\";\n}\n.shop-container .glyphicon-sort-by-order-alt:before {\n  content: \"\\e154\";\n}\n.shop-container .glyphicon-sort-by-attributes:before {\n  content: \"\\e155\";\n}\n.shop-container .glyphicon-sort-by-attributes-alt:before {\n  content: \"\\e156\";\n}\n.shop-container .glyphicon-unchecked:before {\n  content: \"\\e157\";\n}\n.shop-container .glyphicon-expand:before {\n  content: \"\\e158\";\n}\n.shop-container .glyphicon-collapse-down:before {\n  content: \"\\e159\";\n}\n.shop-container .glyphicon-collapse-up:before {\n  content: \"\\e160\";\n}\n.shop-container .glyphicon-log-in:before {\n  content: \"\\e161\";\n}\n.shop-container .glyphicon-flash:before {\n  content: \"\\e162\";\n}\n.shop-container .glyphicon-log-out:before {\n  content: \"\\e163\";\n}\n.shop-container .glyphicon-new-window:before {\n  content: \"\\e164\";\n}\n.shop-container .glyphicon-record:before {\n  content: \"\\e165\";\n}\n.shop-container .glyphicon-save:before {\n  content: \"\\e166\";\n}\n.shop-container .glyphicon-open:before {\n  content: \"\\e167\";\n}\n.shop-container .glyphicon-saved:before {\n  content: \"\\e168\";\n}\n.shop-container .glyphicon-import:before {\n  content: \"\\e169\";\n}\n.shop-container .glyphicon-export:before {\n  content: \"\\e170\";\n}\n.shop-container .glyphicon-send:before {\n  content: \"\\e171\";\n}\n.shop-container .glyphicon-floppy-disk:before {\n  content: \"\\e172\";\n}\n.shop-container .glyphicon-floppy-saved:before {\n  content: \"\\e173\";\n}\n.shop-container .glyphicon-floppy-remove:before {\n  content: \"\\e174\";\n}\n.shop-container .glyphicon-floppy-save:before {\n  content: \"\\e175\";\n}\n.shop-container .glyphicon-floppy-open:before {\n  content: \"\\e176\";\n}\n.shop-container .glyphicon-credit-card:before {\n  content: \"\\e177\";\n}\n.shop-container .glyphicon-transfer:before {\n  content: \"\\e178\";\n}\n.shop-container .glyphicon-cutlery:before {\n  content: \"\\e179\";\n}\n.shop-container .glyphicon-header:before {\n  content: \"\\e180\";\n}\n.shop-container .glyphicon-compressed:before {\n  content: \"\\e181\";\n}\n.shop-container .glyphicon-earphone:before {\n  content: \"\\e182\";\n}\n.shop-container .glyphicon-phone-alt:before {\n  content: \"\\e183\";\n}\n.shop-container .glyphicon-tower:before {\n  content: \"\\e184\";\n}\n.shop-container .glyphicon-stats:before {\n  content: \"\\e185\";\n}\n.shop-container .glyphicon-sd-video:before {\n  content: \"\\e186\";\n}\n.shop-container .glyphicon-hd-video:before {\n  content: \"\\e187\";\n}\n.shop-container .glyphicon-subtitles:before {\n  content: \"\\e188\";\n}\n.shop-container .glyphicon-sound-stereo:before {\n  content: \"\\e189\";\n}\n.shop-container .glyphicon-sound-dolby:before {\n  content: \"\\e190\";\n}\n.shop-container .glyphicon-sound-5-1:before {\n  content: \"\\e191\";\n}\n.shop-container .glyphicon-sound-6-1:before {\n  content: \"\\e192\";\n}\n.shop-container .glyphicon-sound-7-1:before {\n  content: \"\\e193\";\n}\n.shop-container .glyphicon-copyright-mark:before {\n  content: \"\\e194\";\n}\n.shop-container .glyphicon-registration-mark:before {\n  content: \"\\e195\";\n}\n.shop-container .glyphicon-cloud-download:before {\n  content: \"\\e197\";\n}\n.shop-container .glyphicon-cloud-upload:before {\n  content: \"\\e198\";\n}\n.shop-container .glyphicon-tree-conifer:before {\n  content: \"\\e199\";\n}\n.shop-container .glyphicon-tree-deciduous:before {\n  content: \"\\e200\";\n}\n.shop-container .glyphicon-cd:before {\n  content: \"\\e201\";\n}\n.shop-container .glyphicon-save-file:before {\n  content: \"\\e202\";\n}\n.shop-container .glyphicon-open-file:before {\n  content: \"\\e203\";\n}\n.shop-container .glyphicon-level-up:before {\n  content: \"\\e204\";\n}\n.shop-container .glyphicon-copy:before {\n  content: \"\\e205\";\n}\n.shop-container .glyphicon-paste:before {\n  content: \"\\e206\";\n}\n.shop-container .glyphicon-alert:before {\n  content: \"\\e209\";\n}\n.shop-container .glyphicon-equalizer:before {\n  content: \"\\e210\";\n}\n.shop-container .glyphicon-king:before {\n  content: \"\\e211\";\n}\n.shop-container .glyphicon-queen:before {\n  content: \"\\e212\";\n}\n.shop-container .glyphicon-pawn:before {\n  content: \"\\e213\";\n}\n.shop-container .glyphicon-bishop:before {\n  content: \"\\e214\";\n}\n.shop-container .glyphicon-knight:before {\n  content: \"\\e215\";\n}\n.shop-container .glyphicon-baby-formula:before {\n  content: \"\\e216\";\n}\n.shop-container .glyphicon-tent:before {\n  content: \"⛺\";\n}\n.shop-container .glyphicon-blackboard:before {\n  content: \"\\e218\";\n}\n.shop-container .glyphicon-bed:before {\n  content: \"\\e219\";\n}\n.shop-container .glyphicon-apple:before {\n  content: \"\\f8ff\";\n}\n.shop-container .glyphicon-erase:before {\n  content: \"\\e221\";\n}\n.shop-container .glyphicon-hourglass:before {\n  content: \"⌛\";\n}\n.shop-container .glyphicon-lamp:before {\n  content: \"\\e223\";\n}\n.shop-container .glyphicon-duplicate:before {\n  content: \"\\e224\";\n}\n.shop-container .glyphicon-piggy-bank:before {\n  content: \"\\e225\";\n}\n.shop-container .glyphicon-scissors:before {\n  content: \"\\e226\";\n}\n.shop-container .glyphicon-bitcoin:before {\n  content: \"\\e227\";\n}\n.shop-container .glyphicon-btc:before {\n  content: \"\\e227\";\n}\n.shop-container .glyphicon-xbt:before {\n  content: \"\\e227\";\n}\n.shop-container .glyphicon-yen:before {\n  content: \"¥\";\n}\n.shop-container .glyphicon-jpy:before {\n  content: \"¥\";\n}\n.shop-container .glyphicon-ruble:before {\n  content: \"₽\";\n}\n.shop-container .glyphicon-rub:before {\n  content: \"₽\";\n}\n.shop-container .glyphicon-scale:before {\n  content: \"\\e230\";\n}\n.shop-container .glyphicon-ice-lolly:before {\n  content: \"\\e231\";\n}\n.shop-container .glyphicon-ice-lolly-tasted:before {\n  content: \"\\e232\";\n}\n.shop-container .glyphicon-education:before {\n  content: \"\\e233\";\n}\n.shop-container .glyphicon-option-horizontal:before {\n  content: \"\\e234\";\n}\n.shop-container .glyphicon-option-vertical:before {\n  content: \"\\e235\";\n}\n.shop-container .glyphicon-menu-hamburger:before {\n  content: \"\\e236\";\n}\n.shop-container .glyphicon-modal-window:before {\n  content: \"\\e237\";\n}\n.shop-container .glyphicon-oil:before {\n  content: \"\\e238\";\n}\n.shop-container .glyphicon-grain:before {\n  content: \"\\e239\";\n}\n.shop-container .glyphicon-sunglasses:before {\n  content: \"\\e240\";\n}\n.shop-container .glyphicon-text-size:before {\n  content: \"\\e241\";\n}\n.shop-container .glyphicon-text-color:before {\n  content: \"\\e242\";\n}\n.shop-container .glyphicon-text-background:before {\n  content: \"\\e243\";\n}\n.shop-container .glyphicon-object-align-top:before {\n  content: \"\\e244\";\n}\n.shop-container .glyphicon-object-align-bottom:before {\n  content: \"\\e245\";\n}\n.shop-container .glyphicon-object-align-horizontal:before {\n  content: \"\\e246\";\n}\n.shop-container .glyphicon-object-align-left:before {\n  content: \"\\e247\";\n}\n.shop-container .glyphicon-object-align-vertical:before {\n  content: \"\\e248\";\n}\n.shop-container .glyphicon-object-align-right:before {\n  content: \"\\e249\";\n}\n.shop-container .glyphicon-triangle-right:before {\n  content: \"\\e250\";\n}\n.shop-container .glyphicon-triangle-left:before {\n  content: \"\\e251\";\n}\n.shop-container .glyphicon-triangle-bottom:before {\n  content: \"\\e252\";\n}\n.shop-container .glyphicon-triangle-top:before {\n  content: \"\\e253\";\n}\n.shop-container .glyphicon-console:before {\n  content: \"\\e254\";\n}\n.shop-container .glyphicon-superscript:before {\n  content: \"\\e255\";\n}\n.shop-container .glyphicon-subscript:before {\n  content: \"\\e256\";\n}\n.shop-container .glyphicon-menu-left:before {\n  content: \"\\e257\";\n}\n.shop-container .glyphicon-menu-right:before {\n  content: \"\\e258\";\n}\n.shop-container .glyphicon-menu-down:before {\n  content: \"\\e259\";\n}\n.shop-container .glyphicon-menu-up:before {\n  content: \"\\e260\";\n}\n.shop-container * {\n  box-sizing: border-box;\n}\n.shop-container *:before,\n.shop-container *:after {\n  box-sizing: border-box;\n}\n.shop-container html {\n  font-size: 10px;\n  -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n}\n.shop-container body {\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: #333333;\n  background-color: #fff;\n}\n.shop-container input,\n.shop-container button,\n.shop-container select,\n.shop-container textarea {\n  font-family: inherit;\n  font-size: inherit;\n  line-height: inherit;\n}\n.shop-container a {\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  text-decoration: none;\n}\n.shop-container a:hover, .shop-container a:focus {\n  color: rgb(34.6799586777, 82.4466942149, 123.6700413223);\n  text-decoration: underline;\n}\n.shop-container a:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.shop-container figure {\n  margin: 0;\n}\n.shop-container img {\n  vertical-align: middle;\n}\n.shop-container .img-responsive {\n  display: block;\n  max-width: 100%;\n  height: auto;\n}\n.shop-container .img-rounded {\n  border-radius: 6px;\n}\n.shop-container .img-thumbnail {\n  padding: 4px;\n  line-height: 1.428571429;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  transition: all 0.2s ease-in-out;\n  display: inline-block;\n  max-width: 100%;\n  height: auto;\n}\n.shop-container .img-circle {\n  border-radius: 50%;\n}\n.shop-container hr {\n  margin-top: 20px;\n  margin-bottom: 20px;\n  border: 0;\n  border-top: 1px solid rgb(238.425, 238.425, 238.425);\n}\n.shop-container .sr-only {\n  position: absolute;\n  width: 1px;\n  height: 1px;\n  padding: 0;\n  margin: -1px;\n  overflow: hidden;\n  clip: rect(0, 0, 0, 0);\n  border: 0;\n}\n.shop-container .sr-only-focusable:active, .shop-container .sr-only-focusable:focus {\n  position: static;\n  width: auto;\n  height: auto;\n  margin: 0;\n  overflow: visible;\n  clip: auto;\n}\n.shop-container [role=button] {\n  cursor: pointer;\n}\n.shop-container h1, .shop-container h2, .shop-container h3, .shop-container h4, .shop-container h5, .shop-container h6,\n.shop-container .h1, .shop-container .h2, .shop-container .h3, .shop-container .h4, .shop-container .h5, .shop-container .h6 {\n  font-family: inherit;\n  font-weight: 500;\n  line-height: 1.1;\n  color: inherit;\n}\n.shop-container h1 small,\n.shop-container h1 .small, .shop-container h2 small,\n.shop-container h2 .small, .shop-container h3 small,\n.shop-container h3 .small, .shop-container h4 small,\n.shop-container h4 .small, .shop-container h5 small,\n.shop-container h5 .small, .shop-container h6 small,\n.shop-container h6 .small,\n.shop-container .h1 small,\n.shop-container .h1 .small, .shop-container .h2 small,\n.shop-container .h2 .small, .shop-container .h3 small,\n.shop-container .h3 .small, .shop-container .h4 small,\n.shop-container .h4 .small, .shop-container .h5 small,\n.shop-container .h5 .small, .shop-container .h6 small,\n.shop-container .h6 .small {\n  font-weight: 400;\n  line-height: 1;\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container h1, .shop-container .h1,\n.shop-container h2, .shop-container .h2,\n.shop-container h3, .shop-container .h3 {\n  margin-top: 20px;\n  margin-bottom: 10px;\n}\n.shop-container h1 small,\n.shop-container h1 .small, .shop-container .h1 small,\n.shop-container .h1 .small,\n.shop-container h2 small,\n.shop-container h2 .small, .shop-container .h2 small,\n.shop-container .h2 .small,\n.shop-container h3 small,\n.shop-container h3 .small, .shop-container .h3 small,\n.shop-container .h3 .small {\n  font-size: 65%;\n}\n.shop-container h4, .shop-container .h4,\n.shop-container h5, .shop-container .h5,\n.shop-container h6, .shop-container .h6 {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.shop-container h4 small,\n.shop-container h4 .small, .shop-container .h4 small,\n.shop-container .h4 .small,\n.shop-container h5 small,\n.shop-container h5 .small, .shop-container .h5 small,\n.shop-container .h5 .small,\n.shop-container h6 small,\n.shop-container h6 .small, .shop-container .h6 small,\n.shop-container .h6 .small {\n  font-size: 75%;\n}\n.shop-container h1, .shop-container .h1 {\n  font-size: 36px;\n}\n.shop-container h2, .shop-container .h2 {\n  font-size: 30px;\n}\n.shop-container h3, .shop-container .h3 {\n  font-size: 24px;\n}\n.shop-container h4, .shop-container .h4 {\n  font-size: 18px;\n}\n.shop-container h5, .shop-container .h5 {\n  font-size: 14px;\n}\n.shop-container h6, .shop-container .h6 {\n  font-size: 12px;\n}\n.shop-container p {\n  margin: 0 0 10px;\n}\n.shop-container .lead {\n  margin-bottom: 20px;\n  font-size: 16px;\n  font-weight: 300;\n  line-height: 1.4;\n}\n@media (min-width: 768px) {\n  .shop-container .lead {\n    font-size: 21px;\n  }\n}\n.shop-container small,\n.shop-container .small {\n  font-size: 85%;\n}\n.shop-container mark,\n.shop-container .mark {\n  padding: 0.2em;\n  background-color: #fcf8e3;\n}\n.shop-container .text-left {\n  text-align: left;\n}\n.shop-container .text-right {\n  text-align: right;\n}\n.shop-container .text-center {\n  text-align: center;\n}\n.shop-container .text-justify {\n  text-align: justify;\n}\n.shop-container .text-nowrap {\n  white-space: nowrap;\n}\n.shop-container .text-lowercase {\n  text-transform: lowercase;\n}\n.shop-container .text-uppercase, .shop-container .initialism {\n  text-transform: uppercase;\n}\n.shop-container .text-capitalize {\n  text-transform: capitalize;\n}\n.shop-container .text-muted {\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .text-primary {\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container a.text-primary:hover,\n.shop-container a.text-primary:focus {\n  color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n}\n.shop-container .text-success {\n  color: #3c763d;\n}\n.shop-container a.text-success:hover,\n.shop-container a.text-success:focus {\n  color: rgb(42.808988764, 84.191011236, 43.5224719101);\n}\n.shop-container .text-info {\n  color: #31708f;\n}\n.shop-container a.text-info:hover,\n.shop-container a.text-info:focus {\n  color: rgb(35.984375, 82.25, 105.015625);\n}\n.shop-container .text-warning {\n  color: #8a6d3b;\n}\n.shop-container a.text-warning:hover,\n.shop-container a.text-warning:focus {\n  color: rgb(102.2741116751, 80.7817258883, 43.7258883249);\n}\n.shop-container .text-danger {\n  color: #a94442;\n}\n.shop-container a.text-danger:hover,\n.shop-container a.text-danger:focus {\n  color: rgb(132.3234042553, 53.2425531915, 51.6765957447);\n}\n.shop-container .bg-primary {\n  color: #fff;\n}\n.shop-container .bg-primary {\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container a.bg-primary:hover,\n.shop-container a.bg-primary:focus {\n  background-color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n}\n.shop-container .bg-success {\n  background-color: #dff0d8;\n}\n.shop-container a.bg-success:hover,\n.shop-container a.bg-success:focus {\n  background-color: rgb(192.7777777778, 225.8333333333, 179.1666666667);\n}\n.shop-container .bg-info {\n  background-color: #d9edf7;\n}\n.shop-container a.bg-info:hover,\n.shop-container a.bg-info:focus {\n  background-color: rgb(174.8695652174, 217.0434782609, 238.1304347826);\n}\n.shop-container .bg-warning {\n  background-color: #fcf8e3;\n}\n.shop-container a.bg-warning:hover,\n.shop-container a.bg-warning:focus {\n  background-color: rgb(247.064516129, 236.4838709677, 180.935483871);\n}\n.shop-container .bg-danger {\n  background-color: #f2dede;\n}\n.shop-container a.bg-danger:hover,\n.shop-container a.bg-danger:focus {\n  background-color: rgb(227.5869565217, 185.4130434783, 185.4130434783);\n}\n.shop-container .page-header {\n  padding-bottom: 9px;\n  margin: 40px 0 20px;\n  border-bottom: 1px solid rgb(238.425, 238.425, 238.425);\n}\n.shop-container ul,\n.shop-container ol {\n  margin-top: 0;\n  margin-bottom: 10px;\n}\n.shop-container ul ul,\n.shop-container ul ol,\n.shop-container ol ul,\n.shop-container ol ol {\n  margin-bottom: 0;\n}\n.shop-container .list-unstyled {\n  padding-left: 0;\n  list-style: none;\n}\n.shop-container .list-inline {\n  padding-left: 0;\n  list-style: none;\n  margin-left: -5px;\n}\n.shop-container .list-inline > li {\n  display: inline-block;\n  padding-right: 5px;\n  padding-left: 5px;\n}\n.shop-container dl {\n  margin-top: 0;\n  margin-bottom: 20px;\n}\n.shop-container dt,\n.shop-container dd {\n  line-height: 1.428571429;\n}\n.shop-container dt {\n  font-weight: 700;\n}\n.shop-container dd {\n  margin-left: 0;\n}\n.shop-container .dl-horizontal dd:before, .shop-container .dl-horizontal dd:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .dl-horizontal dd:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .shop-container .dl-horizontal dt {\n    float: left;\n    width: 160px;\n    clear: left;\n    text-align: right;\n    overflow: hidden;\n    text-overflow: ellipsis;\n    white-space: nowrap;\n  }\n  .shop-container .dl-horizontal dd {\n    margin-left: 180px;\n  }\n}\n.shop-container abbr[title],\n.shop-container abbr[data-original-title] {\n  cursor: help;\n}\n.shop-container .initialism {\n  font-size: 90%;\n}\n.shop-container blockquote {\n  padding: 10px 20px;\n  margin: 0 0 20px;\n  font-size: 17.5px;\n  border-left: 5px solid rgb(238.425, 238.425, 238.425);\n}\n.shop-container blockquote p:last-child,\n.shop-container blockquote ul:last-child,\n.shop-container blockquote ol:last-child {\n  margin-bottom: 0;\n}\n.shop-container blockquote footer,\n.shop-container blockquote small,\n.shop-container blockquote .small {\n  display: block;\n  font-size: 80%;\n  line-height: 1.428571429;\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container blockquote footer:before,\n.shop-container blockquote small:before,\n.shop-container blockquote .small:before {\n  content: \"— \";\n}\n.shop-container .blockquote-reverse,\n.shop-container blockquote.pull-right {\n  padding-right: 15px;\n  padding-left: 0;\n  text-align: right;\n  border-right: 5px solid rgb(238.425, 238.425, 238.425);\n  border-left: 0;\n}\n.shop-container .blockquote-reverse footer:before,\n.shop-container .blockquote-reverse small:before,\n.shop-container .blockquote-reverse .small:before,\n.shop-container blockquote.pull-right footer:before,\n.shop-container blockquote.pull-right small:before,\n.shop-container blockquote.pull-right .small:before {\n  content: \"\";\n}\n.shop-container .blockquote-reverse footer:after,\n.shop-container .blockquote-reverse small:after,\n.shop-container .blockquote-reverse .small:after,\n.shop-container blockquote.pull-right footer:after,\n.shop-container blockquote.pull-right small:after,\n.shop-container blockquote.pull-right .small:after {\n  content: \" —\";\n}\n.shop-container address {\n  margin-bottom: 20px;\n  font-style: normal;\n  line-height: 1.428571429;\n}\n.shop-container code,\n.shop-container kbd,\n.shop-container pre,\n.shop-container samp {\n  font-family: Menlo, Monaco, Consolas, \"Courier New\", monospace;\n}\n.shop-container code {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #c7254e;\n  background-color: #f9f2f4;\n  border-radius: 4px;\n}\n.shop-container kbd {\n  padding: 2px 4px;\n  font-size: 90%;\n  color: #fff;\n  background-color: #333;\n  border-radius: 3px;\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25);\n}\n.shop-container kbd kbd {\n  padding: 0;\n  font-size: 100%;\n  font-weight: 700;\n  box-shadow: none;\n}\n.shop-container pre {\n  display: block;\n  padding: 9.5px;\n  margin: 0 0 10px;\n  font-size: 13px;\n  line-height: 1.428571429;\n  color: #333333;\n  word-break: break-all;\n  word-wrap: break-word;\n  background-color: #f5f5f5;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.shop-container pre code {\n  padding: 0;\n  font-size: inherit;\n  color: inherit;\n  white-space: pre-wrap;\n  background-color: transparent;\n  border-radius: 0;\n}\n.shop-container .pre-scrollable {\n  max-height: 340px;\n  overflow-y: scroll;\n}\n.shop-container .container {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.shop-container .container:before, .shop-container .container:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .container:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .shop-container .container {\n    width: 750px;\n  }\n}\n@media (min-width: 992px) {\n  .shop-container .container {\n    width: 970px;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .container {\n    width: 1170px;\n  }\n}\n.shop-container .container-fluid {\n  padding-right: 15px;\n  padding-left: 15px;\n  margin-right: auto;\n  margin-left: auto;\n}\n.shop-container .container-fluid:before, .shop-container .container-fluid:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .container-fluid:after {\n  clear: both;\n}\n.shop-container .row {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.shop-container .row:before, .shop-container .row:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .row:after {\n  clear: both;\n}\n.shop-container .row-no-gutters {\n  margin-right: 0;\n  margin-left: 0;\n}\n.shop-container .row-no-gutters [class*=col-] {\n  padding-right: 0;\n  padding-left: 0;\n}\n.shop-container .col-xs-1, .shop-container .col-sm-1, .shop-container .col-md-1, .shop-container .col-lg-1, .shop-container .col-xs-2, .shop-container .col-sm-2, .shop-container .col-md-2, .shop-container .col-lg-2, .shop-container .col-xs-3, .shop-container .col-sm-3, .shop-container .col-md-3, .shop-container .col-lg-3, .shop-container .col-xs-4, .shop-container .col-sm-4, .shop-container .col-md-4, .shop-container .col-lg-4, .shop-container .col-xs-5, .shop-container .col-sm-5, .shop-container .col-md-5, .shop-container .col-lg-5, .shop-container .col-xs-6, .shop-container .col-sm-6, .shop-container .col-md-6, .shop-container .col-lg-6, .shop-container .col-xs-7, .shop-container .col-sm-7, .shop-container .col-md-7, .shop-container .col-lg-7, .shop-container .col-xs-8, .shop-container .col-sm-8, .shop-container .col-md-8, .shop-container .col-lg-8, .shop-container .col-xs-9, .shop-container .col-sm-9, .shop-container .col-md-9, .shop-container .col-lg-9, .shop-container .col-xs-10, .shop-container .col-sm-10, .shop-container .col-md-10, .shop-container .col-lg-10, .shop-container .col-xs-11, .shop-container .col-sm-11, .shop-container .col-md-11, .shop-container .col-lg-11, .shop-container .col-xs-12, .shop-container .col-sm-12, .shop-container .col-md-12, .shop-container .col-lg-12 {\n  position: relative;\n  min-height: 1px;\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.shop-container .col-xs-1, .shop-container .col-xs-2, .shop-container .col-xs-3, .shop-container .col-xs-4, .shop-container .col-xs-5, .shop-container .col-xs-6, .shop-container .col-xs-7, .shop-container .col-xs-8, .shop-container .col-xs-9, .shop-container .col-xs-10, .shop-container .col-xs-11, .shop-container .col-xs-12 {\n  float: left;\n}\n.shop-container .col-xs-1 {\n  width: 8.3333333333%;\n}\n.shop-container .col-xs-2 {\n  width: 16.6666666667%;\n}\n.shop-container .col-xs-3 {\n  width: 25%;\n}\n.shop-container .col-xs-4 {\n  width: 33.3333333333%;\n}\n.shop-container .col-xs-5 {\n  width: 41.6666666667%;\n}\n.shop-container .col-xs-6 {\n  width: 50%;\n}\n.shop-container .col-xs-7 {\n  width: 58.3333333333%;\n}\n.shop-container .col-xs-8 {\n  width: 66.6666666667%;\n}\n.shop-container .col-xs-9 {\n  width: 75%;\n}\n.shop-container .col-xs-10 {\n  width: 83.3333333333%;\n}\n.shop-container .col-xs-11 {\n  width: 91.6666666667%;\n}\n.shop-container .col-xs-12 {\n  width: 100%;\n}\n.shop-container .col-xs-pull-0 {\n  right: auto;\n}\n.shop-container .col-xs-pull-1 {\n  right: 8.3333333333%;\n}\n.shop-container .col-xs-pull-2 {\n  right: 16.6666666667%;\n}\n.shop-container .col-xs-pull-3 {\n  right: 25%;\n}\n.shop-container .col-xs-pull-4 {\n  right: 33.3333333333%;\n}\n.shop-container .col-xs-pull-5 {\n  right: 41.6666666667%;\n}\n.shop-container .col-xs-pull-6 {\n  right: 50%;\n}\n.shop-container .col-xs-pull-7 {\n  right: 58.3333333333%;\n}\n.shop-container .col-xs-pull-8 {\n  right: 66.6666666667%;\n}\n.shop-container .col-xs-pull-9 {\n  right: 75%;\n}\n.shop-container .col-xs-pull-10 {\n  right: 83.3333333333%;\n}\n.shop-container .col-xs-pull-11 {\n  right: 91.6666666667%;\n}\n.shop-container .col-xs-pull-12 {\n  right: 100%;\n}\n.shop-container .col-xs-push-0 {\n  left: auto;\n}\n.shop-container .col-xs-push-1 {\n  left: 8.3333333333%;\n}\n.shop-container .col-xs-push-2 {\n  left: 16.6666666667%;\n}\n.shop-container .col-xs-push-3 {\n  left: 25%;\n}\n.shop-container .col-xs-push-4 {\n  left: 33.3333333333%;\n}\n.shop-container .col-xs-push-5 {\n  left: 41.6666666667%;\n}\n.shop-container .col-xs-push-6 {\n  left: 50%;\n}\n.shop-container .col-xs-push-7 {\n  left: 58.3333333333%;\n}\n.shop-container .col-xs-push-8 {\n  left: 66.6666666667%;\n}\n.shop-container .col-xs-push-9 {\n  left: 75%;\n}\n.shop-container .col-xs-push-10 {\n  left: 83.3333333333%;\n}\n.shop-container .col-xs-push-11 {\n  left: 91.6666666667%;\n}\n.shop-container .col-xs-push-12 {\n  left: 100%;\n}\n.shop-container .col-xs-offset-0 {\n  margin-left: 0%;\n}\n.shop-container .col-xs-offset-1 {\n  margin-left: 8.3333333333%;\n}\n.shop-container .col-xs-offset-2 {\n  margin-left: 16.6666666667%;\n}\n.shop-container .col-xs-offset-3 {\n  margin-left: 25%;\n}\n.shop-container .col-xs-offset-4 {\n  margin-left: 33.3333333333%;\n}\n.shop-container .col-xs-offset-5 {\n  margin-left: 41.6666666667%;\n}\n.shop-container .col-xs-offset-6 {\n  margin-left: 50%;\n}\n.shop-container .col-xs-offset-7 {\n  margin-left: 58.3333333333%;\n}\n.shop-container .col-xs-offset-8 {\n  margin-left: 66.6666666667%;\n}\n.shop-container .col-xs-offset-9 {\n  margin-left: 75%;\n}\n.shop-container .col-xs-offset-10 {\n  margin-left: 83.3333333333%;\n}\n.shop-container .col-xs-offset-11 {\n  margin-left: 91.6666666667%;\n}\n.shop-container .col-xs-offset-12 {\n  margin-left: 100%;\n}\n@media (min-width: 768px) {\n  .shop-container .col-sm-1, .shop-container .col-sm-2, .shop-container .col-sm-3, .shop-container .col-sm-4, .shop-container .col-sm-5, .shop-container .col-sm-6, .shop-container .col-sm-7, .shop-container .col-sm-8, .shop-container .col-sm-9, .shop-container .col-sm-10, .shop-container .col-sm-11, .shop-container .col-sm-12 {\n    float: left;\n  }\n  .shop-container .col-sm-1 {\n    width: 8.3333333333%;\n  }\n  .shop-container .col-sm-2 {\n    width: 16.6666666667%;\n  }\n  .shop-container .col-sm-3 {\n    width: 25%;\n  }\n  .shop-container .col-sm-4 {\n    width: 33.3333333333%;\n  }\n  .shop-container .col-sm-5 {\n    width: 41.6666666667%;\n  }\n  .shop-container .col-sm-6 {\n    width: 50%;\n  }\n  .shop-container .col-sm-7 {\n    width: 58.3333333333%;\n  }\n  .shop-container .col-sm-8 {\n    width: 66.6666666667%;\n  }\n  .shop-container .col-sm-9 {\n    width: 75%;\n  }\n  .shop-container .col-sm-10 {\n    width: 83.3333333333%;\n  }\n  .shop-container .col-sm-11 {\n    width: 91.6666666667%;\n  }\n  .shop-container .col-sm-12 {\n    width: 100%;\n  }\n  .shop-container .col-sm-pull-0 {\n    right: auto;\n  }\n  .shop-container .col-sm-pull-1 {\n    right: 8.3333333333%;\n  }\n  .shop-container .col-sm-pull-2 {\n    right: 16.6666666667%;\n  }\n  .shop-container .col-sm-pull-3 {\n    right: 25%;\n  }\n  .shop-container .col-sm-pull-4 {\n    right: 33.3333333333%;\n  }\n  .shop-container .col-sm-pull-5 {\n    right: 41.6666666667%;\n  }\n  .shop-container .col-sm-pull-6 {\n    right: 50%;\n  }\n  .shop-container .col-sm-pull-7 {\n    right: 58.3333333333%;\n  }\n  .shop-container .col-sm-pull-8 {\n    right: 66.6666666667%;\n  }\n  .shop-container .col-sm-pull-9 {\n    right: 75%;\n  }\n  .shop-container .col-sm-pull-10 {\n    right: 83.3333333333%;\n  }\n  .shop-container .col-sm-pull-11 {\n    right: 91.6666666667%;\n  }\n  .shop-container .col-sm-pull-12 {\n    right: 100%;\n  }\n  .shop-container .col-sm-push-0 {\n    left: auto;\n  }\n  .shop-container .col-sm-push-1 {\n    left: 8.3333333333%;\n  }\n  .shop-container .col-sm-push-2 {\n    left: 16.6666666667%;\n  }\n  .shop-container .col-sm-push-3 {\n    left: 25%;\n  }\n  .shop-container .col-sm-push-4 {\n    left: 33.3333333333%;\n  }\n  .shop-container .col-sm-push-5 {\n    left: 41.6666666667%;\n  }\n  .shop-container .col-sm-push-6 {\n    left: 50%;\n  }\n  .shop-container .col-sm-push-7 {\n    left: 58.3333333333%;\n  }\n  .shop-container .col-sm-push-8 {\n    left: 66.6666666667%;\n  }\n  .shop-container .col-sm-push-9 {\n    left: 75%;\n  }\n  .shop-container .col-sm-push-10 {\n    left: 83.3333333333%;\n  }\n  .shop-container .col-sm-push-11 {\n    left: 91.6666666667%;\n  }\n  .shop-container .col-sm-push-12 {\n    left: 100%;\n  }\n  .shop-container .col-sm-offset-0 {\n    margin-left: 0%;\n  }\n  .shop-container .col-sm-offset-1 {\n    margin-left: 8.3333333333%;\n  }\n  .shop-container .col-sm-offset-2 {\n    margin-left: 16.6666666667%;\n  }\n  .shop-container .col-sm-offset-3 {\n    margin-left: 25%;\n  }\n  .shop-container .col-sm-offset-4 {\n    margin-left: 33.3333333333%;\n  }\n  .shop-container .col-sm-offset-5 {\n    margin-left: 41.6666666667%;\n  }\n  .shop-container .col-sm-offset-6 {\n    margin-left: 50%;\n  }\n  .shop-container .col-sm-offset-7 {\n    margin-left: 58.3333333333%;\n  }\n  .shop-container .col-sm-offset-8 {\n    margin-left: 66.6666666667%;\n  }\n  .shop-container .col-sm-offset-9 {\n    margin-left: 75%;\n  }\n  .shop-container .col-sm-offset-10 {\n    margin-left: 83.3333333333%;\n  }\n  .shop-container .col-sm-offset-11 {\n    margin-left: 91.6666666667%;\n  }\n  .shop-container .col-sm-offset-12 {\n    margin-left: 100%;\n  }\n}\n@media (min-width: 992px) {\n  .shop-container .col-md-1, .shop-container .col-md-2, .shop-container .col-md-3, .shop-container .col-md-4, .shop-container .col-md-5, .shop-container .col-md-6, .shop-container .col-md-7, .shop-container .col-md-8, .shop-container .col-md-9, .shop-container .col-md-10, .shop-container .col-md-11, .shop-container .col-md-12 {\n    float: left;\n  }\n  .shop-container .col-md-1 {\n    width: 8.3333333333%;\n  }\n  .shop-container .col-md-2 {\n    width: 16.6666666667%;\n  }\n  .shop-container .col-md-3 {\n    width: 25%;\n  }\n  .shop-container .col-md-4 {\n    width: 33.3333333333%;\n  }\n  .shop-container .col-md-5 {\n    width: 41.6666666667%;\n  }\n  .shop-container .col-md-6 {\n    width: 50%;\n  }\n  .shop-container .col-md-7 {\n    width: 58.3333333333%;\n  }\n  .shop-container .col-md-8 {\n    width: 66.6666666667%;\n  }\n  .shop-container .col-md-9 {\n    width: 75%;\n  }\n  .shop-container .col-md-10 {\n    width: 83.3333333333%;\n  }\n  .shop-container .col-md-11 {\n    width: 91.6666666667%;\n  }\n  .shop-container .col-md-12 {\n    width: 100%;\n  }\n  .shop-container .col-md-pull-0 {\n    right: auto;\n  }\n  .shop-container .col-md-pull-1 {\n    right: 8.3333333333%;\n  }\n  .shop-container .col-md-pull-2 {\n    right: 16.6666666667%;\n  }\n  .shop-container .col-md-pull-3 {\n    right: 25%;\n  }\n  .shop-container .col-md-pull-4 {\n    right: 33.3333333333%;\n  }\n  .shop-container .col-md-pull-5 {\n    right: 41.6666666667%;\n  }\n  .shop-container .col-md-pull-6 {\n    right: 50%;\n  }\n  .shop-container .col-md-pull-7 {\n    right: 58.3333333333%;\n  }\n  .shop-container .col-md-pull-8 {\n    right: 66.6666666667%;\n  }\n  .shop-container .col-md-pull-9 {\n    right: 75%;\n  }\n  .shop-container .col-md-pull-10 {\n    right: 83.3333333333%;\n  }\n  .shop-container .col-md-pull-11 {\n    right: 91.6666666667%;\n  }\n  .shop-container .col-md-pull-12 {\n    right: 100%;\n  }\n  .shop-container .col-md-push-0 {\n    left: auto;\n  }\n  .shop-container .col-md-push-1 {\n    left: 8.3333333333%;\n  }\n  .shop-container .col-md-push-2 {\n    left: 16.6666666667%;\n  }\n  .shop-container .col-md-push-3 {\n    left: 25%;\n  }\n  .shop-container .col-md-push-4 {\n    left: 33.3333333333%;\n  }\n  .shop-container .col-md-push-5 {\n    left: 41.6666666667%;\n  }\n  .shop-container .col-md-push-6 {\n    left: 50%;\n  }\n  .shop-container .col-md-push-7 {\n    left: 58.3333333333%;\n  }\n  .shop-container .col-md-push-8 {\n    left: 66.6666666667%;\n  }\n  .shop-container .col-md-push-9 {\n    left: 75%;\n  }\n  .shop-container .col-md-push-10 {\n    left: 83.3333333333%;\n  }\n  .shop-container .col-md-push-11 {\n    left: 91.6666666667%;\n  }\n  .shop-container .col-md-push-12 {\n    left: 100%;\n  }\n  .shop-container .col-md-offset-0 {\n    margin-left: 0%;\n  }\n  .shop-container .col-md-offset-1 {\n    margin-left: 8.3333333333%;\n  }\n  .shop-container .col-md-offset-2 {\n    margin-left: 16.6666666667%;\n  }\n  .shop-container .col-md-offset-3 {\n    margin-left: 25%;\n  }\n  .shop-container .col-md-offset-4 {\n    margin-left: 33.3333333333%;\n  }\n  .shop-container .col-md-offset-5 {\n    margin-left: 41.6666666667%;\n  }\n  .shop-container .col-md-offset-6 {\n    margin-left: 50%;\n  }\n  .shop-container .col-md-offset-7 {\n    margin-left: 58.3333333333%;\n  }\n  .shop-container .col-md-offset-8 {\n    margin-left: 66.6666666667%;\n  }\n  .shop-container .col-md-offset-9 {\n    margin-left: 75%;\n  }\n  .shop-container .col-md-offset-10 {\n    margin-left: 83.3333333333%;\n  }\n  .shop-container .col-md-offset-11 {\n    margin-left: 91.6666666667%;\n  }\n  .shop-container .col-md-offset-12 {\n    margin-left: 100%;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .col-lg-1, .shop-container .col-lg-2, .shop-container .col-lg-3, .shop-container .col-lg-4, .shop-container .col-lg-5, .shop-container .col-lg-6, .shop-container .col-lg-7, .shop-container .col-lg-8, .shop-container .col-lg-9, .shop-container .col-lg-10, .shop-container .col-lg-11, .shop-container .col-lg-12 {\n    float: left;\n  }\n  .shop-container .col-lg-1 {\n    width: 8.3333333333%;\n  }\n  .shop-container .col-lg-2 {\n    width: 16.6666666667%;\n  }\n  .shop-container .col-lg-3 {\n    width: 25%;\n  }\n  .shop-container .col-lg-4 {\n    width: 33.3333333333%;\n  }\n  .shop-container .col-lg-5 {\n    width: 41.6666666667%;\n  }\n  .shop-container .col-lg-6 {\n    width: 50%;\n  }\n  .shop-container .col-lg-7 {\n    width: 58.3333333333%;\n  }\n  .shop-container .col-lg-8 {\n    width: 66.6666666667%;\n  }\n  .shop-container .col-lg-9 {\n    width: 75%;\n  }\n  .shop-container .col-lg-10 {\n    width: 83.3333333333%;\n  }\n  .shop-container .col-lg-11 {\n    width: 91.6666666667%;\n  }\n  .shop-container .col-lg-12 {\n    width: 100%;\n  }\n  .shop-container .col-lg-pull-0 {\n    right: auto;\n  }\n  .shop-container .col-lg-pull-1 {\n    right: 8.3333333333%;\n  }\n  .shop-container .col-lg-pull-2 {\n    right: 16.6666666667%;\n  }\n  .shop-container .col-lg-pull-3 {\n    right: 25%;\n  }\n  .shop-container .col-lg-pull-4 {\n    right: 33.3333333333%;\n  }\n  .shop-container .col-lg-pull-5 {\n    right: 41.6666666667%;\n  }\n  .shop-container .col-lg-pull-6 {\n    right: 50%;\n  }\n  .shop-container .col-lg-pull-7 {\n    right: 58.3333333333%;\n  }\n  .shop-container .col-lg-pull-8 {\n    right: 66.6666666667%;\n  }\n  .shop-container .col-lg-pull-9 {\n    right: 75%;\n  }\n  .shop-container .col-lg-pull-10 {\n    right: 83.3333333333%;\n  }\n  .shop-container .col-lg-pull-11 {\n    right: 91.6666666667%;\n  }\n  .shop-container .col-lg-pull-12 {\n    right: 100%;\n  }\n  .shop-container .col-lg-push-0 {\n    left: auto;\n  }\n  .shop-container .col-lg-push-1 {\n    left: 8.3333333333%;\n  }\n  .shop-container .col-lg-push-2 {\n    left: 16.6666666667%;\n  }\n  .shop-container .col-lg-push-3 {\n    left: 25%;\n  }\n  .shop-container .col-lg-push-4 {\n    left: 33.3333333333%;\n  }\n  .shop-container .col-lg-push-5 {\n    left: 41.6666666667%;\n  }\n  .shop-container .col-lg-push-6 {\n    left: 50%;\n  }\n  .shop-container .col-lg-push-7 {\n    left: 58.3333333333%;\n  }\n  .shop-container .col-lg-push-8 {\n    left: 66.6666666667%;\n  }\n  .shop-container .col-lg-push-9 {\n    left: 75%;\n  }\n  .shop-container .col-lg-push-10 {\n    left: 83.3333333333%;\n  }\n  .shop-container .col-lg-push-11 {\n    left: 91.6666666667%;\n  }\n  .shop-container .col-lg-push-12 {\n    left: 100%;\n  }\n  .shop-container .col-lg-offset-0 {\n    margin-left: 0%;\n  }\n  .shop-container .col-lg-offset-1 {\n    margin-left: 8.3333333333%;\n  }\n  .shop-container .col-lg-offset-2 {\n    margin-left: 16.6666666667%;\n  }\n  .shop-container .col-lg-offset-3 {\n    margin-left: 25%;\n  }\n  .shop-container .col-lg-offset-4 {\n    margin-left: 33.3333333333%;\n  }\n  .shop-container .col-lg-offset-5 {\n    margin-left: 41.6666666667%;\n  }\n  .shop-container .col-lg-offset-6 {\n    margin-left: 50%;\n  }\n  .shop-container .col-lg-offset-7 {\n    margin-left: 58.3333333333%;\n  }\n  .shop-container .col-lg-offset-8 {\n    margin-left: 66.6666666667%;\n  }\n  .shop-container .col-lg-offset-9 {\n    margin-left: 75%;\n  }\n  .shop-container .col-lg-offset-10 {\n    margin-left: 83.3333333333%;\n  }\n  .shop-container .col-lg-offset-11 {\n    margin-left: 91.6666666667%;\n  }\n  .shop-container .col-lg-offset-12 {\n    margin-left: 100%;\n  }\n}\n.shop-container table {\n  background-color: transparent;\n}\n.shop-container table col[class*=col-] {\n  position: static;\n  display: table-column;\n  float: none;\n}\n.shop-container table td[class*=col-],\n.shop-container table th[class*=col-] {\n  position: static;\n  display: table-cell;\n  float: none;\n}\n.shop-container caption {\n  padding-top: 8px;\n  padding-bottom: 8px;\n  color: rgb(119.085, 119.085, 119.085);\n  text-align: left;\n}\n.shop-container th {\n  text-align: left;\n}\n.shop-container .table {\n  width: 100%;\n  max-width: 100%;\n  margin-bottom: 20px;\n}\n.shop-container .table > thead > tr > th,\n.shop-container .table > thead > tr > td,\n.shop-container .table > tbody > tr > th,\n.shop-container .table > tbody > tr > td,\n.shop-container .table > tfoot > tr > th,\n.shop-container .table > tfoot > tr > td {\n  padding: 8px;\n  line-height: 1.428571429;\n  vertical-align: top;\n  border-top: 1px solid #ddd;\n}\n.shop-container .table > thead > tr > th {\n  vertical-align: bottom;\n  border-bottom: 2px solid #ddd;\n}\n.shop-container .table > caption + thead > tr:first-child > th,\n.shop-container .table > caption + thead > tr:first-child > td,\n.shop-container .table > colgroup + thead > tr:first-child > th,\n.shop-container .table > colgroup + thead > tr:first-child > td,\n.shop-container .table > thead:first-child > tr:first-child > th,\n.shop-container .table > thead:first-child > tr:first-child > td {\n  border-top: 0;\n}\n.shop-container .table > tbody + tbody {\n  border-top: 2px solid #ddd;\n}\n.shop-container .table .table {\n  background-color: #fff;\n}\n.shop-container .table-condensed > thead > tr > th,\n.shop-container .table-condensed > thead > tr > td,\n.shop-container .table-condensed > tbody > tr > th,\n.shop-container .table-condensed > tbody > tr > td,\n.shop-container .table-condensed > tfoot > tr > th,\n.shop-container .table-condensed > tfoot > tr > td {\n  padding: 5px;\n}\n.shop-container .table-bordered {\n  border: 1px solid #ddd;\n}\n.shop-container .table-bordered > thead > tr > th,\n.shop-container .table-bordered > thead > tr > td,\n.shop-container .table-bordered > tbody > tr > th,\n.shop-container .table-bordered > tbody > tr > td,\n.shop-container .table-bordered > tfoot > tr > th,\n.shop-container .table-bordered > tfoot > tr > td {\n  border: 1px solid #ddd;\n}\n.shop-container .table-bordered > thead > tr > th,\n.shop-container .table-bordered > thead > tr > td {\n  border-bottom-width: 2px;\n}\n.shop-container .table-striped > tbody > tr:nth-of-type(odd) {\n  background-color: #f9f9f9;\n}\n.shop-container .table-hover > tbody > tr:hover {\n  background-color: #f5f5f5;\n}\n.shop-container .table > thead > tr > td.active,\n.shop-container .table > thead > tr > th.active, .shop-container .table > thead > tr.active > td, .shop-container .table > thead > tr.active > th,\n.shop-container .table > tbody > tr > td.active,\n.shop-container .table > tbody > tr > th.active,\n.shop-container .table > tbody > tr.active > td,\n.shop-container .table > tbody > tr.active > th,\n.shop-container .table > tfoot > tr > td.active,\n.shop-container .table > tfoot > tr > th.active,\n.shop-container .table > tfoot > tr.active > td,\n.shop-container .table > tfoot > tr.active > th {\n  background-color: #f5f5f5;\n}\n.shop-container .table-hover > tbody > tr > td.active:hover,\n.shop-container .table-hover > tbody > tr > th.active:hover, .shop-container .table-hover > tbody > tr.active:hover > td, .shop-container .table-hover > tbody > tr:hover > .active, .shop-container .table-hover > tbody > tr.active:hover > th {\n  background-color: rgb(232.25, 232.25, 232.25);\n}\n.shop-container .table > thead > tr > td.success,\n.shop-container .table > thead > tr > th.success, .shop-container .table > thead > tr.success > td, .shop-container .table > thead > tr.success > th,\n.shop-container .table > tbody > tr > td.success,\n.shop-container .table > tbody > tr > th.success,\n.shop-container .table > tbody > tr.success > td,\n.shop-container .table > tbody > tr.success > th,\n.shop-container .table > tfoot > tr > td.success,\n.shop-container .table > tfoot > tr > th.success,\n.shop-container .table > tfoot > tr.success > td,\n.shop-container .table > tfoot > tr.success > th {\n  background-color: #dff0d8;\n}\n.shop-container .table-hover > tbody > tr > td.success:hover,\n.shop-container .table-hover > tbody > tr > th.success:hover, .shop-container .table-hover > tbody > tr.success:hover > td, .shop-container .table-hover > tbody > tr:hover > .success, .shop-container .table-hover > tbody > tr.success:hover > th {\n  background-color: rgb(207.8888888889, 232.9166666667, 197.5833333333);\n}\n.shop-container .table > thead > tr > td.info,\n.shop-container .table > thead > tr > th.info, .shop-container .table > thead > tr.info > td, .shop-container .table > thead > tr.info > th,\n.shop-container .table > tbody > tr > td.info,\n.shop-container .table > tbody > tr > th.info,\n.shop-container .table > tbody > tr.info > td,\n.shop-container .table > tbody > tr.info > th,\n.shop-container .table > tfoot > tr > td.info,\n.shop-container .table > tfoot > tr > th.info,\n.shop-container .table > tfoot > tr.info > td,\n.shop-container .table > tfoot > tr.info > th {\n  background-color: #d9edf7;\n}\n.shop-container .table-hover > tbody > tr > td.info:hover,\n.shop-container .table-hover > tbody > tr > th.info:hover, .shop-container .table-hover > tbody > tr.info:hover > td, .shop-container .table-hover > tbody > tr:hover > .info, .shop-container .table-hover > tbody > tr.info:hover > th {\n  background-color: rgb(195.9347826087, 227.0217391304, 242.5652173913);\n}\n.shop-container .table > thead > tr > td.warning,\n.shop-container .table > thead > tr > th.warning, .shop-container .table > thead > tr.warning > td, .shop-container .table > thead > tr.warning > th,\n.shop-container .table > tbody > tr > td.warning,\n.shop-container .table > tbody > tr > th.warning,\n.shop-container .table > tbody > tr.warning > td,\n.shop-container .table > tbody > tr.warning > th,\n.shop-container .table > tfoot > tr > td.warning,\n.shop-container .table > tfoot > tr > th.warning,\n.shop-container .table > tfoot > tr.warning > td,\n.shop-container .table > tfoot > tr.warning > th {\n  background-color: #fcf8e3;\n}\n.shop-container .table-hover > tbody > tr > td.warning:hover,\n.shop-container .table-hover > tbody > tr > th.warning:hover, .shop-container .table-hover > tbody > tr.warning:hover > td, .shop-container .table-hover > tbody > tr:hover > .warning, .shop-container .table-hover > tbody > tr.warning:hover > th {\n  background-color: rgb(249.5322580645, 242.2419354839, 203.9677419355);\n}\n.shop-container .table > thead > tr > td.danger,\n.shop-container .table > thead > tr > th.danger, .shop-container .table > thead > tr.danger > td, .shop-container .table > thead > tr.danger > th,\n.shop-container .table > tbody > tr > td.danger,\n.shop-container .table > tbody > tr > th.danger,\n.shop-container .table > tbody > tr.danger > td,\n.shop-container .table > tbody > tr.danger > th,\n.shop-container .table > tfoot > tr > td.danger,\n.shop-container .table > tfoot > tr > th.danger,\n.shop-container .table > tfoot > tr.danger > td,\n.shop-container .table > tfoot > tr.danger > th {\n  background-color: #f2dede;\n}\n.shop-container .table-hover > tbody > tr > td.danger:hover,\n.shop-container .table-hover > tbody > tr > th.danger:hover, .shop-container .table-hover > tbody > tr.danger:hover > td, .shop-container .table-hover > tbody > tr:hover > .danger, .shop-container .table-hover > tbody > tr.danger:hover > th {\n  background-color: rgb(234.7934782609, 203.7065217391, 203.7065217391);\n}\n.shop-container .table-responsive {\n  min-height: 0.01%;\n  overflow-x: auto;\n}\n@media screen and (max-width: 767px) {\n  .shop-container .table-responsive {\n    width: 100%;\n    margin-bottom: 15px;\n    overflow-y: hidden;\n    -ms-overflow-style: -ms-autohiding-scrollbar;\n    border: 1px solid #ddd;\n  }\n  .shop-container .table-responsive > .table {\n    margin-bottom: 0;\n  }\n  .shop-container .table-responsive > .table > thead > tr > th,\n  .shop-container .table-responsive > .table > thead > tr > td,\n  .shop-container .table-responsive > .table > tbody > tr > th,\n  .shop-container .table-responsive > .table > tbody > tr > td,\n  .shop-container .table-responsive > .table > tfoot > tr > th,\n  .shop-container .table-responsive > .table > tfoot > tr > td {\n    white-space: nowrap;\n  }\n  .shop-container .table-responsive > .table-bordered {\n    border: 0;\n  }\n  .shop-container .table-responsive > .table-bordered > thead > tr > th:first-child,\n  .shop-container .table-responsive > .table-bordered > thead > tr > td:first-child,\n  .shop-container .table-responsive > .table-bordered > tbody > tr > th:first-child,\n  .shop-container .table-responsive > .table-bordered > tbody > tr > td:first-child,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n    border-left: 0;\n  }\n  .shop-container .table-responsive > .table-bordered > thead > tr > th:last-child,\n  .shop-container .table-responsive > .table-bordered > thead > tr > td:last-child,\n  .shop-container .table-responsive > .table-bordered > tbody > tr > th:last-child,\n  .shop-container .table-responsive > .table-bordered > tbody > tr > td:last-child,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n    border-right: 0;\n  }\n  .shop-container .table-responsive > .table-bordered > tbody > tr:last-child > th,\n  .shop-container .table-responsive > .table-bordered > tbody > tr:last-child > td,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr:last-child > th,\n  .shop-container .table-responsive > .table-bordered > tfoot > tr:last-child > td {\n    border-bottom: 0;\n  }\n}\n.shop-container fieldset {\n  min-width: 0;\n  padding: 0;\n  margin: 0;\n  border: 0;\n}\n.shop-container legend {\n  display: block;\n  width: 100%;\n  padding: 0;\n  margin-bottom: 20px;\n  font-size: 21px;\n  line-height: inherit;\n  color: #333333;\n  border: 0;\n  border-bottom: 1px solid #e5e5e5;\n}\n.shop-container label {\n  display: inline-block;\n  max-width: 100%;\n  margin-bottom: 5px;\n  font-weight: 700;\n}\n.shop-container input[type=search] {\n  box-sizing: border-box;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n       appearance: none;\n}\n.shop-container input[type=radio],\n.shop-container input[type=checkbox] {\n  margin: 4px 0 0;\n  margin-top: 1px \\9 ;\n  line-height: normal;\n}\n.shop-container input[type=radio][disabled], .shop-container input[type=radio].disabled, fieldset[disabled] .shop-container input[type=radio],\n.shop-container input[type=checkbox][disabled],\n.shop-container input[type=checkbox].disabled,\nfieldset[disabled] .shop-container input[type=checkbox] {\n  cursor: not-allowed;\n}\n.shop-container input[type=file] {\n  display: block;\n}\n.shop-container input[type=range] {\n  display: block;\n  width: 100%;\n}\n.shop-container select[multiple],\n.shop-container select[size] {\n  height: auto;\n}\n.shop-container input[type=file]:focus,\n.shop-container input[type=radio]:focus,\n.shop-container input[type=checkbox]:focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.shop-container output {\n  display: block;\n  padding-top: 7px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: rgb(85.425, 85.425, 85.425);\n}\n.shop-container .form-control {\n  display: block;\n  width: 100%;\n  height: 34px;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  color: rgb(85.425, 85.425, 85.425);\n  background-color: #fff;\n  background-image: none;\n  border: 1px solid #ccc;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n  transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;\n}\n.shop-container .form-control:focus {\n  border-color: #66afe9;\n  outline: 0;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 8px rgba(102, 175, 233, 0.6);\n}\n.shop-container .form-control::-moz-placeholder {\n  color: #999;\n  opacity: 1;\n}\n.shop-container .form-control:-ms-input-placeholder {\n  color: #999;\n}\n.shop-container .form-control::-webkit-input-placeholder {\n  color: #999;\n}\n.shop-container .form-control::-ms-expand {\n  background-color: transparent;\n  border: 0;\n}\n.shop-container .form-control[disabled], .shop-container .form-control[readonly], fieldset[disabled] .shop-container .form-control {\n  background-color: rgb(238.425, 238.425, 238.425);\n  opacity: 1;\n}\n.shop-container .form-control[disabled], fieldset[disabled] .shop-container .form-control {\n  cursor: not-allowed;\n}\n.shop-container textarea.form-control {\n  height: auto;\n}\n@media screen and (-webkit-min-device-pixel-ratio: 0) {\n  .shop-container input[type=date].form-control,\n  .shop-container input[type=time].form-control,\n  .shop-container input[type=datetime-local].form-control,\n  .shop-container input[type=month].form-control {\n    line-height: 34px;\n  }\n  .shop-container input[type=date].input-sm, .shop-container .input-group-sm > input[type=date].form-control,\n  .shop-container .input-group-sm > input[type=date].input-group-addon,\n  .shop-container .input-group-sm > .input-group-btn > input[type=date].btn, .input-group-sm .shop-container input[type=date],\n  .shop-container input[type=time].input-sm,\n  .shop-container .input-group-sm > input[type=time].form-control,\n  .shop-container .input-group-sm > input[type=time].input-group-addon,\n  .shop-container .input-group-sm > .input-group-btn > input[type=time].btn,\n  .input-group-sm .shop-container input[type=time],\n  .shop-container input[type=datetime-local].input-sm,\n  .shop-container .input-group-sm > input[type=datetime-local].form-control,\n  .shop-container .input-group-sm > input[type=datetime-local].input-group-addon,\n  .shop-container .input-group-sm > .input-group-btn > input[type=datetime-local].btn,\n  .input-group-sm .shop-container input[type=datetime-local],\n  .shop-container input[type=month].input-sm,\n  .shop-container .input-group-sm > input[type=month].form-control,\n  .shop-container .input-group-sm > input[type=month].input-group-addon,\n  .shop-container .input-group-sm > .input-group-btn > input[type=month].btn,\n  .input-group-sm .shop-container input[type=month] {\n    line-height: 30px;\n  }\n  .shop-container input[type=date].input-lg, .shop-container .input-group-lg > input[type=date].form-control,\n  .shop-container .input-group-lg > input[type=date].input-group-addon,\n  .shop-container .input-group-lg > .input-group-btn > input[type=date].btn, .input-group-lg .shop-container input[type=date],\n  .shop-container input[type=time].input-lg,\n  .shop-container .input-group-lg > input[type=time].form-control,\n  .shop-container .input-group-lg > input[type=time].input-group-addon,\n  .shop-container .input-group-lg > .input-group-btn > input[type=time].btn,\n  .input-group-lg .shop-container input[type=time],\n  .shop-container input[type=datetime-local].input-lg,\n  .shop-container .input-group-lg > input[type=datetime-local].form-control,\n  .shop-container .input-group-lg > input[type=datetime-local].input-group-addon,\n  .shop-container .input-group-lg > .input-group-btn > input[type=datetime-local].btn,\n  .input-group-lg .shop-container input[type=datetime-local],\n  .shop-container input[type=month].input-lg,\n  .shop-container .input-group-lg > input[type=month].form-control,\n  .shop-container .input-group-lg > input[type=month].input-group-addon,\n  .shop-container .input-group-lg > .input-group-btn > input[type=month].btn,\n  .input-group-lg .shop-container input[type=month] {\n    line-height: 46px;\n  }\n}\n.shop-container .form-group {\n  margin-bottom: 15px;\n}\n.shop-container .radio,\n.shop-container .checkbox {\n  position: relative;\n  display: block;\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.shop-container .radio.disabled label, fieldset[disabled] .shop-container .radio label,\n.shop-container .checkbox.disabled label,\nfieldset[disabled] .shop-container .checkbox label {\n  cursor: not-allowed;\n}\n.shop-container .radio label,\n.shop-container .checkbox label {\n  min-height: 20px;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  cursor: pointer;\n}\n.shop-container .radio input[type=radio],\n.shop-container .radio-inline input[type=radio],\n.shop-container .checkbox input[type=checkbox],\n.shop-container .checkbox-inline input[type=checkbox] {\n  position: absolute;\n  margin-top: 4px \\9 ;\n  margin-left: -20px;\n}\n.shop-container .radio + .radio,\n.shop-container .checkbox + .checkbox {\n  margin-top: -5px;\n}\n.shop-container .radio-inline,\n.shop-container .checkbox-inline {\n  position: relative;\n  display: inline-block;\n  padding-left: 20px;\n  margin-bottom: 0;\n  font-weight: 400;\n  vertical-align: middle;\n  cursor: pointer;\n}\n.shop-container .radio-inline.disabled, fieldset[disabled] .shop-container .radio-inline,\n.shop-container .checkbox-inline.disabled,\nfieldset[disabled] .shop-container .checkbox-inline {\n  cursor: not-allowed;\n}\n.shop-container .radio-inline + .radio-inline,\n.shop-container .checkbox-inline + .checkbox-inline {\n  margin-top: 0;\n  margin-left: 10px;\n}\n.shop-container .form-control-static {\n  min-height: 34px;\n  padding-top: 7px;\n  padding-bottom: 7px;\n  margin-bottom: 0;\n}\n.shop-container .form-control-static.input-lg, .shop-container .input-group-lg > .form-control-static.form-control,\n.shop-container .input-group-lg > .form-control-static.input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > .form-control-static.btn, .shop-container .form-control-static.input-sm, .shop-container .input-group-sm > .form-control-static.form-control,\n.shop-container .input-group-sm > .form-control-static.input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > .form-control-static.btn {\n  padding-right: 0;\n  padding-left: 0;\n}\n.shop-container .input-sm, .shop-container .input-group-sm > .form-control,\n.shop-container .input-group-sm > .input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > .btn {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.shop-container select.input-sm, .shop-container .input-group-sm > select.form-control,\n.shop-container .input-group-sm > select.input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > select.btn {\n  height: 30px;\n  line-height: 30px;\n}\n.shop-container textarea.input-sm, .shop-container .input-group-sm > textarea.form-control,\n.shop-container .input-group-sm > textarea.input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > textarea.btn,\n.shop-container select[multiple].input-sm,\n.shop-container .input-group-sm > select[multiple].form-control,\n.shop-container .input-group-sm > select[multiple].input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > select[multiple].btn {\n  height: auto;\n}\n.shop-container .form-group-sm .form-control {\n  height: 30px;\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.shop-container .form-group-sm select.form-control {\n  height: 30px;\n  line-height: 30px;\n}\n.shop-container .form-group-sm textarea.form-control,\n.shop-container .form-group-sm select[multiple].form-control {\n  height: auto;\n}\n.shop-container .form-group-sm .form-control-static {\n  height: 30px;\n  min-height: 32px;\n  padding: 6px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.shop-container .input-lg, .shop-container .input-group-lg > .form-control,\n.shop-container .input-group-lg > .input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > .btn {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.shop-container select.input-lg, .shop-container .input-group-lg > select.form-control,\n.shop-container .input-group-lg > select.input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > select.btn {\n  height: 46px;\n  line-height: 46px;\n}\n.shop-container textarea.input-lg, .shop-container .input-group-lg > textarea.form-control,\n.shop-container .input-group-lg > textarea.input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > textarea.btn,\n.shop-container select[multiple].input-lg,\n.shop-container .input-group-lg > select[multiple].form-control,\n.shop-container .input-group-lg > select[multiple].input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > select[multiple].btn {\n  height: auto;\n}\n.shop-container .form-group-lg .form-control {\n  height: 46px;\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.shop-container .form-group-lg select.form-control {\n  height: 46px;\n  line-height: 46px;\n}\n.shop-container .form-group-lg textarea.form-control,\n.shop-container .form-group-lg select[multiple].form-control {\n  height: auto;\n}\n.shop-container .form-group-lg .form-control-static {\n  height: 46px;\n  min-height: 38px;\n  padding: 11px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.shop-container .has-feedback {\n  position: relative;\n}\n.shop-container .has-feedback .form-control {\n  padding-right: 42.5px;\n}\n.shop-container .form-control-feedback {\n  position: absolute;\n  top: 0;\n  right: 0;\n  z-index: 2;\n  display: block;\n  width: 34px;\n  height: 34px;\n  line-height: 34px;\n  text-align: center;\n  pointer-events: none;\n}\n.shop-container .input-lg + .form-control-feedback, .shop-container .input-group-lg > .form-control + .form-control-feedback,\n.shop-container .input-group-lg > .input-group-addon + .form-control-feedback,\n.shop-container .input-group-lg > .input-group-btn > .btn + .form-control-feedback,\n.shop-container .input-group-lg + .form-control-feedback,\n.shop-container .form-group-lg .form-control + .form-control-feedback {\n  width: 46px;\n  height: 46px;\n  line-height: 46px;\n}\n.shop-container .input-sm + .form-control-feedback, .shop-container .input-group-sm > .form-control + .form-control-feedback,\n.shop-container .input-group-sm > .input-group-addon + .form-control-feedback,\n.shop-container .input-group-sm > .input-group-btn > .btn + .form-control-feedback,\n.shop-container .input-group-sm + .form-control-feedback,\n.shop-container .form-group-sm .form-control + .form-control-feedback {\n  width: 30px;\n  height: 30px;\n  line-height: 30px;\n}\n.shop-container .has-success .help-block,\n.shop-container .has-success .control-label,\n.shop-container .has-success .radio,\n.shop-container .has-success .checkbox,\n.shop-container .has-success .radio-inline,\n.shop-container .has-success .checkbox-inline, .shop-container .has-success.radio label, .shop-container .has-success.checkbox label, .shop-container .has-success.radio-inline label, .shop-container .has-success.checkbox-inline label {\n  color: #3c763d;\n}\n.shop-container .has-success .form-control {\n  border-color: #3c763d;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.shop-container .has-success .form-control:focus {\n  border-color: rgb(42.808988764, 84.191011236, 43.5224719101);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px rgb(102.5280898876, 177.4719101124, 103.8202247191);\n}\n.shop-container .has-success .input-group-addon {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: #3c763d;\n}\n.shop-container .has-success .form-control-feedback {\n  color: #3c763d;\n}\n.shop-container .has-warning .help-block,\n.shop-container .has-warning .control-label,\n.shop-container .has-warning .radio,\n.shop-container .has-warning .checkbox,\n.shop-container .has-warning .radio-inline,\n.shop-container .has-warning .checkbox-inline, .shop-container .has-warning.radio label, .shop-container .has-warning.checkbox label, .shop-container .has-warning.radio-inline label, .shop-container .has-warning.checkbox-inline label {\n  color: #8a6d3b;\n}\n.shop-container .has-warning .form-control {\n  border-color: #8a6d3b;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.shop-container .has-warning .form-control:focus {\n  border-color: rgb(102.2741116751, 80.7817258883, 43.7258883249);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px rgb(191.807106599, 160.7461928934, 107.192893401);\n}\n.shop-container .has-warning .input-group-addon {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: #8a6d3b;\n}\n.shop-container .has-warning .form-control-feedback {\n  color: #8a6d3b;\n}\n.shop-container .has-error .help-block,\n.shop-container .has-error .control-label,\n.shop-container .has-error .radio,\n.shop-container .has-error .checkbox,\n.shop-container .has-error .radio-inline,\n.shop-container .has-error .checkbox-inline, .shop-container .has-error.radio label, .shop-container .has-error.checkbox label, .shop-container .has-error.radio-inline label, .shop-container .has-error.checkbox-inline label {\n  color: #a94442;\n}\n.shop-container .has-error .form-control {\n  border-color: #a94442;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075);\n}\n.shop-container .has-error .form-control:focus {\n  border-color: rgb(132.3234042553, 53.2425531915, 51.6765957447);\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px rgb(206.4127659574, 132.0595744681, 130.5872340426);\n}\n.shop-container .has-error .input-group-addon {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: #a94442;\n}\n.shop-container .has-error .form-control-feedback {\n  color: #a94442;\n}\n.shop-container .has-feedback label ~ .form-control-feedback {\n  top: 25px;\n}\n.shop-container .has-feedback label.sr-only ~ .form-control-feedback {\n  top: 0;\n}\n.shop-container .help-block {\n  display: block;\n  margin-top: 5px;\n  margin-bottom: 10px;\n  color: rgb(114.75, 114.75, 114.75);\n}\n@media (min-width: 768px) {\n  .shop-container .form-inline .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .form-inline .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .shop-container .form-inline .form-control-static {\n    display: inline-block;\n  }\n  .shop-container .form-inline .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .shop-container .form-inline .input-group .input-group-addon,\n  .shop-container .form-inline .input-group .input-group-btn,\n  .shop-container .form-inline .input-group .form-control {\n    width: auto;\n  }\n  .shop-container .form-inline .input-group > .form-control {\n    width: 100%;\n  }\n  .shop-container .form-inline .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .form-inline .radio,\n  .shop-container .form-inline .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .form-inline .radio label,\n  .shop-container .form-inline .checkbox label {\n    padding-left: 0;\n  }\n  .shop-container .form-inline .radio input[type=radio],\n  .shop-container .form-inline .checkbox input[type=checkbox] {\n    position: relative;\n    margin-left: 0;\n  }\n  .shop-container .form-inline .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n.shop-container .form-horizontal .radio,\n.shop-container .form-horizontal .checkbox,\n.shop-container .form-horizontal .radio-inline,\n.shop-container .form-horizontal .checkbox-inline {\n  padding-top: 7px;\n  margin-top: 0;\n  margin-bottom: 0;\n}\n.shop-container .form-horizontal .radio,\n.shop-container .form-horizontal .checkbox {\n  min-height: 27px;\n}\n.shop-container .form-horizontal .form-group {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n.shop-container .form-horizontal .form-group:before, .shop-container .form-horizontal .form-group:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .form-horizontal .form-group:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .shop-container .form-horizontal .control-label {\n    padding-top: 7px;\n    margin-bottom: 0;\n    text-align: right;\n  }\n}\n.shop-container .form-horizontal .has-feedback .form-control-feedback {\n  right: 15px;\n}\n@media (min-width: 768px) {\n  .shop-container .form-horizontal .form-group-lg .control-label {\n    padding-top: 11px;\n    font-size: 18px;\n  }\n}\n@media (min-width: 768px) {\n  .shop-container .form-horizontal .form-group-sm .control-label {\n    padding-top: 6px;\n    font-size: 12px;\n  }\n}\n.shop-container .btn {\n  display: inline-block;\n  margin-bottom: 0;\n  font-weight: normal;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  touch-action: manipulation;\n  cursor: pointer;\n  background-image: none;\n  border: 1px solid transparent;\n  padding: 6px 12px;\n  font-size: 14px;\n  line-height: 1.428571429;\n  border-radius: 4px;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n.shop-container .btn:focus, .shop-container .btn.focus, .shop-container .btn:active:focus, .shop-container .btn:active.focus, .shop-container .btn.active:focus, .shop-container .btn.active.focus {\n  outline: 5px auto -webkit-focus-ring-color;\n  outline-offset: -2px;\n}\n.shop-container .btn:hover, .shop-container .btn:focus, .shop-container .btn.focus {\n  color: #333;\n  text-decoration: none;\n}\n.shop-container .btn:active, .shop-container .btn.active {\n  background-image: none;\n  outline: 0;\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.shop-container .btn.disabled, .shop-container .btn[disabled], fieldset[disabled] .shop-container .btn {\n  cursor: not-allowed;\n  filter: alpha(opacity=65);\n  opacity: 0.65;\n  box-shadow: none;\n}\n.shop-container a.btn.disabled, fieldset[disabled] .shop-container a.btn {\n  pointer-events: none;\n}\n.shop-container .btn-default {\n  color: #333;\n  background-color: #fff;\n  border-color: #ccc;\n}\n.shop-container .btn-default:focus, .shop-container .btn-default.focus {\n  color: #333;\n  background-color: rgb(229.5, 229.5, 229.5);\n  border-color: rgb(140.25, 140.25, 140.25);\n}\n.shop-container .btn-default:hover {\n  color: #333;\n  background-color: rgb(229.5, 229.5, 229.5);\n  border-color: rgb(173.4, 173.4, 173.4);\n}\n.shop-container .btn-default:active, .shop-container .btn-default.active, .open > .shop-container .btn-default.dropdown-toggle {\n  color: #333;\n  background-color: rgb(229.5, 229.5, 229.5);\n  background-image: none;\n  border-color: rgb(173.4, 173.4, 173.4);\n}\n.shop-container .btn-default:active:hover, .shop-container .btn-default:active:focus, .shop-container .btn-default:active.focus, .shop-container .btn-default.active:hover, .shop-container .btn-default.active:focus, .shop-container .btn-default.active.focus, .open > .shop-container .btn-default.dropdown-toggle:hover, .open > .shop-container .btn-default.dropdown-toggle:focus, .open > .shop-container .btn-default.dropdown-toggle.focus {\n  color: #333;\n  background-color: rgb(211.65, 211.65, 211.65);\n  border-color: rgb(140.25, 140.25, 140.25);\n}\n.shop-container .btn-default.disabled:hover, .shop-container .btn-default.disabled:focus, .shop-container .btn-default.disabled.focus, .shop-container .btn-default[disabled]:hover, .shop-container .btn-default[disabled]:focus, .shop-container .btn-default[disabled].focus, fieldset[disabled] .shop-container .btn-default:hover, fieldset[disabled] .shop-container .btn-default:focus, fieldset[disabled] .shop-container .btn-default.focus {\n  background-color: #fff;\n  border-color: #ccc;\n}\n.shop-container .btn-default .badge {\n  color: #fff;\n  background-color: #333;\n}\n.shop-container .btn-primary {\n  color: #fff;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-color: rgb(45.8493801653, 109.0004132231, 163.5006198347);\n}\n.shop-container .btn-primary:focus, .shop-container .btn-primary.focus {\n  color: #fff;\n  background-color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n  border-color: rgb(17.9258264463, 42.6161157025, 63.9241735537);\n}\n.shop-container .btn-primary:hover {\n  color: #fff;\n  background-color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n  border-color: rgb(32.4460743802, 77.1359504132, 115.7039256198);\n}\n.shop-container .btn-primary:active, .shop-container .btn-primary.active, .open > .shop-container .btn-primary.dropdown-toggle {\n  color: #fff;\n  background-color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n  background-image: none;\n  border-color: rgb(32.4460743802, 77.1359504132, 115.7039256198);\n}\n.shop-container .btn-primary:active:hover, .shop-container .btn-primary:active:focus, .shop-container .btn-primary:active.focus, .shop-container .btn-primary.active:hover, .shop-container .btn-primary.active:focus, .shop-container .btn-primary.active.focus, .open > .shop-container .btn-primary.dropdown-toggle:hover, .open > .shop-container .btn-primary.dropdown-toggle:focus, .open > .shop-container .btn-primary.dropdown-toggle.focus {\n  color: #fff;\n  background-color: rgb(32.4460743802, 77.1359504132, 115.7039256198);\n  border-color: rgb(17.9258264463, 42.6161157025, 63.9241735537);\n}\n.shop-container .btn-primary.disabled:hover, .shop-container .btn-primary.disabled:focus, .shop-container .btn-primary.disabled.focus, .shop-container .btn-primary[disabled]:hover, .shop-container .btn-primary[disabled]:focus, .shop-container .btn-primary[disabled].focus, fieldset[disabled] .shop-container .btn-primary:hover, fieldset[disabled] .shop-container .btn-primary:focus, fieldset[disabled] .shop-container .btn-primary.focus {\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-color: rgb(45.8493801653, 109.0004132231, 163.5006198347);\n}\n.shop-container .btn-primary .badge {\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  background-color: #fff;\n}\n.shop-container .btn-success {\n  color: #fff;\n  background-color: #5cb85c;\n  border-color: rgb(76.0064102564, 174.4935897436, 76.0064102564);\n}\n.shop-container .btn-success:focus, .shop-container .btn-success.focus {\n  color: #fff;\n  background-color: rgb(68.2692307692, 156.7307692308, 68.2692307692);\n  border-color: rgb(37.3205128205, 85.6794871795, 37.3205128205);\n}\n.shop-container .btn-success:hover {\n  color: #fff;\n  background-color: rgb(68.2692307692, 156.7307692308, 68.2692307692);\n  border-color: rgb(57.4371794872, 131.8628205128, 57.4371794872);\n}\n.shop-container .btn-success:active, .shop-container .btn-success.active, .open > .shop-container .btn-success.dropdown-toggle {\n  color: #fff;\n  background-color: rgb(68.2692307692, 156.7307692308, 68.2692307692);\n  background-image: none;\n  border-color: rgb(57.4371794872, 131.8628205128, 57.4371794872);\n}\n.shop-container .btn-success:active:hover, .shop-container .btn-success:active:focus, .shop-container .btn-success:active.focus, .shop-container .btn-success.active:hover, .shop-container .btn-success.active:focus, .shop-container .btn-success.active.focus, .open > .shop-container .btn-success.dropdown-toggle:hover, .open > .shop-container .btn-success.dropdown-toggle:focus, .open > .shop-container .btn-success.dropdown-toggle.focus {\n  color: #fff;\n  background-color: rgb(57.4371794872, 131.8628205128, 57.4371794872);\n  border-color: rgb(37.3205128205, 85.6794871795, 37.3205128205);\n}\n.shop-container .btn-success.disabled:hover, .shop-container .btn-success.disabled:focus, .shop-container .btn-success.disabled.focus, .shop-container .btn-success[disabled]:hover, .shop-container .btn-success[disabled]:focus, .shop-container .btn-success[disabled].focus, fieldset[disabled] .shop-container .btn-success:hover, fieldset[disabled] .shop-container .btn-success:focus, fieldset[disabled] .shop-container .btn-success.focus {\n  background-color: #5cb85c;\n  border-color: rgb(76.0064102564, 174.4935897436, 76.0064102564);\n}\n.shop-container .btn-success .badge {\n  color: #5cb85c;\n  background-color: #fff;\n}\n.shop-container .btn-info {\n  color: #fff;\n  background-color: #5bc0de;\n  border-color: rgb(69.7715736041, 183.845177665, 217.7284263959);\n}\n.shop-container .btn-info:focus, .shop-container .btn-info.focus {\n  color: #fff;\n  background-color: rgb(48.5431472081, 175.6903553299, 213.4568527919);\n  border-color: rgb(26.8020304569, 108.8324873096, 133.1979695431);\n}\n.shop-container .btn-info:hover {\n  color: #fff;\n  background-color: rgb(48.5431472081, 175.6903553299, 213.4568527919);\n  border-color: rgb(37.9081218274, 153.9299492386, 188.3918781726);\n}\n.shop-container .btn-info:active, .shop-container .btn-info.active, .open > .shop-container .btn-info.dropdown-toggle {\n  color: #fff;\n  background-color: rgb(48.5431472081, 175.6903553299, 213.4568527919);\n  background-image: none;\n  border-color: rgb(37.9081218274, 153.9299492386, 188.3918781726);\n}\n.shop-container .btn-info:active:hover, .shop-container .btn-info:active:focus, .shop-container .btn-info:active.focus, .shop-container .btn-info.active:hover, .shop-container .btn-info.active:focus, .shop-container .btn-info.active.focus, .open > .shop-container .btn-info.dropdown-toggle:hover, .open > .shop-container .btn-info.dropdown-toggle:focus, .open > .shop-container .btn-info.dropdown-toggle.focus {\n  color: #fff;\n  background-color: rgb(37.9081218274, 153.9299492386, 188.3918781726);\n  border-color: rgb(26.8020304569, 108.8324873096, 133.1979695431);\n}\n.shop-container .btn-info.disabled:hover, .shop-container .btn-info.disabled:focus, .shop-container .btn-info.disabled.focus, .shop-container .btn-info[disabled]:hover, .shop-container .btn-info[disabled]:focus, .shop-container .btn-info[disabled].focus, fieldset[disabled] .shop-container .btn-info:hover, fieldset[disabled] .shop-container .btn-info:focus, fieldset[disabled] .shop-container .btn-info.focus {\n  background-color: #5bc0de;\n  border-color: rgb(69.7715736041, 183.845177665, 217.7284263959);\n}\n.shop-container .btn-info .badge {\n  color: #5bc0de;\n  background-color: #fff;\n}\n.shop-container .btn-warning {\n  color: #fff;\n  background-color: #f0ad4e;\n  border-color: rgb(238.0078125, 162.109375, 54.4921875);\n}\n.shop-container .btn-warning:focus, .shop-container .btn-warning.focus {\n  color: #fff;\n  background-color: rgb(236.015625, 151.21875, 30.984375);\n  border-color: rgb(152.109375, 94.53125, 12.890625);\n}\n.shop-container .btn-warning:hover {\n  color: #fff;\n  background-color: rgb(236.015625, 151.21875, 30.984375);\n  border-color: rgb(213.2296875, 132.515625, 18.0703125);\n}\n.shop-container .btn-warning:active, .shop-container .btn-warning.active, .open > .shop-container .btn-warning.dropdown-toggle {\n  color: #fff;\n  background-color: rgb(236.015625, 151.21875, 30.984375);\n  background-image: none;\n  border-color: rgb(213.2296875, 132.515625, 18.0703125);\n}\n.shop-container .btn-warning:active:hover, .shop-container .btn-warning:active:focus, .shop-container .btn-warning:active.focus, .shop-container .btn-warning.active:hover, .shop-container .btn-warning.active:focus, .shop-container .btn-warning.active.focus, .open > .shop-container .btn-warning.dropdown-toggle:hover, .open > .shop-container .btn-warning.dropdown-toggle:focus, .open > .shop-container .btn-warning.dropdown-toggle.focus {\n  color: #fff;\n  background-color: rgb(213.2296875, 132.515625, 18.0703125);\n  border-color: rgb(152.109375, 94.53125, 12.890625);\n}\n.shop-container .btn-warning.disabled:hover, .shop-container .btn-warning.disabled:focus, .shop-container .btn-warning.disabled.focus, .shop-container .btn-warning[disabled]:hover, .shop-container .btn-warning[disabled]:focus, .shop-container .btn-warning[disabled].focus, fieldset[disabled] .shop-container .btn-warning:hover, fieldset[disabled] .shop-container .btn-warning:focus, fieldset[disabled] .shop-container .btn-warning.focus {\n  background-color: #f0ad4e;\n  border-color: rgb(238.0078125, 162.109375, 54.4921875);\n}\n.shop-container .btn-warning .badge {\n  color: #f0ad4e;\n  background-color: #fff;\n}\n.shop-container .btn-danger {\n  color: #fff;\n  background-color: #d9534f;\n  border-color: rgb(212.4719626168, 62.5046728972, 58.0280373832);\n}\n.shop-container .btn-danger:focus, .shop-container .btn-danger.focus {\n  color: #fff;\n  background-color: rgb(201.4953271028, 48.0841121495, 43.5046728972);\n  border-color: rgb(117.6074766355, 28.0654205607, 25.3925233645);\n}\n.shop-container .btn-danger:hover {\n  color: #fff;\n  background-color: rgb(201.4953271028, 48.0841121495, 43.5046728972);\n  border-color: rgb(172.1345794393, 41.0775700935, 37.1654205607);\n}\n.shop-container .btn-danger:active, .shop-container .btn-danger.active, .open > .shop-container .btn-danger.dropdown-toggle {\n  color: #fff;\n  background-color: rgb(201.4953271028, 48.0841121495, 43.5046728972);\n  background-image: none;\n  border-color: rgb(172.1345794393, 41.0775700935, 37.1654205607);\n}\n.shop-container .btn-danger:active:hover, .shop-container .btn-danger:active:focus, .shop-container .btn-danger:active.focus, .shop-container .btn-danger.active:hover, .shop-container .btn-danger.active:focus, .shop-container .btn-danger.active.focus, .open > .shop-container .btn-danger.dropdown-toggle:hover, .open > .shop-container .btn-danger.dropdown-toggle:focus, .open > .shop-container .btn-danger.dropdown-toggle.focus {\n  color: #fff;\n  background-color: rgb(172.1345794393, 41.0775700935, 37.1654205607);\n  border-color: rgb(117.6074766355, 28.0654205607, 25.3925233645);\n}\n.shop-container .btn-danger.disabled:hover, .shop-container .btn-danger.disabled:focus, .shop-container .btn-danger.disabled.focus, .shop-container .btn-danger[disabled]:hover, .shop-container .btn-danger[disabled]:focus, .shop-container .btn-danger[disabled].focus, fieldset[disabled] .shop-container .btn-danger:hover, fieldset[disabled] .shop-container .btn-danger:focus, fieldset[disabled] .shop-container .btn-danger.focus {\n  background-color: #d9534f;\n  border-color: rgb(212.4719626168, 62.5046728972, 58.0280373832);\n}\n.shop-container .btn-danger .badge {\n  color: #d9534f;\n  background-color: #fff;\n}\n.shop-container .btn-link {\n  font-weight: 400;\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-radius: 0;\n}\n.shop-container .btn-link, .shop-container .btn-link:active, .shop-container .btn-link.active, .shop-container .btn-link[disabled], fieldset[disabled] .shop-container .btn-link {\n  background-color: transparent;\n  box-shadow: none;\n}\n.shop-container .btn-link, .shop-container .btn-link:hover, .shop-container .btn-link:focus, .shop-container .btn-link:active {\n  border-color: transparent;\n}\n.shop-container .btn-link:hover, .shop-container .btn-link:focus {\n  color: rgb(34.6799586777, 82.4466942149, 123.6700413223);\n  text-decoration: underline;\n  background-color: transparent;\n}\n.shop-container .btn-link[disabled]:hover, .shop-container .btn-link[disabled]:focus, fieldset[disabled] .shop-container .btn-link:hover, fieldset[disabled] .shop-container .btn-link:focus {\n  color: rgb(119.085, 119.085, 119.085);\n  text-decoration: none;\n}\n.shop-container .btn-lg, .shop-container .btn-group-lg > .btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n  border-radius: 6px;\n}\n.shop-container .btn-sm, .shop-container .btn-group-sm > .btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.shop-container .btn-xs, .shop-container .btn-group-xs > .btn {\n  padding: 1px 5px;\n  font-size: 12px;\n  line-height: 1.5;\n  border-radius: 3px;\n}\n.shop-container .btn-block {\n  display: block;\n  width: 100%;\n}\n.shop-container .btn-block + .btn-block {\n  margin-top: 5px;\n}\n.shop-container input[type=submit].btn-block,\n.shop-container input[type=reset].btn-block,\n.shop-container input[type=button].btn-block {\n  width: 100%;\n}\n.shop-container .fade {\n  opacity: 0;\n  transition: opacity 0.15s linear;\n}\n.shop-container .fade.in {\n  opacity: 1;\n}\n.shop-container .collapse {\n  display: none;\n}\n.shop-container .collapse.in {\n  display: block;\n}\n.shop-container tr.collapse.in {\n  display: table-row;\n}\n.shop-container tbody.collapse.in {\n  display: table-row-group;\n}\n.shop-container .collapsing {\n  position: relative;\n  height: 0;\n  overflow: hidden;\n  transition-property: height, visibility;\n  transition-duration: 0.35s;\n  transition-timing-function: ease;\n}\n.shop-container .caret {\n  display: inline-block;\n  width: 0;\n  height: 0;\n  margin-left: 2px;\n  vertical-align: middle;\n  border-top: 4px dashed;\n  border-top: 4px solid \\9 ;\n  border-right: 4px solid transparent;\n  border-left: 4px solid transparent;\n}\n.shop-container .dropup,\n.shop-container .dropdown {\n  position: relative;\n}\n.shop-container .dropdown-toggle:focus {\n  outline: 0;\n}\n.shop-container .dropdown-menu {\n  position: absolute;\n  top: 100%;\n  left: 0;\n  z-index: 1000;\n  display: none;\n  float: left;\n  min-width: 160px;\n  padding: 5px 0;\n  margin: 2px 0 0;\n  font-size: 14px;\n  text-align: left;\n  list-style: none;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.15);\n  border-radius: 4px;\n  box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);\n}\n.shop-container .dropdown-menu.pull-right {\n  right: 0;\n  left: auto;\n}\n.shop-container .dropdown-menu .divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.shop-container .dropdown-menu > li > a {\n  display: block;\n  padding: 3px 20px;\n  clear: both;\n  font-weight: 400;\n  line-height: 1.428571429;\n  color: #333333;\n  white-space: nowrap;\n}\n.shop-container .dropdown-menu > li > a:hover, .shop-container .dropdown-menu > li > a:focus {\n  color: rgb(38.25, 38.25, 38.25);\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.shop-container .dropdown-menu > .active > a, .shop-container .dropdown-menu > .active > a:hover, .shop-container .dropdown-menu > .active > a:focus {\n  color: #fff;\n  text-decoration: none;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  outline: 0;\n}\n.shop-container .dropdown-menu > .disabled > a, .shop-container .dropdown-menu > .disabled > a:hover, .shop-container .dropdown-menu > .disabled > a:focus {\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .dropdown-menu > .disabled > a:hover, .shop-container .dropdown-menu > .disabled > a:focus {\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n  background-image: none;\n  filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);\n}\n.shop-container .open > .dropdown-menu {\n  display: block;\n}\n.shop-container .open > a {\n  outline: 0;\n}\n.shop-container .dropdown-menu-right {\n  right: 0;\n  left: auto;\n}\n.shop-container .dropdown-menu-left {\n  right: auto;\n  left: 0;\n}\n.shop-container .dropdown-header {\n  display: block;\n  padding: 3px 20px;\n  font-size: 12px;\n  line-height: 1.428571429;\n  color: rgb(119.085, 119.085, 119.085);\n  white-space: nowrap;\n}\n.shop-container .dropdown-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 990;\n}\n.shop-container .pull-right > .dropdown-menu {\n  right: 0;\n  left: auto;\n}\n.shop-container .dropup .caret,\n.shop-container .navbar-fixed-bottom .dropdown .caret {\n  content: \"\";\n  border-top: 0;\n  border-bottom: 4px dashed;\n  border-bottom: 4px solid \\9 ;\n}\n.shop-container .dropup .dropdown-menu,\n.shop-container .navbar-fixed-bottom .dropdown .dropdown-menu {\n  top: auto;\n  bottom: 100%;\n  margin-bottom: 2px;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-right .dropdown-menu {\n    right: 0;\n    left: auto;\n  }\n  .shop-container .navbar-right .dropdown-menu-left {\n    left: 0;\n    right: auto;\n  }\n}\n.shop-container .btn-group,\n.shop-container .btn-group-vertical {\n  position: relative;\n  display: inline-block;\n  vertical-align: middle;\n}\n.shop-container .btn-group > .btn,\n.shop-container .btn-group-vertical > .btn {\n  position: relative;\n  float: left;\n}\n.shop-container .btn-group > .btn:hover, .shop-container .btn-group > .btn:focus, .shop-container .btn-group > .btn:active, .shop-container .btn-group > .btn.active,\n.shop-container .btn-group-vertical > .btn:hover,\n.shop-container .btn-group-vertical > .btn:focus,\n.shop-container .btn-group-vertical > .btn:active,\n.shop-container .btn-group-vertical > .btn.active {\n  z-index: 2;\n}\n.shop-container .btn-group .btn + .btn,\n.shop-container .btn-group .btn + .btn-group,\n.shop-container .btn-group .btn-group + .btn,\n.shop-container .btn-group .btn-group + .btn-group {\n  margin-left: -1px;\n}\n.shop-container .btn-toolbar {\n  margin-left: -5px;\n}\n.shop-container .btn-toolbar:before, .shop-container .btn-toolbar:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .btn-toolbar:after {\n  clear: both;\n}\n.shop-container .btn-toolbar .btn,\n.shop-container .btn-toolbar .btn-group,\n.shop-container .btn-toolbar .input-group {\n  float: left;\n}\n.shop-container .btn-toolbar > .btn,\n.shop-container .btn-toolbar > .btn-group,\n.shop-container .btn-toolbar > .input-group {\n  margin-left: 5px;\n}\n.shop-container .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) {\n  border-radius: 0;\n}\n.shop-container .btn-group > .btn:first-child {\n  margin-left: 0;\n}\n.shop-container .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.shop-container .btn-group > .btn:last-child:not(:first-child),\n.shop-container .btn-group > .dropdown-toggle:not(:first-child) {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .btn-group > .btn-group {\n  float: left;\n}\n.shop-container .btn-group > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.shop-container .btn-group > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.shop-container .btn-group > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.shop-container .btn-group > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .btn-group .dropdown-toggle:active,\n.shop-container .btn-group.open .dropdown-toggle {\n  outline: 0;\n}\n.shop-container .btn-group > .btn + .dropdown-toggle {\n  padding-right: 8px;\n  padding-left: 8px;\n}\n.shop-container .btn-group > .btn-lg + .dropdown-toggle, .shop-container .btn-group.btn-group-lg > .btn + .dropdown-toggle {\n  padding-right: 12px;\n  padding-left: 12px;\n}\n.shop-container .btn-group.open .dropdown-toggle {\n  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n}\n.shop-container .btn-group.open .dropdown-toggle.btn-link {\n  box-shadow: none;\n}\n.shop-container .btn .caret {\n  margin-left: 0;\n}\n.shop-container .btn-lg .caret, .shop-container .btn-group-lg > .btn .caret {\n  border-width: 5px 5px 0;\n  border-bottom-width: 0;\n}\n.shop-container .dropup .btn-lg .caret, .shop-container .dropup .btn-group-lg > .btn .caret {\n  border-width: 0 5px 5px;\n}\n.shop-container .btn-group-vertical > .btn,\n.shop-container .btn-group-vertical > .btn-group,\n.shop-container .btn-group-vertical > .btn-group > .btn {\n  display: block;\n  float: none;\n  width: 100%;\n  max-width: 100%;\n}\n.shop-container .btn-group-vertical > .btn-group:before, .shop-container .btn-group-vertical > .btn-group:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .btn-group-vertical > .btn-group:after {\n  clear: both;\n}\n.shop-container .btn-group-vertical > .btn-group > .btn {\n  float: none;\n}\n.shop-container .btn-group-vertical > .btn + .btn,\n.shop-container .btn-group-vertical > .btn + .btn-group,\n.shop-container .btn-group-vertical > .btn-group + .btn,\n.shop-container .btn-group-vertical > .btn-group + .btn-group {\n  margin-top: -1px;\n  margin-left: 0;\n}\n.shop-container .btn-group-vertical > .btn:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.shop-container .btn-group-vertical > .btn:first-child:not(:last-child) {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .btn-group-vertical > .btn:last-child:not(:first-child) {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.shop-container .btn-group-vertical > .btn-group:not(:first-child):not(:last-child) > .btn {\n  border-radius: 0;\n}\n.shop-container .btn-group-vertical > .btn-group:first-child:not(:last-child) > .btn:last-child,\n.shop-container .btn-group-vertical > .btn-group:first-child:not(:last-child) > .dropdown-toggle {\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .btn-group-vertical > .btn-group:last-child:not(:first-child) > .btn:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.shop-container .btn-group-justified {\n  display: table;\n  width: 100%;\n  table-layout: fixed;\n  border-collapse: separate;\n}\n.shop-container .btn-group-justified > .btn,\n.shop-container .btn-group-justified > .btn-group {\n  display: table-cell;\n  float: none;\n  width: 1%;\n}\n.shop-container .btn-group-justified > .btn-group .btn {\n  width: 100%;\n}\n.shop-container .btn-group-justified > .btn-group .dropdown-menu {\n  left: auto;\n}\n.shop-container [data-toggle=buttons] > .btn input[type=radio],\n.shop-container [data-toggle=buttons] > .btn input[type=checkbox],\n.shop-container [data-toggle=buttons] > .btn-group > .btn input[type=radio],\n.shop-container [data-toggle=buttons] > .btn-group > .btn input[type=checkbox] {\n  position: absolute;\n  clip: rect(0, 0, 0, 0);\n  pointer-events: none;\n}\n.shop-container .input-group {\n  position: relative;\n  display: table;\n  border-collapse: separate;\n}\n.shop-container .input-group[class*=col-] {\n  float: none;\n  padding-right: 0;\n  padding-left: 0;\n}\n.shop-container .input-group .form-control {\n  position: relative;\n  z-index: 2;\n  float: left;\n  width: 100%;\n  margin-bottom: 0;\n}\n.shop-container .input-group .form-control:focus {\n  z-index: 3;\n}\n.shop-container .input-group-addon,\n.shop-container .input-group-btn,\n.shop-container .input-group .form-control {\n  display: table-cell;\n}\n.shop-container .input-group-addon:not(:first-child):not(:last-child),\n.shop-container .input-group-btn:not(:first-child):not(:last-child),\n.shop-container .input-group .form-control:not(:first-child):not(:last-child) {\n  border-radius: 0;\n}\n.shop-container .input-group-addon,\n.shop-container .input-group-btn {\n  width: 1%;\n  white-space: nowrap;\n  vertical-align: middle;\n}\n.shop-container .input-group-addon {\n  padding: 6px 12px;\n  font-size: 14px;\n  font-weight: 400;\n  line-height: 1;\n  color: rgb(85.425, 85.425, 85.425);\n  text-align: center;\n  background-color: rgb(238.425, 238.425, 238.425);\n  border: 1px solid #ccc;\n  border-radius: 4px;\n}\n.shop-container .input-group-addon.input-sm,\n.shop-container .input-group-sm > .input-group-addon,\n.shop-container .input-group-sm > .input-group-btn > .input-group-addon.btn {\n  padding: 5px 10px;\n  font-size: 12px;\n  border-radius: 3px;\n}\n.shop-container .input-group-addon.input-lg,\n.shop-container .input-group-lg > .input-group-addon,\n.shop-container .input-group-lg > .input-group-btn > .input-group-addon.btn {\n  padding: 10px 16px;\n  font-size: 18px;\n  border-radius: 6px;\n}\n.shop-container .input-group-addon input[type=radio],\n.shop-container .input-group-addon input[type=checkbox] {\n  margin-top: 0;\n}\n.shop-container .input-group .form-control:first-child,\n.shop-container .input-group-addon:first-child,\n.shop-container .input-group-btn:first-child > .btn,\n.shop-container .input-group-btn:first-child > .btn-group > .btn,\n.shop-container .input-group-btn:first-child > .dropdown-toggle,\n.shop-container .input-group-btn:last-child > .btn:not(:last-child):not(.dropdown-toggle),\n.shop-container .input-group-btn:last-child > .btn-group:not(:last-child) > .btn {\n  border-top-right-radius: 0;\n  border-bottom-right-radius: 0;\n}\n.shop-container .input-group-addon:first-child {\n  border-right: 0;\n}\n.shop-container .input-group .form-control:last-child,\n.shop-container .input-group-addon:last-child,\n.shop-container .input-group-btn:last-child > .btn,\n.shop-container .input-group-btn:last-child > .btn-group > .btn,\n.shop-container .input-group-btn:last-child > .dropdown-toggle,\n.shop-container .input-group-btn:first-child > .btn:not(:first-child),\n.shop-container .input-group-btn:first-child > .btn-group:not(:first-child) > .btn {\n  border-top-left-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .input-group-addon:last-child {\n  border-left: 0;\n}\n.shop-container .input-group-btn {\n  position: relative;\n  font-size: 0;\n  white-space: nowrap;\n}\n.shop-container .input-group-btn > .btn {\n  position: relative;\n}\n.shop-container .input-group-btn > .btn + .btn {\n  margin-left: -1px;\n}\n.shop-container .input-group-btn > .btn:hover, .shop-container .input-group-btn > .btn:focus, .shop-container .input-group-btn > .btn:active {\n  z-index: 2;\n}\n.shop-container .input-group-btn:first-child > .btn,\n.shop-container .input-group-btn:first-child > .btn-group {\n  margin-right: -1px;\n}\n.shop-container .input-group-btn:last-child > .btn,\n.shop-container .input-group-btn:last-child > .btn-group {\n  z-index: 2;\n  margin-left: -1px;\n}\n.shop-container .nav {\n  padding-left: 0;\n  margin-bottom: 0;\n  list-style: none;\n}\n.shop-container .nav:before, .shop-container .nav:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .nav:after {\n  clear: both;\n}\n.shop-container .nav > li {\n  position: relative;\n  display: block;\n}\n.shop-container .nav > li > a {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n}\n.shop-container .nav > li > a:hover, .shop-container .nav > li > a:focus {\n  text-decoration: none;\n  background-color: rgb(238.425, 238.425, 238.425);\n}\n.shop-container .nav > li.disabled > a {\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .nav > li.disabled > a:hover, .shop-container .nav > li.disabled > a:focus {\n  color: rgb(119.085, 119.085, 119.085);\n  text-decoration: none;\n  cursor: not-allowed;\n  background-color: transparent;\n}\n.shop-container .nav .open > a, .shop-container .nav .open > a:hover, .shop-container .nav .open > a:focus {\n  background-color: rgb(238.425, 238.425, 238.425);\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .nav .nav-divider {\n  height: 1px;\n  margin: 9px 0;\n  overflow: hidden;\n  background-color: #e5e5e5;\n}\n.shop-container .nav > li > a > img {\n  max-width: none;\n}\n.shop-container .nav-tabs {\n  border-bottom: 1px solid #ddd;\n}\n.shop-container .nav-tabs > li {\n  float: left;\n  margin-bottom: -1px;\n}\n.shop-container .nav-tabs > li > a {\n  margin-right: 2px;\n  line-height: 1.428571429;\n  border: 1px solid transparent;\n  border-radius: 4px 4px 0 0;\n}\n.shop-container .nav-tabs > li > a:hover {\n  border-color: rgb(238.425, 238.425, 238.425) rgb(238.425, 238.425, 238.425) #ddd;\n}\n.shop-container .nav-tabs > li.active > a, .shop-container .nav-tabs > li.active > a:hover, .shop-container .nav-tabs > li.active > a:focus {\n  color: rgb(85.425, 85.425, 85.425);\n  cursor: default;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-bottom-color: transparent;\n}\n.shop-container .nav-pills > li {\n  float: left;\n}\n.shop-container .nav-pills > li > a {\n  border-radius: 4px;\n}\n.shop-container .nav-pills > li + li {\n  margin-left: 2px;\n}\n.shop-container .nav-pills > li.active > a, .shop-container .nav-pills > li.active > a:hover, .shop-container .nav-pills > li.active > a:focus {\n  color: #fff;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .nav-stacked > li {\n  float: none;\n}\n.shop-container .nav-stacked > li + li {\n  margin-top: 2px;\n  margin-left: 0;\n}\n.shop-container .nav-justified, .shop-container .nav-tabs.nav-justified {\n  width: 100%;\n}\n.shop-container .nav-justified > li, .shop-container .nav-tabs.nav-justified > li {\n  float: none;\n}\n.shop-container .nav-justified > li > a, .shop-container .nav-tabs.nav-justified > li > a {\n  margin-bottom: 5px;\n  text-align: center;\n}\n.shop-container .nav-justified > .dropdown .dropdown-menu {\n  top: auto;\n  left: auto;\n}\n@media (min-width: 768px) {\n  .shop-container .nav-justified > li, .shop-container .nav-tabs.nav-justified > li {\n    display: table-cell;\n    width: 1%;\n  }\n  .shop-container .nav-justified > li > a, .shop-container .nav-tabs.nav-justified > li > a {\n    margin-bottom: 0;\n  }\n}\n.shop-container .nav-tabs-justified, .shop-container .nav-tabs.nav-justified {\n  border-bottom: 0;\n}\n.shop-container .nav-tabs-justified > li > a, .shop-container .nav-tabs.nav-justified > li > a {\n  margin-right: 0;\n  border-radius: 4px;\n}\n.shop-container .nav-tabs-justified > .active > a, .shop-container .nav-tabs.nav-justified > .active > a,\n.shop-container .nav-tabs-justified > .active > a:hover,\n.shop-container .nav-tabs-justified > .active > a:focus {\n  border: 1px solid #ddd;\n}\n@media (min-width: 768px) {\n  .shop-container .nav-tabs-justified > li > a, .shop-container .nav-tabs.nav-justified > li > a {\n    border-bottom: 1px solid #ddd;\n    border-radius: 4px 4px 0 0;\n  }\n  .shop-container .nav-tabs-justified > .active > a, .shop-container .nav-tabs.nav-justified > .active > a,\n  .shop-container .nav-tabs-justified > .active > a:hover,\n  .shop-container .nav-tabs-justified > .active > a:focus {\n    border-bottom-color: #fff;\n  }\n}\n.shop-container .tab-content > .tab-pane {\n  display: none;\n}\n.shop-container .tab-content > .active {\n  display: block;\n}\n.shop-container .nav-tabs .dropdown-menu {\n  margin-top: -1px;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.shop-container .navbar {\n  position: relative;\n  min-height: 50px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n}\n.shop-container .navbar:before, .shop-container .navbar:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .navbar:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar {\n    border-radius: 4px;\n  }\n}\n.shop-container .navbar-header:before, .shop-container .navbar-header:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .navbar-header:after {\n  clear: both;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-header {\n    float: left;\n  }\n}\n.shop-container .navbar-collapse {\n  padding-right: 15px;\n  padding-left: 15px;\n  overflow-x: visible;\n  border-top: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\n  -webkit-overflow-scrolling: touch;\n}\n.shop-container .navbar-collapse:before, .shop-container .navbar-collapse:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .navbar-collapse:after {\n  clear: both;\n}\n.shop-container .navbar-collapse.in {\n  overflow-y: auto;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-collapse {\n    width: auto;\n    border-top: 0;\n    box-shadow: none;\n  }\n  .shop-container .navbar-collapse.collapse {\n    display: block !important;\n    height: auto !important;\n    padding-bottom: 0;\n    overflow: visible !important;\n  }\n  .shop-container .navbar-collapse.in {\n    overflow-y: visible;\n  }\n  .navbar-fixed-top .shop-container .navbar-collapse, .navbar-static-top .shop-container .navbar-collapse, .navbar-fixed-bottom .shop-container .navbar-collapse {\n    padding-right: 0;\n    padding-left: 0;\n  }\n}\n.shop-container .navbar-fixed-top,\n.shop-container .navbar-fixed-bottom {\n  position: fixed;\n  right: 0;\n  left: 0;\n  z-index: 1030;\n}\n.shop-container .navbar-fixed-top .navbar-collapse,\n.shop-container .navbar-fixed-bottom .navbar-collapse {\n  max-height: 340px;\n}\n@media (max-device-width: 480px) and (orientation: landscape) {\n  .shop-container .navbar-fixed-top .navbar-collapse,\n  .shop-container .navbar-fixed-bottom .navbar-collapse {\n    max-height: 200px;\n  }\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-fixed-top,\n  .shop-container .navbar-fixed-bottom {\n    border-radius: 0;\n  }\n}\n.shop-container .navbar-fixed-top {\n  top: 0;\n  border-width: 0 0 1px;\n}\n.shop-container .navbar-fixed-bottom {\n  bottom: 0;\n  margin-bottom: 0;\n  border-width: 1px 0 0;\n}\n.shop-container .container > .navbar-header,\n.shop-container .container > .navbar-collapse,\n.shop-container .container-fluid > .navbar-header,\n.shop-container .container-fluid > .navbar-collapse {\n  margin-right: -15px;\n  margin-left: -15px;\n}\n@media (min-width: 768px) {\n  .shop-container .container > .navbar-header,\n  .shop-container .container > .navbar-collapse,\n  .shop-container .container-fluid > .navbar-header,\n  .shop-container .container-fluid > .navbar-collapse {\n    margin-right: 0;\n    margin-left: 0;\n  }\n}\n.shop-container .navbar-static-top {\n  z-index: 1000;\n  border-width: 0 0 1px;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-static-top {\n    border-radius: 0;\n  }\n}\n.shop-container .navbar-brand {\n  float: left;\n  height: 50px;\n  padding: 15px 15px;\n  font-size: 18px;\n  line-height: 20px;\n}\n.shop-container .navbar-brand:hover, .shop-container .navbar-brand:focus {\n  text-decoration: none;\n}\n.shop-container .navbar-brand > img {\n  display: block;\n}\n@media (min-width: 768px) {\n  .navbar > .container .shop-container .navbar-brand, .navbar > .container-fluid .shop-container .navbar-brand {\n    margin-left: -15px;\n  }\n}\n.shop-container .navbar-toggle {\n  position: relative;\n  float: right;\n  padding: 9px 10px;\n  margin-right: 15px;\n  margin-top: 8px;\n  margin-bottom: 8px;\n  background-color: transparent;\n  background-image: none;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.shop-container .navbar-toggle:focus {\n  outline: 0;\n}\n.shop-container .navbar-toggle .icon-bar {\n  display: block;\n  width: 22px;\n  height: 2px;\n  border-radius: 1px;\n}\n.shop-container .navbar-toggle .icon-bar + .icon-bar {\n  margin-top: 4px;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-toggle {\n    display: none;\n  }\n}\n.shop-container .navbar-nav {\n  margin: 7.5px -15px;\n}\n.shop-container .navbar-nav > li > a {\n  padding-top: 10px;\n  padding-bottom: 10px;\n  line-height: 20px;\n}\n@media (max-width: 767px) {\n  .shop-container .navbar-nav .open .dropdown-menu {\n    position: static;\n    float: none;\n    width: auto;\n    margin-top: 0;\n    background-color: transparent;\n    border: 0;\n    box-shadow: none;\n  }\n  .shop-container .navbar-nav .open .dropdown-menu > li > a,\n  .shop-container .navbar-nav .open .dropdown-menu .dropdown-header {\n    padding: 5px 15px 5px 25px;\n  }\n  .shop-container .navbar-nav .open .dropdown-menu > li > a {\n    line-height: 20px;\n  }\n  .shop-container .navbar-nav .open .dropdown-menu > li > a:hover, .shop-container .navbar-nav .open .dropdown-menu > li > a:focus {\n    background-image: none;\n  }\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-nav {\n    float: left;\n    margin: 0;\n  }\n  .shop-container .navbar-nav > li {\n    float: left;\n  }\n  .shop-container .navbar-nav > li > a {\n    padding-top: 15px;\n    padding-bottom: 15px;\n  }\n}\n.shop-container .navbar-form {\n  padding: 10px 15px;\n  margin-right: -15px;\n  margin-left: -15px;\n  border-top: 1px solid transparent;\n  border-bottom: 1px solid transparent;\n  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(255, 255, 255, 0.1);\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-form .form-group {\n    display: inline-block;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .navbar-form .form-control {\n    display: inline-block;\n    width: auto;\n    vertical-align: middle;\n  }\n  .shop-container .navbar-form .form-control-static {\n    display: inline-block;\n  }\n  .shop-container .navbar-form .input-group {\n    display: inline-table;\n    vertical-align: middle;\n  }\n  .shop-container .navbar-form .input-group .input-group-addon,\n  .shop-container .navbar-form .input-group .input-group-btn,\n  .shop-container .navbar-form .input-group .form-control {\n    width: auto;\n  }\n  .shop-container .navbar-form .input-group > .form-control {\n    width: 100%;\n  }\n  .shop-container .navbar-form .control-label {\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .navbar-form .radio,\n  .shop-container .navbar-form .checkbox {\n    display: inline-block;\n    margin-top: 0;\n    margin-bottom: 0;\n    vertical-align: middle;\n  }\n  .shop-container .navbar-form .radio label,\n  .shop-container .navbar-form .checkbox label {\n    padding-left: 0;\n  }\n  .shop-container .navbar-form .radio input[type=radio],\n  .shop-container .navbar-form .checkbox input[type=checkbox] {\n    position: relative;\n    margin-left: 0;\n  }\n  .shop-container .navbar-form .has-feedback .form-control-feedback {\n    top: 0;\n  }\n}\n@media (max-width: 767px) {\n  .shop-container .navbar-form .form-group {\n    margin-bottom: 5px;\n  }\n  .shop-container .navbar-form .form-group:last-child {\n    margin-bottom: 0;\n  }\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-form {\n    width: auto;\n    padding-top: 0;\n    padding-bottom: 0;\n    margin-right: 0;\n    margin-left: 0;\n    border: 0;\n    box-shadow: none;\n  }\n}\n.shop-container .navbar-nav > li > .dropdown-menu {\n  margin-top: 0;\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.shop-container .navbar-fixed-bottom .navbar-nav > li > .dropdown-menu {\n  margin-bottom: 0;\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 0;\n  border-bottom-left-radius: 0;\n}\n.shop-container .navbar-btn {\n  margin-top: 8px;\n  margin-bottom: 8px;\n}\n.shop-container .navbar-btn.btn-sm, .shop-container .btn-group-sm > .navbar-btn.btn {\n  margin-top: 10px;\n  margin-bottom: 10px;\n}\n.shop-container .navbar-btn.btn-xs, .shop-container .btn-group-xs > .navbar-btn.btn {\n  margin-top: 14px;\n  margin-bottom: 14px;\n}\n.shop-container .navbar-text {\n  margin-top: 15px;\n  margin-bottom: 15px;\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-text {\n    float: left;\n    margin-right: 15px;\n    margin-left: 15px;\n  }\n}\n@media (min-width: 768px) {\n  .shop-container .navbar-left {\n    float: left !important;\n  }\n  .shop-container .navbar-right {\n    float: right !important;\n    margin-right: -15px;\n  }\n  .shop-container .navbar-right ~ .navbar-right {\n    margin-right: 0;\n  }\n}\n.shop-container .navbar-default {\n  background-color: #f8f8f8;\n  border-color: rgb(231.425, 231.425, 231.425);\n}\n.shop-container .navbar-default .navbar-brand {\n  color: #777;\n}\n.shop-container .navbar-default .navbar-brand:hover, .shop-container .navbar-default .navbar-brand:focus {\n  color: rgb(93.5, 93.5, 93.5);\n  background-color: transparent;\n}\n.shop-container .navbar-default .navbar-text {\n  color: #777;\n}\n.shop-container .navbar-default .navbar-nav > li > a {\n  color: #777;\n}\n.shop-container .navbar-default .navbar-nav > li > a:hover, .shop-container .navbar-default .navbar-nav > li > a:focus {\n  color: #333;\n  background-color: transparent;\n}\n.shop-container .navbar-default .navbar-nav > .active > a, .shop-container .navbar-default .navbar-nav > .active > a:hover, .shop-container .navbar-default .navbar-nav > .active > a:focus {\n  color: #555;\n  background-color: rgb(231.425, 231.425, 231.425);\n}\n.shop-container .navbar-default .navbar-nav > .disabled > a, .shop-container .navbar-default .navbar-nav > .disabled > a:hover, .shop-container .navbar-default .navbar-nav > .disabled > a:focus {\n  color: #ccc;\n  background-color: transparent;\n}\n.shop-container .navbar-default .navbar-nav > .open > a, .shop-container .navbar-default .navbar-nav > .open > a:hover, .shop-container .navbar-default .navbar-nav > .open > a:focus {\n  color: #555;\n  background-color: rgb(231.425, 231.425, 231.425);\n}\n@media (max-width: 767px) {\n  .shop-container .navbar-default .navbar-nav .open .dropdown-menu > li > a {\n    color: #777;\n  }\n  .shop-container .navbar-default .navbar-nav .open .dropdown-menu > li > a:hover, .shop-container .navbar-default .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #333;\n    background-color: transparent;\n  }\n  .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .active > a, .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .active > a:hover, .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #555;\n    background-color: rgb(231.425, 231.425, 231.425);\n  }\n  .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a, .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:hover, .shop-container .navbar-default .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #ccc;\n    background-color: transparent;\n  }\n}\n.shop-container .navbar-default .navbar-toggle {\n  border-color: #ddd;\n}\n.shop-container .navbar-default .navbar-toggle:hover, .shop-container .navbar-default .navbar-toggle:focus {\n  background-color: #ddd;\n}\n.shop-container .navbar-default .navbar-toggle .icon-bar {\n  background-color: #888;\n}\n.shop-container .navbar-default .navbar-collapse,\n.shop-container .navbar-default .navbar-form {\n  border-color: rgb(231.425, 231.425, 231.425);\n}\n.shop-container .navbar-default .navbar-link {\n  color: #777;\n}\n.shop-container .navbar-default .navbar-link:hover {\n  color: #333;\n}\n.shop-container .navbar-default .btn-link {\n  color: #777;\n}\n.shop-container .navbar-default .btn-link:hover, .shop-container .navbar-default .btn-link:focus {\n  color: #333;\n}\n.shop-container .navbar-default .btn-link[disabled]:hover, .shop-container .navbar-default .btn-link[disabled]:focus, fieldset[disabled] .shop-container .navbar-default .btn-link:hover, fieldset[disabled] .shop-container .navbar-default .btn-link:focus {\n  color: #ccc;\n}\n.shop-container .navbar-inverse {\n  background-color: #222;\n  border-color: rgb(8.5, 8.5, 8.5);\n}\n.shop-container .navbar-inverse .navbar-brand {\n  color: rgb(157.335, 157.335, 157.335);\n}\n.shop-container .navbar-inverse .navbar-brand:hover, .shop-container .navbar-inverse .navbar-brand:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.shop-container .navbar-inverse .navbar-text {\n  color: rgb(157.335, 157.335, 157.335);\n}\n.shop-container .navbar-inverse .navbar-nav > li > a {\n  color: rgb(157.335, 157.335, 157.335);\n}\n.shop-container .navbar-inverse .navbar-nav > li > a:hover, .shop-container .navbar-inverse .navbar-nav > li > a:focus {\n  color: #fff;\n  background-color: transparent;\n}\n.shop-container .navbar-inverse .navbar-nav > .active > a, .shop-container .navbar-inverse .navbar-nav > .active > a:hover, .shop-container .navbar-inverse .navbar-nav > .active > a:focus {\n  color: #fff;\n  background-color: rgb(8.5, 8.5, 8.5);\n}\n.shop-container .navbar-inverse .navbar-nav > .disabled > a, .shop-container .navbar-inverse .navbar-nav > .disabled > a:hover, .shop-container .navbar-inverse .navbar-nav > .disabled > a:focus {\n  color: #444;\n  background-color: transparent;\n}\n.shop-container .navbar-inverse .navbar-nav > .open > a, .shop-container .navbar-inverse .navbar-nav > .open > a:hover, .shop-container .navbar-inverse .navbar-nav > .open > a:focus {\n  color: #fff;\n  background-color: rgb(8.5, 8.5, 8.5);\n}\n@media (max-width: 767px) {\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .dropdown-header {\n    border-color: rgb(8.5, 8.5, 8.5);\n  }\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu .divider {\n    background-color: rgb(8.5, 8.5, 8.5);\n  }\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > li > a {\n    color: rgb(157.335, 157.335, 157.335);\n  }\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:hover, .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > li > a:focus {\n    color: #fff;\n    background-color: transparent;\n  }\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a, .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:hover, .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .active > a:focus {\n    color: #fff;\n    background-color: rgb(8.5, 8.5, 8.5);\n  }\n  .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a, .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:hover, .shop-container .navbar-inverse .navbar-nav .open .dropdown-menu > .disabled > a:focus {\n    color: #444;\n    background-color: transparent;\n  }\n}\n.shop-container .navbar-inverse .navbar-toggle {\n  border-color: #333;\n}\n.shop-container .navbar-inverse .navbar-toggle:hover, .shop-container .navbar-inverse .navbar-toggle:focus {\n  background-color: #333;\n}\n.shop-container .navbar-inverse .navbar-toggle .icon-bar {\n  background-color: #fff;\n}\n.shop-container .navbar-inverse .navbar-collapse,\n.shop-container .navbar-inverse .navbar-form {\n  border-color: rgb(16.15, 16.15, 16.15);\n}\n.shop-container .navbar-inverse .navbar-link {\n  color: rgb(157.335, 157.335, 157.335);\n}\n.shop-container .navbar-inverse .navbar-link:hover {\n  color: #fff;\n}\n.shop-container .navbar-inverse .btn-link {\n  color: rgb(157.335, 157.335, 157.335);\n}\n.shop-container .navbar-inverse .btn-link:hover, .shop-container .navbar-inverse .btn-link:focus {\n  color: #fff;\n}\n.shop-container .navbar-inverse .btn-link[disabled]:hover, .shop-container .navbar-inverse .btn-link[disabled]:focus, fieldset[disabled] .shop-container .navbar-inverse .btn-link:hover, fieldset[disabled] .shop-container .navbar-inverse .btn-link:focus {\n  color: #444;\n}\n.shop-container .breadcrumb {\n  padding: 8px 15px;\n  margin-bottom: 20px;\n  list-style: none;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n}\n.shop-container .breadcrumb > li {\n  display: inline-block;\n}\n.shop-container .breadcrumb > li + li:before {\n  padding: 0 5px;\n  color: #ccc;\n  content: \"/ \";\n}\n.shop-container .breadcrumb > .active {\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .pagination {\n  display: inline-block;\n  padding-left: 0;\n  margin: 20px 0;\n  border-radius: 4px;\n}\n.shop-container .pagination > li {\n  display: inline;\n}\n.shop-container .pagination > li > a,\n.shop-container .pagination > li > span {\n  position: relative;\n  float: left;\n  padding: 6px 12px;\n  margin-left: -1px;\n  line-height: 1.428571429;\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  text-decoration: none;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.shop-container .pagination > li > a:hover, .shop-container .pagination > li > a:focus,\n.shop-container .pagination > li > span:hover,\n.shop-container .pagination > li > span:focus {\n  z-index: 2;\n  color: rgb(34.6799586777, 82.4466942149, 123.6700413223);\n  background-color: rgb(238.425, 238.425, 238.425);\n  border-color: #ddd;\n}\n.shop-container .pagination > li:first-child > a,\n.shop-container .pagination > li:first-child > span {\n  margin-left: 0;\n  border-top-left-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.shop-container .pagination > li:last-child > a,\n.shop-container .pagination > li:last-child > span {\n  border-top-right-radius: 4px;\n  border-bottom-right-radius: 4px;\n}\n.shop-container .pagination > .active > a, .shop-container .pagination > .active > a:hover, .shop-container .pagination > .active > a:focus,\n.shop-container .pagination > .active > span,\n.shop-container .pagination > .active > span:hover,\n.shop-container .pagination > .active > span:focus {\n  z-index: 3;\n  color: #fff;\n  cursor: default;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .pagination > .disabled > span,\n.shop-container .pagination > .disabled > span:hover,\n.shop-container .pagination > .disabled > span:focus,\n.shop-container .pagination > .disabled > a,\n.shop-container .pagination > .disabled > a:hover,\n.shop-container .pagination > .disabled > a:focus {\n  color: rgb(119.085, 119.085, 119.085);\n  cursor: not-allowed;\n  background-color: #fff;\n  border-color: #ddd;\n}\n.shop-container .pagination-lg > li > a,\n.shop-container .pagination-lg > li > span {\n  padding: 10px 16px;\n  font-size: 18px;\n  line-height: 1.3333333;\n}\n.shop-container .pagination-lg > li:first-child > a,\n.shop-container .pagination-lg > li:first-child > span {\n  border-top-left-radius: 6px;\n  border-bottom-left-radius: 6px;\n}\n.shop-container .pagination-lg > li:last-child > a,\n.shop-container .pagination-lg > li:last-child > span {\n  border-top-right-radius: 6px;\n  border-bottom-right-radius: 6px;\n}\n.shop-container .pagination-sm > li > a,\n.shop-container .pagination-sm > li > span {\n  padding: 5px 10px;\n  font-size: 12px;\n  line-height: 1.5;\n}\n.shop-container .pagination-sm > li:first-child > a,\n.shop-container .pagination-sm > li:first-child > span {\n  border-top-left-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.shop-container .pagination-sm > li:last-child > a,\n.shop-container .pagination-sm > li:last-child > span {\n  border-top-right-radius: 3px;\n  border-bottom-right-radius: 3px;\n}\n.shop-container .pager {\n  padding-left: 0;\n  margin: 20px 0;\n  text-align: center;\n  list-style: none;\n}\n.shop-container .pager:before, .shop-container .pager:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .pager:after {\n  clear: both;\n}\n.shop-container .pager li {\n  display: inline;\n}\n.shop-container .pager li > a,\n.shop-container .pager li > span {\n  display: inline-block;\n  padding: 5px 14px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 15px;\n}\n.shop-container .pager li > a:hover,\n.shop-container .pager li > a:focus {\n  text-decoration: none;\n  background-color: rgb(238.425, 238.425, 238.425);\n}\n.shop-container .pager .next > a,\n.shop-container .pager .next > span {\n  float: right;\n}\n.shop-container .pager .previous > a,\n.shop-container .pager .previous > span {\n  float: left;\n}\n.shop-container .pager .disabled > a,\n.shop-container .pager .disabled > a:hover,\n.shop-container .pager .disabled > a:focus,\n.shop-container .pager .disabled > span {\n  color: rgb(119.085, 119.085, 119.085);\n  cursor: not-allowed;\n  background-color: #fff;\n}\n.shop-container .label {\n  display: inline;\n  padding: 0.2em 0.6em 0.3em;\n  font-size: 75%;\n  font-weight: 700;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: baseline;\n  border-radius: 0.25em;\n}\n.shop-container .label:empty {\n  display: none;\n}\n.btn .shop-container .label {\n  position: relative;\n  top: -1px;\n}\n.shop-container a.label:hover, .shop-container a.label:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.shop-container .label-default {\n  background-color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .label-default[href]:hover, .shop-container .label-default[href]:focus {\n  background-color: rgb(93.585, 93.585, 93.585);\n}\n.shop-container .label-primary {\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .label-primary[href]:hover, .shop-container .label-primary[href]:focus {\n  background-color: rgb(40.2646694215, 95.723553719, 143.5853305785);\n}\n.shop-container .label-success {\n  background-color: #5cb85c;\n}\n.shop-container .label-success[href]:hover, .shop-container .label-success[href]:focus {\n  background-color: rgb(68.2692307692, 156.7307692308, 68.2692307692);\n}\n.shop-container .label-info {\n  background-color: #5bc0de;\n}\n.shop-container .label-info[href]:hover, .shop-container .label-info[href]:focus {\n  background-color: rgb(48.5431472081, 175.6903553299, 213.4568527919);\n}\n.shop-container .label-warning {\n  background-color: #f0ad4e;\n}\n.shop-container .label-warning[href]:hover, .shop-container .label-warning[href]:focus {\n  background-color: rgb(236.015625, 151.21875, 30.984375);\n}\n.shop-container .label-danger {\n  background-color: #d9534f;\n}\n.shop-container .label-danger[href]:hover, .shop-container .label-danger[href]:focus {\n  background-color: rgb(201.4953271028, 48.0841121495, 43.5046728972);\n}\n.shop-container .badge {\n  display: inline-block;\n  min-width: 10px;\n  padding: 3px 7px;\n  font-size: 12px;\n  font-weight: bold;\n  line-height: 1;\n  color: #fff;\n  text-align: center;\n  white-space: nowrap;\n  vertical-align: middle;\n  background-color: rgb(119.085, 119.085, 119.085);\n  border-radius: 10px;\n}\n.shop-container .badge:empty {\n  display: none;\n}\n.btn .shop-container .badge {\n  position: relative;\n  top: -1px;\n}\n.btn-xs .shop-container .badge, .btn-group-xs > .btn .shop-container .badge {\n  top: 0;\n  padding: 1px 5px;\n}\n.list-group-item.active > .shop-container .badge, .nav-pills > .active > a > .shop-container .badge {\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  background-color: #fff;\n}\n.list-group-item > .shop-container .badge {\n  float: right;\n}\n.list-group-item > .shop-container .badge + .shop-container .badge {\n  margin-right: 5px;\n}\n.nav-pills > li > a > .shop-container .badge {\n  margin-left: 3px;\n}\n.shop-container a.badge:hover, .shop-container a.badge:focus {\n  color: #fff;\n  text-decoration: none;\n  cursor: pointer;\n}\n.shop-container .jumbotron {\n  padding-top: 30px;\n  padding-bottom: 30px;\n  margin-bottom: 30px;\n  color: inherit;\n  background-color: rgb(238.425, 238.425, 238.425);\n}\n.shop-container .jumbotron h1,\n.shop-container .jumbotron .h1 {\n  color: inherit;\n}\n.shop-container .jumbotron p {\n  margin-bottom: 15px;\n  font-size: 21px;\n  font-weight: 200;\n}\n.shop-container .jumbotron > hr {\n  border-top-color: rgb(212.925, 212.925, 212.925);\n}\n.container .shop-container .jumbotron, .container-fluid .shop-container .jumbotron {\n  padding-right: 15px;\n  padding-left: 15px;\n  border-radius: 6px;\n}\n.shop-container .jumbotron .container {\n  max-width: 100%;\n}\n@media screen and (min-width: 768px) {\n  .shop-container .jumbotron {\n    padding-top: 48px;\n    padding-bottom: 48px;\n  }\n  .container .shop-container .jumbotron, .container-fluid .shop-container .jumbotron {\n    padding-right: 60px;\n    padding-left: 60px;\n  }\n  .shop-container .jumbotron h1,\n  .shop-container .jumbotron .h1 {\n    font-size: 63px;\n  }\n}\n.shop-container .thumbnail {\n  display: block;\n  padding: 4px;\n  margin-bottom: 20px;\n  line-height: 1.428571429;\n  background-color: #fff;\n  border: 1px solid #ddd;\n  border-radius: 4px;\n  transition: border 0.2s ease-in-out;\n}\n.shop-container .thumbnail > img,\n.shop-container .thumbnail a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n  margin-right: auto;\n  margin-left: auto;\n}\n.shop-container .thumbnail .caption {\n  padding: 9px;\n  color: #333333;\n}\n.shop-container a.thumbnail:hover,\n.shop-container a.thumbnail:focus,\n.shop-container a.thumbnail.active {\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .alert {\n  padding: 15px;\n  margin-bottom: 20px;\n  border: 1px solid transparent;\n  border-radius: 4px;\n}\n.shop-container .alert h4 {\n  margin-top: 0;\n  color: inherit;\n}\n.shop-container .alert .alert-link {\n  font-weight: bold;\n}\n.shop-container .alert > p,\n.shop-container .alert > ul {\n  margin-bottom: 0;\n}\n.shop-container .alert > p + p {\n  margin-top: 5px;\n}\n.shop-container .alert-dismissable,\n.shop-container .alert-dismissible {\n  padding-right: 35px;\n}\n.shop-container .alert-dismissable .close,\n.shop-container .alert-dismissible .close {\n  position: relative;\n  top: -2px;\n  right: -21px;\n  color: inherit;\n}\n.shop-container .alert-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: rgb(213.7777777778, 232.9166666667, 197.5833333333);\n}\n.shop-container .alert-success hr {\n  border-top-color: rgb(200.5555555556, 225.8333333333, 179.1666666667);\n}\n.shop-container .alert-success .alert-link {\n  color: rgb(42.808988764, 84.191011236, 43.5224719101);\n}\n.shop-container .alert-info {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: rgb(187.5086956522, 231.9108695652, 240.7913043478);\n}\n.shop-container .alert-info hr {\n  border-top-color: rgb(166.4434782609, 224.7043478261, 236.3565217391);\n}\n.shop-container .alert-info .alert-link {\n  color: rgb(35.984375, 82.25, 105.015625);\n}\n.shop-container .alert-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: rgb(249.5322580645, 234.6478494624, 203.9677419355);\n}\n.shop-container .alert-warning hr {\n  border-top-color: rgb(247.064516129, 225.4623655914, 180.935483871);\n}\n.shop-container .alert-warning .alert-link {\n  color: rgb(102.2741116751, 80.7817258883, 43.7258883249);\n}\n.shop-container .alert-danger {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: rgb(234.7934782609, 203.7065217391, 208.8876811594);\n}\n.shop-container .alert-danger hr {\n  border-top-color: rgb(227.5869565217, 185.4130434783, 192.4420289855);\n}\n.shop-container .alert-danger .alert-link {\n  color: rgb(132.3234042553, 53.2425531915, 51.6765957447);\n}\n@keyframes progress-bar-stripes {\n  from {\n    background-position: 40px 0;\n  }\n  to {\n    background-position: 0 0;\n  }\n}\n.shop-container .progress {\n  height: 20px;\n  margin-bottom: 20px;\n  overflow: hidden;\n  background-color: #f5f5f5;\n  border-radius: 4px;\n  box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1);\n}\n.shop-container .progress-bar {\n  float: left;\n  width: 0%;\n  height: 100%;\n  font-size: 12px;\n  line-height: 20px;\n  color: #fff;\n  text-align: center;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15);\n  transition: width 0.6s ease;\n}\n.shop-container .progress-striped .progress-bar,\n.shop-container .progress-bar-striped {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n  background-size: 40px 40px;\n}\n.shop-container .progress.active .progress-bar,\n.shop-container .progress-bar.active {\n  animation: progress-bar-stripes 2s linear infinite;\n}\n.shop-container .progress-bar-success {\n  background-color: #5cb85c;\n}\n.progress-striped .shop-container .progress-bar-success {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.shop-container .progress-bar-info {\n  background-color: #5bc0de;\n}\n.progress-striped .shop-container .progress-bar-info {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.shop-container .progress-bar-warning {\n  background-color: #f0ad4e;\n}\n.progress-striped .shop-container .progress-bar-warning {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.shop-container .progress-bar-danger {\n  background-color: #d9534f;\n}\n.progress-striped .shop-container .progress-bar-danger {\n  background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent);\n}\n.shop-container .media {\n  margin-top: 15px;\n}\n.shop-container .media:first-child {\n  margin-top: 0;\n}\n.shop-container .media,\n.shop-container .media-body {\n  overflow: hidden;\n  zoom: 1;\n}\n.shop-container .media-body {\n  width: 10000px;\n}\n.shop-container .media-object {\n  display: block;\n}\n.shop-container .media-object.img-thumbnail {\n  max-width: none;\n}\n.shop-container .media-right,\n.shop-container .media > .pull-right {\n  padding-left: 10px;\n}\n.shop-container .media-left,\n.shop-container .media > .pull-left {\n  padding-right: 10px;\n}\n.shop-container .media-left,\n.shop-container .media-right,\n.shop-container .media-body {\n  display: table-cell;\n  vertical-align: top;\n}\n.shop-container .media-middle {\n  vertical-align: middle;\n}\n.shop-container .media-bottom {\n  vertical-align: bottom;\n}\n.shop-container .media-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.shop-container .media-list {\n  padding-left: 0;\n  list-style: none;\n}\n.shop-container .list-group {\n  padding-left: 0;\n  margin-bottom: 20px;\n}\n.shop-container .list-group-item {\n  position: relative;\n  display: block;\n  padding: 10px 15px;\n  margin-bottom: -1px;\n  background-color: #fff;\n  border: 1px solid #ddd;\n}\n.shop-container .list-group-item:first-child {\n  border-top-left-radius: 4px;\n  border-top-right-radius: 4px;\n}\n.shop-container .list-group-item:last-child {\n  margin-bottom: 0;\n  border-bottom-right-radius: 4px;\n  border-bottom-left-radius: 4px;\n}\n.shop-container .list-group-item.disabled, .shop-container .list-group-item.disabled:hover, .shop-container .list-group-item.disabled:focus {\n  color: rgb(119.085, 119.085, 119.085);\n  cursor: not-allowed;\n  background-color: rgb(238.425, 238.425, 238.425);\n}\n.shop-container .list-group-item.disabled .list-group-item-heading, .shop-container .list-group-item.disabled:hover .list-group-item-heading, .shop-container .list-group-item.disabled:focus .list-group-item-heading {\n  color: inherit;\n}\n.shop-container .list-group-item.disabled .list-group-item-text, .shop-container .list-group-item.disabled:hover .list-group-item-text, .shop-container .list-group-item.disabled:focus .list-group-item-text {\n  color: rgb(119.085, 119.085, 119.085);\n}\n.shop-container .list-group-item.active, .shop-container .list-group-item.active:hover, .shop-container .list-group-item.active:focus {\n  z-index: 2;\n  color: #fff;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .list-group-item.active .list-group-item-heading,\n.shop-container .list-group-item.active .list-group-item-heading > small,\n.shop-container .list-group-item.active .list-group-item-heading > .small, .shop-container .list-group-item.active:hover .list-group-item-heading,\n.shop-container .list-group-item.active:hover .list-group-item-heading > small,\n.shop-container .list-group-item.active:hover .list-group-item-heading > .small, .shop-container .list-group-item.active:focus .list-group-item-heading,\n.shop-container .list-group-item.active:focus .list-group-item-heading > small,\n.shop-container .list-group-item.active:focus .list-group-item-heading > .small {\n  color: inherit;\n}\n.shop-container .list-group-item.active .list-group-item-text, .shop-container .list-group-item.active:hover .list-group-item-text, .shop-container .list-group-item.active:focus .list-group-item-text {\n  color: rgb(199.4324380165, 220.8950413223, 239.4175619835);\n}\n.shop-container a.list-group-item,\n.shop-container button.list-group-item {\n  color: #555;\n}\n.shop-container a.list-group-item .list-group-item-heading,\n.shop-container button.list-group-item .list-group-item-heading {\n  color: #333;\n}\n.shop-container a.list-group-item:hover, .shop-container a.list-group-item:focus,\n.shop-container button.list-group-item:hover,\n.shop-container button.list-group-item:focus {\n  color: #555;\n  text-decoration: none;\n  background-color: #f5f5f5;\n}\n.shop-container button.list-group-item {\n  width: 100%;\n  text-align: left;\n}\n.shop-container .list-group-item-success {\n  color: #3c763d;\n  background-color: #dff0d8;\n}\n.shop-container a.list-group-item-success,\n.shop-container button.list-group-item-success {\n  color: #3c763d;\n}\n.shop-container a.list-group-item-success .list-group-item-heading,\n.shop-container button.list-group-item-success .list-group-item-heading {\n  color: inherit;\n}\n.shop-container a.list-group-item-success:hover, .shop-container a.list-group-item-success:focus,\n.shop-container button.list-group-item-success:hover,\n.shop-container button.list-group-item-success:focus {\n  color: #3c763d;\n  background-color: rgb(207.8888888889, 232.9166666667, 197.5833333333);\n}\n.shop-container a.list-group-item-success.active, .shop-container a.list-group-item-success.active:hover, .shop-container a.list-group-item-success.active:focus,\n.shop-container button.list-group-item-success.active,\n.shop-container button.list-group-item-success.active:hover,\n.shop-container button.list-group-item-success.active:focus {\n  color: #fff;\n  background-color: #3c763d;\n  border-color: #3c763d;\n}\n.shop-container .list-group-item-info {\n  color: #31708f;\n  background-color: #d9edf7;\n}\n.shop-container a.list-group-item-info,\n.shop-container button.list-group-item-info {\n  color: #31708f;\n}\n.shop-container a.list-group-item-info .list-group-item-heading,\n.shop-container button.list-group-item-info .list-group-item-heading {\n  color: inherit;\n}\n.shop-container a.list-group-item-info:hover, .shop-container a.list-group-item-info:focus,\n.shop-container button.list-group-item-info:hover,\n.shop-container button.list-group-item-info:focus {\n  color: #31708f;\n  background-color: rgb(195.9347826087, 227.0217391304, 242.5652173913);\n}\n.shop-container a.list-group-item-info.active, .shop-container a.list-group-item-info.active:hover, .shop-container a.list-group-item-info.active:focus,\n.shop-container button.list-group-item-info.active,\n.shop-container button.list-group-item-info.active:hover,\n.shop-container button.list-group-item-info.active:focus {\n  color: #fff;\n  background-color: #31708f;\n  border-color: #31708f;\n}\n.shop-container .list-group-item-warning {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n}\n.shop-container a.list-group-item-warning,\n.shop-container button.list-group-item-warning {\n  color: #8a6d3b;\n}\n.shop-container a.list-group-item-warning .list-group-item-heading,\n.shop-container button.list-group-item-warning .list-group-item-heading {\n  color: inherit;\n}\n.shop-container a.list-group-item-warning:hover, .shop-container a.list-group-item-warning:focus,\n.shop-container button.list-group-item-warning:hover,\n.shop-container button.list-group-item-warning:focus {\n  color: #8a6d3b;\n  background-color: rgb(249.5322580645, 242.2419354839, 203.9677419355);\n}\n.shop-container a.list-group-item-warning.active, .shop-container a.list-group-item-warning.active:hover, .shop-container a.list-group-item-warning.active:focus,\n.shop-container button.list-group-item-warning.active,\n.shop-container button.list-group-item-warning.active:hover,\n.shop-container button.list-group-item-warning.active:focus {\n  color: #fff;\n  background-color: #8a6d3b;\n  border-color: #8a6d3b;\n}\n.shop-container .list-group-item-danger {\n  color: #a94442;\n  background-color: #f2dede;\n}\n.shop-container a.list-group-item-danger,\n.shop-container button.list-group-item-danger {\n  color: #a94442;\n}\n.shop-container a.list-group-item-danger .list-group-item-heading,\n.shop-container button.list-group-item-danger .list-group-item-heading {\n  color: inherit;\n}\n.shop-container a.list-group-item-danger:hover, .shop-container a.list-group-item-danger:focus,\n.shop-container button.list-group-item-danger:hover,\n.shop-container button.list-group-item-danger:focus {\n  color: #a94442;\n  background-color: rgb(234.7934782609, 203.7065217391, 203.7065217391);\n}\n.shop-container a.list-group-item-danger.active, .shop-container a.list-group-item-danger.active:hover, .shop-container a.list-group-item-danger.active:focus,\n.shop-container button.list-group-item-danger.active,\n.shop-container button.list-group-item-danger.active:hover,\n.shop-container button.list-group-item-danger.active:focus {\n  color: #fff;\n  background-color: #a94442;\n  border-color: #a94442;\n}\n.shop-container .list-group-item-heading {\n  margin-top: 0;\n  margin-bottom: 5px;\n}\n.shop-container .list-group-item-text {\n  margin-bottom: 0;\n  line-height: 1.3;\n}\n.shop-container .panel {\n  margin-bottom: 20px;\n  background-color: #fff;\n  border: 1px solid transparent;\n  border-radius: 4px;\n  box-shadow: 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.shop-container .panel-body {\n  padding: 15px;\n}\n.shop-container .panel-body:before, .shop-container .panel-body:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .panel-body:after {\n  clear: both;\n}\n.shop-container .panel-heading {\n  padding: 10px 15px;\n  border-bottom: 1px solid transparent;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.shop-container .panel-heading > .dropdown .dropdown-toggle {\n  color: inherit;\n}\n.shop-container .panel-title {\n  margin-top: 0;\n  margin-bottom: 0;\n  font-size: 16px;\n  color: inherit;\n}\n.shop-container .panel-title > a,\n.shop-container .panel-title > small,\n.shop-container .panel-title > .small,\n.shop-container .panel-title > small > a,\n.shop-container .panel-title > .small > a {\n  color: inherit;\n}\n.shop-container .panel-footer {\n  padding: 10px 15px;\n  background-color: #f5f5f5;\n  border-top: 1px solid #ddd;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.shop-container .panel > .list-group,\n.shop-container .panel > .panel-collapse > .list-group {\n  margin-bottom: 0;\n}\n.shop-container .panel > .list-group .list-group-item,\n.shop-container .panel > .panel-collapse > .list-group .list-group-item {\n  border-width: 1px 0;\n  border-radius: 0;\n}\n.shop-container .panel > .list-group:first-child .list-group-item:first-child,\n.shop-container .panel > .panel-collapse > .list-group:first-child .list-group-item:first-child {\n  border-top: 0;\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.shop-container .panel > .list-group:last-child .list-group-item:last-child,\n.shop-container .panel > .panel-collapse > .list-group:last-child .list-group-item:last-child {\n  border-bottom: 0;\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.shop-container .panel > .panel-heading + .panel-collapse > .list-group .list-group-item:first-child {\n  border-top-left-radius: 0;\n  border-top-right-radius: 0;\n}\n.shop-container .panel-heading + .list-group .list-group-item:first-child {\n  border-top-width: 0;\n}\n.shop-container .list-group + .panel-footer {\n  border-top-width: 0;\n}\n.shop-container .panel > .table,\n.shop-container .panel > .table-responsive > .table,\n.shop-container .panel > .panel-collapse > .table {\n  margin-bottom: 0;\n}\n.shop-container .panel > .table caption,\n.shop-container .panel > .table-responsive > .table caption,\n.shop-container .panel > .panel-collapse > .table caption {\n  padding-right: 15px;\n  padding-left: 15px;\n}\n.shop-container .panel > .table:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.shop-container .panel > .table:first-child > thead:first-child > tr:first-child,\n.shop-container .panel > .table:first-child > tbody:first-child > tr:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child {\n  border-top-left-radius: 3px;\n  border-top-right-radius: 3px;\n}\n.shop-container .panel > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.shop-container .panel > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.shop-container .panel > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.shop-container .panel > .table:first-child > tbody:first-child > tr:first-child th:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:first-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:first-child {\n  border-top-left-radius: 3px;\n}\n.shop-container .panel > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.shop-container .panel > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.shop-container .panel > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.shop-container .panel > .table:first-child > tbody:first-child > tr:first-child th:last-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child td:last-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > thead:first-child > tr:first-child th:last-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child td:last-child,\n.shop-container .panel > .table-responsive:first-child > .table:first-child > tbody:first-child > tr:first-child th:last-child {\n  border-top-right-radius: 3px;\n}\n.shop-container .panel > .table:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.shop-container .panel > .table:last-child > tbody:last-child > tr:last-child,\n.shop-container .panel > .table:last-child > tfoot:last-child > tr:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child {\n  border-bottom-right-radius: 3px;\n  border-bottom-left-radius: 3px;\n}\n.shop-container .panel > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.shop-container .panel > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.shop-container .panel > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.shop-container .panel > .table:last-child > tfoot:last-child > tr:last-child th:first-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:first-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:first-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:first-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:first-child {\n  border-bottom-left-radius: 3px;\n}\n.shop-container .panel > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.shop-container .panel > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.shop-container .panel > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.shop-container .panel > .table:last-child > tfoot:last-child > tr:last-child th:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child td:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tbody:last-child > tr:last-child th:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child td:last-child,\n.shop-container .panel > .table-responsive:last-child > .table:last-child > tfoot:last-child > tr:last-child th:last-child {\n  border-bottom-right-radius: 3px;\n}\n.shop-container .panel > .panel-body + .table,\n.shop-container .panel > .panel-body + .table-responsive,\n.shop-container .panel > .table + .panel-body,\n.shop-container .panel > .table-responsive + .panel-body {\n  border-top: 1px solid #ddd;\n}\n.shop-container .panel > .table > tbody:first-child > tr:first-child th,\n.shop-container .panel > .table > tbody:first-child > tr:first-child td {\n  border-top: 0;\n}\n.shop-container .panel > .table-bordered,\n.shop-container .panel > .table-responsive > .table-bordered {\n  border: 0;\n}\n.shop-container .panel > .table-bordered > thead > tr > th:first-child,\n.shop-container .panel > .table-bordered > thead > tr > td:first-child,\n.shop-container .panel > .table-bordered > tbody > tr > th:first-child,\n.shop-container .panel > .table-bordered > tbody > tr > td:first-child,\n.shop-container .panel > .table-bordered > tfoot > tr > th:first-child,\n.shop-container .panel > .table-bordered > tfoot > tr > td:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr > th:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr > td:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr > th:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr > td:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr > th:first-child,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr > td:first-child {\n  border-left: 0;\n}\n.shop-container .panel > .table-bordered > thead > tr > th:last-child,\n.shop-container .panel > .table-bordered > thead > tr > td:last-child,\n.shop-container .panel > .table-bordered > tbody > tr > th:last-child,\n.shop-container .panel > .table-bordered > tbody > tr > td:last-child,\n.shop-container .panel > .table-bordered > tfoot > tr > th:last-child,\n.shop-container .panel > .table-bordered > tfoot > tr > td:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr > th:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr > td:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr > th:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr > td:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr > th:last-child,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr > td:last-child {\n  border-right: 0;\n}\n.shop-container .panel > .table-bordered > thead > tr:first-child > td,\n.shop-container .panel > .table-bordered > thead > tr:first-child > th,\n.shop-container .panel > .table-bordered > tbody > tr:first-child > td,\n.shop-container .panel > .table-bordered > tbody > tr:first-child > th,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr:first-child > td,\n.shop-container .panel > .table-responsive > .table-bordered > thead > tr:first-child > th,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr:first-child > td,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr:first-child > th {\n  border-bottom: 0;\n}\n.shop-container .panel > .table-bordered > tbody > tr:last-child > td,\n.shop-container .panel > .table-bordered > tbody > tr:last-child > th,\n.shop-container .panel > .table-bordered > tfoot > tr:last-child > td,\n.shop-container .panel > .table-bordered > tfoot > tr:last-child > th,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr:last-child > td,\n.shop-container .panel > .table-responsive > .table-bordered > tbody > tr:last-child > th,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > td,\n.shop-container .panel > .table-responsive > .table-bordered > tfoot > tr:last-child > th {\n  border-bottom: 0;\n}\n.shop-container .panel > .table-responsive {\n  margin-bottom: 0;\n  border: 0;\n}\n.shop-container .panel-group {\n  margin-bottom: 20px;\n}\n.shop-container .panel-group .panel {\n  margin-bottom: 0;\n  border-radius: 4px;\n}\n.shop-container .panel-group .panel + .panel {\n  margin-top: 5px;\n}\n.shop-container .panel-group .panel-heading {\n  border-bottom: 0;\n}\n.shop-container .panel-group .panel-heading + .panel-collapse > .panel-body,\n.shop-container .panel-group .panel-heading + .panel-collapse > .list-group {\n  border-top: 1px solid #ddd;\n}\n.shop-container .panel-group .panel-footer {\n  border-top: 0;\n}\n.shop-container .panel-group .panel-footer + .panel-collapse .panel-body {\n  border-bottom: 1px solid #ddd;\n}\n.shop-container .panel-default {\n  border-color: #ddd;\n}\n.shop-container .panel-default > .panel-heading {\n  color: #333333;\n  background-color: #f5f5f5;\n  border-color: #ddd;\n}\n.shop-container .panel-default > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: #ddd;\n}\n.shop-container .panel-default > .panel-heading .badge {\n  color: #f5f5f5;\n  background-color: #333333;\n}\n.shop-container .panel-default > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: #ddd;\n}\n.shop-container .panel-primary {\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .panel-primary > .panel-heading {\n  color: #fff;\n  background-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  border-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .panel-primary > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .panel-primary > .panel-heading .badge {\n  color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n  background-color: #fff;\n}\n.shop-container .panel-primary > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: rgb(51.4340909091, 122.2772727273, 183.4159090909);\n}\n.shop-container .panel-success {\n  border-color: rgb(213.7777777778, 232.9166666667, 197.5833333333);\n}\n.shop-container .panel-success > .panel-heading {\n  color: #3c763d;\n  background-color: #dff0d8;\n  border-color: rgb(213.7777777778, 232.9166666667, 197.5833333333);\n}\n.shop-container .panel-success > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: rgb(213.7777777778, 232.9166666667, 197.5833333333);\n}\n.shop-container .panel-success > .panel-heading .badge {\n  color: #dff0d8;\n  background-color: #3c763d;\n}\n.shop-container .panel-success > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: rgb(213.7777777778, 232.9166666667, 197.5833333333);\n}\n.shop-container .panel-info {\n  border-color: rgb(187.5086956522, 231.9108695652, 240.7913043478);\n}\n.shop-container .panel-info > .panel-heading {\n  color: #31708f;\n  background-color: #d9edf7;\n  border-color: rgb(187.5086956522, 231.9108695652, 240.7913043478);\n}\n.shop-container .panel-info > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: rgb(187.5086956522, 231.9108695652, 240.7913043478);\n}\n.shop-container .panel-info > .panel-heading .badge {\n  color: #d9edf7;\n  background-color: #31708f;\n}\n.shop-container .panel-info > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: rgb(187.5086956522, 231.9108695652, 240.7913043478);\n}\n.shop-container .panel-warning {\n  border-color: rgb(249.5322580645, 234.6478494624, 203.9677419355);\n}\n.shop-container .panel-warning > .panel-heading {\n  color: #8a6d3b;\n  background-color: #fcf8e3;\n  border-color: rgb(249.5322580645, 234.6478494624, 203.9677419355);\n}\n.shop-container .panel-warning > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: rgb(249.5322580645, 234.6478494624, 203.9677419355);\n}\n.shop-container .panel-warning > .panel-heading .badge {\n  color: #fcf8e3;\n  background-color: #8a6d3b;\n}\n.shop-container .panel-warning > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: rgb(249.5322580645, 234.6478494624, 203.9677419355);\n}\n.shop-container .panel-danger {\n  border-color: rgb(234.7934782609, 203.7065217391, 208.8876811594);\n}\n.shop-container .panel-danger > .panel-heading {\n  color: #a94442;\n  background-color: #f2dede;\n  border-color: rgb(234.7934782609, 203.7065217391, 208.8876811594);\n}\n.shop-container .panel-danger > .panel-heading + .panel-collapse > .panel-body {\n  border-top-color: rgb(234.7934782609, 203.7065217391, 208.8876811594);\n}\n.shop-container .panel-danger > .panel-heading .badge {\n  color: #f2dede;\n  background-color: #a94442;\n}\n.shop-container .panel-danger > .panel-footer + .panel-collapse > .panel-body {\n  border-bottom-color: rgb(234.7934782609, 203.7065217391, 208.8876811594);\n}\n.shop-container .embed-responsive {\n  position: relative;\n  display: block;\n  height: 0;\n  padding: 0;\n  overflow: hidden;\n}\n.shop-container .embed-responsive .embed-responsive-item,\n.shop-container .embed-responsive iframe,\n.shop-container .embed-responsive embed,\n.shop-container .embed-responsive object,\n.shop-container .embed-responsive video {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 100%;\n  height: 100%;\n  border: 0;\n}\n.shop-container .embed-responsive-16by9 {\n  padding-bottom: 56.25%;\n}\n.shop-container .embed-responsive-4by3 {\n  padding-bottom: 75%;\n}\n.shop-container .well {\n  min-height: 20px;\n  padding: 19px;\n  margin-bottom: 20px;\n  background-color: #f5f5f5;\n  border: 1px solid rgb(227.15, 227.15, 227.15);\n  border-radius: 4px;\n  box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05);\n}\n.shop-container .well blockquote {\n  border-color: #ddd;\n  border-color: rgba(0, 0, 0, 0.15);\n}\n.shop-container .well-lg {\n  padding: 24px;\n  border-radius: 6px;\n}\n.shop-container .well-sm {\n  padding: 9px;\n  border-radius: 3px;\n}\n.shop-container .close {\n  float: right;\n  font-size: 21px;\n  font-weight: bold;\n  line-height: 1;\n  color: #000;\n  text-shadow: 0 1px 0 #fff;\n  filter: alpha(opacity=20);\n  opacity: 0.2;\n}\n.shop-container .close:hover, .shop-container .close:focus {\n  color: #000;\n  text-decoration: none;\n  cursor: pointer;\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.shop-container button.close {\n  padding: 0;\n  cursor: pointer;\n  background: transparent;\n  border: 0;\n  -webkit-appearance: none;\n  -moz-appearance: none;\n       appearance: none;\n}\n.shop-container .modal-open {\n  overflow: hidden;\n}\n.shop-container .modal {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1050;\n  display: none;\n  overflow: hidden;\n  -webkit-overflow-scrolling: touch;\n  outline: 0;\n}\n.shop-container .modal.fade .modal-dialog {\n  transform: translate(0, -25%);\n  transition: transform 0.3s ease-out;\n}\n.shop-container .modal.in .modal-dialog {\n  transform: translate(0, 0);\n}\n.shop-container .modal-open .modal {\n  overflow-x: hidden;\n  overflow-y: auto;\n}\n.shop-container .modal-dialog {\n  position: relative;\n  width: auto;\n  margin: 10px;\n}\n.shop-container .modal-content {\n  position: relative;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #999;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  box-shadow: 0 3px 9px rgba(0, 0, 0, 0.5);\n  outline: 0;\n}\n.shop-container .modal-backdrop {\n  position: fixed;\n  top: 0;\n  right: 0;\n  bottom: 0;\n  left: 0;\n  z-index: 1040;\n  background-color: #000;\n}\n.shop-container .modal-backdrop.fade {\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.shop-container .modal-backdrop.in {\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.shop-container .modal-header {\n  padding: 15px;\n  border-bottom: 1px solid #e5e5e5;\n}\n.shop-container .modal-header:before, .shop-container .modal-header:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .modal-header:after {\n  clear: both;\n}\n.shop-container .modal-header .close {\n  margin-top: -2px;\n}\n.shop-container .modal-title {\n  margin: 0;\n  line-height: 1.428571429;\n}\n.shop-container .modal-body {\n  position: relative;\n  padding: 15px;\n}\n.shop-container .modal-footer {\n  padding: 15px;\n  text-align: right;\n  border-top: 1px solid #e5e5e5;\n}\n.shop-container .modal-footer:before, .shop-container .modal-footer:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .modal-footer:after {\n  clear: both;\n}\n.shop-container .modal-footer .btn + .btn {\n  margin-bottom: 0;\n  margin-left: 5px;\n}\n.shop-container .modal-footer .btn-group .btn + .btn {\n  margin-left: -1px;\n}\n.shop-container .modal-footer .btn-block + .btn-block {\n  margin-left: 0;\n}\n.shop-container .modal-scrollbar-measure {\n  position: absolute;\n  top: -9999px;\n  width: 50px;\n  height: 50px;\n  overflow: scroll;\n}\n@media (min-width: 768px) {\n  .shop-container .modal-dialog {\n    width: 600px;\n    margin: 30px auto;\n  }\n  .shop-container .modal-content {\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.5);\n  }\n  .shop-container .modal-sm {\n    width: 300px;\n  }\n}\n@media (min-width: 992px) {\n  .shop-container .modal-lg {\n    width: 900px;\n  }\n}\n.shop-container .tooltip {\n  position: absolute;\n  z-index: 1070;\n  display: block;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.428571429;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 12px;\n  filter: alpha(opacity=0);\n  opacity: 0;\n}\n.shop-container .tooltip.in {\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.shop-container .tooltip.top {\n  padding: 5px 0;\n  margin-top: -3px;\n}\n.shop-container .tooltip.right {\n  padding: 0 5px;\n  margin-left: 3px;\n}\n.shop-container .tooltip.bottom {\n  padding: 5px 0;\n  margin-top: 3px;\n}\n.shop-container .tooltip.left {\n  padding: 0 5px;\n  margin-left: -3px;\n}\n.shop-container .tooltip.top .tooltip-arrow {\n  bottom: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.shop-container .tooltip.top-left .tooltip-arrow {\n  right: 5px;\n  bottom: 0;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.shop-container .tooltip.top-right .tooltip-arrow {\n  bottom: 0;\n  left: 5px;\n  margin-bottom: -5px;\n  border-width: 5px 5px 0;\n  border-top-color: #000;\n}\n.shop-container .tooltip.right .tooltip-arrow {\n  top: 50%;\n  left: 0;\n  margin-top: -5px;\n  border-width: 5px 5px 5px 0;\n  border-right-color: #000;\n}\n.shop-container .tooltip.left .tooltip-arrow {\n  top: 50%;\n  right: 0;\n  margin-top: -5px;\n  border-width: 5px 0 5px 5px;\n  border-left-color: #000;\n}\n.shop-container .tooltip.bottom .tooltip-arrow {\n  top: 0;\n  left: 50%;\n  margin-left: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.shop-container .tooltip.bottom-left .tooltip-arrow {\n  top: 0;\n  right: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.shop-container .tooltip.bottom-right .tooltip-arrow {\n  top: 0;\n  left: 5px;\n  margin-top: -5px;\n  border-width: 0 5px 5px;\n  border-bottom-color: #000;\n}\n.shop-container .tooltip-inner {\n  max-width: 200px;\n  padding: 3px 8px;\n  color: #fff;\n  text-align: center;\n  background-color: #000;\n  border-radius: 4px;\n}\n.shop-container .tooltip-arrow {\n  position: absolute;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.shop-container .popover {\n  position: absolute;\n  top: 0;\n  left: 0;\n  z-index: 1060;\n  display: none;\n  max-width: 276px;\n  padding: 1px;\n  font-family: \"Helvetica Neue\", Helvetica, Arial, sans-serif;\n  font-style: normal;\n  font-weight: 400;\n  line-height: 1.428571429;\n  line-break: auto;\n  text-align: left;\n  text-align: start;\n  text-decoration: none;\n  text-shadow: none;\n  text-transform: none;\n  letter-spacing: normal;\n  word-break: normal;\n  word-spacing: normal;\n  word-wrap: normal;\n  white-space: normal;\n  font-size: 14px;\n  background-color: #fff;\n  background-clip: padding-box;\n  border: 1px solid #ccc;\n  border: 1px solid rgba(0, 0, 0, 0.2);\n  border-radius: 6px;\n  box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2);\n}\n.shop-container .popover.top {\n  margin-top: -10px;\n}\n.shop-container .popover.right {\n  margin-left: 10px;\n}\n.shop-container .popover.bottom {\n  margin-top: 10px;\n}\n.shop-container .popover.left {\n  margin-left: -10px;\n}\n.shop-container .popover > .arrow {\n  border-width: 11px;\n}\n.shop-container .popover > .arrow, .shop-container .popover > .arrow:after {\n  position: absolute;\n  display: block;\n  width: 0;\n  height: 0;\n  border-color: transparent;\n  border-style: solid;\n}\n.shop-container .popover > .arrow:after {\n  content: \"\";\n  border-width: 10px;\n}\n.shop-container .popover.top > .arrow {\n  bottom: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-color: #999999;\n  border-top-color: rgba(0, 0, 0, 0.25);\n  border-bottom-width: 0;\n}\n.shop-container .popover.top > .arrow:after {\n  bottom: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-color: #fff;\n  border-bottom-width: 0;\n}\n.shop-container .popover.right > .arrow {\n  top: 50%;\n  left: -11px;\n  margin-top: -11px;\n  border-right-color: #999999;\n  border-right-color: rgba(0, 0, 0, 0.25);\n  border-left-width: 0;\n}\n.shop-container .popover.right > .arrow:after {\n  bottom: -10px;\n  left: 1px;\n  content: \" \";\n  border-right-color: #fff;\n  border-left-width: 0;\n}\n.shop-container .popover.bottom > .arrow {\n  top: -11px;\n  left: 50%;\n  margin-left: -11px;\n  border-top-width: 0;\n  border-bottom-color: #999999;\n  border-bottom-color: rgba(0, 0, 0, 0.25);\n}\n.shop-container .popover.bottom > .arrow:after {\n  top: 1px;\n  margin-left: -10px;\n  content: \" \";\n  border-top-width: 0;\n  border-bottom-color: #fff;\n}\n.shop-container .popover.left > .arrow {\n  top: 50%;\n  right: -11px;\n  margin-top: -11px;\n  border-right-width: 0;\n  border-left-color: #999999;\n  border-left-color: rgba(0, 0, 0, 0.25);\n}\n.shop-container .popover.left > .arrow:after {\n  right: 1px;\n  bottom: -10px;\n  content: \" \";\n  border-right-width: 0;\n  border-left-color: #fff;\n}\n.shop-container .popover-title {\n  padding: 8px 14px;\n  margin: 0;\n  font-size: 14px;\n  background-color: rgb(247.35, 247.35, 247.35);\n  border-bottom: 1px solid rgb(234.6, 234.6, 234.6);\n  border-radius: 5px 5px 0 0;\n}\n.shop-container .popover-content {\n  padding: 9px 14px;\n}\n.shop-container .carousel {\n  position: relative;\n}\n.shop-container .carousel-inner {\n  position: relative;\n  width: 100%;\n  overflow: hidden;\n}\n.shop-container .carousel-inner > .item {\n  position: relative;\n  display: none;\n  transition: 0.6s ease-in-out left;\n}\n.shop-container .carousel-inner > .item > img,\n.shop-container .carousel-inner > .item > a > img {\n  display: block;\n  max-width: 100%;\n  height: auto;\n  line-height: 1;\n}\n@media all and (transform-3d), (-webkit-transform-3d) {\n  .shop-container .carousel-inner > .item {\n    transition: transform 0.6s ease-in-out;\n    backface-visibility: hidden;\n    perspective: 1000px;\n  }\n  .shop-container .carousel-inner > .item.next, .shop-container .carousel-inner > .item.active.right {\n    transform: translate3d(100%, 0, 0);\n    left: 0;\n  }\n  .shop-container .carousel-inner > .item.prev, .shop-container .carousel-inner > .item.active.left {\n    transform: translate3d(-100%, 0, 0);\n    left: 0;\n  }\n  .shop-container .carousel-inner > .item.next.left, .shop-container .carousel-inner > .item.prev.right, .shop-container .carousel-inner > .item.active {\n    transform: translate3d(0, 0, 0);\n    left: 0;\n  }\n}\n.shop-container .carousel-inner > .active,\n.shop-container .carousel-inner > .next,\n.shop-container .carousel-inner > .prev {\n  display: block;\n}\n.shop-container .carousel-inner > .active {\n  left: 0;\n}\n.shop-container .carousel-inner > .next,\n.shop-container .carousel-inner > .prev {\n  position: absolute;\n  top: 0;\n  width: 100%;\n}\n.shop-container .carousel-inner > .next {\n  left: 100%;\n}\n.shop-container .carousel-inner > .prev {\n  left: -100%;\n}\n.shop-container .carousel-inner > .next.left,\n.shop-container .carousel-inner > .prev.right {\n  left: 0;\n}\n.shop-container .carousel-inner > .active.left {\n  left: -100%;\n}\n.shop-container .carousel-inner > .active.right {\n  left: 100%;\n}\n.shop-container .carousel-control {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  left: 0;\n  width: 15%;\n  font-size: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n  background-color: rgba(0, 0, 0, 0);\n  filter: alpha(opacity=50);\n  opacity: 0.5;\n}\n.shop-container .carousel-control.left {\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.5) 0%, rgba(0, 0, 0, 0.0001) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#80000000\", endColorstr=\"#00000000\", GradientType=1);\n  background-repeat: repeat-x;\n}\n.shop-container .carousel-control.right {\n  right: 0;\n  left: auto;\n  background-image: linear-gradient(to right, rgba(0, 0, 0, 0.0001) 0%, rgba(0, 0, 0, 0.5) 100%);\n  filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#00000000\", endColorstr=\"#80000000\", GradientType=1);\n  background-repeat: repeat-x;\n}\n.shop-container .carousel-control:hover, .shop-container .carousel-control:focus {\n  color: #fff;\n  text-decoration: none;\n  outline: 0;\n  filter: alpha(opacity=90);\n  opacity: 0.9;\n}\n.shop-container .carousel-control .icon-prev,\n.shop-container .carousel-control .icon-next,\n.shop-container .carousel-control .glyphicon-chevron-left,\n.shop-container .carousel-control .glyphicon-chevron-right {\n  position: absolute;\n  top: 50%;\n  z-index: 5;\n  display: inline-block;\n  margin-top: -10px;\n}\n.shop-container .carousel-control .icon-prev,\n.shop-container .carousel-control .glyphicon-chevron-left {\n  left: 50%;\n  margin-left: -10px;\n}\n.shop-container .carousel-control .icon-next,\n.shop-container .carousel-control .glyphicon-chevron-right {\n  right: 50%;\n  margin-right: -10px;\n}\n.shop-container .carousel-control .icon-prev,\n.shop-container .carousel-control .icon-next {\n  width: 20px;\n  height: 20px;\n  font-family: serif;\n  line-height: 1;\n}\n.shop-container .carousel-control .icon-prev:before {\n  content: \"‹\";\n}\n.shop-container .carousel-control .icon-next:before {\n  content: \"›\";\n}\n.shop-container .carousel-indicators {\n  position: absolute;\n  bottom: 10px;\n  left: 50%;\n  z-index: 15;\n  width: 60%;\n  padding-left: 0;\n  margin-left: -30%;\n  text-align: center;\n  list-style: none;\n}\n.shop-container .carousel-indicators li {\n  display: inline-block;\n  width: 10px;\n  height: 10px;\n  margin: 1px;\n  text-indent: -999px;\n  cursor: pointer;\n  background-color: #000 \\9 ;\n  background-color: rgba(0, 0, 0, 0);\n  border: 1px solid #fff;\n  border-radius: 10px;\n}\n.shop-container .carousel-indicators .active {\n  width: 12px;\n  height: 12px;\n  margin: 0;\n  background-color: #fff;\n}\n.shop-container .carousel-caption {\n  position: absolute;\n  right: 15%;\n  bottom: 20px;\n  left: 15%;\n  z-index: 10;\n  padding-top: 20px;\n  padding-bottom: 20px;\n  color: #fff;\n  text-align: center;\n  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.6);\n}\n.shop-container .carousel-caption .btn {\n  text-shadow: none;\n}\n@media screen and (min-width: 768px) {\n  .shop-container .carousel-control .glyphicon-chevron-left,\n  .shop-container .carousel-control .glyphicon-chevron-right,\n  .shop-container .carousel-control .icon-prev,\n  .shop-container .carousel-control .icon-next {\n    width: 30px;\n    height: 30px;\n    margin-top: -10px;\n    font-size: 30px;\n  }\n  .shop-container .carousel-control .glyphicon-chevron-left,\n  .shop-container .carousel-control .icon-prev {\n    margin-left: -10px;\n  }\n  .shop-container .carousel-control .glyphicon-chevron-right,\n  .shop-container .carousel-control .icon-next {\n    margin-right: -10px;\n  }\n  .shop-container .carousel-caption {\n    right: 20%;\n    left: 20%;\n    padding-bottom: 30px;\n  }\n  .shop-container .carousel-indicators {\n    bottom: 20px;\n  }\n}\n.shop-container .clearfix:before, .shop-container .clearfix:after {\n  display: table;\n  content: \" \";\n}\n.shop-container .clearfix:after {\n  clear: both;\n}\n.shop-container .center-block {\n  display: block;\n  margin-right: auto;\n  margin-left: auto;\n}\n.shop-container .pull-right {\n  float: right !important;\n}\n.shop-container .pull-left {\n  float: left !important;\n}\n.shop-container .hide {\n  display: none !important;\n}\n.shop-container .show {\n  display: block !important;\n}\n.shop-container .invisible {\n  visibility: hidden;\n}\n.shop-container .text-hide {\n  font: 0/0 a;\n  color: transparent;\n  text-shadow: none;\n  background-color: transparent;\n  border: 0;\n}\n.shop-container .hidden {\n  display: none !important;\n}\n.shop-container .affix {\n  position: fixed;\n}\n.shop-container .visible-xs {\n  display: none !important;\n}\n.shop-container .visible-sm {\n  display: none !important;\n}\n.shop-container .visible-md {\n  display: none !important;\n}\n.shop-container .visible-lg {\n  display: none !important;\n}\n.shop-container .visible-xs-block,\n.shop-container .visible-xs-inline,\n.shop-container .visible-xs-inline-block,\n.shop-container .visible-sm-block,\n.shop-container .visible-sm-inline,\n.shop-container .visible-sm-inline-block,\n.shop-container .visible-md-block,\n.shop-container .visible-md-inline,\n.shop-container .visible-md-inline-block,\n.shop-container .visible-lg-block,\n.shop-container .visible-lg-inline,\n.shop-container .visible-lg-inline-block {\n  display: none !important;\n}\n@media (max-width: 767px) {\n  .shop-container .visible-xs {\n    display: block !important;\n  }\n  .shop-container table.visible-xs {\n    display: table !important;\n  }\n  .shop-container tr.visible-xs {\n    display: table-row !important;\n  }\n  .shop-container th.visible-xs,\n  .shop-container td.visible-xs {\n    display: table-cell !important;\n  }\n}\n@media (max-width: 767px) {\n  .shop-container .visible-xs-block {\n    display: block !important;\n  }\n}\n@media (max-width: 767px) {\n  .shop-container .visible-xs-inline {\n    display: inline !important;\n  }\n}\n@media (max-width: 767px) {\n  .shop-container .visible-xs-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .shop-container .visible-sm {\n    display: block !important;\n  }\n  .shop-container table.visible-sm {\n    display: table !important;\n  }\n  .shop-container tr.visible-sm {\n    display: table-row !important;\n  }\n  .shop-container th.visible-sm,\n  .shop-container td.visible-sm {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .shop-container .visible-sm-block {\n    display: block !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .shop-container .visible-sm-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .shop-container .visible-sm-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .shop-container .visible-md {\n    display: block !important;\n  }\n  .shop-container table.visible-md {\n    display: table !important;\n  }\n  .shop-container tr.visible-md {\n    display: table-row !important;\n  }\n  .shop-container th.visible-md,\n  .shop-container td.visible-md {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .shop-container .visible-md-block {\n    display: block !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .shop-container .visible-md-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .shop-container .visible-md-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .visible-lg {\n    display: block !important;\n  }\n  .shop-container table.visible-lg {\n    display: table !important;\n  }\n  .shop-container tr.visible-lg {\n    display: table-row !important;\n  }\n  .shop-container th.visible-lg,\n  .shop-container td.visible-lg {\n    display: table-cell !important;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .visible-lg-block {\n    display: block !important;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .visible-lg-inline {\n    display: inline !important;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .visible-lg-inline-block {\n    display: inline-block !important;\n  }\n}\n@media (max-width: 767px) {\n  .shop-container .hidden-xs {\n    display: none !important;\n  }\n}\n@media (min-width: 768px) and (max-width: 991px) {\n  .shop-container .hidden-sm {\n    display: none !important;\n  }\n}\n@media (min-width: 992px) and (max-width: 1199px) {\n  .shop-container .hidden-md {\n    display: none !important;\n  }\n}\n@media (min-width: 1200px) {\n  .shop-container .hidden-lg {\n    display: none !important;\n  }\n}\n.shop-container .visible-print {\n  display: none !important;\n}\n@media print {\n  .shop-container .visible-print {\n    display: block !important;\n  }\n  .shop-container table.visible-print {\n    display: table !important;\n  }\n  .shop-container tr.visible-print {\n    display: table-row !important;\n  }\n  .shop-container th.visible-print,\n  .shop-container td.visible-print {\n    display: table-cell !important;\n  }\n}\n.shop-container .visible-print-block {\n  display: none !important;\n}\n@media print {\n  .shop-container .visible-print-block {\n    display: block !important;\n  }\n}\n.shop-container .visible-print-inline {\n  display: none !important;\n}\n@media print {\n  .shop-container .visible-print-inline {\n    display: inline !important;\n  }\n}\n.shop-container .visible-print-inline-block {\n  display: none !important;\n}\n@media print {\n  .shop-container .visible-print-inline-block {\n    display: inline-block !important;\n  }\n}\n@media print {\n  .shop-container .hidden-print {\n    display: none !important;\n  }\n}\n.shop-container a {\n  text-decoration: none;\n}\n.shop-container .dark,\n.shop-container .dark p,\n.shop-container .dark td {\n  color: #f1f1f1;\n}\n.shop-container h1,\n.shop-container h2,\n.shop-container h3,\n.shop-container h4,\n.shop-container h5,\n.shop-container h6 {\n  color: #555;\n  width: 100%;\n  margin-top: 0;\n  margin-bottom: 0.5em;\n  text-rendering: optimizeSpeed;\n}\n.shop-container h3.orange {\n  color: #ff531d;\n}\n.shop-container button,\n.shop-container html [type=button],\n.shop-container [type=reset],\n.shop-container [type=submit] {\n  -webkit-appearance: button;\n}\n.shop-container img {\n  transition: opacity 1s;\n  opacity: 1;\n  max-width: 100%;\n  height: auto;\n  display: inline-block;\n  vertical-align: middle;\n  border-style: none;\n}\n.shop-container .img {\n  position: relative;\n}\n.shop-container .img,\n.shop-container .img img {\n  width: 100%;\n}\n.shop-container .img .img-inner {\n  position: relative;\n  overflow: hidden;\n}\n.shop-container small {\n  font-size: 80%;\n  display: inline-block;\n}\n.shop-container pre,\n.shop-container blockquote,\n.shop-container form,\n.shop-container figure,\n.shop-container p,\n.shop-container dl,\n.shop-container ul,\n.shop-container ol {\n  margin-bottom: 1.3em;\n}\n.shop-container form p {\n  margin-bottom: 0.5em;\n}\n.shop-container label {\n  color: #222;\n}\n.shop-container label, .shop-container legend {\n  font-weight: bold;\n  display: block;\n  font-size: 0.9em;\n  margin-bottom: 0.4em;\n}\n.shop-container textarea {\n  padding-top: 0.7em;\n  min-height: 120px;\n}\n.shop-container .button, .shop-container button, .shop-container input, .shop-container textarea, .shop-container select, .shop-container fieldset {\n  margin-bottom: 1em;\n}\n.shop-container .z-1 {\n  z-index: 21;\n}\n.shop-container .left {\n  left: 0;\n}\n.shop-container .top {\n  top: 0;\n}\n.shop-container .right {\n  right: 0;\n}\n.shop-container .bottom {\n  bottom: 0;\n}\n.shop-container .absolute {\n  position: absolute !important;\n}\n.shop-container .relative {\n  position: relative !important;\n}\n.shop-container b,\n.shop-container strong {\n  font-weight: bolder;\n}\n.shop-container .text-left {\n  text-align: left;\n}\n.shop-container .text-center {\n  text-align: center;\n}\n.shop-container .text-center > div,\n.shop-container .text-center > div > div,\n.shop-container .text-center .is-divider,\n.shop-container .text-center .is-star-rating {\n  margin-left: auto;\n  margin-right: auto;\n}\n.shop-container .is-small,\n.shop-container .is-small.button {\n  font-size: 0.8em;\n}\n.shop-container .is-smaller {\n  font-size: 0.75em;\n}\n.shop-container .is-larger {\n  font-size: 1.3em;\n}\n.shop-container .no-text-overflow {\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.shop-container .op-7 {\n  opacity: 0.7;\n}\n.shop-container .mb-half {\n  margin-bottom: 15px;\n}\n.shop-container .pt-half {\n  padding-top: 15px;\n}\n.shop-container .pb-half {\n  padding-bottom: 15px;\n}\n.shop-container .is-uppercase,\n.shop-container .uppercase {\n  line-height: 1.2;\n  text-transform: uppercase;\n}\n.shop-container .uppercase,\n.shop-container h6,\n.shop-container th,\n.shop-container span.widget-title {\n  line-height: 1.05;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n}\n.shop-container .row-small > .col {\n  padding: 0 9.8px 19.6px;\n  margin-bottom: 0;\n}\n.shop-container .row .row-small:not(.row-collapse),\n.shop-container .container .row-small:not(.row-collapse) {\n  margin-left: -10px;\n  margin-right: -10px;\n  margin-bottom: 0;\n}\n.shop-container .row .gallery,\n.shop-container .row .row:not(.row-collapse),\n.shop-container .container .row:not(.row-collapse),\n.shop-container .lightbox-content .row:not(.row-collapse) {\n  padding-left: 0;\n  padding-right: 0;\n  margin-left: -15px;\n  margin-right: -15px;\n  width: auto;\n}\n.shop-container .row,\n.shop-container .gallery {\n  width: 100%;\n  -js-display: flex;\n  display: flex;\n  flex-flow: row wrap;\n}\n.shop-container .col,\n.shop-container .gallery-item,\n.shop-container .columns {\n  position: relative;\n  margin: 0;\n  padding: 0 15px 30px;\n  width: 100%;\n}\n.shop-container .col-inner {\n  position: relative;\n  margin-left: auto;\n  margin-right: auto;\n  width: 100%;\n  background-position: 50% 50%;\n  background-size: cover;\n  background-repeat: no-repeat;\n  flex: 1 0 auto;\n}\n.shop-container .col-fit {\n  flex: 1;\n}\n.shop-container .is-divider {\n  height: 3px;\n  display: block;\n  background-color: rgba(0, 0, 0, 0.1);\n  margin: 1em 0 1em;\n  width: 100%;\n  max-width: 30px;\n}\n.shop-container .last-reset *:last-child {\n  margin-bottom: 0;\n}\n.shop-container .flex-row {\n  -js-display: flex;\n  display: flex;\n  flex-flow: row nowrap;\n  align-items: center;\n  justify-content: space-between;\n  width: 100%;\n}\n.shop-container .flex-col {\n  max-height: 100%;\n}\n.shop-container .flex-grow {\n  flex: 1;\n  -ms-flex-negative: 1;\n  -ms-flex-preferred-size: auto !important;\n}\n.shop-container .align-top {\n  justify-content: flex-start !important;\n  -webkit-align-items: flex-start !important;\n  -ms-flex-align: start !important;\n  -ms-grid-row-align: flex-start !important;\n  align-items: flex-start !important;\n  align-self: flex-start !important;\n  vertical-align: top !important;\n}\n.shop-container .container:after,\n.shop-container .row:after,\n.shop-container .clearfix:after,\n.shop-container .clear:after {\n  content: \"\";\n  display: table;\n  clear: both;\n}\n.shop-container .has-border {\n  border: 2px solid #446084;\n  padding: 15px 30px 30px;\n}\n.shop-container .badge-container {\n  margin: 30px 0 0 0;\n}\n.shop-container .badge {\n  display: table;\n  z-index: 20;\n  pointer-events: none;\n  height: 2.8em;\n  width: 2.8em;\n  backface-visibility: hidden;\n}\n.shop-container .badge-inner {\n  line-height: 1.2;\n  font-size: 12px;\n  display: table-cell;\n  vertical-align: middle;\n  text-align: center;\n  width: 100%;\n  height: 100%;\n  background-color: #446084;\n  line-height: 0.85;\n  color: #fff;\n  font-weight: bolder;\n  padding: 2px;\n  transition: background-color 0.3s, color 0.3s, border 0.3s;\n}\n.shop-container .badge-inner.on-sale {\n  background-color: #ff531d;\n}\n.shop-container .breadcrumbs {\n  text-transform: uppercase;\n  color: #222;\n  font-weight: bold;\n  letter-spacing: 0px;\n  padding: 0;\n}\n.shop-container .breadcrumbs a {\n  color: rgba(102, 102, 102, 0.7);\n  font-weight: normal;\n}\n.shop-container .breadcrumbs a:first-of-type {\n  margin-left: 0;\n}\n.shop-container .breadcrumbs .divider {\n  position: relative;\n  top: 1.5px;\n  opacity: 0.35;\n  margin: 0 0.3em;\n  font-weight: 300;\n}\n.shop-container .tabbed-content {\n  display: flex;\n  flex-flow: row wrap;\n}\n.shop-container .tabbed-content .nav-tabs > li {\n  margin: 0 0.1em;\n  margin-bottom: -1px;\n}\n.shop-container .nav {\n  width: 100%;\n  position: relative;\n  display: inline-block;\n  display: flex;\n  flex-flow: row wrap;\n  align-items: center;\n}\n.shop-container .nav,\n.shop-container .nav ul:not(.nav-dropdown) {\n  margin: 0;\n  padding: 0;\n}\n.shop-container .nav-left {\n  justify-content: flex-start;\n}\n.shop-container .nav li:first-child {\n  margin-left: 0 !important;\n}\n.shop-container .nav li:last-child {\n  margin-right: 0 !important;\n}\n.shop-container .nav-tabs > li.active > a {\n  border-top-color: #ff531d;\n}\n.shop-container .nav-tabs > li.active > a {\n  border-top-color: #446084;\n}\n.shop-container .nav-tabs > li.active > a {\n  background-color: #fff;\n}\n.shop-container .nav > li > a:hover,\n.shop-container .nav > li.active > a,\n.shop-container .nav > li.current > a,\n.shop-container .nav > li > a.active,\n.shop-container .nav > li > a.current,\n.shop-container .nav-dropdown li.active > a,\n.shop-container .nav-column li.active > a,\n.shop-container .nav-dropdown > li > a:hover,\n.shop-container .nav-column li > a:hover {\n  color: rgba(17, 17, 17, 0.85);\n}\n.shop-container .nav-box > li,\n.shop-container .nav-tabs > li,\n.shop-container .nav-outline > li,\n.shop-container .nav-pills > li {\n  margin: 0;\n}\n.shop-container .nav > li {\n  display: inline-block;\n  list-style: none;\n  margin: 0;\n  padding: 0;\n  position: relative;\n  margin: 0 7px;\n  transition: background-color 0.3s;\n}\n.shop-container .nav > li > a,\n.shop-container .links > li > a {\n  text-transform: none;\n}\n.shop-container .nav > li > a {\n  font-size: 0.8em;\n}\n.shop-container .nav-tabs > li > a {\n  border-top: 2px solid #ddd;\n  border-left: 1px solid #ddd;\n  border-right: 1px solid #ddd;\n  background-color: rgba(0, 0, 0, 0.04);\n  padding-left: 15px;\n  padding-right: 15px;\n}\n.shop-container .nav-uppercase > li > a {\n  letter-spacing: 0.02em;\n  text-transform: uppercase;\n  font-weight: bolder;\n}\n.shop-container .nav > li > a,\n.shop-container .nav-dropdown > li > a,\n.shop-container .nav-column > li > a {\n  color: rgba(102, 102, 102, 0.85);\n  transition: all 0.2s;\n}\n.shop-container .nav > li > a {\n  padding: 10px 0;\n  display: inline-block;\n  display: inline-flex;\n  flex-wrap: wrap;\n  align-items: center;\n}\n.shop-container .nav-tabs + .tab-panels {\n  border: 1px solid #ddd;\n  background-color: #fff;\n  padding: 30px;\n  width: -webkit-fill-available;\n}\n.shop-container .tab-panels {\n  padding-top: 1em;\n}\n.shop-container .tab-panels .panel.active {\n  display: block !important;\n}\n.shop-container .tab-panels .panel:not(.active) {\n  zoom: 1;\n  float: \"left\";\n  visibility: hidden;\n  height: 0;\n  padding: 0;\n  display: block;\n  overflow: hidden;\n  opacity: 0;\n}\n.shop-container .tab-panels .entry-content {\n  padding: 0;\n}\n.shop-container .entry-content {\n  padding-top: 1.5em;\n  padding-bottom: 1.5em;\n}\n.shop-container .entry-content ol li, .shop-container .entry-summary ol li, .shop-container .col-inner ol li, .shop-container .entry-content ul li, .shop-container .entry-summary ul li, .shop-container .col-inner ul li {\n  margin-left: 1.3em;\n}\n.shop-container .comment {\n  list-style: none;\n  padding: 1em 0 0 0;\n}\n.shop-container .comment .description {\n  font-style: italic;\n}\n.shop-container .comment .avatar {\n  border-radius: 100%;\n}\n.shop-container .comment .comment-text {\n  padding: 0 1.5em;\n}\n.shop-container .comment .meta {\n  margin-bottom: 0;\n}\n.shop-container .bypostauthor {\n  display: block;\n}\n.shop-container .slider-wrapper {\n  position: relative;\n}\n.shop-container .slider > .img,\n.shop-container .flickity-slider > .img,\n.shop-container .slider-wrapper:last-child {\n  margin-bottom: 0;\n}\n.shop-container .flickity-enabled {\n  position: relative;\n}\n.shop-container .flickity-enabled.is-draggable {\n  -webkit-tap-highlight-color: transparent;\n  tap-highlight-color: transparent;\n  -webkit-user-select: none;\n  -moz-user-select: none;\n  user-select: none;\n}\n.shop-container .flickity-viewport {\n  overflow: hidden;\n  position: relative;\n  height: 100%;\n  width: 100%;\n  padding: 0;\n}\n.shop-container .flickity-slider {\n  width: 100%;\n  height: 100%;\n  display: flex;\n}\n.shop-container .row-collapse > .flickity-viewport > .flickity-slider > .col,\n.shop-container .row-collapse > .col {\n  padding: 0 !important;\n}\n.shop-container .row-xsmall > .flickity-viewport > .flickity-slider > .col,\n.shop-container .row-xsmall > .col {\n  padding: 0 2px 3px;\n  margin-bottom: 0;\n}\n.shop-container .slider > div:not(.col),\n.shop-container .slider > a,\n.shop-container .slider > p,\n.shop-container .slider > a > img,\n.shop-container .slider > img {\n  width: 100%;\n}\n.shop-container .flickity-enabled.is-draggable .flickity-viewport {\n  cursor: move;\n  cursor: grab;\n}\n.shop-container .flickity-slider > div:not(.col),\n.shop-container .flickity-slider > a,\n.shop-container .flickity-slider > p,\n.shop-container .flickity-slider > a > img,\n.shop-container .flickity-slider > img,\n.shop-container .flickity-slider > figure {\n  width: 100% !important;\n  padding: 0;\n  margin: 0;\n  transition: transform 0.6s, opacity 0.6s, box-shadow 0.6s;\n}\n.shop-container .flickity-prev-next-button {\n  position: absolute;\n  top: 40%;\n  bottom: 40%;\n  background-color: transparent;\n  margin: 0;\n  padding: 0;\n  width: 36px;\n  color: #111;\n  border: none;\n  cursor: pointer;\n  opacity: 0;\n  transition: transform 0.3s, opacity 0.3s, background 0.3s, box-shadow 0.3s;\n}\n.shop-container .flickity-prev-next-button svg {\n  position: absolute;\n  padding: 5px;\n  left: 50%;\n  top: 50%;\n  width: 100%;\n  max-width: 100%;\n  padding: 20%;\n  max-height: 100%;\n  height: auto;\n  transition: all 0.3s;\n  transform: translate(-50%, -50%);\n}\n.shop-container .slider-nav-reveal .flickity-prev-next-button:hover,\n.shop-container .slider-nav-reveal .flickity-prev-next-button {\n  width: 30px;\n  top: -2px;\n  bottom: 0;\n  height: 100%;\n  background-color: #fff;\n  box-shadow: 0 -150px 15px 0 rgba(0, 0, 0, 0.3);\n  margin: 0 !important;\n}\n.shop-container .slider-nav-reveal .flickity-prev-next-button.previous {\n  transform: translateX(-10%);\n  transform: translateX(-10%);\n  right: auto !important;\n  left: -1px !important;\n}\n.shop-container .slider-nav-reveal .flickity-prev-next-button.next {\n  transform: translateX(10%);\n  left: auto !important;\n  right: -1px !important;\n}\n.shop-container .flickity-prev-next-button.previous {\n  transform: translateX(20%);\n  left: 2%;\n}\n.shop-container .flickity-prev-next-button.next {\n  transform: translateX(-20%);\n  right: 2%;\n}\n.shop-container .slider .flickity-prev-next-button:hover {\n  box-shadow: none;\n  opacity: 1;\n}\n.shop-container .slider-show-nav .flickity-prev-next-button,\n.shop-container .slider:hover .flickity-prev-next-button {\n  opacity: 0.7;\n  transform: translateX(0) !important;\n}\n.shop-container .slider-nav-circle .flickity-prev-next-button:hover svg {\n  background-color: #ff531d;\n  border-radius: 100%;\n  fill: #fff !important;\n}\n.shop-container .slider-nav-light .flickity-prev-next-button {\n  color: #fff;\n}\n.shop-container .small-columns-4 > .col, .shop-container .small-columns-4 .flickity-slider > .col {\n  max-width: 25%;\n  flex-basis: 25%;\n}\n.shop-container .row-small > .flickity-viewport > .flickity-slider > .col, .shop-container .row-small > .col {\n  padding: 0 9.8px 19.6px;\n  margin-bottom: 0;\n}\n.shop-container .section-bg,\n.shop-container .section-content {\n  width: 100%;\n}\n.shop-container .section-content {\n  z-index: 1;\n}\n.shop-container p.orange a {\n  color: #ff531d;\n}\n.shop-container .row {\n  margin: 0 auto;\n}\n.shop-container .row.row-small {\n  max-width: 1065px;\n}\n.shop-container .row .row-small:not(.row-collapse),\n.shop-container .container .row-small:not(.row-collapse) {\n  margin-left: -10px;\n  margin-right: -10px;\n  margin-bottom: 0;\n}\n.shop-container .row,\n.shop-container .gallery {\n  width: 100%;\n  -js-display: flex;\n  display: flex;\n  flex-flow: row wrap;\n}\n.shop-container .row-collapse {\n  padding: 0;\n}\n.shop-container .row.row-collapse {\n  max-width: 1200px;\n}\n.shop-container .col,\n.shop-container .gallery-item,\n.shop-container .columns {\n  position: relative;\n  margin: 0;\n  padding: 0 15px 30px;\n  width: 100%;\n}\n.shop-container .small-12 {\n  max-width: 100%;\n  flex-basis: 100%;\n}\n.shop-container .row-collapse > .flickity-viewport > .flickity-slider > .col,\n.shop-container .row-collapse > .col {\n  padding: 0 !important;\n}\n.shop-container .col-inner {\n  position: relative;\n  margin-left: auto;\n  margin-right: auto;\n  width: 100%;\n  background-position: 50% 50%;\n  background-size: cover;\n  background-repeat: no-repeat;\n  flex: 1 0 auto;\n}\n.shop-container .row-box-shadow-1 .col-inner,\n.shop-container .row-box-shadow-1-hover .col-inner:hover,\n.shop-container .box-shadow-1,\n.shop-container .box-shadow-1-hover:hover {\n  box-shadow: 0 1px 3px -2px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);\n}\n.shop-container .ux-timer {\n  width: 100%;\n  position: relative;\n  border-spacing: 5px;\n  margin: 0.3em 0 0.2em;\n  font-size: 300%;\n  display: table;\n  table-layout: fixed;\n}\n.shop-container .ux-timer span {\n  display: table-cell;\n  font-weight: bolder;\n  text-align: center;\n  color: #fff;\n  line-height: 80%;\n  padding: 0.4em 0.1em 0.1em;\n  margin: 0 0.05em 0.2em;\n  border-radius: 5px;\n  background-color: rgba(0, 0, 0, 0.85);\n}\n.shop-container .ux-timer span strong {\n  font-family: \"Helvetica\" Sans-serif;\n  font-size: 30%;\n  opacity: 0.7;\n  text-transform: uppercase;\n  display: block;\n}\n.shop-container .has-shadow > .col > .col-inner {\n  background-color: #fff;\n  height: 100%;\n}\n.shop-container .box {\n  width: 100%;\n  position: relative;\n  margin: 0 auto;\n}\n.shop-container .box a {\n  display: inline-block;\n}\n.shop-container .box-text p {\n  margin-top: 0.1em;\n  margin-bottom: 0.1em;\n}\n.shop-container .box-text h1,\n.shop-container .box-text h2,\n.shop-container .box-text h3,\n.shop-container .box-text h4,\n.shop-container .box-text h5,\n.shop-container .box-text h6,\n.shop-container .box-text a:not(.button) {\n  line-height: 1.3;\n  margin-top: 0.1em;\n  margin-bottom: 0.1em;\n}\n.shop-container .box-image > a,\n.shop-container .box-image > div > a {\n  display: block;\n}\n.shop-container .box,\n.shop-container .box-image,\n.shop-container .box-text {\n  transition: opacity 0.3s, transform 0.3s, background-color 0.3s;\n}\n.shop-container .box-text.text-center {\n  padding-left: 10px;\n  padding-right: 10px;\n}\n.shop-container .text-center {\n  text-align: center;\n}\n.shop-container .box-text {\n  padding-top: 0.7em;\n  padding-bottom: 1.4em;\n  position: relative;\n  width: 100%;\n  font-size: 0.9em;\n}\n.shop-container .has-shadow.box:not(.box-overlay):not(.box-shade),\n.shop-container .has-shadow .box:not(.box-overlay):not(.box-shade) {\n  background-color: #fff;\n}\n.shop-container .box-image {\n  position: relative;\n  height: auto;\n  margin: 0 auto;\n  overflow: hidden;\n}\n.shop-container .icon-box .icon-box-img {\n  margin-bottom: 1em;\n  max-width: 100%;\n  position: relative;\n}\n.shop-container .icon-box-left,\n.shop-container .icon-box-right {\n  -js-display: flex;\n  display: flex;\n  flex-flow: row wrap;\n  width: 100%;\n}\n.shop-container .icon-box-left .icon-box-img,\n.shop-container .icon-box-right .icon-box-img {\n  flex: 0 0 auto;\n  margin-bottom: 0;\n  max-width: 200px;\n}\n.shop-container .icon-box-img svg,\n.shop-container .icon-box-img img {\n  padding-top: 0.2em;\n  width: 100%;\n}\n.shop-container .icon-box-left .icon-box-img + .icon-box-text {\n  padding-left: 1em;\n}\n.shop-container .icon-box-left .icon-box-text,\n.shop-container .icon-box-right .icon-box-text {\n  flex: 1 1 0px;\n}\n.shop-container .has-hover .bg,\n.shop-container .has-hover [class*=image-] img {\n  transition: filter 0.6s, opacity 0.6s, transform 0.6s, box-shadow 0.3s;\n}\n.shop-container .video-fit video,\n.shop-container .video-fit iframe,\n.shop-container img.back-image,\n.shop-container .image-cover img,\n.shop-container .has-format img {\n  right: 0;\n  width: 100%;\n  height: 100%;\n  bottom: 0;\n  left: 0;\n  top: 0;\n  position: absolute;\n  -o-object-position: 50% 50%;\n     object-position: 50% 50%;\n  -o-object-fit: cover;\n     object-fit: cover;\n  font-family: \"object-fit: cover;\";\n}\n.shop-container .image-tools {\n  padding: 10px;\n  position: absolute;\n}\n.shop-container .image-tools.top.right {\n  padding-bottom: 0;\n  padding-left: 0;\n}\n.shop-container .image-tools.bottom.left {\n  padding-top: 0;\n  padding-right: 0;\n}\n.shop-container .show-on-hover,\n.shop-container .hover-slide,\n.shop-container .hover-slide-in,\n.shop-container .hover-zoom,\n.shop-container .hover-zoom-in {\n  opacity: 0;\n  transition: opacity 0.5s, transform 0.3s, max-height 0.6s, filter 0.6s;\n  filter: blur(0);\n  pointer-events: none;\n}\n.shop-container .grid-tools {\n  display: flex;\n  width: 100%;\n  padding: 0 !important;\n  margin-bottom: -1px;\n  backface-visibility: hidden;\n  white-space: nowrap;\n}\n.shop-container .hover-slide-in {\n  transform: translateY(100%) translateZ(0);\n}\n.shop-container img {\n  transition: opacity 1s;\n  opacity: 1;\n  max-width: 100%;\n  height: auto;\n  display: inline-block;\n  vertical-align: middle;\n}\n.shop-container .box-image img {\n  max-width: 100%;\n  width: 100%;\n  transform: translateZ(0);\n  margin: 0 auto;\n}\n.shop-container .overlay {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  height: 100%;\n  left: -1px;\n  right: -1px;\n  background-color: rgba(0, 0, 0, 0.15);\n  transition: transform 0.3s, opacity 0.6s;\n  pointer-events: none;\n}\n.shop-container .box-text.text-center {\n  padding-left: 10px;\n  padding-right: 10px;\n}\n.shop-container .has-shadow .box-text {\n  padding-left: 1.2em;\n  padding-right: 1.2em;\n}\n.shop-container .text-center > div,\n.shop-container .text-center > div > div,\n.shop-container .text-center .is-divider,\n.shop-container .text-center .is-star-rating {\n  margin-left: auto;\n  margin-right: auto;\n}\n.shop-container .box-text {\n  padding-top: 0.7em;\n  padding-bottom: 1.4em;\n  position: relative;\n  width: 100%;\n  font-size: 0.9em;\n}\n.shop-container .box,\n.shop-container .box-image,\n.shop-container .box-text {\n  transition: opacity 0.3s, transform 0.3s, background-color 0.3s;\n}\n.shop-container .video-fit video,\n.shop-container .video-fit iframe,\n.shop-container img.back-image,\n.shop-container .image-cover img,\n.shop-container .has-format img {\n  right: 0;\n  width: 100%;\n  height: 100%;\n  bottom: 0;\n  left: 0;\n  top: 0;\n  position: absolute;\n  -o-object-position: 50% 50%;\n     object-position: 50% 50%;\n  -o-object-fit: cover;\n     object-fit: cover;\n  font-family: \"object-fit: cover;\";\n}\n.shop-container .text-center > div,\n.shop-container .text-center > div > div,\n.shop-container .text-center .is-divider,\n.shop-container .text-center .is-star-rating {\n  margin-left: auto;\n  margin-right: auto;\n}\n.shop-container .uppercase,\n.shop-container h6,\n.shop-container th,\n.shop-container span.widget-title {\n  line-height: 1.05;\n  letter-spacing: 0.05em;\n  text-transform: uppercase;\n}\n.shop-container .is-uppercase,\n.shop-container .uppercase {\n  line-height: 1.2;\n  text-transform: uppercase;\n}\n.shop-container .box-text h1,\n.shop-container .box-text h2,\n.shop-container .box-text h3,\n.shop-container .box-text h4,\n.shop-container .box-text h5,\n.shop-container .box-text h6,\n.shop-container .box-text a:not(.button) {\n  line-height: 1.3;\n  margin-top: 0.1em;\n  margin-bottom: 0.1em;\n}\n.shop-container .star-rating {\n  text-align: left;\n  font-size: 16px;\n  display: block;\n  overflow: hidden;\n  position: relative;\n  height: 1em;\n  line-height: 1em;\n  letter-spacing: 0;\n  margin: 0.5em 0;\n  width: 5.4em;\n  font-family: \"fl-icons\" !important;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.shop-container .star-rating:before {\n  content: \"\\e006\\e006\\e006\\e006\\e006\";\n  color: #ff531d;\n  float: left;\n  top: 0;\n  left: 0;\n  position: absolute;\n}\n.shop-container .star-rating span {\n  overflow: hidden;\n  float: left;\n  width: 10px;\n  height: 10px;\n  top: 0;\n  left: 0;\n  font-family: \"fl-icons\" !important;\n  position: absolute;\n  padding-top: 1.5em;\n  font-weight: normal !important;\n}\n.shop-container .price {\n  line-height: 160%;\n}\n.shop-container .price-wrapper .price {\n  display: block;\n  font-size: 14px;\n}\n.shop-container span.amount {\n  white-space: nowrap;\n  color: #111;\n  font-weight: bold;\n}\n.shop-container del span.amount {\n  opacity: 0.6;\n  font-weight: normal;\n  margin-right: 0.3em;\n}\n.shop-container .text-center .quantity,\n.shop-container .quantity {\n  opacity: 1;\n  display: inline-block;\n  display: inline-flex;\n  margin-right: 1em;\n  white-space: nowrap;\n  vertical-align: top;\n}\n.shop-container .stars a {\n  font-size: 16px;\n  margin-left: -10px;\n  display: inline-block;\n  color: transparent !important;\n  overflow: hidden;\n  font-family: \"fl-icons\";\n}\n.shop-container .stars a:after {\n  color: #ddd;\n  content: \"\\e005\";\n}\n.shop-container .stars a + a {\n  margin-left: 0.3em;\n  border-left: 1px solid #ececec;\n}\n.shop-container .stars a.star-2:after {\n  content: \"\\e005\\e005\";\n}\n.shop-container .stars a.star-3:after {\n  content: \"\\e005\\e005\\e005\";\n}\n.shop-container .stars a.star-4:after {\n  content: \"\\e005\\e005\\e005\\e005\";\n}\n.shop-container .stars a.star-5:after {\n  content: \"\\e005\\e005\\e005\\e005\\e005\";\n}\n.shop-container .product-main {\n  padding: 40px 0;\n}\n.shop-container .product-gallery,\n.shop-container .product-thumbnails .col {\n  padding-bottom: 0 !important;\n}\n.shop-container .col,\n.shop-container .gallery-item,\n.shop-container .columns {\n  position: relative;\n  margin: 0;\n  padding: 0 15px 30px;\n  width: 100%;\n}\n.shop-container .product-thumbnails {\n  padding-top: 0;\n}\n.shop-container .product-thumbnails img,\n.shop-container .product-gallery-slider img {\n  width: 100%;\n}\n.shop-container .product-thumbnails a {\n  overflow: hidden;\n  display: block;\n  border: 1px solid transparent;\n  background-color: #fff;\n  transform: translateY(0);\n}\n.shop-container .product-thumbnails a:hover,\n.shop-container .product-thumbnails .is-nav-selected a {\n  border-color: rgba(0, 0, 0, 0.2);\n}\n.shop-container .product-thumbnails img {\n  margin-bottom: -5px;\n  opacity: 0.5;\n  backface-visibility: hidden;\n  transition: transform 0.6s, opacity 0.6s;\n}\n.shop-container .product-thumbnails a:hover img,\n.shop-container .product-thumbnails .is-nav-selected a img {\n  border-color: rgba(0, 0, 0, 0.3);\n  transform: translateY(-5px);\n  opacity: 1;\n}\n.shop-container .product-info {\n  padding-top: 10px;\n}\n.shop-container .product-info .breadcrumbs {\n  font-size: 0.85em;\n  margin: 0 0 0.5em;\n}\n.shop-container .product-info .price {\n  font-size: 1.5em;\n  margin: 0.5em 0;\n  font-weight: bolder;\n}\n.shop-container .product-summary .quantity {\n  margin-bottom: 1em;\n}\n.shop-container .product-summary .woocommerce-Price-currencySymbol {\n  font-size: 0.75em;\n  vertical-align: top;\n  display: inline-block;\n  margin-top: 0.05em;\n}\n.shop-container .button, .shop-container button, .shop-container input[type=submit], .shop-container input[type=reset], .shop-container input[type=button] {\n  position: relative;\n  display: inline-block;\n  background-color: transparent;\n  text-transform: uppercase;\n  font-size: 0.97em;\n  letter-spacing: 0.03em;\n  touch-action: none;\n  cursor: pointer;\n  font-weight: bolder;\n  text-align: center;\n  color: currentColor;\n  text-decoration: none;\n  border: 1px solid transparent;\n  vertical-align: middle;\n  border-radius: 0;\n  margin-top: 0;\n  margin-right: 1em;\n  text-shadow: none;\n  line-height: 2.4em;\n  min-height: 2.5em;\n  padding: 0 1.2em;\n  max-width: 100%;\n  transition: transform 0.3s, border 0.3s, background 0.3s, box-shadow 0.3s, opacity 0.3s, color 0.3s;\n  text-rendering: optimizeLegibility;\n  box-sizing: border-box;\n}\n.shop-container .quantity input {\n  padding-left: 0;\n  padding-right: 0;\n  display: inline-block;\n  vertical-align: top;\n  margin: 0;\n}\n.shop-container .quantity input[type=number] {\n  max-width: 2.5em;\n  text-align: center;\n  border-radius: 0 !important;\n  -webkit-appearance: textfield;\n  -moz-appearance: textfield;\n  appearance: textfield;\n}\n.shop-container .quantity .minus, .shop-container .quantity .plus {\n  padding-left: 0.5em;\n  padding-right: 0.5em;\n}\n.shop-container .button, .shop-container input[type=submit], .shop-container input[type=submit].button, .shop-container input[type=reset].button, .shop-container input[type=button].button {\n  color: #fff;\n  background-color: #446084;\n  background-color: var(--primary-color);\n  border-color: rgba(0, 0, 0, 0.05);\n}\n.shop-container .mfp-content .product-lightbox-inner .quantity .minus, .shop-container #wrapper .quantity .minus {\n  border-right: 0 !important;\n  border-top-right-radius: 0 !important;\n  border-bottom-right-radius: 0 !important;\n}\n.shop-container .is-form, .shop-container button.is-form, .shop-container input[type=submit].is-form, .shop-container input[type=reset].is-form, .shop-container input[type=button].is-form {\n  overflow: hidden;\n  position: relative;\n  background-color: #f9f9f9;\n  text-shadow: 1px 1px 1px #fff;\n  color: #888;\n  border: 1px solid #ddd;\n  text-transform: none;\n  font-weight: normal;\n}\n.shop-container .single_add_to_cart_button {\n  background-color: #FF531D;\n}\n.shop-container .product_meta {\n  font-size: 0.8em;\n  margin-bottom: 1em;\n}\n.shop-container .product_meta > span {\n  display: block;\n  border-top: 1px dotted #ddd;\n  padding: 5px 0;\n}\n.shop-container .product-footer .woocommerce-tabs {\n  padding: 30px 0;\n  border-top: 1px solid #ececec;\n  overflow: hidden;\n}\n.shop-container .product-section {\n  border-top: 1px solid #ececec;\n}\n.shop-container .price {\n  line-height: 160%;\n}\n.shop-container .price-wrapper .price {\n  display: block;\n  text-align: left;\n}\n.shop-container .star-rating {\n  text-align: left;\n  font-size: 16px;\n  display: block;\n  overflow: hidden;\n  position: relative;\n  height: 1em;\n  line-height: 1em;\n  letter-spacing: 0;\n  margin: 0.5em 0;\n  width: 5.4em;\n  font-family: \"fl-icons\" !important;\n  -webkit-font-smoothing: antialiased;\n  -moz-osx-font-smoothing: grayscale;\n}\n.shop-container .secondary.is-underline, .shop-container .secondary.is-link, .shop-container .secondary.is-outline, .shop-container .stars a.active, .shop-container .star-rating:before, .shop-container .woocommerce-page .star-rating:before, .shop-container .star-rating span:before, .shop-container .color-secondary {\n  color: #FF531D;\n}\n.shop-container .star-rating:before, .shop-container .woocommerce-page .star-rating:before {\n  content: \"\\e006\\e006\\e006\\e006\\e006\";\n  color: #d26e4b;\n  float: left;\n  top: 0;\n  left: 0;\n  position: absolute;\n}\n.shop-container .star-rating span {\n  overflow: hidden;\n  float: left;\n  width: 10px;\n  height: 10px;\n  top: 0;\n  left: 0;\n  font-family: \"fl-icons\" !important;\n  position: absolute;\n  padding-top: 1.5em;\n  font-weight: normal !important;\n}\n.shop-container .star-rating span:before {\n  content: \"\\e005\\e005\\e005\\e005\\e005\";\n  color: #d26e4b;\n  top: 0;\n  position: absolute;\n  left: 0;\n}\n@media screen and (min-width: 550px) {\n  .shop-container .medium-2 {\n    max-width: 16.66667%;\n    flex-basis: 16.66667%;\n  }\n  .shop-container .medium-4 {\n    max-width: 33.33333%;\n    flex-basis: 33.33333%;\n  }\n  .shop-container .medium-6 {\n    max-width: 50%;\n    flex-basis: 50%;\n  }\n  .shop-container .medium-8 {\n    max-width: 66.66667%;\n    flex-basis: 66.66667%;\n  }\n  .shop-container .medium-columns-3 > .col,\n  .shop-container .medium-columns-3 .flickity-slider > .col {\n    max-width: 33.33333%;\n    flex-basis: 33.33333%;\n  }\n}\n.shop-container .col + .col .col-inner {\n  margin-right: auto;\n  margin-left: 0;\n}\n.shop-container .col:first-child .col-inner {\n  margin-left: auto;\n  margin-right: 0;\n}\n@media screen and (min-width: 850px) {\n  .shop-container .large-2 {\n    max-width: 16.66667%;\n    flex-basis: 16.66667%;\n  }\n  .shop-container .large-4 {\n    max-width: 33.33333%;\n    flex-basis: 33.33333%;\n  }\n  .shop-container .large-6 {\n    max-width: 50%;\n    flex-basis: 50%;\n  }\n  .shop-container .large-8 {\n    max-width: 66.66667%;\n    flex-basis: 66.66667%;\n  }\n  .shop-container .large-12 {\n    max-width: 100%;\n    flex-basis: 100%;\n  }\n  .shop-container .gallery-columns-4 .gallery-item,\n  .shop-container .large-columns-4 > .col,\n  .shop-container .large-columns-4 .flickity-slider > .col {\n    max-width: 25%;\n    flex-basis: 25%;\n  }\n  .shop-container .col + .col .col-inner {\n    margin-right: auto;\n    margin-left: 0;\n  }\n  .shop-container .col:first-child .col-inner {\n    margin-left: auto;\n    margin-right: 0;\n  }\n  .shop-container .gallery-columns-8 .gallery-item,\n  .shop-container .large-columns-8 > .col,\n  .shop-container .large-columns-8 .flickity-slider > .col {\n    max-width: 12.5%;\n    flex-basis: 12.5%;\n  }\n  .shop-container .gallery-columns-6 .gallery-item,\n  .shop-container .large-columns-6 > .col,\n  .shop-container .large-columns-6 .flickity-slider > .col {\n    max-width: 16.66667%;\n    flex-basis: 16.66667%;\n  }\n  .shop-container .comment-form {\n    display: flex;\n    flex-flow: row wrap;\n    margin-left: -15px;\n    margin-right: -15px;\n  }\n  .shop-container .comment-form > p {\n    padding: 0 15px;\n    width: 100%;\n  }\n}", ""]);
11091// Exports
11092/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
11093
11094
11095/***/ }),
11096
vendor: 1,872 bytes, lines 11097-11172
11097/***/ "./node_modules/css-loader/dist/runtime/api.js":
11098/*!*****************************************************!*\
11099  !*** ./node_modules/css-loader/dist/runtime/api.js ***!
11100  \*****************************************************/
11101/***/ ((module) => {
11102
11103"use strict";
11104
11105
11106/*
11107  MIT License http://www.opensource.org/licenses/mit-license.php
11108  Author Tobias Koppers @sokra
11109*/
11110// css base code, injected by the css-loader
11111// eslint-disable-next-line func-names
11112module.exports = function (cssWithMappingToString) {
11113  var list = []; // return the list of modules as css string
11114
11115  list.toString = function toString() {
11116    return this.map(function (item) {
11117      var content = cssWithMappingToString(item);
11118
11119      if (item[2]) {
11120        return "@media ".concat(item[2], " {").concat(content, "}");
11121      }
11122
11123      return content;
11124    }).join("");
11125  }; // import a list of modules into the list
11126  // eslint-disable-next-line func-names
11127
11128
11129  list.i = function (modules, mediaQuery, dedupe) {
11130    if (typeof modules === "string") {
11131      // eslint-disable-next-line no-param-reassign
11132      modules = [[null, modules, ""]];
11133    }
11134
11135    var alreadyImportedModules = {};
11136
11137    if (dedupe) {
11138      for (var i = 0; i < this.length; i++) {
11139        // eslint-disable-next-line prefer-destructuring
11140        var id = this[i][0];
11141
11142        if (id != null) {
11143          alreadyImportedModules[id] = true;
11144        }
11145      }
11146    }
11147
11148    for (var _i = 0; _i < modules.length; _i++) {
11149      var item = [].concat(modules[_i]);
11150
11151      if (dedupe && alreadyImportedModules[item[0]]) {
11152        // eslint-disable-next-line no-continue
11153        continue;
11154      }
11155
11156      if (mediaQuery) {
11157        if (!item[2]) {
11158          item[2] = mediaQuery;
11159        } else {
11160          item[2] = "".concat(mediaQuery, " and ").concat(item[2]);
11161        }
11162      }
11163
11164      list.push(item);
11165    }
11166  };
11167
11168  return list;
11169};
11170
11171/***/ }),
11172
vendor: 2,269 bytes, lines 11173-11279
11173/***/ "./node_modules/jsonp/index.js":
11174/*!*************************************!*\
11175  !*** ./node_modules/jsonp/index.js ***!
11176  \*************************************/
11177/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
11178
11179/**
11180 * Module dependencies
11181 */
11182
11183var debug = __webpack_require__(/*! debug */ "./node_modules/jsonp/node_modules/debug/src/browser.js")('jsonp');
11184
11185/**
11186 * Module exports.
11187 */
11188
11189module.exports = jsonp;
11190
11191/**
11192 * Callback index.
11193 */
11194
11195var count = 0;
11196
11197/**
11198 * Noop function.
11199 */
11200
11201function noop(){}
11202
11203/**
11204 * JSONP handler
11205 *
11206 * Options:
11207 *  - param {String} qs parameter (`callback`)
11208 *  - prefix {String} qs parameter (`__jp`)
11209 *  - name {String} qs parameter (`prefix` + incr)
11210 *  - timeout {Number} how long after a timeout error is emitted (`60000`)
11211 *
11212 * @param {String} url
11213 * @param {Object|Function} optional options / callback
11214 * @param {Function} optional callback
11215 */
11216
11217function jsonp(url, opts, fn){
11218  if ('function' == typeof opts) {
11219    fn = opts;
11220    opts = {};
11221  }
11222  if (!opts) opts = {};
11223
11224  var prefix = opts.prefix || '__jp';
11225
11226  // use the callback name that was passed if one was provided.
11227  // otherwise generate a unique name by incrementing our counter.
11228  var id = opts.name || (prefix + (count++));
11229
11230  var param = opts.param || 'callback';
11231  var timeout = null != opts.timeout ? opts.timeout : 60000;
11232  var enc = encodeURIComponent;
11233  var target = document.getElementsByTagName('script')[0] || document.head;
11234  var script;
11235  var timer;
11236
11237
11238  if (timeout) {
11239    timer = setTimeout(function(){
11240      cleanup();
11241      if (fn) fn(new Error('Timeout'));
11242    }, timeout);
11243  }
11244
11245  function cleanup(){
11246    if (script.parentNode) script.parentNode.removeChild(script);
11247    window[id] = noop;
11248    if (timer) clearTimeout(timer);
11249  }
11250
11251  function cancel(){
11252    if (window[id]) {
11253      cleanup();
11254    }
11255  }
11256
11257  window[id] = function(data){
11258    debug('jsonp got', data);
11259    cleanup();
11260    if (fn) fn(null, data);
11261  };
11262
11263  // add qs component
11264  url += (~url.indexOf('?') ? '&' : '?') + param + '=' + enc(id);
11265  url = url.replace('?&', '?');
11266
11267  debug('jsonp req "%s"', url);
11268
11269  // create script
11270  script = document.createElement('script');
11271  script.src = url;
11272  target.parentNode.insertBefore(script, target);
11273
11274  return cancel;
11275}
11276
11277
11278/***/ }),
11279
vendor: 5,262 bytes, lines 11280-11475
11280/***/ "./node_modules/jsonp/node_modules/debug/src/browser.js":
11281/*!**************************************************************!*\
11282  !*** ./node_modules/jsonp/node_modules/debug/src/browser.js ***!
11283  \**************************************************************/
11284/***/ ((module, exports, __webpack_require__) => {
11285
11286/* provided dependency */ var process = __webpack_require__(/*! process/browser.js */ "./node_modules/process/browser.js");
11287/**
11288 * This is the web browser implementation of `debug()`.
11289 *
11290 * Expose `debug()` as the module.
11291 */
11292
11293exports = module.exports = __webpack_require__(/*! ./debug */ "./node_modules/jsonp/node_modules/debug/src/debug.js");
11294exports.log = log;
11295exports.formatArgs = formatArgs;
11296exports.save = save;
11297exports.load = load;
11298exports.useColors = useColors;
11299exports.storage = 'undefined' != typeof chrome
11300               && 'undefined' != typeof chrome.storage
11301                  ? chrome.storage.local
11302                  : localstorage();
11303
11304/**
11305 * Colors.
11306 */
11307
11308exports.colors = [
11309  'lightseagreen',
11310  'forestgreen',
11311  'goldenrod',
11312  'dodgerblue',
11313  'darkorchid',
11314  'crimson'
11315];
11316
11317/**
11318 * Currently only WebKit-based Web Inspectors, Firefox >= v31,
11319 * and the Firebug extension (any Firefox version) are known
11320 * to support "%c" CSS customizations.
11321 *
11322 * TODO: add a `localStorage` variable to explicitly enable/disable colors
11323 */
11324
11325function useColors() {
11326  // NB: In an Electron preload script, document will be defined but not fully
11327  // initialized. Since we know we're in Chrome, we'll just detect this case
11328  // explicitly
11329  if (typeof window !== 'undefined' && window.process && window.process.type === 'renderer') {
11330    return true;
11331  }
11332
11333  // is webkit? http://stackoverflow.com/a/16459606/376773
11334  // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632
11335  return (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||
11336    // is firebug? http://stackoverflow.com/a/398120/376773
11337    (typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||
11338    // is firefox >= v31?
11339    // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages
11340    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||
11341    // double check webkit in userAgent just in case we are in a worker
11342    (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/));
11343}
11344
11345/**
11346 * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.
11347 */
11348
11349exports.formatters.j = function(v) {
11350  try {
11351    return JSON.stringify(v);
11352  } catch (err) {
11353    return '[UnexpectedJSONParseError]: ' + err.message;
11354  }
11355};
11356
11357
11358/**
11359 * Colorize log arguments if enabled.
11360 *
11361 * @api public
11362 */
11363
11364function formatArgs(args) {
11365  var useColors = this.useColors;
11366
11367  args[0] = (useColors ? '%c' : '')
11368    + this.namespace
11369    + (useColors ? ' %c' : ' ')
11370    + args[0]
11371    + (useColors ? '%c ' : ' ')
11372    + '+' + exports.humanize(this.diff);
11373
11374  if (!useColors) return;
11375
11376  var c = 'color: ' + this.color;
11377  args.splice(1, 0, c, 'color: inherit')
11378
11379  // the final "%c" is somewhat tricky, because there could be other
11380  // arguments passed either before or after the %c, so we need to
11381  // figure out the correct index to insert the CSS into
11382  var index = 0;
11383  var lastC = 0;
11384  args[0].replace(/%[a-zA-Z%]/g, function(match) {
11385    if ('%%' === match) return;
11386    index++;
11387    if ('%c' === match) {
11388      // we only are interested in the *last* %c
11389      // (the user may have provided their own)
11390      lastC = index;
11391    }
11392  });
11393
11394  args.splice(lastC, 0, c);
11395}
11396
11397/**
11398 * Invokes `console.log()` when available.
11399 * No-op when `console.log` is not a "function".
11400 *
11401 * @api public
11402 */
11403
11404function log() {
11405  // this hackery is required for IE8/9, where
11406  // the `console.log` function doesn't have 'apply'
11407  return 'object' === typeof console
11408    && console.log
11409    && Function.prototype.apply.call(console.log, console, arguments);
11410}
11411
11412/**
11413 * Save `namespaces`.
11414 *
11415 * @param {String} namespaces
11416 * @api private
11417 */
11418
11419function save(namespaces) {
11420  try {
11421    if (null == namespaces) {
11422      exports.storage.removeItem('debug');
11423    } else {
11424      exports.storage.debug = namespaces;
11425    }
11426  } catch(e) {}
11427}
11428
11429/**
11430 * Load `namespaces`.
11431 *
11432 * @return {String} returns the previously persisted debug modes
11433 * @api private
11434 */
11435
11436function load() {
11437  var r;
11438  try {
11439    r = exports.storage.debug;
11440  } catch(e) {}
11441
11442  // If debug isn't set in LS, and we're in Electron, try to load $DEBUG
11443  if (!r && typeof process !== 'undefined' && 'env' in process) {
11444    r = process.env.DEBUG;
11445  }
11446
11447  return r;
11448}
11449
11450/**
11451 * Enable namespaces listed in `localStorage.debug` initially.
11452 */
11453
11454exports.enable(load());
11455
11456/**
11457 * Localstorage attempts to return the localstorage.
11458 *
11459 * This is necessary because safari throws
11460 * when a user disables cookies/localstorage
11461 * and you attempt to access it.
11462 *
11463 * @return {LocalStorage}
11464 * @api private
11465 */
11466
11467function localstorage() {
11468  try {
11469    return window.localStorage;
11470  } catch (e) {}
11471}
11472
11473
11474/***/ }),
11475
vendor: 4,783 bytes, lines 11476-11687
11476/***/ "./node_modules/jsonp/node_modules/debug/src/debug.js":
11477/*!************************************************************!*\
11478  !*** ./node_modules/jsonp/node_modules/debug/src/debug.js ***!
11479  \************************************************************/
11480/***/ ((module, exports, __webpack_require__) => {
11481
11482
11483/**
11484 * This is the common logic for both the Node.js and web browser
11485 * implementations of `debug()`.
11486 *
11487 * Expose `debug()` as the module.
11488 */
11489
11490exports = module.exports = createDebug.debug = createDebug['default'] = createDebug;
11491exports.coerce = coerce;
11492exports.disable = disable;
11493exports.enable = enable;
11494exports.enabled = enabled;
11495exports.humanize = __webpack_require__(/*! ms */ "./node_modules/jsonp/node_modules/ms/index.js");
11496
11497/**
11498 * The currently active debug mode names, and names to skip.
11499 */
11500
11501exports.names = [];
11502exports.skips = [];
11503
11504/**
11505 * Map of special "%n" handling functions, for the debug "format" argument.
11506 *
11507 * Valid key names are a single, lower or upper-case letter, i.e. "n" and "N".
11508 */
11509
11510exports.formatters = {};
11511
11512/**
11513 * Previous log timestamp.
11514 */
11515
11516var prevTime;
11517
11518/**
11519 * Select a color.
11520 * @param {String} namespace
11521 * @return {Number}
11522 * @api private
11523 */
11524
11525function selectColor(namespace) {
11526  var hash = 0, i;
11527
11528  for (i in namespace) {
11529    hash  = ((hash << 5) - hash) + namespace.charCodeAt(i);
11530    hash |= 0; // Convert to 32bit integer
11531  }
11532
11533  return exports.colors[Math.abs(hash) % exports.colors.length];
11534}
11535
11536/**
11537 * Create a debugger with the given `namespace`.
11538 *
11539 * @param {String} namespace
11540 * @return {Function}
11541 * @api public
11542 */
11543
11544function createDebug(namespace) {
11545
11546  function debug() {
11547    // disabled?
11548    if (!debug.enabled) return;
11549
11550    var self = debug;
11551
11552    // set `diff` timestamp
11553    var curr = +new Date();
11554    var ms = curr - (prevTime || curr);
11555    self.diff = ms;
11556    self.prev = prevTime;
11557    self.curr = curr;
11558    prevTime = curr;
11559
11560    // turn the `arguments` into a proper Array
11561    var args = new Array(arguments.length);
11562    for (var i = 0; i < args.length; i++) {
11563      args[i] = arguments[i];
11564    }
11565
11566    args[0] = exports.coerce(args[0]);
11567
11568    if ('string' !== typeof args[0]) {
11569      // anything else let's inspect with %O
11570      args.unshift('%O');
11571    }
11572
11573    // apply any `formatters` transformations
11574    var index = 0;
11575    args[0] = args[0].replace(/%([a-zA-Z%])/g, function(match, format) {
11576      // if we encounter an escaped % then don't increase the array index
11577      if (match === '%%') return match;
11578      index++;
11579      var formatter = exports.formatters[format];
11580      if ('function' === typeof formatter) {
11581        var val = args[index];
11582        match = formatter.call(self, val);
11583
11584        // now we need to remove `args[index]` since it's inlined in the `format`
11585        args.splice(index, 1);
11586        index--;
11587      }
11588      return match;
11589    });
11590
11591    // apply env-specific formatting (colors, etc.)
11592    exports.formatArgs.call(self, args);
11593
11594    var logFn = debug.log || exports.log || console.log.bind(console);
11595    logFn.apply(self, args);
11596  }
11597
11598  debug.namespace = namespace;
11599  debug.enabled = exports.enabled(namespace);
11600  debug.useColors = exports.useColors();
11601  debug.color = selectColor(namespace);
11602
11603  // env-specific initialization logic for debug instances
11604  if ('function' === typeof exports.init) {
11605    exports.init(debug);
11606  }
11607
11608  return debug;
11609}
11610
11611/**
11612 * Enables a debug mode by namespaces. This can include modes
11613 * separated by a colon and wildcards.
11614 *
11615 * @param {String} namespaces
11616 * @api public
11617 */
11618
11619function enable(namespaces) {
11620  exports.save(namespaces);
11621
11622  exports.names = [];
11623  exports.skips = [];
11624
11625  var split = (typeof namespaces === 'string' ? namespaces : '').split(/[\s,]+/);
11626  var len = split.length;
11627
11628  for (var i = 0; i < len; i++) {
11629    if (!split[i]) continue; // ignore empty strings
11630    namespaces = split[i].replace(/\*/g, '.*?');
11631    if (namespaces[0] === '-') {
11632      exports.skips.push(new RegExp('^' + namespaces.substr(1) + '$'));
11633    } else {
11634      exports.names.push(new RegExp('^' + namespaces + '$'));
11635    }
11636  }
11637}
11638
11639/**
11640 * Disable debug output.
11641 *
11642 * @api public
11643 */
11644
11645function disable() {
11646  exports.enable('');
11647}
11648
11649/**
11650 * Returns true if the given mode name is enabled, false otherwise.
11651 *
11652 * @param {String} name
11653 * @return {Boolean}
11654 * @api public
11655 */
11656
11657function enabled(name) {
11658  var i, len;
11659  for (i = 0, len = exports.skips.length; i < len; i++) {
11660    if (exports.skips[i].test(name)) {
11661      return false;
11662    }
11663  }
11664  for (i = 0, len = exports.names.length; i < len; i++) {
11665    if (exports.names[i].test(name)) {
11666      return true;
11667    }
11668  }
11669  return false;
11670}
11671
11672/**
11673 * Coerce `val`.
11674 *
11675 * @param {Mixed} val
11676 * @return {Mixed}
11677 * @api private
11678 */
11679
11680function coerce(val) {
11681  if (val instanceof Error) return val.stack || val.message;
11682  return val;
11683}
11684
11685
11686/***/ }),
11687
vendor: 3,030 bytes, lines 11688-11849
11688/***/ "./node_modules/jsonp/node_modules/ms/index.js":
11689/*!*****************************************************!*\
11690  !*** ./node_modules/jsonp/node_modules/ms/index.js ***!
11691  \*****************************************************/
11692/***/ ((module) => {
11693
11694/**
11695 * Helpers.
11696 */
11697
11698var s = 1000;
11699var m = s * 60;
11700var h = m * 60;
11701var d = h * 24;
11702var y = d * 365.25;
11703
11704/**
11705 * Parse or format the given `val`.
11706 *
11707 * Options:
11708 *
11709 *  - `long` verbose formatting [false]
11710 *
11711 * @param {String|Number} val
11712 * @param {Object} [options]
11713 * @throws {Error} throw an error if val is not a non-empty string or a number
11714 * @return {String|Number}
11715 * @api public
11716 */
11717
11718module.exports = function(val, options) {
11719  options = options || {};
11720  var type = typeof val;
11721  if (type === 'string' && val.length > 0) {
11722    return parse(val);
11723  } else if (type === 'number' && isNaN(val) === false) {
11724    return options.long ? fmtLong(val) : fmtShort(val);
11725  }
11726  throw new Error(
11727    'val is not a non-empty string or a valid number. val=' +
11728      JSON.stringify(val)
11729  );
11730};
11731
11732/**
11733 * Parse the given `str` and return milliseconds.
11734 *
11735 * @param {String} str
11736 * @return {Number}
11737 * @api private
11738 */
11739
11740function parse(str) {
11741  str = String(str);
11742  if (str.length > 100) {
11743    return;
11744  }
11745  var match = /^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(
11746    str
11747  );
11748  if (!match) {
11749    return;
11750  }
11751  var n = parseFloat(match[1]);
11752  var type = (match[2] || 'ms').toLowerCase();
11753  switch (type) {
11754    case 'years':
11755    case 'year':
11756    case 'yrs':
11757    case 'yr':
11758    case 'y':
11759      return n * y;
11760    case 'days':
11761    case 'day':
11762    case 'd':
11763      return n * d;
11764    case 'hours':
11765    case 'hour':
11766    case 'hrs':
11767    case 'hr':
11768    case 'h':
11769      return n * h;
11770    case 'minutes':
11771    case 'minute':
11772    case 'mins':
11773    case 'min':
11774    case 'm':
11775      return n * m;
11776    case 'seconds':
11777    case 'second':
11778    case 'secs':
11779    case 'sec':
11780    case 's':
11781      return n * s;
11782    case 'milliseconds':
11783    case 'millisecond':
11784    case 'msecs':
11785    case 'msec':
11786    case 'ms':
11787      return n;
11788    default:
11789      return undefined;
11790  }
11791}
11792
11793/**
11794 * Short format for `ms`.
11795 *
11796 * @param {Number} ms
11797 * @return {String}
11798 * @api private
11799 */
11800
11801function fmtShort(ms) {
11802  if (ms >= d) {
11803    return Math.round(ms / d) + 'd';
11804  }
11805  if (ms >= h) {
11806    return Math.round(ms / h) + 'h';
11807  }
11808  if (ms >= m) {
11809    return Math.round(ms / m) + 'm';
11810  }
11811  if (ms >= s) {
11812    return Math.round(ms / s) + 's';
11813  }
11814  return ms + 'ms';
11815}
11816
11817/**
11818 * Long format for `ms`.
11819 *
11820 * @param {Number} ms
11821 * @return {String}
11822 * @api private
11823 */
11824
11825function fmtLong(ms) {
11826  return plural(ms, d, 'day') ||
11827    plural(ms, h, 'hour') ||
11828    plural(ms, m, 'minute') ||
11829    plural(ms, s, 'second') ||
11830    ms + ' ms';
11831}
11832
11833/**
11834 * Pluralization helper.
11835 */
11836
11837function plural(ms, n, name) {
11838  if (ms < n) {
11839    return;
11840  }
11841  if (ms < n * 1.5) {
11842    return Math.floor(ms / n) + ' ' + name;
11843  }
11844  return Math.ceil(ms / n) + ' ' + name + 's';
11845}
11846
11847
11848/***/ }),
11849
vendor: 2,343 bytes, lines 11850-11950
11850/***/ "./node_modules/object-assign/index.js":
11851/*!*********************************************!*\
11852  !*** ./node_modules/object-assign/index.js ***!
11853  \*********************************************/
11854/***/ ((module) => {
11855
11856"use strict";
11857/*
11858object-assign
11859(c) Sindre Sorhus
11860@license MIT
11861*/
11862
11863
11864/* eslint-disable no-unused-vars */
11865var getOwnPropertySymbols = Object.getOwnPropertySymbols;
11866var hasOwnProperty = Object.prototype.hasOwnProperty;
11867var propIsEnumerable = Object.prototype.propertyIsEnumerable;
11868
11869function toObject(val) {
11870	if (val === null || val === undefined) {
11871		throw new TypeError('Object.assign cannot be called with null or undefined');
11872	}
11873
11874	return Object(val);
11875}
11876
11877function shouldUseNative() {
11878	try {
11879		if (!Object.assign) {
11880			return false;
11881		}
11882
11883		// Detect buggy property enumeration order in older V8 versions.
11884
11885		// https://bugs.chromium.org/p/v8/issues/detail?id=4118
11886		var test1 = new String('abc');  // eslint-disable-line no-new-wrappers
11887		test1[5] = 'de';
11888		if (Object.getOwnPropertyNames(test1)[0] === '5') {
11889			return false;
11890		}
11891
11892		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
11893		var test2 = {};
11894		for (var i = 0; i < 10; i++) {
11895			test2['_' + String.fromCharCode(i)] = i;
11896		}
11897		var order2 = Object.getOwnPropertyNames(test2).map(function (n) {
11898			return test2[n];
11899		});
11900		if (order2.join('') !== '0123456789') {
11901			return false;
11902		}
11903
11904		// https://bugs.chromium.org/p/v8/issues/detail?id=3056
11905		var test3 = {};
11906		'abcdefghijklmnopqrst'.split('').forEach(function (letter) {
11907			test3[letter] = letter;
11908		});
11909		if (Object.keys(Object.assign({}, test3)).join('') !==
11910				'abcdefghijklmnopqrst') {
11911			return false;
11912		}
11913
11914		return true;
11915	} catch (err) {
11916		// We don't expect any of the above to throw, but better to be safe.
11917		return false;
11918	}
11919}
11920
11921module.exports = shouldUseNative() ? Object.assign : function (target, source) {
11922	var from;
11923	var to = toObject(target);
11924	var symbols;
11925
11926	for (var s = 1; s < arguments.length; s++) {
11927		from = Object(arguments[s]);
11928
11929		for (var key in from) {
11930			if (hasOwnProperty.call(from, key)) {
11931				to[key] = from[key];
11932			}
11933		}
11934
11935		if (getOwnPropertySymbols) {
11936			symbols = getOwnPropertySymbols(from);
11937			for (var i = 0; i < symbols.length; i++) {
11938				if (propIsEnumerable.call(from, symbols[i])) {
11939					to[symbols[i]] = from[symbols[i]];
11940				}
11941			}
11942		}
11943	}
11944
11945	return to;
11946};
11947
11948
11949/***/ }),
11950
vendor: 5,636 bytes, lines 11951-12144
11951/***/ "./node_modules/process/browser.js":
11952/*!*****************************************!*\
11953  !*** ./node_modules/process/browser.js ***!
11954  \*****************************************/
11955/***/ ((module) => {
11956
11957// shim for using process in browser
11958var process = module.exports = {};
11959
11960// cached from whatever global is present so that test runners that stub it
11961// don't break things.  But we need to wrap it in a try catch in case it is
11962// wrapped in strict mode code which doesn't define any globals.  It's inside a
11963// function because try/catches deoptimize in certain engines.
11964
11965var cachedSetTimeout;
11966var cachedClearTimeout;
11967
11968function defaultSetTimout() {
11969    throw new Error('setTimeout has not been defined');
11970}
11971function defaultClearTimeout () {
11972    throw new Error('clearTimeout has not been defined');
11973}
11974(function () {
11975    try {
11976        if (typeof setTimeout === 'function') {
11977            cachedSetTimeout = setTimeout;
11978        } else {
11979            cachedSetTimeout = defaultSetTimout;
11980        }
11981    } catch (e) {
11982        cachedSetTimeout = defaultSetTimout;
11983    }
11984    try {
11985        if (typeof clearTimeout === 'function') {
11986            cachedClearTimeout = clearTimeout;
11987        } else {
11988            cachedClearTimeout = defaultClearTimeout;
11989        }
11990    } catch (e) {
11991        cachedClearTimeout = defaultClearTimeout;
11992    }
11993} ())
11994function runTimeout(fun) {
11995    if (cachedSetTimeout === setTimeout) {
11996        //normal enviroments in sane situations
11997        return setTimeout(fun, 0);
11998    }
11999    // if setTimeout wasn't available but was latter defined
12000    if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {
12001        cachedSetTimeout = setTimeout;
12002        return setTimeout(fun, 0);
12003    }
12004    try {
12005        // when when somebody has screwed with setTimeout but no I.E. maddness
12006        return cachedSetTimeout(fun, 0);
12007    } catch(e){
12008        try {
12009            // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally
12010            return cachedSetTimeout.call(null, fun, 0);
12011        } catch(e){
12012            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error
12013            return cachedSetTimeout.call(this, fun, 0);
12014        }
12015    }
12016
12017
12018}
12019function runClearTimeout(marker) {
12020    if (cachedClearTimeout === clearTimeout) {
12021        //normal enviroments in sane situations
12022        return clearTimeout(marker);
12023    }
12024    // if clearTimeout wasn't available but was latter defined
12025    if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {
12026        cachedClearTimeout = clearTimeout;
12027        return clearTimeout(marker);
12028    }
12029    try {
12030        // when when somebody has screwed with setTimeout but no I.E. maddness
12031        return cachedClearTimeout(marker);
12032    } catch (e){
12033        try {
12034            // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally
12035            return cachedClearTimeout.call(null, marker);
12036        } catch (e){
12037            // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.
12038            // Some versions of I.E. have different rules for clearTimeout vs setTimeout
12039            return cachedClearTimeout.call(this, marker);
12040        }
12041    }
12042
12043
12044
12045}
12046var queue = [];
12047var draining = false;
12048var currentQueue;
12049var queueIndex = -1;
12050
12051function cleanUpNextTick() {
12052    if (!draining || !currentQueue) {
12053        return;
12054    }
12055    draining = false;
12056    if (currentQueue.length) {
12057        queue = currentQueue.concat(queue);
12058    } else {
12059        queueIndex = -1;
12060    }
12061    if (queue.length) {
12062        drainQueue();
12063    }
12064}
12065
12066function drainQueue() {
12067    if (draining) {
12068        return;
12069    }
12070    var timeout = runTimeout(cleanUpNextTick);
12071    draining = true;
12072
12073    var len = queue.length;
12074    while(len) {
12075        currentQueue = queue;
12076        queue = [];
12077        while (++queueIndex < len) {
12078            if (currentQueue) {
12079                currentQueue[queueIndex].run();
12080            }
12081        }
12082        queueIndex = -1;
12083        len = queue.length;
12084    }
12085    currentQueue = null;
12086    draining = false;
12087    runClearTimeout(timeout);
12088}
12089
12090process.nextTick = function (fun) {
12091    var args = new Array(arguments.length - 1);
12092    if (arguments.length > 1) {
12093        for (var i = 1; i < arguments.length; i++) {
12094            args[i - 1] = arguments[i];
12095        }
12096    }
12097    queue.push(new Item(fun, args));
12098    if (queue.length === 1 && !draining) {
12099        runTimeout(drainQueue);
12100    }
12101};
12102
12103// v8 likes predictible objects
12104function Item(fun, array) {
12105    this.fun = fun;
12106    this.array = array;
12107}
12108Item.prototype.run = function () {
12109    this.fun.apply(null, this.array);
12110};
12111process.title = 'browser';
12112process.browser = true;
12113process.env = {};
12114process.argv = [];
12115process.version = ''; // empty string to avoid regexp issues
12116process.versions = {};
12117
12118function noop() {}
12119
12120process.on = noop;
12121process.addListener = noop;
12122process.once = noop;
12123process.off = noop;
12124process.removeListener = noop;
12125process.removeAllListeners = noop;
12126process.emit = noop;
12127process.prependListener = noop;
12128process.prependOnceListener = noop;
12129
12130process.listeners = function (name) { return [] }
12131
12132process.binding = function (name) {
12133    throw new Error('process.binding is not supported');
12134};
12135
12136process.cwd = function () { return '/' };
12137process.chdir = function (dir) {
12138    throw new Error('process.chdir is not supported');
12139};
12140process.umask = function() { return 0; };
12141
12142
12143/***/ }),
12144
vendor: 4,204 bytes, lines 12145-12258
12145/***/ "./node_modules/prop-types/checkPropTypes.js":
12146/*!***************************************************!*\
12147  !*** ./node_modules/prop-types/checkPropTypes.js ***!
12148  \***************************************************/
12149/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12150
12151"use strict";
12152/**
12153 * Copyright (c) 2013-present, Facebook, Inc.
12154 *
12155 * This source code is licensed under the MIT license found in the
12156 * LICENSE file in the root directory of this source tree.
12157 */
12158
12159
12160
12161var printWarning = function() {};
12162
12163if (true) {
12164  var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
12165  var loggedTypeFailures = {};
12166  var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");
12167
12168  printWarning = function(text) {
12169    var message = 'Warning: ' + text;
12170    if (typeof console !== 'undefined') {
12171      console.error(message);
12172    }
12173    try {
12174      // --- Welcome to debugging React ---
12175      // This error was thrown as a convenience so that you can use this stack
12176      // to find the callsite that caused this warning to fire.
12177      throw new Error(message);
12178    } catch (x) { /**/ }
12179  };
12180}
12181
12182/**
12183 * Assert that the values match with the type specs.
12184 * Error messages are memorized and will only be shown once.
12185 *
12186 * @param {object} typeSpecs Map of name to a ReactPropType
12187 * @param {object} values Runtime values that need to be type-checked
12188 * @param {string} location e.g. "prop", "context", "child context"
12189 * @param {string} componentName Name of the component for error messages.
12190 * @param {?Function} getStack Returns the component stack.
12191 * @private
12192 */
12193function checkPropTypes(typeSpecs, values, location, componentName, getStack) {
12194  if (true) {
12195    for (var typeSpecName in typeSpecs) {
12196      if (has(typeSpecs, typeSpecName)) {
12197        var error;
12198        // Prop type validation may throw. In case they do, we don't want to
12199        // fail the render phase where it didn't fail before. So we log it.
12200        // After these have been cleaned up, we'll let them throw.
12201        try {
12202          // This is intentionally an invariant that gets caught. It's the same
12203          // behavior as without this statement except with a better message.
12204          if (typeof typeSpecs[typeSpecName] !== 'function') {
12205            var err = Error(
12206              (componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' +
12207              'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' +
12208              'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.'
12209            );
12210            err.name = 'Invariant Violation';
12211            throw err;
12212          }
12213          error = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, ReactPropTypesSecret);
12214        } catch (ex) {
12215          error = ex;
12216        }
12217        if (error && !(error instanceof Error)) {
12218          printWarning(
12219            (componentName || 'React class') + ': type specification of ' +
12220            location + ' `' + typeSpecName + '` is invalid; the type checker ' +
12221            'function must return `null` or an `Error` but returned a ' + typeof error + '. ' +
12222            'You may have forgotten to pass an argument to the type checker ' +
12223            'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' +
12224            'shape all require an argument).'
12225          );
12226        }
12227        if (error instanceof Error && !(error.message in loggedTypeFailures)) {
12228          // Only monitor this failure once because there tends to be a lot of the
12229          // same error.
12230          loggedTypeFailures[error.message] = true;
12231
12232          var stack = getStack ? getStack() : '';
12233
12234          printWarning(
12235            'Failed ' + location + ' type: ' + error.message + (stack != null ? stack : '')
12236          );
12237        }
12238      }
12239    }
12240  }
12241}
12242
12243/**
12244 * Resets warning cache when testing.
12245 *
12246 * @private
12247 */
12248checkPropTypes.resetWarningCache = function() {
12249  if (true) {
12250    loggedTypeFailures = {};
12251  }
12252}
12253
12254module.exports = checkPropTypes;
12255
12256
12257/***/ }),
12258
vendor: 23,191 bytes, lines 12259-12879
12259/***/ "./node_modules/prop-types/factoryWithTypeCheckers.js":
12260/*!************************************************************!*\
12261  !*** ./node_modules/prop-types/factoryWithTypeCheckers.js ***!
12262  \************************************************************/
12263/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12264
12265"use strict";
12266/**
12267 * Copyright (c) 2013-present, Facebook, Inc.
12268 *
12269 * This source code is licensed under the MIT license found in the
12270 * LICENSE file in the root directory of this source tree.
12271 */
12272
12273
12274
12275var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
12276var assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
12277
12278var ReactPropTypesSecret = __webpack_require__(/*! ./lib/ReactPropTypesSecret */ "./node_modules/prop-types/lib/ReactPropTypesSecret.js");
12279var has = __webpack_require__(/*! ./lib/has */ "./node_modules/prop-types/lib/has.js");
12280var checkPropTypes = __webpack_require__(/*! ./checkPropTypes */ "./node_modules/prop-types/checkPropTypes.js");
12281
12282var printWarning = function() {};
12283
12284if (true) {
12285  printWarning = function(text) {
12286    var message = 'Warning: ' + text;
12287    if (typeof console !== 'undefined') {
12288      console.error(message);
12289    }
12290    try {
12291      // --- Welcome to debugging React ---
12292      // This error was thrown as a convenience so that you can use this stack
12293      // to find the callsite that caused this warning to fire.
12294      throw new Error(message);
12295    } catch (x) {}
12296  };
12297}
12298
12299function emptyFunctionThatReturnsNull() {
12300  return null;
12301}
12302
12303module.exports = function(isValidElement, throwOnDirectAccess) {
12304  /* global Symbol */
12305  var ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
12306  var FAUX_ITERATOR_SYMBOL = '@@iterator'; // Before Symbol spec.
12307
12308  /**
12309   * Returns the iterator method function contained on the iterable object.
12310   *
12311   * Be sure to invoke the function with the iterable as context:
12312   *
12313   *     var iteratorFn = getIteratorFn(myIterable);
12314   *     if (iteratorFn) {
12315   *       var iterator = iteratorFn.call(myIterable);
12316   *       ...
12317   *     }
12318   *
12319   * @param {?object} maybeIterable
12320   * @return {?function}
12321   */
12322  function getIteratorFn(maybeIterable) {
12323    var iteratorFn = maybeIterable && (ITERATOR_SYMBOL && maybeIterable[ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL]);
12324    if (typeof iteratorFn === 'function') {
12325      return iteratorFn;
12326    }
12327  }
12328
12329  /**
12330   * Collection of methods that allow declaration and validation of props that are
12331   * supplied to React components. Example usage:
12332   *
12333   *   var Props = require('ReactPropTypes');
12334   *   var MyArticle = React.createClass({
12335   *     propTypes: {
12336   *       // An optional string prop named "description".
12337   *       description: Props.string,
12338   *
12339   *       // A required enum prop named "category".
12340   *       category: Props.oneOf(['News','Photos']).isRequired,
12341   *
12342   *       // A prop named "dialog" that requires an instance of Dialog.
12343   *       dialog: Props.instanceOf(Dialog).isRequired
12344   *     },
12345   *     render: function() { ... }
12346   *   });
12347   *
12348   * A more formal specification of how these methods are used:
12349   *
12350   *   type := array|bool|func|object|number|string|oneOf([...])|instanceOf(...)
12351   *   decl := ReactPropTypes.{type}(.isRequired)?
12352   *
12353   * Each and every declaration produces a function with the same signature. This
12354   * allows the creation of custom validation functions. For example:
12355   *
12356   *  var MyLink = React.createClass({
12357   *    propTypes: {
12358   *      // An optional string or URI prop named "href".
12359   *      href: function(props, propName, componentName) {
12360   *        var propValue = props[propName];
12361   *        if (propValue != null && typeof propValue !== 'string' &&
12362   *            !(propValue instanceof URI)) {
12363   *          return new Error(
12364   *            'Expected a string or an URI for ' + propName + ' in ' +
12365   *            componentName
12366   *          );
12367   *        }
12368   *      }
12369   *    },
12370   *    render: function() {...}
12371   *  });
12372   *
12373   * @internal
12374   */
12375
12376  var ANONYMOUS = '<<anonymous>>';
12377
12378  // Important!
12379  // Keep this list in sync with production version in `./factoryWithThrowingShims.js`.
12380  var ReactPropTypes = {
12381    array: createPrimitiveTypeChecker('array'),
12382    bigint: createPrimitiveTypeChecker('bigint'),
12383    bool: createPrimitiveTypeChecker('boolean'),
12384    func: createPrimitiveTypeChecker('function'),
12385    number: createPrimitiveTypeChecker('number'),
12386    object: createPrimitiveTypeChecker('object'),
12387    string: createPrimitiveTypeChecker('string'),
12388    symbol: createPrimitiveTypeChecker('symbol'),
12389
12390    any: createAnyTypeChecker(),
12391    arrayOf: createArrayOfTypeChecker,
12392    element: createElementTypeChecker(),
12393    elementType: createElementTypeTypeChecker(),
12394    instanceOf: createInstanceTypeChecker,
12395    node: createNodeChecker(),
12396    objectOf: createObjectOfTypeChecker,
12397    oneOf: createEnumTypeChecker,
12398    oneOfType: createUnionTypeChecker,
12399    shape: createShapeTypeChecker,
12400    exact: createStrictShapeTypeChecker,
12401  };
12402
12403  /**
12404   * inlined Object.is polyfill to avoid requiring consumers ship their own
12405   * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
12406   */
12407  /*eslint-disable no-self-compare*/
12408  function is(x, y) {
12409    // SameValue algorithm
12410    if (x === y) {
12411      // Steps 1-5, 7-10
12412      // Steps 6.b-6.e: +0 != -0
12413      return x !== 0 || 1 / x === 1 / y;
12414    } else {
12415      // Step 6.a: NaN == NaN
12416      return x !== x && y !== y;
12417    }
12418  }
12419  /*eslint-enable no-self-compare*/
12420
12421  /**
12422   * We use an Error-like object for backward compatibility as people may call
12423   * PropTypes directly and inspect their output. However, we don't use real
12424   * Errors anymore. We don't inspect their stack anyway, and creating them
12425   * is prohibitively expensive if they are created too often, such as what
12426   * happens in oneOfType() for any type before the one that matched.
12427   */
12428  function PropTypeError(message, data) {
12429    this.message = message;
12430    this.data = data && typeof data === 'object' ? data: {};
12431    this.stack = '';
12432  }
12433  // Make `instanceof Error` still work for returned errors.
12434  PropTypeError.prototype = Error.prototype;
12435
12436  function createChainableTypeChecker(validate) {
12437    if (true) {
12438      var manualPropTypeCallCache = {};
12439      var manualPropTypeWarningCount = 0;
12440    }
12441    function checkType(isRequired, props, propName, componentName, location, propFullName, secret) {
12442      componentName = componentName || ANONYMOUS;
12443      propFullName = propFullName || propName;
12444
12445      if (secret !== ReactPropTypesSecret) {
12446        if (throwOnDirectAccess) {
12447          // New behavior only for users of `prop-types` package
12448          var err = new Error(
12449            'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
12450            'Use `PropTypes.checkPropTypes()` to call them. ' +
12451            'Read more at http://fb.me/use-check-prop-types'
12452          );
12453          err.name = 'Invariant Violation';
12454          throw err;
12455        } else if ( true && typeof console !== 'undefined') {
12456          // Old behavior for people using React.PropTypes
12457          var cacheKey = componentName + ':' + propName;
12458          if (
12459            !manualPropTypeCallCache[cacheKey] &&
12460            // Avoid spamming the console because they are often not actionable except for lib authors
12461            manualPropTypeWarningCount < 3
12462          ) {
12463            printWarning(
12464              'You are manually calling a React.PropTypes validation ' +
12465              'function for the `' + propFullName + '` prop on `' + componentName + '`. This is deprecated ' +
12466              'and will throw in the standalone `prop-types` package. ' +
12467              'You may be seeing this warning due to a third-party PropTypes ' +
12468              'library. See https://fb.me/react-warning-dont-call-proptypes ' + 'for details.'
12469            );
12470            manualPropTypeCallCache[cacheKey] = true;
12471            manualPropTypeWarningCount++;
12472          }
12473        }
12474      }
12475      if (props[propName] == null) {
12476        if (isRequired) {
12477          if (props[propName] === null) {
12478            return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required ' + ('in `' + componentName + '`, but its value is `null`.'));
12479          }
12480          return new PropTypeError('The ' + location + ' `' + propFullName + '` is marked as required in ' + ('`' + componentName + '`, but its value is `undefined`.'));
12481        }
12482        return null;
12483      } else {
12484        return validate(props, propName, componentName, location, propFullName);
12485      }
12486    }
12487
12488    var chainedCheckType = checkType.bind(null, false);
12489    chainedCheckType.isRequired = checkType.bind(null, true);
12490
12491    return chainedCheckType;
12492  }
12493
12494  function createPrimitiveTypeChecker(expectedType) {
12495    function validate(props, propName, componentName, location, propFullName, secret) {
12496      var propValue = props[propName];
12497      var propType = getPropType(propValue);
12498      if (propType !== expectedType) {
12499        // `propValue` being instance of, say, date/regexp, pass the 'object'
12500        // check, but we can offer a more precise error message here rather than
12501        // 'of type `object`'.
12502        var preciseType = getPreciseType(propValue);
12503
12504        return new PropTypeError(
12505          'Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + preciseType + '` supplied to `' + componentName + '`, expected ') + ('`' + expectedType + '`.'),
12506          {expectedType: expectedType}
12507        );
12508      }
12509      return null;
12510    }
12511    return createChainableTypeChecker(validate);
12512  }
12513
12514  function createAnyTypeChecker() {
12515    return createChainableTypeChecker(emptyFunctionThatReturnsNull);
12516  }
12517
12518  function createArrayOfTypeChecker(typeChecker) {
12519    function validate(props, propName, componentName, location, propFullName) {
12520      if (typeof typeChecker !== 'function') {
12521        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside arrayOf.');
12522      }
12523      var propValue = props[propName];
12524      if (!Array.isArray(propValue)) {
12525        var propType = getPropType(propValue);
12526        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an array.'));
12527      }
12528      for (var i = 0; i < propValue.length; i++) {
12529        var error = typeChecker(propValue, i, componentName, location, propFullName + '[' + i + ']', ReactPropTypesSecret);
12530        if (error instanceof Error) {
12531          return error;
12532        }
12533      }
12534      return null;
12535    }
12536    return createChainableTypeChecker(validate);
12537  }
12538
12539  function createElementTypeChecker() {
12540    function validate(props, propName, componentName, location, propFullName) {
12541      var propValue = props[propName];
12542      if (!isValidElement(propValue)) {
12543        var propType = getPropType(propValue);
12544        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement.'));
12545      }
12546      return null;
12547    }
12548    return createChainableTypeChecker(validate);
12549  }
12550
12551  function createElementTypeTypeChecker() {
12552    function validate(props, propName, componentName, location, propFullName) {
12553      var propValue = props[propName];
12554      if (!ReactIs.isValidElementType(propValue)) {
12555        var propType = getPropType(propValue);
12556        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected a single ReactElement type.'));
12557      }
12558      return null;
12559    }
12560    return createChainableTypeChecker(validate);
12561  }
12562
12563  function createInstanceTypeChecker(expectedClass) {
12564    function validate(props, propName, componentName, location, propFullName) {
12565      if (!(props[propName] instanceof expectedClass)) {
12566        var expectedClassName = expectedClass.name || ANONYMOUS;
12567        var actualClassName = getClassName(props[propName]);
12568        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + actualClassName + '` supplied to `' + componentName + '`, expected ') + ('instance of `' + expectedClassName + '`.'));
12569      }
12570      return null;
12571    }
12572    return createChainableTypeChecker(validate);
12573  }
12574
12575  function createEnumTypeChecker(expectedValues) {
12576    if (!Array.isArray(expectedValues)) {
12577      if (true) {
12578        if (arguments.length > 1) {
12579          printWarning(
12580            'Invalid arguments supplied to oneOf, expected an array, got ' + arguments.length + ' arguments. ' +
12581            'A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z]).'
12582          );
12583        } else {
12584          printWarning('Invalid argument supplied to oneOf, expected an array.');
12585        }
12586      }
12587      return emptyFunctionThatReturnsNull;
12588    }
12589
12590    function validate(props, propName, componentName, location, propFullName) {
12591      var propValue = props[propName];
12592      for (var i = 0; i < expectedValues.length; i++) {
12593        if (is(propValue, expectedValues[i])) {
12594          return null;
12595        }
12596      }
12597
12598      var valuesString = JSON.stringify(expectedValues, function replacer(key, value) {
12599        var type = getPreciseType(value);
12600        if (type === 'symbol') {
12601          return String(value);
12602        }
12603        return value;
12604      });
12605      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of value `' + String(propValue) + '` ' + ('supplied to `' + componentName + '`, expected one of ' + valuesString + '.'));
12606    }
12607    return createChainableTypeChecker(validate);
12608  }
12609
12610  function createObjectOfTypeChecker(typeChecker) {
12611    function validate(props, propName, componentName, location, propFullName) {
12612      if (typeof typeChecker !== 'function') {
12613        return new PropTypeError('Property `' + propFullName + '` of component `' + componentName + '` has invalid PropType notation inside objectOf.');
12614      }
12615      var propValue = props[propName];
12616      var propType = getPropType(propValue);
12617      if (propType !== 'object') {
12618        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type ' + ('`' + propType + '` supplied to `' + componentName + '`, expected an object.'));
12619      }
12620      for (var key in propValue) {
12621        if (has(propValue, key)) {
12622          var error = typeChecker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12623          if (error instanceof Error) {
12624            return error;
12625          }
12626        }
12627      }
12628      return null;
12629    }
12630    return createChainableTypeChecker(validate);
12631  }
12632
12633  function createUnionTypeChecker(arrayOfTypeCheckers) {
12634    if (!Array.isArray(arrayOfTypeCheckers)) {
12635       true ? printWarning('Invalid argument supplied to oneOfType, expected an instance of array.') : 0;
12636      return emptyFunctionThatReturnsNull;
12637    }
12638
12639    for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
12640      var checker = arrayOfTypeCheckers[i];
12641      if (typeof checker !== 'function') {
12642        printWarning(
12643          'Invalid argument supplied to oneOfType. Expected an array of check functions, but ' +
12644          'received ' + getPostfixForTypeWarning(checker) + ' at index ' + i + '.'
12645        );
12646        return emptyFunctionThatReturnsNull;
12647      }
12648    }
12649
12650    function validate(props, propName, componentName, location, propFullName) {
12651      var expectedTypes = [];
12652      for (var i = 0; i < arrayOfTypeCheckers.length; i++) {
12653        var checker = arrayOfTypeCheckers[i];
12654        var checkerResult = checker(props, propName, componentName, location, propFullName, ReactPropTypesSecret);
12655        if (checkerResult == null) {
12656          return null;
12657        }
12658        if (checkerResult.data && has(checkerResult.data, 'expectedType')) {
12659          expectedTypes.push(checkerResult.data.expectedType);
12660        }
12661      }
12662      var expectedTypesMessage = (expectedTypes.length > 0) ? ', expected one of type [' + expectedTypes.join(', ') + ']': '';
12663      return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`' + expectedTypesMessage + '.'));
12664    }
12665    return createChainableTypeChecker(validate);
12666  }
12667
12668  function createNodeChecker() {
12669    function validate(props, propName, componentName, location, propFullName) {
12670      if (!isNode(props[propName])) {
12671        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` supplied to ' + ('`' + componentName + '`, expected a ReactNode.'));
12672      }
12673      return null;
12674    }
12675    return createChainableTypeChecker(validate);
12676  }
12677
12678  function invalidValidatorError(componentName, location, propFullName, key, type) {
12679    return new PropTypeError(
12680      (componentName || 'React class') + ': ' + location + ' type `' + propFullName + '.' + key + '` is invalid; ' +
12681      'it must be a function, usually from the `prop-types` package, but received `' + type + '`.'
12682    );
12683  }
12684
12685  function createShapeTypeChecker(shapeTypes) {
12686    function validate(props, propName, componentName, location, propFullName) {
12687      var propValue = props[propName];
12688      var propType = getPropType(propValue);
12689      if (propType !== 'object') {
12690        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
12691      }
12692      for (var key in shapeTypes) {
12693        var checker = shapeTypes[key];
12694        if (typeof checker !== 'function') {
12695          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
12696        }
12697        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12698        if (error) {
12699          return error;
12700        }
12701      }
12702      return null;
12703    }
12704    return createChainableTypeChecker(validate);
12705  }
12706
12707  function createStrictShapeTypeChecker(shapeTypes) {
12708    function validate(props, propName, componentName, location, propFullName) {
12709      var propValue = props[propName];
12710      var propType = getPropType(propValue);
12711      if (propType !== 'object') {
12712        return new PropTypeError('Invalid ' + location + ' `' + propFullName + '` of type `' + propType + '` ' + ('supplied to `' + componentName + '`, expected `object`.'));
12713      }
12714      // We need to check all keys in case some are required but missing from props.
12715      var allKeys = assign({}, props[propName], shapeTypes);
12716      for (var key in allKeys) {
12717        var checker = shapeTypes[key];
12718        if (has(shapeTypes, key) && typeof checker !== 'function') {
12719          return invalidValidatorError(componentName, location, propFullName, key, getPreciseType(checker));
12720        }
12721        if (!checker) {
12722          return new PropTypeError(
12723            'Invalid ' + location + ' `' + propFullName + '` key `' + key + '` supplied to `' + componentName + '`.' +
12724            '\nBad object: ' + JSON.stringify(props[propName], null, '  ') +
12725            '\nValid keys: ' + JSON.stringify(Object.keys(shapeTypes), null, '  ')
12726          );
12727        }
12728        var error = checker(propValue, key, componentName, location, propFullName + '.' + key, ReactPropTypesSecret);
12729        if (error) {
12730          return error;
12731        }
12732      }
12733      return null;
12734    }
12735
12736    return createChainableTypeChecker(validate);
12737  }
12738
12739  function isNode(propValue) {
12740    switch (typeof propValue) {
12741      case 'number':
12742      case 'string':
12743      case 'undefined':
12744        return true;
12745      case 'boolean':
12746        return !propValue;
12747      case 'object':
12748        if (Array.isArray(propValue)) {
12749          return propValue.every(isNode);
12750        }
12751        if (propValue === null || isValidElement(propValue)) {
12752          return true;
12753        }
12754
12755        var iteratorFn = getIteratorFn(propValue);
12756        if (iteratorFn) {
12757          var iterator = iteratorFn.call(propValue);
12758          var step;
12759          if (iteratorFn !== propValue.entries) {
12760            while (!(step = iterator.next()).done) {
12761              if (!isNode(step.value)) {
12762                return false;
12763              }
12764            }
12765          } else {
12766            // Iterator will provide entry [k,v] tuples rather than values.
12767            while (!(step = iterator.next()).done) {
12768              var entry = step.value;
12769              if (entry) {
12770                if (!isNode(entry[1])) {
12771                  return false;
12772                }
12773              }
12774            }
12775          }
12776        } else {
12777          return false;
12778        }
12779
12780        return true;
12781      default:
12782        return false;
12783    }
12784  }
12785
12786  function isSymbol(propType, propValue) {
12787    // Native Symbol.
12788    if (propType === 'symbol') {
12789      return true;
12790    }
12791
12792    // falsy value can't be a Symbol
12793    if (!propValue) {
12794      return false;
12795    }
12796
12797    // 19.4.3.5 Symbol.prototype[@@toStringTag] === 'Symbol'
12798    if (propValue['@@toStringTag'] === 'Symbol') {
12799      return true;
12800    }
12801
12802    // Fallback for non-spec compliant Symbols which are polyfilled.
12803    if (typeof Symbol === 'function' && propValue instanceof Symbol) {
12804      return true;
12805    }
12806
12807    return false;
12808  }
12809
12810  // Equivalent of `typeof` but with special handling for array and regexp.
12811  function getPropType(propValue) {
12812    var propType = typeof propValue;
12813    if (Array.isArray(propValue)) {
12814      return 'array';
12815    }
12816    if (propValue instanceof RegExp) {
12817      // Old webkits (at least until Android 4.0) return 'function' rather than
12818      // 'object' for typeof a RegExp. We'll normalize this here so that /bla/
12819      // passes PropTypes.object.
12820      return 'object';
12821    }
12822    if (isSymbol(propType, propValue)) {
12823      return 'symbol';
12824    }
12825    return propType;
12826  }
12827
12828  // This handles more types than `getPropType`. Only used for error messages.
12829  // See `createPrimitiveTypeChecker`.
12830  function getPreciseType(propValue) {
12831    if (typeof propValue === 'undefined' || propValue === null) {
12832      return '' + propValue;
12833    }
12834    var propType = getPropType(propValue);
12835    if (propType === 'object') {
12836      if (propValue instanceof Date) {
12837        return 'date';
12838      } else if (propValue instanceof RegExp) {
12839        return 'regexp';
12840      }
12841    }
12842    return propType;
12843  }
12844
12845  // Returns a string that is postfixed to a warning about an invalid type.
12846  // For example, "undefined" or "of type array"
12847  function getPostfixForTypeWarning(value) {
12848    var type = getPreciseType(value);
12849    switch (type) {
12850      case 'array':
12851      case 'object':
12852        return 'an ' + type;
12853      case 'boolean':
12854      case 'date':
12855      case 'regexp':
12856        return 'a ' + type;
12857      default:
12858        return type;
12859    }
12860  }
12861
12862  // Returns class name of the object, if any.
12863  function getClassName(propValue) {
12864    if (!propValue.constructor || !propValue.constructor.name) {
12865      return ANONYMOUS;
12866    }
12867    return propValue.constructor.name;
12868  }
12869
12870  ReactPropTypes.checkPropTypes = checkPropTypes;
12871  ReactPropTypes.resetWarningCache = checkPropTypes.resetWarningCache;
12872  ReactPropTypes.PropTypes = ReactPropTypes;
12873
12874  return ReactPropTypes;
12875};
12876
12877
12878/***/ }),
12879
vendor: 889 bytes, lines 12880-12904
12880/***/ "./node_modules/prop-types/index.js":
12881/*!******************************************!*\
12882  !*** ./node_modules/prop-types/index.js ***!
12883  \******************************************/
12884/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
12885
12886/**
12887 * Copyright (c) 2013-present, Facebook, Inc.
12888 *
12889 * This source code is licensed under the MIT license found in the
12890 * LICENSE file in the root directory of this source tree.
12891 */
12892
12893if (true) {
12894  var ReactIs = __webpack_require__(/*! react-is */ "./node_modules/react-is/index.js");
12895
12896  // By explicitly using `prop-types` you are opting into new development behavior.
12897  // http://fb.me/prop-types-in-prod
12898  var throwOnDirectAccess = true;
12899  module.exports = __webpack_require__(/*! ./factoryWithTypeCheckers */ "./node_modules/prop-types/factoryWithTypeCheckers.js")(ReactIs.isElement, throwOnDirectAccess);
12900} else {}
12901
12902
12903/***/ }),
12904
vendor: 613 bytes, lines 12905-12927
12905/***/ "./node_modules/prop-types/lib/ReactPropTypesSecret.js":
12906/*!*************************************************************!*\
12907  !*** ./node_modules/prop-types/lib/ReactPropTypesSecret.js ***!
12908  \*************************************************************/
12909/***/ ((module) => {
12910
12911"use strict";
12912/**
12913 * Copyright (c) 2013-present, Facebook, Inc.
12914 *
12915 * This source code is licensed under the MIT license found in the
12916 * LICENSE file in the root directory of this source tree.
12917 */
12918
12919
12920
12921var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
12922
12923module.exports = ReactPropTypesSecret;
12924
12925
12926/***/ }),
12927
vendor: 300 bytes, lines 12928-12938
12928/***/ "./node_modules/prop-types/lib/has.js":
12929/*!********************************************!*\
12930  !*** ./node_modules/prop-types/lib/has.js ***!
12931  \********************************************/
12932/***/ ((module) => {
12933
12934module.exports = Function.call.bind(Object.prototype.hasOwnProperty);
12935
12936
12937/***/ }),
12938
vendor: 527 bytes, lines 12939-12967
12939/***/ "./node_modules/ramda/src/F.js":
12940/*!*************************************!*\
12941  !*** ./node_modules/ramda/src/F.js ***!
12942  \*************************************/
12943/***/ ((module) => {
12944
12945/**
12946 * A function that always returns `false`. Any passed in parameters are ignored.
12947 *
12948 * @func
12949 * @memberOf R
12950 * @since v0.9.0
12951 * @category Function
12952 * @sig * -> Boolean
12953 * @param {*}
12954 * @return {Boolean}
12955 * @see R.T
12956 * @example
12957 *
12958 *      R.F(); //=> false
12959 */
12960var F = function () {
12961  return false;
12962};
12963
12964module.exports = F;
12965
12966/***/ }),
12967
vendor: 524 bytes, lines 12968-12996
12968/***/ "./node_modules/ramda/src/T.js":
12969/*!*************************************!*\
12970  !*** ./node_modules/ramda/src/T.js ***!
12971  \*************************************/
12972/***/ ((module) => {
12973
12974/**
12975 * A function that always returns `true`. Any passed in parameters are ignored.
12976 *
12977 * @func
12978 * @memberOf R
12979 * @since v0.9.0
12980 * @category Function
12981 * @sig * -> Boolean
12982 * @param {*}
12983 * @return {Boolean}
12984 * @see R.F
12985 * @example
12986 *
12987 *      R.T(); //=> true
12988 */
12989var T = function () {
12990  return true;
12991};
12992
12993module.exports = T;
12994
12995/***/ }),
12996
vendor: 949 bytes, lines 12997-13035
12997/***/ "./node_modules/ramda/src/__.js":
12998/*!**************************************!*\
12999  !*** ./node_modules/ramda/src/__.js ***!
13000  \**************************************/
13001/***/ ((module) => {
13002
13003/**
13004 * A special placeholder value used to specify "gaps" within curried functions,
13005 * allowing partial application of any combination of arguments, regardless of
13006 * their positions.
13007 *
13008 * If `g` is a curried ternary function and `_` is `R.__`, the following are
13009 * equivalent:
13010 *
13011 *   - `g(1, 2, 3)`
13012 *   - `g(_, 2, 3)(1)`
13013 *   - `g(_, _, 3)(1)(2)`
13014 *   - `g(_, _, 3)(1, 2)`
13015 *   - `g(_, 2, _)(1, 3)`
13016 *   - `g(_, 2)(1)(3)`
13017 *   - `g(_, 2)(1, 3)`
13018 *   - `g(_, 2)(_, 3)(1)`
13019 *
13020 * @name __
13021 * @constant
13022 * @memberOf R
13023 * @since v0.6.0
13024 * @category Function
13025 * @example
13026 *
13027 *      const greet = R.replace('{name}', R.__, 'Hello, {name}!');
13028 *      greet('Alice'); //=> 'Hello, Alice!'
13029 */
13030module.exports = {
13031  '@@functional/placeholder': true
13032};
13033
13034/***/ }),
13035
vendor: 787 bytes, lines 13036-13073
13036/***/ "./node_modules/ramda/src/add.js":
13037/*!***************************************!*\
13038  !*** ./node_modules/ramda/src/add.js ***!
13039  \***************************************/
13040/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13041
13042var _curry2 =
13043/*#__PURE__*/
13044__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13045/**
13046 * Adds two values.
13047 *
13048 * @func
13049 * @memberOf R
13050 * @since v0.1.0
13051 * @category Math
13052 * @sig Number -> Number -> Number
13053 * @param {Number} a
13054 * @param {Number} b
13055 * @return {Number}
13056 * @see R.subtract
13057 * @example
13058 *
13059 *      R.add(2, 3);       //=>  5
13060 *      R.add(7)(10);      //=> 17
13061 */
13062
13063
13064var add =
13065/*#__PURE__*/
13066_curry2(function add(a, b) {
13067  return Number(a) + Number(b);
13068});
13069
13070module.exports = add;
13071
13072/***/ }),
13073
vendor: 2,208 bytes, lines 13074-13139
13074/***/ "./node_modules/ramda/src/addIndex.js":
13075/*!********************************************!*\
13076  !*** ./node_modules/ramda/src/addIndex.js ***!
13077  \********************************************/
13078/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13079
13080var _concat =
13081/*#__PURE__*/
13082__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
13083
13084var _curry1 =
13085/*#__PURE__*/
13086__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
13087
13088var curryN =
13089/*#__PURE__*/
13090__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
13091/**
13092 * Creates a new list iteration function from an existing one by adding two new
13093 * parameters to its callback function: the current index, and the entire list.
13094 *
13095 * This would turn, for instance, [`R.map`](#map) function into one that
13096 * more closely resembles `Array.prototype.map`. Note that this will only work
13097 * for functions in which the iteration callback function is the first
13098 * parameter, and where the list is the last parameter. (This latter might be
13099 * unimportant if the list parameter is not used.)
13100 *
13101 * @func
13102 * @memberOf R
13103 * @since v0.15.0
13104 * @category Function
13105 * @category List
13106 * @sig (((a ...) -> b) ... -> [a] -> *) -> (((a ..., Int, [a]) -> b) ... -> [a] -> *)
13107 * @param {Function} fn A list iteration function that does not pass index or list to its callback
13108 * @return {Function} An altered list iteration function that passes (item, index, list) to its callback
13109 * @example
13110 *
13111 *      const mapIndexed = R.addIndex(R.map);
13112 *      mapIndexed((val, idx) => idx + '-' + val, ['f', 'o', 'o', 'b', 'a', 'r']);
13113 *      //=> ['0-f', '1-o', '2-o', '3-b', '4-a', '5-r']
13114 */
13115
13116
13117var addIndex =
13118/*#__PURE__*/
13119_curry1(function addIndex(fn) {
13120  return curryN(fn.length, function () {
13121    var idx = 0;
13122    var origFn = arguments[0];
13123    var list = arguments[arguments.length - 1];
13124    var args = Array.prototype.slice.call(arguments, 0);
13125
13126    args[0] = function () {
13127      var result = origFn.apply(this, _concat(arguments, [idx, list]));
13128      idx += 1;
13129      return result;
13130    };
13131
13132    return fn.apply(this, args);
13133  });
13134});
13135
13136module.exports = addIndex;
13137
13138/***/ }),
13139
vendor: 1,800 bytes, lines 13140-13200
13140/***/ "./node_modules/ramda/src/adjust.js":
13141/*!******************************************!*\
13142  !*** ./node_modules/ramda/src/adjust.js ***!
13143  \******************************************/
13144/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13145
13146var _concat =
13147/*#__PURE__*/
13148__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
13149
13150var _curry3 =
13151/*#__PURE__*/
13152__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
13153/**
13154 * Applies a function to the value at the given index of an array, returning a
13155 * new copy of the array with the element at the given index replaced with the
13156 * result of the function application.
13157 *
13158 * @func
13159 * @memberOf R
13160 * @since v0.14.0
13161 * @category List
13162 * @sig Number -> (a -> a) -> [a] -> [a]
13163 * @param {Number} idx The index.
13164 * @param {Function} fn The function to apply.
13165 * @param {Array|Arguments} list An array-like object whose value
13166 *        at the supplied index will be replaced.
13167 * @return {Array} A copy of the supplied array-like object with
13168 *         the element at index `idx` replaced with the value
13169 *         returned by applying `fn` to the existing element.
13170 * @see R.update
13171 * @example
13172 *
13173 *      R.adjust(1, R.toUpper, ['a', 'b', 'c', 'd']);      //=> ['a', 'B', 'c', 'd']
13174 *      R.adjust(-1, R.toUpper, ['a', 'b', 'c', 'd']);     //=> ['a', 'b', 'c', 'D']
13175 * @symb R.adjust(-1, f, [a, b]) = [a, f(b)]
13176 * @symb R.adjust(0, f, [a, b]) = [f(a), b]
13177 */
13178
13179
13180var adjust =
13181/*#__PURE__*/
13182_curry3(function adjust(idx, fn, list) {
13183  var len = list.length;
13184
13185  if (idx >= len || idx < -len) {
13186    return list;
13187  }
13188
13189  var _idx = (len + idx) % len;
13190
13191  var _list = _concat(list);
13192
13193  _list[_idx] = fn(list[_idx]);
13194  return _list;
13195});
13196
13197module.exports = adjust;
13198
13199/***/ }),
13200
vendor: 1,659 bytes, lines 13201-13265
13201/***/ "./node_modules/ramda/src/all.js":
13202/*!***************************************!*\
13203  !*** ./node_modules/ramda/src/all.js ***!
13204  \***************************************/
13205/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13206
13207var _curry2 =
13208/*#__PURE__*/
13209__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13210
13211var _dispatchable =
13212/*#__PURE__*/
13213__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
13214
13215var _xall =
13216/*#__PURE__*/
13217__webpack_require__(/*! ./internal/_xall.js */ "./node_modules/ramda/src/internal/_xall.js");
13218/**
13219 * Returns `true` if all elements of the list match the predicate, `false` if
13220 * there are any that don't.
13221 *
13222 * Dispatches to the `all` method of the second argument, if present.
13223 *
13224 * Acts as a transducer if a transformer is given in list position.
13225 *
13226 * @func
13227 * @memberOf R
13228 * @since v0.1.0
13229 * @category List
13230 * @sig (a -> Boolean) -> [a] -> Boolean
13231 * @param {Function} fn The predicate function.
13232 * @param {Array} list The array to consider.
13233 * @return {Boolean} `true` if the predicate is satisfied by every element, `false`
13234 *         otherwise.
13235 * @see R.any, R.none, R.transduce
13236 * @example
13237 *
13238 *      const equals3 = R.equals(3);
13239 *      R.all(equals3)([3, 3, 3, 3]); //=> true
13240 *      R.all(equals3)([3, 3, 1, 3]); //=> false
13241 */
13242
13243
13244var all =
13245/*#__PURE__*/
13246_curry2(
13247/*#__PURE__*/
13248_dispatchable(['all'], _xall, function all(fn, list) {
13249  var idx = 0;
13250
13251  while (idx < list.length) {
13252    if (!fn(list[idx])) {
13253      return false;
13254    }
13255
13256    idx += 1;
13257  }
13258
13259  return true;
13260}));
13261
13262module.exports = all;
13263
13264/***/ }),
13265
vendor: 2,014 bytes, lines 13266-13340
13266/***/ "./node_modules/ramda/src/allPass.js":
13267/*!*******************************************!*\
13268  !*** ./node_modules/ramda/src/allPass.js ***!
13269  \*******************************************/
13270/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13271
13272var _curry1 =
13273/*#__PURE__*/
13274__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
13275
13276var curryN =
13277/*#__PURE__*/
13278__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
13279
13280var max =
13281/*#__PURE__*/
13282__webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
13283
13284var pluck =
13285/*#__PURE__*/
13286__webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/src/pluck.js");
13287
13288var reduce =
13289/*#__PURE__*/
13290__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
13291/**
13292 * Takes a list of predicates and returns a predicate that returns true for a
13293 * given list of arguments if every one of the provided predicates is satisfied
13294 * by those arguments.
13295 *
13296 * The function returned is a curried function whose arity matches that of the
13297 * highest-arity predicate.
13298 *
13299 * @func
13300 * @memberOf R
13301 * @since v0.9.0
13302 * @category Logic
13303 * @sig [(*... -> Boolean)] -> (*... -> Boolean)
13304 * @param {Array} predicates An array of predicates to check
13305 * @return {Function} The combined predicate
13306 * @see R.anyPass
13307 * @example
13308 *
13309 *      const isQueen = R.propEq('rank', 'Q');
13310 *      const isSpade = R.propEq('suit', '♠︎');
13311 *      const isQueenOfSpades = R.allPass([isQueen, isSpade]);
13312 *
13313 *      isQueenOfSpades({rank: 'Q', suit: '♣︎'}); //=> false
13314 *      isQueenOfSpades({rank: 'Q', suit: '♠︎'}); //=> true
13315 */
13316
13317
13318var allPass =
13319/*#__PURE__*/
13320_curry1(function allPass(preds) {
13321  return curryN(reduce(max, 0, pluck('length', preds)), function () {
13322    var idx = 0;
13323    var len = preds.length;
13324
13325    while (idx < len) {
13326      if (!preds[idx].apply(this, arguments)) {
13327        return false;
13328      }
13329
13330      idx += 1;
13331    }
13332
13333    return true;
13334  });
13335});
13336
13337module.exports = allPass;
13338
13339/***/ }),
13340
vendor: 1,058 bytes, lines 13341-13382
13341/***/ "./node_modules/ramda/src/always.js":
13342/*!******************************************!*\
13343  !*** ./node_modules/ramda/src/always.js ***!
13344  \******************************************/
13345/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13346
13347var _curry1 =
13348/*#__PURE__*/
13349__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
13350/**
13351 * Returns a function that always returns the given value. Note that for
13352 * non-primitives the value returned is a reference to the original value.
13353 *
13354 * This function is known as `const`, `constant`, or `K` (for K combinator) in
13355 * other languages and libraries.
13356 *
13357 * @func
13358 * @memberOf R
13359 * @since v0.1.0
13360 * @category Function
13361 * @sig a -> (* -> a)
13362 * @param {*} val The value to wrap in a function
13363 * @return {Function} A Function :: * -> val.
13364 * @example
13365 *
13366 *      const t = R.always('Tee');
13367 *      t(); //=> 'Tee'
13368 */
13369
13370
13371var always =
13372/*#__PURE__*/
13373_curry1(function always(val) {
13374  return function () {
13375    return val;
13376  };
13377});
13378
13379module.exports = always;
13380
13381/***/ }),
13382
vendor: 967 bytes, lines 13383-13423
13383/***/ "./node_modules/ramda/src/and.js":
13384/*!***************************************!*\
13385  !*** ./node_modules/ramda/src/and.js ***!
13386  \***************************************/
13387/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13388
13389var _curry2 =
13390/*#__PURE__*/
13391__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13392/**
13393 * Returns the first argument if it is falsy, otherwise the second argument.
13394 * Acts as the boolean `and` statement if both inputs are `Boolean`s.
13395 *
13396 * @func
13397 * @memberOf R
13398 * @since v0.1.0
13399 * @category Logic
13400 * @sig a -> b -> a | b
13401 * @param {Any} a
13402 * @param {Any} b
13403 * @return {Any}
13404 * @see R.both, R.or
13405 * @example
13406 *
13407 *      R.and(true, true); //=> true
13408 *      R.and(true, false); //=> false
13409 *      R.and(false, true); //=> false
13410 *      R.and(false, false); //=> false
13411 */
13412
13413
13414var and =
13415/*#__PURE__*/
13416_curry2(function and(a, b) {
13417  return a && b;
13418});
13419
13420module.exports = and;
13421
13422/***/ }),
13423
vendor: 1,744 bytes, lines 13424-13480
13424/***/ "./node_modules/ramda/src/andThen.js":
13425/*!*******************************************!*\
13426  !*** ./node_modules/ramda/src/andThen.js ***!
13427  \*******************************************/
13428/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13429
13430var _curry2 =
13431/*#__PURE__*/
13432__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13433
13434var _assertPromise =
13435/*#__PURE__*/
13436__webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/src/internal/_assertPromise.js");
13437/**
13438 * Returns the result of applying the onSuccess function to the value inside
13439 * a successfully resolved promise. This is useful for working with promises
13440 * inside function compositions.
13441 *
13442 * @func
13443 * @memberOf R
13444 * @since v0.27.1
13445 * @category Function
13446 * @sig (a -> b) -> (Promise e a) -> (Promise e b)
13447 * @sig (a -> (Promise e b)) -> (Promise e a) -> (Promise e b)
13448 * @param {Function} onSuccess The function to apply. Can return a value or a promise of a value.
13449 * @param {Promise} p
13450 * @return {Promise} The result of calling `p.then(onSuccess)`
13451 * @see R.otherwise
13452 * @example
13453 *
13454 *      const makeQuery = email => ({ query: { email }});
13455 *      const fetchMember = request =>
13456 *        Promise.resolve({ firstName: 'Bob', lastName: 'Loblaw', id: 42 });
13457 *
13458 *      //getMemberName :: String -> Promise ({ firstName, lastName })
13459 *      const getMemberName = R.pipe(
13460 *        makeQuery,
13461 *        fetchMember,
13462 *        R.andThen(R.pick(['firstName', 'lastName']))
13463 *      );
13464 *
13465 *      getMemberName('[email protected]').then(console.log);
13466 */
13467
13468
13469var andThen =
13470/*#__PURE__*/
13471_curry2(function andThen(f, p) {
13472  _assertPromise('andThen', p);
13473
13474  return p.then(f);
13475});
13476
13477module.exports = andThen;
13478
13479/***/ }),
13480
vendor: 1,704 bytes, lines 13481-13546
13481/***/ "./node_modules/ramda/src/any.js":
13482/*!***************************************!*\
13483  !*** ./node_modules/ramda/src/any.js ***!
13484  \***************************************/
13485/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13486
13487var _curry2 =
13488/*#__PURE__*/
13489__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13490
13491var _dispatchable =
13492/*#__PURE__*/
13493__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
13494
13495var _xany =
13496/*#__PURE__*/
13497__webpack_require__(/*! ./internal/_xany.js */ "./node_modules/ramda/src/internal/_xany.js");
13498/**
13499 * Returns `true` if at least one of the elements of the list match the predicate,
13500 * `false` otherwise.
13501 *
13502 * Dispatches to the `any` method of the second argument, if present.
13503 *
13504 * Acts as a transducer if a transformer is given in list position.
13505 *
13506 * @func
13507 * @memberOf R
13508 * @since v0.1.0
13509 * @category List
13510 * @sig (a -> Boolean) -> [a] -> Boolean
13511 * @param {Function} fn The predicate function.
13512 * @param {Array} list The array to consider.
13513 * @return {Boolean} `true` if the predicate is satisfied by at least one element, `false`
13514 *         otherwise.
13515 * @see R.all, R.none, R.transduce
13516 * @example
13517 *
13518 *      const lessThan0 = R.flip(R.lt)(0);
13519 *      const lessThan2 = R.flip(R.lt)(2);
13520 *      R.any(lessThan0)([1, 2]); //=> false
13521 *      R.any(lessThan2)([1, 2]); //=> true
13522 */
13523
13524
13525var any =
13526/*#__PURE__*/
13527_curry2(
13528/*#__PURE__*/
13529_dispatchable(['any'], _xany, function any(fn, list) {
13530  var idx = 0;
13531
13532  while (idx < list.length) {
13533    if (fn(list[idx])) {
13534      return true;
13535    }
13536
13537    idx += 1;
13538  }
13539
13540  return false;
13541}));
13542
13543module.exports = any;
13544
13545/***/ }),
13546
vendor: 2,053 bytes, lines 13547-13622
13547/***/ "./node_modules/ramda/src/anyPass.js":
13548/*!*******************************************!*\
13549  !*** ./node_modules/ramda/src/anyPass.js ***!
13550  \*******************************************/
13551/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13552
13553var _curry1 =
13554/*#__PURE__*/
13555__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
13556
13557var curryN =
13558/*#__PURE__*/
13559__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
13560
13561var max =
13562/*#__PURE__*/
13563__webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
13564
13565var pluck =
13566/*#__PURE__*/
13567__webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/src/pluck.js");
13568
13569var reduce =
13570/*#__PURE__*/
13571__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
13572/**
13573 * Takes a list of predicates and returns a predicate that returns true for a
13574 * given list of arguments if at least one of the provided predicates is
13575 * satisfied by those arguments.
13576 *
13577 * The function returned is a curried function whose arity matches that of the
13578 * highest-arity predicate.
13579 *
13580 * @func
13581 * @memberOf R
13582 * @since v0.9.0
13583 * @category Logic
13584 * @sig [(*... -> Boolean)] -> (*... -> Boolean)
13585 * @param {Array} predicates An array of predicates to check
13586 * @return {Function} The combined predicate
13587 * @see R.allPass
13588 * @example
13589 *
13590 *      const isClub = R.propEq('suit', '♣');
13591 *      const isSpade = R.propEq('suit', '♠');
13592 *      const isBlackCard = R.anyPass([isClub, isSpade]);
13593 *
13594 *      isBlackCard({rank: '10', suit: '♣'}); //=> true
13595 *      isBlackCard({rank: 'Q', suit: '♠'}); //=> true
13596 *      isBlackCard({rank: 'Q', suit: '♦'}); //=> false
13597 */
13598
13599
13600var anyPass =
13601/*#__PURE__*/
13602_curry1(function anyPass(preds) {
13603  return curryN(reduce(max, 0, pluck('length', preds)), function () {
13604    var idx = 0;
13605    var len = preds.length;
13606
13607    while (idx < len) {
13608      if (preds[idx].apply(this, arguments)) {
13609        return true;
13610      }
13611
13612      idx += 1;
13613    }
13614
13615    return false;
13616  });
13617});
13618
13619module.exports = anyPass;
13620
13621/***/ }),
13622
vendor: 1,994 bytes, lines 13623-13685
13623/***/ "./node_modules/ramda/src/ap.js":
13624/*!**************************************!*\
13625  !*** ./node_modules/ramda/src/ap.js ***!
13626  \**************************************/
13627/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13628
13629var _concat =
13630/*#__PURE__*/
13631__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
13632
13633var _curry2 =
13634/*#__PURE__*/
13635__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13636
13637var _reduce =
13638/*#__PURE__*/
13639__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
13640
13641var map =
13642/*#__PURE__*/
13643__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
13644/**
13645 * ap applies a list of functions to a list of values.
13646 *
13647 * Dispatches to the `ap` method of the second argument, if present. Also
13648 * treats curried functions as applicatives.
13649 *
13650 * @func
13651 * @memberOf R
13652 * @since v0.3.0
13653 * @category Function
13654 * @sig [a -> b] -> [a] -> [b]
13655 * @sig Apply f => f (a -> b) -> f a -> f b
13656 * @sig (r -> a -> b) -> (r -> a) -> (r -> b)
13657 * @param {*} applyF
13658 * @param {*} applyX
13659 * @return {*}
13660 * @example
13661 *
13662 *      R.ap([R.multiply(2), R.add(3)], [1,2,3]); //=> [2, 4, 6, 4, 5, 6]
13663 *      R.ap([R.concat('tasty '), R.toUpper], ['pizza', 'salad']); //=> ["tasty pizza", "tasty salad", "PIZZA", "SALAD"]
13664 *
13665 *      // R.ap can also be used as S combinator
13666 *      // when only two functions are passed
13667 *      R.ap(R.concat, R.toUpper)('Ramda') //=> 'RamdaRAMDA'
13668 * @symb R.ap([f, g], [a, b]) = [f(a), f(b), g(a), g(b)]
13669 */
13670
13671
13672var ap =
13673/*#__PURE__*/
13674_curry2(function ap(applyF, applyX) {
13675  return typeof applyX['fantasy-land/ap'] === 'function' ? applyX['fantasy-land/ap'](applyF) : typeof applyF.ap === 'function' ? applyF.ap(applyX) : typeof applyF === 'function' ? function (x) {
13676    return applyF(x)(applyX(x));
13677  } : _reduce(function (acc, f) {
13678    return _concat(acc, map(f, applyX));
13679  }, [], applyF);
13680});
13681
13682module.exports = ap;
13683
13684/***/ }),
13685
vendor: 1,677 bytes, lines 13686-13739
13686/***/ "./node_modules/ramda/src/aperture.js":
13687/*!********************************************!*\
13688  !*** ./node_modules/ramda/src/aperture.js ***!
13689  \********************************************/
13690/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13691
13692var _aperture =
13693/*#__PURE__*/
13694__webpack_require__(/*! ./internal/_aperture.js */ "./node_modules/ramda/src/internal/_aperture.js");
13695
13696var _curry2 =
13697/*#__PURE__*/
13698__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13699
13700var _dispatchable =
13701/*#__PURE__*/
13702__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
13703
13704var _xaperture =
13705/*#__PURE__*/
13706__webpack_require__(/*! ./internal/_xaperture.js */ "./node_modules/ramda/src/internal/_xaperture.js");
13707/**
13708 * Returns a new list, composed of n-tuples of consecutive elements. If `n` is
13709 * greater than the length of the list, an empty list is returned.
13710 *
13711 * Acts as a transducer if a transformer is given in list position.
13712 *
13713 * @func
13714 * @memberOf R
13715 * @since v0.12.0
13716 * @category List
13717 * @sig Number -> [a] -> [[a]]
13718 * @param {Number} n The size of the tuples to create
13719 * @param {Array} list The list to split into `n`-length tuples
13720 * @return {Array} The resulting list of `n`-length tuples
13721 * @see R.transduce
13722 * @example
13723 *
13724 *      R.aperture(2, [1, 2, 3, 4, 5]); //=> [[1, 2], [2, 3], [3, 4], [4, 5]]
13725 *      R.aperture(3, [1, 2, 3, 4, 5]); //=> [[1, 2, 3], [2, 3, 4], [3, 4, 5]]
13726 *      R.aperture(7, [1, 2, 3, 4, 5]); //=> []
13727 */
13728
13729
13730var aperture =
13731/*#__PURE__*/
13732_curry2(
13733/*#__PURE__*/
13734_dispatchable([], _xaperture, _aperture));
13735
13736module.exports = aperture;
13737
13738/***/ }),
13739
vendor: 1,312 bytes, lines 13740-13784
13740/***/ "./node_modules/ramda/src/append.js":
13741/*!******************************************!*\
13742  !*** ./node_modules/ramda/src/append.js ***!
13743  \******************************************/
13744/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13745
13746var _concat =
13747/*#__PURE__*/
13748__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
13749
13750var _curry2 =
13751/*#__PURE__*/
13752__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13753/**
13754 * Returns a new list containing the contents of the given list, followed by
13755 * the given element.
13756 *
13757 * @func
13758 * @memberOf R
13759 * @since v0.1.0
13760 * @category List
13761 * @sig a -> [a] -> [a]
13762 * @param {*} el The element to add to the end of the new list.
13763 * @param {Array} list The list of elements to add a new item to.
13764 *        list.
13765 * @return {Array} A new list containing the elements of the old list followed by `el`.
13766 * @see R.prepend
13767 * @example
13768 *
13769 *      R.append('tests', ['write', 'more']); //=> ['write', 'more', 'tests']
13770 *      R.append('tests', []); //=> ['tests']
13771 *      R.append(['tests'], ['write', 'more']); //=> ['write', 'more', ['tests']]
13772 */
13773
13774
13775var append =
13776/*#__PURE__*/
13777_curry2(function append(el, list) {
13778  return _concat(list, [el]);
13779});
13780
13781module.exports = append;
13782
13783/***/ }),
13784
vendor: 1,175 bytes, lines 13785-13825
13785/***/ "./node_modules/ramda/src/apply.js":
13786/*!*****************************************!*\
13787  !*** ./node_modules/ramda/src/apply.js ***!
13788  \*****************************************/
13789/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13790
13791var _curry2 =
13792/*#__PURE__*/
13793__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13794/**
13795 * Applies function `fn` to the argument list `args`. This is useful for
13796 * creating a fixed-arity function from a variadic function. `fn` should be a
13797 * bound function if context is significant.
13798 *
13799 * @func
13800 * @memberOf R
13801 * @since v0.7.0
13802 * @category Function
13803 * @sig (*... -> a) -> [*] -> a
13804 * @param {Function} fn The function which will be called with `args`
13805 * @param {Array} args The arguments to call `fn` with
13806 * @return {*} result The result, equivalent to `fn(...args)`
13807 * @see R.call, R.unapply
13808 * @example
13809 *
13810 *      const nums = [1, 2, 3, -99, 42, 6, 7];
13811 *      R.apply(Math.max, nums); //=> 42
13812 * @symb R.apply(f, [a, b, c]) = f(a, b, c)
13813 */
13814
13815
13816var apply =
13817/*#__PURE__*/
13818_curry2(function apply(fn, args) {
13819  return fn.apply(this, args);
13820});
13821
13822module.exports = apply;
13823
13824/***/ }),
13825
vendor: 2,957 bytes, lines 13826-13920
13826/***/ "./node_modules/ramda/src/applySpec.js":
13827/*!*********************************************!*\
13828  !*** ./node_modules/ramda/src/applySpec.js ***!
13829  \*********************************************/
13830/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13831
13832var _curry1 =
13833/*#__PURE__*/
13834__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
13835
13836var _isArray =
13837/*#__PURE__*/
13838__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
13839
13840var apply =
13841/*#__PURE__*/
13842__webpack_require__(/*! ./apply.js */ "./node_modules/ramda/src/apply.js");
13843
13844var curryN =
13845/*#__PURE__*/
13846__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
13847
13848var max =
13849/*#__PURE__*/
13850__webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
13851
13852var pluck =
13853/*#__PURE__*/
13854__webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/src/pluck.js");
13855
13856var reduce =
13857/*#__PURE__*/
13858__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
13859
13860var keys =
13861/*#__PURE__*/
13862__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
13863
13864var values =
13865/*#__PURE__*/
13866__webpack_require__(/*! ./values.js */ "./node_modules/ramda/src/values.js"); // Use custom mapValues function to avoid issues with specs that include a "map" key and R.map
13867// delegating calls to .map
13868
13869
13870function mapValues(fn, obj) {
13871  return _isArray(obj) ? obj.map(fn) : keys(obj).reduce(function (acc, key) {
13872    acc[key] = fn(obj[key]);
13873    return acc;
13874  }, {});
13875}
13876/**
13877 * Given a spec object recursively mapping properties to functions, creates a
13878 * function producing an object of the same structure, by mapping each property
13879 * to the result of calling its associated function with the supplied arguments.
13880 *
13881 * @func
13882 * @memberOf R
13883 * @since v0.20.0
13884 * @category Function
13885 * @sig {k: ((a, b, ..., m) -> v)} -> ((a, b, ..., m) -> {k: v})
13886 * @param {Object} spec an object recursively mapping properties to functions for
13887 *        producing the values for these properties.
13888 * @return {Function} A function that returns an object of the same structure
13889 * as `spec', with each property set to the value returned by calling its
13890 * associated function with the supplied arguments.
13891 * @see R.converge, R.juxt
13892 * @example
13893 *
13894 *      const getMetrics = R.applySpec({
13895 *        sum: R.add,
13896 *        nested: { mul: R.multiply }
13897 *      });
13898 *      getMetrics(2, 4); // => { sum: 6, nested: { mul: 8 } }
13899 * @symb R.applySpec({ x: f, y: { z: g } })(a, b) = { x: f(a, b), y: { z: g(a, b) } }
13900 */
13901
13902
13903var applySpec =
13904/*#__PURE__*/
13905_curry1(function applySpec(spec) {
13906  spec = mapValues(function (v) {
13907    return typeof v == 'function' ? v : applySpec(v);
13908  }, spec);
13909  return curryN(reduce(max, 0, pluck('length', values(spec))), function () {
13910    var args = arguments;
13911    return mapValues(function (f) {
13912      return apply(f, args);
13913    }, spec);
13914  });
13915});
13916
13917module.exports = applySpec;
13918
13919/***/ }),
13920
vendor: 952 bytes, lines 13921-13960
13921/***/ "./node_modules/ramda/src/applyTo.js":
13922/*!*******************************************!*\
13923  !*** ./node_modules/ramda/src/applyTo.js ***!
13924  \*******************************************/
13925/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13926
13927var _curry2 =
13928/*#__PURE__*/
13929__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
13930/**
13931 * Takes a value and applies a function to it.
13932 *
13933 * This function is also known as the `thrush` combinator.
13934 *
13935 * @func
13936 * @memberOf R
13937 * @since v0.25.0
13938 * @category Function
13939 * @sig a -> (a -> b) -> b
13940 * @param {*} x The value
13941 * @param {Function} f The function to apply
13942 * @return {*} The result of applying `f` to `x`
13943 * @example
13944 *
13945 *      const t42 = R.applyTo(42);
13946 *      t42(R.identity); //=> 42
13947 *      t42(R.add(1)); //=> 43
13948 */
13949
13950
13951var applyTo =
13952/*#__PURE__*/
13953_curry2(function applyTo(x, f) {
13954  return f(x);
13955});
13956
13957module.exports = applyTo;
13958
13959/***/ }),
13960
vendor: 1,466 bytes, lines 13961-14008
13961/***/ "./node_modules/ramda/src/ascend.js":
13962/*!******************************************!*\
13963  !*** ./node_modules/ramda/src/ascend.js ***!
13964  \******************************************/
13965/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
13966
13967var _curry3 =
13968/*#__PURE__*/
13969__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
13970/**
13971 * Makes an ascending comparator function out of a function that returns a value
13972 * that can be compared with `<` and `>`.
13973 *
13974 * @func
13975 * @memberOf R
13976 * @since v0.23.0
13977 * @category Function
13978 * @sig Ord b => (a -> b) -> a -> a -> Number
13979 * @param {Function} fn A function of arity one that returns a value that can be compared
13980 * @param {*} a The first item to be compared.
13981 * @param {*} b The second item to be compared.
13982 * @return {Number} `-1` if fn(a) < fn(b), `1` if fn(b) < fn(a), otherwise `0`
13983 * @see R.descend
13984 * @example
13985 *
13986 *      const byAge = R.ascend(R.prop('age'));
13987 *      const people = [
13988 *        { name: 'Emma', age: 70 },
13989 *        { name: 'Peter', age: 78 },
13990 *        { name: 'Mikhail', age: 62 },
13991 *      ];
13992 *      const peopleByYoungestFirst = R.sort(byAge, people);
13993 *        //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]
13994 */
13995
13996
13997var ascend =
13998/*#__PURE__*/
13999_curry3(function ascend(fn, a, b) {
14000  var aa = fn(a);
14001  var bb = fn(b);
14002  return aa < bb ? -1 : aa > bb ? 1 : 0;
14003});
14004
14005module.exports = ascend;
14006
14007/***/ }),
14008
vendor: 1,363 bytes, lines 14009-14054
14009/***/ "./node_modules/ramda/src/assoc.js":
14010/*!*****************************************!*\
14011  !*** ./node_modules/ramda/src/assoc.js ***!
14012  \*****************************************/
14013/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14014
14015var _curry3 =
14016/*#__PURE__*/
14017__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
14018
14019var assocPath =
14020/*#__PURE__*/
14021__webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/src/assocPath.js");
14022/**
14023 * Makes a shallow clone of an object, setting or overriding the specified
14024 * property with the given value. Note that this copies and flattens prototype
14025 * properties onto the new object as well. All non-primitive properties are
14026 * copied by reference.
14027 *
14028 * @func
14029 * @memberOf R
14030 * @since v0.8.0
14031 * @category Object
14032 * @typedefn Idx = String | Int
14033 * @sig Idx -> a -> {k: v} -> {k: v}
14034 * @param {String|Number} prop The property name to set
14035 * @param {*} val The new value
14036 * @param {Object} obj The object to clone
14037 * @return {Object} A new object equivalent to the original except for the changed property.
14038 * @see R.dissoc, R.pick
14039 * @example
14040 *
14041 *      R.assoc('c', 3, {a: 1, b: 2}); //=> {a: 1, b: 2, c: 3}
14042 */
14043
14044
14045var assoc =
14046/*#__PURE__*/
14047_curry3(function assoc(prop, val, obj) {
14048  return assocPath([prop], val, obj);
14049});
14050
14051module.exports = assoc;
14052
14053/***/ }),
14054
vendor: 2,225 bytes, lines 14055-14126
14055/***/ "./node_modules/ramda/src/assocPath.js":
14056/*!*********************************************!*\
14057  !*** ./node_modules/ramda/src/assocPath.js ***!
14058  \*********************************************/
14059/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14060
14061var _curry3 =
14062/*#__PURE__*/
14063__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
14064
14065var _has =
14066/*#__PURE__*/
14067__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
14068
14069var _isInteger =
14070/*#__PURE__*/
14071__webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
14072
14073var _assoc =
14074/*#__PURE__*/
14075__webpack_require__(/*! ./internal/_assoc.js */ "./node_modules/ramda/src/internal/_assoc.js");
14076
14077var isNil =
14078/*#__PURE__*/
14079__webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/src/isNil.js");
14080/**
14081 * Makes a shallow clone of an object, setting or overriding the nodes required
14082 * to create the given path, and placing the specific value at the tail end of
14083 * that path. Note that this copies and flattens prototype properties onto the
14084 * new object as well. All non-primitive properties are copied by reference.
14085 *
14086 * @func
14087 * @memberOf R
14088 * @since v0.8.0
14089 * @category Object
14090 * @typedefn Idx = String | Int | Symbol
14091 * @sig [Idx] -> a -> {a} -> {a}
14092 * @param {Array} path the path to set
14093 * @param {*} val The new value
14094 * @param {Object} obj The object to clone
14095 * @return {Object} A new object equivalent to the original except along the specified path.
14096 * @see R.dissocPath
14097 * @example
14098 *
14099 *      R.assocPath(['a', 'b', 'c'], 42, {a: {b: {c: 0}}}); //=> {a: {b: {c: 42}}}
14100 *
14101 *      // Any missing or non-object keys in path will be overridden
14102 *      R.assocPath(['a', 'b', 'c'], 42, {a: 5}); //=> {a: {b: {c: 42}}}
14103 */
14104
14105
14106var assocPath =
14107/*#__PURE__*/
14108_curry3(function assocPath(path, val, obj) {
14109  if (path.length === 0) {
14110    return val;
14111  }
14112
14113  var idx = path[0];
14114
14115  if (path.length > 1) {
14116    var nextObj = !isNil(obj) && _has(idx, obj) ? obj[idx] : _isInteger(path[1]) ? [] : {};
14117    val = assocPath(Array.prototype.slice.call(path, 1), val, nextObj);
14118  }
14119
14120  return _assoc(idx, val, obj);
14121});
14122
14123module.exports = assocPath;
14124
14125/***/ }),
14126
vendor: 1,533 bytes, lines 14127-14179
14127/***/ "./node_modules/ramda/src/binary.js":
14128/*!******************************************!*\
14129  !*** ./node_modules/ramda/src/binary.js ***!
14130  \******************************************/
14131/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14132
14133var _curry1 =
14134/*#__PURE__*/
14135__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14136
14137var nAry =
14138/*#__PURE__*/
14139__webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/src/nAry.js");
14140/**
14141 * Wraps a function of any arity (including nullary) in a function that accepts
14142 * exactly 2 parameters. Any extraneous parameters will not be passed to the
14143 * supplied function.
14144 *
14145 * @func
14146 * @memberOf R
14147 * @since v0.2.0
14148 * @category Function
14149 * @sig (a -> b -> c -> ... -> z) -> ((a, b) -> z)
14150 * @param {Function} fn The function to wrap.
14151 * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of
14152 *         arity 2.
14153 * @see R.nAry, R.unary
14154 * @example
14155 *
14156 *      const takesThreeArgs = function(a, b, c) {
14157 *        return [a, b, c];
14158 *      };
14159 *      takesThreeArgs.length; //=> 3
14160 *      takesThreeArgs(1, 2, 3); //=> [1, 2, 3]
14161 *
14162 *      const takesTwoArgs = R.binary(takesThreeArgs);
14163 *      takesTwoArgs.length; //=> 2
14164 *      // Only 2 arguments are passed to the wrapped function
14165 *      takesTwoArgs(1, 2, 3); //=> [1, 2, undefined]
14166 * @symb R.binary(f)(a, b, c) = f(a, b)
14167 */
14168
14169
14170var binary =
14171/*#__PURE__*/
14172_curry1(function binary(fn) {
14173  return nAry(2, fn);
14174});
14175
14176module.exports = binary;
14177
14178/***/ }),
14179
vendor: 1,504 bytes, lines 14180-14228
14180/***/ "./node_modules/ramda/src/bind.js":
14181/*!****************************************!*\
14182  !*** ./node_modules/ramda/src/bind.js ***!
14183  \****************************************/
14184/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14185
14186var _arity =
14187/*#__PURE__*/
14188__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
14189
14190var _curry2 =
14191/*#__PURE__*/
14192__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14193/**
14194 * Creates a function that is bound to a context.
14195 * Note: `R.bind` does not provide the additional argument-binding capabilities of
14196 * [Function.prototype.bind](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function/bind).
14197 *
14198 * @func
14199 * @memberOf R
14200 * @since v0.6.0
14201 * @category Function
14202 * @category Object
14203 * @sig (* -> *) -> {*} -> (* -> *)
14204 * @param {Function} fn The function to bind to context
14205 * @param {Object} thisObj The context to bind `fn` to
14206 * @return {Function} A function that will execute in the context of `thisObj`.
14207 * @see R.partial
14208 * @example
14209 *
14210 *      const log = R.bind(console.log, console);
14211 *      R.pipe(R.assoc('a', 2), R.tap(log), R.assoc('a', 3))({a: 1}); //=> {a: 3}
14212 *      // logs {a: 2}
14213 * @symb R.bind(f, o)(a, b) = f.call(o, a, b)
14214 */
14215
14216
14217var bind =
14218/*#__PURE__*/
14219_curry2(function bind(fn, thisObj) {
14220  return _arity(fn.length, function () {
14221    return fn.apply(thisObj, arguments);
14222  });
14223});
14224
14225module.exports = bind;
14226
14227/***/ }),
14228
vendor: 2,057 bytes, lines 14229-14294
14229/***/ "./node_modules/ramda/src/both.js":
14230/*!****************************************!*\
14231  !*** ./node_modules/ramda/src/both.js ***!
14232  \****************************************/
14233/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14234
14235var _curry2 =
14236/*#__PURE__*/
14237__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14238
14239var _isFunction =
14240/*#__PURE__*/
14241__webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/src/internal/_isFunction.js");
14242
14243var and =
14244/*#__PURE__*/
14245__webpack_require__(/*! ./and.js */ "./node_modules/ramda/src/and.js");
14246
14247var lift =
14248/*#__PURE__*/
14249__webpack_require__(/*! ./lift.js */ "./node_modules/ramda/src/lift.js");
14250/**
14251 * A function which calls the two provided functions and returns the `&&`
14252 * of the results.
14253 * It returns the result of the first function if it is false-y and the result
14254 * of the second function otherwise. Note that this is short-circuited,
14255 * meaning that the second function will not be invoked if the first returns a
14256 * false-y value.
14257 *
14258 * In addition to functions, `R.both` also accepts any fantasy-land compatible
14259 * applicative functor.
14260 *
14261 * @func
14262 * @memberOf R
14263 * @since v0.12.0
14264 * @category Logic
14265 * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)
14266 * @param {Function} f A predicate
14267 * @param {Function} g Another predicate
14268 * @return {Function} a function that applies its arguments to `f` and `g` and `&&`s their outputs together.
14269 * @see R.either, R.and
14270 * @example
14271 *
14272 *      const gt10 = R.gt(R.__, 10)
14273 *      const lt20 = R.lt(R.__, 20)
14274 *      const f = R.both(gt10, lt20);
14275 *      f(15); //=> true
14276 *      f(30); //=> false
14277 *
14278 *      R.both(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(false)
14279 *      R.both([false, false, 'a'], [11]); //=> [false, false, 11]
14280 */
14281
14282
14283var both =
14284/*#__PURE__*/
14285_curry2(function both(f, g) {
14286  return _isFunction(f) ? function _both() {
14287    return f.apply(this, arguments) && g.apply(this, arguments);
14288  } : lift(and)(f, g);
14289});
14290
14291module.exports = both;
14292
14293/***/ }),
14294
vendor: 1,580 bytes, lines 14295-14352
14295/***/ "./node_modules/ramda/src/call.js":
14296/*!****************************************!*\
14297  !*** ./node_modules/ramda/src/call.js ***!
14298  \****************************************/
14299/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14300
14301var _curry1 =
14302/*#__PURE__*/
14303__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14304/**
14305 * Returns the result of calling its first argument with the remaining
14306 * arguments. This is occasionally useful as a converging function for
14307 * [`R.converge`](#converge): the first branch can produce a function while the
14308 * remaining branches produce values to be passed to that function as its
14309 * arguments.
14310 *
14311 * @func
14312 * @memberOf R
14313 * @since v0.9.0
14314 * @category Function
14315 * @sig ((*... -> a), *...) -> a
14316 * @param {Function} fn The function to apply to the remaining arguments.
14317 * @param {...*} args Any number of positional arguments.
14318 * @return {*}
14319 * @see R.apply
14320 * @example
14321 *
14322 *      R.call(R.add, 1, 2); //=> 3
14323 *
14324 *      const indentN = R.pipe(
14325 *        R.repeat(' '),
14326 *        R.join(''),
14327 *        R.replace(/^(?!$)/gm)
14328 *      );
14329 *
14330 *      const format = R.converge(
14331 *        R.call,
14332 *        [
14333 *          R.pipe(R.prop('indent'), indentN),
14334 *          R.prop('value')
14335 *        ]
14336 *      );
14337 *
14338 *      format({indent: 2, value: 'foo\nbar\nbaz\n'}); //=> '  foo\n  bar\n  baz\n'
14339 * @symb R.call(f, a, b) = f(a, b)
14340 */
14341
14342
14343var call =
14344/*#__PURE__*/
14345_curry1(function call(fn) {
14346  return fn.apply(this, Array.prototype.slice.call(arguments, 1));
14347});
14348
14349module.exports = call;
14350
14351/***/ }),
14352
vendor: 2,116 bytes, lines 14353-14423
14353/***/ "./node_modules/ramda/src/chain.js":
14354/*!*****************************************!*\
14355  !*** ./node_modules/ramda/src/chain.js ***!
14356  \*****************************************/
14357/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14358
14359var _curry2 =
14360/*#__PURE__*/
14361__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14362
14363var _dispatchable =
14364/*#__PURE__*/
14365__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
14366
14367var _makeFlat =
14368/*#__PURE__*/
14369__webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/src/internal/_makeFlat.js");
14370
14371var _xchain =
14372/*#__PURE__*/
14373__webpack_require__(/*! ./internal/_xchain.js */ "./node_modules/ramda/src/internal/_xchain.js");
14374
14375var map =
14376/*#__PURE__*/
14377__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
14378/**
14379 * `chain` maps a function over a list and concatenates the results. `chain`
14380 * is also known as `flatMap` in some libraries.
14381 *
14382 * Dispatches to the `chain` method of the second argument, if present,
14383 * according to the [FantasyLand Chain spec](https://github.com/fantasyland/fantasy-land#chain).
14384 *
14385 * If second argument is a function, `chain(f, g)(x)` is equivalent to `f(g(x), x)`.
14386 *
14387 * Acts as a transducer if a transformer is given in list position.
14388 *
14389 * @func
14390 * @memberOf R
14391 * @since v0.3.0
14392 * @category List
14393 * @sig Chain m => (a -> m b) -> m a -> m b
14394 * @param {Function} fn The function to map with
14395 * @param {Array} list The list to map over
14396 * @return {Array} The result of flat-mapping `list` with `fn`
14397 * @example
14398 *
14399 *      const duplicate = n => [n, n];
14400 *      R.chain(duplicate, [1, 2, 3]); //=> [1, 1, 2, 2, 3, 3]
14401 *
14402 *      R.chain(R.append, R.head)([1, 2, 3]); //=> [1, 2, 3, 1]
14403 */
14404
14405
14406var chain =
14407/*#__PURE__*/
14408_curry2(
14409/*#__PURE__*/
14410_dispatchable(['fantasy-land/chain', 'chain'], _xchain, function chain(fn, monad) {
14411  if (typeof monad === 'function') {
14412    return function (x) {
14413      return fn(monad(x))(x);
14414    };
14415  }
14416
14417  return _makeFlat(false)(map(fn, monad));
14418}));
14419
14420module.exports = chain;
14421
14422/***/ }),
14423
vendor: 1,291 bytes, lines 14424-14468
14424/***/ "./node_modules/ramda/src/clamp.js":
14425/*!*****************************************!*\
14426  !*** ./node_modules/ramda/src/clamp.js ***!
14427  \*****************************************/
14428/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14429
14430var _curry3 =
14431/*#__PURE__*/
14432__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
14433/**
14434 * Restricts a number to be within a range.
14435 *
14436 * Also works for other ordered types such as Strings and Dates.
14437 *
14438 * @func
14439 * @memberOf R
14440 * @since v0.20.0
14441 * @category Relation
14442 * @sig Ord a => a -> a -> a -> a
14443 * @param {Number} minimum The lower limit of the clamp (inclusive)
14444 * @param {Number} maximum The upper limit of the clamp (inclusive)
14445 * @param {Number} value Value to be clamped
14446 * @return {Number} Returns `minimum` when `val < minimum`, `maximum` when `val > maximum`, returns `val` otherwise
14447 * @example
14448 *
14449 *      R.clamp(1, 10, -5) // => 1
14450 *      R.clamp(1, 10, 15) // => 10
14451 *      R.clamp(1, 10, 4)  // => 4
14452 */
14453
14454
14455var clamp =
14456/*#__PURE__*/
14457_curry3(function clamp(min, max, value) {
14458  if (min > max) {
14459    throw new Error('min must not be greater than max in clamp(min, max, value)');
14460  }
14461
14462  return value < min ? min : value > max ? max : value;
14463});
14464
14465module.exports = clamp;
14466
14467/***/ }),
14468
vendor: 1,655 bytes, lines 14469-14520
14469/***/ "./node_modules/ramda/src/clone.js":
14470/*!*****************************************!*\
14471  !*** ./node_modules/ramda/src/clone.js ***!
14472  \*****************************************/
14473/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14474
14475var _clone =
14476/*#__PURE__*/
14477__webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/src/internal/_clone.js");
14478
14479var _curry1 =
14480/*#__PURE__*/
14481__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14482/**
14483 * Creates a deep copy of the source that can be used in place of the source
14484 * object without retaining any references to it.
14485 * The source object may contain (nested) `Array`s and `Object`s,
14486 * `Number`s, `String`s, `Boolean`s and `Date`s.
14487 * `Function`s are assigned by reference rather than copied.
14488 *
14489 * Dispatches to a `clone` method if present.
14490 *
14491 * Note that if the source object has multiple nodes that share a reference,
14492 * the returned object will have the same structure, but the references will
14493 * be pointed to the location within the cloned value.
14494 *
14495 * @func
14496 * @memberOf R
14497 * @since v0.1.0
14498 * @category Object
14499 * @sig {*} -> {*}
14500 * @param {*} value The object or array to clone
14501 * @return {*} A deeply cloned copy of `val`
14502 * @example
14503 *
14504 *      const objects = [{}, {}, {}];
14505 *      const objectsClone = R.clone(objects);
14506 *      objects === objectsClone; //=> false
14507 *      objects[0] === objectsClone[0]; //=> false
14508 */
14509
14510
14511var clone =
14512/*#__PURE__*/
14513_curry1(function clone(value) {
14514  return value != null && typeof value.clone === 'function' ? value.clone() : _clone(value, [], [], true);
14515});
14516
14517module.exports = clone;
14518
14519/***/ }),
14520
vendor: 2,028 bytes, lines 14521-14593
14521/***/ "./node_modules/ramda/src/collectBy.js":
14522/*!*********************************************!*\
14523  !*** ./node_modules/ramda/src/collectBy.js ***!
14524  \*********************************************/
14525/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14526
14527var _curry2 =
14528/*#__PURE__*/
14529__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14530
14531var _reduce =
14532/*#__PURE__*/
14533__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
14534/**
14535 * Splits a list into sub-lists, based on the result of calling a key-returning function on each element,
14536 * and grouping the results according to values returned.
14537 *
14538 * @func
14539 * @memberOf R
14540 * @since v0.28.0
14541 * @category List
14542 * @typedefn Idx = String | Int | Symbol
14543 * @sig Idx a => (b -> a) -> [b] -> [[b]]
14544 * @param {Function} fn Function :: a -> Idx
14545 * @param {Array} list The array to group
14546 * @return {Array}
14547 *    An array of arrays where each sub-array contains items for which
14548 *    the String-returning function has returned the same value.
14549 * @see R.groupBy, R.partition
14550 * @example
14551 *      R.collectBy(R.prop('type'), [
14552 *        {type: 'breakfast', item: '☕️'},
14553 *        {type: 'lunch', item: '🌯'},
14554 *        {type: 'dinner', item: '🍝'},
14555 *        {type: 'breakfast', item: '🥐'},
14556 *        {type: 'lunch', item: '🍕'}
14557 *      ]);
14558 *
14559 *      // [ [ {type: 'breakfast', item: '☕️'},
14560 *      //     {type: 'breakfast', item: '🥐'} ],
14561 *      //   [ {type: 'lunch', item: '🌯'},
14562 *      //     {type: 'lunch', item: '🍕'} ],
14563 *      //   [ {type: 'dinner', item: '🍝'} ] ]
14564 */
14565
14566
14567var collectBy =
14568/*#__PURE__*/
14569_curry2(function collectBy(fn, list) {
14570  var group = _reduce(function (o, x) {
14571    var tag = fn(x);
14572
14573    if (o[tag] === undefined) {
14574      o[tag] = [];
14575    }
14576
14577    o[tag].push(x);
14578    return o;
14579  }, {}, list);
14580
14581  var newList = [];
14582
14583  for (var tag in group) {
14584    newList.push(group[tag]);
14585  }
14586
14587  return newList;
14588});
14589
14590module.exports = collectBy;
14591
14592/***/ }),
14593
vendor: 1,481 bytes, lines 14594-14639
14594/***/ "./node_modules/ramda/src/comparator.js":
14595/*!**********************************************!*\
14596  !*** ./node_modules/ramda/src/comparator.js ***!
14597  \**********************************************/
14598/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14599
14600var _curry1 =
14601/*#__PURE__*/
14602__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14603/**
14604 * Makes a comparator function out of a function that reports whether the first
14605 * element is less than the second.
14606 *
14607 * @func
14608 * @memberOf R
14609 * @since v0.1.0
14610 * @category Function
14611 * @sig ((a, b) -> Boolean) -> ((a, b) -> Number)
14612 * @param {Function} pred A predicate function of arity two which will return `true` if the first argument
14613 * is less than the second, `false` otherwise
14614 * @return {Function} A Function :: a -> b -> Int that returns `-1` if a < b, `1` if b < a, otherwise `0`
14615 * @example
14616 *
14617 *      const byAge = R.comparator((a, b) => a.age < b.age);
14618 *      const people = [
14619 *        { name: 'Emma', age: 70 },
14620 *        { name: 'Peter', age: 78 },
14621 *        { name: 'Mikhail', age: 62 },
14622 *      ];
14623 *      const peopleByIncreasingAge = R.sort(byAge, people);
14624 *        //=> [{ name: 'Mikhail', age: 62 },{ name: 'Emma', age: 70 }, { name: 'Peter', age: 78 }]
14625 */
14626
14627
14628var comparator =
14629/*#__PURE__*/
14630_curry1(function comparator(pred) {
14631  return function (a, b) {
14632    return pred(a, b) ? -1 : pred(b, a) ? 1 : 0;
14633  };
14634});
14635
14636module.exports = comparator;
14637
14638/***/ }),
14639
vendor: 1,179 bytes, lines 14640-14683
14640/***/ "./node_modules/ramda/src/complement.js":
14641/*!**********************************************!*\
14642  !*** ./node_modules/ramda/src/complement.js ***!
14643  \**********************************************/
14644/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14645
14646var lift =
14647/*#__PURE__*/
14648__webpack_require__(/*! ./lift.js */ "./node_modules/ramda/src/lift.js");
14649
14650var not =
14651/*#__PURE__*/
14652__webpack_require__(/*! ./not.js */ "./node_modules/ramda/src/not.js");
14653/**
14654 * Takes a function `f` and returns a function `g` such that if called with the same arguments
14655 * when `f` returns a "truthy" value, `g` returns `false` and when `f` returns a "falsy" value `g` returns `true`.
14656 *
14657 * `R.complement` may be applied to any functor
14658 *
14659 * @func
14660 * @memberOf R
14661 * @since v0.12.0
14662 * @category Logic
14663 * @sig (*... -> *) -> (*... -> Boolean)
14664 * @param {Function} f
14665 * @return {Function}
14666 * @see R.not
14667 * @example
14668 *
14669 *      const isNotNil = R.complement(R.isNil);
14670 *      R.isNil(null); //=> true
14671 *      isNotNil(null); //=> false
14672 *      R.isNil(7); //=> false
14673 *      isNotNil(7); //=> true
14674 */
14675
14676
14677var complement =
14678/*#__PURE__*/
14679lift(not);
14680module.exports = complement;
14681
14682/***/ }),
14683
vendor: 1,583 bytes, lines 14684-14735
14684/***/ "./node_modules/ramda/src/compose.js":
14685/*!*******************************************!*\
14686  !*** ./node_modules/ramda/src/compose.js ***!
14687  \*******************************************/
14688/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14689
14690var pipe =
14691/*#__PURE__*/
14692__webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/src/pipe.js");
14693
14694var reverse =
14695/*#__PURE__*/
14696__webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/src/reverse.js");
14697/**
14698 * Performs right-to-left function composition. The last argument may have
14699 * any arity; the remaining arguments must be unary.
14700 *
14701 * **Note:** The result of compose is not automatically curried.
14702 *
14703 * @func
14704 * @memberOf R
14705 * @since v0.1.0
14706 * @category Function
14707 * @sig ((y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)) -> ((a, b, ..., n) -> z)
14708 * @param {...Function} ...functions The functions to compose
14709 * @return {Function}
14710 * @see R.pipe
14711 * @example
14712 *
14713 *      const classyGreeting = (firstName, lastName) => "The name's " + lastName + ", " + firstName + " " + lastName
14714 *      const yellGreeting = R.compose(R.toUpper, classyGreeting);
14715 *      yellGreeting('James', 'Bond'); //=> "THE NAME'S BOND, JAMES BOND"
14716 *
14717 *      R.compose(Math.abs, R.add(1), R.multiply(2))(-4) //=> 7
14718 *
14719 * @symb R.compose(f, g, h)(a, b) = f(g(h(a, b)))
14720 * @symb R.compose(f, g, h)(a)(b) = f(g(h(a)))(b)
14721 */
14722
14723
14724function compose() {
14725  if (arguments.length === 0) {
14726    throw new Error('compose requires at least one argument');
14727  }
14728
14729  return pipe.apply(this, reverse(arguments));
14730}
14731
14732module.exports = compose;
14733
14734/***/ }),
14735
vendor: 1,748 bytes, lines 14736-14789
14736/***/ "./node_modules/ramda/src/composeWith.js":
14737/*!***********************************************!*\
14738  !*** ./node_modules/ramda/src/composeWith.js ***!
14739  \***********************************************/
14740/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14741
14742var _curry2 =
14743/*#__PURE__*/
14744__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14745
14746var pipeWith =
14747/*#__PURE__*/
14748__webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/src/pipeWith.js");
14749
14750var reverse =
14751/*#__PURE__*/
14752__webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/src/reverse.js");
14753/**
14754 * Performs right-to-left function composition using transforming function. The last function may have
14755 * any arity; the remaining functions must be unary.
14756 *
14757 * **Note:** The result of composeWith is not automatically curried. Transforming function is not used
14758 * on the last argument.
14759 *
14760 * @func
14761 * @memberOf R
14762 * @since v0.26.0
14763 * @category Function
14764 * @sig ((* -> *), [(y -> z), (x -> y), ..., (o -> p), ((a, b, ..., n) -> o)]) -> ((a, b, ..., n) -> z)
14765 * @param {Function} transformer The transforming function
14766 * @param {Array} functions The functions to compose
14767 * @return {Function}
14768 * @see R.compose, R.pipeWith
14769 * @example
14770 *
14771 *      const composeWhileNotNil = R.composeWith((f, res) => R.isNil(res) ? res : f(res));
14772 *
14773 *      composeWhileNotNil([R.inc, R.prop('age')])({age: 1}) //=> 2
14774 *      composeWhileNotNil([R.inc, R.prop('age')])({}) //=> undefined
14775 *
14776 * @symb R.composeWith(f)([g, h, i])(...args) = f(g, f(h, i(...args)))
14777 */
14778
14779
14780var composeWith =
14781/*#__PURE__*/
14782_curry2(function composeWith(xf, list) {
14783  return pipeWith.apply(this, [xf, reverse(list)]);
14784});
14785
14786module.exports = composeWith;
14787
14788/***/ }),
14789
vendor: 2,549 bytes, lines 14790-14878
14790/***/ "./node_modules/ramda/src/concat.js":
14791/*!******************************************!*\
14792  !*** ./node_modules/ramda/src/concat.js ***!
14793  \******************************************/
14794/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14795
14796var _curry2 =
14797/*#__PURE__*/
14798__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
14799
14800var _isArray =
14801/*#__PURE__*/
14802__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
14803
14804var _isFunction =
14805/*#__PURE__*/
14806__webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/src/internal/_isFunction.js");
14807
14808var _isString =
14809/*#__PURE__*/
14810__webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/src/internal/_isString.js");
14811
14812var toString =
14813/*#__PURE__*/
14814__webpack_require__(/*! ./toString.js */ "./node_modules/ramda/src/toString.js");
14815/**
14816 * Returns the result of concatenating the given lists or strings.
14817 *
14818 * Note: `R.concat` expects both arguments to be of the same type,
14819 * unlike the native `Array.prototype.concat` method. It will throw
14820 * an error if you `concat` an Array with a non-Array value.
14821 *
14822 * Dispatches to the `concat` method of the first argument, if present.
14823 * Can also concatenate two members of a [fantasy-land
14824 * compatible semigroup](https://github.com/fantasyland/fantasy-land#semigroup).
14825 *
14826 * @func
14827 * @memberOf R
14828 * @since v0.1.0
14829 * @category List
14830 * @sig [a] -> [a] -> [a]
14831 * @sig String -> String -> String
14832 * @param {Array|String} firstList The first list
14833 * @param {Array|String} secondList The second list
14834 * @return {Array|String} A list consisting of the elements of `firstList` followed by the elements of
14835 * `secondList`.
14836 *
14837 * @example
14838 *
14839 *      R.concat('ABC', 'DEF'); // 'ABCDEF'
14840 *      R.concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]
14841 *      R.concat([], []); //=> []
14842 */
14843
14844
14845var concat =
14846/*#__PURE__*/
14847_curry2(function concat(a, b) {
14848  if (_isArray(a)) {
14849    if (_isArray(b)) {
14850      return a.concat(b);
14851    }
14852
14853    throw new TypeError(toString(b) + ' is not an array');
14854  }
14855
14856  if (_isString(a)) {
14857    if (_isString(b)) {
14858      return a + b;
14859    }
14860
14861    throw new TypeError(toString(b) + ' is not a string');
14862  }
14863
14864  if (a != null && _isFunction(a['fantasy-land/concat'])) {
14865    return a['fantasy-land/concat'](b);
14866  }
14867
14868  if (a != null && _isFunction(a.concat)) {
14869    return a.concat(b);
14870  }
14871
14872  throw new TypeError(toString(a) + ' does not have a method named "concat" or "fantasy-land/concat"');
14873});
14874
14875module.exports = concat;
14876
14877/***/ }),
14878
vendor: 2,479 bytes, lines 14879-14959
14879/***/ "./node_modules/ramda/src/cond.js":
14880/*!****************************************!*\
14881  !*** ./node_modules/ramda/src/cond.js ***!
14882  \****************************************/
14883/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14884
14885var _arity =
14886/*#__PURE__*/
14887__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
14888
14889var _curry1 =
14890/*#__PURE__*/
14891__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14892
14893var map =
14894/*#__PURE__*/
14895__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
14896
14897var max =
14898/*#__PURE__*/
14899__webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
14900
14901var reduce =
14902/*#__PURE__*/
14903__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
14904/**
14905 * Returns a function, `fn`, which encapsulates `if/else, if/else, ...` logic.
14906 * `R.cond` takes a list of [predicate, transformer] pairs. All of the arguments
14907 * to `fn` are applied to each of the predicates in turn until one returns a
14908 * "truthy" value, at which point `fn` returns the result of applying its
14909 * arguments to the corresponding transformer. If none of the predicates
14910 * matches, `fn` returns undefined.
14911 *
14912 * **Please note**: This is not a direct substitute for a `switch` statement.
14913 * Remember that both elements of every pair passed to `cond` are *functions*,
14914 * and `cond` returns a function.
14915 *
14916 * @func
14917 * @memberOf R
14918 * @since v0.6.0
14919 * @category Logic
14920 * @sig [[(*... -> Boolean),(*... -> *)]] -> (*... -> *)
14921 * @param {Array} pairs A list of [predicate, transformer]
14922 * @return {Function}
14923 * @see R.ifElse, R.unless, R.when
14924 * @example
14925 *
14926 *      const fn = R.cond([
14927 *        [R.equals(0),   R.always('water freezes at 0°C')],
14928 *        [R.equals(100), R.always('water boils at 100°C')],
14929 *        [R.T,           temp => 'nothing special happens at ' + temp + '°C']
14930 *      ]);
14931 *      fn(0); //=> 'water freezes at 0°C'
14932 *      fn(50); //=> 'nothing special happens at 50°C'
14933 *      fn(100); //=> 'water boils at 100°C'
14934 */
14935
14936
14937var cond =
14938/*#__PURE__*/
14939_curry1(function cond(pairs) {
14940  var arity = reduce(max, 0, map(function (pair) {
14941    return pair[0].length;
14942  }, pairs));
14943  return _arity(arity, function () {
14944    var idx = 0;
14945
14946    while (idx < pairs.length) {
14947      if (pairs[idx][0].apply(this, arguments)) {
14948        return pairs[idx][1].apply(this, arguments);
14949      }
14950
14951      idx += 1;
14952    }
14953  });
14954});
14955
14956module.exports = cond;
14957
14958/***/ }),
14959
vendor: 1,750 bytes, lines 14960-15016
14960/***/ "./node_modules/ramda/src/construct.js":
14961/*!*********************************************!*\
14962  !*** ./node_modules/ramda/src/construct.js ***!
14963  \*********************************************/
14964/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
14965
14966var _curry1 =
14967/*#__PURE__*/
14968__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
14969
14970var constructN =
14971/*#__PURE__*/
14972__webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/src/constructN.js");
14973/**
14974 * Wraps a constructor function inside a curried function that can be called
14975 * with the same arguments and returns the same type.
14976 *
14977 * @func
14978 * @memberOf R
14979 * @since v0.1.0
14980 * @category Function
14981 * @sig (* -> {*}) -> (* -> {*})
14982 * @param {Function} fn The constructor function to wrap.
14983 * @return {Function} A wrapped, curried constructor function.
14984 * @see R.invoker
14985 * @example
14986 *
14987 *      // Constructor function
14988 *      function Animal(kind) {
14989 *        this.kind = kind;
14990 *      };
14991 *      Animal.prototype.sighting = function() {
14992 *        return "It's a " + this.kind + "!";
14993 *      }
14994 *
14995 *      const AnimalConstructor = R.construct(Animal)
14996 *
14997 *      // Notice we no longer need the 'new' keyword:
14998 *      AnimalConstructor('Pig'); //=> {"kind": "Pig", "sighting": function (){...}};
14999 *
15000 *      const animalTypes = ["Lion", "Tiger", "Bear"];
15001 *      const animalSighting = R.invoker(0, 'sighting');
15002 *      const sightNewAnimal = R.compose(animalSighting, AnimalConstructor);
15003 *      R.map(sightNewAnimal, animalTypes); //=> ["It's a Lion!", "It's a Tiger!", "It's a Bear!"]
15004 */
15005
15006
15007var construct =
15008/*#__PURE__*/
15009_curry1(function construct(Fn) {
15010  return constructN(Fn.length, Fn);
15011});
15012
15013module.exports = construct;
15014
15015/***/ }),
15016
vendor: 2,869 bytes, lines 15017-15122
15017/***/ "./node_modules/ramda/src/constructN.js":
15018/*!**********************************************!*\
15019  !*** ./node_modules/ramda/src/constructN.js ***!
15020  \**********************************************/
15021/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15022
15023var _curry2 =
15024/*#__PURE__*/
15025__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15026
15027var curry =
15028/*#__PURE__*/
15029__webpack_require__(/*! ./curry.js */ "./node_modules/ramda/src/curry.js");
15030
15031var nAry =
15032/*#__PURE__*/
15033__webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/src/nAry.js");
15034/**
15035 * Wraps a constructor function inside a curried function that can be called
15036 * with the same arguments and returns the same type. The arity of the function
15037 * returned is specified to allow using variadic constructor functions.
15038 *
15039 * @func
15040 * @memberOf R
15041 * @since v0.4.0
15042 * @category Function
15043 * @sig Number -> (* -> {*}) -> (* -> {*})
15044 * @param {Number} n The arity of the constructor function.
15045 * @param {Function} Fn The constructor function to wrap.
15046 * @return {Function} A wrapped, curried constructor function.
15047 * @example
15048 *
15049 *      // Variadic Constructor function
15050 *      function Salad() {
15051 *        this.ingredients = arguments;
15052 *      }
15053 *
15054 *      Salad.prototype.recipe = function() {
15055 *        const instructions = R.map(ingredient => 'Add a dollop of ' + ingredient, this.ingredients);
15056 *        return R.join('\n', instructions);
15057 *      };
15058 *
15059 *      const ThreeLayerSalad = R.constructN(3, Salad);
15060 *
15061 *      // Notice we no longer need the 'new' keyword, and the constructor is curried for 3 arguments.
15062 *      const salad = ThreeLayerSalad('Mayonnaise')('Potato Chips')('Ketchup');
15063 *
15064 *      console.log(salad.recipe());
15065 *      // Add a dollop of Mayonnaise
15066 *      // Add a dollop of Potato Chips
15067 *      // Add a dollop of Ketchup
15068 */
15069
15070
15071var constructN =
15072/*#__PURE__*/
15073_curry2(function constructN(n, Fn) {
15074  if (n > 10) {
15075    throw new Error('Constructor with greater than ten arguments');
15076  }
15077
15078  if (n === 0) {
15079    return function () {
15080      return new Fn();
15081    };
15082  }
15083
15084  return curry(nAry(n, function ($0, $1, $2, $3, $4, $5, $6, $7, $8, $9) {
15085    switch (arguments.length) {
15086      case 1:
15087        return new Fn($0);
15088
15089      case 2:
15090        return new Fn($0, $1);
15091
15092      case 3:
15093        return new Fn($0, $1, $2);
15094
15095      case 4:
15096        return new Fn($0, $1, $2, $3);
15097
15098      case 5:
15099        return new Fn($0, $1, $2, $3, $4);
15100
15101      case 6:
15102        return new Fn($0, $1, $2, $3, $4, $5);
15103
15104      case 7:
15105        return new Fn($0, $1, $2, $3, $4, $5, $6);
15106
15107      case 8:
15108        return new Fn($0, $1, $2, $3, $4, $5, $6, $7);
15109
15110      case 9:
15111        return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8);
15112
15113      case 10:
15114        return new Fn($0, $1, $2, $3, $4, $5, $6, $7, $8, $9);
15115    }
15116  }));
15117});
15118
15119module.exports = constructN;
15120
15121/***/ }),
15122
vendor: 2,439 bytes, lines 15123-15197
15123/***/ "./node_modules/ramda/src/converge.js":
15124/*!********************************************!*\
15125  !*** ./node_modules/ramda/src/converge.js ***!
15126  \********************************************/
15127/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15128
15129var _curry2 =
15130/*#__PURE__*/
15131__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15132
15133var _map =
15134/*#__PURE__*/
15135__webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/src/internal/_map.js");
15136
15137var curryN =
15138/*#__PURE__*/
15139__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
15140
15141var max =
15142/*#__PURE__*/
15143__webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
15144
15145var pluck =
15146/*#__PURE__*/
15147__webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/src/pluck.js");
15148
15149var reduce =
15150/*#__PURE__*/
15151__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
15152/**
15153 * Accepts a converging function and a list of branching functions and returns
15154 * a new function. The arity of the new function is the same as the arity of
15155 * the longest branching function. When invoked, this new function is applied
15156 * to some arguments, and each branching function is applied to those same
15157 * arguments. The results of each branching function are passed as arguments
15158 * to the converging function to produce the return value.
15159 *
15160 * @func
15161 * @memberOf R
15162 * @since v0.4.2
15163 * @category Function
15164 * @sig ((x1, x2, ...) -> z) -> [((a, b, ...) -> x1), ((a, b, ...) -> x2), ...] -> (a -> b -> ... -> z)
15165 * @param {Function} after A function. `after` will be invoked with the return values of
15166 *        `fn1` and `fn2` as its arguments.
15167 * @param {Array} functions A list of functions.
15168 * @return {Function} A new function.
15169 * @see R.useWith
15170 * @example
15171 *
15172 *      const average = R.converge(R.divide, [R.sum, R.length])
15173 *      average([1, 2, 3, 4, 5, 6, 7]) //=> 4
15174 *
15175 *      const strangeConcat = R.converge(R.concat, [R.toUpper, R.toLower])
15176 *      strangeConcat("Yodel") //=> "YODELyodel"
15177 *
15178 * @symb R.converge(f, [g, h])(a, b) = f(g(a, b), h(a, b))
15179 */
15180
15181
15182var converge =
15183/*#__PURE__*/
15184_curry2(function converge(after, fns) {
15185  return curryN(reduce(max, 0, pluck('length', fns)), function () {
15186    var args = arguments;
15187    var context = this;
15188    return after.apply(context, _map(function (fn) {
15189      return fn.apply(context, args);
15190    }, fns));
15191  });
15192});
15193
15194module.exports = converge;
15195
15196/***/ }),
15197
vendor: 1,129 bytes, lines 15198-15240
15198/***/ "./node_modules/ramda/src/count.js":
15199/*!*****************************************!*\
15200  !*** ./node_modules/ramda/src/count.js ***!
15201  \*****************************************/
15202/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15203
15204var _reduce =
15205/*#__PURE__*/
15206__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
15207
15208var curry =
15209/*#__PURE__*/
15210__webpack_require__(/*! ./curry.js */ "./node_modules/ramda/src/curry.js");
15211/**
15212 * Returns the number of items in a given `list` matching the predicate `f`
15213 *
15214 * @func
15215 * @memberOf R
15216 * @since v0.28.0
15217 * @category List
15218 * @sig (a -> Boolean) -> [a] -> Number
15219 * @param {Function} predicate to match items against
15220 * @return {Array} list of items to count in
15221 * @example
15222 *
15223 *      const even = x => x % 2 == 0;
15224 *
15225 *      R.count(even, [1, 2, 3, 4, 5]); // => 2
15226 *      R.map(R.count(even), [[1, 1, 1], [2, 3, 4, 5], [6]]); // => [0, 2, 1]
15227 */
15228
15229
15230var count =
15231/*#__PURE__*/
15232curry(function (pred, list) {
15233  return _reduce(function (a, e) {
15234    return pred(e) ? a + 1 : a;
15235  }, 0, list);
15236});
15237module.exports = count;
15238
15239/***/ }),
15240
vendor: 1,455 bytes, lines 15241-15284
15241/***/ "./node_modules/ramda/src/countBy.js":
15242/*!*******************************************!*\
15243  !*** ./node_modules/ramda/src/countBy.js ***!
15244  \*******************************************/
15245/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15246
15247var reduceBy =
15248/*#__PURE__*/
15249__webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/src/reduceBy.js");
15250/**
15251 * Counts the elements of a list according to how many match each value of a
15252 * key generated by the supplied function. Returns an object mapping the keys
15253 * produced by `fn` to the number of occurrences in the list. Note that all
15254 * keys are coerced to strings because of how JavaScript objects work.
15255 *
15256 * Acts as a transducer if a transformer is given in list position.
15257 *
15258 * @func
15259 * @memberOf R
15260 * @since v0.1.0
15261 * @category Relation
15262 * @sig (a -> String) -> [a] -> {*}
15263 * @param {Function} fn The function used to map values to keys.
15264 * @param {Array} list The list to count elements from.
15265 * @return {Object} An object mapping keys to number of occurrences in the list.
15266 * @example
15267 *
15268 *      const numbers = [1.0, 1.1, 1.2, 2.0, 3.0, 2.2];
15269 *      R.countBy(Math.floor)(numbers);    //=> {'1': 3, '2': 2, '3': 1}
15270 *
15271 *      const letters = ['a', 'b', 'A', 'a', 'B', 'c'];
15272 *      R.countBy(R.toLower)(letters);   //=> {'a': 3, 'b': 2, 'c': 1}
15273 */
15274
15275
15276var countBy =
15277/*#__PURE__*/
15278reduceBy(function (acc, elem) {
15279  return acc + 1;
15280}, 0);
15281module.exports = countBy;
15282
15283/***/ }),
15284
vendor: 1,854 bytes, lines 15285-15350
15285/***/ "./node_modules/ramda/src/curry.js":
15286/*!*****************************************!*\
15287  !*** ./node_modules/ramda/src/curry.js ***!
15288  \*****************************************/
15289/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15290
15291var _curry1 =
15292/*#__PURE__*/
15293__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
15294
15295var curryN =
15296/*#__PURE__*/
15297__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
15298/**
15299 * Returns a curried equivalent of the provided function. The curried function
15300 * has two unusual capabilities. First, its arguments needn't be provided one
15301 * at a time. If `f` is a ternary function and `g` is `R.curry(f)`, the
15302 * following are equivalent:
15303 *
15304 *   - `g(1)(2)(3)`
15305 *   - `g(1)(2, 3)`
15306 *   - `g(1, 2)(3)`
15307 *   - `g(1, 2, 3)`
15308 *
15309 * Secondly, the special placeholder value [`R.__`](#__) may be used to specify
15310 * "gaps", allowing partial application of any combination of arguments,
15311 * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),
15312 * the following are equivalent:
15313 *
15314 *   - `g(1, 2, 3)`
15315 *   - `g(_, 2, 3)(1)`
15316 *   - `g(_, _, 3)(1)(2)`
15317 *   - `g(_, _, 3)(1, 2)`
15318 *   - `g(_, 2)(1)(3)`
15319 *   - `g(_, 2)(1, 3)`
15320 *   - `g(_, 2)(_, 3)(1)`
15321 *
15322 * @func
15323 * @memberOf R
15324 * @since v0.1.0
15325 * @category Function
15326 * @sig (* -> a) -> (* -> a)
15327 * @param {Function} fn The function to curry.
15328 * @return {Function} A new, curried function.
15329 * @see R.curryN, R.partial
15330 * @example
15331 *
15332 *      const addFourNumbers = (a, b, c, d) => a + b + c + d;
15333 *
15334 *      const curriedAddFourNumbers = R.curry(addFourNumbers);
15335 *      const f = curriedAddFourNumbers(1, 2);
15336 *      const g = f(3);
15337 *      g(4); //=> 10
15338 */
15339
15340
15341var curry =
15342/*#__PURE__*/
15343_curry1(function curry(fn) {
15344  return curryN(fn.length, fn);
15345});
15346
15347module.exports = curry;
15348
15349/***/ }),
15350
vendor: 2,256 bytes, lines 15351-15429
15351/***/ "./node_modules/ramda/src/curryN.js":
15352/*!******************************************!*\
15353  !*** ./node_modules/ramda/src/curryN.js ***!
15354  \******************************************/
15355/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15356
15357var _arity =
15358/*#__PURE__*/
15359__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
15360
15361var _curry1 =
15362/*#__PURE__*/
15363__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
15364
15365var _curry2 =
15366/*#__PURE__*/
15367__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15368
15369var _curryN =
15370/*#__PURE__*/
15371__webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
15372/**
15373 * Returns a curried equivalent of the provided function, with the specified
15374 * arity. The curried function has two unusual capabilities. First, its
15375 * arguments needn't be provided one at a time. If `g` is `R.curryN(3, f)`, the
15376 * following are equivalent:
15377 *
15378 *   - `g(1)(2)(3)`
15379 *   - `g(1)(2, 3)`
15380 *   - `g(1, 2)(3)`
15381 *   - `g(1, 2, 3)`
15382 *
15383 * Secondly, the special placeholder value [`R.__`](#__) may be used to specify
15384 * "gaps", allowing partial application of any combination of arguments,
15385 * regardless of their positions. If `g` is as above and `_` is [`R.__`](#__),
15386 * the following are equivalent:
15387 *
15388 *   - `g(1, 2, 3)`
15389 *   - `g(_, 2, 3)(1)`
15390 *   - `g(_, _, 3)(1)(2)`
15391 *   - `g(_, _, 3)(1, 2)`
15392 *   - `g(_, 2)(1)(3)`
15393 *   - `g(_, 2)(1, 3)`
15394 *   - `g(_, 2)(_, 3)(1)`
15395 *
15396 * @func
15397 * @memberOf R
15398 * @since v0.5.0
15399 * @category Function
15400 * @sig Number -> (* -> a) -> (* -> a)
15401 * @param {Number} length The arity for the returned function.
15402 * @param {Function} fn The function to curry.
15403 * @return {Function} A new, curried function.
15404 * @see R.curry
15405 * @example
15406 *
15407 *      const sumArgs = (...args) => R.sum(args);
15408 *
15409 *      const curriedAddFourNumbers = R.curryN(4, sumArgs);
15410 *      const f = curriedAddFourNumbers(1, 2);
15411 *      const g = f(3);
15412 *      g(4); //=> 10
15413 */
15414
15415
15416var curryN =
15417/*#__PURE__*/
15418_curry2(function curryN(length, fn) {
15419  if (length === 1) {
15420    return _curry1(fn);
15421  }
15422
15423  return _arity(length, _curryN(length, [], fn));
15424});
15425
15426module.exports = curryN;
15427
15428/***/ }),
15429
vendor: 635 bytes, lines 15430-15462
15430/***/ "./node_modules/ramda/src/dec.js":
15431/*!***************************************!*\
15432  !*** ./node_modules/ramda/src/dec.js ***!
15433  \***************************************/
15434/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15435
15436var add =
15437/*#__PURE__*/
15438__webpack_require__(/*! ./add.js */ "./node_modules/ramda/src/add.js");
15439/**
15440 * Decrements its argument.
15441 *
15442 * @func
15443 * @memberOf R
15444 * @since v0.9.0
15445 * @category Math
15446 * @sig Number -> Number
15447 * @param {Number} n
15448 * @return {Number} n - 1
15449 * @see R.inc
15450 * @example
15451 *
15452 *      R.dec(42); //=> 41
15453 */
15454
15455
15456var dec =
15457/*#__PURE__*/
15458add(-1);
15459module.exports = dec;
15460
15461/***/ }),
15462
vendor: 1,330 bytes, lines 15463-15506
15463/***/ "./node_modules/ramda/src/defaultTo.js":
15464/*!*********************************************!*\
15465  !*** ./node_modules/ramda/src/defaultTo.js ***!
15466  \*********************************************/
15467/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15468
15469var _curry2 =
15470/*#__PURE__*/
15471__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15472/**
15473 * Returns the second argument if it is not `null`, `undefined` or `NaN`;
15474 * otherwise the first argument is returned.
15475 *
15476 * @func
15477 * @memberOf R
15478 * @since v0.10.0
15479 * @category Logic
15480 * @sig a -> b -> a | b
15481 * @param {a} default The default value.
15482 * @param {b} val `val` will be returned instead of `default` unless `val` is `null`, `undefined` or `NaN`.
15483 * @return {*} The second value if it is not `null`, `undefined` or `NaN`, otherwise the default value
15484 * @example
15485 *
15486 *      const defaultTo42 = R.defaultTo(42);
15487 *
15488 *      defaultTo42(null);  //=> 42
15489 *      defaultTo42(undefined);  //=> 42
15490 *      defaultTo42(false);  //=> false
15491 *      defaultTo42('Ramda');  //=> 'Ramda'
15492 *      // parseInt('string') results in NaN
15493 *      defaultTo42(parseInt('string')); //=> 42
15494 */
15495
15496
15497var defaultTo =
15498/*#__PURE__*/
15499_curry2(function defaultTo(d, v) {
15500  return v == null || v !== v ? d : v;
15501});
15502
15503module.exports = defaultTo;
15504
15505/***/ }),
15506
vendor: 1,472 bytes, lines 15507-15554
15507/***/ "./node_modules/ramda/src/descend.js":
15508/*!*******************************************!*\
15509  !*** ./node_modules/ramda/src/descend.js ***!
15510  \*******************************************/
15511/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15512
15513var _curry3 =
15514/*#__PURE__*/
15515__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
15516/**
15517 * Makes a descending comparator function out of a function that returns a value
15518 * that can be compared with `<` and `>`.
15519 *
15520 * @func
15521 * @memberOf R
15522 * @since v0.23.0
15523 * @category Function
15524 * @sig Ord b => (a -> b) -> a -> a -> Number
15525 * @param {Function} fn A function of arity one that returns a value that can be compared
15526 * @param {*} a The first item to be compared.
15527 * @param {*} b The second item to be compared.
15528 * @return {Number} `-1` if fn(a) > fn(b), `1` if fn(b) > fn(a), otherwise `0`
15529 * @see R.ascend
15530 * @example
15531 *
15532 *      const byAge = R.descend(R.prop('age'));
15533 *      const people = [
15534 *        { name: 'Emma', age: 70 },
15535 *        { name: 'Peter', age: 78 },
15536 *        { name: 'Mikhail', age: 62 },
15537 *      ];
15538 *      const peopleByOldestFirst = R.sort(byAge, people);
15539 *        //=> [{ name: 'Peter', age: 78 }, { name: 'Emma', age: 70 }, { name: 'Mikhail', age: 62 }]
15540 */
15541
15542
15543var descend =
15544/*#__PURE__*/
15545_curry3(function descend(fn, a, b) {
15546  var aa = fn(a);
15547  var bb = fn(b);
15548  return aa > bb ? -1 : aa < bb ? 1 : 0;
15549});
15550
15551module.exports = descend;
15552
15553/***/ }),
15554
vendor: 1,723 bytes, lines 15555-15617
15555/***/ "./node_modules/ramda/src/difference.js":
15556/*!**********************************************!*\
15557  !*** ./node_modules/ramda/src/difference.js ***!
15558  \**********************************************/
15559/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15560
15561var _curry2 =
15562/*#__PURE__*/
15563__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15564
15565var _Set =
15566/*#__PURE__*/
15567__webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/src/internal/_Set.js");
15568/**
15569 * Finds the set (i.e. no duplicates) of all elements in the first list not
15570 * contained in the second list. Objects and Arrays are compared in terms of
15571 * value equality, not reference equality.
15572 *
15573 * @func
15574 * @memberOf R
15575 * @since v0.1.0
15576 * @category Relation
15577 * @sig [*] -> [*] -> [*]
15578 * @param {Array} list1 The first list.
15579 * @param {Array} list2 The second list.
15580 * @return {Array} The elements in `list1` that are not in `list2`.
15581 * @see R.differenceWith, R.symmetricDifference, R.symmetricDifferenceWith, R.without
15582 * @example
15583 *
15584 *      R.difference([1,2,3,4], [7,6,5,4,3]); //=> [1,2]
15585 *      R.difference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5]
15586 *      R.difference([{a: 1}, {b: 2}], [{a: 1}, {c: 3}]) //=> [{b: 2}]
15587 */
15588
15589
15590var difference =
15591/*#__PURE__*/
15592_curry2(function difference(first, second) {
15593  var out = [];
15594  var idx = 0;
15595  var firstLen = first.length;
15596  var secondLen = second.length;
15597  var toFilterOut = new _Set();
15598
15599  for (var i = 0; i < secondLen; i += 1) {
15600    toFilterOut.add(second[i]);
15601  }
15602
15603  while (idx < firstLen) {
15604    if (toFilterOut.add(first[idx])) {
15605      out[out.length] = first[idx];
15606    }
15607
15608    idx += 1;
15609  }
15610
15611  return out;
15612});
15613
15614module.exports = difference;
15615
15616/***/ }),
15617
vendor: 1,803 bytes, lines 15618-15676
15618/***/ "./node_modules/ramda/src/differenceWith.js":
15619/*!**************************************************!*\
15620  !*** ./node_modules/ramda/src/differenceWith.js ***!
15621  \**************************************************/
15622/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15623
15624var _includesWith =
15625/*#__PURE__*/
15626__webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/src/internal/_includesWith.js");
15627
15628var _curry3 =
15629/*#__PURE__*/
15630__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
15631/**
15632 * Finds the set (i.e. no duplicates) of all elements in the first list not
15633 * contained in the second list. Duplication is determined according to the
15634 * value returned by applying the supplied predicate to two list elements.
15635 *
15636 * @func
15637 * @memberOf R
15638 * @since v0.1.0
15639 * @category Relation
15640 * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]
15641 * @param {Function} pred A predicate used to test whether two items are equal.
15642 * @param {Array} list1 The first list.
15643 * @param {Array} list2 The second list.
15644 * @return {Array} The elements in `list1` that are not in `list2`.
15645 * @see R.difference, R.symmetricDifference, R.symmetricDifferenceWith
15646 * @example
15647 *
15648 *      const cmp = (x, y) => x.a === y.a;
15649 *      const l1 = [{a: 1}, {a: 2}, {a: 3}];
15650 *      const l2 = [{a: 3}, {a: 4}];
15651 *      R.differenceWith(cmp, l1, l2); //=> [{a: 1}, {a: 2}]
15652 */
15653
15654
15655var differenceWith =
15656/*#__PURE__*/
15657_curry3(function differenceWith(pred, first, second) {
15658  var out = [];
15659  var idx = 0;
15660  var firstLen = first.length;
15661
15662  while (idx < firstLen) {
15663    if (!_includesWith(pred, first[idx], second) && !_includesWith(pred, first[idx], out)) {
15664      out.push(first[idx]);
15665    }
15666
15667    idx += 1;
15668  }
15669
15670  return out;
15671});
15672
15673module.exports = differenceWith;
15674
15675/***/ }),
15676
vendor: 1,116 bytes, lines 15677-15717
15677/***/ "./node_modules/ramda/src/dissoc.js":
15678/*!******************************************!*\
15679  !*** ./node_modules/ramda/src/dissoc.js ***!
15680  \******************************************/
15681/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15682
15683var _curry2 =
15684/*#__PURE__*/
15685__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15686
15687var dissocPath =
15688/*#__PURE__*/
15689__webpack_require__(/*! ./dissocPath.js */ "./node_modules/ramda/src/dissocPath.js");
15690/**
15691 * Returns a new object that does not contain a `prop` property.
15692 *
15693 * @func
15694 * @memberOf R
15695 * @since v0.10.0
15696 * @category Object
15697 * @sig String -> {k: v} -> {k: v}
15698 * @param {String} prop The name of the property to dissociate
15699 * @param {Object} obj The object to clone
15700 * @return {Object} A new object equivalent to the original but without the specified property
15701 * @see R.assoc, R.omit
15702 * @example
15703 *
15704 *      R.dissoc('b', {a: 1, b: 2, c: 3}); //=> {a: 1, c: 3}
15705 */
15706
15707
15708var dissoc =
15709/*#__PURE__*/
15710_curry2(function dissoc(prop, obj) {
15711  return dissocPath([prop], obj);
15712});
15713
15714module.exports = dissoc;
15715
15716/***/ }),
15717
vendor: 2,649 bytes, lines 15718-15819
15718/***/ "./node_modules/ramda/src/dissocPath.js":
15719/*!**********************************************!*\
15720  !*** ./node_modules/ramda/src/dissocPath.js ***!
15721  \**********************************************/
15722/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15723
15724var _curry2 =
15725/*#__PURE__*/
15726__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15727
15728var _dissoc =
15729/*#__PURE__*/
15730__webpack_require__(/*! ./internal/_dissoc.js */ "./node_modules/ramda/src/internal/_dissoc.js");
15731
15732var _isInteger =
15733/*#__PURE__*/
15734__webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
15735
15736var _isArray =
15737/*#__PURE__*/
15738__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
15739
15740var assoc =
15741/*#__PURE__*/
15742__webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/src/assoc.js");
15743/**
15744 * Makes a shallow clone of an object. Note that this copies and flattens
15745 * prototype properties onto the new object as well. All non-primitive
15746 * properties are copied by reference.
15747 *
15748 * @private
15749 * @param {String|Integer} prop The prop operating
15750 * @param {Object|Array} obj The object to clone
15751 * @return {Object|Array} A new object equivalent to the original.
15752 */
15753
15754
15755function _shallowCloneObject(prop, obj) {
15756  if (_isInteger(prop) && _isArray(obj)) {
15757    return [].concat(obj);
15758  }
15759
15760  var result = {};
15761
15762  for (var p in obj) {
15763    result[p] = obj[p];
15764  }
15765
15766  return result;
15767}
15768/**
15769 * Makes a shallow clone of an object, omitting the property at the given path.
15770 * Note that this copies and flattens prototype properties onto the new object
15771 * as well. All non-primitive properties are copied by reference.
15772 *
15773 * @func
15774 * @memberOf R
15775 * @since v0.11.0
15776 * @category Object
15777 * @typedefn Idx = String | Int | Symbol
15778 * @sig [Idx] -> {k: v} -> {k: v}
15779 * @param {Array} path The path to the value to omit
15780 * @param {Object} obj The object to clone
15781 * @return {Object} A new object without the property at path
15782 * @see R.assocPath
15783 * @example
15784 *
15785 *      R.dissocPath(['a', 'b', 'c'], {a: {b: {c: 42}}}); //=> {a: {b: {}}}
15786 */
15787
15788
15789var dissocPath =
15790/*#__PURE__*/
15791_curry2(function dissocPath(path, obj) {
15792  if (obj == null) {
15793    return obj;
15794  }
15795
15796  switch (path.length) {
15797    case 0:
15798      return obj;
15799
15800    case 1:
15801      return _dissoc(path[0], obj);
15802
15803    default:
15804      var head = path[0];
15805      var tail = Array.prototype.slice.call(path, 1);
15806
15807      if (obj[head] == null) {
15808        return _shallowCloneObject(head, obj);
15809      } else {
15810        return assoc(head, dissocPath(tail, obj[head]), obj);
15811      }
15812
15813  }
15814});
15815
15816module.exports = dissocPath;
15817
15818/***/ }),
15819
vendor: 991 bytes, lines 15820-15862
15820/***/ "./node_modules/ramda/src/divide.js":
15821/*!******************************************!*\
15822  !*** ./node_modules/ramda/src/divide.js ***!
15823  \******************************************/
15824/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15825
15826var _curry2 =
15827/*#__PURE__*/
15828__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15829/**
15830 * Divides two numbers. Equivalent to `a / b`.
15831 *
15832 * @func
15833 * @memberOf R
15834 * @since v0.1.0
15835 * @category Math
15836 * @sig Number -> Number -> Number
15837 * @param {Number} a The first value.
15838 * @param {Number} b The second value.
15839 * @return {Number} The result of `a / b`.
15840 * @see R.multiply
15841 * @example
15842 *
15843 *      R.divide(71, 100); //=> 0.71
15844 *
15845 *      const half = R.divide(R.__, 2);
15846 *      half(42); //=> 21
15847 *
15848 *      const reciprocal = R.divide(1);
15849 *      reciprocal(4);   //=> 0.25
15850 */
15851
15852
15853var divide =
15854/*#__PURE__*/
15855_curry2(function divide(a, b) {
15856  return a / b;
15857});
15858
15859module.exports = divide;
15860
15861/***/ }),
15862
vendor: 1,716 bytes, lines 15863-15921
15863/***/ "./node_modules/ramda/src/drop.js":
15864/*!****************************************!*\
15865  !*** ./node_modules/ramda/src/drop.js ***!
15866  \****************************************/
15867/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15868
15869var _curry2 =
15870/*#__PURE__*/
15871__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15872
15873var _dispatchable =
15874/*#__PURE__*/
15875__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
15876
15877var _xdrop =
15878/*#__PURE__*/
15879__webpack_require__(/*! ./internal/_xdrop.js */ "./node_modules/ramda/src/internal/_xdrop.js");
15880
15881var slice =
15882/*#__PURE__*/
15883__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
15884/**
15885 * Returns all but the first `n` elements of the given list, string, or
15886 * transducer/transformer (or object with a `drop` method).
15887 *
15888 * Dispatches to the `drop` method of the second argument, if present.
15889 *
15890 * @func
15891 * @memberOf R
15892 * @since v0.1.0
15893 * @category List
15894 * @sig Number -> [a] -> [a]
15895 * @sig Number -> String -> String
15896 * @param {Number} n
15897 * @param {*} list
15898 * @return {*} A copy of list without the first `n` elements
15899 * @see R.take, R.transduce, R.dropLast, R.dropWhile
15900 * @example
15901 *
15902 *      R.drop(1, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']
15903 *      R.drop(2, ['foo', 'bar', 'baz']); //=> ['baz']
15904 *      R.drop(3, ['foo', 'bar', 'baz']); //=> []
15905 *      R.drop(4, ['foo', 'bar', 'baz']); //=> []
15906 *      R.drop(3, 'ramda');               //=> 'da'
15907 */
15908
15909
15910var drop =
15911/*#__PURE__*/
15912_curry2(
15913/*#__PURE__*/
15914_dispatchable(['drop'], _xdrop, function drop(n, xs) {
15915  return slice(Math.max(0, n), Infinity, xs);
15916}));
15917
15918module.exports = drop;
15919
15920/***/ }),
15921
vendor: 1,793 bytes, lines 15922-15977
15922/***/ "./node_modules/ramda/src/dropLast.js":
15923/*!********************************************!*\
15924  !*** ./node_modules/ramda/src/dropLast.js ***!
15925  \********************************************/
15926/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15927
15928var _curry2 =
15929/*#__PURE__*/
15930__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15931
15932var _dispatchable =
15933/*#__PURE__*/
15934__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
15935
15936var _dropLast =
15937/*#__PURE__*/
15938__webpack_require__(/*! ./internal/_dropLast.js */ "./node_modules/ramda/src/internal/_dropLast.js");
15939
15940var _xdropLast =
15941/*#__PURE__*/
15942__webpack_require__(/*! ./internal/_xdropLast.js */ "./node_modules/ramda/src/internal/_xdropLast.js");
15943/**
15944 * Returns a list containing all but the last `n` elements of the given `list`.
15945 *
15946 * Acts as a transducer if a transformer is given in list position.
15947 *
15948 * @func
15949 * @memberOf R
15950 * @since v0.16.0
15951 * @category List
15952 * @sig Number -> [a] -> [a]
15953 * @sig Number -> String -> String
15954 * @param {Number} n The number of elements of `list` to skip.
15955 * @param {Array} list The list of elements to consider.
15956 * @return {Array} A copy of the list with only the first `list.length - n` elements
15957 * @see R.takeLast, R.drop, R.dropWhile, R.dropLastWhile
15958 * @example
15959 *
15960 *      R.dropLast(1, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']
15961 *      R.dropLast(2, ['foo', 'bar', 'baz']); //=> ['foo']
15962 *      R.dropLast(3, ['foo', 'bar', 'baz']); //=> []
15963 *      R.dropLast(4, ['foo', 'bar', 'baz']); //=> []
15964 *      R.dropLast(3, 'ramda');               //=> 'ra'
15965 */
15966
15967
15968var dropLast =
15969/*#__PURE__*/
15970_curry2(
15971/*#__PURE__*/
15972_dispatchable([], _xdropLast, _dropLast));
15973
15974module.exports = dropLast;
15975
15976/***/ }),
15977
vendor: 2,062 bytes, lines 15978-16037
15978/***/ "./node_modules/ramda/src/dropLastWhile.js":
15979/*!*************************************************!*\
15980  !*** ./node_modules/ramda/src/dropLastWhile.js ***!
15981  \*************************************************/
15982/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
15983
15984var _curry2 =
15985/*#__PURE__*/
15986__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
15987
15988var _dispatchable =
15989/*#__PURE__*/
15990__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
15991
15992var _dropLastWhile =
15993/*#__PURE__*/
15994__webpack_require__(/*! ./internal/_dropLastWhile.js */ "./node_modules/ramda/src/internal/_dropLastWhile.js");
15995
15996var _xdropLastWhile =
15997/*#__PURE__*/
15998__webpack_require__(/*! ./internal/_xdropLastWhile.js */ "./node_modules/ramda/src/internal/_xdropLastWhile.js");
15999/**
16000 * Returns a new list excluding all the tailing elements of a given list which
16001 * satisfy the supplied predicate function. It passes each value from the right
16002 * to the supplied predicate function, skipping elements until the predicate
16003 * function returns a `falsy` value. The predicate function is applied to one argument:
16004 * *(value)*.
16005 *
16006 * Acts as a transducer if a transformer is given in list position.
16007 *
16008 * @func
16009 * @memberOf R
16010 * @since v0.16.0
16011 * @category List
16012 * @sig (a -> Boolean) -> [a] -> [a]
16013 * @sig (a -> Boolean) -> String -> String
16014 * @param {Function} predicate The function to be called on each element
16015 * @param {Array} xs The collection to iterate over.
16016 * @return {Array} A new array without any trailing elements that return `falsy` values from the `predicate`.
16017 * @see R.takeLastWhile, R.addIndex, R.drop, R.dropWhile
16018 * @example
16019 *
16020 *      const lteThree = x => x <= 3;
16021 *
16022 *      R.dropLastWhile(lteThree, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3, 4]
16023 *
16024 *      R.dropLastWhile(x => x !== 'd' , 'Ramda'); //=> 'Ramd'
16025 */
16026
16027
16028var dropLastWhile =
16029/*#__PURE__*/
16030_curry2(
16031/*#__PURE__*/
16032_dispatchable([], _xdropLastWhile, _dropLastWhile));
16033
16034module.exports = dropLastWhile;
16035
16036/***/ }),
16037
vendor: 1,635 bytes, lines 16038-16096
16038/***/ "./node_modules/ramda/src/dropRepeats.js":
16039/*!***********************************************!*\
16040  !*** ./node_modules/ramda/src/dropRepeats.js ***!
16041  \***********************************************/
16042/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16043
16044var _curry1 =
16045/*#__PURE__*/
16046__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
16047
16048var _dispatchable =
16049/*#__PURE__*/
16050__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16051
16052var _xdropRepeatsWith =
16053/*#__PURE__*/
16054__webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/src/internal/_xdropRepeatsWith.js");
16055
16056var dropRepeatsWith =
16057/*#__PURE__*/
16058__webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/src/dropRepeatsWith.js");
16059
16060var equals =
16061/*#__PURE__*/
16062__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
16063/**
16064 * Returns a new list without any consecutively repeating elements.
16065 * [`R.equals`](#equals) is used to determine equality.
16066 *
16067 * Acts as a transducer if a transformer is given in list position.
16068 *
16069 * @func
16070 * @memberOf R
16071 * @since v0.14.0
16072 * @category List
16073 * @sig [a] -> [a]
16074 * @param {Array} list The array to consider.
16075 * @return {Array} `list` without repeating elements.
16076 * @see R.transduce
16077 * @example
16078 *
16079 *     R.dropRepeats([1, 1, 1, 2, 3, 4, 4, 2, 2]); //=> [1, 2, 3, 4, 2]
16080 */
16081
16082
16083var dropRepeats =
16084/*#__PURE__*/
16085_curry1(
16086/*#__PURE__*/
16087_dispatchable([],
16088/*#__PURE__*/
16089_xdropRepeatsWith(equals),
16090/*#__PURE__*/
16091dropRepeatsWith(equals)));
16092
16093module.exports = dropRepeats;
16094
16095/***/ }),
16096
vendor: 2,041 bytes, lines 16097-16168
16097/***/ "./node_modules/ramda/src/dropRepeatsWith.js":
16098/*!***************************************************!*\
16099  !*** ./node_modules/ramda/src/dropRepeatsWith.js ***!
16100  \***************************************************/
16101/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16102
16103var _curry2 =
16104/*#__PURE__*/
16105__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16106
16107var _dispatchable =
16108/*#__PURE__*/
16109__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16110
16111var _xdropRepeatsWith =
16112/*#__PURE__*/
16113__webpack_require__(/*! ./internal/_xdropRepeatsWith.js */ "./node_modules/ramda/src/internal/_xdropRepeatsWith.js");
16114
16115var last =
16116/*#__PURE__*/
16117__webpack_require__(/*! ./last.js */ "./node_modules/ramda/src/last.js");
16118/**
16119 * Returns a new list without any consecutively repeating elements. Equality is
16120 * determined by applying the supplied predicate to each pair of consecutive elements. The
16121 * first element in a series of equal elements will be preserved.
16122 *
16123 * Acts as a transducer if a transformer is given in list position.
16124 *
16125 * @func
16126 * @memberOf R
16127 * @since v0.14.0
16128 * @category List
16129 * @sig ((a, a) -> Boolean) -> [a] -> [a]
16130 * @param {Function} pred A predicate used to test whether two items are equal.
16131 * @param {Array} list The array to consider.
16132 * @return {Array} `list` without repeating elements.
16133 * @see R.transduce
16134 * @example
16135 *
16136 *      const l = [1, -1, 1, 3, 4, -4, -4, -5, 5, 3, 3];
16137 *      R.dropRepeatsWith(R.eqBy(Math.abs), l); //=> [1, 3, 4, -5, 3]
16138 */
16139
16140
16141var dropRepeatsWith =
16142/*#__PURE__*/
16143_curry2(
16144/*#__PURE__*/
16145_dispatchable([], _xdropRepeatsWith, function dropRepeatsWith(pred, list) {
16146  var result = [];
16147  var idx = 1;
16148  var len = list.length;
16149
16150  if (len !== 0) {
16151    result[0] = list[0];
16152
16153    while (idx < len) {
16154      if (!pred(last(result), list[idx])) {
16155        result[result.length] = list[idx];
16156      }
16157
16158      idx += 1;
16159    }
16160  }
16161
16162  return result;
16163}));
16164
16165module.exports = dropRepeatsWith;
16166
16167/***/ }),
16168
vendor: 2,070 bytes, lines 16169-16238
16169/***/ "./node_modules/ramda/src/dropWhile.js":
16170/*!*********************************************!*\
16171  !*** ./node_modules/ramda/src/dropWhile.js ***!
16172  \*********************************************/
16173/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16174
16175var _curry2 =
16176/*#__PURE__*/
16177__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16178
16179var _dispatchable =
16180/*#__PURE__*/
16181__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16182
16183var _xdropWhile =
16184/*#__PURE__*/
16185__webpack_require__(/*! ./internal/_xdropWhile.js */ "./node_modules/ramda/src/internal/_xdropWhile.js");
16186
16187var slice =
16188/*#__PURE__*/
16189__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
16190/**
16191 * Returns a new list excluding the leading elements of a given list which
16192 * satisfy the supplied predicate function. It passes each value to the supplied
16193 * predicate function, skipping elements while the predicate function returns
16194 * `true`. The predicate function is applied to one argument: *(value)*.
16195 *
16196 * Dispatches to the `dropWhile` method of the second argument, if present.
16197 *
16198 * Acts as a transducer if a transformer is given in list position.
16199 *
16200 * @func
16201 * @memberOf R
16202 * @since v0.9.0
16203 * @category List
16204 * @sig (a -> Boolean) -> [a] -> [a]
16205 * @sig (a -> Boolean) -> String -> String
16206 * @param {Function} fn The function called per iteration.
16207 * @param {Array} xs The collection to iterate over.
16208 * @return {Array} A new array.
16209 * @see R.takeWhile, R.transduce, R.addIndex
16210 * @example
16211 *
16212 *      const lteTwo = x => x <= 2;
16213 *
16214 *      R.dropWhile(lteTwo, [1, 2, 3, 4, 3, 2, 1]); //=> [3, 4, 3, 2, 1]
16215 *
16216 *      R.dropWhile(x => x !== 'd' , 'Ramda'); //=> 'da'
16217 */
16218
16219
16220var dropWhile =
16221/*#__PURE__*/
16222_curry2(
16223/*#__PURE__*/
16224_dispatchable(['dropWhile'], _xdropWhile, function dropWhile(pred, xs) {
16225  var idx = 0;
16226  var len = xs.length;
16227
16228  while (idx < len && pred(xs[idx])) {
16229    idx += 1;
16230  }
16231
16232  return slice(idx, Infinity, xs);
16233}));
16234
16235module.exports = dropWhile;
16236
16237/***/ }),
16238
vendor: 2,044 bytes, lines 16239-16303
16239/***/ "./node_modules/ramda/src/either.js":
16240/*!******************************************!*\
16241  !*** ./node_modules/ramda/src/either.js ***!
16242  \******************************************/
16243/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16244
16245var _curry2 =
16246/*#__PURE__*/
16247__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16248
16249var _isFunction =
16250/*#__PURE__*/
16251__webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/src/internal/_isFunction.js");
16252
16253var lift =
16254/*#__PURE__*/
16255__webpack_require__(/*! ./lift.js */ "./node_modules/ramda/src/lift.js");
16256
16257var or =
16258/*#__PURE__*/
16259__webpack_require__(/*! ./or.js */ "./node_modules/ramda/src/or.js");
16260/**
16261 * A function wrapping calls to the two functions in an `||` operation,
16262 * returning the result of the first function if it is truth-y and the result
16263 * of the second function otherwise. Note that this is short-circuited,
16264 * meaning that the second function will not be invoked if the first returns a
16265 * truth-y value.
16266 *
16267 * In addition to functions, `R.either` also accepts any fantasy-land compatible
16268 * applicative functor.
16269 *
16270 * @func
16271 * @memberOf R
16272 * @since v0.12.0
16273 * @category Logic
16274 * @sig (*... -> Boolean) -> (*... -> Boolean) -> (*... -> Boolean)
16275 * @param {Function} f a predicate
16276 * @param {Function} g another predicate
16277 * @return {Function} a function that applies its arguments to `f` and `g` and `||`s their outputs together.
16278 * @see R.both, R.or
16279 * @example
16280 *
16281 *      const gt10 = x => x > 10;
16282 *      const even = x => x % 2 === 0;
16283 *      const f = R.either(gt10, even);
16284 *      f(101); //=> true
16285 *      f(8); //=> true
16286 *
16287 *      R.either(Maybe.Just(false), Maybe.Just(55)); // => Maybe.Just(55)
16288 *      R.either([false, false, 'a'], [11]) // => [11, 11, "a"]
16289 */
16290
16291
16292var either =
16293/*#__PURE__*/
16294_curry2(function either(f, g) {
16295  return _isFunction(f) ? function _either() {
16296    return f.apply(this, arguments) || g.apply(this, arguments);
16297  } : lift(or)(f, g);
16298});
16299
16300module.exports = either;
16301
16302/***/ }),
16303
vendor: 2,603 bytes, lines 16304-16372
16304/***/ "./node_modules/ramda/src/empty.js":
16305/*!*****************************************!*\
16306  !*** ./node_modules/ramda/src/empty.js ***!
16307  \*****************************************/
16308/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16309
16310var _curry1 =
16311/*#__PURE__*/
16312__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
16313
16314var _isArguments =
16315/*#__PURE__*/
16316__webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/src/internal/_isArguments.js");
16317
16318var _isArray =
16319/*#__PURE__*/
16320__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
16321
16322var _isObject =
16323/*#__PURE__*/
16324__webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/src/internal/_isObject.js");
16325
16326var _isString =
16327/*#__PURE__*/
16328__webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/src/internal/_isString.js");
16329
16330var _isTypedArray =
16331/*#__PURE__*/
16332__webpack_require__(/*! ./internal/_isTypedArray.js */ "./node_modules/ramda/src/internal/_isTypedArray.js");
16333/**
16334 * Returns the empty value of its argument's type. Ramda defines the empty
16335 * value of Array (`[]`), Object (`{}`), String (`''`),
16336 * TypedArray (`Uint8Array []`, `Float32Array []`, etc), and Arguments. Other
16337 * types are supported if they define `<Type>.empty`,
16338 * `<Type>.prototype.empty` or implement the
16339 * [FantasyLand Monoid spec](https://github.com/fantasyland/fantasy-land#monoid).
16340 *
16341 * Dispatches to the `empty` method of the first argument, if present.
16342 *
16343 * @func
16344 * @memberOf R
16345 * @since v0.3.0
16346 * @category Function
16347 * @sig a -> a
16348 * @param {*} x
16349 * @return {*}
16350 * @example
16351 *
16352 *      R.empty(Just(42));               //=> Nothing()
16353 *      R.empty([1, 2, 3]);              //=> []
16354 *      R.empty('unicorns');             //=> ''
16355 *      R.empty({x: 1, y: 2});           //=> {}
16356 *      R.empty(Uint8Array.from('123')); //=> Uint8Array []
16357 */
16358
16359
16360var empty =
16361/*#__PURE__*/
16362_curry1(function empty(x) {
16363  return x != null && typeof x['fantasy-land/empty'] === 'function' ? x['fantasy-land/empty']() : x != null && x.constructor != null && typeof x.constructor['fantasy-land/empty'] === 'function' ? x.constructor['fantasy-land/empty']() : x != null && typeof x.empty === 'function' ? x.empty() : x != null && x.constructor != null && typeof x.constructor.empty === 'function' ? x.constructor.empty() : _isArray(x) ? [] : _isString(x) ? '' : _isObject(x) ? {} : _isArguments(x) ? function () {
16364    return arguments;
16365  }() : _isTypedArray(x) ? x.constructor.from('') : void 0 // else
16366  ;
16367});
16368
16369module.exports = empty;
16370
16371/***/ }),
16372
vendor: 1,355 bytes, lines 16373-16423
16373/***/ "./node_modules/ramda/src/endsWith.js":
16374/*!********************************************!*\
16375  !*** ./node_modules/ramda/src/endsWith.js ***!
16376  \********************************************/
16377/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16378
16379var _curry2 =
16380/*#__PURE__*/
16381__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16382
16383var equals =
16384/*#__PURE__*/
16385__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
16386
16387var takeLast =
16388/*#__PURE__*/
16389__webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/src/takeLast.js");
16390/**
16391 * Checks if a list ends with the provided sublist.
16392 *
16393 * Similarly, checks if a string ends with the provided substring.
16394 *
16395 * @func
16396 * @memberOf R
16397 * @since v0.24.0
16398 * @category List
16399 * @sig [a] -> [a] -> Boolean
16400 * @sig String -> String -> Boolean
16401 * @param {*} suffix
16402 * @param {*} list
16403 * @return {Boolean}
16404 * @see R.startsWith
16405 * @example
16406 *
16407 *      R.endsWith('c', 'abc')                //=> true
16408 *      R.endsWith('b', 'abc')                //=> false
16409 *      R.endsWith(['c'], ['a', 'b', 'c'])    //=> true
16410 *      R.endsWith(['b'], ['a', 'b', 'c'])    //=> false
16411 */
16412
16413
16414var endsWith =
16415/*#__PURE__*/
16416_curry2(function (suffix, list) {
16417  return equals(takeLast(suffix.length, list), suffix);
16418});
16419
16420module.exports = endsWith;
16421
16422/***/ }),
16423
vendor: 999 bytes, lines 16424-16465
16424/***/ "./node_modules/ramda/src/eqBy.js":
16425/*!****************************************!*\
16426  !*** ./node_modules/ramda/src/eqBy.js ***!
16427  \****************************************/
16428/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16429
16430var _curry3 =
16431/*#__PURE__*/
16432__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
16433
16434var equals =
16435/*#__PURE__*/
16436__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
16437/**
16438 * Takes a function and two values in its domain and returns `true` if the
16439 * values map to the same value in the codomain; `false` otherwise.
16440 *
16441 * @func
16442 * @memberOf R
16443 * @since v0.18.0
16444 * @category Relation
16445 * @sig (a -> b) -> a -> a -> Boolean
16446 * @param {Function} f
16447 * @param {*} x
16448 * @param {*} y
16449 * @return {Boolean}
16450 * @example
16451 *
16452 *      R.eqBy(Math.abs, 5, -5); //=> true
16453 */
16454
16455
16456var eqBy =
16457/*#__PURE__*/
16458_curry3(function eqBy(f, x, y) {
16459  return equals(f(x), f(y));
16460});
16461
16462module.exports = eqBy;
16463
16464/***/ }),
16465
vendor: 1,239 bytes, lines 16466-16511
16466/***/ "./node_modules/ramda/src/eqProps.js":
16467/*!*******************************************!*\
16468  !*** ./node_modules/ramda/src/eqProps.js ***!
16469  \*******************************************/
16470/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16471
16472var _curry3 =
16473/*#__PURE__*/
16474__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
16475
16476var equals =
16477/*#__PURE__*/
16478__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
16479/**
16480 * Reports whether two objects have the same value, in [`R.equals`](#equals)
16481 * terms, for the specified property. Useful as a curried predicate.
16482 *
16483 * @func
16484 * @memberOf R
16485 * @since v0.1.0
16486 * @category Object
16487 * @sig k -> {k: v} -> {k: v} -> Boolean
16488 * @param {String} prop The name of the property to compare
16489 * @param {Object} obj1
16490 * @param {Object} obj2
16491 * @return {Boolean}
16492 *
16493 * @example
16494 *
16495 *      const o1 = { a: 1, b: 2, c: 3, d: 4 };
16496 *      const o2 = { a: 10, b: 20, c: 3, d: 40 };
16497 *      R.eqProps('a', o1, o2); //=> false
16498 *      R.eqProps('c', o1, o2); //=> true
16499 */
16500
16501
16502var eqProps =
16503/*#__PURE__*/
16504_curry3(function eqProps(prop, obj1, obj2) {
16505  return equals(obj1[prop], obj2[prop]);
16506});
16507
16508module.exports = eqProps;
16509
16510/***/ }),
16511
vendor: 1,229 bytes, lines 16512-16561
16512/***/ "./node_modules/ramda/src/equals.js":
16513/*!******************************************!*\
16514  !*** ./node_modules/ramda/src/equals.js ***!
16515  \******************************************/
16516/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16517
16518var _curry2 =
16519/*#__PURE__*/
16520__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16521
16522var _equals =
16523/*#__PURE__*/
16524__webpack_require__(/*! ./internal/_equals.js */ "./node_modules/ramda/src/internal/_equals.js");
16525/**
16526 * Returns `true` if its arguments are equivalent, `false` otherwise. Handles
16527 * cyclical data structures.
16528 *
16529 * Dispatches symmetrically to the `equals` methods of both arguments, if
16530 * present.
16531 *
16532 * @func
16533 * @memberOf R
16534 * @since v0.15.0
16535 * @category Relation
16536 * @sig a -> b -> Boolean
16537 * @param {*} a
16538 * @param {*} b
16539 * @return {Boolean}
16540 * @example
16541 *
16542 *      R.equals(1, 1); //=> true
16543 *      R.equals(1, '1'); //=> false
16544 *      R.equals([1, 2, 3], [1, 2, 3]); //=> true
16545 *
16546 *      const a = {}; a.v = a;
16547 *      const b = {}; b.v = b;
16548 *      R.equals(a, b); //=> true
16549 */
16550
16551
16552var equals =
16553/*#__PURE__*/
16554_curry2(function equals(a, b) {
16555  return _equals(a, b, [], []);
16556});
16557
16558module.exports = equals;
16559
16560/***/ }),
16561
vendor: 2,250 bytes, lines 16562-16630
16562/***/ "./node_modules/ramda/src/evolve.js":
16563/*!******************************************!*\
16564  !*** ./node_modules/ramda/src/evolve.js ***!
16565  \******************************************/
16566/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16567
16568var _curry2 =
16569/*#__PURE__*/
16570__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16571
16572var _isArray =
16573/*#__PURE__*/
16574__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
16575
16576var _isObject =
16577/*#__PURE__*/
16578__webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/src/internal/_isObject.js");
16579/**
16580 * Creates a new object by recursively evolving a shallow copy of `object`,
16581 * according to the `transformation` functions. All non-primitive properties
16582 * are copied by reference.
16583 *
16584 * A `transformation` function will not be invoked if its corresponding key
16585 * does not exist in the evolved object.
16586 *
16587 * @func
16588 * @memberOf R
16589 * @since v0.9.0
16590 * @category Object
16591 * @sig {k: (v -> v)} -> {k: v} -> {k: v}
16592 * @param {Object} transformations The object specifying transformation functions to apply
16593 *        to the object.
16594 * @param {Object} object The object to be transformed.
16595 * @return {Object} The transformed object.
16596 * @example
16597 *
16598 *      const tomato = {firstName: '  Tomato ', data: {elapsed: 100, remaining: 1400}, id:123};
16599 *      const transformations = {
16600 *        firstName: R.trim,
16601 *        lastName: R.trim, // Will not get invoked.
16602 *        data: {elapsed: R.add(1), remaining: R.add(-1)}
16603 *      };
16604 *      R.evolve(transformations, tomato); //=> {firstName: 'Tomato', data: {elapsed: 101, remaining: 1399}, id:123}
16605 */
16606
16607
16608var evolve =
16609/*#__PURE__*/
16610_curry2(function evolve(transformations, object) {
16611  if (!_isObject(object) && !_isArray(object)) {
16612    return object;
16613  }
16614
16615  var result = object instanceof Array ? [] : {};
16616  var transformation, key, type;
16617
16618  for (key in object) {
16619    transformation = transformations[key];
16620    type = typeof transformation;
16621    result[key] = type === 'function' ? transformation(object[key]) : transformation && type === 'object' ? evolve(transformation, object[key]) : object[key];
16622  }
16623
16624  return result;
16625});
16626
16627module.exports = evolve;
16628
16629/***/ }),
16630
vendor: 2,403 bytes, lines 16631-16711
16631/***/ "./node_modules/ramda/src/filter.js":
16632/*!******************************************!*\
16633  !*** ./node_modules/ramda/src/filter.js ***!
16634  \******************************************/
16635/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16636
16637var _curry2 =
16638/*#__PURE__*/
16639__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16640
16641var _dispatchable =
16642/*#__PURE__*/
16643__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16644
16645var _filter =
16646/*#__PURE__*/
16647__webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/src/internal/_filter.js");
16648
16649var _isObject =
16650/*#__PURE__*/
16651__webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/src/internal/_isObject.js");
16652
16653var _reduce =
16654/*#__PURE__*/
16655__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
16656
16657var _xfilter =
16658/*#__PURE__*/
16659__webpack_require__(/*! ./internal/_xfilter.js */ "./node_modules/ramda/src/internal/_xfilter.js");
16660
16661var keys =
16662/*#__PURE__*/
16663__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
16664/**
16665 * Takes a predicate and a `Filterable`, and returns a new filterable of the
16666 * same type containing the members of the given filterable which satisfy the
16667 * given predicate. Filterable objects include plain objects or any object
16668 * that has a filter method such as `Array`.
16669 *
16670 * Dispatches to the `filter` method of the second argument, if present.
16671 *
16672 * Acts as a transducer if a transformer is given in list position.
16673 *
16674 * @func
16675 * @memberOf R
16676 * @since v0.1.0
16677 * @category List
16678 * @sig Filterable f => (a -> Boolean) -> f a -> f a
16679 * @param {Function} pred
16680 * @param {Array} filterable
16681 * @return {Array} Filterable
16682 * @see R.reject, R.transduce, R.addIndex
16683 * @example
16684 *
16685 *      const isEven = n => n % 2 === 0;
16686 *
16687 *      R.filter(isEven, [1, 2, 3, 4]); //=> [2, 4]
16688 *
16689 *      R.filter(isEven, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}
16690 */
16691
16692
16693var filter =
16694/*#__PURE__*/
16695_curry2(
16696/*#__PURE__*/
16697_dispatchable(['fantasy-land/filter', 'filter'], _xfilter, function (pred, filterable) {
16698  return _isObject(filterable) ? _reduce(function (acc, key) {
16699    if (pred(filterable[key])) {
16700      acc[key] = filterable[key];
16701    }
16702
16703    return acc;
16704  }, {}, keys(filterable)) : // else
16705  _filter(pred, filterable);
16706}));
16707
16708module.exports = filter;
16709
16710/***/ }),
16711
vendor: 1,696 bytes, lines 16712-16775
16712/***/ "./node_modules/ramda/src/find.js":
16713/*!****************************************!*\
16714  !*** ./node_modules/ramda/src/find.js ***!
16715  \****************************************/
16716/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16717
16718var _curry2 =
16719/*#__PURE__*/
16720__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16721
16722var _dispatchable =
16723/*#__PURE__*/
16724__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16725
16726var _xfind =
16727/*#__PURE__*/
16728__webpack_require__(/*! ./internal/_xfind.js */ "./node_modules/ramda/src/internal/_xfind.js");
16729/**
16730 * Returns the first element of the list which matches the predicate, or
16731 * `undefined` if no element matches.
16732 *
16733 * Dispatches to the `find` method of the second argument, if present.
16734 *
16735 * Acts as a transducer if a transformer is given in list position.
16736 *
16737 * @func
16738 * @memberOf R
16739 * @since v0.1.0
16740 * @category List
16741 * @sig (a -> Boolean) -> [a] -> a | undefined
16742 * @param {Function} fn The predicate function used to determine if the element is the
16743 *        desired one.
16744 * @param {Array} list The array to consider.
16745 * @return {Object} The element found, or `undefined`.
16746 * @see R.transduce
16747 * @example
16748 *
16749 *      const xs = [{a: 1}, {a: 2}, {a: 3}];
16750 *      R.find(R.propEq('a', 2))(xs); //=> {a: 2}
16751 *      R.find(R.propEq('a', 4))(xs); //=> undefined
16752 */
16753
16754
16755var find =
16756/*#__PURE__*/
16757_curry2(
16758/*#__PURE__*/
16759_dispatchable(['find'], _xfind, function find(fn, list) {
16760  var idx = 0;
16761  var len = list.length;
16762
16763  while (idx < len) {
16764    if (fn(list[idx])) {
16765      return list[idx];
16766    }
16767
16768    idx += 1;
16769  }
16770}));
16771
16772module.exports = find;
16773
16774/***/ }),
16775
vendor: 1,686 bytes, lines 16776-16839
16776/***/ "./node_modules/ramda/src/findIndex.js":
16777/*!*********************************************!*\
16778  !*** ./node_modules/ramda/src/findIndex.js ***!
16779  \*********************************************/
16780/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16781
16782var _curry2 =
16783/*#__PURE__*/
16784__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16785
16786var _dispatchable =
16787/*#__PURE__*/
16788__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16789
16790var _xfindIndex =
16791/*#__PURE__*/
16792__webpack_require__(/*! ./internal/_xfindIndex.js */ "./node_modules/ramda/src/internal/_xfindIndex.js");
16793/**
16794 * Returns the index of the first element of the list which matches the
16795 * predicate, or `-1` if no element matches.
16796 *
16797 * Acts as a transducer if a transformer is given in list position.
16798 *
16799 * @func
16800 * @memberOf R
16801 * @since v0.1.1
16802 * @category List
16803 * @sig (a -> Boolean) -> [a] -> Number
16804 * @param {Function} fn The predicate function used to determine if the element is the
16805 * desired one.
16806 * @param {Array} list The array to consider.
16807 * @return {Number} The index of the element found, or `-1`.
16808 * @see R.transduce, R.indexOf
16809 * @example
16810 *
16811 *      const xs = [{a: 1}, {a: 2}, {a: 3}];
16812 *      R.findIndex(R.propEq('a', 2))(xs); //=> 1
16813 *      R.findIndex(R.propEq('a', 4))(xs); //=> -1
16814 */
16815
16816
16817var findIndex =
16818/*#__PURE__*/
16819_curry2(
16820/*#__PURE__*/
16821_dispatchable([], _xfindIndex, function findIndex(fn, list) {
16822  var idx = 0;
16823  var len = list.length;
16824
16825  while (idx < len) {
16826    if (fn(list[idx])) {
16827      return idx;
16828    }
16829
16830    idx += 1;
16831  }
16832
16833  return -1;
16834}));
16835
16836module.exports = findIndex;
16837
16838/***/ }),
16839
vendor: 1,657 bytes, lines 16840-16900
16840/***/ "./node_modules/ramda/src/findLast.js":
16841/*!********************************************!*\
16842  !*** ./node_modules/ramda/src/findLast.js ***!
16843  \********************************************/
16844/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16845
16846var _curry2 =
16847/*#__PURE__*/
16848__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16849
16850var _dispatchable =
16851/*#__PURE__*/
16852__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16853
16854var _xfindLast =
16855/*#__PURE__*/
16856__webpack_require__(/*! ./internal/_xfindLast.js */ "./node_modules/ramda/src/internal/_xfindLast.js");
16857/**
16858 * Returns the last element of the list which matches the predicate, or
16859 * `undefined` if no element matches.
16860 *
16861 * Acts as a transducer if a transformer is given in list position.
16862 *
16863 * @func
16864 * @memberOf R
16865 * @since v0.1.1
16866 * @category List
16867 * @sig (a -> Boolean) -> [a] -> a | undefined
16868 * @param {Function} fn The predicate function used to determine if the element is the
16869 * desired one.
16870 * @param {Array} list The array to consider.
16871 * @return {Object} The element found, or `undefined`.
16872 * @see R.transduce
16873 * @example
16874 *
16875 *      const xs = [{a: 1, b: 0}, {a:1, b: 1}];
16876 *      R.findLast(R.propEq('a', 1))(xs); //=> {a: 1, b: 1}
16877 *      R.findLast(R.propEq('a', 4))(xs); //=> undefined
16878 */
16879
16880
16881var findLast =
16882/*#__PURE__*/
16883_curry2(
16884/*#__PURE__*/
16885_dispatchable([], _xfindLast, function findLast(fn, list) {
16886  var idx = list.length - 1;
16887
16888  while (idx >= 0) {
16889    if (fn(list[idx])) {
16890      return list[idx];
16891    }
16892
16893    idx -= 1;
16894  }
16895}));
16896
16897module.exports = findLast;
16898
16899/***/ }),
16900
vendor: 1,732 bytes, lines 16901-16963
16901/***/ "./node_modules/ramda/src/findLastIndex.js":
16902/*!*************************************************!*\
16903  !*** ./node_modules/ramda/src/findLastIndex.js ***!
16904  \*************************************************/
16905/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16906
16907var _curry2 =
16908/*#__PURE__*/
16909__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
16910
16911var _dispatchable =
16912/*#__PURE__*/
16913__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
16914
16915var _xfindLastIndex =
16916/*#__PURE__*/
16917__webpack_require__(/*! ./internal/_xfindLastIndex.js */ "./node_modules/ramda/src/internal/_xfindLastIndex.js");
16918/**
16919 * Returns the index of the last element of the list which matches the
16920 * predicate, or `-1` if no element matches.
16921 *
16922 * Acts as a transducer if a transformer is given in list position.
16923 *
16924 * @func
16925 * @memberOf R
16926 * @since v0.1.1
16927 * @category List
16928 * @sig (a -> Boolean) -> [a] -> Number
16929 * @param {Function} fn The predicate function used to determine if the element is the
16930 * desired one.
16931 * @param {Array} list The array to consider.
16932 * @return {Number} The index of the element found, or `-1`.
16933 * @see R.transduce, R.lastIndexOf
16934 * @example
16935 *
16936 *      const xs = [{a: 1, b: 0}, {a:1, b: 1}];
16937 *      R.findLastIndex(R.propEq('a', 1))(xs); //=> 1
16938 *      R.findLastIndex(R.propEq('a', 4))(xs); //=> -1
16939 */
16940
16941
16942var findLastIndex =
16943/*#__PURE__*/
16944_curry2(
16945/*#__PURE__*/
16946_dispatchable([], _xfindLastIndex, function findLastIndex(fn, list) {
16947  var idx = list.length - 1;
16948
16949  while (idx >= 0) {
16950    if (fn(list[idx])) {
16951      return idx;
16952    }
16953
16954    idx -= 1;
16955  }
16956
16957  return -1;
16958}));
16959
16960module.exports = findLastIndex;
16961
16962/***/ }),
16963
vendor: 1,086 bytes, lines 16964-17005
16964/***/ "./node_modules/ramda/src/flatten.js":
16965/*!*******************************************!*\
16966  !*** ./node_modules/ramda/src/flatten.js ***!
16967  \*******************************************/
16968/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
16969
16970var _curry1 =
16971/*#__PURE__*/
16972__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
16973
16974var _makeFlat =
16975/*#__PURE__*/
16976__webpack_require__(/*! ./internal/_makeFlat.js */ "./node_modules/ramda/src/internal/_makeFlat.js");
16977/**
16978 * Returns a new list by pulling every item out of it (and all its sub-arrays)
16979 * and putting them in a new array, depth-first.
16980 *
16981 * @func
16982 * @memberOf R
16983 * @since v0.1.0
16984 * @category List
16985 * @sig [a] -> [b]
16986 * @param {Array} list The array to consider.
16987 * @return {Array} The flattened list.
16988 * @see R.unnest
16989 * @example
16990 *
16991 *      R.flatten([1, 2, [3, 4], 5, [6, [7, 8, [9, [10, 11], 12]]]]);
16992 *      //=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
16993 */
16994
16995
16996var flatten =
16997/*#__PURE__*/
16998_curry1(
16999/*#__PURE__*/
17000_makeFlat(true));
17001
17002module.exports = flatten;
17003
17004/***/ }),
17005
vendor: 1,391 bytes, lines 17006-17055
17006/***/ "./node_modules/ramda/src/flip.js":
17007/*!****************************************!*\
17008  !*** ./node_modules/ramda/src/flip.js ***!
17009  \****************************************/
17010/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17011
17012var _curry1 =
17013/*#__PURE__*/
17014__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
17015
17016var curryN =
17017/*#__PURE__*/
17018__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
17019/**
17020 * Returns a new function much like the supplied one, except that the first two
17021 * arguments' order is reversed.
17022 *
17023 * @func
17024 * @memberOf R
17025 * @since v0.1.0
17026 * @category Function
17027 * @sig ((a, b, c, ...) -> z) -> (b -> a -> c -> ... -> z)
17028 * @param {Function} fn The function to invoke with its first two parameters reversed.
17029 * @return {*} The result of invoking `fn` with its first two parameters' order reversed.
17030 * @example
17031 *
17032 *      const mergeThree = (a, b, c) => [].concat(a, b, c);
17033 *
17034 *      mergeThree(1, 2, 3); //=> [1, 2, 3]
17035 *
17036 *      R.flip(mergeThree)(1, 2, 3); //=> [2, 1, 3]
17037 * @symb R.flip(f)(a, b, c) = f(b, a, c)
17038 */
17039
17040
17041var flip =
17042/*#__PURE__*/
17043_curry1(function flip(fn) {
17044  return curryN(fn.length, function (a, b) {
17045    var args = Array.prototype.slice.call(arguments, 0);
17046    args[0] = b;
17047    args[1] = a;
17048    return fn.apply(this, args);
17049  });
17050});
17051
17052module.exports = flip;
17053
17054/***/ }),
17055
vendor: 1,992 bytes, lines 17056-17124
17056/***/ "./node_modules/ramda/src/forEach.js":
17057/*!*******************************************!*\
17058  !*** ./node_modules/ramda/src/forEach.js ***!
17059  \*******************************************/
17060/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17061
17062var _checkForMethod =
17063/*#__PURE__*/
17064__webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/src/internal/_checkForMethod.js");
17065
17066var _curry2 =
17067/*#__PURE__*/
17068__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17069/**
17070 * Iterate over an input `list`, calling a provided function `fn` for each
17071 * element in the list.
17072 *
17073 * `fn` receives one argument: *(value)*.
17074 *
17075 * Note: `R.forEach` does not skip deleted or unassigned indices (sparse
17076 * arrays), unlike the native `Array.prototype.forEach` method. For more
17077 * details on this behavior, see:
17078 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach#Description
17079 *
17080 * Also note that, unlike `Array.prototype.forEach`, Ramda's `forEach` returns
17081 * the original array. In some libraries this function is named `each`.
17082 *
17083 * Dispatches to the `forEach` method of the second argument, if present.
17084 *
17085 * @func
17086 * @memberOf R
17087 * @since v0.1.1
17088 * @category List
17089 * @sig (a -> *) -> [a] -> [a]
17090 * @param {Function} fn The function to invoke. Receives one argument, `value`.
17091 * @param {Array} list The list to iterate over.
17092 * @return {Array} The original list.
17093 * @see R.addIndex
17094 * @example
17095 *
17096 *      const printXPlusFive = x => console.log(x + 5);
17097 *      R.forEach(printXPlusFive, [1, 2, 3]); //=> [1, 2, 3]
17098 *      // logs 6
17099 *      // logs 7
17100 *      // logs 8
17101 * @symb R.forEach(f, [a, b, c]) = [a, b, c]
17102 */
17103
17104
17105var forEach =
17106/*#__PURE__*/
17107_curry2(
17108/*#__PURE__*/
17109_checkForMethod('forEach', function forEach(fn, list) {
17110  var len = list.length;
17111  var idx = 0;
17112
17113  while (idx < len) {
17114    fn(list[idx]);
17115    idx += 1;
17116  }
17117
17118  return list;
17119}));
17120
17121module.exports = forEach;
17122
17123/***/ }),
17124
vendor: 1,602 bytes, lines 17125-17180
17125/***/ "./node_modules/ramda/src/forEachObjIndexed.js":
17126/*!*****************************************************!*\
17127  !*** ./node_modules/ramda/src/forEachObjIndexed.js ***!
17128  \*****************************************************/
17129/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17130
17131var _curry2 =
17132/*#__PURE__*/
17133__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17134
17135var keys =
17136/*#__PURE__*/
17137__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
17138/**
17139 * Iterate over an input `object`, calling a provided function `fn` for each
17140 * key and value in the object.
17141 *
17142 * `fn` receives three argument: *(value, key, obj)*.
17143 *
17144 * @func
17145 * @memberOf R
17146 * @since v0.23.0
17147 * @category Object
17148 * @sig ((a, String, StrMap a) -> Any) -> StrMap a -> StrMap a
17149 * @param {Function} fn The function to invoke. Receives three argument, `value`, `key`, `obj`.
17150 * @param {Object} obj The object to iterate over.
17151 * @return {Object} The original object.
17152 * @example
17153 *
17154 *      const printKeyConcatValue = (value, key) => console.log(key + ':' + value);
17155 *      R.forEachObjIndexed(printKeyConcatValue, {x: 1, y: 2}); //=> {x: 1, y: 2}
17156 *      // logs x:1
17157 *      // logs y:2
17158 * @symb R.forEachObjIndexed(f, {x: a, y: b}) = {x: a, y: b}
17159 */
17160
17161
17162var forEachObjIndexed =
17163/*#__PURE__*/
17164_curry2(function forEachObjIndexed(fn, obj) {
17165  var keyList = keys(obj);
17166  var idx = 0;
17167
17168  while (idx < keyList.length) {
17169    var key = keyList[idx];
17170    fn(obj[key], key, obj);
17171    idx += 1;
17172  }
17173
17174  return obj;
17175});
17176
17177module.exports = forEachObjIndexed;
17178
17179/***/ }),
17180
vendor: 1,185 bytes, lines 17181-17225
17181/***/ "./node_modules/ramda/src/fromPairs.js":
17182/*!*********************************************!*\
17183  !*** ./node_modules/ramda/src/fromPairs.js ***!
17184  \*********************************************/
17185/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17186
17187var _curry1 =
17188/*#__PURE__*/
17189__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
17190/**
17191 * Creates a new object from a list key-value pairs. If a key appears in
17192 * multiple pairs, the rightmost pair is included in the object.
17193 *
17194 * @func
17195 * @memberOf R
17196 * @since v0.3.0
17197 * @category List
17198 * @sig [[k,v]] -> {k: v}
17199 * @param {Array} pairs An array of two-element arrays that will be the keys and values of the output object.
17200 * @return {Object} The object made by pairing up `keys` and `values`.
17201 * @see R.toPairs, R.pair
17202 * @example
17203 *
17204 *      R.fromPairs([['a', 1], ['b', 2], ['c', 3]]); //=> {a: 1, b: 2, c: 3}
17205 */
17206
17207
17208var fromPairs =
17209/*#__PURE__*/
17210_curry1(function fromPairs(pairs) {
17211  var result = {};
17212  var idx = 0;
17213
17214  while (idx < pairs.length) {
17215    result[pairs[idx][0]] = pairs[idx][1];
17216    idx += 1;
17217  }
17218
17219  return result;
17220});
17221
17222module.exports = fromPairs;
17223
17224/***/ }),
17225
vendor: 2,296 bytes, lines 17226-17300
17226/***/ "./node_modules/ramda/src/groupBy.js":
17227/*!*******************************************!*\
17228  !*** ./node_modules/ramda/src/groupBy.js ***!
17229  \*******************************************/
17230/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17231
17232var _checkForMethod =
17233/*#__PURE__*/
17234__webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/src/internal/_checkForMethod.js");
17235
17236var _curry2 =
17237/*#__PURE__*/
17238__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17239
17240var reduceBy =
17241/*#__PURE__*/
17242__webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/src/reduceBy.js");
17243/**
17244 * Splits a list into sub-lists stored in an object, based on the result of
17245 * calling a key-returning function on each element, and grouping the
17246 * results according to values returned.
17247 *
17248 * Dispatches to the `groupBy` method of the second argument, if present.
17249 *
17250 * Acts as a transducer if a transformer is given in list position.
17251 *
17252 * @func
17253 * @memberOf R
17254 * @since v0.1.0
17255 * @category List
17256 * @typedefn Idx = String | Int | Symbol
17257 * @sig Idx a => (b -> a) -> [b] -> {a: [b]}
17258 * @param {Function} fn Function :: a -> Idx
17259 * @param {Array} list The array to group
17260 * @return {Object} An object with the output of `fn` for keys, mapped to arrays of elements
17261 *         that produced that key when passed to `fn`.
17262 * @see R.reduceBy, R.transduce, R.indexBy
17263 * @example
17264 *
17265 *      const byGrade = R.groupBy(function(student) {
17266 *        const score = student.score;
17267 *        return score < 65 ? 'F' :
17268 *               score < 70 ? 'D' :
17269 *               score < 80 ? 'C' :
17270 *               score < 90 ? 'B' : 'A';
17271 *      });
17272 *      const students = [{name: 'Abby', score: 84},
17273 *                      {name: 'Eddy', score: 58},
17274 *                      // ...
17275 *                      {name: 'Jack', score: 69}];
17276 *      byGrade(students);
17277 *      // {
17278 *      //   'A': [{name: 'Dianne', score: 99}],
17279 *      //   'B': [{name: 'Abby', score: 84}]
17280 *      //   // ...,
17281 *      //   'F': [{name: 'Eddy', score: 58}]
17282 *      // }
17283 */
17284
17285
17286var groupBy =
17287/*#__PURE__*/
17288_curry2(
17289/*#__PURE__*/
17290_checkForMethod('groupBy',
17291/*#__PURE__*/
17292reduceBy(function (acc, item) {
17293  acc.push(item);
17294  return acc;
17295}, [])));
17296
17297module.exports = groupBy;
17298
17299/***/ }),
17300
vendor: 1,976 bytes, lines 17301-17367
17301/***/ "./node_modules/ramda/src/groupWith.js":
17302/*!*********************************************!*\
17303  !*** ./node_modules/ramda/src/groupWith.js ***!
17304  \*********************************************/
17305/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17306
17307var _curry2 =
17308/*#__PURE__*/
17309__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17310/**
17311 * Takes a list and returns a list of lists where each sublist's elements are
17312 * all satisfied pairwise comparison according to the provided function.
17313 * Only adjacent elements are passed to the comparison function.
17314 *
17315 * @func
17316 * @memberOf R
17317 * @since v0.21.0
17318 * @category List
17319 * @sig ((a, a) → Boolean) → [a] → [[a]]
17320 * @param {Function} fn Function for determining whether two given (adjacent)
17321 *        elements should be in the same group
17322 * @param {Array} list The array to group. Also accepts a string, which will be
17323 *        treated as a list of characters.
17324 * @return {List} A list that contains sublists of elements,
17325 *         whose concatenations are equal to the original list.
17326 * @example
17327 *
17328 * R.groupWith(R.equals, [0, 1, 1, 2, 3, 5, 8, 13, 21])
17329 * //=> [[0], [1, 1], [2], [3], [5], [8], [13], [21]]
17330 *
17331 * R.groupWith((a, b) => a + 1 === b, [0, 1, 1, 2, 3, 5, 8, 13, 21])
17332 * //=> [[0, 1], [1, 2, 3], [5], [8], [13], [21]]
17333 *
17334 * R.groupWith((a, b) => a % 2 === b % 2, [0, 1, 1, 2, 3, 5, 8, 13, 21])
17335 * //=> [[0], [1, 1], [2], [3, 5], [8], [13, 21]]
17336 *
17337 * const isVowel = R.test(/^[aeiou]$/i);
17338 * R.groupWith(R.eqBy(isVowel), 'aestiou')
17339 * //=> ['ae', 'st', 'iou']
17340 */
17341
17342
17343var groupWith =
17344/*#__PURE__*/
17345_curry2(function (fn, list) {
17346  var res = [];
17347  var idx = 0;
17348  var len = list.length;
17349
17350  while (idx < len) {
17351    var nextidx = idx + 1;
17352
17353    while (nextidx < len && fn(list[nextidx - 1], list[nextidx])) {
17354      nextidx += 1;
17355    }
17356
17357    res.push(list.slice(idx, nextidx));
17358    idx = nextidx;
17359  }
17360
17361  return res;
17362});
17363
17364module.exports = groupWith;
17365
17366/***/ }),
17367
vendor: 914 bytes, lines 17368-17409
17368/***/ "./node_modules/ramda/src/gt.js":
17369/*!**************************************!*\
17370  !*** ./node_modules/ramda/src/gt.js ***!
17371  \**************************************/
17372/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17373
17374var _curry2 =
17375/*#__PURE__*/
17376__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17377/**
17378 * Returns `true` if the first argument is greater than the second; `false`
17379 * otherwise.
17380 *
17381 * @func
17382 * @memberOf R
17383 * @since v0.1.0
17384 * @category Relation
17385 * @sig Ord a => a -> a -> Boolean
17386 * @param {*} a
17387 * @param {*} b
17388 * @return {Boolean}
17389 * @see R.lt
17390 * @example
17391 *
17392 *      R.gt(2, 1); //=> true
17393 *      R.gt(2, 2); //=> false
17394 *      R.gt(2, 3); //=> false
17395 *      R.gt('a', 'z'); //=> false
17396 *      R.gt('z', 'a'); //=> true
17397 */
17398
17399
17400var gt =
17401/*#__PURE__*/
17402_curry2(function gt(a, b) {
17403  return a > b;
17404});
17405
17406module.exports = gt;
17407
17408/***/ }),
17409
vendor: 949 bytes, lines 17410-17451
17410/***/ "./node_modules/ramda/src/gte.js":
17411/*!***************************************!*\
17412  !*** ./node_modules/ramda/src/gte.js ***!
17413  \***************************************/
17414/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17415
17416var _curry2 =
17417/*#__PURE__*/
17418__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17419/**
17420 * Returns `true` if the first argument is greater than or equal to the second;
17421 * `false` otherwise.
17422 *
17423 * @func
17424 * @memberOf R
17425 * @since v0.1.0
17426 * @category Relation
17427 * @sig Ord a => a -> a -> Boolean
17428 * @param {Number} a
17429 * @param {Number} b
17430 * @return {Boolean}
17431 * @see R.lte
17432 * @example
17433 *
17434 *      R.gte(2, 1); //=> true
17435 *      R.gte(2, 2); //=> true
17436 *      R.gte(2, 3); //=> false
17437 *      R.gte('a', 'z'); //=> false
17438 *      R.gte('z', 'a'); //=> true
17439 */
17440
17441
17442var gte =
17443/*#__PURE__*/
17444_curry2(function gte(a, b) {
17445  return a >= b;
17446});
17447
17448module.exports = gte;
17449
17450/***/ }),
17451
vendor: 1,329 bytes, lines 17452-17500
17452/***/ "./node_modules/ramda/src/has.js":
17453/*!***************************************!*\
17454  !*** ./node_modules/ramda/src/has.js ***!
17455  \***************************************/
17456/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17457
17458var _curry2 =
17459/*#__PURE__*/
17460__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17461
17462var hasPath =
17463/*#__PURE__*/
17464__webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/src/hasPath.js");
17465/**
17466 * Returns whether or not an object has an own property with the specified name
17467 *
17468 * @func
17469 * @memberOf R
17470 * @since v0.7.0
17471 * @category Object
17472 * @sig s -> {s: x} -> Boolean
17473 * @param {String} prop The name of the property to check for.
17474 * @param {Object} obj The object to query.
17475 * @return {Boolean} Whether the property exists.
17476 * @example
17477 *
17478 *      const hasName = R.has('name');
17479 *      hasName({name: 'alice'});   //=> true
17480 *      hasName({name: 'bob'});     //=> true
17481 *      hasName({});                //=> false
17482 *
17483 *      const point = {x: 0, y: 0};
17484 *      const pointHas = R.has(R.__, point);
17485 *      pointHas('x');  //=> true
17486 *      pointHas('y');  //=> true
17487 *      pointHas('z');  //=> false
17488 */
17489
17490
17491var has =
17492/*#__PURE__*/
17493_curry2(function has(prop, obj) {
17494  return hasPath([prop], obj);
17495});
17496
17497module.exports = has;
17498
17499/***/ }),
17500
vendor: 1,381 bytes, lines 17501-17555
17501/***/ "./node_modules/ramda/src/hasIn.js":
17502/*!*****************************************!*\
17503  !*** ./node_modules/ramda/src/hasIn.js ***!
17504  \*****************************************/
17505/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17506
17507var _curry2 =
17508/*#__PURE__*/
17509__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17510
17511var isNil =
17512/*#__PURE__*/
17513__webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/src/isNil.js");
17514/**
17515 * Returns whether or not an object or its prototype chain has a property with
17516 * the specified name
17517 *
17518 * @func
17519 * @memberOf R
17520 * @since v0.7.0
17521 * @category Object
17522 * @sig s -> {s: x} -> Boolean
17523 * @param {String} prop The name of the property to check for.
17524 * @param {Object} obj The object to query.
17525 * @return {Boolean} Whether the property exists.
17526 * @example
17527 *
17528 *      function Rectangle(width, height) {
17529 *        this.width = width;
17530 *        this.height = height;
17531 *      }
17532 *      Rectangle.prototype.area = function() {
17533 *        return this.width * this.height;
17534 *      };
17535 *
17536 *      const square = new Rectangle(2, 2);
17537 *      R.hasIn('width', square);  //=> true
17538 *      R.hasIn('area', square);  //=> true
17539 */
17540
17541
17542var hasIn =
17543/*#__PURE__*/
17544_curry2(function hasIn(prop, obj) {
17545  if (isNil(obj)) {
17546    return false;
17547  }
17548
17549  return prop in obj;
17550});
17551
17552module.exports = hasIn;
17553
17554/***/ }),
17555
vendor: 1,674 bytes, lines 17556-17621
17556/***/ "./node_modules/ramda/src/hasPath.js":
17557/*!*******************************************!*\
17558  !*** ./node_modules/ramda/src/hasPath.js ***!
17559  \*******************************************/
17560/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17561
17562var _curry2 =
17563/*#__PURE__*/
17564__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17565
17566var _has =
17567/*#__PURE__*/
17568__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
17569
17570var isNil =
17571/*#__PURE__*/
17572__webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/src/isNil.js");
17573/**
17574 * Returns whether or not a path exists in an object. Only the object's
17575 * own properties are checked.
17576 *
17577 * @func
17578 * @memberOf R
17579 * @since v0.26.0
17580 * @category Object
17581 * @typedefn Idx = String | Int | Symbol
17582 * @sig [Idx] -> {a} -> Boolean
17583 * @param {Array} path The path to use.
17584 * @param {Object} obj The object to check the path in.
17585 * @return {Boolean} Whether the path exists.
17586 * @see R.has
17587 * @example
17588 *
17589 *      R.hasPath(['a', 'b'], {a: {b: 2}});         // => true
17590 *      R.hasPath(['a', 'b'], {a: {b: undefined}}); // => true
17591 *      R.hasPath(['a', 'b'], {a: {c: 2}});         // => false
17592 *      R.hasPath(['a', 'b'], {});                  // => false
17593 */
17594
17595
17596var hasPath =
17597/*#__PURE__*/
17598_curry2(function hasPath(_path, obj) {
17599  if (_path.length === 0 || isNil(obj)) {
17600    return false;
17601  }
17602
17603  var val = obj;
17604  var idx = 0;
17605
17606  while (idx < _path.length) {
17607    if (!isNil(val) && _has(_path[idx], val)) {
17608      val = val[_path[idx]];
17609      idx += 1;
17610    } else {
17611      return false;
17612    }
17613  }
17614
17615  return true;
17616});
17617
17618module.exports = hasPath;
17619
17620/***/ }),
17621
vendor: 885 bytes, lines 17622-17660
17622/***/ "./node_modules/ramda/src/head.js":
17623/*!****************************************!*\
17624  !*** ./node_modules/ramda/src/head.js ***!
17625  \****************************************/
17626/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17627
17628var nth =
17629/*#__PURE__*/
17630__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
17631/**
17632 * Returns the first element of the given list or string. In some libraries
17633 * this function is named `first`.
17634 *
17635 * @func
17636 * @memberOf R
17637 * @since v0.1.0
17638 * @category List
17639 * @sig [a] -> a | Undefined
17640 * @sig String -> String
17641 * @param {Array|String} list
17642 * @return {*}
17643 * @see R.tail, R.init, R.last
17644 * @example
17645 *
17646 *      R.head(['fi', 'fo', 'fum']); //=> 'fi'
17647 *      R.head([]); //=> undefined
17648 *
17649 *      R.head('abc'); //=> 'a'
17650 *      R.head(''); //=> ''
17651 */
17652
17653
17654var head =
17655/*#__PURE__*/
17656nth(0);
17657module.exports = head;
17658
17659/***/ }),
17660
vendor: 1,297 bytes, lines 17661-17708
17661/***/ "./node_modules/ramda/src/identical.js":
17662/*!*********************************************!*\
17663  !*** ./node_modules/ramda/src/identical.js ***!
17664  \*********************************************/
17665/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17666
17667var _objectIs =
17668/*#__PURE__*/
17669__webpack_require__(/*! ./internal/_objectIs.js */ "./node_modules/ramda/src/internal/_objectIs.js");
17670
17671var _curry2 =
17672/*#__PURE__*/
17673__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17674/**
17675 * Returns true if its arguments are identical, false otherwise. Values are
17676 * identical if they reference the same memory. `NaN` is identical to `NaN`;
17677 * `0` and `-0` are not identical.
17678 *
17679 * Note this is merely a curried version of ES6 `Object.is`.
17680 *
17681 * @func
17682 * @memberOf R
17683 * @since v0.15.0
17684 * @category Relation
17685 * @sig a -> a -> Boolean
17686 * @param {*} a
17687 * @param {*} b
17688 * @return {Boolean}
17689 * @example
17690 *
17691 *      const o = {};
17692 *      R.identical(o, o); //=> true
17693 *      R.identical(1, 1); //=> true
17694 *      R.identical(1, '1'); //=> false
17695 *      R.identical([], []); //=> false
17696 *      R.identical(0, -0); //=> false
17697 *      R.identical(NaN, NaN); //=> true
17698 */
17699
17700
17701var identical =
17702/*#__PURE__*/
17703_curry2(_objectIs);
17704
17705module.exports = identical;
17706
17707/***/ }),
17708
vendor: 1,038 bytes, lines 17709-17750
17709/***/ "./node_modules/ramda/src/identity.js":
17710/*!********************************************!*\
17711  !*** ./node_modules/ramda/src/identity.js ***!
17712  \********************************************/
17713/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17714
17715var _curry1 =
17716/*#__PURE__*/
17717__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
17718
17719var _identity =
17720/*#__PURE__*/
17721__webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/src/internal/_identity.js");
17722/**
17723 * A function that does nothing but return the parameter supplied to it. Good
17724 * as a default or placeholder function.
17725 *
17726 * @func
17727 * @memberOf R
17728 * @since v0.1.0
17729 * @category Function
17730 * @sig a -> a
17731 * @param {*} x The value to return.
17732 * @return {*} The input value, `x`.
17733 * @example
17734 *
17735 *      R.identity(1); //=> 1
17736 *
17737 *      const obj = {};
17738 *      R.identity(obj) === obj; //=> true
17739 * @symb R.identity(a) = a
17740 */
17741
17742
17743var identity =
17744/*#__PURE__*/
17745_curry1(_identity);
17746
17747module.exports = identity;
17748
17749/***/ }),
17750
vendor: 1,837 bytes, lines 17751-17802
17751/***/ "./node_modules/ramda/src/ifElse.js":
17752/*!******************************************!*\
17753  !*** ./node_modules/ramda/src/ifElse.js ***!
17754  \******************************************/
17755/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17756
17757var _curry3 =
17758/*#__PURE__*/
17759__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
17760
17761var curryN =
17762/*#__PURE__*/
17763__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
17764/**
17765 * Creates a function that will process either the `onTrue` or the `onFalse`
17766 * function depending upon the result of the `condition` predicate.
17767 *
17768 * @func
17769 * @memberOf R
17770 * @since v0.8.0
17771 * @category Logic
17772 * @sig (*... -> Boolean) -> (*... -> *) -> (*... -> *) -> (*... -> *)
17773 * @param {Function} condition A predicate function
17774 * @param {Function} onTrue A function to invoke when the `condition` evaluates to a truthy value.
17775 * @param {Function} onFalse A function to invoke when the `condition` evaluates to a falsy value.
17776 * @return {Function} A new function that will process either the `onTrue` or the `onFalse`
17777 *                    function depending upon the result of the `condition` predicate.
17778 * @see R.unless, R.when, R.cond
17779 * @example
17780 *
17781 *      const incCount = R.ifElse(
17782 *        R.has('count'),
17783 *        R.over(R.lensProp('count'), R.inc),
17784 *        R.assoc('count', 1)
17785 *      );
17786 *      incCount({ count: 1 }); //=> { count: 2 }
17787 *      incCount({});           //=> { count: 1 }
17788 */
17789
17790
17791var ifElse =
17792/*#__PURE__*/
17793_curry3(function ifElse(condition, onTrue, onFalse) {
17794  return curryN(Math.max(condition.length, onTrue.length, onFalse.length), function _ifElse() {
17795    return condition.apply(this, arguments) ? onTrue.apply(this, arguments) : onFalse.apply(this, arguments);
17796  });
17797});
17798
17799module.exports = ifElse;
17800
17801/***/ }),
17802
vendor: 634 bytes, lines 17803-17835
17803/***/ "./node_modules/ramda/src/inc.js":
17804/*!***************************************!*\
17805  !*** ./node_modules/ramda/src/inc.js ***!
17806  \***************************************/
17807/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17808
17809var add =
17810/*#__PURE__*/
17811__webpack_require__(/*! ./add.js */ "./node_modules/ramda/src/add.js");
17812/**
17813 * Increments its argument.
17814 *
17815 * @func
17816 * @memberOf R
17817 * @since v0.9.0
17818 * @category Math
17819 * @sig Number -> Number
17820 * @param {Number} n
17821 * @return {Number} n + 1
17822 * @see R.dec
17823 * @example
17824 *
17825 *      R.inc(42); //=> 43
17826 */
17827
17828
17829var inc =
17830/*#__PURE__*/
17831add(1);
17832module.exports = inc;
17833
17834/***/ }),
17835
vendor: 1,345 bytes, lines 17836-17880
17836/***/ "./node_modules/ramda/src/includes.js":
17837/*!********************************************!*\
17838  !*** ./node_modules/ramda/src/includes.js ***!
17839  \********************************************/
17840/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17841
17842var _includes =
17843/*#__PURE__*/
17844__webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/src/internal/_includes.js");
17845
17846var _curry2 =
17847/*#__PURE__*/
17848__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
17849/**
17850 * Returns `true` if the specified value is equal, in [`R.equals`](#equals)
17851 * terms, to at least one element of the given list; `false` otherwise.
17852 * Also works with strings.
17853 *
17854 * @func
17855 * @memberOf R
17856 * @since v0.26.0
17857 * @category List
17858 * @sig a -> [a] -> Boolean
17859 * @param {Object} a The item to compare against.
17860 * @param {Array} list The array to consider.
17861 * @return {Boolean} `true` if an equivalent item is in the list, `false` otherwise.
17862 * @see R.any
17863 * @example
17864 *
17865 *      R.includes(3, [1, 2, 3]); //=> true
17866 *      R.includes(4, [1, 2, 3]); //=> false
17867 *      R.includes({ name: 'Fred' }, [{ name: 'Fred' }]); //=> true
17868 *      R.includes([42], [[42]]); //=> true
17869 *      R.includes('ba', 'banana'); //=>true
17870 */
17871
17872
17873var includes =
17874/*#__PURE__*/
17875_curry2(_includes);
17876
17877module.exports = includes;
17878
17879/***/ }),
17880
vendor: 27,486 bytes, lines 17881-18151
17881/***/ "./node_modules/ramda/src/index.js":
17882/*!*****************************************!*\
17883  !*** ./node_modules/ramda/src/index.js ***!
17884  \*****************************************/
17885/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
17886
17887module.exports = {};
17888module.exports.F = __webpack_require__(/*! ./F.js */ "./node_modules/ramda/src/F.js");
17889module.exports.T = __webpack_require__(/*! ./T.js */ "./node_modules/ramda/src/T.js");
17890module.exports.__ = __webpack_require__(/*! ./__.js */ "./node_modules/ramda/src/__.js");
17891module.exports.add = __webpack_require__(/*! ./add.js */ "./node_modules/ramda/src/add.js");
17892module.exports.addIndex = __webpack_require__(/*! ./addIndex.js */ "./node_modules/ramda/src/addIndex.js");
17893module.exports.adjust = __webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/src/adjust.js");
17894module.exports.all = __webpack_require__(/*! ./all.js */ "./node_modules/ramda/src/all.js");
17895module.exports.allPass = __webpack_require__(/*! ./allPass.js */ "./node_modules/ramda/src/allPass.js");
17896module.exports.always = __webpack_require__(/*! ./always.js */ "./node_modules/ramda/src/always.js");
17897module.exports.and = __webpack_require__(/*! ./and.js */ "./node_modules/ramda/src/and.js");
17898module.exports.any = __webpack_require__(/*! ./any.js */ "./node_modules/ramda/src/any.js");
17899module.exports.anyPass = __webpack_require__(/*! ./anyPass.js */ "./node_modules/ramda/src/anyPass.js");
17900module.exports.ap = __webpack_require__(/*! ./ap.js */ "./node_modules/ramda/src/ap.js");
17901module.exports.aperture = __webpack_require__(/*! ./aperture.js */ "./node_modules/ramda/src/aperture.js");
17902module.exports.append = __webpack_require__(/*! ./append.js */ "./node_modules/ramda/src/append.js");
17903module.exports.apply = __webpack_require__(/*! ./apply.js */ "./node_modules/ramda/src/apply.js");
17904module.exports.applySpec = __webpack_require__(/*! ./applySpec.js */ "./node_modules/ramda/src/applySpec.js");
17905module.exports.applyTo = __webpack_require__(/*! ./applyTo.js */ "./node_modules/ramda/src/applyTo.js");
17906module.exports.ascend = __webpack_require__(/*! ./ascend.js */ "./node_modules/ramda/src/ascend.js");
17907module.exports.assoc = __webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/src/assoc.js");
17908module.exports.assocPath = __webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/src/assocPath.js");
17909module.exports.binary = __webpack_require__(/*! ./binary.js */ "./node_modules/ramda/src/binary.js");
17910module.exports.bind = __webpack_require__(/*! ./bind.js */ "./node_modules/ramda/src/bind.js");
17911module.exports.both = __webpack_require__(/*! ./both.js */ "./node_modules/ramda/src/both.js");
17912module.exports.call = __webpack_require__(/*! ./call.js */ "./node_modules/ramda/src/call.js");
17913module.exports.chain = __webpack_require__(/*! ./chain.js */ "./node_modules/ramda/src/chain.js");
17914module.exports.clamp = __webpack_require__(/*! ./clamp.js */ "./node_modules/ramda/src/clamp.js");
17915module.exports.clone = __webpack_require__(/*! ./clone.js */ "./node_modules/ramda/src/clone.js");
17916module.exports.collectBy = __webpack_require__(/*! ./collectBy.js */ "./node_modules/ramda/src/collectBy.js");
17917module.exports.comparator = __webpack_require__(/*! ./comparator.js */ "./node_modules/ramda/src/comparator.js");
17918module.exports.complement = __webpack_require__(/*! ./complement.js */ "./node_modules/ramda/src/complement.js");
17919module.exports.compose = __webpack_require__(/*! ./compose.js */ "./node_modules/ramda/src/compose.js");
17920module.exports.composeWith = __webpack_require__(/*! ./composeWith.js */ "./node_modules/ramda/src/composeWith.js");
17921module.exports.concat = __webpack_require__(/*! ./concat.js */ "./node_modules/ramda/src/concat.js");
17922module.exports.cond = __webpack_require__(/*! ./cond.js */ "./node_modules/ramda/src/cond.js");
17923module.exports.construct = __webpack_require__(/*! ./construct.js */ "./node_modules/ramda/src/construct.js");
17924module.exports.constructN = __webpack_require__(/*! ./constructN.js */ "./node_modules/ramda/src/constructN.js");
17925module.exports.converge = __webpack_require__(/*! ./converge.js */ "./node_modules/ramda/src/converge.js");
17926module.exports.count = __webpack_require__(/*! ./count.js */ "./node_modules/ramda/src/count.js");
17927module.exports.countBy = __webpack_require__(/*! ./countBy.js */ "./node_modules/ramda/src/countBy.js");
17928module.exports.curry = __webpack_require__(/*! ./curry.js */ "./node_modules/ramda/src/curry.js");
17929module.exports.curryN = __webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
17930module.exports.dec = __webpack_require__(/*! ./dec.js */ "./node_modules/ramda/src/dec.js");
17931module.exports.defaultTo = __webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/src/defaultTo.js");
17932module.exports.descend = __webpack_require__(/*! ./descend.js */ "./node_modules/ramda/src/descend.js");
17933module.exports.difference = __webpack_require__(/*! ./difference.js */ "./node_modules/ramda/src/difference.js");
17934module.exports.differenceWith = __webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/src/differenceWith.js");
17935module.exports.dissoc = __webpack_require__(/*! ./dissoc.js */ "./node_modules/ramda/src/dissoc.js");
17936module.exports.dissocPath = __webpack_require__(/*! ./dissocPath.js */ "./node_modules/ramda/src/dissocPath.js");
17937module.exports.divide = __webpack_require__(/*! ./divide.js */ "./node_modules/ramda/src/divide.js");
17938module.exports.drop = __webpack_require__(/*! ./drop.js */ "./node_modules/ramda/src/drop.js");
17939module.exports.dropLast = __webpack_require__(/*! ./dropLast.js */ "./node_modules/ramda/src/dropLast.js");
17940module.exports.dropLastWhile = __webpack_require__(/*! ./dropLastWhile.js */ "./node_modules/ramda/src/dropLastWhile.js");
17941module.exports.dropRepeats = __webpack_require__(/*! ./dropRepeats.js */ "./node_modules/ramda/src/dropRepeats.js");
17942module.exports.dropRepeatsWith = __webpack_require__(/*! ./dropRepeatsWith.js */ "./node_modules/ramda/src/dropRepeatsWith.js");
17943module.exports.dropWhile = __webpack_require__(/*! ./dropWhile.js */ "./node_modules/ramda/src/dropWhile.js");
17944module.exports.either = __webpack_require__(/*! ./either.js */ "./node_modules/ramda/src/either.js");
17945module.exports.empty = __webpack_require__(/*! ./empty.js */ "./node_modules/ramda/src/empty.js");
17946module.exports.endsWith = __webpack_require__(/*! ./endsWith.js */ "./node_modules/ramda/src/endsWith.js");
17947module.exports.eqBy = __webpack_require__(/*! ./eqBy.js */ "./node_modules/ramda/src/eqBy.js");
17948module.exports.eqProps = __webpack_require__(/*! ./eqProps.js */ "./node_modules/ramda/src/eqProps.js");
17949module.exports.equals = __webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
17950module.exports.evolve = __webpack_require__(/*! ./evolve.js */ "./node_modules/ramda/src/evolve.js");
17951module.exports.filter = __webpack_require__(/*! ./filter.js */ "./node_modules/ramda/src/filter.js");
17952module.exports.find = __webpack_require__(/*! ./find.js */ "./node_modules/ramda/src/find.js");
17953module.exports.findIndex = __webpack_require__(/*! ./findIndex.js */ "./node_modules/ramda/src/findIndex.js");
17954module.exports.findLast = __webpack_require__(/*! ./findLast.js */ "./node_modules/ramda/src/findLast.js");
17955module.exports.findLastIndex = __webpack_require__(/*! ./findLastIndex.js */ "./node_modules/ramda/src/findLastIndex.js");
17956module.exports.flatten = __webpack_require__(/*! ./flatten.js */ "./node_modules/ramda/src/flatten.js");
17957module.exports.flip = __webpack_require__(/*! ./flip.js */ "./node_modules/ramda/src/flip.js");
17958module.exports.forEach = __webpack_require__(/*! ./forEach.js */ "./node_modules/ramda/src/forEach.js");
17959module.exports.forEachObjIndexed = __webpack_require__(/*! ./forEachObjIndexed.js */ "./node_modules/ramda/src/forEachObjIndexed.js");
17960module.exports.fromPairs = __webpack_require__(/*! ./fromPairs.js */ "./node_modules/ramda/src/fromPairs.js");
17961module.exports.groupBy = __webpack_require__(/*! ./groupBy.js */ "./node_modules/ramda/src/groupBy.js");
17962module.exports.groupWith = __webpack_require__(/*! ./groupWith.js */ "./node_modules/ramda/src/groupWith.js");
17963module.exports.gt = __webpack_require__(/*! ./gt.js */ "./node_modules/ramda/src/gt.js");
17964module.exports.gte = __webpack_require__(/*! ./gte.js */ "./node_modules/ramda/src/gte.js");
17965module.exports.has = __webpack_require__(/*! ./has.js */ "./node_modules/ramda/src/has.js");
17966module.exports.hasIn = __webpack_require__(/*! ./hasIn.js */ "./node_modules/ramda/src/hasIn.js");
17967module.exports.hasPath = __webpack_require__(/*! ./hasPath.js */ "./node_modules/ramda/src/hasPath.js");
17968module.exports.head = __webpack_require__(/*! ./head.js */ "./node_modules/ramda/src/head.js");
17969module.exports.identical = __webpack_require__(/*! ./identical.js */ "./node_modules/ramda/src/identical.js");
17970module.exports.identity = __webpack_require__(/*! ./identity.js */ "./node_modules/ramda/src/identity.js");
17971module.exports.ifElse = __webpack_require__(/*! ./ifElse.js */ "./node_modules/ramda/src/ifElse.js");
17972module.exports.inc = __webpack_require__(/*! ./inc.js */ "./node_modules/ramda/src/inc.js");
17973module.exports.includes = __webpack_require__(/*! ./includes.js */ "./node_modules/ramda/src/includes.js");
17974module.exports.indexBy = __webpack_require__(/*! ./indexBy.js */ "./node_modules/ramda/src/indexBy.js");
17975module.exports.indexOf = __webpack_require__(/*! ./indexOf.js */ "./node_modules/ramda/src/indexOf.js");
17976module.exports.init = __webpack_require__(/*! ./init.js */ "./node_modules/ramda/src/init.js");
17977module.exports.innerJoin = __webpack_require__(/*! ./innerJoin.js */ "./node_modules/ramda/src/innerJoin.js");
17978module.exports.insert = __webpack_require__(/*! ./insert.js */ "./node_modules/ramda/src/insert.js");
17979module.exports.insertAll = __webpack_require__(/*! ./insertAll.js */ "./node_modules/ramda/src/insertAll.js");
17980module.exports.intersection = __webpack_require__(/*! ./intersection.js */ "./node_modules/ramda/src/intersection.js");
17981module.exports.intersperse = __webpack_require__(/*! ./intersperse.js */ "./node_modules/ramda/src/intersperse.js");
17982module.exports.into = __webpack_require__(/*! ./into.js */ "./node_modules/ramda/src/into.js");
17983module.exports.invert = __webpack_require__(/*! ./invert.js */ "./node_modules/ramda/src/invert.js");
17984module.exports.invertObj = __webpack_require__(/*! ./invertObj.js */ "./node_modules/ramda/src/invertObj.js");
17985module.exports.invoker = __webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/src/invoker.js");
17986module.exports.is = __webpack_require__(/*! ./is.js */ "./node_modules/ramda/src/is.js");
17987module.exports.isEmpty = __webpack_require__(/*! ./isEmpty.js */ "./node_modules/ramda/src/isEmpty.js");
17988module.exports.isNil = __webpack_require__(/*! ./isNil.js */ "./node_modules/ramda/src/isNil.js");
17989module.exports.join = __webpack_require__(/*! ./join.js */ "./node_modules/ramda/src/join.js");
17990module.exports.juxt = __webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/src/juxt.js");
17991module.exports.keys = __webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
17992module.exports.keysIn = __webpack_require__(/*! ./keysIn.js */ "./node_modules/ramda/src/keysIn.js");
17993module.exports.last = __webpack_require__(/*! ./last.js */ "./node_modules/ramda/src/last.js");
17994module.exports.lastIndexOf = __webpack_require__(/*! ./lastIndexOf.js */ "./node_modules/ramda/src/lastIndexOf.js");
17995module.exports.length = __webpack_require__(/*! ./length.js */ "./node_modules/ramda/src/length.js");
17996module.exports.lens = __webpack_require__(/*! ./lens.js */ "./node_modules/ramda/src/lens.js");
17997module.exports.lensIndex = __webpack_require__(/*! ./lensIndex.js */ "./node_modules/ramda/src/lensIndex.js");
17998module.exports.lensPath = __webpack_require__(/*! ./lensPath.js */ "./node_modules/ramda/src/lensPath.js");
17999module.exports.lensProp = __webpack_require__(/*! ./lensProp.js */ "./node_modules/ramda/src/lensProp.js");
18000module.exports.lift = __webpack_require__(/*! ./lift.js */ "./node_modules/ramda/src/lift.js");
18001module.exports.liftN = __webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/src/liftN.js");
18002module.exports.lt = __webpack_require__(/*! ./lt.js */ "./node_modules/ramda/src/lt.js");
18003module.exports.lte = __webpack_require__(/*! ./lte.js */ "./node_modules/ramda/src/lte.js");
18004module.exports.map = __webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
18005module.exports.mapAccum = __webpack_require__(/*! ./mapAccum.js */ "./node_modules/ramda/src/mapAccum.js");
18006module.exports.mapAccumRight = __webpack_require__(/*! ./mapAccumRight.js */ "./node_modules/ramda/src/mapAccumRight.js");
18007module.exports.mapObjIndexed = __webpack_require__(/*! ./mapObjIndexed.js */ "./node_modules/ramda/src/mapObjIndexed.js");
18008module.exports.match = __webpack_require__(/*! ./match.js */ "./node_modules/ramda/src/match.js");
18009module.exports.mathMod = __webpack_require__(/*! ./mathMod.js */ "./node_modules/ramda/src/mathMod.js");
18010module.exports.max = __webpack_require__(/*! ./max.js */ "./node_modules/ramda/src/max.js");
18011module.exports.maxBy = __webpack_require__(/*! ./maxBy.js */ "./node_modules/ramda/src/maxBy.js");
18012module.exports.mean = __webpack_require__(/*! ./mean.js */ "./node_modules/ramda/src/mean.js");
18013module.exports.median = __webpack_require__(/*! ./median.js */ "./node_modules/ramda/src/median.js");
18014module.exports.memoizeWith = __webpack_require__(/*! ./memoizeWith.js */ "./node_modules/ramda/src/memoizeWith.js");
18015module.exports.mergeAll = __webpack_require__(/*! ./mergeAll.js */ "./node_modules/ramda/src/mergeAll.js");
18016module.exports.mergeDeepLeft = __webpack_require__(/*! ./mergeDeepLeft.js */ "./node_modules/ramda/src/mergeDeepLeft.js");
18017module.exports.mergeDeepRight = __webpack_require__(/*! ./mergeDeepRight.js */ "./node_modules/ramda/src/mergeDeepRight.js");
18018module.exports.mergeDeepWith = __webpack_require__(/*! ./mergeDeepWith.js */ "./node_modules/ramda/src/mergeDeepWith.js");
18019module.exports.mergeDeepWithKey = __webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/src/mergeDeepWithKey.js");
18020module.exports.mergeLeft = __webpack_require__(/*! ./mergeLeft.js */ "./node_modules/ramda/src/mergeLeft.js");
18021module.exports.mergeRight = __webpack_require__(/*! ./mergeRight.js */ "./node_modules/ramda/src/mergeRight.js");
18022module.exports.mergeWith = __webpack_require__(/*! ./mergeWith.js */ "./node_modules/ramda/src/mergeWith.js");
18023module.exports.mergeWithKey = __webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/src/mergeWithKey.js");
18024module.exports.min = __webpack_require__(/*! ./min.js */ "./node_modules/ramda/src/min.js");
18025module.exports.minBy = __webpack_require__(/*! ./minBy.js */ "./node_modules/ramda/src/minBy.js");
18026module.exports.modify = __webpack_require__(/*! ./modify.js */ "./node_modules/ramda/src/modify.js");
18027module.exports.modifyPath = __webpack_require__(/*! ./modifyPath.js */ "./node_modules/ramda/src/modifyPath.js");
18028module.exports.modulo = __webpack_require__(/*! ./modulo.js */ "./node_modules/ramda/src/modulo.js");
18029module.exports.move = __webpack_require__(/*! ./move.js */ "./node_modules/ramda/src/move.js");
18030module.exports.multiply = __webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/src/multiply.js");
18031module.exports.nAry = __webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/src/nAry.js");
18032module.exports.partialObject = __webpack_require__(/*! ./partialObject.js */ "./node_modules/ramda/src/partialObject.js");
18033module.exports.negate = __webpack_require__(/*! ./negate.js */ "./node_modules/ramda/src/negate.js");
18034module.exports.none = __webpack_require__(/*! ./none.js */ "./node_modules/ramda/src/none.js");
18035module.exports.not = __webpack_require__(/*! ./not.js */ "./node_modules/ramda/src/not.js");
18036module.exports.nth = __webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
18037module.exports.nthArg = __webpack_require__(/*! ./nthArg.js */ "./node_modules/ramda/src/nthArg.js");
18038module.exports.o = __webpack_require__(/*! ./o.js */ "./node_modules/ramda/src/o.js");
18039module.exports.objOf = __webpack_require__(/*! ./objOf.js */ "./node_modules/ramda/src/objOf.js");
18040module.exports.of = __webpack_require__(/*! ./of.js */ "./node_modules/ramda/src/of.js");
18041module.exports.omit = __webpack_require__(/*! ./omit.js */ "./node_modules/ramda/src/omit.js");
18042module.exports.on = __webpack_require__(/*! ./on.js */ "./node_modules/ramda/src/on.js");
18043module.exports.once = __webpack_require__(/*! ./once.js */ "./node_modules/ramda/src/once.js");
18044module.exports.or = __webpack_require__(/*! ./or.js */ "./node_modules/ramda/src/or.js");
18045module.exports.otherwise = __webpack_require__(/*! ./otherwise.js */ "./node_modules/ramda/src/otherwise.js");
18046module.exports.over = __webpack_require__(/*! ./over.js */ "./node_modules/ramda/src/over.js");
18047module.exports.pair = __webpack_require__(/*! ./pair.js */ "./node_modules/ramda/src/pair.js");
18048module.exports.partial = __webpack_require__(/*! ./partial.js */ "./node_modules/ramda/src/partial.js");
18049module.exports.partialRight = __webpack_require__(/*! ./partialRight.js */ "./node_modules/ramda/src/partialRight.js");
18050module.exports.partition = __webpack_require__(/*! ./partition.js */ "./node_modules/ramda/src/partition.js");
18051module.exports.path = __webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
18052module.exports.paths = __webpack_require__(/*! ./paths.js */ "./node_modules/ramda/src/paths.js");
18053module.exports.pathEq = __webpack_require__(/*! ./pathEq.js */ "./node_modules/ramda/src/pathEq.js");
18054module.exports.pathOr = __webpack_require__(/*! ./pathOr.js */ "./node_modules/ramda/src/pathOr.js");
18055module.exports.pathSatisfies = __webpack_require__(/*! ./pathSatisfies.js */ "./node_modules/ramda/src/pathSatisfies.js");
18056module.exports.pick = __webpack_require__(/*! ./pick.js */ "./node_modules/ramda/src/pick.js");
18057module.exports.pickAll = __webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/src/pickAll.js");
18058module.exports.pickBy = __webpack_require__(/*! ./pickBy.js */ "./node_modules/ramda/src/pickBy.js");
18059module.exports.pipe = __webpack_require__(/*! ./pipe.js */ "./node_modules/ramda/src/pipe.js");
18060module.exports.pipeWith = __webpack_require__(/*! ./pipeWith.js */ "./node_modules/ramda/src/pipeWith.js");
18061module.exports.pluck = __webpack_require__(/*! ./pluck.js */ "./node_modules/ramda/src/pluck.js");
18062module.exports.prepend = __webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/src/prepend.js");
18063module.exports.product = __webpack_require__(/*! ./product.js */ "./node_modules/ramda/src/product.js");
18064module.exports.project = __webpack_require__(/*! ./project.js */ "./node_modules/ramda/src/project.js");
18065module.exports.promap = __webpack_require__(/*! ./promap.js */ "./node_modules/ramda/src/promap.js");
18066module.exports.prop = __webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
18067module.exports.propEq = __webpack_require__(/*! ./propEq.js */ "./node_modules/ramda/src/propEq.js");
18068module.exports.propIs = __webpack_require__(/*! ./propIs.js */ "./node_modules/ramda/src/propIs.js");
18069module.exports.propOr = __webpack_require__(/*! ./propOr.js */ "./node_modules/ramda/src/propOr.js");
18070module.exports.propSatisfies = __webpack_require__(/*! ./propSatisfies.js */ "./node_modules/ramda/src/propSatisfies.js");
18071module.exports.props = __webpack_require__(/*! ./props.js */ "./node_modules/ramda/src/props.js");
18072module.exports.range = __webpack_require__(/*! ./range.js */ "./node_modules/ramda/src/range.js");
18073module.exports.reduce = __webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
18074module.exports.reduceBy = __webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/src/reduceBy.js");
18075module.exports.reduceRight = __webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/src/reduceRight.js");
18076module.exports.reduceWhile = __webpack_require__(/*! ./reduceWhile.js */ "./node_modules/ramda/src/reduceWhile.js");
18077module.exports.reduced = __webpack_require__(/*! ./reduced.js */ "./node_modules/ramda/src/reduced.js");
18078module.exports.reject = __webpack_require__(/*! ./reject.js */ "./node_modules/ramda/src/reject.js");
18079module.exports.remove = __webpack_require__(/*! ./remove.js */ "./node_modules/ramda/src/remove.js");
18080module.exports.repeat = __webpack_require__(/*! ./repeat.js */ "./node_modules/ramda/src/repeat.js");
18081module.exports.replace = __webpack_require__(/*! ./replace.js */ "./node_modules/ramda/src/replace.js");
18082module.exports.reverse = __webpack_require__(/*! ./reverse.js */ "./node_modules/ramda/src/reverse.js");
18083module.exports.scan = __webpack_require__(/*! ./scan.js */ "./node_modules/ramda/src/scan.js");
18084module.exports.sequence = __webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/src/sequence.js");
18085module.exports.set = __webpack_require__(/*! ./set.js */ "./node_modules/ramda/src/set.js");
18086module.exports.slice = __webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
18087module.exports.sort = __webpack_require__(/*! ./sort.js */ "./node_modules/ramda/src/sort.js");
18088module.exports.sortBy = __webpack_require__(/*! ./sortBy.js */ "./node_modules/ramda/src/sortBy.js");
18089module.exports.sortWith = __webpack_require__(/*! ./sortWith.js */ "./node_modules/ramda/src/sortWith.js");
18090module.exports.split = __webpack_require__(/*! ./split.js */ "./node_modules/ramda/src/split.js");
18091module.exports.splitAt = __webpack_require__(/*! ./splitAt.js */ "./node_modules/ramda/src/splitAt.js");
18092module.exports.splitEvery = __webpack_require__(/*! ./splitEvery.js */ "./node_modules/ramda/src/splitEvery.js");
18093module.exports.splitWhen = __webpack_require__(/*! ./splitWhen.js */ "./node_modules/ramda/src/splitWhen.js");
18094module.exports.splitWhenever = __webpack_require__(/*! ./splitWhenever.js */ "./node_modules/ramda/src/splitWhenever.js");
18095module.exports.startsWith = __webpack_require__(/*! ./startsWith.js */ "./node_modules/ramda/src/startsWith.js");
18096module.exports.subtract = __webpack_require__(/*! ./subtract.js */ "./node_modules/ramda/src/subtract.js");
18097module.exports.sum = __webpack_require__(/*! ./sum.js */ "./node_modules/ramda/src/sum.js");
18098module.exports.symmetricDifference = __webpack_require__(/*! ./symmetricDifference.js */ "./node_modules/ramda/src/symmetricDifference.js");
18099module.exports.symmetricDifferenceWith = __webpack_require__(/*! ./symmetricDifferenceWith.js */ "./node_modules/ramda/src/symmetricDifferenceWith.js");
18100module.exports.tail = __webpack_require__(/*! ./tail.js */ "./node_modules/ramda/src/tail.js");
18101module.exports.take = __webpack_require__(/*! ./take.js */ "./node_modules/ramda/src/take.js");
18102module.exports.takeLast = __webpack_require__(/*! ./takeLast.js */ "./node_modules/ramda/src/takeLast.js");
18103module.exports.takeLastWhile = __webpack_require__(/*! ./takeLastWhile.js */ "./node_modules/ramda/src/takeLastWhile.js");
18104module.exports.takeWhile = __webpack_require__(/*! ./takeWhile.js */ "./node_modules/ramda/src/takeWhile.js");
18105module.exports.tap = __webpack_require__(/*! ./tap.js */ "./node_modules/ramda/src/tap.js");
18106module.exports.test = __webpack_require__(/*! ./test.js */ "./node_modules/ramda/src/test.js");
18107module.exports.andThen = __webpack_require__(/*! ./andThen.js */ "./node_modules/ramda/src/andThen.js");
18108module.exports.times = __webpack_require__(/*! ./times.js */ "./node_modules/ramda/src/times.js");
18109module.exports.toLower = __webpack_require__(/*! ./toLower.js */ "./node_modules/ramda/src/toLower.js");
18110module.exports.toPairs = __webpack_require__(/*! ./toPairs.js */ "./node_modules/ramda/src/toPairs.js");
18111module.exports.toPairsIn = __webpack_require__(/*! ./toPairsIn.js */ "./node_modules/ramda/src/toPairsIn.js");
18112module.exports.toString = __webpack_require__(/*! ./toString.js */ "./node_modules/ramda/src/toString.js");
18113module.exports.toUpper = __webpack_require__(/*! ./toUpper.js */ "./node_modules/ramda/src/toUpper.js");
18114module.exports.transduce = __webpack_require__(/*! ./transduce.js */ "./node_modules/ramda/src/transduce.js");
18115module.exports.transpose = __webpack_require__(/*! ./transpose.js */ "./node_modules/ramda/src/transpose.js");
18116module.exports.traverse = __webpack_require__(/*! ./traverse.js */ "./node_modules/ramda/src/traverse.js");
18117module.exports.trim = __webpack_require__(/*! ./trim.js */ "./node_modules/ramda/src/trim.js");
18118module.exports.tryCatch = __webpack_require__(/*! ./tryCatch.js */ "./node_modules/ramda/src/tryCatch.js");
18119module.exports.type = __webpack_require__(/*! ./type.js */ "./node_modules/ramda/src/type.js");
18120module.exports.unapply = __webpack_require__(/*! ./unapply.js */ "./node_modules/ramda/src/unapply.js");
18121module.exports.unary = __webpack_require__(/*! ./unary.js */ "./node_modules/ramda/src/unary.js");
18122module.exports.uncurryN = __webpack_require__(/*! ./uncurryN.js */ "./node_modules/ramda/src/uncurryN.js");
18123module.exports.unfold = __webpack_require__(/*! ./unfold.js */ "./node_modules/ramda/src/unfold.js");
18124module.exports.union = __webpack_require__(/*! ./union.js */ "./node_modules/ramda/src/union.js");
18125module.exports.unionWith = __webpack_require__(/*! ./unionWith.js */ "./node_modules/ramda/src/unionWith.js");
18126module.exports.uniq = __webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/src/uniq.js");
18127module.exports.uniqBy = __webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/src/uniqBy.js");
18128module.exports.uniqWith = __webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/src/uniqWith.js");
18129module.exports.unless = __webpack_require__(/*! ./unless.js */ "./node_modules/ramda/src/unless.js");
18130module.exports.unnest = __webpack_require__(/*! ./unnest.js */ "./node_modules/ramda/src/unnest.js");
18131module.exports.until = __webpack_require__(/*! ./until.js */ "./node_modules/ramda/src/until.js");
18132module.exports.unwind = __webpack_require__(/*! ./unwind.js */ "./node_modules/ramda/src/unwind.js");
18133module.exports.update = __webpack_require__(/*! ./update.js */ "./node_modules/ramda/src/update.js");
18134module.exports.useWith = __webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/src/useWith.js");
18135module.exports.values = __webpack_require__(/*! ./values.js */ "./node_modules/ramda/src/values.js");
18136module.exports.valuesIn = __webpack_require__(/*! ./valuesIn.js */ "./node_modules/ramda/src/valuesIn.js");
18137module.exports.view = __webpack_require__(/*! ./view.js */ "./node_modules/ramda/src/view.js");
18138module.exports.when = __webpack_require__(/*! ./when.js */ "./node_modules/ramda/src/when.js");
18139module.exports.where = __webpack_require__(/*! ./where.js */ "./node_modules/ramda/src/where.js");
18140module.exports.whereAny = __webpack_require__(/*! ./whereAny.js */ "./node_modules/ramda/src/whereAny.js");
18141module.exports.whereEq = __webpack_require__(/*! ./whereEq.js */ "./node_modules/ramda/src/whereEq.js");
18142module.exports.without = __webpack_require__(/*! ./without.js */ "./node_modules/ramda/src/without.js");
18143module.exports.xor = __webpack_require__(/*! ./xor.js */ "./node_modules/ramda/src/xor.js");
18144module.exports.xprod = __webpack_require__(/*! ./xprod.js */ "./node_modules/ramda/src/xprod.js");
18145module.exports.zip = __webpack_require__(/*! ./zip.js */ "./node_modules/ramda/src/zip.js");
18146module.exports.zipObj = __webpack_require__(/*! ./zipObj.js */ "./node_modules/ramda/src/zipObj.js");
18147module.exports.zipWith = __webpack_require__(/*! ./zipWith.js */ "./node_modules/ramda/src/zipWith.js");
18148module.exports.thunkify = __webpack_require__(/*! ./thunkify.js */ "./node_modules/ramda/src/thunkify.js");
18149
18150/***/ }),
18151
vendor: 1,387 bytes, lines 18152-18195
18152/***/ "./node_modules/ramda/src/indexBy.js":
18153/*!*******************************************!*\
18154  !*** ./node_modules/ramda/src/indexBy.js ***!
18155  \*******************************************/
18156/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18157
18158var reduceBy =
18159/*#__PURE__*/
18160__webpack_require__(/*! ./reduceBy.js */ "./node_modules/ramda/src/reduceBy.js");
18161/**
18162 * Given a function that generates a key, turns a list of objects into an
18163 * object indexing the objects by the given key. Note that if multiple
18164 * objects generate the same value for the indexing key only the last value
18165 * will be included in the generated object.
18166 *
18167 * Acts as a transducer if a transformer is given in list position.
18168 *
18169 * @func
18170 * @memberOf R
18171 * @since v0.19.0
18172 * @category List
18173 * @typedefn Idx = String | Int | Symbol
18174 * @sig Idx a => (b -> a) -> [b] -> {a: b}
18175 * @param {Function} fn Function :: a -> Idx
18176 * @param {Array} array The array of objects to index
18177 * @return {Object} An object indexing each array element by the given property.
18178 * @see R.groupBy
18179 * @example
18180 *
18181 *      const list = [{id: 'xyz', title: 'A'}, {id: 'abc', title: 'B'}];
18182 *      R.indexBy(R.prop('id'), list);
18183 *      //=> {abc: {id: 'abc', title: 'B'}, xyz: {id: 'xyz', title: 'A'}}
18184 */
18185
18186
18187var indexBy =
18188/*#__PURE__*/
18189reduceBy(function (acc, elem) {
18190  return elem;
18191}, null);
18192module.exports = indexBy;
18193
18194/***/ }),
18195
vendor: 1,436 bytes, lines 18196-18243
18196/***/ "./node_modules/ramda/src/indexOf.js":
18197/*!*******************************************!*\
18198  !*** ./node_modules/ramda/src/indexOf.js ***!
18199  \*******************************************/
18200/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18201
18202var _curry2 =
18203/*#__PURE__*/
18204__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
18205
18206var _indexOf =
18207/*#__PURE__*/
18208__webpack_require__(/*! ./internal/_indexOf.js */ "./node_modules/ramda/src/internal/_indexOf.js");
18209
18210var _isArray =
18211/*#__PURE__*/
18212__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
18213/**
18214 * Returns the position of the first occurrence of an item in an array, or -1
18215 * if the item is not included in the array. [`R.equals`](#equals) is used to
18216 * determine equality.
18217 *
18218 * @func
18219 * @memberOf R
18220 * @since v0.1.0
18221 * @category List
18222 * @sig a -> [a] -> Number
18223 * @param {*} target The item to find.
18224 * @param {Array} xs The array to search in.
18225 * @return {Number} the index of the target, or -1 if the target is not found.
18226 * @see R.lastIndexOf, R.findIndex
18227 * @example
18228 *
18229 *      R.indexOf(3, [1,2,3,4]); //=> 2
18230 *      R.indexOf(10, [1,2,3,4]); //=> -1
18231 */
18232
18233
18234var indexOf =
18235/*#__PURE__*/
18236_curry2(function indexOf(target, xs) {
18237  return typeof xs.indexOf === 'function' && !_isArray(xs) ? xs.indexOf(target) : _indexOf(xs, target, 0);
18238});
18239
18240module.exports = indexOf;
18241
18242/***/ }),
18243
vendor: 968 bytes, lines 18244-18285
18244/***/ "./node_modules/ramda/src/init.js":
18245/*!****************************************!*\
18246  !*** ./node_modules/ramda/src/init.js ***!
18247  \****************************************/
18248/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18249
18250var slice =
18251/*#__PURE__*/
18252__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
18253/**
18254 * Returns all but the last element of the given list or string.
18255 *
18256 * @func
18257 * @memberOf R
18258 * @since v0.9.0
18259 * @category List
18260 * @sig [a] -> [a]
18261 * @sig String -> String
18262 * @param {*} list
18263 * @return {*}
18264 * @see R.last, R.head, R.tail
18265 * @example
18266 *
18267 *      R.init([1, 2, 3]);  //=> [1, 2]
18268 *      R.init([1, 2]);     //=> [1]
18269 *      R.init([1]);        //=> []
18270 *      R.init([]);         //=> []
18271 *
18272 *      R.init('abc');  //=> 'ab'
18273 *      R.init('ab');   //=> 'a'
18274 *      R.init('a');    //=> ''
18275 *      R.init('');     //=> ''
18276 */
18277
18278
18279var init =
18280/*#__PURE__*/
18281slice(0, -1);
18282module.exports = init;
18283
18284/***/ }),
18285
vendor: 2,112 bytes, lines 18286-18351
18286/***/ "./node_modules/ramda/src/innerJoin.js":
18287/*!*********************************************!*\
18288  !*** ./node_modules/ramda/src/innerJoin.js ***!
18289  \*********************************************/
18290/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18291
18292var _includesWith =
18293/*#__PURE__*/
18294__webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/src/internal/_includesWith.js");
18295
18296var _curry3 =
18297/*#__PURE__*/
18298__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
18299
18300var _filter =
18301/*#__PURE__*/
18302__webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/src/internal/_filter.js");
18303/**
18304 * Takes a predicate `pred`, a list `xs`, and a list `ys`, and returns a list
18305 * `xs'` comprising each of the elements of `xs` which is equal to one or more
18306 * elements of `ys` according to `pred`.
18307 *
18308 * `pred` must be a binary function expecting an element from each list.
18309 *
18310 * `xs`, `ys`, and `xs'` are treated as sets, semantically, so ordering should
18311 * not be significant, but since `xs'` is ordered the implementation guarantees
18312 * that its values are in the same order as they appear in `xs`. Duplicates are
18313 * not removed, so `xs'` may contain duplicates if `xs` contains duplicates.
18314 *
18315 * @func
18316 * @memberOf R
18317 * @since v0.24.0
18318 * @category Relation
18319 * @sig ((a, b) -> Boolean) -> [a] -> [b] -> [a]
18320 * @param {Function} pred
18321 * @param {Array} xs
18322 * @param {Array} ys
18323 * @return {Array}
18324 * @see R.intersection
18325 * @example
18326 *
18327 *      R.innerJoin(
18328 *        (record, id) => record.id === id,
18329 *        [{id: 824, name: 'Richie Furay'},
18330 *         {id: 956, name: 'Dewey Martin'},
18331 *         {id: 313, name: 'Bruce Palmer'},
18332 *         {id: 456, name: 'Stephen Stills'},
18333 *         {id: 177, name: 'Neil Young'}],
18334 *        [177, 456, 999]
18335 *      );
18336 *      //=> [{id: 456, name: 'Stephen Stills'}, {id: 177, name: 'Neil Young'}]
18337 */
18338
18339
18340var innerJoin =
18341/*#__PURE__*/
18342_curry3(function innerJoin(pred, xs, ys) {
18343  return _filter(function (x) {
18344    return _includesWith(pred, x, ys);
18345  }, xs);
18346});
18347
18348module.exports = innerJoin;
18349
18350/***/ }),
18351
vendor: 1,296 bytes, lines 18352-18394
18352/***/ "./node_modules/ramda/src/insert.js":
18353/*!******************************************!*\
18354  !*** ./node_modules/ramda/src/insert.js ***!
18355  \******************************************/
18356/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18357
18358var _curry3 =
18359/*#__PURE__*/
18360__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
18361/**
18362 * Inserts the supplied element into the list, at the specified `index`. _Note that
18363
18364 * this is not destructive_: it returns a copy of the list with the changes.
18365 * <small>No lists have been harmed in the application of this function.</small>
18366 *
18367 * @func
18368 * @memberOf R
18369 * @since v0.2.2
18370 * @category List
18371 * @sig Number -> a -> [a] -> [a]
18372 * @param {Number} index The position to insert the element
18373 * @param {*} elt The element to insert into the Array
18374 * @param {Array} list The list to insert into
18375 * @return {Array} A new Array with `elt` inserted at `index`.
18376 * @example
18377 *
18378 *      R.insert(2, 'x', [1,2,3,4]); //=> [1,2,'x',3,4]
18379 */
18380
18381
18382var insert =
18383/*#__PURE__*/
18384_curry3(function insert(idx, elt, list) {
18385  idx = idx < list.length && idx >= 0 ? idx : list.length;
18386  var result = Array.prototype.slice.call(list, 0);
18387  result.splice(idx, 0, elt);
18388  return result;
18389});
18390
18391module.exports = insert;
18392
18393/***/ }),
18394
vendor: 1,370 bytes, lines 18395-18434
18395/***/ "./node_modules/ramda/src/insertAll.js":
18396/*!*********************************************!*\
18397  !*** ./node_modules/ramda/src/insertAll.js ***!
18398  \*********************************************/
18399/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18400
18401var _curry3 =
18402/*#__PURE__*/
18403__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
18404/**
18405 * Inserts the sub-list into the list, at the specified `index`. _Note that this is not
18406 * destructive_: it returns a copy of the list with the changes.
18407 * <small>No lists have been harmed in the application of this function.</small>
18408 *
18409 * @func
18410 * @memberOf R
18411 * @since v0.9.0
18412 * @category List
18413 * @sig Number -> [a] -> [a] -> [a]
18414 * @param {Number} index The position to insert the sub-list
18415 * @param {Array} elts The sub-list to insert into the Array
18416 * @param {Array} list The list to insert the sub-list into
18417 * @return {Array} A new Array with `elts` inserted starting at `index`.
18418 * @example
18419 *
18420 *      R.insertAll(2, ['x','y','z'], [1,2,3,4]); //=> [1,2,'x','y','z',3,4]
18421 */
18422
18423
18424var insertAll =
18425/*#__PURE__*/
18426_curry3(function insertAll(idx, elts, list) {
18427  idx = idx < list.length && idx >= 0 ? idx : list.length;
18428  return [].concat(Array.prototype.slice.call(list, 0, idx), elts, Array.prototype.slice.call(list, idx));
18429});
18430
18431module.exports = insertAll;
18432
18433/***/ }),
18434
vendor: 5,051 bytes, lines 18435-18646
18435/***/ "./node_modules/ramda/src/internal/_Set.js":
18436/*!*************************************************!*\
18437  !*** ./node_modules/ramda/src/internal/_Set.js ***!
18438  \*************************************************/
18439/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18440
18441var _includes =
18442/*#__PURE__*/
18443__webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/src/internal/_includes.js");
18444
18445var _Set =
18446/*#__PURE__*/
18447function () {
18448  function _Set() {
18449    /* globals Set */
18450    this._nativeSet = typeof Set === 'function' ? new Set() : null;
18451    this._items = {};
18452  }
18453
18454  // until we figure out why jsdoc chokes on this
18455  // @param item The item to add to the Set
18456  // @returns {boolean} true if the item did not exist prior, otherwise false
18457  //
18458  _Set.prototype.add = function (item) {
18459    return !hasOrAdd(item, true, this);
18460  }; //
18461  // @param item The item to check for existence in the Set
18462  // @returns {boolean} true if the item exists in the Set, otherwise false
18463  //
18464
18465
18466  _Set.prototype.has = function (item) {
18467    return hasOrAdd(item, false, this);
18468  }; //
18469  // Combines the logic for checking whether an item is a member of the set and
18470  // for adding a new item to the set.
18471  //
18472  // @param item       The item to check or add to the Set instance.
18473  // @param shouldAdd  If true, the item will be added to the set if it doesn't
18474  //                   already exist.
18475  // @param set        The set instance to check or add to.
18476  // @return {boolean} true if the item already existed, otherwise false.
18477  //
18478
18479
18480  return _Set;
18481}();
18482
18483function hasOrAdd(item, shouldAdd, set) {
18484  var type = typeof item;
18485  var prevSize, newSize;
18486
18487  switch (type) {
18488    case 'string':
18489    case 'number':
18490      // distinguish between +0 and -0
18491      if (item === 0 && 1 / item === -Infinity) {
18492        if (set._items['-0']) {
18493          return true;
18494        } else {
18495          if (shouldAdd) {
18496            set._items['-0'] = true;
18497          }
18498
18499          return false;
18500        }
18501      } // these types can all utilise the native Set
18502
18503
18504      if (set._nativeSet !== null) {
18505        if (shouldAdd) {
18506          prevSize = set._nativeSet.size;
18507
18508          set._nativeSet.add(item);
18509
18510          newSize = set._nativeSet.size;
18511          return newSize === prevSize;
18512        } else {
18513          return set._nativeSet.has(item);
18514        }
18515      } else {
18516        if (!(type in set._items)) {
18517          if (shouldAdd) {
18518            set._items[type] = {};
18519            set._items[type][item] = true;
18520          }
18521
18522          return false;
18523        } else if (item in set._items[type]) {
18524          return true;
18525        } else {
18526          if (shouldAdd) {
18527            set._items[type][item] = true;
18528          }
18529
18530          return false;
18531        }
18532      }
18533
18534    case 'boolean':
18535      // set._items['boolean'] holds a two element array
18536      // representing [ falseExists, trueExists ]
18537      if (type in set._items) {
18538        var bIdx = item ? 1 : 0;
18539
18540        if (set._items[type][bIdx]) {
18541          return true;
18542        } else {
18543          if (shouldAdd) {
18544            set._items[type][bIdx] = true;
18545          }
18546
18547          return false;
18548        }
18549      } else {
18550        if (shouldAdd) {
18551          set._items[type] = item ? [false, true] : [true, false];
18552        }
18553
18554        return false;
18555      }
18556
18557    case 'function':
18558      // compare functions for reference equality
18559      if (set._nativeSet !== null) {
18560        if (shouldAdd) {
18561          prevSize = set._nativeSet.size;
18562
18563          set._nativeSet.add(item);
18564
18565          newSize = set._nativeSet.size;
18566          return newSize === prevSize;
18567        } else {
18568          return set._nativeSet.has(item);
18569        }
18570      } else {
18571        if (!(type in set._items)) {
18572          if (shouldAdd) {
18573            set._items[type] = [item];
18574          }
18575
18576          return false;
18577        }
18578
18579        if (!_includes(item, set._items[type])) {
18580          if (shouldAdd) {
18581            set._items[type].push(item);
18582          }
18583
18584          return false;
18585        }
18586
18587        return true;
18588      }
18589
18590    case 'undefined':
18591      if (set._items[type]) {
18592        return true;
18593      } else {
18594        if (shouldAdd) {
18595          set._items[type] = true;
18596        }
18597
18598        return false;
18599      }
18600
18601    case 'object':
18602      if (item === null) {
18603        if (!set._items['null']) {
18604          if (shouldAdd) {
18605            set._items['null'] = true;
18606          }
18607
18608          return false;
18609        }
18610
18611        return true;
18612      }
18613
18614    /* falls through */
18615
18616    default:
18617      // reduce the search size of heterogeneous sets by creating buckets
18618      // for each type.
18619      type = Object.prototype.toString.call(item);
18620
18621      if (!(type in set._items)) {
18622        if (shouldAdd) {
18623          set._items[type] = [item];
18624        }
18625
18626        return false;
18627      } // scan through all previously applied items
18628
18629
18630      if (!_includes(item, set._items[type])) {
18631        if (shouldAdd) {
18632          set._items[type].push(item);
18633        }
18634
18635        return false;
18636      }
18637
18638      return true;
18639  }
18640} // A simple Set type that honours R.equals semantics
18641
18642
18643module.exports = _Set;
18644
18645/***/ }),
18646
vendor: 550 bytes, lines 18647-18669
18647/***/ "./node_modules/ramda/src/internal/_aperture.js":
18648/*!******************************************************!*\
18649  !*** ./node_modules/ramda/src/internal/_aperture.js ***!
18650  \******************************************************/
18651/***/ ((module) => {
18652
18653function _aperture(n, list) {
18654  var idx = 0;
18655  var limit = list.length - (n - 1);
18656  var acc = new Array(limit >= 0 ? limit : 0);
18657
18658  while (idx < limit) {
18659    acc[idx] = Array.prototype.slice.call(list, idx, idx + n);
18660    idx += 1;
18661  }
18662
18663  return acc;
18664}
18665
18666module.exports = _aperture;
18667
18668/***/ }),
18669
vendor: 1,684 bytes, lines 18670-18742
18670/***/ "./node_modules/ramda/src/internal/_arity.js":
18671/*!***************************************************!*\
18672  !*** ./node_modules/ramda/src/internal/_arity.js ***!
18673  \***************************************************/
18674/***/ ((module) => {
18675
18676function _arity(n, fn) {
18677  /* eslint-disable no-unused-vars */
18678  switch (n) {
18679    case 0:
18680      return function () {
18681        return fn.apply(this, arguments);
18682      };
18683
18684    case 1:
18685      return function (a0) {
18686        return fn.apply(this, arguments);
18687      };
18688
18689    case 2:
18690      return function (a0, a1) {
18691        return fn.apply(this, arguments);
18692      };
18693
18694    case 3:
18695      return function (a0, a1, a2) {
18696        return fn.apply(this, arguments);
18697      };
18698
18699    case 4:
18700      return function (a0, a1, a2, a3) {
18701        return fn.apply(this, arguments);
18702      };
18703
18704    case 5:
18705      return function (a0, a1, a2, a3, a4) {
18706        return fn.apply(this, arguments);
18707      };
18708
18709    case 6:
18710      return function (a0, a1, a2, a3, a4, a5) {
18711        return fn.apply(this, arguments);
18712      };
18713
18714    case 7:
18715      return function (a0, a1, a2, a3, a4, a5, a6) {
18716        return fn.apply(this, arguments);
18717      };
18718
18719    case 8:
18720      return function (a0, a1, a2, a3, a4, a5, a6, a7) {
18721        return fn.apply(this, arguments);
18722      };
18723
18724    case 9:
18725      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {
18726        return fn.apply(this, arguments);
18727      };
18728
18729    case 10:
18730      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
18731        return fn.apply(this, arguments);
18732      };
18733
18734    default:
18735      throw new Error('First argument to _arity must be a non-negative integer no greater than ten');
18736  }
18737}
18738
18739module.exports = _arity;
18740
18741/***/ }),
18742
vendor: 497 bytes, lines 18743-18763
18743/***/ "./node_modules/ramda/src/internal/_arrayFromIterator.js":
18744/*!***************************************************************!*\
18745  !*** ./node_modules/ramda/src/internal/_arrayFromIterator.js ***!
18746  \***************************************************************/
18747/***/ ((module) => {
18748
18749function _arrayFromIterator(iter) {
18750  var list = [];
18751  var next;
18752
18753  while (!(next = iter.next()).done) {
18754    list.push(next.value);
18755  }
18756
18757  return list;
18758}
18759
18760module.exports = _arrayFromIterator;
18761
18762/***/ }),
18763
vendor: 800 bytes, lines 18764-18787
18764/***/ "./node_modules/ramda/src/internal/_assertPromise.js":
18765/*!***********************************************************!*\
18766  !*** ./node_modules/ramda/src/internal/_assertPromise.js ***!
18767  \***********************************************************/
18768/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18769
18770var _isFunction =
18771/*#__PURE__*/
18772__webpack_require__(/*! ./_isFunction.js */ "./node_modules/ramda/src/internal/_isFunction.js");
18773
18774var _toString =
18775/*#__PURE__*/
18776__webpack_require__(/*! ./_toString.js */ "./node_modules/ramda/src/internal/_toString.js");
18777
18778function _assertPromise(name, p) {
18779  if (p == null || !_isFunction(p.then)) {
18780    throw new TypeError('`' + name + '` expected a Promise, received ' + _toString(p, []));
18781  }
18782}
18783
18784module.exports = _assertPromise;
18785
18786/***/ }),
18787
vendor: 1,354 bytes, lines 18788-18835
18788/***/ "./node_modules/ramda/src/internal/_assoc.js":
18789/*!***************************************************!*\
18790  !*** ./node_modules/ramda/src/internal/_assoc.js ***!
18791  \***************************************************/
18792/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18793
18794var _isArray =
18795/*#__PURE__*/
18796__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
18797
18798var _isInteger =
18799/*#__PURE__*/
18800__webpack_require__(/*! ./_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
18801/**
18802 * Makes a shallow clone of an object, setting or overriding the specified
18803 * property with the given value. Note that this copies and flattens prototype
18804 * properties onto the new object as well. All non-primitive properties are
18805 * copied by reference.
18806 *
18807 * @private
18808 * @param {String|Number} prop The property name to set
18809 * @param {*} val The new value
18810 * @param {Object|Array} obj The object to clone
18811 * @return {Object|Array} A new object equivalent to the original except for the changed property.
18812 */
18813
18814
18815function _assoc(prop, val, obj) {
18816  if (_isInteger(prop) && _isArray(obj)) {
18817    var arr = [].concat(obj);
18818    arr[prop] = val;
18819    return arr;
18820  }
18821
18822  var result = {};
18823
18824  for (var p in obj) {
18825    result[p] = obj[p];
18826  }
18827
18828  result[prop] = val;
18829  return result;
18830}
18831
18832module.exports = _assoc;
18833
18834/***/ }),
18835
vendor: 1,254 bytes, lines 18836-18873
18836/***/ "./node_modules/ramda/src/internal/_checkForMethod.js":
18837/*!************************************************************!*\
18838  !*** ./node_modules/ramda/src/internal/_checkForMethod.js ***!
18839  \************************************************************/
18840/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18841
18842var _isArray =
18843/*#__PURE__*/
18844__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
18845/**
18846 * This checks whether a function has a [methodname] function. If it isn't an
18847 * array it will execute that function otherwise it will default to the ramda
18848 * implementation.
18849 *
18850 * @private
18851 * @param {Function} fn ramda implementation
18852 * @param {String} methodname property to check for a custom implementation
18853 * @return {Object} Whatever the return value of the method is.
18854 */
18855
18856
18857function _checkForMethod(methodname, fn) {
18858  return function () {
18859    var length = arguments.length;
18860
18861    if (length === 0) {
18862      return fn();
18863    }
18864
18865    var obj = arguments[length - 1];
18866    return _isArray(obj) || typeof obj[methodname] !== 'function' ? fn.apply(this, arguments) : obj[methodname].apply(obj, Array.prototype.slice.call(arguments, 0, length - 1));
18867  };
18868}
18869
18870module.exports = _checkForMethod;
18871
18872/***/ }),
18873
vendor: 2,003 bytes, lines 18874-18958
18874/***/ "./node_modules/ramda/src/internal/_clone.js":
18875/*!***************************************************!*\
18876  !*** ./node_modules/ramda/src/internal/_clone.js ***!
18877  \***************************************************/
18878/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
18879
18880var _cloneRegExp =
18881/*#__PURE__*/
18882__webpack_require__(/*! ./_cloneRegExp.js */ "./node_modules/ramda/src/internal/_cloneRegExp.js");
18883
18884var type =
18885/*#__PURE__*/
18886__webpack_require__(/*! ../type.js */ "./node_modules/ramda/src/type.js");
18887/**
18888 * Copies an object.
18889 *
18890 * @private
18891 * @param {*} value The value to be copied
18892 * @param {Array} refFrom Array containing the source references
18893 * @param {Array} refTo Array containing the copied source references
18894 * @param {Boolean} deep Whether or not to perform deep cloning.
18895 * @return {*} The copied value.
18896 */
18897
18898
18899function _clone(value, refFrom, refTo, deep) {
18900  var copy = function copy(copiedValue) {
18901    var len = refFrom.length;
18902    var idx = 0;
18903
18904    while (idx < len) {
18905      if (value === refFrom[idx]) {
18906        return refTo[idx];
18907      }
18908
18909      idx += 1;
18910    }
18911
18912    refFrom[idx] = value;
18913    refTo[idx] = copiedValue;
18914
18915    for (var key in value) {
18916      if (value.hasOwnProperty(key)) {
18917        copiedValue[key] = deep ? _clone(value[key], refFrom, refTo, true) : value[key];
18918      }
18919    }
18920
18921    return copiedValue;
18922  };
18923
18924  switch (type(value)) {
18925    case 'Object':
18926      return copy(Object.create(Object.getPrototypeOf(value)));
18927
18928    case 'Array':
18929      return copy([]);
18930
18931    case 'Date':
18932      return new Date(value.valueOf());
18933
18934    case 'RegExp':
18935      return _cloneRegExp(value);
18936
18937    case 'Int8Array':
18938    case 'Uint8Array':
18939    case 'Uint8ClampedArray':
18940    case 'Int16Array':
18941    case 'Uint16Array':
18942    case 'Int32Array':
18943    case 'Uint32Array':
18944    case 'Float32Array':
18945    case 'Float64Array':
18946    case 'BigInt64Array':
18947    case 'BigUint64Array':
18948      return value.slice();
18949
18950    default:
18951      return value;
18952  }
18953}
18954
18955module.exports = _clone;
18956
18957/***/ }),
18958
vendor: 542 bytes, lines 18959-18972
18959/***/ "./node_modules/ramda/src/internal/_cloneRegExp.js":
18960/*!*********************************************************!*\
18961  !*** ./node_modules/ramda/src/internal/_cloneRegExp.js ***!
18962  \*********************************************************/
18963/***/ ((module) => {
18964
18965function _cloneRegExp(pattern) {
18966  return new RegExp(pattern.source, (pattern.global ? 'g' : '') + (pattern.ignoreCase ? 'i' : '') + (pattern.multiline ? 'm' : '') + (pattern.sticky ? 'y' : '') + (pattern.unicode ? 'u' : ''));
18967}
18968
18969module.exports = _cloneRegExp;
18970
18971/***/ }),
18972
vendor: 402 bytes, lines 18973-18988
18973/***/ "./node_modules/ramda/src/internal/_complement.js":
18974/*!********************************************************!*\
18975  !*** ./node_modules/ramda/src/internal/_complement.js ***!
18976  \********************************************************/
18977/***/ ((module) => {
18978
18979function _complement(f) {
18980  return function () {
18981    return !f.apply(this, arguments);
18982  };
18983}
18984
18985module.exports = _complement;
18986
18987/***/ }),
18988
vendor: 971 bytes, lines 18989-19033
18989/***/ "./node_modules/ramda/src/internal/_concat.js":
18990/*!****************************************************!*\
18991  !*** ./node_modules/ramda/src/internal/_concat.js ***!
18992  \****************************************************/
18993/***/ ((module) => {
18994
18995/**
18996 * Private `concat` function to merge two array-like objects.
18997 *
18998 * @private
18999 * @param {Array|Arguments} [set1=[]] An array-like object.
19000 * @param {Array|Arguments} [set2=[]] An array-like object.
19001 * @return {Array} A new, merged array.
19002 * @example
19003 *
19004 *      _concat([4, 5, 6], [1, 2, 3]); //=> [4, 5, 6, 1, 2, 3]
19005 */
19006function _concat(set1, set2) {
19007  set1 = set1 || [];
19008  set2 = set2 || [];
19009  var idx;
19010  var len1 = set1.length;
19011  var len2 = set2.length;
19012  var result = [];
19013  idx = 0;
19014
19015  while (idx < len1) {
19016    result[result.length] = set1[idx];
19017    idx += 1;
19018  }
19019
19020  idx = 0;
19021
19022  while (idx < len2) {
19023    result[result.length] = set2[idx];
19024    idx += 1;
19025  }
19026
19027  return result;
19028}
19029
19030module.exports = _concat;
19031
19032/***/ }),
19033
vendor: 876 bytes, lines 19034-19059
19034/***/ "./node_modules/ramda/src/internal/_createPartialApplicator.js":
19035/*!*********************************************************************!*\
19036  !*** ./node_modules/ramda/src/internal/_createPartialApplicator.js ***!
19037  \*********************************************************************/
19038/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19039
19040var _arity =
19041/*#__PURE__*/
19042__webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
19043
19044var _curry2 =
19045/*#__PURE__*/
19046__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
19047
19048function _createPartialApplicator(concat) {
19049  return _curry2(function (fn, args) {
19050    return _arity(Math.max(0, fn.length - args.length), function () {
19051      return fn.apply(this, concat(args, arguments));
19052    });
19053  });
19054}
19055
19056module.exports = _createPartialApplicator;
19057
19058/***/ }),
19059
vendor: 846 bytes, lines 19060-19092
19060/***/ "./node_modules/ramda/src/internal/_curry1.js":
19061/*!****************************************************!*\
19062  !*** ./node_modules/ramda/src/internal/_curry1.js ***!
19063  \****************************************************/
19064/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19065
19066var _isPlaceholder =
19067/*#__PURE__*/
19068__webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/src/internal/_isPlaceholder.js");
19069/**
19070 * Optimized internal one-arity curry function.
19071 *
19072 * @private
19073 * @category Function
19074 * @param {Function} fn The function to curry.
19075 * @return {Function} The curried function.
19076 */
19077
19078
19079function _curry1(fn) {
19080  return function f1(a) {
19081    if (arguments.length === 0 || _isPlaceholder(a)) {
19082      return f1;
19083    } else {
19084      return fn.apply(this, arguments);
19085    }
19086  };
19087}
19088
19089module.exports = _curry1;
19090
19091/***/ }),
19092
vendor: 1,283 bytes, lines 19093-19140
19093/***/ "./node_modules/ramda/src/internal/_curry2.js":
19094/*!****************************************************!*\
19095  !*** ./node_modules/ramda/src/internal/_curry2.js ***!
19096  \****************************************************/
19097/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19098
19099var _curry1 =
19100/*#__PURE__*/
19101__webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
19102
19103var _isPlaceholder =
19104/*#__PURE__*/
19105__webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/src/internal/_isPlaceholder.js");
19106/**
19107 * Optimized internal two-arity curry function.
19108 *
19109 * @private
19110 * @category Function
19111 * @param {Function} fn The function to curry.
19112 * @return {Function} The curried function.
19113 */
19114
19115
19116function _curry2(fn) {
19117  return function f2(a, b) {
19118    switch (arguments.length) {
19119      case 0:
19120        return f2;
19121
19122      case 1:
19123        return _isPlaceholder(a) ? f2 : _curry1(function (_b) {
19124          return fn(a, _b);
19125        });
19126
19127      default:
19128        return _isPlaceholder(a) && _isPlaceholder(b) ? f2 : _isPlaceholder(a) ? _curry1(function (_a) {
19129          return fn(_a, b);
19130        }) : _isPlaceholder(b) ? _curry1(function (_b) {
19131          return fn(a, _b);
19132        }) : fn(a, b);
19133    }
19134  };
19135}
19136
19137module.exports = _curry2;
19138
19139/***/ }),
19140
vendor: 2,203 bytes, lines 19141-19209
19141/***/ "./node_modules/ramda/src/internal/_curry3.js":
19142/*!****************************************************!*\
19143  !*** ./node_modules/ramda/src/internal/_curry3.js ***!
19144  \****************************************************/
19145/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19146
19147var _curry1 =
19148/*#__PURE__*/
19149__webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
19150
19151var _curry2 =
19152/*#__PURE__*/
19153__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
19154
19155var _isPlaceholder =
19156/*#__PURE__*/
19157__webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/src/internal/_isPlaceholder.js");
19158/**
19159 * Optimized internal three-arity curry function.
19160 *
19161 * @private
19162 * @category Function
19163 * @param {Function} fn The function to curry.
19164 * @return {Function} The curried function.
19165 */
19166
19167
19168function _curry3(fn) {
19169  return function f3(a, b, c) {
19170    switch (arguments.length) {
19171      case 0:
19172        return f3;
19173
19174      case 1:
19175        return _isPlaceholder(a) ? f3 : _curry2(function (_b, _c) {
19176          return fn(a, _b, _c);
19177        });
19178
19179      case 2:
19180        return _isPlaceholder(a) && _isPlaceholder(b) ? f3 : _isPlaceholder(a) ? _curry2(function (_a, _c) {
19181          return fn(_a, b, _c);
19182        }) : _isPlaceholder(b) ? _curry2(function (_b, _c) {
19183          return fn(a, _b, _c);
19184        }) : _curry1(function (_c) {
19185          return fn(a, b, _c);
19186        });
19187
19188      default:
19189        return _isPlaceholder(a) && _isPlaceholder(b) && _isPlaceholder(c) ? f3 : _isPlaceholder(a) && _isPlaceholder(b) ? _curry2(function (_a, _b) {
19190          return fn(_a, _b, c);
19191        }) : _isPlaceholder(a) && _isPlaceholder(c) ? _curry2(function (_a, _c) {
19192          return fn(_a, b, _c);
19193        }) : _isPlaceholder(b) && _isPlaceholder(c) ? _curry2(function (_b, _c) {
19194          return fn(a, _b, _c);
19195        }) : _isPlaceholder(a) ? _curry1(function (_a) {
19196          return fn(_a, b, c);
19197        }) : _isPlaceholder(b) ? _curry1(function (_b) {
19198          return fn(a, _b, c);
19199        }) : _isPlaceholder(c) ? _curry1(function (_c) {
19200          return fn(a, b, _c);
19201        }) : fn(a, b, c);
19202    }
19203  };
19204}
19205
19206module.exports = _curry3;
19207
19208/***/ }),
19209
vendor: 1,612 bytes, lines 19210-19268
19210/***/ "./node_modules/ramda/src/internal/_curryN.js":
19211/*!****************************************************!*\
19212  !*** ./node_modules/ramda/src/internal/_curryN.js ***!
19213  \****************************************************/
19214/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19215
19216var _arity =
19217/*#__PURE__*/
19218__webpack_require__(/*! ./_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
19219
19220var _isPlaceholder =
19221/*#__PURE__*/
19222__webpack_require__(/*! ./_isPlaceholder.js */ "./node_modules/ramda/src/internal/_isPlaceholder.js");
19223/**
19224 * Internal curryN function.
19225 *
19226 * @private
19227 * @category Function
19228 * @param {Number} length The arity of the curried function.
19229 * @param {Array} received An array of arguments received thus far.
19230 * @param {Function} fn The function to curry.
19231 * @return {Function} The curried function.
19232 */
19233
19234
19235function _curryN(length, received, fn) {
19236  return function () {
19237    var combined = [];
19238    var argsIdx = 0;
19239    var left = length;
19240    var combinedIdx = 0;
19241
19242    while (combinedIdx < received.length || argsIdx < arguments.length) {
19243      var result;
19244
19245      if (combinedIdx < received.length && (!_isPlaceholder(received[combinedIdx]) || argsIdx >= arguments.length)) {
19246        result = received[combinedIdx];
19247      } else {
19248        result = arguments[argsIdx];
19249        argsIdx += 1;
19250      }
19251
19252      combined[combinedIdx] = result;
19253
19254      if (!_isPlaceholder(result)) {
19255        left -= 1;
19256      }
19257
19258      combinedIdx += 1;
19259    }
19260
19261    return left <= 0 ? fn.apply(this, combined) : _arity(left, _curryN(length, combined, fn));
19262  };
19263}
19264
19265module.exports = _curryN;
19266
19267/***/ }),
19268
vendor: 2,098 bytes, lines 19269-19331
19269/***/ "./node_modules/ramda/src/internal/_dispatchable.js":
19270/*!**********************************************************!*\
19271  !*** ./node_modules/ramda/src/internal/_dispatchable.js ***!
19272  \**********************************************************/
19273/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19274
19275var _isArray =
19276/*#__PURE__*/
19277__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
19278
19279var _isTransformer =
19280/*#__PURE__*/
19281__webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/src/internal/_isTransformer.js");
19282/**
19283 * Returns a function that dispatches with different strategies based on the
19284 * object in list position (last argument). If it is an array, executes [fn].
19285 * Otherwise, if it has a function with one of the given method names, it will
19286 * execute that function (functor case). Otherwise, if it is a transformer,
19287 * uses transducer created by [transducerCreator] to return a new transformer
19288 * (transducer case).
19289 * Otherwise, it will default to executing [fn].
19290 *
19291 * @private
19292 * @param {Array} methodNames properties to check for a custom implementation
19293 * @param {Function} transducerCreator transducer factory if object is transformer
19294 * @param {Function} fn default ramda implementation
19295 * @return {Function} A function that dispatches on object in list position
19296 */
19297
19298
19299function _dispatchable(methodNames, transducerCreator, fn) {
19300  return function () {
19301    if (arguments.length === 0) {
19302      return fn();
19303    }
19304
19305    var obj = arguments[arguments.length - 1];
19306
19307    if (!_isArray(obj)) {
19308      var idx = 0;
19309
19310      while (idx < methodNames.length) {
19311        if (typeof obj[methodNames[idx]] === 'function') {
19312          return obj[methodNames[idx]].apply(obj, Array.prototype.slice.call(arguments, 0, -1));
19313        }
19314
19315        idx += 1;
19316      }
19317
19318      if (_isTransformer(obj)) {
19319        var transducer = transducerCreator.apply(null, Array.prototype.slice.call(arguments, 0, -1));
19320        return transducer(obj);
19321      }
19322    }
19323
19324    return fn.apply(this, arguments);
19325  };
19326}
19327
19328module.exports = _dispatchable;
19329
19330/***/ }),
19331
vendor: 1,260 bytes, lines 19332-19381
19332/***/ "./node_modules/ramda/src/internal/_dissoc.js":
19333/*!****************************************************!*\
19334  !*** ./node_modules/ramda/src/internal/_dissoc.js ***!
19335  \****************************************************/
19336/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19337
19338var _isInteger =
19339/*#__PURE__*/
19340__webpack_require__(/*! ./_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
19341
19342var _isArray =
19343/*#__PURE__*/
19344__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
19345
19346var remove =
19347/*#__PURE__*/
19348__webpack_require__(/*! ../remove.js */ "./node_modules/ramda/src/remove.js");
19349/**
19350 * Returns a new object that does not contain a `prop` property.
19351 *
19352 * @private
19353 * @param {String|Number} prop The name of the property to dissociate
19354 * @param {Object|Array} obj The object to clone
19355 * @return {Object} A new object equivalent to the original but without the specified property
19356 */
19357
19358
19359function _dissoc(prop, obj) {
19360  if (obj == null) {
19361    return obj;
19362  }
19363
19364  if (_isInteger(prop) && _isArray(obj)) {
19365    return remove(prop, 1, obj);
19366  }
19367
19368  var result = {};
19369
19370  for (var p in obj) {
19371    result[p] = obj[p];
19372  }
19373
19374  delete result[prop];
19375  return result;
19376}
19377
19378module.exports = _dissoc;
19379
19380/***/ }),
19381
vendor: 528 bytes, lines 19382-19399
19382/***/ "./node_modules/ramda/src/internal/_dropLast.js":
19383/*!******************************************************!*\
19384  !*** ./node_modules/ramda/src/internal/_dropLast.js ***!
19385  \******************************************************/
19386/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19387
19388var take =
19389/*#__PURE__*/
19390__webpack_require__(/*! ../take.js */ "./node_modules/ramda/src/take.js");
19391
19392function dropLast(n, xs) {
19393  return take(n < xs.length ? xs.length - n : 0, xs);
19394}
19395
19396module.exports = dropLast;
19397
19398/***/ }),
19399
vendor: 627 bytes, lines 19400-19423
19400/***/ "./node_modules/ramda/src/internal/_dropLastWhile.js":
19401/*!***********************************************************!*\
19402  !*** ./node_modules/ramda/src/internal/_dropLastWhile.js ***!
19403  \***********************************************************/
19404/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19405
19406var slice =
19407/*#__PURE__*/
19408__webpack_require__(/*! ../slice.js */ "./node_modules/ramda/src/slice.js");
19409
19410function dropLastWhile(pred, xs) {
19411  var idx = xs.length - 1;
19412
19413  while (idx >= 0 && pred(xs[idx])) {
19414    idx -= 1;
19415  }
19416
19417  return slice(0, idx + 1, xs);
19418}
19419
19420module.exports = dropLastWhile;
19421
19422/***/ }),
19423
vendor: 4,827 bytes, lines 19424-19617
19424/***/ "./node_modules/ramda/src/internal/_equals.js":
19425/*!****************************************************!*\
19426  !*** ./node_modules/ramda/src/internal/_equals.js ***!
19427  \****************************************************/
19428/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19429
19430var _arrayFromIterator =
19431/*#__PURE__*/
19432__webpack_require__(/*! ./_arrayFromIterator.js */ "./node_modules/ramda/src/internal/_arrayFromIterator.js");
19433
19434var _includesWith =
19435/*#__PURE__*/
19436__webpack_require__(/*! ./_includesWith.js */ "./node_modules/ramda/src/internal/_includesWith.js");
19437
19438var _functionName =
19439/*#__PURE__*/
19440__webpack_require__(/*! ./_functionName.js */ "./node_modules/ramda/src/internal/_functionName.js");
19441
19442var _has =
19443/*#__PURE__*/
19444__webpack_require__(/*! ./_has.js */ "./node_modules/ramda/src/internal/_has.js");
19445
19446var _objectIs =
19447/*#__PURE__*/
19448__webpack_require__(/*! ./_objectIs.js */ "./node_modules/ramda/src/internal/_objectIs.js");
19449
19450var keys =
19451/*#__PURE__*/
19452__webpack_require__(/*! ../keys.js */ "./node_modules/ramda/src/keys.js");
19453
19454var type =
19455/*#__PURE__*/
19456__webpack_require__(/*! ../type.js */ "./node_modules/ramda/src/type.js");
19457/**
19458 * private _uniqContentEquals function.
19459 * That function is checking equality of 2 iterator contents with 2 assumptions
19460 * - iterators lengths are the same
19461 * - iterators values are unique
19462 *
19463 * false-positive result will be returned for comparison of, e.g.
19464 * - [1,2,3] and [1,2,3,4]
19465 * - [1,1,1] and [1,2,3]
19466 * */
19467
19468
19469function _uniqContentEquals(aIterator, bIterator, stackA, stackB) {
19470  var a = _arrayFromIterator(aIterator);
19471
19472  var b = _arrayFromIterator(bIterator);
19473
19474  function eq(_a, _b) {
19475    return _equals(_a, _b, stackA.slice(), stackB.slice());
19476  } // if *a* array contains any element that is not included in *b*
19477
19478
19479  return !_includesWith(function (b, aItem) {
19480    return !_includesWith(eq, aItem, b);
19481  }, b, a);
19482}
19483
19484function _equals(a, b, stackA, stackB) {
19485  if (_objectIs(a, b)) {
19486    return true;
19487  }
19488
19489  var typeA = type(a);
19490
19491  if (typeA !== type(b)) {
19492    return false;
19493  }
19494
19495  if (typeof a['fantasy-land/equals'] === 'function' || typeof b['fantasy-land/equals'] === 'function') {
19496    return typeof a['fantasy-land/equals'] === 'function' && a['fantasy-land/equals'](b) && typeof b['fantasy-land/equals'] === 'function' && b['fantasy-land/equals'](a);
19497  }
19498
19499  if (typeof a.equals === 'function' || typeof b.equals === 'function') {
19500    return typeof a.equals === 'function' && a.equals(b) && typeof b.equals === 'function' && b.equals(a);
19501  }
19502
19503  switch (typeA) {
19504    case 'Arguments':
19505    case 'Array':
19506    case 'Object':
19507      if (typeof a.constructor === 'function' && _functionName(a.constructor) === 'Promise') {
19508        return a === b;
19509      }
19510
19511      break;
19512
19513    case 'Boolean':
19514    case 'Number':
19515    case 'String':
19516      if (!(typeof a === typeof b && _objectIs(a.valueOf(), b.valueOf()))) {
19517        return false;
19518      }
19519
19520      break;
19521
19522    case 'Date':
19523      if (!_objectIs(a.valueOf(), b.valueOf())) {
19524        return false;
19525      }
19526
19527      break;
19528
19529    case 'Error':
19530      return a.name === b.name && a.message === b.message;
19531
19532    case 'RegExp':
19533      if (!(a.source === b.source && a.global === b.global && a.ignoreCase === b.ignoreCase && a.multiline === b.multiline && a.sticky === b.sticky && a.unicode === b.unicode)) {
19534        return false;
19535      }
19536
19537      break;
19538  }
19539
19540  var idx = stackA.length - 1;
19541
19542  while (idx >= 0) {
19543    if (stackA[idx] === a) {
19544      return stackB[idx] === b;
19545    }
19546
19547    idx -= 1;
19548  }
19549
19550  switch (typeA) {
19551    case 'Map':
19552      if (a.size !== b.size) {
19553        return false;
19554      }
19555
19556      return _uniqContentEquals(a.entries(), b.entries(), stackA.concat([a]), stackB.concat([b]));
19557
19558    case 'Set':
19559      if (a.size !== b.size) {
19560        return false;
19561      }
19562
19563      return _uniqContentEquals(a.values(), b.values(), stackA.concat([a]), stackB.concat([b]));
19564
19565    case 'Arguments':
19566    case 'Array':
19567    case 'Object':
19568    case 'Boolean':
19569    case 'Number':
19570    case 'String':
19571    case 'Date':
19572    case 'Error':
19573    case 'RegExp':
19574    case 'Int8Array':
19575    case 'Uint8Array':
19576    case 'Uint8ClampedArray':
19577    case 'Int16Array':
19578    case 'Uint16Array':
19579    case 'Int32Array':
19580    case 'Uint32Array':
19581    case 'Float32Array':
19582    case 'Float64Array':
19583    case 'ArrayBuffer':
19584      break;
19585
19586    default:
19587      // Values of other types are only equal if identical.
19588      return false;
19589  }
19590
19591  var keysA = keys(a);
19592
19593  if (keysA.length !== keys(b).length) {
19594    return false;
19595  }
19596
19597  var extendedStackA = stackA.concat([a]);
19598  var extendedStackB = stackB.concat([b]);
19599  idx = keysA.length - 1;
19600
19601  while (idx >= 0) {
19602    var key = keysA[idx];
19603
19604    if (!(_has(key, b) && _equals(b[key], a[key], extendedStackA, extendedStackB))) {
19605      return false;
19606    }
19607
19608    idx -= 1;
19609  }
19610
19611  return true;
19612}
19613
19614module.exports = _equals;
19615
19616/***/ }),
19617
vendor: 510 bytes, lines 19618-19643
19618/***/ "./node_modules/ramda/src/internal/_filter.js":
19619/*!****************************************************!*\
19620  !*** ./node_modules/ramda/src/internal/_filter.js ***!
19621  \****************************************************/
19622/***/ ((module) => {
19623
19624function _filter(fn, list) {
19625  var idx = 0;
19626  var len = list.length;
19627  var result = [];
19628
19629  while (idx < len) {
19630    if (fn(list[idx])) {
19631      result[result.length] = list[idx];
19632    }
19633
19634    idx += 1;
19635  }
19636
19637  return result;
19638}
19639
19640module.exports = _filter;
19641
19642/***/ }),
19643
vendor: 1,616 bytes, lines 19644-19695
19644/***/ "./node_modules/ramda/src/internal/_flatCat.js":
19645/*!*****************************************************!*\
19646  !*** ./node_modules/ramda/src/internal/_flatCat.js ***!
19647  \*****************************************************/
19648/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19649
19650var _forceReduced =
19651/*#__PURE__*/
19652__webpack_require__(/*! ./_forceReduced.js */ "./node_modules/ramda/src/internal/_forceReduced.js");
19653
19654var _isArrayLike =
19655/*#__PURE__*/
19656__webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/src/internal/_isArrayLike.js");
19657
19658var _reduce =
19659/*#__PURE__*/
19660__webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
19661
19662var _xfBase =
19663/*#__PURE__*/
19664__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
19665
19666var preservingReduced = function (xf) {
19667  return {
19668    '@@transducer/init': _xfBase.init,
19669    '@@transducer/result': function (result) {
19670      return xf['@@transducer/result'](result);
19671    },
19672    '@@transducer/step': function (result, input) {
19673      var ret = xf['@@transducer/step'](result, input);
19674      return ret['@@transducer/reduced'] ? _forceReduced(ret) : ret;
19675    }
19676  };
19677};
19678
19679var _flatCat = function _xcat(xf) {
19680  var rxf = preservingReduced(xf);
19681  return {
19682    '@@transducer/init': _xfBase.init,
19683    '@@transducer/result': function (result) {
19684      return rxf['@@transducer/result'](result);
19685    },
19686    '@@transducer/step': function (result, input) {
19687      return !_isArrayLike(input) ? _reduce(rxf, result, [input]) : _reduce(rxf, result, input);
19688    }
19689  };
19690};
19691
19692module.exports = _flatCat;
19693
19694/***/ }),
19695
vendor: 426 bytes, lines 19696-19712
19696/***/ "./node_modules/ramda/src/internal/_forceReduced.js":
19697/*!**********************************************************!*\
19698  !*** ./node_modules/ramda/src/internal/_forceReduced.js ***!
19699  \**********************************************************/
19700/***/ ((module) => {
19701
19702function _forceReduced(x) {
19703  return {
19704    '@@transducer/value': x,
19705    '@@transducer/reduced': true
19706  };
19707}
19708
19709module.exports = _forceReduced;
19710
19711/***/ }),
19712
vendor: 511 bytes, lines 19713-19728
19713/***/ "./node_modules/ramda/src/internal/_functionName.js":
19714/*!**********************************************************!*\
19715  !*** ./node_modules/ramda/src/internal/_functionName.js ***!
19716  \**********************************************************/
19717/***/ ((module) => {
19718
19719function _functionName(f) {
19720  // String(x => x) evaluates to "x => x", so the pattern may not match.
19721  var match = String(f).match(/^function (\w*)/);
19722  return match == null ? '' : match[1];
19723}
19724
19725module.exports = _functionName;
19726
19727/***/ }),
19728
vendor: 360 bytes, lines 19729-19742
19729/***/ "./node_modules/ramda/src/internal/_has.js":
19730/*!*************************************************!*\
19731  !*** ./node_modules/ramda/src/internal/_has.js ***!
19732  \*************************************************/
19733/***/ ((module) => {
19734
19735function _has(prop, obj) {
19736  return Object.prototype.hasOwnProperty.call(obj, prop);
19737}
19738
19739module.exports = _has;
19740
19741/***/ }),
19742
vendor: 336 bytes, lines 19743-19756
19743/***/ "./node_modules/ramda/src/internal/_identity.js":
19744/*!******************************************************!*\
19745  !*** ./node_modules/ramda/src/internal/_identity.js ***!
19746  \******************************************************/
19747/***/ ((module) => {
19748
19749function _identity(x) {
19750  return x;
19751}
19752
19753module.exports = _identity;
19754
19755/***/ }),
19756
vendor: 534 bytes, lines 19757-19774
19757/***/ "./node_modules/ramda/src/internal/_includes.js":
19758/*!******************************************************!*\
19759  !*** ./node_modules/ramda/src/internal/_includes.js ***!
19760  \******************************************************/
19761/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19762
19763var _indexOf =
19764/*#__PURE__*/
19765__webpack_require__(/*! ./_indexOf.js */ "./node_modules/ramda/src/internal/_indexOf.js");
19766
19767function _includes(a, list) {
19768  return _indexOf(list, a, 0) >= 0;
19769}
19770
19771module.exports = _includes;
19772
19773/***/ }),
19774
vendor: 514 bytes, lines 19775-19799
19775/***/ "./node_modules/ramda/src/internal/_includesWith.js":
19776/*!**********************************************************!*\
19777  !*** ./node_modules/ramda/src/internal/_includesWith.js ***!
19778  \**********************************************************/
19779/***/ ((module) => {
19780
19781function _includesWith(pred, x, list) {
19782  var idx = 0;
19783  var len = list.length;
19784
19785  while (idx < len) {
19786    if (pred(x, list[idx])) {
19787      return true;
19788    }
19789
19790    idx += 1;
19791  }
19792
19793  return false;
19794}
19795
19796module.exports = _includesWith;
19797
19798/***/ }),
19799
vendor: 1,819 bytes, lines 19800-19880
19800/***/ "./node_modules/ramda/src/internal/_indexOf.js":
19801/*!*****************************************************!*\
19802  !*** ./node_modules/ramda/src/internal/_indexOf.js ***!
19803  \*****************************************************/
19804/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19805
19806var equals =
19807/*#__PURE__*/
19808__webpack_require__(/*! ../equals.js */ "./node_modules/ramda/src/equals.js");
19809
19810function _indexOf(list, a, idx) {
19811  var inf, item; // Array.prototype.indexOf doesn't exist below IE9
19812
19813  if (typeof list.indexOf === 'function') {
19814    switch (typeof a) {
19815      case 'number':
19816        if (a === 0) {
19817          // manually crawl the list to distinguish between +0 and -0
19818          inf = 1 / a;
19819
19820          while (idx < list.length) {
19821            item = list[idx];
19822
19823            if (item === 0 && 1 / item === inf) {
19824              return idx;
19825            }
19826
19827            idx += 1;
19828          }
19829
19830          return -1;
19831        } else if (a !== a) {
19832          // NaN
19833          while (idx < list.length) {
19834            item = list[idx];
19835
19836            if (typeof item === 'number' && item !== item) {
19837              return idx;
19838            }
19839
19840            idx += 1;
19841          }
19842
19843          return -1;
19844        } // non-zero numbers can utilise Set
19845
19846
19847        return list.indexOf(a, idx);
19848      // all these types can utilise Set
19849
19850      case 'string':
19851      case 'boolean':
19852      case 'function':
19853      case 'undefined':
19854        return list.indexOf(a, idx);
19855
19856      case 'object':
19857        if (a === null) {
19858          // null can utilise Set
19859          return list.indexOf(a, idx);
19860        }
19861
19862    }
19863  } // anything else not covered above, defer to R.equals
19864
19865
19866  while (idx < list.length) {
19867    if (equals(list[idx], a)) {
19868      return idx;
19869    }
19870
19871    idx += 1;
19872  }
19873
19874  return -1;
19875}
19876
19877module.exports = _indexOf;
19878
19879/***/ }),
19880
vendor: 774 bytes, lines 19881-19906
19881/***/ "./node_modules/ramda/src/internal/_isArguments.js":
19882/*!*********************************************************!*\
19883  !*** ./node_modules/ramda/src/internal/_isArguments.js ***!
19884  \*********************************************************/
19885/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19886
19887var _has =
19888/*#__PURE__*/
19889__webpack_require__(/*! ./_has.js */ "./node_modules/ramda/src/internal/_has.js");
19890
19891var toString = Object.prototype.toString;
19892
19893var _isArguments =
19894/*#__PURE__*/
19895function () {
19896  return toString.call(arguments) === '[object Arguments]' ? function _isArguments(x) {
19897    return toString.call(x) === '[object Arguments]';
19898  } : function _isArguments(x) {
19899    return _has('callee', x);
19900  };
19901}();
19902
19903module.exports = _isArguments;
19904
19905/***/ }),
19906
vendor: 720 bytes, lines 19907-19930
19907/***/ "./node_modules/ramda/src/internal/_isArray.js":
19908/*!*****************************************************!*\
19909  !*** ./node_modules/ramda/src/internal/_isArray.js ***!
19910  \*****************************************************/
19911/***/ ((module) => {
19912
19913/**
19914 * Tests whether or not an object is an array.
19915 *
19916 * @private
19917 * @param {*} val The object to test.
19918 * @return {Boolean} `true` if `val` is an array, `false` otherwise.
19919 * @example
19920 *
19921 *      _isArray([]); //=> true
19922 *      _isArray(null); //=> false
19923 *      _isArray({}); //=> false
19924 */
19925module.exports = Array.isArray || function _isArray(val) {
19926  return val != null && val.length >= 0 && Object.prototype.toString.call(val) === '[object Array]';
19927};
19928
19929/***/ }),
19930
vendor: 1,715 bytes, lines 19931-20001
19931/***/ "./node_modules/ramda/src/internal/_isArrayLike.js":
19932/*!*********************************************************!*\
19933  !*** ./node_modules/ramda/src/internal/_isArrayLike.js ***!
19934  \*********************************************************/
19935/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
19936
19937var _curry1 =
19938/*#__PURE__*/
19939__webpack_require__(/*! ./_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
19940
19941var _isArray =
19942/*#__PURE__*/
19943__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
19944
19945var _isString =
19946/*#__PURE__*/
19947__webpack_require__(/*! ./_isString.js */ "./node_modules/ramda/src/internal/_isString.js");
19948/**
19949 * Tests whether or not an object is similar to an array.
19950 *
19951 * @private
19952 * @category Type
19953 * @category List
19954 * @sig * -> Boolean
19955 * @param {*} x The object to test.
19956 * @return {Boolean} `true` if `x` has a numeric length property and extreme indices defined; `false` otherwise.
19957 * @example
19958 *
19959 *      _isArrayLike([]); //=> true
19960 *      _isArrayLike(true); //=> false
19961 *      _isArrayLike({}); //=> false
19962 *      _isArrayLike({length: 10}); //=> false
19963 *      _isArrayLike({0: 'zero', 9: 'nine', length: 10}); //=> true
19964 *      _isArrayLike({nodeType: 1, length: 1}) // => false
19965 */
19966
19967
19968var _isArrayLike =
19969/*#__PURE__*/
19970_curry1(function isArrayLike(x) {
19971  if (_isArray(x)) {
19972    return true;
19973  }
19974
19975  if (!x) {
19976    return false;
19977  }
19978
19979  if (typeof x !== 'object') {
19980    return false;
19981  }
19982
19983  if (_isString(x)) {
19984    return false;
19985  }
19986
19987  if (x.length === 0) {
19988    return true;
19989  }
19990
19991  if (x.length > 0) {
19992    return x.hasOwnProperty(0) && x.hasOwnProperty(x.length - 1);
19993  }
19994
19995  return false;
19996});
19997
19998module.exports = _isArrayLike;
19999
20000/***/ }),
20001
vendor: 547 bytes, lines 20002-20016
20002/***/ "./node_modules/ramda/src/internal/_isFunction.js":
20003/*!********************************************************!*\
20004  !*** ./node_modules/ramda/src/internal/_isFunction.js ***!
20005  \********************************************************/
20006/***/ ((module) => {
20007
20008function _isFunction(x) {
20009  var type = Object.prototype.toString.call(x);
20010  return type === '[object Function]' || type === '[object AsyncFunction]' || type === '[object GeneratorFunction]' || type === '[object AsyncGeneratorFunction]';
20011}
20012
20013module.exports = _isFunction;
20014
20015/***/ }),
20016
vendor: 490 bytes, lines 20017-20036
20017/***/ "./node_modules/ramda/src/internal/_isInteger.js":
20018/*!*******************************************************!*\
20019  !*** ./node_modules/ramda/src/internal/_isInteger.js ***!
20020  \*******************************************************/
20021/***/ ((module) => {
20022
20023/**
20024 * Determine if the passed argument is an integer.
20025 *
20026 * @private
20027 * @param {*} n
20028 * @category Type
20029 * @return {Boolean}
20030 */
20031module.exports = Number.isInteger || function _isInteger(n) {
20032  return n << 0 === n;
20033};
20034
20035/***/ }),
20036
vendor: 390 bytes, lines 20037-20050
20037/***/ "./node_modules/ramda/src/internal/_isNumber.js":
20038/*!******************************************************!*\
20039  !*** ./node_modules/ramda/src/internal/_isNumber.js ***!
20040  \******************************************************/
20041/***/ ((module) => {
20042
20043function _isNumber(x) {
20044  return Object.prototype.toString.call(x) === '[object Number]';
20045}
20046
20047module.exports = _isNumber;
20048
20049/***/ }),
20050
vendor: 390 bytes, lines 20051-20064
20051/***/ "./node_modules/ramda/src/internal/_isObject.js":
20052/*!******************************************************!*\
20053  !*** ./node_modules/ramda/src/internal/_isObject.js ***!
20054  \******************************************************/
20055/***/ ((module) => {
20056
20057function _isObject(x) {
20058  return Object.prototype.toString.call(x) === '[object Object]';
20059}
20060
20061module.exports = _isObject;
20062
20063/***/ }),
20064
vendor: 441 bytes, lines 20065-20078
20065/***/ "./node_modules/ramda/src/internal/_isPlaceholder.js":
20066/*!***********************************************************!*\
20067  !*** ./node_modules/ramda/src/internal/_isPlaceholder.js ***!
20068  \***********************************************************/
20069/***/ ((module) => {
20070
20071function _isPlaceholder(a) {
20072  return a != null && typeof a === 'object' && a['@@functional/placeholder'] === true;
20073}
20074
20075module.exports = _isPlaceholder;
20076
20077/***/ }),
20078
vendor: 390 bytes, lines 20079-20092
20079/***/ "./node_modules/ramda/src/internal/_isRegExp.js":
20080/*!******************************************************!*\
20081  !*** ./node_modules/ramda/src/internal/_isRegExp.js ***!
20082  \******************************************************/
20083/***/ ((module) => {
20084
20085function _isRegExp(x) {
20086  return Object.prototype.toString.call(x) === '[object RegExp]';
20087}
20088
20089module.exports = _isRegExp;
20090
20091/***/ }),
20092
vendor: 390 bytes, lines 20093-20106
20093/***/ "./node_modules/ramda/src/internal/_isString.js":
20094/*!******************************************************!*\
20095  !*** ./node_modules/ramda/src/internal/_isString.js ***!
20096  \******************************************************/
20097/***/ ((module) => {
20098
20099function _isString(x) {
20100  return Object.prototype.toString.call(x) === '[object String]';
20101}
20102
20103module.exports = _isString;
20104
20105/***/ }),
20106
vendor: 428 bytes, lines 20107-20120
20107/***/ "./node_modules/ramda/src/internal/_isTransformer.js":
20108/*!***********************************************************!*\
20109  !*** ./node_modules/ramda/src/internal/_isTransformer.js ***!
20110  \***********************************************************/
20111/***/ ((module) => {
20112
20113function _isTransformer(obj) {
20114  return obj != null && typeof obj['@@transducer/step'] === 'function';
20115}
20116
20117module.exports = _isTransformer;
20118
20119/***/ }),
20120
vendor: 1,226 bytes, lines 20121-20149
20121/***/ "./node_modules/ramda/src/internal/_isTypedArray.js":
20122/*!**********************************************************!*\
20123  !*** ./node_modules/ramda/src/internal/_isTypedArray.js ***!
20124  \**********************************************************/
20125/***/ ((module) => {
20126
20127/**
20128 * Tests whether or not an object is a typed array.
20129 *
20130 * @private
20131 * @param {*} val The object to test.
20132 * @return {Boolean} `true` if `val` is a typed array, `false` otherwise.
20133 * @example
20134 *
20135 *      _isTypedArray(new Uint8Array([])); //=> true
20136 *      _isTypedArray(new Float32Array([])); //=> true
20137 *      _isTypedArray([]); //=> false
20138 *      _isTypedArray(null); //=> false
20139 *      _isTypedArray({}); //=> false
20140 */
20141function _isTypedArray(val) {
20142  var type = Object.prototype.toString.call(val);
20143  return type === '[object Uint8ClampedArray]' || type === '[object Int8Array]' || type === '[object Uint8Array]' || type === '[object Int16Array]' || type === '[object Uint16Array]' || type === '[object Int32Array]' || type === '[object Uint32Array]' || type === '[object Float32Array]' || type === '[object Float64Array]' || type === '[object BigInt64Array]' || type === '[object BigUint64Array]';
20144}
20145
20146module.exports = _isTypedArray;
20147
20148/***/ }),
20149
vendor: 1,158 bytes, lines 20150-20198
20150/***/ "./node_modules/ramda/src/internal/_makeFlat.js":
20151/*!******************************************************!*\
20152  !*** ./node_modules/ramda/src/internal/_makeFlat.js ***!
20153  \******************************************************/
20154/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20155
20156var _isArrayLike =
20157/*#__PURE__*/
20158__webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/src/internal/_isArrayLike.js");
20159/**
20160 * `_makeFlat` is a helper function that returns a one-level or fully recursive
20161 * function based on the flag passed in.
20162 *
20163 * @private
20164 */
20165
20166
20167function _makeFlat(recursive) {
20168  return function flatt(list) {
20169    var value, jlen, j;
20170    var result = [];
20171    var idx = 0;
20172    var ilen = list.length;
20173
20174    while (idx < ilen) {
20175      if (_isArrayLike(list[idx])) {
20176        value = recursive ? flatt(list[idx]) : list[idx];
20177        j = 0;
20178        jlen = value.length;
20179
20180        while (j < jlen) {
20181          result[result.length] = value[j];
20182          j += 1;
20183        }
20184      } else {
20185        result[result.length] = list[idx];
20186      }
20187
20188      idx += 1;
20189    }
20190
20191    return result;
20192  };
20193}
20194
20195module.exports = _makeFlat;
20196
20197/***/ }),
20198
vendor: 469 bytes, lines 20199-20221
20199/***/ "./node_modules/ramda/src/internal/_map.js":
20200/*!*************************************************!*\
20201  !*** ./node_modules/ramda/src/internal/_map.js ***!
20202  \*************************************************/
20203/***/ ((module) => {
20204
20205function _map(fn, functor) {
20206  var idx = 0;
20207  var len = functor.length;
20208  var result = Array(len);
20209
20210  while (idx < len) {
20211    result[idx] = fn(functor[idx]);
20212    idx += 1;
20213  }
20214
20215  return result;
20216}
20217
20218module.exports = _map;
20219
20220/***/ }),
20221
vendor: 1,415 bytes, lines 20222-20269
20222/***/ "./node_modules/ramda/src/internal/_modify.js":
20223/*!****************************************************!*\
20224  !*** ./node_modules/ramda/src/internal/_modify.js ***!
20225  \****************************************************/
20226/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20227
20228var _isArray =
20229/*#__PURE__*/
20230__webpack_require__(/*! ./_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
20231
20232var _isInteger =
20233/*#__PURE__*/
20234__webpack_require__(/*! ./_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
20235/**
20236 * Makes a shallow clone of an object, applying the given fn to the specified
20237 * property with the given value. Note that this copies and flattens prototype
20238 * properties onto the new object as well. All non-primitive properties are
20239 * copied by reference.
20240 *
20241 * @private
20242 * @param {String|Number} prop The property name to set
20243 * @param {Function} fn The function to apply to the property
20244 * @param {Object|Array} obj The object to clone
20245 * @return {Object|Array} A new object equivalent to the original except for the changed property.
20246 */
20247
20248
20249function _modify(prop, fn, obj) {
20250  if (_isInteger(prop) && _isArray(obj)) {
20251    var arr = [].concat(obj);
20252    arr[prop] = fn(arr[prop]);
20253    return arr;
20254  }
20255
20256  var result = {};
20257
20258  for (var p in obj) {
20259    result[p] = obj[p];
20260  }
20261
20262  result[prop] = fn(result[prop]);
20263  return result;
20264}
20265
20266module.exports = _modify;
20267
20268/***/ }),
20269
vendor: 1,112 bytes, lines 20270-20310
20270/***/ "./node_modules/ramda/src/internal/_objectAssign.js":
20271/*!**********************************************************!*\
20272  !*** ./node_modules/ramda/src/internal/_objectAssign.js ***!
20273  \**********************************************************/
20274/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20275
20276var _has =
20277/*#__PURE__*/
20278__webpack_require__(/*! ./_has.js */ "./node_modules/ramda/src/internal/_has.js"); // Based on https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/assign
20279
20280
20281function _objectAssign(target) {
20282  if (target == null) {
20283    throw new TypeError('Cannot convert undefined or null to object');
20284  }
20285
20286  var output = Object(target);
20287  var idx = 1;
20288  var length = arguments.length;
20289
20290  while (idx < length) {
20291    var source = arguments[idx];
20292
20293    if (source != null) {
20294      for (var nextKey in source) {
20295        if (_has(nextKey, source)) {
20296          output[nextKey] = source[nextKey];
20297        }
20298      }
20299    }
20300
20301    idx += 1;
20302  }
20303
20304  return output;
20305}
20306
20307module.exports = typeof Object.assign === 'function' ? Object.assign : _objectAssign;
20308
20309/***/ }),
20310
vendor: 685 bytes, lines 20311-20333
20311/***/ "./node_modules/ramda/src/internal/_objectIs.js":
20312/*!******************************************************!*\
20313  !*** ./node_modules/ramda/src/internal/_objectIs.js ***!
20314  \******************************************************/
20315/***/ ((module) => {
20316
20317// Based on https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
20318function _objectIs(a, b) {
20319  // SameValue algorithm
20320  if (a === b) {
20321    // Steps 1-5, 7-10
20322    // Steps 6.b-6.e: +0 != -0
20323    return a !== 0 || 1 / a === 1 / b;
20324  } else {
20325    // Step 6.a: NaN == NaN
20326    return a !== a && b !== b;
20327  }
20328}
20329
20330module.exports = typeof Object.is === 'function' ? Object.is : _objectIs;
20331
20332/***/ }),
20333
vendor: 302 bytes, lines 20334-20347
20334/***/ "./node_modules/ramda/src/internal/_of.js":
20335/*!************************************************!*\
20336  !*** ./node_modules/ramda/src/internal/_of.js ***!
20337  \************************************************/
20338/***/ ((module) => {
20339
20340function _of(x) {
20341  return [x];
20342}
20343
20344module.exports = _of;
20345
20346/***/ }),
20347
vendor: 382 bytes, lines 20348-20363
20348/***/ "./node_modules/ramda/src/internal/_pipe.js":
20349/*!**************************************************!*\
20350  !*** ./node_modules/ramda/src/internal/_pipe.js ***!
20351  \**************************************************/
20352/***/ ((module) => {
20353
20354function _pipe(f, g) {
20355  return function () {
20356    return g.call(this, f.apply(this, arguments));
20357  };
20358}
20359
20360module.exports = _pipe;
20361
20362/***/ }),
20363
vendor: 388 bytes, lines 20364-20379
20364/***/ "./node_modules/ramda/src/internal/_promap.js":
20365/*!****************************************************!*\
20366  !*** ./node_modules/ramda/src/internal/_promap.js ***!
20367  \****************************************************/
20368/***/ ((module) => {
20369
20370function _promap(f, g, profunctor) {
20371  return function (x) {
20372    return g(profunctor(f(x)));
20373  };
20374}
20375
20376module.exports = _promap;
20377
20378/***/ }),
20379
vendor: 610 bytes, lines 20380-20395
20380/***/ "./node_modules/ramda/src/internal/_quote.js":
20381/*!***************************************************!*\
20382  !*** ./node_modules/ramda/src/internal/_quote.js ***!
20383  \***************************************************/
20384/***/ ((module) => {
20385
20386function _quote(s) {
20387  var escaped = s.replace(/\\/g, '\\\\').replace(/[\b]/g, '\\b') // \b matches word boundary; [\b] matches backspace
20388  .replace(/\f/g, '\\f').replace(/\n/g, '\\n').replace(/\r/g, '\\r').replace(/\t/g, '\\t').replace(/\v/g, '\\v').replace(/\0/g, '\\0');
20389  return '"' + escaped.replace(/"/g, '\\"') + '"';
20390}
20391
20392module.exports = _quote;
20393
20394/***/ }),
20395
vendor: 2,207 bytes, lines 20396-20486
20396/***/ "./node_modules/ramda/src/internal/_reduce.js":
20397/*!****************************************************!*\
20398  !*** ./node_modules/ramda/src/internal/_reduce.js ***!
20399  \****************************************************/
20400/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20401
20402var _isArrayLike =
20403/*#__PURE__*/
20404__webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/src/internal/_isArrayLike.js");
20405
20406var _xwrap =
20407/*#__PURE__*/
20408__webpack_require__(/*! ./_xwrap.js */ "./node_modules/ramda/src/internal/_xwrap.js");
20409
20410var bind =
20411/*#__PURE__*/
20412__webpack_require__(/*! ../bind.js */ "./node_modules/ramda/src/bind.js");
20413
20414function _arrayReduce(xf, acc, list) {
20415  var idx = 0;
20416  var len = list.length;
20417
20418  while (idx < len) {
20419    acc = xf['@@transducer/step'](acc, list[idx]);
20420
20421    if (acc && acc['@@transducer/reduced']) {
20422      acc = acc['@@transducer/value'];
20423      break;
20424    }
20425
20426    idx += 1;
20427  }
20428
20429  return xf['@@transducer/result'](acc);
20430}
20431
20432function _iterableReduce(xf, acc, iter) {
20433  var step = iter.next();
20434
20435  while (!step.done) {
20436    acc = xf['@@transducer/step'](acc, step.value);
20437
20438    if (acc && acc['@@transducer/reduced']) {
20439      acc = acc['@@transducer/value'];
20440      break;
20441    }
20442
20443    step = iter.next();
20444  }
20445
20446  return xf['@@transducer/result'](acc);
20447}
20448
20449function _methodReduce(xf, acc, obj, methodName) {
20450  return xf['@@transducer/result'](obj[methodName](bind(xf['@@transducer/step'], xf), acc));
20451}
20452
20453var symIterator = typeof Symbol !== 'undefined' ? Symbol.iterator : '@@iterator';
20454
20455function _reduce(fn, acc, list) {
20456  if (typeof fn === 'function') {
20457    fn = _xwrap(fn);
20458  }
20459
20460  if (_isArrayLike(list)) {
20461    return _arrayReduce(fn, acc, list);
20462  }
20463
20464  if (typeof list['fantasy-land/reduce'] === 'function') {
20465    return _methodReduce(fn, acc, list, 'fantasy-land/reduce');
20466  }
20467
20468  if (list[symIterator] != null) {
20469    return _iterableReduce(fn, acc, list[symIterator]());
20470  }
20471
20472  if (typeof list.next === 'function') {
20473    return _iterableReduce(fn, acc, list);
20474  }
20475
20476  if (typeof list.reduce === 'function') {
20477    return _methodReduce(fn, acc, list, 'reduce');
20478  }
20479
20480  throw new TypeError('reduce: list must be array or iterable');
20481}
20482
20483module.exports = _reduce;
20484
20485/***/ }),
20486
vendor: 433 bytes, lines 20487-20503
20487/***/ "./node_modules/ramda/src/internal/_reduced.js":
20488/*!*****************************************************!*\
20489  !*** ./node_modules/ramda/src/internal/_reduced.js ***!
20490  \*****************************************************/
20491/***/ ((module) => {
20492
20493function _reduced(x) {
20494  return x && x['@@transducer/reduced'] ? x : {
20495    '@@transducer/value': x,
20496    '@@transducer/reduced': true
20497  };
20498}
20499
20500module.exports = _reduced;
20501
20502/***/ }),
20503
vendor: 1,863 bytes, lines 20504-20576
20504/***/ "./node_modules/ramda/src/internal/_stepCat.js":
20505/*!*****************************************************!*\
20506  !*** ./node_modules/ramda/src/internal/_stepCat.js ***!
20507  \*****************************************************/
20508/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20509
20510var _objectAssign =
20511/*#__PURE__*/
20512__webpack_require__(/*! ./_objectAssign.js */ "./node_modules/ramda/src/internal/_objectAssign.js");
20513
20514var _identity =
20515/*#__PURE__*/
20516__webpack_require__(/*! ./_identity.js */ "./node_modules/ramda/src/internal/_identity.js");
20517
20518var _isArrayLike =
20519/*#__PURE__*/
20520__webpack_require__(/*! ./_isArrayLike.js */ "./node_modules/ramda/src/internal/_isArrayLike.js");
20521
20522var _isTransformer =
20523/*#__PURE__*/
20524__webpack_require__(/*! ./_isTransformer.js */ "./node_modules/ramda/src/internal/_isTransformer.js");
20525
20526var objOf =
20527/*#__PURE__*/
20528__webpack_require__(/*! ../objOf.js */ "./node_modules/ramda/src/objOf.js");
20529
20530var _stepCatArray = {
20531  '@@transducer/init': Array,
20532  '@@transducer/step': function (xs, x) {
20533    xs.push(x);
20534    return xs;
20535  },
20536  '@@transducer/result': _identity
20537};
20538var _stepCatString = {
20539  '@@transducer/init': String,
20540  '@@transducer/step': function (a, b) {
20541    return a + b;
20542  },
20543  '@@transducer/result': _identity
20544};
20545var _stepCatObject = {
20546  '@@transducer/init': Object,
20547  '@@transducer/step': function (result, input) {
20548    return _objectAssign(result, _isArrayLike(input) ? objOf(input[0], input[1]) : input);
20549  },
20550  '@@transducer/result': _identity
20551};
20552
20553function _stepCat(obj) {
20554  if (_isTransformer(obj)) {
20555    return obj;
20556  }
20557
20558  if (_isArrayLike(obj)) {
20559    return _stepCatArray;
20560  }
20561
20562  if (typeof obj === 'string') {
20563    return _stepCatString;
20564  }
20565
20566  if (typeof obj === 'object') {
20567    return _stepCatObject;
20568  }
20569
20570  throw new Error('Cannot create transformer for ' + obj);
20571}
20572
20573module.exports = _stepCat;
20574
20575/***/ }),
20576
vendor: 912 bytes, lines 20577-20599
20577/***/ "./node_modules/ramda/src/internal/_toISOString.js":
20578/*!*********************************************************!*\
20579  !*** ./node_modules/ramda/src/internal/_toISOString.js ***!
20580  \*********************************************************/
20581/***/ ((module) => {
20582
20583/**
20584 * Polyfill from <https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/toISOString>.
20585 */
20586var pad = function pad(n) {
20587  return (n < 10 ? '0' : '') + n;
20588};
20589
20590var _toISOString = typeof Date.prototype.toISOString === 'function' ? function _toISOString(d) {
20591  return d.toISOString();
20592} : function _toISOString(d) {
20593  return d.getUTCFullYear() + '-' + pad(d.getUTCMonth() + 1) + '-' + pad(d.getUTCDate()) + 'T' + pad(d.getUTCHours()) + ':' + pad(d.getUTCMinutes()) + ':' + pad(d.getUTCSeconds()) + '.' + (d.getUTCMilliseconds() / 1000).toFixed(3).slice(2, 5) + 'Z';
20594};
20595
20596module.exports = _toISOString;
20597
20598/***/ }),
20599
vendor: 2,604 bytes, lines 20600-20686
20600/***/ "./node_modules/ramda/src/internal/_toString.js":
20601/*!******************************************************!*\
20602  !*** ./node_modules/ramda/src/internal/_toString.js ***!
20603  \******************************************************/
20604/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20605
20606var _includes =
20607/*#__PURE__*/
20608__webpack_require__(/*! ./_includes.js */ "./node_modules/ramda/src/internal/_includes.js");
20609
20610var _map =
20611/*#__PURE__*/
20612__webpack_require__(/*! ./_map.js */ "./node_modules/ramda/src/internal/_map.js");
20613
20614var _quote =
20615/*#__PURE__*/
20616__webpack_require__(/*! ./_quote.js */ "./node_modules/ramda/src/internal/_quote.js");
20617
20618var _toISOString =
20619/*#__PURE__*/
20620__webpack_require__(/*! ./_toISOString.js */ "./node_modules/ramda/src/internal/_toISOString.js");
20621
20622var keys =
20623/*#__PURE__*/
20624__webpack_require__(/*! ../keys.js */ "./node_modules/ramda/src/keys.js");
20625
20626var reject =
20627/*#__PURE__*/
20628__webpack_require__(/*! ../reject.js */ "./node_modules/ramda/src/reject.js");
20629
20630function _toString(x, seen) {
20631  var recur = function recur(y) {
20632    var xs = seen.concat([x]);
20633    return _includes(y, xs) ? '<Circular>' : _toString(y, xs);
20634  }; //  mapPairs :: (Object, [String]) -> [String]
20635
20636
20637  var mapPairs = function (obj, keys) {
20638    return _map(function (k) {
20639      return _quote(k) + ': ' + recur(obj[k]);
20640    }, keys.slice().sort());
20641  };
20642
20643  switch (Object.prototype.toString.call(x)) {
20644    case '[object Arguments]':
20645      return '(function() { return arguments; }(' + _map(recur, x).join(', ') + '))';
20646
20647    case '[object Array]':
20648      return '[' + _map(recur, x).concat(mapPairs(x, reject(function (k) {
20649        return /^\d+$/.test(k);
20650      }, keys(x)))).join(', ') + ']';
20651
20652    case '[object Boolean]':
20653      return typeof x === 'object' ? 'new Boolean(' + recur(x.valueOf()) + ')' : x.toString();
20654
20655    case '[object Date]':
20656      return 'new Date(' + (isNaN(x.valueOf()) ? recur(NaN) : _quote(_toISOString(x))) + ')';
20657
20658    case '[object Null]':
20659      return 'null';
20660
20661    case '[object Number]':
20662      return typeof x === 'object' ? 'new Number(' + recur(x.valueOf()) + ')' : 1 / x === -Infinity ? '-0' : x.toString(10);
20663
20664    case '[object String]':
20665      return typeof x === 'object' ? 'new String(' + recur(x.valueOf()) + ')' : _quote(x);
20666
20667    case '[object Undefined]':
20668      return 'undefined';
20669
20670    default:
20671      if (typeof x.toString === 'function') {
20672        var repr = x.toString();
20673
20674        if (repr !== '[object Object]') {
20675          return repr;
20676        }
20677      }
20678
20679      return '{' + mapPairs(x, keys(x)).join(', ') + '}';
20680  }
20681}
20682
20683module.exports = _toString;
20684
20685/***/ }),
20686
vendor: 1,394 bytes, lines 20687-20745
20687/***/ "./node_modules/ramda/src/internal/_xall.js":
20688/*!**************************************************!*\
20689  !*** ./node_modules/ramda/src/internal/_xall.js ***!
20690  \**************************************************/
20691/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20692
20693var _curry2 =
20694/*#__PURE__*/
20695__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20696
20697var _reduced =
20698/*#__PURE__*/
20699__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
20700
20701var _xfBase =
20702/*#__PURE__*/
20703__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
20704
20705var XAll =
20706/*#__PURE__*/
20707function () {
20708  function XAll(f, xf) {
20709    this.xf = xf;
20710    this.f = f;
20711    this.all = true;
20712  }
20713
20714  XAll.prototype['@@transducer/init'] = _xfBase.init;
20715
20716  XAll.prototype['@@transducer/result'] = function (result) {
20717    if (this.all) {
20718      result = this.xf['@@transducer/step'](result, true);
20719    }
20720
20721    return this.xf['@@transducer/result'](result);
20722  };
20723
20724  XAll.prototype['@@transducer/step'] = function (result, input) {
20725    if (!this.f(input)) {
20726      this.all = false;
20727      result = _reduced(this.xf['@@transducer/step'](result, false));
20728    }
20729
20730    return result;
20731  };
20732
20733  return XAll;
20734}();
20735
20736var _xall =
20737/*#__PURE__*/
20738_curry2(function _xall(f, xf) {
20739  return new XAll(f, xf);
20740});
20741
20742module.exports = _xall;
20743
20744/***/ }),
20745
vendor: 1,394 bytes, lines 20746-20804
20746/***/ "./node_modules/ramda/src/internal/_xany.js":
20747/*!**************************************************!*\
20748  !*** ./node_modules/ramda/src/internal/_xany.js ***!
20749  \**************************************************/
20750/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20751
20752var _curry2 =
20753/*#__PURE__*/
20754__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20755
20756var _reduced =
20757/*#__PURE__*/
20758__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
20759
20760var _xfBase =
20761/*#__PURE__*/
20762__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
20763
20764var XAny =
20765/*#__PURE__*/
20766function () {
20767  function XAny(f, xf) {
20768    this.xf = xf;
20769    this.f = f;
20770    this.any = false;
20771  }
20772
20773  XAny.prototype['@@transducer/init'] = _xfBase.init;
20774
20775  XAny.prototype['@@transducer/result'] = function (result) {
20776    if (!this.any) {
20777      result = this.xf['@@transducer/step'](result, false);
20778    }
20779
20780    return this.xf['@@transducer/result'](result);
20781  };
20782
20783  XAny.prototype['@@transducer/step'] = function (result, input) {
20784    if (this.f(input)) {
20785      this.any = true;
20786      result = _reduced(this.xf['@@transducer/step'](result, true));
20787    }
20788
20789    return result;
20790  };
20791
20792  return XAny;
20793}();
20794
20795var _xany =
20796/*#__PURE__*/
20797_curry2(function _xany(f, xf) {
20798  return new XAny(f, xf);
20799});
20800
20801module.exports = _xany;
20802
20803/***/ }),
20804
vendor: 1,760 bytes, lines 20805-20871
20805/***/ "./node_modules/ramda/src/internal/_xaperture.js":
20806/*!*******************************************************!*\
20807  !*** ./node_modules/ramda/src/internal/_xaperture.js ***!
20808  \*******************************************************/
20809/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20810
20811var _concat =
20812/*#__PURE__*/
20813__webpack_require__(/*! ./_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
20814
20815var _curry2 =
20816/*#__PURE__*/
20817__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20818
20819var _xfBase =
20820/*#__PURE__*/
20821__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
20822
20823var XAperture =
20824/*#__PURE__*/
20825function () {
20826  function XAperture(n, xf) {
20827    this.xf = xf;
20828    this.pos = 0;
20829    this.full = false;
20830    this.acc = new Array(n);
20831  }
20832
20833  XAperture.prototype['@@transducer/init'] = _xfBase.init;
20834
20835  XAperture.prototype['@@transducer/result'] = function (result) {
20836    this.acc = null;
20837    return this.xf['@@transducer/result'](result);
20838  };
20839
20840  XAperture.prototype['@@transducer/step'] = function (result, input) {
20841    this.store(input);
20842    return this.full ? this.xf['@@transducer/step'](result, this.getCopy()) : result;
20843  };
20844
20845  XAperture.prototype.store = function (input) {
20846    this.acc[this.pos] = input;
20847    this.pos += 1;
20848
20849    if (this.pos === this.acc.length) {
20850      this.pos = 0;
20851      this.full = true;
20852    }
20853  };
20854
20855  XAperture.prototype.getCopy = function () {
20856    return _concat(Array.prototype.slice.call(this.acc, this.pos), Array.prototype.slice.call(this.acc, 0, this.pos));
20857  };
20858
20859  return XAperture;
20860}();
20861
20862var _xaperture =
20863/*#__PURE__*/
20864_curry2(function _xaperture(n, xf) {
20865  return new XAperture(n, xf);
20866});
20867
20868module.exports = _xaperture;
20869
20870/***/ }),
20871
vendor: 769 bytes, lines 20872-20899
20872/***/ "./node_modules/ramda/src/internal/_xchain.js":
20873/*!****************************************************!*\
20874  !*** ./node_modules/ramda/src/internal/_xchain.js ***!
20875  \****************************************************/
20876/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20877
20878var _curry2 =
20879/*#__PURE__*/
20880__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20881
20882var _flatCat =
20883/*#__PURE__*/
20884__webpack_require__(/*! ./_flatCat.js */ "./node_modules/ramda/src/internal/_flatCat.js");
20885
20886var map =
20887/*#__PURE__*/
20888__webpack_require__(/*! ../map.js */ "./node_modules/ramda/src/map.js");
20889
20890var _xchain =
20891/*#__PURE__*/
20892_curry2(function _xchain(f, xf) {
20893  return map(f, _flatCat(xf));
20894});
20895
20896module.exports = _xchain;
20897
20898/***/ }),
20899
vendor: 1,098 bytes, lines 20900-20946
20900/***/ "./node_modules/ramda/src/internal/_xdrop.js":
20901/*!***************************************************!*\
20902  !*** ./node_modules/ramda/src/internal/_xdrop.js ***!
20903  \***************************************************/
20904/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20905
20906var _curry2 =
20907/*#__PURE__*/
20908__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20909
20910var _xfBase =
20911/*#__PURE__*/
20912__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
20913
20914var XDrop =
20915/*#__PURE__*/
20916function () {
20917  function XDrop(n, xf) {
20918    this.xf = xf;
20919    this.n = n;
20920  }
20921
20922  XDrop.prototype['@@transducer/init'] = _xfBase.init;
20923  XDrop.prototype['@@transducer/result'] = _xfBase.result;
20924
20925  XDrop.prototype['@@transducer/step'] = function (result, input) {
20926    if (this.n > 0) {
20927      this.n -= 1;
20928      return result;
20929    }
20930
20931    return this.xf['@@transducer/step'](result, input);
20932  };
20933
20934  return XDrop;
20935}();
20936
20937var _xdrop =
20938/*#__PURE__*/
20939_curry2(function _xdrop(n, xf) {
20940  return new XDrop(n, xf);
20941});
20942
20943module.exports = _xdrop;
20944
20945/***/ }),
20946
vendor: 1,505 bytes, lines 20947-21009
20947/***/ "./node_modules/ramda/src/internal/_xdropLast.js":
20948/*!*******************************************************!*\
20949  !*** ./node_modules/ramda/src/internal/_xdropLast.js ***!
20950  \*******************************************************/
20951/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
20952
20953var _curry2 =
20954/*#__PURE__*/
20955__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
20956
20957var _xfBase =
20958/*#__PURE__*/
20959__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
20960
20961var XDropLast =
20962/*#__PURE__*/
20963function () {
20964  function XDropLast(n, xf) {
20965    this.xf = xf;
20966    this.pos = 0;
20967    this.full = false;
20968    this.acc = new Array(n);
20969  }
20970
20971  XDropLast.prototype['@@transducer/init'] = _xfBase.init;
20972
20973  XDropLast.prototype['@@transducer/result'] = function (result) {
20974    this.acc = null;
20975    return this.xf['@@transducer/result'](result);
20976  };
20977
20978  XDropLast.prototype['@@transducer/step'] = function (result, input) {
20979    if (this.full) {
20980      result = this.xf['@@transducer/step'](result, this.acc[this.pos]);
20981    }
20982
20983    this.store(input);
20984    return result;
20985  };
20986
20987  XDropLast.prototype.store = function (input) {
20988    this.acc[this.pos] = input;
20989    this.pos += 1;
20990
20991    if (this.pos === this.acc.length) {
20992      this.pos = 0;
20993      this.full = true;
20994    }
20995  };
20996
20997  return XDropLast;
20998}();
20999
21000var _xdropLast =
21001/*#__PURE__*/
21002_curry2(function _xdropLast(n, xf) {
21003  return new XDropLast(n, xf);
21004});
21005
21006module.exports = _xdropLast;
21007
21008/***/ }),
21009
vendor: 1,757 bytes, lines 21010-21071
21010/***/ "./node_modules/ramda/src/internal/_xdropLastWhile.js":
21011/*!************************************************************!*\
21012  !*** ./node_modules/ramda/src/internal/_xdropLastWhile.js ***!
21013  \************************************************************/
21014/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21015
21016var _curry2 =
21017/*#__PURE__*/
21018__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21019
21020var _reduce =
21021/*#__PURE__*/
21022__webpack_require__(/*! ./_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
21023
21024var _xfBase =
21025/*#__PURE__*/
21026__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21027
21028var XDropLastWhile =
21029/*#__PURE__*/
21030function () {
21031  function XDropLastWhile(fn, xf) {
21032    this.f = fn;
21033    this.retained = [];
21034    this.xf = xf;
21035  }
21036
21037  XDropLastWhile.prototype['@@transducer/init'] = _xfBase.init;
21038
21039  XDropLastWhile.prototype['@@transducer/result'] = function (result) {
21040    this.retained = null;
21041    return this.xf['@@transducer/result'](result);
21042  };
21043
21044  XDropLastWhile.prototype['@@transducer/step'] = function (result, input) {
21045    return this.f(input) ? this.retain(result, input) : this.flush(result, input);
21046  };
21047
21048  XDropLastWhile.prototype.flush = function (result, input) {
21049    result = _reduce(this.xf['@@transducer/step'], result, this.retained);
21050    this.retained = [];
21051    return this.xf['@@transducer/step'](result, input);
21052  };
21053
21054  XDropLastWhile.prototype.retain = function (result, input) {
21055    this.retained.push(input);
21056    return result;
21057  };
21058
21059  return XDropLastWhile;
21060}();
21061
21062var _xdropLastWhile =
21063/*#__PURE__*/
21064_curry2(function _xdropLastWhile(fn, xf) {
21065  return new XDropLastWhile(fn, xf);
21066});
21067
21068module.exports = _xdropLastWhile;
21069
21070/***/ }),
21071
vendor: 1,491 bytes, lines 21072-21124
21072/***/ "./node_modules/ramda/src/internal/_xdropRepeatsWith.js":
21073/*!**************************************************************!*\
21074  !*** ./node_modules/ramda/src/internal/_xdropRepeatsWith.js ***!
21075  \**************************************************************/
21076/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21077
21078var _curry2 =
21079/*#__PURE__*/
21080__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21081
21082var _xfBase =
21083/*#__PURE__*/
21084__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21085
21086var XDropRepeatsWith =
21087/*#__PURE__*/
21088function () {
21089  function XDropRepeatsWith(pred, xf) {
21090    this.xf = xf;
21091    this.pred = pred;
21092    this.lastValue = undefined;
21093    this.seenFirstValue = false;
21094  }
21095
21096  XDropRepeatsWith.prototype['@@transducer/init'] = _xfBase.init;
21097  XDropRepeatsWith.prototype['@@transducer/result'] = _xfBase.result;
21098
21099  XDropRepeatsWith.prototype['@@transducer/step'] = function (result, input) {
21100    var sameAsLast = false;
21101
21102    if (!this.seenFirstValue) {
21103      this.seenFirstValue = true;
21104    } else if (this.pred(this.lastValue, input)) {
21105      sameAsLast = true;
21106    }
21107
21108    this.lastValue = input;
21109    return sameAsLast ? result : this.xf['@@transducer/step'](result, input);
21110  };
21111
21112  return XDropRepeatsWith;
21113}();
21114
21115var _xdropRepeatsWith =
21116/*#__PURE__*/
21117_curry2(function _xdropRepeatsWith(pred, xf) {
21118  return new XDropRepeatsWith(pred, xf);
21119});
21120
21121module.exports = _xdropRepeatsWith;
21122
21123/***/ }),
21124
vendor: 1,204 bytes, lines 21125-21174
21125/***/ "./node_modules/ramda/src/internal/_xdropWhile.js":
21126/*!********************************************************!*\
21127  !*** ./node_modules/ramda/src/internal/_xdropWhile.js ***!
21128  \********************************************************/
21129/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21130
21131var _curry2 =
21132/*#__PURE__*/
21133__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21134
21135var _xfBase =
21136/*#__PURE__*/
21137__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21138
21139var XDropWhile =
21140/*#__PURE__*/
21141function () {
21142  function XDropWhile(f, xf) {
21143    this.xf = xf;
21144    this.f = f;
21145  }
21146
21147  XDropWhile.prototype['@@transducer/init'] = _xfBase.init;
21148  XDropWhile.prototype['@@transducer/result'] = _xfBase.result;
21149
21150  XDropWhile.prototype['@@transducer/step'] = function (result, input) {
21151    if (this.f) {
21152      if (this.f(input)) {
21153        return result;
21154      }
21155
21156      this.f = null;
21157    }
21158
21159    return this.xf['@@transducer/step'](result, input);
21160  };
21161
21162  return XDropWhile;
21163}();
21164
21165var _xdropWhile =
21166/*#__PURE__*/
21167_curry2(function _xdropWhile(f, xf) {
21168  return new XDropWhile(f, xf);
21169});
21170
21171module.exports = _xdropWhile;
21172
21173/***/ }),
21174
vendor: 438 bytes, lines 21175-21191
21175/***/ "./node_modules/ramda/src/internal/_xfBase.js":
21176/*!****************************************************!*\
21177  !*** ./node_modules/ramda/src/internal/_xfBase.js ***!
21178  \****************************************************/
21179/***/ ((module) => {
21180
21181module.exports = {
21182  init: function () {
21183    return this.xf['@@transducer/init']();
21184  },
21185  result: function (result) {
21186    return this.xf['@@transducer/result'](result);
21187  }
21188};
21189
21190/***/ }),
21191
vendor: 1,082 bytes, lines 21192-21233
21192/***/ "./node_modules/ramda/src/internal/_xfilter.js":
21193/*!*****************************************************!*\
21194  !*** ./node_modules/ramda/src/internal/_xfilter.js ***!
21195  \*****************************************************/
21196/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21197
21198var _curry2 =
21199/*#__PURE__*/
21200__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21201
21202var _xfBase =
21203/*#__PURE__*/
21204__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21205
21206var XFilter =
21207/*#__PURE__*/
21208function () {
21209  function XFilter(f, xf) {
21210    this.xf = xf;
21211    this.f = f;
21212  }
21213
21214  XFilter.prototype['@@transducer/init'] = _xfBase.init;
21215  XFilter.prototype['@@transducer/result'] = _xfBase.result;
21216
21217  XFilter.prototype['@@transducer/step'] = function (result, input) {
21218    return this.f(input) ? this.xf['@@transducer/step'](result, input) : result;
21219  };
21220
21221  return XFilter;
21222}();
21223
21224var _xfilter =
21225/*#__PURE__*/
21226_curry2(function _xfilter(f, xf) {
21227  return new XFilter(f, xf);
21228});
21229
21230module.exports = _xfilter;
21231
21232/***/ }),
21233
vendor: 1,416 bytes, lines 21234-21292
21234/***/ "./node_modules/ramda/src/internal/_xfind.js":
21235/*!***************************************************!*\
21236  !*** ./node_modules/ramda/src/internal/_xfind.js ***!
21237  \***************************************************/
21238/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21239
21240var _curry2 =
21241/*#__PURE__*/
21242__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21243
21244var _reduced =
21245/*#__PURE__*/
21246__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
21247
21248var _xfBase =
21249/*#__PURE__*/
21250__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21251
21252var XFind =
21253/*#__PURE__*/
21254function () {
21255  function XFind(f, xf) {
21256    this.xf = xf;
21257    this.f = f;
21258    this.found = false;
21259  }
21260
21261  XFind.prototype['@@transducer/init'] = _xfBase.init;
21262
21263  XFind.prototype['@@transducer/result'] = function (result) {
21264    if (!this.found) {
21265      result = this.xf['@@transducer/step'](result, void 0);
21266    }
21267
21268    return this.xf['@@transducer/result'](result);
21269  };
21270
21271  XFind.prototype['@@transducer/step'] = function (result, input) {
21272    if (this.f(input)) {
21273      this.found = true;
21274      result = _reduced(this.xf['@@transducer/step'](result, input));
21275    }
21276
21277    return result;
21278  };
21279
21280  return XFind;
21281}();
21282
21283var _xfind =
21284/*#__PURE__*/
21285_curry2(function _xfind(f, xf) {
21286  return new XFind(f, xf);
21287});
21288
21289module.exports = _xfind;
21290
21291/***/ }),
21292
vendor: 1,524 bytes, lines 21293-21354
21293/***/ "./node_modules/ramda/src/internal/_xfindIndex.js":
21294/*!********************************************************!*\
21295  !*** ./node_modules/ramda/src/internal/_xfindIndex.js ***!
21296  \********************************************************/
21297/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21298
21299var _curry2 =
21300/*#__PURE__*/
21301__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21302
21303var _reduced =
21304/*#__PURE__*/
21305__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
21306
21307var _xfBase =
21308/*#__PURE__*/
21309__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21310
21311var XFindIndex =
21312/*#__PURE__*/
21313function () {
21314  function XFindIndex(f, xf) {
21315    this.xf = xf;
21316    this.f = f;
21317    this.idx = -1;
21318    this.found = false;
21319  }
21320
21321  XFindIndex.prototype['@@transducer/init'] = _xfBase.init;
21322
21323  XFindIndex.prototype['@@transducer/result'] = function (result) {
21324    if (!this.found) {
21325      result = this.xf['@@transducer/step'](result, -1);
21326    }
21327
21328    return this.xf['@@transducer/result'](result);
21329  };
21330
21331  XFindIndex.prototype['@@transducer/step'] = function (result, input) {
21332    this.idx += 1;
21333
21334    if (this.f(input)) {
21335      this.found = true;
21336      result = _reduced(this.xf['@@transducer/step'](result, this.idx));
21337    }
21338
21339    return result;
21340  };
21341
21342  return XFindIndex;
21343}();
21344
21345var _xfindIndex =
21346/*#__PURE__*/
21347_curry2(function _xfindIndex(f, xf) {
21348  return new XFindIndex(f, xf);
21349});
21350
21351module.exports = _xfindIndex;
21352
21353/***/ }),
21354
vendor: 1,207 bytes, lines 21355-21403
21355/***/ "./node_modules/ramda/src/internal/_xfindLast.js":
21356/*!*******************************************************!*\
21357  !*** ./node_modules/ramda/src/internal/_xfindLast.js ***!
21358  \*******************************************************/
21359/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21360
21361var _curry2 =
21362/*#__PURE__*/
21363__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21364
21365var _xfBase =
21366/*#__PURE__*/
21367__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21368
21369var XFindLast =
21370/*#__PURE__*/
21371function () {
21372  function XFindLast(f, xf) {
21373    this.xf = xf;
21374    this.f = f;
21375  }
21376
21377  XFindLast.prototype['@@transducer/init'] = _xfBase.init;
21378
21379  XFindLast.prototype['@@transducer/result'] = function (result) {
21380    return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.last));
21381  };
21382
21383  XFindLast.prototype['@@transducer/step'] = function (result, input) {
21384    if (this.f(input)) {
21385      this.last = input;
21386    }
21387
21388    return result;
21389  };
21390
21391  return XFindLast;
21392}();
21393
21394var _xfindLast =
21395/*#__PURE__*/
21396_curry2(function _xfindLast(f, xf) {
21397  return new XFindLast(f, xf);
21398});
21399
21400module.exports = _xfindLast;
21401
21402/***/ }),
21403
vendor: 1,348 bytes, lines 21404-21456
21404/***/ "./node_modules/ramda/src/internal/_xfindLastIndex.js":
21405/*!************************************************************!*\
21406  !*** ./node_modules/ramda/src/internal/_xfindLastIndex.js ***!
21407  \************************************************************/
21408/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21409
21410var _curry2 =
21411/*#__PURE__*/
21412__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21413
21414var _xfBase =
21415/*#__PURE__*/
21416__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21417
21418var XFindLastIndex =
21419/*#__PURE__*/
21420function () {
21421  function XFindLastIndex(f, xf) {
21422    this.xf = xf;
21423    this.f = f;
21424    this.idx = -1;
21425    this.lastIdx = -1;
21426  }
21427
21428  XFindLastIndex.prototype['@@transducer/init'] = _xfBase.init;
21429
21430  XFindLastIndex.prototype['@@transducer/result'] = function (result) {
21431    return this.xf['@@transducer/result'](this.xf['@@transducer/step'](result, this.lastIdx));
21432  };
21433
21434  XFindLastIndex.prototype['@@transducer/step'] = function (result, input) {
21435    this.idx += 1;
21436
21437    if (this.f(input)) {
21438      this.lastIdx = this.idx;
21439    }
21440
21441    return result;
21442  };
21443
21444  return XFindLastIndex;
21445}();
21446
21447var _xfindLastIndex =
21448/*#__PURE__*/
21449_curry2(function _xfindLastIndex(f, xf) {
21450  return new XFindLastIndex(f, xf);
21451});
21452
21453module.exports = _xfindLastIndex;
21454
21455/***/ }),
21456
vendor: 1,023 bytes, lines 21457-21498
21457/***/ "./node_modules/ramda/src/internal/_xmap.js":
21458/*!**************************************************!*\
21459  !*** ./node_modules/ramda/src/internal/_xmap.js ***!
21460  \**************************************************/
21461/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21462
21463var _curry2 =
21464/*#__PURE__*/
21465__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21466
21467var _xfBase =
21468/*#__PURE__*/
21469__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21470
21471var XMap =
21472/*#__PURE__*/
21473function () {
21474  function XMap(f, xf) {
21475    this.xf = xf;
21476    this.f = f;
21477  }
21478
21479  XMap.prototype['@@transducer/init'] = _xfBase.init;
21480  XMap.prototype['@@transducer/result'] = _xfBase.result;
21481
21482  XMap.prototype['@@transducer/step'] = function (result, input) {
21483    return this.xf['@@transducer/step'](result, this.f(input));
21484  };
21485
21486  return XMap;
21487}();
21488
21489var _xmap =
21490/*#__PURE__*/
21491_curry2(function _xmap(f, xf) {
21492  return new XMap(f, xf);
21493});
21494
21495module.exports = _xmap;
21496
21497/***/ }),
21498
vendor: 1,225 bytes, lines 21499-21545
21499/***/ "./node_modules/ramda/src/internal/_xpromap.js":
21500/*!*****************************************************!*\
21501  !*** ./node_modules/ramda/src/internal/_xpromap.js ***!
21502  \*****************************************************/
21503/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21504
21505var _curry3 =
21506/*#__PURE__*/
21507__webpack_require__(/*! ./_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
21508
21509var _xfBase =
21510/*#__PURE__*/
21511__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21512
21513var _promap =
21514/*#__PURE__*/
21515__webpack_require__(/*! ./_promap.js */ "./node_modules/ramda/src/internal/_promap.js");
21516
21517var XPromap =
21518/*#__PURE__*/
21519function () {
21520  function XPromap(f, g, xf) {
21521    this.xf = xf;
21522    this.f = f;
21523    this.g = g;
21524  }
21525
21526  XPromap.prototype['@@transducer/init'] = _xfBase.init;
21527  XPromap.prototype['@@transducer/result'] = _xfBase.result;
21528
21529  XPromap.prototype['@@transducer/step'] = function (result, input) {
21530    return this.xf['@@transducer/step'](result, _promap(this.f, this.g, input));
21531  };
21532
21533  return XPromap;
21534}();
21535
21536var _xpromap =
21537/*#__PURE__*/
21538_curry3(function _xpromap(f, g, xf) {
21539  return new XPromap(f, g, xf);
21540});
21541
21542module.exports = _xpromap;
21543
21544/***/ }),
21545
vendor: 1,864 bytes, lines 21546-21614
21546/***/ "./node_modules/ramda/src/internal/_xreduceBy.js":
21547/*!*******************************************************!*\
21548  !*** ./node_modules/ramda/src/internal/_xreduceBy.js ***!
21549  \*******************************************************/
21550/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21551
21552var _curryN =
21553/*#__PURE__*/
21554__webpack_require__(/*! ./_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
21555
21556var _has =
21557/*#__PURE__*/
21558__webpack_require__(/*! ./_has.js */ "./node_modules/ramda/src/internal/_has.js");
21559
21560var _xfBase =
21561/*#__PURE__*/
21562__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21563
21564var XReduceBy =
21565/*#__PURE__*/
21566function () {
21567  function XReduceBy(valueFn, valueAcc, keyFn, xf) {
21568    this.valueFn = valueFn;
21569    this.valueAcc = valueAcc;
21570    this.keyFn = keyFn;
21571    this.xf = xf;
21572    this.inputs = {};
21573  }
21574
21575  XReduceBy.prototype['@@transducer/init'] = _xfBase.init;
21576
21577  XReduceBy.prototype['@@transducer/result'] = function (result) {
21578    var key;
21579
21580    for (key in this.inputs) {
21581      if (_has(key, this.inputs)) {
21582        result = this.xf['@@transducer/step'](result, this.inputs[key]);
21583
21584        if (result['@@transducer/reduced']) {
21585          result = result['@@transducer/value'];
21586          break;
21587        }
21588      }
21589    }
21590
21591    this.inputs = null;
21592    return this.xf['@@transducer/result'](result);
21593  };
21594
21595  XReduceBy.prototype['@@transducer/step'] = function (result, input) {
21596    var key = this.keyFn(input);
21597    this.inputs[key] = this.inputs[key] || [key, this.valueAcc];
21598    this.inputs[key][1] = this.valueFn(this.inputs[key][1], input);
21599    return result;
21600  };
21601
21602  return XReduceBy;
21603}();
21604
21605var _xreduceBy =
21606/*#__PURE__*/
21607_curryN(4, [], function _xreduceBy(valueFn, valueAcc, keyFn, xf) {
21608  return new XReduceBy(valueFn, valueAcc, keyFn, xf);
21609});
21610
21611module.exports = _xreduceBy;
21612
21613/***/ }),
21614
vendor: 1,276 bytes, lines 21615-21663
21615/***/ "./node_modules/ramda/src/internal/_xtake.js":
21616/*!***************************************************!*\
21617  !*** ./node_modules/ramda/src/internal/_xtake.js ***!
21618  \***************************************************/
21619/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21620
21621var _curry2 =
21622/*#__PURE__*/
21623__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21624
21625var _reduced =
21626/*#__PURE__*/
21627__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
21628
21629var _xfBase =
21630/*#__PURE__*/
21631__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21632
21633var XTake =
21634/*#__PURE__*/
21635function () {
21636  function XTake(n, xf) {
21637    this.xf = xf;
21638    this.n = n;
21639    this.i = 0;
21640  }
21641
21642  XTake.prototype['@@transducer/init'] = _xfBase.init;
21643  XTake.prototype['@@transducer/result'] = _xfBase.result;
21644
21645  XTake.prototype['@@transducer/step'] = function (result, input) {
21646    this.i += 1;
21647    var ret = this.n === 0 ? result : this.xf['@@transducer/step'](result, input);
21648    return this.n >= 0 && this.i >= this.n ? _reduced(ret) : ret;
21649  };
21650
21651  return XTake;
21652}();
21653
21654var _xtake =
21655/*#__PURE__*/
21656_curry2(function _xtake(n, xf) {
21657  return new XTake(n, xf);
21658});
21659
21660module.exports = _xtake;
21661
21662/***/ }),
21663
vendor: 1,255 bytes, lines 21664-21709
21664/***/ "./node_modules/ramda/src/internal/_xtakeWhile.js":
21665/*!********************************************************!*\
21666  !*** ./node_modules/ramda/src/internal/_xtakeWhile.js ***!
21667  \********************************************************/
21668/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21669
21670var _curry2 =
21671/*#__PURE__*/
21672__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21673
21674var _reduced =
21675/*#__PURE__*/
21676__webpack_require__(/*! ./_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
21677
21678var _xfBase =
21679/*#__PURE__*/
21680__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21681
21682var XTakeWhile =
21683/*#__PURE__*/
21684function () {
21685  function XTakeWhile(f, xf) {
21686    this.xf = xf;
21687    this.f = f;
21688  }
21689
21690  XTakeWhile.prototype['@@transducer/init'] = _xfBase.init;
21691  XTakeWhile.prototype['@@transducer/result'] = _xfBase.result;
21692
21693  XTakeWhile.prototype['@@transducer/step'] = function (result, input) {
21694    return this.f(input) ? this.xf['@@transducer/step'](result, input) : _reduced(result);
21695  };
21696
21697  return XTakeWhile;
21698}();
21699
21700var _xtakeWhile =
21701/*#__PURE__*/
21702_curry2(function _xtakeWhile(f, xf) {
21703  return new XTakeWhile(f, xf);
21704});
21705
21706module.exports = _xtakeWhile;
21707
21708/***/ }),
21709
vendor: 1,034 bytes, lines 21710-21752
21710/***/ "./node_modules/ramda/src/internal/_xtap.js":
21711/*!**************************************************!*\
21712  !*** ./node_modules/ramda/src/internal/_xtap.js ***!
21713  \**************************************************/
21714/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21715
21716var _curry2 =
21717/*#__PURE__*/
21718__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21719
21720var _xfBase =
21721/*#__PURE__*/
21722__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21723
21724var XTap =
21725/*#__PURE__*/
21726function () {
21727  function XTap(f, xf) {
21728    this.xf = xf;
21729    this.f = f;
21730  }
21731
21732  XTap.prototype['@@transducer/init'] = _xfBase.init;
21733  XTap.prototype['@@transducer/result'] = _xfBase.result;
21734
21735  XTap.prototype['@@transducer/step'] = function (result, input) {
21736    this.f(input);
21737    return this.xf['@@transducer/step'](result, input);
21738  };
21739
21740  return XTap;
21741}();
21742
21743var _xtap =
21744/*#__PURE__*/
21745_curry2(function _xtap(f, xf) {
21746  return new XTap(f, xf);
21747});
21748
21749module.exports = _xtap;
21750
21751/***/ }),
21752
vendor: 1,232 bytes, lines 21753-21799
21753/***/ "./node_modules/ramda/src/internal/_xuniqBy.js":
21754/*!*****************************************************!*\
21755  !*** ./node_modules/ramda/src/internal/_xuniqBy.js ***!
21756  \*****************************************************/
21757/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21758
21759var _curry2 =
21760/*#__PURE__*/
21761__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21762
21763var _Set =
21764/*#__PURE__*/
21765__webpack_require__(/*! ./_Set.js */ "./node_modules/ramda/src/internal/_Set.js");
21766
21767var _xfBase =
21768/*#__PURE__*/
21769__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21770
21771var XUniqBy =
21772/*#__PURE__*/
21773function () {
21774  function XUniqBy(f, xf) {
21775    this.xf = xf;
21776    this.f = f;
21777    this.set = new _Set();
21778  }
21779
21780  XUniqBy.prototype['@@transducer/init'] = _xfBase.init;
21781  XUniqBy.prototype['@@transducer/result'] = _xfBase.result;
21782
21783  XUniqBy.prototype['@@transducer/step'] = function (result, input) {
21784    return this.set.add(this.f(input)) ? this.xf['@@transducer/step'](result, input) : result;
21785  };
21786
21787  return XUniqBy;
21788}();
21789
21790var _xuniqBy =
21791/*#__PURE__*/
21792_curry2(function _xuniqBy(f, xf) {
21793  return new XUniqBy(f, xf);
21794});
21795
21796module.exports = _xuniqBy;
21797
21798/***/ }),
21799
vendor: 1,384 bytes, lines 21800-21851
21800/***/ "./node_modules/ramda/src/internal/_xuniqWith.js":
21801/*!*******************************************************!*\
21802  !*** ./node_modules/ramda/src/internal/_xuniqWith.js ***!
21803  \*******************************************************/
21804/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21805
21806var _curry2 =
21807/*#__PURE__*/
21808__webpack_require__(/*! ./_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21809
21810var _includesWith =
21811/*#__PURE__*/
21812__webpack_require__(/*! ./_includesWith.js */ "./node_modules/ramda/src/internal/_includesWith.js");
21813
21814var _xfBase =
21815/*#__PURE__*/
21816__webpack_require__(/*! ./_xfBase.js */ "./node_modules/ramda/src/internal/_xfBase.js");
21817
21818var XUniqWith =
21819/*#__PURE__*/
21820function () {
21821  function XUniqWith(pred, xf) {
21822    this.xf = xf;
21823    this.pred = pred;
21824    this.items = [];
21825  }
21826
21827  XUniqWith.prototype['@@transducer/init'] = _xfBase.init;
21828  XUniqWith.prototype['@@transducer/result'] = _xfBase.result;
21829
21830  XUniqWith.prototype['@@transducer/step'] = function (result, input) {
21831    if (_includesWith(this.pred, input, this.items)) {
21832      return result;
21833    } else {
21834      this.items.push(input);
21835      return this.xf['@@transducer/step'](result, input);
21836    }
21837  };
21838
21839  return XUniqWith;
21840}();
21841
21842var _xuniqWith =
21843/*#__PURE__*/
21844_curry2(function _xuniqWith(pred, xf) {
21845  return new XUniqWith(pred, xf);
21846});
21847
21848module.exports = _xuniqWith;
21849
21850/***/ }),
21851
vendor: 729 bytes, lines 21852-21887
21852/***/ "./node_modules/ramda/src/internal/_xwrap.js":
21853/*!***************************************************!*\
21854  !*** ./node_modules/ramda/src/internal/_xwrap.js ***!
21855  \***************************************************/
21856/***/ ((module) => {
21857
21858var XWrap =
21859/*#__PURE__*/
21860function () {
21861  function XWrap(fn) {
21862    this.f = fn;
21863  }
21864
21865  XWrap.prototype['@@transducer/init'] = function () {
21866    throw new Error('init not implemented on XWrap');
21867  };
21868
21869  XWrap.prototype['@@transducer/result'] = function (acc) {
21870    return acc;
21871  };
21872
21873  XWrap.prototype['@@transducer/step'] = function (acc, x) {
21874    return this.f(acc, x);
21875  };
21876
21877  return XWrap;
21878}();
21879
21880function _xwrap(fn) {
21881  return new XWrap(fn);
21882}
21883
21884module.exports = _xwrap;
21885
21886/***/ }),
21887
vendor: 1,705 bytes, lines 21888-21951
21888/***/ "./node_modules/ramda/src/intersection.js":
21889/*!************************************************!*\
21890  !*** ./node_modules/ramda/src/intersection.js ***!
21891  \************************************************/
21892/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21893
21894var _includes =
21895/*#__PURE__*/
21896__webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/src/internal/_includes.js");
21897
21898var _curry2 =
21899/*#__PURE__*/
21900__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21901
21902var _filter =
21903/*#__PURE__*/
21904__webpack_require__(/*! ./internal/_filter.js */ "./node_modules/ramda/src/internal/_filter.js");
21905
21906var flip =
21907/*#__PURE__*/
21908__webpack_require__(/*! ./flip.js */ "./node_modules/ramda/src/flip.js");
21909
21910var uniq =
21911/*#__PURE__*/
21912__webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/src/uniq.js");
21913/**
21914 * Combines two lists into a set (i.e. no duplicates) composed of those
21915 * elements common to both lists.
21916 *
21917 * @func
21918 * @memberOf R
21919 * @since v0.1.0
21920 * @category Relation
21921 * @sig [*] -> [*] -> [*]
21922 * @param {Array} list1 The first list.
21923 * @param {Array} list2 The second list.
21924 * @return {Array} The list of elements found in both `list1` and `list2`.
21925 * @see R.innerJoin
21926 * @example
21927 *
21928 *      R.intersection([1,2,3,4], [7,6,5,4,3]); //=> [4, 3]
21929 */
21930
21931
21932var intersection =
21933/*#__PURE__*/
21934_curry2(function intersection(list1, list2) {
21935  var lookupList, filteredList;
21936
21937  if (list1.length > list2.length) {
21938    lookupList = list1;
21939    filteredList = list2;
21940  } else {
21941    lookupList = list2;
21942    filteredList = list1;
21943  }
21944
21945  return uniq(_filter(flip(_includes)(lookupList), filteredList));
21946});
21947
21948module.exports = intersection;
21949
21950/***/ }),
21951
vendor: 1,453 bytes, lines 21952-22009
21952/***/ "./node_modules/ramda/src/intersperse.js":
21953/*!***********************************************!*\
21954  !*** ./node_modules/ramda/src/intersperse.js ***!
21955  \***********************************************/
21956/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
21957
21958var _checkForMethod =
21959/*#__PURE__*/
21960__webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/src/internal/_checkForMethod.js");
21961
21962var _curry2 =
21963/*#__PURE__*/
21964__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
21965/**
21966 * Creates a new list with the separator interposed between elements.
21967 *
21968 * Dispatches to the `intersperse` method of the second argument, if present.
21969 *
21970 * @func
21971 * @memberOf R
21972 * @since v0.14.0
21973 * @category List
21974 * @sig a -> [a] -> [a]
21975 * @param {*} separator The element to add to the list.
21976 * @param {Array} list The list to be interposed.
21977 * @return {Array} The new list.
21978 * @example
21979 *
21980 *      R.intersperse('a', ['b', 'n', 'n', 's']); //=> ['b', 'a', 'n', 'a', 'n', 'a', 's']
21981 */
21982
21983
21984var intersperse =
21985/*#__PURE__*/
21986_curry2(
21987/*#__PURE__*/
21988_checkForMethod('intersperse', function intersperse(separator, list) {
21989  var out = [];
21990  var idx = 0;
21991  var length = list.length;
21992
21993  while (idx < length) {
21994    if (idx === length - 1) {
21995      out.push(list[idx]);
21996    } else {
21997      out.push(list[idx], separator);
21998    }
21999
22000    idx += 1;
22001  }
22002
22003  return out;
22004}));
22005
22006module.exports = intersperse;
22007
22008/***/ }),
22009
vendor: 2,759 bytes, lines 22010-22085
22010/***/ "./node_modules/ramda/src/into.js":
22011/*!****************************************!*\
22012  !*** ./node_modules/ramda/src/into.js ***!
22013  \****************************************/
22014/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22015
22016var _clone =
22017/*#__PURE__*/
22018__webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/src/internal/_clone.js");
22019
22020var _curry3 =
22021/*#__PURE__*/
22022__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
22023
22024var _isTransformer =
22025/*#__PURE__*/
22026__webpack_require__(/*! ./internal/_isTransformer.js */ "./node_modules/ramda/src/internal/_isTransformer.js");
22027
22028var _reduce =
22029/*#__PURE__*/
22030__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
22031
22032var _stepCat =
22033/*#__PURE__*/
22034__webpack_require__(/*! ./internal/_stepCat.js */ "./node_modules/ramda/src/internal/_stepCat.js");
22035/**
22036 * Transforms the items of the list with the transducer and appends the
22037 * transformed items to the accumulator using an appropriate iterator function
22038 * based on the accumulator type.
22039 *
22040 * The accumulator can be an array, string, object or a transformer. Iterated
22041 * items will be appended to arrays and concatenated to strings. Objects will
22042 * be merged directly or 2-item arrays will be merged as key, value pairs.
22043 *
22044 * The accumulator can also be a transformer object that provides a 2-arity
22045 * reducing iterator function, step, 0-arity initial value function, init, and
22046 * 1-arity result extraction function result. The step function is used as the
22047 * iterator function in reduce. The result function is used to convert the
22048 * final accumulator into the return type and in most cases is R.identity. The
22049 * init function is used to provide the initial accumulator.
22050 *
22051 * The iteration is performed with [`R.reduce`](#reduce) after initializing the
22052 * transducer.
22053 *
22054 * @func
22055 * @memberOf R
22056 * @since v0.12.0
22057 * @category List
22058 * @sig a -> (b -> b) -> [c] -> a
22059 * @param {*} acc The initial accumulator value.
22060 * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.
22061 * @param {Array} list The list to iterate over.
22062 * @return {*} The final, accumulated value.
22063 * @see R.transduce
22064 * @example
22065 *
22066 *      const numbers = [1, 2, 3, 4];
22067 *      const transducer = R.compose(R.map(R.add(1)), R.take(2));
22068 *
22069 *      R.into([], transducer, numbers); //=> [2, 3]
22070 *
22071 *      const intoArray = R.into([]);
22072 *      intoArray(transducer, numbers); //=> [2, 3]
22073 */
22074
22075
22076var into =
22077/*#__PURE__*/
22078_curry3(function into(acc, xf, list) {
22079  return _isTransformer(acc) ? _reduce(xf(acc), acc['@@transducer/init'](), list) : _reduce(xf(_stepCat(acc)), _clone(acc, [], [], false), list);
22080});
22081
22082module.exports = into;
22083
22084/***/ }),
22085
vendor: 1,603 bytes, lines 22086-22149
22086/***/ "./node_modules/ramda/src/invert.js":
22087/*!******************************************!*\
22088  !*** ./node_modules/ramda/src/invert.js ***!
22089  \******************************************/
22090/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22091
22092var _curry1 =
22093/*#__PURE__*/
22094__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22095
22096var _has =
22097/*#__PURE__*/
22098__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
22099
22100var keys =
22101/*#__PURE__*/
22102__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
22103/**
22104 * Same as [`R.invertObj`](#invertObj), however this accounts for objects with
22105 * duplicate values by putting the values into an array.
22106 *
22107 * @func
22108 * @memberOf R
22109 * @since v0.9.0
22110 * @category Object
22111 * @sig {s: x} -> {x: [ s, ... ]}
22112 * @param {Object} obj The object or array to invert
22113 * @return {Object} out A new object with keys in an array.
22114 * @see R.invertObj
22115 * @example
22116 *
22117 *      const raceResultsByFirstName = {
22118 *        first: 'alice',
22119 *        second: 'jake',
22120 *        third: 'alice',
22121 *      };
22122 *      R.invert(raceResultsByFirstName);
22123 *      //=> { 'alice': ['first', 'third'], 'jake':['second'] }
22124 */
22125
22126
22127var invert =
22128/*#__PURE__*/
22129_curry1(function invert(obj) {
22130  var props = keys(obj);
22131  var len = props.length;
22132  var idx = 0;
22133  var out = {};
22134
22135  while (idx < len) {
22136    var key = props[idx];
22137    var val = obj[key];
22138    var list = _has(val, out) ? out[val] : out[val] = [];
22139    list[list.length] = key;
22140    idx += 1;
22141  }
22142
22143  return out;
22144});
22145
22146module.exports = invert;
22147
22148/***/ }),
22149
vendor: 1,564 bytes, lines 22150-22212
22150/***/ "./node_modules/ramda/src/invertObj.js":
22151/*!*********************************************!*\
22152  !*** ./node_modules/ramda/src/invertObj.js ***!
22153  \*********************************************/
22154/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22155
22156var _curry1 =
22157/*#__PURE__*/
22158__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22159
22160var keys =
22161/*#__PURE__*/
22162__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
22163/**
22164 * Returns a new object with the keys of the given object as values, and the
22165 * values of the given object, which are coerced to strings, as keys. Note
22166 * that the last key found is preferred when handling the same value.
22167 *
22168 * @func
22169 * @memberOf R
22170 * @since v0.9.0
22171 * @category Object
22172 * @sig {s: x} -> {x: s}
22173 * @param {Object} obj The object or array to invert
22174 * @return {Object} out A new object
22175 * @see R.invert
22176 * @example
22177 *
22178 *      const raceResults = {
22179 *        first: 'alice',
22180 *        second: 'jake'
22181 *      };
22182 *      R.invertObj(raceResults);
22183 *      //=> { 'alice': 'first', 'jake':'second' }
22184 *
22185 *      // Alternatively:
22186 *      const raceResults = ['alice', 'jake'];
22187 *      R.invertObj(raceResults);
22188 *      //=> { 'alice': '0', 'jake':'1' }
22189 */
22190
22191
22192var invertObj =
22193/*#__PURE__*/
22194_curry1(function invertObj(obj) {
22195  var props = keys(obj);
22196  var len = props.length;
22197  var idx = 0;
22198  var out = {};
22199
22200  while (idx < len) {
22201    var key = props[idx];
22202    out[obj[key]] = key;
22203    idx += 1;
22204  }
22205
22206  return out;
22207});
22208
22209module.exports = invertObj;
22210
22211/***/ }),
22212
vendor: 2,411 bytes, lines 22213-22287
22213/***/ "./node_modules/ramda/src/invoker.js":
22214/*!*******************************************!*\
22215  !*** ./node_modules/ramda/src/invoker.js ***!
22216  \*******************************************/
22217/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22218
22219var _curry2 =
22220/*#__PURE__*/
22221__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
22222
22223var _isFunction =
22224/*#__PURE__*/
22225__webpack_require__(/*! ./internal/_isFunction.js */ "./node_modules/ramda/src/internal/_isFunction.js");
22226
22227var curryN =
22228/*#__PURE__*/
22229__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
22230
22231var toString =
22232/*#__PURE__*/
22233__webpack_require__(/*! ./toString.js */ "./node_modules/ramda/src/toString.js");
22234/**
22235 * Turns a named method with a specified arity into a function that can be
22236 * called directly supplied with arguments and a target object.
22237 *
22238 * The returned function is curried and accepts `arity + 1` parameters where
22239 * the final parameter is the target object.
22240 *
22241 * @func
22242 * @memberOf R
22243 * @since v0.1.0
22244 * @category Function
22245 * @sig Number -> String -> (a -> b -> ... -> n -> Object -> *)
22246 * @param {Number} arity Number of arguments the returned function should take
22247 *        before the target object.
22248 * @param {String} method Name of any of the target object's methods to call.
22249 * @return {Function} A new curried function.
22250 * @see R.construct
22251 * @example
22252 *
22253 *      const sliceFrom = R.invoker(1, 'slice');
22254 *      sliceFrom(6, 'abcdefghijklm'); //=> 'ghijklm'
22255 *      const sliceFrom6 = R.invoker(2, 'slice')(6);
22256 *      sliceFrom6(8, 'abcdefghijklm'); //=> 'gh'
22257 *
22258 *      const dog = {
22259 *        speak: async () => 'Woof!'
22260 *      };
22261 *      const speak = R.invoker(0, 'speak');
22262 *      speak(dog).then(console.log) //~> 'Woof!'
22263 *
22264 * @symb R.invoker(0, 'method')(o) = o['method']()
22265 * @symb R.invoker(1, 'method')(a, o) = o['method'](a)
22266 * @symb R.invoker(2, 'method')(a, b, o) = o['method'](a, b)
22267 */
22268
22269
22270var invoker =
22271/*#__PURE__*/
22272_curry2(function invoker(arity, method) {
22273  return curryN(arity + 1, function () {
22274    var target = arguments[arity];
22275
22276    if (target != null && _isFunction(target[method])) {
22277      return target[method].apply(target, Array.prototype.slice.call(arguments, 0, arity));
22278    }
22279
22280    throw new TypeError(toString(target) + ' does not have a method named "' + method + '"');
22281  });
22282});
22283
22284module.exports = invoker;
22285
22286/***/ }),
22287
vendor: 1,336 bytes, lines 22288-22332
22288/***/ "./node_modules/ramda/src/is.js":
22289/*!**************************************!*\
22290  !*** ./node_modules/ramda/src/is.js ***!
22291  \**************************************/
22292/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22293
22294var _curry2 =
22295/*#__PURE__*/
22296__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
22297/**
22298 * See if an object (i.e. `val`) is an instance of the supplied constructor. This
22299 * function will check up the inheritance chain, if any.
22300 * If `val` was created using `Object.create`, `R.is(Object, val) === true`.
22301 *
22302 * @func
22303 * @memberOf R
22304 * @since v0.3.0
22305 * @category Type
22306 * @sig (* -> {*}) -> a -> Boolean
22307 * @param {Object} ctor A constructor
22308 * @param {*} val The value to test
22309 * @return {Boolean}
22310 * @example
22311 *
22312 *      R.is(Object, {}); //=> true
22313 *      R.is(Number, 1); //=> true
22314 *      R.is(Object, 1); //=> false
22315 *      R.is(String, 's'); //=> true
22316 *      R.is(String, new String('')); //=> true
22317 *      R.is(Object, new String('')); //=> true
22318 *      R.is(Object, 's'); //=> false
22319 *      R.is(Number, {}); //=> false
22320 */
22321
22322
22323var is =
22324/*#__PURE__*/
22325_curry2(function is(Ctor, val) {
22326  return val instanceof Ctor || val != null && (val.constructor === Ctor || Ctor.name === 'Object' && typeof val === 'object');
22327});
22328
22329module.exports = is;
22330
22331/***/ }),
22332
vendor: 1,340 bytes, lines 22333-22383
22333/***/ "./node_modules/ramda/src/isEmpty.js":
22334/*!*******************************************!*\
22335  !*** ./node_modules/ramda/src/isEmpty.js ***!
22336  \*******************************************/
22337/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22338
22339var _curry1 =
22340/*#__PURE__*/
22341__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22342
22343var empty =
22344/*#__PURE__*/
22345__webpack_require__(/*! ./empty.js */ "./node_modules/ramda/src/empty.js");
22346
22347var equals =
22348/*#__PURE__*/
22349__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
22350/**
22351 * Returns `true` if the given value is its type's empty value; `false`
22352 * otherwise.
22353 *
22354 * @func
22355 * @memberOf R
22356 * @since v0.1.0
22357 * @category Logic
22358 * @sig a -> Boolean
22359 * @param {*} x
22360 * @return {Boolean}
22361 * @see R.empty
22362 * @example
22363 *
22364 *      R.isEmpty([1, 2, 3]);           //=> false
22365 *      R.isEmpty([]);                  //=> true
22366 *      R.isEmpty('');                  //=> true
22367 *      R.isEmpty(null);                //=> false
22368 *      R.isEmpty({});                  //=> true
22369 *      R.isEmpty({length: 0});         //=> false
22370 *      R.isEmpty(Uint8Array.from('')); //=> true
22371 */
22372
22373
22374var isEmpty =
22375/*#__PURE__*/
22376_curry1(function isEmpty(x) {
22377  return x != null && equals(x, empty(x));
22378});
22379
22380module.exports = isEmpty;
22381
22382/***/ }),
22383
vendor: 905 bytes, lines 22384-22421
22384/***/ "./node_modules/ramda/src/isNil.js":
22385/*!*****************************************!*\
22386  !*** ./node_modules/ramda/src/isNil.js ***!
22387  \*****************************************/
22388/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22389
22390var _curry1 =
22391/*#__PURE__*/
22392__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22393/**
22394 * Checks if the input value is `null` or `undefined`.
22395 *
22396 * @func
22397 * @memberOf R
22398 * @since v0.9.0
22399 * @category Type
22400 * @sig * -> Boolean
22401 * @param {*} x The value to test.
22402 * @return {Boolean} `true` if `x` is `undefined` or `null`, otherwise `false`.
22403 * @example
22404 *
22405 *      R.isNil(null); //=> true
22406 *      R.isNil(undefined); //=> true
22407 *      R.isNil(0); //=> false
22408 *      R.isNil([]); //=> false
22409 */
22410
22411
22412var isNil =
22413/*#__PURE__*/
22414_curry1(function isNil(x) {
22415  return x == null;
22416});
22417
22418module.exports = isNil;
22419
22420/***/ }),
22421
vendor: 1,053 bytes, lines 22422-22458
22422/***/ "./node_modules/ramda/src/join.js":
22423/*!****************************************!*\
22424  !*** ./node_modules/ramda/src/join.js ***!
22425  \****************************************/
22426/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22427
22428var invoker =
22429/*#__PURE__*/
22430__webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/src/invoker.js");
22431/**
22432 * Returns a string made by inserting the `separator` between each element and
22433 * concatenating all the elements into a single string.
22434 *
22435 * @func
22436 * @memberOf R
22437 * @since v0.1.0
22438 * @category List
22439 * @sig String -> [a] -> String
22440 * @param {Number|String} separator The string used to separate the elements.
22441 * @param {Array} xs The elements to join into a string.
22442 * @return {String} str The string made by concatenating `xs` with `separator`.
22443 * @see R.split
22444 * @example
22445 *
22446 *      const spacer = R.join(' ');
22447 *      spacer(['a', 2, 3.4]);   //=> 'a 2 3.4'
22448 *      R.join('|', [1, 2, 3]);    //=> '1|2|3'
22449 */
22450
22451
22452var join =
22453/*#__PURE__*/
22454invoker(1, 'join');
22455module.exports = join;
22456
22457/***/ }),
22458
vendor: 1,232 bytes, lines 22459-22502
22459/***/ "./node_modules/ramda/src/juxt.js":
22460/*!****************************************!*\
22461  !*** ./node_modules/ramda/src/juxt.js ***!
22462  \****************************************/
22463/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22464
22465var _curry1 =
22466/*#__PURE__*/
22467__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22468
22469var converge =
22470/*#__PURE__*/
22471__webpack_require__(/*! ./converge.js */ "./node_modules/ramda/src/converge.js");
22472/**
22473 * juxt applies a list of functions to a list of values.
22474 *
22475 * @func
22476 * @memberOf R
22477 * @since v0.19.0
22478 * @category Function
22479 * @sig [(a, b, ..., m) -> n] -> ((a, b, ..., m) -> [n])
22480 * @param {Array} fns An array of functions
22481 * @return {Function} A function that returns a list of values after applying each of the original `fns` to its parameters.
22482 * @see R.applySpec
22483 * @example
22484 *
22485 *      const getRange = R.juxt([Math.min, Math.max]);
22486 *      getRange(3, 4, 9, -3); //=> [-3, 9]
22487 * @symb R.juxt([f, g, h])(a, b) = [f(a, b), g(a, b), h(a, b)]
22488 */
22489
22490
22491var juxt =
22492/*#__PURE__*/
22493_curry1(function juxt(fns) {
22494  return converge(function () {
22495    return Array.prototype.slice.call(arguments, 0);
22496  }, fns);
22497});
22498
22499module.exports = juxt;
22500
22501/***/ }),
22502
vendor: 2,546 bytes, lines 22503-22611
22503/***/ "./node_modules/ramda/src/keys.js":
22504/*!****************************************!*\
22505  !*** ./node_modules/ramda/src/keys.js ***!
22506  \****************************************/
22507/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22508
22509var _curry1 =
22510/*#__PURE__*/
22511__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22512
22513var _has =
22514/*#__PURE__*/
22515__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
22516
22517var _isArguments =
22518/*#__PURE__*/
22519__webpack_require__(/*! ./internal/_isArguments.js */ "./node_modules/ramda/src/internal/_isArguments.js"); // cover IE < 9 keys issues
22520
22521
22522var hasEnumBug = !
22523/*#__PURE__*/
22524{
22525  toString: null
22526}.propertyIsEnumerable('toString');
22527var nonEnumerableProps = ['constructor', 'valueOf', 'isPrototypeOf', 'toString', 'propertyIsEnumerable', 'hasOwnProperty', 'toLocaleString']; // Safari bug
22528
22529var hasArgsEnumBug =
22530/*#__PURE__*/
22531function () {
22532  'use strict';
22533
22534  return arguments.propertyIsEnumerable('length');
22535}();
22536
22537var contains = function contains(list, item) {
22538  var idx = 0;
22539
22540  while (idx < list.length) {
22541    if (list[idx] === item) {
22542      return true;
22543    }
22544
22545    idx += 1;
22546  }
22547
22548  return false;
22549};
22550/**
22551 * Returns a list containing the names of all the enumerable own properties of
22552 * the supplied object.
22553 * Note that the order of the output array is not guaranteed to be consistent
22554 * across different JS platforms.
22555 *
22556 * @func
22557 * @memberOf R
22558 * @since v0.1.0
22559 * @category Object
22560 * @sig {k: v} -> [k]
22561 * @param {Object} obj The object to extract properties from
22562 * @return {Array} An array of the object's own properties.
22563 * @see R.keysIn, R.values, R.toPairs
22564 * @example
22565 *
22566 *      R.keys({a: 1, b: 2, c: 3}); //=> ['a', 'b', 'c']
22567 */
22568
22569
22570var keys = typeof Object.keys === 'function' && !hasArgsEnumBug ?
22571/*#__PURE__*/
22572_curry1(function keys(obj) {
22573  return Object(obj) !== obj ? [] : Object.keys(obj);
22574}) :
22575/*#__PURE__*/
22576_curry1(function keys(obj) {
22577  if (Object(obj) !== obj) {
22578    return [];
22579  }
22580
22581  var prop, nIdx;
22582  var ks = [];
22583
22584  var checkArgsLength = hasArgsEnumBug && _isArguments(obj);
22585
22586  for (prop in obj) {
22587    if (_has(prop, obj) && (!checkArgsLength || prop !== 'length')) {
22588      ks[ks.length] = prop;
22589    }
22590  }
22591
22592  if (hasEnumBug) {
22593    nIdx = nonEnumerableProps.length - 1;
22594
22595    while (nIdx >= 0) {
22596      prop = nonEnumerableProps[nIdx];
22597
22598      if (_has(prop, obj) && !contains(ks, prop)) {
22599        ks[ks.length] = prop;
22600      }
22601
22602      nIdx -= 1;
22603    }
22604  }
22605
22606  return ks;
22607});
22608module.exports = keys;
22609
22610/***/ }),
22611
vendor: 1,222 bytes, lines 22612-22660
22612/***/ "./node_modules/ramda/src/keysIn.js":
22613/*!******************************************!*\
22614  !*** ./node_modules/ramda/src/keysIn.js ***!
22615  \******************************************/
22616/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22617
22618var _curry1 =
22619/*#__PURE__*/
22620__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22621/**
22622 * Returns a list containing the names of all the properties of the supplied
22623 * object, including prototype properties.
22624 * Note that the order of the output array is not guaranteed to be consistent
22625 * across different JS platforms.
22626 *
22627 * @func
22628 * @memberOf R
22629 * @since v0.2.0
22630 * @category Object
22631 * @sig {k: v} -> [k]
22632 * @param {Object} obj The object to extract properties from
22633 * @return {Array} An array of the object's own and prototype properties.
22634 * @see R.keys, R.valuesIn
22635 * @example
22636 *
22637 *      const F = function() { this.x = 'X'; };
22638 *      F.prototype.y = 'Y';
22639 *      const f = new F();
22640 *      R.keysIn(f); //=> ['x', 'y']
22641 */
22642
22643
22644var keysIn =
22645/*#__PURE__*/
22646_curry1(function keysIn(obj) {
22647  var prop;
22648  var ks = [];
22649
22650  for (prop in obj) {
22651    ks[ks.length] = prop;
22652  }
22653
22654  return ks;
22655});
22656
22657module.exports = keysIn;
22658
22659/***/ }),
22660
vendor: 822 bytes, lines 22661-22698
22661/***/ "./node_modules/ramda/src/last.js":
22662/*!****************************************!*\
22663  !*** ./node_modules/ramda/src/last.js ***!
22664  \****************************************/
22665/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22666
22667var nth =
22668/*#__PURE__*/
22669__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
22670/**
22671 * Returns the last element of the given list or string.
22672 *
22673 * @func
22674 * @memberOf R
22675 * @since v0.1.4
22676 * @category List
22677 * @sig [a] -> a | Undefined
22678 * @sig String -> String
22679 * @param {*} list
22680 * @return {*}
22681 * @see R.init, R.head, R.tail
22682 * @example
22683 *
22684 *      R.last(['fi', 'fo', 'fum']); //=> 'fum'
22685 *      R.last([]); //=> undefined
22686 *
22687 *      R.last('abc'); //=> 'c'
22688 *      R.last(''); //=> ''
22689 */
22690
22691
22692var last =
22693/*#__PURE__*/
22694nth(-1);
22695module.exports = last;
22696
22697/***/ }),
22698
vendor: 1,619 bytes, lines 22699-22760
22699/***/ "./node_modules/ramda/src/lastIndexOf.js":
22700/*!***********************************************!*\
22701  !*** ./node_modules/ramda/src/lastIndexOf.js ***!
22702  \***********************************************/
22703/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22704
22705var _curry2 =
22706/*#__PURE__*/
22707__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
22708
22709var _isArray =
22710/*#__PURE__*/
22711__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
22712
22713var equals =
22714/*#__PURE__*/
22715__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
22716/**
22717 * Returns the position of the last occurrence of an item in an array, or -1 if
22718 * the item is not included in the array. [`R.equals`](#equals) is used to
22719 * determine equality.
22720 *
22721 * @func
22722 * @memberOf R
22723 * @since v0.1.0
22724 * @category List
22725 * @sig a -> [a] -> Number
22726 * @param {*} target The item to find.
22727 * @param {Array} xs The array to search in.
22728 * @return {Number} the index of the target, or -1 if the target is not found.
22729 * @see R.indexOf, R.findLastIndex
22730 * @example
22731 *
22732 *      R.lastIndexOf(3, [-1,3,3,0,1,2,3,4]); //=> 6
22733 *      R.lastIndexOf(10, [1,2,3,4]); //=> -1
22734 */
22735
22736
22737var lastIndexOf =
22738/*#__PURE__*/
22739_curry2(function lastIndexOf(target, xs) {
22740  if (typeof xs.lastIndexOf === 'function' && !_isArray(xs)) {
22741    return xs.lastIndexOf(target);
22742  } else {
22743    var idx = xs.length - 1;
22744
22745    while (idx >= 0) {
22746      if (equals(xs[idx], target)) {
22747        return idx;
22748      }
22749
22750      idx -= 1;
22751    }
22752
22753    return -1;
22754  }
22755});
22756
22757module.exports = lastIndexOf;
22758
22759/***/ }),
22760
vendor: 1,024 bytes, lines 22761-22800
22761/***/ "./node_modules/ramda/src/length.js":
22762/*!******************************************!*\
22763  !*** ./node_modules/ramda/src/length.js ***!
22764  \******************************************/
22765/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22766
22767var _curry1 =
22768/*#__PURE__*/
22769__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22770
22771var _isNumber =
22772/*#__PURE__*/
22773__webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/src/internal/_isNumber.js");
22774/**
22775 * Returns the number of elements in the array by returning `list.length`.
22776 *
22777 * @func
22778 * @memberOf R
22779 * @since v0.3.0
22780 * @category List
22781 * @sig [a] -> Number
22782 * @param {Array} list The array to inspect.
22783 * @return {Number} The length of the array.
22784 * @example
22785 *
22786 *      R.length([]); //=> 0
22787 *      R.length([1, 2, 3]); //=> 3
22788 */
22789
22790
22791var length =
22792/*#__PURE__*/
22793_curry1(function length(list) {
22794  return list != null && _isNumber(list.length) ? list.length : NaN;
22795});
22796
22797module.exports = length;
22798
22799/***/ }),
22800
vendor: 1,538 bytes, lines 22801-22854
22801/***/ "./node_modules/ramda/src/lens.js":
22802/*!****************************************!*\
22803  !*** ./node_modules/ramda/src/lens.js ***!
22804  \****************************************/
22805/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22806
22807var _curry2 =
22808/*#__PURE__*/
22809__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
22810
22811var map =
22812/*#__PURE__*/
22813__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
22814/**
22815 * Returns a lens for the given getter and setter functions. The getter "gets"
22816 * the value of the focus; the setter "sets" the value of the focus. The setter
22817 * should not mutate the data structure.
22818 *
22819 * @func
22820 * @memberOf R
22821 * @since v0.8.0
22822 * @category Object
22823 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
22824 * @sig (s -> a) -> ((a, s) -> s) -> Lens s a
22825 * @param {Function} getter
22826 * @param {Function} setter
22827 * @return {Lens}
22828 * @see R.view, R.set, R.over, R.lensIndex, R.lensProp
22829 * @example
22830 *
22831 *      const xLens = R.lens(R.prop('x'), R.assoc('x'));
22832 *
22833 *      R.view(xLens, {x: 1, y: 2});            //=> 1
22834 *      R.set(xLens, 4, {x: 1, y: 2});          //=> {x: 4, y: 2}
22835 *      R.over(xLens, R.negate, {x: 1, y: 2});  //=> {x: -1, y: 2}
22836 */
22837
22838
22839var lens =
22840/*#__PURE__*/
22841_curry2(function lens(getter, setter) {
22842  return function (toFunctorFn) {
22843    return function (target) {
22844      return map(function (focus) {
22845        return setter(focus, target);
22846      }, toFunctorFn(getter(target)));
22847    };
22848  };
22849});
22850
22851module.exports = lens;
22852
22853/***/ }),
22854
vendor: 1,402 bytes, lines 22855-22907
22855/***/ "./node_modules/ramda/src/lensIndex.js":
22856/*!*********************************************!*\
22857  !*** ./node_modules/ramda/src/lensIndex.js ***!
22858  \*********************************************/
22859/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22860
22861var _curry1 =
22862/*#__PURE__*/
22863__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22864
22865var lens =
22866/*#__PURE__*/
22867__webpack_require__(/*! ./lens.js */ "./node_modules/ramda/src/lens.js");
22868
22869var nth =
22870/*#__PURE__*/
22871__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
22872
22873var update =
22874/*#__PURE__*/
22875__webpack_require__(/*! ./update.js */ "./node_modules/ramda/src/update.js");
22876/**
22877 * Returns a lens whose focus is the specified index.
22878 *
22879 * @func
22880 * @memberOf R
22881 * @since v0.14.0
22882 * @category Object
22883 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
22884 * @sig Number -> Lens s a
22885 * @param {Number} n
22886 * @return {Lens}
22887 * @see R.view, R.set, R.over, R.nth
22888 * @example
22889 *
22890 *      const headLens = R.lensIndex(0);
22891 *
22892 *      R.view(headLens, ['a', 'b', 'c']);            //=> 'a'
22893 *      R.set(headLens, 'x', ['a', 'b', 'c']);        //=> ['x', 'b', 'c']
22894 *      R.over(headLens, R.toUpper, ['a', 'b', 'c']); //=> ['A', 'b', 'c']
22895 */
22896
22897
22898var lensIndex =
22899/*#__PURE__*/
22900_curry1(function lensIndex(n) {
22901  return lens(nth(n), update(n));
22902});
22903
22904module.exports = lensIndex;
22905
22906/***/ }),
22907
vendor: 1,573 bytes, lines 22908-22964
22908/***/ "./node_modules/ramda/src/lensPath.js":
22909/*!********************************************!*\
22910  !*** ./node_modules/ramda/src/lensPath.js ***!
22911  \********************************************/
22912/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22913
22914var _curry1 =
22915/*#__PURE__*/
22916__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22917
22918var assocPath =
22919/*#__PURE__*/
22920__webpack_require__(/*! ./assocPath.js */ "./node_modules/ramda/src/assocPath.js");
22921
22922var lens =
22923/*#__PURE__*/
22924__webpack_require__(/*! ./lens.js */ "./node_modules/ramda/src/lens.js");
22925
22926var path =
22927/*#__PURE__*/
22928__webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
22929/**
22930 * Returns a lens whose focus is the specified path.
22931 *
22932 * @func
22933 * @memberOf R
22934 * @since v0.19.0
22935 * @category Object
22936 * @typedefn Idx = String | Int | Symbol
22937 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
22938 * @sig [Idx] -> Lens s a
22939 * @param {Array} path The path to use.
22940 * @return {Lens}
22941 * @see R.view, R.set, R.over
22942 * @example
22943 *
22944 *      const xHeadYLens = R.lensPath(['x', 0, 'y']);
22945 *
22946 *      R.view(xHeadYLens, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
22947 *      //=> 2
22948 *      R.set(xHeadYLens, 1, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
22949 *      //=> {x: [{y: 1, z: 3}, {y: 4, z: 5}]}
22950 *      R.over(xHeadYLens, R.negate, {x: [{y: 2, z: 3}, {y: 4, z: 5}]});
22951 *      //=> {x: [{y: -2, z: 3}, {y: 4, z: 5}]}
22952 */
22953
22954
22955var lensPath =
22956/*#__PURE__*/
22957_curry1(function lensPath(p) {
22958  return lens(path(p), assocPath(p));
22959});
22960
22961module.exports = lensPath;
22962
22963/***/ }),
22964
vendor: 1,364 bytes, lines 22965-23017
22965/***/ "./node_modules/ramda/src/lensProp.js":
22966/*!********************************************!*\
22967  !*** ./node_modules/ramda/src/lensProp.js ***!
22968  \********************************************/
22969/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
22970
22971var _curry1 =
22972/*#__PURE__*/
22973__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
22974
22975var assoc =
22976/*#__PURE__*/
22977__webpack_require__(/*! ./assoc.js */ "./node_modules/ramda/src/assoc.js");
22978
22979var lens =
22980/*#__PURE__*/
22981__webpack_require__(/*! ./lens.js */ "./node_modules/ramda/src/lens.js");
22982
22983var prop =
22984/*#__PURE__*/
22985__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
22986/**
22987 * Returns a lens whose focus is the specified property.
22988 *
22989 * @func
22990 * @memberOf R
22991 * @since v0.14.0
22992 * @category Object
22993 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
22994 * @sig String -> Lens s a
22995 * @param {String} k
22996 * @return {Lens}
22997 * @see R.view, R.set, R.over
22998 * @example
22999 *
23000 *      const xLens = R.lensProp('x');
23001 *
23002 *      R.view(xLens, {x: 1, y: 2});            //=> 1
23003 *      R.set(xLens, 4, {x: 1, y: 2});          //=> {x: 4, y: 2}
23004 *      R.over(xLens, R.negate, {x: 1, y: 2});  //=> {x: -1, y: 2}
23005 */
23006
23007
23008var lensProp =
23009/*#__PURE__*/
23010_curry1(function lensProp(k) {
23011  return lens(prop(k), assoc(k));
23012});
23013
23014module.exports = lensProp;
23015
23016/***/ }),
23017
vendor: 1,395 bytes, lines 23018-23064
23018/***/ "./node_modules/ramda/src/lift.js":
23019/*!****************************************!*\
23020  !*** ./node_modules/ramda/src/lift.js ***!
23021  \****************************************/
23022/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23023
23024var _curry1 =
23025/*#__PURE__*/
23026__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
23027
23028var liftN =
23029/*#__PURE__*/
23030__webpack_require__(/*! ./liftN.js */ "./node_modules/ramda/src/liftN.js");
23031/**
23032 * "lifts" a function of arity >= 1 so that it may "map over" a list, Function or other
23033 * object that satisfies the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).
23034 *
23035 * @func
23036 * @memberOf R
23037 * @since v0.7.0
23038 * @category Function
23039 * @sig (*... -> *) -> ([*]... -> [*])
23040 * @param {Function} fn The function to lift into higher context
23041 * @return {Function} The lifted function.
23042 * @see R.liftN
23043 * @example
23044 *
23045 *      const madd3 = R.lift((a, b, c) => a + b + c);
23046 *
23047 *      madd3([100, 200], [30, 40], [5, 6, 7]); //=> [135, 136, 137, 145, 146, 147, 235, 236, 237, 245, 246, 247]
23048 *
23049 *      const madd5 = R.lift((a, b, c, d, e) => a + b + c + d + e);
23050 *
23051 *      madd5([10, 20], [1], [2, 3], [4], [100, 200]); //=> [117, 217, 118, 218, 127, 227, 128, 228]
23052 */
23053
23054
23055var lift =
23056/*#__PURE__*/
23057_curry1(function lift(fn) {
23058  return liftN(fn.length, fn);
23059});
23060
23061module.exports = lift;
23062
23063/***/ }),
23064
vendor: 1,691 bytes, lines 23065-23121
23065/***/ "./node_modules/ramda/src/liftN.js":
23066/*!*****************************************!*\
23067  !*** ./node_modules/ramda/src/liftN.js ***!
23068  \*****************************************/
23069/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23070
23071var _curry2 =
23072/*#__PURE__*/
23073__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23074
23075var _reduce =
23076/*#__PURE__*/
23077__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
23078
23079var ap =
23080/*#__PURE__*/
23081__webpack_require__(/*! ./ap.js */ "./node_modules/ramda/src/ap.js");
23082
23083var curryN =
23084/*#__PURE__*/
23085__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
23086
23087var map =
23088/*#__PURE__*/
23089__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
23090/**
23091 * "lifts" a function to be the specified arity, so that it may "map over" that
23092 * many lists, Functions or other objects that satisfy the [FantasyLand Apply spec](https://github.com/fantasyland/fantasy-land#apply).
23093 *
23094 * @func
23095 * @memberOf R
23096 * @since v0.7.0
23097 * @category Function
23098 * @sig Number -> (*... -> *) -> ([*]... -> [*])
23099 * @param {Function} fn The function to lift into higher context
23100 * @return {Function} The lifted function.
23101 * @see R.lift, R.ap
23102 * @example
23103 *
23104 *      const madd3 = R.liftN(3, (...args) => R.sum(args));
23105 *      madd3([1,2,3], [1,2,3], [1]); //=> [3, 4, 5, 4, 5, 6, 5, 6, 7]
23106 */
23107
23108
23109var liftN =
23110/*#__PURE__*/
23111_curry2(function liftN(arity, fn) {
23112  var lifted = curryN(arity, fn);
23113  return curryN(arity, function () {
23114    return _reduce(ap, map(lifted, arguments[0]), Array.prototype.slice.call(arguments, 1));
23115  });
23116});
23117
23118module.exports = liftN;
23119
23120/***/ }),
23121
vendor: 911 bytes, lines 23122-23163
23122/***/ "./node_modules/ramda/src/lt.js":
23123/*!**************************************!*\
23124  !*** ./node_modules/ramda/src/lt.js ***!
23125  \**************************************/
23126/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23127
23128var _curry2 =
23129/*#__PURE__*/
23130__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23131/**
23132 * Returns `true` if the first argument is less than the second; `false`
23133 * otherwise.
23134 *
23135 * @func
23136 * @memberOf R
23137 * @since v0.1.0
23138 * @category Relation
23139 * @sig Ord a => a -> a -> Boolean
23140 * @param {*} a
23141 * @param {*} b
23142 * @return {Boolean}
23143 * @see R.gt
23144 * @example
23145 *
23146 *      R.lt(2, 1); //=> false
23147 *      R.lt(2, 2); //=> false
23148 *      R.lt(2, 3); //=> true
23149 *      R.lt('a', 'z'); //=> true
23150 *      R.lt('z', 'a'); //=> false
23151 */
23152
23153
23154var lt =
23155/*#__PURE__*/
23156_curry2(function lt(a, b) {
23157  return a < b;
23158});
23159
23160module.exports = lt;
23161
23162/***/ }),
23163
vendor: 946 bytes, lines 23164-23205
23164/***/ "./node_modules/ramda/src/lte.js":
23165/*!***************************************!*\
23166  !*** ./node_modules/ramda/src/lte.js ***!
23167  \***************************************/
23168/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23169
23170var _curry2 =
23171/*#__PURE__*/
23172__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23173/**
23174 * Returns `true` if the first argument is less than or equal to the second;
23175 * `false` otherwise.
23176 *
23177 * @func
23178 * @memberOf R
23179 * @since v0.1.0
23180 * @category Relation
23181 * @sig Ord a => a -> a -> Boolean
23182 * @param {Number} a
23183 * @param {Number} b
23184 * @return {Boolean}
23185 * @see R.gte
23186 * @example
23187 *
23188 *      R.lte(2, 1); //=> false
23189 *      R.lte(2, 2); //=> true
23190 *      R.lte(2, 3); //=> true
23191 *      R.lte('a', 'z'); //=> true
23192 *      R.lte('z', 'a'); //=> false
23193 */
23194
23195
23196var lte =
23197/*#__PURE__*/
23198_curry2(function lte(a, b) {
23199  return a <= b;
23200});
23201
23202module.exports = lte;
23203
23204/***/ }),
23205
vendor: 2,888 bytes, lines 23206-23301
23206/***/ "./node_modules/ramda/src/map.js":
23207/*!***************************************!*\
23208  !*** ./node_modules/ramda/src/map.js ***!
23209  \***************************************/
23210/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23211
23212var _curry2 =
23213/*#__PURE__*/
23214__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23215
23216var _dispatchable =
23217/*#__PURE__*/
23218__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
23219
23220var _map =
23221/*#__PURE__*/
23222__webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/src/internal/_map.js");
23223
23224var _reduce =
23225/*#__PURE__*/
23226__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
23227
23228var _xmap =
23229/*#__PURE__*/
23230__webpack_require__(/*! ./internal/_xmap.js */ "./node_modules/ramda/src/internal/_xmap.js");
23231
23232var curryN =
23233/*#__PURE__*/
23234__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
23235
23236var keys =
23237/*#__PURE__*/
23238__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
23239/**
23240 * Takes a function and
23241 * a [functor](https://github.com/fantasyland/fantasy-land#functor),
23242 * applies the function to each of the functor's values, and returns
23243 * a functor of the same shape.
23244 *
23245 * Ramda provides suitable `map` implementations for `Array` and `Object`,
23246 * so this function may be applied to `[1, 2, 3]` or `{x: 1, y: 2, z: 3}`.
23247 *
23248 * Dispatches to the `map` method of the second argument, if present.
23249 *
23250 * Acts as a transducer if a transformer is given in list position.
23251 *
23252 * Also treats functions as functors and will compose them together.
23253 *
23254 * @func
23255 * @memberOf R
23256 * @since v0.1.0
23257 * @category List
23258 * @sig Functor f => (a -> b) -> f a -> f b
23259 * @param {Function} fn The function to be called on every element of the input `list`.
23260 * @param {Array} list The list to be iterated over.
23261 * @return {Array} The new list.
23262 * @see R.transduce, R.addIndex, R.pluck, R.project
23263 * @example
23264 *
23265 *      const double = x => x * 2;
23266 *
23267 *      R.map(double, [1, 2, 3]); //=> [2, 4, 6]
23268 *
23269 *      R.map(double, {x: 1, y: 2, z: 3}); //=> {x: 2, y: 4, z: 6}
23270 * @symb R.map(f, [a, b]) = [f(a), f(b)]
23271 * @symb R.map(f, { x: a, y: b }) = { x: f(a), y: f(b) }
23272 * @symb R.map(f, functor_o) = functor_o.map(f)
23273 */
23274
23275
23276var map =
23277/*#__PURE__*/
23278_curry2(
23279/*#__PURE__*/
23280_dispatchable(['fantasy-land/map', 'map'], _xmap, function map(fn, functor) {
23281  switch (Object.prototype.toString.call(functor)) {
23282    case '[object Function]':
23283      return curryN(functor.length, function () {
23284        return fn.call(this, functor.apply(this, arguments));
23285      });
23286
23287    case '[object Object]':
23288      return _reduce(function (acc, key) {
23289        acc[key] = fn(functor[key]);
23290        return acc;
23291      }, {}, keys(functor));
23292
23293    default:
23294      return _map(fn, functor);
23295  }
23296}));
23297
23298module.exports = map;
23299
23300/***/ }),
23301
vendor: 1,878 bytes, lines 23302-23367
23302/***/ "./node_modules/ramda/src/mapAccum.js":
23303/*!********************************************!*\
23304  !*** ./node_modules/ramda/src/mapAccum.js ***!
23305  \********************************************/
23306/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23307
23308var _curry3 =
23309/*#__PURE__*/
23310__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
23311/**
23312 * The `mapAccum` function behaves like a combination of map and reduce; it
23313 * applies a function to each element of a list, passing an accumulating
23314 * parameter from left to right, and returning a final value of this
23315 * accumulator together with the new list.
23316 *
23317 * The iterator function receives two arguments, *acc* and *value*, and should
23318 * return a tuple *[acc, value]*.
23319 *
23320 * @func
23321 * @memberOf R
23322 * @since v0.10.0
23323 * @category List
23324 * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])
23325 * @param {Function} fn The function to be called on every element of the input `list`.
23326 * @param {*} acc The accumulator value.
23327 * @param {Array} list The list to iterate over.
23328 * @return {*} The final, accumulated value.
23329 * @see R.scan, R.addIndex, R.mapAccumRight
23330 * @example
23331 *
23332 *      const digits = ['1', '2', '3', '4'];
23333 *      const appender = (a, b) => [a + b, a + b];
23334 *
23335 *      R.mapAccum(appender, 0, digits); //=> ['01234', ['01', '012', '0123', '01234']]
23336 * @symb R.mapAccum(f, a, [b, c, d]) = [
23337 *   f(f(f(a, b)[0], c)[0], d)[0],
23338 *   [
23339 *     f(a, b)[1],
23340 *     f(f(a, b)[0], c)[1],
23341 *     f(f(f(a, b)[0], c)[0], d)[1]
23342 *   ]
23343 * ]
23344 */
23345
23346
23347var mapAccum =
23348/*#__PURE__*/
23349_curry3(function mapAccum(fn, acc, list) {
23350  var idx = 0;
23351  var len = list.length;
23352  var result = [];
23353  var tuple = [acc];
23354
23355  while (idx < len) {
23356    tuple = fn(tuple[0], list[idx]);
23357    result[idx] = tuple[1];
23358    idx += 1;
23359  }
23360
23361  return [tuple[0], result];
23362});
23363
23364module.exports = mapAccum;
23365
23366/***/ }),
23367
vendor: 2,012 bytes, lines 23368-23435
23368/***/ "./node_modules/ramda/src/mapAccumRight.js":
23369/*!*************************************************!*\
23370  !*** ./node_modules/ramda/src/mapAccumRight.js ***!
23371  \*************************************************/
23372/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23373
23374var _curry3 =
23375/*#__PURE__*/
23376__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
23377/**
23378 * The `mapAccumRight` function behaves like a combination of map and reduce; it
23379 * applies a function to each element of a list, passing an accumulating
23380 * parameter from right to left, and returning a final value of this
23381 * accumulator together with the new list.
23382 *
23383 * Similar to [`mapAccum`](#mapAccum), except moves through the input list from
23384 * the right to the left.
23385 *
23386 * The iterator function receives two arguments, *acc* and *value*, and should
23387 * return a tuple *[acc, value]*.
23388 *
23389 * @func
23390 * @memberOf R
23391 * @since v0.10.0
23392 * @category List
23393 * @sig ((acc, x) -> (acc, y)) -> acc -> [x] -> (acc, [y])
23394 * @param {Function} fn The function to be called on every element of the input `list`.
23395 * @param {*} acc The accumulator value.
23396 * @param {Array} list The list to iterate over.
23397 * @return {*} The final, accumulated value.
23398 * @see R.addIndex, R.mapAccum
23399 * @example
23400 *
23401 *      const digits = ['1', '2', '3', '4'];
23402 *      const appender = (a, b) => [b + a, b + a];
23403 *
23404 *      R.mapAccumRight(appender, 5, digits); //=> ['12345', ['12345', '2345', '345', '45']]
23405 * @symb R.mapAccumRight(f, a, [b, c, d]) = [
23406 *   f(f(f(a, d)[0], c)[0], b)[0],
23407 *   [
23408 *     f(a, d)[1],
23409 *     f(f(a, d)[0], c)[1],
23410 *     f(f(f(a, d)[0], c)[0], b)[1]
23411 *   ]
23412 * ]
23413 */
23414
23415
23416var mapAccumRight =
23417/*#__PURE__*/
23418_curry3(function mapAccumRight(fn, acc, list) {
23419  var idx = list.length - 1;
23420  var result = [];
23421  var tuple = [acc];
23422
23423  while (idx >= 0) {
23424    tuple = fn(tuple[0], list[idx]);
23425    result[idx] = tuple[1];
23426    idx -= 1;
23427  }
23428
23429  return [tuple[0], result];
23430});
23431
23432module.exports = mapAccumRight;
23433
23434/***/ }),
23435
vendor: 1,485 bytes, lines 23436-23488
23436/***/ "./node_modules/ramda/src/mapObjIndexed.js":
23437/*!*************************************************!*\
23438  !*** ./node_modules/ramda/src/mapObjIndexed.js ***!
23439  \*************************************************/
23440/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23441
23442var _curry2 =
23443/*#__PURE__*/
23444__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23445
23446var _reduce =
23447/*#__PURE__*/
23448__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
23449
23450var keys =
23451/*#__PURE__*/
23452__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
23453/**
23454 * An Object-specific version of [`map`](#map). The function is applied to three
23455 * arguments: *(value, key, obj)*. If only the value is significant, use
23456 * [`map`](#map) instead.
23457 *
23458 * @func
23459 * @memberOf R
23460 * @since v0.9.0
23461 * @category Object
23462 * @sig ((*, String, Object) -> *) -> Object -> Object
23463 * @param {Function} fn
23464 * @param {Object} obj
23465 * @return {Object}
23466 * @see R.map
23467 * @example
23468 *
23469 *      const xyz = { x: 1, y: 2, z: 3 };
23470 *      const prependKeyAndDouble = (num, key, obj) => key + (num * 2);
23471 *
23472 *      R.mapObjIndexed(prependKeyAndDouble, xyz); //=> { x: 'x2', y: 'y4', z: 'z6' }
23473 */
23474
23475
23476var mapObjIndexed =
23477/*#__PURE__*/
23478_curry2(function mapObjIndexed(fn, obj) {
23479  return _reduce(function (acc, key) {
23480    acc[key] = fn(obj[key], key, obj);
23481    return acc;
23482  }, {}, keys(obj));
23483});
23484
23485module.exports = mapObjIndexed;
23486
23487/***/ }),
23488
vendor: 1,321 bytes, lines 23489-23530
23489/***/ "./node_modules/ramda/src/match.js":
23490/*!*****************************************!*\
23491  !*** ./node_modules/ramda/src/match.js ***!
23492  \*****************************************/
23493/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23494
23495var _curry2 =
23496/*#__PURE__*/
23497__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23498/**
23499 * Tests a regular expression against a String. Note that this function will
23500 * return an empty array when there are no matches. This differs from
23501 * [`String.prototype.match`](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/match)
23502 * which returns `null` when there are no matches.
23503 *
23504 * @func
23505 * @memberOf R
23506 * @since v0.1.0
23507 * @category String
23508 * @sig RegExp -> String -> [String | Undefined]
23509 * @param {RegExp} rx A regular expression.
23510 * @param {String} str The string to match against
23511 * @return {Array} The list of matches or empty array.
23512 * @see R.test
23513 * @example
23514 *
23515 *      R.match(/([a-z]a)/g, 'bananas'); //=> ['ba', 'na', 'na']
23516 *      R.match(/a/, 'b'); //=> []
23517 *      R.match(/a/, null); //=> TypeError: null does not have a method named "match"
23518 */
23519
23520
23521var match =
23522/*#__PURE__*/
23523_curry2(function match(rx, str) {
23524  return str.match(rx) || [];
23525});
23526
23527module.exports = match;
23528
23529/***/ }),
23530
vendor: 1,757 bytes, lines 23531-23596
23531/***/ "./node_modules/ramda/src/mathMod.js":
23532/*!*******************************************!*\
23533  !*** ./node_modules/ramda/src/mathMod.js ***!
23534  \*******************************************/
23535/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23536
23537var _curry2 =
23538/*#__PURE__*/
23539__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23540
23541var _isInteger =
23542/*#__PURE__*/
23543__webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
23544/**
23545 * `mathMod` behaves like the modulo operator should mathematically, unlike the
23546 * `%` operator (and by extension, [`R.modulo`](#modulo)). So while
23547 * `-17 % 5` is `-2`, `mathMod(-17, 5)` is `3`. `mathMod` requires Integer
23548 * arguments, and returns NaN when the modulus is zero or negative.
23549 *
23550 * @func
23551 * @memberOf R
23552 * @since v0.3.0
23553 * @category Math
23554 * @sig Number -> Number -> Number
23555 * @param {Number} m The dividend.
23556 * @param {Number} p the modulus.
23557 * @return {Number} The result of `b mod a`.
23558 * @see R.modulo
23559 * @example
23560 *
23561 *      R.mathMod(-17, 5);  //=> 3
23562 *      R.mathMod(17, 5);   //=> 2
23563 *      R.mathMod(17, -5);  //=> NaN
23564 *      R.mathMod(17, 0);   //=> NaN
23565 *      R.mathMod(17.2, 5); //=> NaN
23566 *      R.mathMod(17, 5.3); //=> NaN
23567 *
23568 *      const clock = R.mathMod(R.__, 12);
23569 *      clock(15); //=> 3
23570 *      clock(24); //=> 0
23571 *
23572 *      const seventeenMod = R.mathMod(17);
23573 *      seventeenMod(3);  //=> 2
23574 *      seventeenMod(4);  //=> 1
23575 *      seventeenMod(10); //=> 7
23576 */
23577
23578
23579var mathMod =
23580/*#__PURE__*/
23581_curry2(function mathMod(m, p) {
23582  if (!_isInteger(m)) {
23583    return NaN;
23584  }
23585
23586  if (!_isInteger(p) || p < 1) {
23587    return NaN;
23588  }
23589
23590  return (m % p + p) % p;
23591});
23592
23593module.exports = mathMod;
23594
23595/***/ }),
23596
vendor: 788 bytes, lines 23597-23634
23597/***/ "./node_modules/ramda/src/max.js":
23598/*!***************************************!*\
23599  !*** ./node_modules/ramda/src/max.js ***!
23600  \***************************************/
23601/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23602
23603var _curry2 =
23604/*#__PURE__*/
23605__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23606/**
23607 * Returns the larger of its two arguments.
23608 *
23609 * @func
23610 * @memberOf R
23611 * @since v0.1.0
23612 * @category Relation
23613 * @sig Ord a => a -> a -> a
23614 * @param {*} a
23615 * @param {*} b
23616 * @return {*}
23617 * @see R.maxBy, R.min
23618 * @example
23619 *
23620 *      R.max(789, 123); //=> 789
23621 *      R.max('a', 'b'); //=> 'b'
23622 */
23623
23624
23625var max =
23626/*#__PURE__*/
23627_curry2(function max(a, b) {
23628  return b > a ? b : a;
23629});
23630
23631module.exports = max;
23632
23633/***/ }),
23634
vendor: 1,100 bytes, lines 23635-23679
23635/***/ "./node_modules/ramda/src/maxBy.js":
23636/*!*****************************************!*\
23637  !*** ./node_modules/ramda/src/maxBy.js ***!
23638  \*****************************************/
23639/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23640
23641var _curry3 =
23642/*#__PURE__*/
23643__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
23644/**
23645 * Takes a function and two values, and returns whichever value produces the
23646 * larger result when passed to the provided function.
23647 *
23648 * @func
23649 * @memberOf R
23650 * @since v0.8.0
23651 * @category Relation
23652 * @sig Ord b => (a -> b) -> a -> a -> a
23653 * @param {Function} f
23654 * @param {*} a
23655 * @param {*} b
23656 * @return {*}
23657 * @see R.max, R.minBy
23658 * @example
23659 *
23660 *      //  square :: Number -> Number
23661 *      const square = n => n * n;
23662 *
23663 *      R.maxBy(square, -3, 2); //=> -3
23664 *
23665 *      R.reduce(R.maxBy(square), 0, [3, -5, 4, 1, -2]); //=> -5
23666 *      R.reduce(R.maxBy(square), 0, []); //=> 0
23667 */
23668
23669
23670var maxBy =
23671/*#__PURE__*/
23672_curry3(function maxBy(f, a, b) {
23673  return f(b) > f(a) ? b : a;
23674});
23675
23676module.exports = maxBy;
23677
23678/***/ }),
23679
vendor: 888 bytes, lines 23680-23720
23680/***/ "./node_modules/ramda/src/mean.js":
23681/*!****************************************!*\
23682  !*** ./node_modules/ramda/src/mean.js ***!
23683  \****************************************/
23684/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23685
23686var _curry1 =
23687/*#__PURE__*/
23688__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
23689
23690var sum =
23691/*#__PURE__*/
23692__webpack_require__(/*! ./sum.js */ "./node_modules/ramda/src/sum.js");
23693/**
23694 * Returns the mean of the given list of numbers.
23695 *
23696 * @func
23697 * @memberOf R
23698 * @since v0.14.0
23699 * @category Math
23700 * @sig [Number] -> Number
23701 * @param {Array} list
23702 * @return {Number}
23703 * @see R.median
23704 * @example
23705 *
23706 *      R.mean([2, 7, 9]); //=> 6
23707 *      R.mean([]); //=> NaN
23708 */
23709
23710
23711var mean =
23712/*#__PURE__*/
23713_curry1(function mean(list) {
23714  return sum(list) / list.length;
23715});
23716
23717module.exports = mean;
23718
23719/***/ }),
23720
vendor: 1,182 bytes, lines 23721-23772
23721/***/ "./node_modules/ramda/src/median.js":
23722/*!******************************************!*\
23723  !*** ./node_modules/ramda/src/median.js ***!
23724  \******************************************/
23725/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23726
23727var _curry1 =
23728/*#__PURE__*/
23729__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
23730
23731var mean =
23732/*#__PURE__*/
23733__webpack_require__(/*! ./mean.js */ "./node_modules/ramda/src/mean.js");
23734/**
23735 * Returns the median of the given list of numbers.
23736 *
23737 * @func
23738 * @memberOf R
23739 * @since v0.14.0
23740 * @category Math
23741 * @sig [Number] -> Number
23742 * @param {Array} list
23743 * @return {Number}
23744 * @see R.mean
23745 * @example
23746 *
23747 *      R.median([2, 9, 7]); //=> 7
23748 *      R.median([7, 2, 10, 9]); //=> 8
23749 *      R.median([]); //=> NaN
23750 */
23751
23752
23753var median =
23754/*#__PURE__*/
23755_curry1(function median(list) {
23756  var len = list.length;
23757
23758  if (len === 0) {
23759    return NaN;
23760  }
23761
23762  var width = 2 - len % 2;
23763  var idx = (len - width) / 2;
23764  return mean(Array.prototype.slice.call(list, 0).sort(function (a, b) {
23765    return a < b ? -1 : a > b ? 1 : 0;
23766  }).slice(idx, idx + width));
23767});
23768
23769module.exports = median;
23770
23771/***/ }),
23772
vendor: 2,031 bytes, lines 23773-23840
23773/***/ "./node_modules/ramda/src/memoizeWith.js":
23774/*!***********************************************!*\
23775  !*** ./node_modules/ramda/src/memoizeWith.js ***!
23776  \***********************************************/
23777/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23778
23779var _arity =
23780/*#__PURE__*/
23781__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
23782
23783var _curry2 =
23784/*#__PURE__*/
23785__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23786
23787var _has =
23788/*#__PURE__*/
23789__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
23790/**
23791 * Creates a new function that, when invoked, caches the result of calling `fn`
23792 * for a given argument set and returns the result. Subsequent calls to the
23793 * memoized `fn` with the same argument set will not result in an additional
23794 * call to `fn`; instead, the cached result for that set of arguments will be
23795 * returned.
23796 *
23797 * Care must be taken when implementing key generation to avoid key collision,
23798 * or if tracking references, memory leaks and mutating arguments.
23799 *
23800 * @func
23801 * @memberOf R
23802 * @since v0.24.0
23803 * @category Function
23804 * @sig (*... -> String) -> (*... -> a) -> (*... -> a)
23805 * @param {Function} fn The function to generate the cache key.
23806 * @param {Function} fn The function to memoize.
23807 * @return {Function} Memoized version of `fn`.
23808 * @example
23809 *
23810 *      let count = 0;
23811 *      const factorial = R.memoizeWith(Number, n => {
23812 *        count += 1;
23813 *        return R.product(R.range(1, n + 1));
23814 *      });
23815 *      factorial(5); //=> 120
23816 *      factorial(5); //=> 120
23817 *      factorial(5); //=> 120
23818 *      count; //=> 1
23819 */
23820
23821
23822var memoizeWith =
23823/*#__PURE__*/
23824_curry2(function memoizeWith(mFn, fn) {
23825  var cache = {};
23826  return _arity(fn.length, function () {
23827    var key = mFn.apply(this, arguments);
23828
23829    if (!_has(key, cache)) {
23830      cache[key] = fn.apply(this, arguments);
23831    }
23832
23833    return cache[key];
23834  });
23835});
23836
23837module.exports = memoizeWith;
23838
23839/***/ }),
23840
vendor: 1,301 bytes, lines 23841-23884
23841/***/ "./node_modules/ramda/src/mergeAll.js":
23842/*!********************************************!*\
23843  !*** ./node_modules/ramda/src/mergeAll.js ***!
23844  \********************************************/
23845/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23846
23847var _objectAssign =
23848/*#__PURE__*/
23849__webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/src/internal/_objectAssign.js");
23850
23851var _curry1 =
23852/*#__PURE__*/
23853__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
23854/**
23855 * Creates one new object with the own properties from a list of objects.
23856 * If a key exists in more than one object, the value from the last
23857 * object it exists in will be used.
23858 *
23859 * @func
23860 * @memberOf R
23861 * @since v0.10.0
23862 * @category List
23863 * @sig [{k: v}] -> {k: v}
23864 * @param {Array} list An array of objects
23865 * @return {Object} A merged object.
23866 * @see R.reduce
23867 * @example
23868 *
23869 *      R.mergeAll([{foo:1},{bar:2},{baz:3}]); //=> {foo:1,bar:2,baz:3}
23870 *      R.mergeAll([{foo:1},{foo:2},{bar:2}]); //=> {foo:2,bar:2}
23871 * @symb R.mergeAll([{ x: 1 }, { y: 2 }, { z: 3 }]) = { x: 1, y: 2, z: 3 }
23872 */
23873
23874
23875var mergeAll =
23876/*#__PURE__*/
23877_curry1(function mergeAll(list) {
23878  return _objectAssign.apply(null, [{}].concat(list));
23879});
23880
23881module.exports = mergeAll;
23882
23883/***/ }),
23884
vendor: 1,553 bytes, lines 23885-23932
23885/***/ "./node_modules/ramda/src/mergeDeepLeft.js":
23886/*!*************************************************!*\
23887  !*** ./node_modules/ramda/src/mergeDeepLeft.js ***!
23888  \*************************************************/
23889/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23890
23891var _curry2 =
23892/*#__PURE__*/
23893__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23894
23895var mergeDeepWithKey =
23896/*#__PURE__*/
23897__webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/src/mergeDeepWithKey.js");
23898/**
23899 * Creates a new object with the own properties of the first object merged with
23900 * the own properties of the second object. If a key exists in both objects:
23901 * - and both values are objects, the two values will be recursively merged
23902 * - otherwise the value from the first object will be used.
23903 *
23904 * @func
23905 * @memberOf R
23906 * @since v0.24.0
23907 * @category Object
23908 * @sig {a} -> {a} -> {a}
23909 * @param {Object} lObj
23910 * @param {Object} rObj
23911 * @return {Object}
23912 * @see R.merge, R.mergeDeepRight, R.mergeDeepWith, R.mergeDeepWithKey
23913 * @example
23914 *
23915 *      R.mergeDeepLeft({ name: 'fred', age: 10, contact: { email: '[email protected]' }},
23916 *                      { age: 40, contact: { email: '[email protected]' }});
23917 *      //=> { name: 'fred', age: 10, contact: { email: '[email protected]' }}
23918 */
23919
23920
23921var mergeDeepLeft =
23922/*#__PURE__*/
23923_curry2(function mergeDeepLeft(lObj, rObj) {
23924  return mergeDeepWithKey(function (k, lVal, rVal) {
23925    return lVal;
23926  }, lObj, rObj);
23927});
23928
23929module.exports = mergeDeepLeft;
23930
23931/***/ }),
23932
vendor: 1,562 bytes, lines 23933-23980
23933/***/ "./node_modules/ramda/src/mergeDeepRight.js":
23934/*!**************************************************!*\
23935  !*** ./node_modules/ramda/src/mergeDeepRight.js ***!
23936  \**************************************************/
23937/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23938
23939var _curry2 =
23940/*#__PURE__*/
23941__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
23942
23943var mergeDeepWithKey =
23944/*#__PURE__*/
23945__webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/src/mergeDeepWithKey.js");
23946/**
23947 * Creates a new object with the own properties of the first object merged with
23948 * the own properties of the second object. If a key exists in both objects:
23949 * - and both values are objects, the two values will be recursively merged
23950 * - otherwise the value from the second object will be used.
23951 *
23952 * @func
23953 * @memberOf R
23954 * @since v0.24.0
23955 * @category Object
23956 * @sig {a} -> {a} -> {a}
23957 * @param {Object} lObj
23958 * @param {Object} rObj
23959 * @return {Object}
23960 * @see R.merge, R.mergeDeepLeft, R.mergeDeepWith, R.mergeDeepWithKey
23961 * @example
23962 *
23963 *      R.mergeDeepRight({ name: 'fred', age: 10, contact: { email: '[email protected]' }},
23964 *                       { age: 40, contact: { email: '[email protected]' }});
23965 *      //=> { name: 'fred', age: 40, contact: { email: '[email protected]' }}
23966 */
23967
23968
23969var mergeDeepRight =
23970/*#__PURE__*/
23971_curry2(function mergeDeepRight(lObj, rObj) {
23972  return mergeDeepWithKey(function (k, lVal, rVal) {
23973    return rVal;
23974  }, lObj, rObj);
23975});
23976
23977module.exports = mergeDeepRight;
23978
23979/***/ }),
23980
vendor: 1,726 bytes, lines 23981-24034
23981/***/ "./node_modules/ramda/src/mergeDeepWith.js":
23982/*!*************************************************!*\
23983  !*** ./node_modules/ramda/src/mergeDeepWith.js ***!
23984  \*************************************************/
23985/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
23986
23987var _curry3 =
23988/*#__PURE__*/
23989__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
23990
23991var mergeDeepWithKey =
23992/*#__PURE__*/
23993__webpack_require__(/*! ./mergeDeepWithKey.js */ "./node_modules/ramda/src/mergeDeepWithKey.js");
23994/**
23995 * Creates a new object with the own properties of the two provided objects.
23996 * If a key exists in both objects:
23997 * - and both associated values are also objects then the values will be
23998 *   recursively merged.
23999 * - otherwise the provided function is applied to associated values using the
24000 *   resulting value as the new value associated with the key.
24001 * If a key only exists in one object, the value will be associated with the key
24002 * of the resulting object.
24003 *
24004 * @func
24005 * @memberOf R
24006 * @since v0.24.0
24007 * @category Object
24008 * @sig ((a, a) -> a) -> {a} -> {a} -> {a}
24009 * @param {Function} fn
24010 * @param {Object} lObj
24011 * @param {Object} rObj
24012 * @return {Object}
24013 * @see R.mergeWith, R.mergeDeepWithKey
24014 * @example
24015 *
24016 *      R.mergeDeepWith(R.concat,
24017 *                      { a: true, c: { values: [10, 20] }},
24018 *                      { b: true, c: { values: [15, 35] }});
24019 *      //=> { a: true, b: true, c: { values: [10, 20, 15, 35] }}
24020 */
24021
24022
24023var mergeDeepWith =
24024/*#__PURE__*/
24025_curry3(function mergeDeepWith(fn, lObj, rObj) {
24026  return mergeDeepWithKey(function (k, lVal, rVal) {
24027    return fn(lVal, rVal);
24028  }, lObj, rObj);
24029});
24030
24031module.exports = mergeDeepWith;
24032
24033/***/ }),
24034
vendor: 2,131 bytes, lines 24035-24097
24035/***/ "./node_modules/ramda/src/mergeDeepWithKey.js":
24036/*!****************************************************!*\
24037  !*** ./node_modules/ramda/src/mergeDeepWithKey.js ***!
24038  \****************************************************/
24039/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24040
24041var _curry3 =
24042/*#__PURE__*/
24043__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24044
24045var _isObject =
24046/*#__PURE__*/
24047__webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/src/internal/_isObject.js");
24048
24049var mergeWithKey =
24050/*#__PURE__*/
24051__webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/src/mergeWithKey.js");
24052/**
24053 * Creates a new object with the own properties of the two provided objects.
24054 * If a key exists in both objects:
24055 * - and both associated values are also objects then the values will be
24056 *   recursively merged.
24057 * - otherwise the provided function is applied to the key and associated values
24058 *   using the resulting value as the new value associated with the key.
24059 * If a key only exists in one object, the value will be associated with the key
24060 * of the resulting object.
24061 *
24062 * @func
24063 * @memberOf R
24064 * @since v0.24.0
24065 * @category Object
24066 * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}
24067 * @param {Function} fn
24068 * @param {Object} lObj
24069 * @param {Object} rObj
24070 * @return {Object}
24071 * @see R.mergeWithKey, R.mergeDeepWith
24072 * @example
24073 *
24074 *      let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r
24075 *      R.mergeDeepWithKey(concatValues,
24076 *                         { a: true, c: { thing: 'foo', values: [10, 20] }},
24077 *                         { b: true, c: { thing: 'bar', values: [15, 35] }});
24078 *      //=> { a: true, b: true, c: { thing: 'bar', values: [10, 20, 15, 35] }}
24079 */
24080
24081
24082var mergeDeepWithKey =
24083/*#__PURE__*/
24084_curry3(function mergeDeepWithKey(fn, lObj, rObj) {
24085  return mergeWithKey(function (k, lVal, rVal) {
24086    if (_isObject(lVal) && _isObject(rVal)) {
24087      return mergeDeepWithKey(fn, lVal, rVal);
24088    } else {
24089      return fn(k, lVal, rVal);
24090    }
24091  }, lObj, rObj);
24092});
24093
24094module.exports = mergeDeepWithKey;
24095
24096/***/ }),
24097
vendor: 1,405 bytes, lines 24098-24145
24098/***/ "./node_modules/ramda/src/mergeLeft.js":
24099/*!*********************************************!*\
24100  !*** ./node_modules/ramda/src/mergeLeft.js ***!
24101  \*********************************************/
24102/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24103
24104var _objectAssign =
24105/*#__PURE__*/
24106__webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/src/internal/_objectAssign.js");
24107
24108var _curry2 =
24109/*#__PURE__*/
24110__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24111/**
24112 * Create a new object with the own properties of the first object merged with
24113 * the own properties of the second object. If a key exists in both objects,
24114 * the value from the first object will be used.
24115 *
24116 * @func
24117 * @memberOf R
24118 * @since v0.26.0
24119 * @category Object
24120 * @sig {k: v} -> {k: v} -> {k: v}
24121 * @param {Object} l
24122 * @param {Object} r
24123 * @return {Object}
24124 * @see R.mergeRight, R.mergeDeepLeft, R.mergeWith, R.mergeWithKey
24125 * @example
24126 *
24127 *      R.mergeLeft({ 'age': 40 }, { 'name': 'fred', 'age': 10 });
24128 *      //=> { 'name': 'fred', 'age': 40 }
24129 *
24130 *      const resetToDefault = R.mergeLeft({x: 0});
24131 *      resetToDefault({x: 5, y: 2}); //=> {x: 0, y: 2}
24132 * @symb R.mergeLeft(a, b) = {...b, ...a}
24133 */
24134
24135
24136var mergeLeft =
24137/*#__PURE__*/
24138_curry2(function mergeLeft(l, r) {
24139  return _objectAssign({}, r, l);
24140});
24141
24142module.exports = mergeLeft;
24143
24144/***/ }),
24145
vendor: 1,412 bytes, lines 24146-24193
24146/***/ "./node_modules/ramda/src/mergeRight.js":
24147/*!**********************************************!*\
24148  !*** ./node_modules/ramda/src/mergeRight.js ***!
24149  \**********************************************/
24150/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24151
24152var _objectAssign =
24153/*#__PURE__*/
24154__webpack_require__(/*! ./internal/_objectAssign.js */ "./node_modules/ramda/src/internal/_objectAssign.js");
24155
24156var _curry2 =
24157/*#__PURE__*/
24158__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24159/**
24160 * Create a new object with the own properties of the first object merged with
24161 * the own properties of the second object. If a key exists in both objects,
24162 * the value from the second object will be used.
24163 *
24164 * @func
24165 * @memberOf R
24166 * @since v0.26.0
24167 * @category Object
24168 * @sig {k: v} -> {k: v} -> {k: v}
24169 * @param {Object} l
24170 * @param {Object} r
24171 * @return {Object}
24172 * @see R.mergeLeft, R.mergeDeepRight, R.mergeWith, R.mergeWithKey
24173 * @example
24174 *
24175 *      R.mergeRight({ 'name': 'fred', 'age': 10 }, { 'age': 40 });
24176 *      //=> { 'name': 'fred', 'age': 40 }
24177 *
24178 *      const withDefaults = R.mergeRight({x: 0, y: 0});
24179 *      withDefaults({y: 2}); //=> {x: 0, y: 2}
24180 * @symb R.mergeRight(a, b) = {...a, ...b}
24181 */
24182
24183
24184var mergeRight =
24185/*#__PURE__*/
24186_curry2(function mergeRight(l, r) {
24187  return _objectAssign({}, l, r);
24188});
24189
24190module.exports = mergeRight;
24191
24192/***/ }),
24193
vendor: 1,467 bytes, lines 24194-24243
24194/***/ "./node_modules/ramda/src/mergeWith.js":
24195/*!*********************************************!*\
24196  !*** ./node_modules/ramda/src/mergeWith.js ***!
24197  \*********************************************/
24198/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24199
24200var _curry3 =
24201/*#__PURE__*/
24202__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24203
24204var mergeWithKey =
24205/*#__PURE__*/
24206__webpack_require__(/*! ./mergeWithKey.js */ "./node_modules/ramda/src/mergeWithKey.js");
24207/**
24208 * Creates a new object with the own properties of the two provided objects. If
24209 * a key exists in both objects, the provided function is applied to the values
24210 * associated with the key in each object, with the result being used as the
24211 * value associated with the key in the returned object.
24212 *
24213 * @func
24214 * @memberOf R
24215 * @since v0.19.0
24216 * @category Object
24217 * @sig ((a, a) -> a) -> {a} -> {a} -> {a}
24218 * @param {Function} fn
24219 * @param {Object} l
24220 * @param {Object} r
24221 * @return {Object}
24222 * @see R.mergeDeepWith, R.merge, R.mergeWithKey
24223 * @example
24224 *
24225 *      R.mergeWith(R.concat,
24226 *                  { a: true, values: [10, 20] },
24227 *                  { b: true, values: [15, 35] });
24228 *      //=> { a: true, b: true, values: [10, 20, 15, 35] }
24229 */
24230
24231
24232var mergeWith =
24233/*#__PURE__*/
24234_curry3(function mergeWith(fn, l, r) {
24235  return mergeWithKey(function (_, _l, _r) {
24236    return fn(_l, _r);
24237  }, l, r);
24238});
24239
24240module.exports = mergeWith;
24241
24242/***/ }),
24243
vendor: 1,892 bytes, lines 24244-24308
24244/***/ "./node_modules/ramda/src/mergeWithKey.js":
24245/*!************************************************!*\
24246  !*** ./node_modules/ramda/src/mergeWithKey.js ***!
24247  \************************************************/
24248/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24249
24250var _curry3 =
24251/*#__PURE__*/
24252__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24253
24254var _has =
24255/*#__PURE__*/
24256__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
24257/**
24258 * Creates a new object with the own properties of the two provided objects. If
24259 * a key exists in both objects, the provided function is applied to the key
24260 * and the values associated with the key in each object, with the result being
24261 * used as the value associated with the key in the returned object.
24262 *
24263 * @func
24264 * @memberOf R
24265 * @since v0.19.0
24266 * @category Object
24267 * @sig ((String, a, a) -> a) -> {a} -> {a} -> {a}
24268 * @param {Function} fn
24269 * @param {Object} l
24270 * @param {Object} r
24271 * @return {Object}
24272 * @see R.mergeDeepWithKey, R.merge, R.mergeWith
24273 * @example
24274 *
24275 *      let concatValues = (k, l, r) => k == 'values' ? R.concat(l, r) : r
24276 *      R.mergeWithKey(concatValues,
24277 *                     { a: true, thing: 'foo', values: [10, 20] },
24278 *                     { b: true, thing: 'bar', values: [15, 35] });
24279 *      //=> { a: true, b: true, thing: 'bar', values: [10, 20, 15, 35] }
24280 * @symb R.mergeWithKey(f, { x: 1, y: 2 }, { y: 5, z: 3 }) = { x: 1, y: f('y', 2, 5), z: 3 }
24281 */
24282
24283
24284var mergeWithKey =
24285/*#__PURE__*/
24286_curry3(function mergeWithKey(fn, l, r) {
24287  var result = {};
24288  var k;
24289
24290  for (k in l) {
24291    if (_has(k, l)) {
24292      result[k] = _has(k, r) ? fn(k, l[k], r[k]) : l[k];
24293    }
24294  }
24295
24296  for (k in r) {
24297    if (_has(k, r) && !_has(k, result)) {
24298      result[k] = r[k];
24299    }
24300  }
24301
24302  return result;
24303});
24304
24305module.exports = mergeWithKey;
24306
24307/***/ }),
24308
vendor: 789 bytes, lines 24309-24346
24309/***/ "./node_modules/ramda/src/min.js":
24310/*!***************************************!*\
24311  !*** ./node_modules/ramda/src/min.js ***!
24312  \***************************************/
24313/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24314
24315var _curry2 =
24316/*#__PURE__*/
24317__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24318/**
24319 * Returns the smaller of its two arguments.
24320 *
24321 * @func
24322 * @memberOf R
24323 * @since v0.1.0
24324 * @category Relation
24325 * @sig Ord a => a -> a -> a
24326 * @param {*} a
24327 * @param {*} b
24328 * @return {*}
24329 * @see R.minBy, R.max
24330 * @example
24331 *
24332 *      R.min(789, 123); //=> 123
24333 *      R.min('a', 'b'); //=> 'a'
24334 */
24335
24336
24337var min =
24338/*#__PURE__*/
24339_curry2(function min(a, b) {
24340  return b < a ? b : a;
24341});
24342
24343module.exports = min;
24344
24345/***/ }),
24346
vendor: 1,120 bytes, lines 24347-24391
24347/***/ "./node_modules/ramda/src/minBy.js":
24348/*!*****************************************!*\
24349  !*** ./node_modules/ramda/src/minBy.js ***!
24350  \*****************************************/
24351/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24352
24353var _curry3 =
24354/*#__PURE__*/
24355__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24356/**
24357 * Takes a function and two values, and returns whichever value produces the
24358 * smaller result when passed to the provided function.
24359 *
24360 * @func
24361 * @memberOf R
24362 * @since v0.8.0
24363 * @category Relation
24364 * @sig Ord b => (a -> b) -> a -> a -> a
24365 * @param {Function} f
24366 * @param {*} a
24367 * @param {*} b
24368 * @return {*}
24369 * @see R.min, R.maxBy
24370 * @example
24371 *
24372 *      //  square :: Number -> Number
24373 *      const square = n => n * n;
24374 *
24375 *      R.minBy(square, -3, 2); //=> 2
24376 *
24377 *      R.reduce(R.minBy(square), Infinity, [3, -5, 4, 1, -2]); //=> 1
24378 *      R.reduce(R.minBy(square), Infinity, []); //=> Infinity
24379 */
24380
24381
24382var minBy =
24383/*#__PURE__*/
24384_curry3(function minBy(f, a, b) {
24385  return f(b) < f(a) ? b : a;
24386});
24387
24388module.exports = minBy;
24389
24390/***/ }),
24391
vendor: 1,600 bytes, lines 24392-24438
24392/***/ "./node_modules/ramda/src/modify.js":
24393/*!******************************************!*\
24394  !*** ./node_modules/ramda/src/modify.js ***!
24395  \******************************************/
24396/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24397
24398var _curry3 =
24399/*#__PURE__*/
24400__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24401
24402var modifyPath =
24403/*#__PURE__*/
24404__webpack_require__(/*! ./modifyPath.js */ "./node_modules/ramda/src/modifyPath.js");
24405/**
24406 * Creates a copy of the passed object by applying an `fn` function to the given `prop` property.
24407 *
24408 * The function will not be invoked, and the object will not change
24409 * if its corresponding property does not exist in the object.
24410 * All non-primitive properties are copied to the new object by reference.
24411 *
24412 * @func
24413 * @memberOf R
24414 * @since v0.28.0
24415 * @category Object
24416 * @sig Idx -> (v -> v) -> {k: v} -> {k: v}
24417 * @param {String|Number} prop The property to be modified.
24418 * @param {Function} fn The function to apply to the property.
24419 * @param {Object} object The object to be transformed.
24420 * @return {Object} The transformed object.
24421 * @example
24422 *
24423 *      const person = {name: 'James', age: 20, pets: ['dog', 'cat']};
24424 *      R.modify('age', R.add(1), person); //=> {name: 'James', age: 21, pets: ['dog', 'cat']}
24425 *      R.modify('pets', R.append('turtle'), person); //=> {name: 'James', age: 20, pets: ['dog', 'cat', 'turtle']}
24426 */
24427
24428
24429var modify =
24430/*#__PURE__*/
24431_curry3(function modify(prop, fn, object) {
24432  return modifyPath([prop], fn, object);
24433});
24434
24435module.exports = modify;
24436
24437/***/ }),
24438
vendor: 2,644 bytes, lines 24439-24525
24439/***/ "./node_modules/ramda/src/modifyPath.js":
24440/*!**********************************************!*\
24441  !*** ./node_modules/ramda/src/modifyPath.js ***!
24442  \**********************************************/
24443/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24444
24445var _curry3 =
24446/*#__PURE__*/
24447__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24448
24449var _isArray =
24450/*#__PURE__*/
24451__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
24452
24453var _isObject =
24454/*#__PURE__*/
24455__webpack_require__(/*! ./internal/_isObject.js */ "./node_modules/ramda/src/internal/_isObject.js");
24456
24457var _has =
24458/*#__PURE__*/
24459__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
24460
24461var _assoc =
24462/*#__PURE__*/
24463__webpack_require__(/*! ./internal/_assoc.js */ "./node_modules/ramda/src/internal/_assoc.js");
24464
24465var _modify =
24466/*#__PURE__*/
24467__webpack_require__(/*! ./internal/_modify.js */ "./node_modules/ramda/src/internal/_modify.js");
24468/**
24469 * Creates a shallow clone of the passed object by applying an `fn` function
24470 * to the value at the given path.
24471 *
24472 * The function will not be invoked, and the object will not change
24473 * if its corresponding path does not exist in the object.
24474 * All non-primitive properties are copied to the new object by reference.
24475 *
24476 * @func
24477 * @memberOf R
24478 * @since v0.28.0
24479 * @category Object
24480 * @sig [Idx] -> (v -> v) -> {k: v} -> {k: v}
24481 * @param {Array} path The path to be modified.
24482 * @param {Function} fn The function to apply to the path.
24483 * @param {Object} object The object to be transformed.
24484 * @return {Object} The transformed object.
24485 * @example
24486 *
24487 *      const person = {name: 'James', address: { zipCode: '90216' }};
24488 *      R.modifyPath(['address', 'zipCode'], R.reverse, person); //=> {name: 'James', address: { zipCode: '61209' }}
24489 *
24490 *      // Can handle arrays too
24491 *      const person = {name: 'James', addresses: [{ zipCode: '90216' }]};
24492 *      R.modifyPath(['addresses', 0, 'zipCode'], R.reverse, person); //=> {name: 'James', addresses: [{ zipCode: '61209' }]}
24493 */
24494
24495
24496var modifyPath =
24497/*#__PURE__*/
24498_curry3(function modifyPath(path, fn, object) {
24499  if (!_isObject(object) && !_isArray(object) || path.length === 0) {
24500    return object;
24501  }
24502
24503  var idx = path[0];
24504
24505  if (!_has(idx, object)) {
24506    return object;
24507  }
24508
24509  if (path.length === 1) {
24510    return _modify(idx, fn, object);
24511  }
24512
24513  var val = modifyPath(Array.prototype.slice.call(path, 1), fn, object[idx]);
24514
24515  if (val === object[idx]) {
24516    return object;
24517  }
24518
24519  return _assoc(idx, val, object);
24520});
24521
24522module.exports = modifyPath;
24523
24524/***/ }),
24525
vendor: 1,192 bytes, lines 24526-24571
24526/***/ "./node_modules/ramda/src/modulo.js":
24527/*!******************************************!*\
24528  !*** ./node_modules/ramda/src/modulo.js ***!
24529  \******************************************/
24530/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24531
24532var _curry2 =
24533/*#__PURE__*/
24534__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24535/**
24536 * Divides the first parameter by the second and returns the remainder. Note
24537 * that this function preserves the JavaScript-style behavior for modulo. For
24538 * mathematical modulo see [`mathMod`](#mathMod).
24539 *
24540 * @func
24541 * @memberOf R
24542 * @since v0.1.1
24543 * @category Math
24544 * @sig Number -> Number -> Number
24545 * @param {Number} a The value to the divide.
24546 * @param {Number} b The pseudo-modulus
24547 * @return {Number} The result of `b % a`.
24548 * @see R.mathMod
24549 * @example
24550 *
24551 *      R.modulo(17, 3); //=> 2
24552 *      // JS behavior:
24553 *      R.modulo(-17, 3); //=> -2
24554 *      R.modulo(17, -3); //=> 2
24555 *
24556 *      const isOdd = R.modulo(R.__, 2);
24557 *      isOdd(42); //=> 0
24558 *      isOdd(21); //=> 1
24559 */
24560
24561
24562var modulo =
24563/*#__PURE__*/
24564_curry2(function modulo(a, b) {
24565  return a % b;
24566});
24567
24568module.exports = modulo;
24569
24570/***/ }),
24571
vendor: 1,544 bytes, lines 24572-24615
24572/***/ "./node_modules/ramda/src/move.js":
24573/*!****************************************!*\
24574  !*** ./node_modules/ramda/src/move.js ***!
24575  \****************************************/
24576/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24577
24578var _curry3 =
24579/*#__PURE__*/
24580__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
24581/**
24582 * Move an item, at index `from`, to index `to`, in a list of elements.
24583 * A new list will be created containing the new elements order.
24584 *
24585 * @func
24586 * @memberOf R
24587 * @since v0.27.1
24588 * @category List
24589 * @sig Number -> Number -> [a] -> [a]
24590 * @param {Number} from The source index
24591 * @param {Number} to The destination index
24592 * @param {Array} list The list which will serve to realise the move
24593 * @return {Array} The new list reordered
24594 * @example
24595 *
24596 *      R.move(0, 2, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['b', 'c', 'a', 'd', 'e', 'f']
24597 *      R.move(-1, 0, ['a', 'b', 'c', 'd', 'e', 'f']); //=> ['f', 'a', 'b', 'c', 'd', 'e'] list rotation
24598 */
24599
24600
24601var move =
24602/*#__PURE__*/
24603_curry3(function (from, to, list) {
24604  var length = list.length;
24605  var result = list.slice();
24606  var positiveFrom = from < 0 ? length + from : from;
24607  var positiveTo = to < 0 ? length + to : to;
24608  var item = result.splice(positiveFrom, 1);
24609  return positiveFrom < 0 || positiveFrom >= list.length || positiveTo < 0 || positiveTo >= list.length ? list : [].concat(result.slice(0, positiveTo)).concat(item).concat(result.slice(positiveTo, list.length));
24610});
24611
24612module.exports = move;
24613
24614/***/ }),
24615
vendor: 1,011 bytes, lines 24616-24656
24616/***/ "./node_modules/ramda/src/multiply.js":
24617/*!********************************************!*\
24618  !*** ./node_modules/ramda/src/multiply.js ***!
24619  \********************************************/
24620/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24621
24622var _curry2 =
24623/*#__PURE__*/
24624__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24625/**
24626 * Multiplies two numbers. Equivalent to `a * b` but curried.
24627 *
24628 * @func
24629 * @memberOf R
24630 * @since v0.1.0
24631 * @category Math
24632 * @sig Number -> Number -> Number
24633 * @param {Number} a The first value.
24634 * @param {Number} b The second value.
24635 * @return {Number} The result of `a * b`.
24636 * @see R.divide
24637 * @example
24638 *
24639 *      const double = R.multiply(2);
24640 *      const triple = R.multiply(3);
24641 *      double(3);       //=>  6
24642 *      triple(4);       //=> 12
24643 *      R.multiply(2, 5);  //=> 10
24644 */
24645
24646
24647var multiply =
24648/*#__PURE__*/
24649_curry2(function multiply(a, b) {
24650  return a * b;
24651});
24652
24653module.exports = multiply;
24654
24655/***/ }),
24656
vendor: 2,885 bytes, lines 24657-24765
24657/***/ "./node_modules/ramda/src/nAry.js":
24658/*!****************************************!*\
24659  !*** ./node_modules/ramda/src/nAry.js ***!
24660  \****************************************/
24661/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24662
24663var _curry2 =
24664/*#__PURE__*/
24665__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24666/**
24667 * Wraps a function of any arity (including nullary) in a function that accepts
24668 * exactly `n` parameters. Any extraneous parameters will not be passed to the
24669 * supplied function.
24670 *
24671 * @func
24672 * @memberOf R
24673 * @since v0.1.0
24674 * @category Function
24675 * @sig Number -> (* -> a) -> (* -> a)
24676 * @param {Number} n The desired arity of the new function.
24677 * @param {Function} fn The function to wrap.
24678 * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of
24679 *         arity `n`.
24680 * @see R.binary, R.unary
24681 * @example
24682 *
24683 *      const takesTwoArgs = (a, b) => [a, b];
24684 *
24685 *      takesTwoArgs.length; //=> 2
24686 *      takesTwoArgs(1, 2); //=> [1, 2]
24687 *
24688 *      const takesOneArg = R.nAry(1, takesTwoArgs);
24689 *      takesOneArg.length; //=> 1
24690 *      // Only `n` arguments are passed to the wrapped function
24691 *      takesOneArg(1, 2); //=> [1, undefined]
24692 * @symb R.nAry(0, f)(a, b) = f()
24693 * @symb R.nAry(1, f)(a, b) = f(a)
24694 * @symb R.nAry(2, f)(a, b) = f(a, b)
24695 */
24696
24697
24698var nAry =
24699/*#__PURE__*/
24700_curry2(function nAry(n, fn) {
24701  switch (n) {
24702    case 0:
24703      return function () {
24704        return fn.call(this);
24705      };
24706
24707    case 1:
24708      return function (a0) {
24709        return fn.call(this, a0);
24710      };
24711
24712    case 2:
24713      return function (a0, a1) {
24714        return fn.call(this, a0, a1);
24715      };
24716
24717    case 3:
24718      return function (a0, a1, a2) {
24719        return fn.call(this, a0, a1, a2);
24720      };
24721
24722    case 4:
24723      return function (a0, a1, a2, a3) {
24724        return fn.call(this, a0, a1, a2, a3);
24725      };
24726
24727    case 5:
24728      return function (a0, a1, a2, a3, a4) {
24729        return fn.call(this, a0, a1, a2, a3, a4);
24730      };
24731
24732    case 6:
24733      return function (a0, a1, a2, a3, a4, a5) {
24734        return fn.call(this, a0, a1, a2, a3, a4, a5);
24735      };
24736
24737    case 7:
24738      return function (a0, a1, a2, a3, a4, a5, a6) {
24739        return fn.call(this, a0, a1, a2, a3, a4, a5, a6);
24740      };
24741
24742    case 8:
24743      return function (a0, a1, a2, a3, a4, a5, a6, a7) {
24744        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7);
24745      };
24746
24747    case 9:
24748      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8) {
24749        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8);
24750      };
24751
24752    case 10:
24753      return function (a0, a1, a2, a3, a4, a5, a6, a7, a8, a9) {
24754        return fn.call(this, a0, a1, a2, a3, a4, a5, a6, a7, a8, a9);
24755      };
24756
24757    default:
24758      throw new Error('First argument to nAry must be a non-negative integer no greater than ten');
24759  }
24760});
24761
24762module.exports = nAry;
24763
24764/***/ }),
24765
vendor: 702 bytes, lines 24766-24800
24766/***/ "./node_modules/ramda/src/negate.js":
24767/*!******************************************!*\
24768  !*** ./node_modules/ramda/src/negate.js ***!
24769  \******************************************/
24770/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24771
24772var _curry1 =
24773/*#__PURE__*/
24774__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
24775/**
24776 * Negates its argument.
24777 *
24778 * @func
24779 * @memberOf R
24780 * @since v0.9.0
24781 * @category Math
24782 * @sig Number -> Number
24783 * @param {Number} n
24784 * @return {Number}
24785 * @example
24786 *
24787 *      R.negate(42); //=> -42
24788 */
24789
24790
24791var negate =
24792/*#__PURE__*/
24793_curry1(function negate(n) {
24794  return -n;
24795});
24796
24797module.exports = negate;
24798
24799/***/ }),
24800
vendor: 1,517 bytes, lines 24801-24854
24801/***/ "./node_modules/ramda/src/none.js":
24802/*!****************************************!*\
24803  !*** ./node_modules/ramda/src/none.js ***!
24804  \****************************************/
24805/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24806
24807var _complement =
24808/*#__PURE__*/
24809__webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/src/internal/_complement.js");
24810
24811var _curry2 =
24812/*#__PURE__*/
24813__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24814
24815var all =
24816/*#__PURE__*/
24817__webpack_require__(/*! ./all.js */ "./node_modules/ramda/src/all.js");
24818/**
24819 * Returns `true` if no elements of the list match the predicate, `false`
24820 * otherwise.
24821 *
24822 * Dispatches to the `all` method of the second argument, if present.
24823 *
24824 * Acts as a transducer if a transformer is given in list position.
24825 *
24826 * @func
24827 * @memberOf R
24828 * @since v0.12.0
24829 * @category List
24830 * @sig (a -> Boolean) -> [a] -> Boolean
24831 * @param {Function} fn The predicate function.
24832 * @param {Array} list The array to consider.
24833 * @return {Boolean} `true` if the predicate is not satisfied by every element, `false` otherwise.
24834 * @see R.all, R.any
24835 * @example
24836 *
24837 *      const isEven = n => n % 2 === 0;
24838 *      const isOdd = n => n % 2 !== 0;
24839 *
24840 *      R.none(isEven, [1, 3, 5, 7, 9, 11]); //=> true
24841 *      R.none(isOdd, [1, 3, 5, 7, 8, 11]); //=> false
24842 */
24843
24844
24845var none =
24846/*#__PURE__*/
24847_curry2(function none(fn, input) {
24848  return all(_complement(fn), input);
24849});
24850
24851module.exports = none;
24852
24853/***/ }),
24854
vendor: 953 bytes, lines 24855-24894
24855/***/ "./node_modules/ramda/src/not.js":
24856/*!***************************************!*\
24857  !*** ./node_modules/ramda/src/not.js ***!
24858  \***************************************/
24859/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24860
24861var _curry1 =
24862/*#__PURE__*/
24863__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
24864/**
24865 * A function that returns the `!` of its argument. It will return `true` when
24866 * passed false-y value, and `false` when passed a truth-y one.
24867 *
24868 * @func
24869 * @memberOf R
24870 * @since v0.1.0
24871 * @category Logic
24872 * @sig * -> Boolean
24873 * @param {*} a any value
24874 * @return {Boolean} the logical inverse of passed argument.
24875 * @see R.complement
24876 * @example
24877 *
24878 *      R.not(true); //=> false
24879 *      R.not(false); //=> true
24880 *      R.not(0); //=> true
24881 *      R.not(1); //=> false
24882 */
24883
24884
24885var not =
24886/*#__PURE__*/
24887_curry1(function not(a) {
24888  return !a;
24889});
24890
24891module.exports = not;
24892
24893/***/ }),
24894
vendor: 1,393 bytes, lines 24895-24946
24895/***/ "./node_modules/ramda/src/nth.js":
24896/*!***************************************!*\
24897  !*** ./node_modules/ramda/src/nth.js ***!
24898  \***************************************/
24899/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24900
24901var _curry2 =
24902/*#__PURE__*/
24903__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
24904
24905var _isString =
24906/*#__PURE__*/
24907__webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/src/internal/_isString.js");
24908/**
24909 * Returns the nth element of the given list or string. If n is negative the
24910 * element at index length + n is returned.
24911 *
24912 * @func
24913 * @memberOf R
24914 * @since v0.1.0
24915 * @category List
24916 * @sig Number -> [a] -> a | Undefined
24917 * @sig Number -> String -> String
24918 * @param {Number} offset
24919 * @param {*} list
24920 * @return {*}
24921 * @example
24922 *
24923 *      const list = ['foo', 'bar', 'baz', 'quux'];
24924 *      R.nth(1, list); //=> 'bar'
24925 *      R.nth(-1, list); //=> 'quux'
24926 *      R.nth(-99, list); //=> undefined
24927 *
24928 *      R.nth(2, 'abc'); //=> 'c'
24929 *      R.nth(3, 'abc'); //=> ''
24930 * @symb R.nth(-1, [a, b, c]) = c
24931 * @symb R.nth(0, [a, b, c]) = a
24932 * @symb R.nth(1, [a, b, c]) = b
24933 */
24934
24935
24936var nth =
24937/*#__PURE__*/
24938_curry2(function nth(offset, list) {
24939  var idx = offset < 0 ? list.length + offset : offset;
24940  return _isString(list) ? list.charAt(idx) : list[idx];
24941});
24942
24943module.exports = nth;
24944
24945/***/ }),
24946
vendor: 1,199 bytes, lines 24947-24996
24947/***/ "./node_modules/ramda/src/nthArg.js":
24948/*!******************************************!*\
24949  !*** ./node_modules/ramda/src/nthArg.js ***!
24950  \******************************************/
24951/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
24952
24953var _curry1 =
24954/*#__PURE__*/
24955__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
24956
24957var curryN =
24958/*#__PURE__*/
24959__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
24960
24961var nth =
24962/*#__PURE__*/
24963__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
24964/**
24965 * Returns a function which returns its nth argument.
24966 *
24967 * @func
24968 * @memberOf R
24969 * @since v0.9.0
24970 * @category Function
24971 * @sig Number -> *... -> *
24972 * @param {Number} n
24973 * @return {Function}
24974 * @example
24975 *
24976 *      R.nthArg(1)('a', 'b', 'c'); //=> 'b'
24977 *      R.nthArg(-1)('a', 'b', 'c'); //=> 'c'
24978 * @symb R.nthArg(-1)(a, b, c) = c
24979 * @symb R.nthArg(0)(a, b, c) = a
24980 * @symb R.nthArg(1)(a, b, c) = b
24981 */
24982
24983
24984var nthArg =
24985/*#__PURE__*/
24986_curry1(function nthArg(n) {
24987  var arity = n < 0 ? 1 : n + 1;
24988  return curryN(arity, function () {
24989    return nth(n, arguments);
24990  });
24991});
24992
24993module.exports = nthArg;
24994
24995/***/ }),
24996
vendor: 1,489 bytes, lines 24997-25044
24997/***/ "./node_modules/ramda/src/o.js":
24998/*!*************************************!*\
24999  !*** ./node_modules/ramda/src/o.js ***!
25000  \*************************************/
25001/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25002
25003var _curry3 =
25004/*#__PURE__*/
25005__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
25006/**
25007 * `o` is a curried composition function that returns a unary function.
25008 * Like [`compose`](#compose), `o` performs right-to-left function composition.
25009 * Unlike [`compose`](#compose), the rightmost function passed to `o` will be
25010 * invoked with only one argument. Also, unlike [`compose`](#compose), `o` is
25011 * limited to accepting only 2 unary functions. The name o was chosen because
25012 * of its similarity to the mathematical composition operator ∘.
25013 *
25014 * @func
25015 * @memberOf R
25016 * @since v0.24.0
25017 * @category Function
25018 * @sig (b -> c) -> (a -> b) -> a -> c
25019 * @param {Function} f
25020 * @param {Function} g
25021 * @return {Function}
25022 * @see R.compose, R.pipe
25023 * @example
25024 *
25025 *      const classyGreeting = name => "The name's " + name.last + ", " + name.first + " " + name.last
25026 *      const yellGreeting = R.o(R.toUpper, classyGreeting);
25027 *      yellGreeting({first: 'James', last: 'Bond'}); //=> "THE NAME'S BOND, JAMES BOND"
25028 *
25029 *      R.o(R.multiply(10), R.add(10))(-4) //=> 60
25030 *
25031 * @symb R.o(f, g, x) = f(g(x))
25032 */
25033
25034
25035var o =
25036/*#__PURE__*/
25037_curry3(function o(f, g, x) {
25038  return f(g(x));
25039});
25040
25041module.exports = o;
25042
25043/***/ }),
25044
vendor: 1,032 bytes, lines 25045-25087
25045/***/ "./node_modules/ramda/src/objOf.js":
25046/*!*****************************************!*\
25047  !*** ./node_modules/ramda/src/objOf.js ***!
25048  \*****************************************/
25049/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25050
25051var _curry2 =
25052/*#__PURE__*/
25053__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25054/**
25055 * Creates an object containing a single key:value pair.
25056 *
25057 * @func
25058 * @memberOf R
25059 * @since v0.18.0
25060 * @category Object
25061 * @sig String -> a -> {String:a}
25062 * @param {String} key
25063 * @param {*} val
25064 * @return {Object}
25065 * @see R.pair
25066 * @example
25067 *
25068 *      const matchPhrases = R.compose(
25069 *        R.objOf('must'),
25070 *        R.map(R.objOf('match_phrase'))
25071 *      );
25072 *      matchPhrases(['foo', 'bar', 'baz']); //=> {must: [{match_phrase: 'foo'}, {match_phrase: 'bar'}, {match_phrase: 'baz'}]}
25073 */
25074
25075
25076var objOf =
25077/*#__PURE__*/
25078_curry2(function objOf(key, val) {
25079  var obj = {};
25080  obj[key] = val;
25081  return obj;
25082});
25083
25084module.exports = objOf;
25085
25086/***/ }),
25087
vendor: 1,002 bytes, lines 25088-25128
25088/***/ "./node_modules/ramda/src/of.js":
25089/*!**************************************!*\
25090  !*** ./node_modules/ramda/src/of.js ***!
25091  \**************************************/
25092/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25093
25094var _curry1 =
25095/*#__PURE__*/
25096__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
25097
25098var _of =
25099/*#__PURE__*/
25100__webpack_require__(/*! ./internal/_of.js */ "./node_modules/ramda/src/internal/_of.js");
25101/**
25102 * Returns a singleton array containing the value provided.
25103 *
25104 * Note this `of` is different from the ES6 `of`; See
25105 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/of
25106 *
25107 * @func
25108 * @memberOf R
25109 * @since v0.3.0
25110 * @category Function
25111 * @sig a -> [a]
25112 * @param {*} x any value
25113 * @return {Array} An array wrapping `x`.
25114 * @example
25115 *
25116 *      R.of(null); //=> [null]
25117 *      R.of([42]); //=> [[42]]
25118 */
25119
25120
25121var of =
25122/*#__PURE__*/
25123_curry1(_of);
25124
25125module.exports = of;
25126
25127/***/ }),
25128
vendor: 1,244 bytes, lines 25129-25181
25129/***/ "./node_modules/ramda/src/omit.js":
25130/*!****************************************!*\
25131  !*** ./node_modules/ramda/src/omit.js ***!
25132  \****************************************/
25133/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25134
25135var _curry2 =
25136/*#__PURE__*/
25137__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25138/**
25139 * Returns a partial copy of an object omitting the keys specified.
25140 *
25141 * @func
25142 * @memberOf R
25143 * @since v0.1.0
25144 * @category Object
25145 * @sig [String] -> {String: *} -> {String: *}
25146 * @param {Array} names an array of String property names to omit from the new object
25147 * @param {Object} obj The object to copy from
25148 * @return {Object} A new object with properties from `names` not on it.
25149 * @see R.pick
25150 * @example
25151 *
25152 *      R.omit(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, c: 3}
25153 */
25154
25155
25156var omit =
25157/*#__PURE__*/
25158_curry2(function omit(names, obj) {
25159  var result = {};
25160  var index = {};
25161  var idx = 0;
25162  var len = names.length;
25163
25164  while (idx < len) {
25165    index[names[idx]] = 1;
25166    idx += 1;
25167  }
25168
25169  for (var prop in obj) {
25170    if (!index.hasOwnProperty(prop)) {
25171      result[prop] = obj[prop];
25172    }
25173  }
25174
25175  return result;
25176});
25177
25178module.exports = omit;
25179
25180/***/ }),
25181
vendor: 1,243 bytes, lines 25182-25226
25182/***/ "./node_modules/ramda/src/on.js":
25183/*!**************************************!*\
25184  !*** ./node_modules/ramda/src/on.js ***!
25185  \**************************************/
25186/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25187
25188var curryN =
25189/*#__PURE__*/
25190__webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
25191/**
25192 * Takes a binary function `f`, a unary function `g`, and two values.
25193 * Applies `g` to each value, then applies the result of each to `f`.
25194 *
25195 * Also known as the P combinator.
25196 *
25197 * @func
25198 * @memberOf R
25199 * @since v0.28.0
25200 * @category Function
25201 * @sig ((a, a) -> b) -> (c -> a) -> c -> c -> b
25202 * @param {Function} f a binary function
25203 * @param {Function} g a unary function
25204 * @param {any} a any value
25205 * @param {any} b any value
25206 * @return {any} The result of `f`
25207 * @example
25208 *
25209 *      const eqBy = R.on((a, b) => a === b);
25210 *      eqBy(R.prop('a'), {b:0, a:1}, {a:1}) //=> true;
25211 *
25212 *      const containsInsensitive = R.on(R.contains, R.toLower);
25213 *      containsInsensitive('o', 'FOO'); //=> true
25214 * @symb R.on(f, g, a, b) = f(g(a), g(b))
25215 */
25216
25217
25218var on =
25219/*#__PURE__*/
25220curryN(4, [], function on(f, g, a, b) {
25221  return f(g(a), g(b));
25222});
25223module.exports = on;
25224
25225/***/ }),
25226
vendor: 1,425 bytes, lines 25227-25280
25227/***/ "./node_modules/ramda/src/once.js":
25228/*!****************************************!*\
25229  !*** ./node_modules/ramda/src/once.js ***!
25230  \****************************************/
25231/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25232
25233var _arity =
25234/*#__PURE__*/
25235__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
25236
25237var _curry1 =
25238/*#__PURE__*/
25239__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
25240/**
25241 * Accepts a function `fn` and returns a function that guards invocation of
25242 * `fn` such that `fn` can only ever be called once, no matter how many times
25243 * the returned function is invoked. The first value calculated is returned in
25244 * subsequent invocations.
25245 *
25246 * @func
25247 * @memberOf R
25248 * @since v0.1.0
25249 * @category Function
25250 * @sig (a... -> b) -> (a... -> b)
25251 * @param {Function} fn The function to wrap in a call-only-once wrapper.
25252 * @return {Function} The wrapped function.
25253 * @example
25254 *
25255 *      const addOneOnce = R.once(x => x + 1);
25256 *      addOneOnce(10); //=> 11
25257 *      addOneOnce(addOneOnce(50)); //=> 11
25258 */
25259
25260
25261var once =
25262/*#__PURE__*/
25263_curry1(function once(fn) {
25264  var called = false;
25265  var result;
25266  return _arity(fn.length, function () {
25267    if (called) {
25268      return result;
25269    }
25270
25271    called = true;
25272    result = fn.apply(this, arguments);
25273    return result;
25274  });
25275});
25276
25277module.exports = once;
25278
25279/***/ }),
25280
vendor: 957 bytes, lines 25281-25321
25281/***/ "./node_modules/ramda/src/or.js":
25282/*!**************************************!*\
25283  !*** ./node_modules/ramda/src/or.js ***!
25284  \**************************************/
25285/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25286
25287var _curry2 =
25288/*#__PURE__*/
25289__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25290/**
25291 * Returns the first argument if it is truthy, otherwise the second argument.
25292 * Acts as the boolean `or` statement if both inputs are `Boolean`s.
25293 *
25294 * @func
25295 * @memberOf R
25296 * @since v0.1.0
25297 * @category Logic
25298 * @sig a -> b -> a | b
25299 * @param {Any} a
25300 * @param {Any} b
25301 * @return {Any}
25302 * @see R.either, R.and
25303 * @example
25304 *
25305 *      R.or(true, true); //=> true
25306 *      R.or(true, false); //=> true
25307 *      R.or(false, true); //=> true
25308 *      R.or(false, false); //=> false
25309 */
25310
25311
25312var or =
25313/*#__PURE__*/
25314_curry2(function or(a, b) {
25315  return a || b;
25316});
25317
25318module.exports = or;
25319
25320/***/ }),
25321
vendor: 1,740 bytes, lines 25322-25376
25322/***/ "./node_modules/ramda/src/otherwise.js":
25323/*!*********************************************!*\
25324  !*** ./node_modules/ramda/src/otherwise.js ***!
25325  \*********************************************/
25326/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25327
25328var _curry2 =
25329/*#__PURE__*/
25330__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25331
25332var _assertPromise =
25333/*#__PURE__*/
25334__webpack_require__(/*! ./internal/_assertPromise.js */ "./node_modules/ramda/src/internal/_assertPromise.js");
25335/**
25336 * Returns the result of applying the onFailure function to the value inside
25337 * a failed promise. This is useful for handling rejected promises
25338 * inside function compositions.
25339 *
25340 * @func
25341 * @memberOf R
25342 * @since v0.26.0
25343 * @category Function
25344 * @sig (e -> b) -> (Promise e a) -> (Promise e b)
25345 * @sig (e -> (Promise f b)) -> (Promise e a) -> (Promise f b)
25346 * @param {Function} onFailure The function to apply. Can return a value or a promise of a value.
25347 * @param {Promise} p
25348 * @return {Promise} The result of calling `p.then(null, onFailure)`
25349 * @see R.andThen
25350 * @example
25351 *
25352 *      const failedFetch = id => Promise.reject('bad ID');
25353 *      const useDefault = () => ({ firstName: 'Bob', lastName: 'Loblaw' });
25354 *
25355 *      //recoverFromFailure :: String -> Promise ({ firstName, lastName })
25356 *      const recoverFromFailure = R.pipe(
25357 *        failedFetch,
25358 *        R.otherwise(useDefault),
25359 *        R.andThen(R.pick(['firstName', 'lastName'])),
25360 *      );
25361 *      recoverFromFailure(12345).then(console.log);
25362 */
25363
25364
25365var otherwise =
25366/*#__PURE__*/
25367_curry2(function otherwise(f, p) {
25368  _assertPromise('otherwise', p);
25369
25370  return p.then(null, f);
25371});
25372
25373module.exports = otherwise;
25374
25375/***/ }),
25376
vendor: 1,621 bytes, lines 25377-25435
25377/***/ "./node_modules/ramda/src/over.js":
25378/*!****************************************!*\
25379  !*** ./node_modules/ramda/src/over.js ***!
25380  \****************************************/
25381/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25382
25383var _curry3 =
25384/*#__PURE__*/
25385__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js"); // `Identity` is a functor that holds a single value, where `map` simply
25386// transforms the held value with the provided function.
25387
25388
25389var Identity = function (x) {
25390  return {
25391    value: x,
25392    map: function (f) {
25393      return Identity(f(x));
25394    }
25395  };
25396};
25397/**
25398 * Returns the result of "setting" the portion of the given data structure
25399 * focused by the given lens to the result of applying the given function to
25400 * the focused value.
25401 *
25402 * @func
25403 * @memberOf R
25404 * @since v0.16.0
25405 * @category Object
25406 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
25407 * @sig Lens s a -> (a -> a) -> s -> s
25408 * @param {Lens} lens
25409 * @param {*} v
25410 * @param {*} x
25411 * @return {*}
25412 * @see R.view, R.set, R.lens, R.lensIndex, R.lensProp, R.lensPath
25413 * @example
25414 *
25415 *      const headLens = R.lensIndex(0);
25416 *
25417 *      R.over(headLens, R.toUpper, ['foo', 'bar', 'baz']); //=> ['FOO', 'bar', 'baz']
25418 */
25419
25420
25421var over =
25422/*#__PURE__*/
25423_curry3(function over(lens, f, x) {
25424  // The value returned by the getter function is first transformed with `f`,
25425  // then set as the value of an `Identity`. This is then mapped over with the
25426  // setter function of the lens.
25427  return lens(function (y) {
25428    return Identity(f(y));
25429  })(x).value;
25430});
25431
25432module.exports = over;
25433
25434/***/ }),
25435
vendor: 800 bytes, lines 25436-25472
25436/***/ "./node_modules/ramda/src/pair.js":
25437/*!****************************************!*\
25438  !*** ./node_modules/ramda/src/pair.js ***!
25439  \****************************************/
25440/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25441
25442var _curry2 =
25443/*#__PURE__*/
25444__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25445/**
25446 * Takes two arguments, `fst` and `snd`, and returns `[fst, snd]`.
25447 *
25448 * @func
25449 * @memberOf R
25450 * @since v0.18.0
25451 * @category List
25452 * @sig a -> b -> (a,b)
25453 * @param {*} fst
25454 * @param {*} snd
25455 * @return {Array}
25456 * @see R.objOf, R.of
25457 * @example
25458 *
25459 *      R.pair('foo', 'bar'); //=> ['foo', 'bar']
25460 */
25461
25462
25463var pair =
25464/*#__PURE__*/
25465_curry2(function pair(fst, snd) {
25466  return [fst, snd];
25467});
25468
25469module.exports = pair;
25470
25471/***/ }),
25472
vendor: 1,655 bytes, lines 25473-25523
25473/***/ "./node_modules/ramda/src/partial.js":
25474/*!*******************************************!*\
25475  !*** ./node_modules/ramda/src/partial.js ***!
25476  \*******************************************/
25477/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25478
25479var _concat =
25480/*#__PURE__*/
25481__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
25482
25483var _createPartialApplicator =
25484/*#__PURE__*/
25485__webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/src/internal/_createPartialApplicator.js");
25486/**
25487 * Takes a function `f` and a list of arguments, and returns a function `g`.
25488 * When applied, `g` returns the result of applying `f` to the arguments
25489 * provided initially followed by the arguments provided to `g`.
25490 *
25491 * @func
25492 * @memberOf R
25493 * @since v0.10.0
25494 * @category Function
25495 * @sig ((a, b, c, ..., n) -> x) -> [a, b, c, ...] -> ((d, e, f, ..., n) -> x)
25496 * @param {Function} f
25497 * @param {Array} args
25498 * @return {Function}
25499 * @see R.partialRight, R.curry
25500 * @example
25501 *
25502 *      const multiply2 = (a, b) => a * b;
25503 *      const double = R.partial(multiply2, [2]);
25504 *      double(3); //=> 6
25505 *
25506 *      const greet = (salutation, title, firstName, lastName) =>
25507 *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';
25508 *
25509 *      const sayHello = R.partial(greet, ['Hello']);
25510 *      const sayHelloToMs = R.partial(sayHello, ['Ms.']);
25511 *      sayHelloToMs('Jane', 'Jones'); //=> 'Hello, Ms. Jane Jones!'
25512 * @symb R.partial(f, [a, b])(c, d) = f(a, b, c, d)
25513 */
25514
25515
25516var partial =
25517/*#__PURE__*/
25518_createPartialApplicator(_concat);
25519
25520module.exports = partial;
25521
25522/***/ }),
25523
vendor: 1,799 bytes, lines 25524-25572
25524/***/ "./node_modules/ramda/src/partialObject.js":
25525/*!*************************************************!*\
25526  !*** ./node_modules/ramda/src/partialObject.js ***!
25527  \*************************************************/
25528/***/ (function(module, __unused_webpack_exports, __webpack_require__) {
25529
25530var mergeDeepRight =
25531/*#__PURE__*/
25532__webpack_require__(/*! ./mergeDeepRight.js */ "./node_modules/ramda/src/mergeDeepRight.js");
25533
25534var _curry2 =
25535/*#__PURE__*/
25536__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25537/**
25538 * Takes a function `f` and an object, and returns a function `g`.
25539 * When applied, `g` returns the result of applying `f` to the object
25540 * provided initially merged deeply (right) with the object provided as an argument to `g`.
25541 *
25542 * @func
25543 * @memberOf R
25544 * @since v0.28.0
25545 * @category Function
25546 * @sig (({ a, b, c, ..., n }) -> x) -> { a, b, c, ...} -> ({ d, e, f, ..., n } -> x)
25547 * @param {Function} f
25548 * @param {Object} props
25549 * @return {Function}
25550 * @see R.partial, R.partialRight, R.curry, R.mergeDeepRight
25551 * @example
25552 *
25553 *      const multiply2 = ({ a, b }) => a * b;
25554 *      const double = R.partialObject(multiply2, { a: 2 });
25555 *      double({ b: 2 }); //=> 4
25556 *
25557 *      const greet = ({ salutation, title, firstName, lastName }) =>
25558 *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';
25559 *
25560 *      const sayHello = R.partialObject(greet, { salutation: 'Hello' });
25561 *      const sayHelloToMs = R.partialObject(sayHello, { title: 'Ms.' });
25562 *      sayHelloToMs({ firstName: 'Jane', lastName: 'Jones' }); //=> 'Hello, Ms. Jane Jones!'
25563 * @symb R.partialObject(f, { a, b })({ c, d }) = f({ a, b, c, d })
25564 */
25565
25566
25567module.exports =
25568/*#__PURE__*/
25569_curry2((f, o) => props => f.call(this, mergeDeepRight(o, props)));
25570
25571/***/ }),
25572
vendor: 1,643 bytes, lines 25573-25625
25573/***/ "./node_modules/ramda/src/partialRight.js":
25574/*!************************************************!*\
25575  !*** ./node_modules/ramda/src/partialRight.js ***!
25576  \************************************************/
25577/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25578
25579var _concat =
25580/*#__PURE__*/
25581__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
25582
25583var _createPartialApplicator =
25584/*#__PURE__*/
25585__webpack_require__(/*! ./internal/_createPartialApplicator.js */ "./node_modules/ramda/src/internal/_createPartialApplicator.js");
25586
25587var flip =
25588/*#__PURE__*/
25589__webpack_require__(/*! ./flip.js */ "./node_modules/ramda/src/flip.js");
25590/**
25591 * Takes a function `f` and a list of arguments, and returns a function `g`.
25592 * When applied, `g` returns the result of applying `f` to the arguments
25593 * provided to `g` followed by the arguments provided initially.
25594 *
25595 * @func
25596 * @memberOf R
25597 * @since v0.10.0
25598 * @category Function
25599 * @sig ((a, b, c, ..., n) -> x) -> [d, e, f, ..., n] -> ((a, b, c, ...) -> x)
25600 * @param {Function} f
25601 * @param {Array} args
25602 * @return {Function}
25603 * @see R.partial
25604 * @example
25605 *
25606 *      const greet = (salutation, title, firstName, lastName) =>
25607 *        salutation + ', ' + title + ' ' + firstName + ' ' + lastName + '!';
25608 *
25609 *      const greetMsJaneJones = R.partialRight(greet, ['Ms.', 'Jane', 'Jones']);
25610 *
25611 *      greetMsJaneJones('Hello'); //=> 'Hello, Ms. Jane Jones!'
25612 * @symb R.partialRight(f, [a, b])(c, d) = f(c, d, a, b)
25613 */
25614
25615
25616var partialRight =
25617/*#__PURE__*/
25618_createPartialApplicator(
25619/*#__PURE__*/
25620flip(_concat));
25621
25622module.exports = partialRight;
25623
25624/***/ }),
25625
vendor: 1,728 bytes, lines 25626-25675
25626/***/ "./node_modules/ramda/src/partition.js":
25627/*!*********************************************!*\
25628  !*** ./node_modules/ramda/src/partition.js ***!
25629  \*********************************************/
25630/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25631
25632var filter =
25633/*#__PURE__*/
25634__webpack_require__(/*! ./filter.js */ "./node_modules/ramda/src/filter.js");
25635
25636var juxt =
25637/*#__PURE__*/
25638__webpack_require__(/*! ./juxt.js */ "./node_modules/ramda/src/juxt.js");
25639
25640var reject =
25641/*#__PURE__*/
25642__webpack_require__(/*! ./reject.js */ "./node_modules/ramda/src/reject.js");
25643/**
25644 * Takes a predicate and a list or other `Filterable` object and returns the
25645 * pair of filterable objects of the same type of elements which do and do not
25646 * satisfy, the predicate, respectively. Filterable objects include plain objects or any object
25647 * that has a filter method such as `Array`.
25648 *
25649 * @func
25650 * @memberOf R
25651 * @since v0.1.4
25652 * @category List
25653 * @sig Filterable f => (a -> Boolean) -> f a -> [f a, f a]
25654 * @param {Function} pred A predicate to determine which side the element belongs to.
25655 * @param {Array} filterable the list (or other filterable) to partition.
25656 * @return {Array} An array, containing first the subset of elements that satisfy the
25657 *         predicate, and second the subset of elements that do not satisfy.
25658 * @see R.filter, R.reject
25659 * @example
25660 *
25661 *      R.partition(R.includes('s'), ['sss', 'ttt', 'foo', 'bars']);
25662 *      // => [ [ 'sss', 'bars' ],  [ 'ttt', 'foo' ] ]
25663 *
25664 *      R.partition(R.includes('s'), { a: 'sss', b: 'ttt', foo: 'bars' });
25665 *      // => [ { a: 'sss', foo: 'bars' }, { b: 'ttt' }  ]
25666 */
25667
25668
25669var partition =
25670/*#__PURE__*/
25671juxt([filter, reject]);
25672module.exports = partition;
25673
25674/***/ }),
25675
vendor: 1,212 bytes, lines 25676-25720
25676/***/ "./node_modules/ramda/src/path.js":
25677/*!****************************************!*\
25678  !*** ./node_modules/ramda/src/path.js ***!
25679  \****************************************/
25680/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25681
25682var _curry2 =
25683/*#__PURE__*/
25684__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25685
25686var paths =
25687/*#__PURE__*/
25688__webpack_require__(/*! ./paths.js */ "./node_modules/ramda/src/paths.js");
25689/**
25690 * Retrieve the value at a given path.
25691 *
25692 * @func
25693 * @memberOf R
25694 * @since v0.2.0
25695 * @category Object
25696 * @typedefn Idx = String | Int | Symbol
25697 * @sig [Idx] -> {a} -> a | Undefined
25698 * @param {Array} path The path to use.
25699 * @param {Object} obj The object to retrieve the nested property from.
25700 * @return {*} The data at `path`.
25701 * @see R.prop, R.nth
25702 * @example
25703 *
25704 *      R.path(['a', 'b'], {a: {b: 2}}); //=> 2
25705 *      R.path(['a', 'b'], {c: {b: 2}}); //=> undefined
25706 *      R.path(['a', 'b', 0], {a: {b: [1, 2, 3]}}); //=> 1
25707 *      R.path(['a', 'b', -2], {a: {b: [1, 2, 3]}}); //=> 2
25708 */
25709
25710
25711var path =
25712/*#__PURE__*/
25713_curry2(function path(pathAr, obj) {
25714  return paths([pathAr], obj)[0];
25715});
25716
25717module.exports = path;
25718
25719/***/ }),
25720
vendor: 1,660 bytes, lines 25721-25773
25721/***/ "./node_modules/ramda/src/pathEq.js":
25722/*!******************************************!*\
25723  !*** ./node_modules/ramda/src/pathEq.js ***!
25724  \******************************************/
25725/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25726
25727var _curry3 =
25728/*#__PURE__*/
25729__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
25730
25731var equals =
25732/*#__PURE__*/
25733__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
25734
25735var path =
25736/*#__PURE__*/
25737__webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
25738/**
25739 * Determines whether a nested path on an object has a specific value, in
25740 * [`R.equals`](#equals) terms. Most likely used to filter a list.
25741 *
25742 * @func
25743 * @memberOf R
25744 * @since v0.7.0
25745 * @category Relation
25746 * @typedefn Idx = String | Int | Symbol
25747 * @sig [Idx] -> a -> {a} -> Boolean
25748 * @param {Array} path The path of the nested property to use
25749 * @param {*} val The value to compare the nested property with
25750 * @param {Object} obj The object to check the nested property in
25751 * @return {Boolean} `true` if the value equals the nested object property,
25752 *         `false` otherwise.
25753 * @example
25754 *
25755 *      const user1 = { address: { zipCode: 90210 } };
25756 *      const user2 = { address: { zipCode: 55555 } };
25757 *      const user3 = { name: 'Bob' };
25758 *      const users = [ user1, user2, user3 ];
25759 *      const isFamous = R.pathEq(['address', 'zipCode'], 90210);
25760 *      R.filter(isFamous, users); //=> [ user1 ]
25761 */
25762
25763
25764var pathEq =
25765/*#__PURE__*/
25766_curry3(function pathEq(_path, val, obj) {
25767  return equals(path(_path, obj), val);
25768});
25769
25770module.exports = pathEq;
25771
25772/***/ }),
25773
vendor: 1,388 bytes, lines 25774-25821
25774/***/ "./node_modules/ramda/src/pathOr.js":
25775/*!******************************************!*\
25776  !*** ./node_modules/ramda/src/pathOr.js ***!
25777  \******************************************/
25778/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25779
25780var _curry3 =
25781/*#__PURE__*/
25782__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
25783
25784var defaultTo =
25785/*#__PURE__*/
25786__webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/src/defaultTo.js");
25787
25788var path =
25789/*#__PURE__*/
25790__webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
25791/**
25792 * If the given, non-null object has a value at the given path, returns the
25793 * value at that path. Otherwise returns the provided default value.
25794 *
25795 * @func
25796 * @memberOf R
25797 * @since v0.18.0
25798 * @category Object
25799 * @typedefn Idx = String | Int | Symbol
25800 * @sig a -> [Idx] -> {a} -> a
25801 * @param {*} d The default value.
25802 * @param {Array} p The path to use.
25803 * @param {Object} obj The object to retrieve the nested property from.
25804 * @return {*} The data at `path` of the supplied object or the default value.
25805 * @example
25806 *
25807 *      R.pathOr('N/A', ['a', 'b'], {a: {b: 2}}); //=> 2
25808 *      R.pathOr('N/A', ['a', 'b'], {c: {b: 2}}); //=> "N/A"
25809 */
25810
25811
25812var pathOr =
25813/*#__PURE__*/
25814_curry3(function pathOr(d, p, obj) {
25815  return defaultTo(d, path(p, obj));
25816});
25817
25818module.exports = pathOr;
25819
25820/***/ }),
25821
vendor: 1,243 bytes, lines 25822-25866
25822/***/ "./node_modules/ramda/src/pathSatisfies.js":
25823/*!*************************************************!*\
25824  !*** ./node_modules/ramda/src/pathSatisfies.js ***!
25825  \*************************************************/
25826/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25827
25828var _curry3 =
25829/*#__PURE__*/
25830__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
25831
25832var path =
25833/*#__PURE__*/
25834__webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
25835/**
25836 * Returns `true` if the specified object property at given path satisfies the
25837 * given predicate; `false` otherwise.
25838 *
25839 * @func
25840 * @memberOf R
25841 * @since v0.19.0
25842 * @category Logic
25843 * @typedefn Idx = String | Int | Symbol
25844 * @sig (a -> Boolean) -> [Idx] -> {a} -> Boolean
25845 * @param {Function} pred
25846 * @param {Array} propPath
25847 * @param {*} obj
25848 * @return {Boolean}
25849 * @see R.propSatisfies, R.path
25850 * @example
25851 *
25852 *      R.pathSatisfies(y => y > 0, ['x', 'y'], {x: {y: 2}}); //=> true
25853 *      R.pathSatisfies(R.is(Object), [], {x: {y: 2}}); //=> true
25854 */
25855
25856
25857var pathSatisfies =
25858/*#__PURE__*/
25859_curry3(function pathSatisfies(pred, propPath, obj) {
25860  return pred(path(propPath, obj));
25861});
25862
25863module.exports = pathSatisfies;
25864
25865/***/ }),
25866
vendor: 1,645 bytes, lines 25867-25929
25867/***/ "./node_modules/ramda/src/paths.js":
25868/*!*****************************************!*\
25869  !*** ./node_modules/ramda/src/paths.js ***!
25870  \*****************************************/
25871/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25872
25873var _curry2 =
25874/*#__PURE__*/
25875__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25876
25877var _isInteger =
25878/*#__PURE__*/
25879__webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
25880
25881var nth =
25882/*#__PURE__*/
25883__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
25884/**
25885 * Retrieves the values at given paths of an object.
25886 *
25887 * @func
25888 * @memberOf R
25889 * @since v0.27.1
25890 * @category Object
25891 * @typedefn Idx = [String | Int | Symbol]
25892 * @sig [Idx] -> {a} -> [a | Undefined]
25893 * @param {Array} pathsArray The array of paths to be fetched.
25894 * @param {Object} obj The object to retrieve the nested properties from.
25895 * @return {Array} A list consisting of values at paths specified by "pathsArray".
25896 * @see R.path
25897 * @example
25898 *
25899 *      R.paths([['a', 'b'], ['p', 0, 'q']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, 3]
25900 *      R.paths([['a', 'b'], ['p', 'r']], {a: {b: 2}, p: [{q: 3}]}); //=> [2, undefined]
25901 */
25902
25903
25904var paths =
25905/*#__PURE__*/
25906_curry2(function paths(pathsArray, obj) {
25907  return pathsArray.map(function (paths) {
25908    var val = obj;
25909    var idx = 0;
25910    var p;
25911
25912    while (idx < paths.length) {
25913      if (val == null) {
25914        return;
25915      }
25916
25917      p = paths[idx];
25918      val = _isInteger(p) ? nth(p, val) : val[p];
25919      idx += 1;
25920    }
25921
25922    return val;
25923  });
25924});
25925
25926module.exports = paths;
25927
25928/***/ }),
25929
vendor: 1,280 bytes, lines 25930-25979
25930/***/ "./node_modules/ramda/src/pick.js":
25931/*!****************************************!*\
25932  !*** ./node_modules/ramda/src/pick.js ***!
25933  \****************************************/
25934/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25935
25936var _curry2 =
25937/*#__PURE__*/
25938__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25939/**
25940 * Returns a partial copy of an object containing only the keys specified. If
25941 * the key does not exist, the property is ignored.
25942 *
25943 * @func
25944 * @memberOf R
25945 * @since v0.1.0
25946 * @category Object
25947 * @sig [k] -> {k: v} -> {k: v}
25948 * @param {Array} names an array of String property names to copy onto a new object
25949 * @param {Object} obj The object to copy from
25950 * @return {Object} A new object with only properties from `names` on it.
25951 * @see R.omit, R.props
25952 * @example
25953 *
25954 *      R.pick(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
25955 *      R.pick(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1}
25956 */
25957
25958
25959var pick =
25960/*#__PURE__*/
25961_curry2(function pick(names, obj) {
25962  var result = {};
25963  var idx = 0;
25964
25965  while (idx < names.length) {
25966    if (names[idx] in obj) {
25967      result[names[idx]] = obj[names[idx]];
25968    }
25969
25970    idx += 1;
25971  }
25972
25973  return result;
25974});
25975
25976module.exports = pick;
25977
25978/***/ }),
25979
vendor: 1,301 bytes, lines 25980-26028
25980/***/ "./node_modules/ramda/src/pickAll.js":
25981/*!*******************************************!*\
25982  !*** ./node_modules/ramda/src/pickAll.js ***!
25983  \*******************************************/
25984/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
25985
25986var _curry2 =
25987/*#__PURE__*/
25988__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
25989/**
25990 * Similar to `pick` except that this one includes a `key: undefined` pair for
25991 * properties that don't exist.
25992 *
25993 * @func
25994 * @memberOf R
25995 * @since v0.1.0
25996 * @category Object
25997 * @sig [k] -> {k: v} -> {k: v}
25998 * @param {Array} names an array of String property names to copy onto a new object
25999 * @param {Object} obj The object to copy from
26000 * @return {Object} A new object with only properties from `names` on it.
26001 * @see R.pick
26002 * @example
26003 *
26004 *      R.pickAll(['a', 'd'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, d: 4}
26005 *      R.pickAll(['a', 'e', 'f'], {a: 1, b: 2, c: 3, d: 4}); //=> {a: 1, e: undefined, f: undefined}
26006 */
26007
26008
26009var pickAll =
26010/*#__PURE__*/
26011_curry2(function pickAll(names, obj) {
26012  var result = {};
26013  var idx = 0;
26014  var len = names.length;
26015
26016  while (idx < len) {
26017    var name = names[idx];
26018    result[name] = obj[name];
26019    idx += 1;
26020  }
26021
26022  return result;
26023});
26024
26025module.exports = pickAll;
26026
26027/***/ }),
26028
vendor: 1,304 bytes, lines 26029-26077
26029/***/ "./node_modules/ramda/src/pickBy.js":
26030/*!******************************************!*\
26031  !*** ./node_modules/ramda/src/pickBy.js ***!
26032  \******************************************/
26033/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26034
26035var _curry2 =
26036/*#__PURE__*/
26037__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26038/**
26039 * Returns a partial copy of an object containing only the keys that satisfy
26040 * the supplied predicate.
26041 *
26042 * @func
26043 * @memberOf R
26044 * @since v0.8.0
26045 * @category Object
26046 * @sig ((v, k) -> Boolean) -> {k: v} -> {k: v}
26047 * @param {Function} pred A predicate to determine whether or not a key
26048 *        should be included on the output object.
26049 * @param {Object} obj The object to copy from
26050 * @return {Object} A new object with only properties that satisfy `pred`
26051 *         on it.
26052 * @see R.pick, R.filter
26053 * @example
26054 *
26055 *      const isUpperCase = (val, key) => key.toUpperCase() === key;
26056 *      R.pickBy(isUpperCase, {a: 1, b: 2, A: 3, B: 4}); //=> {A: 3, B: 4}
26057 */
26058
26059
26060var pickBy =
26061/*#__PURE__*/
26062_curry2(function pickBy(test, obj) {
26063  var result = {};
26064
26065  for (var prop in obj) {
26066    if (test(obj[prop], prop, obj)) {
26067      result[prop] = obj[prop];
26068    }
26069  }
26070
26071  return result;
26072});
26073
26074module.exports = pickBy;
26075
26076/***/ }),
26077
vendor: 1,626 bytes, lines 26078-26136
26078/***/ "./node_modules/ramda/src/pipe.js":
26079/*!****************************************!*\
26080  !*** ./node_modules/ramda/src/pipe.js ***!
26081  \****************************************/
26082/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26083
26084var _arity =
26085/*#__PURE__*/
26086__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
26087
26088var _pipe =
26089/*#__PURE__*/
26090__webpack_require__(/*! ./internal/_pipe.js */ "./node_modules/ramda/src/internal/_pipe.js");
26091
26092var reduce =
26093/*#__PURE__*/
26094__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
26095
26096var tail =
26097/*#__PURE__*/
26098__webpack_require__(/*! ./tail.js */ "./node_modules/ramda/src/tail.js");
26099/**
26100 * Performs left-to-right function composition. The first argument may have
26101 * any arity; the remaining arguments must be unary.
26102 *
26103 * In some libraries this function is named `sequence`.
26104 *
26105 * **Note:** The result of pipe is not automatically curried.
26106 *
26107 * @func
26108 * @memberOf R
26109 * @since v0.1.0
26110 * @category Function
26111 * @sig (((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)) -> ((a, b, ..., n) -> z)
26112 * @param {...Function} functions
26113 * @return {Function}
26114 * @see R.compose
26115 * @example
26116 *
26117 *      const f = R.pipe(Math.pow, R.negate, R.inc);
26118 *
26119 *      f(3, 4); // -(3^4) + 1
26120 * @symb R.pipe(f, g, h)(a, b) = h(g(f(a, b)))
26121 * @symb R.pipe(f, g, h)(a)(b) = h(g(f(a)))(b)
26122 */
26123
26124
26125function pipe() {
26126  if (arguments.length === 0) {
26127    throw new Error('pipe requires at least one argument');
26128  }
26129
26130  return _arity(arguments[0].length, reduce(_pipe, arguments[0], tail(arguments)));
26131}
26132
26133module.exports = pipe;
26134
26135/***/ }),
26136
vendor: 2,252 bytes, lines 26137-26211
26137/***/ "./node_modules/ramda/src/pipeWith.js":
26138/*!********************************************!*\
26139  !*** ./node_modules/ramda/src/pipeWith.js ***!
26140  \********************************************/
26141/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26142
26143var _arity =
26144/*#__PURE__*/
26145__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
26146
26147var _curry2 =
26148/*#__PURE__*/
26149__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26150
26151var head =
26152/*#__PURE__*/
26153__webpack_require__(/*! ./head.js */ "./node_modules/ramda/src/head.js");
26154
26155var _reduce =
26156/*#__PURE__*/
26157__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
26158
26159var tail =
26160/*#__PURE__*/
26161__webpack_require__(/*! ./tail.js */ "./node_modules/ramda/src/tail.js");
26162
26163var identity =
26164/*#__PURE__*/
26165__webpack_require__(/*! ./identity.js */ "./node_modules/ramda/src/identity.js");
26166/**
26167 * Performs left-to-right function composition using transforming function. The first function may have
26168 * any arity; the remaining functions must be unary.
26169 *
26170 * **Note:** The result of pipeWith is not automatically curried. Transforming function is not used on the
26171 * first argument.
26172 *
26173 * @func
26174 * @memberOf R
26175 * @since v0.26.0
26176 * @category Function
26177 * @sig ((* -> *), [((a, b, ..., n) -> o), (o -> p), ..., (x -> y), (y -> z)]) -> ((a, b, ..., n) -> z)
26178 * @param {Function} transformer The transforming function
26179 * @param {Array} functions The functions to pipe
26180 * @return {Function}
26181 * @see R.composeWith, R.pipe
26182 * @example
26183 *
26184 *      const pipeWhileNotNil = R.pipeWith((f, res) => R.isNil(res) ? res : f(res));
26185 *      const f = pipeWhileNotNil([Math.pow, R.negate, R.inc])
26186 *
26187 *      f(3, 4); // -(3^4) + 1
26188 * @symb R.pipeWith(f)([g, h, i])(...args) = f(i, f(h, g(...args)))
26189 */
26190
26191
26192var pipeWith =
26193/*#__PURE__*/
26194_curry2(function pipeWith(xf, list) {
26195  if (list.length <= 0) {
26196    return identity;
26197  }
26198
26199  var headList = head(list);
26200  var tailList = tail(list);
26201  return _arity(headList.length, function () {
26202    return _reduce(function (result, f) {
26203      return xf.call(this, f, result);
26204    }, headList.apply(this, arguments), tailList);
26205  });
26206});
26207
26208module.exports = pipeWith;
26209
26210/***/ }),
26211
vendor: 1,715 bytes, lines 26212-26267
26212/***/ "./node_modules/ramda/src/pluck.js":
26213/*!*****************************************!*\
26214  !*** ./node_modules/ramda/src/pluck.js ***!
26215  \*****************************************/
26216/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26217
26218var _curry2 =
26219/*#__PURE__*/
26220__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26221
26222var map =
26223/*#__PURE__*/
26224__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
26225
26226var prop =
26227/*#__PURE__*/
26228__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
26229/**
26230 * Returns a new list by plucking the same named property off all objects in
26231 * the list supplied.
26232 *
26233 * `pluck` will work on
26234 * any [functor](https://github.com/fantasyland/fantasy-land#functor) in
26235 * addition to arrays, as it is equivalent to `R.map(R.prop(k), f)`.
26236 *
26237 * @func
26238 * @memberOf R
26239 * @since v0.1.0
26240 * @category List
26241 * @sig Functor f => k -> f {k: v} -> f v
26242 * @param {Number|String} key The key name to pluck off of each object.
26243 * @param {Array} f The array or functor to consider.
26244 * @return {Array} The list of values for the given key.
26245 * @see R.project, R.prop, R.props
26246 * @example
26247 *
26248 *      var getAges = R.pluck('age');
26249 *      getAges([{name: 'fred', age: 29}, {name: 'wilma', age: 27}]); //=> [29, 27]
26250 *
26251 *      R.pluck(0, [[1, 2], [3, 4]]);               //=> [1, 3]
26252 *      R.pluck('val', {a: {val: 3}, b: {val: 5}}); //=> {a: 3, b: 5}
26253 * @symb R.pluck('x', [{x: 1, y: 2}, {x: 3, y: 4}, {x: 5, y: 6}]) = [1, 3, 5]
26254 * @symb R.pluck(0, [[1, 2], [3, 4], [5, 6]]) = [1, 3, 5]
26255 */
26256
26257
26258var pluck =
26259/*#__PURE__*/
26260_curry2(function pluck(p, list) {
26261  return map(prop(p), list);
26262});
26263
26264module.exports = pluck;
26265
26266/***/ }),
26267
vendor: 1,127 bytes, lines 26268-26309
26268/***/ "./node_modules/ramda/src/prepend.js":
26269/*!*******************************************!*\
26270  !*** ./node_modules/ramda/src/prepend.js ***!
26271  \*******************************************/
26272/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26273
26274var _concat =
26275/*#__PURE__*/
26276__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
26277
26278var _curry2 =
26279/*#__PURE__*/
26280__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26281/**
26282 * Returns a new list with the given element at the front, followed by the
26283 * contents of the list.
26284 *
26285 * @func
26286 * @memberOf R
26287 * @since v0.1.0
26288 * @category List
26289 * @sig a -> [a] -> [a]
26290 * @param {*} el The item to add to the head of the output list.
26291 * @param {Array} list The array to add to the tail of the output list.
26292 * @return {Array} A new array.
26293 * @see R.append
26294 * @example
26295 *
26296 *      R.prepend('fee', ['fi', 'fo', 'fum']); //=> ['fee', 'fi', 'fo', 'fum']
26297 */
26298
26299
26300var prepend =
26301/*#__PURE__*/
26302_curry2(function prepend(el, list) {
26303  return _concat([el], list);
26304});
26305
26306module.exports = prepend;
26307
26308/***/ }),
26309
vendor: 900 bytes, lines 26310-26346
26310/***/ "./node_modules/ramda/src/product.js":
26311/*!*******************************************!*\
26312  !*** ./node_modules/ramda/src/product.js ***!
26313  \*******************************************/
26314/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26315
26316var multiply =
26317/*#__PURE__*/
26318__webpack_require__(/*! ./multiply.js */ "./node_modules/ramda/src/multiply.js");
26319
26320var reduce =
26321/*#__PURE__*/
26322__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
26323/**
26324 * Multiplies together all the elements of a list.
26325 *
26326 * @func
26327 * @memberOf R
26328 * @since v0.1.0
26329 * @category Math
26330 * @sig [Number] -> Number
26331 * @param {Array} list An array of numbers
26332 * @return {Number} The product of all the numbers in the list.
26333 * @see R.reduce
26334 * @example
26335 *
26336 *      R.product([2,4,6,8,100,1]); //=> 38400
26337 */
26338
26339
26340var product =
26341/*#__PURE__*/
26342reduce(multiply, 1);
26343module.exports = product;
26344
26345/***/ }),
26346
vendor: 1,529 bytes, lines 26347-26397
26347/***/ "./node_modules/ramda/src/project.js":
26348/*!*******************************************!*\
26349  !*** ./node_modules/ramda/src/project.js ***!
26350  \*******************************************/
26351/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26352
26353var _map =
26354/*#__PURE__*/
26355__webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/src/internal/_map.js");
26356
26357var identity =
26358/*#__PURE__*/
26359__webpack_require__(/*! ./identity.js */ "./node_modules/ramda/src/identity.js");
26360
26361var pickAll =
26362/*#__PURE__*/
26363__webpack_require__(/*! ./pickAll.js */ "./node_modules/ramda/src/pickAll.js");
26364
26365var useWith =
26366/*#__PURE__*/
26367__webpack_require__(/*! ./useWith.js */ "./node_modules/ramda/src/useWith.js");
26368/**
26369 * Reasonable analog to SQL `select` statement.
26370 *
26371 * @func
26372 * @memberOf R
26373 * @since v0.1.0
26374 * @category Object
26375 * @category Relation
26376 * @sig [k] -> [{k: v}] -> [{k: v}]
26377 * @param {Array} props The property names to project
26378 * @param {Array} objs The objects to query
26379 * @return {Array} An array of objects with just the `props` properties.
26380 * @see R.pluck, R.props, R.prop
26381 * @example
26382 *
26383 *      const abby = {name: 'Abby', age: 7, hair: 'blond', grade: 2};
26384 *      const fred = {name: 'Fred', age: 12, hair: 'brown', grade: 7};
26385 *      const kids = [abby, fred];
26386 *      R.project(['name', 'grade'], kids); //=> [{name: 'Abby', grade: 2}, {name: 'Fred', grade: 7}]
26387 */
26388
26389
26390var project =
26391/*#__PURE__*/
26392useWith(_map, [pickAll, identity]); // passing `identity` gives correct arity
26393
26394module.exports = project;
26395
26396/***/ }),
26397
vendor: 2,152 bytes, lines 26398-26459
26398/***/ "./node_modules/ramda/src/promap.js":
26399/*!******************************************!*\
26400  !*** ./node_modules/ramda/src/promap.js ***!
26401  \******************************************/
26402/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26403
26404var _curry3 =
26405/*#__PURE__*/
26406__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26407
26408var _dispatchable =
26409/*#__PURE__*/
26410__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
26411
26412var _promap =
26413/*#__PURE__*/
26414__webpack_require__(/*! ./internal/_promap.js */ "./node_modules/ramda/src/internal/_promap.js");
26415
26416var _xpromap =
26417/*#__PURE__*/
26418__webpack_require__(/*! ./internal/_xpromap.js */ "./node_modules/ramda/src/internal/_xpromap.js");
26419/**
26420 * Takes two functions as pre- and post- processors respectively for a third function,
26421 * i.e. `promap(f, g, h)(x) === g(h(f(x)))`.
26422 *
26423 * Dispatches to the `promap` method of the third argument, if present,
26424 * according to the [FantasyLand Profunctor spec](https://github.com/fantasyland/fantasy-land#profunctor).
26425 *
26426 * Acts as a transducer if a transformer is given in profunctor position.
26427 *
26428 * @func
26429 * @memberOf R
26430 * @since v0.28.0
26431 * @category Function
26432 * @sig (a -> b) -> (c -> d) -> (b -> c) -> (a -> d)
26433 * @sig Profunctor p => (a -> b) -> (c -> d) -> p b c -> p a d
26434 * @param {Function} f The preprocessor function, a -> b
26435 * @param {Function} g The postprocessor function, c -> d
26436 * @param {Profunctor} profunctor The profunctor instance to be promapped, e.g. b -> c
26437 * @return {Profunctor} The new profunctor instance, e.g. a -> d
26438 * @see R.transduce
26439 * @example
26440 *
26441 *      const decodeChar = R.promap(s => s.charCodeAt(), String.fromCharCode, R.add(-8))
26442 *      const decodeString = R.promap(R.split(''), R.join(''), R.map(decodeChar))
26443 *      decodeString("ziuli") //=> "ramda"
26444 *
26445 * @symb R.promap(f, g, h) = x => g(h(f(x)))
26446 * @symb R.promap(f, g, profunctor) = profunctor.promap(f, g)
26447 */
26448
26449
26450var promap =
26451/*#__PURE__*/
26452_curry3(
26453/*#__PURE__*/
26454_dispatchable(['fantasy-land/promap', 'promap'], _xpromap, _promap));
26455
26456module.exports = promap;
26457
26458/***/ }),
26459
vendor: 1,435 bytes, lines 26460-26513
26460/***/ "./node_modules/ramda/src/prop.js":
26461/*!****************************************!*\
26462  !*** ./node_modules/ramda/src/prop.js ***!
26463  \****************************************/
26464/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26465
26466var _curry2 =
26467/*#__PURE__*/
26468__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26469
26470var _isInteger =
26471/*#__PURE__*/
26472__webpack_require__(/*! ./internal/_isInteger.js */ "./node_modules/ramda/src/internal/_isInteger.js");
26473
26474var nth =
26475/*#__PURE__*/
26476__webpack_require__(/*! ./nth.js */ "./node_modules/ramda/src/nth.js");
26477/**
26478 * Returns a function that when supplied an object returns the indicated
26479 * property of that object, if it exists.
26480 *
26481 * @func
26482 * @memberOf R
26483 * @since v0.1.0
26484 * @category Object
26485 * @typedefn Idx = String | Int | Symbol
26486 * @sig Idx -> {s: a} -> a | Undefined
26487 * @param {String|Number} p The property name or array index
26488 * @param {Object} obj The object to query
26489 * @return {*} The value at `obj.p`.
26490 * @see R.path, R.props, R.pluck, R.project, R.nth
26491 * @example
26492 *
26493 *      R.prop('x', {x: 100}); //=> 100
26494 *      R.prop('x', {}); //=> undefined
26495 *      R.prop(0, [100]); //=> 100
26496 *      R.compose(R.inc, R.prop('x'))({ x: 3 }) //=> 4
26497 */
26498
26499
26500var prop =
26501/*#__PURE__*/
26502_curry2(function prop(p, obj) {
26503  if (obj == null) {
26504    return;
26505  }
26506
26507  return _isInteger(p) ? nth(p, obj) : obj[p];
26508});
26509
26510module.exports = prop;
26511
26512/***/ }),
26513
vendor: 1,613 bytes, lines 26514-26567
26514/***/ "./node_modules/ramda/src/propEq.js":
26515/*!******************************************!*\
26516  !*** ./node_modules/ramda/src/propEq.js ***!
26517  \******************************************/
26518/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26519
26520var _curry3 =
26521/*#__PURE__*/
26522__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26523
26524var prop =
26525/*#__PURE__*/
26526__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
26527
26528var equals =
26529/*#__PURE__*/
26530__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
26531/**
26532 * Returns `true` if the specified object property is equal, in
26533 * [`R.equals`](#equals) terms, to the given value; `false` otherwise.
26534 * You can test multiple properties with [`R.whereEq`](#whereEq).
26535 *
26536 * @func
26537 * @memberOf R
26538 * @since v0.1.0
26539 * @category Relation
26540 * @sig String -> a -> Object -> Boolean
26541 * @param {String} name
26542 * @param {*} val
26543 * @param {*} obj
26544 * @return {Boolean}
26545 * @see R.whereEq, R.propSatisfies, R.equals
26546 * @example
26547 *
26548 *      const abby = {name: 'Abby', age: 7, hair: 'blond'};
26549 *      const fred = {name: 'Fred', age: 12, hair: 'brown'};
26550 *      const rusty = {name: 'Rusty', age: 10, hair: 'brown'};
26551 *      const alois = {name: 'Alois', age: 15, disposition: 'surly'};
26552 *      const kids = [abby, fred, rusty, alois];
26553 *      const hasBrownHair = R.propEq('hair', 'brown');
26554 *      R.filter(hasBrownHair, kids); //=> [fred, rusty]
26555 */
26556
26557
26558var propEq =
26559/*#__PURE__*/
26560_curry3(function propEq(name, val, obj) {
26561  return equals(val, prop(name, obj));
26562});
26563
26564module.exports = propEq;
26565
26566/***/ }),
26567
vendor: 1,240 bytes, lines 26568-26616
26568/***/ "./node_modules/ramda/src/propIs.js":
26569/*!******************************************!*\
26570  !*** ./node_modules/ramda/src/propIs.js ***!
26571  \******************************************/
26572/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26573
26574var _curry3 =
26575/*#__PURE__*/
26576__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26577
26578var prop =
26579/*#__PURE__*/
26580__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
26581
26582var is =
26583/*#__PURE__*/
26584__webpack_require__(/*! ./is.js */ "./node_modules/ramda/src/is.js");
26585/**
26586 * Returns `true` if the specified object property is of the given type;
26587 * `false` otherwise.
26588 *
26589 * @func
26590 * @memberOf R
26591 * @since v0.16.0
26592 * @category Type
26593 * @sig Type -> String -> Object -> Boolean
26594 * @param {Function} type
26595 * @param {String} name
26596 * @param {*} obj
26597 * @return {Boolean}
26598 * @see R.is, R.propSatisfies
26599 * @example
26600 *
26601 *      R.propIs(Number, 'x', {x: 1, y: 2});  //=> true
26602 *      R.propIs(Number, 'x', {x: 'foo'});    //=> false
26603 *      R.propIs(Number, 'x', {});            //=> false
26604 */
26605
26606
26607var propIs =
26608/*#__PURE__*/
26609_curry3(function propIs(type, name, obj) {
26610  return is(type, prop(name, obj));
26611});
26612
26613module.exports = propIs;
26614
26615/***/ }),
26616
vendor: 1,585 bytes, lines 26617-26672
26617/***/ "./node_modules/ramda/src/propOr.js":
26618/*!******************************************!*\
26619  !*** ./node_modules/ramda/src/propOr.js ***!
26620  \******************************************/
26621/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26622
26623var _curry3 =
26624/*#__PURE__*/
26625__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26626
26627var defaultTo =
26628/*#__PURE__*/
26629__webpack_require__(/*! ./defaultTo.js */ "./node_modules/ramda/src/defaultTo.js");
26630
26631var prop =
26632/*#__PURE__*/
26633__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
26634/**
26635 * Return the specified property of the given non-null object if the property
26636 * is present and it's value is not `null`, `undefined` or `NaN`.
26637 *
26638 * Otherwise the first argument is returned.
26639 *
26640 * @func
26641 * @memberOf R
26642 * @since v0.6.0
26643 * @category Object
26644 * @sig a -> String -> Object -> a
26645 * @param {*} val The default value.
26646 * @param {String} p The name of the property to return.
26647 * @param {Object} obj The object to query.
26648 * @return {*} The value of given property of the supplied object or the default value.
26649 * @example
26650 *
26651 *      const alice = {
26652 *        name: 'ALICE',
26653 *        age: 101
26654 *      };
26655 *      const favorite = R.prop('favoriteLibrary');
26656 *      const favoriteWithDefault = R.propOr('Ramda', 'favoriteLibrary');
26657 *
26658 *      favorite(alice);  //=> undefined
26659 *      favoriteWithDefault(alice);  //=> 'Ramda'
26660 */
26661
26662
26663var propOr =
26664/*#__PURE__*/
26665_curry3(function propOr(val, p, obj) {
26666  return defaultTo(val, prop(p, obj));
26667});
26668
26669module.exports = propOr;
26670
26671/***/ }),
26672
vendor: 1,180 bytes, lines 26673-26716
26673/***/ "./node_modules/ramda/src/propSatisfies.js":
26674/*!*************************************************!*\
26675  !*** ./node_modules/ramda/src/propSatisfies.js ***!
26676  \*************************************************/
26677/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26678
26679var _curry3 =
26680/*#__PURE__*/
26681__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26682
26683var prop =
26684/*#__PURE__*/
26685__webpack_require__(/*! ./prop.js */ "./node_modules/ramda/src/prop.js");
26686/**
26687 * Returns `true` if the specified object property satisfies the given
26688 * predicate; `false` otherwise. You can test multiple properties with
26689 * [`R.where`](#where).
26690 *
26691 * @func
26692 * @memberOf R
26693 * @since v0.16.0
26694 * @category Logic
26695 * @sig (a -> Boolean) -> String -> {String: a} -> Boolean
26696 * @param {Function} pred
26697 * @param {String} name
26698 * @param {*} obj
26699 * @return {Boolean}
26700 * @see R.where, R.propEq, R.propIs
26701 * @example
26702 *
26703 *      R.propSatisfies(x => x > 0, 'x', {x: 1, y: 2}); //=> true
26704 */
26705
26706
26707var propSatisfies =
26708/*#__PURE__*/
26709_curry3(function propSatisfies(pred, name, obj) {
26710  return pred(prop(name, obj));
26711});
26712
26713module.exports = propSatisfies;
26714
26715/***/ }),
26716
vendor: 1,347 bytes, lines 26717-26764
26717/***/ "./node_modules/ramda/src/props.js":
26718/*!*****************************************!*\
26719  !*** ./node_modules/ramda/src/props.js ***!
26720  \*****************************************/
26721/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26722
26723var _curry2 =
26724/*#__PURE__*/
26725__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26726
26727var path =
26728/*#__PURE__*/
26729__webpack_require__(/*! ./path.js */ "./node_modules/ramda/src/path.js");
26730/**
26731 * Acts as multiple `prop`: array of keys in, array of values out. Preserves
26732 * order.
26733 *
26734 * @func
26735 * @memberOf R
26736 * @since v0.1.0
26737 * @category Object
26738 * @sig [k] -> {k: v} -> [v]
26739 * @param {Array} ps The property names to fetch
26740 * @param {Object} obj The object to query
26741 * @return {Array} The corresponding values or partially applied function.
26742 * @see R.prop, R.pluck, R.project
26743 * @example
26744 *
26745 *      R.props(['x', 'y'], {x: 1, y: 2}); //=> [1, 2]
26746 *      R.props(['c', 'a', 'b'], {b: 2, a: 1}); //=> [undefined, 1, 2]
26747 *
26748 *      const fullName = R.compose(R.join(' '), R.props(['first', 'last']));
26749 *      fullName({last: 'Bullet-Tooth', age: 33, first: 'Tony'}); //=> 'Tony Bullet-Tooth'
26750 */
26751
26752
26753var props =
26754/*#__PURE__*/
26755_curry2(function props(ps, obj) {
26756  return ps.map(function (p) {
26757    return path([p], obj);
26758  });
26759});
26760
26761module.exports = props;
26762
26763/***/ }),
26764
vendor: 1,305 bytes, lines 26765-26817
26765/***/ "./node_modules/ramda/src/range.js":
26766/*!*****************************************!*\
26767  !*** ./node_modules/ramda/src/range.js ***!
26768  \*****************************************/
26769/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26770
26771var _curry2 =
26772/*#__PURE__*/
26773__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
26774
26775var _isNumber =
26776/*#__PURE__*/
26777__webpack_require__(/*! ./internal/_isNumber.js */ "./node_modules/ramda/src/internal/_isNumber.js");
26778/**
26779 * Returns a list of numbers from `from` (inclusive) to `to` (exclusive).
26780 *
26781 * @func
26782 * @memberOf R
26783 * @since v0.1.0
26784 * @category List
26785 * @sig Number -> Number -> [Number]
26786 * @param {Number} from The first number in the list.
26787 * @param {Number} to One more than the last number in the list.
26788 * @return {Array} The list of numbers in the set `[a, b)`.
26789 * @example
26790 *
26791 *      R.range(1, 5);    //=> [1, 2, 3, 4]
26792 *      R.range(50, 53);  //=> [50, 51, 52]
26793 */
26794
26795
26796var range =
26797/*#__PURE__*/
26798_curry2(function range(from, to) {
26799  if (!(_isNumber(from) && _isNumber(to))) {
26800    throw new TypeError('Both arguments to range must be numbers');
26801  }
26802
26803  var result = [];
26804  var n = from;
26805
26806  while (n < to) {
26807    result.push(n);
26808    n += 1;
26809  }
26810
26811  return result;
26812});
26813
26814module.exports = range;
26815
26816/***/ }),
26817
vendor: 2,471 bytes, lines 26818-26886
26818/***/ "./node_modules/ramda/src/reduce.js":
26819/*!******************************************!*\
26820  !*** ./node_modules/ramda/src/reduce.js ***!
26821  \******************************************/
26822/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26823
26824var _curry3 =
26825/*#__PURE__*/
26826__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26827
26828var _reduce =
26829/*#__PURE__*/
26830__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
26831/**
26832 * Returns a single item by iterating through the list, successively calling
26833 * the iterator function and passing it an accumulator value and the current
26834 * value from the array, and then passing the result to the next call.
26835 *
26836 * The iterator function receives two values: *(acc, value)*. It may use
26837 * [`R.reduced`](#reduced) to shortcut the iteration.
26838 *
26839 * The arguments' order of [`reduceRight`](#reduceRight)'s iterator function
26840 * is *(value, acc)*.
26841 *
26842 * Note: `R.reduce` does not skip deleted or unassigned indices (sparse
26843 * arrays), unlike the native `Array.prototype.reduce` method. For more details
26844 * on this behavior, see:
26845 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduce#Description
26846 *
26847 * Dispatches to the `reduce` method of the third argument, if present. When
26848 * doing so, it is up to the user to handle the [`R.reduced`](#reduced)
26849 * shortcuting, as this is not implemented by `reduce`.
26850 *
26851 * @func
26852 * @memberOf R
26853 * @since v0.1.0
26854 * @category List
26855 * @sig ((a, b) -> a) -> a -> [b] -> a
26856 * @param {Function} fn The iterator function. Receives two values, the accumulator and the
26857 *        current element from the array.
26858 * @param {*} acc The accumulator value.
26859 * @param {Array} list The list to iterate over.
26860 * @return {*} The final, accumulated value.
26861 * @see R.reduced, R.addIndex, R.reduceRight
26862 * @example
26863 *
26864 *      R.reduce(R.subtract, 0, [1, 2, 3, 4]) // => ((((0 - 1) - 2) - 3) - 4) = -10
26865 *      //          -               -10
26866 *      //         / \              / \
26867 *      //        -   4           -6   4
26868 *      //       / \              / \
26869 *      //      -   3   ==>     -3   3
26870 *      //     / \              / \
26871 *      //    -   2           -1   2
26872 *      //   / \              / \
26873 *      //  0   1            0   1
26874 *
26875 * @symb R.reduce(f, a, [b, c, d]) = f(f(f(a, b), c), d)
26876 */
26877
26878
26879var reduce =
26880/*#__PURE__*/
26881_curry3(_reduce);
26882
26883module.exports = reduce;
26884
26885/***/ }),
26886
vendor: 3,431 bytes, lines 26887-26987
26887/***/ "./node_modules/ramda/src/reduceBy.js":
26888/*!********************************************!*\
26889  !*** ./node_modules/ramda/src/reduceBy.js ***!
26890  \********************************************/
26891/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26892
26893var _clone =
26894/*#__PURE__*/
26895__webpack_require__(/*! ./internal/_clone.js */ "./node_modules/ramda/src/internal/_clone.js");
26896
26897var _curryN =
26898/*#__PURE__*/
26899__webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
26900
26901var _dispatchable =
26902/*#__PURE__*/
26903__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
26904
26905var _has =
26906/*#__PURE__*/
26907__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
26908
26909var _reduce =
26910/*#__PURE__*/
26911__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
26912
26913var _reduced =
26914/*#__PURE__*/
26915__webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
26916
26917var _xreduceBy =
26918/*#__PURE__*/
26919__webpack_require__(/*! ./internal/_xreduceBy.js */ "./node_modules/ramda/src/internal/_xreduceBy.js");
26920/**
26921 * Groups the elements of the list according to the result of calling
26922 * the String-returning function `keyFn` on each element and reduces the elements
26923 * of each group to a single value via the reducer function `valueFn`.
26924 *
26925 * The value function receives two values: *(acc, value)*. It may use
26926 * [`R.reduced`](#reduced) to short circuit the iteration.
26927 *
26928 * This function is basically a more general [`groupBy`](#groupBy) function.
26929 *
26930 * Acts as a transducer if a transformer is given in list position.
26931 *
26932 * @func
26933 * @memberOf R
26934 * @since v0.20.0
26935 * @category List
26936 * @sig ((a, b) -> a) -> a -> (b -> String) -> [b] -> {String: a}
26937 * @param {Function} valueFn The function that reduces the elements of each group to a single
26938 *        value. Receives two values, accumulator for a particular group and the current element.
26939 * @param {*} acc The (initial) accumulator value for each group.
26940 * @param {Function} keyFn The function that maps the list's element into a key.
26941 * @param {Array} list The array to group.
26942 * @return {Object} An object with the output of `keyFn` for keys, mapped to the output of
26943 *         `valueFn` for elements which produced that key when passed to `keyFn`.
26944 * @see R.groupBy, R.reduce, R.reduced
26945 * @example
26946 *
26947 *      const groupNames = (acc, {name}) => acc.concat(name)
26948 *      const toGrade = ({score}) =>
26949 *        score < 65 ? 'F' :
26950 *        score < 70 ? 'D' :
26951 *        score < 80 ? 'C' :
26952 *        score < 90 ? 'B' : 'A'
26953 *
26954 *      var students = [
26955 *        {name: 'Abby', score: 83},
26956 *        {name: 'Bart', score: 62},
26957 *        {name: 'Curt', score: 88},
26958 *        {name: 'Dora', score: 92},
26959 *      ]
26960 *
26961 *      reduceBy(groupNames, [], toGrade, students)
26962 *      //=> {"A": ["Dora"], "B": ["Abby", "Curt"], "F": ["Bart"]}
26963 */
26964
26965
26966var reduceBy =
26967/*#__PURE__*/
26968_curryN(4, [],
26969/*#__PURE__*/
26970_dispatchable([], _xreduceBy, function reduceBy(valueFn, valueAcc, keyFn, list) {
26971  return _reduce(function (acc, elt) {
26972    var key = keyFn(elt);
26973    var value = valueFn(_has(key, acc) ? acc[key] : _clone(valueAcc, [], [], false), elt);
26974
26975    if (value && value['@@transducer/reduced']) {
26976      return _reduced(acc);
26977    }
26978
26979    acc[key] = value;
26980    return acc;
26981  }, {}, list);
26982}));
26983
26984module.exports = reduceBy;
26985
26986/***/ }),
26987
vendor: 2,528 bytes, lines 26988-27064
26988/***/ "./node_modules/ramda/src/reduceRight.js":
26989/*!***********************************************!*\
26990  !*** ./node_modules/ramda/src/reduceRight.js ***!
26991  \***********************************************/
26992/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
26993
26994var _curry3 =
26995/*#__PURE__*/
26996__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
26997/**
26998 * Returns a single item by iterating through the list, successively calling
26999 * the iterator function and passing it an accumulator value and the current
27000 * value from the array, and then passing the result to the next call.
27001 *
27002 * Similar to [`reduce`](#reduce), except moves through the input list from the
27003 * right to the left.
27004 *
27005 * The iterator function receives two values: *(value, acc)*, while the arguments'
27006 * order of `reduce`'s iterator function is *(acc, value)*. `reduceRight` may use [`reduced`](#reduced)
27007 * to short circuit the iteration.
27008 *
27009 * Note: `R.reduceRight` does not skip deleted or unassigned indices (sparse
27010 * arrays), unlike the native `Array.prototype.reduceRight` method. For more details
27011 * on this behavior, see:
27012 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reduceRight#Description
27013 *
27014 * @func
27015 * @memberOf R
27016 * @since v0.1.0
27017 * @category List
27018 * @sig ((a, b) -> b) -> b -> [a] -> b
27019 * @param {Function} fn The iterator function. Receives two values, the current element from the array
27020 *        and the accumulator.
27021 * @param {*} acc The accumulator value.
27022 * @param {Array} list The list to iterate over.
27023 * @return {*} The final, accumulated value.
27024 * @see R.reduce, R.addIndex, R.reduced
27025 * @example
27026 *
27027 *      R.reduceRight(R.subtract, 0, [1, 2, 3, 4]) // => (1 - (2 - (3 - (4 - 0)))) = -2
27028 *      //    -               -2
27029 *      //   / \              / \
27030 *      //  1   -            1   3
27031 *      //     / \              / \
27032 *      //    2   -     ==>    2  -1
27033 *      //       / \              / \
27034 *      //      3   -            3   4
27035 *      //         / \              / \
27036 *      //        4   0            4   0
27037 *
27038 * @symb R.reduceRight(f, a, [b, c, d]) = f(b, f(c, f(d, a)))
27039 */
27040
27041
27042var reduceRight =
27043/*#__PURE__*/
27044_curry3(function reduceRight(fn, acc, list) {
27045  var idx = list.length - 1;
27046
27047  while (idx >= 0) {
27048    acc = fn(list[idx], acc);
27049
27050    if (acc && acc['@@transducer/reduced']) {
27051      acc = acc['@@transducer/value'];
27052      break;
27053    }
27054
27055    idx -= 1;
27056  }
27057
27058  return acc;
27059});
27060
27061module.exports = reduceRight;
27062
27063/***/ }),
27064
vendor: 2,090 bytes, lines 27065-27125
27065/***/ "./node_modules/ramda/src/reduceWhile.js":
27066/*!***********************************************!*\
27067  !*** ./node_modules/ramda/src/reduceWhile.js ***!
27068  \***********************************************/
27069/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27070
27071var _curryN =
27072/*#__PURE__*/
27073__webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
27074
27075var _reduce =
27076/*#__PURE__*/
27077__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
27078
27079var _reduced =
27080/*#__PURE__*/
27081__webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
27082/**
27083 * Like [`reduce`](#reduce), `reduceWhile` returns a single item by iterating
27084 * through the list, successively calling the iterator function. `reduceWhile`
27085 * also takes a predicate that is evaluated before each step. If the predicate
27086 * returns `false`, it "short-circuits" the iteration and returns the current
27087 * value of the accumulator. `reduceWhile` may alternatively be short-circuited
27088 * via [`reduced`](#reduced).
27089 *
27090 * @func
27091 * @memberOf R
27092 * @since v0.22.0
27093 * @category List
27094 * @sig ((a, b) -> Boolean) -> ((a, b) -> a) -> a -> [b] -> a
27095 * @param {Function} pred The predicate. It is passed the accumulator and the
27096 *        current element.
27097 * @param {Function} fn The iterator function. Receives two values, the
27098 *        accumulator and the current element.
27099 * @param {*} a The accumulator value.
27100 * @param {Array} list The list to iterate over.
27101 * @return {*} The final, accumulated value.
27102 * @see R.reduce, R.reduced
27103 * @example
27104 *
27105 *      const isOdd = (acc, x) => x % 2 !== 0;
27106 *      const xs = [1, 3, 5, 60, 777, 800];
27107 *      R.reduceWhile(isOdd, R.add, 0, xs); //=> 9
27108 *
27109 *      const ys = [2, 4, 6]
27110 *      R.reduceWhile(isOdd, R.add, 111, ys); //=> 111
27111 */
27112
27113
27114var reduceWhile =
27115/*#__PURE__*/
27116_curryN(4, [], function _reduceWhile(pred, fn, a, list) {
27117  return _reduce(function (acc, x) {
27118    return pred(acc, x) ? fn(acc, x) : _reduced(acc);
27119  }, a, list);
27120});
27121
27122module.exports = reduceWhile;
27123
27124/***/ }),
27125
vendor: 1,432 bytes, lines 27126-27175
27126/***/ "./node_modules/ramda/src/reduced.js":
27127/*!*******************************************!*\
27128  !*** ./node_modules/ramda/src/reduced.js ***!
27129  \*******************************************/
27130/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27131
27132var _curry1 =
27133/*#__PURE__*/
27134__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
27135
27136var _reduced =
27137/*#__PURE__*/
27138__webpack_require__(/*! ./internal/_reduced.js */ "./node_modules/ramda/src/internal/_reduced.js");
27139/**
27140 * Returns a value wrapped to indicate that it is the final value of the reduce
27141 * and transduce functions. The returned value should be considered a black
27142 * box: the internal structure is not guaranteed to be stable.
27143 *
27144 * This optimization is available to the below functions:
27145 * - [`reduce`](#reduce)
27146 * - [`reduceWhile`](#reduceWhile)
27147 * - [`reduceBy`](#reduceBy)
27148 * - [`reduceRight`](#reduceRight)
27149 * - [`transduce`](#transduce)
27150 *
27151 * @func
27152 * @memberOf R
27153 * @since v0.15.0
27154 * @category List
27155 * @sig a -> *
27156 * @param {*} x The final value of the reduce.
27157 * @return {*} The wrapped value.
27158 * @see R.reduce, R.reduceWhile, R.reduceBy, R.reduceRight, R.transduce
27159 * @example
27160 *
27161 *     R.reduce(
27162 *       (acc, item) => item > 3 ? R.reduced(acc) : acc.concat(item),
27163 *       [],
27164 *       [1, 2, 3, 4, 5]) // [1, 2, 3]
27165 */
27166
27167
27168var reduced =
27169/*#__PURE__*/
27170_curry1(_reduced);
27171
27172module.exports = reduced;
27173
27174/***/ }),
27175
vendor: 1,428 bytes, lines 27176-27228
27176/***/ "./node_modules/ramda/src/reject.js":
27177/*!******************************************!*\
27178  !*** ./node_modules/ramda/src/reject.js ***!
27179  \******************************************/
27180/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27181
27182var _complement =
27183/*#__PURE__*/
27184__webpack_require__(/*! ./internal/_complement.js */ "./node_modules/ramda/src/internal/_complement.js");
27185
27186var _curry2 =
27187/*#__PURE__*/
27188__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27189
27190var filter =
27191/*#__PURE__*/
27192__webpack_require__(/*! ./filter.js */ "./node_modules/ramda/src/filter.js");
27193/**
27194 * The complement of [`filter`](#filter).
27195 *
27196 * Acts as a transducer if a transformer is given in list position. Filterable
27197 * objects include plain objects or any object that has a filter method such
27198 * as `Array`.
27199 *
27200 * @func
27201 * @memberOf R
27202 * @since v0.1.0
27203 * @category List
27204 * @sig Filterable f => (a -> Boolean) -> f a -> f a
27205 * @param {Function} pred
27206 * @param {Array} filterable
27207 * @return {Array}
27208 * @see R.filter, R.transduce, R.addIndex
27209 * @example
27210 *
27211 *      const isOdd = (n) => n % 2 !== 0;
27212 *
27213 *      R.reject(isOdd, [1, 2, 3, 4]); //=> [2, 4]
27214 *
27215 *      R.reject(isOdd, {a: 1, b: 2, c: 3, d: 4}); //=> {b: 2, d: 4}
27216 */
27217
27218
27219var reject =
27220/*#__PURE__*/
27221_curry2(function reject(pred, filterable) {
27222  return filter(_complement(pred), filterable);
27223});
27224
27225module.exports = reject;
27226
27227/***/ }),
27228
vendor: 1,311 bytes, lines 27229-27271
27229/***/ "./node_modules/ramda/src/remove.js":
27230/*!******************************************!*\
27231  !*** ./node_modules/ramda/src/remove.js ***!
27232  \******************************************/
27233/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27234
27235var _curry3 =
27236/*#__PURE__*/
27237__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
27238/**
27239 * Removes the sub-list of `list` starting at index `start` and containing
27240 * `count` elements. _Note that this is not destructive_: it returns a copy of
27241 * the list with the changes.
27242 * <small>No lists have been harmed in the application of this function.</small>
27243 *
27244 * @func
27245 * @memberOf R
27246 * @since v0.2.2
27247 * @category List
27248 * @sig Number -> Number -> [a] -> [a]
27249 * @param {Number} start The position to start removing elements
27250 * @param {Number} count The number of elements to remove
27251 * @param {Array} list The list to remove from
27252 * @return {Array} A new Array with `count` elements from `start` removed.
27253 * @see R.without
27254 * @example
27255 *
27256 *      R.remove(2, 3, [1,2,3,4,5,6,7,8]); //=> [1,2,6,7,8]
27257 */
27258
27259
27260var remove =
27261/*#__PURE__*/
27262_curry3(function remove(start, count, list) {
27263  var result = Array.prototype.slice.call(list, 0);
27264  result.splice(start, count);
27265  return result;
27266});
27267
27268module.exports = remove;
27269
27270/***/ }),
27271
vendor: 1,396 bytes, lines 27272-27323
27272/***/ "./node_modules/ramda/src/repeat.js":
27273/*!******************************************!*\
27274  !*** ./node_modules/ramda/src/repeat.js ***!
27275  \******************************************/
27276/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27277
27278var _curry2 =
27279/*#__PURE__*/
27280__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27281
27282var always =
27283/*#__PURE__*/
27284__webpack_require__(/*! ./always.js */ "./node_modules/ramda/src/always.js");
27285
27286var times =
27287/*#__PURE__*/
27288__webpack_require__(/*! ./times.js */ "./node_modules/ramda/src/times.js");
27289/**
27290 * Returns a fixed list of size `n` containing a specified identical value.
27291 *
27292 * @func
27293 * @memberOf R
27294 * @since v0.1.1
27295 * @category List
27296 * @sig a -> n -> [a]
27297 * @param {*} value The value to repeat.
27298 * @param {Number} n The desired size of the output list.
27299 * @return {Array} A new array containing `n` `value`s.
27300 * @see R.times
27301 * @example
27302 *
27303 *      R.repeat('hi', 5); //=> ['hi', 'hi', 'hi', 'hi', 'hi']
27304 *
27305 *      const obj = {};
27306 *      const repeatedObjs = R.repeat(obj, 5); //=> [{}, {}, {}, {}, {}]
27307 *      repeatedObjs[0] === repeatedObjs[1]; //=> true
27308 * @symb R.repeat(a, 0) = []
27309 * @symb R.repeat(a, 1) = [a]
27310 * @symb R.repeat(a, 2) = [a, a]
27311 */
27312
27313
27314var repeat =
27315/*#__PURE__*/
27316_curry2(function repeat(value, n) {
27317  return times(always(value), n);
27318});
27319
27320module.exports = repeat;
27321
27322/***/ }),
27323
vendor: 1,446 bytes, lines 27324-27368
27324/***/ "./node_modules/ramda/src/replace.js":
27325/*!*******************************************!*\
27326  !*** ./node_modules/ramda/src/replace.js ***!
27327  \*******************************************/
27328/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27329
27330var _curry3 =
27331/*#__PURE__*/
27332__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
27333/**
27334 * Replace a substring or regex match in a string with a replacement.
27335 *
27336 * The first two parameters correspond to the parameters of the
27337 * `String.prototype.replace()` function, so the second parameter can also be a
27338 * function.
27339 *
27340 * @func
27341 * @memberOf R
27342 * @since v0.7.0
27343 * @category String
27344 * @sig RegExp|String -> String -> String -> String
27345 * @param {RegExp|String} pattern A regular expression or a substring to match.
27346 * @param {String} replacement The string to replace the matches with.
27347 * @param {String} str The String to do the search and replacement in.
27348 * @return {String} The result.
27349 * @example
27350 *
27351 *      R.replace('foo', 'bar', 'foo foo foo'); //=> 'bar foo foo'
27352 *      R.replace(/foo/, 'bar', 'foo foo foo'); //=> 'bar foo foo'
27353 *
27354 *      // Use the "g" (global) flag to replace all occurrences:
27355 *      R.replace(/foo/g, 'bar', 'foo foo foo'); //=> 'bar bar bar'
27356 */
27357
27358
27359var replace =
27360/*#__PURE__*/
27361_curry3(function replace(regex, replacement, str) {
27362  return str.replace(regex, replacement);
27363});
27364
27365module.exports = replace;
27366
27367/***/ }),
27368
vendor: 1,338 bytes, lines 27369-27417
27369/***/ "./node_modules/ramda/src/reverse.js":
27370/*!*******************************************!*\
27371  !*** ./node_modules/ramda/src/reverse.js ***!
27372  \*******************************************/
27373/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27374
27375var _curry1 =
27376/*#__PURE__*/
27377__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
27378
27379var _isString =
27380/*#__PURE__*/
27381__webpack_require__(/*! ./internal/_isString.js */ "./node_modules/ramda/src/internal/_isString.js");
27382/**
27383 * Returns a new list or string with the elements or characters in reverse
27384 * order.
27385 *
27386 * @func
27387 * @memberOf R
27388 * @since v0.1.0
27389 * @category List
27390 * @sig [a] -> [a]
27391 * @sig String -> String
27392 * @param {Array|String} list
27393 * @return {Array|String}
27394 * @example
27395 *
27396 *      R.reverse([1, 2, 3]);  //=> [3, 2, 1]
27397 *      R.reverse([1, 2]);     //=> [2, 1]
27398 *      R.reverse([1]);        //=> [1]
27399 *      R.reverse([]);         //=> []
27400 *
27401 *      R.reverse('abc');      //=> 'cba'
27402 *      R.reverse('ab');       //=> 'ba'
27403 *      R.reverse('a');        //=> 'a'
27404 *      R.reverse('');         //=> ''
27405 */
27406
27407
27408var reverse =
27409/*#__PURE__*/
27410_curry1(function reverse(list) {
27411  return _isString(list) ? list.split('').reverse().join('') : Array.prototype.slice.call(list, 0).reverse();
27412});
27413
27414module.exports = reverse;
27415
27416/***/ }),
27417
vendor: 1,390 bytes, lines 27418-27469
27418/***/ "./node_modules/ramda/src/scan.js":
27419/*!****************************************!*\
27420  !*** ./node_modules/ramda/src/scan.js ***!
27421  \****************************************/
27422/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27423
27424var _curry3 =
27425/*#__PURE__*/
27426__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
27427/**
27428 * Scan is similar to [`reduce`](#reduce), but returns a list of successively
27429 * reduced values from the left
27430 *
27431 * @func
27432 * @memberOf R
27433 * @since v0.10.0
27434 * @category List
27435 * @sig ((a, b) -> a) -> a -> [b] -> [a]
27436 * @param {Function} fn The iterator function. Receives two values, the accumulator and the
27437 *        current element from the array
27438 * @param {*} acc The accumulator value.
27439 * @param {Array} list The list to iterate over.
27440 * @return {Array} A list of all intermediately reduced values.
27441 * @see R.reduce, R.mapAccum
27442 * @example
27443 *
27444 *      const numbers = [1, 2, 3, 4];
27445 *      const factorials = R.scan(R.multiply, 1, numbers); //=> [1, 1, 2, 6, 24]
27446 * @symb R.scan(f, a, [b, c]) = [a, f(a, b), f(f(a, b), c)]
27447 */
27448
27449
27450var scan =
27451/*#__PURE__*/
27452_curry3(function scan(fn, acc, list) {
27453  var idx = 0;
27454  var len = list.length;
27455  var result = [acc];
27456
27457  while (idx < len) {
27458    acc = fn(acc, list[idx]);
27459    result[idx + 1] = acc;
27460    idx += 1;
27461  }
27462
27463  return result;
27464});
27465
27466module.exports = scan;
27467
27468/***/ }),
27469
vendor: 1,931 bytes, lines 27470-27532
27470/***/ "./node_modules/ramda/src/sequence.js":
27471/*!********************************************!*\
27472  !*** ./node_modules/ramda/src/sequence.js ***!
27473  \********************************************/
27474/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27475
27476var _curry2 =
27477/*#__PURE__*/
27478__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27479
27480var ap =
27481/*#__PURE__*/
27482__webpack_require__(/*! ./ap.js */ "./node_modules/ramda/src/ap.js");
27483
27484var map =
27485/*#__PURE__*/
27486__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
27487
27488var prepend =
27489/*#__PURE__*/
27490__webpack_require__(/*! ./prepend.js */ "./node_modules/ramda/src/prepend.js");
27491
27492var reduceRight =
27493/*#__PURE__*/
27494__webpack_require__(/*! ./reduceRight.js */ "./node_modules/ramda/src/reduceRight.js");
27495/**
27496 * Transforms a [Traversable](https://github.com/fantasyland/fantasy-land#traversable)
27497 * of [Applicative](https://github.com/fantasyland/fantasy-land#applicative) into an
27498 * Applicative of Traversable.
27499 *
27500 * Dispatches to the `sequence` method of the second argument, if present.
27501 *
27502 * @func
27503 * @memberOf R
27504 * @since v0.19.0
27505 * @category List
27506 * @sig (Applicative f, Traversable t) => (a -> f a) -> t (f a) -> f (t a)
27507 * @param {Function} of
27508 * @param {*} traversable
27509 * @return {*}
27510 * @see R.traverse
27511 * @example
27512 *
27513 *      R.sequence(Maybe.of, [Just(1), Just(2), Just(3)]);   //=> Just([1, 2, 3])
27514 *      R.sequence(Maybe.of, [Just(1), Just(2), Nothing()]); //=> Nothing()
27515 *
27516 *      R.sequence(R.of, Just([1, 2, 3])); //=> [Just(1), Just(2), Just(3)]
27517 *      R.sequence(R.of, Nothing());       //=> [Nothing()]
27518 */
27519
27520
27521var sequence =
27522/*#__PURE__*/
27523_curry2(function sequence(of, traversable) {
27524  return typeof traversable.sequence === 'function' ? traversable.sequence(of) : reduceRight(function (x, acc) {
27525    return ap(map(prepend, x), acc);
27526  }, of([]), traversable);
27527});
27528
27529module.exports = sequence;
27530
27531/***/ }),
27532
vendor: 1,310 bytes, lines 27533-27583
27533/***/ "./node_modules/ramda/src/set.js":
27534/*!***************************************!*\
27535  !*** ./node_modules/ramda/src/set.js ***!
27536  \***************************************/
27537/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27538
27539var _curry3 =
27540/*#__PURE__*/
27541__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
27542
27543var always =
27544/*#__PURE__*/
27545__webpack_require__(/*! ./always.js */ "./node_modules/ramda/src/always.js");
27546
27547var over =
27548/*#__PURE__*/
27549__webpack_require__(/*! ./over.js */ "./node_modules/ramda/src/over.js");
27550/**
27551 * Returns the result of "setting" the portion of the given data structure
27552 * focused by the given lens to the given value.
27553 *
27554 * @func
27555 * @memberOf R
27556 * @since v0.16.0
27557 * @category Object
27558 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
27559 * @sig Lens s a -> a -> s -> s
27560 * @param {Lens} lens
27561 * @param {*} v
27562 * @param {*} x
27563 * @return {*}
27564 * @see R.view, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath
27565 * @example
27566 *
27567 *      const xLens = R.lensProp('x');
27568 *
27569 *      R.set(xLens, 4, {x: 1, y: 2});  //=> {x: 4, y: 2}
27570 *      R.set(xLens, 8, {x: 1, y: 2});  //=> {x: 8, y: 2}
27571 */
27572
27573
27574var set =
27575/*#__PURE__*/
27576_curry3(function set(lens, v, x) {
27577  return over(lens, always(v), x);
27578});
27579
27580module.exports = set;
27581
27582/***/ }),
27583
vendor: 1,631 bytes, lines 27584-27634
27584/***/ "./node_modules/ramda/src/slice.js":
27585/*!*****************************************!*\
27586  !*** ./node_modules/ramda/src/slice.js ***!
27587  \*****************************************/
27588/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27589
27590var _checkForMethod =
27591/*#__PURE__*/
27592__webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/src/internal/_checkForMethod.js");
27593
27594var _curry3 =
27595/*#__PURE__*/
27596__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
27597/**
27598 * Returns the elements of the given list or string (or object with a `slice`
27599 * method) from `fromIndex` (inclusive) to `toIndex` (exclusive).
27600 *
27601 * Dispatches to the `slice` method of the third argument, if present.
27602 *
27603 * @func
27604 * @memberOf R
27605 * @since v0.1.4
27606 * @category List
27607 * @sig Number -> Number -> [a] -> [a]
27608 * @sig Number -> Number -> String -> String
27609 * @param {Number} fromIndex The start index (inclusive).
27610 * @param {Number} toIndex The end index (exclusive).
27611 * @param {*} list
27612 * @return {*}
27613 * @example
27614 *
27615 *      R.slice(1, 3, ['a', 'b', 'c', 'd']);        //=> ['b', 'c']
27616 *      R.slice(1, Infinity, ['a', 'b', 'c', 'd']); //=> ['b', 'c', 'd']
27617 *      R.slice(0, -1, ['a', 'b', 'c', 'd']);       //=> ['a', 'b', 'c']
27618 *      R.slice(-3, -1, ['a', 'b', 'c', 'd']);      //=> ['b', 'c']
27619 *      R.slice(0, 3, 'ramda');                     //=> 'ram'
27620 */
27621
27622
27623var slice =
27624/*#__PURE__*/
27625_curry3(
27626/*#__PURE__*/
27627_checkForMethod('slice', function slice(fromIndex, toIndex, list) {
27628  return Array.prototype.slice.call(list, fromIndex, toIndex);
27629}));
27630
27631module.exports = slice;
27632
27633/***/ }),
27634
vendor: 1,331 bytes, lines 27635-27676
27635/***/ "./node_modules/ramda/src/sort.js":
27636/*!****************************************!*\
27637  !*** ./node_modules/ramda/src/sort.js ***!
27638  \****************************************/
27639/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27640
27641var _curry2 =
27642/*#__PURE__*/
27643__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27644/**
27645 * Returns a copy of the list, sorted according to the comparator function,
27646 * which should accept two values at a time and return a negative number if the
27647 * first value is smaller, a positive number if it's larger, and zero if they
27648 * are equal. Please note that this is a **copy** of the list. It does not
27649 * modify the original.
27650 *
27651 * @func
27652 * @memberOf R
27653 * @since v0.1.0
27654 * @category List
27655 * @sig ((a, a) -> Number) -> [a] -> [a]
27656 * @param {Function} comparator A sorting function :: a -> b -> Int
27657 * @param {Array} list The list to sort
27658 * @return {Array} a new array with its elements sorted by the comparator function.
27659 * @see R.ascend, R.descend
27660 * @example
27661 *
27662 *      const diff = function(a, b) { return a - b; };
27663 *      R.sort(diff, [4,2,7,5]); //=> [2, 4, 5, 7]
27664 */
27665
27666
27667var sort =
27668/*#__PURE__*/
27669_curry2(function sort(comparator, list) {
27670  return Array.prototype.slice.call(list, 0).sort(comparator);
27671});
27672
27673module.exports = sort;
27674
27675/***/ }),
27676
vendor: 1,573 bytes, lines 27677-27734
27677/***/ "./node_modules/ramda/src/sortBy.js":
27678/*!******************************************!*\
27679  !*** ./node_modules/ramda/src/sortBy.js ***!
27680  \******************************************/
27681/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27682
27683var _curry2 =
27684/*#__PURE__*/
27685__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27686/**
27687 * Sorts the list according to the supplied function.
27688 *
27689 * @func
27690 * @memberOf R
27691 * @since v0.1.0
27692 * @category Relation
27693 * @sig Ord b => (a -> b) -> [a] -> [a]
27694 * @param {Function} fn
27695 * @param {Array} list The list to sort.
27696 * @return {Array} A new list sorted by the keys generated by `fn`.
27697 * @example
27698 *
27699 *      const sortByFirstItem = R.sortBy(R.prop(0));
27700 *      const pairs = [[-1, 1], [-2, 2], [-3, 3]];
27701 *      sortByFirstItem(pairs); //=> [[-3, 3], [-2, 2], [-1, 1]]
27702 *
27703 *      const sortByNameCaseInsensitive = R.sortBy(R.compose(R.toLower, R.prop('name')));
27704 *      const alice = {
27705 *        name: 'ALICE',
27706 *        age: 101
27707 *      };
27708 *      const bob = {
27709 *        name: 'Bob',
27710 *        age: -10
27711 *      };
27712 *      const clara = {
27713 *        name: 'clara',
27714 *        age: 314.159
27715 *      };
27716 *      const people = [clara, bob, alice];
27717 *      sortByNameCaseInsensitive(people); //=> [alice, bob, clara]
27718 */
27719
27720
27721var sortBy =
27722/*#__PURE__*/
27723_curry2(function sortBy(fn, list) {
27724  return Array.prototype.slice.call(list, 0).sort(function (a, b) {
27725    var aa = fn(a);
27726    var bb = fn(b);
27727    return aa < bb ? -1 : aa > bb ? 1 : 0;
27728  });
27729});
27730
27731module.exports = sortBy;
27732
27733/***/ }),
27734
vendor: 1,567 bytes, lines 27735-27798
27735/***/ "./node_modules/ramda/src/sortWith.js":
27736/*!********************************************!*\
27737  !*** ./node_modules/ramda/src/sortWith.js ***!
27738  \********************************************/
27739/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27740
27741var _curry2 =
27742/*#__PURE__*/
27743__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27744/**
27745 * Sorts a list according to a list of comparators.
27746 *
27747 * @func
27748 * @memberOf R
27749 * @since v0.23.0
27750 * @category Relation
27751 * @sig [(a, a) -> Number] -> [a] -> [a]
27752 * @param {Array} functions A list of comparator functions.
27753 * @param {Array} list The list to sort.
27754 * @return {Array} A new list sorted according to the comarator functions.
27755 * @see R.ascend, R.descend
27756 * @example
27757 *
27758 *      const alice = {
27759 *        name: 'alice',
27760 *        age: 40
27761 *      };
27762 *      const bob = {
27763 *        name: 'bob',
27764 *        age: 30
27765 *      };
27766 *      const clara = {
27767 *        name: 'clara',
27768 *        age: 40
27769 *      };
27770 *      const people = [clara, bob, alice];
27771 *      const ageNameSort = R.sortWith([
27772 *        R.descend(R.prop('age')),
27773 *        R.ascend(R.prop('name'))
27774 *      ]);
27775 *      ageNameSort(people); //=> [alice, clara, bob]
27776 */
27777
27778
27779var sortWith =
27780/*#__PURE__*/
27781_curry2(function sortWith(fns, list) {
27782  return Array.prototype.slice.call(list, 0).sort(function (a, b) {
27783    var result = 0;
27784    var i = 0;
27785
27786    while (result === 0 && i < fns.length) {
27787      result = fns[i](a, b);
27788      i += 1;
27789    }
27790
27791    return result;
27792  });
27793});
27794
27795module.exports = sortWith;
27796
27797/***/ }),
27798
vendor: 1,057 bytes, lines 27799-27836
27799/***/ "./node_modules/ramda/src/split.js":
27800/*!*****************************************!*\
27801  !*** ./node_modules/ramda/src/split.js ***!
27802  \*****************************************/
27803/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27804
27805var invoker =
27806/*#__PURE__*/
27807__webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/src/invoker.js");
27808/**
27809 * Splits a string into an array of strings based on the given
27810 * separator.
27811 *
27812 * @func
27813 * @memberOf R
27814 * @since v0.1.0
27815 * @category String
27816 * @sig (String | RegExp) -> String -> [String]
27817 * @param {String|RegExp} sep The pattern.
27818 * @param {String} str The string to separate into an array.
27819 * @return {Array} The array of strings from `str` separated by `sep`.
27820 * @see R.join
27821 * @example
27822 *
27823 *      const pathComponents = R.split('/');
27824 *      R.tail(pathComponents('/usr/local/bin/node')); //=> ['usr', 'local', 'bin', 'node']
27825 *
27826 *      R.split('.', 'a.b.c.xyz.d'); //=> ['a', 'b', 'c', 'xyz', 'd']
27827 */
27828
27829
27830var split =
27831/*#__PURE__*/
27832invoker(1, 'split');
27833module.exports = split;
27834
27835/***/ }),
27836
vendor: 1,336 bytes, lines 27837-27883
27837/***/ "./node_modules/ramda/src/splitAt.js":
27838/*!*******************************************!*\
27839  !*** ./node_modules/ramda/src/splitAt.js ***!
27840  \*******************************************/
27841/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27842
27843var _curry2 =
27844/*#__PURE__*/
27845__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27846
27847var length =
27848/*#__PURE__*/
27849__webpack_require__(/*! ./length.js */ "./node_modules/ramda/src/length.js");
27850
27851var slice =
27852/*#__PURE__*/
27853__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
27854/**
27855 * Splits a given list or string at a given index.
27856 *
27857 * @func
27858 * @memberOf R
27859 * @since v0.19.0
27860 * @category List
27861 * @sig Number -> [a] -> [[a], [a]]
27862 * @sig Number -> String -> [String, String]
27863 * @param {Number} index The index where the array/string is split.
27864 * @param {Array|String} array The array/string to be split.
27865 * @return {Array}
27866 * @example
27867 *
27868 *      R.splitAt(1, [1, 2, 3]);          //=> [[1], [2, 3]]
27869 *      R.splitAt(5, 'hello world');      //=> ['hello', ' world']
27870 *      R.splitAt(-1, 'foobar');          //=> ['fooba', 'r']
27871 */
27872
27873
27874var splitAt =
27875/*#__PURE__*/
27876_curry2(function splitAt(index, array) {
27877  return [slice(0, index, array), slice(index, length(array), array)];
27878});
27879
27880module.exports = splitAt;
27881
27882/***/ }),
27883
vendor: 1,275 bytes, lines 27884-27936
27884/***/ "./node_modules/ramda/src/splitEvery.js":
27885/*!**********************************************!*\
27886  !*** ./node_modules/ramda/src/splitEvery.js ***!
27887  \**********************************************/
27888/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27889
27890var _curry2 =
27891/*#__PURE__*/
27892__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27893
27894var slice =
27895/*#__PURE__*/
27896__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
27897/**
27898 * Splits a collection into slices of the specified length.
27899 *
27900 * @func
27901 * @memberOf R
27902 * @since v0.16.0
27903 * @category List
27904 * @sig Number -> [a] -> [[a]]
27905 * @sig Number -> String -> [String]
27906 * @param {Number} n
27907 * @param {Array} list
27908 * @return {Array}
27909 * @example
27910 *
27911 *      R.splitEvery(3, [1, 2, 3, 4, 5, 6, 7]); //=> [[1, 2, 3], [4, 5, 6], [7]]
27912 *      R.splitEvery(3, 'foobarbaz'); //=> ['foo', 'bar', 'baz']
27913 */
27914
27915
27916var splitEvery =
27917/*#__PURE__*/
27918_curry2(function splitEvery(n, list) {
27919  if (n <= 0) {
27920    throw new Error('First argument to splitEvery must be a positive integer');
27921  }
27922
27923  var result = [];
27924  var idx = 0;
27925
27926  while (idx < list.length) {
27927    result.push(slice(idx, idx += n, list));
27928  }
27929
27930  return result;
27931});
27932
27933module.exports = splitEvery;
27934
27935/***/ }),
27936
vendor: 1,432 bytes, lines 27937-27985
27937/***/ "./node_modules/ramda/src/splitWhen.js":
27938/*!*********************************************!*\
27939  !*** ./node_modules/ramda/src/splitWhen.js ***!
27940  \*********************************************/
27941/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27942
27943var _curry2 =
27944/*#__PURE__*/
27945__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
27946/**
27947 * Takes a list and a predicate and returns a pair of lists with the following properties:
27948 *
27949 *  - the result of concatenating the two output lists is equivalent to the input list;
27950 *  - none of the elements of the first output list satisfies the predicate; and
27951 *  - if the second output list is non-empty, its first element satisfies the predicate.
27952 *
27953 * @func
27954 * @memberOf R
27955 * @since v0.19.0
27956 * @category List
27957 * @sig (a -> Boolean) -> [a] -> [[a], [a]]
27958 * @param {Function} pred The predicate that determines where the array is split.
27959 * @param {Array} list The array to be split.
27960 * @return {Array}
27961 * @example
27962 *
27963 *      R.splitWhen(R.equals(2), [1, 2, 3, 1, 2, 3]);   //=> [[1], [2, 3, 1, 2, 3]]
27964 */
27965
27966
27967var splitWhen =
27968/*#__PURE__*/
27969_curry2(function splitWhen(pred, list) {
27970  var idx = 0;
27971  var len = list.length;
27972  var prefix = [];
27973
27974  while (idx < len && !pred(list[idx])) {
27975    prefix.push(list[idx]);
27976    idx += 1;
27977  }
27978
27979  return [prefix, Array.prototype.slice.call(list, idx)];
27980});
27981
27982module.exports = splitWhen;
27983
27984/***/ }),
27985
vendor: 1,284 bytes, lines 27986-28035
27986/***/ "./node_modules/ramda/src/splitWhenever.js":
27987/*!*************************************************!*\
27988  !*** ./node_modules/ramda/src/splitWhenever.js ***!
27989  \*************************************************/
27990/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
27991
27992var _curryN =
27993/*#__PURE__*/
27994__webpack_require__(/*! ./internal/_curryN.js */ "./node_modules/ramda/src/internal/_curryN.js");
27995/**
27996 * Splits an array into slices on every occurrence of a value.
27997 *
27998 * @func
27999 * @memberOf R
28000 * @since v0.26.1
28001 * @category List
28002 * @sig (a -> Boolean) -> [a] -> [[a]]
28003 * @param {Function} pred The predicate that determines where the array is split.
28004 * @param {Array} list The array to be split.
28005 * @return {Array}
28006 * @example
28007 *
28008 *      R.splitWhenever(R.equals(2), [1, 2, 3, 2, 4, 5, 2, 6, 7]); //=> [[1], [3], [4, 5], [6, 7]]
28009 */
28010
28011
28012var splitWhenever =
28013/*#__PURE__*/
28014_curryN(2, [], function splitWhenever(pred, list) {
28015  var acc = [];
28016  var curr = [];
28017
28018  for (var i = 0; i < list.length; i = i + 1) {
28019    if (!pred(list[i])) {
28020      curr.push(list[i]);
28021    }
28022
28023    if ((i < list.length - 1 && pred(list[i + 1]) || i === list.length - 1) && curr.length > 0) {
28024      acc.push(curr);
28025      curr = [];
28026    }
28027  }
28028
28029  return acc;
28030});
28031
28032module.exports = splitWhenever;
28033
28034/***/ }),
28035
vendor: 1,361 bytes, lines 28036-28086
28036/***/ "./node_modules/ramda/src/startsWith.js":
28037/*!**********************************************!*\
28038  !*** ./node_modules/ramda/src/startsWith.js ***!
28039  \**********************************************/
28040/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28041
28042var _curry2 =
28043/*#__PURE__*/
28044__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28045
28046var equals =
28047/*#__PURE__*/
28048__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
28049
28050var take =
28051/*#__PURE__*/
28052__webpack_require__(/*! ./take.js */ "./node_modules/ramda/src/take.js");
28053/**
28054 * Checks if a list starts with the provided sublist.
28055 *
28056 * Similarly, checks if a string starts with the provided substring.
28057 *
28058 * @func
28059 * @memberOf R
28060 * @since v0.24.0
28061 * @category List
28062 * @sig [a] -> [a] -> Boolean
28063 * @sig String -> String -> Boolean
28064 * @param {*} prefix
28065 * @param {*} list
28066 * @return {Boolean}
28067 * @see R.endsWith
28068 * @example
28069 *
28070 *      R.startsWith('a', 'abc')                //=> true
28071 *      R.startsWith('b', 'abc')                //=> false
28072 *      R.startsWith(['a'], ['a', 'b', 'c'])    //=> true
28073 *      R.startsWith(['b'], ['a', 'b', 'c'])    //=> false
28074 */
28075
28076
28077var startsWith =
28078/*#__PURE__*/
28079_curry2(function (prefix, list) {
28080  return equals(take(prefix.length, list), prefix);
28081});
28082
28083module.exports = startsWith;
28084
28085/***/ }),
28086
vendor: 1,086 bytes, lines 28087-28130
28087/***/ "./node_modules/ramda/src/subtract.js":
28088/*!********************************************!*\
28089  !*** ./node_modules/ramda/src/subtract.js ***!
28090  \********************************************/
28091/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28092
28093var _curry2 =
28094/*#__PURE__*/
28095__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28096/**
28097 * Subtracts its second argument from its first argument.
28098 *
28099 * @func
28100 * @memberOf R
28101 * @since v0.1.0
28102 * @category Math
28103 * @sig Number -> Number -> Number
28104 * @param {Number} a The first value.
28105 * @param {Number} b The second value.
28106 * @return {Number} The result of `a - b`.
28107 * @see R.add
28108 * @example
28109 *
28110 *      R.subtract(10, 8); //=> 2
28111 *
28112 *      const minus5 = R.subtract(R.__, 5);
28113 *      minus5(17); //=> 12
28114 *
28115 *      const complementaryAngle = R.subtract(90);
28116 *      complementaryAngle(30); //=> 60
28117 *      complementaryAngle(72); //=> 18
28118 */
28119
28120
28121var subtract =
28122/*#__PURE__*/
28123_curry2(function subtract(a, b) {
28124  return Number(a) - Number(b);
28125});
28126
28127module.exports = subtract;
28128
28129/***/ }),
28130
vendor: 840 bytes, lines 28131-28167
28131/***/ "./node_modules/ramda/src/sum.js":
28132/*!***************************************!*\
28133  !*** ./node_modules/ramda/src/sum.js ***!
28134  \***************************************/
28135/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28136
28137var add =
28138/*#__PURE__*/
28139__webpack_require__(/*! ./add.js */ "./node_modules/ramda/src/add.js");
28140
28141var reduce =
28142/*#__PURE__*/
28143__webpack_require__(/*! ./reduce.js */ "./node_modules/ramda/src/reduce.js");
28144/**
28145 * Adds together all the elements of a list.
28146 *
28147 * @func
28148 * @memberOf R
28149 * @since v0.1.0
28150 * @category Math
28151 * @sig [Number] -> Number
28152 * @param {Array} list An array of numbers
28153 * @return {Number} The sum of all the numbers in the list.
28154 * @see R.reduce
28155 * @example
28156 *
28157 *      R.sum([2,4,6,8,100,1]); //=> 121
28158 */
28159
28160
28161var sum =
28162/*#__PURE__*/
28163reduce(add, 0);
28164module.exports = sum;
28165
28166/***/ }),
28167
vendor: 1,463 bytes, lines 28168-28214
28168/***/ "./node_modules/ramda/src/symmetricDifference.js":
28169/*!*******************************************************!*\
28170  !*** ./node_modules/ramda/src/symmetricDifference.js ***!
28171  \*******************************************************/
28172/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28173
28174var _curry2 =
28175/*#__PURE__*/
28176__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28177
28178var concat =
28179/*#__PURE__*/
28180__webpack_require__(/*! ./concat.js */ "./node_modules/ramda/src/concat.js");
28181
28182var difference =
28183/*#__PURE__*/
28184__webpack_require__(/*! ./difference.js */ "./node_modules/ramda/src/difference.js");
28185/**
28186 * Finds the set (i.e. no duplicates) of all elements contained in the first or
28187 * second list, but not both.
28188 *
28189 * @func
28190 * @memberOf R
28191 * @since v0.19.0
28192 * @category Relation
28193 * @sig [*] -> [*] -> [*]
28194 * @param {Array} list1 The first list.
28195 * @param {Array} list2 The second list.
28196 * @return {Array} The elements in `list1` or `list2`, but not both.
28197 * @see R.symmetricDifferenceWith, R.difference, R.differenceWith
28198 * @example
28199 *
28200 *      R.symmetricDifference([1,2,3,4], [7,6,5,4,3]); //=> [1,2,7,6,5]
28201 *      R.symmetricDifference([7,6,5,4,3], [1,2,3,4]); //=> [7,6,5,1,2]
28202 */
28203
28204
28205var symmetricDifference =
28206/*#__PURE__*/
28207_curry2(function symmetricDifference(list1, list2) {
28208  return concat(difference(list1, list2), difference(list2, list1));
28209});
28210
28211module.exports = symmetricDifference;
28212
28213/***/ }),
28214
vendor: 1,835 bytes, lines 28215-28265
28215/***/ "./node_modules/ramda/src/symmetricDifferenceWith.js":
28216/*!***********************************************************!*\
28217  !*** ./node_modules/ramda/src/symmetricDifferenceWith.js ***!
28218  \***********************************************************/
28219/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28220
28221var _curry3 =
28222/*#__PURE__*/
28223__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
28224
28225var concat =
28226/*#__PURE__*/
28227__webpack_require__(/*! ./concat.js */ "./node_modules/ramda/src/concat.js");
28228
28229var differenceWith =
28230/*#__PURE__*/
28231__webpack_require__(/*! ./differenceWith.js */ "./node_modules/ramda/src/differenceWith.js");
28232/**
28233 * Finds the set (i.e. no duplicates) of all elements contained in the first or
28234 * second list, but not both. Duplication is determined according to the value
28235 * returned by applying the supplied predicate to two list elements.
28236 *
28237 * @func
28238 * @memberOf R
28239 * @since v0.19.0
28240 * @category Relation
28241 * @sig ((a, a) -> Boolean) -> [a] -> [a] -> [a]
28242 * @param {Function} pred A predicate used to test whether two items are equal.
28243 * @param {Array} list1 The first list.
28244 * @param {Array} list2 The second list.
28245 * @return {Array} The elements in `list1` or `list2`, but not both.
28246 * @see R.symmetricDifference, R.difference, R.differenceWith
28247 * @example
28248 *
28249 *      const eqA = R.eqBy(R.prop('a'));
28250 *      const l1 = [{a: 1}, {a: 2}, {a: 3}, {a: 4}];
28251 *      const l2 = [{a: 3}, {a: 4}, {a: 5}, {a: 6}];
28252 *      R.symmetricDifferenceWith(eqA, l1, l2); //=> [{a: 1}, {a: 2}, {a: 5}, {a: 6}]
28253 */
28254
28255
28256var symmetricDifferenceWith =
28257/*#__PURE__*/
28258_curry3(function symmetricDifferenceWith(pred, list1, list2) {
28259  return concat(differenceWith(pred, list1, list2), differenceWith(pred, list2, list1));
28260});
28261
28262module.exports = symmetricDifferenceWith;
28263
28264/***/ }),
28265
vendor: 1,427 bytes, lines 28266-28323
28266/***/ "./node_modules/ramda/src/tail.js":
28267/*!****************************************!*\
28268  !*** ./node_modules/ramda/src/tail.js ***!
28269  \****************************************/
28270/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28271
28272var _checkForMethod =
28273/*#__PURE__*/
28274__webpack_require__(/*! ./internal/_checkForMethod.js */ "./node_modules/ramda/src/internal/_checkForMethod.js");
28275
28276var _curry1 =
28277/*#__PURE__*/
28278__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
28279
28280var slice =
28281/*#__PURE__*/
28282__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
28283/**
28284 * Returns all but the first element of the given list or string (or object
28285 * with a `tail` method).
28286 *
28287 * Dispatches to the `slice` method of the first argument, if present.
28288 *
28289 * @func
28290 * @memberOf R
28291 * @since v0.1.0
28292 * @category List
28293 * @sig [a] -> [a]
28294 * @sig String -> String
28295 * @param {*} list
28296 * @return {*}
28297 * @see R.head, R.init, R.last
28298 * @example
28299 *
28300 *      R.tail([1, 2, 3]);  //=> [2, 3]
28301 *      R.tail([1, 2]);     //=> [2]
28302 *      R.tail([1]);        //=> []
28303 *      R.tail([]);         //=> []
28304 *
28305 *      R.tail('abc');  //=> 'bc'
28306 *      R.tail('ab');   //=> 'b'
28307 *      R.tail('a');    //=> ''
28308 *      R.tail('');     //=> ''
28309 */
28310
28311
28312var tail =
28313/*#__PURE__*/
28314_curry1(
28315/*#__PURE__*/
28316_checkForMethod('tail',
28317/*#__PURE__*/
28318slice(1, Infinity)));
28319
28320module.exports = tail;
28321
28322/***/ }),
28323
vendor: 2,207 bytes, lines 28324-28401
28324/***/ "./node_modules/ramda/src/take.js":
28325/*!****************************************!*\
28326  !*** ./node_modules/ramda/src/take.js ***!
28327  \****************************************/
28328/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28329
28330var _curry2 =
28331/*#__PURE__*/
28332__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28333
28334var _dispatchable =
28335/*#__PURE__*/
28336__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
28337
28338var _xtake =
28339/*#__PURE__*/
28340__webpack_require__(/*! ./internal/_xtake.js */ "./node_modules/ramda/src/internal/_xtake.js");
28341
28342var slice =
28343/*#__PURE__*/
28344__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
28345/**
28346 * Returns the first `n` elements of the given list, string, or
28347 * transducer/transformer (or object with a `take` method).
28348 *
28349 * Dispatches to the `take` method of the second argument, if present.
28350 *
28351 * @func
28352 * @memberOf R
28353 * @since v0.1.0
28354 * @category List
28355 * @sig Number -> [a] -> [a]
28356 * @sig Number -> String -> String
28357 * @param {Number} n
28358 * @param {*} list
28359 * @return {*}
28360 * @see R.drop
28361 * @example
28362 *
28363 *      R.take(1, ['foo', 'bar', 'baz']); //=> ['foo']
28364 *      R.take(2, ['foo', 'bar', 'baz']); //=> ['foo', 'bar']
28365 *      R.take(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
28366 *      R.take(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
28367 *      R.take(3, 'ramda');               //=> 'ram'
28368 *
28369 *      const personnel = [
28370 *        'Dave Brubeck',
28371 *        'Paul Desmond',
28372 *        'Eugene Wright',
28373 *        'Joe Morello',
28374 *        'Gerry Mulligan',
28375 *        'Bob Bates',
28376 *        'Joe Dodge',
28377 *        'Ron Crotty'
28378 *      ];
28379 *
28380 *      const takeFive = R.take(5);
28381 *      takeFive(personnel);
28382 *      //=> ['Dave Brubeck', 'Paul Desmond', 'Eugene Wright', 'Joe Morello', 'Gerry Mulligan']
28383 * @symb R.take(-1, [a, b]) = [a, b]
28384 * @symb R.take(0, [a, b]) = []
28385 * @symb R.take(1, [a, b]) = [a]
28386 * @symb R.take(2, [a, b]) = [a, b]
28387 */
28388
28389
28390var take =
28391/*#__PURE__*/
28392_curry2(
28393/*#__PURE__*/
28394_dispatchable(['take'], _xtake, function take(n, xs) {
28395  return slice(0, n < 0 ? Infinity : n, xs);
28396}));
28397
28398module.exports = take;
28399
28400/***/ }),
28401
vendor: 1,408 bytes, lines 28402-28448
28402/***/ "./node_modules/ramda/src/takeLast.js":
28403/*!********************************************!*\
28404  !*** ./node_modules/ramda/src/takeLast.js ***!
28405  \********************************************/
28406/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28407
28408var _curry2 =
28409/*#__PURE__*/
28410__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28411
28412var drop =
28413/*#__PURE__*/
28414__webpack_require__(/*! ./drop.js */ "./node_modules/ramda/src/drop.js");
28415/**
28416 * Returns a new list containing the last `n` elements of the given list.
28417 * If `n > list.length`, returns a list of `list.length` elements.
28418 *
28419 * @func
28420 * @memberOf R
28421 * @since v0.16.0
28422 * @category List
28423 * @sig Number -> [a] -> [a]
28424 * @sig Number -> String -> String
28425 * @param {Number} n The number of elements to return.
28426 * @param {Array} xs The collection to consider.
28427 * @return {Array}
28428 * @see R.dropLast
28429 * @example
28430 *
28431 *      R.takeLast(1, ['foo', 'bar', 'baz']); //=> ['baz']
28432 *      R.takeLast(2, ['foo', 'bar', 'baz']); //=> ['bar', 'baz']
28433 *      R.takeLast(3, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
28434 *      R.takeLast(4, ['foo', 'bar', 'baz']); //=> ['foo', 'bar', 'baz']
28435 *      R.takeLast(3, 'ramda');               //=> 'mda'
28436 */
28437
28438
28439var takeLast =
28440/*#__PURE__*/
28441_curry2(function takeLast(n, xs) {
28442  return drop(n >= 0 ? xs.length - n : 0, xs);
28443});
28444
28445module.exports = takeLast;
28446
28447/***/ }),
28448
vendor: 1,602 bytes, lines 28449-28504
28449/***/ "./node_modules/ramda/src/takeLastWhile.js":
28450/*!*************************************************!*\
28451  !*** ./node_modules/ramda/src/takeLastWhile.js ***!
28452  \*************************************************/
28453/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28454
28455var _curry2 =
28456/*#__PURE__*/
28457__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28458
28459var slice =
28460/*#__PURE__*/
28461__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
28462/**
28463 * Returns a new list containing the last `n` elements of a given list, passing
28464 * each value to the supplied predicate function, and terminating when the
28465 * predicate function returns `false`. Excludes the element that caused the
28466 * predicate function to fail. The predicate function is passed one argument:
28467 * *(value)*.
28468 *
28469 * @func
28470 * @memberOf R
28471 * @since v0.16.0
28472 * @category List
28473 * @sig (a -> Boolean) -> [a] -> [a]
28474 * @sig (a -> Boolean) -> String -> String
28475 * @param {Function} fn The function called per iteration.
28476 * @param {Array} xs The collection to iterate over.
28477 * @return {Array} A new array.
28478 * @see R.dropLastWhile, R.addIndex
28479 * @example
28480 *
28481 *      const isNotOne = x => x !== 1;
28482 *
28483 *      R.takeLastWhile(isNotOne, [1, 2, 3, 4]); //=> [2, 3, 4]
28484 *
28485 *      R.takeLastWhile(x => x !== 'R' , 'Ramda'); //=> 'amda'
28486 */
28487
28488
28489var takeLastWhile =
28490/*#__PURE__*/
28491_curry2(function takeLastWhile(fn, xs) {
28492  var idx = xs.length - 1;
28493
28494  while (idx >= 0 && fn(xs[idx])) {
28495    idx -= 1;
28496  }
28497
28498  return slice(idx + 1, Infinity, xs);
28499});
28500
28501module.exports = takeLastWhile;
28502
28503/***/ }),
28504
vendor: 2,078 bytes, lines 28505-28575
28505/***/ "./node_modules/ramda/src/takeWhile.js":
28506/*!*********************************************!*\
28507  !*** ./node_modules/ramda/src/takeWhile.js ***!
28508  \*********************************************/
28509/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28510
28511var _curry2 =
28512/*#__PURE__*/
28513__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28514
28515var _dispatchable =
28516/*#__PURE__*/
28517__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
28518
28519var _xtakeWhile =
28520/*#__PURE__*/
28521__webpack_require__(/*! ./internal/_xtakeWhile.js */ "./node_modules/ramda/src/internal/_xtakeWhile.js");
28522
28523var slice =
28524/*#__PURE__*/
28525__webpack_require__(/*! ./slice.js */ "./node_modules/ramda/src/slice.js");
28526/**
28527 * Returns a new list containing the first `n` elements of a given list,
28528 * passing each value to the supplied predicate function, and terminating when
28529 * the predicate function returns `false`. Excludes the element that caused the
28530 * predicate function to fail. The predicate function is passed one argument:
28531 * *(value)*.
28532 *
28533 * Dispatches to the `takeWhile` method of the second argument, if present.
28534 *
28535 * Acts as a transducer if a transformer is given in list position.
28536 *
28537 * @func
28538 * @memberOf R
28539 * @since v0.1.0
28540 * @category List
28541 * @sig (a -> Boolean) -> [a] -> [a]
28542 * @sig (a -> Boolean) -> String -> String
28543 * @param {Function} fn The function called per iteration.
28544 * @param {Array} xs The collection to iterate over.
28545 * @return {Array} A new array.
28546 * @see R.dropWhile, R.transduce, R.addIndex
28547 * @example
28548 *
28549 *      const isNotFour = x => x !== 4;
28550 *
28551 *      R.takeWhile(isNotFour, [1, 2, 3, 4, 3, 2, 1]); //=> [1, 2, 3]
28552 *
28553 *      R.takeWhile(x => x !== 'd' , 'Ramda'); //=> 'Ram'
28554 */
28555
28556
28557var takeWhile =
28558/*#__PURE__*/
28559_curry2(
28560/*#__PURE__*/
28561_dispatchable(['takeWhile'], _xtakeWhile, function takeWhile(fn, xs) {
28562  var idx = 0;
28563  var len = xs.length;
28564
28565  while (idx < len && fn(xs[idx])) {
28566    idx += 1;
28567  }
28568
28569  return slice(0, idx, xs);
28570}));
28571
28572module.exports = takeWhile;
28573
28574/***/ }),
28575
vendor: 1,337 bytes, lines 28576-28627
28576/***/ "./node_modules/ramda/src/tap.js":
28577/*!***************************************!*\
28578  !*** ./node_modules/ramda/src/tap.js ***!
28579  \***************************************/
28580/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28581
28582var _curry2 =
28583/*#__PURE__*/
28584__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28585
28586var _dispatchable =
28587/*#__PURE__*/
28588__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
28589
28590var _xtap =
28591/*#__PURE__*/
28592__webpack_require__(/*! ./internal/_xtap.js */ "./node_modules/ramda/src/internal/_xtap.js");
28593/**
28594 * Runs the given function with the supplied object, then returns the object.
28595 *
28596 * Acts as a transducer if a transformer is given as second parameter.
28597 *
28598 * @func
28599 * @memberOf R
28600 * @since v0.1.0
28601 * @category Function
28602 * @sig (a -> *) -> a -> a
28603 * @param {Function} fn The function to call with `x`. The return value of `fn` will be thrown away.
28604 * @param {*} x
28605 * @return {*} `x`.
28606 * @example
28607 *
28608 *      const sayX = x => console.log('x is ' + x);
28609 *      R.tap(sayX, 100); //=> 100
28610 *      // logs 'x is 100'
28611 * @symb R.tap(f, a) = a
28612 */
28613
28614
28615var tap =
28616/*#__PURE__*/
28617_curry2(
28618/*#__PURE__*/
28619_dispatchable([], _xtap, function tap(fn, x) {
28620  fn(x);
28621  return x;
28622}));
28623
28624module.exports = tap;
28625
28626/***/ }),
28627
vendor: 1,429 bytes, lines 28628-28681
28628/***/ "./node_modules/ramda/src/test.js":
28629/*!****************************************!*\
28630  !*** ./node_modules/ramda/src/test.js ***!
28631  \****************************************/
28632/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28633
28634var _cloneRegExp =
28635/*#__PURE__*/
28636__webpack_require__(/*! ./internal/_cloneRegExp.js */ "./node_modules/ramda/src/internal/_cloneRegExp.js");
28637
28638var _curry2 =
28639/*#__PURE__*/
28640__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28641
28642var _isRegExp =
28643/*#__PURE__*/
28644__webpack_require__(/*! ./internal/_isRegExp.js */ "./node_modules/ramda/src/internal/_isRegExp.js");
28645
28646var toString =
28647/*#__PURE__*/
28648__webpack_require__(/*! ./toString.js */ "./node_modules/ramda/src/toString.js");
28649/**
28650 * Determines whether a given string matches a given regular expression.
28651 *
28652 * @func
28653 * @memberOf R
28654 * @since v0.12.0
28655 * @category String
28656 * @sig RegExp -> String -> Boolean
28657 * @param {RegExp} pattern
28658 * @param {String} str
28659 * @return {Boolean}
28660 * @see R.match
28661 * @example
28662 *
28663 *      R.test(/^x/, 'xyz'); //=> true
28664 *      R.test(/^y/, 'xyz'); //=> false
28665 */
28666
28667
28668var test =
28669/*#__PURE__*/
28670_curry2(function test(pattern, str) {
28671  if (!_isRegExp(pattern)) {
28672    throw new TypeError('‘test’ requires a value of type RegExp as its first argument; received ' + toString(pattern));
28673  }
28674
28675  return _cloneRegExp(pattern).test(str);
28676});
28677
28678module.exports = test;
28679
28680/***/ }),
28681
vendor: 1,379 bytes, lines 28682-28729
28682/***/ "./node_modules/ramda/src/thunkify.js":
28683/*!********************************************!*\
28684  !*** ./node_modules/ramda/src/thunkify.js ***!
28685  \********************************************/
28686/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28687
28688var curryN =
28689/*#__PURE__*/
28690__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
28691
28692var _curry1 =
28693/*#__PURE__*/
28694__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
28695/**
28696 * Creates a thunk out of a function. A thunk delays a calculation until
28697 * its result is needed, providing lazy evaluation of arguments.
28698 *
28699 * @func
28700 * @memberOf R
28701 * @since v0.26.0
28702 * @category Function
28703 * @sig ((a, b, ..., j) -> k) -> (a, b, ..., j) -> (() -> k)
28704 * @param {Function} fn A function to wrap in a thunk
28705 * @return {Function} Expects arguments for `fn` and returns a new function
28706 *  that, when called, applies those arguments to `fn`.
28707 * @see R.partial, R.partialRight
28708 * @example
28709 *
28710 *      R.thunkify(R.identity)(42)(); //=> 42
28711 *      R.thunkify((a, b) => a + b)(25, 17)(); //=> 42
28712 */
28713
28714
28715var thunkify =
28716/*#__PURE__*/
28717_curry1(function thunkify(fn) {
28718  return curryN(fn.length, function createThunk() {
28719    var fnArgs = arguments;
28720    return function invokeThunk() {
28721      return fn.apply(this, fnArgs);
28722    };
28723  });
28724});
28725
28726module.exports = thunkify;
28727
28728/***/ }),
28729
vendor: 1,524 bytes, lines 28730-28788
28730/***/ "./node_modules/ramda/src/times.js":
28731/*!*****************************************!*\
28732  !*** ./node_modules/ramda/src/times.js ***!
28733  \*****************************************/
28734/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28735
28736var _curry2 =
28737/*#__PURE__*/
28738__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
28739/**
28740 * Calls an input function `n` times, returning an array containing the results
28741 * of those function calls.
28742 *
28743 * `fn` is passed one argument: The current value of `n`, which begins at `0`
28744 * and is gradually incremented to `n - 1`.
28745 *
28746 * @func
28747 * @memberOf R
28748 * @since v0.2.3
28749 * @category List
28750 * @sig (Number -> a) -> Number -> [a]
28751 * @param {Function} fn The function to invoke. Passed one argument, the current value of `n`.
28752 * @param {Number} n A value between `0` and `n - 1`. Increments after each function call.
28753 * @return {Array} An array containing the return values of all calls to `fn`.
28754 * @see R.repeat
28755 * @example
28756 *
28757 *      R.times(R.identity, 5); //=> [0, 1, 2, 3, 4]
28758 * @symb R.times(f, 0) = []
28759 * @symb R.times(f, 1) = [f(0)]
28760 * @symb R.times(f, 2) = [f(0), f(1)]
28761 */
28762
28763
28764var times =
28765/*#__PURE__*/
28766_curry2(function times(fn, n) {
28767  var len = Number(n);
28768  var idx = 0;
28769  var list;
28770
28771  if (len < 0 || isNaN(len)) {
28772    throw new RangeError('n must be a non-negative number');
28773  }
28774
28775  list = new Array(len);
28776
28777  while (idx < len) {
28778    list[idx] = fn(idx);
28779    idx += 1;
28780  }
28781
28782  return list;
28783});
28784
28785module.exports = times;
28786
28787/***/ }),
28788
vendor: 771 bytes, lines 28789-28821
28789/***/ "./node_modules/ramda/src/toLower.js":
28790/*!*******************************************!*\
28791  !*** ./node_modules/ramda/src/toLower.js ***!
28792  \*******************************************/
28793/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28794
28795var invoker =
28796/*#__PURE__*/
28797__webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/src/invoker.js");
28798/**
28799 * The lower case version of a string.
28800 *
28801 * @func
28802 * @memberOf R
28803 * @since v0.9.0
28804 * @category String
28805 * @sig String -> String
28806 * @param {String} str The string to lower case.
28807 * @return {String} The lower case version of `str`.
28808 * @see R.toUpper
28809 * @example
28810 *
28811 *      R.toLower('XYZ'); //=> 'xyz'
28812 */
28813
28814
28815var toLower =
28816/*#__PURE__*/
28817invoker(0, 'toLowerCase');
28818module.exports = toLower;
28819
28820/***/ }),
28821
vendor: 1,340 bytes, lines 28822-28872
28822/***/ "./node_modules/ramda/src/toPairs.js":
28823/*!*******************************************!*\
28824  !*** ./node_modules/ramda/src/toPairs.js ***!
28825  \*******************************************/
28826/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28827
28828var _curry1 =
28829/*#__PURE__*/
28830__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
28831
28832var _has =
28833/*#__PURE__*/
28834__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
28835/**
28836 * Converts an object into an array of key, value arrays. Only the object's
28837 * own properties are used.
28838 * Note that the order of the output array is not guaranteed to be consistent
28839 * across different JS platforms.
28840 *
28841 * @func
28842 * @memberOf R
28843 * @since v0.4.0
28844 * @category Object
28845 * @sig {String: *} -> [[String,*]]
28846 * @param {Object} obj The object to extract from
28847 * @return {Array} An array of key, value arrays from the object's own properties.
28848 * @see R.fromPairs, R.keys, R.values
28849 * @example
28850 *
28851 *      R.toPairs({a: 1, b: 2, c: 3}); //=> [['a', 1], ['b', 2], ['c', 3]]
28852 */
28853
28854
28855var toPairs =
28856/*#__PURE__*/
28857_curry1(function toPairs(obj) {
28858  var pairs = [];
28859
28860  for (var prop in obj) {
28861    if (_has(prop, obj)) {
28862      pairs[pairs.length] = [prop, obj[prop]];
28863    }
28864  }
28865
28866  return pairs;
28867});
28868
28869module.exports = toPairs;
28870
28871/***/ }),
28872
vendor: 1,289 bytes, lines 28873-28920
28873/***/ "./node_modules/ramda/src/toPairsIn.js":
28874/*!*********************************************!*\
28875  !*** ./node_modules/ramda/src/toPairsIn.js ***!
28876  \*********************************************/
28877/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28878
28879var _curry1 =
28880/*#__PURE__*/
28881__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
28882/**
28883 * Converts an object into an array of key, value arrays. The object's own
28884 * properties and prototype properties are used. Note that the order of the
28885 * output array is not guaranteed to be consistent across different JS
28886 * platforms.
28887 *
28888 * @func
28889 * @memberOf R
28890 * @since v0.4.0
28891 * @category Object
28892 * @sig {String: *} -> [[String,*]]
28893 * @param {Object} obj The object to extract from
28894 * @return {Array} An array of key, value arrays from the object's own
28895 *         and prototype properties.
28896 * @example
28897 *
28898 *      const F = function() { this.x = 'X'; };
28899 *      F.prototype.y = 'Y';
28900 *      const f = new F();
28901 *      R.toPairsIn(f); //=> [['x','X'], ['y','Y']]
28902 */
28903
28904
28905var toPairsIn =
28906/*#__PURE__*/
28907_curry1(function toPairsIn(obj) {
28908  var pairs = [];
28909
28910  for (var prop in obj) {
28911    pairs[pairs.length] = [prop, obj[prop]];
28912  }
28913
28914  return pairs;
28915});
28916
28917module.exports = toPairsIn;
28918
28919/***/ }),
28920
vendor: 1,885 bytes, lines 28921-28981
28921/***/ "./node_modules/ramda/src/toString.js":
28922/*!********************************************!*\
28923  !*** ./node_modules/ramda/src/toString.js ***!
28924  \********************************************/
28925/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28926
28927var _curry1 =
28928/*#__PURE__*/
28929__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
28930
28931var _toString =
28932/*#__PURE__*/
28933__webpack_require__(/*! ./internal/_toString.js */ "./node_modules/ramda/src/internal/_toString.js");
28934/**
28935 * Returns the string representation of the given value. `eval`'ing the output
28936 * should result in a value equivalent to the input value. Many of the built-in
28937 * `toString` methods do not satisfy this requirement.
28938 *
28939 * If the given value is an `[object Object]` with a `toString` method other
28940 * than `Object.prototype.toString`, this method is invoked with no arguments
28941 * to produce the return value. This means user-defined constructor functions
28942 * can provide a suitable `toString` method. For example:
28943 *
28944 *     function Point(x, y) {
28945 *       this.x = x;
28946 *       this.y = y;
28947 *     }
28948 *
28949 *     Point.prototype.toString = function() {
28950 *       return 'new Point(' + this.x + ', ' + this.y + ')';
28951 *     };
28952 *
28953 *     R.toString(new Point(1, 2)); //=> 'new Point(1, 2)'
28954 *
28955 * @func
28956 * @memberOf R
28957 * @since v0.14.0
28958 * @category String
28959 * @sig * -> String
28960 * @param {*} val
28961 * @return {String}
28962 * @example
28963 *
28964 *      R.toString(42); //=> '42'
28965 *      R.toString('abc'); //=> '"abc"'
28966 *      R.toString([1, 2, 3]); //=> '[1, 2, 3]'
28967 *      R.toString({foo: 1, bar: 2, baz: 3}); //=> '{"bar": 2, "baz": 3, "foo": 1}'
28968 *      R.toString(new Date('2001-02-03T04:05:06Z')); //=> 'new Date("2001-02-03T04:05:06.000Z")'
28969 */
28970
28971
28972var toString =
28973/*#__PURE__*/
28974_curry1(function toString(val) {
28975  return _toString(val, []);
28976});
28977
28978module.exports = toString;
28979
28980/***/ }),
28981
vendor: 771 bytes, lines 28982-29014
28982/***/ "./node_modules/ramda/src/toUpper.js":
28983/*!*******************************************!*\
28984  !*** ./node_modules/ramda/src/toUpper.js ***!
28985  \*******************************************/
28986/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
28987
28988var invoker =
28989/*#__PURE__*/
28990__webpack_require__(/*! ./invoker.js */ "./node_modules/ramda/src/invoker.js");
28991/**
28992 * The upper case version of a string.
28993 *
28994 * @func
28995 * @memberOf R
28996 * @since v0.9.0
28997 * @category String
28998 * @sig String -> String
28999 * @param {String} str The string to upper case.
29000 * @return {String} The upper case version of `str`.
29001 * @see R.toLower
29002 * @example
29003 *
29004 *      R.toUpper('abc'); //=> 'ABC'
29005 */
29006
29007
29008var toUpper =
29009/*#__PURE__*/
29010invoker(0, 'toUpperCase');
29011module.exports = toUpper;
29012
29013/***/ }),
29014
vendor: 3,144 bytes, lines 29015-29089
29015/***/ "./node_modules/ramda/src/transduce.js":
29016/*!*********************************************!*\
29017  !*** ./node_modules/ramda/src/transduce.js ***!
29018  \*********************************************/
29019/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29020
29021var _reduce =
29022/*#__PURE__*/
29023__webpack_require__(/*! ./internal/_reduce.js */ "./node_modules/ramda/src/internal/_reduce.js");
29024
29025var _xwrap =
29026/*#__PURE__*/
29027__webpack_require__(/*! ./internal/_xwrap.js */ "./node_modules/ramda/src/internal/_xwrap.js");
29028
29029var curryN =
29030/*#__PURE__*/
29031__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
29032/**
29033 * Initializes a transducer using supplied iterator function. Returns a single
29034 * item by iterating through the list, successively calling the transformed
29035 * iterator function and passing it an accumulator value and the current value
29036 * from the array, and then passing the result to the next call.
29037 *
29038 * The iterator function receives two values: *(acc, value)*. It will be
29039 * wrapped as a transformer to initialize the transducer. A transformer can be
29040 * passed directly in place of an iterator function. In both cases, iteration
29041 * may be stopped early with the [`R.reduced`](#reduced) function.
29042 *
29043 * A transducer is a function that accepts a transformer and returns a
29044 * transformer and can be composed directly.
29045 *
29046 * A transformer is an object that provides a 2-arity reducing iterator
29047 * function, step, 0-arity initial value function, init, and 1-arity result
29048 * extraction function, result. The step function is used as the iterator
29049 * function in reduce. The result function is used to convert the final
29050 * accumulator into the return type and in most cases is
29051 * [`R.identity`](#identity). The init function can be used to provide an
29052 * initial accumulator, but is ignored by transduce.
29053 *
29054 * The iteration is performed with [`R.reduce`](#reduce) after initializing the transducer.
29055 *
29056 * @func
29057 * @memberOf R
29058 * @since v0.12.0
29059 * @category List
29060 * @sig (c -> c) -> ((a, b) -> a) -> a -> [b] -> a
29061 * @param {Function} xf The transducer function. Receives a transformer and returns a transformer.
29062 * @param {Function} fn The iterator function. Receives two values, the accumulator and the
29063 *        current element from the array. Wrapped as transformer, if necessary, and used to
29064 *        initialize the transducer
29065 * @param {*} acc The initial accumulator value.
29066 * @param {Array} list The list to iterate over.
29067 * @return {*} The final, accumulated value.
29068 * @see R.reduce, R.reduced, R.into
29069 * @example
29070 *
29071 *      const numbers = [1, 2, 3, 4];
29072 *      const transducer = R.compose(R.map(R.add(1)), R.take(2));
29073 *      R.transduce(transducer, R.flip(R.append), [], numbers); //=> [2, 3]
29074 *
29075 *      const isOdd = (x) => x % 2 !== 0;
29076 *      const firstOddTransducer = R.compose(R.filter(isOdd), R.take(1));
29077 *      R.transduce(firstOddTransducer, R.flip(R.append), [], R.range(0, 100)); //=> [1]
29078 */
29079
29080
29081var transduce =
29082/*#__PURE__*/
29083curryN(4, function transduce(xf, fn, acc, list) {
29084  return _reduce(xf(typeof fn === 'function' ? _xwrap(fn) : fn), acc, list);
29085});
29086module.exports = transduce;
29087
29088/***/ }),
29089
vendor: 1,674 bytes, lines 29090-29153
29090/***/ "./node_modules/ramda/src/transpose.js":
29091/*!*********************************************!*\
29092  !*** ./node_modules/ramda/src/transpose.js ***!
29093  \*********************************************/
29094/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29095
29096var _curry1 =
29097/*#__PURE__*/
29098__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
29099/**
29100 * Transposes the rows and columns of a 2D list.
29101 * When passed a list of `n` lists of length `x`,
29102 * returns a list of `x` lists of length `n`.
29103 *
29104 *
29105 * @func
29106 * @memberOf R
29107 * @since v0.19.0
29108 * @category List
29109 * @sig [[a]] -> [[a]]
29110 * @param {Array} list A 2D list
29111 * @return {Array} A 2D list
29112 * @example
29113 *
29114 *      R.transpose([[1, 'a'], [2, 'b'], [3, 'c']]) //=> [[1, 2, 3], ['a', 'b', 'c']]
29115 *      R.transpose([[1, 2, 3], ['a', 'b', 'c']]) //=> [[1, 'a'], [2, 'b'], [3, 'c']]
29116 *
29117 *      // If some of the rows are shorter than the following rows, their elements are skipped:
29118 *      R.transpose([[10, 11], [20], [], [30, 31, 32]]) //=> [[10, 20, 30], [11, 31], [32]]
29119 * @symb R.transpose([[a], [b], [c]]) = [a, b, c]
29120 * @symb R.transpose([[a, b], [c, d]]) = [[a, c], [b, d]]
29121 * @symb R.transpose([[a, b], [c]]) = [[a, c], [b]]
29122 */
29123
29124
29125var transpose =
29126/*#__PURE__*/
29127_curry1(function transpose(outerlist) {
29128  var i = 0;
29129  var result = [];
29130
29131  while (i < outerlist.length) {
29132    var innerlist = outerlist[i];
29133    var j = 0;
29134
29135    while (j < innerlist.length) {
29136      if (typeof result[j] === 'undefined') {
29137        result[j] = [];
29138      }
29139
29140      result[j].push(innerlist[j]);
29141      j += 1;
29142    }
29143
29144    i += 1;
29145  }
29146
29147  return result;
29148});
29149
29150module.exports = transpose;
29151
29152/***/ }),
29153
vendor: 1,918 bytes, lines 29154-29208
29154/***/ "./node_modules/ramda/src/traverse.js":
29155/*!********************************************!*\
29156  !*** ./node_modules/ramda/src/traverse.js ***!
29157  \********************************************/
29158/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29159
29160var _curry3 =
29161/*#__PURE__*/
29162__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
29163
29164var map =
29165/*#__PURE__*/
29166__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
29167
29168var sequence =
29169/*#__PURE__*/
29170__webpack_require__(/*! ./sequence.js */ "./node_modules/ramda/src/sequence.js");
29171/**
29172 * Maps an [Applicative](https://github.com/fantasyland/fantasy-land#applicative)-returning
29173 * function over a [Traversable](https://github.com/fantasyland/fantasy-land#traversable),
29174 * then uses [`sequence`](#sequence) to transform the resulting Traversable of Applicative
29175 * into an Applicative of Traversable.
29176 *
29177 * Dispatches to the `traverse` method of the third argument, if present.
29178 *
29179 * @func
29180 * @memberOf R
29181 * @since v0.19.0
29182 * @category List
29183 * @sig (Applicative f, Traversable t) => (a -> f a) -> (a -> f b) -> t a -> f (t b)
29184 * @param {Function} of
29185 * @param {Function} f
29186 * @param {*} traversable
29187 * @return {*}
29188 * @see R.sequence
29189 * @example
29190 *
29191 *      // Returns `Maybe.Nothing` if the given divisor is `0`
29192 *      const safeDiv = n => d => d === 0 ? Maybe.Nothing() : Maybe.Just(n / d)
29193 *
29194 *      R.traverse(Maybe.of, safeDiv(10), [2, 4, 5]); //=> Maybe.Just([5, 2.5, 2])
29195 *      R.traverse(Maybe.of, safeDiv(10), [2, 0, 5]); //=> Maybe.Nothing
29196 */
29197
29198
29199var traverse =
29200/*#__PURE__*/
29201_curry3(function traverse(of, f, traversable) {
29202  return typeof traversable['fantasy-land/traverse'] === 'function' ? traversable['fantasy-land/traverse'](f, of) : typeof traversable.traverse === 'function' ? traversable.traverse(f, of) : sequence(of, map(f, traversable));
29203});
29204
29205module.exports = traverse;
29206
29207/***/ }),
29208
vendor: 1,404 bytes, lines 29209-29256
29209/***/ "./node_modules/ramda/src/trim.js":
29210/*!****************************************!*\
29211  !*** ./node_modules/ramda/src/trim.js ***!
29212  \****************************************/
29213/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29214
29215var _curry1 =
29216/*#__PURE__*/
29217__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
29218
29219var ws = '\x09\x0A\x0B\x0C\x0D\x20\xA0\u1680\u2000\u2001\u2002\u2003' + '\u2004\u2005\u2006\u2007\u2008\u2009\u200A\u202F\u205F\u3000\u2028' + '\u2029\uFEFF';
29220var zeroWidth = '\u200b';
29221var hasProtoTrim = typeof String.prototype.trim === 'function';
29222/**
29223 * Removes (strips) whitespace from both ends of the string.
29224 *
29225 * @func
29226 * @memberOf R
29227 * @since v0.6.0
29228 * @category String
29229 * @sig String -> String
29230 * @param {String} str The string to trim.
29231 * @return {String} Trimmed version of `str`.
29232 * @example
29233 *
29234 *      R.trim('   xyz  '); //=> 'xyz'
29235 *      R.map(R.trim, R.split(',', 'x, y, z')); //=> ['x', 'y', 'z']
29236 */
29237
29238var trim = !hasProtoTrim ||
29239/*#__PURE__*/
29240ws.trim() || !
29241/*#__PURE__*/
29242zeroWidth.trim() ?
29243/*#__PURE__*/
29244_curry1(function trim(str) {
29245  var beginRx = new RegExp('^[' + ws + '][' + ws + ']*');
29246  var endRx = new RegExp('[' + ws + '][' + ws + ']*$');
29247  return str.replace(beginRx, '').replace(endRx, '');
29248}) :
29249/*#__PURE__*/
29250_curry1(function trim(str) {
29251  return str.trim();
29252});
29253module.exports = trim;
29254
29255/***/ }),
29256
vendor: 2,132 bytes, lines 29257-29315
29257/***/ "./node_modules/ramda/src/tryCatch.js":
29258/*!********************************************!*\
29259  !*** ./node_modules/ramda/src/tryCatch.js ***!
29260  \********************************************/
29261/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29262
29263var _arity =
29264/*#__PURE__*/
29265__webpack_require__(/*! ./internal/_arity.js */ "./node_modules/ramda/src/internal/_arity.js");
29266
29267var _concat =
29268/*#__PURE__*/
29269__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
29270
29271var _curry2 =
29272/*#__PURE__*/
29273__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29274/**
29275 * `tryCatch` takes two functions, a `tryer` and a `catcher`. The returned
29276 * function evaluates the `tryer`; if it does not throw, it simply returns the
29277 * result. If the `tryer` *does* throw, the returned function evaluates the
29278 * `catcher` function and returns its result. Note that for effective
29279 * composition with this function, both the `tryer` and `catcher` functions
29280 * must return the same type of results.
29281 *
29282 * @func
29283 * @memberOf R
29284 * @since v0.20.0
29285 * @category Function
29286 * @sig (...x -> a) -> ((e, ...x) -> a) -> (...x -> a)
29287 * @param {Function} tryer The function that may throw.
29288 * @param {Function} catcher The function that will be evaluated if `tryer` throws.
29289 * @return {Function} A new function that will catch exceptions and send them to the catcher.
29290 * @example
29291 *
29292 *      R.tryCatch(R.prop('x'), R.F)({x: true}); //=> true
29293 *      R.tryCatch(() => { throw 'foo'}, R.always('caught'))('bar') // =>
29294 *      'caught'
29295 *      R.tryCatch(R.times(R.identity), R.always([]))('s') // => []
29296 *      R.tryCatch(() => { throw 'this is not a valid value'}, (err, value)=>({error : err,  value }))('bar') // => {'error': 'this is not a valid value', 'value': 'bar'}
29297 */
29298
29299
29300var tryCatch =
29301/*#__PURE__*/
29302_curry2(function _tryCatch(tryer, catcher) {
29303  return _arity(tryer.length, function () {
29304    try {
29305      return tryer.apply(this, arguments);
29306    } catch (e) {
29307      return catcher.apply(this, _concat([e], arguments));
29308    }
29309  });
29310});
29311
29312module.exports = tryCatch;
29313
29314/***/ }),
29315
vendor: 1,334 bytes, lines 29316-29361
29316/***/ "./node_modules/ramda/src/type.js":
29317/*!****************************************!*\
29318  !*** ./node_modules/ramda/src/type.js ***!
29319  \****************************************/
29320/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29321
29322var _curry1 =
29323/*#__PURE__*/
29324__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
29325/**
29326 * Gives a single-word string description of the (native) type of a value,
29327 * returning such answers as 'Object', 'Number', 'Array', or 'Null'. Does not
29328 * attempt to distinguish user Object types any further, reporting them all as
29329 * 'Object'.
29330 *
29331 * @func
29332 * @memberOf R
29333 * @since v0.8.0
29334 * @category Type
29335 * @sig (* -> {*}) -> String
29336 * @param {*} val The value to test
29337 * @return {String}
29338 * @example
29339 *
29340 *      R.type({}); //=> "Object"
29341 *      R.type(1); //=> "Number"
29342 *      R.type(false); //=> "Boolean"
29343 *      R.type('s'); //=> "String"
29344 *      R.type(null); //=> "Null"
29345 *      R.type([]); //=> "Array"
29346 *      R.type(/[A-z]/); //=> "RegExp"
29347 *      R.type(() => {}); //=> "Function"
29348 *      R.type(undefined); //=> "Undefined"
29349 */
29350
29351
29352var type =
29353/*#__PURE__*/
29354_curry1(function type(val) {
29355  return val === null ? 'Null' : val === undefined ? 'Undefined' : Object.prototype.toString.call(val).slice(8, -1);
29356});
29357
29358module.exports = type;
29359
29360/***/ }),
29361
vendor: 1,246 bytes, lines 29362-29408
29362/***/ "./node_modules/ramda/src/unapply.js":
29363/*!*******************************************!*\
29364  !*** ./node_modules/ramda/src/unapply.js ***!
29365  \*******************************************/
29366/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29367
29368var _curry1 =
29369/*#__PURE__*/
29370__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
29371/**
29372 * Takes a function `fn`, which takes a single array argument, and returns a
29373 * function which:
29374 *
29375 *   - takes any number of positional arguments;
29376 *   - passes these arguments to `fn` as an array; and
29377 *   - returns the result.
29378 *
29379 * In other words, `R.unapply` derives a variadic function from a function which
29380 * takes an array. `R.unapply` is the inverse of [`R.apply`](#apply).
29381 *
29382 * @func
29383 * @memberOf R
29384 * @since v0.8.0
29385 * @category Function
29386 * @sig ([*...] -> a) -> (*... -> a)
29387 * @param {Function} fn
29388 * @return {Function}
29389 * @see R.apply
29390 * @example
29391 *
29392 *      R.unapply(JSON.stringify)(1, 2, 3); //=> '[1,2,3]'
29393 * @symb R.unapply(f)(a, b) = f([a, b])
29394 */
29395
29396
29397var unapply =
29398/*#__PURE__*/
29399_curry1(function unapply(fn) {
29400  return function () {
29401    return fn(Array.prototype.slice.call(arguments, 0));
29402  };
29403});
29404
29405module.exports = unapply;
29406
29407/***/ }),
29408
vendor: 1,485 bytes, lines 29409-29461
29409/***/ "./node_modules/ramda/src/unary.js":
29410/*!*****************************************!*\
29411  !*** ./node_modules/ramda/src/unary.js ***!
29412  \*****************************************/
29413/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29414
29415var _curry1 =
29416/*#__PURE__*/
29417__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
29418
29419var nAry =
29420/*#__PURE__*/
29421__webpack_require__(/*! ./nAry.js */ "./node_modules/ramda/src/nAry.js");
29422/**
29423 * Wraps a function of any arity (including nullary) in a function that accepts
29424 * exactly 1 parameter. Any extraneous parameters will not be passed to the
29425 * supplied function.
29426 *
29427 * @func
29428 * @memberOf R
29429 * @since v0.2.0
29430 * @category Function
29431 * @sig (a -> b -> c -> ... -> z) -> (a -> z)
29432 * @param {Function} fn The function to wrap.
29433 * @return {Function} A new function wrapping `fn`. The new function is guaranteed to be of
29434 *         arity 1.
29435 * @see R.binary, R.nAry
29436 * @example
29437 *
29438 *      const takesTwoArgs = function(a, b) {
29439 *        return [a, b];
29440 *      };
29441 *      takesTwoArgs.length; //=> 2
29442 *      takesTwoArgs(1, 2); //=> [1, 2]
29443 *
29444 *      const takesOneArg = R.unary(takesTwoArgs);
29445 *      takesOneArg.length; //=> 1
29446 *      // Only 1 argument is passed to the wrapped function
29447 *      takesOneArg(1, 2); //=> [1, undefined]
29448 * @symb R.unary(f)(a, b, c) = f(a)
29449 */
29450
29451
29452var unary =
29453/*#__PURE__*/
29454_curry1(function unary(fn) {
29455  return nAry(1, fn);
29456});
29457
29458module.exports = unary;
29459
29460/***/ }),
29461
vendor: 1,757 bytes, lines 29462-29522
29462/***/ "./node_modules/ramda/src/uncurryN.js":
29463/*!********************************************!*\
29464  !*** ./node_modules/ramda/src/uncurryN.js ***!
29465  \********************************************/
29466/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29467
29468var _curry2 =
29469/*#__PURE__*/
29470__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29471
29472var curryN =
29473/*#__PURE__*/
29474__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
29475/**
29476 * Returns a function of arity `n` from a (manually) curried function.
29477 * Note that, the returned function is actually a ramda style
29478 * curryied function, which can accept one or more arguments in each
29479 * function calling.
29480 *
29481 * @func
29482 * @memberOf R
29483 * @since v0.14.0
29484 * @category Function
29485 * @sig Number -> (a -> b -> c ... -> z) -> ((a -> b -> c ...) -> z)
29486 * @param {Number} length The arity for the returned function.
29487 * @param {Function} fn The function to uncurry.
29488 * @return {Function} A new function.
29489 * @see R.curry, R.curryN
29490 * @example
29491 *
29492 *      const addFour = a => b => c => d => a + b + c + d;
29493 *
29494 *      const uncurriedAddFour = R.uncurryN(4, addFour);
29495 *      uncurriedAddFour(1, 2, 3, 4); //=> 10
29496 */
29497
29498
29499var uncurryN =
29500/*#__PURE__*/
29501_curry2(function uncurryN(depth, fn) {
29502  return curryN(depth, function () {
29503    var currentDepth = 1;
29504    var value = fn;
29505    var idx = 0;
29506    var endIdx;
29507
29508    while (currentDepth <= depth && typeof value === 'function') {
29509      endIdx = currentDepth === depth ? arguments.length : idx + value.length;
29510      value = value.apply(this, Array.prototype.slice.call(arguments, idx, endIdx));
29511      currentDepth += 1;
29512      idx = endIdx;
29513    }
29514
29515    return value;
29516  });
29517});
29518
29519module.exports = uncurryN;
29520
29521/***/ }),
29522
vendor: 1,675 bytes, lines 29523-29576
29523/***/ "./node_modules/ramda/src/unfold.js":
29524/*!******************************************!*\
29525  !*** ./node_modules/ramda/src/unfold.js ***!
29526  \******************************************/
29527/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29528
29529var _curry2 =
29530/*#__PURE__*/
29531__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29532/**
29533 * Builds a list from a seed value. Accepts an iterator function, which returns
29534 * either false to stop iteration or an array of length 2 containing the value
29535 * to add to the resulting list and the seed to be used in the next call to the
29536 * iterator function.
29537 *
29538 * The iterator function receives one argument: *(seed)*.
29539 *
29540 * @func
29541 * @memberOf R
29542 * @since v0.10.0
29543 * @category List
29544 * @sig (a -> [b]) -> * -> [b]
29545 * @param {Function} fn The iterator function. receives one argument, `seed`, and returns
29546 *        either false to quit iteration or an array of length two to proceed. The element
29547 *        at index 0 of this array will be added to the resulting array, and the element
29548 *        at index 1 will be passed to the next call to `fn`.
29549 * @param {*} seed The seed value.
29550 * @return {Array} The final list.
29551 * @example
29552 *
29553 *      const f = n => n > 50 ? false : [-n, n + 10];
29554 *      R.unfold(f, 10); //=> [-10, -20, -30, -40, -50]
29555 * @symb R.unfold(f, x) = [f(x)[0], f(f(x)[1])[0], f(f(f(x)[1])[1])[0], ...]
29556 */
29557
29558
29559var unfold =
29560/*#__PURE__*/
29561_curry2(function unfold(fn, seed) {
29562  var pair = fn(seed);
29563  var result = [];
29564
29565  while (pair && pair.length) {
29566    result[result.length] = pair[0];
29567    pair = fn(pair[1]);
29568  }
29569
29570  return result;
29571});
29572
29573module.exports = unfold;
29574
29575/***/ }),
29576
vendor: 1,266 bytes, lines 29577-29626
29577/***/ "./node_modules/ramda/src/union.js":
29578/*!*****************************************!*\
29579  !*** ./node_modules/ramda/src/union.js ***!
29580  \*****************************************/
29581/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29582
29583var _concat =
29584/*#__PURE__*/
29585__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
29586
29587var _curry2 =
29588/*#__PURE__*/
29589__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29590
29591var compose =
29592/*#__PURE__*/
29593__webpack_require__(/*! ./compose.js */ "./node_modules/ramda/src/compose.js");
29594
29595var uniq =
29596/*#__PURE__*/
29597__webpack_require__(/*! ./uniq.js */ "./node_modules/ramda/src/uniq.js");
29598/**
29599 * Combines two lists into a set (i.e. no duplicates) composed of the elements
29600 * of each list.
29601 *
29602 * @func
29603 * @memberOf R
29604 * @since v0.1.0
29605 * @category Relation
29606 * @sig [*] -> [*] -> [*]
29607 * @param {Array} as The first list.
29608 * @param {Array} bs The second list.
29609 * @return {Array} The first and second lists concatenated, with
29610 *         duplicates removed.
29611 * @example
29612 *
29613 *      R.union([1, 2, 3], [2, 3, 4]); //=> [1, 2, 3, 4]
29614 */
29615
29616
29617var union =
29618/*#__PURE__*/
29619_curry2(
29620/*#__PURE__*/
29621compose(uniq, _concat));
29622
29623module.exports = union;
29624
29625/***/ }),
29626
vendor: 1,677 bytes, lines 29627-29678
29627/***/ "./node_modules/ramda/src/unionWith.js":
29628/*!*********************************************!*\
29629  !*** ./node_modules/ramda/src/unionWith.js ***!
29630  \*********************************************/
29631/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29632
29633var _concat =
29634/*#__PURE__*/
29635__webpack_require__(/*! ./internal/_concat.js */ "./node_modules/ramda/src/internal/_concat.js");
29636
29637var _curry3 =
29638/*#__PURE__*/
29639__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
29640
29641var uniqWith =
29642/*#__PURE__*/
29643__webpack_require__(/*! ./uniqWith.js */ "./node_modules/ramda/src/uniqWith.js");
29644/**
29645 * Combines two lists into a set (i.e. no duplicates) composed of the elements
29646 * of each list. Duplication is determined according to the value returned by
29647 * applying the supplied predicate to two list elements. If an element exists
29648 * in both lists, the first element from the first list will be used.
29649 *
29650 * @func
29651 * @memberOf R
29652 * @since v0.1.0
29653 * @category Relation
29654 * @sig ((a, a) -> Boolean) -> [*] -> [*] -> [*]
29655 * @param {Function} pred A predicate used to test whether two items are equal.
29656 * @param {Array} list1 The first list.
29657 * @param {Array} list2 The second list.
29658 * @return {Array} The first and second lists concatenated, with
29659 *         duplicates removed.
29660 * @see R.union
29661 * @example
29662 *
29663 *      const l1 = [{a: 1}, {a: 2}];
29664 *      const l2 = [{a: 1}, {a: 4}];
29665 *      R.unionWith(R.eqBy(R.prop('a')), l1, l2); //=> [{a: 1}, {a: 2}, {a: 4}]
29666 */
29667
29668
29669var unionWith =
29670/*#__PURE__*/
29671_curry3(function unionWith(pred, list1, list2) {
29672  return uniqWith(pred, _concat(list1, list2));
29673});
29674
29675module.exports = unionWith;
29676
29677/***/ }),
29678
vendor: 1,009 bytes, lines 29679-29717
29679/***/ "./node_modules/ramda/src/uniq.js":
29680/*!****************************************!*\
29681  !*** ./node_modules/ramda/src/uniq.js ***!
29682  \****************************************/
29683/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29684
29685var identity =
29686/*#__PURE__*/
29687__webpack_require__(/*! ./identity.js */ "./node_modules/ramda/src/identity.js");
29688
29689var uniqBy =
29690/*#__PURE__*/
29691__webpack_require__(/*! ./uniqBy.js */ "./node_modules/ramda/src/uniqBy.js");
29692/**
29693 * Returns a new list containing only one copy of each element in the original
29694 * list. [`R.equals`](#equals) is used to determine equality.
29695 *
29696 * @func
29697 * @memberOf R
29698 * @since v0.1.0
29699 * @category List
29700 * @sig [a] -> [a]
29701 * @param {Array} list The array to consider.
29702 * @return {Array} The list of unique items.
29703 * @example
29704 *
29705 *      R.uniq([1, 1, 2, 1]); //=> [1, 2]
29706 *      R.uniq([1, '1']);     //=> [1, '1']
29707 *      R.uniq([[42], [42]]); //=> [[42]]
29708 */
29709
29710
29711var uniq =
29712/*#__PURE__*/
29713uniqBy(identity);
29714module.exports = uniq;
29715
29716/***/ }),
29717
vendor: 1,934 bytes, lines 29718-29788
29718/***/ "./node_modules/ramda/src/uniqBy.js":
29719/*!******************************************!*\
29720  !*** ./node_modules/ramda/src/uniqBy.js ***!
29721  \******************************************/
29722/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29723
29724var _Set =
29725/*#__PURE__*/
29726__webpack_require__(/*! ./internal/_Set.js */ "./node_modules/ramda/src/internal/_Set.js");
29727
29728var _curry2 =
29729/*#__PURE__*/
29730__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29731
29732var _dispatchable =
29733/*#__PURE__*/
29734__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
29735
29736var _xuniqBy =
29737/*#__PURE__*/
29738__webpack_require__(/*! ./internal/_xuniqBy.js */ "./node_modules/ramda/src/internal/_xuniqBy.js");
29739/**
29740 * Returns a new list containing only one copy of each element in the original
29741 * list, based upon the value returned by applying the supplied function to
29742 * each list element. Prefers the first item if the supplied function produces
29743 * the same value on two items. [`R.equals`](#equals) is used for comparison.
29744 *
29745 * Acts as a transducer if a transformer is given in list position.
29746 *
29747 * @func
29748 * @memberOf R
29749 * @since v0.16.0
29750 * @category List
29751 * @sig (a -> b) -> [a] -> [a]
29752 * @param {Function} fn A function used to produce a value to use during comparisons.
29753 * @param {Array} list The array to consider.
29754 * @return {Array} The list of unique items.
29755 * @example
29756 *
29757 *      R.uniqBy(Math.abs, [-1, -5, 2, 10, 1, 2]); //=> [-1, -5, 2, 10]
29758 */
29759
29760
29761var uniqBy =
29762/*#__PURE__*/
29763_curry2(
29764/*#__PURE__*/
29765_dispatchable([], _xuniqBy, function (fn, list) {
29766  var set = new _Set();
29767  var result = [];
29768  var idx = 0;
29769  var appliedItem, item;
29770
29771  while (idx < list.length) {
29772    item = list[idx];
29773    appliedItem = fn(item);
29774
29775    if (set.add(appliedItem)) {
29776      result.push(item);
29777    }
29778
29779    idx += 1;
29780  }
29781
29782  return result;
29783}));
29784
29785module.exports = uniqBy;
29786
29787/***/ }),
29788
vendor: 2,087 bytes, lines 29789-29862
29789/***/ "./node_modules/ramda/src/uniqWith.js":
29790/*!********************************************!*\
29791  !*** ./node_modules/ramda/src/uniqWith.js ***!
29792  \********************************************/
29793/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29794
29795var _curry2 =
29796/*#__PURE__*/
29797__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
29798
29799var _dispatchable =
29800/*#__PURE__*/
29801__webpack_require__(/*! ./internal/_dispatchable.js */ "./node_modules/ramda/src/internal/_dispatchable.js");
29802
29803var _includesWith =
29804/*#__PURE__*/
29805__webpack_require__(/*! ./internal/_includesWith.js */ "./node_modules/ramda/src/internal/_includesWith.js");
29806
29807var _xuniqWith =
29808/*#__PURE__*/
29809__webpack_require__(/*! ./internal/_xuniqWith.js */ "./node_modules/ramda/src/internal/_xuniqWith.js");
29810/**
29811 * Returns a new list containing only one copy of each element in the original
29812 * list, based upon the value returned by applying the supplied predicate to
29813 * two list elements. Prefers the first item if two items compare equal based
29814 * on the predicate.
29815 *
29816 * Acts as a transducer if a transformer is given in list position.
29817 *
29818 * @func
29819 * @memberOf R
29820 * @since v0.2.0
29821 * @category List
29822 * @sig ((a, a) -> Boolean) -> [a] -> [a]
29823 * @param {Function} pred A predicate used to test whether two items are equal.
29824 * @param {Array} list The array to consider.
29825 * @return {Array} The list of unique items.
29826 * @example
29827 *
29828 *      const strEq = R.eqBy(String);
29829 *      R.uniqWith(strEq)([1, '1', 2, 1]); //=> [1, 2]
29830 *      R.uniqWith(strEq)([{}, {}]);       //=> [{}]
29831 *      R.uniqWith(strEq)([1, '1', 1]);    //=> [1]
29832 *      R.uniqWith(strEq)(['1', 1, 1]);    //=> ['1']
29833 */
29834
29835
29836var uniqWith =
29837/*#__PURE__*/
29838_curry2(
29839/*#__PURE__*/
29840_dispatchable([], _xuniqWith, function (pred, list) {
29841  var idx = 0;
29842  var len = list.length;
29843  var result = [];
29844  var item;
29845
29846  while (idx < len) {
29847    item = list[idx];
29848
29849    if (!_includesWith(pred, item, result)) {
29850      result[result.length] = item;
29851    }
29852
29853    idx += 1;
29854  }
29855
29856  return result;
29857}));
29858
29859module.exports = uniqWith;
29860
29861/***/ }),
29862
vendor: 1,505 bytes, lines 29863-29907
29863/***/ "./node_modules/ramda/src/unless.js":
29864/*!******************************************!*\
29865  !*** ./node_modules/ramda/src/unless.js ***!
29866  \******************************************/
29867/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29868
29869var _curry3 =
29870/*#__PURE__*/
29871__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
29872/**
29873 * Tests the final argument by passing it to the given predicate function. If
29874 * the predicate is not satisfied, the function will return the result of
29875 * calling the `whenFalseFn` function with the same argument. If the predicate
29876 * is satisfied, the argument is returned as is.
29877 *
29878 * @func
29879 * @memberOf R
29880 * @since v0.18.0
29881 * @category Logic
29882 * @sig (a -> Boolean) -> (a -> b) -> a -> a | b
29883 * @param {Function} pred        A predicate function
29884 * @param {Function} whenFalseFn A function to invoke when the `pred` evaluates
29885 *                               to a falsy value.
29886 * @param {*}        x           An object to test with the `pred` function and
29887 *                               pass to `whenFalseFn` if necessary.
29888 * @return {*} Either `x` or the result of applying `x` to `whenFalseFn`.
29889 * @see R.ifElse, R.when, R.cond
29890 * @example
29891 *
29892 *      let safeInc = R.unless(R.isNil, R.inc);
29893 *      safeInc(null); //=> null
29894 *      safeInc(1); //=> 2
29895 */
29896
29897
29898var unless =
29899/*#__PURE__*/
29900_curry3(function unless(pred, whenFalseFn, x) {
29901  return pred(x) ? x : whenFalseFn(x);
29902});
29903
29904module.exports = unless;
29905
29906/***/ }),
29907
vendor: 1,022 bytes, lines 29908-29946
29908/***/ "./node_modules/ramda/src/unnest.js":
29909/*!******************************************!*\
29910  !*** ./node_modules/ramda/src/unnest.js ***!
29911  \******************************************/
29912/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29913
29914var _identity =
29915/*#__PURE__*/
29916__webpack_require__(/*! ./internal/_identity.js */ "./node_modules/ramda/src/internal/_identity.js");
29917
29918var chain =
29919/*#__PURE__*/
29920__webpack_require__(/*! ./chain.js */ "./node_modules/ramda/src/chain.js");
29921/**
29922 * Shorthand for `R.chain(R.identity)`, which removes one level of nesting from
29923 * any [Chain](https://github.com/fantasyland/fantasy-land#chain).
29924 *
29925 * @func
29926 * @memberOf R
29927 * @since v0.3.0
29928 * @category List
29929 * @sig Chain c => c (c a) -> c a
29930 * @param {*} list
29931 * @return {*}
29932 * @see R.flatten, R.chain
29933 * @example
29934 *
29935 *      R.unnest([1, [2], [[3]]]); //=> [1, 2, [3]]
29936 *      R.unnest([[1, 2], [3, 4], [5, 6]]); //=> [1, 2, 3, 4, 5, 6]
29937 */
29938
29939
29940var unnest =
29941/*#__PURE__*/
29942chain(_identity);
29943module.exports = unnest;
29944
29945/***/ }),
29946
vendor: 1,204 bytes, lines 29947-29992
29947/***/ "./node_modules/ramda/src/until.js":
29948/*!*****************************************!*\
29949  !*** ./node_modules/ramda/src/until.js ***!
29950  \*****************************************/
29951/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29952
29953var _curry3 =
29954/*#__PURE__*/
29955__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
29956/**
29957 * Takes a predicate, a transformation function, and an initial value,
29958 * and returns a value of the same type as the initial value.
29959 * It does so by applying the transformation until the predicate is satisfied,
29960 * at which point it returns the satisfactory value.
29961 *
29962 * @func
29963 * @memberOf R
29964 * @since v0.20.0
29965 * @category Logic
29966 * @sig (a -> Boolean) -> (a -> a) -> a -> a
29967 * @param {Function} pred A predicate function
29968 * @param {Function} fn The iterator function
29969 * @param {*} init Initial value
29970 * @return {*} Final value that satisfies predicate
29971 * @example
29972 *
29973 *      R.until(R.gt(R.__, 100), R.multiply(2))(1) // => 128
29974 */
29975
29976
29977var until =
29978/*#__PURE__*/
29979_curry3(function until(pred, fn, init) {
29980  var val = init;
29981
29982  while (!pred(val)) {
29983    val = fn(val);
29984  }
29985
29986  return val;
29987});
29988
29989module.exports = until;
29990
29991/***/ }),
29992
vendor: 2,081 bytes, lines 29993-30058
29993/***/ "./node_modules/ramda/src/unwind.js":
29994/*!******************************************!*\
29995  !*** ./node_modules/ramda/src/unwind.js ***!
29996  \******************************************/
29997/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
29998
29999var _curry2 =
30000/*#__PURE__*/
30001__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30002
30003var _isArray =
30004/*#__PURE__*/
30005__webpack_require__(/*! ./internal/_isArray.js */ "./node_modules/ramda/src/internal/_isArray.js");
30006
30007var _map =
30008/*#__PURE__*/
30009__webpack_require__(/*! ./internal/_map.js */ "./node_modules/ramda/src/internal/_map.js");
30010
30011var _assoc =
30012/*#__PURE__*/
30013__webpack_require__(/*! ./internal/_assoc.js */ "./node_modules/ramda/src/internal/_assoc.js");
30014/**
30015 *
30016 * Deconstructs an array field from the input documents to output a document for each element.
30017 * Each output document is the input document with the value of the array field replaced by the element.
30018 *
30019 * @func
30020 * @memberOf R
30021 * @since v0.28.0
30022 * @category Object
30023 * @sig String -> {k: [v]} -> [{k: v}]
30024 * @param {String} key The key to determine which property of the object should be unwind
30025 * @param {Object} object The object containing list under property named as key which is to unwind
30026 * @return {List} A new list of object containing the value of input key having list replaced by each element in the object.
30027 * @example
30028 *
30029 * R.unwind('hobbies', {
30030 *   name: 'alice',
30031 *   hobbies: ['Golf', 'Hacking'],
30032 *   colors: ['red', 'green'],
30033 * });
30034 * // [
30035 * //   { name: 'alice', hobbies: 'Golf', colors: ['red', 'green'] },
30036 * //   { name: 'alice', hobbies: 'Hacking', colors: ['red', 'green'] }
30037 * // ]
30038 */
30039
30040
30041var unwind =
30042/*#__PURE__*/
30043_curry2(function (key, object) {
30044  // If key is not in object or key is not as a list in object
30045  if (!(key in object && _isArray(object[key]))) {
30046    return [object];
30047  } // Map over object[key] which is a list and assoc each element with key
30048
30049
30050  return _map(function (item) {
30051    return _assoc(key, item, object);
30052  }, object[key]);
30053});
30054
30055module.exports = unwind;
30056
30057/***/ }),
30058
vendor: 1,534 bytes, lines 30059-30109
30059/***/ "./node_modules/ramda/src/update.js":
30060/*!******************************************!*\
30061  !*** ./node_modules/ramda/src/update.js ***!
30062  \******************************************/
30063/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30064
30065var _curry3 =
30066/*#__PURE__*/
30067__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
30068
30069var adjust =
30070/*#__PURE__*/
30071__webpack_require__(/*! ./adjust.js */ "./node_modules/ramda/src/adjust.js");
30072
30073var always =
30074/*#__PURE__*/
30075__webpack_require__(/*! ./always.js */ "./node_modules/ramda/src/always.js");
30076/**
30077 * Returns a new copy of the array with the element at the provided index
30078 * replaced with the given value.
30079 *
30080 * @func
30081 * @memberOf R
30082 * @since v0.14.0
30083 * @category List
30084 * @sig Number -> a -> [a] -> [a]
30085 * @param {Number} idx The index to update.
30086 * @param {*} x The value to exist at the given index of the returned array.
30087 * @param {Array|Arguments} list The source array-like object to be updated.
30088 * @return {Array} A copy of `list` with the value at index `idx` replaced with `x`.
30089 * @see R.adjust
30090 * @example
30091 *
30092 *      R.update(1, '_', ['a', 'b', 'c']);      //=> ['a', '_', 'c']
30093 *      R.update(-1, '_', ['a', 'b', 'c']);     //=> ['a', 'b', '_']
30094 * @symb R.update(-1, a, [b, c]) = [b, a]
30095 * @symb R.update(0, a, [b, c]) = [a, c]
30096 * @symb R.update(1, a, [b, c]) = [b, a]
30097 */
30098
30099
30100var update =
30101/*#__PURE__*/
30102_curry3(function update(idx, x, list) {
30103  return adjust(idx, always(x), list);
30104});
30105
30106module.exports = update;
30107
30108/***/ }),
30109
vendor: 2,232 bytes, lines 30110-30173
30110/***/ "./node_modules/ramda/src/useWith.js":
30111/*!*******************************************!*\
30112  !*** ./node_modules/ramda/src/useWith.js ***!
30113  \*******************************************/
30114/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30115
30116var _curry2 =
30117/*#__PURE__*/
30118__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30119
30120var curryN =
30121/*#__PURE__*/
30122__webpack_require__(/*! ./curryN.js */ "./node_modules/ramda/src/curryN.js");
30123/**
30124 * Accepts a function `fn` and a list of transformer functions and returns a
30125 * new curried function. When the new function is invoked, it calls the
30126 * function `fn` with parameters consisting of the result of calling each
30127 * supplied handler on successive arguments to the new function.
30128 *
30129 * If more arguments are passed to the returned function than transformer
30130 * functions, those arguments are passed directly to `fn` as additional
30131 * parameters. If you expect additional arguments that don't need to be
30132 * transformed, although you can ignore them, it's best to pass an identity
30133 * function so that the new function reports the correct arity.
30134 *
30135 * @func
30136 * @memberOf R
30137 * @since v0.1.0
30138 * @category Function
30139 * @sig ((x1, x2, ...) -> z) -> [(a -> x1), (b -> x2), ...] -> (a -> b -> ... -> z)
30140 * @param {Function} fn The function to wrap.
30141 * @param {Array} transformers A list of transformer functions
30142 * @return {Function} The wrapped function.
30143 * @see R.converge
30144 * @example
30145 *
30146 *      R.useWith(Math.pow, [R.identity, R.identity])(3, 4); //=> 81
30147 *      R.useWith(Math.pow, [R.identity, R.identity])(3)(4); //=> 81
30148 *      R.useWith(Math.pow, [R.dec, R.inc])(3, 4); //=> 32
30149 *      R.useWith(Math.pow, [R.dec, R.inc])(3)(4); //=> 32
30150 * @symb R.useWith(f, [g, h])(a, b) = f(g(a), h(b))
30151 */
30152
30153
30154var useWith =
30155/*#__PURE__*/
30156_curry2(function useWith(fn, transformers) {
30157  return curryN(transformers.length, function () {
30158    var args = [];
30159    var idx = 0;
30160
30161    while (idx < transformers.length) {
30162      args.push(transformers[idx].call(this, arguments[idx]));
30163      idx += 1;
30164    }
30165
30166    return fn.apply(this, args.concat(Array.prototype.slice.call(arguments, transformers.length)));
30167  });
30168});
30169
30170module.exports = useWith;
30171
30172/***/ }),
30173
vendor: 1,262 bytes, lines 30174-30225
30174/***/ "./node_modules/ramda/src/values.js":
30175/*!******************************************!*\
30176  !*** ./node_modules/ramda/src/values.js ***!
30177  \******************************************/
30178/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30179
30180var _curry1 =
30181/*#__PURE__*/
30182__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
30183
30184var keys =
30185/*#__PURE__*/
30186__webpack_require__(/*! ./keys.js */ "./node_modules/ramda/src/keys.js");
30187/**
30188 * Returns a list of all the enumerable own properties of the supplied object.
30189 * Note that the order of the output array is not guaranteed across different
30190 * JS platforms.
30191 *
30192 * @func
30193 * @memberOf R
30194 * @since v0.1.0
30195 * @category Object
30196 * @sig {k: v} -> [v]
30197 * @param {Object} obj The object to extract values from
30198 * @return {Array} An array of the values of the object's own properties.
30199 * @see R.valuesIn, R.keys, R.toPairs
30200 * @example
30201 *
30202 *      R.values({a: 1, b: 2, c: 3}); //=> [1, 2, 3]
30203 */
30204
30205
30206var values =
30207/*#__PURE__*/
30208_curry1(function values(obj) {
30209  var props = keys(obj);
30210  var len = props.length;
30211  var vals = [];
30212  var idx = 0;
30213
30214  while (idx < len) {
30215    vals[idx] = obj[props[idx]];
30216    idx += 1;
30217  }
30218
30219  return vals;
30220});
30221
30222module.exports = values;
30223
30224/***/ }),
30225
vendor: 1,233 bytes, lines 30226-30274
30226/***/ "./node_modules/ramda/src/valuesIn.js":
30227/*!********************************************!*\
30228  !*** ./node_modules/ramda/src/valuesIn.js ***!
30229  \********************************************/
30230/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30231
30232var _curry1 =
30233/*#__PURE__*/
30234__webpack_require__(/*! ./internal/_curry1.js */ "./node_modules/ramda/src/internal/_curry1.js");
30235/**
30236 * Returns a list of all the properties, including prototype properties, of the
30237 * supplied object.
30238 * Note that the order of the output array is not guaranteed to be consistent
30239 * across different JS platforms.
30240 *
30241 * @func
30242 * @memberOf R
30243 * @since v0.2.0
30244 * @category Object
30245 * @sig {k: v} -> [v]
30246 * @param {Object} obj The object to extract values from
30247 * @return {Array} An array of the values of the object's own and prototype properties.
30248 * @see R.values, R.keysIn
30249 * @example
30250 *
30251 *      const F = function() { this.x = 'X'; };
30252 *      F.prototype.y = 'Y';
30253 *      const f = new F();
30254 *      R.valuesIn(f); //=> ['X', 'Y']
30255 */
30256
30257
30258var valuesIn =
30259/*#__PURE__*/
30260_curry1(function valuesIn(obj) {
30261  var prop;
30262  var vs = [];
30263
30264  for (prop in obj) {
30265    vs[vs.length] = obj[prop];
30266  }
30267
30268  return vs;
30269});
30270
30271module.exports = valuesIn;
30272
30273/***/ }),
30274
vendor: 1,434 bytes, lines 30275-30328
30275/***/ "./node_modules/ramda/src/view.js":
30276/*!****************************************!*\
30277  !*** ./node_modules/ramda/src/view.js ***!
30278  \****************************************/
30279/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30280
30281var _curry2 =
30282/*#__PURE__*/
30283__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js"); // `Const` is a functor that effectively ignores the function given to `map`.
30284
30285
30286var Const = function (x) {
30287  return {
30288    value: x,
30289    'fantasy-land/map': function () {
30290      return this;
30291    }
30292  };
30293};
30294/**
30295 * Returns a "view" of the given data structure, determined by the given lens.
30296 * The lens's focus determines which portion of the data structure is visible.
30297 *
30298 * @func
30299 * @memberOf R
30300 * @since v0.16.0
30301 * @category Object
30302 * @typedefn Lens s a = Functor f => (a -> f a) -> s -> f s
30303 * @sig Lens s a -> s -> a
30304 * @param {Lens} lens
30305 * @param {*} x
30306 * @return {*}
30307 * @see R.set, R.over, R.lens, R.lensIndex, R.lensProp, R.lensPath
30308 * @example
30309 *
30310 *      const xLens = R.lensProp('x');
30311 *
30312 *      R.view(xLens, {x: 1, y: 2});  //=> 1
30313 *      R.view(xLens, {x: 4, y: 2});  //=> 4
30314 */
30315
30316
30317var view =
30318/*#__PURE__*/
30319_curry2(function view(lens, x) {
30320  // Using `Const` effectively ignores the setter function of the `lens`,
30321  // leaving the value returned by the getter function unmodified.
30322  return lens(Const)(x).value;
30323});
30324
30325module.exports = view;
30326
30327/***/ }),
30328
vendor: 1,680 bytes, lines 30329-30377
30329/***/ "./node_modules/ramda/src/when.js":
30330/*!****************************************!*\
30331  !*** ./node_modules/ramda/src/when.js ***!
30332  \****************************************/
30333/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30334
30335var _curry3 =
30336/*#__PURE__*/
30337__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
30338/**
30339 * Tests the final argument by passing it to the given predicate function. If
30340 * the predicate is satisfied, the function will return the result of calling
30341 * the `whenTrueFn` function with the same argument. If the predicate is not
30342 * satisfied, the argument is returned as is.
30343 *
30344 * @func
30345 * @memberOf R
30346 * @since v0.18.0
30347 * @category Logic
30348 * @sig (a -> Boolean) -> (a -> b) -> a -> a | b
30349 * @param {Function} pred       A predicate function
30350 * @param {Function} whenTrueFn A function to invoke when the `condition`
30351 *                              evaluates to a truthy value.
30352 * @param {*}        x          An object to test with the `pred` function and
30353 *                              pass to `whenTrueFn` if necessary.
30354 * @return {*} Either `x` or the result of applying `x` to `whenTrueFn`.
30355 * @see R.ifElse, R.unless, R.cond
30356 * @example
30357 *
30358 *      // truncate :: String -> String
30359 *      const truncate = R.when(
30360 *        R.propSatisfies(R.gt(R.__, 10), 'length'),
30361 *        R.pipe(R.take(10), R.append('…'), R.join(''))
30362 *      );
30363 *      truncate('12345');         //=> '12345'
30364 *      truncate('0123456789ABC'); //=> '0123456789…'
30365 */
30366
30367
30368var when =
30369/*#__PURE__*/
30370_curry3(function when(pred, whenTrueFn, x) {
30371  return pred(x) ? whenTrueFn(x) : x;
30372});
30373
30374module.exports = when;
30375
30376/***/ }),
30377
vendor: 1,973 bytes, lines 30378-30443
30378/***/ "./node_modules/ramda/src/where.js":
30379/*!*****************************************!*\
30380  !*** ./node_modules/ramda/src/where.js ***!
30381  \*****************************************/
30382/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30383
30384var _curry2 =
30385/*#__PURE__*/
30386__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30387
30388var _has =
30389/*#__PURE__*/
30390__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
30391/**
30392 * Takes a spec object and a test object; returns true if the test satisfies
30393 * the spec. Each of the spec's own properties must be a predicate function.
30394 * Each predicate is applied to the value of the corresponding property of the
30395 * test object. `where` returns true if all the predicates return true, false
30396 * otherwise.
30397 *
30398 * `where` is well suited to declaratively expressing constraints for other
30399 * functions such as [`filter`](#filter) and [`find`](#find).
30400 *
30401 * @func
30402 * @memberOf R
30403 * @since v0.1.1
30404 * @category Object
30405 * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean
30406 * @param {Object} spec
30407 * @param {Object} testObj
30408 * @return {Boolean}
30409 * @see R.propSatisfies, R.whereEq
30410 * @example
30411 *
30412 *      // pred :: Object -> Boolean
30413 *      const pred = R.where({
30414 *        a: R.equals('foo'),
30415 *        b: R.complement(R.equals('bar')),
30416 *        x: R.gt(R.__, 10),
30417 *        y: R.lt(R.__, 20)
30418 *      });
30419 *
30420 *      pred({a: 'foo', b: 'xxx', x: 11, y: 19}); //=> true
30421 *      pred({a: 'xxx', b: 'xxx', x: 11, y: 19}); //=> false
30422 *      pred({a: 'foo', b: 'bar', x: 11, y: 19}); //=> false
30423 *      pred({a: 'foo', b: 'xxx', x: 10, y: 19}); //=> false
30424 *      pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> false
30425 */
30426
30427
30428var where =
30429/*#__PURE__*/
30430_curry2(function where(spec, testObj) {
30431  for (var prop in spec) {
30432    if (_has(prop, spec) && !spec[prop](testObj[prop])) {
30433      return false;
30434    }
30435  }
30436
30437  return true;
30438});
30439
30440module.exports = where;
30441
30442/***/ }),
30443
vendor: 1,961 bytes, lines 30444-30508
30444/***/ "./node_modules/ramda/src/whereAny.js":
30445/*!********************************************!*\
30446  !*** ./node_modules/ramda/src/whereAny.js ***!
30447  \********************************************/
30448/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30449
30450var _curry2 =
30451/*#__PURE__*/
30452__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30453
30454var _has =
30455/*#__PURE__*/
30456__webpack_require__(/*! ./internal/_has.js */ "./node_modules/ramda/src/internal/_has.js");
30457/**
30458 * Takes a spec object and a test object; each of the spec's own properties must be a predicate function.
30459 * Each predicate is applied to the value of the corresponding property of the
30460 * test object. `whereAny` returns true if at least one of the predicates return true,
30461 * false otherwise.
30462 *
30463 * `whereAny` is well suited to declaratively expressing constraints for other
30464 * functions such as [`filter`](#filter) and [`find`](#find).
30465 *
30466 * @func
30467 * @memberOf R
30468 * @since v0.28.0
30469 * @category Object
30470 * @sig {String: (* -> Boolean)} -> {String: *} -> Boolean
30471 * @param {Object} spec
30472 * @param {Object} testObj
30473 * @return {Boolean}
30474 * @see R.propSatisfies, R.where
30475 * @example
30476 *
30477 *      // pred :: Object -> Boolean
30478 *      const pred = R.whereAny({
30479 *        a: R.equals('foo'),
30480 *        b: R.complement(R.equals('xxx')),
30481 *        x: R.gt(R.__, 10),
30482 *        y: R.lt(R.__, 20)
30483 *      });
30484 *
30485 *      pred({a: 'foo', b: 'xxx', x: 8, y: 34}); //=> true
30486 *      pred({a: 'xxx', b: 'xxx', x: 9, y: 21}); //=> false
30487 *      pred({a: 'bar', b: 'xxx', x: 10, y: 20}); //=> false
30488 *      pred({a: 'foo', b: 'bar', x: 10, y: 20}); //=> true
30489 *      pred({a: 'foo', b: 'xxx', x: 11, y: 20}); //=> true
30490 */
30491
30492
30493var whereAny =
30494/*#__PURE__*/
30495_curry2(function whereAny(spec, testObj) {
30496  for (var prop in spec) {
30497    if (_has(prop, spec) && spec[prop](testObj[prop])) {
30498      return true;
30499    }
30500  }
30501
30502  return false;
30503});
30504
30505module.exports = whereAny;
30506
30507/***/ }),
30508
vendor: 1,729 bytes, lines 30509-30569
30509/***/ "./node_modules/ramda/src/whereEq.js":
30510/*!*******************************************!*\
30511  !*** ./node_modules/ramda/src/whereEq.js ***!
30512  \*******************************************/
30513/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30514
30515var _curry2 =
30516/*#__PURE__*/
30517__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30518
30519var equals =
30520/*#__PURE__*/
30521__webpack_require__(/*! ./equals.js */ "./node_modules/ramda/src/equals.js");
30522
30523var map =
30524/*#__PURE__*/
30525__webpack_require__(/*! ./map.js */ "./node_modules/ramda/src/map.js");
30526
30527var where =
30528/*#__PURE__*/
30529__webpack_require__(/*! ./where.js */ "./node_modules/ramda/src/where.js");
30530/**
30531 * Takes a spec object and a test object; returns true if the test satisfies
30532 * the spec, false otherwise. An object satisfies the spec if, for each of the
30533 * spec's own properties, accessing that property of the object gives the same
30534 * value (in [`R.equals`](#equals) terms) as accessing that property of the
30535 * spec.
30536 *
30537 * `whereEq` is a specialization of [`where`](#where).
30538 *
30539 * @func
30540 * @memberOf R
30541 * @since v0.14.0
30542 * @category Object
30543 * @sig {String: *} -> {String: *} -> Boolean
30544 * @param {Object} spec
30545 * @param {Object} testObj
30546 * @return {Boolean}
30547 * @see R.propEq, R.where
30548 * @example
30549 *
30550 *      // pred :: Object -> Boolean
30551 *      const pred = R.whereEq({a: 1, b: 2});
30552 *
30553 *      pred({a: 1});              //=> false
30554 *      pred({a: 1, b: 2});        //=> true
30555 *      pred({a: 1, b: 2, c: 3});  //=> true
30556 *      pred({a: 1, b: 1});        //=> false
30557 */
30558
30559
30560var whereEq =
30561/*#__PURE__*/
30562_curry2(function whereEq(spec, testObj) {
30563  return where(map(equals, spec), testObj);
30564});
30565
30566module.exports = whereEq;
30567
30568/***/ }),
30569
vendor: 1,451 bytes, lines 30570-30621
30570/***/ "./node_modules/ramda/src/without.js":
30571/*!*******************************************!*\
30572  !*** ./node_modules/ramda/src/without.js ***!
30573  \*******************************************/
30574/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30575
30576var _includes =
30577/*#__PURE__*/
30578__webpack_require__(/*! ./internal/_includes.js */ "./node_modules/ramda/src/internal/_includes.js");
30579
30580var _curry2 =
30581/*#__PURE__*/
30582__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30583
30584var flip =
30585/*#__PURE__*/
30586__webpack_require__(/*! ./flip.js */ "./node_modules/ramda/src/flip.js");
30587
30588var reject =
30589/*#__PURE__*/
30590__webpack_require__(/*! ./reject.js */ "./node_modules/ramda/src/reject.js");
30591/**
30592 * Returns a new list without values in the first argument.
30593 * [`R.equals`](#equals) is used to determine equality.
30594 *
30595 * Acts as a transducer if a transformer is given in list position.
30596 *
30597 * @func
30598 * @memberOf R
30599 * @since v0.19.0
30600 * @category List
30601 * @sig [a] -> [a] -> [a]
30602 * @param {Array} list1 The values to be removed from `list2`.
30603 * @param {Array} list2 The array to remove values from.
30604 * @return {Array} The new array without values in `list1`.
30605 * @see R.transduce, R.difference, R.remove
30606 * @example
30607 *
30608 *      R.without([1, 2], [1, 2, 1, 3, 4]); //=> [3, 4]
30609 */
30610
30611
30612var without =
30613/*#__PURE__*/
30614_curry2(function (xs, list) {
30615  return reject(flip(_includes)(xs), list);
30616});
30617
30618module.exports = without;
30619
30620/***/ }),
30621
vendor: 1,051 bytes, lines 30622-30663
30622/***/ "./node_modules/ramda/src/xor.js":
30623/*!***************************************!*\
30624  !*** ./node_modules/ramda/src/xor.js ***!
30625  \***************************************/
30626/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30627
30628var _curry2 =
30629/*#__PURE__*/
30630__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30631/**
30632 * Exclusive disjunction logical operation.
30633 * Returns `true` if one of the arguments is truthy and the other is falsy.
30634 * Otherwise, it returns `false`.
30635 *
30636 * @func
30637 * @memberOf R
30638 * @since v0.27.1
30639 * @category Logic
30640 * @sig a -> b -> Boolean
30641 * @param {Any} a
30642 * @param {Any} b
30643 * @return {Boolean} true if one of the arguments is truthy and the other is falsy
30644 * @see R.or, R.and
30645 * @example
30646 *
30647 *      R.xor(true, true); //=> false
30648 *      R.xor(true, false); //=> true
30649 *      R.xor(false, true); //=> true
30650 *      R.xor(false, false); //=> false
30651 */
30652
30653
30654var xor =
30655/*#__PURE__*/
30656_curry2(function xor(a, b) {
30657  return Boolean(!a ^ !b);
30658});
30659
30660module.exports = xor;
30661
30662/***/ }),
30663
vendor: 1,344 bytes, lines 30664-30720
30664/***/ "./node_modules/ramda/src/xprod.js":
30665/*!*****************************************!*\
30666  !*** ./node_modules/ramda/src/xprod.js ***!
30667  \*****************************************/
30668/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30669
30670var _curry2 =
30671/*#__PURE__*/
30672__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30673/**
30674 * Creates a new list out of the two supplied by creating each possible pair
30675 * from the lists.
30676 *
30677 * @func
30678 * @memberOf R
30679 * @since v0.1.0
30680 * @category List
30681 * @sig [a] -> [b] -> [[a,b]]
30682 * @param {Array} as The first list.
30683 * @param {Array} bs The second list.
30684 * @return {Array} The list made by combining each possible pair from
30685 *         `as` and `bs` into pairs (`[a, b]`).
30686 * @example
30687 *
30688 *      R.xprod([1, 2], ['a', 'b']); //=> [[1, 'a'], [1, 'b'], [2, 'a'], [2, 'b']]
30689 * @symb R.xprod([a, b], [c, d]) = [[a, c], [a, d], [b, c], [b, d]]
30690 */
30691
30692
30693var xprod =
30694/*#__PURE__*/
30695_curry2(function xprod(a, b) {
30696  // = xprodWith(prepend); (takes about 3 times as long...)
30697  var idx = 0;
30698  var ilen = a.length;
30699  var j;
30700  var jlen = b.length;
30701  var result = [];
30702
30703  while (idx < ilen) {
30704    j = 0;
30705
30706    while (j < jlen) {
30707      result[result.length] = [a[idx], b[j]];
30708      j += 1;
30709    }
30710
30711    idx += 1;
30712  }
30713
30714  return result;
30715});
30716
30717module.exports = xprod;
30718
30719/***/ }),
30720
vendor: 1,350 bytes, lines 30721-30769
30721/***/ "./node_modules/ramda/src/zip.js":
30722/*!***************************************!*\
30723  !*** ./node_modules/ramda/src/zip.js ***!
30724  \***************************************/
30725/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30726
30727var _curry2 =
30728/*#__PURE__*/
30729__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30730/**
30731 * Creates a new list out of the two supplied by pairing up equally-positioned
30732 * items from both lists. The returned list is truncated to the length of the
30733 * shorter of the two input lists.
30734 * Note: `zip` is equivalent to `zipWith(function(a, b) { return [a, b] })`.
30735 *
30736 * @func
30737 * @memberOf R
30738 * @since v0.1.0
30739 * @category List
30740 * @sig [a] -> [b] -> [[a,b]]
30741 * @param {Array} list1 The first array to consider.
30742 * @param {Array} list2 The second array to consider.
30743 * @return {Array} The list made by pairing up same-indexed elements of `list1` and `list2`.
30744 * @example
30745 *
30746 *      R.zip([1, 2, 3], ['a', 'b', 'c']); //=> [[1, 'a'], [2, 'b'], [3, 'c']]
30747 * @symb R.zip([a, b, c], [d, e, f]) = [[a, d], [b, e], [c, f]]
30748 */
30749
30750
30751var zip =
30752/*#__PURE__*/
30753_curry2(function zip(a, b) {
30754  var rv = [];
30755  var idx = 0;
30756  var len = Math.min(a.length, b.length);
30757
30758  while (idx < len) {
30759    rv[idx] = [a[idx], b[idx]];
30760    idx += 1;
30761  }
30762
30763  return rv;
30764});
30765
30766module.exports = zip;
30767
30768/***/ }),
30769
vendor: 1,307 bytes, lines 30770-30816
30770/***/ "./node_modules/ramda/src/zipObj.js":
30771/*!******************************************!*\
30772  !*** ./node_modules/ramda/src/zipObj.js ***!
30773  \******************************************/
30774/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30775
30776var _curry2 =
30777/*#__PURE__*/
30778__webpack_require__(/*! ./internal/_curry2.js */ "./node_modules/ramda/src/internal/_curry2.js");
30779/**
30780 * Creates a new object out of a list of keys and a list of values.
30781 * Key/value pairing is truncated to the length of the shorter of the two lists.
30782 * Note: `zipObj` is equivalent to `pipe(zip, fromPairs)`.
30783 *
30784 * @func
30785 * @memberOf R
30786 * @since v0.3.0
30787 * @category List
30788 * @sig [String] -> [*] -> {String: *}
30789 * @param {Array} keys The array that will be properties on the output object.
30790 * @param {Array} values The list of values on the output object.
30791 * @return {Object} The object made by pairing up same-indexed elements of `keys` and `values`.
30792 * @example
30793 *
30794 *      R.zipObj(['a', 'b', 'c'], [1, 2, 3]); //=> {a: 1, b: 2, c: 3}
30795 */
30796
30797
30798var zipObj =
30799/*#__PURE__*/
30800_curry2(function zipObj(keys, values) {
30801  var idx = 0;
30802  var len = Math.min(keys.length, values.length);
30803  var out = {};
30804
30805  while (idx < len) {
30806    out[keys[idx]] = values[idx];
30807    idx += 1;
30808  }
30809
30810  return out;
30811});
30812
30813module.exports = zipObj;
30814
30815/***/ }),
30816
vendor: 1,536 bytes, lines 30817-30870
30817/***/ "./node_modules/ramda/src/zipWith.js":
30818/*!*******************************************!*\
30819  !*** ./node_modules/ramda/src/zipWith.js ***!
30820  \*******************************************/
30821/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
30822
30823var _curry3 =
30824/*#__PURE__*/
30825__webpack_require__(/*! ./internal/_curry3.js */ "./node_modules/ramda/src/internal/_curry3.js");
30826/**
30827 * Creates a new list out of the two supplied by applying the function to each
30828 * equally-positioned pair in the lists. The returned list is truncated to the
30829 * length of the shorter of the two input lists.
30830 *
30831 * @function
30832 * @memberOf R
30833 * @since v0.1.0
30834 * @category List
30835 * @sig ((a, b) -> c) -> [a] -> [b] -> [c]
30836 * @param {Function} fn The function used to combine the two elements into one value.
30837 * @param {Array} list1 The first array to consider.
30838 * @param {Array} list2 The second array to consider.
30839 * @return {Array} The list made by combining same-indexed elements of `list1` and `list2`
30840 *         using `fn`.
30841 * @example
30842 *
30843 *      const f = (x, y) => {
30844 *        // ...
30845 *      };
30846 *      R.zipWith(f, [1, 2, 3], ['a', 'b', 'c']);
30847 *      //=> [f(1, 'a'), f(2, 'b'), f(3, 'c')]
30848 * @symb R.zipWith(fn, [a, b, c], [d, e, f]) = [fn(a, d), fn(b, e), fn(c, f)]
30849 */
30850
30851
30852var zipWith =
30853/*#__PURE__*/
30854_curry3(function zipWith(fn, a, b) {
30855  var rv = [];
30856  var idx = 0;
30857  var len = Math.min(a.length, b.length);
30858
30859  while (idx < len) {
30860    rv[idx] = fn(a[idx], b[idx]);
30861    idx += 1;
30862  }
30863
30864  return rv;
30865});
30866
30867module.exports = zipWith;
30868
30869/***/ }),
30870
vendor: 7,786 bytes, lines 30871-30994
30871/***/ "./node_modules/react-copy-to-clipboard/lib/Component.js":
30872/*!***************************************************************!*\
30873  !*** ./node_modules/react-copy-to-clipboard/lib/Component.js ***!
30874  \***************************************************************/
30875/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
30876
30877"use strict";
30878
30879
30880function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
30881
30882Object.defineProperty(exports, "__esModule", ({
30883  value: true
30884}));
30885exports.CopyToClipboard = void 0;
30886
30887var _react = _interopRequireDefault(__webpack_require__(/*! react */ "./node_modules/react/index.js"));
30888
30889var _copyToClipboard = _interopRequireDefault(__webpack_require__(/*! copy-to-clipboard */ "./node_modules/copy-to-clipboard/index.js"));
30890
30891var _excluded = ["text", "onCopy", "options", "children"];
30892
30893function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
30894
30895function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
30896
30897function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
30898
30899function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
30900
30901function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
30902
30903function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
30904
30905function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
30906
30907function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
30908
30909function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); Object.defineProperty(subClass, "prototype", { writable: false }); if (superClass) _setPrototypeOf(subClass, superClass); }
30910
30911function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
30912
30913function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }
30914
30915function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } else if (call !== void 0) { throw new TypeError("Derived constructors may only return object or undefined"); } return _assertThisInitialized(self); }
30916
30917function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
30918
30919function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }
30920
30921function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
30922
30923function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
30924
30925var CopyToClipboard = /*#__PURE__*/function (_React$PureComponent) {
30926  _inherits(CopyToClipboard, _React$PureComponent);
30927
30928  var _super = _createSuper(CopyToClipboard);
30929
30930  function CopyToClipboard() {
30931    var _this;
30932
30933    _classCallCheck(this, CopyToClipboard);
30934
30935    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
30936      args[_key] = arguments[_key];
30937    }
30938
30939    _this = _super.call.apply(_super, [this].concat(args));
30940
30941    _defineProperty(_assertThisInitialized(_this), "onClick", function (event) {
30942      var _this$props = _this.props,
30943          text = _this$props.text,
30944          onCopy = _this$props.onCopy,
30945          children = _this$props.children,
30946          options = _this$props.options;
30947
30948      var elem = _react["default"].Children.only(children);
30949
30950      var result = (0, _copyToClipboard["default"])(text, options);
30951
30952      if (onCopy) {
30953        onCopy(text, result);
30954      } // Bypass onClick if it was present
30955
30956
30957      if (elem && elem.props && typeof elem.props.onClick === 'function') {
30958        elem.props.onClick(event);
30959      }
30960    });
30961
30962    return _this;
30963  }
30964
30965  _createClass(CopyToClipboard, [{
30966    key: "render",
30967    value: function render() {
30968      var _this$props2 = this.props,
30969          _text = _this$props2.text,
30970          _onCopy = _this$props2.onCopy,
30971          _options = _this$props2.options,
30972          children = _this$props2.children,
30973          props = _objectWithoutProperties(_this$props2, _excluded);
30974
30975      var elem = _react["default"].Children.only(children);
30976
30977      return /*#__PURE__*/_react["default"].cloneElement(elem, _objectSpread(_objectSpread({}, props), {}, {
30978        onClick: this.onClick
30979      }));
30980    }
30981  }]);
30982
30983  return CopyToClipboard;
30984}(_react["default"].PureComponent);
30985
30986exports.CopyToClipboard = CopyToClipboard;
30987
30988_defineProperty(CopyToClipboard, "defaultProps", {
30989  onCopy: undefined,
30990  options: undefined
30991});
30992
30993/***/ }),
30994
vendor: 600 bytes, lines 30995-31011
30995/***/ "./node_modules/react-copy-to-clipboard/lib/index.js":
30996/*!***********************************************************!*\
30997  !*** ./node_modules/react-copy-to-clipboard/lib/index.js ***!
30998  \***********************************************************/
30999/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
31000
31001"use strict";
31002
31003
31004var _require = __webpack_require__(/*! ./Component */ "./node_modules/react-copy-to-clipboard/lib/Component.js"),
31005    CopyToClipboard = _require.CopyToClipboard;
31006
31007CopyToClipboard.CopyToClipboard = CopyToClipboard;
31008module.exports = CopyToClipboard;
31009
31010/***/ }),
31011
vendor: 894,764 bytes, lines 31012-57279
31012/***/ "./node_modules/react-dom/cjs/react-dom.development.js":
31013/*!*************************************************************!*\
31014  !*** ./node_modules/react-dom/cjs/react-dom.development.js ***!
31015  \*************************************************************/
31016/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
31017
31018"use strict";
31019/** @license React v17.0.2
31020 * react-dom.development.js
31021 *
31022 * Copyright (c) Facebook, Inc. and its affiliates.
31023 *
31024 * This source code is licensed under the MIT license found in the
31025 * LICENSE file in the root directory of this source tree.
31026 */
31027
31028
31029
31030if (true) {
31031  (function() {
31032'use strict';
31033
31034var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
31035var _assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
31036var Scheduler = __webpack_require__(/*! scheduler */ "./node_modules/scheduler/index.js");
31037var tracing = __webpack_require__(/*! scheduler/tracing */ "./node_modules/scheduler/tracing.js");
31038
31039var ReactSharedInternals = React.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
31040
31041// by calls to these methods by a Babel plugin.
31042//
31043// In PROD (or in packages without access to React internals),
31044// they are left as they are instead.
31045
31046function warn(format) {
31047  {
31048    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
31049      args[_key - 1] = arguments[_key];
31050    }
31051
31052    printWarning('warn', format, args);
31053  }
31054}
31055function error(format) {
31056  {
31057    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
31058      args[_key2 - 1] = arguments[_key2];
31059    }
31060
31061    printWarning('error', format, args);
31062  }
31063}
31064
31065function printWarning(level, format, args) {
31066  // When changing this logic, you might want to also
31067  // update consoleWithStackDev.www.js as well.
31068  {
31069    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
31070    var stack = ReactDebugCurrentFrame.getStackAddendum();
31071
31072    if (stack !== '') {
31073      format += '%s';
31074      args = args.concat([stack]);
31075    }
31076
31077    var argsWithFormat = args.map(function (item) {
31078      return '' + item;
31079    }); // Careful: RN currently depends on this prefix
31080
31081    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
31082    // breaks IE9: https://github.com/facebook/react/issues/13610
31083    // eslint-disable-next-line react-internal/no-production-logging
31084
31085    Function.prototype.apply.call(console[level], console, argsWithFormat);
31086  }
31087}
31088
31089if (!React) {
31090  {
31091    throw Error( "ReactDOM was loaded before React. Make sure you load the React package before loading ReactDOM." );
31092  }
31093}
31094
31095var FunctionComponent = 0;
31096var ClassComponent = 1;
31097var IndeterminateComponent = 2; // Before we know whether it is function or class
31098
31099var HostRoot = 3; // Root of a host tree. Could be nested inside another node.
31100
31101var HostPortal = 4; // A subtree. Could be an entry point to a different renderer.
31102
31103var HostComponent = 5;
31104var HostText = 6;
31105var Fragment = 7;
31106var Mode = 8;
31107var ContextConsumer = 9;
31108var ContextProvider = 10;
31109var ForwardRef = 11;
31110var Profiler = 12;
31111var SuspenseComponent = 13;
31112var MemoComponent = 14;
31113var SimpleMemoComponent = 15;
31114var LazyComponent = 16;
31115var IncompleteClassComponent = 17;
31116var DehydratedFragment = 18;
31117var SuspenseListComponent = 19;
31118var FundamentalComponent = 20;
31119var ScopeComponent = 21;
31120var Block = 22;
31121var OffscreenComponent = 23;
31122var LegacyHiddenComponent = 24;
31123
31124// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.
31125
31126var enableProfilerTimer = true; // Record durations for commit and passive effects phases.
31127
31128var enableFundamentalAPI = false; // Experimental Scope support.
31129var enableNewReconciler = false; // Errors that are thrown while unmounting (or after in the case of passive effects)
31130var warnAboutStringRefs = false;
31131
31132var allNativeEvents = new Set();
31133/**
31134 * Mapping from registration name to event name
31135 */
31136
31137
31138var registrationNameDependencies = {};
31139/**
31140 * Mapping from lowercase registration names to the properly cased version,
31141 * used to warn in the case of missing event handlers. Available
31142 * only in true.
31143 * @type {Object}
31144 */
31145
31146var possibleRegistrationNames =  {} ; // Trust the developer to only use possibleRegistrationNames in true
31147
31148function registerTwoPhaseEvent(registrationName, dependencies) {
31149  registerDirectEvent(registrationName, dependencies);
31150  registerDirectEvent(registrationName + 'Capture', dependencies);
31151}
31152function registerDirectEvent(registrationName, dependencies) {
31153  {
31154    if (registrationNameDependencies[registrationName]) {
31155      error('EventRegistry: More than one plugin attempted to publish the same ' + 'registration name, `%s`.', registrationName);
31156    }
31157  }
31158
31159  registrationNameDependencies[registrationName] = dependencies;
31160
31161  {
31162    var lowerCasedName = registrationName.toLowerCase();
31163    possibleRegistrationNames[lowerCasedName] = registrationName;
31164
31165    if (registrationName === 'onDoubleClick') {
31166      possibleRegistrationNames.ondblclick = registrationName;
31167    }
31168  }
31169
31170  for (var i = 0; i < dependencies.length; i++) {
31171    allNativeEvents.add(dependencies[i]);
31172  }
31173}
31174
31175var canUseDOM = !!(typeof window !== 'undefined' && typeof window.document !== 'undefined' && typeof window.document.createElement !== 'undefined');
31176
31177// A reserved attribute.
31178// It is handled by React separately and shouldn't be written to the DOM.
31179var RESERVED = 0; // A simple string attribute.
31180// Attributes that aren't in the filter are presumed to have this type.
31181
31182var STRING = 1; // A string attribute that accepts booleans in React. In HTML, these are called
31183// "enumerated" attributes with "true" and "false" as possible values.
31184// When true, it should be set to a "true" string.
31185// When false, it should be set to a "false" string.
31186
31187var BOOLEANISH_STRING = 2; // A real boolean attribute.
31188// When true, it should be present (set either to an empty string or its name).
31189// When false, it should be omitted.
31190
31191var BOOLEAN = 3; // An attribute that can be used as a flag as well as with a value.
31192// When true, it should be present (set either to an empty string or its name).
31193// When false, it should be omitted.
31194// For any other value, should be present with that value.
31195
31196var OVERLOADED_BOOLEAN = 4; // An attribute that must be numeric or parse as a numeric.
31197// When falsy, it should be removed.
31198
31199var NUMERIC = 5; // An attribute that must be positive numeric or parse as a positive numeric.
31200// When falsy, it should be removed.
31201
31202var POSITIVE_NUMERIC = 6;
31203
31204/* eslint-disable max-len */
31205var ATTRIBUTE_NAME_START_CHAR = ":A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD";
31206/* eslint-enable max-len */
31207
31208var ATTRIBUTE_NAME_CHAR = ATTRIBUTE_NAME_START_CHAR + "\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040";
31209var ROOT_ATTRIBUTE_NAME = 'data-reactroot';
31210var VALID_ATTRIBUTE_NAME_REGEX = new RegExp('^[' + ATTRIBUTE_NAME_START_CHAR + '][' + ATTRIBUTE_NAME_CHAR + ']*$');
31211var hasOwnProperty = Object.prototype.hasOwnProperty;
31212var illegalAttributeNameCache = {};
31213var validatedAttributeNameCache = {};
31214function isAttributeNameSafe(attributeName) {
31215  if (hasOwnProperty.call(validatedAttributeNameCache, attributeName)) {
31216    return true;
31217  }
31218
31219  if (hasOwnProperty.call(illegalAttributeNameCache, attributeName)) {
31220    return false;
31221  }
31222
31223  if (VALID_ATTRIBUTE_NAME_REGEX.test(attributeName)) {
31224    validatedAttributeNameCache[attributeName] = true;
31225    return true;
31226  }
31227
31228  illegalAttributeNameCache[attributeName] = true;
31229
31230  {
31231    error('Invalid attribute name: `%s`', attributeName);
31232  }
31233
31234  return false;
31235}
31236function shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag) {
31237  if (propertyInfo !== null) {
31238    return propertyInfo.type === RESERVED;
31239  }
31240
31241  if (isCustomComponentTag) {
31242    return false;
31243  }
31244
31245  if (name.length > 2 && (name[0] === 'o' || name[0] === 'O') && (name[1] === 'n' || name[1] === 'N')) {
31246    return true;
31247  }
31248
31249  return false;
31250}
31251function shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag) {
31252  if (propertyInfo !== null && propertyInfo.type === RESERVED) {
31253    return false;
31254  }
31255
31256  switch (typeof value) {
31257    case 'function': // $FlowIssue symbol is perfectly valid here
31258
31259    case 'symbol':
31260      // eslint-disable-line
31261      return true;
31262
31263    case 'boolean':
31264      {
31265        if (isCustomComponentTag) {
31266          return false;
31267        }
31268
31269        if (propertyInfo !== null) {
31270          return !propertyInfo.acceptsBooleans;
31271        } else {
31272          var prefix = name.toLowerCase().slice(0, 5);
31273          return prefix !== 'data-' && prefix !== 'aria-';
31274        }
31275      }
31276
31277    default:
31278      return false;
31279  }
31280}
31281function shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag) {
31282  if (value === null || typeof value === 'undefined') {
31283    return true;
31284  }
31285
31286  if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, isCustomComponentTag)) {
31287    return true;
31288  }
31289
31290  if (isCustomComponentTag) {
31291    return false;
31292  }
31293
31294  if (propertyInfo !== null) {
31295
31296    switch (propertyInfo.type) {
31297      case BOOLEAN:
31298        return !value;
31299
31300      case OVERLOADED_BOOLEAN:
31301        return value === false;
31302
31303      case NUMERIC:
31304        return isNaN(value);
31305
31306      case POSITIVE_NUMERIC:
31307        return isNaN(value) || value < 1;
31308    }
31309  }
31310
31311  return false;
31312}
31313function getPropertyInfo(name) {
31314  return properties.hasOwnProperty(name) ? properties[name] : null;
31315}
31316
31317function PropertyInfoRecord(name, type, mustUseProperty, attributeName, attributeNamespace, sanitizeURL, removeEmptyString) {
31318  this.acceptsBooleans = type === BOOLEANISH_STRING || type === BOOLEAN || type === OVERLOADED_BOOLEAN;
31319  this.attributeName = attributeName;
31320  this.attributeNamespace = attributeNamespace;
31321  this.mustUseProperty = mustUseProperty;
31322  this.propertyName = name;
31323  this.type = type;
31324  this.sanitizeURL = sanitizeURL;
31325  this.removeEmptyString = removeEmptyString;
31326} // When adding attributes to this list, be sure to also add them to
31327// the `possibleStandardNames` module to ensure casing and incorrect
31328// name warnings.
31329
31330
31331var properties = {}; // These props are reserved by React. They shouldn't be written to the DOM.
31332
31333var reservedProps = ['children', 'dangerouslySetInnerHTML', // TODO: This prevents the assignment of defaultValue to regular
31334// elements (not just inputs). Now that ReactDOMInput assigns to the
31335// defaultValue property -- do we need this?
31336'defaultValue', 'defaultChecked', 'innerHTML', 'suppressContentEditableWarning', 'suppressHydrationWarning', 'style'];
31337reservedProps.forEach(function (name) {
31338  properties[name] = new PropertyInfoRecord(name, RESERVED, false, // mustUseProperty
31339  name, // attributeName
31340  null, // attributeNamespace
31341  false, // sanitizeURL
31342  false);
31343}); // A few React string attributes have a different name.
31344// This is a mapping from React prop names to the attribute names.
31345
31346[['acceptCharset', 'accept-charset'], ['className', 'class'], ['htmlFor', 'for'], ['httpEquiv', 'http-equiv']].forEach(function (_ref) {
31347  var name = _ref[0],
31348      attributeName = _ref[1];
31349  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
31350  attributeName, // attributeName
31351  null, // attributeNamespace
31352  false, // sanitizeURL
31353  false);
31354}); // These are "enumerated" HTML attributes that accept "true" and "false".
31355// In React, we let users pass `true` and `false` even though technically
31356// these aren't boolean attributes (they are coerced to strings).
31357
31358['contentEditable', 'draggable', 'spellCheck', 'value'].forEach(function (name) {
31359  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
31360  name.toLowerCase(), // attributeName
31361  null, // attributeNamespace
31362  false, // sanitizeURL
31363  false);
31364}); // These are "enumerated" SVG attributes that accept "true" and "false".
31365// In React, we let users pass `true` and `false` even though technically
31366// these aren't boolean attributes (they are coerced to strings).
31367// Since these are SVG attributes, their attribute names are case-sensitive.
31368
31369['autoReverse', 'externalResourcesRequired', 'focusable', 'preserveAlpha'].forEach(function (name) {
31370  properties[name] = new PropertyInfoRecord(name, BOOLEANISH_STRING, false, // mustUseProperty
31371  name, // attributeName
31372  null, // attributeNamespace
31373  false, // sanitizeURL
31374  false);
31375}); // These are HTML boolean attributes.
31376
31377['allowFullScreen', 'async', // Note: there is a special case that prevents it from being written to the DOM
31378// on the client side because the browsers are inconsistent. Instead we call focus().
31379'autoFocus', 'autoPlay', 'controls', 'default', 'defer', 'disabled', 'disablePictureInPicture', 'disableRemotePlayback', 'formNoValidate', 'hidden', 'loop', 'noModule', 'noValidate', 'open', 'playsInline', 'readOnly', 'required', 'reversed', 'scoped', 'seamless', // Microdata
31380'itemScope'].forEach(function (name) {
31381  properties[name] = new PropertyInfoRecord(name, BOOLEAN, false, // mustUseProperty
31382  name.toLowerCase(), // attributeName
31383  null, // attributeNamespace
31384  false, // sanitizeURL
31385  false);
31386}); // These are the few React props that we set as DOM properties
31387// rather than attributes. These are all booleans.
31388
31389['checked', // Note: `option.selected` is not updated if `select.multiple` is
31390// disabled with `removeAttribute`. We have special logic for handling this.
31391'multiple', 'muted', 'selected' // NOTE: if you add a camelCased prop to this list,
31392// you'll need to set attributeName to name.toLowerCase()
31393// instead in the assignment below.
31394].forEach(function (name) {
31395  properties[name] = new PropertyInfoRecord(name, BOOLEAN, true, // mustUseProperty
31396  name, // attributeName
31397  null, // attributeNamespace
31398  false, // sanitizeURL
31399  false);
31400}); // These are HTML attributes that are "overloaded booleans": they behave like
31401// booleans, but can also accept a string value.
31402
31403['capture', 'download' // NOTE: if you add a camelCased prop to this list,
31404// you'll need to set attributeName to name.toLowerCase()
31405// instead in the assignment below.
31406].forEach(function (name) {
31407  properties[name] = new PropertyInfoRecord(name, OVERLOADED_BOOLEAN, false, // mustUseProperty
31408  name, // attributeName
31409  null, // attributeNamespace
31410  false, // sanitizeURL
31411  false);
31412}); // These are HTML attributes that must be positive numbers.
31413
31414['cols', 'rows', 'size', 'span' // NOTE: if you add a camelCased prop to this list,
31415// you'll need to set attributeName to name.toLowerCase()
31416// instead in the assignment below.
31417].forEach(function (name) {
31418  properties[name] = new PropertyInfoRecord(name, POSITIVE_NUMERIC, false, // mustUseProperty
31419  name, // attributeName
31420  null, // attributeNamespace
31421  false, // sanitizeURL
31422  false);
31423}); // These are HTML attributes that must be numbers.
31424
31425['rowSpan', 'start'].forEach(function (name) {
31426  properties[name] = new PropertyInfoRecord(name, NUMERIC, false, // mustUseProperty
31427  name.toLowerCase(), // attributeName
31428  null, // attributeNamespace
31429  false, // sanitizeURL
31430  false);
31431});
31432var CAMELIZE = /[\-\:]([a-z])/g;
31433
31434var capitalize = function (token) {
31435  return token[1].toUpperCase();
31436}; // This is a list of all SVG attributes that need special casing, namespacing,
31437// or boolean value assignment. Regular attributes that just accept strings
31438// and have the same names are omitted, just like in the HTML attribute filter.
31439// Some of these attributes can be hard to find. This list was created by
31440// scraping the MDN documentation.
31441
31442
31443['accent-height', 'alignment-baseline', 'arabic-form', 'baseline-shift', 'cap-height', 'clip-path', 'clip-rule', 'color-interpolation', 'color-interpolation-filters', 'color-profile', 'color-rendering', 'dominant-baseline', 'enable-background', 'fill-opacity', 'fill-rule', 'flood-color', 'flood-opacity', 'font-family', 'font-size', 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', 'font-weight', 'glyph-name', 'glyph-orientation-horizontal', 'glyph-orientation-vertical', 'horiz-adv-x', 'horiz-origin-x', 'image-rendering', 'letter-spacing', 'lighting-color', 'marker-end', 'marker-mid', 'marker-start', 'overline-position', 'overline-thickness', 'paint-order', 'panose-1', 'pointer-events', 'rendering-intent', 'shape-rendering', 'stop-color', 'stop-opacity', 'strikethrough-position', 'strikethrough-thickness', 'stroke-dasharray', 'stroke-dashoffset', 'stroke-linecap', 'stroke-linejoin', 'stroke-miterlimit', 'stroke-opacity', 'stroke-width', 'text-anchor', 'text-decoration', 'text-rendering', 'underline-position', 'underline-thickness', 'unicode-bidi', 'unicode-range', 'units-per-em', 'v-alphabetic', 'v-hanging', 'v-ideographic', 'v-mathematical', 'vector-effect', 'vert-adv-y', 'vert-origin-x', 'vert-origin-y', 'word-spacing', 'writing-mode', 'xmlns:xlink', 'x-height' // NOTE: if you add a camelCased prop to this list,
31444// you'll need to set attributeName to name.toLowerCase()
31445// instead in the assignment below.
31446].forEach(function (attributeName) {
31447  var name = attributeName.replace(CAMELIZE, capitalize);
31448  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
31449  attributeName, null, // attributeNamespace
31450  false, // sanitizeURL
31451  false);
31452}); // String SVG attributes with the xlink namespace.
31453
31454['xlink:actuate', 'xlink:arcrole', 'xlink:role', 'xlink:show', 'xlink:title', 'xlink:type' // NOTE: if you add a camelCased prop to this list,
31455// you'll need to set attributeName to name.toLowerCase()
31456// instead in the assignment below.
31457].forEach(function (attributeName) {
31458  var name = attributeName.replace(CAMELIZE, capitalize);
31459  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
31460  attributeName, 'http://www.w3.org/1999/xlink', false, // sanitizeURL
31461  false);
31462}); // String SVG attributes with the xml namespace.
31463
31464['xml:base', 'xml:lang', 'xml:space' // NOTE: if you add a camelCased prop to this list,
31465// you'll need to set attributeName to name.toLowerCase()
31466// instead in the assignment below.
31467].forEach(function (attributeName) {
31468  var name = attributeName.replace(CAMELIZE, capitalize);
31469  properties[name] = new PropertyInfoRecord(name, STRING, false, // mustUseProperty
31470  attributeName, 'http://www.w3.org/XML/1998/namespace', false, // sanitizeURL
31471  false);
31472}); // These attribute exists both in HTML and SVG.
31473// The attribute name is case-sensitive in SVG so we can't just use
31474// the React name like we do for attributes that exist only in HTML.
31475
31476['tabIndex', 'crossOrigin'].forEach(function (attributeName) {
31477  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
31478  attributeName.toLowerCase(), // attributeName
31479  null, // attributeNamespace
31480  false, // sanitizeURL
31481  false);
31482}); // These attributes accept URLs. These must not allow javascript: URLS.
31483// These will also need to accept Trusted Types object in the future.
31484
31485var xlinkHref = 'xlinkHref';
31486properties[xlinkHref] = new PropertyInfoRecord('xlinkHref', STRING, false, // mustUseProperty
31487'xlink:href', 'http://www.w3.org/1999/xlink', true, // sanitizeURL
31488false);
31489['src', 'href', 'action', 'formAction'].forEach(function (attributeName) {
31490  properties[attributeName] = new PropertyInfoRecord(attributeName, STRING, false, // mustUseProperty
31491  attributeName.toLowerCase(), // attributeName
31492  null, // attributeNamespace
31493  true, // sanitizeURL
31494  true);
31495});
31496
31497// and any newline or tab are filtered out as if they're not part of the URL.
31498// https://url.spec.whatwg.org/#url-parsing
31499// Tab or newline are defined as \r\n\t:
31500// https://infra.spec.whatwg.org/#ascii-tab-or-newline
31501// A C0 control is a code point in the range \u0000 NULL to \u001F
31502// INFORMATION SEPARATOR ONE, inclusive:
31503// https://infra.spec.whatwg.org/#c0-control-or-space
31504
31505/* eslint-disable max-len */
31506
31507var isJavaScriptProtocol = /^[\u0000-\u001F ]*j[\r\n\t]*a[\r\n\t]*v[\r\n\t]*a[\r\n\t]*s[\r\n\t]*c[\r\n\t]*r[\r\n\t]*i[\r\n\t]*p[\r\n\t]*t[\r\n\t]*\:/i;
31508var didWarn = false;
31509
31510function sanitizeURL(url) {
31511  {
31512    if (!didWarn && isJavaScriptProtocol.test(url)) {
31513      didWarn = true;
31514
31515      error('A future version of React will block javascript: URLs as a security precaution. ' + 'Use event handlers instead if you can. If you need to generate unsafe HTML try ' + 'using dangerouslySetInnerHTML instead. React was passed %s.', JSON.stringify(url));
31516    }
31517  }
31518}
31519
31520/**
31521 * Get the value for a property on a node. Only used in DEV for SSR validation.
31522 * The "expected" argument is used as a hint of what the expected value is.
31523 * Some properties have multiple equivalent values.
31524 */
31525function getValueForProperty(node, name, expected, propertyInfo) {
31526  {
31527    if (propertyInfo.mustUseProperty) {
31528      var propertyName = propertyInfo.propertyName;
31529      return node[propertyName];
31530    } else {
31531      if ( propertyInfo.sanitizeURL) {
31532        // If we haven't fully disabled javascript: URLs, and if
31533        // the hydration is successful of a javascript: URL, we
31534        // still want to warn on the client.
31535        sanitizeURL('' + expected);
31536      }
31537
31538      var attributeName = propertyInfo.attributeName;
31539      var stringValue = null;
31540
31541      if (propertyInfo.type === OVERLOADED_BOOLEAN) {
31542        if (node.hasAttribute(attributeName)) {
31543          var value = node.getAttribute(attributeName);
31544
31545          if (value === '') {
31546            return true;
31547          }
31548
31549          if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
31550            return value;
31551          }
31552
31553          if (value === '' + expected) {
31554            return expected;
31555          }
31556
31557          return value;
31558        }
31559      } else if (node.hasAttribute(attributeName)) {
31560        if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
31561          // We had an attribute but shouldn't have had one, so read it
31562          // for the error message.
31563          return node.getAttribute(attributeName);
31564        }
31565
31566        if (propertyInfo.type === BOOLEAN) {
31567          // If this was a boolean, it doesn't matter what the value is
31568          // the fact that we have it is the same as the expected.
31569          return expected;
31570        } // Even if this property uses a namespace we use getAttribute
31571        // because we assume its namespaced name is the same as our config.
31572        // To use getAttributeNS we need the local name which we don't have
31573        // in our config atm.
31574
31575
31576        stringValue = node.getAttribute(attributeName);
31577      }
31578
31579      if (shouldRemoveAttribute(name, expected, propertyInfo, false)) {
31580        return stringValue === null ? expected : stringValue;
31581      } else if (stringValue === '' + expected) {
31582        return expected;
31583      } else {
31584        return stringValue;
31585      }
31586    }
31587  }
31588}
31589/**
31590 * Get the value for a attribute on a node. Only used in DEV for SSR validation.
31591 * The third argument is used as a hint of what the expected value is. Some
31592 * attributes have multiple equivalent values.
31593 */
31594
31595function getValueForAttribute(node, name, expected) {
31596  {
31597    if (!isAttributeNameSafe(name)) {
31598      return;
31599    } // If the object is an opaque reference ID, it's expected that
31600    // the next prop is different than the server value, so just return
31601    // expected
31602
31603
31604    if (isOpaqueHydratingObject(expected)) {
31605      return expected;
31606    }
31607
31608    if (!node.hasAttribute(name)) {
31609      return expected === undefined ? undefined : null;
31610    }
31611
31612    var value = node.getAttribute(name);
31613
31614    if (value === '' + expected) {
31615      return expected;
31616    }
31617
31618    return value;
31619  }
31620}
31621/**
31622 * Sets the value for a property on a node.
31623 *
31624 * @param {DOMElement} node
31625 * @param {string} name
31626 * @param {*} value
31627 */
31628
31629function setValueForProperty(node, name, value, isCustomComponentTag) {
31630  var propertyInfo = getPropertyInfo(name);
31631
31632  if (shouldIgnoreAttribute(name, propertyInfo, isCustomComponentTag)) {
31633    return;
31634  }
31635
31636  if (shouldRemoveAttribute(name, value, propertyInfo, isCustomComponentTag)) {
31637    value = null;
31638  } // If the prop isn't in the special list, treat it as a simple attribute.
31639
31640
31641  if (isCustomComponentTag || propertyInfo === null) {
31642    if (isAttributeNameSafe(name)) {
31643      var _attributeName = name;
31644
31645      if (value === null) {
31646        node.removeAttribute(_attributeName);
31647      } else {
31648        node.setAttribute(_attributeName,  '' + value);
31649      }
31650    }
31651
31652    return;
31653  }
31654
31655  var mustUseProperty = propertyInfo.mustUseProperty;
31656
31657  if (mustUseProperty) {
31658    var propertyName = propertyInfo.propertyName;
31659
31660    if (value === null) {
31661      var type = propertyInfo.type;
31662      node[propertyName] = type === BOOLEAN ? false : '';
31663    } else {
31664      // Contrary to `setAttribute`, object properties are properly
31665      // `toString`ed by IE8/9.
31666      node[propertyName] = value;
31667    }
31668
31669    return;
31670  } // The rest are treated as attributes with special cases.
31671
31672
31673  var attributeName = propertyInfo.attributeName,
31674      attributeNamespace = propertyInfo.attributeNamespace;
31675
31676  if (value === null) {
31677    node.removeAttribute(attributeName);
31678  } else {
31679    var _type = propertyInfo.type;
31680    var attributeValue;
31681
31682    if (_type === BOOLEAN || _type === OVERLOADED_BOOLEAN && value === true) {
31683      // If attribute type is boolean, we know for sure it won't be an execution sink
31684      // and we won't require Trusted Type here.
31685      attributeValue = '';
31686    } else {
31687      // `setAttribute` with objects becomes only `[object]` in IE8/9,
31688      // ('' + value) makes it output the correct toString()-value.
31689      {
31690        attributeValue = '' + value;
31691      }
31692
31693      if (propertyInfo.sanitizeURL) {
31694        sanitizeURL(attributeValue.toString());
31695      }
31696    }
31697
31698    if (attributeNamespace) {
31699      node.setAttributeNS(attributeNamespace, attributeName, attributeValue);
31700    } else {
31701      node.setAttribute(attributeName, attributeValue);
31702    }
31703  }
31704}
31705
31706// ATTENTION
31707// When adding new symbols to this file,
31708// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
31709// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
31710// nor polyfill, then a plain number is used for performance.
31711var REACT_ELEMENT_TYPE = 0xeac7;
31712var REACT_PORTAL_TYPE = 0xeaca;
31713var REACT_FRAGMENT_TYPE = 0xeacb;
31714var REACT_STRICT_MODE_TYPE = 0xeacc;
31715var REACT_PROFILER_TYPE = 0xead2;
31716var REACT_PROVIDER_TYPE = 0xeacd;
31717var REACT_CONTEXT_TYPE = 0xeace;
31718var REACT_FORWARD_REF_TYPE = 0xead0;
31719var REACT_SUSPENSE_TYPE = 0xead1;
31720var REACT_SUSPENSE_LIST_TYPE = 0xead8;
31721var REACT_MEMO_TYPE = 0xead3;
31722var REACT_LAZY_TYPE = 0xead4;
31723var REACT_BLOCK_TYPE = 0xead9;
31724var REACT_SERVER_BLOCK_TYPE = 0xeada;
31725var REACT_FUNDAMENTAL_TYPE = 0xead5;
31726var REACT_SCOPE_TYPE = 0xead7;
31727var REACT_OPAQUE_ID_TYPE = 0xeae0;
31728var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;
31729var REACT_OFFSCREEN_TYPE = 0xeae2;
31730var REACT_LEGACY_HIDDEN_TYPE = 0xeae3;
31731
31732if (typeof Symbol === 'function' && Symbol.for) {
31733  var symbolFor = Symbol.for;
31734  REACT_ELEMENT_TYPE = symbolFor('react.element');
31735  REACT_PORTAL_TYPE = symbolFor('react.portal');
31736  REACT_FRAGMENT_TYPE = symbolFor('react.fragment');
31737  REACT_STRICT_MODE_TYPE = symbolFor('react.strict_mode');
31738  REACT_PROFILER_TYPE = symbolFor('react.profiler');
31739  REACT_PROVIDER_TYPE = symbolFor('react.provider');
31740  REACT_CONTEXT_TYPE = symbolFor('react.context');
31741  REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');
31742  REACT_SUSPENSE_TYPE = symbolFor('react.suspense');
31743  REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
31744  REACT_MEMO_TYPE = symbolFor('react.memo');
31745  REACT_LAZY_TYPE = symbolFor('react.lazy');
31746  REACT_BLOCK_TYPE = symbolFor('react.block');
31747  REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
31748  REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
31749  REACT_SCOPE_TYPE = symbolFor('react.scope');
31750  REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');
31751  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');
31752  REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');
31753  REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');
31754}
31755
31756var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
31757var FAUX_ITERATOR_SYMBOL = '@@iterator';
31758function getIteratorFn(maybeIterable) {
31759  if (maybeIterable === null || typeof maybeIterable !== 'object') {
31760    return null;
31761  }
31762
31763  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
31764
31765  if (typeof maybeIterator === 'function') {
31766    return maybeIterator;
31767  }
31768
31769  return null;
31770}
31771
31772// Helpers to patch console.logs to avoid logging during side-effect free
31773// replaying on render function. This currently only patches the object
31774// lazily which won't cover if the log function was extracted eagerly.
31775// We could also eagerly patch the method.
31776var disabledDepth = 0;
31777var prevLog;
31778var prevInfo;
31779var prevWarn;
31780var prevError;
31781var prevGroup;
31782var prevGroupCollapsed;
31783var prevGroupEnd;
31784
31785function disabledLog() {}
31786
31787disabledLog.__reactDisabledLog = true;
31788function disableLogs() {
31789  {
31790    if (disabledDepth === 0) {
31791      /* eslint-disable react-internal/no-production-logging */
31792      prevLog = console.log;
31793      prevInfo = console.info;
31794      prevWarn = console.warn;
31795      prevError = console.error;
31796      prevGroup = console.group;
31797      prevGroupCollapsed = console.groupCollapsed;
31798      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
31799
31800      var props = {
31801        configurable: true,
31802        enumerable: true,
31803        value: disabledLog,
31804        writable: true
31805      }; // $FlowFixMe Flow thinks console is immutable.
31806
31807      Object.defineProperties(console, {
31808        info: props,
31809        log: props,
31810        warn: props,
31811        error: props,
31812        group: props,
31813        groupCollapsed: props,
31814        groupEnd: props
31815      });
31816      /* eslint-enable react-internal/no-production-logging */
31817    }
31818
31819    disabledDepth++;
31820  }
31821}
31822function reenableLogs() {
31823  {
31824    disabledDepth--;
31825
31826    if (disabledDepth === 0) {
31827      /* eslint-disable react-internal/no-production-logging */
31828      var props = {
31829        configurable: true,
31830        enumerable: true,
31831        writable: true
31832      }; // $FlowFixMe Flow thinks console is immutable.
31833
31834      Object.defineProperties(console, {
31835        log: _assign({}, props, {
31836          value: prevLog
31837        }),
31838        info: _assign({}, props, {
31839          value: prevInfo
31840        }),
31841        warn: _assign({}, props, {
31842          value: prevWarn
31843        }),
31844        error: _assign({}, props, {
31845          value: prevError
31846        }),
31847        group: _assign({}, props, {
31848          value: prevGroup
31849        }),
31850        groupCollapsed: _assign({}, props, {
31851          value: prevGroupCollapsed
31852        }),
31853        groupEnd: _assign({}, props, {
31854          value: prevGroupEnd
31855        })
31856      });
31857      /* eslint-enable react-internal/no-production-logging */
31858    }
31859
31860    if (disabledDepth < 0) {
31861      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
31862    }
31863  }
31864}
31865
31866var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
31867var prefix;
31868function describeBuiltInComponentFrame(name, source, ownerFn) {
31869  {
31870    if (prefix === undefined) {
31871      // Extract the VM specific prefix used by each line.
31872      try {
31873        throw Error();
31874      } catch (x) {
31875        var match = x.stack.trim().match(/\n( *(at )?)/);
31876        prefix = match && match[1] || '';
31877      }
31878    } // We use the prefix to ensure our stacks line up with native stack frames.
31879
31880
31881    return '\n' + prefix + name;
31882  }
31883}
31884var reentry = false;
31885var componentFrameCache;
31886
31887{
31888  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
31889  componentFrameCache = new PossiblyWeakMap();
31890}
31891
31892function describeNativeComponentFrame(fn, construct) {
31893  // If something asked for a stack inside a fake render, it should get ignored.
31894  if (!fn || reentry) {
31895    return '';
31896  }
31897
31898  {
31899    var frame = componentFrameCache.get(fn);
31900
31901    if (frame !== undefined) {
31902      return frame;
31903    }
31904  }
31905
31906  var control;
31907  reentry = true;
31908  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
31909
31910  Error.prepareStackTrace = undefined;
31911  var previousDispatcher;
31912
31913  {
31914    previousDispatcher = ReactCurrentDispatcher.current; // Set the dispatcher in DEV because this might be call in the render function
31915    // for warnings.
31916
31917    ReactCurrentDispatcher.current = null;
31918    disableLogs();
31919  }
31920
31921  try {
31922    // This should throw.
31923    if (construct) {
31924      // Something should be setting the props in the constructor.
31925      var Fake = function () {
31926        throw Error();
31927      }; // $FlowFixMe
31928
31929
31930      Object.defineProperty(Fake.prototype, 'props', {
31931        set: function () {
31932          // We use a throwing setter instead of frozen or non-writable props
31933          // because that won't throw in a non-strict mode function.
31934          throw Error();
31935        }
31936      });
31937
31938      if (typeof Reflect === 'object' && Reflect.construct) {
31939        // We construct a different control for this case to include any extra
31940        // frames added by the construct call.
31941        try {
31942          Reflect.construct(Fake, []);
31943        } catch (x) {
31944          control = x;
31945        }
31946
31947        Reflect.construct(fn, [], Fake);
31948      } else {
31949        try {
31950          Fake.call();
31951        } catch (x) {
31952          control = x;
31953        }
31954
31955        fn.call(Fake.prototype);
31956      }
31957    } else {
31958      try {
31959        throw Error();
31960      } catch (x) {
31961        control = x;
31962      }
31963
31964      fn();
31965    }
31966  } catch (sample) {
31967    // This is inlined manually because closure doesn't do it for us.
31968    if (sample && control && typeof sample.stack === 'string') {
31969      // This extracts the first frame from the sample that isn't also in the control.
31970      // Skipping one frame that we assume is the frame that calls the two.
31971      var sampleLines = sample.stack.split('\n');
31972      var controlLines = control.stack.split('\n');
31973      var s = sampleLines.length - 1;
31974      var c = controlLines.length - 1;
31975
31976      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
31977        // We expect at least one stack frame to be shared.
31978        // Typically this will be the root most one. However, stack frames may be
31979        // cut off due to maximum stack limits. In this case, one maybe cut off
31980        // earlier than the other. We assume that the sample is longer or the same
31981        // and there for cut off earlier. So we should find the root most frame in
31982        // the sample somewhere in the control.
31983        c--;
31984      }
31985
31986      for (; s >= 1 && c >= 0; s--, c--) {
31987        // Next we find the first one that isn't the same which should be the
31988        // frame that called our sample function and the control.
31989        if (sampleLines[s] !== controlLines[c]) {
31990          // In V8, the first line is describing the message but other VMs don't.
31991          // If we're about to return the first line, and the control is also on the same
31992          // line, that's a pretty good indicator that our sample threw at same line as
31993          // the control. I.e. before we entered the sample frame. So we ignore this result.
31994          // This can happen if you passed a class to function component, or non-function.
31995          if (s !== 1 || c !== 1) {
31996            do {
31997              s--;
31998              c--; // We may still have similar intermediate frames from the construct call.
31999              // The next one that isn't the same should be our match though.
32000
32001              if (c < 0 || sampleLines[s] !== controlLines[c]) {
32002                // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
32003                var _frame = '\n' + sampleLines[s].replace(' at new ', ' at ');
32004
32005                {
32006                  if (typeof fn === 'function') {
32007                    componentFrameCache.set(fn, _frame);
32008                  }
32009                } // Return the line we found.
32010
32011
32012                return _frame;
32013              }
32014            } while (s >= 1 && c >= 0);
32015          }
32016
32017          break;
32018        }
32019      }
32020    }
32021  } finally {
32022    reentry = false;
32023
32024    {
32025      ReactCurrentDispatcher.current = previousDispatcher;
32026      reenableLogs();
32027    }
32028
32029    Error.prepareStackTrace = previousPrepareStackTrace;
32030  } // Fallback to just using the name if we couldn't make it throw.
32031
32032
32033  var name = fn ? fn.displayName || fn.name : '';
32034  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
32035
32036  {
32037    if (typeof fn === 'function') {
32038      componentFrameCache.set(fn, syntheticFrame);
32039    }
32040  }
32041
32042  return syntheticFrame;
32043}
32044
32045function describeClassComponentFrame(ctor, source, ownerFn) {
32046  {
32047    return describeNativeComponentFrame(ctor, true);
32048  }
32049}
32050function describeFunctionComponentFrame(fn, source, ownerFn) {
32051  {
32052    return describeNativeComponentFrame(fn, false);
32053  }
32054}
32055
32056function shouldConstruct(Component) {
32057  var prototype = Component.prototype;
32058  return !!(prototype && prototype.isReactComponent);
32059}
32060
32061function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
32062
32063  if (type == null) {
32064    return '';
32065  }
32066
32067  if (typeof type === 'function') {
32068    {
32069      return describeNativeComponentFrame(type, shouldConstruct(type));
32070    }
32071  }
32072
32073  if (typeof type === 'string') {
32074    return describeBuiltInComponentFrame(type);
32075  }
32076
32077  switch (type) {
32078    case REACT_SUSPENSE_TYPE:
32079      return describeBuiltInComponentFrame('Suspense');
32080
32081    case REACT_SUSPENSE_LIST_TYPE:
32082      return describeBuiltInComponentFrame('SuspenseList');
32083  }
32084
32085  if (typeof type === 'object') {
32086    switch (type.$$typeof) {
32087      case REACT_FORWARD_REF_TYPE:
32088        return describeFunctionComponentFrame(type.render);
32089
32090      case REACT_MEMO_TYPE:
32091        // Memo may contain any component type so we recursively resolve it.
32092        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
32093
32094      case REACT_BLOCK_TYPE:
32095        return describeFunctionComponentFrame(type._render);
32096
32097      case REACT_LAZY_TYPE:
32098        {
32099          var lazyComponent = type;
32100          var payload = lazyComponent._payload;
32101          var init = lazyComponent._init;
32102
32103          try {
32104            // Lazy may contain any component type so we recursively resolve it.
32105            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
32106          } catch (x) {}
32107        }
32108    }
32109  }
32110
32111  return '';
32112}
32113
32114function describeFiber(fiber) {
32115  var owner =  fiber._debugOwner ? fiber._debugOwner.type : null ;
32116  var source =  fiber._debugSource ;
32117
32118  switch (fiber.tag) {
32119    case HostComponent:
32120      return describeBuiltInComponentFrame(fiber.type);
32121
32122    case LazyComponent:
32123      return describeBuiltInComponentFrame('Lazy');
32124
32125    case SuspenseComponent:
32126      return describeBuiltInComponentFrame('Suspense');
32127
32128    case SuspenseListComponent:
32129      return describeBuiltInComponentFrame('SuspenseList');
32130
32131    case FunctionComponent:
32132    case IndeterminateComponent:
32133    case SimpleMemoComponent:
32134      return describeFunctionComponentFrame(fiber.type);
32135
32136    case ForwardRef:
32137      return describeFunctionComponentFrame(fiber.type.render);
32138
32139    case Block:
32140      return describeFunctionComponentFrame(fiber.type._render);
32141
32142    case ClassComponent:
32143      return describeClassComponentFrame(fiber.type);
32144
32145    default:
32146      return '';
32147  }
32148}
32149
32150function getStackByFiberInDevAndProd(workInProgress) {
32151  try {
32152    var info = '';
32153    var node = workInProgress;
32154
32155    do {
32156      info += describeFiber(node);
32157      node = node.return;
32158    } while (node);
32159
32160    return info;
32161  } catch (x) {
32162    return '\nError generating stack: ' + x.message + '\n' + x.stack;
32163  }
32164}
32165
32166function getWrappedName(outerType, innerType, wrapperName) {
32167  var functionName = innerType.displayName || innerType.name || '';
32168  return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
32169}
32170
32171function getContextName(type) {
32172  return type.displayName || 'Context';
32173}
32174
32175function getComponentName(type) {
32176  if (type == null) {
32177    // Host root, text node or just invalid type.
32178    return null;
32179  }
32180
32181  {
32182    if (typeof type.tag === 'number') {
32183      error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
32184    }
32185  }
32186
32187  if (typeof type === 'function') {
32188    return type.displayName || type.name || null;
32189  }
32190
32191  if (typeof type === 'string') {
32192    return type;
32193  }
32194
32195  switch (type) {
32196    case REACT_FRAGMENT_TYPE:
32197      return 'Fragment';
32198
32199    case REACT_PORTAL_TYPE:
32200      return 'Portal';
32201
32202    case REACT_PROFILER_TYPE:
32203      return 'Profiler';
32204
32205    case REACT_STRICT_MODE_TYPE:
32206      return 'StrictMode';
32207
32208    case REACT_SUSPENSE_TYPE:
32209      return 'Suspense';
32210
32211    case REACT_SUSPENSE_LIST_TYPE:
32212      return 'SuspenseList';
32213  }
32214
32215  if (typeof type === 'object') {
32216    switch (type.$$typeof) {
32217      case REACT_CONTEXT_TYPE:
32218        var context = type;
32219        return getContextName(context) + '.Consumer';
32220
32221      case REACT_PROVIDER_TYPE:
32222        var provider = type;
32223        return getContextName(provider._context) + '.Provider';
32224
32225      case REACT_FORWARD_REF_TYPE:
32226        return getWrappedName(type, type.render, 'ForwardRef');
32227
32228      case REACT_MEMO_TYPE:
32229        return getComponentName(type.type);
32230
32231      case REACT_BLOCK_TYPE:
32232        return getComponentName(type._render);
32233
32234      case REACT_LAZY_TYPE:
32235        {
32236          var lazyComponent = type;
32237          var payload = lazyComponent._payload;
32238          var init = lazyComponent._init;
32239
32240          try {
32241            return getComponentName(init(payload));
32242          } catch (x) {
32243            return null;
32244          }
32245        }
32246    }
32247  }
32248
32249  return null;
32250}
32251
32252var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
32253var current = null;
32254var isRendering = false;
32255function getCurrentFiberOwnerNameInDevOrNull() {
32256  {
32257    if (current === null) {
32258      return null;
32259    }
32260
32261    var owner = current._debugOwner;
32262
32263    if (owner !== null && typeof owner !== 'undefined') {
32264      return getComponentName(owner.type);
32265    }
32266  }
32267
32268  return null;
32269}
32270
32271function getCurrentFiberStackInDev() {
32272  {
32273    if (current === null) {
32274      return '';
32275    } // Safe because if current fiber exists, we are reconciling,
32276    // and it is guaranteed to be the work-in-progress version.
32277
32278
32279    return getStackByFiberInDevAndProd(current);
32280  }
32281}
32282
32283function resetCurrentFiber() {
32284  {
32285    ReactDebugCurrentFrame.getCurrentStack = null;
32286    current = null;
32287    isRendering = false;
32288  }
32289}
32290function setCurrentFiber(fiber) {
32291  {
32292    ReactDebugCurrentFrame.getCurrentStack = getCurrentFiberStackInDev;
32293    current = fiber;
32294    isRendering = false;
32295  }
32296}
32297function setIsRendering(rendering) {
32298  {
32299    isRendering = rendering;
32300  }
32301}
32302function getIsRendering() {
32303  {
32304    return isRendering;
32305  }
32306}
32307
32308// Flow does not allow string concatenation of most non-string types. To work
32309// around this limitation, we use an opaque type that can only be obtained by
32310// passing the value through getToStringValue first.
32311function toString(value) {
32312  return '' + value;
32313}
32314function getToStringValue(value) {
32315  switch (typeof value) {
32316    case 'boolean':
32317    case 'number':
32318    case 'object':
32319    case 'string':
32320    case 'undefined':
32321      return value;
32322
32323    default:
32324      // function, symbol are assigned as empty strings
32325      return '';
32326  }
32327}
32328
32329var hasReadOnlyValue = {
32330  button: true,
32331  checkbox: true,
32332  image: true,
32333  hidden: true,
32334  radio: true,
32335  reset: true,
32336  submit: true
32337};
32338function checkControlledValueProps(tagName, props) {
32339  {
32340    if (!(hasReadOnlyValue[props.type] || props.onChange || props.onInput || props.readOnly || props.disabled || props.value == null)) {
32341      error('You provided a `value` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultValue`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
32342    }
32343
32344    if (!(props.onChange || props.readOnly || props.disabled || props.checked == null)) {
32345      error('You provided a `checked` prop to a form field without an ' + '`onChange` handler. This will render a read-only field. If ' + 'the field should be mutable use `defaultChecked`. Otherwise, ' + 'set either `onChange` or `readOnly`.');
32346    }
32347  }
32348}
32349
32350function isCheckable(elem) {
32351  var type = elem.type;
32352  var nodeName = elem.nodeName;
32353  return nodeName && nodeName.toLowerCase() === 'input' && (type === 'checkbox' || type === 'radio');
32354}
32355
32356function getTracker(node) {
32357  return node._valueTracker;
32358}
32359
32360function detachTracker(node) {
32361  node._valueTracker = null;
32362}
32363
32364function getValueFromNode(node) {
32365  var value = '';
32366
32367  if (!node) {
32368    return value;
32369  }
32370
32371  if (isCheckable(node)) {
32372    value = node.checked ? 'true' : 'false';
32373  } else {
32374    value = node.value;
32375  }
32376
32377  return value;
32378}
32379
32380function trackValueOnNode(node) {
32381  var valueField = isCheckable(node) ? 'checked' : 'value';
32382  var descriptor = Object.getOwnPropertyDescriptor(node.constructor.prototype, valueField);
32383  var currentValue = '' + node[valueField]; // if someone has already defined a value or Safari, then bail
32384  // and don't track value will cause over reporting of changes,
32385  // but it's better then a hard failure
32386  // (needed for certain tests that spyOn input values and Safari)
32387
32388  if (node.hasOwnProperty(valueField) || typeof descriptor === 'undefined' || typeof descriptor.get !== 'function' || typeof descriptor.set !== 'function') {
32389    return;
32390  }
32391
32392  var get = descriptor.get,
32393      set = descriptor.set;
32394  Object.defineProperty(node, valueField, {
32395    configurable: true,
32396    get: function () {
32397      return get.call(this);
32398    },
32399    set: function (value) {
32400      currentValue = '' + value;
32401      set.call(this, value);
32402    }
32403  }); // We could've passed this the first time
32404  // but it triggers a bug in IE11 and Edge 14/15.
32405  // Calling defineProperty() again should be equivalent.
32406  // https://github.com/facebook/react/issues/11768
32407
32408  Object.defineProperty(node, valueField, {
32409    enumerable: descriptor.enumerable
32410  });
32411  var tracker = {
32412    getValue: function () {
32413      return currentValue;
32414    },
32415    setValue: function (value) {
32416      currentValue = '' + value;
32417    },
32418    stopTracking: function () {
32419      detachTracker(node);
32420      delete node[valueField];
32421    }
32422  };
32423  return tracker;
32424}
32425
32426function track(node) {
32427  if (getTracker(node)) {
32428    return;
32429  } // TODO: Once it's just Fiber we can move this to node._wrapperState
32430
32431
32432  node._valueTracker = trackValueOnNode(node);
32433}
32434function updateValueIfChanged(node) {
32435  if (!node) {
32436    return false;
32437  }
32438
32439  var tracker = getTracker(node); // if there is no tracker at this point it's unlikely
32440  // that trying again will succeed
32441
32442  if (!tracker) {
32443    return true;
32444  }
32445
32446  var lastValue = tracker.getValue();
32447  var nextValue = getValueFromNode(node);
32448
32449  if (nextValue !== lastValue) {
32450    tracker.setValue(nextValue);
32451    return true;
32452  }
32453
32454  return false;
32455}
32456
32457function getActiveElement(doc) {
32458  doc = doc || (typeof document !== 'undefined' ? document : undefined);
32459
32460  if (typeof doc === 'undefined') {
32461    return null;
32462  }
32463
32464  try {
32465    return doc.activeElement || doc.body;
32466  } catch (e) {
32467    return doc.body;
32468  }
32469}
32470
32471var didWarnValueDefaultValue = false;
32472var didWarnCheckedDefaultChecked = false;
32473var didWarnControlledToUncontrolled = false;
32474var didWarnUncontrolledToControlled = false;
32475
32476function isControlled(props) {
32477  var usesChecked = props.type === 'checkbox' || props.type === 'radio';
32478  return usesChecked ? props.checked != null : props.value != null;
32479}
32480/**
32481 * Implements an <input> host component that allows setting these optional
32482 * props: `checked`, `value`, `defaultChecked`, and `defaultValue`.
32483 *
32484 * If `checked` or `value` are not supplied (or null/undefined), user actions
32485 * that affect the checked state or value will trigger updates to the element.
32486 *
32487 * If they are supplied (and not null/undefined), the rendered element will not
32488 * trigger updates to the element. Instead, the props must change in order for
32489 * the rendered element to be updated.
32490 *
32491 * The rendered element will be initialized as unchecked (or `defaultChecked`)
32492 * with an empty value (or `defaultValue`).
32493 *
32494 * See http://www.w3.org/TR/2012/WD-html5-20121025/the-input-element.html
32495 */
32496
32497
32498function getHostProps(element, props) {
32499  var node = element;
32500  var checked = props.checked;
32501
32502  var hostProps = _assign({}, props, {
32503    defaultChecked: undefined,
32504    defaultValue: undefined,
32505    value: undefined,
32506    checked: checked != null ? checked : node._wrapperState.initialChecked
32507  });
32508
32509  return hostProps;
32510}
32511function initWrapperState(element, props) {
32512  {
32513    checkControlledValueProps('input', props);
32514
32515    if (props.checked !== undefined && props.defaultChecked !== undefined && !didWarnCheckedDefaultChecked) {
32516      error('%s contains an input of type %s with both checked and defaultChecked props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the checked prop, or the defaultChecked prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);
32517
32518      didWarnCheckedDefaultChecked = true;
32519    }
32520
32521    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue) {
32522      error('%s contains an input of type %s with both value and defaultValue props. ' + 'Input elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled input ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component', props.type);
32523
32524      didWarnValueDefaultValue = true;
32525    }
32526  }
32527
32528  var node = element;
32529  var defaultValue = props.defaultValue == null ? '' : props.defaultValue;
32530  node._wrapperState = {
32531    initialChecked: props.checked != null ? props.checked : props.defaultChecked,
32532    initialValue: getToStringValue(props.value != null ? props.value : defaultValue),
32533    controlled: isControlled(props)
32534  };
32535}
32536function updateChecked(element, props) {
32537  var node = element;
32538  var checked = props.checked;
32539
32540  if (checked != null) {
32541    setValueForProperty(node, 'checked', checked, false);
32542  }
32543}
32544function updateWrapper(element, props) {
32545  var node = element;
32546
32547  {
32548    var controlled = isControlled(props);
32549
32550    if (!node._wrapperState.controlled && controlled && !didWarnUncontrolledToControlled) {
32551      error('A component is changing an uncontrolled input to be controlled. ' + 'This is likely caused by the value changing from undefined to ' + 'a defined value, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');
32552
32553      didWarnUncontrolledToControlled = true;
32554    }
32555
32556    if (node._wrapperState.controlled && !controlled && !didWarnControlledToUncontrolled) {
32557      error('A component is changing a controlled input to be uncontrolled. ' + 'This is likely caused by the value changing from a defined to ' + 'undefined, which should not happen. ' + 'Decide between using a controlled or uncontrolled input ' + 'element for the lifetime of the component. More info: https://reactjs.org/link/controlled-components');
32558
32559      didWarnControlledToUncontrolled = true;
32560    }
32561  }
32562
32563  updateChecked(element, props);
32564  var value = getToStringValue(props.value);
32565  var type = props.type;
32566
32567  if (value != null) {
32568    if (type === 'number') {
32569      if (value === 0 && node.value === '' || // We explicitly want to coerce to number here if possible.
32570      // eslint-disable-next-line
32571      node.value != value) {
32572        node.value = toString(value);
32573      }
32574    } else if (node.value !== toString(value)) {
32575      node.value = toString(value);
32576    }
32577  } else if (type === 'submit' || type === 'reset') {
32578    // Submit/reset inputs need the attribute removed completely to avoid
32579    // blank-text buttons.
32580    node.removeAttribute('value');
32581    return;
32582  }
32583
32584  {
32585    // When syncing the value attribute, the value comes from a cascade of
32586    // properties:
32587    //  1. The value React property
32588    //  2. The defaultValue React property
32589    //  3. Otherwise there should be no change
32590    if (props.hasOwnProperty('value')) {
32591      setDefaultValue(node, props.type, value);
32592    } else if (props.hasOwnProperty('defaultValue')) {
32593      setDefaultValue(node, props.type, getToStringValue(props.defaultValue));
32594    }
32595  }
32596
32597  {
32598    // When syncing the checked attribute, it only changes when it needs
32599    // to be removed, such as transitioning from a checkbox into a text input
32600    if (props.checked == null && props.defaultChecked != null) {
32601      node.defaultChecked = !!props.defaultChecked;
32602    }
32603  }
32604}
32605function postMountWrapper(element, props, isHydrating) {
32606  var node = element; // Do not assign value if it is already set. This prevents user text input
32607  // from being lost during SSR hydration.
32608
32609  if (props.hasOwnProperty('value') || props.hasOwnProperty('defaultValue')) {
32610    var type = props.type;
32611    var isButton = type === 'submit' || type === 'reset'; // Avoid setting value attribute on submit/reset inputs as it overrides the
32612    // default value provided by the browser. See: #12872
32613
32614    if (isButton && (props.value === undefined || props.value === null)) {
32615      return;
32616    }
32617
32618    var initialValue = toString(node._wrapperState.initialValue); // Do not assign value if it is already set. This prevents user text input
32619    // from being lost during SSR hydration.
32620
32621    if (!isHydrating) {
32622      {
32623        // When syncing the value attribute, the value property should use
32624        // the wrapperState._initialValue property. This uses:
32625        //
32626        //   1. The value React property when present
32627        //   2. The defaultValue React property when present
32628        //   3. An empty string
32629        if (initialValue !== node.value) {
32630          node.value = initialValue;
32631        }
32632      }
32633    }
32634
32635    {
32636      // Otherwise, the value attribute is synchronized to the property,
32637      // so we assign defaultValue to the same thing as the value property
32638      // assignment step above.
32639      node.defaultValue = initialValue;
32640    }
32641  } // Normally, we'd just do `node.checked = node.checked` upon initial mount, less this bug
32642  // this is needed to work around a chrome bug where setting defaultChecked
32643  // will sometimes influence the value of checked (even after detachment).
32644  // Reference: https://bugs.chromium.org/p/chromium/issues/detail?id=608416
32645  // We need to temporarily unset name to avoid disrupting radio button groups.
32646
32647
32648  var name = node.name;
32649
32650  if (name !== '') {
32651    node.name = '';
32652  }
32653
32654  {
32655    // When syncing the checked attribute, both the checked property and
32656    // attribute are assigned at the same time using defaultChecked. This uses:
32657    //
32658    //   1. The checked React property when present
32659    //   2. The defaultChecked React property when present
32660    //   3. Otherwise, false
32661    node.defaultChecked = !node.defaultChecked;
32662    node.defaultChecked = !!node._wrapperState.initialChecked;
32663  }
32664
32665  if (name !== '') {
32666    node.name = name;
32667  }
32668}
32669function restoreControlledState(element, props) {
32670  var node = element;
32671  updateWrapper(node, props);
32672  updateNamedCousins(node, props);
32673}
32674
32675function updateNamedCousins(rootNode, props) {
32676  var name = props.name;
32677
32678  if (props.type === 'radio' && name != null) {
32679    var queryRoot = rootNode;
32680
32681    while (queryRoot.parentNode) {
32682      queryRoot = queryRoot.parentNode;
32683    } // If `rootNode.form` was non-null, then we could try `form.elements`,
32684    // but that sometimes behaves strangely in IE8. We could also try using
32685    // `form.getElementsByName`, but that will only return direct children
32686    // and won't include inputs that use the HTML5 `form=` attribute. Since
32687    // the input might not even be in a form. It might not even be in the
32688    // document. Let's just use the local `querySelectorAll` to ensure we don't
32689    // miss anything.
32690
32691
32692    var group = queryRoot.querySelectorAll('input[name=' + JSON.stringify('' + name) + '][type="radio"]');
32693
32694    for (var i = 0; i < group.length; i++) {
32695      var otherNode = group[i];
32696
32697      if (otherNode === rootNode || otherNode.form !== rootNode.form) {
32698        continue;
32699      } // This will throw if radio buttons rendered by different copies of React
32700      // and the same name are rendered into the same form (same as #1939).
32701      // That's probably okay; we don't support it just as we don't support
32702      // mixing React radio buttons with non-React ones.
32703
32704
32705      var otherProps = getFiberCurrentPropsFromNode(otherNode);
32706
32707      if (!otherProps) {
32708        {
32709          throw Error( "ReactDOMInput: Mixing React and non-React radio inputs with the same `name` is not supported." );
32710        }
32711      } // We need update the tracked value on the named cousin since the value
32712      // was changed but the input saw no event or value set
32713
32714
32715      updateValueIfChanged(otherNode); // If this is a controlled radio button group, forcing the input that
32716      // was previously checked to update will cause it to be come re-checked
32717      // as appropriate.
32718
32719      updateWrapper(otherNode, otherProps);
32720    }
32721  }
32722} // In Chrome, assigning defaultValue to certain input types triggers input validation.
32723// For number inputs, the display value loses trailing decimal points. For email inputs,
32724// Chrome raises "The specified value <x> is not a valid email address".
32725//
32726// Here we check to see if the defaultValue has actually changed, avoiding these problems
32727// when the user is inputting text
32728//
32729// https://github.com/facebook/react/issues/7253
32730
32731
32732function setDefaultValue(node, type, value) {
32733  if ( // Focused number inputs synchronize on blur. See ChangeEventPlugin.js
32734  type !== 'number' || getActiveElement(node.ownerDocument) !== node) {
32735    if (value == null) {
32736      node.defaultValue = toString(node._wrapperState.initialValue);
32737    } else if (node.defaultValue !== toString(value)) {
32738      node.defaultValue = toString(value);
32739    }
32740  }
32741}
32742
32743var didWarnSelectedSetOnOption = false;
32744var didWarnInvalidChild = false;
32745
32746function flattenChildren(children) {
32747  var content = ''; // Flatten children. We'll warn if they are invalid
32748  // during validateProps() which runs for hydration too.
32749  // Note that this would throw on non-element objects.
32750  // Elements are stringified (which is normally irrelevant
32751  // but matters for <fbt>).
32752
32753  React.Children.forEach(children, function (child) {
32754    if (child == null) {
32755      return;
32756    }
32757
32758    content += child; // Note: we don't warn about invalid children here.
32759    // Instead, this is done separately below so that
32760    // it happens during the hydration code path too.
32761  });
32762  return content;
32763}
32764/**
32765 * Implements an <option> host component that warns when `selected` is set.
32766 */
32767
32768
32769function validateProps(element, props) {
32770  {
32771    // This mirrors the code path above, but runs for hydration too.
32772    // Warn about invalid children here so that client and hydration are consistent.
32773    // TODO: this seems like it could cause a DEV-only throw for hydration
32774    // if children contains a non-element object. We should try to avoid that.
32775    if (typeof props.children === 'object' && props.children !== null) {
32776      React.Children.forEach(props.children, function (child) {
32777        if (child == null) {
32778          return;
32779        }
32780
32781        if (typeof child === 'string' || typeof child === 'number') {
32782          return;
32783        }
32784
32785        if (typeof child.type !== 'string') {
32786          return;
32787        }
32788
32789        if (!didWarnInvalidChild) {
32790          didWarnInvalidChild = true;
32791
32792          error('Only strings and numbers are supported as <option> children.');
32793        }
32794      });
32795    } // TODO: Remove support for `selected` in <option>.
32796
32797
32798    if (props.selected != null && !didWarnSelectedSetOnOption) {
32799      error('Use the `defaultValue` or `value` props on <select> instead of ' + 'setting `selected` on <option>.');
32800
32801      didWarnSelectedSetOnOption = true;
32802    }
32803  }
32804}
32805function postMountWrapper$1(element, props) {
32806  // value="" should make a value attribute (#6219)
32807  if (props.value != null) {
32808    element.setAttribute('value', toString(getToStringValue(props.value)));
32809  }
32810}
32811function getHostProps$1(element, props) {
32812  var hostProps = _assign({
32813    children: undefined
32814  }, props);
32815
32816  var content = flattenChildren(props.children);
32817
32818  if (content) {
32819    hostProps.children = content;
32820  }
32821
32822  return hostProps;
32823}
32824
32825var didWarnValueDefaultValue$1;
32826
32827{
32828  didWarnValueDefaultValue$1 = false;
32829}
32830
32831function getDeclarationErrorAddendum() {
32832  var ownerName = getCurrentFiberOwnerNameInDevOrNull();
32833
32834  if (ownerName) {
32835    return '\n\nCheck the render method of `' + ownerName + '`.';
32836  }
32837
32838  return '';
32839}
32840
32841var valuePropNames = ['value', 'defaultValue'];
32842/**
32843 * Validation function for `value` and `defaultValue`.
32844 */
32845
32846function checkSelectPropTypes(props) {
32847  {
32848    checkControlledValueProps('select', props);
32849
32850    for (var i = 0; i < valuePropNames.length; i++) {
32851      var propName = valuePropNames[i];
32852
32853      if (props[propName] == null) {
32854        continue;
32855      }
32856
32857      var isArray = Array.isArray(props[propName]);
32858
32859      if (props.multiple && !isArray) {
32860        error('The `%s` prop supplied to <select> must be an array if ' + '`multiple` is true.%s', propName, getDeclarationErrorAddendum());
32861      } else if (!props.multiple && isArray) {
32862        error('The `%s` prop supplied to <select> must be a scalar ' + 'value if `multiple` is false.%s', propName, getDeclarationErrorAddendum());
32863      }
32864    }
32865  }
32866}
32867
32868function updateOptions(node, multiple, propValue, setDefaultSelected) {
32869  var options = node.options;
32870
32871  if (multiple) {
32872    var selectedValues = propValue;
32873    var selectedValue = {};
32874
32875    for (var i = 0; i < selectedValues.length; i++) {
32876      // Prefix to avoid chaos with special keys.
32877      selectedValue['$' + selectedValues[i]] = true;
32878    }
32879
32880    for (var _i = 0; _i < options.length; _i++) {
32881      var selected = selectedValue.hasOwnProperty('$' + options[_i].value);
32882
32883      if (options[_i].selected !== selected) {
32884        options[_i].selected = selected;
32885      }
32886
32887      if (selected && setDefaultSelected) {
32888        options[_i].defaultSelected = true;
32889      }
32890    }
32891  } else {
32892    // Do not set `select.value` as exact behavior isn't consistent across all
32893    // browsers for all cases.
32894    var _selectedValue = toString(getToStringValue(propValue));
32895
32896    var defaultSelected = null;
32897
32898    for (var _i2 = 0; _i2 < options.length; _i2++) {
32899      if (options[_i2].value === _selectedValue) {
32900        options[_i2].selected = true;
32901
32902        if (setDefaultSelected) {
32903          options[_i2].defaultSelected = true;
32904        }
32905
32906        return;
32907      }
32908
32909      if (defaultSelected === null && !options[_i2].disabled) {
32910        defaultSelected = options[_i2];
32911      }
32912    }
32913
32914    if (defaultSelected !== null) {
32915      defaultSelected.selected = true;
32916    }
32917  }
32918}
32919/**
32920 * Implements a <select> host component that allows optionally setting the
32921 * props `value` and `defaultValue`. If `multiple` is false, the prop must be a
32922 * stringable. If `multiple` is true, the prop must be an array of stringables.
32923 *
32924 * If `value` is not supplied (or null/undefined), user actions that change the
32925 * selected option will trigger updates to the rendered options.
32926 *
32927 * If it is supplied (and not null/undefined), the rendered options will not
32928 * update in response to user actions. Instead, the `value` prop must change in
32929 * order for the rendered options to update.
32930 *
32931 * If `defaultValue` is provided, any options with the supplied values will be
32932 * selected.
32933 */
32934
32935
32936function getHostProps$2(element, props) {
32937  return _assign({}, props, {
32938    value: undefined
32939  });
32940}
32941function initWrapperState$1(element, props) {
32942  var node = element;
32943
32944  {
32945    checkSelectPropTypes(props);
32946  }
32947
32948  node._wrapperState = {
32949    wasMultiple: !!props.multiple
32950  };
32951
32952  {
32953    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValueDefaultValue$1) {
32954      error('Select elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled select ' + 'element and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components');
32955
32956      didWarnValueDefaultValue$1 = true;
32957    }
32958  }
32959}
32960function postMountWrapper$2(element, props) {
32961  var node = element;
32962  node.multiple = !!props.multiple;
32963  var value = props.value;
32964
32965  if (value != null) {
32966    updateOptions(node, !!props.multiple, value, false);
32967  } else if (props.defaultValue != null) {
32968    updateOptions(node, !!props.multiple, props.defaultValue, true);
32969  }
32970}
32971function postUpdateWrapper(element, props) {
32972  var node = element;
32973  var wasMultiple = node._wrapperState.wasMultiple;
32974  node._wrapperState.wasMultiple = !!props.multiple;
32975  var value = props.value;
32976
32977  if (value != null) {
32978    updateOptions(node, !!props.multiple, value, false);
32979  } else if (wasMultiple !== !!props.multiple) {
32980    // For simplicity, reapply `defaultValue` if `multiple` is toggled.
32981    if (props.defaultValue != null) {
32982      updateOptions(node, !!props.multiple, props.defaultValue, true);
32983    } else {
32984      // Revert the select back to its default unselected state.
32985      updateOptions(node, !!props.multiple, props.multiple ? [] : '', false);
32986    }
32987  }
32988}
32989function restoreControlledState$1(element, props) {
32990  var node = element;
32991  var value = props.value;
32992
32993  if (value != null) {
32994    updateOptions(node, !!props.multiple, value, false);
32995  }
32996}
32997
32998var didWarnValDefaultVal = false;
32999
33000/**
33001 * Implements a <textarea> host component that allows setting `value`, and
33002 * `defaultValue`. This differs from the traditional DOM API because value is
33003 * usually set as PCDATA children.
33004 *
33005 * If `value` is not supplied (or null/undefined), user actions that affect the
33006 * value will trigger updates to the element.
33007 *
33008 * If `value` is supplied (and not null/undefined), the rendered element will
33009 * not trigger updates to the element. Instead, the `value` prop must change in
33010 * order for the rendered element to be updated.
33011 *
33012 * The rendered element will be initialized with an empty value, the prop
33013 * `defaultValue` if specified, or the children content (deprecated).
33014 */
33015function getHostProps$3(element, props) {
33016  var node = element;
33017
33018  if (!(props.dangerouslySetInnerHTML == null)) {
33019    {
33020      throw Error( "`dangerouslySetInnerHTML` does not make sense on <textarea>." );
33021    }
33022  } // Always set children to the same thing. In IE9, the selection range will
33023  // get reset if `textContent` is mutated.  We could add a check in setTextContent
33024  // to only set the value if/when the value differs from the node value (which would
33025  // completely solve this IE9 bug), but Sebastian+Sophie seemed to like this
33026  // solution. The value can be a boolean or object so that's why it's forced
33027  // to be a string.
33028
33029
33030  var hostProps = _assign({}, props, {
33031    value: undefined,
33032    defaultValue: undefined,
33033    children: toString(node._wrapperState.initialValue)
33034  });
33035
33036  return hostProps;
33037}
33038function initWrapperState$2(element, props) {
33039  var node = element;
33040
33041  {
33042    checkControlledValueProps('textarea', props);
33043
33044    if (props.value !== undefined && props.defaultValue !== undefined && !didWarnValDefaultVal) {
33045      error('%s contains a textarea with both value and defaultValue props. ' + 'Textarea elements must be either controlled or uncontrolled ' + '(specify either the value prop, or the defaultValue prop, but not ' + 'both). Decide between using a controlled or uncontrolled textarea ' + 'and remove one of these props. More info: ' + 'https://reactjs.org/link/controlled-components', getCurrentFiberOwnerNameInDevOrNull() || 'A component');
33046
33047      didWarnValDefaultVal = true;
33048    }
33049  }
33050
33051  var initialValue = props.value; // Only bother fetching default value if we're going to use it
33052
33053  if (initialValue == null) {
33054    var children = props.children,
33055        defaultValue = props.defaultValue;
33056
33057    if (children != null) {
33058      {
33059        error('Use the `defaultValue` or `value` props instead of setting ' + 'children on <textarea>.');
33060      }
33061
33062      {
33063        if (!(defaultValue == null)) {
33064          {
33065            throw Error( "If you supply `defaultValue` on a <textarea>, do not pass children." );
33066          }
33067        }
33068
33069        if (Array.isArray(children)) {
33070          if (!(children.length <= 1)) {
33071            {
33072              throw Error( "<textarea> can only have at most one child." );
33073            }
33074          }
33075
33076          children = children[0];
33077        }
33078
33079        defaultValue = children;
33080      }
33081    }
33082
33083    if (defaultValue == null) {
33084      defaultValue = '';
33085    }
33086
33087    initialValue = defaultValue;
33088  }
33089
33090  node._wrapperState = {
33091    initialValue: getToStringValue(initialValue)
33092  };
33093}
33094function updateWrapper$1(element, props) {
33095  var node = element;
33096  var value = getToStringValue(props.value);
33097  var defaultValue = getToStringValue(props.defaultValue);
33098
33099  if (value != null) {
33100    // Cast `value` to a string to ensure the value is set correctly. While
33101    // browsers typically do this as necessary, jsdom doesn't.
33102    var newValue = toString(value); // To avoid side effects (such as losing text selection), only set value if changed
33103
33104    if (newValue !== node.value) {
33105      node.value = newValue;
33106    }
33107
33108    if (props.defaultValue == null && node.defaultValue !== newValue) {
33109      node.defaultValue = newValue;
33110    }
33111  }
33112
33113  if (defaultValue != null) {
33114    node.defaultValue = toString(defaultValue);
33115  }
33116}
33117function postMountWrapper$3(element, props) {
33118  var node = element; // This is in postMount because we need access to the DOM node, which is not
33119  // available until after the component has mounted.
33120
33121  var textContent = node.textContent; // Only set node.value if textContent is equal to the expected
33122  // initial value. In IE10/IE11 there is a bug where the placeholder attribute
33123  // will populate textContent as well.
33124  // https://developer.microsoft.com/microsoft-edge/platform/issues/101525/
33125
33126  if (textContent === node._wrapperState.initialValue) {
33127    if (textContent !== '' && textContent !== null) {
33128      node.value = textContent;
33129    }
33130  }
33131}
33132function restoreControlledState$2(element, props) {
33133  // DOM component is still mounted; update
33134  updateWrapper$1(element, props);
33135}
33136
33137var HTML_NAMESPACE = 'http://www.w3.org/1999/xhtml';
33138var MATH_NAMESPACE = 'http://www.w3.org/1998/Math/MathML';
33139var SVG_NAMESPACE = 'http://www.w3.org/2000/svg';
33140var Namespaces = {
33141  html: HTML_NAMESPACE,
33142  mathml: MATH_NAMESPACE,
33143  svg: SVG_NAMESPACE
33144}; // Assumes there is no parent namespace.
33145
33146function getIntrinsicNamespace(type) {
33147  switch (type) {
33148    case 'svg':
33149      return SVG_NAMESPACE;
33150
33151    case 'math':
33152      return MATH_NAMESPACE;
33153
33154    default:
33155      return HTML_NAMESPACE;
33156  }
33157}
33158function getChildNamespace(parentNamespace, type) {
33159  if (parentNamespace == null || parentNamespace === HTML_NAMESPACE) {
33160    // No (or default) parent namespace: potential entry point.
33161    return getIntrinsicNamespace(type);
33162  }
33163
33164  if (parentNamespace === SVG_NAMESPACE && type === 'foreignObject') {
33165    // We're leaving SVG.
33166    return HTML_NAMESPACE;
33167  } // By default, pass namespace below.
33168
33169
33170  return parentNamespace;
33171}
33172
33173/* globals MSApp */
33174
33175/**
33176 * Create a function which has 'unsafe' privileges (required by windows8 apps)
33177 */
33178var createMicrosoftUnsafeLocalFunction = function (func) {
33179  if (typeof MSApp !== 'undefined' && MSApp.execUnsafeLocalFunction) {
33180    return function (arg0, arg1, arg2, arg3) {
33181      MSApp.execUnsafeLocalFunction(function () {
33182        return func(arg0, arg1, arg2, arg3);
33183      });
33184    };
33185  } else {
33186    return func;
33187  }
33188};
33189
33190var reusableSVGContainer;
33191/**
33192 * Set the innerHTML property of a node
33193 *
33194 * @param {DOMElement} node
33195 * @param {string} html
33196 * @internal
33197 */
33198
33199var setInnerHTML = createMicrosoftUnsafeLocalFunction(function (node, html) {
33200  if (node.namespaceURI === Namespaces.svg) {
33201
33202    if (!('innerHTML' in node)) {
33203      // IE does not have innerHTML for SVG nodes, so instead we inject the
33204      // new markup in a temp node and then move the child nodes across into
33205      // the target node
33206      reusableSVGContainer = reusableSVGContainer || document.createElement('div');
33207      reusableSVGContainer.innerHTML = '<svg>' + html.valueOf().toString() + '</svg>';
33208      var svgNode = reusableSVGContainer.firstChild;
33209
33210      while (node.firstChild) {
33211        node.removeChild(node.firstChild);
33212      }
33213
33214      while (svgNode.firstChild) {
33215        node.appendChild(svgNode.firstChild);
33216      }
33217
33218      return;
33219    }
33220  }
33221
33222  node.innerHTML = html;
33223});
33224
33225/**
33226 * HTML nodeType values that represent the type of the node
33227 */
33228var ELEMENT_NODE = 1;
33229var TEXT_NODE = 3;
33230var COMMENT_NODE = 8;
33231var DOCUMENT_NODE = 9;
33232var DOCUMENT_FRAGMENT_NODE = 11;
33233
33234/**
33235 * Set the textContent property of a node. For text updates, it's faster
33236 * to set the `nodeValue` of the Text node directly instead of using
33237 * `.textContent` which will remove the existing node and create a new one.
33238 *
33239 * @param {DOMElement} node
33240 * @param {string} text
33241 * @internal
33242 */
33243
33244var setTextContent = function (node, text) {
33245  if (text) {
33246    var firstChild = node.firstChild;
33247
33248    if (firstChild && firstChild === node.lastChild && firstChild.nodeType === TEXT_NODE) {
33249      firstChild.nodeValue = text;
33250      return;
33251    }
33252  }
33253
33254  node.textContent = text;
33255};
33256
33257// List derived from Gecko source code:
33258// https://github.com/mozilla/gecko-dev/blob/4e638efc71/layout/style/test/property_database.js
33259var shorthandToLonghand = {
33260  animation: ['animationDelay', 'animationDirection', 'animationDuration', 'animationFillMode', 'animationIterationCount', 'animationName', 'animationPlayState', 'animationTimingFunction'],
33261  background: ['backgroundAttachment', 'backgroundClip', 'backgroundColor', 'backgroundImage', 'backgroundOrigin', 'backgroundPositionX', 'backgroundPositionY', 'backgroundRepeat', 'backgroundSize'],
33262  backgroundPosition: ['backgroundPositionX', 'backgroundPositionY'],
33263  border: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth', 'borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth', 'borderLeftColor', 'borderLeftStyle', 'borderLeftWidth', 'borderRightColor', 'borderRightStyle', 'borderRightWidth', 'borderTopColor', 'borderTopStyle', 'borderTopWidth'],
33264  borderBlockEnd: ['borderBlockEndColor', 'borderBlockEndStyle', 'borderBlockEndWidth'],
33265  borderBlockStart: ['borderBlockStartColor', 'borderBlockStartStyle', 'borderBlockStartWidth'],
33266  borderBottom: ['borderBottomColor', 'borderBottomStyle', 'borderBottomWidth'],
33267  borderColor: ['borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor'],
33268  borderImage: ['borderImageOutset', 'borderImageRepeat', 'borderImageSlice', 'borderImageSource', 'borderImageWidth'],
33269  borderInlineEnd: ['borderInlineEndColor', 'borderInlineEndStyle', 'borderInlineEndWidth'],
33270  borderInlineStart: ['borderInlineStartColor', 'borderInlineStartStyle', 'borderInlineStartWidth'],
33271  borderLeft: ['borderLeftColor', 'borderLeftStyle', 'borderLeftWidth'],
33272  borderRadius: ['borderBottomLeftRadius', 'borderBottomRightRadius', 'borderTopLeftRadius', 'borderTopRightRadius'],
33273  borderRight: ['borderRightColor', 'borderRightStyle', 'borderRightWidth'],
33274  borderStyle: ['borderBottomStyle', 'borderLeftStyle', 'borderRightStyle', 'borderTopStyle'],
33275  borderTop: ['borderTopColor', 'borderTopStyle', 'borderTopWidth'],
33276  borderWidth: ['borderBottomWidth', 'borderLeftWidth', 'borderRightWidth', 'borderTopWidth'],
33277  columnRule: ['columnRuleColor', 'columnRuleStyle', 'columnRuleWidth'],
33278  columns: ['columnCount', 'columnWidth'],
33279  flex: ['flexBasis', 'flexGrow', 'flexShrink'],
33280  flexFlow: ['flexDirection', 'flexWrap'],
33281  font: ['fontFamily', 'fontFeatureSettings', 'fontKerning', 'fontLanguageOverride', 'fontSize', 'fontSizeAdjust', 'fontStretch', 'fontStyle', 'fontVariant', 'fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition', 'fontWeight', 'lineHeight'],
33282  fontVariant: ['fontVariantAlternates', 'fontVariantCaps', 'fontVariantEastAsian', 'fontVariantLigatures', 'fontVariantNumeric', 'fontVariantPosition'],
33283  gap: ['columnGap', 'rowGap'],
33284  grid: ['gridAutoColumns', 'gridAutoFlow', 'gridAutoRows', 'gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],
33285  gridArea: ['gridColumnEnd', 'gridColumnStart', 'gridRowEnd', 'gridRowStart'],
33286  gridColumn: ['gridColumnEnd', 'gridColumnStart'],
33287  gridColumnGap: ['columnGap'],
33288  gridGap: ['columnGap', 'rowGap'],
33289  gridRow: ['gridRowEnd', 'gridRowStart'],
33290  gridRowGap: ['rowGap'],
33291  gridTemplate: ['gridTemplateAreas', 'gridTemplateColumns', 'gridTemplateRows'],
33292  listStyle: ['listStyleImage', 'listStylePosition', 'listStyleType'],
33293  margin: ['marginBottom', 'marginLeft', 'marginRight', 'marginTop'],
33294  marker: ['markerEnd', 'markerMid', 'markerStart'],
33295  mask: ['maskClip', 'maskComposite', 'maskImage', 'maskMode', 'maskOrigin', 'maskPositionX', 'maskPositionY', 'maskRepeat', 'maskSize'],
33296  maskPosition: ['maskPositionX', 'maskPositionY'],
33297  outline: ['outlineColor', 'outlineStyle', 'outlineWidth'],
33298  overflow: ['overflowX', 'overflowY'],
33299  padding: ['paddingBottom', 'paddingLeft', 'paddingRight', 'paddingTop'],
33300  placeContent: ['alignContent', 'justifyContent'],
33301  placeItems: ['alignItems', 'justifyItems'],
33302  placeSelf: ['alignSelf', 'justifySelf'],
33303  textDecoration: ['textDecorationColor', 'textDecorationLine', 'textDecorationStyle'],
33304  textEmphasis: ['textEmphasisColor', 'textEmphasisStyle'],
33305  transition: ['transitionDelay', 'transitionDuration', 'transitionProperty', 'transitionTimingFunction'],
33306  wordWrap: ['overflowWrap']
33307};
33308
33309/**
33310 * CSS properties which accept numbers but are not in units of "px".
33311 */
33312var isUnitlessNumber = {
33313  animationIterationCount: true,
33314  borderImageOutset: true,
33315  borderImageSlice: true,
33316  borderImageWidth: true,
33317  boxFlex: true,
33318  boxFlexGroup: true,
33319  boxOrdinalGroup: true,
33320  columnCount: true,
33321  columns: true,
33322  flex: true,
33323  flexGrow: true,
33324  flexPositive: true,
33325  flexShrink: true,
33326  flexNegative: true,
33327  flexOrder: true,
33328  gridArea: true,
33329  gridRow: true,
33330  gridRowEnd: true,
33331  gridRowSpan: true,
33332  gridRowStart: true,
33333  gridColumn: true,
33334  gridColumnEnd: true,
33335  gridColumnSpan: true,
33336  gridColumnStart: true,
33337  fontWeight: true,
33338  lineClamp: true,
33339  lineHeight: true,
33340  opacity: true,
33341  order: true,
33342  orphans: true,
33343  tabSize: true,
33344  widows: true,
33345  zIndex: true,
33346  zoom: true,
33347  // SVG-related properties
33348  fillOpacity: true,
33349  floodOpacity: true,
33350  stopOpacity: true,
33351  strokeDasharray: true,
33352  strokeDashoffset: true,
33353  strokeMiterlimit: true,
33354  strokeOpacity: true,
33355  strokeWidth: true
33356};
33357/**
33358 * @param {string} prefix vendor-specific prefix, eg: Webkit
33359 * @param {string} key style name, eg: transitionDuration
33360 * @return {string} style name prefixed with `prefix`, properly camelCased, eg:
33361 * WebkitTransitionDuration
33362 */
33363
33364function prefixKey(prefix, key) {
33365  return prefix + key.charAt(0).toUpperCase() + key.substring(1);
33366}
33367/**
33368 * Support style names that may come passed in prefixed by adding permutations
33369 * of vendor prefixes.
33370 */
33371
33372
33373var prefixes = ['Webkit', 'ms', 'Moz', 'O']; // Using Object.keys here, or else the vanilla for-in loop makes IE8 go into an
33374// infinite loop, because it iterates over the newly added props too.
33375
33376Object.keys(isUnitlessNumber).forEach(function (prop) {
33377  prefixes.forEach(function (prefix) {
33378    isUnitlessNumber[prefixKey(prefix, prop)] = isUnitlessNumber[prop];
33379  });
33380});
33381
33382/**
33383 * Convert a value into the proper css writable value. The style name `name`
33384 * should be logical (no hyphens), as specified
33385 * in `CSSProperty.isUnitlessNumber`.
33386 *
33387 * @param {string} name CSS property name such as `topMargin`.
33388 * @param {*} value CSS property value such as `10px`.
33389 * @return {string} Normalized style value with dimensions applied.
33390 */
33391
33392function dangerousStyleValue(name, value, isCustomProperty) {
33393  // Note that we've removed escapeTextForBrowser() calls here since the
33394  // whole string will be escaped when the attribute is injected into
33395  // the markup. If you provide unsafe user data here they can inject
33396  // arbitrary CSS which may be problematic (I couldn't repro this):
33397  // https://www.owasp.org/index.php/XSS_Filter_Evasion_Cheat_Sheet
33398  // http://www.thespanner.co.uk/2007/11/26/ultimate-xss-css-injection/
33399  // This is not an XSS hole but instead a potential CSS injection issue
33400  // which has lead to a greater discussion about how we're going to
33401  // trust URLs moving forward. See #2115901
33402  var isEmpty = value == null || typeof value === 'boolean' || value === '';
33403
33404  if (isEmpty) {
33405    return '';
33406  }
33407
33408  if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) {
33409    return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers
33410  }
33411
33412  return ('' + value).trim();
33413}
33414
33415var uppercasePattern = /([A-Z])/g;
33416var msPattern = /^ms-/;
33417/**
33418 * Hyphenates a camelcased CSS property name, for example:
33419 *
33420 *   > hyphenateStyleName('backgroundColor')
33421 *   < "background-color"
33422 *   > hyphenateStyleName('MozTransition')
33423 *   < "-moz-transition"
33424 *   > hyphenateStyleName('msTransition')
33425 *   < "-ms-transition"
33426 *
33427 * As Modernizr suggests (http://modernizr.com/docs/#prefixed), an `ms` prefix
33428 * is converted to `-ms-`.
33429 */
33430
33431function hyphenateStyleName(name) {
33432  return name.replace(uppercasePattern, '-$1').toLowerCase().replace(msPattern, '-ms-');
33433}
33434
33435var warnValidStyle = function () {};
33436
33437{
33438  // 'msTransform' is correct, but the other prefixes should be capitalized
33439  var badVendoredStyleNamePattern = /^(?:webkit|moz|o)[A-Z]/;
33440  var msPattern$1 = /^-ms-/;
33441  var hyphenPattern = /-(.)/g; // style values shouldn't contain a semicolon
33442
33443  var badStyleValueWithSemicolonPattern = /;\s*$/;
33444  var warnedStyleNames = {};
33445  var warnedStyleValues = {};
33446  var warnedForNaNValue = false;
33447  var warnedForInfinityValue = false;
33448
33449  var camelize = function (string) {
33450    return string.replace(hyphenPattern, function (_, character) {
33451      return character.toUpperCase();
33452    });
33453  };
33454
33455  var warnHyphenatedStyleName = function (name) {
33456    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
33457      return;
33458    }
33459
33460    warnedStyleNames[name] = true;
33461
33462    error('Unsupported style property %s. Did you mean %s?', name, // As Andi Smith suggests
33463    // (http://www.andismith.com/blog/2012/02/modernizr-prefixed/), an `-ms` prefix
33464    // is converted to lowercase `ms`.
33465    camelize(name.replace(msPattern$1, 'ms-')));
33466  };
33467
33468  var warnBadVendoredStyleName = function (name) {
33469    if (warnedStyleNames.hasOwnProperty(name) && warnedStyleNames[name]) {
33470      return;
33471    }
33472
33473    warnedStyleNames[name] = true;
33474
33475    error('Unsupported vendor-prefixed style property %s. Did you mean %s?', name, name.charAt(0).toUpperCase() + name.slice(1));
33476  };
33477
33478  var warnStyleValueWithSemicolon = function (name, value) {
33479    if (warnedStyleValues.hasOwnProperty(value) && warnedStyleValues[value]) {
33480      return;
33481    }
33482
33483    warnedStyleValues[value] = true;
33484
33485    error("Style property values shouldn't contain a semicolon. " + 'Try "%s: %s" instead.', name, value.replace(badStyleValueWithSemicolonPattern, ''));
33486  };
33487
33488  var warnStyleValueIsNaN = function (name, value) {
33489    if (warnedForNaNValue) {
33490      return;
33491    }
33492
33493    warnedForNaNValue = true;
33494
33495    error('`NaN` is an invalid value for the `%s` css style property.', name);
33496  };
33497
33498  var warnStyleValueIsInfinity = function (name, value) {
33499    if (warnedForInfinityValue) {
33500      return;
33501    }
33502
33503    warnedForInfinityValue = true;
33504
33505    error('`Infinity` is an invalid value for the `%s` css style property.', name);
33506  };
33507
33508  warnValidStyle = function (name, value) {
33509    if (name.indexOf('-') > -1) {
33510      warnHyphenatedStyleName(name);
33511    } else if (badVendoredStyleNamePattern.test(name)) {
33512      warnBadVendoredStyleName(name);
33513    } else if (badStyleValueWithSemicolonPattern.test(value)) {
33514      warnStyleValueWithSemicolon(name, value);
33515    }
33516
33517    if (typeof value === 'number') {
33518      if (isNaN(value)) {
33519        warnStyleValueIsNaN(name, value);
33520      } else if (!isFinite(value)) {
33521        warnStyleValueIsInfinity(name, value);
33522      }
33523    }
33524  };
33525}
33526
33527var warnValidStyle$1 = warnValidStyle;
33528
33529/**
33530 * Operations for dealing with CSS properties.
33531 */
33532
33533/**
33534 * This creates a string that is expected to be equivalent to the style
33535 * attribute generated by server-side rendering. It by-passes warnings and
33536 * security checks so it's not safe to use this value for anything other than
33537 * comparison. It is only used in DEV for SSR validation.
33538 */
33539
33540function createDangerousStringForStyles(styles) {
33541  {
33542    var serialized = '';
33543    var delimiter = '';
33544
33545    for (var styleName in styles) {
33546      if (!styles.hasOwnProperty(styleName)) {
33547        continue;
33548      }
33549
33550      var styleValue = styles[styleName];
33551
33552      if (styleValue != null) {
33553        var isCustomProperty = styleName.indexOf('--') === 0;
33554        serialized += delimiter + (isCustomProperty ? styleName : hyphenateStyleName(styleName)) + ':';
33555        serialized += dangerousStyleValue(styleName, styleValue, isCustomProperty);
33556        delimiter = ';';
33557      }
33558    }
33559
33560    return serialized || null;
33561  }
33562}
33563/**
33564 * Sets the value for multiple styles on a node.  If a value is specified as
33565 * '' (empty string), the corresponding style property will be unset.
33566 *
33567 * @param {DOMElement} node
33568 * @param {object} styles
33569 */
33570
33571function setValueForStyles(node, styles) {
33572  var style = node.style;
33573
33574  for (var styleName in styles) {
33575    if (!styles.hasOwnProperty(styleName)) {
33576      continue;
33577    }
33578
33579    var isCustomProperty = styleName.indexOf('--') === 0;
33580
33581    {
33582      if (!isCustomProperty) {
33583        warnValidStyle$1(styleName, styles[styleName]);
33584      }
33585    }
33586
33587    var styleValue = dangerousStyleValue(styleName, styles[styleName], isCustomProperty);
33588
33589    if (styleName === 'float') {
33590      styleName = 'cssFloat';
33591    }
33592
33593    if (isCustomProperty) {
33594      style.setProperty(styleName, styleValue);
33595    } else {
33596      style[styleName] = styleValue;
33597    }
33598  }
33599}
33600
33601function isValueEmpty(value) {
33602  return value == null || typeof value === 'boolean' || value === '';
33603}
33604/**
33605 * Given {color: 'red', overflow: 'hidden'} returns {
33606 *   color: 'color',
33607 *   overflowX: 'overflow',
33608 *   overflowY: 'overflow',
33609 * }. This can be read as "the overflowY property was set by the overflow
33610 * shorthand". That is, the values are the property that each was derived from.
33611 */
33612
33613
33614function expandShorthandMap(styles) {
33615  var expanded = {};
33616
33617  for (var key in styles) {
33618    var longhands = shorthandToLonghand[key] || [key];
33619
33620    for (var i = 0; i < longhands.length; i++) {
33621      expanded[longhands[i]] = key;
33622    }
33623  }
33624
33625  return expanded;
33626}
33627/**
33628 * When mixing shorthand and longhand property names, we warn during updates if
33629 * we expect an incorrect result to occur. In particular, we warn for:
33630 *
33631 * Updating a shorthand property (longhand gets overwritten):
33632 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'baz', fontVariant: 'bar'}
33633 *   becomes .style.font = 'baz'
33634 * Removing a shorthand property (longhand gets lost too):
33635 *   {font: 'foo', fontVariant: 'bar'} -> {fontVariant: 'bar'}
33636 *   becomes .style.font = ''
33637 * Removing a longhand property (should revert to shorthand; doesn't):
33638 *   {font: 'foo', fontVariant: 'bar'} -> {font: 'foo'}
33639 *   becomes .style.fontVariant = ''
33640 */
33641
33642
33643function validateShorthandPropertyCollisionInDev(styleUpdates, nextStyles) {
33644  {
33645    if (!nextStyles) {
33646      return;
33647    }
33648
33649    var expandedUpdates = expandShorthandMap(styleUpdates);
33650    var expandedStyles = expandShorthandMap(nextStyles);
33651    var warnedAbout = {};
33652
33653    for (var key in expandedUpdates) {
33654      var originalKey = expandedUpdates[key];
33655      var correctOriginalKey = expandedStyles[key];
33656
33657      if (correctOriginalKey && originalKey !== correctOriginalKey) {
33658        var warningKey = originalKey + ',' + correctOriginalKey;
33659
33660        if (warnedAbout[warningKey]) {
33661          continue;
33662        }
33663
33664        warnedAbout[warningKey] = true;
33665
33666        error('%s a style property during rerender (%s) when a ' + 'conflicting property is set (%s) can lead to styling bugs. To ' + "avoid this, don't mix shorthand and non-shorthand properties " + 'for the same value; instead, replace the shorthand with ' + 'separate values.', isValueEmpty(styleUpdates[originalKey]) ? 'Removing' : 'Updating', originalKey, correctOriginalKey);
33667      }
33668    }
33669  }
33670}
33671
33672// For HTML, certain tags should omit their close tag. We keep a list for
33673// those special-case tags.
33674var omittedCloseTags = {
33675  area: true,
33676  base: true,
33677  br: true,
33678  col: true,
33679  embed: true,
33680  hr: true,
33681  img: true,
33682  input: true,
33683  keygen: true,
33684  link: true,
33685  meta: true,
33686  param: true,
33687  source: true,
33688  track: true,
33689  wbr: true // NOTE: menuitem's close tag should be omitted, but that causes problems.
33690
33691};
33692
33693// `omittedCloseTags` except that `menuitem` should still have its closing tag.
33694
33695var voidElementTags = _assign({
33696  menuitem: true
33697}, omittedCloseTags);
33698
33699var HTML = '__html';
33700
33701function assertValidProps(tag, props) {
33702  if (!props) {
33703    return;
33704  } // Note the use of `==` which checks for null or undefined.
33705
33706
33707  if (voidElementTags[tag]) {
33708    if (!(props.children == null && props.dangerouslySetInnerHTML == null)) {
33709      {
33710        throw Error( tag + " is a void element tag and must neither have `children` nor use `dangerouslySetInnerHTML`." );
33711      }
33712    }
33713  }
33714
33715  if (props.dangerouslySetInnerHTML != null) {
33716    if (!(props.children == null)) {
33717      {
33718        throw Error( "Can only set one of `children` or `props.dangerouslySetInnerHTML`." );
33719      }
33720    }
33721
33722    if (!(typeof props.dangerouslySetInnerHTML === 'object' && HTML in props.dangerouslySetInnerHTML)) {
33723      {
33724        throw Error( "`props.dangerouslySetInnerHTML` must be in the form `{__html: ...}`. Please visit https://reactjs.org/link/dangerously-set-inner-html for more information." );
33725      }
33726    }
33727  }
33728
33729  {
33730    if (!props.suppressContentEditableWarning && props.contentEditable && props.children != null) {
33731      error('A component is `contentEditable` and contains `children` managed by ' + 'React. It is now your responsibility to guarantee that none of ' + 'those nodes are unexpectedly modified or duplicated. This is ' + 'probably not intentional.');
33732    }
33733  }
33734
33735  if (!(props.style == null || typeof props.style === 'object')) {
33736    {
33737      throw Error( "The `style` prop expects a mapping from style properties to values, not a string. For example, style={{marginRight: spacing + 'em'}} when using JSX." );
33738    }
33739  }
33740}
33741
33742function isCustomComponent(tagName, props) {
33743  if (tagName.indexOf('-') === -1) {
33744    return typeof props.is === 'string';
33745  }
33746
33747  switch (tagName) {
33748    // These are reserved SVG and MathML elements.
33749    // We don't mind this list too much because we expect it to never grow.
33750    // The alternative is to track the namespace in a few places which is convoluted.
33751    // https://w3c.github.io/webcomponents/spec/custom/#custom-elements-core-concepts
33752    case 'annotation-xml':
33753    case 'color-profile':
33754    case 'font-face':
33755    case 'font-face-src':
33756    case 'font-face-uri':
33757    case 'font-face-format':
33758    case 'font-face-name':
33759    case 'missing-glyph':
33760      return false;
33761
33762    default:
33763      return true;
33764  }
33765}
33766
33767// When adding attributes to the HTML or SVG allowed attribute list, be sure to
33768// also add them to this module to ensure casing and incorrect name
33769// warnings.
33770var possibleStandardNames = {
33771  // HTML
33772  accept: 'accept',
33773  acceptcharset: 'acceptCharset',
33774  'accept-charset': 'acceptCharset',
33775  accesskey: 'accessKey',
33776  action: 'action',
33777  allowfullscreen: 'allowFullScreen',
33778  alt: 'alt',
33779  as: 'as',
33780  async: 'async',
33781  autocapitalize: 'autoCapitalize',
33782  autocomplete: 'autoComplete',
33783  autocorrect: 'autoCorrect',
33784  autofocus: 'autoFocus',
33785  autoplay: 'autoPlay',
33786  autosave: 'autoSave',
33787  capture: 'capture',
33788  cellpadding: 'cellPadding',
33789  cellspacing: 'cellSpacing',
33790  challenge: 'challenge',
33791  charset: 'charSet',
33792  checked: 'checked',
33793  children: 'children',
33794  cite: 'cite',
33795  class: 'className',
33796  classid: 'classID',
33797  classname: 'className',
33798  cols: 'cols',
33799  colspan: 'colSpan',
33800  content: 'content',
33801  contenteditable: 'contentEditable',
33802  contextmenu: 'contextMenu',
33803  controls: 'controls',
33804  controlslist: 'controlsList',
33805  coords: 'coords',
33806  crossorigin: 'crossOrigin',
33807  dangerouslysetinnerhtml: 'dangerouslySetInnerHTML',
33808  data: 'data',
33809  datetime: 'dateTime',
33810  default: 'default',
33811  defaultchecked: 'defaultChecked',
33812  defaultvalue: 'defaultValue',
33813  defer: 'defer',
33814  dir: 'dir',
33815  disabled: 'disabled',
33816  disablepictureinpicture: 'disablePictureInPicture',
33817  disableremoteplayback: 'disableRemotePlayback',
33818  download: 'download',
33819  draggable: 'draggable',
33820  enctype: 'encType',
33821  enterkeyhint: 'enterKeyHint',
33822  for: 'htmlFor',
33823  form: 'form',
33824  formmethod: 'formMethod',
33825  formaction: 'formAction',
33826  formenctype: 'formEncType',
33827  formnovalidate: 'formNoValidate',
33828  formtarget: 'formTarget',
33829  frameborder: 'frameBorder',
33830  headers: 'headers',
33831  height: 'height',
33832  hidden: 'hidden',
33833  high: 'high',
33834  href: 'href',
33835  hreflang: 'hrefLang',
33836  htmlfor: 'htmlFor',
33837  httpequiv: 'httpEquiv',
33838  'http-equiv': 'httpEquiv',
33839  icon: 'icon',
33840  id: 'id',
33841  innerhtml: 'innerHTML',
33842  inputmode: 'inputMode',
33843  integrity: 'integrity',
33844  is: 'is',
33845  itemid: 'itemID',
33846  itemprop: 'itemProp',
33847  itemref: 'itemRef',
33848  itemscope: 'itemScope',
33849  itemtype: 'itemType',
33850  keyparams: 'keyParams',
33851  keytype: 'keyType',
33852  kind: 'kind',
33853  label: 'label',
33854  lang: 'lang',
33855  list: 'list',
33856  loop: 'loop',
33857  low: 'low',
33858  manifest: 'manifest',
33859  marginwidth: 'marginWidth',
33860  marginheight: 'marginHeight',
33861  max: 'max',
33862  maxlength: 'maxLength',
33863  media: 'media',
33864  mediagroup: 'mediaGroup',
33865  method: 'method',
33866  min: 'min',
33867  minlength: 'minLength',
33868  multiple: 'multiple',
33869  muted: 'muted',
33870  name: 'name',
33871  nomodule: 'noModule',
33872  nonce: 'nonce',
33873  novalidate: 'noValidate',
33874  open: 'open',
33875  optimum: 'optimum',
33876  pattern: 'pattern',
33877  placeholder: 'placeholder',
33878  playsinline: 'playsInline',
33879  poster: 'poster',
33880  preload: 'preload',
33881  profile: 'profile',
33882  radiogroup: 'radioGroup',
33883  readonly: 'readOnly',
33884  referrerpolicy: 'referrerPolicy',
33885  rel: 'rel',
33886  required: 'required',
33887  reversed: 'reversed',
33888  role: 'role',
33889  rows: 'rows',
33890  rowspan: 'rowSpan',
33891  sandbox: 'sandbox',
33892  scope: 'scope',
33893  scoped: 'scoped',
33894  scrolling: 'scrolling',
33895  seamless: 'seamless',
33896  selected: 'selected',
33897  shape: 'shape',
33898  size: 'size',
33899  sizes: 'sizes',
33900  span: 'span',
33901  spellcheck: 'spellCheck',
33902  src: 'src',
33903  srcdoc: 'srcDoc',
33904  srclang: 'srcLang',
33905  srcset: 'srcSet',
33906  start: 'start',
33907  step: 'step',
33908  style: 'style',
33909  summary: 'summary',
33910  tabindex: 'tabIndex',
33911  target: 'target',
33912  title: 'title',
33913  type: 'type',
33914  usemap: 'useMap',
33915  value: 'value',
33916  width: 'width',
33917  wmode: 'wmode',
33918  wrap: 'wrap',
33919  // SVG
33920  about: 'about',
33921  accentheight: 'accentHeight',
33922  'accent-height': 'accentHeight',
33923  accumulate: 'accumulate',
33924  additive: 'additive',
33925  alignmentbaseline: 'alignmentBaseline',
33926  'alignment-baseline': 'alignmentBaseline',
33927  allowreorder: 'allowReorder',
33928  alphabetic: 'alphabetic',
33929  amplitude: 'amplitude',
33930  arabicform: 'arabicForm',
33931  'arabic-form': 'arabicForm',
33932  ascent: 'ascent',
33933  attributename: 'attributeName',
33934  attributetype: 'attributeType',
33935  autoreverse: 'autoReverse',
33936  azimuth: 'azimuth',
33937  basefrequency: 'baseFrequency',
33938  baselineshift: 'baselineShift',
33939  'baseline-shift': 'baselineShift',
33940  baseprofile: 'baseProfile',
33941  bbox: 'bbox',
33942  begin: 'begin',
33943  bias: 'bias',
33944  by: 'by',
33945  calcmode: 'calcMode',
33946  capheight: 'capHeight',
33947  'cap-height': 'capHeight',
33948  clip: 'clip',
33949  clippath: 'clipPath',
33950  'clip-path': 'clipPath',
33951  clippathunits: 'clipPathUnits',
33952  cliprule: 'clipRule',
33953  'clip-rule': 'clipRule',
33954  color: 'color',
33955  colorinterpolation: 'colorInterpolation',
33956  'color-interpolation': 'colorInterpolation',
33957  colorinterpolationfilters: 'colorInterpolationFilters',
33958  'color-interpolation-filters': 'colorInterpolationFilters',
33959  colorprofile: 'colorProfile',
33960  'color-profile': 'colorProfile',
33961  colorrendering: 'colorRendering',
33962  'color-rendering': 'colorRendering',
33963  contentscripttype: 'contentScriptType',
33964  contentstyletype: 'contentStyleType',
33965  cursor: 'cursor',
33966  cx: 'cx',
33967  cy: 'cy',
33968  d: 'd',
33969  datatype: 'datatype',
33970  decelerate: 'decelerate',
33971  descent: 'descent',
33972  diffuseconstant: 'diffuseConstant',
33973  direction: 'direction',
33974  display: 'display',
33975  divisor: 'divisor',
33976  dominantbaseline: 'dominantBaseline',
33977  'dominant-baseline': 'dominantBaseline',
33978  dur: 'dur',
33979  dx: 'dx',
33980  dy: 'dy',
33981  edgemode: 'edgeMode',
33982  elevation: 'elevation',
33983  enablebackground: 'enableBackground',
33984  'enable-background': 'enableBackground',
33985  end: 'end',
33986  exponent: 'exponent',
33987  externalresourcesrequired: 'externalResourcesRequired',
33988  fill: 'fill',
33989  fillopacity: 'fillOpacity',
33990  'fill-opacity': 'fillOpacity',
33991  fillrule: 'fillRule',
33992  'fill-rule': 'fillRule',
33993  filter: 'filter',
33994  filterres: 'filterRes',
33995  filterunits: 'filterUnits',
33996  floodopacity: 'floodOpacity',
33997  'flood-opacity': 'floodOpacity',
33998  floodcolor: 'floodColor',
33999  'flood-color': 'floodColor',
34000  focusable: 'focusable',
34001  fontfamily: 'fontFamily',
34002  'font-family': 'fontFamily',
34003  fontsize: 'fontSize',
34004  'font-size': 'fontSize',
34005  fontsizeadjust: 'fontSizeAdjust',
34006  'font-size-adjust': 'fontSizeAdjust',
34007  fontstretch: 'fontStretch',
34008  'font-stretch': 'fontStretch',
34009  fontstyle: 'fontStyle',
34010  'font-style': 'fontStyle',
34011  fontvariant: 'fontVariant',
34012  'font-variant': 'fontVariant',
34013  fontweight: 'fontWeight',
34014  'font-weight': 'fontWeight',
34015  format: 'format',
34016  from: 'from',
34017  fx: 'fx',
34018  fy: 'fy',
34019  g1: 'g1',
34020  g2: 'g2',
34021  glyphname: 'glyphName',
34022  'glyph-name': 'glyphName',
34023  glyphorientationhorizontal: 'glyphOrientationHorizontal',
34024  'glyph-orientation-horizontal': 'glyphOrientationHorizontal',
34025  glyphorientationvertical: 'glyphOrientationVertical',
34026  'glyph-orientation-vertical': 'glyphOrientationVertical',
34027  glyphref: 'glyphRef',
34028  gradienttransform: 'gradientTransform',
34029  gradientunits: 'gradientUnits',
34030  hanging: 'hanging',
34031  horizadvx: 'horizAdvX',
34032  'horiz-adv-x': 'horizAdvX',
34033  horizoriginx: 'horizOriginX',
34034  'horiz-origin-x': 'horizOriginX',
34035  ideographic: 'ideographic',
34036  imagerendering: 'imageRendering',
34037  'image-rendering': 'imageRendering',
34038  in2: 'in2',
34039  in: 'in',
34040  inlist: 'inlist',
34041  intercept: 'intercept',
34042  k1: 'k1',
34043  k2: 'k2',
34044  k3: 'k3',
34045  k4: 'k4',
34046  k: 'k',
34047  kernelmatrix: 'kernelMatrix',
34048  kernelunitlength: 'kernelUnitLength',
34049  kerning: 'kerning',
34050  keypoints: 'keyPoints',
34051  keysplines: 'keySplines',
34052  keytimes: 'keyTimes',
34053  lengthadjust: 'lengthAdjust',
34054  letterspacing: 'letterSpacing',
34055  'letter-spacing': 'letterSpacing',
34056  lightingcolor: 'lightingColor',
34057  'lighting-color': 'lightingColor',
34058  limitingconeangle: 'limitingConeAngle',
34059  local: 'local',
34060  markerend: 'markerEnd',
34061  'marker-end': 'markerEnd',
34062  markerheight: 'markerHeight',
34063  markermid: 'markerMid',
34064  'marker-mid': 'markerMid',
34065  markerstart: 'markerStart',
34066  'marker-start': 'markerStart',
34067  markerunits: 'markerUnits',
34068  markerwidth: 'markerWidth',
34069  mask: 'mask',
34070  maskcontentunits: 'maskContentUnits',
34071  maskunits: 'maskUnits',
34072  mathematical: 'mathematical',
34073  mode: 'mode',
34074  numoctaves: 'numOctaves',
34075  offset: 'offset',
34076  opacity: 'opacity',
34077  operator: 'operator',
34078  order: 'order',
34079  orient: 'orient',
34080  orientation: 'orientation',
34081  origin: 'origin',
34082  overflow: 'overflow',
34083  overlineposition: 'overlinePosition',
34084  'overline-position': 'overlinePosition',
34085  overlinethickness: 'overlineThickness',
34086  'overline-thickness': 'overlineThickness',
34087  paintorder: 'paintOrder',
34088  'paint-order': 'paintOrder',
34089  panose1: 'panose1',
34090  'panose-1': 'panose1',
34091  pathlength: 'pathLength',
34092  patterncontentunits: 'patternContentUnits',
34093  patterntransform: 'patternTransform',
34094  patternunits: 'patternUnits',
34095  pointerevents: 'pointerEvents',
34096  'pointer-events': 'pointerEvents',
34097  points: 'points',
34098  pointsatx: 'pointsAtX',
34099  pointsaty: 'pointsAtY',
34100  pointsatz: 'pointsAtZ',
34101  prefix: 'prefix',
34102  preservealpha: 'preserveAlpha',
34103  preserveaspectratio: 'preserveAspectRatio',
34104  primitiveunits: 'primitiveUnits',
34105  property: 'property',
34106  r: 'r',
34107  radius: 'radius',
34108  refx: 'refX',
34109  refy: 'refY',
34110  renderingintent: 'renderingIntent',
34111  'rendering-intent': 'renderingIntent',
34112  repeatcount: 'repeatCount',
34113  repeatdur: 'repeatDur',
34114  requiredextensions: 'requiredExtensions',
34115  requiredfeatures: 'requiredFeatures',
34116  resource: 'resource',
34117  restart: 'restart',
34118  result: 'result',
34119  results: 'results',
34120  rotate: 'rotate',
34121  rx: 'rx',
34122  ry: 'ry',
34123  scale: 'scale',
34124  security: 'security',
34125  seed: 'seed',
34126  shaperendering: 'shapeRendering',
34127  'shape-rendering': 'shapeRendering',
34128  slope: 'slope',
34129  spacing: 'spacing',
34130  specularconstant: 'specularConstant',
34131  specularexponent: 'specularExponent',
34132  speed: 'speed',
34133  spreadmethod: 'spreadMethod',
34134  startoffset: 'startOffset',
34135  stddeviation: 'stdDeviation',
34136  stemh: 'stemh',
34137  stemv: 'stemv',
34138  stitchtiles: 'stitchTiles',
34139  stopcolor: 'stopColor',
34140  'stop-color': 'stopColor',
34141  stopopacity: 'stopOpacity',
34142  'stop-opacity': 'stopOpacity',
34143  strikethroughposition: 'strikethroughPosition',
34144  'strikethrough-position': 'strikethroughPosition',
34145  strikethroughthickness: 'strikethroughThickness',
34146  'strikethrough-thickness': 'strikethroughThickness',
34147  string: 'string',
34148  stroke: 'stroke',
34149  strokedasharray: 'strokeDasharray',
34150  'stroke-dasharray': 'strokeDasharray',
34151  strokedashoffset: 'strokeDashoffset',
34152  'stroke-dashoffset': 'strokeDashoffset',
34153  strokelinecap: 'strokeLinecap',
34154  'stroke-linecap': 'strokeLinecap',
34155  strokelinejoin: 'strokeLinejoin',
34156  'stroke-linejoin': 'strokeLinejoin',
34157  strokemiterlimit: 'strokeMiterlimit',
34158  'stroke-miterlimit': 'strokeMiterlimit',
34159  strokewidth: 'strokeWidth',
34160  'stroke-width': 'strokeWidth',
34161  strokeopacity: 'strokeOpacity',
34162  'stroke-opacity': 'strokeOpacity',
34163  suppresscontenteditablewarning: 'suppressContentEditableWarning',
34164  suppresshydrationwarning: 'suppressHydrationWarning',
34165  surfacescale: 'surfaceScale',
34166  systemlanguage: 'systemLanguage',
34167  tablevalues: 'tableValues',
34168  targetx: 'targetX',
34169  targety: 'targetY',
34170  textanchor: 'textAnchor',
34171  'text-anchor': 'textAnchor',
34172  textdecoration: 'textDecoration',
34173  'text-decoration': 'textDecoration',
34174  textlength: 'textLength',
34175  textrendering: 'textRendering',
34176  'text-rendering': 'textRendering',
34177  to: 'to',
34178  transform: 'transform',
34179  typeof: 'typeof',
34180  u1: 'u1',
34181  u2: 'u2',
34182  underlineposition: 'underlinePosition',
34183  'underline-position': 'underlinePosition',
34184  underlinethickness: 'underlineThickness',
34185  'underline-thickness': 'underlineThickness',
34186  unicode: 'unicode',
34187  unicodebidi: 'unicodeBidi',
34188  'unicode-bidi': 'unicodeBidi',
34189  unicoderange: 'unicodeRange',
34190  'unicode-range': 'unicodeRange',
34191  unitsperem: 'unitsPerEm',
34192  'units-per-em': 'unitsPerEm',
34193  unselectable: 'unselectable',
34194  valphabetic: 'vAlphabetic',
34195  'v-alphabetic': 'vAlphabetic',
34196  values: 'values',
34197  vectoreffect: 'vectorEffect',
34198  'vector-effect': 'vectorEffect',
34199  version: 'version',
34200  vertadvy: 'vertAdvY',
34201  'vert-adv-y': 'vertAdvY',
34202  vertoriginx: 'vertOriginX',
34203  'vert-origin-x': 'vertOriginX',
34204  vertoriginy: 'vertOriginY',
34205  'vert-origin-y': 'vertOriginY',
34206  vhanging: 'vHanging',
34207  'v-hanging': 'vHanging',
34208  videographic: 'vIdeographic',
34209  'v-ideographic': 'vIdeographic',
34210  viewbox: 'viewBox',
34211  viewtarget: 'viewTarget',
34212  visibility: 'visibility',
34213  vmathematical: 'vMathematical',
34214  'v-mathematical': 'vMathematical',
34215  vocab: 'vocab',
34216  widths: 'widths',
34217  wordspacing: 'wordSpacing',
34218  'word-spacing': 'wordSpacing',
34219  writingmode: 'writingMode',
34220  'writing-mode': 'writingMode',
34221  x1: 'x1',
34222  x2: 'x2',
34223  x: 'x',
34224  xchannelselector: 'xChannelSelector',
34225  xheight: 'xHeight',
34226  'x-height': 'xHeight',
34227  xlinkactuate: 'xlinkActuate',
34228  'xlink:actuate': 'xlinkActuate',
34229  xlinkarcrole: 'xlinkArcrole',
34230  'xlink:arcrole': 'xlinkArcrole',
34231  xlinkhref: 'xlinkHref',
34232  'xlink:href': 'xlinkHref',
34233  xlinkrole: 'xlinkRole',
34234  'xlink:role': 'xlinkRole',
34235  xlinkshow: 'xlinkShow',
34236  'xlink:show': 'xlinkShow',
34237  xlinktitle: 'xlinkTitle',
34238  'xlink:title': 'xlinkTitle',
34239  xlinktype: 'xlinkType',
34240  'xlink:type': 'xlinkType',
34241  xmlbase: 'xmlBase',
34242  'xml:base': 'xmlBase',
34243  xmllang: 'xmlLang',
34244  'xml:lang': 'xmlLang',
34245  xmlns: 'xmlns',
34246  'xml:space': 'xmlSpace',
34247  xmlnsxlink: 'xmlnsXlink',
34248  'xmlns:xlink': 'xmlnsXlink',
34249  xmlspace: 'xmlSpace',
34250  y1: 'y1',
34251  y2: 'y2',
34252  y: 'y',
34253  ychannelselector: 'yChannelSelector',
34254  z: 'z',
34255  zoomandpan: 'zoomAndPan'
34256};
34257
34258var ariaProperties = {
34259  'aria-current': 0,
34260  // state
34261  'aria-details': 0,
34262  'aria-disabled': 0,
34263  // state
34264  'aria-hidden': 0,
34265  // state
34266  'aria-invalid': 0,
34267  // state
34268  'aria-keyshortcuts': 0,
34269  'aria-label': 0,
34270  'aria-roledescription': 0,
34271  // Widget Attributes
34272  'aria-autocomplete': 0,
34273  'aria-checked': 0,
34274  'aria-expanded': 0,
34275  'aria-haspopup': 0,
34276  'aria-level': 0,
34277  'aria-modal': 0,
34278  'aria-multiline': 0,
34279  'aria-multiselectable': 0,
34280  'aria-orientation': 0,
34281  'aria-placeholder': 0,
34282  'aria-pressed': 0,
34283  'aria-readonly': 0,
34284  'aria-required': 0,
34285  'aria-selected': 0,
34286  'aria-sort': 0,
34287  'aria-valuemax': 0,
34288  'aria-valuemin': 0,
34289  'aria-valuenow': 0,
34290  'aria-valuetext': 0,
34291  // Live Region Attributes
34292  'aria-atomic': 0,
34293  'aria-busy': 0,
34294  'aria-live': 0,
34295  'aria-relevant': 0,
34296  // Drag-and-Drop Attributes
34297  'aria-dropeffect': 0,
34298  'aria-grabbed': 0,
34299  // Relationship Attributes
34300  'aria-activedescendant': 0,
34301  'aria-colcount': 0,
34302  'aria-colindex': 0,
34303  'aria-colspan': 0,
34304  'aria-controls': 0,
34305  'aria-describedby': 0,
34306  'aria-errormessage': 0,
34307  'aria-flowto': 0,
34308  'aria-labelledby': 0,
34309  'aria-owns': 0,
34310  'aria-posinset': 0,
34311  'aria-rowcount': 0,
34312  'aria-rowindex': 0,
34313  'aria-rowspan': 0,
34314  'aria-setsize': 0
34315};
34316
34317var warnedProperties = {};
34318var rARIA = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
34319var rARIACamel = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
34320var hasOwnProperty$1 = Object.prototype.hasOwnProperty;
34321
34322function validateProperty(tagName, name) {
34323  {
34324    if (hasOwnProperty$1.call(warnedProperties, name) && warnedProperties[name]) {
34325      return true;
34326    }
34327
34328    if (rARIACamel.test(name)) {
34329      var ariaName = 'aria-' + name.slice(4).toLowerCase();
34330      var correctName = ariaProperties.hasOwnProperty(ariaName) ? ariaName : null; // If this is an aria-* attribute, but is not listed in the known DOM
34331      // DOM properties, then it is an invalid aria-* attribute.
34332
34333      if (correctName == null) {
34334        error('Invalid ARIA attribute `%s`. ARIA attributes follow the pattern aria-* and must be lowercase.', name);
34335
34336        warnedProperties[name] = true;
34337        return true;
34338      } // aria-* attributes should be lowercase; suggest the lowercase version.
34339
34340
34341      if (name !== correctName) {
34342        error('Invalid ARIA attribute `%s`. Did you mean `%s`?', name, correctName);
34343
34344        warnedProperties[name] = true;
34345        return true;
34346      }
34347    }
34348
34349    if (rARIA.test(name)) {
34350      var lowerCasedName = name.toLowerCase();
34351      var standardName = ariaProperties.hasOwnProperty(lowerCasedName) ? lowerCasedName : null; // If this is an aria-* attribute, but is not listed in the known DOM
34352      // DOM properties, then it is an invalid aria-* attribute.
34353
34354      if (standardName == null) {
34355        warnedProperties[name] = true;
34356        return false;
34357      } // aria-* attributes should be lowercase; suggest the lowercase version.
34358
34359
34360      if (name !== standardName) {
34361        error('Unknown ARIA attribute `%s`. Did you mean `%s`?', name, standardName);
34362
34363        warnedProperties[name] = true;
34364        return true;
34365      }
34366    }
34367  }
34368
34369  return true;
34370}
34371
34372function warnInvalidARIAProps(type, props) {
34373  {
34374    var invalidProps = [];
34375
34376    for (var key in props) {
34377      var isValid = validateProperty(type, key);
34378
34379      if (!isValid) {
34380        invalidProps.push(key);
34381      }
34382    }
34383
34384    var unknownPropString = invalidProps.map(function (prop) {
34385      return '`' + prop + '`';
34386    }).join(', ');
34387
34388    if (invalidProps.length === 1) {
34389      error('Invalid aria prop %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);
34390    } else if (invalidProps.length > 1) {
34391      error('Invalid aria props %s on <%s> tag. ' + 'For details, see https://reactjs.org/link/invalid-aria-props', unknownPropString, type);
34392    }
34393  }
34394}
34395
34396function validateProperties(type, props) {
34397  if (isCustomComponent(type, props)) {
34398    return;
34399  }
34400
34401  warnInvalidARIAProps(type, props);
34402}
34403
34404var didWarnValueNull = false;
34405function validateProperties$1(type, props) {
34406  {
34407    if (type !== 'input' && type !== 'textarea' && type !== 'select') {
34408      return;
34409    }
34410
34411    if (props != null && props.value === null && !didWarnValueNull) {
34412      didWarnValueNull = true;
34413
34414      if (type === 'select' && props.multiple) {
34415        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty array when `multiple` is set to `true` ' + 'to clear the component or `undefined` for uncontrolled components.', type);
34416      } else {
34417        error('`value` prop on `%s` should not be null. ' + 'Consider using an empty string to clear the component or `undefined` ' + 'for uncontrolled components.', type);
34418      }
34419    }
34420  }
34421}
34422
34423var validateProperty$1 = function () {};
34424
34425{
34426  var warnedProperties$1 = {};
34427  var _hasOwnProperty = Object.prototype.hasOwnProperty;
34428  var EVENT_NAME_REGEX = /^on./;
34429  var INVALID_EVENT_NAME_REGEX = /^on[^A-Z]/;
34430  var rARIA$1 = new RegExp('^(aria)-[' + ATTRIBUTE_NAME_CHAR + ']*$');
34431  var rARIACamel$1 = new RegExp('^(aria)[A-Z][' + ATTRIBUTE_NAME_CHAR + ']*$');
34432
34433  validateProperty$1 = function (tagName, name, value, eventRegistry) {
34434    if (_hasOwnProperty.call(warnedProperties$1, name) && warnedProperties$1[name]) {
34435      return true;
34436    }
34437
34438    var lowerCasedName = name.toLowerCase();
34439
34440    if (lowerCasedName === 'onfocusin' || lowerCasedName === 'onfocusout') {
34441      error('React uses onFocus and onBlur instead of onFocusIn and onFocusOut. ' + 'All React events are normalized to bubble, so onFocusIn and onFocusOut ' + 'are not needed/supported by React.');
34442
34443      warnedProperties$1[name] = true;
34444      return true;
34445    } // We can't rely on the event system being injected on the server.
34446
34447
34448    if (eventRegistry != null) {
34449      var registrationNameDependencies = eventRegistry.registrationNameDependencies,
34450          possibleRegistrationNames = eventRegistry.possibleRegistrationNames;
34451
34452      if (registrationNameDependencies.hasOwnProperty(name)) {
34453        return true;
34454      }
34455
34456      var registrationName = possibleRegistrationNames.hasOwnProperty(lowerCasedName) ? possibleRegistrationNames[lowerCasedName] : null;
34457
34458      if (registrationName != null) {
34459        error('Invalid event handler property `%s`. Did you mean `%s`?', name, registrationName);
34460
34461        warnedProperties$1[name] = true;
34462        return true;
34463      }
34464
34465      if (EVENT_NAME_REGEX.test(name)) {
34466        error('Unknown event handler property `%s`. It will be ignored.', name);
34467
34468        warnedProperties$1[name] = true;
34469        return true;
34470      }
34471    } else if (EVENT_NAME_REGEX.test(name)) {
34472      // If no event plugins have been injected, we are in a server environment.
34473      // So we can't tell if the event name is correct for sure, but we can filter
34474      // out known bad ones like `onclick`. We can't suggest a specific replacement though.
34475      if (INVALID_EVENT_NAME_REGEX.test(name)) {
34476        error('Invalid event handler property `%s`. ' + 'React events use the camelCase naming convention, for example `onClick`.', name);
34477      }
34478
34479      warnedProperties$1[name] = true;
34480      return true;
34481    } // Let the ARIA attribute hook validate ARIA attributes
34482
34483
34484    if (rARIA$1.test(name) || rARIACamel$1.test(name)) {
34485      return true;
34486    }
34487
34488    if (lowerCasedName === 'innerhtml') {
34489      error('Directly setting property `innerHTML` is not permitted. ' + 'For more information, lookup documentation on `dangerouslySetInnerHTML`.');
34490
34491      warnedProperties$1[name] = true;
34492      return true;
34493    }
34494
34495    if (lowerCasedName === 'aria') {
34496      error('The `aria` attribute is reserved for future use in React. ' + 'Pass individual `aria-` attributes instead.');
34497
34498      warnedProperties$1[name] = true;
34499      return true;
34500    }
34501
34502    if (lowerCasedName === 'is' && value !== null && value !== undefined && typeof value !== 'string') {
34503      error('Received a `%s` for a string attribute `is`. If this is expected, cast ' + 'the value to a string.', typeof value);
34504
34505      warnedProperties$1[name] = true;
34506      return true;
34507    }
34508
34509    if (typeof value === 'number' && isNaN(value)) {
34510      error('Received NaN for the `%s` attribute. If this is expected, cast ' + 'the value to a string.', name);
34511
34512      warnedProperties$1[name] = true;
34513      return true;
34514    }
34515
34516    var propertyInfo = getPropertyInfo(name);
34517    var isReserved = propertyInfo !== null && propertyInfo.type === RESERVED; // Known attributes should match the casing specified in the property config.
34518
34519    if (possibleStandardNames.hasOwnProperty(lowerCasedName)) {
34520      var standardName = possibleStandardNames[lowerCasedName];
34521
34522      if (standardName !== name) {
34523        error('Invalid DOM property `%s`. Did you mean `%s`?', name, standardName);
34524
34525        warnedProperties$1[name] = true;
34526        return true;
34527      }
34528    } else if (!isReserved && name !== lowerCasedName) {
34529      // Unknown attributes should have lowercase casing since that's how they
34530      // will be cased anyway with server rendering.
34531      error('React does not recognize the `%s` prop on a DOM element. If you ' + 'intentionally want it to appear in the DOM as a custom ' + 'attribute, spell it as lowercase `%s` instead. ' + 'If you accidentally passed it from a parent component, remove ' + 'it from the DOM element.', name, lowerCasedName);
34532
34533      warnedProperties$1[name] = true;
34534      return true;
34535    }
34536
34537    if (typeof value === 'boolean' && shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
34538      if (value) {
34539        error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.', value, name, name, value, name);
34540      } else {
34541        error('Received `%s` for a non-boolean attribute `%s`.\n\n' + 'If you want to write it to the DOM, pass a string instead: ' + '%s="%s" or %s={value.toString()}.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', value, name, name, value, name, name, name);
34542      }
34543
34544      warnedProperties$1[name] = true;
34545      return true;
34546    } // Now that we've validated casing, do not validate
34547    // data types for reserved props
34548
34549
34550    if (isReserved) {
34551      return true;
34552    } // Warn when a known attribute is a bad type
34553
34554
34555    if (shouldRemoveAttributeWithWarning(name, value, propertyInfo, false)) {
34556      warnedProperties$1[name] = true;
34557      return false;
34558    } // Warn when passing the strings 'false' or 'true' into a boolean prop
34559
34560
34561    if ((value === 'false' || value === 'true') && propertyInfo !== null && propertyInfo.type === BOOLEAN) {
34562      error('Received the string `%s` for the boolean attribute `%s`. ' + '%s ' + 'Did you mean %s={%s}?', value, name, value === 'false' ? 'The browser will interpret it as a truthy value.' : 'Although this works, it will not work as expected if you pass the string "false".', name, value);
34563
34564      warnedProperties$1[name] = true;
34565      return true;
34566    }
34567
34568    return true;
34569  };
34570}
34571
34572var warnUnknownProperties = function (type, props, eventRegistry) {
34573  {
34574    var unknownProps = [];
34575
34576    for (var key in props) {
34577      var isValid = validateProperty$1(type, key, props[key], eventRegistry);
34578
34579      if (!isValid) {
34580        unknownProps.push(key);
34581      }
34582    }
34583
34584    var unknownPropString = unknownProps.map(function (prop) {
34585      return '`' + prop + '`';
34586    }).join(', ');
34587
34588    if (unknownProps.length === 1) {
34589      error('Invalid value for prop %s on <%s> tag. Either remove it from the element, ' + 'or pass a string or number value to keep it in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);
34590    } else if (unknownProps.length > 1) {
34591      error('Invalid values for props %s on <%s> tag. Either remove them from the element, ' + 'or pass a string or number value to keep them in the DOM. ' + 'For details, see https://reactjs.org/link/attribute-behavior ', unknownPropString, type);
34592    }
34593  }
34594};
34595
34596function validateProperties$2(type, props, eventRegistry) {
34597  if (isCustomComponent(type, props)) {
34598    return;
34599  }
34600
34601  warnUnknownProperties(type, props, eventRegistry);
34602}
34603
34604var IS_EVENT_HANDLE_NON_MANAGED_NODE = 1;
34605var IS_NON_DELEGATED = 1 << 1;
34606var IS_CAPTURE_PHASE = 1 << 2;
34607var IS_REPLAYED = 1 << 4;
34608// set to LEGACY_FB_SUPPORT. LEGACY_FB_SUPPORT only gets set when
34609// we call willDeferLaterForLegacyFBSupport, thus not bailing out
34610// will result in endless cycles like an infinite loop.
34611// We also don't want to defer during event replaying.
34612
34613var SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS = IS_EVENT_HANDLE_NON_MANAGED_NODE | IS_NON_DELEGATED | IS_CAPTURE_PHASE;
34614
34615/**
34616 * Gets the target node from a native browser event by accounting for
34617 * inconsistencies in browser DOM APIs.
34618 *
34619 * @param {object} nativeEvent Native browser event.
34620 * @return {DOMEventTarget} Target node.
34621 */
34622
34623function getEventTarget(nativeEvent) {
34624  // Fallback to nativeEvent.srcElement for IE9
34625  // https://github.com/facebook/react/issues/12506
34626  var target = nativeEvent.target || nativeEvent.srcElement || window; // Normalize SVG <use> element events #4963
34627
34628  if (target.correspondingUseElement) {
34629    target = target.correspondingUseElement;
34630  } // Safari may fire events on text nodes (Node.TEXT_NODE is 3).
34631  // @see http://www.quirksmode.org/js/events_properties.html
34632
34633
34634  return target.nodeType === TEXT_NODE ? target.parentNode : target;
34635}
34636
34637var restoreImpl = null;
34638var restoreTarget = null;
34639var restoreQueue = null;
34640
34641function restoreStateOfTarget(target) {
34642  // We perform this translation at the end of the event loop so that we
34643  // always receive the correct fiber here
34644  var internalInstance = getInstanceFromNode(target);
34645
34646  if (!internalInstance) {
34647    // Unmounted
34648    return;
34649  }
34650
34651  if (!(typeof restoreImpl === 'function')) {
34652    {
34653      throw Error( "setRestoreImplementation() needs to be called to handle a target for controlled events. This error is likely caused by a bug in React. Please file an issue." );
34654    }
34655  }
34656
34657  var stateNode = internalInstance.stateNode; // Guard against Fiber being unmounted.
34658
34659  if (stateNode) {
34660    var _props = getFiberCurrentPropsFromNode(stateNode);
34661
34662    restoreImpl(internalInstance.stateNode, internalInstance.type, _props);
34663  }
34664}
34665
34666function setRestoreImplementation(impl) {
34667  restoreImpl = impl;
34668}
34669function enqueueStateRestore(target) {
34670  if (restoreTarget) {
34671    if (restoreQueue) {
34672      restoreQueue.push(target);
34673    } else {
34674      restoreQueue = [target];
34675    }
34676  } else {
34677    restoreTarget = target;
34678  }
34679}
34680function needsStateRestore() {
34681  return restoreTarget !== null || restoreQueue !== null;
34682}
34683function restoreStateIfNeeded() {
34684  if (!restoreTarget) {
34685    return;
34686  }
34687
34688  var target = restoreTarget;
34689  var queuedTargets = restoreQueue;
34690  restoreTarget = null;
34691  restoreQueue = null;
34692  restoreStateOfTarget(target);
34693
34694  if (queuedTargets) {
34695    for (var i = 0; i < queuedTargets.length; i++) {
34696      restoreStateOfTarget(queuedTargets[i]);
34697    }
34698  }
34699}
34700
34701// the renderer. Such as when we're dispatching events or if third party
34702// libraries need to call batchedUpdates. Eventually, this API will go away when
34703// everything is batched by default. We'll then have a similar API to opt-out of
34704// scheduled work and instead do synchronous work.
34705// Defaults
34706
34707var batchedUpdatesImpl = function (fn, bookkeeping) {
34708  return fn(bookkeeping);
34709};
34710
34711var discreteUpdatesImpl = function (fn, a, b, c, d) {
34712  return fn(a, b, c, d);
34713};
34714
34715var flushDiscreteUpdatesImpl = function () {};
34716
34717var batchedEventUpdatesImpl = batchedUpdatesImpl;
34718var isInsideEventHandler = false;
34719var isBatchingEventUpdates = false;
34720
34721function finishEventHandler() {
34722  // Here we wait until all updates have propagated, which is important
34723  // when using controlled components within layers:
34724  // https://github.com/facebook/react/issues/1698
34725  // Then we restore state of any controlled component.
34726  var controlledComponentsHavePendingUpdates = needsStateRestore();
34727
34728  if (controlledComponentsHavePendingUpdates) {
34729    // If a controlled event was fired, we may need to restore the state of
34730    // the DOM node back to the controlled value. This is necessary when React
34731    // bails out of the update without touching the DOM.
34732    flushDiscreteUpdatesImpl();
34733    restoreStateIfNeeded();
34734  }
34735}
34736
34737function batchedUpdates(fn, bookkeeping) {
34738  if (isInsideEventHandler) {
34739    // If we are currently inside another batch, we need to wait until it
34740    // fully completes before restoring state.
34741    return fn(bookkeeping);
34742  }
34743
34744  isInsideEventHandler = true;
34745
34746  try {
34747    return batchedUpdatesImpl(fn, bookkeeping);
34748  } finally {
34749    isInsideEventHandler = false;
34750    finishEventHandler();
34751  }
34752}
34753function batchedEventUpdates(fn, a, b) {
34754  if (isBatchingEventUpdates) {
34755    // If we are currently inside another batch, we need to wait until it
34756    // fully completes before restoring state.
34757    return fn(a, b);
34758  }
34759
34760  isBatchingEventUpdates = true;
34761
34762  try {
34763    return batchedEventUpdatesImpl(fn, a, b);
34764  } finally {
34765    isBatchingEventUpdates = false;
34766    finishEventHandler();
34767  }
34768}
34769function discreteUpdates(fn, a, b, c, d) {
34770  var prevIsInsideEventHandler = isInsideEventHandler;
34771  isInsideEventHandler = true;
34772
34773  try {
34774    return discreteUpdatesImpl(fn, a, b, c, d);
34775  } finally {
34776    isInsideEventHandler = prevIsInsideEventHandler;
34777
34778    if (!isInsideEventHandler) {
34779      finishEventHandler();
34780    }
34781  }
34782}
34783function flushDiscreteUpdatesIfNeeded(timeStamp) {
34784  {
34785    if (!isInsideEventHandler) {
34786      flushDiscreteUpdatesImpl();
34787    }
34788  }
34789}
34790function setBatchingImplementation(_batchedUpdatesImpl, _discreteUpdatesImpl, _flushDiscreteUpdatesImpl, _batchedEventUpdatesImpl) {
34791  batchedUpdatesImpl = _batchedUpdatesImpl;
34792  discreteUpdatesImpl = _discreteUpdatesImpl;
34793  flushDiscreteUpdatesImpl = _flushDiscreteUpdatesImpl;
34794  batchedEventUpdatesImpl = _batchedEventUpdatesImpl;
34795}
34796
34797function isInteractive(tag) {
34798  return tag === 'button' || tag === 'input' || tag === 'select' || tag === 'textarea';
34799}
34800
34801function shouldPreventMouseEvent(name, type, props) {
34802  switch (name) {
34803    case 'onClick':
34804    case 'onClickCapture':
34805    case 'onDoubleClick':
34806    case 'onDoubleClickCapture':
34807    case 'onMouseDown':
34808    case 'onMouseDownCapture':
34809    case 'onMouseMove':
34810    case 'onMouseMoveCapture':
34811    case 'onMouseUp':
34812    case 'onMouseUpCapture':
34813    case 'onMouseEnter':
34814      return !!(props.disabled && isInteractive(type));
34815
34816    default:
34817      return false;
34818  }
34819}
34820/**
34821 * @param {object} inst The instance, which is the source of events.
34822 * @param {string} registrationName Name of listener (e.g. `onClick`).
34823 * @return {?function} The stored callback.
34824 */
34825
34826
34827function getListener(inst, registrationName) {
34828  var stateNode = inst.stateNode;
34829
34830  if (stateNode === null) {
34831    // Work in progress (ex: onload events in incremental mode).
34832    return null;
34833  }
34834
34835  var props = getFiberCurrentPropsFromNode(stateNode);
34836
34837  if (props === null) {
34838    // Work in progress.
34839    return null;
34840  }
34841
34842  var listener = props[registrationName];
34843
34844  if (shouldPreventMouseEvent(registrationName, inst.type, props)) {
34845    return null;
34846  }
34847
34848  if (!(!listener || typeof listener === 'function')) {
34849    {
34850      throw Error( "Expected `" + registrationName + "` listener to be a function, instead got a value of `" + typeof listener + "` type." );
34851    }
34852  }
34853
34854  return listener;
34855}
34856
34857var passiveBrowserEventsSupported = false; // Check if browser support events with passive listeners
34858// https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener#Safely_detecting_option_support
34859
34860if (canUseDOM) {
34861  try {
34862    var options = {}; // $FlowFixMe: Ignore Flow complaining about needing a value
34863
34864    Object.defineProperty(options, 'passive', {
34865      get: function () {
34866        passiveBrowserEventsSupported = true;
34867      }
34868    });
34869    window.addEventListener('test', options, options);
34870    window.removeEventListener('test', options, options);
34871  } catch (e) {
34872    passiveBrowserEventsSupported = false;
34873  }
34874}
34875
34876function invokeGuardedCallbackProd(name, func, context, a, b, c, d, e, f) {
34877  var funcArgs = Array.prototype.slice.call(arguments, 3);
34878
34879  try {
34880    func.apply(context, funcArgs);
34881  } catch (error) {
34882    this.onError(error);
34883  }
34884}
34885
34886var invokeGuardedCallbackImpl = invokeGuardedCallbackProd;
34887
34888{
34889  // In DEV mode, we swap out invokeGuardedCallback for a special version
34890  // that plays more nicely with the browser's DevTools. The idea is to preserve
34891  // "Pause on exceptions" behavior. Because React wraps all user-provided
34892  // functions in invokeGuardedCallback, and the production version of
34893  // invokeGuardedCallback uses a try-catch, all user exceptions are treated
34894  // like caught exceptions, and the DevTools won't pause unless the developer
34895  // takes the extra step of enabling pause on caught exceptions. This is
34896  // unintuitive, though, because even though React has caught the error, from
34897  // the developer's perspective, the error is uncaught.
34898  //
34899  // To preserve the expected "Pause on exceptions" behavior, we don't use a
34900  // try-catch in DEV. Instead, we synchronously dispatch a fake event to a fake
34901  // DOM node, and call the user-provided callback from inside an event handler
34902  // for that fake event. If the callback throws, the error is "captured" using
34903  // a global event handler. But because the error happens in a different
34904  // event loop context, it does not interrupt the normal program flow.
34905  // Effectively, this gives us try-catch behavior without actually using
34906  // try-catch. Neat!
34907  // Check that the browser supports the APIs we need to implement our special
34908  // DEV version of invokeGuardedCallback
34909  if (typeof window !== 'undefined' && typeof window.dispatchEvent === 'function' && typeof document !== 'undefined' && typeof document.createEvent === 'function') {
34910    var fakeNode = document.createElement('react');
34911
34912    invokeGuardedCallbackImpl = function invokeGuardedCallbackDev(name, func, context, a, b, c, d, e, f) {
34913      // If document doesn't exist we know for sure we will crash in this method
34914      // when we call document.createEvent(). However this can cause confusing
34915      // errors: https://github.com/facebookincubator/create-react-app/issues/3482
34916      // So we preemptively throw with a better message instead.
34917      if (!(typeof document !== 'undefined')) {
34918        {
34919          throw Error( "The `document` global was defined when React was initialized, but is not defined anymore. This can happen in a test environment if a component schedules an update from an asynchronous callback, but the test has already finished running. To solve this, you can either unmount the component at the end of your test (and ensure that any asynchronous operations get canceled in `componentWillUnmount`), or you can change the test itself to be asynchronous." );
34920        }
34921      }
34922
34923      var evt = document.createEvent('Event');
34924      var didCall = false; // Keeps track of whether the user-provided callback threw an error. We
34925      // set this to true at the beginning, then set it to false right after
34926      // calling the function. If the function errors, `didError` will never be
34927      // set to false. This strategy works even if the browser is flaky and
34928      // fails to call our global error handler, because it doesn't rely on
34929      // the error event at all.
34930
34931      var didError = true; // Keeps track of the value of window.event so that we can reset it
34932      // during the callback to let user code access window.event in the
34933      // browsers that support it.
34934
34935      var windowEvent = window.event; // Keeps track of the descriptor of window.event to restore it after event
34936      // dispatching: https://github.com/facebook/react/issues/13688
34937
34938      var windowEventDescriptor = Object.getOwnPropertyDescriptor(window, 'event');
34939
34940      function restoreAfterDispatch() {
34941        // We immediately remove the callback from event listeners so that
34942        // nested `invokeGuardedCallback` calls do not clash. Otherwise, a
34943        // nested call would trigger the fake event handlers of any call higher
34944        // in the stack.
34945        fakeNode.removeEventListener(evtType, callCallback, false); // We check for window.hasOwnProperty('event') to prevent the
34946        // window.event assignment in both IE <= 10 as they throw an error
34947        // "Member not found" in strict mode, and in Firefox which does not
34948        // support window.event.
34949
34950        if (typeof window.event !== 'undefined' && window.hasOwnProperty('event')) {
34951          window.event = windowEvent;
34952        }
34953      } // Create an event handler for our fake event. We will synchronously
34954      // dispatch our fake event using `dispatchEvent`. Inside the handler, we
34955      // call the user-provided callback.
34956
34957
34958      var funcArgs = Array.prototype.slice.call(arguments, 3);
34959
34960      function callCallback() {
34961        didCall = true;
34962        restoreAfterDispatch();
34963        func.apply(context, funcArgs);
34964        didError = false;
34965      } // Create a global error event handler. We use this to capture the value
34966      // that was thrown. It's possible that this error handler will fire more
34967      // than once; for example, if non-React code also calls `dispatchEvent`
34968      // and a handler for that event throws. We should be resilient to most of
34969      // those cases. Even if our error event handler fires more than once, the
34970      // last error event is always used. If the callback actually does error,
34971      // we know that the last error event is the correct one, because it's not
34972      // possible for anything else to have happened in between our callback
34973      // erroring and the code that follows the `dispatchEvent` call below. If
34974      // the callback doesn't error, but the error event was fired, we know to
34975      // ignore it because `didError` will be false, as described above.
34976
34977
34978      var error; // Use this to track whether the error event is ever called.
34979
34980      var didSetError = false;
34981      var isCrossOriginError = false;
34982
34983      function handleWindowError(event) {
34984        error = event.error;
34985        didSetError = true;
34986
34987        if (error === null && event.colno === 0 && event.lineno === 0) {
34988          isCrossOriginError = true;
34989        }
34990
34991        if (event.defaultPrevented) {
34992          // Some other error handler has prevented default.
34993          // Browsers silence the error report if this happens.
34994          // We'll remember this to later decide whether to log it or not.
34995          if (error != null && typeof error === 'object') {
34996            try {
34997              error._suppressLogging = true;
34998            } catch (inner) {// Ignore.
34999            }
35000          }
35001        }
35002      } // Create a fake event type.
35003
35004
35005      var evtType = "react-" + (name ? name : 'invokeguardedcallback'); // Attach our event handlers
35006
35007      window.addEventListener('error', handleWindowError);
35008      fakeNode.addEventListener(evtType, callCallback, false); // Synchronously dispatch our fake event. If the user-provided function
35009      // errors, it will trigger our global error handler.
35010
35011      evt.initEvent(evtType, false, false);
35012      fakeNode.dispatchEvent(evt);
35013
35014      if (windowEventDescriptor) {
35015        Object.defineProperty(window, 'event', windowEventDescriptor);
35016      }
35017
35018      if (didCall && didError) {
35019        if (!didSetError) {
35020          // The callback errored, but the error event never fired.
35021          error = new Error('An error was thrown inside one of your components, but React ' + "doesn't know what it was. This is likely due to browser " + 'flakiness. React does its best to preserve the "Pause on ' + 'exceptions" behavior of the DevTools, which requires some ' + "DEV-mode only tricks. It's possible that these don't work in " + 'your browser. Try triggering the error in production mode, ' + 'or switching to a modern browser. If you suspect that this is ' + 'actually an issue with React, please file an issue.');
35022        } else if (isCrossOriginError) {
35023          error = new Error("A cross-origin error was thrown. React doesn't have access to " + 'the actual error object in development. ' + 'See https://reactjs.org/link/crossorigin-error for more information.');
35024        }
35025
35026        this.onError(error);
35027      } // Remove our event listeners
35028
35029
35030      window.removeEventListener('error', handleWindowError);
35031
35032      if (!didCall) {
35033        // Something went really wrong, and our event was not dispatched.
35034        // https://github.com/facebook/react/issues/16734
35035        // https://github.com/facebook/react/issues/16585
35036        // Fall back to the production implementation.
35037        restoreAfterDispatch();
35038        return invokeGuardedCallbackProd.apply(this, arguments);
35039      }
35040    };
35041  }
35042}
35043
35044var invokeGuardedCallbackImpl$1 = invokeGuardedCallbackImpl;
35045
35046var hasError = false;
35047var caughtError = null; // Used by event system to capture/rethrow the first error.
35048
35049var hasRethrowError = false;
35050var rethrowError = null;
35051var reporter = {
35052  onError: function (error) {
35053    hasError = true;
35054    caughtError = error;
35055  }
35056};
35057/**
35058 * Call a function while guarding against errors that happens within it.
35059 * Returns an error if it throws, otherwise null.
35060 *
35061 * In production, this is implemented using a try-catch. The reason we don't
35062 * use a try-catch directly is so that we can swap out a different
35063 * implementation in DEV mode.
35064 *
35065 * @param {String} name of the guard to use for logging or debugging
35066 * @param {Function} func The function to invoke
35067 * @param {*} context The context to use when calling the function
35068 * @param {...*} args Arguments for function
35069 */
35070
35071function invokeGuardedCallback(name, func, context, a, b, c, d, e, f) {
35072  hasError = false;
35073  caughtError = null;
35074  invokeGuardedCallbackImpl$1.apply(reporter, arguments);
35075}
35076/**
35077 * Same as invokeGuardedCallback, but instead of returning an error, it stores
35078 * it in a global so it can be rethrown by `rethrowCaughtError` later.
35079 * TODO: See if caughtError and rethrowError can be unified.
35080 *
35081 * @param {String} name of the guard to use for logging or debugging
35082 * @param {Function} func The function to invoke
35083 * @param {*} context The context to use when calling the function
35084 * @param {...*} args Arguments for function
35085 */
35086
35087function invokeGuardedCallbackAndCatchFirstError(name, func, context, a, b, c, d, e, f) {
35088  invokeGuardedCallback.apply(this, arguments);
35089
35090  if (hasError) {
35091    var error = clearCaughtError();
35092
35093    if (!hasRethrowError) {
35094      hasRethrowError = true;
35095      rethrowError = error;
35096    }
35097  }
35098}
35099/**
35100 * During execution of guarded functions we will capture the first error which
35101 * we will rethrow to be handled by the top level error handler.
35102 */
35103
35104function rethrowCaughtError() {
35105  if (hasRethrowError) {
35106    var error = rethrowError;
35107    hasRethrowError = false;
35108    rethrowError = null;
35109    throw error;
35110  }
35111}
35112function hasCaughtError() {
35113  return hasError;
35114}
35115function clearCaughtError() {
35116  if (hasError) {
35117    var error = caughtError;
35118    hasError = false;
35119    caughtError = null;
35120    return error;
35121  } else {
35122    {
35123      {
35124        throw Error( "clearCaughtError was called but no error was captured. This error is likely caused by a bug in React. Please file an issue." );
35125      }
35126    }
35127  }
35128}
35129
35130/**
35131 * `ReactInstanceMap` maintains a mapping from a public facing stateful
35132 * instance (key) and the internal representation (value). This allows public
35133 * methods to accept the user facing instance as an argument and map them back
35134 * to internal methods.
35135 *
35136 * Note that this module is currently shared and assumed to be stateless.
35137 * If this becomes an actual Map, that will break.
35138 */
35139function get(key) {
35140  return key._reactInternals;
35141}
35142function has(key) {
35143  return key._reactInternals !== undefined;
35144}
35145function set(key, value) {
35146  key._reactInternals = value;
35147}
35148
35149// Don't change these two values. They're used by React Dev Tools.
35150var NoFlags =
35151/*                      */
351520;
35153var PerformedWork =
35154/*                */
351551; // You can change the rest (and add more).
35156
35157var Placement =
35158/*                    */
351592;
35160var Update =
35161/*                       */
351624;
35163var PlacementAndUpdate =
35164/*           */
351656;
35166var Deletion =
35167/*                     */
351688;
35169var ContentReset =
35170/*                 */
3517116;
35172var Callback =
35173/*                     */
3517432;
35175var DidCapture =
35176/*                   */
3517764;
35178var Ref =
35179/*                          */
35180128;
35181var Snapshot =
35182/*                     */
35183256;
35184var Passive =
35185/*                      */
35186512; // TODO (effects) Remove this bit once the new reconciler is synced to the old.
35187
35188var PassiveUnmountPendingDev =
35189/*     */
351908192;
35191var Hydrating =
35192/*                    */
351931024;
35194var HydratingAndUpdate =
35195/*           */
351961028; // Passive & Update & Callback & Ref & Snapshot
35197
35198var LifecycleEffectMask =
35199/*          */
35200932; // Union of all host effects
35201
35202var HostEffectMask =
35203/*               */
352042047; // These are not really side effects, but we still reuse this field.
35205
35206var Incomplete =
35207/*                   */
352082048;
35209var ShouldCapture =
35210/*                */
352114096;
35212var ForceUpdateForLegacySuspense =
35213/* */
3521416384; // Static tags describe aspects of a fiber that are not specific to a render,
35215
35216var ReactCurrentOwner = ReactSharedInternals.ReactCurrentOwner;
35217function getNearestMountedFiber(fiber) {
35218  var node = fiber;
35219  var nearestMounted = fiber;
35220
35221  if (!fiber.alternate) {
35222    // If there is no alternate, this might be a new tree that isn't inserted
35223    // yet. If it is, then it will have a pending insertion effect on it.
35224    var nextNode = node;
35225
35226    do {
35227      node = nextNode;
35228
35229      if ((node.flags & (Placement | Hydrating)) !== NoFlags) {
35230        // This is an insertion or in-progress hydration. The nearest possible
35231        // mounted fiber is the parent but we need to continue to figure out
35232        // if that one is still mounted.
35233        nearestMounted = node.return;
35234      }
35235
35236      nextNode = node.return;
35237    } while (nextNode);
35238  } else {
35239    while (node.return) {
35240      node = node.return;
35241    }
35242  }
35243
35244  if (node.tag === HostRoot) {
35245    // TODO: Check if this was a nested HostRoot when used with
35246    // renderContainerIntoSubtree.
35247    return nearestMounted;
35248  } // If we didn't hit the root, that means that we're in an disconnected tree
35249  // that has been unmounted.
35250
35251
35252  return null;
35253}
35254function getSuspenseInstanceFromFiber(fiber) {
35255  if (fiber.tag === SuspenseComponent) {
35256    var suspenseState = fiber.memoizedState;
35257
35258    if (suspenseState === null) {
35259      var current = fiber.alternate;
35260
35261      if (current !== null) {
35262        suspenseState = current.memoizedState;
35263      }
35264    }
35265
35266    if (suspenseState !== null) {
35267      return suspenseState.dehydrated;
35268    }
35269  }
35270
35271  return null;
35272}
35273function getContainerFromFiber(fiber) {
35274  return fiber.tag === HostRoot ? fiber.stateNode.containerInfo : null;
35275}
35276function isFiberMounted(fiber) {
35277  return getNearestMountedFiber(fiber) === fiber;
35278}
35279function isMounted(component) {
35280  {
35281    var owner = ReactCurrentOwner.current;
35282
35283    if (owner !== null && owner.tag === ClassComponent) {
35284      var ownerFiber = owner;
35285      var instance = ownerFiber.stateNode;
35286
35287      if (!instance._warnedAboutRefsInRender) {
35288        error('%s is accessing isMounted inside its render() function. ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(ownerFiber.type) || 'A component');
35289      }
35290
35291      instance._warnedAboutRefsInRender = true;
35292    }
35293  }
35294
35295  var fiber = get(component);
35296
35297  if (!fiber) {
35298    return false;
35299  }
35300
35301  return getNearestMountedFiber(fiber) === fiber;
35302}
35303
35304function assertIsMounted(fiber) {
35305  if (!(getNearestMountedFiber(fiber) === fiber)) {
35306    {
35307      throw Error( "Unable to find node on an unmounted component." );
35308    }
35309  }
35310}
35311
35312function findCurrentFiberUsingSlowPath(fiber) {
35313  var alternate = fiber.alternate;
35314
35315  if (!alternate) {
35316    // If there is no alternate, then we only need to check if it is mounted.
35317    var nearestMounted = getNearestMountedFiber(fiber);
35318
35319    if (!(nearestMounted !== null)) {
35320      {
35321        throw Error( "Unable to find node on an unmounted component." );
35322      }
35323    }
35324
35325    if (nearestMounted !== fiber) {
35326      return null;
35327    }
35328
35329    return fiber;
35330  } // If we have two possible branches, we'll walk backwards up to the root
35331  // to see what path the root points to. On the way we may hit one of the
35332  // special cases and we'll deal with them.
35333
35334
35335  var a = fiber;
35336  var b = alternate;
35337
35338  while (true) {
35339    var parentA = a.return;
35340
35341    if (parentA === null) {
35342      // We're at the root.
35343      break;
35344    }
35345
35346    var parentB = parentA.alternate;
35347
35348    if (parentB === null) {
35349      // There is no alternate. This is an unusual case. Currently, it only
35350      // happens when a Suspense component is hidden. An extra fragment fiber
35351      // is inserted in between the Suspense fiber and its children. Skip
35352      // over this extra fragment fiber and proceed to the next parent.
35353      var nextParent = parentA.return;
35354
35355      if (nextParent !== null) {
35356        a = b = nextParent;
35357        continue;
35358      } // If there's no parent, we're at the root.
35359
35360
35361      break;
35362    } // If both copies of the parent fiber point to the same child, we can
35363    // assume that the child is current. This happens when we bailout on low
35364    // priority: the bailed out fiber's child reuses the current child.
35365
35366
35367    if (parentA.child === parentB.child) {
35368      var child = parentA.child;
35369
35370      while (child) {
35371        if (child === a) {
35372          // We've determined that A is the current branch.
35373          assertIsMounted(parentA);
35374          return fiber;
35375        }
35376
35377        if (child === b) {
35378          // We've determined that B is the current branch.
35379          assertIsMounted(parentA);
35380          return alternate;
35381        }
35382
35383        child = child.sibling;
35384      } // We should never have an alternate for any mounting node. So the only
35385      // way this could possibly happen is if this was unmounted, if at all.
35386
35387
35388      {
35389        {
35390          throw Error( "Unable to find node on an unmounted component." );
35391        }
35392      }
35393    }
35394
35395    if (a.return !== b.return) {
35396      // The return pointer of A and the return pointer of B point to different
35397      // fibers. We assume that return pointers never criss-cross, so A must
35398      // belong to the child set of A.return, and B must belong to the child
35399      // set of B.return.
35400      a = parentA;
35401      b = parentB;
35402    } else {
35403      // The return pointers point to the same fiber. We'll have to use the
35404      // default, slow path: scan the child sets of each parent alternate to see
35405      // which child belongs to which set.
35406      //
35407      // Search parent A's child set
35408      var didFindChild = false;
35409      var _child = parentA.child;
35410
35411      while (_child) {
35412        if (_child === a) {
35413          didFindChild = true;
35414          a = parentA;
35415          b = parentB;
35416          break;
35417        }
35418
35419        if (_child === b) {
35420          didFindChild = true;
35421          b = parentA;
35422          a = parentB;
35423          break;
35424        }
35425
35426        _child = _child.sibling;
35427      }
35428
35429      if (!didFindChild) {
35430        // Search parent B's child set
35431        _child = parentB.child;
35432
35433        while (_child) {
35434          if (_child === a) {
35435            didFindChild = true;
35436            a = parentB;
35437            b = parentA;
35438            break;
35439          }
35440
35441          if (_child === b) {
35442            didFindChild = true;
35443            b = parentB;
35444            a = parentA;
35445            break;
35446          }
35447
35448          _child = _child.sibling;
35449        }
35450
35451        if (!didFindChild) {
35452          {
35453            throw Error( "Child was not found in either parent set. This indicates a bug in React related to the return pointer. Please file an issue." );
35454          }
35455        }
35456      }
35457    }
35458
35459    if (!(a.alternate === b)) {
35460      {
35461        throw Error( "Return fibers should always be each others' alternates. This error is likely caused by a bug in React. Please file an issue." );
35462      }
35463    }
35464  } // If the root is not a host container, we're in a disconnected tree. I.e.
35465  // unmounted.
35466
35467
35468  if (!(a.tag === HostRoot)) {
35469    {
35470      throw Error( "Unable to find node on an unmounted component." );
35471    }
35472  }
35473
35474  if (a.stateNode.current === a) {
35475    // We've determined that A is the current branch.
35476    return fiber;
35477  } // Otherwise B has to be current branch.
35478
35479
35480  return alternate;
35481}
35482function findCurrentHostFiber(parent) {
35483  var currentParent = findCurrentFiberUsingSlowPath(parent);
35484
35485  if (!currentParent) {
35486    return null;
35487  } // Next we'll drill down this component to find the first HostComponent/Text.
35488
35489
35490  var node = currentParent;
35491
35492  while (true) {
35493    if (node.tag === HostComponent || node.tag === HostText) {
35494      return node;
35495    } else if (node.child) {
35496      node.child.return = node;
35497      node = node.child;
35498      continue;
35499    }
35500
35501    if (node === currentParent) {
35502      return null;
35503    }
35504
35505    while (!node.sibling) {
35506      if (!node.return || node.return === currentParent) {
35507        return null;
35508      }
35509
35510      node = node.return;
35511    }
35512
35513    node.sibling.return = node.return;
35514    node = node.sibling;
35515  } // Flow needs the return null here, but ESLint complains about it.
35516  // eslint-disable-next-line no-unreachable
35517
35518
35519  return null;
35520}
35521function findCurrentHostFiberWithNoPortals(parent) {
35522  var currentParent = findCurrentFiberUsingSlowPath(parent);
35523
35524  if (!currentParent) {
35525    return null;
35526  } // Next we'll drill down this component to find the first HostComponent/Text.
35527
35528
35529  var node = currentParent;
35530
35531  while (true) {
35532    if (node.tag === HostComponent || node.tag === HostText || enableFundamentalAPI ) {
35533      return node;
35534    } else if (node.child && node.tag !== HostPortal) {
35535      node.child.return = node;
35536      node = node.child;
35537      continue;
35538    }
35539
35540    if (node === currentParent) {
35541      return null;
35542    }
35543
35544    while (!node.sibling) {
35545      if (!node.return || node.return === currentParent) {
35546        return null;
35547      }
35548
35549      node = node.return;
35550    }
35551
35552    node.sibling.return = node.return;
35553    node = node.sibling;
35554  } // Flow needs the return null here, but ESLint complains about it.
35555  // eslint-disable-next-line no-unreachable
35556
35557
35558  return null;
35559}
35560function doesFiberContain(parentFiber, childFiber) {
35561  var node = childFiber;
35562  var parentFiberAlternate = parentFiber.alternate;
35563
35564  while (node !== null) {
35565    if (node === parentFiber || node === parentFiberAlternate) {
35566      return true;
35567    }
35568
35569    node = node.return;
35570  }
35571
35572  return false;
35573}
35574
35575var attemptUserBlockingHydration;
35576function setAttemptUserBlockingHydration(fn) {
35577  attemptUserBlockingHydration = fn;
35578}
35579var attemptContinuousHydration;
35580function setAttemptContinuousHydration(fn) {
35581  attemptContinuousHydration = fn;
35582}
35583var attemptHydrationAtCurrentPriority;
35584function setAttemptHydrationAtCurrentPriority(fn) {
35585  attemptHydrationAtCurrentPriority = fn;
35586}
35587var attemptHydrationAtPriority;
35588function setAttemptHydrationAtPriority(fn) {
35589  attemptHydrationAtPriority = fn;
35590} // TODO: Upgrade this definition once we're on a newer version of Flow that
35591var hasScheduledReplayAttempt = false; // The queue of discrete events to be replayed.
35592
35593var queuedDiscreteEvents = []; // Indicates if any continuous event targets are non-null for early bailout.
35594// if the last target was dehydrated.
35595
35596var queuedFocus = null;
35597var queuedDrag = null;
35598var queuedMouse = null; // For pointer events there can be one latest event per pointerId.
35599
35600var queuedPointers = new Map();
35601var queuedPointerCaptures = new Map(); // We could consider replaying selectionchange and touchmoves too.
35602
35603var queuedExplicitHydrationTargets = [];
35604function hasQueuedDiscreteEvents() {
35605  return queuedDiscreteEvents.length > 0;
35606}
35607var discreteReplayableEvents = ['mousedown', 'mouseup', 'touchcancel', 'touchend', 'touchstart', 'auxclick', 'dblclick', 'pointercancel', 'pointerdown', 'pointerup', 'dragend', 'dragstart', 'drop', 'compositionend', 'compositionstart', 'keydown', 'keypress', 'keyup', 'input', 'textInput', // Intentionally camelCase
35608'copy', 'cut', 'paste', 'click', 'change', 'contextmenu', 'reset', 'submit'];
35609function isReplayableDiscreteEvent(eventType) {
35610  return discreteReplayableEvents.indexOf(eventType) > -1;
35611}
35612
35613function createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
35614  return {
35615    blockedOn: blockedOn,
35616    domEventName: domEventName,
35617    eventSystemFlags: eventSystemFlags | IS_REPLAYED,
35618    nativeEvent: nativeEvent,
35619    targetContainers: [targetContainer]
35620  };
35621}
35622
35623function queueDiscreteEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
35624  var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);
35625  queuedDiscreteEvents.push(queuedEvent);
35626} // Resets the replaying for this type of continuous event to no event.
35627
35628function clearIfContinuousEvent(domEventName, nativeEvent) {
35629  switch (domEventName) {
35630    case 'focusin':
35631    case 'focusout':
35632      queuedFocus = null;
35633      break;
35634
35635    case 'dragenter':
35636    case 'dragleave':
35637      queuedDrag = null;
35638      break;
35639
35640    case 'mouseover':
35641    case 'mouseout':
35642      queuedMouse = null;
35643      break;
35644
35645    case 'pointerover':
35646    case 'pointerout':
35647      {
35648        var pointerId = nativeEvent.pointerId;
35649        queuedPointers.delete(pointerId);
35650        break;
35651      }
35652
35653    case 'gotpointercapture':
35654    case 'lostpointercapture':
35655      {
35656        var _pointerId = nativeEvent.pointerId;
35657        queuedPointerCaptures.delete(_pointerId);
35658        break;
35659      }
35660  }
35661}
35662
35663function accumulateOrCreateContinuousQueuedReplayableEvent(existingQueuedEvent, blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
35664  if (existingQueuedEvent === null || existingQueuedEvent.nativeEvent !== nativeEvent) {
35665    var queuedEvent = createQueuedReplayableEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);
35666
35667    if (blockedOn !== null) {
35668      var _fiber2 = getInstanceFromNode(blockedOn);
35669
35670      if (_fiber2 !== null) {
35671        // Attempt to increase the priority of this target.
35672        attemptContinuousHydration(_fiber2);
35673      }
35674    }
35675
35676    return queuedEvent;
35677  } // If we have already queued this exact event, then it's because
35678  // the different event systems have different DOM event listeners.
35679  // We can accumulate the flags, and the targetContainers, and
35680  // store a single event to be replayed.
35681
35682
35683  existingQueuedEvent.eventSystemFlags |= eventSystemFlags;
35684  var targetContainers = existingQueuedEvent.targetContainers;
35685
35686  if (targetContainer !== null && targetContainers.indexOf(targetContainer) === -1) {
35687    targetContainers.push(targetContainer);
35688  }
35689
35690  return existingQueuedEvent;
35691}
35692
35693function queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent) {
35694  // These set relatedTarget to null because the replayed event will be treated as if we
35695  // moved from outside the window (no target) onto the target once it hydrates.
35696  // Instead of mutating we could clone the event.
35697  switch (domEventName) {
35698    case 'focusin':
35699      {
35700        var focusEvent = nativeEvent;
35701        queuedFocus = accumulateOrCreateContinuousQueuedReplayableEvent(queuedFocus, blockedOn, domEventName, eventSystemFlags, targetContainer, focusEvent);
35702        return true;
35703      }
35704
35705    case 'dragenter':
35706      {
35707        var dragEvent = nativeEvent;
35708        queuedDrag = accumulateOrCreateContinuousQueuedReplayableEvent(queuedDrag, blockedOn, domEventName, eventSystemFlags, targetContainer, dragEvent);
35709        return true;
35710      }
35711
35712    case 'mouseover':
35713      {
35714        var mouseEvent = nativeEvent;
35715        queuedMouse = accumulateOrCreateContinuousQueuedReplayableEvent(queuedMouse, blockedOn, domEventName, eventSystemFlags, targetContainer, mouseEvent);
35716        return true;
35717      }
35718
35719    case 'pointerover':
35720      {
35721        var pointerEvent = nativeEvent;
35722        var pointerId = pointerEvent.pointerId;
35723        queuedPointers.set(pointerId, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointers.get(pointerId) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, pointerEvent));
35724        return true;
35725      }
35726
35727    case 'gotpointercapture':
35728      {
35729        var _pointerEvent = nativeEvent;
35730        var _pointerId2 = _pointerEvent.pointerId;
35731        queuedPointerCaptures.set(_pointerId2, accumulateOrCreateContinuousQueuedReplayableEvent(queuedPointerCaptures.get(_pointerId2) || null, blockedOn, domEventName, eventSystemFlags, targetContainer, _pointerEvent));
35732        return true;
35733      }
35734  }
35735
35736  return false;
35737} // Check if this target is unblocked. Returns true if it's unblocked.
35738
35739function attemptExplicitHydrationTarget(queuedTarget) {
35740  // TODO: This function shares a lot of logic with attemptToDispatchEvent.
35741  // Try to unify them. It's a bit tricky since it would require two return
35742  // values.
35743  var targetInst = getClosestInstanceFromNode(queuedTarget.target);
35744
35745  if (targetInst !== null) {
35746    var nearestMounted = getNearestMountedFiber(targetInst);
35747
35748    if (nearestMounted !== null) {
35749      var tag = nearestMounted.tag;
35750
35751      if (tag === SuspenseComponent) {
35752        var instance = getSuspenseInstanceFromFiber(nearestMounted);
35753
35754        if (instance !== null) {
35755          // We're blocked on hydrating this boundary.
35756          // Increase its priority.
35757          queuedTarget.blockedOn = instance;
35758          attemptHydrationAtPriority(queuedTarget.lanePriority, function () {
35759            Scheduler.unstable_runWithPriority(queuedTarget.priority, function () {
35760              attemptHydrationAtCurrentPriority(nearestMounted);
35761            });
35762          });
35763          return;
35764        }
35765      } else if (tag === HostRoot) {
35766        var root = nearestMounted.stateNode;
35767
35768        if (root.hydrate) {
35769          queuedTarget.blockedOn = getContainerFromFiber(nearestMounted); // We don't currently have a way to increase the priority of
35770          // a root other than sync.
35771
35772          return;
35773        }
35774      }
35775    }
35776  }
35777
35778  queuedTarget.blockedOn = null;
35779}
35780
35781function attemptReplayContinuousQueuedEvent(queuedEvent) {
35782  if (queuedEvent.blockedOn !== null) {
35783    return false;
35784  }
35785
35786  var targetContainers = queuedEvent.targetContainers;
35787
35788  while (targetContainers.length > 0) {
35789    var targetContainer = targetContainers[0];
35790    var nextBlockedOn = attemptToDispatchEvent(queuedEvent.domEventName, queuedEvent.eventSystemFlags, targetContainer, queuedEvent.nativeEvent);
35791
35792    if (nextBlockedOn !== null) {
35793      // We're still blocked. Try again later.
35794      var _fiber3 = getInstanceFromNode(nextBlockedOn);
35795
35796      if (_fiber3 !== null) {
35797        attemptContinuousHydration(_fiber3);
35798      }
35799
35800      queuedEvent.blockedOn = nextBlockedOn;
35801      return false;
35802    } // This target container was successfully dispatched. Try the next.
35803
35804
35805    targetContainers.shift();
35806  }
35807
35808  return true;
35809}
35810
35811function attemptReplayContinuousQueuedEventInMap(queuedEvent, key, map) {
35812  if (attemptReplayContinuousQueuedEvent(queuedEvent)) {
35813    map.delete(key);
35814  }
35815}
35816
35817function replayUnblockedEvents() {
35818  hasScheduledReplayAttempt = false; // First replay discrete events.
35819
35820  while (queuedDiscreteEvents.length > 0) {
35821    var nextDiscreteEvent = queuedDiscreteEvents[0];
35822
35823    if (nextDiscreteEvent.blockedOn !== null) {
35824      // We're still blocked.
35825      // Increase the priority of this boundary to unblock
35826      // the next discrete event.
35827      var _fiber4 = getInstanceFromNode(nextDiscreteEvent.blockedOn);
35828
35829      if (_fiber4 !== null) {
35830        attemptUserBlockingHydration(_fiber4);
35831      }
35832
35833      break;
35834    }
35835
35836    var targetContainers = nextDiscreteEvent.targetContainers;
35837
35838    while (targetContainers.length > 0) {
35839      var targetContainer = targetContainers[0];
35840      var nextBlockedOn = attemptToDispatchEvent(nextDiscreteEvent.domEventName, nextDiscreteEvent.eventSystemFlags, targetContainer, nextDiscreteEvent.nativeEvent);
35841
35842      if (nextBlockedOn !== null) {
35843        // We're still blocked. Try again later.
35844        nextDiscreteEvent.blockedOn = nextBlockedOn;
35845        break;
35846      } // This target container was successfully dispatched. Try the next.
35847
35848
35849      targetContainers.shift();
35850    }
35851
35852    if (nextDiscreteEvent.blockedOn === null) {
35853      // We've successfully replayed the first event. Let's try the next one.
35854      queuedDiscreteEvents.shift();
35855    }
35856  } // Next replay any continuous events.
35857
35858
35859  if (queuedFocus !== null && attemptReplayContinuousQueuedEvent(queuedFocus)) {
35860    queuedFocus = null;
35861  }
35862
35863  if (queuedDrag !== null && attemptReplayContinuousQueuedEvent(queuedDrag)) {
35864    queuedDrag = null;
35865  }
35866
35867  if (queuedMouse !== null && attemptReplayContinuousQueuedEvent(queuedMouse)) {
35868    queuedMouse = null;
35869  }
35870
35871  queuedPointers.forEach(attemptReplayContinuousQueuedEventInMap);
35872  queuedPointerCaptures.forEach(attemptReplayContinuousQueuedEventInMap);
35873}
35874
35875function scheduleCallbackIfUnblocked(queuedEvent, unblocked) {
35876  if (queuedEvent.blockedOn === unblocked) {
35877    queuedEvent.blockedOn = null;
35878
35879    if (!hasScheduledReplayAttempt) {
35880      hasScheduledReplayAttempt = true; // Schedule a callback to attempt replaying as many events as are
35881      // now unblocked. This first might not actually be unblocked yet.
35882      // We could check it early to avoid scheduling an unnecessary callback.
35883
35884      Scheduler.unstable_scheduleCallback(Scheduler.unstable_NormalPriority, replayUnblockedEvents);
35885    }
35886  }
35887}
35888
35889function retryIfBlockedOn(unblocked) {
35890  // Mark anything that was blocked on this as no longer blocked
35891  // and eligible for a replay.
35892  if (queuedDiscreteEvents.length > 0) {
35893    scheduleCallbackIfUnblocked(queuedDiscreteEvents[0], unblocked); // This is a exponential search for each boundary that commits. I think it's
35894    // worth it because we expect very few discrete events to queue up and once
35895    // we are actually fully unblocked it will be fast to replay them.
35896
35897    for (var i = 1; i < queuedDiscreteEvents.length; i++) {
35898      var queuedEvent = queuedDiscreteEvents[i];
35899
35900      if (queuedEvent.blockedOn === unblocked) {
35901        queuedEvent.blockedOn = null;
35902      }
35903    }
35904  }
35905
35906  if (queuedFocus !== null) {
35907    scheduleCallbackIfUnblocked(queuedFocus, unblocked);
35908  }
35909
35910  if (queuedDrag !== null) {
35911    scheduleCallbackIfUnblocked(queuedDrag, unblocked);
35912  }
35913
35914  if (queuedMouse !== null) {
35915    scheduleCallbackIfUnblocked(queuedMouse, unblocked);
35916  }
35917
35918  var unblock = function (queuedEvent) {
35919    return scheduleCallbackIfUnblocked(queuedEvent, unblocked);
35920  };
35921
35922  queuedPointers.forEach(unblock);
35923  queuedPointerCaptures.forEach(unblock);
35924
35925  for (var _i = 0; _i < queuedExplicitHydrationTargets.length; _i++) {
35926    var queuedTarget = queuedExplicitHydrationTargets[_i];
35927
35928    if (queuedTarget.blockedOn === unblocked) {
35929      queuedTarget.blockedOn = null;
35930    }
35931  }
35932
35933  while (queuedExplicitHydrationTargets.length > 0) {
35934    var nextExplicitTarget = queuedExplicitHydrationTargets[0];
35935
35936    if (nextExplicitTarget.blockedOn !== null) {
35937      // We're still blocked.
35938      break;
35939    } else {
35940      attemptExplicitHydrationTarget(nextExplicitTarget);
35941
35942      if (nextExplicitTarget.blockedOn === null) {
35943        // We're unblocked.
35944        queuedExplicitHydrationTargets.shift();
35945      }
35946    }
35947  }
35948}
35949
35950var DiscreteEvent = 0;
35951var UserBlockingEvent = 1;
35952var ContinuousEvent = 2;
35953
35954/**
35955 * Generate a mapping of standard vendor prefixes using the defined style property and event name.
35956 *
35957 * @param {string} styleProp
35958 * @param {string} eventName
35959 * @returns {object}
35960 */
35961
35962function makePrefixMap(styleProp, eventName) {
35963  var prefixes = {};
35964  prefixes[styleProp.toLowerCase()] = eventName.toLowerCase();
35965  prefixes['Webkit' + styleProp] = 'webkit' + eventName;
35966  prefixes['Moz' + styleProp] = 'moz' + eventName;
35967  return prefixes;
35968}
35969/**
35970 * A list of event names to a configurable list of vendor prefixes.
35971 */
35972
35973
35974var vendorPrefixes = {
35975  animationend: makePrefixMap('Animation', 'AnimationEnd'),
35976  animationiteration: makePrefixMap('Animation', 'AnimationIteration'),
35977  animationstart: makePrefixMap('Animation', 'AnimationStart'),
35978  transitionend: makePrefixMap('Transition', 'TransitionEnd')
35979};
35980/**
35981 * Event names that have already been detected and prefixed (if applicable).
35982 */
35983
35984var prefixedEventNames = {};
35985/**
35986 * Element to check for prefixes on.
35987 */
35988
35989var style = {};
35990/**
35991 * Bootstrap if a DOM exists.
35992 */
35993
35994if (canUseDOM) {
35995  style = document.createElement('div').style; // On some platforms, in particular some releases of Android 4.x,
35996  // the un-prefixed "animation" and "transition" properties are defined on the
35997  // style object but the events that fire will still be prefixed, so we need
35998  // to check if the un-prefixed events are usable, and if not remove them from the map.
35999
36000  if (!('AnimationEvent' in window)) {
36001    delete vendorPrefixes.animationend.animation;
36002    delete vendorPrefixes.animationiteration.animation;
36003    delete vendorPrefixes.animationstart.animation;
36004  } // Same as above
36005
36006
36007  if (!('TransitionEvent' in window)) {
36008    delete vendorPrefixes.transitionend.transition;
36009  }
36010}
36011/**
36012 * Attempts to determine the correct vendor prefixed event name.
36013 *
36014 * @param {string} eventName
36015 * @returns {string}
36016 */
36017
36018
36019function getVendorPrefixedEventName(eventName) {
36020  if (prefixedEventNames[eventName]) {
36021    return prefixedEventNames[eventName];
36022  } else if (!vendorPrefixes[eventName]) {
36023    return eventName;
36024  }
36025
36026  var prefixMap = vendorPrefixes[eventName];
36027
36028  for (var styleProp in prefixMap) {
36029    if (prefixMap.hasOwnProperty(styleProp) && styleProp in style) {
36030      return prefixedEventNames[eventName] = prefixMap[styleProp];
36031    }
36032  }
36033
36034  return eventName;
36035}
36036
36037var ANIMATION_END = getVendorPrefixedEventName('animationend');
36038var ANIMATION_ITERATION = getVendorPrefixedEventName('animationiteration');
36039var ANIMATION_START = getVendorPrefixedEventName('animationstart');
36040var TRANSITION_END = getVendorPrefixedEventName('transitionend');
36041
36042var topLevelEventsToReactNames = new Map();
36043var eventPriorities = new Map(); // We store most of the events in this module in pairs of two strings so we can re-use
36044// the code required to apply the same logic for event prioritization and that of the
36045// SimpleEventPlugin. This complicates things slightly, but the aim is to reduce code
36046// duplication (for which there would be quite a bit). For the events that are not needed
36047// for the SimpleEventPlugin (otherDiscreteEvents) we process them separately as an
36048// array of top level events.
36049// Lastly, we ignore prettier so we can keep the formatting sane.
36050// prettier-ignore
36051
36052var discreteEventPairsForSimpleEventPlugin = ['cancel', 'cancel', 'click', 'click', 'close', 'close', 'contextmenu', 'contextMenu', 'copy', 'copy', 'cut', 'cut', 'auxclick', 'auxClick', 'dblclick', 'doubleClick', // Careful!
36053'dragend', 'dragEnd', 'dragstart', 'dragStart', 'drop', 'drop', 'focusin', 'focus', // Careful!
36054'focusout', 'blur', // Careful!
36055'input', 'input', 'invalid', 'invalid', 'keydown', 'keyDown', 'keypress', 'keyPress', 'keyup', 'keyUp', 'mousedown', 'mouseDown', 'mouseup', 'mouseUp', 'paste', 'paste', 'pause', 'pause', 'play', 'play', 'pointercancel', 'pointerCancel', 'pointerdown', 'pointerDown', 'pointerup', 'pointerUp', 'ratechange', 'rateChange', 'reset', 'reset', 'seeked', 'seeked', 'submit', 'submit', 'touchcancel', 'touchCancel', 'touchend', 'touchEnd', 'touchstart', 'touchStart', 'volumechange', 'volumeChange'];
36056var otherDiscreteEvents = ['change', 'selectionchange', 'textInput', 'compositionstart', 'compositionend', 'compositionupdate'];
36057
36058
36059var userBlockingPairsForSimpleEventPlugin = ['drag', 'drag', 'dragenter', 'dragEnter', 'dragexit', 'dragExit', 'dragleave', 'dragLeave', 'dragover', 'dragOver', 'mousemove', 'mouseMove', 'mouseout', 'mouseOut', 'mouseover', 'mouseOver', 'pointermove', 'pointerMove', 'pointerout', 'pointerOut', 'pointerover', 'pointerOver', 'scroll', 'scroll', 'toggle', 'toggle', 'touchmove', 'touchMove', 'wheel', 'wheel']; // prettier-ignore
36060
36061var continuousPairsForSimpleEventPlugin = ['abort', 'abort', ANIMATION_END, 'animationEnd', ANIMATION_ITERATION, 'animationIteration', ANIMATION_START, 'animationStart', 'canplay', 'canPlay', 'canplaythrough', 'canPlayThrough', 'durationchange', 'durationChange', 'emptied', 'emptied', 'encrypted', 'encrypted', 'ended', 'ended', 'error', 'error', 'gotpointercapture', 'gotPointerCapture', 'load', 'load', 'loadeddata', 'loadedData', 'loadedmetadata', 'loadedMetadata', 'loadstart', 'loadStart', 'lostpointercapture', 'lostPointerCapture', 'playing', 'playing', 'progress', 'progress', 'seeking', 'seeking', 'stalled', 'stalled', 'suspend', 'suspend', 'timeupdate', 'timeUpdate', TRANSITION_END, 'transitionEnd', 'waiting', 'waiting'];
36062/**
36063 * Turns
36064 * ['abort', ...]
36065 *
36066 * into
36067 *
36068 * topLevelEventsToReactNames = new Map([
36069 *   ['abort', 'onAbort'],
36070 * ]);
36071 *
36072 * and registers them.
36073 */
36074
36075function registerSimplePluginEventsAndSetTheirPriorities(eventTypes, priority) {
36076  // As the event types are in pairs of two, we need to iterate
36077  // through in twos. The events are in pairs of two to save code
36078  // and improve init perf of processing this array, as it will
36079  // result in far fewer object allocations and property accesses
36080  // if we only use three arrays to process all the categories of
36081  // instead of tuples.
36082  for (var i = 0; i < eventTypes.length; i += 2) {
36083    var topEvent = eventTypes[i];
36084    var event = eventTypes[i + 1];
36085    var capitalizedEvent = event[0].toUpperCase() + event.slice(1);
36086    var reactName = 'on' + capitalizedEvent;
36087    eventPriorities.set(topEvent, priority);
36088    topLevelEventsToReactNames.set(topEvent, reactName);
36089    registerTwoPhaseEvent(reactName, [topEvent]);
36090  }
36091}
36092
36093function setEventPriorities(eventTypes, priority) {
36094  for (var i = 0; i < eventTypes.length; i++) {
36095    eventPriorities.set(eventTypes[i], priority);
36096  }
36097}
36098
36099function getEventPriorityForPluginSystem(domEventName) {
36100  var priority = eventPriorities.get(domEventName); // Default to a ContinuousEvent. Note: we might
36101  // want to warn if we can't detect the priority
36102  // for the event.
36103
36104  return priority === undefined ? ContinuousEvent : priority;
36105}
36106function registerSimpleEvents() {
36107  registerSimplePluginEventsAndSetTheirPriorities(discreteEventPairsForSimpleEventPlugin, DiscreteEvent);
36108  registerSimplePluginEventsAndSetTheirPriorities(userBlockingPairsForSimpleEventPlugin, UserBlockingEvent);
36109  registerSimplePluginEventsAndSetTheirPriorities(continuousPairsForSimpleEventPlugin, ContinuousEvent);
36110  setEventPriorities(otherDiscreteEvents, DiscreteEvent);
36111}
36112
36113var Scheduler_now = Scheduler.unstable_now;
36114
36115{
36116  // Provide explicit error message when production+profiling bundle of e.g.
36117  // react-dom is used with production (non-profiling) bundle of
36118  // scheduler/tracing
36119  if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) {
36120    {
36121      throw Error( "It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at https://reactjs.org/link/profiling" );
36122    }
36123  }
36124}
36125// ascending numbers so we can compare them like numbers. They start at 90 to
36126// avoid clashing with Scheduler's priorities.
36127
36128var ImmediatePriority = 99;
36129var UserBlockingPriority = 98;
36130var NormalPriority = 97;
36131var LowPriority = 96;
36132var IdlePriority = 95; // NoPriority is the absence of priority. Also React-only.
36133
36134var NoPriority = 90;
36135var initialTimeMs = Scheduler_now(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly.
36136
36137var SyncLanePriority = 15;
36138var SyncBatchedLanePriority = 14;
36139var InputDiscreteHydrationLanePriority = 13;
36140var InputDiscreteLanePriority = 12;
36141var InputContinuousHydrationLanePriority = 11;
36142var InputContinuousLanePriority = 10;
36143var DefaultHydrationLanePriority = 9;
36144var DefaultLanePriority = 8;
36145var TransitionHydrationPriority = 7;
36146var TransitionPriority = 6;
36147var RetryLanePriority = 5;
36148var SelectiveHydrationLanePriority = 4;
36149var IdleHydrationLanePriority = 3;
36150var IdleLanePriority = 2;
36151var OffscreenLanePriority = 1;
36152var NoLanePriority = 0;
36153var TotalLanes = 31;
36154var NoLanes =
36155/*                        */
361560;
36157var NoLane =
36158/*                          */
361590;
36160var SyncLane =
36161/*                        */
361621;
36163var SyncBatchedLane =
36164/*                 */
361652;
36166var InputDiscreteHydrationLane =
36167/*      */
361684;
36169var InputDiscreteLanes =
36170/*                    */
3617124;
36172var InputContinuousHydrationLane =
36173/*           */
3617432;
36175var InputContinuousLanes =
36176/*                  */
36177192;
36178var DefaultHydrationLane =
36179/*            */
36180256;
36181var DefaultLanes =
36182/*                   */
361833584;
36184var TransitionHydrationLane =
36185/*                */
361864096;
36187var TransitionLanes =
36188/*                       */
361894186112;
36190var RetryLanes =
36191/*                            */
3619262914560;
36193var SomeRetryLane =
36194/*                  */
3619533554432;
36196var SelectiveHydrationLane =
36197/*          */
3619867108864;
36199var NonIdleLanes =
36200/*                                 */
36201134217727;
36202var IdleHydrationLane =
36203/*               */
36204134217728;
36205var IdleLanes =
36206/*                             */
36207805306368;
36208var OffscreenLane =
36209/*                   */
362101073741824;
36211var NoTimestamp = -1;
36212function setCurrentUpdateLanePriority(newLanePriority) {
36213} // "Registers" used to "return" multiple values
36214// Used by getHighestPriorityLanes and getNextLanes:
36215
36216var return_highestLanePriority = DefaultLanePriority;
36217
36218function getHighestPriorityLanes(lanes) {
36219  if ((SyncLane & lanes) !== NoLanes) {
36220    return_highestLanePriority = SyncLanePriority;
36221    return SyncLane;
36222  }
36223
36224  if ((SyncBatchedLane & lanes) !== NoLanes) {
36225    return_highestLanePriority = SyncBatchedLanePriority;
36226    return SyncBatchedLane;
36227  }
36228
36229  if ((InputDiscreteHydrationLane & lanes) !== NoLanes) {
36230    return_highestLanePriority = InputDiscreteHydrationLanePriority;
36231    return InputDiscreteHydrationLane;
36232  }
36233
36234  var inputDiscreteLanes = InputDiscreteLanes & lanes;
36235
36236  if (inputDiscreteLanes !== NoLanes) {
36237    return_highestLanePriority = InputDiscreteLanePriority;
36238    return inputDiscreteLanes;
36239  }
36240
36241  if ((lanes & InputContinuousHydrationLane) !== NoLanes) {
36242    return_highestLanePriority = InputContinuousHydrationLanePriority;
36243    return InputContinuousHydrationLane;
36244  }
36245
36246  var inputContinuousLanes = InputContinuousLanes & lanes;
36247
36248  if (inputContinuousLanes !== NoLanes) {
36249    return_highestLanePriority = InputContinuousLanePriority;
36250    return inputContinuousLanes;
36251  }
36252
36253  if ((lanes & DefaultHydrationLane) !== NoLanes) {
36254    return_highestLanePriority = DefaultHydrationLanePriority;
36255    return DefaultHydrationLane;
36256  }
36257
36258  var defaultLanes = DefaultLanes & lanes;
36259
36260  if (defaultLanes !== NoLanes) {
36261    return_highestLanePriority = DefaultLanePriority;
36262    return defaultLanes;
36263  }
36264
36265  if ((lanes & TransitionHydrationLane) !== NoLanes) {
36266    return_highestLanePriority = TransitionHydrationPriority;
36267    return TransitionHydrationLane;
36268  }
36269
36270  var transitionLanes = TransitionLanes & lanes;
36271
36272  if (transitionLanes !== NoLanes) {
36273    return_highestLanePriority = TransitionPriority;
36274    return transitionLanes;
36275  }
36276
36277  var retryLanes = RetryLanes & lanes;
36278
36279  if (retryLanes !== NoLanes) {
36280    return_highestLanePriority = RetryLanePriority;
36281    return retryLanes;
36282  }
36283
36284  if (lanes & SelectiveHydrationLane) {
36285    return_highestLanePriority = SelectiveHydrationLanePriority;
36286    return SelectiveHydrationLane;
36287  }
36288
36289  if ((lanes & IdleHydrationLane) !== NoLanes) {
36290    return_highestLanePriority = IdleHydrationLanePriority;
36291    return IdleHydrationLane;
36292  }
36293
36294  var idleLanes = IdleLanes & lanes;
36295
36296  if (idleLanes !== NoLanes) {
36297    return_highestLanePriority = IdleLanePriority;
36298    return idleLanes;
36299  }
36300
36301  if ((OffscreenLane & lanes) !== NoLanes) {
36302    return_highestLanePriority = OffscreenLanePriority;
36303    return OffscreenLane;
36304  }
36305
36306  {
36307    error('Should have found matching lanes. This is a bug in React.');
36308  } // This shouldn't be reachable, but as a fallback, return the entire bitmask.
36309
36310
36311  return_highestLanePriority = DefaultLanePriority;
36312  return lanes;
36313}
36314
36315function schedulerPriorityToLanePriority(schedulerPriorityLevel) {
36316  switch (schedulerPriorityLevel) {
36317    case ImmediatePriority:
36318      return SyncLanePriority;
36319
36320    case UserBlockingPriority:
36321      return InputContinuousLanePriority;
36322
36323    case NormalPriority:
36324    case LowPriority:
36325      // TODO: Handle LowSchedulerPriority, somehow. Maybe the same lane as hydration.
36326      return DefaultLanePriority;
36327
36328    case IdlePriority:
36329      return IdleLanePriority;
36330
36331    default:
36332      return NoLanePriority;
36333  }
36334}
36335function lanePriorityToSchedulerPriority(lanePriority) {
36336  switch (lanePriority) {
36337    case SyncLanePriority:
36338    case SyncBatchedLanePriority:
36339      return ImmediatePriority;
36340
36341    case InputDiscreteHydrationLanePriority:
36342    case InputDiscreteLanePriority:
36343    case InputContinuousHydrationLanePriority:
36344    case InputContinuousLanePriority:
36345      return UserBlockingPriority;
36346
36347    case DefaultHydrationLanePriority:
36348    case DefaultLanePriority:
36349    case TransitionHydrationPriority:
36350    case TransitionPriority:
36351    case SelectiveHydrationLanePriority:
36352    case RetryLanePriority:
36353      return NormalPriority;
36354
36355    case IdleHydrationLanePriority:
36356    case IdleLanePriority:
36357    case OffscreenLanePriority:
36358      return IdlePriority;
36359
36360    case NoLanePriority:
36361      return NoPriority;
36362
36363    default:
36364      {
36365        {
36366          throw Error( "Invalid update priority: " + lanePriority + ". This is a bug in React." );
36367        }
36368      }
36369
36370  }
36371}
36372function getNextLanes(root, wipLanes) {
36373  // Early bailout if there's no pending work left.
36374  var pendingLanes = root.pendingLanes;
36375
36376  if (pendingLanes === NoLanes) {
36377    return_highestLanePriority = NoLanePriority;
36378    return NoLanes;
36379  }
36380
36381  var nextLanes = NoLanes;
36382  var nextLanePriority = NoLanePriority;
36383  var expiredLanes = root.expiredLanes;
36384  var suspendedLanes = root.suspendedLanes;
36385  var pingedLanes = root.pingedLanes; // Check if any work has expired.
36386
36387  if (expiredLanes !== NoLanes) {
36388    nextLanes = expiredLanes;
36389    nextLanePriority = return_highestLanePriority = SyncLanePriority;
36390  } else {
36391    // Do not work on any idle work until all the non-idle work has finished,
36392    // even if the work is suspended.
36393    var nonIdlePendingLanes = pendingLanes & NonIdleLanes;
36394
36395    if (nonIdlePendingLanes !== NoLanes) {
36396      var nonIdleUnblockedLanes = nonIdlePendingLanes & ~suspendedLanes;
36397
36398      if (nonIdleUnblockedLanes !== NoLanes) {
36399        nextLanes = getHighestPriorityLanes(nonIdleUnblockedLanes);
36400        nextLanePriority = return_highestLanePriority;
36401      } else {
36402        var nonIdlePingedLanes = nonIdlePendingLanes & pingedLanes;
36403
36404        if (nonIdlePingedLanes !== NoLanes) {
36405          nextLanes = getHighestPriorityLanes(nonIdlePingedLanes);
36406          nextLanePriority = return_highestLanePriority;
36407        }
36408      }
36409    } else {
36410      // The only remaining work is Idle.
36411      var unblockedLanes = pendingLanes & ~suspendedLanes;
36412
36413      if (unblockedLanes !== NoLanes) {
36414        nextLanes = getHighestPriorityLanes(unblockedLanes);
36415        nextLanePriority = return_highestLanePriority;
36416      } else {
36417        if (pingedLanes !== NoLanes) {
36418          nextLanes = getHighestPriorityLanes(pingedLanes);
36419          nextLanePriority = return_highestLanePriority;
36420        }
36421      }
36422    }
36423  }
36424
36425  if (nextLanes === NoLanes) {
36426    // This should only be reachable if we're suspended
36427    // TODO: Consider warning in this path if a fallback timer is not scheduled.
36428    return NoLanes;
36429  } // If there are higher priority lanes, we'll include them even if they
36430  // are suspended.
36431
36432
36433  nextLanes = pendingLanes & getEqualOrHigherPriorityLanes(nextLanes); // If we're already in the middle of a render, switching lanes will interrupt
36434  // it and we'll lose our progress. We should only do this if the new lanes are
36435  // higher priority.
36436
36437  if (wipLanes !== NoLanes && wipLanes !== nextLanes && // If we already suspended with a delay, then interrupting is fine. Don't
36438  // bother waiting until the root is complete.
36439  (wipLanes & suspendedLanes) === NoLanes) {
36440    getHighestPriorityLanes(wipLanes);
36441    var wipLanePriority = return_highestLanePriority;
36442
36443    if (nextLanePriority <= wipLanePriority) {
36444      return wipLanes;
36445    } else {
36446      return_highestLanePriority = nextLanePriority;
36447    }
36448  } // Check for entangled lanes and add them to the batch.
36449  //
36450  // A lane is said to be entangled with another when it's not allowed to render
36451  // in a batch that does not also include the other lane. Typically we do this
36452  // when multiple updates have the same source, and we only want to respond to
36453  // the most recent event from that source.
36454  //
36455  // Note that we apply entanglements *after* checking for partial work above.
36456  // This means that if a lane is entangled during an interleaved event while
36457  // it's already rendering, we won't interrupt it. This is intentional, since
36458  // entanglement is usually "best effort": we'll try our best to render the
36459  // lanes in the same batch, but it's not worth throwing out partially
36460  // completed work in order to do it.
36461  //
36462  // For those exceptions where entanglement is semantically important, like
36463  // useMutableSource, we should ensure that there is no partial work at the
36464  // time we apply the entanglement.
36465
36466
36467  var entangledLanes = root.entangledLanes;
36468
36469  if (entangledLanes !== NoLanes) {
36470    var entanglements = root.entanglements;
36471    var lanes = nextLanes & entangledLanes;
36472
36473    while (lanes > 0) {
36474      var index = pickArbitraryLaneIndex(lanes);
36475      var lane = 1 << index;
36476      nextLanes |= entanglements[index];
36477      lanes &= ~lane;
36478    }
36479  }
36480
36481  return nextLanes;
36482}
36483function getMostRecentEventTime(root, lanes) {
36484  var eventTimes = root.eventTimes;
36485  var mostRecentEventTime = NoTimestamp;
36486
36487  while (lanes > 0) {
36488    var index = pickArbitraryLaneIndex(lanes);
36489    var lane = 1 << index;
36490    var eventTime = eventTimes[index];
36491
36492    if (eventTime > mostRecentEventTime) {
36493      mostRecentEventTime = eventTime;
36494    }
36495
36496    lanes &= ~lane;
36497  }
36498
36499  return mostRecentEventTime;
36500}
36501
36502function computeExpirationTime(lane, currentTime) {
36503  // TODO: Expiration heuristic is constant per lane, so could use a map.
36504  getHighestPriorityLanes(lane);
36505  var priority = return_highestLanePriority;
36506
36507  if (priority >= InputContinuousLanePriority) {
36508    // User interactions should expire slightly more quickly.
36509    //
36510    // NOTE: This is set to the corresponding constant as in Scheduler.js. When
36511    // we made it larger, a product metric in www regressed, suggesting there's
36512    // a user interaction that's being starved by a series of synchronous
36513    // updates. If that theory is correct, the proper solution is to fix the
36514    // starvation. However, this scenario supports the idea that expiration
36515    // times are an important safeguard when starvation does happen.
36516    //
36517    // Also note that, in the case of user input specifically, this will soon no
36518    // longer be an issue because we plan to make user input synchronous by
36519    // default (until you enter `startTransition`, of course.)
36520    //
36521    // If weren't planning to make these updates synchronous soon anyway, I
36522    // would probably make this number a configurable parameter.
36523    return currentTime + 250;
36524  } else if (priority >= TransitionPriority) {
36525    return currentTime + 5000;
36526  } else {
36527    // Anything idle priority or lower should never expire.
36528    return NoTimestamp;
36529  }
36530}
36531
36532function markStarvedLanesAsExpired(root, currentTime) {
36533  // TODO: This gets called every time we yield. We can optimize by storing
36534  // the earliest expiration time on the root. Then use that to quickly bail out
36535  // of this function.
36536  var pendingLanes = root.pendingLanes;
36537  var suspendedLanes = root.suspendedLanes;
36538  var pingedLanes = root.pingedLanes;
36539  var expirationTimes = root.expirationTimes; // Iterate through the pending lanes and check if we've reached their
36540  // expiration time. If so, we'll assume the update is being starved and mark
36541  // it as expired to force it to finish.
36542
36543  var lanes = pendingLanes;
36544
36545  while (lanes > 0) {
36546    var index = pickArbitraryLaneIndex(lanes);
36547    var lane = 1 << index;
36548    var expirationTime = expirationTimes[index];
36549
36550    if (expirationTime === NoTimestamp) {
36551      // Found a pending lane with no expiration time. If it's not suspended, or
36552      // if it's pinged, assume it's CPU-bound. Compute a new expiration time
36553      // using the current time.
36554      if ((lane & suspendedLanes) === NoLanes || (lane & pingedLanes) !== NoLanes) {
36555        // Assumes timestamps are monotonically increasing.
36556        expirationTimes[index] = computeExpirationTime(lane, currentTime);
36557      }
36558    } else if (expirationTime <= currentTime) {
36559      // This lane expired
36560      root.expiredLanes |= lane;
36561    }
36562
36563    lanes &= ~lane;
36564  }
36565} // This returns the highest priority pending lanes regardless of whether they
36566function getLanesToRetrySynchronouslyOnError(root) {
36567  var everythingButOffscreen = root.pendingLanes & ~OffscreenLane;
36568
36569  if (everythingButOffscreen !== NoLanes) {
36570    return everythingButOffscreen;
36571  }
36572
36573  if (everythingButOffscreen & OffscreenLane) {
36574    return OffscreenLane;
36575  }
36576
36577  return NoLanes;
36578}
36579function returnNextLanesPriority() {
36580  return return_highestLanePriority;
36581}
36582function includesNonIdleWork(lanes) {
36583  return (lanes & NonIdleLanes) !== NoLanes;
36584}
36585function includesOnlyRetries(lanes) {
36586  return (lanes & RetryLanes) === lanes;
36587}
36588function includesOnlyTransitions(lanes) {
36589  return (lanes & TransitionLanes) === lanes;
36590} // To ensure consistency across multiple updates in the same event, this should
36591// be a pure function, so that it always returns the same lane for given inputs.
36592
36593function findUpdateLane(lanePriority, wipLanes) {
36594  switch (lanePriority) {
36595    case NoLanePriority:
36596      break;
36597
36598    case SyncLanePriority:
36599      return SyncLane;
36600
36601    case SyncBatchedLanePriority:
36602      return SyncBatchedLane;
36603
36604    case InputDiscreteLanePriority:
36605      {
36606        var _lane = pickArbitraryLane(InputDiscreteLanes & ~wipLanes);
36607
36608        if (_lane === NoLane) {
36609          // Shift to the next priority level
36610          return findUpdateLane(InputContinuousLanePriority, wipLanes);
36611        }
36612
36613        return _lane;
36614      }
36615
36616    case InputContinuousLanePriority:
36617      {
36618        var _lane2 = pickArbitraryLane(InputContinuousLanes & ~wipLanes);
36619
36620        if (_lane2 === NoLane) {
36621          // Shift to the next priority level
36622          return findUpdateLane(DefaultLanePriority, wipLanes);
36623        }
36624
36625        return _lane2;
36626      }
36627
36628    case DefaultLanePriority:
36629      {
36630        var _lane3 = pickArbitraryLane(DefaultLanes & ~wipLanes);
36631
36632        if (_lane3 === NoLane) {
36633          // If all the default lanes are already being worked on, look for a
36634          // lane in the transition range.
36635          _lane3 = pickArbitraryLane(TransitionLanes & ~wipLanes);
36636
36637          if (_lane3 === NoLane) {
36638            // All the transition lanes are taken, too. This should be very
36639            // rare, but as a last resort, pick a default lane. This will have
36640            // the effect of interrupting the current work-in-progress render.
36641            _lane3 = pickArbitraryLane(DefaultLanes);
36642          }
36643        }
36644
36645        return _lane3;
36646      }
36647
36648    case TransitionPriority: // Should be handled by findTransitionLane instead
36649
36650    case RetryLanePriority:
36651      // Should be handled by findRetryLane instead
36652      break;
36653
36654    case IdleLanePriority:
36655      var lane = pickArbitraryLane(IdleLanes & ~wipLanes);
36656
36657      if (lane === NoLane) {
36658        lane = pickArbitraryLane(IdleLanes);
36659      }
36660
36661      return lane;
36662  }
36663
36664  {
36665    {
36666      throw Error( "Invalid update priority: " + lanePriority + ". This is a bug in React." );
36667    }
36668  }
36669} // To ensure consistency across multiple updates in the same event, this should
36670// be pure function, so that it always returns the same lane for given inputs.
36671
36672function findTransitionLane(wipLanes, pendingLanes) {
36673  // First look for lanes that are completely unclaimed, i.e. have no
36674  // pending work.
36675  var lane = pickArbitraryLane(TransitionLanes & ~pendingLanes);
36676
36677  if (lane === NoLane) {
36678    // If all lanes have pending work, look for a lane that isn't currently
36679    // being worked on.
36680    lane = pickArbitraryLane(TransitionLanes & ~wipLanes);
36681
36682    if (lane === NoLane) {
36683      // If everything is being worked on, pick any lane. This has the
36684      // effect of interrupting the current work-in-progress.
36685      lane = pickArbitraryLane(TransitionLanes);
36686    }
36687  }
36688
36689  return lane;
36690} // To ensure consistency across multiple updates in the same event, this should
36691// be pure function, so that it always returns the same lane for given inputs.
36692
36693function findRetryLane(wipLanes) {
36694  // This is a fork of `findUpdateLane` designed specifically for Suspense
36695  // "retries" — a special update that attempts to flip a Suspense boundary
36696  // from its placeholder state to its primary/resolved state.
36697  var lane = pickArbitraryLane(RetryLanes & ~wipLanes);
36698
36699  if (lane === NoLane) {
36700    lane = pickArbitraryLane(RetryLanes);
36701  }
36702
36703  return lane;
36704}
36705
36706function getHighestPriorityLane(lanes) {
36707  return lanes & -lanes;
36708}
36709
36710function getLowestPriorityLane(lanes) {
36711  // This finds the most significant non-zero bit.
36712  var index = 31 - clz32(lanes);
36713  return index < 0 ? NoLanes : 1 << index;
36714}
36715
36716function getEqualOrHigherPriorityLanes(lanes) {
36717  return (getLowestPriorityLane(lanes) << 1) - 1;
36718}
36719
36720function pickArbitraryLane(lanes) {
36721  // This wrapper function gets inlined. Only exists so to communicate that it
36722  // doesn't matter which bit is selected; you can pick any bit without
36723  // affecting the algorithms where its used. Here I'm using
36724  // getHighestPriorityLane because it requires the fewest operations.
36725  return getHighestPriorityLane(lanes);
36726}
36727
36728function pickArbitraryLaneIndex(lanes) {
36729  return 31 - clz32(lanes);
36730}
36731
36732function laneToIndex(lane) {
36733  return pickArbitraryLaneIndex(lane);
36734}
36735
36736function includesSomeLane(a, b) {
36737  return (a & b) !== NoLanes;
36738}
36739function isSubsetOfLanes(set, subset) {
36740  return (set & subset) === subset;
36741}
36742function mergeLanes(a, b) {
36743  return a | b;
36744}
36745function removeLanes(set, subset) {
36746  return set & ~subset;
36747} // Seems redundant, but it changes the type from a single lane (used for
36748// updates) to a group of lanes (used for flushing work).
36749
36750function laneToLanes(lane) {
36751  return lane;
36752}
36753function higherPriorityLane(a, b) {
36754  // This works because the bit ranges decrease in priority as you go left.
36755  return a !== NoLane && a < b ? a : b;
36756}
36757function createLaneMap(initial) {
36758  // Intentionally pushing one by one.
36759  // https://v8.dev/blog/elements-kinds#avoid-creating-holes
36760  var laneMap = [];
36761
36762  for (var i = 0; i < TotalLanes; i++) {
36763    laneMap.push(initial);
36764  }
36765
36766  return laneMap;
36767}
36768function markRootUpdated(root, updateLane, eventTime) {
36769  root.pendingLanes |= updateLane; // TODO: Theoretically, any update to any lane can unblock any other lane. But
36770  // it's not practical to try every single possible combination. We need a
36771  // heuristic to decide which lanes to attempt to render, and in which batches.
36772  // For now, we use the same heuristic as in the old ExpirationTimes model:
36773  // retry any lane at equal or lower priority, but don't try updates at higher
36774  // priority without also including the lower priority updates. This works well
36775  // when considering updates across different priority levels, but isn't
36776  // sufficient for updates within the same priority, since we want to treat
36777  // those updates as parallel.
36778  // Unsuspend any update at equal or lower priority.
36779
36780  var higherPriorityLanes = updateLane - 1; // Turns 0b1000 into 0b0111
36781
36782  root.suspendedLanes &= higherPriorityLanes;
36783  root.pingedLanes &= higherPriorityLanes;
36784  var eventTimes = root.eventTimes;
36785  var index = laneToIndex(updateLane); // We can always overwrite an existing timestamp because we prefer the most
36786  // recent event, and we assume time is monotonically increasing.
36787
36788  eventTimes[index] = eventTime;
36789}
36790function markRootSuspended(root, suspendedLanes) {
36791  root.suspendedLanes |= suspendedLanes;
36792  root.pingedLanes &= ~suspendedLanes; // The suspended lanes are no longer CPU-bound. Clear their expiration times.
36793
36794  var expirationTimes = root.expirationTimes;
36795  var lanes = suspendedLanes;
36796
36797  while (lanes > 0) {
36798    var index = pickArbitraryLaneIndex(lanes);
36799    var lane = 1 << index;
36800    expirationTimes[index] = NoTimestamp;
36801    lanes &= ~lane;
36802  }
36803}
36804function markRootPinged(root, pingedLanes, eventTime) {
36805  root.pingedLanes |= root.suspendedLanes & pingedLanes;
36806}
36807function markDiscreteUpdatesExpired(root) {
36808  root.expiredLanes |= InputDiscreteLanes & root.pendingLanes;
36809}
36810function hasDiscreteLanes(lanes) {
36811  return (lanes & InputDiscreteLanes) !== NoLanes;
36812}
36813function markRootMutableRead(root, updateLane) {
36814  root.mutableReadLanes |= updateLane & root.pendingLanes;
36815}
36816function markRootFinished(root, remainingLanes) {
36817  var noLongerPendingLanes = root.pendingLanes & ~remainingLanes;
36818  root.pendingLanes = remainingLanes; // Let's try everything again
36819
36820  root.suspendedLanes = 0;
36821  root.pingedLanes = 0;
36822  root.expiredLanes &= remainingLanes;
36823  root.mutableReadLanes &= remainingLanes;
36824  root.entangledLanes &= remainingLanes;
36825  var entanglements = root.entanglements;
36826  var eventTimes = root.eventTimes;
36827  var expirationTimes = root.expirationTimes; // Clear the lanes that no longer have pending work
36828
36829  var lanes = noLongerPendingLanes;
36830
36831  while (lanes > 0) {
36832    var index = pickArbitraryLaneIndex(lanes);
36833    var lane = 1 << index;
36834    entanglements[index] = NoLanes;
36835    eventTimes[index] = NoTimestamp;
36836    expirationTimes[index] = NoTimestamp;
36837    lanes &= ~lane;
36838  }
36839}
36840function markRootEntangled(root, entangledLanes) {
36841  root.entangledLanes |= entangledLanes;
36842  var entanglements = root.entanglements;
36843  var lanes = entangledLanes;
36844
36845  while (lanes > 0) {
36846    var index = pickArbitraryLaneIndex(lanes);
36847    var lane = 1 << index;
36848    entanglements[index] |= entangledLanes;
36849    lanes &= ~lane;
36850  }
36851}
36852var clz32 = Math.clz32 ? Math.clz32 : clz32Fallback; // Count leading zeros. Only used on lanes, so assume input is an integer.
36853// Based on:
36854// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/clz32
36855
36856var log = Math.log;
36857var LN2 = Math.LN2;
36858
36859function clz32Fallback(lanes) {
36860  if (lanes === 0) {
36861    return 32;
36862  }
36863
36864  return 31 - (log(lanes) / LN2 | 0) | 0;
36865}
36866
36867// Intentionally not named imports because Rollup would use dynamic dispatch for
36868var UserBlockingPriority$1 = Scheduler.unstable_UserBlockingPriority,
36869    runWithPriority = Scheduler.unstable_runWithPriority; // TODO: can we stop exporting these?
36870
36871var _enabled = true; // This is exported in FB builds for use by legacy FB layer infra.
36872// We'd like to remove this but it's not clear if this is safe.
36873
36874function setEnabled(enabled) {
36875  _enabled = !!enabled;
36876}
36877function isEnabled() {
36878  return _enabled;
36879}
36880function createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags) {
36881  var eventPriority = getEventPriorityForPluginSystem(domEventName);
36882  var listenerWrapper;
36883
36884  switch (eventPriority) {
36885    case DiscreteEvent:
36886      listenerWrapper = dispatchDiscreteEvent;
36887      break;
36888
36889    case UserBlockingEvent:
36890      listenerWrapper = dispatchUserBlockingUpdate;
36891      break;
36892
36893    case ContinuousEvent:
36894    default:
36895      listenerWrapper = dispatchEvent;
36896      break;
36897  }
36898
36899  return listenerWrapper.bind(null, domEventName, eventSystemFlags, targetContainer);
36900}
36901
36902function dispatchDiscreteEvent(domEventName, eventSystemFlags, container, nativeEvent) {
36903  {
36904    flushDiscreteUpdatesIfNeeded(nativeEvent.timeStamp);
36905  }
36906
36907  discreteUpdates(dispatchEvent, domEventName, eventSystemFlags, container, nativeEvent);
36908}
36909
36910function dispatchUserBlockingUpdate(domEventName, eventSystemFlags, container, nativeEvent) {
36911  {
36912    runWithPriority(UserBlockingPriority$1, dispatchEvent.bind(null, domEventName, eventSystemFlags, container, nativeEvent));
36913  }
36914}
36915
36916function dispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
36917  if (!_enabled) {
36918    return;
36919  }
36920
36921  var allowReplay = true;
36922
36923  {
36924    // TODO: replaying capture phase events is currently broken
36925    // because we used to do it during top-level native bubble handlers
36926    // but now we use different bubble and capture handlers.
36927    // In eager mode, we attach capture listeners early, so we need
36928    // to filter them out until we fix the logic to handle them correctly.
36929    // This could've been outside the flag but I put it inside to reduce risk.
36930    allowReplay = (eventSystemFlags & IS_CAPTURE_PHASE) === 0;
36931  }
36932
36933  if (allowReplay && hasQueuedDiscreteEvents() && isReplayableDiscreteEvent(domEventName)) {
36934    // If we already have a queue of discrete events, and this is another discrete
36935    // event, then we can't dispatch it regardless of its target, since they
36936    // need to dispatch in order.
36937    queueDiscreteEvent(null, // Flags that we're not actually blocked on anything as far as we know.
36938    domEventName, eventSystemFlags, targetContainer, nativeEvent);
36939    return;
36940  }
36941
36942  var blockedOn = attemptToDispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent);
36943
36944  if (blockedOn === null) {
36945    // We successfully dispatched this event.
36946    if (allowReplay) {
36947      clearIfContinuousEvent(domEventName, nativeEvent);
36948    }
36949
36950    return;
36951  }
36952
36953  if (allowReplay) {
36954    if (isReplayableDiscreteEvent(domEventName)) {
36955      // This this to be replayed later once the target is available.
36956      queueDiscreteEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent);
36957      return;
36958    }
36959
36960    if (queueIfContinuousEvent(blockedOn, domEventName, eventSystemFlags, targetContainer, nativeEvent)) {
36961      return;
36962    } // We need to clear only if we didn't queue because
36963    // queueing is accummulative.
36964
36965
36966    clearIfContinuousEvent(domEventName, nativeEvent);
36967  } // This is not replayable so we'll invoke it but without a target,
36968  // in case the event system needs to trace it.
36969
36970
36971  dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, null, targetContainer);
36972} // Attempt dispatching an event. Returns a SuspenseInstance or Container if it's blocked.
36973
36974function attemptToDispatchEvent(domEventName, eventSystemFlags, targetContainer, nativeEvent) {
36975  // TODO: Warn if _enabled is false.
36976  var nativeEventTarget = getEventTarget(nativeEvent);
36977  var targetInst = getClosestInstanceFromNode(nativeEventTarget);
36978
36979  if (targetInst !== null) {
36980    var nearestMounted = getNearestMountedFiber(targetInst);
36981
36982    if (nearestMounted === null) {
36983      // This tree has been unmounted already. Dispatch without a target.
36984      targetInst = null;
36985    } else {
36986      var tag = nearestMounted.tag;
36987
36988      if (tag === SuspenseComponent) {
36989        var instance = getSuspenseInstanceFromFiber(nearestMounted);
36990
36991        if (instance !== null) {
36992          // Queue the event to be replayed later. Abort dispatching since we
36993          // don't want this event dispatched twice through the event system.
36994          // TODO: If this is the first discrete event in the queue. Schedule an increased
36995          // priority for this boundary.
36996          return instance;
36997        } // This shouldn't happen, something went wrong but to avoid blocking
36998        // the whole system, dispatch the event without a target.
36999        // TODO: Warn.
37000
37001
37002        targetInst = null;
37003      } else if (tag === HostRoot) {
37004        var root = nearestMounted.stateNode;
37005
37006        if (root.hydrate) {
37007          // If this happens during a replay something went wrong and it might block
37008          // the whole system.
37009          return getContainerFromFiber(nearestMounted);
37010        }
37011
37012        targetInst = null;
37013      } else if (nearestMounted !== targetInst) {
37014        // If we get an event (ex: img onload) before committing that
37015        // component's mount, ignore it for now (that is, treat it as if it was an
37016        // event on a non-React tree). We might also consider queueing events and
37017        // dispatching them after the mount.
37018        targetInst = null;
37019      }
37020    }
37021  }
37022
37023  dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer); // We're not blocked on anything.
37024
37025  return null;
37026}
37027
37028function addEventBubbleListener(target, eventType, listener) {
37029  target.addEventListener(eventType, listener, false);
37030  return listener;
37031}
37032function addEventCaptureListener(target, eventType, listener) {
37033  target.addEventListener(eventType, listener, true);
37034  return listener;
37035}
37036function addEventCaptureListenerWithPassiveFlag(target, eventType, listener, passive) {
37037  target.addEventListener(eventType, listener, {
37038    capture: true,
37039    passive: passive
37040  });
37041  return listener;
37042}
37043function addEventBubbleListenerWithPassiveFlag(target, eventType, listener, passive) {
37044  target.addEventListener(eventType, listener, {
37045    passive: passive
37046  });
37047  return listener;
37048}
37049
37050/**
37051 * These variables store information about text content of a target node,
37052 * allowing comparison of content before and after a given event.
37053 *
37054 * Identify the node where selection currently begins, then observe
37055 * both its text content and its current position in the DOM. Since the
37056 * browser may natively replace the target node during composition, we can
37057 * use its position to find its replacement.
37058 *
37059 *
37060 */
37061var root = null;
37062var startText = null;
37063var fallbackText = null;
37064function initialize(nativeEventTarget) {
37065  root = nativeEventTarget;
37066  startText = getText();
37067  return true;
37068}
37069function reset() {
37070  root = null;
37071  startText = null;
37072  fallbackText = null;
37073}
37074function getData() {
37075  if (fallbackText) {
37076    return fallbackText;
37077  }
37078
37079  var start;
37080  var startValue = startText;
37081  var startLength = startValue.length;
37082  var end;
37083  var endValue = getText();
37084  var endLength = endValue.length;
37085
37086  for (start = 0; start < startLength; start++) {
37087    if (startValue[start] !== endValue[start]) {
37088      break;
37089    }
37090  }
37091
37092  var minEnd = startLength - start;
37093
37094  for (end = 1; end <= minEnd; end++) {
37095    if (startValue[startLength - end] !== endValue[endLength - end]) {
37096      break;
37097    }
37098  }
37099
37100  var sliceTail = end > 1 ? 1 - end : undefined;
37101  fallbackText = endValue.slice(start, sliceTail);
37102  return fallbackText;
37103}
37104function getText() {
37105  if ('value' in root) {
37106    return root.value;
37107  }
37108
37109  return root.textContent;
37110}
37111
37112/**
37113 * `charCode` represents the actual "character code" and is safe to use with
37114 * `String.fromCharCode`. As such, only keys that correspond to printable
37115 * characters produce a valid `charCode`, the only exception to this is Enter.
37116 * The Tab-key is considered non-printable and does not have a `charCode`,
37117 * presumably because it does not produce a tab-character in browsers.
37118 *
37119 * @param {object} nativeEvent Native browser event.
37120 * @return {number} Normalized `charCode` property.
37121 */
37122function getEventCharCode(nativeEvent) {
37123  var charCode;
37124  var keyCode = nativeEvent.keyCode;
37125
37126  if ('charCode' in nativeEvent) {
37127    charCode = nativeEvent.charCode; // FF does not set `charCode` for the Enter-key, check against `keyCode`.
37128
37129    if (charCode === 0 && keyCode === 13) {
37130      charCode = 13;
37131    }
37132  } else {
37133    // IE8 does not implement `charCode`, but `keyCode` has the correct value.
37134    charCode = keyCode;
37135  } // IE and Edge (on Windows) and Chrome / Safari (on Windows and Linux)
37136  // report Enter as charCode 10 when ctrl is pressed.
37137
37138
37139  if (charCode === 10) {
37140    charCode = 13;
37141  } // Some non-printable keys are reported in `charCode`/`keyCode`, discard them.
37142  // Must not discard the (non-)printable Enter-key.
37143
37144
37145  if (charCode >= 32 || charCode === 13) {
37146    return charCode;
37147  }
37148
37149  return 0;
37150}
37151
37152function functionThatReturnsTrue() {
37153  return true;
37154}
37155
37156function functionThatReturnsFalse() {
37157  return false;
37158} // This is intentionally a factory so that we have different returned constructors.
37159// If we had a single constructor, it would be megamorphic and engines would deopt.
37160
37161
37162function createSyntheticEvent(Interface) {
37163  /**
37164   * Synthetic events are dispatched by event plugins, typically in response to a
37165   * top-level event delegation handler.
37166   *
37167   * These systems should generally use pooling to reduce the frequency of garbage
37168   * collection. The system should check `isPersistent` to determine whether the
37169   * event should be released into the pool after being dispatched. Users that
37170   * need a persisted event should invoke `persist`.
37171   *
37172   * Synthetic events (and subclasses) implement the DOM Level 3 Events API by
37173   * normalizing browser quirks. Subclasses do not necessarily have to implement a
37174   * DOM interface; custom application-specific events can also subclass this.
37175   */
37176  function SyntheticBaseEvent(reactName, reactEventType, targetInst, nativeEvent, nativeEventTarget) {
37177    this._reactName = reactName;
37178    this._targetInst = targetInst;
37179    this.type = reactEventType;
37180    this.nativeEvent = nativeEvent;
37181    this.target = nativeEventTarget;
37182    this.currentTarget = null;
37183
37184    for (var _propName in Interface) {
37185      if (!Interface.hasOwnProperty(_propName)) {
37186        continue;
37187      }
37188
37189      var normalize = Interface[_propName];
37190
37191      if (normalize) {
37192        this[_propName] = normalize(nativeEvent);
37193      } else {
37194        this[_propName] = nativeEvent[_propName];
37195      }
37196    }
37197
37198    var defaultPrevented = nativeEvent.defaultPrevented != null ? nativeEvent.defaultPrevented : nativeEvent.returnValue === false;
37199
37200    if (defaultPrevented) {
37201      this.isDefaultPrevented = functionThatReturnsTrue;
37202    } else {
37203      this.isDefaultPrevented = functionThatReturnsFalse;
37204    }
37205
37206    this.isPropagationStopped = functionThatReturnsFalse;
37207    return this;
37208  }
37209
37210  _assign(SyntheticBaseEvent.prototype, {
37211    preventDefault: function () {
37212      this.defaultPrevented = true;
37213      var event = this.nativeEvent;
37214
37215      if (!event) {
37216        return;
37217      }
37218
37219      if (event.preventDefault) {
37220        event.preventDefault(); // $FlowFixMe - flow is not aware of `unknown` in IE
37221      } else if (typeof event.returnValue !== 'unknown') {
37222        event.returnValue = false;
37223      }
37224
37225      this.isDefaultPrevented = functionThatReturnsTrue;
37226    },
37227    stopPropagation: function () {
37228      var event = this.nativeEvent;
37229
37230      if (!event) {
37231        return;
37232      }
37233
37234      if (event.stopPropagation) {
37235        event.stopPropagation(); // $FlowFixMe - flow is not aware of `unknown` in IE
37236      } else if (typeof event.cancelBubble !== 'unknown') {
37237        // The ChangeEventPlugin registers a "propertychange" event for
37238        // IE. This event does not support bubbling or cancelling, and
37239        // any references to cancelBubble throw "Member not found".  A
37240        // typeof check of "unknown" circumvents this issue (and is also
37241        // IE specific).
37242        event.cancelBubble = true;
37243      }
37244
37245      this.isPropagationStopped = functionThatReturnsTrue;
37246    },
37247
37248    /**
37249     * We release all dispatched `SyntheticEvent`s after each event loop, adding
37250     * them back into the pool. This allows a way to hold onto a reference that
37251     * won't be added back into the pool.
37252     */
37253    persist: function () {// Modern event system doesn't use pooling.
37254    },
37255
37256    /**
37257     * Checks if this event should be released back into the pool.
37258     *
37259     * @return {boolean} True if this should not be released, false otherwise.
37260     */
37261    isPersistent: functionThatReturnsTrue
37262  });
37263
37264  return SyntheticBaseEvent;
37265}
37266/**
37267 * @interface Event
37268 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37269 */
37270
37271
37272var EventInterface = {
37273  eventPhase: 0,
37274  bubbles: 0,
37275  cancelable: 0,
37276  timeStamp: function (event) {
37277    return event.timeStamp || Date.now();
37278  },
37279  defaultPrevented: 0,
37280  isTrusted: 0
37281};
37282var SyntheticEvent = createSyntheticEvent(EventInterface);
37283
37284var UIEventInterface = _assign({}, EventInterface, {
37285  view: 0,
37286  detail: 0
37287});
37288
37289var SyntheticUIEvent = createSyntheticEvent(UIEventInterface);
37290var lastMovementX;
37291var lastMovementY;
37292var lastMouseEvent;
37293
37294function updateMouseMovementPolyfillState(event) {
37295  if (event !== lastMouseEvent) {
37296    if (lastMouseEvent && event.type === 'mousemove') {
37297      lastMovementX = event.screenX - lastMouseEvent.screenX;
37298      lastMovementY = event.screenY - lastMouseEvent.screenY;
37299    } else {
37300      lastMovementX = 0;
37301      lastMovementY = 0;
37302    }
37303
37304    lastMouseEvent = event;
37305  }
37306}
37307/**
37308 * @interface MouseEvent
37309 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37310 */
37311
37312
37313var MouseEventInterface = _assign({}, UIEventInterface, {
37314  screenX: 0,
37315  screenY: 0,
37316  clientX: 0,
37317  clientY: 0,
37318  pageX: 0,
37319  pageY: 0,
37320  ctrlKey: 0,
37321  shiftKey: 0,
37322  altKey: 0,
37323  metaKey: 0,
37324  getModifierState: getEventModifierState,
37325  button: 0,
37326  buttons: 0,
37327  relatedTarget: function (event) {
37328    if (event.relatedTarget === undefined) return event.fromElement === event.srcElement ? event.toElement : event.fromElement;
37329    return event.relatedTarget;
37330  },
37331  movementX: function (event) {
37332    if ('movementX' in event) {
37333      return event.movementX;
37334    }
37335
37336    updateMouseMovementPolyfillState(event);
37337    return lastMovementX;
37338  },
37339  movementY: function (event) {
37340    if ('movementY' in event) {
37341      return event.movementY;
37342    } // Don't need to call updateMouseMovementPolyfillState() here
37343    // because it's guaranteed to have already run when movementX
37344    // was copied.
37345
37346
37347    return lastMovementY;
37348  }
37349});
37350
37351var SyntheticMouseEvent = createSyntheticEvent(MouseEventInterface);
37352/**
37353 * @interface DragEvent
37354 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37355 */
37356
37357var DragEventInterface = _assign({}, MouseEventInterface, {
37358  dataTransfer: 0
37359});
37360
37361var SyntheticDragEvent = createSyntheticEvent(DragEventInterface);
37362/**
37363 * @interface FocusEvent
37364 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37365 */
37366
37367var FocusEventInterface = _assign({}, UIEventInterface, {
37368  relatedTarget: 0
37369});
37370
37371var SyntheticFocusEvent = createSyntheticEvent(FocusEventInterface);
37372/**
37373 * @interface Event
37374 * @see http://www.w3.org/TR/css3-animations/#AnimationEvent-interface
37375 * @see https://developer.mozilla.org/en-US/docs/Web/API/AnimationEvent
37376 */
37377
37378var AnimationEventInterface = _assign({}, EventInterface, {
37379  animationName: 0,
37380  elapsedTime: 0,
37381  pseudoElement: 0
37382});
37383
37384var SyntheticAnimationEvent = createSyntheticEvent(AnimationEventInterface);
37385/**
37386 * @interface Event
37387 * @see http://www.w3.org/TR/clipboard-apis/
37388 */
37389
37390var ClipboardEventInterface = _assign({}, EventInterface, {
37391  clipboardData: function (event) {
37392    return 'clipboardData' in event ? event.clipboardData : window.clipboardData;
37393  }
37394});
37395
37396var SyntheticClipboardEvent = createSyntheticEvent(ClipboardEventInterface);
37397/**
37398 * @interface Event
37399 * @see http://www.w3.org/TR/DOM-Level-3-Events/#events-compositionevents
37400 */
37401
37402var CompositionEventInterface = _assign({}, EventInterface, {
37403  data: 0
37404});
37405
37406var SyntheticCompositionEvent = createSyntheticEvent(CompositionEventInterface);
37407/**
37408 * @interface Event
37409 * @see http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105
37410 *      /#events-inputevents
37411 */
37412// Happens to share the same list for now.
37413
37414var SyntheticInputEvent = SyntheticCompositionEvent;
37415/**
37416 * Normalization of deprecated HTML5 `key` values
37417 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
37418 */
37419
37420var normalizeKey = {
37421  Esc: 'Escape',
37422  Spacebar: ' ',
37423  Left: 'ArrowLeft',
37424  Up: 'ArrowUp',
37425  Right: 'ArrowRight',
37426  Down: 'ArrowDown',
37427  Del: 'Delete',
37428  Win: 'OS',
37429  Menu: 'ContextMenu',
37430  Apps: 'ContextMenu',
37431  Scroll: 'ScrollLock',
37432  MozPrintableKey: 'Unidentified'
37433};
37434/**
37435 * Translation from legacy `keyCode` to HTML5 `key`
37436 * Only special keys supported, all others depend on keyboard layout or browser
37437 * @see https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent#Key_names
37438 */
37439
37440var translateToKey = {
37441  '8': 'Backspace',
37442  '9': 'Tab',
37443  '12': 'Clear',
37444  '13': 'Enter',
37445  '16': 'Shift',
37446  '17': 'Control',
37447  '18': 'Alt',
37448  '19': 'Pause',
37449  '20': 'CapsLock',
37450  '27': 'Escape',
37451  '32': ' ',
37452  '33': 'PageUp',
37453  '34': 'PageDown',
37454  '35': 'End',
37455  '36': 'Home',
37456  '37': 'ArrowLeft',
37457  '38': 'ArrowUp',
37458  '39': 'ArrowRight',
37459  '40': 'ArrowDown',
37460  '45': 'Insert',
37461  '46': 'Delete',
37462  '112': 'F1',
37463  '113': 'F2',
37464  '114': 'F3',
37465  '115': 'F4',
37466  '116': 'F5',
37467  '117': 'F6',
37468  '118': 'F7',
37469  '119': 'F8',
37470  '120': 'F9',
37471  '121': 'F10',
37472  '122': 'F11',
37473  '123': 'F12',
37474  '144': 'NumLock',
37475  '145': 'ScrollLock',
37476  '224': 'Meta'
37477};
37478/**
37479 * @param {object} nativeEvent Native browser event.
37480 * @return {string} Normalized `key` property.
37481 */
37482
37483function getEventKey(nativeEvent) {
37484  if (nativeEvent.key) {
37485    // Normalize inconsistent values reported by browsers due to
37486    // implementations of a working draft specification.
37487    // FireFox implements `key` but returns `MozPrintableKey` for all
37488    // printable characters (normalized to `Unidentified`), ignore it.
37489    var key = normalizeKey[nativeEvent.key] || nativeEvent.key;
37490
37491    if (key !== 'Unidentified') {
37492      return key;
37493    }
37494  } // Browser does not implement `key`, polyfill as much of it as we can.
37495
37496
37497  if (nativeEvent.type === 'keypress') {
37498    var charCode = getEventCharCode(nativeEvent); // The enter-key is technically both printable and non-printable and can
37499    // thus be captured by `keypress`, no other non-printable key should.
37500
37501    return charCode === 13 ? 'Enter' : String.fromCharCode(charCode);
37502  }
37503
37504  if (nativeEvent.type === 'keydown' || nativeEvent.type === 'keyup') {
37505    // While user keyboard layout determines the actual meaning of each
37506    // `keyCode` value, almost all function keys have a universal value.
37507    return translateToKey[nativeEvent.keyCode] || 'Unidentified';
37508  }
37509
37510  return '';
37511}
37512/**
37513 * Translation from modifier key to the associated property in the event.
37514 * @see http://www.w3.org/TR/DOM-Level-3-Events/#keys-Modifiers
37515 */
37516
37517
37518var modifierKeyToProp = {
37519  Alt: 'altKey',
37520  Control: 'ctrlKey',
37521  Meta: 'metaKey',
37522  Shift: 'shiftKey'
37523}; // Older browsers (Safari <= 10, iOS Safari <= 10.2) do not support
37524// getModifierState. If getModifierState is not supported, we map it to a set of
37525// modifier keys exposed by the event. In this case, Lock-keys are not supported.
37526
37527function modifierStateGetter(keyArg) {
37528  var syntheticEvent = this;
37529  var nativeEvent = syntheticEvent.nativeEvent;
37530
37531  if (nativeEvent.getModifierState) {
37532    return nativeEvent.getModifierState(keyArg);
37533  }
37534
37535  var keyProp = modifierKeyToProp[keyArg];
37536  return keyProp ? !!nativeEvent[keyProp] : false;
37537}
37538
37539function getEventModifierState(nativeEvent) {
37540  return modifierStateGetter;
37541}
37542/**
37543 * @interface KeyboardEvent
37544 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37545 */
37546
37547
37548var KeyboardEventInterface = _assign({}, UIEventInterface, {
37549  key: getEventKey,
37550  code: 0,
37551  location: 0,
37552  ctrlKey: 0,
37553  shiftKey: 0,
37554  altKey: 0,
37555  metaKey: 0,
37556  repeat: 0,
37557  locale: 0,
37558  getModifierState: getEventModifierState,
37559  // Legacy Interface
37560  charCode: function (event) {
37561    // `charCode` is the result of a KeyPress event and represents the value of
37562    // the actual printable character.
37563    // KeyPress is deprecated, but its replacement is not yet final and not
37564    // implemented in any major browser. Only KeyPress has charCode.
37565    if (event.type === 'keypress') {
37566      return getEventCharCode(event);
37567    }
37568
37569    return 0;
37570  },
37571  keyCode: function (event) {
37572    // `keyCode` is the result of a KeyDown/Up event and represents the value of
37573    // physical keyboard key.
37574    // The actual meaning of the value depends on the users' keyboard layout
37575    // which cannot be detected. Assuming that it is a US keyboard layout
37576    // provides a surprisingly accurate mapping for US and European users.
37577    // Due to this, it is left to the user to implement at this time.
37578    if (event.type === 'keydown' || event.type === 'keyup') {
37579      return event.keyCode;
37580    }
37581
37582    return 0;
37583  },
37584  which: function (event) {
37585    // `which` is an alias for either `keyCode` or `charCode` depending on the
37586    // type of the event.
37587    if (event.type === 'keypress') {
37588      return getEventCharCode(event);
37589    }
37590
37591    if (event.type === 'keydown' || event.type === 'keyup') {
37592      return event.keyCode;
37593    }
37594
37595    return 0;
37596  }
37597});
37598
37599var SyntheticKeyboardEvent = createSyntheticEvent(KeyboardEventInterface);
37600/**
37601 * @interface PointerEvent
37602 * @see http://www.w3.org/TR/pointerevents/
37603 */
37604
37605var PointerEventInterface = _assign({}, MouseEventInterface, {
37606  pointerId: 0,
37607  width: 0,
37608  height: 0,
37609  pressure: 0,
37610  tangentialPressure: 0,
37611  tiltX: 0,
37612  tiltY: 0,
37613  twist: 0,
37614  pointerType: 0,
37615  isPrimary: 0
37616});
37617
37618var SyntheticPointerEvent = createSyntheticEvent(PointerEventInterface);
37619/**
37620 * @interface TouchEvent
37621 * @see http://www.w3.org/TR/touch-events/
37622 */
37623
37624var TouchEventInterface = _assign({}, UIEventInterface, {
37625  touches: 0,
37626  targetTouches: 0,
37627  changedTouches: 0,
37628  altKey: 0,
37629  metaKey: 0,
37630  ctrlKey: 0,
37631  shiftKey: 0,
37632  getModifierState: getEventModifierState
37633});
37634
37635var SyntheticTouchEvent = createSyntheticEvent(TouchEventInterface);
37636/**
37637 * @interface Event
37638 * @see http://www.w3.org/TR/2009/WD-css3-transitions-20090320/#transition-events-
37639 * @see https://developer.mozilla.org/en-US/docs/Web/API/TransitionEvent
37640 */
37641
37642var TransitionEventInterface = _assign({}, EventInterface, {
37643  propertyName: 0,
37644  elapsedTime: 0,
37645  pseudoElement: 0
37646});
37647
37648var SyntheticTransitionEvent = createSyntheticEvent(TransitionEventInterface);
37649/**
37650 * @interface WheelEvent
37651 * @see http://www.w3.org/TR/DOM-Level-3-Events/
37652 */
37653
37654var WheelEventInterface = _assign({}, MouseEventInterface, {
37655  deltaX: function (event) {
37656    return 'deltaX' in event ? event.deltaX : // Fallback to `wheelDeltaX` for Webkit and normalize (right is positive).
37657    'wheelDeltaX' in event ? -event.wheelDeltaX : 0;
37658  },
37659  deltaY: function (event) {
37660    return 'deltaY' in event ? event.deltaY : // Fallback to `wheelDeltaY` for Webkit and normalize (down is positive).
37661    'wheelDeltaY' in event ? -event.wheelDeltaY : // Fallback to `wheelDelta` for IE<9 and normalize (down is positive).
37662    'wheelDelta' in event ? -event.wheelDelta : 0;
37663  },
37664  deltaZ: 0,
37665  // Browsers without "deltaMode" is reporting in raw wheel delta where one
37666  // notch on the scroll is always +/- 120, roughly equivalent to pixels.
37667  // A good approximation of DOM_DELTA_LINE (1) is 5% of viewport size or
37668  // ~40 pixels, for DOM_DELTA_SCREEN (2) it is 87.5% of viewport size.
37669  deltaMode: 0
37670});
37671
37672var SyntheticWheelEvent = createSyntheticEvent(WheelEventInterface);
37673
37674var END_KEYCODES = [9, 13, 27, 32]; // Tab, Return, Esc, Space
37675
37676var START_KEYCODE = 229;
37677var canUseCompositionEvent = canUseDOM && 'CompositionEvent' in window;
37678var documentMode = null;
37679
37680if (canUseDOM && 'documentMode' in document) {
37681  documentMode = document.documentMode;
37682} // Webkit offers a very useful `textInput` event that can be used to
37683// directly represent `beforeInput`. The IE `textinput` event is not as
37684// useful, so we don't use it.
37685
37686
37687var canUseTextInputEvent = canUseDOM && 'TextEvent' in window && !documentMode; // In IE9+, we have access to composition events, but the data supplied
37688// by the native compositionend event may be incorrect. Japanese ideographic
37689// spaces, for instance (\u3000) are not recorded correctly.
37690
37691var useFallbackCompositionData = canUseDOM && (!canUseCompositionEvent || documentMode && documentMode > 8 && documentMode <= 11);
37692var SPACEBAR_CODE = 32;
37693var SPACEBAR_CHAR = String.fromCharCode(SPACEBAR_CODE);
37694
37695function registerEvents() {
37696  registerTwoPhaseEvent('onBeforeInput', ['compositionend', 'keypress', 'textInput', 'paste']);
37697  registerTwoPhaseEvent('onCompositionEnd', ['compositionend', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);
37698  registerTwoPhaseEvent('onCompositionStart', ['compositionstart', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);
37699  registerTwoPhaseEvent('onCompositionUpdate', ['compositionupdate', 'focusout', 'keydown', 'keypress', 'keyup', 'mousedown']);
37700} // Track whether we've ever handled a keypress on the space key.
37701
37702
37703var hasSpaceKeypress = false;
37704/**
37705 * Return whether a native keypress event is assumed to be a command.
37706 * This is required because Firefox fires `keypress` events for key commands
37707 * (cut, copy, select-all, etc.) even though no character is inserted.
37708 */
37709
37710function isKeypressCommand(nativeEvent) {
37711  return (nativeEvent.ctrlKey || nativeEvent.altKey || nativeEvent.metaKey) && // ctrlKey && altKey is equivalent to AltGr, and is not a command.
37712  !(nativeEvent.ctrlKey && nativeEvent.altKey);
37713}
37714/**
37715 * Translate native top level events into event types.
37716 */
37717
37718
37719function getCompositionEventType(domEventName) {
37720  switch (domEventName) {
37721    case 'compositionstart':
37722      return 'onCompositionStart';
37723
37724    case 'compositionend':
37725      return 'onCompositionEnd';
37726
37727    case 'compositionupdate':
37728      return 'onCompositionUpdate';
37729  }
37730}
37731/**
37732 * Does our fallback best-guess model think this event signifies that
37733 * composition has begun?
37734 */
37735
37736
37737function isFallbackCompositionStart(domEventName, nativeEvent) {
37738  return domEventName === 'keydown' && nativeEvent.keyCode === START_KEYCODE;
37739}
37740/**
37741 * Does our fallback mode think that this event is the end of composition?
37742 */
37743
37744
37745function isFallbackCompositionEnd(domEventName, nativeEvent) {
37746  switch (domEventName) {
37747    case 'keyup':
37748      // Command keys insert or clear IME input.
37749      return END_KEYCODES.indexOf(nativeEvent.keyCode) !== -1;
37750
37751    case 'keydown':
37752      // Expect IME keyCode on each keydown. If we get any other
37753      // code we must have exited earlier.
37754      return nativeEvent.keyCode !== START_KEYCODE;
37755
37756    case 'keypress':
37757    case 'mousedown':
37758    case 'focusout':
37759      // Events are not possible without cancelling IME.
37760      return true;
37761
37762    default:
37763      return false;
37764  }
37765}
37766/**
37767 * Google Input Tools provides composition data via a CustomEvent,
37768 * with the `data` property populated in the `detail` object. If this
37769 * is available on the event object, use it. If not, this is a plain
37770 * composition event and we have nothing special to extract.
37771 *
37772 * @param {object} nativeEvent
37773 * @return {?string}
37774 */
37775
37776
37777function getDataFromCustomEvent(nativeEvent) {
37778  var detail = nativeEvent.detail;
37779
37780  if (typeof detail === 'object' && 'data' in detail) {
37781    return detail.data;
37782  }
37783
37784  return null;
37785}
37786/**
37787 * Check if a composition event was triggered by Korean IME.
37788 * Our fallback mode does not work well with IE's Korean IME,
37789 * so just use native composition events when Korean IME is used.
37790 * Although CompositionEvent.locale property is deprecated,
37791 * it is available in IE, where our fallback mode is enabled.
37792 *
37793 * @param {object} nativeEvent
37794 * @return {boolean}
37795 */
37796
37797
37798function isUsingKoreanIME(nativeEvent) {
37799  return nativeEvent.locale === 'ko';
37800} // Track the current IME composition status, if any.
37801
37802
37803var isComposing = false;
37804/**
37805 * @return {?object} A SyntheticCompositionEvent.
37806 */
37807
37808function extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {
37809  var eventType;
37810  var fallbackData;
37811
37812  if (canUseCompositionEvent) {
37813    eventType = getCompositionEventType(domEventName);
37814  } else if (!isComposing) {
37815    if (isFallbackCompositionStart(domEventName, nativeEvent)) {
37816      eventType = 'onCompositionStart';
37817    }
37818  } else if (isFallbackCompositionEnd(domEventName, nativeEvent)) {
37819    eventType = 'onCompositionEnd';
37820  }
37821
37822  if (!eventType) {
37823    return null;
37824  }
37825
37826  if (useFallbackCompositionData && !isUsingKoreanIME(nativeEvent)) {
37827    // The current composition is stored statically and must not be
37828    // overwritten while composition continues.
37829    if (!isComposing && eventType === 'onCompositionStart') {
37830      isComposing = initialize(nativeEventTarget);
37831    } else if (eventType === 'onCompositionEnd') {
37832      if (isComposing) {
37833        fallbackData = getData();
37834      }
37835    }
37836  }
37837
37838  var listeners = accumulateTwoPhaseListeners(targetInst, eventType);
37839
37840  if (listeners.length > 0) {
37841    var event = new SyntheticCompositionEvent(eventType, domEventName, null, nativeEvent, nativeEventTarget);
37842    dispatchQueue.push({
37843      event: event,
37844      listeners: listeners
37845    });
37846
37847    if (fallbackData) {
37848      // Inject data generated from fallback path into the synthetic event.
37849      // This matches the property of native CompositionEventInterface.
37850      event.data = fallbackData;
37851    } else {
37852      var customData = getDataFromCustomEvent(nativeEvent);
37853
37854      if (customData !== null) {
37855        event.data = customData;
37856      }
37857    }
37858  }
37859}
37860
37861function getNativeBeforeInputChars(domEventName, nativeEvent) {
37862  switch (domEventName) {
37863    case 'compositionend':
37864      return getDataFromCustomEvent(nativeEvent);
37865
37866    case 'keypress':
37867      /**
37868       * If native `textInput` events are available, our goal is to make
37869       * use of them. However, there is a special case: the spacebar key.
37870       * In Webkit, preventing default on a spacebar `textInput` event
37871       * cancels character insertion, but it *also* causes the browser
37872       * to fall back to its default spacebar behavior of scrolling the
37873       * page.
37874       *
37875       * Tracking at:
37876       * https://code.google.com/p/chromium/issues/detail?id=355103
37877       *
37878       * To avoid this issue, use the keypress event as if no `textInput`
37879       * event is available.
37880       */
37881      var which = nativeEvent.which;
37882
37883      if (which !== SPACEBAR_CODE) {
37884        return null;
37885      }
37886
37887      hasSpaceKeypress = true;
37888      return SPACEBAR_CHAR;
37889
37890    case 'textInput':
37891      // Record the characters to be added to the DOM.
37892      var chars = nativeEvent.data; // If it's a spacebar character, assume that we have already handled
37893      // it at the keypress level and bail immediately. Android Chrome
37894      // doesn't give us keycodes, so we need to ignore it.
37895
37896      if (chars === SPACEBAR_CHAR && hasSpaceKeypress) {
37897        return null;
37898      }
37899
37900      return chars;
37901
37902    default:
37903      // For other native event types, do nothing.
37904      return null;
37905  }
37906}
37907/**
37908 * For browsers that do not provide the `textInput` event, extract the
37909 * appropriate string to use for SyntheticInputEvent.
37910 */
37911
37912
37913function getFallbackBeforeInputChars(domEventName, nativeEvent) {
37914  // If we are currently composing (IME) and using a fallback to do so,
37915  // try to extract the composed characters from the fallback object.
37916  // If composition event is available, we extract a string only at
37917  // compositionevent, otherwise extract it at fallback events.
37918  if (isComposing) {
37919    if (domEventName === 'compositionend' || !canUseCompositionEvent && isFallbackCompositionEnd(domEventName, nativeEvent)) {
37920      var chars = getData();
37921      reset();
37922      isComposing = false;
37923      return chars;
37924    }
37925
37926    return null;
37927  }
37928
37929  switch (domEventName) {
37930    case 'paste':
37931      // If a paste event occurs after a keypress, throw out the input
37932      // chars. Paste events should not lead to BeforeInput events.
37933      return null;
37934
37935    case 'keypress':
37936      /**
37937       * As of v27, Firefox may fire keypress events even when no character
37938       * will be inserted. A few possibilities:
37939       *
37940       * - `which` is `0`. Arrow keys, Esc key, etc.
37941       *
37942       * - `which` is the pressed key code, but no char is available.
37943       *   Ex: 'AltGr + d` in Polish. There is no modified character for
37944       *   this key combination and no character is inserted into the
37945       *   document, but FF fires the keypress for char code `100` anyway.
37946       *   No `input` event will occur.
37947       *
37948       * - `which` is the pressed key code, but a command combination is
37949       *   being used. Ex: `Cmd+C`. No character is inserted, and no
37950       *   `input` event will occur.
37951       */
37952      if (!isKeypressCommand(nativeEvent)) {
37953        // IE fires the `keypress` event when a user types an emoji via
37954        // Touch keyboard of Windows.  In such a case, the `char` property
37955        // holds an emoji character like `\uD83D\uDE0A`.  Because its length
37956        // is 2, the property `which` does not represent an emoji correctly.
37957        // In such a case, we directly return the `char` property instead of
37958        // using `which`.
37959        if (nativeEvent.char && nativeEvent.char.length > 1) {
37960          return nativeEvent.char;
37961        } else if (nativeEvent.which) {
37962          return String.fromCharCode(nativeEvent.which);
37963        }
37964      }
37965
37966      return null;
37967
37968    case 'compositionend':
37969      return useFallbackCompositionData && !isUsingKoreanIME(nativeEvent) ? null : nativeEvent.data;
37970
37971    default:
37972      return null;
37973  }
37974}
37975/**
37976 * Extract a SyntheticInputEvent for `beforeInput`, based on either native
37977 * `textInput` or fallback behavior.
37978 *
37979 * @return {?object} A SyntheticInputEvent.
37980 */
37981
37982
37983function extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget) {
37984  var chars;
37985
37986  if (canUseTextInputEvent) {
37987    chars = getNativeBeforeInputChars(domEventName, nativeEvent);
37988  } else {
37989    chars = getFallbackBeforeInputChars(domEventName, nativeEvent);
37990  } // If no characters are being inserted, no BeforeInput event should
37991  // be fired.
37992
37993
37994  if (!chars) {
37995    return null;
37996  }
37997
37998  var listeners = accumulateTwoPhaseListeners(targetInst, 'onBeforeInput');
37999
38000  if (listeners.length > 0) {
38001    var event = new SyntheticInputEvent('onBeforeInput', 'beforeinput', null, nativeEvent, nativeEventTarget);
38002    dispatchQueue.push({
38003      event: event,
38004      listeners: listeners
38005    });
38006    event.data = chars;
38007  }
38008}
38009/**
38010 * Create an `onBeforeInput` event to match
38011 * http://www.w3.org/TR/2013/WD-DOM-Level-3-Events-20131105/#events-inputevents.
38012 *
38013 * This event plugin is based on the native `textInput` event
38014 * available in Chrome, Safari, Opera, and IE. This event fires after
38015 * `onKeyPress` and `onCompositionEnd`, but before `onInput`.
38016 *
38017 * `beforeInput` is spec'd but not implemented in any browsers, and
38018 * the `input` event does not provide any useful information about what has
38019 * actually been added, contrary to the spec. Thus, `textInput` is the best
38020 * available event to identify the characters that have actually been inserted
38021 * into the target node.
38022 *
38023 * This plugin is also responsible for emitting `composition` events, thus
38024 * allowing us to share composition fallback code for both `beforeInput` and
38025 * `composition` event types.
38026 */
38027
38028
38029function extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
38030  extractCompositionEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
38031  extractBeforeInputEvent(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
38032}
38033
38034/**
38035 * @see http://www.whatwg.org/specs/web-apps/current-work/multipage/the-input-element.html#input-type-attr-summary
38036 */
38037var supportedInputTypes = {
38038  color: true,
38039  date: true,
38040  datetime: true,
38041  'datetime-local': true,
38042  email: true,
38043  month: true,
38044  number: true,
38045  password: true,
38046  range: true,
38047  search: true,
38048  tel: true,
38049  text: true,
38050  time: true,
38051  url: true,
38052  week: true
38053};
38054
38055function isTextInputElement(elem) {
38056  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
38057
38058  if (nodeName === 'input') {
38059    return !!supportedInputTypes[elem.type];
38060  }
38061
38062  if (nodeName === 'textarea') {
38063    return true;
38064  }
38065
38066  return false;
38067}
38068
38069/**
38070 * Checks if an event is supported in the current execution environment.
38071 *
38072 * NOTE: This will not work correctly for non-generic events such as `change`,
38073 * `reset`, `load`, `error`, and `select`.
38074 *
38075 * Borrows from Modernizr.
38076 *
38077 * @param {string} eventNameSuffix Event name, e.g. "click".
38078 * @return {boolean} True if the event is supported.
38079 * @internal
38080 * @license Modernizr 3.0.0pre (Custom Build) | MIT
38081 */
38082
38083function isEventSupported(eventNameSuffix) {
38084  if (!canUseDOM) {
38085    return false;
38086  }
38087
38088  var eventName = 'on' + eventNameSuffix;
38089  var isSupported = (eventName in document);
38090
38091  if (!isSupported) {
38092    var element = document.createElement('div');
38093    element.setAttribute(eventName, 'return;');
38094    isSupported = typeof element[eventName] === 'function';
38095  }
38096
38097  return isSupported;
38098}
38099
38100function registerEvents$1() {
38101  registerTwoPhaseEvent('onChange', ['change', 'click', 'focusin', 'focusout', 'input', 'keydown', 'keyup', 'selectionchange']);
38102}
38103
38104function createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, target) {
38105  // Flag this event loop as needing state restore.
38106  enqueueStateRestore(target);
38107  var listeners = accumulateTwoPhaseListeners(inst, 'onChange');
38108
38109  if (listeners.length > 0) {
38110    var event = new SyntheticEvent('onChange', 'change', null, nativeEvent, target);
38111    dispatchQueue.push({
38112      event: event,
38113      listeners: listeners
38114    });
38115  }
38116}
38117/**
38118 * For IE shims
38119 */
38120
38121
38122var activeElement = null;
38123var activeElementInst = null;
38124/**
38125 * SECTION: handle `change` event
38126 */
38127
38128function shouldUseChangeEvent(elem) {
38129  var nodeName = elem.nodeName && elem.nodeName.toLowerCase();
38130  return nodeName === 'select' || nodeName === 'input' && elem.type === 'file';
38131}
38132
38133function manualDispatchChangeEvent(nativeEvent) {
38134  var dispatchQueue = [];
38135  createAndAccumulateChangeEvent(dispatchQueue, activeElementInst, nativeEvent, getEventTarget(nativeEvent)); // If change and propertychange bubbled, we'd just bind to it like all the
38136  // other events and have it go through ReactBrowserEventEmitter. Since it
38137  // doesn't, we manually listen for the events and so we have to enqueue and
38138  // process the abstract event manually.
38139  //
38140  // Batching is necessary here in order to ensure that all event handlers run
38141  // before the next rerender (including event handlers attached to ancestor
38142  // elements instead of directly on the input). Without this, controlled
38143  // components don't work properly in conjunction with event bubbling because
38144  // the component is rerendered and the value reverted before all the event
38145  // handlers can run. See https://github.com/facebook/react/issues/708.
38146
38147  batchedUpdates(runEventInBatch, dispatchQueue);
38148}
38149
38150function runEventInBatch(dispatchQueue) {
38151  processDispatchQueue(dispatchQueue, 0);
38152}
38153
38154function getInstIfValueChanged(targetInst) {
38155  var targetNode = getNodeFromInstance(targetInst);
38156
38157  if (updateValueIfChanged(targetNode)) {
38158    return targetInst;
38159  }
38160}
38161
38162function getTargetInstForChangeEvent(domEventName, targetInst) {
38163  if (domEventName === 'change') {
38164    return targetInst;
38165  }
38166}
38167/**
38168 * SECTION: handle `input` event
38169 */
38170
38171
38172var isInputEventSupported = false;
38173
38174if (canUseDOM) {
38175  // IE9 claims to support the input event but fails to trigger it when
38176  // deleting text, so we ignore its input events.
38177  isInputEventSupported = isEventSupported('input') && (!document.documentMode || document.documentMode > 9);
38178}
38179/**
38180 * (For IE <=9) Starts tracking propertychange events on the passed-in element
38181 * and override the value property so that we can distinguish user events from
38182 * value changes in JS.
38183 */
38184
38185
38186function startWatchingForValueChange(target, targetInst) {
38187  activeElement = target;
38188  activeElementInst = targetInst;
38189  activeElement.attachEvent('onpropertychange', handlePropertyChange);
38190}
38191/**
38192 * (For IE <=9) Removes the event listeners from the currently-tracked element,
38193 * if any exists.
38194 */
38195
38196
38197function stopWatchingForValueChange() {
38198  if (!activeElement) {
38199    return;
38200  }
38201
38202  activeElement.detachEvent('onpropertychange', handlePropertyChange);
38203  activeElement = null;
38204  activeElementInst = null;
38205}
38206/**
38207 * (For IE <=9) Handles a propertychange event, sending a `change` event if
38208 * the value of the active element has changed.
38209 */
38210
38211
38212function handlePropertyChange(nativeEvent) {
38213  if (nativeEvent.propertyName !== 'value') {
38214    return;
38215  }
38216
38217  if (getInstIfValueChanged(activeElementInst)) {
38218    manualDispatchChangeEvent(nativeEvent);
38219  }
38220}
38221
38222function handleEventsForInputEventPolyfill(domEventName, target, targetInst) {
38223  if (domEventName === 'focusin') {
38224    // In IE9, propertychange fires for most input events but is buggy and
38225    // doesn't fire when text is deleted, but conveniently, selectionchange
38226    // appears to fire in all of the remaining cases so we catch those and
38227    // forward the event if the value has changed
38228    // In either case, we don't want to call the event handler if the value
38229    // is changed from JS so we redefine a setter for `.value` that updates
38230    // our activeElementValue variable, allowing us to ignore those changes
38231    //
38232    // stopWatching() should be a noop here but we call it just in case we
38233    // missed a blur event somehow.
38234    stopWatchingForValueChange();
38235    startWatchingForValueChange(target, targetInst);
38236  } else if (domEventName === 'focusout') {
38237    stopWatchingForValueChange();
38238  }
38239} // For IE8 and IE9.
38240
38241
38242function getTargetInstForInputEventPolyfill(domEventName, targetInst) {
38243  if (domEventName === 'selectionchange' || domEventName === 'keyup' || domEventName === 'keydown') {
38244    // On the selectionchange event, the target is just document which isn't
38245    // helpful for us so just check activeElement instead.
38246    //
38247    // 99% of the time, keydown and keyup aren't necessary. IE8 fails to fire
38248    // propertychange on the first input event after setting `value` from a
38249    // script and fires only keydown, keypress, keyup. Catching keyup usually
38250    // gets it and catching keydown lets us fire an event for the first
38251    // keystroke if user does a key repeat (it'll be a little delayed: right
38252    // before the second keystroke). Other input methods (e.g., paste) seem to
38253    // fire selectionchange normally.
38254    return getInstIfValueChanged(activeElementInst);
38255  }
38256}
38257/**
38258 * SECTION: handle `click` event
38259 */
38260
38261
38262function shouldUseClickEvent(elem) {
38263  // Use the `click` event to detect changes to checkbox and radio inputs.
38264  // This approach works across all browsers, whereas `change` does not fire
38265  // until `blur` in IE8.
38266  var nodeName = elem.nodeName;
38267  return nodeName && nodeName.toLowerCase() === 'input' && (elem.type === 'checkbox' || elem.type === 'radio');
38268}
38269
38270function getTargetInstForClickEvent(domEventName, targetInst) {
38271  if (domEventName === 'click') {
38272    return getInstIfValueChanged(targetInst);
38273  }
38274}
38275
38276function getTargetInstForInputOrChangeEvent(domEventName, targetInst) {
38277  if (domEventName === 'input' || domEventName === 'change') {
38278    return getInstIfValueChanged(targetInst);
38279  }
38280}
38281
38282function handleControlledInputBlur(node) {
38283  var state = node._wrapperState;
38284
38285  if (!state || !state.controlled || node.type !== 'number') {
38286    return;
38287  }
38288
38289  {
38290    // If controlled, assign the value attribute to the current value on blur
38291    setDefaultValue(node, 'number', node.value);
38292  }
38293}
38294/**
38295 * This plugin creates an `onChange` event that normalizes change events
38296 * across form elements. This event fires at a time when it's possible to
38297 * change the element's value without seeing a flicker.
38298 *
38299 * Supported elements are:
38300 * - input (see `isTextInputElement`)
38301 * - textarea
38302 * - select
38303 */
38304
38305
38306function extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
38307  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;
38308  var getTargetInstFunc, handleEventFunc;
38309
38310  if (shouldUseChangeEvent(targetNode)) {
38311    getTargetInstFunc = getTargetInstForChangeEvent;
38312  } else if (isTextInputElement(targetNode)) {
38313    if (isInputEventSupported) {
38314      getTargetInstFunc = getTargetInstForInputOrChangeEvent;
38315    } else {
38316      getTargetInstFunc = getTargetInstForInputEventPolyfill;
38317      handleEventFunc = handleEventsForInputEventPolyfill;
38318    }
38319  } else if (shouldUseClickEvent(targetNode)) {
38320    getTargetInstFunc = getTargetInstForClickEvent;
38321  }
38322
38323  if (getTargetInstFunc) {
38324    var inst = getTargetInstFunc(domEventName, targetInst);
38325
38326    if (inst) {
38327      createAndAccumulateChangeEvent(dispatchQueue, inst, nativeEvent, nativeEventTarget);
38328      return;
38329    }
38330  }
38331
38332  if (handleEventFunc) {
38333    handleEventFunc(domEventName, targetNode, targetInst);
38334  } // When blurring, set the value attribute for number inputs
38335
38336
38337  if (domEventName === 'focusout') {
38338    handleControlledInputBlur(targetNode);
38339  }
38340}
38341
38342function registerEvents$2() {
38343  registerDirectEvent('onMouseEnter', ['mouseout', 'mouseover']);
38344  registerDirectEvent('onMouseLeave', ['mouseout', 'mouseover']);
38345  registerDirectEvent('onPointerEnter', ['pointerout', 'pointerover']);
38346  registerDirectEvent('onPointerLeave', ['pointerout', 'pointerover']);
38347}
38348/**
38349 * For almost every interaction we care about, there will be both a top-level
38350 * `mouseover` and `mouseout` event that occurs. Only use `mouseout` so that
38351 * we do not extract duplicate events. However, moving the mouse into the
38352 * browser from outside will not fire a `mouseout` event. In this case, we use
38353 * the `mouseover` top-level event.
38354 */
38355
38356
38357function extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
38358  var isOverEvent = domEventName === 'mouseover' || domEventName === 'pointerover';
38359  var isOutEvent = domEventName === 'mouseout' || domEventName === 'pointerout';
38360
38361  if (isOverEvent && (eventSystemFlags & IS_REPLAYED) === 0) {
38362    // If this is an over event with a target, we might have already dispatched
38363    // the event in the out event of the other target. If this is replayed,
38364    // then it's because we couldn't dispatch against this target previously
38365    // so we have to do it now instead.
38366    var related = nativeEvent.relatedTarget || nativeEvent.fromElement;
38367
38368    if (related) {
38369      // If the related node is managed by React, we can assume that we have
38370      // already dispatched the corresponding events during its mouseout.
38371      if (getClosestInstanceFromNode(related) || isContainerMarkedAsRoot(related)) {
38372        return;
38373      }
38374    }
38375  }
38376
38377  if (!isOutEvent && !isOverEvent) {
38378    // Must not be a mouse or pointer in or out - ignoring.
38379    return;
38380  }
38381
38382  var win; // TODO: why is this nullable in the types but we read from it?
38383
38384  if (nativeEventTarget.window === nativeEventTarget) {
38385    // `nativeEventTarget` is probably a window object.
38386    win = nativeEventTarget;
38387  } else {
38388    // TODO: Figure out why `ownerDocument` is sometimes undefined in IE8.
38389    var doc = nativeEventTarget.ownerDocument;
38390
38391    if (doc) {
38392      win = doc.defaultView || doc.parentWindow;
38393    } else {
38394      win = window;
38395    }
38396  }
38397
38398  var from;
38399  var to;
38400
38401  if (isOutEvent) {
38402    var _related = nativeEvent.relatedTarget || nativeEvent.toElement;
38403
38404    from = targetInst;
38405    to = _related ? getClosestInstanceFromNode(_related) : null;
38406
38407    if (to !== null) {
38408      var nearestMounted = getNearestMountedFiber(to);
38409
38410      if (to !== nearestMounted || to.tag !== HostComponent && to.tag !== HostText) {
38411        to = null;
38412      }
38413    }
38414  } else {
38415    // Moving to a node from outside the window.
38416    from = null;
38417    to = targetInst;
38418  }
38419
38420  if (from === to) {
38421    // Nothing pertains to our managed components.
38422    return;
38423  }
38424
38425  var SyntheticEventCtor = SyntheticMouseEvent;
38426  var leaveEventType = 'onMouseLeave';
38427  var enterEventType = 'onMouseEnter';
38428  var eventTypePrefix = 'mouse';
38429
38430  if (domEventName === 'pointerout' || domEventName === 'pointerover') {
38431    SyntheticEventCtor = SyntheticPointerEvent;
38432    leaveEventType = 'onPointerLeave';
38433    enterEventType = 'onPointerEnter';
38434    eventTypePrefix = 'pointer';
38435  }
38436
38437  var fromNode = from == null ? win : getNodeFromInstance(from);
38438  var toNode = to == null ? win : getNodeFromInstance(to);
38439  var leave = new SyntheticEventCtor(leaveEventType, eventTypePrefix + 'leave', from, nativeEvent, nativeEventTarget);
38440  leave.target = fromNode;
38441  leave.relatedTarget = toNode;
38442  var enter = null; // We should only process this nativeEvent if we are processing
38443  // the first ancestor. Next time, we will ignore the event.
38444
38445  var nativeTargetInst = getClosestInstanceFromNode(nativeEventTarget);
38446
38447  if (nativeTargetInst === targetInst) {
38448    var enterEvent = new SyntheticEventCtor(enterEventType, eventTypePrefix + 'enter', to, nativeEvent, nativeEventTarget);
38449    enterEvent.target = toNode;
38450    enterEvent.relatedTarget = fromNode;
38451    enter = enterEvent;
38452  }
38453
38454  accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leave, enter, from, to);
38455}
38456
38457/**
38458 * inlined Object.is polyfill to avoid requiring consumers ship their own
38459 * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is
38460 */
38461function is(x, y) {
38462  return x === y && (x !== 0 || 1 / x === 1 / y) || x !== x && y !== y // eslint-disable-line no-self-compare
38463  ;
38464}
38465
38466var objectIs = typeof Object.is === 'function' ? Object.is : is;
38467
38468var hasOwnProperty$2 = Object.prototype.hasOwnProperty;
38469/**
38470 * Performs equality by iterating through keys on an object and returning false
38471 * when any key has values which are not strictly equal between the arguments.
38472 * Returns true when the values of all keys are strictly equal.
38473 */
38474
38475function shallowEqual(objA, objB) {
38476  if (objectIs(objA, objB)) {
38477    return true;
38478  }
38479
38480  if (typeof objA !== 'object' || objA === null || typeof objB !== 'object' || objB === null) {
38481    return false;
38482  }
38483
38484  var keysA = Object.keys(objA);
38485  var keysB = Object.keys(objB);
38486
38487  if (keysA.length !== keysB.length) {
38488    return false;
38489  } // Test for A's keys different from B.
38490
38491
38492  for (var i = 0; i < keysA.length; i++) {
38493    if (!hasOwnProperty$2.call(objB, keysA[i]) || !objectIs(objA[keysA[i]], objB[keysA[i]])) {
38494      return false;
38495    }
38496  }
38497
38498  return true;
38499}
38500
38501/**
38502 * Given any node return the first leaf node without children.
38503 *
38504 * @param {DOMElement|DOMTextNode} node
38505 * @return {DOMElement|DOMTextNode}
38506 */
38507
38508function getLeafNode(node) {
38509  while (node && node.firstChild) {
38510    node = node.firstChild;
38511  }
38512
38513  return node;
38514}
38515/**
38516 * Get the next sibling within a container. This will walk up the
38517 * DOM if a node's siblings have been exhausted.
38518 *
38519 * @param {DOMElement|DOMTextNode} node
38520 * @return {?DOMElement|DOMTextNode}
38521 */
38522
38523
38524function getSiblingNode(node) {
38525  while (node) {
38526    if (node.nextSibling) {
38527      return node.nextSibling;
38528    }
38529
38530    node = node.parentNode;
38531  }
38532}
38533/**
38534 * Get object describing the nodes which contain characters at offset.
38535 *
38536 * @param {DOMElement|DOMTextNode} root
38537 * @param {number} offset
38538 * @return {?object}
38539 */
38540
38541
38542function getNodeForCharacterOffset(root, offset) {
38543  var node = getLeafNode(root);
38544  var nodeStart = 0;
38545  var nodeEnd = 0;
38546
38547  while (node) {
38548    if (node.nodeType === TEXT_NODE) {
38549      nodeEnd = nodeStart + node.textContent.length;
38550
38551      if (nodeStart <= offset && nodeEnd >= offset) {
38552        return {
38553          node: node,
38554          offset: offset - nodeStart
38555        };
38556      }
38557
38558      nodeStart = nodeEnd;
38559    }
38560
38561    node = getLeafNode(getSiblingNode(node));
38562  }
38563}
38564
38565/**
38566 * @param {DOMElement} outerNode
38567 * @return {?object}
38568 */
38569
38570function getOffsets(outerNode) {
38571  var ownerDocument = outerNode.ownerDocument;
38572  var win = ownerDocument && ownerDocument.defaultView || window;
38573  var selection = win.getSelection && win.getSelection();
38574
38575  if (!selection || selection.rangeCount === 0) {
38576    return null;
38577  }
38578
38579  var anchorNode = selection.anchorNode,
38580      anchorOffset = selection.anchorOffset,
38581      focusNode = selection.focusNode,
38582      focusOffset = selection.focusOffset; // In Firefox, anchorNode and focusNode can be "anonymous divs", e.g. the
38583  // up/down buttons on an <input type="number">. Anonymous divs do not seem to
38584  // expose properties, triggering a "Permission denied error" if any of its
38585  // properties are accessed. The only seemingly possible way to avoid erroring
38586  // is to access a property that typically works for non-anonymous divs and
38587  // catch any error that may otherwise arise. See
38588  // https://bugzilla.mozilla.org/show_bug.cgi?id=208427
38589
38590  try {
38591    /* eslint-disable no-unused-expressions */
38592    anchorNode.nodeType;
38593    focusNode.nodeType;
38594    /* eslint-enable no-unused-expressions */
38595  } catch (e) {
38596    return null;
38597  }
38598
38599  return getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset);
38600}
38601/**
38602 * Returns {start, end} where `start` is the character/codepoint index of
38603 * (anchorNode, anchorOffset) within the textContent of `outerNode`, and
38604 * `end` is the index of (focusNode, focusOffset).
38605 *
38606 * Returns null if you pass in garbage input but we should probably just crash.
38607 *
38608 * Exported only for testing.
38609 */
38610
38611function getModernOffsetsFromPoints(outerNode, anchorNode, anchorOffset, focusNode, focusOffset) {
38612  var length = 0;
38613  var start = -1;
38614  var end = -1;
38615  var indexWithinAnchor = 0;
38616  var indexWithinFocus = 0;
38617  var node = outerNode;
38618  var parentNode = null;
38619
38620  outer: while (true) {
38621    var next = null;
38622
38623    while (true) {
38624      if (node === anchorNode && (anchorOffset === 0 || node.nodeType === TEXT_NODE)) {
38625        start = length + anchorOffset;
38626      }
38627
38628      if (node === focusNode && (focusOffset === 0 || node.nodeType === TEXT_NODE)) {
38629        end = length + focusOffset;
38630      }
38631
38632      if (node.nodeType === TEXT_NODE) {
38633        length += node.nodeValue.length;
38634      }
38635
38636      if ((next = node.firstChild) === null) {
38637        break;
38638      } // Moving from `node` to its first child `next`.
38639
38640
38641      parentNode = node;
38642      node = next;
38643    }
38644
38645    while (true) {
38646      if (node === outerNode) {
38647        // If `outerNode` has children, this is always the second time visiting
38648        // it. If it has no children, this is still the first loop, and the only
38649        // valid selection is anchorNode and focusNode both equal to this node
38650        // and both offsets 0, in which case we will have handled above.
38651        break outer;
38652      }
38653
38654      if (parentNode === anchorNode && ++indexWithinAnchor === anchorOffset) {
38655        start = length;
38656      }
38657
38658      if (parentNode === focusNode && ++indexWithinFocus === focusOffset) {
38659        end = length;
38660      }
38661
38662      if ((next = node.nextSibling) !== null) {
38663        break;
38664      }
38665
38666      node = parentNode;
38667      parentNode = node.parentNode;
38668    } // Moving from `node` to its next sibling `next`.
38669
38670
38671    node = next;
38672  }
38673
38674  if (start === -1 || end === -1) {
38675    // This should never happen. (Would happen if the anchor/focus nodes aren't
38676    // actually inside the passed-in node.)
38677    return null;
38678  }
38679
38680  return {
38681    start: start,
38682    end: end
38683  };
38684}
38685/**
38686 * In modern non-IE browsers, we can support both forward and backward
38687 * selections.
38688 *
38689 * Note: IE10+ supports the Selection object, but it does not support
38690 * the `extend` method, which means that even in modern IE, it's not possible
38691 * to programmatically create a backward selection. Thus, for all IE
38692 * versions, we use the old IE API to create our selections.
38693 *
38694 * @param {DOMElement|DOMTextNode} node
38695 * @param {object} offsets
38696 */
38697
38698function setOffsets(node, offsets) {
38699  var doc = node.ownerDocument || document;
38700  var win = doc && doc.defaultView || window; // Edge fails with "Object expected" in some scenarios.
38701  // (For instance: TinyMCE editor used in a list component that supports pasting to add more,
38702  // fails when pasting 100+ items)
38703
38704  if (!win.getSelection) {
38705    return;
38706  }
38707
38708  var selection = win.getSelection();
38709  var length = node.textContent.length;
38710  var start = Math.min(offsets.start, length);
38711  var end = offsets.end === undefined ? start : Math.min(offsets.end, length); // IE 11 uses modern selection, but doesn't support the extend method.
38712  // Flip backward selections, so we can set with a single range.
38713
38714  if (!selection.extend && start > end) {
38715    var temp = end;
38716    end = start;
38717    start = temp;
38718  }
38719
38720  var startMarker = getNodeForCharacterOffset(node, start);
38721  var endMarker = getNodeForCharacterOffset(node, end);
38722
38723  if (startMarker && endMarker) {
38724    if (selection.rangeCount === 1 && selection.anchorNode === startMarker.node && selection.anchorOffset === startMarker.offset && selection.focusNode === endMarker.node && selection.focusOffset === endMarker.offset) {
38725      return;
38726    }
38727
38728    var range = doc.createRange();
38729    range.setStart(startMarker.node, startMarker.offset);
38730    selection.removeAllRanges();
38731
38732    if (start > end) {
38733      selection.addRange(range);
38734      selection.extend(endMarker.node, endMarker.offset);
38735    } else {
38736      range.setEnd(endMarker.node, endMarker.offset);
38737      selection.addRange(range);
38738    }
38739  }
38740}
38741
38742function isTextNode(node) {
38743  return node && node.nodeType === TEXT_NODE;
38744}
38745
38746function containsNode(outerNode, innerNode) {
38747  if (!outerNode || !innerNode) {
38748    return false;
38749  } else if (outerNode === innerNode) {
38750    return true;
38751  } else if (isTextNode(outerNode)) {
38752    return false;
38753  } else if (isTextNode(innerNode)) {
38754    return containsNode(outerNode, innerNode.parentNode);
38755  } else if ('contains' in outerNode) {
38756    return outerNode.contains(innerNode);
38757  } else if (outerNode.compareDocumentPosition) {
38758    return !!(outerNode.compareDocumentPosition(innerNode) & 16);
38759  } else {
38760    return false;
38761  }
38762}
38763
38764function isInDocument(node) {
38765  return node && node.ownerDocument && containsNode(node.ownerDocument.documentElement, node);
38766}
38767
38768function isSameOriginFrame(iframe) {
38769  try {
38770    // Accessing the contentDocument of a HTMLIframeElement can cause the browser
38771    // to throw, e.g. if it has a cross-origin src attribute.
38772    // Safari will show an error in the console when the access results in "Blocked a frame with origin". e.g:
38773    // iframe.contentDocument.defaultView;
38774    // A safety way is to access one of the cross origin properties: Window or Location
38775    // Which might result in "SecurityError" DOM Exception and it is compatible to Safari.
38776    // https://html.spec.whatwg.org/multipage/browsers.html#integration-with-idl
38777    return typeof iframe.contentWindow.location.href === 'string';
38778  } catch (err) {
38779    return false;
38780  }
38781}
38782
38783function getActiveElementDeep() {
38784  var win = window;
38785  var element = getActiveElement();
38786
38787  while (element instanceof win.HTMLIFrameElement) {
38788    if (isSameOriginFrame(element)) {
38789      win = element.contentWindow;
38790    } else {
38791      return element;
38792    }
38793
38794    element = getActiveElement(win.document);
38795  }
38796
38797  return element;
38798}
38799/**
38800 * @ReactInputSelection: React input selection module. Based on Selection.js,
38801 * but modified to be suitable for react and has a couple of bug fixes (doesn't
38802 * assume buttons have range selections allowed).
38803 * Input selection module for React.
38804 */
38805
38806/**
38807 * @hasSelectionCapabilities: we get the element types that support selection
38808 * from https://html.spec.whatwg.org/#do-not-apply, looking at `selectionStart`
38809 * and `selectionEnd` rows.
38810 */
38811
38812
38813function hasSelectionCapabilities(elem) {
38814  var nodeName = elem && elem.nodeName && elem.nodeName.toLowerCase();
38815  return nodeName && (nodeName === 'input' && (elem.type === 'text' || elem.type === 'search' || elem.type === 'tel' || elem.type === 'url' || elem.type === 'password') || nodeName === 'textarea' || elem.contentEditable === 'true');
38816}
38817function getSelectionInformation() {
38818  var focusedElem = getActiveElementDeep();
38819  return {
38820    focusedElem: focusedElem,
38821    selectionRange: hasSelectionCapabilities(focusedElem) ? getSelection(focusedElem) : null
38822  };
38823}
38824/**
38825 * @restoreSelection: If any selection information was potentially lost,
38826 * restore it. This is useful when performing operations that could remove dom
38827 * nodes and place them back in, resulting in focus being lost.
38828 */
38829
38830function restoreSelection(priorSelectionInformation) {
38831  var curFocusedElem = getActiveElementDeep();
38832  var priorFocusedElem = priorSelectionInformation.focusedElem;
38833  var priorSelectionRange = priorSelectionInformation.selectionRange;
38834
38835  if (curFocusedElem !== priorFocusedElem && isInDocument(priorFocusedElem)) {
38836    if (priorSelectionRange !== null && hasSelectionCapabilities(priorFocusedElem)) {
38837      setSelection(priorFocusedElem, priorSelectionRange);
38838    } // Focusing a node can change the scroll position, which is undesirable
38839
38840
38841    var ancestors = [];
38842    var ancestor = priorFocusedElem;
38843
38844    while (ancestor = ancestor.parentNode) {
38845      if (ancestor.nodeType === ELEMENT_NODE) {
38846        ancestors.push({
38847          element: ancestor,
38848          left: ancestor.scrollLeft,
38849          top: ancestor.scrollTop
38850        });
38851      }
38852    }
38853
38854    if (typeof priorFocusedElem.focus === 'function') {
38855      priorFocusedElem.focus();
38856    }
38857
38858    for (var i = 0; i < ancestors.length; i++) {
38859      var info = ancestors[i];
38860      info.element.scrollLeft = info.left;
38861      info.element.scrollTop = info.top;
38862    }
38863  }
38864}
38865/**
38866 * @getSelection: Gets the selection bounds of a focused textarea, input or
38867 * contentEditable node.
38868 * -@input: Look up selection bounds of this input
38869 * -@return {start: selectionStart, end: selectionEnd}
38870 */
38871
38872function getSelection(input) {
38873  var selection;
38874
38875  if ('selectionStart' in input) {
38876    // Modern browser with input or textarea.
38877    selection = {
38878      start: input.selectionStart,
38879      end: input.selectionEnd
38880    };
38881  } else {
38882    // Content editable or old IE textarea.
38883    selection = getOffsets(input);
38884  }
38885
38886  return selection || {
38887    start: 0,
38888    end: 0
38889  };
38890}
38891/**
38892 * @setSelection: Sets the selection bounds of a textarea or input and focuses
38893 * the input.
38894 * -@input     Set selection bounds of this input or textarea
38895 * -@offsets   Object of same form that is returned from get*
38896 */
38897
38898function setSelection(input, offsets) {
38899  var start = offsets.start;
38900  var end = offsets.end;
38901
38902  if (end === undefined) {
38903    end = start;
38904  }
38905
38906  if ('selectionStart' in input) {
38907    input.selectionStart = start;
38908    input.selectionEnd = Math.min(end, input.value.length);
38909  } else {
38910    setOffsets(input, offsets);
38911  }
38912}
38913
38914var skipSelectionChangeEvent = canUseDOM && 'documentMode' in document && document.documentMode <= 11;
38915
38916function registerEvents$3() {
38917  registerTwoPhaseEvent('onSelect', ['focusout', 'contextmenu', 'dragend', 'focusin', 'keydown', 'keyup', 'mousedown', 'mouseup', 'selectionchange']);
38918}
38919
38920var activeElement$1 = null;
38921var activeElementInst$1 = null;
38922var lastSelection = null;
38923var mouseDown = false;
38924/**
38925 * Get an object which is a unique representation of the current selection.
38926 *
38927 * The return value will not be consistent across nodes or browsers, but
38928 * two identical selections on the same node will return identical objects.
38929 */
38930
38931function getSelection$1(node) {
38932  if ('selectionStart' in node && hasSelectionCapabilities(node)) {
38933    return {
38934      start: node.selectionStart,
38935      end: node.selectionEnd
38936    };
38937  } else {
38938    var win = node.ownerDocument && node.ownerDocument.defaultView || window;
38939    var selection = win.getSelection();
38940    return {
38941      anchorNode: selection.anchorNode,
38942      anchorOffset: selection.anchorOffset,
38943      focusNode: selection.focusNode,
38944      focusOffset: selection.focusOffset
38945    };
38946  }
38947}
38948/**
38949 * Get document associated with the event target.
38950 */
38951
38952
38953function getEventTargetDocument(eventTarget) {
38954  return eventTarget.window === eventTarget ? eventTarget.document : eventTarget.nodeType === DOCUMENT_NODE ? eventTarget : eventTarget.ownerDocument;
38955}
38956/**
38957 * Poll selection to see whether it's changed.
38958 *
38959 * @param {object} nativeEvent
38960 * @param {object} nativeEventTarget
38961 * @return {?SyntheticEvent}
38962 */
38963
38964
38965function constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget) {
38966  // Ensure we have the right element, and that the user is not dragging a
38967  // selection (this matches native `select` event behavior). In HTML5, select
38968  // fires only on input and textarea thus if there's no focused element we
38969  // won't dispatch.
38970  var doc = getEventTargetDocument(nativeEventTarget);
38971
38972  if (mouseDown || activeElement$1 == null || activeElement$1 !== getActiveElement(doc)) {
38973    return;
38974  } // Only fire when selection has actually changed.
38975
38976
38977  var currentSelection = getSelection$1(activeElement$1);
38978
38979  if (!lastSelection || !shallowEqual(lastSelection, currentSelection)) {
38980    lastSelection = currentSelection;
38981    var listeners = accumulateTwoPhaseListeners(activeElementInst$1, 'onSelect');
38982
38983    if (listeners.length > 0) {
38984      var event = new SyntheticEvent('onSelect', 'select', null, nativeEvent, nativeEventTarget);
38985      dispatchQueue.push({
38986        event: event,
38987        listeners: listeners
38988      });
38989      event.target = activeElement$1;
38990    }
38991  }
38992}
38993/**
38994 * This plugin creates an `onSelect` event that normalizes select events
38995 * across form elements.
38996 *
38997 * Supported elements are:
38998 * - input (see `isTextInputElement`)
38999 * - textarea
39000 * - contentEditable
39001 *
39002 * This differs from native browser implementations in the following ways:
39003 * - Fires on contentEditable fields as well as inputs.
39004 * - Fires for collapsed selection.
39005 * - Fires after user input.
39006 */
39007
39008
39009function extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
39010
39011  var targetNode = targetInst ? getNodeFromInstance(targetInst) : window;
39012
39013  switch (domEventName) {
39014    // Track the input node that has focus.
39015    case 'focusin':
39016      if (isTextInputElement(targetNode) || targetNode.contentEditable === 'true') {
39017        activeElement$1 = targetNode;
39018        activeElementInst$1 = targetInst;
39019        lastSelection = null;
39020      }
39021
39022      break;
39023
39024    case 'focusout':
39025      activeElement$1 = null;
39026      activeElementInst$1 = null;
39027      lastSelection = null;
39028      break;
39029    // Don't fire the event while the user is dragging. This matches the
39030    // semantics of the native select event.
39031
39032    case 'mousedown':
39033      mouseDown = true;
39034      break;
39035
39036    case 'contextmenu':
39037    case 'mouseup':
39038    case 'dragend':
39039      mouseDown = false;
39040      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
39041      break;
39042    // Chrome and IE fire non-standard event when selection is changed (and
39043    // sometimes when it hasn't). IE's event fires out of order with respect
39044    // to key and input events on deletion, so we discard it.
39045    //
39046    // Firefox doesn't support selectionchange, so check selection status
39047    // after each key entry. The selection changes after keydown and before
39048    // keyup, but we check on keydown as well in the case of holding down a
39049    // key, when multiple keydown events are fired but only one keyup is.
39050    // This is also our approach for IE handling, for the reason above.
39051
39052    case 'selectionchange':
39053      if (skipSelectionChangeEvent) {
39054        break;
39055      }
39056
39057    // falls through
39058
39059    case 'keydown':
39060    case 'keyup':
39061      constructSelectEvent(dispatchQueue, nativeEvent, nativeEventTarget);
39062  }
39063}
39064
39065function extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
39066  var reactName = topLevelEventsToReactNames.get(domEventName);
39067
39068  if (reactName === undefined) {
39069    return;
39070  }
39071
39072  var SyntheticEventCtor = SyntheticEvent;
39073  var reactEventType = domEventName;
39074
39075  switch (domEventName) {
39076    case 'keypress':
39077      // Firefox creates a keypress event for function keys too. This removes
39078      // the unwanted keypress events. Enter is however both printable and
39079      // non-printable. One would expect Tab to be as well (but it isn't).
39080      if (getEventCharCode(nativeEvent) === 0) {
39081        return;
39082      }
39083
39084    /* falls through */
39085
39086    case 'keydown':
39087    case 'keyup':
39088      SyntheticEventCtor = SyntheticKeyboardEvent;
39089      break;
39090
39091    case 'focusin':
39092      reactEventType = 'focus';
39093      SyntheticEventCtor = SyntheticFocusEvent;
39094      break;
39095
39096    case 'focusout':
39097      reactEventType = 'blur';
39098      SyntheticEventCtor = SyntheticFocusEvent;
39099      break;
39100
39101    case 'beforeblur':
39102    case 'afterblur':
39103      SyntheticEventCtor = SyntheticFocusEvent;
39104      break;
39105
39106    case 'click':
39107      // Firefox creates a click event on right mouse clicks. This removes the
39108      // unwanted click events.
39109      if (nativeEvent.button === 2) {
39110        return;
39111      }
39112
39113    /* falls through */
39114
39115    case 'auxclick':
39116    case 'dblclick':
39117    case 'mousedown':
39118    case 'mousemove':
39119    case 'mouseup': // TODO: Disabled elements should not respond to mouse events
39120
39121    /* falls through */
39122
39123    case 'mouseout':
39124    case 'mouseover':
39125    case 'contextmenu':
39126      SyntheticEventCtor = SyntheticMouseEvent;
39127      break;
39128
39129    case 'drag':
39130    case 'dragend':
39131    case 'dragenter':
39132    case 'dragexit':
39133    case 'dragleave':
39134    case 'dragover':
39135    case 'dragstart':
39136    case 'drop':
39137      SyntheticEventCtor = SyntheticDragEvent;
39138      break;
39139
39140    case 'touchcancel':
39141    case 'touchend':
39142    case 'touchmove':
39143    case 'touchstart':
39144      SyntheticEventCtor = SyntheticTouchEvent;
39145      break;
39146
39147    case ANIMATION_END:
39148    case ANIMATION_ITERATION:
39149    case ANIMATION_START:
39150      SyntheticEventCtor = SyntheticAnimationEvent;
39151      break;
39152
39153    case TRANSITION_END:
39154      SyntheticEventCtor = SyntheticTransitionEvent;
39155      break;
39156
39157    case 'scroll':
39158      SyntheticEventCtor = SyntheticUIEvent;
39159      break;
39160
39161    case 'wheel':
39162      SyntheticEventCtor = SyntheticWheelEvent;
39163      break;
39164
39165    case 'copy':
39166    case 'cut':
39167    case 'paste':
39168      SyntheticEventCtor = SyntheticClipboardEvent;
39169      break;
39170
39171    case 'gotpointercapture':
39172    case 'lostpointercapture':
39173    case 'pointercancel':
39174    case 'pointerdown':
39175    case 'pointermove':
39176    case 'pointerout':
39177    case 'pointerover':
39178    case 'pointerup':
39179      SyntheticEventCtor = SyntheticPointerEvent;
39180      break;
39181  }
39182
39183  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;
39184
39185  {
39186    // Some events don't bubble in the browser.
39187    // In the past, React has always bubbled them, but this can be surprising.
39188    // We're going to try aligning closer to the browser behavior by not bubbling
39189    // them in React either. We'll start by not bubbling onScroll, and then expand.
39190    var accumulateTargetOnly = !inCapturePhase && // TODO: ideally, we'd eventually add all events from
39191    // nonDelegatedEvents list in DOMPluginEventSystem.
39192    // Then we can remove this special list.
39193    // This is a breaking change that can wait until React 18.
39194    domEventName === 'scroll';
39195
39196    var _listeners = accumulateSinglePhaseListeners(targetInst, reactName, nativeEvent.type, inCapturePhase, accumulateTargetOnly);
39197
39198    if (_listeners.length > 0) {
39199      // Intentionally create event lazily.
39200      var _event = new SyntheticEventCtor(reactName, reactEventType, null, nativeEvent, nativeEventTarget);
39201
39202      dispatchQueue.push({
39203        event: _event,
39204        listeners: _listeners
39205      });
39206    }
39207  }
39208}
39209
39210// TODO: remove top-level side effect.
39211registerSimpleEvents();
39212registerEvents$2();
39213registerEvents$1();
39214registerEvents$3();
39215registerEvents();
39216
39217function extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags, targetContainer) {
39218  // TODO: we should remove the concept of a "SimpleEventPlugin".
39219  // This is the basic functionality of the event system. All
39220  // the other plugins are essentially polyfills. So the plugin
39221  // should probably be inlined somewhere and have its logic
39222  // be core the to event system. This would potentially allow
39223  // us to ship builds of React without the polyfilled plugins below.
39224  extractEvents$4(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
39225  var shouldProcessPolyfillPlugins = (eventSystemFlags & SHOULD_NOT_PROCESS_POLYFILL_EVENT_PLUGINS) === 0; // We don't process these events unless we are in the
39226  // event's native "bubble" phase, which means that we're
39227  // not in the capture phase. That's because we emulate
39228  // the capture phase here still. This is a trade-off,
39229  // because in an ideal world we would not emulate and use
39230  // the phases properly, like we do with the SimpleEvent
39231  // plugin. However, the plugins below either expect
39232  // emulation (EnterLeave) or use state localized to that
39233  // plugin (BeforeInput, Change, Select). The state in
39234  // these modules complicates things, as you'll essentially
39235  // get the case where the capture phase event might change
39236  // state, only for the following bubble event to come in
39237  // later and not trigger anything as the state now
39238  // invalidates the heuristics of the event plugin. We
39239  // could alter all these plugins to work in such ways, but
39240  // that might cause other unknown side-effects that we
39241  // can't forsee right now.
39242
39243  if (shouldProcessPolyfillPlugins) {
39244    extractEvents$2(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
39245    extractEvents$1(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
39246    extractEvents$3(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
39247    extractEvents(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget);
39248  }
39249} // List of events that need to be individually attached to media elements.
39250
39251
39252var mediaEventTypes = ['abort', 'canplay', 'canplaythrough', 'durationchange', 'emptied', 'encrypted', 'ended', 'error', 'loadeddata', 'loadedmetadata', 'loadstart', 'pause', 'play', 'playing', 'progress', 'ratechange', 'seeked', 'seeking', 'stalled', 'suspend', 'timeupdate', 'volumechange', 'waiting']; // We should not delegate these events to the container, but rather
39253// set them on the actual target element itself. This is primarily
39254// because these events do not consistently bubble in the DOM.
39255
39256var nonDelegatedEvents = new Set(['cancel', 'close', 'invalid', 'load', 'scroll', 'toggle'].concat(mediaEventTypes));
39257
39258function executeDispatch(event, listener, currentTarget) {
39259  var type = event.type || 'unknown-event';
39260  event.currentTarget = currentTarget;
39261  invokeGuardedCallbackAndCatchFirstError(type, listener, undefined, event);
39262  event.currentTarget = null;
39263}
39264
39265function processDispatchQueueItemsInOrder(event, dispatchListeners, inCapturePhase) {
39266  var previousInstance;
39267
39268  if (inCapturePhase) {
39269    for (var i = dispatchListeners.length - 1; i >= 0; i--) {
39270      var _dispatchListeners$i = dispatchListeners[i],
39271          instance = _dispatchListeners$i.instance,
39272          currentTarget = _dispatchListeners$i.currentTarget,
39273          listener = _dispatchListeners$i.listener;
39274
39275      if (instance !== previousInstance && event.isPropagationStopped()) {
39276        return;
39277      }
39278
39279      executeDispatch(event, listener, currentTarget);
39280      previousInstance = instance;
39281    }
39282  } else {
39283    for (var _i = 0; _i < dispatchListeners.length; _i++) {
39284      var _dispatchListeners$_i = dispatchListeners[_i],
39285          _instance = _dispatchListeners$_i.instance,
39286          _currentTarget = _dispatchListeners$_i.currentTarget,
39287          _listener = _dispatchListeners$_i.listener;
39288
39289      if (_instance !== previousInstance && event.isPropagationStopped()) {
39290        return;
39291      }
39292
39293      executeDispatch(event, _listener, _currentTarget);
39294      previousInstance = _instance;
39295    }
39296  }
39297}
39298
39299function processDispatchQueue(dispatchQueue, eventSystemFlags) {
39300  var inCapturePhase = (eventSystemFlags & IS_CAPTURE_PHASE) !== 0;
39301
39302  for (var i = 0; i < dispatchQueue.length; i++) {
39303    var _dispatchQueue$i = dispatchQueue[i],
39304        event = _dispatchQueue$i.event,
39305        listeners = _dispatchQueue$i.listeners;
39306    processDispatchQueueItemsInOrder(event, listeners, inCapturePhase); //  event system doesn't use pooling.
39307  } // This would be a good time to rethrow if any of the event handlers threw.
39308
39309
39310  rethrowCaughtError();
39311}
39312
39313function dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {
39314  var nativeEventTarget = getEventTarget(nativeEvent);
39315  var dispatchQueue = [];
39316  extractEvents$5(dispatchQueue, domEventName, targetInst, nativeEvent, nativeEventTarget, eventSystemFlags);
39317  processDispatchQueue(dispatchQueue, eventSystemFlags);
39318}
39319
39320function listenToNonDelegatedEvent(domEventName, targetElement) {
39321  var isCapturePhaseListener = false;
39322  var listenerSet = getEventListenerSet(targetElement);
39323  var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener);
39324
39325  if (!listenerSet.has(listenerSetKey)) {
39326    addTrappedEventListener(targetElement, domEventName, IS_NON_DELEGATED, isCapturePhaseListener);
39327    listenerSet.add(listenerSetKey);
39328  }
39329}
39330var listeningMarker = '_reactListening' + Math.random().toString(36).slice(2);
39331function listenToAllSupportedEvents(rootContainerElement) {
39332  {
39333    if (rootContainerElement[listeningMarker]) {
39334      // Performance optimization: don't iterate through events
39335      // for the same portal container or root node more than once.
39336      // TODO: once we remove the flag, we may be able to also
39337      // remove some of the bookkeeping maps used for laziness.
39338      return;
39339    }
39340
39341    rootContainerElement[listeningMarker] = true;
39342    allNativeEvents.forEach(function (domEventName) {
39343      if (!nonDelegatedEvents.has(domEventName)) {
39344        listenToNativeEvent(domEventName, false, rootContainerElement, null);
39345      }
39346
39347      listenToNativeEvent(domEventName, true, rootContainerElement, null);
39348    });
39349  }
39350}
39351function listenToNativeEvent(domEventName, isCapturePhaseListener, rootContainerElement, targetElement) {
39352  var eventSystemFlags = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : 0;
39353  var target = rootContainerElement; // selectionchange needs to be attached to the document
39354  // otherwise it won't capture incoming events that are only
39355  // triggered on the document directly.
39356
39357  if (domEventName === 'selectionchange' && rootContainerElement.nodeType !== DOCUMENT_NODE) {
39358    target = rootContainerElement.ownerDocument;
39359  } // If the event can be delegated (or is capture phase), we can
39360  // register it to the root container. Otherwise, we should
39361  // register the event to the target element and mark it as
39362  // a non-delegated event.
39363
39364
39365  if (targetElement !== null && !isCapturePhaseListener && nonDelegatedEvents.has(domEventName)) {
39366    // For all non-delegated events, apart from scroll, we attach
39367    // their event listeners to the respective elements that their
39368    // events fire on. That means we can skip this step, as event
39369    // listener has already been added previously. However, we
39370    // special case the scroll event because the reality is that any
39371    // element can scroll.
39372    // TODO: ideally, we'd eventually apply the same logic to all
39373    // events from the nonDelegatedEvents list. Then we can remove
39374    // this special case and use the same logic for all events.
39375    if (domEventName !== 'scroll') {
39376      return;
39377    }
39378
39379    eventSystemFlags |= IS_NON_DELEGATED;
39380    target = targetElement;
39381  }
39382
39383  var listenerSet = getEventListenerSet(target);
39384  var listenerSetKey = getListenerSetKey(domEventName, isCapturePhaseListener); // If the listener entry is empty or we should upgrade, then
39385  // we need to trap an event listener onto the target.
39386
39387  if (!listenerSet.has(listenerSetKey)) {
39388    if (isCapturePhaseListener) {
39389      eventSystemFlags |= IS_CAPTURE_PHASE;
39390    }
39391
39392    addTrappedEventListener(target, domEventName, eventSystemFlags, isCapturePhaseListener);
39393    listenerSet.add(listenerSetKey);
39394  }
39395}
39396
39397function addTrappedEventListener(targetContainer, domEventName, eventSystemFlags, isCapturePhaseListener, isDeferredListenerForLegacyFBSupport) {
39398  var listener = createEventListenerWrapperWithPriority(targetContainer, domEventName, eventSystemFlags); // If passive option is not supported, then the event will be
39399  // active and not passive.
39400
39401  var isPassiveListener = undefined;
39402
39403  if (passiveBrowserEventsSupported) {
39404    // Browsers introduced an intervention, making these events
39405    // passive by default on document. React doesn't bind them
39406    // to document anymore, but changing this now would undo
39407    // the performance wins from the change. So we emulate
39408    // the existing behavior manually on the roots now.
39409    // https://github.com/facebook/react/issues/19651
39410    if (domEventName === 'touchstart' || domEventName === 'touchmove' || domEventName === 'wheel') {
39411      isPassiveListener = true;
39412    }
39413  }
39414
39415  targetContainer =  targetContainer;
39416  var unsubscribeListener; // When legacyFBSupport is enabled, it's for when we
39417
39418
39419  if (isCapturePhaseListener) {
39420    if (isPassiveListener !== undefined) {
39421      unsubscribeListener = addEventCaptureListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);
39422    } else {
39423      unsubscribeListener = addEventCaptureListener(targetContainer, domEventName, listener);
39424    }
39425  } else {
39426    if (isPassiveListener !== undefined) {
39427      unsubscribeListener = addEventBubbleListenerWithPassiveFlag(targetContainer, domEventName, listener, isPassiveListener);
39428    } else {
39429      unsubscribeListener = addEventBubbleListener(targetContainer, domEventName, listener);
39430    }
39431  }
39432}
39433
39434function isMatchingRootContainer(grandContainer, targetContainer) {
39435  return grandContainer === targetContainer || grandContainer.nodeType === COMMENT_NODE && grandContainer.parentNode === targetContainer;
39436}
39437
39438function dispatchEventForPluginEventSystem(domEventName, eventSystemFlags, nativeEvent, targetInst, targetContainer) {
39439  var ancestorInst = targetInst;
39440
39441  if ((eventSystemFlags & IS_EVENT_HANDLE_NON_MANAGED_NODE) === 0 && (eventSystemFlags & IS_NON_DELEGATED) === 0) {
39442    var targetContainerNode = targetContainer; // If we are using the legacy FB support flag, we
39443
39444    if (targetInst !== null) {
39445      // The below logic attempts to work out if we need to change
39446      // the target fiber to a different ancestor. We had similar logic
39447      // in the legacy event system, except the big difference between
39448      // systems is that the modern event system now has an event listener
39449      // attached to each React Root and React Portal Root. Together,
39450      // the DOM nodes representing these roots are the "rootContainer".
39451      // To figure out which ancestor instance we should use, we traverse
39452      // up the fiber tree from the target instance and attempt to find
39453      // root boundaries that match that of our current "rootContainer".
39454      // If we find that "rootContainer", we find the parent fiber
39455      // sub-tree for that root and make that our ancestor instance.
39456      var node = targetInst;
39457
39458      mainLoop: while (true) {
39459        if (node === null) {
39460          return;
39461        }
39462
39463        var nodeTag = node.tag;
39464
39465        if (nodeTag === HostRoot || nodeTag === HostPortal) {
39466          var container = node.stateNode.containerInfo;
39467
39468          if (isMatchingRootContainer(container, targetContainerNode)) {
39469            break;
39470          }
39471
39472          if (nodeTag === HostPortal) {
39473            // The target is a portal, but it's not the rootContainer we're looking for.
39474            // Normally portals handle their own events all the way down to the root.
39475            // So we should be able to stop now. However, we don't know if this portal
39476            // was part of *our* root.
39477            var grandNode = node.return;
39478
39479            while (grandNode !== null) {
39480              var grandTag = grandNode.tag;
39481
39482              if (grandTag === HostRoot || grandTag === HostPortal) {
39483                var grandContainer = grandNode.stateNode.containerInfo;
39484
39485                if (isMatchingRootContainer(grandContainer, targetContainerNode)) {
39486                  // This is the rootContainer we're looking for and we found it as
39487                  // a parent of the Portal. That means we can ignore it because the
39488                  // Portal will bubble through to us.
39489                  return;
39490                }
39491              }
39492
39493              grandNode = grandNode.return;
39494            }
39495          } // Now we need to find it's corresponding host fiber in the other
39496          // tree. To do this we can use getClosestInstanceFromNode, but we
39497          // need to validate that the fiber is a host instance, otherwise
39498          // we need to traverse up through the DOM till we find the correct
39499          // node that is from the other tree.
39500
39501
39502          while (container !== null) {
39503            var parentNode = getClosestInstanceFromNode(container);
39504
39505            if (parentNode === null) {
39506              return;
39507            }
39508
39509            var parentTag = parentNode.tag;
39510
39511            if (parentTag === HostComponent || parentTag === HostText) {
39512              node = ancestorInst = parentNode;
39513              continue mainLoop;
39514            }
39515
39516            container = container.parentNode;
39517          }
39518        }
39519
39520        node = node.return;
39521      }
39522    }
39523  }
39524
39525  batchedEventUpdates(function () {
39526    return dispatchEventsForPlugins(domEventName, eventSystemFlags, nativeEvent, ancestorInst);
39527  });
39528}
39529
39530function createDispatchListener(instance, listener, currentTarget) {
39531  return {
39532    instance: instance,
39533    listener: listener,
39534    currentTarget: currentTarget
39535  };
39536}
39537
39538function accumulateSinglePhaseListeners(targetFiber, reactName, nativeEventType, inCapturePhase, accumulateTargetOnly) {
39539  var captureName = reactName !== null ? reactName + 'Capture' : null;
39540  var reactEventName = inCapturePhase ? captureName : reactName;
39541  var listeners = [];
39542  var instance = targetFiber;
39543  var lastHostComponent = null; // Accumulate all instances and listeners via the target -> root path.
39544
39545  while (instance !== null) {
39546    var _instance2 = instance,
39547        stateNode = _instance2.stateNode,
39548        tag = _instance2.tag; // Handle listeners that are on HostComponents (i.e. <div>)
39549
39550    if (tag === HostComponent && stateNode !== null) {
39551      lastHostComponent = stateNode; // createEventHandle listeners
39552
39553
39554      if (reactEventName !== null) {
39555        var listener = getListener(instance, reactEventName);
39556
39557        if (listener != null) {
39558          listeners.push(createDispatchListener(instance, listener, lastHostComponent));
39559        }
39560      }
39561    } // If we are only accumulating events for the target, then we don't
39562    // continue to propagate through the React fiber tree to find other
39563    // listeners.
39564
39565
39566    if (accumulateTargetOnly) {
39567      break;
39568    }
39569
39570    instance = instance.return;
39571  }
39572
39573  return listeners;
39574} // We should only use this function for:
39575// - BeforeInputEventPlugin
39576// - ChangeEventPlugin
39577// - SelectEventPlugin
39578// This is because we only process these plugins
39579// in the bubble phase, so we need to accumulate two
39580// phase event listeners (via emulation).
39581
39582function accumulateTwoPhaseListeners(targetFiber, reactName) {
39583  var captureName = reactName + 'Capture';
39584  var listeners = [];
39585  var instance = targetFiber; // Accumulate all instances and listeners via the target -> root path.
39586
39587  while (instance !== null) {
39588    var _instance3 = instance,
39589        stateNode = _instance3.stateNode,
39590        tag = _instance3.tag; // Handle listeners that are on HostComponents (i.e. <div>)
39591
39592    if (tag === HostComponent && stateNode !== null) {
39593      var currentTarget = stateNode;
39594      var captureListener = getListener(instance, captureName);
39595
39596      if (captureListener != null) {
39597        listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));
39598      }
39599
39600      var bubbleListener = getListener(instance, reactName);
39601
39602      if (bubbleListener != null) {
39603        listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));
39604      }
39605    }
39606
39607    instance = instance.return;
39608  }
39609
39610  return listeners;
39611}
39612
39613function getParent(inst) {
39614  if (inst === null) {
39615    return null;
39616  }
39617
39618  do {
39619    inst = inst.return; // TODO: If this is a HostRoot we might want to bail out.
39620    // That is depending on if we want nested subtrees (layers) to bubble
39621    // events to their parent. We could also go through parentNode on the
39622    // host node but that wouldn't work for React Native and doesn't let us
39623    // do the portal feature.
39624  } while (inst && inst.tag !== HostComponent);
39625
39626  if (inst) {
39627    return inst;
39628  }
39629
39630  return null;
39631}
39632/**
39633 * Return the lowest common ancestor of A and B, or null if they are in
39634 * different trees.
39635 */
39636
39637
39638function getLowestCommonAncestor(instA, instB) {
39639  var nodeA = instA;
39640  var nodeB = instB;
39641  var depthA = 0;
39642
39643  for (var tempA = nodeA; tempA; tempA = getParent(tempA)) {
39644    depthA++;
39645  }
39646
39647  var depthB = 0;
39648
39649  for (var tempB = nodeB; tempB; tempB = getParent(tempB)) {
39650    depthB++;
39651  } // If A is deeper, crawl up.
39652
39653
39654  while (depthA - depthB > 0) {
39655    nodeA = getParent(nodeA);
39656    depthA--;
39657  } // If B is deeper, crawl up.
39658
39659
39660  while (depthB - depthA > 0) {
39661    nodeB = getParent(nodeB);
39662    depthB--;
39663  } // Walk in lockstep until we find a match.
39664
39665
39666  var depth = depthA;
39667
39668  while (depth--) {
39669    if (nodeA === nodeB || nodeB !== null && nodeA === nodeB.alternate) {
39670      return nodeA;
39671    }
39672
39673    nodeA = getParent(nodeA);
39674    nodeB = getParent(nodeB);
39675  }
39676
39677  return null;
39678}
39679
39680function accumulateEnterLeaveListenersForEvent(dispatchQueue, event, target, common, inCapturePhase) {
39681  var registrationName = event._reactName;
39682  var listeners = [];
39683  var instance = target;
39684
39685  while (instance !== null) {
39686    if (instance === common) {
39687      break;
39688    }
39689
39690    var _instance4 = instance,
39691        alternate = _instance4.alternate,
39692        stateNode = _instance4.stateNode,
39693        tag = _instance4.tag;
39694
39695    if (alternate !== null && alternate === common) {
39696      break;
39697    }
39698
39699    if (tag === HostComponent && stateNode !== null) {
39700      var currentTarget = stateNode;
39701
39702      if (inCapturePhase) {
39703        var captureListener = getListener(instance, registrationName);
39704
39705        if (captureListener != null) {
39706          listeners.unshift(createDispatchListener(instance, captureListener, currentTarget));
39707        }
39708      } else if (!inCapturePhase) {
39709        var bubbleListener = getListener(instance, registrationName);
39710
39711        if (bubbleListener != null) {
39712          listeners.push(createDispatchListener(instance, bubbleListener, currentTarget));
39713        }
39714      }
39715    }
39716
39717    instance = instance.return;
39718  }
39719
39720  if (listeners.length !== 0) {
39721    dispatchQueue.push({
39722      event: event,
39723      listeners: listeners
39724    });
39725  }
39726} // We should only use this function for:
39727// - EnterLeaveEventPlugin
39728// This is because we only process this plugin
39729// in the bubble phase, so we need to accumulate two
39730// phase event listeners.
39731
39732
39733function accumulateEnterLeaveTwoPhaseListeners(dispatchQueue, leaveEvent, enterEvent, from, to) {
39734  var common = from && to ? getLowestCommonAncestor(from, to) : null;
39735
39736  if (from !== null) {
39737    accumulateEnterLeaveListenersForEvent(dispatchQueue, leaveEvent, from, common, false);
39738  }
39739
39740  if (to !== null && enterEvent !== null) {
39741    accumulateEnterLeaveListenersForEvent(dispatchQueue, enterEvent, to, common, true);
39742  }
39743}
39744function getListenerSetKey(domEventName, capture) {
39745  return domEventName + "__" + (capture ? 'capture' : 'bubble');
39746}
39747
39748var didWarnInvalidHydration = false;
39749var DANGEROUSLY_SET_INNER_HTML = 'dangerouslySetInnerHTML';
39750var SUPPRESS_CONTENT_EDITABLE_WARNING = 'suppressContentEditableWarning';
39751var SUPPRESS_HYDRATION_WARNING = 'suppressHydrationWarning';
39752var AUTOFOCUS = 'autoFocus';
39753var CHILDREN = 'children';
39754var STYLE = 'style';
39755var HTML$1 = '__html';
39756var HTML_NAMESPACE$1 = Namespaces.html;
39757var warnedUnknownTags;
39758var suppressHydrationWarning;
39759var validatePropertiesInDevelopment;
39760var warnForTextDifference;
39761var warnForPropDifference;
39762var warnForExtraAttributes;
39763var warnForInvalidEventListener;
39764var canDiffStyleForHydrationWarning;
39765var normalizeMarkupForTextOrAttribute;
39766var normalizeHTML;
39767
39768{
39769  warnedUnknownTags = {
39770    // There are working polyfills for <dialog>. Let people use it.
39771    dialog: true,
39772    // Electron ships a custom <webview> tag to display external web content in
39773    // an isolated frame and process.
39774    // This tag is not present in non Electron environments such as JSDom which
39775    // is often used for testing purposes.
39776    // @see https://electronjs.org/docs/api/webview-tag
39777    webview: true
39778  };
39779
39780  validatePropertiesInDevelopment = function (type, props) {
39781    validateProperties(type, props);
39782    validateProperties$1(type, props);
39783    validateProperties$2(type, props, {
39784      registrationNameDependencies: registrationNameDependencies,
39785      possibleRegistrationNames: possibleRegistrationNames
39786    });
39787  }; // IE 11 parses & normalizes the style attribute as opposed to other
39788  // browsers. It adds spaces and sorts the properties in some
39789  // non-alphabetical order. Handling that would require sorting CSS
39790  // properties in the client & server versions or applying
39791  // `expectedStyle` to a temporary DOM node to read its `style` attribute
39792  // normalized. Since it only affects IE, we're skipping style warnings
39793  // in that browser completely in favor of doing all that work.
39794  // See https://github.com/facebook/react/issues/11807
39795
39796
39797  canDiffStyleForHydrationWarning = canUseDOM && !document.documentMode; // HTML parsing normalizes CR and CRLF to LF.
39798  // It also can turn \u0000 into \uFFFD inside attributes.
39799  // https://www.w3.org/TR/html5/single-page.html#preprocessing-the-input-stream
39800  // If we have a mismatch, it might be caused by that.
39801  // We will still patch up in this case but not fire the warning.
39802
39803  var NORMALIZE_NEWLINES_REGEX = /\r\n?/g;
39804  var NORMALIZE_NULL_AND_REPLACEMENT_REGEX = /\u0000|\uFFFD/g;
39805
39806  normalizeMarkupForTextOrAttribute = function (markup) {
39807    var markupString = typeof markup === 'string' ? markup : '' + markup;
39808    return markupString.replace(NORMALIZE_NEWLINES_REGEX, '\n').replace(NORMALIZE_NULL_AND_REPLACEMENT_REGEX, '');
39809  };
39810
39811  warnForTextDifference = function (serverText, clientText) {
39812    if (didWarnInvalidHydration) {
39813      return;
39814    }
39815
39816    var normalizedClientText = normalizeMarkupForTextOrAttribute(clientText);
39817    var normalizedServerText = normalizeMarkupForTextOrAttribute(serverText);
39818
39819    if (normalizedServerText === normalizedClientText) {
39820      return;
39821    }
39822
39823    didWarnInvalidHydration = true;
39824
39825    error('Text content did not match. Server: "%s" Client: "%s"', normalizedServerText, normalizedClientText);
39826  };
39827
39828  warnForPropDifference = function (propName, serverValue, clientValue) {
39829    if (didWarnInvalidHydration) {
39830      return;
39831    }
39832
39833    var normalizedClientValue = normalizeMarkupForTextOrAttribute(clientValue);
39834    var normalizedServerValue = normalizeMarkupForTextOrAttribute(serverValue);
39835
39836    if (normalizedServerValue === normalizedClientValue) {
39837      return;
39838    }
39839
39840    didWarnInvalidHydration = true;
39841
39842    error('Prop `%s` did not match. Server: %s Client: %s', propName, JSON.stringify(normalizedServerValue), JSON.stringify(normalizedClientValue));
39843  };
39844
39845  warnForExtraAttributes = function (attributeNames) {
39846    if (didWarnInvalidHydration) {
39847      return;
39848    }
39849
39850    didWarnInvalidHydration = true;
39851    var names = [];
39852    attributeNames.forEach(function (name) {
39853      names.push(name);
39854    });
39855
39856    error('Extra attributes from the server: %s', names);
39857  };
39858
39859  warnForInvalidEventListener = function (registrationName, listener) {
39860    if (listener === false) {
39861      error('Expected `%s` listener to be a function, instead got `false`.\n\n' + 'If you used to conditionally omit it with %s={condition && value}, ' + 'pass %s={condition ? value : undefined} instead.', registrationName, registrationName, registrationName);
39862    } else {
39863      error('Expected `%s` listener to be a function, instead got a value of `%s` type.', registrationName, typeof listener);
39864    }
39865  }; // Parse the HTML and read it back to normalize the HTML string so that it
39866  // can be used for comparison.
39867
39868
39869  normalizeHTML = function (parent, html) {
39870    // We could have created a separate document here to avoid
39871    // re-initializing custom elements if they exist. But this breaks
39872    // how <noscript> is being handled. So we use the same document.
39873    // See the discussion in https://github.com/facebook/react/pull/11157.
39874    var testElement = parent.namespaceURI === HTML_NAMESPACE$1 ? parent.ownerDocument.createElement(parent.tagName) : parent.ownerDocument.createElementNS(parent.namespaceURI, parent.tagName);
39875    testElement.innerHTML = html;
39876    return testElement.innerHTML;
39877  };
39878}
39879
39880function getOwnerDocumentFromRootContainer(rootContainerElement) {
39881  return rootContainerElement.nodeType === DOCUMENT_NODE ? rootContainerElement : rootContainerElement.ownerDocument;
39882}
39883
39884function noop() {}
39885
39886function trapClickOnNonInteractiveElement(node) {
39887  // Mobile Safari does not fire properly bubble click events on
39888  // non-interactive elements, which means delegated click listeners do not
39889  // fire. The workaround for this bug involves attaching an empty click
39890  // listener on the target node.
39891  // https://www.quirksmode.org/blog/archives/2010/09/click_event_del.html
39892  // Just set it using the onclick property so that we don't have to manage any
39893  // bookkeeping for it. Not sure if we need to clear it when the listener is
39894  // removed.
39895  // TODO: Only do this for the relevant Safaris maybe?
39896  node.onclick = noop;
39897}
39898
39899function setInitialDOMProperties(tag, domElement, rootContainerElement, nextProps, isCustomComponentTag) {
39900  for (var propKey in nextProps) {
39901    if (!nextProps.hasOwnProperty(propKey)) {
39902      continue;
39903    }
39904
39905    var nextProp = nextProps[propKey];
39906
39907    if (propKey === STYLE) {
39908      {
39909        if (nextProp) {
39910          // Freeze the next style object so that we can assume it won't be
39911          // mutated. We have already warned for this in the past.
39912          Object.freeze(nextProp);
39913        }
39914      } // Relies on `updateStylesByID` not mutating `styleUpdates`.
39915
39916
39917      setValueForStyles(domElement, nextProp);
39918    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
39919      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
39920
39921      if (nextHtml != null) {
39922        setInnerHTML(domElement, nextHtml);
39923      }
39924    } else if (propKey === CHILDREN) {
39925      if (typeof nextProp === 'string') {
39926        // Avoid setting initial textContent when the text is empty. In IE11 setting
39927        // textContent on a <textarea> will cause the placeholder to not
39928        // show within the <textarea> until it has been focused and blurred again.
39929        // https://github.com/facebook/react/issues/6731#issuecomment-254874553
39930        var canSetTextContent = tag !== 'textarea' || nextProp !== '';
39931
39932        if (canSetTextContent) {
39933          setTextContent(domElement, nextProp);
39934        }
39935      } else if (typeof nextProp === 'number') {
39936        setTextContent(domElement, '' + nextProp);
39937      }
39938    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {
39939      if (nextProp != null) {
39940        if ( typeof nextProp !== 'function') {
39941          warnForInvalidEventListener(propKey, nextProp);
39942        }
39943
39944        if (propKey === 'onScroll') {
39945          listenToNonDelegatedEvent('scroll', domElement);
39946        }
39947      }
39948    } else if (nextProp != null) {
39949      setValueForProperty(domElement, propKey, nextProp, isCustomComponentTag);
39950    }
39951  }
39952}
39953
39954function updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag) {
39955  // TODO: Handle wasCustomComponentTag
39956  for (var i = 0; i < updatePayload.length; i += 2) {
39957    var propKey = updatePayload[i];
39958    var propValue = updatePayload[i + 1];
39959
39960    if (propKey === STYLE) {
39961      setValueForStyles(domElement, propValue);
39962    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
39963      setInnerHTML(domElement, propValue);
39964    } else if (propKey === CHILDREN) {
39965      setTextContent(domElement, propValue);
39966    } else {
39967      setValueForProperty(domElement, propKey, propValue, isCustomComponentTag);
39968    }
39969  }
39970}
39971
39972function createElement(type, props, rootContainerElement, parentNamespace) {
39973  var isCustomComponentTag; // We create tags in the namespace of their parent container, except HTML
39974  // tags get no namespace.
39975
39976  var ownerDocument = getOwnerDocumentFromRootContainer(rootContainerElement);
39977  var domElement;
39978  var namespaceURI = parentNamespace;
39979
39980  if (namespaceURI === HTML_NAMESPACE$1) {
39981    namespaceURI = getIntrinsicNamespace(type);
39982  }
39983
39984  if (namespaceURI === HTML_NAMESPACE$1) {
39985    {
39986      isCustomComponentTag = isCustomComponent(type, props); // Should this check be gated by parent namespace? Not sure we want to
39987      // allow <SVG> or <mATH>.
39988
39989      if (!isCustomComponentTag && type !== type.toLowerCase()) {
39990        error('<%s /> is using incorrect casing. ' + 'Use PascalCase for React components, ' + 'or lowercase for HTML elements.', type);
39991      }
39992    }
39993
39994    if (type === 'script') {
39995      // Create the script via .innerHTML so its "parser-inserted" flag is
39996      // set to true and it does not execute
39997      var div = ownerDocument.createElement('div');
39998
39999      div.innerHTML = '<script><' + '/script>'; // eslint-disable-line
40000      // This is guaranteed to yield a script element.
40001
40002      var firstChild = div.firstChild;
40003      domElement = div.removeChild(firstChild);
40004    } else if (typeof props.is === 'string') {
40005      // $FlowIssue `createElement` should be updated for Web Components
40006      domElement = ownerDocument.createElement(type, {
40007        is: props.is
40008      });
40009    } else {
40010      // Separate else branch instead of using `props.is || undefined` above because of a Firefox bug.
40011      // See discussion in https://github.com/facebook/react/pull/6896
40012      // and discussion in https://bugzilla.mozilla.org/show_bug.cgi?id=1276240
40013      domElement = ownerDocument.createElement(type); // Normally attributes are assigned in `setInitialDOMProperties`, however the `multiple` and `size`
40014      // attributes on `select`s needs to be added before `option`s are inserted.
40015      // This prevents:
40016      // - a bug where the `select` does not scroll to the correct option because singular
40017      //  `select` elements automatically pick the first item #13222
40018      // - a bug where the `select` set the first item as selected despite the `size` attribute #14239
40019      // See https://github.com/facebook/react/issues/13222
40020      // and https://github.com/facebook/react/issues/14239
40021
40022      if (type === 'select') {
40023        var node = domElement;
40024
40025        if (props.multiple) {
40026          node.multiple = true;
40027        } else if (props.size) {
40028          // Setting a size greater than 1 causes a select to behave like `multiple=true`, where
40029          // it is possible that no option is selected.
40030          //
40031          // This is only necessary when a select in "single selection mode".
40032          node.size = props.size;
40033        }
40034      }
40035    }
40036  } else {
40037    domElement = ownerDocument.createElementNS(namespaceURI, type);
40038  }
40039
40040  {
40041    if (namespaceURI === HTML_NAMESPACE$1) {
40042      if (!isCustomComponentTag && Object.prototype.toString.call(domElement) === '[object HTMLUnknownElement]' && !Object.prototype.hasOwnProperty.call(warnedUnknownTags, type)) {
40043        warnedUnknownTags[type] = true;
40044
40045        error('The tag <%s> is unrecognized in this browser. ' + 'If you meant to render a React component, start its name with ' + 'an uppercase letter.', type);
40046      }
40047    }
40048  }
40049
40050  return domElement;
40051}
40052function createTextNode(text, rootContainerElement) {
40053  return getOwnerDocumentFromRootContainer(rootContainerElement).createTextNode(text);
40054}
40055function setInitialProperties(domElement, tag, rawProps, rootContainerElement) {
40056  var isCustomComponentTag = isCustomComponent(tag, rawProps);
40057
40058  {
40059    validatePropertiesInDevelopment(tag, rawProps);
40060  } // TODO: Make sure that we check isMounted before firing any of these events.
40061
40062
40063  var props;
40064
40065  switch (tag) {
40066    case 'dialog':
40067      listenToNonDelegatedEvent('cancel', domElement);
40068      listenToNonDelegatedEvent('close', domElement);
40069      props = rawProps;
40070      break;
40071
40072    case 'iframe':
40073    case 'object':
40074    case 'embed':
40075      // We listen to this event in case to ensure emulated bubble
40076      // listeners still fire for the load event.
40077      listenToNonDelegatedEvent('load', domElement);
40078      props = rawProps;
40079      break;
40080
40081    case 'video':
40082    case 'audio':
40083      // We listen to these events in case to ensure emulated bubble
40084      // listeners still fire for all the media events.
40085      for (var i = 0; i < mediaEventTypes.length; i++) {
40086        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);
40087      }
40088
40089      props = rawProps;
40090      break;
40091
40092    case 'source':
40093      // We listen to this event in case to ensure emulated bubble
40094      // listeners still fire for the error event.
40095      listenToNonDelegatedEvent('error', domElement);
40096      props = rawProps;
40097      break;
40098
40099    case 'img':
40100    case 'image':
40101    case 'link':
40102      // We listen to these events in case to ensure emulated bubble
40103      // listeners still fire for error and load events.
40104      listenToNonDelegatedEvent('error', domElement);
40105      listenToNonDelegatedEvent('load', domElement);
40106      props = rawProps;
40107      break;
40108
40109    case 'details':
40110      // We listen to this event in case to ensure emulated bubble
40111      // listeners still fire for the toggle event.
40112      listenToNonDelegatedEvent('toggle', domElement);
40113      props = rawProps;
40114      break;
40115
40116    case 'input':
40117      initWrapperState(domElement, rawProps);
40118      props = getHostProps(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40119      // listeners still fire for the invalid event.
40120
40121      listenToNonDelegatedEvent('invalid', domElement);
40122
40123      break;
40124
40125    case 'option':
40126      validateProps(domElement, rawProps);
40127      props = getHostProps$1(domElement, rawProps);
40128      break;
40129
40130    case 'select':
40131      initWrapperState$1(domElement, rawProps);
40132      props = getHostProps$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40133      // listeners still fire for the invalid event.
40134
40135      listenToNonDelegatedEvent('invalid', domElement);
40136
40137      break;
40138
40139    case 'textarea':
40140      initWrapperState$2(domElement, rawProps);
40141      props = getHostProps$3(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40142      // listeners still fire for the invalid event.
40143
40144      listenToNonDelegatedEvent('invalid', domElement);
40145
40146      break;
40147
40148    default:
40149      props = rawProps;
40150  }
40151
40152  assertValidProps(tag, props);
40153  setInitialDOMProperties(tag, domElement, rootContainerElement, props, isCustomComponentTag);
40154
40155  switch (tag) {
40156    case 'input':
40157      // TODO: Make sure we check if this is still unmounted or do any clean
40158      // up necessary since we never stop tracking anymore.
40159      track(domElement);
40160      postMountWrapper(domElement, rawProps, false);
40161      break;
40162
40163    case 'textarea':
40164      // TODO: Make sure we check if this is still unmounted or do any clean
40165      // up necessary since we never stop tracking anymore.
40166      track(domElement);
40167      postMountWrapper$3(domElement);
40168      break;
40169
40170    case 'option':
40171      postMountWrapper$1(domElement, rawProps);
40172      break;
40173
40174    case 'select':
40175      postMountWrapper$2(domElement, rawProps);
40176      break;
40177
40178    default:
40179      if (typeof props.onClick === 'function') {
40180        // TODO: This cast may not be sound for SVG, MathML or custom elements.
40181        trapClickOnNonInteractiveElement(domElement);
40182      }
40183
40184      break;
40185  }
40186} // Calculate the diff between the two objects.
40187
40188function diffProperties(domElement, tag, lastRawProps, nextRawProps, rootContainerElement) {
40189  {
40190    validatePropertiesInDevelopment(tag, nextRawProps);
40191  }
40192
40193  var updatePayload = null;
40194  var lastProps;
40195  var nextProps;
40196
40197  switch (tag) {
40198    case 'input':
40199      lastProps = getHostProps(domElement, lastRawProps);
40200      nextProps = getHostProps(domElement, nextRawProps);
40201      updatePayload = [];
40202      break;
40203
40204    case 'option':
40205      lastProps = getHostProps$1(domElement, lastRawProps);
40206      nextProps = getHostProps$1(domElement, nextRawProps);
40207      updatePayload = [];
40208      break;
40209
40210    case 'select':
40211      lastProps = getHostProps$2(domElement, lastRawProps);
40212      nextProps = getHostProps$2(domElement, nextRawProps);
40213      updatePayload = [];
40214      break;
40215
40216    case 'textarea':
40217      lastProps = getHostProps$3(domElement, lastRawProps);
40218      nextProps = getHostProps$3(domElement, nextRawProps);
40219      updatePayload = [];
40220      break;
40221
40222    default:
40223      lastProps = lastRawProps;
40224      nextProps = nextRawProps;
40225
40226      if (typeof lastProps.onClick !== 'function' && typeof nextProps.onClick === 'function') {
40227        // TODO: This cast may not be sound for SVG, MathML or custom elements.
40228        trapClickOnNonInteractiveElement(domElement);
40229      }
40230
40231      break;
40232  }
40233
40234  assertValidProps(tag, nextProps);
40235  var propKey;
40236  var styleName;
40237  var styleUpdates = null;
40238
40239  for (propKey in lastProps) {
40240    if (nextProps.hasOwnProperty(propKey) || !lastProps.hasOwnProperty(propKey) || lastProps[propKey] == null) {
40241      continue;
40242    }
40243
40244    if (propKey === STYLE) {
40245      var lastStyle = lastProps[propKey];
40246
40247      for (styleName in lastStyle) {
40248        if (lastStyle.hasOwnProperty(styleName)) {
40249          if (!styleUpdates) {
40250            styleUpdates = {};
40251          }
40252
40253          styleUpdates[styleName] = '';
40254        }
40255      }
40256    } else if (propKey === DANGEROUSLY_SET_INNER_HTML || propKey === CHILDREN) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (propKey === AUTOFOCUS) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {
40257      // This is a special case. If any listener updates we need to ensure
40258      // that the "current" fiber pointer gets updated so we need a commit
40259      // to update this element.
40260      if (!updatePayload) {
40261        updatePayload = [];
40262      }
40263    } else {
40264      // For all other deleted properties we add it to the queue. We use
40265      // the allowed property list in the commit phase instead.
40266      (updatePayload = updatePayload || []).push(propKey, null);
40267    }
40268  }
40269
40270  for (propKey in nextProps) {
40271    var nextProp = nextProps[propKey];
40272    var lastProp = lastProps != null ? lastProps[propKey] : undefined;
40273
40274    if (!nextProps.hasOwnProperty(propKey) || nextProp === lastProp || nextProp == null && lastProp == null) {
40275      continue;
40276    }
40277
40278    if (propKey === STYLE) {
40279      {
40280        if (nextProp) {
40281          // Freeze the next style object so that we can assume it won't be
40282          // mutated. We have already warned for this in the past.
40283          Object.freeze(nextProp);
40284        }
40285      }
40286
40287      if (lastProp) {
40288        // Unset styles on `lastProp` but not on `nextProp`.
40289        for (styleName in lastProp) {
40290          if (lastProp.hasOwnProperty(styleName) && (!nextProp || !nextProp.hasOwnProperty(styleName))) {
40291            if (!styleUpdates) {
40292              styleUpdates = {};
40293            }
40294
40295            styleUpdates[styleName] = '';
40296          }
40297        } // Update styles that changed since `lastProp`.
40298
40299
40300        for (styleName in nextProp) {
40301          if (nextProp.hasOwnProperty(styleName) && lastProp[styleName] !== nextProp[styleName]) {
40302            if (!styleUpdates) {
40303              styleUpdates = {};
40304            }
40305
40306            styleUpdates[styleName] = nextProp[styleName];
40307          }
40308        }
40309      } else {
40310        // Relies on `updateStylesByID` not mutating `styleUpdates`.
40311        if (!styleUpdates) {
40312          if (!updatePayload) {
40313            updatePayload = [];
40314          }
40315
40316          updatePayload.push(propKey, styleUpdates);
40317        }
40318
40319        styleUpdates = nextProp;
40320      }
40321    } else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
40322      var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
40323      var lastHtml = lastProp ? lastProp[HTML$1] : undefined;
40324
40325      if (nextHtml != null) {
40326        if (lastHtml !== nextHtml) {
40327          (updatePayload = updatePayload || []).push(propKey, nextHtml);
40328        }
40329      }
40330    } else if (propKey === CHILDREN) {
40331      if (typeof nextProp === 'string' || typeof nextProp === 'number') {
40332        (updatePayload = updatePayload || []).push(propKey, '' + nextProp);
40333      }
40334    } else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING) ; else if (registrationNameDependencies.hasOwnProperty(propKey)) {
40335      if (nextProp != null) {
40336        // We eagerly listen to this even though we haven't committed yet.
40337        if ( typeof nextProp !== 'function') {
40338          warnForInvalidEventListener(propKey, nextProp);
40339        }
40340
40341        if (propKey === 'onScroll') {
40342          listenToNonDelegatedEvent('scroll', domElement);
40343        }
40344      }
40345
40346      if (!updatePayload && lastProp !== nextProp) {
40347        // This is a special case. If any listener updates we need to ensure
40348        // that the "current" props pointer gets updated so we need a commit
40349        // to update this element.
40350        updatePayload = [];
40351      }
40352    } else if (typeof nextProp === 'object' && nextProp !== null && nextProp.$$typeof === REACT_OPAQUE_ID_TYPE) {
40353      // If we encounter useOpaqueReference's opaque object, this means we are hydrating.
40354      // In this case, call the opaque object's toString function which generates a new client
40355      // ID so client and server IDs match and throws to rerender.
40356      nextProp.toString();
40357    } else {
40358      // For any other property we always add it to the queue and then we
40359      // filter it out using the allowed property list during the commit.
40360      (updatePayload = updatePayload || []).push(propKey, nextProp);
40361    }
40362  }
40363
40364  if (styleUpdates) {
40365    {
40366      validateShorthandPropertyCollisionInDev(styleUpdates, nextProps[STYLE]);
40367    }
40368
40369    (updatePayload = updatePayload || []).push(STYLE, styleUpdates);
40370  }
40371
40372  return updatePayload;
40373} // Apply the diff.
40374
40375function updateProperties(domElement, updatePayload, tag, lastRawProps, nextRawProps) {
40376  // Update checked *before* name.
40377  // In the middle of an update, it is possible to have multiple checked.
40378  // When a checked radio tries to change name, browser makes another radio's checked false.
40379  if (tag === 'input' && nextRawProps.type === 'radio' && nextRawProps.name != null) {
40380    updateChecked(domElement, nextRawProps);
40381  }
40382
40383  var wasCustomComponentTag = isCustomComponent(tag, lastRawProps);
40384  var isCustomComponentTag = isCustomComponent(tag, nextRawProps); // Apply the diff.
40385
40386  updateDOMProperties(domElement, updatePayload, wasCustomComponentTag, isCustomComponentTag); // TODO: Ensure that an update gets scheduled if any of the special props
40387  // changed.
40388
40389  switch (tag) {
40390    case 'input':
40391      // Update the wrapper around inputs *after* updating props. This has to
40392      // happen after `updateDOMProperties`. Otherwise HTML5 input validations
40393      // raise warnings and prevent the new value from being assigned.
40394      updateWrapper(domElement, nextRawProps);
40395      break;
40396
40397    case 'textarea':
40398      updateWrapper$1(domElement, nextRawProps);
40399      break;
40400
40401    case 'select':
40402      // <select> value update needs to occur after <option> children
40403      // reconciliation
40404      postUpdateWrapper(domElement, nextRawProps);
40405      break;
40406  }
40407}
40408
40409function getPossibleStandardName(propName) {
40410  {
40411    var lowerCasedName = propName.toLowerCase();
40412
40413    if (!possibleStandardNames.hasOwnProperty(lowerCasedName)) {
40414      return null;
40415    }
40416
40417    return possibleStandardNames[lowerCasedName] || null;
40418  }
40419}
40420
40421function diffHydratedProperties(domElement, tag, rawProps, parentNamespace, rootContainerElement) {
40422  var isCustomComponentTag;
40423  var extraAttributeNames;
40424
40425  {
40426    suppressHydrationWarning = rawProps[SUPPRESS_HYDRATION_WARNING] === true;
40427    isCustomComponentTag = isCustomComponent(tag, rawProps);
40428    validatePropertiesInDevelopment(tag, rawProps);
40429  } // TODO: Make sure that we check isMounted before firing any of these events.
40430
40431
40432  switch (tag) {
40433    case 'dialog':
40434      listenToNonDelegatedEvent('cancel', domElement);
40435      listenToNonDelegatedEvent('close', domElement);
40436      break;
40437
40438    case 'iframe':
40439    case 'object':
40440    case 'embed':
40441      // We listen to this event in case to ensure emulated bubble
40442      // listeners still fire for the load event.
40443      listenToNonDelegatedEvent('load', domElement);
40444      break;
40445
40446    case 'video':
40447    case 'audio':
40448      // We listen to these events in case to ensure emulated bubble
40449      // listeners still fire for all the media events.
40450      for (var i = 0; i < mediaEventTypes.length; i++) {
40451        listenToNonDelegatedEvent(mediaEventTypes[i], domElement);
40452      }
40453
40454      break;
40455
40456    case 'source':
40457      // We listen to this event in case to ensure emulated bubble
40458      // listeners still fire for the error event.
40459      listenToNonDelegatedEvent('error', domElement);
40460      break;
40461
40462    case 'img':
40463    case 'image':
40464    case 'link':
40465      // We listen to these events in case to ensure emulated bubble
40466      // listeners still fire for error and load events.
40467      listenToNonDelegatedEvent('error', domElement);
40468      listenToNonDelegatedEvent('load', domElement);
40469      break;
40470
40471    case 'details':
40472      // We listen to this event in case to ensure emulated bubble
40473      // listeners still fire for the toggle event.
40474      listenToNonDelegatedEvent('toggle', domElement);
40475      break;
40476
40477    case 'input':
40478      initWrapperState(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40479      // listeners still fire for the invalid event.
40480
40481      listenToNonDelegatedEvent('invalid', domElement);
40482
40483      break;
40484
40485    case 'option':
40486      validateProps(domElement, rawProps);
40487      break;
40488
40489    case 'select':
40490      initWrapperState$1(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40491      // listeners still fire for the invalid event.
40492
40493      listenToNonDelegatedEvent('invalid', domElement);
40494
40495      break;
40496
40497    case 'textarea':
40498      initWrapperState$2(domElement, rawProps); // We listen to this event in case to ensure emulated bubble
40499      // listeners still fire for the invalid event.
40500
40501      listenToNonDelegatedEvent('invalid', domElement);
40502
40503      break;
40504  }
40505
40506  assertValidProps(tag, rawProps);
40507
40508  {
40509    extraAttributeNames = new Set();
40510    var attributes = domElement.attributes;
40511
40512    for (var _i = 0; _i < attributes.length; _i++) {
40513      var name = attributes[_i].name.toLowerCase();
40514
40515      switch (name) {
40516        // Built-in SSR attribute is allowed
40517        case 'data-reactroot':
40518          break;
40519        // Controlled attributes are not validated
40520        // TODO: Only ignore them on controlled tags.
40521
40522        case 'value':
40523          break;
40524
40525        case 'checked':
40526          break;
40527
40528        case 'selected':
40529          break;
40530
40531        default:
40532          // Intentionally use the original name.
40533          // See discussion in https://github.com/facebook/react/pull/10676.
40534          extraAttributeNames.add(attributes[_i].name);
40535      }
40536    }
40537  }
40538
40539  var updatePayload = null;
40540
40541  for (var propKey in rawProps) {
40542    if (!rawProps.hasOwnProperty(propKey)) {
40543      continue;
40544    }
40545
40546    var nextProp = rawProps[propKey];
40547
40548    if (propKey === CHILDREN) {
40549      // For text content children we compare against textContent. This
40550      // might match additional HTML that is hidden when we read it using
40551      // textContent. E.g. "foo" will match "f<span>oo</span>" but that still
40552      // satisfies our requirement. Our requirement is not to produce perfect
40553      // HTML and attributes. Ideally we should preserve structure but it's
40554      // ok not to if the visible content is still enough to indicate what
40555      // even listeners these nodes might be wired up to.
40556      // TODO: Warn if there is more than a single textNode as a child.
40557      // TODO: Should we use domElement.firstChild.nodeValue to compare?
40558      if (typeof nextProp === 'string') {
40559        if (domElement.textContent !== nextProp) {
40560          if ( !suppressHydrationWarning) {
40561            warnForTextDifference(domElement.textContent, nextProp);
40562          }
40563
40564          updatePayload = [CHILDREN, nextProp];
40565        }
40566      } else if (typeof nextProp === 'number') {
40567        if (domElement.textContent !== '' + nextProp) {
40568          if ( !suppressHydrationWarning) {
40569            warnForTextDifference(domElement.textContent, nextProp);
40570          }
40571
40572          updatePayload = [CHILDREN, '' + nextProp];
40573        }
40574      }
40575    } else if (registrationNameDependencies.hasOwnProperty(propKey)) {
40576      if (nextProp != null) {
40577        if ( typeof nextProp !== 'function') {
40578          warnForInvalidEventListener(propKey, nextProp);
40579        }
40580
40581        if (propKey === 'onScroll') {
40582          listenToNonDelegatedEvent('scroll', domElement);
40583        }
40584      }
40585    } else if ( // Convince Flow we've calculated it (it's DEV-only in this method.)
40586    typeof isCustomComponentTag === 'boolean') {
40587      // Validate that the properties correspond to their expected values.
40588      var serverValue = void 0;
40589      var propertyInfo = getPropertyInfo(propKey);
40590
40591      if (suppressHydrationWarning) ; else if (propKey === SUPPRESS_CONTENT_EDITABLE_WARNING || propKey === SUPPRESS_HYDRATION_WARNING || // Controlled attributes are not validated
40592      // TODO: Only ignore them on controlled tags.
40593      propKey === 'value' || propKey === 'checked' || propKey === 'selected') ; else if (propKey === DANGEROUSLY_SET_INNER_HTML) {
40594        var serverHTML = domElement.innerHTML;
40595        var nextHtml = nextProp ? nextProp[HTML$1] : undefined;
40596
40597        if (nextHtml != null) {
40598          var expectedHTML = normalizeHTML(domElement, nextHtml);
40599
40600          if (expectedHTML !== serverHTML) {
40601            warnForPropDifference(propKey, serverHTML, expectedHTML);
40602          }
40603        }
40604      } else if (propKey === STYLE) {
40605        // $FlowFixMe - Should be inferred as not undefined.
40606        extraAttributeNames.delete(propKey);
40607
40608        if (canDiffStyleForHydrationWarning) {
40609          var expectedStyle = createDangerousStringForStyles(nextProp);
40610          serverValue = domElement.getAttribute('style');
40611
40612          if (expectedStyle !== serverValue) {
40613            warnForPropDifference(propKey, serverValue, expectedStyle);
40614          }
40615        }
40616      } else if (isCustomComponentTag) {
40617        // $FlowFixMe - Should be inferred as not undefined.
40618        extraAttributeNames.delete(propKey.toLowerCase());
40619        serverValue = getValueForAttribute(domElement, propKey, nextProp);
40620
40621        if (nextProp !== serverValue) {
40622          warnForPropDifference(propKey, serverValue, nextProp);
40623        }
40624      } else if (!shouldIgnoreAttribute(propKey, propertyInfo, isCustomComponentTag) && !shouldRemoveAttribute(propKey, nextProp, propertyInfo, isCustomComponentTag)) {
40625        var isMismatchDueToBadCasing = false;
40626
40627        if (propertyInfo !== null) {
40628          // $FlowFixMe - Should be inferred as not undefined.
40629          extraAttributeNames.delete(propertyInfo.attributeName);
40630          serverValue = getValueForProperty(domElement, propKey, nextProp, propertyInfo);
40631        } else {
40632          var ownNamespace = parentNamespace;
40633
40634          if (ownNamespace === HTML_NAMESPACE$1) {
40635            ownNamespace = getIntrinsicNamespace(tag);
40636          }
40637
40638          if (ownNamespace === HTML_NAMESPACE$1) {
40639            // $FlowFixMe - Should be inferred as not undefined.
40640            extraAttributeNames.delete(propKey.toLowerCase());
40641          } else {
40642            var standardName = getPossibleStandardName(propKey);
40643
40644            if (standardName !== null && standardName !== propKey) {
40645              // If an SVG prop is supplied with bad casing, it will
40646              // be successfully parsed from HTML, but will produce a mismatch
40647              // (and would be incorrectly rendered on the client).
40648              // However, we already warn about bad casing elsewhere.
40649              // So we'll skip the misleading extra mismatch warning in this case.
40650              isMismatchDueToBadCasing = true; // $FlowFixMe - Should be inferred as not undefined.
40651
40652              extraAttributeNames.delete(standardName);
40653            } // $FlowFixMe - Should be inferred as not undefined.
40654
40655
40656            extraAttributeNames.delete(propKey);
40657          }
40658
40659          serverValue = getValueForAttribute(domElement, propKey, nextProp);
40660        }
40661
40662        if (nextProp !== serverValue && !isMismatchDueToBadCasing) {
40663          warnForPropDifference(propKey, serverValue, nextProp);
40664        }
40665      }
40666    }
40667  }
40668
40669  {
40670    // $FlowFixMe - Should be inferred as not undefined.
40671    if (extraAttributeNames.size > 0 && !suppressHydrationWarning) {
40672      // $FlowFixMe - Should be inferred as not undefined.
40673      warnForExtraAttributes(extraAttributeNames);
40674    }
40675  }
40676
40677  switch (tag) {
40678    case 'input':
40679      // TODO: Make sure we check if this is still unmounted or do any clean
40680      // up necessary since we never stop tracking anymore.
40681      track(domElement);
40682      postMountWrapper(domElement, rawProps, true);
40683      break;
40684
40685    case 'textarea':
40686      // TODO: Make sure we check if this is still unmounted or do any clean
40687      // up necessary since we never stop tracking anymore.
40688      track(domElement);
40689      postMountWrapper$3(domElement);
40690      break;
40691
40692    case 'select':
40693    case 'option':
40694      // For input and textarea we current always set the value property at
40695      // post mount to force it to diverge from attributes. However, for
40696      // option and select we don't quite do the same thing and select
40697      // is not resilient to the DOM state changing so we don't do that here.
40698      // TODO: Consider not doing this for input and textarea.
40699      break;
40700
40701    default:
40702      if (typeof rawProps.onClick === 'function') {
40703        // TODO: This cast may not be sound for SVG, MathML or custom elements.
40704        trapClickOnNonInteractiveElement(domElement);
40705      }
40706
40707      break;
40708  }
40709
40710  return updatePayload;
40711}
40712function diffHydratedText(textNode, text) {
40713  var isDifferent = textNode.nodeValue !== text;
40714  return isDifferent;
40715}
40716function warnForUnmatchedText(textNode, text) {
40717  {
40718    warnForTextDifference(textNode.nodeValue, text);
40719  }
40720}
40721function warnForDeletedHydratableElement(parentNode, child) {
40722  {
40723    if (didWarnInvalidHydration) {
40724      return;
40725    }
40726
40727    didWarnInvalidHydration = true;
40728
40729    error('Did not expect server HTML to contain a <%s> in <%s>.', child.nodeName.toLowerCase(), parentNode.nodeName.toLowerCase());
40730  }
40731}
40732function warnForDeletedHydratableText(parentNode, child) {
40733  {
40734    if (didWarnInvalidHydration) {
40735      return;
40736    }
40737
40738    didWarnInvalidHydration = true;
40739
40740    error('Did not expect server HTML to contain the text node "%s" in <%s>.', child.nodeValue, parentNode.nodeName.toLowerCase());
40741  }
40742}
40743function warnForInsertedHydratedElement(parentNode, tag, props) {
40744  {
40745    if (didWarnInvalidHydration) {
40746      return;
40747    }
40748
40749    didWarnInvalidHydration = true;
40750
40751    error('Expected server HTML to contain a matching <%s> in <%s>.', tag, parentNode.nodeName.toLowerCase());
40752  }
40753}
40754function warnForInsertedHydratedText(parentNode, text) {
40755  {
40756    if (text === '') {
40757      // We expect to insert empty text nodes since they're not represented in
40758      // the HTML.
40759      // TODO: Remove this special case if we can just avoid inserting empty
40760      // text nodes.
40761      return;
40762    }
40763
40764    if (didWarnInvalidHydration) {
40765      return;
40766    }
40767
40768    didWarnInvalidHydration = true;
40769
40770    error('Expected server HTML to contain a matching text node for "%s" in <%s>.', text, parentNode.nodeName.toLowerCase());
40771  }
40772}
40773function restoreControlledState$3(domElement, tag, props) {
40774  switch (tag) {
40775    case 'input':
40776      restoreControlledState(domElement, props);
40777      return;
40778
40779    case 'textarea':
40780      restoreControlledState$2(domElement, props);
40781      return;
40782
40783    case 'select':
40784      restoreControlledState$1(domElement, props);
40785      return;
40786  }
40787}
40788
40789var validateDOMNesting = function () {};
40790
40791var updatedAncestorInfo = function () {};
40792
40793{
40794  // This validation code was written based on the HTML5 parsing spec:
40795  // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
40796  //
40797  // Note: this does not catch all invalid nesting, nor does it try to (as it's
40798  // not clear what practical benefit doing so provides); instead, we warn only
40799  // for cases where the parser will give a parse tree differing from what React
40800  // intended. For example, <b><div></div></b> is invalid but we don't warn
40801  // because it still parses correctly; we do warn for other cases like nested
40802  // <p> tags where the beginning of the second element implicitly closes the
40803  // first, causing a confusing mess.
40804  // https://html.spec.whatwg.org/multipage/syntax.html#special
40805  var specialTags = ['address', 'applet', 'area', 'article', 'aside', 'base', 'basefont', 'bgsound', 'blockquote', 'body', 'br', 'button', 'caption', 'center', 'col', 'colgroup', 'dd', 'details', 'dir', 'div', 'dl', 'dt', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'frame', 'frameset', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'iframe', 'img', 'input', 'isindex', 'li', 'link', 'listing', 'main', 'marquee', 'menu', 'menuitem', 'meta', 'nav', 'noembed', 'noframes', 'noscript', 'object', 'ol', 'p', 'param', 'plaintext', 'pre', 'script', 'section', 'select', 'source', 'style', 'summary', 'table', 'tbody', 'td', 'template', 'textarea', 'tfoot', 'th', 'thead', 'title', 'tr', 'track', 'ul', 'wbr', 'xmp']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-scope
40806
40807  var inScopeTags = ['applet', 'caption', 'html', 'table', 'td', 'th', 'marquee', 'object', 'template', // https://html.spec.whatwg.org/multipage/syntax.html#html-integration-point
40808  // TODO: Distinguish by namespace here -- for <title>, including it here
40809  // errs on the side of fewer warnings
40810  'foreignObject', 'desc', 'title']; // https://html.spec.whatwg.org/multipage/syntax.html#has-an-element-in-button-scope
40811
40812  var buttonScopeTags = inScopeTags.concat(['button']); // https://html.spec.whatwg.org/multipage/syntax.html#generate-implied-end-tags
40813
40814  var impliedEndTags = ['dd', 'dt', 'li', 'option', 'optgroup', 'p', 'rp', 'rt'];
40815  var emptyAncestorInfo = {
40816    current: null,
40817    formTag: null,
40818    aTagInScope: null,
40819    buttonTagInScope: null,
40820    nobrTagInScope: null,
40821    pTagInButtonScope: null,
40822    listItemTagAutoclosing: null,
40823    dlItemTagAutoclosing: null
40824  };
40825
40826  updatedAncestorInfo = function (oldInfo, tag) {
40827    var ancestorInfo = _assign({}, oldInfo || emptyAncestorInfo);
40828
40829    var info = {
40830      tag: tag
40831    };
40832
40833    if (inScopeTags.indexOf(tag) !== -1) {
40834      ancestorInfo.aTagInScope = null;
40835      ancestorInfo.buttonTagInScope = null;
40836      ancestorInfo.nobrTagInScope = null;
40837    }
40838
40839    if (buttonScopeTags.indexOf(tag) !== -1) {
40840      ancestorInfo.pTagInButtonScope = null;
40841    } // See rules for 'li', 'dd', 'dt' start tags in
40842    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
40843
40844
40845    if (specialTags.indexOf(tag) !== -1 && tag !== 'address' && tag !== 'div' && tag !== 'p') {
40846      ancestorInfo.listItemTagAutoclosing = null;
40847      ancestorInfo.dlItemTagAutoclosing = null;
40848    }
40849
40850    ancestorInfo.current = info;
40851
40852    if (tag === 'form') {
40853      ancestorInfo.formTag = info;
40854    }
40855
40856    if (tag === 'a') {
40857      ancestorInfo.aTagInScope = info;
40858    }
40859
40860    if (tag === 'button') {
40861      ancestorInfo.buttonTagInScope = info;
40862    }
40863
40864    if (tag === 'nobr') {
40865      ancestorInfo.nobrTagInScope = info;
40866    }
40867
40868    if (tag === 'p') {
40869      ancestorInfo.pTagInButtonScope = info;
40870    }
40871
40872    if (tag === 'li') {
40873      ancestorInfo.listItemTagAutoclosing = info;
40874    }
40875
40876    if (tag === 'dd' || tag === 'dt') {
40877      ancestorInfo.dlItemTagAutoclosing = info;
40878    }
40879
40880    return ancestorInfo;
40881  };
40882  /**
40883   * Returns whether
40884   */
40885
40886
40887  var isTagValidWithParent = function (tag, parentTag) {
40888    // First, let's check if we're in an unusual parsing mode...
40889    switch (parentTag) {
40890      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inselect
40891      case 'select':
40892        return tag === 'option' || tag === 'optgroup' || tag === '#text';
40893
40894      case 'optgroup':
40895        return tag === 'option' || tag === '#text';
40896      // Strictly speaking, seeing an <option> doesn't mean we're in a <select>
40897      // but
40898
40899      case 'option':
40900        return tag === '#text';
40901      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intd
40902      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incaption
40903      // No special behavior since these rules fall back to "in body" mode for
40904      // all except special table nodes which cause bad parsing behavior anyway.
40905      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intr
40906
40907      case 'tr':
40908        return tag === 'th' || tag === 'td' || tag === 'style' || tag === 'script' || tag === 'template';
40909      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intbody
40910
40911      case 'tbody':
40912      case 'thead':
40913      case 'tfoot':
40914        return tag === 'tr' || tag === 'style' || tag === 'script' || tag === 'template';
40915      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-incolgroup
40916
40917      case 'colgroup':
40918        return tag === 'col' || tag === 'template';
40919      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-intable
40920
40921      case 'table':
40922        return tag === 'caption' || tag === 'colgroup' || tag === 'tbody' || tag === 'tfoot' || tag === 'thead' || tag === 'style' || tag === 'script' || tag === 'template';
40923      // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inhead
40924
40925      case 'head':
40926        return tag === 'base' || tag === 'basefont' || tag === 'bgsound' || tag === 'link' || tag === 'meta' || tag === 'title' || tag === 'noscript' || tag === 'noframes' || tag === 'style' || tag === 'script' || tag === 'template';
40927      // https://html.spec.whatwg.org/multipage/semantics.html#the-html-element
40928
40929      case 'html':
40930        return tag === 'head' || tag === 'body' || tag === 'frameset';
40931
40932      case 'frameset':
40933        return tag === 'frame';
40934
40935      case '#document':
40936        return tag === 'html';
40937    } // Probably in the "in body" parsing mode, so we outlaw only tag combos
40938    // where the parsing rules cause implicit opens or closes to be added.
40939    // https://html.spec.whatwg.org/multipage/syntax.html#parsing-main-inbody
40940
40941
40942    switch (tag) {
40943      case 'h1':
40944      case 'h2':
40945      case 'h3':
40946      case 'h4':
40947      case 'h5':
40948      case 'h6':
40949        return parentTag !== 'h1' && parentTag !== 'h2' && parentTag !== 'h3' && parentTag !== 'h4' && parentTag !== 'h5' && parentTag !== 'h6';
40950
40951      case 'rp':
40952      case 'rt':
40953        return impliedEndTags.indexOf(parentTag) === -1;
40954
40955      case 'body':
40956      case 'caption':
40957      case 'col':
40958      case 'colgroup':
40959      case 'frameset':
40960      case 'frame':
40961      case 'head':
40962      case 'html':
40963      case 'tbody':
40964      case 'td':
40965      case 'tfoot':
40966      case 'th':
40967      case 'thead':
40968      case 'tr':
40969        // These tags are only valid with a few parents that have special child
40970        // parsing rules -- if we're down here, then none of those matched and
40971        // so we allow it only if we don't know what the parent is, as all other
40972        // cases are invalid.
40973        return parentTag == null;
40974    }
40975
40976    return true;
40977  };
40978  /**
40979   * Returns whether
40980   */
40981
40982
40983  var findInvalidAncestorForTag = function (tag, ancestorInfo) {
40984    switch (tag) {
40985      case 'address':
40986      case 'article':
40987      case 'aside':
40988      case 'blockquote':
40989      case 'center':
40990      case 'details':
40991      case 'dialog':
40992      case 'dir':
40993      case 'div':
40994      case 'dl':
40995      case 'fieldset':
40996      case 'figcaption':
40997      case 'figure':
40998      case 'footer':
40999      case 'header':
41000      case 'hgroup':
41001      case 'main':
41002      case 'menu':
41003      case 'nav':
41004      case 'ol':
41005      case 'p':
41006      case 'section':
41007      case 'summary':
41008      case 'ul':
41009      case 'pre':
41010      case 'listing':
41011      case 'table':
41012      case 'hr':
41013      case 'xmp':
41014      case 'h1':
41015      case 'h2':
41016      case 'h3':
41017      case 'h4':
41018      case 'h5':
41019      case 'h6':
41020        return ancestorInfo.pTagInButtonScope;
41021
41022      case 'form':
41023        return ancestorInfo.formTag || ancestorInfo.pTagInButtonScope;
41024
41025      case 'li':
41026        return ancestorInfo.listItemTagAutoclosing;
41027
41028      case 'dd':
41029      case 'dt':
41030        return ancestorInfo.dlItemTagAutoclosing;
41031
41032      case 'button':
41033        return ancestorInfo.buttonTagInScope;
41034
41035      case 'a':
41036        // Spec says something about storing a list of markers, but it sounds
41037        // equivalent to this check.
41038        return ancestorInfo.aTagInScope;
41039
41040      case 'nobr':
41041        return ancestorInfo.nobrTagInScope;
41042    }
41043
41044    return null;
41045  };
41046
41047  var didWarn$1 = {};
41048
41049  validateDOMNesting = function (childTag, childText, ancestorInfo) {
41050    ancestorInfo = ancestorInfo || emptyAncestorInfo;
41051    var parentInfo = ancestorInfo.current;
41052    var parentTag = parentInfo && parentInfo.tag;
41053
41054    if (childText != null) {
41055      if (childTag != null) {
41056        error('validateDOMNesting: when childText is passed, childTag should be null');
41057      }
41058
41059      childTag = '#text';
41060    }
41061
41062    var invalidParent = isTagValidWithParent(childTag, parentTag) ? null : parentInfo;
41063    var invalidAncestor = invalidParent ? null : findInvalidAncestorForTag(childTag, ancestorInfo);
41064    var invalidParentOrAncestor = invalidParent || invalidAncestor;
41065
41066    if (!invalidParentOrAncestor) {
41067      return;
41068    }
41069
41070    var ancestorTag = invalidParentOrAncestor.tag;
41071    var warnKey = !!invalidParent + '|' + childTag + '|' + ancestorTag;
41072
41073    if (didWarn$1[warnKey]) {
41074      return;
41075    }
41076
41077    didWarn$1[warnKey] = true;
41078    var tagDisplayName = childTag;
41079    var whitespaceInfo = '';
41080
41081    if (childTag === '#text') {
41082      if (/\S/.test(childText)) {
41083        tagDisplayName = 'Text nodes';
41084      } else {
41085        tagDisplayName = 'Whitespace text nodes';
41086        whitespaceInfo = " Make sure you don't have any extra whitespace between tags on " + 'each line of your source code.';
41087      }
41088    } else {
41089      tagDisplayName = '<' + childTag + '>';
41090    }
41091
41092    if (invalidParent) {
41093      var info = '';
41094
41095      if (ancestorTag === 'table' && childTag === 'tr') {
41096        info += ' Add a <tbody>, <thead> or <tfoot> to your code to match the DOM tree generated by ' + 'the browser.';
41097      }
41098
41099      error('validateDOMNesting(...): %s cannot appear as a child of <%s>.%s%s', tagDisplayName, ancestorTag, whitespaceInfo, info);
41100    } else {
41101      error('validateDOMNesting(...): %s cannot appear as a descendant of ' + '<%s>.', tagDisplayName, ancestorTag);
41102    }
41103  };
41104}
41105
41106var SUPPRESS_HYDRATION_WARNING$1;
41107
41108{
41109  SUPPRESS_HYDRATION_WARNING$1 = 'suppressHydrationWarning';
41110}
41111
41112var SUSPENSE_START_DATA = '$';
41113var SUSPENSE_END_DATA = '/$';
41114var SUSPENSE_PENDING_START_DATA = '$?';
41115var SUSPENSE_FALLBACK_START_DATA = '$!';
41116var STYLE$1 = 'style';
41117var eventsEnabled = null;
41118var selectionInformation = null;
41119
41120function shouldAutoFocusHostComponent(type, props) {
41121  switch (type) {
41122    case 'button':
41123    case 'input':
41124    case 'select':
41125    case 'textarea':
41126      return !!props.autoFocus;
41127  }
41128
41129  return false;
41130}
41131function getRootHostContext(rootContainerInstance) {
41132  var type;
41133  var namespace;
41134  var nodeType = rootContainerInstance.nodeType;
41135
41136  switch (nodeType) {
41137    case DOCUMENT_NODE:
41138    case DOCUMENT_FRAGMENT_NODE:
41139      {
41140        type = nodeType === DOCUMENT_NODE ? '#document' : '#fragment';
41141        var root = rootContainerInstance.documentElement;
41142        namespace = root ? root.namespaceURI : getChildNamespace(null, '');
41143        break;
41144      }
41145
41146    default:
41147      {
41148        var container = nodeType === COMMENT_NODE ? rootContainerInstance.parentNode : rootContainerInstance;
41149        var ownNamespace = container.namespaceURI || null;
41150        type = container.tagName;
41151        namespace = getChildNamespace(ownNamespace, type);
41152        break;
41153      }
41154  }
41155
41156  {
41157    var validatedTag = type.toLowerCase();
41158    var ancestorInfo = updatedAncestorInfo(null, validatedTag);
41159    return {
41160      namespace: namespace,
41161      ancestorInfo: ancestorInfo
41162    };
41163  }
41164}
41165function getChildHostContext(parentHostContext, type, rootContainerInstance) {
41166  {
41167    var parentHostContextDev = parentHostContext;
41168    var namespace = getChildNamespace(parentHostContextDev.namespace, type);
41169    var ancestorInfo = updatedAncestorInfo(parentHostContextDev.ancestorInfo, type);
41170    return {
41171      namespace: namespace,
41172      ancestorInfo: ancestorInfo
41173    };
41174  }
41175}
41176function getPublicInstance(instance) {
41177  return instance;
41178}
41179function prepareForCommit(containerInfo) {
41180  eventsEnabled = isEnabled();
41181  selectionInformation = getSelectionInformation();
41182  var activeInstance = null;
41183
41184  setEnabled(false);
41185  return activeInstance;
41186}
41187function resetAfterCommit(containerInfo) {
41188  restoreSelection(selectionInformation);
41189  setEnabled(eventsEnabled);
41190  eventsEnabled = null;
41191  selectionInformation = null;
41192}
41193function createInstance(type, props, rootContainerInstance, hostContext, internalInstanceHandle) {
41194  var parentNamespace;
41195
41196  {
41197    // TODO: take namespace into account when validating.
41198    var hostContextDev = hostContext;
41199    validateDOMNesting(type, null, hostContextDev.ancestorInfo);
41200
41201    if (typeof props.children === 'string' || typeof props.children === 'number') {
41202      var string = '' + props.children;
41203      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
41204      validateDOMNesting(null, string, ownAncestorInfo);
41205    }
41206
41207    parentNamespace = hostContextDev.namespace;
41208  }
41209
41210  var domElement = createElement(type, props, rootContainerInstance, parentNamespace);
41211  precacheFiberNode(internalInstanceHandle, domElement);
41212  updateFiberProps(domElement, props);
41213  return domElement;
41214}
41215function appendInitialChild(parentInstance, child) {
41216  parentInstance.appendChild(child);
41217}
41218function finalizeInitialChildren(domElement, type, props, rootContainerInstance, hostContext) {
41219  setInitialProperties(domElement, type, props, rootContainerInstance);
41220  return shouldAutoFocusHostComponent(type, props);
41221}
41222function prepareUpdate(domElement, type, oldProps, newProps, rootContainerInstance, hostContext) {
41223  {
41224    var hostContextDev = hostContext;
41225
41226    if (typeof newProps.children !== typeof oldProps.children && (typeof newProps.children === 'string' || typeof newProps.children === 'number')) {
41227      var string = '' + newProps.children;
41228      var ownAncestorInfo = updatedAncestorInfo(hostContextDev.ancestorInfo, type);
41229      validateDOMNesting(null, string, ownAncestorInfo);
41230    }
41231  }
41232
41233  return diffProperties(domElement, type, oldProps, newProps);
41234}
41235function shouldSetTextContent(type, props) {
41236  return type === 'textarea' || type === 'option' || type === 'noscript' || typeof props.children === 'string' || typeof props.children === 'number' || typeof props.dangerouslySetInnerHTML === 'object' && props.dangerouslySetInnerHTML !== null && props.dangerouslySetInnerHTML.__html != null;
41237}
41238function createTextInstance(text, rootContainerInstance, hostContext, internalInstanceHandle) {
41239  {
41240    var hostContextDev = hostContext;
41241    validateDOMNesting(null, text, hostContextDev.ancestorInfo);
41242  }
41243
41244  var textNode = createTextNode(text, rootContainerInstance);
41245  precacheFiberNode(internalInstanceHandle, textNode);
41246  return textNode;
41247}
41248// if a component just imports ReactDOM (e.g. for findDOMNode).
41249// Some environments might not have setTimeout or clearTimeout.
41250
41251var scheduleTimeout = typeof setTimeout === 'function' ? setTimeout : undefined;
41252var cancelTimeout = typeof clearTimeout === 'function' ? clearTimeout : undefined;
41253var noTimeout = -1; // -------------------
41254function commitMount(domElement, type, newProps, internalInstanceHandle) {
41255  // Despite the naming that might imply otherwise, this method only
41256  // fires if there is an `Update` effect scheduled during mounting.
41257  // This happens if `finalizeInitialChildren` returns `true` (which it
41258  // does to implement the `autoFocus` attribute on the client). But
41259  // there are also other cases when this might happen (such as patching
41260  // up text content during hydration mismatch). So we'll check this again.
41261  if (shouldAutoFocusHostComponent(type, newProps)) {
41262    domElement.focus();
41263  }
41264}
41265function commitUpdate(domElement, updatePayload, type, oldProps, newProps, internalInstanceHandle) {
41266  // Update the props handle so that we know which props are the ones with
41267  // with current event handlers.
41268  updateFiberProps(domElement, newProps); // Apply the diff to the DOM node.
41269
41270  updateProperties(domElement, updatePayload, type, oldProps, newProps);
41271}
41272function resetTextContent(domElement) {
41273  setTextContent(domElement, '');
41274}
41275function commitTextUpdate(textInstance, oldText, newText) {
41276  textInstance.nodeValue = newText;
41277}
41278function appendChild(parentInstance, child) {
41279  parentInstance.appendChild(child);
41280}
41281function appendChildToContainer(container, child) {
41282  var parentNode;
41283
41284  if (container.nodeType === COMMENT_NODE) {
41285    parentNode = container.parentNode;
41286    parentNode.insertBefore(child, container);
41287  } else {
41288    parentNode = container;
41289    parentNode.appendChild(child);
41290  } // This container might be used for a portal.
41291  // If something inside a portal is clicked, that click should bubble
41292  // through the React tree. However, on Mobile Safari the click would
41293  // never bubble through the *DOM* tree unless an ancestor with onclick
41294  // event exists. So we wouldn't see it and dispatch it.
41295  // This is why we ensure that non React root containers have inline onclick
41296  // defined.
41297  // https://github.com/facebook/react/issues/11918
41298
41299
41300  var reactRootContainer = container._reactRootContainer;
41301
41302  if ((reactRootContainer === null || reactRootContainer === undefined) && parentNode.onclick === null) {
41303    // TODO: This cast may not be sound for SVG, MathML or custom elements.
41304    trapClickOnNonInteractiveElement(parentNode);
41305  }
41306}
41307function insertBefore(parentInstance, child, beforeChild) {
41308  parentInstance.insertBefore(child, beforeChild);
41309}
41310function insertInContainerBefore(container, child, beforeChild) {
41311  if (container.nodeType === COMMENT_NODE) {
41312    container.parentNode.insertBefore(child, beforeChild);
41313  } else {
41314    container.insertBefore(child, beforeChild);
41315  }
41316}
41317
41318function removeChild(parentInstance, child) {
41319  parentInstance.removeChild(child);
41320}
41321function removeChildFromContainer(container, child) {
41322  if (container.nodeType === COMMENT_NODE) {
41323    container.parentNode.removeChild(child);
41324  } else {
41325    container.removeChild(child);
41326  }
41327}
41328function hideInstance(instance) {
41329  // TODO: Does this work for all element types? What about MathML? Should we
41330  // pass host context to this method?
41331  instance = instance;
41332  var style = instance.style;
41333
41334  if (typeof style.setProperty === 'function') {
41335    style.setProperty('display', 'none', 'important');
41336  } else {
41337    style.display = 'none';
41338  }
41339}
41340function hideTextInstance(textInstance) {
41341  textInstance.nodeValue = '';
41342}
41343function unhideInstance(instance, props) {
41344  instance = instance;
41345  var styleProp = props[STYLE$1];
41346  var display = styleProp !== undefined && styleProp !== null && styleProp.hasOwnProperty('display') ? styleProp.display : null;
41347  instance.style.display = dangerousStyleValue('display', display);
41348}
41349function unhideTextInstance(textInstance, text) {
41350  textInstance.nodeValue = text;
41351}
41352function clearContainer(container) {
41353  if (container.nodeType === ELEMENT_NODE) {
41354    container.textContent = '';
41355  } else if (container.nodeType === DOCUMENT_NODE) {
41356    var body = container.body;
41357
41358    if (body != null) {
41359      body.textContent = '';
41360    }
41361  }
41362} // -------------------
41363function canHydrateInstance(instance, type, props) {
41364  if (instance.nodeType !== ELEMENT_NODE || type.toLowerCase() !== instance.nodeName.toLowerCase()) {
41365    return null;
41366  } // This has now been refined to an element node.
41367
41368
41369  return instance;
41370}
41371function canHydrateTextInstance(instance, text) {
41372  if (text === '' || instance.nodeType !== TEXT_NODE) {
41373    // Empty strings are not parsed by HTML so there won't be a correct match here.
41374    return null;
41375  } // This has now been refined to a text node.
41376
41377
41378  return instance;
41379}
41380function isSuspenseInstancePending(instance) {
41381  return instance.data === SUSPENSE_PENDING_START_DATA;
41382}
41383function isSuspenseInstanceFallback(instance) {
41384  return instance.data === SUSPENSE_FALLBACK_START_DATA;
41385}
41386
41387function getNextHydratable(node) {
41388  // Skip non-hydratable nodes.
41389  for (; node != null; node = node.nextSibling) {
41390    var nodeType = node.nodeType;
41391
41392    if (nodeType === ELEMENT_NODE || nodeType === TEXT_NODE) {
41393      break;
41394    }
41395  }
41396
41397  return node;
41398}
41399
41400function getNextHydratableSibling(instance) {
41401  return getNextHydratable(instance.nextSibling);
41402}
41403function getFirstHydratableChild(parentInstance) {
41404  return getNextHydratable(parentInstance.firstChild);
41405}
41406function hydrateInstance(instance, type, props, rootContainerInstance, hostContext, internalInstanceHandle) {
41407  precacheFiberNode(internalInstanceHandle, instance); // TODO: Possibly defer this until the commit phase where all the events
41408  // get attached.
41409
41410  updateFiberProps(instance, props);
41411  var parentNamespace;
41412
41413  {
41414    var hostContextDev = hostContext;
41415    parentNamespace = hostContextDev.namespace;
41416  }
41417
41418  return diffHydratedProperties(instance, type, props, parentNamespace);
41419}
41420function hydrateTextInstance(textInstance, text, internalInstanceHandle) {
41421  precacheFiberNode(internalInstanceHandle, textInstance);
41422  return diffHydratedText(textInstance, text);
41423}
41424function getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance) {
41425  var node = suspenseInstance.nextSibling; // Skip past all nodes within this suspense boundary.
41426  // There might be nested nodes so we need to keep track of how
41427  // deep we are and only break out when we're back on top.
41428
41429  var depth = 0;
41430
41431  while (node) {
41432    if (node.nodeType === COMMENT_NODE) {
41433      var data = node.data;
41434
41435      if (data === SUSPENSE_END_DATA) {
41436        if (depth === 0) {
41437          return getNextHydratableSibling(node);
41438        } else {
41439          depth--;
41440        }
41441      } else if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
41442        depth++;
41443      }
41444    }
41445
41446    node = node.nextSibling;
41447  } // TODO: Warn, we didn't find the end comment boundary.
41448
41449
41450  return null;
41451} // Returns the SuspenseInstance if this node is a direct child of a
41452// SuspenseInstance. I.e. if its previous sibling is a Comment with
41453// SUSPENSE_x_START_DATA. Otherwise, null.
41454
41455function getParentSuspenseInstance(targetInstance) {
41456  var node = targetInstance.previousSibling; // Skip past all nodes within this suspense boundary.
41457  // There might be nested nodes so we need to keep track of how
41458  // deep we are and only break out when we're back on top.
41459
41460  var depth = 0;
41461
41462  while (node) {
41463    if (node.nodeType === COMMENT_NODE) {
41464      var data = node.data;
41465
41466      if (data === SUSPENSE_START_DATA || data === SUSPENSE_FALLBACK_START_DATA || data === SUSPENSE_PENDING_START_DATA) {
41467        if (depth === 0) {
41468          return node;
41469        } else {
41470          depth--;
41471        }
41472      } else if (data === SUSPENSE_END_DATA) {
41473        depth++;
41474      }
41475    }
41476
41477    node = node.previousSibling;
41478  }
41479
41480  return null;
41481}
41482function commitHydratedContainer(container) {
41483  // Retry if any event replaying was blocked on this.
41484  retryIfBlockedOn(container);
41485}
41486function commitHydratedSuspenseInstance(suspenseInstance) {
41487  // Retry if any event replaying was blocked on this.
41488  retryIfBlockedOn(suspenseInstance);
41489}
41490function didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, text) {
41491  {
41492    warnForUnmatchedText(textInstance, text);
41493  }
41494}
41495function didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, text) {
41496  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
41497    warnForUnmatchedText(textInstance, text);
41498  }
41499}
41500function didNotHydrateContainerInstance(parentContainer, instance) {
41501  {
41502    if (instance.nodeType === ELEMENT_NODE) {
41503      warnForDeletedHydratableElement(parentContainer, instance);
41504    } else if (instance.nodeType === COMMENT_NODE) ; else {
41505      warnForDeletedHydratableText(parentContainer, instance);
41506    }
41507  }
41508}
41509function didNotHydrateInstance(parentType, parentProps, parentInstance, instance) {
41510  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
41511    if (instance.nodeType === ELEMENT_NODE) {
41512      warnForDeletedHydratableElement(parentInstance, instance);
41513    } else if (instance.nodeType === COMMENT_NODE) ; else {
41514      warnForDeletedHydratableText(parentInstance, instance);
41515    }
41516  }
41517}
41518function didNotFindHydratableContainerInstance(parentContainer, type, props) {
41519  {
41520    warnForInsertedHydratedElement(parentContainer, type);
41521  }
41522}
41523function didNotFindHydratableContainerTextInstance(parentContainer, text) {
41524  {
41525    warnForInsertedHydratedText(parentContainer, text);
41526  }
41527}
41528function didNotFindHydratableInstance(parentType, parentProps, parentInstance, type, props) {
41529  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
41530    warnForInsertedHydratedElement(parentInstance, type);
41531  }
41532}
41533function didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, text) {
41534  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) {
41535    warnForInsertedHydratedText(parentInstance, text);
41536  }
41537}
41538function didNotFindHydratableSuspenseInstance(parentType, parentProps, parentInstance) {
41539  if ( parentProps[SUPPRESS_HYDRATION_WARNING$1] !== true) ;
41540}
41541var clientId = 0;
41542function makeClientIdInDEV(warnOnAccessInDEV) {
41543  var id = 'r:' + (clientId++).toString(36);
41544  return {
41545    toString: function () {
41546      warnOnAccessInDEV();
41547      return id;
41548    },
41549    valueOf: function () {
41550      warnOnAccessInDEV();
41551      return id;
41552    }
41553  };
41554}
41555function isOpaqueHydratingObject(value) {
41556  return value !== null && typeof value === 'object' && value.$$typeof === REACT_OPAQUE_ID_TYPE;
41557}
41558function makeOpaqueHydratingObject(attemptToReadValue) {
41559  return {
41560    $$typeof: REACT_OPAQUE_ID_TYPE,
41561    toString: attemptToReadValue,
41562    valueOf: attemptToReadValue
41563  };
41564}
41565function preparePortalMount(portalInstance) {
41566  {
41567    listenToAllSupportedEvents(portalInstance);
41568  }
41569}
41570
41571var randomKey = Math.random().toString(36).slice(2);
41572var internalInstanceKey = '__reactFiber$' + randomKey;
41573var internalPropsKey = '__reactProps$' + randomKey;
41574var internalContainerInstanceKey = '__reactContainer$' + randomKey;
41575var internalEventHandlersKey = '__reactEvents$' + randomKey;
41576function precacheFiberNode(hostInst, node) {
41577  node[internalInstanceKey] = hostInst;
41578}
41579function markContainerAsRoot(hostRoot, node) {
41580  node[internalContainerInstanceKey] = hostRoot;
41581}
41582function unmarkContainerAsRoot(node) {
41583  node[internalContainerInstanceKey] = null;
41584}
41585function isContainerMarkedAsRoot(node) {
41586  return !!node[internalContainerInstanceKey];
41587} // Given a DOM node, return the closest HostComponent or HostText fiber ancestor.
41588// If the target node is part of a hydrated or not yet rendered subtree, then
41589// this may also return a SuspenseComponent or HostRoot to indicate that.
41590// Conceptually the HostRoot fiber is a child of the Container node. So if you
41591// pass the Container node as the targetNode, you will not actually get the
41592// HostRoot back. To get to the HostRoot, you need to pass a child of it.
41593// The same thing applies to Suspense boundaries.
41594
41595function getClosestInstanceFromNode(targetNode) {
41596  var targetInst = targetNode[internalInstanceKey];
41597
41598  if (targetInst) {
41599    // Don't return HostRoot or SuspenseComponent here.
41600    return targetInst;
41601  } // If the direct event target isn't a React owned DOM node, we need to look
41602  // to see if one of its parents is a React owned DOM node.
41603
41604
41605  var parentNode = targetNode.parentNode;
41606
41607  while (parentNode) {
41608    // We'll check if this is a container root that could include
41609    // React nodes in the future. We need to check this first because
41610    // if we're a child of a dehydrated container, we need to first
41611    // find that inner container before moving on to finding the parent
41612    // instance. Note that we don't check this field on  the targetNode
41613    // itself because the fibers are conceptually between the container
41614    // node and the first child. It isn't surrounding the container node.
41615    // If it's not a container, we check if it's an instance.
41616    targetInst = parentNode[internalContainerInstanceKey] || parentNode[internalInstanceKey];
41617
41618    if (targetInst) {
41619      // Since this wasn't the direct target of the event, we might have
41620      // stepped past dehydrated DOM nodes to get here. However they could
41621      // also have been non-React nodes. We need to answer which one.
41622      // If we the instance doesn't have any children, then there can't be
41623      // a nested suspense boundary within it. So we can use this as a fast
41624      // bailout. Most of the time, when people add non-React children to
41625      // the tree, it is using a ref to a child-less DOM node.
41626      // Normally we'd only need to check one of the fibers because if it
41627      // has ever gone from having children to deleting them or vice versa
41628      // it would have deleted the dehydrated boundary nested inside already.
41629      // However, since the HostRoot starts out with an alternate it might
41630      // have one on the alternate so we need to check in case this was a
41631      // root.
41632      var alternate = targetInst.alternate;
41633
41634      if (targetInst.child !== null || alternate !== null && alternate.child !== null) {
41635        // Next we need to figure out if the node that skipped past is
41636        // nested within a dehydrated boundary and if so, which one.
41637        var suspenseInstance = getParentSuspenseInstance(targetNode);
41638
41639        while (suspenseInstance !== null) {
41640          // We found a suspense instance. That means that we haven't
41641          // hydrated it yet. Even though we leave the comments in the
41642          // DOM after hydrating, and there are boundaries in the DOM
41643          // that could already be hydrated, we wouldn't have found them
41644          // through this pass since if the target is hydrated it would
41645          // have had an internalInstanceKey on it.
41646          // Let's get the fiber associated with the SuspenseComponent
41647          // as the deepest instance.
41648          var targetSuspenseInst = suspenseInstance[internalInstanceKey];
41649
41650          if (targetSuspenseInst) {
41651            return targetSuspenseInst;
41652          } // If we don't find a Fiber on the comment, it might be because
41653          // we haven't gotten to hydrate it yet. There might still be a
41654          // parent boundary that hasn't above this one so we need to find
41655          // the outer most that is known.
41656
41657
41658          suspenseInstance = getParentSuspenseInstance(suspenseInstance); // If we don't find one, then that should mean that the parent
41659          // host component also hasn't hydrated yet. We can return it
41660          // below since it will bail out on the isMounted check later.
41661        }
41662      }
41663
41664      return targetInst;
41665    }
41666
41667    targetNode = parentNode;
41668    parentNode = targetNode.parentNode;
41669  }
41670
41671  return null;
41672}
41673/**
41674 * Given a DOM node, return the ReactDOMComponent or ReactDOMTextComponent
41675 * instance, or null if the node was not rendered by this React.
41676 */
41677
41678function getInstanceFromNode(node) {
41679  var inst = node[internalInstanceKey] || node[internalContainerInstanceKey];
41680
41681  if (inst) {
41682    if (inst.tag === HostComponent || inst.tag === HostText || inst.tag === SuspenseComponent || inst.tag === HostRoot) {
41683      return inst;
41684    } else {
41685      return null;
41686    }
41687  }
41688
41689  return null;
41690}
41691/**
41692 * Given a ReactDOMComponent or ReactDOMTextComponent, return the corresponding
41693 * DOM node.
41694 */
41695
41696function getNodeFromInstance(inst) {
41697  if (inst.tag === HostComponent || inst.tag === HostText) {
41698    // In Fiber this, is just the state node right now. We assume it will be
41699    // a host component or host text.
41700    return inst.stateNode;
41701  } // Without this first invariant, passing a non-DOM-component triggers the next
41702  // invariant for a missing parent, which is super confusing.
41703
41704
41705  {
41706    {
41707      throw Error( "getNodeFromInstance: Invalid argument." );
41708    }
41709  }
41710}
41711function getFiberCurrentPropsFromNode(node) {
41712  return node[internalPropsKey] || null;
41713}
41714function updateFiberProps(node, props) {
41715  node[internalPropsKey] = props;
41716}
41717function getEventListenerSet(node) {
41718  var elementListenerSet = node[internalEventHandlersKey];
41719
41720  if (elementListenerSet === undefined) {
41721    elementListenerSet = node[internalEventHandlersKey] = new Set();
41722  }
41723
41724  return elementListenerSet;
41725}
41726
41727var loggedTypeFailures = {};
41728var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
41729
41730function setCurrentlyValidatingElement(element) {
41731  {
41732    if (element) {
41733      var owner = element._owner;
41734      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
41735      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
41736    } else {
41737      ReactDebugCurrentFrame$1.setExtraStackFrame(null);
41738    }
41739  }
41740}
41741
41742function checkPropTypes(typeSpecs, values, location, componentName, element) {
41743  {
41744    // $FlowFixMe This is okay but Flow doesn't know it.
41745    var has = Function.call.bind(Object.prototype.hasOwnProperty);
41746
41747    for (var typeSpecName in typeSpecs) {
41748      if (has(typeSpecs, typeSpecName)) {
41749        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
41750        // fail the render phase where it didn't fail before. So we log it.
41751        // After these have been cleaned up, we'll let them throw.
41752
41753        try {
41754          // This is intentionally an invariant that gets caught. It's the same
41755          // behavior as without this statement except with a better message.
41756          if (typeof typeSpecs[typeSpecName] !== 'function') {
41757            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
41758            err.name = 'Invariant Violation';
41759            throw err;
41760          }
41761
41762          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
41763        } catch (ex) {
41764          error$1 = ex;
41765        }
41766
41767        if (error$1 && !(error$1 instanceof Error)) {
41768          setCurrentlyValidatingElement(element);
41769
41770          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
41771
41772          setCurrentlyValidatingElement(null);
41773        }
41774
41775        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
41776          // Only monitor this failure once because there tends to be a lot of the
41777          // same error.
41778          loggedTypeFailures[error$1.message] = true;
41779          setCurrentlyValidatingElement(element);
41780
41781          error('Failed %s type: %s', location, error$1.message);
41782
41783          setCurrentlyValidatingElement(null);
41784        }
41785      }
41786    }
41787  }
41788}
41789
41790var valueStack = [];
41791var fiberStack;
41792
41793{
41794  fiberStack = [];
41795}
41796
41797var index = -1;
41798
41799function createCursor(defaultValue) {
41800  return {
41801    current: defaultValue
41802  };
41803}
41804
41805function pop(cursor, fiber) {
41806  if (index < 0) {
41807    {
41808      error('Unexpected pop.');
41809    }
41810
41811    return;
41812  }
41813
41814  {
41815    if (fiber !== fiberStack[index]) {
41816      error('Unexpected Fiber popped.');
41817    }
41818  }
41819
41820  cursor.current = valueStack[index];
41821  valueStack[index] = null;
41822
41823  {
41824    fiberStack[index] = null;
41825  }
41826
41827  index--;
41828}
41829
41830function push(cursor, value, fiber) {
41831  index++;
41832  valueStack[index] = cursor.current;
41833
41834  {
41835    fiberStack[index] = fiber;
41836  }
41837
41838  cursor.current = value;
41839}
41840
41841var warnedAboutMissingGetChildContext;
41842
41843{
41844  warnedAboutMissingGetChildContext = {};
41845}
41846
41847var emptyContextObject = {};
41848
41849{
41850  Object.freeze(emptyContextObject);
41851} // A cursor to the current merged context object on the stack.
41852
41853
41854var contextStackCursor = createCursor(emptyContextObject); // A cursor to a boolean indicating whether the context has changed.
41855
41856var didPerformWorkStackCursor = createCursor(false); // Keep track of the previous context object that was on the stack.
41857// We use this to get access to the parent context after we have already
41858// pushed the next context provider, and now need to merge their contexts.
41859
41860var previousContext = emptyContextObject;
41861
41862function getUnmaskedContext(workInProgress, Component, didPushOwnContextIfProvider) {
41863  {
41864    if (didPushOwnContextIfProvider && isContextProvider(Component)) {
41865      // If the fiber is a context provider itself, when we read its context
41866      // we may have already pushed its own child context on the stack. A context
41867      // provider should not "see" its own child context. Therefore we read the
41868      // previous (parent) context instead for a context provider.
41869      return previousContext;
41870    }
41871
41872    return contextStackCursor.current;
41873  }
41874}
41875
41876function cacheContext(workInProgress, unmaskedContext, maskedContext) {
41877  {
41878    var instance = workInProgress.stateNode;
41879    instance.__reactInternalMemoizedUnmaskedChildContext = unmaskedContext;
41880    instance.__reactInternalMemoizedMaskedChildContext = maskedContext;
41881  }
41882}
41883
41884function getMaskedContext(workInProgress, unmaskedContext) {
41885  {
41886    var type = workInProgress.type;
41887    var contextTypes = type.contextTypes;
41888
41889    if (!contextTypes) {
41890      return emptyContextObject;
41891    } // Avoid recreating masked context unless unmasked context has changed.
41892    // Failing to do this will result in unnecessary calls to componentWillReceiveProps.
41893    // This may trigger infinite loops if componentWillReceiveProps calls setState.
41894
41895
41896    var instance = workInProgress.stateNode;
41897
41898    if (instance && instance.__reactInternalMemoizedUnmaskedChildContext === unmaskedContext) {
41899      return instance.__reactInternalMemoizedMaskedChildContext;
41900    }
41901
41902    var context = {};
41903
41904    for (var key in contextTypes) {
41905      context[key] = unmaskedContext[key];
41906    }
41907
41908    {
41909      var name = getComponentName(type) || 'Unknown';
41910      checkPropTypes(contextTypes, context, 'context', name);
41911    } // Cache unmasked context so we can avoid recreating masked context unless necessary.
41912    // Context is created before the class component is instantiated so check for instance.
41913
41914
41915    if (instance) {
41916      cacheContext(workInProgress, unmaskedContext, context);
41917    }
41918
41919    return context;
41920  }
41921}
41922
41923function hasContextChanged() {
41924  {
41925    return didPerformWorkStackCursor.current;
41926  }
41927}
41928
41929function isContextProvider(type) {
41930  {
41931    var childContextTypes = type.childContextTypes;
41932    return childContextTypes !== null && childContextTypes !== undefined;
41933  }
41934}
41935
41936function popContext(fiber) {
41937  {
41938    pop(didPerformWorkStackCursor, fiber);
41939    pop(contextStackCursor, fiber);
41940  }
41941}
41942
41943function popTopLevelContextObject(fiber) {
41944  {
41945    pop(didPerformWorkStackCursor, fiber);
41946    pop(contextStackCursor, fiber);
41947  }
41948}
41949
41950function pushTopLevelContextObject(fiber, context, didChange) {
41951  {
41952    if (!(contextStackCursor.current === emptyContextObject)) {
41953      {
41954        throw Error( "Unexpected context found on stack. This error is likely caused by a bug in React. Please file an issue." );
41955      }
41956    }
41957
41958    push(contextStackCursor, context, fiber);
41959    push(didPerformWorkStackCursor, didChange, fiber);
41960  }
41961}
41962
41963function processChildContext(fiber, type, parentContext) {
41964  {
41965    var instance = fiber.stateNode;
41966    var childContextTypes = type.childContextTypes; // TODO (bvaughn) Replace this behavior with an invariant() in the future.
41967    // It has only been added in Fiber to match the (unintentional) behavior in Stack.
41968
41969    if (typeof instance.getChildContext !== 'function') {
41970      {
41971        var componentName = getComponentName(type) || 'Unknown';
41972
41973        if (!warnedAboutMissingGetChildContext[componentName]) {
41974          warnedAboutMissingGetChildContext[componentName] = true;
41975
41976          error('%s.childContextTypes is specified but there is no getChildContext() method ' + 'on the instance. You can either define getChildContext() on %s or remove ' + 'childContextTypes from it.', componentName, componentName);
41977        }
41978      }
41979
41980      return parentContext;
41981    }
41982
41983    var childContext = instance.getChildContext();
41984
41985    for (var contextKey in childContext) {
41986      if (!(contextKey in childContextTypes)) {
41987        {
41988          throw Error( (getComponentName(type) || 'Unknown') + ".getChildContext(): key \"" + contextKey + "\" is not defined in childContextTypes." );
41989        }
41990      }
41991    }
41992
41993    {
41994      var name = getComponentName(type) || 'Unknown';
41995      checkPropTypes(childContextTypes, childContext, 'child context', name);
41996    }
41997
41998    return _assign({}, parentContext, childContext);
41999  }
42000}
42001
42002function pushContextProvider(workInProgress) {
42003  {
42004    var instance = workInProgress.stateNode; // We push the context as early as possible to ensure stack integrity.
42005    // If the instance does not exist yet, we will push null at first,
42006    // and replace it on the stack later when invalidating the context.
42007
42008    var memoizedMergedChildContext = instance && instance.__reactInternalMemoizedMergedChildContext || emptyContextObject; // Remember the parent context so we can merge with it later.
42009    // Inherit the parent's did-perform-work value to avoid inadvertently blocking updates.
42010
42011    previousContext = contextStackCursor.current;
42012    push(contextStackCursor, memoizedMergedChildContext, workInProgress);
42013    push(didPerformWorkStackCursor, didPerformWorkStackCursor.current, workInProgress);
42014    return true;
42015  }
42016}
42017
42018function invalidateContextProvider(workInProgress, type, didChange) {
42019  {
42020    var instance = workInProgress.stateNode;
42021
42022    if (!instance) {
42023      {
42024        throw Error( "Expected to have an instance by this point. This error is likely caused by a bug in React. Please file an issue." );
42025      }
42026    }
42027
42028    if (didChange) {
42029      // Merge parent and own context.
42030      // Skip this if we're not updating due to sCU.
42031      // This avoids unnecessarily recomputing memoized values.
42032      var mergedContext = processChildContext(workInProgress, type, previousContext);
42033      instance.__reactInternalMemoizedMergedChildContext = mergedContext; // Replace the old (or empty) context with the new one.
42034      // It is important to unwind the context in the reverse order.
42035
42036      pop(didPerformWorkStackCursor, workInProgress);
42037      pop(contextStackCursor, workInProgress); // Now push the new context and mark that it has changed.
42038
42039      push(contextStackCursor, mergedContext, workInProgress);
42040      push(didPerformWorkStackCursor, didChange, workInProgress);
42041    } else {
42042      pop(didPerformWorkStackCursor, workInProgress);
42043      push(didPerformWorkStackCursor, didChange, workInProgress);
42044    }
42045  }
42046}
42047
42048function findCurrentUnmaskedContext(fiber) {
42049  {
42050    // Currently this is only used with renderSubtreeIntoContainer; not sure if it
42051    // makes sense elsewhere
42052    if (!(isFiberMounted(fiber) && fiber.tag === ClassComponent)) {
42053      {
42054        throw Error( "Expected subtree parent to be a mounted class component. This error is likely caused by a bug in React. Please file an issue." );
42055      }
42056    }
42057
42058    var node = fiber;
42059
42060    do {
42061      switch (node.tag) {
42062        case HostRoot:
42063          return node.stateNode.context;
42064
42065        case ClassComponent:
42066          {
42067            var Component = node.type;
42068
42069            if (isContextProvider(Component)) {
42070              return node.stateNode.__reactInternalMemoizedMergedChildContext;
42071            }
42072
42073            break;
42074          }
42075      }
42076
42077      node = node.return;
42078    } while (node !== null);
42079
42080    {
42081      {
42082        throw Error( "Found unexpected detached subtree parent. This error is likely caused by a bug in React. Please file an issue." );
42083      }
42084    }
42085  }
42086}
42087
42088var LegacyRoot = 0;
42089var BlockingRoot = 1;
42090var ConcurrentRoot = 2;
42091
42092var rendererID = null;
42093var injectedHook = null;
42094var hasLoggedError = false;
42095var isDevToolsPresent = typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ !== 'undefined';
42096function injectInternals(internals) {
42097  if (typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined') {
42098    // No DevTools
42099    return false;
42100  }
42101
42102  var hook = __REACT_DEVTOOLS_GLOBAL_HOOK__;
42103
42104  if (hook.isDisabled) {
42105    // This isn't a real property on the hook, but it can be set to opt out
42106    // of DevTools integration and associated warnings and logs.
42107    // https://github.com/facebook/react/issues/3877
42108    return true;
42109  }
42110
42111  if (!hook.supportsFiber) {
42112    {
42113      error('The installed version of React DevTools is too old and will not work ' + 'with the current version of React. Please update React DevTools. ' + 'https://reactjs.org/link/react-devtools');
42114    } // DevTools exists, even though it doesn't support Fiber.
42115
42116
42117    return true;
42118  }
42119
42120  try {
42121    rendererID = hook.inject(internals); // We have successfully injected, so now it is safe to set up hooks.
42122
42123    injectedHook = hook;
42124  } catch (err) {
42125    // Catch all errors because it is unsafe to throw during initialization.
42126    {
42127      error('React instrumentation encountered an error: %s.', err);
42128    }
42129  } // DevTools exists
42130
42131
42132  return true;
42133}
42134function onScheduleRoot(root, children) {
42135  {
42136    if (injectedHook && typeof injectedHook.onScheduleFiberRoot === 'function') {
42137      try {
42138        injectedHook.onScheduleFiberRoot(rendererID, root, children);
42139      } catch (err) {
42140        if ( !hasLoggedError) {
42141          hasLoggedError = true;
42142
42143          error('React instrumentation encountered an error: %s', err);
42144        }
42145      }
42146    }
42147  }
42148}
42149function onCommitRoot(root, priorityLevel) {
42150  if (injectedHook && typeof injectedHook.onCommitFiberRoot === 'function') {
42151    try {
42152      var didError = (root.current.flags & DidCapture) === DidCapture;
42153
42154      if (enableProfilerTimer) {
42155        injectedHook.onCommitFiberRoot(rendererID, root, priorityLevel, didError);
42156      } else {
42157        injectedHook.onCommitFiberRoot(rendererID, root, undefined, didError);
42158      }
42159    } catch (err) {
42160      {
42161        if (!hasLoggedError) {
42162          hasLoggedError = true;
42163
42164          error('React instrumentation encountered an error: %s', err);
42165        }
42166      }
42167    }
42168  }
42169}
42170function onCommitUnmount(fiber) {
42171  if (injectedHook && typeof injectedHook.onCommitFiberUnmount === 'function') {
42172    try {
42173      injectedHook.onCommitFiberUnmount(rendererID, fiber);
42174    } catch (err) {
42175      {
42176        if (!hasLoggedError) {
42177          hasLoggedError = true;
42178
42179          error('React instrumentation encountered an error: %s', err);
42180        }
42181      }
42182    }
42183  }
42184}
42185
42186var Scheduler_runWithPriority = Scheduler.unstable_runWithPriority,
42187    Scheduler_scheduleCallback = Scheduler.unstable_scheduleCallback,
42188    Scheduler_cancelCallback = Scheduler.unstable_cancelCallback,
42189    Scheduler_shouldYield = Scheduler.unstable_shouldYield,
42190    Scheduler_requestPaint = Scheduler.unstable_requestPaint,
42191    Scheduler_now$1 = Scheduler.unstable_now,
42192    Scheduler_getCurrentPriorityLevel = Scheduler.unstable_getCurrentPriorityLevel,
42193    Scheduler_ImmediatePriority = Scheduler.unstable_ImmediatePriority,
42194    Scheduler_UserBlockingPriority = Scheduler.unstable_UserBlockingPriority,
42195    Scheduler_NormalPriority = Scheduler.unstable_NormalPriority,
42196    Scheduler_LowPriority = Scheduler.unstable_LowPriority,
42197    Scheduler_IdlePriority = Scheduler.unstable_IdlePriority;
42198
42199{
42200  // Provide explicit error message when production+profiling bundle of e.g.
42201  // react-dom is used with production (non-profiling) bundle of
42202  // scheduler/tracing
42203  if (!(tracing.__interactionsRef != null && tracing.__interactionsRef.current != null)) {
42204    {
42205      throw Error( "It is not supported to run the profiling version of a renderer (for example, `react-dom/profiling`) without also replacing the `scheduler/tracing` module with `scheduler/tracing-profiling`. Your bundler might have a setting for aliasing both modules. Learn more at https://reactjs.org/link/profiling" );
42206    }
42207  }
42208}
42209
42210var fakeCallbackNode = {}; // Except for NoPriority, these correspond to Scheduler priorities. We use
42211// ascending numbers so we can compare them like numbers. They start at 90 to
42212// avoid clashing with Scheduler's priorities.
42213
42214var ImmediatePriority$1 = 99;
42215var UserBlockingPriority$2 = 98;
42216var NormalPriority$1 = 97;
42217var LowPriority$1 = 96;
42218var IdlePriority$1 = 95; // NoPriority is the absence of priority. Also React-only.
42219
42220var NoPriority$1 = 90;
42221var shouldYield = Scheduler_shouldYield;
42222var requestPaint = // Fall back gracefully if we're running an older version of Scheduler.
42223Scheduler_requestPaint !== undefined ? Scheduler_requestPaint : function () {};
42224var syncQueue = null;
42225var immediateQueueCallbackNode = null;
42226var isFlushingSyncQueue = false;
42227var initialTimeMs$1 = Scheduler_now$1(); // If the initial timestamp is reasonably small, use Scheduler's `now` directly.
42228// This will be the case for modern browsers that support `performance.now`. In
42229// older browsers, Scheduler falls back to `Date.now`, which returns a Unix
42230// timestamp. In that case, subtract the module initialization time to simulate
42231// the behavior of performance.now and keep our times small enough to fit
42232// within 32 bits.
42233// TODO: Consider lifting this into Scheduler.
42234
42235var now = initialTimeMs$1 < 10000 ? Scheduler_now$1 : function () {
42236  return Scheduler_now$1() - initialTimeMs$1;
42237};
42238function getCurrentPriorityLevel() {
42239  switch (Scheduler_getCurrentPriorityLevel()) {
42240    case Scheduler_ImmediatePriority:
42241      return ImmediatePriority$1;
42242
42243    case Scheduler_UserBlockingPriority:
42244      return UserBlockingPriority$2;
42245
42246    case Scheduler_NormalPriority:
42247      return NormalPriority$1;
42248
42249    case Scheduler_LowPriority:
42250      return LowPriority$1;
42251
42252    case Scheduler_IdlePriority:
42253      return IdlePriority$1;
42254
42255    default:
42256      {
42257        {
42258          throw Error( "Unknown priority level." );
42259        }
42260      }
42261
42262  }
42263}
42264
42265function reactPriorityToSchedulerPriority(reactPriorityLevel) {
42266  switch (reactPriorityLevel) {
42267    case ImmediatePriority$1:
42268      return Scheduler_ImmediatePriority;
42269
42270    case UserBlockingPriority$2:
42271      return Scheduler_UserBlockingPriority;
42272
42273    case NormalPriority$1:
42274      return Scheduler_NormalPriority;
42275
42276    case LowPriority$1:
42277      return Scheduler_LowPriority;
42278
42279    case IdlePriority$1:
42280      return Scheduler_IdlePriority;
42281
42282    default:
42283      {
42284        {
42285          throw Error( "Unknown priority level." );
42286        }
42287      }
42288
42289  }
42290}
42291
42292function runWithPriority$1(reactPriorityLevel, fn) {
42293  var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);
42294  return Scheduler_runWithPriority(priorityLevel, fn);
42295}
42296function scheduleCallback(reactPriorityLevel, callback, options) {
42297  var priorityLevel = reactPriorityToSchedulerPriority(reactPriorityLevel);
42298  return Scheduler_scheduleCallback(priorityLevel, callback, options);
42299}
42300function scheduleSyncCallback(callback) {
42301  // Push this callback into an internal queue. We'll flush these either in
42302  // the next tick, or earlier if something calls `flushSyncCallbackQueue`.
42303  if (syncQueue === null) {
42304    syncQueue = [callback]; // Flush the queue in the next tick, at the earliest.
42305
42306    immediateQueueCallbackNode = Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueueImpl);
42307  } else {
42308    // Push onto existing queue. Don't need to schedule a callback because
42309    // we already scheduled one when we created the queue.
42310    syncQueue.push(callback);
42311  }
42312
42313  return fakeCallbackNode;
42314}
42315function cancelCallback(callbackNode) {
42316  if (callbackNode !== fakeCallbackNode) {
42317    Scheduler_cancelCallback(callbackNode);
42318  }
42319}
42320function flushSyncCallbackQueue() {
42321  if (immediateQueueCallbackNode !== null) {
42322    var node = immediateQueueCallbackNode;
42323    immediateQueueCallbackNode = null;
42324    Scheduler_cancelCallback(node);
42325  }
42326
42327  flushSyncCallbackQueueImpl();
42328}
42329
42330function flushSyncCallbackQueueImpl() {
42331  if (!isFlushingSyncQueue && syncQueue !== null) {
42332    // Prevent re-entrancy.
42333    isFlushingSyncQueue = true;
42334    var i = 0;
42335
42336    {
42337      try {
42338        var _isSync2 = true;
42339        var _queue = syncQueue;
42340        runWithPriority$1(ImmediatePriority$1, function () {
42341          for (; i < _queue.length; i++) {
42342            var callback = _queue[i];
42343
42344            do {
42345              callback = callback(_isSync2);
42346            } while (callback !== null);
42347          }
42348        });
42349        syncQueue = null;
42350      } catch (error) {
42351        // If something throws, leave the remaining callbacks on the queue.
42352        if (syncQueue !== null) {
42353          syncQueue = syncQueue.slice(i + 1);
42354        } // Resume flushing in the next tick
42355
42356
42357        Scheduler_scheduleCallback(Scheduler_ImmediatePriority, flushSyncCallbackQueue);
42358        throw error;
42359      } finally {
42360        isFlushingSyncQueue = false;
42361      }
42362    }
42363  }
42364}
42365
42366// TODO: this is special because it gets imported during build.
42367var ReactVersion = '17.0.2';
42368
42369var NoMode = 0;
42370var StrictMode = 1; // TODO: Remove BlockingMode and ConcurrentMode by reading from the root
42371// tag instead
42372
42373var BlockingMode = 2;
42374var ConcurrentMode = 4;
42375var ProfileMode = 8;
42376var DebugTracingMode = 16;
42377
42378var ReactCurrentBatchConfig = ReactSharedInternals.ReactCurrentBatchConfig;
42379var NoTransition = 0;
42380function requestCurrentTransition() {
42381  return ReactCurrentBatchConfig.transition;
42382}
42383
42384var ReactStrictModeWarnings = {
42385  recordUnsafeLifecycleWarnings: function (fiber, instance) {},
42386  flushPendingUnsafeLifecycleWarnings: function () {},
42387  recordLegacyContextWarning: function (fiber, instance) {},
42388  flushLegacyContextWarning: function () {},
42389  discardPendingWarnings: function () {}
42390};
42391
42392{
42393  var findStrictRoot = function (fiber) {
42394    var maybeStrictRoot = null;
42395    var node = fiber;
42396
42397    while (node !== null) {
42398      if (node.mode & StrictMode) {
42399        maybeStrictRoot = node;
42400      }
42401
42402      node = node.return;
42403    }
42404
42405    return maybeStrictRoot;
42406  };
42407
42408  var setToSortedString = function (set) {
42409    var array = [];
42410    set.forEach(function (value) {
42411      array.push(value);
42412    });
42413    return array.sort().join(', ');
42414  };
42415
42416  var pendingComponentWillMountWarnings = [];
42417  var pendingUNSAFE_ComponentWillMountWarnings = [];
42418  var pendingComponentWillReceivePropsWarnings = [];
42419  var pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
42420  var pendingComponentWillUpdateWarnings = [];
42421  var pendingUNSAFE_ComponentWillUpdateWarnings = []; // Tracks components we have already warned about.
42422
42423  var didWarnAboutUnsafeLifecycles = new Set();
42424
42425  ReactStrictModeWarnings.recordUnsafeLifecycleWarnings = function (fiber, instance) {
42426    // Dedup strategy: Warn once per component.
42427    if (didWarnAboutUnsafeLifecycles.has(fiber.type)) {
42428      return;
42429    }
42430
42431    if (typeof instance.componentWillMount === 'function' && // Don't warn about react-lifecycles-compat polyfilled components.
42432    instance.componentWillMount.__suppressDeprecationWarning !== true) {
42433      pendingComponentWillMountWarnings.push(fiber);
42434    }
42435
42436    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillMount === 'function') {
42437      pendingUNSAFE_ComponentWillMountWarnings.push(fiber);
42438    }
42439
42440    if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
42441      pendingComponentWillReceivePropsWarnings.push(fiber);
42442    }
42443
42444    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
42445      pendingUNSAFE_ComponentWillReceivePropsWarnings.push(fiber);
42446    }
42447
42448    if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
42449      pendingComponentWillUpdateWarnings.push(fiber);
42450    }
42451
42452    if (fiber.mode & StrictMode && typeof instance.UNSAFE_componentWillUpdate === 'function') {
42453      pendingUNSAFE_ComponentWillUpdateWarnings.push(fiber);
42454    }
42455  };
42456
42457  ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings = function () {
42458    // We do an initial pass to gather component names
42459    var componentWillMountUniqueNames = new Set();
42460
42461    if (pendingComponentWillMountWarnings.length > 0) {
42462      pendingComponentWillMountWarnings.forEach(function (fiber) {
42463        componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');
42464        didWarnAboutUnsafeLifecycles.add(fiber.type);
42465      });
42466      pendingComponentWillMountWarnings = [];
42467    }
42468
42469    var UNSAFE_componentWillMountUniqueNames = new Set();
42470
42471    if (pendingUNSAFE_ComponentWillMountWarnings.length > 0) {
42472      pendingUNSAFE_ComponentWillMountWarnings.forEach(function (fiber) {
42473        UNSAFE_componentWillMountUniqueNames.add(getComponentName(fiber.type) || 'Component');
42474        didWarnAboutUnsafeLifecycles.add(fiber.type);
42475      });
42476      pendingUNSAFE_ComponentWillMountWarnings = [];
42477    }
42478
42479    var componentWillReceivePropsUniqueNames = new Set();
42480
42481    if (pendingComponentWillReceivePropsWarnings.length > 0) {
42482      pendingComponentWillReceivePropsWarnings.forEach(function (fiber) {
42483        componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');
42484        didWarnAboutUnsafeLifecycles.add(fiber.type);
42485      });
42486      pendingComponentWillReceivePropsWarnings = [];
42487    }
42488
42489    var UNSAFE_componentWillReceivePropsUniqueNames = new Set();
42490
42491    if (pendingUNSAFE_ComponentWillReceivePropsWarnings.length > 0) {
42492      pendingUNSAFE_ComponentWillReceivePropsWarnings.forEach(function (fiber) {
42493        UNSAFE_componentWillReceivePropsUniqueNames.add(getComponentName(fiber.type) || 'Component');
42494        didWarnAboutUnsafeLifecycles.add(fiber.type);
42495      });
42496      pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
42497    }
42498
42499    var componentWillUpdateUniqueNames = new Set();
42500
42501    if (pendingComponentWillUpdateWarnings.length > 0) {
42502      pendingComponentWillUpdateWarnings.forEach(function (fiber) {
42503        componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');
42504        didWarnAboutUnsafeLifecycles.add(fiber.type);
42505      });
42506      pendingComponentWillUpdateWarnings = [];
42507    }
42508
42509    var UNSAFE_componentWillUpdateUniqueNames = new Set();
42510
42511    if (pendingUNSAFE_ComponentWillUpdateWarnings.length > 0) {
42512      pendingUNSAFE_ComponentWillUpdateWarnings.forEach(function (fiber) {
42513        UNSAFE_componentWillUpdateUniqueNames.add(getComponentName(fiber.type) || 'Component');
42514        didWarnAboutUnsafeLifecycles.add(fiber.type);
42515      });
42516      pendingUNSAFE_ComponentWillUpdateWarnings = [];
42517    } // Finally, we flush all the warnings
42518    // UNSAFE_ ones before the deprecated ones, since they'll be 'louder'
42519
42520
42521    if (UNSAFE_componentWillMountUniqueNames.size > 0) {
42522      var sortedNames = setToSortedString(UNSAFE_componentWillMountUniqueNames);
42523
42524      error('Using UNSAFE_componentWillMount in strict mode is not recommended and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '\nPlease update the following components: %s', sortedNames);
42525    }
42526
42527    if (UNSAFE_componentWillReceivePropsUniqueNames.size > 0) {
42528      var _sortedNames = setToSortedString(UNSAFE_componentWillReceivePropsUniqueNames);
42529
42530      error('Using UNSAFE_componentWillReceiveProps in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, " + 'refactor your code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\n' + '\nPlease update the following components: %s', _sortedNames);
42531    }
42532
42533    if (UNSAFE_componentWillUpdateUniqueNames.size > 0) {
42534      var _sortedNames2 = setToSortedString(UNSAFE_componentWillUpdateUniqueNames);
42535
42536      error('Using UNSAFE_componentWillUpdate in strict mode is not recommended ' + 'and may indicate bugs in your code. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '\nPlease update the following components: %s', _sortedNames2);
42537    }
42538
42539    if (componentWillMountUniqueNames.size > 0) {
42540      var _sortedNames3 = setToSortedString(componentWillMountUniqueNames);
42541
42542      warn('componentWillMount has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move code with side effects to componentDidMount, and set initial state in the constructor.\n' + '* Rename componentWillMount to UNSAFE_componentWillMount to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames3);
42543    }
42544
42545    if (componentWillReceivePropsUniqueNames.size > 0) {
42546      var _sortedNames4 = setToSortedString(componentWillReceivePropsUniqueNames);
42547
42548      warn('componentWillReceiveProps has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + "* If you're updating state whenever props change, refactor your " + 'code to use memoization techniques or move it to ' + 'static getDerivedStateFromProps. Learn more at: https://reactjs.org/link/derived-state\n' + '* Rename componentWillReceiveProps to UNSAFE_componentWillReceiveProps to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames4);
42549    }
42550
42551    if (componentWillUpdateUniqueNames.size > 0) {
42552      var _sortedNames5 = setToSortedString(componentWillUpdateUniqueNames);
42553
42554      warn('componentWillUpdate has been renamed, and is not recommended for use. ' + 'See https://reactjs.org/link/unsafe-component-lifecycles for details.\n\n' + '* Move data fetching code or side effects to componentDidUpdate.\n' + '* Rename componentWillUpdate to UNSAFE_componentWillUpdate to suppress ' + 'this warning in non-strict mode. In React 18.x, only the UNSAFE_ name will work. ' + 'To rename all deprecated lifecycles to their new names, you can run ' + '`npx react-codemod rename-unsafe-lifecycles` in your project source folder.\n' + '\nPlease update the following components: %s', _sortedNames5);
42555    }
42556  };
42557
42558  var pendingLegacyContextWarning = new Map(); // Tracks components we have already warned about.
42559
42560  var didWarnAboutLegacyContext = new Set();
42561
42562  ReactStrictModeWarnings.recordLegacyContextWarning = function (fiber, instance) {
42563    var strictRoot = findStrictRoot(fiber);
42564
42565    if (strictRoot === null) {
42566      error('Expected to find a StrictMode component in a strict mode tree. ' + 'This error is likely caused by a bug in React. Please file an issue.');
42567
42568      return;
42569    } // Dedup strategy: Warn once per component.
42570
42571
42572    if (didWarnAboutLegacyContext.has(fiber.type)) {
42573      return;
42574    }
42575
42576    var warningsForRoot = pendingLegacyContextWarning.get(strictRoot);
42577
42578    if (fiber.type.contextTypes != null || fiber.type.childContextTypes != null || instance !== null && typeof instance.getChildContext === 'function') {
42579      if (warningsForRoot === undefined) {
42580        warningsForRoot = [];
42581        pendingLegacyContextWarning.set(strictRoot, warningsForRoot);
42582      }
42583
42584      warningsForRoot.push(fiber);
42585    }
42586  };
42587
42588  ReactStrictModeWarnings.flushLegacyContextWarning = function () {
42589    pendingLegacyContextWarning.forEach(function (fiberArray, strictRoot) {
42590      if (fiberArray.length === 0) {
42591        return;
42592      }
42593
42594      var firstFiber = fiberArray[0];
42595      var uniqueNames = new Set();
42596      fiberArray.forEach(function (fiber) {
42597        uniqueNames.add(getComponentName(fiber.type) || 'Component');
42598        didWarnAboutLegacyContext.add(fiber.type);
42599      });
42600      var sortedNames = setToSortedString(uniqueNames);
42601
42602      try {
42603        setCurrentFiber(firstFiber);
42604
42605        error('Legacy context API has been detected within a strict-mode tree.' + '\n\nThe old API will be supported in all 16.x releases, but applications ' + 'using it should migrate to the new version.' + '\n\nPlease update the following components: %s' + '\n\nLearn more about this warning here: https://reactjs.org/link/legacy-context', sortedNames);
42606      } finally {
42607        resetCurrentFiber();
42608      }
42609    });
42610  };
42611
42612  ReactStrictModeWarnings.discardPendingWarnings = function () {
42613    pendingComponentWillMountWarnings = [];
42614    pendingUNSAFE_ComponentWillMountWarnings = [];
42615    pendingComponentWillReceivePropsWarnings = [];
42616    pendingUNSAFE_ComponentWillReceivePropsWarnings = [];
42617    pendingComponentWillUpdateWarnings = [];
42618    pendingUNSAFE_ComponentWillUpdateWarnings = [];
42619    pendingLegacyContextWarning = new Map();
42620  };
42621}
42622
42623function resolveDefaultProps(Component, baseProps) {
42624  if (Component && Component.defaultProps) {
42625    // Resolve default props. Taken from ReactElement
42626    var props = _assign({}, baseProps);
42627
42628    var defaultProps = Component.defaultProps;
42629
42630    for (var propName in defaultProps) {
42631      if (props[propName] === undefined) {
42632        props[propName] = defaultProps[propName];
42633      }
42634    }
42635
42636    return props;
42637  }
42638
42639  return baseProps;
42640}
42641
42642// Max 31 bit integer. The max integer size in V8 for 32-bit systems.
42643// Math.pow(2, 30) - 1
42644// 0b111111111111111111111111111111
42645var MAX_SIGNED_31_BIT_INT = 1073741823;
42646
42647var valueCursor = createCursor(null);
42648var rendererSigil;
42649
42650{
42651  // Use this to detect multiple renderers using the same context
42652  rendererSigil = {};
42653}
42654
42655var currentlyRenderingFiber = null;
42656var lastContextDependency = null;
42657var lastContextWithAllBitsObserved = null;
42658var isDisallowedContextReadInDEV = false;
42659function resetContextDependencies() {
42660  // This is called right before React yields execution, to ensure `readContext`
42661  // cannot be called outside the render phase.
42662  currentlyRenderingFiber = null;
42663  lastContextDependency = null;
42664  lastContextWithAllBitsObserved = null;
42665
42666  {
42667    isDisallowedContextReadInDEV = false;
42668  }
42669}
42670function enterDisallowedContextReadInDEV() {
42671  {
42672    isDisallowedContextReadInDEV = true;
42673  }
42674}
42675function exitDisallowedContextReadInDEV() {
42676  {
42677    isDisallowedContextReadInDEV = false;
42678  }
42679}
42680function pushProvider(providerFiber, nextValue) {
42681  var context = providerFiber.type._context;
42682
42683  {
42684    push(valueCursor, context._currentValue, providerFiber);
42685    context._currentValue = nextValue;
42686
42687    {
42688      if (context._currentRenderer !== undefined && context._currentRenderer !== null && context._currentRenderer !== rendererSigil) {
42689        error('Detected multiple renderers concurrently rendering the ' + 'same context provider. This is currently unsupported.');
42690      }
42691
42692      context._currentRenderer = rendererSigil;
42693    }
42694  }
42695}
42696function popProvider(providerFiber) {
42697  var currentValue = valueCursor.current;
42698  pop(valueCursor, providerFiber);
42699  var context = providerFiber.type._context;
42700
42701  {
42702    context._currentValue = currentValue;
42703  }
42704}
42705function calculateChangedBits(context, newValue, oldValue) {
42706  if (objectIs(oldValue, newValue)) {
42707    // No change
42708    return 0;
42709  } else {
42710    var changedBits = typeof context._calculateChangedBits === 'function' ? context._calculateChangedBits(oldValue, newValue) : MAX_SIGNED_31_BIT_INT;
42711
42712    {
42713      if ((changedBits & MAX_SIGNED_31_BIT_INT) !== changedBits) {
42714        error('calculateChangedBits: Expected the return value to be a ' + '31-bit integer. Instead received: %s', changedBits);
42715      }
42716    }
42717
42718    return changedBits | 0;
42719  }
42720}
42721function scheduleWorkOnParentPath(parent, renderLanes) {
42722  // Update the child lanes of all the ancestors, including the alternates.
42723  var node = parent;
42724
42725  while (node !== null) {
42726    var alternate = node.alternate;
42727
42728    if (!isSubsetOfLanes(node.childLanes, renderLanes)) {
42729      node.childLanes = mergeLanes(node.childLanes, renderLanes);
42730
42731      if (alternate !== null) {
42732        alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);
42733      }
42734    } else if (alternate !== null && !isSubsetOfLanes(alternate.childLanes, renderLanes)) {
42735      alternate.childLanes = mergeLanes(alternate.childLanes, renderLanes);
42736    } else {
42737      // Neither alternate was updated, which means the rest of the
42738      // ancestor path already has sufficient priority.
42739      break;
42740    }
42741
42742    node = node.return;
42743  }
42744}
42745function propagateContextChange(workInProgress, context, changedBits, renderLanes) {
42746  var fiber = workInProgress.child;
42747
42748  if (fiber !== null) {
42749    // Set the return pointer of the child to the work-in-progress fiber.
42750    fiber.return = workInProgress;
42751  }
42752
42753  while (fiber !== null) {
42754    var nextFiber = void 0; // Visit this fiber.
42755
42756    var list = fiber.dependencies;
42757
42758    if (list !== null) {
42759      nextFiber = fiber.child;
42760      var dependency = list.firstContext;
42761
42762      while (dependency !== null) {
42763        // Check if the context matches.
42764        if (dependency.context === context && (dependency.observedBits & changedBits) !== 0) {
42765          // Match! Schedule an update on this fiber.
42766          if (fiber.tag === ClassComponent) {
42767            // Schedule a force update on the work-in-progress.
42768            var update = createUpdate(NoTimestamp, pickArbitraryLane(renderLanes));
42769            update.tag = ForceUpdate; // TODO: Because we don't have a work-in-progress, this will add the
42770            // update to the current fiber, too, which means it will persist even if
42771            // this render is thrown away. Since it's a race condition, not sure it's
42772            // worth fixing.
42773
42774            enqueueUpdate(fiber, update);
42775          }
42776
42777          fiber.lanes = mergeLanes(fiber.lanes, renderLanes);
42778          var alternate = fiber.alternate;
42779
42780          if (alternate !== null) {
42781            alternate.lanes = mergeLanes(alternate.lanes, renderLanes);
42782          }
42783
42784          scheduleWorkOnParentPath(fiber.return, renderLanes); // Mark the updated lanes on the list, too.
42785
42786          list.lanes = mergeLanes(list.lanes, renderLanes); // Since we already found a match, we can stop traversing the
42787          // dependency list.
42788
42789          break;
42790        }
42791
42792        dependency = dependency.next;
42793      }
42794    } else if (fiber.tag === ContextProvider) {
42795      // Don't scan deeper if this is a matching provider
42796      nextFiber = fiber.type === workInProgress.type ? null : fiber.child;
42797    } else {
42798      // Traverse down.
42799      nextFiber = fiber.child;
42800    }
42801
42802    if (nextFiber !== null) {
42803      // Set the return pointer of the child to the work-in-progress fiber.
42804      nextFiber.return = fiber;
42805    } else {
42806      // No child. Traverse to next sibling.
42807      nextFiber = fiber;
42808
42809      while (nextFiber !== null) {
42810        if (nextFiber === workInProgress) {
42811          // We're back to the root of this subtree. Exit.
42812          nextFiber = null;
42813          break;
42814        }
42815
42816        var sibling = nextFiber.sibling;
42817
42818        if (sibling !== null) {
42819          // Set the return pointer of the sibling to the work-in-progress fiber.
42820          sibling.return = nextFiber.return;
42821          nextFiber = sibling;
42822          break;
42823        } // No more siblings. Traverse up.
42824
42825
42826        nextFiber = nextFiber.return;
42827      }
42828    }
42829
42830    fiber = nextFiber;
42831  }
42832}
42833function prepareToReadContext(workInProgress, renderLanes) {
42834  currentlyRenderingFiber = workInProgress;
42835  lastContextDependency = null;
42836  lastContextWithAllBitsObserved = null;
42837  var dependencies = workInProgress.dependencies;
42838
42839  if (dependencies !== null) {
42840    var firstContext = dependencies.firstContext;
42841
42842    if (firstContext !== null) {
42843      if (includesSomeLane(dependencies.lanes, renderLanes)) {
42844        // Context list has a pending update. Mark that this fiber performed work.
42845        markWorkInProgressReceivedUpdate();
42846      } // Reset the work-in-progress list
42847
42848
42849      dependencies.firstContext = null;
42850    }
42851  }
42852}
42853function readContext(context, observedBits) {
42854  {
42855    // This warning would fire if you read context inside a Hook like useMemo.
42856    // Unlike the class check below, it's not enforced in production for perf.
42857    if (isDisallowedContextReadInDEV) {
42858      error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');
42859    }
42860  }
42861
42862  if (lastContextWithAllBitsObserved === context) ; else if (observedBits === false || observedBits === 0) ; else {
42863    var resolvedObservedBits; // Avoid deopting on observable arguments or heterogeneous types.
42864
42865    if (typeof observedBits !== 'number' || observedBits === MAX_SIGNED_31_BIT_INT) {
42866      // Observe all updates.
42867      lastContextWithAllBitsObserved = context;
42868      resolvedObservedBits = MAX_SIGNED_31_BIT_INT;
42869    } else {
42870      resolvedObservedBits = observedBits;
42871    }
42872
42873    var contextItem = {
42874      context: context,
42875      observedBits: resolvedObservedBits,
42876      next: null
42877    };
42878
42879    if (lastContextDependency === null) {
42880      if (!(currentlyRenderingFiber !== null)) {
42881        {
42882          throw Error( "Context can only be read while React is rendering. In classes, you can read it in the render method or getDerivedStateFromProps. In function components, you can read it directly in the function body, but not inside Hooks like useReducer() or useMemo()." );
42883        }
42884      } // This is the first dependency for this component. Create a new list.
42885
42886
42887      lastContextDependency = contextItem;
42888      currentlyRenderingFiber.dependencies = {
42889        lanes: NoLanes,
42890        firstContext: contextItem,
42891        responders: null
42892      };
42893    } else {
42894      // Append a new context item.
42895      lastContextDependency = lastContextDependency.next = contextItem;
42896    }
42897  }
42898
42899  return  context._currentValue ;
42900}
42901
42902var UpdateState = 0;
42903var ReplaceState = 1;
42904var ForceUpdate = 2;
42905var CaptureUpdate = 3; // Global state that is reset at the beginning of calling `processUpdateQueue`.
42906// It should only be read right after calling `processUpdateQueue`, via
42907// `checkHasForceUpdateAfterProcessing`.
42908
42909var hasForceUpdate = false;
42910var didWarnUpdateInsideUpdate;
42911var currentlyProcessingQueue;
42912
42913{
42914  didWarnUpdateInsideUpdate = false;
42915  currentlyProcessingQueue = null;
42916}
42917
42918function initializeUpdateQueue(fiber) {
42919  var queue = {
42920    baseState: fiber.memoizedState,
42921    firstBaseUpdate: null,
42922    lastBaseUpdate: null,
42923    shared: {
42924      pending: null
42925    },
42926    effects: null
42927  };
42928  fiber.updateQueue = queue;
42929}
42930function cloneUpdateQueue(current, workInProgress) {
42931  // Clone the update queue from current. Unless it's already a clone.
42932  var queue = workInProgress.updateQueue;
42933  var currentQueue = current.updateQueue;
42934
42935  if (queue === currentQueue) {
42936    var clone = {
42937      baseState: currentQueue.baseState,
42938      firstBaseUpdate: currentQueue.firstBaseUpdate,
42939      lastBaseUpdate: currentQueue.lastBaseUpdate,
42940      shared: currentQueue.shared,
42941      effects: currentQueue.effects
42942    };
42943    workInProgress.updateQueue = clone;
42944  }
42945}
42946function createUpdate(eventTime, lane) {
42947  var update = {
42948    eventTime: eventTime,
42949    lane: lane,
42950    tag: UpdateState,
42951    payload: null,
42952    callback: null,
42953    next: null
42954  };
42955  return update;
42956}
42957function enqueueUpdate(fiber, update) {
42958  var updateQueue = fiber.updateQueue;
42959
42960  if (updateQueue === null) {
42961    // Only occurs if the fiber has been unmounted.
42962    return;
42963  }
42964
42965  var sharedQueue = updateQueue.shared;
42966  var pending = sharedQueue.pending;
42967
42968  if (pending === null) {
42969    // This is the first update. Create a circular list.
42970    update.next = update;
42971  } else {
42972    update.next = pending.next;
42973    pending.next = update;
42974  }
42975
42976  sharedQueue.pending = update;
42977
42978  {
42979    if (currentlyProcessingQueue === sharedQueue && !didWarnUpdateInsideUpdate) {
42980      error('An update (setState, replaceState, or forceUpdate) was scheduled ' + 'from inside an update function. Update functions should be pure, ' + 'with zero side-effects. Consider using componentDidUpdate or a ' + 'callback.');
42981
42982      didWarnUpdateInsideUpdate = true;
42983    }
42984  }
42985}
42986function enqueueCapturedUpdate(workInProgress, capturedUpdate) {
42987  // Captured updates are updates that are thrown by a child during the render
42988  // phase. They should be discarded if the render is aborted. Therefore,
42989  // we should only put them on the work-in-progress queue, not the current one.
42990  var queue = workInProgress.updateQueue; // Check if the work-in-progress queue is a clone.
42991
42992  var current = workInProgress.alternate;
42993
42994  if (current !== null) {
42995    var currentQueue = current.updateQueue;
42996
42997    if (queue === currentQueue) {
42998      // The work-in-progress queue is the same as current. This happens when
42999      // we bail out on a parent fiber that then captures an error thrown by
43000      // a child. Since we want to append the update only to the work-in
43001      // -progress queue, we need to clone the updates. We usually clone during
43002      // processUpdateQueue, but that didn't happen in this case because we
43003      // skipped over the parent when we bailed out.
43004      var newFirst = null;
43005      var newLast = null;
43006      var firstBaseUpdate = queue.firstBaseUpdate;
43007
43008      if (firstBaseUpdate !== null) {
43009        // Loop through the updates and clone them.
43010        var update = firstBaseUpdate;
43011
43012        do {
43013          var clone = {
43014            eventTime: update.eventTime,
43015            lane: update.lane,
43016            tag: update.tag,
43017            payload: update.payload,
43018            callback: update.callback,
43019            next: null
43020          };
43021
43022          if (newLast === null) {
43023            newFirst = newLast = clone;
43024          } else {
43025            newLast.next = clone;
43026            newLast = clone;
43027          }
43028
43029          update = update.next;
43030        } while (update !== null); // Append the captured update the end of the cloned list.
43031
43032
43033        if (newLast === null) {
43034          newFirst = newLast = capturedUpdate;
43035        } else {
43036          newLast.next = capturedUpdate;
43037          newLast = capturedUpdate;
43038        }
43039      } else {
43040        // There are no base updates.
43041        newFirst = newLast = capturedUpdate;
43042      }
43043
43044      queue = {
43045        baseState: currentQueue.baseState,
43046        firstBaseUpdate: newFirst,
43047        lastBaseUpdate: newLast,
43048        shared: currentQueue.shared,
43049        effects: currentQueue.effects
43050      };
43051      workInProgress.updateQueue = queue;
43052      return;
43053    }
43054  } // Append the update to the end of the list.
43055
43056
43057  var lastBaseUpdate = queue.lastBaseUpdate;
43058
43059  if (lastBaseUpdate === null) {
43060    queue.firstBaseUpdate = capturedUpdate;
43061  } else {
43062    lastBaseUpdate.next = capturedUpdate;
43063  }
43064
43065  queue.lastBaseUpdate = capturedUpdate;
43066}
43067
43068function getStateFromUpdate(workInProgress, queue, update, prevState, nextProps, instance) {
43069  switch (update.tag) {
43070    case ReplaceState:
43071      {
43072        var payload = update.payload;
43073
43074        if (typeof payload === 'function') {
43075          // Updater function
43076          {
43077            enterDisallowedContextReadInDEV();
43078          }
43079
43080          var nextState = payload.call(instance, prevState, nextProps);
43081
43082          {
43083            if ( workInProgress.mode & StrictMode) {
43084              disableLogs();
43085
43086              try {
43087                payload.call(instance, prevState, nextProps);
43088              } finally {
43089                reenableLogs();
43090              }
43091            }
43092
43093            exitDisallowedContextReadInDEV();
43094          }
43095
43096          return nextState;
43097        } // State object
43098
43099
43100        return payload;
43101      }
43102
43103    case CaptureUpdate:
43104      {
43105        workInProgress.flags = workInProgress.flags & ~ShouldCapture | DidCapture;
43106      }
43107    // Intentional fallthrough
43108
43109    case UpdateState:
43110      {
43111        var _payload = update.payload;
43112        var partialState;
43113
43114        if (typeof _payload === 'function') {
43115          // Updater function
43116          {
43117            enterDisallowedContextReadInDEV();
43118          }
43119
43120          partialState = _payload.call(instance, prevState, nextProps);
43121
43122          {
43123            if ( workInProgress.mode & StrictMode) {
43124              disableLogs();
43125
43126              try {
43127                _payload.call(instance, prevState, nextProps);
43128              } finally {
43129                reenableLogs();
43130              }
43131            }
43132
43133            exitDisallowedContextReadInDEV();
43134          }
43135        } else {
43136          // Partial state object
43137          partialState = _payload;
43138        }
43139
43140        if (partialState === null || partialState === undefined) {
43141          // Null and undefined are treated as no-ops.
43142          return prevState;
43143        } // Merge the partial state and the previous state.
43144
43145
43146        return _assign({}, prevState, partialState);
43147      }
43148
43149    case ForceUpdate:
43150      {
43151        hasForceUpdate = true;
43152        return prevState;
43153      }
43154  }
43155
43156  return prevState;
43157}
43158
43159function processUpdateQueue(workInProgress, props, instance, renderLanes) {
43160  // This is always non-null on a ClassComponent or HostRoot
43161  var queue = workInProgress.updateQueue;
43162  hasForceUpdate = false;
43163
43164  {
43165    currentlyProcessingQueue = queue.shared;
43166  }
43167
43168  var firstBaseUpdate = queue.firstBaseUpdate;
43169  var lastBaseUpdate = queue.lastBaseUpdate; // Check if there are pending updates. If so, transfer them to the base queue.
43170
43171  var pendingQueue = queue.shared.pending;
43172
43173  if (pendingQueue !== null) {
43174    queue.shared.pending = null; // The pending queue is circular. Disconnect the pointer between first
43175    // and last so that it's non-circular.
43176
43177    var lastPendingUpdate = pendingQueue;
43178    var firstPendingUpdate = lastPendingUpdate.next;
43179    lastPendingUpdate.next = null; // Append pending updates to base queue
43180
43181    if (lastBaseUpdate === null) {
43182      firstBaseUpdate = firstPendingUpdate;
43183    } else {
43184      lastBaseUpdate.next = firstPendingUpdate;
43185    }
43186
43187    lastBaseUpdate = lastPendingUpdate; // If there's a current queue, and it's different from the base queue, then
43188    // we need to transfer the updates to that queue, too. Because the base
43189    // queue is a singly-linked list with no cycles, we can append to both
43190    // lists and take advantage of structural sharing.
43191    // TODO: Pass `current` as argument
43192
43193    var current = workInProgress.alternate;
43194
43195    if (current !== null) {
43196      // This is always non-null on a ClassComponent or HostRoot
43197      var currentQueue = current.updateQueue;
43198      var currentLastBaseUpdate = currentQueue.lastBaseUpdate;
43199
43200      if (currentLastBaseUpdate !== lastBaseUpdate) {
43201        if (currentLastBaseUpdate === null) {
43202          currentQueue.firstBaseUpdate = firstPendingUpdate;
43203        } else {
43204          currentLastBaseUpdate.next = firstPendingUpdate;
43205        }
43206
43207        currentQueue.lastBaseUpdate = lastPendingUpdate;
43208      }
43209    }
43210  } // These values may change as we process the queue.
43211
43212
43213  if (firstBaseUpdate !== null) {
43214    // Iterate through the list of updates to compute the result.
43215    var newState = queue.baseState; // TODO: Don't need to accumulate this. Instead, we can remove renderLanes
43216    // from the original lanes.
43217
43218    var newLanes = NoLanes;
43219    var newBaseState = null;
43220    var newFirstBaseUpdate = null;
43221    var newLastBaseUpdate = null;
43222    var update = firstBaseUpdate;
43223
43224    do {
43225      var updateLane = update.lane;
43226      var updateEventTime = update.eventTime;
43227
43228      if (!isSubsetOfLanes(renderLanes, updateLane)) {
43229        // Priority is insufficient. Skip this update. If this is the first
43230        // skipped update, the previous update/state is the new base
43231        // update/state.
43232        var clone = {
43233          eventTime: updateEventTime,
43234          lane: updateLane,
43235          tag: update.tag,
43236          payload: update.payload,
43237          callback: update.callback,
43238          next: null
43239        };
43240
43241        if (newLastBaseUpdate === null) {
43242          newFirstBaseUpdate = newLastBaseUpdate = clone;
43243          newBaseState = newState;
43244        } else {
43245          newLastBaseUpdate = newLastBaseUpdate.next = clone;
43246        } // Update the remaining priority in the queue.
43247
43248
43249        newLanes = mergeLanes(newLanes, updateLane);
43250      } else {
43251        // This update does have sufficient priority.
43252        if (newLastBaseUpdate !== null) {
43253          var _clone = {
43254            eventTime: updateEventTime,
43255            // This update is going to be committed so we never want uncommit
43256            // it. Using NoLane works because 0 is a subset of all bitmasks, so
43257            // this will never be skipped by the check above.
43258            lane: NoLane,
43259            tag: update.tag,
43260            payload: update.payload,
43261            callback: update.callback,
43262            next: null
43263          };
43264          newLastBaseUpdate = newLastBaseUpdate.next = _clone;
43265        } // Process this update.
43266
43267
43268        newState = getStateFromUpdate(workInProgress, queue, update, newState, props, instance);
43269        var callback = update.callback;
43270
43271        if (callback !== null) {
43272          workInProgress.flags |= Callback;
43273          var effects = queue.effects;
43274
43275          if (effects === null) {
43276            queue.effects = [update];
43277          } else {
43278            effects.push(update);
43279          }
43280        }
43281      }
43282
43283      update = update.next;
43284
43285      if (update === null) {
43286        pendingQueue = queue.shared.pending;
43287
43288        if (pendingQueue === null) {
43289          break;
43290        } else {
43291          // An update was scheduled from inside a reducer. Add the new
43292          // pending updates to the end of the list and keep processing.
43293          var _lastPendingUpdate = pendingQueue; // Intentionally unsound. Pending updates form a circular list, but we
43294          // unravel them when transferring them to the base queue.
43295
43296          var _firstPendingUpdate = _lastPendingUpdate.next;
43297          _lastPendingUpdate.next = null;
43298          update = _firstPendingUpdate;
43299          queue.lastBaseUpdate = _lastPendingUpdate;
43300          queue.shared.pending = null;
43301        }
43302      }
43303    } while (true);
43304
43305    if (newLastBaseUpdate === null) {
43306      newBaseState = newState;
43307    }
43308
43309    queue.baseState = newBaseState;
43310    queue.firstBaseUpdate = newFirstBaseUpdate;
43311    queue.lastBaseUpdate = newLastBaseUpdate; // Set the remaining expiration time to be whatever is remaining in the queue.
43312    // This should be fine because the only two other things that contribute to
43313    // expiration time are props and context. We're already in the middle of the
43314    // begin phase by the time we start processing the queue, so we've already
43315    // dealt with the props. Context in components that specify
43316    // shouldComponentUpdate is tricky; but we'll have to account for
43317    // that regardless.
43318
43319    markSkippedUpdateLanes(newLanes);
43320    workInProgress.lanes = newLanes;
43321    workInProgress.memoizedState = newState;
43322  }
43323
43324  {
43325    currentlyProcessingQueue = null;
43326  }
43327}
43328
43329function callCallback(callback, context) {
43330  if (!(typeof callback === 'function')) {
43331    {
43332      throw Error( "Invalid argument passed as callback. Expected a function. Instead received: " + callback );
43333    }
43334  }
43335
43336  callback.call(context);
43337}
43338
43339function resetHasForceUpdateBeforeProcessing() {
43340  hasForceUpdate = false;
43341}
43342function checkHasForceUpdateAfterProcessing() {
43343  return hasForceUpdate;
43344}
43345function commitUpdateQueue(finishedWork, finishedQueue, instance) {
43346  // Commit the effects
43347  var effects = finishedQueue.effects;
43348  finishedQueue.effects = null;
43349
43350  if (effects !== null) {
43351    for (var i = 0; i < effects.length; i++) {
43352      var effect = effects[i];
43353      var callback = effect.callback;
43354
43355      if (callback !== null) {
43356        effect.callback = null;
43357        callCallback(callback, instance);
43358      }
43359    }
43360  }
43361}
43362
43363var fakeInternalInstance = {};
43364var isArray = Array.isArray; // React.Component uses a shared frozen object by default.
43365// We'll use it to determine whether we need to initialize legacy refs.
43366
43367var emptyRefsObject = new React.Component().refs;
43368var didWarnAboutStateAssignmentForComponent;
43369var didWarnAboutUninitializedState;
43370var didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate;
43371var didWarnAboutLegacyLifecyclesAndDerivedState;
43372var didWarnAboutUndefinedDerivedState;
43373var warnOnUndefinedDerivedState;
43374var warnOnInvalidCallback;
43375var didWarnAboutDirectlyAssigningPropsToState;
43376var didWarnAboutContextTypeAndContextTypes;
43377var didWarnAboutInvalidateContextType;
43378
43379{
43380  didWarnAboutStateAssignmentForComponent = new Set();
43381  didWarnAboutUninitializedState = new Set();
43382  didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate = new Set();
43383  didWarnAboutLegacyLifecyclesAndDerivedState = new Set();
43384  didWarnAboutDirectlyAssigningPropsToState = new Set();
43385  didWarnAboutUndefinedDerivedState = new Set();
43386  didWarnAboutContextTypeAndContextTypes = new Set();
43387  didWarnAboutInvalidateContextType = new Set();
43388  var didWarnOnInvalidCallback = new Set();
43389
43390  warnOnInvalidCallback = function (callback, callerName) {
43391    if (callback === null || typeof callback === 'function') {
43392      return;
43393    }
43394
43395    var key = callerName + '_' + callback;
43396
43397    if (!didWarnOnInvalidCallback.has(key)) {
43398      didWarnOnInvalidCallback.add(key);
43399
43400      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
43401    }
43402  };
43403
43404  warnOnUndefinedDerivedState = function (type, partialState) {
43405    if (partialState === undefined) {
43406      var componentName = getComponentName(type) || 'Component';
43407
43408      if (!didWarnAboutUndefinedDerivedState.has(componentName)) {
43409        didWarnAboutUndefinedDerivedState.add(componentName);
43410
43411        error('%s.getDerivedStateFromProps(): A valid state object (or null) must be returned. ' + 'You have returned undefined.', componentName);
43412      }
43413    }
43414  }; // This is so gross but it's at least non-critical and can be removed if
43415  // it causes problems. This is meant to give a nicer error message for
43416  // ReactDOM15.unstable_renderSubtreeIntoContainer(reactDOM16Component,
43417  // ...)) which otherwise throws a "_processChildContext is not a function"
43418  // exception.
43419
43420
43421  Object.defineProperty(fakeInternalInstance, '_processChildContext', {
43422    enumerable: false,
43423    value: function () {
43424      {
43425        {
43426          throw Error( "_processChildContext is not available in React 16+. This likely means you have multiple copies of React and are attempting to nest a React 15 tree inside a React 16 tree using unstable_renderSubtreeIntoContainer, which isn't supported. Try to make sure you have only one copy of React (and ideally, switch to ReactDOM.createPortal)." );
43427        }
43428      }
43429    }
43430  });
43431  Object.freeze(fakeInternalInstance);
43432}
43433
43434function applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, nextProps) {
43435  var prevState = workInProgress.memoizedState;
43436
43437  {
43438    if ( workInProgress.mode & StrictMode) {
43439      disableLogs();
43440
43441      try {
43442        // Invoke the function an extra time to help detect side-effects.
43443        getDerivedStateFromProps(nextProps, prevState);
43444      } finally {
43445        reenableLogs();
43446      }
43447    }
43448  }
43449
43450  var partialState = getDerivedStateFromProps(nextProps, prevState);
43451
43452  {
43453    warnOnUndefinedDerivedState(ctor, partialState);
43454  } // Merge the partial state and the previous state.
43455
43456
43457  var memoizedState = partialState === null || partialState === undefined ? prevState : _assign({}, prevState, partialState);
43458  workInProgress.memoizedState = memoizedState; // Once the update queue is empty, persist the derived state onto the
43459  // base state.
43460
43461  if (workInProgress.lanes === NoLanes) {
43462    // Queue is always non-null for classes
43463    var updateQueue = workInProgress.updateQueue;
43464    updateQueue.baseState = memoizedState;
43465  }
43466}
43467var classComponentUpdater = {
43468  isMounted: isMounted,
43469  enqueueSetState: function (inst, payload, callback) {
43470    var fiber = get(inst);
43471    var eventTime = requestEventTime();
43472    var lane = requestUpdateLane(fiber);
43473    var update = createUpdate(eventTime, lane);
43474    update.payload = payload;
43475
43476    if (callback !== undefined && callback !== null) {
43477      {
43478        warnOnInvalidCallback(callback, 'setState');
43479      }
43480
43481      update.callback = callback;
43482    }
43483
43484    enqueueUpdate(fiber, update);
43485    scheduleUpdateOnFiber(fiber, lane, eventTime);
43486  },
43487  enqueueReplaceState: function (inst, payload, callback) {
43488    var fiber = get(inst);
43489    var eventTime = requestEventTime();
43490    var lane = requestUpdateLane(fiber);
43491    var update = createUpdate(eventTime, lane);
43492    update.tag = ReplaceState;
43493    update.payload = payload;
43494
43495    if (callback !== undefined && callback !== null) {
43496      {
43497        warnOnInvalidCallback(callback, 'replaceState');
43498      }
43499
43500      update.callback = callback;
43501    }
43502
43503    enqueueUpdate(fiber, update);
43504    scheduleUpdateOnFiber(fiber, lane, eventTime);
43505  },
43506  enqueueForceUpdate: function (inst, callback) {
43507    var fiber = get(inst);
43508    var eventTime = requestEventTime();
43509    var lane = requestUpdateLane(fiber);
43510    var update = createUpdate(eventTime, lane);
43511    update.tag = ForceUpdate;
43512
43513    if (callback !== undefined && callback !== null) {
43514      {
43515        warnOnInvalidCallback(callback, 'forceUpdate');
43516      }
43517
43518      update.callback = callback;
43519    }
43520
43521    enqueueUpdate(fiber, update);
43522    scheduleUpdateOnFiber(fiber, lane, eventTime);
43523  }
43524};
43525
43526function checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext) {
43527  var instance = workInProgress.stateNode;
43528
43529  if (typeof instance.shouldComponentUpdate === 'function') {
43530    {
43531      if ( workInProgress.mode & StrictMode) {
43532        disableLogs();
43533
43534        try {
43535          // Invoke the function an extra time to help detect side-effects.
43536          instance.shouldComponentUpdate(newProps, newState, nextContext);
43537        } finally {
43538          reenableLogs();
43539        }
43540      }
43541    }
43542
43543    var shouldUpdate = instance.shouldComponentUpdate(newProps, newState, nextContext);
43544
43545    {
43546      if (shouldUpdate === undefined) {
43547        error('%s.shouldComponentUpdate(): Returned undefined instead of a ' + 'boolean value. Make sure to return true or false.', getComponentName(ctor) || 'Component');
43548      }
43549    }
43550
43551    return shouldUpdate;
43552  }
43553
43554  if (ctor.prototype && ctor.prototype.isPureReactComponent) {
43555    return !shallowEqual(oldProps, newProps) || !shallowEqual(oldState, newState);
43556  }
43557
43558  return true;
43559}
43560
43561function checkClassInstance(workInProgress, ctor, newProps) {
43562  var instance = workInProgress.stateNode;
43563
43564  {
43565    var name = getComponentName(ctor) || 'Component';
43566    var renderPresent = instance.render;
43567
43568    if (!renderPresent) {
43569      if (ctor.prototype && typeof ctor.prototype.render === 'function') {
43570        error('%s(...): No `render` method found on the returned component ' + 'instance: did you accidentally return an object from the constructor?', name);
43571      } else {
43572        error('%s(...): No `render` method found on the returned component ' + 'instance: you may have forgotten to define `render`.', name);
43573      }
43574    }
43575
43576    if (instance.getInitialState && !instance.getInitialState.isReactClassApproved && !instance.state) {
43577      error('getInitialState was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Did you mean to define a state property instead?', name);
43578    }
43579
43580    if (instance.getDefaultProps && !instance.getDefaultProps.isReactClassApproved) {
43581      error('getDefaultProps was defined on %s, a plain JavaScript class. ' + 'This is only supported for classes created using React.createClass. ' + 'Use a static property to define defaultProps instead.', name);
43582    }
43583
43584    if (instance.propTypes) {
43585      error('propTypes was defined as an instance property on %s. Use a static ' + 'property to define propTypes instead.', name);
43586    }
43587
43588    if (instance.contextType) {
43589      error('contextType was defined as an instance property on %s. Use a static ' + 'property to define contextType instead.', name);
43590    }
43591
43592    {
43593      if (instance.contextTypes) {
43594        error('contextTypes was defined as an instance property on %s. Use a static ' + 'property to define contextTypes instead.', name);
43595      }
43596
43597      if (ctor.contextType && ctor.contextTypes && !didWarnAboutContextTypeAndContextTypes.has(ctor)) {
43598        didWarnAboutContextTypeAndContextTypes.add(ctor);
43599
43600        error('%s declares both contextTypes and contextType static properties. ' + 'The legacy contextTypes property will be ignored.', name);
43601      }
43602    }
43603
43604    if (typeof instance.componentShouldUpdate === 'function') {
43605      error('%s has a method called ' + 'componentShouldUpdate(). Did you mean shouldComponentUpdate()? ' + 'The name is phrased as a question because the function is ' + 'expected to return a value.', name);
43606    }
43607
43608    if (ctor.prototype && ctor.prototype.isPureReactComponent && typeof instance.shouldComponentUpdate !== 'undefined') {
43609      error('%s has a method called shouldComponentUpdate(). ' + 'shouldComponentUpdate should not be used when extending React.PureComponent. ' + 'Please extend React.Component if shouldComponentUpdate is used.', getComponentName(ctor) || 'A pure component');
43610    }
43611
43612    if (typeof instance.componentDidUnmount === 'function') {
43613      error('%s has a method called ' + 'componentDidUnmount(). But there is no such lifecycle method. ' + 'Did you mean componentWillUnmount()?', name);
43614    }
43615
43616    if (typeof instance.componentDidReceiveProps === 'function') {
43617      error('%s has a method called ' + 'componentDidReceiveProps(). But there is no such lifecycle method. ' + 'If you meant to update the state in response to changing props, ' + 'use componentWillReceiveProps(). If you meant to fetch data or ' + 'run side-effects or mutations after React has updated the UI, use componentDidUpdate().', name);
43618    }
43619
43620    if (typeof instance.componentWillRecieveProps === 'function') {
43621      error('%s has a method called ' + 'componentWillRecieveProps(). Did you mean componentWillReceiveProps()?', name);
43622    }
43623
43624    if (typeof instance.UNSAFE_componentWillRecieveProps === 'function') {
43625      error('%s has a method called ' + 'UNSAFE_componentWillRecieveProps(). Did you mean UNSAFE_componentWillReceiveProps()?', name);
43626    }
43627
43628    var hasMutatedProps = instance.props !== newProps;
43629
43630    if (instance.props !== undefined && hasMutatedProps) {
43631      error('%s(...): When calling super() in `%s`, make sure to pass ' + "up the same props that your component's constructor was passed.", name, name);
43632    }
43633
43634    if (instance.defaultProps) {
43635      error('Setting defaultProps as an instance property on %s is not supported and will be ignored.' + ' Instead, define defaultProps as a static property on %s.', name, name);
43636    }
43637
43638    if (typeof instance.getSnapshotBeforeUpdate === 'function' && typeof instance.componentDidUpdate !== 'function' && !didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.has(ctor)) {
43639      didWarnAboutGetSnapshotBeforeUpdateWithoutDidUpdate.add(ctor);
43640
43641      error('%s: getSnapshotBeforeUpdate() should be used with componentDidUpdate(). ' + 'This component defines getSnapshotBeforeUpdate() only.', getComponentName(ctor));
43642    }
43643
43644    if (typeof instance.getDerivedStateFromProps === 'function') {
43645      error('%s: getDerivedStateFromProps() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);
43646    }
43647
43648    if (typeof instance.getDerivedStateFromError === 'function') {
43649      error('%s: getDerivedStateFromError() is defined as an instance method ' + 'and will be ignored. Instead, declare it as a static method.', name);
43650    }
43651
43652    if (typeof ctor.getSnapshotBeforeUpdate === 'function') {
43653      error('%s: getSnapshotBeforeUpdate() is defined as a static method ' + 'and will be ignored. Instead, declare it as an instance method.', name);
43654    }
43655
43656    var _state = instance.state;
43657
43658    if (_state && (typeof _state !== 'object' || isArray(_state))) {
43659      error('%s.state: must be set to an object or null', name);
43660    }
43661
43662    if (typeof instance.getChildContext === 'function' && typeof ctor.childContextTypes !== 'object') {
43663      error('%s.getChildContext(): childContextTypes must be defined in order to ' + 'use getChildContext().', name);
43664    }
43665  }
43666}
43667
43668function adoptClassInstance(workInProgress, instance) {
43669  instance.updater = classComponentUpdater;
43670  workInProgress.stateNode = instance; // The instance needs access to the fiber so that it can schedule updates
43671
43672  set(instance, workInProgress);
43673
43674  {
43675    instance._reactInternalInstance = fakeInternalInstance;
43676  }
43677}
43678
43679function constructClassInstance(workInProgress, ctor, props) {
43680  var isLegacyContextConsumer = false;
43681  var unmaskedContext = emptyContextObject;
43682  var context = emptyContextObject;
43683  var contextType = ctor.contextType;
43684
43685  {
43686    if ('contextType' in ctor) {
43687      var isValid = // Allow null for conditional declaration
43688      contextType === null || contextType !== undefined && contextType.$$typeof === REACT_CONTEXT_TYPE && contextType._context === undefined; // Not a <Context.Consumer>
43689
43690      if (!isValid && !didWarnAboutInvalidateContextType.has(ctor)) {
43691        didWarnAboutInvalidateContextType.add(ctor);
43692        var addendum = '';
43693
43694        if (contextType === undefined) {
43695          addendum = ' However, it is set to undefined. ' + 'This can be caused by a typo or by mixing up named and default imports. ' + 'This can also happen due to a circular dependency, so ' + 'try moving the createContext() call to a separate file.';
43696        } else if (typeof contextType !== 'object') {
43697          addendum = ' However, it is set to a ' + typeof contextType + '.';
43698        } else if (contextType.$$typeof === REACT_PROVIDER_TYPE) {
43699          addendum = ' Did you accidentally pass the Context.Provider instead?';
43700        } else if (contextType._context !== undefined) {
43701          // <Context.Consumer>
43702          addendum = ' Did you accidentally pass the Context.Consumer instead?';
43703        } else {
43704          addendum = ' However, it is set to an object with keys {' + Object.keys(contextType).join(', ') + '}.';
43705        }
43706
43707        error('%s defines an invalid contextType. ' + 'contextType should point to the Context object returned by React.createContext().%s', getComponentName(ctor) || 'Component', addendum);
43708      }
43709    }
43710  }
43711
43712  if (typeof contextType === 'object' && contextType !== null) {
43713    context = readContext(contextType);
43714  } else {
43715    unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
43716    var contextTypes = ctor.contextTypes;
43717    isLegacyContextConsumer = contextTypes !== null && contextTypes !== undefined;
43718    context = isLegacyContextConsumer ? getMaskedContext(workInProgress, unmaskedContext) : emptyContextObject;
43719  } // Instantiate twice to help detect side-effects.
43720
43721
43722  {
43723    if ( workInProgress.mode & StrictMode) {
43724      disableLogs();
43725
43726      try {
43727        new ctor(props, context); // eslint-disable-line no-new
43728      } finally {
43729        reenableLogs();
43730      }
43731    }
43732  }
43733
43734  var instance = new ctor(props, context);
43735  var state = workInProgress.memoizedState = instance.state !== null && instance.state !== undefined ? instance.state : null;
43736  adoptClassInstance(workInProgress, instance);
43737
43738  {
43739    if (typeof ctor.getDerivedStateFromProps === 'function' && state === null) {
43740      var componentName = getComponentName(ctor) || 'Component';
43741
43742      if (!didWarnAboutUninitializedState.has(componentName)) {
43743        didWarnAboutUninitializedState.add(componentName);
43744
43745        error('`%s` uses `getDerivedStateFromProps` but its initial state is ' + '%s. This is not recommended. Instead, define the initial state by ' + 'assigning an object to `this.state` in the constructor of `%s`. ' + 'This ensures that `getDerivedStateFromProps` arguments have a consistent shape.', componentName, instance.state === null ? 'null' : 'undefined', componentName);
43746      }
43747    } // If new component APIs are defined, "unsafe" lifecycles won't be called.
43748    // Warn about these lifecycles if they are present.
43749    // Don't warn about react-lifecycles-compat polyfilled methods though.
43750
43751
43752    if (typeof ctor.getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function') {
43753      var foundWillMountName = null;
43754      var foundWillReceivePropsName = null;
43755      var foundWillUpdateName = null;
43756
43757      if (typeof instance.componentWillMount === 'function' && instance.componentWillMount.__suppressDeprecationWarning !== true) {
43758        foundWillMountName = 'componentWillMount';
43759      } else if (typeof instance.UNSAFE_componentWillMount === 'function') {
43760        foundWillMountName = 'UNSAFE_componentWillMount';
43761      }
43762
43763      if (typeof instance.componentWillReceiveProps === 'function' && instance.componentWillReceiveProps.__suppressDeprecationWarning !== true) {
43764        foundWillReceivePropsName = 'componentWillReceiveProps';
43765      } else if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
43766        foundWillReceivePropsName = 'UNSAFE_componentWillReceiveProps';
43767      }
43768
43769      if (typeof instance.componentWillUpdate === 'function' && instance.componentWillUpdate.__suppressDeprecationWarning !== true) {
43770        foundWillUpdateName = 'componentWillUpdate';
43771      } else if (typeof instance.UNSAFE_componentWillUpdate === 'function') {
43772        foundWillUpdateName = 'UNSAFE_componentWillUpdate';
43773      }
43774
43775      if (foundWillMountName !== null || foundWillReceivePropsName !== null || foundWillUpdateName !== null) {
43776        var _componentName = getComponentName(ctor) || 'Component';
43777
43778        var newApiName = typeof ctor.getDerivedStateFromProps === 'function' ? 'getDerivedStateFromProps()' : 'getSnapshotBeforeUpdate()';
43779
43780        if (!didWarnAboutLegacyLifecyclesAndDerivedState.has(_componentName)) {
43781          didWarnAboutLegacyLifecyclesAndDerivedState.add(_componentName);
43782
43783          error('Unsafe legacy lifecycles will not be called for components using new component APIs.\n\n' + '%s uses %s but also contains the following legacy lifecycles:%s%s%s\n\n' + 'The above lifecycles should be removed. Learn more about this warning here:\n' + 'https://reactjs.org/link/unsafe-component-lifecycles', _componentName, newApiName, foundWillMountName !== null ? "\n  " + foundWillMountName : '', foundWillReceivePropsName !== null ? "\n  " + foundWillReceivePropsName : '', foundWillUpdateName !== null ? "\n  " + foundWillUpdateName : '');
43784        }
43785      }
43786    }
43787  } // Cache unmasked context so we can avoid recreating masked context unless necessary.
43788  // ReactFiberContext usually updates this cache but can't for newly-created instances.
43789
43790
43791  if (isLegacyContextConsumer) {
43792    cacheContext(workInProgress, unmaskedContext, context);
43793  }
43794
43795  return instance;
43796}
43797
43798function callComponentWillMount(workInProgress, instance) {
43799  var oldState = instance.state;
43800
43801  if (typeof instance.componentWillMount === 'function') {
43802    instance.componentWillMount();
43803  }
43804
43805  if (typeof instance.UNSAFE_componentWillMount === 'function') {
43806    instance.UNSAFE_componentWillMount();
43807  }
43808
43809  if (oldState !== instance.state) {
43810    {
43811      error('%s.componentWillMount(): Assigning directly to this.state is ' + "deprecated (except inside a component's " + 'constructor). Use setState instead.', getComponentName(workInProgress.type) || 'Component');
43812    }
43813
43814    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
43815  }
43816}
43817
43818function callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext) {
43819  var oldState = instance.state;
43820
43821  if (typeof instance.componentWillReceiveProps === 'function') {
43822    instance.componentWillReceiveProps(newProps, nextContext);
43823  }
43824
43825  if (typeof instance.UNSAFE_componentWillReceiveProps === 'function') {
43826    instance.UNSAFE_componentWillReceiveProps(newProps, nextContext);
43827  }
43828
43829  if (instance.state !== oldState) {
43830    {
43831      var componentName = getComponentName(workInProgress.type) || 'Component';
43832
43833      if (!didWarnAboutStateAssignmentForComponent.has(componentName)) {
43834        didWarnAboutStateAssignmentForComponent.add(componentName);
43835
43836        error('%s.componentWillReceiveProps(): Assigning directly to ' + "this.state is deprecated (except inside a component's " + 'constructor). Use setState instead.', componentName);
43837      }
43838    }
43839
43840    classComponentUpdater.enqueueReplaceState(instance, instance.state, null);
43841  }
43842} // Invokes the mount life-cycles on a previously never rendered instance.
43843
43844
43845function mountClassInstance(workInProgress, ctor, newProps, renderLanes) {
43846  {
43847    checkClassInstance(workInProgress, ctor, newProps);
43848  }
43849
43850  var instance = workInProgress.stateNode;
43851  instance.props = newProps;
43852  instance.state = workInProgress.memoizedState;
43853  instance.refs = emptyRefsObject;
43854  initializeUpdateQueue(workInProgress);
43855  var contextType = ctor.contextType;
43856
43857  if (typeof contextType === 'object' && contextType !== null) {
43858    instance.context = readContext(contextType);
43859  } else {
43860    var unmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
43861    instance.context = getMaskedContext(workInProgress, unmaskedContext);
43862  }
43863
43864  {
43865    if (instance.state === newProps) {
43866      var componentName = getComponentName(ctor) || 'Component';
43867
43868      if (!didWarnAboutDirectlyAssigningPropsToState.has(componentName)) {
43869        didWarnAboutDirectlyAssigningPropsToState.add(componentName);
43870
43871        error('%s: It is not recommended to assign props directly to state ' + "because updates to props won't be reflected in state. " + 'In most cases, it is better to use props directly.', componentName);
43872      }
43873    }
43874
43875    if (workInProgress.mode & StrictMode) {
43876      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, instance);
43877    }
43878
43879    {
43880      ReactStrictModeWarnings.recordUnsafeLifecycleWarnings(workInProgress, instance);
43881    }
43882  }
43883
43884  processUpdateQueue(workInProgress, newProps, instance, renderLanes);
43885  instance.state = workInProgress.memoizedState;
43886  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
43887
43888  if (typeof getDerivedStateFromProps === 'function') {
43889    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
43890    instance.state = workInProgress.memoizedState;
43891  } // In order to support react-lifecycles-compat polyfilled components,
43892  // Unsafe lifecycles should not be invoked for components using the new APIs.
43893
43894
43895  if (typeof ctor.getDerivedStateFromProps !== 'function' && typeof instance.getSnapshotBeforeUpdate !== 'function' && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {
43896    callComponentWillMount(workInProgress, instance); // If we had additional state updates during this life-cycle, let's
43897    // process them now.
43898
43899    processUpdateQueue(workInProgress, newProps, instance, renderLanes);
43900    instance.state = workInProgress.memoizedState;
43901  }
43902
43903  if (typeof instance.componentDidMount === 'function') {
43904    workInProgress.flags |= Update;
43905  }
43906}
43907
43908function resumeMountClassInstance(workInProgress, ctor, newProps, renderLanes) {
43909  var instance = workInProgress.stateNode;
43910  var oldProps = workInProgress.memoizedProps;
43911  instance.props = oldProps;
43912  var oldContext = instance.context;
43913  var contextType = ctor.contextType;
43914  var nextContext = emptyContextObject;
43915
43916  if (typeof contextType === 'object' && contextType !== null) {
43917    nextContext = readContext(contextType);
43918  } else {
43919    var nextLegacyUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
43920    nextContext = getMaskedContext(workInProgress, nextLegacyUnmaskedContext);
43921  }
43922
43923  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
43924  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what
43925  // ever the previously attempted to render - not the "current". However,
43926  // during componentDidUpdate we pass the "current" props.
43927  // In order to support react-lifecycles-compat polyfilled components,
43928  // Unsafe lifecycles should not be invoked for components using the new APIs.
43929
43930  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {
43931    if (oldProps !== newProps || oldContext !== nextContext) {
43932      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);
43933    }
43934  }
43935
43936  resetHasForceUpdateBeforeProcessing();
43937  var oldState = workInProgress.memoizedState;
43938  var newState = instance.state = oldState;
43939  processUpdateQueue(workInProgress, newProps, instance, renderLanes);
43940  newState = workInProgress.memoizedState;
43941
43942  if (oldProps === newProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {
43943    // If an update was already in progress, we should schedule an Update
43944    // effect even though we're bailing out, so that cWU/cDU are called.
43945    if (typeof instance.componentDidMount === 'function') {
43946      workInProgress.flags |= Update;
43947    }
43948
43949    return false;
43950  }
43951
43952  if (typeof getDerivedStateFromProps === 'function') {
43953    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
43954    newState = workInProgress.memoizedState;
43955  }
43956
43957  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);
43958
43959  if (shouldUpdate) {
43960    // In order to support react-lifecycles-compat polyfilled components,
43961    // Unsafe lifecycles should not be invoked for components using the new APIs.
43962    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillMount === 'function' || typeof instance.componentWillMount === 'function')) {
43963      if (typeof instance.componentWillMount === 'function') {
43964        instance.componentWillMount();
43965      }
43966
43967      if (typeof instance.UNSAFE_componentWillMount === 'function') {
43968        instance.UNSAFE_componentWillMount();
43969      }
43970    }
43971
43972    if (typeof instance.componentDidMount === 'function') {
43973      workInProgress.flags |= Update;
43974    }
43975  } else {
43976    // If an update was already in progress, we should schedule an Update
43977    // effect even though we're bailing out, so that cWU/cDU are called.
43978    if (typeof instance.componentDidMount === 'function') {
43979      workInProgress.flags |= Update;
43980    } // If shouldComponentUpdate returned false, we should still update the
43981    // memoized state to indicate that this work can be reused.
43982
43983
43984    workInProgress.memoizedProps = newProps;
43985    workInProgress.memoizedState = newState;
43986  } // Update the existing instance's state, props, and context pointers even
43987  // if shouldComponentUpdate returns false.
43988
43989
43990  instance.props = newProps;
43991  instance.state = newState;
43992  instance.context = nextContext;
43993  return shouldUpdate;
43994} // Invokes the update life-cycles and returns false if it shouldn't rerender.
43995
43996
43997function updateClassInstance(current, workInProgress, ctor, newProps, renderLanes) {
43998  var instance = workInProgress.stateNode;
43999  cloneUpdateQueue(current, workInProgress);
44000  var unresolvedOldProps = workInProgress.memoizedProps;
44001  var oldProps = workInProgress.type === workInProgress.elementType ? unresolvedOldProps : resolveDefaultProps(workInProgress.type, unresolvedOldProps);
44002  instance.props = oldProps;
44003  var unresolvedNewProps = workInProgress.pendingProps;
44004  var oldContext = instance.context;
44005  var contextType = ctor.contextType;
44006  var nextContext = emptyContextObject;
44007
44008  if (typeof contextType === 'object' && contextType !== null) {
44009    nextContext = readContext(contextType);
44010  } else {
44011    var nextUnmaskedContext = getUnmaskedContext(workInProgress, ctor, true);
44012    nextContext = getMaskedContext(workInProgress, nextUnmaskedContext);
44013  }
44014
44015  var getDerivedStateFromProps = ctor.getDerivedStateFromProps;
44016  var hasNewLifecycles = typeof getDerivedStateFromProps === 'function' || typeof instance.getSnapshotBeforeUpdate === 'function'; // Note: During these life-cycles, instance.props/instance.state are what
44017  // ever the previously attempted to render - not the "current". However,
44018  // during componentDidUpdate we pass the "current" props.
44019  // In order to support react-lifecycles-compat polyfilled components,
44020  // Unsafe lifecycles should not be invoked for components using the new APIs.
44021
44022  if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillReceiveProps === 'function' || typeof instance.componentWillReceiveProps === 'function')) {
44023    if (unresolvedOldProps !== unresolvedNewProps || oldContext !== nextContext) {
44024      callComponentWillReceiveProps(workInProgress, instance, newProps, nextContext);
44025    }
44026  }
44027
44028  resetHasForceUpdateBeforeProcessing();
44029  var oldState = workInProgress.memoizedState;
44030  var newState = instance.state = oldState;
44031  processUpdateQueue(workInProgress, newProps, instance, renderLanes);
44032  newState = workInProgress.memoizedState;
44033
44034  if (unresolvedOldProps === unresolvedNewProps && oldState === newState && !hasContextChanged() && !checkHasForceUpdateAfterProcessing()) {
44035    // If an update was already in progress, we should schedule an Update
44036    // effect even though we're bailing out, so that cWU/cDU are called.
44037    if (typeof instance.componentDidUpdate === 'function') {
44038      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {
44039        workInProgress.flags |= Update;
44040      }
44041    }
44042
44043    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
44044      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {
44045        workInProgress.flags |= Snapshot;
44046      }
44047    }
44048
44049    return false;
44050  }
44051
44052  if (typeof getDerivedStateFromProps === 'function') {
44053    applyDerivedStateFromProps(workInProgress, ctor, getDerivedStateFromProps, newProps);
44054    newState = workInProgress.memoizedState;
44055  }
44056
44057  var shouldUpdate = checkHasForceUpdateAfterProcessing() || checkShouldComponentUpdate(workInProgress, ctor, oldProps, newProps, oldState, newState, nextContext);
44058
44059  if (shouldUpdate) {
44060    // In order to support react-lifecycles-compat polyfilled components,
44061    // Unsafe lifecycles should not be invoked for components using the new APIs.
44062    if (!hasNewLifecycles && (typeof instance.UNSAFE_componentWillUpdate === 'function' || typeof instance.componentWillUpdate === 'function')) {
44063      if (typeof instance.componentWillUpdate === 'function') {
44064        instance.componentWillUpdate(newProps, newState, nextContext);
44065      }
44066
44067      if (typeof instance.UNSAFE_componentWillUpdate === 'function') {
44068        instance.UNSAFE_componentWillUpdate(newProps, newState, nextContext);
44069      }
44070    }
44071
44072    if (typeof instance.componentDidUpdate === 'function') {
44073      workInProgress.flags |= Update;
44074    }
44075
44076    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
44077      workInProgress.flags |= Snapshot;
44078    }
44079  } else {
44080    // If an update was already in progress, we should schedule an Update
44081    // effect even though we're bailing out, so that cWU/cDU are called.
44082    if (typeof instance.componentDidUpdate === 'function') {
44083      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {
44084        workInProgress.flags |= Update;
44085      }
44086    }
44087
44088    if (typeof instance.getSnapshotBeforeUpdate === 'function') {
44089      if (unresolvedOldProps !== current.memoizedProps || oldState !== current.memoizedState) {
44090        workInProgress.flags |= Snapshot;
44091      }
44092    } // If shouldComponentUpdate returned false, we should still update the
44093    // memoized props/state to indicate that this work can be reused.
44094
44095
44096    workInProgress.memoizedProps = newProps;
44097    workInProgress.memoizedState = newState;
44098  } // Update the existing instance's state, props, and context pointers even
44099  // if shouldComponentUpdate returns false.
44100
44101
44102  instance.props = newProps;
44103  instance.state = newState;
44104  instance.context = nextContext;
44105  return shouldUpdate;
44106}
44107
44108var didWarnAboutMaps;
44109var didWarnAboutGenerators;
44110var didWarnAboutStringRefs;
44111var ownerHasKeyUseWarning;
44112var ownerHasFunctionTypeWarning;
44113
44114var warnForMissingKey = function (child, returnFiber) {};
44115
44116{
44117  didWarnAboutMaps = false;
44118  didWarnAboutGenerators = false;
44119  didWarnAboutStringRefs = {};
44120  /**
44121   * Warn if there's no key explicitly set on dynamic arrays of children or
44122   * object keys are not valid. This allows us to keep track of children between
44123   * updates.
44124   */
44125
44126  ownerHasKeyUseWarning = {};
44127  ownerHasFunctionTypeWarning = {};
44128
44129  warnForMissingKey = function (child, returnFiber) {
44130    if (child === null || typeof child !== 'object') {
44131      return;
44132    }
44133
44134    if (!child._store || child._store.validated || child.key != null) {
44135      return;
44136    }
44137
44138    if (!(typeof child._store === 'object')) {
44139      {
44140        throw Error( "React Component in warnForMissingKey should have a _store. This error is likely caused by a bug in React. Please file an issue." );
44141      }
44142    }
44143
44144    child._store.validated = true;
44145    var componentName = getComponentName(returnFiber.type) || 'Component';
44146
44147    if (ownerHasKeyUseWarning[componentName]) {
44148      return;
44149    }
44150
44151    ownerHasKeyUseWarning[componentName] = true;
44152
44153    error('Each child in a list should have a unique ' + '"key" prop. See https://reactjs.org/link/warning-keys for ' + 'more information.');
44154  };
44155}
44156
44157var isArray$1 = Array.isArray;
44158
44159function coerceRef(returnFiber, current, element) {
44160  var mixedRef = element.ref;
44161
44162  if (mixedRef !== null && typeof mixedRef !== 'function' && typeof mixedRef !== 'object') {
44163    {
44164      // TODO: Clean this up once we turn on the string ref warning for
44165      // everyone, because the strict mode case will no longer be relevant
44166      if ((returnFiber.mode & StrictMode || warnAboutStringRefs) && // We warn in ReactElement.js if owner and self are equal for string refs
44167      // because these cannot be automatically converted to an arrow function
44168      // using a codemod. Therefore, we don't have to warn about string refs again.
44169      !(element._owner && element._self && element._owner.stateNode !== element._self)) {
44170        var componentName = getComponentName(returnFiber.type) || 'Component';
44171
44172        if (!didWarnAboutStringRefs[componentName]) {
44173          {
44174            error('A string ref, "%s", has been found within a strict mode tree. ' + 'String refs are a source of potential bugs and should be avoided. ' + 'We recommend using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', mixedRef);
44175          }
44176
44177          didWarnAboutStringRefs[componentName] = true;
44178        }
44179      }
44180    }
44181
44182    if (element._owner) {
44183      var owner = element._owner;
44184      var inst;
44185
44186      if (owner) {
44187        var ownerFiber = owner;
44188
44189        if (!(ownerFiber.tag === ClassComponent)) {
44190          {
44191            throw Error( "Function components cannot have string refs. We recommend using useRef() instead. Learn more about using refs safely here: https://reactjs.org/link/strict-mode-string-ref" );
44192          }
44193        }
44194
44195        inst = ownerFiber.stateNode;
44196      }
44197
44198      if (!inst) {
44199        {
44200          throw Error( "Missing owner for string ref " + mixedRef + ". This error is likely caused by a bug in React. Please file an issue." );
44201        }
44202      }
44203
44204      var stringRef = '' + mixedRef; // Check if previous string ref matches new string ref
44205
44206      if (current !== null && current.ref !== null && typeof current.ref === 'function' && current.ref._stringRef === stringRef) {
44207        return current.ref;
44208      }
44209
44210      var ref = function (value) {
44211        var refs = inst.refs;
44212
44213        if (refs === emptyRefsObject) {
44214          // This is a lazy pooled frozen object, so we need to initialize.
44215          refs = inst.refs = {};
44216        }
44217
44218        if (value === null) {
44219          delete refs[stringRef];
44220        } else {
44221          refs[stringRef] = value;
44222        }
44223      };
44224
44225      ref._stringRef = stringRef;
44226      return ref;
44227    } else {
44228      if (!(typeof mixedRef === 'string')) {
44229        {
44230          throw Error( "Expected ref to be a function, a string, an object returned by React.createRef(), or null." );
44231        }
44232      }
44233
44234      if (!element._owner) {
44235        {
44236          throw Error( "Element ref was specified as a string (" + mixedRef + ") but no owner was set. This could happen for one of the following reasons:\n1. You may be adding a ref to a function component\n2. You may be adding a ref to a component that was not created inside a component's render method\n3. You have multiple copies of React loaded\nSee https://reactjs.org/link/refs-must-have-owner for more information." );
44237        }
44238      }
44239    }
44240  }
44241
44242  return mixedRef;
44243}
44244
44245function throwOnInvalidObjectType(returnFiber, newChild) {
44246  if (returnFiber.type !== 'textarea') {
44247    {
44248      {
44249        throw Error( "Objects are not valid as a React child (found: " + (Object.prototype.toString.call(newChild) === '[object Object]' ? 'object with keys {' + Object.keys(newChild).join(', ') + '}' : newChild) + "). If you meant to render a collection of children, use an array instead." );
44250      }
44251    }
44252  }
44253}
44254
44255function warnOnFunctionType(returnFiber) {
44256  {
44257    var componentName = getComponentName(returnFiber.type) || 'Component';
44258
44259    if (ownerHasFunctionTypeWarning[componentName]) {
44260      return;
44261    }
44262
44263    ownerHasFunctionTypeWarning[componentName] = true;
44264
44265    error('Functions are not valid as a React child. This may happen if ' + 'you return a Component instead of <Component /> from render. ' + 'Or maybe you meant to call this function rather than return it.');
44266  }
44267} // We avoid inlining this to avoid potential deopts from using try/catch.
44268// to be able to optimize each path individually by branching early. This needs
44269// a compiler or we can do it manually. Helpers that don't need this branching
44270// live outside of this function.
44271
44272
44273function ChildReconciler(shouldTrackSideEffects) {
44274  function deleteChild(returnFiber, childToDelete) {
44275    if (!shouldTrackSideEffects) {
44276      // Noop.
44277      return;
44278    } // Deletions are added in reversed order so we add it to the front.
44279    // At this point, the return fiber's effect list is empty except for
44280    // deletions, so we can just append the deletion to the list. The remaining
44281    // effects aren't added until the complete phase. Once we implement
44282    // resuming, this may not be true.
44283
44284
44285    var last = returnFiber.lastEffect;
44286
44287    if (last !== null) {
44288      last.nextEffect = childToDelete;
44289      returnFiber.lastEffect = childToDelete;
44290    } else {
44291      returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;
44292    }
44293
44294    childToDelete.nextEffect = null;
44295    childToDelete.flags = Deletion;
44296  }
44297
44298  function deleteRemainingChildren(returnFiber, currentFirstChild) {
44299    if (!shouldTrackSideEffects) {
44300      // Noop.
44301      return null;
44302    } // TODO: For the shouldClone case, this could be micro-optimized a bit by
44303    // assuming that after the first child we've already added everything.
44304
44305
44306    var childToDelete = currentFirstChild;
44307
44308    while (childToDelete !== null) {
44309      deleteChild(returnFiber, childToDelete);
44310      childToDelete = childToDelete.sibling;
44311    }
44312
44313    return null;
44314  }
44315
44316  function mapRemainingChildren(returnFiber, currentFirstChild) {
44317    // Add the remaining children to a temporary map so that we can find them by
44318    // keys quickly. Implicit (null) keys get added to this set with their index
44319    // instead.
44320    var existingChildren = new Map();
44321    var existingChild = currentFirstChild;
44322
44323    while (existingChild !== null) {
44324      if (existingChild.key !== null) {
44325        existingChildren.set(existingChild.key, existingChild);
44326      } else {
44327        existingChildren.set(existingChild.index, existingChild);
44328      }
44329
44330      existingChild = existingChild.sibling;
44331    }
44332
44333    return existingChildren;
44334  }
44335
44336  function useFiber(fiber, pendingProps) {
44337    // We currently set sibling to null and index to 0 here because it is easy
44338    // to forget to do before returning it. E.g. for the single child case.
44339    var clone = createWorkInProgress(fiber, pendingProps);
44340    clone.index = 0;
44341    clone.sibling = null;
44342    return clone;
44343  }
44344
44345  function placeChild(newFiber, lastPlacedIndex, newIndex) {
44346    newFiber.index = newIndex;
44347
44348    if (!shouldTrackSideEffects) {
44349      // Noop.
44350      return lastPlacedIndex;
44351    }
44352
44353    var current = newFiber.alternate;
44354
44355    if (current !== null) {
44356      var oldIndex = current.index;
44357
44358      if (oldIndex < lastPlacedIndex) {
44359        // This is a move.
44360        newFiber.flags = Placement;
44361        return lastPlacedIndex;
44362      } else {
44363        // This item can stay in place.
44364        return oldIndex;
44365      }
44366    } else {
44367      // This is an insertion.
44368      newFiber.flags = Placement;
44369      return lastPlacedIndex;
44370    }
44371  }
44372
44373  function placeSingleChild(newFiber) {
44374    // This is simpler for the single child case. We only need to do a
44375    // placement for inserting new children.
44376    if (shouldTrackSideEffects && newFiber.alternate === null) {
44377      newFiber.flags = Placement;
44378    }
44379
44380    return newFiber;
44381  }
44382
44383  function updateTextNode(returnFiber, current, textContent, lanes) {
44384    if (current === null || current.tag !== HostText) {
44385      // Insert
44386      var created = createFiberFromText(textContent, returnFiber.mode, lanes);
44387      created.return = returnFiber;
44388      return created;
44389    } else {
44390      // Update
44391      var existing = useFiber(current, textContent);
44392      existing.return = returnFiber;
44393      return existing;
44394    }
44395  }
44396
44397  function updateElement(returnFiber, current, element, lanes) {
44398    if (current !== null) {
44399      if (current.elementType === element.type || ( // Keep this check inline so it only runs on the false path:
44400       isCompatibleFamilyForHotReloading(current, element) )) {
44401        // Move based on index
44402        var existing = useFiber(current, element.props);
44403        existing.ref = coerceRef(returnFiber, current, element);
44404        existing.return = returnFiber;
44405
44406        {
44407          existing._debugSource = element._source;
44408          existing._debugOwner = element._owner;
44409        }
44410
44411        return existing;
44412      }
44413    } // Insert
44414
44415
44416    var created = createFiberFromElement(element, returnFiber.mode, lanes);
44417    created.ref = coerceRef(returnFiber, current, element);
44418    created.return = returnFiber;
44419    return created;
44420  }
44421
44422  function updatePortal(returnFiber, current, portal, lanes) {
44423    if (current === null || current.tag !== HostPortal || current.stateNode.containerInfo !== portal.containerInfo || current.stateNode.implementation !== portal.implementation) {
44424      // Insert
44425      var created = createFiberFromPortal(portal, returnFiber.mode, lanes);
44426      created.return = returnFiber;
44427      return created;
44428    } else {
44429      // Update
44430      var existing = useFiber(current, portal.children || []);
44431      existing.return = returnFiber;
44432      return existing;
44433    }
44434  }
44435
44436  function updateFragment(returnFiber, current, fragment, lanes, key) {
44437    if (current === null || current.tag !== Fragment) {
44438      // Insert
44439      var created = createFiberFromFragment(fragment, returnFiber.mode, lanes, key);
44440      created.return = returnFiber;
44441      return created;
44442    } else {
44443      // Update
44444      var existing = useFiber(current, fragment);
44445      existing.return = returnFiber;
44446      return existing;
44447    }
44448  }
44449
44450  function createChild(returnFiber, newChild, lanes) {
44451    if (typeof newChild === 'string' || typeof newChild === 'number') {
44452      // Text nodes don't have keys. If the previous node is implicitly keyed
44453      // we can continue to replace it without aborting even if it is not a text
44454      // node.
44455      var created = createFiberFromText('' + newChild, returnFiber.mode, lanes);
44456      created.return = returnFiber;
44457      return created;
44458    }
44459
44460    if (typeof newChild === 'object' && newChild !== null) {
44461      switch (newChild.$$typeof) {
44462        case REACT_ELEMENT_TYPE:
44463          {
44464            var _created = createFiberFromElement(newChild, returnFiber.mode, lanes);
44465
44466            _created.ref = coerceRef(returnFiber, null, newChild);
44467            _created.return = returnFiber;
44468            return _created;
44469          }
44470
44471        case REACT_PORTAL_TYPE:
44472          {
44473            var _created2 = createFiberFromPortal(newChild, returnFiber.mode, lanes);
44474
44475            _created2.return = returnFiber;
44476            return _created2;
44477          }
44478      }
44479
44480      if (isArray$1(newChild) || getIteratorFn(newChild)) {
44481        var _created3 = createFiberFromFragment(newChild, returnFiber.mode, lanes, null);
44482
44483        _created3.return = returnFiber;
44484        return _created3;
44485      }
44486
44487      throwOnInvalidObjectType(returnFiber, newChild);
44488    }
44489
44490    {
44491      if (typeof newChild === 'function') {
44492        warnOnFunctionType(returnFiber);
44493      }
44494    }
44495
44496    return null;
44497  }
44498
44499  function updateSlot(returnFiber, oldFiber, newChild, lanes) {
44500    // Update the fiber if the keys match, otherwise return null.
44501    var key = oldFiber !== null ? oldFiber.key : null;
44502
44503    if (typeof newChild === 'string' || typeof newChild === 'number') {
44504      // Text nodes don't have keys. If the previous node is implicitly keyed
44505      // we can continue to replace it without aborting even if it is not a text
44506      // node.
44507      if (key !== null) {
44508        return null;
44509      }
44510
44511      return updateTextNode(returnFiber, oldFiber, '' + newChild, lanes);
44512    }
44513
44514    if (typeof newChild === 'object' && newChild !== null) {
44515      switch (newChild.$$typeof) {
44516        case REACT_ELEMENT_TYPE:
44517          {
44518            if (newChild.key === key) {
44519              if (newChild.type === REACT_FRAGMENT_TYPE) {
44520                return updateFragment(returnFiber, oldFiber, newChild.props.children, lanes, key);
44521              }
44522
44523              return updateElement(returnFiber, oldFiber, newChild, lanes);
44524            } else {
44525              return null;
44526            }
44527          }
44528
44529        case REACT_PORTAL_TYPE:
44530          {
44531            if (newChild.key === key) {
44532              return updatePortal(returnFiber, oldFiber, newChild, lanes);
44533            } else {
44534              return null;
44535            }
44536          }
44537      }
44538
44539      if (isArray$1(newChild) || getIteratorFn(newChild)) {
44540        if (key !== null) {
44541          return null;
44542        }
44543
44544        return updateFragment(returnFiber, oldFiber, newChild, lanes, null);
44545      }
44546
44547      throwOnInvalidObjectType(returnFiber, newChild);
44548    }
44549
44550    {
44551      if (typeof newChild === 'function') {
44552        warnOnFunctionType(returnFiber);
44553      }
44554    }
44555
44556    return null;
44557  }
44558
44559  function updateFromMap(existingChildren, returnFiber, newIdx, newChild, lanes) {
44560    if (typeof newChild === 'string' || typeof newChild === 'number') {
44561      // Text nodes don't have keys, so we neither have to check the old nor
44562      // new node for the key. If both are text nodes, they match.
44563      var matchedFiber = existingChildren.get(newIdx) || null;
44564      return updateTextNode(returnFiber, matchedFiber, '' + newChild, lanes);
44565    }
44566
44567    if (typeof newChild === 'object' && newChild !== null) {
44568      switch (newChild.$$typeof) {
44569        case REACT_ELEMENT_TYPE:
44570          {
44571            var _matchedFiber = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
44572
44573            if (newChild.type === REACT_FRAGMENT_TYPE) {
44574              return updateFragment(returnFiber, _matchedFiber, newChild.props.children, lanes, newChild.key);
44575            }
44576
44577            return updateElement(returnFiber, _matchedFiber, newChild, lanes);
44578          }
44579
44580        case REACT_PORTAL_TYPE:
44581          {
44582            var _matchedFiber2 = existingChildren.get(newChild.key === null ? newIdx : newChild.key) || null;
44583
44584            return updatePortal(returnFiber, _matchedFiber2, newChild, lanes);
44585          }
44586
44587      }
44588
44589      if (isArray$1(newChild) || getIteratorFn(newChild)) {
44590        var _matchedFiber3 = existingChildren.get(newIdx) || null;
44591
44592        return updateFragment(returnFiber, _matchedFiber3, newChild, lanes, null);
44593      }
44594
44595      throwOnInvalidObjectType(returnFiber, newChild);
44596    }
44597
44598    {
44599      if (typeof newChild === 'function') {
44600        warnOnFunctionType(returnFiber);
44601      }
44602    }
44603
44604    return null;
44605  }
44606  /**
44607   * Warns if there is a duplicate or missing key
44608   */
44609
44610
44611  function warnOnInvalidKey(child, knownKeys, returnFiber) {
44612    {
44613      if (typeof child !== 'object' || child === null) {
44614        return knownKeys;
44615      }
44616
44617      switch (child.$$typeof) {
44618        case REACT_ELEMENT_TYPE:
44619        case REACT_PORTAL_TYPE:
44620          warnForMissingKey(child, returnFiber);
44621          var key = child.key;
44622
44623          if (typeof key !== 'string') {
44624            break;
44625          }
44626
44627          if (knownKeys === null) {
44628            knownKeys = new Set();
44629            knownKeys.add(key);
44630            break;
44631          }
44632
44633          if (!knownKeys.has(key)) {
44634            knownKeys.add(key);
44635            break;
44636          }
44637
44638          error('Encountered two children with the same key, `%s`. ' + 'Keys should be unique so that components maintain their identity ' + 'across updates. Non-unique keys may cause children to be ' + 'duplicated and/or omitted — the behavior is unsupported and ' + 'could change in a future version.', key);
44639
44640          break;
44641      }
44642    }
44643
44644    return knownKeys;
44645  }
44646
44647  function reconcileChildrenArray(returnFiber, currentFirstChild, newChildren, lanes) {
44648    // This algorithm can't optimize by searching from both ends since we
44649    // don't have backpointers on fibers. I'm trying to see how far we can get
44650    // with that model. If it ends up not being worth the tradeoffs, we can
44651    // add it later.
44652    // Even with a two ended optimization, we'd want to optimize for the case
44653    // where there are few changes and brute force the comparison instead of
44654    // going for the Map. It'd like to explore hitting that path first in
44655    // forward-only mode and only go for the Map once we notice that we need
44656    // lots of look ahead. This doesn't handle reversal as well as two ended
44657    // search but that's unusual. Besides, for the two ended optimization to
44658    // work on Iterables, we'd need to copy the whole set.
44659    // In this first iteration, we'll just live with hitting the bad case
44660    // (adding everything to a Map) in for every insert/move.
44661    // If you change this code, also update reconcileChildrenIterator() which
44662    // uses the same algorithm.
44663    {
44664      // First, validate keys.
44665      var knownKeys = null;
44666
44667      for (var i = 0; i < newChildren.length; i++) {
44668        var child = newChildren[i];
44669        knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);
44670      }
44671    }
44672
44673    var resultingFirstChild = null;
44674    var previousNewFiber = null;
44675    var oldFiber = currentFirstChild;
44676    var lastPlacedIndex = 0;
44677    var newIdx = 0;
44678    var nextOldFiber = null;
44679
44680    for (; oldFiber !== null && newIdx < newChildren.length; newIdx++) {
44681      if (oldFiber.index > newIdx) {
44682        nextOldFiber = oldFiber;
44683        oldFiber = null;
44684      } else {
44685        nextOldFiber = oldFiber.sibling;
44686      }
44687
44688      var newFiber = updateSlot(returnFiber, oldFiber, newChildren[newIdx], lanes);
44689
44690      if (newFiber === null) {
44691        // TODO: This breaks on empty slots like null children. That's
44692        // unfortunate because it triggers the slow path all the time. We need
44693        // a better way to communicate whether this was a miss or null,
44694        // boolean, undefined, etc.
44695        if (oldFiber === null) {
44696          oldFiber = nextOldFiber;
44697        }
44698
44699        break;
44700      }
44701
44702      if (shouldTrackSideEffects) {
44703        if (oldFiber && newFiber.alternate === null) {
44704          // We matched the slot, but we didn't reuse the existing fiber, so we
44705          // need to delete the existing child.
44706          deleteChild(returnFiber, oldFiber);
44707        }
44708      }
44709
44710      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
44711
44712      if (previousNewFiber === null) {
44713        // TODO: Move out of the loop. This only happens for the first run.
44714        resultingFirstChild = newFiber;
44715      } else {
44716        // TODO: Defer siblings if we're not at the right index for this slot.
44717        // I.e. if we had null values before, then we want to defer this
44718        // for each null value. However, we also don't want to call updateSlot
44719        // with the previous one.
44720        previousNewFiber.sibling = newFiber;
44721      }
44722
44723      previousNewFiber = newFiber;
44724      oldFiber = nextOldFiber;
44725    }
44726
44727    if (newIdx === newChildren.length) {
44728      // We've reached the end of the new children. We can delete the rest.
44729      deleteRemainingChildren(returnFiber, oldFiber);
44730      return resultingFirstChild;
44731    }
44732
44733    if (oldFiber === null) {
44734      // If we don't have any more existing children we can choose a fast path
44735      // since the rest will all be insertions.
44736      for (; newIdx < newChildren.length; newIdx++) {
44737        var _newFiber = createChild(returnFiber, newChildren[newIdx], lanes);
44738
44739        if (_newFiber === null) {
44740          continue;
44741        }
44742
44743        lastPlacedIndex = placeChild(_newFiber, lastPlacedIndex, newIdx);
44744
44745        if (previousNewFiber === null) {
44746          // TODO: Move out of the loop. This only happens for the first run.
44747          resultingFirstChild = _newFiber;
44748        } else {
44749          previousNewFiber.sibling = _newFiber;
44750        }
44751
44752        previousNewFiber = _newFiber;
44753      }
44754
44755      return resultingFirstChild;
44756    } // Add all children to a key map for quick lookups.
44757
44758
44759    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.
44760
44761    for (; newIdx < newChildren.length; newIdx++) {
44762      var _newFiber2 = updateFromMap(existingChildren, returnFiber, newIdx, newChildren[newIdx], lanes);
44763
44764      if (_newFiber2 !== null) {
44765        if (shouldTrackSideEffects) {
44766          if (_newFiber2.alternate !== null) {
44767            // The new fiber is a work in progress, but if there exists a
44768            // current, that means that we reused the fiber. We need to delete
44769            // it from the child list so that we don't add it to the deletion
44770            // list.
44771            existingChildren.delete(_newFiber2.key === null ? newIdx : _newFiber2.key);
44772          }
44773        }
44774
44775        lastPlacedIndex = placeChild(_newFiber2, lastPlacedIndex, newIdx);
44776
44777        if (previousNewFiber === null) {
44778          resultingFirstChild = _newFiber2;
44779        } else {
44780          previousNewFiber.sibling = _newFiber2;
44781        }
44782
44783        previousNewFiber = _newFiber2;
44784      }
44785    }
44786
44787    if (shouldTrackSideEffects) {
44788      // Any existing children that weren't consumed above were deleted. We need
44789      // to add them to the deletion list.
44790      existingChildren.forEach(function (child) {
44791        return deleteChild(returnFiber, child);
44792      });
44793    }
44794
44795    return resultingFirstChild;
44796  }
44797
44798  function reconcileChildrenIterator(returnFiber, currentFirstChild, newChildrenIterable, lanes) {
44799    // This is the same implementation as reconcileChildrenArray(),
44800    // but using the iterator instead.
44801    var iteratorFn = getIteratorFn(newChildrenIterable);
44802
44803    if (!(typeof iteratorFn === 'function')) {
44804      {
44805        throw Error( "An object is not an iterable. This error is likely caused by a bug in React. Please file an issue." );
44806      }
44807    }
44808
44809    {
44810      // We don't support rendering Generators because it's a mutation.
44811      // See https://github.com/facebook/react/issues/12995
44812      if (typeof Symbol === 'function' && // $FlowFixMe Flow doesn't know about toStringTag
44813      newChildrenIterable[Symbol.toStringTag] === 'Generator') {
44814        if (!didWarnAboutGenerators) {
44815          error('Using Generators as children is unsupported and will likely yield ' + 'unexpected results because enumerating a generator mutates it. ' + 'You may convert it to an array with `Array.from()` or the ' + '`[...spread]` operator before rendering. Keep in mind ' + 'you might need to polyfill these features for older browsers.');
44816        }
44817
44818        didWarnAboutGenerators = true;
44819      } // Warn about using Maps as children
44820
44821
44822      if (newChildrenIterable.entries === iteratorFn) {
44823        if (!didWarnAboutMaps) {
44824          error('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');
44825        }
44826
44827        didWarnAboutMaps = true;
44828      } // First, validate keys.
44829      // We'll get a different iterator later for the main pass.
44830
44831
44832      var _newChildren = iteratorFn.call(newChildrenIterable);
44833
44834      if (_newChildren) {
44835        var knownKeys = null;
44836
44837        var _step = _newChildren.next();
44838
44839        for (; !_step.done; _step = _newChildren.next()) {
44840          var child = _step.value;
44841          knownKeys = warnOnInvalidKey(child, knownKeys, returnFiber);
44842        }
44843      }
44844    }
44845
44846    var newChildren = iteratorFn.call(newChildrenIterable);
44847
44848    if (!(newChildren != null)) {
44849      {
44850        throw Error( "An iterable object provided no iterator." );
44851      }
44852    }
44853
44854    var resultingFirstChild = null;
44855    var previousNewFiber = null;
44856    var oldFiber = currentFirstChild;
44857    var lastPlacedIndex = 0;
44858    var newIdx = 0;
44859    var nextOldFiber = null;
44860    var step = newChildren.next();
44861
44862    for (; oldFiber !== null && !step.done; newIdx++, step = newChildren.next()) {
44863      if (oldFiber.index > newIdx) {
44864        nextOldFiber = oldFiber;
44865        oldFiber = null;
44866      } else {
44867        nextOldFiber = oldFiber.sibling;
44868      }
44869
44870      var newFiber = updateSlot(returnFiber, oldFiber, step.value, lanes);
44871
44872      if (newFiber === null) {
44873        // TODO: This breaks on empty slots like null children. That's
44874        // unfortunate because it triggers the slow path all the time. We need
44875        // a better way to communicate whether this was a miss or null,
44876        // boolean, undefined, etc.
44877        if (oldFiber === null) {
44878          oldFiber = nextOldFiber;
44879        }
44880
44881        break;
44882      }
44883
44884      if (shouldTrackSideEffects) {
44885        if (oldFiber && newFiber.alternate === null) {
44886          // We matched the slot, but we didn't reuse the existing fiber, so we
44887          // need to delete the existing child.
44888          deleteChild(returnFiber, oldFiber);
44889        }
44890      }
44891
44892      lastPlacedIndex = placeChild(newFiber, lastPlacedIndex, newIdx);
44893
44894      if (previousNewFiber === null) {
44895        // TODO: Move out of the loop. This only happens for the first run.
44896        resultingFirstChild = newFiber;
44897      } else {
44898        // TODO: Defer siblings if we're not at the right index for this slot.
44899        // I.e. if we had null values before, then we want to defer this
44900        // for each null value. However, we also don't want to call updateSlot
44901        // with the previous one.
44902        previousNewFiber.sibling = newFiber;
44903      }
44904
44905      previousNewFiber = newFiber;
44906      oldFiber = nextOldFiber;
44907    }
44908
44909    if (step.done) {
44910      // We've reached the end of the new children. We can delete the rest.
44911      deleteRemainingChildren(returnFiber, oldFiber);
44912      return resultingFirstChild;
44913    }
44914
44915    if (oldFiber === null) {
44916      // If we don't have any more existing children we can choose a fast path
44917      // since the rest will all be insertions.
44918      for (; !step.done; newIdx++, step = newChildren.next()) {
44919        var _newFiber3 = createChild(returnFiber, step.value, lanes);
44920
44921        if (_newFiber3 === null) {
44922          continue;
44923        }
44924
44925        lastPlacedIndex = placeChild(_newFiber3, lastPlacedIndex, newIdx);
44926
44927        if (previousNewFiber === null) {
44928          // TODO: Move out of the loop. This only happens for the first run.
44929          resultingFirstChild = _newFiber3;
44930        } else {
44931          previousNewFiber.sibling = _newFiber3;
44932        }
44933
44934        previousNewFiber = _newFiber3;
44935      }
44936
44937      return resultingFirstChild;
44938    } // Add all children to a key map for quick lookups.
44939
44940
44941    var existingChildren = mapRemainingChildren(returnFiber, oldFiber); // Keep scanning and use the map to restore deleted items as moves.
44942
44943    for (; !step.done; newIdx++, step = newChildren.next()) {
44944      var _newFiber4 = updateFromMap(existingChildren, returnFiber, newIdx, step.value, lanes);
44945
44946      if (_newFiber4 !== null) {
44947        if (shouldTrackSideEffects) {
44948          if (_newFiber4.alternate !== null) {
44949            // The new fiber is a work in progress, but if there exists a
44950            // current, that means that we reused the fiber. We need to delete
44951            // it from the child list so that we don't add it to the deletion
44952            // list.
44953            existingChildren.delete(_newFiber4.key === null ? newIdx : _newFiber4.key);
44954          }
44955        }
44956
44957        lastPlacedIndex = placeChild(_newFiber4, lastPlacedIndex, newIdx);
44958
44959        if (previousNewFiber === null) {
44960          resultingFirstChild = _newFiber4;
44961        } else {
44962          previousNewFiber.sibling = _newFiber4;
44963        }
44964
44965        previousNewFiber = _newFiber4;
44966      }
44967    }
44968
44969    if (shouldTrackSideEffects) {
44970      // Any existing children that weren't consumed above were deleted. We need
44971      // to add them to the deletion list.
44972      existingChildren.forEach(function (child) {
44973        return deleteChild(returnFiber, child);
44974      });
44975    }
44976
44977    return resultingFirstChild;
44978  }
44979
44980  function reconcileSingleTextNode(returnFiber, currentFirstChild, textContent, lanes) {
44981    // There's no need to check for keys on text nodes since we don't have a
44982    // way to define them.
44983    if (currentFirstChild !== null && currentFirstChild.tag === HostText) {
44984      // We already have an existing node so let's just update it and delete
44985      // the rest.
44986      deleteRemainingChildren(returnFiber, currentFirstChild.sibling);
44987      var existing = useFiber(currentFirstChild, textContent);
44988      existing.return = returnFiber;
44989      return existing;
44990    } // The existing first child is not a text node so we need to create one
44991    // and delete the existing ones.
44992
44993
44994    deleteRemainingChildren(returnFiber, currentFirstChild);
44995    var created = createFiberFromText(textContent, returnFiber.mode, lanes);
44996    created.return = returnFiber;
44997    return created;
44998  }
44999
45000  function reconcileSingleElement(returnFiber, currentFirstChild, element, lanes) {
45001    var key = element.key;
45002    var child = currentFirstChild;
45003
45004    while (child !== null) {
45005      // TODO: If key === null and child.key === null, then this only applies to
45006      // the first item in the list.
45007      if (child.key === key) {
45008        switch (child.tag) {
45009          case Fragment:
45010            {
45011              if (element.type === REACT_FRAGMENT_TYPE) {
45012                deleteRemainingChildren(returnFiber, child.sibling);
45013                var existing = useFiber(child, element.props.children);
45014                existing.return = returnFiber;
45015
45016                {
45017                  existing._debugSource = element._source;
45018                  existing._debugOwner = element._owner;
45019                }
45020
45021                return existing;
45022              }
45023
45024              break;
45025            }
45026
45027          case Block:
45028
45029          // We intentionally fallthrough here if enableBlocksAPI is not on.
45030          // eslint-disable-next-lined no-fallthrough
45031
45032          default:
45033            {
45034              if (child.elementType === element.type || ( // Keep this check inline so it only runs on the false path:
45035               isCompatibleFamilyForHotReloading(child, element) )) {
45036                deleteRemainingChildren(returnFiber, child.sibling);
45037
45038                var _existing3 = useFiber(child, element.props);
45039
45040                _existing3.ref = coerceRef(returnFiber, child, element);
45041                _existing3.return = returnFiber;
45042
45043                {
45044                  _existing3._debugSource = element._source;
45045                  _existing3._debugOwner = element._owner;
45046                }
45047
45048                return _existing3;
45049              }
45050
45051              break;
45052            }
45053        } // Didn't match.
45054
45055
45056        deleteRemainingChildren(returnFiber, child);
45057        break;
45058      } else {
45059        deleteChild(returnFiber, child);
45060      }
45061
45062      child = child.sibling;
45063    }
45064
45065    if (element.type === REACT_FRAGMENT_TYPE) {
45066      var created = createFiberFromFragment(element.props.children, returnFiber.mode, lanes, element.key);
45067      created.return = returnFiber;
45068      return created;
45069    } else {
45070      var _created4 = createFiberFromElement(element, returnFiber.mode, lanes);
45071
45072      _created4.ref = coerceRef(returnFiber, currentFirstChild, element);
45073      _created4.return = returnFiber;
45074      return _created4;
45075    }
45076  }
45077
45078  function reconcileSinglePortal(returnFiber, currentFirstChild, portal, lanes) {
45079    var key = portal.key;
45080    var child = currentFirstChild;
45081
45082    while (child !== null) {
45083      // TODO: If key === null and child.key === null, then this only applies to
45084      // the first item in the list.
45085      if (child.key === key) {
45086        if (child.tag === HostPortal && child.stateNode.containerInfo === portal.containerInfo && child.stateNode.implementation === portal.implementation) {
45087          deleteRemainingChildren(returnFiber, child.sibling);
45088          var existing = useFiber(child, portal.children || []);
45089          existing.return = returnFiber;
45090          return existing;
45091        } else {
45092          deleteRemainingChildren(returnFiber, child);
45093          break;
45094        }
45095      } else {
45096        deleteChild(returnFiber, child);
45097      }
45098
45099      child = child.sibling;
45100    }
45101
45102    var created = createFiberFromPortal(portal, returnFiber.mode, lanes);
45103    created.return = returnFiber;
45104    return created;
45105  } // This API will tag the children with the side-effect of the reconciliation
45106  // itself. They will be added to the side-effect list as we pass through the
45107  // children and the parent.
45108
45109
45110  function reconcileChildFibers(returnFiber, currentFirstChild, newChild, lanes) {
45111    // This function is not recursive.
45112    // If the top level item is an array, we treat it as a set of children,
45113    // not as a fragment. Nested arrays on the other hand will be treated as
45114    // fragment nodes. Recursion happens at the normal flow.
45115    // Handle top level unkeyed fragments as if they were arrays.
45116    // This leads to an ambiguity between <>{[...]}</> and <>...</>.
45117    // We treat the ambiguous cases above the same.
45118    var isUnkeyedTopLevelFragment = typeof newChild === 'object' && newChild !== null && newChild.type === REACT_FRAGMENT_TYPE && newChild.key === null;
45119
45120    if (isUnkeyedTopLevelFragment) {
45121      newChild = newChild.props.children;
45122    } // Handle object types
45123
45124
45125    var isObject = typeof newChild === 'object' && newChild !== null;
45126
45127    if (isObject) {
45128      switch (newChild.$$typeof) {
45129        case REACT_ELEMENT_TYPE:
45130          return placeSingleChild(reconcileSingleElement(returnFiber, currentFirstChild, newChild, lanes));
45131
45132        case REACT_PORTAL_TYPE:
45133          return placeSingleChild(reconcileSinglePortal(returnFiber, currentFirstChild, newChild, lanes));
45134
45135      }
45136    }
45137
45138    if (typeof newChild === 'string' || typeof newChild === 'number') {
45139      return placeSingleChild(reconcileSingleTextNode(returnFiber, currentFirstChild, '' + newChild, lanes));
45140    }
45141
45142    if (isArray$1(newChild)) {
45143      return reconcileChildrenArray(returnFiber, currentFirstChild, newChild, lanes);
45144    }
45145
45146    if (getIteratorFn(newChild)) {
45147      return reconcileChildrenIterator(returnFiber, currentFirstChild, newChild, lanes);
45148    }
45149
45150    if (isObject) {
45151      throwOnInvalidObjectType(returnFiber, newChild);
45152    }
45153
45154    {
45155      if (typeof newChild === 'function') {
45156        warnOnFunctionType(returnFiber);
45157      }
45158    }
45159
45160    if (typeof newChild === 'undefined' && !isUnkeyedTopLevelFragment) {
45161      // If the new child is undefined, and the return fiber is a composite
45162      // component, throw an error. If Fiber return types are disabled,
45163      // we already threw above.
45164      switch (returnFiber.tag) {
45165        case ClassComponent:
45166          {
45167            {
45168              var instance = returnFiber.stateNode;
45169
45170              if (instance.render._isMockFunction) {
45171                // We allow auto-mocks to proceed as if they're returning null.
45172                break;
45173              }
45174            }
45175          }
45176        // Intentionally fall through to the next case, which handles both
45177        // functions and classes
45178        // eslint-disable-next-lined no-fallthrough
45179
45180        case Block:
45181        case FunctionComponent:
45182        case ForwardRef:
45183        case SimpleMemoComponent:
45184          {
45185            {
45186              {
45187                throw Error( (getComponentName(returnFiber.type) || 'Component') + "(...): Nothing was returned from render. This usually means a return statement is missing. Or, to render nothing, return null." );
45188              }
45189            }
45190          }
45191      }
45192    } // Remaining cases are all treated as empty.
45193
45194
45195    return deleteRemainingChildren(returnFiber, currentFirstChild);
45196  }
45197
45198  return reconcileChildFibers;
45199}
45200
45201var reconcileChildFibers = ChildReconciler(true);
45202var mountChildFibers = ChildReconciler(false);
45203function cloneChildFibers(current, workInProgress) {
45204  if (!(current === null || workInProgress.child === current.child)) {
45205    {
45206      throw Error( "Resuming work not yet implemented." );
45207    }
45208  }
45209
45210  if (workInProgress.child === null) {
45211    return;
45212  }
45213
45214  var currentChild = workInProgress.child;
45215  var newChild = createWorkInProgress(currentChild, currentChild.pendingProps);
45216  workInProgress.child = newChild;
45217  newChild.return = workInProgress;
45218
45219  while (currentChild.sibling !== null) {
45220    currentChild = currentChild.sibling;
45221    newChild = newChild.sibling = createWorkInProgress(currentChild, currentChild.pendingProps);
45222    newChild.return = workInProgress;
45223  }
45224
45225  newChild.sibling = null;
45226} // Reset a workInProgress child set to prepare it for a second pass.
45227
45228function resetChildFibers(workInProgress, lanes) {
45229  var child = workInProgress.child;
45230
45231  while (child !== null) {
45232    resetWorkInProgress(child, lanes);
45233    child = child.sibling;
45234  }
45235}
45236
45237var NO_CONTEXT = {};
45238var contextStackCursor$1 = createCursor(NO_CONTEXT);
45239var contextFiberStackCursor = createCursor(NO_CONTEXT);
45240var rootInstanceStackCursor = createCursor(NO_CONTEXT);
45241
45242function requiredContext(c) {
45243  if (!(c !== NO_CONTEXT)) {
45244    {
45245      throw Error( "Expected host context to exist. This error is likely caused by a bug in React. Please file an issue." );
45246    }
45247  }
45248
45249  return c;
45250}
45251
45252function getRootHostContainer() {
45253  var rootInstance = requiredContext(rootInstanceStackCursor.current);
45254  return rootInstance;
45255}
45256
45257function pushHostContainer(fiber, nextRootInstance) {
45258  // Push current root instance onto the stack;
45259  // This allows us to reset root when portals are popped.
45260  push(rootInstanceStackCursor, nextRootInstance, fiber); // Track the context and the Fiber that provided it.
45261  // This enables us to pop only Fibers that provide unique contexts.
45262
45263  push(contextFiberStackCursor, fiber, fiber); // Finally, we need to push the host context to the stack.
45264  // However, we can't just call getRootHostContext() and push it because
45265  // we'd have a different number of entries on the stack depending on
45266  // whether getRootHostContext() throws somewhere in renderer code or not.
45267  // So we push an empty value first. This lets us safely unwind on errors.
45268
45269  push(contextStackCursor$1, NO_CONTEXT, fiber);
45270  var nextRootContext = getRootHostContext(nextRootInstance); // Now that we know this function doesn't throw, replace it.
45271
45272  pop(contextStackCursor$1, fiber);
45273  push(contextStackCursor$1, nextRootContext, fiber);
45274}
45275
45276function popHostContainer(fiber) {
45277  pop(contextStackCursor$1, fiber);
45278  pop(contextFiberStackCursor, fiber);
45279  pop(rootInstanceStackCursor, fiber);
45280}
45281
45282function getHostContext() {
45283  var context = requiredContext(contextStackCursor$1.current);
45284  return context;
45285}
45286
45287function pushHostContext(fiber) {
45288  var rootInstance = requiredContext(rootInstanceStackCursor.current);
45289  var context = requiredContext(contextStackCursor$1.current);
45290  var nextContext = getChildHostContext(context, fiber.type); // Don't push this Fiber's context unless it's unique.
45291
45292  if (context === nextContext) {
45293    return;
45294  } // Track the context and the Fiber that provided it.
45295  // This enables us to pop only Fibers that provide unique contexts.
45296
45297
45298  push(contextFiberStackCursor, fiber, fiber);
45299  push(contextStackCursor$1, nextContext, fiber);
45300}
45301
45302function popHostContext(fiber) {
45303  // Do not pop unless this Fiber provided the current context.
45304  // pushHostContext() only pushes Fibers that provide unique contexts.
45305  if (contextFiberStackCursor.current !== fiber) {
45306    return;
45307  }
45308
45309  pop(contextStackCursor$1, fiber);
45310  pop(contextFiberStackCursor, fiber);
45311}
45312
45313var DefaultSuspenseContext = 0; // The Suspense Context is split into two parts. The lower bits is
45314// inherited deeply down the subtree. The upper bits only affect
45315// this immediate suspense boundary and gets reset each new
45316// boundary or suspense list.
45317
45318var SubtreeSuspenseContextMask = 1; // Subtree Flags:
45319// InvisibleParentSuspenseContext indicates that one of our parent Suspense
45320// boundaries is not currently showing visible main content.
45321// Either because it is already showing a fallback or is not mounted at all.
45322// We can use this to determine if it is desirable to trigger a fallback at
45323// the parent. If not, then we might need to trigger undesirable boundaries
45324// and/or suspend the commit to avoid hiding the parent content.
45325
45326var InvisibleParentSuspenseContext = 1; // Shallow Flags:
45327// ForceSuspenseFallback can be used by SuspenseList to force newly added
45328// items into their fallback state during one of the render passes.
45329
45330var ForceSuspenseFallback = 2;
45331var suspenseStackCursor = createCursor(DefaultSuspenseContext);
45332function hasSuspenseContext(parentContext, flag) {
45333  return (parentContext & flag) !== 0;
45334}
45335function setDefaultShallowSuspenseContext(parentContext) {
45336  return parentContext & SubtreeSuspenseContextMask;
45337}
45338function setShallowSuspenseContext(parentContext, shallowContext) {
45339  return parentContext & SubtreeSuspenseContextMask | shallowContext;
45340}
45341function addSubtreeSuspenseContext(parentContext, subtreeContext) {
45342  return parentContext | subtreeContext;
45343}
45344function pushSuspenseContext(fiber, newContext) {
45345  push(suspenseStackCursor, newContext, fiber);
45346}
45347function popSuspenseContext(fiber) {
45348  pop(suspenseStackCursor, fiber);
45349}
45350
45351function shouldCaptureSuspense(workInProgress, hasInvisibleParent) {
45352  // If it was the primary children that just suspended, capture and render the
45353  // fallback. Otherwise, don't capture and bubble to the next boundary.
45354  var nextState = workInProgress.memoizedState;
45355
45356  if (nextState !== null) {
45357    if (nextState.dehydrated !== null) {
45358      // A dehydrated boundary always captures.
45359      return true;
45360    }
45361
45362    return false;
45363  }
45364
45365  var props = workInProgress.memoizedProps; // In order to capture, the Suspense component must have a fallback prop.
45366
45367  if (props.fallback === undefined) {
45368    return false;
45369  } // Regular boundaries always capture.
45370
45371
45372  if (props.unstable_avoidThisFallback !== true) {
45373    return true;
45374  } // If it's a boundary we should avoid, then we prefer to bubble up to the
45375  // parent boundary if it is currently invisible.
45376
45377
45378  if (hasInvisibleParent) {
45379    return false;
45380  } // If the parent is not able to handle it, we must handle it.
45381
45382
45383  return true;
45384}
45385function findFirstSuspended(row) {
45386  var node = row;
45387
45388  while (node !== null) {
45389    if (node.tag === SuspenseComponent) {
45390      var state = node.memoizedState;
45391
45392      if (state !== null) {
45393        var dehydrated = state.dehydrated;
45394
45395        if (dehydrated === null || isSuspenseInstancePending(dehydrated) || isSuspenseInstanceFallback(dehydrated)) {
45396          return node;
45397        }
45398      }
45399    } else if (node.tag === SuspenseListComponent && // revealOrder undefined can't be trusted because it don't
45400    // keep track of whether it suspended or not.
45401    node.memoizedProps.revealOrder !== undefined) {
45402      var didSuspend = (node.flags & DidCapture) !== NoFlags;
45403
45404      if (didSuspend) {
45405        return node;
45406      }
45407    } else if (node.child !== null) {
45408      node.child.return = node;
45409      node = node.child;
45410      continue;
45411    }
45412
45413    if (node === row) {
45414      return null;
45415    }
45416
45417    while (node.sibling === null) {
45418      if (node.return === null || node.return === row) {
45419        return null;
45420      }
45421
45422      node = node.return;
45423    }
45424
45425    node.sibling.return = node.return;
45426    node = node.sibling;
45427  }
45428
45429  return null;
45430}
45431
45432var NoFlags$1 =
45433/*  */
454340; // Represents whether effect should fire.
45435
45436var HasEffect =
45437/* */
454381; // Represents the phase in which the effect (not the clean-up) fires.
45439
45440var Layout =
45441/*    */
454422;
45443var Passive$1 =
45444/*   */
454454;
45446
45447// This may have been an insertion or a hydration.
45448
45449var hydrationParentFiber = null;
45450var nextHydratableInstance = null;
45451var isHydrating = false;
45452
45453function enterHydrationState(fiber) {
45454
45455  var parentInstance = fiber.stateNode.containerInfo;
45456  nextHydratableInstance = getFirstHydratableChild(parentInstance);
45457  hydrationParentFiber = fiber;
45458  isHydrating = true;
45459  return true;
45460}
45461
45462function deleteHydratableInstance(returnFiber, instance) {
45463  {
45464    switch (returnFiber.tag) {
45465      case HostRoot:
45466        didNotHydrateContainerInstance(returnFiber.stateNode.containerInfo, instance);
45467        break;
45468
45469      case HostComponent:
45470        didNotHydrateInstance(returnFiber.type, returnFiber.memoizedProps, returnFiber.stateNode, instance);
45471        break;
45472    }
45473  }
45474
45475  var childToDelete = createFiberFromHostInstanceForDeletion();
45476  childToDelete.stateNode = instance;
45477  childToDelete.return = returnFiber;
45478  childToDelete.flags = Deletion; // This might seem like it belongs on progressedFirstDeletion. However,
45479  // these children are not part of the reconciliation list of children.
45480  // Even if we abort and rereconcile the children, that will try to hydrate
45481  // again and the nodes are still in the host tree so these will be
45482  // recreated.
45483
45484  if (returnFiber.lastEffect !== null) {
45485    returnFiber.lastEffect.nextEffect = childToDelete;
45486    returnFiber.lastEffect = childToDelete;
45487  } else {
45488    returnFiber.firstEffect = returnFiber.lastEffect = childToDelete;
45489  }
45490}
45491
45492function insertNonHydratedInstance(returnFiber, fiber) {
45493  fiber.flags = fiber.flags & ~Hydrating | Placement;
45494
45495  {
45496    switch (returnFiber.tag) {
45497      case HostRoot:
45498        {
45499          var parentContainer = returnFiber.stateNode.containerInfo;
45500
45501          switch (fiber.tag) {
45502            case HostComponent:
45503              var type = fiber.type;
45504              var props = fiber.pendingProps;
45505              didNotFindHydratableContainerInstance(parentContainer, type);
45506              break;
45507
45508            case HostText:
45509              var text = fiber.pendingProps;
45510              didNotFindHydratableContainerTextInstance(parentContainer, text);
45511              break;
45512          }
45513
45514          break;
45515        }
45516
45517      case HostComponent:
45518        {
45519          var parentType = returnFiber.type;
45520          var parentProps = returnFiber.memoizedProps;
45521          var parentInstance = returnFiber.stateNode;
45522
45523          switch (fiber.tag) {
45524            case HostComponent:
45525              var _type = fiber.type;
45526              var _props = fiber.pendingProps;
45527              didNotFindHydratableInstance(parentType, parentProps, parentInstance, _type);
45528              break;
45529
45530            case HostText:
45531              var _text = fiber.pendingProps;
45532              didNotFindHydratableTextInstance(parentType, parentProps, parentInstance, _text);
45533              break;
45534
45535            case SuspenseComponent:
45536              didNotFindHydratableSuspenseInstance(parentType, parentProps);
45537              break;
45538          }
45539
45540          break;
45541        }
45542
45543      default:
45544        return;
45545    }
45546  }
45547}
45548
45549function tryHydrate(fiber, nextInstance) {
45550  switch (fiber.tag) {
45551    case HostComponent:
45552      {
45553        var type = fiber.type;
45554        var props = fiber.pendingProps;
45555        var instance = canHydrateInstance(nextInstance, type);
45556
45557        if (instance !== null) {
45558          fiber.stateNode = instance;
45559          return true;
45560        }
45561
45562        return false;
45563      }
45564
45565    case HostText:
45566      {
45567        var text = fiber.pendingProps;
45568        var textInstance = canHydrateTextInstance(nextInstance, text);
45569
45570        if (textInstance !== null) {
45571          fiber.stateNode = textInstance;
45572          return true;
45573        }
45574
45575        return false;
45576      }
45577
45578    case SuspenseComponent:
45579      {
45580
45581        return false;
45582      }
45583
45584    default:
45585      return false;
45586  }
45587}
45588
45589function tryToClaimNextHydratableInstance(fiber) {
45590  if (!isHydrating) {
45591    return;
45592  }
45593
45594  var nextInstance = nextHydratableInstance;
45595
45596  if (!nextInstance) {
45597    // Nothing to hydrate. Make it an insertion.
45598    insertNonHydratedInstance(hydrationParentFiber, fiber);
45599    isHydrating = false;
45600    hydrationParentFiber = fiber;
45601    return;
45602  }
45603
45604  var firstAttemptedInstance = nextInstance;
45605
45606  if (!tryHydrate(fiber, nextInstance)) {
45607    // If we can't hydrate this instance let's try the next one.
45608    // We use this as a heuristic. It's based on intuition and not data so it
45609    // might be flawed or unnecessary.
45610    nextInstance = getNextHydratableSibling(firstAttemptedInstance);
45611
45612    if (!nextInstance || !tryHydrate(fiber, nextInstance)) {
45613      // Nothing to hydrate. Make it an insertion.
45614      insertNonHydratedInstance(hydrationParentFiber, fiber);
45615      isHydrating = false;
45616      hydrationParentFiber = fiber;
45617      return;
45618    } // We matched the next one, we'll now assume that the first one was
45619    // superfluous and we'll delete it. Since we can't eagerly delete it
45620    // we'll have to schedule a deletion. To do that, this node needs a dummy
45621    // fiber associated with it.
45622
45623
45624    deleteHydratableInstance(hydrationParentFiber, firstAttemptedInstance);
45625  }
45626
45627  hydrationParentFiber = fiber;
45628  nextHydratableInstance = getFirstHydratableChild(nextInstance);
45629}
45630
45631function prepareToHydrateHostInstance(fiber, rootContainerInstance, hostContext) {
45632
45633  var instance = fiber.stateNode;
45634  var updatePayload = hydrateInstance(instance, fiber.type, fiber.memoizedProps, rootContainerInstance, hostContext, fiber); // TODO: Type this specific to this type of component.
45635
45636  fiber.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there
45637  // is a new ref we mark this as an update.
45638
45639  if (updatePayload !== null) {
45640    return true;
45641  }
45642
45643  return false;
45644}
45645
45646function prepareToHydrateHostTextInstance(fiber) {
45647
45648  var textInstance = fiber.stateNode;
45649  var textContent = fiber.memoizedProps;
45650  var shouldUpdate = hydrateTextInstance(textInstance, textContent, fiber);
45651
45652  {
45653    if (shouldUpdate) {
45654      // We assume that prepareToHydrateHostTextInstance is called in a context where the
45655      // hydration parent is the parent host component of this host text.
45656      var returnFiber = hydrationParentFiber;
45657
45658      if (returnFiber !== null) {
45659        switch (returnFiber.tag) {
45660          case HostRoot:
45661            {
45662              var parentContainer = returnFiber.stateNode.containerInfo;
45663              didNotMatchHydratedContainerTextInstance(parentContainer, textInstance, textContent);
45664              break;
45665            }
45666
45667          case HostComponent:
45668            {
45669              var parentType = returnFiber.type;
45670              var parentProps = returnFiber.memoizedProps;
45671              var parentInstance = returnFiber.stateNode;
45672              didNotMatchHydratedTextInstance(parentType, parentProps, parentInstance, textInstance, textContent);
45673              break;
45674            }
45675        }
45676      }
45677    }
45678  }
45679
45680  return shouldUpdate;
45681}
45682
45683function skipPastDehydratedSuspenseInstance(fiber) {
45684
45685  var suspenseState = fiber.memoizedState;
45686  var suspenseInstance = suspenseState !== null ? suspenseState.dehydrated : null;
45687
45688  if (!suspenseInstance) {
45689    {
45690      throw Error( "Expected to have a hydrated suspense instance. This error is likely caused by a bug in React. Please file an issue." );
45691    }
45692  }
45693
45694  return getNextHydratableInstanceAfterSuspenseInstance(suspenseInstance);
45695}
45696
45697function popToNextHostParent(fiber) {
45698  var parent = fiber.return;
45699
45700  while (parent !== null && parent.tag !== HostComponent && parent.tag !== HostRoot && parent.tag !== SuspenseComponent) {
45701    parent = parent.return;
45702  }
45703
45704  hydrationParentFiber = parent;
45705}
45706
45707function popHydrationState(fiber) {
45708
45709  if (fiber !== hydrationParentFiber) {
45710    // We're deeper than the current hydration context, inside an inserted
45711    // tree.
45712    return false;
45713  }
45714
45715  if (!isHydrating) {
45716    // If we're not currently hydrating but we're in a hydration context, then
45717    // we were an insertion and now need to pop up reenter hydration of our
45718    // siblings.
45719    popToNextHostParent(fiber);
45720    isHydrating = true;
45721    return false;
45722  }
45723
45724  var type = fiber.type; // If we have any remaining hydratable nodes, we need to delete them now.
45725  // We only do this deeper than head and body since they tend to have random
45726  // other nodes in them. We also ignore components with pure text content in
45727  // side of them.
45728  // TODO: Better heuristic.
45729
45730  if (fiber.tag !== HostComponent || type !== 'head' && type !== 'body' && !shouldSetTextContent(type, fiber.memoizedProps)) {
45731    var nextInstance = nextHydratableInstance;
45732
45733    while (nextInstance) {
45734      deleteHydratableInstance(fiber, nextInstance);
45735      nextInstance = getNextHydratableSibling(nextInstance);
45736    }
45737  }
45738
45739  popToNextHostParent(fiber);
45740
45741  if (fiber.tag === SuspenseComponent) {
45742    nextHydratableInstance = skipPastDehydratedSuspenseInstance(fiber);
45743  } else {
45744    nextHydratableInstance = hydrationParentFiber ? getNextHydratableSibling(fiber.stateNode) : null;
45745  }
45746
45747  return true;
45748}
45749
45750function resetHydrationState() {
45751
45752  hydrationParentFiber = null;
45753  nextHydratableInstance = null;
45754  isHydrating = false;
45755}
45756
45757function getIsHydrating() {
45758  return isHydrating;
45759}
45760
45761// and should be reset before starting a new render.
45762// This tracks which mutable sources need to be reset after a render.
45763
45764var workInProgressSources = [];
45765var rendererSigil$1;
45766
45767{
45768  // Used to detect multiple renderers using the same mutable source.
45769  rendererSigil$1 = {};
45770}
45771
45772function markSourceAsDirty(mutableSource) {
45773  workInProgressSources.push(mutableSource);
45774}
45775function resetWorkInProgressVersions() {
45776  for (var i = 0; i < workInProgressSources.length; i++) {
45777    var mutableSource = workInProgressSources[i];
45778
45779    {
45780      mutableSource._workInProgressVersionPrimary = null;
45781    }
45782  }
45783
45784  workInProgressSources.length = 0;
45785}
45786function getWorkInProgressVersion(mutableSource) {
45787  {
45788    return mutableSource._workInProgressVersionPrimary;
45789  }
45790}
45791function setWorkInProgressVersion(mutableSource, version) {
45792  {
45793    mutableSource._workInProgressVersionPrimary = version;
45794  }
45795
45796  workInProgressSources.push(mutableSource);
45797}
45798function warnAboutMultipleRenderersDEV(mutableSource) {
45799  {
45800    {
45801      if (mutableSource._currentPrimaryRenderer == null) {
45802        mutableSource._currentPrimaryRenderer = rendererSigil$1;
45803      } else if (mutableSource._currentPrimaryRenderer !== rendererSigil$1) {
45804        error('Detected multiple renderers concurrently rendering the ' + 'same mutable source. This is currently unsupported.');
45805      }
45806    }
45807  }
45808} // Eager reads the version of a mutable source and stores it on the root.
45809
45810var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher,
45811    ReactCurrentBatchConfig$1 = ReactSharedInternals.ReactCurrentBatchConfig;
45812var didWarnAboutMismatchedHooksForComponent;
45813var didWarnAboutUseOpaqueIdentifier;
45814
45815{
45816  didWarnAboutUseOpaqueIdentifier = {};
45817  didWarnAboutMismatchedHooksForComponent = new Set();
45818}
45819
45820// These are set right before calling the component.
45821var renderLanes = NoLanes; // The work-in-progress fiber. I've named it differently to distinguish it from
45822// the work-in-progress hook.
45823
45824var currentlyRenderingFiber$1 = null; // Hooks are stored as a linked list on the fiber's memoizedState field. The
45825// current hook list is the list that belongs to the current fiber. The
45826// work-in-progress hook list is a new list that will be added to the
45827// work-in-progress fiber.
45828
45829var currentHook = null;
45830var workInProgressHook = null; // Whether an update was scheduled at any point during the render phase. This
45831// does not get reset if we do another render pass; only when we're completely
45832// finished evaluating this component. This is an optimization so we know
45833// whether we need to clear render phase updates after a throw.
45834
45835var didScheduleRenderPhaseUpdate = false; // Where an update was scheduled only during the current render pass. This
45836// gets reset after each attempt.
45837// TODO: Maybe there's some way to consolidate this with
45838// `didScheduleRenderPhaseUpdate`. Or with `numberOfReRenders`.
45839
45840var didScheduleRenderPhaseUpdateDuringThisPass = false;
45841var RE_RENDER_LIMIT = 25; // In DEV, this is the name of the currently executing primitive hook
45842
45843var currentHookNameInDev = null; // In DEV, this list ensures that hooks are called in the same order between renders.
45844// The list stores the order of hooks used during the initial render (mount).
45845// Subsequent renders (updates) reference this list.
45846
45847var hookTypesDev = null;
45848var hookTypesUpdateIndexDev = -1; // In DEV, this tracks whether currently rendering component needs to ignore
45849// the dependencies for Hooks that need them (e.g. useEffect or useMemo).
45850// When true, such Hooks will always be "remounted". Only used during hot reload.
45851
45852var ignorePreviousDependencies = false;
45853
45854function mountHookTypesDev() {
45855  {
45856    var hookName = currentHookNameInDev;
45857
45858    if (hookTypesDev === null) {
45859      hookTypesDev = [hookName];
45860    } else {
45861      hookTypesDev.push(hookName);
45862    }
45863  }
45864}
45865
45866function updateHookTypesDev() {
45867  {
45868    var hookName = currentHookNameInDev;
45869
45870    if (hookTypesDev !== null) {
45871      hookTypesUpdateIndexDev++;
45872
45873      if (hookTypesDev[hookTypesUpdateIndexDev] !== hookName) {
45874        warnOnHookMismatchInDev(hookName);
45875      }
45876    }
45877  }
45878}
45879
45880function checkDepsAreArrayDev(deps) {
45881  {
45882    if (deps !== undefined && deps !== null && !Array.isArray(deps)) {
45883      // Verify deps, but only on mount to avoid extra checks.
45884      // It's unlikely their type would change as usually you define them inline.
45885      error('%s received a final argument that is not an array (instead, received `%s`). When ' + 'specified, the final argument must be an array.', currentHookNameInDev, typeof deps);
45886    }
45887  }
45888}
45889
45890function warnOnHookMismatchInDev(currentHookName) {
45891  {
45892    var componentName = getComponentName(currentlyRenderingFiber$1.type);
45893
45894    if (!didWarnAboutMismatchedHooksForComponent.has(componentName)) {
45895      didWarnAboutMismatchedHooksForComponent.add(componentName);
45896
45897      if (hookTypesDev !== null) {
45898        var table = '';
45899        var secondColumnStart = 30;
45900
45901        for (var i = 0; i <= hookTypesUpdateIndexDev; i++) {
45902          var oldHookName = hookTypesDev[i];
45903          var newHookName = i === hookTypesUpdateIndexDev ? currentHookName : oldHookName;
45904          var row = i + 1 + ". " + oldHookName; // Extra space so second column lines up
45905          // lol @ IE not supporting String#repeat
45906
45907          while (row.length < secondColumnStart) {
45908            row += ' ';
45909          }
45910
45911          row += newHookName + '\n';
45912          table += row;
45913        }
45914
45915        error('React has detected a change in the order of Hooks called by %s. ' + 'This will lead to bugs and errors if not fixed. ' + 'For more information, read the Rules of Hooks: https://reactjs.org/link/rules-of-hooks\n\n' + '   Previous render            Next render\n' + '   ------------------------------------------------------\n' + '%s' + '   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n', componentName, table);
45916      }
45917    }
45918  }
45919}
45920
45921function throwInvalidHookError() {
45922  {
45923    {
45924      throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem." );
45925    }
45926  }
45927}
45928
45929function areHookInputsEqual(nextDeps, prevDeps) {
45930  {
45931    if (ignorePreviousDependencies) {
45932      // Only true when this component is being hot reloaded.
45933      return false;
45934    }
45935  }
45936
45937  if (prevDeps === null) {
45938    {
45939      error('%s received a final argument during this render, but not during ' + 'the previous render. Even though the final argument is optional, ' + 'its type cannot change between renders.', currentHookNameInDev);
45940    }
45941
45942    return false;
45943  }
45944
45945  {
45946    // Don't bother comparing lengths in prod because these arrays should be
45947    // passed inline.
45948    if (nextDeps.length !== prevDeps.length) {
45949      error('The final argument passed to %s changed size between renders. The ' + 'order and size of this array must remain constant.\n\n' + 'Previous: %s\n' + 'Incoming: %s', currentHookNameInDev, "[" + prevDeps.join(', ') + "]", "[" + nextDeps.join(', ') + "]");
45950    }
45951  }
45952
45953  for (var i = 0; i < prevDeps.length && i < nextDeps.length; i++) {
45954    if (objectIs(nextDeps[i], prevDeps[i])) {
45955      continue;
45956    }
45957
45958    return false;
45959  }
45960
45961  return true;
45962}
45963
45964function renderWithHooks(current, workInProgress, Component, props, secondArg, nextRenderLanes) {
45965  renderLanes = nextRenderLanes;
45966  currentlyRenderingFiber$1 = workInProgress;
45967
45968  {
45969    hookTypesDev = current !== null ? current._debugHookTypes : null;
45970    hookTypesUpdateIndexDev = -1; // Used for hot reloading:
45971
45972    ignorePreviousDependencies = current !== null && current.type !== workInProgress.type;
45973  }
45974
45975  workInProgress.memoizedState = null;
45976  workInProgress.updateQueue = null;
45977  workInProgress.lanes = NoLanes; // The following should have already been reset
45978  // currentHook = null;
45979  // workInProgressHook = null;
45980  // didScheduleRenderPhaseUpdate = false;
45981  // TODO Warn if no hooks are used at all during mount, then some are used during update.
45982  // Currently we will identify the update render as a mount because memoizedState === null.
45983  // This is tricky because it's valid for certain types of components (e.g. React.lazy)
45984  // Using memoizedState to differentiate between mount/update only works if at least one stateful hook is used.
45985  // Non-stateful hooks (e.g. context) don't get added to memoizedState,
45986  // so memoizedState would be null during updates and mounts.
45987
45988  {
45989    if (current !== null && current.memoizedState !== null) {
45990      ReactCurrentDispatcher$1.current = HooksDispatcherOnUpdateInDEV;
45991    } else if (hookTypesDev !== null) {
45992      // This dispatcher handles an edge case where a component is updating,
45993      // but no stateful hooks have been used.
45994      // We want to match the production code behavior (which will use HooksDispatcherOnMount),
45995      // but with the extra DEV validation to ensure hooks ordering hasn't changed.
45996      // This dispatcher does that.
45997      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountWithHookTypesInDEV;
45998    } else {
45999      ReactCurrentDispatcher$1.current = HooksDispatcherOnMountInDEV;
46000    }
46001  }
46002
46003  var children = Component(props, secondArg); // Check if there was a render phase update
46004
46005  if (didScheduleRenderPhaseUpdateDuringThisPass) {
46006    // Keep rendering in a loop for as long as render phase updates continue to
46007    // be scheduled. Use a counter to prevent infinite loops.
46008    var numberOfReRenders = 0;
46009
46010    do {
46011      didScheduleRenderPhaseUpdateDuringThisPass = false;
46012
46013      if (!(numberOfReRenders < RE_RENDER_LIMIT)) {
46014        {
46015          throw Error( "Too many re-renders. React limits the number of renders to prevent an infinite loop." );
46016        }
46017      }
46018
46019      numberOfReRenders += 1;
46020
46021      {
46022        // Even when hot reloading, allow dependencies to stabilize
46023        // after first render to prevent infinite render phase updates.
46024        ignorePreviousDependencies = false;
46025      } // Start over from the beginning of the list
46026
46027
46028      currentHook = null;
46029      workInProgressHook = null;
46030      workInProgress.updateQueue = null;
46031
46032      {
46033        // Also validate hook order for cascading updates.
46034        hookTypesUpdateIndexDev = -1;
46035      }
46036
46037      ReactCurrentDispatcher$1.current =  HooksDispatcherOnRerenderInDEV ;
46038      children = Component(props, secondArg);
46039    } while (didScheduleRenderPhaseUpdateDuringThisPass);
46040  } // We can assume the previous dispatcher is always this one, since we set it
46041  // at the beginning of the render phase and there's no re-entrancy.
46042
46043
46044  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
46045
46046  {
46047    workInProgress._debugHookTypes = hookTypesDev;
46048  } // This check uses currentHook so that it works the same in DEV and prod bundles.
46049  // hookTypesDev could catch more cases (e.g. context) but only in DEV bundles.
46050
46051
46052  var didRenderTooFewHooks = currentHook !== null && currentHook.next !== null;
46053  renderLanes = NoLanes;
46054  currentlyRenderingFiber$1 = null;
46055  currentHook = null;
46056  workInProgressHook = null;
46057
46058  {
46059    currentHookNameInDev = null;
46060    hookTypesDev = null;
46061    hookTypesUpdateIndexDev = -1;
46062  }
46063
46064  didScheduleRenderPhaseUpdate = false;
46065
46066  if (!!didRenderTooFewHooks) {
46067    {
46068      throw Error( "Rendered fewer hooks than expected. This may be caused by an accidental early return statement." );
46069    }
46070  }
46071
46072  return children;
46073}
46074function bailoutHooks(current, workInProgress, lanes) {
46075  workInProgress.updateQueue = current.updateQueue;
46076  workInProgress.flags &= ~(Passive | Update);
46077  current.lanes = removeLanes(current.lanes, lanes);
46078}
46079function resetHooksAfterThrow() {
46080  // We can assume the previous dispatcher is always this one, since we set it
46081  // at the beginning of the render phase and there's no re-entrancy.
46082  ReactCurrentDispatcher$1.current = ContextOnlyDispatcher;
46083
46084  if (didScheduleRenderPhaseUpdate) {
46085    // There were render phase updates. These are only valid for this render
46086    // phase, which we are now aborting. Remove the updates from the queues so
46087    // they do not persist to the next render. Do not remove updates from hooks
46088    // that weren't processed.
46089    //
46090    // Only reset the updates from the queue if it has a clone. If it does
46091    // not have a clone, that means it wasn't processed, and the updates were
46092    // scheduled before we entered the render phase.
46093    var hook = currentlyRenderingFiber$1.memoizedState;
46094
46095    while (hook !== null) {
46096      var queue = hook.queue;
46097
46098      if (queue !== null) {
46099        queue.pending = null;
46100      }
46101
46102      hook = hook.next;
46103    }
46104
46105    didScheduleRenderPhaseUpdate = false;
46106  }
46107
46108  renderLanes = NoLanes;
46109  currentlyRenderingFiber$1 = null;
46110  currentHook = null;
46111  workInProgressHook = null;
46112
46113  {
46114    hookTypesDev = null;
46115    hookTypesUpdateIndexDev = -1;
46116    currentHookNameInDev = null;
46117    isUpdatingOpaqueValueInRenderPhase = false;
46118  }
46119
46120  didScheduleRenderPhaseUpdateDuringThisPass = false;
46121}
46122
46123function mountWorkInProgressHook() {
46124  var hook = {
46125    memoizedState: null,
46126    baseState: null,
46127    baseQueue: null,
46128    queue: null,
46129    next: null
46130  };
46131
46132  if (workInProgressHook === null) {
46133    // This is the first hook in the list
46134    currentlyRenderingFiber$1.memoizedState = workInProgressHook = hook;
46135  } else {
46136    // Append to the end of the list
46137    workInProgressHook = workInProgressHook.next = hook;
46138  }
46139
46140  return workInProgressHook;
46141}
46142
46143function updateWorkInProgressHook() {
46144  // This function is used both for updates and for re-renders triggered by a
46145  // render phase update. It assumes there is either a current hook we can
46146  // clone, or a work-in-progress hook from a previous render pass that we can
46147  // use as a base. When we reach the end of the base list, we must switch to
46148  // the dispatcher used for mounts.
46149  var nextCurrentHook;
46150
46151  if (currentHook === null) {
46152    var current = currentlyRenderingFiber$1.alternate;
46153
46154    if (current !== null) {
46155      nextCurrentHook = current.memoizedState;
46156    } else {
46157      nextCurrentHook = null;
46158    }
46159  } else {
46160    nextCurrentHook = currentHook.next;
46161  }
46162
46163  var nextWorkInProgressHook;
46164
46165  if (workInProgressHook === null) {
46166    nextWorkInProgressHook = currentlyRenderingFiber$1.memoizedState;
46167  } else {
46168    nextWorkInProgressHook = workInProgressHook.next;
46169  }
46170
46171  if (nextWorkInProgressHook !== null) {
46172    // There's already a work-in-progress. Reuse it.
46173    workInProgressHook = nextWorkInProgressHook;
46174    nextWorkInProgressHook = workInProgressHook.next;
46175    currentHook = nextCurrentHook;
46176  } else {
46177    // Clone from the current hook.
46178    if (!(nextCurrentHook !== null)) {
46179      {
46180        throw Error( "Rendered more hooks than during the previous render." );
46181      }
46182    }
46183
46184    currentHook = nextCurrentHook;
46185    var newHook = {
46186      memoizedState: currentHook.memoizedState,
46187      baseState: currentHook.baseState,
46188      baseQueue: currentHook.baseQueue,
46189      queue: currentHook.queue,
46190      next: null
46191    };
46192
46193    if (workInProgressHook === null) {
46194      // This is the first hook in the list.
46195      currentlyRenderingFiber$1.memoizedState = workInProgressHook = newHook;
46196    } else {
46197      // Append to the end of the list.
46198      workInProgressHook = workInProgressHook.next = newHook;
46199    }
46200  }
46201
46202  return workInProgressHook;
46203}
46204
46205function createFunctionComponentUpdateQueue() {
46206  return {
46207    lastEffect: null
46208  };
46209}
46210
46211function basicStateReducer(state, action) {
46212  // $FlowFixMe: Flow doesn't like mixed types
46213  return typeof action === 'function' ? action(state) : action;
46214}
46215
46216function mountReducer(reducer, initialArg, init) {
46217  var hook = mountWorkInProgressHook();
46218  var initialState;
46219
46220  if (init !== undefined) {
46221    initialState = init(initialArg);
46222  } else {
46223    initialState = initialArg;
46224  }
46225
46226  hook.memoizedState = hook.baseState = initialState;
46227  var queue = hook.queue = {
46228    pending: null,
46229    dispatch: null,
46230    lastRenderedReducer: reducer,
46231    lastRenderedState: initialState
46232  };
46233  var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);
46234  return [hook.memoizedState, dispatch];
46235}
46236
46237function updateReducer(reducer, initialArg, init) {
46238  var hook = updateWorkInProgressHook();
46239  var queue = hook.queue;
46240
46241  if (!(queue !== null)) {
46242    {
46243      throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." );
46244    }
46245  }
46246
46247  queue.lastRenderedReducer = reducer;
46248  var current = currentHook; // The last rebase update that is NOT part of the base state.
46249
46250  var baseQueue = current.baseQueue; // The last pending update that hasn't been processed yet.
46251
46252  var pendingQueue = queue.pending;
46253
46254  if (pendingQueue !== null) {
46255    // We have new updates that haven't been processed yet.
46256    // We'll add them to the base queue.
46257    if (baseQueue !== null) {
46258      // Merge the pending queue and the base queue.
46259      var baseFirst = baseQueue.next;
46260      var pendingFirst = pendingQueue.next;
46261      baseQueue.next = pendingFirst;
46262      pendingQueue.next = baseFirst;
46263    }
46264
46265    {
46266      if (current.baseQueue !== baseQueue) {
46267        // Internal invariant that should never happen, but feasibly could in
46268        // the future if we implement resuming, or some form of that.
46269        error('Internal error: Expected work-in-progress queue to be a clone. ' + 'This is a bug in React.');
46270      }
46271    }
46272
46273    current.baseQueue = baseQueue = pendingQueue;
46274    queue.pending = null;
46275  }
46276
46277  if (baseQueue !== null) {
46278    // We have a queue to process.
46279    var first = baseQueue.next;
46280    var newState = current.baseState;
46281    var newBaseState = null;
46282    var newBaseQueueFirst = null;
46283    var newBaseQueueLast = null;
46284    var update = first;
46285
46286    do {
46287      var updateLane = update.lane;
46288
46289      if (!isSubsetOfLanes(renderLanes, updateLane)) {
46290        // Priority is insufficient. Skip this update. If this is the first
46291        // skipped update, the previous update/state is the new base
46292        // update/state.
46293        var clone = {
46294          lane: updateLane,
46295          action: update.action,
46296          eagerReducer: update.eagerReducer,
46297          eagerState: update.eagerState,
46298          next: null
46299        };
46300
46301        if (newBaseQueueLast === null) {
46302          newBaseQueueFirst = newBaseQueueLast = clone;
46303          newBaseState = newState;
46304        } else {
46305          newBaseQueueLast = newBaseQueueLast.next = clone;
46306        } // Update the remaining priority in the queue.
46307        // TODO: Don't need to accumulate this. Instead, we can remove
46308        // renderLanes from the original lanes.
46309
46310
46311        currentlyRenderingFiber$1.lanes = mergeLanes(currentlyRenderingFiber$1.lanes, updateLane);
46312        markSkippedUpdateLanes(updateLane);
46313      } else {
46314        // This update does have sufficient priority.
46315        if (newBaseQueueLast !== null) {
46316          var _clone = {
46317            // This update is going to be committed so we never want uncommit
46318            // it. Using NoLane works because 0 is a subset of all bitmasks, so
46319            // this will never be skipped by the check above.
46320            lane: NoLane,
46321            action: update.action,
46322            eagerReducer: update.eagerReducer,
46323            eagerState: update.eagerState,
46324            next: null
46325          };
46326          newBaseQueueLast = newBaseQueueLast.next = _clone;
46327        } // Process this update.
46328
46329
46330        if (update.eagerReducer === reducer) {
46331          // If this update was processed eagerly, and its reducer matches the
46332          // current reducer, we can use the eagerly computed state.
46333          newState = update.eagerState;
46334        } else {
46335          var action = update.action;
46336          newState = reducer(newState, action);
46337        }
46338      }
46339
46340      update = update.next;
46341    } while (update !== null && update !== first);
46342
46343    if (newBaseQueueLast === null) {
46344      newBaseState = newState;
46345    } else {
46346      newBaseQueueLast.next = newBaseQueueFirst;
46347    } // Mark that the fiber performed work, but only if the new state is
46348    // different from the current state.
46349
46350
46351    if (!objectIs(newState, hook.memoizedState)) {
46352      markWorkInProgressReceivedUpdate();
46353    }
46354
46355    hook.memoizedState = newState;
46356    hook.baseState = newBaseState;
46357    hook.baseQueue = newBaseQueueLast;
46358    queue.lastRenderedState = newState;
46359  }
46360
46361  var dispatch = queue.dispatch;
46362  return [hook.memoizedState, dispatch];
46363}
46364
46365function rerenderReducer(reducer, initialArg, init) {
46366  var hook = updateWorkInProgressHook();
46367  var queue = hook.queue;
46368
46369  if (!(queue !== null)) {
46370    {
46371      throw Error( "Should have a queue. This is likely a bug in React. Please file an issue." );
46372    }
46373  }
46374
46375  queue.lastRenderedReducer = reducer; // This is a re-render. Apply the new render phase updates to the previous
46376  // work-in-progress hook.
46377
46378  var dispatch = queue.dispatch;
46379  var lastRenderPhaseUpdate = queue.pending;
46380  var newState = hook.memoizedState;
46381
46382  if (lastRenderPhaseUpdate !== null) {
46383    // The queue doesn't persist past this render pass.
46384    queue.pending = null;
46385    var firstRenderPhaseUpdate = lastRenderPhaseUpdate.next;
46386    var update = firstRenderPhaseUpdate;
46387
46388    do {
46389      // Process this render phase update. We don't have to check the
46390      // priority because it will always be the same as the current
46391      // render's.
46392      var action = update.action;
46393      newState = reducer(newState, action);
46394      update = update.next;
46395    } while (update !== firstRenderPhaseUpdate); // Mark that the fiber performed work, but only if the new state is
46396    // different from the current state.
46397
46398
46399    if (!objectIs(newState, hook.memoizedState)) {
46400      markWorkInProgressReceivedUpdate();
46401    }
46402
46403    hook.memoizedState = newState; // Don't persist the state accumulated from the render phase updates to
46404    // the base state unless the queue is empty.
46405    // TODO: Not sure if this is the desired semantics, but it's what we
46406    // do for gDSFP. I can't remember why.
46407
46408    if (hook.baseQueue === null) {
46409      hook.baseState = newState;
46410    }
46411
46412    queue.lastRenderedState = newState;
46413  }
46414
46415  return [newState, dispatch];
46416}
46417
46418function readFromUnsubcribedMutableSource(root, source, getSnapshot) {
46419  {
46420    warnAboutMultipleRenderersDEV(source);
46421  }
46422
46423  var getVersion = source._getVersion;
46424  var version = getVersion(source._source); // Is it safe for this component to read from this source during the current render?
46425
46426  var isSafeToReadFromSource = false; // Check the version first.
46427  // If this render has already been started with a specific version,
46428  // we can use it alone to determine if we can safely read from the source.
46429
46430  var currentRenderVersion = getWorkInProgressVersion(source);
46431
46432  if (currentRenderVersion !== null) {
46433    // It's safe to read if the store hasn't been mutated since the last time
46434    // we read something.
46435    isSafeToReadFromSource = currentRenderVersion === version;
46436  } else {
46437    // If there's no version, then this is the first time we've read from the
46438    // source during the current render pass, so we need to do a bit more work.
46439    // What we need to determine is if there are any hooks that already
46440    // subscribed to the source, and if so, whether there are any pending
46441    // mutations that haven't been synchronized yet.
46442    //
46443    // If there are no pending mutations, then `root.mutableReadLanes` will be
46444    // empty, and we know we can safely read.
46445    //
46446    // If there *are* pending mutations, we may still be able to safely read
46447    // if the currently rendering lanes are inclusive of the pending mutation
46448    // lanes, since that guarantees that the value we're about to read from
46449    // the source is consistent with the values that we read during the most
46450    // recent mutation.
46451    isSafeToReadFromSource = isSubsetOfLanes(renderLanes, root.mutableReadLanes);
46452
46453    if (isSafeToReadFromSource) {
46454      // If it's safe to read from this source during the current render,
46455      // store the version in case other components read from it.
46456      // A changed version number will let those components know to throw and restart the render.
46457      setWorkInProgressVersion(source, version);
46458    }
46459  }
46460
46461  if (isSafeToReadFromSource) {
46462    var snapshot = getSnapshot(source._source);
46463
46464    {
46465      if (typeof snapshot === 'function') {
46466        error('Mutable source should not return a function as the snapshot value. ' + 'Functions may close over mutable values and cause tearing.');
46467      }
46468    }
46469
46470    return snapshot;
46471  } else {
46472    // This handles the special case of a mutable source being shared between renderers.
46473    // In that case, if the source is mutated between the first and second renderer,
46474    // The second renderer don't know that it needs to reset the WIP version during unwind,
46475    // (because the hook only marks sources as dirty if it's written to their WIP version).
46476    // That would cause this tear check to throw again and eventually be visible to the user.
46477    // We can avoid this infinite loop by explicitly marking the source as dirty.
46478    //
46479    // This can lead to tearing in the first renderer when it resumes,
46480    // but there's nothing we can do about that (short of throwing here and refusing to continue the render).
46481    markSourceAsDirty(source);
46482
46483    {
46484      {
46485        throw Error( "Cannot read from mutable source during the current render without tearing. This is a bug in React. Please file an issue." );
46486      }
46487    }
46488  }
46489}
46490
46491function useMutableSource(hook, source, getSnapshot, subscribe) {
46492  var root = getWorkInProgressRoot();
46493
46494  if (!(root !== null)) {
46495    {
46496      throw Error( "Expected a work-in-progress root. This is a bug in React. Please file an issue." );
46497    }
46498  }
46499
46500  var getVersion = source._getVersion;
46501  var version = getVersion(source._source);
46502  var dispatcher = ReactCurrentDispatcher$1.current; // eslint-disable-next-line prefer-const
46503
46504  var _dispatcher$useState = dispatcher.useState(function () {
46505    return readFromUnsubcribedMutableSource(root, source, getSnapshot);
46506  }),
46507      currentSnapshot = _dispatcher$useState[0],
46508      setSnapshot = _dispatcher$useState[1];
46509
46510  var snapshot = currentSnapshot; // Grab a handle to the state hook as well.
46511  // We use it to clear the pending update queue if we have a new source.
46512
46513  var stateHook = workInProgressHook;
46514  var memoizedState = hook.memoizedState;
46515  var refs = memoizedState.refs;
46516  var prevGetSnapshot = refs.getSnapshot;
46517  var prevSource = memoizedState.source;
46518  var prevSubscribe = memoizedState.subscribe;
46519  var fiber = currentlyRenderingFiber$1;
46520  hook.memoizedState = {
46521    refs: refs,
46522    source: source,
46523    subscribe: subscribe
46524  }; // Sync the values needed by our subscription handler after each commit.
46525
46526  dispatcher.useEffect(function () {
46527    refs.getSnapshot = getSnapshot; // Normally the dispatch function for a state hook never changes,
46528    // but this hook recreates the queue in certain cases  to avoid updates from stale sources.
46529    // handleChange() below needs to reference the dispatch function without re-subscribing,
46530    // so we use a ref to ensure that it always has the latest version.
46531
46532    refs.setSnapshot = setSnapshot; // Check for a possible change between when we last rendered now.
46533
46534    var maybeNewVersion = getVersion(source._source);
46535
46536    if (!objectIs(version, maybeNewVersion)) {
46537      var maybeNewSnapshot = getSnapshot(source._source);
46538
46539      {
46540        if (typeof maybeNewSnapshot === 'function') {
46541          error('Mutable source should not return a function as the snapshot value. ' + 'Functions may close over mutable values and cause tearing.');
46542        }
46543      }
46544
46545      if (!objectIs(snapshot, maybeNewSnapshot)) {
46546        setSnapshot(maybeNewSnapshot);
46547        var lane = requestUpdateLane(fiber);
46548        markRootMutableRead(root, lane);
46549      } // If the source mutated between render and now,
46550      // there may be state updates already scheduled from the old source.
46551      // Entangle the updates so that they render in the same batch.
46552
46553
46554      markRootEntangled(root, root.mutableReadLanes);
46555    }
46556  }, [getSnapshot, source, subscribe]); // If we got a new source or subscribe function, re-subscribe in a passive effect.
46557
46558  dispatcher.useEffect(function () {
46559    var handleChange = function () {
46560      var latestGetSnapshot = refs.getSnapshot;
46561      var latestSetSnapshot = refs.setSnapshot;
46562
46563      try {
46564        latestSetSnapshot(latestGetSnapshot(source._source)); // Record a pending mutable source update with the same expiration time.
46565
46566        var lane = requestUpdateLane(fiber);
46567        markRootMutableRead(root, lane);
46568      } catch (error) {
46569        // A selector might throw after a source mutation.
46570        // e.g. it might try to read from a part of the store that no longer exists.
46571        // In this case we should still schedule an update with React.
46572        // Worst case the selector will throw again and then an error boundary will handle it.
46573        latestSetSnapshot(function () {
46574          throw error;
46575        });
46576      }
46577    };
46578
46579    var unsubscribe = subscribe(source._source, handleChange);
46580
46581    {
46582      if (typeof unsubscribe !== 'function') {
46583        error('Mutable source subscribe function must return an unsubscribe function.');
46584      }
46585    }
46586
46587    return unsubscribe;
46588  }, [source, subscribe]); // If any of the inputs to useMutableSource change, reading is potentially unsafe.
46589  //
46590  // If either the source or the subscription have changed we can't can't trust the update queue.
46591  // Maybe the source changed in a way that the old subscription ignored but the new one depends on.
46592  //
46593  // If the getSnapshot function changed, we also shouldn't rely on the update queue.
46594  // It's possible that the underlying source was mutated between the when the last "change" event fired,
46595  // and when the current render (with the new getSnapshot function) is processed.
46596  //
46597  // In both cases, we need to throw away pending updates (since they are no longer relevant)
46598  // and treat reading from the source as we do in the mount case.
46599
46600  if (!objectIs(prevGetSnapshot, getSnapshot) || !objectIs(prevSource, source) || !objectIs(prevSubscribe, subscribe)) {
46601    // Create a new queue and setState method,
46602    // So if there are interleaved updates, they get pushed to the older queue.
46603    // When this becomes current, the previous queue and dispatch method will be discarded,
46604    // including any interleaving updates that occur.
46605    var newQueue = {
46606      pending: null,
46607      dispatch: null,
46608      lastRenderedReducer: basicStateReducer,
46609      lastRenderedState: snapshot
46610    };
46611    newQueue.dispatch = setSnapshot = dispatchAction.bind(null, currentlyRenderingFiber$1, newQueue);
46612    stateHook.queue = newQueue;
46613    stateHook.baseQueue = null;
46614    snapshot = readFromUnsubcribedMutableSource(root, source, getSnapshot);
46615    stateHook.memoizedState = stateHook.baseState = snapshot;
46616  }
46617
46618  return snapshot;
46619}
46620
46621function mountMutableSource(source, getSnapshot, subscribe) {
46622  var hook = mountWorkInProgressHook();
46623  hook.memoizedState = {
46624    refs: {
46625      getSnapshot: getSnapshot,
46626      setSnapshot: null
46627    },
46628    source: source,
46629    subscribe: subscribe
46630  };
46631  return useMutableSource(hook, source, getSnapshot, subscribe);
46632}
46633
46634function updateMutableSource(source, getSnapshot, subscribe) {
46635  var hook = updateWorkInProgressHook();
46636  return useMutableSource(hook, source, getSnapshot, subscribe);
46637}
46638
46639function mountState(initialState) {
46640  var hook = mountWorkInProgressHook();
46641
46642  if (typeof initialState === 'function') {
46643    // $FlowFixMe: Flow doesn't like mixed types
46644    initialState = initialState();
46645  }
46646
46647  hook.memoizedState = hook.baseState = initialState;
46648  var queue = hook.queue = {
46649    pending: null,
46650    dispatch: null,
46651    lastRenderedReducer: basicStateReducer,
46652    lastRenderedState: initialState
46653  };
46654  var dispatch = queue.dispatch = dispatchAction.bind(null, currentlyRenderingFiber$1, queue);
46655  return [hook.memoizedState, dispatch];
46656}
46657
46658function updateState(initialState) {
46659  return updateReducer(basicStateReducer);
46660}
46661
46662function rerenderState(initialState) {
46663  return rerenderReducer(basicStateReducer);
46664}
46665
46666function pushEffect(tag, create, destroy, deps) {
46667  var effect = {
46668    tag: tag,
46669    create: create,
46670    destroy: destroy,
46671    deps: deps,
46672    // Circular
46673    next: null
46674  };
46675  var componentUpdateQueue = currentlyRenderingFiber$1.updateQueue;
46676
46677  if (componentUpdateQueue === null) {
46678    componentUpdateQueue = createFunctionComponentUpdateQueue();
46679    currentlyRenderingFiber$1.updateQueue = componentUpdateQueue;
46680    componentUpdateQueue.lastEffect = effect.next = effect;
46681  } else {
46682    var lastEffect = componentUpdateQueue.lastEffect;
46683
46684    if (lastEffect === null) {
46685      componentUpdateQueue.lastEffect = effect.next = effect;
46686    } else {
46687      var firstEffect = lastEffect.next;
46688      lastEffect.next = effect;
46689      effect.next = firstEffect;
46690      componentUpdateQueue.lastEffect = effect;
46691    }
46692  }
46693
46694  return effect;
46695}
46696
46697function mountRef(initialValue) {
46698  var hook = mountWorkInProgressHook();
46699  var ref = {
46700    current: initialValue
46701  };
46702
46703  {
46704    Object.seal(ref);
46705  }
46706
46707  hook.memoizedState = ref;
46708  return ref;
46709}
46710
46711function updateRef(initialValue) {
46712  var hook = updateWorkInProgressHook();
46713  return hook.memoizedState;
46714}
46715
46716function mountEffectImpl(fiberFlags, hookFlags, create, deps) {
46717  var hook = mountWorkInProgressHook();
46718  var nextDeps = deps === undefined ? null : deps;
46719  currentlyRenderingFiber$1.flags |= fiberFlags;
46720  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, undefined, nextDeps);
46721}
46722
46723function updateEffectImpl(fiberFlags, hookFlags, create, deps) {
46724  var hook = updateWorkInProgressHook();
46725  var nextDeps = deps === undefined ? null : deps;
46726  var destroy = undefined;
46727
46728  if (currentHook !== null) {
46729    var prevEffect = currentHook.memoizedState;
46730    destroy = prevEffect.destroy;
46731
46732    if (nextDeps !== null) {
46733      var prevDeps = prevEffect.deps;
46734
46735      if (areHookInputsEqual(nextDeps, prevDeps)) {
46736        pushEffect(hookFlags, create, destroy, nextDeps);
46737        return;
46738      }
46739    }
46740  }
46741
46742  currentlyRenderingFiber$1.flags |= fiberFlags;
46743  hook.memoizedState = pushEffect(HasEffect | hookFlags, create, destroy, nextDeps);
46744}
46745
46746function mountEffect(create, deps) {
46747  {
46748    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
46749    if ('undefined' !== typeof jest) {
46750      warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);
46751    }
46752  }
46753
46754  return mountEffectImpl(Update | Passive, Passive$1, create, deps);
46755}
46756
46757function updateEffect(create, deps) {
46758  {
46759    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
46760    if ('undefined' !== typeof jest) {
46761      warnIfNotCurrentlyActingEffectsInDEV(currentlyRenderingFiber$1);
46762    }
46763  }
46764
46765  return updateEffectImpl(Update | Passive, Passive$1, create, deps);
46766}
46767
46768function mountLayoutEffect(create, deps) {
46769  return mountEffectImpl(Update, Layout, create, deps);
46770}
46771
46772function updateLayoutEffect(create, deps) {
46773  return updateEffectImpl(Update, Layout, create, deps);
46774}
46775
46776function imperativeHandleEffect(create, ref) {
46777  if (typeof ref === 'function') {
46778    var refCallback = ref;
46779
46780    var _inst = create();
46781
46782    refCallback(_inst);
46783    return function () {
46784      refCallback(null);
46785    };
46786  } else if (ref !== null && ref !== undefined) {
46787    var refObject = ref;
46788
46789    {
46790      if (!refObject.hasOwnProperty('current')) {
46791        error('Expected useImperativeHandle() first argument to either be a ' + 'ref callback or React.createRef() object. Instead received: %s.', 'an object with keys {' + Object.keys(refObject).join(', ') + '}');
46792      }
46793    }
46794
46795    var _inst2 = create();
46796
46797    refObject.current = _inst2;
46798    return function () {
46799      refObject.current = null;
46800    };
46801  }
46802}
46803
46804function mountImperativeHandle(ref, create, deps) {
46805  {
46806    if (typeof create !== 'function') {
46807      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');
46808    }
46809  } // TODO: If deps are provided, should we skip comparing the ref itself?
46810
46811
46812  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;
46813  return mountEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
46814}
46815
46816function updateImperativeHandle(ref, create, deps) {
46817  {
46818    if (typeof create !== 'function') {
46819      error('Expected useImperativeHandle() second argument to be a function ' + 'that creates a handle. Instead received: %s.', create !== null ? typeof create : 'null');
46820    }
46821  } // TODO: If deps are provided, should we skip comparing the ref itself?
46822
46823
46824  var effectDeps = deps !== null && deps !== undefined ? deps.concat([ref]) : null;
46825  return updateEffectImpl(Update, Layout, imperativeHandleEffect.bind(null, create, ref), effectDeps);
46826}
46827
46828function mountDebugValue(value, formatterFn) {// This hook is normally a no-op.
46829  // The react-debug-hooks package injects its own implementation
46830  // so that e.g. DevTools can display custom hook values.
46831}
46832
46833var updateDebugValue = mountDebugValue;
46834
46835function mountCallback(callback, deps) {
46836  var hook = mountWorkInProgressHook();
46837  var nextDeps = deps === undefined ? null : deps;
46838  hook.memoizedState = [callback, nextDeps];
46839  return callback;
46840}
46841
46842function updateCallback(callback, deps) {
46843  var hook = updateWorkInProgressHook();
46844  var nextDeps = deps === undefined ? null : deps;
46845  var prevState = hook.memoizedState;
46846
46847  if (prevState !== null) {
46848    if (nextDeps !== null) {
46849      var prevDeps = prevState[1];
46850
46851      if (areHookInputsEqual(nextDeps, prevDeps)) {
46852        return prevState[0];
46853      }
46854    }
46855  }
46856
46857  hook.memoizedState = [callback, nextDeps];
46858  return callback;
46859}
46860
46861function mountMemo(nextCreate, deps) {
46862  var hook = mountWorkInProgressHook();
46863  var nextDeps = deps === undefined ? null : deps;
46864  var nextValue = nextCreate();
46865  hook.memoizedState = [nextValue, nextDeps];
46866  return nextValue;
46867}
46868
46869function updateMemo(nextCreate, deps) {
46870  var hook = updateWorkInProgressHook();
46871  var nextDeps = deps === undefined ? null : deps;
46872  var prevState = hook.memoizedState;
46873
46874  if (prevState !== null) {
46875    // Assume these are defined. If they're not, areHookInputsEqual will warn.
46876    if (nextDeps !== null) {
46877      var prevDeps = prevState[1];
46878
46879      if (areHookInputsEqual(nextDeps, prevDeps)) {
46880        return prevState[0];
46881      }
46882    }
46883  }
46884
46885  var nextValue = nextCreate();
46886  hook.memoizedState = [nextValue, nextDeps];
46887  return nextValue;
46888}
46889
46890function mountDeferredValue(value) {
46891  var _mountState = mountState(value),
46892      prevValue = _mountState[0],
46893      setValue = _mountState[1];
46894
46895  mountEffect(function () {
46896    var prevTransition = ReactCurrentBatchConfig$1.transition;
46897    ReactCurrentBatchConfig$1.transition = 1;
46898
46899    try {
46900      setValue(value);
46901    } finally {
46902      ReactCurrentBatchConfig$1.transition = prevTransition;
46903    }
46904  }, [value]);
46905  return prevValue;
46906}
46907
46908function updateDeferredValue(value) {
46909  var _updateState = updateState(),
46910      prevValue = _updateState[0],
46911      setValue = _updateState[1];
46912
46913  updateEffect(function () {
46914    var prevTransition = ReactCurrentBatchConfig$1.transition;
46915    ReactCurrentBatchConfig$1.transition = 1;
46916
46917    try {
46918      setValue(value);
46919    } finally {
46920      ReactCurrentBatchConfig$1.transition = prevTransition;
46921    }
46922  }, [value]);
46923  return prevValue;
46924}
46925
46926function rerenderDeferredValue(value) {
46927  var _rerenderState = rerenderState(),
46928      prevValue = _rerenderState[0],
46929      setValue = _rerenderState[1];
46930
46931  updateEffect(function () {
46932    var prevTransition = ReactCurrentBatchConfig$1.transition;
46933    ReactCurrentBatchConfig$1.transition = 1;
46934
46935    try {
46936      setValue(value);
46937    } finally {
46938      ReactCurrentBatchConfig$1.transition = prevTransition;
46939    }
46940  }, [value]);
46941  return prevValue;
46942}
46943
46944function startTransition(setPending, callback) {
46945  var priorityLevel = getCurrentPriorityLevel();
46946
46947  {
46948    runWithPriority$1(priorityLevel < UserBlockingPriority$2 ? UserBlockingPriority$2 : priorityLevel, function () {
46949      setPending(true);
46950    });
46951    runWithPriority$1(priorityLevel > NormalPriority$1 ? NormalPriority$1 : priorityLevel, function () {
46952      var prevTransition = ReactCurrentBatchConfig$1.transition;
46953      ReactCurrentBatchConfig$1.transition = 1;
46954
46955      try {
46956        setPending(false);
46957        callback();
46958      } finally {
46959        ReactCurrentBatchConfig$1.transition = prevTransition;
46960      }
46961    });
46962  }
46963}
46964
46965function mountTransition() {
46966  var _mountState2 = mountState(false),
46967      isPending = _mountState2[0],
46968      setPending = _mountState2[1]; // The `start` method can be stored on a ref, since `setPending`
46969  // never changes.
46970
46971
46972  var start = startTransition.bind(null, setPending);
46973  mountRef(start);
46974  return [start, isPending];
46975}
46976
46977function updateTransition() {
46978  var _updateState2 = updateState(),
46979      isPending = _updateState2[0];
46980
46981  var startRef = updateRef();
46982  var start = startRef.current;
46983  return [start, isPending];
46984}
46985
46986function rerenderTransition() {
46987  var _rerenderState2 = rerenderState(),
46988      isPending = _rerenderState2[0];
46989
46990  var startRef = updateRef();
46991  var start = startRef.current;
46992  return [start, isPending];
46993}
46994
46995var isUpdatingOpaqueValueInRenderPhase = false;
46996function getIsUpdatingOpaqueValueInRenderPhaseInDEV() {
46997  {
46998    return isUpdatingOpaqueValueInRenderPhase;
46999  }
47000}
47001
47002function warnOnOpaqueIdentifierAccessInDEV(fiber) {
47003  {
47004    // TODO: Should warn in effects and callbacks, too
47005    var name = getComponentName(fiber.type) || 'Unknown';
47006
47007    if (getIsRendering() && !didWarnAboutUseOpaqueIdentifier[name]) {
47008      error('The object passed back from useOpaqueIdentifier is meant to be ' + 'passed through to attributes only. Do not read the ' + 'value directly.');
47009
47010      didWarnAboutUseOpaqueIdentifier[name] = true;
47011    }
47012  }
47013}
47014
47015function mountOpaqueIdentifier() {
47016  var makeId =  makeClientIdInDEV.bind(null, warnOnOpaqueIdentifierAccessInDEV.bind(null, currentlyRenderingFiber$1)) ;
47017
47018  if (getIsHydrating()) {
47019    var didUpgrade = false;
47020    var fiber = currentlyRenderingFiber$1;
47021
47022    var readValue = function () {
47023      if (!didUpgrade) {
47024        // Only upgrade once. This works even inside the render phase because
47025        // the update is added to a shared queue, which outlasts the
47026        // in-progress render.
47027        didUpgrade = true;
47028
47029        {
47030          isUpdatingOpaqueValueInRenderPhase = true;
47031          setId(makeId());
47032          isUpdatingOpaqueValueInRenderPhase = false;
47033          warnOnOpaqueIdentifierAccessInDEV(fiber);
47034        }
47035      }
47036
47037      {
47038        {
47039          throw Error( "The object passed back from useOpaqueIdentifier is meant to be passed through to attributes only. Do not read the value directly." );
47040        }
47041      }
47042    };
47043
47044    var id = makeOpaqueHydratingObject(readValue);
47045    var setId = mountState(id)[1];
47046
47047    if ((currentlyRenderingFiber$1.mode & BlockingMode) === NoMode) {
47048      currentlyRenderingFiber$1.flags |= Update | Passive;
47049      pushEffect(HasEffect | Passive$1, function () {
47050        setId(makeId());
47051      }, undefined, null);
47052    }
47053
47054    return id;
47055  } else {
47056    var _id = makeId();
47057
47058    mountState(_id);
47059    return _id;
47060  }
47061}
47062
47063function updateOpaqueIdentifier() {
47064  var id = updateState()[0];
47065  return id;
47066}
47067
47068function rerenderOpaqueIdentifier() {
47069  var id = rerenderState()[0];
47070  return id;
47071}
47072
47073function dispatchAction(fiber, queue, action) {
47074  {
47075    if (typeof arguments[3] === 'function') {
47076      error("State updates from the useState() and useReducer() Hooks don't support the " + 'second callback argument. To execute a side effect after ' + 'rendering, declare it in the component body with useEffect().');
47077    }
47078  }
47079
47080  var eventTime = requestEventTime();
47081  var lane = requestUpdateLane(fiber);
47082  var update = {
47083    lane: lane,
47084    action: action,
47085    eagerReducer: null,
47086    eagerState: null,
47087    next: null
47088  }; // Append the update to the end of the list.
47089
47090  var pending = queue.pending;
47091
47092  if (pending === null) {
47093    // This is the first update. Create a circular list.
47094    update.next = update;
47095  } else {
47096    update.next = pending.next;
47097    pending.next = update;
47098  }
47099
47100  queue.pending = update;
47101  var alternate = fiber.alternate;
47102
47103  if (fiber === currentlyRenderingFiber$1 || alternate !== null && alternate === currentlyRenderingFiber$1) {
47104    // This is a render phase update. Stash it in a lazily-created map of
47105    // queue -> linked list of updates. After this render pass, we'll restart
47106    // and apply the stashed updates on top of the work-in-progress hook.
47107    didScheduleRenderPhaseUpdateDuringThisPass = didScheduleRenderPhaseUpdate = true;
47108  } else {
47109    if (fiber.lanes === NoLanes && (alternate === null || alternate.lanes === NoLanes)) {
47110      // The queue is currently empty, which means we can eagerly compute the
47111      // next state before entering the render phase. If the new state is the
47112      // same as the current state, we may be able to bail out entirely.
47113      var lastRenderedReducer = queue.lastRenderedReducer;
47114
47115      if (lastRenderedReducer !== null) {
47116        var prevDispatcher;
47117
47118        {
47119          prevDispatcher = ReactCurrentDispatcher$1.current;
47120          ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47121        }
47122
47123        try {
47124          var currentState = queue.lastRenderedState;
47125          var eagerState = lastRenderedReducer(currentState, action); // Stash the eagerly computed state, and the reducer used to compute
47126          // it, on the update object. If the reducer hasn't changed by the
47127          // time we enter the render phase, then the eager state can be used
47128          // without calling the reducer again.
47129
47130          update.eagerReducer = lastRenderedReducer;
47131          update.eagerState = eagerState;
47132
47133          if (objectIs(eagerState, currentState)) {
47134            // Fast path. We can bail out without scheduling React to re-render.
47135            // It's still possible that we'll need to rebase this update later,
47136            // if the component re-renders for a different reason and by that
47137            // time the reducer has changed.
47138            return;
47139          }
47140        } catch (error) {// Suppress the error. It will throw again in the render phase.
47141        } finally {
47142          {
47143            ReactCurrentDispatcher$1.current = prevDispatcher;
47144          }
47145        }
47146      }
47147    }
47148
47149    {
47150      // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
47151      if ('undefined' !== typeof jest) {
47152        warnIfNotScopedWithMatchingAct(fiber);
47153        warnIfNotCurrentlyActingUpdatesInDev(fiber);
47154      }
47155    }
47156
47157    scheduleUpdateOnFiber(fiber, lane, eventTime);
47158  }
47159}
47160
47161var ContextOnlyDispatcher = {
47162  readContext: readContext,
47163  useCallback: throwInvalidHookError,
47164  useContext: throwInvalidHookError,
47165  useEffect: throwInvalidHookError,
47166  useImperativeHandle: throwInvalidHookError,
47167  useLayoutEffect: throwInvalidHookError,
47168  useMemo: throwInvalidHookError,
47169  useReducer: throwInvalidHookError,
47170  useRef: throwInvalidHookError,
47171  useState: throwInvalidHookError,
47172  useDebugValue: throwInvalidHookError,
47173  useDeferredValue: throwInvalidHookError,
47174  useTransition: throwInvalidHookError,
47175  useMutableSource: throwInvalidHookError,
47176  useOpaqueIdentifier: throwInvalidHookError,
47177  unstable_isNewReconciler: enableNewReconciler
47178};
47179var HooksDispatcherOnMountInDEV = null;
47180var HooksDispatcherOnMountWithHookTypesInDEV = null;
47181var HooksDispatcherOnUpdateInDEV = null;
47182var HooksDispatcherOnRerenderInDEV = null;
47183var InvalidNestedHooksDispatcherOnMountInDEV = null;
47184var InvalidNestedHooksDispatcherOnUpdateInDEV = null;
47185var InvalidNestedHooksDispatcherOnRerenderInDEV = null;
47186
47187{
47188  var warnInvalidContextAccess = function () {
47189    error('Context can only be read while React is rendering. ' + 'In classes, you can read it in the render method or getDerivedStateFromProps. ' + 'In function components, you can read it directly in the function body, but not ' + 'inside Hooks like useReducer() or useMemo().');
47190  };
47191
47192  var warnInvalidHookAccess = function () {
47193    error('Do not call Hooks inside useEffect(...), useMemo(...), or other built-in Hooks. ' + 'You can only call Hooks at the top level of your React function. ' + 'For more information, see ' + 'https://reactjs.org/link/rules-of-hooks');
47194  };
47195
47196  HooksDispatcherOnMountInDEV = {
47197    readContext: function (context, observedBits) {
47198      return readContext(context, observedBits);
47199    },
47200    useCallback: function (callback, deps) {
47201      currentHookNameInDev = 'useCallback';
47202      mountHookTypesDev();
47203      checkDepsAreArrayDev(deps);
47204      return mountCallback(callback, deps);
47205    },
47206    useContext: function (context, observedBits) {
47207      currentHookNameInDev = 'useContext';
47208      mountHookTypesDev();
47209      return readContext(context, observedBits);
47210    },
47211    useEffect: function (create, deps) {
47212      currentHookNameInDev = 'useEffect';
47213      mountHookTypesDev();
47214      checkDepsAreArrayDev(deps);
47215      return mountEffect(create, deps);
47216    },
47217    useImperativeHandle: function (ref, create, deps) {
47218      currentHookNameInDev = 'useImperativeHandle';
47219      mountHookTypesDev();
47220      checkDepsAreArrayDev(deps);
47221      return mountImperativeHandle(ref, create, deps);
47222    },
47223    useLayoutEffect: function (create, deps) {
47224      currentHookNameInDev = 'useLayoutEffect';
47225      mountHookTypesDev();
47226      checkDepsAreArrayDev(deps);
47227      return mountLayoutEffect(create, deps);
47228    },
47229    useMemo: function (create, deps) {
47230      currentHookNameInDev = 'useMemo';
47231      mountHookTypesDev();
47232      checkDepsAreArrayDev(deps);
47233      var prevDispatcher = ReactCurrentDispatcher$1.current;
47234      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47235
47236      try {
47237        return mountMemo(create, deps);
47238      } finally {
47239        ReactCurrentDispatcher$1.current = prevDispatcher;
47240      }
47241    },
47242    useReducer: function (reducer, initialArg, init) {
47243      currentHookNameInDev = 'useReducer';
47244      mountHookTypesDev();
47245      var prevDispatcher = ReactCurrentDispatcher$1.current;
47246      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47247
47248      try {
47249        return mountReducer(reducer, initialArg, init);
47250      } finally {
47251        ReactCurrentDispatcher$1.current = prevDispatcher;
47252      }
47253    },
47254    useRef: function (initialValue) {
47255      currentHookNameInDev = 'useRef';
47256      mountHookTypesDev();
47257      return mountRef(initialValue);
47258    },
47259    useState: function (initialState) {
47260      currentHookNameInDev = 'useState';
47261      mountHookTypesDev();
47262      var prevDispatcher = ReactCurrentDispatcher$1.current;
47263      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47264
47265      try {
47266        return mountState(initialState);
47267      } finally {
47268        ReactCurrentDispatcher$1.current = prevDispatcher;
47269      }
47270    },
47271    useDebugValue: function (value, formatterFn) {
47272      currentHookNameInDev = 'useDebugValue';
47273      mountHookTypesDev();
47274      return mountDebugValue();
47275    },
47276    useDeferredValue: function (value) {
47277      currentHookNameInDev = 'useDeferredValue';
47278      mountHookTypesDev();
47279      return mountDeferredValue(value);
47280    },
47281    useTransition: function () {
47282      currentHookNameInDev = 'useTransition';
47283      mountHookTypesDev();
47284      return mountTransition();
47285    },
47286    useMutableSource: function (source, getSnapshot, subscribe) {
47287      currentHookNameInDev = 'useMutableSource';
47288      mountHookTypesDev();
47289      return mountMutableSource(source, getSnapshot, subscribe);
47290    },
47291    useOpaqueIdentifier: function () {
47292      currentHookNameInDev = 'useOpaqueIdentifier';
47293      mountHookTypesDev();
47294      return mountOpaqueIdentifier();
47295    },
47296    unstable_isNewReconciler: enableNewReconciler
47297  };
47298  HooksDispatcherOnMountWithHookTypesInDEV = {
47299    readContext: function (context, observedBits) {
47300      return readContext(context, observedBits);
47301    },
47302    useCallback: function (callback, deps) {
47303      currentHookNameInDev = 'useCallback';
47304      updateHookTypesDev();
47305      return mountCallback(callback, deps);
47306    },
47307    useContext: function (context, observedBits) {
47308      currentHookNameInDev = 'useContext';
47309      updateHookTypesDev();
47310      return readContext(context, observedBits);
47311    },
47312    useEffect: function (create, deps) {
47313      currentHookNameInDev = 'useEffect';
47314      updateHookTypesDev();
47315      return mountEffect(create, deps);
47316    },
47317    useImperativeHandle: function (ref, create, deps) {
47318      currentHookNameInDev = 'useImperativeHandle';
47319      updateHookTypesDev();
47320      return mountImperativeHandle(ref, create, deps);
47321    },
47322    useLayoutEffect: function (create, deps) {
47323      currentHookNameInDev = 'useLayoutEffect';
47324      updateHookTypesDev();
47325      return mountLayoutEffect(create, deps);
47326    },
47327    useMemo: function (create, deps) {
47328      currentHookNameInDev = 'useMemo';
47329      updateHookTypesDev();
47330      var prevDispatcher = ReactCurrentDispatcher$1.current;
47331      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47332
47333      try {
47334        return mountMemo(create, deps);
47335      } finally {
47336        ReactCurrentDispatcher$1.current = prevDispatcher;
47337      }
47338    },
47339    useReducer: function (reducer, initialArg, init) {
47340      currentHookNameInDev = 'useReducer';
47341      updateHookTypesDev();
47342      var prevDispatcher = ReactCurrentDispatcher$1.current;
47343      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47344
47345      try {
47346        return mountReducer(reducer, initialArg, init);
47347      } finally {
47348        ReactCurrentDispatcher$1.current = prevDispatcher;
47349      }
47350    },
47351    useRef: function (initialValue) {
47352      currentHookNameInDev = 'useRef';
47353      updateHookTypesDev();
47354      return mountRef(initialValue);
47355    },
47356    useState: function (initialState) {
47357      currentHookNameInDev = 'useState';
47358      updateHookTypesDev();
47359      var prevDispatcher = ReactCurrentDispatcher$1.current;
47360      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47361
47362      try {
47363        return mountState(initialState);
47364      } finally {
47365        ReactCurrentDispatcher$1.current = prevDispatcher;
47366      }
47367    },
47368    useDebugValue: function (value, formatterFn) {
47369      currentHookNameInDev = 'useDebugValue';
47370      updateHookTypesDev();
47371      return mountDebugValue();
47372    },
47373    useDeferredValue: function (value) {
47374      currentHookNameInDev = 'useDeferredValue';
47375      updateHookTypesDev();
47376      return mountDeferredValue(value);
47377    },
47378    useTransition: function () {
47379      currentHookNameInDev = 'useTransition';
47380      updateHookTypesDev();
47381      return mountTransition();
47382    },
47383    useMutableSource: function (source, getSnapshot, subscribe) {
47384      currentHookNameInDev = 'useMutableSource';
47385      updateHookTypesDev();
47386      return mountMutableSource(source, getSnapshot, subscribe);
47387    },
47388    useOpaqueIdentifier: function () {
47389      currentHookNameInDev = 'useOpaqueIdentifier';
47390      updateHookTypesDev();
47391      return mountOpaqueIdentifier();
47392    },
47393    unstable_isNewReconciler: enableNewReconciler
47394  };
47395  HooksDispatcherOnUpdateInDEV = {
47396    readContext: function (context, observedBits) {
47397      return readContext(context, observedBits);
47398    },
47399    useCallback: function (callback, deps) {
47400      currentHookNameInDev = 'useCallback';
47401      updateHookTypesDev();
47402      return updateCallback(callback, deps);
47403    },
47404    useContext: function (context, observedBits) {
47405      currentHookNameInDev = 'useContext';
47406      updateHookTypesDev();
47407      return readContext(context, observedBits);
47408    },
47409    useEffect: function (create, deps) {
47410      currentHookNameInDev = 'useEffect';
47411      updateHookTypesDev();
47412      return updateEffect(create, deps);
47413    },
47414    useImperativeHandle: function (ref, create, deps) {
47415      currentHookNameInDev = 'useImperativeHandle';
47416      updateHookTypesDev();
47417      return updateImperativeHandle(ref, create, deps);
47418    },
47419    useLayoutEffect: function (create, deps) {
47420      currentHookNameInDev = 'useLayoutEffect';
47421      updateHookTypesDev();
47422      return updateLayoutEffect(create, deps);
47423    },
47424    useMemo: function (create, deps) {
47425      currentHookNameInDev = 'useMemo';
47426      updateHookTypesDev();
47427      var prevDispatcher = ReactCurrentDispatcher$1.current;
47428      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47429
47430      try {
47431        return updateMemo(create, deps);
47432      } finally {
47433        ReactCurrentDispatcher$1.current = prevDispatcher;
47434      }
47435    },
47436    useReducer: function (reducer, initialArg, init) {
47437      currentHookNameInDev = 'useReducer';
47438      updateHookTypesDev();
47439      var prevDispatcher = ReactCurrentDispatcher$1.current;
47440      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47441
47442      try {
47443        return updateReducer(reducer, initialArg, init);
47444      } finally {
47445        ReactCurrentDispatcher$1.current = prevDispatcher;
47446      }
47447    },
47448    useRef: function (initialValue) {
47449      currentHookNameInDev = 'useRef';
47450      updateHookTypesDev();
47451      return updateRef();
47452    },
47453    useState: function (initialState) {
47454      currentHookNameInDev = 'useState';
47455      updateHookTypesDev();
47456      var prevDispatcher = ReactCurrentDispatcher$1.current;
47457      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47458
47459      try {
47460        return updateState(initialState);
47461      } finally {
47462        ReactCurrentDispatcher$1.current = prevDispatcher;
47463      }
47464    },
47465    useDebugValue: function (value, formatterFn) {
47466      currentHookNameInDev = 'useDebugValue';
47467      updateHookTypesDev();
47468      return updateDebugValue();
47469    },
47470    useDeferredValue: function (value) {
47471      currentHookNameInDev = 'useDeferredValue';
47472      updateHookTypesDev();
47473      return updateDeferredValue(value);
47474    },
47475    useTransition: function () {
47476      currentHookNameInDev = 'useTransition';
47477      updateHookTypesDev();
47478      return updateTransition();
47479    },
47480    useMutableSource: function (source, getSnapshot, subscribe) {
47481      currentHookNameInDev = 'useMutableSource';
47482      updateHookTypesDev();
47483      return updateMutableSource(source, getSnapshot, subscribe);
47484    },
47485    useOpaqueIdentifier: function () {
47486      currentHookNameInDev = 'useOpaqueIdentifier';
47487      updateHookTypesDev();
47488      return updateOpaqueIdentifier();
47489    },
47490    unstable_isNewReconciler: enableNewReconciler
47491  };
47492  HooksDispatcherOnRerenderInDEV = {
47493    readContext: function (context, observedBits) {
47494      return readContext(context, observedBits);
47495    },
47496    useCallback: function (callback, deps) {
47497      currentHookNameInDev = 'useCallback';
47498      updateHookTypesDev();
47499      return updateCallback(callback, deps);
47500    },
47501    useContext: function (context, observedBits) {
47502      currentHookNameInDev = 'useContext';
47503      updateHookTypesDev();
47504      return readContext(context, observedBits);
47505    },
47506    useEffect: function (create, deps) {
47507      currentHookNameInDev = 'useEffect';
47508      updateHookTypesDev();
47509      return updateEffect(create, deps);
47510    },
47511    useImperativeHandle: function (ref, create, deps) {
47512      currentHookNameInDev = 'useImperativeHandle';
47513      updateHookTypesDev();
47514      return updateImperativeHandle(ref, create, deps);
47515    },
47516    useLayoutEffect: function (create, deps) {
47517      currentHookNameInDev = 'useLayoutEffect';
47518      updateHookTypesDev();
47519      return updateLayoutEffect(create, deps);
47520    },
47521    useMemo: function (create, deps) {
47522      currentHookNameInDev = 'useMemo';
47523      updateHookTypesDev();
47524      var prevDispatcher = ReactCurrentDispatcher$1.current;
47525      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
47526
47527      try {
47528        return updateMemo(create, deps);
47529      } finally {
47530        ReactCurrentDispatcher$1.current = prevDispatcher;
47531      }
47532    },
47533    useReducer: function (reducer, initialArg, init) {
47534      currentHookNameInDev = 'useReducer';
47535      updateHookTypesDev();
47536      var prevDispatcher = ReactCurrentDispatcher$1.current;
47537      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
47538
47539      try {
47540        return rerenderReducer(reducer, initialArg, init);
47541      } finally {
47542        ReactCurrentDispatcher$1.current = prevDispatcher;
47543      }
47544    },
47545    useRef: function (initialValue) {
47546      currentHookNameInDev = 'useRef';
47547      updateHookTypesDev();
47548      return updateRef();
47549    },
47550    useState: function (initialState) {
47551      currentHookNameInDev = 'useState';
47552      updateHookTypesDev();
47553      var prevDispatcher = ReactCurrentDispatcher$1.current;
47554      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnRerenderInDEV;
47555
47556      try {
47557        return rerenderState(initialState);
47558      } finally {
47559        ReactCurrentDispatcher$1.current = prevDispatcher;
47560      }
47561    },
47562    useDebugValue: function (value, formatterFn) {
47563      currentHookNameInDev = 'useDebugValue';
47564      updateHookTypesDev();
47565      return updateDebugValue();
47566    },
47567    useDeferredValue: function (value) {
47568      currentHookNameInDev = 'useDeferredValue';
47569      updateHookTypesDev();
47570      return rerenderDeferredValue(value);
47571    },
47572    useTransition: function () {
47573      currentHookNameInDev = 'useTransition';
47574      updateHookTypesDev();
47575      return rerenderTransition();
47576    },
47577    useMutableSource: function (source, getSnapshot, subscribe) {
47578      currentHookNameInDev = 'useMutableSource';
47579      updateHookTypesDev();
47580      return updateMutableSource(source, getSnapshot, subscribe);
47581    },
47582    useOpaqueIdentifier: function () {
47583      currentHookNameInDev = 'useOpaqueIdentifier';
47584      updateHookTypesDev();
47585      return rerenderOpaqueIdentifier();
47586    },
47587    unstable_isNewReconciler: enableNewReconciler
47588  };
47589  InvalidNestedHooksDispatcherOnMountInDEV = {
47590    readContext: function (context, observedBits) {
47591      warnInvalidContextAccess();
47592      return readContext(context, observedBits);
47593    },
47594    useCallback: function (callback, deps) {
47595      currentHookNameInDev = 'useCallback';
47596      warnInvalidHookAccess();
47597      mountHookTypesDev();
47598      return mountCallback(callback, deps);
47599    },
47600    useContext: function (context, observedBits) {
47601      currentHookNameInDev = 'useContext';
47602      warnInvalidHookAccess();
47603      mountHookTypesDev();
47604      return readContext(context, observedBits);
47605    },
47606    useEffect: function (create, deps) {
47607      currentHookNameInDev = 'useEffect';
47608      warnInvalidHookAccess();
47609      mountHookTypesDev();
47610      return mountEffect(create, deps);
47611    },
47612    useImperativeHandle: function (ref, create, deps) {
47613      currentHookNameInDev = 'useImperativeHandle';
47614      warnInvalidHookAccess();
47615      mountHookTypesDev();
47616      return mountImperativeHandle(ref, create, deps);
47617    },
47618    useLayoutEffect: function (create, deps) {
47619      currentHookNameInDev = 'useLayoutEffect';
47620      warnInvalidHookAccess();
47621      mountHookTypesDev();
47622      return mountLayoutEffect(create, deps);
47623    },
47624    useMemo: function (create, deps) {
47625      currentHookNameInDev = 'useMemo';
47626      warnInvalidHookAccess();
47627      mountHookTypesDev();
47628      var prevDispatcher = ReactCurrentDispatcher$1.current;
47629      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47630
47631      try {
47632        return mountMemo(create, deps);
47633      } finally {
47634        ReactCurrentDispatcher$1.current = prevDispatcher;
47635      }
47636    },
47637    useReducer: function (reducer, initialArg, init) {
47638      currentHookNameInDev = 'useReducer';
47639      warnInvalidHookAccess();
47640      mountHookTypesDev();
47641      var prevDispatcher = ReactCurrentDispatcher$1.current;
47642      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47643
47644      try {
47645        return mountReducer(reducer, initialArg, init);
47646      } finally {
47647        ReactCurrentDispatcher$1.current = prevDispatcher;
47648      }
47649    },
47650    useRef: function (initialValue) {
47651      currentHookNameInDev = 'useRef';
47652      warnInvalidHookAccess();
47653      mountHookTypesDev();
47654      return mountRef(initialValue);
47655    },
47656    useState: function (initialState) {
47657      currentHookNameInDev = 'useState';
47658      warnInvalidHookAccess();
47659      mountHookTypesDev();
47660      var prevDispatcher = ReactCurrentDispatcher$1.current;
47661      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnMountInDEV;
47662
47663      try {
47664        return mountState(initialState);
47665      } finally {
47666        ReactCurrentDispatcher$1.current = prevDispatcher;
47667      }
47668    },
47669    useDebugValue: function (value, formatterFn) {
47670      currentHookNameInDev = 'useDebugValue';
47671      warnInvalidHookAccess();
47672      mountHookTypesDev();
47673      return mountDebugValue();
47674    },
47675    useDeferredValue: function (value) {
47676      currentHookNameInDev = 'useDeferredValue';
47677      warnInvalidHookAccess();
47678      mountHookTypesDev();
47679      return mountDeferredValue(value);
47680    },
47681    useTransition: function () {
47682      currentHookNameInDev = 'useTransition';
47683      warnInvalidHookAccess();
47684      mountHookTypesDev();
47685      return mountTransition();
47686    },
47687    useMutableSource: function (source, getSnapshot, subscribe) {
47688      currentHookNameInDev = 'useMutableSource';
47689      warnInvalidHookAccess();
47690      mountHookTypesDev();
47691      return mountMutableSource(source, getSnapshot, subscribe);
47692    },
47693    useOpaqueIdentifier: function () {
47694      currentHookNameInDev = 'useOpaqueIdentifier';
47695      warnInvalidHookAccess();
47696      mountHookTypesDev();
47697      return mountOpaqueIdentifier();
47698    },
47699    unstable_isNewReconciler: enableNewReconciler
47700  };
47701  InvalidNestedHooksDispatcherOnUpdateInDEV = {
47702    readContext: function (context, observedBits) {
47703      warnInvalidContextAccess();
47704      return readContext(context, observedBits);
47705    },
47706    useCallback: function (callback, deps) {
47707      currentHookNameInDev = 'useCallback';
47708      warnInvalidHookAccess();
47709      updateHookTypesDev();
47710      return updateCallback(callback, deps);
47711    },
47712    useContext: function (context, observedBits) {
47713      currentHookNameInDev = 'useContext';
47714      warnInvalidHookAccess();
47715      updateHookTypesDev();
47716      return readContext(context, observedBits);
47717    },
47718    useEffect: function (create, deps) {
47719      currentHookNameInDev = 'useEffect';
47720      warnInvalidHookAccess();
47721      updateHookTypesDev();
47722      return updateEffect(create, deps);
47723    },
47724    useImperativeHandle: function (ref, create, deps) {
47725      currentHookNameInDev = 'useImperativeHandle';
47726      warnInvalidHookAccess();
47727      updateHookTypesDev();
47728      return updateImperativeHandle(ref, create, deps);
47729    },
47730    useLayoutEffect: function (create, deps) {
47731      currentHookNameInDev = 'useLayoutEffect';
47732      warnInvalidHookAccess();
47733      updateHookTypesDev();
47734      return updateLayoutEffect(create, deps);
47735    },
47736    useMemo: function (create, deps) {
47737      currentHookNameInDev = 'useMemo';
47738      warnInvalidHookAccess();
47739      updateHookTypesDev();
47740      var prevDispatcher = ReactCurrentDispatcher$1.current;
47741      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47742
47743      try {
47744        return updateMemo(create, deps);
47745      } finally {
47746        ReactCurrentDispatcher$1.current = prevDispatcher;
47747      }
47748    },
47749    useReducer: function (reducer, initialArg, init) {
47750      currentHookNameInDev = 'useReducer';
47751      warnInvalidHookAccess();
47752      updateHookTypesDev();
47753      var prevDispatcher = ReactCurrentDispatcher$1.current;
47754      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47755
47756      try {
47757        return updateReducer(reducer, initialArg, init);
47758      } finally {
47759        ReactCurrentDispatcher$1.current = prevDispatcher;
47760      }
47761    },
47762    useRef: function (initialValue) {
47763      currentHookNameInDev = 'useRef';
47764      warnInvalidHookAccess();
47765      updateHookTypesDev();
47766      return updateRef();
47767    },
47768    useState: function (initialState) {
47769      currentHookNameInDev = 'useState';
47770      warnInvalidHookAccess();
47771      updateHookTypesDev();
47772      var prevDispatcher = ReactCurrentDispatcher$1.current;
47773      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47774
47775      try {
47776        return updateState(initialState);
47777      } finally {
47778        ReactCurrentDispatcher$1.current = prevDispatcher;
47779      }
47780    },
47781    useDebugValue: function (value, formatterFn) {
47782      currentHookNameInDev = 'useDebugValue';
47783      warnInvalidHookAccess();
47784      updateHookTypesDev();
47785      return updateDebugValue();
47786    },
47787    useDeferredValue: function (value) {
47788      currentHookNameInDev = 'useDeferredValue';
47789      warnInvalidHookAccess();
47790      updateHookTypesDev();
47791      return updateDeferredValue(value);
47792    },
47793    useTransition: function () {
47794      currentHookNameInDev = 'useTransition';
47795      warnInvalidHookAccess();
47796      updateHookTypesDev();
47797      return updateTransition();
47798    },
47799    useMutableSource: function (source, getSnapshot, subscribe) {
47800      currentHookNameInDev = 'useMutableSource';
47801      warnInvalidHookAccess();
47802      updateHookTypesDev();
47803      return updateMutableSource(source, getSnapshot, subscribe);
47804    },
47805    useOpaqueIdentifier: function () {
47806      currentHookNameInDev = 'useOpaqueIdentifier';
47807      warnInvalidHookAccess();
47808      updateHookTypesDev();
47809      return updateOpaqueIdentifier();
47810    },
47811    unstable_isNewReconciler: enableNewReconciler
47812  };
47813  InvalidNestedHooksDispatcherOnRerenderInDEV = {
47814    readContext: function (context, observedBits) {
47815      warnInvalidContextAccess();
47816      return readContext(context, observedBits);
47817    },
47818    useCallback: function (callback, deps) {
47819      currentHookNameInDev = 'useCallback';
47820      warnInvalidHookAccess();
47821      updateHookTypesDev();
47822      return updateCallback(callback, deps);
47823    },
47824    useContext: function (context, observedBits) {
47825      currentHookNameInDev = 'useContext';
47826      warnInvalidHookAccess();
47827      updateHookTypesDev();
47828      return readContext(context, observedBits);
47829    },
47830    useEffect: function (create, deps) {
47831      currentHookNameInDev = 'useEffect';
47832      warnInvalidHookAccess();
47833      updateHookTypesDev();
47834      return updateEffect(create, deps);
47835    },
47836    useImperativeHandle: function (ref, create, deps) {
47837      currentHookNameInDev = 'useImperativeHandle';
47838      warnInvalidHookAccess();
47839      updateHookTypesDev();
47840      return updateImperativeHandle(ref, create, deps);
47841    },
47842    useLayoutEffect: function (create, deps) {
47843      currentHookNameInDev = 'useLayoutEffect';
47844      warnInvalidHookAccess();
47845      updateHookTypesDev();
47846      return updateLayoutEffect(create, deps);
47847    },
47848    useMemo: function (create, deps) {
47849      currentHookNameInDev = 'useMemo';
47850      warnInvalidHookAccess();
47851      updateHookTypesDev();
47852      var prevDispatcher = ReactCurrentDispatcher$1.current;
47853      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47854
47855      try {
47856        return updateMemo(create, deps);
47857      } finally {
47858        ReactCurrentDispatcher$1.current = prevDispatcher;
47859      }
47860    },
47861    useReducer: function (reducer, initialArg, init) {
47862      currentHookNameInDev = 'useReducer';
47863      warnInvalidHookAccess();
47864      updateHookTypesDev();
47865      var prevDispatcher = ReactCurrentDispatcher$1.current;
47866      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47867
47868      try {
47869        return rerenderReducer(reducer, initialArg, init);
47870      } finally {
47871        ReactCurrentDispatcher$1.current = prevDispatcher;
47872      }
47873    },
47874    useRef: function (initialValue) {
47875      currentHookNameInDev = 'useRef';
47876      warnInvalidHookAccess();
47877      updateHookTypesDev();
47878      return updateRef();
47879    },
47880    useState: function (initialState) {
47881      currentHookNameInDev = 'useState';
47882      warnInvalidHookAccess();
47883      updateHookTypesDev();
47884      var prevDispatcher = ReactCurrentDispatcher$1.current;
47885      ReactCurrentDispatcher$1.current = InvalidNestedHooksDispatcherOnUpdateInDEV;
47886
47887      try {
47888        return rerenderState(initialState);
47889      } finally {
47890        ReactCurrentDispatcher$1.current = prevDispatcher;
47891      }
47892    },
47893    useDebugValue: function (value, formatterFn) {
47894      currentHookNameInDev = 'useDebugValue';
47895      warnInvalidHookAccess();
47896      updateHookTypesDev();
47897      return updateDebugValue();
47898    },
47899    useDeferredValue: function (value) {
47900      currentHookNameInDev = 'useDeferredValue';
47901      warnInvalidHookAccess();
47902      updateHookTypesDev();
47903      return rerenderDeferredValue(value);
47904    },
47905    useTransition: function () {
47906      currentHookNameInDev = 'useTransition';
47907      warnInvalidHookAccess();
47908      updateHookTypesDev();
47909      return rerenderTransition();
47910    },
47911    useMutableSource: function (source, getSnapshot, subscribe) {
47912      currentHookNameInDev = 'useMutableSource';
47913      warnInvalidHookAccess();
47914      updateHookTypesDev();
47915      return updateMutableSource(source, getSnapshot, subscribe);
47916    },
47917    useOpaqueIdentifier: function () {
47918      currentHookNameInDev = 'useOpaqueIdentifier';
47919      warnInvalidHookAccess();
47920      updateHookTypesDev();
47921      return rerenderOpaqueIdentifier();
47922    },
47923    unstable_isNewReconciler: enableNewReconciler
47924  };
47925}
47926
47927var now$1 = Scheduler.unstable_now;
47928var commitTime = 0;
47929var profilerStartTime = -1;
47930
47931function getCommitTime() {
47932  return commitTime;
47933}
47934
47935function recordCommitTime() {
47936
47937  commitTime = now$1();
47938}
47939
47940function startProfilerTimer(fiber) {
47941
47942  profilerStartTime = now$1();
47943
47944  if (fiber.actualStartTime < 0) {
47945    fiber.actualStartTime = now$1();
47946  }
47947}
47948
47949function stopProfilerTimerIfRunning(fiber) {
47950
47951  profilerStartTime = -1;
47952}
47953
47954function stopProfilerTimerIfRunningAndRecordDelta(fiber, overrideBaseTime) {
47955
47956  if (profilerStartTime >= 0) {
47957    var elapsedTime = now$1() - profilerStartTime;
47958    fiber.actualDuration += elapsedTime;
47959
47960    if (overrideBaseTime) {
47961      fiber.selfBaseDuration = elapsedTime;
47962    }
47963
47964    profilerStartTime = -1;
47965  }
47966}
47967
47968function transferActualDuration(fiber) {
47969  // Transfer time spent rendering these children so we don't lose it
47970  // after we rerender. This is used as a helper in special cases
47971  // where we should count the work of multiple passes.
47972  var child = fiber.child;
47973
47974  while (child) {
47975    fiber.actualDuration += child.actualDuration;
47976    child = child.sibling;
47977  }
47978}
47979
47980var ReactCurrentOwner$1 = ReactSharedInternals.ReactCurrentOwner;
47981var didReceiveUpdate = false;
47982var didWarnAboutBadClass;
47983var didWarnAboutModulePatternComponent;
47984var didWarnAboutContextTypeOnFunctionComponent;
47985var didWarnAboutGetDerivedStateOnFunctionComponent;
47986var didWarnAboutFunctionRefs;
47987var didWarnAboutReassigningProps;
47988var didWarnAboutRevealOrder;
47989var didWarnAboutTailOptions;
47990
47991{
47992  didWarnAboutBadClass = {};
47993  didWarnAboutModulePatternComponent = {};
47994  didWarnAboutContextTypeOnFunctionComponent = {};
47995  didWarnAboutGetDerivedStateOnFunctionComponent = {};
47996  didWarnAboutFunctionRefs = {};
47997  didWarnAboutReassigningProps = false;
47998  didWarnAboutRevealOrder = {};
47999  didWarnAboutTailOptions = {};
48000}
48001
48002function reconcileChildren(current, workInProgress, nextChildren, renderLanes) {
48003  if (current === null) {
48004    // If this is a fresh new component that hasn't been rendered yet, we
48005    // won't update its child set by applying minimal side-effects. Instead,
48006    // we will add them all to the child before it gets rendered. That means
48007    // we can optimize this reconciliation pass by not tracking side-effects.
48008    workInProgress.child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);
48009  } else {
48010    // If the current child is the same as the work in progress, it means that
48011    // we haven't yet started any work on these children. Therefore, we use
48012    // the clone algorithm to create a copy of all the current children.
48013    // If we had any progressed work already, that is invalid at this point so
48014    // let's throw it out.
48015    workInProgress.child = reconcileChildFibers(workInProgress, current.child, nextChildren, renderLanes);
48016  }
48017}
48018
48019function forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes) {
48020  // This function is fork of reconcileChildren. It's used in cases where we
48021  // want to reconcile without matching against the existing set. This has the
48022  // effect of all current children being unmounted; even if the type and key
48023  // are the same, the old child is unmounted and a new child is created.
48024  //
48025  // To do this, we're going to go through the reconcile algorithm twice. In
48026  // the first pass, we schedule a deletion for all the current children by
48027  // passing null.
48028  workInProgress.child = reconcileChildFibers(workInProgress, current.child, null, renderLanes); // In the second pass, we mount the new children. The trick here is that we
48029  // pass null in place of where we usually pass the current child set. This has
48030  // the effect of remounting all children regardless of whether their
48031  // identities match.
48032
48033  workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);
48034}
48035
48036function updateForwardRef(current, workInProgress, Component, nextProps, renderLanes) {
48037  // TODO: current can be non-null here even if the component
48038  // hasn't yet mounted. This happens after the first render suspends.
48039  // We'll need to figure out if this is fine or can cause issues.
48040  {
48041    if (workInProgress.type !== workInProgress.elementType) {
48042      // Lazy component props can't be validated in createElement
48043      // because they're only guaranteed to be resolved here.
48044      var innerPropTypes = Component.propTypes;
48045
48046      if (innerPropTypes) {
48047        checkPropTypes(innerPropTypes, nextProps, // Resolved props
48048        'prop', getComponentName(Component));
48049      }
48050    }
48051  }
48052
48053  var render = Component.render;
48054  var ref = workInProgress.ref; // The rest is a fork of updateFunctionComponent
48055
48056  var nextChildren;
48057  prepareToReadContext(workInProgress, renderLanes);
48058
48059  {
48060    ReactCurrentOwner$1.current = workInProgress;
48061    setIsRendering(true);
48062    nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);
48063
48064    if ( workInProgress.mode & StrictMode) {
48065      disableLogs();
48066
48067      try {
48068        nextChildren = renderWithHooks(current, workInProgress, render, nextProps, ref, renderLanes);
48069      } finally {
48070        reenableLogs();
48071      }
48072    }
48073
48074    setIsRendering(false);
48075  }
48076
48077  if (current !== null && !didReceiveUpdate) {
48078    bailoutHooks(current, workInProgress, renderLanes);
48079    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48080  } // React DevTools reads this flag.
48081
48082
48083  workInProgress.flags |= PerformedWork;
48084  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48085  return workInProgress.child;
48086}
48087
48088function updateMemoComponent(current, workInProgress, Component, nextProps, updateLanes, renderLanes) {
48089  if (current === null) {
48090    var type = Component.type;
48091
48092    if (isSimpleFunctionComponent(type) && Component.compare === null && // SimpleMemoComponent codepath doesn't resolve outer props either.
48093    Component.defaultProps === undefined) {
48094      var resolvedType = type;
48095
48096      {
48097        resolvedType = resolveFunctionForHotReloading(type);
48098      } // If this is a plain function component without default props,
48099      // and with only the default shallow comparison, we upgrade it
48100      // to a SimpleMemoComponent to allow fast path updates.
48101
48102
48103      workInProgress.tag = SimpleMemoComponent;
48104      workInProgress.type = resolvedType;
48105
48106      {
48107        validateFunctionComponentInDev(workInProgress, type);
48108      }
48109
48110      return updateSimpleMemoComponent(current, workInProgress, resolvedType, nextProps, updateLanes, renderLanes);
48111    }
48112
48113    {
48114      var innerPropTypes = type.propTypes;
48115
48116      if (innerPropTypes) {
48117        // Inner memo component props aren't currently validated in createElement.
48118        // We could move it there, but we'd still need this for lazy code path.
48119        checkPropTypes(innerPropTypes, nextProps, // Resolved props
48120        'prop', getComponentName(type));
48121      }
48122    }
48123
48124    var child = createFiberFromTypeAndProps(Component.type, null, nextProps, workInProgress, workInProgress.mode, renderLanes);
48125    child.ref = workInProgress.ref;
48126    child.return = workInProgress;
48127    workInProgress.child = child;
48128    return child;
48129  }
48130
48131  {
48132    var _type = Component.type;
48133    var _innerPropTypes = _type.propTypes;
48134
48135    if (_innerPropTypes) {
48136      // Inner memo component props aren't currently validated in createElement.
48137      // We could move it there, but we'd still need this for lazy code path.
48138      checkPropTypes(_innerPropTypes, nextProps, // Resolved props
48139      'prop', getComponentName(_type));
48140    }
48141  }
48142
48143  var currentChild = current.child; // This is always exactly one child
48144
48145  if (!includesSomeLane(updateLanes, renderLanes)) {
48146    // This will be the props with resolved defaultProps,
48147    // unlike current.memoizedProps which will be the unresolved ones.
48148    var prevProps = currentChild.memoizedProps; // Default to shallow comparison
48149
48150    var compare = Component.compare;
48151    compare = compare !== null ? compare : shallowEqual;
48152
48153    if (compare(prevProps, nextProps) && current.ref === workInProgress.ref) {
48154      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48155    }
48156  } // React DevTools reads this flag.
48157
48158
48159  workInProgress.flags |= PerformedWork;
48160  var newChild = createWorkInProgress(currentChild, nextProps);
48161  newChild.ref = workInProgress.ref;
48162  newChild.return = workInProgress;
48163  workInProgress.child = newChild;
48164  return newChild;
48165}
48166
48167function updateSimpleMemoComponent(current, workInProgress, Component, nextProps, updateLanes, renderLanes) {
48168  // TODO: current can be non-null here even if the component
48169  // hasn't yet mounted. This happens when the inner render suspends.
48170  // We'll need to figure out if this is fine or can cause issues.
48171  {
48172    if (workInProgress.type !== workInProgress.elementType) {
48173      // Lazy component props can't be validated in createElement
48174      // because they're only guaranteed to be resolved here.
48175      var outerMemoType = workInProgress.elementType;
48176
48177      if (outerMemoType.$$typeof === REACT_LAZY_TYPE) {
48178        // We warn when you define propTypes on lazy()
48179        // so let's just skip over it to find memo() outer wrapper.
48180        // Inner props for memo are validated later.
48181        var lazyComponent = outerMemoType;
48182        var payload = lazyComponent._payload;
48183        var init = lazyComponent._init;
48184
48185        try {
48186          outerMemoType = init(payload);
48187        } catch (x) {
48188          outerMemoType = null;
48189        } // Inner propTypes will be validated in the function component path.
48190
48191
48192        var outerPropTypes = outerMemoType && outerMemoType.propTypes;
48193
48194        if (outerPropTypes) {
48195          checkPropTypes(outerPropTypes, nextProps, // Resolved (SimpleMemoComponent has no defaultProps)
48196          'prop', getComponentName(outerMemoType));
48197        }
48198      }
48199    }
48200  }
48201
48202  if (current !== null) {
48203    var prevProps = current.memoizedProps;
48204
48205    if (shallowEqual(prevProps, nextProps) && current.ref === workInProgress.ref && ( // Prevent bailout if the implementation changed due to hot reload.
48206     workInProgress.type === current.type )) {
48207      didReceiveUpdate = false;
48208
48209      if (!includesSomeLane(renderLanes, updateLanes)) {
48210        // The pending lanes were cleared at the beginning of beginWork. We're
48211        // about to bail out, but there might be other lanes that weren't
48212        // included in the current render. Usually, the priority level of the
48213        // remaining updates is accumlated during the evaluation of the
48214        // component (i.e. when processing the update queue). But since since
48215        // we're bailing out early *without* evaluating the component, we need
48216        // to account for it here, too. Reset to the value of the current fiber.
48217        // NOTE: This only applies to SimpleMemoComponent, not MemoComponent,
48218        // because a MemoComponent fiber does not have hooks or an update queue;
48219        // rather, it wraps around an inner component, which may or may not
48220        // contains hooks.
48221        // TODO: Move the reset at in beginWork out of the common path so that
48222        // this is no longer necessary.
48223        workInProgress.lanes = current.lanes;
48224        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48225      } else if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {
48226        // This is a special case that only exists for legacy mode.
48227        // See https://github.com/facebook/react/pull/19216.
48228        didReceiveUpdate = true;
48229      }
48230    }
48231  }
48232
48233  return updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes);
48234}
48235
48236function updateOffscreenComponent(current, workInProgress, renderLanes) {
48237  var nextProps = workInProgress.pendingProps;
48238  var nextChildren = nextProps.children;
48239  var prevState = current !== null ? current.memoizedState : null;
48240
48241  if (nextProps.mode === 'hidden' || nextProps.mode === 'unstable-defer-without-hiding') {
48242    if ((workInProgress.mode & ConcurrentMode) === NoMode) {
48243      // In legacy sync mode, don't defer the subtree. Render it now.
48244      // TODO: Figure out what we should do in Blocking mode.
48245      var nextState = {
48246        baseLanes: NoLanes
48247      };
48248      workInProgress.memoizedState = nextState;
48249      pushRenderLanes(workInProgress, renderLanes);
48250    } else if (!includesSomeLane(renderLanes, OffscreenLane)) {
48251      var nextBaseLanes;
48252
48253      if (prevState !== null) {
48254        var prevBaseLanes = prevState.baseLanes;
48255        nextBaseLanes = mergeLanes(prevBaseLanes, renderLanes);
48256      } else {
48257        nextBaseLanes = renderLanes;
48258      } // Schedule this fiber to re-render at offscreen priority. Then bailout.
48259
48260
48261      {
48262        markSpawnedWork(OffscreenLane);
48263      }
48264
48265      workInProgress.lanes = workInProgress.childLanes = laneToLanes(OffscreenLane);
48266      var _nextState = {
48267        baseLanes: nextBaseLanes
48268      };
48269      workInProgress.memoizedState = _nextState; // We're about to bail out, but we need to push this to the stack anyway
48270      // to avoid a push/pop misalignment.
48271
48272      pushRenderLanes(workInProgress, nextBaseLanes);
48273      return null;
48274    } else {
48275      // Rendering at offscreen, so we can clear the base lanes.
48276      var _nextState2 = {
48277        baseLanes: NoLanes
48278      };
48279      workInProgress.memoizedState = _nextState2; // Push the lanes that were skipped when we bailed out.
48280
48281      var subtreeRenderLanes = prevState !== null ? prevState.baseLanes : renderLanes;
48282      pushRenderLanes(workInProgress, subtreeRenderLanes);
48283    }
48284  } else {
48285    var _subtreeRenderLanes;
48286
48287    if (prevState !== null) {
48288      _subtreeRenderLanes = mergeLanes(prevState.baseLanes, renderLanes); // Since we're not hidden anymore, reset the state
48289
48290      workInProgress.memoizedState = null;
48291    } else {
48292      // We weren't previously hidden, and we still aren't, so there's nothing
48293      // special to do. Need to push to the stack regardless, though, to avoid
48294      // a push/pop misalignment.
48295      _subtreeRenderLanes = renderLanes;
48296    }
48297
48298    pushRenderLanes(workInProgress, _subtreeRenderLanes);
48299  }
48300
48301  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48302  return workInProgress.child;
48303} // Note: These happen to have identical begin phases, for now. We shouldn't hold
48304// ourselves to this constraint, though. If the behavior diverges, we should
48305// fork the function.
48306
48307
48308var updateLegacyHiddenComponent = updateOffscreenComponent;
48309
48310function updateFragment(current, workInProgress, renderLanes) {
48311  var nextChildren = workInProgress.pendingProps;
48312  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48313  return workInProgress.child;
48314}
48315
48316function updateMode(current, workInProgress, renderLanes) {
48317  var nextChildren = workInProgress.pendingProps.children;
48318  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48319  return workInProgress.child;
48320}
48321
48322function updateProfiler(current, workInProgress, renderLanes) {
48323  {
48324    workInProgress.flags |= Update; // Reset effect durations for the next eventual effect phase.
48325    // These are reset during render to allow the DevTools commit hook a chance to read them,
48326
48327    var stateNode = workInProgress.stateNode;
48328    stateNode.effectDuration = 0;
48329    stateNode.passiveEffectDuration = 0;
48330  }
48331
48332  var nextProps = workInProgress.pendingProps;
48333  var nextChildren = nextProps.children;
48334  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48335  return workInProgress.child;
48336}
48337
48338function markRef(current, workInProgress) {
48339  var ref = workInProgress.ref;
48340
48341  if (current === null && ref !== null || current !== null && current.ref !== ref) {
48342    // Schedule a Ref effect
48343    workInProgress.flags |= Ref;
48344  }
48345}
48346
48347function updateFunctionComponent(current, workInProgress, Component, nextProps, renderLanes) {
48348  {
48349    if (workInProgress.type !== workInProgress.elementType) {
48350      // Lazy component props can't be validated in createElement
48351      // because they're only guaranteed to be resolved here.
48352      var innerPropTypes = Component.propTypes;
48353
48354      if (innerPropTypes) {
48355        checkPropTypes(innerPropTypes, nextProps, // Resolved props
48356        'prop', getComponentName(Component));
48357      }
48358    }
48359  }
48360
48361  var context;
48362
48363  {
48364    var unmaskedContext = getUnmaskedContext(workInProgress, Component, true);
48365    context = getMaskedContext(workInProgress, unmaskedContext);
48366  }
48367
48368  var nextChildren;
48369  prepareToReadContext(workInProgress, renderLanes);
48370
48371  {
48372    ReactCurrentOwner$1.current = workInProgress;
48373    setIsRendering(true);
48374    nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);
48375
48376    if ( workInProgress.mode & StrictMode) {
48377      disableLogs();
48378
48379      try {
48380        nextChildren = renderWithHooks(current, workInProgress, Component, nextProps, context, renderLanes);
48381      } finally {
48382        reenableLogs();
48383      }
48384    }
48385
48386    setIsRendering(false);
48387  }
48388
48389  if (current !== null && !didReceiveUpdate) {
48390    bailoutHooks(current, workInProgress, renderLanes);
48391    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48392  } // React DevTools reads this flag.
48393
48394
48395  workInProgress.flags |= PerformedWork;
48396  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48397  return workInProgress.child;
48398}
48399
48400function updateClassComponent(current, workInProgress, Component, nextProps, renderLanes) {
48401  {
48402    if (workInProgress.type !== workInProgress.elementType) {
48403      // Lazy component props can't be validated in createElement
48404      // because they're only guaranteed to be resolved here.
48405      var innerPropTypes = Component.propTypes;
48406
48407      if (innerPropTypes) {
48408        checkPropTypes(innerPropTypes, nextProps, // Resolved props
48409        'prop', getComponentName(Component));
48410      }
48411    }
48412  } // Push context providers early to prevent context stack mismatches.
48413  // During mounting we don't know the child context yet as the instance doesn't exist.
48414  // We will invalidate the child context in finishClassComponent() right after rendering.
48415
48416
48417  var hasContext;
48418
48419  if (isContextProvider(Component)) {
48420    hasContext = true;
48421    pushContextProvider(workInProgress);
48422  } else {
48423    hasContext = false;
48424  }
48425
48426  prepareToReadContext(workInProgress, renderLanes);
48427  var instance = workInProgress.stateNode;
48428  var shouldUpdate;
48429
48430  if (instance === null) {
48431    if (current !== null) {
48432      // A class component without an instance only mounts if it suspended
48433      // inside a non-concurrent tree, in an inconsistent state. We want to
48434      // treat it like a new mount, even though an empty version of it already
48435      // committed. Disconnect the alternate pointers.
48436      current.alternate = null;
48437      workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
48438
48439      workInProgress.flags |= Placement;
48440    } // In the initial pass we might need to construct the instance.
48441
48442
48443    constructClassInstance(workInProgress, Component, nextProps);
48444    mountClassInstance(workInProgress, Component, nextProps, renderLanes);
48445    shouldUpdate = true;
48446  } else if (current === null) {
48447    // In a resume, we'll already have an instance we can reuse.
48448    shouldUpdate = resumeMountClassInstance(workInProgress, Component, nextProps, renderLanes);
48449  } else {
48450    shouldUpdate = updateClassInstance(current, workInProgress, Component, nextProps, renderLanes);
48451  }
48452
48453  var nextUnitOfWork = finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes);
48454
48455  {
48456    var inst = workInProgress.stateNode;
48457
48458    if (shouldUpdate && inst.props !== nextProps) {
48459      if (!didWarnAboutReassigningProps) {
48460        error('It looks like %s is reassigning its own `this.props` while rendering. ' + 'This is not supported and can lead to confusing bugs.', getComponentName(workInProgress.type) || 'a component');
48461      }
48462
48463      didWarnAboutReassigningProps = true;
48464    }
48465  }
48466
48467  return nextUnitOfWork;
48468}
48469
48470function finishClassComponent(current, workInProgress, Component, shouldUpdate, hasContext, renderLanes) {
48471  // Refs should update even if shouldComponentUpdate returns false
48472  markRef(current, workInProgress);
48473  var didCaptureError = (workInProgress.flags & DidCapture) !== NoFlags;
48474
48475  if (!shouldUpdate && !didCaptureError) {
48476    // Context providers should defer to sCU for rendering
48477    if (hasContext) {
48478      invalidateContextProvider(workInProgress, Component, false);
48479    }
48480
48481    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48482  }
48483
48484  var instance = workInProgress.stateNode; // Rerender
48485
48486  ReactCurrentOwner$1.current = workInProgress;
48487  var nextChildren;
48488
48489  if (didCaptureError && typeof Component.getDerivedStateFromError !== 'function') {
48490    // If we captured an error, but getDerivedStateFromError is not defined,
48491    // unmount all the children. componentDidCatch will schedule an update to
48492    // re-render a fallback. This is temporary until we migrate everyone to
48493    // the new API.
48494    // TODO: Warn in a future release.
48495    nextChildren = null;
48496
48497    {
48498      stopProfilerTimerIfRunning();
48499    }
48500  } else {
48501    {
48502      setIsRendering(true);
48503      nextChildren = instance.render();
48504
48505      if ( workInProgress.mode & StrictMode) {
48506        disableLogs();
48507
48508        try {
48509          instance.render();
48510        } finally {
48511          reenableLogs();
48512        }
48513      }
48514
48515      setIsRendering(false);
48516    }
48517  } // React DevTools reads this flag.
48518
48519
48520  workInProgress.flags |= PerformedWork;
48521
48522  if (current !== null && didCaptureError) {
48523    // If we're recovering from an error, reconcile without reusing any of
48524    // the existing children. Conceptually, the normal children and the children
48525    // that are shown on error are two different sets, so we shouldn't reuse
48526    // normal children even if their identities match.
48527    forceUnmountCurrentAndReconcile(current, workInProgress, nextChildren, renderLanes);
48528  } else {
48529    reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48530  } // Memoize state using the values we just used to render.
48531  // TODO: Restructure so we never read values from the instance.
48532
48533
48534  workInProgress.memoizedState = instance.state; // The context might have changed so we need to recalculate it.
48535
48536  if (hasContext) {
48537    invalidateContextProvider(workInProgress, Component, true);
48538  }
48539
48540  return workInProgress.child;
48541}
48542
48543function pushHostRootContext(workInProgress) {
48544  var root = workInProgress.stateNode;
48545
48546  if (root.pendingContext) {
48547    pushTopLevelContextObject(workInProgress, root.pendingContext, root.pendingContext !== root.context);
48548  } else if (root.context) {
48549    // Should always be set
48550    pushTopLevelContextObject(workInProgress, root.context, false);
48551  }
48552
48553  pushHostContainer(workInProgress, root.containerInfo);
48554}
48555
48556function updateHostRoot(current, workInProgress, renderLanes) {
48557  pushHostRootContext(workInProgress);
48558  var updateQueue = workInProgress.updateQueue;
48559
48560  if (!(current !== null && updateQueue !== null)) {
48561    {
48562      throw Error( "If the root does not have an updateQueue, we should have already bailed out. This error is likely caused by a bug in React. Please file an issue." );
48563    }
48564  }
48565
48566  var nextProps = workInProgress.pendingProps;
48567  var prevState = workInProgress.memoizedState;
48568  var prevChildren = prevState !== null ? prevState.element : null;
48569  cloneUpdateQueue(current, workInProgress);
48570  processUpdateQueue(workInProgress, nextProps, null, renderLanes);
48571  var nextState = workInProgress.memoizedState; // Caution: React DevTools currently depends on this property
48572  // being called "element".
48573
48574  var nextChildren = nextState.element;
48575
48576  if (nextChildren === prevChildren) {
48577    resetHydrationState();
48578    return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
48579  }
48580
48581  var root = workInProgress.stateNode;
48582
48583  if (root.hydrate && enterHydrationState(workInProgress)) {
48584    // If we don't have any current children this might be the first pass.
48585    // We always try to hydrate. If this isn't a hydration pass there won't
48586    // be any children to hydrate which is effectively the same thing as
48587    // not hydrating.
48588    {
48589      var mutableSourceEagerHydrationData = root.mutableSourceEagerHydrationData;
48590
48591      if (mutableSourceEagerHydrationData != null) {
48592        for (var i = 0; i < mutableSourceEagerHydrationData.length; i += 2) {
48593          var mutableSource = mutableSourceEagerHydrationData[i];
48594          var version = mutableSourceEagerHydrationData[i + 1];
48595          setWorkInProgressVersion(mutableSource, version);
48596        }
48597      }
48598    }
48599
48600    var child = mountChildFibers(workInProgress, null, nextChildren, renderLanes);
48601    workInProgress.child = child;
48602    var node = child;
48603
48604    while (node) {
48605      // Mark each child as hydrating. This is a fast path to know whether this
48606      // tree is part of a hydrating tree. This is used to determine if a child
48607      // node has fully mounted yet, and for scheduling event replaying.
48608      // Conceptually this is similar to Placement in that a new subtree is
48609      // inserted into the React tree here. It just happens to not need DOM
48610      // mutations because it already exists.
48611      node.flags = node.flags & ~Placement | Hydrating;
48612      node = node.sibling;
48613    }
48614  } else {
48615    // Otherwise reset hydration state in case we aborted and resumed another
48616    // root.
48617    reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48618    resetHydrationState();
48619  }
48620
48621  return workInProgress.child;
48622}
48623
48624function updateHostComponent(current, workInProgress, renderLanes) {
48625  pushHostContext(workInProgress);
48626
48627  if (current === null) {
48628    tryToClaimNextHydratableInstance(workInProgress);
48629  }
48630
48631  var type = workInProgress.type;
48632  var nextProps = workInProgress.pendingProps;
48633  var prevProps = current !== null ? current.memoizedProps : null;
48634  var nextChildren = nextProps.children;
48635  var isDirectTextChild = shouldSetTextContent(type, nextProps);
48636
48637  if (isDirectTextChild) {
48638    // We special case a direct text child of a host node. This is a common
48639    // case. We won't handle it as a reified child. We will instead handle
48640    // this in the host environment that also has access to this prop. That
48641    // avoids allocating another HostText fiber and traversing it.
48642    nextChildren = null;
48643  } else if (prevProps !== null && shouldSetTextContent(type, prevProps)) {
48644    // If we're switching from a direct text child to a normal child, or to
48645    // empty, we need to schedule the text content to be reset.
48646    workInProgress.flags |= ContentReset;
48647  }
48648
48649  markRef(current, workInProgress);
48650  reconcileChildren(current, workInProgress, nextChildren, renderLanes);
48651  return workInProgress.child;
48652}
48653
48654function updateHostText(current, workInProgress) {
48655  if (current === null) {
48656    tryToClaimNextHydratableInstance(workInProgress);
48657  } // Nothing to do here. This is terminal. We'll do the completion step
48658  // immediately after.
48659
48660
48661  return null;
48662}
48663
48664function mountLazyComponent(_current, workInProgress, elementType, updateLanes, renderLanes) {
48665  if (_current !== null) {
48666    // A lazy component only mounts if it suspended inside a non-
48667    // concurrent tree, in an inconsistent state. We want to treat it like
48668    // a new mount, even though an empty version of it already committed.
48669    // Disconnect the alternate pointers.
48670    _current.alternate = null;
48671    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
48672
48673    workInProgress.flags |= Placement;
48674  }
48675
48676  var props = workInProgress.pendingProps;
48677  var lazyComponent = elementType;
48678  var payload = lazyComponent._payload;
48679  var init = lazyComponent._init;
48680  var Component = init(payload); // Store the unwrapped component in the type.
48681
48682  workInProgress.type = Component;
48683  var resolvedTag = workInProgress.tag = resolveLazyComponentTag(Component);
48684  var resolvedProps = resolveDefaultProps(Component, props);
48685  var child;
48686
48687  switch (resolvedTag) {
48688    case FunctionComponent:
48689      {
48690        {
48691          validateFunctionComponentInDev(workInProgress, Component);
48692          workInProgress.type = Component = resolveFunctionForHotReloading(Component);
48693        }
48694
48695        child = updateFunctionComponent(null, workInProgress, Component, resolvedProps, renderLanes);
48696        return child;
48697      }
48698
48699    case ClassComponent:
48700      {
48701        {
48702          workInProgress.type = Component = resolveClassForHotReloading(Component);
48703        }
48704
48705        child = updateClassComponent(null, workInProgress, Component, resolvedProps, renderLanes);
48706        return child;
48707      }
48708
48709    case ForwardRef:
48710      {
48711        {
48712          workInProgress.type = Component = resolveForwardRefForHotReloading(Component);
48713        }
48714
48715        child = updateForwardRef(null, workInProgress, Component, resolvedProps, renderLanes);
48716        return child;
48717      }
48718
48719    case MemoComponent:
48720      {
48721        {
48722          if (workInProgress.type !== workInProgress.elementType) {
48723            var outerPropTypes = Component.propTypes;
48724
48725            if (outerPropTypes) {
48726              checkPropTypes(outerPropTypes, resolvedProps, // Resolved for outer only
48727              'prop', getComponentName(Component));
48728            }
48729          }
48730        }
48731
48732        child = updateMemoComponent(null, workInProgress, Component, resolveDefaultProps(Component.type, resolvedProps), // The inner type can have defaults too
48733        updateLanes, renderLanes);
48734        return child;
48735      }
48736  }
48737
48738  var hint = '';
48739
48740  {
48741    if (Component !== null && typeof Component === 'object' && Component.$$typeof === REACT_LAZY_TYPE) {
48742      hint = ' Did you wrap a component in React.lazy() more than once?';
48743    }
48744  } // This message intentionally doesn't mention ForwardRef or MemoComponent
48745  // because the fact that it's a separate type of work is an
48746  // implementation detail.
48747
48748
48749  {
48750    {
48751      throw Error( "Element type is invalid. Received a promise that resolves to: " + Component + ". Lazy element type must resolve to a class or function." + hint );
48752    }
48753  }
48754}
48755
48756function mountIncompleteClassComponent(_current, workInProgress, Component, nextProps, renderLanes) {
48757  if (_current !== null) {
48758    // An incomplete component only mounts if it suspended inside a non-
48759    // concurrent tree, in an inconsistent state. We want to treat it like
48760    // a new mount, even though an empty version of it already committed.
48761    // Disconnect the alternate pointers.
48762    _current.alternate = null;
48763    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
48764
48765    workInProgress.flags |= Placement;
48766  } // Promote the fiber to a class and try rendering again.
48767
48768
48769  workInProgress.tag = ClassComponent; // The rest of this function is a fork of `updateClassComponent`
48770  // Push context providers early to prevent context stack mismatches.
48771  // During mounting we don't know the child context yet as the instance doesn't exist.
48772  // We will invalidate the child context in finishClassComponent() right after rendering.
48773
48774  var hasContext;
48775
48776  if (isContextProvider(Component)) {
48777    hasContext = true;
48778    pushContextProvider(workInProgress);
48779  } else {
48780    hasContext = false;
48781  }
48782
48783  prepareToReadContext(workInProgress, renderLanes);
48784  constructClassInstance(workInProgress, Component, nextProps);
48785  mountClassInstance(workInProgress, Component, nextProps, renderLanes);
48786  return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);
48787}
48788
48789function mountIndeterminateComponent(_current, workInProgress, Component, renderLanes) {
48790  if (_current !== null) {
48791    // An indeterminate component only mounts if it suspended inside a non-
48792    // concurrent tree, in an inconsistent state. We want to treat it like
48793    // a new mount, even though an empty version of it already committed.
48794    // Disconnect the alternate pointers.
48795    _current.alternate = null;
48796    workInProgress.alternate = null; // Since this is conceptually a new fiber, schedule a Placement effect
48797
48798    workInProgress.flags |= Placement;
48799  }
48800
48801  var props = workInProgress.pendingProps;
48802  var context;
48803
48804  {
48805    var unmaskedContext = getUnmaskedContext(workInProgress, Component, false);
48806    context = getMaskedContext(workInProgress, unmaskedContext);
48807  }
48808
48809  prepareToReadContext(workInProgress, renderLanes);
48810  var value;
48811
48812  {
48813    if (Component.prototype && typeof Component.prototype.render === 'function') {
48814      var componentName = getComponentName(Component) || 'Unknown';
48815
48816      if (!didWarnAboutBadClass[componentName]) {
48817        error("The <%s /> component appears to have a render method, but doesn't extend React.Component. " + 'This is likely to cause errors. Change %s to extend React.Component instead.', componentName, componentName);
48818
48819        didWarnAboutBadClass[componentName] = true;
48820      }
48821    }
48822
48823    if (workInProgress.mode & StrictMode) {
48824      ReactStrictModeWarnings.recordLegacyContextWarning(workInProgress, null);
48825    }
48826
48827    setIsRendering(true);
48828    ReactCurrentOwner$1.current = workInProgress;
48829    value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);
48830    setIsRendering(false);
48831  } // React DevTools reads this flag.
48832
48833
48834  workInProgress.flags |= PerformedWork;
48835
48836  {
48837    // Support for module components is deprecated and is removed behind a flag.
48838    // Whether or not it would crash later, we want to show a good message in DEV first.
48839    if (typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {
48840      var _componentName = getComponentName(Component) || 'Unknown';
48841
48842      if (!didWarnAboutModulePatternComponent[_componentName]) {
48843        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName, _componentName, _componentName);
48844
48845        didWarnAboutModulePatternComponent[_componentName] = true;
48846      }
48847    }
48848  }
48849
48850  if ( // Run these checks in production only if the flag is off.
48851  // Eventually we'll delete this branch altogether.
48852   typeof value === 'object' && value !== null && typeof value.render === 'function' && value.$$typeof === undefined) {
48853    {
48854      var _componentName2 = getComponentName(Component) || 'Unknown';
48855
48856      if (!didWarnAboutModulePatternComponent[_componentName2]) {
48857        error('The <%s /> component appears to be a function component that returns a class instance. ' + 'Change %s to a class that extends React.Component instead. ' + "If you can't use a class try assigning the prototype on the function as a workaround. " + "`%s.prototype = React.Component.prototype`. Don't use an arrow function since it " + 'cannot be called with `new` by React.', _componentName2, _componentName2, _componentName2);
48858
48859        didWarnAboutModulePatternComponent[_componentName2] = true;
48860      }
48861    } // Proceed under the assumption that this is a class instance
48862
48863
48864    workInProgress.tag = ClassComponent; // Throw out any hooks that were used.
48865
48866    workInProgress.memoizedState = null;
48867    workInProgress.updateQueue = null; // Push context providers early to prevent context stack mismatches.
48868    // During mounting we don't know the child context yet as the instance doesn't exist.
48869    // We will invalidate the child context in finishClassComponent() right after rendering.
48870
48871    var hasContext = false;
48872
48873    if (isContextProvider(Component)) {
48874      hasContext = true;
48875      pushContextProvider(workInProgress);
48876    } else {
48877      hasContext = false;
48878    }
48879
48880    workInProgress.memoizedState = value.state !== null && value.state !== undefined ? value.state : null;
48881    initializeUpdateQueue(workInProgress);
48882    var getDerivedStateFromProps = Component.getDerivedStateFromProps;
48883
48884    if (typeof getDerivedStateFromProps === 'function') {
48885      applyDerivedStateFromProps(workInProgress, Component, getDerivedStateFromProps, props);
48886    }
48887
48888    adoptClassInstance(workInProgress, value);
48889    mountClassInstance(workInProgress, Component, props, renderLanes);
48890    return finishClassComponent(null, workInProgress, Component, true, hasContext, renderLanes);
48891  } else {
48892    // Proceed under the assumption that this is a function component
48893    workInProgress.tag = FunctionComponent;
48894
48895    {
48896
48897      if ( workInProgress.mode & StrictMode) {
48898        disableLogs();
48899
48900        try {
48901          value = renderWithHooks(null, workInProgress, Component, props, context, renderLanes);
48902        } finally {
48903          reenableLogs();
48904        }
48905      }
48906    }
48907
48908    reconcileChildren(null, workInProgress, value, renderLanes);
48909
48910    {
48911      validateFunctionComponentInDev(workInProgress, Component);
48912    }
48913
48914    return workInProgress.child;
48915  }
48916}
48917
48918function validateFunctionComponentInDev(workInProgress, Component) {
48919  {
48920    if (Component) {
48921      if (Component.childContextTypes) {
48922        error('%s(...): childContextTypes cannot be defined on a function component.', Component.displayName || Component.name || 'Component');
48923      }
48924    }
48925
48926    if (workInProgress.ref !== null) {
48927      var info = '';
48928      var ownerName = getCurrentFiberOwnerNameInDevOrNull();
48929
48930      if (ownerName) {
48931        info += '\n\nCheck the render method of `' + ownerName + '`.';
48932      }
48933
48934      var warningKey = ownerName || workInProgress._debugID || '';
48935      var debugSource = workInProgress._debugSource;
48936
48937      if (debugSource) {
48938        warningKey = debugSource.fileName + ':' + debugSource.lineNumber;
48939      }
48940
48941      if (!didWarnAboutFunctionRefs[warningKey]) {
48942        didWarnAboutFunctionRefs[warningKey] = true;
48943
48944        error('Function components cannot be given refs. ' + 'Attempts to access this ref will fail. ' + 'Did you mean to use React.forwardRef()?%s', info);
48945      }
48946    }
48947
48948    if (typeof Component.getDerivedStateFromProps === 'function') {
48949      var _componentName3 = getComponentName(Component) || 'Unknown';
48950
48951      if (!didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3]) {
48952        error('%s: Function components do not support getDerivedStateFromProps.', _componentName3);
48953
48954        didWarnAboutGetDerivedStateOnFunctionComponent[_componentName3] = true;
48955      }
48956    }
48957
48958    if (typeof Component.contextType === 'object' && Component.contextType !== null) {
48959      var _componentName4 = getComponentName(Component) || 'Unknown';
48960
48961      if (!didWarnAboutContextTypeOnFunctionComponent[_componentName4]) {
48962        error('%s: Function components do not support contextType.', _componentName4);
48963
48964        didWarnAboutContextTypeOnFunctionComponent[_componentName4] = true;
48965      }
48966    }
48967  }
48968}
48969
48970var SUSPENDED_MARKER = {
48971  dehydrated: null,
48972  retryLane: NoLane
48973};
48974
48975function mountSuspenseOffscreenState(renderLanes) {
48976  return {
48977    baseLanes: renderLanes
48978  };
48979}
48980
48981function updateSuspenseOffscreenState(prevOffscreenState, renderLanes) {
48982  return {
48983    baseLanes: mergeLanes(prevOffscreenState.baseLanes, renderLanes)
48984  };
48985} // TODO: Probably should inline this back
48986
48987
48988function shouldRemainOnFallback(suspenseContext, current, workInProgress, renderLanes) {
48989  // If we're already showing a fallback, there are cases where we need to
48990  // remain on that fallback regardless of whether the content has resolved.
48991  // For example, SuspenseList coordinates when nested content appears.
48992  if (current !== null) {
48993    var suspenseState = current.memoizedState;
48994
48995    if (suspenseState === null) {
48996      // Currently showing content. Don't hide it, even if ForceSuspenseFallack
48997      // is true. More precise name might be "ForceRemainSuspenseFallback".
48998      // Note: This is a factoring smell. Can't remain on a fallback if there's
48999      // no fallback to remain on.
49000      return false;
49001    }
49002  } // Not currently showing content. Consult the Suspense context.
49003
49004
49005  return hasSuspenseContext(suspenseContext, ForceSuspenseFallback);
49006}
49007
49008function getRemainingWorkInPrimaryTree(current, renderLanes) {
49009  // TODO: Should not remove render lanes that were pinged during this render
49010  return removeLanes(current.childLanes, renderLanes);
49011}
49012
49013function updateSuspenseComponent(current, workInProgress, renderLanes) {
49014  var nextProps = workInProgress.pendingProps; // This is used by DevTools to force a boundary to suspend.
49015
49016  {
49017    if (shouldSuspend(workInProgress)) {
49018      workInProgress.flags |= DidCapture;
49019    }
49020  }
49021
49022  var suspenseContext = suspenseStackCursor.current;
49023  var showFallback = false;
49024  var didSuspend = (workInProgress.flags & DidCapture) !== NoFlags;
49025
49026  if (didSuspend || shouldRemainOnFallback(suspenseContext, current)) {
49027    // Something in this boundary's subtree already suspended. Switch to
49028    // rendering the fallback children.
49029    showFallback = true;
49030    workInProgress.flags &= ~DidCapture;
49031  } else {
49032    // Attempting the main content
49033    if (current === null || current.memoizedState !== null) {
49034      // This is a new mount or this boundary is already showing a fallback state.
49035      // Mark this subtree context as having at least one invisible parent that could
49036      // handle the fallback state.
49037      // Boundaries without fallbacks or should be avoided are not considered since
49038      // they cannot handle preferred fallback states.
49039      if (nextProps.fallback !== undefined && nextProps.unstable_avoidThisFallback !== true) {
49040        suspenseContext = addSubtreeSuspenseContext(suspenseContext, InvisibleParentSuspenseContext);
49041      }
49042    }
49043  }
49044
49045  suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
49046  pushSuspenseContext(workInProgress, suspenseContext); // OK, the next part is confusing. We're about to reconcile the Suspense
49047  // boundary's children. This involves some custom reconcilation logic. Two
49048  // main reasons this is so complicated.
49049  //
49050  // First, Legacy Mode has different semantics for backwards compatibility. The
49051  // primary tree will commit in an inconsistent state, so when we do the
49052  // second pass to render the fallback, we do some exceedingly, uh, clever
49053  // hacks to make that not totally break. Like transferring effects and
49054  // deletions from hidden tree. In Concurrent Mode, it's much simpler,
49055  // because we bailout on the primary tree completely and leave it in its old
49056  // state, no effects. Same as what we do for Offscreen (except that
49057  // Offscreen doesn't have the first render pass).
49058  //
49059  // Second is hydration. During hydration, the Suspense fiber has a slightly
49060  // different layout, where the child points to a dehydrated fragment, which
49061  // contains the DOM rendered by the server.
49062  //
49063  // Third, even if you set all that aside, Suspense is like error boundaries in
49064  // that we first we try to render one tree, and if that fails, we render again
49065  // and switch to a different tree. Like a try/catch block. So we have to track
49066  // which branch we're currently rendering. Ideally we would model this using
49067  // a stack.
49068
49069  if (current === null) {
49070    // Initial mount
49071    // If we're currently hydrating, try to hydrate this boundary.
49072    // But only if this has a fallback.
49073    if (nextProps.fallback !== undefined) {
49074      tryToClaimNextHydratableInstance(workInProgress); // This could've been a dehydrated suspense component.
49075    }
49076
49077    var nextPrimaryChildren = nextProps.children;
49078    var nextFallbackChildren = nextProps.fallback;
49079
49080    if (showFallback) {
49081      var fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);
49082      var primaryChildFragment = workInProgress.child;
49083      primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);
49084      workInProgress.memoizedState = SUSPENDED_MARKER;
49085      return fallbackFragment;
49086    } else if (typeof nextProps.unstable_expectedLoadTime === 'number') {
49087      // This is a CPU-bound tree. Skip this tree and show a placeholder to
49088      // unblock the surrounding content. Then immediately retry after the
49089      // initial commit.
49090      var _fallbackFragment = mountSuspenseFallbackChildren(workInProgress, nextPrimaryChildren, nextFallbackChildren, renderLanes);
49091
49092      var _primaryChildFragment = workInProgress.child;
49093      _primaryChildFragment.memoizedState = mountSuspenseOffscreenState(renderLanes);
49094      workInProgress.memoizedState = SUSPENDED_MARKER; // Since nothing actually suspended, there will nothing to ping this to
49095      // get it started back up to attempt the next item. While in terms of
49096      // priority this work has the same priority as this current render, it's
49097      // not part of the same transition once the transition has committed. If
49098      // it's sync, we still want to yield so that it can be painted.
49099      // Conceptually, this is really the same as pinging. We can use any
49100      // RetryLane even if it's the one currently rendering since we're leaving
49101      // it behind on this node.
49102
49103      workInProgress.lanes = SomeRetryLane;
49104
49105      {
49106        markSpawnedWork(SomeRetryLane);
49107      }
49108
49109      return _fallbackFragment;
49110    } else {
49111      return mountSuspensePrimaryChildren(workInProgress, nextPrimaryChildren, renderLanes);
49112    }
49113  } else {
49114    // This is an update.
49115    // If the current fiber has a SuspenseState, that means it's already showing
49116    // a fallback.
49117    var prevState = current.memoizedState;
49118
49119    if (prevState !== null) {
49120
49121      if (showFallback) {
49122        var _nextFallbackChildren2 = nextProps.fallback;
49123        var _nextPrimaryChildren2 = nextProps.children;
49124
49125        var _fallbackChildFragment = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren2, _nextFallbackChildren2, renderLanes);
49126
49127        var _primaryChildFragment3 = workInProgress.child;
49128        var prevOffscreenState = current.child.memoizedState;
49129        _primaryChildFragment3.memoizedState = prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(prevOffscreenState, renderLanes);
49130        _primaryChildFragment3.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes);
49131        workInProgress.memoizedState = SUSPENDED_MARKER;
49132        return _fallbackChildFragment;
49133      } else {
49134        var _nextPrimaryChildren3 = nextProps.children;
49135
49136        var _primaryChildFragment4 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren3, renderLanes);
49137
49138        workInProgress.memoizedState = null;
49139        return _primaryChildFragment4;
49140      }
49141    } else {
49142      // The current tree is not already showing a fallback.
49143      if (showFallback) {
49144        // Timed out.
49145        var _nextFallbackChildren3 = nextProps.fallback;
49146        var _nextPrimaryChildren4 = nextProps.children;
49147
49148        var _fallbackChildFragment2 = updateSuspenseFallbackChildren(current, workInProgress, _nextPrimaryChildren4, _nextFallbackChildren3, renderLanes);
49149
49150        var _primaryChildFragment5 = workInProgress.child;
49151        var _prevOffscreenState = current.child.memoizedState;
49152        _primaryChildFragment5.memoizedState = _prevOffscreenState === null ? mountSuspenseOffscreenState(renderLanes) : updateSuspenseOffscreenState(_prevOffscreenState, renderLanes);
49153        _primaryChildFragment5.childLanes = getRemainingWorkInPrimaryTree(current, renderLanes); // Skip the primary children, and continue working on the
49154        // fallback children.
49155
49156        workInProgress.memoizedState = SUSPENDED_MARKER;
49157        return _fallbackChildFragment2;
49158      } else {
49159        // Still haven't timed out. Continue rendering the children, like we
49160        // normally do.
49161        var _nextPrimaryChildren5 = nextProps.children;
49162
49163        var _primaryChildFragment6 = updateSuspensePrimaryChildren(current, workInProgress, _nextPrimaryChildren5, renderLanes);
49164
49165        workInProgress.memoizedState = null;
49166        return _primaryChildFragment6;
49167      }
49168    }
49169  }
49170}
49171
49172function mountSuspensePrimaryChildren(workInProgress, primaryChildren, renderLanes) {
49173  var mode = workInProgress.mode;
49174  var primaryChildProps = {
49175    mode: 'visible',
49176    children: primaryChildren
49177  };
49178  var primaryChildFragment = createFiberFromOffscreen(primaryChildProps, mode, renderLanes, null);
49179  primaryChildFragment.return = workInProgress;
49180  workInProgress.child = primaryChildFragment;
49181  return primaryChildFragment;
49182}
49183
49184function mountSuspenseFallbackChildren(workInProgress, primaryChildren, fallbackChildren, renderLanes) {
49185  var mode = workInProgress.mode;
49186  var progressedPrimaryFragment = workInProgress.child;
49187  var primaryChildProps = {
49188    mode: 'hidden',
49189    children: primaryChildren
49190  };
49191  var primaryChildFragment;
49192  var fallbackChildFragment;
49193
49194  if ((mode & BlockingMode) === NoMode && progressedPrimaryFragment !== null) {
49195    // In legacy mode, we commit the primary tree as if it successfully
49196    // completed, even though it's in an inconsistent state.
49197    primaryChildFragment = progressedPrimaryFragment;
49198    primaryChildFragment.childLanes = NoLanes;
49199    primaryChildFragment.pendingProps = primaryChildProps;
49200
49201    if ( workInProgress.mode & ProfileMode) {
49202      // Reset the durations from the first pass so they aren't included in the
49203      // final amounts. This seems counterintuitive, since we're intentionally
49204      // not measuring part of the render phase, but this makes it match what we
49205      // do in Concurrent Mode.
49206      primaryChildFragment.actualDuration = 0;
49207      primaryChildFragment.actualStartTime = -1;
49208      primaryChildFragment.selfBaseDuration = 0;
49209      primaryChildFragment.treeBaseDuration = 0;
49210    }
49211
49212    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);
49213  } else {
49214    primaryChildFragment = createFiberFromOffscreen(primaryChildProps, mode, NoLanes, null);
49215    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null);
49216  }
49217
49218  primaryChildFragment.return = workInProgress;
49219  fallbackChildFragment.return = workInProgress;
49220  primaryChildFragment.sibling = fallbackChildFragment;
49221  workInProgress.child = primaryChildFragment;
49222  return fallbackChildFragment;
49223}
49224
49225function createWorkInProgressOffscreenFiber(current, offscreenProps) {
49226  // The props argument to `createWorkInProgress` is `any` typed, so we use this
49227  // wrapper function to constrain it.
49228  return createWorkInProgress(current, offscreenProps);
49229}
49230
49231function updateSuspensePrimaryChildren(current, workInProgress, primaryChildren, renderLanes) {
49232  var currentPrimaryChildFragment = current.child;
49233  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;
49234  var primaryChildFragment = createWorkInProgressOffscreenFiber(currentPrimaryChildFragment, {
49235    mode: 'visible',
49236    children: primaryChildren
49237  });
49238
49239  if ((workInProgress.mode & BlockingMode) === NoMode) {
49240    primaryChildFragment.lanes = renderLanes;
49241  }
49242
49243  primaryChildFragment.return = workInProgress;
49244  primaryChildFragment.sibling = null;
49245
49246  if (currentFallbackChildFragment !== null) {
49247    // Delete the fallback child fragment
49248    currentFallbackChildFragment.nextEffect = null;
49249    currentFallbackChildFragment.flags = Deletion;
49250    workInProgress.firstEffect = workInProgress.lastEffect = currentFallbackChildFragment;
49251  }
49252
49253  workInProgress.child = primaryChildFragment;
49254  return primaryChildFragment;
49255}
49256
49257function updateSuspenseFallbackChildren(current, workInProgress, primaryChildren, fallbackChildren, renderLanes) {
49258  var mode = workInProgress.mode;
49259  var currentPrimaryChildFragment = current.child;
49260  var currentFallbackChildFragment = currentPrimaryChildFragment.sibling;
49261  var primaryChildProps = {
49262    mode: 'hidden',
49263    children: primaryChildren
49264  };
49265  var primaryChildFragment;
49266
49267  if ( // In legacy mode, we commit the primary tree as if it successfully
49268  // completed, even though it's in an inconsistent state.
49269  (mode & BlockingMode) === NoMode && // Make sure we're on the second pass, i.e. the primary child fragment was
49270  // already cloned. In legacy mode, the only case where this isn't true is
49271  // when DevTools forces us to display a fallback; we skip the first render
49272  // pass entirely and go straight to rendering the fallback. (In Concurrent
49273  // Mode, SuspenseList can also trigger this scenario, but this is a legacy-
49274  // only codepath.)
49275  workInProgress.child !== currentPrimaryChildFragment) {
49276    var progressedPrimaryFragment = workInProgress.child;
49277    primaryChildFragment = progressedPrimaryFragment;
49278    primaryChildFragment.childLanes = NoLanes;
49279    primaryChildFragment.pendingProps = primaryChildProps;
49280
49281    if ( workInProgress.mode & ProfileMode) {
49282      // Reset the durations from the first pass so they aren't included in the
49283      // final amounts. This seems counterintuitive, since we're intentionally
49284      // not measuring part of the render phase, but this makes it match what we
49285      // do in Concurrent Mode.
49286      primaryChildFragment.actualDuration = 0;
49287      primaryChildFragment.actualStartTime = -1;
49288      primaryChildFragment.selfBaseDuration = currentPrimaryChildFragment.selfBaseDuration;
49289      primaryChildFragment.treeBaseDuration = currentPrimaryChildFragment.treeBaseDuration;
49290    } // The fallback fiber was added as a deletion effect during the first pass.
49291    // However, since we're going to remain on the fallback, we no longer want
49292    // to delete it. So we need to remove it from the list. Deletions are stored
49293    // on the same list as effects. We want to keep the effects from the primary
49294    // tree. So we copy the primary child fragment's effect list, which does not
49295    // include the fallback deletion effect.
49296
49297
49298    var progressedLastEffect = primaryChildFragment.lastEffect;
49299
49300    if (progressedLastEffect !== null) {
49301      workInProgress.firstEffect = primaryChildFragment.firstEffect;
49302      workInProgress.lastEffect = progressedLastEffect;
49303      progressedLastEffect.nextEffect = null;
49304    } else {
49305      // TODO: Reset this somewhere else? Lol legacy mode is so weird.
49306      workInProgress.firstEffect = workInProgress.lastEffect = null;
49307    }
49308  } else {
49309    primaryChildFragment = createWorkInProgressOffscreenFiber(currentPrimaryChildFragment, primaryChildProps);
49310  }
49311
49312  var fallbackChildFragment;
49313
49314  if (currentFallbackChildFragment !== null) {
49315    fallbackChildFragment = createWorkInProgress(currentFallbackChildFragment, fallbackChildren);
49316  } else {
49317    fallbackChildFragment = createFiberFromFragment(fallbackChildren, mode, renderLanes, null); // Needs a placement effect because the parent (the Suspense boundary) already
49318    // mounted but this is a new fiber.
49319
49320    fallbackChildFragment.flags |= Placement;
49321  }
49322
49323  fallbackChildFragment.return = workInProgress;
49324  primaryChildFragment.return = workInProgress;
49325  primaryChildFragment.sibling = fallbackChildFragment;
49326  workInProgress.child = primaryChildFragment;
49327  return fallbackChildFragment;
49328}
49329
49330function scheduleWorkOnFiber(fiber, renderLanes) {
49331  fiber.lanes = mergeLanes(fiber.lanes, renderLanes);
49332  var alternate = fiber.alternate;
49333
49334  if (alternate !== null) {
49335    alternate.lanes = mergeLanes(alternate.lanes, renderLanes);
49336  }
49337
49338  scheduleWorkOnParentPath(fiber.return, renderLanes);
49339}
49340
49341function propagateSuspenseContextChange(workInProgress, firstChild, renderLanes) {
49342  // Mark any Suspense boundaries with fallbacks as having work to do.
49343  // If they were previously forced into fallbacks, they may now be able
49344  // to unblock.
49345  var node = firstChild;
49346
49347  while (node !== null) {
49348    if (node.tag === SuspenseComponent) {
49349      var state = node.memoizedState;
49350
49351      if (state !== null) {
49352        scheduleWorkOnFiber(node, renderLanes);
49353      }
49354    } else if (node.tag === SuspenseListComponent) {
49355      // If the tail is hidden there might not be an Suspense boundaries
49356      // to schedule work on. In this case we have to schedule it on the
49357      // list itself.
49358      // We don't have to traverse to the children of the list since
49359      // the list will propagate the change when it rerenders.
49360      scheduleWorkOnFiber(node, renderLanes);
49361    } else if (node.child !== null) {
49362      node.child.return = node;
49363      node = node.child;
49364      continue;
49365    }
49366
49367    if (node === workInProgress) {
49368      return;
49369    }
49370
49371    while (node.sibling === null) {
49372      if (node.return === null || node.return === workInProgress) {
49373        return;
49374      }
49375
49376      node = node.return;
49377    }
49378
49379    node.sibling.return = node.return;
49380    node = node.sibling;
49381  }
49382}
49383
49384function findLastContentRow(firstChild) {
49385  // This is going to find the last row among these children that is already
49386  // showing content on the screen, as opposed to being in fallback state or
49387  // new. If a row has multiple Suspense boundaries, any of them being in the
49388  // fallback state, counts as the whole row being in a fallback state.
49389  // Note that the "rows" will be workInProgress, but any nested children
49390  // will still be current since we haven't rendered them yet. The mounted
49391  // order may not be the same as the new order. We use the new order.
49392  var row = firstChild;
49393  var lastContentRow = null;
49394
49395  while (row !== null) {
49396    var currentRow = row.alternate; // New rows can't be content rows.
49397
49398    if (currentRow !== null && findFirstSuspended(currentRow) === null) {
49399      lastContentRow = row;
49400    }
49401
49402    row = row.sibling;
49403  }
49404
49405  return lastContentRow;
49406}
49407
49408function validateRevealOrder(revealOrder) {
49409  {
49410    if (revealOrder !== undefined && revealOrder !== 'forwards' && revealOrder !== 'backwards' && revealOrder !== 'together' && !didWarnAboutRevealOrder[revealOrder]) {
49411      didWarnAboutRevealOrder[revealOrder] = true;
49412
49413      if (typeof revealOrder === 'string') {
49414        switch (revealOrder.toLowerCase()) {
49415          case 'together':
49416          case 'forwards':
49417          case 'backwards':
49418            {
49419              error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'Use lowercase "%s" instead.', revealOrder, revealOrder.toLowerCase());
49420
49421              break;
49422            }
49423
49424          case 'forward':
49425          case 'backward':
49426            {
49427              error('"%s" is not a valid value for revealOrder on <SuspenseList />. ' + 'React uses the -s suffix in the spelling. Use "%ss" instead.', revealOrder, revealOrder.toLowerCase());
49428
49429              break;
49430            }
49431
49432          default:
49433            error('"%s" is not a supported revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder);
49434
49435            break;
49436        }
49437      } else {
49438        error('%s is not a supported value for revealOrder on <SuspenseList />. ' + 'Did you mean "together", "forwards" or "backwards"?', revealOrder);
49439      }
49440    }
49441  }
49442}
49443
49444function validateTailOptions(tailMode, revealOrder) {
49445  {
49446    if (tailMode !== undefined && !didWarnAboutTailOptions[tailMode]) {
49447      if (tailMode !== 'collapsed' && tailMode !== 'hidden') {
49448        didWarnAboutTailOptions[tailMode] = true;
49449
49450        error('"%s" is not a supported value for tail on <SuspenseList />. ' + 'Did you mean "collapsed" or "hidden"?', tailMode);
49451      } else if (revealOrder !== 'forwards' && revealOrder !== 'backwards') {
49452        didWarnAboutTailOptions[tailMode] = true;
49453
49454        error('<SuspenseList tail="%s" /> is only valid if revealOrder is ' + '"forwards" or "backwards". ' + 'Did you mean to specify revealOrder="forwards"?', tailMode);
49455      }
49456    }
49457  }
49458}
49459
49460function validateSuspenseListNestedChild(childSlot, index) {
49461  {
49462    var isArray = Array.isArray(childSlot);
49463    var isIterable = !isArray && typeof getIteratorFn(childSlot) === 'function';
49464
49465    if (isArray || isIterable) {
49466      var type = isArray ? 'array' : 'iterable';
49467
49468      error('A nested %s was passed to row #%s in <SuspenseList />. Wrap it in ' + 'an additional SuspenseList to configure its revealOrder: ' + '<SuspenseList revealOrder=...> ... ' + '<SuspenseList revealOrder=...>{%s}</SuspenseList> ... ' + '</SuspenseList>', type, index, type);
49469
49470      return false;
49471    }
49472  }
49473
49474  return true;
49475}
49476
49477function validateSuspenseListChildren(children, revealOrder) {
49478  {
49479    if ((revealOrder === 'forwards' || revealOrder === 'backwards') && children !== undefined && children !== null && children !== false) {
49480      if (Array.isArray(children)) {
49481        for (var i = 0; i < children.length; i++) {
49482          if (!validateSuspenseListNestedChild(children[i], i)) {
49483            return;
49484          }
49485        }
49486      } else {
49487        var iteratorFn = getIteratorFn(children);
49488
49489        if (typeof iteratorFn === 'function') {
49490          var childrenIterator = iteratorFn.call(children);
49491
49492          if (childrenIterator) {
49493            var step = childrenIterator.next();
49494            var _i = 0;
49495
49496            for (; !step.done; step = childrenIterator.next()) {
49497              if (!validateSuspenseListNestedChild(step.value, _i)) {
49498                return;
49499              }
49500
49501              _i++;
49502            }
49503          }
49504        } else {
49505          error('A single row was passed to a <SuspenseList revealOrder="%s" />. ' + 'This is not useful since it needs multiple rows. ' + 'Did you mean to pass multiple children or an array?', revealOrder);
49506        }
49507      }
49508    }
49509  }
49510}
49511
49512function initSuspenseListRenderState(workInProgress, isBackwards, tail, lastContentRow, tailMode, lastEffectBeforeRendering) {
49513  var renderState = workInProgress.memoizedState;
49514
49515  if (renderState === null) {
49516    workInProgress.memoizedState = {
49517      isBackwards: isBackwards,
49518      rendering: null,
49519      renderingStartTime: 0,
49520      last: lastContentRow,
49521      tail: tail,
49522      tailMode: tailMode,
49523      lastEffect: lastEffectBeforeRendering
49524    };
49525  } else {
49526    // We can reuse the existing object from previous renders.
49527    renderState.isBackwards = isBackwards;
49528    renderState.rendering = null;
49529    renderState.renderingStartTime = 0;
49530    renderState.last = lastContentRow;
49531    renderState.tail = tail;
49532    renderState.tailMode = tailMode;
49533    renderState.lastEffect = lastEffectBeforeRendering;
49534  }
49535} // This can end up rendering this component multiple passes.
49536// The first pass splits the children fibers into two sets. A head and tail.
49537// We first render the head. If anything is in fallback state, we do another
49538// pass through beginWork to rerender all children (including the tail) with
49539// the force suspend context. If the first render didn't have anything in
49540// in fallback state. Then we render each row in the tail one-by-one.
49541// That happens in the completeWork phase without going back to beginWork.
49542
49543
49544function updateSuspenseListComponent(current, workInProgress, renderLanes) {
49545  var nextProps = workInProgress.pendingProps;
49546  var revealOrder = nextProps.revealOrder;
49547  var tailMode = nextProps.tail;
49548  var newChildren = nextProps.children;
49549  validateRevealOrder(revealOrder);
49550  validateTailOptions(tailMode, revealOrder);
49551  validateSuspenseListChildren(newChildren, revealOrder);
49552  reconcileChildren(current, workInProgress, newChildren, renderLanes);
49553  var suspenseContext = suspenseStackCursor.current;
49554  var shouldForceFallback = hasSuspenseContext(suspenseContext, ForceSuspenseFallback);
49555
49556  if (shouldForceFallback) {
49557    suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
49558    workInProgress.flags |= DidCapture;
49559  } else {
49560    var didSuspendBefore = current !== null && (current.flags & DidCapture) !== NoFlags;
49561
49562    if (didSuspendBefore) {
49563      // If we previously forced a fallback, we need to schedule work
49564      // on any nested boundaries to let them know to try to render
49565      // again. This is the same as context updating.
49566      propagateSuspenseContextChange(workInProgress, workInProgress.child, renderLanes);
49567    }
49568
49569    suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
49570  }
49571
49572  pushSuspenseContext(workInProgress, suspenseContext);
49573
49574  if ((workInProgress.mode & BlockingMode) === NoMode) {
49575    // In legacy mode, SuspenseList doesn't work so we just
49576    // use make it a noop by treating it as the default revealOrder.
49577    workInProgress.memoizedState = null;
49578  } else {
49579    switch (revealOrder) {
49580      case 'forwards':
49581        {
49582          var lastContentRow = findLastContentRow(workInProgress.child);
49583          var tail;
49584
49585          if (lastContentRow === null) {
49586            // The whole list is part of the tail.
49587            // TODO: We could fast path by just rendering the tail now.
49588            tail = workInProgress.child;
49589            workInProgress.child = null;
49590          } else {
49591            // Disconnect the tail rows after the content row.
49592            // We're going to render them separately later.
49593            tail = lastContentRow.sibling;
49594            lastContentRow.sibling = null;
49595          }
49596
49597          initSuspenseListRenderState(workInProgress, false, // isBackwards
49598          tail, lastContentRow, tailMode, workInProgress.lastEffect);
49599          break;
49600        }
49601
49602      case 'backwards':
49603        {
49604          // We're going to find the first row that has existing content.
49605          // At the same time we're going to reverse the list of everything
49606          // we pass in the meantime. That's going to be our tail in reverse
49607          // order.
49608          var _tail = null;
49609          var row = workInProgress.child;
49610          workInProgress.child = null;
49611
49612          while (row !== null) {
49613            var currentRow = row.alternate; // New rows can't be content rows.
49614
49615            if (currentRow !== null && findFirstSuspended(currentRow) === null) {
49616              // This is the beginning of the main content.
49617              workInProgress.child = row;
49618              break;
49619            }
49620
49621            var nextRow = row.sibling;
49622            row.sibling = _tail;
49623            _tail = row;
49624            row = nextRow;
49625          } // TODO: If workInProgress.child is null, we can continue on the tail immediately.
49626
49627
49628          initSuspenseListRenderState(workInProgress, true, // isBackwards
49629          _tail, null, // last
49630          tailMode, workInProgress.lastEffect);
49631          break;
49632        }
49633
49634      case 'together':
49635        {
49636          initSuspenseListRenderState(workInProgress, false, // isBackwards
49637          null, // tail
49638          null, // last
49639          undefined, workInProgress.lastEffect);
49640          break;
49641        }
49642
49643      default:
49644        {
49645          // The default reveal order is the same as not having
49646          // a boundary.
49647          workInProgress.memoizedState = null;
49648        }
49649    }
49650  }
49651
49652  return workInProgress.child;
49653}
49654
49655function updatePortalComponent(current, workInProgress, renderLanes) {
49656  pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
49657  var nextChildren = workInProgress.pendingProps;
49658
49659  if (current === null) {
49660    // Portals are special because we don't append the children during mount
49661    // but at commit. Therefore we need to track insertions which the normal
49662    // flow doesn't do during mount. This doesn't happen at the root because
49663    // the root always starts with a "current" with a null child.
49664    // TODO: Consider unifying this with how the root works.
49665    workInProgress.child = reconcileChildFibers(workInProgress, null, nextChildren, renderLanes);
49666  } else {
49667    reconcileChildren(current, workInProgress, nextChildren, renderLanes);
49668  }
49669
49670  return workInProgress.child;
49671}
49672
49673var hasWarnedAboutUsingNoValuePropOnContextProvider = false;
49674
49675function updateContextProvider(current, workInProgress, renderLanes) {
49676  var providerType = workInProgress.type;
49677  var context = providerType._context;
49678  var newProps = workInProgress.pendingProps;
49679  var oldProps = workInProgress.memoizedProps;
49680  var newValue = newProps.value;
49681
49682  {
49683    if (!('value' in newProps)) {
49684      if (!hasWarnedAboutUsingNoValuePropOnContextProvider) {
49685        hasWarnedAboutUsingNoValuePropOnContextProvider = true;
49686
49687        error('The `value` prop is required for the `<Context.Provider>`. Did you misspell it or forget to pass it?');
49688      }
49689    }
49690
49691    var providerPropTypes = workInProgress.type.propTypes;
49692
49693    if (providerPropTypes) {
49694      checkPropTypes(providerPropTypes, newProps, 'prop', 'Context.Provider');
49695    }
49696  }
49697
49698  pushProvider(workInProgress, newValue);
49699
49700  if (oldProps !== null) {
49701    var oldValue = oldProps.value;
49702    var changedBits = calculateChangedBits(context, newValue, oldValue);
49703
49704    if (changedBits === 0) {
49705      // No change. Bailout early if children are the same.
49706      if (oldProps.children === newProps.children && !hasContextChanged()) {
49707        return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
49708      }
49709    } else {
49710      // The context value changed. Search for matching consumers and schedule
49711      // them to update.
49712      propagateContextChange(workInProgress, context, changedBits, renderLanes);
49713    }
49714  }
49715
49716  var newChildren = newProps.children;
49717  reconcileChildren(current, workInProgress, newChildren, renderLanes);
49718  return workInProgress.child;
49719}
49720
49721var hasWarnedAboutUsingContextAsConsumer = false;
49722
49723function updateContextConsumer(current, workInProgress, renderLanes) {
49724  var context = workInProgress.type; // The logic below for Context differs depending on PROD or DEV mode. In
49725  // DEV mode, we create a separate object for Context.Consumer that acts
49726  // like a proxy to Context. This proxy object adds unnecessary code in PROD
49727  // so we use the old behaviour (Context.Consumer references Context) to
49728  // reduce size and overhead. The separate object references context via
49729  // a property called "_context", which also gives us the ability to check
49730  // in DEV mode if this property exists or not and warn if it does not.
49731
49732  {
49733    if (context._context === undefined) {
49734      // This may be because it's a Context (rather than a Consumer).
49735      // Or it may be because it's older React where they're the same thing.
49736      // We only want to warn if we're sure it's a new React.
49737      if (context !== context.Consumer) {
49738        if (!hasWarnedAboutUsingContextAsConsumer) {
49739          hasWarnedAboutUsingContextAsConsumer = true;
49740
49741          error('Rendering <Context> directly is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
49742        }
49743      }
49744    } else {
49745      context = context._context;
49746    }
49747  }
49748
49749  var newProps = workInProgress.pendingProps;
49750  var render = newProps.children;
49751
49752  {
49753    if (typeof render !== 'function') {
49754      error('A context consumer was rendered with multiple children, or a child ' + "that isn't a function. A context consumer expects a single child " + 'that is a function. If you did pass a function, make sure there ' + 'is no trailing or leading whitespace around it.');
49755    }
49756  }
49757
49758  prepareToReadContext(workInProgress, renderLanes);
49759  var newValue = readContext(context, newProps.unstable_observedBits);
49760  var newChildren;
49761
49762  {
49763    ReactCurrentOwner$1.current = workInProgress;
49764    setIsRendering(true);
49765    newChildren = render(newValue);
49766    setIsRendering(false);
49767  } // React DevTools reads this flag.
49768
49769
49770  workInProgress.flags |= PerformedWork;
49771  reconcileChildren(current, workInProgress, newChildren, renderLanes);
49772  return workInProgress.child;
49773}
49774
49775function markWorkInProgressReceivedUpdate() {
49776  didReceiveUpdate = true;
49777}
49778
49779function bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes) {
49780  if (current !== null) {
49781    // Reuse previous dependencies
49782    workInProgress.dependencies = current.dependencies;
49783  }
49784
49785  {
49786    // Don't update "base" render times for bailouts.
49787    stopProfilerTimerIfRunning();
49788  }
49789
49790  markSkippedUpdateLanes(workInProgress.lanes); // Check if the children have any pending work.
49791
49792  if (!includesSomeLane(renderLanes, workInProgress.childLanes)) {
49793    // The children don't have any work either. We can skip them.
49794    // TODO: Once we add back resuming, we should check if the children are
49795    // a work-in-progress set. If so, we need to transfer their effects.
49796    return null;
49797  } else {
49798    // This fiber doesn't have work, but its subtree does. Clone the child
49799    // fibers and continue.
49800    cloneChildFibers(current, workInProgress);
49801    return workInProgress.child;
49802  }
49803}
49804
49805function remountFiber(current, oldWorkInProgress, newWorkInProgress) {
49806  {
49807    var returnFiber = oldWorkInProgress.return;
49808
49809    if (returnFiber === null) {
49810      throw new Error('Cannot swap the root fiber.');
49811    } // Disconnect from the old current.
49812    // It will get deleted.
49813
49814
49815    current.alternate = null;
49816    oldWorkInProgress.alternate = null; // Connect to the new tree.
49817
49818    newWorkInProgress.index = oldWorkInProgress.index;
49819    newWorkInProgress.sibling = oldWorkInProgress.sibling;
49820    newWorkInProgress.return = oldWorkInProgress.return;
49821    newWorkInProgress.ref = oldWorkInProgress.ref; // Replace the child/sibling pointers above it.
49822
49823    if (oldWorkInProgress === returnFiber.child) {
49824      returnFiber.child = newWorkInProgress;
49825    } else {
49826      var prevSibling = returnFiber.child;
49827
49828      if (prevSibling === null) {
49829        throw new Error('Expected parent to have a child.');
49830      }
49831
49832      while (prevSibling.sibling !== oldWorkInProgress) {
49833        prevSibling = prevSibling.sibling;
49834
49835        if (prevSibling === null) {
49836          throw new Error('Expected to find the previous sibling.');
49837        }
49838      }
49839
49840      prevSibling.sibling = newWorkInProgress;
49841    } // Delete the old fiber and place the new one.
49842    // Since the old fiber is disconnected, we have to schedule it manually.
49843
49844
49845    var last = returnFiber.lastEffect;
49846
49847    if (last !== null) {
49848      last.nextEffect = current;
49849      returnFiber.lastEffect = current;
49850    } else {
49851      returnFiber.firstEffect = returnFiber.lastEffect = current;
49852    }
49853
49854    current.nextEffect = null;
49855    current.flags = Deletion;
49856    newWorkInProgress.flags |= Placement; // Restart work from the new fiber.
49857
49858    return newWorkInProgress;
49859  }
49860}
49861
49862function beginWork(current, workInProgress, renderLanes) {
49863  var updateLanes = workInProgress.lanes;
49864
49865  {
49866    if (workInProgress._debugNeedsRemount && current !== null) {
49867      // This will restart the begin phase with a new fiber.
49868      return remountFiber(current, workInProgress, createFiberFromTypeAndProps(workInProgress.type, workInProgress.key, workInProgress.pendingProps, workInProgress._debugOwner || null, workInProgress.mode, workInProgress.lanes));
49869    }
49870  }
49871
49872  if (current !== null) {
49873    var oldProps = current.memoizedProps;
49874    var newProps = workInProgress.pendingProps;
49875
49876    if (oldProps !== newProps || hasContextChanged() || ( // Force a re-render if the implementation changed due to hot reload:
49877     workInProgress.type !== current.type )) {
49878      // If props or context changed, mark the fiber as having performed work.
49879      // This may be unset if the props are determined to be equal later (memo).
49880      didReceiveUpdate = true;
49881    } else if (!includesSomeLane(renderLanes, updateLanes)) {
49882      didReceiveUpdate = false; // This fiber does not have any pending work. Bailout without entering
49883      // the begin phase. There's still some bookkeeping we that needs to be done
49884      // in this optimized path, mostly pushing stuff onto the stack.
49885
49886      switch (workInProgress.tag) {
49887        case HostRoot:
49888          pushHostRootContext(workInProgress);
49889          resetHydrationState();
49890          break;
49891
49892        case HostComponent:
49893          pushHostContext(workInProgress);
49894          break;
49895
49896        case ClassComponent:
49897          {
49898            var Component = workInProgress.type;
49899
49900            if (isContextProvider(Component)) {
49901              pushContextProvider(workInProgress);
49902            }
49903
49904            break;
49905          }
49906
49907        case HostPortal:
49908          pushHostContainer(workInProgress, workInProgress.stateNode.containerInfo);
49909          break;
49910
49911        case ContextProvider:
49912          {
49913            var newValue = workInProgress.memoizedProps.value;
49914            pushProvider(workInProgress, newValue);
49915            break;
49916          }
49917
49918        case Profiler:
49919          {
49920            // Profiler should only call onRender when one of its descendants actually rendered.
49921            var hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);
49922
49923            if (hasChildWork) {
49924              workInProgress.flags |= Update;
49925            } // Reset effect durations for the next eventual effect phase.
49926            // These are reset during render to allow the DevTools commit hook a chance to read them,
49927
49928
49929            var stateNode = workInProgress.stateNode;
49930            stateNode.effectDuration = 0;
49931            stateNode.passiveEffectDuration = 0;
49932          }
49933
49934          break;
49935
49936        case SuspenseComponent:
49937          {
49938            var state = workInProgress.memoizedState;
49939
49940            if (state !== null) {
49941              // whether to retry the primary children, or to skip over it and
49942              // go straight to the fallback. Check the priority of the primary
49943              // child fragment.
49944
49945
49946              var primaryChildFragment = workInProgress.child;
49947              var primaryChildLanes = primaryChildFragment.childLanes;
49948
49949              if (includesSomeLane(renderLanes, primaryChildLanes)) {
49950                // The primary children have pending work. Use the normal path
49951                // to attempt to render the primary children again.
49952                return updateSuspenseComponent(current, workInProgress, renderLanes);
49953              } else {
49954                // The primary child fragment does not have pending work marked
49955                // on it
49956                pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current)); // The primary children do not have pending work with sufficient
49957                // priority. Bailout.
49958
49959                var child = bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
49960
49961                if (child !== null) {
49962                  // The fallback children have pending work. Skip over the
49963                  // primary children and work on the fallback.
49964                  return child.sibling;
49965                } else {
49966                  return null;
49967                }
49968              }
49969            } else {
49970              pushSuspenseContext(workInProgress, setDefaultShallowSuspenseContext(suspenseStackCursor.current));
49971            }
49972
49973            break;
49974          }
49975
49976        case SuspenseListComponent:
49977          {
49978            var didSuspendBefore = (current.flags & DidCapture) !== NoFlags;
49979
49980            var _hasChildWork = includesSomeLane(renderLanes, workInProgress.childLanes);
49981
49982            if (didSuspendBefore) {
49983              if (_hasChildWork) {
49984                // If something was in fallback state last time, and we have all the
49985                // same children then we're still in progressive loading state.
49986                // Something might get unblocked by state updates or retries in the
49987                // tree which will affect the tail. So we need to use the normal
49988                // path to compute the correct tail.
49989                return updateSuspenseListComponent(current, workInProgress, renderLanes);
49990              } // If none of the children had any work, that means that none of
49991              // them got retried so they'll still be blocked in the same way
49992              // as before. We can fast bail out.
49993
49994
49995              workInProgress.flags |= DidCapture;
49996            } // If nothing suspended before and we're rendering the same children,
49997            // then the tail doesn't matter. Anything new that suspends will work
49998            // in the "together" mode, so we can continue from the state we had.
49999
50000
50001            var renderState = workInProgress.memoizedState;
50002
50003            if (renderState !== null) {
50004              // Reset to the "together" mode in case we've started a different
50005              // update in the past but didn't complete it.
50006              renderState.rendering = null;
50007              renderState.tail = null;
50008              renderState.lastEffect = null;
50009            }
50010
50011            pushSuspenseContext(workInProgress, suspenseStackCursor.current);
50012
50013            if (_hasChildWork) {
50014              break;
50015            } else {
50016              // If none of the children had any work, that means that none of
50017              // them got retried so they'll still be blocked in the same way
50018              // as before. We can fast bail out.
50019              return null;
50020            }
50021          }
50022
50023        case OffscreenComponent:
50024        case LegacyHiddenComponent:
50025          {
50026            // Need to check if the tree still needs to be deferred. This is
50027            // almost identical to the logic used in the normal update path,
50028            // so we'll just enter that. The only difference is we'll bail out
50029            // at the next level instead of this one, because the child props
50030            // have not changed. Which is fine.
50031            // TODO: Probably should refactor `beginWork` to split the bailout
50032            // path from the normal path. I'm tempted to do a labeled break here
50033            // but I won't :)
50034            workInProgress.lanes = NoLanes;
50035            return updateOffscreenComponent(current, workInProgress, renderLanes);
50036          }
50037      }
50038
50039      return bailoutOnAlreadyFinishedWork(current, workInProgress, renderLanes);
50040    } else {
50041      if ((current.flags & ForceUpdateForLegacySuspense) !== NoFlags) {
50042        // This is a special case that only exists for legacy mode.
50043        // See https://github.com/facebook/react/pull/19216.
50044        didReceiveUpdate = true;
50045      } else {
50046        // An update was scheduled on this fiber, but there are no new props
50047        // nor legacy context. Set this to false. If an update queue or context
50048        // consumer produces a changed value, it will set this to true. Otherwise,
50049        // the component will assume the children have not changed and bail out.
50050        didReceiveUpdate = false;
50051      }
50052    }
50053  } else {
50054    didReceiveUpdate = false;
50055  } // Before entering the begin phase, clear pending update priority.
50056  // TODO: This assumes that we're about to evaluate the component and process
50057  // the update queue. However, there's an exception: SimpleMemoComponent
50058  // sometimes bails out later in the begin phase. This indicates that we should
50059  // move this assignment out of the common path and into each branch.
50060
50061
50062  workInProgress.lanes = NoLanes;
50063
50064  switch (workInProgress.tag) {
50065    case IndeterminateComponent:
50066      {
50067        return mountIndeterminateComponent(current, workInProgress, workInProgress.type, renderLanes);
50068      }
50069
50070    case LazyComponent:
50071      {
50072        var elementType = workInProgress.elementType;
50073        return mountLazyComponent(current, workInProgress, elementType, updateLanes, renderLanes);
50074      }
50075
50076    case FunctionComponent:
50077      {
50078        var _Component = workInProgress.type;
50079        var unresolvedProps = workInProgress.pendingProps;
50080        var resolvedProps = workInProgress.elementType === _Component ? unresolvedProps : resolveDefaultProps(_Component, unresolvedProps);
50081        return updateFunctionComponent(current, workInProgress, _Component, resolvedProps, renderLanes);
50082      }
50083
50084    case ClassComponent:
50085      {
50086        var _Component2 = workInProgress.type;
50087        var _unresolvedProps = workInProgress.pendingProps;
50088
50089        var _resolvedProps = workInProgress.elementType === _Component2 ? _unresolvedProps : resolveDefaultProps(_Component2, _unresolvedProps);
50090
50091        return updateClassComponent(current, workInProgress, _Component2, _resolvedProps, renderLanes);
50092      }
50093
50094    case HostRoot:
50095      return updateHostRoot(current, workInProgress, renderLanes);
50096
50097    case HostComponent:
50098      return updateHostComponent(current, workInProgress, renderLanes);
50099
50100    case HostText:
50101      return updateHostText(current, workInProgress);
50102
50103    case SuspenseComponent:
50104      return updateSuspenseComponent(current, workInProgress, renderLanes);
50105
50106    case HostPortal:
50107      return updatePortalComponent(current, workInProgress, renderLanes);
50108
50109    case ForwardRef:
50110      {
50111        var type = workInProgress.type;
50112        var _unresolvedProps2 = workInProgress.pendingProps;
50113
50114        var _resolvedProps2 = workInProgress.elementType === type ? _unresolvedProps2 : resolveDefaultProps(type, _unresolvedProps2);
50115
50116        return updateForwardRef(current, workInProgress, type, _resolvedProps2, renderLanes);
50117      }
50118
50119    case Fragment:
50120      return updateFragment(current, workInProgress, renderLanes);
50121
50122    case Mode:
50123      return updateMode(current, workInProgress, renderLanes);
50124
50125    case Profiler:
50126      return updateProfiler(current, workInProgress, renderLanes);
50127
50128    case ContextProvider:
50129      return updateContextProvider(current, workInProgress, renderLanes);
50130
50131    case ContextConsumer:
50132      return updateContextConsumer(current, workInProgress, renderLanes);
50133
50134    case MemoComponent:
50135      {
50136        var _type2 = workInProgress.type;
50137        var _unresolvedProps3 = workInProgress.pendingProps; // Resolve outer props first, then resolve inner props.
50138
50139        var _resolvedProps3 = resolveDefaultProps(_type2, _unresolvedProps3);
50140
50141        {
50142          if (workInProgress.type !== workInProgress.elementType) {
50143            var outerPropTypes = _type2.propTypes;
50144
50145            if (outerPropTypes) {
50146              checkPropTypes(outerPropTypes, _resolvedProps3, // Resolved for outer only
50147              'prop', getComponentName(_type2));
50148            }
50149          }
50150        }
50151
50152        _resolvedProps3 = resolveDefaultProps(_type2.type, _resolvedProps3);
50153        return updateMemoComponent(current, workInProgress, _type2, _resolvedProps3, updateLanes, renderLanes);
50154      }
50155
50156    case SimpleMemoComponent:
50157      {
50158        return updateSimpleMemoComponent(current, workInProgress, workInProgress.type, workInProgress.pendingProps, updateLanes, renderLanes);
50159      }
50160
50161    case IncompleteClassComponent:
50162      {
50163        var _Component3 = workInProgress.type;
50164        var _unresolvedProps4 = workInProgress.pendingProps;
50165
50166        var _resolvedProps4 = workInProgress.elementType === _Component3 ? _unresolvedProps4 : resolveDefaultProps(_Component3, _unresolvedProps4);
50167
50168        return mountIncompleteClassComponent(current, workInProgress, _Component3, _resolvedProps4, renderLanes);
50169      }
50170
50171    case SuspenseListComponent:
50172      {
50173        return updateSuspenseListComponent(current, workInProgress, renderLanes);
50174      }
50175
50176    case FundamentalComponent:
50177      {
50178
50179        break;
50180      }
50181
50182    case ScopeComponent:
50183      {
50184
50185        break;
50186      }
50187
50188    case Block:
50189      {
50190
50191        break;
50192      }
50193
50194    case OffscreenComponent:
50195      {
50196        return updateOffscreenComponent(current, workInProgress, renderLanes);
50197      }
50198
50199    case LegacyHiddenComponent:
50200      {
50201        return updateLegacyHiddenComponent(current, workInProgress, renderLanes);
50202      }
50203  }
50204
50205  {
50206    {
50207      throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." );
50208    }
50209  }
50210}
50211
50212function markUpdate(workInProgress) {
50213  // Tag the fiber with an update effect. This turns a Placement into
50214  // a PlacementAndUpdate.
50215  workInProgress.flags |= Update;
50216}
50217
50218function markRef$1(workInProgress) {
50219  workInProgress.flags |= Ref;
50220}
50221
50222var appendAllChildren;
50223var updateHostContainer;
50224var updateHostComponent$1;
50225var updateHostText$1;
50226
50227{
50228  // Mutation mode
50229  appendAllChildren = function (parent, workInProgress, needsVisibilityToggle, isHidden) {
50230    // We only have the top Fiber that was created but we need recurse down its
50231    // children to find all the terminal nodes.
50232    var node = workInProgress.child;
50233
50234    while (node !== null) {
50235      if (node.tag === HostComponent || node.tag === HostText) {
50236        appendInitialChild(parent, node.stateNode);
50237      } else if (node.tag === HostPortal) ; else if (node.child !== null) {
50238        node.child.return = node;
50239        node = node.child;
50240        continue;
50241      }
50242
50243      if (node === workInProgress) {
50244        return;
50245      }
50246
50247      while (node.sibling === null) {
50248        if (node.return === null || node.return === workInProgress) {
50249          return;
50250        }
50251
50252        node = node.return;
50253      }
50254
50255      node.sibling.return = node.return;
50256      node = node.sibling;
50257    }
50258  };
50259
50260  updateHostContainer = function (workInProgress) {// Noop
50261  };
50262
50263  updateHostComponent$1 = function (current, workInProgress, type, newProps, rootContainerInstance) {
50264    // If we have an alternate, that means this is an update and we need to
50265    // schedule a side-effect to do the updates.
50266    var oldProps = current.memoizedProps;
50267
50268    if (oldProps === newProps) {
50269      // In mutation mode, this is sufficient for a bailout because
50270      // we won't touch this node even if children changed.
50271      return;
50272    } // If we get updated because one of our children updated, we don't
50273    // have newProps so we'll have to reuse them.
50274    // TODO: Split the update API as separate for the props vs. children.
50275    // Even better would be if children weren't special cased at all tho.
50276
50277
50278    var instance = workInProgress.stateNode;
50279    var currentHostContext = getHostContext(); // TODO: Experiencing an error where oldProps is null. Suggests a host
50280    // component is hitting the resume path. Figure out why. Possibly
50281    // related to `hidden`.
50282
50283    var updatePayload = prepareUpdate(instance, type, oldProps, newProps, rootContainerInstance, currentHostContext); // TODO: Type this specific to this type of component.
50284
50285    workInProgress.updateQueue = updatePayload; // If the update payload indicates that there is a change or if there
50286    // is a new ref we mark this as an update. All the work is done in commitWork.
50287
50288    if (updatePayload) {
50289      markUpdate(workInProgress);
50290    }
50291  };
50292
50293  updateHostText$1 = function (current, workInProgress, oldText, newText) {
50294    // If the text differs, mark it as an update. All the work in done in commitWork.
50295    if (oldText !== newText) {
50296      markUpdate(workInProgress);
50297    }
50298  };
50299}
50300
50301function cutOffTailIfNeeded(renderState, hasRenderedATailFallback) {
50302  if (getIsHydrating()) {
50303    // If we're hydrating, we should consume as many items as we can
50304    // so we don't leave any behind.
50305    return;
50306  }
50307
50308  switch (renderState.tailMode) {
50309    case 'hidden':
50310      {
50311        // Any insertions at the end of the tail list after this point
50312        // should be invisible. If there are already mounted boundaries
50313        // anything before them are not considered for collapsing.
50314        // Therefore we need to go through the whole tail to find if
50315        // there are any.
50316        var tailNode = renderState.tail;
50317        var lastTailNode = null;
50318
50319        while (tailNode !== null) {
50320          if (tailNode.alternate !== null) {
50321            lastTailNode = tailNode;
50322          }
50323
50324          tailNode = tailNode.sibling;
50325        } // Next we're simply going to delete all insertions after the
50326        // last rendered item.
50327
50328
50329        if (lastTailNode === null) {
50330          // All remaining items in the tail are insertions.
50331          renderState.tail = null;
50332        } else {
50333          // Detach the insertion after the last node that was already
50334          // inserted.
50335          lastTailNode.sibling = null;
50336        }
50337
50338        break;
50339      }
50340
50341    case 'collapsed':
50342      {
50343        // Any insertions at the end of the tail list after this point
50344        // should be invisible. If there are already mounted boundaries
50345        // anything before them are not considered for collapsing.
50346        // Therefore we need to go through the whole tail to find if
50347        // there are any.
50348        var _tailNode = renderState.tail;
50349        var _lastTailNode = null;
50350
50351        while (_tailNode !== null) {
50352          if (_tailNode.alternate !== null) {
50353            _lastTailNode = _tailNode;
50354          }
50355
50356          _tailNode = _tailNode.sibling;
50357        } // Next we're simply going to delete all insertions after the
50358        // last rendered item.
50359
50360
50361        if (_lastTailNode === null) {
50362          // All remaining items in the tail are insertions.
50363          if (!hasRenderedATailFallback && renderState.tail !== null) {
50364            // We suspended during the head. We want to show at least one
50365            // row at the tail. So we'll keep on and cut off the rest.
50366            renderState.tail.sibling = null;
50367          } else {
50368            renderState.tail = null;
50369          }
50370        } else {
50371          // Detach the insertion after the last node that was already
50372          // inserted.
50373          _lastTailNode.sibling = null;
50374        }
50375
50376        break;
50377      }
50378  }
50379}
50380
50381function completeWork(current, workInProgress, renderLanes) {
50382  var newProps = workInProgress.pendingProps;
50383
50384  switch (workInProgress.tag) {
50385    case IndeterminateComponent:
50386    case LazyComponent:
50387    case SimpleMemoComponent:
50388    case FunctionComponent:
50389    case ForwardRef:
50390    case Fragment:
50391    case Mode:
50392    case Profiler:
50393    case ContextConsumer:
50394    case MemoComponent:
50395      return null;
50396
50397    case ClassComponent:
50398      {
50399        var Component = workInProgress.type;
50400
50401        if (isContextProvider(Component)) {
50402          popContext(workInProgress);
50403        }
50404
50405        return null;
50406      }
50407
50408    case HostRoot:
50409      {
50410        popHostContainer(workInProgress);
50411        popTopLevelContextObject(workInProgress);
50412        resetWorkInProgressVersions();
50413        var fiberRoot = workInProgress.stateNode;
50414
50415        if (fiberRoot.pendingContext) {
50416          fiberRoot.context = fiberRoot.pendingContext;
50417          fiberRoot.pendingContext = null;
50418        }
50419
50420        if (current === null || current.child === null) {
50421          // If we hydrated, pop so that we can delete any remaining children
50422          // that weren't hydrated.
50423          var wasHydrated = popHydrationState(workInProgress);
50424
50425          if (wasHydrated) {
50426            // If we hydrated, then we'll need to schedule an update for
50427            // the commit side-effects on the root.
50428            markUpdate(workInProgress);
50429          } else if (!fiberRoot.hydrate) {
50430            // Schedule an effect to clear this container at the start of the next commit.
50431            // This handles the case of React rendering into a container with previous children.
50432            // It's also safe to do for updates too, because current.child would only be null
50433            // if the previous render was null (so the the container would already be empty).
50434            workInProgress.flags |= Snapshot;
50435          }
50436        }
50437
50438        updateHostContainer(workInProgress);
50439        return null;
50440      }
50441
50442    case HostComponent:
50443      {
50444        popHostContext(workInProgress);
50445        var rootContainerInstance = getRootHostContainer();
50446        var type = workInProgress.type;
50447
50448        if (current !== null && workInProgress.stateNode != null) {
50449          updateHostComponent$1(current, workInProgress, type, newProps, rootContainerInstance);
50450
50451          if (current.ref !== workInProgress.ref) {
50452            markRef$1(workInProgress);
50453          }
50454        } else {
50455          if (!newProps) {
50456            if (!(workInProgress.stateNode !== null)) {
50457              {
50458                throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." );
50459              }
50460            } // This can happen when we abort work.
50461
50462
50463            return null;
50464          }
50465
50466          var currentHostContext = getHostContext(); // TODO: Move createInstance to beginWork and keep it on a context
50467          // "stack" as the parent. Then append children as we go in beginWork
50468          // or completeWork depending on whether we want to add them top->down or
50469          // bottom->up. Top->down is faster in IE11.
50470
50471          var _wasHydrated = popHydrationState(workInProgress);
50472
50473          if (_wasHydrated) {
50474            // TODO: Move this and createInstance step into the beginPhase
50475            // to consolidate.
50476            if (prepareToHydrateHostInstance(workInProgress, rootContainerInstance, currentHostContext)) {
50477              // If changes to the hydrated node need to be applied at the
50478              // commit-phase we mark this as such.
50479              markUpdate(workInProgress);
50480            }
50481          } else {
50482            var instance = createInstance(type, newProps, rootContainerInstance, currentHostContext, workInProgress);
50483            appendAllChildren(instance, workInProgress, false, false);
50484            workInProgress.stateNode = instance; // Certain renderers require commit-time effects for initial mount.
50485            // (eg DOM renderer supports auto-focus for certain elements).
50486            // Make sure such renderers get scheduled for later work.
50487
50488            if (finalizeInitialChildren(instance, type, newProps, rootContainerInstance)) {
50489              markUpdate(workInProgress);
50490            }
50491          }
50492
50493          if (workInProgress.ref !== null) {
50494            // If there is a ref on a host node we need to schedule a callback
50495            markRef$1(workInProgress);
50496          }
50497        }
50498
50499        return null;
50500      }
50501
50502    case HostText:
50503      {
50504        var newText = newProps;
50505
50506        if (current && workInProgress.stateNode != null) {
50507          var oldText = current.memoizedProps; // If we have an alternate, that means this is an update and we need
50508          // to schedule a side-effect to do the updates.
50509
50510          updateHostText$1(current, workInProgress, oldText, newText);
50511        } else {
50512          if (typeof newText !== 'string') {
50513            if (!(workInProgress.stateNode !== null)) {
50514              {
50515                throw Error( "We must have new props for new mounts. This error is likely caused by a bug in React. Please file an issue." );
50516              }
50517            } // This can happen when we abort work.
50518
50519          }
50520
50521          var _rootContainerInstance = getRootHostContainer();
50522
50523          var _currentHostContext = getHostContext();
50524
50525          var _wasHydrated2 = popHydrationState(workInProgress);
50526
50527          if (_wasHydrated2) {
50528            if (prepareToHydrateHostTextInstance(workInProgress)) {
50529              markUpdate(workInProgress);
50530            }
50531          } else {
50532            workInProgress.stateNode = createTextInstance(newText, _rootContainerInstance, _currentHostContext, workInProgress);
50533          }
50534        }
50535
50536        return null;
50537      }
50538
50539    case SuspenseComponent:
50540      {
50541        popSuspenseContext(workInProgress);
50542        var nextState = workInProgress.memoizedState;
50543
50544        if ((workInProgress.flags & DidCapture) !== NoFlags) {
50545          // Something suspended. Re-render with the fallback children.
50546          workInProgress.lanes = renderLanes; // Do not reset the effect list.
50547
50548          if ( (workInProgress.mode & ProfileMode) !== NoMode) {
50549            transferActualDuration(workInProgress);
50550          }
50551
50552          return workInProgress;
50553        }
50554
50555        var nextDidTimeout = nextState !== null;
50556        var prevDidTimeout = false;
50557
50558        if (current === null) {
50559          if (workInProgress.memoizedProps.fallback !== undefined) {
50560            popHydrationState(workInProgress);
50561          }
50562        } else {
50563          var prevState = current.memoizedState;
50564          prevDidTimeout = prevState !== null;
50565        }
50566
50567        if (nextDidTimeout && !prevDidTimeout) {
50568          // If this subtreee is running in blocking mode we can suspend,
50569          // otherwise we won't suspend.
50570          // TODO: This will still suspend a synchronous tree if anything
50571          // in the concurrent tree already suspended during this render.
50572          // This is a known bug.
50573          if ((workInProgress.mode & BlockingMode) !== NoMode) {
50574            // TODO: Move this back to throwException because this is too late
50575            // if this is a large tree which is common for initial loads. We
50576            // don't know if we should restart a render or not until we get
50577            // this marker, and this is too late.
50578            // If this render already had a ping or lower pri updates,
50579            // and this is the first time we know we're going to suspend we
50580            // should be able to immediately restart from within throwException.
50581            var hasInvisibleChildContext = current === null && workInProgress.memoizedProps.unstable_avoidThisFallback !== true;
50582
50583            if (hasInvisibleChildContext || hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext)) {
50584              // If this was in an invisible tree or a new render, then showing
50585              // this boundary is ok.
50586              renderDidSuspend();
50587            } else {
50588              // Otherwise, we're going to have to hide content so we should
50589              // suspend for longer if possible.
50590              renderDidSuspendDelayIfPossible();
50591            }
50592          }
50593        }
50594
50595        {
50596          // TODO: Only schedule updates if these values are non equal, i.e. it changed.
50597          if (nextDidTimeout || prevDidTimeout) {
50598            // If this boundary just timed out, schedule an effect to attach a
50599            // retry listener to the promise. This flag is also used to hide the
50600            // primary children. In mutation mode, we also need the flag to
50601            // *unhide* children that were previously hidden, so check if this
50602            // is currently timed out, too.
50603            workInProgress.flags |= Update;
50604          }
50605        }
50606
50607        return null;
50608      }
50609
50610    case HostPortal:
50611      popHostContainer(workInProgress);
50612      updateHostContainer(workInProgress);
50613
50614      if (current === null) {
50615        preparePortalMount(workInProgress.stateNode.containerInfo);
50616      }
50617
50618      return null;
50619
50620    case ContextProvider:
50621      // Pop provider fiber
50622      popProvider(workInProgress);
50623      return null;
50624
50625    case IncompleteClassComponent:
50626      {
50627        // Same as class component case. I put it down here so that the tags are
50628        // sequential to ensure this switch is compiled to a jump table.
50629        var _Component = workInProgress.type;
50630
50631        if (isContextProvider(_Component)) {
50632          popContext(workInProgress);
50633        }
50634
50635        return null;
50636      }
50637
50638    case SuspenseListComponent:
50639      {
50640        popSuspenseContext(workInProgress);
50641        var renderState = workInProgress.memoizedState;
50642
50643        if (renderState === null) {
50644          // We're running in the default, "independent" mode.
50645          // We don't do anything in this mode.
50646          return null;
50647        }
50648
50649        var didSuspendAlready = (workInProgress.flags & DidCapture) !== NoFlags;
50650        var renderedTail = renderState.rendering;
50651
50652        if (renderedTail === null) {
50653          // We just rendered the head.
50654          if (!didSuspendAlready) {
50655            // This is the first pass. We need to figure out if anything is still
50656            // suspended in the rendered set.
50657            // If new content unsuspended, but there's still some content that
50658            // didn't. Then we need to do a second pass that forces everything
50659            // to keep showing their fallbacks.
50660            // We might be suspended if something in this render pass suspended, or
50661            // something in the previous committed pass suspended. Otherwise,
50662            // there's no chance so we can skip the expensive call to
50663            // findFirstSuspended.
50664            var cannotBeSuspended = renderHasNotSuspendedYet() && (current === null || (current.flags & DidCapture) === NoFlags);
50665
50666            if (!cannotBeSuspended) {
50667              var row = workInProgress.child;
50668
50669              while (row !== null) {
50670                var suspended = findFirstSuspended(row);
50671
50672                if (suspended !== null) {
50673                  didSuspendAlready = true;
50674                  workInProgress.flags |= DidCapture;
50675                  cutOffTailIfNeeded(renderState, false); // If this is a newly suspended tree, it might not get committed as
50676                  // part of the second pass. In that case nothing will subscribe to
50677                  // its thennables. Instead, we'll transfer its thennables to the
50678                  // SuspenseList so that it can retry if they resolve.
50679                  // There might be multiple of these in the list but since we're
50680                  // going to wait for all of them anyway, it doesn't really matter
50681                  // which ones gets to ping. In theory we could get clever and keep
50682                  // track of how many dependencies remain but it gets tricky because
50683                  // in the meantime, we can add/remove/change items and dependencies.
50684                  // We might bail out of the loop before finding any but that
50685                  // doesn't matter since that means that the other boundaries that
50686                  // we did find already has their listeners attached.
50687
50688                  var newThennables = suspended.updateQueue;
50689
50690                  if (newThennables !== null) {
50691                    workInProgress.updateQueue = newThennables;
50692                    workInProgress.flags |= Update;
50693                  } // Rerender the whole list, but this time, we'll force fallbacks
50694                  // to stay in place.
50695                  // Reset the effect list before doing the second pass since that's now invalid.
50696
50697
50698                  if (renderState.lastEffect === null) {
50699                    workInProgress.firstEffect = null;
50700                  }
50701
50702                  workInProgress.lastEffect = renderState.lastEffect; // Reset the child fibers to their original state.
50703
50704                  resetChildFibers(workInProgress, renderLanes); // Set up the Suspense Context to force suspense and immediately
50705                  // rerender the children.
50706
50707                  pushSuspenseContext(workInProgress, setShallowSuspenseContext(suspenseStackCursor.current, ForceSuspenseFallback));
50708                  return workInProgress.child;
50709                }
50710
50711                row = row.sibling;
50712              }
50713            }
50714
50715            if (renderState.tail !== null && now() > getRenderTargetTime()) {
50716              // We have already passed our CPU deadline but we still have rows
50717              // left in the tail. We'll just give up further attempts to render
50718              // the main content and only render fallbacks.
50719              workInProgress.flags |= DidCapture;
50720              didSuspendAlready = true;
50721              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this
50722              // to get it started back up to attempt the next item. While in terms
50723              // of priority this work has the same priority as this current render,
50724              // it's not part of the same transition once the transition has
50725              // committed. If it's sync, we still want to yield so that it can be
50726              // painted. Conceptually, this is really the same as pinging.
50727              // We can use any RetryLane even if it's the one currently rendering
50728              // since we're leaving it behind on this node.
50729
50730              workInProgress.lanes = SomeRetryLane;
50731
50732              {
50733                markSpawnedWork(SomeRetryLane);
50734              }
50735            }
50736          } else {
50737            cutOffTailIfNeeded(renderState, false);
50738          } // Next we're going to render the tail.
50739
50740        } else {
50741          // Append the rendered row to the child list.
50742          if (!didSuspendAlready) {
50743            var _suspended = findFirstSuspended(renderedTail);
50744
50745            if (_suspended !== null) {
50746              workInProgress.flags |= DidCapture;
50747              didSuspendAlready = true; // Ensure we transfer the update queue to the parent so that it doesn't
50748              // get lost if this row ends up dropped during a second pass.
50749
50750              var _newThennables = _suspended.updateQueue;
50751
50752              if (_newThennables !== null) {
50753                workInProgress.updateQueue = _newThennables;
50754                workInProgress.flags |= Update;
50755              }
50756
50757              cutOffTailIfNeeded(renderState, true); // This might have been modified.
50758
50759              if (renderState.tail === null && renderState.tailMode === 'hidden' && !renderedTail.alternate && !getIsHydrating() // We don't cut it if we're hydrating.
50760              ) {
50761                  // We need to delete the row we just rendered.
50762                  // Reset the effect list to what it was before we rendered this
50763                  // child. The nested children have already appended themselves.
50764                  var lastEffect = workInProgress.lastEffect = renderState.lastEffect; // Remove any effects that were appended after this point.
50765
50766                  if (lastEffect !== null) {
50767                    lastEffect.nextEffect = null;
50768                  } // We're done.
50769
50770
50771                  return null;
50772                }
50773            } else if ( // The time it took to render last row is greater than the remaining
50774            // time we have to render. So rendering one more row would likely
50775            // exceed it.
50776            now() * 2 - renderState.renderingStartTime > getRenderTargetTime() && renderLanes !== OffscreenLane) {
50777              // We have now passed our CPU deadline and we'll just give up further
50778              // attempts to render the main content and only render fallbacks.
50779              // The assumption is that this is usually faster.
50780              workInProgress.flags |= DidCapture;
50781              didSuspendAlready = true;
50782              cutOffTailIfNeeded(renderState, false); // Since nothing actually suspended, there will nothing to ping this
50783              // to get it started back up to attempt the next item. While in terms
50784              // of priority this work has the same priority as this current render,
50785              // it's not part of the same transition once the transition has
50786              // committed. If it's sync, we still want to yield so that it can be
50787              // painted. Conceptually, this is really the same as pinging.
50788              // We can use any RetryLane even if it's the one currently rendering
50789              // since we're leaving it behind on this node.
50790
50791              workInProgress.lanes = SomeRetryLane;
50792
50793              {
50794                markSpawnedWork(SomeRetryLane);
50795              }
50796            }
50797          }
50798
50799          if (renderState.isBackwards) {
50800            // The effect list of the backwards tail will have been added
50801            // to the end. This breaks the guarantee that life-cycles fire in
50802            // sibling order but that isn't a strong guarantee promised by React.
50803            // Especially since these might also just pop in during future commits.
50804            // Append to the beginning of the list.
50805            renderedTail.sibling = workInProgress.child;
50806            workInProgress.child = renderedTail;
50807          } else {
50808            var previousSibling = renderState.last;
50809
50810            if (previousSibling !== null) {
50811              previousSibling.sibling = renderedTail;
50812            } else {
50813              workInProgress.child = renderedTail;
50814            }
50815
50816            renderState.last = renderedTail;
50817          }
50818        }
50819
50820        if (renderState.tail !== null) {
50821          // We still have tail rows to render.
50822          // Pop a row.
50823          var next = renderState.tail;
50824          renderState.rendering = next;
50825          renderState.tail = next.sibling;
50826          renderState.lastEffect = workInProgress.lastEffect;
50827          renderState.renderingStartTime = now();
50828          next.sibling = null; // Restore the context.
50829          // TODO: We can probably just avoid popping it instead and only
50830          // setting it the first time we go from not suspended to suspended.
50831
50832          var suspenseContext = suspenseStackCursor.current;
50833
50834          if (didSuspendAlready) {
50835            suspenseContext = setShallowSuspenseContext(suspenseContext, ForceSuspenseFallback);
50836          } else {
50837            suspenseContext = setDefaultShallowSuspenseContext(suspenseContext);
50838          }
50839
50840          pushSuspenseContext(workInProgress, suspenseContext); // Do a pass over the next row.
50841
50842          return next;
50843        }
50844
50845        return null;
50846      }
50847
50848    case FundamentalComponent:
50849      {
50850
50851        break;
50852      }
50853
50854    case ScopeComponent:
50855      {
50856
50857        break;
50858      }
50859
50860    case Block:
50861
50862      break;
50863
50864    case OffscreenComponent:
50865    case LegacyHiddenComponent:
50866      {
50867        popRenderLanes(workInProgress);
50868
50869        if (current !== null) {
50870          var _nextState = workInProgress.memoizedState;
50871          var _prevState = current.memoizedState;
50872          var prevIsHidden = _prevState !== null;
50873          var nextIsHidden = _nextState !== null;
50874
50875          if (prevIsHidden !== nextIsHidden && newProps.mode !== 'unstable-defer-without-hiding') {
50876            workInProgress.flags |= Update;
50877          }
50878        }
50879
50880        return null;
50881      }
50882  }
50883
50884  {
50885    {
50886      throw Error( "Unknown unit of work tag (" + workInProgress.tag + "). This error is likely caused by a bug in React. Please file an issue." );
50887    }
50888  }
50889}
50890
50891function unwindWork(workInProgress, renderLanes) {
50892  switch (workInProgress.tag) {
50893    case ClassComponent:
50894      {
50895        var Component = workInProgress.type;
50896
50897        if (isContextProvider(Component)) {
50898          popContext(workInProgress);
50899        }
50900
50901        var flags = workInProgress.flags;
50902
50903        if (flags & ShouldCapture) {
50904          workInProgress.flags = flags & ~ShouldCapture | DidCapture;
50905
50906          if ( (workInProgress.mode & ProfileMode) !== NoMode) {
50907            transferActualDuration(workInProgress);
50908          }
50909
50910          return workInProgress;
50911        }
50912
50913        return null;
50914      }
50915
50916    case HostRoot:
50917      {
50918        popHostContainer(workInProgress);
50919        popTopLevelContextObject(workInProgress);
50920        resetWorkInProgressVersions();
50921        var _flags = workInProgress.flags;
50922
50923        if (!((_flags & DidCapture) === NoFlags)) {
50924          {
50925            throw Error( "The root failed to unmount after an error. This is likely a bug in React. Please file an issue." );
50926          }
50927        }
50928
50929        workInProgress.flags = _flags & ~ShouldCapture | DidCapture;
50930        return workInProgress;
50931      }
50932
50933    case HostComponent:
50934      {
50935        // TODO: popHydrationState
50936        popHostContext(workInProgress);
50937        return null;
50938      }
50939
50940    case SuspenseComponent:
50941      {
50942        popSuspenseContext(workInProgress);
50943
50944        var _flags2 = workInProgress.flags;
50945
50946        if (_flags2 & ShouldCapture) {
50947          workInProgress.flags = _flags2 & ~ShouldCapture | DidCapture; // Captured a suspense effect. Re-render the boundary.
50948
50949          if ( (workInProgress.mode & ProfileMode) !== NoMode) {
50950            transferActualDuration(workInProgress);
50951          }
50952
50953          return workInProgress;
50954        }
50955
50956        return null;
50957      }
50958
50959    case SuspenseListComponent:
50960      {
50961        popSuspenseContext(workInProgress); // SuspenseList doesn't actually catch anything. It should've been
50962        // caught by a nested boundary. If not, it should bubble through.
50963
50964        return null;
50965      }
50966
50967    case HostPortal:
50968      popHostContainer(workInProgress);
50969      return null;
50970
50971    case ContextProvider:
50972      popProvider(workInProgress);
50973      return null;
50974
50975    case OffscreenComponent:
50976    case LegacyHiddenComponent:
50977      popRenderLanes(workInProgress);
50978      return null;
50979
50980    default:
50981      return null;
50982  }
50983}
50984
50985function unwindInterruptedWork(interruptedWork) {
50986  switch (interruptedWork.tag) {
50987    case ClassComponent:
50988      {
50989        var childContextTypes = interruptedWork.type.childContextTypes;
50990
50991        if (childContextTypes !== null && childContextTypes !== undefined) {
50992          popContext(interruptedWork);
50993        }
50994
50995        break;
50996      }
50997
50998    case HostRoot:
50999      {
51000        popHostContainer(interruptedWork);
51001        popTopLevelContextObject(interruptedWork);
51002        resetWorkInProgressVersions();
51003        break;
51004      }
51005
51006    case HostComponent:
51007      {
51008        popHostContext(interruptedWork);
51009        break;
51010      }
51011
51012    case HostPortal:
51013      popHostContainer(interruptedWork);
51014      break;
51015
51016    case SuspenseComponent:
51017      popSuspenseContext(interruptedWork);
51018      break;
51019
51020    case SuspenseListComponent:
51021      popSuspenseContext(interruptedWork);
51022      break;
51023
51024    case ContextProvider:
51025      popProvider(interruptedWork);
51026      break;
51027
51028    case OffscreenComponent:
51029    case LegacyHiddenComponent:
51030      popRenderLanes(interruptedWork);
51031      break;
51032  }
51033}
51034
51035function createCapturedValue(value, source) {
51036  // If the value is an error, call this function immediately after it is thrown
51037  // so the stack is accurate.
51038  return {
51039    value: value,
51040    source: source,
51041    stack: getStackByFiberInDevAndProd(source)
51042  };
51043}
51044
51045// This module is forked in different environments.
51046// By default, return `true` to log errors to the console.
51047// Forks can return `false` if this isn't desirable.
51048function showErrorDialog(boundary, errorInfo) {
51049  return true;
51050}
51051
51052function logCapturedError(boundary, errorInfo) {
51053  try {
51054    var logError = showErrorDialog(boundary, errorInfo); // Allow injected showErrorDialog() to prevent default console.error logging.
51055    // This enables renderers like ReactNative to better manage redbox behavior.
51056
51057    if (logError === false) {
51058      return;
51059    }
51060
51061    var error = errorInfo.value;
51062
51063    if (true) {
51064      var source = errorInfo.source;
51065      var stack = errorInfo.stack;
51066      var componentStack = stack !== null ? stack : ''; // Browsers support silencing uncaught errors by calling
51067      // `preventDefault()` in window `error` handler.
51068      // We record this information as an expando on the error.
51069
51070      if (error != null && error._suppressLogging) {
51071        if (boundary.tag === ClassComponent) {
51072          // The error is recoverable and was silenced.
51073          // Ignore it and don't print the stack addendum.
51074          // This is handy for testing error boundaries without noise.
51075          return;
51076        } // The error is fatal. Since the silencing might have
51077        // been accidental, we'll surface it anyway.
51078        // However, the browser would have silenced the original error
51079        // so we'll print it first, and then print the stack addendum.
51080
51081
51082        console['error'](error); // Don't transform to our wrapper
51083        // For a more detailed description of this block, see:
51084        // https://github.com/facebook/react/pull/13384
51085      }
51086
51087      var componentName = source ? getComponentName(source.type) : null;
51088      var componentNameMessage = componentName ? "The above error occurred in the <" + componentName + "> component:" : 'The above error occurred in one of your React components:';
51089      var errorBoundaryMessage;
51090      var errorBoundaryName = getComponentName(boundary.type);
51091
51092      if (errorBoundaryName) {
51093        errorBoundaryMessage = "React will try to recreate this component tree from scratch " + ("using the error boundary you provided, " + errorBoundaryName + ".");
51094      } else {
51095        errorBoundaryMessage = 'Consider adding an error boundary to your tree to customize error handling behavior.\n' + 'Visit https://reactjs.org/link/error-boundaries to learn more about error boundaries.';
51096      }
51097
51098      var combinedMessage = componentNameMessage + "\n" + componentStack + "\n\n" + ("" + errorBoundaryMessage); // In development, we provide our own message with just the component stack.
51099      // We don't include the original error message and JS stack because the browser
51100      // has already printed it. Even if the application swallows the error, it is still
51101      // displayed by the browser thanks to the DEV-only fake event trick in ReactErrorUtils.
51102
51103      console['error'](combinedMessage); // Don't transform to our wrapper
51104    } else {}
51105  } catch (e) {
51106    // This method must not throw, or React internal state will get messed up.
51107    // If console.error is overridden, or logCapturedError() shows a dialog that throws,
51108    // we want to report this error outside of the normal stack as a last resort.
51109    // https://github.com/facebook/react/issues/13188
51110    setTimeout(function () {
51111      throw e;
51112    });
51113  }
51114}
51115
51116var PossiblyWeakMap$1 = typeof WeakMap === 'function' ? WeakMap : Map;
51117
51118function createRootErrorUpdate(fiber, errorInfo, lane) {
51119  var update = createUpdate(NoTimestamp, lane); // Unmount the root by rendering null.
51120
51121  update.tag = CaptureUpdate; // Caution: React DevTools currently depends on this property
51122  // being called "element".
51123
51124  update.payload = {
51125    element: null
51126  };
51127  var error = errorInfo.value;
51128
51129  update.callback = function () {
51130    onUncaughtError(error);
51131    logCapturedError(fiber, errorInfo);
51132  };
51133
51134  return update;
51135}
51136
51137function createClassErrorUpdate(fiber, errorInfo, lane) {
51138  var update = createUpdate(NoTimestamp, lane);
51139  update.tag = CaptureUpdate;
51140  var getDerivedStateFromError = fiber.type.getDerivedStateFromError;
51141
51142  if (typeof getDerivedStateFromError === 'function') {
51143    var error$1 = errorInfo.value;
51144
51145    update.payload = function () {
51146      logCapturedError(fiber, errorInfo);
51147      return getDerivedStateFromError(error$1);
51148    };
51149  }
51150
51151  var inst = fiber.stateNode;
51152
51153  if (inst !== null && typeof inst.componentDidCatch === 'function') {
51154    update.callback = function callback() {
51155      {
51156        markFailedErrorBoundaryForHotReloading(fiber);
51157      }
51158
51159      if (typeof getDerivedStateFromError !== 'function') {
51160        // To preserve the preexisting retry behavior of error boundaries,
51161        // we keep track of which ones already failed during this batch.
51162        // This gets reset before we yield back to the browser.
51163        // TODO: Warn in strict mode if getDerivedStateFromError is
51164        // not defined.
51165        markLegacyErrorBoundaryAsFailed(this); // Only log here if componentDidCatch is the only error boundary method defined
51166
51167        logCapturedError(fiber, errorInfo);
51168      }
51169
51170      var error$1 = errorInfo.value;
51171      var stack = errorInfo.stack;
51172      this.componentDidCatch(error$1, {
51173        componentStack: stack !== null ? stack : ''
51174      });
51175
51176      {
51177        if (typeof getDerivedStateFromError !== 'function') {
51178          // If componentDidCatch is the only error boundary method defined,
51179          // then it needs to call setState to recover from errors.
51180          // If no state update is scheduled then the boundary will swallow the error.
51181          if (!includesSomeLane(fiber.lanes, SyncLane)) {
51182            error('%s: Error boundaries should implement getDerivedStateFromError(). ' + 'In that method, return a state update to display an error message or fallback UI.', getComponentName(fiber.type) || 'Unknown');
51183          }
51184        }
51185      }
51186    };
51187  } else {
51188    update.callback = function () {
51189      markFailedErrorBoundaryForHotReloading(fiber);
51190    };
51191  }
51192
51193  return update;
51194}
51195
51196function attachPingListener(root, wakeable, lanes) {
51197  // Attach a listener to the promise to "ping" the root and retry. But only if
51198  // one does not already exist for the lanes we're currently rendering (which
51199  // acts like a "thread ID" here).
51200  var pingCache = root.pingCache;
51201  var threadIDs;
51202
51203  if (pingCache === null) {
51204    pingCache = root.pingCache = new PossiblyWeakMap$1();
51205    threadIDs = new Set();
51206    pingCache.set(wakeable, threadIDs);
51207  } else {
51208    threadIDs = pingCache.get(wakeable);
51209
51210    if (threadIDs === undefined) {
51211      threadIDs = new Set();
51212      pingCache.set(wakeable, threadIDs);
51213    }
51214  }
51215
51216  if (!threadIDs.has(lanes)) {
51217    // Memoize using the thread ID to prevent redundant listeners.
51218    threadIDs.add(lanes);
51219    var ping = pingSuspendedRoot.bind(null, root, wakeable, lanes);
51220    wakeable.then(ping, ping);
51221  }
51222}
51223
51224function throwException(root, returnFiber, sourceFiber, value, rootRenderLanes) {
51225  // The source fiber did not complete.
51226  sourceFiber.flags |= Incomplete; // Its effect list is no longer valid.
51227
51228  sourceFiber.firstEffect = sourceFiber.lastEffect = null;
51229
51230  if (value !== null && typeof value === 'object' && typeof value.then === 'function') {
51231    // This is a wakeable.
51232    var wakeable = value;
51233
51234    if ((sourceFiber.mode & BlockingMode) === NoMode) {
51235      // Reset the memoizedState to what it was before we attempted
51236      // to render it.
51237      var currentSource = sourceFiber.alternate;
51238
51239      if (currentSource) {
51240        sourceFiber.updateQueue = currentSource.updateQueue;
51241        sourceFiber.memoizedState = currentSource.memoizedState;
51242        sourceFiber.lanes = currentSource.lanes;
51243      } else {
51244        sourceFiber.updateQueue = null;
51245        sourceFiber.memoizedState = null;
51246      }
51247    }
51248
51249    var hasInvisibleParentBoundary = hasSuspenseContext(suspenseStackCursor.current, InvisibleParentSuspenseContext); // Schedule the nearest Suspense to re-render the timed out view.
51250
51251    var _workInProgress = returnFiber;
51252
51253    do {
51254      if (_workInProgress.tag === SuspenseComponent && shouldCaptureSuspense(_workInProgress, hasInvisibleParentBoundary)) {
51255        // Found the nearest boundary.
51256        // Stash the promise on the boundary fiber. If the boundary times out, we'll
51257        // attach another listener to flip the boundary back to its normal state.
51258        var wakeables = _workInProgress.updateQueue;
51259
51260        if (wakeables === null) {
51261          var updateQueue = new Set();
51262          updateQueue.add(wakeable);
51263          _workInProgress.updateQueue = updateQueue;
51264        } else {
51265          wakeables.add(wakeable);
51266        } // If the boundary is outside of blocking mode, we should *not*
51267        // suspend the commit. Pretend as if the suspended component rendered
51268        // null and keep rendering. In the commit phase, we'll schedule a
51269        // subsequent synchronous update to re-render the Suspense.
51270        //
51271        // Note: It doesn't matter whether the component that suspended was
51272        // inside a blocking mode tree. If the Suspense is outside of it, we
51273        // should *not* suspend the commit.
51274
51275
51276        if ((_workInProgress.mode & BlockingMode) === NoMode) {
51277          _workInProgress.flags |= DidCapture;
51278          sourceFiber.flags |= ForceUpdateForLegacySuspense; // We're going to commit this fiber even though it didn't complete.
51279          // But we shouldn't call any lifecycle methods or callbacks. Remove
51280          // all lifecycle effect tags.
51281
51282          sourceFiber.flags &= ~(LifecycleEffectMask | Incomplete);
51283
51284          if (sourceFiber.tag === ClassComponent) {
51285            var currentSourceFiber = sourceFiber.alternate;
51286
51287            if (currentSourceFiber === null) {
51288              // This is a new mount. Change the tag so it's not mistaken for a
51289              // completed class component. For example, we should not call
51290              // componentWillUnmount if it is deleted.
51291              sourceFiber.tag = IncompleteClassComponent;
51292            } else {
51293              // When we try rendering again, we should not reuse the current fiber,
51294              // since it's known to be in an inconsistent state. Use a force update to
51295              // prevent a bail out.
51296              var update = createUpdate(NoTimestamp, SyncLane);
51297              update.tag = ForceUpdate;
51298              enqueueUpdate(sourceFiber, update);
51299            }
51300          } // The source fiber did not complete. Mark it with Sync priority to
51301          // indicate that it still has pending work.
51302
51303
51304          sourceFiber.lanes = mergeLanes(sourceFiber.lanes, SyncLane); // Exit without suspending.
51305
51306          return;
51307        } // Confirmed that the boundary is in a concurrent mode tree. Continue
51308        // with the normal suspend path.
51309        //
51310        // After this we'll use a set of heuristics to determine whether this
51311        // render pass will run to completion or restart or "suspend" the commit.
51312        // The actual logic for this is spread out in different places.
51313        //
51314        // This first principle is that if we're going to suspend when we complete
51315        // a root, then we should also restart if we get an update or ping that
51316        // might unsuspend it, and vice versa. The only reason to suspend is
51317        // because you think you might want to restart before committing. However,
51318        // it doesn't make sense to restart only while in the period we're suspended.
51319        //
51320        // Restarting too aggressively is also not good because it starves out any
51321        // intermediate loading state. So we use heuristics to determine when.
51322        // Suspense Heuristics
51323        //
51324        // If nothing threw a Promise or all the same fallbacks are already showing,
51325        // then don't suspend/restart.
51326        //
51327        // If this is an initial render of a new tree of Suspense boundaries and
51328        // those trigger a fallback, then don't suspend/restart. We want to ensure
51329        // that we can show the initial loading state as quickly as possible.
51330        //
51331        // If we hit a "Delayed" case, such as when we'd switch from content back into
51332        // a fallback, then we should always suspend/restart. Transitions apply
51333        // to this case. If none is defined, JND is used instead.
51334        //
51335        // If we're already showing a fallback and it gets "retried", allowing us to show
51336        // another level, but there's still an inner boundary that would show a fallback,
51337        // then we suspend/restart for 500ms since the last time we showed a fallback
51338        // anywhere in the tree. This effectively throttles progressive loading into a
51339        // consistent train of commits. This also gives us an opportunity to restart to
51340        // get to the completed state slightly earlier.
51341        //
51342        // If there's ambiguity due to batching it's resolved in preference of:
51343        // 1) "delayed", 2) "initial render", 3) "retry".
51344        //
51345        // We want to ensure that a "busy" state doesn't get force committed. We want to
51346        // ensure that new initial loading states can commit as soon as possible.
51347
51348
51349        attachPingListener(root, wakeable, rootRenderLanes);
51350        _workInProgress.flags |= ShouldCapture;
51351        _workInProgress.lanes = rootRenderLanes;
51352        return;
51353      } // This boundary already captured during this render. Continue to the next
51354      // boundary.
51355
51356
51357      _workInProgress = _workInProgress.return;
51358    } while (_workInProgress !== null); // No boundary was found. Fallthrough to error mode.
51359    // TODO: Use invariant so the message is stripped in prod?
51360
51361
51362    value = new Error((getComponentName(sourceFiber.type) || 'A React component') + ' suspended while rendering, but no fallback UI was specified.\n' + '\n' + 'Add a <Suspense fallback=...> component higher in the tree to ' + 'provide a loading indicator or placeholder to display.');
51363  } // We didn't find a boundary that could handle this type of exception. Start
51364  // over and traverse parent path again, this time treating the exception
51365  // as an error.
51366
51367
51368  renderDidError();
51369  value = createCapturedValue(value, sourceFiber);
51370  var workInProgress = returnFiber;
51371
51372  do {
51373    switch (workInProgress.tag) {
51374      case HostRoot:
51375        {
51376          var _errorInfo = value;
51377          workInProgress.flags |= ShouldCapture;
51378          var lane = pickArbitraryLane(rootRenderLanes);
51379          workInProgress.lanes = mergeLanes(workInProgress.lanes, lane);
51380
51381          var _update = createRootErrorUpdate(workInProgress, _errorInfo, lane);
51382
51383          enqueueCapturedUpdate(workInProgress, _update);
51384          return;
51385        }
51386
51387      case ClassComponent:
51388        // Capture and retry
51389        var errorInfo = value;
51390        var ctor = workInProgress.type;
51391        var instance = workInProgress.stateNode;
51392
51393        if ((workInProgress.flags & DidCapture) === NoFlags && (typeof ctor.getDerivedStateFromError === 'function' || instance !== null && typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance))) {
51394          workInProgress.flags |= ShouldCapture;
51395
51396          var _lane = pickArbitraryLane(rootRenderLanes);
51397
51398          workInProgress.lanes = mergeLanes(workInProgress.lanes, _lane); // Schedule the error boundary to re-render using updated state
51399
51400          var _update2 = createClassErrorUpdate(workInProgress, errorInfo, _lane);
51401
51402          enqueueCapturedUpdate(workInProgress, _update2);
51403          return;
51404        }
51405
51406        break;
51407    }
51408
51409    workInProgress = workInProgress.return;
51410  } while (workInProgress !== null);
51411}
51412
51413var didWarnAboutUndefinedSnapshotBeforeUpdate = null;
51414
51415{
51416  didWarnAboutUndefinedSnapshotBeforeUpdate = new Set();
51417}
51418
51419var PossiblyWeakSet = typeof WeakSet === 'function' ? WeakSet : Set;
51420
51421var callComponentWillUnmountWithTimer = function (current, instance) {
51422  instance.props = current.memoizedProps;
51423  instance.state = current.memoizedState;
51424
51425  {
51426    instance.componentWillUnmount();
51427  }
51428}; // Capture errors so they don't interrupt unmounting.
51429
51430
51431function safelyCallComponentWillUnmount(current, instance) {
51432  {
51433    invokeGuardedCallback(null, callComponentWillUnmountWithTimer, null, current, instance);
51434
51435    if (hasCaughtError()) {
51436      var unmountError = clearCaughtError();
51437      captureCommitPhaseError(current, unmountError);
51438    }
51439  }
51440}
51441
51442function safelyDetachRef(current) {
51443  var ref = current.ref;
51444
51445  if (ref !== null) {
51446    if (typeof ref === 'function') {
51447      {
51448        invokeGuardedCallback(null, ref, null, null);
51449
51450        if (hasCaughtError()) {
51451          var refError = clearCaughtError();
51452          captureCommitPhaseError(current, refError);
51453        }
51454      }
51455    } else {
51456      ref.current = null;
51457    }
51458  }
51459}
51460
51461function safelyCallDestroy(current, destroy) {
51462  {
51463    invokeGuardedCallback(null, destroy, null);
51464
51465    if (hasCaughtError()) {
51466      var error = clearCaughtError();
51467      captureCommitPhaseError(current, error);
51468    }
51469  }
51470}
51471
51472function commitBeforeMutationLifeCycles(current, finishedWork) {
51473  switch (finishedWork.tag) {
51474    case FunctionComponent:
51475    case ForwardRef:
51476    case SimpleMemoComponent:
51477    case Block:
51478      {
51479        return;
51480      }
51481
51482    case ClassComponent:
51483      {
51484        if (finishedWork.flags & Snapshot) {
51485          if (current !== null) {
51486            var prevProps = current.memoizedProps;
51487            var prevState = current.memoizedState;
51488            var instance = finishedWork.stateNode; // We could update instance props and state here,
51489            // but instead we rely on them being set during last render.
51490            // TODO: revisit this when we implement resuming.
51491
51492            {
51493              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
51494                if (instance.props !== finishedWork.memoizedProps) {
51495                  error('Expected %s props to match memoized props before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51496                }
51497
51498                if (instance.state !== finishedWork.memoizedState) {
51499                  error('Expected %s state to match memoized state before ' + 'getSnapshotBeforeUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51500                }
51501              }
51502            }
51503
51504            var snapshot = instance.getSnapshotBeforeUpdate(finishedWork.elementType === finishedWork.type ? prevProps : resolveDefaultProps(finishedWork.type, prevProps), prevState);
51505
51506            {
51507              var didWarnSet = didWarnAboutUndefinedSnapshotBeforeUpdate;
51508
51509              if (snapshot === undefined && !didWarnSet.has(finishedWork.type)) {
51510                didWarnSet.add(finishedWork.type);
51511
51512                error('%s.getSnapshotBeforeUpdate(): A snapshot value (or null) ' + 'must be returned. You have returned undefined.', getComponentName(finishedWork.type));
51513              }
51514            }
51515
51516            instance.__reactInternalSnapshotBeforeUpdate = snapshot;
51517          }
51518        }
51519
51520        return;
51521      }
51522
51523    case HostRoot:
51524      {
51525        {
51526          if (finishedWork.flags & Snapshot) {
51527            var root = finishedWork.stateNode;
51528            clearContainer(root.containerInfo);
51529          }
51530        }
51531
51532        return;
51533      }
51534
51535    case HostComponent:
51536    case HostText:
51537    case HostPortal:
51538    case IncompleteClassComponent:
51539      // Nothing to do for these component types
51540      return;
51541  }
51542
51543  {
51544    {
51545      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
51546    }
51547  }
51548}
51549
51550function commitHookEffectListUnmount(tag, finishedWork) {
51551  var updateQueue = finishedWork.updateQueue;
51552  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
51553
51554  if (lastEffect !== null) {
51555    var firstEffect = lastEffect.next;
51556    var effect = firstEffect;
51557
51558    do {
51559      if ((effect.tag & tag) === tag) {
51560        // Unmount
51561        var destroy = effect.destroy;
51562        effect.destroy = undefined;
51563
51564        if (destroy !== undefined) {
51565          destroy();
51566        }
51567      }
51568
51569      effect = effect.next;
51570    } while (effect !== firstEffect);
51571  }
51572}
51573
51574function commitHookEffectListMount(tag, finishedWork) {
51575  var updateQueue = finishedWork.updateQueue;
51576  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
51577
51578  if (lastEffect !== null) {
51579    var firstEffect = lastEffect.next;
51580    var effect = firstEffect;
51581
51582    do {
51583      if ((effect.tag & tag) === tag) {
51584        // Mount
51585        var create = effect.create;
51586        effect.destroy = create();
51587
51588        {
51589          var destroy = effect.destroy;
51590
51591          if (destroy !== undefined && typeof destroy !== 'function') {
51592            var addendum = void 0;
51593
51594            if (destroy === null) {
51595              addendum = ' You returned null. If your effect does not require clean ' + 'up, return undefined (or nothing).';
51596            } else if (typeof destroy.then === 'function') {
51597              addendum = '\n\nIt looks like you wrote useEffect(async () => ...) or returned a Promise. ' + 'Instead, write the async function inside your effect ' + 'and call it immediately:\n\n' + 'useEffect(() => {\n' + '  async function fetchData() {\n' + '    // You can await here\n' + '    const response = await MyAPI.getData(someId);\n' + '    // ...\n' + '  }\n' + '  fetchData();\n' + "}, [someId]); // Or [] if effect doesn't need props or state\n\n" + 'Learn more about data fetching with Hooks: https://reactjs.org/link/hooks-data-fetching';
51598            } else {
51599              addendum = ' You returned: ' + destroy;
51600            }
51601
51602            error('An effect function must not return anything besides a function, ' + 'which is used for clean-up.%s', addendum);
51603          }
51604        }
51605      }
51606
51607      effect = effect.next;
51608    } while (effect !== firstEffect);
51609  }
51610}
51611
51612function schedulePassiveEffects(finishedWork) {
51613  var updateQueue = finishedWork.updateQueue;
51614  var lastEffect = updateQueue !== null ? updateQueue.lastEffect : null;
51615
51616  if (lastEffect !== null) {
51617    var firstEffect = lastEffect.next;
51618    var effect = firstEffect;
51619
51620    do {
51621      var _effect = effect,
51622          next = _effect.next,
51623          tag = _effect.tag;
51624
51625      if ((tag & Passive$1) !== NoFlags$1 && (tag & HasEffect) !== NoFlags$1) {
51626        enqueuePendingPassiveHookEffectUnmount(finishedWork, effect);
51627        enqueuePendingPassiveHookEffectMount(finishedWork, effect);
51628      }
51629
51630      effect = next;
51631    } while (effect !== firstEffect);
51632  }
51633}
51634
51635function commitLifeCycles(finishedRoot, current, finishedWork, committedLanes) {
51636  switch (finishedWork.tag) {
51637    case FunctionComponent:
51638    case ForwardRef:
51639    case SimpleMemoComponent:
51640    case Block:
51641      {
51642        // At this point layout effects have already been destroyed (during mutation phase).
51643        // This is done to prevent sibling component effects from interfering with each other,
51644        // e.g. a destroy function in one component should never override a ref set
51645        // by a create function in another component during the same commit.
51646        {
51647          commitHookEffectListMount(Layout | HasEffect, finishedWork);
51648        }
51649
51650        schedulePassiveEffects(finishedWork);
51651        return;
51652      }
51653
51654    case ClassComponent:
51655      {
51656        var instance = finishedWork.stateNode;
51657
51658        if (finishedWork.flags & Update) {
51659          if (current === null) {
51660            // We could update instance props and state here,
51661            // but instead we rely on them being set during last render.
51662            // TODO: revisit this when we implement resuming.
51663            {
51664              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
51665                if (instance.props !== finishedWork.memoizedProps) {
51666                  error('Expected %s props to match memoized props before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51667                }
51668
51669                if (instance.state !== finishedWork.memoizedState) {
51670                  error('Expected %s state to match memoized state before ' + 'componentDidMount. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51671                }
51672              }
51673            }
51674
51675            {
51676              instance.componentDidMount();
51677            }
51678          } else {
51679            var prevProps = finishedWork.elementType === finishedWork.type ? current.memoizedProps : resolveDefaultProps(finishedWork.type, current.memoizedProps);
51680            var prevState = current.memoizedState; // We could update instance props and state here,
51681            // but instead we rely on them being set during last render.
51682            // TODO: revisit this when we implement resuming.
51683
51684            {
51685              if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
51686                if (instance.props !== finishedWork.memoizedProps) {
51687                  error('Expected %s props to match memoized props before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51688                }
51689
51690                if (instance.state !== finishedWork.memoizedState) {
51691                  error('Expected %s state to match memoized state before ' + 'componentDidUpdate. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51692                }
51693              }
51694            }
51695
51696            {
51697              instance.componentDidUpdate(prevProps, prevState, instance.__reactInternalSnapshotBeforeUpdate);
51698            }
51699          }
51700        } // TODO: I think this is now always non-null by the time it reaches the
51701        // commit phase. Consider removing the type check.
51702
51703
51704        var updateQueue = finishedWork.updateQueue;
51705
51706        if (updateQueue !== null) {
51707          {
51708            if (finishedWork.type === finishedWork.elementType && !didWarnAboutReassigningProps) {
51709              if (instance.props !== finishedWork.memoizedProps) {
51710                error('Expected %s props to match memoized props before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.props`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51711              }
51712
51713              if (instance.state !== finishedWork.memoizedState) {
51714                error('Expected %s state to match memoized state before ' + 'processing the update queue. ' + 'This might either be because of a bug in React, or because ' + 'a component reassigns its own `this.state`. ' + 'Please file an issue.', getComponentName(finishedWork.type) || 'instance');
51715              }
51716            }
51717          } // We could update instance props and state here,
51718          // but instead we rely on them being set during last render.
51719          // TODO: revisit this when we implement resuming.
51720
51721
51722          commitUpdateQueue(finishedWork, updateQueue, instance);
51723        }
51724
51725        return;
51726      }
51727
51728    case HostRoot:
51729      {
51730        // TODO: I think this is now always non-null by the time it reaches the
51731        // commit phase. Consider removing the type check.
51732        var _updateQueue = finishedWork.updateQueue;
51733
51734        if (_updateQueue !== null) {
51735          var _instance = null;
51736
51737          if (finishedWork.child !== null) {
51738            switch (finishedWork.child.tag) {
51739              case HostComponent:
51740                _instance = getPublicInstance(finishedWork.child.stateNode);
51741                break;
51742
51743              case ClassComponent:
51744                _instance = finishedWork.child.stateNode;
51745                break;
51746            }
51747          }
51748
51749          commitUpdateQueue(finishedWork, _updateQueue, _instance);
51750        }
51751
51752        return;
51753      }
51754
51755    case HostComponent:
51756      {
51757        var _instance2 = finishedWork.stateNode; // Renderers may schedule work to be done after host components are mounted
51758        // (eg DOM renderer may schedule auto-focus for inputs and form controls).
51759        // These effects should only be committed when components are first mounted,
51760        // aka when there is no current/alternate.
51761
51762        if (current === null && finishedWork.flags & Update) {
51763          var type = finishedWork.type;
51764          var props = finishedWork.memoizedProps;
51765          commitMount(_instance2, type, props);
51766        }
51767
51768        return;
51769      }
51770
51771    case HostText:
51772      {
51773        // We have no life-cycles associated with text.
51774        return;
51775      }
51776
51777    case HostPortal:
51778      {
51779        // We have no life-cycles associated with portals.
51780        return;
51781      }
51782
51783    case Profiler:
51784      {
51785        {
51786          var _finishedWork$memoize2 = finishedWork.memoizedProps,
51787              onCommit = _finishedWork$memoize2.onCommit,
51788              onRender = _finishedWork$memoize2.onRender;
51789          var effectDuration = finishedWork.stateNode.effectDuration;
51790          var commitTime = getCommitTime();
51791
51792          if (typeof onRender === 'function') {
51793            {
51794              onRender(finishedWork.memoizedProps.id, current === null ? 'mount' : 'update', finishedWork.actualDuration, finishedWork.treeBaseDuration, finishedWork.actualStartTime, commitTime, finishedRoot.memoizedInteractions);
51795            }
51796          }
51797        }
51798
51799        return;
51800      }
51801
51802    case SuspenseComponent:
51803      {
51804        commitSuspenseHydrationCallbacks(finishedRoot, finishedWork);
51805        return;
51806      }
51807
51808    case SuspenseListComponent:
51809    case IncompleteClassComponent:
51810    case FundamentalComponent:
51811    case ScopeComponent:
51812    case OffscreenComponent:
51813    case LegacyHiddenComponent:
51814      return;
51815  }
51816
51817  {
51818    {
51819      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
51820    }
51821  }
51822}
51823
51824function hideOrUnhideAllChildren(finishedWork, isHidden) {
51825  {
51826    // We only have the top Fiber that was inserted but we need to recurse down its
51827    // children to find all the terminal nodes.
51828    var node = finishedWork;
51829
51830    while (true) {
51831      if (node.tag === HostComponent) {
51832        var instance = node.stateNode;
51833
51834        if (isHidden) {
51835          hideInstance(instance);
51836        } else {
51837          unhideInstance(node.stateNode, node.memoizedProps);
51838        }
51839      } else if (node.tag === HostText) {
51840        var _instance3 = node.stateNode;
51841
51842        if (isHidden) {
51843          hideTextInstance(_instance3);
51844        } else {
51845          unhideTextInstance(_instance3, node.memoizedProps);
51846        }
51847      } else if ((node.tag === OffscreenComponent || node.tag === LegacyHiddenComponent) && node.memoizedState !== null && node !== finishedWork) ; else if (node.child !== null) {
51848        node.child.return = node;
51849        node = node.child;
51850        continue;
51851      }
51852
51853      if (node === finishedWork) {
51854        return;
51855      }
51856
51857      while (node.sibling === null) {
51858        if (node.return === null || node.return === finishedWork) {
51859          return;
51860        }
51861
51862        node = node.return;
51863      }
51864
51865      node.sibling.return = node.return;
51866      node = node.sibling;
51867    }
51868  }
51869}
51870
51871function commitAttachRef(finishedWork) {
51872  var ref = finishedWork.ref;
51873
51874  if (ref !== null) {
51875    var instance = finishedWork.stateNode;
51876    var instanceToUse;
51877
51878    switch (finishedWork.tag) {
51879      case HostComponent:
51880        instanceToUse = getPublicInstance(instance);
51881        break;
51882
51883      default:
51884        instanceToUse = instance;
51885    } // Moved outside to ensure DCE works with this flag
51886
51887    if (typeof ref === 'function') {
51888      ref(instanceToUse);
51889    } else {
51890      {
51891        if (!ref.hasOwnProperty('current')) {
51892          error('Unexpected ref object provided for %s. ' + 'Use either a ref-setter function or React.createRef().', getComponentName(finishedWork.type));
51893        }
51894      }
51895
51896      ref.current = instanceToUse;
51897    }
51898  }
51899}
51900
51901function commitDetachRef(current) {
51902  var currentRef = current.ref;
51903
51904  if (currentRef !== null) {
51905    if (typeof currentRef === 'function') {
51906      currentRef(null);
51907    } else {
51908      currentRef.current = null;
51909    }
51910  }
51911} // User-originating errors (lifecycles and refs) should not interrupt
51912// deletion, so don't let them throw. Host-originating errors should
51913// interrupt deletion, so it's okay
51914
51915
51916function commitUnmount(finishedRoot, current, renderPriorityLevel) {
51917  onCommitUnmount(current);
51918
51919  switch (current.tag) {
51920    case FunctionComponent:
51921    case ForwardRef:
51922    case MemoComponent:
51923    case SimpleMemoComponent:
51924    case Block:
51925      {
51926        var updateQueue = current.updateQueue;
51927
51928        if (updateQueue !== null) {
51929          var lastEffect = updateQueue.lastEffect;
51930
51931          if (lastEffect !== null) {
51932            var firstEffect = lastEffect.next;
51933            var effect = firstEffect;
51934
51935            do {
51936              var _effect2 = effect,
51937                  destroy = _effect2.destroy,
51938                  tag = _effect2.tag;
51939
51940              if (destroy !== undefined) {
51941                if ((tag & Passive$1) !== NoFlags$1) {
51942                  enqueuePendingPassiveHookEffectUnmount(current, effect);
51943                } else {
51944                  {
51945                    safelyCallDestroy(current, destroy);
51946                  }
51947                }
51948              }
51949
51950              effect = effect.next;
51951            } while (effect !== firstEffect);
51952          }
51953        }
51954
51955        return;
51956      }
51957
51958    case ClassComponent:
51959      {
51960        safelyDetachRef(current);
51961        var instance = current.stateNode;
51962
51963        if (typeof instance.componentWillUnmount === 'function') {
51964          safelyCallComponentWillUnmount(current, instance);
51965        }
51966
51967        return;
51968      }
51969
51970    case HostComponent:
51971      {
51972        safelyDetachRef(current);
51973        return;
51974      }
51975
51976    case HostPortal:
51977      {
51978        // TODO: this is recursive.
51979        // We are also not using this parent because
51980        // the portal will get pushed immediately.
51981        {
51982          unmountHostComponents(finishedRoot, current);
51983        }
51984
51985        return;
51986      }
51987
51988    case FundamentalComponent:
51989      {
51990
51991        return;
51992      }
51993
51994    case DehydratedFragment:
51995      {
51996
51997        return;
51998      }
51999
52000    case ScopeComponent:
52001      {
52002
52003        return;
52004      }
52005  }
52006}
52007
52008function commitNestedUnmounts(finishedRoot, root, renderPriorityLevel) {
52009  // While we're inside a removed host node we don't want to call
52010  // removeChild on the inner nodes because they're removed by the top
52011  // call anyway. We also want to call componentWillUnmount on all
52012  // composites before this host node is removed from the tree. Therefore
52013  // we do an inner loop while we're still inside the host node.
52014  var node = root;
52015
52016  while (true) {
52017    commitUnmount(finishedRoot, node); // Visit children because they may contain more composite or host nodes.
52018    // Skip portals because commitUnmount() currently visits them recursively.
52019
52020    if (node.child !== null && ( // If we use mutation we drill down into portals using commitUnmount above.
52021    // If we don't use mutation we drill down into portals here instead.
52022     node.tag !== HostPortal)) {
52023      node.child.return = node;
52024      node = node.child;
52025      continue;
52026    }
52027
52028    if (node === root) {
52029      return;
52030    }
52031
52032    while (node.sibling === null) {
52033      if (node.return === null || node.return === root) {
52034        return;
52035      }
52036
52037      node = node.return;
52038    }
52039
52040    node.sibling.return = node.return;
52041    node = node.sibling;
52042  }
52043}
52044
52045function detachFiberMutation(fiber) {
52046  // Cut off the return pointers to disconnect it from the tree. Ideally, we
52047  // should clear the child pointer of the parent alternate to let this
52048  // get GC:ed but we don't know which for sure which parent is the current
52049  // one so we'll settle for GC:ing the subtree of this child. This child
52050  // itself will be GC:ed when the parent updates the next time.
52051  // Note: we cannot null out sibling here, otherwise it can cause issues
52052  // with findDOMNode and how it requires the sibling field to carry out
52053  // traversal in a later effect. See PR #16820. We now clear the sibling
52054  // field after effects, see: detachFiberAfterEffects.
52055  //
52056  // Don't disconnect stateNode now; it will be detached in detachFiberAfterEffects.
52057  // It may be required if the current component is an error boundary,
52058  // and one of its descendants throws while unmounting a passive effect.
52059  fiber.alternate = null;
52060  fiber.child = null;
52061  fiber.dependencies = null;
52062  fiber.firstEffect = null;
52063  fiber.lastEffect = null;
52064  fiber.memoizedProps = null;
52065  fiber.memoizedState = null;
52066  fiber.pendingProps = null;
52067  fiber.return = null;
52068  fiber.updateQueue = null;
52069
52070  {
52071    fiber._debugOwner = null;
52072  }
52073}
52074
52075function getHostParentFiber(fiber) {
52076  var parent = fiber.return;
52077
52078  while (parent !== null) {
52079    if (isHostParent(parent)) {
52080      return parent;
52081    }
52082
52083    parent = parent.return;
52084  }
52085
52086  {
52087    {
52088      throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." );
52089    }
52090  }
52091}
52092
52093function isHostParent(fiber) {
52094  return fiber.tag === HostComponent || fiber.tag === HostRoot || fiber.tag === HostPortal;
52095}
52096
52097function getHostSibling(fiber) {
52098  // We're going to search forward into the tree until we find a sibling host
52099  // node. Unfortunately, if multiple insertions are done in a row we have to
52100  // search past them. This leads to exponential search for the next sibling.
52101  // TODO: Find a more efficient way to do this.
52102  var node = fiber;
52103
52104  siblings: while (true) {
52105    // If we didn't find anything, let's try the next sibling.
52106    while (node.sibling === null) {
52107      if (node.return === null || isHostParent(node.return)) {
52108        // If we pop out of the root or hit the parent the fiber we are the
52109        // last sibling.
52110        return null;
52111      }
52112
52113      node = node.return;
52114    }
52115
52116    node.sibling.return = node.return;
52117    node = node.sibling;
52118
52119    while (node.tag !== HostComponent && node.tag !== HostText && node.tag !== DehydratedFragment) {
52120      // If it is not host node and, we might have a host node inside it.
52121      // Try to search down until we find one.
52122      if (node.flags & Placement) {
52123        // If we don't have a child, try the siblings instead.
52124        continue siblings;
52125      } // If we don't have a child, try the siblings instead.
52126      // We also skip portals because they are not part of this host tree.
52127
52128
52129      if (node.child === null || node.tag === HostPortal) {
52130        continue siblings;
52131      } else {
52132        node.child.return = node;
52133        node = node.child;
52134      }
52135    } // Check if this host node is stable or about to be placed.
52136
52137
52138    if (!(node.flags & Placement)) {
52139      // Found it!
52140      return node.stateNode;
52141    }
52142  }
52143}
52144
52145function commitPlacement(finishedWork) {
52146
52147
52148  var parentFiber = getHostParentFiber(finishedWork); // Note: these two variables *must* always be updated together.
52149
52150  var parent;
52151  var isContainer;
52152  var parentStateNode = parentFiber.stateNode;
52153
52154  switch (parentFiber.tag) {
52155    case HostComponent:
52156      parent = parentStateNode;
52157      isContainer = false;
52158      break;
52159
52160    case HostRoot:
52161      parent = parentStateNode.containerInfo;
52162      isContainer = true;
52163      break;
52164
52165    case HostPortal:
52166      parent = parentStateNode.containerInfo;
52167      isContainer = true;
52168      break;
52169
52170    case FundamentalComponent:
52171
52172    // eslint-disable-next-line-no-fallthrough
52173
52174    default:
52175      {
52176        {
52177          throw Error( "Invalid host parent fiber. This error is likely caused by a bug in React. Please file an issue." );
52178        }
52179      }
52180
52181  }
52182
52183  if (parentFiber.flags & ContentReset) {
52184    // Reset the text content of the parent before doing any insertions
52185    resetTextContent(parent); // Clear ContentReset from the effect tag
52186
52187    parentFiber.flags &= ~ContentReset;
52188  }
52189
52190  var before = getHostSibling(finishedWork); // We only have the top Fiber that was inserted but we need to recurse down its
52191  // children to find all the terminal nodes.
52192
52193  if (isContainer) {
52194    insertOrAppendPlacementNodeIntoContainer(finishedWork, before, parent);
52195  } else {
52196    insertOrAppendPlacementNode(finishedWork, before, parent);
52197  }
52198}
52199
52200function insertOrAppendPlacementNodeIntoContainer(node, before, parent) {
52201  var tag = node.tag;
52202  var isHost = tag === HostComponent || tag === HostText;
52203
52204  if (isHost || enableFundamentalAPI ) {
52205    var stateNode = isHost ? node.stateNode : node.stateNode.instance;
52206
52207    if (before) {
52208      insertInContainerBefore(parent, stateNode, before);
52209    } else {
52210      appendChildToContainer(parent, stateNode);
52211    }
52212  } else if (tag === HostPortal) ; else {
52213    var child = node.child;
52214
52215    if (child !== null) {
52216      insertOrAppendPlacementNodeIntoContainer(child, before, parent);
52217      var sibling = child.sibling;
52218
52219      while (sibling !== null) {
52220        insertOrAppendPlacementNodeIntoContainer(sibling, before, parent);
52221        sibling = sibling.sibling;
52222      }
52223    }
52224  }
52225}
52226
52227function insertOrAppendPlacementNode(node, before, parent) {
52228  var tag = node.tag;
52229  var isHost = tag === HostComponent || tag === HostText;
52230
52231  if (isHost || enableFundamentalAPI ) {
52232    var stateNode = isHost ? node.stateNode : node.stateNode.instance;
52233
52234    if (before) {
52235      insertBefore(parent, stateNode, before);
52236    } else {
52237      appendChild(parent, stateNode);
52238    }
52239  } else if (tag === HostPortal) ; else {
52240    var child = node.child;
52241
52242    if (child !== null) {
52243      insertOrAppendPlacementNode(child, before, parent);
52244      var sibling = child.sibling;
52245
52246      while (sibling !== null) {
52247        insertOrAppendPlacementNode(sibling, before, parent);
52248        sibling = sibling.sibling;
52249      }
52250    }
52251  }
52252}
52253
52254function unmountHostComponents(finishedRoot, current, renderPriorityLevel) {
52255  // We only have the top Fiber that was deleted but we need to recurse down its
52256  // children to find all the terminal nodes.
52257  var node = current; // Each iteration, currentParent is populated with node's host parent if not
52258  // currentParentIsValid.
52259
52260  var currentParentIsValid = false; // Note: these two variables *must* always be updated together.
52261
52262  var currentParent;
52263  var currentParentIsContainer;
52264
52265  while (true) {
52266    if (!currentParentIsValid) {
52267      var parent = node.return;
52268
52269      findParent: while (true) {
52270        if (!(parent !== null)) {
52271          {
52272            throw Error( "Expected to find a host parent. This error is likely caused by a bug in React. Please file an issue." );
52273          }
52274        }
52275
52276        var parentStateNode = parent.stateNode;
52277
52278        switch (parent.tag) {
52279          case HostComponent:
52280            currentParent = parentStateNode;
52281            currentParentIsContainer = false;
52282            break findParent;
52283
52284          case HostRoot:
52285            currentParent = parentStateNode.containerInfo;
52286            currentParentIsContainer = true;
52287            break findParent;
52288
52289          case HostPortal:
52290            currentParent = parentStateNode.containerInfo;
52291            currentParentIsContainer = true;
52292            break findParent;
52293
52294        }
52295
52296        parent = parent.return;
52297      }
52298
52299      currentParentIsValid = true;
52300    }
52301
52302    if (node.tag === HostComponent || node.tag === HostText) {
52303      commitNestedUnmounts(finishedRoot, node); // After all the children have unmounted, it is now safe to remove the
52304      // node from the tree.
52305
52306      if (currentParentIsContainer) {
52307        removeChildFromContainer(currentParent, node.stateNode);
52308      } else {
52309        removeChild(currentParent, node.stateNode);
52310      } // Don't visit children because we already visited them.
52311
52312    } else if (node.tag === HostPortal) {
52313      if (node.child !== null) {
52314        // When we go into a portal, it becomes the parent to remove from.
52315        // We will reassign it back when we pop the portal on the way up.
52316        currentParent = node.stateNode.containerInfo;
52317        currentParentIsContainer = true; // Visit children because portals might contain host components.
52318
52319        node.child.return = node;
52320        node = node.child;
52321        continue;
52322      }
52323    } else {
52324      commitUnmount(finishedRoot, node); // Visit children because we may find more host components below.
52325
52326      if (node.child !== null) {
52327        node.child.return = node;
52328        node = node.child;
52329        continue;
52330      }
52331    }
52332
52333    if (node === current) {
52334      return;
52335    }
52336
52337    while (node.sibling === null) {
52338      if (node.return === null || node.return === current) {
52339        return;
52340      }
52341
52342      node = node.return;
52343
52344      if (node.tag === HostPortal) {
52345        // When we go out of the portal, we need to restore the parent.
52346        // Since we don't keep a stack of them, we will search for it.
52347        currentParentIsValid = false;
52348      }
52349    }
52350
52351    node.sibling.return = node.return;
52352    node = node.sibling;
52353  }
52354}
52355
52356function commitDeletion(finishedRoot, current, renderPriorityLevel) {
52357  {
52358    // Recursively delete all host nodes from the parent.
52359    // Detach refs and call componentWillUnmount() on the whole subtree.
52360    unmountHostComponents(finishedRoot, current);
52361  }
52362
52363  var alternate = current.alternate;
52364  detachFiberMutation(current);
52365
52366  if (alternate !== null) {
52367    detachFiberMutation(alternate);
52368  }
52369}
52370
52371function commitWork(current, finishedWork) {
52372
52373  switch (finishedWork.tag) {
52374    case FunctionComponent:
52375    case ForwardRef:
52376    case MemoComponent:
52377    case SimpleMemoComponent:
52378    case Block:
52379      {
52380        // Layout effects are destroyed during the mutation phase so that all
52381        // destroy functions for all fibers are called before any create functions.
52382        // This prevents sibling component effects from interfering with each other,
52383        // e.g. a destroy function in one component should never override a ref set
52384        // by a create function in another component during the same commit.
52385        {
52386          commitHookEffectListUnmount(Layout | HasEffect, finishedWork);
52387        }
52388
52389        return;
52390      }
52391
52392    case ClassComponent:
52393      {
52394        return;
52395      }
52396
52397    case HostComponent:
52398      {
52399        var instance = finishedWork.stateNode;
52400
52401        if (instance != null) {
52402          // Commit the work prepared earlier.
52403          var newProps = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps
52404          // as the newProps. The updatePayload will contain the real change in
52405          // this case.
52406
52407          var oldProps = current !== null ? current.memoizedProps : newProps;
52408          var type = finishedWork.type; // TODO: Type the updateQueue to be specific to host components.
52409
52410          var updatePayload = finishedWork.updateQueue;
52411          finishedWork.updateQueue = null;
52412
52413          if (updatePayload !== null) {
52414            commitUpdate(instance, updatePayload, type, oldProps, newProps);
52415          }
52416        }
52417
52418        return;
52419      }
52420
52421    case HostText:
52422      {
52423        if (!(finishedWork.stateNode !== null)) {
52424          {
52425            throw Error( "This should have a text node initialized. This error is likely caused by a bug in React. Please file an issue." );
52426          }
52427        }
52428
52429        var textInstance = finishedWork.stateNode;
52430        var newText = finishedWork.memoizedProps; // For hydration we reuse the update path but we treat the oldProps
52431        // as the newProps. The updatePayload will contain the real change in
52432        // this case.
52433
52434        var oldText = current !== null ? current.memoizedProps : newText;
52435        commitTextUpdate(textInstance, oldText, newText);
52436        return;
52437      }
52438
52439    case HostRoot:
52440      {
52441        {
52442          var _root = finishedWork.stateNode;
52443
52444          if (_root.hydrate) {
52445            // We've just hydrated. No need to hydrate again.
52446            _root.hydrate = false;
52447            commitHydratedContainer(_root.containerInfo);
52448          }
52449        }
52450
52451        return;
52452      }
52453
52454    case Profiler:
52455      {
52456        return;
52457      }
52458
52459    case SuspenseComponent:
52460      {
52461        commitSuspenseComponent(finishedWork);
52462        attachSuspenseRetryListeners(finishedWork);
52463        return;
52464      }
52465
52466    case SuspenseListComponent:
52467      {
52468        attachSuspenseRetryListeners(finishedWork);
52469        return;
52470      }
52471
52472    case IncompleteClassComponent:
52473      {
52474        return;
52475      }
52476
52477    case FundamentalComponent:
52478      {
52479
52480        break;
52481      }
52482
52483    case ScopeComponent:
52484      {
52485
52486        break;
52487      }
52488
52489    case OffscreenComponent:
52490    case LegacyHiddenComponent:
52491      {
52492        var newState = finishedWork.memoizedState;
52493        var isHidden = newState !== null;
52494        hideOrUnhideAllChildren(finishedWork, isHidden);
52495        return;
52496      }
52497  }
52498
52499  {
52500    {
52501      throw Error( "This unit of work tag should not have side-effects. This error is likely caused by a bug in React. Please file an issue." );
52502    }
52503  }
52504}
52505
52506function commitSuspenseComponent(finishedWork) {
52507  var newState = finishedWork.memoizedState;
52508
52509  if (newState !== null) {
52510    markCommitTimeOfFallback();
52511
52512    {
52513      // Hide the Offscreen component that contains the primary children. TODO:
52514      // Ideally, this effect would have been scheduled on the Offscreen fiber
52515      // itself. That's how unhiding works: the Offscreen component schedules an
52516      // effect on itself. However, in this case, the component didn't complete,
52517      // so the fiber was never added to the effect list in the normal path. We
52518      // could have appended it to the effect list in the Suspense component's
52519      // second pass, but doing it this way is less complicated. This would be
52520      // simpler if we got rid of the effect list and traversed the tree, like
52521      // we're planning to do.
52522      var primaryChildParent = finishedWork.child;
52523      hideOrUnhideAllChildren(primaryChildParent, true);
52524    }
52525  }
52526}
52527
52528function commitSuspenseHydrationCallbacks(finishedRoot, finishedWork) {
52529
52530  var newState = finishedWork.memoizedState;
52531
52532  if (newState === null) {
52533    var current = finishedWork.alternate;
52534
52535    if (current !== null) {
52536      var prevState = current.memoizedState;
52537
52538      if (prevState !== null) {
52539        var suspenseInstance = prevState.dehydrated;
52540
52541        if (suspenseInstance !== null) {
52542          commitHydratedSuspenseInstance(suspenseInstance);
52543        }
52544      }
52545    }
52546  }
52547}
52548
52549function attachSuspenseRetryListeners(finishedWork) {
52550  // If this boundary just timed out, then it will have a set of wakeables.
52551  // For each wakeable, attach a listener so that when it resolves, React
52552  // attempts to re-render the boundary in the primary (pre-timeout) state.
52553  var wakeables = finishedWork.updateQueue;
52554
52555  if (wakeables !== null) {
52556    finishedWork.updateQueue = null;
52557    var retryCache = finishedWork.stateNode;
52558
52559    if (retryCache === null) {
52560      retryCache = finishedWork.stateNode = new PossiblyWeakSet();
52561    }
52562
52563    wakeables.forEach(function (wakeable) {
52564      // Memoize using the boundary fiber to prevent redundant listeners.
52565      var retry = resolveRetryWakeable.bind(null, finishedWork, wakeable);
52566
52567      if (!retryCache.has(wakeable)) {
52568        {
52569          if (wakeable.__reactDoNotTraceInteractions !== true) {
52570            retry = tracing.unstable_wrap(retry);
52571          }
52572        }
52573
52574        retryCache.add(wakeable);
52575        wakeable.then(retry, retry);
52576      }
52577    });
52578  }
52579} // This function detects when a Suspense boundary goes from visible to hidden.
52580// It returns false if the boundary is already hidden.
52581// TODO: Use an effect tag.
52582
52583
52584function isSuspenseBoundaryBeingHidden(current, finishedWork) {
52585  if (current !== null) {
52586    var oldState = current.memoizedState;
52587
52588    if (oldState === null || oldState.dehydrated !== null) {
52589      var newState = finishedWork.memoizedState;
52590      return newState !== null && newState.dehydrated === null;
52591    }
52592  }
52593
52594  return false;
52595}
52596
52597function commitResetTextContent(current) {
52598
52599  resetTextContent(current.stateNode);
52600}
52601
52602var COMPONENT_TYPE = 0;
52603var HAS_PSEUDO_CLASS_TYPE = 1;
52604var ROLE_TYPE = 2;
52605var TEST_NAME_TYPE = 3;
52606var TEXT_TYPE = 4;
52607
52608if (typeof Symbol === 'function' && Symbol.for) {
52609  var symbolFor$1 = Symbol.for;
52610  COMPONENT_TYPE = symbolFor$1('selector.component');
52611  HAS_PSEUDO_CLASS_TYPE = symbolFor$1('selector.has_pseudo_class');
52612  ROLE_TYPE = symbolFor$1('selector.role');
52613  TEST_NAME_TYPE = symbolFor$1('selector.test_id');
52614  TEXT_TYPE = symbolFor$1('selector.text');
52615}
52616var commitHooks = [];
52617function onCommitRoot$1() {
52618  {
52619    commitHooks.forEach(function (commitHook) {
52620      return commitHook();
52621    });
52622  }
52623}
52624
52625var ceil = Math.ceil;
52626var ReactCurrentDispatcher$2 = ReactSharedInternals.ReactCurrentDispatcher,
52627    ReactCurrentOwner$2 = ReactSharedInternals.ReactCurrentOwner,
52628    IsSomeRendererActing = ReactSharedInternals.IsSomeRendererActing;
52629var NoContext =
52630/*             */
526310;
52632var BatchedContext =
52633/*               */
526341;
52635var EventContext =
52636/*                 */
526372;
52638var DiscreteEventContext =
52639/*         */
526404;
52641var LegacyUnbatchedContext =
52642/*       */
526438;
52644var RenderContext =
52645/*                */
5264616;
52647var CommitContext =
52648/*                */
5264932;
52650var RetryAfterError =
52651/*       */
5265264;
52653var RootIncomplete = 0;
52654var RootFatalErrored = 1;
52655var RootErrored = 2;
52656var RootSuspended = 3;
52657var RootSuspendedWithDelay = 4;
52658var RootCompleted = 5; // Describes where we are in the React execution stack
52659
52660var executionContext = NoContext; // The root we're working on
52661
52662var workInProgressRoot = null; // The fiber we're working on
52663
52664var workInProgress = null; // The lanes we're rendering
52665
52666var workInProgressRootRenderLanes = NoLanes; // Stack that allows components to change the render lanes for its subtree
52667// This is a superset of the lanes we started working on at the root. The only
52668// case where it's different from `workInProgressRootRenderLanes` is when we
52669// enter a subtree that is hidden and needs to be unhidden: Suspense and
52670// Offscreen component.
52671//
52672// Most things in the work loop should deal with workInProgressRootRenderLanes.
52673// Most things in begin/complete phases should deal with subtreeRenderLanes.
52674
52675var subtreeRenderLanes = NoLanes;
52676var subtreeRenderLanesCursor = createCursor(NoLanes); // Whether to root completed, errored, suspended, etc.
52677
52678var workInProgressRootExitStatus = RootIncomplete; // A fatal error, if one is thrown
52679
52680var workInProgressRootFatalError = null; // "Included" lanes refer to lanes that were worked on during this render. It's
52681// slightly different than `renderLanes` because `renderLanes` can change as you
52682// enter and exit an Offscreen tree. This value is the combination of all render
52683// lanes for the entire render phase.
52684
52685var workInProgressRootIncludedLanes = NoLanes; // The work left over by components that were visited during this render. Only
52686// includes unprocessed updates, not work in bailed out children.
52687
52688var workInProgressRootSkippedLanes = NoLanes; // Lanes that were updated (in an interleaved event) during this render.
52689
52690var workInProgressRootUpdatedLanes = NoLanes; // Lanes that were pinged (in an interleaved event) during this render.
52691
52692var workInProgressRootPingedLanes = NoLanes;
52693var mostRecentlyUpdatedRoot = null; // The most recent time we committed a fallback. This lets us ensure a train
52694// model where we don't commit new loading states in too quick succession.
52695
52696var globalMostRecentFallbackTime = 0;
52697var FALLBACK_THROTTLE_MS = 500; // The absolute time for when we should start giving up on rendering
52698// more and prefer CPU suspense heuristics instead.
52699
52700var workInProgressRootRenderTargetTime = Infinity; // How long a render is supposed to take before we start following CPU
52701// suspense heuristics and opt out of rendering more content.
52702
52703var RENDER_TIMEOUT_MS = 500;
52704
52705function resetRenderTimer() {
52706  workInProgressRootRenderTargetTime = now() + RENDER_TIMEOUT_MS;
52707}
52708
52709function getRenderTargetTime() {
52710  return workInProgressRootRenderTargetTime;
52711}
52712var nextEffect = null;
52713var hasUncaughtError = false;
52714var firstUncaughtError = null;
52715var legacyErrorBoundariesThatAlreadyFailed = null;
52716var rootDoesHavePassiveEffects = false;
52717var rootWithPendingPassiveEffects = null;
52718var pendingPassiveEffectsRenderPriority = NoPriority$1;
52719var pendingPassiveEffectsLanes = NoLanes;
52720var pendingPassiveHookEffectsMount = [];
52721var pendingPassiveHookEffectsUnmount = [];
52722var rootsWithPendingDiscreteUpdates = null; // Use these to prevent an infinite loop of nested updates
52723
52724var NESTED_UPDATE_LIMIT = 50;
52725var nestedUpdateCount = 0;
52726var rootWithNestedUpdates = null;
52727var NESTED_PASSIVE_UPDATE_LIMIT = 50;
52728var nestedPassiveUpdateCount = 0; // Marks the need to reschedule pending interactions at these lanes
52729// during the commit phase. This enables them to be traced across components
52730// that spawn new work during render. E.g. hidden boundaries, suspended SSR
52731// hydration or SuspenseList.
52732// TODO: Can use a bitmask instead of an array
52733
52734var spawnedWorkDuringRender = null; // If two updates are scheduled within the same event, we should treat their
52735// event times as simultaneous, even if the actual clock time has advanced
52736// between the first and second call.
52737
52738var currentEventTime = NoTimestamp;
52739var currentEventWipLanes = NoLanes;
52740var currentEventPendingLanes = NoLanes; // Dev only flag that tracks if passive effects are currently being flushed.
52741// We warn about state updates for unmounted components differently in this case.
52742
52743var isFlushingPassiveEffects = false;
52744var focusedInstanceHandle = null;
52745var shouldFireAfterActiveInstanceBlur = false;
52746function getWorkInProgressRoot() {
52747  return workInProgressRoot;
52748}
52749function requestEventTime() {
52750  if ((executionContext & (RenderContext | CommitContext)) !== NoContext) {
52751    // We're inside React, so it's fine to read the actual time.
52752    return now();
52753  } // We're not inside React, so we may be in the middle of a browser event.
52754
52755
52756  if (currentEventTime !== NoTimestamp) {
52757    // Use the same start time for all updates until we enter React again.
52758    return currentEventTime;
52759  } // This is the first update since React yielded. Compute a new start time.
52760
52761
52762  currentEventTime = now();
52763  return currentEventTime;
52764}
52765function requestUpdateLane(fiber) {
52766  // Special cases
52767  var mode = fiber.mode;
52768
52769  if ((mode & BlockingMode) === NoMode) {
52770    return SyncLane;
52771  } else if ((mode & ConcurrentMode) === NoMode) {
52772    return getCurrentPriorityLevel() === ImmediatePriority$1 ? SyncLane : SyncBatchedLane;
52773  } // The algorithm for assigning an update to a lane should be stable for all
52774  // updates at the same priority within the same event. To do this, the inputs
52775  // to the algorithm must be the same. For example, we use the `renderLanes`
52776  // to avoid choosing a lane that is already in the middle of rendering.
52777  //
52778  // However, the "included" lanes could be mutated in between updates in the
52779  // same event, like if you perform an update inside `flushSync`. Or any other
52780  // code path that might call `prepareFreshStack`.
52781  //
52782  // The trick we use is to cache the first of each of these inputs within an
52783  // event. Then reset the cached values once we can be sure the event is over.
52784  // Our heuristic for that is whenever we enter a concurrent work loop.
52785  //
52786  // We'll do the same for `currentEventPendingLanes` below.
52787
52788
52789  if (currentEventWipLanes === NoLanes) {
52790    currentEventWipLanes = workInProgressRootIncludedLanes;
52791  }
52792
52793  var isTransition = requestCurrentTransition() !== NoTransition;
52794
52795  if (isTransition) {
52796    if (currentEventPendingLanes !== NoLanes) {
52797      currentEventPendingLanes = mostRecentlyUpdatedRoot !== null ? mostRecentlyUpdatedRoot.pendingLanes : NoLanes;
52798    }
52799
52800    return findTransitionLane(currentEventWipLanes, currentEventPendingLanes);
52801  } // TODO: Remove this dependency on the Scheduler priority.
52802  // To do that, we're replacing it with an update lane priority.
52803
52804
52805  var schedulerPriority = getCurrentPriorityLevel(); // The old behavior was using the priority level of the Scheduler.
52806  // This couples React to the Scheduler internals, so we're replacing it
52807  // with the currentUpdateLanePriority above. As an example of how this
52808  // could be problematic, if we're not inside `Scheduler.runWithPriority`,
52809  // then we'll get the priority of the current running Scheduler task,
52810  // which is probably not what we want.
52811
52812  var lane;
52813
52814  if ( // TODO: Temporary. We're removing the concept of discrete updates.
52815  (executionContext & DiscreteEventContext) !== NoContext && schedulerPriority === UserBlockingPriority$2) {
52816    lane = findUpdateLane(InputDiscreteLanePriority, currentEventWipLanes);
52817  } else {
52818    var schedulerLanePriority = schedulerPriorityToLanePriority(schedulerPriority);
52819
52820    lane = findUpdateLane(schedulerLanePriority, currentEventWipLanes);
52821  }
52822
52823  return lane;
52824}
52825
52826function requestRetryLane(fiber) {
52827  // This is a fork of `requestUpdateLane` designed specifically for Suspense
52828  // "retries" — a special update that attempts to flip a Suspense boundary
52829  // from its placeholder state to its primary/resolved state.
52830  // Special cases
52831  var mode = fiber.mode;
52832
52833  if ((mode & BlockingMode) === NoMode) {
52834    return SyncLane;
52835  } else if ((mode & ConcurrentMode) === NoMode) {
52836    return getCurrentPriorityLevel() === ImmediatePriority$1 ? SyncLane : SyncBatchedLane;
52837  } // See `requestUpdateLane` for explanation of `currentEventWipLanes`
52838
52839
52840  if (currentEventWipLanes === NoLanes) {
52841    currentEventWipLanes = workInProgressRootIncludedLanes;
52842  }
52843
52844  return findRetryLane(currentEventWipLanes);
52845}
52846
52847function scheduleUpdateOnFiber(fiber, lane, eventTime) {
52848  checkForNestedUpdates();
52849  warnAboutRenderPhaseUpdatesInDEV(fiber);
52850  var root = markUpdateLaneFromFiberToRoot(fiber, lane);
52851
52852  if (root === null) {
52853    warnAboutUpdateOnUnmountedFiberInDEV(fiber);
52854    return null;
52855  } // Mark that the root has a pending update.
52856
52857
52858  markRootUpdated(root, lane, eventTime);
52859
52860  if (root === workInProgressRoot) {
52861    // Received an update to a tree that's in the middle of rendering. Mark
52862    // that there was an interleaved update work on this root. Unless the
52863    // `deferRenderPhaseUpdateToNextBatch` flag is off and this is a render
52864    // phase update. In that case, we don't treat render phase updates as if
52865    // they were interleaved, for backwards compat reasons.
52866    {
52867      workInProgressRootUpdatedLanes = mergeLanes(workInProgressRootUpdatedLanes, lane);
52868    }
52869
52870    if (workInProgressRootExitStatus === RootSuspendedWithDelay) {
52871      // The root already suspended with a delay, which means this render
52872      // definitely won't finish. Since we have a new update, let's mark it as
52873      // suspended now, right before marking the incoming update. This has the
52874      // effect of interrupting the current render and switching to the update.
52875      // TODO: Make sure this doesn't override pings that happen while we've
52876      // already started rendering.
52877      markRootSuspended$1(root, workInProgressRootRenderLanes);
52878    }
52879  } // TODO: requestUpdateLanePriority also reads the priority. Pass the
52880  // priority as an argument to that function and this one.
52881
52882
52883  var priorityLevel = getCurrentPriorityLevel();
52884
52885  if (lane === SyncLane) {
52886    if ( // Check if we're inside unbatchedUpdates
52887    (executionContext & LegacyUnbatchedContext) !== NoContext && // Check if we're not already rendering
52888    (executionContext & (RenderContext | CommitContext)) === NoContext) {
52889      // Register pending interactions on the root to avoid losing traced interaction data.
52890      schedulePendingInteractions(root, lane); // This is a legacy edge case. The initial mount of a ReactDOM.render-ed
52891      // root inside of batchedUpdates should be synchronous, but layout updates
52892      // should be deferred until the end of the batch.
52893
52894      performSyncWorkOnRoot(root);
52895    } else {
52896      ensureRootIsScheduled(root, eventTime);
52897      schedulePendingInteractions(root, lane);
52898
52899      if (executionContext === NoContext) {
52900        // Flush the synchronous work now, unless we're already working or inside
52901        // a batch. This is intentionally inside scheduleUpdateOnFiber instead of
52902        // scheduleCallbackForFiber to preserve the ability to schedule a callback
52903        // without immediately flushing it. We only do this for user-initiated
52904        // updates, to preserve historical behavior of legacy mode.
52905        resetRenderTimer();
52906        flushSyncCallbackQueue();
52907      }
52908    }
52909  } else {
52910    // Schedule a discrete update but only if it's not Sync.
52911    if ((executionContext & DiscreteEventContext) !== NoContext && ( // Only updates at user-blocking priority or greater are considered
52912    // discrete, even inside a discrete event.
52913    priorityLevel === UserBlockingPriority$2 || priorityLevel === ImmediatePriority$1)) {
52914      // This is the result of a discrete event. Track the lowest priority
52915      // discrete update per root so we can flush them early, if needed.
52916      if (rootsWithPendingDiscreteUpdates === null) {
52917        rootsWithPendingDiscreteUpdates = new Set([root]);
52918      } else {
52919        rootsWithPendingDiscreteUpdates.add(root);
52920      }
52921    } // Schedule other updates after in case the callback is sync.
52922
52923
52924    ensureRootIsScheduled(root, eventTime);
52925    schedulePendingInteractions(root, lane);
52926  } // We use this when assigning a lane for a transition inside
52927  // `requestUpdateLane`. We assume it's the same as the root being updated,
52928  // since in the common case of a single root app it probably is. If it's not
52929  // the same root, then it's not a huge deal, we just might batch more stuff
52930  // together more than necessary.
52931
52932
52933  mostRecentlyUpdatedRoot = root;
52934} // This is split into a separate function so we can mark a fiber with pending
52935// work without treating it as a typical update that originates from an event;
52936// e.g. retrying a Suspense boundary isn't an update, but it does schedule work
52937// on a fiber.
52938
52939function markUpdateLaneFromFiberToRoot(sourceFiber, lane) {
52940  // Update the source fiber's lanes
52941  sourceFiber.lanes = mergeLanes(sourceFiber.lanes, lane);
52942  var alternate = sourceFiber.alternate;
52943
52944  if (alternate !== null) {
52945    alternate.lanes = mergeLanes(alternate.lanes, lane);
52946  }
52947
52948  {
52949    if (alternate === null && (sourceFiber.flags & (Placement | Hydrating)) !== NoFlags) {
52950      warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);
52951    }
52952  } // Walk the parent path to the root and update the child expiration time.
52953
52954
52955  var node = sourceFiber;
52956  var parent = sourceFiber.return;
52957
52958  while (parent !== null) {
52959    parent.childLanes = mergeLanes(parent.childLanes, lane);
52960    alternate = parent.alternate;
52961
52962    if (alternate !== null) {
52963      alternate.childLanes = mergeLanes(alternate.childLanes, lane);
52964    } else {
52965      {
52966        if ((parent.flags & (Placement | Hydrating)) !== NoFlags) {
52967          warnAboutUpdateOnNotYetMountedFiberInDEV(sourceFiber);
52968        }
52969      }
52970    }
52971
52972    node = parent;
52973    parent = parent.return;
52974  }
52975
52976  if (node.tag === HostRoot) {
52977    var root = node.stateNode;
52978    return root;
52979  } else {
52980    return null;
52981  }
52982} // Use this function to schedule a task for a root. There's only one task per
52983// root; if a task was already scheduled, we'll check to make sure the priority
52984// of the existing task is the same as the priority of the next level that the
52985// root has work on. This function is called on every update, and right before
52986// exiting a task.
52987
52988
52989function ensureRootIsScheduled(root, currentTime) {
52990  var existingCallbackNode = root.callbackNode; // Check if any lanes are being starved by other work. If so, mark them as
52991  // expired so we know to work on those next.
52992
52993  markStarvedLanesAsExpired(root, currentTime); // Determine the next lanes to work on, and their priority.
52994
52995  var nextLanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes); // This returns the priority level computed during the `getNextLanes` call.
52996
52997  var newCallbackPriority = returnNextLanesPriority();
52998
52999  if (nextLanes === NoLanes) {
53000    // Special case: There's nothing to work on.
53001    if (existingCallbackNode !== null) {
53002      cancelCallback(existingCallbackNode);
53003      root.callbackNode = null;
53004      root.callbackPriority = NoLanePriority;
53005    }
53006
53007    return;
53008  } // Check if there's an existing task. We may be able to reuse it.
53009
53010
53011  if (existingCallbackNode !== null) {
53012    var existingCallbackPriority = root.callbackPriority;
53013
53014    if (existingCallbackPriority === newCallbackPriority) {
53015      // The priority hasn't changed. We can reuse the existing task. Exit.
53016      return;
53017    } // The priority changed. Cancel the existing callback. We'll schedule a new
53018    // one below.
53019
53020
53021    cancelCallback(existingCallbackNode);
53022  } // Schedule a new callback.
53023
53024
53025  var newCallbackNode;
53026
53027  if (newCallbackPriority === SyncLanePriority) {
53028    // Special case: Sync React callbacks are scheduled on a special
53029    // internal queue
53030    newCallbackNode = scheduleSyncCallback(performSyncWorkOnRoot.bind(null, root));
53031  } else if (newCallbackPriority === SyncBatchedLanePriority) {
53032    newCallbackNode = scheduleCallback(ImmediatePriority$1, performSyncWorkOnRoot.bind(null, root));
53033  } else {
53034    var schedulerPriorityLevel = lanePriorityToSchedulerPriority(newCallbackPriority);
53035    newCallbackNode = scheduleCallback(schedulerPriorityLevel, performConcurrentWorkOnRoot.bind(null, root));
53036  }
53037
53038  root.callbackPriority = newCallbackPriority;
53039  root.callbackNode = newCallbackNode;
53040} // This is the entry point for every concurrent task, i.e. anything that
53041// goes through Scheduler.
53042
53043
53044function performConcurrentWorkOnRoot(root) {
53045  // Since we know we're in a React event, we can clear the current
53046  // event time. The next update will compute a new event time.
53047  currentEventTime = NoTimestamp;
53048  currentEventWipLanes = NoLanes;
53049  currentEventPendingLanes = NoLanes;
53050
53051  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
53052    {
53053      throw Error( "Should not already be working." );
53054    }
53055  } // Flush any pending passive effects before deciding which lanes to work on,
53056  // in case they schedule additional work.
53057
53058
53059  var originalCallbackNode = root.callbackNode;
53060  var didFlushPassiveEffects = flushPassiveEffects();
53061
53062  if (didFlushPassiveEffects) {
53063    // Something in the passive effect phase may have canceled the current task.
53064    // Check if the task node for this root was changed.
53065    if (root.callbackNode !== originalCallbackNode) {
53066      // The current task was canceled. Exit. We don't need to call
53067      // `ensureRootIsScheduled` because the check above implies either that
53068      // there's a new task, or that there's no remaining work on this root.
53069      return null;
53070    }
53071  } // Determine the next expiration time to work on, using the fields stored
53072  // on the root.
53073
53074
53075  var lanes = getNextLanes(root, root === workInProgressRoot ? workInProgressRootRenderLanes : NoLanes);
53076
53077  if (lanes === NoLanes) {
53078    // Defensive coding. This is never expected to happen.
53079    return null;
53080  }
53081
53082  var exitStatus = renderRootConcurrent(root, lanes);
53083
53084  if (includesSomeLane(workInProgressRootIncludedLanes, workInProgressRootUpdatedLanes)) {
53085    // The render included lanes that were updated during the render phase.
53086    // For example, when unhiding a hidden tree, we include all the lanes
53087    // that were previously skipped when the tree was hidden. That set of
53088    // lanes is a superset of the lanes we started rendering with.
53089    //
53090    // So we'll throw out the current work and restart.
53091    prepareFreshStack(root, NoLanes);
53092  } else if (exitStatus !== RootIncomplete) {
53093    if (exitStatus === RootErrored) {
53094      executionContext |= RetryAfterError; // If an error occurred during hydration,
53095      // discard server response and fall back to client side render.
53096
53097      if (root.hydrate) {
53098        root.hydrate = false;
53099        clearContainer(root.containerInfo);
53100      } // If something threw an error, try rendering one more time. We'll render
53101      // synchronously to block concurrent data mutations, and we'll includes
53102      // all pending updates are included. If it still fails after the second
53103      // attempt, we'll give up and commit the resulting tree.
53104
53105
53106      lanes = getLanesToRetrySynchronouslyOnError(root);
53107
53108      if (lanes !== NoLanes) {
53109        exitStatus = renderRootSync(root, lanes);
53110      }
53111    }
53112
53113    if (exitStatus === RootFatalErrored) {
53114      var fatalError = workInProgressRootFatalError;
53115      prepareFreshStack(root, NoLanes);
53116      markRootSuspended$1(root, lanes);
53117      ensureRootIsScheduled(root, now());
53118      throw fatalError;
53119    } // We now have a consistent tree. The next step is either to commit it,
53120    // or, if something suspended, wait to commit it after a timeout.
53121
53122
53123    var finishedWork = root.current.alternate;
53124    root.finishedWork = finishedWork;
53125    root.finishedLanes = lanes;
53126    finishConcurrentRender(root, exitStatus, lanes);
53127  }
53128
53129  ensureRootIsScheduled(root, now());
53130
53131  if (root.callbackNode === originalCallbackNode) {
53132    // The task node scheduled for this root is the same one that's
53133    // currently executed. Need to return a continuation.
53134    return performConcurrentWorkOnRoot.bind(null, root);
53135  }
53136
53137  return null;
53138}
53139
53140function finishConcurrentRender(root, exitStatus, lanes) {
53141  switch (exitStatus) {
53142    case RootIncomplete:
53143    case RootFatalErrored:
53144      {
53145        {
53146          {
53147            throw Error( "Root did not complete. This is a bug in React." );
53148          }
53149        }
53150      }
53151    // Flow knows about invariant, so it complains if I add a break
53152    // statement, but eslint doesn't know about invariant, so it complains
53153    // if I do. eslint-disable-next-line no-fallthrough
53154
53155    case RootErrored:
53156      {
53157        // We should have already attempted to retry this tree. If we reached
53158        // this point, it errored again. Commit it.
53159        commitRoot(root);
53160        break;
53161      }
53162
53163    case RootSuspended:
53164      {
53165        markRootSuspended$1(root, lanes); // We have an acceptable loading state. We need to figure out if we
53166        // should immediately commit it or wait a bit.
53167
53168        if (includesOnlyRetries(lanes) && // do not delay if we're inside an act() scope
53169        !shouldForceFlushFallbacksInDEV()) {
53170          // This render only included retries, no updates. Throttle committing
53171          // retries so that we don't show too many loading states too quickly.
53172          var msUntilTimeout = globalMostRecentFallbackTime + FALLBACK_THROTTLE_MS - now(); // Don't bother with a very short suspense time.
53173
53174          if (msUntilTimeout > 10) {
53175            var nextLanes = getNextLanes(root, NoLanes);
53176
53177            if (nextLanes !== NoLanes) {
53178              // There's additional work on this root.
53179              break;
53180            }
53181
53182            var suspendedLanes = root.suspendedLanes;
53183
53184            if (!isSubsetOfLanes(suspendedLanes, lanes)) {
53185              // We should prefer to render the fallback of at the last
53186              // suspended level. Ping the last suspended level to try
53187              // rendering it again.
53188              // FIXME: What if the suspended lanes are Idle? Should not restart.
53189              var eventTime = requestEventTime();
53190              markRootPinged(root, suspendedLanes);
53191              break;
53192            } // The render is suspended, it hasn't timed out, and there's no
53193            // lower priority work to do. Instead of committing the fallback
53194            // immediately, wait for more data to arrive.
53195
53196
53197            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), msUntilTimeout);
53198            break;
53199          }
53200        } // The work expired. Commit immediately.
53201
53202
53203        commitRoot(root);
53204        break;
53205      }
53206
53207    case RootSuspendedWithDelay:
53208      {
53209        markRootSuspended$1(root, lanes);
53210
53211        if (includesOnlyTransitions(lanes)) {
53212          // This is a transition, so we should exit without committing a
53213          // placeholder and without scheduling a timeout. Delay indefinitely
53214          // until we receive more data.
53215          break;
53216        }
53217
53218        if (!shouldForceFlushFallbacksInDEV()) {
53219          // This is not a transition, but we did trigger an avoided state.
53220          // Schedule a placeholder to display after a short delay, using the Just
53221          // Noticeable Difference.
53222          // TODO: Is the JND optimization worth the added complexity? If this is
53223          // the only reason we track the event time, then probably not.
53224          // Consider removing.
53225          var mostRecentEventTime = getMostRecentEventTime(root, lanes);
53226          var eventTimeMs = mostRecentEventTime;
53227          var timeElapsedMs = now() - eventTimeMs;
53228
53229          var _msUntilTimeout = jnd(timeElapsedMs) - timeElapsedMs; // Don't bother with a very short suspense time.
53230
53231
53232          if (_msUntilTimeout > 10) {
53233            // Instead of committing the fallback immediately, wait for more data
53234            // to arrive.
53235            root.timeoutHandle = scheduleTimeout(commitRoot.bind(null, root), _msUntilTimeout);
53236            break;
53237          }
53238        } // Commit the placeholder.
53239
53240
53241        commitRoot(root);
53242        break;
53243      }
53244
53245    case RootCompleted:
53246      {
53247        // The work completed. Ready to commit.
53248        commitRoot(root);
53249        break;
53250      }
53251
53252    default:
53253      {
53254        {
53255          {
53256            throw Error( "Unknown root exit status." );
53257          }
53258        }
53259      }
53260  }
53261}
53262
53263function markRootSuspended$1(root, suspendedLanes) {
53264  // When suspending, we should always exclude lanes that were pinged or (more
53265  // rarely, since we try to avoid it) updated during the render phase.
53266  // TODO: Lol maybe there's a better way to factor this besides this
53267  // obnoxiously named function :)
53268  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootPingedLanes);
53269  suspendedLanes = removeLanes(suspendedLanes, workInProgressRootUpdatedLanes);
53270  markRootSuspended(root, suspendedLanes);
53271} // This is the entry point for synchronous tasks that don't go
53272// through Scheduler
53273
53274
53275function performSyncWorkOnRoot(root) {
53276  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
53277    {
53278      throw Error( "Should not already be working." );
53279    }
53280  }
53281
53282  flushPassiveEffects();
53283  var lanes;
53284  var exitStatus;
53285
53286  if (root === workInProgressRoot && includesSomeLane(root.expiredLanes, workInProgressRootRenderLanes)) {
53287    // There's a partial tree, and at least one of its lanes has expired. Finish
53288    // rendering it before rendering the rest of the expired work.
53289    lanes = workInProgressRootRenderLanes;
53290    exitStatus = renderRootSync(root, lanes);
53291
53292    if (includesSomeLane(workInProgressRootIncludedLanes, workInProgressRootUpdatedLanes)) {
53293      // The render included lanes that were updated during the render phase.
53294      // For example, when unhiding a hidden tree, we include all the lanes
53295      // that were previously skipped when the tree was hidden. That set of
53296      // lanes is a superset of the lanes we started rendering with.
53297      //
53298      // Note that this only happens when part of the tree is rendered
53299      // concurrently. If the whole tree is rendered synchronously, then there
53300      // are no interleaved events.
53301      lanes = getNextLanes(root, lanes);
53302      exitStatus = renderRootSync(root, lanes);
53303    }
53304  } else {
53305    lanes = getNextLanes(root, NoLanes);
53306    exitStatus = renderRootSync(root, lanes);
53307  }
53308
53309  if (root.tag !== LegacyRoot && exitStatus === RootErrored) {
53310    executionContext |= RetryAfterError; // If an error occurred during hydration,
53311    // discard server response and fall back to client side render.
53312
53313    if (root.hydrate) {
53314      root.hydrate = false;
53315      clearContainer(root.containerInfo);
53316    } // If something threw an error, try rendering one more time. We'll render
53317    // synchronously to block concurrent data mutations, and we'll includes
53318    // all pending updates are included. If it still fails after the second
53319    // attempt, we'll give up and commit the resulting tree.
53320
53321
53322    lanes = getLanesToRetrySynchronouslyOnError(root);
53323
53324    if (lanes !== NoLanes) {
53325      exitStatus = renderRootSync(root, lanes);
53326    }
53327  }
53328
53329  if (exitStatus === RootFatalErrored) {
53330    var fatalError = workInProgressRootFatalError;
53331    prepareFreshStack(root, NoLanes);
53332    markRootSuspended$1(root, lanes);
53333    ensureRootIsScheduled(root, now());
53334    throw fatalError;
53335  } // We now have a consistent tree. Because this is a sync render, we
53336  // will commit it even if something suspended.
53337
53338
53339  var finishedWork = root.current.alternate;
53340  root.finishedWork = finishedWork;
53341  root.finishedLanes = lanes;
53342  commitRoot(root); // Before exiting, make sure there's a callback scheduled for the next
53343  // pending level.
53344
53345  ensureRootIsScheduled(root, now());
53346  return null;
53347}
53348function flushDiscreteUpdates() {
53349  // TODO: Should be able to flush inside batchedUpdates, but not inside `act`.
53350  // However, `act` uses `batchedUpdates`, so there's no way to distinguish
53351  // those two cases. Need to fix this before exposing flushDiscreteUpdates
53352  // as a public API.
53353  if ((executionContext & (BatchedContext | RenderContext | CommitContext)) !== NoContext) {
53354    {
53355      if ((executionContext & RenderContext) !== NoContext) {
53356        error('unstable_flushDiscreteUpdates: Cannot flush updates when React is ' + 'already rendering.');
53357      }
53358    } // We're already rendering, so we can't synchronously flush pending work.
53359    // This is probably a nested event dispatch triggered by a lifecycle/effect,
53360    // like `el.focus()`. Exit.
53361
53362
53363    return;
53364  }
53365
53366  flushPendingDiscreteUpdates(); // If the discrete updates scheduled passive effects, flush them now so that
53367  // they fire before the next serial event.
53368
53369  flushPassiveEffects();
53370}
53371
53372function flushPendingDiscreteUpdates() {
53373  if (rootsWithPendingDiscreteUpdates !== null) {
53374    // For each root with pending discrete updates, schedule a callback to
53375    // immediately flush them.
53376    var roots = rootsWithPendingDiscreteUpdates;
53377    rootsWithPendingDiscreteUpdates = null;
53378    roots.forEach(function (root) {
53379      markDiscreteUpdatesExpired(root);
53380      ensureRootIsScheduled(root, now());
53381    });
53382  } // Now flush the immediate queue.
53383
53384
53385  flushSyncCallbackQueue();
53386}
53387
53388function batchedUpdates$1(fn, a) {
53389  var prevExecutionContext = executionContext;
53390  executionContext |= BatchedContext;
53391
53392  try {
53393    return fn(a);
53394  } finally {
53395    executionContext = prevExecutionContext;
53396
53397    if (executionContext === NoContext) {
53398      // Flush the immediate callbacks that were scheduled during this batch
53399      resetRenderTimer();
53400      flushSyncCallbackQueue();
53401    }
53402  }
53403}
53404function batchedEventUpdates$1(fn, a) {
53405  var prevExecutionContext = executionContext;
53406  executionContext |= EventContext;
53407
53408  try {
53409    return fn(a);
53410  } finally {
53411    executionContext = prevExecutionContext;
53412
53413    if (executionContext === NoContext) {
53414      // Flush the immediate callbacks that were scheduled during this batch
53415      resetRenderTimer();
53416      flushSyncCallbackQueue();
53417    }
53418  }
53419}
53420function discreteUpdates$1(fn, a, b, c, d) {
53421  var prevExecutionContext = executionContext;
53422  executionContext |= DiscreteEventContext;
53423
53424  {
53425    try {
53426      return runWithPriority$1(UserBlockingPriority$2, fn.bind(null, a, b, c, d));
53427    } finally {
53428      executionContext = prevExecutionContext;
53429
53430      if (executionContext === NoContext) {
53431        // Flush the immediate callbacks that were scheduled during this batch
53432        resetRenderTimer();
53433        flushSyncCallbackQueue();
53434      }
53435    }
53436  }
53437}
53438function unbatchedUpdates(fn, a) {
53439  var prevExecutionContext = executionContext;
53440  executionContext &= ~BatchedContext;
53441  executionContext |= LegacyUnbatchedContext;
53442
53443  try {
53444    return fn(a);
53445  } finally {
53446    executionContext = prevExecutionContext;
53447
53448    if (executionContext === NoContext) {
53449      // Flush the immediate callbacks that were scheduled during this batch
53450      resetRenderTimer();
53451      flushSyncCallbackQueue();
53452    }
53453  }
53454}
53455function flushSync(fn, a) {
53456  var prevExecutionContext = executionContext;
53457
53458  if ((prevExecutionContext & (RenderContext | CommitContext)) !== NoContext) {
53459    {
53460      error('flushSync was called from inside a lifecycle method. React cannot ' + 'flush when React is already rendering. Consider moving this call to ' + 'a scheduler task or micro task.');
53461    }
53462
53463    return fn(a);
53464  }
53465
53466  executionContext |= BatchedContext;
53467
53468  {
53469    try {
53470      if (fn) {
53471        return runWithPriority$1(ImmediatePriority$1, fn.bind(null, a));
53472      } else {
53473        return undefined;
53474      }
53475    } finally {
53476      executionContext = prevExecutionContext; // Flush the immediate callbacks that were scheduled during this batch.
53477      // Note that this will happen even if batchedUpdates is higher up
53478      // the stack.
53479
53480      flushSyncCallbackQueue();
53481    }
53482  }
53483}
53484function pushRenderLanes(fiber, lanes) {
53485  push(subtreeRenderLanesCursor, subtreeRenderLanes, fiber);
53486  subtreeRenderLanes = mergeLanes(subtreeRenderLanes, lanes);
53487  workInProgressRootIncludedLanes = mergeLanes(workInProgressRootIncludedLanes, lanes);
53488}
53489function popRenderLanes(fiber) {
53490  subtreeRenderLanes = subtreeRenderLanesCursor.current;
53491  pop(subtreeRenderLanesCursor, fiber);
53492}
53493
53494function prepareFreshStack(root, lanes) {
53495  root.finishedWork = null;
53496  root.finishedLanes = NoLanes;
53497  var timeoutHandle = root.timeoutHandle;
53498
53499  if (timeoutHandle !== noTimeout) {
53500    // The root previous suspended and scheduled a timeout to commit a fallback
53501    // state. Now that we have additional work, cancel the timeout.
53502    root.timeoutHandle = noTimeout; // $FlowFixMe Complains noTimeout is not a TimeoutID, despite the check above
53503
53504    cancelTimeout(timeoutHandle);
53505  }
53506
53507  if (workInProgress !== null) {
53508    var interruptedWork = workInProgress.return;
53509
53510    while (interruptedWork !== null) {
53511      unwindInterruptedWork(interruptedWork);
53512      interruptedWork = interruptedWork.return;
53513    }
53514  }
53515
53516  workInProgressRoot = root;
53517  workInProgress = createWorkInProgress(root.current, null);
53518  workInProgressRootRenderLanes = subtreeRenderLanes = workInProgressRootIncludedLanes = lanes;
53519  workInProgressRootExitStatus = RootIncomplete;
53520  workInProgressRootFatalError = null;
53521  workInProgressRootSkippedLanes = NoLanes;
53522  workInProgressRootUpdatedLanes = NoLanes;
53523  workInProgressRootPingedLanes = NoLanes;
53524
53525  {
53526    spawnedWorkDuringRender = null;
53527  }
53528
53529  {
53530    ReactStrictModeWarnings.discardPendingWarnings();
53531  }
53532}
53533
53534function handleError(root, thrownValue) {
53535  do {
53536    var erroredWork = workInProgress;
53537
53538    try {
53539      // Reset module-level state that was set during the render phase.
53540      resetContextDependencies();
53541      resetHooksAfterThrow();
53542      resetCurrentFiber(); // TODO: I found and added this missing line while investigating a
53543      // separate issue. Write a regression test using string refs.
53544
53545      ReactCurrentOwner$2.current = null;
53546
53547      if (erroredWork === null || erroredWork.return === null) {
53548        // Expected to be working on a non-root fiber. This is a fatal error
53549        // because there's no ancestor that can handle it; the root is
53550        // supposed to capture all errors that weren't caught by an error
53551        // boundary.
53552        workInProgressRootExitStatus = RootFatalErrored;
53553        workInProgressRootFatalError = thrownValue; // Set `workInProgress` to null. This represents advancing to the next
53554        // sibling, or the parent if there are no siblings. But since the root
53555        // has no siblings nor a parent, we set it to null. Usually this is
53556        // handled by `completeUnitOfWork` or `unwindWork`, but since we're
53557        // intentionally not calling those, we need set it here.
53558        // TODO: Consider calling `unwindWork` to pop the contexts.
53559
53560        workInProgress = null;
53561        return;
53562      }
53563
53564      if (enableProfilerTimer && erroredWork.mode & ProfileMode) {
53565        // Record the time spent rendering before an error was thrown. This
53566        // avoids inaccurate Profiler durations in the case of a
53567        // suspended render.
53568        stopProfilerTimerIfRunningAndRecordDelta(erroredWork, true);
53569      }
53570
53571      throwException(root, erroredWork.return, erroredWork, thrownValue, workInProgressRootRenderLanes);
53572      completeUnitOfWork(erroredWork);
53573    } catch (yetAnotherThrownValue) {
53574      // Something in the return path also threw.
53575      thrownValue = yetAnotherThrownValue;
53576
53577      if (workInProgress === erroredWork && erroredWork !== null) {
53578        // If this boundary has already errored, then we had trouble processing
53579        // the error. Bubble it to the next boundary.
53580        erroredWork = erroredWork.return;
53581        workInProgress = erroredWork;
53582      } else {
53583        erroredWork = workInProgress;
53584      }
53585
53586      continue;
53587    } // Return to the normal work loop.
53588
53589
53590    return;
53591  } while (true);
53592}
53593
53594function pushDispatcher() {
53595  var prevDispatcher = ReactCurrentDispatcher$2.current;
53596  ReactCurrentDispatcher$2.current = ContextOnlyDispatcher;
53597
53598  if (prevDispatcher === null) {
53599    // The React isomorphic package does not include a default dispatcher.
53600    // Instead the first renderer will lazily attach one, in order to give
53601    // nicer error messages.
53602    return ContextOnlyDispatcher;
53603  } else {
53604    return prevDispatcher;
53605  }
53606}
53607
53608function popDispatcher(prevDispatcher) {
53609  ReactCurrentDispatcher$2.current = prevDispatcher;
53610}
53611
53612function pushInteractions(root) {
53613  {
53614    var prevInteractions = tracing.__interactionsRef.current;
53615    tracing.__interactionsRef.current = root.memoizedInteractions;
53616    return prevInteractions;
53617  }
53618}
53619
53620function popInteractions(prevInteractions) {
53621  {
53622    tracing.__interactionsRef.current = prevInteractions;
53623  }
53624}
53625
53626function markCommitTimeOfFallback() {
53627  globalMostRecentFallbackTime = now();
53628}
53629function markSkippedUpdateLanes(lane) {
53630  workInProgressRootSkippedLanes = mergeLanes(lane, workInProgressRootSkippedLanes);
53631}
53632function renderDidSuspend() {
53633  if (workInProgressRootExitStatus === RootIncomplete) {
53634    workInProgressRootExitStatus = RootSuspended;
53635  }
53636}
53637function renderDidSuspendDelayIfPossible() {
53638  if (workInProgressRootExitStatus === RootIncomplete || workInProgressRootExitStatus === RootSuspended) {
53639    workInProgressRootExitStatus = RootSuspendedWithDelay;
53640  } // Check if there are updates that we skipped tree that might have unblocked
53641  // this render.
53642
53643
53644  if (workInProgressRoot !== null && (includesNonIdleWork(workInProgressRootSkippedLanes) || includesNonIdleWork(workInProgressRootUpdatedLanes))) {
53645    // Mark the current render as suspended so that we switch to working on
53646    // the updates that were skipped. Usually we only suspend at the end of
53647    // the render phase.
53648    // TODO: We should probably always mark the root as suspended immediately
53649    // (inside this function), since by suspending at the end of the render
53650    // phase introduces a potential mistake where we suspend lanes that were
53651    // pinged or updated while we were rendering.
53652    markRootSuspended$1(workInProgressRoot, workInProgressRootRenderLanes);
53653  }
53654}
53655function renderDidError() {
53656  if (workInProgressRootExitStatus !== RootCompleted) {
53657    workInProgressRootExitStatus = RootErrored;
53658  }
53659} // Called during render to determine if anything has suspended.
53660// Returns false if we're not sure.
53661
53662function renderHasNotSuspendedYet() {
53663  // If something errored or completed, we can't really be sure,
53664  // so those are false.
53665  return workInProgressRootExitStatus === RootIncomplete;
53666}
53667
53668function renderRootSync(root, lanes) {
53669  var prevExecutionContext = executionContext;
53670  executionContext |= RenderContext;
53671  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack
53672  // and prepare a fresh one. Otherwise we'll continue where we left off.
53673
53674  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {
53675    prepareFreshStack(root, lanes);
53676    startWorkOnPendingInteractions(root, lanes);
53677  }
53678
53679  var prevInteractions = pushInteractions(root);
53680
53681  do {
53682    try {
53683      workLoopSync();
53684      break;
53685    } catch (thrownValue) {
53686      handleError(root, thrownValue);
53687    }
53688  } while (true);
53689
53690  resetContextDependencies();
53691
53692  {
53693    popInteractions(prevInteractions);
53694  }
53695
53696  executionContext = prevExecutionContext;
53697  popDispatcher(prevDispatcher);
53698
53699  if (workInProgress !== null) {
53700    // This is a sync render, so we should have finished the whole tree.
53701    {
53702      {
53703        throw Error( "Cannot commit an incomplete root. This error is likely caused by a bug in React. Please file an issue." );
53704      }
53705    }
53706  }
53707
53708
53709  workInProgressRoot = null;
53710  workInProgressRootRenderLanes = NoLanes;
53711  return workInProgressRootExitStatus;
53712} // The work loop is an extremely hot path. Tell Closure not to inline it.
53713
53714/** @noinline */
53715
53716
53717function workLoopSync() {
53718  // Already timed out, so perform work without checking if we need to yield.
53719  while (workInProgress !== null) {
53720    performUnitOfWork(workInProgress);
53721  }
53722}
53723
53724function renderRootConcurrent(root, lanes) {
53725  var prevExecutionContext = executionContext;
53726  executionContext |= RenderContext;
53727  var prevDispatcher = pushDispatcher(); // If the root or lanes have changed, throw out the existing stack
53728  // and prepare a fresh one. Otherwise we'll continue where we left off.
53729
53730  if (workInProgressRoot !== root || workInProgressRootRenderLanes !== lanes) {
53731    resetRenderTimer();
53732    prepareFreshStack(root, lanes);
53733    startWorkOnPendingInteractions(root, lanes);
53734  }
53735
53736  var prevInteractions = pushInteractions(root);
53737
53738  do {
53739    try {
53740      workLoopConcurrent();
53741      break;
53742    } catch (thrownValue) {
53743      handleError(root, thrownValue);
53744    }
53745  } while (true);
53746
53747  resetContextDependencies();
53748
53749  {
53750    popInteractions(prevInteractions);
53751  }
53752
53753  popDispatcher(prevDispatcher);
53754  executionContext = prevExecutionContext;
53755
53756
53757  if (workInProgress !== null) {
53758
53759    return RootIncomplete;
53760  } else {
53761
53762
53763    workInProgressRoot = null;
53764    workInProgressRootRenderLanes = NoLanes; // Return the final exit status.
53765
53766    return workInProgressRootExitStatus;
53767  }
53768}
53769/** @noinline */
53770
53771
53772function workLoopConcurrent() {
53773  // Perform work until Scheduler asks us to yield
53774  while (workInProgress !== null && !shouldYield()) {
53775    performUnitOfWork(workInProgress);
53776  }
53777}
53778
53779function performUnitOfWork(unitOfWork) {
53780  // The current, flushed, state of this fiber is the alternate. Ideally
53781  // nothing should rely on this, but relying on it here means that we don't
53782  // need an additional field on the work in progress.
53783  var current = unitOfWork.alternate;
53784  setCurrentFiber(unitOfWork);
53785  var next;
53786
53787  if ( (unitOfWork.mode & ProfileMode) !== NoMode) {
53788    startProfilerTimer(unitOfWork);
53789    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);
53790    stopProfilerTimerIfRunningAndRecordDelta(unitOfWork, true);
53791  } else {
53792    next = beginWork$1(current, unitOfWork, subtreeRenderLanes);
53793  }
53794
53795  resetCurrentFiber();
53796  unitOfWork.memoizedProps = unitOfWork.pendingProps;
53797
53798  if (next === null) {
53799    // If this doesn't spawn new work, complete the current work.
53800    completeUnitOfWork(unitOfWork);
53801  } else {
53802    workInProgress = next;
53803  }
53804
53805  ReactCurrentOwner$2.current = null;
53806}
53807
53808function completeUnitOfWork(unitOfWork) {
53809  // Attempt to complete the current unit of work, then move to the next
53810  // sibling. If there are no more siblings, return to the parent fiber.
53811  var completedWork = unitOfWork;
53812
53813  do {
53814    // The current, flushed, state of this fiber is the alternate. Ideally
53815    // nothing should rely on this, but relying on it here means that we don't
53816    // need an additional field on the work in progress.
53817    var current = completedWork.alternate;
53818    var returnFiber = completedWork.return; // Check if the work completed or if something threw.
53819
53820    if ((completedWork.flags & Incomplete) === NoFlags) {
53821      setCurrentFiber(completedWork);
53822      var next = void 0;
53823
53824      if ( (completedWork.mode & ProfileMode) === NoMode) {
53825        next = completeWork(current, completedWork, subtreeRenderLanes);
53826      } else {
53827        startProfilerTimer(completedWork);
53828        next = completeWork(current, completedWork, subtreeRenderLanes); // Update render duration assuming we didn't error.
53829
53830        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false);
53831      }
53832
53833      resetCurrentFiber();
53834
53835      if (next !== null) {
53836        // Completing this fiber spawned new work. Work on that next.
53837        workInProgress = next;
53838        return;
53839      }
53840
53841      resetChildLanes(completedWork);
53842
53843      if (returnFiber !== null && // Do not append effects to parents if a sibling failed to complete
53844      (returnFiber.flags & Incomplete) === NoFlags) {
53845        // Append all the effects of the subtree and this fiber onto the effect
53846        // list of the parent. The completion order of the children affects the
53847        // side-effect order.
53848        if (returnFiber.firstEffect === null) {
53849          returnFiber.firstEffect = completedWork.firstEffect;
53850        }
53851
53852        if (completedWork.lastEffect !== null) {
53853          if (returnFiber.lastEffect !== null) {
53854            returnFiber.lastEffect.nextEffect = completedWork.firstEffect;
53855          }
53856
53857          returnFiber.lastEffect = completedWork.lastEffect;
53858        } // If this fiber had side-effects, we append it AFTER the children's
53859        // side-effects. We can perform certain side-effects earlier if needed,
53860        // by doing multiple passes over the effect list. We don't want to
53861        // schedule our own side-effect on our own list because if end up
53862        // reusing children we'll schedule this effect onto itself since we're
53863        // at the end.
53864
53865
53866        var flags = completedWork.flags; // Skip both NoWork and PerformedWork tags when creating the effect
53867        // list. PerformedWork effect is read by React DevTools but shouldn't be
53868        // committed.
53869
53870        if (flags > PerformedWork) {
53871          if (returnFiber.lastEffect !== null) {
53872            returnFiber.lastEffect.nextEffect = completedWork;
53873          } else {
53874            returnFiber.firstEffect = completedWork;
53875          }
53876
53877          returnFiber.lastEffect = completedWork;
53878        }
53879      }
53880    } else {
53881      // This fiber did not complete because something threw. Pop values off
53882      // the stack without entering the complete phase. If this is a boundary,
53883      // capture values if possible.
53884      var _next = unwindWork(completedWork); // Because this fiber did not complete, don't reset its expiration time.
53885
53886
53887      if (_next !== null) {
53888        // If completing this work spawned new work, do that next. We'll come
53889        // back here again.
53890        // Since we're restarting, remove anything that is not a host effect
53891        // from the effect tag.
53892        _next.flags &= HostEffectMask;
53893        workInProgress = _next;
53894        return;
53895      }
53896
53897      if ( (completedWork.mode & ProfileMode) !== NoMode) {
53898        // Record the render duration for the fiber that errored.
53899        stopProfilerTimerIfRunningAndRecordDelta(completedWork, false); // Include the time spent working on failed children before continuing.
53900
53901        var actualDuration = completedWork.actualDuration;
53902        var child = completedWork.child;
53903
53904        while (child !== null) {
53905          actualDuration += child.actualDuration;
53906          child = child.sibling;
53907        }
53908
53909        completedWork.actualDuration = actualDuration;
53910      }
53911
53912      if (returnFiber !== null) {
53913        // Mark the parent fiber as incomplete and clear its effect list.
53914        returnFiber.firstEffect = returnFiber.lastEffect = null;
53915        returnFiber.flags |= Incomplete;
53916      }
53917    }
53918
53919    var siblingFiber = completedWork.sibling;
53920
53921    if (siblingFiber !== null) {
53922      // If there is more work to do in this returnFiber, do that next.
53923      workInProgress = siblingFiber;
53924      return;
53925    } // Otherwise, return to the parent
53926
53927
53928    completedWork = returnFiber; // Update the next thing we're working on in case something throws.
53929
53930    workInProgress = completedWork;
53931  } while (completedWork !== null); // We've reached the root.
53932
53933
53934  if (workInProgressRootExitStatus === RootIncomplete) {
53935    workInProgressRootExitStatus = RootCompleted;
53936  }
53937}
53938
53939function resetChildLanes(completedWork) {
53940  if ( // TODO: Move this check out of the hot path by moving `resetChildLanes`
53941  // to switch statement in `completeWork`.
53942  (completedWork.tag === LegacyHiddenComponent || completedWork.tag === OffscreenComponent) && completedWork.memoizedState !== null && !includesSomeLane(subtreeRenderLanes, OffscreenLane) && (completedWork.mode & ConcurrentMode) !== NoLanes) {
53943    // The children of this component are hidden. Don't bubble their
53944    // expiration times.
53945    return;
53946  }
53947
53948  var newChildLanes = NoLanes; // Bubble up the earliest expiration time.
53949
53950  if ( (completedWork.mode & ProfileMode) !== NoMode) {
53951    // In profiling mode, resetChildExpirationTime is also used to reset
53952    // profiler durations.
53953    var actualDuration = completedWork.actualDuration;
53954    var treeBaseDuration = completedWork.selfBaseDuration; // When a fiber is cloned, its actualDuration is reset to 0. This value will
53955    // only be updated if work is done on the fiber (i.e. it doesn't bailout).
53956    // When work is done, it should bubble to the parent's actualDuration. If
53957    // the fiber has not been cloned though, (meaning no work was done), then
53958    // this value will reflect the amount of time spent working on a previous
53959    // render. In that case it should not bubble. We determine whether it was
53960    // cloned by comparing the child pointer.
53961
53962    var shouldBubbleActualDurations = completedWork.alternate === null || completedWork.child !== completedWork.alternate.child;
53963    var child = completedWork.child;
53964
53965    while (child !== null) {
53966      newChildLanes = mergeLanes(newChildLanes, mergeLanes(child.lanes, child.childLanes));
53967
53968      if (shouldBubbleActualDurations) {
53969        actualDuration += child.actualDuration;
53970      }
53971
53972      treeBaseDuration += child.treeBaseDuration;
53973      child = child.sibling;
53974    }
53975
53976    var isTimedOutSuspense = completedWork.tag === SuspenseComponent && completedWork.memoizedState !== null;
53977
53978    if (isTimedOutSuspense) {
53979      // Don't count time spent in a timed out Suspense subtree as part of the base duration.
53980      var primaryChildFragment = completedWork.child;
53981
53982      if (primaryChildFragment !== null) {
53983        treeBaseDuration -= primaryChildFragment.treeBaseDuration;
53984      }
53985    }
53986
53987    completedWork.actualDuration = actualDuration;
53988    completedWork.treeBaseDuration = treeBaseDuration;
53989  } else {
53990    var _child = completedWork.child;
53991
53992    while (_child !== null) {
53993      newChildLanes = mergeLanes(newChildLanes, mergeLanes(_child.lanes, _child.childLanes));
53994      _child = _child.sibling;
53995    }
53996  }
53997
53998  completedWork.childLanes = newChildLanes;
53999}
54000
54001function commitRoot(root) {
54002  var renderPriorityLevel = getCurrentPriorityLevel();
54003  runWithPriority$1(ImmediatePriority$1, commitRootImpl.bind(null, root, renderPriorityLevel));
54004  return null;
54005}
54006
54007function commitRootImpl(root, renderPriorityLevel) {
54008  do {
54009    // `flushPassiveEffects` will call `flushSyncUpdateQueue` at the end, which
54010    // means `flushPassiveEffects` will sometimes result in additional
54011    // passive effects. So we need to keep flushing in a loop until there are
54012    // no more pending effects.
54013    // TODO: Might be better if `flushPassiveEffects` did not automatically
54014    // flush synchronous work at the end, to avoid factoring hazards like this.
54015    flushPassiveEffects();
54016  } while (rootWithPendingPassiveEffects !== null);
54017
54018  flushRenderPhaseStrictModeWarningsInDEV();
54019
54020  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
54021    {
54022      throw Error( "Should not already be working." );
54023    }
54024  }
54025
54026  var finishedWork = root.finishedWork;
54027  var lanes = root.finishedLanes;
54028
54029  if (finishedWork === null) {
54030
54031    return null;
54032  }
54033
54034  root.finishedWork = null;
54035  root.finishedLanes = NoLanes;
54036
54037  if (!(finishedWork !== root.current)) {
54038    {
54039      throw Error( "Cannot commit the same tree as before. This error is likely caused by a bug in React. Please file an issue." );
54040    }
54041  } // commitRoot never returns a continuation; it always finishes synchronously.
54042  // So we can clear these now to allow a new callback to be scheduled.
54043
54044
54045  root.callbackNode = null; // Update the first and last pending times on this root. The new first
54046  // pending time is whatever is left on the root fiber.
54047
54048  var remainingLanes = mergeLanes(finishedWork.lanes, finishedWork.childLanes);
54049  markRootFinished(root, remainingLanes); // Clear already finished discrete updates in case that a later call of
54050  // `flushDiscreteUpdates` starts a useless render pass which may cancels
54051  // a scheduled timeout.
54052
54053  if (rootsWithPendingDiscreteUpdates !== null) {
54054    if (!hasDiscreteLanes(remainingLanes) && rootsWithPendingDiscreteUpdates.has(root)) {
54055      rootsWithPendingDiscreteUpdates.delete(root);
54056    }
54057  }
54058
54059  if (root === workInProgressRoot) {
54060    // We can reset these now that they are finished.
54061    workInProgressRoot = null;
54062    workInProgress = null;
54063    workInProgressRootRenderLanes = NoLanes;
54064  } // Get the list of effects.
54065
54066
54067  var firstEffect;
54068
54069  if (finishedWork.flags > PerformedWork) {
54070    // A fiber's effect list consists only of its children, not itself. So if
54071    // the root has an effect, we need to add it to the end of the list. The
54072    // resulting list is the set that would belong to the root's parent, if it
54073    // had one; that is, all the effects in the tree including the root.
54074    if (finishedWork.lastEffect !== null) {
54075      finishedWork.lastEffect.nextEffect = finishedWork;
54076      firstEffect = finishedWork.firstEffect;
54077    } else {
54078      firstEffect = finishedWork;
54079    }
54080  } else {
54081    // There is no effect on the root.
54082    firstEffect = finishedWork.firstEffect;
54083  }
54084
54085  if (firstEffect !== null) {
54086
54087    var prevExecutionContext = executionContext;
54088    executionContext |= CommitContext;
54089    var prevInteractions = pushInteractions(root); // Reset this to null before calling lifecycles
54090
54091    ReactCurrentOwner$2.current = null; // The commit phase is broken into several sub-phases. We do a separate pass
54092    // of the effect list for each phase: all mutation effects come before all
54093    // layout effects, and so on.
54094    // The first phase a "before mutation" phase. We use this phase to read the
54095    // state of the host tree right before we mutate it. This is where
54096    // getSnapshotBeforeUpdate is called.
54097
54098    focusedInstanceHandle = prepareForCommit(root.containerInfo);
54099    shouldFireAfterActiveInstanceBlur = false;
54100    nextEffect = firstEffect;
54101
54102    do {
54103      {
54104        invokeGuardedCallback(null, commitBeforeMutationEffects, null);
54105
54106        if (hasCaughtError()) {
54107          if (!(nextEffect !== null)) {
54108            {
54109              throw Error( "Should be working on an effect." );
54110            }
54111          }
54112
54113          var error = clearCaughtError();
54114          captureCommitPhaseError(nextEffect, error);
54115          nextEffect = nextEffect.nextEffect;
54116        }
54117      }
54118    } while (nextEffect !== null); // We no longer need to track the active instance fiber
54119
54120
54121    focusedInstanceHandle = null;
54122
54123    {
54124      // Mark the current commit time to be shared by all Profilers in this
54125      // batch. This enables them to be grouped later.
54126      recordCommitTime();
54127    } // The next phase is the mutation phase, where we mutate the host tree.
54128
54129
54130    nextEffect = firstEffect;
54131
54132    do {
54133      {
54134        invokeGuardedCallback(null, commitMutationEffects, null, root, renderPriorityLevel);
54135
54136        if (hasCaughtError()) {
54137          if (!(nextEffect !== null)) {
54138            {
54139              throw Error( "Should be working on an effect." );
54140            }
54141          }
54142
54143          var _error = clearCaughtError();
54144
54145          captureCommitPhaseError(nextEffect, _error);
54146          nextEffect = nextEffect.nextEffect;
54147        }
54148      }
54149    } while (nextEffect !== null);
54150
54151    resetAfterCommit(root.containerInfo); // The work-in-progress tree is now the current tree. This must come after
54152    // the mutation phase, so that the previous tree is still current during
54153    // componentWillUnmount, but before the layout phase, so that the finished
54154    // work is current during componentDidMount/Update.
54155
54156    root.current = finishedWork; // The next phase is the layout phase, where we call effects that read
54157    // the host tree after it's been mutated. The idiomatic use case for this is
54158    // layout, but class component lifecycles also fire here for legacy reasons.
54159
54160    nextEffect = firstEffect;
54161
54162    do {
54163      {
54164        invokeGuardedCallback(null, commitLayoutEffects, null, root, lanes);
54165
54166        if (hasCaughtError()) {
54167          if (!(nextEffect !== null)) {
54168            {
54169              throw Error( "Should be working on an effect." );
54170            }
54171          }
54172
54173          var _error2 = clearCaughtError();
54174
54175          captureCommitPhaseError(nextEffect, _error2);
54176          nextEffect = nextEffect.nextEffect;
54177        }
54178      }
54179    } while (nextEffect !== null);
54180
54181    nextEffect = null; // Tell Scheduler to yield at the end of the frame, so the browser has an
54182    // opportunity to paint.
54183
54184    requestPaint();
54185
54186    {
54187      popInteractions(prevInteractions);
54188    }
54189
54190    executionContext = prevExecutionContext;
54191  } else {
54192    // No effects.
54193    root.current = finishedWork; // Measure these anyway so the flamegraph explicitly shows that there were
54194    // no effects.
54195    // TODO: Maybe there's a better way to report this.
54196
54197    {
54198      recordCommitTime();
54199    }
54200  }
54201
54202  var rootDidHavePassiveEffects = rootDoesHavePassiveEffects;
54203
54204  if (rootDoesHavePassiveEffects) {
54205    // This commit has passive effects. Stash a reference to them. But don't
54206    // schedule a callback until after flushing layout work.
54207    rootDoesHavePassiveEffects = false;
54208    rootWithPendingPassiveEffects = root;
54209    pendingPassiveEffectsLanes = lanes;
54210    pendingPassiveEffectsRenderPriority = renderPriorityLevel;
54211  } else {
54212    // We are done with the effect chain at this point so let's clear the
54213    // nextEffect pointers to assist with GC. If we have passive effects, we'll
54214    // clear this in flushPassiveEffects.
54215    nextEffect = firstEffect;
54216
54217    while (nextEffect !== null) {
54218      var nextNextEffect = nextEffect.nextEffect;
54219      nextEffect.nextEffect = null;
54220
54221      if (nextEffect.flags & Deletion) {
54222        detachFiberAfterEffects(nextEffect);
54223      }
54224
54225      nextEffect = nextNextEffect;
54226    }
54227  } // Read this again, since an effect might have updated it
54228
54229
54230  remainingLanes = root.pendingLanes; // Check if there's remaining work on this root
54231
54232  if (remainingLanes !== NoLanes) {
54233    {
54234      if (spawnedWorkDuringRender !== null) {
54235        var expirationTimes = spawnedWorkDuringRender;
54236        spawnedWorkDuringRender = null;
54237
54238        for (var i = 0; i < expirationTimes.length; i++) {
54239          scheduleInteractions(root, expirationTimes[i], root.memoizedInteractions);
54240        }
54241      }
54242
54243      schedulePendingInteractions(root, remainingLanes);
54244    }
54245  } else {
54246    // If there's no remaining work, we can clear the set of already failed
54247    // error boundaries.
54248    legacyErrorBoundariesThatAlreadyFailed = null;
54249  }
54250
54251  {
54252    if (!rootDidHavePassiveEffects) {
54253      // If there are no passive effects, then we can complete the pending interactions.
54254      // Otherwise, we'll wait until after the passive effects are flushed.
54255      // Wait to do this until after remaining work has been scheduled,
54256      // so that we don't prematurely signal complete for interactions when there's e.g. hidden work.
54257      finishPendingInteractions(root, lanes);
54258    }
54259  }
54260
54261  if (remainingLanes === SyncLane) {
54262    // Count the number of times the root synchronously re-renders without
54263    // finishing. If there are too many, it indicates an infinite update loop.
54264    if (root === rootWithNestedUpdates) {
54265      nestedUpdateCount++;
54266    } else {
54267      nestedUpdateCount = 0;
54268      rootWithNestedUpdates = root;
54269    }
54270  } else {
54271    nestedUpdateCount = 0;
54272  }
54273
54274  onCommitRoot(finishedWork.stateNode, renderPriorityLevel);
54275
54276  {
54277    onCommitRoot$1();
54278  } // Always call this before exiting `commitRoot`, to ensure that any
54279  // additional work on this root is scheduled.
54280
54281
54282  ensureRootIsScheduled(root, now());
54283
54284  if (hasUncaughtError) {
54285    hasUncaughtError = false;
54286    var _error3 = firstUncaughtError;
54287    firstUncaughtError = null;
54288    throw _error3;
54289  }
54290
54291  if ((executionContext & LegacyUnbatchedContext) !== NoContext) {
54292    // a ReactDOM.render-ed root inside of batchedUpdates. The commit fired
54293    // synchronously, but layout updates should be deferred until the end
54294    // of the batch.
54295
54296
54297    return null;
54298  } // If layout work was scheduled, flush it now.
54299
54300
54301  flushSyncCallbackQueue();
54302
54303  return null;
54304}
54305
54306function commitBeforeMutationEffects() {
54307  while (nextEffect !== null) {
54308    var current = nextEffect.alternate;
54309
54310    if (!shouldFireAfterActiveInstanceBlur && focusedInstanceHandle !== null) {
54311      if ((nextEffect.flags & Deletion) !== NoFlags) {
54312        if (doesFiberContain(nextEffect, focusedInstanceHandle)) {
54313          shouldFireAfterActiveInstanceBlur = true;
54314        }
54315      } else {
54316        // TODO: Move this out of the hot path using a dedicated effect tag.
54317        if (nextEffect.tag === SuspenseComponent && isSuspenseBoundaryBeingHidden(current, nextEffect) && doesFiberContain(nextEffect, focusedInstanceHandle)) {
54318          shouldFireAfterActiveInstanceBlur = true;
54319        }
54320      }
54321    }
54322
54323    var flags = nextEffect.flags;
54324
54325    if ((flags & Snapshot) !== NoFlags) {
54326      setCurrentFiber(nextEffect);
54327      commitBeforeMutationLifeCycles(current, nextEffect);
54328      resetCurrentFiber();
54329    }
54330
54331    if ((flags & Passive) !== NoFlags) {
54332      // If there are passive effects, schedule a callback to flush at
54333      // the earliest opportunity.
54334      if (!rootDoesHavePassiveEffects) {
54335        rootDoesHavePassiveEffects = true;
54336        scheduleCallback(NormalPriority$1, function () {
54337          flushPassiveEffects();
54338          return null;
54339        });
54340      }
54341    }
54342
54343    nextEffect = nextEffect.nextEffect;
54344  }
54345}
54346
54347function commitMutationEffects(root, renderPriorityLevel) {
54348  // TODO: Should probably move the bulk of this function to commitWork.
54349  while (nextEffect !== null) {
54350    setCurrentFiber(nextEffect);
54351    var flags = nextEffect.flags;
54352
54353    if (flags & ContentReset) {
54354      commitResetTextContent(nextEffect);
54355    }
54356
54357    if (flags & Ref) {
54358      var current = nextEffect.alternate;
54359
54360      if (current !== null) {
54361        commitDetachRef(current);
54362      }
54363    } // The following switch statement is only concerned about placement,
54364    // updates, and deletions. To avoid needing to add a case for every possible
54365    // bitmap value, we remove the secondary effects from the effect tag and
54366    // switch on that value.
54367
54368
54369    var primaryFlags = flags & (Placement | Update | Deletion | Hydrating);
54370
54371    switch (primaryFlags) {
54372      case Placement:
54373        {
54374          commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is
54375          // inserted, before any life-cycles like componentDidMount gets called.
54376          // TODO: findDOMNode doesn't rely on this any more but isMounted does
54377          // and isMounted is deprecated anyway so we should be able to kill this.
54378
54379          nextEffect.flags &= ~Placement;
54380          break;
54381        }
54382
54383      case PlacementAndUpdate:
54384        {
54385          // Placement
54386          commitPlacement(nextEffect); // Clear the "placement" from effect tag so that we know that this is
54387          // inserted, before any life-cycles like componentDidMount gets called.
54388
54389          nextEffect.flags &= ~Placement; // Update
54390
54391          var _current = nextEffect.alternate;
54392          commitWork(_current, nextEffect);
54393          break;
54394        }
54395
54396      case Hydrating:
54397        {
54398          nextEffect.flags &= ~Hydrating;
54399          break;
54400        }
54401
54402      case HydratingAndUpdate:
54403        {
54404          nextEffect.flags &= ~Hydrating; // Update
54405
54406          var _current2 = nextEffect.alternate;
54407          commitWork(_current2, nextEffect);
54408          break;
54409        }
54410
54411      case Update:
54412        {
54413          var _current3 = nextEffect.alternate;
54414          commitWork(_current3, nextEffect);
54415          break;
54416        }
54417
54418      case Deletion:
54419        {
54420          commitDeletion(root, nextEffect);
54421          break;
54422        }
54423    }
54424
54425    resetCurrentFiber();
54426    nextEffect = nextEffect.nextEffect;
54427  }
54428}
54429
54430function commitLayoutEffects(root, committedLanes) {
54431
54432
54433  while (nextEffect !== null) {
54434    setCurrentFiber(nextEffect);
54435    var flags = nextEffect.flags;
54436
54437    if (flags & (Update | Callback)) {
54438      var current = nextEffect.alternate;
54439      commitLifeCycles(root, current, nextEffect);
54440    }
54441
54442    {
54443      if (flags & Ref) {
54444        commitAttachRef(nextEffect);
54445      }
54446    }
54447
54448    resetCurrentFiber();
54449    nextEffect = nextEffect.nextEffect;
54450  }
54451}
54452
54453function flushPassiveEffects() {
54454  // Returns whether passive effects were flushed.
54455  if (pendingPassiveEffectsRenderPriority !== NoPriority$1) {
54456    var priorityLevel = pendingPassiveEffectsRenderPriority > NormalPriority$1 ? NormalPriority$1 : pendingPassiveEffectsRenderPriority;
54457    pendingPassiveEffectsRenderPriority = NoPriority$1;
54458
54459    {
54460      return runWithPriority$1(priorityLevel, flushPassiveEffectsImpl);
54461    }
54462  }
54463
54464  return false;
54465}
54466function enqueuePendingPassiveHookEffectMount(fiber, effect) {
54467  pendingPassiveHookEffectsMount.push(effect, fiber);
54468
54469  if (!rootDoesHavePassiveEffects) {
54470    rootDoesHavePassiveEffects = true;
54471    scheduleCallback(NormalPriority$1, function () {
54472      flushPassiveEffects();
54473      return null;
54474    });
54475  }
54476}
54477function enqueuePendingPassiveHookEffectUnmount(fiber, effect) {
54478  pendingPassiveHookEffectsUnmount.push(effect, fiber);
54479
54480  {
54481    fiber.flags |= PassiveUnmountPendingDev;
54482    var alternate = fiber.alternate;
54483
54484    if (alternate !== null) {
54485      alternate.flags |= PassiveUnmountPendingDev;
54486    }
54487  }
54488
54489  if (!rootDoesHavePassiveEffects) {
54490    rootDoesHavePassiveEffects = true;
54491    scheduleCallback(NormalPriority$1, function () {
54492      flushPassiveEffects();
54493      return null;
54494    });
54495  }
54496}
54497
54498function invokePassiveEffectCreate(effect) {
54499  var create = effect.create;
54500  effect.destroy = create();
54501}
54502
54503function flushPassiveEffectsImpl() {
54504  if (rootWithPendingPassiveEffects === null) {
54505    return false;
54506  }
54507
54508  var root = rootWithPendingPassiveEffects;
54509  var lanes = pendingPassiveEffectsLanes;
54510  rootWithPendingPassiveEffects = null;
54511  pendingPassiveEffectsLanes = NoLanes;
54512
54513  if (!((executionContext & (RenderContext | CommitContext)) === NoContext)) {
54514    {
54515      throw Error( "Cannot flush passive effects while already rendering." );
54516    }
54517  }
54518
54519  {
54520    isFlushingPassiveEffects = true;
54521  }
54522
54523  var prevExecutionContext = executionContext;
54524  executionContext |= CommitContext;
54525  var prevInteractions = pushInteractions(root); // It's important that ALL pending passive effect destroy functions are called
54526  // before ANY passive effect create functions are called.
54527  // Otherwise effects in sibling components might interfere with each other.
54528  // e.g. a destroy function in one component may unintentionally override a ref
54529  // value set by a create function in another component.
54530  // Layout effects have the same constraint.
54531  // First pass: Destroy stale passive effects.
54532
54533  var unmountEffects = pendingPassiveHookEffectsUnmount;
54534  pendingPassiveHookEffectsUnmount = [];
54535
54536  for (var i = 0; i < unmountEffects.length; i += 2) {
54537    var _effect = unmountEffects[i];
54538    var fiber = unmountEffects[i + 1];
54539    var destroy = _effect.destroy;
54540    _effect.destroy = undefined;
54541
54542    {
54543      fiber.flags &= ~PassiveUnmountPendingDev;
54544      var alternate = fiber.alternate;
54545
54546      if (alternate !== null) {
54547        alternate.flags &= ~PassiveUnmountPendingDev;
54548      }
54549    }
54550
54551    if (typeof destroy === 'function') {
54552      {
54553        setCurrentFiber(fiber);
54554
54555        {
54556          invokeGuardedCallback(null, destroy, null);
54557        }
54558
54559        if (hasCaughtError()) {
54560          if (!(fiber !== null)) {
54561            {
54562              throw Error( "Should be working on an effect." );
54563            }
54564          }
54565
54566          var error = clearCaughtError();
54567          captureCommitPhaseError(fiber, error);
54568        }
54569
54570        resetCurrentFiber();
54571      }
54572    }
54573  } // Second pass: Create new passive effects.
54574
54575
54576  var mountEffects = pendingPassiveHookEffectsMount;
54577  pendingPassiveHookEffectsMount = [];
54578
54579  for (var _i = 0; _i < mountEffects.length; _i += 2) {
54580    var _effect2 = mountEffects[_i];
54581    var _fiber = mountEffects[_i + 1];
54582
54583    {
54584      setCurrentFiber(_fiber);
54585
54586      {
54587        invokeGuardedCallback(null, invokePassiveEffectCreate, null, _effect2);
54588      }
54589
54590      if (hasCaughtError()) {
54591        if (!(_fiber !== null)) {
54592          {
54593            throw Error( "Should be working on an effect." );
54594          }
54595        }
54596
54597        var _error4 = clearCaughtError();
54598
54599        captureCommitPhaseError(_fiber, _error4);
54600      }
54601
54602      resetCurrentFiber();
54603    }
54604  } // Note: This currently assumes there are no passive effects on the root fiber
54605  // because the root is not part of its own effect list.
54606  // This could change in the future.
54607
54608
54609  var effect = root.current.firstEffect;
54610
54611  while (effect !== null) {
54612    var nextNextEffect = effect.nextEffect; // Remove nextEffect pointer to assist GC
54613
54614    effect.nextEffect = null;
54615
54616    if (effect.flags & Deletion) {
54617      detachFiberAfterEffects(effect);
54618    }
54619
54620    effect = nextNextEffect;
54621  }
54622
54623  {
54624    popInteractions(prevInteractions);
54625    finishPendingInteractions(root, lanes);
54626  }
54627
54628  {
54629    isFlushingPassiveEffects = false;
54630  }
54631
54632  executionContext = prevExecutionContext;
54633  flushSyncCallbackQueue(); // If additional passive effects were scheduled, increment a counter. If this
54634  // exceeds the limit, we'll fire a warning.
54635
54636  nestedPassiveUpdateCount = rootWithPendingPassiveEffects === null ? 0 : nestedPassiveUpdateCount + 1;
54637  return true;
54638}
54639
54640function isAlreadyFailedLegacyErrorBoundary(instance) {
54641  return legacyErrorBoundariesThatAlreadyFailed !== null && legacyErrorBoundariesThatAlreadyFailed.has(instance);
54642}
54643function markLegacyErrorBoundaryAsFailed(instance) {
54644  if (legacyErrorBoundariesThatAlreadyFailed === null) {
54645    legacyErrorBoundariesThatAlreadyFailed = new Set([instance]);
54646  } else {
54647    legacyErrorBoundariesThatAlreadyFailed.add(instance);
54648  }
54649}
54650
54651function prepareToThrowUncaughtError(error) {
54652  if (!hasUncaughtError) {
54653    hasUncaughtError = true;
54654    firstUncaughtError = error;
54655  }
54656}
54657
54658var onUncaughtError = prepareToThrowUncaughtError;
54659
54660function captureCommitPhaseErrorOnRoot(rootFiber, sourceFiber, error) {
54661  var errorInfo = createCapturedValue(error, sourceFiber);
54662  var update = createRootErrorUpdate(rootFiber, errorInfo, SyncLane);
54663  enqueueUpdate(rootFiber, update);
54664  var eventTime = requestEventTime();
54665  var root = markUpdateLaneFromFiberToRoot(rootFiber, SyncLane);
54666
54667  if (root !== null) {
54668    markRootUpdated(root, SyncLane, eventTime);
54669    ensureRootIsScheduled(root, eventTime);
54670    schedulePendingInteractions(root, SyncLane);
54671  }
54672}
54673
54674function captureCommitPhaseError(sourceFiber, error) {
54675  if (sourceFiber.tag === HostRoot) {
54676    // Error was thrown at the root. There is no parent, so the root
54677    // itself should capture it.
54678    captureCommitPhaseErrorOnRoot(sourceFiber, sourceFiber, error);
54679    return;
54680  }
54681
54682  var fiber = sourceFiber.return;
54683
54684  while (fiber !== null) {
54685    if (fiber.tag === HostRoot) {
54686      captureCommitPhaseErrorOnRoot(fiber, sourceFiber, error);
54687      return;
54688    } else if (fiber.tag === ClassComponent) {
54689      var ctor = fiber.type;
54690      var instance = fiber.stateNode;
54691
54692      if (typeof ctor.getDerivedStateFromError === 'function' || typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {
54693        var errorInfo = createCapturedValue(error, sourceFiber);
54694        var update = createClassErrorUpdate(fiber, errorInfo, SyncLane);
54695        enqueueUpdate(fiber, update);
54696        var eventTime = requestEventTime();
54697        var root = markUpdateLaneFromFiberToRoot(fiber, SyncLane);
54698
54699        if (root !== null) {
54700          markRootUpdated(root, SyncLane, eventTime);
54701          ensureRootIsScheduled(root, eventTime);
54702          schedulePendingInteractions(root, SyncLane);
54703        } else {
54704          // This component has already been unmounted.
54705          // We can't schedule any follow up work for the root because the fiber is already unmounted,
54706          // but we can still call the log-only boundary so the error isn't swallowed.
54707          //
54708          // TODO This is only a temporary bandaid for the old reconciler fork.
54709          // We can delete this special case once the new fork is merged.
54710          if (typeof instance.componentDidCatch === 'function' && !isAlreadyFailedLegacyErrorBoundary(instance)) {
54711            try {
54712              instance.componentDidCatch(error, errorInfo);
54713            } catch (errorToIgnore) {// TODO Ignore this error? Rethrow it?
54714              // This is kind of an edge case.
54715            }
54716          }
54717        }
54718
54719        return;
54720      }
54721    }
54722
54723    fiber = fiber.return;
54724  }
54725}
54726function pingSuspendedRoot(root, wakeable, pingedLanes) {
54727  var pingCache = root.pingCache;
54728
54729  if (pingCache !== null) {
54730    // The wakeable resolved, so we no longer need to memoize, because it will
54731    // never be thrown again.
54732    pingCache.delete(wakeable);
54733  }
54734
54735  var eventTime = requestEventTime();
54736  markRootPinged(root, pingedLanes);
54737
54738  if (workInProgressRoot === root && isSubsetOfLanes(workInProgressRootRenderLanes, pingedLanes)) {
54739    // Received a ping at the same priority level at which we're currently
54740    // rendering. We might want to restart this render. This should mirror
54741    // the logic of whether or not a root suspends once it completes.
54742    // TODO: If we're rendering sync either due to Sync, Batched or expired,
54743    // we should probably never restart.
54744    // If we're suspended with delay, or if it's a retry, we'll always suspend
54745    // so we can always restart.
54746    if (workInProgressRootExitStatus === RootSuspendedWithDelay || workInProgressRootExitStatus === RootSuspended && includesOnlyRetries(workInProgressRootRenderLanes) && now() - globalMostRecentFallbackTime < FALLBACK_THROTTLE_MS) {
54747      // Restart from the root.
54748      prepareFreshStack(root, NoLanes);
54749    } else {
54750      // Even though we can't restart right now, we might get an
54751      // opportunity later. So we mark this render as having a ping.
54752      workInProgressRootPingedLanes = mergeLanes(workInProgressRootPingedLanes, pingedLanes);
54753    }
54754  }
54755
54756  ensureRootIsScheduled(root, eventTime);
54757  schedulePendingInteractions(root, pingedLanes);
54758}
54759
54760function retryTimedOutBoundary(boundaryFiber, retryLane) {
54761  // The boundary fiber (a Suspense component or SuspenseList component)
54762  // previously was rendered in its fallback state. One of the promises that
54763  // suspended it has resolved, which means at least part of the tree was
54764  // likely unblocked. Try rendering again, at a new expiration time.
54765  if (retryLane === NoLane) {
54766    retryLane = requestRetryLane(boundaryFiber);
54767  } // TODO: Special case idle priority?
54768
54769
54770  var eventTime = requestEventTime();
54771  var root = markUpdateLaneFromFiberToRoot(boundaryFiber, retryLane);
54772
54773  if (root !== null) {
54774    markRootUpdated(root, retryLane, eventTime);
54775    ensureRootIsScheduled(root, eventTime);
54776    schedulePendingInteractions(root, retryLane);
54777  }
54778}
54779function resolveRetryWakeable(boundaryFiber, wakeable) {
54780  var retryLane = NoLane; // Default
54781
54782  var retryCache;
54783
54784  {
54785    retryCache = boundaryFiber.stateNode;
54786  }
54787
54788  if (retryCache !== null) {
54789    // The wakeable resolved, so we no longer need to memoize, because it will
54790    // never be thrown again.
54791    retryCache.delete(wakeable);
54792  }
54793
54794  retryTimedOutBoundary(boundaryFiber, retryLane);
54795} // Computes the next Just Noticeable Difference (JND) boundary.
54796// The theory is that a person can't tell the difference between small differences in time.
54797// Therefore, if we wait a bit longer than necessary that won't translate to a noticeable
54798// difference in the experience. However, waiting for longer might mean that we can avoid
54799// showing an intermediate loading state. The longer we have already waited, the harder it
54800// is to tell small differences in time. Therefore, the longer we've already waited,
54801// the longer we can wait additionally. At some point we have to give up though.
54802// We pick a train model where the next boundary commits at a consistent schedule.
54803// These particular numbers are vague estimates. We expect to adjust them based on research.
54804
54805function jnd(timeElapsed) {
54806  return timeElapsed < 120 ? 120 : timeElapsed < 480 ? 480 : timeElapsed < 1080 ? 1080 : timeElapsed < 1920 ? 1920 : timeElapsed < 3000 ? 3000 : timeElapsed < 4320 ? 4320 : ceil(timeElapsed / 1960) * 1960;
54807}
54808
54809function checkForNestedUpdates() {
54810  if (nestedUpdateCount > NESTED_UPDATE_LIMIT) {
54811    nestedUpdateCount = 0;
54812    rootWithNestedUpdates = null;
54813
54814    {
54815      {
54816        throw Error( "Maximum update depth exceeded. This can happen when a component repeatedly calls setState inside componentWillUpdate or componentDidUpdate. React limits the number of nested updates to prevent infinite loops." );
54817      }
54818    }
54819  }
54820
54821  {
54822    if (nestedPassiveUpdateCount > NESTED_PASSIVE_UPDATE_LIMIT) {
54823      nestedPassiveUpdateCount = 0;
54824
54825      error('Maximum update depth exceeded. This can happen when a component ' + "calls setState inside useEffect, but useEffect either doesn't " + 'have a dependency array, or one of the dependencies changes on ' + 'every render.');
54826    }
54827  }
54828}
54829
54830function flushRenderPhaseStrictModeWarningsInDEV() {
54831  {
54832    ReactStrictModeWarnings.flushLegacyContextWarning();
54833
54834    {
54835      ReactStrictModeWarnings.flushPendingUnsafeLifecycleWarnings();
54836    }
54837  }
54838}
54839
54840var didWarnStateUpdateForNotYetMountedComponent = null;
54841
54842function warnAboutUpdateOnNotYetMountedFiberInDEV(fiber) {
54843  {
54844    if ((executionContext & RenderContext) !== NoContext) {
54845      // We let the other warning about render phase updates deal with this one.
54846      return;
54847    }
54848
54849    if (!(fiber.mode & (BlockingMode | ConcurrentMode))) {
54850      return;
54851    }
54852
54853    var tag = fiber.tag;
54854
54855    if (tag !== IndeterminateComponent && tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) {
54856      // Only warn for user-defined components, not internal ones like Suspense.
54857      return;
54858    } // We show the whole stack but dedupe on the top component's name because
54859    // the problematic code almost always lies inside that component.
54860
54861
54862    var componentName = getComponentName(fiber.type) || 'ReactComponent';
54863
54864    if (didWarnStateUpdateForNotYetMountedComponent !== null) {
54865      if (didWarnStateUpdateForNotYetMountedComponent.has(componentName)) {
54866        return;
54867      }
54868
54869      didWarnStateUpdateForNotYetMountedComponent.add(componentName);
54870    } else {
54871      didWarnStateUpdateForNotYetMountedComponent = new Set([componentName]);
54872    }
54873
54874    var previousFiber = current;
54875
54876    try {
54877      setCurrentFiber(fiber);
54878
54879      error("Can't perform a React state update on a component that hasn't mounted yet. " + 'This indicates that you have a side-effect in your render function that ' + 'asynchronously later calls tries to update the component. Move this work to ' + 'useEffect instead.');
54880    } finally {
54881      if (previousFiber) {
54882        setCurrentFiber(fiber);
54883      } else {
54884        resetCurrentFiber();
54885      }
54886    }
54887  }
54888}
54889
54890var didWarnStateUpdateForUnmountedComponent = null;
54891
54892function warnAboutUpdateOnUnmountedFiberInDEV(fiber) {
54893  {
54894    var tag = fiber.tag;
54895
54896    if (tag !== HostRoot && tag !== ClassComponent && tag !== FunctionComponent && tag !== ForwardRef && tag !== MemoComponent && tag !== SimpleMemoComponent && tag !== Block) {
54897      // Only warn for user-defined components, not internal ones like Suspense.
54898      return;
54899    } // If there are pending passive effects unmounts for this Fiber,
54900    // we can assume that they would have prevented this update.
54901
54902
54903    if ((fiber.flags & PassiveUnmountPendingDev) !== NoFlags) {
54904      return;
54905    } // We show the whole stack but dedupe on the top component's name because
54906    // the problematic code almost always lies inside that component.
54907
54908
54909    var componentName = getComponentName(fiber.type) || 'ReactComponent';
54910
54911    if (didWarnStateUpdateForUnmountedComponent !== null) {
54912      if (didWarnStateUpdateForUnmountedComponent.has(componentName)) {
54913        return;
54914      }
54915
54916      didWarnStateUpdateForUnmountedComponent.add(componentName);
54917    } else {
54918      didWarnStateUpdateForUnmountedComponent = new Set([componentName]);
54919    }
54920
54921    if (isFlushingPassiveEffects) ; else {
54922      var previousFiber = current;
54923
54924      try {
54925        setCurrentFiber(fiber);
54926
54927        error("Can't perform a React state update on an unmounted component. This " + 'is a no-op, but it indicates a memory leak in your application. To ' + 'fix, cancel all subscriptions and asynchronous tasks in %s.', tag === ClassComponent ? 'the componentWillUnmount method' : 'a useEffect cleanup function');
54928      } finally {
54929        if (previousFiber) {
54930          setCurrentFiber(fiber);
54931        } else {
54932          resetCurrentFiber();
54933        }
54934      }
54935    }
54936  }
54937}
54938
54939var beginWork$1;
54940
54941{
54942  var dummyFiber = null;
54943
54944  beginWork$1 = function (current, unitOfWork, lanes) {
54945    // If a component throws an error, we replay it again in a synchronously
54946    // dispatched event, so that the debugger will treat it as an uncaught
54947    // error See ReactErrorUtils for more information.
54948    // Before entering the begin phase, copy the work-in-progress onto a dummy
54949    // fiber. If beginWork throws, we'll use this to reset the state.
54950    var originalWorkInProgressCopy = assignFiberPropertiesInDEV(dummyFiber, unitOfWork);
54951
54952    try {
54953      return beginWork(current, unitOfWork, lanes);
54954    } catch (originalError) {
54955      if (originalError !== null && typeof originalError === 'object' && typeof originalError.then === 'function') {
54956        // Don't replay promises. Treat everything else like an error.
54957        throw originalError;
54958      } // Keep this code in sync with handleError; any changes here must have
54959      // corresponding changes there.
54960
54961
54962      resetContextDependencies();
54963      resetHooksAfterThrow(); // Don't reset current debug fiber, since we're about to work on the
54964      // same fiber again.
54965      // Unwind the failed stack frame
54966
54967      unwindInterruptedWork(unitOfWork); // Restore the original properties of the fiber.
54968
54969      assignFiberPropertiesInDEV(unitOfWork, originalWorkInProgressCopy);
54970
54971      if ( unitOfWork.mode & ProfileMode) {
54972        // Reset the profiler timer.
54973        startProfilerTimer(unitOfWork);
54974      } // Run beginWork again.
54975
54976
54977      invokeGuardedCallback(null, beginWork, null, current, unitOfWork, lanes);
54978
54979      if (hasCaughtError()) {
54980        var replayError = clearCaughtError(); // `invokeGuardedCallback` sometimes sets an expando `_suppressLogging`.
54981        // Rethrow this error instead of the original one.
54982
54983        throw replayError;
54984      } else {
54985        // This branch is reachable if the render phase is impure.
54986        throw originalError;
54987      }
54988    }
54989  };
54990}
54991
54992var didWarnAboutUpdateInRender = false;
54993var didWarnAboutUpdateInRenderForAnotherComponent;
54994
54995{
54996  didWarnAboutUpdateInRenderForAnotherComponent = new Set();
54997}
54998
54999function warnAboutRenderPhaseUpdatesInDEV(fiber) {
55000  {
55001    if (isRendering && (executionContext & RenderContext) !== NoContext && !getIsUpdatingOpaqueValueInRenderPhaseInDEV()) {
55002      switch (fiber.tag) {
55003        case FunctionComponent:
55004        case ForwardRef:
55005        case SimpleMemoComponent:
55006          {
55007            var renderingComponentName = workInProgress && getComponentName(workInProgress.type) || 'Unknown'; // Dedupe by the rendering component because it's the one that needs to be fixed.
55008
55009            var dedupeKey = renderingComponentName;
55010
55011            if (!didWarnAboutUpdateInRenderForAnotherComponent.has(dedupeKey)) {
55012              didWarnAboutUpdateInRenderForAnotherComponent.add(dedupeKey);
55013              var setStateComponentName = getComponentName(fiber.type) || 'Unknown';
55014
55015              error('Cannot update a component (`%s`) while rendering a ' + 'different component (`%s`). To locate the bad setState() call inside `%s`, ' + 'follow the stack trace as described in https://reactjs.org/link/setstate-in-render', setStateComponentName, renderingComponentName, renderingComponentName);
55016            }
55017
55018            break;
55019          }
55020
55021        case ClassComponent:
55022          {
55023            if (!didWarnAboutUpdateInRender) {
55024              error('Cannot update during an existing state transition (such as ' + 'within `render`). Render methods should be a pure ' + 'function of props and state.');
55025
55026              didWarnAboutUpdateInRender = true;
55027            }
55028
55029            break;
55030          }
55031      }
55032    }
55033  }
55034} // a 'shared' variable that changes when act() opens/closes in tests.
55035
55036
55037var IsThisRendererActing = {
55038  current: false
55039};
55040function warnIfNotScopedWithMatchingAct(fiber) {
55041  {
55042    if ( IsSomeRendererActing.current === true && IsThisRendererActing.current !== true) {
55043      var previousFiber = current;
55044
55045      try {
55046        setCurrentFiber(fiber);
55047
55048        error("It looks like you're using the wrong act() around your test interactions.\n" + 'Be sure to use the matching version of act() corresponding to your renderer:\n\n' + '// for react-dom:\n' + // Break up imports to avoid accidentally parsing them as dependencies.
55049        'import {act} fr' + "om 'react-dom/test-utils';\n" + '// ...\n' + 'act(() => ...);\n\n' + '// for react-test-renderer:\n' + // Break up imports to avoid accidentally parsing them as dependencies.
55050        'import TestRenderer fr' + "om react-test-renderer';\n" + 'const {act} = TestRenderer;\n' + '// ...\n' + 'act(() => ...);');
55051      } finally {
55052        if (previousFiber) {
55053          setCurrentFiber(fiber);
55054        } else {
55055          resetCurrentFiber();
55056        }
55057      }
55058    }
55059  }
55060}
55061function warnIfNotCurrentlyActingEffectsInDEV(fiber) {
55062  {
55063    if ( (fiber.mode & StrictMode) !== NoMode && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {
55064      error('An update to %s ran an effect, but was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + '  /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentName(fiber.type));
55065    }
55066  }
55067}
55068
55069function warnIfNotCurrentlyActingUpdatesInDEV(fiber) {
55070  {
55071    if ( executionContext === NoContext && IsSomeRendererActing.current === false && IsThisRendererActing.current === false) {
55072      var previousFiber = current;
55073
55074      try {
55075        setCurrentFiber(fiber);
55076
55077        error('An update to %s inside a test was not wrapped in act(...).\n\n' + 'When testing, code that causes React state updates should be ' + 'wrapped into act(...):\n\n' + 'act(() => {\n' + '  /* fire events that update state */\n' + '});\n' + '/* assert on the output */\n\n' + "This ensures that you're testing the behavior the user would see " + 'in the browser.' + ' Learn more at https://reactjs.org/link/wrap-tests-with-act', getComponentName(fiber.type));
55078      } finally {
55079        if (previousFiber) {
55080          setCurrentFiber(fiber);
55081        } else {
55082          resetCurrentFiber();
55083        }
55084      }
55085    }
55086  }
55087}
55088
55089var warnIfNotCurrentlyActingUpdatesInDev = warnIfNotCurrentlyActingUpdatesInDEV; // In tests, we want to enforce a mocked scheduler.
55090
55091var didWarnAboutUnmockedScheduler = false; // TODO Before we release concurrent mode, revisit this and decide whether a mocked
55092// scheduler is the actual recommendation. The alternative could be a testing build,
55093// a new lib, or whatever; we dunno just yet. This message is for early adopters
55094// to get their tests right.
55095
55096function warnIfUnmockedScheduler(fiber) {
55097  {
55098    if (didWarnAboutUnmockedScheduler === false && Scheduler.unstable_flushAllWithoutAsserting === undefined) {
55099      if (fiber.mode & BlockingMode || fiber.mode & ConcurrentMode) {
55100        didWarnAboutUnmockedScheduler = true;
55101
55102        error('In Concurrent or Sync modes, the "scheduler" module needs to be mocked ' + 'to guarantee consistent behaviour across tests and browsers. ' + 'For example, with jest: \n' + // Break up requires to avoid accidentally parsing them as dependencies.
55103        "jest.mock('scheduler', () => require" + "('scheduler/unstable_mock'));\n\n" + 'For more info, visit https://reactjs.org/link/mock-scheduler');
55104      }
55105    }
55106  }
55107}
55108
55109function computeThreadID(root, lane) {
55110  // Interaction threads are unique per root and expiration time.
55111  // NOTE: Intentionally unsound cast. All that matters is that it's a number
55112  // and it represents a batch of work. Could make a helper function instead,
55113  // but meh this is fine for now.
55114  return lane * 1000 + root.interactionThreadID;
55115}
55116
55117function markSpawnedWork(lane) {
55118
55119  if (spawnedWorkDuringRender === null) {
55120    spawnedWorkDuringRender = [lane];
55121  } else {
55122    spawnedWorkDuringRender.push(lane);
55123  }
55124}
55125
55126function scheduleInteractions(root, lane, interactions) {
55127
55128  if (interactions.size > 0) {
55129    var pendingInteractionMap = root.pendingInteractionMap;
55130    var pendingInteractions = pendingInteractionMap.get(lane);
55131
55132    if (pendingInteractions != null) {
55133      interactions.forEach(function (interaction) {
55134        if (!pendingInteractions.has(interaction)) {
55135          // Update the pending async work count for previously unscheduled interaction.
55136          interaction.__count++;
55137        }
55138
55139        pendingInteractions.add(interaction);
55140      });
55141    } else {
55142      pendingInteractionMap.set(lane, new Set(interactions)); // Update the pending async work count for the current interactions.
55143
55144      interactions.forEach(function (interaction) {
55145        interaction.__count++;
55146      });
55147    }
55148
55149    var subscriber = tracing.__subscriberRef.current;
55150
55151    if (subscriber !== null) {
55152      var threadID = computeThreadID(root, lane);
55153      subscriber.onWorkScheduled(interactions, threadID);
55154    }
55155  }
55156}
55157
55158function schedulePendingInteractions(root, lane) {
55159
55160  scheduleInteractions(root, lane, tracing.__interactionsRef.current);
55161}
55162
55163function startWorkOnPendingInteractions(root, lanes) {
55164  // we can accurately attribute time spent working on it, And so that cascading
55165  // work triggered during the render phase will be associated with it.
55166
55167
55168  var interactions = new Set();
55169  root.pendingInteractionMap.forEach(function (scheduledInteractions, scheduledLane) {
55170    if (includesSomeLane(lanes, scheduledLane)) {
55171      scheduledInteractions.forEach(function (interaction) {
55172        return interactions.add(interaction);
55173      });
55174    }
55175  }); // Store the current set of interactions on the FiberRoot for a few reasons:
55176  // We can re-use it in hot functions like performConcurrentWorkOnRoot()
55177  // without having to recalculate it. We will also use it in commitWork() to
55178  // pass to any Profiler onRender() hooks. This also provides DevTools with a
55179  // way to access it when the onCommitRoot() hook is called.
55180
55181  root.memoizedInteractions = interactions;
55182
55183  if (interactions.size > 0) {
55184    var subscriber = tracing.__subscriberRef.current;
55185
55186    if (subscriber !== null) {
55187      var threadID = computeThreadID(root, lanes);
55188
55189      try {
55190        subscriber.onWorkStarted(interactions, threadID);
55191      } catch (error) {
55192        // If the subscriber throws, rethrow it in a separate task
55193        scheduleCallback(ImmediatePriority$1, function () {
55194          throw error;
55195        });
55196      }
55197    }
55198  }
55199}
55200
55201function finishPendingInteractions(root, committedLanes) {
55202
55203  var remainingLanesAfterCommit = root.pendingLanes;
55204  var subscriber;
55205
55206  try {
55207    subscriber = tracing.__subscriberRef.current;
55208
55209    if (subscriber !== null && root.memoizedInteractions.size > 0) {
55210      // FIXME: More than one lane can finish in a single commit.
55211      var threadID = computeThreadID(root, committedLanes);
55212      subscriber.onWorkStopped(root.memoizedInteractions, threadID);
55213    }
55214  } catch (error) {
55215    // If the subscriber throws, rethrow it in a separate task
55216    scheduleCallback(ImmediatePriority$1, function () {
55217      throw error;
55218    });
55219  } finally {
55220    // Clear completed interactions from the pending Map.
55221    // Unless the render was suspended or cascading work was scheduled,
55222    // In which case– leave pending interactions until the subsequent render.
55223    var pendingInteractionMap = root.pendingInteractionMap;
55224    pendingInteractionMap.forEach(function (scheduledInteractions, lane) {
55225      // Only decrement the pending interaction count if we're done.
55226      // If there's still work at the current priority,
55227      // That indicates that we are waiting for suspense data.
55228      if (!includesSomeLane(remainingLanesAfterCommit, lane)) {
55229        pendingInteractionMap.delete(lane);
55230        scheduledInteractions.forEach(function (interaction) {
55231          interaction.__count--;
55232
55233          if (subscriber !== null && interaction.__count === 0) {
55234            try {
55235              subscriber.onInteractionScheduledWorkCompleted(interaction);
55236            } catch (error) {
55237              // If the subscriber throws, rethrow it in a separate task
55238              scheduleCallback(ImmediatePriority$1, function () {
55239                throw error;
55240              });
55241            }
55242          }
55243        });
55244      }
55245    });
55246  }
55247} // `act` testing API
55248
55249function shouldForceFlushFallbacksInDEV() {
55250  // Never force flush in production. This function should get stripped out.
55251  return  actingUpdatesScopeDepth > 0;
55252}
55253// so we can tell if any async act() calls try to run in parallel.
55254
55255
55256var actingUpdatesScopeDepth = 0;
55257
55258function detachFiberAfterEffects(fiber) {
55259  fiber.sibling = null;
55260  fiber.stateNode = null;
55261}
55262
55263var resolveFamily = null; // $FlowFixMe Flow gets confused by a WeakSet feature check below.
55264
55265var failedBoundaries = null;
55266var setRefreshHandler = function (handler) {
55267  {
55268    resolveFamily = handler;
55269  }
55270};
55271function resolveFunctionForHotReloading(type) {
55272  {
55273    if (resolveFamily === null) {
55274      // Hot reloading is disabled.
55275      return type;
55276    }
55277
55278    var family = resolveFamily(type);
55279
55280    if (family === undefined) {
55281      return type;
55282    } // Use the latest known implementation.
55283
55284
55285    return family.current;
55286  }
55287}
55288function resolveClassForHotReloading(type) {
55289  // No implementation differences.
55290  return resolveFunctionForHotReloading(type);
55291}
55292function resolveForwardRefForHotReloading(type) {
55293  {
55294    if (resolveFamily === null) {
55295      // Hot reloading is disabled.
55296      return type;
55297    }
55298
55299    var family = resolveFamily(type);
55300
55301    if (family === undefined) {
55302      // Check if we're dealing with a real forwardRef. Don't want to crash early.
55303      if (type !== null && type !== undefined && typeof type.render === 'function') {
55304        // ForwardRef is special because its resolved .type is an object,
55305        // but it's possible that we only have its inner render function in the map.
55306        // If that inner render function is different, we'll build a new forwardRef type.
55307        var currentRender = resolveFunctionForHotReloading(type.render);
55308
55309        if (type.render !== currentRender) {
55310          var syntheticType = {
55311            $$typeof: REACT_FORWARD_REF_TYPE,
55312            render: currentRender
55313          };
55314
55315          if (type.displayName !== undefined) {
55316            syntheticType.displayName = type.displayName;
55317          }
55318
55319          return syntheticType;
55320        }
55321      }
55322
55323      return type;
55324    } // Use the latest known implementation.
55325
55326
55327    return family.current;
55328  }
55329}
55330function isCompatibleFamilyForHotReloading(fiber, element) {
55331  {
55332    if (resolveFamily === null) {
55333      // Hot reloading is disabled.
55334      return false;
55335    }
55336
55337    var prevType = fiber.elementType;
55338    var nextType = element.type; // If we got here, we know types aren't === equal.
55339
55340    var needsCompareFamilies = false;
55341    var $$typeofNextType = typeof nextType === 'object' && nextType !== null ? nextType.$$typeof : null;
55342
55343    switch (fiber.tag) {
55344      case ClassComponent:
55345        {
55346          if (typeof nextType === 'function') {
55347            needsCompareFamilies = true;
55348          }
55349
55350          break;
55351        }
55352
55353      case FunctionComponent:
55354        {
55355          if (typeof nextType === 'function') {
55356            needsCompareFamilies = true;
55357          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
55358            // We don't know the inner type yet.
55359            // We're going to assume that the lazy inner type is stable,
55360            // and so it is sufficient to avoid reconciling it away.
55361            // We're not going to unwrap or actually use the new lazy type.
55362            needsCompareFamilies = true;
55363          }
55364
55365          break;
55366        }
55367
55368      case ForwardRef:
55369        {
55370          if ($$typeofNextType === REACT_FORWARD_REF_TYPE) {
55371            needsCompareFamilies = true;
55372          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
55373            needsCompareFamilies = true;
55374          }
55375
55376          break;
55377        }
55378
55379      case MemoComponent:
55380      case SimpleMemoComponent:
55381        {
55382          if ($$typeofNextType === REACT_MEMO_TYPE) {
55383            // TODO: if it was but can no longer be simple,
55384            // we shouldn't set this.
55385            needsCompareFamilies = true;
55386          } else if ($$typeofNextType === REACT_LAZY_TYPE) {
55387            needsCompareFamilies = true;
55388          }
55389
55390          break;
55391        }
55392
55393      default:
55394        return false;
55395    } // Check if both types have a family and it's the same one.
55396
55397
55398    if (needsCompareFamilies) {
55399      // Note: memo() and forwardRef() we'll compare outer rather than inner type.
55400      // This means both of them need to be registered to preserve state.
55401      // If we unwrapped and compared the inner types for wrappers instead,
55402      // then we would risk falsely saying two separate memo(Foo)
55403      // calls are equivalent because they wrap the same Foo function.
55404      var prevFamily = resolveFamily(prevType);
55405
55406      if (prevFamily !== undefined && prevFamily === resolveFamily(nextType)) {
55407        return true;
55408      }
55409    }
55410
55411    return false;
55412  }
55413}
55414function markFailedErrorBoundaryForHotReloading(fiber) {
55415  {
55416    if (resolveFamily === null) {
55417      // Hot reloading is disabled.
55418      return;
55419    }
55420
55421    if (typeof WeakSet !== 'function') {
55422      return;
55423    }
55424
55425    if (failedBoundaries === null) {
55426      failedBoundaries = new WeakSet();
55427    }
55428
55429    failedBoundaries.add(fiber);
55430  }
55431}
55432var scheduleRefresh = function (root, update) {
55433  {
55434    if (resolveFamily === null) {
55435      // Hot reloading is disabled.
55436      return;
55437    }
55438
55439    var staleFamilies = update.staleFamilies,
55440        updatedFamilies = update.updatedFamilies;
55441    flushPassiveEffects();
55442    flushSync(function () {
55443      scheduleFibersWithFamiliesRecursively(root.current, updatedFamilies, staleFamilies);
55444    });
55445  }
55446};
55447var scheduleRoot = function (root, element) {
55448  {
55449    if (root.context !== emptyContextObject) {
55450      // Super edge case: root has a legacy _renderSubtree context
55451      // but we don't know the parentComponent so we can't pass it.
55452      // Just ignore. We'll delete this with _renderSubtree code path later.
55453      return;
55454    }
55455
55456    flushPassiveEffects();
55457    flushSync(function () {
55458      updateContainer(element, root, null, null);
55459    });
55460  }
55461};
55462
55463function scheduleFibersWithFamiliesRecursively(fiber, updatedFamilies, staleFamilies) {
55464  {
55465    var alternate = fiber.alternate,
55466        child = fiber.child,
55467        sibling = fiber.sibling,
55468        tag = fiber.tag,
55469        type = fiber.type;
55470    var candidateType = null;
55471
55472    switch (tag) {
55473      case FunctionComponent:
55474      case SimpleMemoComponent:
55475      case ClassComponent:
55476        candidateType = type;
55477        break;
55478
55479      case ForwardRef:
55480        candidateType = type.render;
55481        break;
55482    }
55483
55484    if (resolveFamily === null) {
55485      throw new Error('Expected resolveFamily to be set during hot reload.');
55486    }
55487
55488    var needsRender = false;
55489    var needsRemount = false;
55490
55491    if (candidateType !== null) {
55492      var family = resolveFamily(candidateType);
55493
55494      if (family !== undefined) {
55495        if (staleFamilies.has(family)) {
55496          needsRemount = true;
55497        } else if (updatedFamilies.has(family)) {
55498          if (tag === ClassComponent) {
55499            needsRemount = true;
55500          } else {
55501            needsRender = true;
55502          }
55503        }
55504      }
55505    }
55506
55507    if (failedBoundaries !== null) {
55508      if (failedBoundaries.has(fiber) || alternate !== null && failedBoundaries.has(alternate)) {
55509        needsRemount = true;
55510      }
55511    }
55512
55513    if (needsRemount) {
55514      fiber._debugNeedsRemount = true;
55515    }
55516
55517    if (needsRemount || needsRender) {
55518      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
55519    }
55520
55521    if (child !== null && !needsRemount) {
55522      scheduleFibersWithFamiliesRecursively(child, updatedFamilies, staleFamilies);
55523    }
55524
55525    if (sibling !== null) {
55526      scheduleFibersWithFamiliesRecursively(sibling, updatedFamilies, staleFamilies);
55527    }
55528  }
55529}
55530
55531var findHostInstancesForRefresh = function (root, families) {
55532  {
55533    var hostInstances = new Set();
55534    var types = new Set(families.map(function (family) {
55535      return family.current;
55536    }));
55537    findHostInstancesForMatchingFibersRecursively(root.current, types, hostInstances);
55538    return hostInstances;
55539  }
55540};
55541
55542function findHostInstancesForMatchingFibersRecursively(fiber, types, hostInstances) {
55543  {
55544    var child = fiber.child,
55545        sibling = fiber.sibling,
55546        tag = fiber.tag,
55547        type = fiber.type;
55548    var candidateType = null;
55549
55550    switch (tag) {
55551      case FunctionComponent:
55552      case SimpleMemoComponent:
55553      case ClassComponent:
55554        candidateType = type;
55555        break;
55556
55557      case ForwardRef:
55558        candidateType = type.render;
55559        break;
55560    }
55561
55562    var didMatch = false;
55563
55564    if (candidateType !== null) {
55565      if (types.has(candidateType)) {
55566        didMatch = true;
55567      }
55568    }
55569
55570    if (didMatch) {
55571      // We have a match. This only drills down to the closest host components.
55572      // There's no need to search deeper because for the purpose of giving
55573      // visual feedback, "flashing" outermost parent rectangles is sufficient.
55574      findHostInstancesForFiberShallowly(fiber, hostInstances);
55575    } else {
55576      // If there's no match, maybe there will be one further down in the child tree.
55577      if (child !== null) {
55578        findHostInstancesForMatchingFibersRecursively(child, types, hostInstances);
55579      }
55580    }
55581
55582    if (sibling !== null) {
55583      findHostInstancesForMatchingFibersRecursively(sibling, types, hostInstances);
55584    }
55585  }
55586}
55587
55588function findHostInstancesForFiberShallowly(fiber, hostInstances) {
55589  {
55590    var foundHostInstances = findChildHostInstancesForFiberShallowly(fiber, hostInstances);
55591
55592    if (foundHostInstances) {
55593      return;
55594    } // If we didn't find any host children, fallback to closest host parent.
55595
55596
55597    var node = fiber;
55598
55599    while (true) {
55600      switch (node.tag) {
55601        case HostComponent:
55602          hostInstances.add(node.stateNode);
55603          return;
55604
55605        case HostPortal:
55606          hostInstances.add(node.stateNode.containerInfo);
55607          return;
55608
55609        case HostRoot:
55610          hostInstances.add(node.stateNode.containerInfo);
55611          return;
55612      }
55613
55614      if (node.return === null) {
55615        throw new Error('Expected to reach root first.');
55616      }
55617
55618      node = node.return;
55619    }
55620  }
55621}
55622
55623function findChildHostInstancesForFiberShallowly(fiber, hostInstances) {
55624  {
55625    var node = fiber;
55626    var foundHostInstances = false;
55627
55628    while (true) {
55629      if (node.tag === HostComponent) {
55630        // We got a match.
55631        foundHostInstances = true;
55632        hostInstances.add(node.stateNode); // There may still be more, so keep searching.
55633      } else if (node.child !== null) {
55634        node.child.return = node;
55635        node = node.child;
55636        continue;
55637      }
55638
55639      if (node === fiber) {
55640        return foundHostInstances;
55641      }
55642
55643      while (node.sibling === null) {
55644        if (node.return === null || node.return === fiber) {
55645          return foundHostInstances;
55646        }
55647
55648        node = node.return;
55649      }
55650
55651      node.sibling.return = node.return;
55652      node = node.sibling;
55653    }
55654  }
55655
55656  return false;
55657}
55658
55659var hasBadMapPolyfill;
55660
55661{
55662  hasBadMapPolyfill = false;
55663
55664  try {
55665    var nonExtensibleObject = Object.preventExtensions({});
55666    /* eslint-disable no-new */
55667
55668    new Map([[nonExtensibleObject, null]]);
55669    new Set([nonExtensibleObject]);
55670    /* eslint-enable no-new */
55671  } catch (e) {
55672    // TODO: Consider warning about bad polyfills
55673    hasBadMapPolyfill = true;
55674  }
55675}
55676
55677var debugCounter = 1;
55678
55679function FiberNode(tag, pendingProps, key, mode) {
55680  // Instance
55681  this.tag = tag;
55682  this.key = key;
55683  this.elementType = null;
55684  this.type = null;
55685  this.stateNode = null; // Fiber
55686
55687  this.return = null;
55688  this.child = null;
55689  this.sibling = null;
55690  this.index = 0;
55691  this.ref = null;
55692  this.pendingProps = pendingProps;
55693  this.memoizedProps = null;
55694  this.updateQueue = null;
55695  this.memoizedState = null;
55696  this.dependencies = null;
55697  this.mode = mode; // Effects
55698
55699  this.flags = NoFlags;
55700  this.nextEffect = null;
55701  this.firstEffect = null;
55702  this.lastEffect = null;
55703  this.lanes = NoLanes;
55704  this.childLanes = NoLanes;
55705  this.alternate = null;
55706
55707  {
55708    // Note: The following is done to avoid a v8 performance cliff.
55709    //
55710    // Initializing the fields below to smis and later updating them with
55711    // double values will cause Fibers to end up having separate shapes.
55712    // This behavior/bug has something to do with Object.preventExtension().
55713    // Fortunately this only impacts DEV builds.
55714    // Unfortunately it makes React unusably slow for some applications.
55715    // To work around this, initialize the fields below with doubles.
55716    //
55717    // Learn more about this here:
55718    // https://github.com/facebook/react/issues/14365
55719    // https://bugs.chromium.org/p/v8/issues/detail?id=8538
55720    this.actualDuration = Number.NaN;
55721    this.actualStartTime = Number.NaN;
55722    this.selfBaseDuration = Number.NaN;
55723    this.treeBaseDuration = Number.NaN; // It's okay to replace the initial doubles with smis after initialization.
55724    // This won't trigger the performance cliff mentioned above,
55725    // and it simplifies other profiler code (including DevTools).
55726
55727    this.actualDuration = 0;
55728    this.actualStartTime = -1;
55729    this.selfBaseDuration = 0;
55730    this.treeBaseDuration = 0;
55731  }
55732
55733  {
55734    // This isn't directly used but is handy for debugging internals:
55735    this._debugID = debugCounter++;
55736    this._debugSource = null;
55737    this._debugOwner = null;
55738    this._debugNeedsRemount = false;
55739    this._debugHookTypes = null;
55740
55741    if (!hasBadMapPolyfill && typeof Object.preventExtensions === 'function') {
55742      Object.preventExtensions(this);
55743    }
55744  }
55745} // This is a constructor function, rather than a POJO constructor, still
55746// please ensure we do the following:
55747// 1) Nobody should add any instance methods on this. Instance methods can be
55748//    more difficult to predict when they get optimized and they are almost
55749//    never inlined properly in static compilers.
55750// 2) Nobody should rely on `instanceof Fiber` for type testing. We should
55751//    always know when it is a fiber.
55752// 3) We might want to experiment with using numeric keys since they are easier
55753//    to optimize in a non-JIT environment.
55754// 4) We can easily go from a constructor to a createFiber object literal if that
55755//    is faster.
55756// 5) It should be easy to port this to a C struct and keep a C implementation
55757//    compatible.
55758
55759
55760var createFiber = function (tag, pendingProps, key, mode) {
55761  // $FlowFixMe: the shapes are exact here but Flow doesn't like constructors
55762  return new FiberNode(tag, pendingProps, key, mode);
55763};
55764
55765function shouldConstruct$1(Component) {
55766  var prototype = Component.prototype;
55767  return !!(prototype && prototype.isReactComponent);
55768}
55769
55770function isSimpleFunctionComponent(type) {
55771  return typeof type === 'function' && !shouldConstruct$1(type) && type.defaultProps === undefined;
55772}
55773function resolveLazyComponentTag(Component) {
55774  if (typeof Component === 'function') {
55775    return shouldConstruct$1(Component) ? ClassComponent : FunctionComponent;
55776  } else if (Component !== undefined && Component !== null) {
55777    var $$typeof = Component.$$typeof;
55778
55779    if ($$typeof === REACT_FORWARD_REF_TYPE) {
55780      return ForwardRef;
55781    }
55782
55783    if ($$typeof === REACT_MEMO_TYPE) {
55784      return MemoComponent;
55785    }
55786  }
55787
55788  return IndeterminateComponent;
55789} // This is used to create an alternate fiber to do work on.
55790
55791function createWorkInProgress(current, pendingProps) {
55792  var workInProgress = current.alternate;
55793
55794  if (workInProgress === null) {
55795    // We use a double buffering pooling technique because we know that we'll
55796    // only ever need at most two versions of a tree. We pool the "other" unused
55797    // node that we're free to reuse. This is lazily created to avoid allocating
55798    // extra objects for things that are never updated. It also allow us to
55799    // reclaim the extra memory if needed.
55800    workInProgress = createFiber(current.tag, pendingProps, current.key, current.mode);
55801    workInProgress.elementType = current.elementType;
55802    workInProgress.type = current.type;
55803    workInProgress.stateNode = current.stateNode;
55804
55805    {
55806      // DEV-only fields
55807      workInProgress._debugID = current._debugID;
55808      workInProgress._debugSource = current._debugSource;
55809      workInProgress._debugOwner = current._debugOwner;
55810      workInProgress._debugHookTypes = current._debugHookTypes;
55811    }
55812
55813    workInProgress.alternate = current;
55814    current.alternate = workInProgress;
55815  } else {
55816    workInProgress.pendingProps = pendingProps; // Needed because Blocks store data on type.
55817
55818    workInProgress.type = current.type; // We already have an alternate.
55819    // Reset the effect tag.
55820
55821    workInProgress.flags = NoFlags; // The effect list is no longer valid.
55822
55823    workInProgress.nextEffect = null;
55824    workInProgress.firstEffect = null;
55825    workInProgress.lastEffect = null;
55826
55827    {
55828      // We intentionally reset, rather than copy, actualDuration & actualStartTime.
55829      // This prevents time from endlessly accumulating in new commits.
55830      // This has the downside of resetting values for different priority renders,
55831      // But works for yielding (the common case) and should support resuming.
55832      workInProgress.actualDuration = 0;
55833      workInProgress.actualStartTime = -1;
55834    }
55835  }
55836
55837  workInProgress.childLanes = current.childLanes;
55838  workInProgress.lanes = current.lanes;
55839  workInProgress.child = current.child;
55840  workInProgress.memoizedProps = current.memoizedProps;
55841  workInProgress.memoizedState = current.memoizedState;
55842  workInProgress.updateQueue = current.updateQueue; // Clone the dependencies object. This is mutated during the render phase, so
55843  // it cannot be shared with the current fiber.
55844
55845  var currentDependencies = current.dependencies;
55846  workInProgress.dependencies = currentDependencies === null ? null : {
55847    lanes: currentDependencies.lanes,
55848    firstContext: currentDependencies.firstContext
55849  }; // These will be overridden during the parent's reconciliation
55850
55851  workInProgress.sibling = current.sibling;
55852  workInProgress.index = current.index;
55853  workInProgress.ref = current.ref;
55854
55855  {
55856    workInProgress.selfBaseDuration = current.selfBaseDuration;
55857    workInProgress.treeBaseDuration = current.treeBaseDuration;
55858  }
55859
55860  {
55861    workInProgress._debugNeedsRemount = current._debugNeedsRemount;
55862
55863    switch (workInProgress.tag) {
55864      case IndeterminateComponent:
55865      case FunctionComponent:
55866      case SimpleMemoComponent:
55867        workInProgress.type = resolveFunctionForHotReloading(current.type);
55868        break;
55869
55870      case ClassComponent:
55871        workInProgress.type = resolveClassForHotReloading(current.type);
55872        break;
55873
55874      case ForwardRef:
55875        workInProgress.type = resolveForwardRefForHotReloading(current.type);
55876        break;
55877    }
55878  }
55879
55880  return workInProgress;
55881} // Used to reuse a Fiber for a second pass.
55882
55883function resetWorkInProgress(workInProgress, renderLanes) {
55884  // This resets the Fiber to what createFiber or createWorkInProgress would
55885  // have set the values to before during the first pass. Ideally this wouldn't
55886  // be necessary but unfortunately many code paths reads from the workInProgress
55887  // when they should be reading from current and writing to workInProgress.
55888  // We assume pendingProps, index, key, ref, return are still untouched to
55889  // avoid doing another reconciliation.
55890  // Reset the effect tag but keep any Placement tags, since that's something
55891  // that child fiber is setting, not the reconciliation.
55892  workInProgress.flags &= Placement; // The effect list is no longer valid.
55893
55894  workInProgress.nextEffect = null;
55895  workInProgress.firstEffect = null;
55896  workInProgress.lastEffect = null;
55897  var current = workInProgress.alternate;
55898
55899  if (current === null) {
55900    // Reset to createFiber's initial values.
55901    workInProgress.childLanes = NoLanes;
55902    workInProgress.lanes = renderLanes;
55903    workInProgress.child = null;
55904    workInProgress.memoizedProps = null;
55905    workInProgress.memoizedState = null;
55906    workInProgress.updateQueue = null;
55907    workInProgress.dependencies = null;
55908    workInProgress.stateNode = null;
55909
55910    {
55911      // Note: We don't reset the actualTime counts. It's useful to accumulate
55912      // actual time across multiple render passes.
55913      workInProgress.selfBaseDuration = 0;
55914      workInProgress.treeBaseDuration = 0;
55915    }
55916  } else {
55917    // Reset to the cloned values that createWorkInProgress would've.
55918    workInProgress.childLanes = current.childLanes;
55919    workInProgress.lanes = current.lanes;
55920    workInProgress.child = current.child;
55921    workInProgress.memoizedProps = current.memoizedProps;
55922    workInProgress.memoizedState = current.memoizedState;
55923    workInProgress.updateQueue = current.updateQueue; // Needed because Blocks store data on type.
55924
55925    workInProgress.type = current.type; // Clone the dependencies object. This is mutated during the render phase, so
55926    // it cannot be shared with the current fiber.
55927
55928    var currentDependencies = current.dependencies;
55929    workInProgress.dependencies = currentDependencies === null ? null : {
55930      lanes: currentDependencies.lanes,
55931      firstContext: currentDependencies.firstContext
55932    };
55933
55934    {
55935      // Note: We don't reset the actualTime counts. It's useful to accumulate
55936      // actual time across multiple render passes.
55937      workInProgress.selfBaseDuration = current.selfBaseDuration;
55938      workInProgress.treeBaseDuration = current.treeBaseDuration;
55939    }
55940  }
55941
55942  return workInProgress;
55943}
55944function createHostRootFiber(tag) {
55945  var mode;
55946
55947  if (tag === ConcurrentRoot) {
55948    mode = ConcurrentMode | BlockingMode | StrictMode;
55949  } else if (tag === BlockingRoot) {
55950    mode = BlockingMode | StrictMode;
55951  } else {
55952    mode = NoMode;
55953  }
55954
55955  if ( isDevToolsPresent) {
55956    // Always collect profile timings when DevTools are present.
55957    // This enables DevTools to start capturing timing at any point–
55958    // Without some nodes in the tree having empty base times.
55959    mode |= ProfileMode;
55960  }
55961
55962  return createFiber(HostRoot, null, null, mode);
55963}
55964function createFiberFromTypeAndProps(type, // React$ElementType
55965key, pendingProps, owner, mode, lanes) {
55966  var fiberTag = IndeterminateComponent; // The resolved type is set if we know what the final type will be. I.e. it's not lazy.
55967
55968  var resolvedType = type;
55969
55970  if (typeof type === 'function') {
55971    if (shouldConstruct$1(type)) {
55972      fiberTag = ClassComponent;
55973
55974      {
55975        resolvedType = resolveClassForHotReloading(resolvedType);
55976      }
55977    } else {
55978      {
55979        resolvedType = resolveFunctionForHotReloading(resolvedType);
55980      }
55981    }
55982  } else if (typeof type === 'string') {
55983    fiberTag = HostComponent;
55984  } else {
55985    getTag: switch (type) {
55986      case REACT_FRAGMENT_TYPE:
55987        return createFiberFromFragment(pendingProps.children, mode, lanes, key);
55988
55989      case REACT_DEBUG_TRACING_MODE_TYPE:
55990        fiberTag = Mode;
55991        mode |= DebugTracingMode;
55992        break;
55993
55994      case REACT_STRICT_MODE_TYPE:
55995        fiberTag = Mode;
55996        mode |= StrictMode;
55997        break;
55998
55999      case REACT_PROFILER_TYPE:
56000        return createFiberFromProfiler(pendingProps, mode, lanes, key);
56001
56002      case REACT_SUSPENSE_TYPE:
56003        return createFiberFromSuspense(pendingProps, mode, lanes, key);
56004
56005      case REACT_SUSPENSE_LIST_TYPE:
56006        return createFiberFromSuspenseList(pendingProps, mode, lanes, key);
56007
56008      case REACT_OFFSCREEN_TYPE:
56009        return createFiberFromOffscreen(pendingProps, mode, lanes, key);
56010
56011      case REACT_LEGACY_HIDDEN_TYPE:
56012        return createFiberFromLegacyHidden(pendingProps, mode, lanes, key);
56013
56014      case REACT_SCOPE_TYPE:
56015
56016      // eslint-disable-next-line no-fallthrough
56017
56018      default:
56019        {
56020          if (typeof type === 'object' && type !== null) {
56021            switch (type.$$typeof) {
56022              case REACT_PROVIDER_TYPE:
56023                fiberTag = ContextProvider;
56024                break getTag;
56025
56026              case REACT_CONTEXT_TYPE:
56027                // This is a consumer
56028                fiberTag = ContextConsumer;
56029                break getTag;
56030
56031              case REACT_FORWARD_REF_TYPE:
56032                fiberTag = ForwardRef;
56033
56034                {
56035                  resolvedType = resolveForwardRefForHotReloading(resolvedType);
56036                }
56037
56038                break getTag;
56039
56040              case REACT_MEMO_TYPE:
56041                fiberTag = MemoComponent;
56042                break getTag;
56043
56044              case REACT_LAZY_TYPE:
56045                fiberTag = LazyComponent;
56046                resolvedType = null;
56047                break getTag;
56048
56049              case REACT_BLOCK_TYPE:
56050                fiberTag = Block;
56051                break getTag;
56052            }
56053          }
56054
56055          var info = '';
56056
56057          {
56058            if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
56059              info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and " + 'named imports.';
56060            }
56061
56062            var ownerName = owner ? getComponentName(owner.type) : null;
56063
56064            if (ownerName) {
56065              info += '\n\nCheck the render method of `' + ownerName + '`.';
56066            }
56067          }
56068
56069          {
56070            {
56071              throw Error( "Element type is invalid: expected a string (for built-in components) or a class/function (for composite components) but got: " + (type == null ? type : typeof type) + "." + info );
56072            }
56073          }
56074        }
56075    }
56076  }
56077
56078  var fiber = createFiber(fiberTag, pendingProps, key, mode);
56079  fiber.elementType = type;
56080  fiber.type = resolvedType;
56081  fiber.lanes = lanes;
56082
56083  {
56084    fiber._debugOwner = owner;
56085  }
56086
56087  return fiber;
56088}
56089function createFiberFromElement(element, mode, lanes) {
56090  var owner = null;
56091
56092  {
56093    owner = element._owner;
56094  }
56095
56096  var type = element.type;
56097  var key = element.key;
56098  var pendingProps = element.props;
56099  var fiber = createFiberFromTypeAndProps(type, key, pendingProps, owner, mode, lanes);
56100
56101  {
56102    fiber._debugSource = element._source;
56103    fiber._debugOwner = element._owner;
56104  }
56105
56106  return fiber;
56107}
56108function createFiberFromFragment(elements, mode, lanes, key) {
56109  var fiber = createFiber(Fragment, elements, key, mode);
56110  fiber.lanes = lanes;
56111  return fiber;
56112}
56113
56114function createFiberFromProfiler(pendingProps, mode, lanes, key) {
56115  {
56116    if (typeof pendingProps.id !== 'string') {
56117      error('Profiler must specify an "id" as a prop');
56118    }
56119  }
56120
56121  var fiber = createFiber(Profiler, pendingProps, key, mode | ProfileMode); // TODO: The Profiler fiber shouldn't have a type. It has a tag.
56122
56123  fiber.elementType = REACT_PROFILER_TYPE;
56124  fiber.type = REACT_PROFILER_TYPE;
56125  fiber.lanes = lanes;
56126
56127  {
56128    fiber.stateNode = {
56129      effectDuration: 0,
56130      passiveEffectDuration: 0
56131    };
56132  }
56133
56134  return fiber;
56135}
56136
56137function createFiberFromSuspense(pendingProps, mode, lanes, key) {
56138  var fiber = createFiber(SuspenseComponent, pendingProps, key, mode); // TODO: The SuspenseComponent fiber shouldn't have a type. It has a tag.
56139  // This needs to be fixed in getComponentName so that it relies on the tag
56140  // instead.
56141
56142  fiber.type = REACT_SUSPENSE_TYPE;
56143  fiber.elementType = REACT_SUSPENSE_TYPE;
56144  fiber.lanes = lanes;
56145  return fiber;
56146}
56147function createFiberFromSuspenseList(pendingProps, mode, lanes, key) {
56148  var fiber = createFiber(SuspenseListComponent, pendingProps, key, mode);
56149
56150  {
56151    // TODO: The SuspenseListComponent fiber shouldn't have a type. It has a tag.
56152    // This needs to be fixed in getComponentName so that it relies on the tag
56153    // instead.
56154    fiber.type = REACT_SUSPENSE_LIST_TYPE;
56155  }
56156
56157  fiber.elementType = REACT_SUSPENSE_LIST_TYPE;
56158  fiber.lanes = lanes;
56159  return fiber;
56160}
56161function createFiberFromOffscreen(pendingProps, mode, lanes, key) {
56162  var fiber = createFiber(OffscreenComponent, pendingProps, key, mode); // TODO: The OffscreenComponent fiber shouldn't have a type. It has a tag.
56163  // This needs to be fixed in getComponentName so that it relies on the tag
56164  // instead.
56165
56166  {
56167    fiber.type = REACT_OFFSCREEN_TYPE;
56168  }
56169
56170  fiber.elementType = REACT_OFFSCREEN_TYPE;
56171  fiber.lanes = lanes;
56172  return fiber;
56173}
56174function createFiberFromLegacyHidden(pendingProps, mode, lanes, key) {
56175  var fiber = createFiber(LegacyHiddenComponent, pendingProps, key, mode); // TODO: The LegacyHidden fiber shouldn't have a type. It has a tag.
56176  // This needs to be fixed in getComponentName so that it relies on the tag
56177  // instead.
56178
56179  {
56180    fiber.type = REACT_LEGACY_HIDDEN_TYPE;
56181  }
56182
56183  fiber.elementType = REACT_LEGACY_HIDDEN_TYPE;
56184  fiber.lanes = lanes;
56185  return fiber;
56186}
56187function createFiberFromText(content, mode, lanes) {
56188  var fiber = createFiber(HostText, content, null, mode);
56189  fiber.lanes = lanes;
56190  return fiber;
56191}
56192function createFiberFromHostInstanceForDeletion() {
56193  var fiber = createFiber(HostComponent, null, null, NoMode); // TODO: These should not need a type.
56194
56195  fiber.elementType = 'DELETED';
56196  fiber.type = 'DELETED';
56197  return fiber;
56198}
56199function createFiberFromPortal(portal, mode, lanes) {
56200  var pendingProps = portal.children !== null ? portal.children : [];
56201  var fiber = createFiber(HostPortal, pendingProps, portal.key, mode);
56202  fiber.lanes = lanes;
56203  fiber.stateNode = {
56204    containerInfo: portal.containerInfo,
56205    pendingChildren: null,
56206    // Used by persistent updates
56207    implementation: portal.implementation
56208  };
56209  return fiber;
56210} // Used for stashing WIP properties to replay failed work in DEV.
56211
56212function assignFiberPropertiesInDEV(target, source) {
56213  if (target === null) {
56214    // This Fiber's initial properties will always be overwritten.
56215    // We only use a Fiber to ensure the same hidden class so DEV isn't slow.
56216    target = createFiber(IndeterminateComponent, null, null, NoMode);
56217  } // This is intentionally written as a list of all properties.
56218  // We tried to use Object.assign() instead but this is called in
56219  // the hottest path, and Object.assign() was too slow:
56220  // https://github.com/facebook/react/issues/12502
56221  // This code is DEV-only so size is not a concern.
56222
56223
56224  target.tag = source.tag;
56225  target.key = source.key;
56226  target.elementType = source.elementType;
56227  target.type = source.type;
56228  target.stateNode = source.stateNode;
56229  target.return = source.return;
56230  target.child = source.child;
56231  target.sibling = source.sibling;
56232  target.index = source.index;
56233  target.ref = source.ref;
56234  target.pendingProps = source.pendingProps;
56235  target.memoizedProps = source.memoizedProps;
56236  target.updateQueue = source.updateQueue;
56237  target.memoizedState = source.memoizedState;
56238  target.dependencies = source.dependencies;
56239  target.mode = source.mode;
56240  target.flags = source.flags;
56241  target.nextEffect = source.nextEffect;
56242  target.firstEffect = source.firstEffect;
56243  target.lastEffect = source.lastEffect;
56244  target.lanes = source.lanes;
56245  target.childLanes = source.childLanes;
56246  target.alternate = source.alternate;
56247
56248  {
56249    target.actualDuration = source.actualDuration;
56250    target.actualStartTime = source.actualStartTime;
56251    target.selfBaseDuration = source.selfBaseDuration;
56252    target.treeBaseDuration = source.treeBaseDuration;
56253  }
56254
56255  target._debugID = source._debugID;
56256  target._debugSource = source._debugSource;
56257  target._debugOwner = source._debugOwner;
56258  target._debugNeedsRemount = source._debugNeedsRemount;
56259  target._debugHookTypes = source._debugHookTypes;
56260  return target;
56261}
56262
56263function FiberRootNode(containerInfo, tag, hydrate) {
56264  this.tag = tag;
56265  this.containerInfo = containerInfo;
56266  this.pendingChildren = null;
56267  this.current = null;
56268  this.pingCache = null;
56269  this.finishedWork = null;
56270  this.timeoutHandle = noTimeout;
56271  this.context = null;
56272  this.pendingContext = null;
56273  this.hydrate = hydrate;
56274  this.callbackNode = null;
56275  this.callbackPriority = NoLanePriority;
56276  this.eventTimes = createLaneMap(NoLanes);
56277  this.expirationTimes = createLaneMap(NoTimestamp);
56278  this.pendingLanes = NoLanes;
56279  this.suspendedLanes = NoLanes;
56280  this.pingedLanes = NoLanes;
56281  this.expiredLanes = NoLanes;
56282  this.mutableReadLanes = NoLanes;
56283  this.finishedLanes = NoLanes;
56284  this.entangledLanes = NoLanes;
56285  this.entanglements = createLaneMap(NoLanes);
56286
56287  {
56288    this.mutableSourceEagerHydrationData = null;
56289  }
56290
56291  {
56292    this.interactionThreadID = tracing.unstable_getThreadID();
56293    this.memoizedInteractions = new Set();
56294    this.pendingInteractionMap = new Map();
56295  }
56296
56297  {
56298    switch (tag) {
56299      case BlockingRoot:
56300        this._debugRootType = 'createBlockingRoot()';
56301        break;
56302
56303      case ConcurrentRoot:
56304        this._debugRootType = 'createRoot()';
56305        break;
56306
56307      case LegacyRoot:
56308        this._debugRootType = 'createLegacyRoot()';
56309        break;
56310    }
56311  }
56312}
56313
56314function createFiberRoot(containerInfo, tag, hydrate, hydrationCallbacks) {
56315  var root = new FiberRootNode(containerInfo, tag, hydrate);
56316  // stateNode is any.
56317
56318
56319  var uninitializedFiber = createHostRootFiber(tag);
56320  root.current = uninitializedFiber;
56321  uninitializedFiber.stateNode = root;
56322  initializeUpdateQueue(uninitializedFiber);
56323  return root;
56324}
56325
56326// This ensures that the version used for server rendering matches the one
56327// that is eventually read during hydration.
56328// If they don't match there's a potential tear and a full deopt render is required.
56329
56330function registerMutableSourceForHydration(root, mutableSource) {
56331  var getVersion = mutableSource._getVersion;
56332  var version = getVersion(mutableSource._source); // TODO Clear this data once all pending hydration work is finished.
56333  // Retaining it forever may interfere with GC.
56334
56335  if (root.mutableSourceEagerHydrationData == null) {
56336    root.mutableSourceEagerHydrationData = [mutableSource, version];
56337  } else {
56338    root.mutableSourceEagerHydrationData.push(mutableSource, version);
56339  }
56340}
56341
56342function createPortal(children, containerInfo, // TODO: figure out the API for cross-renderer implementation.
56343implementation) {
56344  var key = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;
56345  return {
56346    // This tag allow us to uniquely identify this as a React Portal
56347    $$typeof: REACT_PORTAL_TYPE,
56348    key: key == null ? null : '' + key,
56349    children: children,
56350    containerInfo: containerInfo,
56351    implementation: implementation
56352  };
56353}
56354
56355var didWarnAboutNestedUpdates;
56356var didWarnAboutFindNodeInStrictMode;
56357
56358{
56359  didWarnAboutNestedUpdates = false;
56360  didWarnAboutFindNodeInStrictMode = {};
56361}
56362
56363function getContextForSubtree(parentComponent) {
56364  if (!parentComponent) {
56365    return emptyContextObject;
56366  }
56367
56368  var fiber = get(parentComponent);
56369  var parentContext = findCurrentUnmaskedContext(fiber);
56370
56371  if (fiber.tag === ClassComponent) {
56372    var Component = fiber.type;
56373
56374    if (isContextProvider(Component)) {
56375      return processChildContext(fiber, Component, parentContext);
56376    }
56377  }
56378
56379  return parentContext;
56380}
56381
56382function findHostInstanceWithWarning(component, methodName) {
56383  {
56384    var fiber = get(component);
56385
56386    if (fiber === undefined) {
56387      if (typeof component.render === 'function') {
56388        {
56389          {
56390            throw Error( "Unable to find node on an unmounted component." );
56391          }
56392        }
56393      } else {
56394        {
56395          {
56396            throw Error( "Argument appears to not be a ReactComponent. Keys: " + Object.keys(component) );
56397          }
56398        }
56399      }
56400    }
56401
56402    var hostFiber = findCurrentHostFiber(fiber);
56403
56404    if (hostFiber === null) {
56405      return null;
56406    }
56407
56408    if (hostFiber.mode & StrictMode) {
56409      var componentName = getComponentName(fiber.type) || 'Component';
56410
56411      if (!didWarnAboutFindNodeInStrictMode[componentName]) {
56412        didWarnAboutFindNodeInStrictMode[componentName] = true;
56413        var previousFiber = current;
56414
56415        try {
56416          setCurrentFiber(hostFiber);
56417
56418          if (fiber.mode & StrictMode) {
56419            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which is inside StrictMode. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);
56420          } else {
56421            error('%s is deprecated in StrictMode. ' + '%s was passed an instance of %s which renders StrictMode children. ' + 'Instead, add a ref directly to the element you want to reference. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-find-node', methodName, methodName, componentName);
56422          }
56423        } finally {
56424          // Ideally this should reset to previous but this shouldn't be called in
56425          // render and there's another warning for that anyway.
56426          if (previousFiber) {
56427            setCurrentFiber(previousFiber);
56428          } else {
56429            resetCurrentFiber();
56430          }
56431        }
56432      }
56433    }
56434
56435    return hostFiber.stateNode;
56436  }
56437}
56438
56439function createContainer(containerInfo, tag, hydrate, hydrationCallbacks) {
56440  return createFiberRoot(containerInfo, tag, hydrate);
56441}
56442function updateContainer(element, container, parentComponent, callback) {
56443  {
56444    onScheduleRoot(container, element);
56445  }
56446
56447  var current$1 = container.current;
56448  var eventTime = requestEventTime();
56449
56450  {
56451    // $FlowExpectedError - jest isn't a global, and isn't recognized outside of tests
56452    if ('undefined' !== typeof jest) {
56453      warnIfUnmockedScheduler(current$1);
56454      warnIfNotScopedWithMatchingAct(current$1);
56455    }
56456  }
56457
56458  var lane = requestUpdateLane(current$1);
56459
56460  var context = getContextForSubtree(parentComponent);
56461
56462  if (container.context === null) {
56463    container.context = context;
56464  } else {
56465    container.pendingContext = context;
56466  }
56467
56468  {
56469    if (isRendering && current !== null && !didWarnAboutNestedUpdates) {
56470      didWarnAboutNestedUpdates = true;
56471
56472      error('Render methods should be a pure function of props and state; ' + 'triggering nested component updates from render is not allowed. ' + 'If necessary, trigger nested updates in componentDidUpdate.\n\n' + 'Check the render method of %s.', getComponentName(current.type) || 'Unknown');
56473    }
56474  }
56475
56476  var update = createUpdate(eventTime, lane); // Caution: React DevTools currently depends on this property
56477  // being called "element".
56478
56479  update.payload = {
56480    element: element
56481  };
56482  callback = callback === undefined ? null : callback;
56483
56484  if (callback !== null) {
56485    {
56486      if (typeof callback !== 'function') {
56487        error('render(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callback);
56488      }
56489    }
56490
56491    update.callback = callback;
56492  }
56493
56494  enqueueUpdate(current$1, update);
56495  scheduleUpdateOnFiber(current$1, lane, eventTime);
56496  return lane;
56497}
56498function getPublicRootInstance(container) {
56499  var containerFiber = container.current;
56500
56501  if (!containerFiber.child) {
56502    return null;
56503  }
56504
56505  switch (containerFiber.child.tag) {
56506    case HostComponent:
56507      return getPublicInstance(containerFiber.child.stateNode);
56508
56509    default:
56510      return containerFiber.child.stateNode;
56511  }
56512}
56513
56514function markRetryLaneImpl(fiber, retryLane) {
56515  var suspenseState = fiber.memoizedState;
56516
56517  if (suspenseState !== null && suspenseState.dehydrated !== null) {
56518    suspenseState.retryLane = higherPriorityLane(suspenseState.retryLane, retryLane);
56519  }
56520} // Increases the priority of thennables when they resolve within this boundary.
56521
56522
56523function markRetryLaneIfNotHydrated(fiber, retryLane) {
56524  markRetryLaneImpl(fiber, retryLane);
56525  var alternate = fiber.alternate;
56526
56527  if (alternate) {
56528    markRetryLaneImpl(alternate, retryLane);
56529  }
56530}
56531
56532function attemptUserBlockingHydration$1(fiber) {
56533  if (fiber.tag !== SuspenseComponent) {
56534    // We ignore HostRoots here because we can't increase
56535    // their priority and they should not suspend on I/O,
56536    // since you have to wrap anything that might suspend in
56537    // Suspense.
56538    return;
56539  }
56540
56541  var eventTime = requestEventTime();
56542  var lane = InputDiscreteHydrationLane;
56543  scheduleUpdateOnFiber(fiber, lane, eventTime);
56544  markRetryLaneIfNotHydrated(fiber, lane);
56545}
56546function attemptContinuousHydration$1(fiber) {
56547  if (fiber.tag !== SuspenseComponent) {
56548    // We ignore HostRoots here because we can't increase
56549    // their priority and they should not suspend on I/O,
56550    // since you have to wrap anything that might suspend in
56551    // Suspense.
56552    return;
56553  }
56554
56555  var eventTime = requestEventTime();
56556  var lane = SelectiveHydrationLane;
56557  scheduleUpdateOnFiber(fiber, lane, eventTime);
56558  markRetryLaneIfNotHydrated(fiber, lane);
56559}
56560function attemptHydrationAtCurrentPriority$1(fiber) {
56561  if (fiber.tag !== SuspenseComponent) {
56562    // We ignore HostRoots here because we can't increase
56563    // their priority other than synchronously flush it.
56564    return;
56565  }
56566
56567  var eventTime = requestEventTime();
56568  var lane = requestUpdateLane(fiber);
56569  scheduleUpdateOnFiber(fiber, lane, eventTime);
56570  markRetryLaneIfNotHydrated(fiber, lane);
56571}
56572function runWithPriority$2(priority, fn) {
56573
56574  try {
56575    setCurrentUpdateLanePriority(priority);
56576    return fn();
56577  } finally {
56578  }
56579}
56580function findHostInstanceWithNoPortals(fiber) {
56581  var hostFiber = findCurrentHostFiberWithNoPortals(fiber);
56582
56583  if (hostFiber === null) {
56584    return null;
56585  }
56586
56587  if (hostFiber.tag === FundamentalComponent) {
56588    return hostFiber.stateNode.instance;
56589  }
56590
56591  return hostFiber.stateNode;
56592}
56593
56594var shouldSuspendImpl = function (fiber) {
56595  return false;
56596};
56597
56598function shouldSuspend(fiber) {
56599  return shouldSuspendImpl(fiber);
56600}
56601var overrideHookState = null;
56602var overrideHookStateDeletePath = null;
56603var overrideHookStateRenamePath = null;
56604var overrideProps = null;
56605var overridePropsDeletePath = null;
56606var overridePropsRenamePath = null;
56607var scheduleUpdate = null;
56608var setSuspenseHandler = null;
56609
56610{
56611  var copyWithDeleteImpl = function (obj, path, index) {
56612    var key = path[index];
56613    var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj);
56614
56615    if (index + 1 === path.length) {
56616      if (Array.isArray(updated)) {
56617        updated.splice(key, 1);
56618      } else {
56619        delete updated[key];
56620      }
56621
56622      return updated;
56623    } // $FlowFixMe number or string is fine here
56624
56625
56626    updated[key] = copyWithDeleteImpl(obj[key], path, index + 1);
56627    return updated;
56628  };
56629
56630  var copyWithDelete = function (obj, path) {
56631    return copyWithDeleteImpl(obj, path, 0);
56632  };
56633
56634  var copyWithRenameImpl = function (obj, oldPath, newPath, index) {
56635    var oldKey = oldPath[index];
56636    var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj);
56637
56638    if (index + 1 === oldPath.length) {
56639      var newKey = newPath[index]; // $FlowFixMe number or string is fine here
56640
56641      updated[newKey] = updated[oldKey];
56642
56643      if (Array.isArray(updated)) {
56644        updated.splice(oldKey, 1);
56645      } else {
56646        delete updated[oldKey];
56647      }
56648    } else {
56649      // $FlowFixMe number or string is fine here
56650      updated[oldKey] = copyWithRenameImpl( // $FlowFixMe number or string is fine here
56651      obj[oldKey], oldPath, newPath, index + 1);
56652    }
56653
56654    return updated;
56655  };
56656
56657  var copyWithRename = function (obj, oldPath, newPath) {
56658    if (oldPath.length !== newPath.length) {
56659      warn('copyWithRename() expects paths of the same length');
56660
56661      return;
56662    } else {
56663      for (var i = 0; i < newPath.length - 1; i++) {
56664        if (oldPath[i] !== newPath[i]) {
56665          warn('copyWithRename() expects paths to be the same except for the deepest key');
56666
56667          return;
56668        }
56669      }
56670    }
56671
56672    return copyWithRenameImpl(obj, oldPath, newPath, 0);
56673  };
56674
56675  var copyWithSetImpl = function (obj, path, index, value) {
56676    if (index >= path.length) {
56677      return value;
56678    }
56679
56680    var key = path[index];
56681    var updated = Array.isArray(obj) ? obj.slice() : _assign({}, obj); // $FlowFixMe number or string is fine here
56682
56683    updated[key] = copyWithSetImpl(obj[key], path, index + 1, value);
56684    return updated;
56685  };
56686
56687  var copyWithSet = function (obj, path, value) {
56688    return copyWithSetImpl(obj, path, 0, value);
56689  };
56690
56691  var findHook = function (fiber, id) {
56692    // For now, the "id" of stateful hooks is just the stateful hook index.
56693    // This may change in the future with e.g. nested hooks.
56694    var currentHook = fiber.memoizedState;
56695
56696    while (currentHook !== null && id > 0) {
56697      currentHook = currentHook.next;
56698      id--;
56699    }
56700
56701    return currentHook;
56702  }; // Support DevTools editable values for useState and useReducer.
56703
56704
56705  overrideHookState = function (fiber, id, path, value) {
56706    var hook = findHook(fiber, id);
56707
56708    if (hook !== null) {
56709      var newState = copyWithSet(hook.memoizedState, path, value);
56710      hook.memoizedState = newState;
56711      hook.baseState = newState; // We aren't actually adding an update to the queue,
56712      // because there is no update we can add for useReducer hooks that won't trigger an error.
56713      // (There's no appropriate action type for DevTools overrides.)
56714      // As a result though, React will see the scheduled update as a noop and bailout.
56715      // Shallow cloning props works as a workaround for now to bypass the bailout check.
56716
56717      fiber.memoizedProps = _assign({}, fiber.memoizedProps);
56718      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56719    }
56720  };
56721
56722  overrideHookStateDeletePath = function (fiber, id, path) {
56723    var hook = findHook(fiber, id);
56724
56725    if (hook !== null) {
56726      var newState = copyWithDelete(hook.memoizedState, path);
56727      hook.memoizedState = newState;
56728      hook.baseState = newState; // We aren't actually adding an update to the queue,
56729      // because there is no update we can add for useReducer hooks that won't trigger an error.
56730      // (There's no appropriate action type for DevTools overrides.)
56731      // As a result though, React will see the scheduled update as a noop and bailout.
56732      // Shallow cloning props works as a workaround for now to bypass the bailout check.
56733
56734      fiber.memoizedProps = _assign({}, fiber.memoizedProps);
56735      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56736    }
56737  };
56738
56739  overrideHookStateRenamePath = function (fiber, id, oldPath, newPath) {
56740    var hook = findHook(fiber, id);
56741
56742    if (hook !== null) {
56743      var newState = copyWithRename(hook.memoizedState, oldPath, newPath);
56744      hook.memoizedState = newState;
56745      hook.baseState = newState; // We aren't actually adding an update to the queue,
56746      // because there is no update we can add for useReducer hooks that won't trigger an error.
56747      // (There's no appropriate action type for DevTools overrides.)
56748      // As a result though, React will see the scheduled update as a noop and bailout.
56749      // Shallow cloning props works as a workaround for now to bypass the bailout check.
56750
56751      fiber.memoizedProps = _assign({}, fiber.memoizedProps);
56752      scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56753    }
56754  }; // Support DevTools props for function components, forwardRef, memo, host components, etc.
56755
56756
56757  overrideProps = function (fiber, path, value) {
56758    fiber.pendingProps = copyWithSet(fiber.memoizedProps, path, value);
56759
56760    if (fiber.alternate) {
56761      fiber.alternate.pendingProps = fiber.pendingProps;
56762    }
56763
56764    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56765  };
56766
56767  overridePropsDeletePath = function (fiber, path) {
56768    fiber.pendingProps = copyWithDelete(fiber.memoizedProps, path);
56769
56770    if (fiber.alternate) {
56771      fiber.alternate.pendingProps = fiber.pendingProps;
56772    }
56773
56774    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56775  };
56776
56777  overridePropsRenamePath = function (fiber, oldPath, newPath) {
56778    fiber.pendingProps = copyWithRename(fiber.memoizedProps, oldPath, newPath);
56779
56780    if (fiber.alternate) {
56781      fiber.alternate.pendingProps = fiber.pendingProps;
56782    }
56783
56784    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56785  };
56786
56787  scheduleUpdate = function (fiber) {
56788    scheduleUpdateOnFiber(fiber, SyncLane, NoTimestamp);
56789  };
56790
56791  setSuspenseHandler = function (newShouldSuspendImpl) {
56792    shouldSuspendImpl = newShouldSuspendImpl;
56793  };
56794}
56795
56796function findHostInstanceByFiber(fiber) {
56797  var hostFiber = findCurrentHostFiber(fiber);
56798
56799  if (hostFiber === null) {
56800    return null;
56801  }
56802
56803  return hostFiber.stateNode;
56804}
56805
56806function emptyFindFiberByHostInstance(instance) {
56807  return null;
56808}
56809
56810function getCurrentFiberForDevTools() {
56811  return current;
56812}
56813
56814function injectIntoDevTools(devToolsConfig) {
56815  var findFiberByHostInstance = devToolsConfig.findFiberByHostInstance;
56816  var ReactCurrentDispatcher = ReactSharedInternals.ReactCurrentDispatcher;
56817  return injectInternals({
56818    bundleType: devToolsConfig.bundleType,
56819    version: devToolsConfig.version,
56820    rendererPackageName: devToolsConfig.rendererPackageName,
56821    rendererConfig: devToolsConfig.rendererConfig,
56822    overrideHookState: overrideHookState,
56823    overrideHookStateDeletePath: overrideHookStateDeletePath,
56824    overrideHookStateRenamePath: overrideHookStateRenamePath,
56825    overrideProps: overrideProps,
56826    overridePropsDeletePath: overridePropsDeletePath,
56827    overridePropsRenamePath: overridePropsRenamePath,
56828    setSuspenseHandler: setSuspenseHandler,
56829    scheduleUpdate: scheduleUpdate,
56830    currentDispatcherRef: ReactCurrentDispatcher,
56831    findHostInstanceByFiber: findHostInstanceByFiber,
56832    findFiberByHostInstance: findFiberByHostInstance || emptyFindFiberByHostInstance,
56833    // React Refresh
56834    findHostInstancesForRefresh:  findHostInstancesForRefresh ,
56835    scheduleRefresh:  scheduleRefresh ,
56836    scheduleRoot:  scheduleRoot ,
56837    setRefreshHandler:  setRefreshHandler ,
56838    // Enables DevTools to append owner stacks to error messages in DEV mode.
56839    getCurrentFiber:  getCurrentFiberForDevTools 
56840  });
56841}
56842
56843function ReactDOMRoot(container, options) {
56844  this._internalRoot = createRootImpl(container, ConcurrentRoot, options);
56845}
56846
56847function ReactDOMBlockingRoot(container, tag, options) {
56848  this._internalRoot = createRootImpl(container, tag, options);
56849}
56850
56851ReactDOMRoot.prototype.render = ReactDOMBlockingRoot.prototype.render = function (children) {
56852  var root = this._internalRoot;
56853
56854  {
56855    if (typeof arguments[1] === 'function') {
56856      error('render(...): does not support the second callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');
56857    }
56858
56859    var container = root.containerInfo;
56860
56861    if (container.nodeType !== COMMENT_NODE) {
56862      var hostInstance = findHostInstanceWithNoPortals(root.current);
56863
56864      if (hostInstance) {
56865        if (hostInstance.parentNode !== container) {
56866          error('render(...): It looks like the React-rendered content of the ' + 'root container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + "root.unmount() to empty a root's container.");
56867        }
56868      }
56869    }
56870  }
56871
56872  updateContainer(children, root, null, null);
56873};
56874
56875ReactDOMRoot.prototype.unmount = ReactDOMBlockingRoot.prototype.unmount = function () {
56876  {
56877    if (typeof arguments[0] === 'function') {
56878      error('unmount(...): does not support a callback argument. ' + 'To execute a side effect after rendering, declare it in a component body with useEffect().');
56879    }
56880  }
56881
56882  var root = this._internalRoot;
56883  var container = root.containerInfo;
56884  updateContainer(null, root, null, function () {
56885    unmarkContainerAsRoot(container);
56886  });
56887};
56888
56889function createRootImpl(container, tag, options) {
56890  // Tag is either LegacyRoot or Concurrent Root
56891  var hydrate = options != null && options.hydrate === true;
56892  var hydrationCallbacks = options != null && options.hydrationOptions || null;
56893  var mutableSources = options != null && options.hydrationOptions != null && options.hydrationOptions.mutableSources || null;
56894  var root = createContainer(container, tag, hydrate);
56895  markContainerAsRoot(root.current, container);
56896  var containerNodeType = container.nodeType;
56897
56898  {
56899    var rootContainerElement = container.nodeType === COMMENT_NODE ? container.parentNode : container;
56900    listenToAllSupportedEvents(rootContainerElement);
56901  }
56902
56903  if (mutableSources) {
56904    for (var i = 0; i < mutableSources.length; i++) {
56905      var mutableSource = mutableSources[i];
56906      registerMutableSourceForHydration(root, mutableSource);
56907    }
56908  }
56909
56910  return root;
56911}
56912function createLegacyRoot(container, options) {
56913  return new ReactDOMBlockingRoot(container, LegacyRoot, options);
56914}
56915function isValidContainer(node) {
56916  return !!(node && (node.nodeType === ELEMENT_NODE || node.nodeType === DOCUMENT_NODE || node.nodeType === DOCUMENT_FRAGMENT_NODE || node.nodeType === COMMENT_NODE && node.nodeValue === ' react-mount-point-unstable '));
56917}
56918
56919var ReactCurrentOwner$3 = ReactSharedInternals.ReactCurrentOwner;
56920var topLevelUpdateWarnings;
56921var warnedAboutHydrateAPI = false;
56922
56923{
56924  topLevelUpdateWarnings = function (container) {
56925    if (container._reactRootContainer && container.nodeType !== COMMENT_NODE) {
56926      var hostInstance = findHostInstanceWithNoPortals(container._reactRootContainer._internalRoot.current);
56927
56928      if (hostInstance) {
56929        if (hostInstance.parentNode !== container) {
56930          error('render(...): It looks like the React-rendered content of this ' + 'container was removed without using React. This is not ' + 'supported and will cause errors. Instead, call ' + 'ReactDOM.unmountComponentAtNode to empty a container.');
56931        }
56932      }
56933    }
56934
56935    var isRootRenderedBySomeReact = !!container._reactRootContainer;
56936    var rootEl = getReactRootElementInContainer(container);
56937    var hasNonRootReactChild = !!(rootEl && getInstanceFromNode(rootEl));
56938
56939    if (hasNonRootReactChild && !isRootRenderedBySomeReact) {
56940      error('render(...): Replacing React-rendered children with a new root ' + 'component. If you intended to update the children of this node, ' + 'you should instead have the existing children update their state ' + 'and render the new components instead of calling ReactDOM.render.');
56941    }
56942
56943    if (container.nodeType === ELEMENT_NODE && container.tagName && container.tagName.toUpperCase() === 'BODY') {
56944      error('render(): Rendering components directly into document.body is ' + 'discouraged, since its children are often manipulated by third-party ' + 'scripts and browser extensions. This may lead to subtle ' + 'reconciliation issues. Try rendering into a container element created ' + 'for your app.');
56945    }
56946  };
56947}
56948
56949function getReactRootElementInContainer(container) {
56950  if (!container) {
56951    return null;
56952  }
56953
56954  if (container.nodeType === DOCUMENT_NODE) {
56955    return container.documentElement;
56956  } else {
56957    return container.firstChild;
56958  }
56959}
56960
56961function shouldHydrateDueToLegacyHeuristic(container) {
56962  var rootElement = getReactRootElementInContainer(container);
56963  return !!(rootElement && rootElement.nodeType === ELEMENT_NODE && rootElement.hasAttribute(ROOT_ATTRIBUTE_NAME));
56964}
56965
56966function legacyCreateRootFromDOMContainer(container, forceHydrate) {
56967  var shouldHydrate = forceHydrate || shouldHydrateDueToLegacyHeuristic(container); // First clear any existing content.
56968
56969  if (!shouldHydrate) {
56970    var warned = false;
56971    var rootSibling;
56972
56973    while (rootSibling = container.lastChild) {
56974      {
56975        if (!warned && rootSibling.nodeType === ELEMENT_NODE && rootSibling.hasAttribute(ROOT_ATTRIBUTE_NAME)) {
56976          warned = true;
56977
56978          error('render(): Target node has markup rendered by React, but there ' + 'are unrelated nodes as well. This is most commonly caused by ' + 'white-space inserted around server-rendered markup.');
56979        }
56980      }
56981
56982      container.removeChild(rootSibling);
56983    }
56984  }
56985
56986  {
56987    if (shouldHydrate && !forceHydrate && !warnedAboutHydrateAPI) {
56988      warnedAboutHydrateAPI = true;
56989
56990      warn('render(): Calling ReactDOM.render() to hydrate server-rendered markup ' + 'will stop working in React v18. Replace the ReactDOM.render() call ' + 'with ReactDOM.hydrate() if you want React to attach to the server HTML.');
56991    }
56992  }
56993
56994  return createLegacyRoot(container, shouldHydrate ? {
56995    hydrate: true
56996  } : undefined);
56997}
56998
56999function warnOnInvalidCallback$1(callback, callerName) {
57000  {
57001    if (callback !== null && typeof callback !== 'function') {
57002      error('%s(...): Expected the last optional `callback` argument to be a ' + 'function. Instead received: %s.', callerName, callback);
57003    }
57004  }
57005}
57006
57007function legacyRenderSubtreeIntoContainer(parentComponent, children, container, forceHydrate, callback) {
57008  {
57009    topLevelUpdateWarnings(container);
57010    warnOnInvalidCallback$1(callback === undefined ? null : callback, 'render');
57011  } // TODO: Without `any` type, Flow says "Property cannot be accessed on any
57012  // member of intersection type." Whyyyyyy.
57013
57014
57015  var root = container._reactRootContainer;
57016  var fiberRoot;
57017
57018  if (!root) {
57019    // Initial mount
57020    root = container._reactRootContainer = legacyCreateRootFromDOMContainer(container, forceHydrate);
57021    fiberRoot = root._internalRoot;
57022
57023    if (typeof callback === 'function') {
57024      var originalCallback = callback;
57025
57026      callback = function () {
57027        var instance = getPublicRootInstance(fiberRoot);
57028        originalCallback.call(instance);
57029      };
57030    } // Initial mount should not be batched.
57031
57032
57033    unbatchedUpdates(function () {
57034      updateContainer(children, fiberRoot, parentComponent, callback);
57035    });
57036  } else {
57037    fiberRoot = root._internalRoot;
57038
57039    if (typeof callback === 'function') {
57040      var _originalCallback = callback;
57041
57042      callback = function () {
57043        var instance = getPublicRootInstance(fiberRoot);
57044
57045        _originalCallback.call(instance);
57046      };
57047    } // Update
57048
57049
57050    updateContainer(children, fiberRoot, parentComponent, callback);
57051  }
57052
57053  return getPublicRootInstance(fiberRoot);
57054}
57055
57056function findDOMNode(componentOrElement) {
57057  {
57058    var owner = ReactCurrentOwner$3.current;
57059
57060    if (owner !== null && owner.stateNode !== null) {
57061      var warnedAboutRefsInRender = owner.stateNode._warnedAboutRefsInRender;
57062
57063      if (!warnedAboutRefsInRender) {
57064        error('%s is accessing findDOMNode inside its render(). ' + 'render() should be a pure function of props and state. It should ' + 'never access something that requires stale data from the previous ' + 'render, such as refs. Move this logic to componentDidMount and ' + 'componentDidUpdate instead.', getComponentName(owner.type) || 'A component');
57065      }
57066
57067      owner.stateNode._warnedAboutRefsInRender = true;
57068    }
57069  }
57070
57071  if (componentOrElement == null) {
57072    return null;
57073  }
57074
57075  if (componentOrElement.nodeType === ELEMENT_NODE) {
57076    return componentOrElement;
57077  }
57078
57079  {
57080    return findHostInstanceWithWarning(componentOrElement, 'findDOMNode');
57081  }
57082}
57083function hydrate(element, container, callback) {
57084  if (!isValidContainer(container)) {
57085    {
57086      throw Error( "Target container is not a DOM element." );
57087    }
57088  }
57089
57090  {
57091    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
57092
57093    if (isModernRoot) {
57094      error('You are calling ReactDOM.hydrate() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call createRoot(container, {hydrate: true}).render(element)?');
57095    }
57096  } // TODO: throw or warn if we couldn't hydrate?
57097
57098
57099  return legacyRenderSubtreeIntoContainer(null, element, container, true, callback);
57100}
57101function render(element, container, callback) {
57102  if (!isValidContainer(container)) {
57103    {
57104      throw Error( "Target container is not a DOM element." );
57105    }
57106  }
57107
57108  {
57109    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
57110
57111    if (isModernRoot) {
57112      error('You are calling ReactDOM.render() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. ' + 'Did you mean to call root.render(element)?');
57113    }
57114  }
57115
57116  return legacyRenderSubtreeIntoContainer(null, element, container, false, callback);
57117}
57118function unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
57119  if (!isValidContainer(containerNode)) {
57120    {
57121      throw Error( "Target container is not a DOM element." );
57122    }
57123  }
57124
57125  if (!(parentComponent != null && has(parentComponent))) {
57126    {
57127      throw Error( "parentComponent must be a valid React Component" );
57128    }
57129  }
57130
57131  return legacyRenderSubtreeIntoContainer(parentComponent, element, containerNode, false, callback);
57132}
57133function unmountComponentAtNode(container) {
57134  if (!isValidContainer(container)) {
57135    {
57136      throw Error( "unmountComponentAtNode(...): Target container is not a DOM element." );
57137    }
57138  }
57139
57140  {
57141    var isModernRoot = isContainerMarkedAsRoot(container) && container._reactRootContainer === undefined;
57142
57143    if (isModernRoot) {
57144      error('You are calling ReactDOM.unmountComponentAtNode() on a container that was previously ' + 'passed to ReactDOM.createRoot(). This is not supported. Did you mean to call root.unmount()?');
57145    }
57146  }
57147
57148  if (container._reactRootContainer) {
57149    {
57150      var rootEl = getReactRootElementInContainer(container);
57151      var renderedByDifferentReact = rootEl && !getInstanceFromNode(rootEl);
57152
57153      if (renderedByDifferentReact) {
57154        error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by another copy of React.');
57155      }
57156    } // Unmount should not be batched.
57157
57158
57159    unbatchedUpdates(function () {
57160      legacyRenderSubtreeIntoContainer(null, null, container, false, function () {
57161        // $FlowFixMe This should probably use `delete container._reactRootContainer`
57162        container._reactRootContainer = null;
57163        unmarkContainerAsRoot(container);
57164      });
57165    }); // If you call unmountComponentAtNode twice in quick succession, you'll
57166    // get `true` twice. That's probably fine?
57167
57168    return true;
57169  } else {
57170    {
57171      var _rootEl = getReactRootElementInContainer(container);
57172
57173      var hasNonRootReactChild = !!(_rootEl && getInstanceFromNode(_rootEl)); // Check if the container itself is a React root node.
57174
57175      var isContainerReactRoot = container.nodeType === ELEMENT_NODE && isValidContainer(container.parentNode) && !!container.parentNode._reactRootContainer;
57176
57177      if (hasNonRootReactChild) {
57178        error("unmountComponentAtNode(): The node you're attempting to unmount " + 'was rendered by React and is not a top-level container. %s', isContainerReactRoot ? 'You may have accidentally passed in a React root node instead ' + 'of its container.' : 'Instead, have the parent component update its state and ' + 'rerender in order to remove this component.');
57179      }
57180    }
57181
57182    return false;
57183  }
57184}
57185
57186setAttemptUserBlockingHydration(attemptUserBlockingHydration$1);
57187setAttemptContinuousHydration(attemptContinuousHydration$1);
57188setAttemptHydrationAtCurrentPriority(attemptHydrationAtCurrentPriority$1);
57189setAttemptHydrationAtPriority(runWithPriority$2);
57190var didWarnAboutUnstableCreatePortal = false;
57191
57192{
57193  if (typeof Map !== 'function' || // $FlowIssue Flow incorrectly thinks Map has no prototype
57194  Map.prototype == null || typeof Map.prototype.forEach !== 'function' || typeof Set !== 'function' || // $FlowIssue Flow incorrectly thinks Set has no prototype
57195  Set.prototype == null || typeof Set.prototype.clear !== 'function' || typeof Set.prototype.forEach !== 'function') {
57196    error('React depends on Map and Set built-in types. Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');
57197  }
57198}
57199
57200setRestoreImplementation(restoreControlledState$3);
57201setBatchingImplementation(batchedUpdates$1, discreteUpdates$1, flushDiscreteUpdates, batchedEventUpdates$1);
57202
57203function createPortal$1(children, container) {
57204  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
57205
57206  if (!isValidContainer(container)) {
57207    {
57208      throw Error( "Target container is not a DOM element." );
57209    }
57210  } // TODO: pass ReactDOM portal implementation as third argument
57211  // $FlowFixMe The Flow type is opaque but there's no way to actually create it.
57212
57213
57214  return createPortal(children, container, null, key);
57215}
57216
57217function renderSubtreeIntoContainer(parentComponent, element, containerNode, callback) {
57218
57219  return unstable_renderSubtreeIntoContainer(parentComponent, element, containerNode, callback);
57220}
57221
57222function unstable_createPortal(children, container) {
57223  var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
57224
57225  {
57226    if (!didWarnAboutUnstableCreatePortal) {
57227      didWarnAboutUnstableCreatePortal = true;
57228
57229      warn('The ReactDOM.unstable_createPortal() alias has been deprecated, ' + 'and will be removed in React 18+. Update your code to use ' + 'ReactDOM.createPortal() instead. It has the exact same API, ' + 'but without the "unstable_" prefix.');
57230    }
57231  }
57232
57233  return createPortal$1(children, container, key);
57234}
57235
57236var Internals = {
57237  // Keep in sync with ReactTestUtils.js, and ReactTestUtilsAct.js.
57238  // This is an array for better minification.
57239  Events: [getInstanceFromNode, getNodeFromInstance, getFiberCurrentPropsFromNode, enqueueStateRestore, restoreStateIfNeeded, flushPassiveEffects, // TODO: This is related to `act`, not events. Move to separate key?
57240  IsThisRendererActing]
57241};
57242var foundDevTools = injectIntoDevTools({
57243  findFiberByHostInstance: getClosestInstanceFromNode,
57244  bundleType:  1 ,
57245  version: ReactVersion,
57246  rendererPackageName: 'react-dom'
57247});
57248
57249{
57250  if (!foundDevTools && canUseDOM && window.top === window.self) {
57251    // If we're in Chrome or Firefox, provide a download link if not installed.
57252    if (navigator.userAgent.indexOf('Chrome') > -1 && navigator.userAgent.indexOf('Edge') === -1 || navigator.userAgent.indexOf('Firefox') > -1) {
57253      var protocol = window.location.protocol; // Don't warn in exotic cases like chrome-extension://.
57254
57255      if (/^(https?|file):$/.test(protocol)) {
57256        // eslint-disable-next-line react-internal/no-production-logging
57257        console.info('%cDownload the React DevTools ' + 'for a better development experience: ' + 'https://reactjs.org/link/react-devtools' + (protocol === 'file:' ? '\nYou might need to use a local HTTP server (instead of file://): ' + 'https://reactjs.org/link/react-devtools-faq' : ''), 'font-weight:bold');
57258      }
57259    }
57260  }
57261}
57262
57263exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = Internals;
57264exports.createPortal = createPortal$1;
57265exports.findDOMNode = findDOMNode;
57266exports.flushSync = flushSync;
57267exports.hydrate = hydrate;
57268exports.render = render;
57269exports.unmountComponentAtNode = unmountComponentAtNode;
57270exports.unstable_batchedUpdates = batchedUpdates$1;
57271exports.unstable_createPortal = unstable_createPortal;
57272exports.unstable_renderSubtreeIntoContainer = renderSubtreeIntoContainer;
57273exports.version = ReactVersion;
57274  })();
57275}
57276
57277
57278/***/ }),
57279
vendor: 1,428 bytes, lines 57280-57323
57280/***/ "./node_modules/react-dom/index.js":
57281/*!*****************************************!*\
57282  !*** ./node_modules/react-dom/index.js ***!
57283  \*****************************************/
57284/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
57285
57286"use strict";
57287
57288
57289function checkDCE() {
57290  /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
57291  if (
57292    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||
57293    typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'
57294  ) {
57295    return;
57296  }
57297  if (true) {
57298    // This branch is unreachable because this function is only called
57299    // in production, but the condition is true only in development.
57300    // Therefore if the branch is still here, dead code elimination wasn't
57301    // properly applied.
57302    // Don't change the message. React DevTools relies on it. Also make sure
57303    // this message doesn't occur elsewhere in this function, or it will cause
57304    // a false positive.
57305    throw new Error('^_^');
57306  }
57307  try {
57308    // Verify that the code above has been dead code eliminated (DCE'd).
57309    __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);
57310  } catch (err) {
57311    // DevTools shouldn't crash React, no matter what.
57312    // We should still report in case we break this code.
57313    console.error(err);
57314  }
57315}
57316
57317if (false) {} else {
57318  module.exports = __webpack_require__(/*! ./cjs/react-dom.development.js */ "./node_modules/react-dom/cjs/react-dom.development.js");
57319}
57320
57321
57322/***/ }),
57323
vendor: 5,077 bytes, lines 57324-57472
57324/***/ "./node_modules/react-fast-compare/index.js":
57325/*!**************************************************!*\
57326  !*** ./node_modules/react-fast-compare/index.js ***!
57327  \**************************************************/
57328/***/ ((module) => {
57329
57330/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */
57331
57332var hasElementType = typeof Element !== 'undefined';
57333var hasMap = typeof Map === 'function';
57334var hasSet = typeof Set === 'function';
57335var hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;
57336
57337// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js
57338
57339function equal(a, b) {
57340  // START: fast-deep-equal es6/index.js 3.1.3
57341  if (a === b) return true;
57342
57343  if (a && b && typeof a == 'object' && typeof b == 'object') {
57344    if (a.constructor !== b.constructor) return false;
57345
57346    var length, i, keys;
57347    if (Array.isArray(a)) {
57348      length = a.length;
57349      if (length != b.length) return false;
57350      for (i = length; i-- !== 0;)
57351        if (!equal(a[i], b[i])) return false;
57352      return true;
57353    }
57354
57355    // START: Modifications:
57356    // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code
57357    //    to co-exist with es5.
57358    // 2. Replace `for of` with es5 compliant iteration using `for`.
57359    //    Basically, take:
57360    //
57361    //    ```js
57362    //    for (i of a.entries())
57363    //      if (!b.has(i[0])) return false;
57364    //    ```
57365    //
57366    //    ... and convert to:
57367    //
57368    //    ```js
57369    //    it = a.entries();
57370    //    while (!(i = it.next()).done)
57371    //      if (!b.has(i.value[0])) return false;
57372    //    ```
57373    //
57374    //    **Note**: `i` access switches to `i.value`.
57375    var it;
57376    if (hasMap && (a instanceof Map) && (b instanceof Map)) {
57377      if (a.size !== b.size) return false;
57378      it = a.entries();
57379      while (!(i = it.next()).done)
57380        if (!b.has(i.value[0])) return false;
57381      it = a.entries();
57382      while (!(i = it.next()).done)
57383        if (!equal(i.value[1], b.get(i.value[0]))) return false;
57384      return true;
57385    }
57386
57387    if (hasSet && (a instanceof Set) && (b instanceof Set)) {
57388      if (a.size !== b.size) return false;
57389      it = a.entries();
57390      while (!(i = it.next()).done)
57391        if (!b.has(i.value[0])) return false;
57392      return true;
57393    }
57394    // END: Modifications
57395
57396    if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {
57397      length = a.length;
57398      if (length != b.length) return false;
57399      for (i = length; i-- !== 0;)
57400        if (a[i] !== b[i]) return false;
57401      return true;
57402    }
57403
57404    if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;
57405    // START: Modifications:
57406    // Apply guards for `Object.create(null)` handling. See:
57407    // - https://github.com/FormidableLabs/react-fast-compare/issues/64
57408    // - https://github.com/epoberezkin/fast-deep-equal/issues/49
57409    if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();
57410    if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();
57411    // END: Modifications
57412
57413    keys = Object.keys(a);
57414    length = keys.length;
57415    if (length !== Object.keys(b).length) return false;
57416
57417    for (i = length; i-- !== 0;)
57418      if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;
57419    // END: fast-deep-equal
57420
57421    // START: react-fast-compare
57422    // custom handling for DOM elements
57423    if (hasElementType && a instanceof Element) return false;
57424
57425    // custom handling for React/Preact
57426    for (i = length; i-- !== 0;) {
57427      if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {
57428        // React-specific: avoid traversing React elements' _owner
57429        // Preact-specific: avoid traversing Preact elements' __v and __o
57430        //    __v = $_original / $_vnode
57431        //    __o = $_owner
57432        // These properties contain circular references and are not needed when
57433        // comparing the actual elements (and not their owners)
57434        // .$$typeof and ._store on just reasonable markers of elements
57435
57436        continue;
57437      }
57438
57439      // all other properties should be traversed as usual
57440      if (!equal(a[keys[i]], b[keys[i]])) return false;
57441    }
57442    // END: react-fast-compare
57443
57444    // START: fast-deep-equal
57445    return true;
57446  }
57447
57448  return a !== a && b !== b;
57449}
57450// end fast-deep-equal
57451
57452module.exports = function isEqual(a, b) {
57453  try {
57454    return equal(a, b);
57455  } catch (error) {
57456    if (((error.message || '').match(/stack|recursion/i))) {
57457      // warn on circular references, don't crash
57458      // browsers give this different errors name and messages:
57459      // chrome/safari: "RangeError", "Maximum call stack size exceeded"
57460      // firefox: "InternalError", too much recursion"
57461      // edge: "Error", "Out of stack space"
57462      console.warn('react-fast-compare cannot handle circular refs');
57463      return false;
57464    }
57465    // some other error. we should definitely know about these
57466    throw error;
57467  }
57468};
57469
57470
57471/***/ }),
57472
vendor: 38,415 bytes, lines 57473-58412
57473/***/ "./node_modules/react-helmet/es/Helmet.js":
57474/*!************************************************!*\
57475  !*** ./node_modules/react-helmet/es/Helmet.js ***!
57476  \************************************************/
57477/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
57478
57479"use strict";
57480__webpack_require__.r(__webpack_exports__);
57481/* harmony export */ __webpack_require__.d(__webpack_exports__, {
57482/* harmony export */   Helmet: () => (/* binding */ HelmetExport),
57483/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
57484/* harmony export */ });
57485/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! prop-types */ "./node_modules/prop-types/index.js");
57486/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_4__);
57487/* harmony import */ var react_side_effect__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react-side-effect */ "./node_modules/react-side-effect/lib/index.js");
57488/* harmony import */ var react_side_effect__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_side_effect__WEBPACK_IMPORTED_MODULE_0__);
57489/* harmony import */ var react_fast_compare__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-fast-compare */ "./node_modules/react-fast-compare/index.js");
57490/* harmony import */ var react_fast_compare__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_fast_compare__WEBPACK_IMPORTED_MODULE_1__);
57491/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
57492/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
57493/* harmony import */ var object_assign__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(object_assign__WEBPACK_IMPORTED_MODULE_3__);
57494
57495
57496
57497
57498
57499
57500var ATTRIBUTE_NAMES = {
57501    BODY: "bodyAttributes",
57502    HTML: "htmlAttributes",
57503    TITLE: "titleAttributes"
57504};
57505
57506var TAG_NAMES = {
57507    BASE: "base",
57508    BODY: "body",
57509    HEAD: "head",
57510    HTML: "html",
57511    LINK: "link",
57512    META: "meta",
57513    NOSCRIPT: "noscript",
57514    SCRIPT: "script",
57515    STYLE: "style",
57516    TITLE: "title"
57517};
57518
57519var VALID_TAG_NAMES = Object.keys(TAG_NAMES).map(function (name) {
57520    return TAG_NAMES[name];
57521});
57522
57523var TAG_PROPERTIES = {
57524    CHARSET: "charset",
57525    CSS_TEXT: "cssText",
57526    HREF: "href",
57527    HTTPEQUIV: "http-equiv",
57528    INNER_HTML: "innerHTML",
57529    ITEM_PROP: "itemprop",
57530    NAME: "name",
57531    PROPERTY: "property",
57532    REL: "rel",
57533    SRC: "src",
57534    TARGET: "target"
57535};
57536
57537var REACT_TAG_MAP = {
57538    accesskey: "accessKey",
57539    charset: "charSet",
57540    class: "className",
57541    contenteditable: "contentEditable",
57542    contextmenu: "contextMenu",
57543    "http-equiv": "httpEquiv",
57544    itemprop: "itemProp",
57545    tabindex: "tabIndex"
57546};
57547
57548var HELMET_PROPS = {
57549    DEFAULT_TITLE: "defaultTitle",
57550    DEFER: "defer",
57551    ENCODE_SPECIAL_CHARACTERS: "encodeSpecialCharacters",
57552    ON_CHANGE_CLIENT_STATE: "onChangeClientState",
57553    TITLE_TEMPLATE: "titleTemplate"
57554};
57555
57556var HTML_TAG_MAP = Object.keys(REACT_TAG_MAP).reduce(function (obj, key) {
57557    obj[REACT_TAG_MAP[key]] = key;
57558    return obj;
57559}, {});
57560
57561var SELF_CLOSING_TAGS = [TAG_NAMES.NOSCRIPT, TAG_NAMES.SCRIPT, TAG_NAMES.STYLE];
57562
57563var HELMET_ATTRIBUTE = "data-react-helmet";
57564
57565var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) {
57566  return typeof obj;
57567} : function (obj) {
57568  return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj;
57569};
57570
57571var classCallCheck = function (instance, Constructor) {
57572  if (!(instance instanceof Constructor)) {
57573    throw new TypeError("Cannot call a class as a function");
57574  }
57575};
57576
57577var createClass = function () {
57578  function defineProperties(target, props) {
57579    for (var i = 0; i < props.length; i++) {
57580      var descriptor = props[i];
57581      descriptor.enumerable = descriptor.enumerable || false;
57582      descriptor.configurable = true;
57583      if ("value" in descriptor) descriptor.writable = true;
57584      Object.defineProperty(target, descriptor.key, descriptor);
57585    }
57586  }
57587
57588  return function (Constructor, protoProps, staticProps) {
57589    if (protoProps) defineProperties(Constructor.prototype, protoProps);
57590    if (staticProps) defineProperties(Constructor, staticProps);
57591    return Constructor;
57592  };
57593}();
57594
57595var _extends = Object.assign || function (target) {
57596  for (var i = 1; i < arguments.length; i++) {
57597    var source = arguments[i];
57598
57599    for (var key in source) {
57600      if (Object.prototype.hasOwnProperty.call(source, key)) {
57601        target[key] = source[key];
57602      }
57603    }
57604  }
57605
57606  return target;
57607};
57608
57609var inherits = function (subClass, superClass) {
57610  if (typeof superClass !== "function" && superClass !== null) {
57611    throw new TypeError("Super expression must either be null or a function, not " + typeof superClass);
57612  }
57613
57614  subClass.prototype = Object.create(superClass && superClass.prototype, {
57615    constructor: {
57616      value: subClass,
57617      enumerable: false,
57618      writable: true,
57619      configurable: true
57620    }
57621  });
57622  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;
57623};
57624
57625var objectWithoutProperties = function (obj, keys) {
57626  var target = {};
57627
57628  for (var i in obj) {
57629    if (keys.indexOf(i) >= 0) continue;
57630    if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;
57631    target[i] = obj[i];
57632  }
57633
57634  return target;
57635};
57636
57637var possibleConstructorReturn = function (self, call) {
57638  if (!self) {
57639    throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
57640  }
57641
57642  return call && (typeof call === "object" || typeof call === "function") ? call : self;
57643};
57644
57645var encodeSpecialCharacters = function encodeSpecialCharacters(str) {
57646    var encode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
57647
57648    if (encode === false) {
57649        return String(str);
57650    }
57651
57652    return String(str).replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;").replace(/"/g, "&quot;").replace(/'/g, "&#x27;");
57653};
57654
57655var getTitleFromPropsList = function getTitleFromPropsList(propsList) {
57656    var innermostTitle = getInnermostProperty(propsList, TAG_NAMES.TITLE);
57657    var innermostTemplate = getInnermostProperty(propsList, HELMET_PROPS.TITLE_TEMPLATE);
57658
57659    if (innermostTemplate && innermostTitle) {
57660        // use function arg to avoid need to escape $ characters
57661        return innermostTemplate.replace(/%s/g, function () {
57662            return Array.isArray(innermostTitle) ? innermostTitle.join("") : innermostTitle;
57663        });
57664    }
57665
57666    var innermostDefaultTitle = getInnermostProperty(propsList, HELMET_PROPS.DEFAULT_TITLE);
57667
57668    return innermostTitle || innermostDefaultTitle || undefined;
57669};
57670
57671var getOnChangeClientState = function getOnChangeClientState(propsList) {
57672    return getInnermostProperty(propsList, HELMET_PROPS.ON_CHANGE_CLIENT_STATE) || function () {};
57673};
57674
57675var getAttributesFromPropsList = function getAttributesFromPropsList(tagType, propsList) {
57676    return propsList.filter(function (props) {
57677        return typeof props[tagType] !== "undefined";
57678    }).map(function (props) {
57679        return props[tagType];
57680    }).reduce(function (tagAttrs, current) {
57681        return _extends({}, tagAttrs, current);
57682    }, {});
57683};
57684
57685var getBaseTagFromPropsList = function getBaseTagFromPropsList(primaryAttributes, propsList) {
57686    return propsList.filter(function (props) {
57687        return typeof props[TAG_NAMES.BASE] !== "undefined";
57688    }).map(function (props) {
57689        return props[TAG_NAMES.BASE];
57690    }).reverse().reduce(function (innermostBaseTag, tag) {
57691        if (!innermostBaseTag.length) {
57692            var keys = Object.keys(tag);
57693
57694            for (var i = 0; i < keys.length; i++) {
57695                var attributeKey = keys[i];
57696                var lowerCaseAttributeKey = attributeKey.toLowerCase();
57697
57698                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && tag[lowerCaseAttributeKey]) {
57699                    return innermostBaseTag.concat(tag);
57700                }
57701            }
57702        }
57703
57704        return innermostBaseTag;
57705    }, []);
57706};
57707
57708var getTagsFromPropsList = function getTagsFromPropsList(tagName, primaryAttributes, propsList) {
57709    // Calculate list of tags, giving priority innermost component (end of the propslist)
57710    var approvedSeenTags = {};
57711
57712    return propsList.filter(function (props) {
57713        if (Array.isArray(props[tagName])) {
57714            return true;
57715        }
57716        if (typeof props[tagName] !== "undefined") {
57717            warn("Helmet: " + tagName + " should be of type \"Array\". Instead found type \"" + _typeof(props[tagName]) + "\"");
57718        }
57719        return false;
57720    }).map(function (props) {
57721        return props[tagName];
57722    }).reverse().reduce(function (approvedTags, instanceTags) {
57723        var instanceSeenTags = {};
57724
57725        instanceTags.filter(function (tag) {
57726            var primaryAttributeKey = void 0;
57727            var keys = Object.keys(tag);
57728            for (var i = 0; i < keys.length; i++) {
57729                var attributeKey = keys[i];
57730                var lowerCaseAttributeKey = attributeKey.toLowerCase();
57731
57732                // Special rule with link tags, since rel and href are both primary tags, rel takes priority
57733                if (primaryAttributes.indexOf(lowerCaseAttributeKey) !== -1 && !(primaryAttributeKey === TAG_PROPERTIES.REL && tag[primaryAttributeKey].toLowerCase() === "canonical") && !(lowerCaseAttributeKey === TAG_PROPERTIES.REL && tag[lowerCaseAttributeKey].toLowerCase() === "stylesheet")) {
57734                    primaryAttributeKey = lowerCaseAttributeKey;
57735                }
57736                // Special case for innerHTML which doesn't work lowercased
57737                if (primaryAttributes.indexOf(attributeKey) !== -1 && (attributeKey === TAG_PROPERTIES.INNER_HTML || attributeKey === TAG_PROPERTIES.CSS_TEXT || attributeKey === TAG_PROPERTIES.ITEM_PROP)) {
57738                    primaryAttributeKey = attributeKey;
57739                }
57740            }
57741
57742            if (!primaryAttributeKey || !tag[primaryAttributeKey]) {
57743                return false;
57744            }
57745
57746            var value = tag[primaryAttributeKey].toLowerCase();
57747
57748            if (!approvedSeenTags[primaryAttributeKey]) {
57749                approvedSeenTags[primaryAttributeKey] = {};
57750            }
57751
57752            if (!instanceSeenTags[primaryAttributeKey]) {
57753                instanceSeenTags[primaryAttributeKey] = {};
57754            }
57755
57756            if (!approvedSeenTags[primaryAttributeKey][value]) {
57757                instanceSeenTags[primaryAttributeKey][value] = true;
57758                return true;
57759            }
57760
57761            return false;
57762        }).reverse().forEach(function (tag) {
57763            return approvedTags.push(tag);
57764        });
57765
57766        // Update seen tags with tags from this instance
57767        var keys = Object.keys(instanceSeenTags);
57768        for (var i = 0; i < keys.length; i++) {
57769            var attributeKey = keys[i];
57770            var tagUnion = object_assign__WEBPACK_IMPORTED_MODULE_3___default()({}, approvedSeenTags[attributeKey], instanceSeenTags[attributeKey]);
57771
57772            approvedSeenTags[attributeKey] = tagUnion;
57773        }
57774
57775        return approvedTags;
57776    }, []).reverse();
57777};
57778
57779var getInnermostProperty = function getInnermostProperty(propsList, property) {
57780    for (var i = propsList.length - 1; i >= 0; i--) {
57781        var props = propsList[i];
57782
57783        if (props.hasOwnProperty(property)) {
57784            return props[property];
57785        }
57786    }
57787
57788    return null;
57789};
57790
57791var reducePropsToState = function reducePropsToState(propsList) {
57792    return {
57793        baseTag: getBaseTagFromPropsList([TAG_PROPERTIES.HREF, TAG_PROPERTIES.TARGET], propsList),
57794        bodyAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.BODY, propsList),
57795        defer: getInnermostProperty(propsList, HELMET_PROPS.DEFER),
57796        encode: getInnermostProperty(propsList, HELMET_PROPS.ENCODE_SPECIAL_CHARACTERS),
57797        htmlAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.HTML, propsList),
57798        linkTags: getTagsFromPropsList(TAG_NAMES.LINK, [TAG_PROPERTIES.REL, TAG_PROPERTIES.HREF], propsList),
57799        metaTags: getTagsFromPropsList(TAG_NAMES.META, [TAG_PROPERTIES.NAME, TAG_PROPERTIES.CHARSET, TAG_PROPERTIES.HTTPEQUIV, TAG_PROPERTIES.PROPERTY, TAG_PROPERTIES.ITEM_PROP], propsList),
57800        noscriptTags: getTagsFromPropsList(TAG_NAMES.NOSCRIPT, [TAG_PROPERTIES.INNER_HTML], propsList),
57801        onChangeClientState: getOnChangeClientState(propsList),
57802        scriptTags: getTagsFromPropsList(TAG_NAMES.SCRIPT, [TAG_PROPERTIES.SRC, TAG_PROPERTIES.INNER_HTML], propsList),
57803        styleTags: getTagsFromPropsList(TAG_NAMES.STYLE, [TAG_PROPERTIES.CSS_TEXT], propsList),
57804        title: getTitleFromPropsList(propsList),
57805        titleAttributes: getAttributesFromPropsList(ATTRIBUTE_NAMES.TITLE, propsList)
57806    };
57807};
57808
57809var rafPolyfill = function () {
57810    var clock = Date.now();
57811
57812    return function (callback) {
57813        var currentTime = Date.now();
57814
57815        if (currentTime - clock > 16) {
57816            clock = currentTime;
57817            callback(currentTime);
57818        } else {
57819            setTimeout(function () {
57820                rafPolyfill(callback);
57821            }, 0);
57822        }
57823    };
57824}();
57825
57826var cafPolyfill = function cafPolyfill(id) {
57827    return clearTimeout(id);
57828};
57829
57830var requestAnimationFrame = typeof window !== "undefined" ? window.requestAnimationFrame && window.requestAnimationFrame.bind(window) || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || rafPolyfill : __webpack_require__.g.requestAnimationFrame || rafPolyfill;
57831
57832var cancelAnimationFrame = typeof window !== "undefined" ? window.cancelAnimationFrame || window.webkitCancelAnimationFrame || window.mozCancelAnimationFrame || cafPolyfill : __webpack_require__.g.cancelAnimationFrame || cafPolyfill;
57833
57834var warn = function warn(msg) {
57835    return console && typeof console.warn === "function" && console.warn(msg);
57836};
57837
57838var _helmetCallback = null;
57839
57840var handleClientStateChange = function handleClientStateChange(newState) {
57841    if (_helmetCallback) {
57842        cancelAnimationFrame(_helmetCallback);
57843    }
57844
57845    if (newState.defer) {
57846        _helmetCallback = requestAnimationFrame(function () {
57847            commitTagChanges(newState, function () {
57848                _helmetCallback = null;
57849            });
57850        });
57851    } else {
57852        commitTagChanges(newState);
57853        _helmetCallback = null;
57854    }
57855};
57856
57857var commitTagChanges = function commitTagChanges(newState, cb) {
57858    var baseTag = newState.baseTag,
57859        bodyAttributes = newState.bodyAttributes,
57860        htmlAttributes = newState.htmlAttributes,
57861        linkTags = newState.linkTags,
57862        metaTags = newState.metaTags,
57863        noscriptTags = newState.noscriptTags,
57864        onChangeClientState = newState.onChangeClientState,
57865        scriptTags = newState.scriptTags,
57866        styleTags = newState.styleTags,
57867        title = newState.title,
57868        titleAttributes = newState.titleAttributes;
57869
57870    updateAttributes(TAG_NAMES.BODY, bodyAttributes);
57871    updateAttributes(TAG_NAMES.HTML, htmlAttributes);
57872
57873    updateTitle(title, titleAttributes);
57874
57875    var tagUpdates = {
57876        baseTag: updateTags(TAG_NAMES.BASE, baseTag),
57877        linkTags: updateTags(TAG_NAMES.LINK, linkTags),
57878        metaTags: updateTags(TAG_NAMES.META, metaTags),
57879        noscriptTags: updateTags(TAG_NAMES.NOSCRIPT, noscriptTags),
57880        scriptTags: updateTags(TAG_NAMES.SCRIPT, scriptTags),
57881        styleTags: updateTags(TAG_NAMES.STYLE, styleTags)
57882    };
57883
57884    var addedTags = {};
57885    var removedTags = {};
57886
57887    Object.keys(tagUpdates).forEach(function (tagType) {
57888        var _tagUpdates$tagType = tagUpdates[tagType],
57889            newTags = _tagUpdates$tagType.newTags,
57890            oldTags = _tagUpdates$tagType.oldTags;
57891
57892
57893        if (newTags.length) {
57894            addedTags[tagType] = newTags;
57895        }
57896        if (oldTags.length) {
57897            removedTags[tagType] = tagUpdates[tagType].oldTags;
57898        }
57899    });
57900
57901    cb && cb();
57902
57903    onChangeClientState(newState, addedTags, removedTags);
57904};
57905
57906var flattenArray = function flattenArray(possibleArray) {
57907    return Array.isArray(possibleArray) ? possibleArray.join("") : possibleArray;
57908};
57909
57910var updateTitle = function updateTitle(title, attributes) {
57911    if (typeof title !== "undefined" && document.title !== title) {
57912        document.title = flattenArray(title);
57913    }
57914
57915    updateAttributes(TAG_NAMES.TITLE, attributes);
57916};
57917
57918var updateAttributes = function updateAttributes(tagName, attributes) {
57919    var elementTag = document.getElementsByTagName(tagName)[0];
57920
57921    if (!elementTag) {
57922        return;
57923    }
57924
57925    var helmetAttributeString = elementTag.getAttribute(HELMET_ATTRIBUTE);
57926    var helmetAttributes = helmetAttributeString ? helmetAttributeString.split(",") : [];
57927    var attributesToRemove = [].concat(helmetAttributes);
57928    var attributeKeys = Object.keys(attributes);
57929
57930    for (var i = 0; i < attributeKeys.length; i++) {
57931        var attribute = attributeKeys[i];
57932        var value = attributes[attribute] || "";
57933
57934        if (elementTag.getAttribute(attribute) !== value) {
57935            elementTag.setAttribute(attribute, value);
57936        }
57937
57938        if (helmetAttributes.indexOf(attribute) === -1) {
57939            helmetAttributes.push(attribute);
57940        }
57941
57942        var indexToSave = attributesToRemove.indexOf(attribute);
57943        if (indexToSave !== -1) {
57944            attributesToRemove.splice(indexToSave, 1);
57945        }
57946    }
57947
57948    for (var _i = attributesToRemove.length - 1; _i >= 0; _i--) {
57949        elementTag.removeAttribute(attributesToRemove[_i]);
57950    }
57951
57952    if (helmetAttributes.length === attributesToRemove.length) {
57953        elementTag.removeAttribute(HELMET_ATTRIBUTE);
57954    } else if (elementTag.getAttribute(HELMET_ATTRIBUTE) !== attributeKeys.join(",")) {
57955        elementTag.setAttribute(HELMET_ATTRIBUTE, attributeKeys.join(","));
57956    }
57957};
57958
57959var updateTags = function updateTags(type, tags) {
57960    var headElement = document.head || document.querySelector(TAG_NAMES.HEAD);
57961    var tagNodes = headElement.querySelectorAll(type + "[" + HELMET_ATTRIBUTE + "]");
57962    var oldTags = Array.prototype.slice.call(tagNodes);
57963    var newTags = [];
57964    var indexToDelete = void 0;
57965
57966    if (tags && tags.length) {
57967        tags.forEach(function (tag) {
57968            var newElement = document.createElement(type);
57969
57970            for (var attribute in tag) {
57971                if (tag.hasOwnProperty(attribute)) {
57972                    if (attribute === TAG_PROPERTIES.INNER_HTML) {
57973                        newElement.innerHTML = tag.innerHTML;
57974                    } else if (attribute === TAG_PROPERTIES.CSS_TEXT) {
57975                        if (newElement.styleSheet) {
57976                            newElement.styleSheet.cssText = tag.cssText;
57977                        } else {
57978                            newElement.appendChild(document.createTextNode(tag.cssText));
57979                        }
57980                    } else {
57981                        var value = typeof tag[attribute] === "undefined" ? "" : tag[attribute];
57982                        newElement.setAttribute(attribute, value);
57983                    }
57984                }
57985            }
57986
57987            newElement.setAttribute(HELMET_ATTRIBUTE, "true");
57988
57989            // Remove a duplicate tag from domTagstoRemove, so it isn't cleared.
57990            if (oldTags.some(function (existingTag, index) {
57991                indexToDelete = index;
57992                return newElement.isEqualNode(existingTag);
57993            })) {
57994                oldTags.splice(indexToDelete, 1);
57995            } else {
57996                newTags.push(newElement);
57997            }
57998        });
57999    }
58000
58001    oldTags.forEach(function (tag) {
58002        return tag.parentNode.removeChild(tag);
58003    });
58004    newTags.forEach(function (tag) {
58005        return headElement.appendChild(tag);
58006    });
58007
58008    return {
58009        oldTags: oldTags,
58010        newTags: newTags
58011    };
58012};
58013
58014var generateElementAttributesAsString = function generateElementAttributesAsString(attributes) {
58015    return Object.keys(attributes).reduce(function (str, key) {
58016        var attr = typeof attributes[key] !== "undefined" ? key + "=\"" + attributes[key] + "\"" : "" + key;
58017        return str ? str + " " + attr : attr;
58018    }, "");
58019};
58020
58021var generateTitleAsString = function generateTitleAsString(type, title, attributes, encode) {
58022    var attributeString = generateElementAttributesAsString(attributes);
58023    var flattenedTitle = flattenArray(title);
58024    return attributeString ? "<" + type + " " + HELMET_ATTRIBUTE + "=\"true\" " + attributeString + ">" + encodeSpecialCharacters(flattenedTitle, encode) + "</" + type + ">" : "<" + type + " " + HELMET_ATTRIBUTE + "=\"true\">" + encodeSpecialCharacters(flattenedTitle, encode) + "</" + type + ">";
58025};
58026
58027var generateTagsAsString = function generateTagsAsString(type, tags, encode) {
58028    return tags.reduce(function (str, tag) {
58029        var attributeHtml = Object.keys(tag).filter(function (attribute) {
58030            return !(attribute === TAG_PROPERTIES.INNER_HTML || attribute === TAG_PROPERTIES.CSS_TEXT);
58031        }).reduce(function (string, attribute) {
58032            var attr = typeof tag[attribute] === "undefined" ? attribute : attribute + "=\"" + encodeSpecialCharacters(tag[attribute], encode) + "\"";
58033            return string ? string + " " + attr : attr;
58034        }, "");
58035
58036        var tagContent = tag.innerHTML || tag.cssText || "";
58037
58038        var isSelfClosing = SELF_CLOSING_TAGS.indexOf(type) === -1;
58039
58040        return str + "<" + type + " " + HELMET_ATTRIBUTE + "=\"true\" " + attributeHtml + (isSelfClosing ? "/>" : ">" + tagContent + "</" + type + ">");
58041    }, "");
58042};
58043
58044var convertElementAttributestoReactProps = function convertElementAttributestoReactProps(attributes) {
58045    var initProps = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
58046
58047    return Object.keys(attributes).reduce(function (obj, key) {
58048        obj[REACT_TAG_MAP[key] || key] = attributes[key];
58049        return obj;
58050    }, initProps);
58051};
58052
58053var convertReactPropstoHtmlAttributes = function convertReactPropstoHtmlAttributes(props) {
58054    var initAttributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
58055
58056    return Object.keys(props).reduce(function (obj, key) {
58057        obj[HTML_TAG_MAP[key] || key] = props[key];
58058        return obj;
58059    }, initAttributes);
58060};
58061
58062var generateTitleAsReactComponent = function generateTitleAsReactComponent(type, title, attributes) {
58063    var _initProps;
58064
58065    // assigning into an array to define toString function on it
58066    var initProps = (_initProps = {
58067        key: title
58068    }, _initProps[HELMET_ATTRIBUTE] = true, _initProps);
58069    var props = convertElementAttributestoReactProps(attributes, initProps);
58070
58071    return [react__WEBPACK_IMPORTED_MODULE_2__.createElement(TAG_NAMES.TITLE, props, title)];
58072};
58073
58074var generateTagsAsReactComponent = function generateTagsAsReactComponent(type, tags) {
58075    return tags.map(function (tag, i) {
58076        var _mappedTag;
58077
58078        var mappedTag = (_mappedTag = {
58079            key: i
58080        }, _mappedTag[HELMET_ATTRIBUTE] = true, _mappedTag);
58081
58082        Object.keys(tag).forEach(function (attribute) {
58083            var mappedAttribute = REACT_TAG_MAP[attribute] || attribute;
58084
58085            if (mappedAttribute === TAG_PROPERTIES.INNER_HTML || mappedAttribute === TAG_PROPERTIES.CSS_TEXT) {
58086                var content = tag.innerHTML || tag.cssText;
58087                mappedTag.dangerouslySetInnerHTML = { __html: content };
58088            } else {
58089                mappedTag[mappedAttribute] = tag[attribute];
58090            }
58091        });
58092
58093        return react__WEBPACK_IMPORTED_MODULE_2__.createElement(type, mappedTag);
58094    });
58095};
58096
58097var getMethodsForTag = function getMethodsForTag(type, tags, encode) {
58098    switch (type) {
58099        case TAG_NAMES.TITLE:
58100            return {
58101                toComponent: function toComponent() {
58102                    return generateTitleAsReactComponent(type, tags.title, tags.titleAttributes, encode);
58103                },
58104                toString: function toString() {
58105                    return generateTitleAsString(type, tags.title, tags.titleAttributes, encode);
58106                }
58107            };
58108        case ATTRIBUTE_NAMES.BODY:
58109        case ATTRIBUTE_NAMES.HTML:
58110            return {
58111                toComponent: function toComponent() {
58112                    return convertElementAttributestoReactProps(tags);
58113                },
58114                toString: function toString() {
58115                    return generateElementAttributesAsString(tags);
58116                }
58117            };
58118        default:
58119            return {
58120                toComponent: function toComponent() {
58121                    return generateTagsAsReactComponent(type, tags);
58122                },
58123                toString: function toString() {
58124                    return generateTagsAsString(type, tags, encode);
58125                }
58126            };
58127    }
58128};
58129
58130var mapStateOnServer = function mapStateOnServer(_ref) {
58131    var baseTag = _ref.baseTag,
58132        bodyAttributes = _ref.bodyAttributes,
58133        encode = _ref.encode,
58134        htmlAttributes = _ref.htmlAttributes,
58135        linkTags = _ref.linkTags,
58136        metaTags = _ref.metaTags,
58137        noscriptTags = _ref.noscriptTags,
58138        scriptTags = _ref.scriptTags,
58139        styleTags = _ref.styleTags,
58140        _ref$title = _ref.title,
58141        title = _ref$title === undefined ? "" : _ref$title,
58142        titleAttributes = _ref.titleAttributes;
58143    return {
58144        base: getMethodsForTag(TAG_NAMES.BASE, baseTag, encode),
58145        bodyAttributes: getMethodsForTag(ATTRIBUTE_NAMES.BODY, bodyAttributes, encode),
58146        htmlAttributes: getMethodsForTag(ATTRIBUTE_NAMES.HTML, htmlAttributes, encode),
58147        link: getMethodsForTag(TAG_NAMES.LINK, linkTags, encode),
58148        meta: getMethodsForTag(TAG_NAMES.META, metaTags, encode),
58149        noscript: getMethodsForTag(TAG_NAMES.NOSCRIPT, noscriptTags, encode),
58150        script: getMethodsForTag(TAG_NAMES.SCRIPT, scriptTags, encode),
58151        style: getMethodsForTag(TAG_NAMES.STYLE, styleTags, encode),
58152        title: getMethodsForTag(TAG_NAMES.TITLE, { title: title, titleAttributes: titleAttributes }, encode)
58153    };
58154};
58155
58156var Helmet = function Helmet(Component) {
58157    var _class, _temp;
58158
58159    return _temp = _class = function (_React$Component) {
58160        inherits(HelmetWrapper, _React$Component);
58161
58162        function HelmetWrapper() {
58163            classCallCheck(this, HelmetWrapper);
58164            return possibleConstructorReturn(this, _React$Component.apply(this, arguments));
58165        }
58166
58167        HelmetWrapper.prototype.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {
58168            return !react_fast_compare__WEBPACK_IMPORTED_MODULE_1___default()(this.props, nextProps);
58169        };
58170
58171        HelmetWrapper.prototype.mapNestedChildrenToProps = function mapNestedChildrenToProps(child, nestedChildren) {
58172            if (!nestedChildren) {
58173                return null;
58174            }
58175
58176            switch (child.type) {
58177                case TAG_NAMES.SCRIPT:
58178                case TAG_NAMES.NOSCRIPT:
58179                    return {
58180                        innerHTML: nestedChildren
58181                    };
58182
58183                case TAG_NAMES.STYLE:
58184                    return {
58185                        cssText: nestedChildren
58186                    };
58187            }
58188
58189            throw new Error("<" + child.type + " /> elements are self-closing and can not contain children. Refer to our API for more information.");
58190        };
58191
58192        HelmetWrapper.prototype.flattenArrayTypeChildren = function flattenArrayTypeChildren(_ref) {
58193            var _babelHelpers$extends;
58194
58195            var child = _ref.child,
58196                arrayTypeChildren = _ref.arrayTypeChildren,
58197                newChildProps = _ref.newChildProps,
58198                nestedChildren = _ref.nestedChildren;
58199
58200            return _extends({}, arrayTypeChildren, (_babelHelpers$extends = {}, _babelHelpers$extends[child.type] = [].concat(arrayTypeChildren[child.type] || [], [_extends({}, newChildProps, this.mapNestedChildrenToProps(child, nestedChildren))]), _babelHelpers$extends));
58201        };
58202
58203        HelmetWrapper.prototype.mapObjectTypeChildren = function mapObjectTypeChildren(_ref2) {
58204            var _babelHelpers$extends2, _babelHelpers$extends3;
58205
58206            var child = _ref2.child,
58207                newProps = _ref2.newProps,
58208                newChildProps = _ref2.newChildProps,
58209                nestedChildren = _ref2.nestedChildren;
58210
58211            switch (child.type) {
58212                case TAG_NAMES.TITLE:
58213                    return _extends({}, newProps, (_babelHelpers$extends2 = {}, _babelHelpers$extends2[child.type] = nestedChildren, _babelHelpers$extends2.titleAttributes = _extends({}, newChildProps), _babelHelpers$extends2));
58214
58215                case TAG_NAMES.BODY:
58216                    return _extends({}, newProps, {
58217                        bodyAttributes: _extends({}, newChildProps)
58218                    });
58219
58220                case TAG_NAMES.HTML:
58221                    return _extends({}, newProps, {
58222                        htmlAttributes: _extends({}, newChildProps)
58223                    });
58224            }
58225
58226            return _extends({}, newProps, (_babelHelpers$extends3 = {}, _babelHelpers$extends3[child.type] = _extends({}, newChildProps), _babelHelpers$extends3));
58227        };
58228
58229        HelmetWrapper.prototype.mapArrayTypeChildrenToProps = function mapArrayTypeChildrenToProps(arrayTypeChildren, newProps) {
58230            var newFlattenedProps = _extends({}, newProps);
58231
58232            Object.keys(arrayTypeChildren).forEach(function (arrayChildName) {
58233                var _babelHelpers$extends4;
58234
58235                newFlattenedProps = _extends({}, newFlattenedProps, (_babelHelpers$extends4 = {}, _babelHelpers$extends4[arrayChildName] = arrayTypeChildren[arrayChildName], _babelHelpers$extends4));
58236            });
58237
58238            return newFlattenedProps;
58239        };
58240
58241        HelmetWrapper.prototype.warnOnInvalidChildren = function warnOnInvalidChildren(child, nestedChildren) {
58242            if (true) {
58243                if (!VALID_TAG_NAMES.some(function (name) {
58244                    return child.type === name;
58245                })) {
58246                    if (typeof child.type === "function") {
58247                        return warn("You may be attempting to nest <Helmet> components within each other, which is not allowed. Refer to our API for more information.");
58248                    }
58249
58250                    return warn("Only elements types " + VALID_TAG_NAMES.join(", ") + " are allowed. Helmet does not support rendering <" + child.type + "> elements. Refer to our API for more information.");
58251                }
58252
58253                if (nestedChildren && typeof nestedChildren !== "string" && (!Array.isArray(nestedChildren) || nestedChildren.some(function (nestedChild) {
58254                    return typeof nestedChild !== "string";
58255                }))) {
58256                    throw new Error("Helmet expects a string as a child of <" + child.type + ">. Did you forget to wrap your children in braces? ( <" + child.type + ">{``}</" + child.type + "> ) Refer to our API for more information.");
58257                }
58258            }
58259
58260            return true;
58261        };
58262
58263        HelmetWrapper.prototype.mapChildrenToProps = function mapChildrenToProps(children, newProps) {
58264            var _this2 = this;
58265
58266            var arrayTypeChildren = {};
58267
58268            react__WEBPACK_IMPORTED_MODULE_2__.Children.forEach(children, function (child) {
58269                if (!child || !child.props) {
58270                    return;
58271                }
58272
58273                var _child$props = child.props,
58274                    nestedChildren = _child$props.children,
58275                    childProps = objectWithoutProperties(_child$props, ["children"]);
58276
58277                var newChildProps = convertReactPropstoHtmlAttributes(childProps);
58278
58279                _this2.warnOnInvalidChildren(child, nestedChildren);
58280
58281                switch (child.type) {
58282                    case TAG_NAMES.LINK:
58283                    case TAG_NAMES.META:
58284                    case TAG_NAMES.NOSCRIPT:
58285                    case TAG_NAMES.SCRIPT:
58286                    case TAG_NAMES.STYLE:
58287                        arrayTypeChildren = _this2.flattenArrayTypeChildren({
58288                            child: child,
58289                            arrayTypeChildren: arrayTypeChildren,
58290                            newChildProps: newChildProps,
58291                            nestedChildren: nestedChildren
58292                        });
58293                        break;
58294
58295                    default:
58296                        newProps = _this2.mapObjectTypeChildren({
58297                            child: child,
58298                            newProps: newProps,
58299                            newChildProps: newChildProps,
58300                            nestedChildren: nestedChildren
58301                        });
58302                        break;
58303                }
58304            });
58305
58306            newProps = this.mapArrayTypeChildrenToProps(arrayTypeChildren, newProps);
58307            return newProps;
58308        };
58309
58310        HelmetWrapper.prototype.render = function render() {
58311            var _props = this.props,
58312                children = _props.children,
58313                props = objectWithoutProperties(_props, ["children"]);
58314
58315            var newProps = _extends({}, props);
58316
58317            if (children) {
58318                newProps = this.mapChildrenToProps(children, newProps);
58319            }
58320
58321            return react__WEBPACK_IMPORTED_MODULE_2__.createElement(Component, newProps);
58322        };
58323
58324        createClass(HelmetWrapper, null, [{
58325            key: "canUseDOM",
58326
58327
58328            // Component.peek comes from react-side-effect:
58329            // For testing, you may use a static peek() method available on the returned component.
58330            // It lets you get the current state without resetting the mounted instance stack.
58331            // Don’t use it for anything other than testing.
58332
58333            /**
58334             * @param {Object} base: {"target": "_blank", "href": "http://mysite.com/"}
58335             * @param {Object} bodyAttributes: {"className": "root"}
58336             * @param {String} defaultTitle: "Default Title"
58337             * @param {Boolean} defer: true
58338             * @param {Boolean} encodeSpecialCharacters: true
58339             * @param {Object} htmlAttributes: {"lang": "en", "amp": undefined}
58340             * @param {Array} link: [{"rel": "canonical", "href": "http://mysite.com/example"}]
58341             * @param {Array} meta: [{"name": "description", "content": "Test description"}]
58342             * @param {Array} noscript: [{"innerHTML": "<img src='http://mysite.com/js/test.js'"}]
58343             * @param {Function} onChangeClientState: "(newState) => console.log(newState)"
58344             * @param {Array} script: [{"type": "text/javascript", "src": "http://mysite.com/js/test.js"}]
58345             * @param {Array} style: [{"type": "text/css", "cssText": "div { display: block; color: blue; }"}]
58346             * @param {String} title: "Title"
58347             * @param {Object} titleAttributes: {"itemprop": "name"}
58348             * @param {String} titleTemplate: "MySite.com - %s"
58349             */
58350            set: function set$$1(canUseDOM) {
58351                Component.canUseDOM = canUseDOM;
58352            }
58353        }]);
58354        return HelmetWrapper;
58355    }(react__WEBPACK_IMPORTED_MODULE_2__.Component), _class.propTypes = {
58356        base: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),
58357        bodyAttributes: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),
58358        children: prop_types__WEBPACK_IMPORTED_MODULE_4___default().oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)), (prop_types__WEBPACK_IMPORTED_MODULE_4___default().node)]),
58359        defaultTitle: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),
58360        defer: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),
58361        encodeSpecialCharacters: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().bool),
58362        htmlAttributes: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),
58363        link: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),
58364        meta: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),
58365        noscript: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),
58366        onChangeClientState: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().func),
58367        script: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),
58368        style: prop_types__WEBPACK_IMPORTED_MODULE_4___default().arrayOf((prop_types__WEBPACK_IMPORTED_MODULE_4___default().object)),
58369        title: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string),
58370        titleAttributes: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().object),
58371        titleTemplate: (prop_types__WEBPACK_IMPORTED_MODULE_4___default().string)
58372    }, _class.defaultProps = {
58373        defer: true,
58374        encodeSpecialCharacters: true
58375    }, _class.peek = Component.peek, _class.rewind = function () {
58376        var mappedState = Component.rewind();
58377        if (!mappedState) {
58378            // provide fallback if mappedState is undefined
58379            mappedState = mapStateOnServer({
58380                baseTag: [],
58381                bodyAttributes: {},
58382                encodeSpecialCharacters: true,
58383                htmlAttributes: {},
58384                linkTags: [],
58385                metaTags: [],
58386                noscriptTags: [],
58387                scriptTags: [],
58388                styleTags: [],
58389                title: "",
58390                titleAttributes: {}
58391            });
58392        }
58393
58394        return mappedState;
58395    }, _temp;
58396};
58397
58398var NullComponent = function NullComponent() {
58399    return null;
58400};
58401
58402var HelmetSideEffects = react_side_effect__WEBPACK_IMPORTED_MODULE_0___default()(reducePropsToState, handleClientStateChange, mapStateOnServer)(NullComponent);
58403
58404var HelmetExport = Helmet(HelmetSideEffects);
58405HelmetExport.renderStatic = HelmetExport.rewind;
58406
58407/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HelmetExport);
58408
58409
58410
58411/***/ }),
58412
vendor: 7,264 bytes, lines 58413-58604
58413/***/ "./node_modules/react-is/cjs/react-is.development.js":
58414/*!***********************************************************!*\
58415  !*** ./node_modules/react-is/cjs/react-is.development.js ***!
58416  \***********************************************************/
58417/***/ ((__unused_webpack_module, exports) => {
58418
58419"use strict";
58420/** @license React v16.13.1
58421 * react-is.development.js
58422 *
58423 * Copyright (c) Facebook, Inc. and its affiliates.
58424 *
58425 * This source code is licensed under the MIT license found in the
58426 * LICENSE file in the root directory of this source tree.
58427 */
58428
58429
58430
58431
58432
58433if (true) {
58434  (function() {
58435'use strict';
58436
58437// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
58438// nor polyfill, then a plain number is used for performance.
58439var hasSymbol = typeof Symbol === 'function' && Symbol.for;
58440var REACT_ELEMENT_TYPE = hasSymbol ? Symbol.for('react.element') : 0xeac7;
58441var REACT_PORTAL_TYPE = hasSymbol ? Symbol.for('react.portal') : 0xeaca;
58442var REACT_FRAGMENT_TYPE = hasSymbol ? Symbol.for('react.fragment') : 0xeacb;
58443var REACT_STRICT_MODE_TYPE = hasSymbol ? Symbol.for('react.strict_mode') : 0xeacc;
58444var REACT_PROFILER_TYPE = hasSymbol ? Symbol.for('react.profiler') : 0xead2;
58445var REACT_PROVIDER_TYPE = hasSymbol ? Symbol.for('react.provider') : 0xeacd;
58446var REACT_CONTEXT_TYPE = hasSymbol ? Symbol.for('react.context') : 0xeace; // TODO: We don't use AsyncMode or ConcurrentMode anymore. They were temporary
58447// (unstable) APIs that have been removed. Can we remove the symbols?
58448
58449var REACT_ASYNC_MODE_TYPE = hasSymbol ? Symbol.for('react.async_mode') : 0xeacf;
58450var REACT_CONCURRENT_MODE_TYPE = hasSymbol ? Symbol.for('react.concurrent_mode') : 0xeacf;
58451var REACT_FORWARD_REF_TYPE = hasSymbol ? Symbol.for('react.forward_ref') : 0xead0;
58452var REACT_SUSPENSE_TYPE = hasSymbol ? Symbol.for('react.suspense') : 0xead1;
58453var REACT_SUSPENSE_LIST_TYPE = hasSymbol ? Symbol.for('react.suspense_list') : 0xead8;
58454var REACT_MEMO_TYPE = hasSymbol ? Symbol.for('react.memo') : 0xead3;
58455var REACT_LAZY_TYPE = hasSymbol ? Symbol.for('react.lazy') : 0xead4;
58456var REACT_BLOCK_TYPE = hasSymbol ? Symbol.for('react.block') : 0xead9;
58457var REACT_FUNDAMENTAL_TYPE = hasSymbol ? Symbol.for('react.fundamental') : 0xead5;
58458var REACT_RESPONDER_TYPE = hasSymbol ? Symbol.for('react.responder') : 0xead6;
58459var REACT_SCOPE_TYPE = hasSymbol ? Symbol.for('react.scope') : 0xead7;
58460
58461function isValidElementType(type) {
58462  return typeof type === 'string' || typeof type === 'function' || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
58463  type === REACT_FRAGMENT_TYPE || type === REACT_CONCURRENT_MODE_TYPE || type === REACT_PROFILER_TYPE || type === REACT_STRICT_MODE_TYPE || type === REACT_SUSPENSE_TYPE || type === REACT_SUSPENSE_LIST_TYPE || typeof type === 'object' && type !== null && (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_RESPONDER_TYPE || type.$$typeof === REACT_SCOPE_TYPE || type.$$typeof === REACT_BLOCK_TYPE);
58464}
58465
58466function typeOf(object) {
58467  if (typeof object === 'object' && object !== null) {
58468    var $$typeof = object.$$typeof;
58469
58470    switch ($$typeof) {
58471      case REACT_ELEMENT_TYPE:
58472        var type = object.type;
58473
58474        switch (type) {
58475          case REACT_ASYNC_MODE_TYPE:
58476          case REACT_CONCURRENT_MODE_TYPE:
58477          case REACT_FRAGMENT_TYPE:
58478          case REACT_PROFILER_TYPE:
58479          case REACT_STRICT_MODE_TYPE:
58480          case REACT_SUSPENSE_TYPE:
58481            return type;
58482
58483          default:
58484            var $$typeofType = type && type.$$typeof;
58485
58486            switch ($$typeofType) {
58487              case REACT_CONTEXT_TYPE:
58488              case REACT_FORWARD_REF_TYPE:
58489              case REACT_LAZY_TYPE:
58490              case REACT_MEMO_TYPE:
58491              case REACT_PROVIDER_TYPE:
58492                return $$typeofType;
58493
58494              default:
58495                return $$typeof;
58496            }
58497
58498        }
58499
58500      case REACT_PORTAL_TYPE:
58501        return $$typeof;
58502    }
58503  }
58504
58505  return undefined;
58506} // AsyncMode is deprecated along with isAsyncMode
58507
58508var AsyncMode = REACT_ASYNC_MODE_TYPE;
58509var ConcurrentMode = REACT_CONCURRENT_MODE_TYPE;
58510var ContextConsumer = REACT_CONTEXT_TYPE;
58511var ContextProvider = REACT_PROVIDER_TYPE;
58512var Element = REACT_ELEMENT_TYPE;
58513var ForwardRef = REACT_FORWARD_REF_TYPE;
58514var Fragment = REACT_FRAGMENT_TYPE;
58515var Lazy = REACT_LAZY_TYPE;
58516var Memo = REACT_MEMO_TYPE;
58517var Portal = REACT_PORTAL_TYPE;
58518var Profiler = REACT_PROFILER_TYPE;
58519var StrictMode = REACT_STRICT_MODE_TYPE;
58520var Suspense = REACT_SUSPENSE_TYPE;
58521var hasWarnedAboutDeprecatedIsAsyncMode = false; // AsyncMode should be deprecated
58522
58523function isAsyncMode(object) {
58524  {
58525    if (!hasWarnedAboutDeprecatedIsAsyncMode) {
58526      hasWarnedAboutDeprecatedIsAsyncMode = true; // Using console['warn'] to evade Babel and ESLint
58527
58528      console['warn']('The ReactIs.isAsyncMode() alias has been deprecated, ' + 'and will be removed in React 17+. Update your code to use ' + 'ReactIs.isConcurrentMode() instead. It has the exact same API.');
58529    }
58530  }
58531
58532  return isConcurrentMode(object) || typeOf(object) === REACT_ASYNC_MODE_TYPE;
58533}
58534function isConcurrentMode(object) {
58535  return typeOf(object) === REACT_CONCURRENT_MODE_TYPE;
58536}
58537function isContextConsumer(object) {
58538  return typeOf(object) === REACT_CONTEXT_TYPE;
58539}
58540function isContextProvider(object) {
58541  return typeOf(object) === REACT_PROVIDER_TYPE;
58542}
58543function isElement(object) {
58544  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
58545}
58546function isForwardRef(object) {
58547  return typeOf(object) === REACT_FORWARD_REF_TYPE;
58548}
58549function isFragment(object) {
58550  return typeOf(object) === REACT_FRAGMENT_TYPE;
58551}
58552function isLazy(object) {
58553  return typeOf(object) === REACT_LAZY_TYPE;
58554}
58555function isMemo(object) {
58556  return typeOf(object) === REACT_MEMO_TYPE;
58557}
58558function isPortal(object) {
58559  return typeOf(object) === REACT_PORTAL_TYPE;
58560}
58561function isProfiler(object) {
58562  return typeOf(object) === REACT_PROFILER_TYPE;
58563}
58564function isStrictMode(object) {
58565  return typeOf(object) === REACT_STRICT_MODE_TYPE;
58566}
58567function isSuspense(object) {
58568  return typeOf(object) === REACT_SUSPENSE_TYPE;
58569}
58570
58571exports.AsyncMode = AsyncMode;
58572exports.ConcurrentMode = ConcurrentMode;
58573exports.ContextConsumer = ContextConsumer;
58574exports.ContextProvider = ContextProvider;
58575exports.Element = Element;
58576exports.ForwardRef = ForwardRef;
58577exports.Fragment = Fragment;
58578exports.Lazy = Lazy;
58579exports.Memo = Memo;
58580exports.Portal = Portal;
58581exports.Profiler = Profiler;
58582exports.StrictMode = StrictMode;
58583exports.Suspense = Suspense;
58584exports.isAsyncMode = isAsyncMode;
58585exports.isConcurrentMode = isConcurrentMode;
58586exports.isContextConsumer = isContextConsumer;
58587exports.isContextProvider = isContextProvider;
58588exports.isElement = isElement;
58589exports.isForwardRef = isForwardRef;
58590exports.isFragment = isFragment;
58591exports.isLazy = isLazy;
58592exports.isMemo = isMemo;
58593exports.isPortal = isPortal;
58594exports.isProfiler = isProfiler;
58595exports.isStrictMode = isStrictMode;
58596exports.isSuspense = isSuspense;
58597exports.isValidElementType = isValidElementType;
58598exports.typeOf = typeOf;
58599  })();
58600}
58601
58602
58603/***/ }),
58604
vendor: 432 bytes, lines 58605-58620
58605/***/ "./node_modules/react-is/index.js":
58606/*!****************************************!*\
58607  !*** ./node_modules/react-is/index.js ***!
58608  \****************************************/
58609/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
58610
58611"use strict";
58612
58613
58614if (false) {} else {
58615  module.exports = __webpack_require__(/*! ./cjs/react-is.development.js */ "./node_modules/react-is/cjs/react-is.development.js");
58616}
58617
58618
58619/***/ }),
58620
vendor: 69,735 bytes, lines 58621-60174
58621/***/ "./node_modules/react-router-dom/dist/index.js":
58622/*!*****************************************************!*\
58623  !*** ./node_modules/react-router-dom/dist/index.js ***!
58624  \*****************************************************/
58625/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
58626
58627"use strict";
58628var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
58629var react_dom__WEBPACK_IMPORTED_MODULE_1___namespace_cache;
58630__webpack_require__.r(__webpack_exports__);
58631/* harmony export */ __webpack_require__.d(__webpack_exports__, {
58632/* harmony export */   AbortedDeferredError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.AbortedDeferredError),
58633/* harmony export */   Await: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Await),
58634/* harmony export */   BrowserRouter: () => (/* binding */ BrowserRouter),
58635/* harmony export */   Form: () => (/* binding */ Form),
58636/* harmony export */   HashRouter: () => (/* binding */ HashRouter),
58637/* harmony export */   Link: () => (/* binding */ Link),
58638/* harmony export */   MemoryRouter: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.MemoryRouter),
58639/* harmony export */   NavLink: () => (/* binding */ NavLink),
58640/* harmony export */   Navigate: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Navigate),
58641/* harmony export */   NavigationType: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.Action),
58642/* harmony export */   Outlet: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Outlet),
58643/* harmony export */   Route: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Route),
58644/* harmony export */   Router: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Router),
58645/* harmony export */   RouterProvider: () => (/* binding */ RouterProvider),
58646/* harmony export */   Routes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.Routes),
58647/* harmony export */   ScrollRestoration: () => (/* binding */ ScrollRestoration),
58648/* harmony export */   UNSAFE_DataRouterContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext),
58649/* harmony export */   UNSAFE_DataRouterStateContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext),
58650/* harmony export */   UNSAFE_ErrorResponseImpl: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_ErrorResponseImpl),
58651/* harmony export */   UNSAFE_FetchersContext: () => (/* binding */ FetchersContext),
58652/* harmony export */   UNSAFE_LocationContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_LocationContext),
58653/* harmony export */   UNSAFE_NavigationContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext),
58654/* harmony export */   UNSAFE_RouteContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext),
58655/* harmony export */   UNSAFE_ViewTransitionContext: () => (/* binding */ ViewTransitionContext),
58656/* harmony export */   UNSAFE_useRouteId: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRouteId),
58657/* harmony export */   UNSAFE_useScrollRestoration: () => (/* binding */ useScrollRestoration),
58658/* harmony export */   createBrowserRouter: () => (/* binding */ createBrowserRouter),
58659/* harmony export */   createHashRouter: () => (/* binding */ createHashRouter),
58660/* harmony export */   createMemoryRouter: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createMemoryRouter),
58661/* harmony export */   createPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.createPath),
58662/* harmony export */   createRoutesFromChildren: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createRoutesFromChildren),
58663/* harmony export */   createRoutesFromElements: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.createRoutesFromElements),
58664/* harmony export */   createSearchParams: () => (/* binding */ createSearchParams),
58665/* harmony export */   defer: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.defer),
58666/* harmony export */   generatePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.generatePath),
58667/* harmony export */   isRouteErrorResponse: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.isRouteErrorResponse),
58668/* harmony export */   json: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.json),
58669/* harmony export */   matchPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath),
58670/* harmony export */   matchRoutes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.matchRoutes),
58671/* harmony export */   parsePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.parsePath),
58672/* harmony export */   redirect: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.redirect),
58673/* harmony export */   redirectDocument: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.redirectDocument),
58674/* harmony export */   renderMatches: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.renderMatches),
58675/* harmony export */   replace: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.replace),
58676/* harmony export */   resolvePath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_2__.resolvePath),
58677/* harmony export */   unstable_HistoryRouter: () => (/* binding */ HistoryRouter),
58678/* harmony export */   unstable_usePrompt: () => (/* binding */ usePrompt),
58679/* harmony export */   useActionData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useActionData),
58680/* harmony export */   useAsyncError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useAsyncError),
58681/* harmony export */   useAsyncValue: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useAsyncValue),
58682/* harmony export */   useBeforeUnload: () => (/* binding */ useBeforeUnload),
58683/* harmony export */   useBlocker: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useBlocker),
58684/* harmony export */   useFetcher: () => (/* binding */ useFetcher),
58685/* harmony export */   useFetchers: () => (/* binding */ useFetchers),
58686/* harmony export */   useFormAction: () => (/* binding */ useFormAction),
58687/* harmony export */   useHref: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useHref),
58688/* harmony export */   useInRouterContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useInRouterContext),
58689/* harmony export */   useLinkClickHandler: () => (/* binding */ useLinkClickHandler),
58690/* harmony export */   useLoaderData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useLoaderData),
58691/* harmony export */   useLocation: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation),
58692/* harmony export */   useMatch: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useMatch),
58693/* harmony export */   useMatches: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useMatches),
58694/* harmony export */   useNavigate: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate),
58695/* harmony export */   useNavigation: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigation),
58696/* harmony export */   useNavigationType: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigationType),
58697/* harmony export */   useOutlet: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useOutlet),
58698/* harmony export */   useOutletContext: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useOutletContext),
58699/* harmony export */   useParams: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useParams),
58700/* harmony export */   useResolvedPath: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath),
58701/* harmony export */   useRevalidator: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRevalidator),
58702/* harmony export */   useRouteError: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRouteError),
58703/* harmony export */   useRouteLoaderData: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRouteLoaderData),
58704/* harmony export */   useRoutes: () => (/* reexport safe */ react_router__WEBPACK_IMPORTED_MODULE_3__.useRoutes),
58705/* harmony export */   useSearchParams: () => (/* binding */ useSearchParams),
58706/* harmony export */   useSubmit: () => (/* binding */ useSubmit),
58707/* harmony export */   useViewTransitionState: () => (/* binding */ useViewTransitionState)
58708/* harmony export */ });
58709/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
58710/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom */ "./node_modules/react-dom/index.js");
58711/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-router */ "./node_modules/react-router/dist/index.js");
58712/* harmony import */ var react_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @remix-run/router */ "./node_modules/@remix-run/router/dist/router.js");
58713/**
58714 * React Router DOM v6.28.1
58715 *
58716 * Copyright (c) Remix Software Inc.
58717 *
58718 * This source code is licensed under the MIT license found in the
58719 * LICENSE.md file in the root directory of this source tree.
58720 *
58721 * @license MIT
58722 */
58723
58724
58725
58726
58727
58728
58729
58730function _extends() {
58731  _extends = Object.assign ? Object.assign.bind() : function (target) {
58732    for (var i = 1; i < arguments.length; i++) {
58733      var source = arguments[i];
58734      for (var key in source) {
58735        if (Object.prototype.hasOwnProperty.call(source, key)) {
58736          target[key] = source[key];
58737        }
58738      }
58739    }
58740    return target;
58741  };
58742  return _extends.apply(this, arguments);
58743}
58744function _objectWithoutPropertiesLoose(source, excluded) {
58745  if (source == null) return {};
58746  var target = {};
58747  var sourceKeys = Object.keys(source);
58748  var key, i;
58749  for (i = 0; i < sourceKeys.length; i++) {
58750    key = sourceKeys[i];
58751    if (excluded.indexOf(key) >= 0) continue;
58752    target[key] = source[key];
58753  }
58754  return target;
58755}
58756
58757const defaultMethod = "get";
58758const defaultEncType = "application/x-www-form-urlencoded";
58759function isHtmlElement(object) {
58760  return object != null && typeof object.tagName === "string";
58761}
58762function isButtonElement(object) {
58763  return isHtmlElement(object) && object.tagName.toLowerCase() === "button";
58764}
58765function isFormElement(object) {
58766  return isHtmlElement(object) && object.tagName.toLowerCase() === "form";
58767}
58768function isInputElement(object) {
58769  return isHtmlElement(object) && object.tagName.toLowerCase() === "input";
58770}
58771function isModifiedEvent(event) {
58772  return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);
58773}
58774function shouldProcessLinkClick(event, target) {
58775  return event.button === 0 && (
58776  // Ignore everything but left clicks
58777  !target || target === "_self") &&
58778  // Let browser handle "target=_blank" etc.
58779  !isModifiedEvent(event) // Ignore clicks with modifier keys
58780  ;
58781}
58782/**
58783 * Creates a URLSearchParams object using the given initializer.
58784 *
58785 * This is identical to `new URLSearchParams(init)` except it also
58786 * supports arrays as values in the object form of the initializer
58787 * instead of just strings. This is convenient when you need multiple
58788 * values for a given key, but don't want to use an array initializer.
58789 *
58790 * For example, instead of:
58791 *
58792 *   let searchParams = new URLSearchParams([
58793 *     ['sort', 'name'],
58794 *     ['sort', 'price']
58795 *   ]);
58796 *
58797 * you can do:
58798 *
58799 *   let searchParams = createSearchParams({
58800 *     sort: ['name', 'price']
58801 *   });
58802 */
58803function createSearchParams(init) {
58804  if (init === void 0) {
58805    init = "";
58806  }
58807  return new URLSearchParams(typeof init === "string" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo, key) => {
58808    let value = init[key];
58809    return memo.concat(Array.isArray(value) ? value.map(v => [key, v]) : [[key, value]]);
58810  }, []));
58811}
58812function getSearchParamsForLocation(locationSearch, defaultSearchParams) {
58813  let searchParams = createSearchParams(locationSearch);
58814  if (defaultSearchParams) {
58815    // Use `defaultSearchParams.forEach(...)` here instead of iterating of
58816    // `defaultSearchParams.keys()` to work-around a bug in Firefox related to
58817    // web extensions. Relevant Bugzilla tickets:
58818    // https://bugzilla.mozilla.org/show_bug.cgi?id=1414602
58819    // https://bugzilla.mozilla.org/show_bug.cgi?id=1023984
58820    defaultSearchParams.forEach((_, key) => {
58821      if (!searchParams.has(key)) {
58822        defaultSearchParams.getAll(key).forEach(value => {
58823          searchParams.append(key, value);
58824        });
58825      }
58826    });
58827  }
58828  return searchParams;
58829}
58830// One-time check for submitter support
58831let _formDataSupportsSubmitter = null;
58832function isFormDataSubmitterSupported() {
58833  if (_formDataSupportsSubmitter === null) {
58834    try {
58835      new FormData(document.createElement("form"),
58836      // @ts-expect-error if FormData supports the submitter parameter, this will throw
58837      0);
58838      _formDataSupportsSubmitter = false;
58839    } catch (e) {
58840      _formDataSupportsSubmitter = true;
58841    }
58842  }
58843  return _formDataSupportsSubmitter;
58844}
58845const supportedFormEncTypes = new Set(["application/x-www-form-urlencoded", "multipart/form-data", "text/plain"]);
58846function getFormEncType(encType) {
58847  if (encType != null && !supportedFormEncTypes.has(encType)) {
58848     true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "\"" + encType + "\" is not a valid `encType` for `<Form>`/`<fetcher.Form>` " + ("and will default to \"" + defaultEncType + "\"")) : 0;
58849    return null;
58850  }
58851  return encType;
58852}
58853function getFormSubmissionInfo(target, basename) {
58854  let method;
58855  let action;
58856  let encType;
58857  let formData;
58858  let body;
58859  if (isFormElement(target)) {
58860    // When grabbing the action from the element, it will have had the basename
58861    // prefixed to ensure non-JS scenarios work, so strip it since we'll
58862    // re-prefix in the router
58863    let attr = target.getAttribute("action");
58864    action = attr ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(attr, basename) : null;
58865    method = target.getAttribute("method") || defaultMethod;
58866    encType = getFormEncType(target.getAttribute("enctype")) || defaultEncType;
58867    formData = new FormData(target);
58868  } else if (isButtonElement(target) || isInputElement(target) && (target.type === "submit" || target.type === "image")) {
58869    let form = target.form;
58870    if (form == null) {
58871      throw new Error("Cannot submit a <button> or <input type=\"submit\"> without a <form>");
58872    }
58873    // <button>/<input type="submit"> may override attributes of <form>
58874    // When grabbing the action from the element, it will have had the basename
58875    // prefixed to ensure non-JS scenarios work, so strip it since we'll
58876    // re-prefix in the router
58877    let attr = target.getAttribute("formaction") || form.getAttribute("action");
58878    action = attr ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(attr, basename) : null;
58879    method = target.getAttribute("formmethod") || form.getAttribute("method") || defaultMethod;
58880    encType = getFormEncType(target.getAttribute("formenctype")) || getFormEncType(form.getAttribute("enctype")) || defaultEncType;
58881    // Build a FormData object populated from a form and submitter
58882    formData = new FormData(form, target);
58883    // If this browser doesn't support the `FormData(el, submitter)` format,
58884    // then tack on the submitter value at the end.  This is a lightweight
58885    // solution that is not 100% spec compliant.  For complete support in older
58886    // browsers, consider using the `formdata-submitter-polyfill` package
58887    if (!isFormDataSubmitterSupported()) {
58888      let {
58889        name,
58890        type,
58891        value
58892      } = target;
58893      if (type === "image") {
58894        let prefix = name ? name + "." : "";
58895        formData.append(prefix + "x", "0");
58896        formData.append(prefix + "y", "0");
58897      } else if (name) {
58898        formData.append(name, value);
58899      }
58900    }
58901  } else if (isHtmlElement(target)) {
58902    throw new Error("Cannot submit element that is not <form>, <button>, or " + "<input type=\"submit|image\">");
58903  } else {
58904    method = defaultMethod;
58905    action = null;
58906    encType = defaultEncType;
58907    body = target;
58908  }
58909  // Send body for <Form encType="text/plain" so we encode it into text
58910  if (formData && encType === "text/plain") {
58911    body = formData;
58912    formData = undefined;
58913  }
58914  return {
58915    action,
58916    method: method.toLowerCase(),
58917    encType,
58918    formData,
58919    body
58920  };
58921}
58922
58923const _excluded = ["onClick", "relative", "reloadDocument", "replace", "state", "target", "to", "preventScrollReset", "viewTransition"],
58924  _excluded2 = ["aria-current", "caseSensitive", "className", "end", "style", "to", "viewTransition", "children"],
58925  _excluded3 = ["fetcherKey", "navigate", "reloadDocument", "replace", "state", "method", "action", "onSubmit", "relative", "preventScrollReset", "viewTransition"];
58926// HEY YOU! DON'T TOUCH THIS VARIABLE!
58927//
58928// It is replaced with the proper version at build time via a babel plugin in
58929// the rollup config.
58930//
58931// Export a global property onto the window for React Router detection by the
58932// Core Web Vitals Technology Report.  This way they can configure the `wappalyzer`
58933// to detect and properly classify live websites as being built with React Router:
58934// https://github.com/HTTPArchive/wappalyzer/blob/main/src/technologies/r.json
58935const REACT_ROUTER_VERSION = "6";
58936try {
58937  window.__reactRouterVersion = REACT_ROUTER_VERSION;
58938} catch (e) {
58939  // no-op
58940}
58941function createBrowserRouter(routes, opts) {
58942  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createRouter)({
58943    basename: opts == null ? void 0 : opts.basename,
58944    future: _extends({}, opts == null ? void 0 : opts.future, {
58945      v7_prependBasename: true
58946    }),
58947    history: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createBrowserHistory)({
58948      window: opts == null ? void 0 : opts.window
58949    }),
58950    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),
58951    routes,
58952    mapRouteProperties: react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_mapRouteProperties,
58953    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
58954    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,
58955    window: opts == null ? void 0 : opts.window
58956  }).initialize();
58957}
58958function createHashRouter(routes, opts) {
58959  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createRouter)({
58960    basename: opts == null ? void 0 : opts.basename,
58961    future: _extends({}, opts == null ? void 0 : opts.future, {
58962      v7_prependBasename: true
58963    }),
58964    history: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createHashHistory)({
58965      window: opts == null ? void 0 : opts.window
58966    }),
58967    hydrationData: (opts == null ? void 0 : opts.hydrationData) || parseHydrationData(),
58968    routes,
58969    mapRouteProperties: react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_mapRouteProperties,
58970    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
58971    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation,
58972    window: opts == null ? void 0 : opts.window
58973  }).initialize();
58974}
58975function parseHydrationData() {
58976  var _window;
58977  let state = (_window = window) == null ? void 0 : _window.__staticRouterHydrationData;
58978  if (state && state.errors) {
58979    state = _extends({}, state, {
58980      errors: deserializeErrors(state.errors)
58981    });
58982  }
58983  return state;
58984}
58985function deserializeErrors(errors) {
58986  if (!errors) return null;
58987  let entries = Object.entries(errors);
58988  let serialized = {};
58989  for (let [key, val] of entries) {
58990    // Hey you!  If you change this, please change the corresponding logic in
58991    // serializeErrors in react-router-dom/server.tsx :)
58992    if (val && val.__type === "RouteErrorResponse") {
58993      serialized[key] = new react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_ErrorResponseImpl(val.status, val.statusText, val.data, val.internal === true);
58994    } else if (val && val.__type === "Error") {
58995      // Attempt to reconstruct the right type of Error (i.e., ReferenceError)
58996      if (val.__subType) {
58997        let ErrorConstructor = window[val.__subType];
58998        if (typeof ErrorConstructor === "function") {
58999          try {
59000            // @ts-expect-error
59001            let error = new ErrorConstructor(val.message);
59002            // Wipe away the client-side stack trace.  Nothing to fill it in with
59003            // because we don't serialize SSR stack traces for security reasons
59004            error.stack = "";
59005            serialized[key] = error;
59006          } catch (e) {
59007            // no-op - fall through and create a normal Error
59008          }
59009        }
59010      }
59011      if (serialized[key] == null) {
59012        let error = new Error(val.message);
59013        // Wipe away the client-side stack trace.  Nothing to fill it in with
59014        // because we don't serialize SSR stack traces for security reasons
59015        error.stack = "";
59016        serialized[key] = error;
59017      }
59018    } else {
59019      serialized[key] = val;
59020    }
59021  }
59022  return serialized;
59023}
59024const ViewTransitionContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({
59025  isTransitioning: false
59026});
59027if (true) {
59028  ViewTransitionContext.displayName = "ViewTransition";
59029}
59030const FetchersContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(new Map());
59031if (true) {
59032  FetchersContext.displayName = "Fetchers";
59033}
59034//#endregion
59035////////////////////////////////////////////////////////////////////////////////
59036//#region Components
59037////////////////////////////////////////////////////////////////////////////////
59038/**
59039  Webpack + React 17 fails to compile on any of the following because webpack
59040  complains that `startTransition` doesn't exist in `React`:
59041  * import { startTransition } from "react"
59042  * import * as React from from "react";
59043    "startTransition" in React ? React.startTransition(() => setState()) : setState()
59044  * import * as React from from "react";
59045    "startTransition" in React ? React["startTransition"](() => setState()) : setState()
59046
59047  Moving it to a constant such as the following solves the Webpack/React 17 issue:
59048  * import * as React from from "react";
59049    const START_TRANSITION = "startTransition";
59050    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()
59051
59052  However, that introduces webpack/terser minification issues in production builds
59053  in React 18 where minification/obfuscation ends up removing the call of
59054  React.startTransition entirely from the first half of the ternary.  Grabbing
59055  this exported reference once up front resolves that issue.
59056
59057  See https://github.com/remix-run/react-router/issues/10579
59058*/
59059const START_TRANSITION = "startTransition";
59060const startTransitionImpl = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[START_TRANSITION];
59061const FLUSH_SYNC = "flushSync";
59062const flushSyncImpl = /*#__PURE__*/ (react_dom__WEBPACK_IMPORTED_MODULE_1___namespace_cache || (react_dom__WEBPACK_IMPORTED_MODULE_1___namespace_cache = __webpack_require__.t(react_dom__WEBPACK_IMPORTED_MODULE_1__, 2)))[FLUSH_SYNC];
59063const USE_ID = "useId";
59064const useIdImpl = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[USE_ID];
59065function startTransitionSafe(cb) {
59066  if (startTransitionImpl) {
59067    startTransitionImpl(cb);
59068  } else {
59069    cb();
59070  }
59071}
59072function flushSyncSafe(cb) {
59073  if (flushSyncImpl) {
59074    flushSyncImpl(cb);
59075  } else {
59076    cb();
59077  }
59078}
59079class Deferred {
59080  constructor() {
59081    this.status = "pending";
59082    this.promise = new Promise((resolve, reject) => {
59083      this.resolve = value => {
59084        if (this.status === "pending") {
59085          this.status = "resolved";
59086          resolve(value);
59087        }
59088      };
59089      this.reject = reason => {
59090        if (this.status === "pending") {
59091          this.status = "rejected";
59092          reject(reason);
59093        }
59094      };
59095    });
59096  }
59097}
59098/**
59099 * Given a Remix Router instance, render the appropriate UI
59100 */
59101function RouterProvider(_ref) {
59102  let {
59103    fallbackElement,
59104    router,
59105    future
59106  } = _ref;
59107  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState(router.state);
59108  let [pendingState, setPendingState] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
59109  let [vtContext, setVtContext] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
59110    isTransitioning: false
59111  });
59112  let [renderDfd, setRenderDfd] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
59113  let [transition, setTransition] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
59114  let [interruption, setInterruption] = react__WEBPACK_IMPORTED_MODULE_0__.useState();
59115  let fetcherData = react__WEBPACK_IMPORTED_MODULE_0__.useRef(new Map());
59116  let {
59117    v7_startTransition
59118  } = future || {};
59119  let optInStartTransition = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(cb => {
59120    if (v7_startTransition) {
59121      startTransitionSafe(cb);
59122    } else {
59123      cb();
59124    }
59125  }, [v7_startTransition]);
59126  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((newState, _ref2) => {
59127    let {
59128      deletedFetchers,
59129      flushSync: flushSync,
59130      viewTransitionOpts: viewTransitionOpts
59131    } = _ref2;
59132    deletedFetchers.forEach(key => fetcherData.current.delete(key));
59133    newState.fetchers.forEach((fetcher, key) => {
59134      if (fetcher.data !== undefined) {
59135        fetcherData.current.set(key, fetcher.data);
59136      }
59137    });
59138    let isViewTransitionUnavailable = router.window == null || router.window.document == null || typeof router.window.document.startViewTransition !== "function";
59139    // If this isn't a view transition or it's not available in this browser,
59140    // just update and be done with it
59141    if (!viewTransitionOpts || isViewTransitionUnavailable) {
59142      if (flushSync) {
59143        flushSyncSafe(() => setStateImpl(newState));
59144      } else {
59145        optInStartTransition(() => setStateImpl(newState));
59146      }
59147      return;
59148    }
59149    // flushSync + startViewTransition
59150    if (flushSync) {
59151      // Flush through the context to mark DOM elements as transition=ing
59152      flushSyncSafe(() => {
59153        // Cancel any pending transitions
59154        if (transition) {
59155          renderDfd && renderDfd.resolve();
59156          transition.skipTransition();
59157        }
59158        setVtContext({
59159          isTransitioning: true,
59160          flushSync: true,
59161          currentLocation: viewTransitionOpts.currentLocation,
59162          nextLocation: viewTransitionOpts.nextLocation
59163        });
59164      });
59165      // Update the DOM
59166      let t = router.window.document.startViewTransition(() => {
59167        flushSyncSafe(() => setStateImpl(newState));
59168      });
59169      // Clean up after the animation completes
59170      t.finished.finally(() => {
59171        flushSyncSafe(() => {
59172          setRenderDfd(undefined);
59173          setTransition(undefined);
59174          setPendingState(undefined);
59175          setVtContext({
59176            isTransitioning: false
59177          });
59178        });
59179      });
59180      flushSyncSafe(() => setTransition(t));
59181      return;
59182    }
59183    // startTransition + startViewTransition
59184    if (transition) {
59185      // Interrupting an in-progress transition, cancel and let everything flush
59186      // out, and then kick off a new transition from the interruption state
59187      renderDfd && renderDfd.resolve();
59188      transition.skipTransition();
59189      setInterruption({
59190        state: newState,
59191        currentLocation: viewTransitionOpts.currentLocation,
59192        nextLocation: viewTransitionOpts.nextLocation
59193      });
59194    } else {
59195      // Completed navigation update with opted-in view transitions, let 'er rip
59196      setPendingState(newState);
59197      setVtContext({
59198        isTransitioning: true,
59199        flushSync: false,
59200        currentLocation: viewTransitionOpts.currentLocation,
59201        nextLocation: viewTransitionOpts.nextLocation
59202      });
59203    }
59204  }, [router.window, transition, renderDfd, fetcherData, optInStartTransition]);
59205  // Need to use a layout effect here so we are subscribed early enough to
59206  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)
59207  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
59208  // When we start a view transition, create a Deferred we can use for the
59209  // eventual "completed" render
59210  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59211    if (vtContext.isTransitioning && !vtContext.flushSync) {
59212      setRenderDfd(new Deferred());
59213    }
59214  }, [vtContext]);
59215  // Once the deferred is created, kick off startViewTransition() to update the
59216  // DOM and then wait on the Deferred to resolve (indicating the DOM update has
59217  // happened)
59218  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59219    if (renderDfd && pendingState && router.window) {
59220      let newState = pendingState;
59221      let renderPromise = renderDfd.promise;
59222      let transition = router.window.document.startViewTransition(async () => {
59223        optInStartTransition(() => setStateImpl(newState));
59224        await renderPromise;
59225      });
59226      transition.finished.finally(() => {
59227        setRenderDfd(undefined);
59228        setTransition(undefined);
59229        setPendingState(undefined);
59230        setVtContext({
59231          isTransitioning: false
59232        });
59233      });
59234      setTransition(transition);
59235    }
59236  }, [optInStartTransition, pendingState, renderDfd, router.window]);
59237  // When the new location finally renders and is committed to the DOM, this
59238  // effect will run to resolve the transition
59239  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59240    if (renderDfd && pendingState && state.location.key === pendingState.location.key) {
59241      renderDfd.resolve();
59242    }
59243  }, [renderDfd, transition, state.location, pendingState]);
59244  // If we get interrupted with a new navigation during a transition, we skip
59245  // the active transition, let it cleanup, then kick it off again here
59246  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59247    if (!vtContext.isTransitioning && interruption) {
59248      setPendingState(interruption.state);
59249      setVtContext({
59250        isTransitioning: true,
59251        flushSync: false,
59252        currentLocation: interruption.currentLocation,
59253        nextLocation: interruption.nextLocation
59254      });
59255      setInterruption(undefined);
59256    }
59257  }, [vtContext.isTransitioning, interruption]);
59258  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59259     true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(fallbackElement == null || !router.future.v7_partialHydration, "`<RouterProvider fallbackElement>` is deprecated when using " + "`v7_partialHydration`, use a `HydrateFallback` component instead") : 0;
59260    // Only log this once on initial mount
59261    // eslint-disable-next-line react-hooks/exhaustive-deps
59262  }, []);
59263  let navigator = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
59264    return {
59265      createHref: router.createHref,
59266      encodeLocation: router.encodeLocation,
59267      go: n => router.navigate(n),
59268      push: (to, state, opts) => router.navigate(to, {
59269        state,
59270        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
59271      }),
59272      replace: (to, state, opts) => router.navigate(to, {
59273        replace: true,
59274        state,
59275        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
59276      })
59277    };
59278  }, [router]);
59279  let basename = router.basename || "/";
59280  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
59281    router,
59282    navigator,
59283    static: false,
59284    basename
59285  }), [router, navigator, basename]);
59286  let routerFuture = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
59287    v7_relativeSplatPath: router.future.v7_relativeSplatPath
59288  }), [router.future.v7_relativeSplatPath]);
59289  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future, router.future), [future, router.future]);
59290  // The fragment and {null} here are important!  We need them to keep React 18's
59291  // useId happy when we are server-rendering since we may have a <script> here
59292  // containing the hydrated server-side staticContext (from StaticRouterProvider).
59293  // useId relies on the component tree structure to generate deterministic id's
59294  // so we need to ensure it remains the same on the client even though
59295  // we don't need the <script> tag
59296  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext.Provider, {
59297    value: dataRouterContext
59298  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext.Provider, {
59299    value: state
59300  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(FetchersContext.Provider, {
59301    value: fetcherData.current
59302  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ViewTransitionContext.Provider, {
59303    value: vtContext
59304  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
59305    basename: basename,
59306    location: state.location,
59307    navigationType: state.historyAction,
59308    navigator: navigator,
59309    future: routerFuture
59310  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(MemoizedDataRoutes, {
59311    routes: router.routes,
59312    future: router.future,
59313    state: state
59314  }) : fallbackElement))))), null);
59315}
59316// Memoize to avoid re-renders when updating `ViewTransitionContext`
59317const MemoizedDataRoutes = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.memo(DataRoutes);
59318function DataRoutes(_ref3) {
59319  let {
59320    routes,
59321    future,
59322    state
59323  } = _ref3;
59324  return (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRoutesImpl)(routes, undefined, state, future);
59325}
59326/**
59327 * A `<Router>` for use in web browsers. Provides the cleanest URLs.
59328 */
59329function BrowserRouter(_ref4) {
59330  let {
59331    basename,
59332    children,
59333    future,
59334    window
59335  } = _ref4;
59336  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
59337  if (historyRef.current == null) {
59338    historyRef.current = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createBrowserHistory)({
59339      window,
59340      v5Compat: true
59341    });
59342  }
59343  let history = historyRef.current;
59344  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
59345    action: history.action,
59346    location: history.location
59347  });
59348  let {
59349    v7_startTransition
59350  } = future || {};
59351  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
59352    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
59353  }, [setStateImpl, v7_startTransition]);
59354  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
59355  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
59356  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
59357    basename: basename,
59358    children: children,
59359    location: state.location,
59360    navigationType: state.action,
59361    navigator: history,
59362    future: future
59363  });
59364}
59365/**
59366 * A `<Router>` for use in web browsers. Stores the location in the hash
59367 * portion of the URL so it is not sent to the server.
59368 */
59369function HashRouter(_ref5) {
59370  let {
59371    basename,
59372    children,
59373    future,
59374    window
59375  } = _ref5;
59376  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
59377  if (historyRef.current == null) {
59378    historyRef.current = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createHashHistory)({
59379      window,
59380      v5Compat: true
59381    });
59382  }
59383  let history = historyRef.current;
59384  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
59385    action: history.action,
59386    location: history.location
59387  });
59388  let {
59389    v7_startTransition
59390  } = future || {};
59391  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
59392    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
59393  }, [setStateImpl, v7_startTransition]);
59394  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
59395  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
59396  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
59397    basename: basename,
59398    children: children,
59399    location: state.location,
59400    navigationType: state.action,
59401    navigator: history,
59402    future: future
59403  });
59404}
59405/**
59406 * A `<Router>` that accepts a pre-instantiated history object. It's important
59407 * to note that using your own history object is highly discouraged and may add
59408 * two versions of the history library to your bundles unless you use the same
59409 * version of the history library that React Router uses internally.
59410 */
59411function HistoryRouter(_ref6) {
59412  let {
59413    basename,
59414    children,
59415    future,
59416    history
59417  } = _ref6;
59418  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
59419    action: history.action,
59420    location: history.location
59421  });
59422  let {
59423    v7_startTransition
59424  } = future || {};
59425  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
59426    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
59427  }, [setStateImpl, v7_startTransition]);
59428  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
59429  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_logV6DeprecationWarnings)(future), [future]);
59430  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react_router__WEBPACK_IMPORTED_MODULE_3__.Router, {
59431    basename: basename,
59432    children: children,
59433    location: state.location,
59434    navigationType: state.action,
59435    navigator: history,
59436    future: future
59437  });
59438}
59439if (true) {
59440  HistoryRouter.displayName = "unstable_HistoryRouter";
59441}
59442const isBrowser = typeof window !== "undefined" && typeof window.document !== "undefined" && typeof window.document.createElement !== "undefined";
59443const ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\/\/)/i;
59444/**
59445 * The public API for rendering a history-aware `<a>`.
59446 */
59447const Link = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function LinkWithRef(_ref7, ref) {
59448  let {
59449      onClick,
59450      relative,
59451      reloadDocument,
59452      replace,
59453      state,
59454      target,
59455      to,
59456      preventScrollReset,
59457      viewTransition
59458    } = _ref7,
59459    rest = _objectWithoutPropertiesLoose(_ref7, _excluded);
59460  let {
59461    basename
59462  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
59463  // Rendered into <a href> for absolute URLs
59464  let absoluteHref;
59465  let isExternal = false;
59466  if (typeof to === "string" && ABSOLUTE_URL_REGEX.test(to)) {
59467    // Render the absolute href server- and client-side
59468    absoluteHref = to;
59469    // Only check for external origins client-side
59470    if (isBrowser) {
59471      try {
59472        let currentUrl = new URL(window.location.href);
59473        let targetUrl = to.startsWith("//") ? new URL(currentUrl.protocol + to) : new URL(to);
59474        let path = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(targetUrl.pathname, basename);
59475        if (targetUrl.origin === currentUrl.origin && path != null) {
59476          // Strip the protocol/origin/basename for same-origin absolute URLs
59477          to = path + targetUrl.search + targetUrl.hash;
59478        } else {
59479          isExternal = true;
59480        }
59481      } catch (e) {
59482        // We can't do external URL detection without a valid URL
59483         true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "<Link to=\"" + to + "\"> contains an invalid URL which will probably break " + "when clicked - please update to a valid URL path.") : 0;
59484      }
59485    }
59486  }
59487  // Rendered into <a href> for relative URLs
59488  let href = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useHref)(to, {
59489    relative
59490  });
59491  let internalOnClick = useLinkClickHandler(to, {
59492    replace,
59493    state,
59494    target,
59495    preventScrollReset,
59496    relative,
59497    viewTransition
59498  });
59499  function handleClick(event) {
59500    if (onClick) onClick(event);
59501    if (!event.defaultPrevented) {
59502      internalOnClick(event);
59503    }
59504  }
59505  return (
59506    /*#__PURE__*/
59507    // eslint-disable-next-line jsx-a11y/anchor-has-content
59508    react__WEBPACK_IMPORTED_MODULE_0__.createElement("a", _extends({}, rest, {
59509      href: absoluteHref || href,
59510      onClick: isExternal || reloadDocument ? onClick : handleClick,
59511      ref: ref,
59512      target: target
59513    }))
59514  );
59515});
59516if (true) {
59517  Link.displayName = "Link";
59518}
59519/**
59520 * A `<Link>` wrapper that knows if it's "active" or not.
59521 */
59522const NavLink = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef(function NavLinkWithRef(_ref8, ref) {
59523  let {
59524      "aria-current": ariaCurrentProp = "page",
59525      caseSensitive = false,
59526      className: classNameProp = "",
59527      end = false,
59528      style: styleProp,
59529      to,
59530      viewTransition,
59531      children
59532    } = _ref8,
59533    rest = _objectWithoutPropertiesLoose(_ref8, _excluded2);
59534  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
59535    relative: rest.relative
59536  });
59537  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
59538  let routerState = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext);
59539  let {
59540    navigator,
59541    basename
59542  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
59543  let isTransitioning = routerState != null &&
59544  // Conditional usage is OK here because the usage of a data router is static
59545  // eslint-disable-next-line react-hooks/rules-of-hooks
59546  useViewTransitionState(path) && viewTransition === true;
59547  let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;
59548  let locationPathname = location.pathname;
59549  let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;
59550  if (!caseSensitive) {
59551    locationPathname = locationPathname.toLowerCase();
59552    nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;
59553    toPathname = toPathname.toLowerCase();
59554  }
59555  if (nextLocationPathname && basename) {
59556    nextLocationPathname = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(nextLocationPathname, basename) || nextLocationPathname;
59557  }
59558  // If the `to` has a trailing slash, look at that exact spot.  Otherwise,
59559  // we're looking for a slash _after_ what's in `to`.  For example:
59560  //
59561  // <NavLink to="/users"> and <NavLink to="/users/">
59562  // both want to look for a / at index 6 to match URL `/users/matt`
59563  const endSlashPosition = toPathname !== "/" && toPathname.endsWith("/") ? toPathname.length - 1 : toPathname.length;
59564  let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === "/";
59565  let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === "/");
59566  let renderProps = {
59567    isActive,
59568    isPending,
59569    isTransitioning
59570  };
59571  let ariaCurrent = isActive ? ariaCurrentProp : undefined;
59572  let className;
59573  if (typeof classNameProp === "function") {
59574    className = classNameProp(renderProps);
59575  } else {
59576    // If the className prop is not a function, we use a default `active`
59577    // class for <NavLink />s that are active. In v5 `active` was the default
59578    // value for `activeClassName`, but we are removing that API and can still
59579    // use the old default behavior for a cleaner upgrade path and keep the
59580    // simple styling rules working as they currently do.
59581    className = [classNameProp, isActive ? "active" : null, isPending ? "pending" : null, isTransitioning ? "transitioning" : null].filter(Boolean).join(" ");
59582  }
59583  let style = typeof styleProp === "function" ? styleProp(renderProps) : styleProp;
59584  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Link, _extends({}, rest, {
59585    "aria-current": ariaCurrent,
59586    className: className,
59587    ref: ref,
59588    style: style,
59589    to: to,
59590    viewTransition: viewTransition
59591  }), typeof children === "function" ? children(renderProps) : children);
59592});
59593if (true) {
59594  NavLink.displayName = "NavLink";
59595}
59596/**
59597 * A `@remix-run/router`-aware `<form>`. It behaves like a normal form except
59598 * that the interaction with the server is with `fetch` instead of new document
59599 * requests, allowing components to add nicer UX to the page as the form is
59600 * submitted and returns with data.
59601 */
59602const Form = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((_ref9, forwardedRef) => {
59603  let {
59604      fetcherKey,
59605      navigate,
59606      reloadDocument,
59607      replace,
59608      state,
59609      method = defaultMethod,
59610      action,
59611      onSubmit,
59612      relative,
59613      preventScrollReset,
59614      viewTransition
59615    } = _ref9,
59616    props = _objectWithoutPropertiesLoose(_ref9, _excluded3);
59617  let submit = useSubmit();
59618  let formAction = useFormAction(action, {
59619    relative
59620  });
59621  let formMethod = method.toLowerCase() === "get" ? "get" : "post";
59622  let submitHandler = event => {
59623    onSubmit && onSubmit(event);
59624    if (event.defaultPrevented) return;
59625    event.preventDefault();
59626    let submitter = event.nativeEvent.submitter;
59627    let submitMethod = (submitter == null ? void 0 : submitter.getAttribute("formmethod")) || method;
59628    submit(submitter || event.currentTarget, {
59629      fetcherKey,
59630      method: submitMethod,
59631      navigate,
59632      replace,
59633      state,
59634      relative,
59635      preventScrollReset,
59636      viewTransition
59637    });
59638  };
59639  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("form", _extends({
59640    ref: forwardedRef,
59641    method: formMethod,
59642    action: formAction,
59643    onSubmit: reloadDocument ? onSubmit : submitHandler
59644  }, props));
59645});
59646if (true) {
59647  Form.displayName = "Form";
59648}
59649/**
59650 * This component will emulate the browser's scroll restoration on location
59651 * changes.
59652 */
59653function ScrollRestoration(_ref10) {
59654  let {
59655    getKey,
59656    storageKey
59657  } = _ref10;
59658  useScrollRestoration({
59659    getKey,
59660    storageKey
59661  });
59662  return null;
59663}
59664if (true) {
59665  ScrollRestoration.displayName = "ScrollRestoration";
59666}
59667//#endregion
59668////////////////////////////////////////////////////////////////////////////////
59669//#region Hooks
59670////////////////////////////////////////////////////////////////////////////////
59671var DataRouterHook;
59672(function (DataRouterHook) {
59673  DataRouterHook["UseScrollRestoration"] = "useScrollRestoration";
59674  DataRouterHook["UseSubmit"] = "useSubmit";
59675  DataRouterHook["UseSubmitFetcher"] = "useSubmitFetcher";
59676  DataRouterHook["UseFetcher"] = "useFetcher";
59677  DataRouterHook["useViewTransitionState"] = "useViewTransitionState";
59678})(DataRouterHook || (DataRouterHook = {}));
59679var DataRouterStateHook;
59680(function (DataRouterStateHook) {
59681  DataRouterStateHook["UseFetcher"] = "useFetcher";
59682  DataRouterStateHook["UseFetchers"] = "useFetchers";
59683  DataRouterStateHook["UseScrollRestoration"] = "useScrollRestoration";
59684})(DataRouterStateHook || (DataRouterStateHook = {}));
59685// Internal hooks
59686function getDataRouterConsoleError(hookName) {
59687  return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
59688}
59689function useDataRouterContext(hookName) {
59690  let ctx = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterContext);
59691  !ctx ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
59692  return ctx;
59693}
59694function useDataRouterState(hookName) {
59695  let state = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_DataRouterStateContext);
59696  !state ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
59697  return state;
59698}
59699// External hooks
59700/**
59701 * Handles the click behavior for router `<Link>` components. This is useful if
59702 * you need to create custom `<Link>` components with the same click behavior we
59703 * use in our exported `<Link>`.
59704 */
59705function useLinkClickHandler(to, _temp) {
59706  let {
59707    target,
59708    replace: replaceProp,
59709    state,
59710    preventScrollReset,
59711    relative,
59712    viewTransition
59713  } = _temp === void 0 ? {} : _temp;
59714  let navigate = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();
59715  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
59716  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
59717    relative
59718  });
59719  return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(event => {
59720    if (shouldProcessLinkClick(event, target)) {
59721      event.preventDefault();
59722      // If the URL hasn't changed, a regular <a> will do a replace instead of
59723      // a push, so do the same here unless the replace prop is explicitly set
59724      let replace = replaceProp !== undefined ? replaceProp : (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(location) === (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(path);
59725      navigate(to, {
59726        replace,
59727        state,
59728        preventScrollReset,
59729        relative,
59730        viewTransition
59731      });
59732    }
59733  }, [location, navigate, path, replaceProp, state, target, to, preventScrollReset, relative, viewTransition]);
59734}
59735/**
59736 * A convenient wrapper for reading and writing search parameters via the
59737 * URLSearchParams interface.
59738 */
59739function useSearchParams(defaultInit) {
59740   true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(typeof URLSearchParams !== "undefined", "You cannot use the `useSearchParams` hook in a browser that does not " + "support the URLSearchParams API. If you need to support Internet " + "Explorer 11, we recommend you load a polyfill such as " + "https://github.com/ungap/url-search-params.") : 0;
59741  let defaultSearchParamsRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(createSearchParams(defaultInit));
59742  let hasSetSearchParamsRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
59743  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
59744  let searchParams = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() =>
59745  // Only merge in the defaults if we haven't yet called setSearchParams.
59746  // Once we call that we want those to take precedence, otherwise you can't
59747  // remove a param with setSearchParams({}) if it has an initial value
59748  getSearchParamsForLocation(location.search, hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current), [location.search]);
59749  let navigate = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigate)();
59750  let setSearchParams = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((nextInit, navigateOptions) => {
59751    const newSearchParams = createSearchParams(typeof nextInit === "function" ? nextInit(searchParams) : nextInit);
59752    hasSetSearchParamsRef.current = true;
59753    navigate("?" + newSearchParams, navigateOptions);
59754  }, [navigate, searchParams]);
59755  return [searchParams, setSearchParams];
59756}
59757function validateClientSideSubmission() {
59758  if (typeof document === "undefined") {
59759    throw new Error("You are calling submit during the server render. " + "Try calling submit within a `useEffect` or callback instead.");
59760  }
59761}
59762let fetcherId = 0;
59763let getUniqueFetcherId = () => "__" + String(++fetcherId) + "__";
59764/**
59765 * Returns a function that may be used to programmatically submit a form (or
59766 * some arbitrary data) to the server.
59767 */
59768function useSubmit() {
59769  let {
59770    router
59771  } = useDataRouterContext(DataRouterHook.UseSubmit);
59772  let {
59773    basename
59774  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
59775  let currentRouteId = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_useRouteId)();
59776  return react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (target, options) {
59777    if (options === void 0) {
59778      options = {};
59779    }
59780    validateClientSideSubmission();
59781    let {
59782      action,
59783      method,
59784      encType,
59785      formData,
59786      body
59787    } = getFormSubmissionInfo(target, basename);
59788    if (options.navigate === false) {
59789      let key = options.fetcherKey || getUniqueFetcherId();
59790      router.fetch(key, currentRouteId, options.action || action, {
59791        preventScrollReset: options.preventScrollReset,
59792        formData,
59793        body,
59794        formMethod: options.method || method,
59795        formEncType: options.encType || encType,
59796        flushSync: options.flushSync
59797      });
59798    } else {
59799      router.navigate(options.action || action, {
59800        preventScrollReset: options.preventScrollReset,
59801        formData,
59802        body,
59803        formMethod: options.method || method,
59804        formEncType: options.encType || encType,
59805        replace: options.replace,
59806        state: options.state,
59807        fromRouteId: currentRouteId,
59808        flushSync: options.flushSync,
59809        viewTransition: options.viewTransition
59810      });
59811    }
59812  }, [router, basename, currentRouteId]);
59813}
59814// v7: Eventually we should deprecate this entirely in favor of using the
59815// router method directly?
59816function useFormAction(action, _temp2) {
59817  let {
59818    relative
59819  } = _temp2 === void 0 ? {} : _temp2;
59820  let {
59821    basename
59822  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
59823  let routeContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext);
59824  !routeContext ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFormAction must be used inside a RouteContext") : 0 : void 0;
59825  let [match] = routeContext.matches.slice(-1);
59826  // Shallow clone path so we can modify it below, otherwise we modify the
59827  // object referenced by useMemo inside useResolvedPath
59828  let path = _extends({}, (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(action ? action : ".", {
59829    relative
59830  }));
59831  // If no action was specified, browsers will persist current search params
59832  // when determining the path, so match that behavior
59833  // https://github.com/remix-run/remix/issues/927
59834  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
59835  if (action == null) {
59836    // Safe to write to this directly here since if action was undefined, we
59837    // would have called useResolvedPath(".") which will never include a search
59838    path.search = location.search;
59839    // When grabbing search params from the URL, remove any included ?index param
59840    // since it might not apply to our contextual route.  We add it back based
59841    // on match.route.index below
59842    let params = new URLSearchParams(path.search);
59843    let indexValues = params.getAll("index");
59844    let hasNakedIndexParam = indexValues.some(v => v === "");
59845    if (hasNakedIndexParam) {
59846      params.delete("index");
59847      indexValues.filter(v => v).forEach(v => params.append("index", v));
59848      let qs = params.toString();
59849      path.search = qs ? "?" + qs : "";
59850    }
59851  }
59852  if ((!action || action === ".") && match.route.index) {
59853    path.search = path.search ? path.search.replace(/^\?/, "?index&") : "?index";
59854  }
59855  // If we're operating within a basename, prepend it to the pathname prior
59856  // to creating the form action.  If this is a root navigation, then just use
59857  // the raw basename which allows the basename to have full control over the
59858  // presence of a trailing slash on root actions
59859  if (basename !== "/") {
59860    path.pathname = path.pathname === "/" ? basename : (0,react_router__WEBPACK_IMPORTED_MODULE_2__.joinPaths)([basename, path.pathname]);
59861  }
59862  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.createPath)(path);
59863}
59864// TODO: (v7) Change the useFetcher generic default from `any` to `unknown`
59865/**
59866 * Interacts with route loaders and actions without causing a navigation. Great
59867 * for any interaction that stays on the same page.
59868 */
59869function useFetcher(_temp3) {
59870  var _route$matches;
59871  let {
59872    key
59873  } = _temp3 === void 0 ? {} : _temp3;
59874  let {
59875    router
59876  } = useDataRouterContext(DataRouterHook.UseFetcher);
59877  let state = useDataRouterState(DataRouterStateHook.UseFetcher);
59878  let fetcherData = react__WEBPACK_IMPORTED_MODULE_0__.useContext(FetchersContext);
59879  let route = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_RouteContext);
59880  let routeId = (_route$matches = route.matches[route.matches.length - 1]) == null ? void 0 : _route$matches.route.id;
59881  !fetcherData ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher must be used inside a FetchersContext") : 0 : void 0;
59882  !route ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher must be used inside a RouteContext") : 0 : void 0;
59883  !(routeId != null) ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "useFetcher can only be used on routes that contain a unique \"id\"") : 0 : void 0;
59884  // Fetcher key handling
59885  // OK to call conditionally to feature detect `useId`
59886  // eslint-disable-next-line react-hooks/rules-of-hooks
59887  let defaultKey = useIdImpl ? useIdImpl() : "";
59888  let [fetcherKey, setFetcherKey] = react__WEBPACK_IMPORTED_MODULE_0__.useState(key || defaultKey);
59889  if (key && key !== fetcherKey) {
59890    setFetcherKey(key);
59891  } else if (!fetcherKey) {
59892    // We will only fall through here when `useId` is not available
59893    setFetcherKey(getUniqueFetcherId());
59894  }
59895  // Registration/cleanup
59896  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59897    router.getFetcher(fetcherKey);
59898    return () => {
59899      // Tell the router we've unmounted - if v7_fetcherPersist is enabled this
59900      // will not delete immediately but instead queue up a delete after the
59901      // fetcher returns to an `idle` state
59902      router.deleteFetcher(fetcherKey);
59903    };
59904  }, [router, fetcherKey]);
59905  // Fetcher additions
59906  let load = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((href, opts) => {
59907    !routeId ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "No routeId available for fetcher.load()") : 0 : void 0;
59908    router.fetch(fetcherKey, routeId, href, opts);
59909  }, [fetcherKey, routeId, router]);
59910  let submitImpl = useSubmit();
59911  let submit = react__WEBPACK_IMPORTED_MODULE_0__.useCallback((target, opts) => {
59912    submitImpl(target, _extends({}, opts, {
59913      navigate: false,
59914      fetcherKey
59915    }));
59916  }, [fetcherKey, submitImpl]);
59917  let FetcherForm = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
59918    let FetcherForm = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.forwardRef((props, ref) => {
59919      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Form, _extends({}, props, {
59920        navigate: false,
59921        fetcherKey: fetcherKey,
59922        ref: ref
59923      }));
59924    });
59925    if (true) {
59926      FetcherForm.displayName = "fetcher.Form";
59927    }
59928    return FetcherForm;
59929  }, [fetcherKey]);
59930  // Exposed FetcherWithComponents
59931  let fetcher = state.fetchers.get(fetcherKey) || react_router__WEBPACK_IMPORTED_MODULE_2__.IDLE_FETCHER;
59932  let data = fetcherData.get(fetcherKey);
59933  let fetcherWithComponents = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => _extends({
59934    Form: FetcherForm,
59935    submit,
59936    load
59937  }, fetcher, {
59938    data
59939  }), [FetcherForm, submit, load, fetcher, data]);
59940  return fetcherWithComponents;
59941}
59942/**
59943 * Provides all fetchers currently on the page. Useful for layouts and parent
59944 * routes that need to provide pending/optimistic UI regarding the fetch.
59945 */
59946function useFetchers() {
59947  let state = useDataRouterState(DataRouterStateHook.UseFetchers);
59948  return Array.from(state.fetchers.entries()).map(_ref11 => {
59949    let [key, fetcher] = _ref11;
59950    return _extends({}, fetcher, {
59951      key
59952    });
59953  });
59954}
59955const SCROLL_RESTORATION_STORAGE_KEY = "react-router-scroll-positions";
59956let savedScrollPositions = {};
59957/**
59958 * When rendered inside a RouterProvider, will restore scroll positions on navigations
59959 */
59960function useScrollRestoration(_temp4) {
59961  let {
59962    getKey,
59963    storageKey
59964  } = _temp4 === void 0 ? {} : _temp4;
59965  let {
59966    router
59967  } = useDataRouterContext(DataRouterHook.UseScrollRestoration);
59968  let {
59969    restoreScrollPosition,
59970    preventScrollReset
59971  } = useDataRouterState(DataRouterStateHook.UseScrollRestoration);
59972  let {
59973    basename
59974  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(react_router__WEBPACK_IMPORTED_MODULE_3__.UNSAFE_NavigationContext);
59975  let location = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useLocation)();
59976  let matches = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useMatches)();
59977  let navigation = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useNavigation)();
59978  // Trigger manual scroll restoration while we're active
59979  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
59980    window.history.scrollRestoration = "manual";
59981    return () => {
59982      window.history.scrollRestoration = "auto";
59983    };
59984  }, []);
59985  // Save positions on pagehide
59986  usePageHide(react__WEBPACK_IMPORTED_MODULE_0__.useCallback(() => {
59987    if (navigation.state === "idle") {
59988      let key = (getKey ? getKey(location, matches) : null) || location.key;
59989      savedScrollPositions[key] = window.scrollY;
59990    }
59991    try {
59992      sessionStorage.setItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY, JSON.stringify(savedScrollPositions));
59993    } catch (error) {
59994       true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_warning)(false, "Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (" + error + ").") : 0;
59995    }
59996    window.history.scrollRestoration = "auto";
59997  }, [storageKey, getKey, navigation.state, location, matches]));
59998  // Read in any saved scroll locations
59999  if (typeof document !== "undefined") {
60000    // eslint-disable-next-line react-hooks/rules-of-hooks
60001    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
60002      try {
60003        let sessionPositions = sessionStorage.getItem(storageKey || SCROLL_RESTORATION_STORAGE_KEY);
60004        if (sessionPositions) {
60005          savedScrollPositions = JSON.parse(sessionPositions);
60006        }
60007      } catch (e) {
60008        // no-op, use default empty object
60009      }
60010    }, [storageKey]);
60011    // Enable scroll restoration in the router
60012    // eslint-disable-next-line react-hooks/rules-of-hooks
60013    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
60014      let getKeyWithoutBasename = getKey && basename !== "/" ? (location, matches) => getKey( // Strip the basename to match useLocation()
60015      _extends({}, location, {
60016        pathname: (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(location.pathname, basename) || location.pathname
60017      }), matches) : getKey;
60018      let disableScrollRestoration = router == null ? void 0 : router.enableScrollRestoration(savedScrollPositions, () => window.scrollY, getKeyWithoutBasename);
60019      return () => disableScrollRestoration && disableScrollRestoration();
60020    }, [router, basename, getKey]);
60021    // Restore scrolling when state.restoreScrollPosition changes
60022    // eslint-disable-next-line react-hooks/rules-of-hooks
60023    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => {
60024      // Explicit false means don't do anything (used for submissions)
60025      if (restoreScrollPosition === false) {
60026        return;
60027      }
60028      // been here before, scroll to it
60029      if (typeof restoreScrollPosition === "number") {
60030        window.scrollTo(0, restoreScrollPosition);
60031        return;
60032      }
60033      // try to scroll to the hash
60034      if (location.hash) {
60035        let el = document.getElementById(decodeURIComponent(location.hash.slice(1)));
60036        if (el) {
60037          el.scrollIntoView();
60038          return;
60039        }
60040      }
60041      // Don't reset if this navigation opted out
60042      if (preventScrollReset === true) {
60043        return;
60044      }
60045      // otherwise go to the top on new locations
60046      window.scrollTo(0, 0);
60047    }, [location, restoreScrollPosition, preventScrollReset]);
60048  }
60049}
60050/**
60051 * Setup a callback to be fired on the window's `beforeunload` event. This is
60052 * useful for saving some data to `window.localStorage` just before the page
60053 * refreshes.
60054 *
60055 * Note: The `callback` argument should be a function created with
60056 * `React.useCallback()`.
60057 */
60058function useBeforeUnload(callback, options) {
60059  let {
60060    capture
60061  } = options || {};
60062  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
60063    let opts = capture != null ? {
60064      capture
60065    } : undefined;
60066    window.addEventListener("beforeunload", callback, opts);
60067    return () => {
60068      window.removeEventListener("beforeunload", callback, opts);
60069    };
60070  }, [callback, capture]);
60071}
60072/**
60073 * Setup a callback to be fired on the window's `pagehide` event. This is
60074 * useful for saving some data to `window.localStorage` just before the page
60075 * refreshes.  This event is better supported than beforeunload across browsers.
60076 *
60077 * Note: The `callback` argument should be a function created with
60078 * `React.useCallback()`.
60079 */
60080function usePageHide(callback, options) {
60081  let {
60082    capture
60083  } = options || {};
60084  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
60085    let opts = capture != null ? {
60086      capture
60087    } : undefined;
60088    window.addEventListener("pagehide", callback, opts);
60089    return () => {
60090      window.removeEventListener("pagehide", callback, opts);
60091    };
60092  }, [callback, capture]);
60093}
60094/**
60095 * Wrapper around useBlocker to show a window.confirm prompt to users instead
60096 * of building a custom UI with useBlocker.
60097 *
60098 * Warning: This has *a lot of rough edges* and behaves very differently (and
60099 * very incorrectly in some cases) across browsers if user click addition
60100 * back/forward navigations while the confirm is open.  Use at your own risk.
60101 */
60102function usePrompt(_ref12) {
60103  let {
60104    when,
60105    message
60106  } = _ref12;
60107  let blocker = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useBlocker)(when);
60108  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
60109    if (blocker.state === "blocked") {
60110      let proceed = window.confirm(message);
60111      if (proceed) {
60112        // This timeout is needed to avoid a weird "race" on POP navigations
60113        // between the `window.history` revert navigation and the result of
60114        // `window.confirm`
60115        setTimeout(blocker.proceed, 0);
60116      } else {
60117        blocker.reset();
60118      }
60119    }
60120  }, [blocker, message]);
60121  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
60122    if (blocker.state === "blocked" && !when) {
60123      blocker.reset();
60124    }
60125  }, [blocker, when]);
60126}
60127/**
60128 * Return a boolean indicating if there is an active view transition to the
60129 * given href.  You can use this value to render CSS classes or viewTransitionName
60130 * styles onto your elements
60131 *
60132 * @param href The destination href
60133 * @param [opts.relative] Relative routing type ("route" | "path")
60134 */
60135function useViewTransitionState(to, opts) {
60136  if (opts === void 0) {
60137    opts = {};
60138  }
60139  let vtContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(ViewTransitionContext);
60140  !(vtContext != null) ?  true ? (0,react_router__WEBPACK_IMPORTED_MODULE_2__.UNSAFE_invariant)(false, "`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`.  " + "Did you accidentally import `RouterProvider` from `react-router`?") : 0 : void 0;
60141  let {
60142    basename
60143  } = useDataRouterContext(DataRouterHook.useViewTransitionState);
60144  let path = (0,react_router__WEBPACK_IMPORTED_MODULE_3__.useResolvedPath)(to, {
60145    relative: opts.relative
60146  });
60147  if (!vtContext.isTransitioning) {
60148    return false;
60149  }
60150  let currentPath = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;
60151  let nextPath = (0,react_router__WEBPACK_IMPORTED_MODULE_2__.stripBasename)(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;
60152  // Transition is active if we're going to or coming from the indicated
60153  // destination.  This ensures that other PUSH navigations that reverse
60154  // an indicated transition apply.  I.e., on the list view you have:
60155  //
60156  //   <NavLink to="/details/1" viewTransition>
60157  //
60158  // If you click the breadcrumb back to the list view:
60159  //
60160  //   <NavLink to="/list" viewTransition>
60161  //
60162  // We should apply the transition because it's indicated as active going
60163  // from /list -> /details/1 and therefore should be active on the reverse
60164  // (even though this isn't strictly a POP reverse)
60165  return (0,react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath)(path.pathname, nextPath) != null || (0,react_router__WEBPACK_IMPORTED_MODULE_2__.matchPath)(path.pathname, currentPath) != null;
60166}
60167//#endregion
60168
60169
60170//# sourceMappingURL=index.js.map
60171
60172
60173/***/ }),
60174
vendor: 69,166 bytes, lines 60175-61747
60175/***/ "./node_modules/react-router/dist/index.js":
60176/*!*************************************************!*\
60177  !*** ./node_modules/react-router/dist/index.js ***!
60178  \*************************************************/
60179/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
60180
60181"use strict";
60182var react__WEBPACK_IMPORTED_MODULE_0___namespace_cache;
60183__webpack_require__.r(__webpack_exports__);
60184/* harmony export */ __webpack_require__.d(__webpack_exports__, {
60185/* harmony export */   AbortedDeferredError: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.AbortedDeferredError),
60186/* harmony export */   Await: () => (/* binding */ Await),
60187/* harmony export */   MemoryRouter: () => (/* binding */ MemoryRouter),
60188/* harmony export */   Navigate: () => (/* binding */ Navigate),
60189/* harmony export */   NavigationType: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action),
60190/* harmony export */   Outlet: () => (/* binding */ Outlet),
60191/* harmony export */   Route: () => (/* binding */ Route),
60192/* harmony export */   Router: () => (/* binding */ Router),
60193/* harmony export */   RouterProvider: () => (/* binding */ RouterProvider),
60194/* harmony export */   Routes: () => (/* binding */ Routes),
60195/* harmony export */   UNSAFE_DataRouterContext: () => (/* binding */ DataRouterContext),
60196/* harmony export */   UNSAFE_DataRouterStateContext: () => (/* binding */ DataRouterStateContext),
60197/* harmony export */   UNSAFE_LocationContext: () => (/* binding */ LocationContext),
60198/* harmony export */   UNSAFE_NavigationContext: () => (/* binding */ NavigationContext),
60199/* harmony export */   UNSAFE_RouteContext: () => (/* binding */ RouteContext),
60200/* harmony export */   UNSAFE_logV6DeprecationWarnings: () => (/* binding */ logV6DeprecationWarnings),
60201/* harmony export */   UNSAFE_mapRouteProperties: () => (/* binding */ mapRouteProperties),
60202/* harmony export */   UNSAFE_useRouteId: () => (/* binding */ useRouteId),
60203/* harmony export */   UNSAFE_useRoutesImpl: () => (/* binding */ useRoutesImpl),
60204/* harmony export */   createMemoryRouter: () => (/* binding */ createMemoryRouter),
60205/* harmony export */   createPath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createPath),
60206/* harmony export */   createRoutesFromChildren: () => (/* binding */ createRoutesFromChildren),
60207/* harmony export */   createRoutesFromElements: () => (/* binding */ createRoutesFromChildren),
60208/* harmony export */   defer: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.defer),
60209/* harmony export */   generatePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.generatePath),
60210/* harmony export */   isRouteErrorResponse: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.isRouteErrorResponse),
60211/* harmony export */   json: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.json),
60212/* harmony export */   matchPath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchPath),
60213/* harmony export */   matchRoutes: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchRoutes),
60214/* harmony export */   parsePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath),
60215/* harmony export */   redirect: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.redirect),
60216/* harmony export */   redirectDocument: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.redirectDocument),
60217/* harmony export */   renderMatches: () => (/* binding */ renderMatches),
60218/* harmony export */   replace: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.replace),
60219/* harmony export */   resolvePath: () => (/* reexport safe */ _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolvePath),
60220/* harmony export */   useActionData: () => (/* binding */ useActionData),
60221/* harmony export */   useAsyncError: () => (/* binding */ useAsyncError),
60222/* harmony export */   useAsyncValue: () => (/* binding */ useAsyncValue),
60223/* harmony export */   useBlocker: () => (/* binding */ useBlocker),
60224/* harmony export */   useHref: () => (/* binding */ useHref),
60225/* harmony export */   useInRouterContext: () => (/* binding */ useInRouterContext),
60226/* harmony export */   useLoaderData: () => (/* binding */ useLoaderData),
60227/* harmony export */   useLocation: () => (/* binding */ useLocation),
60228/* harmony export */   useMatch: () => (/* binding */ useMatch),
60229/* harmony export */   useMatches: () => (/* binding */ useMatches),
60230/* harmony export */   useNavigate: () => (/* binding */ useNavigate),
60231/* harmony export */   useNavigation: () => (/* binding */ useNavigation),
60232/* harmony export */   useNavigationType: () => (/* binding */ useNavigationType),
60233/* harmony export */   useOutlet: () => (/* binding */ useOutlet),
60234/* harmony export */   useOutletContext: () => (/* binding */ useOutletContext),
60235/* harmony export */   useParams: () => (/* binding */ useParams),
60236/* harmony export */   useResolvedPath: () => (/* binding */ useResolvedPath),
60237/* harmony export */   useRevalidator: () => (/* binding */ useRevalidator),
60238/* harmony export */   useRouteError: () => (/* binding */ useRouteError),
60239/* harmony export */   useRouteLoaderData: () => (/* binding */ useRouteLoaderData),
60240/* harmony export */   useRoutes: () => (/* binding */ useRoutes)
60241/* harmony export */ });
60242/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
60243/* harmony import */ var _remix_run_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @remix-run/router */ "./node_modules/@remix-run/router/dist/router.js");
60244/**
60245 * React Router v6.28.1
60246 *
60247 * Copyright (c) Remix Software Inc.
60248 *
60249 * This source code is licensed under the MIT license found in the
60250 * LICENSE.md file in the root directory of this source tree.
60251 *
60252 * @license MIT
60253 */
60254
60255
60256
60257
60258function _extends() {
60259  _extends = Object.assign ? Object.assign.bind() : function (target) {
60260    for (var i = 1; i < arguments.length; i++) {
60261      var source = arguments[i];
60262      for (var key in source) {
60263        if (Object.prototype.hasOwnProperty.call(source, key)) {
60264          target[key] = source[key];
60265        }
60266      }
60267    }
60268    return target;
60269  };
60270  return _extends.apply(this, arguments);
60271}
60272
60273// Create react-specific types from the agnostic types in @remix-run/router to
60274// export from react-router
60275const DataRouterContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60276if (true) {
60277  DataRouterContext.displayName = "DataRouter";
60278}
60279const DataRouterStateContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60280if (true) {
60281  DataRouterStateContext.displayName = "DataRouterState";
60282}
60283const AwaitContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60284if (true) {
60285  AwaitContext.displayName = "Await";
60286}
60287
60288/**
60289 * A Navigator is a "location changer"; it's how you get to different locations.
60290 *
60291 * Every history instance conforms to the Navigator interface, but the
60292 * distinction is useful primarily when it comes to the low-level `<Router>` API
60293 * where both the location and a navigator must be provided separately in order
60294 * to avoid "tearing" that may occur in a suspense-enabled app if the action
60295 * and/or location were to be read directly from the history instance.
60296 */
60297
60298const NavigationContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60299if (true) {
60300  NavigationContext.displayName = "Navigation";
60301}
60302const LocationContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60303if (true) {
60304  LocationContext.displayName = "Location";
60305}
60306const RouteContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext({
60307  outlet: null,
60308  matches: [],
60309  isDataRoute: false
60310});
60311if (true) {
60312  RouteContext.displayName = "Route";
60313}
60314const RouteErrorContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60315if (true) {
60316  RouteErrorContext.displayName = "RouteError";
60317}
60318
60319/**
60320 * Returns the full href for the given "to" value. This is useful for building
60321 * custom links that are also accessible and preserve right-click behavior.
60322 *
60323 * @see https://reactrouter.com/v6/hooks/use-href
60324 */
60325function useHref(to, _temp) {
60326  let {
60327    relative
60328  } = _temp === void 0 ? {} : _temp;
60329  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
60330  // router loaded. We can help them understand how to avoid that.
60331  "useHref() may be used only in the context of a <Router> component.") : 0 : void 0;
60332  let {
60333    basename,
60334    navigator
60335  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
60336  let {
60337    hash,
60338    pathname,
60339    search
60340  } = useResolvedPath(to, {
60341    relative
60342  });
60343  let joinedPathname = pathname;
60344
60345  // If we're operating within a basename, prepend it to the pathname prior
60346  // to creating the href.  If this is a root navigation, then just use the raw
60347  // basename which allows the basename to have full control over the presence
60348  // of a trailing slash on root links
60349  if (basename !== "/") {
60350    joinedPathname = pathname === "/" ? basename : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([basename, pathname]);
60351  }
60352  return navigator.createHref({
60353    pathname: joinedPathname,
60354    search,
60355    hash
60356  });
60357}
60358
60359/**
60360 * Returns true if this component is a descendant of a `<Router>`.
60361 *
60362 * @see https://reactrouter.com/v6/hooks/use-in-router-context
60363 */
60364function useInRouterContext() {
60365  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext) != null;
60366}
60367
60368/**
60369 * Returns the current location object, which represents the current URL in web
60370 * browsers.
60371 *
60372 * Note: If you're using this it may mean you're doing some of your own
60373 * "routing" in your app, and we'd like to know what your use case is. We may
60374 * be able to provide something higher-level to better suit your needs.
60375 *
60376 * @see https://reactrouter.com/v6/hooks/use-location
60377 */
60378function useLocation() {
60379  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
60380  // router loaded. We can help them understand how to avoid that.
60381  "useLocation() may be used only in the context of a <Router> component.") : 0 : void 0;
60382  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext).location;
60383}
60384
60385/**
60386 * Returns the current navigation action which describes how the router came to
60387 * the current location, either by a pop, push, or replace on the history stack.
60388 *
60389 * @see https://reactrouter.com/v6/hooks/use-navigation-type
60390 */
60391function useNavigationType() {
60392  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(LocationContext).navigationType;
60393}
60394
60395/**
60396 * Returns a PathMatch object if the given pattern matches the current URL.
60397 * This is useful for components that need to know "active" state, e.g.
60398 * `<NavLink>`.
60399 *
60400 * @see https://reactrouter.com/v6/hooks/use-match
60401 */
60402function useMatch(pattern) {
60403  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
60404  // router loaded. We can help them understand how to avoid that.
60405  "useMatch() may be used only in the context of a <Router> component.") : 0 : void 0;
60406  let {
60407    pathname
60408  } = useLocation();
60409  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchPath)(pattern, (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_decodePath)(pathname)), [pathname, pattern]);
60410}
60411
60412/**
60413 * The interface for the navigate() function returned from useNavigate().
60414 */
60415
60416const navigateEffectWarning = "You should call navigate() in a React.useEffect(), not when " + "your component is first rendered.";
60417
60418// Mute warnings for calls to useNavigate in SSR environments
60419function useIsomorphicLayoutEffect(cb) {
60420  let isStatic = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext).static;
60421  if (!isStatic) {
60422    // We should be able to get rid of this once react 18.3 is released
60423    // See: https://github.com/facebook/react/pull/26395
60424    // eslint-disable-next-line react-hooks/rules-of-hooks
60425    react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(cb);
60426  }
60427}
60428
60429/**
60430 * Returns an imperative method for changing the location. Used by `<Link>`s, but
60431 * may also be used by other elements to change the location.
60432 *
60433 * @see https://reactrouter.com/v6/hooks/use-navigate
60434 */
60435function useNavigate() {
60436  let {
60437    isDataRoute
60438  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60439  // Conditional usage is OK here because the usage of a data router is static
60440  // eslint-disable-next-line react-hooks/rules-of-hooks
60441  return isDataRoute ? useNavigateStable() : useNavigateUnstable();
60442}
60443function useNavigateUnstable() {
60444  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
60445  // router loaded. We can help them understand how to avoid that.
60446  "useNavigate() may be used only in the context of a <Router> component.") : 0 : void 0;
60447  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);
60448  let {
60449    basename,
60450    future,
60451    navigator
60452  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
60453  let {
60454    matches
60455  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60456  let {
60457    pathname: locationPathname
60458  } = useLocation();
60459  let routePathnamesJson = JSON.stringify((0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath));
60460  let activeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
60461  useIsomorphicLayoutEffect(() => {
60462    activeRef.current = true;
60463  });
60464  let navigate = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (to, options) {
60465    if (options === void 0) {
60466      options = {};
60467    }
60468     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(activeRef.current, navigateEffectWarning) : 0;
60469
60470    // Short circuit here since if this happens on first render the navigate
60471    // is useless because we haven't wired up our history listener yet
60472    if (!activeRef.current) return;
60473    if (typeof to === "number") {
60474      navigator.go(to);
60475      return;
60476    }
60477    let path = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, JSON.parse(routePathnamesJson), locationPathname, options.relative === "path");
60478
60479    // If we're operating within a basename, prepend it to the pathname prior
60480    // to handing off to history (but only if we're not in a data router,
60481    // otherwise it'll prepend the basename inside of the router).
60482    // If this is a root navigation, then we navigate to the raw basename
60483    // which allows the basename to have full control over the presence of a
60484    // trailing slash on root links
60485    if (dataRouterContext == null && basename !== "/") {
60486      path.pathname = path.pathname === "/" ? basename : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([basename, path.pathname]);
60487    }
60488    (!!options.replace ? navigator.replace : navigator.push)(path, options.state, options);
60489  }, [basename, navigator, routePathnamesJson, locationPathname, dataRouterContext]);
60490  return navigate;
60491}
60492const OutletContext = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createContext(null);
60493
60494/**
60495 * Returns the context (if provided) for the child route at this level of the route
60496 * hierarchy.
60497 * @see https://reactrouter.com/v6/hooks/use-outlet-context
60498 */
60499function useOutletContext() {
60500  return react__WEBPACK_IMPORTED_MODULE_0__.useContext(OutletContext);
60501}
60502
60503/**
60504 * Returns the element for the child route at this level of the route
60505 * hierarchy. Used internally by `<Outlet>` to render child routes.
60506 *
60507 * @see https://reactrouter.com/v6/hooks/use-outlet
60508 */
60509function useOutlet(context) {
60510  let outlet = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext).outlet;
60511  if (outlet) {
60512    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(OutletContext.Provider, {
60513      value: context
60514    }, outlet);
60515  }
60516  return outlet;
60517}
60518
60519/**
60520 * Returns an object of key/value pairs of the dynamic params from the current
60521 * URL that were matched by the route path.
60522 *
60523 * @see https://reactrouter.com/v6/hooks/use-params
60524 */
60525function useParams() {
60526  let {
60527    matches
60528  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60529  let routeMatch = matches[matches.length - 1];
60530  return routeMatch ? routeMatch.params : {};
60531}
60532
60533/**
60534 * Resolves the pathname of the given `to` value against the current location.
60535 *
60536 * @see https://reactrouter.com/v6/hooks/use-resolved-path
60537 */
60538function useResolvedPath(to, _temp2) {
60539  let {
60540    relative
60541  } = _temp2 === void 0 ? {} : _temp2;
60542  let {
60543    future
60544  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
60545  let {
60546    matches
60547  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60548  let {
60549    pathname: locationPathname
60550  } = useLocation();
60551  let routePathnamesJson = JSON.stringify((0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath));
60552  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, JSON.parse(routePathnamesJson), locationPathname, relative === "path"), [to, routePathnamesJson, locationPathname, relative]);
60553}
60554
60555/**
60556 * Returns the element of the route that matched the current location, prepared
60557 * with the correct context to render the remainder of the route tree. Route
60558 * elements in the tree must render an `<Outlet>` to render their child route's
60559 * element.
60560 *
60561 * @see https://reactrouter.com/v6/hooks/use-routes
60562 */
60563function useRoutes(routes, locationArg) {
60564  return useRoutesImpl(routes, locationArg);
60565}
60566
60567// Internal implementation with accept optional param for RouterProvider usage
60568function useRoutesImpl(routes, locationArg, dataRouterState, future) {
60569  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of the
60570  // router loaded. We can help them understand how to avoid that.
60571  "useRoutes() may be used only in the context of a <Router> component.") : 0 : void 0;
60572  let {
60573    navigator
60574  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
60575  let {
60576    matches: parentMatches
60577  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60578  let routeMatch = parentMatches[parentMatches.length - 1];
60579  let parentParams = routeMatch ? routeMatch.params : {};
60580  let parentPathname = routeMatch ? routeMatch.pathname : "/";
60581  let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : "/";
60582  let parentRoute = routeMatch && routeMatch.route;
60583  if (true) {
60584    // You won't get a warning about 2 different <Routes> under a <Route>
60585    // without a trailing *, but this is a best-effort warning anyway since we
60586    // cannot even give the warning unless they land at the parent route.
60587    //
60588    // Example:
60589    //
60590    // <Routes>
60591    //   {/* This route path MUST end with /* because otherwise
60592    //       it will never match /blog/post/123 */}
60593    //   <Route path="blog" element={<Blog />} />
60594    //   <Route path="blog/feed" element={<BlogFeed />} />
60595    // </Routes>
60596    //
60597    // function Blog() {
60598    //   return (
60599    //     <Routes>
60600    //       <Route path="post/:id" element={<Post />} />
60601    //     </Routes>
60602    //   );
60603    // }
60604    let parentPath = parentRoute && parentRoute.path || "";
60605    warningOnce(parentPathname, !parentRoute || parentPath.endsWith("*"), "You rendered descendant <Routes> (or called `useRoutes()`) at " + ("\"" + parentPathname + "\" (under <Route path=\"" + parentPath + "\">) but the ") + "parent route path has no trailing \"*\". This means if you navigate " + "deeper, the parent won't match anymore and therefore the child " + "routes will never render.\n\n" + ("Please change the parent <Route path=\"" + parentPath + "\"> to <Route ") + ("path=\"" + (parentPath === "/" ? "*" : parentPath + "/*") + "\">."));
60606  }
60607  let locationFromContext = useLocation();
60608  let location;
60609  if (locationArg) {
60610    var _parsedLocationArg$pa;
60611    let parsedLocationArg = typeof locationArg === "string" ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath)(locationArg) : locationArg;
60612    !(parentPathnameBase === "/" || ((_parsedLocationArg$pa = parsedLocationArg.pathname) == null ? void 0 : _parsedLocationArg$pa.startsWith(parentPathnameBase))) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "When overriding the location using `<Routes location>` or `useRoutes(routes, location)`, " + "the location pathname must begin with the portion of the URL pathname that was " + ("matched by all parent routes. The current pathname base is \"" + parentPathnameBase + "\" ") + ("but pathname \"" + parsedLocationArg.pathname + "\" was given in the `location` prop.")) : 0 : void 0;
60613    location = parsedLocationArg;
60614  } else {
60615    location = locationFromContext;
60616  }
60617  let pathname = location.pathname || "/";
60618  let remainingPathname = pathname;
60619  if (parentPathnameBase !== "/") {
60620    // Determine the remaining pathname by removing the # of URL segments the
60621    // parentPathnameBase has, instead of removing based on character count.
60622    // This is because we can't guarantee that incoming/outgoing encodings/
60623    // decodings will match exactly.
60624    // We decode paths before matching on a per-segment basis with
60625    // decodeURIComponent(), but we re-encode pathnames via `new URL()` so they
60626    // match what `window.location.pathname` would reflect.  Those don't 100%
60627    // align when it comes to encoded URI characters such as % and &.
60628    //
60629    // So we may end up with:
60630    //   pathname:           "/descendant/a%25b/match"
60631    //   parentPathnameBase: "/descendant/a%b"
60632    //
60633    // And the direct substring removal approach won't work :/
60634    let parentSegments = parentPathnameBase.replace(/^\//, "").split("/");
60635    let segments = pathname.replace(/^\//, "").split("/");
60636    remainingPathname = "/" + segments.slice(parentSegments.length).join("/");
60637  }
60638  let matches = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.matchRoutes)(routes, {
60639    pathname: remainingPathname
60640  });
60641  if (true) {
60642     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(parentRoute || matches != null, "No routes matched location \"" + location.pathname + location.search + location.hash + "\" ") : 0;
60643     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(matches == null || matches[matches.length - 1].route.element !== undefined || matches[matches.length - 1].route.Component !== undefined || matches[matches.length - 1].route.lazy !== undefined, "Matched leaf route at location \"" + location.pathname + location.search + location.hash + "\" " + "does not have an element or Component. This means it will render an <Outlet /> with a " + "null value by default resulting in an \"empty\" page.") : 0;
60644  }
60645  let renderedMatches = _renderMatches(matches && matches.map(match => Object.assign({}, match, {
60646    params: Object.assign({}, parentParams, match.params),
60647    pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([parentPathnameBase,
60648    // Re-encode pathnames that were decoded inside matchRoutes
60649    navigator.encodeLocation ? navigator.encodeLocation(match.pathname).pathname : match.pathname]),
60650    pathnameBase: match.pathnameBase === "/" ? parentPathnameBase : (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.joinPaths)([parentPathnameBase,
60651    // Re-encode pathnames that were decoded inside matchRoutes
60652    navigator.encodeLocation ? navigator.encodeLocation(match.pathnameBase).pathname : match.pathnameBase])
60653  })), parentMatches, dataRouterState, future);
60654
60655  // When a user passes in a `locationArg`, the associated routes need to
60656  // be wrapped in a new `LocationContext.Provider` in order for `useLocation`
60657  // to use the scoped location instead of the global location.
60658  if (locationArg && renderedMatches) {
60659    return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider, {
60660      value: {
60661        location: _extends({
60662          pathname: "/",
60663          search: "",
60664          hash: "",
60665          state: null,
60666          key: "default"
60667        }, location),
60668        navigationType: _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action.Pop
60669      }
60670    }, renderedMatches);
60671  }
60672  return renderedMatches;
60673}
60674function DefaultErrorComponent() {
60675  let error = useRouteError();
60676  let message = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.isRouteErrorResponse)(error) ? error.status + " " + error.statusText : error instanceof Error ? error.message : JSON.stringify(error);
60677  let stack = error instanceof Error ? error.stack : null;
60678  let lightgrey = "rgba(200,200,200, 0.5)";
60679  let preStyles = {
60680    padding: "0.5rem",
60681    backgroundColor: lightgrey
60682  };
60683  let codeStyles = {
60684    padding: "2px 4px",
60685    backgroundColor: lightgrey
60686  };
60687  let devInfo = null;
60688  if (true) {
60689    console.error("Error handled by React Router default ErrorBoundary:", error);
60690    devInfo = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p", null, "\uD83D\uDCBF Hey developer \uD83D\uDC4B"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("p", null, "You can provide a way better UX than this when your app throws errors by providing your own ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("code", {
60691      style: codeStyles
60692    }, "ErrorBoundary"), " or", " ", /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("code", {
60693      style: codeStyles
60694    }, "errorElement"), " prop on your route."));
60695  }
60696  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("h2", null, "Unexpected Application Error!"), /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("h3", {
60697    style: {
60698      fontStyle: "italic"
60699    }
60700  }, message), stack ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement("pre", {
60701    style: preStyles
60702  }, stack) : null, devInfo);
60703}
60704const defaultErrorElement = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DefaultErrorComponent, null);
60705class RenderErrorBoundary extends react__WEBPACK_IMPORTED_MODULE_0__.Component {
60706  constructor(props) {
60707    super(props);
60708    this.state = {
60709      location: props.location,
60710      revalidation: props.revalidation,
60711      error: props.error
60712    };
60713  }
60714  static getDerivedStateFromError(error) {
60715    return {
60716      error: error
60717    };
60718  }
60719  static getDerivedStateFromProps(props, state) {
60720    // When we get into an error state, the user will likely click "back" to the
60721    // previous page that didn't have an error. Because this wraps the entire
60722    // application, that will have no effect--the error page continues to display.
60723    // This gives us a mechanism to recover from the error when the location changes.
60724    //
60725    // Whether we're in an error state or not, we update the location in state
60726    // so that when we are in an error state, it gets reset when a new location
60727    // comes in and the user recovers from the error.
60728    if (state.location !== props.location || state.revalidation !== "idle" && props.revalidation === "idle") {
60729      return {
60730        error: props.error,
60731        location: props.location,
60732        revalidation: props.revalidation
60733      };
60734    }
60735
60736    // If we're not changing locations, preserve the location but still surface
60737    // any new errors that may come through. We retain the existing error, we do
60738    // this because the error provided from the app state may be cleared without
60739    // the location changing.
60740    return {
60741      error: props.error !== undefined ? props.error : state.error,
60742      location: state.location,
60743      revalidation: props.revalidation || state.revalidation
60744    };
60745  }
60746  componentDidCatch(error, errorInfo) {
60747    console.error("React Router caught the following error during render", error, errorInfo);
60748  }
60749  render() {
60750    return this.state.error !== undefined ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider, {
60751      value: this.props.routeContext
60752    }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteErrorContext.Provider, {
60753      value: this.state.error,
60754      children: this.props.component
60755    })) : this.props.children;
60756  }
60757}
60758function RenderedRoute(_ref) {
60759  let {
60760    routeContext,
60761    match,
60762    children
60763  } = _ref;
60764  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);
60765
60766  // Track how deep we got in our render pass to emulate SSR componentDidCatch
60767  // in a DataStaticRouter
60768  if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {
60769    dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;
60770  }
60771  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RouteContext.Provider, {
60772    value: routeContext
60773  }, children);
60774}
60775function _renderMatches(matches, parentMatches, dataRouterState, future) {
60776  var _dataRouterState;
60777  if (parentMatches === void 0) {
60778    parentMatches = [];
60779  }
60780  if (dataRouterState === void 0) {
60781    dataRouterState = null;
60782  }
60783  if (future === void 0) {
60784    future = null;
60785  }
60786  if (matches == null) {
60787    var _future;
60788    if (!dataRouterState) {
60789      return null;
60790    }
60791    if (dataRouterState.errors) {
60792      // Don't bail if we have data router errors so we can render them in the
60793      // boundary.  Use the pre-matched (or shimmed) matches
60794      matches = dataRouterState.matches;
60795    } else if ((_future = future) != null && _future.v7_partialHydration && parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {
60796      // Don't bail if we're initializing with partial hydration and we have
60797      // router matches.  That means we're actively running `patchRoutesOnNavigation`
60798      // so we should render down the partial matches to the appropriate
60799      // `HydrateFallback`.  We only do this if `parentMatches` is empty so it
60800      // only impacts the root matches for `RouterProvider` and no descendant
60801      // `<Routes>`
60802      matches = dataRouterState.matches;
60803    } else {
60804      return null;
60805    }
60806  }
60807  let renderedMatches = matches;
60808
60809  // If we have data errors, trim matches to the highest error boundary
60810  let errors = (_dataRouterState = dataRouterState) == null ? void 0 : _dataRouterState.errors;
60811  if (errors != null) {
60812    let errorIndex = renderedMatches.findIndex(m => m.route.id && (errors == null ? void 0 : errors[m.route.id]) !== undefined);
60813    !(errorIndex >= 0) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "Could not find a matching route for errors on route IDs: " + Object.keys(errors).join(",")) : 0 : void 0;
60814    renderedMatches = renderedMatches.slice(0, Math.min(renderedMatches.length, errorIndex + 1));
60815  }
60816
60817  // If we're in a partial hydration mode, detect if we need to render down to
60818  // a given HydrateFallback while we load the rest of the hydration data
60819  let renderFallback = false;
60820  let fallbackIndex = -1;
60821  if (dataRouterState && future && future.v7_partialHydration) {
60822    for (let i = 0; i < renderedMatches.length; i++) {
60823      let match = renderedMatches[i];
60824      // Track the deepest fallback up until the first route without data
60825      if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {
60826        fallbackIndex = i;
60827      }
60828      if (match.route.id) {
60829        let {
60830          loaderData,
60831          errors
60832        } = dataRouterState;
60833        let needsToRunLoader = match.route.loader && loaderData[match.route.id] === undefined && (!errors || errors[match.route.id] === undefined);
60834        if (match.route.lazy || needsToRunLoader) {
60835          // We found the first route that's not ready to render (waiting on
60836          // lazy, or has a loader that hasn't run yet).  Flag that we need to
60837          // render a fallback and render up until the appropriate fallback
60838          renderFallback = true;
60839          if (fallbackIndex >= 0) {
60840            renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);
60841          } else {
60842            renderedMatches = [renderedMatches[0]];
60843          }
60844          break;
60845        }
60846      }
60847    }
60848  }
60849  return renderedMatches.reduceRight((outlet, match, index) => {
60850    // Only data routers handle errors/fallbacks
60851    let error;
60852    let shouldRenderHydrateFallback = false;
60853    let errorElement = null;
60854    let hydrateFallbackElement = null;
60855    if (dataRouterState) {
60856      error = errors && match.route.id ? errors[match.route.id] : undefined;
60857      errorElement = match.route.errorElement || defaultErrorElement;
60858      if (renderFallback) {
60859        if (fallbackIndex < 0 && index === 0) {
60860          warningOnce("route-fallback", false, "No `HydrateFallback` element provided to render during initial hydration");
60861          shouldRenderHydrateFallback = true;
60862          hydrateFallbackElement = null;
60863        } else if (fallbackIndex === index) {
60864          shouldRenderHydrateFallback = true;
60865          hydrateFallbackElement = match.route.hydrateFallbackElement || null;
60866        }
60867      }
60868    }
60869    let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));
60870    let getChildren = () => {
60871      let children;
60872      if (error) {
60873        children = errorElement;
60874      } else if (shouldRenderHydrateFallback) {
60875        children = hydrateFallbackElement;
60876      } else if (match.route.Component) {
60877        // Note: This is a de-optimized path since React won't re-use the
60878        // ReactElement since it's identity changes with each new
60879        // React.createElement call.  We keep this so folks can use
60880        // `<Route Component={...}>` in `<Routes>` but generally `Component`
60881        // usage is only advised in `RouterProvider` when we can convert it to
60882        // `element` ahead of time.
60883        children = /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(match.route.Component, null);
60884      } else if (match.route.element) {
60885        children = match.route.element;
60886      } else {
60887        children = outlet;
60888      }
60889      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderedRoute, {
60890        match: match,
60891        routeContext: {
60892          outlet,
60893          matches,
60894          isDataRoute: dataRouterState != null
60895        },
60896        children: children
60897      });
60898    };
60899    // Only wrap in an error boundary within data router usages when we have an
60900    // ErrorBoundary/errorElement on this route.  Otherwise let it bubble up to
60901    // an ancestor ErrorBoundary/errorElement
60902    return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(RenderErrorBoundary, {
60903      location: dataRouterState.location,
60904      revalidation: dataRouterState.revalidation,
60905      component: errorElement,
60906      error: error,
60907      children: getChildren(),
60908      routeContext: {
60909        outlet: null,
60910        matches,
60911        isDataRoute: true
60912      }
60913    }) : getChildren();
60914  }, null);
60915}
60916var DataRouterHook = /*#__PURE__*/function (DataRouterHook) {
60917  DataRouterHook["UseBlocker"] = "useBlocker";
60918  DataRouterHook["UseRevalidator"] = "useRevalidator";
60919  DataRouterHook["UseNavigateStable"] = "useNavigate";
60920  return DataRouterHook;
60921}(DataRouterHook || {});
60922var DataRouterStateHook = /*#__PURE__*/function (DataRouterStateHook) {
60923  DataRouterStateHook["UseBlocker"] = "useBlocker";
60924  DataRouterStateHook["UseLoaderData"] = "useLoaderData";
60925  DataRouterStateHook["UseActionData"] = "useActionData";
60926  DataRouterStateHook["UseRouteError"] = "useRouteError";
60927  DataRouterStateHook["UseNavigation"] = "useNavigation";
60928  DataRouterStateHook["UseRouteLoaderData"] = "useRouteLoaderData";
60929  DataRouterStateHook["UseMatches"] = "useMatches";
60930  DataRouterStateHook["UseRevalidator"] = "useRevalidator";
60931  DataRouterStateHook["UseNavigateStable"] = "useNavigate";
60932  DataRouterStateHook["UseRouteId"] = "useRouteId";
60933  return DataRouterStateHook;
60934}(DataRouterStateHook || {});
60935function getDataRouterConsoleError(hookName) {
60936  return hookName + " must be used within a data router.  See https://reactrouter.com/v6/routers/picking-a-router.";
60937}
60938function useDataRouterContext(hookName) {
60939  let ctx = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterContext);
60940  !ctx ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
60941  return ctx;
60942}
60943function useDataRouterState(hookName) {
60944  let state = react__WEBPACK_IMPORTED_MODULE_0__.useContext(DataRouterStateContext);
60945  !state ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
60946  return state;
60947}
60948function useRouteContext(hookName) {
60949  let route = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
60950  !route ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, getDataRouterConsoleError(hookName)) : 0 : void 0;
60951  return route;
60952}
60953
60954// Internal version with hookName-aware debugging
60955function useCurrentRouteId(hookName) {
60956  let route = useRouteContext(hookName);
60957  let thisRoute = route.matches[route.matches.length - 1];
60958  !thisRoute.route.id ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, hookName + " can only be used on routes that contain a unique \"id\"") : 0 : void 0;
60959  return thisRoute.route.id;
60960}
60961
60962/**
60963 * Returns the ID for the nearest contextual route
60964 */
60965function useRouteId() {
60966  return useCurrentRouteId(DataRouterStateHook.UseRouteId);
60967}
60968
60969/**
60970 * Returns the current navigation, defaulting to an "idle" navigation when
60971 * no navigation is in progress
60972 */
60973function useNavigation() {
60974  let state = useDataRouterState(DataRouterStateHook.UseNavigation);
60975  return state.navigation;
60976}
60977
60978/**
60979 * Returns a revalidate function for manually triggering revalidation, as well
60980 * as the current state of any manual revalidations
60981 */
60982function useRevalidator() {
60983  let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);
60984  let state = useDataRouterState(DataRouterStateHook.UseRevalidator);
60985  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
60986    revalidate: dataRouterContext.router.revalidate,
60987    state: state.revalidation
60988  }), [dataRouterContext.router.revalidate, state.revalidation]);
60989}
60990
60991/**
60992 * Returns the active route matches, useful for accessing loaderData for
60993 * parent/child routes or the route "handle" property
60994 */
60995function useMatches() {
60996  let {
60997    matches,
60998    loaderData
60999  } = useDataRouterState(DataRouterStateHook.UseMatches);
61000  return react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => matches.map(m => (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_convertRouteMatchToUiMatch)(m, loaderData)), [matches, loaderData]);
61001}
61002
61003/**
61004 * Returns the loader data for the nearest ancestor Route loader
61005 */
61006function useLoaderData() {
61007  let state = useDataRouterState(DataRouterStateHook.UseLoaderData);
61008  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);
61009  if (state.errors && state.errors[routeId] != null) {
61010    console.error("You cannot `useLoaderData` in an errorElement (routeId: " + routeId + ")");
61011    return undefined;
61012  }
61013  return state.loaderData[routeId];
61014}
61015
61016/**
61017 * Returns the loaderData for the given routeId
61018 */
61019function useRouteLoaderData(routeId) {
61020  let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);
61021  return state.loaderData[routeId];
61022}
61023
61024/**
61025 * Returns the action data for the nearest ancestor Route action
61026 */
61027function useActionData() {
61028  let state = useDataRouterState(DataRouterStateHook.UseActionData);
61029  let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);
61030  return state.actionData ? state.actionData[routeId] : undefined;
61031}
61032
61033/**
61034 * Returns the nearest ancestor Route error, which could be a loader/action
61035 * error or a render error.  This is intended to be called from your
61036 * ErrorBoundary/errorElement to display a proper error message.
61037 */
61038function useRouteError() {
61039  var _state$errors;
61040  let error = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteErrorContext);
61041  let state = useDataRouterState(DataRouterStateHook.UseRouteError);
61042  let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);
61043
61044  // If this was a render error, we put it in a RouteError context inside
61045  // of RenderErrorBoundary
61046  if (error !== undefined) {
61047    return error;
61048  }
61049
61050  // Otherwise look for errors from our data router state
61051  return (_state$errors = state.errors) == null ? void 0 : _state$errors[routeId];
61052}
61053
61054/**
61055 * Returns the happy-path data from the nearest ancestor `<Await />` value
61056 */
61057function useAsyncValue() {
61058  let value = react__WEBPACK_IMPORTED_MODULE_0__.useContext(AwaitContext);
61059  return value == null ? void 0 : value._data;
61060}
61061
61062/**
61063 * Returns the error from the nearest ancestor `<Await />` value
61064 */
61065function useAsyncError() {
61066  let value = react__WEBPACK_IMPORTED_MODULE_0__.useContext(AwaitContext);
61067  return value == null ? void 0 : value._error;
61068}
61069let blockerId = 0;
61070
61071/**
61072 * Allow the application to block navigations within the SPA and present the
61073 * user a confirmation dialog to confirm the navigation.  Mostly used to avoid
61074 * using half-filled form data.  This does not handle hard-reloads or
61075 * cross-origin navigations.
61076 */
61077function useBlocker(shouldBlock) {
61078  let {
61079    router,
61080    basename
61081  } = useDataRouterContext(DataRouterHook.UseBlocker);
61082  let state = useDataRouterState(DataRouterStateHook.UseBlocker);
61083  let [blockerKey, setBlockerKey] = react__WEBPACK_IMPORTED_MODULE_0__.useState("");
61084  let blockerFunction = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(arg => {
61085    if (typeof shouldBlock !== "function") {
61086      return !!shouldBlock;
61087    }
61088    if (basename === "/") {
61089      return shouldBlock(arg);
61090    }
61091
61092    // If they provided us a function and we've got an active basename, strip
61093    // it from the locations we expose to the user to match the behavior of
61094    // useLocation
61095    let {
61096      currentLocation,
61097      nextLocation,
61098      historyAction
61099    } = arg;
61100    return shouldBlock({
61101      currentLocation: _extends({}, currentLocation, {
61102        pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(currentLocation.pathname, basename) || currentLocation.pathname
61103      }),
61104      nextLocation: _extends({}, nextLocation, {
61105        pathname: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(nextLocation.pathname, basename) || nextLocation.pathname
61106      }),
61107      historyAction
61108    });
61109  }, [basename, shouldBlock]);
61110
61111  // This effect is in charge of blocker key assignment and deletion (which is
61112  // tightly coupled to the key)
61113  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
61114    let key = String(++blockerId);
61115    setBlockerKey(key);
61116    return () => router.deleteBlocker(key);
61117  }, [router]);
61118
61119  // This effect handles assigning the blockerFunction.  This is to handle
61120  // unstable blocker function identities, and happens only after the prior
61121  // effect so we don't get an orphaned blockerFunction in the router with a
61122  // key of "".  Until then we just have the IDLE_BLOCKER.
61123  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
61124    if (blockerKey !== "") {
61125      router.getBlocker(blockerKey, blockerFunction);
61126    }
61127  }, [router, blockerKey, blockerFunction]);
61128
61129  // Prefer the blocker from `state` not `router.state` since DataRouterContext
61130  // is memoized so this ensures we update on blocker state updates
61131  return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.IDLE_BLOCKER;
61132}
61133
61134/**
61135 * Stable version of useNavigate that is used when we are in the context of
61136 * a RouterProvider.
61137 */
61138function useNavigateStable() {
61139  let {
61140    router
61141  } = useDataRouterContext(DataRouterHook.UseNavigateStable);
61142  let id = useCurrentRouteId(DataRouterStateHook.UseNavigateStable);
61143  let activeRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef(false);
61144  useIsomorphicLayoutEffect(() => {
61145    activeRef.current = true;
61146  });
61147  let navigate = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(function (to, options) {
61148    if (options === void 0) {
61149      options = {};
61150    }
61151     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(activeRef.current, navigateEffectWarning) : 0;
61152
61153    // Short circuit here since if this happens on first render the navigate
61154    // is useless because we haven't wired up our router subscriber yet
61155    if (!activeRef.current) return;
61156    if (typeof to === "number") {
61157      router.navigate(to);
61158    } else {
61159      router.navigate(to, _extends({
61160        fromRouteId: id
61161      }, options));
61162    }
61163  }, [router, id]);
61164  return navigate;
61165}
61166const alreadyWarned$1 = {};
61167function warningOnce(key, cond, message) {
61168  if (!cond && !alreadyWarned$1[key]) {
61169    alreadyWarned$1[key] = true;
61170     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, message) : 0;
61171  }
61172}
61173
61174const alreadyWarned = {};
61175function warnOnce(key, message) {
61176  if (!alreadyWarned[message]) {
61177    alreadyWarned[message] = true;
61178    console.warn(message);
61179  }
61180}
61181const logDeprecation = (flag, msg, link) => warnOnce(flag, "\u26A0\uFE0F React Router Future Flag Warning: " + msg + ". " + ("You can use the `" + flag + "` future flag to opt-in early. ") + ("For more information, see " + link + "."));
61182function logV6DeprecationWarnings(renderFuture, routerFuture) {
61183  if ((renderFuture == null ? void 0 : renderFuture.v7_startTransition) === undefined) {
61184    logDeprecation("v7_startTransition", "React Router will begin wrapping state updates in `React.startTransition` in v7", "https://reactrouter.com/v6/upgrading/future#v7_starttransition");
61185  }
61186  if ((renderFuture == null ? void 0 : renderFuture.v7_relativeSplatPath) === undefined && (!routerFuture || !routerFuture.v7_relativeSplatPath)) {
61187    logDeprecation("v7_relativeSplatPath", "Relative route resolution within Splat routes is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_relativesplatpath");
61188  }
61189  if (routerFuture) {
61190    if (routerFuture.v7_fetcherPersist === undefined) {
61191      logDeprecation("v7_fetcherPersist", "The persistence behavior of fetchers is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_fetcherpersist");
61192    }
61193    if (routerFuture.v7_normalizeFormMethod === undefined) {
61194      logDeprecation("v7_normalizeFormMethod", "Casing of `formMethod` fields is being normalized to uppercase in v7", "https://reactrouter.com/v6/upgrading/future#v7_normalizeformmethod");
61195    }
61196    if (routerFuture.v7_partialHydration === undefined) {
61197      logDeprecation("v7_partialHydration", "`RouterProvider` hydration behavior is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_partialhydration");
61198    }
61199    if (routerFuture.v7_skipActionErrorRevalidation === undefined) {
61200      logDeprecation("v7_skipActionErrorRevalidation", "The revalidation behavior after 4xx/5xx `action` responses is changing in v7", "https://reactrouter.com/v6/upgrading/future#v7_skipactionerrorrevalidation");
61201    }
61202  }
61203}
61204
61205/**
61206  Webpack + React 17 fails to compile on any of the following because webpack
61207  complains that `startTransition` doesn't exist in `React`:
61208  * import { startTransition } from "react"
61209  * import * as React from from "react";
61210    "startTransition" in React ? React.startTransition(() => setState()) : setState()
61211  * import * as React from from "react";
61212    "startTransition" in React ? React["startTransition"](() => setState()) : setState()
61213
61214  Moving it to a constant such as the following solves the Webpack/React 17 issue:
61215  * import * as React from from "react";
61216    const START_TRANSITION = "startTransition";
61217    START_TRANSITION in React ? React[START_TRANSITION](() => setState()) : setState()
61218
61219  However, that introduces webpack/terser minification issues in production builds
61220  in React 18 where minification/obfuscation ends up removing the call of
61221  React.startTransition entirely from the first half of the ternary.  Grabbing
61222  this exported reference once up front resolves that issue.
61223
61224  See https://github.com/remix-run/react-router/issues/10579
61225*/
61226const START_TRANSITION = "startTransition";
61227const startTransitionImpl = /*#__PURE__*/ (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache || (react__WEBPACK_IMPORTED_MODULE_0___namespace_cache = __webpack_require__.t(react__WEBPACK_IMPORTED_MODULE_0__, 2)))[START_TRANSITION];
61228
61229/**
61230 * Given a Remix Router instance, render the appropriate UI
61231 */
61232function RouterProvider(_ref) {
61233  let {
61234    fallbackElement,
61235    router,
61236    future
61237  } = _ref;
61238  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState(router.state);
61239  let {
61240    v7_startTransition
61241  } = future || {};
61242  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
61243    if (v7_startTransition && startTransitionImpl) {
61244      startTransitionImpl(() => setStateImpl(newState));
61245    } else {
61246      setStateImpl(newState);
61247    }
61248  }, [setStateImpl, v7_startTransition]);
61249
61250  // Need to use a layout effect here so we are subscribed early enough to
61251  // pick up on any render-driven redirects/navigations (useEffect/<Navigate>)
61252  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => router.subscribe(setState), [router, setState]);
61253  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => {
61254     true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(fallbackElement == null || !router.future.v7_partialHydration, "`<RouterProvider fallbackElement>` is deprecated when using " + "`v7_partialHydration`, use a `HydrateFallback` component instead") : 0;
61255    // Only log this once on initial mount
61256    // eslint-disable-next-line react-hooks/exhaustive-deps
61257  }, []);
61258  let navigator = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
61259    return {
61260      createHref: router.createHref,
61261      encodeLocation: router.encodeLocation,
61262      go: n => router.navigate(n),
61263      push: (to, state, opts) => router.navigate(to, {
61264        state,
61265        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
61266      }),
61267      replace: (to, state, opts) => router.navigate(to, {
61268        replace: true,
61269        state,
61270        preventScrollReset: opts == null ? void 0 : opts.preventScrollReset
61271      })
61272    };
61273  }, [router]);
61274  let basename = router.basename || "/";
61275  let dataRouterContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
61276    router,
61277    navigator,
61278    static: false,
61279    basename
61280  }), [router, navigator, basename]);
61281  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => logV6DeprecationWarnings(future, router.future), [router, future]);
61282
61283  // The fragment and {null} here are important!  We need them to keep React 18's
61284  // useId happy when we are server-rendering since we may have a <script> here
61285  // containing the hydrated server-side staticContext (from StaticRouterProvider).
61286  // useId relies on the component tree structure to generate deterministic id's
61287  // so we need to ensure it remains the same on the client even though
61288  // we don't need the <script> tag
61289  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterContext.Provider, {
61290    value: dataRouterContext
61291  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRouterStateContext.Provider, {
61292    value: state
61293  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, {
61294    basename: basename,
61295    location: state.location,
61296    navigationType: state.historyAction,
61297    navigator: navigator,
61298    future: {
61299      v7_relativeSplatPath: router.future.v7_relativeSplatPath
61300    }
61301  }, state.initialized || router.future.v7_partialHydration ? /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(DataRoutes, {
61302    routes: router.routes,
61303    future: router.future,
61304    state: state
61305  }) : fallbackElement))), null);
61306}
61307function DataRoutes(_ref2) {
61308  let {
61309    routes,
61310    future,
61311    state
61312  } = _ref2;
61313  return useRoutesImpl(routes, undefined, state, future);
61314}
61315/**
61316 * A `<Router>` that stores all entries in memory.
61317 *
61318 * @see https://reactrouter.com/v6/router-components/memory-router
61319 */
61320function MemoryRouter(_ref3) {
61321  let {
61322    basename,
61323    children,
61324    initialEntries,
61325    initialIndex,
61326    future
61327  } = _ref3;
61328  let historyRef = react__WEBPACK_IMPORTED_MODULE_0__.useRef();
61329  if (historyRef.current == null) {
61330    historyRef.current = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createMemoryHistory)({
61331      initialEntries,
61332      initialIndex,
61333      v5Compat: true
61334    });
61335  }
61336  let history = historyRef.current;
61337  let [state, setStateImpl] = react__WEBPACK_IMPORTED_MODULE_0__.useState({
61338    action: history.action,
61339    location: history.location
61340  });
61341  let {
61342    v7_startTransition
61343  } = future || {};
61344  let setState = react__WEBPACK_IMPORTED_MODULE_0__.useCallback(newState => {
61345    v7_startTransition && startTransitionImpl ? startTransitionImpl(() => setStateImpl(newState)) : setStateImpl(newState);
61346  }, [setStateImpl, v7_startTransition]);
61347  react__WEBPACK_IMPORTED_MODULE_0__.useLayoutEffect(() => history.listen(setState), [history, setState]);
61348  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => logV6DeprecationWarnings(future), [future]);
61349  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(Router, {
61350    basename: basename,
61351    children: children,
61352    location: state.location,
61353    navigationType: state.action,
61354    navigator: history,
61355    future: future
61356  });
61357}
61358/**
61359 * Changes the current location.
61360 *
61361 * Note: This API is mostly useful in React.Component subclasses that are not
61362 * able to use hooks. In functional components, we recommend you use the
61363 * `useNavigate` hook instead.
61364 *
61365 * @see https://reactrouter.com/v6/components/navigate
61366 */
61367function Navigate(_ref4) {
61368  let {
61369    to,
61370    replace,
61371    state,
61372    relative
61373  } = _ref4;
61374  !useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, // TODO: This error is probably because they somehow have 2 versions of
61375  // the router loaded. We can help them understand how to avoid that.
61376  "<Navigate> may be used only in the context of a <Router> component.") : 0 : void 0;
61377  let {
61378    future,
61379    static: isStatic
61380  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(NavigationContext);
61381   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(!isStatic, "<Navigate> must not be used on the initial render in a <StaticRouter>. " + "This is a no-op, but you should modify your code so the <Navigate> is " + "only ever rendered in response to some user interaction or state change.") : 0;
61382  let {
61383    matches
61384  } = react__WEBPACK_IMPORTED_MODULE_0__.useContext(RouteContext);
61385  let {
61386    pathname: locationPathname
61387  } = useLocation();
61388  let navigate = useNavigate();
61389
61390  // Resolve the path outside of the effect so that when effects run twice in
61391  // StrictMode they navigate to the same place
61392  let path = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.resolveTo)(to, (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_getResolveToMatches)(matches, future.v7_relativeSplatPath), locationPathname, relative === "path");
61393  let jsonPath = JSON.stringify(path);
61394  react__WEBPACK_IMPORTED_MODULE_0__.useEffect(() => navigate(JSON.parse(jsonPath), {
61395    replace,
61396    state,
61397    relative
61398  }), [navigate, jsonPath, relative, replace, state]);
61399  return null;
61400}
61401/**
61402 * Renders the child route's element, if there is one.
61403 *
61404 * @see https://reactrouter.com/v6/components/outlet
61405 */
61406function Outlet(props) {
61407  return useOutlet(props.context);
61408}
61409/**
61410 * Declares an element that should be rendered at a certain URL path.
61411 *
61412 * @see https://reactrouter.com/v6/components/route
61413 */
61414function Route(_props) {
61415   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "A <Route> is only ever to be used as the child of <Routes> element, " + "never rendered directly. Please wrap your <Route> in a <Routes>.") : 0 ;
61416}
61417/**
61418 * Provides location context for the rest of the app.
61419 *
61420 * Note: You usually won't render a `<Router>` directly. Instead, you'll render a
61421 * router that is more specific to your environment such as a `<BrowserRouter>`
61422 * in web browsers or a `<StaticRouter>` for server rendering.
61423 *
61424 * @see https://reactrouter.com/v6/router-components/router
61425 */
61426function Router(_ref5) {
61427  let {
61428    basename: basenameProp = "/",
61429    children = null,
61430    location: locationProp,
61431    navigationType = _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.Action.Pop,
61432    navigator,
61433    static: staticProp = false,
61434    future
61435  } = _ref5;
61436  !!useInRouterContext() ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "You cannot render a <Router> inside another <Router>." + " You should never have more than one in your app.") : 0 : void 0;
61437
61438  // Preserve trailing slashes on basename, so we can let the user control
61439  // the enforcement of trailing slashes throughout the app
61440  let basename = basenameProp.replace(/^\/*/, "/");
61441  let navigationContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => ({
61442    basename,
61443    navigator,
61444    static: staticProp,
61445    future: _extends({
61446      v7_relativeSplatPath: false
61447    }, future)
61448  }), [basename, future, navigator, staticProp]);
61449  if (typeof locationProp === "string") {
61450    locationProp = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.parsePath)(locationProp);
61451  }
61452  let {
61453    pathname = "/",
61454    search = "",
61455    hash = "",
61456    state = null,
61457    key = "default"
61458  } = locationProp;
61459  let locationContext = react__WEBPACK_IMPORTED_MODULE_0__.useMemo(() => {
61460    let trailingPathname = (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.stripBasename)(pathname, basename);
61461    if (trailingPathname == null) {
61462      return null;
61463    }
61464    return {
61465      location: {
61466        pathname: trailingPathname,
61467        search,
61468        hash,
61469        state,
61470        key
61471      },
61472      navigationType
61473    };
61474  }, [basename, pathname, search, hash, state, key, navigationType]);
61475   true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(locationContext != null, "<Router basename=\"" + basename + "\"> is not able to match the URL " + ("\"" + pathname + search + hash + "\" because it does not start with the ") + "basename, so the <Router> won't render anything.") : 0;
61476  if (locationContext == null) {
61477    return null;
61478  }
61479  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(NavigationContext.Provider, {
61480    value: navigationContext
61481  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(LocationContext.Provider, {
61482    children: children,
61483    value: locationContext
61484  }));
61485}
61486/**
61487 * A container for a nested tree of `<Route>` elements that renders the branch
61488 * that best matches the current location.
61489 *
61490 * @see https://reactrouter.com/v6/components/routes
61491 */
61492function Routes(_ref6) {
61493  let {
61494    children,
61495    location
61496  } = _ref6;
61497  return useRoutes(createRoutesFromChildren(children), location);
61498}
61499/**
61500 * Component to use for rendering lazily loaded data from returning defer()
61501 * in a loader function
61502 */
61503function Await(_ref7) {
61504  let {
61505    children,
61506    errorElement,
61507    resolve
61508  } = _ref7;
61509  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitErrorBoundary, {
61510    resolve: resolve,
61511    errorElement: errorElement
61512  }, /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(ResolveAwait, null, children));
61513}
61514var AwaitRenderStatus = /*#__PURE__*/function (AwaitRenderStatus) {
61515  AwaitRenderStatus[AwaitRenderStatus["pending"] = 0] = "pending";
61516  AwaitRenderStatus[AwaitRenderStatus["success"] = 1] = "success";
61517  AwaitRenderStatus[AwaitRenderStatus["error"] = 2] = "error";
61518  return AwaitRenderStatus;
61519}(AwaitRenderStatus || {});
61520const neverSettledPromise = new Promise(() => {});
61521class AwaitErrorBoundary extends react__WEBPACK_IMPORTED_MODULE_0__.Component {
61522  constructor(props) {
61523    super(props);
61524    this.state = {
61525      error: null
61526    };
61527  }
61528  static getDerivedStateFromError(error) {
61529    return {
61530      error
61531    };
61532  }
61533  componentDidCatch(error, errorInfo) {
61534    console.error("<Await> caught the following error during render", error, errorInfo);
61535  }
61536  render() {
61537    let {
61538      children,
61539      errorElement,
61540      resolve
61541    } = this.props;
61542    let promise = null;
61543    let status = AwaitRenderStatus.pending;
61544    if (!(resolve instanceof Promise)) {
61545      // Didn't get a promise - provide as a resolved promise
61546      status = AwaitRenderStatus.success;
61547      promise = Promise.resolve();
61548      Object.defineProperty(promise, "_tracked", {
61549        get: () => true
61550      });
61551      Object.defineProperty(promise, "_data", {
61552        get: () => resolve
61553      });
61554    } else if (this.state.error) {
61555      // Caught a render error, provide it as a rejected promise
61556      status = AwaitRenderStatus.error;
61557      let renderError = this.state.error;
61558      promise = Promise.reject().catch(() => {}); // Avoid unhandled rejection warnings
61559      Object.defineProperty(promise, "_tracked", {
61560        get: () => true
61561      });
61562      Object.defineProperty(promise, "_error", {
61563        get: () => renderError
61564      });
61565    } else if (resolve._tracked) {
61566      // Already tracked promise - check contents
61567      promise = resolve;
61568      status = "_error" in promise ? AwaitRenderStatus.error : "_data" in promise ? AwaitRenderStatus.success : AwaitRenderStatus.pending;
61569    } else {
61570      // Raw (untracked) promise - track it
61571      status = AwaitRenderStatus.pending;
61572      Object.defineProperty(resolve, "_tracked", {
61573        get: () => true
61574      });
61575      promise = resolve.then(data => Object.defineProperty(resolve, "_data", {
61576        get: () => data
61577      }), error => Object.defineProperty(resolve, "_error", {
61578        get: () => error
61579      }));
61580    }
61581    if (status === AwaitRenderStatus.error && promise._error instanceof _remix_run_router__WEBPACK_IMPORTED_MODULE_1__.AbortedDeferredError) {
61582      // Freeze the UI by throwing a never resolved promise
61583      throw neverSettledPromise;
61584    }
61585    if (status === AwaitRenderStatus.error && !errorElement) {
61586      // No errorElement, throw to the nearest route-level error boundary
61587      throw promise._error;
61588    }
61589    if (status === AwaitRenderStatus.error) {
61590      // Render via our errorElement
61591      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitContext.Provider, {
61592        value: promise,
61593        children: errorElement
61594      });
61595    }
61596    if (status === AwaitRenderStatus.success) {
61597      // Render children with resolved value
61598      return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(AwaitContext.Provider, {
61599        value: promise,
61600        children: children
61601      });
61602    }
61603
61604    // Throw to the suspense boundary
61605    throw promise;
61606  }
61607}
61608
61609/**
61610 * @private
61611 * Indirection to leverage useAsyncValue for a render-prop API on `<Await>`
61612 */
61613function ResolveAwait(_ref8) {
61614  let {
61615    children
61616  } = _ref8;
61617  let data = useAsyncValue();
61618  let toRender = typeof children === "function" ? children(data) : children;
61619  return /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(react__WEBPACK_IMPORTED_MODULE_0__.Fragment, null, toRender);
61620}
61621
61622///////////////////////////////////////////////////////////////////////////////
61623// UTILS
61624///////////////////////////////////////////////////////////////////////////////
61625
61626/**
61627 * Creates a route config from a React "children" object, which is usually
61628 * either a `<Route>` element or an array of them. Used internally by
61629 * `<Routes>` to create a route config from its children.
61630 *
61631 * @see https://reactrouter.com/v6/utils/create-routes-from-children
61632 */
61633function createRoutesFromChildren(children, parentPath) {
61634  if (parentPath === void 0) {
61635    parentPath = [];
61636  }
61637  let routes = [];
61638  react__WEBPACK_IMPORTED_MODULE_0__.Children.forEach(children, (element, index) => {
61639    if (! /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.isValidElement(element)) {
61640      // Ignore non-elements. This allows people to more easily inline
61641      // conditionals in their route config.
61642      return;
61643    }
61644    let treePath = [...parentPath, index];
61645    if (element.type === react__WEBPACK_IMPORTED_MODULE_0__.Fragment) {
61646      // Transparently support React.Fragment and its children.
61647      routes.push.apply(routes, createRoutesFromChildren(element.props.children, treePath));
61648      return;
61649    }
61650    !(element.type === Route) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "[" + (typeof element.type === "string" ? element.type : element.type.name) + "] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>") : 0 : void 0;
61651    !(!element.props.index || !element.props.children) ?  true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_invariant)(false, "An index route cannot have child routes.") : 0 : void 0;
61652    let route = {
61653      id: element.props.id || treePath.join("-"),
61654      caseSensitive: element.props.caseSensitive,
61655      element: element.props.element,
61656      Component: element.props.Component,
61657      index: element.props.index,
61658      path: element.props.path,
61659      loader: element.props.loader,
61660      action: element.props.action,
61661      errorElement: element.props.errorElement,
61662      ErrorBoundary: element.props.ErrorBoundary,
61663      hasErrorBoundary: element.props.ErrorBoundary != null || element.props.errorElement != null,
61664      shouldRevalidate: element.props.shouldRevalidate,
61665      handle: element.props.handle,
61666      lazy: element.props.lazy
61667    };
61668    if (element.props.children) {
61669      route.children = createRoutesFromChildren(element.props.children, treePath);
61670    }
61671    routes.push(route);
61672  });
61673  return routes;
61674}
61675
61676/**
61677 * Renders the result of `matchRoutes()` into a React element.
61678 */
61679function renderMatches(matches) {
61680  return _renderMatches(matches);
61681}
61682
61683function mapRouteProperties(route) {
61684  let updates = {
61685    // Note: this check also occurs in createRoutesFromChildren so update
61686    // there if you change this -- please and thank you!
61687    hasErrorBoundary: route.ErrorBoundary != null || route.errorElement != null
61688  };
61689  if (route.Component) {
61690    if (true) {
61691      if (route.element) {
61692         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `Component` and `element` on your route - " + "`Component` will be used.") : 0;
61693      }
61694    }
61695    Object.assign(updates, {
61696      element: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.Component),
61697      Component: undefined
61698    });
61699  }
61700  if (route.HydrateFallback) {
61701    if (true) {
61702      if (route.hydrateFallbackElement) {
61703         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - " + "`HydrateFallback` will be used.") : 0;
61704      }
61705    }
61706    Object.assign(updates, {
61707      hydrateFallbackElement: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.HydrateFallback),
61708      HydrateFallback: undefined
61709    });
61710  }
61711  if (route.ErrorBoundary) {
61712    if (true) {
61713      if (route.errorElement) {
61714         true ? (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.UNSAFE_warning)(false, "You should not include both `ErrorBoundary` and `errorElement` on your route - " + "`ErrorBoundary` will be used.") : 0;
61715      }
61716    }
61717    Object.assign(updates, {
61718      errorElement: /*#__PURE__*/react__WEBPACK_IMPORTED_MODULE_0__.createElement(route.ErrorBoundary),
61719      ErrorBoundary: undefined
61720    });
61721  }
61722  return updates;
61723}
61724function createMemoryRouter(routes, opts) {
61725  return (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createRouter)({
61726    basename: opts == null ? void 0 : opts.basename,
61727    future: _extends({}, opts == null ? void 0 : opts.future, {
61728      v7_prependBasename: true
61729    }),
61730    history: (0,_remix_run_router__WEBPACK_IMPORTED_MODULE_1__.createMemoryHistory)({
61731      initialEntries: opts == null ? void 0 : opts.initialEntries,
61732      initialIndex: opts == null ? void 0 : opts.initialIndex
61733    }),
61734    hydrationData: opts == null ? void 0 : opts.hydrationData,
61735    routes,
61736    mapRouteProperties,
61737    dataStrategy: opts == null ? void 0 : opts.dataStrategy,
61738    patchRoutesOnNavigation: opts == null ? void 0 : opts.patchRoutesOnNavigation
61739  }).initialize();
61740}
61741
61742
61743//# sourceMappingURL=index.js.map
61744
61745
61746/***/ }),
61747
vendor: 1,008 bytes, lines 61748-61770
61748/***/ "./node_modules/react-share/es/EmailIcon.js":
61749/*!**************************************************!*\
61750  !*** ./node_modules/react-share/es/EmailIcon.js ***!
61751  \**************************************************/
61752/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61753
61754"use strict";
61755__webpack_require__.r(__webpack_exports__);
61756/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61757/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61758/* harmony export */ });
61759/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
61760
61761var EmailIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
61762    color: '#7f7f7f',
61763    networkName: 'email',
61764    path: 'M17,22v20h30V22H17z M41.1,25L32,32.1L22.9,25H41.1z M20,39V26.6l12,9.3l12-9.3V39H20z',
61765});
61766/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmailIcon);
61767
61768
61769/***/ }),
61770
vendor: 1,649 bytes, lines 61771-61804
61771/***/ "./node_modules/react-share/es/EmailShareButton.js":
61772/*!*********************************************************!*\
61773  !*** ./node_modules/react-share/es/EmailShareButton.js ***!
61774  \*********************************************************/
61775/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61776
61777"use strict";
61778__webpack_require__.r(__webpack_exports__);
61779/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61780/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61781/* harmony export */ });
61782/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
61783/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
61784
61785
61786function emailLink(url, _a) {
61787    var subject = _a.subject, body = _a.body, separator = _a.separator;
61788    return 'mailto:' + (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_0__["default"])({ subject: subject, body: body ? body + separator + url : url });
61789}
61790var EmailShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__["default"])('email', emailLink, function (props) { return ({
61791    subject: props.subject,
61792    body: props.body,
61793    separator: props.separator || ' ',
61794}); }, {
61795    openShareDialogOnClick: false,
61796    onClick: function (_, link) {
61797        window.location.href = link;
61798    },
61799});
61800/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (EmailShareButton);
61801
61802
61803/***/ }),
61804
vendor: 1,084 bytes, lines 61805-61827
61805/***/ "./node_modules/react-share/es/FacebookIcon.js":
61806/*!*****************************************************!*\
61807  !*** ./node_modules/react-share/es/FacebookIcon.js ***!
61808  \*****************************************************/
61809/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61810
61811"use strict";
61812__webpack_require__.r(__webpack_exports__);
61813/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61814/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61815/* harmony export */ });
61816/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
61817
61818var FacebookIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
61819    color: '#3b5998',
61820    networkName: 'facebook',
61821    path: 'M34.1,47V33.3h4.6l0.7-5.3h-5.3v-3.4c0-1.5,0.4-2.6,2.6-2.6l2.8,0v-4.8c-0.5-0.1-2.2-0.2-4.1-0.2 c-4.1,0-6.9,2.5-6.9,7V28H24v5.3h4.6V47H34.1z',
61822});
61823/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FacebookIcon);
61824
61825
61826/***/ }),
61827
vendor: 1,550 bytes, lines 61828-61850
61828/***/ "./node_modules/react-share/es/FacebookMessengerIcon.js":
61829/*!**************************************************************!*\
61830  !*** ./node_modules/react-share/es/FacebookMessengerIcon.js ***!
61831  \**************************************************************/
61832/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61833
61834"use strict";
61835__webpack_require__.r(__webpack_exports__);
61836/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61837/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61838/* harmony export */ });
61839/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
61840
61841var FacebookMessengerIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
61842    color: '#2196F3',
61843    networkName: 'facebookmessenger',
61844    path: 'M 53.066406 21.871094 C 52.667969 21.339844 51.941406 21.179688 51.359375 21.496094 L 37.492188 29.058594 L 28.867188 21.660156 C 28.339844 21.207031 27.550781 21.238281 27.054688 21.730469 L 11.058594 37.726562 C 10.539062 38.25 10.542969 39.09375 11.0625 39.613281 C 11.480469 40.027344 12.121094 40.121094 12.640625 39.839844 L 26.503906 32.28125 L 35.136719 39.679688 C 35.667969 40.132812 36.457031 40.101562 36.949219 39.609375 L 52.949219 23.613281 C 53.414062 23.140625 53.464844 22.398438 53.066406 21.871094 Z M 53.066406 21.871094',
61845});
61846/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FacebookMessengerIcon);
61847
61848
61849/***/ }),
61850
vendor: 1,778 bytes, lines 61851-61888
61851/***/ "./node_modules/react-share/es/FacebookMessengerShareButton.js":
61852/*!*********************************************************************!*\
61853  !*** ./node_modules/react-share/es/FacebookMessengerShareButton.js ***!
61854  \*********************************************************************/
61855/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61856
61857"use strict";
61858__webpack_require__.r(__webpack_exports__);
61859/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61860/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61861/* harmony export */ });
61862/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
61863/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
61864
61865
61866function facebookMessengerLink(url, _a) {
61867    var appId = _a.appId, redirectUri = _a.redirectUri, to = _a.to;
61868    return ('https://www.facebook.com/dialog/send' +
61869        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_0__["default"])({
61870            link: url,
61871            redirect_uri: redirectUri || url,
61872            app_id: appId,
61873            to: to,
61874        }));
61875}
61876var FacebookMessengerShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__["default"])('facebookmessenger', facebookMessengerLink, function (props) { return ({
61877    appId: props.appId,
61878    redirectUri: props.redirectUri,
61879    to: props.to,
61880}); }, {
61881    windowWidth: 1000,
61882    windowHeight: 820,
61883});
61884/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FacebookMessengerShareButton);
61885
61886
61887/***/ }),
61888
vendor: 1,863 bytes, lines 61889-61927
61889/***/ "./node_modules/react-share/es/FacebookShareButton.js":
61890/*!************************************************************!*\
61891  !*** ./node_modules/react-share/es/FacebookShareButton.js ***!
61892  \************************************************************/
61893/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61894
61895"use strict";
61896__webpack_require__.r(__webpack_exports__);
61897/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61898/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61899/* harmony export */ });
61900/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
61901/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
61902/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
61903
61904
61905
61906function facebookLink(url, _a) {
61907    var quote = _a.quote, hashtag = _a.hashtag;
61908    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'facebook.url');
61909    return ('https://www.facebook.com/sharer/sharer.php' +
61910        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
61911            u: url,
61912            quote: quote,
61913            hashtag: hashtag,
61914        }));
61915}
61916var FacebookShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('facebook', facebookLink, function (props) { return ({
61917    quote: props.quote,
61918    hashtag: props.hashtag,
61919}); }, {
61920    windowWidth: 550,
61921    windowHeight: 400,
61922});
61923/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (FacebookShareButton);
61924
61925
61926/***/ }),
61927
vendor: 1,584 bytes, lines 61928-61956
61928/***/ "./node_modules/react-share/es/FacebookShareCount.js":
61929/*!***********************************************************!*\
61930  !*** ./node_modules/react-share/es/FacebookShareCount.js ***!
61931  \***********************************************************/
61932/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61933
61934"use strict";
61935__webpack_require__.r(__webpack_exports__);
61936/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61937/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61938/* harmony export */ });
61939/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
61940/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
61941/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
61942
61943
61944function getFacebookShareCount(shareUrl, callback) {
61945    var endpoint = "https://graph.facebook.com/?id=".concat(shareUrl, "&fields=og_object{engagement}");
61946    jsonp__WEBPACK_IMPORTED_MODULE_0___default()(endpoint, function (err, data) {
61947        callback(!err && data && data.og_object && data.og_object.engagement
61948            ? data.og_object.engagement.count
61949            : undefined);
61950    });
61951}
61952/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_1__["default"])(getFacebookShareCount));
61953
61954
61955/***/ }),
61956
vendor: 2,816 bytes, lines 61957-61979
61957/***/ "./node_modules/react-share/es/HatenaIcon.js":
61958/*!***************************************************!*\
61959  !*** ./node_modules/react-share/es/HatenaIcon.js ***!
61960  \***************************************************/
61961/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61962
61963"use strict";
61964__webpack_require__.r(__webpack_exports__);
61965/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61966/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61967/* harmony export */ });
61968/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
61969
61970var HatenaIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
61971    color: '#009ad9',
61972    networkName: 'hatena',
61973    path: 'M 36.164062 33.554688 C 34.988281 32.234375 33.347656 31.5 31.253906 31.34375 C 33.125 30.835938 34.476562 30.09375 35.335938 29.09375 C 36.191406 28.09375 36.609375 26.78125 36.609375 25.101562 C 36.628906 23.875 36.332031 22.660156 35.75 21.578125 C 35.160156 20.558594 34.292969 19.71875 33.253906 19.160156 C 32.304688 18.640625 31.175781 18.265625 29.847656 18.042969 C 28.523438 17.824219 26.195312 17.730469 22.867188 17.730469 L 14.769531 17.730469 L 14.769531 47.269531 L 23.113281 47.269531 C 26.46875 47.269531 28.886719 47.15625 30.367188 46.929688 C 31.851562 46.695312 33.085938 46.304688 34.085938 45.773438 C 35.289062 45.148438 36.28125 44.179688 36.933594 42.992188 C 37.597656 41.796875 37.933594 40.402344 37.933594 38.816406 C 37.933594 36.621094 37.347656 34.867188 36.164062 33.554688 Z M 22.257812 24.269531 L 23.984375 24.269531 C 25.988281 24.269531 27.332031 24.496094 28.015625 24.945312 C 28.703125 25.402344 29.042969 26.183594 29.042969 27.285156 C 29.042969 28.390625 28.664062 29.105469 27.9375 29.550781 C 27.210938 29.992188 25.84375 30.199219 23.855469 30.199219 L 22.257812 30.199219 Z M 29.121094 41.210938 C 28.328125 41.691406 26.976562 41.925781 25.078125 41.925781 L 22.257812 41.925781 L 22.257812 35.488281 L 25.195312 35.488281 C 27.144531 35.488281 28.496094 35.738281 29.210938 36.230469 C 29.925781 36.726562 30.304688 37.582031 30.304688 38.832031 C 30.304688 40.078125 29.914062 40.742188 29.105469 41.222656 Z M 29.121094 41.210938 M 46.488281 39.792969 C 44.421875 39.792969 42.742188 41.46875 42.742188 43.535156 C 42.742188 45.605469 44.421875 47.28125 46.488281 47.28125 C 48.554688 47.28125 50.230469 45.605469 50.230469 43.535156 C 50.230469 41.46875 48.554688 39.792969 46.488281 39.792969 Z M 46.488281 39.792969 M 43.238281 17.730469 L 49.738281 17.730469 L 49.738281 37.429688 L 43.238281 37.429688 Z M 43.238281 17.730469 ',
61974});
61975/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HatenaIcon);
61976
61977
61978/***/ }),
61979
vendor: 1,501 bytes, lines 61980-62011
61980/***/ "./node_modules/react-share/es/HatenaShareButton.js":
61981/*!**********************************************************!*\
61982  !*** ./node_modules/react-share/es/HatenaShareButton.js ***!
61983  \**********************************************************/
61984/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
61985
61986"use strict";
61987__webpack_require__.r(__webpack_exports__);
61988/* harmony export */ __webpack_require__.d(__webpack_exports__, {
61989/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
61990/* harmony export */ });
61991/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
61992/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
61993
61994
61995function hatenaLink(url, _a) {
61996    var title = _a.title;
61997    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'hatena.url');
61998    return "http://b.hatena.ne.jp/add?mode=confirm&url=".concat(url, "&title=").concat(title);
61999}
62000var HatenaShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_1__["default"])('hatena', hatenaLink, function (props) { return ({
62001    title: props.title,
62002}); }, {
62003    windowWidth: 660,
62004    windowHeight: 460,
62005    windowPosition: 'windowCenter',
62006});
62007/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (HatenaShareButton);
62008
62009
62010/***/ }),
62011
vendor: 1,733 bytes, lines 62012-62043
62012/***/ "./node_modules/react-share/es/HatenaShareCount.js":
62013/*!*********************************************************!*\
62014  !*** ./node_modules/react-share/es/HatenaShareCount.js ***!
62015  \*********************************************************/
62016/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62017
62018"use strict";
62019__webpack_require__.r(__webpack_exports__);
62020/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62021/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62022/* harmony export */ });
62023/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
62024/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
62025/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62026/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
62027
62028
62029
62030function getHatenaShareCount(shareUrl, callback) {
62031    var url = 'https://bookmark.hatenaapis.com/count/entry';
62032    jsonp__WEBPACK_IMPORTED_MODULE_0___default()(url +
62033        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62034            url: shareUrl,
62035        }), function (err, data) {
62036        callback(data ? data : undefined);
62037    });
62038}
62039/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__["default"])(getHatenaShareCount));
62040
62041
62042/***/ }),
62043
vendor: 1,148 bytes, lines 62044-62066
62044/***/ "./node_modules/react-share/es/InstapaperIcon.js":
62045/*!*******************************************************!*\
62046  !*** ./node_modules/react-share/es/InstapaperIcon.js ***!
62047  \*******************************************************/
62048/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62049
62050"use strict";
62051__webpack_require__.r(__webpack_exports__);
62052/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62053/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62054/* harmony export */ });
62055/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62056
62057var InstapaperIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62058    color: '#1F1F1F',
62059    networkName: 'instapaper',
62060    path: 'M35.688 43.012c0 2.425.361 2.785 3.912 3.056V48H24.401v-1.932c3.555-.27 3.912-.63 3.912-3.056V20.944c0-2.379-.36-2.785-3.912-3.056V16H39.6v1.888c-3.55.27-3.912.675-3.912 3.056v22.068h.001z',
62061});
62062/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InstapaperIcon);
62063
62064
62065/***/ }),
62066
vendor: 1,935 bytes, lines 62067-62106
62067/***/ "./node_modules/react-share/es/InstapaperShareButton.js":
62068/*!**************************************************************!*\
62069  !*** ./node_modules/react-share/es/InstapaperShareButton.js ***!
62070  \**************************************************************/
62071/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62072
62073"use strict";
62074__webpack_require__.r(__webpack_exports__);
62075/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62076/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62077/* harmony export */ });
62078/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62079/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62080/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62081
62082
62083
62084function instapaperLink(url, _a) {
62085    var title = _a.title, description = _a.description;
62086    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'instapaper.url');
62087    return ('http://www.instapaper.com/hello2' +
62088        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62089            url: url,
62090            title: title,
62091            description: description,
62092        }));
62093}
62094var InstapaperShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('instapaper', instapaperLink, function (props) { return ({
62095    title: props.title,
62096    description: props.description,
62097}); }, {
62098    windowWidth: 500,
62099    windowHeight: 500,
62100    windowPosition: 'windowCenter',
62101});
62102/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (InstapaperShareButton);
62103
62104
62105/***/ }),
62106
vendor: 2,467 bytes, lines 62107-62129
62107/***/ "./node_modules/react-share/es/LineIcon.js":
62108/*!*************************************************!*\
62109  !*** ./node_modules/react-share/es/LineIcon.js ***!
62110  \*************************************************/
62111/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62112
62113"use strict";
62114__webpack_require__.r(__webpack_exports__);
62115/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62116/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62117/* harmony export */ });
62118/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62119
62120var LineIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62121    color: '#00b800',
62122    networkName: 'line',
62123    path: 'M52.62 30.138c0 3.693-1.432 7.019-4.42 10.296h.001c-4.326 4.979-14 11.044-16.201 11.972-2.2.927-1.876-.591-1.786-1.112l.294-1.765c.069-.527.142-1.343-.066-1.865-.232-.574-1.146-.872-1.817-1.016-9.909-1.31-17.245-8.238-17.245-16.51 0-9.226 9.251-16.733 20.62-16.733 11.37 0 20.62 7.507 20.62 16.733zM27.81 25.68h-1.446a.402.402 0 0 0-.402.401v8.985c0 .221.18.4.402.4h1.446a.401.401 0 0 0 .402-.4v-8.985a.402.402 0 0 0-.402-.401zm9.956 0H36.32a.402.402 0 0 0-.402.401v5.338L31.8 25.858a.39.39 0 0 0-.031-.04l-.002-.003-.024-.025-.008-.007a.313.313 0 0 0-.032-.026.255.255 0 0 1-.021-.014l-.012-.007-.021-.012-.013-.006-.023-.01-.013-.005-.024-.008-.014-.003-.023-.005-.017-.002-.021-.003-.021-.002h-1.46a.402.402 0 0 0-.402.401v8.985c0 .221.18.4.402.4h1.446a.401.401 0 0 0 .402-.4v-5.337l4.123 5.568c.028.04.063.072.101.099l.004.003a.236.236 0 0 0 .025.015l.012.006.019.01a.154.154 0 0 1 .019.008l.012.004.028.01.005.001a.442.442 0 0 0 .104.013h1.446a.4.4 0 0 0 .401-.4v-8.985a.402.402 0 0 0-.401-.401zm-13.442 7.537h-3.93v-7.136a.401.401 0 0 0-.401-.401h-1.447a.4.4 0 0 0-.401.401v8.984a.392.392 0 0 0 .123.29c.072.068.17.111.278.111h5.778a.4.4 0 0 0 .401-.401v-1.447a.401.401 0 0 0-.401-.401zm21.429-5.287c.222 0 .401-.18.401-.402v-1.446a.401.401 0 0 0-.401-.402h-5.778a.398.398 0 0 0-.279.113l-.005.004-.006.008a.397.397 0 0 0-.111.276v8.984c0 .108.043.206.112.278l.005.006a.401.401 0 0 0 .284.117h5.778a.4.4 0 0 0 .401-.401v-1.447a.401.401 0 0 0-.401-.401h-3.93v-1.519h3.93c.222 0 .401-.18.401-.402V29.85a.401.401 0 0 0-.401-.402h-3.93V27.93h3.93z',
62124});
62125/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LineIcon);
62126
62127
62128/***/ }),
62129
vendor: 1,745 bytes, lines 62130-62166
62130/***/ "./node_modules/react-share/es/LineShareButton.js":
62131/*!********************************************************!*\
62132  !*** ./node_modules/react-share/es/LineShareButton.js ***!
62133  \********************************************************/
62134/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62135
62136"use strict";
62137__webpack_require__.r(__webpack_exports__);
62138/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62139/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62140/* harmony export */ });
62141/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62142/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62143/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62144
62145
62146
62147function lineLink(url, _a) {
62148    var title = _a.title;
62149    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'line.url');
62150    return ('https://social-plugins.line.me/lineit/share' +
62151        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62152            url: url,
62153            text: title,
62154        }));
62155}
62156var LineShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('line', lineLink, function (props) { return ({
62157    title: props.title,
62158}); }, {
62159    windowWidth: 500,
62160    windowHeight: 500,
62161});
62162/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LineShareButton);
62163
62164
62165/***/ }),
62166
vendor: 1,220 bytes, lines 62167-62189
62167/***/ "./node_modules/react-share/es/LinkedinIcon.js":
62168/*!*****************************************************!*\
62169  !*** ./node_modules/react-share/es/LinkedinIcon.js ***!
62170  \*****************************************************/
62171/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62172
62173"use strict";
62174__webpack_require__.r(__webpack_exports__);
62175/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62176/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62177/* harmony export */ });
62178/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62179
62180var LinkedinIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62181    color: '#007fb1',
62182    networkName: 'linkedin',
62183    path: 'M20.4,44h5.4V26.6h-5.4V44z M23.1,18c-1.7,0-3.1,1.4-3.1,3.1c0,1.7,1.4,3.1,3.1,3.1 c1.7,0,3.1-1.4,3.1-3.1C26.2,19.4,24.8,18,23.1,18z M39.5,26.2c-2.6,0-4.4,1.4-5.1,2.8h-0.1v-2.4h-5.2V44h5.4v-8.6 c0-2.3,0.4-4.5,3.2-4.5c2.8,0,2.8,2.6,2.8,4.6V44H46v-9.5C46,29.8,45,26.2,39.5,26.2z',
62184});
62185/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LinkedinIcon);
62186
62187
62188/***/ }),
62189
vendor: 1,925 bytes, lines 62190-62224
62190/***/ "./node_modules/react-share/es/LinkedinShareButton.js":
62191/*!************************************************************!*\
62192  !*** ./node_modules/react-share/es/LinkedinShareButton.js ***!
62193  \************************************************************/
62194/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62195
62196"use strict";
62197__webpack_require__.r(__webpack_exports__);
62198/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62199/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62200/* harmony export */ });
62201/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62202/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62203/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62204
62205
62206
62207function linkedinLink(url, _a) {
62208    var title = _a.title, summary = _a.summary, source = _a.source;
62209    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'linkedin.url');
62210    return ('https://linkedin.com/shareArticle' +
62211        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({ url: url, mini: 'true', title: title, summary: summary, source: source }));
62212}
62213var LinkedinShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('linkedin', linkedinLink, function (_a) {
62214    var title = _a.title, summary = _a.summary, source = _a.source;
62215    return ({ title: title, summary: summary, source: source });
62216}, {
62217    windowWidth: 750,
62218    windowHeight: 600,
62219});
62220/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LinkedinShareButton);
62221
62222
62223/***/ }),
62224
vendor: 2,367 bytes, lines 62225-62247
62225/***/ "./node_modules/react-share/es/LivejournalIcon.js":
62226/*!********************************************************!*\
62227  !*** ./node_modules/react-share/es/LivejournalIcon.js ***!
62228  \********************************************************/
62229/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62230
62231"use strict";
62232__webpack_require__.r(__webpack_exports__);
62233/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62234/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62235/* harmony export */ });
62236/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62237
62238var LivejournalIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62239    color: '#21A5D8',
62240    networkName: 'livejournal',
62241    path: 'M18.3407821,28.1764706 L21.9441341,31.789916 L33.0055865,42.882353 C33.0055865,42.882353 33.0893855,42.9663866 33.0893855,42.9663866 L46.6648046,47 C46.6648046,47 46.6648046,47 46.7486034,47 C46.8324022,47 46.8324022,47 46.9162012,46.9159664 C47,46.8319327 47,46.8319327 47,46.7478991 L42.9776536,33.1344537 C42.9776536,33.1344537 42.9776536,33.1344537 42.8938548,33.0504202 L31.1620111,21.3697479 L31.1620111,21.3697479 L28.1452514,18.2605042 C27.3072626,17.4201681 26.5530726,17 25.7150838,17 C24.2905028,17 23.0335195,18.3445378 21.5251397,19.8571429 C21.273743,20.1092437 20.9385475,20.4453781 20.6871508,20.697479 C20.3519553,21.0336134 20.1005586,21.2857143 19.849162,21.5378151 C18.3407821,22.9663866 17.0837989,24.2268908 17,25.7394958 C17.0837989,26.4957983 17.5027933,27.3361345 18.3407821,28.1764706 Z M39.9012319,39.6134454 C39.7336341,39.4453781 39.4822374,37.6806724 40.2364275,36.8403362 C40.9906174,36.0840337 41.6610084,36 42.1638017,36 C42.3313995,36 42.4989973,36 42.5827961,36 L44.8453659,43.5630253 L43.5883828,44.8235295 L36.0464833,42.5546218 C35.9626843,42.2184874 35.8788855,41.2100841 36.8844722,40.2016807 C37.2196676,39.8655463 37.8900587,39.6134454 38.5604498,39.6134454 C39.147042,39.6134454 39.5660364,39.7815126 39.5660364,39.7815126 C39.6498353,39.8655463 39.8174331,39.8655463 39.8174331,39.7815126 C39.9850307,39.7815126 39.9850307,39.697479 39.9012319,39.6134454 Z',
62242});
62243/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LivejournalIcon);
62244
62245
62246/***/ }),
62247
vendor: 1,889 bytes, lines 62248-62285
62248/***/ "./node_modules/react-share/es/LivejournalShareButton.js":
62249/*!***************************************************************!*\
62250  !*** ./node_modules/react-share/es/LivejournalShareButton.js ***!
62251  \***************************************************************/
62252/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62253
62254"use strict";
62255__webpack_require__.r(__webpack_exports__);
62256/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62257/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62258/* harmony export */ });
62259/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62260/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62261/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62262
62263
62264
62265function livejournalLink(url, _a) {
62266    var title = _a.title, description = _a.description;
62267    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'livejournal.url');
62268    return ('https://www.livejournal.com/update.bml' +
62269        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62270            subject: title,
62271            event: description,
62272        }));
62273}
62274var LivejournalShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('livejournal', livejournalLink, function (props) { return ({
62275    title: props.title,
62276    description: props.description,
62277}); }, {
62278    windowWidth: 660,
62279    windowHeight: 460,
62280});
62281/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (LivejournalShareButton);
62282
62283
62284/***/ }),
62285
vendor: 2,856 bytes, lines 62286-62308
62286/***/ "./node_modules/react-share/es/MailruIcon.js":
62287/*!***************************************************!*\
62288  !*** ./node_modules/react-share/es/MailruIcon.js ***!
62289  \***************************************************/
62290/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62291
62292"use strict";
62293__webpack_require__.r(__webpack_exports__);
62294/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62295/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62296/* harmony export */ });
62297/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62298
62299var MailruIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62300    color: '#168DE2',
62301    networkName: 'mailru',
62302    path: 'M39.7107745,17 C41.6619755,17 43.3204965,18.732852 43.3204965,21.0072202 C43.3204965,23.2815885 41.7595357,25.0144404 39.7107745,25.0144404 C37.7595732,25.0144404 36.1010522,23.2815885 36.1010522,21.0072202 C36.1010522,18.732852 37.7595732,17 39.7107745,17 Z M24.3938451,17 C26.3450463,17 28.0035672,18.732852 28.0035672,21.0072202 C28.0035672,23.2815885 26.4426063,25.0144404 24.3938451,25.0144404 C22.4426439,25.0144404 20.7841229,23.2815885 20.7841229,21.0072202 C20.7841229,18.732852 22.4426439,17 24.3938451,17 Z M51.9057817,43.4259928 C51.7106617,44.0758123 51.4179815,44.6173285 50.9301812,44.9422383 C50.637501,45.1588448 50.2472607,45.267148 49.8570205,45.267148 C49.07654,45.267148 48.3936197,44.833935 48.0033795,44.0758123 L46.2472985,40.7184115 L45.759498,41.2599278 C42.5400162,44.9422383 37.466893,47 32.0035297,47 C26.5401664,47 21.5646034,44.9422383 18.2475614,41.2599278 L17.7597611,40.7184115 L16.00368,44.0758123 C15.6134398,44.833935 14.9305194,45.267148 14.1500389,45.267148 C13.7597986,45.267148 13.3695584,45.1588448 13.0768782,44.9422383 C12.0037176,44.2924187 11.7110374,42.7761733 12.2963978,41.5848375 L16.7841605,33.0288807 C17.1744007,32.270758 17.8573211,31.8375453 18.6378016,31.8375453 C19.0280418,31.8375453 19.4182821,31.9458485 19.7109623,32.1624548 C20.7841229,32.8122743 21.0768031,34.3285197 20.4914427,35.5198555 L20.1012025,36.2779783 L20.2963226,36.602888 C22.4426439,39.9602888 27.0279667,42.234657 31.9059697,42.234657 C36.7839727,42.234657 41.3692955,40.068592 43.5156167,36.602888 L43.7107367,36.2779783 L43.3204965,35.6281587 C43.0278165,35.0866425 42.9302562,34.436823 43.1253765,33.7870035 C43.3204965,33.137184 43.6131767,32.5956678 44.100977,32.270758 C44.3936572,32.0541515 44.7838975,31.9458485 45.1741377,31.9458485 C45.9546182,31.9458485 46.6375385,32.3790613 47.0277787,33.137184 L51.5155415,41.6931408 C52.003342,42.234657 52.100902,42.8844765 51.9057817,43.4259928 Z',
62303});
62304/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MailruIcon);
62305
62306
62307/***/ }),
62308
vendor: 1,943 bytes, lines 62309-62349
62309/***/ "./node_modules/react-share/es/MailruShareButton.js":
62310/*!**********************************************************!*\
62311  !*** ./node_modules/react-share/es/MailruShareButton.js ***!
62312  \**********************************************************/
62313/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62314
62315"use strict";
62316__webpack_require__.r(__webpack_exports__);
62317/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62318/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62319/* harmony export */ });
62320/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62321/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62322/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62323
62324
62325
62326function mailruLink(url, _a) {
62327    var title = _a.title, description = _a.description, imageUrl = _a.imageUrl;
62328    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'mailru.url');
62329    return ('https://connect.mail.ru/share' +
62330        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62331            url: url,
62332            title: title,
62333            description: description,
62334            image_url: imageUrl,
62335        }));
62336}
62337var MailruShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('mailru', mailruLink, function (props) { return ({
62338    title: props.title,
62339    description: props.description,
62340    imageUrl: props.imageUrl,
62341}); }, {
62342    windowWidth: 660,
62343    windowHeight: 460,
62344});
62345/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (MailruShareButton);
62346
62347
62348/***/ }),
62349
vendor: 1,381 bytes, lines 62350-62372
62350/***/ "./node_modules/react-share/es/OKIcon.js":
62351/*!***********************************************!*\
62352  !*** ./node_modules/react-share/es/OKIcon.js ***!
62353  \***********************************************/
62354/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62355
62356"use strict";
62357__webpack_require__.r(__webpack_exports__);
62358/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62359/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62360/* harmony export */ });
62361/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62362
62363var OKIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62364    color: '#f2720c',
62365    networkName: 'ok',
62366    path: 'M39,30c-1,0-3,2-7,2s-6-2-7-2c-1.1,0-2,0.9-2,2c0,1,0.6,1.5,1,1.7c1.2,0.7,5,2.3,5,2.3l-4.3,5.4   c0,0-0.8,0.9-0.8,1.6c0,1.1,0.9,2,2,2c1,0,1.5-0.7,1.5-0.7S32,39,32,39c0,0,4.5,5.3,4.5,5.3S37,45,38,45c1.1,0,2-0.9,2-2   c0-0.6-0.8-1.6-0.8-1.6L35,36c0,0,3.8-1.6,5-2.3c0.4-0.3,1-0.7,1-1.7C41,30.9,40.1,30,39,30z M32,15c-3.9,0-7,3.1-7,7s3.1,7,7,7c3.9,0,7-3.1,7-7S35.9,15,32,15z M32,25.5   c-1.9,0-3.5-1.6-3.5-3.5c0-1.9,1.6-3.5,3.5-3.5c1.9,0,3.5,1.6,3.5,3.5C35.5,23.9,33.9,22.5,35,22.5z ',
62367});
62368/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OKIcon);
62369
62370
62371/***/ }),
62372
vendor: 1,921 bytes, lines 62373-62414
62373/***/ "./node_modules/react-share/es/OKShareButton.js":
62374/*!******************************************************!*\
62375  !*** ./node_modules/react-share/es/OKShareButton.js ***!
62376  \******************************************************/
62377/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62378
62379"use strict";
62380__webpack_require__.r(__webpack_exports__);
62381/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62382/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62383/* harmony export */ });
62384/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62385/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62386/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62387
62388
62389
62390function okLink(url, _a) {
62391    var title = _a.title, description = _a.description, image = _a.image;
62392    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'ok.url');
62393    return ('https://connect.ok.ru/offer' +
62394        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62395            url: url,
62396            title: title,
62397            description: description,
62398            imageUrl: image,
62399        }));
62400}
62401var OKShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('ok', okLink, function (props) { return ({
62402    title: props.title,
62403    description: props.description,
62404    image: props.image,
62405}); }, {
62406    windowWidth: 588,
62407    windowHeight: 480,
62408    windowPosition: 'screenCenter',
62409});
62410/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (OKShareButton);
62411
62412
62413/***/ }),
62414
vendor: 2,323 bytes, lines 62415-62464
62415/***/ "./node_modules/react-share/es/OKShareCount.js":
62416/*!*****************************************************!*\
62417  !*** ./node_modules/react-share/es/OKShareCount.js ***!
62418  \*****************************************************/
62419/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62420
62421"use strict";
62422__webpack_require__.r(__webpack_exports__);
62423/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62424/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62425/* harmony export */ });
62426/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
62427/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
62428/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62429/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
62430
62431
62432
62433function getOKShareCount(shareUrl, callback) {
62434    if (!window.OK) {
62435        window.OK = {
62436            Share: {
62437                count: function count(index, _count) {
62438                    window.OK.callbacks[index](_count);
62439                },
62440            },
62441            callbacks: [],
62442        };
62443    }
62444    var url = 'https://connect.ok.ru/dk';
62445    var index = window.OK.callbacks.length;
62446    window.ODKL = {
62447        updateCount: function (index, count) {
62448            var callbackIndex = index === '' ? 0 : parseInt(index.replace('react-share-', ''), 10);
62449            window.OK.callbacks[callbackIndex](count === '' ? undefined : parseInt(count, 10));
62450        },
62451    };
62452    window.OK.callbacks.push(callback);
62453    return jsonp__WEBPACK_IMPORTED_MODULE_0___default()(url +
62454        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62455            'st.cmd': 'extLike',
62456            uid: "react-share-".concat(index),
62457            ref: shareUrl,
62458        }));
62459}
62460/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__["default"])(getOKShareCount));
62461
62462
62463/***/ }),
62464
vendor: 1,535 bytes, lines 62465-62487
62465/***/ "./node_modules/react-share/es/PinterestIcon.js":
62466/*!******************************************************!*\
62467  !*** ./node_modules/react-share/es/PinterestIcon.js ***!
62468  \******************************************************/
62469/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62470
62471"use strict";
62472__webpack_require__.r(__webpack_exports__);
62473/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62474/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62475/* harmony export */ });
62476/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62477
62478var PinterestIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62479    color: '#cb2128',
62480    networkName: 'pinterest',
62481    path: 'M32,16c-8.8,0-16,7.2-16,16c0,6.6,3.9,12.2,9.6,14.7c0-1.1,0-2.5,0.3-3.7 c0.3-1.3,2.1-8.7,2.1-8.7s-0.5-1-0.5-2.5c0-2.4,1.4-4.1,3.1-4.1c1.5,0,2.2,1.1,2.2,2.4c0,1.5-0.9,3.7-1.4,5.7 c-0.4,1.7,0.9,3.1,2.5,3.1c3,0,5.1-3.9,5.1-8.5c0-3.5-2.4-6.1-6.7-6.1c-4.9,0-7.9,3.6-7.9,7.7c0,1.4,0.4,2.4,1.1,3.1 c0.3,0.3,0.3,0.5,0.2,0.9c-0.1,0.3-0.3,1-0.3,1.3c-0.1,0.4-0.4,0.6-0.8,0.4c-2.2-0.9-3.3-3.4-3.3-6.1c0-4.5,3.8-10,11.4-10 c6.1,0,10.1,4.4,10.1,9.2c0,6.3-3.5,11-8.6,11c-1.7,0-3.4-0.9-3.9-2c0,0-0.9,3.7-1.1,4.4c-0.3,1.2-1,2.5-1.6,3.4 c1.4,0.4,3,0.7,4.5,0.7c8.8,0,16-7.2,16-16C48,23.2,40.8,16,32,16z',
62482});
62483/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PinterestIcon);
62484
62485
62486/***/ }),
62487
vendor: 1,987 bytes, lines 62488-62527
62488/***/ "./node_modules/react-share/es/PinterestShareButton.js":
62489/*!*************************************************************!*\
62490  !*** ./node_modules/react-share/es/PinterestShareButton.js ***!
62491  \*************************************************************/
62492/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62493
62494"use strict";
62495__webpack_require__.r(__webpack_exports__);
62496/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62497/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62498/* harmony export */ });
62499/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62500/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62501/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62502
62503
62504
62505function pinterestLink(url, _a) {
62506    var media = _a.media, description = _a.description;
62507    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'pinterest.url');
62508    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(media, 'pinterest.media');
62509    return ('https://pinterest.com/pin/create/button/' +
62510        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62511            url: url,
62512            media: media,
62513            description: description,
62514        }));
62515}
62516var PinterestShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('pinterest', pinterestLink, function (props) { return ({
62517    media: props.media,
62518    description: props.description,
62519}); }, {
62520    windowWidth: 1000,
62521    windowHeight: 730,
62522});
62523/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PinterestShareButton);
62524
62525
62526/***/ }),
62527
vendor: 1,758 bytes, lines 62528-62559
62528/***/ "./node_modules/react-share/es/PinterestShareCount.js":
62529/*!************************************************************!*\
62530  !*** ./node_modules/react-share/es/PinterestShareCount.js ***!
62531  \************************************************************/
62532/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62533
62534"use strict";
62535__webpack_require__.r(__webpack_exports__);
62536/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62537/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62538/* harmony export */ });
62539/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
62540/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
62541/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62542/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
62543
62544
62545
62546function getPinterestShareCount(shareUrl, callback) {
62547    var url = 'https://api.pinterest.com/v1/urls/count.json';
62548    jsonp__WEBPACK_IMPORTED_MODULE_0___default()(url +
62549        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62550            url: shareUrl,
62551        }), function (err, data) {
62552        callback(data ? data.count : undefined);
62553    });
62554}
62555/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__["default"])(getPinterestShareCount));
62556
62557
62558/***/ }),
62559
vendor: 1,631 bytes, lines 62560-62582
62560/***/ "./node_modules/react-share/es/PocketIcon.js":
62561/*!***************************************************!*\
62562  !*** ./node_modules/react-share/es/PocketIcon.js ***!
62563  \***************************************************/
62564/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62565
62566"use strict";
62567__webpack_require__.r(__webpack_exports__);
62568/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62569/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62570/* harmony export */ });
62571/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62572
62573var PocketIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62574    color: '#EF3F56',
62575    networkName: 'pocket',
62576    path: 'M41.084 29.065l-7.528 7.882a2.104 2.104 0 0 1-1.521.666 2.106 2.106 0 0 1-1.522-.666l-7.528-7.882c-.876-.914-.902-2.43-.065-3.384.84-.955 2.228-.987 3.1-.072l6.015 6.286 6.022-6.286c.88-.918 2.263-.883 3.102.071.841.938.82 2.465-.06 3.383l-.015.002zm6.777-10.976C47.463 16.84 46.361 16 45.14 16H18.905c-1.2 0-2.289.82-2.716 2.044-.125.363-.189.743-.189 1.125v10.539l.112 2.096c.464 4.766 2.73 8.933 6.243 11.838.06.053.125.102.19.153l.04.033c1.882 1.499 3.986 2.514 6.259 3.014a14.662 14.662 0 0 0 6.13.052c.118-.042.235-.065.353-.087.03 0 .065-.022.098-.042a15.395 15.395 0 0 0 6.011-2.945l.039-.045.18-.153c3.502-2.902 5.765-7.072 6.248-11.852L48 29.674v-10.52c0-.366-.041-.728-.161-1.08l.022.015z',
62577});
62578/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PocketIcon);
62579
62580
62581/***/ }),
62582
vendor: 1,749 bytes, lines 62583-62619
62583/***/ "./node_modules/react-share/es/PocketShareButton.js":
62584/*!**********************************************************!*\
62585  !*** ./node_modules/react-share/es/PocketShareButton.js ***!
62586  \**********************************************************/
62587/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62588
62589"use strict";
62590__webpack_require__.r(__webpack_exports__);
62591/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62592/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62593/* harmony export */ });
62594/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62595/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62596/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62597
62598
62599
62600function pocketLink(url, _a) {
62601    var title = _a.title;
62602    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'pocket.url');
62603    return ('https://getpocket.com/save' +
62604        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62605            url: url,
62606            title: title,
62607        }));
62608}
62609var PocketShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('pocket', pocketLink, function (props) { return ({
62610    title: props.title,
62611}); }, {
62612    windowWidth: 500,
62613    windowHeight: 500,
62614});
62615/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (PocketShareButton);
62616
62617
62618/***/ }),
62619
vendor: 2,522 bytes, lines 62620-62642
62620/***/ "./node_modules/react-share/es/RedditIcon.js":
62621/*!***************************************************!*\
62622  !*** ./node_modules/react-share/es/RedditIcon.js ***!
62623  \***************************************************/
62624/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62625
62626"use strict";
62627__webpack_require__.r(__webpack_exports__);
62628/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62629/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62630/* harmony export */ });
62631/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62632
62633var RedditIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62634    color: '#ff4500',
62635    networkName: 'reddit',
62636    path: 'm 52.8165,31.942362 c 0,-2.4803 -2.0264,-4.4965 -4.5169,-4.4965 -1.2155,0 -2.3171,0.4862 -3.128,1.2682 -3.077,-2.0247 -7.2403,-3.3133 -11.8507,-3.4782 l 2.5211,-7.9373 6.8272,1.5997 -0.0102,0.0986 c 0,2.0281 1.6575,3.6771 3.6958,3.6771 2.0366,0 3.6924,-1.649 3.6924,-3.6771 0,-2.0281 -1.6575,-3.6788 -3.6924,-3.6788 -1.564,0 -2.8968,0.9758 -3.4357,2.3443 l -7.3593,-1.7255 c -0.3213,-0.0782 -0.6477,0.1071 -0.748,0.4233 L 32,25.212062 c -4.8246,0.0578 -9.1953,1.3566 -12.41,3.4425 -0.8058,-0.7446 -1.8751,-1.2104 -3.0583,-1.2104 -2.4905,0 -4.5152,2.0179 -4.5152,4.4982 0,1.649 0.9061,3.0787 2.2389,3.8607 -0.0884,0.4794 -0.1462,0.9639 -0.1462,1.4569 0,6.6487 8.1736,12.0581 18.2223,12.0581 10.0487,0 18.224,-5.4094 18.224,-12.0581 0,-0.4658 -0.0493,-0.9248 -0.1275,-1.377 1.4144,-0.7599 2.3885,-2.2304 2.3885,-3.9406 z m -29.2808,3.0872 c 0,-1.4756 1.207,-2.6775 2.6894,-2.6775 1.4824,0 2.6877,1.2019 2.6877,2.6775 0,1.4756 -1.2053,2.6758 -2.6877,2.6758 -1.4824,0 -2.6894,-1.2002 -2.6894,-2.6758 z m 15.4037,7.9373 c -1.3549,1.3481 -3.4816,2.0043 -6.5008,2.0043 l -0.0221,-0.0051 -0.0221,0.0051 c -3.0209,0 -5.1476,-0.6562 -6.5008,-2.0043 -0.2465,-0.2448 -0.2465,-0.6443 0,-0.8891 0.2465,-0.2465 0.6477,-0.2465 0.8942,0 1.105,1.0999 2.9393,1.6337 5.6066,1.6337 l 0.0221,0.0051 0.0221,-0.0051 c 2.6673,0 4.5016,-0.5355 5.6066,-1.6354 0.2465,-0.2465 0.6477,-0.2448 0.8942,0 0.2465,0.2465 0.2465,0.6443 0,0.8908 z m -0.3213,-5.2615 c -1.4824,0 -2.6877,-1.2002 -2.6877,-2.6758 0,-1.4756 1.2053,-2.6775 2.6877,-2.6775 1.4824,0 2.6877,1.2019 2.6877,2.6775 0,1.4756 -1.2053,2.6758 -2.6877,2.6758 z',
62637});
62638/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RedditIcon);
62639
62640
62641/***/ }),
62642
vendor: 1,788 bytes, lines 62643-62680
62643/***/ "./node_modules/react-share/es/RedditShareButton.js":
62644/*!**********************************************************!*\
62645  !*** ./node_modules/react-share/es/RedditShareButton.js ***!
62646  \**********************************************************/
62647/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62648
62649"use strict";
62650__webpack_require__.r(__webpack_exports__);
62651/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62652/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62653/* harmony export */ });
62654/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62655/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62656/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62657
62658
62659
62660function redditLink(url, _a) {
62661    var title = _a.title;
62662    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'reddit.url');
62663    return ('https://www.reddit.com/submit' +
62664        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62665            url: url,
62666            title: title,
62667        }));
62668}
62669var RedditShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('reddit', redditLink, function (props) { return ({
62670    title: props.title,
62671}); }, {
62672    windowWidth: 660,
62673    windowHeight: 460,
62674    windowPosition: 'windowCenter',
62675});
62676/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (RedditShareButton);
62677
62678
62679/***/ }),
62680
vendor: 1,685 bytes, lines 62681-62713
62681/***/ "./node_modules/react-share/es/RedditShareCount.js":
62682/*!*********************************************************!*\
62683  !*** ./node_modules/react-share/es/RedditShareCount.js ***!
62684  \*********************************************************/
62685/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62686
62687"use strict";
62688__webpack_require__.r(__webpack_exports__);
62689/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62690/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62691/* harmony export */ });
62692/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
62693/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
62694/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
62695
62696
62697function getRedditShareCount(shareUrl, callback) {
62698    var endpoint = "https://www.reddit.com/api/info.json?limit=1&url=".concat(shareUrl);
62699    jsonp__WEBPACK_IMPORTED_MODULE_0___default()(endpoint, { param: 'jsonp' }, function (err, response) {
62700        callback(!err &&
62701            response &&
62702            response.data &&
62703            response.data.children.length > 0 &&
62704            response.data.children[0].data.score
62705            ? response.data.children[0].data.score
62706            : undefined);
62707    });
62708}
62709/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_1__["default"])(getRedditShareCount));
62710
62711
62712/***/ }),
62713
vendor: 11,097 bytes, lines 62714-62900
62714/***/ "./node_modules/react-share/es/ShareButton.js":
62715/*!****************************************************!*\
62716  !*** ./node_modules/react-share/es/ShareButton.js ***!
62717  \****************************************************/
62718/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62719
62720"use strict";
62721__webpack_require__.r(__webpack_exports__);
62722/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62723/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62724/* harmony export */ });
62725/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
62726/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
62727/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
62728var __extends = (undefined && undefined.__extends) || (function () {
62729    var extendStatics = function (d, b) {
62730        extendStatics = Object.setPrototypeOf ||
62731            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
62732            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
62733        return extendStatics(d, b);
62734    };
62735    return function (d, b) {
62736        if (typeof b !== "function" && b !== null)
62737            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
62738        extendStatics(d, b);
62739        function __() { this.constructor = d; }
62740        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
62741    };
62742})();
62743var __assign = (undefined && undefined.__assign) || function () {
62744    __assign = Object.assign || function(t) {
62745        for (var s, i = 1, n = arguments.length; i < n; i++) {
62746            s = arguments[i];
62747            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
62748                t[p] = s[p];
62749        }
62750        return t;
62751    };
62752    return __assign.apply(this, arguments);
62753};
62754var __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {
62755    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
62756    return new (P || (P = Promise))(function (resolve, reject) {
62757        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
62758        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
62759        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
62760        step((generator = generator.apply(thisArg, _arguments || [])).next());
62761    });
62762};
62763var __generator = (undefined && undefined.__generator) || function (thisArg, body) {
62764    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
62765    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
62766    function verb(n) { return function (v) { return step([n, v]); }; }
62767    function step(op) {
62768        if (f) throw new TypeError("Generator is already executing.");
62769        while (_) try {
62770            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
62771            if (y = 0, t) op = [op[0] & 2, t.value];
62772            switch (op[0]) {
62773                case 0: case 1: t = op; break;
62774                case 4: _.label++; return { value: op[1], done: false };
62775                case 5: _.label++; y = op[1]; op = [0]; continue;
62776                case 7: op = _.ops.pop(); _.trys.pop(); continue;
62777                default:
62778                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
62779                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
62780                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
62781                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
62782                    if (t[2]) _.ops.pop();
62783                    _.trys.pop(); continue;
62784            }
62785            op = body.call(thisArg, _);
62786        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
62787        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
62788    }
62789};
62790var __rest = (undefined && undefined.__rest) || function (s, e) {
62791    var t = {};
62792    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
62793        t[p] = s[p];
62794    if (s != null && typeof Object.getOwnPropertySymbols === "function")
62795        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
62796            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
62797                t[p[i]] = s[p[i]];
62798        }
62799    return t;
62800};
62801
62802
62803var isPromise = function (obj) {
62804    return !!obj && (typeof obj === 'object' || typeof obj === 'function') && typeof obj.then === 'function';
62805};
62806var getBoxPositionOnWindowCenter = function (width, height) { return ({
62807    left: window.outerWidth / 2 + (window.screenX || window.screenLeft || 0) - width / 2,
62808    top: window.outerHeight / 2 + (window.screenY || window.screenTop || 0) - height / 2,
62809}); };
62810var getBoxPositionOnScreenCenter = function (width, height) { return ({
62811    top: (window.screen.height - height) / 2,
62812    left: (window.screen.width - width) / 2,
62813}); };
62814function windowOpen(url, _a, onClose) {
62815    var height = _a.height, width = _a.width, configRest = __rest(_a, ["height", "width"]);
62816    var config = __assign({ height: height, width: width, location: 'no', toolbar: 'no', status: 'no', directories: 'no', menubar: 'no', scrollbars: 'yes', resizable: 'no', centerscreen: 'yes', chrome: 'yes' }, configRest);
62817    var shareDialog = window.open(url, '', Object.keys(config)
62818        .map(function (key) { return "".concat(key, "=").concat(config[key]); })
62819        .join(', '));
62820    if (onClose) {
62821        var interval_1 = window.setInterval(function () {
62822            try {
62823                if (shareDialog === null || shareDialog.closed) {
62824                    window.clearInterval(interval_1);
62825                    onClose(shareDialog);
62826                }
62827            }
62828            catch (e) {
62829                /* eslint-disable no-console */
62830                console.error(e);
62831                /* eslint-enable no-console */
62832            }
62833        }, 1000);
62834    }
62835    return shareDialog;
62836}
62837var ShareButton = /** @class */ (function (_super) {
62838    __extends(ShareButton, _super);
62839    function ShareButton() {
62840        var _this = _super !== null && _super.apply(this, arguments) || this;
62841        _this.openShareDialog = function (link) {
62842            var _a = _this.props, onShareWindowClose = _a.onShareWindowClose, _b = _a.windowHeight, windowHeight = _b === void 0 ? 400 : _b, _c = _a.windowPosition, windowPosition = _c === void 0 ? 'windowCenter' : _c, _d = _a.windowWidth, windowWidth = _d === void 0 ? 550 : _d;
62843            var windowConfig = __assign({ height: windowHeight, width: windowWidth }, (windowPosition === 'windowCenter'
62844                ? getBoxPositionOnWindowCenter(windowWidth, windowHeight)
62845                : getBoxPositionOnScreenCenter(windowWidth, windowHeight)));
62846            windowOpen(link, windowConfig, onShareWindowClose);
62847        };
62848        _this.handleClick = function (event) { return __awaiter(_this, void 0, void 0, function () {
62849            var _a, beforeOnClick, disabled, networkLink, onClick, url, openShareDialogOnClick, opts, link, returnVal;
62850            return __generator(this, function (_b) {
62851                switch (_b.label) {
62852                    case 0:
62853                        _a = this.props, beforeOnClick = _a.beforeOnClick, disabled = _a.disabled, networkLink = _a.networkLink, onClick = _a.onClick, url = _a.url, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts;
62854                        link = networkLink(url, opts);
62855                        if (disabled) {
62856                            return [2 /*return*/];
62857                        }
62858                        event.preventDefault();
62859                        if (!beforeOnClick) return [3 /*break*/, 2];
62860                        returnVal = beforeOnClick();
62861                        if (!isPromise(returnVal)) return [3 /*break*/, 2];
62862                        return [4 /*yield*/, returnVal];
62863                    case 1:
62864                        _b.sent();
62865                        _b.label = 2;
62866                    case 2:
62867                        if (openShareDialogOnClick) {
62868                            this.openShareDialog(link);
62869                        }
62870                        if (onClick) {
62871                            onClick(event, link);
62872                        }
62873                        return [2 /*return*/];
62874                }
62875            });
62876        }); };
62877        return _this;
62878    }
62879    ShareButton.prototype.render = function () {
62880        var _a = this.props, beforeOnClick = _a.beforeOnClick, children = _a.children, className = _a.className, disabled = _a.disabled, disabledStyle = _a.disabledStyle, forwardedRef = _a.forwardedRef, networkLink = _a.networkLink, networkName = _a.networkName, onShareWindowClose = _a.onShareWindowClose, openShareDialogOnClick = _a.openShareDialogOnClick, opts = _a.opts, resetButtonStyle = _a.resetButtonStyle, style = _a.style, url = _a.url, windowHeight = _a.windowHeight, windowPosition = _a.windowPosition, windowWidth = _a.windowWidth, rest = __rest(_a, ["beforeOnClick", "children", "className", "disabled", "disabledStyle", "forwardedRef", "networkLink", "networkName", "onShareWindowClose", "openShareDialogOnClick", "opts", "resetButtonStyle", "style", "url", "windowHeight", "windowPosition", "windowWidth"]);
62881        var newClassName = classnames__WEBPACK_IMPORTED_MODULE_1___default()('react-share__ShareButton', {
62882            'react-share__ShareButton--disabled': !!disabled,
62883            disabled: !!disabled,
62884        }, className);
62885        var newStyle = resetButtonStyle
62886            ? __assign(__assign({ backgroundColor: 'transparent', border: 'none', padding: 0, font: 'inherit', color: 'inherit', cursor: 'pointer' }, style), (disabled && disabledStyle)) : __assign(__assign({}, style), (disabled && disabledStyle));
62887        return (react__WEBPACK_IMPORTED_MODULE_0__.createElement("button", __assign({}, rest, { "aria-label": rest['aria-label'] || networkName, className: newClassName, onClick: this.handleClick, ref: forwardedRef, style: newStyle }), children));
62888    };
62889    ShareButton.defaultProps = {
62890        disabledStyle: { opacity: 0.6 },
62891        openShareDialogOnClick: true,
62892        resetButtonStyle: true,
62893    };
62894    return ShareButton;
62895}(react__WEBPACK_IMPORTED_MODULE_0__.Component));
62896/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ShareButton);
62897
62898
62899/***/ }),
62900
vendor: 2,977 bytes, lines 62901-62923
62901/***/ "./node_modules/react-share/es/TelegramIcon.js":
62902/*!*****************************************************!*\
62903  !*** ./node_modules/react-share/es/TelegramIcon.js ***!
62904  \*****************************************************/
62905/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62906
62907"use strict";
62908__webpack_require__.r(__webpack_exports__);
62909/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62910/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62911/* harmony export */ });
62912/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62913
62914var TelegramIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62915    color: '#37aee2',
62916    networkName: 'telegram',
62917    path: 'm45.90873,15.44335c-0.6901,-0.0281 -1.37668,0.14048 -1.96142,0.41265c-0.84989,0.32661 -8.63939,3.33986 -16.5237,6.39174c-3.9685,1.53296 -7.93349,3.06593 -10.98537,4.24067c-3.05012,1.1765 -5.34694,2.05098 -5.4681,2.09312c-0.80775,0.28096 -1.89996,0.63566 -2.82712,1.72788c-0.23354,0.27218 -0.46884,0.62161 -0.58825,1.10275c-0.11941,0.48114 -0.06673,1.09222 0.16682,1.5716c0.46533,0.96052 1.25376,1.35737 2.18443,1.71383c3.09051,0.99037 6.28638,1.93508 8.93263,2.8236c0.97632,3.44171 1.91401,6.89571 2.84116,10.34268c0.30554,0.69185 0.97105,0.94823 1.65764,0.95525l-0.00351,0.03512c0,0 0.53908,0.05268 1.06412,-0.07375c0.52679,-0.12292 1.18879,-0.42846 1.79109,-0.99212c0.662,-0.62161 2.45836,-2.38812 3.47683,-3.38552l7.6736,5.66477l0.06146,0.03512c0,0 0.84989,0.59703 2.09312,0.68132c0.62161,0.04214 1.4399,-0.07726 2.14229,-0.59176c0.70766,-0.51626 1.1765,-1.34683 1.396,-2.29506c0.65673,-2.86224 5.00979,-23.57745 5.75257,-27.00686l-0.02107,0.08077c0.51977,-1.93157 0.32837,-3.70159 -0.87096,-4.74991c-0.60054,-0.52152 -1.2924,-0.7498 -1.98425,-0.77965l0,0.00176zm-0.2072,3.29069c0.04741,0.0439 0.0439,0.0439 0.00351,0.04741c-0.01229,-0.00351 0.14048,0.2072 -0.15804,1.32576l-0.01229,0.04214l-0.00878,0.03863c-0.75858,3.50668 -5.15554,24.40802 -5.74203,26.96472c-0.08077,0.34417 -0.11414,0.31959 -0.09482,0.29852c-0.1756,-0.02634 -0.50045,-0.16506 -0.52679,-0.1756l-13.13468,-9.70175c4.4988,-4.33199 9.09945,-8.25307 13.744,-12.43229c0.8218,-0.41265 0.68483,-1.68573 -0.29852,-1.70681c-1.04305,0.24584 -1.92279,0.99564 -2.8798,1.47502c-5.49971,3.2626 -11.11882,6.13186 -16.55882,9.49279c-2.792,-0.97105 -5.57873,-1.77704 -8.15298,-2.57601c2.2336,-0.89555 4.00889,-1.55579 5.75608,-2.23009c3.05188,-1.1765 7.01687,-2.7042 10.98537,-4.24067c7.94051,-3.06944 15.92667,-6.16346 16.62028,-6.43037l0.05619,-0.02283l0.05268,-0.02283c0.19316,-0.0878 0.30378,-0.09658 0.35471,-0.10009c0,0 -0.01756,-0.05795 -0.00351,-0.04566l-0.00176,0zm-20.91715,22.0638l2.16687,1.60145c-0.93418,0.91311 -1.81743,1.77353 -2.45485,2.38812l0.28798,-3.98957',
62918});
62919/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TelegramIcon);
62920
62921
62922/***/ }),
62923
vendor: 1,771 bytes, lines 62924-62960
62924/***/ "./node_modules/react-share/es/TelegramShareButton.js":
62925/*!************************************************************!*\
62926  !*** ./node_modules/react-share/es/TelegramShareButton.js ***!
62927  \************************************************************/
62928/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62929
62930"use strict";
62931__webpack_require__.r(__webpack_exports__);
62932/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62933/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62934/* harmony export */ });
62935/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62936/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62937/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62938
62939
62940
62941function telegramLink(url, _a) {
62942    var title = _a.title;
62943    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'telegram.url');
62944    return ('https://telegram.me/share/url' +
62945        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
62946            url: url,
62947            text: title,
62948        }));
62949}
62950var TelegramShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('telegram', telegramLink, function (props) { return ({
62951    title: props.title,
62952}); }, {
62953    windowWidth: 550,
62954    windowHeight: 400,
62955});
62956/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TelegramShareButton);
62957
62958
62959/***/ }),
62960
vendor: 1,127 bytes, lines 62961-62983
62961/***/ "./node_modules/react-share/es/TumblrIcon.js":
62962/*!***************************************************!*\
62963  !*** ./node_modules/react-share/es/TumblrIcon.js ***!
62964  \***************************************************/
62965/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62966
62967"use strict";
62968__webpack_require__.r(__webpack_exports__);
62969/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62970/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62971/* harmony export */ });
62972/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
62973
62974var TumblrIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
62975    color: '#2c4762',
62976    networkName: 'tumblr',
62977    path: 'M39.2,41c-0.6,0.3-1.6,0.5-2.4,0.5c-2.4,0.1-2.9-1.7-2.9-3v-9.3h6v-4.5h-6V17c0,0-4.3,0-4.4,0 c-0.1,0-0.2,0.1-0.2,0.2c-0.3,2.3-1.4,6.4-5.9,8.1v3.9h3V39c0,3.4,2.5,8.1,9,8c2.2,0,4.7-1,5.2-1.8L39.2,41z',
62978});
62979/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TumblrIcon);
62980
62981
62982/***/ }),
62983
vendor: 2,029 bytes, lines 62984-63026
62984/***/ "./node_modules/react-share/es/TumblrShareButton.js":
62985/*!**********************************************************!*\
62986  !*** ./node_modules/react-share/es/TumblrShareButton.js ***!
62987  \**********************************************************/
62988/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
62989
62990"use strict";
62991__webpack_require__.r(__webpack_exports__);
62992/* harmony export */ __webpack_require__.d(__webpack_exports__, {
62993/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
62994/* harmony export */ });
62995/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
62996/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
62997/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
62998
62999
63000
63001function tumblrLink(url, _a) {
63002    var title = _a.title, caption = _a.caption, tags = _a.tags, posttype = _a.posttype;
63003    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'tumblr.url');
63004    return ('https://www.tumblr.com/widgets/share/tool' +
63005        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63006            canonicalUrl: url,
63007            title: title,
63008            caption: caption,
63009            tags: tags,
63010            posttype: posttype,
63011        }));
63012}
63013var TumblrShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('tumblr', tumblrLink, function (props) { return ({
63014    title: props.title,
63015    tags: (props.tags || []).join(','),
63016    caption: props.caption,
63017    posttype: props.posttype || 'link',
63018}); }, {
63019    windowWidth: 660,
63020    windowHeight: 460,
63021});
63022/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TumblrShareButton);
63023
63024
63025/***/ }),
63026
vendor: 1,789 bytes, lines 63027-63058
63027/***/ "./node_modules/react-share/es/TumblrShareCount.js":
63028/*!*********************************************************!*\
63029  !*** ./node_modules/react-share/es/TumblrShareCount.js ***!
63030  \*********************************************************/
63031/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63032
63033"use strict";
63034__webpack_require__.r(__webpack_exports__);
63035/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63036/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63037/* harmony export */ });
63038/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
63039/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
63040/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63041/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
63042
63043
63044
63045function getTumblrShareCount(shareUrl, callback) {
63046    var endpoint = 'https://api.tumblr.com/v2/share/stats';
63047    return jsonp__WEBPACK_IMPORTED_MODULE_0___default()(endpoint +
63048        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63049            url: shareUrl,
63050        }), function (err, data) {
63051        callback(!err && data && data.response ? data.response.note_count : undefined);
63052    });
63053}
63054/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__["default"])(getTumblrShareCount));
63055
63056
63057/***/ }),
63058
vendor: 1,432 bytes, lines 63059-63081
63059/***/ "./node_modules/react-share/es/TwitterIcon.js":
63060/*!****************************************************!*\
63061  !*** ./node_modules/react-share/es/TwitterIcon.js ***!
63062  \****************************************************/
63063/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63064
63065"use strict";
63066__webpack_require__.r(__webpack_exports__);
63067/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63068/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63069/* harmony export */ });
63070/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63071
63072var TwitterIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63073    color: '#00aced',
63074    networkName: 'twitter',
63075    path: 'M48,22.1c-1.2,0.5-2.4,0.9-3.8,1c1.4-0.8,2.4-2.1,2.9-3.6c-1.3,0.8-2.7,1.3-4.2,1.6 C41.7,19.8,40,19,38.2,19c-3.6,0-6.6,2.9-6.6,6.6c0,0.5,0.1,1,0.2,1.5c-5.5-0.3-10.3-2.9-13.5-6.9c-0.6,1-0.9,2.1-0.9,3.3 c0,2.3,1.2,4.3,2.9,5.5c-1.1,0-2.1-0.3-3-0.8c0,0,0,0.1,0,0.1c0,3.2,2.3,5.8,5.3,6.4c-0.6,0.1-1.1,0.2-1.7,0.2c-0.4,0-0.8,0-1.2-0.1 c0.8,2.6,3.3,4.5,6.1,4.6c-2.2,1.8-5.1,2.8-8.2,2.8c-0.5,0-1.1,0-1.6-0.1c2.9,1.9,6.4,2.9,10.1,2.9c12.1,0,18.7-10,18.7-18.7 c0-0.3,0-0.6,0-0.8C46,24.5,47.1,23.4,48,22.1z',
63076});
63077/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TwitterIcon);
63078
63079
63080/***/ }),
63081
vendor: 2,372 bytes, lines 63082-63126
63082/***/ "./node_modules/react-share/es/TwitterShareButton.js":
63083/*!***********************************************************!*\
63084  !*** ./node_modules/react-share/es/TwitterShareButton.js ***!
63085  \***********************************************************/
63086/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63087
63088"use strict";
63089__webpack_require__.r(__webpack_exports__);
63090/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63091/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63092/* harmony export */ });
63093/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63094/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63095/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63096
63097
63098
63099function twitterLink(url, _a) {
63100    var title = _a.title, via = _a.via, _b = _a.hashtags, hashtags = _b === void 0 ? [] : _b, _c = _a.related, related = _c === void 0 ? [] : _c;
63101    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'twitter.url');
63102    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(Array.isArray(hashtags), 'twitter.hashtags is not an array');
63103    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(Array.isArray(related), 'twitter.related is not an array');
63104    return ('https://twitter.com/share' +
63105        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63106            url: url,
63107            text: title,
63108            via: via,
63109            hashtags: hashtags.length > 0 ? hashtags.join(',') : undefined,
63110            related: related.length > 0 ? related.join(',') : undefined,
63111        }));
63112}
63113var TwitterShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('twitter', twitterLink, function (props) { return ({
63114    hashtags: props.hashtags,
63115    title: props.title,
63116    via: props.via,
63117    related: props.related,
63118}); }, {
63119    windowWidth: 550,
63120    windowHeight: 400,
63121});
63122/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (TwitterShareButton);
63123
63124
63125/***/ }),
63126
vendor: 1,716 bytes, lines 63127-63149
63127/***/ "./node_modules/react-share/es/VKIcon.js":
63128/*!***********************************************!*\
63129  !*** ./node_modules/react-share/es/VKIcon.js ***!
63130  \***********************************************/
63131/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63132
63133"use strict";
63134__webpack_require__.r(__webpack_exports__);
63135/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63136/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63137/* harmony export */ });
63138/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63139
63140var VKIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63141    color: '#45668e',
63142    networkName: 'vk',
63143    path: 'M44.94,44.84h-0.2c-2.17-.36-3.66-1.92-4.92-3.37C39.1,40.66,38,38.81,36.7,39c-1.85.3-.93,3.52-1.71,4.9-0.62,1.11-3.29.91-5.12,0.71-5.79-.62-8.75-3.77-11.35-7.14A64.13,64.13,0,0,1,11.6,26a10.59,10.59,0,0,1-1.51-4.49C11,20.7,12.56,21,14.11,21c1.31,0,3.36-.29,4.32.2C19,21.46,19.57,23,20,24a37.18,37.18,0,0,0,3.31,5.82c0.56,0.81,1.41,2.35,2.41,2.14s1.06-2.63,1.1-4.18c0-1.77,0-4-.5-4.9S25,22,24.15,21.47c0.73-1.49,2.72-1.63,5.12-1.63,2,0,4.84-.23,5.62,1.12s0.25,3.85.2,5.71c-0.06,2.09-.41,4.25,1,5.21,1.09-.12,1.68-1.2,2.31-2A28,28,0,0,0,41.72,24c0.44-1,.91-2.65,1.71-3,1.21-.47,3.15-0.1,4.92-0.1,1.46,0,4.05-.41,4.52.61,0.39,0.85-.75,3-1.1,3.57a61.88,61.88,0,0,1-4.12,5.61c-0.58.78-1.78,2-1.71,3.27,0.05,0.94,1,1.67,1.71,2.35a33.12,33.12,0,0,1,3.92,4.18c0.47,0.62,1.5,2,1.4,2.76C52.66,45.81,46.88,44.24,44.94,44.84Z',
63144});
63145/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VKIcon);
63146
63147
63148/***/ }),
63149
vendor: 1,965 bytes, lines 63150-63192
63150/***/ "./node_modules/react-share/es/VKShareButton.js":
63151/*!******************************************************!*\
63152  !*** ./node_modules/react-share/es/VKShareButton.js ***!
63153  \******************************************************/
63154/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63155
63156"use strict";
63157__webpack_require__.r(__webpack_exports__);
63158/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63159/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63160/* harmony export */ });
63161/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63162/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63163/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63164
63165
63166
63167function vkLink(url, _a) {
63168    var title = _a.title, image = _a.image, noParse = _a.noParse, noVkLinks = _a.noVkLinks;
63169    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'vk.url');
63170    return ('https://vk.com/share.php' +
63171        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63172            url: url,
63173            title: title,
63174            image: image,
63175            noparse: noParse ? 1 : 0,
63176            no_vk_links: noVkLinks ? 1 : 0,
63177        }));
63178}
63179var VKShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('vk', vkLink, function (props) { return ({
63180    title: props.title,
63181    image: props.image,
63182    noParse: props.noParse,
63183    noVkLinks: props.noVkLinks,
63184}); }, {
63185    windowWidth: 660,
63186    windowHeight: 460,
63187});
63188/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (VKShareButton);
63189
63190
63191/***/ }),
63192
vendor: 2,028 bytes, lines 63193-63233
63193/***/ "./node_modules/react-share/es/VKShareCount.js":
63194/*!*****************************************************!*\
63195  !*** ./node_modules/react-share/es/VKShareCount.js ***!
63196  \*****************************************************/
63197/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63198
63199"use strict";
63200__webpack_require__.r(__webpack_exports__);
63201/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63202/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63203/* harmony export */ });
63204/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! jsonp */ "./node_modules/jsonp/index.js");
63205/* harmony import */ var jsonp__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(jsonp__WEBPACK_IMPORTED_MODULE_0__);
63206/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63207/* harmony import */ var _hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareCount */ "./node_modules/react-share/es/hocs/createShareCount.js");
63208
63209
63210
63211function getVKShareCount(shareUrl, callback) {
63212    if (!window.VK)
63213        window.VK = {};
63214    window.VK.Share = {
63215        // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
63216        count: function (index, count) { return window.VK.callbacks[index](count); },
63217    };
63218    window.VK.callbacks = [];
63219    var url = 'https://vk.com/share.php';
63220    var index = window.VK.callbacks.length;
63221    window.VK.callbacks.push(callback);
63222    return jsonp__WEBPACK_IMPORTED_MODULE_0___default()(url +
63223        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63224            act: 'count',
63225            index: index,
63226            url: shareUrl,
63227        }));
63228}
63229/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,_hocs_createShareCount__WEBPACK_IMPORTED_MODULE_2__["default"])(getVKShareCount));
63230
63231
63232/***/ }),
63233
vendor: 2,410 bytes, lines 63234-63256
63234/***/ "./node_modules/react-share/es/ViberIcon.js":
63235/*!**************************************************!*\
63236  !*** ./node_modules/react-share/es/ViberIcon.js ***!
63237  \**************************************************/
63238/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63239
63240"use strict";
63241__webpack_require__.r(__webpack_exports__);
63242/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63243/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63244/* harmony export */ });
63245/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63246
63247var ViberIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63248    color: '#7C529E',
63249    networkName: 'viber',
63250    path: 'm31.0,12.3c9.0,0.2 16.4,6.2 18.0,15.2c0.2,1.5 0.3,3.0 0.4,4.6a1.0,1.0 0 0 1 -0.8,1.2l-0.1,0a1.1,1.1 0 0 1 -1.0,-1.2l0,0c-0.0,-1.2 -0.1,-2.5 -0.3,-3.8a16.1,16.1 0 0 0 -13.0,-13.5c-1.0,-0.1 -2.0,-0.2 -3.0,-0.3c-0.6,-0.0 -1.4,-0.1 -1.6,-0.8a1.1,1.1 0 0 1 0.9,-1.2l0.6,0l0.0,-0.0zm10.6,39.2a19.9,19.9 0 0 1 -2.1,-0.6c-6.9,-2.9 -13.2,-6.6 -18.3,-12.2a47.5,47.5 0 0 1 -7.0,-10.7c-0.8,-1.8 -1.6,-3.7 -2.4,-5.6c-0.6,-1.7 0.3,-3.4 1.4,-4.7a11.3,11.3 0 0 1 3.7,-2.8a2.4,2.4 0 0 1 3.0,0.7a39.0,39.0 0 0 1 4.7,6.5a3.1,3.1 0 0 1 -0.8,4.2c-0.3,0.2 -0.6,0.5 -1.0,0.8a3.3,3.3 0 0 0 -0.7,0.7a2.1,2.1 0 0 0 -0.1,1.9c1.7,4.9 4.7,8.7 9.7,10.8a5.0,5.0 0 0 0 2.5,0.6c1.5,-0.1 2.0,-1.8 3.1,-2.7a2.9,2.9 0 0 1 3.5,-0.1c1.1,0.7 2.2,1.4 3.3,2.2a37.8,37.8 0 0 1 3.1,2.4a2.4,2.4 0 0 1 0.7,3.0a10.4,10.4 0 0 1 -4.4,4.8a10.8,10.8 0 0 1 -1.9,0.6c-0.7,-0.2 0.6,-0.2 0,0l0.0,0l0,-0.0zm3.1,-21.4a4.2,4.2 0 0 1 -0.0,0.6a1.0,1.0 0 0 1 -1.9,0.1a2.7,2.7 0 0 1 -0.1,-0.8a10.9,10.9 0 0 0 -1.4,-5.5a10.2,10.2 0 0 0 -4.2,-4.0a12.3,12.3 0 0 0 -3.4,-1.0c-0.5,-0.0 -1.0,-0.1 -1.5,-0.2a0.9,0.9 0 0 1 -0.9,-1.0l0,-0.1a0.9,0.9 0 0 1 0.9,-0.9l0.1,0a14.1,14.1 0 0 1 5.9,1.5a11.9,11.9 0 0 1 6.5,9.3c0,0.1 0.0,0.3 0.0,0.5c0,0.4 0.0,0.9 0.0,1.5l0,0l0.0,0.0zm-5.6,-0.2a1.1,1.1 0 0 1 -1.2,-0.9l0,-0.1a11.3,11.3 0 0 0 -0.2,-1.4a4.0,4.0 0 0 0 -1.5,-2.3a3.9,3.9 0 0 0 -1.2,-0.5c-0.5,-0.1 -1.1,-0.1 -1.6,-0.2a1.0,1.0 0 0 1 -0.8,-1.1l0,0l0,0a1.0,1.0 0 0 1 1.1,-0.8c3.4,0.2 6.0,2.0 6.3,6.2a2.8,2.8 0 0 1 0,0.8a0.8,0.8 0 0 1 -0.8,0.7l0,0l0.0,-0.0z',
63251});
63252/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ViberIcon);
63253
63254
63255/***/ }),
63256
vendor: 1,802 bytes, lines 63257-63293
63257/***/ "./node_modules/react-share/es/ViberShareButton.js":
63258/*!*********************************************************!*\
63259  !*** ./node_modules/react-share/es/ViberShareButton.js ***!
63260  \*********************************************************/
63261/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63262
63263"use strict";
63264__webpack_require__.r(__webpack_exports__);
63265/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63266/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63267/* harmony export */ });
63268/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63269/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63270/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63271
63272
63273
63274function viberLink(url, _a) {
63275    var title = _a.title, separator = _a.separator;
63276    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'viber.url');
63277    return ('viber://forward' +
63278        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63279            text: title ? title + separator + url : url,
63280        }));
63281}
63282var ViberShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('viber', viberLink, function (props) { return ({
63283    title: props.title,
63284    separator: props.separator || ' ',
63285}); }, {
63286    windowWidth: 660,
63287    windowHeight: 460,
63288});
63289/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (ViberShareButton);
63290
63291
63292/***/ }),
63293
vendor: 4,021 bytes, lines 63294-63316
63294/***/ "./node_modules/react-share/es/WeiboIcon.js":
63295/*!**************************************************!*\
63296  !*** ./node_modules/react-share/es/WeiboIcon.js ***!
63297  \**************************************************/
63298/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63299
63300"use strict";
63301__webpack_require__.r(__webpack_exports__);
63302/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63303/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63304/* harmony export */ });
63305/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63306
63307var WeiboIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63308    color: '#CD201F',
63309    networkName: 'weibo',
63310    path: 'M40.9756152,15.0217119 C40.5000732,15.0546301 39.9999314,15.1204666 39.5325878,15.2192213 C38.6634928,15.4085016 38.0977589,16.2643757 38.2863368,17.1284787 C38.4667163,18.0008129 39.3194143,18.5686519 40.1885094,18.3793715 C42.8613908,17.8115326 45.7720411,18.6427174 47.7316073,20.8153207 C49.6911735,22.996153 50.2077122,25.975254 49.3714112,28.5840234 C49.1008441,29.4316684 49.5763861,30.3533789 50.4208857,30.6249537 C51.2653852,30.8965286 52.1754769,30.4192153 52.4542425,29.5715703 C53.6349013,25.9011885 52.9133876,21.7699494 50.1585171,18.7085538 C48.0923641,16.4042776 45.2063093,15.1533848 42.3530505,15.0217119 C41.8775084,14.9970227 41.4511594,14.9887937 40.9756152,15.0217119 Z M27.9227762,19.8277737 C24.9957268,20.140498 20.863421,22.4365431 17.2312548,26.0822378 C13.2711279,30.0571148 11,34.2871065 11,37.9328012 C11,44.9032373 19.8713401,49.125 28.5786978,49.125 C39.9917329,49.125 47.600423,42.4261409 47.600423,37.1427636 C47.600423,33.9496952 44.9603397,32.1638816 42.549827,31.4149913 C41.9594976,31.2339421 41.5167516,31.1434164 41.8283133,30.3616079 C42.5006339,28.66632 42.6236176,27.1932286 41.8939054,26.1480742 C40.5328692,24.1894405 36.7203236,24.2881952 32.448635,26.0822378 C32.448635,26.0822378 31.1203949,26.6912261 31.4647526,25.6213825 C32.1206742,23.4981576 32.0304845,21.712342 31.0056075,20.6836478 C30.2840938,19.9512176 29.2510184,19.6878718 27.9227762,19.8277737 Z M42.0906819,20.6836478 C41.6233383,20.6589586 41.1723917,20.716566 40.7132466,20.8153207 C39.9671353,20.9716828 39.4997917,21.7781784 39.6637721,22.5270687 C39.8277525,23.275959 40.5574647,23.7450433 41.303576,23.5804521 C42.1972686,23.3911718 43.2057485,23.6380596 43.8616701,24.3704897 C44.5175916,25.1029198 44.6733735,26.0657797 44.3864073,26.9381118 C44.1486363,27.6705419 44.5093932,28.4770397 45.2391054,28.7156963 C45.9688176,28.9461239 46.780521,28.5922524 47.0100936,27.8598223 C47.584026,26.0740087 47.2396661,24.0248493 45.8950269,22.5270687 C44.886547,21.4078489 43.4845162,20.7494842 42.0906819,20.6836478 Z M29.496988,29.9665891 C35.3100922,30.1723275 39.9917329,33.0691319 40.3852858,37.0769272 C40.8362324,41.6607904 35.5970585,45.9319315 28.6442899,46.6232144 C21.6915214,47.3144973 15.6488446,44.154347 15.197898,39.5787128 C14.7469514,34.9948495 20.059916,30.7237084 27.004486,30.0324256 C27.8735831,29.950131 28.6688875,29.9336709 29.496988,29.9665891 Z M25.5614586,34.3776322 C23.183744,34.5916017 20.9372116,35.9577073 19.9205332,37.9328012 C18.5348994,40.6238672 19.9041362,43.6029661 23.0689567,44.582284 C26.340366,45.5945202 30.1857056,44.0638213 31.5303448,41.1587879 C32.8503864,38.3195909 31.1613894,35.3734082 27.9227762,34.5751416 C27.1438688,34.3776322 26.356763,34.3035667 25.5614586,34.3776322 Z M24.052839,38.7228388 C24.3316067,38.7310678 24.5857748,38.8215935 24.8399449,38.9203482 C25.8648218,39.3400561 26.1845841,40.4428158 25.5614586,41.4221338 C24.9219361,42.3932227 23.5690963,42.8623069 22.5442194,42.4096807 C21.5357395,41.9652856 21.2487754,40.8542948 21.8882979,39.9078951 C22.3638421,39.2001542 23.2247386,38.7146097 24.052839,38.7228388 Z',
63311});
63312/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WeiboIcon);
63313
63314
63315/***/ }),
63316
vendor: 1,855 bytes, lines 63317-63356
63317/***/ "./node_modules/react-share/es/WeiboShareButton.js":
63318/*!*********************************************************!*\
63319  !*** ./node_modules/react-share/es/WeiboShareButton.js ***!
63320  \*********************************************************/
63321/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63322
63323"use strict";
63324__webpack_require__.r(__webpack_exports__);
63325/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63326/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63327/* harmony export */ });
63328/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63329/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63330/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63331
63332
63333
63334function weiboLink(url, _a) {
63335    var title = _a.title, image = _a.image;
63336    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'weibo.url');
63337    return ('http://service.weibo.com/share/share.php' +
63338        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63339            url: url,
63340            title: title,
63341            pic: image,
63342        }));
63343}
63344var WeiboShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('weibo', weiboLink, function (props) { return ({
63345    title: props.title,
63346    image: props.image,
63347}); }, {
63348    windowWidth: 660,
63349    windowHeight: 550,
63350    windowPosition: 'screenCenter',
63351});
63352/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WeiboShareButton);
63353
63354
63355/***/ }),
63356
vendor: 2,810 bytes, lines 63357-63379
63357/***/ "./node_modules/react-share/es/WhatsappIcon.js":
63358/*!*****************************************************!*\
63359  !*** ./node_modules/react-share/es/WhatsappIcon.js ***!
63360  \*****************************************************/
63361/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63362
63363"use strict";
63364__webpack_require__.r(__webpack_exports__);
63365/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63366/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63367/* harmony export */ });
63368/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63369
63370var WhatsappIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63371    color: '#25D366',
63372    networkName: 'whatsapp',
63373    path: 'm42.32286,33.93287c-0.5178,-0.2589 -3.04726,-1.49644 -3.52105,-1.66732c-0.4712,-0.17346 -0.81554,-0.2589 -1.15987,0.2589c-0.34175,0.51004 -1.33075,1.66474 -1.63108,2.00648c-0.30032,0.33658 -0.60064,0.36247 -1.11327,0.12945c-0.5178,-0.2589 -2.17994,-0.80259 -4.14759,-2.56312c-1.53269,-1.37217 -2.56312,-3.05503 -2.86603,-3.57283c-0.30033,-0.5178 -0.03366,-0.80259 0.22524,-1.06149c0.23301,-0.23301 0.5178,-0.59547 0.7767,-0.90616c0.25372,-0.31068 0.33657,-0.5178 0.51262,-0.85437c0.17088,-0.36246 0.08544,-0.64725 -0.04402,-0.90615c-0.12945,-0.2589 -1.15987,-2.79613 -1.58964,-3.80584c-0.41424,-1.00971 -0.84142,-0.88027 -1.15987,-0.88027c-0.29773,-0.02588 -0.64208,-0.02588 -0.98382,-0.02588c-0.34693,0 -0.90616,0.12945 -1.37736,0.62136c-0.4712,0.5178 -1.80194,1.76053 -1.80194,4.27186c0,2.51134 1.84596,4.945 2.10227,5.30747c0.2589,0.33657 3.63497,5.51458 8.80262,7.74113c1.23237,0.5178 2.1903,0.82848 2.94111,1.08738c1.23237,0.38836 2.35599,0.33657 3.24402,0.20712c0.99159,-0.15534 3.04985,-1.24272 3.47963,-2.45956c0.44013,-1.21683 0.44013,-2.22654 0.31068,-2.45955c-0.12945,-0.23301 -0.46601,-0.36247 -0.98382,-0.59548m-9.40068,12.84407l-0.02589,0c-3.05503,0 -6.08417,-0.82849 -8.72495,-2.38189l-0.62136,-0.37023l-6.47252,1.68286l1.73463,-6.29129l-0.41424,-0.64725c-1.70875,-2.71846 -2.6149,-5.85116 -2.6149,-9.07706c0,-9.39809 7.68934,-17.06155 17.15993,-17.06155c4.58253,0 8.88029,1.78642 12.11655,5.02268c3.23625,3.21036 5.02267,7.50812 5.02267,12.06476c-0.0078,9.3981 -7.69712,17.06155 -17.14699,17.06155m14.58906,-31.58846c-3.93529,-3.80584 -9.1133,-5.95471 -14.62789,-5.95471c-11.36055,0 -20.60848,9.2065 -20.61625,20.52564c0,3.61684 0.94757,7.14565 2.75211,10.26282l-2.92557,10.63564l10.93337,-2.85309c3.0136,1.63108 6.4052,2.4958 9.85634,2.49839l0.01037,0c11.36574,0 20.61884,-9.2091 20.62403,-20.53082c0,-5.48093 -2.14111,-10.64081 -6.03239,-14.51915',
63374});
63375/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WhatsappIcon);
63376
63377
63378/***/ }),
63379
vendor: 2,005 bytes, lines 63380-63421
63380/***/ "./node_modules/react-share/es/WhatsappShareButton.js":
63381/*!************************************************************!*\
63382  !*** ./node_modules/react-share/es/WhatsappShareButton.js ***!
63383  \************************************************************/
63384/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63385
63386"use strict";
63387__webpack_require__.r(__webpack_exports__);
63388/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63389/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63390/* harmony export */ });
63391/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63392/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63393/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63394
63395
63396
63397function isMobileOrTablet() {
63398    return /(android|iphone|ipad|mobile)/i.test(navigator.userAgent);
63399}
63400function whatsappLink(url, _a) {
63401    var title = _a.title, separator = _a.separator;
63402    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'whatsapp.url');
63403    return ('https://' +
63404        (isMobileOrTablet() ? 'api' : 'web') +
63405        '.whatsapp.com/send' +
63406        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63407            text: title ? title + separator + url : url,
63408        }));
63409}
63410var WhatsappShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('whatsapp', whatsappLink, function (props) { return ({
63411    title: props.title,
63412    separator: props.separator || ' ',
63413}); }, {
63414    windowWidth: 550,
63415    windowHeight: 400,
63416});
63417/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WhatsappShareButton);
63418
63419
63420/***/ }),
63421
vendor: 3,256 bytes, lines 63422-63444
63422/***/ "./node_modules/react-share/es/WorkplaceIcon.js":
63423/*!******************************************************!*\
63424  !*** ./node_modules/react-share/es/WorkplaceIcon.js ***!
63425  \******************************************************/
63426/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63427
63428"use strict";
63429__webpack_require__.r(__webpack_exports__);
63430/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63431/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63432/* harmony export */ });
63433/* harmony import */ var _hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./hocs/createIcon */ "./node_modules/react-share/es/hocs/createIcon.js");
63434
63435var WorkplaceIcon = (0,_hocs_createIcon__WEBPACK_IMPORTED_MODULE_0__["default"])({
63436    color: '#3b3d4a',
63437    networkName: 'workplace',
63438    path: 'M34.019,10.292c0.21,0.017,0.423,0.034,0.636,0.049 c3.657,0.262,6.976,1.464,9.929,3.635c3.331,2.448,5.635,5.65,6.914,9.584c0.699,2.152,0.983,4.365,0.885,6.623 c-0.136,3.171-1.008,6.13-2.619,8.867c-0.442,0.75-0.908,1.492-1.495,2.141c-0.588,0.651-1.29,1.141-2.146,1.383 c-1.496,0.426-3.247-0.283-3.961-1.642c-0.26-0.494-0.442-1.028-0.654-1.548c-1.156-2.838-2.311-5.679-3.465-8.519 c-0.017-0.042-0.037-0.082-0.065-0.145c-0.101,0.245-0.192,0.472-0.284,0.698c-1.237,3.051-2.475,6.103-3.711,9.155 c-0.466,1.153-1.351,1.815-2.538,2.045c-1.391,0.267-2.577-0.154-3.496-1.247c-0.174-0.209-0.31-0.464-0.415-0.717 c-2.128-5.22-4.248-10.442-6.37-15.665c-0.012-0.029-0.021-0.059-0.036-0.104c0.054-0.003,0.103-0.006,0.15-0.006 c1.498-0.001,2.997,0,4.495-0.004c0.12-0.001,0.176,0.03,0.222,0.146c1.557,3.846,3.117,7.691,4.679,11.536 c0.018,0.046,0.039,0.091,0.067,0.159c0.273-0.673,0.536-1.32,0.797-1.968c1.064-2.627,2.137-5.25,3.19-7.883 c0.482-1.208,1.376-1.917,2.621-2.135c1.454-0.255,2.644,0.257,3.522,1.449c0.133,0.18,0.229,0.393,0.313,0.603 c1.425,3.495,2.848,6.991,4.269,10.488c0.02,0.047,0.04,0.093,0.073,0.172c0.196-0.327,0.385-0.625,0.559-0.935 c0.783-1.397,1.323-2.886,1.614-4.461c0.242-1.312,0.304-2.634,0.187-3.962c-0.242-2.721-1.16-5.192-2.792-7.38 c-2.193-2.939-5.086-4.824-8.673-5.625c-1.553-0.346-3.124-0.405-4.705-0.257c-3.162,0.298-6.036,1.366-8.585,3.258 c-3.414,2.534-5.638,5.871-6.623,10.016c-0.417,1.76-0.546,3.547-0.384,5.348c0.417,4.601,2.359,8.444,5.804,11.517 c2.325,2.073,5.037,3.393,8.094,3.989c1.617,0.317,3.247,0.395,4.889,0.242c1-0.094,1.982-0.268,2.952-0.529 c0.04-0.01,0.081-0.018,0.128-0.028c0,1.526,0,3.047,0,4.586c-0.402,0.074-0.805,0.154-1.21,0.221 c-0.861,0.14-1.728,0.231-2.601,0.258c-0.035,0.002-0.071,0.013-0.108,0.021c-0.493,0-0.983,0-1.476,0 c-0.049-0.007-0.1-0.018-0.149-0.022c-0.315-0.019-0.629-0.033-0.945-0.058c-1.362-0.105-2.702-0.346-4.017-0.716 c-3.254-0.914-6.145-2.495-8.66-4.752c-2.195-1.971-3.926-4.29-5.176-6.963c-1.152-2.466-1.822-5.057-1.993-7.774 c-0.014-0.226-0.033-0.451-0.05-0.676c0-0.502,0-1.003,0-1.504c0.008-0.049,0.02-0.099,0.022-0.148 c0.036-1.025,0.152-2.043,0.338-3.052c0.481-2.616,1.409-5.066,2.8-7.331c2.226-3.625,5.25-6.386,9.074-8.254 c2.536-1.24,5.217-1.947,8.037-2.126c0.23-0.015,0.461-0.034,0.691-0.051C33.052,10.292,33.535,10.292,34.019,10.292z',
63439});
63440/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WorkplaceIcon);
63441
63442
63443/***/ }),
63444
vendor: 1,867 bytes, lines 63445-63483
63445/***/ "./node_modules/react-share/es/WorkplaceShareButton.js":
63446/*!*************************************************************!*\
63447  !*** ./node_modules/react-share/es/WorkplaceShareButton.js ***!
63448  \*************************************************************/
63449/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63450
63451"use strict";
63452__webpack_require__.r(__webpack_exports__);
63453/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63454/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63455/* harmony export */ });
63456/* harmony import */ var _utils_assert__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./utils/assert */ "./node_modules/react-share/es/utils/assert.js");
63457/* harmony import */ var _utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./utils/objectToGetParams */ "./node_modules/react-share/es/utils/objectToGetParams.js");
63458/* harmony import */ var _hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./hocs/createShareButton */ "./node_modules/react-share/es/hocs/createShareButton.js");
63459
63460
63461
63462function workplaceLink(url, _a) {
63463    var quote = _a.quote, hashtag = _a.hashtag;
63464    (0,_utils_assert__WEBPACK_IMPORTED_MODULE_0__["default"])(url, 'workplace.url');
63465    return ('https://work.facebook.com/sharer.php' +
63466        (0,_utils_objectToGetParams__WEBPACK_IMPORTED_MODULE_1__["default"])({
63467            u: url,
63468            quote: quote,
63469            hashtag: hashtag,
63470        }));
63471}
63472var WorkplaceShareButton = (0,_hocs_createShareButton__WEBPACK_IMPORTED_MODULE_2__["default"])('workplace', workplaceLink, function (props) { return ({
63473    quote: props.quote,
63474    hashtag: props.hashtag,
63475}); }, {
63476    windowWidth: 550,
63477    windowHeight: 400,
63478});
63479/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (WorkplaceShareButton);
63480
63481
63482/***/ }),
63483
vendor: 2,594 bytes, lines 63484-63537
63484/***/ "./node_modules/react-share/es/hocs/createIcon.js":
63485/*!********************************************************!*\
63486  !*** ./node_modules/react-share/es/hocs/createIcon.js ***!
63487  \********************************************************/
63488/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63489
63490"use strict";
63491__webpack_require__.r(__webpack_exports__);
63492/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63493/* harmony export */   "default": () => (/* binding */ createIcon)
63494/* harmony export */ });
63495/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
63496var __assign = (undefined && undefined.__assign) || function () {
63497    __assign = Object.assign || function(t) {
63498        for (var s, i = 1, n = arguments.length; i < n; i++) {
63499            s = arguments[i];
63500            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
63501                t[p] = s[p];
63502        }
63503        return t;
63504    };
63505    return __assign.apply(this, arguments);
63506};
63507var __rest = (undefined && undefined.__rest) || function (s, e) {
63508    var t = {};
63509    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
63510        t[p] = s[p];
63511    if (s != null && typeof Object.getOwnPropertySymbols === "function")
63512        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
63513            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
63514                t[p[i]] = s[p[i]];
63515        }
63516    return t;
63517};
63518
63519function createIcon(iconConfig) {
63520    var Icon = function (_a) {
63521        var bgStyle = _a.bgStyle, borderRadius = _a.borderRadius, iconFillColor = _a.iconFillColor, round = _a.round, size = _a.size, rest = __rest(_a, ["bgStyle", "borderRadius", "iconFillColor", "round", "size"]);
63522        return (react__WEBPACK_IMPORTED_MODULE_0__.createElement("svg", __assign({ viewBox: "0 0 64 64", width: size, height: size }, rest),
63523            round ? (react__WEBPACK_IMPORTED_MODULE_0__.createElement("circle", { cx: "32", cy: "32", r: "31", fill: iconConfig.color, style: bgStyle })) : (react__WEBPACK_IMPORTED_MODULE_0__.createElement("rect", { width: "64", height: "64", rx: borderRadius, ry: borderRadius, fill: iconConfig.color, style: bgStyle })),
63524            react__WEBPACK_IMPORTED_MODULE_0__.createElement("path", { d: iconConfig.path, fill: iconFillColor })));
63525    };
63526    Icon.defaultProps = {
63527        bgStyle: {},
63528        borderRadius: 0,
63529        iconFillColor: 'white',
63530        size: 64,
63531    };
63532    return Icon;
63533}
63534
63535
63536/***/ }),
63537
vendor: 2,149 bytes, lines 63538-63582
63538/***/ "./node_modules/react-share/es/hocs/createShareButton.js":
63539/*!***************************************************************!*\
63540  !*** ./node_modules/react-share/es/hocs/createShareButton.js ***!
63541  \***************************************************************/
63542/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63543
63544"use strict";
63545__webpack_require__.r(__webpack_exports__);
63546/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63547/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
63548/* harmony export */ });
63549/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
63550/* harmony import */ var _ShareButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../ShareButton */ "./node_modules/react-share/es/ShareButton.js");
63551var __assign = (undefined && undefined.__assign) || function () {
63552    __assign = Object.assign || function(t) {
63553        for (var s, i = 1, n = arguments.length; i < n; i++) {
63554            s = arguments[i];
63555            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
63556                t[p] = s[p];
63557        }
63558        return t;
63559    };
63560    return __assign.apply(this, arguments);
63561};
63562
63563
63564function createShareButton(networkName, link, optsMap, defaultProps) {
63565    function CreatedButton(props, ref) {
63566        var opts = optsMap(props);
63567        var passedProps = __assign({}, props);
63568        // remove keys from passed props that are passed as opts
63569        var optsKeys = Object.keys(opts);
63570        optsKeys.forEach(function (key) {
63571            delete passedProps[key];
63572        });
63573        return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(_ShareButton__WEBPACK_IMPORTED_MODULE_1__["default"], __assign({}, defaultProps, passedProps, { forwardedRef: ref, networkName: networkName, networkLink: link, opts: optsMap(props) })));
63574    }
63575    CreatedButton.displayName = "ShareButton-".concat(networkName);
63576    return (0,react__WEBPACK_IMPORTED_MODULE_0__.forwardRef)(CreatedButton);
63577}
63578/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (createShareButton);
63579
63580
63581/***/ }),
63582
vendor: 4,896 bytes, lines 63583-63686
63583/***/ "./node_modules/react-share/es/hocs/createShareCount.js":
63584/*!**************************************************************!*\
63585  !*** ./node_modules/react-share/es/hocs/createShareCount.js ***!
63586  \**************************************************************/
63587/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63588
63589"use strict";
63590__webpack_require__.r(__webpack_exports__);
63591/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63592/* harmony export */   "default": () => (/* binding */ createShareCount)
63593/* harmony export */ });
63594/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "./node_modules/react/index.js");
63595/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! classnames */ "./node_modules/classnames/index.js");
63596/* harmony import */ var classnames__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(classnames__WEBPACK_IMPORTED_MODULE_1__);
63597var __extends = (undefined && undefined.__extends) || (function () {
63598    var extendStatics = function (d, b) {
63599        extendStatics = Object.setPrototypeOf ||
63600            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
63601            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
63602        return extendStatics(d, b);
63603    };
63604    return function (d, b) {
63605        if (typeof b !== "function" && b !== null)
63606            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
63607        extendStatics(d, b);
63608        function __() { this.constructor = d; }
63609        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
63610    };
63611})();
63612var __assign = (undefined && undefined.__assign) || function () {
63613    __assign = Object.assign || function(t) {
63614        for (var s, i = 1, n = arguments.length; i < n; i++) {
63615            s = arguments[i];
63616            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
63617                t[p] = s[p];
63618        }
63619        return t;
63620    };
63621    return __assign.apply(this, arguments);
63622};
63623var __rest = (undefined && undefined.__rest) || function (s, e) {
63624    var t = {};
63625    for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
63626        t[p] = s[p];
63627    if (s != null && typeof Object.getOwnPropertySymbols === "function")
63628        for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
63629            if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
63630                t[p[i]] = s[p[i]];
63631        }
63632    return t;
63633};
63634
63635
63636var defaultChildren = function (shareCount) { return shareCount; };
63637var SocialMediaShareCount = /** @class */ (function (_super) {
63638    __extends(SocialMediaShareCount, _super);
63639    function SocialMediaShareCount(props) {
63640        var _this = _super.call(this, props) || this;
63641        _this._isMounted = false;
63642        _this.state = { count: 0, isLoading: false };
63643        return _this;
63644    }
63645    SocialMediaShareCount.prototype.componentDidMount = function () {
63646        this._isMounted = true;
63647        this.updateCount(this.props.url);
63648    };
63649    SocialMediaShareCount.prototype.componentDidUpdate = function (prevProps) {
63650        if (this.props.url !== prevProps.url) {
63651            this.updateCount(this.props.url);
63652        }
63653    };
63654    SocialMediaShareCount.prototype.componentWillUnmount = function () {
63655        this._isMounted = false;
63656    };
63657    SocialMediaShareCount.prototype.updateCount = function (url) {
63658        var _this = this;
63659        this.setState({
63660            isLoading: true,
63661        });
63662        this.props.getCount(url, function (count) {
63663            if (_this._isMounted) {
63664                _this.setState({
63665                    count: count,
63666                    isLoading: false,
63667                });
63668            }
63669        });
63670    };
63671    SocialMediaShareCount.prototype.render = function () {
63672        var _a = this.state, count = _a.count, isLoading = _a.isLoading;
63673        var _b = this.props, _c = _b.children, children = _c === void 0 ? defaultChildren : _c, className = _b.className, _ = _b.getCount, rest = __rest(_b, ["children", "className", "getCount"]);
63674        return (react__WEBPACK_IMPORTED_MODULE_0__.createElement("span", __assign({ className: classnames__WEBPACK_IMPORTED_MODULE_1___default()('react-share__ShareCount', className) }, rest), !isLoading && count !== undefined && children(count)));
63675    };
63676    return SocialMediaShareCount;
63677}(react__WEBPACK_IMPORTED_MODULE_0__.Component));
63678function createShareCount(getCount) {
63679    var ShareCount = function (props) { return (react__WEBPACK_IMPORTED_MODULE_0__.createElement(SocialMediaShareCount, __assign({ getCount: getCount }, props))); };
63680    ShareCount.displayName = "ShareCount(".concat(getCount.name, ")");
63681    return ShareCount;
63682}
63683
63684
63685/***/ }),
63686
vendor: 15,050 bytes, lines 63687-63847
63687/***/ "./node_modules/react-share/es/index.js":
63688/*!**********************************************!*\
63689  !*** ./node_modules/react-share/es/index.js ***!
63690  \**********************************************/
63691/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63692
63693"use strict";
63694__webpack_require__.r(__webpack_exports__);
63695/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63696/* harmony export */   EmailIcon: () => (/* reexport safe */ _EmailIcon__WEBPACK_IMPORTED_MODULE_0__["default"]),
63697/* harmony export */   EmailShareButton: () => (/* reexport safe */ _EmailShareButton__WEBPACK_IMPORTED_MODULE_1__["default"]),
63698/* harmony export */   FacebookIcon: () => (/* reexport safe */ _FacebookIcon__WEBPACK_IMPORTED_MODULE_2__["default"]),
63699/* harmony export */   FacebookMessengerIcon: () => (/* reexport safe */ _FacebookMessengerIcon__WEBPACK_IMPORTED_MODULE_3__["default"]),
63700/* harmony export */   FacebookMessengerShareButton: () => (/* reexport safe */ _FacebookMessengerShareButton__WEBPACK_IMPORTED_MODULE_4__["default"]),
63701/* harmony export */   FacebookShareButton: () => (/* reexport safe */ _FacebookShareButton__WEBPACK_IMPORTED_MODULE_5__["default"]),
63702/* harmony export */   FacebookShareCount: () => (/* reexport safe */ _FacebookShareCount__WEBPACK_IMPORTED_MODULE_6__["default"]),
63703/* harmony export */   HatenaIcon: () => (/* reexport safe */ _HatenaIcon__WEBPACK_IMPORTED_MODULE_7__["default"]),
63704/* harmony export */   HatenaShareButton: () => (/* reexport safe */ _HatenaShareButton__WEBPACK_IMPORTED_MODULE_8__["default"]),
63705/* harmony export */   HatenaShareCount: () => (/* reexport safe */ _HatenaShareCount__WEBPACK_IMPORTED_MODULE_9__["default"]),
63706/* harmony export */   InstapaperIcon: () => (/* reexport safe */ _InstapaperIcon__WEBPACK_IMPORTED_MODULE_10__["default"]),
63707/* harmony export */   InstapaperShareButton: () => (/* reexport safe */ _InstapaperShareButton__WEBPACK_IMPORTED_MODULE_11__["default"]),
63708/* harmony export */   LineIcon: () => (/* reexport safe */ _LineIcon__WEBPACK_IMPORTED_MODULE_12__["default"]),
63709/* harmony export */   LineShareButton: () => (/* reexport safe */ _LineShareButton__WEBPACK_IMPORTED_MODULE_13__["default"]),
63710/* harmony export */   LinkedinIcon: () => (/* reexport safe */ _LinkedinIcon__WEBPACK_IMPORTED_MODULE_14__["default"]),
63711/* harmony export */   LinkedinShareButton: () => (/* reexport safe */ _LinkedinShareButton__WEBPACK_IMPORTED_MODULE_15__["default"]),
63712/* harmony export */   LivejournalIcon: () => (/* reexport safe */ _LivejournalIcon__WEBPACK_IMPORTED_MODULE_16__["default"]),
63713/* harmony export */   LivejournalShareButton: () => (/* reexport safe */ _LivejournalShareButton__WEBPACK_IMPORTED_MODULE_17__["default"]),
63714/* harmony export */   MailruIcon: () => (/* reexport safe */ _MailruIcon__WEBPACK_IMPORTED_MODULE_18__["default"]),
63715/* harmony export */   MailruShareButton: () => (/* reexport safe */ _MailruShareButton__WEBPACK_IMPORTED_MODULE_19__["default"]),
63716/* harmony export */   OKIcon: () => (/* reexport safe */ _OKIcon__WEBPACK_IMPORTED_MODULE_20__["default"]),
63717/* harmony export */   OKShareButton: () => (/* reexport safe */ _OKShareButton__WEBPACK_IMPORTED_MODULE_21__["default"]),
63718/* harmony export */   OKShareCount: () => (/* reexport safe */ _OKShareCount__WEBPACK_IMPORTED_MODULE_22__["default"]),
63719/* harmony export */   PinterestIcon: () => (/* reexport safe */ _PinterestIcon__WEBPACK_IMPORTED_MODULE_23__["default"]),
63720/* harmony export */   PinterestShareButton: () => (/* reexport safe */ _PinterestShareButton__WEBPACK_IMPORTED_MODULE_24__["default"]),
63721/* harmony export */   PinterestShareCount: () => (/* reexport safe */ _PinterestShareCount__WEBPACK_IMPORTED_MODULE_25__["default"]),
63722/* harmony export */   PocketIcon: () => (/* reexport safe */ _PocketIcon__WEBPACK_IMPORTED_MODULE_26__["default"]),
63723/* harmony export */   PocketShareButton: () => (/* reexport safe */ _PocketShareButton__WEBPACK_IMPORTED_MODULE_27__["default"]),
63724/* harmony export */   RedditIcon: () => (/* reexport safe */ _RedditIcon__WEBPACK_IMPORTED_MODULE_28__["default"]),
63725/* harmony export */   RedditShareButton: () => (/* reexport safe */ _RedditShareButton__WEBPACK_IMPORTED_MODULE_29__["default"]),
63726/* harmony export */   RedditShareCount: () => (/* reexport safe */ _RedditShareCount__WEBPACK_IMPORTED_MODULE_30__["default"]),
63727/* harmony export */   TelegramIcon: () => (/* reexport safe */ _TelegramIcon__WEBPACK_IMPORTED_MODULE_31__["default"]),
63728/* harmony export */   TelegramShareButton: () => (/* reexport safe */ _TelegramShareButton__WEBPACK_IMPORTED_MODULE_32__["default"]),
63729/* harmony export */   TumblrIcon: () => (/* reexport safe */ _TumblrIcon__WEBPACK_IMPORTED_MODULE_33__["default"]),
63730/* harmony export */   TumblrShareButton: () => (/* reexport safe */ _TumblrShareButton__WEBPACK_IMPORTED_MODULE_34__["default"]),
63731/* harmony export */   TumblrShareCount: () => (/* reexport safe */ _TumblrShareCount__WEBPACK_IMPORTED_MODULE_35__["default"]),
63732/* harmony export */   TwitterIcon: () => (/* reexport safe */ _TwitterIcon__WEBPACK_IMPORTED_MODULE_36__["default"]),
63733/* harmony export */   TwitterShareButton: () => (/* reexport safe */ _TwitterShareButton__WEBPACK_IMPORTED_MODULE_37__["default"]),
63734/* harmony export */   VKIcon: () => (/* reexport safe */ _VKIcon__WEBPACK_IMPORTED_MODULE_40__["default"]),
63735/* harmony export */   VKShareButton: () => (/* reexport safe */ _VKShareButton__WEBPACK_IMPORTED_MODULE_41__["default"]),
63736/* harmony export */   VKShareCount: () => (/* reexport safe */ _VKShareCount__WEBPACK_IMPORTED_MODULE_42__["default"]),
63737/* harmony export */   ViberIcon: () => (/* reexport safe */ _ViberIcon__WEBPACK_IMPORTED_MODULE_38__["default"]),
63738/* harmony export */   ViberShareButton: () => (/* reexport safe */ _ViberShareButton__WEBPACK_IMPORTED_MODULE_39__["default"]),
63739/* harmony export */   WeiboIcon: () => (/* reexport safe */ _WeiboIcon__WEBPACK_IMPORTED_MODULE_43__["default"]),
63740/* harmony export */   WeiboShareButton: () => (/* reexport safe */ _WeiboShareButton__WEBPACK_IMPORTED_MODULE_44__["default"]),
63741/* harmony export */   WhatsappIcon: () => (/* reexport safe */ _WhatsappIcon__WEBPACK_IMPORTED_MODULE_45__["default"]),
63742/* harmony export */   WhatsappShareButton: () => (/* reexport safe */ _WhatsappShareButton__WEBPACK_IMPORTED_MODULE_46__["default"]),
63743/* harmony export */   WorkplaceIcon: () => (/* reexport safe */ _WorkplaceIcon__WEBPACK_IMPORTED_MODULE_47__["default"]),
63744/* harmony export */   WorkplaceShareButton: () => (/* reexport safe */ _WorkplaceShareButton__WEBPACK_IMPORTED_MODULE_48__["default"])
63745/* harmony export */ });
63746/* harmony import */ var _EmailIcon__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./EmailIcon */ "./node_modules/react-share/es/EmailIcon.js");
63747/* harmony import */ var _EmailShareButton__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./EmailShareButton */ "./node_modules/react-share/es/EmailShareButton.js");
63748/* harmony import */ var _FacebookIcon__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./FacebookIcon */ "./node_modules/react-share/es/FacebookIcon.js");
63749/* harmony import */ var _FacebookMessengerIcon__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./FacebookMessengerIcon */ "./node_modules/react-share/es/FacebookMessengerIcon.js");
63750/* harmony import */ var _FacebookMessengerShareButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./FacebookMessengerShareButton */ "./node_modules/react-share/es/FacebookMessengerShareButton.js");
63751/* harmony import */ var _FacebookShareButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./FacebookShareButton */ "./node_modules/react-share/es/FacebookShareButton.js");
63752/* harmony import */ var _FacebookShareCount__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./FacebookShareCount */ "./node_modules/react-share/es/FacebookShareCount.js");
63753/* harmony import */ var _HatenaIcon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./HatenaIcon */ "./node_modules/react-share/es/HatenaIcon.js");
63754/* harmony import */ var _HatenaShareButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./HatenaShareButton */ "./node_modules/react-share/es/HatenaShareButton.js");
63755/* harmony import */ var _HatenaShareCount__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./HatenaShareCount */ "./node_modules/react-share/es/HatenaShareCount.js");
63756/* harmony import */ var _InstapaperIcon__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./InstapaperIcon */ "./node_modules/react-share/es/InstapaperIcon.js");
63757/* harmony import */ var _InstapaperShareButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./InstapaperShareButton */ "./node_modules/react-share/es/InstapaperShareButton.js");
63758/* harmony import */ var _LineIcon__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./LineIcon */ "./node_modules/react-share/es/LineIcon.js");
63759/* harmony import */ var _LineShareButton__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./LineShareButton */ "./node_modules/react-share/es/LineShareButton.js");
63760/* harmony import */ var _LinkedinIcon__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./LinkedinIcon */ "./node_modules/react-share/es/LinkedinIcon.js");
63761/* harmony import */ var _LinkedinShareButton__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./LinkedinShareButton */ "./node_modules/react-share/es/LinkedinShareButton.js");
63762/* harmony import */ var _LivejournalIcon__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./LivejournalIcon */ "./node_modules/react-share/es/LivejournalIcon.js");
63763/* harmony import */ var _LivejournalShareButton__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./LivejournalShareButton */ "./node_modules/react-share/es/LivejournalShareButton.js");
63764/* harmony import */ var _MailruIcon__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./MailruIcon */ "./node_modules/react-share/es/MailruIcon.js");
63765/* harmony import */ var _MailruShareButton__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MailruShareButton */ "./node_modules/react-share/es/MailruShareButton.js");
63766/* harmony import */ var _OKIcon__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./OKIcon */ "./node_modules/react-share/es/OKIcon.js");
63767/* harmony import */ var _OKShareButton__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./OKShareButton */ "./node_modules/react-share/es/OKShareButton.js");
63768/* harmony import */ var _OKShareCount__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./OKShareCount */ "./node_modules/react-share/es/OKShareCount.js");
63769/* harmony import */ var _PinterestIcon__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./PinterestIcon */ "./node_modules/react-share/es/PinterestIcon.js");
63770/* harmony import */ var _PinterestShareButton__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./PinterestShareButton */ "./node_modules/react-share/es/PinterestShareButton.js");
63771/* harmony import */ var _PinterestShareCount__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./PinterestShareCount */ "./node_modules/react-share/es/PinterestShareCount.js");
63772/* harmony import */ var _PocketIcon__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./PocketIcon */ "./node_modules/react-share/es/PocketIcon.js");
63773/* harmony import */ var _PocketShareButton__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./PocketShareButton */ "./node_modules/react-share/es/PocketShareButton.js");
63774/* harmony import */ var _RedditIcon__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./RedditIcon */ "./node_modules/react-share/es/RedditIcon.js");
63775/* harmony import */ var _RedditShareButton__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./RedditShareButton */ "./node_modules/react-share/es/RedditShareButton.js");
63776/* harmony import */ var _RedditShareCount__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./RedditShareCount */ "./node_modules/react-share/es/RedditShareCount.js");
63777/* harmony import */ var _TelegramIcon__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./TelegramIcon */ "./node_modules/react-share/es/TelegramIcon.js");
63778/* harmony import */ var _TelegramShareButton__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./TelegramShareButton */ "./node_modules/react-share/es/TelegramShareButton.js");
63779/* harmony import */ var _TumblrIcon__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./TumblrIcon */ "./node_modules/react-share/es/TumblrIcon.js");
63780/* harmony import */ var _TumblrShareButton__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./TumblrShareButton */ "./node_modules/react-share/es/TumblrShareButton.js");
63781/* harmony import */ var _TumblrShareCount__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./TumblrShareCount */ "./node_modules/react-share/es/TumblrShareCount.js");
63782/* harmony import */ var _TwitterIcon__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./TwitterIcon */ "./node_modules/react-share/es/TwitterIcon.js");
63783/* harmony import */ var _TwitterShareButton__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./TwitterShareButton */ "./node_modules/react-share/es/TwitterShareButton.js");
63784/* harmony import */ var _ViberIcon__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./ViberIcon */ "./node_modules/react-share/es/ViberIcon.js");
63785/* harmony import */ var _ViberShareButton__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./ViberShareButton */ "./node_modules/react-share/es/ViberShareButton.js");
63786/* harmony import */ var _VKIcon__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./VKIcon */ "./node_modules/react-share/es/VKIcon.js");
63787/* harmony import */ var _VKShareButton__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! ./VKShareButton */ "./node_modules/react-share/es/VKShareButton.js");
63788/* harmony import */ var _VKShareCount__WEBPACK_IMPORTED_MODULE_42__ = __webpack_require__(/*! ./VKShareCount */ "./node_modules/react-share/es/VKShareCount.js");
63789/* harmony import */ var _WeiboIcon__WEBPACK_IMPORTED_MODULE_43__ = __webpack_require__(/*! ./WeiboIcon */ "./node_modules/react-share/es/WeiboIcon.js");
63790/* harmony import */ var _WeiboShareButton__WEBPACK_IMPORTED_MODULE_44__ = __webpack_require__(/*! ./WeiboShareButton */ "./node_modules/react-share/es/WeiboShareButton.js");
63791/* harmony import */ var _WhatsappIcon__WEBPACK_IMPORTED_MODULE_45__ = __webpack_require__(/*! ./WhatsappIcon */ "./node_modules/react-share/es/WhatsappIcon.js");
63792/* harmony import */ var _WhatsappShareButton__WEBPACK_IMPORTED_MODULE_46__ = __webpack_require__(/*! ./WhatsappShareButton */ "./node_modules/react-share/es/WhatsappShareButton.js");
63793/* harmony import */ var _WorkplaceIcon__WEBPACK_IMPORTED_MODULE_47__ = __webpack_require__(/*! ./WorkplaceIcon */ "./node_modules/react-share/es/WorkplaceIcon.js");
63794/* harmony import */ var _WorkplaceShareButton__WEBPACK_IMPORTED_MODULE_48__ = __webpack_require__(/*! ./WorkplaceShareButton */ "./node_modules/react-share/es/WorkplaceShareButton.js");
63795
63796
63797
63798
63799
63800
63801
63802
63803
63804
63805
63806
63807
63808
63809
63810
63811
63812
63813
63814
63815
63816
63817
63818
63819
63820
63821
63822
63823
63824
63825
63826
63827
63828
63829
63830
63831
63832
63833
63834
63835
63836
63837
63838
63839
63840
63841
63842
63843
63844
63845
63846/***/ }),
63847
vendor: 1,708 bytes, lines 63848-63891
63848/***/ "./node_modules/react-share/es/utils/assert.js":
63849/*!*****************************************************!*\
63850  !*** ./node_modules/react-share/es/utils/assert.js ***!
63851  \*****************************************************/
63852/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63853
63854"use strict";
63855__webpack_require__.r(__webpack_exports__);
63856/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63857/* harmony export */   "default": () => (/* binding */ assert)
63858/* harmony export */ });
63859var __extends = (undefined && undefined.__extends) || (function () {
63860    var extendStatics = function (d, b) {
63861        extendStatics = Object.setPrototypeOf ||
63862            ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
63863            function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
63864        return extendStatics(d, b);
63865    };
63866    return function (d, b) {
63867        if (typeof b !== "function" && b !== null)
63868            throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
63869        extendStatics(d, b);
63870        function __() { this.constructor = d; }
63871        d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
63872    };
63873})();
63874var AssertionError = /** @class */ (function (_super) {
63875    __extends(AssertionError, _super);
63876    function AssertionError(message) {
63877        var _this = _super.call(this, message) || this;
63878        _this.name = 'AssertionError';
63879        return _this;
63880    }
63881    return AssertionError;
63882}(Error));
63883function assert(value, message) {
63884    if (!value) {
63885        throw new AssertionError(message);
63886    }
63887}
63888
63889
63890/***/ }),
63891
vendor: 1,032 bytes, lines 63892-63918
63892/***/ "./node_modules/react-share/es/utils/objectToGetParams.js":
63893/*!****************************************************************!*\
63894  !*** ./node_modules/react-share/es/utils/objectToGetParams.js ***!
63895  \****************************************************************/
63896/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
63897
63898"use strict";
63899__webpack_require__.r(__webpack_exports__);
63900/* harmony export */ __webpack_require__.d(__webpack_exports__, {
63901/* harmony export */   "default": () => (/* binding */ objectToGetParams)
63902/* harmony export */ });
63903function objectToGetParams(object) {
63904    var params = Object.entries(object)
63905        .filter(function (_a) {
63906        var value = _a[1];
63907        return value !== undefined && value !== null;
63908    })
63909        .map(function (_a) {
63910        var key = _a[0], value = _a[1];
63911        return "".concat(encodeURIComponent(key), "=").concat(encodeURIComponent(String(value)));
63912    });
63913    return params.length > 0 ? "?".concat(params.join('&')) : '';
63914}
63915
63916
63917/***/ }),
63918
vendor: 3,966 bytes, lines 63919-64054
63919/***/ "./node_modules/react-side-effect/lib/index.js":
63920/*!*****************************************************!*\
63921  !*** ./node_modules/react-side-effect/lib/index.js ***!
63922  \*****************************************************/
63923/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
63924
63925"use strict";
63926
63927
63928function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
63929
63930var React = __webpack_require__(/*! react */ "./node_modules/react/index.js");
63931var React__default = _interopDefault(React);
63932
63933function _defineProperty(obj, key, value) {
63934  if (key in obj) {
63935    Object.defineProperty(obj, key, {
63936      value: value,
63937      enumerable: true,
63938      configurable: true,
63939      writable: true
63940    });
63941  } else {
63942    obj[key] = value;
63943  }
63944
63945  return obj;
63946}
63947
63948function _inheritsLoose(subClass, superClass) {
63949  subClass.prototype = Object.create(superClass.prototype);
63950  subClass.prototype.constructor = subClass;
63951  subClass.__proto__ = superClass;
63952}
63953
63954var canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);
63955function withSideEffect(reducePropsToState, handleStateChangeOnClient, mapStateOnServer) {
63956  if (typeof reducePropsToState !== 'function') {
63957    throw new Error('Expected reducePropsToState to be a function.');
63958  }
63959
63960  if (typeof handleStateChangeOnClient !== 'function') {
63961    throw new Error('Expected handleStateChangeOnClient to be a function.');
63962  }
63963
63964  if (typeof mapStateOnServer !== 'undefined' && typeof mapStateOnServer !== 'function') {
63965    throw new Error('Expected mapStateOnServer to either be undefined or a function.');
63966  }
63967
63968  function getDisplayName(WrappedComponent) {
63969    return WrappedComponent.displayName || WrappedComponent.name || 'Component';
63970  }
63971
63972  return function wrap(WrappedComponent) {
63973    if (typeof WrappedComponent !== 'function') {
63974      throw new Error('Expected WrappedComponent to be a React component.');
63975    }
63976
63977    var mountedInstances = [];
63978    var state;
63979
63980    function emitChange() {
63981      state = reducePropsToState(mountedInstances.map(function (instance) {
63982        return instance.props;
63983      }));
63984
63985      if (SideEffect.canUseDOM) {
63986        handleStateChangeOnClient(state);
63987      } else if (mapStateOnServer) {
63988        state = mapStateOnServer(state);
63989      }
63990    }
63991
63992    var SideEffect =
63993    /*#__PURE__*/
63994    function (_PureComponent) {
63995      _inheritsLoose(SideEffect, _PureComponent);
63996
63997      function SideEffect() {
63998        return _PureComponent.apply(this, arguments) || this;
63999      }
64000
64001      // Try to use displayName of wrapped component
64002      // Expose canUseDOM so tests can monkeypatch it
64003      SideEffect.peek = function peek() {
64004        return state;
64005      };
64006
64007      SideEffect.rewind = function rewind() {
64008        if (SideEffect.canUseDOM) {
64009          throw new Error('You may only call rewind() on the server. Call peek() to read the current state.');
64010        }
64011
64012        var recordedState = state;
64013        state = undefined;
64014        mountedInstances = [];
64015        return recordedState;
64016      };
64017
64018      var _proto = SideEffect.prototype;
64019
64020      _proto.UNSAFE_componentWillMount = function UNSAFE_componentWillMount() {
64021        mountedInstances.push(this);
64022        emitChange();
64023      };
64024
64025      _proto.componentDidUpdate = function componentDidUpdate() {
64026        emitChange();
64027      };
64028
64029      _proto.componentWillUnmount = function componentWillUnmount() {
64030        var index = mountedInstances.indexOf(this);
64031        mountedInstances.splice(index, 1);
64032        emitChange();
64033      };
64034
64035      _proto.render = function render() {
64036        return React__default.createElement(WrappedComponent, this.props);
64037      };
64038
64039      return SideEffect;
64040    }(React.PureComponent);
64041
64042    _defineProperty(SideEffect, "displayName", "SideEffect(" + getDisplayName(WrappedComponent) + ")");
64043
64044    _defineProperty(SideEffect, "canUseDOM", canUseDOM);
64045
64046    return SideEffect;
64047  };
64048}
64049
64050module.exports = withSideEffect;
64051
64052
64053/***/ }),
64054
vendor: 72,479 bytes, lines 64055-66398
64055/***/ "./node_modules/react/cjs/react.development.js":
64056/*!*****************************************************!*\
64057  !*** ./node_modules/react/cjs/react.development.js ***!
64058  \*****************************************************/
64059/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
64060
64061"use strict";
64062/** @license React v17.0.2
64063 * react.development.js
64064 *
64065 * Copyright (c) Facebook, Inc. and its affiliates.
64066 *
64067 * This source code is licensed under the MIT license found in the
64068 * LICENSE file in the root directory of this source tree.
64069 */
64070
64071
64072
64073if (true) {
64074  (function() {
64075'use strict';
64076
64077var _assign = __webpack_require__(/*! object-assign */ "./node_modules/object-assign/index.js");
64078
64079// TODO: this is special because it gets imported during build.
64080var ReactVersion = '17.0.2';
64081
64082// ATTENTION
64083// When adding new symbols to this file,
64084// Please consider also adding to 'react-devtools-shared/src/backend/ReactSymbols'
64085// The Symbol used to tag the ReactElement-like types. If there is no native Symbol
64086// nor polyfill, then a plain number is used for performance.
64087var REACT_ELEMENT_TYPE = 0xeac7;
64088var REACT_PORTAL_TYPE = 0xeaca;
64089exports.Fragment = 0xeacb;
64090exports.StrictMode = 0xeacc;
64091exports.Profiler = 0xead2;
64092var REACT_PROVIDER_TYPE = 0xeacd;
64093var REACT_CONTEXT_TYPE = 0xeace;
64094var REACT_FORWARD_REF_TYPE = 0xead0;
64095exports.Suspense = 0xead1;
64096var REACT_SUSPENSE_LIST_TYPE = 0xead8;
64097var REACT_MEMO_TYPE = 0xead3;
64098var REACT_LAZY_TYPE = 0xead4;
64099var REACT_BLOCK_TYPE = 0xead9;
64100var REACT_SERVER_BLOCK_TYPE = 0xeada;
64101var REACT_FUNDAMENTAL_TYPE = 0xead5;
64102var REACT_SCOPE_TYPE = 0xead7;
64103var REACT_OPAQUE_ID_TYPE = 0xeae0;
64104var REACT_DEBUG_TRACING_MODE_TYPE = 0xeae1;
64105var REACT_OFFSCREEN_TYPE = 0xeae2;
64106var REACT_LEGACY_HIDDEN_TYPE = 0xeae3;
64107
64108if (typeof Symbol === 'function' && Symbol.for) {
64109  var symbolFor = Symbol.for;
64110  REACT_ELEMENT_TYPE = symbolFor('react.element');
64111  REACT_PORTAL_TYPE = symbolFor('react.portal');
64112  exports.Fragment = symbolFor('react.fragment');
64113  exports.StrictMode = symbolFor('react.strict_mode');
64114  exports.Profiler = symbolFor('react.profiler');
64115  REACT_PROVIDER_TYPE = symbolFor('react.provider');
64116  REACT_CONTEXT_TYPE = symbolFor('react.context');
64117  REACT_FORWARD_REF_TYPE = symbolFor('react.forward_ref');
64118  exports.Suspense = symbolFor('react.suspense');
64119  REACT_SUSPENSE_LIST_TYPE = symbolFor('react.suspense_list');
64120  REACT_MEMO_TYPE = symbolFor('react.memo');
64121  REACT_LAZY_TYPE = symbolFor('react.lazy');
64122  REACT_BLOCK_TYPE = symbolFor('react.block');
64123  REACT_SERVER_BLOCK_TYPE = symbolFor('react.server.block');
64124  REACT_FUNDAMENTAL_TYPE = symbolFor('react.fundamental');
64125  REACT_SCOPE_TYPE = symbolFor('react.scope');
64126  REACT_OPAQUE_ID_TYPE = symbolFor('react.opaque.id');
64127  REACT_DEBUG_TRACING_MODE_TYPE = symbolFor('react.debug_trace_mode');
64128  REACT_OFFSCREEN_TYPE = symbolFor('react.offscreen');
64129  REACT_LEGACY_HIDDEN_TYPE = symbolFor('react.legacy_hidden');
64130}
64131
64132var MAYBE_ITERATOR_SYMBOL = typeof Symbol === 'function' && Symbol.iterator;
64133var FAUX_ITERATOR_SYMBOL = '@@iterator';
64134function getIteratorFn(maybeIterable) {
64135  if (maybeIterable === null || typeof maybeIterable !== 'object') {
64136    return null;
64137  }
64138
64139  var maybeIterator = MAYBE_ITERATOR_SYMBOL && maybeIterable[MAYBE_ITERATOR_SYMBOL] || maybeIterable[FAUX_ITERATOR_SYMBOL];
64140
64141  if (typeof maybeIterator === 'function') {
64142    return maybeIterator;
64143  }
64144
64145  return null;
64146}
64147
64148/**
64149 * Keeps track of the current dispatcher.
64150 */
64151var ReactCurrentDispatcher = {
64152  /**
64153   * @internal
64154   * @type {ReactComponent}
64155   */
64156  current: null
64157};
64158
64159/**
64160 * Keeps track of the current batch's configuration such as how long an update
64161 * should suspend for if it needs to.
64162 */
64163var ReactCurrentBatchConfig = {
64164  transition: 0
64165};
64166
64167/**
64168 * Keeps track of the current owner.
64169 *
64170 * The current owner is the component who should own any components that are
64171 * currently being constructed.
64172 */
64173var ReactCurrentOwner = {
64174  /**
64175   * @internal
64176   * @type {ReactComponent}
64177   */
64178  current: null
64179};
64180
64181var ReactDebugCurrentFrame = {};
64182var currentExtraStackFrame = null;
64183function setExtraStackFrame(stack) {
64184  {
64185    currentExtraStackFrame = stack;
64186  }
64187}
64188
64189{
64190  ReactDebugCurrentFrame.setExtraStackFrame = function (stack) {
64191    {
64192      currentExtraStackFrame = stack;
64193    }
64194  }; // Stack implementation injected by the current renderer.
64195
64196
64197  ReactDebugCurrentFrame.getCurrentStack = null;
64198
64199  ReactDebugCurrentFrame.getStackAddendum = function () {
64200    var stack = ''; // Add an extra top frame while an element is being validated
64201
64202    if (currentExtraStackFrame) {
64203      stack += currentExtraStackFrame;
64204    } // Delegate to the injected renderer-specific implementation
64205
64206
64207    var impl = ReactDebugCurrentFrame.getCurrentStack;
64208
64209    if (impl) {
64210      stack += impl() || '';
64211    }
64212
64213    return stack;
64214  };
64215}
64216
64217/**
64218 * Used by act() to track whether you're inside an act() scope.
64219 */
64220var IsSomeRendererActing = {
64221  current: false
64222};
64223
64224var ReactSharedInternals = {
64225  ReactCurrentDispatcher: ReactCurrentDispatcher,
64226  ReactCurrentBatchConfig: ReactCurrentBatchConfig,
64227  ReactCurrentOwner: ReactCurrentOwner,
64228  IsSomeRendererActing: IsSomeRendererActing,
64229  // Used by renderers to avoid bundling object-assign twice in UMD bundles:
64230  assign: _assign
64231};
64232
64233{
64234  ReactSharedInternals.ReactDebugCurrentFrame = ReactDebugCurrentFrame;
64235}
64236
64237// by calls to these methods by a Babel plugin.
64238//
64239// In PROD (or in packages without access to React internals),
64240// they are left as they are instead.
64241
64242function warn(format) {
64243  {
64244    for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
64245      args[_key - 1] = arguments[_key];
64246    }
64247
64248    printWarning('warn', format, args);
64249  }
64250}
64251function error(format) {
64252  {
64253    for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {
64254      args[_key2 - 1] = arguments[_key2];
64255    }
64256
64257    printWarning('error', format, args);
64258  }
64259}
64260
64261function printWarning(level, format, args) {
64262  // When changing this logic, you might want to also
64263  // update consoleWithStackDev.www.js as well.
64264  {
64265    var ReactDebugCurrentFrame = ReactSharedInternals.ReactDebugCurrentFrame;
64266    var stack = ReactDebugCurrentFrame.getStackAddendum();
64267
64268    if (stack !== '') {
64269      format += '%s';
64270      args = args.concat([stack]);
64271    }
64272
64273    var argsWithFormat = args.map(function (item) {
64274      return '' + item;
64275    }); // Careful: RN currently depends on this prefix
64276
64277    argsWithFormat.unshift('Warning: ' + format); // We intentionally don't use spread (or .apply) directly because it
64278    // breaks IE9: https://github.com/facebook/react/issues/13610
64279    // eslint-disable-next-line react-internal/no-production-logging
64280
64281    Function.prototype.apply.call(console[level], console, argsWithFormat);
64282  }
64283}
64284
64285var didWarnStateUpdateForUnmountedComponent = {};
64286
64287function warnNoop(publicInstance, callerName) {
64288  {
64289    var _constructor = publicInstance.constructor;
64290    var componentName = _constructor && (_constructor.displayName || _constructor.name) || 'ReactClass';
64291    var warningKey = componentName + "." + callerName;
64292
64293    if (didWarnStateUpdateForUnmountedComponent[warningKey]) {
64294      return;
64295    }
64296
64297    error("Can't call %s on a component that is not yet mounted. " + 'This is a no-op, but it might indicate a bug in your application. ' + 'Instead, assign to `this.state` directly or define a `state = {};` ' + 'class property with the desired state in the %s component.', callerName, componentName);
64298
64299    didWarnStateUpdateForUnmountedComponent[warningKey] = true;
64300  }
64301}
64302/**
64303 * This is the abstract API for an update queue.
64304 */
64305
64306
64307var ReactNoopUpdateQueue = {
64308  /**
64309   * Checks whether or not this composite component is mounted.
64310   * @param {ReactClass} publicInstance The instance we want to test.
64311   * @return {boolean} True if mounted, false otherwise.
64312   * @protected
64313   * @final
64314   */
64315  isMounted: function (publicInstance) {
64316    return false;
64317  },
64318
64319  /**
64320   * Forces an update. This should only be invoked when it is known with
64321   * certainty that we are **not** in a DOM transaction.
64322   *
64323   * You may want to call this when you know that some deeper aspect of the
64324   * component's state has changed but `setState` was not called.
64325   *
64326   * This will not invoke `shouldComponentUpdate`, but it will invoke
64327   * `componentWillUpdate` and `componentDidUpdate`.
64328   *
64329   * @param {ReactClass} publicInstance The instance that should rerender.
64330   * @param {?function} callback Called after component is updated.
64331   * @param {?string} callerName name of the calling function in the public API.
64332   * @internal
64333   */
64334  enqueueForceUpdate: function (publicInstance, callback, callerName) {
64335    warnNoop(publicInstance, 'forceUpdate');
64336  },
64337
64338  /**
64339   * Replaces all of the state. Always use this or `setState` to mutate state.
64340   * You should treat `this.state` as immutable.
64341   *
64342   * There is no guarantee that `this.state` will be immediately updated, so
64343   * accessing `this.state` after calling this method may return the old value.
64344   *
64345   * @param {ReactClass} publicInstance The instance that should rerender.
64346   * @param {object} completeState Next state.
64347   * @param {?function} callback Called after component is updated.
64348   * @param {?string} callerName name of the calling function in the public API.
64349   * @internal
64350   */
64351  enqueueReplaceState: function (publicInstance, completeState, callback, callerName) {
64352    warnNoop(publicInstance, 'replaceState');
64353  },
64354
64355  /**
64356   * Sets a subset of the state. This only exists because _pendingState is
64357   * internal. This provides a merging strategy that is not available to deep
64358   * properties which is confusing. TODO: Expose pendingState or don't use it
64359   * during the merge.
64360   *
64361   * @param {ReactClass} publicInstance The instance that should rerender.
64362   * @param {object} partialState Next partial state to be merged with state.
64363   * @param {?function} callback Called after component is updated.
64364   * @param {?string} Name of the calling function in the public API.
64365   * @internal
64366   */
64367  enqueueSetState: function (publicInstance, partialState, callback, callerName) {
64368    warnNoop(publicInstance, 'setState');
64369  }
64370};
64371
64372var emptyObject = {};
64373
64374{
64375  Object.freeze(emptyObject);
64376}
64377/**
64378 * Base class helpers for the updating state of a component.
64379 */
64380
64381
64382function Component(props, context, updater) {
64383  this.props = props;
64384  this.context = context; // If a component has string refs, we will assign a different object later.
64385
64386  this.refs = emptyObject; // We initialize the default updater but the real one gets injected by the
64387  // renderer.
64388
64389  this.updater = updater || ReactNoopUpdateQueue;
64390}
64391
64392Component.prototype.isReactComponent = {};
64393/**
64394 * Sets a subset of the state. Always use this to mutate
64395 * state. You should treat `this.state` as immutable.
64396 *
64397 * There is no guarantee that `this.state` will be immediately updated, so
64398 * accessing `this.state` after calling this method may return the old value.
64399 *
64400 * There is no guarantee that calls to `setState` will run synchronously,
64401 * as they may eventually be batched together.  You can provide an optional
64402 * callback that will be executed when the call to setState is actually
64403 * completed.
64404 *
64405 * When a function is provided to setState, it will be called at some point in
64406 * the future (not synchronously). It will be called with the up to date
64407 * component arguments (state, props, context). These values can be different
64408 * from this.* because your function may be called after receiveProps but before
64409 * shouldComponentUpdate, and this new state, props, and context will not yet be
64410 * assigned to this.
64411 *
64412 * @param {object|function} partialState Next partial state or function to
64413 *        produce next partial state to be merged with current state.
64414 * @param {?function} callback Called after state is updated.
64415 * @final
64416 * @protected
64417 */
64418
64419Component.prototype.setState = function (partialState, callback) {
64420  if (!(typeof partialState === 'object' || typeof partialState === 'function' || partialState == null)) {
64421    {
64422      throw Error( "setState(...): takes an object of state variables to update or a function which returns an object of state variables." );
64423    }
64424  }
64425
64426  this.updater.enqueueSetState(this, partialState, callback, 'setState');
64427};
64428/**
64429 * Forces an update. This should only be invoked when it is known with
64430 * certainty that we are **not** in a DOM transaction.
64431 *
64432 * You may want to call this when you know that some deeper aspect of the
64433 * component's state has changed but `setState` was not called.
64434 *
64435 * This will not invoke `shouldComponentUpdate`, but it will invoke
64436 * `componentWillUpdate` and `componentDidUpdate`.
64437 *
64438 * @param {?function} callback Called after update is complete.
64439 * @final
64440 * @protected
64441 */
64442
64443
64444Component.prototype.forceUpdate = function (callback) {
64445  this.updater.enqueueForceUpdate(this, callback, 'forceUpdate');
64446};
64447/**
64448 * Deprecated APIs. These APIs used to exist on classic React classes but since
64449 * we would like to deprecate them, we're not going to move them over to this
64450 * modern base class. Instead, we define a getter that warns if it's accessed.
64451 */
64452
64453
64454{
64455  var deprecatedAPIs = {
64456    isMounted: ['isMounted', 'Instead, make sure to clean up subscriptions and pending requests in ' + 'componentWillUnmount to prevent memory leaks.'],
64457    replaceState: ['replaceState', 'Refactor your code to use setState instead (see ' + 'https://github.com/facebook/react/issues/3236).']
64458  };
64459
64460  var defineDeprecationWarning = function (methodName, info) {
64461    Object.defineProperty(Component.prototype, methodName, {
64462      get: function () {
64463        warn('%s(...) is deprecated in plain JavaScript React classes. %s', info[0], info[1]);
64464
64465        return undefined;
64466      }
64467    });
64468  };
64469
64470  for (var fnName in deprecatedAPIs) {
64471    if (deprecatedAPIs.hasOwnProperty(fnName)) {
64472      defineDeprecationWarning(fnName, deprecatedAPIs[fnName]);
64473    }
64474  }
64475}
64476
64477function ComponentDummy() {}
64478
64479ComponentDummy.prototype = Component.prototype;
64480/**
64481 * Convenience component with default shallow equality check for sCU.
64482 */
64483
64484function PureComponent(props, context, updater) {
64485  this.props = props;
64486  this.context = context; // If a component has string refs, we will assign a different object later.
64487
64488  this.refs = emptyObject;
64489  this.updater = updater || ReactNoopUpdateQueue;
64490}
64491
64492var pureComponentPrototype = PureComponent.prototype = new ComponentDummy();
64493pureComponentPrototype.constructor = PureComponent; // Avoid an extra prototype jump for these methods.
64494
64495_assign(pureComponentPrototype, Component.prototype);
64496
64497pureComponentPrototype.isPureReactComponent = true;
64498
64499// an immutable object with a single mutable value
64500function createRef() {
64501  var refObject = {
64502    current: null
64503  };
64504
64505  {
64506    Object.seal(refObject);
64507  }
64508
64509  return refObject;
64510}
64511
64512function getWrappedName(outerType, innerType, wrapperName) {
64513  var functionName = innerType.displayName || innerType.name || '';
64514  return outerType.displayName || (functionName !== '' ? wrapperName + "(" + functionName + ")" : wrapperName);
64515}
64516
64517function getContextName(type) {
64518  return type.displayName || 'Context';
64519}
64520
64521function getComponentName(type) {
64522  if (type == null) {
64523    // Host root, text node or just invalid type.
64524    return null;
64525  }
64526
64527  {
64528    if (typeof type.tag === 'number') {
64529      error('Received an unexpected object in getComponentName(). ' + 'This is likely a bug in React. Please file an issue.');
64530    }
64531  }
64532
64533  if (typeof type === 'function') {
64534    return type.displayName || type.name || null;
64535  }
64536
64537  if (typeof type === 'string') {
64538    return type;
64539  }
64540
64541  switch (type) {
64542    case exports.Fragment:
64543      return 'Fragment';
64544
64545    case REACT_PORTAL_TYPE:
64546      return 'Portal';
64547
64548    case exports.Profiler:
64549      return 'Profiler';
64550
64551    case exports.StrictMode:
64552      return 'StrictMode';
64553
64554    case exports.Suspense:
64555      return 'Suspense';
64556
64557    case REACT_SUSPENSE_LIST_TYPE:
64558      return 'SuspenseList';
64559  }
64560
64561  if (typeof type === 'object') {
64562    switch (type.$$typeof) {
64563      case REACT_CONTEXT_TYPE:
64564        var context = type;
64565        return getContextName(context) + '.Consumer';
64566
64567      case REACT_PROVIDER_TYPE:
64568        var provider = type;
64569        return getContextName(provider._context) + '.Provider';
64570
64571      case REACT_FORWARD_REF_TYPE:
64572        return getWrappedName(type, type.render, 'ForwardRef');
64573
64574      case REACT_MEMO_TYPE:
64575        return getComponentName(type.type);
64576
64577      case REACT_BLOCK_TYPE:
64578        return getComponentName(type._render);
64579
64580      case REACT_LAZY_TYPE:
64581        {
64582          var lazyComponent = type;
64583          var payload = lazyComponent._payload;
64584          var init = lazyComponent._init;
64585
64586          try {
64587            return getComponentName(init(payload));
64588          } catch (x) {
64589            return null;
64590          }
64591        }
64592    }
64593  }
64594
64595  return null;
64596}
64597
64598var hasOwnProperty = Object.prototype.hasOwnProperty;
64599var RESERVED_PROPS = {
64600  key: true,
64601  ref: true,
64602  __self: true,
64603  __source: true
64604};
64605var specialPropKeyWarningShown, specialPropRefWarningShown, didWarnAboutStringRefs;
64606
64607{
64608  didWarnAboutStringRefs = {};
64609}
64610
64611function hasValidRef(config) {
64612  {
64613    if (hasOwnProperty.call(config, 'ref')) {
64614      var getter = Object.getOwnPropertyDescriptor(config, 'ref').get;
64615
64616      if (getter && getter.isReactWarning) {
64617        return false;
64618      }
64619    }
64620  }
64621
64622  return config.ref !== undefined;
64623}
64624
64625function hasValidKey(config) {
64626  {
64627    if (hasOwnProperty.call(config, 'key')) {
64628      var getter = Object.getOwnPropertyDescriptor(config, 'key').get;
64629
64630      if (getter && getter.isReactWarning) {
64631        return false;
64632      }
64633    }
64634  }
64635
64636  return config.key !== undefined;
64637}
64638
64639function defineKeyPropWarningGetter(props, displayName) {
64640  var warnAboutAccessingKey = function () {
64641    {
64642      if (!specialPropKeyWarningShown) {
64643        specialPropKeyWarningShown = true;
64644
64645        error('%s: `key` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
64646      }
64647    }
64648  };
64649
64650  warnAboutAccessingKey.isReactWarning = true;
64651  Object.defineProperty(props, 'key', {
64652    get: warnAboutAccessingKey,
64653    configurable: true
64654  });
64655}
64656
64657function defineRefPropWarningGetter(props, displayName) {
64658  var warnAboutAccessingRef = function () {
64659    {
64660      if (!specialPropRefWarningShown) {
64661        specialPropRefWarningShown = true;
64662
64663        error('%s: `ref` is not a prop. Trying to access it will result ' + 'in `undefined` being returned. If you need to access the same ' + 'value within the child component, you should pass it as a different ' + 'prop. (https://reactjs.org/link/special-props)', displayName);
64664      }
64665    }
64666  };
64667
64668  warnAboutAccessingRef.isReactWarning = true;
64669  Object.defineProperty(props, 'ref', {
64670    get: warnAboutAccessingRef,
64671    configurable: true
64672  });
64673}
64674
64675function warnIfStringRefCannotBeAutoConverted(config) {
64676  {
64677    if (typeof config.ref === 'string' && ReactCurrentOwner.current && config.__self && ReactCurrentOwner.current.stateNode !== config.__self) {
64678      var componentName = getComponentName(ReactCurrentOwner.current.type);
64679
64680      if (!didWarnAboutStringRefs[componentName]) {
64681        error('Component "%s" contains the string ref "%s". ' + 'Support for string refs will be removed in a future major release. ' + 'This case cannot be automatically converted to an arrow function. ' + 'We ask you to manually fix this case by using useRef() or createRef() instead. ' + 'Learn more about using refs safely here: ' + 'https://reactjs.org/link/strict-mode-string-ref', componentName, config.ref);
64682
64683        didWarnAboutStringRefs[componentName] = true;
64684      }
64685    }
64686  }
64687}
64688/**
64689 * Factory method to create a new React element. This no longer adheres to
64690 * the class pattern, so do not use new to call it. Also, instanceof check
64691 * will not work. Instead test $$typeof field against Symbol.for('react.element') to check
64692 * if something is a React Element.
64693 *
64694 * @param {*} type
64695 * @param {*} props
64696 * @param {*} key
64697 * @param {string|object} ref
64698 * @param {*} owner
64699 * @param {*} self A *temporary* helper to detect places where `this` is
64700 * different from the `owner` when React.createElement is called, so that we
64701 * can warn. We want to get rid of owner and replace string `ref`s with arrow
64702 * functions, and as long as `this` and owner are the same, there will be no
64703 * change in behavior.
64704 * @param {*} source An annotation object (added by a transpiler or otherwise)
64705 * indicating filename, line number, and/or other information.
64706 * @internal
64707 */
64708
64709
64710var ReactElement = function (type, key, ref, self, source, owner, props) {
64711  var element = {
64712    // This tag allows us to uniquely identify this as a React Element
64713    $$typeof: REACT_ELEMENT_TYPE,
64714    // Built-in properties that belong on the element
64715    type: type,
64716    key: key,
64717    ref: ref,
64718    props: props,
64719    // Record the component responsible for creating this element.
64720    _owner: owner
64721  };
64722
64723  {
64724    // The validation flag is currently mutative. We put it on
64725    // an external backing store so that we can freeze the whole object.
64726    // This can be replaced with a WeakMap once they are implemented in
64727    // commonly used development environments.
64728    element._store = {}; // To make comparing ReactElements easier for testing purposes, we make
64729    // the validation flag non-enumerable (where possible, which should
64730    // include every environment we run tests in), so the test framework
64731    // ignores it.
64732
64733    Object.defineProperty(element._store, 'validated', {
64734      configurable: false,
64735      enumerable: false,
64736      writable: true,
64737      value: false
64738    }); // self and source are DEV only properties.
64739
64740    Object.defineProperty(element, '_self', {
64741      configurable: false,
64742      enumerable: false,
64743      writable: false,
64744      value: self
64745    }); // Two elements created in two different places should be considered
64746    // equal for testing purposes and therefore we hide it from enumeration.
64747
64748    Object.defineProperty(element, '_source', {
64749      configurable: false,
64750      enumerable: false,
64751      writable: false,
64752      value: source
64753    });
64754
64755    if (Object.freeze) {
64756      Object.freeze(element.props);
64757      Object.freeze(element);
64758    }
64759  }
64760
64761  return element;
64762};
64763/**
64764 * Create and return a new ReactElement of the given type.
64765 * See https://reactjs.org/docs/react-api.html#createelement
64766 */
64767
64768function createElement(type, config, children) {
64769  var propName; // Reserved names are extracted
64770
64771  var props = {};
64772  var key = null;
64773  var ref = null;
64774  var self = null;
64775  var source = null;
64776
64777  if (config != null) {
64778    if (hasValidRef(config)) {
64779      ref = config.ref;
64780
64781      {
64782        warnIfStringRefCannotBeAutoConverted(config);
64783      }
64784    }
64785
64786    if (hasValidKey(config)) {
64787      key = '' + config.key;
64788    }
64789
64790    self = config.__self === undefined ? null : config.__self;
64791    source = config.__source === undefined ? null : config.__source; // Remaining properties are added to a new props object
64792
64793    for (propName in config) {
64794      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
64795        props[propName] = config[propName];
64796      }
64797    }
64798  } // Children can be more than one argument, and those are transferred onto
64799  // the newly allocated props object.
64800
64801
64802  var childrenLength = arguments.length - 2;
64803
64804  if (childrenLength === 1) {
64805    props.children = children;
64806  } else if (childrenLength > 1) {
64807    var childArray = Array(childrenLength);
64808
64809    for (var i = 0; i < childrenLength; i++) {
64810      childArray[i] = arguments[i + 2];
64811    }
64812
64813    {
64814      if (Object.freeze) {
64815        Object.freeze(childArray);
64816      }
64817    }
64818
64819    props.children = childArray;
64820  } // Resolve default props
64821
64822
64823  if (type && type.defaultProps) {
64824    var defaultProps = type.defaultProps;
64825
64826    for (propName in defaultProps) {
64827      if (props[propName] === undefined) {
64828        props[propName] = defaultProps[propName];
64829      }
64830    }
64831  }
64832
64833  {
64834    if (key || ref) {
64835      var displayName = typeof type === 'function' ? type.displayName || type.name || 'Unknown' : type;
64836
64837      if (key) {
64838        defineKeyPropWarningGetter(props, displayName);
64839      }
64840
64841      if (ref) {
64842        defineRefPropWarningGetter(props, displayName);
64843      }
64844    }
64845  }
64846
64847  return ReactElement(type, key, ref, self, source, ReactCurrentOwner.current, props);
64848}
64849function cloneAndReplaceKey(oldElement, newKey) {
64850  var newElement = ReactElement(oldElement.type, newKey, oldElement.ref, oldElement._self, oldElement._source, oldElement._owner, oldElement.props);
64851  return newElement;
64852}
64853/**
64854 * Clone and return a new ReactElement using element as the starting point.
64855 * See https://reactjs.org/docs/react-api.html#cloneelement
64856 */
64857
64858function cloneElement(element, config, children) {
64859  if (!!(element === null || element === undefined)) {
64860    {
64861      throw Error( "React.cloneElement(...): The argument must be a React element, but you passed " + element + "." );
64862    }
64863  }
64864
64865  var propName; // Original props are copied
64866
64867  var props = _assign({}, element.props); // Reserved names are extracted
64868
64869
64870  var key = element.key;
64871  var ref = element.ref; // Self is preserved since the owner is preserved.
64872
64873  var self = element._self; // Source is preserved since cloneElement is unlikely to be targeted by a
64874  // transpiler, and the original source is probably a better indicator of the
64875  // true owner.
64876
64877  var source = element._source; // Owner will be preserved, unless ref is overridden
64878
64879  var owner = element._owner;
64880
64881  if (config != null) {
64882    if (hasValidRef(config)) {
64883      // Silently steal the ref from the parent.
64884      ref = config.ref;
64885      owner = ReactCurrentOwner.current;
64886    }
64887
64888    if (hasValidKey(config)) {
64889      key = '' + config.key;
64890    } // Remaining properties override existing props
64891
64892
64893    var defaultProps;
64894
64895    if (element.type && element.type.defaultProps) {
64896      defaultProps = element.type.defaultProps;
64897    }
64898
64899    for (propName in config) {
64900      if (hasOwnProperty.call(config, propName) && !RESERVED_PROPS.hasOwnProperty(propName)) {
64901        if (config[propName] === undefined && defaultProps !== undefined) {
64902          // Resolve default props
64903          props[propName] = defaultProps[propName];
64904        } else {
64905          props[propName] = config[propName];
64906        }
64907      }
64908    }
64909  } // Children can be more than one argument, and those are transferred onto
64910  // the newly allocated props object.
64911
64912
64913  var childrenLength = arguments.length - 2;
64914
64915  if (childrenLength === 1) {
64916    props.children = children;
64917  } else if (childrenLength > 1) {
64918    var childArray = Array(childrenLength);
64919
64920    for (var i = 0; i < childrenLength; i++) {
64921      childArray[i] = arguments[i + 2];
64922    }
64923
64924    props.children = childArray;
64925  }
64926
64927  return ReactElement(element.type, key, ref, self, source, owner, props);
64928}
64929/**
64930 * Verifies the object is a ReactElement.
64931 * See https://reactjs.org/docs/react-api.html#isvalidelement
64932 * @param {?object} object
64933 * @return {boolean} True if `object` is a ReactElement.
64934 * @final
64935 */
64936
64937function isValidElement(object) {
64938  return typeof object === 'object' && object !== null && object.$$typeof === REACT_ELEMENT_TYPE;
64939}
64940
64941var SEPARATOR = '.';
64942var SUBSEPARATOR = ':';
64943/**
64944 * Escape and wrap key so it is safe to use as a reactid
64945 *
64946 * @param {string} key to be escaped.
64947 * @return {string} the escaped key.
64948 */
64949
64950function escape(key) {
64951  var escapeRegex = /[=:]/g;
64952  var escaperLookup = {
64953    '=': '=0',
64954    ':': '=2'
64955  };
64956  var escapedString = key.replace(escapeRegex, function (match) {
64957    return escaperLookup[match];
64958  });
64959  return '$' + escapedString;
64960}
64961/**
64962 * TODO: Test that a single child and an array with one item have the same key
64963 * pattern.
64964 */
64965
64966
64967var didWarnAboutMaps = false;
64968var userProvidedKeyEscapeRegex = /\/+/g;
64969
64970function escapeUserProvidedKey(text) {
64971  return text.replace(userProvidedKeyEscapeRegex, '$&/');
64972}
64973/**
64974 * Generate a key string that identifies a element within a set.
64975 *
64976 * @param {*} element A element that could contain a manual key.
64977 * @param {number} index Index that is used if a manual key is not provided.
64978 * @return {string}
64979 */
64980
64981
64982function getElementKey(element, index) {
64983  // Do some typechecking here since we call this blindly. We want to ensure
64984  // that we don't block potential future ES APIs.
64985  if (typeof element === 'object' && element !== null && element.key != null) {
64986    // Explicit key
64987    return escape('' + element.key);
64988  } // Implicit key determined by the index in the set
64989
64990
64991  return index.toString(36);
64992}
64993
64994function mapIntoArray(children, array, escapedPrefix, nameSoFar, callback) {
64995  var type = typeof children;
64996
64997  if (type === 'undefined' || type === 'boolean') {
64998    // All of the above are perceived as null.
64999    children = null;
65000  }
65001
65002  var invokeCallback = false;
65003
65004  if (children === null) {
65005    invokeCallback = true;
65006  } else {
65007    switch (type) {
65008      case 'string':
65009      case 'number':
65010        invokeCallback = true;
65011        break;
65012
65013      case 'object':
65014        switch (children.$$typeof) {
65015          case REACT_ELEMENT_TYPE:
65016          case REACT_PORTAL_TYPE:
65017            invokeCallback = true;
65018        }
65019
65020    }
65021  }
65022
65023  if (invokeCallback) {
65024    var _child = children;
65025    var mappedChild = callback(_child); // If it's the only child, treat the name as if it was wrapped in an array
65026    // so that it's consistent if the number of children grows:
65027
65028    var childKey = nameSoFar === '' ? SEPARATOR + getElementKey(_child, 0) : nameSoFar;
65029
65030    if (Array.isArray(mappedChild)) {
65031      var escapedChildKey = '';
65032
65033      if (childKey != null) {
65034        escapedChildKey = escapeUserProvidedKey(childKey) + '/';
65035      }
65036
65037      mapIntoArray(mappedChild, array, escapedChildKey, '', function (c) {
65038        return c;
65039      });
65040    } else if (mappedChild != null) {
65041      if (isValidElement(mappedChild)) {
65042        mappedChild = cloneAndReplaceKey(mappedChild, // Keep both the (mapped) and old keys if they differ, just as
65043        // traverseAllChildren used to do for objects as children
65044        escapedPrefix + ( // $FlowFixMe Flow incorrectly thinks React.Portal doesn't have a key
65045        mappedChild.key && (!_child || _child.key !== mappedChild.key) ? // $FlowFixMe Flow incorrectly thinks existing element's key can be a number
65046        escapeUserProvidedKey('' + mappedChild.key) + '/' : '') + childKey);
65047      }
65048
65049      array.push(mappedChild);
65050    }
65051
65052    return 1;
65053  }
65054
65055  var child;
65056  var nextName;
65057  var subtreeCount = 0; // Count of children found in the current subtree.
65058
65059  var nextNamePrefix = nameSoFar === '' ? SEPARATOR : nameSoFar + SUBSEPARATOR;
65060
65061  if (Array.isArray(children)) {
65062    for (var i = 0; i < children.length; i++) {
65063      child = children[i];
65064      nextName = nextNamePrefix + getElementKey(child, i);
65065      subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
65066    }
65067  } else {
65068    var iteratorFn = getIteratorFn(children);
65069
65070    if (typeof iteratorFn === 'function') {
65071      var iterableChildren = children;
65072
65073      {
65074        // Warn about using Maps as children
65075        if (iteratorFn === iterableChildren.entries) {
65076          if (!didWarnAboutMaps) {
65077            warn('Using Maps as children is not supported. ' + 'Use an array of keyed ReactElements instead.');
65078          }
65079
65080          didWarnAboutMaps = true;
65081        }
65082      }
65083
65084      var iterator = iteratorFn.call(iterableChildren);
65085      var step;
65086      var ii = 0;
65087
65088      while (!(step = iterator.next()).done) {
65089        child = step.value;
65090        nextName = nextNamePrefix + getElementKey(child, ii++);
65091        subtreeCount += mapIntoArray(child, array, escapedPrefix, nextName, callback);
65092      }
65093    } else if (type === 'object') {
65094      var childrenString = '' + children;
65095
65096      {
65097        {
65098          throw Error( "Objects are not valid as a React child (found: " + (childrenString === '[object Object]' ? 'object with keys {' + Object.keys(children).join(', ') + '}' : childrenString) + "). If you meant to render a collection of children, use an array instead." );
65099        }
65100      }
65101    }
65102  }
65103
65104  return subtreeCount;
65105}
65106
65107/**
65108 * Maps children that are typically specified as `props.children`.
65109 *
65110 * See https://reactjs.org/docs/react-api.html#reactchildrenmap
65111 *
65112 * The provided mapFunction(child, index) will be called for each
65113 * leaf child.
65114 *
65115 * @param {?*} children Children tree container.
65116 * @param {function(*, int)} func The map function.
65117 * @param {*} context Context for mapFunction.
65118 * @return {object} Object containing the ordered map of results.
65119 */
65120function mapChildren(children, func, context) {
65121  if (children == null) {
65122    return children;
65123  }
65124
65125  var result = [];
65126  var count = 0;
65127  mapIntoArray(children, result, '', '', function (child) {
65128    return func.call(context, child, count++);
65129  });
65130  return result;
65131}
65132/**
65133 * Count the number of children that are typically specified as
65134 * `props.children`.
65135 *
65136 * See https://reactjs.org/docs/react-api.html#reactchildrencount
65137 *
65138 * @param {?*} children Children tree container.
65139 * @return {number} The number of children.
65140 */
65141
65142
65143function countChildren(children) {
65144  var n = 0;
65145  mapChildren(children, function () {
65146    n++; // Don't return anything
65147  });
65148  return n;
65149}
65150
65151/**
65152 * Iterates through children that are typically specified as `props.children`.
65153 *
65154 * See https://reactjs.org/docs/react-api.html#reactchildrenforeach
65155 *
65156 * The provided forEachFunc(child, index) will be called for each
65157 * leaf child.
65158 *
65159 * @param {?*} children Children tree container.
65160 * @param {function(*, int)} forEachFunc
65161 * @param {*} forEachContext Context for forEachContext.
65162 */
65163function forEachChildren(children, forEachFunc, forEachContext) {
65164  mapChildren(children, function () {
65165    forEachFunc.apply(this, arguments); // Don't return anything.
65166  }, forEachContext);
65167}
65168/**
65169 * Flatten a children object (typically specified as `props.children`) and
65170 * return an array with appropriately re-keyed children.
65171 *
65172 * See https://reactjs.org/docs/react-api.html#reactchildrentoarray
65173 */
65174
65175
65176function toArray(children) {
65177  return mapChildren(children, function (child) {
65178    return child;
65179  }) || [];
65180}
65181/**
65182 * Returns the first child in a collection of children and verifies that there
65183 * is only one child in the collection.
65184 *
65185 * See https://reactjs.org/docs/react-api.html#reactchildrenonly
65186 *
65187 * The current implementation of this function assumes that a single child gets
65188 * passed without a wrapper, but the purpose of this helper function is to
65189 * abstract away the particular structure of children.
65190 *
65191 * @param {?object} children Child collection structure.
65192 * @return {ReactElement} The first and only `ReactElement` contained in the
65193 * structure.
65194 */
65195
65196
65197function onlyChild(children) {
65198  if (!isValidElement(children)) {
65199    {
65200      throw Error( "React.Children.only expected to receive a single React element child." );
65201    }
65202  }
65203
65204  return children;
65205}
65206
65207function createContext(defaultValue, calculateChangedBits) {
65208  if (calculateChangedBits === undefined) {
65209    calculateChangedBits = null;
65210  } else {
65211    {
65212      if (calculateChangedBits !== null && typeof calculateChangedBits !== 'function') {
65213        error('createContext: Expected the optional second argument to be a ' + 'function. Instead received: %s', calculateChangedBits);
65214      }
65215    }
65216  }
65217
65218  var context = {
65219    $$typeof: REACT_CONTEXT_TYPE,
65220    _calculateChangedBits: calculateChangedBits,
65221    // As a workaround to support multiple concurrent renderers, we categorize
65222    // some renderers as primary and others as secondary. We only expect
65223    // there to be two concurrent renderers at most: React Native (primary) and
65224    // Fabric (secondary); React DOM (primary) and React ART (secondary).
65225    // Secondary renderers store their context values on separate fields.
65226    _currentValue: defaultValue,
65227    _currentValue2: defaultValue,
65228    // Used to track how many concurrent renderers this context currently
65229    // supports within in a single renderer. Such as parallel server rendering.
65230    _threadCount: 0,
65231    // These are circular
65232    Provider: null,
65233    Consumer: null
65234  };
65235  context.Provider = {
65236    $$typeof: REACT_PROVIDER_TYPE,
65237    _context: context
65238  };
65239  var hasWarnedAboutUsingNestedContextConsumers = false;
65240  var hasWarnedAboutUsingConsumerProvider = false;
65241  var hasWarnedAboutDisplayNameOnConsumer = false;
65242
65243  {
65244    // A separate object, but proxies back to the original context object for
65245    // backwards compatibility. It has a different $$typeof, so we can properly
65246    // warn for the incorrect usage of Context as a Consumer.
65247    var Consumer = {
65248      $$typeof: REACT_CONTEXT_TYPE,
65249      _context: context,
65250      _calculateChangedBits: context._calculateChangedBits
65251    }; // $FlowFixMe: Flow complains about not setting a value, which is intentional here
65252
65253    Object.defineProperties(Consumer, {
65254      Provider: {
65255        get: function () {
65256          if (!hasWarnedAboutUsingConsumerProvider) {
65257            hasWarnedAboutUsingConsumerProvider = true;
65258
65259            error('Rendering <Context.Consumer.Provider> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Provider> instead?');
65260          }
65261
65262          return context.Provider;
65263        },
65264        set: function (_Provider) {
65265          context.Provider = _Provider;
65266        }
65267      },
65268      _currentValue: {
65269        get: function () {
65270          return context._currentValue;
65271        },
65272        set: function (_currentValue) {
65273          context._currentValue = _currentValue;
65274        }
65275      },
65276      _currentValue2: {
65277        get: function () {
65278          return context._currentValue2;
65279        },
65280        set: function (_currentValue2) {
65281          context._currentValue2 = _currentValue2;
65282        }
65283      },
65284      _threadCount: {
65285        get: function () {
65286          return context._threadCount;
65287        },
65288        set: function (_threadCount) {
65289          context._threadCount = _threadCount;
65290        }
65291      },
65292      Consumer: {
65293        get: function () {
65294          if (!hasWarnedAboutUsingNestedContextConsumers) {
65295            hasWarnedAboutUsingNestedContextConsumers = true;
65296
65297            error('Rendering <Context.Consumer.Consumer> is not supported and will be removed in ' + 'a future major release. Did you mean to render <Context.Consumer> instead?');
65298          }
65299
65300          return context.Consumer;
65301        }
65302      },
65303      displayName: {
65304        get: function () {
65305          return context.displayName;
65306        },
65307        set: function (displayName) {
65308          if (!hasWarnedAboutDisplayNameOnConsumer) {
65309            warn('Setting `displayName` on Context.Consumer has no effect. ' + "You should set it directly on the context with Context.displayName = '%s'.", displayName);
65310
65311            hasWarnedAboutDisplayNameOnConsumer = true;
65312          }
65313        }
65314      }
65315    }); // $FlowFixMe: Flow complains about missing properties because it doesn't understand defineProperty
65316
65317    context.Consumer = Consumer;
65318  }
65319
65320  {
65321    context._currentRenderer = null;
65322    context._currentRenderer2 = null;
65323  }
65324
65325  return context;
65326}
65327
65328var Uninitialized = -1;
65329var Pending = 0;
65330var Resolved = 1;
65331var Rejected = 2;
65332
65333function lazyInitializer(payload) {
65334  if (payload._status === Uninitialized) {
65335    var ctor = payload._result;
65336    var thenable = ctor(); // Transition to the next state.
65337
65338    var pending = payload;
65339    pending._status = Pending;
65340    pending._result = thenable;
65341    thenable.then(function (moduleObject) {
65342      if (payload._status === Pending) {
65343        var defaultExport = moduleObject.default;
65344
65345        {
65346          if (defaultExport === undefined) {
65347            error('lazy: Expected the result of a dynamic import() call. ' + 'Instead received: %s\n\nYour code should look like: \n  ' + // Break up imports to avoid accidentally parsing them as dependencies.
65348            'const MyComponent = lazy(() => imp' + "ort('./MyComponent'))", moduleObject);
65349          }
65350        } // Transition to the next state.
65351
65352
65353        var resolved = payload;
65354        resolved._status = Resolved;
65355        resolved._result = defaultExport;
65356      }
65357    }, function (error) {
65358      if (payload._status === Pending) {
65359        // Transition to the next state.
65360        var rejected = payload;
65361        rejected._status = Rejected;
65362        rejected._result = error;
65363      }
65364    });
65365  }
65366
65367  if (payload._status === Resolved) {
65368    return payload._result;
65369  } else {
65370    throw payload._result;
65371  }
65372}
65373
65374function lazy(ctor) {
65375  var payload = {
65376    // We use these fields to store the result.
65377    _status: -1,
65378    _result: ctor
65379  };
65380  var lazyType = {
65381    $$typeof: REACT_LAZY_TYPE,
65382    _payload: payload,
65383    _init: lazyInitializer
65384  };
65385
65386  {
65387    // In production, this would just set it on the object.
65388    var defaultProps;
65389    var propTypes; // $FlowFixMe
65390
65391    Object.defineProperties(lazyType, {
65392      defaultProps: {
65393        configurable: true,
65394        get: function () {
65395          return defaultProps;
65396        },
65397        set: function (newDefaultProps) {
65398          error('React.lazy(...): It is not supported to assign `defaultProps` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
65399
65400          defaultProps = newDefaultProps; // Match production behavior more closely:
65401          // $FlowFixMe
65402
65403          Object.defineProperty(lazyType, 'defaultProps', {
65404            enumerable: true
65405          });
65406        }
65407      },
65408      propTypes: {
65409        configurable: true,
65410        get: function () {
65411          return propTypes;
65412        },
65413        set: function (newPropTypes) {
65414          error('React.lazy(...): It is not supported to assign `propTypes` to ' + 'a lazy component import. Either specify them where the component ' + 'is defined, or create a wrapping component around it.');
65415
65416          propTypes = newPropTypes; // Match production behavior more closely:
65417          // $FlowFixMe
65418
65419          Object.defineProperty(lazyType, 'propTypes', {
65420            enumerable: true
65421          });
65422        }
65423      }
65424    });
65425  }
65426
65427  return lazyType;
65428}
65429
65430function forwardRef(render) {
65431  {
65432    if (render != null && render.$$typeof === REACT_MEMO_TYPE) {
65433      error('forwardRef requires a render function but received a `memo` ' + 'component. Instead of forwardRef(memo(...)), use ' + 'memo(forwardRef(...)).');
65434    } else if (typeof render !== 'function') {
65435      error('forwardRef requires a render function but was given %s.', render === null ? 'null' : typeof render);
65436    } else {
65437      if (render.length !== 0 && render.length !== 2) {
65438        error('forwardRef render functions accept exactly two parameters: props and ref. %s', render.length === 1 ? 'Did you forget to use the ref parameter?' : 'Any additional parameter will be undefined.');
65439      }
65440    }
65441
65442    if (render != null) {
65443      if (render.defaultProps != null || render.propTypes != null) {
65444        error('forwardRef render functions do not support propTypes or defaultProps. ' + 'Did you accidentally pass a React component?');
65445      }
65446    }
65447  }
65448
65449  var elementType = {
65450    $$typeof: REACT_FORWARD_REF_TYPE,
65451    render: render
65452  };
65453
65454  {
65455    var ownName;
65456    Object.defineProperty(elementType, 'displayName', {
65457      enumerable: false,
65458      configurable: true,
65459      get: function () {
65460        return ownName;
65461      },
65462      set: function (name) {
65463        ownName = name;
65464
65465        if (render.displayName == null) {
65466          render.displayName = name;
65467        }
65468      }
65469    });
65470  }
65471
65472  return elementType;
65473}
65474
65475// Filter certain DOM attributes (e.g. src, href) if their values are empty strings.
65476
65477var enableScopeAPI = false; // Experimental Create Event Handle API.
65478
65479function isValidElementType(type) {
65480  if (typeof type === 'string' || typeof type === 'function') {
65481    return true;
65482  } // Note: typeof might be other than 'symbol' or 'number' (e.g. if it's a polyfill).
65483
65484
65485  if (type === exports.Fragment || type === exports.Profiler || type === REACT_DEBUG_TRACING_MODE_TYPE || type === exports.StrictMode || type === exports.Suspense || type === REACT_SUSPENSE_LIST_TYPE || type === REACT_LEGACY_HIDDEN_TYPE || enableScopeAPI ) {
65486    return true;
65487  }
65488
65489  if (typeof type === 'object' && type !== null) {
65490    if (type.$$typeof === REACT_LAZY_TYPE || type.$$typeof === REACT_MEMO_TYPE || type.$$typeof === REACT_PROVIDER_TYPE || type.$$typeof === REACT_CONTEXT_TYPE || type.$$typeof === REACT_FORWARD_REF_TYPE || type.$$typeof === REACT_FUNDAMENTAL_TYPE || type.$$typeof === REACT_BLOCK_TYPE || type[0] === REACT_SERVER_BLOCK_TYPE) {
65491      return true;
65492    }
65493  }
65494
65495  return false;
65496}
65497
65498function memo(type, compare) {
65499  {
65500    if (!isValidElementType(type)) {
65501      error('memo: The first argument must be a component. Instead ' + 'received: %s', type === null ? 'null' : typeof type);
65502    }
65503  }
65504
65505  var elementType = {
65506    $$typeof: REACT_MEMO_TYPE,
65507    type: type,
65508    compare: compare === undefined ? null : compare
65509  };
65510
65511  {
65512    var ownName;
65513    Object.defineProperty(elementType, 'displayName', {
65514      enumerable: false,
65515      configurable: true,
65516      get: function () {
65517        return ownName;
65518      },
65519      set: function (name) {
65520        ownName = name;
65521
65522        if (type.displayName == null) {
65523          type.displayName = name;
65524        }
65525      }
65526    });
65527  }
65528
65529  return elementType;
65530}
65531
65532function resolveDispatcher() {
65533  var dispatcher = ReactCurrentDispatcher.current;
65534
65535  if (!(dispatcher !== null)) {
65536    {
65537      throw Error( "Invalid hook call. Hooks can only be called inside of the body of a function component. This could happen for one of the following reasons:\n1. You might have mismatching versions of React and the renderer (such as React DOM)\n2. You might be breaking the Rules of Hooks\n3. You might have more than one copy of React in the same app\nSee https://reactjs.org/link/invalid-hook-call for tips about how to debug and fix this problem." );
65538    }
65539  }
65540
65541  return dispatcher;
65542}
65543
65544function useContext(Context, unstable_observedBits) {
65545  var dispatcher = resolveDispatcher();
65546
65547  {
65548    if (unstable_observedBits !== undefined) {
65549      error('useContext() second argument is reserved for future ' + 'use in React. Passing it is not supported. ' + 'You passed: %s.%s', unstable_observedBits, typeof unstable_observedBits === 'number' && Array.isArray(arguments[2]) ? '\n\nDid you call array.map(useContext)? ' + 'Calling Hooks inside a loop is not supported. ' + 'Learn more at https://reactjs.org/link/rules-of-hooks' : '');
65550    } // TODO: add a more generic warning for invalid values.
65551
65552
65553    if (Context._context !== undefined) {
65554      var realContext = Context._context; // Don't deduplicate because this legitimately causes bugs
65555      // and nobody should be using this in existing code.
65556
65557      if (realContext.Consumer === Context) {
65558        error('Calling useContext(Context.Consumer) is not supported, may cause bugs, and will be ' + 'removed in a future major release. Did you mean to call useContext(Context) instead?');
65559      } else if (realContext.Provider === Context) {
65560        error('Calling useContext(Context.Provider) is not supported. ' + 'Did you mean to call useContext(Context) instead?');
65561      }
65562    }
65563  }
65564
65565  return dispatcher.useContext(Context, unstable_observedBits);
65566}
65567function useState(initialState) {
65568  var dispatcher = resolveDispatcher();
65569  return dispatcher.useState(initialState);
65570}
65571function useReducer(reducer, initialArg, init) {
65572  var dispatcher = resolveDispatcher();
65573  return dispatcher.useReducer(reducer, initialArg, init);
65574}
65575function useRef(initialValue) {
65576  var dispatcher = resolveDispatcher();
65577  return dispatcher.useRef(initialValue);
65578}
65579function useEffect(create, deps) {
65580  var dispatcher = resolveDispatcher();
65581  return dispatcher.useEffect(create, deps);
65582}
65583function useLayoutEffect(create, deps) {
65584  var dispatcher = resolveDispatcher();
65585  return dispatcher.useLayoutEffect(create, deps);
65586}
65587function useCallback(callback, deps) {
65588  var dispatcher = resolveDispatcher();
65589  return dispatcher.useCallback(callback, deps);
65590}
65591function useMemo(create, deps) {
65592  var dispatcher = resolveDispatcher();
65593  return dispatcher.useMemo(create, deps);
65594}
65595function useImperativeHandle(ref, create, deps) {
65596  var dispatcher = resolveDispatcher();
65597  return dispatcher.useImperativeHandle(ref, create, deps);
65598}
65599function useDebugValue(value, formatterFn) {
65600  {
65601    var dispatcher = resolveDispatcher();
65602    return dispatcher.useDebugValue(value, formatterFn);
65603  }
65604}
65605
65606// Helpers to patch console.logs to avoid logging during side-effect free
65607// replaying on render function. This currently only patches the object
65608// lazily which won't cover if the log function was extracted eagerly.
65609// We could also eagerly patch the method.
65610var disabledDepth = 0;
65611var prevLog;
65612var prevInfo;
65613var prevWarn;
65614var prevError;
65615var prevGroup;
65616var prevGroupCollapsed;
65617var prevGroupEnd;
65618
65619function disabledLog() {}
65620
65621disabledLog.__reactDisabledLog = true;
65622function disableLogs() {
65623  {
65624    if (disabledDepth === 0) {
65625      /* eslint-disable react-internal/no-production-logging */
65626      prevLog = console.log;
65627      prevInfo = console.info;
65628      prevWarn = console.warn;
65629      prevError = console.error;
65630      prevGroup = console.group;
65631      prevGroupCollapsed = console.groupCollapsed;
65632      prevGroupEnd = console.groupEnd; // https://github.com/facebook/react/issues/19099
65633
65634      var props = {
65635        configurable: true,
65636        enumerable: true,
65637        value: disabledLog,
65638        writable: true
65639      }; // $FlowFixMe Flow thinks console is immutable.
65640
65641      Object.defineProperties(console, {
65642        info: props,
65643        log: props,
65644        warn: props,
65645        error: props,
65646        group: props,
65647        groupCollapsed: props,
65648        groupEnd: props
65649      });
65650      /* eslint-enable react-internal/no-production-logging */
65651    }
65652
65653    disabledDepth++;
65654  }
65655}
65656function reenableLogs() {
65657  {
65658    disabledDepth--;
65659
65660    if (disabledDepth === 0) {
65661      /* eslint-disable react-internal/no-production-logging */
65662      var props = {
65663        configurable: true,
65664        enumerable: true,
65665        writable: true
65666      }; // $FlowFixMe Flow thinks console is immutable.
65667
65668      Object.defineProperties(console, {
65669        log: _assign({}, props, {
65670          value: prevLog
65671        }),
65672        info: _assign({}, props, {
65673          value: prevInfo
65674        }),
65675        warn: _assign({}, props, {
65676          value: prevWarn
65677        }),
65678        error: _assign({}, props, {
65679          value: prevError
65680        }),
65681        group: _assign({}, props, {
65682          value: prevGroup
65683        }),
65684        groupCollapsed: _assign({}, props, {
65685          value: prevGroupCollapsed
65686        }),
65687        groupEnd: _assign({}, props, {
65688          value: prevGroupEnd
65689        })
65690      });
65691      /* eslint-enable react-internal/no-production-logging */
65692    }
65693
65694    if (disabledDepth < 0) {
65695      error('disabledDepth fell below zero. ' + 'This is a bug in React. Please file an issue.');
65696    }
65697  }
65698}
65699
65700var ReactCurrentDispatcher$1 = ReactSharedInternals.ReactCurrentDispatcher;
65701var prefix;
65702function describeBuiltInComponentFrame(name, source, ownerFn) {
65703  {
65704    if (prefix === undefined) {
65705      // Extract the VM specific prefix used by each line.
65706      try {
65707        throw Error();
65708      } catch (x) {
65709        var match = x.stack.trim().match(/\n( *(at )?)/);
65710        prefix = match && match[1] || '';
65711      }
65712    } // We use the prefix to ensure our stacks line up with native stack frames.
65713
65714
65715    return '\n' + prefix + name;
65716  }
65717}
65718var reentry = false;
65719var componentFrameCache;
65720
65721{
65722  var PossiblyWeakMap = typeof WeakMap === 'function' ? WeakMap : Map;
65723  componentFrameCache = new PossiblyWeakMap();
65724}
65725
65726function describeNativeComponentFrame(fn, construct) {
65727  // If something asked for a stack inside a fake render, it should get ignored.
65728  if (!fn || reentry) {
65729    return '';
65730  }
65731
65732  {
65733    var frame = componentFrameCache.get(fn);
65734
65735    if (frame !== undefined) {
65736      return frame;
65737    }
65738  }
65739
65740  var control;
65741  reentry = true;
65742  var previousPrepareStackTrace = Error.prepareStackTrace; // $FlowFixMe It does accept undefined.
65743
65744  Error.prepareStackTrace = undefined;
65745  var previousDispatcher;
65746
65747  {
65748    previousDispatcher = ReactCurrentDispatcher$1.current; // Set the dispatcher in DEV because this might be call in the render function
65749    // for warnings.
65750
65751    ReactCurrentDispatcher$1.current = null;
65752    disableLogs();
65753  }
65754
65755  try {
65756    // This should throw.
65757    if (construct) {
65758      // Something should be setting the props in the constructor.
65759      var Fake = function () {
65760        throw Error();
65761      }; // $FlowFixMe
65762
65763
65764      Object.defineProperty(Fake.prototype, 'props', {
65765        set: function () {
65766          // We use a throwing setter instead of frozen or non-writable props
65767          // because that won't throw in a non-strict mode function.
65768          throw Error();
65769        }
65770      });
65771
65772      if (typeof Reflect === 'object' && Reflect.construct) {
65773        // We construct a different control for this case to include any extra
65774        // frames added by the construct call.
65775        try {
65776          Reflect.construct(Fake, []);
65777        } catch (x) {
65778          control = x;
65779        }
65780
65781        Reflect.construct(fn, [], Fake);
65782      } else {
65783        try {
65784          Fake.call();
65785        } catch (x) {
65786          control = x;
65787        }
65788
65789        fn.call(Fake.prototype);
65790      }
65791    } else {
65792      try {
65793        throw Error();
65794      } catch (x) {
65795        control = x;
65796      }
65797
65798      fn();
65799    }
65800  } catch (sample) {
65801    // This is inlined manually because closure doesn't do it for us.
65802    if (sample && control && typeof sample.stack === 'string') {
65803      // This extracts the first frame from the sample that isn't also in the control.
65804      // Skipping one frame that we assume is the frame that calls the two.
65805      var sampleLines = sample.stack.split('\n');
65806      var controlLines = control.stack.split('\n');
65807      var s = sampleLines.length - 1;
65808      var c = controlLines.length - 1;
65809
65810      while (s >= 1 && c >= 0 && sampleLines[s] !== controlLines[c]) {
65811        // We expect at least one stack frame to be shared.
65812        // Typically this will be the root most one. However, stack frames may be
65813        // cut off due to maximum stack limits. In this case, one maybe cut off
65814        // earlier than the other. We assume that the sample is longer or the same
65815        // and there for cut off earlier. So we should find the root most frame in
65816        // the sample somewhere in the control.
65817        c--;
65818      }
65819
65820      for (; s >= 1 && c >= 0; s--, c--) {
65821        // Next we find the first one that isn't the same which should be the
65822        // frame that called our sample function and the control.
65823        if (sampleLines[s] !== controlLines[c]) {
65824          // In V8, the first line is describing the message but other VMs don't.
65825          // If we're about to return the first line, and the control is also on the same
65826          // line, that's a pretty good indicator that our sample threw at same line as
65827          // the control. I.e. before we entered the sample frame. So we ignore this result.
65828          // This can happen if you passed a class to function component, or non-function.
65829          if (s !== 1 || c !== 1) {
65830            do {
65831              s--;
65832              c--; // We may still have similar intermediate frames from the construct call.
65833              // The next one that isn't the same should be our match though.
65834
65835              if (c < 0 || sampleLines[s] !== controlLines[c]) {
65836                // V8 adds a "new" prefix for native classes. Let's remove it to make it prettier.
65837                var _frame = '\n' + sampleLines[s].replace(' at new ', ' at ');
65838
65839                {
65840                  if (typeof fn === 'function') {
65841                    componentFrameCache.set(fn, _frame);
65842                  }
65843                } // Return the line we found.
65844
65845
65846                return _frame;
65847              }
65848            } while (s >= 1 && c >= 0);
65849          }
65850
65851          break;
65852        }
65853      }
65854    }
65855  } finally {
65856    reentry = false;
65857
65858    {
65859      ReactCurrentDispatcher$1.current = previousDispatcher;
65860      reenableLogs();
65861    }
65862
65863    Error.prepareStackTrace = previousPrepareStackTrace;
65864  } // Fallback to just using the name if we couldn't make it throw.
65865
65866
65867  var name = fn ? fn.displayName || fn.name : '';
65868  var syntheticFrame = name ? describeBuiltInComponentFrame(name) : '';
65869
65870  {
65871    if (typeof fn === 'function') {
65872      componentFrameCache.set(fn, syntheticFrame);
65873    }
65874  }
65875
65876  return syntheticFrame;
65877}
65878function describeFunctionComponentFrame(fn, source, ownerFn) {
65879  {
65880    return describeNativeComponentFrame(fn, false);
65881  }
65882}
65883
65884function shouldConstruct(Component) {
65885  var prototype = Component.prototype;
65886  return !!(prototype && prototype.isReactComponent);
65887}
65888
65889function describeUnknownElementTypeFrameInDEV(type, source, ownerFn) {
65890
65891  if (type == null) {
65892    return '';
65893  }
65894
65895  if (typeof type === 'function') {
65896    {
65897      return describeNativeComponentFrame(type, shouldConstruct(type));
65898    }
65899  }
65900
65901  if (typeof type === 'string') {
65902    return describeBuiltInComponentFrame(type);
65903  }
65904
65905  switch (type) {
65906    case exports.Suspense:
65907      return describeBuiltInComponentFrame('Suspense');
65908
65909    case REACT_SUSPENSE_LIST_TYPE:
65910      return describeBuiltInComponentFrame('SuspenseList');
65911  }
65912
65913  if (typeof type === 'object') {
65914    switch (type.$$typeof) {
65915      case REACT_FORWARD_REF_TYPE:
65916        return describeFunctionComponentFrame(type.render);
65917
65918      case REACT_MEMO_TYPE:
65919        // Memo may contain any component type so we recursively resolve it.
65920        return describeUnknownElementTypeFrameInDEV(type.type, source, ownerFn);
65921
65922      case REACT_BLOCK_TYPE:
65923        return describeFunctionComponentFrame(type._render);
65924
65925      case REACT_LAZY_TYPE:
65926        {
65927          var lazyComponent = type;
65928          var payload = lazyComponent._payload;
65929          var init = lazyComponent._init;
65930
65931          try {
65932            // Lazy may contain any component type so we recursively resolve it.
65933            return describeUnknownElementTypeFrameInDEV(init(payload), source, ownerFn);
65934          } catch (x) {}
65935        }
65936    }
65937  }
65938
65939  return '';
65940}
65941
65942var loggedTypeFailures = {};
65943var ReactDebugCurrentFrame$1 = ReactSharedInternals.ReactDebugCurrentFrame;
65944
65945function setCurrentlyValidatingElement(element) {
65946  {
65947    if (element) {
65948      var owner = element._owner;
65949      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
65950      ReactDebugCurrentFrame$1.setExtraStackFrame(stack);
65951    } else {
65952      ReactDebugCurrentFrame$1.setExtraStackFrame(null);
65953    }
65954  }
65955}
65956
65957function checkPropTypes(typeSpecs, values, location, componentName, element) {
65958  {
65959    // $FlowFixMe This is okay but Flow doesn't know it.
65960    var has = Function.call.bind(Object.prototype.hasOwnProperty);
65961
65962    for (var typeSpecName in typeSpecs) {
65963      if (has(typeSpecs, typeSpecName)) {
65964        var error$1 = void 0; // Prop type validation may throw. In case they do, we don't want to
65965        // fail the render phase where it didn't fail before. So we log it.
65966        // After these have been cleaned up, we'll let them throw.
65967
65968        try {
65969          // This is intentionally an invariant that gets caught. It's the same
65970          // behavior as without this statement except with a better message.
65971          if (typeof typeSpecs[typeSpecName] !== 'function') {
65972            var err = Error((componentName || 'React class') + ': ' + location + ' type `' + typeSpecName + '` is invalid; ' + 'it must be a function, usually from the `prop-types` package, but received `' + typeof typeSpecs[typeSpecName] + '`.' + 'This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.');
65973            err.name = 'Invariant Violation';
65974            throw err;
65975          }
65976
65977          error$1 = typeSpecs[typeSpecName](values, typeSpecName, componentName, location, null, 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED');
65978        } catch (ex) {
65979          error$1 = ex;
65980        }
65981
65982        if (error$1 && !(error$1 instanceof Error)) {
65983          setCurrentlyValidatingElement(element);
65984
65985          error('%s: type specification of %s' + ' `%s` is invalid; the type checker ' + 'function must return `null` or an `Error` but returned a %s. ' + 'You may have forgotten to pass an argument to the type checker ' + 'creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and ' + 'shape all require an argument).', componentName || 'React class', location, typeSpecName, typeof error$1);
65986
65987          setCurrentlyValidatingElement(null);
65988        }
65989
65990        if (error$1 instanceof Error && !(error$1.message in loggedTypeFailures)) {
65991          // Only monitor this failure once because there tends to be a lot of the
65992          // same error.
65993          loggedTypeFailures[error$1.message] = true;
65994          setCurrentlyValidatingElement(element);
65995
65996          error('Failed %s type: %s', location, error$1.message);
65997
65998          setCurrentlyValidatingElement(null);
65999        }
66000      }
66001    }
66002  }
66003}
66004
66005function setCurrentlyValidatingElement$1(element) {
66006  {
66007    if (element) {
66008      var owner = element._owner;
66009      var stack = describeUnknownElementTypeFrameInDEV(element.type, element._source, owner ? owner.type : null);
66010      setExtraStackFrame(stack);
66011    } else {
66012      setExtraStackFrame(null);
66013    }
66014  }
66015}
66016
66017var propTypesMisspellWarningShown;
66018
66019{
66020  propTypesMisspellWarningShown = false;
66021}
66022
66023function getDeclarationErrorAddendum() {
66024  if (ReactCurrentOwner.current) {
66025    var name = getComponentName(ReactCurrentOwner.current.type);
66026
66027    if (name) {
66028      return '\n\nCheck the render method of `' + name + '`.';
66029    }
66030  }
66031
66032  return '';
66033}
66034
66035function getSourceInfoErrorAddendum(source) {
66036  if (source !== undefined) {
66037    var fileName = source.fileName.replace(/^.*[\\\/]/, '');
66038    var lineNumber = source.lineNumber;
66039    return '\n\nCheck your code at ' + fileName + ':' + lineNumber + '.';
66040  }
66041
66042  return '';
66043}
66044
66045function getSourceInfoErrorAddendumForProps(elementProps) {
66046  if (elementProps !== null && elementProps !== undefined) {
66047    return getSourceInfoErrorAddendum(elementProps.__source);
66048  }
66049
66050  return '';
66051}
66052/**
66053 * Warn if there's no key explicitly set on dynamic arrays of children or
66054 * object keys are not valid. This allows us to keep track of children between
66055 * updates.
66056 */
66057
66058
66059var ownerHasKeyUseWarning = {};
66060
66061function getCurrentComponentErrorInfo(parentType) {
66062  var info = getDeclarationErrorAddendum();
66063
66064  if (!info) {
66065    var parentName = typeof parentType === 'string' ? parentType : parentType.displayName || parentType.name;
66066
66067    if (parentName) {
66068      info = "\n\nCheck the top-level render call using <" + parentName + ">.";
66069    }
66070  }
66071
66072  return info;
66073}
66074/**
66075 * Warn if the element doesn't have an explicit key assigned to it.
66076 * This element is in an array. The array could grow and shrink or be
66077 * reordered. All children that haven't already been validated are required to
66078 * have a "key" property assigned to it. Error statuses are cached so a warning
66079 * will only be shown once.
66080 *
66081 * @internal
66082 * @param {ReactElement} element Element that requires a key.
66083 * @param {*} parentType element's parent's type.
66084 */
66085
66086
66087function validateExplicitKey(element, parentType) {
66088  if (!element._store || element._store.validated || element.key != null) {
66089    return;
66090  }
66091
66092  element._store.validated = true;
66093  var currentComponentErrorInfo = getCurrentComponentErrorInfo(parentType);
66094
66095  if (ownerHasKeyUseWarning[currentComponentErrorInfo]) {
66096    return;
66097  }
66098
66099  ownerHasKeyUseWarning[currentComponentErrorInfo] = true; // Usually the current owner is the offender, but if it accepts children as a
66100  // property, it may be the creator of the child that's responsible for
66101  // assigning it a key.
66102
66103  var childOwner = '';
66104
66105  if (element && element._owner && element._owner !== ReactCurrentOwner.current) {
66106    // Give the component that originally created this child.
66107    childOwner = " It was passed a child from " + getComponentName(element._owner.type) + ".";
66108  }
66109
66110  {
66111    setCurrentlyValidatingElement$1(element);
66112
66113    error('Each child in a list should have a unique "key" prop.' + '%s%s See https://reactjs.org/link/warning-keys for more information.', currentComponentErrorInfo, childOwner);
66114
66115    setCurrentlyValidatingElement$1(null);
66116  }
66117}
66118/**
66119 * Ensure that every element either is passed in a static location, in an
66120 * array with an explicit keys property defined, or in an object literal
66121 * with valid key property.
66122 *
66123 * @internal
66124 * @param {ReactNode} node Statically passed child of any type.
66125 * @param {*} parentType node's parent's type.
66126 */
66127
66128
66129function validateChildKeys(node, parentType) {
66130  if (typeof node !== 'object') {
66131    return;
66132  }
66133
66134  if (Array.isArray(node)) {
66135    for (var i = 0; i < node.length; i++) {
66136      var child = node[i];
66137
66138      if (isValidElement(child)) {
66139        validateExplicitKey(child, parentType);
66140      }
66141    }
66142  } else if (isValidElement(node)) {
66143    // This element was passed in a valid location.
66144    if (node._store) {
66145      node._store.validated = true;
66146    }
66147  } else if (node) {
66148    var iteratorFn = getIteratorFn(node);
66149
66150    if (typeof iteratorFn === 'function') {
66151      // Entry iterators used to provide implicit keys,
66152      // but now we print a separate warning for them later.
66153      if (iteratorFn !== node.entries) {
66154        var iterator = iteratorFn.call(node);
66155        var step;
66156
66157        while (!(step = iterator.next()).done) {
66158          if (isValidElement(step.value)) {
66159            validateExplicitKey(step.value, parentType);
66160          }
66161        }
66162      }
66163    }
66164  }
66165}
66166/**
66167 * Given an element, validate that its props follow the propTypes definition,
66168 * provided by the type.
66169 *
66170 * @param {ReactElement} element
66171 */
66172
66173
66174function validatePropTypes(element) {
66175  {
66176    var type = element.type;
66177
66178    if (type === null || type === undefined || typeof type === 'string') {
66179      return;
66180    }
66181
66182    var propTypes;
66183
66184    if (typeof type === 'function') {
66185      propTypes = type.propTypes;
66186    } else if (typeof type === 'object' && (type.$$typeof === REACT_FORWARD_REF_TYPE || // Note: Memo only checks outer props here.
66187    // Inner props are checked in the reconciler.
66188    type.$$typeof === REACT_MEMO_TYPE)) {
66189      propTypes = type.propTypes;
66190    } else {
66191      return;
66192    }
66193
66194    if (propTypes) {
66195      // Intentionally inside to avoid triggering lazy initializers:
66196      var name = getComponentName(type);
66197      checkPropTypes(propTypes, element.props, 'prop', name, element);
66198    } else if (type.PropTypes !== undefined && !propTypesMisspellWarningShown) {
66199      propTypesMisspellWarningShown = true; // Intentionally inside to avoid triggering lazy initializers:
66200
66201      var _name = getComponentName(type);
66202
66203      error('Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?', _name || 'Unknown');
66204    }
66205
66206    if (typeof type.getDefaultProps === 'function' && !type.getDefaultProps.isReactClassApproved) {
66207      error('getDefaultProps is only used on classic React.createClass ' + 'definitions. Use a static property named `defaultProps` instead.');
66208    }
66209  }
66210}
66211/**
66212 * Given a fragment, validate that it can only be provided with fragment props
66213 * @param {ReactElement} fragment
66214 */
66215
66216
66217function validateFragmentProps(fragment) {
66218  {
66219    var keys = Object.keys(fragment.props);
66220
66221    for (var i = 0; i < keys.length; i++) {
66222      var key = keys[i];
66223
66224      if (key !== 'children' && key !== 'key') {
66225        setCurrentlyValidatingElement$1(fragment);
66226
66227        error('Invalid prop `%s` supplied to `React.Fragment`. ' + 'React.Fragment can only have `key` and `children` props.', key);
66228
66229        setCurrentlyValidatingElement$1(null);
66230        break;
66231      }
66232    }
66233
66234    if (fragment.ref !== null) {
66235      setCurrentlyValidatingElement$1(fragment);
66236
66237      error('Invalid attribute `ref` supplied to `React.Fragment`.');
66238
66239      setCurrentlyValidatingElement$1(null);
66240    }
66241  }
66242}
66243function createElementWithValidation(type, props, children) {
66244  var validType = isValidElementType(type); // We warn in this case but don't throw. We expect the element creation to
66245  // succeed and there will likely be errors in render.
66246
66247  if (!validType) {
66248    var info = '';
66249
66250    if (type === undefined || typeof type === 'object' && type !== null && Object.keys(type).length === 0) {
66251      info += ' You likely forgot to export your component from the file ' + "it's defined in, or you might have mixed up default and named imports.";
66252    }
66253
66254    var sourceInfo = getSourceInfoErrorAddendumForProps(props);
66255
66256    if (sourceInfo) {
66257      info += sourceInfo;
66258    } else {
66259      info += getDeclarationErrorAddendum();
66260    }
66261
66262    var typeString;
66263
66264    if (type === null) {
66265      typeString = 'null';
66266    } else if (Array.isArray(type)) {
66267      typeString = 'array';
66268    } else if (type !== undefined && type.$$typeof === REACT_ELEMENT_TYPE) {
66269      typeString = "<" + (getComponentName(type.type) || 'Unknown') + " />";
66270      info = ' Did you accidentally export a JSX literal instead of a component?';
66271    } else {
66272      typeString = typeof type;
66273    }
66274
66275    {
66276      error('React.createElement: type is invalid -- expected a string (for ' + 'built-in components) or a class/function (for composite ' + 'components) but got: %s.%s', typeString, info);
66277    }
66278  }
66279
66280  var element = createElement.apply(this, arguments); // The result can be nullish if a mock or a custom function is used.
66281  // TODO: Drop this when these are no longer allowed as the type argument.
66282
66283  if (element == null) {
66284    return element;
66285  } // Skip key warning if the type isn't valid since our key validation logic
66286  // doesn't expect a non-string/function type and can throw confusing errors.
66287  // We don't want exception behavior to differ between dev and prod.
66288  // (Rendering will throw with a helpful message and as soon as the type is
66289  // fixed, the key warnings will appear.)
66290
66291
66292  if (validType) {
66293    for (var i = 2; i < arguments.length; i++) {
66294      validateChildKeys(arguments[i], type);
66295    }
66296  }
66297
66298  if (type === exports.Fragment) {
66299    validateFragmentProps(element);
66300  } else {
66301    validatePropTypes(element);
66302  }
66303
66304  return element;
66305}
66306var didWarnAboutDeprecatedCreateFactory = false;
66307function createFactoryWithValidation(type) {
66308  var validatedFactory = createElementWithValidation.bind(null, type);
66309  validatedFactory.type = type;
66310
66311  {
66312    if (!didWarnAboutDeprecatedCreateFactory) {
66313      didWarnAboutDeprecatedCreateFactory = true;
66314
66315      warn('React.createFactory() is deprecated and will be removed in ' + 'a future major release. Consider using JSX ' + 'or use React.createElement() directly instead.');
66316    } // Legacy hook: remove it
66317
66318
66319    Object.defineProperty(validatedFactory, 'type', {
66320      enumerable: false,
66321      get: function () {
66322        warn('Factory.type is deprecated. Access the class directly ' + 'before passing it to createFactory.');
66323
66324        Object.defineProperty(this, 'type', {
66325          value: type
66326        });
66327        return type;
66328      }
66329    });
66330  }
66331
66332  return validatedFactory;
66333}
66334function cloneElementWithValidation(element, props, children) {
66335  var newElement = cloneElement.apply(this, arguments);
66336
66337  for (var i = 2; i < arguments.length; i++) {
66338    validateChildKeys(arguments[i], newElement.type);
66339  }
66340
66341  validatePropTypes(newElement);
66342  return newElement;
66343}
66344
66345{
66346
66347  try {
66348    var frozenObject = Object.freeze({});
66349    /* eslint-disable no-new */
66350
66351    new Map([[frozenObject, null]]);
66352    new Set([frozenObject]);
66353    /* eslint-enable no-new */
66354  } catch (e) {
66355  }
66356}
66357
66358var createElement$1 =  createElementWithValidation ;
66359var cloneElement$1 =  cloneElementWithValidation ;
66360var createFactory =  createFactoryWithValidation ;
66361var Children = {
66362  map: mapChildren,
66363  forEach: forEachChildren,
66364  count: countChildren,
66365  toArray: toArray,
66366  only: onlyChild
66367};
66368
66369exports.Children = Children;
66370exports.Component = Component;
66371exports.PureComponent = PureComponent;
66372exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED = ReactSharedInternals;
66373exports.cloneElement = cloneElement$1;
66374exports.createContext = createContext;
66375exports.createElement = createElement$1;
66376exports.createFactory = createFactory;
66377exports.createRef = createRef;
66378exports.forwardRef = forwardRef;
66379exports.isValidElement = isValidElement;
66380exports.lazy = lazy;
66381exports.memo = memo;
66382exports.useCallback = useCallback;
66383exports.useContext = useContext;
66384exports.useDebugValue = useDebugValue;
66385exports.useEffect = useEffect;
66386exports.useImperativeHandle = useImperativeHandle;
66387exports.useLayoutEffect = useLayoutEffect;
66388exports.useMemo = useMemo;
66389exports.useReducer = useReducer;
66390exports.useRef = useRef;
66391exports.useState = useState;
66392exports.version = ReactVersion;
66393  })();
66394}
66395
66396
66397/***/ }),
66398
vendor: 411 bytes, lines 66399-66414
66399/***/ "./node_modules/react/index.js":
66400/*!*************************************!*\
66401  !*** ./node_modules/react/index.js ***!
66402  \*************************************/
66403/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
66404
66405"use strict";
66406
66407
66408if (false) {} else {
66409  module.exports = __webpack_require__(/*! ./cjs/react.development.js */ "./node_modules/react/cjs/react.development.js");
66410}
66411
66412
66413/***/ }),
66414
vendor: 9,325 bytes, lines 66415-66772
66415/***/ "./node_modules/scheduler/cjs/scheduler-tracing.development.js":
66416/*!*********************************************************************!*\
66417  !*** ./node_modules/scheduler/cjs/scheduler-tracing.development.js ***!
66418  \*********************************************************************/
66419/***/ ((__unused_webpack_module, exports) => {
66420
66421"use strict";
66422/** @license React v0.20.2
66423 * scheduler-tracing.development.js
66424 *
66425 * Copyright (c) Facebook, Inc. and its affiliates.
66426 *
66427 * This source code is licensed under the MIT license found in the
66428 * LICENSE file in the root directory of this source tree.
66429 */
66430
66431
66432
66433if (true) {
66434  (function() {
66435'use strict';
66436
66437var DEFAULT_THREAD_ID = 0; // Counters used to generate unique IDs.
66438
66439var interactionIDCounter = 0;
66440var threadIDCounter = 0; // Set of currently traced interactions.
66441// Interactions "stack"–
66442// Meaning that newly traced interactions are appended to the previously active set.
66443// When an interaction goes out of scope, the previous set (if any) is restored.
66444
66445exports.__interactionsRef = null; // Listener(s) to notify when interactions begin and end.
66446
66447exports.__subscriberRef = null;
66448
66449{
66450  exports.__interactionsRef = {
66451    current: new Set()
66452  };
66453  exports.__subscriberRef = {
66454    current: null
66455  };
66456}
66457function unstable_clear(callback) {
66458
66459  var prevInteractions = exports.__interactionsRef.current;
66460  exports.__interactionsRef.current = new Set();
66461
66462  try {
66463    return callback();
66464  } finally {
66465    exports.__interactionsRef.current = prevInteractions;
66466  }
66467}
66468function unstable_getCurrent() {
66469  {
66470    return exports.__interactionsRef.current;
66471  }
66472}
66473function unstable_getThreadID() {
66474  return ++threadIDCounter;
66475}
66476function unstable_trace(name, timestamp, callback) {
66477  var threadID = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : DEFAULT_THREAD_ID;
66478
66479  var interaction = {
66480    __count: 1,
66481    id: interactionIDCounter++,
66482    name: name,
66483    timestamp: timestamp
66484  };
66485  var prevInteractions = exports.__interactionsRef.current; // Traced interactions should stack/accumulate.
66486  // To do that, clone the current interactions.
66487  // The previous set will be restored upon completion.
66488
66489  var interactions = new Set(prevInteractions);
66490  interactions.add(interaction);
66491  exports.__interactionsRef.current = interactions;
66492  var subscriber = exports.__subscriberRef.current;
66493  var returnValue;
66494
66495  try {
66496    if (subscriber !== null) {
66497      subscriber.onInteractionTraced(interaction);
66498    }
66499  } finally {
66500    try {
66501      if (subscriber !== null) {
66502        subscriber.onWorkStarted(interactions, threadID);
66503      }
66504    } finally {
66505      try {
66506        returnValue = callback();
66507      } finally {
66508        exports.__interactionsRef.current = prevInteractions;
66509
66510        try {
66511          if (subscriber !== null) {
66512            subscriber.onWorkStopped(interactions, threadID);
66513          }
66514        } finally {
66515          interaction.__count--; // If no async work was scheduled for this interaction,
66516          // Notify subscribers that it's completed.
66517
66518          if (subscriber !== null && interaction.__count === 0) {
66519            subscriber.onInteractionScheduledWorkCompleted(interaction);
66520          }
66521        }
66522      }
66523    }
66524  }
66525
66526  return returnValue;
66527}
66528function unstable_wrap(callback) {
66529  var threadID = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : DEFAULT_THREAD_ID;
66530
66531  var wrappedInteractions = exports.__interactionsRef.current;
66532  var subscriber = exports.__subscriberRef.current;
66533
66534  if (subscriber !== null) {
66535    subscriber.onWorkScheduled(wrappedInteractions, threadID);
66536  } // Update the pending async work count for the current interactions.
66537  // Update after calling subscribers in case of error.
66538
66539
66540  wrappedInteractions.forEach(function (interaction) {
66541    interaction.__count++;
66542  });
66543  var hasRun = false;
66544
66545  function wrapped() {
66546    var prevInteractions = exports.__interactionsRef.current;
66547    exports.__interactionsRef.current = wrappedInteractions;
66548    subscriber = exports.__subscriberRef.current;
66549
66550    try {
66551      var returnValue;
66552
66553      try {
66554        if (subscriber !== null) {
66555          subscriber.onWorkStarted(wrappedInteractions, threadID);
66556        }
66557      } finally {
66558        try {
66559          returnValue = callback.apply(undefined, arguments);
66560        } finally {
66561          exports.__interactionsRef.current = prevInteractions;
66562
66563          if (subscriber !== null) {
66564            subscriber.onWorkStopped(wrappedInteractions, threadID);
66565          }
66566        }
66567      }
66568
66569      return returnValue;
66570    } finally {
66571      if (!hasRun) {
66572        // We only expect a wrapped function to be executed once,
66573        // But in the event that it's executed more than once–
66574        // Only decrement the outstanding interaction counts once.
66575        hasRun = true; // Update pending async counts for all wrapped interactions.
66576        // If this was the last scheduled async work for any of them,
66577        // Mark them as completed.
66578
66579        wrappedInteractions.forEach(function (interaction) {
66580          interaction.__count--;
66581
66582          if (subscriber !== null && interaction.__count === 0) {
66583            subscriber.onInteractionScheduledWorkCompleted(interaction);
66584          }
66585        });
66586      }
66587    }
66588  }
66589
66590  wrapped.cancel = function cancel() {
66591    subscriber = exports.__subscriberRef.current;
66592
66593    try {
66594      if (subscriber !== null) {
66595        subscriber.onWorkCanceled(wrappedInteractions, threadID);
66596      }
66597    } finally {
66598      // Update pending async counts for all wrapped interactions.
66599      // If this was the last scheduled async work for any of them,
66600      // Mark them as completed.
66601      wrappedInteractions.forEach(function (interaction) {
66602        interaction.__count--;
66603
66604        if (subscriber && interaction.__count === 0) {
66605          subscriber.onInteractionScheduledWorkCompleted(interaction);
66606        }
66607      });
66608    }
66609  };
66610
66611  return wrapped;
66612}
66613
66614var subscribers = null;
66615
66616{
66617  subscribers = new Set();
66618}
66619
66620function unstable_subscribe(subscriber) {
66621  {
66622    subscribers.add(subscriber);
66623
66624    if (subscribers.size === 1) {
66625      exports.__subscriberRef.current = {
66626        onInteractionScheduledWorkCompleted: onInteractionScheduledWorkCompleted,
66627        onInteractionTraced: onInteractionTraced,
66628        onWorkCanceled: onWorkCanceled,
66629        onWorkScheduled: onWorkScheduled,
66630        onWorkStarted: onWorkStarted,
66631        onWorkStopped: onWorkStopped
66632      };
66633    }
66634  }
66635}
66636function unstable_unsubscribe(subscriber) {
66637  {
66638    subscribers.delete(subscriber);
66639
66640    if (subscribers.size === 0) {
66641      exports.__subscriberRef.current = null;
66642    }
66643  }
66644}
66645
66646function onInteractionTraced(interaction) {
66647  var didCatchError = false;
66648  var caughtError = null;
66649  subscribers.forEach(function (subscriber) {
66650    try {
66651      subscriber.onInteractionTraced(interaction);
66652    } catch (error) {
66653      if (!didCatchError) {
66654        didCatchError = true;
66655        caughtError = error;
66656      }
66657    }
66658  });
66659
66660  if (didCatchError) {
66661    throw caughtError;
66662  }
66663}
66664
66665function onInteractionScheduledWorkCompleted(interaction) {
66666  var didCatchError = false;
66667  var caughtError = null;
66668  subscribers.forEach(function (subscriber) {
66669    try {
66670      subscriber.onInteractionScheduledWorkCompleted(interaction);
66671    } catch (error) {
66672      if (!didCatchError) {
66673        didCatchError = true;
66674        caughtError = error;
66675      }
66676    }
66677  });
66678
66679  if (didCatchError) {
66680    throw caughtError;
66681  }
66682}
66683
66684function onWorkScheduled(interactions, threadID) {
66685  var didCatchError = false;
66686  var caughtError = null;
66687  subscribers.forEach(function (subscriber) {
66688    try {
66689      subscriber.onWorkScheduled(interactions, threadID);
66690    } catch (error) {
66691      if (!didCatchError) {
66692        didCatchError = true;
66693        caughtError = error;
66694      }
66695    }
66696  });
66697
66698  if (didCatchError) {
66699    throw caughtError;
66700  }
66701}
66702
66703function onWorkStarted(interactions, threadID) {
66704  var didCatchError = false;
66705  var caughtError = null;
66706  subscribers.forEach(function (subscriber) {
66707    try {
66708      subscriber.onWorkStarted(interactions, threadID);
66709    } catch (error) {
66710      if (!didCatchError) {
66711        didCatchError = true;
66712        caughtError = error;
66713      }
66714    }
66715  });
66716
66717  if (didCatchError) {
66718    throw caughtError;
66719  }
66720}
66721
66722function onWorkStopped(interactions, threadID) {
66723  var didCatchError = false;
66724  var caughtError = null;
66725  subscribers.forEach(function (subscriber) {
66726    try {
66727      subscriber.onWorkStopped(interactions, threadID);
66728    } catch (error) {
66729      if (!didCatchError) {
66730        didCatchError = true;
66731        caughtError = error;
66732      }
66733    }
66734  });
66735
66736  if (didCatchError) {
66737    throw caughtError;
66738  }
66739}
66740
66741function onWorkCanceled(interactions, threadID) {
66742  var didCatchError = false;
66743  var caughtError = null;
66744  subscribers.forEach(function (subscriber) {
66745    try {
66746      subscriber.onWorkCanceled(interactions, threadID);
66747    } catch (error) {
66748      if (!didCatchError) {
66749        didCatchError = true;
66750        caughtError = error;
66751      }
66752    }
66753  });
66754
66755  if (didCatchError) {
66756    throw caughtError;
66757  }
66758}
66759
66760exports.unstable_clear = unstable_clear;
66761exports.unstable_getCurrent = unstable_getCurrent;
66762exports.unstable_getThreadID = unstable_getThreadID;
66763exports.unstable_subscribe = unstable_subscribe;
66764exports.unstable_trace = unstable_trace;
66765exports.unstable_unsubscribe = unstable_unsubscribe;
66766exports.unstable_wrap = unstable_wrap;
66767  })();
66768}
66769
66770
66771/***/ }),
66772
vendor: 17,855 bytes, lines 66773-67429
66773/***/ "./node_modules/scheduler/cjs/scheduler.development.js":
66774/*!*************************************************************!*\
66775  !*** ./node_modules/scheduler/cjs/scheduler.development.js ***!
66776  \*************************************************************/
66777/***/ ((__unused_webpack_module, exports) => {
66778
66779"use strict";
66780/** @license React v0.20.2
66781 * scheduler.development.js
66782 *
66783 * Copyright (c) Facebook, Inc. and its affiliates.
66784 *
66785 * This source code is licensed under the MIT license found in the
66786 * LICENSE file in the root directory of this source tree.
66787 */
66788
66789
66790
66791if (true) {
66792  (function() {
66793'use strict';
66794
66795var enableSchedulerDebugging = false;
66796var enableProfiling = false;
66797
66798var requestHostCallback;
66799var requestHostTimeout;
66800var cancelHostTimeout;
66801var requestPaint;
66802var hasPerformanceNow = typeof performance === 'object' && typeof performance.now === 'function';
66803
66804if (hasPerformanceNow) {
66805  var localPerformance = performance;
66806
66807  exports.unstable_now = function () {
66808    return localPerformance.now();
66809  };
66810} else {
66811  var localDate = Date;
66812  var initialTime = localDate.now();
66813
66814  exports.unstable_now = function () {
66815    return localDate.now() - initialTime;
66816  };
66817}
66818
66819if ( // If Scheduler runs in a non-DOM environment, it falls back to a naive
66820// implementation using setTimeout.
66821typeof window === 'undefined' || // Check if MessageChannel is supported, too.
66822typeof MessageChannel !== 'function') {
66823  // If this accidentally gets imported in a non-browser environment, e.g. JavaScriptCore,
66824  // fallback to a naive implementation.
66825  var _callback = null;
66826  var _timeoutID = null;
66827
66828  var _flushCallback = function () {
66829    if (_callback !== null) {
66830      try {
66831        var currentTime = exports.unstable_now();
66832        var hasRemainingTime = true;
66833
66834        _callback(hasRemainingTime, currentTime);
66835
66836        _callback = null;
66837      } catch (e) {
66838        setTimeout(_flushCallback, 0);
66839        throw e;
66840      }
66841    }
66842  };
66843
66844  requestHostCallback = function (cb) {
66845    if (_callback !== null) {
66846      // Protect against re-entrancy.
66847      setTimeout(requestHostCallback, 0, cb);
66848    } else {
66849      _callback = cb;
66850      setTimeout(_flushCallback, 0);
66851    }
66852  };
66853
66854  requestHostTimeout = function (cb, ms) {
66855    _timeoutID = setTimeout(cb, ms);
66856  };
66857
66858  cancelHostTimeout = function () {
66859    clearTimeout(_timeoutID);
66860  };
66861
66862  exports.unstable_shouldYield = function () {
66863    return false;
66864  };
66865
66866  requestPaint = exports.unstable_forceFrameRate = function () {};
66867} else {
66868  // Capture local references to native APIs, in case a polyfill overrides them.
66869  var _setTimeout = window.setTimeout;
66870  var _clearTimeout = window.clearTimeout;
66871
66872  if (typeof console !== 'undefined') {
66873    // TODO: Scheduler no longer requires these methods to be polyfilled. But
66874    // maybe we want to continue warning if they don't exist, to preserve the
66875    // option to rely on it in the future?
66876    var requestAnimationFrame = window.requestAnimationFrame;
66877    var cancelAnimationFrame = window.cancelAnimationFrame;
66878
66879    if (typeof requestAnimationFrame !== 'function') {
66880      // Using console['error'] to evade Babel and ESLint
66881      console['error']("This browser doesn't support requestAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');
66882    }
66883
66884    if (typeof cancelAnimationFrame !== 'function') {
66885      // Using console['error'] to evade Babel and ESLint
66886      console['error']("This browser doesn't support cancelAnimationFrame. " + 'Make sure that you load a ' + 'polyfill in older browsers. https://reactjs.org/link/react-polyfills');
66887    }
66888  }
66889
66890  var isMessageLoopRunning = false;
66891  var scheduledHostCallback = null;
66892  var taskTimeoutID = -1; // Scheduler periodically yields in case there is other work on the main
66893  // thread, like user events. By default, it yields multiple times per frame.
66894  // It does not attempt to align with frame boundaries, since most tasks don't
66895  // need to be frame aligned; for those that do, use requestAnimationFrame.
66896
66897  var yieldInterval = 5;
66898  var deadline = 0; // TODO: Make this configurable
66899
66900  {
66901    // `isInputPending` is not available. Since we have no way of knowing if
66902    // there's pending input, always yield at the end of the frame.
66903    exports.unstable_shouldYield = function () {
66904      return exports.unstable_now() >= deadline;
66905    }; // Since we yield every frame regardless, `requestPaint` has no effect.
66906
66907
66908    requestPaint = function () {};
66909  }
66910
66911  exports.unstable_forceFrameRate = function (fps) {
66912    if (fps < 0 || fps > 125) {
66913      // Using console['error'] to evade Babel and ESLint
66914      console['error']('forceFrameRate takes a positive int between 0 and 125, ' + 'forcing frame rates higher than 125 fps is not supported');
66915      return;
66916    }
66917
66918    if (fps > 0) {
66919      yieldInterval = Math.floor(1000 / fps);
66920    } else {
66921      // reset the framerate
66922      yieldInterval = 5;
66923    }
66924  };
66925
66926  var performWorkUntilDeadline = function () {
66927    if (scheduledHostCallback !== null) {
66928      var currentTime = exports.unstable_now(); // Yield after `yieldInterval` ms, regardless of where we are in the vsync
66929      // cycle. This means there's always time remaining at the beginning of
66930      // the message event.
66931
66932      deadline = currentTime + yieldInterval;
66933      var hasTimeRemaining = true;
66934
66935      try {
66936        var hasMoreWork = scheduledHostCallback(hasTimeRemaining, currentTime);
66937
66938        if (!hasMoreWork) {
66939          isMessageLoopRunning = false;
66940          scheduledHostCallback = null;
66941        } else {
66942          // If there's more work, schedule the next message event at the end
66943          // of the preceding one.
66944          port.postMessage(null);
66945        }
66946      } catch (error) {
66947        // If a scheduler task throws, exit the current browser task so the
66948        // error can be observed.
66949        port.postMessage(null);
66950        throw error;
66951      }
66952    } else {
66953      isMessageLoopRunning = false;
66954    } // Yielding to the browser will give it a chance to paint, so we can
66955  };
66956
66957  var channel = new MessageChannel();
66958  var port = channel.port2;
66959  channel.port1.onmessage = performWorkUntilDeadline;
66960
66961  requestHostCallback = function (callback) {
66962    scheduledHostCallback = callback;
66963
66964    if (!isMessageLoopRunning) {
66965      isMessageLoopRunning = true;
66966      port.postMessage(null);
66967    }
66968  };
66969
66970  requestHostTimeout = function (callback, ms) {
66971    taskTimeoutID = _setTimeout(function () {
66972      callback(exports.unstable_now());
66973    }, ms);
66974  };
66975
66976  cancelHostTimeout = function () {
66977    _clearTimeout(taskTimeoutID);
66978
66979    taskTimeoutID = -1;
66980  };
66981}
66982
66983function push(heap, node) {
66984  var index = heap.length;
66985  heap.push(node);
66986  siftUp(heap, node, index);
66987}
66988function peek(heap) {
66989  var first = heap[0];
66990  return first === undefined ? null : first;
66991}
66992function pop(heap) {
66993  var first = heap[0];
66994
66995  if (first !== undefined) {
66996    var last = heap.pop();
66997
66998    if (last !== first) {
66999      heap[0] = last;
67000      siftDown(heap, last, 0);
67001    }
67002
67003    return first;
67004  } else {
67005    return null;
67006  }
67007}
67008
67009function siftUp(heap, node, i) {
67010  var index = i;
67011
67012  while (true) {
67013    var parentIndex = index - 1 >>> 1;
67014    var parent = heap[parentIndex];
67015
67016    if (parent !== undefined && compare(parent, node) > 0) {
67017      // The parent is larger. Swap positions.
67018      heap[parentIndex] = node;
67019      heap[index] = parent;
67020      index = parentIndex;
67021    } else {
67022      // The parent is smaller. Exit.
67023      return;
67024    }
67025  }
67026}
67027
67028function siftDown(heap, node, i) {
67029  var index = i;
67030  var length = heap.length;
67031
67032  while (index < length) {
67033    var leftIndex = (index + 1) * 2 - 1;
67034    var left = heap[leftIndex];
67035    var rightIndex = leftIndex + 1;
67036    var right = heap[rightIndex]; // If the left or right node is smaller, swap with the smaller of those.
67037
67038    if (left !== undefined && compare(left, node) < 0) {
67039      if (right !== undefined && compare(right, left) < 0) {
67040        heap[index] = right;
67041        heap[rightIndex] = node;
67042        index = rightIndex;
67043      } else {
67044        heap[index] = left;
67045        heap[leftIndex] = node;
67046        index = leftIndex;
67047      }
67048    } else if (right !== undefined && compare(right, node) < 0) {
67049      heap[index] = right;
67050      heap[rightIndex] = node;
67051      index = rightIndex;
67052    } else {
67053      // Neither child is smaller. Exit.
67054      return;
67055    }
67056  }
67057}
67058
67059function compare(a, b) {
67060  // Compare sort index first, then task id.
67061  var diff = a.sortIndex - b.sortIndex;
67062  return diff !== 0 ? diff : a.id - b.id;
67063}
67064
67065// TODO: Use symbols?
67066var ImmediatePriority = 1;
67067var UserBlockingPriority = 2;
67068var NormalPriority = 3;
67069var LowPriority = 4;
67070var IdlePriority = 5;
67071
67072function markTaskErrored(task, ms) {
67073}
67074
67075/* eslint-disable no-var */
67076// Math.pow(2, 30) - 1
67077// 0b111111111111111111111111111111
67078
67079var maxSigned31BitInt = 1073741823; // Times out immediately
67080
67081var IMMEDIATE_PRIORITY_TIMEOUT = -1; // Eventually times out
67082
67083var USER_BLOCKING_PRIORITY_TIMEOUT = 250;
67084var NORMAL_PRIORITY_TIMEOUT = 5000;
67085var LOW_PRIORITY_TIMEOUT = 10000; // Never times out
67086
67087var IDLE_PRIORITY_TIMEOUT = maxSigned31BitInt; // Tasks are stored on a min heap
67088
67089var taskQueue = [];
67090var timerQueue = []; // Incrementing id counter. Used to maintain insertion order.
67091
67092var taskIdCounter = 1; // Pausing the scheduler is useful for debugging.
67093var currentTask = null;
67094var currentPriorityLevel = NormalPriority; // This is set while performing work, to prevent re-entrancy.
67095
67096var isPerformingWork = false;
67097var isHostCallbackScheduled = false;
67098var isHostTimeoutScheduled = false;
67099
67100function advanceTimers(currentTime) {
67101  // Check for tasks that are no longer delayed and add them to the queue.
67102  var timer = peek(timerQueue);
67103
67104  while (timer !== null) {
67105    if (timer.callback === null) {
67106      // Timer was cancelled.
67107      pop(timerQueue);
67108    } else if (timer.startTime <= currentTime) {
67109      // Timer fired. Transfer to the task queue.
67110      pop(timerQueue);
67111      timer.sortIndex = timer.expirationTime;
67112      push(taskQueue, timer);
67113    } else {
67114      // Remaining timers are pending.
67115      return;
67116    }
67117
67118    timer = peek(timerQueue);
67119  }
67120}
67121
67122function handleTimeout(currentTime) {
67123  isHostTimeoutScheduled = false;
67124  advanceTimers(currentTime);
67125
67126  if (!isHostCallbackScheduled) {
67127    if (peek(taskQueue) !== null) {
67128      isHostCallbackScheduled = true;
67129      requestHostCallback(flushWork);
67130    } else {
67131      var firstTimer = peek(timerQueue);
67132
67133      if (firstTimer !== null) {
67134        requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
67135      }
67136    }
67137  }
67138}
67139
67140function flushWork(hasTimeRemaining, initialTime) {
67141
67142
67143  isHostCallbackScheduled = false;
67144
67145  if (isHostTimeoutScheduled) {
67146    // We scheduled a timeout but it's no longer needed. Cancel it.
67147    isHostTimeoutScheduled = false;
67148    cancelHostTimeout();
67149  }
67150
67151  isPerformingWork = true;
67152  var previousPriorityLevel = currentPriorityLevel;
67153
67154  try {
67155    if (enableProfiling) {
67156      try {
67157        return workLoop(hasTimeRemaining, initialTime);
67158      } catch (error) {
67159        if (currentTask !== null) {
67160          var currentTime = exports.unstable_now();
67161          markTaskErrored(currentTask, currentTime);
67162          currentTask.isQueued = false;
67163        }
67164
67165        throw error;
67166      }
67167    } else {
67168      // No catch in prod code path.
67169      return workLoop(hasTimeRemaining, initialTime);
67170    }
67171  } finally {
67172    currentTask = null;
67173    currentPriorityLevel = previousPriorityLevel;
67174    isPerformingWork = false;
67175  }
67176}
67177
67178function workLoop(hasTimeRemaining, initialTime) {
67179  var currentTime = initialTime;
67180  advanceTimers(currentTime);
67181  currentTask = peek(taskQueue);
67182
67183  while (currentTask !== null && !(enableSchedulerDebugging )) {
67184    if (currentTask.expirationTime > currentTime && (!hasTimeRemaining || exports.unstable_shouldYield())) {
67185      // This currentTask hasn't expired, and we've reached the deadline.
67186      break;
67187    }
67188
67189    var callback = currentTask.callback;
67190
67191    if (typeof callback === 'function') {
67192      currentTask.callback = null;
67193      currentPriorityLevel = currentTask.priorityLevel;
67194      var didUserCallbackTimeout = currentTask.expirationTime <= currentTime;
67195
67196      var continuationCallback = callback(didUserCallbackTimeout);
67197      currentTime = exports.unstable_now();
67198
67199      if (typeof continuationCallback === 'function') {
67200        currentTask.callback = continuationCallback;
67201      } else {
67202
67203        if (currentTask === peek(taskQueue)) {
67204          pop(taskQueue);
67205        }
67206      }
67207
67208      advanceTimers(currentTime);
67209    } else {
67210      pop(taskQueue);
67211    }
67212
67213    currentTask = peek(taskQueue);
67214  } // Return whether there's additional work
67215
67216
67217  if (currentTask !== null) {
67218    return true;
67219  } else {
67220    var firstTimer = peek(timerQueue);
67221
67222    if (firstTimer !== null) {
67223      requestHostTimeout(handleTimeout, firstTimer.startTime - currentTime);
67224    }
67225
67226    return false;
67227  }
67228}
67229
67230function unstable_runWithPriority(priorityLevel, eventHandler) {
67231  switch (priorityLevel) {
67232    case ImmediatePriority:
67233    case UserBlockingPriority:
67234    case NormalPriority:
67235    case LowPriority:
67236    case IdlePriority:
67237      break;
67238
67239    default:
67240      priorityLevel = NormalPriority;
67241  }
67242
67243  var previousPriorityLevel = currentPriorityLevel;
67244  currentPriorityLevel = priorityLevel;
67245
67246  try {
67247    return eventHandler();
67248  } finally {
67249    currentPriorityLevel = previousPriorityLevel;
67250  }
67251}
67252
67253function unstable_next(eventHandler) {
67254  var priorityLevel;
67255
67256  switch (currentPriorityLevel) {
67257    case ImmediatePriority:
67258    case UserBlockingPriority:
67259    case NormalPriority:
67260      // Shift down to normal priority
67261      priorityLevel = NormalPriority;
67262      break;
67263
67264    default:
67265      // Anything lower than normal priority should remain at the current level.
67266      priorityLevel = currentPriorityLevel;
67267      break;
67268  }
67269
67270  var previousPriorityLevel = currentPriorityLevel;
67271  currentPriorityLevel = priorityLevel;
67272
67273  try {
67274    return eventHandler();
67275  } finally {
67276    currentPriorityLevel = previousPriorityLevel;
67277  }
67278}
67279
67280function unstable_wrapCallback(callback) {
67281  var parentPriorityLevel = currentPriorityLevel;
67282  return function () {
67283    // This is a fork of runWithPriority, inlined for performance.
67284    var previousPriorityLevel = currentPriorityLevel;
67285    currentPriorityLevel = parentPriorityLevel;
67286
67287    try {
67288      return callback.apply(this, arguments);
67289    } finally {
67290      currentPriorityLevel = previousPriorityLevel;
67291    }
67292  };
67293}
67294
67295function unstable_scheduleCallback(priorityLevel, callback, options) {
67296  var currentTime = exports.unstable_now();
67297  var startTime;
67298
67299  if (typeof options === 'object' && options !== null) {
67300    var delay = options.delay;
67301
67302    if (typeof delay === 'number' && delay > 0) {
67303      startTime = currentTime + delay;
67304    } else {
67305      startTime = currentTime;
67306    }
67307  } else {
67308    startTime = currentTime;
67309  }
67310
67311  var timeout;
67312
67313  switch (priorityLevel) {
67314    case ImmediatePriority:
67315      timeout = IMMEDIATE_PRIORITY_TIMEOUT;
67316      break;
67317
67318    case UserBlockingPriority:
67319      timeout = USER_BLOCKING_PRIORITY_TIMEOUT;
67320      break;
67321
67322    case IdlePriority:
67323      timeout = IDLE_PRIORITY_TIMEOUT;
67324      break;
67325
67326    case LowPriority:
67327      timeout = LOW_PRIORITY_TIMEOUT;
67328      break;
67329
67330    case NormalPriority:
67331    default:
67332      timeout = NORMAL_PRIORITY_TIMEOUT;
67333      break;
67334  }
67335
67336  var expirationTime = startTime + timeout;
67337  var newTask = {
67338    id: taskIdCounter++,
67339    callback: callback,
67340    priorityLevel: priorityLevel,
67341    startTime: startTime,
67342    expirationTime: expirationTime,
67343    sortIndex: -1
67344  };
67345
67346  if (startTime > currentTime) {
67347    // This is a delayed task.
67348    newTask.sortIndex = startTime;
67349    push(timerQueue, newTask);
67350
67351    if (peek(taskQueue) === null && newTask === peek(timerQueue)) {
67352      // All tasks are delayed, and this is the task with the earliest delay.
67353      if (isHostTimeoutScheduled) {
67354        // Cancel an existing timeout.
67355        cancelHostTimeout();
67356      } else {
67357        isHostTimeoutScheduled = true;
67358      } // Schedule a timeout.
67359
67360
67361      requestHostTimeout(handleTimeout, startTime - currentTime);
67362    }
67363  } else {
67364    newTask.sortIndex = expirationTime;
67365    push(taskQueue, newTask);
67366    // wait until the next time we yield.
67367
67368
67369    if (!isHostCallbackScheduled && !isPerformingWork) {
67370      isHostCallbackScheduled = true;
67371      requestHostCallback(flushWork);
67372    }
67373  }
67374
67375  return newTask;
67376}
67377
67378function unstable_pauseExecution() {
67379}
67380
67381function unstable_continueExecution() {
67382
67383  if (!isHostCallbackScheduled && !isPerformingWork) {
67384    isHostCallbackScheduled = true;
67385    requestHostCallback(flushWork);
67386  }
67387}
67388
67389function unstable_getFirstCallbackNode() {
67390  return peek(taskQueue);
67391}
67392
67393function unstable_cancelCallback(task) {
67394  // remove from the queue because you can't remove arbitrary nodes from an
67395  // array based heap, only the first one.)
67396
67397
67398  task.callback = null;
67399}
67400
67401function unstable_getCurrentPriorityLevel() {
67402  return currentPriorityLevel;
67403}
67404
67405var unstable_requestPaint = requestPaint;
67406var unstable_Profiling =  null;
67407
67408exports.unstable_IdlePriority = IdlePriority;
67409exports.unstable_ImmediatePriority = ImmediatePriority;
67410exports.unstable_LowPriority = LowPriority;
67411exports.unstable_NormalPriority = NormalPriority;
67412exports.unstable_Profiling = unstable_Profiling;
67413exports.unstable_UserBlockingPriority = UserBlockingPriority;
67414exports.unstable_cancelCallback = unstable_cancelCallback;
67415exports.unstable_continueExecution = unstable_continueExecution;
67416exports.unstable_getCurrentPriorityLevel = unstable_getCurrentPriorityLevel;
67417exports.unstable_getFirstCallbackNode = unstable_getFirstCallbackNode;
67418exports.unstable_next = unstable_next;
67419exports.unstable_pauseExecution = unstable_pauseExecution;
67420exports.unstable_requestPaint = unstable_requestPaint;
67421exports.unstable_runWithPriority = unstable_runWithPriority;
67422exports.unstable_scheduleCallback = unstable_scheduleCallback;
67423exports.unstable_wrapCallback = unstable_wrapCallback;
67424  })();
67425}
67426
67427
67428/***/ }),
67429
vendor: 439 bytes, lines 67430-67445
67430/***/ "./node_modules/scheduler/index.js":
67431/*!*****************************************!*\
67432  !*** ./node_modules/scheduler/index.js ***!
67433  \*****************************************/
67434/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
67435
67436"use strict";
67437
67438
67439if (false) {} else {
67440  module.exports = __webpack_require__(/*! ./cjs/scheduler.development.js */ "./node_modules/scheduler/cjs/scheduler.development.js");
67441}
67442
67443
67444/***/ }),
67445
vendor: 463 bytes, lines 67446-67461
67446/***/ "./node_modules/scheduler/tracing.js":
67447/*!*******************************************!*\
67448  !*** ./node_modules/scheduler/tracing.js ***!
67449  \*******************************************/
67450/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
67451
67452"use strict";
67453
67454
67455if (false) {} else {
67456  module.exports = __webpack_require__(/*! ./cjs/scheduler-tracing.development.js */ "./node_modules/scheduler/cjs/scheduler-tracing.development.js");
67457}
67458
67459
67460/***/ }),
67461
67462/***/ "./resources/js/app/app.style.scss":
67463/*!*****************************************!*\
67464  !*** ./resources/js/app/app.style.scss ***!
67465  \*****************************************/
67466/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67467
67468"use strict";
67469__webpack_require__.r(__webpack_exports__);
67470/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67471/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67472/* harmony export */ });
67473/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67474/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67475/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_app_style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./app.style.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/app/app.style.scss");
67476
67477            
67478
67479var options = {};
67480
67481options.insert = "head";
67482options.singleton = false;
67483
67484var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_app_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67485
67486
67487
67488/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_app_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67489
67490/***/ }),
67491
67492/***/ "./resources/js/components/category-list/category-list.style.scss":
67493/*!************************************************************************!*\
67494  !*** ./resources/js/components/category-list/category-list.style.scss ***!
67495  \************************************************************************/
67496/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67497
67498"use strict";
67499__webpack_require__.r(__webpack_exports__);
67500/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67501/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67502/* harmony export */ });
67503/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67504/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67505/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_category_list_style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./category-list.style.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/category-list/category-list.style.scss");
67506
67507            
67508
67509var options = {};
67510
67511options.insert = "head";
67512options.singleton = false;
67513
67514var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_category_list_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67515
67516
67517
67518/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_category_list_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67519
67520/***/ }),
67521
67522/***/ "./resources/js/components/flash-sale/flash-sale.style.scss":
67523/*!******************************************************************!*\
67524  !*** ./resources/js/components/flash-sale/flash-sale.style.scss ***!
67525  \******************************************************************/
67526/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67527
67528"use strict";
67529__webpack_require__.r(__webpack_exports__);
67530/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67531/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67532/* harmony export */ });
67533/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67534/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67535/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_flash_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./flash-sale.style.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/flash-sale/flash-sale.style.scss");
67536
67537            
67538
67539var options = {};
67540
67541options.insert = "head";
67542options.singleton = false;
67543
67544var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_flash_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67545
67546
67547
67548/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_flash_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67549
67550/***/ }),
67551
67552/***/ "./resources/js/components/products/products.style.scss":
67553/*!**************************************************************!*\
67554  !*** ./resources/js/components/products/products.style.scss ***!
67555  \**************************************************************/
67556/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67557
67558"use strict";
67559__webpack_require__.r(__webpack_exports__);
67560/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67561/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67562/* harmony export */ });
67563/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67564/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67565/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_products_style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./products.style.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/products/products.style.scss");
67566
67567            
67568
67569var options = {};
67570
67571options.insert = "head";
67572options.singleton = false;
67573
67574var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_products_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67575
67576
67577
67578/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_products_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67579
67580/***/ }),
67581
67582/***/ "./resources/js/components/quick-action-shop/quick-action.scss":
67583/*!*********************************************************************!*\
67584  !*** ./resources/js/components/quick-action-shop/quick-action.scss ***!
67585  \*********************************************************************/
67586/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67587
67588"use strict";
67589__webpack_require__.r(__webpack_exports__);
67590/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67591/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67592/* harmony export */ });
67593/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67594/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67595/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_quick_action_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./quick-action.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/quick-action-shop/quick-action.scss");
67596
67597            
67598
67599var options = {};
67600
67601options.insert = "head";
67602options.singleton = false;
67603
67604var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_quick_action_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67605
67606
67607
67608/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_quick_action_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67609
67610/***/ }),
67611
67612/***/ "./resources/js/components/top-sale/top-sale.style.scss":
67613/*!**************************************************************!*\
67614  !*** ./resources/js/components/top-sale/top-sale.style.scss ***!
67615  \**************************************************************/
67616/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67617
67618"use strict";
67619__webpack_require__.r(__webpack_exports__);
67620/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67621/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67622/* harmony export */ });
67623/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67624/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67625/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_top_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./top-sale.style.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/js/components/top-sale/top-sale.style.scss");
67626
67627            
67628
67629var options = {};
67630
67631options.insert = "head";
67632options.singleton = false;
67633
67634var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_top_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67635
67636
67637
67638/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_top_sale_style_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67639
67640/***/ }),
67641
67642/***/ "./resources/sass/index.scss":
67643/*!***********************************!*\
67644  !*** ./resources/sass/index.scss ***!
67645  \***********************************/
67646/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
67647
67648"use strict";
67649__webpack_require__.r(__webpack_exports__);
67650/* harmony export */ __webpack_require__.d(__webpack_exports__, {
67651/* harmony export */   "default": () => (__WEBPACK_DEFAULT_EXPORT__)
67652/* harmony export */ });
67653/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! !../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js */ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js");
67654/* harmony import */ var _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0__);
67655/* harmony import */ var _node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_index_scss__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! !!../../node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!../../node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!../../node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./index.scss */ "./node_modules/css-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[1]!./node_modules/postcss-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[2]!./node_modules/sass-loader/dist/cjs.js??ruleSet[1].rules[9].oneOf[1].use[3]!./resources/sass/index.scss");
67656
67657            
67658
67659var options = {};
67660
67661options.insert = "head";
67662options.singleton = false;
67663
67664var update = _node_modules_style_loader_dist_runtime_injectStylesIntoStyleTag_js__WEBPACK_IMPORTED_MODULE_0___default()(_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_index_scss__WEBPACK_IMPORTED_MODULE_1__["default"], options);
67665
67666
67667
67668/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_node_modules_css_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_1_node_modules_postcss_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_2_node_modules_sass_loader_dist_cjs_js_ruleSet_1_rules_9_oneOf_1_use_3_index_scss__WEBPACK_IMPORTED_MODULE_1__["default"].locals || {});
67669
67670/***/ }),
67671
vendor: 7,200 bytes, lines 67672-67950
67672/***/ "./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js":
67673/*!****************************************************************************!*\
67674  !*** ./node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js ***!
67675  \****************************************************************************/
67676/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
67677
67678"use strict";
67679
67680
67681var isOldIE = function isOldIE() {
67682  var memo;
67683  return function memorize() {
67684    if (typeof memo === 'undefined') {
67685      // Test for IE <= 9 as proposed by Browserhacks
67686      // @see http://browserhacks.com/#hack-e71d8692f65334173fee715c222cb805
67687      // Tests for existence of standard globals is to allow style-loader
67688      // to operate correctly into non-standard environments
67689      // @see https://github.com/webpack-contrib/style-loader/issues/177
67690      memo = Boolean(window && document && document.all && !window.atob);
67691    }
67692
67693    return memo;
67694  };
67695}();
67696
67697var getTarget = function getTarget() {
67698  var memo = {};
67699  return function memorize(target) {
67700    if (typeof memo[target] === 'undefined') {
67701      var styleTarget = document.querySelector(target); // Special case to return head of iframe instead of iframe itself
67702
67703      if (window.HTMLIFrameElement && styleTarget instanceof window.HTMLIFrameElement) {
67704        try {
67705          // This will throw an exception if access to iframe is blocked
67706          // due to cross-origin restrictions
67707          styleTarget = styleTarget.contentDocument.head;
67708        } catch (e) {
67709          // istanbul ignore next
67710          styleTarget = null;
67711        }
67712      }
67713
67714      memo[target] = styleTarget;
67715    }
67716
67717    return memo[target];
67718  };
67719}();
67720
67721var stylesInDom = [];
67722
67723function getIndexByIdentifier(identifier) {
67724  var result = -1;
67725
67726  for (var i = 0; i < stylesInDom.length; i++) {
67727    if (stylesInDom[i].identifier === identifier) {
67728      result = i;
67729      break;
67730    }
67731  }
67732
67733  return result;
67734}
67735
67736function modulesToDom(list, options) {
67737  var idCountMap = {};
67738  var identifiers = [];
67739
67740  for (var i = 0; i < list.length; i++) {
67741    var item = list[i];
67742    var id = options.base ? item[0] + options.base : item[0];
67743    var count = idCountMap[id] || 0;
67744    var identifier = "".concat(id, " ").concat(count);
67745    idCountMap[id] = count + 1;
67746    var index = getIndexByIdentifier(identifier);
67747    var obj = {
67748      css: item[1],
67749      media: item[2],
67750      sourceMap: item[3]
67751    };
67752
67753    if (index !== -1) {
67754      stylesInDom[index].references++;
67755      stylesInDom[index].updater(obj);
67756    } else {
67757      stylesInDom.push({
67758        identifier: identifier,
67759        updater: addStyle(obj, options),
67760        references: 1
67761      });
67762    }
67763
67764    identifiers.push(identifier);
67765  }
67766
67767  return identifiers;
67768}
67769
67770function insertStyleElement(options) {
67771  var style = document.createElement('style');
67772  var attributes = options.attributes || {};
67773
67774  if (typeof attributes.nonce === 'undefined') {
67775    var nonce =  true ? __webpack_require__.nc : 0;
67776
67777    if (nonce) {
67778      attributes.nonce = nonce;
67779    }
67780  }
67781
67782  Object.keys(attributes).forEach(function (key) {
67783    style.setAttribute(key, attributes[key]);
67784  });
67785
67786  if (typeof options.insert === 'function') {
67787    options.insert(style);
67788  } else {
67789    var target = getTarget(options.insert || 'head');
67790
67791    if (!target) {
67792      throw new Error("Couldn't find a style target. This probably means that the value for the 'insert' parameter is invalid.");
67793    }
67794
67795    target.appendChild(style);
67796  }
67797
67798  return style;
67799}
67800
67801function removeStyleElement(style) {
67802  // istanbul ignore if
67803  if (style.parentNode === null) {
67804    return false;
67805  }
67806
67807  style.parentNode.removeChild(style);
67808}
67809/* istanbul ignore next  */
67810
67811
67812var replaceText = function replaceText() {
67813  var textStore = [];
67814  return function replace(index, replacement) {
67815    textStore[index] = replacement;
67816    return textStore.filter(Boolean).join('\n');
67817  };
67818}();
67819
67820function applyToSingletonTag(style, index, remove, obj) {
67821  var css = remove ? '' : obj.media ? "@media ".concat(obj.media, " {").concat(obj.css, "}") : obj.css; // For old IE
67822
67823  /* istanbul ignore if  */
67824
67825  if (style.styleSheet) {
67826    style.styleSheet.cssText = replaceText(index, css);
67827  } else {
67828    var cssNode = document.createTextNode(css);
67829    var childNodes = style.childNodes;
67830
67831    if (childNodes[index]) {
67832      style.removeChild(childNodes[index]);
67833    }
67834
67835    if (childNodes.length) {
67836      style.insertBefore(cssNode, childNodes[index]);
67837    } else {
67838      style.appendChild(cssNode);
67839    }
67840  }
67841}
67842
67843function applyToTag(style, options, obj) {
67844  var css = obj.css;
67845  var media = obj.media;
67846  var sourceMap = obj.sourceMap;
67847
67848  if (media) {
67849    style.setAttribute('media', media);
67850  } else {
67851    style.removeAttribute('media');
67852  }
67853
67854  if (sourceMap && typeof btoa !== 'undefined') {
67855    css += "\n/*# sourceMappingURL=data:application/json;base64,".concat(btoa(unescape(encodeURIComponent(JSON.stringify(sourceMap)))), " */");
67856  } // For old IE
67857
67858  /* istanbul ignore if  */
67859
67860
67861  if (style.styleSheet) {
67862    style.styleSheet.cssText = css;
67863  } else {
67864    while (style.firstChild) {
67865      style.removeChild(style.firstChild);
67866    }
67867
67868    style.appendChild(document.createTextNode(css));
67869  }
67870}
67871
67872var singleton = null;
67873var singletonCounter = 0;
67874
67875function addStyle(obj, options) {
67876  var style;
67877  var update;
67878  var remove;
67879
67880  if (options.singleton) {
67881    var styleIndex = singletonCounter++;
67882    style = singleton || (singleton = insertStyleElement(options));
67883    update = applyToSingletonTag.bind(null, style, styleIndex, false);
67884    remove = applyToSingletonTag.bind(null, style, styleIndex, true);
67885  } else {
67886    style = insertStyleElement(options);
67887    update = applyToTag.bind(null, style, options);
67888
67889    remove = function remove() {
67890      removeStyleElement(style);
67891    };
67892  }
67893
67894  update(obj);
67895  return function updateStyle(newObj) {
67896    if (newObj) {
67897      if (newObj.css === obj.css && newObj.media === obj.media && newObj.sourceMap === obj.sourceMap) {
67898        return;
67899      }
67900
67901      update(obj = newObj);
67902    } else {
67903      remove();
67904    }
67905  };
67906}
67907
67908module.exports = function (list, options) {
67909  options = options || {}; // Force single-tag solution on IE6-9, which has a hard limit on the # of <style>
67910  // tags it will allow on a page
67911
67912  if (!options.singleton && typeof options.singleton !== 'boolean') {
67913    options.singleton = isOldIE();
67914  }
67915
67916  list = list || [];
67917  var lastIdentifiers = modulesToDom(list, options);
67918  return function update(newList) {
67919    newList = newList || [];
67920
67921    if (Object.prototype.toString.call(newList) !== '[object Array]') {
67922      return;
67923    }
67924
67925    for (var i = 0; i < lastIdentifiers.length; i++) {
67926      var identifier = lastIdentifiers[i];
67927      var index = getIndexByIdentifier(identifier);
67928      stylesInDom[index].references--;
67929    }
67930
67931    var newLastIdentifiers = modulesToDom(newList, options);
67932
67933    for (var _i = 0; _i < lastIdentifiers.length; _i++) {
67934      var _identifier = lastIdentifiers[_i];
67935
67936      var _index = getIndexByIdentifier(_identifier);
67937
67938      if (stylesInDom[_index].references === 0) {
67939        stylesInDom[_index].updater();
67940
67941        stylesInDom.splice(_index, 1);
67942      }
67943    }
67944
67945    lastIdentifiers = newLastIdentifiers;
67946  };
67947};
67948
67949/***/ }),
67950
vendor: 1,026 bytes, lines 67951-67999
67951/***/ "./node_modules/toggle-selection/index.js":
67952/*!************************************************!*\
67953  !*** ./node_modules/toggle-selection/index.js ***!
67954  \************************************************/
67955/***/ ((module) => {
67956
67957
67958module.exports = function () {
67959  var selection = document.getSelection();
67960  if (!selection.rangeCount) {
67961    return function () {};
67962  }
67963  var active = document.activeElement;
67964
67965  var ranges = [];
67966  for (var i = 0; i < selection.rangeCount; i++) {
67967    ranges.push(selection.getRangeAt(i));
67968  }
67969
67970  switch (active.tagName.toUpperCase()) { // .toUpperCase handles XHTML
67971    case 'INPUT':
67972    case 'TEXTAREA':
67973      active.blur();
67974      break;
67975
67976    default:
67977      active = null;
67978      break;
67979  }
67980
67981  selection.removeAllRanges();
67982  return function () {
67983    selection.type === 'Caret' &&
67984    selection.removeAllRanges();
67985
67986    if (!selection.rangeCount) {
67987      ranges.forEach(function(range) {
67988        selection.addRange(range);
67989      });
67990    }
67991
67992    active &&
67993    active.focus();
67994  };
67995};
67996
67997
67998/***/ }),
67999
vendor: 1,880 bytes, lines 68000-68084
68000/***/ "./node_modules/classnames/index.js":
68001/*!******************************************!*\
68002  !*** ./node_modules/classnames/index.js ***!
68003  \******************************************/
68004/***/ ((module, exports) => {
68005
68006var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
68007	Copyright (c) 2018 Jed Watson.
68008	Licensed under the MIT License (MIT), see
68009	http://jedwatson.github.io/classnames
68010*/
68011/* global define */
68012
68013(function () {
68014	'use strict';
68015
68016	var hasOwn = {}.hasOwnProperty;
68017
68018	function classNames () {
68019		var classes = '';
68020
68021		for (var i = 0; i < arguments.length; i++) {
68022			var arg = arguments[i];
68023			if (arg) {
68024				classes = appendClass(classes, parseValue(arg));
68025			}
68026		}
68027
68028		return classes;
68029	}
68030
68031	function parseValue (arg) {
68032		if (typeof arg === 'string' || typeof arg === 'number') {
68033			return arg;
68034		}
68035
68036		if (typeof arg !== 'object') {
68037			return '';
68038		}
68039
68040		if (Array.isArray(arg)) {
68041			return classNames.apply(null, arg);
68042		}
68043
68044		if (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {
68045			return arg.toString();
68046		}
68047
68048		var classes = '';
68049
68050		for (var key in arg) {
68051			if (hasOwn.call(arg, key) && arg[key]) {
68052				classes = appendClass(classes, key);
68053			}
68054		}
68055
68056		return classes;
68057	}
68058
68059	function appendClass (value, newClass) {
68060		if (!newClass) {
68061			return value;
68062		}
68063	
68064		if (value) {
68065			return value + ' ' + newClass;
68066		}
68067	
68068		return value + newClass;
68069	}
68070
68071	if ( true && module.exports) {
68072		classNames.default = classNames;
68073		module.exports = classNames;
68074	} else if (true) {
68075		// register as 'classnames', consistent with npm package name
68076		!(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
68077			return classNames;
68078		}).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
68079		__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
68080	} else {}
68081}());
68082
68083
68084/***/ })
vendor: 5,076 bytes, lines 68084-68208
68084
68085
68086/******/ 	});
68087/************************************************************************/
68088/******/ 	// The module cache
68089/******/ 	var __webpack_module_cache__ = {};
68090/******/ 	
68091/******/ 	// The require function
68092/******/ 	function __webpack_require__(moduleId) {
68093/******/ 		// Check if module is in cache
68094/******/ 		var cachedModule = __webpack_module_cache__[moduleId];
68095/******/ 		if (cachedModule !== undefined) {
68096/******/ 			return cachedModule.exports;
68097/******/ 		}
68098/******/ 		// Create a new module (and put it into the cache)
68099/******/ 		var module = __webpack_module_cache__[moduleId] = {
68100/******/ 			id: moduleId,
68101/******/ 			// no module.loaded needed
68102/******/ 			exports: {}
68103/******/ 		};
68104/******/ 	
68105/******/ 		// Execute the module function
68106/******/ 		__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);
68107/******/ 	
68108/******/ 		// Return the exports of the module
68109/******/ 		return module.exports;
68110/******/ 	}
68111/******/ 	
68112/************************************************************************/
68113/******/ 	/* webpack/runtime/compat get default export */
68114/******/ 	(() => {
68115/******/ 		// getDefaultExport function for compatibility with non-harmony modules
68116/******/ 		__webpack_require__.n = (module) => {
68117/******/ 			var getter = module && module.__esModule ?
68118/******/ 				() => (module['default']) :
68119/******/ 				() => (module);
68120/******/ 			__webpack_require__.d(getter, { a: getter });
68121/******/ 			return getter;
68122/******/ 		};
68123/******/ 	})();
68124/******/ 	
68125/******/ 	/* webpack/runtime/create fake namespace object */
68126/******/ 	(() => {
68127/******/ 		var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);
68128/******/ 		var leafPrototypes;
68129/******/ 		// create a fake namespace object
68130/******/ 		// mode & 1: value is a module id, require it
68131/******/ 		// mode & 2: merge all properties of value into the ns
68132/******/ 		// mode & 4: return value when already ns object
68133/******/ 		// mode & 16: return value when it's Promise-like
68134/******/ 		// mode & 8|1: behave like require
68135/******/ 		__webpack_require__.t = function(value, mode) {
68136/******/ 			if(mode & 1) value = this(value);
68137/******/ 			if(mode & 8) return value;
68138/******/ 			if(typeof value === 'object' && value) {
68139/******/ 				if((mode & 4) && value.__esModule) return value;
68140/******/ 				if((mode & 16) && typeof value.then === 'function') return value;
68141/******/ 			}
68142/******/ 			var ns = Object.create(null);
68143/******/ 			__webpack_require__.r(ns);
68144/******/ 			var def = {};
68145/******/ 			leafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];
68146/******/ 			for(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {
68147/******/ 				Object.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));
68148/******/ 			}
68149/******/ 			def['default'] = () => (value);
68150/******/ 			__webpack_require__.d(ns, def);
68151/******/ 			return ns;
68152/******/ 		};
68153/******/ 	})();
68154/******/ 	
68155/******/ 	/* webpack/runtime/define property getters */
68156/******/ 	(() => {
68157/******/ 		// define getter functions for harmony exports
68158/******/ 		__webpack_require__.d = (exports, definition) => {
68159/******/ 			for(var key in definition) {
68160/******/ 				if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
68161/******/ 					Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
68162/******/ 				}
68163/******/ 			}
68164/******/ 		};
68165/******/ 	})();
68166/******/ 	
68167/******/ 	/* webpack/runtime/global */
68168/******/ 	(() => {
68169/******/ 		__webpack_require__.g = (function() {
68170/******/ 			if (typeof globalThis === 'object') return globalThis;
68171/******/ 			try {
68172/******/ 				return this || new Function('return this')();
68173/******/ 			} catch (e) {
68174/******/ 				if (typeof window === 'object') return window;
68175/******/ 			}
68176/******/ 		})();
68177/******/ 	})();
68178/******/ 	
68179/******/ 	/* webpack/runtime/hasOwnProperty shorthand */
68180/******/ 	(() => {
68181/******/ 		__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
68182/******/ 	})();
68183/******/ 	
68184/******/ 	/* webpack/runtime/make namespace object */
68185/******/ 	(() => {
68186/******/ 		// define __esModule on exports
68187/******/ 		__webpack_require__.r = (exports) => {
68188/******/ 			if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
68189/******/ 				Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
68190/******/ 			}
68191/******/ 			Object.defineProperty(exports, '__esModule', { value: true });
68192/******/ 		};
68193/******/ 	})();
68194/******/ 	
68195/******/ 	/* webpack/runtime/nonce */
68196/******/ 	(() => {
68197/******/ 		__webpack_require__.nc = undefined;
68198/******/ 	})();
68199/******/ 	
68200/************************************************************************/
68201/******/ 	
68202/******/ 	// startup
68203/******/ 	// Load entry module and return exports
68204/******/ 	// This entry module is referenced by other modules so it can't be inlined
68205/******/ 	var __webpack_exports__ = __webpack_require__("./resources/js/index.tsx");
68206/******/ 	
68207/******/ })()
68208;

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.